summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.mtn-ignore2
-rw-r--r--.todo7
-rw-r--r--AUTHORS3
-rw-r--r--COPYRIGHT15
-rw-r--r--ChangeLog111
-rw-r--r--ChangeLog.API130
-rw-r--r--ChangeLog.win325
-rw-r--r--Makefile.am1
-rw-r--r--Makefile.mingw8
-rw-r--r--NEWS2
-rw-r--r--configure.ac108
-rw-r--r--doc/TCL-HOWTO.dox6
-rw-r--r--doc/account-signals.dox36
-rw-r--r--doc/blist-signals.dox22
-rw-r--r--doc/funniest_home_convos.txt7
-rw-r--r--doc/notify-signals.dox2
-rw-r--r--doc/pidgin.1.in14
-rw-r--r--finch/Makefile.am2
-rw-r--r--finch/finch.c1
-rw-r--r--finch/gntaccount.c17
-rw-r--r--finch/gntblist.c52
-rw-r--r--finch/gntconv.c46
-rw-r--r--finch/gntlog.c48
-rw-r--r--finch/gntlog.h2
-rw-r--r--finch/gntmedia.c537
-rw-r--r--finch/gntmedia.h42
-rw-r--r--finch/gntnotify.c3
-rw-r--r--finch/gntplugin.c4
-rw-r--r--finch/gntrequest.c27
-rw-r--r--finch/gntroomlist.c2
-rw-r--r--finch/gntui.c8
-rw-r--r--finch/libgnt/Makefile.am2
-rw-r--r--finch/libgnt/configure.ac2
-rw-r--r--finch/libgnt/gnt.h4
-rw-r--r--finch/libgnt/gntbox.c14
-rw-r--r--finch/libgnt/gntcheckbox.c5
-rw-r--r--finch/libgnt/gntcombobox.c3
-rw-r--r--finch/libgnt/gntentry.c6
-rw-r--r--finch/libgnt/gntkeys.h1
-rw-r--r--finch/libgnt/gntprogressbar.c253
-rw-r--r--finch/libgnt/gntprogressbar.h132
-rw-r--r--finch/libgnt/gnttextview.c3
-rw-r--r--finch/libgnt/gnttree.c18
-rw-r--r--finch/libgnt/gntwm.c28
-rw-r--r--finch/plugins/Makefile.am4
-rw-r--r--finch/plugins/gnthistory.c4
-rw-r--r--finch/plugins/gnttinyurl.c418
-rw-r--r--finch/plugins/grouping.c2
-rwxr-xr-xfix-casts.sh18
-rw-r--r--libpurple/Makefile.am38
-rw-r--r--libpurple/Makefile.mingw13
-rw-r--r--libpurple/account.c117
-rw-r--r--libpurple/account.h5
-rw-r--r--libpurple/blist.c527
-rw-r--r--libpurple/blist.h206
-rw-r--r--libpurple/buddyicon.c19
-rw-r--r--libpurple/certificate.c132
-rw-r--r--libpurple/certificate.h16
-rw-r--r--libpurple/cipher.c38
-rw-r--r--libpurple/cipher.h2
-rw-r--r--libpurple/circbuffer.c4
-rw-r--r--libpurple/cmds.c16
-rw-r--r--libpurple/connection.c53
-rw-r--r--libpurple/connection.h113
-rw-r--r--libpurple/conversation.c73
-rw-r--r--libpurple/conversation.h18
-rw-r--r--libpurple/core.c49
-rw-r--r--libpurple/core.h14
-rw-r--r--libpurple/dbus-analyze-functions.py9
-rw-r--r--libpurple/dbus-bindings.h2
-rw-r--r--libpurple/dbus-server.h2
-rw-r--r--libpurple/desktopitem.c87
-rw-r--r--libpurple/desktopitem.h6
-rw-r--r--libpurple/dnsquery.c16
-rw-r--r--libpurple/dnssrv.c413
-rw-r--r--libpurple/dnssrv.h50
-rw-r--r--libpurple/eventloop.h10
-rw-r--r--libpurple/ft.c12
-rw-r--r--libpurple/idle.c9
-rw-r--r--libpurple/internal.h36
-rw-r--r--libpurple/log.c130
-rw-r--r--libpurple/log.h15
-rw-r--r--libpurple/marshallers.list5
-rw-r--r--libpurple/media-gst.h173
-rw-r--r--libpurple/media.c3106
-rw-r--r--libpurple/media.h690
-rw-r--r--libpurple/mediamanager.c1127
-rw-r--r--libpurple/mediamanager.h223
-rw-r--r--libpurple/mime.c5
-rw-r--r--libpurple/mime.h1
-rw-r--r--libpurple/nat-pmp.c32
-rw-r--r--libpurple/network.c220
-rw-r--r--libpurple/network.h53
-rw-r--r--libpurple/notify.c32
-rw-r--r--libpurple/notify.h12
-rw-r--r--libpurple/ntlm.c87
-rw-r--r--libpurple/ntlm.h2
-rw-r--r--libpurple/plugin.c32
-rw-r--r--libpurple/plugin.h25
-rw-r--r--libpurple/plugins/Makefile.am4
-rw-r--r--libpurple/plugins/Makefile.mingw2
-rw-r--r--libpurple/plugins/autoaccept.c2
-rw-r--r--libpurple/plugins/mono/loader/debug-glue.c2
-rw-r--r--libpurple/plugins/mono/loader/mono.c21
-rw-r--r--libpurple/plugins/one_time_password.c151
-rw-r--r--libpurple/plugins/perl/common/BuddyList.xs4
-rw-r--r--libpurple/plugins/perl/common/Certificate.xs2
-rw-r--r--libpurple/plugins/perl/common/Cipher.xs14
-rw-r--r--libpurple/plugins/perl/common/Request.xs30
-rw-r--r--libpurple/plugins/perl/common/Util.xs12
-rw-r--r--libpurple/plugins/perl/perl-common.c22
-rw-r--r--libpurple/plugins/perl/perl-handlers.c5
-rw-r--r--libpurple/plugins/psychic.c1
-rw-r--r--libpurple/plugins/signals-test.c149
-rw-r--r--libpurple/plugins/ssl/ssl-gnutls.c1
-rw-r--r--libpurple/plugins/statenotify.c6
-rw-r--r--libpurple/plugins/tcl/tcl_cmds.c37
-rw-r--r--libpurple/pounce.c76
-rw-r--r--libpurple/prefs.c49
-rw-r--r--libpurple/prefs.h4
-rw-r--r--libpurple/privacy.c10
-rw-r--r--libpurple/privacy.h2
-rw-r--r--libpurple/protocols/Makefile.am2
-rw-r--r--libpurple/protocols/Makefile.mingw2
-rw-r--r--libpurple/protocols/bonjour/bonjour.c29
-rw-r--r--libpurple/protocols/bonjour/bonjour_ft.c32
-rw-r--r--libpurple/protocols/bonjour/buddy.c6
-rw-r--r--libpurple/protocols/bonjour/jabber.c125
-rw-r--r--libpurple/protocols/bonjour/mdns_avahi.c12
-rw-r--r--libpurple/protocols/bonjour/parser.c11
-rw-r--r--libpurple/protocols/gg/buddylist.c158
-rw-r--r--libpurple/protocols/gg/buddylist.h10
-rw-r--r--libpurple/protocols/gg/gg.c47
-rw-r--r--libpurple/protocols/irc/cmds.c4
-rw-r--r--libpurple/protocols/irc/irc.c22
-rw-r--r--libpurple/protocols/irc/msgs.c37
-rw-r--r--libpurple/protocols/jabber/Makefile.am20
-rw-r--r--libpurple/protocols/jabber/Makefile.mingw11
-rw-r--r--libpurple/protocols/jabber/adhoccommands.c160
-rw-r--r--libpurple/protocols/jabber/adhoccommands.h12
-rw-r--r--libpurple/protocols/jabber/auth.c75
-rw-r--r--libpurple/protocols/jabber/auth.h6
-rw-r--r--libpurple/protocols/jabber/bosh.c919
-rw-r--r--libpurple/protocols/jabber/bosh.h41
-rw-r--r--libpurple/protocols/jabber/buddy.c826
-rw-r--r--libpurple/protocols/jabber/buddy.h24
-rw-r--r--libpurple/protocols/jabber/caps.c1198
-rw-r--r--libpurple/protocols/jabber/caps.h93
-rw-r--r--libpurple/protocols/jabber/chat.c284
-rw-r--r--libpurple/protocols/jabber/chat.h11
-rw-r--r--libpurple/protocols/jabber/data.c36
-rw-r--r--libpurple/protocols/jabber/data.h15
-rw-r--r--libpurple/protocols/jabber/disco.c308
-rw-r--r--libpurple/protocols/jabber/disco.h23
-rw-r--r--libpurple/protocols/jabber/google.c933
-rw-r--r--libpurple/protocols/jabber/google.h20
-rw-r--r--libpurple/protocols/jabber/ibb.c521
-rw-r--r--libpurple/protocols/jabber/ibb.h121
-rw-r--r--libpurple/protocols/jabber/iq.c319
-rw-r--r--libpurple/protocols/jabber/iq.h64
-rw-r--r--libpurple/protocols/jabber/jabber.c1561
-rw-r--r--libpurple/protocols/jabber/jabber.h102
-rw-r--r--libpurple/protocols/jabber/jingle/content.c461
-rw-r--r--libpurple/protocols/jabber/jingle/content.h117
-rw-r--r--libpurple/protocols/jabber/jingle/iceudp.c427
-rw-r--r--libpurple/protocols/jabber/jingle/iceudp.h114
-rw-r--r--libpurple/protocols/jabber/jingle/jingle.c457
-rw-r--r--libpurple/protocols/jabber/jingle/jingle.h87
-rw-r--r--libpurple/protocols/jabber/jingle/rawudp.c351
-rw-r--r--libpurple/protocols/jabber/jingle/rawudp.h101
-rw-r--r--libpurple/protocols/jabber/jingle/rtp.c924
-rw-r--r--libpurple/protocols/jabber/jingle/rtp.h92
-rw-r--r--libpurple/protocols/jabber/jingle/session.c680
-rw-r--r--libpurple/protocols/jabber/jingle/session.h115
-rw-r--r--libpurple/protocols/jabber/jingle/transport.c174
-rw-r--r--libpurple/protocols/jabber/jingle/transport.h88
-rw-r--r--libpurple/protocols/jabber/jutil.c83
-rw-r--r--libpurple/protocols/jabber/jutil.h12
-rw-r--r--libpurple/protocols/jabber/libxmpp.c134
-rw-r--r--libpurple/protocols/jabber/message.c320
-rw-r--r--libpurple/protocols/jabber/message.h14
-rw-r--r--libpurple/protocols/jabber/oob.c15
-rw-r--r--libpurple/protocols/jabber/oob.h13
-rw-r--r--libpurple/protocols/jabber/parser.c10
-rw-r--r--libpurple/protocols/jabber/parser.h7
-rw-r--r--libpurple/protocols/jabber/pep.c85
-rw-r--r--libpurple/protocols/jabber/pep.h22
-rw-r--r--libpurple/protocols/jabber/ping.c71
-rw-r--r--libpurple/protocols/jabber/ping.h21
-rw-r--r--libpurple/protocols/jabber/presence.c369
-rw-r--r--libpurple/protocols/jabber/presence.h18
-rw-r--r--libpurple/protocols/jabber/roster.c103
-rw-r--r--libpurple/protocols/jabber/roster.h9
-rw-r--r--libpurple/protocols/jabber/si.c596
-rw-r--r--libpurple/protocols/jabber/si.h16
-rw-r--r--libpurple/protocols/jabber/useravatar.c387
-rw-r--r--libpurple/protocols/jabber/useravatar.h43
-rw-r--r--libpurple/protocols/jabber/usermood.c16
-rw-r--r--libpurple/protocols/jabber/usermood.h6
-rw-r--r--libpurple/protocols/jabber/usernick.c25
-rw-r--r--libpurple/protocols/jabber/usernick.h6
-rw-r--r--libpurple/protocols/jabber/usertune.c10
-rw-r--r--libpurple/protocols/jabber/usertune.h6
-rw-r--r--libpurple/protocols/jabber/xdata.c11
-rw-r--r--libpurple/protocols/jabber/xdata.h6
-rw-r--r--libpurple/protocols/msn/cmdproc.c4
-rw-r--r--libpurple/protocols/msn/contact.c41
-rw-r--r--libpurple/protocols/msn/directconn.c20
-rw-r--r--libpurple/protocols/msn/msg.c64
-rw-r--r--libpurple/protocols/msn/msn.c74
-rw-r--r--libpurple/protocols/msn/msn.h2
-rw-r--r--libpurple/protocols/msn/notification.c17
-rw-r--r--libpurple/protocols/msn/oim.c4
-rw-r--r--libpurple/protocols/msn/session.c81
-rw-r--r--libpurple/protocols/msn/slp.c44
-rw-r--r--libpurple/protocols/msn/slplink.c8
-rw-r--r--libpurple/protocols/msn/soap.c3
-rw-r--r--libpurple/protocols/msn/state.c32
-rw-r--r--libpurple/protocols/msn/switchboard.c6
-rw-r--r--libpurple/protocols/msn/user.c22
-rw-r--r--libpurple/protocols/msn/user.h19
-rw-r--r--libpurple/protocols/msn/userlist.c208
-rw-r--r--libpurple/protocols/msn/userlist.h5
-rw-r--r--libpurple/protocols/msnp9/msn.c3
-rw-r--r--libpurple/protocols/msnp9/session.c89
-rw-r--r--libpurple/protocols/msnp9/slplink.c3
-rw-r--r--libpurple/protocols/myspace/README16
-rw-r--r--libpurple/protocols/myspace/myspace.c139
-rw-r--r--libpurple/protocols/myspace/myspace.h12
-rw-r--r--libpurple/protocols/myspace/user.c49
-rw-r--r--libpurple/protocols/myspace/user.h2
-rw-r--r--libpurple/protocols/myspace/zap.c6
-rw-r--r--libpurple/protocols/novell/nmmessage.c1
-rw-r--r--libpurple/protocols/novell/novell.c128
-rw-r--r--libpurple/protocols/null/README7
-rw-r--r--libpurple/protocols/null/nullprpl.c86
-rw-r--r--libpurple/protocols/oscar/bstream.c34
-rw-r--r--libpurple/protocols/oscar/family_admin.c7
-rw-r--r--libpurple/protocols/oscar/family_alert.c10
-rw-r--r--libpurple/protocols/oscar/family_auth.c48
-rw-r--r--libpurple/protocols/oscar/family_bart.c22
-rw-r--r--libpurple/protocols/oscar/family_bos.c3
-rw-r--r--libpurple/protocols/oscar/family_buddy.c4
-rw-r--r--libpurple/protocols/oscar/family_chatnav.c4
-rw-r--r--libpurple/protocols/oscar/family_feedbag.c164
-rw-r--r--libpurple/protocols/oscar/family_icbm.c196
-rw-r--r--libpurple/protocols/oscar/family_locate.c115
-rw-r--r--libpurple/protocols/oscar/family_odir.c8
-rw-r--r--libpurple/protocols/oscar/family_oservice.c27
-rw-r--r--libpurple/protocols/oscar/libaim.c5
-rw-r--r--libpurple/protocols/oscar/libicq.c2
-rw-r--r--libpurple/protocols/oscar/odc.c32
-rw-r--r--libpurple/protocols/oscar/oft.c2
-rw-r--r--libpurple/protocols/oscar/oscar.c1084
-rw-r--r--libpurple/protocols/oscar/oscar.h107
-rw-r--r--libpurple/protocols/oscar/peer.c56
-rw-r--r--libpurple/protocols/oscar/peer.h14
-rw-r--r--libpurple/protocols/oscar/peer_proxy.c32
-rw-r--r--libpurple/protocols/oscar/snactypes.h5
-rw-r--r--libpurple/protocols/oscar/util.c72
-rw-r--r--libpurple/protocols/qq/ChangeLog3
-rw-r--r--libpurple/protocols/qq/buddy_info.c41
-rw-r--r--libpurple/protocols/qq/buddy_list.c26
-rw-r--r--libpurple/protocols/qq/buddy_opt.c50
-rw-r--r--libpurple/protocols/qq/group_internal.c28
-rw-r--r--libpurple/protocols/qq/im.c4
-rw-r--r--libpurple/protocols/qq/qq.c39
-rw-r--r--libpurple/protocols/qq/send_file.c2
-rw-r--r--libpurple/protocols/sametime/sametime.c194
-rw-r--r--libpurple/protocols/silc/buddy.c104
-rw-r--r--libpurple/protocols/silc/chat.c54
-rw-r--r--libpurple/protocols/silc/ops.c36
-rw-r--r--libpurple/protocols/silc/silc.c12
-rw-r--r--libpurple/protocols/silc10/buddy.c7
-rw-r--r--libpurple/protocols/silc10/silc.c11
-rw-r--r--libpurple/protocols/simple/simple.c66
-rw-r--r--libpurple/protocols/toc/Makefile.am32
-rw-r--r--libpurple/protocols/toc/Makefile.mingw78
-rw-r--r--libpurple/protocols/toc/PROTOCOL499
-rw-r--r--libpurple/protocols/toc/toc.c2338
-rw-r--r--libpurple/protocols/yahoo/util.c552
-rw-r--r--libpurple/protocols/yahoo/yahoo.c1284
-rw-r--r--libpurple/protocols/yahoo/yahoo.h53
-rw-r--r--libpurple/protocols/yahoo/yahoo_aliases.h76
-rw-r--r--libpurple/protocols/yahoo/yahoo_filexfer.c559
-rw-r--r--libpurple/protocols/yahoo/yahoo_friend.c60
-rw-r--r--libpurple/protocols/yahoo/yahoo_friend.h13
-rw-r--r--libpurple/protocols/yahoo/yahoo_packet.c8
-rw-r--r--libpurple/protocols/yahoo/yahoo_packet.h9
-rw-r--r--libpurple/protocols/yahoo/yahoo_picture.c8
-rw-r--r--libpurple/protocols/yahoo/yahoo_profile.c31
-rw-r--r--libpurple/protocols/yahoo/yahoochat.c11
-rw-r--r--libpurple/protocols/yahoo/ycht.c4
-rw-r--r--libpurple/protocols/zephyr/ZVariables.c2
-rw-r--r--libpurple/protocols/zephyr/zephyr.c237
-rw-r--r--libpurple/proxy.c172
-rw-r--r--libpurple/proxy.h37
-rw-r--r--libpurple/prpl.c67
-rw-r--r--libpurple/prpl.h131
-rwxr-xr-xlibpurple/purple-send-async12
-rwxr-xr-xlibpurple/purple-url-handler6
-rw-r--r--libpurple/request.c27
-rw-r--r--libpurple/request.h44
-rw-r--r--libpurple/savedstatuses.c21
-rw-r--r--libpurple/server.c38
-rw-r--r--libpurple/server.h12
-rw-r--r--libpurple/signals.c24
-rw-r--r--libpurple/signals.h4
-rw-r--r--libpurple/smiley.c2
-rw-r--r--libpurple/smiley.h71
-rw-r--r--libpurple/sound-theme-loader.c111
-rw-r--r--libpurple/sound-theme-loader.h71
-rw-r--r--libpurple/sound-theme.c158
-rw-r--r--libpurple/sound-theme.h108
-rw-r--r--libpurple/sound.c4
-rw-r--r--libpurple/sslconn.c2
-rw-r--r--libpurple/sslconn.h4
-rw-r--r--libpurple/status.c40
-rw-r--r--libpurple/status.h50
-rw-r--r--libpurple/stun.c10
-rw-r--r--libpurple/tests/test_util.c8
-rw-r--r--libpurple/theme-loader.c183
-rw-r--r--libpurple/theme-loader.h93
-rw-r--r--libpurple/theme-manager.c296
-rw-r--r--libpurple/theme-manager.h131
-rw-r--r--libpurple/theme.c412
-rw-r--r--libpurple/theme.h175
-rw-r--r--libpurple/upnp.c4
-rw-r--r--libpurple/util.c185
-rw-r--r--libpurple/util.h85
-rw-r--r--libpurple/whiteboard.c2
-rw-r--r--libpurple/win32/global.mak1
-rw-r--r--libpurple/win32/win32dep.c7
-rw-r--r--libpurple/xmlnode.c188
-rw-r--r--libpurple/xmlnode.h56
-rw-r--r--pidgin/Makefile.am14
-rw-r--r--pidgin/Makefile.mingw6
-rw-r--r--pidgin/eggtrayicon.c60
-rw-r--r--pidgin/eggtrayicon.h9
-rw-r--r--pidgin/getopt.c8
-rw-r--r--pidgin/getopt1.c2
-rw-r--r--pidgin/gtkaccount.c132
-rw-r--r--pidgin/gtkblist-theme-loader.c247
-rw-r--r--pidgin/gtkblist-theme-loader.h71
-rw-r--r--pidgin/gtkblist-theme.c876
-rw-r--r--pidgin/gtkblist-theme.h438
-rw-r--r--pidgin/gtkblist.c1776
-rw-r--r--pidgin/gtkblist.h20
-rw-r--r--pidgin/gtkcellrendererexpander.c46
-rw-r--r--pidgin/gtkcellrendererexpander.h4
-rw-r--r--pidgin/gtkcellrendererprogress.c32
-rw-r--r--pidgin/gtkcellrendererprogress.h4
-rw-r--r--pidgin/gtkcellview.c20
-rw-r--r--pidgin/gtkconv.c546
-rw-r--r--pidgin/gtkconv.h1
-rw-r--r--pidgin/gtkconvwin.h5
-rw-r--r--pidgin/gtkdebug.c8
-rw-r--r--pidgin/gtkdialogs.c27
-rw-r--r--pidgin/gtkdnd-hints.c8
-rw-r--r--pidgin/gtkdnd-hints.h2
-rw-r--r--pidgin/gtkdocklet-x11.c43
-rw-r--r--pidgin/gtkdocklet.c6
-rw-r--r--pidgin/gtkdocklet.h8
-rw-r--r--pidgin/gtkexpander.c40
-rw-r--r--pidgin/gtkft.c8
-rw-r--r--pidgin/gtkicon-theme-loader.c111
-rw-r--r--pidgin/gtkicon-theme-loader.h71
-rw-r--r--pidgin/gtkicon-theme.c142
-rw-r--r--pidgin/gtkicon-theme.h95
-rw-r--r--pidgin/gtkimhtml.c657
-rw-r--r--pidgin/gtkimhtml.h102
-rw-r--r--pidgin/gtkimhtmltoolbar.c10
-rw-r--r--pidgin/gtkimhtmltoolbar.h13
-rw-r--r--pidgin/gtklog.c44
-rw-r--r--pidgin/gtklog.h4
-rw-r--r--pidgin/gtkmain.c46
-rw-r--r--pidgin/gtkmedia.c1143
-rw-r--r--pidgin/gtkmedia.h36
-rw-r--r--pidgin/gtkmenutray.c4
-rw-r--r--pidgin/gtkmenutray.h16
-rw-r--r--pidgin/gtknotify.c506
-rw-r--r--pidgin/gtknotify.h14
-rw-r--r--pidgin/gtkplugin.c8
-rw-r--r--pidgin/gtkpluginpref.c2
-rw-r--r--pidgin/gtkpounce.c56
-rw-r--r--pidgin/gtkpounce.h2
-rw-r--r--pidgin/gtkprefs.c380
-rw-r--r--pidgin/gtkprefs.h20
-rw-r--r--pidgin/gtkrequest.c59
-rw-r--r--pidgin/gtkroomlist.c1
-rw-r--r--pidgin/gtksavedstatuses.c73
-rw-r--r--pidgin/gtkscrollbook.h2
-rw-r--r--pidgin/gtksession.c2
-rw-r--r--pidgin/gtksmiley.c60
-rw-r--r--pidgin/gtksmiley.h19
-rw-r--r--pidgin/gtksound.c52
-rw-r--r--pidgin/gtksound.h9
-rw-r--r--pidgin/gtksourceiter.c26
-rw-r--r--pidgin/gtksourceiter.h6
-rw-r--r--pidgin/gtksourceundomanager.c298
-rw-r--r--pidgin/gtksourceundomanager.h32
-rw-r--r--pidgin/gtkstatus-icon-theme.c72
-rw-r--r--pidgin/gtkstatus-icon-theme.h71
-rw-r--r--pidgin/gtkstatusbox.c315
-rw-r--r--pidgin/gtkstatusbox.h2
-rw-r--r--pidgin/gtkthemes.c6
-rw-r--r--pidgin/gtkutils.c387
-rw-r--r--pidgin/gtkutils.h79
-rw-r--r--pidgin/gtkwhiteboard.c4
-rw-r--r--pidgin/minidialog.c3
-rw-r--r--pidgin/minidialog.h3
-rw-r--r--pidgin/pidgincombobox.c234
-rw-r--r--pidgin/pidginstock.c599
-rw-r--r--pidgin/pidginstock.h57
-rw-r--r--pidgin/pixmaps/Makefile.am8
-rw-r--r--pidgin/pixmaps/emotes/default/24/default.theme.in7
-rw-r--r--pidgin/pixmaps/emotes/small/16/small.theme.in4
-rw-r--r--pidgin/pixmaps/toolbar/16/audio-call.pngbin0 -> 848 bytes
-rw-r--r--pidgin/pixmaps/toolbar/16/video-call.pngbin0 -> 947 bytes
-rw-r--r--pidgin/plugins/Makefile.am7
-rw-r--r--pidgin/plugins/cap/cap.c12
-rw-r--r--pidgin/plugins/contact_priority.c46
-rw-r--r--pidgin/plugins/convcolors.c8
-rw-r--r--pidgin/plugins/disco/Makefile.am23
-rw-r--r--pidgin/plugins/disco/gtkdisco.c754
-rw-r--r--pidgin/plugins/disco/gtkdisco.h80
-rw-r--r--pidgin/plugins/disco/xmppdisco.c680
-rw-r--r--pidgin/plugins/disco/xmppdisco.h107
-rw-r--r--pidgin/plugins/gevolution/gevo-util.c12
-rw-r--r--pidgin/plugins/gevolution/gevolution.c9
-rw-r--r--pidgin/plugins/gevolution/gevolution.h2
-rw-r--r--pidgin/plugins/gevolution/new_person_dialog.c26
-rw-r--r--pidgin/plugins/history.c31
-rw-r--r--pidgin/plugins/mailchk.c10
-rw-r--r--pidgin/plugins/markerline.c2
-rw-r--r--pidgin/plugins/musicmessaging/musicmessaging.c2
-rw-r--r--pidgin/plugins/perl/common/GtkLog.xs4
-rw-r--r--pidgin/plugins/pidginrc.c276
-rw-r--r--pidgin/plugins/themeedit-icon.c312
-rw-r--r--pidgin/plugins/themeedit-icon.h28
-rw-r--r--pidgin/plugins/themeedit.c362
-rw-r--r--pidgin/plugins/ticker/gtkticker.c6
-rw-r--r--pidgin/plugins/ticker/gtkticker.h15
-rw-r--r--pidgin/plugins/ticker/ticker.c50
-rw-r--r--pidgin/plugins/win32/transparency/win2ktrans.c24
-rw-r--r--pidgin/plugins/win32/winprefs/gtkappbar.c6
-rw-r--r--pidgin/plugins/xmppconsole.c331
-rw-r--r--pidgin/win32/nsis/pidgin-installer.nsi1
-rw-r--r--pidgin/win32/pidgin_dll_rc.rc.in18
-rw-r--r--pidgin/win32/pidgin_exe_rc.rc.in4
-rw-r--r--pidgin/win32/untar.c4
-rw-r--r--pidgin/win32/winpidgin.c2
-rw-r--r--po/ChangeLog7
-rw-r--r--po/POTFILES.in7
-rw-r--r--po/README2
-rw-r--r--po/af.po955
-rw-r--r--po/am.po1223
-rw-r--r--po/ar.po1883
-rw-r--r--po/az.po1268
-rw-r--r--po/be@latin.po1460
-rw-r--r--po/bg.po1382
-rw-r--r--po/bn.po1012
-rw-r--r--po/bs.po1517
-rw-r--r--po/ca.po1247
-rw-r--r--po/ca@valencia.po1088
-rw-r--r--po/cs.po963
-rw-r--r--po/da.po3056
-rw-r--r--po/de.po1013
-rw-r--r--po/dz.po1479
-rw-r--r--po/el.po1064
-rw-r--r--po/en_AU.po1514
-rw-r--r--po/en_CA.po1506
-rw-r--r--po/en_GB.po1440
-rw-r--r--po/eo.po1246
-rw-r--r--po/es.po1227
-rw-r--r--po/et.po1359
-rw-r--r--po/eu.po1498
-rw-r--r--po/fa.po1456
-rw-r--r--po/fi.po1003
-rw-r--r--po/fr.po980
-rw-r--r--po/ga.po1126
-rw-r--r--po/gl.po1076
-rw-r--r--po/gu.po1502
-rw-r--r--po/he.po1428
-rw-r--r--po/hi.po1494
-rw-r--r--po/hu.po967
-rw-r--r--po/hy.po13365
-rw-r--r--po/id.po1455
-rw-r--r--po/it.po1455
-rw-r--r--po/ja.po1419
-rw-r--r--po/ka.po1234
-rw-r--r--po/km.po946
-rw-r--r--po/kn.po1314
-rw-r--r--po/ko.po1430
-rw-r--r--po/ku.po1368
-rw-r--r--po/lo.po1178
-rw-r--r--po/lt.po28383
-rw-r--r--po/mk.po1432
-rw-r--r--po/mn.po1250
-rw-r--r--po/my_MM.po1511
-rw-r--r--po/nb.po979
-rw-r--r--po/ne.po1484
-rw-r--r--po/nl.po1038
-rw-r--r--po/nn.po961
-rw-r--r--po/oc.po1090
-rw-r--r--po/pa.po1282
-rw-r--r--po/pl.po1027
-rw-r--r--po/ps.po1219
-rw-r--r--po/pt.po1471
-rw-r--r--po/pt_BR.po981
-rw-r--r--po/ro.po1107
-rw-r--r--po/ru.po925
-rw-r--r--po/si.po1106
-rw-r--r--po/sk.po989
-rw-r--r--po/sl.po1089
-rw-r--r--po/sq.po1095
-rw-r--r--po/sr.po966
-rw-r--r--po/sr@latin.po966
-rw-r--r--po/sv.po960
-rw-r--r--po/sw.po13972
-rw-r--r--po/ta.po1432
-rw-r--r--po/te.po1472
-rw-r--r--po/th.po1206
-rw-r--r--po/tr.po1409
-rw-r--r--po/uk.po1525
-rw-r--r--po/ur.po1432
-rw-r--r--po/vi.po1439
-rw-r--r--po/xh.po1502
-rw-r--r--po/zh_CN.po1406
-rw-r--r--po/zh_HK.po968
-rw-r--r--po/zh_TW.po968
-rw-r--r--share/ca-certs/Makefile.am1
-rw-r--r--share/ca-certs/StartCom_Certification_Authority.pem44
533 files changed, 141853 insertions, 59060 deletions
diff --git a/.mtn-ignore b/.mtn-ignore
index 3f6c88ab7b..eb60ba46a6 100644
--- a/.mtn-ignore
+++ b/.mtn-ignore
@@ -10,6 +10,7 @@
.*\.def$
.*\.dll$
.*\.exe$
+.*\.loT$
intltool-.*
Doxyfile(\.mingw)?$
aclocal.m4
@@ -51,6 +52,7 @@ libpurple/dbus-types.c
libpurple/dbus-types.h
libpurple/example/nullclient
libpurple/gconf/purple.schemas$
+libpurple/marshallers.[ch]
libpurple/plugins/dbus-example-bindings.c
libpurple/plugins/perl/common/Makefile.PL$
libpurple/plugins/perl/common/Makefile.old
diff --git a/.todo b/.todo
deleted file mode 100644
index 20487b9c5a..0000000000
--- a/.todo
+++ /dev/null
@@ -1,7 +0,0 @@
-<todo version="0.1.19">
- <title>
- Gaim TODO List
- </title>
- <link filename="./libpurple/protocols/oscar/.todo" priority="medium" time="0"/>
- <link filename="./libpurple/protocols/jabber/.todo" priority="medium" time="1176995038"/>
-</todo>
diff --git a/AUTHORS b/AUTHORS
index 8d083836f1..92de8cb238 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -9,6 +9,7 @@ Current Developers:
------------------
Daniel 'datallah' Atallah - Developer
+Paul 'darkrain42' Aurich - Developer
John 'rekkanoryo' Bailey - Developer
Ethan 'Paco-Paco' Blanton - Developer
Thomas Butter - Developer
@@ -24,6 +25,7 @@ Christopher 'siege' O'Brien - Developer
Bartosz Oler - Developer
Etan 'deryni' Reisner - Developer
Tim 'marv' Ringenbach - Developer
+Michael 'Maiku' Ruprecht - Developer, voice and video
Elliott 'QuLogic' Sales de Andrade - Developer
Luke 'LSchiere' Schierer - Support
Megan 'Cae' Schneider - support/QA
@@ -35,7 +37,6 @@ Nathan 'faceprint' Walp - Developer
Crazy Patch Writers:
-------------------
-Paul 'darkrain42' Aurich
Marcus 'malu' Lundblad
Dennis 'EvilDennisR' Ristuccia
Peter 'Fmoo' Ruibal
diff --git a/COPYRIGHT b/COPYRIGHT
index df80d4979b..95112569c3 100644
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -1,5 +1,5 @@
Pidgin, Finch, and libpurple
-Copyright (C) 1998-2008 by the following:
+Copyright (C) 1998-2009 by the following:
If you have contributed to this project then you deserve to be on this
list. Contact us (see: AUTHORS) and we'll add you.
@@ -31,6 +31,7 @@ Derek Battams
Martin Bayard
Curtis Beattie
Stefan Becker
+Carlos Bederian
Dave Bell
Igor Belyi
Brian Bernas
@@ -60,6 +61,7 @@ Jeffery Brown
Philip Brown
Dan Bruce
Norbert Buchmuller
+Johannes Buchner
Sean Burke
Thomas Butter
Trevor Caira
@@ -90,6 +92,7 @@ Jono Cole
Lorenzo Colitti
Collabora Ltd.
Jeff Connelly
+Chris Connett
Nathan Conrad
Felipe Contreras
Alex Converse
@@ -213,6 +216,7 @@ Hans Petter Jansson
David Jedelsky
Henry Jen
Benjamin Kahn
+Jan Kaluza
Anders Kaseorg
Praveen Karadakal
Jaromír Karmazín
@@ -263,7 +267,9 @@ Iain MacDonnell
Lucio Maciel
Brian Macke
Paolo Maggi
+Sulabh Mahajan
Willian T. Mahan
+Tobias Markmann
Kris Marsh
Fidel Martinez
Lalo Martins
@@ -327,14 +333,14 @@ Luke Petre
Diego Petten
Nathan Peterson
Sebastián E. Peyrott
+Andrea Piccinelli
Celso Pinto
Joao Luís Marques Pinto
Aleksander Piotrowski
Julien Pivotto
+Robey Pointer
Eric Polino <aluink@gmail.com>
Ari Pollak
-Robey Pointer
-Eric Polino
Stephen Pope
Nathan Poznick
Jory A. Pratt
@@ -419,6 +425,7 @@ Peter Speybrouck
Lex Spoon
Chris Stafford
Kevin Stange
+Joshua Stein
Jakub Steiner
Richard Stellingwerff
Charlie Stockman
@@ -445,6 +452,7 @@ Douglas Thrift (douglaswth)
Mark Tiefenbruck
Andrew Tinney
Jeffery To
+Krzysztof Tobola (kreez)
Warren Togami
Stu Tomlinson
Bill Tompkins
@@ -502,6 +510,7 @@ Ximian
Ma Xuan
Jared Yanovich
Timmy Yee
+Li Yuan
Nickolai Zeldovich
Tom Zickel
Marco Ziech
diff --git a/ChangeLog b/ChangeLog
index 27fe60a40c..cec567c034 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,113 @@
Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul
-version 2.5.7 (06/19/2009):
+version 2.6.0 (??/??/2009):
+ General:
+ * Theme support in libpurple thanks to Justin Rodriguez's summer of code
+ project. With some minor additions and clean ups from Paul Aurich.
+ * Voice & Video framework in libpurple, thanks to Mike Ruprecht's summer
+ of code project in 2008.
+ * It should no longer be possible to end up with duplicates of buddies
+ in a group on the buddy list. (Paul Aurich)
+ * Removed the unmaintained and unneeded toc protocol plugin.
+ * Fixed NTLM authentication on big-endian systems.
+
+ libpurple:
+ * Various memory cleanups when unloading libpurple. (Nick Hebner)
+ * Report idle time 'From last message sent' should work properly.
+ * Show the invite message for buddies that requested authorization
+ from you on MSN.
+ * DNS servers are re-read when DNS queries fail in case the system has
+ moved to a new network and the old servers are not accessible.
+ * Gadu-Gadu accounts can specify a server to which to connect.
+ (Krzysztof "kreez" Tobola)
+
+ XMPP:
+ * Voice & Video support with Jingle (XEP-0166, 0167, 0176, & 0177), voice
+ support with GTalk and voice and video support with the GMail web
+ client. (Mike "Maiku" Ruprecht)
+ * Added a Service Discovery Browser plugin for Pidgin. (Andrei Mozzhuhin)
+ * Support for in-band bytestreams for file transfers (XEP-0047). (Marcus
+ Lundblad)
+ * Support for sending and receiving attentions (equivalent to "buzz"
+ and "nudge") using the command /buzz. (XEP-0224)
+ * Support for connecting using BOSH. (Tobias Markmann)
+ * A buddy's local time is displayed in the Get Info dialog if the remote
+ client supports it.
+ * The set_chat_topic function can unset the chat topic.
+ * The Ad-Hoc commands associated with our server are now always shown at
+ login.
+ * Support showing and reporting idle times in the buddy list. (XEP-0256)
+ * Support most recent version of User Avatar. (XEP-0084 v1.1)
+ * Updated Entity Capabilities support. (Tobias Markmann)
+ * Better support for receiving remote users' nicknames.
+ * /affiliate and /role will now list the room members with the specified
+ affiliation/role if possible. (Andrei Mozzhuhin)
+ * Put section breaks between resources in "Get Info" to improve readability.
+ * Silently remove invalid XML 1.0 entities (e.g. ASCII control characters)
+ from sent messages.
+ * XHTML markup is only included in outgoing messages when the message
+ contains formatting.
+ * Show when the user was last logged in when doing "Get Info" on an offline
+ buddy, provided the server supports it.
+ * Support custom smileys in MUCs (only when all participants support the
+ "Bits of Binary" extension, and a maximum of 10 participants are in the
+ chat to avoid getting too many fetch requests).
+ * Fix an issue with Jabber (pre-XMPP) servers and the user's preference
+ to require SSL not being respected.
+ * Fix an issue where Cyrus SASL DIGEST MD5 authentication might fail if
+ the username, password, or realm (the JID domain) contain non-ASCII
+ characters.
+ * Show emblem for mobile, handheld, and web clients and bots (if the other
+ client supports it).
+
+ Yahoo:
+ * P2P file transfers. (Sulabh Mahajan)
+ * Sending text messages (address to +<countrycode><phone number>).
+ (Sulabh Mahajan)
+ * Addition of MSN buddies to Yahoo accounts by adding them as
+ 'msn/buddy@somedomain.com' is now supported. (Sulabh Mahajan)
+
+ Pidgin:
+ * Added -f command line option to tell Pidgin to ignore NetworkManager
+ and assume it has a valid network connection.
+ * Allow plugins to specify custom link types to the GtkIMHtml widget.
+ * The status message input box at the bottom of the buddy list expands
+ correctly when starting a new line of text.
+ * Pressing the Enter key in the message entry box of the New Status
+ dialog and various other dialogs now causes the cursor to move to
+ the next line.
+ * Created a unified Buddy Pounce notification window for all pounces
+ where "Pop up a notification" is selected, which avoids having a
+ new dialog box every time a pounce is triggered. (Jorge Villaseñor)
+ * The New Account dialog is now broken into three tabs. Proxy
+ configuration has been moved from the Advanced tab to the new tab.
+ * Dragging a buddy onto a chat pops up a chat-invitation dialog.
+ (Carlos Bederian)
+ * The nicks of the persons who leave the chatroom are italicized in the
+ chat's conversation history. The nicks are un-italicized when they
+ rejoin.
+ * Always set unseen-count and unseen-state on conversations.
+ (Joshua Stein)
+ * Fix a bug in 'Conversation Colors' plugin for RTL messages.
+ * Pressing the Left and Right arrow keys in the buddy list will expand and
+ collapse buddy groups or contacts. (Peter Ruibal)
+ * Support saving animated custom smileys as animated images or animated
+ custom smileys. (Andrea Piccinelli)
+ * Support for keyboard navigation on the status icon. (Li Yuan)
+
+ Finch:
+ * The hardware cursor is updated correctly. This will be useful
+ especially for users of braille terminals, screen readers etc.
+ * Added a TinyURL plugin, which aids copying longer URLs.
+
+ Pidgin GTK+ Theme Control Plugin:
+ * Removed mouse cursor color preferences.
+ * Added "Typing Notification Color" preference.
+ * Added "Disable Typing Notification Text" preference.
+ * Preferences have been reorganized into three tabs for Colors, Fonts, and
+ Miscellaneous categories.
+
+version 2.5.7 (06/20/2009):
* Yahoo Protocol 16 support, including new HTTPS login method; this should
fix a number of login problems that have recently cropped up. (Sulabh
Mahajan, Mike "Maiku" Ruprecht)
@@ -18,7 +125,7 @@ version 2.5.6 (05/19/2009):
* Make XML parsing more resilient to interactions with other libraries.
This, along with the fix for libxml2 bug 564217, fixes the crashes
on connect in XMPP with recent gst-plugins-bad (see #8830 for details).
- * Many security related fixes
+ * Many security related fixes.
IRC:
* Correctly handle WHOIS for users who are joined to a large number of
diff --git a/ChangeLog.API b/ChangeLog.API
index 5bd72d3a19..0eacbb4792 100644
--- a/ChangeLog.API
+++ b/ChangeLog.API
@@ -1,6 +1,134 @@
Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul
-version 2.5.7 (06/19/2009):
+version 2.6.0 (??/??/2009):
+ libpurple:
+ Added:
+ * PurpleMedia and PurpleMediaManager API
+ * PURPLE_BLIST_NODE
+ * PURPLE_GROUP
+ * PURPLE_CONTACT
+ * PURPLE_BUDDY
+ * PURPLE_CHAT
+ * Account signals (see account-signals.dox)
+ * account-actions-changed
+ * account-created
+ * account-destroying
+ * blist-node-added and blist-node-removed signals (see
+ blist-signals.dox)
+ * Jabber plugin signals (see jabber-signals.dox)
+ * purple_buddy_destroy
+ * purple_buddy_get_protocol_data
+ * purple_buddy_set_protocol_data
+ * purple_buddy_get_local_buddy_alias
+ * purple_blist_get_buddies
+ * purple_blist_get_ui_data
+ * purple_blist_set_ui_data
+ * purple_blist_node_get_ui_data
+ * purple_blist_node_set_ui_data
+ * purple_chat_destroy
+ * purple_connection_get_protocol_data
+ * purple_connection_set_protocol_data
+ * purple_contact_destroy
+ * purple_conv_chat_invite_user
+ * purple_global_proxy_set_info
+ * purple_group_destroy
+ * purple_log_get_activity_score
+ * purple_markup_is_rtl
+ * purple_network_force_online
+ * purple_network_set_stun_server
+ * purple_network_set_turn_server
+ * purple_network_get_stun_ip
+ * purple_network_get_turn_ip
+ * purple_network_remove_port_mapping
+ * purple_proxy_connect_udp
+ * purple_prpl_get_media_caps
+ * purple_prpl_got_account_actions
+ * purple_prpl_initiate_media
+ * purple_request_field_get_group
+ * purple_request_field_get_ui_data
+ * purple_request_field_set_ui_data
+ * purple_strequal
+ * purple_utf8_strip_unprintables
+ * purple_util_fetch_url_request_len_with_account
+ * xmlnode_from_file
+ * xmlnode_get_parent
+ * xmlnode_set_attrib_full
+
+ Changed:
+ * xmlnode_remove_attrib now removes all attributes with the
+ same name. Previously, it would remove the first one found,
+ which was completely non-deterministic. If you want to remove
+ the attribute with no namespace, then use NULL with
+ xmlnode_remove_with_namespace.
+ * Plugins may now emit the jabber-sending-xmlnode signal in order
+ to send stanzas; this method is preferred to the prpl send_raw
+ function as other plugins listening to the signal see them.
+ * The conversation-updated signal with a PURPLE_CONV_UPDATE_TYPING
+ update type is emitted when receiving an IM. Previously, the
+ typing state was modified (and the buddy-typing-stopped signal
+ emitted), but this signal was not emitted.
+ * Added a client_type field in the get_ui_info core UI op. See
+ core.h for details.
+
+ Deprecated:
+ * buddy-added and buddy-removed blist signals
+ * purple_buddy_get_local_alias
+ * purple_notify_user_info_remove_entry
+ * purple_status_type_set_primary_attr
+ * purple_status_type_add_attr
+ * purple_status_type_add_attrs
+ * purple_status_type_add_attrs_vargs
+ * purple_status_type_get_primary_attr
+ * purple_status_set_attr_boolean
+ * purple_status_set_attr_int
+ * purple_status_set_attr_string
+ * purple_presence_add_status
+ * purple_presence_add_list
+ * purple_util_fetch_url_request_len
+ * xmlnode_set_attrib_with_namespace
+ * xmlnode_set_attrib_with_prefix
+
+ pidgin:
+ Added:
+ * gtk_imhtml_class_register_protocol
+ * gtk_imhtml_link_get_url, gtk_imhtml_link_get_text_tag,
+ gtk_imhtml_link_activate functions to process GtkIMHtmlLink
+ objects from GtkIMHtml protocol callbacks.
+ * gtk_imhtml_set_return_inserts_newline
+ * gtk_imhtml_set_populate_primary_clipboard
+ * pidgin_blist_set_theme
+ * pidgin_blist_get_theme
+ * pidgin_prefs_labeled_password
+ * pidgin_smiley_editor_set_data
+ * pidgin_sound_is_customized
+ * pidgin_utils_init, pidgin_utils_uninit
+ * pidgin_notify_pounce_add
+ * PidginBlistTheme, PidginBlistThemeLoader API
+ * PidginIconTheme, PidginStatusIconTheme, PidginIconThemeLoader
+ API
+ * pidgin_stock_id_from_status_primitive
+ * pidgin_stock_id_from_presence
+
+ libgnt:
+ Added:
+ * GntProgressBar and functions (Saleem Abdulrasool)
+
+ perl:
+ Changed:
+ * Made a bunch of functions act more perl-like. Call the new()
+ functions as Class->new(...) instead of Class::new(...):
+ * Purple::Request::Fields::new
+ * Purple::Request::Field::new
+ * Purple::Request::Field::account_new
+ * Purple::Request::Field::bool_new
+ * Purple::Request::Field::choice_new
+ * Purple::Request::Field::int_new
+ * Purple::Request::Field::label_new
+ * Purple::Request::Field::list_new
+ * Purple::Request::Field::string_new
+ * Purple::Request::Field::group_new
+
+version 2.5.7 (06/20/2009):
No changes
version 2.5.6 (05/19/2009):
diff --git a/ChangeLog.win32 b/ChangeLog.win32
index 6fcb429130..73d0ba892e 100644
--- a/ChangeLog.win32
+++ b/ChangeLog.win32
@@ -1,4 +1,6 @@
-version 2.5.7 (06/19/2009):
+version 2.6.0 (??/??/2009):
+
+version 2.5.7 (06/20/2009):
* No changes
version 2.5.6 (05/19/2009):
@@ -8,6 +10,7 @@ version 2.5.5 (03/01/2009):
* Remove the "Flash window when chat messages are received" pref from
the Windows Pidgin Options plugin - the Message Notification plugin
does this (and much more).
+ * Updated GTK+ to 2.14.7
version 2.5.4 (01/12/2009):
* Fix the "Hang on Exit" issue that a number of users encountered.
diff --git a/Makefile.am b/Makefile.am
index d875d8117b..28c2e40fa1 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -10,6 +10,7 @@ EXTRA_DIST = \
README.mingw \
config.h.mingw \
doxy2devhelp.xsl \
+ fix-casts.sh \
gaim.pc.in \
gaim-uninstalled.pc.in \
intltool-extract.in \
diff --git a/Makefile.mingw b/Makefile.mingw
index b5acdbad66..e57009e635 100644
--- a/Makefile.mingw
+++ b/Makefile.mingw
@@ -2,7 +2,7 @@
#
# Author: hermanator12002@yahoo.com
# Date 9/11/02
-# Description: Top Makefile for win32 (mingw) port of Pidgin and LibPurple
+# Description: Top Makefile for win32 (mingw) port of Pidgin and libpurple
#
PIDGIN_TREE_TOP := .
@@ -96,15 +96,15 @@ create_release_install_dir: install
-not \( -false $(EXTERNAL_DLLS_FIND_EXP) \) -exec $(STRIP) --strip-unneeded {} ';'
installer: create_release_install_dir
- $(MAKENSIS) /V3 /DPIDGIN_VERSION="$(PIDGIN_VERSION)" /DPIDGIN_PRODUCT_VERSION="$(PIDGIN_PRODUCT_VERSION)" /DWITH_GTK /DPIDGIN_INSTALL_DIR="$(STRIPPED_RELEASE_DIR)" /DGTK_INSTALL_VERSION="$(GTK_INSTALL_VERSION)" pidgin/win32/nsis/pidgin-installer.nsi
+ $(MAKENSIS) $(MAKENSISOPT)V3 $(MAKENSISOPT)DPIDGIN_VERSION="$(PIDGIN_VERSION)" $(MAKENSISOPT)DPIDGIN_PRODUCT_VERSION="$(PIDGIN_PRODUCT_VERSION)" $(MAKENSISOPT)DWITH_GTK $(MAKENSISOPT)DPIDGIN_INSTALL_DIR="$(STRIPPED_RELEASE_DIR)" $(MAKENSISOPT)DGTK_INSTALL_VERSION="$(GTK_INSTALL_VERSION)" pidgin/win32/nsis/pidgin-installer.nsi
mv pidgin/win32/nsis/pidgin-$(PIDGIN_VERSION).exe ./
installer_nogtk: create_release_install_dir
- $(MAKENSIS) /V3 /DPIDGIN_VERSION="$(PIDGIN_VERSION)" /DPIDGIN_PRODUCT_VERSION="$(PIDGIN_PRODUCT_VERSION)" /DPIDGIN_INSTALL_DIR="$(STRIPPED_RELEASE_DIR)" /DGTK_INSTALL_VERSION="$(GTK_INSTALL_VERSION)" pidgin/win32/nsis/pidgin-installer.nsi
+ $(MAKENSIS) $(MAKENSISOPT)V3 $(MAKENSISOPT)DPIDGIN_VERSION="$(PIDGIN_VERSION)" $(MAKENSISOPT)DPIDGIN_PRODUCT_VERSION="$(PIDGIN_PRODUCT_VERSION)" $(MAKENSISOPT)DPIDGIN_INSTALL_DIR="$(STRIPPED_RELEASE_DIR)" $(MAKENSISOPT)DGTK_INSTALL_VERSION="$(GTK_INSTALL_VERSION)" pidgin/win32/nsis/pidgin-installer.nsi
mv pidgin/win32/nsis/pidgin-$(PIDGIN_VERSION)-no-gtk.exe ./
installer_debug: install
- $(MAKENSIS) /V3 /DPIDGIN_VERSION="$(PIDGIN_VERSION)" /DPIDGIN_PRODUCT_VERSION="$(PIDGIN_PRODUCT_VERSION)" /DPIDGIN_INSTALL_DIR="$(PIDGIN_INSTALL_DIR)" /DDEBUG /DGTK_INSTALL_VERSION="$(GTK_INSTALL_VERSION)" pidgin/win32/nsis/pidgin-installer.nsi
+ $(MAKENSIS) $(MAKENSISOPT)V3 $(MAKENSISOPT)DPIDGIN_VERSION="$(PIDGIN_VERSION)" $(MAKENSISOPT)DPIDGIN_PRODUCT_VERSION="$(PIDGIN_PRODUCT_VERSION)" $(MAKENSISOPT)DPIDGIN_INSTALL_DIR="$(PIDGIN_INSTALL_DIR)" $(MAKENSISOPT)DDEBUG $(MAKENSISOPT)DGTK_INSTALL_VERSION="$(GTK_INSTALL_VERSION)" pidgin/win32/nsis/pidgin-installer.nsi
mv pidgin/win32/nsis/pidgin-$(PIDGIN_VERSION)-debug.exe ./
installer_zip: create_release_install_dir
diff --git a/NEWS b/NEWS
index d72bc6c301..b0e9554073 100644
--- a/NEWS
+++ b/NEWS
@@ -2,7 +2,7 @@ Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul
Our development blog is available at: http://planet.pidgin.im
-2.5.7 (06/19/2009):
+2.5.7 (06/20/2009):
John: This release is really just a rushed fix for the broken Yahoo
protocol plugin. I spent way more time on this release than I care
to admit, so I hope that time is well spent and this fixes the issues
diff --git a/configure.ac b/configure.ac
index 686cd680ca..5b8c6d91b3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -43,20 +43,20 @@ AC_PREREQ([2.50])
#
# Make sure to update finch/libgnt/configure.ac with libgnt version changes.
#
-m4_define([purple_lt_current], [5])
+m4_define([purple_lt_current], [6])
m4_define([purple_major_version], [2])
-m4_define([purple_minor_version], [5])
-m4_define([purple_micro_version], [7])
-m4_define([purple_version_suffix], [])
+m4_define([purple_minor_version], [6])
+m4_define([purple_micro_version], [0])
+m4_define([purple_version_suffix], [devel])
m4_define([purple_version],
[purple_major_version.purple_minor_version.purple_micro_version])
m4_define([purple_display_version], purple_version[]m4_ifdef([purple_version_suffix],[purple_version_suffix]))
-m4_define([gnt_lt_current], [5])
+m4_define([gnt_lt_current], [6])
m4_define([gnt_major_version], [2])
-m4_define([gnt_minor_version], [5])
-m4_define([gnt_micro_version], [7])
-m4_define([gnt_version_suffix], [])
+m4_define([gnt_minor_version], [6])
+m4_define([gnt_micro_version], [0])
+m4_define([gnt_version_suffix], [devel])
m4_define([gnt_version],
[gnt_major_version.gnt_minor_version.gnt_micro_version])
m4_define([gnt_display_version], gnt_version[]m4_ifdef([gnt_version_suffix],[gnt_version_suffix]))
@@ -144,7 +144,7 @@ darwin*)
;;
esac
-ALL_LINGUAS="af am ar az be@latin bg bn bs ca ca@valencia cs da de dz el en_AU en_CA en_GB eo es et eu fa fi fr ga gl gu he hi hu id it ja ka km kn ko ku lo lt mk mn my_MM nb ne nl nn oc pa pl pt_BR pt ps ro ru si sk sl sq sr sr@latin sv ta te th tr uk ur vi xh zh_CN zh_HK zh_TW"
+ALL_LINGUAS="af am ar az be@latin bg bn bs ca ca@valencia cs da de dz el en_AU en_CA en_GB eo es et eu fa fi fr ga gl gu he hi hu hy id it ja ka km kn ko ku lo lt mk mn my_MM nb ne nl nn oc pa pl pt_BR pt ps ro ru si sk sl sq sr sr@latin sv sw ta te th tr uk ur vi xh zh_CN zh_HK zh_TW"
AM_GLIB_GNU_GETTEXT
dnl If we don't have msgfmt, then po/ is going to fail -- ensure that
@@ -324,6 +324,9 @@ I can find them.
AC_SUBST(GLIB_CFLAGS)
AC_SUBST(GLIB_LIBS)
+GLIB_GENMARSHAL=`pkg-config --variable=glib_genmarshal glib-2.0`
+AC_SUBST(GLIB_GENMARSHAL)
+
AC_ARG_WITH([extraversion],
AC_HELP_STRING([--with-extraversion=STRING],
[extra version number to be displayed in Help->About and --help (for packagers)]),
@@ -703,9 +706,13 @@ dnl #######################################################################
PKG_CHECK_MODULES(LIBXML, [libxml-2.0 >= 2.6.0], , [
AC_MSG_RESULT(no)
AC_MSG_ERROR([
-
You must have libxml2 >= 2.6.0 development headers installed to build.
])])
+PKG_CHECK_EXISTS([libxml-2.0 >= 2.6.18], , [
+ AC_MSG_WARN([
+Versions of libxml2 < 2.6.18 may contain bugs that could cause XMPP messages to be discarded.
+])])
+
AC_SUBST(LIBXML_CFLAGS)
AC_SUBST(LIBXML_LIBS)
@@ -745,6 +752,63 @@ Use --disable-gstreamer if you do not need GStreamer (sound) support.
fi
dnl #######################################################################
+dnl # Check for GStreamer Interfaces
+dnl #######################################################################
+if test "x$enable_gst" != "xno"; then
+ AC_ARG_ENABLE(gstreamer-interfaces,
+ [AC_HELP_STRING([--disable-gstreamer-interfaces], [compile without GStreamer interface support])],
+ enable_gstinterfaces="$enableval", enable_gstinterfaces="yes")
+ if test "x$enable_gstinterfaces" != "xno"; then
+ PKG_CHECK_MODULES(GSTINTERFACES, [gstreamer-interfaces-0.10], [
+ AC_DEFINE(USE_GSTINTERFACES, 1, [Use GStreamer interfaces for X overlay support])
+ AC_SUBST(GSTINTERFACES_CFLAGS)
+ AC_SUBST(GSTINTERFACES_LIBS)
+ ], [
+ enable_gstinterfaces="no"
+ ])
+ fi
+else
+ enable_gstinterfaces="no"
+fi
+
+dnl #######################################################################
+dnl # Check for Farsight
+dnl #######################################################################
+AC_ARG_ENABLE(farsight,
+ [AC_HELP_STRING([--disable-farsight], [compile without farsight support])],
+ enable_farsight="$enableval", enable_farsight="yes")
+if test "x$enable_farsight" != "xno"; then
+ PKG_CHECK_MODULES(FARSIGHT, [farsight2-0.10 >= 0.0.9], [
+ AC_DEFINE(USE_FARSIGHT, 1, [Use Farsight for voice and video])
+ AC_SUBST(FARSIGHT_CFLAGS)
+ AC_SUBST(FARSIGHT_LIBS)
+ ], [
+ enable_farsight="no"
+ ])
+fi
+
+dnl #######################################################################
+dnl # Check for Voice and Video support
+dnl #######################################################################
+AC_ARG_ENABLE(vv,
+ [AC_HELP_STRING([--disable-vv], [compile without voice and video support])],
+ [enable_vv="$enableval" force_vv=$enableval], [enable_vv="yes" force_vv=no])
+if test "x$enable_vv" != "xno"; then
+ if test "x$enable_gstreamer" != "xno" -a "x$enable_gstinterfaces" != "xno" -a "x$enable_farsight" != "xno"; then
+ AC_DEFINE(USE_VV, 1, [Use voice and video])
+ else
+ enable_vv="no"
+ if test "x$force_vv" = "xyes"; then
+ AC_MSG_ERROR([
+Dependencies for voice/video were not met.
+Install the necessary gstreamer and farsight packages first.
+Or use --disable-vv if you do not need voice/video support.
+ ])
+ fi
+ fi
+fi
+
+dnl #######################################################################
dnl # Check for Meanwhile headers (for Sametime)
dnl #######################################################################
AC_ARG_ENABLE(meanwhile,
@@ -922,7 +986,7 @@ if test "x$gadu_manual_check" = "xno"; then
gadu_includes="yes"
gadu_libs="yes"
], [
- AC_MSG_RESULT(no)
+ gadu_includes="no"
])
else
if test "$ac_gadu_includes" != "no"; then
@@ -1048,7 +1112,6 @@ for i in $STATIC_PRPLS ; do
silc) static_silc=yes ;;
silc10) static_silc=yes ;;
simple) static_simple=yes ;;
- toc) static_toc=yes ;;
yahoo) static_yahoo=yes ;;
zephyr) static_zephyr=yes ;;
*) echo "Invalid static protocol $i!!" ; exit ;;
@@ -1066,7 +1129,6 @@ AM_CONDITIONAL(STATIC_QQ, test "x$static_qq" = "xyes")
AM_CONDITIONAL(STATIC_SAMETIME, test "x$static_sametime" = "xyes" -a "x$have_meanwhile" = "xyes")
AM_CONDITIONAL(STATIC_SILC, test "x$static_silc" = "xyes" -a "x$have_silc" = "xyes")
AM_CONDITIONAL(STATIC_SIMPLE, test "x$static_simple" = "xyes")
-AM_CONDITIONAL(STATIC_TOC, test "x$static_toc" = "xyes")
AM_CONDITIONAL(STATIC_YAHOO, test "x$static_yahoo" = "xyes")
AM_CONDITIONAL(STATIC_ZEPHYR, test "x$static_zephyr" = "xyes")
AC_SUBST(STATIC_LINK_LIBS)
@@ -1103,6 +1165,7 @@ for i in $DYNAMIC_PRPLS ; do
msnp9) dynamic_msn=yes ;;
myspace) dynamic_myspace=yes ;;
novell) dynamic_novell=yes ;;
+ null) dynamic_null=yes ;;
oscar) dynamic_oscar=yes ;;
aim) dynamic_oscar=yes ;;
icq) dynamic_oscar=yes ;;
@@ -1111,27 +1174,11 @@ for i in $DYNAMIC_PRPLS ; do
silc) dynamic_silc=yes ;;
silc10) dynamic_silc=yes ;;
simple) dynamic_simple=yes ;;
- toc) dynamic_toc=yes ;;
yahoo) dynamic_yahoo=yes ;;
zephyr) dynamic_zephyr=yes ;;
*) echo "Invalid dynamic protocol $i!!" ; exit ;;
esac
done
-AM_CONDITIONAL(DYNAMIC_BONJOUR, test "x$dynamic_bonjour" = "xyes" -a [ "x$avahiincludes" = "xyes" -a "x$avahilibs " = "xyes" ] )
-AM_CONDITIONAL(DYNAMIC_GG, test "x$dynamic_gg" = "xyes")
-AM_CONDITIONAL(DYNAMIC_IRC, test "x$dynamic_irc" = "xyes")
-AM_CONDITIONAL(DYNAMIC_JABBER, test "x$dynamic_jabber" = "xyes")
-AM_CONDITIONAL(DYNAMIC_MSN, test "x$dynamic_msn" = "xyes")
-AM_CONDITIONAL(DYNAMIC_MYSPACE, test "x$dynamic_myspace" = "xyes")
-AM_CONDITIONAL(DYNAMIC_NOVELL, test "x$dynamic_novell" = "xyes")
-AM_CONDITIONAL(DYNAMIC_OSCAR, test "x$dynamic_oscar" = "xyes")
-AM_CONDITIONAL(DYNAMIC_QQ, test "x$dynamic_qq" = "xyes")
-AM_CONDITIONAL(DYNAMIC_SAMETIME, test "x$dynamic_sametime" = "xyes" -a "x$have_meanwhile" = "xyes")
-AM_CONDITIONAL(DYNAMIC_SILC, test "x$dynamic_silc" = "xyes" -a "x$have_silc" = "xyes")
-AM_CONDITIONAL(DYNAMIC_SIMPLE, test "x$dynamic_simple" = "xyes")
-AM_CONDITIONAL(DYNAMIC_TOC, test "x$dynamic_toc" = "xyes")
-AM_CONDITIONAL(DYNAMIC_YAHOO, test "x$dynamic_yahoo" = "xyes")
-AM_CONDITIONAL(DYNAMIC_ZEPHYR, test "x$dynamic_zephyr" = "xyes")
AC_ARG_ENABLE(plugins, [AC_HELP_STRING([--disable-plugins], [compile without plugin support])], , enable_plugins=yes)
AC_ARG_WITH(krb4, [AC_HELP_STRING([--with-krb4=PREFIX], [compile Zephyr plugin with Kerberos 4 support])], kerberos="$withval", kerberos="no")
@@ -2429,6 +2476,7 @@ AC_OUTPUT([Makefile
pidgin/pixmaps/emotes/small/16/Makefile
pidgin/plugins/Makefile
pidgin/plugins/cap/Makefile
+ pidgin/plugins/disco/Makefile
pidgin/plugins/gestures/Makefile
pidgin/plugins/gevolution/Makefile
pidgin/plugins/musicmessaging/Makefile
@@ -2464,7 +2512,6 @@ AC_OUTPUT([Makefile
libpurple/protocols/silc/Makefile
libpurple/protocols/silc10/Makefile
libpurple/protocols/simple/Makefile
- libpurple/protocols/toc/Makefile
libpurple/protocols/yahoo/Makefile
libpurple/protocols/zephyr/Makefile
libpurple/tests/Makefile
@@ -2496,6 +2543,7 @@ echo Protocols to link statically.. : $STATIC_PRPLS
echo
echo Build with GStreamer support.. : $enable_gst
echo Build with D-Bus support...... : $enable_dbus
+echo Build with voice and video.... : $enable_vv
if test "x$enable_dbus" = "xyes" ; then
eval eval echo D-Bus services directory...... : $DBUS_SERVICES_DIR
fi
diff --git a/doc/TCL-HOWTO.dox b/doc/TCL-HOWTO.dox
index 931e5bf87c..43ea33aa99 100644
--- a/doc/TCL-HOWTO.dox
+++ b/doc/TCL-HOWTO.dox
@@ -173,6 +173,7 @@ purple::connection account gc
purple::connection displayname gc
purple::connection handle
purple::connection list
+purple::connection state
@endcode
@c purple::connection is a collection of subcommands pertaining to
@@ -192,6 +193,9 @@ purple::connection list
this list are appropriate as @c gc arguments to the other
@c purple::connection subcommands or other commands requiring a gc.
+ @c state returns the PurpleConnectionState of this account as one of
+ the strings "connected", "disconnected", or "connecting".
+
@code
purple::conv_send account who text
@endcode
@@ -332,7 +336,7 @@ be made in their own namespace, and arguments to those signal
callbacks will live in the namespace @c event underneath that
namespace. To briefly illustrate, the signal @c receiving-im-msg is
provided with three arguments; the account on which the IM was
-received, the screen name of the user sending the IM, and the text of
+received, the name of the buddy sending the IM, and the text of
the IM. These arguments live in the variables @c event::account,
@c event::sender, and @c event::buffer, respectively. Therefore a callback
which notifies the user of an incoming IM containing the word 'shizzle'
diff --git a/doc/account-signals.dox b/doc/account-signals.dox
index 5d24f2b53d..7b503513cc 100644
--- a/doc/account-signals.dox
+++ b/doc/account-signals.dox
@@ -1,6 +1,8 @@
/** @page account-signals Account Signals
@signals
+ @signal account-created
+ @signal account-destroying
@signal account-added
@signal account-connecting
@signal account-removed
@@ -9,6 +11,7 @@
@signal account-setting-info
@signal account-set-info
@signal account-status-changed
+ @signal account-actions-changed
@signal account-alias-changed
@signal account-authorization-requested
@signal account-authorization-denied
@@ -20,6 +23,26 @@
<hr>
+ @signaldef account-created
+ @signalproto
+void (*account_created)(PurpleAccount *account);
+ @endsignalproto
+ @signaldesc
+ Emitted when an account is created by calling purple_account_new.
+ @param account The account.
+ @since 2.6.0
+ @endsignaldef
+
+ @signaldef account-destroying
+ @signalproto
+void (*account_destroying)(PurpleAccount *account);
+ @endsignalproto
+ @signaldesc
+ Emitted when an account is about to be destroyed.
+ @param account The account.
+ @since 2.6.0
+ @endsignaldef
+
@signaldef account-added
@signalproto
void (*account_added)(PurpleAccount *account);
@@ -27,6 +50,7 @@ void (*account_added)(PurpleAccount *account);
@signaldesc
Emitted when an account is added.
@param account The account that was added.
+ @see purple_accounts_add
@endsignaldef
@signaldef account-connecting
@@ -45,6 +69,7 @@ void (*account_removed)(PurpleAccount *account);
@signaldesc
Emitted when an account is removed.
@param account The account that was removed.
+ @see purple_accounts_remove
@endsignaldef
@signaldef account-disabled
@@ -97,6 +122,15 @@ void (*account_status_changed)(PurpleAccount *account, PurpleStatus *old, Purple
@param new The status after change.
@endsignaldef
+ @signaldef account-actions-changed
+ @signalproto
+void (*account_actions_changed)(PurpleAccount *account);
+ @endsignalproto
+ @signaldesc
+ Emitted when the account actions are changed after initial connection.
+ @param account The account whose actions changed.
+ @endsignaldef
+
@signaldef account-alias-changed
@signalproto
void (*account_alias_changed)(PurpleAccount *account, const char *old);
@@ -109,7 +143,7 @@ void (*account_alias_changed)(PurpleAccount *account, const char *old);
@signaldef account-authorization-requested
@signalproto
-void (*account_authorization_requested)(PurpleAccount *account, const char *user);
+int (*account_authorization_requested)(PurpleAccount *account, const char *user);
@endsignalproto
@signaldesc
Emitted when a user requests authorization.
diff --git a/doc/blist-signals.dox b/doc/blist-signals.dox
index ecd4273960..901be25bff 100644
--- a/doc/blist-signals.dox
+++ b/doc/blist-signals.dox
@@ -74,13 +74,30 @@ void (*blist_node_extended_menu)(PurpleBlistNode *node, GList **menu)
a GList of PurpleBlistNodeAction's allowing a plugin to add menu items
@endsignaldef
+ @signaldef blist-node-added
+ @signalproto
+void (*blist_node_added)(PurpleBlistNode *node)
+ @endsignalproto
+ @signaldesc
+ Emitted when a new blist node is added to the buddy list.
+ @endsignaldef
+
+ @signaldef blist-node-removed
+ @signalproto
+void (*blist_node_removed)(PurpleBlistNode *node)
+ @endsignalproto
+ @signaldesc
+ Emitted when a blist node is removed from the buddy list.
+ @endsignaldef
+
@signaldef buddy-added
@signalproto
void (*buddy_added)(PurpleBuddy *buddy)
@endsignalproto
@signaldesc
Emitted when a new buddy is added to the buddy list.
- @endsignaldef
+ @deprecated Use blist-node-added instead.
+ @endsignaldef
@signaldef buddy-removed
@signalproto
@@ -88,7 +105,8 @@ void (*buddy_removed)(PurpleBuddy *buddy)
@endsignalproto
@signaldesc
Emitted when a buddy is removed from the buddy list.
- @endsignaldef
+ @deprecated Use blist-node-removed instead.
+ @endsignaldef
@signaldef buddy-icon-changed
@signalproto
diff --git a/doc/funniest_home_convos.txt b/doc/funniest_home_convos.txt
index 08950ddc30..29f10d0fe0 100644
--- a/doc/funniest_home_convos.txt
+++ b/doc/funniest_home_convos.txt
@@ -565,3 +565,10 @@ not :)
for using pidgen
22:36 <user> why do they think this is a bad client? does it have history?
+--
+
+15:45 <deryni> We've had a Grand Plugin Database Plan for approximately forever.
+15:45 <SimGuy> ah, the GPDP
+15:46 <khc> well, there was a Grand Smiley Theme Database
+15:47 <SimGuy> the GSTD sounds like a bad acronym
+15:47 <khc> I realized after typing that
diff --git a/doc/notify-signals.dox b/doc/notify-signals.dox
index a21c6efecc..9c85c47d04 100644
--- a/doc/notify-signals.dox
+++ b/doc/notify-signals.dox
@@ -18,7 +18,7 @@ void (*displaying_userinfo)(PurpleAccount *account, const char *who, PurpleNotif
@note
If adding a PurpleNotifyUserInfoEntry, be sure not to free it -- PurpleNotifyUserInfo assumes responsibility for its objects.
@param account The account on which the info was obtained.
- @param who The screen name of the user whose info is to be displayed.
+ @param who The name of the buddy whose info is to be displayed.
@param user_info The information to be displayed, as PurpleNotifyUserInfoEntry objects
@endsignaldef
diff --git a/doc/pidgin.1.in b/doc/pidgin.1.in
index 8675870dd5..b64fd47d52 100644
--- a/doc/pidgin.1.in
+++ b/doc/pidgin.1.in
@@ -128,11 +128,11 @@ buddy or chat.
.TP
.B Alias
Create an alias for this buddy. This will show an editable text field where
-the buddy's screen name was displayed. In this field one can give this
+the buddy's name was displayed. In this field one can give this
buddy an alternate, more friendly name to appear on the buddy list and in
conversations.
-For example, if a buddy's name screen name was jsmith1281xx and his real
+For example, if a buddy's name was jsmith1281xx and his real
name was 'John Q. Smith,' one could create an alias as to identify the
buddy by his common name.
.LP
@@ -150,7 +150,7 @@ them. It can be accessed by selecting \fBManage\fR from the Accounts menu.
Clicking \fIDelete\fR will delete the currently selected account.
Clicking \fIAdd\fR or \fIModify\fR will invoke a \fBModify Account\fR
window. Here, the user can add or alter account information. When creating
-a new account, the user will submit a screen name and password. The user will
+a new account, the user will submit a username and password. The user will
also choose the protocol for the account.
If \fIRemember Password\fR is chosen, the password will be saved in
@@ -545,7 +545,7 @@ about this interaction exists.
.br
\fI~/.purple/status.xml\fR: stores the user's away messages.
.br
- \fI~/.purple/logs/PROTOCOL/ACCOUNT/SCREENNAME/DATE.{html,txt}\fR: conversation logs.
+ \fI~/.purple/logs/PROTOCOL/ACCOUNT/BUDDYNAME/DATE.{html,txt}\fR: conversation logs.
.SH DIRECTORIES
\fI@prefix@/lib/pidgin/\fR: Pidgin's plugins directory.
@@ -602,7 +602,9 @@ Pidgin's active developers are:
.br
Daniel 'datallah' Atallah (developer)
.br
- John 'rekkanoryo' Bailey (developer)
+ Paul 'darkrain42' Aurich (developer)
+.br
+ John 'rekkanoryo' Bailey (developer and bugmaster)
.br
Ethan 'Paco-Paco' Blanton (developer)
.br
@@ -632,6 +634,8 @@ Pidgin's active developers are:
.br
Tim 'marv' Ringenbach (developer) <\fImarv_sf@users.sf.net\fR>
.br
+ Michael 'Maiku' Ruprecht (developer, voice and video)
+.br
Elliott 'QuLogic' Sales de Andrade (developer)
.br
Luke 'LSchiere' Schierer (support)
diff --git a/finch/Makefile.am b/finch/Makefile.am
index 2f08d120b1..8977644df8 100644
--- a/finch/Makefile.am
+++ b/finch/Makefile.am
@@ -26,6 +26,7 @@ finch_SOURCES = \
finch.c \
gntidle.c \
gntlog.c \
+ gntmedia.c \
gntnotify.c \
gntplugin.c \
gntpounce.c \
@@ -47,6 +48,7 @@ finch_headers = \
finch.h \
gntidle.h \
gntlog.h \
+ gntmedia.h \
gntnotify.h \
gntplugin.h \
gntpounce.h \
diff --git a/finch/finch.c b/finch/finch.c
index fe96d76deb..cfb5e2acbf 100644
--- a/finch/finch.c
+++ b/finch/finch.c
@@ -65,6 +65,7 @@ static GHashTable *finch_ui_get_info(void)
g_hash_table_insert(ui_info, "version", VERSION);
g_hash_table_insert(ui_info, "website", "http://pidgin.im");
g_hash_table_insert(ui_info, "dev_website", "http://developer.pidgin.im");
+ g_hash_table_insert(ui_info, "client_type", "console");
}
return ui_info;
diff --git a/finch/gntaccount.c b/finch/gntaccount.c
index 575f3b04eb..0a1f683417 100644
--- a/finch/gntaccount.c
+++ b/finch/gntaccount.c
@@ -65,7 +65,7 @@ typedef struct
GntWidget *window;
GntWidget *protocol;
- GntWidget *screenname;
+ GntWidget *username;
GntWidget *password;
GntWidget *alias;
@@ -118,8 +118,8 @@ save_account_cb(AccountEditDialog *dialog)
plugin = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(dialog->protocol));
prplinfo = PURPLE_PLUGIN_PROTOCOL_INFO(plugin);
- /* Screenname && user-splits */
- value = gnt_entry_get_text(GNT_ENTRY(dialog->screenname));
+ /* Username && user-splits */
+ value = gnt_entry_get_text(GNT_ENTRY(dialog->username));
if (value == NULL || *value == '\0')
{
@@ -326,7 +326,7 @@ update_user_splits(AccountEditDialog *dialog)
}
if (username != NULL)
- gnt_entry_set_text(GNT_ENTRY(dialog->screenname), username);
+ gnt_entry_set_text(GNT_ENTRY(dialog->username), username);
g_free(username);
}
@@ -546,7 +546,7 @@ edit_account(PurpleAccount *account)
gnt_box_set_pad(GNT_BOX(hbox), 0);
gnt_box_add_widget(GNT_BOX(window), hbox);
- dialog->screenname = entry = gnt_entry_new(NULL);
+ dialog->username = entry = gnt_entry_new(NULL);
gnt_box_add_widget(GNT_BOX(hbox), gnt_label_new(_("Username:")));
gnt_box_add_widget(GNT_BOX(hbox), entry);
@@ -669,8 +669,13 @@ static void
account_toggled(GntWidget *widget, void *key, gpointer null)
{
PurpleAccount *account = key;
+ gboolean enabled = gnt_tree_get_choice(GNT_TREE(widget), key);
- purple_account_set_enabled(account, FINCH_UI, gnt_tree_get_choice(GNT_TREE(widget), key));
+ if (enabled)
+ purple_savedstatus_activate_for_account(purple_savedstatus_get_current(),
+ account);
+
+ purple_account_set_enabled(account, FINCH_UI, enabled);
}
static gboolean
diff --git a/finch/gntblist.c b/finch/gntblist.c
index 064595506a..c24fc28f13 100644
--- a/finch/gntblist.c
+++ b/finch/gntblist.c
@@ -357,7 +357,7 @@ get_display_color(PurpleBlistNode *node)
int color = 0;
if (PURPLE_BLIST_NODE_IS_CONTACT(node))
- node = (PurpleBlistNode*)purple_contact_get_priority_buddy((PurpleContact*)node);
+ node = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(node)));
if (!PURPLE_BLIST_NODE_IS_BUDDY(node))
return 0;
@@ -388,7 +388,7 @@ get_blist_node_flag(PurpleBlistNode *node)
if (fnode && fnode->signed_timer)
flag |= GNT_TEXT_FLAG_BLINK;
else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
- node = (PurpleBlistNode*)purple_contact_get_priority_buddy((PurpleContact *)node);
+ node = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(node)));
fnode = FINCH_GET_DATA(node);
if (fnode && fnode->signed_timer)
flag |= GNT_TEXT_FLAG_BLINK;
@@ -643,10 +643,14 @@ add_buddy_cb(void *data, PurpleRequestFields *allfields)
purple_blist_add_group(grp, NULL);
}
- /* XXX: Ask if there's already the same buddy in the same group (#4553) */
+ /* XXX: Ask to merge if there's already a buddy with the same alias in the same group (#4553) */
+
+ if ((buddy = purple_find_buddy_in_group(account, username, grp)) == NULL)
+ {
+ buddy = purple_buddy_new(account, username, alias);
+ purple_blist_add_buddy(buddy, NULL, grp, NULL);
+ }
- buddy = purple_buddy_new(account, username, alias);
- purple_blist_add_buddy(buddy, NULL, grp, NULL);
purple_account_add_buddy(account, buddy);
}
@@ -886,7 +890,7 @@ get_display_name(PurpleBlistNode *node)
const char *name = NULL;
if (PURPLE_BLIST_NODE_IS_CONTACT(node))
- node = (PurpleBlistNode*)purple_contact_get_priority_buddy((PurpleContact*)node); /* XXX: this can return NULL?! */
+ node = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(node))); /* XXX: this can return NULL?! */
if (node == NULL)
return NULL;
@@ -1027,7 +1031,7 @@ selection_activate(GntWidget *widget, FinchBlist *ggblist)
return;
if (PURPLE_BLIST_NODE_IS_CONTACT(node))
- node = (PurpleBlistNode*)purple_contact_get_priority_buddy((PurpleContact*)node);
+ node = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(node)));
if (PURPLE_BLIST_NODE_IS_BUDDY(node))
{
@@ -1438,16 +1442,16 @@ static void showlog_cb(PurpleBlistNode *sel, PurpleBlistNode *node)
if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
PurpleBuddy *b = (PurpleBuddy*) node;
type = PURPLE_LOG_IM;
- name = g_strdup(b->name);
- account = b->account;
+ name = g_strdup(purple_buddy_get_name(b));
+ account = purple_buddy_get_account(b);
} else if (PURPLE_BLIST_NODE_IS_CHAT(node)) {
PurpleChat *c = (PurpleChat*) node;
PurplePluginProtocolInfo *prpl_info = NULL;
type = PURPLE_LOG_CHAT;
- account = c->account;
+ account = purple_chat_get_account(c);
prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_find_prpl(purple_account_get_protocol_id(account)));
if (prpl_info && prpl_info->get_chat_name) {
- name = prpl_info->get_chat_name(c->components);
+ name = prpl_info->get_chat_name(purple_chat_get_components(c));
}
} else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
finch_log_show_contact((PurpleContact *)node);
@@ -1571,8 +1575,8 @@ finch_blist_toggle_tag_buddy(PurpleBlistNode *node)
ggblist->tagged = g_list_prepend(ggblist->tagged, node);
}
if (PURPLE_BLIST_NODE_IS_CONTACT(node))
- node = (PurpleBlistNode*)purple_contact_get_priority_buddy((PurpleContact*)node);
- if (PURPLE_BLIST_NODE_IS_BUDDY(node))
+ update_buddy_display(purple_contact_get_priority_buddy(PURPLE_CONTACT(node)), ggblist);
+ else if (PURPLE_BLIST_NODE_IS_BUDDY(node))
update_buddy_display((PurpleBuddy*)node, ggblist);
else
update_node_display(node, ggblist);
@@ -1612,7 +1616,7 @@ finch_blist_place_tagged(PurpleBlistNode *target)
purple_blist_add_group((PurpleGroup*)node, (PurpleBlistNode*)tg);
} else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
update_buddy_display(purple_contact_get_priority_buddy((PurpleContact*)node), ggblist);
- if ((PurpleBlistNode*)tg == target) {
+ if (PURPLE_BLIST_NODE(tg) == target) {
/* The target is a group, just add the contact to the group. */
purple_blist_add_contact((PurpleContact*)node, tg, NULL);
} else if (tc) {
@@ -1624,7 +1628,7 @@ finch_blist_place_tagged(PurpleBlistNode *target)
}
} else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
update_buddy_display((PurpleBuddy*)node, ggblist);
- if ((PurpleBlistNode*)tg == target) {
+ if (PURPLE_BLIST_NODE(tg) == target) {
/* The target is a group. Add this buddy in a new contact under this group. */
purple_blist_add_buddy((PurpleBuddy*)node, NULL, tg, NULL);
} else if (PURPLE_BLIST_NODE_IS_CONTACT(target)) {
@@ -1639,7 +1643,7 @@ finch_blist_place_tagged(PurpleBlistNode *target)
}
} else if (PURPLE_BLIST_NODE_IS_CHAT(node)) {
update_node_display(node, ggblist);
- if ((PurpleBlistNode*)tg == target)
+ if (PURPLE_BLIST_NODE(tg) == target)
purple_blist_add_chat((PurpleChat*)node, tg, NULL);
else
purple_blist_add_chat((PurpleChat*)node, NULL, target);
@@ -1685,7 +1689,7 @@ draw_context_menu(FinchBlist *ggblist)
create_group_menu(GNT_MENU(context), NULL);
title = g_strdup(_("Buddy List"));
} else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
- ggblist->cnode = (PurpleBlistNode*)purple_contact_get_priority_buddy((PurpleContact*)node);
+ ggblist->cnode = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(node)));
create_buddy_menu(GNT_MENU(context), (PurpleBuddy*)ggblist->cnode);
title = g_strdup(purple_contact_get_alias((PurpleContact*)node));
} else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
@@ -1917,11 +1921,11 @@ key_pressed(GntWidget *widget, const char *text, FinchBlist *ggblist)
if (gnt_tree_is_searching(GNT_TREE(ggblist->tree)))
gnt_bindable_perform_action_named(GNT_BINDABLE(ggblist->tree), "end-search", NULL);
remove_peripherals(ggblist);
- } 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);
+ PurpleBlistNode *node = gnt_tree_get_selection_data(GNT_TREE(ggblist->tree));
+ purple_blist_request_add_buddy(NULL, NULL,
+ node && PURPLE_BLIST_NODE_IS_GROUP(node) ? purple_group_get_name(PURPLE_GROUP(node)) : 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)));
@@ -2415,8 +2419,8 @@ blist_node_compare_status(PurpleBlistNode *n1, PurpleBlistNode *n2)
switch (purple_blist_node_get_type(n1)) {
case PURPLE_BLIST_CONTACT_NODE:
- n1 = (PurpleBlistNode*)purple_contact_get_priority_buddy((PurpleContact*)n1);
- n2 = (PurpleBlistNode*)purple_contact_get_priority_buddy((PurpleContact*)n2);
+ n1 = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(n1)));
+ n2 = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(n2)));
/* now compare the presence of the priority buddies */
case PURPLE_BLIST_BUDDY_NODE:
ret = purple_presence_compare(purple_buddy_get_presence((PurpleBuddy*)n1),
@@ -3119,6 +3123,8 @@ blist_show(PurpleBuddyList *list)
PURPLE_CALLBACK(reconstruct_accounts_menu), NULL);
purple_signal_connect(purple_connections_get_handle(), "signed-off", finch_blist_get_handle(),
PURPLE_CALLBACK(reconstruct_accounts_menu), NULL);
+ purple_signal_connect(purple_accounts_get_handle(), "account-actions-changed", finch_blist_get_handle(),
+ PURPLE_CALLBACK(reconstruct_accounts_menu), NULL);
purple_signal_connect(purple_blist_get_handle(), "buddy-status-changed", finch_blist_get_handle(),
PURPLE_CALLBACK(buddy_status_changed), ggblist);
purple_signal_connect(purple_blist_get_handle(), "buddy-idle-changed", finch_blist_get_handle(),
diff --git a/finch/gntconv.c b/finch/gntconv.c
index 103048bbb8..5b26177c14 100644
--- a/finch/gntconv.c
+++ b/finch/gntconv.c
@@ -496,8 +496,9 @@ view_log_cb(GntMenuItem *n, gpointer ggc)
buddies = purple_find_buddies(account, name);
for (cur = buddies; cur != NULL; cur = cur->next) {
PurpleBlistNode *node = cur->data;
- if ((node != NULL) && ((node->prev != NULL) || (node->next != NULL))) {
- finch_log_show_contact((PurpleContact *)node->parent);
+ if ((node != NULL) &&
+ (purple_blist_node_get_sibling_prev(node) || purple_blist_node_get_sibling_next(node))) {
+ finch_log_show_contact((PurpleContact *)purple_blist_node_get_parent(node));
g_slist_free(buddies);
return;
}
@@ -529,7 +530,7 @@ generate_send_to_menu(FinchConv *ggc)
gnt_menuitem_set_submenu(item, GNT_MENU(sub));
for (; buds; buds = g_slist_delete_link(buds, buds)) {
- PurpleBlistNode *node = (PurpleBlistNode *)purple_buddy_get_contact((PurpleBuddy *)buds->data);
+ PurpleBlistNode *node = PURPLE_BLIST_NODE(purple_buddy_get_contact(PURPLE_BUDDY(buds->data)));
for (node = purple_blist_node_get_first_child(node); node != NULL;
node = purple_blist_node_get_sibling_next(node)) {
PurpleBuddy *buddy = (PurpleBuddy *)node;
@@ -558,44 +559,11 @@ generate_send_to_menu(FinchConv *ggc)
}
static void
-invite_select_cb(FinchConv *fc, PurpleRequestFields *fields)
-{
- PurpleConversation *conv = fc->active_conv;
- const char *buddy = purple_request_fields_get_string(fields, "screenname");
- const char *message = purple_request_fields_get_string(fields, "message");
- serv_chat_invite(purple_conversation_get_gc(conv),
- purple_conv_chat_get_id(PURPLE_CONV_CHAT(conv)),
- message, buddy);
-
-}
-
-static void
invite_cb(GntMenuItem *item, gpointer ggconv)
{
- 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("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_string_new("message", _("Invite message"), NULL, FALSE);
- purple_request_field_group_add_field(group, field);
- purple_request_fields(finch_conv_get_handle(), _("Invite"),
- NULL,
- _("Please enter the name of the user "
- "you wish to invite,\nalong with an optional invite message."),
- fields,
- _("OK"), G_CALLBACK(invite_select_cb),
- _("Cancel"), NULL,
- NULL, NULL, NULL,
- ggconv);
+ FinchConv *fc = ggconv;
+ PurpleConversation *conv = fc->active_conv;
+ purple_conv_chat_invite_user(PURPLE_CONV_CHAT(conv), NULL, NULL, TRUE);
}
static void
diff --git a/finch/gntlog.c b/finch/gntlog.c
index 1dc973fbe4..9f6083a545 100644
--- a/finch/gntlog.c
+++ b/finch/gntlog.c
@@ -49,7 +49,7 @@ static FinchLogViewer *syslog_viewer = NULL;
struct log_viewer_hash_t {
PurpleLogType type;
- char *screenname;
+ char *username;
PurpleAccount *account;
PurpleContact *contact;
};
@@ -62,11 +62,11 @@ static guint log_viewer_hash(gconstpointer data)
return g_direct_hash(viewer->contact);
if (viewer->account) {
- return g_str_hash(viewer->screenname) +
+ return g_str_hash(viewer->username) +
g_str_hash(purple_account_get_username(viewer->account));
}
- return (guint)viewer;
+ return g_direct_hash(viewer);
}
static gboolean log_viewer_equal(gconstpointer y, gconstpointer z)
@@ -88,10 +88,10 @@ static gboolean log_viewer_equal(gconstpointer y, gconstpointer z)
return FALSE;
}
- if (a->screenname && b->screenname) {
- normal = g_strdup(purple_normalize(a->account, a->screenname));
+ if (a->username && b->username) {
+ normal = g_strdup(purple_normalize(a->account, a->username));
ret = (a->account == b->account) &&
- !strcmp(normal, purple_normalize(b->account, b->screenname));
+ !strcmp(normal, purple_normalize(b->account, b->username));
g_free(normal);
} else {
ret = (a == b);
@@ -155,7 +155,7 @@ static void destroy_cb(GntWidget *w, struct log_viewer_hash_t *ht)
lv = g_hash_table_lookup(log_viewers, ht);
g_hash_table_remove(log_viewers, ht);
- g_free(ht->screenname);
+ g_free(ht->username);
g_free(ht);
} else
syslog_viewer = NULL;
@@ -284,7 +284,7 @@ static FinchLogViewer *display_log_viewer(struct log_viewer_hash_t *ht, GList *l
if (!purple_prefs_get_bool("/purple/logging/log_chats"))
log_preferences = _("Chats will only be logged if the \"Log all chats\" preference is enabled.");
}
- g_free(ht->screenname);
+ g_free(ht->username);
g_free(ht);
}
@@ -365,31 +365,31 @@ our_logging_blows(PurpleLogSet *set, PurpleLogSet *setagain, GList **list)
*list = g_list_concat(purple_log_get_logs(PURPLE_LOG_IM, set->name, set->account), *list);
}
-void finch_log_show(PurpleLogType type, const char *screenname, PurpleAccount *account)
+void finch_log_show(PurpleLogType type, const char *username, PurpleAccount *account)
{
struct log_viewer_hash_t *ht;
FinchLogViewer *lv = NULL;
- const char *name = screenname;
+ const char *name = username;
char *title;
GList *logs = NULL;
int size = 0;
if (type != PURPLE_LOG_IM) {
g_return_if_fail(account != NULL);
- g_return_if_fail(screenname != NULL);
+ g_return_if_fail(username != NULL);
}
ht = g_new0(struct log_viewer_hash_t, 1);
ht->type = type;
- ht->screenname = g_strdup(screenname);
+ ht->username = g_strdup(username);
ht->account = account;
if (log_viewers == NULL) {
log_viewers = g_hash_table_new(log_viewer_hash, log_viewer_equal);
} else if ((lv = g_hash_table_lookup(log_viewers, ht))) {
gnt_window_present(lv->window);
- g_free(ht->screenname);
+ g_free(ht->username);
g_free(ht);
return;
}
@@ -397,7 +397,7 @@ void finch_log_show(PurpleLogType type, const char *screenname, PurpleAccount *a
if (type == PURPLE_LOG_CHAT) {
PurpleChat *chat;
- chat = purple_blist_find_chat(account, screenname);
+ chat = purple_blist_find_chat(account, username);
if (chat != NULL)
name = purple_chat_get_name(chat);
@@ -405,8 +405,8 @@ void finch_log_show(PurpleLogType type, const char *screenname, PurpleAccount *a
} else {
PurpleBuddy *buddy;
- if (screenname) {
- buddy = purple_find_buddy(account, screenname);
+ if (username) {
+ buddy = purple_find_buddy(account, username);
if (buddy != NULL)
name = purple_buddy_get_contact_alias(buddy);
title = g_strdup_printf(_("Conversations with %s"), name);
@@ -415,9 +415,9 @@ void finch_log_show(PurpleLogType type, const char *screenname, PurpleAccount *a
}
}
- if (screenname) {
- logs = purple_log_get_logs(type, screenname, account);
- size = purple_log_get_total_size(type, screenname, account);
+ if (username) {
+ logs = purple_log_get_logs(type, username, account);
+ size = purple_log_get_total_size(type, username, account);
} else {
/* This will happen only for IMs */
GHashTable *table = purple_log_get_log_sets();
@@ -458,12 +458,16 @@ void finch_log_show_contact(PurpleContact *contact)
for (child = purple_blist_node_get_first_child((PurpleBlistNode*)contact); child;
child = purple_blist_node_get_sibling_next(child)) {
+ const char *name;
+ PurpleAccount *account;
if (!PURPLE_BLIST_NODE_IS_BUDDY(child))
continue;
- logs = g_list_concat(purple_log_get_logs(PURPLE_LOG_IM, ((PurpleBuddy *)child)->name,
- ((PurpleBuddy *)child)->account), logs);
- total_log_size += purple_log_get_total_size(PURPLE_LOG_IM, ((PurpleBuddy *)child)->name, ((PurpleBuddy *)child)->account);
+ name = purple_buddy_get_name((PurpleBuddy *)child);
+ account = purple_buddy_get_account((PurpleBuddy *)child);
+ logs = g_list_concat(purple_log_get_logs(PURPLE_LOG_IM, name,
+ account), logs);
+ total_log_size += purple_log_get_total_size(PURPLE_LOG_IM, name, account);
}
logs = g_list_sort(logs, purple_log_compare);
diff --git a/finch/gntlog.h b/finch/gntlog.h
index c792e5dc14..e6bc43cebe 100644
--- a/finch/gntlog.h
+++ b/finch/gntlog.h
@@ -50,7 +50,7 @@ struct _FinchLogViewer {
-void finch_log_show(PurpleLogType type, const char *screenname, PurpleAccount *account);
+void finch_log_show(PurpleLogType type, const char *username, PurpleAccount *account);
void finch_log_show_contact(PurpleContact *contact);
void finch_syslog_show(void);
diff --git a/finch/gntmedia.c b/finch/gntmedia.c
new file mode 100644
index 0000000000..68f7379cd3
--- /dev/null
+++ b/finch/gntmedia.c
@@ -0,0 +1,537 @@
+/**
+ * @file gntmedia.c GNT Media API
+ * @ingroup finch
+ */
+
+/* finch
+ *
+ * Finch 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 "finch.h"
+
+#include "gntconv.h"
+#include "gntmedia.h"
+
+#include "gnt.h"
+#include "gntbutton.h"
+#include "gntbox.h"
+#include "gntlabel.h"
+
+#include "cmds.h"
+#include "conversation.h"
+#include "debug.h"
+#include "mediamanager.h"
+
+/* An incredibly large part of the following is from gtkmedia.c */
+#ifdef USE_VV
+#include "media-gst.h"
+
+#undef hangup
+
+#define FINCH_TYPE_MEDIA (finch_media_get_type())
+#define FINCH_MEDIA(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), FINCH_TYPE_MEDIA, FinchMedia))
+#define FINCH_MEDIA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), FINCH_TYPE_MEDIA, FinchMediaClass))
+#define FINCH_IS_MEDIA(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), FINCH_TYPE_MEDIA))
+#define FINCH_IS_MEDIA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), FINCH_TYPE_MEDIA))
+#define FINCH_MEDIA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), FINCH_TYPE_MEDIA, FinchMediaClass))
+
+typedef struct _FinchMedia FinchMedia;
+typedef struct _FinchMediaClass FinchMediaClass;
+typedef struct _FinchMediaPrivate FinchMediaPrivate;
+typedef enum _FinchMediaState FinchMediaState;
+
+struct _FinchMediaClass
+{
+ GntBoxClass parent_class;
+};
+
+struct _FinchMedia
+{
+ GntBox parent;
+ FinchMediaPrivate *priv;
+};
+
+struct _FinchMediaPrivate
+{
+ PurpleMedia *media;
+
+ GntWidget *accept;
+ GntWidget *reject;
+ GntWidget *hangup;
+ GntWidget *calling;
+
+ PurpleConversation *conv;
+};
+
+#define FINCH_MEDIA_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), FINCH_TYPE_MEDIA, FinchMediaPrivate))
+
+static void finch_media_class_init (FinchMediaClass *klass);
+static void finch_media_init (FinchMedia *media);
+static void finch_media_finalize (GObject *object);
+static void finch_media_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
+static void finch_media_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
+
+static GntBoxClass *parent_class = NULL;
+
+enum {
+ MESSAGE,
+ LAST_SIGNAL
+};
+static guint finch_media_signals[LAST_SIGNAL] = {0};
+
+enum {
+ PROP_0,
+ PROP_MEDIA,
+};
+
+static GType
+finch_media_get_type(void)
+{
+ static GType type = 0;
+
+ if (type == 0) {
+ static const GTypeInfo info = {
+ sizeof(FinchMediaClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) finch_media_class_init,
+ NULL,
+ NULL,
+ sizeof(FinchMedia),
+ 0,
+ (GInstanceInitFunc) finch_media_init,
+ NULL
+ };
+ type = g_type_register_static(GNT_TYPE_BOX, "FinchMedia", &info, 0);
+ }
+ return type;
+}
+
+
+static void
+finch_media_class_init (FinchMediaClass *klass)
+{
+ GObjectClass *gobject_class = (GObjectClass*)klass;
+ parent_class = g_type_class_peek_parent(klass);
+
+ gobject_class->finalize = finch_media_finalize;
+ gobject_class->set_property = finch_media_set_property;
+ gobject_class->get_property = finch_media_get_property;
+
+ g_object_class_install_property(gobject_class, PROP_MEDIA,
+ g_param_spec_object("media",
+ "PurpleMedia",
+ "The PurpleMedia associated with this media.",
+ PURPLE_TYPE_MEDIA,
+ G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
+
+ finch_media_signals[MESSAGE] = g_signal_new("message", G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_LAST, 0, NULL, NULL,
+ g_cclosure_marshal_VOID__STRING,
+ G_TYPE_NONE, 1, G_TYPE_STRING);
+
+ g_type_class_add_private(klass, sizeof(FinchMediaPrivate));
+}
+
+
+static void
+finch_media_init (FinchMedia *media)
+{
+ media->priv = FINCH_MEDIA_GET_PRIVATE(media);
+
+ media->priv->calling = gnt_label_new(_("Calling ... "));
+ media->priv->hangup = gnt_button_new(_("Hangup"));
+ media->priv->accept = gnt_button_new(_("Accept"));
+ media->priv->reject = gnt_button_new(_("Reject"));
+
+ gnt_box_set_alignment(GNT_BOX(media), GNT_ALIGN_MID);
+
+ gnt_box_add_widget(GNT_BOX(media), media->priv->accept);
+ gnt_box_add_widget(GNT_BOX(media), media->priv->reject);
+}
+
+static void
+finch_media_finalize (GObject *media)
+{
+ FinchMedia *gntmedia = FINCH_MEDIA(media);
+ purple_debug_info("gntmedia", "finch_media_finalize\n");
+ if (gntmedia->priv->media)
+ g_object_unref(gntmedia->priv->media);
+}
+
+static void
+finch_media_emit_message(FinchMedia *gntmedia, const char *msg)
+{
+ g_signal_emit(gntmedia, finch_media_signals[MESSAGE], 0, msg);
+}
+
+static void
+finch_media_connected_cb(PurpleMedia *media, FinchMedia *gntmedia)
+{
+ GntWidget *parent;
+
+ finch_media_emit_message(gntmedia, _("Call in progress."));
+
+ gnt_box_remove(GNT_BOX(gntmedia), gntmedia->priv->accept);
+ gnt_box_remove(GNT_BOX(gntmedia), gntmedia->priv->reject);
+ gnt_box_remove(GNT_BOX(gntmedia), gntmedia->priv->hangup);
+ gnt_box_remove(GNT_BOX(gntmedia), gntmedia->priv->calling);
+
+ gnt_box_add_widget(GNT_BOX(gntmedia), gntmedia->priv->hangup);
+
+ gnt_widget_destroy(gntmedia->priv->accept);
+ gnt_widget_destroy(gntmedia->priv->reject);
+ gnt_widget_destroy(gntmedia->priv->calling);
+ gntmedia->priv->accept = NULL;
+ gntmedia->priv->reject = NULL;
+ gntmedia->priv->calling = NULL;
+
+ parent = GNT_WIDGET(gntmedia);
+ while (parent->parent)
+ parent = parent->parent;
+ gnt_box_readjust(GNT_BOX(parent));
+ gnt_widget_draw(parent);
+}
+
+static void
+finch_media_wait_cb(PurpleMedia *media, FinchMedia *gntmedia)
+{
+ GntWidget *parent;
+
+ gnt_box_remove(GNT_BOX(gntmedia), gntmedia->priv->accept);
+ gnt_box_remove(GNT_BOX(gntmedia), gntmedia->priv->reject);
+ gnt_box_remove(GNT_BOX(gntmedia), gntmedia->priv->hangup);
+ gnt_box_remove(GNT_BOX(gntmedia), gntmedia->priv->calling);
+
+ gnt_box_add_widget(GNT_BOX(gntmedia), gntmedia->priv->calling);
+ gnt_box_add_widget(GNT_BOX(gntmedia), gntmedia->priv->hangup);
+
+ parent = GNT_WIDGET(gntmedia);
+ while (parent->parent)
+ parent = parent->parent;
+ gnt_box_readjust(GNT_BOX(parent));
+ gnt_widget_draw(parent);
+}
+
+static void
+finch_media_state_changed_cb(PurpleMedia *media, PurpleMediaState state,
+ gchar *sid, gchar *name, FinchMedia *gntmedia)
+{
+ purple_debug_info("gntmedia", "state: %d sid: %s name: %s\n",
+ state, sid, name);
+ if (sid == NULL && name == NULL) {
+ if (state == PURPLE_MEDIA_STATE_END) {
+ finch_media_emit_message(gntmedia,
+ _("The call has been terminated."));
+ finch_conversation_set_info_widget(
+ gntmedia->priv->conv, NULL);
+ gnt_widget_destroy(GNT_WIDGET(gntmedia));
+ /*
+ * XXX: This shouldn't have to be here
+ * to free the FinchMedia widget.
+ */
+ g_object_unref(gntmedia);
+ }
+ } else if (state == PURPLE_MEDIA_STATE_CONNECTED) {
+ finch_media_connected_cb(media, gntmedia);
+ } else if (state == PURPLE_MEDIA_STATE_NEW &&
+ sid != NULL && name != NULL &&
+ purple_media_is_initiator(media, sid, name) == FALSE) {
+ PurpleAccount *account;
+ PurpleBuddy *buddy;
+ const gchar *alias;
+ PurpleMediaSessionType type =
+ purple_media_get_session_type(media, sid);
+ gchar *message = NULL;
+
+ account = purple_media_get_account(gntmedia->priv->media);
+ buddy = purple_find_buddy(account, name);
+ alias = buddy ? purple_buddy_get_contact_alias(buddy) : name;
+
+ if (type & PURPLE_MEDIA_AUDIO) {
+ message = g_strdup_printf(
+ _("%s wishes to start an audio session with you."),
+ alias);
+ } else {
+ message = g_strdup_printf(
+ _("%s is trying to start an unsupported media session type with you."),
+ alias);
+ }
+ finch_media_emit_message(gntmedia, message);
+ g_free(message);
+ }
+}
+
+static void
+finch_media_stream_info_cb(PurpleMedia *media, PurpleMediaInfoType type,
+ gchar *sid, gchar *name, gboolean local, FinchMedia *gntmedia)
+{
+ if (type == PURPLE_MEDIA_INFO_REJECT) {
+ finch_media_emit_message(gntmedia,
+ _("You have rejected the call."));
+ }
+}
+
+static void
+finch_media_accept_cb(PurpleMedia *media, GntWidget *widget)
+{
+ purple_media_stream_info(media, PURPLE_MEDIA_INFO_ACCEPT,
+ NULL, NULL, TRUE);
+}
+
+static void
+finch_media_hangup_cb(PurpleMedia *media, GntWidget *widget)
+{
+ purple_media_stream_info(media, PURPLE_MEDIA_INFO_HANGUP,
+ NULL, NULL, TRUE);
+}
+
+static void
+finch_media_reject_cb(PurpleMedia *media, GntWidget *widget)
+{
+ purple_media_stream_info(media, PURPLE_MEDIA_INFO_REJECT,
+ NULL, NULL, TRUE);
+}
+
+static void
+finch_media_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+{
+ FinchMedia *media;
+ g_return_if_fail(FINCH_IS_MEDIA(object));
+
+ media = FINCH_MEDIA(object);
+ switch (prop_id) {
+ case PROP_MEDIA:
+ {
+ if (media->priv->media)
+ g_object_unref(media->priv->media);
+ media->priv->media = g_value_get_object(value);
+ g_object_ref(media->priv->media);
+ g_signal_connect_swapped(G_OBJECT(media->priv->accept), "activate",
+ G_CALLBACK(finch_media_accept_cb), media->priv->media);
+ g_signal_connect_swapped(G_OBJECT(media->priv->reject), "activate",
+ G_CALLBACK(finch_media_reject_cb), media->priv->media);
+ g_signal_connect_swapped(G_OBJECT(media->priv->hangup), "activate",
+ G_CALLBACK(finch_media_hangup_cb), media->priv->media);
+
+ if (purple_media_is_initiator(media->priv->media,
+ NULL, NULL) == TRUE) {
+ finch_media_wait_cb(media->priv->media, media);
+ }
+ g_signal_connect(G_OBJECT(media->priv->media), "state-changed",
+ G_CALLBACK(finch_media_state_changed_cb), media);
+ g_signal_connect(G_OBJECT(media->priv->media), "stream-info",
+ G_CALLBACK(finch_media_stream_info_cb), media);
+ break;
+ }
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+finch_media_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+{
+ FinchMedia *media;
+ g_return_if_fail(FINCH_IS_MEDIA(object));
+
+ media = FINCH_MEDIA(object);
+
+ switch (prop_id) {
+ case PROP_MEDIA:
+ g_value_set_object(value, media->priv->media);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static GntWidget *
+finch_media_new(PurpleMedia *media)
+{
+ return GNT_WIDGET(g_object_new(finch_media_get_type(),
+ "media", media,
+ "vertical", FALSE,
+ "homogeneous", FALSE,
+ NULL));
+}
+
+static void
+gntmedia_message_cb(FinchMedia *gntmedia, const char *msg, PurpleConversation *conv)
+{
+ if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM) {
+ purple_conv_im_write(PURPLE_CONV_IM(conv), NULL, msg, PURPLE_MESSAGE_SYSTEM, time(NULL));
+ }
+}
+
+static gboolean
+finch_new_media(PurpleMediaManager *manager, PurpleMedia *media,
+ PurpleAccount *account, gchar *name, gpointer null)
+{
+ GntWidget *gntmedia;
+ PurpleConversation *conv;
+
+ conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, name);
+
+ gntmedia = finch_media_new(media);
+ g_signal_connect(G_OBJECT(gntmedia), "message", G_CALLBACK(gntmedia_message_cb), conv);
+ FINCH_MEDIA(gntmedia)->priv->conv = conv;
+ finch_conversation_set_info_widget(conv, gntmedia);
+ return TRUE;
+}
+
+static PurpleCmdRet
+call_cmd_cb(PurpleConversation *conv, const char *cmd, char **args,
+ char **eror, gpointer data)
+{
+ PurpleAccount *account = purple_conversation_get_account(conv);
+
+ if (!purple_prpl_initiate_media(account,
+ purple_conversation_get_name(conv),
+ PURPLE_MEDIA_AUDIO))
+ return PURPLE_CMD_STATUS_FAILED;
+
+ return PURPLE_CMD_STATUS_OK;
+}
+
+static GstElement *
+create_default_audio_src(PurpleMedia *media,
+ const gchar *session_id, const gchar *participant)
+{
+ GstElement *bin, *src, *volume;
+ GstPad *pad, *ghost;
+ double input_volume = purple_prefs_get_int(
+ "/finch/media/audio/volume/input")/10.0;
+
+ src = gst_element_factory_make("gconfaudiosrc", NULL);
+ if (src == NULL)
+ src = gst_element_factory_make("autoaudiosrc", NULL);
+ if (src == NULL)
+ src = gst_element_factory_make("alsasrc", NULL);
+ if (src == NULL)
+ src = gst_element_factory_make("osssrc", NULL);
+ if (src == NULL)
+ src = gst_element_factory_make("dshowaudiosrc", NULL);
+ if (src == NULL) {
+ purple_debug_error("gntmedia", "Unable to find a suitable "
+ "element for the default audio source.\n");
+ return NULL;
+ }
+
+ bin = gst_bin_new("finchdefaultaudiosrc");
+ volume = gst_element_factory_make("volume", "purpleaudioinputvolume");
+ g_object_set(volume, "volume", input_volume, NULL);
+ gst_bin_add_many(GST_BIN(bin), src, volume, NULL);
+ gst_element_link(src, volume);
+ pad = gst_element_get_pad(volume, "src");
+ ghost = gst_ghost_pad_new("ghostsrc", pad);
+ gst_element_add_pad(bin, ghost);
+
+ return bin;
+}
+
+static GstElement *
+create_default_audio_sink(PurpleMedia *media,
+ const gchar *session_id, const gchar *participant)
+{
+ GstElement *bin, *sink, *volume, *queue;
+ GstPad *pad, *ghost;
+ double output_volume = purple_prefs_get_int(
+ "/finch/media/audio/volume/output")/10.0;
+
+ sink = gst_element_factory_make("gconfaudiosink", NULL);
+ if (sink == NULL)
+ sink = gst_element_factory_make("autoaudiosink",NULL);
+ if (sink == NULL) {
+ purple_debug_error("gntmedia", "Unable to find a suitable "
+ "element for the default audio sink.\n");
+ return NULL;
+ }
+
+ bin = gst_bin_new("finchdefaultaudiosink");
+ volume = gst_element_factory_make("volume", "purpleaudiooutputvolume");
+ g_object_set(volume, "volume", output_volume, NULL);
+ queue = gst_element_factory_make("queue", NULL);
+ gst_bin_add_many(GST_BIN(bin), sink, volume, queue, NULL);
+ gst_element_link(volume, sink);
+ gst_element_link(queue, volume);
+ pad = gst_element_get_pad(queue, "sink");
+ ghost = gst_ghost_pad_new("ghostsink", pad);
+ gst_element_add_pad(bin, ghost);
+
+ return bin;
+}
+#endif /* USE_VV */
+
+void finch_media_manager_init(void)
+{
+#ifdef USE_VV
+ PurpleMediaManager *manager = purple_media_manager_get();
+ PurpleMediaElementInfo *default_audio_src =
+ g_object_new(PURPLE_TYPE_MEDIA_ELEMENT_INFO,
+ "id", "finchdefaultaudiosrc",
+ "name", "Finch Default Audio Source",
+ "type", PURPLE_MEDIA_ELEMENT_AUDIO
+ | PURPLE_MEDIA_ELEMENT_SRC
+ | PURPLE_MEDIA_ELEMENT_ONE_SRC
+ | PURPLE_MEDIA_ELEMENT_UNIQUE,
+ "create-cb", create_default_audio_src, NULL);
+ PurpleMediaElementInfo *default_audio_sink =
+ g_object_new(PURPLE_TYPE_MEDIA_ELEMENT_INFO,
+ "id", "finchdefaultaudiosink",
+ "name", "Finch Default Audio Sink",
+ "type", PURPLE_MEDIA_ELEMENT_AUDIO
+ | PURPLE_MEDIA_ELEMENT_SINK
+ | PURPLE_MEDIA_ELEMENT_ONE_SINK,
+ "create-cb", create_default_audio_sink, NULL);
+
+ g_signal_connect(G_OBJECT(manager), "init-media", G_CALLBACK(finch_new_media), NULL);
+ purple_cmd_register("call", "", PURPLE_CMD_P_DEFAULT,
+ PURPLE_CMD_FLAG_IM, NULL,
+ call_cmd_cb, _("call: Make an audio call."), NULL);
+
+ purple_media_manager_set_ui_caps(manager,
+ PURPLE_MEDIA_CAPS_AUDIO |
+ PURPLE_MEDIA_CAPS_AUDIO_SINGLE_DIRECTION);
+
+ purple_debug_info("gntmedia", "Registering media element types\n");
+ purple_media_manager_set_active_element(manager, default_audio_src);
+ purple_media_manager_set_active_element(manager, default_audio_sink);
+
+ purple_prefs_add_none("/finch/media");
+ purple_prefs_add_none("/finch/media/audio");
+ purple_prefs_add_none("/finch/media/audio/volume");
+ purple_prefs_add_int("/finch/media/audio/volume/input", 10);
+ purple_prefs_add_int("/finch/media/audio/volume/output", 10);
+#endif
+}
+
+void finch_media_manager_uninit(void)
+{
+#ifdef USE_VV
+ PurpleMediaManager *manager = purple_media_manager_get();
+ g_signal_handlers_disconnect_by_func(G_OBJECT(manager),
+ G_CALLBACK(finch_new_media), NULL);
+#endif
+}
+
+
diff --git a/finch/gntmedia.h b/finch/gntmedia.h
new file mode 100644
index 0000000000..95842d477d
--- /dev/null
+++ b/finch/gntmedia.h
@@ -0,0 +1,42 @@
+/**
+ * @file gntmedia.h GNT Media API
+ * @ingroup finch
+ */
+
+/* finch
+ *
+ * Finch 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 GNT_MEDIA_H
+#define GNT_MEDIA_H
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+G_BEGIN_DECLS
+
+void finch_media_manager_init(void);
+void finch_media_manager_uninit(void);
+
+G_END_DECLS
+
+#endif /* GNT_MEDIA_H */
+
diff --git a/finch/gntnotify.c b/finch/gntnotify.c
index 3bdd4a0fde..9c2f3387e4 100644
--- a/finch/gntnotify.c
+++ b/finch/gntnotify.c
@@ -208,6 +208,9 @@ finch_notify_emails(PurpleConnection *gc, size_t count, gboolean detailed,
void *ret;
static int key = 0;
+ if (count == 0)
+ return NULL;
+
if (!detailed)
{
g_string_append_printf(message,
diff --git a/finch/gntplugin.c b/finch/gntplugin.c
index 4c1127cbc2..7dd8e58cab 100644
--- a/finch/gntplugin.c
+++ b/finch/gntplugin.c
@@ -484,10 +484,10 @@ process_pref_frame(PurplePluginPrefFrame *frame)
char *value = NULL;
switch(type) {
case PURPLE_PREF_BOOLEAN:
- value = g_strdup_printf("%d", (int)list->next->data);
+ value = g_strdup_printf("%d", GPOINTER_TO_INT(list->next->data));
break;
case PURPLE_PREF_INT:
- value = g_strdup_printf("%d", (int)list->next->data);
+ value = g_strdup_printf("%d", GPOINTER_TO_INT(list->next->data));
break;
case PURPLE_PREF_STRING:
value = g_strdup(list->next->data);
diff --git a/finch/gntrequest.c b/finch/gntrequest.c
index b613d8f811..9b37349cd6 100644
--- a/finch/gntrequest.c
+++ b/finch/gntrequest.c
@@ -39,6 +39,12 @@
#include "debug.h"
#include "util.h"
+/* XXX: Until gobjectification ... */
+#undef FINCH_GET_DATA
+#undef FINCH_SET_DATA
+#define FINCH_GET_DATA(obj) purple_request_field_get_ui_data(obj)
+#define FINCH_SET_DATA(obj, data) purple_request_field_set_ui_data(obj, data)
+
typedef struct
{
void *user_data;
@@ -393,11 +399,11 @@ request_fields_cb(GntWidget *button, PurpleRequestFields *fields)
}
static void
-update_selected_account(GntEntry *screenname, const char *start, const char *end,
+update_selected_account(GntEntry *username, const char *start, const char *end,
GntComboBox *accountlist)
{
GList *accounts = gnt_tree_get_rows(GNT_TREE(accountlist->dropdown));
- const char *name = gnt_entry_get_text(screenname);
+ const char *name = gnt_entry_get_text(username);
while (accounts) {
if (purple_find_buddy(accounts->data, name)) {
gnt_combo_box_set_selected(accountlist, accounts->data);
@@ -419,7 +425,7 @@ create_boolean_field(PurpleRequestField *field)
}
static GntWidget*
-create_string_field(PurpleRequestField *field, GntWidget **screenname)
+create_string_field(PurpleRequestField *field, GntWidget **username)
{
const char *hint = purple_request_field_get_type_hint(field);
GntWidget *entry = gnt_entry_new(
@@ -435,8 +441,8 @@ create_string_field(PurpleRequestField *field, GntWidget **screenname)
gnt_entry_add_suggest(GNT_ENTRY(entry), purple_buddy_get_name((PurpleBuddy*)node));
}
gnt_entry_set_always_suggest(GNT_ENTRY(entry), TRUE);
- if (screenname)
- *screenname = entry;
+ if (username)
+ *username = entry;
} else if (hint && !strcmp(hint, "group")) {
PurpleBlistNode *node;
for (node = purple_blist_get_root(); node;
@@ -569,7 +575,7 @@ finch_request_fields(const char *title, const char *primary,
{
GntWidget *window, *box;
GList *grlist;
- GntWidget *screenname = NULL, *accountlist = NULL;
+ GntWidget *username = NULL, *accountlist = NULL;
window = setup_request_window(title, primary, secondary, PURPLE_REQUEST_FIELDS);
@@ -617,7 +623,7 @@ finch_request_fields(const char *title, const char *primary,
}
else if (type == PURPLE_REQUEST_FIELD_STRING)
{
- FINCH_SET_DATA(field, create_string_field(field, &screenname));
+ FINCH_SET_DATA(field, create_string_field(field, &username));
}
else if (type == PURPLE_REQUEST_FIELD_INTEGER)
{
@@ -633,7 +639,8 @@ finch_request_fields(const char *title, const char *primary,
}
else if (type == PURPLE_REQUEST_FIELD_ACCOUNT)
{
- accountlist = FINCH_SET_DATA(field, create_account_field(field));
+ accountlist = create_account_field(field);
+ FINCH_SET_DATA(field, accountlist);
}
else
{
@@ -655,8 +662,8 @@ finch_request_fields(const char *title, const char *primary,
setup_default_callback(window, cancel_cb, userdata);
gnt_widget_show(window);
- if (screenname && accountlist) {
- g_signal_connect(screenname, "completion", G_CALLBACK(update_selected_account), accountlist);
+ if (username && accountlist) {
+ g_signal_connect(username, "completion", G_CALLBACK(update_selected_account), accountlist);
}
g_object_set_data(G_OBJECT(window), "fields", allfields);
diff --git a/finch/gntroomlist.c b/finch/gntroomlist.c
index bbaa3e7dad..89479a4310 100644
--- a/finch/gntroomlist.c
+++ b/finch/gntroomlist.c
@@ -190,7 +190,7 @@ roomlist_selection_changed(GntWidget *widget, gpointer old, gpointer current, gp
label = g_strdup(iter->data ? "True" : "False");
break;
case PURPLE_ROOMLIST_FIELD_INT:
- label = g_strdup_printf("%d", (int)iter->data);
+ label = g_strdup_printf("%d", GPOINTER_TO_INT(iter->data));
break;
case PURPLE_ROOMLIST_FIELD_STRING:
label = g_strdup(iter->data);
diff --git a/finch/gntui.c b/finch/gntui.c
index 7ebdf1a59d..a1ffe62307 100644
--- a/finch/gntui.c
+++ b/finch/gntui.c
@@ -31,6 +31,7 @@
#include "gntdebug.h"
#include "gntft.h"
#include "gntlog.h"
+#include "gntmedia.h"
#include "gntnotify.h"
#include "gntplugin.h"
#include "gntpounce.h"
@@ -91,6 +92,9 @@ void gnt_ui_init()
finch_roomlist_init();
purple_roomlist_set_ui_ops(finch_roomlist_get_ui_ops());
+ /* Media */
+ finch_media_manager_init();
+
gnt_register_action(_("Accounts"), finch_accounts_show_all);
gnt_register_action(_("Buddy List"), finch_blist_show);
gnt_register_action(_("Buddy Pounces"), finch_pounces_manager_show);
@@ -136,6 +140,10 @@ void gnt_ui_uninit()
finch_roomlist_uninit();
purple_roomlist_set_ui_ops(NULL);
+#ifdef USE_VV
+ finch_media_manager_uninit();
+#endif
+
gnt_quit();
#endif
}
diff --git a/finch/libgnt/Makefile.am b/finch/libgnt/Makefile.am
index 99b6d4566b..65ce3cb65f 100644
--- a/finch/libgnt/Makefile.am
+++ b/finch/libgnt/Makefile.am
@@ -28,6 +28,7 @@ libgnt_la_SOURCES = \
gntmenu.c \
gntmenuitem.c \
gntmenuitemcheck.c \
+ gntprogressbar.c \
gntslider.c \
gntstyle.c \
gnttextview.c \
@@ -56,6 +57,7 @@ libgnt_la_headers = \
gntmenu.h \
gntmenuitem.h \
gntmenuitemcheck.h \
+ gntprogressbar.h \
gntslider.h \
gntstyle.h \
gnttextview.h \
diff --git a/finch/libgnt/configure.ac b/finch/libgnt/configure.ac
index 5faa50e230..7338908cb8 100644
--- a/finch/libgnt/configure.ac
+++ b/finch/libgnt/configure.ac
@@ -27,7 +27,7 @@ AC_PREREQ([2.50])
m4_define([gnt_lt_current], [5])
m4_define([gnt_major_version], [2])
m4_define([gnt_minor_version], [5])
-m4_define([gnt_micro_version], [6])
+m4_define([gnt_micro_version], [0])
m4_define([gnt_version_suffix], [])
m4_define([gnt_version],
[gnt_major_version.gnt_minor_version.gnt_micro_version])
diff --git a/finch/libgnt/gnt.h b/finch/libgnt/gnt.h
index 7e7433cc81..0c1a0bc024 100644
--- a/finch/libgnt/gnt.h
+++ b/finch/libgnt/gnt.h
@@ -48,6 +48,10 @@
#define G_PARAM_STATIC_BLURB G_PARAM_PRIVATE
#endif
+#if !GLIB_CHECK_VERSION(2,14,0)
+ #define g_timeout_add_seconds(time, callback, data) g_timeout_add(time * 1000, callback, data)
+#endif
+
/**
* Initialize GNT.
*/
diff --git a/finch/libgnt/gntbox.c b/finch/libgnt/gntbox.c
index d9d7c208f7..7fb38e6738 100644
--- a/finch/libgnt/gntbox.c
+++ b/finch/libgnt/gntbox.c
@@ -78,13 +78,11 @@ gnt_box_draw(GntWidget *widget)
g_list_foreach(box->list, (GFunc)gnt_widget_draw, NULL);
- gnt_box_sync_children(box);
-
if (box->title && !GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_NO_BORDER))
{
int pos, right;
char *title = g_strdup(box->title);
-
+
get_title_thingies(box, title, &pos, &right);
if (gnt_widget_has_focus(widget))
@@ -96,8 +94,8 @@ gnt_box_draw(GntWidget *widget)
mvwaddch(widget->window, 0, right, ACS_LTEE | gnt_color_pair(GNT_COLOR_NORMAL));
g_free(title);
}
-
- GNTDEBUG;
+
+ gnt_box_sync_children(box);
}
static void
@@ -723,6 +721,9 @@ void gnt_box_sync_children(GntBox *box)
if (GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_NO_BORDER))
pos = 0;
+ if (!box->active)
+ find_focusable_widget(box);
+
for (iter = box->list; iter; iter = iter->next)
{
GntWidget *w = GNT_WIDGET(iter->data);
@@ -764,6 +765,9 @@ void gnt_box_sync_children(GntBox *box)
copywin(w->window, widget->window, 0, 0,
y, x, y + height - 1, x + width - 1, FALSE);
gnt_widget_set_position(w, x + widget->priv.x, y + widget->priv.y);
+ if (w == box->active) {
+ wmove(widget->window, y + getcury(w->window), x + getcurx(w->window));
+ }
}
}
diff --git a/finch/libgnt/gntcheckbox.c b/finch/libgnt/gntcheckbox.c
index 6b6e1c0544..c3704b4539 100644
--- a/finch/libgnt/gntcheckbox.c
+++ b/finch/libgnt/gntcheckbox.c
@@ -42,7 +42,7 @@ gnt_check_box_draw(GntWidget *widget)
type = GNT_COLOR_HIGHLIGHT;
else
type = GNT_COLOR_NORMAL;
-
+
wbkgdset(widget->window, '\0' | gnt_color_pair(type));
text = g_strdup_printf("[%c]", cb->checked ? 'X' : ' ');
@@ -51,7 +51,8 @@ gnt_check_box_draw(GntWidget *widget)
wbkgdset(widget->window, '\0' | gnt_color_pair(GNT_COLOR_NORMAL));
mvwaddstr(widget->window, 0, 4, GNT_BUTTON(cb)->priv->text);
-
+ wmove(widget->window, 0, 1);
+
GNTDEBUG;
}
diff --git a/finch/libgnt/gntcombobox.c b/finch/libgnt/gntcombobox.c
index c012113e23..9d32749646 100644
--- a/finch/libgnt/gntcombobox.c
+++ b/finch/libgnt/gntcombobox.c
@@ -73,7 +73,7 @@ gnt_combo_box_draw(GntWidget *widget)
char *text = NULL, *s;
GntColorType type;
int len;
-
+
if (box->dropdown && box->selected)
text = gnt_tree_get_selection_text(GNT_TREE(box->dropdown));
@@ -94,6 +94,7 @@ gnt_combo_box_draw(GntWidget *widget)
whline(widget->window, ' ' | gnt_color_pair(type), widget->priv.width - 4 - len);
mvwaddch(widget->window, 1, widget->priv.width - 3, ACS_VLINE | gnt_color_pair(GNT_COLOR_NORMAL));
mvwaddch(widget->window, 1, widget->priv.width - 2, ACS_DARROW | gnt_color_pair(GNT_COLOR_NORMAL));
+ wmove(widget->window, 1, 1);
g_free(text);
GNTDEBUG;
diff --git a/finch/libgnt/gntentry.c b/finch/libgnt/gntentry.c
index 514ff01645..85e06f351d 100644
--- a/finch/libgnt/gntentry.c
+++ b/finch/libgnt/gntentry.c
@@ -271,6 +271,7 @@ gnt_entry_draw(GntWidget *widget)
GntEntry *entry = GNT_ENTRY(widget);
int stop;
gboolean focus;
+ int curpos;
if ((focus = gnt_widget_has_focus(widget)))
wbkgdset(widget->window, '\0' | gnt_color_pair(GNT_COLOR_TEXT_NORMAL));
@@ -289,9 +290,10 @@ gnt_entry_draw(GntWidget *widget)
if (stop < widget->priv.width)
mvwhline(widget->window, 0, stop, ENTRY_CHAR, widget->priv.width - stop);
+ curpos = gnt_util_onscreen_width(entry->scroll, entry->cursor);
if (focus)
- mvwchgat(widget->window, 0, gnt_util_onscreen_width(entry->scroll, entry->cursor),
- 1, A_REVERSE, GNT_COLOR_TEXT_NORMAL, NULL);
+ mvwchgat(widget->window, 0, curpos, 1, A_REVERSE, GNT_COLOR_TEXT_NORMAL, NULL);
+ wmove(widget->window, 0, curpos);
GNTDEBUG;
}
diff --git a/finch/libgnt/gntkeys.h b/finch/libgnt/gntkeys.h
index 0f5a6cc5a1..6f218aa4d6 100644
--- a/finch/libgnt/gntkeys.h
+++ b/finch/libgnt/gntkeys.h
@@ -165,5 +165,6 @@ int gnt_keys_find_combination(const char *key);
#undef lines
#undef buttons
#undef newline
+#undef set_clock
#endif
diff --git a/finch/libgnt/gntprogressbar.c b/finch/libgnt/gntprogressbar.c
new file mode 100644
index 0000000000..0032fabbe2
--- /dev/null
+++ b/finch/libgnt/gntprogressbar.c
@@ -0,0 +1,253 @@
+/**
+ * GNT - The GLib Ncurses Toolkit
+ *
+ * GNT 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 library 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 "gntprogressbar.h"
+#include "gntutils.h"
+
+#include <string.h>
+
+typedef struct _GntProgressBarPrivate
+{
+ gdouble fraction;
+ gboolean show_value;
+ GntProgressBarOrientation orientation;
+} GntProgressBarPrivate;
+
+struct _GntProgressBar
+{
+ GntWidget parent;
+#if !GLIB_CHECK_VERSION(2,4,0)
+ GntProgressBarPrivate priv;
+#endif
+};
+
+#if GLIB_CHECK_VERSION(2,4,0)
+#define GNT_PROGRESS_BAR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GNT_TYPE_PROGRESS_BAR, GntProgressBarPrivate))
+#else
+#define GNT_PROGRESS_BAR_GET_PRIVATE(o) &(GNT_PROGRESS_BAR(o)->priv)
+#endif
+
+static GntWidgetClass *parent_class = NULL;
+
+
+static void
+gnt_progress_bar_draw (GntWidget *widget)
+{
+ GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (GNT_PROGRESS_BAR (widget));
+ gchar progress[8];
+ gint start, end, i, pos;
+ int color;
+
+ g_snprintf (progress, sizeof (progress), "%.1f%%", priv->fraction * 100);
+ color = gnt_color_pair(GNT_COLOR_NORMAL);
+
+ switch (priv->orientation) {
+ case GNT_PROGRESS_LEFT_TO_RIGHT:
+ case GNT_PROGRESS_RIGHT_TO_LEFT:
+ start = (priv->orientation == GNT_PROGRESS_LEFT_TO_RIGHT ? 0 : (1.0 - priv->fraction) * widget->priv.width);
+ end = (priv->orientation == GNT_PROGRESS_LEFT_TO_RIGHT ? widget->priv.width * priv->fraction : widget->priv.width);
+
+ /* background */
+ for (i = 0; i < widget->priv.height; i++)
+ mvwhline (widget->window, i, 0, ' ' | color, widget->priv.width);
+
+ /* foreground */
+ for (i = 0; i < widget->priv.height; i++)
+ mvwhline (widget->window, i, start, ACS_CKBOARD | color | A_REVERSE, end);
+
+ /* text */
+ if (priv->show_value) {
+ pos = widget->priv.width / 2 - strlen (progress) / 2;
+ for (i = 0; i < progress[i]; i++, pos++) {
+ wattrset (widget->window, color | ((pos < start || pos > end) ? A_NORMAL : A_REVERSE));
+ mvwprintw (widget->window, widget->priv.height / 2, pos, "%c", progress[i]);
+ }
+ wattrset (widget->window, color);
+ }
+
+ break;
+ case GNT_PROGRESS_TOP_TO_BOTTOM:
+ case GNT_PROGRESS_BOTTOM_TO_TOP:
+ start = (priv->orientation == GNT_PROGRESS_TOP_TO_BOTTOM ? 0 : (1.0 - priv->fraction) * widget->priv.height);
+ end = (priv->orientation == GNT_PROGRESS_TOP_TO_BOTTOM ? widget->priv.height * priv->fraction : widget->priv.height);
+
+ /* background */
+ for (i = 0; i < widget->priv.width; i++)
+ mvwvline (widget->window, 0, i, ' ' | color, widget->priv.height);
+
+ /* foreground */
+ for (i = 0; i < widget->priv.width; i++)
+ mvwvline (widget->window, start, i, ACS_CKBOARD | color | A_REVERSE, end);
+
+ /* text */
+ if (priv->show_value) {
+ pos = widget->priv.height / 2 - strlen (progress) / 2;
+ for (i = 0; i < progress[i]; i++, pos++) {
+ wattrset (widget->window, color | ((pos < start || pos > end) ? A_NORMAL : A_REVERSE));
+ mvwprintw (widget->window, pos, widget->priv.width / 2, "%c\n", progress[i]);
+ }
+ wattrset (widget->window, color);
+ }
+
+ break;
+ default:
+ g_assert_not_reached ();
+ }
+}
+
+static void
+gnt_progress_bar_size_request (GntWidget *widget)
+{
+ gnt_widget_set_size (widget, widget->priv.minw, widget->priv.minh);
+}
+
+static void
+gnt_progress_bar_class_init (gpointer klass, gpointer class_data)
+{
+ GObjectClass *g_class = G_OBJECT_CLASS (klass);
+
+ parent_class = GNT_WIDGET_CLASS (klass);
+
+#if GLIB_CHECK_VERSION(2,4,0)
+ g_type_class_add_private (g_class, sizeof (GntProgressBarPrivate));
+#endif
+
+ parent_class->draw = gnt_progress_bar_draw;
+ parent_class->size_request = gnt_progress_bar_size_request;
+}
+
+static void
+gnt_progress_bar_init (GTypeInstance *instance, gpointer g_class)
+{
+ GntWidget *widget = GNT_WIDGET (instance);
+ GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (GNT_PROGRESS_BAR (widget));
+
+ gnt_widget_set_take_focus (widget, FALSE);
+ GNT_WIDGET_SET_FLAGS (widget, GNT_WIDGET_NO_BORDER | GNT_WIDGET_NO_SHADOW | GNT_WIDGET_GROW_X);
+
+ widget->priv.minw = 8;
+ widget->priv.minh = 1;
+
+ priv->show_value = TRUE;
+}
+
+GType
+gnt_progress_bar_get_type (void)
+{
+ static GType type = 0;
+
+ if (type == 0) {
+ static const GTypeInfo info = {
+ sizeof (GntProgressBarClass),
+ NULL, /* base_init */
+ NULL, /* base_finalize */
+ gnt_progress_bar_class_init, /* class_init */
+ NULL, /* class_finalize */
+ NULL, /* class_data */
+ sizeof (GntProgressBar),
+ 0, /* n_preallocs */
+ gnt_progress_bar_init, /* instance_init */
+ NULL /* value_table */
+ };
+
+ type = g_type_register_static (GNT_TYPE_WIDGET, "GntProgressBar", &info, 0);
+ }
+
+ return type;
+}
+
+GntWidget *
+gnt_progress_bar_new (void)
+{
+ GntWidget *widget = g_object_new (GNT_TYPE_PROGRESS_BAR, NULL);
+ return widget;
+}
+
+void
+gnt_progress_bar_set_fraction (GntProgressBar *pbar, gdouble fraction)
+{
+ GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (pbar);
+
+ if (fraction > 1.0)
+ priv->fraction = 1.0;
+ else if (fraction < 0.0)
+ priv->fraction = 0.0;
+ else
+ priv->fraction = fraction;
+
+ if ((GNT_WIDGET_FLAGS(pbar) & GNT_WIDGET_MAPPED))
+ gnt_widget_draw(GNT_WIDGET(pbar));
+}
+
+void
+gnt_progress_bar_set_orientation (GntProgressBar *pbar,
+ GntProgressBarOrientation orientation)
+{
+ GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (pbar);
+ GntWidget *widget = GNT_WIDGET(pbar);
+
+ priv->orientation = orientation;
+ if (orientation == GNT_PROGRESS_LEFT_TO_RIGHT ||
+ orientation == GNT_PROGRESS_RIGHT_TO_LEFT) {
+ GNT_WIDGET_SET_FLAGS(pbar, GNT_WIDGET_GROW_X);
+ GNT_WIDGET_UNSET_FLAGS(pbar, GNT_WIDGET_GROW_Y);
+ widget->priv.minw = 8;
+ widget->priv.minh = 1;
+ } else {
+ GNT_WIDGET_UNSET_FLAGS(pbar, GNT_WIDGET_GROW_X);
+ GNT_WIDGET_SET_FLAGS(pbar, GNT_WIDGET_GROW_Y);
+ widget->priv.minw = 1;
+ widget->priv.minh = 8;
+ }
+
+ if ((GNT_WIDGET_FLAGS(pbar) & GNT_WIDGET_MAPPED))
+ gnt_widget_draw(GNT_WIDGET(pbar));
+}
+
+void
+gnt_progress_bar_set_show_progress (GntProgressBar *pbar, gboolean show)
+{
+ GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (pbar);
+ priv->show_value = show;
+}
+
+gdouble
+gnt_progress_bar_get_fraction (GntProgressBar *pbar)
+{
+ GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (pbar);
+ return priv->fraction;
+}
+
+GntProgressBarOrientation
+gnt_progress_bar_get_orientation (GntProgressBar *pbar)
+{
+ GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (pbar);
+ return priv->orientation;
+}
+
+gboolean
+gnt_progress_bar_get_show_progress (GntProgressBar *pbar)
+{
+ GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (pbar);
+ return priv->show_value;
+}
+
diff --git a/finch/libgnt/gntprogressbar.h b/finch/libgnt/gntprogressbar.h
new file mode 100644
index 0000000000..fbfd788992
--- /dev/null
+++ b/finch/libgnt/gntprogressbar.h
@@ -0,0 +1,132 @@
+/**
+ * @file gntprogressbar.h Progress Bar API
+ * @ingroup gnt
+ */
+/*
+ * GNT - The GLib Ncurses Toolkit
+ *
+ * GNT 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 library 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 GNT_PROGRESS_BAR_H
+#define GNT_PROGRESS_BAR_H
+
+#include "gnt.h"
+#include "gntwidget.h"
+
+#define GNT_TYPE_PROGRESS_BAR (gnt_progress_bar_get_type ())
+#define GNT_PROGRESS_BAR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GNT_TYPE_PROGRESS_BAR, GntProgressBar))
+#define GNT_PROGRESS_BAR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), GNT_TYPE_PROGRESS_BAR, GntProgressBarClass))
+#define GNT_IS_PROGRESS_BAR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GNT_TYPE_PROGRESS_BAR))
+#define GNT_IS_PROGRESS_BAR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GNT_TYPE_PROGRESS_BAR))
+#define GNT_PROGRESS_BAR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GNT_TYPE_PROGRESS_BAR, GntProgressBarClass))
+
+typedef enum _GntProgressBarOrientation
+{
+ GNT_PROGRESS_LEFT_TO_RIGHT,
+ GNT_PROGRESS_RIGHT_TO_LEFT,
+ GNT_PROGRESS_BOTTOM_TO_TOP,
+ GNT_PROGRESS_TOP_TO_BOTTOM,
+} GntProgressBarOrientation;
+
+typedef struct _GntProgressBar GntProgressBar;
+
+typedef struct _GntProgressBarClass
+{
+ GntWidgetClass parent;
+
+ void (*gnt_reserved1)(void);
+ void (*gnt_reserved2)(void);
+ void (*gnt_reserved3)(void);
+ void (*gnt_reserved4)(void);
+} GntProgressBarClass;
+
+G_BEGIN_DECLS
+
+/**
+ * Get the GType for GntProgressBar
+ * @return The GType for GntProrgressBar
+ **/
+GType
+gnt_progress_bar_get_type (void);
+
+/**
+ * Create a new GntProgressBar
+ * @return The new GntProgressBar
+ **/
+GntWidget *
+gnt_progress_bar_new (void);
+
+/**
+ * Set the progress for a progress bar
+ *
+ * @param pbar The GntProgressBar
+ * @param fraction The value between 0 and 1 to display
+ **/
+void
+gnt_progress_bar_set_fraction (GntProgressBar *pbar, gdouble fraction);
+
+/**
+ * Set the orientation for a progress bar
+ *
+ * @param pbar The GntProgressBar
+ * @param orientation The orientation to use
+ **/
+void
+gnt_progress_bar_set_orientation (GntProgressBar *pbar, GntProgressBarOrientation orientation);
+
+/**
+ * Controls whether the progress value is shown
+ *
+ * @param pbar The GntProgressBar
+ * @param show A boolean indicating if the value is shown
+ **/
+void
+gnt_progress_bar_set_show_progress (GntProgressBar *pbar, gboolean show);
+
+/**
+ * Get the progress that is displayed
+ *
+ * @param pbar The GntProgressBar
+ * @return The progress displayed as a value between 0 and 1
+ **/
+gdouble
+gnt_progress_bar_get_fraction (GntProgressBar *pbar);
+
+/**
+ * Get the orientation for the progress bar
+ *
+ * @param pbar The GntProgressBar
+ * @return The current orientation of the progress bar
+ **/
+GntProgressBarOrientation
+gnt_progress_bar_get_orientation (GntProgressBar *pbar);
+
+/**
+ * Get a boolean describing if the progress value is shown
+ *
+ * @param pbar The GntProgressBar
+ * @return A boolean @c true if the progress value is shown, @c false otherwise.
+ **/
+gboolean
+gnt_progress_bar_get_show_progress (GntProgressBar *pbar);
+
+G_END_DECLS
+
+#endif /* GNT_PROGRESS_BAR_H */
diff --git a/finch/libgnt/gnttextview.c b/finch/libgnt/gnttextview.c
index 1991a08afb..1a1354c261 100644
--- a/finch/libgnt/gnttextview.c
+++ b/finch/libgnt/gnttextview.c
@@ -177,7 +177,7 @@ gnt_text_view_draw(GntWidget *widget)
gnt_color_pair(GNT_COLOR_HIGHLIGHT_D));
}
- GNTDEBUG;
+ wmove(widget->window, 0, 0);
}
static void
@@ -799,6 +799,7 @@ int gnt_text_view_tag_change(GntTextView *view, const char *name, const char *te
break;
}
}
+ gnt_widget_draw(GNT_WIDGET(view));
return count;
}
diff --git a/finch/libgnt/gnttree.c b/finch/libgnt/gnttree.c
index bcb5712981..6bb495629b 100644
--- a/finch/libgnt/gnttree.c
+++ b/finch/libgnt/gnttree.c
@@ -28,7 +28,7 @@
#include <string.h>
#include <ctype.h>
-#define SEARCH_TIMEOUT 4000 /* 4 secs */
+#define SEARCH_TIMEOUT_S 4 /* 4 secs */
#define SEARCHING(tree) (tree->priv->search && tree->priv->search->len > 0)
#define COLUMN_INVISIBLE(tree, index) (tree->columns[index].flags & GNT_TREE_COLUMN_INVISIBLE)
@@ -420,6 +420,7 @@ redraw_tree(GntTree *tree)
GntTreeRow *row;
int pos, up, down = 0;
int rows, scrcol;
+ int current = 0;
if (!GNT_WIDGET_IS_FLAG_SET(GNT_WIDGET(tree), GNT_WIDGET_MAPPED))
return;
@@ -431,7 +432,7 @@ redraw_tree(GntTree *tree)
if (tree->top == NULL)
tree->top = tree->root;
- if (tree->current == NULL) {
+ if (tree->current == NULL && tree->root != NULL) {
tree->current = tree->root;
tree_selection_changed(tree, NULL, tree->current);
}
@@ -490,6 +491,13 @@ redraw_tree(GntTree *tree)
tree->top = get_next(tree->top);
row = tree->top;
scrcol = widget->priv.width - 1 - 2 * pos; /* exclude the borders and the scrollbar */
+
+ if (tree->current && !row_matches_search(tree->current)) {
+ GntTreeRow *old = tree->current;
+ tree->current = tree->top;
+ tree_selection_changed(tree, old, tree->current);
+ }
+
for (i = start + pos; row && i < widget->priv.height - pos;
i++, row = get_next(row))
{
@@ -518,6 +526,7 @@ redraw_tree(GntTree *tree)
if (row == tree->current)
{
+ current = i;
attr |= A_BOLD;
if (gnt_widget_has_focus(widget))
attr |= gnt_color_pair(GNT_COLOR_HIGHLIGHT);
@@ -606,6 +615,7 @@ redraw_tree(GntTree *tree)
mvwaddnstr(widget->window, widget->priv.height - pos - 1, pos,
tree->priv->search->str, str - tree->priv->search->str);
}
+ wmove(widget->window, current, pos);
gnt_widget_queue_update(widget);
}
@@ -818,7 +828,7 @@ gnt_tree_key_pressed(GntWidget *widget, const char *text)
gnt_bindable_perform_action_key(GNT_BINDABLE(tree), text);
}
g_source_remove(tree->priv->search_timeout);
- tree->priv->search_timeout = g_timeout_add(SEARCH_TIMEOUT, search_timeout, tree);
+ tree->priv->search_timeout = g_timeout_add_seconds(SEARCH_TIMEOUT_S, search_timeout, tree);
return TRUE;
} else if (text[0] == ' ' && text[1] == 0) {
/* Space pressed */
@@ -930,7 +940,7 @@ start_search(GntBindable *bindable, GList *list)
return FALSE;
GNT_WIDGET_SET_FLAGS(GNT_WIDGET(tree), GNT_WIDGET_DISABLE_ACTIONS);
tree->priv->search = g_string_new(NULL);
- tree->priv->search_timeout = g_timeout_add(SEARCH_TIMEOUT, search_timeout, tree);
+ tree->priv->search_timeout = g_timeout_add_seconds(SEARCH_TIMEOUT_S, search_timeout, tree);
return TRUE;
}
diff --git a/finch/libgnt/gntwm.c b/finch/libgnt/gntwm.c
index 91cf54a768..f674ed06a9 100644
--- a/finch/libgnt/gntwm.c
+++ b/finch/libgnt/gntwm.c
@@ -135,6 +135,17 @@ gnt_wm_copy_win(GntWidget *widget, GntNode *node)
src = widget->window;
dst = node->window;
copywin(src, dst, node->scroll, 0, 0, 0, getmaxy(dst) - 1, getmaxx(dst) - 1, 0);
+
+ /* Update the hardware cursor */
+ if (GNT_IS_WINDOW(widget) || GNT_IS_BOX(widget)) {
+ GntWidget *active = GNT_BOX(widget)->active;
+ if (active) {
+ int curx = active->priv.x + getcurx(active->window);
+ int cury = active->priv.y + getcury(active->window);
+ if (wmove(node->window, cury - widget->priv.y, curx - widget->priv.x) != OK)
+ wmove(node->window, 0, 0);
+ }
+ }
}
/**
@@ -397,7 +408,7 @@ gnt_wm_init(GTypeInstance *instance, gpointer class)
wm->positions = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
if (gnt_style_get_bool(GNT_STYLE_REMPOS, TRUE))
read_window_positions(wm);
- g_timeout_add(IDLE_CHECK_INTERVAL * 1000, check_idle, NULL);
+ g_timeout_add_seconds(IDLE_CHECK_INTERVAL, check_idle, NULL);
time(&last_active_time);
gnt_wm_switch_workspace(wm, 0);
}
@@ -1101,8 +1112,8 @@ refresh_screen(GntBindable *bindable, GList *null)
g_hash_table_foreach(wm->nodes, (GHFunc)refresh_node, GINT_TO_POINTER(TRUE));
g_signal_emit(wm, signals[SIG_TERMINAL_REFRESH], 0);
- update_screen(wm);
gnt_ws_draw_taskbar(wm->cws, TRUE);
+ update_screen(wm);
curs_set(0); /* endwin resets the cursor to normal */
return TRUE;
@@ -1872,8 +1883,8 @@ void gnt_wm_new_window(GntWM *wm, GntWidget *widget)
}
}
- update_screen(wm);
gnt_ws_draw_taskbar(wm->cws, FALSE);
+ update_screen(wm);
}
void gnt_wm_window_decorate(GntWM *wm, GntWidget *widget)
@@ -1885,6 +1896,7 @@ void gnt_wm_window_close(GntWM *wm, GntWidget *widget)
{
GntWS *s;
int pos;
+ gboolean transient = !!GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_TRANSIENT);
s = gnt_wm_widget_find_workspace(wm, widget);
@@ -1908,10 +1920,12 @@ void gnt_wm_window_close(GntWM *wm, GntWidget *widget)
if (s->ordered && wm->cws == s)
gnt_wm_raise_window(wm, s->ordered->data);
}
+ } else if (transient && wm->cws && wm->cws->ordered) {
+ gnt_wm_update_window(wm, wm->cws->ordered->data);
}
- update_screen(wm);
gnt_ws_draw_taskbar(wm->cws, FALSE);
+ update_screen(wm);
}
time_t gnt_wm_get_idle_time()
@@ -2119,7 +2133,7 @@ write_positions_to_file(GntWM *wm)
if (write_timeout) {
g_source_remove(write_timeout);
}
- write_timeout = g_timeout_add(10000, write_already, wm);
+ write_timeout = g_timeout_add_seconds(10, write_already, wm);
}
void gnt_wm_move_window(GntWM *wm, GntWidget *widget, int x, int y)
@@ -2181,8 +2195,8 @@ gnt_wm_give_focus(GntWM *wm, GntWidget *widget)
GntNode *nd = g_hash_table_lookup(wm->nodes, wm->_list.window);
top_panel(nd->panel);
}
- update_screen(wm);
gnt_ws_draw_taskbar(wm->cws, FALSE);
+ update_screen(wm);
}
void gnt_wm_update_window(GntWM *wm, GntWidget *widget)
@@ -2207,8 +2221,8 @@ void gnt_wm_update_window(GntWM *wm, GntWidget *widget)
if (ws == wm->cws || GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_TRANSIENT)) {
gnt_wm_copy_win(widget, node);
- update_screen(wm);
gnt_ws_draw_taskbar(wm->cws, FALSE);
+ update_screen(wm);
} else if (ws && ws != wm->cws && GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_URGENT)) {
if (!act || (act && !g_list_find(act, ws)))
act = g_list_prepend(act, ws);
diff --git a/finch/plugins/Makefile.am b/finch/plugins/Makefile.am
index d733357c76..0eba92207a 100644
--- a/finch/plugins/Makefile.am
+++ b/finch/plugins/Makefile.am
@@ -2,6 +2,7 @@ gntclipboard_la_LDFLAGS = -module -avoid-version
gntgf_la_LDFLAGS = -module -avoid-version
gnthistory_la_LDFLAGS = -module -avoid-version
gntlastlog_la_LDFLAGS = -module -avoid-version
+gnttinyurl_la_LDFLAGS = -module -avoid-version
grouping_la_LDFLAGS = -module -avoid-version
if PLUGINS
@@ -11,6 +12,7 @@ plugin_LTLIBRARIES = \
gntgf.la \
gnthistory.la \
gntlastlog.la \
+ gnttinyurl.la \
grouping.la
plugindir = $(libdir)/finch
@@ -19,6 +21,7 @@ gntclipboard_la_SOURCES = gntclipboard.c
gntgf_la_SOURCES = gntgf.c
gnthistory_la_SOURCES = gnthistory.c
gntlastlog_la_SOURCES = lastlog.c
+gnttinyurl_la_SOURCES = gnttinyurl.c
grouping_la_SOURCES = grouping.c
gntclipboard_la_CFLAGS = $(X11_CFLAGS)
@@ -28,6 +31,7 @@ gntclipboard_la_LIBADD = $(GLIB_LIBS) $(X11_LIBS)
gntgf_la_LIBADD = $(GLIB_LIBS) $(X11_LIBS) $(top_builddir)/finch/libgnt/libgnt.la
gnthistory_la_LIBADD = $(GLIB_LIBS)
gntlastlog_la_LIBADD = $(GLIB_LIBS)
+gnttinyurl_la_LIBADD = $(GLIB_LIBS)
grouping_la_LIBADD = $(GLIB_LIBS) $(top_builddir)/finch/libgnt/libgnt.la
endif # PLUGINS
diff --git a/finch/plugins/gnthistory.c b/finch/plugins/gnthistory.c
index 60128d491e..68303be145 100644
--- a/finch/plugins/gnthistory.c
+++ b/finch/plugins/gnthistory.c
@@ -31,6 +31,7 @@
#include "util.h"
#include "version.h"
+#include "gntconv.h"
#include "gntplugin.h"
#include "gntrequest.h"
@@ -54,6 +55,9 @@ static void historize(PurpleConversation *c)
if (convtype == PURPLE_CONV_TYPE_IM) {
GSList *buddies;
GSList *cur;
+ FinchConv *fc = FINCH_CONV(c);
+ if (fc->list && fc->list->next) /* We were already in the middle of a conversation. */
+ return;
/* If we're not logging, don't show anything.
* Otherwise, we might show a very old log. */
diff --git a/finch/plugins/gnttinyurl.c b/finch/plugins/gnttinyurl.c
new file mode 100644
index 0000000000..35e3d0f5f9
--- /dev/null
+++ b/finch/plugins/gnttinyurl.c
@@ -0,0 +1,418 @@
+/**
+ * @file gnttinyurl.c
+ *
+ * Copyright (C) 2009 Richard Nelson <wabz@whatsbeef.net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+
+#include "internal.h"
+#include <glib.h>
+
+#define PLUGIN_STATIC_NAME TinyURL
+#define PREFS_BASE "/plugins/gnt/tinyurl"
+#define PREF_LENGTH PREFS_BASE "/length"
+#define PREF_URL PREFS_BASE "/url"
+
+
+#include <conversation.h>
+#include <signals.h>
+
+#include <glib.h>
+
+#include <plugin.h>
+#include <version.h>
+#include <debug.h>
+#include <notify.h>
+
+#include <gntconv.h>
+
+#include <gntplugin.h>
+#include <gnttextview.h>
+
+static int tag_num = 0;
+
+typedef struct
+{
+ PurpleConversation *conv;
+ gchar *tag;
+ int num;
+} CbInfo;
+
+/* 3 functions from util.c */
+static gboolean
+badchar(char c)
+{
+ switch (c) {
+ case ' ':
+ case ',':
+ case '\0':
+ case '\n':
+ case '\r':
+ case '<':
+ case '>':
+ case '"':
+ case '\'':
+ return TRUE;
+ default:
+ return FALSE;
+ }
+}
+
+static gboolean
+badentity(const char *c)
+{
+ if (!g_ascii_strncasecmp(c, "&lt;", 4) ||
+ !g_ascii_strncasecmp(c, "&gt;", 4) ||
+ !g_ascii_strncasecmp(c, "&quot;", 6)) {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static GList *extract_urls(char *text) {
+ const char *t, *c, *q = NULL;
+ char *url_buf;
+ GList *ret = NULL;
+ gboolean inside_html = FALSE;
+ int inside_paren = 0;
+ c = text;
+ while (*c) {
+ if (*c == '(' && !inside_html) {
+ inside_paren++;
+ c++;
+ }
+ if (inside_html) {
+ if (*c == '>') {
+ inside_html = FALSE;
+ } else if (!q && (*c == '\"' || *c == '\'')) {
+ q = c;
+ } else if(q) {
+ if(*c == *q)
+ q = NULL;
+ }
+ } else if (*c == '<') {
+ inside_html = TRUE;
+ if (!g_ascii_strncasecmp(c, "<A", 2)) {
+ while (1) {
+ if (*c == '>') {
+ inside_html = FALSE;
+ break;
+ }
+ c++;
+ if (!(*c))
+ break;
+ }
+ }
+ } else if ((*c=='h') && (!g_ascii_strncasecmp(c, "http://", 7) ||
+ (!g_ascii_strncasecmp(c, "https://", 8)))) {
+ t = c;
+ while (1) {
+ if (badchar(*t) || badentity(t)) {
+
+ if ((!g_ascii_strncasecmp(c, "http://", 7) && (t - c == 7)) ||
+ (!g_ascii_strncasecmp(c, "https://", 8) && (t - c == 8))) {
+ break;
+ }
+
+ if (*(t) == ',' && (*(t + 1) != ' ')) {
+ t++;
+ continue;
+ }
+
+ if (*(t - 1) == '.')
+ t--;
+ if ((*(t - 1) == ')' && (inside_paren > 0))) {
+ t--;
+ }
+
+ url_buf = g_strndup(c, t - c);
+ if (!g_list_find_custom(ret, url_buf, (GCompareFunc)strcmp)) {
+ purple_debug_info("TinyURL", "Added URL %s\n", url_buf);
+ ret = g_list_append(ret, g_strdup(url_buf));
+ }
+ c = t;
+ break;
+ }
+ t++;
+
+ }
+ } else if (!g_ascii_strncasecmp(c, "www.", 4) && (c == text || badchar(c[-1]) || badentity(c-1))) {
+ if (c[4] != '.') {
+ t = c;
+ while (1) {
+ if (badchar(*t) || badentity(t)) {
+ if (t - c == 4) {
+ break;
+ }
+
+ if (*(t) == ',' && (*(t + 1) != ' ')) {
+ t++;
+ continue;
+ }
+
+ if (*(t - 1) == '.')
+ t--;
+ if ((*(t - 1) == ')' && (inside_paren > 0))) {
+ t--;
+ }
+ url_buf = g_strndup(c, t - c);
+ if (!g_list_find_custom(ret, url_buf, (GCompareFunc)strcmp)) {
+ purple_debug_info("TinyURL", "Added URL %s\n", url_buf);
+ ret = g_list_append(ret, url_buf);
+ }
+ c = t;
+ break;
+ }
+ t++;
+ }
+ }
+ }
+ if (*c == ')' && !inside_html) {
+ inside_paren--;
+ c++;
+ }
+ if (*c == 0)
+ break;
+ c++;
+ }
+ return ret;
+}
+
+static void url_fetched(PurpleUtilFetchUrlData *url_data, gpointer cb_data,
+ const gchar *url_text, gsize len, const gchar *error_message)
+{
+ CbInfo *data = (CbInfo *)cb_data;
+ PurpleConversation *conv = data->conv;
+ GList *convs = purple_get_conversations();
+ /* ensure the conversation still exists */
+ for (; convs; convs = convs->next) {
+ if ((PurpleConversation *)(convs->data) == conv) {
+ FinchConv *fconv = FINCH_CONV(conv);
+ gchar *str = g_strdup_printf("[%d] %s", data->num, url_text);
+ GntTextView *tv = GNT_TEXT_VIEW(fconv->tv);
+ gnt_text_view_tag_change(tv, data->tag, str, FALSE);
+ g_free(str);
+ g_free(data->tag);
+ return;
+ }
+ }
+ g_free(data->tag);
+ purple_debug_info("TinyURL", "Conversation no longer exists... :(\n");
+}
+
+static void free_urls(gpointer data, gpointer null)
+{
+ g_free(data);
+}
+
+static gboolean receiving_msg(PurpleAccount *account, char **sender, char **message,
+ PurpleConversation *conv, PurpleMessageFlags *flags) {
+ GString *t;
+ GList *iter, *urls;
+ int c = 0;
+
+ if (!(*flags & PURPLE_MESSAGE_RECV) || *flags & PURPLE_MESSAGE_INVISIBLE)
+ return FALSE;
+
+ urls = purple_conversation_get_data(conv, "TinyURLs");
+ if (urls != NULL) /* message was cancelled somewhere? Reset. */
+ g_list_foreach(urls, free_urls, NULL);
+ g_list_free(urls);
+ urls = extract_urls(*message);
+ if (!urls)
+ return FALSE;
+
+ t = g_string_new(*message);
+ g_free(*message);
+ for (iter = urls; iter; iter = iter->next) {
+ if (g_utf8_strlen((char *)iter->data, -1) >= purple_prefs_get_int(PREF_LENGTH)) {
+ int pos, x = 0;
+ gchar *j, *s, *str, *orig;
+ glong len = g_utf8_strlen(iter->data, -1);
+ s = g_strdup(t->str);
+ orig = s;
+ str = g_strdup_printf("[%d]", ++c);
+ while ((j = strstr(s, iter->data))) { /* replace all occurrences */
+ pos = j - orig + (x++ * 3);
+ s = j + len;
+ t = g_string_insert(t, pos + len, str);
+ if (*s == '\0') break;
+ }
+ g_free(orig);
+ g_free(str);
+ continue;
+ } else {
+ if (iter->prev) {
+ iter = iter->prev;
+ g_free(iter->next->data);
+ urls = g_list_delete_link(urls, iter->next);
+ } else {
+ g_free(iter->data);
+ g_list_free(urls);
+ urls = NULL;
+ }
+ }
+ }
+ *message = t->str;
+ g_string_free(t, FALSE);
+ if (conv == NULL)
+ conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, *sender);
+ purple_conversation_set_data(conv, "TinyURLs", urls);
+ return FALSE;
+}
+
+static void received_msg(PurpleAccount *account, char *sender, char *message,
+ PurpleConversation *conv, PurpleMessageFlags flags) {
+ int c;
+ GList *urls, *iter;
+ FinchConv *fconv = FINCH_CONV(conv);
+ GntTextView *tv = GNT_TEXT_VIEW(fconv->tv);
+
+ urls = purple_conversation_get_data(conv, "TinyURLs");
+ if (!(flags & PURPLE_MESSAGE_RECV) || urls == NULL)
+ return;
+
+ for (iter = urls, c = 0; iter; iter = iter->next) {
+ int i;
+ CbInfo *cbdata;
+ gchar *url, *str, *tmp;
+ cbdata = g_new(CbInfo, 1);
+ cbdata->num = ++c;
+ cbdata->tag = g_strdup_printf("%s%d", "tiny_", tag_num++);
+ cbdata->conv = conv;
+ tmp = purple_unescape_html((char *)iter->data);
+ if (g_ascii_strncasecmp(tmp, "http://", 7) && g_ascii_strncasecmp(tmp, "https://", 8)) {
+ url = g_strdup_printf("%shttp%%3A%%2F%%2F%s", purple_prefs_get_string(PREF_URL), purple_url_encode(tmp));
+ } else {
+ url = g_strdup_printf("%s%s", purple_prefs_get_string(PREF_URL), purple_url_encode(tmp));
+ }
+ g_free(tmp);
+ purple_util_fetch_url(url, TRUE, "finch", FALSE, url_fetched, cbdata);
+ i = gnt_text_view_get_lines_below(tv);
+ str = g_strdup_printf(_("\nFetching TinyURL..."));
+ gnt_text_view_append_text_with_tag((tv), str, GNT_TEXT_FLAG_DIM, cbdata->tag);
+ g_free(str);
+ if (i == 0)
+ gnt_text_view_scroll(tv, 0);
+ g_free(iter->data);
+ g_free(url);
+ }
+ g_list_free(urls);
+ purple_conversation_set_data(conv, "TinyURLs", NULL);
+}
+
+static void
+free_conv_urls(PurpleConversation *conv)
+{
+ GList *urls = purple_conversation_get_data(conv, "TinyURLs");
+ if (urls)
+ g_list_foreach(urls, free_urls, NULL);
+ g_list_free(urls);
+}
+
+static gboolean
+plugin_load(PurplePlugin *plugin) {
+ purple_signal_connect(purple_conversations_get_handle(),
+ "wrote-im-msg",
+ plugin, PURPLE_CALLBACK(received_msg), NULL);
+ purple_signal_connect(purple_conversations_get_handle(),
+ "wrote-chat-msg",
+ plugin, PURPLE_CALLBACK(received_msg), NULL);
+ purple_signal_connect(purple_conversations_get_handle(),
+ "receiving-im-msg",
+ plugin, PURPLE_CALLBACK(receiving_msg), NULL);
+ purple_signal_connect(purple_conversations_get_handle(),
+ "receiving-chat-msg",
+ plugin, PURPLE_CALLBACK(receiving_msg), NULL);
+ purple_signal_connect(purple_conversations_get_handle(),
+ "deleting-conversation",
+ plugin, PURPLE_CALLBACK(free_conv_urls), NULL);
+
+ return TRUE;
+}
+
+static PurplePluginPrefFrame *
+get_plugin_pref_frame(PurplePlugin *plugin) {
+
+ PurplePluginPrefFrame *frame;
+ PurplePluginPref *pref;
+
+ frame = purple_plugin_pref_frame_new();
+
+ pref = purple_plugin_pref_new_with_name(PREF_LENGTH);
+ purple_plugin_pref_set_label(pref, _("Only create TinyURL for urls"
+ " of this length or greater"));
+ purple_plugin_pref_frame_add(frame, pref);
+ pref = purple_plugin_pref_new_with_name(PREF_URL);
+ purple_plugin_pref_set_label(pref, _("TinyURL (or other) address prefix"));
+ purple_plugin_pref_frame_add(frame, pref);
+
+ return frame;
+}
+
+static PurplePluginUiInfo prefs_info = {
+ get_plugin_pref_frame,
+ 0, /* page_num (Reserved) */
+ NULL, /* frame (Reserved) */
+
+ /* padding */
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static PurplePluginInfo info =
+{
+ PURPLE_PLUGIN_MAGIC,
+ PURPLE_MAJOR_VERSION,
+ PURPLE_MINOR_VERSION,
+ PURPLE_PLUGIN_STANDARD,
+ FINCH_PLUGIN_TYPE,
+ 0,
+ NULL,
+ PURPLE_PRIORITY_DEFAULT,
+ "TinyURL",
+ N_("TinyURL"),
+ DISPLAY_VERSION,
+ N_("TinyURL plugin"),
+ N_("When receiving a message with URL(s), TinyURL for easier copying"),
+ "Richard Nelson <wabz@whatsbeef.net>",
+ PURPLE_WEBSITE,
+ plugin_load,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ &prefs_info, /**< prefs_info */
+ NULL,
+
+ /* padding */
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static void
+init_plugin(PurplePlugin *plugin) {
+ purple_prefs_add_none(PREFS_BASE);
+ purple_prefs_add_int(PREF_LENGTH, 30);
+ purple_prefs_add_string(PREF_URL, "http://tinyurl.com/api-create.php?url=");
+}
+
+PURPLE_INIT_PLUGIN(PLUGIN_STATIC_NAME, init_plugin, info)
diff --git a/finch/plugins/grouping.c b/finch/plugins/grouping.c
index 1c959635b8..cc40841207 100644
--- a/finch/plugins/grouping.c
+++ b/finch/plugins/grouping.c
@@ -87,7 +87,7 @@ static gpointer on_offline_find_parent(PurpleBlistNode *node)
switch (purple_blist_node_get_type(node)) {
case PURPLE_BLIST_CONTACT_NODE:
- node = (PurpleBlistNode*)purple_contact_get_priority_buddy((PurpleContact*)node);
+ node = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(node)));
ret = PURPLE_BUDDY_IS_ONLINE((PurpleBuddy*)node) ? &online : &offline;
break;
case PURPLE_BLIST_BUDDY_NODE:
diff --git a/fix-casts.sh b/fix-casts.sh
new file mode 100755
index 0000000000..6556f6935e
--- /dev/null
+++ b/fix-casts.sh
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+if [ $# -eq 0 ]; then
+ echo "Usage: `basename "$0"` PurpleFoo..."
+ echo
+ echo "This script searches the *current working directory* and replaces casts"
+ echo "with GObject-style type checking and casting macros."
+ echo 'For example, "(PurpleBuddy *)b" becomes "PURPLE_BUDDY(b)".'
+ exit 0
+fi
+
+for struct in $* ; do
+ cast=`echo $struct | sed "s|[A-Z]|_\0|g" | tr "a-z" "A-Z" | sed "s|^_||"`
+ for file in `grep -rl "([[:space:]]*$struct[[:space:]]*\*[[:space:]]*)" . --include=*.c --exclude=purple-client-bindings.c` ; do
+ sed -i "s|([[:space:]]*$struct[[:space:]]*\*[[:space:]]*)[[:space:]]*(|$cast(|g" $file
+ sed -i "s|([[:space:]]*$struct[[:space:]]*\*[[:space:]]*)[[:space:]]*\([^(][^,);]*\)|$cast(\1)|g" $file
+ done
+done
diff --git a/libpurple/Makefile.am b/libpurple/Makefile.am
index 8a11b0098d..da4008b9a3 100644
--- a/libpurple/Makefile.am
+++ b/libpurple/Makefile.am
@@ -1,6 +1,7 @@
EXTRA_DIST = \
dbus-analyze-functions.py \
dbus-analyze-types.py \
+ marshallers.list \
purple-notifications-example \
purple-remote \
purple-send \
@@ -51,6 +52,9 @@ purple_coresources = \
idle.c \
imgstore.c \
log.c \
+ marshallers.c \
+ media.c \
+ mediamanager.c \
mime.c \
nat-pmp.c \
network.c \
@@ -75,7 +79,12 @@ purple_coresources = \
stringref.c \
stun.c \
sound.c \
+ sound-theme.c \
+ sound-theme-loader.c \
sslconn.c \
+ theme.c \
+ theme-loader.c \
+ theme-manager.c \
upnp.c \
util.c \
value.c \
@@ -104,6 +113,9 @@ purple_coreheaders = \
idle.h \
imgstore.h \
log.h \
+ media.h \
+ media-gst.h \
+ mediamanager.h \
mime.h \
nat-pmp.h \
network.h \
@@ -128,14 +140,28 @@ purple_coreheaders = \
stringref.h \
stun.h \
sound.h \
+ sound-theme.h \
+ sound-theme-loader.h \
sslconn.h \
+ theme.h \
+ theme-loader.h \
+ theme-manager.h \
upnp.h \
util.h \
value.h \
xmlnode.h \
whiteboard.h
-purple_builtheaders = purple.h version.h
+purple_builtheaders = purple.h version.h marshallers.h
+
+marshallers.h: marshallers.list
+ @echo "Generating marshallers.h"
+ $(GLIB_GENMARSHAL) --prefix=purple_smarshal $(srcdir)/marshallers.list --header > marshallers.h
+
+marshallers.c: marshallers.list marshallers.h
+ @echo "Generating marshallers.c"
+ echo "#include \"marshallers.h\"" > marshallers.c
+ $(GLIB_GENMARSHAL) --prefix=purple_smarshal $(srcdir)/marshallers.list --body >> marshallers.c
if ENABLE_DBUS
@@ -145,6 +171,8 @@ CLEANFILES = \
dbus-client-binding.h \
dbus-types.c \
dbus-types.h \
+ marshallers.c \
+ marshallers.h \
purple-client-bindings.c \
purple-client-bindings.h \
purple.service
@@ -215,6 +243,8 @@ BUILT_SOURCES = $(purple_builtheaders) \
dbus-types.c \
dbus-types.h \
dbus-bindings.c \
+ marshallers.c \
+ marshallers.h \
purple-client-bindings.c \
purple-client-bindings.h
@@ -248,6 +278,9 @@ libpurple_la_LIBADD = \
$(LIBXML_LIBS) \
$(NETWORKMANAGER_LIBS) \
$(INTLLIBS) \
+ $(FARSIGHT_LIBS) \
+ $(GSTREAMER_LIBS) \
+ $(GSTINTERFACES_LIBS) \
-lm
AM_CPPFLAGS = \
@@ -260,6 +293,9 @@ AM_CPPFLAGS = \
$(DEBUG_CFLAGS) \
$(DBUS_CFLAGS) \
$(LIBXML_CFLAGS) \
+ $(FARSIGHT_CFLAGS) \
+ $(GSTREAMER_CFLAGS) \
+ $(GSTINTERFACES_CFLAGS) \
$(NETWORKMANAGER_CFLAGS)
# INSTALL_SSL_CERTIFICATES is true when SSL_CERTIFICATES_DIR is empty.
diff --git a/libpurple/Makefile.mingw b/libpurple/Makefile.mingw
index 25fe830daf..8b2b550ca7 100644
--- a/libpurple/Makefile.mingw
+++ b/libpurple/Makefile.mingw
@@ -1,7 +1,7 @@
#
# Makefile.mingw
#
-# Description: Makefile for win32 (mingw) version of LibPurple
+# Description: Makefile for win32 (mingw) version of libpurple
#
PIDGIN_TREE_TOP := ..
@@ -35,6 +35,7 @@ C_SRC = \
buddyicon.c \
certificate.c \
cipher.c \
+ circbuffer.c \
cmds.c \
connection.c \
conversation.c \
@@ -44,10 +45,11 @@ C_SRC = \
dnssrv.c \
eventloop.c \
ft.c \
- circbuffer.c \
idle.c \
imgstore.c \
log.c \
+ media.c \
+ mediamanager.c \
mime.c \
nat-pmp.c \
network.c \
@@ -66,17 +68,22 @@ C_SRC = \
server.c \
signals.c \
smiley.c \
+ sound-theme-loader.c \
+ sound-theme.c \
sound.c \
sslconn.c \
status.c \
stringref.c \
stun.c \
+ theme-loader.c \
+ theme-manager.c \
+ theme.c \
upnp.c \
util.c \
value.c \
version.c \
- xmlnode.c \
whiteboard.c \
+ xmlnode.c \
win32/giowin32.c \
win32/libc_interface.c \
win32/win32dep.c
diff --git a/libpurple/account.c b/libpurple/account.c
index eaf70344b4..f0a33b6db4 100644
--- a/libpurple/account.c
+++ b/libpurple/account.c
@@ -99,7 +99,7 @@ setting_to_xmlnode(gpointer key, gpointer value, gpointer user_data)
const char *name;
PurpleAccountSetting *setting;
xmlnode *node, *child;
- char buf[20];
+ char buf[21];
name = (const char *)key;
setting = (PurpleAccountSetting *)value;
@@ -110,7 +110,7 @@ setting_to_xmlnode(gpointer key, gpointer value, gpointer user_data)
if (setting->type == PURPLE_PREF_INT) {
xmlnode_set_attrib(child, "type", "int");
- snprintf(buf, sizeof(buf), "%d", setting->value.integer);
+ g_snprintf(buf, sizeof(buf), "%d", setting->value.integer);
xmlnode_insert_data(child, buf, -1);
}
else if (setting->type == PURPLE_PREF_STRING && setting->value.string != NULL) {
@@ -119,7 +119,7 @@ setting_to_xmlnode(gpointer key, gpointer value, gpointer user_data)
}
else if (setting->type == PURPLE_PREF_BOOLEAN) {
xmlnode_set_attrib(child, "type", "bool");
- snprintf(buf, sizeof(buf), "%d", setting->value.boolean);
+ g_snprintf(buf, sizeof(buf), "%d", setting->value.boolean);
xmlnode_insert_data(child, buf, -1);
}
}
@@ -178,9 +178,7 @@ status_attr_to_xmlnode(const PurpleStatus *status, const PurpleStatusType *type,
{
const char *string_value = purple_value_get_string(attr_value);
const char *default_string_value = purple_value_get_string(default_value);
- if (((string_value == NULL) && (default_string_value == NULL)) ||
- ((string_value != NULL) && (default_string_value != NULL) &&
- !strcmp(string_value, default_string_value)))
+ if (purple_strequal(string_value, default_string_value))
return NULL;
value = g_strdup(purple_value_get_string(attr_value));
}
@@ -283,7 +281,7 @@ proxy_settings_to_xmlnode(PurpleProxyInfo *proxy_info)
PurpleProxyType proxy_type;
const char *value;
int int_value;
- char buf[20];
+ char buf[21];
proxy_type = purple_proxy_info_get_type(proxy_info);
@@ -306,7 +304,7 @@ proxy_settings_to_xmlnode(PurpleProxyInfo *proxy_info)
if ((int_value = purple_proxy_info_get_port(proxy_info)) != 0)
{
- snprintf(buf, sizeof(buf), "%d", int_value);
+ g_snprintf(buf, sizeof(buf), "%d", int_value);
child = xmlnode_new_child(node, "port");
xmlnode_insert_data(child, buf, -1);
}
@@ -344,7 +342,7 @@ current_error_to_xmlnode(PurpleConnectionErrorInfo *err)
return node;
child = xmlnode_new_child(node, "type");
- snprintf(type_str, sizeof(type_str), "%u", err->type);
+ g_snprintf(type_str, sizeof(type_str), "%u", err->type);
xmlnode_insert_data(child, type_str, -1);
child = xmlnode_new_child(node, "description");
@@ -511,11 +509,11 @@ parse_settings(xmlnode *node, PurpleAccount *account)
/* Ignore this setting */
continue;
- if (!strcmp(str_type, "string"))
+ if (purple_strequal(str_type, "string"))
type = PURPLE_PREF_STRING;
- else if (!strcmp(str_type, "int"))
+ else if (purple_strequal(str_type, "int"))
type = PURPLE_PREF_INT;
- else if (!strcmp(str_type, "bool"))
+ else if (purple_strequal(str_type, "bool"))
type = PURPLE_PREF_BOOLEAN;
else
/* Ignore this setting */
@@ -660,17 +658,17 @@ parse_proxy_info(xmlnode *node, PurpleAccount *account)
child = xmlnode_get_child(node, "type");
if ((child != NULL) && ((data = xmlnode_get_data(child)) != NULL))
{
- if (!strcmp(data, "global"))
+ if (purple_strequal(data, "global"))
purple_proxy_info_set_type(proxy_info, PURPLE_PROXY_USE_GLOBAL);
- else if (!strcmp(data, "none"))
+ else if (purple_strequal(data, "none"))
purple_proxy_info_set_type(proxy_info, PURPLE_PROXY_NONE);
- else if (!strcmp(data, "http"))
+ else if (purple_strequal(data, "http"))
purple_proxy_info_set_type(proxy_info, PURPLE_PROXY_HTTP);
- else if (!strcmp(data, "socks4"))
+ else if (purple_strequal(data, "socks4"))
purple_proxy_info_set_type(proxy_info, PURPLE_PROXY_SOCKS4);
- else if (!strcmp(data, "socks5"))
+ else if (purple_strequal(data, "socks5"))
purple_proxy_info_set_type(proxy_info, PURPLE_PROXY_SOCKS5);
- else if (!strcmp(data, "envvar"))
+ else if (purple_strequal(data, "envvar"))
purple_proxy_info_set_type(proxy_info, PURPLE_PROXY_USE_ENVVAR);
else
{
@@ -956,6 +954,8 @@ purple_account_new(const char *username, const char *protocol_id)
/* 0 is not a valid privacy setting */
account->perm_deny = PURPLE_PRIVACY_ALLOW_ALL;
+ purple_signal_emit(purple_accounts_get_handle(), "account-created", account);
+
prpl = purple_find_prpl(protocol_id);
if (prpl == NULL)
@@ -989,6 +989,7 @@ purple_account_destroy(PurpleAccount *account)
g_return_if_fail(account != NULL);
purple_debug_info("account", "Destroying account %p\n", account);
+ purple_signal_emit(purple_accounts_get_handle(), "account-destroying", account);
for (l = purple_get_conversations(); l != NULL; l = l->next)
{
@@ -2027,7 +2028,7 @@ purple_account_get_status_type(const PurpleAccount *account, const char *id)
{
PurpleStatusType *status_type = (PurpleStatusType *)l->data;
- if (!strcmp(purple_status_type_get_id(status_type), id))
+ if (purple_strequal(purple_status_type_get_id(status_type), id))
return status_type;
}
@@ -2238,9 +2239,9 @@ purple_account_add_buddy(PurpleAccount *account, PurpleBuddy *buddy)
PurplePluginProtocolInfo *prpl_info = NULL;
PurpleConnection *gc = purple_account_get_connection(account);
PurplePlugin *prpl = NULL;
-
+
if (gc != NULL)
- prpl = purple_connection_get_prpl(gc);
+ prpl = purple_connection_get_prpl(gc);
if (prpl != NULL)
prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
@@ -2255,20 +2256,20 @@ purple_account_add_buddies(PurpleAccount *account, GList *buddies)
PurplePluginProtocolInfo *prpl_info = NULL;
PurpleConnection *gc = purple_account_get_connection(account);
PurplePlugin *prpl = NULL;
-
+
if (gc != NULL)
- prpl = purple_connection_get_prpl(gc);
+ prpl = purple_connection_get_prpl(gc);
if (prpl != NULL)
prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
-
+
if (prpl_info) {
GList *cur, *groups = NULL;
/* Make a list of what group each buddy is in */
for (cur = buddies; cur != NULL; cur = cur->next) {
- PurpleBlistNode *node = cur->data;
- groups = g_list_append(groups, node->parent->parent);
+ PurpleBuddy *buddy = cur->data;
+ groups = g_list_append(groups, purple_buddy_get_group(buddy));
}
if (prpl_info->add_buddies != NULL)
@@ -2294,13 +2295,13 @@ purple_account_remove_buddy(PurpleAccount *account, PurpleBuddy *buddy,
PurplePluginProtocolInfo *prpl_info = NULL;
PurpleConnection *gc = purple_account_get_connection(account);
PurplePlugin *prpl = NULL;
-
+
if (gc != NULL)
- prpl = purple_connection_get_prpl(gc);
+ prpl = purple_connection_get_prpl(gc);
if (prpl != NULL)
prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
-
+
if (prpl_info && prpl_info->remove_buddy)
prpl_info->remove_buddy(gc, buddy, group);
}
@@ -2311,13 +2312,13 @@ purple_account_remove_buddies(PurpleAccount *account, GList *buddies, GList *gro
PurplePluginProtocolInfo *prpl_info = NULL;
PurpleConnection *gc = purple_account_get_connection(account);
PurplePlugin *prpl = NULL;
-
+
if (gc != NULL)
- prpl = purple_connection_get_prpl(gc);
+ prpl = purple_connection_get_prpl(gc);
if (prpl != NULL)
prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
-
+
if (prpl_info) {
if (prpl_info->remove_buddies)
prpl_info->remove_buddies(gc, buddies, groups);
@@ -2339,9 +2340,9 @@ purple_account_remove_group(PurpleAccount *account, PurpleGroup *group)
PurplePluginProtocolInfo *prpl_info = NULL;
PurpleConnection *gc = purple_account_get_connection(account);
PurplePlugin *prpl = NULL;
-
+
if (gc != NULL)
- prpl = purple_connection_get_prpl(gc);
+ prpl = purple_connection_get_prpl(gc);
if (prpl != NULL)
prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
@@ -2357,11 +2358,11 @@ purple_account_change_password(PurpleAccount *account, const char *orig_pw,
PurplePluginProtocolInfo *prpl_info = NULL;
PurpleConnection *gc = purple_account_get_connection(account);
PurplePlugin *prpl = NULL;
-
+
purple_account_set_password(account, new_pw);
-
+
if (gc != NULL)
- prpl = purple_connection_get_prpl(gc);
+ prpl = purple_connection_get_prpl(gc);
if (prpl != NULL)
prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
@@ -2375,15 +2376,15 @@ gboolean purple_account_supports_offline_message(PurpleAccount *account, PurpleB
PurpleConnection *gc;
PurplePluginProtocolInfo *prpl_info = NULL;
PurplePlugin *prpl = NULL;
-
+
g_return_val_if_fail(account, FALSE);
g_return_val_if_fail(buddy, FALSE);
gc = purple_account_get_connection(account);
if (gc == NULL)
return FALSE;
-
- prpl = purple_connection_get_prpl(gc);
+
+ prpl = purple_connection_get_prpl(gc);
if (prpl != NULL)
prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
@@ -2518,23 +2519,26 @@ purple_accounts_delete(PurpleAccount *account)
purple_accounts_remove(account);
/* Remove this account's buddies */
- for (gnode = purple_blist_get_root(); gnode != NULL; gnode = gnode->next) {
+ for (gnode = purple_blist_get_root();
+ gnode != NULL;
+ gnode = purple_blist_node_get_sibling_next(gnode))
+ {
if (!PURPLE_BLIST_NODE_IS_GROUP(gnode))
continue;
- cnode = gnode->child;
+ cnode = purple_blist_node_get_first_child(gnode);
while (cnode) {
- PurpleBlistNode *cnode_next = cnode->next;
+ PurpleBlistNode *cnode_next = purple_blist_node_get_sibling_next(cnode);
if(PURPLE_BLIST_NODE_IS_CONTACT(cnode)) {
- bnode = cnode->child;
+ bnode = purple_blist_node_get_first_child(cnode);
while (bnode) {
- PurpleBlistNode *bnode_next = bnode->next;
+ PurpleBlistNode *bnode_next = purple_blist_node_get_sibling_next(bnode);
if (PURPLE_BLIST_NODE_IS_BUDDY(bnode)) {
PurpleBuddy *b = (PurpleBuddy *)bnode;
- if (b->account == account)
+ if (purple_buddy_get_account(b) == account)
purple_blist_remove_buddy(b);
}
bnode = bnode_next;
@@ -2542,7 +2546,7 @@ purple_accounts_delete(PurpleAccount *account)
} else if (PURPLE_BLIST_NODE_IS_CHAT(cnode)) {
PurpleChat *c = (PurpleChat *)cnode;
- if (c->account == account)
+ if (purple_chat_get_account(c) == account)
purple_blist_remove_chat(c);
}
cnode = cnode_next;
@@ -2633,11 +2637,11 @@ purple_accounts_find(const char *name, const char *protocol_id)
for (l = purple_accounts_get_all(); l != NULL; l = l->next) {
account = (PurpleAccount *)l->data;
- if (protocol_id && strcmp(account->protocol_id, protocol_id))
+ if (protocol_id && !purple_strequal(account->protocol_id, protocol_id))
continue;
who = g_strdup(purple_normalize(account, name));
- if (!strcmp(purple_normalize(account, purple_account_get_username(account)), who)) {
+ if (purple_strequal(purple_normalize(account, purple_account_get_username(account)), who)) {
g_free(who);
return account;
}
@@ -2724,6 +2728,14 @@ purple_accounts_init(void)
PURPLE_SUBTYPE_ACCOUNT),
purple_value_new(PURPLE_TYPE_STRING));
+ purple_signal_register(handle, "account-created",
+ purple_marshal_VOID__POINTER, NULL, 1,
+ purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_ACCOUNT));
+
+ purple_signal_register(handle, "account-destroying",
+ purple_marshal_VOID__POINTER, NULL, 1,
+ purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_ACCOUNT));
+
purple_signal_register(handle, "account-added",
purple_marshal_VOID__POINTER, NULL, 1,
purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_ACCOUNT));
@@ -2741,6 +2753,10 @@ purple_accounts_init(void)
purple_value_new(PURPLE_TYPE_SUBTYPE,
PURPLE_SUBTYPE_STATUS));
+ purple_signal_register(handle, "account-actions-changed",
+ purple_marshal_VOID__POINTER, NULL, 1,
+ purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_ACCOUNT));
+
purple_signal_register(handle, "account-alias-changed",
purple_marshal_VOID__POINTER_POINTER, NULL, 2,
purple_value_new(PURPLE_TYPE_SUBTYPE,
@@ -2796,4 +2812,7 @@ purple_accounts_uninit(void)
purple_signals_disconnect_by_handle(handle);
purple_signals_unregister_by_instance(handle);
+
+ for (; accounts; accounts = g_list_delete_link(accounts, accounts))
+ purple_account_destroy(accounts->data);
}
diff --git a/libpurple/account.h b/libpurple/account.h
index 89f55bed69..4d647546a9 100644
--- a/libpurple/account.h
+++ b/libpurple/account.h
@@ -42,6 +42,7 @@ typedef void (*PurpleAccountUnregistrationCb)(PurpleAccount *account, gboolean s
#include "connection.h"
#include "log.h"
+#include "privacy.h"
#include "proxy.h"
#include "prpl.h"
#include "status.h"
@@ -141,7 +142,7 @@ struct _PurpleAccount
*/
GSList *permit; /**< Permit list. */
GSList *deny; /**< Deny list. */
- int perm_deny; /**< The permit/deny setting. */
+ PurplePrivacyType perm_deny; /**< The permit/deny setting. */
GList *status_types; /**< Status types. */
@@ -260,7 +261,7 @@ void purple_account_request_add(PurpleAccount *account, const char *remote_user,
* Notifies the user that a remote user has wants to add the local user
* to his or her buddy list and requires authorization to do so.
*
- * This will present a dialog informing the user of this and ask if the
+ * This will present a dialog informing the user of this and ask if the
* user authorizes or denies the remote user from adding him.
*
* @param account The account that was added
diff --git a/libpurple/blist.c b/libpurple/blist.c
index b5bf889b7a..e9d9d9c18a 100644
--- a/libpurple/blist.c
+++ b/libpurple/blist.c
@@ -40,6 +40,14 @@
static PurpleBlistUiOps *blist_ui_ops = NULL;
static PurpleBuddyList *purplebuddylist = NULL;
+
+/**
+ * A hash table used for efficient lookups of buddies by name.
+ * PurpleAccount* => GHashTable*, with the inner hash table being
+ * struct _purple_hbuddy => PurpleBuddy*
+ */
+static GHashTable *buddies_cache = NULL;
+
static guint save_timer = 0;
static gboolean blist_loaded = FALSE;
@@ -82,7 +90,7 @@ static guint _purple_blist_hbuddy_hash(struct _purple_hbuddy *hb)
static guint _purple_blist_hbuddy_equal(struct _purple_hbuddy *hb1, struct _purple_hbuddy *hb2)
{
- return ((!strcmp(hb1->name, hb2->name)) && hb1->account == hb2->account && hb1->group == hb2->group);
+ return (purple_strequal(hb1->name, hb2->name) && hb1->account == hb2->account && hb1->group == hb2->group);
}
static void _purple_blist_hbuddy_free_key(struct _purple_hbuddy *hb)
@@ -91,6 +99,21 @@ static void _purple_blist_hbuddy_free_key(struct _purple_hbuddy *hb)
g_free(hb);
}
+static void
+purple_blist_buddies_cache_add_account(PurpleAccount *account)
+{
+ GHashTable *account_buddies = g_hash_table_new_full((GHashFunc)_purple_blist_hbuddy_hash,
+ (GEqualFunc)_purple_blist_hbuddy_equal,
+ (GDestroyNotify)_purple_blist_hbuddy_free_key, NULL);
+ g_hash_table_insert(buddies_cache, account, account_buddies);
+}
+
+static void
+purple_blist_buddies_cache_remove_account(const PurpleAccount *account)
+{
+ g_hash_table_remove(buddies_cache, account);
+}
+
/*********************************************************************
* Writing to disk *
@@ -102,7 +125,7 @@ value_to_xmlnode(gpointer key, gpointer hvalue, gpointer user_data)
const char *name;
PurpleValue *value;
xmlnode *node, *child;
- char buf[20];
+ char buf[21];
name = (const char *)key;
value = (PurpleValue *)hvalue;
@@ -115,7 +138,7 @@ value_to_xmlnode(gpointer key, gpointer hvalue, gpointer user_data)
if (purple_value_get_type(value) == PURPLE_TYPE_INT) {
xmlnode_set_attrib(child, "type", "int");
- snprintf(buf, sizeof(buf), "%d", purple_value_get_int(value));
+ g_snprintf(buf, sizeof(buf), "%d", purple_value_get_int(value));
xmlnode_insert_data(child, buf, -1);
}
else if (purple_value_get_type(value) == PURPLE_TYPE_STRING) {
@@ -124,7 +147,7 @@ value_to_xmlnode(gpointer key, gpointer hvalue, gpointer user_data)
}
else if (purple_value_get_type(value) == PURPLE_TYPE_BOOLEAN) {
xmlnode_set_attrib(child, "type", "bool");
- snprintf(buf, sizeof(buf), "%d", purple_value_get_boolean(value));
+ g_snprintf(buf, sizeof(buf), "%d", purple_value_get_boolean(value));
xmlnode_insert_data(child, buf, -1);
}
}
@@ -280,7 +303,7 @@ accountprivacy_to_xmlnode(PurpleAccount *account)
node = xmlnode_new("account");
xmlnode_set_attrib(node, "proto", purple_account_get_protocol_id(account));
xmlnode_set_attrib(node, "name", purple_account_get_username(account));
- snprintf(buf, sizeof(buf), "%d", account->perm_deny);
+ g_snprintf(buf, sizeof(buf), "%d", account->perm_deny);
xmlnode_set_attrib(node, "mode", buf);
for (cur = account->permit; cur; cur = cur->next)
@@ -382,11 +405,11 @@ parse_setting(PurpleBlistNode *node, xmlnode *setting)
if (!value)
return;
- if (!type || !strcmp(type, "string"))
+ if (!type || purple_strequal(type, "string"))
purple_blist_node_set_string(node, name, value);
- else if (!strcmp(type, "bool"))
+ else if (purple_strequal(type, "bool"))
purple_blist_node_set_bool(node, name, atoi(value));
- else if (!strcmp(type, "int"))
+ else if (purple_strequal(type, "int"))
purple_blist_node_set_int(node, name, atoi(value));
g_free(value);
@@ -453,9 +476,9 @@ parse_contact(PurpleGroup *group, xmlnode *cnode)
for (x = cnode->child; x; x = x->next) {
if (x->type != XMLNODE_TYPE_TAG)
continue;
- if (!strcmp(x->name, "buddy"))
+ if (purple_strequal(x->name, "buddy"))
parse_buddy(group, contact, x);
- else if (!strcmp(x->name, "setting"))
+ else if (purple_strequal(x->name, "setting"))
parse_setting((PurpleBlistNode*)contact, x);
}
@@ -528,12 +551,12 @@ parse_group(xmlnode *groupnode)
for (cnode = groupnode->child; cnode; cnode = cnode->next) {
if (cnode->type != XMLNODE_TYPE_TAG)
continue;
- if (!strcmp(cnode->name, "setting"))
+ if (purple_strequal(cnode->name, "setting"))
parse_setting((PurpleBlistNode*)group, cnode);
- else if (!strcmp(cnode->name, "contact") ||
- !strcmp(cnode->name, "person"))
+ else if (purple_strequal(cnode->name, "contact") ||
+ purple_strequal(cnode->name, "person"))
parse_contact(group, cnode);
- else if (!strcmp(cnode->name, "chat"))
+ else if (purple_strequal(cnode->name, "chat"))
parse_chat(group, cnode);
}
}
@@ -590,11 +613,11 @@ purple_blist_load()
if (x->type != XMLNODE_TYPE_TAG)
continue;
- if (!strcmp(x->name, "permit")) {
+ if (purple_strequal(x->name, "permit")) {
name = xmlnode_get_data(x);
purple_privacy_permit_add(account, name, TRUE);
g_free(name);
- } else if (!strcmp(x->name, "block")) {
+ } else if (purple_strequal(x->name, "block")) {
name = xmlnode_get_data(x);
purple_privacy_deny_add(account, name, TRUE);
g_free(name);
@@ -666,6 +689,7 @@ purple_contact_compute_priority_buddy(PurpleContact *contact)
PurpleBuddyList *purple_blist_new()
{
PurpleBlistUiOps *ui_ops;
+ GList *account;
PurpleBuddyList *gbl = g_new0(PurpleBuddyList, 1);
PURPLE_DBUS_REGISTER_POINTER(gbl, PurpleBuddyList);
@@ -675,6 +699,14 @@ PurpleBuddyList *purple_blist_new()
(GEqualFunc)_purple_blist_hbuddy_equal,
(GDestroyNotify)_purple_blist_hbuddy_free_key, NULL);
+ buddies_cache = g_hash_table_new_full(g_direct_hash, g_direct_equal,
+ NULL, (GDestroyNotify)g_hash_table_destroy);
+
+ for (account = purple_accounts_get_all(); account != NULL; account = account->next)
+ {
+ purple_blist_buddies_cache_add_account(account->data);
+ }
+
if (ui_ops != NULL && ui_ops->new_list != NULL)
ui_ops->new_list(gbl);
@@ -699,6 +731,37 @@ purple_blist_get_root()
return purplebuddylist ? purplebuddylist->root : NULL;
}
+static void
+append_buddy(gpointer key, gpointer value, gpointer user_data)
+{
+ GSList **list = user_data;
+ *list = g_slist_prepend(*list, value);
+}
+
+GSList *
+purple_blist_get_buddies()
+{
+ GSList *buddies = NULL;
+
+ if (!purplebuddylist)
+ return NULL;
+
+ g_hash_table_foreach(purplebuddylist->buddies, append_buddy, &buddies);
+ return buddies;
+}
+
+void *
+purple_blist_get_ui_data()
+{
+ return purplebuddylist->ui_data;
+}
+
+void
+purple_blist_set_ui_data(void *ui_data)
+{
+ purplebuddylist->ui_data = ui_data;
+}
+
void purple_blist_show()
{
PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
@@ -774,12 +837,28 @@ PurpleBlistNode *purple_blist_node_get_sibling_prev(PurpleBlistNode *node)
return node? node->prev : NULL;
}
+void *
+purple_blist_node_get_ui_data(const PurpleBlistNode *node)
+{
+ g_return_val_if_fail(node, NULL);
+
+ return node->ui_data;
+}
+
+void
+purple_blist_node_set_ui_data(PurpleBlistNode *node, void *ui_data) {
+ g_return_if_fail(node);
+
+ node->ui_data = ui_data;
+}
+
void
purple_blist_update_buddy_status(PurpleBuddy *buddy, PurpleStatus *old_status)
{
PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
PurplePresence *presence;
PurpleStatus *status;
+ PurpleBlistNode *cnode;
g_return_if_fail(buddy != NULL);
@@ -794,16 +873,18 @@ purple_blist_update_buddy_status(PurpleBuddy *buddy, PurpleStatus *old_status)
purple_signal_emit(purple_blist_get_handle(), "buddy-signed-on", buddy);
- ((PurpleContact*)((PurpleBlistNode*)buddy)->parent)->online++;
- if (((PurpleContact*)((PurpleBlistNode*)buddy)->parent)->online == 1)
- ((PurpleGroup *)((PurpleBlistNode *)buddy)->parent->parent)->online++;
+ cnode = buddy->node.parent;
+ if (++(PURPLE_CONTACT(cnode)->online) == 1)
+ PURPLE_GROUP(cnode->parent)->online++;
} else if (!purple_status_is_online(status) &&
purple_status_is_online(old_status)) {
+
purple_blist_node_set_int(&buddy->node, "last_seen", time(NULL));
purple_signal_emit(purple_blist_get_handle(), "buddy-signed-off", buddy);
- ((PurpleContact*)((PurpleBlistNode*)buddy)->parent)->online--;
- if (((PurpleContact*)((PurpleBlistNode*)buddy)->parent)->online == 0)
- ((PurpleGroup *)((PurpleBlistNode *)buddy)->parent->parent)->online--;
+
+ cnode = buddy->node.parent;
+ if (--(PURPLE_CONTACT(cnode)->online) == 0)
+ PURPLE_GROUP(cnode->parent)->online--;
} else {
purple_signal_emit(purple_blist_get_handle(),
"buddy-status-changed", buddy, old_status,
@@ -849,7 +930,8 @@ purple_blist_update_buddy_icon(PurpleBuddy *buddy)
void purple_blist_rename_buddy(PurpleBuddy *buddy, const char *name)
{
PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
- struct _purple_hbuddy *hb;
+ struct _purple_hbuddy *hb, *hb2;
+ GHashTable *account_buddies;
g_return_if_fail(buddy != NULL);
@@ -858,11 +940,21 @@ void purple_blist_rename_buddy(PurpleBuddy *buddy, const char *name)
hb->account = buddy->account;
hb->group = ((PurpleBlistNode *)buddy)->parent->parent;
g_hash_table_remove(purplebuddylist->buddies, hb);
+
+ account_buddies = g_hash_table_lookup(buddies_cache, buddy->account);
+ g_hash_table_remove(account_buddies, hb);
g_free(hb->name);
hb->name = g_strdup(purple_normalize(buddy->account, name));
g_hash_table_replace(purplebuddylist->buddies, hb, buddy);
+ hb2 = g_new(struct _purple_hbuddy, 1);
+ hb2->name = g_strdup(hb->name);
+ hb2->account = buddy->account;
+ hb2->group = ((PurpleBlistNode *)buddy)->parent->parent;
+
+ g_hash_table_replace(account_buddies, hb2, buddy);
+
g_free(buddy->name);
buddy->name = g_strdup(name);
@@ -885,18 +977,26 @@ void purple_blist_alias_contact(PurpleContact *contact, const char *alias)
PurpleConversation *conv;
PurpleBlistNode *bnode;
char *old_alias;
+ char *new_alias = NULL;
g_return_if_fail(contact != NULL);
- if (!purple_strings_are_different(contact->alias, alias))
+ if ((alias != NULL) && (*alias != '\0'))
+ new_alias = purple_utf8_strip_unprintables(alias);
+
+ if (!purple_strings_are_different(contact->alias, new_alias)) {
+ g_free(new_alias);
return;
+ }
old_alias = contact->alias;
- if ((alias != NULL) && (*alias != '\0'))
- contact->alias = g_strdup(alias);
- else
+ if ((new_alias != NULL) && (*new_alias != '\0'))
+ contact->alias = new_alias;
+ else {
contact->alias = NULL;
+ g_free(new_alias); /* could be "\0" */
+ }
purple_blist_schedule_save();
@@ -922,18 +1022,26 @@ void purple_blist_alias_chat(PurpleChat *chat, const char *alias)
{
PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
char *old_alias;
+ char *new_alias = NULL;
g_return_if_fail(chat != NULL);
- if (!purple_strings_are_different(chat->alias, alias))
+ if ((alias != NULL) && (*alias != '\0'))
+ new_alias = purple_utf8_strip_unprintables(alias);
+
+ if (!purple_strings_are_different(chat->alias, new_alias)) {
+ g_free(new_alias);
return;
+ }
old_alias = chat->alias;
- if ((alias != NULL) && (*alias != '\0'))
- chat->alias = g_strdup(alias);
- else
+ if ((new_alias != NULL) && (*new_alias != '\0'))
+ chat->alias = new_alias;
+ else {
chat->alias = NULL;
+ g_free(new_alias); /* could be "\0" */
+ }
purple_blist_schedule_save();
@@ -950,18 +1058,26 @@ void purple_blist_alias_buddy(PurpleBuddy *buddy, const char *alias)
PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
PurpleConversation *conv;
char *old_alias;
+ char *new_alias = NULL;
g_return_if_fail(buddy != NULL);
- if (!purple_strings_are_different(buddy->alias, alias))
+ if ((alias != NULL) && (*alias != '\0'))
+ new_alias = purple_utf8_strip_unprintables(alias);
+
+ if (!purple_strings_are_different(buddy->alias, new_alias)) {
+ g_free(new_alias);
return;
+ }
old_alias = buddy->alias;
- if ((alias != NULL) && (*alias != '\0'))
+ if ((new_alias != NULL) && (*new_alias != '\0'))
buddy->alias = g_strdup(alias);
- else
+ else {
buddy->alias = NULL;
+ g_free(new_alias); /* could be "\0" */
+ }
purple_blist_schedule_save();
@@ -983,18 +1099,26 @@ void purple_blist_server_alias_buddy(PurpleBuddy *buddy, const char *alias)
PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
PurpleConversation *conv;
char *old_alias;
+ char *new_alias = NULL;
g_return_if_fail(buddy != NULL);
- if (!purple_strings_are_different(buddy->server_alias, alias))
+ if ((alias != NULL) && (*alias != '\0') && g_utf8_validate(alias, -1, NULL))
+ new_alias = purple_utf8_strip_unprintables(alias);
+
+ if (!purple_strings_are_different(buddy->server_alias, new_alias)) {
+ g_free(new_alias);
return;
+ }
old_alias = buddy->server_alias;
- if ((alias != NULL) && (*alias != '\0') && g_utf8_validate(alias, -1, NULL))
- buddy->server_alias = g_strdup(alias);
- else
+ if ((new_alias != NULL) && (*new_alias != '\0'))
+ buddy->server_alias = new_alias;
+ else {
buddy->server_alias = NULL;
+ g_free(new_alias); /* could be "\0"; */
+ }
purple_blist_schedule_save();
@@ -1014,19 +1138,24 @@ void purple_blist_server_alias_buddy(PurpleBuddy *buddy, const char *alias)
/*
* TODO: If merging, prompt the user if they want to merge.
*/
-void purple_blist_rename_group(PurpleGroup *source, const char *new_name)
+void purple_blist_rename_group(PurpleGroup *source, const char *name)
{
PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
PurpleGroup *dest;
gchar *old_name;
+ gchar *new_name;
GList *moved_buddies = NULL;
GSList *accts;
g_return_if_fail(source != NULL);
- g_return_if_fail(new_name != NULL);
+ g_return_if_fail(name != NULL);
- if (*new_name == '\0' || !strcmp(new_name, source->name))
+ new_name = purple_utf8_strip_unprintables(name);
+
+ if (*new_name == '\0' || purple_strequal(new_name, source->name)) {
+ g_free(new_name);
return;
+ }
dest = purple_find_group(new_name);
if (dest != NULL && purple_utf8_strcasecmp(source->name, dest->name) != 0) {
@@ -1068,6 +1197,7 @@ void purple_blist_rename_group(PurpleGroup *source, const char *new_name)
old_name = g_strdup(source->name);
purple_blist_remove_group(source);
source = dest;
+ g_free(new_name);
} else {
/* A simple rename */
PurpleBlistNode *cnode, *bnode;
@@ -1080,7 +1210,7 @@ void purple_blist_rename_group(PurpleGroup *source, const char *new_name)
}
old_name = source->name;
- source->name = g_strdup(new_name);
+ source->name = new_name;
}
/* Save our changes */
@@ -1092,7 +1222,7 @@ void purple_blist_rename_group(PurpleGroup *source, const char *new_name)
/* Notify all PRPLs */
/* TODO: Is this condition needed? Seems like it would always be TRUE */
- if(old_name && source && strcmp(source->name, old_name)) {
+ if(old_name && !purple_strequal(source->name, old_name)) {
for (accts = purple_group_get_accounts(source); accts; accts = g_slist_remove(accts, accts->data)) {
PurpleAccount *account = accts->data;
PurpleConnection *gc = NULL;
@@ -1101,7 +1231,7 @@ void purple_blist_rename_group(PurpleGroup *source, const char *new_name)
GList *l = NULL, *buddies = NULL;
gc = purple_account_get_connection(account);
-
+
if(gc)
prpl = purple_connection_get_prpl(gc);
@@ -1154,7 +1284,7 @@ PurpleChat *purple_chat_new(PurpleAccount *account, const char *alias, GHashTabl
chat = g_new0(PurpleChat, 1);
chat->account = account;
if ((alias != NULL) && (*alias != '\0'))
- chat->alias = g_strdup(alias);
+ chat->alias = purple_utf8_strip_unprintables(alias);
chat->components = components;
purple_blist_node_initialize_settings((PurpleBlistNode *)chat);
((PurpleBlistNode *)chat)->type = PURPLE_BLIST_CHAT_NODE;
@@ -1166,18 +1296,28 @@ PurpleChat *purple_chat_new(PurpleAccount *account, const char *alias, GHashTabl
return chat;
}
-PurpleBuddy *purple_buddy_new(PurpleAccount *account, const char *screenname, const char *alias)
+void
+purple_chat_destroy(PurpleChat *chat)
+{
+ g_hash_table_destroy(chat->components);
+ g_hash_table_destroy(chat->node.settings);
+ g_free(chat->alias);
+ PURPLE_DBUS_UNREGISTER_POINTER(chat);
+ g_free(chat);
+}
+
+PurpleBuddy *purple_buddy_new(PurpleAccount *account, const char *name, const char *alias)
{
PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
PurpleBuddy *buddy;
- g_return_val_if_fail(account != NULL, FALSE);
- g_return_val_if_fail(screenname != NULL, FALSE);
+ g_return_val_if_fail(account != NULL, NULL);
+ g_return_val_if_fail(name != NULL, NULL);
buddy = g_new0(PurpleBuddy, 1);
buddy->account = account;
- buddy->name = g_strdup(screenname);
- buddy->alias = g_strdup(alias);
+ buddy->name = purple_utf8_strip_unprintables(name);
+ buddy->alias = purple_utf8_strip_unprintables(alias);
buddy->presence = purple_presence_new_for_buddy(buddy);
((PurpleBlistNode *)buddy)->type = PURPLE_BLIST_BUDDY_NODE;
@@ -1193,6 +1333,42 @@ PurpleBuddy *purple_buddy_new(PurpleAccount *account, const char *screenname, co
}
void
+purple_buddy_destroy(PurpleBuddy *buddy)
+{
+ PurplePlugin *prpl;
+ PurplePluginProtocolInfo *prpl_info;
+
+ /*
+ * Tell the owner PRPL that we're about to free the buddy so it
+ * can free proto_data
+ */
+ prpl = purple_find_prpl(purple_account_get_protocol_id(buddy->account));
+ if (prpl) {
+ prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
+ if (prpl_info && prpl_info->buddy_free)
+ prpl_info->buddy_free(buddy);
+ }
+
+ /* Delete the node */
+ purple_buddy_icon_unref(buddy->icon);
+ g_hash_table_destroy(buddy->node.settings);
+ purple_presence_destroy(buddy->presence);
+ g_free(buddy->name);
+ g_free(buddy->alias);
+ g_free(buddy->server_alias);
+
+ PURPLE_DBUS_UNREGISTER_POINTER(buddy);
+ g_free(buddy);
+
+ /* FIXME: Once PurpleBuddy is a GObject, timeout callbacks can
+ * g_object_ref() it when connecting the callback and
+ * g_object_unref() it in the handler. That way, it won't
+ * get freed while the timeout is pending and this line can
+ * be removed. */
+ while (g_source_remove_by_user_data((gpointer *)buddy));
+}
+
+void
purple_buddy_set_icon(PurpleBuddy *buddy, PurpleBuddyIcon *icon)
{
g_return_if_fail(buddy != NULL);
@@ -1232,6 +1408,23 @@ purple_buddy_get_icon(const PurpleBuddy *buddy)
return buddy->icon;
}
+gpointer
+purple_buddy_get_protocol_data(const PurpleBuddy *buddy)
+{
+ g_return_val_if_fail(buddy != NULL, NULL);
+
+ return buddy->proto_data;
+}
+
+void
+purple_buddy_set_protocol_data(PurpleBuddy *buddy, gpointer data)
+{
+ g_return_if_fail(buddy != NULL);
+
+ buddy->proto_data = data;
+}
+
+
void purple_blist_add_chat(PurpleChat *chat, PurpleGroup *group, PurpleBlistNode *node)
{
PurpleBlistNode *cnode = (PurpleBlistNode*)chat;
@@ -1313,6 +1506,9 @@ void purple_blist_add_chat(PurpleChat *chat, PurpleGroup *group, PurpleBlistNode
if (ops && ops->update)
ops->update(purplebuddylist, (PurpleBlistNode *)cnode);
+
+ purple_signal_emit(purple_blist_get_handle(), "blist-node-added",
+ cnode);
}
void purple_blist_add_buddy(PurpleBuddy *buddy, PurpleContact *contact, PurpleGroup *group, PurpleBlistNode *node)
@@ -1321,7 +1517,8 @@ void purple_blist_add_buddy(PurpleBuddy *buddy, PurpleContact *contact, PurpleGr
PurpleGroup *g;
PurpleContact *c;
PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
- struct _purple_hbuddy *hb;
+ struct _purple_hbuddy *hb, *hb2;
+ GHashTable *account_buddies;
g_return_if_fail(buddy != NULL);
g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY((PurpleBlistNode*)buddy));
@@ -1339,7 +1536,7 @@ void purple_blist_add_buddy(PurpleBuddy *buddy, PurpleContact *contact, PurpleGr
g = (PurpleGroup*)node->parent->parent;
} else if (contact) {
c = contact;
- g = (PurpleGroup *)((PurpleBlistNode *)c)->parent;
+ g = PURPLE_GROUP(PURPLE_BLIST_NODE(c)->parent);
} else {
g = group;
if (g == NULL)
@@ -1391,6 +1588,10 @@ void purple_blist_add_buddy(PurpleBuddy *buddy, PurpleContact *contact, PurpleGr
hb->account = buddy->account;
hb->group = bnode->parent->parent;
g_hash_table_remove(purplebuddylist->buddies, hb);
+
+ account_buddies = g_hash_table_lookup(buddies_cache, buddy->account);
+ g_hash_table_remove(account_buddies, hb);
+
g_free(hb->name);
g_free(hb);
}
@@ -1421,16 +1622,14 @@ void purple_blist_add_buddy(PurpleBuddy *buddy, PurpleContact *contact, PurpleGr
}
if (PURPLE_BUDDY_IS_ONLINE(buddy)) {
- ((PurpleContact*)bnode->parent)->online++;
- if (((PurpleContact*)bnode->parent)->online == 1)
- ((PurpleGroup*)bnode->parent->parent)->online++;
+ if (++(PURPLE_CONTACT(bnode->parent)->online) == 1)
+ PURPLE_GROUP(bnode->parent->parent)->online++;
}
if (purple_account_is_connected(buddy->account)) {
- ((PurpleContact*)bnode->parent)->currentsize++;
- if (((PurpleContact*)bnode->parent)->currentsize == 1)
- ((PurpleGroup*)bnode->parent->parent)->currentsize++;
+ if (++(PURPLE_CONTACT(bnode->parent)->currentsize) == 1)
+ PURPLE_GROUP(bnode->parent->parent)->currentsize++;
}
- ((PurpleContact*)bnode->parent)->totalsize++;
+ PURPLE_CONTACT(bnode->parent)->totalsize++;
hb = g_new(struct _purple_hbuddy, 1);
hb->name = g_strdup(purple_normalize(buddy->account, buddy->name));
@@ -1439,6 +1638,15 @@ void purple_blist_add_buddy(PurpleBuddy *buddy, PurpleContact *contact, PurpleGr
g_hash_table_replace(purplebuddylist->buddies, hb, buddy);
+ account_buddies = g_hash_table_lookup(buddies_cache, buddy->account);
+
+ hb2 = g_new(struct _purple_hbuddy, 1);
+ hb2->name = g_strdup(hb->name);
+ hb2->account = buddy->account;
+ hb2->group = ((PurpleBlistNode*)buddy)->parent->parent;
+
+ g_hash_table_replace(account_buddies, hb2, buddy);
+
purple_contact_invalidate_priority_buddy(purple_buddy_get_contact(buddy));
purple_blist_schedule_save();
@@ -1448,6 +1656,9 @@ void purple_blist_add_buddy(PurpleBuddy *buddy, PurpleContact *contact, PurpleGr
/* Signal that the buddy has been added */
purple_signal_emit(purple_blist_get_handle(), "buddy-added", buddy);
+
+ purple_signal_emit(purple_blist_get_handle(), "blist-node-added",
+ PURPLE_BLIST_NODE(buddy));
}
PurpleContact *purple_contact_new()
@@ -1468,6 +1679,15 @@ PurpleContact *purple_contact_new()
return contact;
}
+void
+purple_contact_destroy(PurpleContact *contact)
+{
+ g_hash_table_destroy(contact->node.settings);
+ g_free(contact->alias);
+ PURPLE_DBUS_UNREGISTER_POINTER(contact);
+ g_free(contact);
+}
+
void purple_contact_set_alias(PurpleContact *contact, const char *alias)
{
purple_blist_alias_contact(contact,alias);
@@ -1523,7 +1743,7 @@ PurpleGroup *purple_group_new(const char *name)
return group;
group = g_new0(PurpleGroup, 1);
- group->name = g_strdup(name);
+ group->name = purple_utf8_strip_unprintables(name);
group->totalsize = 0;
group->currentsize = 0;
group->online = 0;
@@ -1537,6 +1757,15 @@ PurpleGroup *purple_group_new(const char *name)
return group;
}
+void
+purple_group_destroy(PurpleGroup *group)
+{
+ g_hash_table_destroy(group->node.settings);
+ g_free(group->name);
+ PURPLE_DBUS_UNREGISTER_POINTER(group);
+ g_free(group);
+}
+
void purple_blist_add_contact(PurpleContact *contact, PurpleGroup *group, PurpleBlistNode *node)
{
PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
@@ -1546,7 +1775,7 @@ void purple_blist_add_contact(PurpleContact *contact, PurpleGroup *group, Purple
g_return_if_fail(contact != NULL);
g_return_if_fail(PURPLE_BLIST_NODE_IS_CONTACT((PurpleBlistNode*)contact));
- if ((PurpleBlistNode*)contact == node)
+ if (PURPLE_BLIST_NODE(contact) == node)
return;
if (node && (PURPLE_BLIST_NODE_IS_CONTACT(node) ||
@@ -1579,18 +1808,31 @@ void purple_blist_add_contact(PurpleContact *contact, PurpleGroup *group, Purple
while (bnode) {
PurpleBlistNode *next_bnode = bnode->next;
PurpleBuddy *b = (PurpleBuddy*)bnode;
+ GHashTable *account_buddies;
- struct _purple_hbuddy *hb = g_new(struct _purple_hbuddy, 1);
+ struct _purple_hbuddy *hb, *hb2;
+
+ hb = g_new(struct _purple_hbuddy, 1);
hb->name = g_strdup(purple_normalize(b->account, b->name));
hb->account = b->account;
hb->group = cnode->parent;
g_hash_table_remove(purplebuddylist->buddies, hb);
+ account_buddies = g_hash_table_lookup(buddies_cache, b->account);
+ g_hash_table_remove(account_buddies, hb);
+
if (!purple_find_buddy_in_group(b->account, b->name, g)) {
hb->group = gnode;
g_hash_table_replace(purplebuddylist->buddies, hb, b);
+ hb2 = g_new(struct _purple_hbuddy, 1);
+ hb2->name = g_strdup(hb->name);
+ hb2->account = b->account;
+ hb2->group = gnode;
+
+ g_hash_table_replace(account_buddies, hb2, b);
+
if (purple_account_get_connection(b->account))
serv_move_buddy(b, (PurpleGroup *)cnode->parent, g);
} else {
@@ -1754,6 +1996,9 @@ void purple_blist_add_group(PurpleGroup *group, PurpleBlistNode *node)
for (node = gnode->child; node; node = node->next)
ops->update(purplebuddylist, node);
}
+
+ purple_signal_emit(purple_blist_get_handle(), "blist-node-added",
+ gnode);
}
void purple_blist_remove_contact(PurpleContact *contact)
@@ -1796,10 +2041,11 @@ void purple_blist_remove_contact(PurpleContact *contact)
if (ops && ops->remove)
ops->remove(purplebuddylist, node);
+ purple_signal_emit(purple_blist_get_handle(), "blist-node-removed",
+ PURPLE_BLIST_NODE(contact));
+
/* Delete the node */
- g_hash_table_destroy(contact->node.settings);
- PURPLE_DBUS_UNREGISTER_POINTER(contact);
- g_free(contact);
+ purple_contact_destroy(contact);
}
}
@@ -1810,8 +2056,7 @@ void purple_blist_remove_buddy(PurpleBuddy *buddy)
PurpleContact *contact;
PurpleGroup *group;
struct _purple_hbuddy hb;
- PurplePlugin *prpl;
- PurplePluginProtocolInfo *prpl_info = NULL;
+ GHashTable *account_buddies;
g_return_if_fail(buddy != NULL);
@@ -1858,6 +2103,10 @@ void purple_blist_remove_buddy(PurpleBuddy *buddy)
hb.account = buddy->account;
hb.group = gnode;
g_hash_table_remove(purplebuddylist->buddies, &hb);
+
+ account_buddies = g_hash_table_lookup(buddies_cache, buddy->account);
+ g_hash_table_remove(account_buddies, &hb);
+
g_free(hb.name);
/* Update the UI */
@@ -1867,33 +2116,10 @@ void purple_blist_remove_buddy(PurpleBuddy *buddy)
/* Signal that the buddy has been removed before freeing the memory for it */
purple_signal_emit(purple_blist_get_handle(), "buddy-removed", buddy);
- /*
- * Tell the owner PRPL that we're about to free the buddy so it
- * can free proto_data
- */
- prpl = purple_find_prpl(purple_account_get_protocol_id(buddy->account));
- if (prpl)
- prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
- if (prpl_info && prpl_info->buddy_free)
- prpl_info->buddy_free(buddy);
+ purple_signal_emit(purple_blist_get_handle(), "blist-node-removed",
+ PURPLE_BLIST_NODE(buddy));
- /* Delete the node */
- purple_buddy_icon_unref(buddy->icon);
- g_hash_table_destroy(buddy->node.settings);
- purple_presence_destroy(buddy->presence);
- g_free(buddy->name);
- g_free(buddy->alias);
- g_free(buddy->server_alias);
-
- PURPLE_DBUS_UNREGISTER_POINTER(buddy);
- g_free(buddy);
-
- /* FIXME: Once PurpleBuddy is a GObject, timeout callbacks can
- * g_object_ref() it when connecting the callback and
- * g_object_unref() it in the handler. That way, it won't
- * get freed while the timeout is pending and this line can
- * be removed. */
- while (g_source_remove_by_user_data((gpointer *)buddy));
+ purple_buddy_destroy(buddy);
/* If the contact is empty then remove it */
if ((contact != NULL) && !cnode->child)
@@ -1936,12 +2162,11 @@ void purple_blist_remove_chat(PurpleChat *chat)
if (ops && ops->remove)
ops->remove(purplebuddylist, node);
+ purple_signal_emit(purple_blist_get_handle(), "blist-node-removed",
+ PURPLE_BLIST_NODE(chat));
+
/* Delete the node */
- g_hash_table_destroy(chat->components);
- g_hash_table_destroy(chat->node.settings);
- g_free(chat->alias);
- PURPLE_DBUS_UNREGISTER_POINTER(chat);
- g_free(chat);
+ purple_chat_destroy(chat);
}
void purple_blist_remove_group(PurpleGroup *group)
@@ -1972,6 +2197,9 @@ void purple_blist_remove_group(PurpleGroup *group)
if (ops && ops->remove)
ops->remove(purplebuddylist, node);
+ purple_signal_emit(purple_blist_get_handle(), "blist-node-removed",
+ PURPLE_BLIST_NODE(group));
+
/* Remove the group from all accounts that are online */
for (l = purple_connections_get_all(); l != NULL; l = l->next)
{
@@ -1982,10 +2210,7 @@ void purple_blist_remove_group(PurpleGroup *group)
}
/* Delete the node */
- g_hash_table_destroy(group->node.settings);
- g_free(group->name);
- PURPLE_DBUS_UNREGISTER_POINTER(group);
- g_free(group);
+ purple_group_destroy(group);
}
PurpleBuddy *purple_contact_get_priority_buddy(PurpleContact *contact)
@@ -2056,6 +2281,12 @@ const char *purple_buddy_get_alias(PurpleBuddy *buddy)
return buddy->name;
}
+const char *purple_buddy_get_local_buddy_alias(PurpleBuddy *buddy)
+{
+ g_return_val_if_fail(buddy, NULL);
+ return buddy->alias;
+}
+
const char *purple_buddy_get_server_alias(PurpleBuddy *buddy)
{
g_return_val_if_fail(buddy != NULL, NULL);
@@ -2159,13 +2390,10 @@ PurpleBuddy *purple_find_buddy_in_group(PurpleAccount *account, const char *name
static void find_acct_buddies(gpointer key, gpointer value, gpointer data)
{
- struct _purple_hbuddy *hb = key;
PurpleBuddy *buddy = value;
- struct _list_account_buddies *ab = data;
+ GSList **list = data;
- if (hb->account == ab->account) {
- ab->list = g_slist_prepend(ab->list, buddy);
- }
+ *list = g_slist_prepend(*list, buddy);
}
GSList *purple_find_buddies(PurpleAccount *account, const char *name)
@@ -2177,7 +2405,6 @@ GSList *purple_find_buddies(PurpleAccount *account, const char *name)
g_return_val_if_fail(purplebuddylist != NULL, NULL);
g_return_val_if_fail(account != NULL, NULL);
-
if ((name != NULL) && (*name != '\0')) {
struct _purple_hbuddy hb;
@@ -2191,11 +2418,10 @@ GSList *purple_find_buddies(PurpleAccount *account, const char *name)
}
g_free(hb.name);
} else {
- struct _list_account_buddies *ab = g_new0(struct _list_account_buddies, 1);
- ab->account = account;
- g_hash_table_foreach(purplebuddylist->buddies, find_acct_buddies, ab);
- ret = ab->list;
- g_free(ab);
+ GSList *list = NULL;
+ GHashTable *buddies = g_hash_table_lookup(buddies_cache, account);
+ g_hash_table_foreach(buddies, find_acct_buddies, &list);
+ ret = list;
}
return ret;
@@ -2300,7 +2526,7 @@ PurpleContact *purple_buddy_get_contact(PurpleBuddy *buddy)
{
g_return_val_if_fail(buddy != NULL, NULL);
- return (PurpleContact*)((PurpleBlistNode*)buddy)->parent;
+ return PURPLE_CONTACT(PURPLE_BLIST_NODE(buddy)->parent);
}
PurplePresence *purple_buddy_get_presence(const PurpleBuddy *buddy)
@@ -2530,6 +2756,38 @@ purple_blist_request_add_group(void)
}
static void
+purple_blist_node_destroy(PurpleBlistNode *node)
+{
+ PurpleBlistUiOps *ui_ops;
+ PurpleBlistNode *child, *next_child;
+
+ ui_ops = purple_blist_get_ui_ops();
+ child = node->child;
+ while (child) {
+ next_child = child->next;
+ purple_blist_node_destroy(child);
+ child = next_child;
+ }
+
+ /* Allow the UI to free data */
+ node->parent = NULL;
+ node->child = NULL;
+ node->next = NULL;
+ node->prev = NULL;
+ if (ui_ops && ui_ops->remove)
+ ui_ops->remove(purplebuddylist, node);
+
+ if (PURPLE_BLIST_NODE_IS_BUDDY(node))
+ purple_buddy_destroy((PurpleBuddy*)node);
+ else if (PURPLE_BLIST_NODE_IS_CHAT(node))
+ purple_chat_destroy((PurpleChat*)node);
+ else if (PURPLE_BLIST_NODE_IS_CONTACT(node))
+ purple_contact_destroy((PurpleContact*)node);
+ else if (PURPLE_BLIST_NODE_IS_GROUP(node))
+ purple_group_destroy((PurpleGroup*)node);
+}
+
+static void
purple_blist_node_setting_free(gpointer data)
{
PurpleValue *value;
@@ -2784,6 +3042,16 @@ purple_blist_init(void)
purple_value_new(PURPLE_TYPE_SUBTYPE,
PURPLE_SUBTYPE_BLIST_BUDDY));
+ purple_signal_register(handle, "blist-node-added",
+ purple_marshal_VOID__POINTER, NULL, 1,
+ purple_value_new(PURPLE_TYPE_SUBTYPE,
+ PURPLE_SUBTYPE_BLIST_NODE));
+
+ purple_signal_register(handle, "blist-node-removed",
+ purple_marshal_VOID__POINTER, NULL, 1,
+ purple_value_new(PURPLE_TYPE_SUBTYPE,
+ PURPLE_SUBTYPE_BLIST_NODE));
+
purple_signal_register(handle, "buddy-added",
purple_marshal_VOID__POINTER, NULL, 1,
purple_value_new(PURPLE_TYPE_SUBTYPE,
@@ -2812,17 +3080,44 @@ purple_blist_init(void)
purple_value_new(PURPLE_TYPE_SUBTYPE,
PURPLE_SUBTYPE_BLIST_NODE),
purple_value_new(PURPLE_TYPE_STRING));
+
+ purple_signal_connect(purple_accounts_get_handle(), "account-created",
+ handle,
+ PURPLE_CALLBACK(purple_blist_buddies_cache_add_account),
+ NULL);
+
+ purple_signal_connect(purple_accounts_get_handle(), "account-destroying",
+ handle,
+ PURPLE_CALLBACK(purple_blist_buddies_cache_remove_account),
+ NULL);
}
void
purple_blist_uninit(void)
{
- if (save_timer != 0)
- {
+ PurpleBlistNode *node, *next_node;
+
+ /* This happens if we quit before purple_set_blist is called. */
+ if (purplebuddylist == NULL)
+ return;
+
+ if (save_timer != 0) {
purple_timeout_remove(save_timer);
save_timer = 0;
purple_blist_sync();
}
+ node = purple_blist_get_root();
+ while (node) {
+ next_node = node->next;
+ purple_blist_node_destroy(node);
+ node = next_node;
+ }
+ purplebuddylist->root = NULL;
+
+ g_hash_table_destroy(purplebuddylist->buddies);
+ g_hash_table_destroy(buddies_cache);
+
+ purple_signals_disconnect_by_handle(purple_blist_get_handle());
purple_signals_unregister_by_instance(purple_blist_get_handle());
}
diff --git a/libpurple/blist.h b/libpurple/blist.h
index 829212f787..4edf6d4c38 100644
--- a/libpurple/blist.h
+++ b/libpurple/blist.h
@@ -75,12 +75,37 @@ typedef enum
} PurpleBlistNodeFlags;
+/**
+ * @since 2.6.0
+ */
+#define PURPLE_BLIST_NODE(obj) ((PurpleBlistNode *)(obj))
+
#define PURPLE_BLIST_NODE_HAS_FLAG(b, f) (purple_blist_node_get_flags((PurpleBlistNode*)(b)) & (f))
#define PURPLE_BLIST_NODE_SHOULD_SAVE(b) (! PURPLE_BLIST_NODE_HAS_FLAG(b, PURPLE_BLIST_NODE_FLAG_NO_SAVE))
#define PURPLE_BLIST_NODE_NAME(n) (purple_blist_node_get_type(n) == PURPLE_BLIST_CHAT_NODE ? purple_chat_get_name((PurpleChat*)n) : \
purple_blist_node_get_type(n) == PURPLE_BLIST_BUDDY_NODE ? purple_buddy_get_name((PurpleBuddy*)n) : NULL)
+/**
+ * @since 2.6.0
+ */
+#define PURPLE_GROUP(obj) ((PurpleGroup *)(obj))
+
+/**
+ * @since 2.6.0
+ */
+#define PURPLE_CONTACT(obj) ((PurpleContact *)(obj))
+
+/**
+ * @since 2.6.0
+ */
+#define PURPLE_BUDDY(obj) ((PurpleBuddy *)(obj))
+
+/**
+ * @since 2.6.0
+ */
+#define PURPLE_CHAT(obj) ((PurpleChat *)(obj))
+
#include "account.h"
#include "buddyicon.h"
#include "status.h"
@@ -93,8 +118,8 @@ typedef enum
/**
* A Buddy list node. This can represent a group, a buddy, or anything else.
- * This is a base class for struct buddy and struct group and for anything
- * else that wants to put itself in the buddy list. */
+ * This is a base class for PurpleBuddy, PurpleContact, PurpleGroup, and for
+ * anything else that wants to put itself in the buddy list. */
struct _PurpleBlistNode {
PurpleBlistNodeType type; /**< The type of node this is */
PurpleBlistNode *prev; /**< The sibling before this buddy. */
@@ -111,7 +136,7 @@ struct _PurpleBlistNode {
*/
struct _PurpleBuddy {
PurpleBlistNode node; /**< The node that this buddy inherits from */
- char *name; /**< The screenname of the buddy. */
+ char *name; /**< The name of the buddy. */
char *alias; /**< The user-set alias of the buddy */
char *server_alias; /**< The server-specified alias of the buddy. (i.e. MSN "Friendly Names") */
void *proto_data; /**< This allows the prpl to associate whatever data it wants with a buddy */
@@ -156,9 +181,6 @@ struct _PurpleChat {
PurpleAccount *account; /**< The account this chat is attached to */
};
-#endif /* PURPLE_HIDE_STRUCTS && PURPLE_BLIST_STRUCTS */
-
-
/**
* The Buddy List
*/
@@ -168,6 +190,8 @@ struct _PurpleBuddyList {
void *ui_data; /**< UI-specific data. */
};
+#endif /* PURPLE_HIDE_STRUCTS && PURPLE_BLIST_STRUCTS */
+
/**
* Buddy list UI operations.
*
@@ -183,7 +207,7 @@ struct _PurpleBlistUiOps
PurpleBlistNode *node); /**< This will update a node in the buddy list. */
void (*remove)(PurpleBuddyList *list,
PurpleBlistNode *node); /**< This removes a node from the list */
- void (*destroy)(PurpleBuddyList *list); /**< When the list gets destroyed, this gets called to destroy the UI. */
+ void (*destroy)(PurpleBuddyList *list); /**< When the list is destroyed, this is called to destroy the UI. */
void (*set_visible)(PurpleBuddyList *list,
gboolean show); /**< Hides or unhides the buddy list */
void (*request_add_buddy)(PurpleAccount *account, const char *username,
@@ -236,6 +260,37 @@ PurpleBuddyList *purple_get_blist(void);
PurpleBlistNode *purple_blist_get_root(void);
/**
+ * Returns a list of every buddy in the list. Use of this function is
+ * discouraged if you do not actually need every buddy in the list. Use
+ * purple_find_buddies instead.
+ *
+ * @return A list of every buddy in the list. Caller is responsible for
+ * freeing the list.
+ *
+ * @see purple_find_buddies
+ * @since 2.6.0
+ */
+GSList *purple_blist_get_buddies(void);
+
+/**
+ * Returns the UI data for the list.
+ *
+ * @return The UI data for the list.
+ *
+ * @since 2.6.0
+ */
+gpointer purple_blist_get_ui_data(void);
+
+/**
+ * Sets the UI data for the list.
+ *
+ * @param ui_data The UI data for the list.
+ *
+ * @since 2.6.0
+ */
+void purple_blist_set_ui_data(gpointer ui_data);
+
+/**
* Returns the next node of a given node. This function is to be used to iterate
* over the tree returned by purple_get_blist.
*
@@ -302,6 +357,25 @@ PurpleBlistNode *purple_blist_node_get_sibling_next(PurpleBlistNode *node);
PurpleBlistNode *purple_blist_node_get_sibling_prev(PurpleBlistNode *node);
/**
+ * Returns the UI data of a given node.
+ *
+ * @param node The node.
+ * @return The UI data.
+ * @since 2.6.0
+ */
+gpointer purple_blist_node_get_ui_data(const PurpleBlistNode *node);
+
+/**
+ * Sets the UI data of a given node.
+ *
+ * @param node The node.
+ * @param ui_data The UI data.
+ *
+ * @since 2.6.0
+ */
+void purple_blist_node_set_ui_data(PurpleBlistNode *node, gpointer ui_data);
+
+/**
* Shows the buddy list, creating a new one if necessary.
*/
void purple_blist_show(void);
@@ -322,6 +396,8 @@ void purple_blist_set_visible(gboolean show);
/**
* Updates a buddy's status.
*
+ * This should only be called from within Purple.
+ *
* @param buddy The buddy whose status has changed.
* @param old_status The status from which we are changing.
*/
@@ -331,6 +407,7 @@ void purple_blist_update_buddy_status(PurpleBuddy *buddy, PurpleStatus *old_stat
* Updates a node's custom icon.
*
* @param node The PurpleBlistNode whose custom icon has changed.
+ *
* @since 2.5.0
*/
void purple_blist_update_node_icon(PurpleBlistNode *node);
@@ -407,6 +484,13 @@ void purple_blist_rename_group(PurpleGroup *group, const char *name);
PurpleChat *purple_chat_new(PurpleAccount *account, const char *alias, GHashTable *components);
/**
+ * Destroys a chat
+ *
+ * @param chat The chat to destroy
+ */
+void purple_chat_destroy(PurpleChat *chat);
+
+/**
* Adds a new chat to the buddy list.
*
* The chat will be inserted right after node or appended to the end
@@ -420,14 +504,28 @@ PurpleChat *purple_chat_new(PurpleAccount *account, const char *alias, GHashTabl
void purple_blist_add_chat(PurpleChat *chat, PurpleGroup *group, PurpleBlistNode *node);
/**
- * Creates a new buddy
+ * Creates a new buddy.
+ *
+ * This function only creates the PurpleBuddy. Use purple_blist_add_buddy
+ * to add the buddy to the list and purple_account_add_buddy to sync up
+ * with the server.
*
* @param account The account this buddy will get added to
- * @param screenname The screenname of the new buddy
+ * @param name The name of the new buddy
* @param alias The alias of the new buddy (or NULL if unaliased)
* @return A newly allocated buddy
+ *
+ * @see purple_account_add_buddy
+ * @see purple_blist_add_buddy
+ */
+PurpleBuddy *purple_buddy_new(PurpleAccount *account, const char *name, const char *alias);
+
+/**
+ * Destroys a buddy
+ *
+ * @param buddy The buddy to destroy
*/
-PurpleBuddy *purple_buddy_new(PurpleAccount *account, const char *screenname, const char *alias);
+void purple_buddy_destroy(PurpleBuddy *buddy);
/**
* Sets a buddy's icon.
@@ -470,6 +568,32 @@ const char *purple_buddy_get_name(const PurpleBuddy *buddy);
PurpleBuddyIcon *purple_buddy_get_icon(const PurpleBuddy *buddy);
/**
+ * Returns a buddy's protocol-specific data.
+ *
+ * This should only be called from the associated prpl.
+ *
+ * @param buddy The buddy.
+ * @return The protocol data.
+ *
+ * @see purple_buddy_set_protocol_data()
+ * @since 2.6.0
+ */
+gpointer purple_buddy_get_protocol_data(const PurpleBuddy *buddy);
+
+/**
+ * Sets a buddy's protocol-specific data.
+ *
+ * This should only be called from the associated prpl.
+ *
+ * @param buddy The buddy.
+ * @param data The data.
+ *
+ * @see purple_buddy_get_protocol_data()
+ * @since 2.6.0
+ */
+void purple_buddy_set_protocol_data(PurpleBuddy *buddy, gpointer data);
+
+/**
* Returns a buddy's contact.
*
* @param buddy The buddy.
@@ -498,7 +622,7 @@ PurplePresence *purple_buddy_get_presence(const PurpleBuddy *buddy);
* @param contact The optional contact to place the buddy in.
* @param group The group to add the new buddy to.
* @param node The insertion point. Pass in NULL to add the node as
- * the last child in the given group.
+ * the first child in the given group.
*/
void purple_blist_add_buddy(PurpleBuddy *buddy, PurpleContact *contact, PurpleGroup *group, PurpleBlistNode *node);
@@ -506,7 +630,7 @@ void purple_blist_add_buddy(PurpleBuddy *buddy, PurpleContact *contact, PurpleGr
* Creates a new group
*
* You can't have more than one group with the same name. Sorry. If you pass
- * this the * name of a group that already exists, it will return that group.
+ * this the name of a group that already exists, it will return that group.
*
* @param name The name of the new group
* @return A new group struct
@@ -514,6 +638,13 @@ void purple_blist_add_buddy(PurpleBuddy *buddy, PurpleContact *contact, PurpleGr
PurpleGroup *purple_group_new(const char *name);
/**
+ * Destroys a group
+ *
+ * @param group The group to destroy
+*/
+void purple_group_destroy(PurpleGroup *group);
+
+/**
* Adds a new group to the buddy list.
*
* The new group will be inserted after insert or prepended to the list if
@@ -532,6 +663,13 @@ void purple_blist_add_group(PurpleGroup *group, PurpleBlistNode *node);
PurpleContact *purple_contact_new(void);
/**
+ * Destroys a contact
+ *
+ * @param contact The contact to destroy
+ */
+void purple_contact_destroy(PurpleContact *contact);
+
+/**
* Adds a new contact to the buddy list.
*
* The new contact will be inserted after insert or prepended to the list if
@@ -601,18 +739,22 @@ void purple_contact_invalidate_priority_buddy(PurpleContact *contact);
/**
* Removes a buddy from the buddy list and frees the memory allocated to it.
- * This doesn't actually try to remove the buddy from the server list, nor does
- * it clean up the prpl_data.
+ * This doesn't actually try to remove the buddy from the server list.
*
* @param buddy The buddy to be removed
+ *
+ * @see purple_account_remove_buddy
*/
void purple_blist_remove_buddy(PurpleBuddy *buddy);
/**
* Removes a contact, and any buddies it contains, and frees the memory
- * allocated to it.
+ * allocated to it. This calls purple_blist_remove_buddy and therefore
+ * doesn't remove the buddies from the server list.
*
* @param contact The contact to be removed
+ *
+ * @see purple_blist_remove_buddy
*/
void purple_blist_remove_contact(PurpleContact *contact);
@@ -659,15 +801,18 @@ const char *purple_buddy_get_server_alias(PurpleBuddy *buddy);
*/
const char *purple_buddy_get_contact_alias(PurpleBuddy *buddy);
+#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_BLIST_C_)
/**
* Returns the correct alias for this user, ignoring server aliases. Used
* when a user-recognizable name is required. In order: buddy's alias; buddy's
* contact alias; buddy's user name.
- *
+ *
* @param buddy The buddy whose alias will be returned.
* @return The appropriate name or alias.
+ * @deprecated Try purple_buddy_get_alias(), if server aliases are okay.
*/
const char *purple_buddy_get_local_alias(PurpleBuddy *buddy);
+#endif
/**
* Returns the correct name to display for a buddy. In order of precedence:
@@ -680,6 +825,16 @@ const char *purple_buddy_get_local_alias(PurpleBuddy *buddy);
const char *purple_buddy_get_alias(PurpleBuddy *buddy);
/**
+ * Returns the local alias for the buddy, or @c NULL if none exists.
+ *
+ * @param buddy The buddy
+ * @return The local alias for the buddy
+ *
+ * @since 2.6.0
+ */
+const char *purple_buddy_get_local_buddy_alias(PurpleBuddy *buddy);
+
+/**
* Returns the correct name to display for a blist chat.
*
* @param chat The chat whose name will be returned.
@@ -688,19 +843,19 @@ const char *purple_buddy_get_alias(PurpleBuddy *buddy);
const char *purple_chat_get_name(PurpleChat *chat);
/**
- * Finds the buddy struct given a screenname and an account
+ * Finds the buddy struct given a name and an account
*
* @param account The account this buddy belongs to
- * @param name The buddy's screenname
+ * @param name The buddy's name
* @return The buddy or NULL if the buddy does not exist
*/
PurpleBuddy *purple_find_buddy(PurpleAccount *account, const char *name);
/**
- * Finds the buddy struct given a screenname, an account, and a group
+ * Finds the buddy struct given a name, an account, and a group
*
* @param account The account this buddy belongs to
- * @param name The buddy's screenname
+ * @param name The buddy's name
* @param group The group to look in
* @return The buddy or NULL if the buddy does not exist in the group
*/
@@ -708,10 +863,10 @@ PurpleBuddy *purple_find_buddy_in_group(PurpleAccount *account, const char *name
PurpleGroup *group);
/**
- * Finds all PurpleBuddy structs given a screenname and an account
+ * Finds all PurpleBuddy structs given a name and an account
*
* @param account The account this buddy belongs to
- * @param name The buddy's screenname (or NULL to return all buddies in the account)
+ * @param name The buddy's name (or NULL to return all buddies for the account)
*
* @return A GSList of buddies (which must be freed), or NULL if the buddy doesn't exist
*/
@@ -751,6 +906,7 @@ PurpleGroup *purple_chat_get_group(PurpleChat *chat);
* @param chat The chat.
*
* @return The account the chat belongs to.
+ *
* @since 2.4.0
*/
PurpleAccount *purple_chat_get_account(PurpleChat *chat);
@@ -761,6 +917,7 @@ PurpleAccount *purple_chat_get_account(PurpleChat *chat);
* @param chat The chat.
*
* @constreturn The hashtable.
+ *
* @since 2.4.0
*/
GHashTable *purple_chat_get_components(PurpleChat *chat);
@@ -804,7 +961,7 @@ gboolean purple_group_on_account(PurpleGroup *g, PurpleAccount *account);
const char *purple_group_get_name(PurpleGroup *group);
/**
- * Called when an account gets signed on. Tells the UI to update all the
+ * Called when an account connects. Tells the UI to update all the
* buddies.
*
* @param account The account
@@ -813,7 +970,7 @@ void purple_blist_add_account(PurpleAccount *account);
/**
- * Called when an account gets signed off. Sets the presence of all the buddies to 0
+ * Called when an account disconnects. Sets the presence of all the buddies to 0
* and tells the UI to update them.
*
* @param account The account
@@ -979,6 +1136,7 @@ PurpleBlistNodeFlags purple_blist_node_get_flags(PurpleBlistNode *node);
* @param node The node.
*
* @return The type of the node.
+ *
* @since 2.1.0
*/
PurpleBlistNodeType purple_blist_node_get_type(PurpleBlistNode *node);
diff --git a/libpurple/buddyicon.c b/libpurple/buddyicon.c
index 4f636c08c9..1d67c30ad9 100644
--- a/libpurple/buddyicon.c
+++ b/libpurple/buddyicon.c
@@ -153,7 +153,7 @@ purple_buddy_icon_data_cache(PurpleStoredImage *img)
{
const char *dirname;
char *path;
-
+
g_return_if_fail(img != NULL);
if (!purple_buddy_icons_is_caching())
@@ -175,7 +175,7 @@ purple_buddy_icon_data_cache(PurpleStoredImage *img)
}
purple_util_write_data_to_file_absolute(path, purple_imgstore_get_data(img),
- purple_imgstore_get_size(img));
+ purple_imgstore_get_size(img));
g_free(path);
}
@@ -453,7 +453,7 @@ purple_buddy_icon_update(PurpleBuddyIcon *icon)
if (conv != NULL)
purple_conv_im_set_icon(PURPLE_CONV_IM(conv), icon_to_set);
-
+
/* icon's refcount was incremented above */
if (icon) purple_buddy_icon_unref(icon);
}
@@ -759,7 +759,7 @@ purple_buddy_icons_set_account_icon(PurpleAccount *account,
g_hash_table_insert(pointer_icon_cache, account, img);
else
g_hash_table_remove(pointer_icon_cache, account);
-
+
if (purple_account_is_connected(account))
{
PurpleConnection *gc;
@@ -891,7 +891,9 @@ purple_buddy_icons_node_set_custom_icon(PurpleBlistNode *node,
if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
PurpleBlistNode *child;
- for (child = node->child ; child ; child = child->next)
+ for (child = purple_blist_node_get_first_child(node);
+ child;
+ child = purple_blist_node_get_sibling_next(child))
{
PurpleBuddy *buddy;
PurpleConversation *conv;
@@ -988,7 +990,7 @@ delete_buddy_icon_settings(PurpleBlistNode *node, const char *setting_name)
{
purple_blist_node_remove_setting(node, setting_name);
- if (!strcmp(setting_name, "buddy_icon"))
+ if (purple_strequal(setting_name, "buddy_icon"))
{
purple_blist_node_remove_setting(node, "avatar_hash");
purple_blist_node_remove_setting(node, "icon_checksum");
@@ -1085,7 +1087,7 @@ migrate_buddy_icon(PurpleBlistNode *node, const char *setting_name,
g_free(new_filename);
- if (!strcmp(setting_name, "buddy_icon"))
+ if (purple_strequal(setting_name, "buddy_icon"))
{
const char *hash;
@@ -1100,7 +1102,7 @@ migrate_buddy_icon(PurpleBlistNode *node, const char *setting_name,
PurpleAccount *account = purple_buddy_get_account((PurpleBuddy *)node);
const char *prpl_id = purple_account_get_protocol_id(account);
- if (!strcmp(prpl_id, "prpl-yahoo"))
+ if (purple_strequal(prpl_id, "prpl-yahoo"))
{
int checksum = purple_blist_node_get_int(node, "icon_checksum");
if (checksum != 0)
@@ -1299,6 +1301,7 @@ purple_buddy_icons_uninit()
g_hash_table_destroy(icon_file_cache);
g_hash_table_destroy(pointer_icon_cache);
g_free(old_icons_dir);
+ g_free(cache_dir);
}
void purple_buddy_icon_get_scale_size(PurpleBuddyIconSpec *spec, int *width, int *height)
diff --git a/libpurple/certificate.c b/libpurple/certificate.c
index b548e0468c..c0049e9f2d 100644
--- a/libpurple/certificate.c
+++ b/libpurple/certificate.c
@@ -51,7 +51,7 @@ purple_certificate_verify (PurpleCertificateVerifier *verifier,
{
PurpleCertificateVerificationRequest *vrq;
PurpleCertificateScheme *scheme;
-
+
g_return_if_fail(subject_name != NULL);
/* If you don't have a cert to check, why are you requesting that it
be verified? */
@@ -97,10 +97,10 @@ purple_certificate_verify_complete(PurpleCertificateVerificationRequest *vrq,
"Failed to verify certificate for %s\n",
vrq->subject_name);
}
-
-
-
-
+
+
+
+
/* Pass the results on to the request's callback */
(vrq->cb)(st, vrq->cb_data);
@@ -154,7 +154,7 @@ void
purple_certificate_destroy (PurpleCertificate *crt)
{
PurpleCertificateScheme *scheme;
-
+
if (NULL == crt) return;
scheme = crt->scheme;
@@ -206,7 +206,7 @@ purple_certificate_check_signature_chain(GList *chain)
"Checking signature chain for uid=%s\n",
uid);
g_free(uid);
-
+
/* If this is a single-certificate chain, say that it is valid */
if (chain->next == NULL) {
purple_debug_info("certificate",
@@ -218,9 +218,9 @@ purple_certificate_check_signature_chain(GList *chain)
crt = (PurpleCertificate *)(chain->data);
/* And start with the second certificate in the chain */
for ( cur = chain->next; cur; cur = cur->next ) {
-
+
issuer = (PurpleCertificate *)(cur->data);
-
+
/* Check the signature for this link */
if (! purple_certificate_signed_by(crt, issuer) ) {
uid = purple_certificate_get_unique_id(issuer);
@@ -228,7 +228,7 @@ purple_certificate_check_signature_chain(GList *chain)
"...Bad or missing signature by %s\nChain is INVALID\n",
uid);
g_free(uid);
-
+
return FALSE;
}
@@ -237,7 +237,7 @@ purple_certificate_check_signature_chain(GList *chain)
"...Good signature by %s\n",
uid);
g_free(uid);
-
+
/* The issuer is now the next crt whose signature is to be
checked */
crt = issuer;
@@ -283,7 +283,7 @@ purple_certificate_get_fingerprint_sha1(PurpleCertificate *crt)
g_return_val_if_fail(crt->scheme, NULL);
scheme = crt->scheme;
-
+
g_return_val_if_fail(scheme->get_fingerprint_sha1, NULL);
fpr = (scheme->get_fingerprint_sha1)(crt);
@@ -354,7 +354,7 @@ purple_certificate_get_times(PurpleCertificate *crt, time_t *activation, time_t
g_return_val_if_fail(crt, FALSE);
scheme = crt->scheme;
-
+
g_return_val_if_fail(scheme, FALSE);
/* If both provided references are NULL, what are you doing calling
@@ -371,7 +371,7 @@ purple_certificate_pool_mkpath(PurpleCertificatePool *pool, const gchar *id)
{
gchar *path;
gchar *esc_scheme_name, *esc_name, *esc_id;
-
+
g_return_val_if_fail(pool, NULL);
g_return_val_if_fail(pool->scheme_name, NULL);
g_return_val_if_fail(pool->name, NULL);
@@ -380,7 +380,7 @@ purple_certificate_pool_mkpath(PurpleCertificatePool *pool, const gchar *id)
esc_scheme_name = pool ? g_strdup(purple_escape_filename(pool->scheme_name)) : NULL;
esc_name = pool ? g_strdup(purple_escape_filename(pool->name)) : NULL;
esc_id = id ? g_strdup(purple_escape_filename(id)) : NULL;
-
+
path = g_build_filename(purple_user_dir(),
"certificates", /* TODO: constantize this? */
esc_scheme_name,
@@ -404,7 +404,7 @@ purple_certificate_pool_usable(PurpleCertificatePool *pool)
if (purple_certificate_find_scheme(pool->scheme_name) == NULL) {
return FALSE;
}
-
+
return TRUE;
}
@@ -441,7 +441,7 @@ gboolean
purple_certificate_pool_store(PurpleCertificatePool *pool, const gchar *id, PurpleCertificate *crt)
{
gboolean ret = FALSE;
-
+
g_return_val_if_fail(pool, FALSE);
g_return_val_if_fail(id, FALSE);
g_return_val_if_fail(pool->put_cert, FALSE);
@@ -461,13 +461,13 @@ purple_certificate_pool_store(PurpleCertificatePool *pool, const gchar *id, Purp
}
return ret;
-}
+}
gboolean
purple_certificate_pool_delete(PurpleCertificatePool *pool, const gchar *id)
{
gboolean ret = FALSE;
-
+
g_return_val_if_fail(pool, FALSE);
g_return_val_if_fail(id, FALSE);
g_return_val_if_fail(pool->delete_cert, FALSE);
@@ -496,7 +496,7 @@ void
purple_certificate_pool_destroy_idlist(GList *idlist)
{
GList *l;
-
+
/* Iterate through and free them strings */
for ( l = idlist; l; l = l->next ) {
g_free(l->data);
@@ -520,7 +520,7 @@ x509_singleuse_verify_cb (PurpleCertificateVerificationRequest *vrq, gint id)
vrq->subject_name, id);
/* Signal what happened back to the caller */
- if (1 == id) {
+ if (1 == id) {
/* Accepted! */
purple_certificate_verify_complete(vrq,
PURPLE_CERTIFICATE_VALID);
@@ -557,11 +557,11 @@ x509_singleuse_start_verify (PurpleCertificateVerificationRequest *vrq)
} else {
cn_match = _("(DOES NOT MATCH)");
}
-
+
/* Make messages */
primary = g_strdup_printf(_("%s has presented the following certificate for just-this-once use:"), vrq->subject_name);
secondary = g_strdup_printf(_("Common name: %s %s\nFingerprint (SHA1): %s"), cn, cn_match, sha_asc);
-
+
/* Make a semi-pretty display */
purple_request_accept_cancel(
vrq->cb_data, /* TODO: Find what the handle ought to be */
@@ -575,7 +575,7 @@ x509_singleuse_start_verify (PurpleCertificateVerificationRequest *vrq)
vrq,
x509_singleuse_verify_cb,
x509_singleuse_verify_cb );
-
+
/* Cleanup */
g_free(primary);
g_free(secondary);
@@ -644,13 +644,13 @@ x509_ca_quiet_put_cert(PurpleCertificate *crt)
/* lazy_init calls this function, so calling lazy_init here is a
Bad Thing */
-
+
g_return_val_if_fail(crt, FALSE);
g_return_val_if_fail(crt->scheme, FALSE);
/* Make sure that this is some kind of X.509 certificate */
/* TODO: Perhaps just check crt->scheme->name instead? */
g_return_val_if_fail(crt->scheme == purple_certificate_find_scheme(x509_ca.scheme_name), FALSE);
-
+
el = g_new0(x509_ca_element, 1);
el->dn = purple_certificate_get_unique_id(crt);
el->crt = purple_certificate_copy(crt);
@@ -675,7 +675,7 @@ x509_ca_lazy_init(void)
const gchar *entry;
GPatternSpec *pempat;
GList *iter = NULL;
-
+
if (x509_ca_initialized) return TRUE;
/* Check that X.509 is registered */
@@ -791,7 +791,7 @@ x509_ca_locate_cert(GList *lst, const gchar *dn)
for (cur = lst; cur; cur = cur->next) {
x509_ca_element *el = cur->data;
- if (el->dn && !strcmp(dn, el->dn)) {
+ if (purple_strequal(dn, el->dn)) {
return el;
}
}
@@ -832,7 +832,7 @@ x509_ca_get_cert(const gchar *id)
} else {
crt = NULL;
}
-
+
return crt;
}
@@ -840,7 +840,7 @@ static gboolean
x509_ca_put_cert(const gchar *id, PurpleCertificate *crt)
{
gboolean ret = FALSE;
-
+
g_return_val_if_fail(x509_ca_lazy_init(), FALSE);
/* TODO: This is a quick way of doing this. At some point the change
@@ -854,7 +854,7 @@ static gboolean
x509_ca_delete_cert(const gchar *id)
{
x509_ca_element *el;
-
+
g_return_val_if_fail(x509_ca_lazy_init(), FALSE);
g_return_val_if_fail(id, FALSE);
@@ -870,7 +870,7 @@ x509_ca_delete_cert(const gchar *id)
/* Unlink it from the memory cache and destroy it */
x509_ca_certs = g_list_remove(x509_ca_certs, el);
x509_ca_element_free(el);
-
+
return TRUE;
}
@@ -878,7 +878,7 @@ static GList *
x509_ca_get_idlist(void)
{
GList *l, *idlist;
-
+
g_return_val_if_fail(x509_ca_lazy_init(), NULL);
idlist = NULL;
@@ -886,7 +886,7 @@ x509_ca_get_idlist(void)
x509_ca_element *el = l->data;
idlist = g_list_prepend(idlist, g_strdup(el->dn));
}
-
+
return idlist;
}
@@ -921,7 +921,7 @@ x509_tls_peers_init(void)
{
gchar *poolpath;
int ret;
-
+
/* Set up key cache here if it isn't already done */
poolpath = purple_certificate_pool_mkpath(&x509_tls_peers, NULL);
ret = purple_build_dir(poolpath, 0700); /* Make it this user only */
@@ -937,13 +937,13 @@ x509_tls_peers_cert_in_pool(const gchar *id)
{
gchar *keypath;
gboolean ret = FALSE;
-
+
g_return_val_if_fail(id, FALSE);
keypath = purple_certificate_pool_mkpath(&x509_tls_peers, id);
ret = g_file_test(keypath, G_FILE_TEST_IS_REGULAR);
-
+
g_free(keypath);
return ret;
}
@@ -954,14 +954,14 @@ x509_tls_peers_get_cert(const gchar *id)
PurpleCertificateScheme *x509;
PurpleCertificate *crt;
gchar *keypath;
-
+
g_return_val_if_fail(id, NULL);
/* Is it in the pool? */
if ( !x509_tls_peers_cert_in_pool(id) ) {
return NULL;
}
-
+
/* Look up the X.509 scheme */
x509 = purple_certificate_find_scheme("x509");
g_return_val_if_fail(x509, NULL);
@@ -990,7 +990,7 @@ x509_tls_peers_put_cert(const gchar *id, PurpleCertificate *crt)
/* Work out the filename and export */
keypath = purple_certificate_pool_mkpath(&x509_tls_peers, id);
ret = purple_certificate_export(keypath, crt);
-
+
g_free(keypath);
return ret;
}
@@ -1012,7 +1012,7 @@ x509_tls_peers_delete_cert(const gchar *id)
}
/* OK, so work out the keypath and delete the thing */
- keypath = purple_certificate_pool_mkpath(&x509_tls_peers, id);
+ keypath = purple_certificate_pool_mkpath(&x509_tls_peers, id);
if ( unlink(keypath) != 0 ) {
purple_debug_error("certificate/tls_peers",
"Unlink of %s failed!\n",
@@ -1047,7 +1047,7 @@ x509_tls_peers_get_idlist(void)
while ( (entry = g_dir_read_name(dir)) != NULL ) {
/* Unescape the filename */
const char *unescaped = purple_unescape_filename(entry);
-
+
/* Copy the entry name into our list (GLib owns the original
string) */
idlist = g_list_prepend(idlist, g_strdup(unescaped));
@@ -1055,7 +1055,7 @@ x509_tls_peers_get_idlist(void)
/* Release the directory */
g_dir_close(dir);
-
+
return idlist;
}
@@ -1143,7 +1143,7 @@ x509_tls_cached_user_auth_cb (x509_tls_cached_ua_ctx *c, gint id)
g_return_if_fail(c);
g_return_if_fail(c->vrq);
-
+
vrq = c->vrq;
x509_tls_cached_ua_ctx_free(c);
@@ -1155,7 +1155,7 @@ x509_tls_cached_user_auth_cb (x509_tls_cached_ua_ctx *c, gint id)
purple_debug_info("certificate/x509/tls_cached",
"User ACCEPTED cert\nCaching first in chain for future use as %s...\n",
cache_id);
-
+
purple_certificate_pool_store(tls_peers, cache_id,
vrq->cert_chain->data);
@@ -1195,7 +1195,7 @@ x509_tls_cached_user_auth(PurpleCertificateVerificationRequest *vrq,
/* Make messages */
primary = g_strdup_printf(_("Accept certificate for %s?"),
vrq->subject_name);
-
+
/* Make a semi-pretty display */
purple_request_action(
vrq->cb_data, /* TODO: Find what the handle ought to be */
@@ -1211,7 +1211,7 @@ x509_tls_cached_user_auth(PurpleCertificateVerificationRequest *vrq,
_("Accept"), x509_tls_cached_user_auth_accept_cb,
_("Reject"), x509_tls_cached_user_auth_reject_cb,
_("_View Certificate..."), x509_tls_cached_show_cert);
-
+
/* Cleanup */
g_free(primary);
}
@@ -1225,7 +1225,7 @@ x509_tls_cached_peer_cert_changed(PurpleCertificateVerificationRequest *vrq)
"Certificate for %s does not match cached. "
"Auto-rejecting!\n",
vrq->subject_name);
-
+
purple_certificate_verify_complete(vrq, PURPLE_CERTIFICATE_INVALID);
return;
}
@@ -1245,7 +1245,7 @@ x509_tls_cached_cert_in_cache(PurpleCertificateVerificationRequest *vrq)
/* The peer's certificate should be the first in the list */
PurpleCertificate *peer_crt =
(PurpleCertificate *) vrq->cert_chain->data;
-
+
PurpleCertificate *cached_crt;
GByteArray *peer_fpr, *cached_fpr;
@@ -1278,7 +1278,7 @@ x509_tls_cached_cert_in_cache(PurpleCertificateVerificationRequest *vrq)
/* vrq now becomes the problem of the user */
x509_tls_cached_unknown_peer(vrq);
}
-
+
purple_certificate_destroy(cached_crt);
g_byte_array_free(peer_fpr, TRUE);
g_byte_array_free(cached_fpr, TRUE);
@@ -1305,7 +1305,7 @@ x509_tls_cached_unknown_peer(PurpleCertificateVerificationRequest *vrq)
"not self-signed" */
if ( purple_certificate_signed_by(peer_crt, peer_crt) ) {
gchar *msg;
-
+
purple_debug_info("certificate/x509/tls_cached",
"Certificate for %s is self-signed.\n",
vrq->subject_name);
@@ -1316,13 +1316,13 @@ x509_tls_cached_unknown_peer(PurpleCertificateVerificationRequest *vrq)
"is self-signed. It cannot be "
"automatically checked."),
vrq->subject_name);
-
+
x509_tls_cached_user_auth(vrq,msg);
g_free(msg);
return;
} /* if (self signed) */
-
+
/* Next, check that the certificate chain is valid */
if ( ! purple_certificate_check_signature_chain(chain) ) {
/* TODO: Tell the user where the chain broke? */
@@ -1390,7 +1390,7 @@ x509_tls_cached_unknown_peer(PurpleCertificateVerificationRequest *vrq)
}
g_free(ca_id);
-
+
/* Check the signature */
if ( !purple_certificate_signed_by(end_crt, ca_crt) ) {
/* TODO: If signed_by ever returns a reason, maybe mention
@@ -1406,7 +1406,7 @@ x509_tls_cached_unknown_peer(PurpleCertificateVerificationRequest *vrq)
"Authority from which it claims to "
"have a signature."),
vrq->subject_name);
-
+
purple_notify_error(NULL, /* TODO: Probably wrong */
_("SSL Certificate Error"),
_("Invalid certificate authority"
@@ -1425,7 +1425,7 @@ x509_tls_cached_unknown_peer(PurpleCertificateVerificationRequest *vrq)
vrq->subject_name) ) {
gchar *sn = purple_certificate_get_subject_name(peer_crt);
gchar *msg;
-
+
purple_debug_info("certificate/x509/tls_cached",
"Name mismatch: Certificate given for %s "
"has a name of %s\n",
@@ -1441,7 +1441,7 @@ x509_tls_cached_unknown_peer(PurpleCertificateVerificationRequest *vrq)
"connecting to the service you "
"believe you are."),
vrq->subject_name, sn);
-
+
x509_tls_cached_user_auth(vrq,msg);
g_free(sn);
@@ -1465,7 +1465,7 @@ x509_tls_cached_unknown_peer(PurpleCertificateVerificationRequest *vrq)
"Unable to locate tls_peers certificate "
"cache.\n");
}
-
+
/* Whew! Done! */
purple_certificate_verify_complete(vrq, PURPLE_CERTIFICATE_VALID);
}
@@ -1481,7 +1481,7 @@ x509_tls_cached_start_verify(PurpleCertificateVerificationRequest *vrq)
purple_debug_info("certificate/x509/tls_cached",
"Starting verify for %s\n",
vrq->subject_name);
-
+
tls_peers = purple_certificate_find_pool(x509_tls_cached.scheme_name,tls_peers_name);
if (!tls_peers) {
@@ -1494,7 +1494,7 @@ x509_tls_cached_start_verify(PurpleCertificateVerificationRequest *vrq)
x509_tls_cached_unknown_peer(vrq);
return;
}
-
+
/* Check if the peer has a certificate cached already */
purple_debug_info("certificate/x509/tls_cached",
"Checking for cached cert...\n");
@@ -1583,7 +1583,7 @@ purple_certificate_find_scheme(const gchar *name)
name);
/* TODO: Signalling and such? */
-
+
return NULL;
}
@@ -1611,7 +1611,7 @@ purple_certificate_register_scheme(PurpleCertificateScheme *scheme)
purple_debug_info("certificate",
"CertificateScheme %s registered\n",
scheme->name);
-
+
return TRUE;
}
@@ -1664,7 +1664,7 @@ purple_certificate_find_verifier(const gchar *scheme_name, const gchar *ver_name
scheme_name, ver_name);
/* TODO: Signalling and such? */
-
+
return NULL;
}
@@ -1742,7 +1742,7 @@ purple_certificate_find_pool(const gchar *scheme_name, const gchar *pool_name)
scheme_name, pool_name);
/* TODO: Signalling and such? */
-
+
return NULL;
}
@@ -1830,11 +1830,11 @@ purple_certificate_unregister_pool(PurpleCertificatePool *pool)
}
cert_pools = g_list_remove(cert_pools, pool);
-
+
/* TODO: Signalling? */
purple_signal_unregister(pool, "certificate-stored");
purple_signal_unregister(pool, "certificate-deleted");
-
+
purple_debug_info("certificate",
"CertificatePool %s unregistered\n",
pool->name);
diff --git a/libpurple/certificate.h b/libpurple/certificate.h
index 232b1a68e8..672bf93bf1 100644
--- a/libpurple/certificate.h
+++ b/libpurple/certificate.h
@@ -60,7 +60,7 @@ typedef struct _PurpleCertificateVerificationRequest PurpleCertificateVerificati
typedef void (*PurpleCertificateVerifiedCallback)
(PurpleCertificateVerificationStatus st,
gpointer userdata);
-
+
/** A certificate instance
*
* An opaque data structure representing a single certificate under some
@@ -96,7 +96,7 @@ struct _PurpleCertificatePool
/** Internal pool data */
gpointer data;
-
+
/**
* Set up the Pool's internal state
*
@@ -249,7 +249,7 @@ struct _PurpleCertificateScheme
/** Retrieve the certificate activation/expiration times */
gboolean (* get_times)(PurpleCertificate *crt, time_t *activation, time_t *expiration);
-
+
void (*_purple_reserved1)(void);
void (*_purple_reserved2)(void);
void (*_purple_reserved3)(void);
@@ -276,7 +276,7 @@ struct _PurpleCertificateVerifier
/** Name of the Verifier - case insensitive */
gchar *name;
-
+
/**
* Start the verification process
*
@@ -326,14 +326,14 @@ struct _PurpleCertificateVerificationRequest
* For X.509 certificates, this is the Common Name
*/
gchar *subject_name;
-
+
/** List of certificates in the chain to be verified (such as that returned by purple_ssl_get_peer_certificates )
*
* This is most relevant for X.509 certificates used in SSL sessions.
* The list order should be: certificate, issuer, issuer's issuer, etc.
*/
GList *cert_chain;
-
+
/** Internal data used by the Verifier code */
gpointer data;
@@ -437,7 +437,7 @@ purple_certificate_destroy_list (GList * crt_list);
*
* @return TRUE if 'crt' has a valid signature made by 'issuer',
* otherwise FALSE
- * @todo Find a way to give the reason (bad signature, not the issuer, etc.)
+ * @todo Find a way to give the reason (bad signature, not the issuer, etc.)
*/
gboolean
purple_certificate_signed_by(PurpleCertificate *crt, PurpleCertificate *issuer);
@@ -523,7 +523,7 @@ purple_certificate_get_subject_name(PurpleCertificate *crt);
/**
* Check the subject name against that on the certificate
* @param crt Certificate instance
- * @param name Name to check.
+ * @param name Name to check.
* @return TRUE if it is a match, else FALSE
*/
gboolean
diff --git a/libpurple/cipher.c b/libpurple/cipher.c
index 215b66a446..92047f356a 100644
--- a/libpurple/cipher.c
+++ b/libpurple/cipher.c
@@ -512,7 +512,7 @@ md4_reset(PurpleCipherContext *context, gpointer extra) {
}
static void
-md4_append(PurpleCipherContext *context, const guchar *data, size_t len)
+md4_append(PurpleCipherContext *context, const guchar *data, size_t len)
{
struct MD4_Context *mctx = purple_cipher_context_get_data(context);
const guint32 avail = sizeof(mctx->block) - (mctx->byte_count & 0x3f);
@@ -551,7 +551,7 @@ md4_digest(PurpleCipherContext *context, size_t in_len, guchar *out,
char *p = (char *)mctx->block + offset;
int padding = 56 - (offset + 1);
-
+
if(in_len<16) return FALSE;
if(out_len) *out_len = 16;
*p++ = 0x80;
@@ -659,7 +659,7 @@ hmac_set_opt(PurpleCipherContext *context, const gchar *name, void *value)
hctx = purple_cipher_context_get_data(context);
- if (!strcmp(name, "hash")) {
+ if (purple_strequal(name, "hash")) {
g_free(hctx->name);
if (hctx->hash)
purple_cipher_context_destroy(hctx->hash);
@@ -676,7 +676,7 @@ hmac_get_opt(PurpleCipherContext *context, const gchar *name)
hctx = purple_cipher_context_get_data(context);
- if (!strcmp(name, "hash")) {
+ if (purple_strequal(name, "hash")) {
return hctx->name;
}
@@ -684,7 +684,7 @@ hmac_get_opt(PurpleCipherContext *context, const gchar *name)
}
static void
-hmac_append(PurpleCipherContext *context, const guchar *data, size_t len)
+hmac_append(PurpleCipherContext *context, const guchar *data, size_t len)
{
struct HMAC_Context *hctx = purple_cipher_context_get_data(context);
@@ -778,7 +778,7 @@ hmac_set_key(PurpleCipherContext *context, const guchar * key)
hmac_set_key_with_len(context, key, strlen((char *)key));
}
-static size_t
+static size_t
hmac_get_block_size(PurpleCipherContext *context)
{
struct HMAC_Context *hctx = purple_cipher_context_get_data(context);
@@ -1022,11 +1022,11 @@ data[6] = (right >> 8) &0xff; data[7] = right &0xff;
* 16 encryption rounds.
* To calculate subkeys for decryption the caller
* have to reorder the generated subkeys.
- *
+ *
* rawkey: 8 Bytes of key data
* subkey: Array of at least 32 guint32s. Will be filled
* with calculated subkeys.
- *
+ *
**/
static void
des_key_schedule (const guint8 * rawkey, guint32 * subkey)
@@ -1186,7 +1186,7 @@ des_encrypt(PurpleCipherContext *context, const guchar data[],
buf,
output+offset,
0);
- }
+ }
return 0;
}
@@ -1216,7 +1216,7 @@ des_decrypt(PurpleCipherContext *context, const guchar data[],
buf,
output+offset,
1);
- }
+ }
return 0;
}
@@ -1692,11 +1692,11 @@ sha1_set_opt(PurpleCipherContext *context, const gchar *name, void *value) {
ctx = purple_cipher_context_get_data(context);
- if(!strcmp(name, "sizeHi")) {
+ if(purple_strequal(name, "sizeHi")) {
ctx->sizeHi = GPOINTER_TO_INT(value);
- } else if(!strcmp(name, "sizeLo")) {
+ } else if(purple_strequal(name, "sizeLo")) {
ctx->sizeLo = GPOINTER_TO_INT(value);
- } else if(!strcmp(name, "lenW")) {
+ } else if(purple_strequal(name, "lenW")) {
ctx->lenW = GPOINTER_TO_INT(value);
}
}
@@ -1707,11 +1707,11 @@ sha1_get_opt(PurpleCipherContext *context, const gchar *name) {
ctx = purple_cipher_context_get_data(context);
- if(!strcmp(name, "sizeHi")) {
+ if(purple_strequal(name, "sizeHi")) {
return GINT_TO_POINTER(ctx->sizeHi);
- } else if(!strcmp(name, "sizeLo")) {
+ } else if(purple_strequal(name, "sizeLo")) {
return GINT_TO_POINTER(ctx->sizeLo);
- } else if(!strcmp(name, "lenW")) {
+ } else if(purple_strequal(name, "lenW")) {
return GINT_TO_POINTER(ctx->lenW);
}
@@ -1942,12 +1942,12 @@ rc4_set_opt(PurpleCipherContext *context, const gchar *name, void *value) {
ctx = purple_cipher_context_get_data(context);
- if(!strcmp(name, "key_len")) {
+ if(purple_strequal(name, "key_len")) {
ctx->key_len = GPOINTER_TO_INT(value);
}
}
-static size_t
+static size_t
rc4_get_key_size (PurpleCipherContext *context)
{
struct RC4Context *ctx;
@@ -1967,7 +1967,7 @@ rc4_get_opt(PurpleCipherContext *context, const gchar *name) {
ctx = purple_cipher_context_get_data(context);
- if(!strcmp(name, "key_len")) {
+ if(purple_strequal(name, "key_len")) {
return GINT_TO_POINTER(ctx->key_len);
}
diff --git a/libpurple/cipher.h b/libpurple/cipher.h
index 1212e98f40..cc0f0a3c9f 100644
--- a/libpurple/cipher.h
+++ b/libpurple/cipher.h
@@ -422,7 +422,7 @@ PurpleCipherBatchMode purple_cipher_context_get_batch_mode(PurpleCipherContext *
size_t purple_cipher_context_get_block_size(PurpleCipherContext *context);
/**
- * Sets the key with a given length on a context
+ * Sets the key with a given length on a context
*
* @param context The context whose key to set
* @param key The key
diff --git a/libpurple/circbuffer.c b/libpurple/circbuffer.c
index 4f6d31666b..619d9c9758 100644
--- a/libpurple/circbuffer.c
+++ b/libpurple/circbuffer.c
@@ -44,7 +44,7 @@ void purple_circ_buffer_destroy(PurpleCircBuffer *buf) {
static void grow_circ_buffer(PurpleCircBuffer *buf, gsize len) {
int in_offset = 0, out_offset = 0;
int start_buflen;
-
+
g_return_if_fail(buf != NULL);
start_buflen = buf->buflen;
@@ -95,7 +95,7 @@ void purple_circ_buffer_append(PurpleCircBuffer *buf, gconstpointer src, gsize l
int len_stored;
g_return_if_fail(buf != NULL);
-
+
/* Grow the buffer, if necessary */
if ((buf->buflen - buf->bufused) < len)
grow_circ_buffer(buf, len);
diff --git a/libpurple/cmds.c b/libpurple/cmds.c
index 79553864fe..4e82c91d49 100644
--- a/libpurple/cmds.c
+++ b/libpurple/cmds.c
@@ -236,7 +236,7 @@ PurpleCmdStatus purple_cmd_do_command(PurpleConversation *conv, const gchar *cmd
for (l = cmds; l; l = l->next) {
c = l->data;
- if (strcmp(c->cmd, cmd) != 0)
+ if (!purple_strequal(c->cmd, cmd))
continue;
found = TRUE;
@@ -250,8 +250,8 @@ PurpleCmdStatus purple_cmd_do_command(PurpleConversation *conv, const gchar *cmd
right_type = TRUE;
- if ((c->flags & PURPLE_CMD_FLAG_PRPL_ONLY) && c->prpl_id &&
- (strcmp(c->prpl_id, prpl_id) != 0))
+ if ((c->flags & PURPLE_CMD_FLAG_PRPL_ONLY) &&
+ !purple_strequal(c->prpl_id, prpl_id))
continue;
right_prpl = TRUE;
@@ -320,8 +320,8 @@ GList *purple_cmd_list(PurpleConversation *conv)
if (!(c->flags & PURPLE_CMD_FLAG_CHAT))
continue;
- if (conv && (c->flags & PURPLE_CMD_FLAG_PRPL_ONLY) && c->prpl_id &&
- (strcmp(c->prpl_id, purple_account_get_protocol_id(purple_conversation_get_account(conv))) != 0))
+ if (conv && (c->flags & PURPLE_CMD_FLAG_PRPL_ONLY) &&
+ !purple_strequal(c->prpl_id, purple_account_get_protocol_id(purple_conversation_get_account(conv))))
continue;
ret = g_list_append(ret, c->cmd);
@@ -342,7 +342,7 @@ GList *purple_cmd_help(PurpleConversation *conv, const gchar *cmd)
for (l = cmds; l; l = l->next) {
c = l->data;
- if (cmd && (strcmp(cmd, c->cmd) != 0))
+ if (cmd && !purple_strequal(cmd, c->cmd))
continue;
if (conv && (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM))
@@ -352,8 +352,8 @@ GList *purple_cmd_help(PurpleConversation *conv, const gchar *cmd)
if (!(c->flags & PURPLE_CMD_FLAG_CHAT))
continue;
- if (conv && (c->flags & PURPLE_CMD_FLAG_PRPL_ONLY) && c->prpl_id &&
- (strcmp(c->prpl_id, purple_account_get_protocol_id(purple_conversation_get_account(conv))) != 0))
+ if (conv && (c->flags & PURPLE_CMD_FLAG_PRPL_ONLY) &&
+ !purple_strequal(c->prpl_id, purple_account_get_protocol_id(purple_conversation_get_account(conv))))
continue;
ret = g_list_append(ret, c->help);
diff --git a/libpurple/connection.c b/libpurple/connection.c
index 7e981f098b..13d62184e5 100644
--- a/libpurple/connection.c
+++ b/libpurple/connection.c
@@ -191,16 +191,16 @@ _purple_connection_new_unregister(PurpleAccount *account, const char *password,
PurpleConnection *gc;
PurplePlugin *prpl;
PurplePluginProtocolInfo *prpl_info;
-
+
g_return_if_fail(account != NULL);
-
+
prpl = purple_find_prpl(purple_account_get_protocol_id(account));
-
+
if (prpl != NULL)
prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
else {
gchar *message;
-
+
message = g_strdup_printf(_("Missing protocol plugin for %s"),
purple_account_get_username(account));
purple_notify_error(NULL, _("Unregistration Error"), message, NULL);
@@ -212,7 +212,7 @@ _purple_connection_new_unregister(PurpleAccount *account, const char *password,
prpl_info->unregister_user(account, cb, user_data);
return;
}
-
+
if (((password == NULL) || (*password == '\0')) &&
!(prpl_info->options & OPT_PROTO_NO_PASSWORD) &&
!(prpl_info->options & OPT_PROTO_PASSWORD_OPTIONAL))
@@ -221,10 +221,10 @@ _purple_connection_new_unregister(PurpleAccount *account, const char *password,
"a password.\n", purple_account_get_username(account));
return;
}
-
+
gc = g_new0(PurpleConnection, 1);
PURPLE_DBUS_REGISTER_POINTER(gc, PurpleConnection);
-
+
gc->prpl = prpl;
if ((password != NULL) && (*password != '\0'))
gc->password = g_strdup(password);
@@ -232,11 +232,11 @@ _purple_connection_new_unregister(PurpleAccount *account, const char *password,
purple_connection_set_state(gc, PURPLE_CONNECTING);
connections = g_list_append(connections, gc);
purple_account_set_connection(account, gc);
-
+
purple_signal_emit(purple_connections_get_handle(), "signing-on", gc);
-
+
purple_debug_info("connection", "Unregistering. gc = %p\n", gc);
-
+
prpl_info->unregister_user(account, cb, user_data);
}
@@ -285,7 +285,7 @@ _purple_connection_destroy(PurpleConnection *gc)
buddies = purple_find_buddies(account, NULL);
while (buddies != NULL) {
PurpleBuddy *buddy = buddies->data;
- buddy->proto_data = NULL;
+ purple_buddy_set_protocol_data(buddy, NULL);
buddies = g_slist_delete_link(buddies, buddies);
}
@@ -309,7 +309,7 @@ _purple_connection_destroy(PurpleConnection *gc)
g_free(gc->password);
g_free(gc->display_name);
- if (gc->disconnect_timeout)
+ if (gc->disconnect_timeout > 0)
purple_timeout_remove(gc->disconnect_timeout);
PURPLE_DBUS_UNREGISTER_POINTER(gc);
@@ -427,6 +427,13 @@ purple_connection_set_display_name(PurpleConnection *gc, const char *name)
gc->display_name = g_strdup(name);
}
+void
+purple_connection_set_protocol_data(PurpleConnection *connection, void *proto_data) {
+ g_return_if_fail(connection != NULL);
+
+ connection->proto_data = proto_data;
+}
+
PurpleConnectionState
purple_connection_get_state(const PurpleConnection *gc)
{
@@ -467,6 +474,13 @@ purple_connection_get_display_name(const PurpleConnection *gc)
return gc->display_name;
}
+void *
+purple_connection_get_protocol_data(const PurpleConnection *connection) {
+ g_return_val_if_fail(connection != NULL, NULL);
+
+ return connection->proto_data;
+}
+
void
purple_connection_update_progress(PurpleConnection *gc, const char *text,
size_t step, size_t count)
@@ -501,11 +515,20 @@ purple_connection_notice(PurpleConnection *gc, const char *text)
static gboolean
purple_connection_disconnect_cb(gpointer data)
{
- PurpleAccount *account = data;
- char *password = g_strdup(purple_account_get_password(account));
+ PurpleAccount *account;
+ PurpleConnection *gc;
+ char *password;
+
+ account = data;
+ gc = purple_account_get_connection(account);
+
+ gc->disconnect_timeout = 0;
+
+ password = g_strdup(purple_account_get_password(account));
purple_account_disconnect(account);
purple_account_set_password(account, password);
g_free(password);
+
return FALSE;
}
@@ -550,7 +573,7 @@ purple_connection_error_reason (PurpleConnection *gc,
}
/* If we've already got one error, we don't need any more */
- if (gc->disconnect_timeout)
+ if (gc->disconnect_timeout > 0)
return;
gc->wants_to_die = purple_connection_error_is_fatal (reason);
diff --git a/libpurple/connection.h b/libpurple/connection.h
index 8dc476daa8..8a0291ef5c 100644
--- a/libpurple/connection.h
+++ b/libpurple/connection.h
@@ -42,7 +42,7 @@ typedef enum
PURPLE_CONNECTION_FORMATTING_WBFO = 0x0008, /**< The text buffer must be formatted as a whole */
PURPLE_CONNECTION_NO_NEWLINES = 0x0010, /**< No new lines are allowed in outgoing messages */
PURPLE_CONNECTION_NO_FONTSIZE = 0x0020, /**< Connection does not send/receive font sizes */
- PURPLE_CONNECTION_NO_URLDESC = 0x0040, /**< Connection does not support descriptions with links */
+ PURPLE_CONNECTION_NO_URLDESC = 0x0040, /**< Connection does not support descriptions with links */
PURPLE_CONNECTION_NO_IMAGES = 0x0080, /**< Connection does not support sending of images */
PURPLE_CONNECTION_ALLOW_CUSTOM_SMILEY = 0x0100 /**< Connection supports sending and receiving custom smileys */
@@ -56,7 +56,9 @@ typedef enum
} PurpleConnectionState;
-/** Possible errors that can cause a connection to be closed.
+/**
+ * Possible errors that can cause a connection to be closed.
+ *
* @since 2.3.0
*/
typedef enum
@@ -70,7 +72,7 @@ typedef enum
PURPLE_CONNECTION_ERROR_INVALID_USERNAME = 1,
/** The username, password or some other credential was incorrect. Use
* #PURPLE_CONNECTION_ERROR_INVALID_USERNAME instead if the username
- * is known to be invalid.
+ * is known to be invalid.
*/
PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED = 2,
/** libpurple doesn't speak any of the authentication methods the
@@ -92,7 +94,7 @@ typedef enum
PURPLE_CONNECTION_ERROR_NAME_IN_USE = 6,
/** The username/server/other preference for the account isn't valid.
- * For instance, on IRC the screen name cannot contain white space.
+ * For instance, on IRC the username cannot contain white space.
* This reason should not be used for incorrect passwords etc: use
* #PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED for that.
*
@@ -148,71 +150,84 @@ typedef struct
#include "status.h"
#include "sslconn.h"
-/** Connection UI operations. Used to notify the user of changes to
- * connections, such as being disconnected, and to respond to the
- * underlying network connection appearing and disappearing. UIs should
- * call #purple_connections_set_ui_ops() with an instance of this struct.
+/**
+ * Connection UI operations. Used to notify the user of changes to
+ * connections, such as being disconnected, and to respond to the
+ * underlying network connection appearing and disappearing. UIs should
+ * call #purple_connections_set_ui_ops() with an instance of this struct.
*
- * @see @ref ui-ops
+ * @see @ref ui-ops
*/
typedef struct
{
- /** When an account is connecting, this operation is called to notify
- * the UI of what is happening, as well as which @a step out of @a
- * step_count has been reached (which might be displayed as a progress
- * bar).
- * @see #purple_connection_update_progress
+ /**
+ * When an account is connecting, this operation is called to notify
+ * the UI of what is happening, as well as which @a step out of @a
+ * step_count has been reached (which might be displayed as a progress
+ * bar).
+ * @see #purple_connection_update_progress
*/
void (*connect_progress)(PurpleConnection *gc,
const char *text,
size_t step,
size_t step_count);
- /** Called when a connection is established (just before the
- * @ref signed-on signal).
+ /**
+ * Called when a connection is established (just before the
+ * @ref signed-on signal).
*/
void (*connected)(PurpleConnection *gc);
- /** Called when a connection is ended (between the @ref signing-off
- * and @ref signed-off signals).
+
+ /**
+ * Called when a connection is ended (between the @ref signing-off
+ * and @ref signed-off signals).
*/
void (*disconnected)(PurpleConnection *gc);
- /** Used to display connection-specific notices. (Pidgin's Gtk user
- * interface implements this as a no-op; #purple_connection_notice(),
- * which uses this operation, is not used by any of the protocols
- * shipped with libpurple.)
+ /**
+ * Used to display connection-specific notices. (Pidgin's Gtk user
+ * interface implements this as a no-op; #purple_connection_notice(),
+ * which uses this operation, is not used by any of the protocols
+ * shipped with libpurple.)
*/
void (*notice)(PurpleConnection *gc, const char *text);
- /** Called when an error causes a connection to be disconnected.
- * Called before #disconnected.
- * @param text a localized error message.
- * @see #purple_connection_error
- * @deprecated in favour of
- * #PurpleConnectionUiOps.report_disconnect_reason.
+ /**
+ * Called when an error causes a connection to be disconnected.
+ * Called before #disconnected.
+ * @param text a localized error message.
+ * @see #purple_connection_error
+ * @deprecated in favour of
+ * #PurpleConnectionUiOps.report_disconnect_reason.
*/
void (*report_disconnect)(PurpleConnection *gc, const char *text);
- /** Called when libpurple discovers that the computer's network
- * connection is active. On Linux, this uses Network Manager if
- * available; on Windows, it uses Win32's network change notification
- * infrastructure.
+ /**
+ * Called when libpurple discovers that the computer's network
+ * connection is active. On Linux, this uses Network Manager if
+ * available; on Windows, it uses Win32's network change notification
+ * infrastructure.
*/
void (*network_connected)(void);
- /** Called when libpurple discovers that the computer's network
- * connection has gone away.
+
+ /**
+ * Called when libpurple discovers that the computer's network
+ * connection has gone away.
*/
void (*network_disconnected)(void);
- /** Called when an error causes a connection to be disconnected.
+ /**
+ * Called when an error causes a connection to be disconnected.
* Called before #disconnected. This op is intended to replace
* #report_disconnect. If both are implemented, this will be called
* first; however, there's no real reason to implement both.
+ *
* @param reason why the connection ended, if known, or
* #PURPLE_CONNECTION_ERROR_OTHER_ERROR, if not.
* @param text a localized message describing the disconnection
* in more detail to the user.
* @see #purple_connection_error_reason
+ *
* @since 2.3.0
*/
void (*report_disconnect_reason)(PurpleConnection *gc,
@@ -354,6 +369,16 @@ void purple_connection_set_account(PurpleConnection *gc, PurpleAccount *account)
void purple_connection_set_display_name(PurpleConnection *gc, const char *name);
/**
+ * Sets the protocol data for a connection.
+ *
+ * @param connection The PurpleConnection.
+ * @param proto_data The protocol data to set for the connection.
+ *
+ * @since 2.6.0
+ */
+void purple_connection_set_protocol_data(PurpleConnection *connection, void *proto_data);
+
+/**
* Returns the connection state.
*
* @param gc The connection.
@@ -385,6 +410,7 @@ PurpleAccount *purple_connection_get_account(const PurpleConnection *gc);
* @param gc The connection.
*
* @return The protocol plugin.
+ *
* @since 2.4.0
*/
PurplePlugin * purple_connection_get_prpl(const PurpleConnection *gc);
@@ -408,6 +434,17 @@ const char *purple_connection_get_password(const PurpleConnection *gc);
const char *purple_connection_get_display_name(const PurpleConnection *gc);
/**
+ * Gets the protocol data from a connection.
+ *
+ * @param connection The PurpleConnection.
+ *
+ * @return The protocol data for the connection.
+ *
+ * @since 2.6.0
+ */
+void *purple_connection_get_protocol_data(const PurpleConnection *connection);
+
+/**
* Updates the connection progress.
*
* @param gc The connection.
@@ -450,6 +487,7 @@ void purple_connection_error(PurpleConnection *gc, const char *reason);
* @param gc the connection which is closing.
* @param reason why the connection is closing.
* @param description a non-@c NULL localized description of the error.
+ *
* @since 2.3.0
*/
void
@@ -461,6 +499,7 @@ purple_connection_error_reason (PurpleConnection *gc,
* Closes a connection due to an SSL error; this is basically a shortcut to
* turning the #PurpleSslErrorType into a #PurpleConnectionError and a
* human-readable string and then calling purple_connection_error_reason().
+ *
* @since 2.3.0
*/
void
@@ -484,6 +523,7 @@ purple_connection_ssl_error (PurpleConnection *gc,
*
* @return @c TRUE if the account should not be automatically reconnected, and
* @c FALSE otherwise.
+ *
* @since 2.3.0
*/
gboolean
@@ -520,6 +560,9 @@ GList *purple_connections_get_connecting(void);
* Checks if gc is still a valid pointer to a gc.
*
* @return @c TRUE if gc is valid.
+ *
+ * @deprecated Do not use this. Instead, cancel your asynchronous request
+ * when the PurpleConnection is destroyed.
*/
/*
* TODO: Eventually this bad boy will be removed, because it is
diff --git a/libpurple/conversation.c b/libpurple/conversation.c
index 73f1ba238f..db00278879 100644
--- a/libpurple/conversation.c
+++ b/libpurple/conversation.c
@@ -55,7 +55,6 @@ reset_typing_cb(gpointer data)
im = PURPLE_CONV_IM(c);
purple_conv_im_set_typing_state(im, PURPLE_NOT_TYPING);
- purple_conv_im_update_typing(im);
purple_conv_im_stop_typing_timeout(im);
return FALSE;
@@ -665,7 +664,7 @@ purple_conversation_autoset_title(PurpleConversation *conv)
text = purple_buddy_get_contact_alias(b);
} else if(purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT) {
if(account && ((chat = purple_blist_find_chat(account, name)) != NULL))
- text = chat->alias;
+ text = purple_chat_get_name(chat);
}
@@ -912,7 +911,7 @@ purple_conversation_write(PurpleConversation *conv, const char *who,
if (purple_account_get_alias(account) != NULL)
alias = account->alias;
- else if (b != NULL && strcmp(b->name, purple_buddy_get_contact_alias(b)))
+ else if (b != NULL && !purple_strequal(purple_buddy_get_name(b), purple_buddy_get_contact_alias(b)))
alias = purple_buddy_get_contact_alias(b);
else if (purple_connection_get_display_name(gc) != NULL)
alias = purple_connection_get_display_name(gc);
@@ -1050,6 +1049,8 @@ purple_conv_im_set_typing_state(PurpleConvIm *im, PurpleTypingState state)
"buddy-typing-stopped", im->conv->account, im->conv->name);
break;
}
+
+ purple_conv_im_update_typing(im);
}
}
@@ -1481,7 +1482,7 @@ purple_conv_chat_write(PurpleConvChat *chat, const char *who, const char *messag
str = purple_normalize(account, who);
- if (!strcmp(str, chat->nick)) {
+ if (purple_strequal(str, chat->nick)) {
flags |= PURPLE_MESSAGE_SEND;
} else {
flags |= PURPLE_MESSAGE_RECV;
@@ -1600,7 +1601,7 @@ purple_conv_chat_add_users(PurpleConvChat *chat, GList *users, GList *extra_msgs
const char *extra_msg = (extra_msgs ? extra_msgs->data : NULL);
if(!(prpl_info->options & OPT_PROTO_UNIQUE_CHATNAME)) {
- if (!strcmp(chat->nick, purple_normalize(conv->account, user))) {
+ if (purple_strequal(chat->nick, purple_normalize(conv->account, user))) {
const char *alias2 = purple_account_get_alias(conv->account);
if (alias2 != NULL)
alias = alias2;
@@ -1691,7 +1692,7 @@ purple_conv_chat_rename_user(PurpleConvChat *chat, const char *old_user,
prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(gc));
g_return_if_fail(prpl_info != NULL);
- if (!strcmp(chat->nick, purple_normalize(conv->account, old_user))) {
+ if (purple_strequal(chat->nick, purple_normalize(conv->account, old_user))) {
const char *alias;
/* Note this for later. */
@@ -2003,6 +2004,66 @@ purple_conv_chat_left(PurpleConvChat *chat)
purple_conversation_update(chat->conv, PURPLE_CONV_UPDATE_CHATLEFT);
}
+static void
+invite_user_to_chat(gpointer data, PurpleRequestFields *fields)
+{
+ PurpleConversation *conv;
+ PurpleConvChat *chat;
+ const char *user, *message;
+
+ conv = data;
+ chat = PURPLE_CONV_CHAT(conv);
+ user = purple_request_fields_get_string(fields, "screenname");
+ message = purple_request_fields_get_string(fields, "message");
+
+ serv_chat_invite(purple_conversation_get_gc(conv), chat->id, message, user);
+}
+
+void purple_conv_chat_invite_user(PurpleConvChat *chat, const char *user,
+ const char *message, gboolean confirm)
+{
+ PurpleAccount *account;
+ PurpleConversation *conv;
+ PurpleRequestFields *fields;
+ PurpleRequestFieldGroup *group;
+ PurpleRequestField *field;
+
+ g_return_if_fail(chat);
+
+ if (!user || !*user || !message || !*message)
+ confirm = TRUE;
+
+ conv = chat->conv;
+ account = conv->account;
+
+ if (!confirm) {
+ serv_chat_invite(purple_account_get_connection(account),
+ purple_conv_chat_get_id(chat), message, user);
+ return;
+ }
+
+ fields = purple_request_fields_new();
+ group = purple_request_field_group_new(_("Invite to chat"));
+ purple_request_fields_add_group(fields, group);
+
+ field = purple_request_field_string_new("screenname", _("Buddy"), user, FALSE);
+ purple_request_field_group_add_field(group, field);
+ purple_request_field_set_required(field, TRUE);
+ purple_request_field_set_type_hint(field, "screenname");
+
+ field = purple_request_field_string_new("message", _("Message"), message, FALSE);
+ purple_request_field_group_add_field(group, field);
+
+ purple_request_fields(conv, _("Invite to chat"), NULL,
+ _("Please enter the name of the user you wish to invite, "
+ "along with an optional invite message."),
+ fields,
+ _("Invite"), G_CALLBACK(invite_user_to_chat),
+ _("Cancel"), NULL,
+ account, user, conv,
+ conv);
+}
+
gboolean
purple_conv_chat_has_left(PurpleConvChat *chat)
{
diff --git a/libpurple/conversation.h b/libpurple/conversation.h
index b01708604f..9090645d4e 100644
--- a/libpurple/conversation.h
+++ b/libpurple/conversation.h
@@ -1300,6 +1300,22 @@ PurpleConversation *purple_find_chat(const PurpleConnection *gc, int id);
void purple_conv_chat_left(PurpleConvChat *chat);
/**
+ * Invite a user to a chat.
+ * The user will be prompted to enter the user's name or a message if one is
+ * not given.
+ *
+ * @param chat The chat.
+ * @param user The user to invite to the chat.
+ * @param message The message to send with the invitation.
+ * @param confirm Prompt before sending the invitation. The user is always
+ * prompted if either #user or #message is @c NULL.
+ *
+ * @since 2.6.0
+ */
+void purple_conv_chat_invite_user(PurpleConvChat *chat, const char *user,
+ const char *message, gboolean confirm);
+
+/**
* Returns true if we're no longer in this chat,
* and just left the window open.
*
@@ -1350,7 +1366,7 @@ void purple_conv_chat_cb_destroy(PurpleConvChatBuddy *cb);
* Retrieves the extended menu items for the conversation.
*
* @param conv The conversation.
- *
+ *
* @return A list of PurpleMenuAction items, harvested by the
* chat-extended-menu signal. The list and the menuaction
* items should be freed by the caller.
diff --git a/libpurple/core.c b/libpurple/core.c
index 541d4e50b5..431a753954 100644
--- a/libpurple/core.c
+++ b/libpurple/core.c
@@ -46,9 +46,11 @@
#include "signals.h"
#include "smiley.h"
#include "sound.h"
+#include "sound-theme-loader.h"
#include "sslconn.h"
#include "status.h"
#include "stun.h"
+#include "theme-manager.h"
#include "util.h"
#ifdef HAVE_DBUS
@@ -143,6 +145,8 @@ purple_core_init(const char *ui)
purple_plugins_probe(G_MODULE_SUFFIX);
+ purple_theme_manager_init();
+
/* The buddy icon code uses the imgstore, so init it early. */
purple_imgstore_init();
@@ -171,7 +175,7 @@ purple_core_init(const char *ui)
purple_xfers_init();
purple_idle_init();
purple_smileys_init();
-
+ purple_theme_manager_init();
/*
* Call this early on to try to auto-detect our IP address and
* hopefully save some time later.
@@ -181,6 +185,9 @@ purple_core_init(const char *ui)
if (ops != NULL && ops->ui_init != NULL)
ops->ui_init();
+ /* The UI may have registered some theme types, so refresh them */
+ purple_theme_manager_refresh();
+
return TRUE;
}
@@ -206,6 +213,14 @@ purple_core_quit(void)
*/
purple_certificate_uninit();
+ /* The SSL plugins must be uninit before they're unloaded */
+ purple_ssl_uninit();
+
+ /* Unload all non-loader, non-prpl plugins before shutting down
+ * subsystems. */
+ purple_debug_info("main", "Unloading normal plugins\n");
+ purple_plugins_unload(PURPLE_PLUGIN_STANDARD);
+
/* Save .xml files, remove signals, etc. */
purple_smileys_uninit();
purple_idle_uninit();
@@ -216,19 +231,19 @@ purple_core_quit(void)
purple_conversations_uninit();
purple_connections_uninit();
purple_buddy_icons_uninit();
- purple_accounts_uninit();
purple_savedstatuses_uninit();
purple_status_uninit();
+ purple_accounts_uninit();
purple_sound_uninit();
+ purple_theme_manager_uninit();
purple_xfers_uninit();
purple_proxy_uninit();
purple_dnsquery_uninit();
purple_imgstore_uninit();
purple_network_uninit();
- /* The SSL plugins must be uninit before they're unloaded */
- purple_ssl_uninit();
-
+ /* Everything after unloading all plugins must not fail if prpls aren't
+ * around */
purple_debug_info("main", "Unloading all plugins\n");
purple_plugins_destroy_all();
@@ -236,7 +251,7 @@ purple_core_quit(void)
if (ops != NULL && ops->quit != NULL)
ops->quit();
- /* Everything after this must not try to read any prefs */
+ /* Everything after prefs_uninit must not try to read any prefs */
purple_prefs_uninit();
purple_plugins_uninit();
#ifdef HAVE_DBUS
@@ -244,8 +259,9 @@ purple_core_quit(void)
#endif
purple_cmds_uninit();
- /* Everything after this cannot try to write things to the confdir */
+ /* Everything after util_uninit cannot try to write things to the confdir */
purple_util_uninit();
+ purple_log_uninit();
purple_signals_uninit();
@@ -347,15 +363,7 @@ purple_core_ensure_single_instance()
const char *user_dir = purple_user_dir();
char *dbus_owner_user_dir = purple_dbus_owner_user_dir();
- if (NULL == user_dir && NULL != dbus_owner_user_dir)
- is_single_instance = TRUE;
- else if (NULL != user_dir && NULL == dbus_owner_user_dir)
- is_single_instance = TRUE;
- else if (NULL == user_dir && NULL == dbus_owner_user_dir)
- is_single_instance = FALSE;
- else
- is_single_instance = strcmp(dbus_owner_user_dir, user_dir);
-
+ is_single_instance = !purple_strequal(dbus_owner_user_dir, user_dir);
g_free(dbus_owner_user_dir);
}
}
@@ -486,7 +494,7 @@ purple_core_migrate(void)
if (g_file_test(name, G_FILE_TEST_IS_SYMLINK))
{
/* We're only going to duplicate a logs symlink. */
- if (!strcmp(entry, "logs"))
+ if (purple_strequal(entry, "logs"))
{
char *link;
#if GLIB_CHECK_VERSION(2,4,0)
@@ -529,7 +537,8 @@ purple_core_migrate(void)
logs_dir = g_build_filename(user_dir, "logs", NULL);
- if (!strcmp(link, "../.purple/logs") || !strcmp(link, logs_dir))
+ if (purple_strequal(link, "../.purple/logs") ||
+ purple_strequal(link, logs_dir))
{
/* If the symlink points to the new directory, we're
* likely just trying again after a failed migration,
@@ -574,7 +583,7 @@ purple_core_migrate(void)
/* Deal with directories... */
if (g_file_test(name, G_FILE_TEST_IS_DIR))
{
- if (!strcmp(entry, "icons"))
+ if (purple_strequal(entry, "icons"))
{
/* This is a special case for the Album plugin, which
* stores data in the icons folder. We're not copying
@@ -643,7 +652,7 @@ purple_core_migrate(void)
g_dir_close(icons_dir);
}
- else if (!strcmp(entry, "plugins"))
+ else if (purple_strequal(entry, "plugins"))
{
/* Do nothing, because we broke plugin compatibility.
* This means that the plugins directory gets left behind. */
diff --git a/libpurple/core.h b/libpurple/core.h
index 1e4c427309..59ae68d412 100644
--- a/libpurple/core.h
+++ b/libpurple/core.h
@@ -90,17 +90,17 @@ void purple_core_quit(void);
/**
* <p>
- * Calls purple_core_quit(). This can be used as the function
- * passed to purple_timeout_add() when you want to shutdown Purple
- * in a specified amount of time. When shutting down Purple
+ * Calls purple_core_quit(). This can be used as the function
+ * passed to purple_timeout_add() when you want to shutdown Purple
+ * in a specified amount of time. When shutting down Purple
* from a plugin, you must use this instead of purple_core_quit();
- * for an immediate exit, use a timeout value of 0:
+ * for an immediate exit, use a timeout value of 0:
* </p>
*
* <code>purple_timeout_add(0, purple_core_quitcb, NULL);</code>
*
* <p>
- * This is ensures that code from your plugin is not being
+ * This is ensures that code from your plugin is not being
* executed when purple_core_quit() is called. If the plugin
* called purple_core_quit() directly, you would get a core dump
* after purple_core_quit() executes and control returns to your
@@ -186,6 +186,10 @@ gboolean purple_core_ensure_single_instance(void);
*
* <dt><tt>dev_website</tt></dt>
* <dd>the UI's development/support website, such as http://developer.pidgin.im.</dd>
+ *
+ * <dt><tt>client_type</tt></dt>
+ * <dd>the type of UI (pc, console, phone, handheld, web, bot)</dd>
+ *
* </dl>
*
* @return A GHashTable with strings for keys and values. This
diff --git a/libpurple/dbus-analyze-functions.py b/libpurple/dbus-analyze-functions.py
index 9675b7b59c..2433256327 100644
--- a/libpurple/dbus-analyze-functions.py
+++ b/libpurple/dbus-analyze-functions.py
@@ -31,6 +31,15 @@ excluded = [\
"purple_account_unregister",
"purple_connection_new_unregister",
+ # These functions are excluded because they involve setting arbitrary
+ # data via pointers for protocols and UIs. This just won't work.
+ "purple_blist_get_ui_data",
+ "purple_blist_set_ui_data",
+ "purple_blist_node_get_ui_data",
+ "purple_blist_node_set_ui_data",
+ "purple_buddy_get_protocol_data",
+ "purple_buddy_set_protocol_data",
+
# This is excluded because this script treats PurpleLogReadFlags*
# as pointer to a struct, instead of a pointer to an enum. This
# causes a compilation error. Someone should fix this script.
diff --git a/libpurple/dbus-bindings.h b/libpurple/dbus-bindings.h
index db5e426332..5611ae58a7 100644
--- a/libpurple/dbus-bindings.h
+++ b/libpurple/dbus-bindings.h
@@ -84,7 +84,7 @@ purple_dbus_message_iter_get_args_valist (DBusMessageIter *iter,
int first_arg_type,
va_list var_args);
-dbus_int32_t* purple_dbusify_GList(GList *list, gboolean free_memory,
+dbus_int32_t* purple_dbusify_GList(GList *list, gboolean free_memory,
dbus_int32_t *len);
dbus_int32_t* purple_dbusify_GSList(GSList *list, gboolean free_memory,
dbus_int32_t *len);
diff --git a/libpurple/dbus-server.h b/libpurple/dbus-server.h
index 6b1649d369..e970866e9d 100644
--- a/libpurple/dbus-server.h
+++ b/libpurple/dbus-server.h
@@ -173,7 +173,7 @@ void *purple_dbus_get_handle(void);
/**
* Determines whether this instance owns the DBus service name
- *
+ *
* @since 2.1.0
*/
gboolean purple_dbus_is_owner(void);
diff --git a/libpurple/desktopitem.c b/libpurple/desktopitem.c
index 1ddb5c2ddc..fa6d7340db 100644
--- a/libpurple/desktopitem.c
+++ b/libpurple/desktopitem.c
@@ -41,12 +41,12 @@
* modify it under the terms of the GNU Library General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
- *
+ *
* The Gnome Library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
- *
+ *
* You should have received a copy of the GNU Library General Public
* License along with the Gnome Library; see the file COPYING.LIB. If not,
* write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
@@ -67,7 +67,7 @@ struct _PurpleDesktopItem {
GList *languages;
PurpleDesktopItemType type;
-
+
/* `modified' means that the ditem has been
* modified since the last save. */
gboolean modified;
@@ -108,30 +108,30 @@ type_from_string (const char *type)
switch (type [0]) {
case 'A':
- if (!strcmp (type, "Application"))
+ if (purple_strequal (type, "Application"))
return PURPLE_DESKTOP_ITEM_TYPE_APPLICATION;
break;
case 'L':
- if (!strcmp (type, "Link"))
+ if (purple_strequal (type, "Link"))
return PURPLE_DESKTOP_ITEM_TYPE_LINK;
break;
case 'F':
- if (!strcmp (type, "FSDevice"))
+ if (purple_strequal (type, "FSDevice"))
return PURPLE_DESKTOP_ITEM_TYPE_FSDEVICE;
break;
case 'M':
- if (!strcmp (type, "MimeType"))
+ if (purple_strequal (type, "MimeType"))
return PURPLE_DESKTOP_ITEM_TYPE_MIME_TYPE;
break;
case 'D':
- if (!strcmp (type, "Directory"))
+ if (purple_strequal (type, "Directory"))
return PURPLE_DESKTOP_ITEM_TYPE_DIRECTORY;
break;
case 'S':
- if (!strcmp (type, "Service"))
+ if (purple_strequal (type, "Service"))
return PURPLE_DESKTOP_ITEM_TYPE_SERVICE;
- else if (!strcmp (type, "ServiceType"))
+ else if (purple_strequal (type, "ServiceType"))
return PURPLE_DESKTOP_ITEM_TYPE_SERVICE_TYPE;
break;
default:
@@ -149,12 +149,12 @@ find_section (PurpleDesktopItem *item, const char *section)
if (section == NULL)
return NULL;
- if (strcmp (section, "Desktop Entry") == 0)
+ if (purple_strequal (section, "Desktop Entry"))
return NULL;
for (li = item->sections; li != NULL; li = li->next) {
sec = li->data;
- if (strcmp (sec->name, section) == 0)
+ if (purple_strequal (sec->name, section))
return sec;
}
@@ -235,7 +235,7 @@ set (PurpleDesktopItem *item, const char *key, const char *value)
item->keys = g_list_append (item->keys,
g_strdup (key));
- g_hash_table_replace (item->main_hash,
+ g_hash_table_replace (item->main_hash,
g_strdup (key),
g_strdup (value));
} else {
@@ -264,7 +264,7 @@ _purple_desktop_item_set_string (PurpleDesktopItem *item,
set (item, attr, value);
- if (strcmp (attr, PURPLE_DESKTOP_ITEM_TYPE) == 0)
+ if (purple_strequal (attr, PURPLE_DESKTOP_ITEM_TYPE))
item->type = type_from_string (value);
}
@@ -280,7 +280,7 @@ _purple_desktop_item_new (void)
retval->main_hash = g_hash_table_new_full (g_str_hash, g_str_equal,
(GDestroyNotify) g_free,
(GDestroyNotify) g_free);
-
+
/* These are guaranteed to be set */
_purple_desktop_item_set_string (retval,
PURPLE_DESKTOP_ITEM_NAME,
@@ -354,16 +354,16 @@ get_encoding (FILE *df)
p++;
if (*p == ' ')
p++;
- if (strcmp (p, "UTF-8") == 0) {
+ if (purple_strequal (p, "UTF-8")) {
return ENCODING_UTF8;
- } else if (strcmp (p, "Legacy-Mixed") == 0) {
+ } else if (purple_strequal (p, "Legacy-Mixed")) {
return ENCODING_LEGACY_MIXED;
} else {
/* According to the spec we're not supposed
* to read a file like this */
return ENCODING_UNKNOWN;
}
- } else if (strcmp ("[KDE Desktop Entry]", buf) == 0) {
+ } else if (purple_strequal ("[KDE Desktop Entry]", buf)) {
old_kde = TRUE;
/* don't break yet, we still want to support
* Encoding even here */
@@ -557,7 +557,7 @@ decode_string (const char *value, Encoding encoding, const char *locale)
char *utf8_string;
if (char_encoding == NULL)
return NULL;
- if (strcmp (char_encoding, "ASCII") == 0) {
+ if (purple_strequal (char_encoding, "ASCII")) {
return decode_string_and_dup (value);
}
utf8_string = g_convert (value, -1, "UTF-8", char_encoding,
@@ -673,7 +673,7 @@ insert_key (PurpleDesktopItem *item,
char *val;
/* we always store everything in UTF-8 */
if (cur_section == NULL &&
- strcmp (key, PURPLE_DESKTOP_ITEM_ENCODING) == 0) {
+ purple_strequal (key, PURPLE_DESKTOP_ITEM_ENCODING)) {
k = g_strdup (key);
val = g_strdup ("UTF-8");
} else {
@@ -690,14 +690,14 @@ insert_key (PurpleDesktopItem *item,
g_free (locale);
return;
}
-
+
g_strchomp (val);
/* For old KDE entries, we can also split by a comma
* on sort order, so convert to semicolons */
if (old_kde &&
cur_section == NULL &&
- strcmp (key, PURPLE_DESKTOP_ITEM_SORT_ORDER) == 0 &&
+ purple_strequal (key, PURPLE_DESKTOP_ITEM_SORT_ORDER) &&
strchr (val, ';') == NULL) {
int i;
for (i = 0; val[i] != '\0'; i++) {
@@ -720,7 +720,7 @@ insert_key (PurpleDesktopItem *item,
/* Take care of the language part */
if (locale != NULL &&
- strcmp (locale, "C") == 0) {
+ purple_strequal (locale, "C")) {
char *p;
/* Whack C locale */
p = strchr (k, '[');
@@ -791,11 +791,10 @@ setup_type (PurpleDesktopItem *item, const char *uri)
PURPLE_DESKTOP_ITEM_TYPE);
if (type == NULL && uri != NULL) {
char *base = g_path_get_basename (uri);
- if (base != NULL &&
- strcmp (base, ".directory") == 0) {
+ if (purple_strequal(base, ".directory")) {
/* This gotta be a directory */
g_hash_table_replace (item->main_hash,
- g_strdup (PURPLE_DESKTOP_ITEM_TYPE),
+ g_strdup (PURPLE_DESKTOP_ITEM_TYPE),
g_strdup ("Directory"));
item->keys = g_list_prepend
(item->keys, g_strdup (PURPLE_DESKTOP_ITEM_TYPE));
@@ -813,7 +812,7 @@ static const char *
lookup_locale (const PurpleDesktopItem *item, const char *key, const char *locale)
{
if (locale == NULL ||
- strcmp (locale, "C") == 0) {
+ purple_strequal (locale, "C")) {
return lookup (item, key);
} else {
const char *ret;
@@ -824,7 +823,11 @@ lookup_locale (const PurpleDesktopItem *item, const char *key, const char *local
}
}
-/* fallback to find something suitable for C locale */
+/**
+ * Fallback to find something suitable for C locale.
+ *
+ * @return A newly allocated string which should be g_freed by the caller.
+ */
static char *
try_english_key (PurpleDesktopItem *item, const char *key)
{
@@ -857,7 +860,7 @@ sanitize (PurpleDesktopItem *item, const char *uri)
type = lookup (item, PURPLE_DESKTOP_ITEM_TYPE);
/* understand old gnome style url exec thingies */
- if (type != NULL && strcmp (type, "URL") == 0) {
+ if (purple_strequal(type, "URL")) {
const char *exec = lookup (item, PURPLE_DESKTOP_ITEM_EXEC);
set (item, PURPLE_DESKTOP_ITEM_TYPE, "Link");
if (exec != NULL) {
@@ -877,7 +880,7 @@ sanitize (PurpleDesktopItem *item, const char *uri)
if (name == NULL)
name = g_strdup (_("No name"));
g_hash_table_replace (item->main_hash,
- g_strdup (PURPLE_DESKTOP_ITEM_NAME),
+ g_strdup (PURPLE_DESKTOP_ITEM_NAME),
name);
item->keys = g_list_prepend
(item->keys, g_strdup (PURPLE_DESKTOP_ITEM_NAME));
@@ -885,7 +888,7 @@ sanitize (PurpleDesktopItem *item, const char *uri)
if (lookup (item, PURPLE_DESKTOP_ITEM_ENCODING) == NULL) {
/* We store everything in UTF-8 so write that down */
g_hash_table_replace (item->main_hash,
- g_strdup (PURPLE_DESKTOP_ITEM_ENCODING),
+ g_strdup (PURPLE_DESKTOP_ITEM_ENCODING),
g_strdup ("UTF-8"));
item->keys = g_list_prepend
(item->keys, g_strdup (PURPLE_DESKTOP_ITEM_ENCODING));
@@ -893,7 +896,7 @@ sanitize (PurpleDesktopItem *item, const char *uri)
if (lookup (item, PURPLE_DESKTOP_ITEM_VERSION) == NULL) {
/* this is the version that we follow, so write it down */
g_hash_table_replace (item->main_hash,
- g_strdup (PURPLE_DESKTOP_ITEM_VERSION),
+ g_strdup (PURPLE_DESKTOP_ITEM_VERSION),
g_strdup ("1.0"));
item->keys = g_list_prepend
(item->keys, g_strdup (PURPLE_DESKTOP_ITEM_VERSION));
@@ -954,7 +957,7 @@ ditem_load (FILE *df,
while ((c = getc (df)) != EOF) {
if (c == '\r') /* Ignore Carriage Return */
continue;
-
+
switch (state) {
case OnSecHeader:
@@ -968,13 +971,11 @@ ditem_load (FILE *df,
cur_section->keys = g_list_reverse
(cur_section->keys);
}
- if (strcmp (CharBuffer,
- "KDE Desktop Entry") == 0) {
+ if (purple_strequal (CharBuffer, "KDE Desktop Entry")) {
/* Main section */
cur_section = NULL;
old_kde = TRUE;
- } else if (strcmp (CharBuffer,
- "Desktop Entry") == 0) {
+ } else if (purple_strequal(CharBuffer, "Desktop Entry")) {
/* Main section */
cur_section = NULL;
} else {
@@ -1025,16 +1026,16 @@ ditem_load (FILE *df,
/* On first pass, don't allow dangling keys */
if (state == FirstBrace)
break;
-
+
if ((c == ' ' && state != KeyDefOnKey) || c == '\t')
break;
-
+
if (c == '\n' || PURPLE_DESKTOP_ITEM_OVERFLOW) { /* Abort Definition */
next = CharBuffer;
state = KeyDef;
break;
}
-
+
if (c == '=' || PURPLE_DESKTOP_ITEM_OVERFLOW){
*next = '\0';
@@ -1067,7 +1068,7 @@ ditem_load (FILE *df,
break;
} /* switch */
-
+
} /* while ((c = getc_unlocked (f)) != EOF) */
if (c == EOF && state == KeyValue) {
*next = '\0';
@@ -1158,7 +1159,7 @@ purple_desktop_item_new_from_file (const char *filename)
printf ("Can't open %s: %s", filename, g_strerror(errno));
return NULL;
}
-
+
retval = ditem_load(dfile, FALSE, filename);
return retval;
@@ -1203,7 +1204,7 @@ purple_desktop_item_copy (const PurpleDesktopItem *item)
/* Languages */
retval->languages = g_list_copy (item->languages);
for (li = retval->languages; li != NULL; li = li->next)
- li->data = g_strdup (li->data);
+ li->data = g_strdup (li->data);
/* Keys */
retval->keys = g_list_copy (item->keys);
diff --git a/libpurple/desktopitem.h b/libpurple/desktopitem.h
index b47ac1b15e..b9ae357ee1 100644
--- a/libpurple/desktopitem.h
+++ b/libpurple/desktopitem.h
@@ -41,12 +41,12 @@
* modify it under the terms of the GNU Library General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
- *
+ *
* The Gnome Library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
- *
+ *
* You should have received a copy of the GNU Library General Public
* License along with the Gnome Library; see the file COPYING.LIB. If not,
* write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
@@ -155,7 +155,7 @@ const char *purple_desktop_item_get_string (const PurpleDesktopItem *item,
*
* @param item The item to be copied
*
- * @return The new copy
+ * @return The new copy
*/
PurpleDesktopItem *purple_desktop_item_copy (const PurpleDesktopItem *item);
diff --git a/libpurple/dnsquery.c b/libpurple/dnsquery.c
index 14d9ebe890..c37189ce02 100644
--- a/libpurple/dnsquery.c
+++ b/libpurple/dnsquery.c
@@ -32,6 +32,10 @@
#include "prefs.h"
#include "util.h"
+#ifndef _WIN32
+#include <resolv.h>
+#endif
+
#if (defined(__APPLE__) || defined (__unix__)) && !defined(__osf__)
#define PURPLE_DNSQUERY_USE_FORK
#endif
@@ -256,6 +260,9 @@ purple_dnsquery_resolver_run(int child_out, int child_in, gboolean show_debug)
* library.
*/
hints.ai_socktype = SOCK_STREAM;
+#ifdef AI_ADDRCONFIG
+ hints.ai_flags |= AI_ADDRCONFIG;
+#endif /* AI_ADDRCONFIG */
rc = getaddrinfo(dns_params.hostname, servname, &hints, &res);
write_to_parent(child_out, &rc, sizeof(rc));
if (rc != 0) {
@@ -325,7 +332,7 @@ cope_with_gdb_brokenness(void)
return;
already_done = TRUE;
ppid = getppid();
- snprintf(s, sizeof(s), "/proc/%d/exe", ppid);
+ g_snprintf(s, sizeof(s), "/proc/%d/exe", ppid);
n = readlink(s, e, sizeof(e));
if(n < 0)
return;
@@ -568,8 +575,10 @@ host_resolved(gpointer data, gint source, PurpleInputCondition cond)
g_snprintf(message, sizeof(message), _("Error resolving %s: %d"),
query_data->hostname, err);
#endif
- purple_dnsquery_failed(query_data, message);
+ /* Re-read resolv.conf and friends in case DNS servers have changed */
+ res_init();
+ purple_dnsquery_failed(query_data, message);
} else if (rc > 0) {
/* Success! */
while (rc > 0) {
@@ -706,6 +715,9 @@ dns_thread(gpointer data)
* library.
*/
hints.ai_socktype = SOCK_STREAM;
+#ifdef AI_ADDRCONFIG
+ hints.ai_flags |= AI_ADDRCONFIG;
+#endif /* AI_ADDRCONFIG */
if ((rc = getaddrinfo(query_data->hostname, servname, &hints, &res)) == 0) {
tmp = res;
while(res) {
diff --git a/libpurple/dnssrv.c b/libpurple/dnssrv.c
index 6fce86cc3d..4832b9c8e3 100644
--- a/libpurple/dnssrv.c
+++ b/libpurple/dnssrv.c
@@ -33,12 +33,18 @@
#ifndef T_SRV
#define T_SRV 33
#endif
-#else
+#ifndef T_TXT
+#define T_TXT 16
+#endif
+#else /* WIN32 */
#include <windns.h>
/* Missing from the mingw headers */
#ifndef DNS_TYPE_SRV
# define DNS_TYPE_SRV 33
#endif
+#ifndef DNS_TYPE_TXT
+# define DNS_TYPE_TXT 16
+#endif
#endif
#include "dnssrv.h"
@@ -59,10 +65,19 @@ static void (WINAPI *MyDnsRecordListFree) (PDNS_RECORD pRecordList,
DNS_FREE_TYPE FreeType) = NULL;
#endif
+struct _PurpleTxtResponse {
+ char *content;
+};
+
struct _PurpleSrvQueryData {
- PurpleSrvCallback cb;
+ union {
+ PurpleSrvCallback srv;
+ PurpleTxtCallback txt;
+ } cb;
+
gpointer extradata;
guint handle;
+ int type;
#ifdef _WIN32
GThread *resolver;
char *query;
@@ -74,6 +89,11 @@ struct _PurpleSrvQueryData {
#endif
};
+typedef struct _PurpleSrvInternalQuery {
+ int type;
+ char query[256];
+} PurpleSrvInternalQuery;
+
static gint
responsecompare(gconstpointer ar, gconstpointer br)
{
@@ -99,6 +119,7 @@ resolve(int in, int out)
{
GList *ret = NULL;
PurpleSrvResponse *srvres;
+ PurpleTxtResponse *txtres;
queryans answer;
int size;
int qdcount;
@@ -107,23 +128,29 @@ resolve(int in, int out)
guchar *cp;
gchar name[256];
guint16 type, dlen, pref, weight, port;
- gchar query[256];
+ PurpleSrvInternalQuery query;
#ifdef HAVE_SIGNAL_H
purple_restore_default_signal_handlers();
#endif
- if (read(in, query, 256) <= 0) {
+ if (read(in, &query, sizeof(query)) <= 0) {
close(out);
close(in);
_exit(0);
}
- size = res_query( query, C_IN, T_SRV, (u_char*)&answer, sizeof( answer));
+ size = res_query( query.query, C_IN, query.type, (u_char*)&answer, sizeof( answer));
+ if (size == -1) {
+ write(out, &(query.type), sizeof(query.type));
+ write(out, &size, sizeof(int));
+ close(out);
+ close(in);
+ _exit(0);
+ }
qdcount = ntohs(answer.hdr.qdcount);
ancount = ntohs(answer.hdr.ancount);
-
cp = (guchar*)&answer + sizeof(HEADER);
end = (guchar*)&answer + size;
@@ -138,17 +165,14 @@ resolve(int in, int out)
size = dn_expand((unsigned char*)&answer, end, cp, name, 256);
if(size < 0)
goto end;
-
cp += size;
-
GETSHORT(type,cp);
/* skip ttl and class since we already know it */
cp += 6;
GETSHORT(dlen,cp);
-
- if (type == T_SRV) {
+ if (query.type == T_SRV) {
GETSHORT(pref,cp);
GETSHORT(weight,cp);
@@ -168,6 +192,11 @@ resolve(int in, int out)
srvres->weight = weight;
ret = g_list_insert_sorted(ret, srvres, responsecompare);
+ } else if (query.type == T_TXT) {
+ txtres = g_new0(PurpleTxtResponse, 1);
+ txtres->content = g_strndup((gchar*)(++cp), dlen-1);
+ ret = g_list_append(ret, txtres);
+ cp += dlen - 1;
} else {
cp += dlen;
}
@@ -175,10 +204,14 @@ resolve(int in, int out)
end:
size = g_list_length(ret);
- write(out, &size, sizeof(int));
+ /* TODO: Check return value */
+ write(out, &(query.type), sizeof(query.type));
+ write(out, &size, sizeof(size));
while (ret != NULL)
{
- write(out, ret->data, sizeof(PurpleSrvResponse));
+ /* TODO: Check return value */
+ if (query.type == T_SRV) write(out, ret->data, sizeof(PurpleSrvResponse));
+ if (query.type == T_TXT) write(out, ret->data, sizeof(PurpleTxtResponse));
g_free(ret->data);
ret = g_list_remove(ret, ret->data);
}
@@ -193,39 +226,81 @@ static void
resolved(gpointer data, gint source, PurpleInputCondition cond)
{
int size;
+ int type;
PurpleSrvQueryData *query_data = (PurpleSrvQueryData*)data;
- PurpleSrvResponse *res;
- PurpleSrvResponse *tmp;
int i;
- PurpleSrvCallback cb = query_data->cb;
int status;
- if (read(source, &size, sizeof(int)) == sizeof(int))
- {
- ssize_t red;
- purple_debug_info("dnssrv","found %d SRV entries\n", size);
- tmp = res = g_new0(PurpleSrvResponse, size);
- for (i = 0; i < size; i++) {
- red = read(source, tmp++, sizeof(PurpleSrvResponse));
- if (red != sizeof(PurpleSrvResponse)) {
- purple_debug_error("dnssrv","unable to read srv "
- "response: %s\n", g_strerror(errno));
- size = 0;
- g_free(res);
- res = NULL;
+ if (read(source, &type, sizeof(type)) == sizeof(type)) {
+ if (read(source, &size, sizeof(size)) == sizeof(size)) {
+ if (size == -1 || size == 0) {
+ if (size == -1) {
+ purple_debug_warning("dnssrv", "res_query returned an error\n");
+ /* Re-read resolv.conf and friends in case DNS servers have changed */
+ res_init();
+ } else
+ purple_debug_info("dnssrv", "Found 0 entries, errno is %i\n", errno);
+
+ if (type == T_SRV) {
+ PurpleSrvCallback cb = query_data->cb.srv;
+ cb(NULL, 0, query_data->extradata);
+ } else if (type == T_TXT) {
+ PurpleTxtCallback cb = query_data->cb.txt;
+ cb(NULL, query_data->extradata);
+ } else {
+ purple_debug_error("dnssrv", "type unknown of DNS result entry; errno is %i\n", errno);
+ }
+
+ } else if (size) {
+ if (type == T_SRV) {
+ PurpleSrvResponse *res;
+ PurpleSrvResponse *tmp;
+ PurpleSrvCallback cb = query_data->cb.srv;
+ ssize_t red;
+ purple_debug_info("dnssrv","found %d SRV entries\n", size);
+ tmp = res = g_new0(PurpleSrvResponse, size);
+ for (i = 0; i < size; i++) {
+ red = read(source, tmp++, sizeof(PurpleSrvResponse));
+ if (red != sizeof(PurpleSrvResponse)) {
+ purple_debug_error("dnssrv","unable to read srv "
+ "response: %s\n", g_strerror(errno));
+ size = 0;
+ g_free(res);
+ res = NULL;
+ }
+ }
+
+ cb(res, size, query_data->extradata);
+ } else if (type == T_TXT) {
+ GSList *responses = NULL;
+ PurpleTxtResponse *res;
+ PurpleTxtCallback cb = query_data->cb.txt;
+ ssize_t red;
+ purple_debug_info("dnssrv","found %d TXT entries\n", size);
+ res = g_new0(PurpleTxtResponse, 1);
+ for (i = 0; i < size; i++) {
+ red = read(source, res, sizeof(PurpleTxtResponse));
+ if (red != sizeof(PurpleTxtResponse)) {
+ purple_debug_error("dnssrv","unable to read txt "
+ "response: %s\n", g_strerror(errno));
+ size = 0;
+ g_free(res);
+ g_slist_foreach(responses, (GFunc)purple_txt_response_destroy, NULL);
+ g_slist_free(responses);
+ responses = NULL;
+ break;
+ }
+ }
+
+ cb(responses, query_data->extradata);
+ } else {
+ purple_debug_error("dnssrv", "type unknown of DNS result entry; errno is %i\n", errno);
+ }
}
}
}
- else
- {
- purple_debug_info("dnssrv","found 0 SRV entries; errno is %i\n", errno);
- size = 0;
- res = NULL;
- }
- cb(res, size, query_data->extradata);
waitpid(query_data->pid, &status, 0);
-
purple_srv_cancel(query_data);
}
@@ -239,31 +314,42 @@ res_main_thread_cb(gpointer data)
PurpleSrvResponse *srvres = NULL;
int size = 0;
PurpleSrvQueryData *query_data = data;
-
if(query_data->error_message != NULL)
purple_debug_error("dnssrv", query_data->error_message);
else {
- PurpleSrvResponse *srvres_tmp = NULL;
- GSList *lst = query_data->results;
-
- size = g_slist_length(lst);
-
- if(query_data->cb && size > 0)
- srvres_tmp = srvres = g_new0(PurpleSrvResponse, size);
- while (lst) {
- if(query_data->cb)
- memcpy(srvres_tmp++, lst->data, sizeof(PurpleSrvResponse));
- g_free(lst->data);
- lst = g_slist_remove(lst, lst->data);
- }
+ if (query_data->type == DNS_TYPE_SRV) {
+ PurpleSrvResponse *srvres_tmp = NULL;
+ GSList *lst = query_data->results;
+
+ size = g_slist_length(lst);
+
+ if(query_data->cb.srv && size > 0)
+ srvres_tmp = srvres = g_new0(PurpleSrvResponse, size);
+ while (lst) {
+ if(query_data->cb.srv)
+ memcpy(srvres_tmp++, lst->data, sizeof(PurpleSrvResponse));
+ g_free(lst->data);
+ lst = g_slist_remove(lst, lst->data);
+ }
- query_data->results = NULL;
+ query_data->results = NULL;
- purple_debug_info("dnssrv", "found %d SRV entries\n", size);
- }
+ purple_debug_info("dnssrv", "found %d SRV entries\n", size);
+
+ if(query_data->cb.srv) query_data->cb.srv(srvres, size, query_data->extradata);
+ } else if (query_data->type == DNS_TYPE_TXT) {
+ GSList *lst = query_data->results;
- if(query_data->cb)
- query_data->cb(srvres, size, query_data->extradata);
+ purple_debug_info("dnssrv", "found %d TXT entries\n", g_slist_length(lst));
+
+ if (query_data->cb.txt) {
+ query_data->results = NULL;
+ query_data->cb.txt(lst, query_data->extradata);
+ }
+ } else {
+ purple_debug_error("dnssrv", "unknown query type");
+ }
+ }
query_data->resolver = NULL;
query_data->handle = 0;
@@ -277,40 +363,76 @@ static gpointer
res_thread(gpointer data)
{
PDNS_RECORD dr = NULL;
- int type = DNS_TYPE_SRV;
+ int type;
DNS_STATUS ds;
PurpleSrvQueryData *query_data = data;
-
+ type = query_data->type;
ds = MyDnsQuery_UTF8(query_data->query, type, DNS_QUERY_STANDARD, NULL, &dr, NULL);
if (ds != ERROR_SUCCESS) {
gchar *msg = g_win32_error_message(ds);
- query_data->error_message = g_strdup_printf("Couldn't look up SRV record. %s (%lu).\n", msg, ds);
+ if (type == DNS_TYPE_SRV) {
+ query_data->error_message = g_strdup_printf("Couldn't look up SRV record. %s (%lu).\n", msg, ds);
+ } else if (type == DNS_TYPE_TXT) {
+ query_data->error_message = g_strdup_printf("Couldn't look up TXT record. %s (%lu).\n", msg, ds);
+ }
g_free(msg);
} else {
- PDNS_RECORD dr_tmp;
- GSList *lst = NULL;
- DNS_SRV_DATA *srv_data;
- PurpleSrvResponse *srvres;
-
- for (dr_tmp = dr; dr_tmp != NULL; dr_tmp = dr_tmp->pNext) {
- /* Discard any incorrect entries. I'm not sure if this is necessary */
- if (dr_tmp->wType != type || strcmp(dr_tmp->pName, query_data->query) != 0) {
- continue;
+ if (type == DNS_TYPE_SRV) {
+ PDNS_RECORD dr_tmp;
+ GSList *lst = NULL;
+ DNS_SRV_DATA *srv_data;
+ PurpleSrvResponse *srvres;
+
+ for (dr_tmp = dr; dr_tmp != NULL; dr_tmp = dr_tmp->pNext) {
+ /* Discard any incorrect entries. I'm not sure if this is necessary */
+ if (dr_tmp->wType != type || strcmp(dr_tmp->pName, query_data->query) != 0) {
+ continue;
+ }
+
+ srv_data = &dr_tmp->Data.SRV;
+ srvres = g_new0(PurpleSrvResponse, 1);
+ strncpy(srvres->hostname, srv_data->pNameTarget, 255);
+ srvres->hostname[255] = '\0';
+ srvres->pref = srv_data->wPriority;
+ srvres->port = srv_data->wPort;
+ srvres->weight = srv_data->wWeight;
+
+ lst = g_slist_insert_sorted(lst, srvres, responsecompare);
}
- srv_data = &dr_tmp->Data.SRV;
- srvres = g_new0(PurpleSrvResponse, 1);
- strncpy(srvres->hostname, srv_data->pNameTarget, 255);
- srvres->hostname[255] = '\0';
- srvres->pref = srv_data->wPriority;
- srvres->port = srv_data->wPort;
- srvres->weight = srv_data->wWeight;
+ MyDnsRecordListFree(dr, DnsFreeRecordList);
+ query_data->results = lst;
+ } else if (type == DNS_TYPE_TXT) {
+ PDNS_RECORD dr_tmp;
+ GSList *lst = NULL;
+ DNS_TXT_DATA *txt_data;
+ PurpleTxtResponse *txtres;
- lst = g_slist_insert_sorted(lst, srvres, responsecompare);
- }
+ for (dr_tmp = dr; dr_tmp != NULL; dr_tmp = dr_tmp->pNext) {
+ GString *s;
+ int i;
+
+ /* Discard any incorrect entries. I'm not sure if this is necessary */
+ if (dr_tmp->wType != type || strcmp(dr_tmp->pName, query_data->query) != 0) {
+ continue;
+ }
+
+ txt_data = &dr_tmp->Data.TXT;
+ txtres = g_new0(PurpleTxtResponse, 1);
- MyDnsRecordListFree(dr, DnsFreeRecordList);
- query_data->results = lst;
+ s = g_string_new("");
+ for (i = 0; i < txt_data->dwStringCount; ++i)
+ s = g_string_append(s, txt_data->pStringArray[i]);
+ txtres->content = g_string_free(s, FALSE);
+
+ lst = g_slist_append(lst, txtres);
+ }
+
+ MyDnsRecordListFree(dr, DnsFreeRecordList);
+ query_data->results = lst;
+ } else {
+
+ }
}
/* back to main thread */
@@ -329,6 +451,7 @@ purple_srv_resolve(const char *protocol, const char *transport, const char *doma
char *query;
PurpleSrvQueryData *query_data;
#ifndef _WIN32
+ PurpleSrvInternalQuery internal_query;
int in[2], out[2];
int pid;
#else
@@ -375,11 +498,16 @@ purple_srv_resolve(const char *protocol, const char *transport, const char *doma
close(out[1]);
close(in[0]);
- if (write(in[1], query, strlen(query)+1) < 0)
+ internal_query.type = T_SRV;
+ strncpy(internal_query.query, query, 255);
+
+ if (write(in[1], &internal_query, sizeof(internal_query)) < 0)
purple_debug_error("dnssrv", "Could not write to SRV resolver\n");
+
query_data = g_new0(PurpleSrvQueryData, 1);
- query_data->cb = cb;
+ query_data->type = T_SRV;
+ query_data->cb.srv = cb;
query_data->extradata = extradata;
query_data->pid = pid;
query_data->fd_out = out[0];
@@ -398,7 +526,8 @@ purple_srv_resolve(const char *protocol, const char *transport, const char *doma
}
query_data = g_new0(PurpleSrvQueryData, 1);
- query_data->cb = cb;
+ query_data->type = DNS_TYPE_SRV;
+ query_data->cb.srv = cb;
query_data->query = query;
query_data->extradata = extradata;
@@ -422,6 +551,104 @@ purple_srv_resolve(const char *protocol, const char *transport, const char *doma
#endif
}
+PurpleSrvQueryData *purple_txt_resolve(const char *owner, const char *domain, PurpleTxtCallback cb, gpointer extradata)
+{
+ char *query;
+ PurpleSrvQueryData *query_data;
+#ifndef _WIN32
+ PurpleSrvInternalQuery internal_query;
+ int in[2], out[2];
+ int pid;
+#else
+ GError* err = NULL;
+ static gboolean initialized = FALSE;
+#endif
+
+ query = g_strdup_printf("%s.%s", owner, domain);
+ purple_debug_info("dnssrv","querying TXT record for %s\n", query);
+
+#ifndef _WIN32
+ if(pipe(in) || pipe(out)) {
+ purple_debug_error("dnssrv", "Could not create pipe\n");
+ g_free(query);
+ cb(NULL, extradata);
+ return NULL;
+ }
+
+ pid = fork();
+ if (pid == -1) {
+ purple_debug_error("dnssrv", "Could not create process!\n");
+ cb(NULL, extradata);
+ g_free(query);
+ return NULL;
+ }
+
+ /* Child */
+ if (pid == 0)
+ {
+ g_free(query);
+
+ close(out[0]);
+ close(in[1]);
+ resolve(in[0], out[1]);
+ /* resolve() does not return */
+ }
+
+ close(out[1]);
+ close(in[0]);
+
+ internal_query.type = T_TXT;
+ strncpy(internal_query.query, query, 255);
+
+ if (write(in[1], &internal_query, sizeof(internal_query)) < 0)
+ purple_debug_error("dnssrv", "Could not write to TXT resolver\n");
+
+ query_data = g_new0(PurpleSrvQueryData, 1);
+ query_data->type = T_TXT;
+ query_data->cb.txt = cb;
+ query_data->extradata = extradata;
+ query_data->pid = pid;
+ query_data->fd_out = out[0];
+ query_data->fd_in = in[1];
+ query_data->handle = purple_input_add(out[0], PURPLE_INPUT_READ, resolved, query_data);
+
+ g_free(query);
+
+ return query_data;
+#else
+ if (!initialized) {
+ MyDnsQuery_UTF8 = (void*) wpurple_find_and_loadproc("dnsapi.dll", "DnsQuery_UTF8");
+ MyDnsRecordListFree = (void*) wpurple_find_and_loadproc(
+ "dnsapi.dll", "DnsRecordListFree");
+ initialized = TRUE;
+ }
+
+ query_data = g_new0(PurpleSrvQueryData, 1);
+ query_data->type = DNS_TYPE_TXT;
+ query_data->cb.txt = cb;
+ query_data->query = query;
+ query_data->extradata = extradata;
+
+ if (!MyDnsQuery_UTF8 || !MyDnsRecordListFree)
+ query_data->error_message = g_strdup("System missing DNS API (Requires W2K+)\n");
+ else {
+ query_data->resolver = g_thread_create(res_thread, query_data, FALSE, &err);
+ if (query_data->resolver == NULL) {
+ query_data->error_message = g_strdup_printf("TXT thread create failure: %s\n", (err && err->message) ? err->message : "");
+ g_error_free(err);
+ }
+ }
+
+ /* The query isn't going to happen, so finish the TXT lookup now.
+ * Asynchronously call the callback since stuff may not expect
+ * the callback to be called before this returns */
+ if (query_data->error_message != NULL)
+ query_data->handle = purple_timeout_add(0, res_main_thread_cb, query_data);
+
+ return query_data;
+#endif
+}
+
void
purple_srv_cancel(PurpleSrvQueryData *query_data)
{
@@ -435,7 +662,7 @@ purple_srv_cancel(PurpleSrvQueryData *query_data)
* just set the callback to NULL and let the DNS lookup
* finish.
*/
- query_data->cb = NULL;
+ query_data->cb.srv = NULL;
return;
}
g_free(query_data->query);
@@ -446,3 +673,25 @@ purple_srv_cancel(PurpleSrvQueryData *query_data)
#endif
g_free(query_data);
}
+
+void
+purple_txt_cancel(PurpleSrvQueryData *query_data)
+{
+ purple_srv_cancel(query_data);
+}
+
+const gchar *
+purple_txt_response_get_content(PurpleTxtResponse *resp)
+{
+ g_return_val_if_fail(resp != NULL, NULL);
+
+ return resp->content;
+}
+
+void purple_txt_response_destroy(PurpleTxtResponse *resp)
+{
+ g_return_if_fail(resp != NULL);
+
+ g_free(resp->content);
+ g_free(resp);
+}
diff --git a/libpurple/dnssrv.h b/libpurple/dnssrv.h
index 4e17ae068c..d05c73c08c 100644
--- a/libpurple/dnssrv.h
+++ b/libpurple/dnssrv.h
@@ -28,8 +28,11 @@
extern "C" {
#endif
-typedef struct _PurpleSrvResponse PurpleSrvResponse;
typedef struct _PurpleSrvQueryData PurpleSrvQueryData;
+typedef struct _PurpleSrvResponse PurpleSrvResponse;
+typedef struct _PurpleTxtResponse PurpleTxtResponse;
+
+#include <glib.h>
struct _PurpleSrvResponse {
char hostname[256];
@@ -41,6 +44,14 @@ struct _PurpleSrvResponse {
typedef void (*PurpleSrvCallback)(PurpleSrvResponse *resp, int results, gpointer data);
/**
+ * Callback that returns the data retrieved from a DNS TXT lookup.
+ *
+ * @param responses A GSList of PurpleTxtResponse objects.
+ * @param data The extra data passed to purple_txt_resolve.
+ */
+typedef void (*PurpleTxtCallback)(GSList *responses, gpointer data);
+
+/**
* Queries an SRV record.
*
* @param protocol Name of the protocol (e.g. "sip")
@@ -58,6 +69,43 @@ PurpleSrvQueryData *purple_srv_resolve(const char *protocol, const char *transpo
*/
void purple_srv_cancel(PurpleSrvQueryData *query_data);
+/**
+ * Queries an TXT record.
+ *
+ * @param owner Name of the protocol (e.g. "_xmppconnect")
+ * @param domain Domain name to query (e.g. "blubb.com")
+ * @param cb A callback which will be called with the results
+ * @param extradata Extra data to be passed to the callback
+ *
+ * @since 2.6.0
+ */
+PurpleSrvQueryData *purple_txt_resolve(const char *owner, const char *domain, PurpleTxtCallback cb, gpointer extradata);
+
+/**
+ * Cancel an TXT DNS query.
+ *
+ * @param query_data The request to cancel.
+ * @since 2.6.0
+ */
+void purple_txt_cancel(PurpleSrvQueryData *query_data);
+
+/**
+ * Get the value of the current TXT record.
+ *
+ * @param resp The TXT response record
+ * @returns The value of the current TXT record.
+ * @since 2.6.0
+ */
+const gchar *purple_txt_response_get_content(PurpleTxtResponse *resp);
+
+/**
+ * Destroy a TXT DNS response object.
+ *
+ * @param response The PurpleTxtResponse to destroy.
+ * @since 2.6.0
+ */
+void purple_txt_response_destroy(PurpleTxtResponse *resp);
+
#ifdef __cplusplus
}
#endif
diff --git a/libpurple/eventloop.h b/libpurple/eventloop.h
index 1d363cc89a..ca95f6cbe8 100644
--- a/libpurple/eventloop.h
+++ b/libpurple/eventloop.h
@@ -119,8 +119,8 @@ struct _PurpleEventLoopUiOps
* @see purple_input_remove
*/
gboolean (*input_remove)(guint handle);
-
-
+
+
/**
* If implemented, should get the current error status for an input.
*
@@ -161,7 +161,7 @@ struct _PurpleEventLoopUiOps
/*@{*/
/**
* Creates a callback timer.
- *
+ *
* The timer will repeat until the function returns @c FALSE. The
* first call will be at the end of the first interval.
*
@@ -185,12 +185,12 @@ guint purple_timeout_add(guint interval, GSourceFunc function, gpointer data);
*
* This function allows UIs to group timers for better power efficiency. For
* this reason, @a interval may be rounded by up to a second.
- *
+ *
* @param interval The time between calls of the function, in
* seconds.
* @param function The function to call.
* @param data data to pass to @a function.
- * @return A handle to the timer which can be passed to
+ * @return A handle to the timer which can be passed to
* purple_timeout_remove() to remove the timer.
*
* @since 2.1.0
diff --git a/libpurple/ft.c b/libpurple/ft.c
index b494be48b3..6acb9c9500 100644
--- a/libpurple/ft.c
+++ b/libpurple/ft.c
@@ -458,7 +458,7 @@ purple_xfer_request_accepted(PurpleXfer *xfer, const char *filename)
{
PurpleXferType type;
struct stat st;
- char *msg, *utf8;
+ char *msg, *utf8, *base;
PurpleAccount *account;
PurpleBuddy *buddy;
@@ -505,7 +505,9 @@ purple_xfer_request_accepted(PurpleXfer *xfer, const char *filename)
purple_xfer_set_local_filename(xfer, filename);
purple_xfer_set_size(xfer, st.st_size);
- utf8 = g_filename_to_utf8(g_basename(filename), -1, NULL, NULL, NULL);
+ base = g_path_get_basename(filename);
+ utf8 = g_filename_to_utf8(base, -1, NULL, NULL, NULL);
+ g_free(base);
purple_xfer_set_filename(xfer, utf8);
msg = g_strdup_printf(_("Offering to send %s to %s"),
@@ -857,8 +859,12 @@ purple_xfer_read(PurpleXfer *xfer, guchar **buffer)
else
s = MIN(purple_xfer_get_bytes_remaining(xfer), xfer->current_buffer_size);
- if (xfer->ops.read != NULL)
+ if (xfer->ops.read != NULL) {
r = (xfer->ops.read)(buffer, xfer);
+ if ((purple_xfer_get_size(xfer) > 0) &&
+ ((purple_xfer_get_bytes_sent(xfer)+r) >= purple_xfer_get_size(xfer)))
+ purple_xfer_set_completed(xfer, TRUE);
+ }
else {
*buffer = g_malloc0(s);
diff --git a/libpurple/idle.c b/libpurple/idle.c
index f71ca9f9b1..909ae72f00 100644
--- a/libpurple/idle.c
+++ b/libpurple/idle.c
@@ -126,14 +126,14 @@ check_idleness(void)
idle_reporting = purple_prefs_get_string("/purple/away/idle_reporting");
auto_away = purple_prefs_get_bool("/purple/away/away_when_idle");
- if (!strcmp(idle_reporting, "system") &&
+ if (purple_strequal(idle_reporting, "system") &&
(idle_ui_ops != NULL) && (idle_ui_ops->get_time_idle != NULL))
{
/* Use system idle time (mouse or keyboard movement, etc.) */
time_idle = idle_ui_ops->get_time_idle();
idle_recheck_interval = 1;
}
- else if (!strcmp(idle_reporting, "purple"))
+ else if (purple_strequal(idle_reporting, "purple"))
{
/* Use 'Purple idle' */
time_idle = time(NULL) - last_active_time;
@@ -187,9 +187,8 @@ check_idleness(void)
purple_savedstatus_set_idleaway(TRUE);
no_away = FALSE;
}
- else if (!no_away && time_idle < away_seconds)
+ else if (purple_savedstatus_is_idleaway() && time_idle < away_seconds)
{
- no_away = TRUE;
purple_savedstatus_set_idleaway(FALSE);
if (time_until_next_idle_event == 0 || (away_seconds - time_idle) < time_until_next_idle_event)
time_until_next_idle_event = away_seconds - time_idle;
@@ -214,7 +213,7 @@ check_idleness(void)
/*
- * Check idle and set the timer to fire at the next idle-worth event
+ * Check idle and set the timer to fire at the next idle-worth event
*/
static gboolean
check_idleness_timer(void)
diff --git a/libpurple/internal.h b/libpurple/internal.h
index 039dc7a0cf..3a2a6d5043 100644
--- a/libpurple/internal.h
+++ b/libpurple/internal.h
@@ -102,7 +102,7 @@
#include <gmodule.h>
#ifdef PURPLE_PLUGINS
-# ifdef HAVE_DLFCN_H
+# ifdef HAVE_DLFCN_H
# include <dlfcn.h>
# endif
#endif
@@ -222,6 +222,40 @@
# endif
#endif
+#include <glib-object.h>
+
+#ifndef G_DEFINE_TYPE
+#define G_DEFINE_TYPE(TypeName, type_name, TYPE_PARENT) \
+\
+static void type_name##_init (TypeName *self); \
+static void type_name##_class_init (TypeName##Class *klass); \
+static gpointer type_name##_parent_class = NULL; \
+static void type_name##_class_intern_init (gpointer klass) \
+{ \
+ type_name##_parent_class = g_type_class_peek_parent (klass); \
+ type_name##_class_init ((TypeName##Class*) klass); \
+} \
+\
+GType \
+type_name##_get_type (void) \
+{ \
+ static GType g_define_type_id = 0; \
+ if (G_UNLIKELY (g_define_type_id == 0)) \
+ { \
+ g_define_type_id = \
+ g_type_register_static_simple (TYPE_PARENT, \
+ g_intern_static_string (#TypeName), \
+ sizeof (TypeName##Class), \
+ (GClassInitFunc)type_name##_class_intern_init, \
+ sizeof (TypeName), \
+ (GInstanceInitFunc)type_name##_init, \
+ (GTypeFlags) 0); \
+ } \
+ return g_define_type_id; \
+} /* closes type_name##_get_type() */
+
+#endif
+
/* Safer ways to work with static buffers. When using non-static
* buffers, either use g_strdup_* functions (preferred) or use
* g_strlcpy/g_strlcpy directly. */
diff --git a/libpurple/log.c b/libpurple/log.c
index 729da5b178..0f8da9d5dd 100644
--- a/libpurple/log.c
+++ b/libpurple/log.c
@@ -34,6 +34,7 @@
#include "util.h"
#include "stringref.h"
#include "imgstore.h"
+#include "time.h"
static GSList *loggers = NULL;
@@ -46,6 +47,7 @@ struct _purple_logsize_user {
PurpleAccount *account;
};
static GHashTable *logsize_users = NULL;
+static GHashTable *logsize_users_decayed = NULL;
static void log_get_log_sets_common(GHashTable *sets);
@@ -161,14 +163,27 @@ void purple_log_write(PurpleLog *log, PurpleMessageFlags type,
lu->account = log->account;
if(g_hash_table_lookup_extended(logsize_users, lu, NULL, &ptrsize)) {
+ char *tmp = lu->name;
+
total = GPOINTER_TO_INT(ptrsize);
total += written;
g_hash_table_replace(logsize_users, lu, GINT_TO_POINTER(total));
+
+ /* The hash table takes ownership of lu, so create a new one
+ * for the logsize_users_decayed check below. */
+ lu = g_new(struct _purple_logsize_user, 1);
+ lu->name = g_strdup(tmp);
+ lu->account = log->account;
+ }
+
+ if(g_hash_table_lookup_extended(logsize_users_decayed, lu, NULL, &ptrsize)) {
+ total = GPOINTER_TO_INT(ptrsize);
+ total += written;
+ g_hash_table_replace(logsize_users_decayed, lu, GINT_TO_POINTER(total));
} else {
g_free(lu->name);
g_free(lu);
}
-
}
char *purple_log_read(PurpleLog *log, PurpleLogReadFlags *flags)
@@ -200,7 +215,7 @@ static guint _purple_logsize_user_hash(struct _purple_logsize_user *lu)
static guint _purple_logsize_user_equal(struct _purple_logsize_user *lu1,
struct _purple_logsize_user *lu2)
{
- return (lu1->account == lu2->account && (!strcmp(lu1->name, lu2->name)));
+ return (lu1->account == lu2->account && purple_strequal(lu1->name, lu2->name));
}
static void _purple_logsize_user_free_key(struct _purple_logsize_user *lu)
@@ -250,6 +265,49 @@ int purple_log_get_total_size(PurpleLogType type, const char *name, PurpleAccoun
return size;
}
+gint purple_log_get_activity_score(PurpleLogType type, const char *name, PurpleAccount *account)
+{
+ gpointer ptrscore;
+ int score;
+ GSList *n;
+ struct _purple_logsize_user *lu;
+ time_t now;
+ time(&now);
+
+ lu = g_new(struct _purple_logsize_user, 1);
+ lu->name = g_strdup(purple_normalize(account, name));
+ lu->account = account;
+
+ if(g_hash_table_lookup_extended(logsize_users_decayed, lu, NULL, &ptrscore)) {
+ score = GPOINTER_TO_INT(ptrscore);
+ g_free(lu->name);
+ g_free(lu);
+ } else {
+ double score_double = 0.0;
+ for (n = loggers; n; n = n->next) {
+ PurpleLogLogger *logger = n->data;
+
+ if(logger->list) {
+ GList *logs = (logger->list)(type, name, account);
+
+ while (logs) {
+ PurpleLog *log = (PurpleLog*)(logs->data);
+ /* Activity score counts bytes in the log, exponentially
+ decayed with a half-life of 14 days. */
+ score_double += purple_log_get_size(log) *
+ pow(0.5, difftime(now, log->time)/1209600.0);
+ purple_log_free(log);
+ logs = g_list_delete_link(logs, logs);
+ }
+ }
+ }
+
+ score = (gint)score_double;
+ g_hash_table_replace(logsize_users_decayed, lu, GINT_TO_POINTER(score));
+ }
+ return score;
+}
+
gboolean purple_log_is_deletable(PurpleLog *log)
{
g_return_val_if_fail(log != NULL, FALSE);
@@ -324,7 +382,7 @@ static void logger_pref_cb(const char *name, PurplePrefType type,
GSList *l = loggers;
while (l) {
logger = l->data;
- if (!strcmp(logger->id, value)) {
+ if (purple_strequal(logger->id, value)) {
purple_log_logger_set(logger);
return;
}
@@ -406,7 +464,7 @@ void purple_log_logger_add (PurpleLogLogger *logger)
if (g_slist_find(loggers, logger))
return;
loggers = g_slist_append(loggers, logger);
- if (strcmp(purple_prefs_get_string("/purple/logging/format"), logger->id) == 0) {
+ if (purple_strequal(purple_prefs_get_string("/purple/logging/format"), logger->id)) {
purple_prefs_trigger_callback("/purple/logging/format");
}
}
@@ -588,11 +646,11 @@ void purple_log_init(void)
void *handle = purple_log_get_handle();
purple_prefs_add_none("/purple/logging");
- purple_prefs_add_bool("/purple/logging/log_ims", FALSE);
- purple_prefs_add_bool("/purple/logging/log_chats", FALSE);
+ purple_prefs_add_bool("/purple/logging/log_ims", TRUE);
+ purple_prefs_add_bool("/purple/logging/log_chats", TRUE);
purple_prefs_add_bool("/purple/logging/log_system", FALSE);
- purple_prefs_add_string("/purple/logging/format", "txt");
+ purple_prefs_add_string("/purple/logging/format", "html");
html_logger = purple_log_logger_new("html", _("HTML"), 11,
NULL,
@@ -661,6 +719,9 @@ void purple_log_init(void)
logsize_users = g_hash_table_new_full((GHashFunc)_purple_logsize_user_hash,
(GEqualFunc)_purple_logsize_user_equal,
(GDestroyNotify)_purple_logsize_user_free_key, NULL);
+ logsize_users_decayed = g_hash_table_new_full((GHashFunc)_purple_logsize_user_hash,
+ (GEqualFunc)_purple_logsize_user_equal,
+ (GDestroyNotify)_purple_logsize_user_free_key, NULL);
}
void
@@ -679,6 +740,9 @@ purple_log_uninit(void)
purple_log_logger_remove(old_logger);
purple_log_logger_free(old_logger);
old_logger = NULL;
+
+ g_hash_table_destroy(logsize_users);
+ g_hash_table_destroy(logsize_users_decayed);
}
/****************************************************************************
@@ -1019,7 +1083,7 @@ static void log_get_log_sets_common(GHashTable *sets)
continue;
prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
- if (!strcmp(protocol_unescaped, prpl_info->list_icon((PurpleAccount *)account_iter->data, NULL)))
+ if (purple_strequal(protocol_unescaped, prpl_info->list_icon((PurpleAccount *)account_iter->data, NULL)))
accounts = g_list_prepend(accounts, account_iter->data);
}
g_free(protocol_unescaped);
@@ -1039,7 +1103,7 @@ static void log_get_log_sets_common(GHashTable *sets)
/* Find the account for username in the list of accounts for protocol. */
username_unescaped = purple_unescape_filename(username);
for (account_iter = g_list_first(accounts) ; account_iter != NULL ; account_iter = account_iter->next) {
- if (!strcmp(((PurpleAccount *)account_iter->data)->username, username_unescaped)) {
+ if (purple_strequal(((PurpleAccount *)account_iter->data)->username, username_unescaped)) {
account = account_iter->data;
break;
}
@@ -1068,14 +1132,14 @@ static void log_get_log_sets_common(GHashTable *sets)
/* Chat for .chat or .system at the end of the name to determine the type. */
if (len >= 7) {
gchar *tmp = &name[len - 7];
- if (!strcmp(tmp, ".system")) {
+ if (purple_strequal(tmp, ".system")) {
set->type = PURPLE_LOG_SYSTEM;
*tmp = '\0';
}
}
if (len > 5) {
gchar *tmp = &name[len - 5];
- if (!strcmp(tmp, ".chat")) {
+ if (purple_strequal(tmp, ".chat")) {
set->type = PURPLE_LOG_CHAT;
*tmp = '\0';
}
@@ -1773,29 +1837,29 @@ static GList *old_logger_list(PurpleLogType type, const char *sn, PurpleAccount
sscanf(convostart, "%*s %s %d %d:%d:%d %d",
month, &tm.tm_mday, &tm.tm_hour, &tm.tm_min, &tm.tm_sec, &tm.tm_year);
/* Ugly hack, in case current locale is not English */
- if (strcmp(month, "Jan") == 0) {
+ if (purple_strequal(month, "Jan")) {
tm.tm_mon= 0;
- } else if (strcmp(month, "Feb") == 0) {
+ } else if (purple_strequal(month, "Feb")) {
tm.tm_mon = 1;
- } else if (strcmp(month, "Mar") == 0) {
+ } else if (purple_strequal(month, "Mar")) {
tm.tm_mon = 2;
- } else if (strcmp(month, "Apr") == 0) {
+ } else if (purple_strequal(month, "Apr")) {
tm.tm_mon = 3;
- } else if (strcmp(month, "May") == 0) {
+ } else if (purple_strequal(month, "May")) {
tm.tm_mon = 4;
- } else if (strcmp(month, "Jun") == 0) {
+ } else if (purple_strequal(month, "Jun")) {
tm.tm_mon = 5;
- } else if (strcmp(month, "Jul") == 0) {
+ } else if (purple_strequal(month, "Jul")) {
tm.tm_mon = 6;
- } else if (strcmp(month, "Aug") == 0) {
+ } else if (purple_strequal(month, "Aug")) {
tm.tm_mon = 7;
- } else if (strcmp(month, "Sep") == 0) {
+ } else if (purple_strequal(month, "Sep")) {
tm.tm_mon = 8;
- } else if (strcmp(month, "Oct") == 0) {
+ } else if (purple_strequal(month, "Oct")) {
tm.tm_mon = 9;
- } else if (strcmp(month, "Nov") == 0) {
+ } else if (purple_strequal(month, "Nov")) {
tm.tm_mon = 10;
- } else if (strcmp(month, "Dec") == 0) {
+ } else if (purple_strequal(month, "Dec")) {
tm.tm_mon = 11;
}
tm.tm_year -= 1900;
@@ -1930,7 +1994,7 @@ static void old_logger_get_log_sets(PurpleLogSetCallback cb, GHashTable *sets)
/* Make sure we're dealing with a log file. */
ext = &name[len - 4];
- if (strcmp(ext, ".log")) {
+ if (!purple_strequal(ext, ".log")) {
g_free(name);
continue;
}
@@ -1943,7 +2007,7 @@ static void old_logger_get_log_sets(PurpleLogSetCallback cb, GHashTable *sets)
set->type = PURPLE_LOG_IM;
if (len > 9) {
char *tmp = &name[len - 9];
- if (!strcmp(tmp, ".chat")) {
+ if (purple_strequal(tmp, ".chat")) {
set->type = PURPLE_LOG_CHAT;
*tmp = '\0';
}
@@ -1952,22 +2016,28 @@ static void old_logger_get_log_sets(PurpleLogSetCallback cb, GHashTable *sets)
set->name = set->normalized_name = name;
/* Search the buddy list to find the account and to determine if this is a buddy. */
- for (gnode = purple_get_blist()->root; !found && gnode != NULL; gnode = gnode->next)
+ for (gnode = purple_blist_get_root();
+ !found && gnode != NULL;
+ gnode = purple_blist_node_get_sibling_next(gnode))
{
if (!PURPLE_BLIST_NODE_IS_GROUP(gnode))
continue;
- for (cnode = gnode->child; !found && cnode != NULL; cnode = cnode->next)
+ for (cnode = purple_blist_node_get_first_child(gnode);
+ !found && cnode != NULL;
+ cnode = purple_blist_node_get_sibling_next(cnode))
{
if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
continue;
- for (bnode = cnode->child; !found && bnode != NULL; bnode = bnode->next)
+ for (bnode = purple_blist_node_get_first_child(cnode);
+ !found && bnode != NULL;
+ bnode = purple_blist_node_get_sibling_next(bnode))
{
PurpleBuddy *buddy = (PurpleBuddy *)bnode;
- if (!strcmp(buddy->name, name)) {
- set->account = buddy->account;
+ if (purple_strequal(purple_buddy_get_name(buddy), name)) {
+ set->account = purple_buddy_get_account(buddy);
set->buddy = TRUE;
found = TRUE;
}
diff --git a/libpurple/log.h b/libpurple/log.h
index d8a84f3f84..59249b5162 100644
--- a/libpurple/log.h
+++ b/libpurple/log.h
@@ -194,7 +194,7 @@ extern "C" {
* Creates a new log
*
* @param type The type of log this is.
- * @param name The name of this conversation (screenname, chat name,
+ * @param name The name of this conversation (buddy name, chat name,
* etc.)
* @param account The account the conversation is occurring on
* @param conv The conversation being logged
@@ -294,6 +294,19 @@ int purple_log_get_size(PurpleLog *log);
int purple_log_get_total_size(PurpleLogType type, const char *name, PurpleAccount *account);
/**
+ * Returns the activity score of a log, based on total size in bytes,
+ * which is then decayed based on age
+ *
+ * @param type The type of the log
+ * @param name The name of the log
+ * @param account The account
+ * @return The activity score
+ *
+ * @since 2.6.0
+ */
+int purple_log_get_activity_score(PurpleLogType type, const char *name, PurpleAccount *account);
+
+/**
* Tests whether a log is deletable
*
* A return value of @c FALSE indicates that purple_log_delete() will fail on this
diff --git a/libpurple/marshallers.list b/libpurple/marshallers.list
new file mode 100644
index 0000000000..7d8acac503
--- /dev/null
+++ b/libpurple/marshallers.list
@@ -0,0 +1,5 @@
+VOID:POINTER,POINTER,OBJECT
+BOOLEAN:OBJECT,POINTER,STRING
+VOID:STRING,STRING
+VOID:ENUM,STRING,STRING
+VOID:ENUM,STRING,STRING,BOOLEAN
diff --git a/libpurple/media-gst.h b/libpurple/media-gst.h
new file mode 100644
index 0000000000..3840792d2b
--- /dev/null
+++ b/libpurple/media-gst.h
@@ -0,0 +1,173 @@
+/**
+ * @file media-gst.h Media API
+ * @ingroup core
+ */
+
+/* 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 _PURPLE_MEDIA_GST_H_
+#define _PURPLE_MEDIA_GST_H_
+
+#include "media.h"
+#include "mediamanager.h"
+
+#include <gst/gst.h>
+
+G_BEGIN_DECLS
+
+#define PURPLE_TYPE_MEDIA_ELEMENT_TYPE (purple_media_element_type_get_type())
+#define PURPLE_TYPE_MEDIA_ELEMENT_INFO (purple_media_element_info_get_type())
+#define PURPLE_MEDIA_ELEMENT_INFO(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PURPLE_TYPE_MEDIA_ELEMENT_INFO, PurpleMediaElementInfo))
+#define PURPLE_MEDIA_ELEMENT_INFO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), PURPLE_TYPE_MEDIA_ELEMENT_INFO, PurpleMediaElementInfo))
+#define PURPLE_IS_MEDIA_ELEMENT_INFO(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), PURPLE_TYPE_MEDIA_ELEMENT_INFO))
+#define PURPLE_IS_MEDIA_ELEMENT_INFO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), PURPLE_TYPE_MEDIA_ELEMENT_INFO))
+#define PURPLE_MEDIA_ELEMENT_INFO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), PURPLE_TYPE_MEDIA_ELEMENT_INFO, PurpleMediaElementInfo))
+
+/** @copydoc _PurpleMediaElementInfo */
+typedef struct _PurpleMediaElementInfo PurpleMediaElementInfo;
+typedef struct _PurpleMediaElementInfoClass PurpleMediaElementInfoClass;
+typedef GstElement *(*PurpleMediaElementCreateCallback)(PurpleMedia *media,
+ const gchar *session_id, const gchar *participant);
+
+typedef enum {
+ PURPLE_MEDIA_ELEMENT_NONE = 0, /** empty element */
+ PURPLE_MEDIA_ELEMENT_AUDIO = 1, /** supports audio */
+ PURPLE_MEDIA_ELEMENT_VIDEO = 1 << 1, /** supports video */
+ PURPLE_MEDIA_ELEMENT_AUDIO_VIDEO = PURPLE_MEDIA_ELEMENT_AUDIO
+ | PURPLE_MEDIA_ELEMENT_VIDEO, /** supports audio and video */
+
+ PURPLE_MEDIA_ELEMENT_NO_SRCS = 0, /** has no src pads */
+ PURPLE_MEDIA_ELEMENT_ONE_SRC = 1 << 2, /** has one src pad */
+ PURPLE_MEDIA_ELEMENT_MULTI_SRC = 1 << 3, /** has multiple src pads */
+ PURPLE_MEDIA_ELEMENT_REQUEST_SRC = 1 << 4, /** src pads must be requested */
+
+ PURPLE_MEDIA_ELEMENT_NO_SINKS = 0, /** has no sink pads */
+ PURPLE_MEDIA_ELEMENT_ONE_SINK = 1 << 5, /** has one sink pad */
+ PURPLE_MEDIA_ELEMENT_MULTI_SINK = 1 << 6, /** has multiple sink pads */
+ PURPLE_MEDIA_ELEMENT_REQUEST_SINK = 1 << 7, /** sink pads must be requested */
+
+ PURPLE_MEDIA_ELEMENT_UNIQUE = 1 << 8, /** This element is unique and
+ only one instance of it should
+ be created at a time */
+
+ PURPLE_MEDIA_ELEMENT_SRC = 1 << 9, /** can be set as an active src */
+ PURPLE_MEDIA_ELEMENT_SINK = 1 << 10, /** can be set as an active sink */
+} PurpleMediaElementType;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * Gets the element type's GType.
+ *
+ * @return The element type's GType.
+ *
+ * @since 2.6.0
+ */
+GType purple_media_element_type_get_type(void);
+
+/**
+ * Gets the element info's GType.
+ *
+ * @return The element info's GType.
+ *
+ * @since 2.6.0
+ */
+GType purple_media_element_info_get_type(void);
+
+/**
+ * Gets the source from a session
+ *
+ * @param media The media object the session is in.
+ * @param sess_id The session id of the session to get the source from.
+ *
+ * @return The source retrieved.
+ *
+ * @since 2.6.0
+ */
+GstElement *purple_media_get_src(PurpleMedia *media, const gchar *sess_id);
+
+/**
+ * Gets the tee from a given session/stream.
+ *
+ * @param media The instance to get the tee from.
+ * @param session_id The id of the session to get the tee from.
+ * @param participant Optionally, the participant of the stream to get the tee from.
+ *
+ * @return The GstTee element from the chosen session/stream.
+ *
+ * @since 2.6.0
+ */
+GstElement *purple_media_get_tee(PurpleMedia *media,
+ const gchar *session_id, const gchar *participant);
+
+
+/**
+ * Gets the pipeline from the media manager.
+ *
+ * @param manager The media manager to get the pipeline from.
+ *
+ * @return The pipeline.
+ *
+ * @since 2.6.0
+ */
+GstElement *purple_media_manager_get_pipeline(PurpleMediaManager *manager);
+
+/**
+ * Returns a GStreamer source or sink for audio or video.
+ *
+ * @param manager The media manager to use to obtain the source/sink.
+ * @param type The type of source/sink to get.
+ *
+ * @since 2.6.0
+ */
+GstElement *purple_media_manager_get_element(PurpleMediaManager *manager,
+ PurpleMediaSessionType type, PurpleMedia *media,
+ const gchar *session_id, const gchar *participant);
+
+PurpleMediaElementInfo *purple_media_manager_get_element_info(
+ PurpleMediaManager *manager, const gchar *name);
+gboolean purple_media_manager_register_element(PurpleMediaManager *manager,
+ PurpleMediaElementInfo *info);
+gboolean purple_media_manager_unregister_element(PurpleMediaManager *manager,
+ const gchar *name);
+gboolean purple_media_manager_set_active_element(PurpleMediaManager *manager,
+ PurpleMediaElementInfo *info);
+PurpleMediaElementInfo *purple_media_manager_get_active_element(
+ PurpleMediaManager *manager, PurpleMediaElementType type);
+
+gchar *purple_media_element_info_get_id(PurpleMediaElementInfo *info);
+gchar *purple_media_element_info_get_name(PurpleMediaElementInfo *info);
+PurpleMediaElementType purple_media_element_info_get_element_type(
+ PurpleMediaElementInfo *info);
+GstElement *purple_media_element_info_call_create(
+ PurpleMediaElementInfo *info, PurpleMedia *media,
+ const gchar *session_id, const gchar *participant);
+
+#ifdef __cplusplus
+}
+#endif
+
+G_END_DECLS
+
+#endif /* _PURPLE_MEDIA_GST_H_ */
diff --git a/libpurple/media.c b/libpurple/media.c
new file mode 100644
index 0000000000..af46437e8a
--- /dev/null
+++ b/libpurple/media.c
@@ -0,0 +1,3106 @@
+/**
+ * @file media.c Media API
+ * @ingroup core
+ */
+
+/* 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 <string.h>
+
+#include "internal.h"
+
+#include "account.h"
+#include "media.h"
+#include "mediamanager.h"
+#include "network.h"
+
+#include "debug.h"
+
+#ifdef USE_GSTREAMER
+#include "marshallers.h"
+#include "media-gst.h"
+#endif
+
+#ifdef USE_VV
+
+#include <gst/farsight/fs-conference-iface.h>
+#include <gst/farsight/fs-element-added-notifier.h>
+
+/** @copydoc _PurpleMediaSession */
+typedef struct _PurpleMediaSession PurpleMediaSession;
+/** @copydoc _PurpleMediaStream */
+typedef struct _PurpleMediaStream PurpleMediaStream;
+/** @copydoc _PurpleMediaClass */
+typedef struct _PurpleMediaClass PurpleMediaClass;
+/** @copydoc _PurpleMediaPrivate */
+typedef struct _PurpleMediaPrivate PurpleMediaPrivate;
+/** @copydoc _PurpleMediaCandidateClass */
+typedef struct _PurpleMediaCandidateClass PurpleMediaCandidateClass;
+/** @copydoc _PurpleMediaCandidatePrivate */
+typedef struct _PurpleMediaCandidatePrivate PurpleMediaCandidatePrivate;
+/** @copydoc _PurpleMediaCodecClass */
+typedef struct _PurpleMediaCodecClass PurpleMediaCodecClass;
+/** @copydoc _PurpleMediaCodecPrivate */
+typedef struct _PurpleMediaCodecPrivate PurpleMediaCodecPrivate;
+
+/** The media class */
+struct _PurpleMediaClass
+{
+ GObjectClass parent_class; /**< The parent class. */
+};
+
+/** The media class's private data */
+struct _PurpleMedia
+{
+ GObject parent; /**< The parent of this object. */
+ PurpleMediaPrivate *priv; /**< The private data of this object. */
+};
+
+struct _PurpleMediaSession
+{
+ gchar *id;
+ PurpleMedia *media;
+ GstElement *src;
+ GstElement *tee;
+ FsSession *session;
+
+ PurpleMediaSessionType type;
+ gboolean initiator;
+};
+
+struct _PurpleMediaStream
+{
+ PurpleMediaSession *session;
+ gchar *participant;
+ FsStream *stream;
+ GstElement *src;
+ GstElement *tee;
+
+ GList *local_candidates;
+ GList *remote_candidates;
+
+ gboolean initiator;
+ gboolean accepted;
+ gboolean candidates_prepared;
+
+ GList *active_local_candidates;
+ GList *active_remote_candidates;
+
+ guint connected_cb_id;
+};
+#endif
+
+struct _PurpleMediaPrivate
+{
+#ifdef USE_VV
+ PurpleMediaManager *manager;
+ PurpleAccount *account;
+ FsConference *conference;
+ gboolean initiator;
+ gpointer prpl_data;
+
+ GHashTable *sessions; /* PurpleMediaSession table */
+ GHashTable *participants; /* FsParticipant table */
+
+ GList *streams; /* PurpleMediaStream table */
+
+ GstElement *confbin;
+#else
+ gpointer dummy;
+#endif
+};
+
+#ifdef USE_VV
+#define PURPLE_MEDIA_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), PURPLE_TYPE_MEDIA, PurpleMediaPrivate))
+#define PURPLE_MEDIA_CANDIDATE_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), PURPLE_TYPE_MEDIA_CANDIDATE, PurpleMediaCandidatePrivate))
+#define PURPLE_MEDIA_CODEC_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), PURPLE_TYPE_MEDIA_CODEC, PurpleMediaCodecPrivate))
+
+static void purple_media_class_init (PurpleMediaClass *klass);
+static void purple_media_init (PurpleMedia *media);
+static void purple_media_dispose (GObject *object);
+static void purple_media_finalize (GObject *object);
+static void purple_media_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
+static void purple_media_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
+
+static void purple_media_new_local_candidate_cb(FsStream *stream,
+ FsCandidate *local_candidate, PurpleMediaSession *session);
+static void purple_media_candidates_prepared_cb(FsStream *stream,
+ PurpleMediaSession *session);
+static void purple_media_candidate_pair_established_cb(FsStream *stream,
+ FsCandidate *native_candidate, FsCandidate *remote_candidate,
+ PurpleMediaSession *session);
+static gboolean media_bus_call(GstBus *bus,
+ GstMessage *msg, PurpleMedia *media);
+
+static GObjectClass *parent_class = NULL;
+
+
+
+enum {
+ ERROR,
+ ACCEPTED,
+ CANDIDATES_PREPARED,
+ CODECS_CHANGED,
+ NEW_CANDIDATE,
+ STATE_CHANGED,
+ STREAM_INFO,
+ LAST_SIGNAL
+};
+static guint purple_media_signals[LAST_SIGNAL] = {0};
+
+enum {
+ PROP_0,
+ PROP_MANAGER,
+ PROP_ACCOUNT,
+ PROP_CONFERENCE,
+ PROP_INITIATOR,
+ PROP_PRPL_DATA,
+};
+#endif
+
+
+/*
+ * PurpleMediaElementType
+ */
+
+GType
+purple_media_session_type_get_type()
+{
+ static GType type = 0;
+ if (type == 0) {
+ static const GFlagsValue values[] = {
+ { PURPLE_MEDIA_NONE,
+ "PURPLE_MEDIA_NONE", "none" },
+ { PURPLE_MEDIA_RECV_AUDIO,
+ "PURPLE_MEDIA_RECV_AUDIO", "recv-audio" },
+ { PURPLE_MEDIA_SEND_AUDIO,
+ "PURPLE_MEDIA_SEND_AUDIO", "send-audio" },
+ { PURPLE_MEDIA_RECV_VIDEO,
+ "PURPLE_MEDIA_RECV_VIDEO", "recv-video" },
+ { PURPLE_MEDIA_SEND_VIDEO,
+ "PURPLE_MEDIA_SEND_VIDEO", "send-audio" },
+ { PURPLE_MEDIA_AUDIO,
+ "PURPLE_MEDIA_AUDIO", "audio" },
+ { PURPLE_MEDIA_VIDEO,
+ "PURPLE_MEDIA_VIDEO", "video" },
+ { 0, NULL, NULL }
+ };
+ type = g_flags_register_static(
+ "PurpleMediaSessionType", values);
+ }
+ return type;
+}
+
+GType
+purple_media_get_type()
+{
+#ifdef USE_VV
+ static GType type = 0;
+
+ if (type == 0) {
+ static const GTypeInfo info = {
+ sizeof(PurpleMediaClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) purple_media_class_init,
+ NULL,
+ NULL,
+ sizeof(PurpleMedia),
+ 0,
+ (GInstanceInitFunc) purple_media_init,
+ NULL
+ };
+ type = g_type_register_static(G_TYPE_OBJECT, "PurpleMedia", &info, 0);
+ }
+ return type;
+#else
+ return G_TYPE_NONE;
+#endif
+}
+
+GType
+purple_media_state_changed_get_type()
+{
+ static GType type = 0;
+ if (type == 0) {
+ static const GEnumValue values[] = {
+ { PURPLE_MEDIA_STATE_NEW,
+ "PURPLE_MEDIA_STATE_NEW", "new" },
+ { PURPLE_MEDIA_STATE_CONNECTED,
+ "PURPLE_MEDIA_STATE_CONNECTED", "connected" },
+ { PURPLE_MEDIA_STATE_END,
+ "PURPLE_MEDIA_STATE_END", "end" },
+ { 0, NULL, NULL }
+ };
+ type = g_enum_register_static("PurpleMediaState", values);
+ }
+ return type;
+}
+
+GType
+purple_media_info_type_get_type()
+{
+ static GType type = 0;
+ if (type == 0) {
+ static const GEnumValue values[] = {
+ { PURPLE_MEDIA_INFO_HANGUP,
+ "PURPLE_MEDIA_INFO_HANGUP", "hangup" },
+ { PURPLE_MEDIA_INFO_ACCEPT,
+ "PURPLE_MEDIA_INFO_ACCEPT", "accept" },
+ { PURPLE_MEDIA_INFO_REJECT,
+ "PURPLE_MEDIA_INFO_REJECT", "reject" },
+ { PURPLE_MEDIA_INFO_MUTE,
+ "PURPLE_MEDIA_INFO_MUTE", "mute" },
+ { PURPLE_MEDIA_INFO_UNMUTE,
+ "PURPLE_MEDIA_INFO_UNMUTE", "unmute" },
+ { PURPLE_MEDIA_INFO_HOLD,
+ "PURPLE_MEDIA_INFO_HOLD", "hold" },
+ { PURPLE_MEDIA_INFO_UNHOLD,
+ "PURPLE_MEDIA_INFO_HOLD", "unhold" },
+ { 0, NULL, NULL }
+ };
+ type = g_enum_register_static("PurpleMediaInfoType", values);
+ }
+ return type;
+}
+
+#ifdef USE_VV
+static void
+purple_media_class_init (PurpleMediaClass *klass)
+{
+ GObjectClass *gobject_class = (GObjectClass*)klass;
+ parent_class = g_type_class_peek_parent(klass);
+
+ gobject_class->dispose = purple_media_dispose;
+ gobject_class->finalize = purple_media_finalize;
+ gobject_class->set_property = purple_media_set_property;
+ gobject_class->get_property = purple_media_get_property;
+
+ g_object_class_install_property(gobject_class, PROP_MANAGER,
+ g_param_spec_object("manager",
+ "Purple Media Manager",
+ "The media manager that contains this media session.",
+ PURPLE_TYPE_MEDIA_MANAGER,
+ G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
+
+ g_object_class_install_property(gobject_class, PROP_ACCOUNT,
+ g_param_spec_pointer("account",
+ "PurpleAccount",
+ "The account this media session is on.",
+ G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
+
+ g_object_class_install_property(gobject_class, PROP_CONFERENCE,
+ g_param_spec_object("conference",
+ "Farsight conference",
+ "The FsConference associated with this media.",
+ FS_TYPE_CONFERENCE,
+ G_PARAM_CONSTRUCT_ONLY | G_PARAM_WRITABLE));
+
+ g_object_class_install_property(gobject_class, PROP_INITIATOR,
+ g_param_spec_boolean("initiator",
+ "initiator",
+ "If the local user initiated the conference.",
+ FALSE,
+ G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
+
+ g_object_class_install_property(gobject_class, PROP_PRPL_DATA,
+ g_param_spec_pointer("prpl-data",
+ "gpointer",
+ "Data the prpl plugin set on the media session.",
+ G_PARAM_READWRITE));
+
+ purple_media_signals[ERROR] = g_signal_new("error", G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_LAST, 0, NULL, NULL,
+ g_cclosure_marshal_VOID__STRING,
+ G_TYPE_NONE, 1, G_TYPE_STRING);
+ purple_media_signals[ACCEPTED] = g_signal_new("accepted", G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_LAST, 0, NULL, NULL,
+ purple_smarshal_VOID__STRING_STRING,
+ G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_STRING);
+ purple_media_signals[CANDIDATES_PREPARED] = g_signal_new("candidates-prepared", G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_LAST, 0, NULL, NULL,
+ purple_smarshal_VOID__STRING_STRING,
+ G_TYPE_NONE, 2, G_TYPE_STRING,
+ G_TYPE_STRING);
+ purple_media_signals[CODECS_CHANGED] = g_signal_new("codecs-changed", G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_LAST, 0, NULL, NULL,
+ g_cclosure_marshal_VOID__STRING,
+ G_TYPE_NONE, 1, G_TYPE_STRING);
+ purple_media_signals[NEW_CANDIDATE] = g_signal_new("new-candidate", G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_LAST, 0, NULL, NULL,
+ purple_smarshal_VOID__POINTER_POINTER_OBJECT,
+ G_TYPE_NONE, 3, G_TYPE_POINTER,
+ G_TYPE_POINTER, PURPLE_TYPE_MEDIA_CANDIDATE);
+ purple_media_signals[STATE_CHANGED] = g_signal_new("state-changed", G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_LAST, 0, NULL, NULL,
+ purple_smarshal_VOID__ENUM_STRING_STRING,
+ G_TYPE_NONE, 3, PURPLE_MEDIA_TYPE_STATE,
+ G_TYPE_STRING, G_TYPE_STRING);
+ purple_media_signals[STREAM_INFO] = g_signal_new("stream-info", G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_LAST, 0, NULL, NULL,
+ purple_smarshal_VOID__ENUM_STRING_STRING_BOOLEAN,
+ G_TYPE_NONE, 4, PURPLE_MEDIA_TYPE_INFO_TYPE,
+ G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN);
+ g_type_class_add_private(klass, sizeof(PurpleMediaPrivate));
+}
+
+
+static void
+purple_media_init (PurpleMedia *media)
+{
+ media->priv = PURPLE_MEDIA_GET_PRIVATE(media);
+ memset(media->priv, 0, sizeof(*media->priv));
+}
+
+static void
+purple_media_stream_free(PurpleMediaStream *stream)
+{
+ if (stream == NULL)
+ return;
+
+ /* Remove the connected_cb timeout */
+ if (stream->connected_cb_id != 0)
+ purple_timeout_remove(stream->connected_cb_id);
+
+ g_free(stream->participant);
+
+ if (stream->local_candidates)
+ fs_candidate_list_destroy(stream->local_candidates);
+ if (stream->remote_candidates)
+ fs_candidate_list_destroy(stream->remote_candidates);
+
+ if (stream->active_local_candidates)
+ fs_candidate_list_destroy(stream->active_local_candidates);
+ if (stream->active_remote_candidates)
+ fs_candidate_list_destroy(stream->active_remote_candidates);
+
+ g_free(stream);
+}
+
+static void
+purple_media_session_free(PurpleMediaSession *session)
+{
+ if (session == NULL)
+ return;
+
+ g_free(session->id);
+ g_free(session);
+}
+
+static void
+purple_media_dispose(GObject *media)
+{
+ PurpleMediaPrivate *priv = PURPLE_MEDIA_GET_PRIVATE(media);
+ GList *iter = NULL;
+
+ purple_debug_info("media","purple_media_dispose\n");
+
+ purple_media_manager_remove_media(priv->manager, PURPLE_MEDIA(media));
+
+ if (priv->confbin) {
+ gst_element_set_locked_state(priv->confbin, TRUE);
+ gst_element_set_state(GST_ELEMENT(priv->confbin),
+ GST_STATE_NULL);
+ gst_bin_remove(GST_BIN(purple_media_manager_get_pipeline(
+ priv->manager)), priv->confbin);
+ priv->confbin = NULL;
+ priv->conference = NULL;
+ }
+
+ for (iter = priv->streams; iter; iter = g_list_next(iter)) {
+ PurpleMediaStream *stream = iter->data;
+ if (stream->stream) {
+ g_object_unref(stream->stream);
+ stream->stream = NULL;
+ }
+ }
+
+ if (priv->sessions) {
+ GList *sessions = g_hash_table_get_values(priv->sessions);
+ for (; sessions; sessions = g_list_delete_link(sessions, sessions)) {
+ PurpleMediaSession *session = sessions->data;
+ if (session->session) {
+ g_object_unref(session->session);
+ session->session = NULL;
+ }
+ }
+ }
+
+ if (priv->participants) {
+ GList *participants = g_hash_table_get_values(priv->participants);
+ for (; participants; participants = g_list_delete_link(participants, participants))
+ g_object_unref(participants->data);
+ }
+
+ if (priv->manager) {
+ GstElement *pipeline = purple_media_manager_get_pipeline(
+ priv->manager);
+ GstBus *bus = gst_pipeline_get_bus(GST_PIPELINE(pipeline));
+ g_signal_handlers_disconnect_matched(G_OBJECT(bus),
+ G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA,
+ 0, 0, 0, media_bus_call, media);
+ gst_object_unref(bus);
+
+ g_object_unref(priv->manager);
+ priv->manager = NULL;
+ }
+
+ G_OBJECT_CLASS(parent_class)->dispose(media);
+}
+
+static void
+purple_media_finalize(GObject *media)
+{
+ PurpleMediaPrivate *priv = PURPLE_MEDIA_GET_PRIVATE(media);
+ purple_debug_info("media","purple_media_finalize\n");
+
+ for (; priv->streams; priv->streams = g_list_delete_link(priv->streams, priv->streams))
+ purple_media_stream_free(priv->streams->data);
+
+ if (priv->sessions) {
+ GList *sessions = g_hash_table_get_values(priv->sessions);
+ for (; sessions; sessions = g_list_delete_link(sessions, sessions)) {
+ purple_media_session_free(sessions->data);
+ }
+ g_hash_table_destroy(priv->sessions);
+ }
+
+ G_OBJECT_CLASS(parent_class)->finalize(media);
+}
+
+static void
+purple_media_setup_pipeline(PurpleMedia *media)
+{
+ GstBus *bus;
+ gchar *name;
+ GstElement *pipeline;
+
+ if (media->priv->conference == NULL || media->priv->manager == NULL)
+ return;
+
+ pipeline = purple_media_manager_get_pipeline(media->priv->manager);
+
+ name = g_strdup_printf("conf_%p",
+ media->priv->conference);
+ media->priv->confbin = gst_bin_new(name);
+ g_free(name);
+
+ bus = gst_pipeline_get_bus(GST_PIPELINE(pipeline));
+ g_signal_connect(G_OBJECT(bus), "message",
+ G_CALLBACK(media_bus_call), media);
+ gst_object_unref(bus);
+
+ gst_bin_add(GST_BIN(pipeline),
+ media->priv->confbin);
+ gst_bin_add(GST_BIN(media->priv->confbin),
+ GST_ELEMENT(media->priv->conference));
+ gst_element_set_state(GST_ELEMENT(media->priv->confbin),
+ GST_STATE_PLAYING);
+}
+
+static void
+purple_media_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+{
+ PurpleMedia *media;
+ g_return_if_fail(PURPLE_IS_MEDIA(object));
+
+ media = PURPLE_MEDIA(object);
+
+ switch (prop_id) {
+ case PROP_MANAGER:
+ media->priv->manager = g_value_get_object(value);
+ g_object_ref(media->priv->manager);
+
+ purple_media_setup_pipeline(media);
+ break;
+ case PROP_ACCOUNT:
+ media->priv->account = g_value_get_pointer(value);
+ break;
+ case PROP_CONFERENCE: {
+ if (media->priv->conference)
+ gst_object_unref(media->priv->conference);
+ media->priv->conference = g_value_get_object(value);
+ gst_object_ref(media->priv->conference);
+
+ purple_media_setup_pipeline(media);
+ break;
+ }
+ case PROP_INITIATOR:
+ media->priv->initiator = g_value_get_boolean(value);
+ break;
+ case PROP_PRPL_DATA:
+ media->priv->prpl_data = g_value_get_pointer(value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+purple_media_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+{
+ PurpleMedia *media;
+ g_return_if_fail(PURPLE_IS_MEDIA(object));
+
+ media = PURPLE_MEDIA(object);
+
+ switch (prop_id) {
+ case PROP_MANAGER:
+ g_value_set_object(value, media->priv->manager);
+ break;
+ case PROP_ACCOUNT:
+ g_value_set_pointer(value, media->priv->account);
+ break;
+ case PROP_CONFERENCE:
+ g_value_set_object(value, media->priv->conference);
+ break;
+ case PROP_INITIATOR:
+ g_value_set_boolean(value, media->priv->initiator);
+ break;
+ case PROP_PRPL_DATA:
+ g_value_set_pointer(value, media->priv->prpl_data);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+
+}
+#endif
+
+/*
+ * PurpleMediaCandidateType
+ */
+
+GType
+purple_media_candidate_type_get_type()
+{
+ static GType type = 0;
+ if (type == 0) {
+ static const GEnumValue values[] = {
+ { PURPLE_MEDIA_CANDIDATE_TYPE_HOST,
+ "PURPLE_MEDIA_CANDIDATE_TYPE_HOST",
+ "host" },
+ { PURPLE_MEDIA_CANDIDATE_TYPE_SRFLX,
+ "PURPLE_MEDIA_CANDIDATE_TYPE_SRFLX",
+ "srflx" },
+ { PURPLE_MEDIA_CANDIDATE_TYPE_PRFLX,
+ "PURPLE_MEDIA_CANDIDATE_TYPE_PRFLX",
+ "prflx" },
+ { PURPLE_MEDIA_CANDIDATE_TYPE_RELAY,
+ "PPURPLE_MEDIA_CANDIDATE_TYPE_RELAY",
+ "relay" },
+ { PURPLE_MEDIA_CANDIDATE_TYPE_MULTICAST,
+ "PURPLE_MEDIA_CANDIDATE_TYPE_MULTICAST",
+ "multicast" },
+ { 0, NULL, NULL }
+ };
+ type = g_enum_register_static("PurpleMediaCandidateType",
+ values);
+ }
+ return type;
+}
+
+/*
+ * PurpleMediaNetworkProtocol
+ */
+
+GType
+purple_media_network_protocol_get_type()
+{
+ static GType type = 0;
+ if (type == 0) {
+ static const GEnumValue values[] = {
+ { PURPLE_MEDIA_NETWORK_PROTOCOL_UDP,
+ "PURPLE_MEDIA_NETWORK_PROTOCOL_UDP",
+ "udp" },
+ { PURPLE_MEDIA_NETWORK_PROTOCOL_TCP,
+ "PURPLE_MEDIA_NETWORK_PROTOCOL_TCP",
+ "tcp" },
+ { 0, NULL, NULL }
+ };
+ type = g_enum_register_static("PurpleMediaNetworkProtocol",
+ values);
+ }
+ return type;
+}
+
+/*
+ * PurpleMediaCandidate
+ */
+
+struct _PurpleMediaCandidateClass
+{
+ GObjectClass parent_class;
+};
+
+struct _PurpleMediaCandidate
+{
+ GObject parent;
+};
+
+#ifdef USE_VV
+struct _PurpleMediaCandidatePrivate
+{
+ gchar *foundation;
+ guint component_id;
+ gchar *ip;
+ guint16 port;
+ gchar *base_ip;
+ guint16 base_port;
+ PurpleMediaNetworkProtocol proto;
+ guint32 priority;
+ PurpleMediaCandidateType type;
+ gchar *username;
+ gchar *password;
+ guint ttl;
+};
+
+enum {
+ PROP_CANDIDATE_0,
+ PROP_FOUNDATION,
+ PROP_COMPONENT_ID,
+ PROP_IP,
+ PROP_PORT,
+ PROP_BASE_IP,
+ PROP_BASE_PORT,
+ PROP_PROTOCOL,
+ PROP_PRIORITY,
+ PROP_TYPE,
+ PROP_USERNAME,
+ PROP_PASSWORD,
+ PROP_TTL,
+};
+
+static void
+purple_media_candidate_init(PurpleMediaCandidate *info)
+{
+ PurpleMediaCandidatePrivate *priv =
+ PURPLE_MEDIA_CANDIDATE_GET_PRIVATE(info);
+ priv->foundation = NULL;
+ priv->component_id = 0;
+ priv->ip = NULL;
+ priv->port = 0;
+ priv->base_ip = NULL;
+ priv->proto = PURPLE_MEDIA_NETWORK_PROTOCOL_UDP;
+ priv->priority = 0;
+ priv->type = PURPLE_MEDIA_CANDIDATE_TYPE_HOST;
+ priv->username = NULL;
+ priv->password = NULL;
+ priv->ttl = 0;
+}
+
+static void
+purple_media_candidate_finalize(GObject *info)
+{
+ PurpleMediaCandidatePrivate *priv =
+ PURPLE_MEDIA_CANDIDATE_GET_PRIVATE(info);
+
+ g_free(priv->foundation);
+ g_free(priv->ip);
+ g_free(priv->base_ip);
+ g_free(priv->username);
+ g_free(priv->password);
+}
+
+static void
+purple_media_candidate_set_property (GObject *object, guint prop_id,
+ const GValue *value, GParamSpec *pspec)
+{
+ PurpleMediaCandidatePrivate *priv;
+ g_return_if_fail(PURPLE_IS_MEDIA_CANDIDATE(object));
+
+ priv = PURPLE_MEDIA_CANDIDATE_GET_PRIVATE(object);
+
+ switch (prop_id) {
+ case PROP_FOUNDATION:
+ g_free(priv->foundation);
+ priv->foundation = g_value_dup_string(value);
+ break;
+ case PROP_COMPONENT_ID:
+ priv->component_id = g_value_get_uint(value);
+ break;
+ case PROP_IP:
+ g_free(priv->ip);
+ priv->ip = g_value_dup_string(value);
+ break;
+ case PROP_PORT:
+ priv->port = g_value_get_uint(value);
+ break;
+ case PROP_BASE_IP:
+ g_free(priv->base_ip);
+ priv->base_ip = g_value_dup_string(value);
+ break;
+ case PROP_BASE_PORT:
+ priv->base_port = g_value_get_uint(value);
+ break;
+ case PROP_PROTOCOL:
+ priv->proto = g_value_get_enum(value);
+ break;
+ case PROP_PRIORITY:
+ priv->priority = g_value_get_uint(value);
+ break;
+ case PROP_TYPE:
+ priv->type = g_value_get_enum(value);
+ break;
+ case PROP_USERNAME:
+ g_free(priv->username);
+ priv->username = g_value_dup_string(value);
+ break;
+ case PROP_PASSWORD:
+ g_free(priv->password);
+ priv->password = g_value_dup_string(value);
+ break;
+ case PROP_TTL:
+ priv->ttl = g_value_get_uint(value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(
+ object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+purple_media_candidate_get_property (GObject *object, guint prop_id,
+ GValue *value, GParamSpec *pspec)
+{
+ PurpleMediaCandidatePrivate *priv;
+ g_return_if_fail(PURPLE_IS_MEDIA_CANDIDATE(object));
+
+ priv = PURPLE_MEDIA_CANDIDATE_GET_PRIVATE(object);
+
+ switch (prop_id) {
+ case PROP_FOUNDATION:
+ g_value_set_string(value, priv->foundation);
+ break;
+ case PROP_COMPONENT_ID:
+ g_value_set_uint(value, priv->component_id);
+ break;
+ case PROP_IP:
+ g_value_set_string(value, priv->ip);
+ break;
+ case PROP_PORT:
+ g_value_set_uint(value, priv->port);
+ break;
+ case PROP_BASE_IP:
+ g_value_set_string(value, priv->base_ip);
+ break;
+ case PROP_BASE_PORT:
+ g_value_set_uint(value, priv->base_port);
+ break;
+ case PROP_PROTOCOL:
+ g_value_set_enum(value, priv->proto);
+ break;
+ case PROP_PRIORITY:
+ g_value_set_uint(value, priv->priority);
+ break;
+ case PROP_TYPE:
+ g_value_set_enum(value, priv->type);
+ break;
+ case PROP_USERNAME:
+ g_value_set_string(value, priv->username);
+ break;
+ case PROP_PASSWORD:
+ g_value_set_string(value, priv->password);
+ break;
+ case PROP_TTL:
+ g_value_set_uint(value, priv->ttl);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(
+ object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+purple_media_candidate_class_init(PurpleMediaCandidateClass *klass)
+{
+ GObjectClass *gobject_class = (GObjectClass*)klass;
+
+ gobject_class->finalize = purple_media_candidate_finalize;
+ gobject_class->set_property = purple_media_candidate_set_property;
+ gobject_class->get_property = purple_media_candidate_get_property;
+
+ g_object_class_install_property(gobject_class, PROP_FOUNDATION,
+ g_param_spec_string("foundation",
+ "Foundation",
+ "The foundation of the candidate.",
+ NULL,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property(gobject_class, PROP_COMPONENT_ID,
+ g_param_spec_uint("component-id",
+ "Component ID",
+ "The component id of the candidate.",
+ 0, G_MAXUINT, 0,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property(gobject_class, PROP_IP,
+ g_param_spec_string("ip",
+ "IP Address",
+ "The IP address of the candidate.",
+ NULL,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property(gobject_class, PROP_PORT,
+ g_param_spec_uint("port",
+ "Port",
+ "The port of the candidate.",
+ 0, G_MAXUINT16, 0,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property(gobject_class, PROP_BASE_IP,
+ g_param_spec_string("base-ip",
+ "Base IP",
+ "The internal IP address of the candidate.",
+ NULL,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property(gobject_class, PROP_BASE_PORT,
+ g_param_spec_uint("base-port",
+ "Base Port",
+ "The internal port of the candidate.",
+ 0, G_MAXUINT16, 0,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property(gobject_class, PROP_PROTOCOL,
+ g_param_spec_enum("protocol",
+ "Protocol",
+ "The protocol of the candidate.",
+ PURPLE_TYPE_MEDIA_NETWORK_PROTOCOL,
+ PURPLE_MEDIA_NETWORK_PROTOCOL_UDP,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property(gobject_class, PROP_PRIORITY,
+ g_param_spec_uint("priority",
+ "Priority",
+ "The priority of the candidate.",
+ 0, G_MAXUINT32, 0,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property(gobject_class, PROP_TYPE,
+ g_param_spec_enum("type",
+ "Type",
+ "The type of the candidate.",
+ PURPLE_TYPE_MEDIA_CANDIDATE_TYPE,
+ PURPLE_MEDIA_CANDIDATE_TYPE_HOST,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property(gobject_class, PROP_USERNAME,
+ g_param_spec_string("username",
+ "Username",
+ "The username used to connect to the candidate.",
+ NULL,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property(gobject_class, PROP_PASSWORD,
+ g_param_spec_string("password",
+ "Password",
+ "The password use to connect to the candidate.",
+ NULL,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property(gobject_class, PROP_TTL,
+ g_param_spec_uint("ttl",
+ "TTL",
+ "The TTL of the candidate.",
+ 0, G_MAXUINT, 0,
+ G_PARAM_READWRITE));
+
+ g_type_class_add_private(klass, sizeof(PurpleMediaCandidatePrivate));
+}
+
+G_DEFINE_TYPE(PurpleMediaCandidate,
+ purple_media_candidate, G_TYPE_OBJECT);
+#else
+GType
+purple_media_candidate_get_type()
+{
+ return G_TYPE_NONE;
+}
+#endif
+
+PurpleMediaCandidate *
+purple_media_candidate_new(const gchar *foundation, guint component_id,
+ PurpleMediaCandidateType type,
+ PurpleMediaNetworkProtocol proto,
+ const gchar *ip, guint port)
+{
+ return g_object_new(PURPLE_TYPE_MEDIA_CANDIDATE,
+ "foundation", foundation,
+ "component-id", component_id,
+ "type", type,
+ "protocol", proto,
+ "ip", ip,
+ "port", port, NULL);
+}
+
+static PurpleMediaCandidate *
+purple_media_candidate_copy(PurpleMediaCandidate *candidate)
+{
+#ifdef USE_VV
+ PurpleMediaCandidatePrivate *priv;
+ PurpleMediaCandidate *new_candidate;
+
+ if (candidate == NULL)
+ return NULL;
+
+ priv = PURPLE_MEDIA_CANDIDATE_GET_PRIVATE(candidate);
+
+ new_candidate = purple_media_candidate_new(priv->foundation,
+ priv->component_id, priv->type, priv->proto,
+ priv->ip, priv->port);
+ g_object_set(new_candidate,
+ "base-ip", priv->base_ip,
+ "base-port", priv->base_port,
+ "priority", priv->priority,
+ "username", priv->username,
+ "password", priv->password,
+ "ttl", priv->ttl, NULL);
+ return new_candidate;
+#else
+ return NULL;
+#endif
+}
+
+#ifdef USE_VV
+static FsCandidate *
+purple_media_candidate_to_fs(PurpleMediaCandidate *candidate)
+{
+ PurpleMediaCandidatePrivate *priv;
+ FsCandidate *fscandidate;
+
+ if (candidate == NULL)
+ return NULL;
+
+ priv = PURPLE_MEDIA_CANDIDATE_GET_PRIVATE(candidate);
+
+ fscandidate = fs_candidate_new(priv->foundation,
+ priv->component_id, priv->type,
+ priv->proto, priv->ip, priv->port);
+
+ fscandidate->base_ip = g_strdup(priv->base_ip);
+ fscandidate->base_port = priv->base_port;
+ fscandidate->priority = priv->priority;
+ fscandidate->username = g_strdup(priv->username);
+ fscandidate->password = g_strdup(priv->password);
+ fscandidate->ttl = priv->ttl;
+ return fscandidate;
+}
+
+static PurpleMediaCandidate *
+purple_media_candidate_from_fs(FsCandidate *fscandidate)
+{
+ PurpleMediaCandidate *candidate;
+
+ if (fscandidate == NULL)
+ return NULL;
+
+ candidate = purple_media_candidate_new(fscandidate->foundation,
+ fscandidate->component_id, fscandidate->type,
+ fscandidate->proto, fscandidate->ip, fscandidate->port);
+ g_object_set(candidate,
+ "base-ip", fscandidate->base_ip,
+ "base-port", fscandidate->base_port,
+ "priority", fscandidate->priority,
+ "username", fscandidate->username,
+ "password", fscandidate->password,
+ "ttl", fscandidate->ttl, NULL);
+ return candidate;
+}
+
+static GList *
+purple_media_candidate_list_from_fs(GList *candidates)
+{
+ GList *new_list = NULL;
+
+ for (; candidates; candidates = g_list_next(candidates)) {
+ new_list = g_list_prepend(new_list,
+ purple_media_candidate_from_fs(
+ candidates->data));
+ }
+
+ new_list = g_list_reverse(new_list);
+ return new_list;
+}
+
+static GList *
+purple_media_candidate_list_to_fs(GList *candidates)
+{
+ GList *new_list = NULL;
+
+ for (; candidates; candidates = g_list_next(candidates)) {
+ new_list = g_list_prepend(new_list,
+ purple_media_candidate_to_fs(
+ candidates->data));
+ }
+
+ new_list = g_list_reverse(new_list);
+ return new_list;
+}
+#endif
+
+GList *
+purple_media_candidate_list_copy(GList *candidates)
+{
+ GList *new_list = NULL;
+
+ for (; candidates; candidates = g_list_next(candidates)) {
+ new_list = g_list_prepend(new_list,
+ purple_media_candidate_copy(candidates->data));
+ }
+
+ new_list = g_list_reverse(new_list);
+ return new_list;
+}
+
+void
+purple_media_candidate_list_free(GList *candidates)
+{
+ for (; candidates; candidates =
+ g_list_delete_link(candidates, candidates)) {
+ g_object_unref(candidates->data);
+ }
+}
+
+gchar *
+purple_media_candidate_get_foundation(PurpleMediaCandidate *candidate)
+{
+ gchar *foundation;
+ g_return_val_if_fail(PURPLE_IS_MEDIA_CANDIDATE(candidate), NULL);
+ g_object_get(candidate, "foundation", &foundation, NULL);
+ return foundation;
+}
+
+guint
+purple_media_candidate_get_component_id(PurpleMediaCandidate *candidate)
+{
+ guint component_id;
+ g_return_val_if_fail(PURPLE_IS_MEDIA_CANDIDATE(candidate), 0);
+ g_object_get(candidate, "component-id", &component_id, NULL);
+ return component_id;
+}
+
+gchar *
+purple_media_candidate_get_ip(PurpleMediaCandidate *candidate)
+{
+ gchar *ip;
+ g_return_val_if_fail(PURPLE_IS_MEDIA_CANDIDATE(candidate), NULL);
+ g_object_get(candidate, "ip", &ip, NULL);
+ return ip;
+}
+
+guint16
+purple_media_candidate_get_port(PurpleMediaCandidate *candidate)
+{
+ guint port;
+ g_return_val_if_fail(PURPLE_IS_MEDIA_CANDIDATE(candidate), 0);
+ g_object_get(candidate, "port", &port, NULL);
+ return port;
+}
+
+gchar *
+purple_media_candidate_get_base_ip(PurpleMediaCandidate *candidate)
+{
+ gchar *base_ip;
+ g_return_val_if_fail(PURPLE_IS_MEDIA_CANDIDATE(candidate), NULL);
+ g_object_get(candidate, "base-ip", &base_ip, NULL);
+ return base_ip;
+}
+
+guint16
+purple_media_candidate_get_base_port(PurpleMediaCandidate *candidate)
+{
+ guint base_port;
+ g_return_val_if_fail(PURPLE_IS_MEDIA_CANDIDATE(candidate), 0);
+ g_object_get(candidate, "base_port", &base_port, NULL);
+ return base_port;
+}
+
+PurpleMediaNetworkProtocol
+purple_media_candidate_get_protocol(PurpleMediaCandidate *candidate)
+{
+ PurpleMediaNetworkProtocol protocol;
+ g_return_val_if_fail(PURPLE_IS_MEDIA_CANDIDATE(candidate),
+ PURPLE_MEDIA_NETWORK_PROTOCOL_UDP);
+ g_object_get(candidate, "protocol", &protocol, NULL);
+ return protocol;
+}
+
+guint32
+purple_media_candidate_get_priority(PurpleMediaCandidate *candidate)
+{
+ guint priority;
+ g_return_val_if_fail(PURPLE_IS_MEDIA_CANDIDATE(candidate), 0);
+ g_object_get(candidate, "priority", &priority, NULL);
+ return priority;
+}
+
+PurpleMediaCandidateType
+purple_media_candidate_get_candidate_type(PurpleMediaCandidate *candidate)
+{
+ PurpleMediaCandidateType type;
+ g_return_val_if_fail(PURPLE_IS_MEDIA_CANDIDATE(candidate),
+ PURPLE_MEDIA_CANDIDATE_TYPE_HOST);
+ g_object_get(candidate, "type", &type, NULL);
+ return type;
+}
+
+gchar *
+purple_media_candidate_get_username(PurpleMediaCandidate *candidate)
+{
+ gchar *username;
+ g_return_val_if_fail(PURPLE_IS_MEDIA_CANDIDATE(candidate), NULL);
+ g_object_get(candidate, "username", &username, NULL);
+ return username;
+}
+
+gchar *
+purple_media_candidate_get_password(PurpleMediaCandidate *candidate)
+{
+ gchar *password;
+ g_return_val_if_fail(PURPLE_IS_MEDIA_CANDIDATE(candidate), NULL);
+ g_object_get(candidate, "password", &password, NULL);
+ return password;
+}
+
+guint
+purple_media_candidate_get_ttl(PurpleMediaCandidate *candidate)
+{
+ guint ttl;
+ g_return_val_if_fail(PURPLE_IS_MEDIA_CANDIDATE(candidate), 0);
+ g_object_get(candidate, "ttl", &ttl, NULL);
+ return ttl;
+}
+
+#ifdef USE_VV
+static FsMediaType
+purple_media_to_fs_media_type(PurpleMediaSessionType type)
+{
+ if (type & PURPLE_MEDIA_AUDIO)
+ return FS_MEDIA_TYPE_AUDIO;
+ else if (type & PURPLE_MEDIA_VIDEO)
+ return FS_MEDIA_TYPE_VIDEO;
+ else
+ return 0;
+}
+
+static FsStreamDirection
+purple_media_to_fs_stream_direction(PurpleMediaSessionType type)
+{
+ if ((type & PURPLE_MEDIA_AUDIO) == PURPLE_MEDIA_AUDIO ||
+ (type & PURPLE_MEDIA_VIDEO) == PURPLE_MEDIA_VIDEO)
+ return FS_DIRECTION_BOTH;
+ else if ((type & PURPLE_MEDIA_SEND_AUDIO) ||
+ (type & PURPLE_MEDIA_SEND_VIDEO))
+ return FS_DIRECTION_SEND;
+ else if ((type & PURPLE_MEDIA_RECV_AUDIO) ||
+ (type & PURPLE_MEDIA_RECV_VIDEO))
+ return FS_DIRECTION_RECV;
+ else
+ return FS_DIRECTION_NONE;
+}
+
+static PurpleMediaSessionType
+purple_media_from_fs(FsMediaType type, FsStreamDirection direction)
+{
+ PurpleMediaSessionType result = PURPLE_MEDIA_NONE;
+ if (type == FS_MEDIA_TYPE_AUDIO) {
+ if (direction & FS_DIRECTION_SEND)
+ result |= PURPLE_MEDIA_SEND_AUDIO;
+ if (direction & FS_DIRECTION_RECV)
+ result |= PURPLE_MEDIA_RECV_AUDIO;
+ } else if (type == FS_MEDIA_TYPE_VIDEO) {
+ if (direction & FS_DIRECTION_SEND)
+ result |= PURPLE_MEDIA_SEND_VIDEO;
+ if (direction & FS_DIRECTION_RECV)
+ result |= PURPLE_MEDIA_RECV_VIDEO;
+ }
+ return result;
+}
+#endif
+
+/*
+ * PurpleMediaCodec
+ */
+
+struct _PurpleMediaCodecClass
+{
+ GObjectClass parent_class;
+};
+
+struct _PurpleMediaCodec
+{
+ GObject parent;
+};
+
+#ifdef USE_VV
+struct _PurpleMediaCodecPrivate
+{
+ gint id;
+ char *encoding_name;
+ PurpleMediaSessionType media_type;
+ guint clock_rate;
+ guint channels;
+ GList *optional_params;
+};
+
+enum {
+ PROP_CODEC_0,
+ PROP_ID,
+ PROP_ENCODING_NAME,
+ PROP_MEDIA_TYPE,
+ PROP_CLOCK_RATE,
+ PROP_CHANNELS,
+ PROP_OPTIONAL_PARAMS,
+};
+
+static void
+purple_media_codec_init(PurpleMediaCodec *info)
+{
+ PurpleMediaCodecPrivate *priv =
+ PURPLE_MEDIA_CODEC_GET_PRIVATE(info);
+ priv->encoding_name = NULL;
+ priv->optional_params = NULL;
+}
+
+static void
+purple_media_codec_finalize(GObject *info)
+{
+ PurpleMediaCodecPrivate *priv =
+ PURPLE_MEDIA_CODEC_GET_PRIVATE(info);
+ g_free(priv->encoding_name);
+ for (; priv->optional_params; priv->optional_params =
+ g_list_delete_link(priv->optional_params,
+ priv->optional_params)) {
+ g_free(priv->optional_params->data);
+ }
+}
+
+static void
+purple_media_codec_set_property (GObject *object, guint prop_id,
+ const GValue *value, GParamSpec *pspec)
+{
+ PurpleMediaCodecPrivate *priv;
+ g_return_if_fail(PURPLE_IS_MEDIA_CODEC(object));
+
+ priv = PURPLE_MEDIA_CODEC_GET_PRIVATE(object);
+
+ switch (prop_id) {
+ case PROP_ID:
+ priv->id = g_value_get_uint(value);
+ break;
+ case PROP_ENCODING_NAME:
+ g_free(priv->encoding_name);
+ priv->encoding_name = g_value_dup_string(value);
+ break;
+ case PROP_MEDIA_TYPE:
+ priv->media_type = g_value_get_flags(value);
+ break;
+ case PROP_CLOCK_RATE:
+ priv->clock_rate = g_value_get_uint(value);
+ break;
+ case PROP_CHANNELS:
+ priv->channels = g_value_get_uint(value);
+ break;
+ case PROP_OPTIONAL_PARAMS:
+ priv->optional_params = g_value_get_pointer(value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(
+ object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+purple_media_codec_get_property (GObject *object, guint prop_id,
+ GValue *value, GParamSpec *pspec)
+{
+ PurpleMediaCodecPrivate *priv;
+ g_return_if_fail(PURPLE_IS_MEDIA_CODEC(object));
+
+ priv = PURPLE_MEDIA_CODEC_GET_PRIVATE(object);
+
+ switch (prop_id) {
+ case PROP_ID:
+ g_value_set_uint(value, priv->id);
+ break;
+ case PROP_ENCODING_NAME:
+ g_value_set_string(value, priv->encoding_name);
+ break;
+ case PROP_MEDIA_TYPE:
+ g_value_set_flags(value, priv->media_type);
+ break;
+ case PROP_CLOCK_RATE:
+ g_value_set_uint(value, priv->clock_rate);
+ break;
+ case PROP_CHANNELS:
+ g_value_set_uint(value, priv->channels);
+ break;
+ case PROP_OPTIONAL_PARAMS:
+ g_value_set_pointer(value, priv->optional_params);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(
+ object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+purple_media_codec_class_init(PurpleMediaCodecClass *klass)
+{
+ GObjectClass *gobject_class = (GObjectClass*)klass;
+
+ gobject_class->finalize = purple_media_codec_finalize;
+ gobject_class->set_property = purple_media_codec_set_property;
+ gobject_class->get_property = purple_media_codec_get_property;
+
+ g_object_class_install_property(gobject_class, PROP_ID,
+ g_param_spec_uint("id",
+ "ID",
+ "The numeric identifier of the codec.",
+ 0, G_MAXUINT, 0,
+ G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
+
+ g_object_class_install_property(gobject_class, PROP_ENCODING_NAME,
+ g_param_spec_string("encoding-name",
+ "Encoding Name",
+ "The name of the codec.",
+ NULL,
+ G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
+
+ g_object_class_install_property(gobject_class, PROP_MEDIA_TYPE,
+ g_param_spec_flags("media-type",
+ "Media Type",
+ "Whether this is an audio of video codec.",
+ PURPLE_TYPE_MEDIA_SESSION_TYPE,
+ PURPLE_MEDIA_NONE,
+ G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
+
+ g_object_class_install_property(gobject_class, PROP_CLOCK_RATE,
+ g_param_spec_uint("clock-rate",
+ "Create Callback",
+ "The function called to create this element.",
+ 0, G_MAXUINT, 0,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property(gobject_class, PROP_CHANNELS,
+ g_param_spec_uint("channels",
+ "Channels",
+ "The number of channels in this codec.",
+ 0, G_MAXUINT, 0,
+ G_PARAM_READWRITE));
+ g_object_class_install_property(gobject_class, PROP_OPTIONAL_PARAMS,
+ g_param_spec_pointer("optional-params",
+ "Optional Params",
+ "A list of optional parameters for the codec.",
+ G_PARAM_READWRITE));
+
+ g_type_class_add_private(klass, sizeof(PurpleMediaCodecPrivate));
+}
+
+G_DEFINE_TYPE(PurpleMediaCodec,
+ purple_media_codec, G_TYPE_OBJECT);
+#else
+GType
+purple_media_codec_get_type()
+{
+ return G_TYPE_NONE;
+}
+#endif
+
+guint
+purple_media_codec_get_id(PurpleMediaCodec *codec)
+{
+ guint id;
+ g_return_val_if_fail(PURPLE_IS_MEDIA_CODEC(codec), 0);
+ g_object_get(codec, "id", &id, NULL);
+ return id;
+}
+
+gchar *
+purple_media_codec_get_encoding_name(PurpleMediaCodec *codec)
+{
+ gchar *name;
+ g_return_val_if_fail(PURPLE_IS_MEDIA_CODEC(codec), NULL);
+ g_object_get(codec, "encoding-name", &name, NULL);
+ return name;
+}
+
+guint
+purple_media_codec_get_clock_rate(PurpleMediaCodec *codec)
+{
+ guint clock_rate;
+ g_return_val_if_fail(PURPLE_IS_MEDIA_CODEC(codec), 0);
+ g_object_get(codec, "clock-rate", &clock_rate, NULL);
+ return clock_rate;
+}
+
+guint
+purple_media_codec_get_channels(PurpleMediaCodec *codec)
+{
+ guint channels;
+ g_return_val_if_fail(PURPLE_IS_MEDIA_CODEC(codec), 0);
+ g_object_get(codec, "channels", &channels, NULL);
+ return channels;
+}
+
+GList *
+purple_media_codec_get_optional_parameters(PurpleMediaCodec *codec)
+{
+ GList *optional_params;
+ g_return_val_if_fail(PURPLE_IS_MEDIA_CODEC(codec), NULL);
+ g_object_get(codec, "optional-params", &optional_params, NULL);
+ return optional_params;
+}
+
+void
+purple_media_codec_add_optional_parameter(PurpleMediaCodec *codec,
+ const gchar *name, const gchar *value)
+{
+#ifdef USE_VV
+ PurpleMediaCodecPrivate *priv;
+ PurpleKeyValuePair *new_param;
+
+ g_return_if_fail(codec != NULL);
+ g_return_if_fail(name != NULL && value != NULL);
+
+ priv = PURPLE_MEDIA_CODEC_GET_PRIVATE(codec);
+
+ new_param = g_new0(PurpleKeyValuePair, 1);
+ new_param->key = g_strdup(name);
+ new_param->value = g_strdup(value);
+ priv->optional_params = g_list_append(
+ priv->optional_params, new_param);
+#endif
+}
+
+void
+purple_media_codec_remove_optional_parameter(PurpleMediaCodec *codec,
+ PurpleKeyValuePair *param)
+{
+#ifdef USE_VV
+ PurpleMediaCodecPrivate *priv;
+
+ g_return_if_fail(codec != NULL && param != NULL);
+
+ priv = PURPLE_MEDIA_CODEC_GET_PRIVATE(codec);
+
+ g_free(param->key);
+ g_free(param->value);
+ g_free(param);
+
+ priv->optional_params =
+ g_list_remove(priv->optional_params, param);
+#endif
+}
+
+PurpleKeyValuePair *
+purple_media_codec_get_optional_parameter(PurpleMediaCodec *codec,
+ const gchar *name, const gchar *value)
+{
+#ifdef USE_VV
+ PurpleMediaCodecPrivate *priv;
+ GList *iter;
+
+ g_return_val_if_fail(codec != NULL, NULL);
+ g_return_val_if_fail(name != NULL, NULL);
+
+ priv = PURPLE_MEDIA_CODEC_GET_PRIVATE(codec);
+
+ for (iter = priv->optional_params; iter; iter = g_list_next(iter)) {
+ PurpleKeyValuePair *param = iter->data;
+ if (!g_ascii_strcasecmp(param->key, name) &&
+ (value == NULL ||
+ !g_ascii_strcasecmp(param->value, value)))
+ return param;
+ }
+#endif
+
+ return NULL;
+}
+
+PurpleMediaCodec *
+purple_media_codec_new(int id, const char *encoding_name,
+ PurpleMediaSessionType media_type, guint clock_rate)
+{
+ PurpleMediaCodec *codec =
+ g_object_new(PURPLE_TYPE_MEDIA_CODEC,
+ "id", id,
+ "encoding_name", encoding_name,
+ "media_type", media_type,
+ "clock-rate", clock_rate, NULL);
+ return codec;
+}
+
+static PurpleMediaCodec *
+purple_media_codec_copy(PurpleMediaCodec *codec)
+{
+#ifdef USE_VV
+ PurpleMediaCodecPrivate *priv;
+ PurpleMediaCodec *new_codec;
+ GList *iter;
+
+ if (codec == NULL)
+ return NULL;
+
+ priv = PURPLE_MEDIA_CODEC_GET_PRIVATE(codec);
+
+ new_codec = purple_media_codec_new(priv->id, priv->encoding_name,
+ priv->media_type, priv->clock_rate);
+ g_object_set(codec, "channels", priv->channels, NULL);
+
+ for (iter = priv->optional_params; iter; iter = g_list_next(iter)) {
+ PurpleKeyValuePair *param =
+ (PurpleKeyValuePair*)iter->data;
+ purple_media_codec_add_optional_parameter(new_codec,
+ param->key, param->value);
+ }
+
+ return new_codec;
+#else
+ return NULL;
+#endif
+}
+
+#ifdef USE_VV
+static FsCodec *
+purple_media_codec_to_fs(const PurpleMediaCodec *codec)
+{
+ PurpleMediaCodecPrivate *priv;
+ FsCodec *new_codec;
+ GList *iter;
+
+ if (codec == NULL)
+ return NULL;
+
+ priv = PURPLE_MEDIA_CODEC_GET_PRIVATE(codec);
+
+ new_codec = fs_codec_new(priv->id, priv->encoding_name,
+ purple_media_to_fs_media_type(priv->media_type),
+ priv->clock_rate);
+ new_codec->channels = priv->channels;
+
+ for (iter = priv->optional_params; iter; iter = g_list_next(iter)) {
+ PurpleKeyValuePair *param = (PurpleKeyValuePair*)iter->data;
+ fs_codec_add_optional_parameter(new_codec,
+ param->key, param->value);
+ }
+
+ return new_codec;
+}
+
+static PurpleMediaCodec *
+purple_media_codec_from_fs(const FsCodec *codec)
+{
+ PurpleMediaCodec *new_codec;
+ GList *iter;
+
+ if (codec == NULL)
+ return NULL;
+
+ new_codec = purple_media_codec_new(codec->id, codec->encoding_name,
+ purple_media_from_fs(codec->media_type,
+ FS_DIRECTION_BOTH), codec->clock_rate);
+ g_object_set(new_codec, "channels", codec->channels, NULL);
+
+ for (iter = codec->optional_params; iter; iter = g_list_next(iter)) {
+ FsCodecParameter *param = (FsCodecParameter*)iter->data;
+ purple_media_codec_add_optional_parameter(new_codec,
+ param->name, param->value);
+ }
+
+ return new_codec;
+}
+#endif
+
+gchar *
+purple_media_codec_to_string(const PurpleMediaCodec *codec)
+{
+#ifdef USE_VV
+ FsCodec *fscodec = purple_media_codec_to_fs(codec);
+ gchar *str = fs_codec_to_string(fscodec);
+ fs_codec_destroy(fscodec);
+ return str;
+#else
+ return g_strdup("");
+#endif
+}
+
+#ifdef USE_VV
+static GList *
+purple_media_codec_list_from_fs(GList *codecs)
+{
+ GList *new_list = NULL;
+
+ for (; codecs; codecs = g_list_next(codecs)) {
+ new_list = g_list_prepend(new_list,
+ purple_media_codec_from_fs(
+ codecs->data));
+ }
+
+ new_list = g_list_reverse(new_list);
+ return new_list;
+}
+
+static GList *
+purple_media_codec_list_to_fs(GList *codecs)
+{
+ GList *new_list = NULL;
+
+ for (; codecs; codecs = g_list_next(codecs)) {
+ new_list = g_list_prepend(new_list,
+ purple_media_codec_to_fs(
+ codecs->data));
+ }
+
+ new_list = g_list_reverse(new_list);
+ return new_list;
+}
+#endif
+
+GList *
+purple_media_codec_list_copy(GList *codecs)
+{
+ GList *new_list = NULL;
+
+ for (; codecs; codecs = g_list_next(codecs)) {
+ new_list = g_list_prepend(new_list,
+ purple_media_codec_copy(codecs->data));
+ }
+
+ new_list = g_list_reverse(new_list);
+ return new_list;
+}
+
+void
+purple_media_codec_list_free(GList *codecs)
+{
+ for (; codecs; codecs =
+ g_list_delete_link(codecs, codecs)) {
+ g_object_unref(codecs->data);
+ }
+}
+
+#ifdef USE_VV
+static PurpleMediaSession*
+purple_media_get_session(PurpleMedia *media, const gchar *sess_id)
+{
+ g_return_val_if_fail(PURPLE_IS_MEDIA(media), NULL);
+ return (PurpleMediaSession*) (media->priv->sessions) ?
+ g_hash_table_lookup(media->priv->sessions, sess_id) : NULL;
+}
+
+static FsParticipant*
+purple_media_get_participant(PurpleMedia *media, const gchar *name)
+{
+ g_return_val_if_fail(PURPLE_IS_MEDIA(media), NULL);
+ return (FsParticipant*) (media->priv->participants) ?
+ g_hash_table_lookup(media->priv->participants, name) : NULL;
+}
+
+static PurpleMediaStream*
+purple_media_get_stream(PurpleMedia *media, const gchar *session, const gchar *participant)
+{
+ GList *streams;
+
+ g_return_val_if_fail(PURPLE_IS_MEDIA(media), NULL);
+
+ streams = media->priv->streams;
+
+ for (; streams; streams = g_list_next(streams)) {
+ PurpleMediaStream *stream = streams->data;
+ if (!strcmp(stream->session->id, session) &&
+ !strcmp(stream->participant, participant))
+ return stream;
+ }
+
+ return NULL;
+}
+
+static GList *
+purple_media_get_streams(PurpleMedia *media, const gchar *session,
+ const gchar *participant)
+{
+ GList *streams;
+ GList *ret = NULL;
+
+ g_return_val_if_fail(PURPLE_IS_MEDIA(media), NULL);
+
+ streams = media->priv->streams;
+
+ for (; streams; streams = g_list_next(streams)) {
+ PurpleMediaStream *stream = streams->data;
+ if ((session == NULL ||
+ !strcmp(stream->session->id, session)) &&
+ (participant == NULL ||
+ !strcmp(stream->participant, participant)))
+ ret = g_list_append(ret, stream);
+ }
+
+ return ret;
+}
+
+static void
+purple_media_add_session(PurpleMedia *media, PurpleMediaSession *session)
+{
+ g_return_if_fail(PURPLE_IS_MEDIA(media));
+ g_return_if_fail(session != NULL);
+
+ if (!media->priv->sessions) {
+ purple_debug_info("media", "Creating hash table for sessions\n");
+ media->priv->sessions = g_hash_table_new(g_str_hash, g_str_equal);
+ }
+ g_hash_table_insert(media->priv->sessions, g_strdup(session->id), session);
+}
+
+static gboolean
+purple_media_remove_session(PurpleMedia *media, PurpleMediaSession *session)
+{
+ g_return_val_if_fail(PURPLE_IS_MEDIA(media), FALSE);
+ return g_hash_table_remove(media->priv->sessions, session->id);
+}
+
+static FsParticipant *
+purple_media_add_participant(PurpleMedia *media, const gchar *name)
+{
+ FsParticipant *participant;
+ GError *err = NULL;
+
+ g_return_val_if_fail(PURPLE_IS_MEDIA(media), NULL);
+
+ participant = purple_media_get_participant(media, name);
+
+ if (participant)
+ return participant;
+
+ participant = fs_conference_new_participant(media->priv->conference,
+ (gchar*)name, &err);
+
+ if (err) {
+ purple_debug_error("media", "Error creating participant: %s\n",
+ err->message);
+ g_error_free(err);
+ return NULL;
+ }
+
+ if (!media->priv->participants) {
+ purple_debug_info("media", "Creating hash table for participants\n");
+ media->priv->participants = g_hash_table_new_full(g_str_hash,
+ g_str_equal, g_free, NULL);
+ }
+
+ g_hash_table_insert(media->priv->participants, g_strdup(name), participant);
+
+ return participant;
+}
+
+static PurpleMediaStream *
+purple_media_insert_stream(PurpleMediaSession *session, const gchar *name, FsStream *stream)
+{
+ PurpleMediaStream *media_stream;
+
+ g_return_val_if_fail(session != NULL, NULL);
+
+ media_stream = g_new0(PurpleMediaStream, 1);
+ media_stream->stream = stream;
+ media_stream->participant = g_strdup(name);
+ media_stream->session = session;
+
+ session->media->priv->streams =
+ g_list_append(session->media->priv->streams, media_stream);
+
+ return media_stream;
+}
+
+static void
+purple_media_insert_local_candidate(PurpleMediaSession *session, const gchar *name,
+ FsCandidate *candidate)
+{
+ PurpleMediaStream *stream;
+
+ g_return_if_fail(session != NULL);
+
+ stream = purple_media_get_stream(session->media, session->id, name);
+ stream->local_candidates = g_list_append(stream->local_candidates, candidate);
+}
+#endif
+
+GList *
+purple_media_get_session_ids(PurpleMedia *media)
+{
+#ifdef USE_VV
+ g_return_val_if_fail(PURPLE_IS_MEDIA(media), NULL);
+ return media->priv->sessions != NULL ?
+ g_hash_table_get_keys(media->priv->sessions) : NULL;
+#else
+ return NULL;
+#endif
+}
+
+#ifdef USE_VV
+static void
+purple_media_set_src(PurpleMedia *media, const gchar *sess_id, GstElement *src)
+{
+ PurpleMediaSession *session;
+ GstPad *sinkpad;
+ GstPad *srcpad;
+
+ g_return_if_fail(PURPLE_IS_MEDIA(media));
+ g_return_if_fail(GST_IS_ELEMENT(src));
+
+ session = purple_media_get_session(media, sess_id);
+
+ if (session == NULL) {
+ purple_debug_warning("media", "purple_media_set_src: trying"
+ " to set src on non-existent session\n");
+ return;
+ }
+
+ if (session->src)
+ gst_object_unref(session->src);
+ session->src = src;
+ gst_element_set_locked_state(session->src, TRUE);
+
+ session->tee = gst_element_factory_make("tee", NULL);
+ gst_bin_add(GST_BIN(session->media->priv->confbin), session->tee);
+
+ /* This supposedly isn't necessary, but it silences some warnings */
+ if (GST_ELEMENT_PARENT(session->media->priv->confbin)
+ == GST_ELEMENT_PARENT(session->src)) {
+ GstPad *pad = gst_element_get_static_pad(session->tee, "sink");
+ GstPad *ghost = gst_ghost_pad_new(NULL, pad);
+ gst_object_unref(pad);
+ gst_pad_set_active(ghost, TRUE);
+ gst_element_add_pad(session->media->priv->confbin, ghost);
+ }
+
+ gst_element_link(session->src, session->media->priv->confbin);
+ gst_element_set_state(session->tee, GST_STATE_PLAYING);
+
+ g_object_get(session->session, "sink-pad", &sinkpad, NULL);
+ srcpad = gst_element_get_request_pad(session->tee, "src%d");
+ purple_debug_info("media", "connecting pad: %s\n",
+ gst_pad_link(srcpad, sinkpad) == GST_PAD_LINK_OK
+ ? "success" : "failure");
+ gst_element_set_locked_state(session->src, FALSE);
+ gst_object_unref(session->src);
+}
+#endif
+
+#ifdef USE_GSTREAMER
+GstElement *
+purple_media_get_src(PurpleMedia *media, const gchar *sess_id)
+{
+#ifdef USE_VV
+ PurpleMediaSession *session;
+ g_return_val_if_fail(PURPLE_IS_MEDIA(media), NULL);
+ session = purple_media_get_session(media, sess_id);
+ return (session != NULL) ? session->src : NULL;
+#else
+ return NULL;
+#endif
+}
+#endif /* USE_GSTREAMER */
+
+#ifdef USE_VV
+static PurpleMediaSession *
+purple_media_session_from_fs_stream(PurpleMedia *media, FsStream *stream)
+{
+ FsSession *fssession;
+ GList *values;
+
+ g_return_val_if_fail(PURPLE_IS_MEDIA(media), NULL);
+ g_return_val_if_fail(FS_IS_STREAM(stream), NULL);
+
+ g_object_get(stream, "session", &fssession, NULL);
+
+ values = g_hash_table_get_values(media->priv->sessions);
+
+ for (; values; values = g_list_delete_link(values, values)) {
+ PurpleMediaSession *session = values->data;
+
+ if (session->session == fssession) {
+ g_list_free(values);
+ g_object_unref(fssession);
+ return session;
+ }
+ }
+
+ g_object_unref(fssession);
+ return NULL;
+}
+
+static gboolean
+media_bus_call(GstBus *bus, GstMessage *msg, PurpleMedia *media)
+{
+ switch(GST_MESSAGE_TYPE(msg)) {
+ case GST_MESSAGE_ELEMENT: {
+ if (!FS_IS_CONFERENCE(GST_MESSAGE_SRC(msg)) ||
+ !PURPLE_IS_MEDIA(media) ||
+ media->priv->conference !=
+ FS_CONFERENCE(GST_MESSAGE_SRC(msg)))
+ break;
+
+ if (gst_structure_has_name(msg->structure, "farsight-error")) {
+ FsError error_no;
+ gst_structure_get_enum(msg->structure, "error-no",
+ FS_TYPE_ERROR, (gint*)&error_no);
+ /*
+ * Unknown CName is only a problem for the
+ * multicast transmitter which isn't used.
+ */
+ if (error_no != FS_ERROR_UNKNOWN_CNAME)
+ purple_debug_error("media", "farsight-error: %i: %s\n", error_no,
+ gst_structure_get_string(msg->structure, "error-msg"));
+ } else if (gst_structure_has_name(msg->structure,
+ "farsight-new-local-candidate")) {
+ FsStream *stream = g_value_get_object(gst_structure_get_value(msg->structure, "stream"));
+ FsCandidate *local_candidate = g_value_get_boxed(gst_structure_get_value(msg->structure, "candidate"));
+ PurpleMediaSession *session = purple_media_session_from_fs_stream(media, stream);
+ purple_media_new_local_candidate_cb(stream, local_candidate, session);
+ } else if (gst_structure_has_name(msg->structure,
+ "farsight-local-candidates-prepared")) {
+ FsStream *stream = g_value_get_object(gst_structure_get_value(msg->structure, "stream"));
+ PurpleMediaSession *session = purple_media_session_from_fs_stream(media, stream);
+ purple_media_candidates_prepared_cb(stream, session);
+ } else if (gst_structure_has_name(msg->structure,
+ "farsight-new-active-candidate-pair")) {
+ FsStream *stream = g_value_get_object(gst_structure_get_value(msg->structure, "stream"));
+ FsCandidate *local_candidate = g_value_get_boxed(gst_structure_get_value(msg->structure, "local-candidate"));
+ FsCandidate *remote_candidate = g_value_get_boxed(gst_structure_get_value(msg->structure, "remote-candidate"));
+ PurpleMediaSession *session = purple_media_session_from_fs_stream(media, stream);
+ purple_media_candidate_pair_established_cb(stream, local_candidate, remote_candidate, session);
+ } else if (gst_structure_has_name(msg->structure,
+ "farsight-recv-codecs-changed")) {
+ GList *codecs = g_value_get_boxed(gst_structure_get_value(msg->structure, "codecs"));
+ FsCodec *codec = codecs->data;
+ purple_debug_info("media", "farsight-recv-codecs-changed: %s\n", codec->encoding_name);
+
+ } else if (gst_structure_has_name(msg->structure,
+ "farsight-component-state-changed")) {
+ FsStreamState fsstate = g_value_get_enum(gst_structure_get_value(msg->structure, "state"));
+ guint component = g_value_get_uint(gst_structure_get_value(msg->structure, "component"));
+ const gchar *state;
+ switch (fsstate) {
+ case FS_STREAM_STATE_FAILED:
+ state = "FAILED";
+ break;
+ case FS_STREAM_STATE_DISCONNECTED:
+ state = "DISCONNECTED";
+ break;
+ case FS_STREAM_STATE_GATHERING:
+ state = "GATHERING";
+ break;
+ case FS_STREAM_STATE_CONNECTING:
+ state = "CONNECTING";
+ break;
+ case FS_STREAM_STATE_CONNECTED:
+ state = "CONNECTED";
+ break;
+ case FS_STREAM_STATE_READY:
+ state = "READY";
+ break;
+ default:
+ state = "UNKNOWN";
+ break;
+ }
+ purple_debug_info("media", "farsight-component-state-changed: component: %u state: %s\n", component, state);
+ } else if (gst_structure_has_name(msg->structure,
+ "farsight-send-codec-changed")) {
+ FsCodec *codec = g_value_get_boxed(gst_structure_get_value(msg->structure, "codec"));
+ gchar *codec_str = fs_codec_to_string(codec);
+ purple_debug_info("media", "farsight-send-codec-changed: codec: %s\n", codec_str);
+ g_free(codec_str);
+ } else if (gst_structure_has_name(msg->structure,
+ "farsight-codecs-changed")) {
+ GList *sessions = g_hash_table_get_values(PURPLE_MEDIA(media)->priv->sessions);
+ FsSession *fssession = g_value_get_object(gst_structure_get_value(msg->structure, "session"));
+ for (; sessions; sessions = g_list_delete_link(sessions, sessions)) {
+ PurpleMediaSession *session = sessions->data;
+ if (session->session == fssession) {
+ gchar *session_id = g_strdup(session->id);
+ g_signal_emit(media, purple_media_signals[CODECS_CHANGED], 0, session_id);
+ g_free(session_id);
+ g_list_free(sessions);
+ break;
+ }
+ }
+ }
+ break;
+ }
+ default:
+ break;
+ }
+
+ return TRUE;
+}
+#endif
+
+PurpleAccount *
+purple_media_get_account(PurpleMedia *media)
+{
+#ifdef USE_VV
+ PurpleAccount *account;
+ g_return_val_if_fail(PURPLE_IS_MEDIA(media), NULL);
+ g_object_get(G_OBJECT(media), "account", &account, NULL);
+ return account;
+#else
+ return NULL;
+#endif
+}
+
+gpointer
+purple_media_get_prpl_data(PurpleMedia *media)
+{
+#ifdef USE_VV
+ gpointer prpl_data;
+ g_return_val_if_fail(PURPLE_IS_MEDIA(media), NULL);
+ g_object_get(G_OBJECT(media), "prpl-data", &prpl_data, NULL);
+ return prpl_data;
+#else
+ return NULL;
+#endif
+}
+
+void
+purple_media_set_prpl_data(PurpleMedia *media, gpointer prpl_data)
+{
+#ifdef USE_VV
+ g_return_if_fail(PURPLE_IS_MEDIA(media));
+ g_object_set(G_OBJECT(media), "prpl-data", prpl_data, NULL);
+#endif
+}
+
+void
+purple_media_error(PurpleMedia *media, const gchar *error, ...)
+{
+#ifdef USE_VV
+ va_list args;
+ gchar *message;
+
+ g_return_if_fail(PURPLE_IS_MEDIA(media));
+
+ va_start(args, error);
+ message = g_strdup_vprintf(error, args);
+ va_end(args);
+
+ purple_debug_error("media", "%s\n", message);
+ g_signal_emit(media, purple_media_signals[ERROR], 0, message);
+
+ g_free(message);
+#endif
+}
+
+void
+purple_media_end(PurpleMedia *media,
+ const gchar *session_id, const gchar *participant)
+{
+#ifdef USE_VV
+ g_return_if_fail(PURPLE_IS_MEDIA(media));
+ if (session_id == NULL && participant == NULL) {
+ g_signal_emit(media, purple_media_signals[STATE_CHANGED],
+ 0, PURPLE_MEDIA_STATE_END,
+ NULL, NULL);
+ g_object_unref(media);
+ }
+#endif
+}
+
+void
+purple_media_stream_info(PurpleMedia *media, PurpleMediaInfoType type,
+ const gchar *session_id, const gchar *participant,
+ gboolean local)
+{
+#ifdef USE_VV
+ g_return_if_fail(PURPLE_IS_MEDIA(media));
+
+ if (type == PURPLE_MEDIA_INFO_ACCEPT) {
+ GList *streams;
+
+ g_return_if_fail(PURPLE_IS_MEDIA(media));
+
+ streams = purple_media_get_streams(media,
+ session_id, participant);
+
+ for (; streams; streams =
+ g_list_delete_link(streams, streams)) {
+ PurpleMediaStream *stream = streams->data;
+ g_object_set(G_OBJECT(stream->stream), "direction",
+ purple_media_to_fs_stream_direction(
+ stream->session->type), NULL);
+ stream->accepted = TRUE;
+ }
+
+ g_signal_emit(media, purple_media_signals[ACCEPTED],
+ 0, NULL, NULL);
+ } else if (local == TRUE && (type == PURPLE_MEDIA_INFO_MUTE ||
+ type == PURPLE_MEDIA_INFO_UNMUTE)) {
+ GList *sessions;
+ gboolean active = (type == PURPLE_MEDIA_INFO_MUTE);
+
+ g_return_if_fail(PURPLE_IS_MEDIA(media));
+
+ if (session_id == NULL)
+ sessions = g_hash_table_get_values(
+ media->priv->sessions);
+ else
+ sessions = g_list_prepend(NULL,
+ purple_media_get_session(
+ media, session_id));
+
+ purple_debug_info("media", "Turning mute %s\n",
+ active ? "on" : "off");
+
+ for (; sessions; sessions = g_list_delete_link(
+ sessions, sessions)) {
+ PurpleMediaSession *session = sessions->data;
+ if (session->type & PURPLE_MEDIA_SEND_AUDIO) {
+ GstElement *volume = gst_bin_get_by_name(
+ GST_BIN(session->src),
+ "purpleaudioinputvolume");
+ g_object_set(volume, "mute", active, NULL);
+ }
+ }
+ }
+
+ g_signal_emit(media, purple_media_signals[STREAM_INFO],
+ 0, type, session_id, participant, local);
+
+ if (type == PURPLE_MEDIA_INFO_HANGUP ||
+ type == PURPLE_MEDIA_INFO_REJECT) {
+ purple_media_end(media, session_id, participant);
+ }
+#endif
+}
+
+#ifdef USE_VV
+static void
+purple_media_new_local_candidate_cb(FsStream *stream,
+ FsCandidate *local_candidate,
+ PurpleMediaSession *session)
+{
+ gchar *name;
+ FsParticipant *participant;
+ PurpleMediaCandidate *candidate;
+
+ g_return_if_fail(FS_IS_STREAM(stream));
+ g_return_if_fail(session != NULL);
+
+ purple_debug_info("media", "got new local candidate: %s\n", local_candidate->foundation);
+ g_object_get(stream, "participant", &participant, NULL);
+ g_object_get(participant, "cname", &name, NULL);
+ g_object_unref(participant);
+
+ purple_media_insert_local_candidate(session, name, fs_candidate_copy(local_candidate));
+
+ candidate = purple_media_candidate_from_fs(local_candidate);
+ g_signal_emit(session->media, purple_media_signals[NEW_CANDIDATE],
+ 0, session->id, name, candidate);
+ g_object_unref(candidate);
+
+ g_free(name);
+}
+
+static void
+purple_media_candidates_prepared_cb(FsStream *stream, PurpleMediaSession *session)
+{
+ gchar *name;
+ FsParticipant *participant;
+ PurpleMediaStream *stream_data;
+
+ g_return_if_fail(FS_IS_STREAM(stream));
+ g_return_if_fail(session != NULL);
+
+ g_object_get(stream, "participant", &participant, NULL);
+ g_object_get(participant, "cname", &name, NULL);
+ g_object_unref(participant);
+
+ stream_data = purple_media_get_stream(session->media, session->id, name);
+ stream_data->candidates_prepared = TRUE;
+
+ g_signal_emit(session->media,
+ purple_media_signals[CANDIDATES_PREPARED],
+ 0, session->id, name);
+
+ g_free(name);
+}
+
+/* callback called when a pair of transport candidates (local and remote)
+ * has been established */
+static void
+purple_media_candidate_pair_established_cb(FsStream *fsstream,
+ FsCandidate *native_candidate,
+ FsCandidate *remote_candidate,
+ PurpleMediaSession *session)
+{
+ gchar *name;
+ FsParticipant *participant;
+ PurpleMediaStream *stream;
+ GList *iter;
+
+ g_return_if_fail(FS_IS_STREAM(fsstream));
+ g_return_if_fail(session != NULL);
+
+ g_object_get(fsstream, "participant", &participant, NULL);
+ g_object_get(participant, "cname", &name, NULL);
+ g_object_unref(participant);
+
+ stream = purple_media_get_stream(session->media, session->id, name);
+
+ iter = stream->active_local_candidates;
+ for(; iter; iter = g_list_next(iter)) {
+ FsCandidate *c = iter->data;
+ if (native_candidate->component_id == c->component_id) {
+ fs_candidate_destroy(c);
+ stream->active_local_candidates =
+ g_list_delete_link(iter, iter);
+ stream->active_local_candidates = g_list_prepend(
+ stream->active_local_candidates,
+ fs_candidate_copy(native_candidate));
+ break;
+ }
+ }
+ if (iter == NULL)
+ stream->active_local_candidates = g_list_prepend(
+ stream->active_local_candidates,
+ fs_candidate_copy(native_candidate));
+
+ iter = stream->active_remote_candidates;
+ for(; iter; iter = g_list_next(iter)) {
+ FsCandidate *c = iter->data;
+ if (native_candidate->component_id == c->component_id) {
+ fs_candidate_destroy(c);
+ stream->active_remote_candidates =
+ g_list_delete_link(iter, iter);
+ stream->active_remote_candidates = g_list_prepend(
+ stream->active_remote_candidates,
+ fs_candidate_copy(remote_candidate));
+ break;
+ }
+ }
+ if (iter == NULL)
+ stream->active_remote_candidates = g_list_prepend(
+ stream->active_remote_candidates,
+ fs_candidate_copy(remote_candidate));
+
+ purple_debug_info("media", "candidate pair established\n");
+}
+
+static gboolean
+purple_media_connected_cb(PurpleMediaStream *stream)
+{
+ g_return_val_if_fail(stream != NULL, FALSE);
+
+ stream->connected_cb_id = 0;
+
+ purple_media_manager_create_output_window(
+ stream->session->media->priv->manager,
+ stream->session->media,
+ stream->session->id, stream->participant);
+
+ g_signal_emit(stream->session->media,
+ purple_media_signals[STATE_CHANGED],
+ 0, PURPLE_MEDIA_STATE_CONNECTED,
+ stream->session->id, stream->participant);
+ return FALSE;
+}
+
+static void
+purple_media_src_pad_added_cb(FsStream *fsstream, GstPad *srcpad,
+ FsCodec *codec, PurpleMediaStream *stream)
+{
+ PurpleMediaPrivate *priv;
+ GstPad *sinkpad;
+
+ g_return_if_fail(FS_IS_STREAM(fsstream));
+ g_return_if_fail(stream != NULL);
+
+ priv = stream->session->media->priv;
+
+ if (stream->src == NULL) {
+ GstElement *sink = NULL;
+
+ if (codec->media_type == FS_MEDIA_TYPE_AUDIO) {
+ /*
+ * Should this instead be:
+ * audioconvert ! audioresample ! liveadder !
+ * audioresample ! audioconvert ! realsink
+ */
+ stream->src = gst_element_factory_make(
+ "liveadder", NULL);
+ sink = purple_media_manager_get_element(priv->manager,
+ PURPLE_MEDIA_RECV_AUDIO,
+ stream->session->media,
+ stream->session->id,
+ stream->participant);
+ } else if (codec->media_type == FS_MEDIA_TYPE_VIDEO) {
+ stream->src = gst_element_factory_make(
+ "fsfunnel", NULL);
+ sink = gst_element_factory_make(
+ "fakesink", NULL);
+ g_object_set(G_OBJECT(sink), "async", FALSE, NULL);
+ }
+ stream->tee = gst_element_factory_make("tee", NULL);
+ gst_bin_add_many(GST_BIN(priv->confbin),
+ stream->src, stream->tee, sink, NULL);
+ gst_element_sync_state_with_parent(sink);
+ gst_element_sync_state_with_parent(stream->tee);
+ gst_element_sync_state_with_parent(stream->src);
+ gst_element_link_many(stream->src, stream->tee, sink, NULL);
+ }
+
+ sinkpad = gst_element_get_request_pad(stream->src, "sink%d");
+ gst_pad_link(srcpad, sinkpad);
+ gst_object_unref(sinkpad);
+
+ stream->connected_cb_id = purple_timeout_add(0,
+ (GSourceFunc)purple_media_connected_cb, stream);
+}
+
+static void
+purple_media_element_added_cb(FsElementAddedNotifier *self,
+ GstBin *bin, GstElement *element, gpointer user_data)
+{
+ /*
+ * Hack to make H264 work with Gmail video.
+ */
+ if (!strncmp(GST_ELEMENT_NAME(element), "x264", 4)) {
+ g_object_set(GST_OBJECT(element), "cabac", FALSE, NULL);
+ }
+}
+#endif /* USE_VV */
+
+gboolean
+purple_media_add_stream(PurpleMedia *media, const gchar *sess_id,
+ const gchar *who, PurpleMediaSessionType type,
+ gboolean initiator, const gchar *transmitter,
+ guint num_params, GParameter *params)
+{
+#ifdef USE_VV
+ PurpleMediaSession *session;
+ FsParticipant *participant = NULL;
+ PurpleMediaStream *stream = NULL;
+ FsMediaType media_type = purple_media_to_fs_media_type(type);
+ FsStreamDirection type_direction =
+ purple_media_to_fs_stream_direction(type);
+ gboolean is_nice = !strcmp(transmitter, "nice");
+
+ g_return_val_if_fail(PURPLE_IS_MEDIA(media), FALSE);
+
+ session = purple_media_get_session(media, sess_id);
+
+ if (!session) {
+ GError *err = NULL;
+ GList *codec_conf = NULL, *iter = NULL;
+ gchar *filename = NULL;
+ PurpleMediaSessionType session_type;
+ GstElement *src = NULL;
+
+ session = g_new0(PurpleMediaSession, 1);
+
+ session->session = fs_conference_new_session(
+ media->priv->conference, media_type, &err);
+
+ if (err != NULL) {
+ purple_media_error(media, "Error creating session: %s\n", err->message);
+ g_error_free(err);
+ g_free(session);
+ return FALSE;
+ }
+
+ filename = g_build_filename(purple_user_dir(), "fs-codec.conf", NULL);
+ codec_conf = fs_codec_list_from_keyfile(filename, &err);
+ g_free(filename);
+
+ if (err != NULL) {
+ if (err->code == 4)
+ purple_debug_info("media", "Couldn't read "
+ "fs-codec.conf: %s\n",
+ err->message);
+ else
+ purple_debug_error("media", "Error reading "
+ "fs-codec.conf: %s\n",
+ err->message);
+ g_error_free(err);
+ }
+
+ /*
+ * Add SPEEX if the configuration file doesn't exist or
+ * there isn't a speex entry.
+ */
+ for (iter = codec_conf; iter; iter = g_list_next(iter)) {
+ FsCodec *codec = iter->data;
+ if (!g_ascii_strcasecmp(codec->encoding_name, "speex"))
+ break;
+ }
+
+ if (iter == NULL) {
+ codec_conf = g_list_prepend(codec_conf,
+ fs_codec_new(FS_CODEC_ID_ANY,
+ "SPEEX", FS_MEDIA_TYPE_AUDIO, 8000));
+ codec_conf = g_list_prepend(codec_conf,
+ fs_codec_new(FS_CODEC_ID_ANY,
+ "SPEEX", FS_MEDIA_TYPE_AUDIO, 16000));
+ }
+
+ fs_session_set_codec_preferences(session->session, codec_conf, NULL);
+
+ /*
+ * Removes a 5-7 second delay before
+ * receiving the src-pad-added signal.
+ * Only works for non-multicast FsRtpSessions.
+ */
+ if (is_nice || !strcmp(transmitter, "rawudp"))
+ g_object_set(G_OBJECT(session->session),
+ "no-rtcp-timeout", 0, NULL);
+
+ /*
+ * Hack to make x264 work with Gmail video.
+ */
+ if (is_nice && !strcmp(sess_id, "google-video")) {
+ FsElementAddedNotifier *notifier =
+ fs_element_added_notifier_new();
+ g_signal_connect(G_OBJECT(notifier), "element-added",
+ G_CALLBACK(purple_media_element_added_cb),
+ stream);
+ fs_element_added_notifier_add(notifier,
+ GST_BIN(media->priv->conference));
+ }
+
+ fs_codec_list_destroy(codec_conf);
+
+ session->id = g_strdup(sess_id);
+ session->media = media;
+ session->type = type;
+ session->initiator = initiator;
+
+ purple_media_add_session(media, session);
+ g_signal_emit(media, purple_media_signals[STATE_CHANGED],
+ 0, PURPLE_MEDIA_STATE_NEW,
+ session->id, NULL);
+
+ session_type = purple_media_from_fs(media_type,
+ FS_DIRECTION_SEND);
+ src = purple_media_manager_get_element(
+ media->priv->manager, session_type,
+ media, session->id, who);
+ if (!GST_IS_ELEMENT(src)) {
+ purple_debug_error("media",
+ "Error creating src for session %s\n",
+ session->id);
+ purple_media_end(media, session->id, NULL);
+ return FALSE;
+ }
+
+ purple_media_set_src(media, session->id, src);
+ gst_element_set_state(session->src, GST_STATE_PLAYING);
+
+ purple_media_manager_create_output_window(
+ media->priv->manager,
+ session->media,
+ session->id, NULL);
+ }
+
+ if (!(participant = purple_media_add_participant(media, who))) {
+ purple_media_remove_session(media, session);
+ g_free(session);
+ return FALSE;
+ } else {
+ g_signal_emit(media, purple_media_signals[STATE_CHANGED],
+ 0, PURPLE_MEDIA_STATE_NEW,
+ NULL, who);
+ }
+
+ stream = purple_media_get_stream(media, sess_id, who);
+
+ if (!stream) {
+ GError *err = NULL;
+ FsStream *fsstream = NULL;
+ const gchar *stun_ip = purple_network_get_stun_ip();
+ const gchar *turn_ip = purple_network_get_turn_ip();
+
+ if (stun_ip || turn_ip) {
+ guint new_num_params =
+ (stun_ip && is_nice) && turn_ip ?
+ num_params + 2 : num_params + 1;
+ guint next_param_index = num_params;
+ GParameter *param = g_new0(GParameter, new_num_params);
+ memcpy(param, params, sizeof(GParameter) * num_params);
+
+ if (stun_ip) {
+ purple_debug_info("media",
+ "setting property stun-ip on new stream: %s\n", stun_ip);
+
+ param[next_param_index].name = "stun-ip";
+ g_value_init(&param[next_param_index].value, G_TYPE_STRING);
+ g_value_set_string(&param[next_param_index].value, stun_ip);
+ next_param_index++;
+ }
+
+ if (turn_ip && is_nice) {
+ GValueArray *relay_info = g_value_array_new(0);
+ GValue value;
+ gint turn_port =
+ purple_prefs_get_int("/purple/network/turn_port");
+ const gchar *username =
+ purple_prefs_get_string("/purple/network/turn_username");
+ const gchar *password =
+ purple_prefs_get_string("/purple/network/turn_password");
+ GstStructure *turn_setup = gst_structure_new("relay-info",
+ "ip", G_TYPE_STRING, turn_ip,
+ "port", G_TYPE_UINT, turn_port,
+ "username", G_TYPE_STRING, username,
+ "password", G_TYPE_STRING, password,
+ NULL);
+
+ if (turn_setup) {
+ memset(&value, 0, sizeof(GValue));
+ g_value_init(&value, GST_TYPE_STRUCTURE);
+ gst_value_set_structure(&value, turn_setup);
+ relay_info = g_value_array_append(relay_info, &value);
+ gst_structure_free(turn_setup);
+
+ purple_debug_info("media",
+ "setting property relay-info on new stream\n");
+ param[next_param_index].name = "relay-info";
+ g_value_init(&param[next_param_index].value,
+ G_TYPE_VALUE_ARRAY);
+ g_value_set_boxed(&param[next_param_index].value,
+ relay_info);
+ g_value_array_free(relay_info);
+ } else {
+ purple_debug_error("media", "Error relay info");
+ g_object_unref(participant);
+ g_hash_table_remove(media->priv->participants, who);
+ purple_media_remove_session(media, session);
+ g_free(session);
+ return FALSE;
+ }
+ }
+
+ fsstream = fs_session_new_stream(session->session,
+ participant, type_direction &
+ FS_DIRECTION_RECV, transmitter,
+ new_num_params, param, &err);
+ g_free(param);
+ } else {
+ fsstream = fs_session_new_stream(session->session,
+ participant, type_direction &
+ FS_DIRECTION_RECV, transmitter,
+ num_params, params, &err);
+ }
+
+ if (err) {
+ purple_debug_error("media", "Error creating stream: %s\n",
+ err->message);
+ g_error_free(err);
+ g_object_unref(participant);
+ g_hash_table_remove(media->priv->participants, who);
+ purple_media_remove_session(media, session);
+ g_free(session);
+ return FALSE;
+ }
+
+ stream = purple_media_insert_stream(session, who, fsstream);
+ stream->initiator = initiator;
+
+ /* callback for source pad added (new stream source ready) */
+ g_signal_connect(G_OBJECT(fsstream),
+ "src-pad-added", G_CALLBACK(purple_media_src_pad_added_cb), stream);
+
+ g_signal_emit(media, purple_media_signals[STATE_CHANGED],
+ 0, PURPLE_MEDIA_STATE_NEW,
+ session->id, who);
+ } else {
+ if (purple_media_to_fs_stream_direction(stream->session->type)
+ != type_direction) {
+ /* change direction */
+ g_object_set(stream->stream, "direction",
+ type_direction, NULL);
+ }
+ }
+
+ return TRUE;
+#else
+ return FALSE;
+#endif /* USE_VV */
+}
+
+PurpleMediaManager *
+purple_media_get_manager(PurpleMedia *media)
+{
+ PurpleMediaManager *ret;
+ g_return_val_if_fail(PURPLE_IS_MEDIA(media), NULL);
+ g_object_get(media, "manager", &ret, NULL);
+ return ret;
+}
+
+PurpleMediaSessionType
+purple_media_get_session_type(PurpleMedia *media, const gchar *sess_id)
+{
+#ifdef USE_VV
+ PurpleMediaSession *session;
+ g_return_val_if_fail(PURPLE_IS_MEDIA(media), PURPLE_MEDIA_NONE);
+ session = purple_media_get_session(media, sess_id);
+ return session->type;
+#else
+ return PURPLE_MEDIA_NONE;
+#endif
+}
+/* XXX: Should wait until codecs-ready is TRUE before using this function */
+GList *
+purple_media_get_codecs(PurpleMedia *media, const gchar *sess_id)
+{
+#ifdef USE_VV
+ GList *fscodecs;
+ GList *codecs;
+ PurpleMediaSession *session;
+
+ g_return_val_if_fail(PURPLE_IS_MEDIA(media), NULL);
+
+ session = purple_media_get_session(media, sess_id);
+
+ if (session == NULL)
+ return NULL;
+
+ g_object_get(G_OBJECT(session->session),
+ "codecs", &fscodecs, NULL);
+ codecs = purple_media_codec_list_from_fs(fscodecs);
+ fs_codec_list_destroy(fscodecs);
+ return codecs;
+#else
+ return NULL;
+#endif
+}
+
+GList *
+purple_media_get_local_candidates(PurpleMedia *media, const gchar *sess_id,
+ const gchar *participant)
+{
+#ifdef USE_VV
+ PurpleMediaStream *stream;
+ g_return_val_if_fail(PURPLE_IS_MEDIA(media), NULL);
+ stream = purple_media_get_stream(media, sess_id, participant);
+ return stream ? purple_media_candidate_list_from_fs(
+ stream->local_candidates) : NULL;
+#else
+ return NULL;
+#endif
+}
+
+void
+purple_media_add_remote_candidates(PurpleMedia *media, const gchar *sess_id,
+ const gchar *participant,
+ GList *remote_candidates)
+{
+#ifdef USE_VV
+ PurpleMediaStream *stream;
+ GError *err = NULL;
+
+ g_return_if_fail(PURPLE_IS_MEDIA(media));
+ stream = purple_media_get_stream(media, sess_id, participant);
+
+ if (stream == NULL) {
+ purple_debug_error("media",
+ "purple_media_add_remote_candidates: "
+ "couldn't find stream %s %s.\n",
+ sess_id, participant);
+ return;
+ }
+
+ stream->remote_candidates = g_list_concat(stream->remote_candidates,
+ purple_media_candidate_list_to_fs(remote_candidates));
+
+ fs_stream_set_remote_candidates(stream->stream,
+ stream->remote_candidates, &err);
+
+ if (err) {
+ purple_debug_error("media", "Error adding remote"
+ " candidates: %s\n", err->message);
+ g_error_free(err);
+ }
+#endif
+}
+
+#if 0
+/*
+ * These two functions aren't being used and I'd rather not lock in the API
+ * until they are needed. If they ever are.
+ */
+
+GList *
+purple_media_get_active_local_candidates(PurpleMedia *media,
+ const gchar *sess_id, const gchar *participant)
+{
+#ifdef USE_VV
+ PurpleMediaStream *stream;
+ g_return_val_if_fail(PURPLE_IS_MEDIA(media), NULL);
+ stream = purple_media_get_stream(media, sess_id, participant);
+ return purple_media_candidate_list_from_fs(
+ stream->active_local_candidates);
+#else
+ return NULL;
+#endif
+}
+
+GList *
+purple_media_get_active_remote_candidates(PurpleMedia *media,
+ const gchar *sess_id, const gchar *participant)
+{
+#ifdef USE_VV
+ PurpleMediaStream *stream;
+ g_return_val_if_fail(PURPLE_IS_MEDIA(media), NULL);
+ stream = purple_media_get_stream(media, sess_id, participant);
+ return purple_media_candidate_list_from_fs(
+ stream->active_remote_candidates);
+#else
+ return NULL;
+#endif
+}
+#endif
+
+gboolean
+purple_media_set_remote_codecs(PurpleMedia *media, const gchar *sess_id,
+ const gchar *participant, GList *codecs)
+{
+#ifdef USE_VV
+ PurpleMediaStream *stream;
+ FsStream *fsstream;
+ GList *fscodecs;
+ GError *err = NULL;
+
+ g_return_val_if_fail(PURPLE_IS_MEDIA(media), FALSE);
+ stream = purple_media_get_stream(media, sess_id, participant);
+
+ if (stream == NULL)
+ return FALSE;
+
+ fsstream = stream->stream;
+ fscodecs = purple_media_codec_list_to_fs(codecs);
+ fs_stream_set_remote_codecs(fsstream, fscodecs, &err);
+ fs_codec_list_destroy(fscodecs);
+
+ if (err) {
+ purple_debug_error("media", "Error setting remote codecs: %s\n",
+ err->message);
+ g_error_free(err);
+ return FALSE;
+ }
+ return TRUE;
+#else
+ return FALSE;
+#endif
+}
+
+gboolean
+purple_media_candidates_prepared(PurpleMedia *media,
+ const gchar *session_id, const gchar *participant)
+{
+#ifdef USE_VV
+ GList *streams;
+ gboolean prepared = TRUE;
+
+ g_return_val_if_fail(PURPLE_IS_MEDIA(media), FALSE);
+
+ streams = purple_media_get_streams(media, session_id, participant);
+
+ for (; streams; streams = g_list_delete_link(streams, streams)) {
+ PurpleMediaStream *stream = streams->data;
+ if (stream->candidates_prepared == FALSE) {
+ g_list_free(streams);
+ prepared = FALSE;
+ break;
+ }
+ }
+
+ return prepared;
+#else
+ return FALSE;
+#endif
+}
+
+gboolean
+purple_media_set_send_codec(PurpleMedia *media, const gchar *sess_id, PurpleMediaCodec *codec)
+{
+#ifdef USE_VV
+ PurpleMediaSession *session;
+ FsCodec *fscodec;
+ GError *err = NULL;
+
+ g_return_val_if_fail(PURPLE_IS_MEDIA(media), FALSE);
+
+ session = purple_media_get_session(media, sess_id);
+
+ if (session != NULL)
+ return FALSE;
+
+ fscodec = purple_media_codec_to_fs(codec);
+ fs_session_set_send_codec(session->session, fscodec, &err);
+ fs_codec_destroy(fscodec);
+
+ if (err) {
+ purple_debug_error("media", "Error setting send codec\n");
+ g_error_free(err);
+ return FALSE;
+ }
+ return TRUE;
+#else
+ return FALSE;
+#endif
+}
+
+gboolean
+purple_media_codecs_ready(PurpleMedia *media, const gchar *sess_id)
+{
+#ifdef USE_VV
+ gboolean ret;
+
+ g_return_val_if_fail(PURPLE_IS_MEDIA(media), FALSE);
+
+ if (sess_id != NULL) {
+ PurpleMediaSession *session;
+ session = purple_media_get_session(media, sess_id);
+
+ if (session == NULL)
+ return FALSE;
+
+ g_object_get(session->session, "codecs-ready", &ret, NULL);
+ } else {
+ GList *values = g_hash_table_get_values(media->priv->sessions);
+ for (; values; values = g_list_delete_link(values, values)) {
+ PurpleMediaSession *session = values->data;
+ g_object_get(session->session,
+ "codecs-ready", &ret, NULL);
+ if (ret == FALSE)
+ break;
+ }
+ if (values != NULL)
+ g_list_free(values);
+ }
+ return ret;
+#else
+ return FALSE;
+#endif
+}
+
+gboolean
+purple_media_is_initiator(PurpleMedia *media,
+ const gchar *sess_id, const gchar *participant)
+{
+#ifdef USE_VV
+ g_return_val_if_fail(PURPLE_IS_MEDIA(media), FALSE);
+
+ if (sess_id == NULL && participant == NULL)
+ return media->priv->initiator;
+ else if (sess_id != NULL && participant == NULL) {
+ PurpleMediaSession *session =
+ purple_media_get_session(media, sess_id);
+ return session != NULL ? session->initiator : FALSE;
+ } else if (sess_id != NULL && participant != NULL) {
+ PurpleMediaStream *stream = purple_media_get_stream(
+ media, sess_id, participant);
+ return stream != NULL ? stream->initiator : FALSE;
+ }
+#endif
+ return FALSE;
+}
+
+gboolean
+purple_media_accepted(PurpleMedia *media, const gchar *sess_id,
+ const gchar *participant)
+{
+#ifdef USE_VV
+ gboolean accepted = TRUE;
+
+ g_return_val_if_fail(PURPLE_IS_MEDIA(media), FALSE);
+
+ if (sess_id == NULL && participant == NULL) {
+ GList *streams = media->priv->streams;
+
+ for (; streams; streams = g_list_next(streams)) {
+ PurpleMediaStream *stream = streams->data;
+ if (stream->accepted == FALSE) {
+ accepted = FALSE;
+ break;
+ }
+ }
+ } else if (sess_id != NULL && participant == NULL) {
+ GList *streams = purple_media_get_streams(
+ media, sess_id, NULL);
+ for (; streams; streams =
+ g_list_delete_link(streams, streams)) {
+ PurpleMediaStream *stream = streams->data;
+ if (stream->accepted == FALSE) {
+ g_list_free(streams);
+ accepted = FALSE;
+ break;
+ }
+ }
+ } else if (sess_id != NULL && participant != NULL) {
+ PurpleMediaStream *stream = purple_media_get_stream(
+ media, sess_id, participant);
+ if (stream == NULL || stream->accepted == FALSE)
+ accepted = FALSE;
+ }
+
+ return accepted;
+#else
+ return FALSE;
+#endif
+}
+
+void purple_media_set_input_volume(PurpleMedia *media,
+ const gchar *session_id, double level)
+{
+#ifdef USE_VV
+ GList *sessions;
+
+ g_return_if_fail(PURPLE_IS_MEDIA(media));
+
+ if (session_id == NULL)
+ sessions = g_hash_table_get_values(media->priv->sessions);
+ else
+ sessions = g_list_append(NULL,
+ purple_media_get_session(media, session_id));
+
+ for (; sessions; sessions = g_list_delete_link(sessions, sessions)) {
+ PurpleMediaSession *session = sessions->data;
+
+ if (session->type & PURPLE_MEDIA_SEND_AUDIO) {
+ GstElement *volume = gst_bin_get_by_name(
+ GST_BIN(session->src),
+ "purpleaudioinputvolume");
+ g_object_set(volume, "volume", level, NULL);
+ }
+ }
+#endif
+}
+
+void purple_media_set_output_volume(PurpleMedia *media,
+ const gchar *session_id, const gchar *participant,
+ double level)
+{
+#ifdef USE_VV
+ GList *streams;
+
+ g_return_if_fail(PURPLE_IS_MEDIA(media));
+
+ streams = purple_media_get_streams(media,
+ session_id, participant);
+
+ for (; streams; streams = g_list_delete_link(streams, streams)) {
+ PurpleMediaStream *stream = streams->data;
+
+ if (stream->session->type & PURPLE_MEDIA_RECV_AUDIO) {
+ GstElement *tee = stream->tee;
+ GstIterator *iter = gst_element_iterate_src_pads(tee);
+ GstPad *sinkpad;
+ while (gst_iterator_next(iter, (gpointer)&sinkpad)
+ == GST_ITERATOR_OK) {
+ GstPad *peer = gst_pad_get_peer(sinkpad);
+ GstElement *volume;
+
+ if (peer == NULL) {
+ gst_object_unref(sinkpad);
+ continue;
+ }
+
+ volume = gst_bin_get_by_name(GST_BIN(
+ GST_OBJECT_PARENT(peer)),
+ "purpleaudiooutputvolume");
+ g_object_set(volume, "volume", level, NULL);
+ gst_object_unref(peer);
+ gst_object_unref(sinkpad);
+ }
+ gst_iterator_free(iter);
+ }
+ }
+#endif
+}
+
+gulong
+purple_media_set_output_window(PurpleMedia *media, const gchar *session_id,
+ const gchar *participant, gulong window_id)
+{
+#ifdef USE_VV
+ g_return_val_if_fail(PURPLE_IS_MEDIA(media), FALSE);
+
+ return purple_media_manager_set_output_window(media->priv->manager,
+ media, session_id, participant, window_id);
+#else
+ return 0;
+#endif
+}
+
+void
+purple_media_remove_output_windows(PurpleMedia *media)
+{
+#ifdef USE_VV
+ GList *iter = media->priv->streams;
+ for (; iter; iter = g_list_next(iter)) {
+ PurpleMediaStream *stream = iter->data;
+ purple_media_manager_remove_output_windows(
+ media->priv->manager, media,
+ stream->session->id, stream->participant);
+ }
+
+ iter = purple_media_get_session_ids(media);
+ for (; iter; iter = g_list_delete_link(iter, iter)) {
+ gchar *session_name = iter->data;
+ purple_media_manager_remove_output_windows(
+ media->priv->manager, media,
+ session_name, NULL);
+ }
+#endif
+}
+
+#ifdef USE_GSTREAMER
+GstElement *
+purple_media_get_tee(PurpleMedia *media,
+ const gchar *session_id, const gchar *participant)
+{
+#ifdef USE_VV
+ g_return_val_if_fail(PURPLE_IS_MEDIA(media), NULL);
+
+ if (session_id != NULL && participant == NULL) {
+ PurpleMediaSession *session =
+ purple_media_get_session(media, session_id);
+ return (session != NULL) ? session->tee : NULL;
+ } else if (session_id != NULL && participant != NULL) {
+ PurpleMediaStream *stream =
+ purple_media_get_stream(media,
+ session_id, participant);
+ return (stream != NULL) ? stream->tee : NULL;
+ }
+ g_return_val_if_reached(NULL);
+#else
+ return NULL;
+#endif
+}
+#endif /* USE_GSTREAMER */
+
diff --git a/libpurple/media.h b/libpurple/media.h
new file mode 100644
index 0000000000..2a9c139afb
--- /dev/null
+++ b/libpurple/media.h
@@ -0,0 +1,690 @@
+/**
+ * @file media.h Media API
+ * @ingroup core
+ */
+
+/* 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 _PURPLE_MEDIA_H_
+#define _PURPLE_MEDIA_H_
+
+#include <glib.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define PURPLE_TYPE_MEDIA_CANDIDATE (purple_media_candidate_get_type())
+#define PURPLE_MEDIA_CANDIDATE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PURPLE_TYPE_MEDIA_CANDIDATE, PurpleMediaCandidate))
+#define PURPLE_MEDIA_CANDIDATE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), PURPLE_TYPE_MEDIA_CANDIDATE, PurpleMediaCandidate))
+#define PURPLE_IS_MEDIA_CANDIDATE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), PURPLE_TYPE_MEDIA_CANDIDATE))
+#define PURPLE_IS_MEDIA_CANDIDATE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), PURPLE_TYPE_MEDIA_CANDIDATE))
+#define PURPLE_MEDIA_CANDIDATE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), PURPLE_TYPE_MEDIA_CANDIDATE, PurpleMediaCandidate))
+
+#define PURPLE_TYPE_MEDIA_CODEC (purple_media_codec_get_type())
+#define PURPLE_MEDIA_CODEC(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PURPLE_TYPE_MEDIA_CODEC, PurpleMediaCodec))
+#define PURPLE_MEDIA_CODEC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), PURPLE_TYPE_MEDIA_CODEC, PurpleMediaCodec))
+#define PURPLE_IS_MEDIA_CODEC(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), PURPLE_TYPE_MEDIA_CODEC))
+#define PURPLE_IS_MEDIA_CODEC_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), PURPLE_TYPE_MEDIA_CODEC))
+#define PURPLE_MEDIA_CODEC_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), PURPLE_TYPE_MEDIA_CODEC, PurpleMediaCodec))
+
+#define PURPLE_TYPE_MEDIA_SESSION_TYPE (purple_media_session_type_get_type())
+#define PURPLE_TYPE_MEDIA (purple_media_get_type())
+#define PURPLE_MEDIA(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PURPLE_TYPE_MEDIA, PurpleMedia))
+#define PURPLE_MEDIA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), PURPLE_TYPE_MEDIA, PurpleMediaClass))
+#define PURPLE_IS_MEDIA(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), PURPLE_TYPE_MEDIA))
+#define PURPLE_IS_MEDIA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), PURPLE_TYPE_MEDIA))
+#define PURPLE_MEDIA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), PURPLE_TYPE_MEDIA, PurpleMediaClass))
+
+#define PURPLE_TYPE_MEDIA_CANDIDATE_TYPE (purple_media_candidate_type_get_type())
+#define PURPLE_TYPE_MEDIA_NETWORK_PROTOCOL (purple_media_network_protocol_get_type())
+#define PURPLE_MEDIA_TYPE_STATE (purple_media_state_changed_get_type())
+#define PURPLE_MEDIA_TYPE_INFO_TYPE (purple_media_info_type_get_type())
+
+/** @copydoc _PurpleMedia */
+typedef struct _PurpleMedia PurpleMedia;
+/** @copydoc _PurpleMediaCandidate */
+typedef struct _PurpleMediaCandidate PurpleMediaCandidate;
+/** @copydoc _PurpleMediaCodec */
+typedef struct _PurpleMediaCodec PurpleMediaCodec;
+
+/** Media caps */
+typedef enum {
+ PURPLE_MEDIA_CAPS_NONE = 0,
+ PURPLE_MEDIA_CAPS_AUDIO = 1,
+ PURPLE_MEDIA_CAPS_AUDIO_SINGLE_DIRECTION = 1 << 1,
+ PURPLE_MEDIA_CAPS_VIDEO = 1 << 2,
+ PURPLE_MEDIA_CAPS_VIDEO_SINGLE_DIRECTION = 1 << 3,
+ PURPLE_MEDIA_CAPS_AUDIO_VIDEO = 1 << 4,
+ PURPLE_MEDIA_CAPS_MODIFY_SESSION = 1 << 5,
+ PURPLE_MEDIA_CAPS_CHANGE_DIRECTION = 1 << 6,
+} PurpleMediaCaps;
+
+/** Media session types */
+typedef enum {
+ PURPLE_MEDIA_NONE = 0,
+ PURPLE_MEDIA_RECV_AUDIO = 1 << 0,
+ PURPLE_MEDIA_SEND_AUDIO = 1 << 1,
+ PURPLE_MEDIA_RECV_VIDEO = 1 << 2,
+ PURPLE_MEDIA_SEND_VIDEO = 1 << 3,
+ PURPLE_MEDIA_AUDIO = PURPLE_MEDIA_RECV_AUDIO | PURPLE_MEDIA_SEND_AUDIO,
+ PURPLE_MEDIA_VIDEO = PURPLE_MEDIA_RECV_VIDEO | PURPLE_MEDIA_SEND_VIDEO
+} PurpleMediaSessionType;
+
+/** Media state-changed types */
+typedef enum {
+ PURPLE_MEDIA_STATE_NEW = 0,
+ PURPLE_MEDIA_STATE_CONNECTED,
+ PURPLE_MEDIA_STATE_END,
+} PurpleMediaState;
+
+/** Media info types */
+typedef enum {
+ PURPLE_MEDIA_INFO_HANGUP = 0,
+ PURPLE_MEDIA_INFO_ACCEPT,
+ PURPLE_MEDIA_INFO_REJECT,
+ PURPLE_MEDIA_INFO_MUTE,
+ PURPLE_MEDIA_INFO_UNMUTE,
+ PURPLE_MEDIA_INFO_HOLD,
+ PURPLE_MEDIA_INFO_UNHOLD,
+} PurpleMediaInfoType;
+
+typedef enum {
+ PURPLE_MEDIA_CANDIDATE_TYPE_HOST,
+ PURPLE_MEDIA_CANDIDATE_TYPE_SRFLX,
+ PURPLE_MEDIA_CANDIDATE_TYPE_PRFLX,
+ PURPLE_MEDIA_CANDIDATE_TYPE_RELAY,
+ PURPLE_MEDIA_CANDIDATE_TYPE_MULTICAST,
+} PurpleMediaCandidateType;
+
+typedef enum {
+ PURPLE_MEDIA_COMPONENT_NONE = 0,
+ PURPLE_MEDIA_COMPONENT_RTP = 1,
+ PURPLE_MEDIA_COMPONENT_RTCP = 2,
+} PurpleMediaComponentType;
+
+typedef enum {
+ PURPLE_MEDIA_NETWORK_PROTOCOL_UDP,
+ PURPLE_MEDIA_NETWORK_PROTOCOL_TCP,
+} PurpleMediaNetworkProtocol;
+
+#include "signals.h"
+#include "util.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * Gets the media session type's GType
+ *
+ * @return The media session type's GType.
+ *
+ * @since 2.6.0
+ */
+GType purple_media_session_type_get_type(void);
+
+/**
+ * Gets the media candidate type's GType
+ *
+ * @return The media candidate type's GType.
+ *
+ * @since 2.6.0
+ */
+GType purple_media_candidate_type_get_type(void);
+
+/**
+ * Gets the media network protocol's GType
+ *
+ * @return The media network protocol's GType.
+ *
+ * @since 2.6.0
+ */
+GType purple_media_network_protocol_get_type(void);
+
+/**
+ * Gets the media class's GType
+ *
+ * @return The media class's GType.
+ *
+ * @since 2.6.0
+ */
+GType purple_media_get_type(void);
+
+/**
+ * Gets the type of the state-changed enum
+ *
+ * @return The state-changed enum's GType
+ *
+ * @since 2.6.0
+ */
+GType purple_media_state_changed_get_type(void);
+
+/**
+ * Gets the type of the info type enum
+ *
+ * @return The info type enum's GType
+ *
+ * @since 2.6.0
+ */
+GType purple_media_info_type_get_type(void);
+
+/**
+ * Gets the type of the media candidate structure.
+ *
+ * @return The media canditate's GType
+ *
+ * @since 2.6.0
+ */
+GType purple_media_candidate_get_type(void);
+
+/**
+ * Creates a PurpleMediaCandidate instance.
+ *
+ * @param foundation The foundation of the candidate.
+ * @param component_id The component this candidate is for.
+ * @param type The type of candidate.
+ * @param proto The protocol this component is for.
+ * @param ip The IP address of this component.
+ * @param port The network port.
+ *
+ * @return The newly created PurpleMediaCandidate instance.
+ *
+ * @since 2.6.0
+ */
+PurpleMediaCandidate *purple_media_candidate_new(
+ const gchar *foundation, guint component_id,
+ PurpleMediaCandidateType type,
+ PurpleMediaNetworkProtocol proto,
+ const gchar *ip, guint port);
+
+/**
+ * Copies a GList of PurpleMediaCandidate and its contents.
+ *
+ * @param candidates The list of candidates to be copied.
+ *
+ * @return The copy of the GList.
+ *
+ * @since 2.6.0
+ */
+GList *purple_media_candidate_list_copy(GList *candidates);
+
+/**
+ * Frees a GList of PurpleMediaCandidate and its contents.
+ *
+ * @param candidates The list of candidates to be freed.
+ *
+ * @since 2.6.0
+ */
+void purple_media_candidate_list_free(GList *candidates);
+
+gchar *purple_media_candidate_get_foundation(PurpleMediaCandidate *candidate);
+guint purple_media_candidate_get_component_id(PurpleMediaCandidate *candidate);
+gchar *purple_media_candidate_get_ip(PurpleMediaCandidate *candidate);
+guint16 purple_media_candidate_get_port(PurpleMediaCandidate *candidate);
+gchar *purple_media_candidate_get_base_ip(PurpleMediaCandidate *candidate);
+guint16 purple_media_candidate_get_base_port(PurpleMediaCandidate *candidate);
+PurpleMediaNetworkProtocol purple_media_candidate_get_protocol(
+ PurpleMediaCandidate *candidate);
+guint32 purple_media_candidate_get_priority(PurpleMediaCandidate *candidate);
+PurpleMediaCandidateType purple_media_candidate_get_candidate_type(
+ PurpleMediaCandidate *candidate);
+gchar *purple_media_candidate_get_username(PurpleMediaCandidate *candidate);
+gchar *purple_media_candidate_get_password(PurpleMediaCandidate *candidate);
+guint purple_media_candidate_get_ttl(PurpleMediaCandidate *candidate);
+
+/**
+ * Gets the type of the media codec structure.
+ *
+ * @return The media codec's GType
+ *
+ * @since 2.6.0
+ */
+GType purple_media_codec_get_type(void);
+
+/**
+ * Creates a new PurpleMediaCodec instance.
+ *
+ * @param id Codec identifier.
+ * @param encoding_name Name of the media type this encodes.
+ * @param media_type PurpleMediaSessionType of this codec.
+ * @param clock_rate The clock rate this codec encodes at, if applicable.
+ *
+ * @return The newly created PurpleMediaCodec.
+ *
+ * @since 2.6.0
+ */
+PurpleMediaCodec *purple_media_codec_new(int id, const char *encoding_name,
+ PurpleMediaSessionType media_type, guint clock_rate);
+
+guint purple_media_codec_get_id(PurpleMediaCodec *codec);
+gchar *purple_media_codec_get_encoding_name(PurpleMediaCodec *codec);
+guint purple_media_codec_get_clock_rate(PurpleMediaCodec *codec);
+guint purple_media_codec_get_channels(PurpleMediaCodec *codec);
+GList *purple_media_codec_get_optional_parameters(PurpleMediaCodec *codec);
+
+/**
+ * Creates a string representation of the codec.
+ *
+ * @param codec The codec to create the string of.
+ *
+ * @return The new string representation.
+ *
+ * @since 2.6.0
+ */
+gchar *purple_media_codec_to_string(const PurpleMediaCodec *codec);
+
+/**
+ * Adds an optional parameter to the codec.
+ *
+ * @param codec The codec to add the parameter to.
+ * @param name The name of the parameter to add.
+ * @param value The value of the parameter to add.
+ *
+ * @since 2.6.0
+ */
+void purple_media_codec_add_optional_parameter(PurpleMediaCodec *codec,
+ const gchar *name, const gchar *value);
+
+/**
+ * Removes an optional parameter from the codec.
+ *
+ * @param codec The codec to remove the parameter from.
+ * @param param A pointer to the parameter to remove.
+ *
+ * @since 2.6.0
+ */
+void purple_media_codec_remove_optional_parameter(PurpleMediaCodec *codec,
+ PurpleKeyValuePair *param);
+
+/**
+ * Gets an optional parameter based on the values given.
+ *
+ * @param codec The codec to find the parameter in.
+ * @param name The name of the parameter to search for.
+ * @param value The value to search for or NULL.
+ *
+ * @return The value found or NULL.
+ *
+ * @since 2.6.0
+ */
+PurpleKeyValuePair *purple_media_codec_get_optional_parameter(
+ PurpleMediaCodec *codec, const gchar *name,
+ const gchar *value);
+
+/**
+ * Copies a GList of PurpleMediaCodec and its contents.
+ *
+ * @param codecs The list of codecs to be copied.
+ *
+ * @return The copy of the GList.
+ *
+ * @since 2.6.0
+ */
+GList *purple_media_codec_list_copy(GList *codecs);
+
+/**
+ * Frees a GList of PurpleMediaCodec and its contents.
+ *
+ * @param codecs The list of codecs to be freed.
+ *
+ * @since 2.6.0
+ */
+void purple_media_codec_list_free(GList *codecs);
+
+/**
+ * Gets a list of session IDs.
+ *
+ * @param media The media session from which to retrieve session IDs.
+ *
+ * @return GList of session IDs. The caller must free the list.
+ *
+ * @since 2.6.0
+ */
+GList *purple_media_get_session_ids(PurpleMedia *media);
+
+/**
+ * Gets the PurpleAccount this media session is on.
+ *
+ * @param media The media session to retrieve the account from.
+ *
+ * @return The account retrieved.
+ *
+ * @since 2.6.0
+ */
+PurpleAccount *purple_media_get_account(PurpleMedia *media);
+
+/**
+ * Gets the prpl data from the media session.
+ *
+ * @param media The media session to retrieve the prpl data from.
+ *
+ * @return The prpl data retrieved.
+ *
+ * @since 2.6.0
+ */
+gpointer purple_media_get_prpl_data(PurpleMedia *media);
+
+/**
+ * Sets the prpl data on the media session.
+ *
+ * @param media The media session to set the prpl data on.
+ * @param prpl_data The data to set on the media session.
+ *
+ * @since 2.6.0
+ */
+void purple_media_set_prpl_data(PurpleMedia *media, gpointer prpl_data);
+
+/**
+ * Signals an error in the media session.
+ *
+ * @param media The media object to set the state on.
+ * @param error The format of the error message to send in the signal.
+ * @param ... The arguments to plug into the format.
+ *
+ * @since 2.6.0
+ */
+void purple_media_error(PurpleMedia *media, const gchar *error, ...);
+
+/**
+ * Ends all streams that match the given parameters
+ *
+ * @param media The media object with which to end streams.
+ * @param session_id The session to end streams on.
+ * @param participant The participant to end streams with.
+ *
+ * @since 2.6.0
+ */
+void purple_media_end(PurpleMedia *media, const gchar *session_id,
+ const gchar *participant);
+
+/**
+ * Signals different information about the given stream.
+ *
+ * @param media The media instance to containing the stream to signal.
+ * @param type The type of info being signaled.
+ * @param session_id The id of the session of the stream being signaled.
+ * @param participant The participant of the stream being signaled.
+ * @param local TRUE if the info originated locally, FALSE if on the remote end.
+ *
+ * @since 2.6.0
+ */
+void purple_media_stream_info(PurpleMedia *media, PurpleMediaInfoType type,
+ const gchar *session_id, const gchar *participant,
+ gboolean local);
+
+/**
+ * Adds a stream to a session.
+ *
+ * It only adds a stream to one audio session or video session as
+ * the @c sess_id must be unique between sessions.
+ *
+ * @param media The media object to find the session in.
+ * @param sess_id The session id of the session to add the stream to.
+ * @param who The name of the remote user to add the stream for.
+ * @param type The type of stream to create.
+ * @param initiator Whether or not the local user initiated the stream.
+ * @param transmitter The transmitter to use for the stream.
+ * @param num_params The number of parameters to pass to Farsight.
+ * @param params The parameters to pass to Farsight.
+ *
+ * @return @c TRUE The stream was added successfully, @c FALSE otherwise.
+ *
+ * @since 2.6.0
+ */
+gboolean purple_media_add_stream(PurpleMedia *media, const gchar *sess_id,
+ const gchar *who, PurpleMediaSessionType type,
+ gboolean initiator, const gchar *transmitter,
+ guint num_params, GParameter *params);
+
+/**
+ * Gets the session type from a session
+ *
+ * @param media The media object to find the session in.
+ * @param sess_id The session id of the session to get the type from.
+ *
+ * @return The retreived session type.
+ *
+ * @since 2.6.0
+ */
+PurpleMediaSessionType purple_media_get_session_type(PurpleMedia *media, const gchar *sess_id);
+
+/**
+ * Gets the PurpleMediaManager this media session is a part of.
+ *
+ * @param media The media object to get the manager instance from.
+ *
+ * @return The PurpleMediaManager instance retrieved.
+ *
+ * @since 2.6.0
+ */
+struct _PurpleMediaManager *purple_media_get_manager(PurpleMedia *media);
+
+/**
+ * Gets the codecs from a session.
+ *
+ * @param media The media object to find the session in.
+ * @param sess_id The session id of the session to get the codecs from.
+ *
+ * @return The retreieved codecs.
+ *
+ * @since 2.6.0
+ */
+GList *purple_media_get_codecs(PurpleMedia *media, const gchar *sess_id);
+
+/**
+ * Adds remote candidates to the stream.
+ *
+ * @param media The media object to find the session in.
+ * @param sess_id The session id of the session find the stream in.
+ * @param participant The name of the remote user to add the candidates for.
+ * @param remote_candidates The remote candidates to add.
+ *
+ * @since 2.6.0
+ */
+void purple_media_add_remote_candidates(PurpleMedia *media,
+ const gchar *sess_id,
+ const gchar *participant,
+ GList *remote_candidates);
+
+/**
+ * Gets the local candidates from a stream.
+ *
+ * @param media The media object to find the session in.
+ * @param sess_id The session id of the session to find the stream in.
+ * @param participant The name of the remote user to get the candidates from.
+ *
+ * @since 2.6.0
+ */
+GList *purple_media_get_local_candidates(PurpleMedia *media,
+ const gchar *sess_id,
+ const gchar *participant);
+
+#if 0
+/*
+ * These two functions aren't being used and I'd rather not lock in the API
+ * until they are needed. If they ever are.
+ */
+
+/**
+ * Gets the active local candidates for the stream.
+ *
+ * @param media The media object to find the session in.
+ * @param sess_id The session id of the session to find the stream in.
+ * @param participant The name of the remote user to get the active candidate
+ * from.
+ *
+ * @return The active candidates retrieved.
+ */
+GList *purple_media_get_active_local_candidates(PurpleMedia *media,
+ const gchar *sess_id, const gchar *participant);
+
+/**
+ * Gets the active remote candidates for the stream.
+ *
+ * @param media The media object to find the session in.
+ * @param sess_id The session id of the session to find the stream in.
+ * @param participant The name of the remote user to get the remote candidate
+ * from.
+ *
+ * @return The remote candidates retrieved.
+ */
+GList *purple_media_get_active_remote_candidates(PurpleMedia *media,
+ const gchar *sess_id, const gchar *participant);
+#endif
+
+/**
+ * Sets remote candidates from the stream.
+ *
+ * @param media The media object to find the session in.
+ * @param sess_id The session id of the session find the stream in.
+ * @param participant The name of the remote user to set the candidates from.
+ *
+ * @return @c TRUE The codecs were set successfully, or @c FALSE otherwise.
+ *
+ * @since 2.6.0
+ */
+gboolean purple_media_set_remote_codecs(PurpleMedia *media, const gchar *sess_id,
+ const gchar *participant, GList *codecs);
+
+/**
+ * Returns whether or not the candidates for set of streams are prepared
+ *
+ * @param media The media object to find the remote user in.
+ * @param session_id The session id of the session to check.
+ * @param participant The remote user to check for.
+ *
+ * @return @c TRUE All streams for the given session_id/participant combination have candidates prepared, @c FALSE otherwise.
+ *
+ * @since 2.6.0
+ */
+gboolean purple_media_candidates_prepared(PurpleMedia *media,
+ const gchar *session_id, const gchar *participant);
+
+/**
+ * Sets the send codec for the a session.
+ *
+ * @param media The media object to find the session in.
+ * @param sess_id The session id of the session to set the codec for.
+ * @param codec The codec to set the session to stream.
+ *
+ * @return @c TRUE The codec was successfully changed, or @c FALSE otherwise.
+ *
+ * @since 2.6.0
+ */
+gboolean purple_media_set_send_codec(PurpleMedia *media, const gchar *sess_id, PurpleMediaCodec *codec);
+
+/**
+ * Gets whether a session's codecs are ready to be used.
+ *
+ * @param media The media object to find the session in.
+ * @param sess_id The session id of the session to check.
+ *
+ * @return @c TRUE The codecs are ready, or @c FALSE otherwise.
+ *
+ * @since 2.6.0
+ */
+gboolean purple_media_codecs_ready(PurpleMedia *media, const gchar *sess_id);
+
+/**
+ * Gets whether the local user is the conference/session/stream's initiator.
+ *
+ * @param media The media instance to find the session in.
+ * @param sess_id The session id of the session to check.
+ * @param participant The participant of the stream to check.
+ *
+ * @return TRUE if the local user is the stream's initator, else FALSE.
+ *
+ * @since 2.6.0
+ */
+gboolean purple_media_is_initiator(PurpleMedia *media,
+ const gchar *sess_id, const gchar *participant);
+
+/**
+ * Gets whether a streams selected have been accepted.
+ *
+ * @param media The media object to find the session in.
+ * @param sess_id The session id of the session to check.
+ * @param participant The participant to check.
+ *
+ * @return @c TRUE The selected streams have been accepted, or @c FALSE otherwise.
+ *
+ * @since 2.6.0
+ */
+gboolean purple_media_accepted(PurpleMedia *media, const gchar *sess_id,
+ const gchar *participant);
+
+/**
+ * Sets the input volume of all the selected sessions.
+ *
+ * @param media The media object the sessions are in.
+ * @param session_id The session to select (if any).
+ * @param level The level to set the volume to.
+ *
+ * @since 2.6.0
+ */
+void purple_media_set_input_volume(PurpleMedia *media, const gchar *session_id, double level);
+
+/**
+ * Sets the output volume of all the selected streams.
+ *
+ * @param media The media object the streams are in.
+ * @param session_id The session to limit the streams to (if any).
+ * @param participant The participant to limit the streams to (if any).
+ * @param level The level to set the volume to.
+ *
+ * @since 2.6.0
+ */
+void purple_media_set_output_volume(PurpleMedia *media, const gchar *session_id,
+ const gchar *participant, double level);
+
+/**
+ * Sets a video output window for the given session/stream.
+ *
+ * @param media The media instance to set the output window on.
+ * @param session_id The session to set the output window on.
+ * @param participant Optionally, the participant to set the output window on.
+ * @param window_id The window id use for embedding the video in.
+ *
+ * @return An id to reference the output window.
+ *
+ * @since 2.6.0
+ */
+gulong purple_media_set_output_window(PurpleMedia *media,
+ const gchar *session_id, const gchar *participant,
+ gulong window_id);
+
+/**
+ * Removes all output windows from a given media session.
+ *
+ * @param media The instance to remove all output windows from.
+ *
+ * @since 2.6.0
+ */
+void purple_media_remove_output_windows(PurpleMedia *media);
+
+#ifdef __cplusplus
+}
+#endif
+
+G_END_DECLS
+
+#endif /* _PURPLE_MEDIA_H_ */
diff --git a/libpurple/mediamanager.c b/libpurple/mediamanager.c
new file mode 100644
index 0000000000..ccd91e9483
--- /dev/null
+++ b/libpurple/mediamanager.c
@@ -0,0 +1,1127 @@
+/**
+ * @file mediamanager.c Media Manager API
+ * @ingroup core
+ */
+
+/* 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 "internal.h"
+
+#include "account.h"
+#include "debug.h"
+#include "media.h"
+#include "mediamanager.h"
+
+#ifdef USE_GSTREAMER
+#include "marshallers.h"
+#include "media-gst.h"
+#endif
+
+#ifdef USE_VV
+
+#include <gst/farsight/fs-conference-iface.h>
+#include <gst/interfaces/xoverlay.h>
+
+/** @copydoc _PurpleMediaManagerPrivate */
+typedef struct _PurpleMediaManagerPrivate PurpleMediaManagerPrivate;
+/** @copydoc _PurpleMediaOutputWindow */
+typedef struct _PurpleMediaOutputWindow PurpleMediaOutputWindow;
+/** @copydoc _PurpleMediaManagerPrivate */
+typedef struct _PurpleMediaElementInfoPrivate PurpleMediaElementInfoPrivate;
+
+/** The media manager class. */
+struct _PurpleMediaManagerClass
+{
+ GObjectClass parent_class; /**< The parent class. */
+};
+
+/** The media manager's data. */
+struct _PurpleMediaManager
+{
+ GObject parent; /**< The parent of this manager. */
+ PurpleMediaManagerPrivate *priv; /**< Private data for the manager. */
+};
+
+struct _PurpleMediaOutputWindow
+{
+ gulong id;
+ PurpleMedia *media;
+ gchar *session_id;
+ gchar *participant;
+ gulong window_id;
+ GstElement *sink;
+};
+
+struct _PurpleMediaManagerPrivate
+{
+ GstElement *pipeline;
+ PurpleMediaCaps ui_caps;
+ GList *medias;
+ GList *elements;
+ GList *output_windows;
+ gulong next_output_window_id;
+
+ PurpleMediaElementInfo *video_src;
+ PurpleMediaElementInfo *video_sink;
+ PurpleMediaElementInfo *audio_src;
+ PurpleMediaElementInfo *audio_sink;
+};
+
+#define PURPLE_MEDIA_MANAGER_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), PURPLE_TYPE_MEDIA_MANAGER, PurpleMediaManagerPrivate))
+#define PURPLE_MEDIA_ELEMENT_INFO_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), PURPLE_TYPE_MEDIA_ELEMENT_INFO, PurpleMediaElementInfoPrivate))
+
+static void purple_media_manager_class_init (PurpleMediaManagerClass *klass);
+static void purple_media_manager_init (PurpleMediaManager *media);
+static void purple_media_manager_finalize (GObject *object);
+
+static GObjectClass *parent_class = NULL;
+
+
+
+enum {
+ INIT_MEDIA,
+ LAST_SIGNAL
+};
+static guint purple_media_manager_signals[LAST_SIGNAL] = {0};
+#endif
+
+GType
+purple_media_manager_get_type()
+{
+#ifdef USE_VV
+ static GType type = 0;
+
+ if (type == 0) {
+ static const GTypeInfo info = {
+ sizeof(PurpleMediaManagerClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) purple_media_manager_class_init,
+ NULL,
+ NULL,
+ sizeof(PurpleMediaManager),
+ 0,
+ (GInstanceInitFunc) purple_media_manager_init,
+ NULL
+ };
+ type = g_type_register_static(G_TYPE_OBJECT, "PurpleMediaManager", &info, 0);
+ }
+ return type;
+#else
+ return G_TYPE_NONE;
+#endif
+}
+
+#ifdef USE_VV
+static void
+purple_media_manager_class_init (PurpleMediaManagerClass *klass)
+{
+ GObjectClass *gobject_class = (GObjectClass*)klass;
+ parent_class = g_type_class_peek_parent(klass);
+
+ gobject_class->finalize = purple_media_manager_finalize;
+
+ purple_media_manager_signals[INIT_MEDIA] = g_signal_new ("init-media",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ 0, NULL, NULL,
+ purple_smarshal_BOOLEAN__OBJECT_POINTER_STRING,
+ G_TYPE_BOOLEAN, 3, PURPLE_TYPE_MEDIA,
+ G_TYPE_POINTER, G_TYPE_STRING);
+ g_type_class_add_private(klass, sizeof(PurpleMediaManagerPrivate));
+}
+
+static void
+purple_media_manager_init (PurpleMediaManager *media)
+{
+ media->priv = PURPLE_MEDIA_MANAGER_GET_PRIVATE(media);
+ media->priv->medias = NULL;
+ media->priv->next_output_window_id = 1;
+}
+
+static void
+purple_media_manager_finalize (GObject *media)
+{
+ PurpleMediaManagerPrivate *priv = PURPLE_MEDIA_MANAGER_GET_PRIVATE(media);
+ for (; priv->medias; priv->medias =
+ g_list_delete_link(priv->medias, priv->medias)) {
+ g_object_unref(priv->medias->data);
+ }
+ for (; priv->elements; priv->elements =
+ g_list_delete_link(priv->elements, priv->elements)) {
+ g_object_unref(priv->elements->data);
+ }
+ parent_class->finalize(media);
+}
+#endif
+
+PurpleMediaManager *
+purple_media_manager_get()
+{
+#ifdef USE_VV
+ static PurpleMediaManager *manager = NULL;
+
+ if (manager == NULL)
+ manager = PURPLE_MEDIA_MANAGER(g_object_new(purple_media_manager_get_type(), NULL));
+ return manager;
+#else
+ return NULL;
+#endif
+}
+
+#ifdef USE_VV
+static gboolean
+pipeline_bus_call(GstBus *bus, GstMessage *msg, PurpleMediaManager *manager)
+{
+ switch(GST_MESSAGE_TYPE(msg)) {
+ case GST_MESSAGE_EOS:
+ purple_debug_info("mediamanager", "End of Stream\n");
+ break;
+ case GST_MESSAGE_ERROR: {
+ gchar *debug = NULL;
+ GError *err = NULL;
+
+ gst_message_parse_error(msg, &err, &debug);
+
+ purple_debug_error("mediamanager",
+ "gst pipeline error: %s\n",
+ err->message);
+ g_error_free(err);
+
+ if (debug) {
+ purple_debug_error("mediamanager",
+ "Debug details: %s\n", debug);
+ g_free (debug);
+ }
+ break;
+ }
+ default:
+ break;
+ }
+ return TRUE;
+}
+#endif
+
+#ifdef USE_GSTREAMER
+GstElement *
+purple_media_manager_get_pipeline(PurpleMediaManager *manager)
+{
+#ifdef USE_VV
+ g_return_val_if_fail(PURPLE_IS_MEDIA_MANAGER(manager), NULL);
+
+ if (manager->priv->pipeline == NULL) {
+ GstBus *bus;
+ manager->priv->pipeline = gst_pipeline_new(NULL);
+
+ bus = gst_pipeline_get_bus(
+ GST_PIPELINE(manager->priv->pipeline));
+ gst_bus_add_signal_watch(GST_BUS(bus));
+ g_signal_connect(G_OBJECT(bus), "message",
+ G_CALLBACK(pipeline_bus_call), manager);
+ gst_bus_set_sync_handler(bus,
+ gst_bus_sync_signal_handler, NULL);
+ gst_object_unref(bus);
+
+ gst_element_set_state(manager->priv->pipeline,
+ GST_STATE_PLAYING);
+ }
+
+ return manager->priv->pipeline;
+#else
+ return NULL;
+#endif
+}
+#endif /* USE_GSTREAMER */
+
+PurpleMedia *
+purple_media_manager_create_media(PurpleMediaManager *manager,
+ PurpleAccount *account,
+ const char *conference_type,
+ const char *remote_user,
+ gboolean initiator)
+{
+#ifdef USE_VV
+ PurpleMedia *media;
+ FsConference *conference = FS_CONFERENCE(gst_element_factory_make(conference_type, NULL));
+ GstStateChangeReturn ret;
+ gboolean signal_ret;
+
+ if (conference == NULL) {
+ purple_conv_present_error(remote_user, account,
+ _("Error creating conference."));
+ purple_debug_error("media", "Conference == NULL\n");
+ return NULL;
+ }
+
+ media = PURPLE_MEDIA(g_object_new(purple_media_get_type(),
+ "manager", manager,
+ "account", account,
+ "conference", conference,
+ "initiator", initiator,
+ NULL));
+
+ ret = gst_element_set_state(GST_ELEMENT(conference), GST_STATE_PLAYING);
+
+ if (ret == GST_STATE_CHANGE_FAILURE) {
+ purple_conv_present_error(remote_user, account,
+ _("Error creating conference."));
+ purple_debug_error("media", "Failed to start conference.\n");
+ g_object_unref(media);
+ return NULL;
+ }
+
+ g_signal_emit(manager, purple_media_manager_signals[INIT_MEDIA], 0,
+ media, account, remote_user, &signal_ret);
+
+ if (signal_ret == FALSE) {
+ g_object_unref(media);
+ return NULL;
+ }
+
+ manager->priv->medias = g_list_append(manager->priv->medias, media);
+ return media;
+#else
+ return NULL;
+#endif
+}
+
+GList *
+purple_media_manager_get_media(PurpleMediaManager *manager)
+{
+#ifdef USE_VV
+ return manager->priv->medias;
+#else
+ return NULL;
+#endif
+}
+
+GList *
+purple_media_manager_get_media_by_account(PurpleMediaManager *manager,
+ PurpleAccount *account)
+{
+#ifdef USE_VV
+ GList *media = NULL;
+ GList *iter;
+
+ g_return_val_if_fail(PURPLE_IS_MEDIA_MANAGER(manager), NULL);
+
+ iter = manager->priv->medias;
+ for (; iter; iter = g_list_next(iter)) {
+ if (purple_media_get_account(iter->data) == account) {
+ media = g_list_prepend(media, iter->data);
+ }
+ }
+
+ return media;
+#else
+ return NULL;
+#endif
+}
+
+void
+purple_media_manager_remove_media(PurpleMediaManager *manager,
+ PurpleMedia *media)
+{
+#ifdef USE_VV
+ GList *list = g_list_find(manager->priv->medias, media);
+ if (list)
+ manager->priv->medias =
+ g_list_delete_link(manager->priv->medias, list);
+#endif
+}
+
+#ifdef USE_VV
+static void
+request_pad_unlinked_cb(GstPad *pad, GstPad *peer, gpointer user_data)
+{
+ GstElement *parent = GST_ELEMENT_PARENT(pad);
+ GstIterator *iter;
+ GstPad *remaining_pad;
+
+ gst_element_release_request_pad(GST_ELEMENT_PARENT(pad), pad);
+ iter = gst_element_iterate_pads(parent);
+
+ if (gst_iterator_next(iter, (gpointer)&remaining_pad)
+ == GST_ITERATOR_DONE) {
+ gst_element_set_locked_state(parent, TRUE);
+ gst_element_set_state(parent, GST_STATE_NULL);
+ gst_bin_remove(GST_BIN(GST_ELEMENT_PARENT(parent)), parent);
+ }
+
+ gst_iterator_free(iter);
+}
+#endif
+
+#ifdef USE_GSTREAMER
+GstElement *
+purple_media_manager_get_element(PurpleMediaManager *manager,
+ PurpleMediaSessionType type, PurpleMedia *media,
+ const gchar *session_id, const gchar *participant)
+{
+#ifdef USE_VV
+ GstElement *ret = NULL;
+ PurpleMediaElementInfo *info = NULL;
+ PurpleMediaElementType element_type;
+
+ if (type & PURPLE_MEDIA_SEND_AUDIO)
+ info = manager->priv->audio_src;
+ else if (type & PURPLE_MEDIA_RECV_AUDIO)
+ info = manager->priv->audio_sink;
+ else if (type & PURPLE_MEDIA_SEND_VIDEO)
+ info = manager->priv->video_src;
+ else if (type & PURPLE_MEDIA_RECV_VIDEO)
+ info = manager->priv->video_sink;
+
+ if (info == NULL)
+ return NULL;
+
+ element_type = purple_media_element_info_get_element_type(info);
+
+ if (element_type & PURPLE_MEDIA_ELEMENT_UNIQUE &&
+ element_type & PURPLE_MEDIA_ELEMENT_SRC) {
+ GstElement *tee;
+ GstPad *pad;
+ GstPad *ghost;
+ gchar *id = purple_media_element_info_get_id(info);
+
+ ret = gst_bin_get_by_name(GST_BIN(
+ purple_media_manager_get_pipeline(
+ manager)), id);
+
+ if (ret == NULL) {
+ GstElement *bin, *fakesink;
+ ret = purple_media_element_info_call_create(info,
+ media, session_id, participant);
+ bin = gst_bin_new(id);
+ tee = gst_element_factory_make("tee", "tee");
+ gst_bin_add_many(GST_BIN(bin), ret, tee, NULL);
+ gst_element_link(ret, tee);
+
+ /*
+ * This shouldn't be necessary, but it stops it from
+ * giving a not-linked error upon destruction
+ */
+ fakesink = gst_element_factory_make("fakesink", NULL);
+ g_object_set(fakesink, "sync", FALSE, NULL);
+ gst_bin_add(GST_BIN(bin), fakesink);
+ gst_element_link(tee, fakesink);
+
+ ret = bin;
+ gst_element_set_locked_state(ret, TRUE);
+ gst_object_ref(ret);
+ gst_bin_add(GST_BIN(purple_media_manager_get_pipeline(
+ manager)), ret);
+ }
+ g_free(id);
+
+ tee = gst_bin_get_by_name(GST_BIN(ret), "tee");
+ pad = gst_element_get_request_pad(tee, "src%d");
+ gst_object_unref(tee);
+ ghost = gst_ghost_pad_new(NULL, pad);
+ gst_object_unref(pad);
+ g_signal_connect(GST_PAD(ghost), "unlinked",
+ G_CALLBACK(request_pad_unlinked_cb), NULL);
+ gst_pad_set_active(ghost, TRUE);
+ gst_element_add_pad(ret, ghost);
+ } else {
+ ret = purple_media_element_info_call_create(info,
+ media, session_id, participant);
+ }
+
+ if (ret == NULL)
+ purple_debug_error("media", "Error creating source or sink\n");
+
+ return ret;
+#else
+ return NULL;
+#endif
+}
+
+PurpleMediaElementInfo *
+purple_media_manager_get_element_info(PurpleMediaManager *manager,
+ const gchar *id)
+{
+#ifdef USE_VV
+ GList *iter;
+
+ g_return_val_if_fail(PURPLE_IS_MEDIA_MANAGER(manager), NULL);
+
+ iter = manager->priv->elements;
+
+ for (; iter; iter = g_list_next(iter)) {
+ gchar *element_id =
+ purple_media_element_info_get_id(iter->data);
+ if (!strcmp(element_id, id)) {
+ g_free(element_id);
+ g_object_ref(iter->data);
+ return iter->data;
+ }
+ g_free(element_id);
+ }
+#endif
+
+ return NULL;
+}
+
+gboolean
+purple_media_manager_register_element(PurpleMediaManager *manager,
+ PurpleMediaElementInfo *info)
+{
+#ifdef USE_VV
+ PurpleMediaElementInfo *info2;
+ gchar *id;
+
+ g_return_val_if_fail(PURPLE_IS_MEDIA_MANAGER(manager), FALSE);
+ g_return_val_if_fail(info != NULL, FALSE);
+
+ id = purple_media_element_info_get_id(info);
+ info2 = purple_media_manager_get_element_info(manager, id);
+ g_free(id);
+
+ if (info2 != NULL) {
+ g_object_unref(info2);
+ return FALSE;
+ }
+
+ manager->priv->elements =
+ g_list_prepend(manager->priv->elements, info);
+ return TRUE;
+#else
+ return FALSE;
+#endif
+}
+
+gboolean
+purple_media_manager_unregister_element(PurpleMediaManager *manager,
+ const gchar *id)
+{
+#ifdef USE_VV
+ PurpleMediaElementInfo *info;
+
+ g_return_val_if_fail(PURPLE_IS_MEDIA_MANAGER(manager), FALSE);
+
+ info = purple_media_manager_get_element_info(manager, id);
+
+ if (info == NULL) {
+ g_object_unref(info);
+ return FALSE;
+ }
+
+ if (manager->priv->audio_src == info)
+ manager->priv->audio_src = NULL;
+ if (manager->priv->audio_sink == info)
+ manager->priv->audio_sink = NULL;
+ if (manager->priv->video_src == info)
+ manager->priv->video_src = NULL;
+ if (manager->priv->video_sink == info)
+ manager->priv->video_sink = NULL;
+
+ manager->priv->elements = g_list_remove(
+ manager->priv->elements, info);
+ g_object_unref(info);
+ return TRUE;
+#else
+ return FALSE;
+#endif
+}
+
+gboolean
+purple_media_manager_set_active_element(PurpleMediaManager *manager,
+ PurpleMediaElementInfo *info)
+{
+#ifdef USE_VV
+ PurpleMediaElementInfo *info2;
+ PurpleMediaElementType type;
+ gboolean ret = FALSE;
+ gchar *id;
+
+ g_return_val_if_fail(PURPLE_IS_MEDIA_MANAGER(manager), FALSE);
+ g_return_val_if_fail(info != NULL, FALSE);
+
+ id = purple_media_element_info_get_id(info);
+ info2 = purple_media_manager_get_element_info(manager, id);
+ g_free(id);
+
+ if (info2 == NULL)
+ purple_media_manager_register_element(manager, info);
+ else
+ g_object_unref(info2);
+
+ type = purple_media_element_info_get_element_type(info);
+
+ if (type & PURPLE_MEDIA_ELEMENT_SRC) {
+ if (type & PURPLE_MEDIA_ELEMENT_AUDIO) {
+ manager->priv->audio_src = info;
+ ret = TRUE;
+ }
+ if (type & PURPLE_MEDIA_ELEMENT_VIDEO) {
+ manager->priv->video_src = info;
+ ret = TRUE;
+ }
+ }
+ if (type & PURPLE_MEDIA_ELEMENT_SINK) {
+ if (type & PURPLE_MEDIA_ELEMENT_AUDIO) {
+ manager->priv->audio_sink = info;
+ ret = TRUE;
+ }
+ if (type & PURPLE_MEDIA_ELEMENT_VIDEO) {
+ manager->priv->video_sink = info;
+ ret = TRUE;
+ }
+ }
+
+ return ret;
+#else
+ return FALSE;
+#endif
+}
+
+PurpleMediaElementInfo *
+purple_media_manager_get_active_element(PurpleMediaManager *manager,
+ PurpleMediaElementType type)
+{
+#ifdef USE_VV
+ g_return_val_if_fail(PURPLE_IS_MEDIA_MANAGER(manager), NULL);
+
+ if (type & PURPLE_MEDIA_ELEMENT_SRC) {
+ if (type & PURPLE_MEDIA_ELEMENT_AUDIO)
+ return manager->priv->audio_src;
+ else if (type & PURPLE_MEDIA_ELEMENT_VIDEO)
+ return manager->priv->video_src;
+ } else if (type & PURPLE_MEDIA_ELEMENT_SINK) {
+ if (type & PURPLE_MEDIA_ELEMENT_AUDIO)
+ return manager->priv->audio_sink;
+ else if (type & PURPLE_MEDIA_ELEMENT_VIDEO)
+ return manager->priv->video_sink;
+ }
+#endif
+
+ return NULL;
+}
+#endif /* USE_GSTREAMER */
+
+#ifdef USE_VV
+static void
+window_id_cb(GstBus *bus, GstMessage *msg, PurpleMediaOutputWindow *ow)
+{
+ GstElement *sink;
+
+ if (GST_MESSAGE_TYPE(msg) != GST_MESSAGE_ELEMENT ||
+ !gst_structure_has_name(msg->structure,
+ "prepare-xwindow-id"))
+ return;
+
+ sink = GST_ELEMENT(GST_MESSAGE_SRC(msg));
+ while (sink != ow->sink) {
+ if (sink == NULL)
+ return;
+ sink = GST_ELEMENT_PARENT(sink);
+ }
+
+ g_signal_handlers_disconnect_matched(bus, G_SIGNAL_MATCH_FUNC
+ | G_SIGNAL_MATCH_DATA, 0, 0, NULL,
+ window_id_cb, ow);
+
+ gst_x_overlay_set_xwindow_id(GST_X_OVERLAY(
+ GST_MESSAGE_SRC(msg)), ow->window_id);
+}
+#endif
+
+gboolean
+purple_media_manager_create_output_window(PurpleMediaManager *manager,
+ PurpleMedia *media, const gchar *session_id,
+ const gchar *participant)
+{
+#ifdef USE_VV
+ GList *iter;
+
+ g_return_val_if_fail(PURPLE_IS_MEDIA(media), FALSE);
+
+ iter = manager->priv->output_windows;
+ for(; iter; iter = g_list_next(iter)) {
+ PurpleMediaOutputWindow *ow = iter->data;
+
+ if (ow->sink == NULL && ow->media == media &&
+ ((participant != NULL &&
+ ow->participant != NULL &&
+ !strcmp(participant, ow->participant)) ||
+ (participant == ow->participant)) &&
+ !strcmp(session_id, ow->session_id)) {
+ GstBus *bus;
+ GstElement *queue;
+ GstElement *tee = purple_media_get_tee(media,
+ session_id, participant);
+
+ if (tee == NULL)
+ continue;
+
+ queue = gst_element_factory_make(
+ "queue", NULL);
+ ow->sink = purple_media_manager_get_element(
+ manager, PURPLE_MEDIA_RECV_VIDEO,
+ ow->media, ow->session_id,
+ ow->participant);
+
+ if (participant == NULL) {
+ /* aka this is a preview sink */
+ GObjectClass *klass =
+ G_OBJECT_GET_CLASS(ow->sink);
+ if (g_object_class_find_property(klass,
+ "sync"))
+ g_object_set(G_OBJECT(ow->sink),
+ "sync", "FALSE", NULL);
+ if (g_object_class_find_property(klass,
+ "async"))
+ g_object_set(G_OBJECT(ow->sink),
+ "async", FALSE, NULL);
+ }
+
+ gst_bin_add_many(GST_BIN(GST_ELEMENT_PARENT(tee)),
+ queue, ow->sink, NULL);
+
+ bus = gst_pipeline_get_bus(GST_PIPELINE(
+ manager->priv->pipeline));
+ g_signal_connect(bus, "sync-message::element",
+ G_CALLBACK(window_id_cb), ow);
+ gst_object_unref(bus);
+
+ gst_element_sync_state_with_parent(ow->sink);
+ gst_element_link(queue, ow->sink);
+ gst_element_sync_state_with_parent(queue);
+ gst_element_link(tee, queue);
+ }
+ }
+ return TRUE;
+#else
+ return FALSE;
+#endif
+}
+
+gulong
+purple_media_manager_set_output_window(PurpleMediaManager *manager,
+ PurpleMedia *media, const gchar *session_id,
+ const gchar *participant, gulong window_id)
+{
+#ifdef USE_VV
+ PurpleMediaOutputWindow *output_window;
+
+ g_return_val_if_fail(PURPLE_IS_MEDIA_MANAGER(manager), FALSE);
+ g_return_val_if_fail(PURPLE_IS_MEDIA(media), FALSE);
+
+ output_window = g_new0(PurpleMediaOutputWindow, 1);
+ output_window->id = manager->priv->next_output_window_id++;
+ output_window->media = media;
+ output_window->session_id = g_strdup(session_id);
+ output_window->participant = g_strdup(participant);
+ output_window->window_id = window_id;
+
+ manager->priv->output_windows = g_list_prepend(
+ manager->priv->output_windows, output_window);
+
+ if (purple_media_get_tee(media, session_id, participant) != NULL)
+ purple_media_manager_create_output_window(manager,
+ media, session_id, participant);
+
+ return output_window->id;
+#else
+ return 0;
+#endif
+}
+
+gboolean
+purple_media_manager_remove_output_window(PurpleMediaManager *manager,
+ gulong output_window_id)
+{
+#ifdef USE_VV
+ PurpleMediaOutputWindow *output_window = NULL;
+ GList *iter;
+
+ g_return_val_if_fail(PURPLE_IS_MEDIA_MANAGER(manager), FALSE);
+
+ iter = manager->priv->output_windows;
+ for (; iter; iter = g_list_next(iter)) {
+ PurpleMediaOutputWindow *ow = iter->data;
+ if (ow->id == output_window_id) {
+ manager->priv->output_windows = g_list_delete_link(
+ manager->priv->output_windows, iter);
+ output_window = ow;
+ break;
+ }
+ }
+
+ if (output_window == NULL)
+ return FALSE;
+
+ if (output_window->sink != NULL) {
+ GstPad *pad = gst_element_get_static_pad(
+ output_window->sink, "sink");
+ GstPad *peer = gst_pad_get_peer(pad);
+ GstElement *queue = GST_ELEMENT_PARENT(peer);
+ gst_object_unref(pad);
+ pad = gst_element_get_static_pad(queue, "sink");
+ peer = gst_pad_get_peer(pad);
+ gst_object_unref(pad);
+ gst_element_release_request_pad(GST_ELEMENT_PARENT(peer), peer);
+ gst_element_set_locked_state(queue, TRUE);
+ gst_element_set_state(queue, GST_STATE_NULL);
+ gst_bin_remove(GST_BIN(GST_ELEMENT_PARENT(queue)), queue);
+ gst_element_set_locked_state(output_window->sink, TRUE);
+ gst_element_set_state(output_window->sink, GST_STATE_NULL);
+ gst_bin_remove(GST_BIN(GST_ELEMENT_PARENT(output_window->sink)),
+ output_window->sink);
+ }
+
+ g_free(output_window->session_id);
+ g_free(output_window->participant);
+ g_free(output_window);
+
+ return TRUE;
+#else
+ return FALSE;
+#endif
+}
+
+void
+purple_media_manager_remove_output_windows(PurpleMediaManager *manager,
+ PurpleMedia *media, const gchar *session_id,
+ const gchar *participant)
+{
+#ifdef USE_VV
+ GList *iter;
+
+ g_return_if_fail(PURPLE_IS_MEDIA(media));
+
+ iter = manager->priv->output_windows;
+
+ for (; iter;) {
+ PurpleMediaOutputWindow *ow = iter->data;
+ iter = g_list_next(iter);
+
+ if (media == ow->media &&
+ ((session_id != NULL && ow->session_id != NULL &&
+ !strcmp(session_id, ow->session_id)) ||
+ (session_id == ow->session_id)) &&
+ ((participant != NULL && ow->participant != NULL &&
+ !strcmp(participant, ow->participant)) ||
+ (participant == ow->participant)))
+ purple_media_manager_remove_output_window(
+ manager, ow->id);
+ }
+#endif
+}
+
+void
+purple_media_manager_set_ui_caps(PurpleMediaManager *manager,
+ PurpleMediaCaps caps)
+{
+#ifdef USE_VV
+ g_return_if_fail(PURPLE_IS_MEDIA_MANAGER(manager));
+ manager->priv->ui_caps = caps;
+#endif
+}
+
+PurpleMediaCaps
+purple_media_manager_get_ui_caps(PurpleMediaManager *manager)
+{
+#ifdef USE_VV
+ g_return_val_if_fail(PURPLE_IS_MEDIA_MANAGER(manager),
+ PURPLE_MEDIA_CAPS_NONE);
+ return manager->priv->ui_caps;
+#else
+ return PURPLE_MEDIA_CAPS_NONE;
+#endif
+}
+
+#ifdef USE_GSTREAMER
+
+/*
+ * PurpleMediaElementType
+ */
+
+GType
+purple_media_element_type_get_type()
+{
+ static GType type = 0;
+ if (type == 0) {
+ static const GFlagsValue values[] = {
+ { PURPLE_MEDIA_ELEMENT_NONE,
+ "PURPLE_MEDIA_ELEMENT_NONE", "none" },
+ { PURPLE_MEDIA_ELEMENT_AUDIO,
+ "PURPLE_MEDIA_ELEMENT_AUDIO", "audio" },
+ { PURPLE_MEDIA_ELEMENT_VIDEO,
+ "PURPLE_MEDIA_ELEMENT_VIDEO", "video" },
+ { PURPLE_MEDIA_ELEMENT_AUDIO_VIDEO,
+ "PURPLE_MEDIA_ELEMENT_AUDIO_VIDEO",
+ "audio-video" },
+ { PURPLE_MEDIA_ELEMENT_NO_SRCS,
+ "PURPLE_MEDIA_ELEMENT_NO_SRCS", "no-srcs" },
+ { PURPLE_MEDIA_ELEMENT_ONE_SRC,
+ "PURPLE_MEDIA_ELEMENT_ONE_SRC", "one-src" },
+ { PURPLE_MEDIA_ELEMENT_MULTI_SRC,
+ "PURPLE_MEDIA_ELEMENT_MULTI_SRC",
+ "multi-src" },
+ { PURPLE_MEDIA_ELEMENT_REQUEST_SRC,
+ "PURPLE_MEDIA_ELEMENT_REQUEST_SRC",
+ "request-src" },
+ { PURPLE_MEDIA_ELEMENT_NO_SINKS,
+ "PURPLE_MEDIA_ELEMENT_NO_SINKS", "no-sinks" },
+ { PURPLE_MEDIA_ELEMENT_ONE_SINK,
+ "PURPLE_MEDIA_ELEMENT_ONE_SINK", "one-sink" },
+ { PURPLE_MEDIA_ELEMENT_MULTI_SINK,
+ "PURPLE_MEDIA_ELEMENT_MULTI_SINK",
+ "multi-sink" },
+ { PURPLE_MEDIA_ELEMENT_REQUEST_SINK,
+ "PURPLE_MEDIA_ELEMENT_REQUEST_SINK",
+ "request-sink" },
+ { PURPLE_MEDIA_ELEMENT_UNIQUE,
+ "PURPLE_MEDIA_ELEMENT_UNIQUE", "unique" },
+ { PURPLE_MEDIA_ELEMENT_SRC,
+ "PURPLE_MEDIA_ELEMENT_SRC", "src" },
+ { PURPLE_MEDIA_ELEMENT_SINK,
+ "PURPLE_MEDIA_ELEMENT_SINK", "sink" },
+ { 0, NULL, NULL }
+ };
+ type = g_flags_register_static(
+ "PurpleMediaElementType", values);
+ }
+ return type;
+}
+
+/*
+ * PurpleMediaElementInfo
+ */
+
+struct _PurpleMediaElementInfoClass
+{
+ GObjectClass parent_class;
+};
+
+struct _PurpleMediaElementInfo
+{
+ GObject parent;
+};
+
+#ifdef USE_VV
+struct _PurpleMediaElementInfoPrivate
+{
+ gchar *id;
+ gchar *name;
+ PurpleMediaElementType type;
+ PurpleMediaElementCreateCallback create;
+};
+
+enum {
+ PROP_0,
+ PROP_ID,
+ PROP_NAME,
+ PROP_TYPE,
+ PROP_CREATE_CB,
+};
+
+static void
+purple_media_element_info_init(PurpleMediaElementInfo *info)
+{
+ PurpleMediaElementInfoPrivate *priv =
+ PURPLE_MEDIA_ELEMENT_INFO_GET_PRIVATE(info);
+ priv->id = NULL;
+ priv->name = NULL;
+ priv->type = PURPLE_MEDIA_ELEMENT_NONE;
+ priv->create = NULL;
+}
+
+static void
+purple_media_element_info_finalize(GObject *info)
+{
+ PurpleMediaElementInfoPrivate *priv =
+ PURPLE_MEDIA_ELEMENT_INFO_GET_PRIVATE(info);
+ g_free(priv->id);
+ g_free(priv->name);
+}
+
+static void
+purple_media_element_info_set_property (GObject *object, guint prop_id,
+ const GValue *value, GParamSpec *pspec)
+{
+ PurpleMediaElementInfoPrivate *priv;
+ g_return_if_fail(PURPLE_IS_MEDIA_ELEMENT_INFO(object));
+
+ priv = PURPLE_MEDIA_ELEMENT_INFO_GET_PRIVATE(object);
+
+ switch (prop_id) {
+ case PROP_ID:
+ g_free(priv->id);
+ priv->id = g_value_dup_string(value);
+ break;
+ case PROP_NAME:
+ g_free(priv->name);
+ priv->name = g_value_dup_string(value);
+ break;
+ case PROP_TYPE: {
+ priv->type = g_value_get_flags(value);
+ break;
+ }
+ case PROP_CREATE_CB:
+ priv->create = g_value_get_pointer(value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(
+ object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+purple_media_element_info_get_property (GObject *object, guint prop_id,
+ GValue *value, GParamSpec *pspec)
+{
+ PurpleMediaElementInfoPrivate *priv;
+ g_return_if_fail(PURPLE_IS_MEDIA_ELEMENT_INFO(object));
+
+ priv = PURPLE_MEDIA_ELEMENT_INFO_GET_PRIVATE(object);
+
+ switch (prop_id) {
+ case PROP_ID:
+ g_value_set_string(value, priv->id);
+ break;
+ case PROP_NAME:
+ g_value_set_string(value, priv->name);
+ break;
+ case PROP_TYPE:
+ g_value_set_flags(value, priv->type);
+ break;
+ case PROP_CREATE_CB:
+ g_value_set_pointer(value, priv->create);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(
+ object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+purple_media_element_info_class_init(PurpleMediaElementInfoClass *klass)
+{
+ GObjectClass *gobject_class = (GObjectClass*)klass;
+
+ gobject_class->finalize = purple_media_element_info_finalize;
+ gobject_class->set_property = purple_media_element_info_set_property;
+ gobject_class->get_property = purple_media_element_info_get_property;
+
+ g_object_class_install_property(gobject_class, PROP_ID,
+ g_param_spec_string("id",
+ "ID",
+ "The unique identifier of the element.",
+ NULL,
+ G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
+
+ g_object_class_install_property(gobject_class, PROP_NAME,
+ g_param_spec_string("name",
+ "Name",
+ "The friendly/display name of this element.",
+ NULL,
+ G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
+
+ g_object_class_install_property(gobject_class, PROP_TYPE,
+ g_param_spec_flags("type",
+ "Element Type",
+ "The type of element this is.",
+ PURPLE_TYPE_MEDIA_ELEMENT_TYPE,
+ PURPLE_MEDIA_ELEMENT_NONE,
+ G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
+
+ g_object_class_install_property(gobject_class, PROP_CREATE_CB,
+ g_param_spec_pointer("create-cb",
+ "Create Callback",
+ "The function called to create this element.",
+ G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
+
+ g_type_class_add_private(klass, sizeof(PurpleMediaElementInfoPrivate));
+}
+
+G_DEFINE_TYPE(PurpleMediaElementInfo,
+ purple_media_element_info, G_TYPE_OBJECT);
+#else
+GType
+purple_media_element_info_get_type()
+{
+ return G_TYPE_NONE;
+}
+#endif
+
+gchar *
+purple_media_element_info_get_id(PurpleMediaElementInfo *info)
+{
+#ifdef USE_VV
+ gchar *id;
+ g_return_val_if_fail(PURPLE_IS_MEDIA_ELEMENT_INFO(info), NULL);
+ g_object_get(info, "id", &id, NULL);
+ return id;
+#else
+ return NULL;
+#endif
+}
+
+gchar *
+purple_media_element_info_get_name(PurpleMediaElementInfo *info)
+{
+#ifdef USE_VV
+ gchar *name;
+ g_return_val_if_fail(PURPLE_IS_MEDIA_ELEMENT_INFO(info), NULL);
+ g_object_get(info, "name", &name, NULL);
+ return name;
+#else
+ return NULL;
+#endif
+}
+
+PurpleMediaElementType
+purple_media_element_info_get_element_type(PurpleMediaElementInfo *info)
+{
+#ifdef USE_VV
+ PurpleMediaElementType type;
+ g_return_val_if_fail(PURPLE_IS_MEDIA_ELEMENT_INFO(info),
+ PURPLE_MEDIA_ELEMENT_NONE);
+ g_object_get(info, "type", &type, NULL);
+ return type;
+#else
+ return PURPLE_MEDIA_ELEMENT_NONE;
+#endif
+}
+
+GstElement *
+purple_media_element_info_call_create(PurpleMediaElementInfo *info,
+ PurpleMedia *media, const gchar *session_id,
+ const gchar *participant)
+{
+#ifdef USE_VV
+ PurpleMediaElementCreateCallback create;
+ g_return_val_if_fail(PURPLE_IS_MEDIA_ELEMENT_INFO(info), NULL);
+ g_object_get(info, "create-cb", &create, NULL);
+ if (create)
+ return create(media, session_id, participant);
+#endif
+ return NULL;
+}
+
+#endif /* USE_GSTREAMER */
+
diff --git a/libpurple/mediamanager.h b/libpurple/mediamanager.h
new file mode 100644
index 0000000000..8fdf06662f
--- /dev/null
+++ b/libpurple/mediamanager.h
@@ -0,0 +1,223 @@
+/**
+ * @file mediamanager.h Media Manager API
+ * @ingroup core
+ */
+
+/* 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 _PURPLE_MEDIA_MANAGER_H_
+#define _PURPLE_MEDIA_MANAGER_H_
+
+#include <glib.h>
+#include <glib-object.h>
+
+/** @copydoc _PurpleMediaManager */
+typedef struct _PurpleMediaManager PurpleMediaManager;
+/** @copydoc _PurpleMediaManagerClass */
+typedef struct _PurpleMediaManagerClass PurpleMediaManagerClass;
+
+#include "account.h"
+#include "media.h"
+
+G_BEGIN_DECLS
+
+#define PURPLE_TYPE_MEDIA_MANAGER (purple_media_manager_get_type())
+#define PURPLE_MEDIA_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PURPLE_TYPE_MEDIA_MANAGER, PurpleMediaManager))
+#define PURPLE_MEDIA_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), PURPLE_TYPE_MEDIA_MANAGER, PurpleMediaManagerClass))
+#define PURPLE_IS_MEDIA_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), PURPLE_TYPE_MEDIA_MANAGER))
+#define PURPLE_IS_MEDIA_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), PURPLE_TYPE_MEDIA_MANAGER))
+#define PURPLE_MEDIA_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), PURPLE_TYPE_MEDIA_MANAGER, PurpleMediaManagerClass))
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**************************************************************************/
+/** @name Media Manager API */
+/**************************************************************************/
+/*@{*/
+
+/**
+ * Gets the media manager's GType.
+ *
+ * @return The media manager's GType.
+ *
+ * @since 2.6.0
+ */
+GType purple_media_manager_get_type(void);
+
+/**
+ * Gets the "global" media manager object. It's created if it doesn't already exist.
+ *
+ * @return The "global" instance of the media manager object.
+ *
+ * @since 2.6.0
+ */
+PurpleMediaManager *purple_media_manager_get(void);
+
+/**
+ * Creates a media session.
+ *
+ * @param manager The media manager to create the session under.
+ * @param account The account to create the session on.
+ * @param conference_type The conference type to feed into Farsight2.
+ * @param remote_user The remote user to initiate the session with.
+ *
+ * @return A newly created media session.
+ *
+ * @since 2.6.0
+ */
+PurpleMedia *purple_media_manager_create_media(PurpleMediaManager *manager,
+ PurpleAccount *account,
+ const char *conference_type,
+ const char *remote_user,
+ gboolean initiator);
+
+/**
+ * Gets all of the media sessions.
+ *
+ * @param manager The media manager to get all of the sessions from.
+ *
+ * @return A list of all the media sessions.
+ *
+ * @since 2.6.0
+ */
+GList *purple_media_manager_get_media(PurpleMediaManager *manager);
+
+/**
+ * Gets all of the media sessions for a given account.
+ *
+ * @param manager The media manager to get the sessions from.
+ * @param account The account the sessions are on.
+ *
+ * @return A list of the media sessions on the given account.
+ *
+ * @since 2.6.0
+ */
+GList *purple_media_manager_get_media_by_account(
+ PurpleMediaManager *manager, PurpleAccount *account);
+
+/**
+ * Removes a media session from the media manager.
+ *
+ * @param manager The media manager to remove the media session from.
+ * @param media The media session to remove.
+ *
+ * @since 2.6.0
+ */
+void
+purple_media_manager_remove_media(PurpleMediaManager *manager,
+ PurpleMedia *media);
+
+/**
+ * Signals that output windows should be created for the chosen stream.
+ *
+ * This shouldn't be called outside of mediamanager.c and media.c
+ *
+ * @param manager Manager the output windows are registered with.
+ * @param media Media session the output windows are registered for.
+ * @param session_id The session the output windows are registered with.
+ * @param participant The participant the output windows are registered with.
+ *
+ * @return TRUE if it succeeded, FALSE if it failed.
+ *
+ * @since 2.6.0
+ */
+gboolean purple_media_manager_create_output_window(
+ PurpleMediaManager *manager, PurpleMedia *media,
+ const gchar *session_id, const gchar *participant);
+
+/**
+ * Registers a video output window to be created for a given stream.
+ *
+ * @param manager The manager to register the output window with.
+ * @param media The media instance to find the stream in.
+ * @param session_id The session the stream is associated with.
+ * @param participant The participant the stream is associated with.
+ * @param window_id The window ID to embed the video in.
+ *
+ * @return A unique ID to the registered output window, 0 if it failed.
+ *
+ * @since 2.6.0
+ */
+gulong purple_media_manager_set_output_window(PurpleMediaManager *manager,
+ PurpleMedia *media, const gchar *session_id,
+ const gchar *participant, gulong window_id);
+
+/**
+ * Remove a previously registerd output window.
+ *
+ * @param manager The manager the output window was registered with.
+ * @param output_window_id The ID of the output window.
+ *
+ * @return TRUE if it found the output window and was successful, else FALSE.
+ *
+ * @since 2.6.0
+ */
+gboolean purple_media_manager_remove_output_window(
+ PurpleMediaManager *manager, gulong output_window_id);
+
+/**
+ * Remove all output windows for a given conference/session/participant/stream.
+ *
+ * @param manager The manager the output windows were registered with.
+ * @param media The media instance the output windows were registered for.
+ * @param session_id The session the output windows were registered for.
+ * @param participant The participant the output windows were registered for.
+ *
+ * @since 2.6.0
+ */
+void purple_media_manager_remove_output_windows(
+ PurpleMediaManager *manager, PurpleMedia *media,
+ const gchar *session_id, const gchar *participant);
+
+/**
+ * Sets which media caps the UI supports.
+ *
+ * @param manager The manager to set the caps on.
+ * @param caps The caps to set.
+ *
+ * @since 2.6.0
+ */
+void purple_media_manager_set_ui_caps(PurpleMediaManager *manager,
+ PurpleMediaCaps caps);
+
+/**
+ * Gets which media caps the UI supports.
+ *
+ * @param manager The manager to get caps from.
+ *
+ * @return caps The caps retrieved.
+ *
+ * @since 2.6.0
+ */
+PurpleMediaCaps purple_media_manager_get_ui_caps(PurpleMediaManager *manager);
+
+/*}@*/
+
+#ifdef __cplusplus
+}
+#endif
+
+G_END_DECLS
+
+#endif /* _PURPLE_MEDIA_MANAGER_H_ */
diff --git a/libpurple/mime.c b/libpurple/mime.c
index ed4840e5e5..46d0929284 100644
--- a/libpurple/mime.c
+++ b/libpurple/mime.c
@@ -25,9 +25,6 @@
#include <string.h>
#include <glib.h>
-#include <glib/ghash.h>
-#include <glib/glist.h>
-#include <glib/gstring.h>
#include "internal.h"
@@ -406,7 +403,7 @@ doc_parts_load(PurpleMimeDocument *doc, const char *boundary, const char *buf, g
char *b = (char *) buf;
gsize n = len;
- const char *bnd;
+ char *bnd;
gsize bl;
bnd = g_strdup_printf("--%s", boundary);
diff --git a/libpurple/mime.h b/libpurple/mime.h
index fd4f43c62c..b568a49288 100644
--- a/libpurple/mime.h
+++ b/libpurple/mime.h
@@ -25,7 +25,6 @@
#define _PURPLE_MIME_H
#include <glib.h>
-#include <glib/glist.h>
#ifdef __cplusplus
extern "C" {
diff --git a/libpurple/nat-pmp.c b/libpurple/nat-pmp.c
index a3717fbbec..f58ae526e8 100644
--- a/libpurple/nat-pmp.c
+++ b/libpurple/nat-pmp.c
@@ -126,7 +126,7 @@ get_rtaddrs(int bitmask, struct sockaddr *sa, struct sockaddr *addrs[])
for (i = 0; i < RTAX_MAX; i++)
{
- if (bitmask & (1 << i))
+ if (bitmask & (1 << i))
{
addrs[i] = sa;
#ifdef HAVE_STRUCT_SOCKADDR_SA_LEN
@@ -139,7 +139,7 @@ get_rtaddrs(int bitmask, struct sockaddr *sa, struct sockaddr *addrs[])
sa = (struct sockaddr*)(sizeof(struct sockaddr_in6) + (char *)sa);
#endif
#endif
- }
+ }
else
{
addrs[i] = NULL;
@@ -192,7 +192,7 @@ default_gw()
mib[5] = 0;
/* Determine the buffer side needed to get the full routing table */
- if (sysctl(mib, 6, NULL, &needed, NULL, 0) < 0)
+ if (sysctl(mib, 6, NULL, &needed, NULL, 0) < 0)
{
purple_debug_warning("nat-pmp", "sysctl: net.route.0.0.dump estimate\n");
return NULL;
@@ -200,12 +200,12 @@ default_gw()
if (!(buf = malloc(needed)))
{
- purple_debug_warning("nat-pmp", "Failed to malloc %i\n", needed);
+ purple_debug_warning("nat-pmp", "Failed to malloc %" G_GSIZE_FORMAT "\n", needed);
return NULL;
}
/* Read the routing table into buf */
- if (sysctl(mib, 6, buf, &needed, NULL, 0) < 0)
+ if (sysctl(mib, 6, buf, &needed, NULL, 0) < 0)
{
purple_debug_warning("nat-pmp", "sysctl: net.route.0.0.dump\n");
return NULL;
@@ -213,12 +213,12 @@ default_gw()
lim = buf + needed;
- for (next = buf; next < lim; next += rtm->rtm_msglen)
+ for (next = buf; next < lim; next += rtm->rtm_msglen)
{
rtm = (struct rt_msghdr *)next;
sa = (struct sockaddr *)(rtm + 1);
-
- if (sa->sa_family == AF_INET)
+
+ if (sa->sa_family == AF_INET)
{
sin = (struct sockaddr_in*) sa;
@@ -240,7 +240,7 @@ default_gw()
memcpy(&mask, rti_info[RTAX_NETMASK], sizeof(mask));
if (rtm->rtm_addrs & RTA_GATEWAY &&
- is_default_route(&addr, &mask))
+ is_default_route(&addr, &mask))
{
if (rti_info[RTAX_GATEWAY]) {
struct sockaddr_in *rti_sin = (struct sockaddr_in *)rti_info[RTAX_GATEWAY];
@@ -263,7 +263,7 @@ default_gw()
}
/*!
- * purple_pmp_get_public_ip() will return the publicly facing IP address of the
+ * purple_pmp_get_public_ip() will return the publicly facing IP address of the
* default NAT gateway. The function will return NULL if:
* - The gateway doesn't support NAT-PMP
* - The gateway errors in some other spectacular fashion
@@ -278,10 +278,10 @@ purple_pmp_get_public_ip()
PurplePmpIpRequest req;
PurplePmpIpResponse resp;
int sendfd;
-
+
if (pmp_info.status == PURPLE_PMP_STATUS_UNABLE_TO_DISCOVER)
return NULL;
-
+
if ((pmp_info.status == PURPLE_PMP_STATUS_DISCOVERED) && (pmp_info.publicip != NULL))
{
#ifdef PMP_DEBUG
@@ -318,7 +318,7 @@ purple_pmp_get_public_ip()
/* The NAT-PMP spec says we should attempt to contact the gateway 9 times, doubling the time we wait each time.
* Even starting with a timeout of 0.1 seconds, that means that we have a total waiting of 204.6 seconds.
* With the recommended timeout of 0.25 seconds, we're talking 511.5 seconds (8.5 minutes).
- *
+ *
* This seems really silly... if this were nonblocking, a couple retries might be in order, but it's not at present.
*/
#ifdef PMP_DEBUG
@@ -327,7 +327,7 @@ purple_pmp_get_public_ip()
#endif
/* TODO: Non-blocking! */
-
+
if (sendto(sendfd, &req, sizeof(req), 0, (struct sockaddr *)(gateway), sizeof(struct sockaddr)) < 0)
{
purple_debug_info("nat-pmp", "There was an error sending the NAT-PMP public IP request! (%s)\n", g_strerror(errno));
@@ -370,7 +370,7 @@ purple_pmp_get_public_ip()
if (!publicsockaddr) {
g_free(gateway);
-
+
pmp_info.status = PURPLE_PMP_STATUS_UNABLE_TO_DISCOVER;
return NULL;
}
@@ -437,7 +437,7 @@ purple_pmp_create_map(PurplePmpType type, unsigned short privateport, unsigned s
/* The NAT-PMP spec says we should attempt to contact the gateway 9 times, doubling the time we wait each time.
* Even starting with a timeout of 0.1 seconds, that means that we have a total waiting of 204.6 seconds.
* With the recommended timeout of 0.25 seconds, we're talking 511.5 seconds (8.5 minutes).
- *
+ *
* This seems really silly... if this were nonblocking, a couple retries might be in order, but it's not at present.
* XXX Make this nonblocking.
* XXX This code looks like the pmp_get_public_ip() code. Can it be consolidated?
diff --git a/libpurple/network.c b/libpurple/network.c
index 508d3c3e13..3bcd996bce 100644
--- a/libpurple/network.c
+++ b/libpurple/network.c
@@ -48,6 +48,7 @@
#include "prefs.h"
#include "stun.h"
#include "upnp.h"
+#include "dnsquery.h"
/*
* Calling sizeof(struct ifreq) isn't always correct on
@@ -96,6 +97,18 @@ struct _PurpleNetworkListenData {
static NMState nm_get_network_state(void);
#endif
+#if defined(HAVE_NETWORKMANAGER) || defined(_WIN32)
+static gboolean force_online;
+#endif
+
+/* Cached IP addresses for STUN and TURN servers (set globally in prefs) */
+static gchar *stun_ip = NULL;
+static gchar *turn_ip = NULL;
+
+/* Keep track of port mappings done with UPnP and NAT-PMP */
+static GHashTable *upnp_port_mappings = NULL;
+static GHashTable *nat_pmp_port_mappings = NULL;
+
const unsigned char *
purple_network_ip_atoi(const char *ip)
{
@@ -248,6 +261,15 @@ purple_network_set_upnp_port_mapping_cb(gboolean success, gpointer data)
return;
}
+ if (success) {
+ /* add port mapping to hash table */
+ gint *key = g_new(gint, 1);
+ gint *value = g_new(gint, 1);
+ *key = purple_network_get_port_from_fd(listen_data->listenfd);
+ *value = listen_data->socket_type;
+ g_hash_table_insert(upnp_port_mappings, key, value);
+ }
+
if (listen_data->cb)
listen_data->cb(listen_data->listenfd, listen_data->cb_data);
@@ -261,9 +283,16 @@ static gboolean
purple_network_finish_pmp_map_cb(gpointer data)
{
PurpleNetworkListenData *listen_data;
+ gint *key = g_new(gint, 1);
+ gint *value = g_new(gint, 1);
listen_data = data;
+ /* add port mapping to hash table */
+ *key = purple_network_get_port_from_fd(listen_data->listenfd);
+ *value = listen_data->socket_type;
+ g_hash_table_insert(nat_pmp_port_mappings, key, value);
+
if (listen_data->cb)
listen_data->cb(listen_data->listenfd, listen_data->cb_data);
@@ -294,7 +323,7 @@ purple_network_do_listen(unsigned short port, int socket_type, PurpleNetworkList
/*
* Get a list of addresses on this machine.
*/
- snprintf(serv, sizeof(serv), "%hu", port);
+ g_snprintf(serv, sizeof(serv), "%hu", port);
memset(&hints, 0, sizeof(struct addrinfo));
hints.ai_flags = AI_PASSIVE;
hints.ai_family = AF_UNSPEC;
@@ -671,6 +700,9 @@ gboolean
purple_network_is_available(void)
{
#ifdef HAVE_NETWORKMANAGER
+ if (force_online)
+ return TRUE;
+
if (!have_nm_state)
{
have_nm_state = TRUE;
@@ -685,12 +717,20 @@ purple_network_is_available(void)
return FALSE;
#elif defined _WIN32
- return (current_network_count > 0);
+ return (current_network_count > 0 || force_online);
#else
return TRUE;
#endif
}
+void
+purple_network_force_online()
+{
+#if defined(HAVE_NETWORKMANAGER) || defined(_WIN32)
+ force_online = TRUE;
+#endif
+}
+
#ifdef HAVE_NETWORKMANAGER
static void
nm_update_state(NMState state)
@@ -708,6 +748,14 @@ nm_update_state(NMState state)
case NM_STATE_CONNECTED:
/* Call res_init in case DNS servers have changed */
res_init();
+ /* update STUN IP in case we it changed (theoretically we could
+ have gone from IPv4 to IPv6, f.ex. or we were previously
+ offline */
+ purple_network_set_stun_server(
+ purple_prefs_get_string("/purple/network/stun_server"));
+ purple_network_set_turn_server(
+ purple_prefs_get_string("/purple/network/turn_server"));
+
if (ui_ops != NULL && ui_ops->network_connected != NULL)
ui_ops->network_connected();
break;
@@ -769,6 +817,93 @@ nm_dbus_name_owner_changed_cb(DBusGProxy *proxy, char *service, char *old_owner,
#endif
+static void
+purple_network_ip_lookup_cb(GSList *hosts, gpointer data,
+ const char *error_message)
+{
+ const gchar **ip = (const gchar **) data;
+
+ if (error_message) {
+ purple_debug_error("network", "lookup of IP address failed: %s\n",
+ error_message);
+ g_slist_free(hosts);
+ return;
+ }
+
+ if (hosts && g_slist_next(hosts)) {
+ struct sockaddr *addr = g_slist_next(hosts)->data;
+ char dst[INET6_ADDRSTRLEN];
+
+ if (addr->sa_family == AF_INET6) {
+ inet_ntop(addr->sa_family, &((struct sockaddr_in6 *) addr)->sin6_addr,
+ dst, sizeof(dst));
+ } else {
+ inet_ntop(addr->sa_family, &((struct sockaddr_in *) addr)->sin_addr,
+ dst, sizeof(dst));
+ }
+
+ *ip = g_strdup(dst);
+ purple_debug_info("network", "set IP address: %s\n", *ip);
+ }
+
+ while (hosts != NULL) {
+ hosts = g_slist_delete_link(hosts, hosts);
+ /* Free the address */
+ g_free(hosts->data);
+ hosts = g_slist_delete_link(hosts, hosts);
+ }
+}
+
+void
+purple_network_set_stun_server(const gchar *stun_server)
+{
+ if (stun_server && stun_server[0] != '\0') {
+ if (purple_network_is_available()) {
+ purple_debug_info("network", "running DNS query for STUN server\n");
+ purple_dnsquery_a(stun_server, 3478, purple_network_ip_lookup_cb,
+ &stun_ip);
+ } else {
+ purple_debug_info("network",
+ "network is unavailable, don't try to update STUN IP");
+ }
+ } else if (stun_ip) {
+ g_free(stun_ip);
+ stun_ip = NULL;
+ }
+}
+
+void
+purple_network_set_turn_server(const gchar *turn_server)
+{
+ if (turn_server && turn_server[0] != '\0') {
+ if (purple_network_is_available()) {
+ purple_debug_info("network", "running DNS query for TURN server\n");
+ purple_dnsquery_a(turn_server,
+ purple_prefs_get_int("/purple/network/turn_port"),
+ purple_network_ip_lookup_cb, &turn_ip);
+ } else {
+ purple_debug_info("network",
+ "network is unavailable, don't try to update TURN IP");
+ }
+ } else if (turn_ip) {
+ g_free(turn_ip);
+ turn_ip = NULL;
+ }
+}
+
+
+const gchar *
+purple_network_get_stun_ip(void)
+{
+ return stun_ip;
+}
+
+const gchar *
+purple_network_get_turn_ip(void)
+{
+ return turn_ip;
+}
+
void *
purple_network_get_handle(void)
{
@@ -777,6 +912,61 @@ purple_network_get_handle(void)
return &handle;
}
+static void
+purple_network_upnp_mapping_remove_cb(gboolean sucess, gpointer data)
+{
+ purple_debug_info("network", "done removing UPnP port mapping\n");
+}
+
+/* the reason for these functions to have these signatures is to be able to
+ use them for g_hash_table_foreach to clean remaining port mappings, which is
+ not yet done */
+static void
+purple_network_upnp_mapping_remove(gpointer key, gpointer value,
+ gpointer user_data)
+{
+ gint port = (gint) *((gint *) key);
+ gint protocol = (gint) *((gint *) value);
+ purple_debug_info("network", "removing UPnP port mapping for port %d\n",
+ port);
+ purple_upnp_remove_port_mapping(port,
+ protocol == SOCK_STREAM ? "TCP" : "UDP",
+ purple_network_upnp_mapping_remove_cb, NULL);
+ g_hash_table_remove(upnp_port_mappings, key);
+}
+
+static void
+purple_network_nat_pmp_mapping_remove(gpointer key, gpointer value,
+ gpointer user_data)
+{
+ gint port = (gint) *((gint *) key);
+ gint protocol = (gint) *((gint *) value);
+ purple_debug_info("network", "removing NAT-PMP port mapping for port %d\n",
+ port);
+ purple_pmp_destroy_map(
+ protocol == SOCK_STREAM ? PURPLE_PMP_TYPE_TCP : PURPLE_PMP_TYPE_UDP,
+ port);
+ g_hash_table_remove(nat_pmp_port_mappings, key);
+}
+
+void
+purple_network_remove_port_mapping(gint fd)
+{
+ int port = purple_network_get_port_from_fd(fd);
+ gint *protocol = g_hash_table_lookup(upnp_port_mappings, &port);
+
+ if (protocol) {
+ purple_network_upnp_mapping_remove(&port, protocol, NULL);
+ g_hash_table_remove(upnp_port_mappings, protocol);
+ } else {
+ protocol = g_hash_table_lookup(nat_pmp_port_mappings, &port);
+ if (protocol) {
+ purple_network_nat_pmp_mapping_remove(&port, protocol, NULL);
+ g_hash_table_remove(nat_pmp_port_mappings, protocol);
+ }
+ }
+}
+
void
purple_network_init(void)
{
@@ -801,6 +991,11 @@ purple_network_init(void)
#endif
purple_prefs_add_none ("/purple/network");
+ purple_prefs_add_string("/purple/network/stun_server", "");
+ purple_prefs_add_string("/purple/network/turn_server", "");
+ purple_prefs_add_int ("/purple/network/turn_port", 3478);
+ purple_prefs_add_string("/purple/network/turn_username", "");
+ purple_prefs_add_string("/purple/network/turn_password", "");
purple_prefs_add_bool ("/purple/network/auto_ip", TRUE);
purple_prefs_add_string("/purple/network/public_ip", "");
purple_prefs_add_bool ("/purple/network/map_ports", TRUE);
@@ -839,8 +1034,20 @@ purple_network_init(void)
purple_pmp_init();
purple_upnp_init();
+
+ purple_network_set_stun_server(
+ purple_prefs_get_string("/purple/network/stun_server"));
+ purple_network_set_turn_server(
+ purple_prefs_get_string("/purple/network/turn_server"));
+
+ upnp_port_mappings =
+ g_hash_table_new_full(g_int_hash, g_int_equal, g_free, g_free);
+ nat_pmp_port_mappings =
+ g_hash_table_new_full(g_int_hash, g_int_equal, g_free, g_free);
}
+
+
void
purple_network_uninit(void)
{
@@ -880,4 +1087,13 @@ purple_network_uninit(void)
#endif
purple_signal_unregister(purple_network_get_handle(),
"network-configuration-changed");
+
+ if (stun_ip)
+ g_free(stun_ip);
+
+ g_hash_table_destroy(upnp_port_mappings);
+ g_hash_table_destroy(nat_pmp_port_mappings);
+
+ /* TODO: clean up remaining port mappings, note calling
+ purple_upnp_remove_port_mapping from here doesn't quite work... */
}
diff --git a/libpurple/network.h b/libpurple/network.h
index 0ff97c98a9..47f059f154 100644
--- a/libpurple/network.h
+++ b/libpurple/network.h
@@ -208,12 +208,65 @@ unsigned short purple_network_get_port_from_fd(int fd);
gboolean purple_network_is_available(void);
/**
+ * Makes purple_network_is_available() always return @c TRUE.
+ *
+ * This is what backs the --force-online command line argument in Pidgin,
+ * for example. This is useful for offline testing, especially when
+ * combined with nullprpl.
+ *
+ * @since 2.6.0
+ */
+void purple_network_force_online(void);
+
+/**
* Get the handle for the network system
*
* @return the handle to the network system
*/
void *purple_network_get_handle(void);
+/**
+ * Update the STUN server IP given the host name
+ * Will result in a DNS query being executed asynchronous
+ *
+ * @param stun_server The host name of the STUN server to set
+ * @since 2.6.0
+ */
+void purple_network_set_stun_server(const gchar *stun_server);
+
+/**
+ * Get the IP address of the STUN server as a string representation
+ *
+ * @return the IP address
+ * @since 2.6.0
+ */
+const gchar *purple_network_get_stun_ip(void);
+
+/**
+ * Update the TURN server IP given the host name
+ * Will result in a DNS query being executed asynchronous
+ *
+ * @param stun_server The host name of the STUN server to set
+ * @since 2.6.0
+ */
+void purple_network_set_turn_server(const gchar *stun_server);
+
+/**
+ * Get the IP address of the STUN server as a string representation
+ *
+ * @return the IP address
+ * @since 2.6.0
+ */
+const gchar *purple_network_get_turn_ip(void);
+
+/**
+ * Remove a port mapping (UPnP or NAT-PMP) associated with listening socket
+ *
+ * @param fd Socket to remove the port mapping for
+ * @since 2.6.0
+ */
+void purple_network_remove_port_mapping(gint fd);
+
/**
* Initializes the network subsystem.
*/
diff --git a/libpurple/notify.c b/libpurple/notify.c
index 2b51d9f4f2..349521f764 100644
--- a/libpurple/notify.c
+++ b/libpurple/notify.c
@@ -444,7 +444,7 @@ PurpleNotifyUserInfoEntry *
purple_notify_user_info_entry_new(const char *label, const char *value)
{
PurpleNotifyUserInfoEntry *user_info_entry;
-
+
user_info_entry = g_new0(PurpleNotifyUserInfoEntry, 1);
PURPLE_DBUS_REGISTER_POINTER(user_info_entry, PurpleNotifyUserInfoEntry);
user_info_entry->label = g_strdup(label);
@@ -458,7 +458,7 @@ static void
purple_notify_user_info_entry_destroy(PurpleNotifyUserInfoEntry *user_info_entry)
{
g_return_if_fail(user_info_entry != NULL);
-
+
g_free(user_info_entry->label);
g_free(user_info_entry->value);
PURPLE_DBUS_UNREGISTER_POINTER(user_info_entry);
@@ -469,11 +469,11 @@ PurpleNotifyUserInfo *
purple_notify_user_info_new()
{
PurpleNotifyUserInfo *user_info;
-
+
user_info = g_new0(PurpleNotifyUserInfo, 1);
PURPLE_DBUS_REGISTER_POINTER(user_info, PurpleNotifyUserInfo);
user_info->user_info_entries = NULL;
-
+
return user_info;
}
@@ -484,10 +484,10 @@ purple_notify_user_info_destroy(PurpleNotifyUserInfo *user_info)
for (l = user_info->user_info_entries; l != NULL; l = l->next) {
PurpleNotifyUserInfoEntry *user_info_entry = l->data;
-
+
purple_notify_user_info_entry_destroy(user_info_entry);
}
-
+
g_list_free(user_info->user_info_entries);
PURPLE_DBUS_UNREGISTER_POINTER(user_info);
g_free(user_info);
@@ -506,7 +506,7 @@ purple_notify_user_info_get_text_with_newline(PurpleNotifyUserInfo *user_info, c
{
GList *l;
GString *text;
-
+
text = g_string_new("");
for (l = user_info->user_info_entries; l != NULL; l = l->next) {
@@ -532,7 +532,7 @@ purple_notify_user_info_get_text_with_newline(PurpleNotifyUserInfo *user_info, c
if ((user_info_entry->type != PURPLE_NOTIFY_USER_INFO_ENTRY_SECTION_BREAK) &&
(l->next && ((((PurpleNotifyUserInfoEntry *)(l->next->data))->type != PURPLE_NOTIFY_USER_INFO_ENTRY_SECTION_BREAK))))
g_string_append(text, newline);
-
+
/* Add an extra newline after a section header */
if (user_info_entry->type == PURPLE_NOTIFY_USER_INFO_ENTRY_SECTION_HEADER)
g_string_append(text, newline);
@@ -563,7 +563,7 @@ const gchar *
purple_notify_user_info_entry_get_value(PurpleNotifyUserInfoEntry *user_info_entry)
{
g_return_val_if_fail(user_info_entry != NULL, NULL);
-
+
return user_info_entry->value;
}
@@ -596,7 +596,7 @@ void
purple_notify_user_info_add_pair(PurpleNotifyUserInfo *user_info, const char *label, const char *value)
{
PurpleNotifyUserInfoEntry *entry;
-
+
entry = purple_notify_user_info_entry_new(label, value);
user_info->user_info_entries = g_list_append(user_info->user_info_entries, entry);
}
@@ -623,7 +623,7 @@ void
purple_notify_user_info_add_section_header(PurpleNotifyUserInfo *user_info, const char *label)
{
PurpleNotifyUserInfoEntry *entry;
-
+
entry = purple_notify_user_info_entry_new(label, NULL);
entry->type = PURPLE_NOTIFY_USER_INFO_ENTRY_SECTION_HEADER;
@@ -634,10 +634,10 @@ void
purple_notify_user_info_prepend_section_header(PurpleNotifyUserInfo *user_info, const char *label)
{
PurpleNotifyUserInfoEntry *entry;
-
+
entry = purple_notify_user_info_entry_new(label, NULL);
entry->type = PURPLE_NOTIFY_USER_INFO_ENTRY_SECTION_HEADER;
-
+
user_info->user_info_entries = g_list_prepend(user_info->user_info_entries, entry);
}
@@ -645,7 +645,7 @@ void
purple_notify_user_info_add_section_break(PurpleNotifyUserInfo *user_info)
{
PurpleNotifyUserInfoEntry *entry;
-
+
entry = purple_notify_user_info_entry_new(NULL, NULL);
entry->type = PURPLE_NOTIFY_USER_INFO_ENTRY_SECTION_BREAK;
@@ -656,10 +656,10 @@ void
purple_notify_user_info_prepend_section_break(PurpleNotifyUserInfo *user_info)
{
PurpleNotifyUserInfoEntry *entry;
-
+
entry = purple_notify_user_info_entry_new(NULL, NULL);
entry->type = PURPLE_NOTIFY_USER_INFO_ENTRY_SECTION_BREAK;
-
+
user_info->user_info_entries = g_list_prepend(user_info->user_info_entries, entry);
}
diff --git a/libpurple/notify.h b/libpurple/notify.h
index 3e65a11ea8..ed770dd425 100644
--- a/libpurple/notify.h
+++ b/libpurple/notify.h
@@ -291,6 +291,7 @@ void purple_notify_searchresults_column_add(PurpleNotifySearchResults *results,
*/
void purple_notify_searchresults_row_add(PurpleNotifySearchResults *results,
GList *row);
+
#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_NOTIFY_C_)
/**
* Returns a number of the rows in the search results object.
@@ -426,7 +427,9 @@ void *purple_notify_email(void *handle, const char *subject,
* Displays a notification for multiple emails to the user.
*
* @param handle The plugin or connection handle.
- * @param count The number of emails.
+ * @param count The number of emails. '0' can be used to signify that
+ * the user has no unread emails and the UI should remove
+ * the mail notification.
* @param detailed @c TRUE if there is information for each email in the
* arrays.
* @param subjects The array of subjects.
@@ -558,14 +561,21 @@ void purple_notify_user_info_add_pair(PurpleNotifyUserInfo *user_info, const cha
*/
void purple_notify_user_info_prepend_pair(PurpleNotifyUserInfo *user_info, const char *label, const char *value);
+#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_NOTIFY_C_)
/**
* Remove a PurpleNotifyUserInfoEntry from a PurpleNotifyUserInfo object
* without freeing the entry.
*
* @param user_info The PurpleNotifyUserInfo
* @param user_info_entry The PurpleNotifyUserInfoEntry
+ *
+ * @deprecated Nothing is using this function and it should be removed
+ * in 3.0.0. Or, if we decide we want to keep it in 3.0.0
+ * then we should make purple_notify_user_info_entry_destroy
+ * public so that entries can be free'd after they're removed.
*/
void purple_notify_user_info_remove_entry(PurpleNotifyUserInfo *user_info, PurpleNotifyUserInfoEntry *user_info_entry);
+#endif
/**
* Create a new PurpleNotifyUserInfoEntry
diff --git a/libpurple/ntlm.c b/libpurple/ntlm.c
index b7d3757e44..d551d02d2f 100644
--- a/libpurple/ntlm.c
+++ b/libpurple/ntlm.c
@@ -41,12 +41,12 @@ struct type1_message {
guint32 type; /* 0x00000001 */
guint32 flags; /* 0x0000b203 */
- short dom_len1; /* domain string length */
- short dom_len2; /* domain string length */
+ guint16 dom_len1; /* domain string length */
+ guint16 dom_len2; /* domain string length */
guint32 dom_off; /* domain string offset */
- short host_len1; /* host string length */
- short host_len2; /* host string length */
+ guint16 host_len1; /* host string length */
+ guint16 host_len2; /* host string length */
guint32 host_off; /* host string offset (always 0x00000020) */
#if 0
@@ -59,47 +59,47 @@ struct type2_message {
guint8 protocol[8]; /* 'N', 'T', 'L', 'M', 'S', 'S', 'P', '\0'*/
guint32 type; /* 0x00000002 */
- short msg_len1; /* target name length */
- short msg_len2; /* target name length */
- guint32 msg_off; /* target name offset (always 0x00000048) */
+ guint32 zero;
+ guint16 msg_len1; /* target name length */
+ guint16 msg_len2; /* target name length */
guint32 flags; /* 0x00008201 */
guint8 nonce[8]; /* nonce */
- guint8 context[8];
+ guint8 context[8];
};
struct type3_message {
guint8 protocol[8]; /* 'N', 'T', 'L', 'M', 'S', 'S', 'P', '\0'*/
guint32 type; /* 0x00000003 */
- short lm_resp_len1; /* LanManager response length (always 0x18)*/
- short lm_resp_len2; /* LanManager response length (always 0x18)*/
+ guint16 lm_resp_len1; /* LanManager response length (always 0x18)*/
+ guint16 lm_resp_len2; /* LanManager response length (always 0x18)*/
guint32 lm_resp_off; /* LanManager response offset */
- short nt_resp_len1; /* NT response length (always 0x18) */
- short nt_resp_len2; /* NT response length (always 0x18) */
+ guint16 nt_resp_len1; /* NT response length (always 0x18) */
+ guint16 nt_resp_len2; /* NT response length (always 0x18) */
guint32 nt_resp_off; /* NT response offset */
- short dom_len1; /* domain string length */
- short dom_len2; /* domain string length */
+ guint16 dom_len1; /* domain string length */
+ guint16 dom_len2; /* domain string length */
guint32 dom_off; /* domain string offset (always 0x00000040) */
- short user_len1; /* username string length */
- short user_len2; /* username string length */
+ guint16 user_len1; /* username string length */
+ guint16 user_len2; /* username string length */
guint32 user_off; /* username string offset */
- short host_len1; /* host string length */
- short host_len2; /* host string length */
+ guint16 host_len1; /* host string length */
+ guint16 host_len2; /* host string length */
guint32 host_off; /* host string offset */
- short sess_len1;
- short sess_len2;
+ guint16 sess_len1;
+ guint16 sess_len2;
guint32 sess_off; /* message length */
guint32 flags; /* 0x00008201 */
/* guint32 flags2; */ /* unknown, used in windows messenger */
- /* guint32 flags3; */
+ /* guint32 flags3; */
#if 0
guint8 dom[*]; /* domain string (unicode UTF-16LE) */
@@ -110,7 +110,6 @@ struct type3_message {
#endif
};
-/* TODO: Will this work on both little-endian and big-endian machines? */
gchar *
purple_ntlm_gen_type1(const gchar *hostname, const gchar *domain)
{
@@ -132,12 +131,12 @@ purple_ntlm_gen_type1(const gchar *hostname, const gchar *domain)
tmsg->protocol[5] = 'S';
tmsg->protocol[6] = 'P';
tmsg->protocol[7] = '\0';
- tmsg->type = 0x00000001;
- tmsg->flags = 0x0000b203;
- tmsg->dom_len1 = tmsg->dom_len2 = domainlen;
- tmsg->dom_off = sizeof(struct type1_message) + hostnamelen;
- tmsg->host_len1 = tmsg->host_len2 = hostnamelen;
- tmsg->host_off = sizeof(struct type1_message);
+ tmsg->type = GUINT32_TO_LE(0x00000001);
+ tmsg->flags = GUINT32_TO_LE(0x0000b203);
+ tmsg->dom_len1 = tmsg->dom_len2 = GUINT16_TO_LE(domainlen);
+ tmsg->dom_off = GUINT32_TO_LE(sizeof(struct type1_message) + hostnamelen);
+ tmsg->host_len1 = tmsg->host_len2 = GUINT16_TO_LE(hostnamelen);
+ tmsg->host_off = GUINT32_TO_LE(sizeof(struct type1_message));
memcpy(msg + tmsg->host_off, hostname, hostnamelen);
memcpy(msg + tmsg->dom_off, domain, domainlen);
@@ -157,7 +156,7 @@ purple_ntlm_parse_type2(const gchar *type2, guint32 *flags)
tmsg = (struct type2_message*)purple_base64_decode(type2, &retlen);
memcpy(nonce, tmsg->nonce, 8);
if (flags != NULL)
- *flags = tmsg->flags;
+ *flags = GUINT16_FROM_LE(tmsg->flags);
g_free(tmsg);
return nonce;
@@ -268,27 +267,27 @@ purple_ntlm_gen_type3(const gchar *username, const gchar *passw, const gchar *ho
tmsg->protocol[4] = 'S';
tmsg->protocol[5] = 'S';
tmsg->protocol[6] = 'P';
- tmsg->type = 0x00000003;
- tmsg->lm_resp_len1 = tmsg->lm_resp_len2 = 0x18;
- tmsg->lm_resp_off = sizeof(struct type3_message) + domainlen + usernamelen + hostnamelen;
- tmsg->nt_resp_len1 = tmsg->nt_resp_len2 = 0x18;
- tmsg->nt_resp_off = sizeof(struct type3_message) + domainlen + usernamelen + hostnamelen + 0x18;
+ tmsg->type = GUINT32_TO_LE(0x00000003);
+ tmsg->lm_resp_len1 = tmsg->lm_resp_len2 = GUINT16_TO_LE(0x18);
+ tmsg->lm_resp_off = GUINT32_TO_LE(sizeof(struct type3_message) + domainlen + usernamelen + hostnamelen);
+ tmsg->nt_resp_len1 = tmsg->nt_resp_len2 = GUINT16_TO_LE(0x18);
+ tmsg->nt_resp_off = GUINT32_TO_LE(sizeof(struct type3_message) + domainlen + usernamelen + hostnamelen + 0x18);
- tmsg->dom_len1 = tmsg->dom_len2 = domainlen;
- tmsg->dom_off = sizeof(struct type3_message);
+ tmsg->dom_len1 = tmsg->dom_len2 = GUINT16_TO_LE(domainlen);
+ tmsg->dom_off = GUINT32_TO_LE(sizeof(struct type3_message));
- tmsg->user_len1 = tmsg->user_len2 = usernamelen;
- tmsg->user_off = sizeof(struct type3_message) + domainlen;
+ tmsg->user_len1 = tmsg->user_len2 = GUINT16_TO_LE(usernamelen);
+ tmsg->user_off = GUINT32_TO_LE(sizeof(struct type3_message) + domainlen);
- tmsg->host_len1 = tmsg->host_len2 = hostnamelen;
- tmsg->host_off = sizeof(struct type3_message) + domainlen + usernamelen;
+ tmsg->host_len1 = tmsg->host_len2 = GUINT16_TO_LE(hostnamelen);
+ tmsg->host_off = GUINT32_TO_LE(sizeof(struct type3_message) + domainlen + usernamelen);
if(flags) {
- tmsg->sess_off = sizeof(struct type3_message) + domainlen + usernamelen + hostnamelen + 0x18 + 0x18;
- tmsg->sess_len1 = tmsg->sess_len2 = 0x0010;
+ tmsg->sess_off = GUINT32_TO_LE(sizeof(struct type3_message) + domainlen + usernamelen + hostnamelen + 0x18 + 0x18);
+ tmsg->sess_len1 = tmsg->sess_len2 = GUINT16_TO_LE(0x0010);
}
- tmsg->flags = 0x00008201;
+ tmsg->flags = GUINT32_TO_LE(0x00008201);
tmp = (char *)tmsg + sizeof(struct type3_message);
@@ -361,7 +360,7 @@ purple_ntlm_gen_type3(const gchar *username, const gchar *passw, const gchar *ho
/* LCS Stuff */
if (flags) {
- tmsg->flags = 0x409082d4;
+ tmsg->flags = GUINT32_TO_LE(0x409082d4);
gensesskey(sesskey, NULL);
memcpy(tmp, sesskey, 0x10);
}
diff --git a/libpurple/ntlm.h b/libpurple/ntlm.h
index e8eb18cbe0..e61a4f5f07 100644
--- a/libpurple/ntlm.h
+++ b/libpurple/ntlm.h
@@ -46,7 +46,7 @@ gchar *purple_ntlm_gen_type1(const gchar *hostname, const gchar *domain);
*
* @param type2 String containing the base64 encoded type2 message
* @param flags If not @c NULL, this will store the flags for the message
- *
+ *
* @return The nonce for use in message type3. This is a statically
* allocated 8 byte binary string.
*/
diff --git a/libpurple/plugin.c b/libpurple/plugin.c
index 738d42f6bc..00e0c99393 100644
--- a/libpurple/plugin.c
+++ b/libpurple/plugin.c
@@ -218,7 +218,7 @@ purple_plugin_probe(const char *filename)
g_free(basename);
if (plugin != NULL)
{
- if (!strcmp(filename, plugin->path))
+ if (purple_strequal(filename, plugin->path))
return plugin;
else if (!purple_plugin_is_unloadable(plugin))
{
@@ -357,7 +357,7 @@ purple_plugin_probe(const char *filename)
return NULL;
}
else if (plugin->info->ui_requirement &&
- strcmp(plugin->info->ui_requirement, purple_core_get_ui()))
+ !purple_strequal(plugin->info->ui_requirement, purple_core_get_ui()))
{
plugin->error = g_strdup_printf(_("You are using %s, but this plugin requires %s."),
purple_core_get_ui(), plugin->info->ui_requirement);
@@ -1201,6 +1201,11 @@ purple_plugins_uninit(void)
purple_signals_disconnect_by_handle(handle);
purple_signals_unregister_by_instance(handle);
+
+ while (search_paths) {
+ g_free(search_paths->data);
+ search_paths = g_list_delete_link(search_paths, search_paths);
+ }
}
/**************************************************************************
@@ -1229,6 +1234,21 @@ purple_plugins_unload_all(void)
}
void
+purple_plugins_unload(PurplePluginType type)
+{
+#ifdef PURPLE_PLUGINS
+ GList *l;
+
+ for (l = plugins; l; l = l->next) {
+ PurplePlugin *plugin = l->data;
+ if (plugin->info->type == type && purple_plugin_is_loaded(plugin))
+ purple_plugin_unload(plugin);
+ }
+
+#endif /* PURPLE_PLUGINS */
+}
+
+void
purple_plugins_destroy_all(void)
{
#ifdef PURPLE_PLUGINS
@@ -1538,7 +1558,7 @@ purple_plugins_find_with_name(const char *name)
for (l = plugins; l != NULL; l = l->next) {
plugin = l->data;
- if (!strcmp(plugin->info->name, name))
+ if (purple_strequal(plugin->info->name, name))
return plugin;
}
@@ -1554,7 +1574,7 @@ purple_plugins_find_with_filename(const char *filename)
for (l = plugins; l != NULL; l = l->next) {
plugin = l->data;
- if (plugin->path != NULL && !strcmp(plugin->path, filename))
+ if (purple_strequal(plugin->path, filename))
return plugin;
}
@@ -1577,7 +1597,7 @@ purple_plugins_find_with_basename(const char *basename)
if (plugin->path != NULL) {
tmp = purple_plugin_get_basename(plugin->path);
- if (!strcmp(tmp, basename))
+ if (purple_strequal(tmp, basename))
{
g_free(tmp);
return plugin;
@@ -1603,7 +1623,7 @@ purple_plugins_find_with_id(const char *id)
{
plugin = l->data;
- if (plugin->info->id != NULL && !strcmp(plugin->info->id, id))
+ if (purple_strequal(plugin->info->id, id))
return plugin;
}
diff --git a/libpurple/plugin.h b/libpurple/plugin.h
index a731a3ba28..0374418dfd 100644
--- a/libpurple/plugin.h
+++ b/libpurple/plugin.h
@@ -29,7 +29,7 @@
#ifndef _PURPLE_PLUGIN_H_
#define _PURPLE_PLUGIN_H_
-#include <glib/glist.h>
+#include <glib.h>
#include <gmodule.h>
#include "signals.h"
#include "value.h"
@@ -105,6 +105,20 @@ struct _PurplePluginInfo
void *ui_info; /**< Used only by UI-specific plugins to build a preference screen with a custom UI */
void *extra_info;
PurplePluginUiInfo *prefs_info; /**< Used by any plugin to display preferences. If #ui_info has been specified, this will be ignored. */
+
+ /**
+ * This callback has a different use depending on whether this
+ * plugin type is PURPLE_PLUGIN_STANDARD or PURPLE_PLUGIN_PROTOCOL.
+ *
+ * If PURPLE_PLUGIN_STANDARD then the list of actions will show up
+ * in the Tools menu, under a submenu with the name of the plugin.
+ * context will be NULL.
+ *
+ * If PURPLE_PLUGIN_PROTOCOL then the list of actions will show up
+ * in the Accounts menu, under a submenu with the name of the
+ * account. context will be set to the PurpleConnection for that
+ * account. This callback will only be called for online accounts.
+ */
GList *(*actions)(PurplePlugin *plugin, gpointer context);
void (*_purple_reserved1)(void);
@@ -188,7 +202,7 @@ struct _PurplePluginAction {
/** NULL for plugin actions menu, set to the PurpleConnection for
account actions menu */
gpointer context;
-
+
gpointer user_data;
};
@@ -363,7 +377,7 @@ const gchar *purple_plugin_get_id(const PurplePlugin *plugin);
* Returns a plugin's name.
*
* @param plugin The plugin.
- *
+ *
* @return THe name of the plugin, or @c NULL.
*/
const gchar *purple_plugin_get_name(const PurplePlugin *plugin);
@@ -503,6 +517,11 @@ void purple_plugins_add_search_path(const char *path);
void purple_plugins_unload_all(void);
/**
+ * Unloads all plugins of a specific type.
+ */
+void purple_plugins_unload(PurplePluginType type);
+
+/**
* Destroys all registered plugins.
*/
void purple_plugins_destroy_all(void);
diff --git a/libpurple/plugins/Makefile.am b/libpurple/plugins/Makefile.am
index 6cb2c8f45e..0a8aa53ddd 100644
--- a/libpurple/plugins/Makefile.am
+++ b/libpurple/plugins/Makefile.am
@@ -36,6 +36,7 @@ log_reader_la_LDFLAGS = -module -avoid-version
newline_la_LDFLAGS = -module -avoid-version
notify_example_la_LDFLAGS = -module -avoid-version
offlinemsg_la_LDFLAGS = -module -avoid-version
+one_time_password_la_LDFLAGS = -module -avoid-version
pluginpref_example_la_LDFLAGS = -module -avoid-version
psychic_la_LDFLAGS = -module -avoid-version
signals_test_la_LDFLAGS = -module -avoid-version
@@ -65,6 +66,7 @@ noinst_LTLIBRARIES = \
debug_example.la \
helloworld.la \
notify_example.la \
+ one_time_password.la \
pluginpref_example.la \
signals_test.la \
simple.la
@@ -81,6 +83,7 @@ log_reader_la_SOURCES = log_reader.c
newline_la_SOURCES = newline.c
notify_example_la_SOURCES = notify_example.c
offlinemsg_la_SOURCES = offlinemsg.c
+one_time_password_la_SOURCES = one_time_password.c
pluginpref_example_la_SOURCES = pluginpref_example.c
psychic_la_SOURCES = psychic.c
signals_test_la_SOURCES = signals-test.c
@@ -97,6 +100,7 @@ log_reader_la_LIBADD = $(GLIB_LIBS)
newline_la_LIBADD = $(GLIB_LIBS)
notify_example_la_LIBADD = $(GLIB_LIBS)
offlinemsg_la_LIBADD = $(GLIB_LIBS)
+one_time_password_la_LIBADD = $(GLIB_LIBS)
pluginpref_example_la_LIBADD = $(GLIB_LIBS)
psychic_la_LIBADD = $(GLIB_LIBS)
signals_test_la_LIBADD = $(GLIB_LIBS)
diff --git a/libpurple/plugins/Makefile.mingw b/libpurple/plugins/Makefile.mingw
index 5dc4d678c7..b3c80a078b 100644
--- a/libpurple/plugins/Makefile.mingw
+++ b/libpurple/plugins/Makefile.mingw
@@ -1,7 +1,7 @@
#
# Makefile.mingw
#
-# Description: Makefile for win32 (mingw) version of LibPurple Plugins
+# Description: Makefile for win32 (mingw) version of libpurple Plugins
#
PIDGIN_TREE_TOP := ../..
diff --git a/libpurple/plugins/autoaccept.c b/libpurple/plugins/autoaccept.c
index e9f04db0b1..4112c34237 100644
--- a/libpurple/plugins/autoaccept.c
+++ b/libpurple/plugins/autoaccept.c
@@ -95,7 +95,7 @@ file_recv_request_cb(PurpleXfer *xfer, gpointer handle)
char *dirname;
account = xfer->account;
- node = (PurpleBlistNode *)purple_find_buddy(account, xfer->who);
+ node = PURPLE_BLIST_NODE(purple_find_buddy(account, xfer->who));
if (!node)
{
diff --git a/libpurple/plugins/mono/loader/debug-glue.c b/libpurple/plugins/mono/loader/debug-glue.c
index 01333521f8..fc07ca2289 100644
--- a/libpurple/plugins/mono/loader/debug-glue.c
+++ b/libpurple/plugins/mono/loader/debug-glue.c
@@ -9,7 +9,7 @@ void purple_debug_glue(int type, MonoString *cat, MonoString *str)
ccat = mono_string_to_utf8(cat);
cstr = mono_string_to_utf8(str);
- purple_debug(type, ccat, cstr);
+ purple_debug(type, ccat, "%s", cstr);
g_free(ccat);
g_free(cstr);
diff --git a/libpurple/plugins/mono/loader/mono.c b/libpurple/plugins/mono/loader/mono.c
index fe28bdd613..1f378e0901 100644
--- a/libpurple/plugins/mono/loader/mono.c
+++ b/libpurple/plugins/mono/loader/mono.c
@@ -39,18 +39,18 @@ static gboolean probe_mono_plugin(PurplePlugin *plugin)
if (!assm) {
return FALSE;
- }
+ }
purple_debug(PURPLE_DEBUG_INFO, "mono", "Probing plugin\n");
if (ml_is_api_dll(mono_assembly_get_image(assm))) {
- purple_debug(PURPLE_DEBUG_INFO, "mono", "Found our PurpleAPI.dll\n");
+ purple_debug_info("mono", "Found our PurpleAPI.dll\n");
+ mono_assembly_close(assm);
return FALSE;
}
- info = g_new0(PurplePluginInfo, 1);
mplug = g_new0(PurpleMonoPlugin, 1);
-
+
mplug->signal_data = NULL;
mplug->assm = assm;
@@ -58,12 +58,16 @@ static gboolean probe_mono_plugin(PurplePlugin *plugin)
mplug->klass = ml_find_plugin_class(mono_assembly_get_image(mplug->assm));
if (!mplug->klass) {
purple_debug(PURPLE_DEBUG_ERROR, "mono", "no plugin class in \'%s\'\n", file);
+ mono_assembly_close(assm);
+ g_free(mplug);
return FALSE;
}
mplug->obj = mono_object_new(ml_get_domain(), mplug->klass);
if (!mplug->obj) {
purple_debug(PURPLE_DEBUG_ERROR, "mono", "obj not valid\n");
+ mono_assembly_close(assm);
+ g_free(mplug);
return FALSE;
}
@@ -85,14 +89,17 @@ static gboolean probe_mono_plugin(PurplePlugin *plugin)
if (!(found_load && found_unload && found_destroy)) {
purple_debug(PURPLE_DEBUG_ERROR, "mono", "did not find the required methods\n");
+ mono_assembly_close(assm);
+ g_free(mplug);
return FALSE;
}
-
+
plugin_info = ml_get_info_prop(mplug->obj);
/* now that the methods are filled out we can populate
the info struct with all the needed info */
+ info = g_new0(PurplePluginInfo, 1);
info->id = ml_get_prop_string(plugin_info, "Id");
info->name = ml_get_prop_string(plugin_info, "Name");
info->version = ml_get_prop_string(plugin_info, "Version");
@@ -109,7 +116,7 @@ static gboolean probe_mono_plugin(PurplePlugin *plugin)
/* this plugin depends on us; duh */
info->dependencies = g_list_append(info->dependencies, MONO_PLUGIN_ID);
mplug->plugin = plugin;
-
+
plugin->info = info;
info->extra_info = mplug;
@@ -238,7 +245,7 @@ static PurplePluginInfo info =
static void init_plugin(PurplePlugin *plugin)
{
ml_init();
-
+
loader_info.exts = g_list_append(loader_info.exts, "dll");
}
diff --git a/libpurple/plugins/one_time_password.c b/libpurple/plugins/one_time_password.c
new file mode 100644
index 0000000000..caf29212a9
--- /dev/null
+++ b/libpurple/plugins/one_time_password.c
@@ -0,0 +1,151 @@
+/*
+ * One Time Password support plugin for libpurple
+ *
+ * Copyright (C) 2009, Daniel Atallah <datallah@pidgin.im>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02111-1301, USA.
+ */
+#include "internal.h"
+#include "debug.h"
+#include "plugin.h"
+#include "version.h"
+#include "account.h"
+#include "accountopt.h"
+
+#define PLUGIN_ID "core-one_time_password"
+#define PREF_NAME PLUGIN_ID "_enabled"
+
+static void
+signed_on_cb(PurpleConnection *conn, void *data)
+{
+ PurpleAccount *account = purple_connection_get_account(conn);
+
+ if (purple_account_get_bool(account, PREF_NAME, FALSE)) {
+ if(purple_account_get_remember_password(account))
+ purple_debug_error("One Time Password",
+ "Unable to enforce one time password for account %s (%s).\n"
+ "Account is set to remember the password.\n",
+ purple_account_get_username(account),
+ purple_account_get_protocol_name(account));
+ else {
+
+ purple_debug_info("One Time Password", "Clearing password for account %s (%s).\n",
+ purple_account_get_username(account),
+ purple_account_get_protocol_name(account));
+
+ purple_account_set_password(account, NULL);
+ /* TODO: Do we need to somehow clear conn->password ? */
+ }
+ }
+}
+
+static gboolean
+plugin_load(PurplePlugin *plugin)
+{
+ PurplePlugin *prpl;
+ PurplePluginProtocolInfo *prpl_info;
+ PurpleAccountOption *option;
+ GList *l;
+
+ /* Register protocol preference. */
+ for (l = purple_plugins_get_protocols(); l != NULL; l = l->next) {
+ prpl = (PurplePlugin *)l->data;
+ prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
+ if (prpl_info != NULL && !(prpl_info->options & OPT_PROTO_NO_PASSWORD)) {
+ option = purple_account_option_bool_new(_("One Time Password"),
+ PREF_NAME, FALSE);
+ prpl_info->protocol_options = g_list_append(prpl_info->protocol_options, option);
+ }
+ }
+
+ /* Register callback. */
+ purple_signal_connect(purple_connections_get_handle(), "signed-on",
+ plugin, PURPLE_CALLBACK(signed_on_cb), NULL);
+
+ return TRUE;
+}
+
+static gboolean
+plugin_unload(PurplePlugin *plugin)
+{
+ PurplePlugin *prpl;
+ PurplePluginProtocolInfo *prpl_info;
+ PurpleAccountOption *option;
+ GList *l, *options;
+
+ /* Remove protocol preference. */
+ for (l = purple_plugins_get_protocols(); l != NULL; l = l->next) {
+ prpl = (PurplePlugin *)l->data;
+ prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
+ if (prpl_info != NULL && !(prpl_info->options & OPT_PROTO_NO_PASSWORD)) {
+ options = prpl_info->protocol_options;
+ while (options != NULL) {
+ option = (PurpleAccountOption *) options->data;
+ if (strcmp(PREF_NAME, purple_account_option_get_setting(option)) == 0) {
+ prpl_info->protocol_options = g_list_delete_link(prpl_info->protocol_options, options);
+ purple_account_option_destroy(option);
+ break;
+ }
+ options = options->next;
+ }
+ }
+ }
+
+ /* Callback will be automagically unregistered */
+
+ return TRUE;
+}
+
+static PurplePluginInfo info =
+{
+ PURPLE_PLUGIN_MAGIC,
+ PURPLE_MAJOR_VERSION,
+ PURPLE_MINOR_VERSION,
+ PURPLE_PLUGIN_STANDARD, /**< type */
+ NULL, /**< ui_requirement */
+ 0, /**< flags */
+ NULL, /**< dependencies */
+ PURPLE_PRIORITY_DEFAULT, /**< priority */
+ PLUGIN_ID, /**< id */
+ N_("One Time Password Support"), /**< name */
+ DISPLAY_VERSION, /**< version */
+ /** summary */
+ N_("Enforce that passwords are used only once."),
+ /** description */
+ N_("Allows you to enforce on a per-account basis that passwords not "
+ "being saved are only used in a single successful connection.\n"
+ "Note: The account password must not be saved for this to work."),
+ "Daniel Atallah <datallah@pidgin.im>", /**< author */
+ PURPLE_WEBSITE, /**< homepage */
+ plugin_load, /**< load */
+ plugin_unload, /**< unload */
+ NULL, /**< destroy */
+ NULL, /**< ui_info */
+ NULL, /**< extra_info */
+ NULL, /**< prefs_info */
+ NULL, /**< actions */
+ NULL, /**< reserved 1 */
+ NULL, /**< reserved 2 */
+ NULL, /**< reserved 3 */
+ NULL /**< reserved 4 */
+};
+
+static void
+init_plugin(PurplePlugin *plugin)
+{
+}
+
+PURPLE_INIT_PLUGIN(one_time_password, init_plugin, info)
diff --git a/libpurple/plugins/perl/common/BuddyList.xs b/libpurple/plugins/perl/common/BuddyList.xs
index 5acb72af21..0f68d872a7 100644
--- a/libpurple/plugins/perl/common/BuddyList.xs
+++ b/libpurple/plugins/perl/common/BuddyList.xs
@@ -363,9 +363,9 @@ MODULE = Purple::BuddyList PACKAGE = Purple::BuddyList::Buddy PREFIX = purple_
PROTOTYPES: ENABLE
Purple::BuddyList::Buddy
-purple_buddy_new(account, screenname, alias)
+purple_buddy_new(account, name, alias)
Purple::Account account
- const char *screenname
+ const char *name
const char *alias
const char *
diff --git a/libpurple/plugins/perl/common/Certificate.xs b/libpurple/plugins/perl/common/Certificate.xs
index 558fe25e8a..02888722ec 100644
--- a/libpurple/plugins/perl/common/Certificate.xs
+++ b/libpurple/plugins/perl/common/Certificate.xs
@@ -214,7 +214,7 @@ purple_certificate_get_fingerprint_sha1(crt)
GByteArray *gba = NULL;
CODE:
gba = purple_certificate_get_fingerprint_sha1(crt);
- RETVAL = newSVpv(gba->data, gba->len);
+ RETVAL = newSVpv((gchar *)gba->data, gba->len);
g_byte_array_free(gba, TRUE);
OUTPUT:
RETVAL
diff --git a/libpurple/plugins/perl/common/Cipher.xs b/libpurple/plugins/perl/common/Cipher.xs
index 3a62dcae7f..558e3f3474 100644
--- a/libpurple/plugins/perl/common/Cipher.xs
+++ b/libpurple/plugins/perl/common/Cipher.xs
@@ -66,9 +66,9 @@ purple_cipher_digest_region(name, data_sv, in_len, digest)
guchar *data = NULL;
size_t data_len;
CODE:
- data = SvPV(data_sv, data_len);
+ data = (guchar *)SvPV(data_sv, data_len);
SvUPGRADE(digest, SVt_PV);
- buff = SvGROW(digest, in_len);
+ buff = (guchar *)SvGROW(digest, in_len);
ret = purple_cipher_digest_region(name, data, data_len, in_len, buff, &RETVAL);
if(!ret) {
SvSetSV_nosteal(digest, &PL_sv_undef);
@@ -181,7 +181,7 @@ purple_cipher_context_digest(context, in_len, digest)
guchar *buff = NULL;
CODE:
SvUPGRADE(digest, SVt_PV);
- buff = SvGROW(digest, in_len);
+ buff = (guchar *)SvGROW(digest, in_len);
ret = purple_cipher_context_digest(context, in_len, buff, &RETVAL);
if(!ret) {
SvSetSV_nosteal(digest, &PL_sv_undef);
@@ -225,9 +225,9 @@ purple_cipher_context_encrypt(context, data_sv, output, OUTLIST size_t outlen)
guchar *buff = NULL;
guchar *data = NULL;
CODE:
- data = SvPV(data_sv, datalen);
+ data = (guchar *)SvPV(data_sv, datalen);
SvUPGRADE(output, SVt_PV);
- buff = SvGROW(output, datalen);
+ buff = (guchar *)SvGROW(output, datalen);
RETVAL = purple_cipher_context_encrypt(context, data, datalen, buff, &outlen);
if(outlen != 0) {
SvPOK_only(output);
@@ -249,9 +249,9 @@ purple_cipher_context_decrypt(context, data_sv, output, OUTLIST size_t outlen)
guchar *buff = NULL;
guchar *data = NULL;
CODE:
- data = SvPV(data_sv, datalen);
+ data = (guchar *)SvPV(data_sv, datalen);
SvUPGRADE(output, SVt_PV);
- buff = SvGROW(output, datalen);
+ buff = (guchar *)SvGROW(output, datalen);
RETVAL = purple_cipher_context_decrypt(context, data, datalen, buff, &outlen);
if(outlen != 0) {
SvPOK_only(output);
diff --git a/libpurple/plugins/perl/common/Request.xs b/libpurple/plugins/perl/common/Request.xs
index 03ef5bfae6..3ba745c2fc 100644
--- a/libpurple/plugins/perl/common/Request.xs
+++ b/libpurple/plugins/perl/common/Request.xs
@@ -211,10 +211,11 @@ MODULE = Purple::Request PACKAGE = Purple::Request::Field PREFIX = purple_requ
PROTOTYPES: ENABLE
Purple::Request::Field
-purple_request_field_account_new(id, text, account = NULL)
+purple_request_field_account_new(class, id, text, account = NULL)
const char *id
const char *text
Purple::Account account
+ C_ARGS: id, text, account
Purple::Account
purple_request_field_account_get_default_value(field)
@@ -255,10 +256,11 @@ MODULE = Purple::Request PACKAGE = Purple::Request::Field PREFIX = purple_requ
PROTOTYPES: ENABLE
Purple::Request::Field
-purple_request_field_bool_new(id, text, default_value = TRUE)
+purple_request_field_bool_new(class, id, text, default_value = TRUE)
const char *id
const char *text
gboolean default_value
+ C_ARGS: id, text, default_value
gboolean
purple_request_field_bool_get_default_value(field)
@@ -282,10 +284,11 @@ MODULE = Purple::Request PACKAGE = Purple::Request::Field PREFIX = purple_requ
PROTOTYPES: ENABLE
Purple::Request::Field
-purple_request_field_choice_new(id, text, default_value = 0)
+purple_request_field_choice_new(class, id, text, default_value = 0)
const char *id
const char *text
int default_value
+ C_ARGS: id, text, default_value
void
purple_request_field_choice_add(field, label)
@@ -324,10 +327,11 @@ MODULE = Purple::Request PACKAGE = Purple::Request::Field PREFIX = purple_requ
PROTOTYPES: ENABLE
Purple::Request::Field
-purple_request_field_int_new(id, text, default_value = 0)
+purple_request_field_int_new(clas, id, text, default_value = 0)
const char *id
const char *text
int default_value
+ C_ARGS: id, text, default_value
int
purple_request_field_int_get_default_value(field)
@@ -355,17 +359,19 @@ MODULE = Purple::Request PACKAGE = Purple::Request::Field PREFIX = purple_requ
PROTOTYPES: ENABLE
Purple::Request::Field
-purple_request_field_label_new(id, text)
+purple_request_field_label_new(class, id, text)
const char *id
const char *text
+ C_ARGS: id, text
MODULE = Purple::Request PACKAGE = Purple::Request::Field PREFIX = purple_request_field_
PROTOTYPES: ENABLE
Purple::Request::Field
-purple_request_field_list_new(id, text)
+purple_request_field_list_new(class, id, text)
const char *id
const char *text
+ C_ARGS: id, text
void
purple_request_field_list_add(field, item, data)
@@ -425,10 +431,11 @@ MODULE = Purple::Request PACKAGE = Purple::Request::Field PREFIX = purple_requ
PROTOTYPES: ENABLE
Purple::Request::Field
-purple_request_field_new(id, text, type)
+purple_request_field_new(class, id, text, type)
const char *id
const char *text
Purple::RequestFieldType type
+ C_ARGS: id, text, type
void
purple_request_field_set_label(field, label)
@@ -454,11 +461,12 @@ MODULE = Purple::Request PACKAGE = Purple::Request::Field PREFIX = purple_requ
PROTOTYPES: ENABLE
Purple::Request::Field
-purple_request_field_string_new(id, text, default_value, multiline)
+purple_request_field_string_new(class, id, text, default_value, multiline)
const char *id
const char *text
const char *default_value
gboolean multiline
+ C_ARGS: id, text, default_value, multiline
const char *
purple_request_field_string_get_default_value(field)
@@ -527,8 +535,9 @@ purple_request_field_group_get_title(group)
Purple::Request::Field::Group group
Purple::Request::Field::Group
-purple_request_field_group_new(title)
+purple_request_field_group_new(class, title)
const char *title
+ C_ARGS: title
MODULE = Purple::Request PACKAGE = Purple::Request::Field PREFIX = purple_request_field_
PROTOTYPES: ENABLE
@@ -561,7 +570,8 @@ MODULE = Purple::Request PACKAGE = Purple::Request::Fields PREFIX = purple_req
PROTOTYPES: ENABLE
Purple::Request::Fields
-purple_request_fields_new()
+purple_request_fields_new(class)
+ C_ARGS: /* void */
void
purple_request_fields_add_group(fields, group)
diff --git a/libpurple/plugins/perl/common/Util.xs b/libpurple/plugins/perl/common/Util.xs
index 36bde18780..4ef2fec056 100644
--- a/libpurple/plugins/perl/common/Util.xs
+++ b/libpurple/plugins/perl/common/Util.xs
@@ -69,7 +69,7 @@ purple_message_meify(SV *msg)
PREINIT:
char *message = NULL;
gboolean ret;
- gssize len;
+ gsize len;
CODE:
message = SvPV(msg, len);
message = g_strndup(message, len);
@@ -239,7 +239,7 @@ purple_base16_decode(str)
CODE:
ret = purple_base16_decode(str, &len);
if(len) {
- RETVAL = newSVpv(ret, len);
+ RETVAL = newSVpv((gchar *)ret, len);
} else {
g_free(ret);
XSRETURN_UNDEF;
@@ -257,7 +257,7 @@ purple_base64_decode(str)
CODE:
ret = purple_base64_decode(str, &len);
if(len) {
- RETVAL = newSVpv(ret, len);
+ RETVAL = newSVpv((gchar *)ret, len);
} else {
g_free(ret);
XSRETURN_UNDEF;
@@ -275,7 +275,7 @@ purple_quotedp_decode(str)
CODE:
ret = purple_quotedp_decode(str, &len);
if(len) {
- RETVAL = newSVpv(ret, len);
+ RETVAL = newSVpv((gchar *)ret, len);
} else {
g_free(ret);
XSRETURN_UNDEF;
@@ -499,11 +499,11 @@ purple_util_format_song_info(title, artist, album, unused)
gpointer unused
const char*
-purple_util_get_image_extension(gconstpointer data, size_t length(data))
+purple_util_get_image_extension(const char *data, size_t length(data))
PROTOTYPE: $
gchar_own*
-purple_util_get_image_filename(gconstpointer image_data, size_t length(image_data))
+purple_util_get_image_filename(const char *image_data, size_t length(image_data))
PROTOTYPE: $
Purple::XMLNode
diff --git a/libpurple/plugins/perl/perl-common.c b/libpurple/plugins/perl/perl-common.c
index 4266ab7626..061dbdd2fb 100644
--- a/libpurple/plugins/perl/perl-common.c
+++ b/libpurple/plugins/perl/perl-common.c
@@ -403,7 +403,7 @@ purple_perl_data_from_sv(PurpleValue *value, SV *sv)
static SV *
purple_perl_sv_from_subtype(const PurpleValue *value, void *arg)
{
- const char *stash = NULL;
+ const char *stash = "Purple"; /* ? */
switch (purple_value_get_subtype(value)) {
case PURPLE_SUBTYPE_ACCOUNT:
@@ -442,6 +442,9 @@ purple_perl_sv_from_subtype(const PurpleValue *value, void *arg)
case PURPLE_SUBTYPE_STATUS:
stash = "Purple::Status";
break;
+ case PURPLE_SUBTYPE_SAVEDSTATUS:
+ stash = "Purple::SavedStatus";
+ break;
case PURPLE_SUBTYPE_LOG:
stash = "Purple::Log";
break;
@@ -451,10 +454,19 @@ purple_perl_sv_from_subtype(const PurpleValue *value, void *arg)
case PURPLE_SUBTYPE_XMLNODE:
stash = "Purple::XMLNode";
break;
-
- default:
- stash = "Purple"; /* ? */
- }
+ case PURPLE_SUBTYPE_USERINFO:
+ stash = "Purple::NotifyUserInfo";
+ break;
+ case PURPLE_SUBTYPE_STORED_IMAGE:
+ stash = "Purple::StoredImage";
+ break;
+ case PURPLE_SUBTYPE_CERTIFICATEPOOL:
+ stash = "Purple::Certificate::Pool";
+ break;
+ case PURPLE_SUBTYPE_UNKNOWN:
+ stash = "Purple::Unknown";
+ break;
+ }
return sv_2mortal(purple_perl_bless_object(arg, stash));
}
diff --git a/libpurple/plugins/perl/perl-handlers.c b/libpurple/plugins/perl/perl-handlers.c
index f12e67dca5..4326bc5b42 100644
--- a/libpurple/plugins/perl/perl-handlers.c
+++ b/libpurple/plugins/perl/perl-handlers.c
@@ -284,6 +284,8 @@ perl_signal_cb(va_list args, void *data)
DATATYPE **copy_args;
dSP;
+ PERL_SET_CONTEXT(my_perl);
+ SPAGAIN;
ENTER;
SAVETMPS;
PUSHMARK(sp);
@@ -364,7 +366,8 @@ perl_signal_cb(va_list args, void *data)
break;
case PURPLE_TYPE_STRING:
- if (strcmp(*((char **)copy_args[i]), SvPVX(sv_args[i]))) {
+ if (!*((char **)copy_args[i]) || !SvPVX(sv_args[i]) ||
+ strcmp(*((char **)copy_args[i]), SvPVX(sv_args[i]))) {
g_free(*((char **)copy_args[i]));
*((char **)copy_args[i]) =
g_strdup(SvPVutf8_nolen(sv_args[i]));
diff --git a/libpurple/plugins/psychic.c b/libpurple/plugins/psychic.c
index a12215bb0d..2464279f64 100644
--- a/libpurple/plugins/psychic.c
+++ b/libpurple/plugins/psychic.c
@@ -74,6 +74,7 @@ buddy_typing_cb(PurpleAccount *acct, const char *name, void *data) {
time(NULL));
}
+ /* Necessary because we may be creating a new conversation window. */
purple_conv_im_set_typing_state(PURPLE_CONV_IM(gconv), PURPLE_TYPING);
}
}
diff --git a/libpurple/plugins/signals-test.c b/libpurple/plugins/signals-test.c
index 220fb87b5f..f6f0e89736 100644
--- a/libpurple/plugins/signals-test.c
+++ b/libpurple/plugins/signals-test.c
@@ -145,16 +145,39 @@ buddy_signed_off_cb(PurpleBuddy *buddy, void *data)
}
static void
-buddy_added_cb(PurpleBuddy *buddy, void *data)
-{
- purple_debug_misc("signals test", "buddy_added_cb (%s)\n",
- purple_buddy_get_name(buddy));
+blist_node_added_cb(PurpleBlistNode *bnode, void *data)
+{
+ const char *name;
+ if (PURPLE_BLIST_NODE_IS_GROUP(bnode))
+ name = purple_group_get_name(PURPLE_GROUP(bnode));
+ else if (PURPLE_BLIST_NODE_IS_CONTACT(bnode))
+ /* Close enough */
+ name = purple_contact_get_alias(PURPLE_CONTACT(bnode));
+ else if (PURPLE_BLIST_NODE_IS_BUDDY(bnode))
+ name = purple_buddy_get_name(PURPLE_BUDDY(bnode));
+ else
+ name = "(unknown)";
+
+ purple_debug_misc("signals test", "blist_node_added_cb (%s)\n",
+ name ? name : "(null)");
}
static void
-buddy_removed_cb(PurpleBuddy *buddy, void *data)
+blist_node_removed_cb(PurpleBlistNode *bnode, void *data)
{
- purple_debug_misc("signals test", "buddy_removed_cb (%s)\n", purple_buddy_get_name(buddy));
+ const char *name;
+ if (PURPLE_BLIST_NODE_IS_GROUP(bnode))
+ name = purple_group_get_name(PURPLE_GROUP(bnode));
+ else if (PURPLE_BLIST_NODE_IS_CONTACT(bnode))
+ /* Close enough */
+ name = purple_contact_get_alias(PURPLE_CONTACT(bnode));
+ else if (PURPLE_BLIST_NODE_IS_BUDDY(bnode))
+ name = purple_buddy_get_name(PURPLE_BUDDY(bnode));
+ else
+ name = "(unknown)";
+
+ purple_debug_misc("signals test", "blist_node_removed_cb (%s)\n",
+ name ? name : "(null)");
}
static void
@@ -601,6 +624,70 @@ notify_emails_cb(char **subjects, char **froms, char **tos, char **urls, guint c
}
/**************************************************************************
+ * Jabber signals callbacks
+ **************************************************************************/
+static gboolean
+jabber_iq_received(PurpleConnection *pc, const char *type, const char *id,
+ const char *from, xmlnode *iq)
+{
+ purple_debug_misc("signals test", "jabber IQ (type=%s, id=%s, from=%s) %p\n",
+ type, id, from ? from : "(null)", iq);
+
+ /* We don't want the plugin to stop processing */
+ return FALSE;
+}
+
+static gboolean
+jabber_message_received(PurpleConnection *pc, const char *type, const char *id,
+ const char *from, const char *to, xmlnode *message)
+{
+ purple_debug_misc("signals test", "jabber message (type=%s, id=%s, "
+ "from=%s to=%s) %p\n",
+ type ? type : "(null)", id ? id : "(null)",
+ from ? from : "(null)", to ? to : "(null)", message);
+
+ /* We don't want the plugin to stop processing */
+ return FALSE;
+}
+
+static gboolean
+jabber_presence_received(PurpleConnection *pc, const char *type,
+ const char *from, xmlnode *presence)
+{
+ purple_debug_misc("signals test", "jabber presence (type=%s, from=%s) %p\n",
+ type ? type : "(null)", from ? from : "(null)", presence);
+
+ /* We don't want the plugin to stop processing */
+ return FALSE;
+}
+
+static gboolean
+jabber_watched_iq(PurpleConnection *pc, const char *type, const char *id,
+ const char *from, xmlnode *child)
+{
+ purple_debug_misc("signals test", "jabber watched IQ (type=%s, id=%s, from=%s)\n"
+ "child %p name=%s, namespace=%s\n",
+ type, id, from, child, child->name,
+ xmlnode_get_namespace(child));
+
+ if (g_str_equal(type, "get") || g_str_equal(type, "set")) {
+ /* Send the requisite reply */
+ xmlnode *iq = xmlnode_new("iq");
+ xmlnode_set_attrib(iq, "to", from);
+ xmlnode_set_attrib(iq, "id", id);
+ xmlnode_set_attrib(iq, "type", "result");
+
+ purple_signal_emit(purple_connection_get_prpl(pc),
+ "jabber-sending-xmlnode", pc, &iq);
+ if (iq != NULL)
+ xmlnode_free(iq);
+ }
+
+ /* Cookie monster eats IQ stanzas; the prpl shouldn't keep processing */
+ return TRUE;
+}
+
+/**************************************************************************
* Plugin stuff
**************************************************************************/
static gboolean
@@ -615,6 +702,7 @@ plugin_load(PurplePlugin *plugin)
void *ft_handle = purple_xfers_get_handle();
void *sound_handle = purple_sounds_get_handle();
void *notify_handle = purple_notify_get_handle();
+ void *jabber_handle = purple_plugins_find_with_id("prpl-jabber");
/* Accounts subsystem signals */
purple_signal_connect(accounts_handle, "account-connecting",
@@ -643,10 +731,10 @@ plugin_load(PurplePlugin *plugin)
plugin, PURPLE_CALLBACK(buddy_signed_on_cb), NULL);
purple_signal_connect(blist_handle, "buddy-signed-off",
plugin, PURPLE_CALLBACK(buddy_signed_off_cb), NULL);
- purple_signal_connect(blist_handle, "buddy-added",
- plugin, PURPLE_CALLBACK(buddy_added_cb), NULL);
- purple_signal_connect(blist_handle, "buddy-removed",
- plugin, PURPLE_CALLBACK(buddy_removed_cb), NULL);
+ purple_signal_connect(blist_handle, "blist-node-added",
+ plugin, PURPLE_CALLBACK(blist_node_added_cb), NULL);
+ purple_signal_connect(blist_handle, "blist-node-removed",
+ plugin, PURPLE_CALLBACK(blist_node_removed_cb), NULL);
purple_signal_connect(blist_handle, "buddy-icon-changed",
plugin, PURPLE_CALLBACK(buddy_icon_changed_cb), NULL);
purple_signal_connect(blist_handle, "blist-node-aliased",
@@ -760,6 +848,45 @@ plugin_load(PurplePlugin *plugin)
purple_signal_connect(notify_handle, "displaying-emails-notification",
plugin, PURPLE_CALLBACK(notify_emails_cb), NULL);
+ /* Jabber signals */
+ if (jabber_handle) {
+ purple_signal_connect(jabber_handle, "jabber-receiving-iq", plugin,
+ PURPLE_CALLBACK(jabber_iq_received), NULL);
+ purple_signal_connect(jabber_handle, "jabber-receiving-message", plugin,
+ PURPLE_CALLBACK(jabber_message_received), NULL);
+ purple_signal_connect(jabber_handle, "jabber-receiving-presence", plugin,
+ PURPLE_CALLBACK(jabber_presence_received), NULL);
+
+ /* IQ namespace signals */
+ purple_signal_emit(jabber_handle, "jabber-register-namespace-watcher",
+ "bogus_node", "super-duper-namespace");
+ /* The above is equivalent to doing:
+ int result = GPOINTER_TO_INT(purple_plugin_ipc_call(jabber_handle, "register_namespace_watcher", &ok, "bogus_node", "super-duper-namespace"));
+ */
+
+ purple_signal_connect(jabber_handle, "jabber-watched-iq", plugin,
+ PURPLE_CALLBACK(jabber_watched_iq), NULL);
+ }
+
+ return TRUE;
+}
+
+static gboolean
+plugin_unload(PurplePlugin *plugin)
+{
+ void *jabber_handle = purple_plugins_find_with_id("prpl-jabber");
+
+ purple_signals_disconnect_by_handle(plugin);
+
+ if (jabber_handle) {
+ /* Unregister watched namespaces */
+ purple_signal_emit(jabber_handle, "jabber-unregister-namespace-watcher",
+ "bogus_node", "super-duper-namespace");
+ /* The above is equivalent to doing:
+ int result = GPOINTER_TO_INT(purple_plugin_ipc_call(jabber_handle, "unregister_namespace_watcher", &ok, "bogus_node", "super-duper-namespace"));
+ */
+ }
+
return TRUE;
}
@@ -785,7 +912,7 @@ static PurplePluginInfo info =
PURPLE_WEBSITE, /**< homepage */
plugin_load, /**< load */
- NULL, /**< unload */
+ plugin_unload, /**< unload */
NULL, /**< destroy */
NULL, /**< ui_info */
diff --git a/libpurple/plugins/ssl/ssl-gnutls.c b/libpurple/plugins/ssl/ssl-gnutls.c
index de4908eec1..2476980414 100644
--- a/libpurple/plugins/ssl/ssl-gnutls.c
+++ b/libpurple/plugins/ssl/ssl-gnutls.c
@@ -576,7 +576,6 @@ x509_export_certificate(const gchar *filename, PurpleCertificate *crt)
out_buf, out_size);
g_free(out_buf);
- g_return_val_if_fail(success, FALSE);
return success;
}
diff --git a/libpurple/plugins/statenotify.c b/libpurple/plugins/statenotify.c
index dc25596f2b..bfbe595e50 100644
--- a/libpurple/plugins/statenotify.c
+++ b/libpurple/plugins/statenotify.c
@@ -33,7 +33,7 @@ write_status(PurpleBuddy *buddy, const char *message)
g_return_if_fail(conv->type == PURPLE_CONV_TYPE_IM);
/* Prevent duplicate notifications for buddies in multiple groups */
- if (buddy != purple_find_buddy(buddy->account, buddy->name))
+ if (buddy != purple_find_buddy(account, buddy_name))
return;
who = purple_buddy_get_alias(buddy);
@@ -71,9 +71,9 @@ buddy_idle_changed_cb(PurpleBuddy *buddy, gboolean old_idle, gboolean idle,
void *data)
{
if (purple_prefs_get_bool("/plugins/core/statenotify/notify_idle")) {
- if (idle) {
+ if (idle && !old_idle) {
write_status(buddy, _("%s has become idle."));
- } else {
+ } else if (!idle && old_idle) {
write_status(buddy, _("%s is no longer idle."));
}
}
diff --git a/libpurple/plugins/tcl/tcl_cmds.c b/libpurple/plugins/tcl/tcl_cmds.c
index 222f05e08e..c8f1aeb1aa 100644
--- a/libpurple/plugins/tcl/tcl_cmds.c
+++ b/libpurple/plugins/tcl/tcl_cmds.c
@@ -401,9 +401,9 @@ static PurpleBlistNode *tcl_list_to_buddy(Tcl_Interp *interp, int count, Tcl_Obj
return NULL;
if (!strcmp(type, "buddy")) {
- node = (PurpleBlistNode *)purple_find_buddy(account, name);
+ node = PURPLE_BLIST_NODE(purple_find_buddy(account, name));
} else if (!strcmp(type, "group")) {
- node = (PurpleBlistNode *)purple_blist_find_chat(account, name);
+ node = PURPLE_BLIST_NODE(purple_blist_find_chat(account, name));
}
return node;
@@ -683,8 +683,9 @@ int tcl_cmd_cmd(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST
int tcl_cmd_connection(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
{
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;
+ const char *cmds[] = { "account", "displayname", "handle", "list", "state", NULL };
+ enum { CMD_CONN_ACCOUNT, CMD_CONN_DISPLAYNAME, CMD_CONN_HANDLE,
+ CMD_CONN_LIST, CMD_CONN_STATE } cmd;
int error;
GList *cur;
PurpleConnection *gc;
@@ -739,6 +740,25 @@ int tcl_cmd_connection(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj
}
Tcl_SetObjResult(interp, list);
break;
+ case CMD_CONN_STATE:
+ if (objc != 3) {
+ Tcl_WrongNumArgs(interp, 2, objv, "gc");
+ return TCL_ERROR;
+ }
+ if ((gc = tcl_validate_gc(objv[2], interp)) == NULL)
+ return TCL_ERROR;
+ switch (purple_connection_get_state(gc)) {
+ case PURPLE_DISCONNECTED:
+ Tcl_SetObjResult(interp, Tcl_NewStringObj("disconnected", -1));
+ break;
+ case PURPLE_CONNECTED:
+ Tcl_SetObjResult(interp, Tcl_NewStringObj("connected", -1));
+ break;
+ case PURPLE_CONNECTING:
+ Tcl_SetObjResult(interp, Tcl_NewStringObj("connecting", -1));
+ break;
+ }
+ break;
}
return TCL_OK;
@@ -1495,9 +1515,12 @@ int tcl_cmd_status(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CON
enum { CMD_STATUS_ATTR, CMD_STATUS_TYPE } cmd;
PurpleStatus *status;
PurpleStatusType *status_type;
+ int error;
+#if !(defined PURPLE_DISABLE_DEPRECATED)
PurpleValue *value;
const char *attr;
- int error, v;
+ int v;
+#endif
if (objc < 2) {
Tcl_WrongNumArgs(interp, 1, objv, "subcommand ?args?");
@@ -1509,6 +1532,7 @@ int tcl_cmd_status(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CON
switch (cmd) {
case CMD_STATUS_ATTR:
+#if !(defined PURPLE_DISABLE_DEPRECATED)
if (objc != 4 && objc != 5) {
Tcl_WrongNumArgs(interp, 2, objv, "status attr_id ?value?");
return TCL_ERROR;
@@ -1554,6 +1578,7 @@ int tcl_cmd_status(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CON
Tcl_NewStringObj("attribute has unknown type", -1));
return TCL_ERROR;
}
+#endif
break;
case CMD_STATUS_TYPE:
if (objc != 3) {
@@ -1727,6 +1752,7 @@ int tcl_cmd_status_type(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj
(purple_status_type_get_primitive(status_type)), -1));
break;
case CMD_STATUS_TYPE_PRIMARY_ATTR:
+#if !(defined PURPLE_DISABLE_DEPRECATED)
if (objc != 3) {
Tcl_WrongNumArgs(interp, 2, objv, "statustype");
return TCL_ERROR;
@@ -1735,6 +1761,7 @@ int tcl_cmd_status_type(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj
return TCL_ERROR;
Tcl_SetObjResult(interp,
Tcl_NewStringObj(purple_status_type_get_primary_attr(status_type), -1));
+#endif
break;
case CMD_STATUS_TYPE_SAVEABLE:
if (objc != 3) {
diff --git a/libpurple/pounce.c b/libpurple/pounce.c
index 0f6e547abc..2d668c735e 100644
--- a/libpurple/pounce.c
+++ b/libpurple/pounce.c
@@ -326,7 +326,7 @@ start_element_handler(GMarkupParseContext *context,
data->buffer = NULL;
}
- if (!strcmp(element_name, "pounce")) {
+ if (purple_strequal(element_name, "pounce")) {
const char *ui = g_hash_table_lookup(atts, "ui");
if (ui == NULL) {
@@ -338,7 +338,7 @@ start_element_handler(GMarkupParseContext *context,
data->events = 0;
}
- else if (!strcmp(element_name, "account")) {
+ else if (purple_strequal(element_name, "account")) {
const char *protocol_id = g_hash_table_lookup(atts, "protocol");
if (protocol_id == NULL) {
@@ -348,7 +348,7 @@ start_element_handler(GMarkupParseContext *context,
else
data->protocol_id = g_strdup(protocol_id);
}
- else if (!strcmp(element_name, "option")) {
+ else if (purple_strequal(element_name, "option")) {
const char *type = g_hash_table_lookup(atts, "type");
if (type == NULL) {
@@ -358,7 +358,7 @@ start_element_handler(GMarkupParseContext *context,
else
data->option_type = g_strdup(type);
}
- else if (!strcmp(element_name, "event")) {
+ else if (purple_strequal(element_name, "event")) {
const char *type = g_hash_table_lookup(atts, "type");
if (type == NULL) {
@@ -368,7 +368,7 @@ start_element_handler(GMarkupParseContext *context,
else
data->event_type = g_strdup(type);
}
- else if (!strcmp(element_name, "action")) {
+ else if (purple_strequal(element_name, "action")) {
const char *type = g_hash_table_lookup(atts, "type");
if (type == NULL) {
@@ -378,7 +378,7 @@ start_element_handler(GMarkupParseContext *context,
else
data->action_name = g_strdup(type);
}
- else if (!strcmp(element_name, "param")) {
+ else if (purple_strequal(element_name, "param")) {
const char *param_name = g_hash_table_lookup(atts, "name");
if (param_name == NULL) {
@@ -404,7 +404,7 @@ end_element_handler(GMarkupParseContext *context, const gchar *element_name,
data->buffer = NULL;
}
- if (!strcmp(element_name, "account")) {
+ if (purple_strequal(element_name, "account")) {
char *tmp;
g_free(data->account_name);
data->account_name = g_strdup(buffer);
@@ -412,43 +412,43 @@ end_element_handler(GMarkupParseContext *context, const gchar *element_name,
data->protocol_id = g_strdup(_purple_oscar_convert(buffer, tmp));
g_free(tmp);
}
- else if (!strcmp(element_name, "pouncee")) {
+ else if (purple_strequal(element_name, "pouncee")) {
g_free(data->pouncee);
data->pouncee = g_strdup(buffer);
}
- else if (!strcmp(element_name, "option")) {
- if (!strcmp(data->option_type, "on-away"))
+ else if (purple_strequal(element_name, "option")) {
+ if (purple_strequal(data->option_type, "on-away"))
data->options |= PURPLE_POUNCE_OPTION_AWAY;
g_free(data->option_type);
data->option_type = NULL;
}
- else if (!strcmp(element_name, "event")) {
- if (!strcmp(data->event_type, "sign-on"))
+ else if (purple_strequal(element_name, "event")) {
+ if (purple_strequal(data->event_type, "sign-on"))
data->events |= PURPLE_POUNCE_SIGNON;
- else if (!strcmp(data->event_type, "sign-off"))
+ else if (purple_strequal(data->event_type, "sign-off"))
data->events |= PURPLE_POUNCE_SIGNOFF;
- else if (!strcmp(data->event_type, "away"))
+ else if (purple_strequal(data->event_type, "away"))
data->events |= PURPLE_POUNCE_AWAY;
- else if (!strcmp(data->event_type, "return-from-away"))
+ else if (purple_strequal(data->event_type, "return-from-away"))
data->events |= PURPLE_POUNCE_AWAY_RETURN;
- else if (!strcmp(data->event_type, "idle"))
+ else if (purple_strequal(data->event_type, "idle"))
data->events |= PURPLE_POUNCE_IDLE;
- else if (!strcmp(data->event_type, "return-from-idle"))
+ else if (purple_strequal(data->event_type, "return-from-idle"))
data->events |= PURPLE_POUNCE_IDLE_RETURN;
- else if (!strcmp(data->event_type, "start-typing"))
+ else if (purple_strequal(data->event_type, "start-typing"))
data->events |= PURPLE_POUNCE_TYPING;
- else if (!strcmp(data->event_type, "typed"))
+ else if (purple_strequal(data->event_type, "typed"))
data->events |= PURPLE_POUNCE_TYPED;
- else if (!strcmp(data->event_type, "stop-typing"))
+ else if (purple_strequal(data->event_type, "stop-typing"))
data->events |= PURPLE_POUNCE_TYPING_STOPPED;
- else if (!strcmp(data->event_type, "message-received"))
+ else if (purple_strequal(data->event_type, "message-received"))
data->events |= PURPLE_POUNCE_MESSAGE_RECEIVED;
g_free(data->event_type);
data->event_type = NULL;
}
- else if (!strcmp(element_name, "action")) {
+ else if (purple_strequal(element_name, "action")) {
if (data->pounce != NULL) {
purple_pounce_action_register(data->pounce, data->action_name);
purple_pounce_action_set_enabled(data->pounce, data->action_name, TRUE);
@@ -457,7 +457,7 @@ end_element_handler(GMarkupParseContext *context, const gchar *element_name,
g_free(data->action_name);
data->action_name = NULL;
}
- else if (!strcmp(element_name, "param")) {
+ else if (purple_strequal(element_name, "param")) {
if (data->pounce != NULL) {
purple_pounce_action_set_attribute(data->pounce, data->action_name,
data->param_name, buffer);
@@ -466,7 +466,7 @@ end_element_handler(GMarkupParseContext *context, const gchar *element_name,
g_free(data->param_name);
data->param_name = NULL;
}
- else if (!strcmp(element_name, "events")) {
+ else if (purple_strequal(element_name, "events")) {
PurpleAccount *account;
account = purple_accounts_find(data->account_name, data->protocol_id);
@@ -499,11 +499,11 @@ end_element_handler(GMarkupParseContext *context, const gchar *element_name,
g_free(data->pouncee);
data->pouncee = NULL;
}
- else if (!strcmp(element_name, "save")) {
+ else if (purple_strequal(element_name, "save")) {
if (data->pounce != NULL)
purple_pounce_set_save(data->pounce, TRUE);
}
- else if (!strcmp(element_name, "pounce")) {
+ else if (purple_strequal(element_name, "pounce")) {
data->pounce = NULL;
data->events = 0;
data->options = 0;
@@ -1023,7 +1023,7 @@ GList *purple_pounces_get_all_for_ui(const char *ui)
for (iter = pounces; iter; iter = iter->next) {
PurplePounce *pounce = iter->data;
- if (pounce->ui_type && strcmp(pounce->ui_type, ui) == 0)
+ if (purple_strequal(pounce->ui_type, ui))
list = g_list_prepend(list, pounce);
}
list = g_list_reverse(list);
@@ -1042,35 +1042,39 @@ free_pounce_handler(gpointer user_data)
static void
buddy_state_cb(PurpleBuddy *buddy, PurplePounceEvent event)
{
- purple_pounce_execute(buddy->account, buddy->name, event);
+ PurpleAccount *account = purple_buddy_get_account(buddy);
+ const gchar *name = purple_buddy_get_name(buddy);
+
+ purple_pounce_execute(account, name, event);
}
static void
buddy_status_changed_cb(PurpleBuddy *buddy, PurpleStatus *old_status,
PurpleStatus *status)
{
+ PurpleAccount *account = purple_buddy_get_account(buddy);
+ const gchar *name = purple_buddy_get_name(buddy);
gboolean old_available, available;
available = purple_status_is_available(status);
old_available = purple_status_is_available(old_status);
if (available && !old_available)
- purple_pounce_execute(buddy->account, buddy->name,
- PURPLE_POUNCE_AWAY_RETURN);
+ purple_pounce_execute(account, name, PURPLE_POUNCE_AWAY_RETURN);
else if (!available && old_available)
- purple_pounce_execute(buddy->account, buddy->name,
- PURPLE_POUNCE_AWAY);
+ purple_pounce_execute(account, name, PURPLE_POUNCE_AWAY);
}
static void
buddy_idle_changed_cb(PurpleBuddy *buddy, gboolean old_idle, gboolean idle)
{
+ PurpleAccount *account = purple_buddy_get_account(buddy);
+ const gchar *name = purple_buddy_get_name(buddy);
+
if (idle && !old_idle)
- purple_pounce_execute(buddy->account, buddy->name,
- PURPLE_POUNCE_IDLE);
+ purple_pounce_execute(account, name, PURPLE_POUNCE_IDLE);
else if (!idle && old_idle)
- purple_pounce_execute(buddy->account, buddy->name,
- PURPLE_POUNCE_IDLE_RETURN);
+ purple_pounce_execute(account, name, PURPLE_POUNCE_IDLE_RETURN);
}
static void
diff --git a/libpurple/prefs.c b/libpurple/prefs.c
index b95d2be610..86f69b403e 100644
--- a/libpurple/prefs.c
+++ b/libpurple/prefs.c
@@ -118,7 +118,7 @@ pref_to_xmlnode(xmlnode *parent, struct purple_pref *pref)
{
xmlnode *node, *childnode;
struct purple_pref *child;
- char buf[20];
+ char buf[21];
GList *cur;
/* Create a new node */
@@ -128,7 +128,7 @@ pref_to_xmlnode(xmlnode *parent, struct purple_pref *pref)
/* Set the type of this node (if type == PURPLE_PREF_NONE then do nothing) */
if (pref->type == PURPLE_PREF_INT) {
xmlnode_set_attrib(node, "type", "int");
- snprintf(buf, sizeof(buf), "%d", pref->value.integer);
+ g_snprintf(buf, sizeof(buf), "%d", pref->value.integer);
xmlnode_set_attrib(node, "value", buf);
}
else if (pref->type == PURPLE_PREF_STRING) {
@@ -161,7 +161,7 @@ pref_to_xmlnode(xmlnode *parent, struct purple_pref *pref)
}
else if (pref->type == PURPLE_PREF_BOOLEAN) {
xmlnode_set_attrib(node, "type", "bool");
- snprintf(buf, sizeof(buf), "%d", pref->value.boolean);
+ g_snprintf(buf, sizeof(buf), "%d", pref->value.boolean);
xmlnode_set_attrib(node, "value", buf);
}
@@ -250,33 +250,34 @@ prefs_start_element_handler (GMarkupParseContext *context,
GString *pref_name_full;
GList *tmp;
- if(strcmp(element_name, "pref") && strcmp(element_name, "item"))
+ if(!purple_strequal(element_name, "pref") &&
+ !purple_strequal(element_name, "item"))
return;
for(i = 0; attribute_names[i]; i++) {
- if(!strcmp(attribute_names[i], "name")) {
+ if(purple_strequal(attribute_names[i], "name")) {
pref_name = attribute_values[i];
- } else if(!strcmp(attribute_names[i], "type")) {
- if(!strcmp(attribute_values[i], "bool"))
+ } else if(purple_strequal(attribute_names[i], "type")) {
+ if(purple_strequal(attribute_values[i], "bool"))
pref_type = PURPLE_PREF_BOOLEAN;
- else if(!strcmp(attribute_values[i], "int"))
+ else if(purple_strequal(attribute_values[i], "int"))
pref_type = PURPLE_PREF_INT;
- else if(!strcmp(attribute_values[i], "string"))
+ else if(purple_strequal(attribute_values[i], "string"))
pref_type = PURPLE_PREF_STRING;
- else if(!strcmp(attribute_values[i], "stringlist"))
+ else if(purple_strequal(attribute_values[i], "stringlist"))
pref_type = PURPLE_PREF_STRING_LIST;
- else if(!strcmp(attribute_values[i], "path"))
+ else if(purple_strequal(attribute_values[i], "path"))
pref_type = PURPLE_PREF_PATH;
- else if(!strcmp(attribute_values[i], "pathlist"))
+ else if(purple_strequal(attribute_values[i], "pathlist"))
pref_type = PURPLE_PREF_PATH_LIST;
else
return;
- } else if(!strcmp(attribute_names[i], "value")) {
+ } else if(purple_strequal(attribute_names[i], "value")) {
pref_value = attribute_values[i];
}
}
- if(!strcmp(element_name, "item")) {
+ if(purple_strequal(element_name, "item")) {
struct purple_pref *pref;
pref_name_full = g_string_new("");
@@ -301,7 +302,7 @@ prefs_start_element_handler (GMarkupParseContext *context,
} else {
char *decoded;
- if(!pref_name || !strcmp(pref_name, "/"))
+ if(!pref_name || purple_strequal(pref_name, "/"))
return;
pref_name_full = g_string_new(pref_name);
@@ -352,7 +353,7 @@ prefs_end_element_handler(GMarkupParseContext *context,
const gchar *element_name,
gpointer user_data, GError **error)
{
- if(prefs_stack && !strcmp(element_name, "pref")) {
+ if(prefs_stack && purple_strequal(element_name, "pref")) {
g_free(prefs_stack->data);
prefs_stack = g_list_delete_link(prefs_stack, prefs_stack);
}
@@ -521,7 +522,7 @@ find_pref_parent(const char *name)
char *parent_name = get_path_dirname(name);
struct purple_pref *ret = &prefs;
- if(strcmp(parent_name, "/")) {
+ if(!purple_strequal(parent_name, "/")) {
ret = find_pref(parent_name);
}
@@ -571,7 +572,7 @@ add_pref(PurplePrefType type, const char *name)
my_name = get_path_basename(name);
for(sibling = parent->first_child; sibling; sibling = sibling->sibling) {
- if(!strcmp(sibling->name, my_name)) {
+ if(purple_strequal(sibling->name, my_name)) {
g_free(my_name);
return NULL;
}
@@ -849,10 +850,7 @@ purple_prefs_set_string(const char *name, const char *value)
return;
}
- if((value && !pref->value.string) ||
- (!value && pref->value.string) ||
- (value && pref->value.string &&
- strcmp(pref->value.string, value))) {
+ if (!purple_strequal(pref->value.string, value)) {
g_free(pref->value.string);
pref->value.string = g_strdup(value);
do_callbacks(name, pref);
@@ -909,10 +907,7 @@ purple_prefs_set_path(const char *name, const char *value)
return;
}
- if((value && !pref->value.string) ||
- (!value && pref->value.string) ||
- (value && pref->value.string &&
- strcmp(pref->value.string, value))) {
+ if (!purple_strequal(pref->value.string, value)) {
g_free(pref->value.string);
pref->value.string = g_strdup(value);
do_callbacks(name, pref);
@@ -1106,7 +1101,7 @@ purple_prefs_rename_node(struct purple_pref *oldpref, struct purple_pref *newpre
next = child->sibling;
for(newchild = newpref->first_child; newchild != NULL; newchild = newchild->sibling)
{
- if(!strcmp(child->name, newchild->name))
+ if(purple_strequal(child->name, newchild->name))
{
purple_prefs_rename_node(child, newchild);
break;
diff --git a/libpurple/prefs.h b/libpurple/prefs.h
index aafa0cd599..3129719c08 100644
--- a/libpurple/prefs.h
+++ b/libpurple/prefs.h
@@ -67,8 +67,8 @@ extern "C" {
#endif
/**************************************************************************/
-/** @name Prefs API
- Preferences are named according to a directory-like structure.
+/** @name Prefs API
+ Preferences are named according to a directory-like structure.
Example: "/plugins/core/potato/is_from_idaho" (probably a boolean) */
/**************************************************************************/
/*@{*/
diff --git a/libpurple/privacy.c b/libpurple/privacy.c
index 78accc4553..bbb5e017fe 100644
--- a/libpurple/privacy.c
+++ b/libpurple/privacy.c
@@ -232,8 +232,10 @@ add_all_buddies_to_permit_list(PurpleAccount *account, gboolean local)
while (list != NULL)
{
PurpleBuddy *buddy = list->data;
- if (!g_slist_find_custom(account->permit, buddy->name, (GCompareFunc)g_utf8_collate))
- purple_privacy_permit_add(account, buddy->name, local);
+ const gchar *name = purple_buddy_get_name(buddy);
+
+ if (!g_slist_find_custom(account->permit, name, (GCompareFunc)g_utf8_collate))
+ purple_privacy_permit_add(account, name, local);
list = g_slist_delete_link(list, list);
}
}
@@ -267,7 +269,7 @@ purple_privacy_allow(PurpleAccount *account, const char *who, gboolean local,
for (list = account->permit; list != NULL;) {
char *person = list->data;
list = list->next;
- if (strcmp(norm, person) != 0)
+ if (!purple_strequal(norm, person))
purple_privacy_permit_remove(account, person, local);
}
}
@@ -311,7 +313,7 @@ purple_privacy_deny(PurpleAccount *account, const char *who, gboolean local,
for (list = account->deny; list != NULL; ) {
char *person = list->data;
list = list->next;
- if (strcmp(norm, person) != 0)
+ if (!purple_strequal(norm, person))
purple_privacy_deny_remove(account, person, local);
}
}
diff --git a/libpurple/privacy.h b/libpurple/privacy.h
index 7caeb45e0f..2911758fc3 100644
--- a/libpurple/privacy.h
+++ b/libpurple/privacy.h
@@ -125,7 +125,7 @@ gboolean purple_privacy_deny_remove(PurpleAccount *account, const char *name,
* changed to PURPLE_PRIVACY_ALLOW_USERS, all the
* buddies are added to the allow-list, and the
* user is also added to the allow-list.
- *
+ *
* @param account The account.
* @param who The name of the user.
* @param local Whether the change is local-only.
diff --git a/libpurple/protocols/Makefile.am b/libpurple/protocols/Makefile.am
index c904076abb..97d1de9357 100644
--- a/libpurple/protocols/Makefile.am
+++ b/libpurple/protocols/Makefile.am
@@ -1,5 +1,5 @@
EXTRA_DIST = Makefile.mingw
-DIST_SUBDIRS = bonjour gg irc jabber msn msnp9 myspace novell null oscar qq sametime silc silc10 toc simple yahoo zephyr
+DIST_SUBDIRS = bonjour gg irc jabber msn msnp9 myspace novell null oscar qq sametime silc silc10 simple yahoo zephyr
SUBDIRS = $(DYNAMIC_PRPLS) $(STATIC_PRPLS)
diff --git a/libpurple/protocols/Makefile.mingw b/libpurple/protocols/Makefile.mingw
index 602758f5f5..5cda7fee31 100644
--- a/libpurple/protocols/Makefile.mingw
+++ b/libpurple/protocols/Makefile.mingw
@@ -2,7 +2,7 @@
#
# Author: hermanator12002@yahoo.com
# Date 9/11/02
-# Description: Protocols Makefile for win32 (mingw) port of LibPurple
+# Description: Protocols Makefile for win32 (mingw) port of libpurple
#
PIDGIN_TREE_TOP := ../..
diff --git a/libpurple/protocols/bonjour/bonjour.c b/libpurple/protocols/bonjour/bonjour.c
index 8456ffb7e3..d03bef292b 100644
--- a/libpurple/protocols/bonjour/bonjour.c
+++ b/libpurple/protocols/bonjour/bonjour.c
@@ -261,9 +261,10 @@ bonjour_fake_add_buddy(PurpleConnection *pc, PurpleBuddy *buddy, PurpleGroup *gr
static void bonjour_remove_buddy(PurpleConnection *pc, PurpleBuddy *buddy, PurpleGroup *group) {
- if (buddy->proto_data) {
- bonjour_buddy_delete(buddy->proto_data);
- buddy->proto_data = NULL;
+ BonjourBuddy *bb = purple_buddy_get_protocol_data(buddy);
+ if (bb) {
+ bonjour_buddy_delete(bb);
+ purple_buddy_set_protocol_data(buddy, NULL);
}
}
@@ -303,7 +304,7 @@ bonjour_convo_closed(PurpleConnection *connection, const char *who)
PurpleBuddy *buddy = purple_find_buddy(connection->account, who);
BonjourBuddy *bb;
- if (buddy == NULL || buddy->proto_data == NULL)
+ if (buddy == NULL || (bb = purple_buddy_get_protocol_data(buddy)) == NULL)
{
/*
* This buddy is not in our buddy list, and therefore does not really
@@ -312,7 +313,6 @@ bonjour_convo_closed(PurpleConnection *connection, const char *who)
return;
}
- bb = buddy->proto_data;
bonjour_jabber_close_conversation(bb->conversation);
bb->conversation = NULL;
}
@@ -351,7 +351,7 @@ bonjour_tooltip_text(PurpleBuddy *buddy, PurpleNotifyUserInfo *user_info, gboole
{
PurplePresence *presence;
PurpleStatus *status;
- BonjourBuddy *bb = buddy->proto_data;
+ BonjourBuddy *bb = purple_buddy_get_protocol_data(buddy);
const char *status_description;
const char *message;
@@ -417,8 +417,7 @@ bonjour_can_receive_file(PurpleConnection *connection, const char *who)
{
PurpleBuddy *buddy = purple_find_buddy(connection->account, who);
- return (buddy != NULL && buddy->proto_data != NULL);
-
+ return (buddy != NULL && purple_buddy_get_protocol_data(buddy) != NULL);
}
static gboolean
@@ -499,13 +498,13 @@ static PurplePluginProtocolInfo prpl_info =
NULL, /* whiteboard_prpl_ops */
NULL, /* send_raw */
NULL, /* roomlist_room_serialize */
-
- /* padding */
- NULL,
- NULL,
- NULL,
- sizeof(PurplePluginProtocolInfo), /* struct_size */
- NULL
+ NULL, /* unregister_user */
+ NULL, /* send_attention */
+ NULL, /* get_attention_types */
+ sizeof(PurplePluginProtocolInfo), /* struct_size */
+ NULL, /* get_account_text_table */
+ NULL, /* initiate_media */
+ NULL /* can_do_media */
};
static PurplePluginInfo info =
diff --git a/libpurple/protocols/bonjour/bonjour_ft.c b/libpurple/protocols/bonjour/bonjour_ft.c
index effc93163b..44eab1a8d0 100644
--- a/libpurple/protocols/bonjour/bonjour_ft.c
+++ b/libpurple/protocols/bonjour/bonjour_ft.c
@@ -386,10 +386,9 @@ bonjour_xfer_init(PurpleXfer *xfer)
buddy = purple_find_buddy(xfer->account, xfer->who);
/* this buddy is offline. */
- if (buddy == NULL || buddy->proto_data == NULL)
+ if (buddy == NULL || (bb = purple_buddy_get_protocol_data(buddy)) == NULL)
return;
- bb = (BonjourBuddy *)buddy->proto_data;
/* Assume it is the first IP. We could do something like keep track of which one is in use or something. */
if (bb->ips)
xf->buddy_ip = g_strdup(bb->ips->data);
@@ -410,6 +409,7 @@ xep_si_parse(PurpleConnection *pc, xmlnode *packet, PurpleBuddy *pb)
const char *type, *id;
BonjourData *bd;
PurpleXfer *xfer;
+ const gchar *name = NULL;
g_return_if_fail(pc != NULL);
g_return_if_fail(packet != NULL);
@@ -421,6 +421,8 @@ xep_si_parse(PurpleConnection *pc, xmlnode *packet, PurpleBuddy *pb)
purple_debug_info("bonjour", "xep-si-parse.\n");
+ name = purple_buddy_get_name(pb);
+
type = xmlnode_get_attrib(packet, "type");
id = xmlnode_get_attrib(packet, "id");
if(type) {
@@ -448,31 +450,34 @@ xep_si_parse(PurpleConnection *pc, xmlnode *packet, PurpleBuddy *pb)
/* TODO: Make sure that it is advertising a bytestreams transfer */
- bonjour_xfer_receive(pc, id, sid, pb->name, filesize, filename, XEP_BYTESTREAMS);
+ bonjour_xfer_receive(pc, id, sid, name, filesize, filename, XEP_BYTESTREAMS);
parsed_receive = TRUE;
}
if (!parsed_receive) {
+ BonjourData *bd = purple_connection_get_protocol_data(pc);
+
purple_debug_info("bonjour", "rejecting unrecognized si SET offer.\n");
- xep_ft_si_reject((BonjourData *)pc->proto_data, id, pb->name, "403", "cancel");
+ xep_ft_si_reject(bd, id, name, "403", "cancel");
/*TODO: Send Cancel (501) */
}
} else if(!strcmp(type, "result")) {
purple_debug_info("bonjour", "si offer Message type - RESULT.\n");
- xfer = bonjour_si_xfer_find(bd, id, pb->name);
+ xfer = bonjour_si_xfer_find(bd, id, name);
if(xfer == NULL) {
+ BonjourData *bd = purple_connection_get_protocol_data(pc);
purple_debug_info("bonjour", "xfer find fail.\n");
- xep_ft_si_reject((BonjourData *)pc->proto_data, id, pb->name, "403", "cancel");
+ xep_ft_si_reject(bd, id, name, "403", "cancel");
} else
bonjour_bytestreams_init(xfer);
} else if(!strcmp(type, "error")) {
purple_debug_info("bonjour", "si offer Message type - ERROR.\n");
- xfer = bonjour_si_xfer_find(bd, id, pb->name);
+ xfer = bonjour_si_xfer_find(bd, id, name);
if(xfer == NULL)
purple_debug_info("bonjour", "xfer find fail.\n");
@@ -501,7 +506,7 @@ xep_bytestreams_parse(PurpleConnection *pc, xmlnode *packet, PurpleBuddy *pb)
purple_debug_info("bonjour", "xep-bytestreams-parse.\n");
type = xmlnode_get_attrib(packet, "type");
- from = pb->name;
+ from = purple_buddy_get_name(pb);
query = xmlnode_get_child(packet,"query");
if(type) {
if(!strcmp(type, "set")) {
@@ -841,8 +846,10 @@ bonjour_bytestreams_connect_cb(gpointer data, gint source, const gchar *error_me
static void
bonjour_bytestreams_connect(PurpleXfer *xfer, PurpleBuddy *pb)
{
+ PurpleAccount *account = NULL;
XepXfer *xf;
char dstaddr[41];
+ const gchar *name = NULL;
unsigned char hashval[20];
char *p;
int i;
@@ -856,7 +863,10 @@ bonjour_bytestreams_connect(PurpleXfer *xfer, PurpleBuddy *pb)
if(!xf)
return;
- p = g_strdup_printf("%s%s%s", xf->sid, pb->name, purple_account_get_username(pb->account));
+ name = purple_buddy_get_name(pb);
+ account = purple_buddy_get_account(pb);
+
+ p = g_strdup_printf("%s%s%s", xf->sid, name, purple_account_get_username(account));
purple_cipher_digest_region("sha1", (guchar *)p, strlen(p),
sizeof(hashval), hashval, NULL);
g_free(p);
@@ -870,7 +880,9 @@ bonjour_bytestreams_connect(PurpleXfer *xfer, PurpleBuddy *pb)
purple_proxy_info_set_type(xf->proxy_info, PURPLE_PROXY_SOCKS5);
purple_proxy_info_set_host(xf->proxy_info, xf->proxy_host);
purple_proxy_info_set_port(xf->proxy_info, xf->proxy_port);
- xf->proxy_connection = purple_proxy_connect_socks5(NULL, xf->proxy_info,
+ xf->proxy_connection = purple_proxy_connect_socks5(
+ purple_account_get_connection(account),
+ xf->proxy_info,
dstaddr, 0,
bonjour_bytestreams_connect_cb, xfer);
diff --git a/libpurple/protocols/bonjour/buddy.c b/libpurple/protocols/bonjour/buddy.c
index edc40fa2d3..890a7e1b09 100644
--- a/libpurple/protocols/bonjour/buddy.c
+++ b/libpurple/protocols/bonjour/buddy.c
@@ -157,8 +157,8 @@ bonjour_buddy_add_to_purple(BonjourBuddy *bonjour_buddy, PurpleBuddy *buddy)
purple_blist_add_buddy(buddy, NULL, group, NULL);
}
- buddy->proto_data = bonjour_buddy;
name = purple_buddy_get_name(buddy);
+ purple_buddy_set_protocol_data(buddy, bonjour_buddy);
/* Create the alias for the buddy using the first and the last name */
if (bonjour_buddy->nick && *bonjour_buddy->nick)
@@ -210,8 +210,8 @@ void bonjour_buddy_signed_off(PurpleBuddy *pb) {
if (PURPLE_BLIST_NODE_SHOULD_SAVE(pb)) {
purple_prpl_got_user_status(purple_buddy_get_account(pb),
purple_buddy_get_name(pb), "offline", NULL);
- bonjour_buddy_delete(pb->proto_data);
- pb->proto_data = NULL;
+ bonjour_buddy_delete(purple_buddy_get_protocol_data(pb));
+ purple_buddy_set_protocol_data(pb, NULL);
} else {
purple_account_remove_buddy(purple_buddy_get_account(pb), pb, NULL);
purple_blist_remove_buddy(pb);
diff --git a/libpurple/protocols/bonjour/jabber.c b/libpurple/protocols/bonjour/jabber.c
index 51a809c877..eff232f091 100644
--- a/libpurple/protocols/bonjour/jabber.c
+++ b/libpurple/protocols/bonjour/jabber.c
@@ -233,24 +233,24 @@ _jabber_parse_and_write_message_to_ui(xmlnode *message_node, PurpleBuddy *pb)
struct _match_buddies_by_address_t {
const char *address;
GSList *matched_buddies;
- BonjourJabber *jdata;
};
static void
-_match_buddies_by_address(gpointer key, gpointer value, gpointer data)
+_match_buddies_by_address(gpointer value, gpointer data)
{
PurpleBuddy *pb = value;
+ BonjourBuddy *bb = NULL;
struct _match_buddies_by_address_t *mbba = data;
+ bb = purple_buddy_get_protocol_data(pb);
+
/*
- * If the current PurpleBuddy's data is not null and the PurpleBuddy's account
- * is the same as the account requesting the check then continue to determine
+ * If the current PurpleBuddy's data is not null, then continue to determine
* whether one of the buddies IPs matches the target IP.
*/
- if (mbba->jdata->account == pb->account && pb->proto_data != NULL)
+ if (bb != NULL)
{
const char *ip;
- BonjourBuddy *bb = pb->proto_data;
GSList *tmp = bb->ips;
while(tmp) {
@@ -268,7 +268,7 @@ static void
_send_data_write_cb(gpointer data, gint source, PurpleInputCondition cond)
{
PurpleBuddy *pb = data;
- BonjourBuddy *bb = pb->proto_data;
+ BonjourBuddy *bb = purple_buddy_get_protocol_data(pb);
BonjourJabberConversation *bconv = bb->conversation;
int ret, writelen;
@@ -285,13 +285,16 @@ _send_data_write_cb(gpointer data, gint source, PurpleInputCondition cond)
if (ret < 0 && errno == EAGAIN)
return;
else if (ret <= 0) {
- PurpleConversation *conv;
+ PurpleConversation *conv = NULL;
+ PurpleAccount *account = NULL;
const char *error = g_strerror(errno);
purple_debug_error("bonjour", "Error sending message to buddy %s error: %s\n",
purple_buddy_get_name(pb), error ? error : "(null)");
- conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, bb->name, pb->account);
+ account = purple_buddy_get_account(pb);
+
+ conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, bb->name, account);
if (conv != NULL)
purple_conversation_write(conv, NULL,
_("Unable to send message."),
@@ -310,7 +313,7 @@ _send_data(PurpleBuddy *pb, char *message)
{
gint ret;
int len = strlen(message);
- BonjourBuddy *bb = pb->proto_data;
+ BonjourBuddy *bb = purple_buddy_get_protocol_data(pb);
BonjourJabberConversation *bconv = bb->conversation;
/* If we're not ready to actually send, append it to the buffer */
@@ -329,12 +332,15 @@ _send_data(PurpleBuddy *pb, char *message)
ret = 0;
else if (ret <= 0) {
PurpleConversation *conv;
+ PurpleAccount *account;
const char *error = g_strerror(errno);
purple_debug_error("bonjour", "Error sending message to buddy %s error: %s\n",
purple_buddy_get_name(pb), error ? error : "(null)");
- conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, bb->name, pb->account);
+ account = purple_buddy_get_account(pb);
+
+ conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, bb->name, account);
if (conv != NULL)
purple_conversation_write(conv, NULL,
_("Unable to send message."),
@@ -373,11 +379,12 @@ static void bonjour_jabber_stream_ended(BonjourJabberConversation *bconv) {
/* Inform the user that the conversation has been closed */
BonjourBuddy *bb = NULL;
+ const gchar *name = bconv->pb ? purple_buddy_get_name(bconv->pb) : "(unknown)";
- purple_debug_info("bonjour", "Recieved conversation close notification from %s.\n", bconv->pb ? bconv->pb->name : "(unknown)");
+ purple_debug_info("bonjour", "Recieved conversation close notification from %s.\n", name);
if(bconv->pb != NULL)
- bb = bconv->pb->proto_data;
+ bb = purple_buddy_get_protocol_data(bconv->pb);
#if 0
if(bconv->pb != NULL) {
PurpleConversation *conv;
@@ -411,9 +418,11 @@ _client_socket_handler(gpointer data, gint socket, PurpleInputCondition conditio
purple_debug_warning("bonjour", "receive error: %s\n", err ? err : "(null)");
bonjour_jabber_close_conversation(bconv);
- if (bconv->pb != NULL && bconv->pb->proto_data != NULL) {
- BonjourBuddy *bb = bconv->pb->proto_data;
- bb->conversation = NULL;
+ if (bconv->pb != NULL) {
+ BonjourBuddy *bb = purple_buddy_get_protocol_data(bconv->pb);
+
+ if(bb != NULL)
+ bb->conversation = NULL;
}
/* I guess we really don't need to notify the user.
@@ -421,7 +430,8 @@ _client_socket_handler(gpointer data, gint socket, PurpleInputCondition conditio
}
return;
} else if (len == 0) { /* The other end has closed the socket */
- purple_debug_warning("bonjour", "Connection closed (without stream end) by %s.\n", (bconv->pb && bconv->pb->name) ? bconv->pb->name : "(unknown)");
+ const gchar *name = purple_buddy_get_name(bconv->pb);
+ purple_debug_warning("bonjour", "Connection closed (without stream end) by %s.\n", (name) ? name : "(unknown)");
bonjour_jabber_stream_ended(bconv);
return;
} else {
@@ -465,7 +475,7 @@ _start_stream(gpointer data, gint source, PurpleInputCondition condition)
BonjourBuddy *bb = NULL;
if(bconv->pb) {
- bb = bconv->pb->proto_data;
+ bb = purple_buddy_get_protocol_data(bconv->pb);
bname = purple_buddy_get_name(bconv->pb);
}
@@ -624,6 +634,7 @@ _server_socket_handler(gpointer data, int server_socket, PurpleInputCondition co
char *address_text = NULL;
struct _match_buddies_by_address_t *mbba;
BonjourJabberConversation *bconv;
+ GSList *buddies;
/* Check that it is a read condition */
if (condition != PURPLE_INPUT_READ)
@@ -643,12 +654,13 @@ _server_socket_handler(gpointer data, int server_socket, PurpleInputCondition co
purple_debug_info("bonjour", "Received incoming connection from %s.\n", address_text);
mbba = g_new0(struct _match_buddies_by_address_t, 1);
mbba->address = address_text;
- mbba->jdata = jdata;
- g_hash_table_foreach(purple_get_blist()->buddies, _match_buddies_by_address, mbba);
+
+ buddies = purple_find_buddies(jdata->account, NULL);
+ g_slist_foreach(buddies, _match_buddies_by_address, mbba);
+ g_slist_free(buddies);
if (mbba->matched_buddies == NULL) {
purple_debug_info("bonjour", "We don't like invisible buddies, this is not a superheros comic\n");
- g_slist_free(mbba->matched_buddies);
g_free(mbba);
close(client_socket);
return;
@@ -729,17 +741,20 @@ static void
_connected_to_buddy(gpointer data, gint source, const gchar *error)
{
PurpleBuddy *pb = data;
- BonjourBuddy *bb = pb->proto_data;
+ BonjourBuddy *bb = purple_buddy_get_protocol_data(pb);
bb->conversation->connect_data = NULL;
if (source < 0) {
- PurpleConversation *conv;
+ PurpleConversation *conv = NULL;
+ PurpleAccount *account = NULL;
purple_debug_error("bonjour", "Error connecting to buddy %s at %s:%d error: %s\n",
purple_buddy_get_name(pb), bb->conversation->ip, bb->port_p2pj, error ? error : "(null)");
- conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, bb->name, pb->account);
+ account = purple_buddy_get_account(pb);
+
+ conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, bb->name, account);
if (conv != NULL)
purple_conversation_write(conv, NULL,
_("Unable to send the message, the conversation couldn't be started."),
@@ -752,12 +767,15 @@ _connected_to_buddy(gpointer data, gint source, const gchar *error)
if (!bonjour_jabber_send_stream_init(bb->conversation, source)) {
const char *err = g_strerror(errno);
- PurpleConversation *conv;
+ PurpleConversation *conv = NULL;
+ PurpleAccount *account = NULL;
purple_debug_error("bonjour", "Error starting stream with buddy %s at %s:%d error: %s\n",
purple_buddy_get_name(pb), bb->conversation->ip, bb->port_p2pj, err ? err : "(null)");
- conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, bb->name, pb->account);
+ account = purple_buddy_get_account(pb);
+
+ conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, bb->name, account);
if (conv != NULL)
purple_conversation_write(conv, NULL,
_("Unable to send the message, the conversation couldn't be started."),
@@ -777,14 +795,14 @@ _connected_to_buddy(gpointer data, gint source, const gchar *error)
void
bonjour_jabber_conv_match_by_name(BonjourJabberConversation *bconv) {
- PurpleBuddy *pb;
+ PurpleBuddy *pb = NULL;
+ BonjourBuddy *bb = NULL;
g_return_if_fail(bconv->ip != NULL);
g_return_if_fail(bconv->pb == NULL);
pb = purple_find_buddy(bconv->account, bconv->buddy_name);
- if (pb && pb->proto_data) {
- BonjourBuddy *bb = pb->proto_data;
+ if (pb && (bb = purple_buddy_get_protocol_data(pb))) {
const char *ip;
GSList *tmp = bb->ips;
@@ -830,11 +848,14 @@ void
bonjour_jabber_conv_match_by_ip(BonjourJabberConversation *bconv) {
BonjourJabber *jdata = ((BonjourData*) bconv->account->gc->proto_data)->jabber_data;
struct _match_buddies_by_address_t *mbba;
+ GSList *buddies;
mbba = g_new0(struct _match_buddies_by_address_t, 1);
mbba->address = bconv->ip;
- mbba->jdata = jdata;
- g_hash_table_foreach(purple_get_blist()->buddies, _match_buddies_by_address, mbba);
+
+ buddies = purple_find_buddies(jdata->account, NULL);
+ g_slist_foreach(buddies, _match_buddies_by_address, mbba);
+ g_slist_free(buddies);
/* If there is exactly one match, use it */
if(mbba->matched_buddies != NULL) {
@@ -842,7 +863,7 @@ bonjour_jabber_conv_match_by_ip(BonjourJabberConversation *bconv) {
purple_debug_error("bonjour", "More than one buddy matched for ip %s.\n", bconv->ip);
else {
PurpleBuddy *pb = mbba->matched_buddies->data;
- BonjourBuddy *bb = pb->proto_data;
+ BonjourBuddy *bb = purple_buddy_get_protocol_data(pb);
purple_debug_info("bonjour", "Matched buddy %s to incoming conversation using IP (%s)\n",
purple_buddy_get_name(pb), bconv->ip);
@@ -882,12 +903,10 @@ _find_or_start_conversation(BonjourJabber *jdata, const gchar *to)
g_return_val_if_fail(to != NULL, NULL);
pb = purple_find_buddy(jdata->account, to);
- if (pb == NULL || pb->proto_data == NULL)
+ if (pb == NULL || (bb = purple_buddy_get_protocol_data(pb)) == NULL)
/* You can not send a message to an offline buddy */
return NULL;
- bb = (BonjourBuddy *) pb->proto_data;
-
/* Check if there is a previously open conversation */
if (bb->conversation == NULL)
{
@@ -907,7 +926,9 @@ _find_or_start_conversation(BonjourJabber *jdata, const gchar *to)
}
purple_proxy_info_set_type(proxy_info, PURPLE_PROXY_NONE);
- connect_data = purple_proxy_connect(NULL, jdata->account,
+ connect_data = purple_proxy_connect(
+ purple_account_get_connection(jdata->account),
+ jdata->account,
ip, bb->port_p2pj, _connected_to_buddy, pb);
if (connect_data == NULL) {
@@ -934,7 +955,7 @@ bonjour_jabber_send_message(BonjourJabber *jdata, const gchar *to, const gchar *
int ret;
pb = _find_or_start_conversation(jdata, to);
- if (pb == NULL || pb->proto_data == NULL) {
+ if (pb == NULL || (bb = purple_buddy_get_protocol_data(pb)) == NULL) {
purple_debug_info("bonjour", "Can't send a message to an offline buddy (%s).\n", to);
/* You can not send a message to an offline buddy */
return -10000;
@@ -942,8 +963,6 @@ bonjour_jabber_send_message(BonjourJabber *jdata, const gchar *to, const gchar *
purple_markup_html_to_xhtml(body, &xhtml, &message);
- bb = pb->proto_data;
-
message_node = xmlnode_new("message");
xmlnode_set_attrib(message_node, "to", bb->name);
xmlnode_set_attrib(message_node, "from", purple_account_get_username(jdata->account));
@@ -993,7 +1012,7 @@ async_bonjour_jabber_close_conversation(BonjourJabberConversation *bconv) {
/* Disconnect this conv. from the buddy here so it can't be disposed of twice.*/
if(bconv->pb != NULL) {
- BonjourBuddy *bb = bconv->pb->proto_data;
+ BonjourBuddy *bb = purple_buddy_get_protocol_data(bconv->pb);
if (bb->conversation == bconv)
bb->conversation = NULL;
}
@@ -1022,7 +1041,7 @@ bonjour_jabber_close_conversation(BonjourJabberConversation *bconv)
tmp_next = xfers->next;
/* We only need to cancel this if it hasn't actually started transferring. */
/* This will change if we ever support IBB transfers. */
- if (strcmp(xfer->who, bconv->pb->name) == 0
+ if (strcmp(xfer->who, purple_buddy_get_name(bconv->pb)) == 0
&& (purple_xfer_get_status(xfer) == PURPLE_XFER_STATUS_NOT_STARTED
|| purple_xfer_get_status(xfer) == PURPLE_XFER_STATUS_UNKNOWN)) {
purple_xfer_cancel_remote(xfer);
@@ -1081,7 +1100,7 @@ bonjour_jabber_stop(BonjourJabber *jdata)
buddies = purple_find_buddies(jdata->account, NULL);
for (l = buddies; l; l = l->next) {
- BonjourBuddy *bb = ((PurpleBuddy*) l->data)->proto_data;
+ BonjourBuddy *bb = purple_buddy_get_protocol_data((PurpleBuddy*) l->data);
if (bb != NULL) {
bonjour_jabber_close_conversation(bb->conversation);
bb->conversation = NULL;
@@ -1144,15 +1163,20 @@ static gboolean
check_if_blocked(PurpleBuddy *pb)
{
gboolean blocked = FALSE;
- GSList *l;
+ GSList *l = NULL;
PurpleAccount *acc = purple_buddy_get_account(pb);
if(acc == NULL)
return FALSE;
+ acc = purple_buddy_get_account(pb);
+
for(l = acc->deny; l != NULL; l = l->next) {
- if(!purple_utf8_strcasecmp(pb->name, (char *)l->data)) {
- purple_debug_info("bonjour", "%s has been blocked by %s.\n", pb->name, acc->username);
+ const gchar *name = purple_buddy_get_name(pb);
+ const gchar *username = purple_account_get_username(acc);
+
+ if(!purple_utf8_strcasecmp(name, (char *)l->data)) {
+ purple_debug_info("bonjour", "%s has been blocked by %s.\n", name, username);
blocked = TRUE;
break;
}
@@ -1164,16 +1188,19 @@ static void
xep_iq_parse(xmlnode *packet, PurpleBuddy *pb)
{
xmlnode *child;
+ PurpleAccount *account;
+ PurpleConnection *gc;
if(check_if_blocked(pb))
return;
+ account = purple_buddy_get_account(pb);
+ gc = purple_account_get_connection(account);
+
if ((child = xmlnode_get_child(packet, "si")) || (child = xmlnode_get_child(packet, "error")))
- xep_si_parse(purple_account_get_connection(pb->account),
- packet, pb);
+ xep_si_parse(gc, packet, pb);
else
- xep_bytestreams_parse(purple_account_get_connection(pb->account),
- packet, pb);
+ xep_bytestreams_parse(gc, packet, pb);
}
int
diff --git a/libpurple/protocols/bonjour/mdns_avahi.c b/libpurple/protocols/bonjour/mdns_avahi.c
index 724bac5529..98d5f09754 100644
--- a/libpurple/protocols/bonjour/mdns_avahi.c
+++ b/libpurple/protocols/bonjour/mdns_avahi.c
@@ -124,7 +124,7 @@ _resolver_callback(AvahiServiceResolver *r, AvahiIfIndex interface, AvahiProtoco
g_return_if_fail(r != NULL);
pb = purple_find_buddy(account, name);
- bb = (pb != NULL) ? pb->proto_data : NULL;
+ bb = (pb != NULL) ? purple_buddy_get_protocol_data(pb) : NULL;
switch (event) {
case AVAHI_RESOLVER_FAILURE:
@@ -252,7 +252,7 @@ _browser_callback(AvahiServiceBrowser *b, AvahiIfIndex interface,
purple_debug_info("bonjour", "_browser_callback - Remove service\n");
pb = purple_find_buddy(account, name);
if (pb != NULL) {
- BonjourBuddy *bb = pb->proto_data;
+ BonjourBuddy *bb = purple_buddy_get_protocol_data(pb);
AvahiBuddyImplData *b_impl;
GSList *l;
AvahiSvcResolverData *rd_search;
@@ -357,14 +357,16 @@ _buddy_icon_record_cb(AvahiRecordBrowser *b, AvahiIfIndex interface, AvahiProtoc
AvahiBuddyImplData *idata = buddy->mdns_impl_data;
switch (event) {
+ case AVAHI_BROWSER_CACHE_EXHAUSTED:
+ case AVAHI_BROWSER_ALL_FOR_NOW:
+ /* Ignore these "meta" informational events */
+ return;
case AVAHI_BROWSER_NEW:
bonjour_buddy_got_buddy_icon(buddy, rdata, size);
break;
case AVAHI_BROWSER_REMOVE:
- case AVAHI_BROWSER_CACHE_EXHAUSTED:
- case AVAHI_BROWSER_ALL_FOR_NOW:
case AVAHI_BROWSER_FAILURE:
- purple_debug_error("bonjour", "Error rerieving buddy icon record: %s\n",
+ purple_debug_error("bonjour", "Error retrieving buddy icon record: %s\n",
avahi_strerror(avahi_client_errno(avahi_record_browser_get_client(b))));
break;
}
diff --git a/libpurple/protocols/bonjour/parser.c b/libpurple/protocols/bonjour/parser.c
index af71ac4087..b5fbbd4a4d 100644
--- a/libpurple/protocols/bonjour/parser.c
+++ b/libpurple/protocols/bonjour/parser.c
@@ -91,14 +91,12 @@ bonjour_parser_element_start_libxml(void *user_data,
xmlnode_set_namespace(node, (const char*) namespace);
for(i=0; i < nb_attributes * 5; i+=5) {
+ const char *name = (const char *)attributes[i];
+ const char *prefix = (const char *)attributes[i+1];
+ const char *attrib_ns = (const char *)attributes[i+2];
char *txt;
int attrib_len = attributes[i+4] - attributes[i+3];
char *attrib = g_malloc(attrib_len + 1);
- char *attrib_ns = NULL;
-
- if (attributes[i+2]) {
- attrib_ns = g_strdup((char*)attributes[i+2]);
- }
memcpy(attrib, attributes[i+3], attrib_len);
attrib[attrib_len] = '\0';
@@ -106,9 +104,8 @@ bonjour_parser_element_start_libxml(void *user_data,
txt = attrib;
attrib = purple_unescape_html(txt);
g_free(txt);
- xmlnode_set_attrib_with_namespace(node, (const char*) attributes[i], attrib_ns, attrib);
+ xmlnode_set_attrib_full(node, name, attrib_ns, prefix, attrib);
g_free(attrib);
- g_free(attrib_ns);
}
bconv->current = node;
diff --git a/libpurple/protocols/gg/buddylist.c b/libpurple/protocols/gg/buddylist.c
index 13cf4ba740..f83e6b0fad 100644
--- a/libpurple/protocols/gg/buddylist.c
+++ b/libpurple/protocols/gg/buddylist.c
@@ -40,48 +40,33 @@ void ggp_buddylist_send(PurpleConnection *gc)
{
GGPInfo *info = gc->proto_data;
PurpleAccount *account = purple_connection_get_account(gc);
-
- PurpleBuddyList *blist;
- PurpleBlistNode *gnode, *cnode, *bnode;
- PurpleBuddy *buddy;
- uin_t *userlist = NULL;
- gchar *types = NULL;
- int size = 0, ret = 0;
-
- if ((blist = purple_get_blist()) == NULL)
- return;
-
- for (gnode = blist->root; gnode != NULL; gnode = gnode->next) {
- if (!PURPLE_BLIST_NODE_IS_GROUP(gnode))
- continue;
-
- for (cnode = gnode->child; cnode != NULL; cnode = cnode->next) {
- if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
- continue;
-
- for (bnode = cnode->child; bnode != NULL; bnode = bnode->next) {
- if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
- continue;
-
- buddy = (PurpleBuddy *)bnode;
-
- if (buddy->account != account)
- continue;
-
- size++;
- userlist = (uin_t *) g_renew(uin_t, userlist, size);
- types = (gchar *) g_renew(gchar, types, size);
- userlist[size - 1] = ggp_str_to_uin(buddy->name);
- types[size - 1] = GG_USER_NORMAL;
- purple_debug_info("gg", "ggp_buddylist_send: adding %d\n",
- userlist[size - 1]);
- }
- }
+ GSList *buddies;
+ uin_t *userlist;
+ gchar *types;
+ int i = 0, ret = 0;
+ int size;
+
+ buddies = purple_find_buddies(account, NULL);
+
+ size = g_slist_length(buddies);
+ userlist = g_new(uin_t, size);
+ types = g_new(gchar, size);
+
+ for (buddies = purple_find_buddies(account, NULL); buddies;
+ buddies = g_slist_delete_link(buddies, buddies), ++i)
+ {
+ PurpleBuddy *buddy = buddies->data;
+ const gchar *name = purple_buddy_get_name(buddy);
+
+ userlist[i] = ggp_str_to_uin(name);
+ types[i] = GG_USER_NORMAL;
+ purple_debug_info("gg", "ggp_buddylist_send: adding %d\n",
+ userlist[i]);
}
ret = gg_notify_ex(info->session, userlist, types, size);
purple_debug_info("gg", "send: ret=%d; size=%d\n", ret, size);
-
+
if (userlist) {
g_free(userlist);
g_free(types);
@@ -169,91 +154,28 @@ void ggp_buddylist_load(PurpleConnection *gc, char *buddylist)
}
/* }}} */
-/* void ggp_buddylist_offline(PurpleConnection *gc) {{{ */
-void ggp_buddylist_offline(PurpleConnection *gc)
-{
- PurpleAccount *account = purple_connection_get_account(gc);
- PurpleBuddyList *blist;
- PurpleBlistNode *gnode, *cnode, *bnode;
- PurpleBuddy *buddy;
-
- if ((blist = purple_get_blist()) == NULL)
- return;
-
- for (gnode = blist->root; gnode != NULL; gnode = gnode->next) {
- if (!PURPLE_BLIST_NODE_IS_GROUP(gnode))
- continue;
-
- for (cnode = gnode->child; cnode != NULL; cnode = cnode->next) {
- if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
- continue;
-
- for (bnode = cnode->child; bnode != NULL; bnode = bnode->next) {
- if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
- continue;
-
- buddy = (PurpleBuddy *)bnode;
-
- if (buddy->account != account)
- continue;
-
- purple_prpl_got_user_status(
- account, buddy->name, "offline", NULL);
-
- purple_debug_info("gg",
- "ggp_buddylist_offline: gone: %s\n",
- buddy->name);
- }
- }
- }
-}
-/* }}} */
-
/* char *ggp_buddylist_dump(PurpleAccount *account) {{{ */
char *ggp_buddylist_dump(PurpleAccount *account)
{
- PurpleBuddyList *blist;
- PurpleBlistNode *gnode, *cnode, *bnode;
- PurpleGroup *group;
- PurpleBuddy *buddy;
- GString *buddylist;
+ GSList *buddies;
+ GString *buddylist = g_string_sized_new(1024);
char *ptr;
- if ((blist = purple_get_blist()) == NULL)
- return NULL;
-
- buddylist = g_string_sized_new(1024);
-
- for (gnode = blist->root; gnode != NULL; gnode = gnode->next) {
- if (!PURPLE_BLIST_NODE_IS_GROUP(gnode))
- continue;
-
- group = (PurpleGroup *)gnode;
-
- for (cnode = gnode->child; cnode != NULL; cnode = cnode->next) {
- if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
- continue;
-
- for (bnode = cnode->child; bnode != NULL; bnode = bnode->next) {
- gchar *name, *alias, *gname;
-
- if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
- continue;
-
- buddy = (PurpleBuddy *)bnode;
- if (buddy->account != account)
- continue;
-
- name = buddy->name;
- alias = buddy->alias ? buddy->alias : buddy->name;
- gname = group->name;
-
- g_string_append_printf(buddylist,
- "%s;%s;%s;%s;%s;%s;%s;%s%s\r\n",
- alias, alias, alias, alias,
- "", gname, name, "", "");
- }
- }
+ for (buddies = purple_find_buddies(account, NULL); buddies;
+ buddies = g_slist_delete_link(buddies, buddies)) {
+ PurpleBuddy *buddy = buddies->data;
+ PurpleGroup *group = purple_buddy_get_group(buddy);
+ const char *bname = purple_buddy_get_name(buddy);
+ const char *gname = purple_group_get_name(group);
+ const char *alias = purple_buddy_get_alias(buddy);
+
+ if (alias == NULL)
+ alias = bname;
+
+ g_string_append_printf(buddylist,
+ "%s;%s;%s;%s;%s;%s;%s;%s%s\r\n",
+ alias, alias, alias, alias,
+ "", gname, bname, "", "");
}
ptr = charset_convert(buddylist->str, "UTF-8", "CP1250");
diff --git a/libpurple/protocols/gg/buddylist.h b/libpurple/protocols/gg/buddylist.h
index ed31974db6..86a47b3292 100644
--- a/libpurple/protocols/gg/buddylist.h
+++ b/libpurple/protocols/gg/buddylist.h
@@ -31,7 +31,7 @@ void
ggp_buddylist_send(PurpleConnection *gc);
/**
- * Load buddylist from server into the rooster.
+ * Load buddylist from server into the roster.
*
* @param gc PurpleConnection
* @param buddylist Pointer to the buddylist that will be loaded.
@@ -41,14 +41,6 @@ void
ggp_buddylist_load(PurpleConnection *gc, char *buddylist);
/**
- * Set offline status for all buddies.
- *
- * @param gc Connection handler
- */
-void
-ggp_buddylist_offline(PurpleConnection *gc);
-
-/**
* Get all the buddies in the current account.
*
* @param account Current account.
diff --git a/libpurple/protocols/gg/gg.c b/libpurple/protocols/gg/gg.c
index cfe007629b..64d872bab3 100644
--- a/libpurple/protocols/gg/gg.c
+++ b/libpurple/protocols/gg/gg.c
@@ -1759,6 +1759,7 @@ static void ggp_login(PurpleAccount *account)
PurpleStatus *status;
struct gg_login_params *glp;
GGPInfo *info;
+ const char *address;
if (ggp_setup_proxy(account) == -1)
return;
@@ -1789,6 +1790,26 @@ static void ggp_login(PurpleAccount *account)
glp->status = ggp_to_gg_status(status, &glp->status_descr);
glp->tls = 0;
+ address = purple_account_get_string(account, "gg_server", "");
+ if (address && *address) {
+ struct in_addr *addr = gg_gethostbyname(address);
+
+ purple_debug_info("gg", "Using gg server given by user (%s)\n", address);
+
+ if (addr == NULL) {
+ purple_debug_error("gg", "gg_gethostbyname returned error (%d): %s\n",
+ errno, g_strerror(errno));
+ purple_connection_error_reason(gc,
+ PURPLE_CONNECTION_ERROR_NETWORK_ERROR, /* should this be a settings error? */
+ _("Unable to resolve server"));
+ return;
+ }
+
+ glp->server_addr = inet_addr(inet_ntoa(*addr));
+ glp->server_port = 8074;
+ } else
+ purple_debug_info("gg", "Trying to retrieve address from gg appmsg service\n");
+
info->session = gg_login(glp);
if (info->session == NULL) {
purple_connection_error_reason (gc,
@@ -1837,8 +1858,6 @@ static void ggp_close(PurpleConnection *gc)
if (gc->inpa > 0)
purple_input_remove(gc->inpa);
- ggp_buddylist_offline(gc);
-
purple_debug_info("gg", "Connection closed.\n");
}
@@ -2052,11 +2071,12 @@ static void ggp_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup
{
PurpleAccount *account;
GGPInfo *info = gc->proto_data;
+ const gchar *name = purple_buddy_get_name(buddy);
- gg_add_notify(info->session, ggp_str_to_uin(buddy->name));
+ gg_add_notify(info->session, ggp_str_to_uin(name));
account = purple_connection_get_account(gc);
- if (strcmp(purple_account_get_username(account), buddy->name) == 0) {
+ if (strcmp(purple_account_get_username(account), name) == 0) {
ggp_status_fake_to_self(account);
}
}
@@ -2066,7 +2086,7 @@ static void ggp_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy,
{
GGPInfo *info = gc->proto_data;
- gg_remove_notify(info->session, ggp_str_to_uin(buddy->name));
+ gg_remove_notify(info->session, ggp_str_to_uin(purple_buddy_get_name(buddy)));
}
static void ggp_join_chat(PurpleConnection *gc, GHashTable *data)
@@ -2292,13 +2312,13 @@ static PurplePluginProtocolInfo prpl_info =
NULL, /* whiteboard_prpl_ops */
NULL, /* send_raw */
NULL, /* roomlist_room_serialize */
-
- /* padding */
- NULL,
- NULL,
- NULL,
+ NULL, /* unregister_user */
+ NULL, /* send_attention */
+ NULL, /* get_attention_types */
sizeof(PurplePluginProtocolInfo), /* struct_size */
- NULL
+ NULL, /* get_account_text_table */
+ NULL, /* initiate_media */
+ NULL /* can_do_media */
};
static PurplePluginInfo info = {
@@ -2368,6 +2388,11 @@ static void init_plugin(PurplePlugin *plugin)
prpl_info.protocol_options = g_list_append(prpl_info.protocol_options,
option);
+ option = purple_account_option_string_new(_("GG server"),
+ "gg_server", "");
+ prpl_info.protocol_options = g_list_append(prpl_info.protocol_options,
+ option);
+
my_protocol = plugin;
gg_debug_handler = purple_gg_debug_handler;
diff --git a/libpurple/protocols/irc/cmds.c b/libpurple/protocols/irc/cmds.c
index 34a5e40a45..902a98bcf0 100644
--- a/libpurple/protocols/irc/cmds.c
+++ b/libpurple/protocols/irc/cmds.c
@@ -142,10 +142,10 @@ int irc_cmd_ctcp_action(struct irc_conn *irc, const char *cmd, const char *targe
if (purple_conversation_get_type(convo) == PURPLE_CONV_TYPE_CHAT)
serv_got_chat_in(gc, purple_conv_chat_get_id(PURPLE_CONV_CHAT(convo)),
purple_connection_get_display_name(gc),
- 0, action, time(NULL));
+ PURPLE_MESSAGE_SEND, action, time(NULL));
else
purple_conv_im_write(PURPLE_CONV_IM(convo), purple_connection_get_display_name(gc),
- action, 0, time(NULL));
+ action, PURPLE_MESSAGE_SEND, time(NULL));
g_free(action);
}
diff --git a/libpurple/protocols/irc/irc.c b/libpurple/protocols/irc/irc.c
index e0013a3d3f..2ebb758763 100644
--- a/libpurple/protocols/irc/irc.c
+++ b/libpurple/protocols/irc/irc.c
@@ -306,7 +306,7 @@ static void irc_login(PurpleAccount *account)
if (strpbrk(username, " \t\v\r\n") != NULL) {
purple_connection_error_reason (gc,
PURPLE_CONNECTION_ERROR_INVALID_SETTINGS,
- _("IRC nicks may not contain whitespace"));
+ _("IRC nick and server may not contain whitespace"));
return;
}
@@ -564,8 +564,8 @@ static void irc_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup
{
struct irc_conn *irc = (struct irc_conn *)gc->proto_data;
struct irc_buddy *ib = g_new0(struct irc_buddy, 1);
- ib->name = g_strdup(buddy->name);
- g_hash_table_insert(irc->buddies, ib->name, ib);
+ ib->name = g_strdup(purple_buddy_get_name(buddy));
+ g_hash_table_replace(irc->buddies, ib->name, ib);
/* if the timer isn't set, this is during signon, so we don't want to flood
* ourself off with ISON's, so we don't, but after that we want to know when
@@ -577,7 +577,7 @@ static void irc_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup
static void irc_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
{
struct irc_conn *irc = (struct irc_conn *)gc->proto_data;
- g_hash_table_remove(irc->buddies, buddy->name);
+ g_hash_table_remove(irc->buddies, purple_buddy_get_name(buddy));
}
static void read_input(struct irc_conn *irc, int len)
@@ -912,13 +912,13 @@ static PurplePluginProtocolInfo prpl_info =
NULL, /* whiteboard_prpl_ops */
irc_send_raw, /* send_raw */
NULL, /* roomlist_room_serialize */
-
- /* padding */
- NULL,
- NULL,
- NULL,
- sizeof(PurplePluginProtocolInfo), /* struct_size */
- NULL
+ NULL, /* unregister_user */
+ NULL, /* send_attention */
+ NULL, /* get_attention_types */
+ sizeof(PurplePluginProtocolInfo), /* struct_size */
+ NULL, /* get_account_text_table */
+ NULL, /* initiate_media */
+ NULL /* can_do_media */
};
static gboolean load_plugin (PurplePlugin *plugin) {
diff --git a/libpurple/protocols/irc/msgs.c b/libpurple/protocols/irc/msgs.c
index cf6ace69ac..f869361ea7 100644
--- a/libpurple/protocols/irc/msgs.c
+++ b/libpurple/protocols/irc/msgs.c
@@ -78,7 +78,8 @@ static void irc_connected(struct irc_conn *irc, const char *nick)
{
PurpleConnection *gc;
PurpleStatus *status;
- PurpleBlistNode *gnode, *cnode, *bnode;
+ GSList *buddies;
+ PurpleAccount *account;
if ((gc = purple_account_get_connection(irc->account)) == NULL
|| PURPLE_CONNECTION_IS_CONNECTED(gc))
@@ -86,6 +87,7 @@ static void irc_connected(struct irc_conn *irc, const char *nick)
purple_connection_set_display_name(gc, nick);
purple_connection_set_state(gc, PURPLE_CONNECTED);
+ account = purple_connection_get_account(gc);
/* If we're away then set our away message */
status = purple_account_get_active_status(irc->account);
@@ -95,24 +97,13 @@ static void irc_connected(struct irc_conn *irc, const char *nick)
}
/* this used to be in the core, but it's not now */
- 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) {
- struct irc_buddy *ib = g_new0(struct irc_buddy, 1);
- ib->name = g_strdup(b->name);
- g_hash_table_insert(irc->buddies, ib->name, ib);
- }
- }
- }
+ for (buddies = purple_find_buddies(account, NULL); buddies;
+ buddies = g_slist_delete_link(buddies, buddies))
+ {
+ PurpleBuddy *b = buddies->data;
+ struct irc_buddy *ib = g_new0(struct irc_buddy, 1);
+ ib->name = g_strdup(purple_buddy_get_name(b));
+ g_hash_table_insert(irc->buddies, ib->name, ib);
}
irc_blist_timeout(irc);
@@ -1002,10 +993,10 @@ void irc_msg_nickused(struct irc_conn *irc, const char *name, const char *from,
/* We only want to do the following dance if the connection
has not been successfully completed. If it has, just
notify the user that their /nick command didn't go. */
- buf = g_strdup_printf("The nickname \"%s\" is already being used.",
+ buf = g_strdup_printf(_("The nickname \"%s\" is already being used."),
irc->reqnick);
- purple_notify_error(gc, "Nickname in use",
- "Nickname in use", buf);
+ purple_notify_error(gc, _("Nickname in use"),
+ _("Nickname in use"), buf);
g_free(buf);
g_free(irc->reqnick);
irc->reqnick = NULL;
@@ -1182,7 +1173,7 @@ static void irc_msg_handle_privmsg(struct irc_conn *irc, const char *name, const
if (!purple_utf8_strcasecmp(to, purple_connection_get_display_name(gc))) {
serv_got_im(gc, nick, msg, 0, time(NULL));
} else {
- convo = purple_find_conversation_with_account(PURPLE_CONV_TYPE_CHAT, to, irc->account);
+ convo = purple_find_conversation_with_account(PURPLE_CONV_TYPE_CHAT, irc_nick_skip_mode(irc, to), irc->account);
if (convo)
serv_got_chat_in(gc, purple_conv_chat_get_id(PURPLE_CONV_CHAT(convo)), nick, 0, msg, time(NULL));
else
diff --git a/libpurple/protocols/jabber/Makefile.am b/libpurple/protocols/jabber/Makefile.am
index 5f46e374a9..2918f67e02 100644
--- a/libpurple/protocols/jabber/Makefile.am
+++ b/libpurple/protocols/jabber/Makefile.am
@@ -9,6 +9,8 @@ JABBERSOURCES = auth.c \
auth.h \
buddy.c \
buddy.h \
+ bosh.c \
+ bosh.h \
chat.c \
chat.h \
data.c \
@@ -17,10 +19,26 @@ JABBERSOURCES = auth.c \
disco.h \
google.c \
google.h \
+ ibb.c \
+ ibb.h \
iq.c \
iq.h \
jabber.c \
jabber.h \
+ jingle/jingle.c \
+ jingle/jingle.h \
+ jingle/content.c \
+ jingle/content.h \
+ jingle/iceudp.c \
+ jingle/iceudp.h \
+ jingle/rawudp.c \
+ jingle/rawudp.h \
+ jingle/rtp.c \
+ jingle/rtp.h \
+ jingle/session.c \
+ jingle/session.h \
+ jingle/transport.c \
+ jingle/transport.h \
jutil.c \
jutil.h \
message.c \
@@ -45,6 +63,8 @@ JABBERSOURCES = auth.c \
adhoccommands.h \
pep.c \
pep.h \
+ useravatar.c \
+ useravatar.h \
usermood.c \
usermood.h \
usernick.c \
diff --git a/libpurple/protocols/jabber/Makefile.mingw b/libpurple/protocols/jabber/Makefile.mingw
index 4c49619ed4..fbf0cf3d51 100644
--- a/libpurple/protocols/jabber/Makefile.mingw
+++ b/libpurple/protocols/jabber/Makefile.mingw
@@ -46,13 +46,22 @@ C_SRC = \
adhoccommands.c \
auth.c \
buddy.c \
+ bosh.c \
caps.c \
chat.c \
data.c \
disco.c \
google.c \
+ ibb.c \
iq.c \
jabber.c \
+ jingle/jingle.c \
+ jingle/content.c \
+ jingle/iceudp.c \
+ jingle/rawudp.c \
+ jingle/rtp.c \
+ jingle/session.c \
+ jingle/transport.c \
jutil.c \
message.c \
oob.c \
@@ -62,6 +71,7 @@ C_SRC = \
presence.c \
roster.c \
si.c \
+ useravatar.c \
usermood.c \
usernick.c \
usertune.c \
@@ -78,6 +88,7 @@ XMPP_OBJECTS = $(XMPP_C_SRC:%.c=%.o)
##
LIBS = \
-lglib-2.0 \
+ -lgobject-2.0 \
-lxml2 \
-lws2_32 \
-lintl \
diff --git a/libpurple/protocols/jabber/adhoccommands.c b/libpurple/protocols/jabber/adhoccommands.c
index eccc8ffd66..8c84d0104c 100644
--- a/libpurple/protocols/jabber/adhoccommands.c
+++ b/libpurple/protocols/jabber/adhoccommands.c
@@ -39,34 +39,23 @@ typedef struct _JabberAdHocActionInfo {
GList *actionslist;
} JabberAdHocActionInfo;
-void jabber_adhoc_disco_result_cb(JabberStream *js, xmlnode *packet, gpointer data) {
- const char *from = xmlnode_get_attrib(packet, "from");
- const char *type = xmlnode_get_attrib(packet, "type");
- const char *node;
- xmlnode *query, *item;
- JabberID *jabberid;
+static void
+jabber_adhoc_got_buddy_list(JabberStream *js, const char *from, xmlnode *query)
+{
+ JabberID *jid;
JabberBuddy *jb;
JabberBuddyResource *jbr = NULL;
-
- if(strcmp(type, "result"))
- return;
-
- query = xmlnode_get_child_with_namespace(packet,"query","http://jabber.org/protocol/disco#items");
- if(!query)
- return;
- node = xmlnode_get_attrib(query,"node");
- if(!node || strcmp(node, "http://jabber.org/protocol/commands"))
- return;
-
- if((jabberid = jabber_id_new(from))) {
- if(jabberid->resource && (jb = jabber_buddy_find(js, from, TRUE)))
- jbr = jabber_buddy_find_resource(jb, jabberid->resource);
- jabber_id_free(jabberid);
+ xmlnode *item;
+
+ if ((jid = jabber_id_new(from))) {
+ if (jid->resource && (jb = jabber_buddy_find(js, from, TRUE)))
+ jbr = jabber_buddy_find_resource(jb, jid->resource);
+ jabber_id_free(jid);
}
-
+
if(!jbr)
return;
-
+
if(jbr->commands) {
/* since the list we just received is complete, wipe the old one */
while(jbr->commands) {
@@ -78,7 +67,7 @@ void jabber_adhoc_disco_result_cb(JabberStream *js, xmlnode *packet, gpointer da
jbr->commands = g_list_delete_link(jbr->commands, jbr->commands);
}
}
-
+
for(item = query->child; item; item = item->next) {
JabberAdHocCommands *cmd;
if(item->type != XMLNODE_TYPE_TAG)
@@ -86,16 +75,39 @@ void jabber_adhoc_disco_result_cb(JabberStream *js, xmlnode *packet, gpointer da
if(strcmp(item->name, "item"))
continue;
cmd = g_new0(JabberAdHocCommands, 1);
-
+
cmd->jid = g_strdup(xmlnode_get_attrib(item,"jid"));
cmd->node = g_strdup(xmlnode_get_attrib(item,"node"));
cmd->name = g_strdup(xmlnode_get_attrib(item,"name"));
-
+
jbr->commands = g_list_append(jbr->commands,cmd);
}
}
-static void jabber_adhoc_parse(JabberStream *js, xmlnode *packet, gpointer data);
+void
+jabber_adhoc_disco_result_cb(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data)
+{
+ xmlnode *query;
+ const char *node;
+
+ if (type == JABBER_IQ_ERROR)
+ return;
+
+ query = xmlnode_get_child_with_namespace(packet, "query", "http://jabber.org/protocol/disco#items");
+ if (!query)
+ return;
+ node = xmlnode_get_attrib(query, "node");
+ if (!purple_strequal(node, "http://jabber.org/protocol/commands"))
+ return;
+
+ jabber_adhoc_got_buddy_list(js, from, query);
+}
+
+static void jabber_adhoc_parse(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data);
static void do_adhoc_action_cb(JabberStream *js, xmlnode *result, const char *actionhandle, gpointer user_data) {
xmlnode *command;
@@ -103,13 +115,13 @@ static void do_adhoc_action_cb(JabberStream *js, xmlnode *result, const char *ac
JabberAdHocActionInfo *actionInfo = user_data;
JabberIq *iq = jabber_iq_new(js, JABBER_IQ_SET);
jabber_iq_set_callback(iq, jabber_adhoc_parse, NULL);
-
+
xmlnode_set_attrib(iq->node, "to", actionInfo->who);
command = xmlnode_new_child(iq->node,"command");
xmlnode_set_namespace(command,"http://jabber.org/protocol/commands");
xmlnode_set_attrib(command,"sessionid",actionInfo->sessionid);
xmlnode_set_attrib(command,"node",actionInfo->node);
-
+
/* cancel is handled differently on ad-hoc commands than regular forms */
if(!strcmp(xmlnode_get_namespace(result),"jabber:x:data") && !strcmp(xmlnode_get_attrib(result, "type"),"cancel")) {
xmlnode_set_attrib(command,"action","cancel");
@@ -118,7 +130,7 @@ static void do_adhoc_action_cb(JabberStream *js, xmlnode *result, const char *ac
xmlnode_set_attrib(command,"action",actionhandle);
xmlnode_insert_child(command,result);
}
-
+
for(action = actionInfo->actionslist; action; action = g_list_next(action)) {
char *handle = action->data;
g_free(handle);
@@ -127,42 +139,43 @@ static void do_adhoc_action_cb(JabberStream *js, xmlnode *result, const char *ac
g_free(actionInfo->sessionid);
g_free(actionInfo->who);
g_free(actionInfo->node);
-
+
jabber_iq_send(iq);
}
-static void jabber_adhoc_parse(JabberStream *js, xmlnode *packet, gpointer data) {
+static void
+jabber_adhoc_parse(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data)
+{
xmlnode *command = xmlnode_get_child_with_namespace(packet, "command", "http://jabber.org/protocol/commands");
const char *status = xmlnode_get_attrib(command,"status");
xmlnode *xdata = xmlnode_get_child_with_namespace(command,"x","jabber:x:data");
- const char *type = xmlnode_get_attrib(packet,"type");
-
- if(type && !strcmp(type,"error")) {
+
+ if (type == JABBER_IQ_ERROR) {
char *msg = jabber_parse_error(js, packet, NULL);
if(!msg)
msg = g_strdup(_("Unknown Error"));
-
+
purple_notify_error(NULL, _("Ad-Hoc Command Failed"),
_("Ad-Hoc Command Failed"), msg);
g_free(msg);
return;
}
- if(!type || strcmp(type,"result"))
- return;
-
+
if(!status)
return;
-
+
if(!strcmp(status,"completed")) {
/* display result */
xmlnode *note = xmlnode_get_child(command,"note");
-
+
if(note) {
char *data = xmlnode_get_data(note);
- purple_notify_info(NULL, xmlnode_get_attrib(packet, "from"), data, NULL);
+ purple_notify_info(NULL, from, data, NULL);
g_free(data);
}
-
+
if(xdata)
jabber_x_data_request(js, xdata, (jabber_x_data_cb)do_adhoc_ignoreme, NULL);
return;
@@ -175,7 +188,7 @@ static void jabber_adhoc_parse(JabberStream *js, xmlnode *packet, gpointer data)
JabberAdHocActionInfo *actionInfo;
if(!xdata)
return; /* shouldn't happen */
-
+
actions = xmlnode_get_child(command,"actions");
if(!actions) {
JabberXDataAction *defaultaction = g_new0(JabberXDataAction, 1);
@@ -196,13 +209,13 @@ static void jabber_adhoc_parse(JabberStream *js, xmlnode *packet, gpointer data)
}
}
}
-
+
actionInfo = g_new0(JabberAdHocActionInfo, 1);
actionInfo->sessionid = g_strdup(xmlnode_get_attrib(command,"sessionid"));
- actionInfo->who = g_strdup(xmlnode_get_attrib(packet,"from"));
+ actionInfo->who = g_strdup(from);
actionInfo->node = g_strdup(xmlnode_get_attrib(command,"node"));
actionInfo->actionslist = actionslist;
-
+
jabber_x_data_request_with_actions(js,xdata,actionslist,actionindex,do_adhoc_action_cb,actionInfo);
}
}
@@ -211,16 +224,18 @@ void jabber_adhoc_execute_action(PurpleBlistNode *node, gpointer data) {
if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
JabberAdHocCommands *cmd = data;
PurpleBuddy *buddy = (PurpleBuddy *) node;
- JabberStream *js = purple_account_get_connection(buddy->account)->proto_data;
-
+ PurpleAccount *account = purple_buddy_get_account(buddy);
+ JabberStream *js = purple_account_get_connection(account)->proto_data;
+
jabber_adhoc_execute(js, cmd);
}
}
-static void jabber_adhoc_server_got_list_cb(JabberStream *js, xmlnode *packet, gpointer data) {
- xmlnode *query = xmlnode_get_child_with_namespace(packet, "query", "http://jabber.org/protocol/disco#items");
+static void
+jabber_adhoc_got_server_list(JabberStream *js, const char *from, xmlnode *query)
+{
xmlnode *item;
-
+
if(!query)
return;
@@ -233,7 +248,7 @@ static void jabber_adhoc_server_got_list_cb(JabberStream *js, xmlnode *packet, g
g_free(cmd);
js->commands = g_list_delete_link(js->commands, js->commands);
}
-
+
/* re-fill list */
for(item = query->child; item; item = item->next) {
JabberAdHocCommands *cmd;
@@ -245,18 +260,41 @@ static void jabber_adhoc_server_got_list_cb(JabberStream *js, xmlnode *packet, g
cmd->jid = g_strdup(xmlnode_get_attrib(item,"jid"));
cmd->node = g_strdup(xmlnode_get_attrib(item,"node"));
cmd->name = g_strdup(xmlnode_get_attrib(item,"name"));
-
+
js->commands = g_list_append(js->commands,cmd);
}
+
+ if (js->state == JABBER_STREAM_CONNECTED)
+ purple_prpl_got_account_actions(purple_connection_get_account(js->gc));
+}
+
+static void
+jabber_adhoc_server_got_list_cb(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data)
+{
+ xmlnode *query = xmlnode_get_child_with_namespace(packet, "query", "http://jabber.org/protocol/disco#items");
+
+ jabber_adhoc_got_server_list(js, from, query);
+
+}
+
+void jabber_adhoc_got_list(JabberStream *js, const char *from, xmlnode *query)
+{
+ if (purple_strequal(from, js->user->domain)) {
+ jabber_adhoc_got_server_list(js, from, query);
+ } else {
+ jabber_adhoc_got_buddy_list(js, from, query);
+ }
}
void jabber_adhoc_server_get_list(JabberStream *js) {
JabberIq *iq = jabber_iq_new_query(js,JABBER_IQ_GET,"http://jabber.org/protocol/disco#items");
xmlnode *query = xmlnode_get_child_with_namespace(iq->node,"query","http://jabber.org/protocol/disco#items");
-
+
xmlnode_set_attrib(iq->node,"to",js->user->domain);
xmlnode_set_attrib(query,"node","http://jabber.org/protocol/commands");
-
+
jabber_iq_set_callback(iq,jabber_adhoc_server_got_list_cb,NULL);
jabber_iq_send(iq);
}
@@ -268,9 +306,9 @@ void jabber_adhoc_execute(JabberStream *js, JabberAdHocCommands *cmd) {
xmlnode_set_namespace(command,"http://jabber.org/protocol/commands");
xmlnode_set_attrib(command,"node",cmd->node);
xmlnode_set_attrib(command,"action","execute");
-
+
jabber_iq_set_callback(iq,jabber_adhoc_parse,NULL);
-
+
jabber_iq_send(iq);
}
@@ -279,7 +317,7 @@ static void jabber_adhoc_server_execute(PurplePluginAction *action) {
if(cmd) {
PurpleConnection *gc = (PurpleConnection *) action->context;
JabberStream *js = gc->proto_data;
-
+
jabber_adhoc_execute(js, cmd);
}
}
@@ -287,7 +325,7 @@ static void jabber_adhoc_server_execute(PurplePluginAction *action) {
void jabber_adhoc_init_server_commands(JabberStream *js, GList **m) {
GList *cmdlst;
JabberBuddy *jb;
-
+
/* also add commands for other clients connected to the same account on another resource */
char *accountname = g_strdup_printf("%s@%s", js->user->node, js->user->domain);
if((jb = jabber_buddy_find(js, accountname, TRUE))) {
@@ -306,7 +344,7 @@ void jabber_adhoc_init_server_commands(JabberStream *js, GList **m) {
}
}
g_free(accountname);
-
+
/* now add server commands */
for(cmdlst = js->commands; cmdlst; cmdlst = g_list_next(cmdlst)) {
JabberAdHocCommands *cmd = cmdlst->data;
diff --git a/libpurple/protocols/jabber/adhoccommands.h b/libpurple/protocols/jabber/adhoccommands.h
index 46559ee249..407467466c 100644
--- a/libpurple/protocols/jabber/adhoccommands.h
+++ b/libpurple/protocols/jabber/adhoccommands.h
@@ -19,21 +19,25 @@
*
*/
-#ifndef _PURPLE_JABBER_ADHOCCOMMANDS_H_
-#define _PURPLE_JABBER_ADHOCCOMMANDS_H_
+#ifndef PURPLE_JABBER_ADHOCCOMMANDS_H_
+#define PURPLE_JABBER_ADHOCCOMMANDS_H_
#include "jabber.h"
/* Implementation of XEP-0050 */
-void jabber_adhoc_disco_result_cb(JabberStream *js, xmlnode *packet, gpointer data);
+void jabber_adhoc_disco_result_cb(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data);
void jabber_adhoc_execute(JabberStream *js, JabberAdHocCommands *cmd);
void jabber_adhoc_execute_action(PurpleBlistNode *node, gpointer data);
+void jabber_adhoc_got_list(JabberStream *js, const char *from, xmlnode *query);
+
void jabber_adhoc_server_get_list(JabberStream *js);
void jabber_adhoc_init_server_commands(JabberStream *js, GList **m);
-#endif /* _PURPLE_JABBER_ADHOCCOMMANDS_H_ */
+#endif /* PURPLE_JABBER_ADHOCCOMMANDS_H_ */
diff --git a/libpurple/protocols/jabber/auth.c b/libpurple/protocols/jabber/auth.c
index e93ea161e6..24bab24442 100644
--- a/libpurple/protocols/jabber/auth.c
+++ b/libpurple/protocols/jabber/auth.c
@@ -30,14 +30,16 @@
#include "util.h"
#include "xmlnode.h"
-#include "jutil.h"
#include "auth.h"
+#include "disco.h"
#include "jabber.h"
+#include "jutil.h"
#include "iq.h"
#include "notify.h"
-static void auth_old_result_cb(JabberStream *js, xmlnode *packet,
- gpointer data);
+static void auth_old_result_cb(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data);
gboolean
jabber_process_starttls(JabberStream *js, xmlnode *packet)
@@ -281,7 +283,7 @@ static void jabber_auth_start_cyrus(JabberStream *js)
secprops.min_ssf = 0;
secprops.security_flags = SASL_SEC_NOANONYMOUS;
- if (!js->gsc) {
+ if (!jabber_stream_is_ssl(js)) {
secprops.max_ssf = -1;
secprops.maxbufsize = 4096;
plaintext = purple_account_get_bool(js->gc->account, "auth_plain_in_clear", FALSE);
@@ -384,7 +386,7 @@ static void jabber_auth_start_cyrus(JabberStream *js)
}
/* Remove space which separated this mech from the next */
if (strlen(js->sasl_mechs->str) > 0 && ((js->sasl_mechs->str)[0] == ' ')) {
- g_string_erase(js->sasl_mechs, 0, 1);
+ g_string_erase(js->sasl_mechs, 0, 1);
}
again = TRUE;
}
@@ -397,7 +399,7 @@ static void jabber_auth_start_cyrus(JabberStream *js)
auth = xmlnode_new("auth");
xmlnode_set_namespace(auth, "urn:ietf:params:xml:ns:xmpp-sasl");
xmlnode_set_attrib(auth, "mechanism", js->current_mech);
-
+
xmlnode_set_attrib(auth, "xmlns:ga", "http://www.google.com/talk/protocol/auth");
xmlnode_set_attrib(auth, "ga:client-uses-full-bind-result", "true");
@@ -544,7 +546,7 @@ jabber_auth_start(JabberStream *js, xmlnode *packet)
} else if(plain) {
js->auth_type = JABBER_AUTH_PLAIN;
- if(js->gsc == NULL && !purple_account_get_bool(js->gc->account, "auth_plain_in_clear", FALSE)) {
+ if(!jabber_stream_is_ssl(js) && !purple_account_get_bool(js->gc->account, "auth_plain_in_clear", FALSE)) {
char *msg = g_strdup_printf(_("%s requires plaintext authentication over an unencrypted connection. Allow this and continue authentication?"),
js->gc->account->username);
purple_request_yes_no(js->gc, _("Plaintext Authentication"),
@@ -566,12 +568,12 @@ jabber_auth_start(JabberStream *js, xmlnode *packet)
#endif
}
-static void auth_old_result_cb(JabberStream *js, xmlnode *packet, gpointer data)
+static void auth_old_result_cb(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data)
{
- const char *type = xmlnode_get_attrib(packet, "type");
-
- if(type && !strcmp(type, "result")) {
- jabber_stream_set_state(js, JABBER_STREAM_CONNECTED);
+ if (type == JABBER_IQ_RESULT) {
+ jabber_disco_items_server(js);
} else {
PurpleConnectionError reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR;
char *msg = jabber_parse_error(js, packet, &reason);
@@ -593,24 +595,20 @@ static void auth_old_result_cb(JabberStream *js, xmlnode *packet, gpointer data)
}
}
-static void auth_old_cb(JabberStream *js, xmlnode *packet, gpointer data)
+static void auth_old_cb(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data)
{
JabberIq *iq;
xmlnode *query, *x;
- const char *type = xmlnode_get_attrib(packet, "type");
const char *pw = purple_connection_get_password(js->gc);
- if(!type) {
- purple_connection_error_reason (js->gc,
- PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
- _("Invalid response from server."));
- return;
- } else if(!strcmp(type, "error")) {
+ if (type == JABBER_IQ_ERROR) {
PurpleConnectionError reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR;
char *msg = jabber_parse_error(js, packet, &reason);
purple_connection_error_reason (js->gc, reason, msg);
g_free(msg);
- } else if(!strcmp(type, "result")) {
+ } else if (type == JABBER_IQ_RESULT) {
query = xmlnode_get_child(packet, "query");
if(js->stream_id && xmlnode_get_child(query, "digest")) {
char *s, *hash;
@@ -662,7 +660,7 @@ static void auth_old_cb(JabberStream *js, xmlnode *packet, gpointer data)
jabber_iq_send(iq);
} else if(xmlnode_get_child(query, "password")) {
- if(js->gsc == NULL && !purple_account_get_bool(js->gc->account,
+ if(!jabber_stream_is_ssl(js) && !purple_account_get_bool(js->gc->account,
"auth_plain_in_clear", FALSE)) {
char *msg = g_strdup_printf(_("%s requires plaintext authentication over an unencrypted connection. Allow this and continue authentication?"),
js->gc->account->username);
@@ -691,6 +689,18 @@ void jabber_auth_start_old(JabberStream *js)
JabberIq *iq;
xmlnode *query, *username;
+ /* We can end up here without encryption if the server doesn't support
+ * <stream:features/> and we're not using old-style SSL. If the user
+ * is requiring SSL/TLS, we need to enforce it.
+ */
+ if (!jabber_stream_is_ssl(js) &&
+ purple_account_get_bool(purple_connection_get_account(js->gc), "require_tls", FALSE)) {
+ purple_connection_error_reason (js->gc,
+ PURPLE_CONNECTION_ERROR_ENCRYPTION_ERROR,
+ _("You require encryption, but it is not available on this server."));
+ return;
+ }
+
#ifdef HAVE_CYRUS_SASL
/* If we have Cyrus SASL, then passwords will have been set
* to OPTIONAL for this protocol. So, we need to do our own
@@ -979,7 +989,20 @@ jabber_auth_handle_challenge(JabberStream *js, xmlnode *packet)
response = xmlnode_new("response");
xmlnode_set_namespace(response, "urn:ietf:params:xml:ns:xmpp-sasl");
if (clen > 0) {
- enc_out = purple_base64_encode((unsigned char*)c_out, clen);
+ /* Cyrus SASL 2.1.22 appears to contain code to add the charset
+ * to the response but there is no possibility it will be executed.
+ * My reading of the digestmd5 plugin indicates the username and
+ * realm are always encoded in UTF-8 (they seem to be the values
+ * we pass in), so we need to ensure charset=utf-8 is set.
+ */
+ if (strstr(c_out, ",charset="))
+ enc_out = purple_base64_encode((unsigned char*)c_out, clen);
+ else {
+ char *tmp = g_strdup_printf("%s,charset=utf-8", c_out);
+ enc_out = purple_base64_encode((unsigned char*)tmp, clen + 14);
+ g_free(tmp);
+ }
+
xmlnode_insert_data(response, enc_out, -1);
g_free(enc_out);
}
@@ -1057,13 +1080,13 @@ void jabber_auth_handle_failure(JabberStream *js, xmlnode *packet)
}
/* Remove space which separated this mech from the next */
if (strlen(js->sasl_mechs->str) > 0 && ((js->sasl_mechs->str)[0] == ' ')) {
- g_string_erase(js->sasl_mechs, 0, 1);
- }
+ g_string_erase(js->sasl_mechs, 0, 1);
+ }
}
if (strlen(js->sasl_mechs->str)) {
/* If we have remaining mechs to try, do so */
sasl_dispose(&js->sasl);
-
+
jabber_auth_start_cyrus(js);
return;
}
diff --git a/libpurple/protocols/jabber/auth.h b/libpurple/protocols/jabber/auth.h
index 89783da561..f89133f380 100644
--- a/libpurple/protocols/jabber/auth.h
+++ b/libpurple/protocols/jabber/auth.h
@@ -19,8 +19,8 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
*/
-#ifndef _PURPLE_JABBER_AUTH_H_
-#define _PURPLE_JABBER_AUTH_H_
+#ifndef PURPLE_JABBER_AUTH_H_
+#define PURPLE_JABBER_AUTH_H_
#include "jabber.h"
#include "xmlnode.h"
@@ -32,4 +32,4 @@ void jabber_auth_handle_challenge(JabberStream *js, xmlnode *packet);
void jabber_auth_handle_success(JabberStream *js, xmlnode *packet);
void jabber_auth_handle_failure(JabberStream *js, xmlnode *packet);
-#endif /* _PURPLE_JABBER_AUTH_H_ */
+#endif /* PURPLE_JABBER_AUTH_H_ */
diff --git a/libpurple/protocols/jabber/bosh.c b/libpurple/protocols/jabber/bosh.c
new file mode 100644
index 0000000000..ab781dab4d
--- /dev/null
+++ b/libpurple/protocols/jabber/bosh.c
@@ -0,0 +1,919 @@
+/*
+ * purple - Jabber Protocol Plugin
+ *
+ * Copyright (C) 2008, Tobias Markmann <tmarkmann@googlemail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ *
+ */
+#include "internal.h"
+#include "circbuffer.h"
+#include "core.h"
+#include "cipher.h"
+#include "debug.h"
+#include "prpl.h"
+#include "util.h"
+#include "xmlnode.h"
+
+#include "bosh.h"
+
+#define MAX_HTTP_CONNECTIONS 2
+#define MAX_FAILED_CONNECTIONS 3
+
+typedef struct _PurpleHTTPConnection PurpleHTTPConnection;
+
+typedef void (*PurpleBOSHConnectionConnectFunction)(PurpleBOSHConnection *conn);
+typedef void (*PurpleBOSHConnectionReceiveFunction)(PurpleBOSHConnection *conn, xmlnode *node);
+
+static char *bosh_useragent = NULL;
+
+typedef enum {
+ PACKET_TERMINATE,
+ PACKET_STREAM_RESTART,
+ PACKET_NORMAL,
+} PurpleBOSHPacketType;
+
+struct _PurpleBOSHConnection {
+ JabberStream *js;
+ gboolean pipelining;
+ PurpleHTTPConnection *connections[MAX_HTTP_CONNECTIONS];
+ unsigned short failed_connections;
+
+ gboolean ready;
+ gboolean ssl;
+
+ /* decoded URL */
+ char *host;
+ int port;
+ char *path;
+
+ /* Must be big enough to hold 2^53 - 1 */
+ guint64 rid;
+ char *sid;
+
+ unsigned int inactivity_timer;
+ int max_inactivity;
+ int wait;
+
+ PurpleCircBuffer *pending;
+ int max_requests;
+ int requests;
+
+ PurpleBOSHConnectionConnectFunction connect_cb;
+ PurpleBOSHConnectionReceiveFunction receive_cb;
+};
+
+struct _PurpleHTTPConnection {
+ PurpleBOSHConnection *bosh;
+ PurpleSslConnection *psc;
+ int fd;
+ guint readh;
+ guint writeh;
+
+ PurpleCircBuffer *write_buffer;
+
+ gboolean ready;
+ int requests; /* number of outstanding HTTP requests */
+
+ GString *buf;
+ gboolean headers_done;
+ gsize handled_len;
+ gsize body_len;
+
+};
+
+static void http_connection_connect(PurpleHTTPConnection *conn);
+static void http_connection_send_request(PurpleHTTPConnection *conn,
+ const GString *req);
+
+void jabber_bosh_init(void)
+{
+ GHashTable *ui_info = purple_core_get_ui_info();
+ const char *ui_name = NULL;
+ const char *ui_version = NULL;
+
+ if (ui_info) {
+ ui_name = g_hash_table_lookup(ui_info, "name");
+ ui_version = g_hash_table_lookup(ui_info, "version");
+ }
+
+ if (ui_name)
+ bosh_useragent = g_strdup_printf("%s%s%s (libpurple " VERSION ")",
+ ui_name, ui_version ? " " : "",
+ ui_version ? ui_version : "");
+ else
+ bosh_useragent = g_strdup("libpurple " VERSION);
+}
+
+void jabber_bosh_uninit(void)
+{
+ g_free(bosh_useragent);
+ bosh_useragent = NULL;
+}
+
+static PurpleHTTPConnection*
+jabber_bosh_http_connection_init(PurpleBOSHConnection *bosh)
+{
+ PurpleHTTPConnection *conn = g_new0(PurpleHTTPConnection, 1);
+ conn->bosh = bosh;
+ conn->fd = -1;
+ conn->ready = FALSE;
+
+ conn->write_buffer = purple_circ_buffer_new(0 /* default grow size */);
+
+ return conn;
+}
+
+static void
+jabber_bosh_http_connection_destroy(PurpleHTTPConnection *conn)
+{
+ if (conn->buf)
+ g_string_free(conn->buf, TRUE);
+
+ if (conn->write_buffer)
+ purple_circ_buffer_destroy(conn->write_buffer);
+ if (conn->readh)
+ purple_input_remove(conn->readh);
+ if (conn->writeh)
+ purple_input_remove(conn->writeh);
+ if (conn->psc)
+ purple_ssl_close(conn->psc);
+ if (conn->fd >= 0)
+ close(conn->fd);
+
+ purple_proxy_connect_cancel_with_handle(conn);
+
+ g_free(conn);
+}
+
+PurpleBOSHConnection*
+jabber_bosh_connection_init(JabberStream *js, const char *url)
+{
+ PurpleBOSHConnection *conn;
+ char *host, *path, *user, *passwd;
+ int port;
+
+ if (!purple_url_parse(url, &host, &port, &path, &user, &passwd)) {
+ purple_debug_info("jabber", "Unable to parse given URL.\n");
+ return NULL;
+ }
+
+ conn = g_new0(PurpleBOSHConnection, 1);
+ conn->host = host;
+ conn->port = port;
+ conn->path = g_strdup_printf("/%s", path);
+ g_free(path);
+ conn->pipelining = TRUE;
+
+ if ((user && user[0] != '\0') || (passwd && passwd[0] != '\0')) {
+ purple_debug_info("jabber", "Ignoring unexpected username and password "
+ "in BOSH URL.\n");
+ }
+
+ g_free(user);
+ g_free(passwd);
+
+ conn->js = js;
+
+ /*
+ * Random 64-bit integer masked off by 2^52 - 1.
+ *
+ * This should produce a random integer in the range [0, 2^52). It's
+ * unlikely we'll send enough packets in one session to overflow the rid.
+ */
+ conn->rid = ((guint64)g_random_int() << 32) | g_random_int();
+ conn->rid &= 0xFFFFFFFFFFFFFLL;
+
+ conn->pending = purple_circ_buffer_new(0 /* default grow size */);
+
+ conn->ready = FALSE;
+ if (purple_strcasestr(url, "https://") != NULL)
+ conn->ssl = TRUE;
+ else
+ conn->ssl = FALSE;
+
+ conn->connections[0] = jabber_bosh_http_connection_init(conn);
+
+ return conn;
+}
+
+void
+jabber_bosh_connection_destroy(PurpleBOSHConnection *conn)
+{
+ int i;
+
+ g_free(conn->host);
+ g_free(conn->path);
+
+ if (conn->inactivity_timer)
+ purple_timeout_remove(conn->inactivity_timer);
+
+ purple_circ_buffer_destroy(conn->pending);
+
+ for (i = 0; i < MAX_HTTP_CONNECTIONS; ++i) {
+ if (conn->connections[i])
+ jabber_bosh_http_connection_destroy(conn->connections[i]);
+ }
+
+ g_free(conn);
+}
+
+gboolean jabber_bosh_connection_is_ssl(PurpleBOSHConnection *conn)
+{
+ return conn->ssl;
+}
+
+static PurpleHTTPConnection *
+find_available_http_connection(PurpleBOSHConnection *conn)
+{
+ int i;
+
+ /* Easy solution: Does everyone involved support pipelining? Hooray! Just use
+ * one TCP connection! */
+ if (conn->pipelining)
+ return conn->connections[0];
+
+ /* First loop, look for a connection that's ready */
+ for (i = 0; i < MAX_HTTP_CONNECTIONS; ++i) {
+ if (conn->connections[i] && conn->connections[i]->ready &&
+ conn->connections[i]->requests == 0)
+ return conn->connections[i];
+ }
+
+ /* Second loop, look for one that's NULL and create a new connection */
+ for (i = 0; i < MAX_HTTP_CONNECTIONS; ++i) {
+ if (!conn->connections[i]) {
+ conn->connections[i] = jabber_bosh_http_connection_init(conn);
+
+ http_connection_connect(conn->connections[i]);
+ return NULL;
+ }
+ }
+
+ /* None available. */
+ return NULL;
+}
+
+static void
+jabber_bosh_connection_send(PurpleBOSHConnection *conn, PurpleBOSHPacketType type,
+ const char *data)
+{
+ PurpleHTTPConnection *chosen;
+ GString *packet = NULL;
+
+ chosen = find_available_http_connection(conn);
+
+ if (type != PACKET_NORMAL && !chosen) {
+ /*
+ * For non-ordinary traffic, we don't want to 'buffer' it, so use the first
+ * connection.
+ */
+ chosen = conn->connections[0];
+
+ if (!chosen->ready)
+ purple_debug_warning("jabber", "First BOSH connection wasn't ready. Bad "
+ "things may happen.\n");
+ }
+
+ if (type == PACKET_NORMAL && (!chosen ||
+ (conn->max_requests > 0 && conn->requests == conn->max_requests))) {
+ /*
+ * For normal data, send up to max_requests requests at a time or there is no
+ * connection ready (likely, we're currently opening a second connection and
+ * will send these packets when connected).
+ */
+ if (data) {
+ int len = data ? strlen(data) : 0;
+ purple_circ_buffer_append(conn->pending, data, len);
+ }
+ return;
+ }
+
+ packet = g_string_new(NULL);
+
+ g_string_printf(packet, "<body "
+ "rid='%" G_GUINT64_FORMAT "' "
+ "sid='%s' "
+ "to='%s' "
+ "xml:lang='en' "
+ "xmlns='http://jabber.org/protocol/httpbind' "
+ "xmlns:xmpp='urn:xmpp:xbosh'",
+ ++conn->rid,
+ conn->sid,
+ conn->js->user->domain);
+
+ if (type == PACKET_STREAM_RESTART)
+ packet = g_string_append(packet, " xmpp:restart='true'/>");
+ else {
+ gsize read_amt;
+ if (type == PACKET_TERMINATE)
+ packet = g_string_append(packet, " type='terminate'");
+
+ packet = g_string_append_c(packet, '>');
+
+ while ((read_amt = purple_circ_buffer_get_max_read(conn->pending)) > 0) {
+ packet = g_string_append_len(packet, conn->pending->outptr, read_amt);
+ purple_circ_buffer_mark_read(conn->pending, read_amt);
+ }
+
+ if (data)
+ packet = g_string_append(packet, data);
+ packet = g_string_append(packet, "</body>");
+ }
+
+ http_connection_send_request(chosen, packet);
+}
+
+void jabber_bosh_connection_close(PurpleBOSHConnection *conn)
+{
+ jabber_bosh_connection_send(conn, PACKET_TERMINATE, NULL);
+}
+
+static void jabber_bosh_connection_stream_restart(PurpleBOSHConnection *conn) {
+ jabber_bosh_connection_send(conn, PACKET_STREAM_RESTART, NULL);
+}
+
+static gboolean jabber_bosh_connection_error_check(PurpleBOSHConnection *conn, xmlnode *node) {
+ const char *type;
+
+ type = xmlnode_get_attrib(node, "type");
+
+ if (type != NULL && !strcmp(type, "terminate")) {
+ conn->ready = FALSE;
+ purple_connection_error_reason (conn->js->gc,
+ PURPLE_CONNECTION_ERROR_OTHER_ERROR,
+ _("The BOSH connection manager terminated your session."));
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static gboolean
+bosh_inactivity_cb(gpointer data)
+{
+ PurpleBOSHConnection *bosh = data;
+
+ jabber_bosh_connection_send(bosh, PACKET_NORMAL, NULL);
+ return TRUE;
+}
+
+static void jabber_bosh_connection_received(PurpleBOSHConnection *conn, xmlnode *node) {
+ xmlnode *child;
+ JabberStream *js = conn->js;
+
+ g_return_if_fail(node != NULL);
+ if (jabber_bosh_connection_error_check(conn, node))
+ return;
+
+ child = node->child;
+ while (child != NULL) {
+ /* jabber_process_packet might free child */
+ xmlnode *next = child->next;
+ if (child->type == XMLNODE_TYPE_TAG) {
+ if (!strcmp(child->name, "iq")) {
+ if (xmlnode_get_child(child, "session"))
+ conn->ready = TRUE;
+ }
+
+ jabber_process_packet(js, &child);
+ }
+
+ child = next;
+ }
+}
+
+static void auth_response_cb(PurpleBOSHConnection *conn, xmlnode *node) {
+ xmlnode *child;
+
+ g_return_if_fail(node != NULL);
+ if (jabber_bosh_connection_error_check(conn, node))
+ return;
+
+ child = node->child;
+ while(child != NULL && child->type != XMLNODE_TYPE_TAG) {
+ child = child->next;
+ }
+
+ /* We're only expecting one XML node here, so only process the first one */
+ if (child != NULL && child->type == XMLNODE_TYPE_TAG) {
+ JabberStream *js = conn->js;
+ if (!strcmp(child->name, "success")) {
+ jabber_bosh_connection_stream_restart(conn);
+ jabber_process_packet(js, &child);
+ conn->receive_cb = jabber_bosh_connection_received;
+ } else {
+ js->state = JABBER_STREAM_AUTHENTICATING;
+ jabber_process_packet(js, &child);
+ }
+ } else {
+ purple_debug_warning("jabber", "Received unexepcted empty BOSH packet.\n");
+ }
+}
+
+static void boot_response_cb(PurpleBOSHConnection *conn, xmlnode *node) {
+ const char *sid, *version;
+ const char *inactivity, *requests;
+ xmlnode *packet;
+
+ g_return_if_fail(node != NULL);
+ if (jabber_bosh_connection_error_check(conn, node))
+ return;
+
+ sid = xmlnode_get_attrib(node, "sid");
+ version = xmlnode_get_attrib(node, "ver");
+
+ inactivity = xmlnode_get_attrib(node, "inactivity");
+ requests = xmlnode_get_attrib(node, "requests");
+
+ if (sid) {
+ conn->sid = g_strdup(sid);
+ } else {
+ purple_connection_error_reason(conn->js->gc,
+ PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
+ _("No session ID given"));
+ return;
+ }
+
+ if (version) {
+ const char *dot = strstr(version, ".");
+ int major, minor = 0;
+
+ purple_debug_info("jabber", "BOSH connection manager version %s\n", version);
+
+ major = atoi(version);
+ if (dot)
+ minor = atoi(dot + 1);
+
+ if (major != 1 || minor < 6) {
+ purple_connection_error_reason(conn->js->gc,
+ PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
+ _("Unsupported version of BOSH protocol"));
+ return;
+ }
+ } else {
+ purple_debug_info("jabber", "Missing version in BOSH initiation\n");
+ }
+
+ if (inactivity) {
+ conn->max_inactivity = atoi(inactivity);
+ if (conn->max_inactivity <= 2) {
+ purple_debug_warning("jabber", "Ignoring bogusly small inactivity: %s\n",
+ inactivity);
+ conn->max_inactivity = 0;
+ } else {
+ /* TODO: Integrate this with jabber.c keepalive checks... */
+ conn->inactivity_timer = purple_timeout_add_seconds(
+ conn->max_inactivity - 2 /* rounding */, bosh_inactivity_cb,
+ conn);
+ }
+ }
+
+ if (requests)
+ conn->max_requests = atoi(requests);
+
+ /* FIXME: Depending on receiving features might break with some hosts */
+ packet = xmlnode_get_child(node, "features");
+ conn->js->use_bosh = TRUE;
+ conn->receive_cb = auth_response_cb;
+ jabber_stream_features_parse(conn->js, packet);
+}
+
+static void jabber_bosh_connection_boot(PurpleBOSHConnection *conn) {
+ GString *buf = g_string_new(NULL);
+
+ g_string_printf(buf, "<body content='text/xml; charset=utf-8' "
+ "secure='true' "
+ "to='%s' "
+ "xml:lang='en' "
+ "xmpp:version='1.0' "
+ "ver='1.6' "
+ "xmlns:xmpp='urn:xmpp:bosh' "
+ "rid='%" G_GUINT64_FORMAT "' "
+/* TODO: This should be adjusted/adjustable automatically according to
+ * realtime network behavior */
+ "wait='60' "
+ "hold='1' "
+ "xmlns='http://jabber.org/protocol/httpbind'/>",
+ conn->js->user->domain,
+ ++conn->rid);
+
+ conn->receive_cb = boot_response_cb;
+ http_connection_send_request(conn->connections[0], buf);
+ g_string_free(buf, TRUE);
+}
+
+static void
+http_received_cb(const char *data, int len, PurpleBOSHConnection *conn)
+{
+ if (conn->failed_connections)
+ /* We've got some data, so reset the number of failed connections */
+ conn->failed_connections = 0;
+
+ if (conn->receive_cb) {
+ xmlnode *node = xmlnode_from_str(data, len);
+
+ purple_debug_info("jabber", "RecvBOSH %s(%d): %s\n",
+ conn->ssl ? "(ssl)" : "", len, data);
+
+ if (node) {
+ conn->receive_cb(conn, node);
+ xmlnode_free(node);
+ } else {
+ purple_debug_warning("jabber", "BOSH: Received invalid XML\n");
+ }
+ } else {
+ g_return_if_reached();
+ }
+}
+
+void jabber_bosh_connection_send_raw(PurpleBOSHConnection *conn,
+ const char *data)
+{
+ jabber_bosh_connection_send(conn, PACKET_NORMAL, data);
+}
+
+static void
+connection_common_established_cb(PurpleHTTPConnection *conn)
+{
+ /* Indicate we're ready and reset some variables */
+ conn->ready = TRUE;
+ conn->requests = 0;
+ if (conn->buf) {
+ g_string_free(conn->buf, TRUE);
+ conn->buf = NULL;
+ }
+ conn->headers_done = FALSE;
+ conn->handled_len = conn->body_len = 0;
+
+ if (conn->bosh->ready) {
+ purple_debug_info("jabber", "BOSH session already exists. Trying to reuse it.\n");
+ if (conn->bosh->pending->bufused > 0) {
+ /* Send the pending data */
+ jabber_bosh_connection_send(conn->bosh, PACKET_NORMAL, NULL);
+ }
+#if 0
+ conn->bosh->receive_cb = jabber_bosh_connection_received;
+ if (conn->bosh->connect_cb)
+ conn->bosh->connect_cb(conn->bosh);
+#endif
+ } else
+ jabber_bosh_connection_boot(conn->bosh);
+}
+
+void jabber_bosh_connection_refresh(PurpleBOSHConnection *conn)
+{
+ jabber_bosh_connection_send(conn, PACKET_NORMAL, NULL);
+}
+
+static void http_connection_disconnected(PurpleHTTPConnection *conn)
+{
+ /*
+ * Well, then. Fine! I never liked you anyway, server! I was cheating on you
+ * with AIM!
+ */
+ conn->ready = FALSE;
+ if (conn->psc) {
+ purple_ssl_close(conn->psc);
+ conn->psc = NULL;
+ } else if (conn->fd >= 0) {
+ close(conn->fd);
+ conn->fd = -1;
+ }
+
+ if (conn->readh) {
+ purple_input_remove(conn->readh);
+ conn->readh = 0;
+ }
+
+ if (conn->writeh) {
+ purple_input_remove(conn->writeh);
+ conn->writeh = 0;
+ }
+
+ if (conn->bosh->pipelining)
+ /* Hmmmm, fall back to multiple connections */
+ conn->bosh->pipelining = FALSE;
+
+ if (++conn->bosh->failed_connections == MAX_FAILED_CONNECTIONS) {
+ purple_connection_error_reason(conn->bosh->js->gc,
+ PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
+ _("Unable to establish a connection with the server"));
+ } else {
+ /* No! Please! Take me back. It was me, not you! I was weak! */
+ http_connection_connect(conn);
+ }
+}
+
+void jabber_bosh_connection_connect(PurpleBOSHConnection *bosh) {
+ PurpleHTTPConnection *conn = bosh->connections[0];
+ http_connection_connect(conn);
+}
+
+static void
+jabber_bosh_http_connection_process(PurpleHTTPConnection *conn)
+{
+ const char *cursor;
+
+ cursor = conn->buf->str + conn->handled_len;
+
+ if (!conn->headers_done) {
+ const char *content_length = purple_strcasestr(cursor, "\r\nContent-Length");
+ const char *end_of_headers = strstr(cursor, "\r\n\r\n");
+
+ /* Make sure Content-Length is in headers, not body */
+ if (content_length && (!end_of_headers || content_length < end_of_headers)) {
+ const char *sep;
+ const char *eol;
+ int len;
+
+ if ((sep = strstr(content_length, ": ")) == NULL ||
+ (eol = strstr(sep, "\r\n")) == NULL)
+ /*
+ * The packet ends in the middle of the Content-Length line.
+ * We'll try again later when we have more.
+ */
+ return;
+
+ len = atoi(sep + 2);
+ if (len == 0)
+ purple_debug_warning("jabber", "Found mangled Content-Length header.\n");
+
+ conn->body_len = len;
+ }
+
+ if (end_of_headers) {
+ conn->headers_done = TRUE;
+ conn->handled_len = end_of_headers - conn->buf->str + 4;
+ cursor = end_of_headers + 4;
+ } else {
+ conn->handled_len = conn->buf->len;
+ return;
+ }
+ }
+
+ /* Have we handled everything in the buffer? */
+ if (conn->handled_len >= conn->buf->len)
+ return;
+
+ /* Have we read all that the Content-Length promised us? */
+ if (conn->buf->len - conn->handled_len < conn->body_len)
+ return;
+
+ --conn->requests;
+ --conn->bosh->requests;
+
+ http_received_cb(conn->buf->str + conn->handled_len, conn->body_len,
+ conn->bosh);
+
+ if (conn->bosh->ready &&
+ (conn->bosh->requests == 0 || conn->bosh->pending->bufused > 0)) {
+ jabber_bosh_connection_send(conn->bosh, PACKET_NORMAL, NULL);
+ purple_debug_misc("jabber", "BOSH: Sending an empty request\n");
+ }
+
+ g_string_free(conn->buf, TRUE);
+ conn->buf = NULL;
+ conn->headers_done = FALSE;
+ conn->handled_len = conn->body_len = 0;
+}
+
+/*
+ * Common code for reading, called from http_connection_read_cb_ssl and
+ * http_connection_read_cb.
+ */
+static void
+http_connection_read(PurpleHTTPConnection *conn)
+{
+ char buffer[1025];
+ int cnt, count = 0;
+
+ if (!conn->buf)
+ conn->buf = g_string_new(NULL);
+
+ do {
+ if (conn->psc)
+ cnt = purple_ssl_read(conn->psc, buffer, sizeof(buffer));
+ else
+ cnt = read(conn->fd, buffer, sizeof(buffer));
+
+ if (cnt > 0) {
+ count += cnt;
+ g_string_append_len(conn->buf, buffer, cnt);
+ }
+ } while (cnt > 0);
+
+ if (cnt == 0 || (cnt < 0 && errno != EAGAIN)) {
+ if (cnt < 0)
+ purple_debug_info("jabber", "bosh read=%d, errno=%d, error=%s\n",
+ cnt, errno, g_strerror(errno));
+ else
+ purple_debug_info("jabber", "bosh server closed the connection\n");
+
+ /*
+ * If the socket is closed, the processing really needs to know about
+ * it. Handle that now.
+ */
+ http_connection_disconnected(conn);
+
+ /* Process what we do have */
+ }
+
+ if (conn->buf->len > 0)
+ jabber_bosh_http_connection_process(conn);
+}
+
+static void
+http_connection_read_cb(gpointer data, gint fd, PurpleInputCondition condition)
+{
+ PurpleHTTPConnection *conn = data;
+
+ http_connection_read(conn);
+}
+
+static void
+http_connection_read_cb_ssl(gpointer data, PurpleSslConnection *psc,
+ PurpleInputCondition cond)
+{
+ PurpleHTTPConnection *conn = data;
+
+ http_connection_read(conn);
+}
+
+static void
+ssl_connection_established_cb(gpointer data, PurpleSslConnection *psc,
+ PurpleInputCondition cond)
+{
+ PurpleHTTPConnection *conn = data;
+
+ purple_ssl_input_add(psc, http_connection_read_cb_ssl, conn);
+ connection_common_established_cb(conn);
+}
+
+static void
+ssl_connection_error_cb(PurpleSslConnection *gsc, PurpleSslErrorType error,
+ gpointer data)
+{
+ PurpleHTTPConnection *conn = data;
+
+ /* sslconn frees the connection on error */
+ conn->psc = NULL;
+
+ purple_connection_ssl_error(conn->bosh->js->gc, error);
+}
+
+static void
+connection_established_cb(gpointer data, gint source, const gchar *error)
+{
+ PurpleHTTPConnection *conn = data;
+ PurpleConnection *gc = conn->bosh->js->gc;
+
+ if (source < 0) {
+ gchar *tmp;
+ tmp = g_strdup_printf(_("Could not establish a connection with the server:\n%s"),
+ error);
+ purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
+ g_free(tmp);
+ return;
+ }
+
+ conn->fd = source;
+ conn->readh = purple_input_add(conn->fd, PURPLE_INPUT_READ,
+ http_connection_read_cb, conn);
+ connection_common_established_cb(conn);
+}
+
+static void http_connection_connect(PurpleHTTPConnection *conn)
+{
+ PurpleBOSHConnection *bosh = conn->bosh;
+ PurpleConnection *gc = bosh->js->gc;
+ PurpleAccount *account = purple_connection_get_account(gc);
+
+ if (bosh->ssl) {
+ if (purple_ssl_is_supported()) {
+ conn->psc = purple_ssl_connect(account, bosh->host, bosh->port,
+ ssl_connection_established_cb,
+ ssl_connection_error_cb,
+ conn);
+ if (!conn->psc) {
+ purple_connection_error_reason(gc,
+ PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT,
+ _("Unable to establish SSL connection"));
+ }
+ } else {
+ purple_connection_error_reason(gc,
+ PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT,
+ _("SSL support unavailable"));
+ }
+ } else if (purple_proxy_connect(conn, account, bosh->host, bosh->port,
+ connection_established_cb, conn) == NULL) {
+ purple_connection_error_reason(gc,
+ PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
+ _("Unable to create socket"));
+ }
+}
+
+static int
+http_connection_do_send(PurpleHTTPConnection *conn, const char *data, int len)
+{
+ int ret;
+
+ if (conn->psc)
+ ret = purple_ssl_write(conn->psc, data, len);
+ else
+ ret = write(conn->fd, data, len);
+
+ return ret;
+}
+
+static void
+http_connection_send_cb(gpointer data, gint source, PurpleInputCondition cond)
+{
+ PurpleHTTPConnection *conn = data;
+ int ret;
+ int writelen = purple_circ_buffer_get_max_read(conn->write_buffer);
+
+ if (writelen == 0) {
+ purple_input_remove(conn->writeh);
+ conn->writeh = 0;
+ return;
+ }
+
+ ret = http_connection_do_send(conn, conn->write_buffer->outptr, writelen);
+
+ if (ret < 0 && errno == EAGAIN)
+ return;
+ else if (ret <= 0) {
+ /*
+ * TODO: Handle this better. Probably requires a PurpleBOSHConnection
+ * buffer that stores what is "being sent" until the
+ * PurpleHTTPConnection reports it is fully sent.
+ */
+ purple_connection_error_reason(conn->bosh->js->gc,
+ PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
+ _("Write error"));
+ return;
+ }
+
+ purple_circ_buffer_mark_read(conn->write_buffer, ret);
+}
+
+static void
+http_connection_send_request(PurpleHTTPConnection *conn, const GString *req)
+{
+ char *data;
+ int ret;
+ size_t len;
+
+ data = g_strdup_printf("POST %s HTTP/1.1\r\n"
+ "Host: %s\r\n"
+ "User-Agent: %s\r\n"
+ "Content-Encoding: text/xml; charset=utf-8\r\n"
+ "Content-Length: %" G_GSIZE_FORMAT "\r\n\r\n"
+ "%s",
+ conn->bosh->path, conn->bosh->host, bosh_useragent,
+ req->len, req->str);
+
+ len = strlen(data);
+
+ ++conn->requests;
+ ++conn->bosh->requests;
+
+ if (conn->writeh == 0)
+ ret = http_connection_do_send(conn, data, len);
+ else {
+ ret = -1;
+ errno = EAGAIN;
+ }
+
+ if (ret < 0 && errno != EAGAIN) {
+ /*
+ * TODO: Handle this better. Probably requires a PurpleBOSHConnection
+ * buffer that stores what is "being sent" until the
+ * PurpleHTTPConnection reports it is fully sent.
+ */
+ purple_connection_error_reason(conn->bosh->js->gc,
+ PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
+ _("Write error"));
+ return;
+ } else if (ret < len) {
+ if (ret < 0)
+ ret = 0;
+ if (conn->writeh == 0)
+ conn->writeh = purple_input_add(conn->psc ? conn->psc->fd : conn->fd,
+ PURPLE_INPUT_WRITE, http_connection_send_cb, conn);
+ purple_circ_buffer_append(conn->write_buffer, data + ret, len - ret);
+ }
+}
+
diff --git a/libpurple/protocols/jabber/bosh.h b/libpurple/protocols/jabber/bosh.h
new file mode 100644
index 0000000000..dc4e3703f7
--- /dev/null
+++ b/libpurple/protocols/jabber/bosh.h
@@ -0,0 +1,41 @@
+/**
+ * @file bosh.h Bidirectional-streams over Synchronous HTTP (BOSH) (XEP-0124 and XEP-0206)
+ *
+ * purple
+ *
+ * Copyright (C) 2008, Tobias Markmann <tmarkmann@googlemail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+#ifndef PURPLE_JABBER_BOSH_H_
+#define PURPLE_JABBER_BOSH_H_
+
+typedef struct _PurpleBOSHConnection PurpleBOSHConnection;
+
+#include "jabber.h"
+
+void jabber_bosh_init(void);
+void jabber_bosh_uninit(void);
+
+PurpleBOSHConnection* jabber_bosh_connection_init(JabberStream *js, const char *url);
+void jabber_bosh_connection_destroy(PurpleBOSHConnection *conn);
+
+gboolean jabber_bosh_connection_is_ssl(PurpleBOSHConnection *conn);
+
+void jabber_bosh_connection_connect(PurpleBOSHConnection *conn);
+void jabber_bosh_connection_close(PurpleBOSHConnection *conn);
+void jabber_bosh_connection_send_raw(PurpleBOSHConnection *conn, const char *data);
+void jabber_bosh_connection_refresh(PurpleBOSHConnection *conn);
+#endif /* PURPLE_JABBER_BOSH_H_ */
diff --git a/libpurple/protocols/jabber/buddy.c b/libpurple/protocols/jabber/buddy.c
index 7dcff29ec8..baaed639cd 100644
--- a/libpurple/protocols/jabber/buddy.c
+++ b/libpurple/protocols/jabber/buddy.c
@@ -32,12 +32,11 @@
#include "jabber.h"
#include "iq.h"
#include "presence.h"
+#include "useravatar.h"
#include "xdata.h"
#include "pep.h"
#include "adhoccommands.h"
-#define MAX_HTTP_BUDDYICON_BYTES (200 * 1024)
-
typedef struct {
long idle_seconds;
} JabberBuddyInfoResource;
@@ -48,9 +47,11 @@ typedef struct {
char *jid;
GSList *ids;
GHashTable *resources;
- int timeout_handle;
+ guint timeout_handle;
GSList *vcard_imgids;
PurpleNotifyUserInfo *user_info;
+ long last_seconds;
+ gchar *last_message;
} JabberBuddyInfo;
void jabber_buddy_free(JabberBuddy *jb)
@@ -68,20 +69,21 @@ JabberBuddy *jabber_buddy_find(JabberStream *js, const char *name,
gboolean create)
{
JabberBuddy *jb;
- const char *realname;
+ char *realname;
if (js->buddies == NULL)
return NULL;
- if(!(realname = jabber_normalize(js->gc->account, name)))
+ if(!(realname = jabber_get_bare_jid(name)))
return NULL;
jb = g_hash_table_lookup(js->buddies, realname);
if(!jb && create) {
jb = g_new0(JabberBuddy, 1);
- g_hash_table_insert(js->buddies, g_strdup(realname), jb);
- }
+ g_hash_table_insert(js->buddies, realname, jb);
+ } else
+ g_free(realname);
return jb;
}
@@ -98,36 +100,41 @@ JabberBuddyResource *jabber_buddy_find_resource(JabberBuddy *jb,
for(l = jb->resources; l; l = l->next)
{
- if(!jbr && !resource) {
- jbr = l->data;
- } else if(!resource) {
- if(((JabberBuddyResource *)l->data)->priority > jbr->priority)
- jbr = l->data;
- else if(((JabberBuddyResource *)l->data)->priority == jbr->priority) {
+ JabberBuddyResource *tmp = (JabberBuddyResource *) l->data;
+ if (!jbr && !resource) {
+ jbr = tmp;
+ } else if (!resource) {
+ if (tmp->priority > jbr->priority)
+ jbr = tmp;
+ else if (tmp->priority == jbr->priority) {
/* Determine if this resource is more available than the one we've currently chosen */
- switch(((JabberBuddyResource *)l->data)->state) {
+ switch(tmp->state) {
case JABBER_BUDDY_STATE_ONLINE:
case JABBER_BUDDY_STATE_CHAT:
/* This resource is online/chatty. Prefer to one which isn't either. */
- if ((jbr->state != JABBER_BUDDY_STATE_ONLINE) && (jbr->state != JABBER_BUDDY_STATE_CHAT))
- jbr = l->data;
+ if (((jbr->state != JABBER_BUDDY_STATE_ONLINE) && (jbr->state != JABBER_BUDDY_STATE_CHAT))
+ || (jbr->idle && !tmp->idle)
+ || (jbr->idle && tmp->idle && tmp->idle > jbr->idle))
+ jbr = tmp;
break;
case JABBER_BUDDY_STATE_AWAY:
case JABBER_BUDDY_STATE_DND:
/* This resource is away/dnd. Prefer to one which is extended away, unavailable, or unknown. */
- if ((jbr->state == JABBER_BUDDY_STATE_XA) || (jbr->state == JABBER_BUDDY_STATE_UNAVAILABLE) ||
+ if (((jbr->state == JABBER_BUDDY_STATE_XA) || (jbr->state == JABBER_BUDDY_STATE_UNAVAILABLE) ||
(jbr->state == JABBER_BUDDY_STATE_UNKNOWN) || (jbr->state == JABBER_BUDDY_STATE_ERROR))
- jbr = l->data;
+ || (jbr->idle && !tmp->idle)
+ || (jbr->idle && tmp->idle && tmp->idle > jbr->idle))
+ jbr = tmp;
break;
case JABBER_BUDDY_STATE_XA:
/* This resource is extended away. That's better than unavailable or unknown. */
if ((jbr->state == JABBER_BUDDY_STATE_UNAVAILABLE) || (jbr->state == JABBER_BUDDY_STATE_UNKNOWN) || (jbr->state == JABBER_BUDDY_STATE_ERROR))
- jbr = l->data;
+ jbr = tmp;
break;
case JABBER_BUDDY_STATE_UNAVAILABLE:
/* This resource is unavailable. That's better than unknown. */
if ((jbr->state == JABBER_BUDDY_STATE_UNKNOWN) || (jbr->state == JABBER_BUDDY_STATE_ERROR))
- jbr = l->data;
+ jbr = tmp;
break;
case JABBER_BUDDY_STATE_UNKNOWN:
case JABBER_BUDDY_STATE_ERROR:
@@ -135,9 +142,9 @@ JabberBuddyResource *jabber_buddy_find_resource(JabberBuddy *jb,
break;
}
}
- } else if(((JabberBuddyResource *)l->data)->name) {
- if(!strcmp(((JabberBuddyResource *)l->data)->name, resource)) {
- jbr = l->data;
+ } else if(tmp->name) {
+ if(!strcmp(tmp->name, resource)) {
+ jbr = tmp;
break;
}
}
@@ -155,6 +162,7 @@ JabberBuddyResource *jabber_buddy_track_resource(JabberBuddy *jb, const char *re
jbr->jb = jb;
jbr->name = g_strdup(resource);
jbr->capabilities = JABBER_CAP_XHTML;
+ jbr->tz_off = PURPLE_NO_TZ_OFF;
jb->resources = g_list_append(jb->resources, jbr);
}
jbr->priority = priority;
@@ -170,7 +178,7 @@ void jabber_buddy_resource_free(JabberBuddyResource *jbr)
g_return_if_fail(jbr != NULL);
jbr->jb->resources = g_list_remove(jbr->jb->resources, jbr);
-
+
while(jbr->commands) {
JabberAdHocCommands *cmd = jbr->commands->data;
g_free(cmd->jid);
@@ -179,9 +187,11 @@ void jabber_buddy_resource_free(JabberBuddyResource *jbr)
g_free(cmd);
jbr->commands = g_list_delete_link(jbr->commands, jbr->commands);
}
-
- jabber_caps_free_clientinfo(jbr->caps);
+ if (jbr->caps.exts) {
+ g_list_foreach(jbr->caps.exts, (GFunc)g_free, NULL);
+ g_list_free(jbr->caps.exts);
+ }
g_free(jbr->name);
g_free(jbr->status);
g_free(jbr->thread_id);
@@ -201,21 +211,6 @@ void jabber_buddy_remove_resource(JabberBuddy *jb, const char *resource)
jabber_buddy_resource_free(jbr);
}
-const char *jabber_buddy_get_status_msg(JabberBuddy *jb)
-{
- JabberBuddyResource *jbr;
-
- if(!jb)
- return NULL;
-
- jbr = jabber_buddy_find_resource(jb, NULL);
-
- if(!jbr)
- return NULL;
-
- return jbr->status;
-}
-
/*******
* This is the old vCard stuff taken from the old prpl. vCards, by definition
* are a temporary thing until jabber can get its act together and come up
@@ -301,36 +296,32 @@ const char *jabber_buddy_get_status_msg(JabberBuddy *jb)
struct vcard_template {
char *label; /* label text pointer */
- char *text; /* entry text pointer */
- int visible; /* should entry field be "visible?" */
- int editable; /* should entry field be editable? */
char *tag; /* tag text */
char *ptag; /* parent tag "path" text */
- char *url; /* vCard display format if URL */
} const vcard_template_data[] = {
- {N_("Full Name"), NULL, TRUE, TRUE, "FN", NULL, NULL},
- {N_("Family Name"), NULL, TRUE, TRUE, "FAMILY", "N", NULL},
- {N_("Given Name"), NULL, TRUE, TRUE, "GIVEN", "N", NULL},
- {N_("Nickname"), NULL, TRUE, TRUE, "NICKNAME", NULL, NULL},
- {N_("URL"), NULL, TRUE, TRUE, "URL", NULL, "<A HREF=\"%s\">%s</A>"},
- {N_("Street Address"), NULL, TRUE, TRUE, "STREET", "ADR", NULL},
- {N_("Extended Address"), NULL, TRUE, TRUE, "EXTADD", "ADR", NULL},
- {N_("Locality"), NULL, TRUE, TRUE, "LOCALITY", "ADR", NULL},
- {N_("Region"), NULL, TRUE, TRUE, "REGION", "ADR", NULL},
- {N_("Postal Code"), NULL, TRUE, TRUE, "PCODE", "ADR", NULL},
- {N_("Country"), NULL, TRUE, TRUE, "CTRY", "ADR", NULL},
- {N_("Telephone"), NULL, TRUE, TRUE, "NUMBER", "TEL", NULL},
- {N_("Email"), NULL, TRUE, TRUE, "USERID", "EMAIL", "<A HREF=\"mailto:%s\">%s</A>"},
- {N_("Organization Name"), NULL, TRUE, TRUE, "ORGNAME", "ORG", NULL},
- {N_("Organization Unit"), NULL, TRUE, TRUE, "ORGUNIT", "ORG", NULL},
- {N_("Title"), NULL, TRUE, TRUE, "TITLE", NULL, NULL},
- {N_("Role"), NULL, TRUE, TRUE, "ROLE", NULL, NULL},
- {N_("Birthday"), NULL, TRUE, TRUE, "BDAY", NULL, NULL},
- {N_("Description"), NULL, TRUE, TRUE, "DESC", NULL, NULL},
- {"", NULL, TRUE, TRUE, "N", NULL, NULL},
- {"", NULL, TRUE, TRUE, "ADR", NULL, NULL},
- {"", NULL, TRUE, TRUE, "ORG", NULL, NULL},
- {NULL, NULL, 0, 0, NULL, NULL, NULL}
+ {N_("Full Name"), "FN", NULL},
+ {N_("Family Name"), "FAMILY", "N"},
+ {N_("Given Name"), "GIVEN", "N"},
+ {N_("Nickname"), "NICKNAME", NULL},
+ {N_("URL"), "URL", NULL},
+ {N_("Street Address"), "STREET", "ADR"},
+ {N_("Extended Address"), "EXTADD", "ADR"},
+ {N_("Locality"), "LOCALITY", "ADR"},
+ {N_("Region"), "REGION", "ADR"},
+ {N_("Postal Code"), "PCODE", "ADR"},
+ {N_("Country"), "CTRY", "ADR"},
+ {N_("Telephone"), "NUMBER", "TEL"},
+ {N_("Email"), "USERID", "EMAIL"},
+ {N_("Organization Name"), "ORGNAME", "ORG"},
+ {N_("Organization Unit"), "ORGUNIT", "ORG"},
+ {N_("Title"), "TITLE", NULL},
+ {N_("Role"), "ROLE", NULL},
+ {N_("Birthday"), "BDAY", NULL},
+ {N_("Description"), "DESC", NULL},
+ {"", "N", NULL},
+ {"", "ADR", NULL},
+ {"", "ORG", NULL},
+ {NULL, NULL, NULL}
};
/*
@@ -422,7 +413,7 @@ void jabber_set_info(PurpleConnection *gc, const char *info)
{
PurpleStoredImage *img;
JabberIq *iq;
- JabberStream *js = gc->proto_data;
+ JabberStream *js = purple_connection_get_protocol_data(gc);
xmlnode *vc_node;
const struct tag_attr *tag_attr;
@@ -488,134 +479,25 @@ void jabber_set_info(PurpleConnection *gc, const char *info)
iq = jabber_iq_new(js, JABBER_IQ_SET);
xmlnode_insert_child(iq->node, vc_node);
jabber_iq_send(iq);
+
+ /* Send presence to update vcard-temp:x:update */
+ jabber_presence_send(js, FALSE);
}
}
void jabber_set_buddy_icon(PurpleConnection *gc, PurpleStoredImage *img)
{
- PurplePresence *gpresence;
- PurpleStatus *status;
-
- if(((JabberStream*)gc->proto_data)->pep) {
- /* XEP-0084: User Avatars */
- if(img) {
- /*
- * TODO: This is pretty gross. The Jabber PRPL really shouldn't
- * do voodoo to try to determine the image type, height
- * and width.
- */
- /* A PNG header, including the IHDR, but nothing else */
- const struct {
- guchar signature[8]; /* must be hex 89 50 4E 47 0D 0A 1A 0A */
- struct {
- guint32 length; /* must be 0x0d */
- guchar type[4]; /* must be 'I' 'H' 'D' 'R' */
- guint32 width;
- guint32 height;
- guchar bitdepth;
- guchar colortype;
- guchar compression;
- guchar filter;
- guchar interlace;
- } ihdr;
- } *png = purple_imgstore_get_data(img); /* ATTN: this is in network byte order! */
-
- /* check if the data is a valid png file (well, at least to some extend) */
- if(png->signature[0] == 0x89 &&
- png->signature[1] == 0x50 &&
- png->signature[2] == 0x4e &&
- png->signature[3] == 0x47 &&
- png->signature[4] == 0x0d &&
- png->signature[5] == 0x0a &&
- png->signature[6] == 0x1a &&
- png->signature[7] == 0x0a &&
- ntohl(png->ihdr.length) == 0x0d &&
- png->ihdr.type[0] == 'I' &&
- png->ihdr.type[1] == 'H' &&
- png->ihdr.type[2] == 'D' &&
- png->ihdr.type[3] == 'R') {
- /* parse PNG header to get the size of the image (yes, this is required) */
- guint32 width = ntohl(png->ihdr.width);
- guint32 height = ntohl(png->ihdr.height);
- xmlnode *publish, *item, *data, *metadata, *info;
- char *lengthstring, *widthstring, *heightstring;
-
- /* compute the sha1 hash */
- char *hash = jabber_calculate_data_sha1sum(purple_imgstore_get_data(img), purple_imgstore_get_size(img));
- char *base64avatar;
-
- publish = xmlnode_new("publish");
- xmlnode_set_attrib(publish,"node",AVATARNAMESPACEDATA);
-
- item = xmlnode_new_child(publish, "item");
- xmlnode_set_attrib(item, "id", hash);
-
- data = xmlnode_new_child(item, "data");
- xmlnode_set_namespace(data,AVATARNAMESPACEDATA);
-
- base64avatar = purple_base64_encode(purple_imgstore_get_data(img), purple_imgstore_get_size(img));
- xmlnode_insert_data(data,base64avatar,-1);
- g_free(base64avatar);
-
- /* publish the avatar itself */
- jabber_pep_publish((JabberStream*)gc->proto_data, publish);
-
- /* next step: publish the metadata */
- publish = xmlnode_new("publish");
- xmlnode_set_attrib(publish,"node",AVATARNAMESPACEMETA);
-
- item = xmlnode_new_child(publish, "item");
- xmlnode_set_attrib(item, "id", hash);
-
- metadata = xmlnode_new_child(item, "metadata");
- xmlnode_set_namespace(metadata,AVATARNAMESPACEMETA);
-
- info = xmlnode_new_child(metadata, "info");
- xmlnode_set_attrib(info, "id", hash);
- xmlnode_set_attrib(info, "type", "image/png");
- lengthstring = g_strdup_printf("%u", (unsigned)purple_imgstore_get_size(img));
- xmlnode_set_attrib(info, "bytes", lengthstring);
- g_free(lengthstring);
- widthstring = g_strdup_printf("%u", width);
- xmlnode_set_attrib(info, "width", widthstring);
- g_free(widthstring);
- heightstring = g_strdup_printf("%u", height);
- xmlnode_set_attrib(info, "height", heightstring);
- g_free(heightstring);
-
- /* publish the metadata */
- jabber_pep_publish((JabberStream*)gc->proto_data, publish);
-
- g_free(hash);
- } else {
- purple_debug_error("jabber", "jabber_set_buddy_icon received non-png data");
- }
- } else {
- /* remove the metadata */
- xmlnode *metadata, *item;
- xmlnode *publish = xmlnode_new("publish");
- xmlnode_set_attrib(publish,"node",AVATARNAMESPACEMETA);
-
- item = xmlnode_new_child(publish, "item");
-
- metadata = xmlnode_new_child(item, "metadata");
- xmlnode_set_namespace(metadata,AVATARNAMESPACEMETA);
-
- xmlnode_new_child(metadata, "stop");
+ PurpleAccount *account = purple_connection_get_account(gc);
- /* publish the metadata */
- jabber_pep_publish((JabberStream*)gc->proto_data, publish);
- }
- }
-
- /* vCard avatars do not have an image type requirement so update our
- * vCard avatar regardless of image type for those poor older clients
- */
- jabber_set_info(gc, purple_account_get_user_info(gc->account));
+ /* Publish the avatar as specified in XEP-0084 */
+ jabber_avatar_set(gc->proto_data, img);
+ /* Set the image in our vCard */
+ jabber_set_info(gc, purple_account_get_user_info(account));
- gpresence = purple_account_get_presence(gc->account);
- status = purple_presence_get_active_status(gpresence);
- jabber_presence_send(gc->account, status);
+ /* TODO: Fake image to ourselves, since a number of servers do not echo
+ * back our presence to us. To do this without uselessly copying the data
+ * of the image, we need purple_buddy_icons_set_for_user_image (i.e. takes
+ * an existing icon/stored image). */
}
/*
@@ -763,6 +645,7 @@ static void jabber_buddy_info_destroy(JabberBuddyInfo *jbi)
g_free(jbi->jid);
g_hash_table_destroy(jbi->resources);
+ g_free(jbi->last_message);
purple_notify_user_info_destroy(jbi->user_info);
g_free(jbi);
}
@@ -796,18 +679,33 @@ static void jabber_buddy_info_show_if_ready(JabberBuddyInfo *jbi)
(jbr->client.version ? jbr->client.version : ""));
purple_notify_user_info_add_pair(user_info, _("Client"), tmp);
g_free(tmp);
-
+
if(jbr->client.os) {
purple_notify_user_info_prepend_pair(user_info, _("Operating System"), jbr->client.os);
}
- }
+ }
+ if (jbr && jbr->tz_off != PURPLE_NO_TZ_OFF) {
+ time_t now_t;
+ struct tm *now;
+ char *timestamp;
+ time(&now_t);
+ now_t += jbr->tz_off;
+ now = gmtime(&now_t);
+
+ timestamp = g_strdup_printf("%s %c%02d%02d", purple_time_format(now),
+ jbr->tz_off < 0 ? '-' : '+',
+ abs(jbr->tz_off / (60*60)),
+ abs((jbr->tz_off % (60*60)) / 60));
+ purple_notify_user_info_prepend_pair(user_info, _("Local Time"), timestamp);
+ g_free(timestamp);
+ }
if(jbir) {
if(jbir->idle_seconds > 0) {
char *idle = purple_str_seconds_to_string(jbir->idle_seconds);
purple_notify_user_info_prepend_pair(user_info, _("Idle"), idle);
g_free(idle);
}
- }
+ }
if(jbr) {
char *purdy = NULL;
const char *status_name = jabber_buddy_state_get_name(jbr->state);
@@ -825,7 +723,7 @@ static void jabber_buddy_info_show_if_ready(JabberBuddyInfo *jbi)
} else {
purple_notify_user_info_prepend_pair(user_info, _("Status"), _("Unknown"));
}
-#if 0
+#if 0
/* #if 0 this for now; I think this would be far more useful if we limited this to a particular set of features
* of particular interest (-vv jumps out as one). As it is now, I don't picture people getting all excited: "Oh sweet crap!
* So-and-so supports 'jabber:x:data' AND 'Collaborative Data Objects'!"
@@ -836,7 +734,7 @@ static void jabber_buddy_info_show_if_ready(JabberBuddyInfo *jbi)
GList *iter;
for(iter = jbr->caps->features; iter; iter = g_list_next(iter)) {
const char *feature = iter->data;
-
+
if(!strcmp(feature, "jabber:iq:last"))
feature = _("Last Activity");
else if(!strcmp(feature, "http://jabber.org/protocol/disco#info"))
@@ -919,7 +817,7 @@ static void jabber_buddy_info_show_if_ready(JabberBuddyInfo *jbi)
feature = _("User Gaming");
else if(!strcmp(feature, "http://jabber.org/protocol/viewing"))
feature = _("User Viewing");
- else if(!strcmp(feature, "urn:xmpp:ping") || !strcmp(feature, "http://www.xmpp.org/extensions/xep-0199.html#ns"))
+ else if(!strcmp(feature, "urn:xmpp:ping"))
feature = _("Ping");
else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0200.html#ns"))
feature = _("Stanza Encryption");
@@ -945,7 +843,7 @@ static void jabber_buddy_info_show_if_ready(JabberBuddyInfo *jbi)
if(strlen(tmp->str) > 0)
purple_notify_user_info_prepend_pair(user_info, _("Capabilities"), tmp->str);
-
+
g_string_free(tmp, TRUE);
}
#endif
@@ -958,6 +856,13 @@ static void jabber_buddy_info_show_if_ready(JabberBuddyInfo *jbi)
jbr = resources->data;
+ /* put a section break between resources, this is not needed if
+ we are at the first, because one was already added for the vcard
+ section */
+ if (resources != jbi->jb->resources) {
+ purple_notify_user_info_prepend_section_break(user_info);
+ }
+
if(jbr->client.name) {
tmp = g_strdup_printf("%s%s%s", jbr->client.name,
(jbr->client.version ? " " : ""),
@@ -965,12 +870,28 @@ static void jabber_buddy_info_show_if_ready(JabberBuddyInfo *jbi)
purple_notify_user_info_prepend_pair(user_info,
_("Client"), tmp);
g_free(tmp);
-
+
if(jbr->client.os) {
purple_notify_user_info_prepend_pair(user_info, _("Operating System"), jbr->client.os);
}
}
+ if (jbr->tz_off != PURPLE_NO_TZ_OFF) {
+ time_t now_t;
+ struct tm *now;
+ char *timestamp;
+ time(&now_t);
+ now_t += jbr->tz_off;
+ now = gmtime(&now_t);
+
+ timestamp = g_strdup_printf("%s %c%02d%02d", purple_time_format(now),
+ jbr->tz_off < 0 ? '-' : '+',
+ abs(jbr->tz_off / (60*60)),
+ abs((jbr->tz_off % (60*60)) / 60));
+ purple_notify_user_info_prepend_pair(user_info, _("Local Time"), timestamp);
+ g_free(timestamp);
+ }
+
if(jbr->name && (jbir = g_hash_table_lookup(jbi->resources, jbr->name))) {
if(jbir->idle_seconds > 0) {
char *idle = purple_str_seconds_to_string(jbir->idle_seconds);
@@ -984,14 +905,14 @@ static void jabber_buddy_info_show_if_ready(JabberBuddyInfo *jbi)
purdy = purple_strdup_withhtml(jbr->status);
if(status_name && purdy && !strcmp(status_name, purdy))
status_name = NULL;
-
+
tmp = g_strdup_printf("%s%s%s", (status_name ? status_name : ""),
((status_name && purdy) ? ": " : ""),
(purdy ? purdy : ""));
purple_notify_user_info_prepend_pair(user_info, _("Status"), tmp);
g_free(tmp);
g_free(purdy);
-
+
if(multiple_resources) {
tmp = g_strdup_printf("%d", jbr->priority);
purple_notify_user_info_prepend_pair(user_info, _("Priority"), tmp);
@@ -1006,7 +927,7 @@ static void jabber_buddy_info_show_if_ready(JabberBuddyInfo *jbi)
GList *iter;
for(iter = jbr->caps->features; iter; iter = g_list_next(iter)) {
const char *feature = iter->data;
-
+
if(!strcmp(feature, "jabber:iq:last"))
feature = _("Last Activity");
else if(!strcmp(feature, "http://jabber.org/protocol/disco#info"))
@@ -1089,7 +1010,7 @@ static void jabber_buddy_info_show_if_ready(JabberBuddyInfo *jbi)
feature = _("User Gaming");
else if(!strcmp(feature, "http://jabber.org/protocol/viewing"))
feature = _("User Viewing");
- else if(!strcmp(feature, "urn:xmpp:ping") || !strcmp(feature, "http://www.xmpp.org/extensions/xep-0199.html#ns"))
+ else if(!strcmp(feature, "urn:xmpp:ping"))
feature = _("Ping");
else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0200.html#ns"))
feature = _("Stanza Encryption");
@@ -1109,19 +1030,37 @@ static void jabber_buddy_info_show_if_ready(JabberBuddyInfo *jbi)
feature = _("Hop Check");
else if(g_str_has_suffix(feature, "+notify"))
feature = NULL;
-
+
if(feature)
g_string_append_printf(tmp, "%s\n", feature);
}
if(strlen(tmp->str) > 0)
purple_notify_user_info_prepend_pair(user_info, _("Capabilities"), tmp->str);
-
+
g_string_free(tmp, TRUE);
}
#endif
}
}
+ if (!jbi->jb->resources) {
+ /* the buddy is offline */
+ gchar *status =
+ g_strdup_printf("%s%s%s", _("Offline"),
+ jbi->last_message ? ": " : "",
+ jbi->last_message ? jbi->last_message : "");
+ if (jbi->last_seconds > 0) {
+ char *last = purple_str_seconds_to_string(jbi->last_seconds);
+ gchar *message = g_strdup_printf(_("%s ago"), last);
+ purple_notify_user_info_prepend_pair(user_info,
+ _("Logged off"), message);
+ g_free(last);
+ g_free(message);
+ }
+ purple_notify_user_info_prepend_pair(user_info, _("Status"), status);
+ g_free(status);
+ }
+
g_free(resource_name);
purple_notify_userinfo(jbi->js->gc, jbi->jid, user_info, NULL, NULL);
@@ -1155,11 +1094,17 @@ static void jabber_buddy_info_remove_id(JabberBuddyInfo *jbi, const char *id)
}
}
-static void jabber_vcard_save_mine(JabberStream *js, xmlnode *packet, gpointer data)
+static void jabber_vcard_save_mine(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data)
{
- xmlnode *vcard;
- char *txt;
- PurpleStoredImage *img;
+ xmlnode *vcard, *photo, *binval;
+ char *txt, *vcard_hash = NULL;
+
+ if (type == JABBER_IQ_ERROR) {
+ purple_debug_warning("jabber", "Server returned error while retrieving vCard");
+ return;
+ }
if((vcard = xmlnode_get_child(packet, "vCard")) ||
(vcard = xmlnode_get_child_with_namespace(packet, "query", "vcard-temp")))
@@ -1174,16 +1119,35 @@ static void jabber_vcard_save_mine(JabberStream *js, xmlnode *packet, gpointer d
js->vcard_fetched = TRUE;
- if(NULL != (img = purple_buddy_icons_find_account_icon(js->gc->account))) {
- jabber_set_buddy_icon(js->gc, img);
- purple_imgstore_unref(img);
+ if (vcard && (photo = xmlnode_get_child(vcard, "PHOTO")) &&
+ (binval = xmlnode_get_child(photo, "BINVAL"))) {
+ gsize size;
+ char *bintext = xmlnode_get_data(binval);
+ guchar *data = purple_base64_decode(bintext, &size);
+ g_free(bintext);
+
+ if (data) {
+ vcard_hash = jabber_calculate_data_sha1sum(data, size);
+ g_free(data);
+ }
+ }
+
+ /* Republish our vcard if the photo is different than the server's */
+ if (!purple_strequal(vcard_hash, js->initial_avatar_hash)) {
+ PurpleAccount *account = purple_connection_get_account(js->gc);
+ jabber_set_info(js->gc, purple_account_get_user_info(account));
+ } else if (js->initial_avatar_hash) {
+ /* Our photo is in the vcard, so advertise vcard-temp updates */
+ js->avatar_hash = g_strdup(js->initial_avatar_hash);
}
+
+ g_free(vcard_hash);
}
void jabber_vcard_fetch_mine(JabberStream *js)
{
JabberIq *iq = jabber_iq_new(js, JABBER_IQ_GET);
-
+
xmlnode *vcard = xmlnode_new_child(iq->node, "vCard");
xmlnode_set_namespace(vcard, "vcard-temp");
jabber_iq_set_callback(iq, jabber_vcard_save_mine, NULL);
@@ -1191,9 +1155,10 @@ void jabber_vcard_fetch_mine(JabberStream *js)
jabber_iq_send(iq);
}
-static void jabber_vcard_parse(JabberStream *js, xmlnode *packet, gpointer data)
+static void jabber_vcard_parse(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data)
{
- const char *id, *from;
char *bare_jid;
char *text;
char *serverside_alias = NULL;
@@ -1202,9 +1167,6 @@ static void jabber_vcard_parse(JabberStream *js, xmlnode *packet, gpointer data)
JabberBuddyInfo *jbi = data;
PurpleNotifyUserInfo *user_info;
- from = xmlnode_get_attrib(packet, "from");
- id = xmlnode_get_attrib(packet, "id");
-
if(!jbi)
return;
@@ -1257,13 +1219,13 @@ static void jabber_vcard_parse(JabberStream *js, xmlnode *packet, gpointer data)
}
g_free(text2);
}
- } else if(text && !strcmp(child->name, "NICKNAME")) {
+ } else if(text && !strcmp(child->name, "NICKNAME")) {
/* Prefer the Nickcname to the Full Name as the serverside alias if it's not just part of the jid.
* Ignore it if it's part of the jid. */
if (strstr(bare_jid, text) == NULL) {
g_free(serverside_alias);
serverside_alias = g_strdup(text);
-
+
purple_notify_user_info_add_pair(user_info, _("Nickname"), text);
}
} else if(text && !strcmp(child->name, "BDAY")) {
@@ -1308,7 +1270,7 @@ static void jabber_vcard_parse(JabberStream *js, xmlnode *packet, gpointer data)
}
g_free(text2);
}
-
+
if (address_line_added)
purple_notify_user_info_add_section_break(user_info);
@@ -1350,8 +1312,8 @@ static void jabber_vcard_parse(JabberStream *js, xmlnode *packet, gpointer data)
escaped = g_markup_escape_text(userid, -1);
mailto = g_strdup_printf("<a href=\"mailto:%s\">%s</a>", escaped, escaped);
purple_notify_user_info_add_pair(user_info, _("Email"), mailto);
-
- g_free(mailto);
+
+ g_free(mailto);
g_free(escaped);
g_free(userid);
}
@@ -1418,7 +1380,7 @@ static void jabber_vcard_parse(JabberStream *js, xmlnode *packet, gpointer data)
if (b) {
purple_blist_node_set_string((PurpleBlistNode*)b, "servernick", serverside_alias);
}
-
+
g_free(serverside_alias);
}
@@ -1427,146 +1389,22 @@ static void jabber_vcard_parse(JabberStream *js, xmlnode *packet, gpointer data)
jabber_buddy_info_show_if_ready(jbi);
}
-typedef struct _JabberBuddyAvatarUpdateURLInfo {
- JabberStream *js;
- char *from;
- char *id;
-} JabberBuddyAvatarUpdateURLInfo;
-
-static void do_buddy_avatar_update_fromurl(PurpleUtilFetchUrlData *url_data, gpointer user_data, const gchar *url_text, gsize len, const gchar *error_message) {
- JabberBuddyAvatarUpdateURLInfo *info = user_data;
- if(!url_text) {
- purple_debug(PURPLE_DEBUG_ERROR, "jabber",
- "do_buddy_avatar_update_fromurl got error \"%s\"", error_message);
- return;
- }
-
- purple_buddy_icons_set_for_user(purple_connection_get_account(info->js->gc), info->from, (void*)url_text, len, info->id);
- g_free(info->from);
- g_free(info->id);
- g_free(info);
-}
-
-static void do_buddy_avatar_update_data(JabberStream *js, const char *from, xmlnode *items) {
- xmlnode *item, *data;
- const char *checksum;
- char *b64data;
- void *img;
- size_t size;
- if(!items)
- return;
-
- item = xmlnode_get_child(items, "item");
- if(!item)
- return;
-
- data = xmlnode_get_child_with_namespace(item,"data",AVATARNAMESPACEDATA);
- if(!data)
- return;
-
- checksum = xmlnode_get_attrib(item,"id");
- if(!checksum)
- return;
-
- b64data = xmlnode_get_data(data);
- if(!b64data)
- return;
-
- img = purple_base64_decode(b64data, &size);
- if(!img) {
- g_free(b64data);
- return;
- }
-
- purple_buddy_icons_set_for_user(purple_connection_get_account(js->gc), from, img, size, checksum);
- g_free(b64data);
-}
-
-void jabber_buddy_avatar_update_metadata(JabberStream *js, const char *from, xmlnode *items) {
- PurpleBuddy *buddy = purple_find_buddy(purple_connection_get_account(js->gc), from);
- const char *checksum;
- xmlnode *item, *metadata;
- if(!buddy)
- return;
-
- checksum = purple_buddy_icons_get_checksum_for_user(buddy);
- item = xmlnode_get_child(items,"item");
- metadata = xmlnode_get_child_with_namespace(item, "metadata", AVATARNAMESPACEMETA);
- if(!metadata)
- return;
- /* check if we have received a stop */
- if(xmlnode_get_child(metadata, "stop")) {
- purple_buddy_icons_set_for_user(purple_connection_get_account(js->gc), from, NULL, 0, NULL);
- } else {
- xmlnode *info, *goodinfo = NULL;
- gboolean has_children = FALSE;
-
- /* iterate over all info nodes to get one we can use */
- for(info = metadata->child; info; info = info->next) {
- if(info->type == XMLNODE_TYPE_TAG)
- has_children = TRUE;
- if(info->type == XMLNODE_TYPE_TAG && !strcmp(info->name,"info")) {
- const char *type = xmlnode_get_attrib(info,"type");
- const char *id = xmlnode_get_attrib(info,"id");
-
- if(checksum && id && !strcmp(id, checksum)) {
- /* we already have that avatar, so we don't have to do anything */
- goodinfo = NULL;
- break;
- }
- /* We'll only pick the png one for now. It's a very nice image format anyways. */
- if(type && id && !goodinfo && !strcmp(type, "image/png"))
- goodinfo = info;
- }
- }
- if(has_children == FALSE) {
- purple_buddy_icons_set_for_user(purple_connection_get_account(js->gc), from, NULL, 0, NULL);
- } else if(goodinfo) {
- const char *url = xmlnode_get_attrib(goodinfo, "url");
- const char *id = xmlnode_get_attrib(goodinfo,"id");
-
- /* the avatar might either be stored in a pep node, or on a HTTP/HTTPS URL */
- if(!url)
- jabber_pep_request_item(js, from, AVATARNAMESPACEDATA, id, do_buddy_avatar_update_data);
- else {
- PurpleUtilFetchUrlData *url_data;
- JabberBuddyAvatarUpdateURLInfo *info = g_new0(JabberBuddyAvatarUpdateURLInfo, 1);
- info->js = js;
-
- url_data = purple_util_fetch_url_len(url, TRUE, NULL, TRUE,
- MAX_HTTP_BUDDYICON_BYTES,
- do_buddy_avatar_update_fromurl, info);
- if (url_data) {
- info->from = g_strdup(from);
- info->id = g_strdup(id);
- js->url_datas = g_slist_prepend(js->url_datas, url_data);
- } else
- g_free(info);
-
- }
- }
- }
-}
-
static void jabber_buddy_info_resource_free(gpointer data)
{
JabberBuddyInfoResource *jbri = data;
g_free(jbri);
}
-static void jabber_version_parse(JabberStream *js, xmlnode *packet, gpointer data)
+static void jabber_version_parse(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data)
{
JabberBuddyInfo *jbi = data;
- const char *type, *id, *from;
xmlnode *query;
char *resource_name;
g_return_if_fail(jbi != NULL);
- type = xmlnode_get_attrib(packet, "type");
- id = xmlnode_get_attrib(packet, "id");
- from = xmlnode_get_attrib(packet, "from");
-
jabber_buddy_info_remove_id(jbi, id);
if(!from)
@@ -1575,7 +1413,7 @@ static void jabber_version_parse(JabberStream *js, xmlnode *packet, gpointer dat
resource_name = jabber_get_resource(from);
if(resource_name) {
- if(type && !strcmp(type, "result")) {
+ if (type == JABBER_IQ_RESULT) {
if((query = xmlnode_get_child(packet, "query"))) {
JabberBuddyResource *jbr = jabber_buddy_find_resource(jbi->jb, resource_name);
if(jbr) {
@@ -1598,19 +1436,17 @@ static void jabber_version_parse(JabberStream *js, xmlnode *packet, gpointer dat
jabber_buddy_info_show_if_ready(jbi);
}
-static void jabber_last_parse(JabberStream *js, xmlnode *packet, gpointer data)
+static void jabber_last_parse(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data)
{
JabberBuddyInfo *jbi = data;
xmlnode *query;
char *resource_name;
- const char *type, *id, *from, *seconds;
+ const char *seconds;
g_return_if_fail(jbi != NULL);
- type = xmlnode_get_attrib(packet, "type");
- id = xmlnode_get_attrib(packet, "id");
- from = xmlnode_get_attrib(packet, "from");
-
jabber_buddy_info_remove_id(jbi, id);
if(!from)
@@ -1619,18 +1455,56 @@ static void jabber_last_parse(JabberStream *js, xmlnode *packet, gpointer data)
resource_name = jabber_get_resource(from);
if(resource_name) {
- if(type && !strcmp(type, "result")) {
+ if (type == JABBER_IQ_RESULT) {
if((query = xmlnode_get_child(packet, "query"))) {
seconds = xmlnode_get_attrib(query, "seconds");
if(seconds) {
char *end = NULL;
long sec = strtol(seconds, &end, 10);
+ JabberBuddy *jb = NULL;
+ char *resource = NULL;
+ char *buddy_name = NULL;
+ JabberBuddyResource *jbr = NULL;
+
if(end != seconds) {
JabberBuddyInfoResource *jbir = g_hash_table_lookup(jbi->resources, resource_name);
if(jbir) {
jbir->idle_seconds = sec;
}
}
+ /* Update the idle time of the buddy resource, if we got it.
+ This will correct the value when a server doesn't mark
+ delayed presence and we got the presence when signing on */
+ jb = jabber_buddy_find(js, from, FALSE);
+ if (jb) {
+ resource = jabber_get_resource(from);
+ buddy_name = jabber_get_bare_jid(from);
+ /* if the resource already has an idle time set, we
+ must have gotten it originally from a presence. In
+ this case we update it. Otherwise don't update it, to
+ avoid setting an idle and not getting informed about
+ the resource getting unidle */
+ if (resource && buddy_name) {
+ jbr = jabber_buddy_find_resource(jb, resource);
+ if (jbr) {
+ if (jbr->idle) {
+ if (sec) {
+ jbr->idle = time(NULL) - sec;
+ } else {
+ jbr->idle = 0;
+ }
+
+ if (jbr ==
+ jabber_buddy_find_resource(jb, NULL)) {
+ purple_prpl_got_user_idle(js->gc->account,
+ buddy_name, jbr->idle, jbr->idle);
+ }
+ }
+ }
+ }
+ g_free(resource);
+ g_free(buddy_name);
+ }
}
}
}
@@ -1640,6 +1514,88 @@ static void jabber_last_parse(JabberStream *js, xmlnode *packet, gpointer data)
jabber_buddy_info_show_if_ready(jbi);
}
+static void jabber_last_offline_parse(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data)
+{
+ JabberBuddyInfo *jbi = data;
+ xmlnode *query;
+ const char *seconds;
+
+ g_return_if_fail(jbi != NULL);
+
+ jabber_buddy_info_remove_id(jbi, id);
+
+ if(!from)
+ return;
+
+ if (type == JABBER_IQ_RESULT) {
+ if((query = xmlnode_get_child(packet, "query"))) {
+ seconds = xmlnode_get_attrib(query, "seconds");
+ if(seconds) {
+ char *end = NULL;
+ long sec = strtol(seconds, &end, 10);
+ if(end != seconds) {
+ jbi->last_seconds = sec;
+ }
+ }
+ jbi->last_message = xmlnode_get_data(query);
+ }
+ }
+
+ jabber_buddy_info_show_if_ready(jbi);
+}
+
+static void jabber_time_parse(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data)
+{
+ JabberBuddyInfo *jbi = data;
+ JabberBuddyResource *jbr;
+ char *resource_name;
+
+ g_return_if_fail(jbi != NULL);
+
+ jabber_buddy_info_remove_id(jbi, id);
+
+ if (!from)
+ return;
+
+ resource_name = jabber_get_resource(from);
+ jbr = resource_name ? jabber_buddy_find_resource(jbi->jb, resource_name) : NULL;
+ g_free(resource_name);
+ if (jbr) {
+ if (type == JABBER_IQ_RESULT) {
+ xmlnode *time = xmlnode_get_child(packet, "time");
+ xmlnode *tzo = time ? xmlnode_get_child(time, "tzo") : NULL;
+ char *tzo_data = tzo ? xmlnode_get_data(tzo) : NULL;
+ if (tzo_data) {
+ char *c = tzo_data;
+ int hours, minutes;
+ if (tzo_data[0] == 'Z' && tzo_data[1] == '\0') {
+ jbr->tz_off = 0;
+ } else {
+ gboolean offset_positive = (tzo_data[0] == '+');
+ /* [+-]HH:MM */
+ if (((*c == '+' || *c == '-') && (c = c + 1)) &&
+ sscanf(c, "%02d:%02d", &hours, &minutes) == 2) {
+ jbr->tz_off = 60*60*hours + 60*minutes;
+ if (!offset_positive)
+ jbr->tz_off *= -1;
+ } else {
+ purple_debug_info("jabber", "Ignoring malformed timezone %s",
+ tzo_data);
+ }
+ }
+
+ g_free(tzo_data);
+ }
+ }
+ }
+
+ jabber_buddy_info_show_if_ready(jbi);
+}
+
void jabber_buddy_remove_all_pending_buddy_info_requests(JabberStream *js)
{
if (js->pending_buddy_info_requests)
@@ -1771,16 +1727,38 @@ static void jabber_buddy_get_info_for_jid(JabberStream *js, const char *jid)
jabber_iq_send(iq);
}
+ if (jbr->tz_off == PURPLE_NO_TZ_OFF &&
+ (!jbr->caps.info ||
+ jabber_resource_has_capability(jbr, "urn:xmpp:time"))) {
+ xmlnode *child;
+ iq = jabber_iq_new(js, JABBER_IQ_GET);
+ xmlnode_set_attrib(iq->node, "to", full_jid);
+ child = xmlnode_new_child(iq->node, "time");
+ xmlnode_set_namespace(child, "urn:xmpp:time");
+ jabber_iq_set_callback(iq, jabber_time_parse, jbi);
+ jbi->ids = g_slist_prepend(jbi->ids, g_strdup(iq->id));
+ jabber_iq_send(iq);
+ }
+
g_free(full_jid);
}
+ if (!jb->resources && strchr(jid, '/') == NULL) {
+ /* user is offline, send a jabber:iq:last to find out last time online */
+ iq = jabber_iq_new_query(js, JABBER_IQ_GET, "jabber:iq:last");
+ xmlnode_set_attrib(iq->node, "to", jid);
+ jabber_iq_set_callback(iq, jabber_last_offline_parse, jbi);
+ jbi->ids = g_slist_prepend(jbi->ids, g_strdup(iq->id));
+ jabber_iq_send(iq);
+ }
+
js->pending_buddy_info_requests = g_slist_prepend(js->pending_buddy_info_requests, jbi);
jbi->timeout_handle = purple_timeout_add_seconds(30, jabber_buddy_get_info_timeout, jbi);
}
void jabber_buddy_get_info(PurpleConnection *gc, const char *who)
{
- JabberStream *js = gc->proto_data;
+ JabberStream *js = purple_connection_get_protocol_data(gc);
JabberID *jid = jabber_id_new(who);
if (!jid)
@@ -1840,10 +1818,10 @@ static void jabber_buddy_make_invisible(PurpleBlistNode *node, gpointer data)
g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
buddy = (PurpleBuddy *) node;
- gc = purple_account_get_connection(buddy->account);
- js = gc->proto_data;
+ gc = purple_account_get_connection(purple_buddy_get_account(buddy));
+ js = purple_connection_get_protocol_data(gc);
- jabber_buddy_set_invisibility(js, buddy->name, TRUE);
+ jabber_buddy_set_invisibility(js, purple_buddy_get_name(buddy), TRUE);
}
static void jabber_buddy_make_visible(PurpleBlistNode *node, gpointer data)
@@ -1855,10 +1833,10 @@ static void jabber_buddy_make_visible(PurpleBlistNode *node, gpointer data)
g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
buddy = (PurpleBuddy *) node;
- gc = purple_account_get_connection(buddy->account);
- js = gc->proto_data;
+ gc = purple_account_get_connection(purple_buddy_get_account(buddy));
+ js = purple_connection_get_protocol_data(gc);
- jabber_buddy_set_invisibility(js, buddy->name, FALSE);
+ jabber_buddy_set_invisibility(js, purple_buddy_get_name(buddy), FALSE);
}
static void jabber_buddy_cancel_presence_notification(PurpleBlistNode *node,
@@ -1871,11 +1849,11 @@ static void jabber_buddy_cancel_presence_notification(PurpleBlistNode *node,
g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
buddy = (PurpleBuddy *) node;
- gc = purple_account_get_connection(buddy->account);
- js = gc->proto_data;
+ gc = purple_account_get_connection(purple_buddy_get_account(buddy));
+ js = purple_connection_get_protocol_data(gc);
/* I wonder if we should prompt the user before doing this */
- jabber_presence_subscription_set(js, buddy->name, "unsubscribed");
+ jabber_presence_subscription_set(js, purple_buddy_get_name(buddy), "unsubscribed");
}
static void jabber_buddy_rerequest_auth(PurpleBlistNode *node, gpointer data)
@@ -1887,10 +1865,10 @@ static void jabber_buddy_rerequest_auth(PurpleBlistNode *node, gpointer data)
g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
buddy = (PurpleBuddy *) node;
- gc = purple_account_get_connection(buddy->account);
- js = gc->proto_data;
+ gc = purple_account_get_connection(purple_buddy_get_account(buddy));
+ js = purple_connection_get_protocol_data(gc);
- jabber_presence_subscription_set(js, buddy->name, "subscribe");
+ jabber_presence_subscription_set(js, purple_buddy_get_name(buddy), "subscribe");
}
@@ -1903,18 +1881,18 @@ static void jabber_buddy_unsubscribe(PurpleBlistNode *node, gpointer data)
g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
buddy = (PurpleBuddy *) node;
- gc = purple_account_get_connection(buddy->account);
- js = gc->proto_data;
+ gc = purple_account_get_connection(purple_buddy_get_account(buddy));
+ js = purple_connection_get_protocol_data(gc);
- jabber_presence_subscription_set(js, buddy->name, "unsubscribe");
+ jabber_presence_subscription_set(js, purple_buddy_get_name(buddy), "unsubscribe");
}
static void jabber_buddy_login(PurpleBlistNode *node, gpointer data) {
if(PURPLE_BLIST_NODE_IS_BUDDY(node)) {
/* simply create a directed presence of the current status */
PurpleBuddy *buddy = (PurpleBuddy *) node;
- PurpleConnection *gc = purple_account_get_connection(buddy->account);
- JabberStream *js = gc->proto_data;
+ PurpleConnection *gc = purple_account_get_connection(purple_buddy_get_account(buddy));
+ JabberStream *js = purple_connection_get_protocol_data(gc);
PurpleAccount *account = purple_connection_get_account(gc);
PurplePresence *gpresence = purple_account_get_presence(account);
PurpleStatus *status = purple_presence_get_active_status(gpresence);
@@ -1922,14 +1900,14 @@ static void jabber_buddy_login(PurpleBlistNode *node, gpointer data) {
JabberBuddyState state;
char *msg;
int priority;
-
+
purple_status_to_jabber(status, &state, &msg, &priority);
presence = jabber_presence_create_js(js, state, msg, priority);
-
+
g_free(msg);
-
- xmlnode_set_attrib(presence, "to", buddy->name);
-
+
+ xmlnode_set_attrib(presence, "to", purple_buddy_get_name(buddy));
+
jabber_send(js, presence);
xmlnode_free(presence);
}
@@ -1939,13 +1917,14 @@ static void jabber_buddy_logout(PurpleBlistNode *node, gpointer data) {
if(PURPLE_BLIST_NODE_IS_BUDDY(node)) {
/* simply create a directed unavailable presence */
PurpleBuddy *buddy = (PurpleBuddy *) node;
- JabberStream *js = purple_account_get_connection(buddy->account)->proto_data;
+ PurpleConnection *gc = purple_account_get_connection(purple_buddy_get_account(buddy));
+ JabberStream *js = purple_connection_get_protocol_data(gc);
xmlnode *presence;
-
+
presence = jabber_presence_create_js(js, JABBER_BUDDY_STATE_UNAVAILABLE, NULL, 0);
-
- xmlnode_set_attrib(presence, "to", buddy->name);
-
+
+ xmlnode_set_attrib(presence, "to", purple_buddy_get_name(buddy));
+
jabber_send(js, presence);
xmlnode_free(presence);
}
@@ -1953,9 +1932,10 @@ static void jabber_buddy_logout(PurpleBlistNode *node, gpointer data) {
static GList *jabber_buddy_menu(PurpleBuddy *buddy)
{
- PurpleConnection *gc = purple_account_get_connection(buddy->account);
- JabberStream *js = gc->proto_data;
- JabberBuddy *jb = jabber_buddy_find(js, buddy->name, TRUE);
+ PurpleConnection *gc = purple_account_get_connection(purple_buddy_get_account(buddy));
+ JabberStream *js = purple_connection_get_protocol_data(gc);
+ const char *name = purple_buddy_get_name(buddy);
+ JabberBuddy *jb = jabber_buddy_find(js, name, TRUE);
GList *jbrs;
GList *m = NULL;
@@ -2001,7 +1981,7 @@ static GList *jabber_buddy_menu(PurpleBuddy *buddy)
NULL, NULL);
m = g_list_append(m, act);
}
-
+
/*
* This if-condition implements parts of XEP-0100: Gateway Interaction
*
@@ -2010,7 +1990,7 @@ static GList *jabber_buddy_menu(PurpleBuddy *buddy)
* that gateways on the roster can be identified by having no '@' in their jid. This is a faily safe assumption, since
* people don't tend to have a server or other service there.
*/
- if (g_utf8_strchr(buddy->name, -1, '@') == NULL) {
+ if (g_utf8_strchr(name, -1, '@') == NULL) {
act = purple_menu_action_new(_("Log In"),
PURPLE_CALLBACK(jabber_buddy_login),
NULL, NULL);
@@ -2020,7 +2000,7 @@ static GList *jabber_buddy_menu(PurpleBuddy *buddy)
NULL, NULL);
m = g_list_append(m, act);
}
-
+
/* add all ad hoc commands to the action menu */
for(jbrs = jb->resources; jbrs; jbrs = g_list_next(jbrs)) {
JabberBuddyResource *jbr = jbrs->data;
@@ -2165,7 +2145,9 @@ static void user_search_result_add_buddy_cb(PurpleConnection *gc, GList *row, vo
g_list_nth_data(row, 0), NULL, NULL);
}
-static void user_search_result_cb(JabberStream *js, xmlnode *packet, gpointer data)
+static void user_search_result_cb(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data)
{
PurpleNotifySearchResults *results;
PurpleNotifySearchColumn *column;
@@ -2361,15 +2343,16 @@ static const char * jabber_user_dir_comments [] = {
};
#endif
-static void user_search_fields_result_cb(JabberStream *js, xmlnode *packet, gpointer data)
+static void user_search_fields_result_cb(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data)
{
xmlnode *query, *x;
- const char *from, *type;
- if(!(from = xmlnode_get_attrib(packet, "from")))
+ if (!from)
return;
- if(!(type = xmlnode_get_attrib(packet, "type")) || !strcmp(type, "error")) {
+ if (type == JABBER_IQ_ERROR) {
char *msg = jabber_parse_error(js, packet, NULL);
if(!msg)
@@ -2478,7 +2461,7 @@ void jabber_user_search(JabberStream *js, const char *directory)
void jabber_user_search_begin(PurplePluginAction *action)
{
PurpleConnection *gc = (PurpleConnection *) action->context;
- JabberStream *js = gc->proto_data;
+ JabberStream *js = purple_connection_get_protocol_data(gc);
purple_request_input(gc, _("Enter a User Directory"), _("Enter a User Directory"),
_("Select a user directory to search"),
@@ -2493,23 +2476,35 @@ void jabber_user_search_begin(PurplePluginAction *action)
gboolean
jabber_resource_has_capability(const JabberBuddyResource *jbr, const gchar *cap)
{
- const GList *iter = NULL;
+ const GList *node = NULL;
+ const JabberCapsNodeExts *exts;
- if (!jbr->caps) {
+ if (!jbr->caps.info) {
purple_debug_error("jabber",
"Unable to find caps: nothing known about buddy\n");
return FALSE;
}
- for (iter = jbr->caps->features ; iter ; iter = g_list_next(iter)) {
- if (strcmp(iter->data, cap) == 0) {
- purple_debug_info("jabber", "Found cap: %s\n", (char *)iter->data);
- return TRUE;
+ node = g_list_find_custom(jbr->caps.info->features, cap, (GCompareFunc)strcmp);
+ if (!node && jbr->caps.exts && jbr->caps.info->exts) {
+ const GList *ext;
+ exts = jbr->caps.info->exts;
+ /* Walk through all the enabled caps, checking each list for the cap.
+ * Don't check it twice, though. */
+ for (ext = jbr->caps.exts; ext && !node; ext = ext->next) {
+ GList *features = g_hash_table_lookup(exts->exts, ext->data);
+ if (features)
+ node = g_list_find_custom(features, cap, (GCompareFunc)strcmp);
}
}
- purple_debug_info("jabber", "Cap %s not found\n", cap);
- return FALSE;
+ /* TODO: Are these messages actually useful? */
+ if (node)
+ purple_debug_info("jabber", "Found cap: %s\n", cap);
+ else
+ purple_debug_info("jabber", "Cap %s not found\n", cap);
+
+ return (node != NULL);
}
gboolean
@@ -2526,3 +2521,22 @@ jabber_buddy_has_capability(const JabberBuddy *jb, const gchar *cap)
return jabber_resource_has_capability(jbr, cap);
}
+const gchar *
+jabber_resource_get_identity_category_type(const JabberBuddyResource *jbr,
+ const gchar *category)
+{
+ const GList *iter = NULL;
+
+ if (jbr->caps.info) {
+ for (iter = jbr->caps.info->identities ; iter ; iter = g_list_next(iter)) {
+ const JabberIdentity *identity =
+ (JabberIdentity *) iter->data;
+
+ if (strcmp(identity->category, category) == 0) {
+ return identity->type;
+ }
+ }
+ }
+
+ return NULL;
+}
diff --git a/libpurple/protocols/jabber/buddy.h b/libpurple/protocols/jabber/buddy.h
index 0eb49b7c50..f113f9ce95 100644
--- a/libpurple/protocols/jabber/buddy.h
+++ b/libpurple/protocols/jabber/buddy.h
@@ -19,8 +19,8 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
*/
-#ifndef _PURPLE_JABBER_BUDDY_H_
-#define _PURPLE_JABBER_BUDDY_H_
+#ifndef PURPLE_JABBER_BUDDY_H_
+#define PURPLE_JABBER_BUDDY_H_
typedef enum {
JABBER_BUDDY_STATE_UNKNOWN = -2,
@@ -36,9 +36,6 @@ typedef enum {
#include "jabber.h"
#include "caps.h"
-#define AVATARNAMESPACEDATA "http://www.xmpp.org/extensions/xep-0084.html#ns-data"
-#define AVATARNAMESPACEMETA "http://www.xmpp.org/extensions/xep-0084.html#ns-metadata"
-
typedef struct _JabberBuddy {
GList *resources;
char *error_msg;
@@ -69,6 +66,7 @@ typedef struct _JabberBuddyResource {
int priority;
JabberBuddyState state;
char *status;
+ time_t idle;
JabberCapabilities capabilities;
char *thread_id;
enum {
@@ -81,8 +79,14 @@ typedef struct _JabberBuddyResource {
char *name;
char *os;
} client;
- JabberCapsClientInfo *caps;
+ /* tz_off == PURPLE_NO_TZ_OFF when unset */
+ long tz_off;
+ struct {
+ JabberCapsClientInfo *info;
+ GList *exts;
+ } caps;
GList *commands;
+ gboolean commands_fetched;
} JabberBuddyResource;
void jabber_buddy_free(JabberBuddy *jb);
@@ -94,7 +98,6 @@ JabberBuddyResource *jabber_buddy_track_resource(JabberBuddy *jb, const char *re
int priority, JabberBuddyState state, const char *status);
void jabber_buddy_resource_free(JabberBuddyResource *jbr);
void jabber_buddy_remove_resource(JabberBuddy *jb, const char *resource);
-const char *jabber_buddy_get_status_msg(JabberBuddy *jb);
void jabber_buddy_get_info(PurpleConnection *gc, const char *who);
GList *jabber_blist_node_menu(PurpleBlistNode *node);
@@ -102,7 +105,6 @@ GList *jabber_blist_node_menu(PurpleBlistNode *node);
void jabber_set_info(PurpleConnection *gc, const char *info);
void jabber_setup_set_info(PurplePluginAction *action);
void jabber_set_buddy_icon(PurpleConnection *gc, PurpleStoredImage *img);
-void jabber_buddy_avatar_update_metadata(JabberStream *js, const char *from, xmlnode *items);
const char *jabber_buddy_state_get_name(JabberBuddyState state);
const char *jabber_buddy_state_get_status_id(JabberBuddyState state);
@@ -121,4 +123,8 @@ gboolean jabber_resource_has_capability(const JabberBuddyResource *jbr,
const gchar *cap);
gboolean jabber_buddy_has_capability(const JabberBuddy *jb, const gchar *cap);
-#endif /* _PURPLE_JABBER_BUDDY_H_ */
+const gchar *
+jabber_resource_get_identity_category_type(const JabberBuddyResource *jbr,
+ const gchar *category);
+
+#endif /* PURPLE_JABBER_BUDDY_H_ */
diff --git a/libpurple/protocols/jabber/caps.c b/libpurple/protocols/jabber/caps.c
index ad33a47884..236c38f325 100644
--- a/libpurple/protocols/jabber/caps.c
+++ b/libpurple/protocols/jabber/caps.c
@@ -21,99 +21,215 @@
#include "internal.h"
+#include "debug.h"
#include "caps.h"
-#include <string.h>
-#include "internal.h"
-#include "util.h"
+#include "cipher.h"
#include "iq.h"
+#include "presence.h"
+#include "util.h"
#define JABBER_CAPS_FILENAME "xmpp-caps.xml"
-static GHashTable *capstable = NULL; /* JabberCapsKey -> JabberCapsValue */
+typedef struct _JabberDataFormField {
+ gchar *var;
+ GList *values;
+} JabberDataFormField;
-typedef struct _JabberCapsKey {
- char *node;
- char *ver;
-} JabberCapsKey;
+static GHashTable *capstable = NULL; /* JabberCapsTuple -> JabberCapsClientInfo */
+static GHashTable *nodetable = NULL; /* char *node -> JabberCapsNodeExts */
+static guint save_timer = 0;
-typedef struct _JabberCapsValueExt {
- GList *identities; /* JabberCapsIdentity */
- GList *features; /* char * */
-} JabberCapsValueExt;
+/**
+ * Processes a query-node and returns a JabberCapsClientInfo object with all relevant info.
+ *
+ * @param query A query object.
+ * @return A JabberCapsClientInfo object.
+ */
+static JabberCapsClientInfo *jabber_caps_parse_client_info(xmlnode *query);
+
+/* Free a GList of allocated char* */
+static void
+free_string_glist(GList *list)
+{
+ g_list_foreach(list, (GFunc)g_free, NULL);
+ g_list_free(list);
+}
-typedef struct _JabberCapsValue {
- GList *identities; /* JabberCapsIdentity */
- GList *features; /* char * */
- GHashTable *ext; /* char * -> JabberCapsValueExt */
-} JabberCapsValue;
+static JabberCapsNodeExts*
+jabber_caps_node_exts_ref(JabberCapsNodeExts *exts)
+{
+ g_return_val_if_fail(exts != NULL, NULL);
-static guint jabber_caps_hash(gconstpointer key) {
- const JabberCapsKey *name = key;
- guint nodehash = g_str_hash(name->node);
- guint verhash = g_str_hash(name->ver);
-
- return nodehash ^ verhash;
+ ++exts->ref;
+ return exts;
}
-static gboolean jabber_caps_compare(gconstpointer v1, gconstpointer v2) {
- const JabberCapsKey *name1 = v1;
- const JabberCapsKey *name2 = v2;
+static void
+jabber_caps_node_exts_unref(JabberCapsNodeExts *exts)
+{
+ if (exts == NULL)
+ return;
+
+ g_return_if_fail(exts->ref != 0);
+
+ if (--exts->ref != 0)
+ return;
- return strcmp(name1->node,name2->node) == 0 && strcmp(name1->ver,name2->ver) == 0;
+ g_hash_table_destroy(exts->exts);
+ g_free(exts);
}
-static void jabber_caps_destroy_key(gpointer key) {
- JabberCapsKey *keystruct = key;
- g_free(keystruct->node);
- g_free(keystruct->ver);
- g_free(keystruct);
+static guint jabber_caps_hash(gconstpointer data) {
+ const JabberCapsTuple *key = data;
+ guint nodehash = g_str_hash(key->node);
+ guint verhash = g_str_hash(key->ver);
+ /*
+ * 'hash' was optional in XEP-0115 v1.4 and g_str_hash crashes on NULL >:O.
+ * Okay, maybe I've played too much Zelda, but that looks like
+ * a Deku Shrub...
+ */
+ guint hashhash = (key->hash ? g_str_hash(key->hash) : 0);
+ return nodehash ^ verhash ^ hashhash;
+}
+
+static gboolean jabber_caps_compare(gconstpointer v1, gconstpointer v2) {
+ const JabberCapsTuple *name1 = v1;
+ const JabberCapsTuple *name2 = v2;
+
+ return g_str_equal(name1->node, name2->node) &&
+ g_str_equal(name1->ver, name2->ver) &&
+ purple_strequal(name1->hash, name2->hash);
}
-static void jabber_caps_destroy_value(gpointer value) {
- JabberCapsValue *valuestruct = value;
- while(valuestruct->identities) {
- JabberCapsIdentity *id = valuestruct->identities->data;
+static void
+jabber_caps_client_info_destroy(JabberCapsClientInfo *info)
+{
+ if (info == NULL)
+ return;
+
+ while(info->identities) {
+ JabberIdentity *id = info->identities->data;
g_free(id->category);
g_free(id->type);
g_free(id->name);
+ g_free(id->lang);
g_free(id);
-
- valuestruct->identities = g_list_delete_link(valuestruct->identities,valuestruct->identities);
+ info->identities = g_list_delete_link(info->identities, info->identities);
}
- while(valuestruct->features) {
- g_free(valuestruct->features->data);
- valuestruct->features = g_list_delete_link(valuestruct->features,valuestruct->features);
+
+ free_string_glist(info->features);
+
+ while (info->forms) {
+ xmlnode_free(info->forms->data);
+ info->forms = g_list_delete_link(info->forms, info->forms);
}
- g_hash_table_destroy(valuestruct->ext);
- g_free(valuestruct);
+
+ jabber_caps_node_exts_unref(info->exts);
+
+ g_free((char *)info->tuple.node);
+ g_free((char *)info->tuple.ver);
+ g_free((char *)info->tuple.hash);
+
+ g_free(info);
}
-static void jabber_caps_ext_destroy_value(gpointer value) {
- JabberCapsValueExt *valuestruct = value;
- while(valuestruct->identities) {
- JabberCapsIdentity *id = valuestruct->identities->data;
- g_free(id->category);
- g_free(id->type);
- g_free(id->name);
- g_free(id);
-
- valuestruct->identities = g_list_delete_link(valuestruct->identities,valuestruct->identities);
+/* NOTE: Takes a reference to the exts, unref it if you don't really want to
+ * keep it around. */
+static JabberCapsNodeExts*
+jabber_caps_find_exts_by_node(const char *node)
+{
+ JabberCapsNodeExts *exts;
+ if (NULL == (exts = g_hash_table_lookup(nodetable, node))) {
+ exts = g_new0(JabberCapsNodeExts, 1);
+ exts->exts = g_hash_table_new_full(g_str_hash, g_str_equal, g_free,
+ (GDestroyNotify)free_string_glist);
+ g_hash_table_insert(nodetable, g_strdup(node), jabber_caps_node_exts_ref(exts));
+ }
+
+ return jabber_caps_node_exts_ref(exts);
+}
+
+static void
+exts_to_xmlnode(gconstpointer key, gconstpointer value, gpointer user_data)
+{
+ const char *identifier = key;
+ const GList *features = value, *node;
+ xmlnode *client = user_data, *ext, *feature;
+
+ ext = xmlnode_new_child(client, "ext");
+ xmlnode_set_attrib(ext, "identifier", identifier);
+
+ for (node = features; node; node = node->next) {
+ feature = xmlnode_new_child(ext, "feature");
+ xmlnode_set_attrib(feature, "var", (const gchar *)node->data);
}
- while(valuestruct->features) {
- g_free(valuestruct->features->data);
- valuestruct->features = g_list_delete_link(valuestruct->features,valuestruct->features);
+}
+
+static void jabber_caps_store_client(gpointer key, gpointer value, gpointer user_data) {
+ const JabberCapsTuple *tuple = key;
+ const JabberCapsClientInfo *props = value;
+ xmlnode *root = user_data;
+ xmlnode *client = xmlnode_new_child(root, "client");
+ GList *iter;
+
+ xmlnode_set_attrib(client, "node", tuple->node);
+ xmlnode_set_attrib(client, "ver", tuple->ver);
+ if (tuple->hash)
+ xmlnode_set_attrib(client, "hash", tuple->hash);
+ for(iter = props->identities; iter; iter = g_list_next(iter)) {
+ JabberIdentity *id = iter->data;
+ xmlnode *identity = xmlnode_new_child(client, "identity");
+ xmlnode_set_attrib(identity, "category", id->category);
+ xmlnode_set_attrib(identity, "type", id->type);
+ if (id->name)
+ xmlnode_set_attrib(identity, "name", id->name);
+ if (id->lang)
+ xmlnode_set_attrib(identity, "lang", id->lang);
}
- g_free(valuestruct);
+
+ for(iter = props->features; iter; iter = g_list_next(iter)) {
+ const char *feat = iter->data;
+ xmlnode *feature = xmlnode_new_child(client, "feature");
+ xmlnode_set_attrib(feature, "var", feat);
+ }
+
+ for(iter = props->forms; iter; iter = g_list_next(iter)) {
+ /* FIXME: See #7814 */
+ xmlnode *xdata = iter->data;
+ xmlnode_insert_child(client, xmlnode_copy(xdata));
+ }
+
+ /* TODO: Ideally, only save this once-per-node... */
+ if (props->exts)
+ g_hash_table_foreach(props->exts->exts, (GHFunc)exts_to_xmlnode, client);
}
-static void jabber_caps_load(void);
+static gboolean
+do_jabber_caps_store(gpointer data)
+{
+ char *str;
+ int length = 0;
+ xmlnode *root = xmlnode_new("capabilities");
+ g_hash_table_foreach(capstable, jabber_caps_store_client, root);
+ str = xmlnode_to_formatted_str(root, &length);
+ xmlnode_free(root);
+ purple_util_write_data_to_file(JABBER_CAPS_FILENAME, str, length);
+ g_free(str);
+
+ save_timer = 0;
+ return FALSE;
+}
-void jabber_caps_init(void) {
- capstable = g_hash_table_new_full(jabber_caps_hash, jabber_caps_compare, jabber_caps_destroy_key, jabber_caps_destroy_value);
- jabber_caps_load();
+static void
+schedule_caps_save(void)
+{
+ if (save_timer == 0)
+ save_timer = purple_timeout_add_seconds(5, do_jabber_caps_store, NULL);
}
-static void jabber_caps_load(void) {
+static void
+jabber_caps_load(void)
+{
xmlnode *capsdata = purple_util_read_xml_from_file(JABBER_CAPS_FILENAME, "XMPP capabilities cache");
xmlnode *client;
@@ -124,17 +240,23 @@ static void jabber_caps_load(void) {
xmlnode_free(capsdata);
return;
}
-
+
for(client = capsdata->child; client; client = client->next) {
if(client->type != XMLNODE_TYPE_TAG)
continue;
if(!strcmp(client->name, "client")) {
- JabberCapsKey *key = g_new0(JabberCapsKey, 1);
- JabberCapsValue *value = g_new0(JabberCapsValue, 1);
+ JabberCapsClientInfo *value = g_new0(JabberCapsClientInfo, 1);
+ JabberCapsTuple *key = (JabberCapsTuple*)&value->tuple;
xmlnode *child;
+ JabberCapsNodeExts *exts = NULL;
key->node = g_strdup(xmlnode_get_attrib(client,"node"));
key->ver = g_strdup(xmlnode_get_attrib(client,"ver"));
- value->ext = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, jabber_caps_ext_destroy_value);
+ key->hash = g_strdup(xmlnode_get_attrib(client,"hash"));
+
+ /* v1.3 capabilities */
+ if (key->hash == NULL)
+ exts = jabber_caps_find_exts_by_node(key->node);
+
for(child = client->child; child; child = child->next) {
if(child->type != XMLNODE_TYPE_TAG)
continue;
@@ -147,432 +269,700 @@ static void jabber_caps_load(void) {
const char *category = xmlnode_get_attrib(child, "category");
const char *type = xmlnode_get_attrib(child, "type");
const char *name = xmlnode_get_attrib(child, "name");
-
- JabberCapsIdentity *id = g_new0(JabberCapsIdentity, 1);
+ const char *lang = xmlnode_get_attrib(child, "lang");
+ JabberIdentity *id;
+
+ if (!category || !type)
+ continue;
+
+ id = g_new0(JabberIdentity, 1);
id->category = g_strdup(category);
id->type = g_strdup(type);
id->name = g_strdup(name);
-
+ id->lang = g_strdup(lang);
+
value->identities = g_list_append(value->identities,id);
- } else if(!strcmp(child->name,"ext")) {
+ } else if(!strcmp(child->name,"x")) {
+ /* TODO: See #7814 -- this might cause problems if anyone
+ * ever actually specifies forms. In fact, for this to
+ * work properly, that bug needs to be fixed in
+ * xmlnode_from_str, not the output version... */
+ value->forms = g_list_append(value->forms, xmlnode_copy(child));
+ } else if (!strcmp(child->name, "ext") && key->hash != NULL) {
+ purple_debug_warning("jabber", "Ignoring exts when reading new-style caps\n");
+ } else if (!strcmp(child->name, "ext")) {
+ /* TODO: Do we care about reading in the identities listed here? */
const char *identifier = xmlnode_get_attrib(child, "identifier");
- if(identifier) {
- xmlnode *extchild;
-
- JabberCapsValueExt *extvalue = g_new0(JabberCapsValueExt, 1);
-
- for(extchild = child->child; extchild; extchild = extchild->next) {
- if(extchild->type != XMLNODE_TYPE_TAG)
+ xmlnode *node;
+ GList *features = NULL;
+
+ if (!identifier)
+ continue;
+
+ for (node = child->child; node; node = node->next) {
+ if (node->type != XMLNODE_TYPE_TAG)
+ continue;
+ if (!strcmp(node->name, "feature")) {
+ const char *var = xmlnode_get_attrib(node, "var");
+ if (!var)
continue;
- if(!strcmp(extchild->name,"feature")) {
- const char *var = xmlnode_get_attrib(extchild, "var");
- if(!var)
- continue;
- extvalue->features = g_list_append(extvalue->features,g_strdup(var));
- } else if(!strcmp(extchild->name,"identity")) {
- const char *category = xmlnode_get_attrib(extchild, "category");
- const char *type = xmlnode_get_attrib(extchild, "type");
- const char *name = xmlnode_get_attrib(extchild, "name");
-
- JabberCapsIdentity *id = g_new0(JabberCapsIdentity, 1);
- id->category = g_strdup(category);
- id->type = g_strdup(type);
- id->name = g_strdup(name);
-
- extvalue->identities = g_list_append(extvalue->identities,id);
- }
+ features = g_list_prepend(features, g_strdup(var));
}
- g_hash_table_replace(value->ext, g_strdup(identifier), extvalue);
}
+
+ if (features) {
+ g_hash_table_insert(exts->exts, g_strdup(identifier),
+ features);
+ } else
+ purple_debug_warning("jabber", "Caps ext %s had no features.\n",
+ identifier);
}
}
+
+ value->exts = exts;
g_hash_table_replace(capstable, key, value);
+
}
}
xmlnode_free(capsdata);
}
-static void jabber_caps_store_ext(gpointer key, gpointer value, gpointer user_data) {
- const char *extname = key;
- JabberCapsValueExt *props = value;
- xmlnode *root = user_data;
- xmlnode *ext = xmlnode_new_child(root,"ext");
- GList *iter;
-
- xmlnode_set_attrib(ext,"identifier",extname);
-
- for(iter = props->identities; iter; iter = g_list_next(iter)) {
- JabberCapsIdentity *id = iter->data;
- xmlnode *identity = xmlnode_new_child(ext, "identity");
- xmlnode_set_attrib(identity, "category", id->category);
- xmlnode_set_attrib(identity, "type", id->type);
- if (id->name)
- xmlnode_set_attrib(identity, "name", id->name);
- }
+void jabber_caps_init(void)
+{
+ nodetable = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, (GDestroyNotify)jabber_caps_node_exts_unref);
+ capstable = g_hash_table_new_full(jabber_caps_hash, jabber_caps_compare, NULL, (GDestroyNotify)jabber_caps_client_info_destroy);
+ jabber_caps_load();
+}
- for(iter = props->features; iter; iter = g_list_next(iter)) {
- const char *feat = iter->data;
- xmlnode *feature = xmlnode_new_child(ext, "feature");
- xmlnode_set_attrib(feature, "var", feat);
+void jabber_caps_uninit(void)
+{
+ if (save_timer != 0) {
+ purple_timeout_remove(save_timer);
+ save_timer = 0;
+ do_jabber_caps_store(NULL);
}
+ g_hash_table_destroy(capstable);
+ g_hash_table_destroy(nodetable);
+ capstable = nodetable = NULL;
}
-static void jabber_caps_store_client(gpointer key, gpointer value, gpointer user_data) {
- JabberCapsKey *clientinfo = key;
- JabberCapsValue *props = value;
- xmlnode *root = user_data;
- xmlnode *client = xmlnode_new_child(root,"client");
- GList *iter;
+gboolean jabber_caps_exts_known(const JabberCapsClientInfo *info,
+ char **exts)
+{
+ int i;
+ g_return_val_if_fail(info != NULL, FALSE);
- xmlnode_set_attrib(client,"node",clientinfo->node);
- xmlnode_set_attrib(client,"ver",clientinfo->ver);
-
- for(iter = props->identities; iter; iter = g_list_next(iter)) {
- JabberCapsIdentity *id = iter->data;
- xmlnode *identity = xmlnode_new_child(client, "identity");
- xmlnode_set_attrib(identity, "category", id->category);
- xmlnode_set_attrib(identity, "type", id->type);
- if (id->name)
- xmlnode_set_attrib(identity, "name", id->name);
- }
+ if (!exts)
+ return TRUE;
- for(iter = props->features; iter; iter = g_list_next(iter)) {
- const char *feat = iter->data;
- xmlnode *feature = xmlnode_new_child(client, "feature");
- xmlnode_set_attrib(feature, "var", feat);
+ for (i = 0; exts[i]; ++i) {
+ /* Hack since we advertise the ext along with v1.5 caps but don't
+ * store any exts */
+ if (g_str_equal(exts[i], "voice-v1") && !info->exts)
+ continue;
+ if (!info->exts ||
+ !g_hash_table_lookup(info->exts->exts, exts[i]))
+ return FALSE;
}
-
- g_hash_table_foreach(props->ext,jabber_caps_store_ext,client);
+
+ return TRUE;
}
-static void jabber_caps_store(void) {
- char *str;
- xmlnode *root = xmlnode_new("capabilities");
- g_hash_table_foreach(capstable, jabber_caps_store_client, root);
- str = xmlnode_to_formatted_str(root, NULL);
- xmlnode_free(root);
- purple_util_write_data_to_file(JABBER_CAPS_FILENAME, str, -1);
- g_free(str);
+typedef struct _jabber_caps_cbplususerdata {
+ guint ref;
+
+ jabber_caps_get_info_cb cb;
+ gpointer cb_data;
+
+ char *who;
+ char *node;
+ char *ver;
+ char *hash;
+
+ JabberCapsClientInfo *info;
+
+ GList *exts;
+ guint extOutstanding;
+ JabberCapsNodeExts *node_exts;
+} jabber_caps_cbplususerdata;
+
+static jabber_caps_cbplususerdata*
+cbplususerdata_ref(jabber_caps_cbplususerdata *data)
+{
+ g_return_val_if_fail(data != NULL, NULL);
+
+ ++data->ref;
+ return data;
}
-/* this function assumes that all information is available locally */
-static JabberCapsClientInfo *jabber_caps_collect_info(const char *node, const char *ver, GList *ext) {
- JabberCapsClientInfo *result;
- JabberCapsKey *key = g_new0(JabberCapsKey, 1);
- JabberCapsValue *caps;
- GList *iter;
+static void
+cbplususerdata_unref(jabber_caps_cbplususerdata *data)
+{
+ if (data == NULL)
+ return;
+
+ g_return_if_fail(data->ref != 0);
- key->node = (char *)node;
- key->ver = (char *)ver;
+ if (--data->ref > 0)
+ return;
- caps = g_hash_table_lookup(capstable,key);
+ g_free(data->who);
+ g_free(data->node);
+ g_free(data->ver);
+ g_free(data->hash);
+
+ /* If we have info here, it's already in the capstable, so don't free it */
+ if (data->exts)
+ free_string_glist(data->exts);
+ if (data->node_exts)
+ jabber_caps_node_exts_unref(data->node_exts);
+ g_free(data);
+}
- g_free(key);
+static void
+jabber_caps_get_info_complete(jabber_caps_cbplususerdata *userdata)
+{
+ if (userdata->cb) {
+ userdata->cb(userdata->info, userdata->exts, userdata->cb_data);
+ userdata->info = NULL;
+ userdata->exts = NULL;
+ }
- if (caps == NULL)
- return NULL;
+ if (userdata->ref != 1)
+ purple_debug_warning("jabber", "Lost a reference to caps cbdata: %d\n",
+ userdata->ref);
+}
- result = g_new0(JabberCapsClientInfo, 1);
+static void
+jabber_caps_client_iqcb(JabberStream *js, const char *from, JabberIqType type,
+ const char *id, xmlnode *packet, gpointer data)
+{
+ xmlnode *query = xmlnode_get_child_with_namespace(packet, "query",
+ "http://jabber.org/protocol/disco#info");
+ jabber_caps_cbplususerdata *userdata = data;
+ JabberCapsClientInfo *info = NULL, *value;
+ JabberCapsTuple key;
- /* join all information */
- for(iter = caps->identities; iter; iter = g_list_next(iter)) {
- JabberCapsIdentity *id = iter->data;
- JabberCapsIdentity *newid = g_new0(JabberCapsIdentity, 1);
- newid->category = g_strdup(id->category);
- newid->type = g_strdup(id->type);
- newid->name = g_strdup(id->name);
-
- result->identities = g_list_append(result->identities,newid);
+ if (!query || type == JABBER_IQ_ERROR) {
+ /* Any outstanding exts will be dealt with via ref-counting */
+ userdata->cb(NULL, NULL, userdata->cb_data);
+ cbplususerdata_unref(userdata);
+ return;
}
- for(iter = caps->features; iter; iter = g_list_next(iter)) {
- const char *feat = iter->data;
- char *newfeat = g_strdup(feat);
-
- result->features = g_list_append(result->features,newfeat);
- }
-
- for(iter = ext; iter; iter = g_list_next(iter)) {
- const char *extname = iter->data;
- JabberCapsValueExt *extinfo = g_hash_table_lookup(caps->ext,extname);
-
- if(extinfo) {
- GList *iter2;
- for(iter2 = extinfo->identities; iter2; iter2 = g_list_next(iter2)) {
- JabberCapsIdentity *id = iter2->data;
- JabberCapsIdentity *newid = g_new0(JabberCapsIdentity, 1);
- newid->category = g_strdup(id->category);
- newid->type = g_strdup(id->type);
- newid->name = g_strdup(id->name);
-
- result->identities = g_list_append(result->identities,newid);
- }
- for(iter2 = extinfo->features; iter2; iter2 = g_list_next(iter2)) {
- const char *feat = iter2->data;
- char *newfeat = g_strdup(feat);
-
- result->features = g_list_append(result->features,newfeat);
- }
+
+ /* check hash */
+ info = jabber_caps_parse_client_info(query);
+
+ /* Only validate if these are v1.5 capabilities */
+ if (userdata->hash) {
+ gchar *hash = NULL;
+ if (!strcmp(userdata->hash, "sha-1")) {
+ hash = jabber_caps_calculate_hash(info, "sha1");
+ } else if (!strcmp(userdata->hash, "md5")) {
+ hash = jabber_caps_calculate_hash(info, "md5");
+ }
+
+ if (!hash || strcmp(hash, userdata->ver)) {
+ purple_debug_warning("jabber", "Could not validate caps info from %s\n",
+ xmlnode_get_attrib(packet, "from"));
+
+ userdata->cb(NULL, NULL, userdata->cb_data);
+ jabber_caps_client_info_destroy(info);
+ cbplususerdata_unref(userdata);
+ g_free(hash);
+ return;
}
+
+ g_free(hash);
}
- return result;
-}
-void jabber_caps_free_clientinfo(JabberCapsClientInfo *clientinfo) {
- if(!clientinfo)
- return;
- while(clientinfo->identities) {
- JabberCapsIdentity *id = clientinfo->identities->data;
- g_free(id->category);
- g_free(id->type);
- g_free(id->name);
- g_free(id);
-
- clientinfo->identities = g_list_delete_link(clientinfo->identities,clientinfo->identities);
+ if (!userdata->hash && userdata->node_exts) {
+ /* If the ClientInfo doesn't have information about the exts, give them
+ * ours (along with our ref) */
+ info->exts = userdata->node_exts;
+ userdata->node_exts = NULL;
}
- while(clientinfo->features) {
- char *feat = clientinfo->features->data;
- g_free(feat);
-
- clientinfo->features = g_list_delete_link(clientinfo->features,clientinfo->features);
+
+ key.node = userdata->node;
+ key.ver = userdata->ver;
+ key.hash = userdata->hash;
+
+ /* Use the copy of this data already in the table if it exists or insert
+ * a new one if we need to */
+ if ((value = g_hash_table_lookup(capstable, &key))) {
+ jabber_caps_client_info_destroy(info);
+ info = value;
+ } else {
+ JabberCapsTuple *n_key = (JabberCapsTuple *)&info->tuple;
+ n_key->node = userdata->node;
+ n_key->ver = userdata->ver;
+ n_key->hash = userdata->hash;
+ userdata->node = userdata->ver = userdata->hash = NULL;
+
+ /* The capstable gets a reference */
+ g_hash_table_insert(capstable, n_key, info);
+ schedule_caps_save();
}
-
- g_free(clientinfo);
+
+ userdata->info = info;
+
+ if (userdata->extOutstanding == 0)
+ jabber_caps_get_info_complete(userdata);
+
+ cbplususerdata_unref(userdata);
}
-typedef struct _jabber_caps_cbplususerdata {
- jabber_caps_get_info_cb cb;
- gpointer user_data;
-
- char *who;
- char *node;
- char *ver;
- GList *ext;
- unsigned extOutstanding;
-} jabber_caps_cbplususerdata;
+typedef struct {
+ const char *name;
+ jabber_caps_cbplususerdata *data;
+} ext_iq_data;
-typedef struct jabber_ext_userdata {
- jabber_caps_cbplususerdata *userdata;
- char *node;
-} jabber_ext_userdata;
-
-static void jabber_caps_get_info_check_completion(jabber_caps_cbplususerdata *userdata) {
- if(userdata->extOutstanding == 0) {
- userdata->cb(jabber_caps_collect_info(userdata->node, userdata->ver, userdata->ext), userdata->user_data);
- g_free(userdata->who);
- g_free(userdata->node);
- g_free(userdata->ver);
- while(userdata->ext) {
- g_free(userdata->ext->data);
- userdata->ext = g_list_delete_link(userdata->ext,userdata->ext);
- }
+static void
+jabber_caps_ext_iqcb(JabberStream *js, const char *from, JabberIqType type,
+ const char *id, xmlnode *packet, gpointer data)
+{
+ xmlnode *query = xmlnode_get_child_with_namespace(packet, "query",
+ "http://jabber.org/protocol/disco#info");
+ xmlnode *child;
+ ext_iq_data *userdata = data;
+ GList *features = NULL;
+ JabberCapsNodeExts *node_exts;
+
+ if (!query || type == JABBER_IQ_ERROR) {
+ cbplususerdata_unref(userdata->data);
g_free(userdata);
+ return;
+ }
+
+ /* So, we decrement this after checking for an error, which means that
+ * if there *is* an error, we'll never call the callback passed to
+ * jabber_caps_get_info. We will still free all of our data, though.
+ */
+ --userdata->data->extOutstanding;
+
+ for (child = xmlnode_get_child(query, "feature"); child;
+ child = xmlnode_get_next_twin(child)) {
+ const char *var = xmlnode_get_attrib(child, "var");
+ if (var)
+ features = g_list_prepend(features, g_strdup(var));
}
+
+ node_exts = (userdata->data->info ? userdata->data->info->exts :
+ userdata->data->node_exts);
+ g_hash_table_insert(node_exts->exts, g_strdup(userdata->name), features);
+ schedule_caps_save();
+
+ /* Are we done? */
+ if (userdata->data->info && userdata->data->extOutstanding == 0)
+ jabber_caps_get_info_complete(userdata->data);
+
+ cbplususerdata_unref(userdata->data);
+ g_free(userdata);
}
-static void jabber_caps_ext_iqcb(JabberStream *js, xmlnode *packet, gpointer data) {
- /* collect data and fetch all exts */
- xmlnode *query = xmlnode_get_child_with_namespace(packet, "query", "http://jabber.org/protocol/disco#info");
- jabber_ext_userdata *extuserdata = data;
- jabber_caps_cbplususerdata *userdata = extuserdata->userdata;
- const char *node = extuserdata->node;
+void jabber_caps_get_info(JabberStream *js, const char *who, const char *node,
+ const char *ver, const char *hash, char **exts,
+ jabber_caps_get_info_cb cb, gpointer user_data)
+{
+ JabberCapsClientInfo *info;
+ JabberCapsTuple key;
+ jabber_caps_cbplususerdata *userdata;
- --userdata->extOutstanding;
+ if (exts && hash) {
+ purple_debug_info("jabber", "Ignoring exts in new-style caps from %s\n",
+ who);
+ g_strfreev(exts);
+ exts = NULL;
+ }
- /* TODO: Better error handling */
+ /* Using this in a read-only fashion, so the cast is OK */
+ key.node = (char *)node;
+ key.ver = (char *)ver;
+ key.hash = (char *)hash;
- if(node && query) {
- const char *key;
- JabberCapsValue *client;
- xmlnode *child;
- JabberCapsValueExt *value = g_new0(JabberCapsValueExt, 1);
- JabberCapsKey *clientkey = g_new0(JabberCapsKey, 1);
+ info = g_hash_table_lookup(capstable, &key);
+ if (info && hash) {
+ /* v1.5 - We already have all the information we care about */
+ if (cb)
+ cb(info, NULL, user_data);
+ return;
+ }
- clientkey->node = userdata->node;
- clientkey->ver = userdata->ver;
+ userdata = g_new0(jabber_caps_cbplususerdata, 1);
+ /* This ref is given to fetching the basic node#ver info if we need it
+ * or unrefed at the bottom of this function */
+ cbplususerdata_ref(userdata);
+ userdata->cb = cb;
+ userdata->cb_data = user_data;
+ userdata->who = g_strdup(who);
+ userdata->node = g_strdup(node);
+ userdata->ver = g_strdup(ver);
+ userdata->hash = g_strdup(hash);
- client = g_hash_table_lookup(capstable, clientkey);
+ if (info) {
+ userdata->info = info;
+ } else {
+ /* If we don't have the basic information about the client, we need
+ * to fetch it. */
+ JabberIq *iq;
+ xmlnode *query;
+ char *nodever;
+
+ iq = jabber_iq_new_query(js, JABBER_IQ_GET,
+ "http://jabber.org/protocol/disco#info");
+ query = xmlnode_get_child_with_namespace(iq->node, "query",
+ "http://jabber.org/protocol/disco#info");
+ nodever = g_strdup_printf("%s#%s", node, ver);
+ xmlnode_set_attrib(query, "node", nodever);
+ g_free(nodever);
+ xmlnode_set_attrib(iq->node, "to", who);
- g_free(clientkey);
+ jabber_iq_set_callback(iq, jabber_caps_client_iqcb, userdata);
+ jabber_iq_send(iq);
+ }
- /* split node by #, key either points to \0 or the correct ext afterwards */
- for(key = node; key[0] != '\0'; ++key) {
- if(key[0] == '#') {
- ++key;
- break;
- }
- }
+ /* Are there any exts that we don't recognize? */
+ if (exts) {
+ JabberCapsNodeExts *node_exts;
+ int i;
- for(child = query->child; child; child = child->next) {
- if(child->type != XMLNODE_TYPE_TAG)
- continue;
- if(!strcmp(child->name,"feature")) {
- const char *var = xmlnode_get_attrib(child, "var");
- if(!var)
- continue;
- value->features = g_list_append(value->features,g_strdup(var));
- } else if(!strcmp(child->name,"identity")) {
- const char *category = xmlnode_get_attrib(child, "category");
- const char *type = xmlnode_get_attrib(child, "type");
- const char *name = xmlnode_get_attrib(child, "name");
-
- JabberCapsIdentity *id = g_new0(JabberCapsIdentity, 1);
- id->category = g_strdup(category);
- id->type = g_strdup(type);
- id->name = g_strdup(name);
-
- value->identities = g_list_append(value->identities,id);
+ if (info) {
+ if (info->exts)
+ node_exts = info->exts;
+ else
+ node_exts = info->exts = jabber_caps_find_exts_by_node(node);
+ } else
+ /* We'll put it in later once we have the client info */
+ node_exts = userdata->node_exts = jabber_caps_find_exts_by_node(node);
+
+ for (i = 0; exts[i]; ++i) {
+ userdata->exts = g_list_prepend(userdata->exts, exts[i]);
+ /* Look it up if we don't already know what it means */
+ if (!g_hash_table_lookup(node_exts->exts, exts[i])) {
+ JabberIq *iq;
+ xmlnode *query;
+ char *nodeext;
+ ext_iq_data *cbdata = g_new(ext_iq_data, 1);
+
+ cbdata->name = exts[i];
+ cbdata->data = cbplususerdata_ref(userdata);
+
+ iq = jabber_iq_new_query(js, JABBER_IQ_GET,
+ "http://jabber.org/protocol/disco#info");
+ query = xmlnode_get_child_with_namespace(iq->node, "query",
+ "http://jabber.org/protocol/disco#info");
+ nodeext = g_strdup_printf("%s#%s", node, exts[i]);
+ xmlnode_set_attrib(query, "node", nodeext);
+ g_free(nodeext);
+ xmlnode_set_attrib(iq->node, "to", who);
+
+ jabber_iq_set_callback(iq, jabber_caps_ext_iqcb, cbdata);
+ jabber_iq_send(iq);
+
+ ++userdata->extOutstanding;
}
+ exts[i] = NULL;
}
- g_hash_table_replace(client->ext, g_strdup(key), value);
+ /* All the strings are now part of the GList, so don't need
+ * g_strfreev. */
+ g_free(exts);
+ }
- jabber_caps_store();
+ if (userdata->info && userdata->extOutstanding == 0) {
+ jabber_caps_get_info_complete(userdata);
+ cbplususerdata_unref(userdata);
}
+}
- g_free(extuserdata->node);
- g_free(extuserdata);
- jabber_caps_get_info_check_completion(userdata);
+static gint
+jabber_identity_compare(gconstpointer a, gconstpointer b)
+{
+ const JabberIdentity *ac;
+ const JabberIdentity *bc;
+ gint cat_cmp;
+ gint typ_cmp;
+
+ ac = a;
+ bc = b;
+
+ if ((cat_cmp = strcmp(ac->category, bc->category)) == 0) {
+ if ((typ_cmp = strcmp(ac->type, bc->type)) == 0) {
+ if (!ac->lang && !bc->lang) {
+ return 0;
+ } else if (ac->lang && !bc->lang) {
+ return 1;
+ } else if (!ac->lang && bc->lang) {
+ return -1;
+ } else {
+ return strcmp(ac->lang, bc->lang);
+ }
+ } else {
+ return typ_cmp;
+ }
+ } else {
+ return cat_cmp;
+ }
}
-static void jabber_caps_client_iqcb(JabberStream *js, xmlnode *packet, gpointer data) {
- /* collect data and fetch all exts */
- xmlnode *query = xmlnode_get_child_with_namespace(packet, "query",
- "http://jabber.org/protocol/disco#info");
- jabber_caps_cbplususerdata *userdata = data;
+static gchar *jabber_caps_get_formtype(const xmlnode *x) {
+ xmlnode *formtypefield;
+ formtypefield = xmlnode_get_child(x, "field");
+ while (formtypefield && strcmp(xmlnode_get_attrib(formtypefield, "var"), "FORM_TYPE")) formtypefield = xmlnode_get_next_twin(formtypefield);
+ formtypefield = xmlnode_get_child(formtypefield, "value");
+ return xmlnode_get_data(formtypefield);;
+}
- /* TODO: Better error checking! */
+static gint
+jabber_xdata_compare(gconstpointer a, gconstpointer b)
+{
+ const xmlnode *aformtypefield = a;
+ const xmlnode *bformtypefield = b;
+ char *aformtype;
+ char *bformtype;
+ int result;
+
+ aformtype = jabber_caps_get_formtype(aformtypefield);
+ bformtype = jabber_caps_get_formtype(bformtypefield);
+
+ result = strcmp(aformtype, bformtype);
+ g_free(aformtype);
+ g_free(bformtype);
+ return result;
+}
- if (query) {
- JabberCapsValue *value = g_new0(JabberCapsValue, 1);
- JabberCapsKey *key = g_new0(JabberCapsKey, 1);
- xmlnode *child;
- GList *iter;
+static JabberCapsClientInfo *jabber_caps_parse_client_info(xmlnode *query)
+{
+ xmlnode *child;
+ JabberCapsClientInfo *info;
- value->ext = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, jabber_caps_ext_destroy_value);
+ if (!query || strcmp(query->xmlns, "http://jabber.org/protocol/disco#info"))
+ return 0;
- key->node = g_strdup(userdata->node);
- key->ver = g_strdup(userdata->ver);
+ info = g_new0(JabberCapsClientInfo, 1);
- for(child = query->child; child; child = child->next) {
- if(child->type != XMLNODE_TYPE_TAG)
+ for(child = query->child; child; child = child->next) {
+ if (child->type != XMLNODE_TYPE_TAG)
+ continue;
+ if (!strcmp(child->name,"identity")) {
+ /* parse identity */
+ const char *category = xmlnode_get_attrib(child, "category");
+ const char *type = xmlnode_get_attrib(child, "type");
+ const char *name = xmlnode_get_attrib(child, "name");
+ const char *lang = xmlnode_get_attrib(child, "lang");
+ JabberIdentity *id;
+
+ if (!category || !type)
continue;
- if(!strcmp(child->name,"feature")) {
- const char *var = xmlnode_get_attrib(child, "var");
- if(!var)
- continue;
- value->features = g_list_append(value->features, g_strdup(var));
- } else if(!strcmp(child->name,"identity")) {
- const char *category = xmlnode_get_attrib(child, "category");
- const char *type = xmlnode_get_attrib(child, "type");
- const char *name = xmlnode_get_attrib(child, "name");
-
- JabberCapsIdentity *id = g_new0(JabberCapsIdentity, 1);
- id->category = g_strdup(category);
- id->type = g_strdup(type);
- id->name = g_strdup(name);
-
- value->identities = g_list_append(value->identities,id);
+
+ id = g_new0(JabberIdentity, 1);
+ id->category = g_strdup(category);
+ id->type = g_strdup(type);
+ id->name = g_strdup(name);
+ id->lang = g_strdup(lang);
+
+ info->identities = g_list_append(info->identities, id);
+ } else if (!strcmp(child->name, "feature")) {
+ /* parse feature */
+ const char *var = xmlnode_get_attrib(child, "var");
+ if (var)
+ info->features = g_list_prepend(info->features, g_strdup(var));
+ } else if (!strcmp(child->name, "x")) {
+ if (child->xmlns && !strcmp(child->xmlns, "jabber:x:data")) {
+ /* x-data form */
+ xmlnode *dataform = xmlnode_copy(child);
+ info->forms = g_list_append(info->forms, dataform);
}
}
- g_hash_table_replace(capstable, key, value);
- jabber_caps_store();
-
-
- /* fetch all exts */
- for(iter = userdata->ext; iter; iter = g_list_next(iter)) {
- JabberIq *iq = jabber_iq_new_query(js, JABBER_IQ_GET,
- "http://jabber.org/protocol/disco#info");
- xmlnode *query = xmlnode_get_child_with_namespace(iq->node,
- "query", "http://jabber.org/protocol/disco#info");
- char *node = g_strdup_printf("%s#%s", userdata->node, (const char*)iter->data);
- jabber_ext_userdata *ext_data = g_new0(jabber_ext_userdata, 1);
- ext_data->node = node;
- ext_data->userdata = userdata;
-
- xmlnode_set_attrib(query, "node", node);
- xmlnode_set_attrib(iq->node, "to", userdata->who);
-
- jabber_iq_set_callback(iq, jabber_caps_ext_iqcb, ext_data);
- jabber_iq_send(iq);
+ }
+ return info;
+}
+
+static gint jabber_caps_xdata_field_compare(gconstpointer a, gconstpointer b)
+{
+ const JabberDataFormField *ac = a;
+ const JabberDataFormField *bc = b;
+
+ return strcmp(ac->var, bc->var);
+}
+
+static GList* jabber_caps_xdata_get_fields(const xmlnode *x)
+{
+ GList *fields = NULL;
+ xmlnode *field;
+
+ if (!x)
+ return NULL;
+
+ for (field = xmlnode_get_child(x, "field"); field; field = xmlnode_get_next_twin(field)) {
+ xmlnode *value;
+ JabberDataFormField *xdatafield = g_new0(JabberDataFormField, 1);
+ xdatafield->var = g_strdup(xmlnode_get_attrib(field, "var"));
+
+ for (value = xmlnode_get_child(field, "value"); value; value = xmlnode_get_next_twin(value)) {
+ gchar *val = xmlnode_get_data(value);
+ xdatafield->values = g_list_append(xdatafield->values, val);
}
- } else
- /* Don't wait for the ext discoveries; they aren't going to happen */
- userdata->extOutstanding = 0;
+ xdatafield->values = g_list_sort(xdatafield->values, (GCompareFunc)strcmp);
+ fields = g_list_append(fields, xdatafield);
+ }
- jabber_caps_get_info_check_completion(userdata);
+ fields = g_list_sort(fields, jabber_caps_xdata_field_compare);
+ return fields;
}
-void jabber_caps_get_info(JabberStream *js, const char *who, const char *node, const char *ver, const char *ext, jabber_caps_get_info_cb cb, gpointer user_data) {
- JabberCapsValue *client;
- JabberCapsKey *key = g_new0(JabberCapsKey, 1);
- char *originalext = g_strdup(ext);
- jabber_caps_cbplususerdata *userdata = g_new0(jabber_caps_cbplususerdata, 1);
- userdata->cb = cb;
- userdata->user_data = user_data;
- userdata->who = g_strdup(who);
- userdata->node = g_strdup(node);
- userdata->ver = g_strdup(ver);
+static GString*
+jabber_caps_verification_append(GString *verification, const gchar *str)
+{
+ char *tmp = g_markup_escape_text(str, -1);
+ verification = g_string_append(verification, tmp);
+ g_free(tmp);
+ return g_string_append_c(verification, '<');
+}
- if(originalext) {
- int i;
- gchar **splat = g_strsplit(originalext, " ", 0);
- for(i =0; splat[i]; i++) {
- userdata->ext = g_list_append(userdata->ext, splat[i]);
- ++userdata->extOutstanding;
+gchar *jabber_caps_calculate_hash(JabberCapsClientInfo *info, const char *hash)
+{
+ GList *node;
+ GString *verification;
+ PurpleCipherContext *context;
+ guint8 checksum[20];
+ gsize checksum_size = 20;
+ gboolean success;
+
+ if (!info || !(context = purple_cipher_context_new_by_name(hash, NULL)))
+ return NULL;
+
+ /* sort identities, features and x-data forms */
+ info->identities = g_list_sort(info->identities, jabber_identity_compare);
+ info->features = g_list_sort(info->features, (GCompareFunc)strcmp);
+ info->forms = g_list_sort(info->forms, jabber_xdata_compare);
+
+ verification = g_string_new("");
+
+ /* concat identities to the verification string */
+ for (node = info->identities; node; node = node->next) {
+ JabberIdentity *id = (JabberIdentity*)node->data;
+ char *category = g_markup_escape_text(id->category, -1);
+ char *type = g_markup_escape_text(id->type, -1);
+ char *lang = NULL;
+ char *name = NULL;
+
+ if (id->lang)
+ lang = g_markup_escape_text(id->lang, -1);
+ if (id->name)
+ name = g_markup_escape_text(id->name, -1);
+
+ g_string_append_printf(verification, "%s/%s/%s/%s<", category,
+ type, lang ? lang : "", name ? name : "");
+
+ g_free(category);
+ g_free(type);
+ g_free(lang);
+ g_free(name);
+ }
+
+ /* concat features to the verification string */
+ for (node = info->features; node; node = node->next) {
+ verification = jabber_caps_verification_append(verification, node->data);
+ }
+
+ /* concat x-data forms to the verification string */
+ for(node = info->forms; node; node = node->next) {
+ xmlnode *data = (xmlnode *)node->data;
+ gchar *formtype = jabber_caps_get_formtype(data);
+ GList *fields = jabber_caps_xdata_get_fields(data);
+
+ /* append FORM_TYPE's field value to the verification string */
+ verification = jabber_caps_verification_append(verification, formtype);
+ g_free(formtype);
+
+ while (fields) {
+ GList *value;
+ JabberDataFormField *field = (JabberDataFormField*)fields->data;
+
+ if (strcmp(field->var, "FORM_TYPE")) {
+ /* Append the "var" attribute */
+ verification = jabber_caps_verification_append(verification, field->var);
+ /* Append <value/> elements' cdata */
+ for(value = field->values; value; value = value->next) {
+ verification = jabber_caps_verification_append(verification, value->data);
+ g_free(value->data);
+ }
+ }
+
+ g_free(field->var);
+ g_list_free(field->values);
+
+ fields = g_list_delete_link(fields, fields);
}
- g_free(splat);
}
- g_free(originalext);
- key->node = (char *)node;
- key->ver = (char *)ver;
+ /* generate hash */
+ purple_cipher_context_append(context, (guchar*)verification->str, verification->len);
- client = g_hash_table_lookup(capstable, key);
+ success = purple_cipher_context_digest(context, verification->len,
+ checksum, &checksum_size);
- g_free(key);
+ g_string_free(verification, TRUE);
+ purple_cipher_context_destroy(context);
- if(!client) {
- JabberIq *iq = jabber_iq_new_query(js,JABBER_IQ_GET,"http://jabber.org/protocol/disco#info");
- xmlnode *query = xmlnode_get_child_with_namespace(iq->node,"query","http://jabber.org/protocol/disco#info");
- char *nodever = g_strdup_printf("%s#%s", node, ver);
- xmlnode_set_attrib(query, "node", nodever);
- g_free(nodever);
- xmlnode_set_attrib(iq->node, "to", who);
+ return (success ? purple_base64_encode(checksum, checksum_size) : NULL);
+}
- jabber_iq_set_callback(iq,jabber_caps_client_iqcb,userdata);
- jabber_iq_send(iq);
- } else {
- GList *iter;
- /* fetch unknown exts only */
- for(iter = userdata->ext; iter; iter = g_list_next(iter)) {
- JabberCapsValueExt *extvalue = g_hash_table_lookup(client->ext, (const char*)iter->data);
- JabberIq *iq;
- xmlnode *query;
- char *nodever;
- jabber_ext_userdata *ext_data;
-
- if(extvalue) {
- /* we already have this ext, don't bother with it */
- --userdata->extOutstanding;
- continue;
+void jabber_caps_calculate_own_hash(JabberStream *js) {
+ JabberCapsClientInfo info;
+ GList *iter = 0;
+ GList *features = 0;
+
+ if (!jabber_identities && !jabber_features) {
+ /* This really shouldn't ever happen */
+ purple_debug_warning("jabber", "No features or identities, cannot calculate own caps hash.\n");
+ g_free(js->caps_hash);
+ js->caps_hash = NULL;
+ return;
+ }
+
+ /* build the currently-supported list of features */
+ if (jabber_features) {
+ for (iter = jabber_features; iter; iter = iter->next) {
+ JabberFeature *feat = iter->data;
+ if(!feat->is_enabled || feat->is_enabled(js, feat->namespace)) {
+ features = g_list_append(features, feat->namespace);
}
+ }
+ }
+
+ info.features = features;
+ info.identities = g_list_copy(jabber_identities);
+ info.forms = NULL;
- ext_data = g_new0(jabber_ext_userdata, 1);
+ g_free(js->caps_hash);
+ js->caps_hash = jabber_caps_calculate_hash(&info, "sha1");
+ g_list_free(info.identities);
+ g_list_free(features);
+}
+
+const gchar* jabber_caps_get_own_hash(JabberStream *js)
+{
+ if (!js->caps_hash)
+ jabber_caps_calculate_own_hash(js);
- iq = jabber_iq_new_query(js,JABBER_IQ_GET,"http://jabber.org/protocol/disco#info");
- query = xmlnode_get_child_with_namespace(iq->node,"query","http://jabber.org/protocol/disco#info");
- nodever = g_strdup_printf("%s#%s", node, (const char*)iter->data);
- xmlnode_set_attrib(query, "node", nodever);
- xmlnode_set_attrib(iq->node, "to", who);
+ return js->caps_hash;
+}
- ext_data->node = nodever;
- ext_data->userdata = userdata;
+void jabber_caps_broadcast_change()
+{
+ GList *node, *accounts = purple_accounts_get_all_active();
- jabber_iq_set_callback(iq, jabber_caps_ext_iqcb, ext_data);
- jabber_iq_send(iq);
+ for (node = accounts; node; node = node->next) {
+ PurpleAccount *account = node->data;
+ const char *prpl_id = purple_account_get_protocol_id(account);
+ if (!strcmp("prpl-jabber", prpl_id) && purple_account_is_connected(account)) {
+ PurpleConnection *gc = purple_account_get_connection(account);
+ jabber_presence_send(gc->proto_data, TRUE);
}
- /* maybe we have all data available anyways? This is the ideal case where no network traffic is necessary */
- jabber_caps_get_info_check_completion(userdata);
}
+
+ g_list_free(accounts);
}
diff --git a/libpurple/protocols/jabber/caps.h b/libpurple/protocols/jabber/caps.h
index 07cf0baaaf..46a31ac625 100644
--- a/libpurple/protocols/jabber/caps.h
+++ b/libpurple/protocols/jabber/caps.h
@@ -19,31 +19,98 @@
*
*/
-#ifndef _PURPLE_JABBER_CAPS_H_
-#define _PURPLE_JABBER_CAPS_H_
+#ifndef PURPLE_JABBER_CAPS_H_
+#define PURPLE_JABBER_CAPS_H_
typedef struct _JabberCapsClientInfo JabberCapsClientInfo;
#include "jabber.h"
-/* Implementation of XEP-0115 */
+/* Implementation of XEP-0115 - Entity Capabilities */
-typedef struct _JabberCapsIdentity {
- char *category;
- char *type;
- char *name;
-} JabberCapsIdentity;
+typedef struct _JabberCapsNodeExts JabberCapsNodeExts;
+
+typedef struct _JabberCapsTuple {
+ const char *node;
+ const char *ver;
+ const char *hash;
+} JabberCapsTuple;
struct _JabberCapsClientInfo {
- GList *identities; /* JabberCapsIdentity */
+ GList *identities; /* JabberIdentity */
GList *features; /* char * */
+ GList *forms; /* xmlnode * */
+ JabberCapsNodeExts *exts;
+
+ const JabberCapsTuple tuple;
};
-typedef void (*jabber_caps_get_info_cb)(JabberCapsClientInfo *info, gpointer user_data);
+/*
+ * This stores a set of exts "known" for a specific node (which indicates
+ * a specific client -- for reference, Pidgin, Finch, Meebo, et al share one
+ * node.) In XEP-0115 v1.3, exts are used for features that may or may not be
+ * present at a given time (PEP things, buzz might be disabled, etc).
+ *
+ * This structure is shared among all JabberCapsClientInfo instances matching
+ * a specific node (if the capstable key->hash == NULL, which indicates that
+ * the ClientInfo is using v1.3 caps as opposed to v1.5 caps).
+ *
+ * It's only exposed so that jabber_resource_has_capability can use it.
+ * Everyone else, STAY AWAY!
+ */
+struct _JabberCapsNodeExts {
+ guint ref;
+ GHashTable *exts; /* char *ext_name -> GList *features */
+};
+
+typedef void (*jabber_caps_get_info_cb)(JabberCapsClientInfo *info, GList *exts, gpointer user_data);
void jabber_caps_init(void);
+void jabber_caps_uninit(void);
-void jabber_caps_get_info(JabberStream *js, const char *who, const char *node, const char *ver, const char *ext, jabber_caps_get_info_cb cb, gpointer user_data);
-void jabber_caps_free_clientinfo(JabberCapsClientInfo *clientinfo);
+/**
+ * Check whether all of the exts in a char* array are known to the given info.
+ */
+gboolean jabber_caps_exts_known(const JabberCapsClientInfo *info, char **exts);
+
+/**
+ * Main entity capabilites function to get the capabilities of a contact.
+ *
+ * The callback will be called synchronously if we already have the
+ * capabilities for the specified (node,ver,hash) (and, if exts are specified,
+ * if we know what each means)
+ *
+ * @param exts A g_strsplit'd (NULL-terminated) array of strings. This
+ * function is responsible for freeing it.
+ */
+void jabber_caps_get_info(JabberStream *js, const char *who, const char *node,
+ const char *ver, const char *hash,
+ char **exts, jabber_caps_get_info_cb cb,
+ gpointer user_data);
+
+/**
+ * Takes a JabberCapsClientInfo pointer and returns the caps hash according to
+ * XEP-0115 Version 1.5.
+ *
+ * @param info A JabberCapsClientInfo pointer.
+ * @param hash Hash cipher to be used. Either sha-1 or md5.
+ * @return The base64 encoded SHA-1 hash; must be freed by caller
+ */
+gchar *jabber_caps_calculate_hash(JabberCapsClientInfo *info, const char *hash);
+
+/**
+ * Calculate SHA1 hash for own featureset.
+ */
+void jabber_caps_calculate_own_hash(JabberStream *js);
+
+/** Get the current caps hash.
+ * @ret hash
+**/
+const gchar* jabber_caps_get_own_hash(JabberStream *js);
+
+/**
+ * Broadcast a new calculated hash using a <presence> stanza.
+ */
+void jabber_caps_broadcast_change(void);
-#endif /* _PURPLE_JABBER_CAPS_H_ */
+#endif /* PURPLE_JABBER_CAPS_H_ */
diff --git a/libpurple/protocols/jabber/chat.c b/libpurple/protocols/jabber/chat.c
index 46c9f96ed3..2f58c11e73 100644
--- a/libpurple/protocols/jabber/chat.c
+++ b/libpurple/protocols/jabber/chat.c
@@ -353,7 +353,7 @@ char *jabber_chat_buddy_real_name(PurpleConnection *gc, int id, const char *who)
jcm = g_hash_table_lookup(chat->members, who);
if (jcm != NULL && jcm->jid)
return g_strdup(jcm->jid);
-
+
return g_strdup_printf("%s@%s/%s", chat->room, chat->server, who);
}
@@ -376,21 +376,19 @@ static void jabber_chat_room_configure_x_data_cb(JabberStream *js, xmlnode *resu
jabber_iq_send(iq);
}
-static void jabber_chat_room_configure_cb(JabberStream *js, xmlnode *packet, gpointer data)
+static void jabber_chat_room_configure_cb(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data)
{
xmlnode *query, *x;
- const char *type = xmlnode_get_attrib(packet, "type");
- const char *from = xmlnode_get_attrib(packet, "from");
char *msg;
JabberChat *chat;
JabberID *jid;
- if(!type || !from)
+ if (!from)
return;
-
-
- if(!strcmp(type, "result")) {
+ if (type == JABBER_IQ_RESULT) {
jid = jabber_id_new(from);
if(!jid)
@@ -416,7 +414,7 @@ static void jabber_chat_room_configure_cb(JabberStream *js, xmlnode *packet, gpo
return;
}
}
- } else if(!strcmp(type, "error")) {
+ } else if (type == JABBER_IQ_ERROR) {
char *msg = jabber_parse_error(js, packet, NULL);
purple_notify_error(js->gc, _("Configuration error"), _("Configuration error"), msg);
@@ -486,11 +484,12 @@ void jabber_chat_create_instant_room(JabberChat *chat) {
g_free(room_jid);
}
-static void jabber_chat_register_x_data_result_cb(JabberStream *js, xmlnode *packet, gpointer data)
+static void
+jabber_chat_register_x_data_result_cb(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data)
{
- const char *type = xmlnode_get_attrib(packet, "type");
-
- if(type && !strcmp(type, "error")) {
+ if (type == JABBER_IQ_ERROR) {
char *msg = jabber_parse_error(js, packet, NULL);
purple_notify_error(js->gc, _("Registration error"), _("Registration error"), msg);
@@ -521,19 +520,19 @@ static void jabber_chat_register_x_data_cb(JabberStream *js, xmlnode *result, gp
jabber_iq_send(iq);
}
-static void jabber_chat_register_cb(JabberStream *js, xmlnode *packet, gpointer data)
+static void jabber_chat_register_cb(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data)
{
xmlnode *query, *x;
- const char *type = xmlnode_get_attrib(packet, "type");
- const char *from = xmlnode_get_attrib(packet, "from");
char *msg;
JabberChat *chat;
JabberID *jid;
- if(!type || !from)
+ if (!from)
return;
- if(!strcmp(type, "result")) {
+ if (type == JABBER_IQ_RESULT) {
jid = jabber_id_new(from);
if(!jid)
@@ -559,7 +558,7 @@ static void jabber_chat_register_cb(JabberStream *js, xmlnode *packet, gpointer
return;
}
}
- } else if(!strcmp(type, "error")) {
+ } else if (type == JABBER_IQ_ERROR) {
char *msg = jabber_parse_error(js, packet, NULL);
purple_notify_error(js->gc, _("Registration error"), _("Registration error"), msg);
@@ -598,37 +597,25 @@ void jabber_chat_register(JabberChat *chat)
/* merge this with the function below when we get everyone on the same page wrt /commands */
void jabber_chat_change_topic(JabberChat *chat, const char *topic)
{
- if(topic && *topic) {
- JabberMessage *jm;
- jm = g_new0(JabberMessage, 1);
- jm->js = chat->js;
- jm->type = JABBER_MESSAGE_GROUPCHAT;
+ JabberMessage *jm;
+
+ jm = g_new0(JabberMessage, 1);
+ jm->js = chat->js;
+ jm->type = JABBER_MESSAGE_GROUPCHAT;
+ jm->to = g_strdup_printf("%s@%s", chat->room, chat->server);
+
+ if (topic && *topic)
jm->subject = purple_markup_strip_html(topic);
- jm->to = g_strdup_printf("%s@%s", chat->room, chat->server);
- jabber_message_send(jm);
- jabber_message_free(jm);
- } else {
- const char *cur = purple_conv_chat_get_topic(PURPLE_CONV_CHAT(chat->conv));
- char *buf, *tmp, *tmp2;
-
- if(cur) {
- tmp = g_markup_escape_text(cur, -1);
- tmp2 = purple_markup_linkify(tmp);
- buf = g_strdup_printf(_("current topic is: %s"), tmp2);
- g_free(tmp);
- g_free(tmp2);
- } else
- buf = g_strdup(_("No topic is set"));
- purple_conv_chat_write(PURPLE_CONV_CHAT(chat->conv), "", buf,
- PURPLE_MESSAGE_SYSTEM | PURPLE_MESSAGE_NO_LOG, time(NULL));
- g_free(buf);
- }
+ else
+ jm->subject = g_strdup("");
+ jabber_message_send(jm);
+ jabber_message_free(jm);
}
void jabber_chat_set_topic(PurpleConnection *gc, int id, const char *topic)
{
- JabberStream *js = gc->proto_data;
+ JabberStream *js = purple_connection_get_protocol_data(gc);
JabberChat *chat = jabber_chat_find_by_id(js, id);
if(!chat)
@@ -685,21 +672,22 @@ void jabber_chat_part(JabberChat *chat, const char *msg)
xmlnode_insert_data(status, msg, -1);
}
jabber_send(chat->js, presence);
-
+
xmlnode_free(presence);
g_free(room_jid);
}
-static void roomlist_disco_result_cb(JabberStream *js, xmlnode *packet, gpointer data)
+static void roomlist_disco_result_cb(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data)
{
xmlnode *query;
xmlnode *item;
- const char *type;
if(!js->roomlist)
return;
- if(!(type = xmlnode_get_attrib(packet, "type")) || strcmp(type, "result")) {
+ if (type == JABBER_IQ_ERROR) {
char *err = jabber_parse_error(js, packet, NULL);
purple_notify_error(js->gc, _("Error"),
_("Error retrieving room list"), err);
@@ -811,7 +799,7 @@ PurpleRoomlist *jabber_roomlist_get_list(PurpleConnection *gc)
FALSE, FALSE, NULL,
_("Find Rooms"), PURPLE_CALLBACK(roomlist_ok_cb),
_("Cancel"), PURPLE_CALLBACK(roomlist_cancel_cb),
- purple_connection_get_account(gc), NULL, NULL,
+ purple_connection_get_account(gc), NULL, NULL,
js);
return js->roomlist;
@@ -928,6 +916,68 @@ gboolean jabber_chat_affiliate_user(JabberChat *chat, const char *who, const cha
return TRUE;
}
+static void
+jabber_chat_affiliation_list_cb(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data)
+{
+ JabberChat *chat;
+ xmlnode *query, *item;
+ int chat_id = GPOINTER_TO_INT(data);
+ GString *buf;
+
+ if(!(chat = jabber_chat_find_by_id(js, chat_id)))
+ return;
+
+ if (type == JABBER_IQ_ERROR)
+ return;
+
+ if(!(query = xmlnode_get_child(packet, "query")))
+ return;
+
+ buf = g_string_new(_("Affiliations:"));
+
+ item = xmlnode_get_child(query, "item");
+ if (item) {
+ for( ; item; item = xmlnode_get_next_twin(item)) {
+ const char *jid = xmlnode_get_attrib(item, "jid");
+ const char *affiliation = xmlnode_get_attrib(item, "affiliation");
+ if (jid && affiliation)
+ g_string_append_printf(buf, "\n%s %s", jid, affiliation);
+ }
+ } else {
+ buf = g_string_append_c(buf, '\n');
+ buf = g_string_append_len(buf, _("No users found"), -1);
+ }
+
+ purple_conv_chat_write(PURPLE_CONV_CHAT(chat->conv), "", buf->str,
+ PURPLE_MESSAGE_SYSTEM | PURPLE_MESSAGE_NO_LOG, time(NULL));
+
+ g_string_free(buf, TRUE);
+}
+
+gboolean jabber_chat_affiliation_list(JabberChat *chat, const char *affiliation)
+{
+ JabberIq *iq;
+ char *room_jid;
+ xmlnode *query, *item;
+
+ iq = jabber_iq_new_query(chat->js, JABBER_IQ_GET,
+ "http://jabber.org/protocol/muc#admin");
+
+ room_jid = g_strdup_printf("%s@%s", chat->room, chat->server);
+ xmlnode_set_attrib(iq->node, "to", room_jid);
+
+ query = xmlnode_get_child(iq->node, "query");
+ item = xmlnode_new_child(query, "item");
+ xmlnode_set_attrib(item, "affiliation", affiliation);
+
+ jabber_iq_set_callback(iq, jabber_chat_affiliation_list_cb, GINT_TO_POINTER(chat->id));
+ jabber_iq_send(iq);
+
+ return TRUE;
+}
+
gboolean jabber_chat_role_user(JabberChat *chat, const char *who, const char *role)
{
char *to;
@@ -957,6 +1007,67 @@ gboolean jabber_chat_role_user(JabberChat *chat, const char *who, const char *ro
return TRUE;
}
+static void jabber_chat_role_list_cb(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data)
+{
+ JabberChat *chat;
+ xmlnode *query, *item;
+ int chat_id = GPOINTER_TO_INT(data);
+ GString *buf;
+
+ if(!(chat = jabber_chat_find_by_id(js, chat_id)))
+ return;
+
+ if (type == JABBER_IQ_ERROR)
+ return;
+
+ if(!(query = xmlnode_get_child(packet, "query")))
+ return;
+
+ buf = g_string_new(_("Roles:"));
+
+ item = xmlnode_get_child(query, "item");
+ if (item) {
+ for( ; item; item = xmlnode_get_next_twin(item)) {
+ const char *jid = xmlnode_get_attrib(item, "jid");
+ const char *role = xmlnode_get_attrib(item, "role");
+ if (jid && role)
+ g_string_append_printf(buf, "\n%s %s", jid, role);
+ }
+ } else {
+ buf = g_string_append_c(buf, '\n');
+ buf = g_string_append_len(buf, _("No users found"), -1);
+ }
+
+ purple_conv_chat_write(PURPLE_CONV_CHAT(chat->conv), "", buf->str,
+ PURPLE_MESSAGE_SYSTEM | PURPLE_MESSAGE_NO_LOG, time(NULL));
+
+ g_string_free(buf, TRUE);
+}
+
+gboolean jabber_chat_role_list(JabberChat *chat, const char *role)
+{
+ JabberIq *iq;
+ char *room_jid;
+ xmlnode *query, *item;
+
+ iq = jabber_iq_new_query(chat->js, JABBER_IQ_GET,
+ "http://jabber.org/protocol/muc#admin");
+
+ room_jid = g_strdup_printf("%s@%s", chat->room, chat->server);
+ xmlnode_set_attrib(iq->node, "to", room_jid);
+
+ query = xmlnode_get_child(iq->node, "query");
+ item = xmlnode_new_child(query, "item");
+ xmlnode_set_attrib(item, "role", role);
+
+ jabber_iq_set_callback(iq, jabber_chat_role_list_cb, GINT_TO_POINTER(chat->id));
+ jabber_iq_send(iq);
+
+ return TRUE;
+}
+
gboolean jabber_chat_kick_user(JabberChat *chat, const char *who, const char *why)
{
JabberIq *iq;
@@ -988,13 +1099,17 @@ gboolean jabber_chat_kick_user(JabberChat *chat, const char *who, const char *wh
return TRUE;
}
-static void jabber_chat_disco_traffic_cb(JabberStream *js, xmlnode *packet, gpointer data)
+static void jabber_chat_disco_traffic_cb(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data)
{
JabberChat *chat;
- /*xmlnode *query;*/
- int id = GPOINTER_TO_INT(data);
+#if 0
+ xmlnode *query, *x;
+#endif
+ int chat_id = GPOINTER_TO_INT(data);
- if(!(chat = jabber_chat_find_by_id(js, id)))
+ if(!(chat = jabber_chat_find_by_id(js, chat_id)))
return;
/* defaults, in case the conference server doesn't
@@ -1002,8 +1117,9 @@ static void jabber_chat_disco_traffic_cb(JabberStream *js, xmlnode *packet, gpoi
chat->xhtml = TRUE;
/* disabling this until more MUC servers support
- * announcing this
- if(xmlnode_get_child(packet, "error")) {
+ * announcing this */
+#if 0
+ if (type == JABBER_IQ_ERROR) {
return;
}
@@ -1019,7 +1135,7 @@ static void jabber_chat_disco_traffic_cb(JabberStream *js, xmlnode *packet, gpoi
chat->xhtml = TRUE;
}
}
- */
+#endif
}
void jabber_chat_disco_traffic(JabberChat *chat)
@@ -1033,7 +1149,7 @@ void jabber_chat_disco_traffic(JabberChat *chat)
iq = jabber_iq_new_query(chat->js, JABBER_IQ_GET,
"http://jabber.org/protocol/disco#info");
- xmlnode_set_attrib(iq->node, "to", room_jid);
+ xmlnode_set_attrib(iq->node, "to", room_jid);
query = xmlnode_get_child(iq->node, "query");
@@ -1046,5 +1162,59 @@ void jabber_chat_disco_traffic(JabberChat *chat)
g_free(room_jid);
}
+typedef struct {
+ const gchar *cap;
+ gboolean *all_support;
+ JabberBuddy *jb;
+} JabberChatCapsData;
+
+static void
+jabber_chat_all_participants_have_capability_foreach(gpointer key,
+ gpointer value,
+ gpointer user_data)
+{
+ const gchar *cap = ((JabberChatCapsData *) user_data)->cap;
+ gboolean *all_support = ((JabberChatCapsData *) user_data)->all_support;
+ JabberBuddy *jb = ((JabberChatCapsData *) user_data)->jb;
+ JabberChatMember *member = (JabberChatMember *) value;
+ const gchar *resource = member->handle;
+ JabberBuddyResource *jbr = jabber_buddy_find_resource(jb, resource);
+
+ if (jbr) {
+ *all_support &= jabber_resource_has_capability(jbr, cap);
+ } else {
+ *all_support = FALSE;
+ }
+}
+
+gboolean
+jabber_chat_all_participants_have_capability(const JabberChat *chat,
+ const gchar *cap)
+{
+ gchar *chat_jid = NULL;
+ JabberBuddy *jb = NULL;
+ gboolean all_support = TRUE;
+ JabberChatCapsData data;
+
+ chat_jid = g_strdup_printf("%s@%s", chat->room, chat->server);
+ jb = jabber_buddy_find(chat->js, chat_jid, FALSE);
+ if (jb) {
+ data.cap = cap;
+ data.all_support = &all_support;
+ data.jb = jb;
+ g_hash_table_foreach(chat->members,
+ jabber_chat_all_participants_have_capability_foreach, &data);
+ } else {
+ all_support = FALSE;
+ }
+ g_free(chat_jid);
+ return all_support;
+}
+
+guint
+jabber_chat_get_num_participants(const JabberChat *chat)
+{
+ return g_hash_table_size(chat->members);
+}
diff --git a/libpurple/protocols/jabber/chat.h b/libpurple/protocols/jabber/chat.h
index 64f924786a..26a12a37c6 100644
--- a/libpurple/protocols/jabber/chat.h
+++ b/libpurple/protocols/jabber/chat.h
@@ -19,8 +19,8 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
*/
-#ifndef _PURPLE_JABBER_CHAT_H_
-#define _PURPLE_JABBER_CHAT_H_
+#ifndef PURPLE_JABBER_CHAT_H_
+#define PURPLE_JABBER_CHAT_H_
#include "internal.h"
#include "connection.h"
@@ -81,8 +81,10 @@ gboolean jabber_chat_ban_user(JabberChat *chat, const char *who,
const char *why);
gboolean jabber_chat_affiliate_user(JabberChat *chat, const char *who,
const char *affiliation);
+gboolean jabber_chat_affiliation_list(JabberChat *chat, const char *affiliation);
gboolean jabber_chat_role_user(JabberChat *chat, const char *who,
const char *role);
+gboolean jabber_chat_role_list(JabberChat *chat, const char *role);
gboolean jabber_chat_kick_user(JabberChat *chat, const char *who,
const char *why);
@@ -93,5 +95,8 @@ void jabber_chat_disco_traffic(JabberChat *chat);
char *jabber_roomlist_room_serialize(PurpleRoomlistRoom *room);
+gboolean jabber_chat_all_participants_have_capability(const JabberChat *chat,
+ const gchar *cap);
+guint jabber_chat_get_num_participants(const JabberChat *chat);
-#endif /* _PURPLE_JABBER_CHAT_H_ */
+#endif /* PURPLE_JABBER_CHAT_H_ */
diff --git a/libpurple/protocols/jabber/data.c b/libpurple/protocols/jabber/data.c
index 2064f0a1b8..37619650bf 100644
--- a/libpurple/protocols/jabber/data.c
+++ b/libpurple/protocols/jabber/data.c
@@ -3,17 +3,17 @@
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Library General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor Boston, MA 02110-1301, USA
*/
-
+
#include <stdlib.h>
#include <glib.h>
#include <string.h>
@@ -71,7 +71,7 @@ jabber_data_create_from_xml(xmlnode *tag)
data->cid = g_strdup(xmlnode_get_attrib(tag, "cid"));
data->type = g_strdup(xmlnode_get_attrib(tag, "type"));
-
+
raw_data = xmlnode_get_data(tag);
data->data = purple_base64_decode(raw_data, &size);
data->size = size;
@@ -176,7 +176,7 @@ const JabberData *
jabber_data_find_remote_by_cid(const gchar *cid)
{
purple_debug_info("jabber", "lookup remote smiley with cid = %s\n", cid);
-
+
return g_hash_table_lookup(remote_data_by_cid, cid);
}
@@ -186,7 +186,7 @@ jabber_data_associate_local(JabberData *data, const gchar *alt)
purple_debug_info("jabber", "associating local smiley\n alt = %s, cid = %s\n",
alt, jabber_data_get_cid(data));
g_hash_table_insert(local_data_by_alt, g_strdup(alt), data);
- g_hash_table_insert(local_data_by_cid, g_strdup(jabber_data_get_cid(data)),
+ g_hash_table_insert(local_data_by_cid, g_strdup(jabber_data_get_cid(data)),
data);
}
@@ -195,30 +195,31 @@ jabber_data_associate_remote(JabberData *data)
{
purple_debug_info("jabber", "associating remote smiley, cid = %s\n",
jabber_data_get_cid(data));
- g_hash_table_insert(remote_data_by_cid, g_strdup(jabber_data_get_cid(data)),
+ g_hash_table_insert(remote_data_by_cid, g_strdup(jabber_data_get_cid(data)),
data);
}
void
-jabber_data_parse(JabberStream *js, xmlnode *packet)
+jabber_data_parse(JabberStream *js, const char *who, JabberIqType type,
+ const char *id, xmlnode *data_node)
{
JabberIq *result = NULL;
- const char *who = xmlnode_get_attrib(packet, "from");
- xmlnode *data_node = xmlnode_get_child(packet, "data");
- const JabberData *data =
- jabber_data_find_local_by_cid(xmlnode_get_attrib(data_node, "cid"));
+ const char *cid = xmlnode_get_attrib(data_node, "cid");
+ const JabberData *data = cid ? jabber_data_find_local_by_cid(cid) : NULL;
if (!data) {
xmlnode *item_not_found = xmlnode_new("item-not-found");
result = jabber_iq_new(js, JABBER_IQ_ERROR);
- xmlnode_set_attrib(result->node, "to", who);
- xmlnode_set_attrib(result->node, "id", xmlnode_get_attrib(packet, "id"));
+ if (who)
+ xmlnode_set_attrib(result->node, "to", who);
+ xmlnode_set_attrib(result->node, "id", id);
xmlnode_insert_child(result->node, item_not_found);
} else {
result = jabber_iq_new(js, JABBER_IQ_RESULT);
- xmlnode_set_attrib(result->node, "to", who);
- xmlnode_set_attrib(result->node, "id", xmlnode_get_attrib(packet, "id"));
+ if (who)
+ xmlnode_set_attrib(result->node, "to", who);
+ xmlnode_set_attrib(result->node, "id", id);
xmlnode_insert_child(result->node,
jabber_data_get_xml_definition(data));
}
@@ -235,6 +236,8 @@ jabber_data_init(void)
g_free, jabber_data_delete);
remote_data_by_cid = g_hash_table_new_full(g_str_hash, g_str_equal,
g_free, jabber_data_delete);
+
+ jabber_iq_register_handler("data", XEP_0231_NAMESPACE, jabber_data_parse);
}
void
@@ -244,4 +247,5 @@ jabber_data_uninit(void)
g_hash_table_destroy(local_data_by_alt);
g_hash_table_destroy(local_data_by_cid);
g_hash_table_destroy(remote_data_by_cid);
+ local_data_by_alt = local_data_by_cid = remote_data_by_cid = NULL;
}
diff --git a/libpurple/protocols/jabber/data.h b/libpurple/protocols/jabber/data.h
index 40698de730..764ed062a3 100644
--- a/libpurple/protocols/jabber/data.h
+++ b/libpurple/protocols/jabber/data.h
@@ -3,19 +3,19 @@
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Library General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor Boston, MA 02110-1301, USA
*/
-
-#ifndef JABBER_DATA_H
-#define JABBER_DATA_H
+
+#ifndef PURPLE_JABBER_DATA_H
+#define PURPLE_JABBER_DATA_H
#include "xmlnode.h"
#include "jabber.h"
@@ -65,9 +65,10 @@ void jabber_data_associate_local(JabberData *data, const gchar *alt);
void jabber_data_associate_remote(JabberData *data);
/* handles iq requests */
-void jabber_data_parse(JabberStream *js, xmlnode *packet);
+void jabber_data_parse(JabberStream *js, const char *who, JabberIqType type,
+ const char *id, xmlnode *data_node);
void jabber_data_init(void);
void jabber_data_uninit(void);
-#endif /* JABBER_DATA_H */
+#endif /* PURPLE_JABBER_DATA_H */
diff --git a/libpurple/protocols/jabber/disco.c b/libpurple/protocols/jabber/disco.c
index 71f87cffa6..71002826eb 100644
--- a/libpurple/protocols/jabber/disco.c
+++ b/libpurple/protocols/jabber/disco.c
@@ -1,5 +1,5 @@
/*
- * purple - Jabber Protocol Plugin
+ * purple - Jabber Service Discovery
*
* Copyright (C) 2003, Nathan Walp <faceprint@faceprint.com>
*
@@ -22,32 +22,41 @@
#include "internal.h"
#include "prefs.h"
#include "debug.h"
+#include "request.h"
+#include "adhoccommands.h"
#include "buddy.h"
+#include "disco.h"
#include "google.h"
#include "iq.h"
-#include "disco.h"
#include "jabber.h"
+#include "jingle/jingle.h"
+#include "pep.h"
#include "presence.h"
#include "roster.h"
-#include "pep.h"
-#include "adhoccommands.h"
-
+#include "useravatar.h"
struct _jabber_disco_info_cb_data {
gpointer data;
JabberDiscoInfoCallback *callback;
};
+struct _jabber_disco_items_cb_data {
+ gpointer data;
+ JabberDiscoItemsCallback *callback;
+};
+
#define SUPPORT_FEATURE(x) { \
feature = xmlnode_new_child(query, "feature"); \
xmlnode_set_attrib(feature, "var", x); \
}
static void
-jabber_disco_bytestream_server_cb(JabberStream *js, xmlnode *packet, gpointer data) {
+jabber_disco_bytestream_server_cb(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data)
+{
JabberBytestreamsStreamhost *sh = data;
- const char *from = xmlnode_get_attrib(packet, "from");
xmlnode *query = xmlnode_get_child_with_namespace(packet, "query",
"http://jabber.org/protocol/bytestreams");
@@ -85,29 +94,27 @@ jabber_disco_bytestream_server_cb(JabberStream *js, xmlnode *packet, gpointer da
}
-void jabber_disco_info_parse(JabberStream *js, xmlnode *packet) {
- const char *from = xmlnode_get_attrib(packet, "from");
- const char *type = xmlnode_get_attrib(packet, "type");
+void jabber_disco_info_parse(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *in_query)
+{
- if(!from || !type)
+ if(!from)
return;
- if(!strcmp(type, "get")) {
+ if(type == JABBER_IQ_GET) {
xmlnode *query, *identity, *feature;
JabberIq *iq;
+ const char *node = xmlnode_get_attrib(in_query, "node");
+ char *node_uri = NULL;
- xmlnode *in_query;
- const char *node = NULL;
-
- if((in_query = xmlnode_get_child(packet, "query"))) {
- node = xmlnode_get_attrib(in_query, "node");
- }
-
+ /* create custom caps node URI */
+ node_uri = g_strconcat(CAPS0115_NODE, "#", jabber_caps_get_own_hash(js), NULL);
iq = jabber_iq_new_query(js, JABBER_IQ_RESULT,
"http://jabber.org/protocol/disco#info");
- jabber_iq_set_id(iq, xmlnode_get_attrib(packet, "id"));
+ jabber_iq_set_id(iq, id);
xmlnode_set_attrib(iq->node, "to", from);
query = xmlnode_get_child(iq->node, "query");
@@ -115,99 +122,102 @@ void jabber_disco_info_parse(JabberStream *js, xmlnode *packet) {
if(node)
xmlnode_set_attrib(query, "node", node);
- if(!node || !strcmp(node, CAPS0115_NODE "#" VERSION)) {
- identity = xmlnode_new_child(query, "identity");
- xmlnode_set_attrib(identity, "category", "client");
- xmlnode_set_attrib(identity, "type", "pc"); /* XXX: bot, console,
- * handheld, pc, phone,
- * web */
- xmlnode_set_attrib(identity, "name", PACKAGE);
-
- SUPPORT_FEATURE("jabber:iq:last")
- SUPPORT_FEATURE("jabber:iq:oob")
- SUPPORT_FEATURE("jabber:iq:time")
- SUPPORT_FEATURE("xmpp:urn:time")
- SUPPORT_FEATURE("jabber:iq:version")
- SUPPORT_FEATURE("jabber:x:conference")
- SUPPORT_FEATURE("http://jabber.org/protocol/bytestreams")
- SUPPORT_FEATURE("http://jabber.org/protocol/disco#info")
- SUPPORT_FEATURE("http://jabber.org/protocol/disco#items")
-#if 0
- SUPPORT_FEATURE("http://jabber.org/protocol/ibb")
-#endif
- SUPPORT_FEATURE("http://jabber.org/protocol/muc")
- SUPPORT_FEATURE("http://jabber.org/protocol/muc#user")
- SUPPORT_FEATURE("http://jabber.org/protocol/si")
- SUPPORT_FEATURE("http://jabber.org/protocol/si/profile/file-transfer")
- SUPPORT_FEATURE("http://jabber.org/protocol/xhtml-im")
- SUPPORT_FEATURE("urn:xmpp:ping")
- SUPPORT_FEATURE("http://www.xmpp.org/extensions/xep-0199.html#ns")
-
- if(!node) { /* non-caps disco#info, add all enabled extensions */
- GList *features;
- for(features = jabber_features; features; features = features->next) {
- JabberFeature *feat = (JabberFeature*)features->data;
- if(feat->is_enabled == NULL || feat->is_enabled(js, feat->shortname, feat->namespace) == TRUE)
- SUPPORT_FEATURE(feat->namespace);
- }
+ if(!node || g_str_equal(node, node_uri)) {
+ GList *features, *identities;
+ for(identities = jabber_identities; identities; identities = identities->next) {
+ JabberIdentity *ident = (JabberIdentity*)identities->data;
+ identity = xmlnode_new_child(query, "identity");
+ xmlnode_set_attrib(identity, "category", ident->category);
+ xmlnode_set_attrib(identity, "type", ident->type);
+ if (ident->lang)
+ xmlnode_set_attrib(identity, "xml:lang", ident->lang);
+ if (ident->name)
+ xmlnode_set_attrib(identity, "name", ident->name);
}
- } else {
- const char *ext = NULL;
- unsigned pos;
- unsigned nodelen = strlen(node);
- unsigned capslen = strlen(CAPS0115_NODE);
- /* do a basic plausability check */
- if(nodelen > capslen+1) {
- /* verify that the string is CAPS0115#<ext> and get the pointer to the ext part */
- for(pos = 0; pos < capslen+1; ++pos) {
- if(pos == capslen) {
- if(node[pos] == '#')
- ext = &node[pos+1];
- else
- break;
- } else if(node[pos] != CAPS0115_NODE[pos])
- break;
- }
-
- if(ext != NULL) {
- /* look for that ext */
- GList *features;
- for(features = jabber_features; features; features = features->next) {
- JabberFeature *feat = (JabberFeature*)features->data;
- if(!strcmp(feat->shortname, ext)) {
- SUPPORT_FEATURE(feat->namespace);
- break;
- }
- }
- if(features == NULL)
- ext = NULL;
+ for(features = jabber_features; features; features = features->next) {
+ JabberFeature *feat = (JabberFeature*)features->data;
+ if (!feat->is_enabled || feat->is_enabled(js, feat->namespace)) {
+ feature = xmlnode_new_child(query, "feature");
+ xmlnode_set_attrib(feature, "var", feat->namespace);
}
}
-
- if(ext == NULL) {
- xmlnode *error, *inf;
-
- /* XXX: gross hack, implement jabber_iq_set_type or something */
- xmlnode_set_attrib(iq->node, "type", "error");
- iq->type = JABBER_IQ_ERROR;
-
- error = xmlnode_new_child(query, "error");
- xmlnode_set_attrib(error, "code", "404");
- xmlnode_set_attrib(error, "type", "cancel");
- inf = xmlnode_new_child(error, "item-not-found");
- xmlnode_set_namespace(inf, "urn:ietf:params:xml:ns:xmpp-stanzas");
- }
+#ifdef USE_VV
+ } else if (g_str_equal(node, CAPS0115_NODE "#" "voice-v1")) {
+ /*
+ * HUGE HACK! We advertise this ext (see jabber_presence_create_js
+ * where we add <c/> to the <presence/>) for the Google Talk
+ * clients that don't actually check disco#info features.
+ *
+ * This specific feature is redundant but is what
+ * node='http://mail.google.com/xmpp/client/caps', ver='1.1'
+ * advertises as 'voice-v1'.
+ */
+ xmlnode *feature = xmlnode_new_child(query, "feature");
+ xmlnode_set_attrib(feature, "var", "http://www.google.com/xmpp/protocol/voice/v1");
+ } else if (g_str_equal(node, CAPS0115_NODE "#" "video-v1")) {
+ /*
+ * HUGE HACK! We advertise this ext (see jabber_presence_create_js
+ * where we add <c/> to the <presence/>) for the Google Talk
+ * clients that don't actually check disco#info features.
+ *
+ * This specific feature is redundant but is what
+ * node='http://mail.google.com/xmpp/client/caps', ver='1.1'
+ * advertises as 'video-v1'.
+ */
+ xmlnode *feature = xmlnode_new_child(query, "feature");
+ xmlnode_set_attrib(feature, "var", "http://www.google.com/xmpp/protocol/video/v1");
+#endif
+ } else {
+ xmlnode *error, *inf;
+
+ /* XXX: gross hack, implement jabber_iq_set_type or something */
+ xmlnode_set_attrib(iq->node, "type", "error");
+ iq->type = JABBER_IQ_ERROR;
+
+ error = xmlnode_new_child(query, "error");
+ xmlnode_set_attrib(error, "code", "404");
+ xmlnode_set_attrib(error, "type", "cancel");
+ inf = xmlnode_new_child(error, "item-not-found");
+ xmlnode_set_namespace(inf, "urn:ietf:params:xml:ns:xmpp-stanzas");
}
+ g_free(node_uri);
+ jabber_iq_send(iq);
+ } else if (type == JABBER_IQ_SET) {
+ /* wtf? seriously. wtf‽ */
+ JabberIq *iq = jabber_iq_new(js, JABBER_IQ_ERROR);
+ xmlnode *error, *bad_request;
+
+ /* Free the <query/> */
+ xmlnode_free(xmlnode_get_child(iq->node, "query"));
+ /* Add an error */
+ error = xmlnode_new_child(iq->node, "error");
+ xmlnode_set_attrib(error, "type", "modify");
+ bad_request = xmlnode_new_child(error, "bad-request");
+ xmlnode_set_namespace(bad_request, "urn:ietf:params:xml:ns:xmpp-stanzas");
+
+ jabber_iq_set_id(iq, id);
+ xmlnode_set_attrib(iq->node, "to", from);
jabber_iq_send(iq);
- } else if(!strcmp(type, "result")) {
- xmlnode *query = xmlnode_get_child(packet, "query");
+ }
+}
+
+static void jabber_disco_info_cb(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data)
+{
+ struct _jabber_disco_info_cb_data *jdicd = data;
+ xmlnode *query;
+
+ query = xmlnode_get_child_with_namespace(packet, "query",
+ "http://jabber.org/protocol/disco#info");
+
+ if (type == JABBER_IQ_RESULT && query) {
xmlnode *child;
JabberID *jid;
JabberBuddy *jb;
JabberBuddyResource *jbr = NULL;
JabberCapabilities capabilities = JABBER_CAP_NONE;
- struct _jabber_disco_info_cb_data *jdicd;
if((jid = jabber_id_new(from))) {
if(jid->resource && (jb = jabber_buddy_find(js, from, TRUE)))
@@ -268,11 +278,17 @@ void jabber_disco_info_parse(JabberStream *js, xmlnode *packet) {
capabilities |= JABBER_CAP_IQ_SEARCH;
else if(!strcmp(var, "jabber:iq:register"))
capabilities |= JABBER_CAP_IQ_REGISTER;
- else if(!strcmp(var, "http://www.xmpp.org/extensions/xep-0199.html#ns"))
+ else if(!strcmp(var, "urn:xmpp:ping"))
capabilities |= JABBER_CAP_PING;
+ else if(!strcmp(var, "http://jabber.org/protocol/disco#items"))
+ capabilities |= JABBER_CAP_ITEMS;
else if(!strcmp(var, "http://jabber.org/protocol/commands")) {
capabilities |= JABBER_CAP_ADHOC;
}
+ else if(!strcmp(var, "http://jabber.org/protocol/ibb")) {
+ purple_debug_info("jabber", "remote supports IBB\n");
+ capabilities |= JABBER_CAP_IBB;
+ }
}
}
@@ -281,19 +297,12 @@ void jabber_disco_info_parse(JabberStream *js, xmlnode *packet) {
if(jbr)
jbr->capabilities = capabilities;
- if((jdicd = g_hash_table_lookup(js->disco_callbacks, from))) {
- jdicd->callback(js, from, capabilities, jdicd->data);
- g_hash_table_remove(js->disco_callbacks, from);
- }
- } else if(!strcmp(type, "error")) {
+ jdicd->callback(js, from, capabilities, jdicd->data);
+ } else { /* type == JABBER_IQ_ERROR or query == NULL */
JabberID *jid;
JabberBuddy *jb;
JabberBuddyResource *jbr = NULL;
JabberCapabilities capabilities = JABBER_CAP_NONE;
- struct _jabber_disco_info_cb_data *jdicd;
-
- if(!(jdicd = g_hash_table_lookup(js->disco_callbacks, from)))
- return;
if((jid = jabber_id_new(from))) {
if(jid->resource && (jb = jabber_buddy_find(js, from, TRUE)))
@@ -305,32 +314,27 @@ void jabber_disco_info_parse(JabberStream *js, xmlnode *packet) {
capabilities = jbr->capabilities;
jdicd->callback(js, from, capabilities, jdicd->data);
- g_hash_table_remove(js->disco_callbacks, from);
}
}
-void jabber_disco_items_parse(JabberStream *js, xmlnode *packet) {
- const char *from = xmlnode_get_attrib(packet, "from");
- const char *type = xmlnode_get_attrib(packet, "type");
-
- if(type && !strcmp(type, "get")) {
+void jabber_disco_items_parse(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *query)
+{
+ if(type == JABBER_IQ_GET) {
JabberIq *iq = jabber_iq_new_query(js, JABBER_IQ_RESULT,
"http://jabber.org/protocol/disco#items");
-
+
/* preserve node */
- xmlnode *iq_query = xmlnode_get_child_with_namespace(iq->node,"query","http://jabber.org/protocol/disco#items");
- if(iq_query) {
- xmlnode *query = xmlnode_get_child_with_namespace(packet,"query","http://jabber.org/protocol/disco#items");
- if(query) {
- const char *node = xmlnode_get_attrib(query,"node");
- if(node)
- xmlnode_set_attrib(iq_query,"node",node);
- }
- }
+ xmlnode *iq_query = xmlnode_get_child(iq->node, "query");
+ const char *node = xmlnode_get_attrib(query, "node");
+ if(node)
+ xmlnode_set_attrib(iq_query,"node",node);
- jabber_iq_set_id(iq, xmlnode_get_attrib(packet, "id"));
+ jabber_iq_set_id(iq, id);
- xmlnode_set_attrib(iq->node, "to", from);
+ if (from)
+ xmlnode_set_attrib(iq->node, "to", from);
jabber_iq_send(iq);
}
}
@@ -340,16 +344,21 @@ jabber_disco_finish_server_info_result_cb(JabberStream *js)
{
const char *ft_proxies;
+ /*
+ * This *should* happen only if the server supports vcard-temp, but there
+ * are apparently some servers that don't advertise it even though they
+ * support it.
+ */
jabber_vcard_fetch_mine(js);
+ if (js->pep)
+ jabber_avatar_fetch_mine(js);
+
if (!(js->server_caps & JABBER_CAP_GOOGLE_ROSTER)) {
/* If the server supports JABBER_CAP_GOOGLE_ROSTER; we will have already requested it */
jabber_roster_request(js);
}
- /* Send initial presence; this will trigger receipt of presence for contacts on the roster */
- jabber_presence_send(js->gc->account, NULL);
-
if (js->server_caps & JABBER_CAP_ADHOC) {
/* The server supports ad-hoc commands, so let's request the list */
jabber_adhoc_server_get_list(js);
@@ -395,19 +404,18 @@ jabber_disco_finish_server_info_result_cb(JabberStream *js)
}
static void
-jabber_disco_server_info_result_cb(JabberStream *js, xmlnode *packet, gpointer data)
+jabber_disco_server_info_result_cb(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data)
{
xmlnode *query, *child;
- const char *from = xmlnode_get_attrib(packet, "from");
- const char *type = xmlnode_get_attrib(packet, "type");
- if((!from || !type) ||
- (strcmp(from, js->user->domain))) {
+ if (!from || strcmp(from, js->user->domain)) {
jabber_disco_finish_server_info_result_cb(js);
return;
}
- if(strcmp(type, "result")) {
+ if (type == JABBER_IQ_ERROR) {
/* A common way to get here is for the server not to support xmlns http://jabber.org/protocol/disco#info */
jabber_disco_finish_server_info_result_cb(js);
return;
@@ -441,6 +449,11 @@ jabber_disco_server_info_result_cb(JabberStream *js, xmlnode *packet, gpointer d
if (!strcmp(name, "Google Talk")) {
purple_debug_info("jabber", "Google Talk!\n");
js->googletalk = TRUE;
+
+ /* autodiscover stun and relays */
+ jabber_google_send_jingle_info(js);
+ } else {
+ /* TODO: add external service discovery here... */
}
}
@@ -468,19 +481,16 @@ jabber_disco_server_info_result_cb(JabberStream *js, xmlnode *packet, gpointer d
}
static void
-jabber_disco_server_items_result_cb(JabberStream *js, xmlnode *packet, gpointer data)
+jabber_disco_server_items_result_cb(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data)
{
xmlnode *query, *child;
- const char *from = xmlnode_get_attrib(packet, "from");
- const char *type = xmlnode_get_attrib(packet, "type");
-
- if(!from || !type)
- return;
- if(strcmp(from, js->user->domain))
+ if (!from || strcmp(from, js->user->domain) != 0)
return;
- if(strcmp(type, "result"))
+ if (type == JABBER_IQ_ERROR)
return;
while(js->chat_servers) {
@@ -548,12 +558,10 @@ void jabber_disco_info_do(JabberStream *js, const char *who, JabberDiscoInfoCall
jdicd->data = data;
jdicd->callback = callback;
- g_hash_table_insert(js->disco_callbacks, g_strdup(who), jdicd);
-
iq = jabber_iq_new_query(js, JABBER_IQ_GET, "http://jabber.org/protocol/disco#info");
xmlnode_set_attrib(iq->node, "to", who);
+ jabber_iq_set_callback(iq, jabber_disco_info_cb, jdicd);
jabber_iq_send(iq);
}
-
diff --git a/libpurple/protocols/jabber/disco.h b/libpurple/protocols/jabber/disco.h
index 04e17853bd..7f76985420 100644
--- a/libpurple/protocols/jabber/disco.h
+++ b/libpurple/protocols/jabber/disco.h
@@ -1,5 +1,5 @@
/**
- * @file iq.h JabberID handlers
+ * @file disco.h Jabber Service Discovery
*
* purple
*
@@ -19,20 +19,31 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
*/
-#ifndef _PURPLE_JABBER_DISCO_H_
-#define _PURPLE_JABBER_DISCO_H_
+#ifndef PURPLE_JABBER_DISCO_H_
+#define PURPLE_JABBER_DISCO_H_
#include "jabber.h"
+typedef struct _JabberDiscoItem {
+ const char *jid; /* MUST */
+ const char *node; /* SHOULD */
+ const char *name; /* MAY */
+} JabberDiscoItem;
+
typedef void (JabberDiscoInfoCallback)(JabberStream *js, const char *who,
JabberCapabilities capabilities, gpointer data);
-void jabber_disco_info_parse(JabberStream *js, xmlnode *packet);
-void jabber_disco_items_parse(JabberStream *js, xmlnode *packet);
+typedef void (JabberDiscoItemsCallback)(JabberStream *js, const char *jid,
+ const char *node, GSList *items, gpointer data);
+
+void jabber_disco_info_parse(JabberStream *js, const char *from,
+ JabberIqType type, const char *id, xmlnode *in_query);
+void jabber_disco_items_parse(JabberStream *js, const char *from,
+ JabberIqType type, const char *id, xmlnode *query);
void jabber_disco_items_server(JabberStream *js);
void jabber_disco_info_do(JabberStream *js, const char *who,
JabberDiscoInfoCallback *callback, gpointer data);
-#endif /* _PURPLE_JABBER_DISCO_H_ */
+#endif /* PURPLE_JABBER_DISCO_H_ */
diff --git a/libpurple/protocols/jabber/google.c b/libpurple/protocols/jabber/google.c
index 33ac94ea88..5eabfbccb7 100644
--- a/libpurple/protocols/jabber/google.c
+++ b/libpurple/protocols/jabber/google.c
@@ -20,8 +20,11 @@
#include "internal.h"
#include "debug.h"
+#include "mediamanager.h"
#include "util.h"
#include "privacy.h"
+#include "dnsquery.h"
+#include "network.h"
#include "buddy.h"
#include "google.h"
@@ -29,14 +32,762 @@
#include "presence.h"
#include "iq.h"
+#include "jingle/jingle.h"
+
+#ifdef USE_VV
+
+#define NS_GOOGLE_VIDEO "http://www.google.com/session/video"
+#define NS_GOOGLE_PHONE "http://www.google.com/session/phone"
+
+typedef struct {
+ char *id;
+ char *initiator;
+} GoogleSessionId;
+
+typedef enum {
+ UNINIT,
+ SENT_INITIATE,
+ RECEIVED_INITIATE,
+ IN_PRORESS,
+ TERMINATED
+} GoogleSessionState;
+
+typedef struct {
+ GoogleSessionId id;
+ GoogleSessionState state;
+ PurpleMedia *media;
+ JabberStream *js;
+ char *remote_jid;
+ gboolean video;
+} GoogleSession;
+
+static gboolean
+google_session_id_equal(gconstpointer a, gconstpointer b)
+{
+ GoogleSessionId *c = (GoogleSessionId*)a;
+ GoogleSessionId *d = (GoogleSessionId*)b;
+
+ return !strcmp(c->id, d->id) && !strcmp(c->initiator, d->initiator);
+}
+
+static void
+google_session_destroy(GoogleSession *session)
+{
+ g_free(session->id.id);
+ g_free(session->id.initiator);
+ g_free(session->remote_jid);
+ g_free(session);
+}
+
+static xmlnode *
+google_session_create_xmlnode(GoogleSession *session, const char *type)
+{
+ xmlnode *node = xmlnode_new("session");
+ xmlnode_set_namespace(node, "http://www.google.com/session");
+ xmlnode_set_attrib(node, "id", session->id.id);
+ xmlnode_set_attrib(node, "initiator", session->id.initiator);
+ xmlnode_set_attrib(node, "type", type);
+ return node;
+}
+
+static void
+google_session_send_terminate(GoogleSession *session)
+{
+ xmlnode *sess;
+ JabberIq *iq = jabber_iq_new(session->js, JABBER_IQ_SET);
+
+ xmlnode_set_attrib(iq->node, "to", session->remote_jid);
+ sess = google_session_create_xmlnode(session, "terminate");
+ xmlnode_insert_child(iq->node, sess);
+
+ jabber_iq_send(iq);
+ google_session_destroy(session);
+}
+
+static void
+google_session_send_candidates(PurpleMedia *media, gchar *session_id,
+ gchar *participant, GoogleSession *session)
+{
+ GList *candidates = purple_media_get_local_candidates(
+ session->media, session_id, session->remote_jid);
+ PurpleMediaCandidate *transport;
+ gboolean video = FALSE;
+
+ if (!strcmp(session_id, "google-video"))
+ video = TRUE;
+
+ for (;candidates;candidates = candidates->next) {
+ JabberIq *iq;
+ gchar *ip, *port, *pref, *username, *password;
+ PurpleMediaCandidateType type;
+ xmlnode *sess;
+ xmlnode *candidate;
+ guint component_id;
+ transport = (PurpleMediaCandidate*)(candidates->data);
+ component_id = purple_media_candidate_get_component_id(
+ transport);
+
+ iq = jabber_iq_new(session->js, JABBER_IQ_SET);
+ sess = google_session_create_xmlnode(session, "candidates");
+ xmlnode_insert_child(iq->node, sess);
+ xmlnode_set_attrib(iq->node, "to", session->remote_jid);
+
+ candidate = xmlnode_new("candidate");
+
+ ip = purple_media_candidate_get_ip(transport);
+ port = g_strdup_printf("%d",
+ purple_media_candidate_get_port(transport));
+ pref = g_strdup_printf("%f",
+ purple_media_candidate_get_priority(transport)
+ /1000.0);
+ username = purple_media_candidate_get_username(transport);
+ password = purple_media_candidate_get_password(transport);
+ type = purple_media_candidate_get_candidate_type(transport);
+
+ xmlnode_set_attrib(candidate, "address", ip);
+ xmlnode_set_attrib(candidate, "port", port);
+ xmlnode_set_attrib(candidate, "name",
+ component_id == PURPLE_MEDIA_COMPONENT_RTP ?
+ video ? "video_rtp" : "rtp" :
+ component_id == PURPLE_MEDIA_COMPONENT_RTCP ?
+ video ? "video_rtcp" : "rtcp" : "none");
+ xmlnode_set_attrib(candidate, "username", username);
+ /*
+ * As of this writing, Farsight 2 in Google compatibility
+ * mode doesn't provide a password. The Gmail client
+ * requires this to be set.
+ */
+ xmlnode_set_attrib(candidate, "password",
+ password != NULL ? password : "");
+ xmlnode_set_attrib(candidate, "preference", pref);
+ xmlnode_set_attrib(candidate, "protocol",
+ purple_media_candidate_get_protocol(transport)
+ == PURPLE_MEDIA_NETWORK_PROTOCOL_UDP ?
+ "udp" : "tcp");
+ xmlnode_set_attrib(candidate, "type", type ==
+ PURPLE_MEDIA_CANDIDATE_TYPE_HOST ? "local" :
+ type ==
+ PURPLE_MEDIA_CANDIDATE_TYPE_SRFLX ? "stun" :
+ type ==
+ PURPLE_MEDIA_CANDIDATE_TYPE_RELAY ? "relay" :
+ NULL);
+ xmlnode_set_attrib(candidate, "generation", "0");
+ xmlnode_set_attrib(candidate, "network", "0");
+ xmlnode_insert_child(sess, candidate);
+
+ g_free(ip);
+ g_free(port);
+ g_free(pref);
+ g_free(username);
+ g_free(password);
+
+ jabber_iq_send(iq);
+ }
+}
+
static void
-jabber_gmail_parse(JabberStream *js, xmlnode *packet, gpointer nul)
+google_session_ready(GoogleSession *session)
+{
+ PurpleMedia *media = session->media;
+ if (purple_media_codecs_ready(media, NULL) &&
+ purple_media_candidates_prepared(media, NULL, NULL)) {
+ gchar *me = g_strdup_printf("%s@%s/%s",
+ session->js->user->node,
+ session->js->user->domain,
+ session->js->user->resource);
+ JabberIq *iq;
+ xmlnode *sess, *desc, *payload;
+ GList *codecs, *iter;
+ gboolean is_initiator = !strcmp(session->id.initiator, me);
+
+ if (!is_initiator &&
+ !purple_media_accepted(media, NULL, NULL)) {
+ g_free(me);
+ return;
+ }
+
+ iq = jabber_iq_new(session->js, JABBER_IQ_SET);
+
+ if (is_initiator) {
+ xmlnode_set_attrib(iq->node, "to", session->remote_jid);
+ xmlnode_set_attrib(iq->node, "from", session->id.initiator);
+ sess = google_session_create_xmlnode(session, "initiate");
+ } else {
+ google_session_send_candidates(session->media,
+ "google-voice", session->remote_jid,
+ session);
+ google_session_send_candidates(session->media,
+ "google-video", session->remote_jid,
+ session);
+ xmlnode_set_attrib(iq->node, "to", session->remote_jid);
+ xmlnode_set_attrib(iq->node, "from", me);
+ sess = google_session_create_xmlnode(session, "accept");
+ }
+ xmlnode_insert_child(iq->node, sess);
+ desc = xmlnode_new_child(sess, "description");
+ if (session->video)
+ xmlnode_set_namespace(desc, NS_GOOGLE_VIDEO);
+ else
+ xmlnode_set_namespace(desc, NS_GOOGLE_PHONE);
+
+ codecs = purple_media_get_codecs(media, "google-video");
+
+ for (iter = codecs; iter; iter = g_list_next(iter)) {
+ PurpleMediaCodec *codec = (PurpleMediaCodec*)iter->data;
+ gchar *id = g_strdup_printf("%d",
+ purple_media_codec_get_id(codec));
+ gchar *encoding_name =
+ purple_media_codec_get_encoding_name(codec);
+ payload = xmlnode_new_child(desc, "payload-type");
+ xmlnode_set_attrib(payload, "id", id);
+ xmlnode_set_attrib(payload, "name", encoding_name);
+ xmlnode_set_attrib(payload, "width", "320");
+ xmlnode_set_attrib(payload, "height", "200");
+ xmlnode_set_attrib(payload, "framerate", "30");
+ g_free(encoding_name);
+ g_free(id);
+ }
+ purple_media_codec_list_free(codecs);
+
+ codecs = purple_media_get_codecs(media, "google-voice");
+
+ for (iter = codecs; iter; iter = g_list_next(iter)) {
+ PurpleMediaCodec *codec = (PurpleMediaCodec*)iter->data;
+ gchar *id = g_strdup_printf("%d",
+ purple_media_codec_get_id(codec));
+ gchar *encoding_name =
+ purple_media_codec_get_encoding_name(codec);
+ gchar *clock_rate = g_strdup_printf("%d",
+ purple_media_codec_get_clock_rate(codec));
+ payload = xmlnode_new_child(desc, "payload-type");
+ if (session->video)
+ xmlnode_set_namespace(payload, NS_GOOGLE_PHONE);
+ xmlnode_set_attrib(payload, "id", id);
+ /*
+ * Hack to make Gmail accept speex as the codec.
+ * It shouldn't have to be case sensitive.
+ */
+ if (purple_strequal(encoding_name, "SPEEX"))
+ xmlnode_set_attrib(payload, "name", "speex");
+ else
+ xmlnode_set_attrib(payload, "name", encoding_name);
+ xmlnode_set_attrib(payload, "clockrate", clock_rate);
+ g_free(clock_rate);
+ g_free(encoding_name);
+ g_free(id);
+ }
+ purple_media_codec_list_free(codecs);
+
+ jabber_iq_send(iq);
+
+ if (is_initiator) {
+ google_session_send_candidates(session->media,
+ "google-voice", session->remote_jid,
+ session);
+ google_session_send_candidates(session->media,
+ "google-video", session->remote_jid,
+ session);
+ }
+
+ g_signal_handlers_disconnect_by_func(G_OBJECT(session->media),
+ G_CALLBACK(google_session_ready), session);
+ }
+}
+
+static void
+google_session_state_changed_cb(PurpleMedia *media, PurpleMediaState state,
+ gchar *sid, gchar *name, GoogleSession *session)
+{
+ if (sid == NULL && name == NULL) {
+ if (state == PURPLE_MEDIA_STATE_END) {
+ google_session_destroy(session);
+ }
+ }
+}
+
+static void
+google_session_stream_info_cb(PurpleMedia *media, PurpleMediaInfoType type,
+ gchar *sid, gchar *name, gboolean local,
+ GoogleSession *session)
+{
+ if (type == PURPLE_MEDIA_INFO_HANGUP) {
+ xmlnode *sess;
+ JabberIq *iq = jabber_iq_new(session->js, JABBER_IQ_SET);
+
+ xmlnode_set_attrib(iq->node, "to", session->remote_jid);
+ sess = google_session_create_xmlnode(session, "terminate");
+ xmlnode_insert_child(iq->node, sess);
+
+ jabber_iq_send(iq);
+ } else if (type == PURPLE_MEDIA_INFO_REJECT) {
+ xmlnode *sess;
+ JabberIq *iq = jabber_iq_new(session->js, JABBER_IQ_SET);
+
+ xmlnode_set_attrib(iq->node, "to", session->remote_jid);
+ sess = google_session_create_xmlnode(session, "reject");
+ xmlnode_insert_child(iq->node, sess);
+
+ jabber_iq_send(iq);
+ }
+}
+
+static GParameter *
+jabber_google_session_get_params(JabberStream *js, guint *num)
+{
+ guint num_params;
+ GParameter *params = jingle_get_params(js, &num_params);
+ GParameter *new_params = g_new0(GParameter, num_params + 1);
+
+ memcpy(new_params, params, sizeof(GParameter) * num_params);
+
+ purple_debug_info("jabber", "setting Google jingle compatibility param\n");
+ new_params[num_params].name = "compatibility-mode";
+ g_value_init(&new_params[num_params].value, G_TYPE_UINT);
+ g_value_set_uint(&new_params[num_params].value, 1); /* NICE_COMPATIBILITY_GOOGLE */
+
+ g_free(params);
+ *num = num_params + 1;
+ return new_params;
+}
+
+
+gboolean
+jabber_google_session_initiate(JabberStream *js, const gchar *who, PurpleMediaSessionType type)
+{
+ GoogleSession *session;
+ JabberBuddy *jb;
+ JabberBuddyResource *jbr;
+ gchar *jid;
+ GParameter *params;
+ guint num_params;
+
+ /* construct JID to send to */
+ jb = jabber_buddy_find(js, who, FALSE);
+ if (!jb) {
+ purple_debug_error("jingle-rtp",
+ "Could not find Jabber buddy\n");
+ return FALSE;
+ }
+ jbr = jabber_buddy_find_resource(jb, NULL);
+ if (!jbr) {
+ purple_debug_error("jingle-rtp",
+ "Could not find buddy's resource\n");
+ }
+
+ if ((strchr(who, '/') == NULL) && jbr && (jbr->name != NULL)) {
+ jid = g_strdup_printf("%s/%s", who, jbr->name);
+ } else {
+ jid = g_strdup(who);
+ }
+
+ session = g_new0(GoogleSession, 1);
+ session->id.id = jabber_get_next_id(js);
+ session->id.initiator = g_strdup_printf("%s@%s/%s", js->user->node,
+ js->user->domain, js->user->resource);
+ session->state = SENT_INITIATE;
+ session->js = js;
+ session->remote_jid = jid;
+
+ if (type & PURPLE_MEDIA_VIDEO)
+ session->video = TRUE;
+
+ session->media = purple_media_manager_create_media(
+ purple_media_manager_get(),
+ purple_connection_get_account(js->gc),
+ "fsrtpconference", session->remote_jid, TRUE);
+
+ purple_media_set_prpl_data(session->media, session);
+
+ params = jabber_google_session_get_params(js, &num_params);
+
+ if (purple_media_add_stream(session->media, "google-voice",
+ session->remote_jid, PURPLE_MEDIA_AUDIO,
+ TRUE, "nice", num_params, params) == FALSE ||
+ (session->video && purple_media_add_stream(
+ session->media, "google-video",
+ session->remote_jid, PURPLE_MEDIA_VIDEO,
+ TRUE, "nice", num_params, params) == FALSE)) {
+ purple_media_error(session->media, "Error adding stream.");
+ purple_media_stream_info(session->media,
+ PURPLE_MEDIA_INFO_HANGUP, NULL, NULL, TRUE);
+ google_session_destroy(session);
+ g_free(params);
+ return FALSE;
+ }
+
+ g_signal_connect_swapped(G_OBJECT(session->media),
+ "candidates-prepared",
+ G_CALLBACK(google_session_ready), session);
+ g_signal_connect_swapped(G_OBJECT(session->media), "codecs-changed",
+ G_CALLBACK(google_session_ready), session);
+ g_signal_connect(G_OBJECT(session->media), "state-changed",
+ G_CALLBACK(google_session_state_changed_cb), session);
+ g_signal_connect(G_OBJECT(session->media), "stream-info",
+ G_CALLBACK(google_session_stream_info_cb), session);
+
+ g_free(params);
+
+ return (session->media != NULL) ? TRUE : FALSE;
+}
+
+static void
+google_session_handle_initiate(JabberStream *js, GoogleSession *session, xmlnode *sess, const char *iq_id)
+{
+ JabberIq *result;
+ GList *codecs = NULL, *video_codecs = NULL;
+ xmlnode *desc_element, *codec_element;
+ PurpleMediaCodec *codec;
+ const char *xmlns;
+ GParameter *params;
+ guint num_params;
+
+ if (session->state != UNINIT) {
+ purple_debug_error("jabber", "Received initiate for active session.\n");
+ return;
+ }
+
+ desc_element = xmlnode_get_child(sess, "description");
+ xmlns = xmlnode_get_namespace(desc_element);
+
+ if (purple_strequal(xmlns, NS_GOOGLE_PHONE))
+ session->video = FALSE;
+ else if (purple_strequal(xmlns, NS_GOOGLE_VIDEO))
+ session->video = TRUE;
+ else {
+ purple_debug_error("jabber", "Received initiate with "
+ "invalid namespace %s.\n", xmlns);
+ return;
+ }
+
+ session->media = purple_media_manager_create_media(
+ purple_media_manager_get(),
+ purple_connection_get_account(js->gc),
+ "fsrtpconference", session->remote_jid, FALSE);
+
+ purple_media_set_prpl_data(session->media, session);
+
+ params = jabber_google_session_get_params(js, &num_params);
+
+ if (purple_media_add_stream(session->media, "google-voice",
+ session->remote_jid, PURPLE_MEDIA_AUDIO, FALSE,
+ "nice", num_params, params) == FALSE ||
+ (session->video && purple_media_add_stream(
+ session->media, "google-video",
+ session->remote_jid, PURPLE_MEDIA_VIDEO,
+ FALSE, "nice", num_params, params) == FALSE)) {
+ purple_media_error(session->media, "Error adding stream.");
+ purple_media_stream_info(session->media,
+ PURPLE_MEDIA_INFO_HANGUP, NULL, NULL, TRUE);
+ google_session_send_terminate(session);
+ g_free(params);
+ return;
+ }
+
+ g_free(params);
+
+ for (codec_element = xmlnode_get_child(desc_element, "payload-type");
+ codec_element; codec_element = codec_element->next) {
+ const char *id, *encoding_name, *clock_rate,
+ *width, *height, *framerate;
+ gboolean video;
+ if (codec_element->name &&
+ strcmp(codec_element->name, "payload-type"))
+ continue;
+
+ xmlns = xmlnode_get_namespace(codec_element);
+ encoding_name = xmlnode_get_attrib(codec_element, "name");
+ id = xmlnode_get_attrib(codec_element, "id");
+
+ if (!session->video ||
+ (xmlns && !strcmp(xmlns, NS_GOOGLE_PHONE))) {
+ clock_rate = xmlnode_get_attrib(
+ codec_element, "clockrate");
+ video = FALSE;
+ } else {
+ width = xmlnode_get_attrib(codec_element, "width");
+ height = xmlnode_get_attrib(codec_element, "height");
+ framerate = xmlnode_get_attrib(
+ codec_element, "framerate");
+ clock_rate = "90000";
+ video = TRUE;
+ }
+
+ if (id) {
+ codec = purple_media_codec_new(atoi(id), encoding_name,
+ video ? PURPLE_MEDIA_VIDEO :
+ PURPLE_MEDIA_AUDIO,
+ clock_rate ? atoi(clock_rate) : 0);
+ if (video)
+ video_codecs = g_list_append(
+ video_codecs, codec);
+ else
+ codecs = g_list_append(codecs, codec);
+ }
+ }
+
+ if (codecs)
+ purple_media_set_remote_codecs(session->media, "google-voice",
+ session->remote_jid, codecs);
+ if (video_codecs)
+ purple_media_set_remote_codecs(session->media, "google-video",
+ session->remote_jid, video_codecs);
+
+ purple_media_codec_list_free(codecs);
+ purple_media_codec_list_free(video_codecs);
+
+ g_signal_connect_swapped(G_OBJECT(session->media), "accepted",
+ G_CALLBACK(google_session_ready), session);
+ g_signal_connect_swapped(G_OBJECT(session->media),
+ "candidates-prepared",
+ G_CALLBACK(google_session_ready), session);
+ g_signal_connect_swapped(G_OBJECT(session->media), "codecs-changed",
+ G_CALLBACK(google_session_ready), session);
+ g_signal_connect(G_OBJECT(session->media), "state-changed",
+ G_CALLBACK(google_session_state_changed_cb), session);
+ g_signal_connect(G_OBJECT(session->media), "stream-info",
+ G_CALLBACK(google_session_stream_info_cb), session);
+
+ result = jabber_iq_new(js, JABBER_IQ_RESULT);
+ jabber_iq_set_id(result, iq_id);
+ xmlnode_set_attrib(result->node, "to", session->remote_jid);
+ jabber_iq_send(result);
+}
+
+static void
+google_session_handle_candidates(JabberStream *js, GoogleSession *session, xmlnode *sess, const char *iq_id)
+{
+ JabberIq *result;
+ GList *list = NULL, *video_list = NULL;
+ xmlnode *cand;
+ static int name = 0;
+ char n[4];
+
+ for (cand = xmlnode_get_child(sess, "candidate"); cand;
+ cand = xmlnode_get_next_twin(cand)) {
+ PurpleMediaCandidate *info;
+ const gchar *cname = xmlnode_get_attrib(cand, "name");
+ const gchar *type = xmlnode_get_attrib(cand, "type");
+ const gchar *protocol = xmlnode_get_attrib(cand, "protocol");
+ const gchar *address = xmlnode_get_attrib(cand, "address");
+ const gchar *port = xmlnode_get_attrib(cand, "port");
+ guint component_id;
+
+ if (cname && type && address && port) {
+ PurpleMediaCandidateType candidate_type;
+
+ g_snprintf(n, sizeof(n), "S%d", name++);
+
+ if (g_str_equal(type, "local"))
+ candidate_type = PURPLE_MEDIA_CANDIDATE_TYPE_HOST;
+ else if (g_str_equal(type, "stun"))
+ candidate_type = PURPLE_MEDIA_CANDIDATE_TYPE_PRFLX;
+ else if (g_str_equal(type, "relay"))
+ candidate_type = PURPLE_MEDIA_CANDIDATE_TYPE_RELAY;
+ else
+ candidate_type = PURPLE_MEDIA_CANDIDATE_TYPE_HOST;
+
+ if (purple_strequal(cname, "rtcp") ||
+ purple_strequal(cname, "video_rtcp"))
+ component_id = PURPLE_MEDIA_COMPONENT_RTCP;
+ else
+ component_id = PURPLE_MEDIA_COMPONENT_RTP;
+
+ info = purple_media_candidate_new(n, component_id,
+ candidate_type,
+ purple_strequal(protocol, "udp") ?
+ PURPLE_MEDIA_NETWORK_PROTOCOL_UDP :
+ PURPLE_MEDIA_NETWORK_PROTOCOL_TCP,
+ address,
+ atoi(port));
+ g_object_set(info, "username", xmlnode_get_attrib(cand, "username"),
+ "password", xmlnode_get_attrib(cand, "password"), NULL);
+ if (!strncmp(cname, "video_", 6))
+ video_list = g_list_append(video_list, info);
+ else
+ list = g_list_append(list, info);
+ }
+ }
+
+ if (list)
+ purple_media_add_remote_candidates(
+ session->media, "google-voice",
+ session->remote_jid, list);
+ if (video_list)
+ purple_media_add_remote_candidates(
+ session->media, "google-video",
+ session->remote_jid, video_list);
+ purple_media_candidate_list_free(list);
+ purple_media_candidate_list_free(video_list);
+
+ result = jabber_iq_new(js, JABBER_IQ_RESULT);
+ jabber_iq_set_id(result, iq_id);
+ xmlnode_set_attrib(result->node, "to", session->remote_jid);
+ jabber_iq_send(result);
+}
+
+static void
+google_session_handle_accept(JabberStream *js, GoogleSession *session, xmlnode *sess, const char *iq_id)
+{
+ xmlnode *desc_element = xmlnode_get_child(sess, "description");
+ xmlnode *codec_element = xmlnode_get_child(
+ desc_element, "payload-type");
+ GList *codecs = NULL, *video_codecs = NULL;
+ JabberIq *result = NULL;
+ const gchar *xmlns = xmlnode_get_namespace(desc_element);
+ gboolean video = (xmlns && !strcmp(xmlns, NS_GOOGLE_VIDEO));
+
+ for (; codec_element; codec_element = codec_element->next) {
+ const gchar *xmlns, *encoding_name, *id,
+ *clock_rate, *width, *height, *framerate;
+ gboolean video_codec = FALSE;
+
+ if (!purple_strequal(codec_element->name, "payload-type"))
+ continue;
+
+ xmlns = xmlnode_get_namespace(codec_element);
+ encoding_name = xmlnode_get_attrib(codec_element, "name");
+ id = xmlnode_get_attrib(codec_element, "id");
+
+ if (!video || purple_strequal(xmlns, NS_GOOGLE_PHONE))
+ clock_rate = xmlnode_get_attrib(
+ codec_element, "clockrate");
+ else {
+ clock_rate = "90000";
+ width = xmlnode_get_attrib(codec_element, "width");
+ height = xmlnode_get_attrib(codec_element, "height");
+ framerate = xmlnode_get_attrib(
+ codec_element, "framerate");
+ video_codec = TRUE;
+ }
+
+ if (id && encoding_name) {
+ PurpleMediaCodec *codec = purple_media_codec_new(
+ atoi(id), encoding_name,
+ video_codec ? PURPLE_MEDIA_VIDEO :
+ PURPLE_MEDIA_AUDIO,
+ clock_rate ? atoi(clock_rate) : 0);
+ if (video_codec)
+ video_codecs = g_list_append(
+ video_codecs, codec);
+ else
+ codecs = g_list_append(codecs, codec);
+ }
+ }
+
+ if (codecs)
+ purple_media_set_remote_codecs(session->media, "google-voice",
+ session->remote_jid, codecs);
+ if (video_codecs)
+ purple_media_set_remote_codecs(session->media, "google-video",
+ session->remote_jid, video_codecs);
+
+ purple_media_stream_info(session->media, PURPLE_MEDIA_INFO_ACCEPT,
+ NULL, NULL, FALSE);
+
+ result = jabber_iq_new(js, JABBER_IQ_RESULT);
+ jabber_iq_set_id(result, iq_id);
+ xmlnode_set_attrib(result->node, "to", session->remote_jid);
+ jabber_iq_send(result);
+}
+
+static void
+google_session_handle_reject(JabberStream *js, GoogleSession *session, xmlnode *sess)
+{
+ purple_media_end(session->media, NULL, NULL);
+}
+
+static void
+google_session_handle_terminate(JabberStream *js, GoogleSession *session, xmlnode *sess)
+{
+ purple_media_end(session->media, NULL, NULL);
+}
+
+static void
+google_session_parse_iq(JabberStream *js, GoogleSession *session, xmlnode *sess, const char *iq_id)
+{
+ const char *type = xmlnode_get_attrib(sess, "type");
+
+ if (!strcmp(type, "initiate")) {
+ google_session_handle_initiate(js, session, sess, iq_id);
+ } else if (!strcmp(type, "accept")) {
+ google_session_handle_accept(js, session, sess, iq_id);
+ } else if (!strcmp(type, "reject")) {
+ google_session_handle_reject(js, session, sess);
+ } else if (!strcmp(type, "terminate")) {
+ google_session_handle_terminate(js, session, sess);
+ } else if (!strcmp(type, "candidates")) {
+ google_session_handle_candidates(js, session, sess, iq_id);
+ }
+}
+
+void
+jabber_google_session_parse(JabberStream *js, const char *from,
+ JabberIqType type, const char *iq_id,
+ xmlnode *session_node)
+{
+ GoogleSession *session = NULL;
+ GoogleSessionId id;
+
+ xmlnode *desc_node;
+
+ GList *iter = NULL;
+
+ if (type != JABBER_IQ_SET)
+ return;
+
+ id.id = (gchar*)xmlnode_get_attrib(session_node, "id");
+ if (!id.id)
+ return;
+
+ id.initiator = (gchar*)xmlnode_get_attrib(session_node, "initiator");
+ if (!id.initiator)
+ return;
+
+ iter = purple_media_manager_get_media_by_account(
+ purple_media_manager_get(),
+ purple_connection_get_account(js->gc));
+ for (; iter; iter = g_list_delete_link(iter, iter)) {
+ GoogleSession *gsession =
+ purple_media_get_prpl_data(iter->data);
+ if (google_session_id_equal(&(gsession->id), &id)) {
+ session = gsession;
+ break;
+ }
+ }
+ if (iter != NULL) {
+ g_list_free(iter);
+ }
+
+ if (session) {
+ google_session_parse_iq(js, session, session_node, iq_id);
+ return;
+ }
+
+ /* If the session doesn't exist, this has to be an initiate message */
+ if (strcmp(xmlnode_get_attrib(session_node, "type"), "initiate"))
+ return;
+ desc_node = xmlnode_get_child(session_node, "description");
+ if (!desc_node)
+ return;
+ session = g_new0(GoogleSession, 1);
+ session->id.id = g_strdup(id.id);
+ session->id.initiator = g_strdup(id.initiator);
+ session->state = UNINIT;
+ session->js = js;
+ session->remote_jid = g_strdup(session->id.initiator);
+
+ google_session_parse_iq(js, session, session_node, iq_id);
+}
+#endif /* USE_VV */
+
+static void
+jabber_gmail_parse(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer nul)
{
- const char *type = xmlnode_get_attrib(packet, "type");
xmlnode *child;
- xmlnode *message, *sender_node, *subject_node;
- const char *from, *to, *url, *tid;
- char *subject;
+ xmlnode *message;
+ const char *to, *url;
const char *in_str;
char *to_name;
@@ -45,7 +796,7 @@ jabber_gmail_parse(JabberStream *js, xmlnode *packet, gpointer nul)
const char **tos, **froms, **urls;
char **subjects;
- if (strcmp(type, "result"))
+ if (type == JABBER_IQ_ERROR)
return;
child = xmlnode_get_child(packet, "mailbox");
@@ -92,6 +843,10 @@ jabber_gmail_parse(JabberStream *js, xmlnode *packet, gpointer nul)
message= xmlnode_get_child(child, "mail-thread-info");
for (i=0; message; message = xmlnode_get_next_twin(message), i++) {
+ xmlnode *sender_node, *subject_node;
+ const char *from, *tid;
+ char *subject;
+
subject_node = xmlnode_get_child(message, "subject");
sender_node = xmlnode_get_child(message, "senders");
sender_node = xmlnode_get_child(sender_node, "sender");
@@ -145,9 +900,9 @@ jabber_gmail_parse(JabberStream *js, xmlnode *packet, gpointer nul)
}
void
-jabber_gmail_poke(JabberStream *js, xmlnode *packet)
+jabber_gmail_poke(JabberStream *js, const char *from, JabberIqType type,
+ const char *id, xmlnode *new_mail)
{
- const char *type;
xmlnode *query;
JabberIq *iq;
@@ -155,13 +910,17 @@ jabber_gmail_poke(JabberStream *js, xmlnode *packet)
if (!purple_account_get_check_mail(js->gc->account))
return;
- type = xmlnode_get_attrib(packet, "type");
-
-
/* Is this an initial incoming mail notification? If so, send a request for more info */
- if (strcmp(type, "set") || !xmlnode_get_child(packet, "new-mail"))
+ if (type != JABBER_IQ_SET)
return;
+ /* Acknowledge the notification */
+ iq = jabber_iq_new(js, JABBER_IQ_RESULT);
+ if (from)
+ xmlnode_set_attrib(iq->node, "to", from);
+ xmlnode_set_attrib(iq->node, "id", id);
+ jabber_iq_send(iq);
+
purple_debug(PURPLE_DEBUG_MISC, "jabber",
"Got new mail notification. Sending request for more info\n");
@@ -284,6 +1043,7 @@ void jabber_google_roster_add_deny(PurpleConnection *gc, const char *who)
xmlnode *group;
PurpleBuddy *b;
JabberBuddy *jb;
+ const char *balias;
js = (JabberStream*)(gc->proto_data);
@@ -310,13 +1070,14 @@ void jabber_google_roster_add_deny(PurpleConnection *gc, const char *who)
g = purple_buddy_get_group(b);
group = xmlnode_new_child(item, "group");
- xmlnode_insert_data(group, g->name, -1);
+ xmlnode_insert_data(group, purple_group_get_name(g), -1);
buddies = buddies->next;
}
+ balias = purple_buddy_get_local_buddy_alias(b);
xmlnode_set_attrib(item, "jid", who);
- xmlnode_set_attrib(item, "name", b->alias ? b->alias : "");
+ xmlnode_set_attrib(item, "name", balias ? balias : "");
xmlnode_set_attrib(item, "gr:t", "B");
xmlnode_set_attrib(query, "xmlns:gr", "google:roster");
xmlnode_set_attrib(query, "gr:ext", "2");
@@ -349,6 +1110,7 @@ void jabber_google_roster_rem_deny(PurpleConnection *gc, const char *who)
xmlnode *item;
xmlnode *group;
PurpleBuddy *b;
+ const char *balias;
g_return_if_fail(gc != NULL);
g_return_if_fail(who != NULL);
@@ -358,7 +1120,7 @@ void jabber_google_roster_rem_deny(PurpleConnection *gc, const char *who)
if (!js || !js->server_caps & JABBER_CAP_GOOGLE_ROSTER)
return;
- buddies = purple_find_buddies(js->gc->account, who);
+ buddies = purple_find_buddies(purple_connection_get_account(js->gc), who);
if(!buddies)
return;
@@ -376,13 +1138,14 @@ void jabber_google_roster_rem_deny(PurpleConnection *gc, const char *who)
g = purple_buddy_get_group(b);
group = xmlnode_new_child(item, "group");
- xmlnode_insert_data(group, g->name, -1);
+ xmlnode_insert_data(group, purple_group_get_name(g), -1);
buddies = buddies->next;
}
+ balias = purple_buddy_get_local_buddy_alias(b);
xmlnode_set_attrib(item, "jid", who);
- xmlnode_set_attrib(item, "name", b->alias ? b->alias : "");
+ xmlnode_set_attrib(item, "name", balias ? balias : "");
xmlnode_set_attrib(query, "xmlns:gr", "google:roster");
xmlnode_set_attrib(query, "gr:ext", "2");
@@ -526,3 +1289,139 @@ char *jabber_google_presence_outgoing(PurpleStatus *tune)
const char *attr = purple_status_get_attr_string(tune, PURPLE_TUNE_TITLE);
return attr ? g_strdup_printf("♫ %s", attr) : g_strdup("");
}
+
+static void
+jabber_google_stun_lookup_cb(GSList *hosts, gpointer data,
+ const char *error_message)
+{
+ JabberStream *js = (JabberStream *) data;
+
+ if (error_message) {
+ purple_debug_error("jabber", "Google STUN lookup failed: %s\n",
+ error_message);
+ g_slist_free(hosts);
+ return;
+ }
+
+ if (hosts && g_slist_next(hosts)) {
+ struct sockaddr *addr = g_slist_next(hosts)->data;
+ char dst[INET6_ADDRSTRLEN];
+ int port;
+
+ if (addr->sa_family == AF_INET6) {
+ inet_ntop(addr->sa_family, &((struct sockaddr_in6 *) addr)->sin6_addr,
+ dst, sizeof(dst));
+ port = ntohs(((struct sockaddr_in6 *) addr)->sin6_port);
+ } else {
+ inet_ntop(addr->sa_family, &((struct sockaddr_in *) addr)->sin_addr,
+ dst, sizeof(dst));
+ port = ntohs(((struct sockaddr_in *) addr)->sin_port);
+ }
+
+ if (js) {
+ if (js->stun_ip) {
+ g_free(js->stun_ip);
+ }
+ js->stun_ip = g_strdup(dst);
+ purple_debug_info("jabber", "set Google STUN IP address: %s\n", dst);
+ js->stun_port = port;
+ purple_debug_info("jabber", "set Google STUN port: %d\n", port);
+ purple_debug_info("jabber", "set Google STUN port: %d\n", port);
+ /* unmark ongoing query */
+ js->stun_query = NULL;
+ }
+ }
+
+ while (hosts != NULL) {
+ hosts = g_slist_delete_link(hosts, hosts);
+ /* Free the address */
+ g_free(hosts->data);
+ hosts = g_slist_delete_link(hosts, hosts);
+ }
+}
+
+static void
+jabber_google_jingle_info_common(JabberStream *js, const char *from,
+ JabberIqType type, xmlnode *query)
+{
+ const xmlnode *stun = xmlnode_get_child(query, "stun");
+ gchar *my_bare_jid;
+
+ /*
+ * Make sure that random people aren't sending us STUN servers. Per
+ * http://code.google.com/apis/talk/jep_extensions/jingleinfo.html, these
+ * stanzas are stamped from our bare JID.
+ */
+ if (from) {
+ my_bare_jid = g_strdup_printf("%s@%s", js->user->node, js->user->domain);
+ if (!purple_strequal(from, my_bare_jid)) {
+ purple_debug_warning("jabber", "got google:jingleinfo with invalid from (%s)\n",
+ from);
+ g_free(my_bare_jid);
+ return;
+ }
+
+ g_free(my_bare_jid);
+ }
+
+ if (type == JABBER_IQ_ERROR || type == JABBER_IQ_GET)
+ return;
+
+ purple_debug_info("jabber", "got google:jingleinfo\n");
+
+ if (stun) {
+ xmlnode *server = xmlnode_get_child(stun, "server");
+
+ if (server) {
+ const gchar *host = xmlnode_get_attrib(server, "host");
+ const gchar *udp = xmlnode_get_attrib(server, "udp");
+
+ if (host && udp) {
+ int port = atoi(udp);
+ /* if there, would already be an ongoing query,
+ cancel it */
+ if (js->stun_query)
+ purple_dnsquery_destroy(js->stun_query);
+
+ js->stun_query = purple_dnsquery_a(host, port,
+ jabber_google_stun_lookup_cb, js);
+ }
+ }
+ }
+ /* should perhaps handle relays later on, or maybe wait until
+ Google supports a common standard... */
+}
+
+static void
+jabber_google_jingle_info_cb(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data)
+{
+ xmlnode *query = xmlnode_get_child_with_namespace(packet, "query",
+ GOOGLE_JINGLE_INFO_NAMESPACE);
+
+ if (query)
+ jabber_google_jingle_info_common(js, from, type, query);
+ else
+ purple_debug_warning("jabber", "Got invalid google:jingleinfo\n");
+}
+
+void
+jabber_google_handle_jingle_info(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *child)
+{
+ jabber_google_jingle_info_common(js, from, type, child);
+}
+
+void
+jabber_google_send_jingle_info(JabberStream *js)
+{
+ JabberIq *jingle_info =
+ jabber_iq_new_query(js, JABBER_IQ_GET, GOOGLE_JINGLE_INFO_NAMESPACE);
+
+ jabber_iq_set_callback(jingle_info, jabber_google_jingle_info_cb,
+ NULL);
+ purple_debug_info("jabber", "sending google:jingleinfo query\n");
+ jabber_iq_send(jingle_info);
+}
diff --git a/libpurple/protocols/jabber/google.h b/libpurple/protocols/jabber/google.h
index c1b6e0d0c2..ae6d21cef5 100644
--- a/libpurple/protocols/jabber/google.h
+++ b/libpurple/protocols/jabber/google.h
@@ -18,16 +18,22 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
*/
-#ifndef _PURPLE_GOOGLE_H_
-#define _PURPLE_GOOGLE_H_
+#ifndef PURPLE_JABBER_GOOGLE_H_
+#define PURPLE_JABBER_GOOGLE_H_
/* This is a place for Google Talk-specific XMPP extensions to live
* such that they don't intermingle with code for the XMPP RFCs and XEPs :) */
#include "jabber.h"
+#include "media.h"
+
+#define GOOGLE_VOICE_CAP "http://www.google.com/xmpp/protocol/voice/v1"
+#define GOOGLE_VIDEO_CAP "http://www.google.com/xmpp/protocol/video/v1"
+#define GOOGLE_JINGLE_INFO_NAMESPACE "google:jingleinfo"
void jabber_gmail_init(JabberStream *js);
-void jabber_gmail_poke(JabberStream *js, xmlnode *node);
+void jabber_gmail_poke(JabberStream *js, const char *from, JabberIqType type,
+ const char *id, xmlnode *new_mail);
void jabber_google_roster_init(JabberStream *js);
void jabber_google_roster_outgoing(JabberStream *js, xmlnode *query, xmlnode *item);
@@ -45,6 +51,12 @@ void jabber_google_roster_rem_deny(PurpleConnection *gc, const char *who);
char *jabber_google_format_to_html(const char *text);
+gboolean jabber_google_session_initiate(JabberStream *js, const gchar *who, PurpleMediaSessionType type);
+void jabber_google_session_parse(JabberStream *js, const char *from, JabberIqType type, const char *iq, xmlnode *session);
+void jabber_google_handle_jingle_info(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *child);
+void jabber_google_send_jingle_info(JabberStream *js);
-#endif /* _PURPLE_GOOGLE_H_ */
+#endif /* PURPLE_JABBER_GOOGLE_H_ */
diff --git a/libpurple/protocols/jabber/ibb.c b/libpurple/protocols/jabber/ibb.c
new file mode 100644
index 0000000000..416f6f7f53
--- /dev/null
+++ b/libpurple/protocols/jabber/ibb.c
@@ -0,0 +1,521 @@
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor Boston, MA 02110-1301, USA
+ */
+
+#include "internal.h"
+#include "ibb.h"
+#include "debug.h"
+#include "xmlnode.h"
+
+#define JABBER_IBB_SESSION_DEFAULT_BLOCK_SIZE 4096
+
+static GHashTable *jabber_ibb_sessions = NULL;
+static GList *open_handlers = NULL;
+
+JabberIBBSession *
+jabber_ibb_session_create(JabberStream *js, const gchar *sid, const gchar *who,
+ gpointer user_data)
+{
+ JabberIBBSession *sess = g_new0(JabberIBBSession, 1);
+ sess->js = js;
+ if (sid) {
+ sess->sid = g_strdup(sid);
+ } else {
+ sess->sid = jabber_get_next_id(js);
+ }
+ sess->who = g_strdup(who);
+ sess->block_size = JABBER_IBB_SESSION_DEFAULT_BLOCK_SIZE;
+ sess->state = JABBER_IBB_SESSION_NOT_OPENED;
+ sess->user_data = user_data;
+
+ g_hash_table_insert(jabber_ibb_sessions, sess->sid, sess);
+
+ return sess;
+}
+
+JabberIBBSession *
+jabber_ibb_session_create_from_xmlnode(JabberStream *js, const char *from,
+ const char *id, xmlnode *open, gpointer user_data)
+{
+ JabberIBBSession *sess = NULL;
+ const gchar *sid = xmlnode_get_attrib(open, "sid");
+ const gchar *block_size = xmlnode_get_attrib(open, "block-size");
+
+ if (!open) {
+ return NULL;
+ }
+
+ if (!sid || !block_size) {
+ purple_debug_error("jabber",
+ "IBB session open tag requires sid and block-size attributes\n");
+ g_free(sess);
+ return NULL;
+ }
+
+ sess = jabber_ibb_session_create(js, sid, from, user_data);
+ sess->id = g_strdup(id);
+ sess->block_size = atoi(block_size);
+ /* if we create a session from an incoming <open/> request, it means the
+ session is immediatly open... */
+ sess->state = JABBER_IBB_SESSION_OPENED;
+
+ return sess;
+}
+
+void
+jabber_ibb_session_destroy(JabberIBBSession *sess)
+{
+ purple_debug_info("jabber", "IBB: destroying session %p %s\n", sess,
+ sess->sid);
+
+ if (jabber_ibb_session_get_state(sess) == JABBER_IBB_SESSION_OPENED) {
+ jabber_ibb_session_close(sess);
+ }
+
+ if (sess->last_iq_id) {
+ purple_debug_info("jabber", "IBB: removing callback for <iq/> %s\n",
+ sess->last_iq_id);
+ jabber_iq_remove_callback_by_id(jabber_ibb_session_get_js(sess),
+ sess->last_iq_id);
+ g_free(sess->last_iq_id);
+ sess->last_iq_id = NULL;
+ }
+
+ g_hash_table_remove(jabber_ibb_sessions, sess->sid);
+ g_free(sess->id);
+ g_free(sess->sid);
+ g_free(sess->who);
+ g_free(sess);
+}
+
+const gchar *
+jabber_ibb_session_get_sid(const JabberIBBSession *sess)
+{
+ return sess->sid;
+}
+
+JabberStream *
+jabber_ibb_session_get_js(JabberIBBSession *sess)
+{
+ return sess->js;
+}
+
+const gchar *
+jabber_ibb_session_get_who(const JabberIBBSession *sess)
+{
+ return sess->who;
+}
+
+guint16
+jabber_ibb_session_get_send_seq(const JabberIBBSession *sess)
+{
+ return sess->send_seq;
+}
+
+guint16
+jabber_ibb_session_get_recv_seq(const JabberIBBSession *sess)
+{
+ return sess->recv_seq;
+}
+
+JabberIBBSessionState
+jabber_ibb_session_get_state(const JabberIBBSession *sess)
+{
+ return sess->state;
+}
+
+gsize
+jabber_ibb_session_get_block_size(const JabberIBBSession *sess)
+{
+ return sess->block_size;
+}
+
+void
+jabber_ibb_session_set_block_size(JabberIBBSession *sess, gsize size)
+{
+ if (jabber_ibb_session_get_state(sess) == JABBER_IBB_SESSION_NOT_OPENED) {
+ sess->block_size = size;
+ } else {
+ purple_debug_error("jabber",
+ "Can't set block size on an open IBB session\n");
+ }
+}
+
+gpointer
+jabber_ibb_session_get_user_data(JabberIBBSession *sess)
+{
+ return sess->user_data;
+}
+
+void
+jabber_ibb_session_set_opened_callback(JabberIBBSession *sess,
+ JabberIBBOpenedCallback *cb)
+{
+ sess->opened_cb = cb;
+}
+
+void
+jabber_ibb_session_set_data_sent_callback(JabberIBBSession *sess,
+ JabberIBBSentCallback *cb)
+{
+ sess->data_sent_cb = cb;
+}
+
+void
+jabber_ibb_session_set_closed_callback(JabberIBBSession *sess,
+ JabberIBBClosedCallback *cb)
+{
+ sess->closed_cb = cb;
+}
+
+void
+jabber_ibb_session_set_data_received_callback(JabberIBBSession *sess,
+ JabberIBBDataCallback *cb)
+{
+ sess->data_received_cb = cb;
+}
+
+void
+jabber_ibb_session_set_error_callback(JabberIBBSession *sess,
+ JabberIBBErrorCallback *cb)
+{
+ sess->error_cb = cb;
+}
+
+static void
+jabber_ibb_session_opened_cb(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data)
+{
+ JabberIBBSession *sess = (JabberIBBSession *) data;
+
+ if (type == JABBER_IQ_ERROR) {
+ sess->state = JABBER_IBB_SESSION_ERROR;
+ } else {
+ sess->state = JABBER_IBB_SESSION_OPENED;
+ }
+
+ if (sess->opened_cb) {
+ sess->opened_cb(sess);
+ }
+}
+
+void
+jabber_ibb_session_open(JabberIBBSession *sess)
+{
+ if (jabber_ibb_session_get_state(sess) != JABBER_IBB_SESSION_NOT_OPENED) {
+ purple_debug_error("jabber",
+ "jabber_ibb_session called on an already open stream\n");
+ } else {
+ JabberIq *set = jabber_iq_new(sess->js, JABBER_IQ_SET);
+ xmlnode *open = xmlnode_new("open");
+ gchar block_size[10];
+
+ xmlnode_set_attrib(set->node, "to", jabber_ibb_session_get_who(sess));
+ xmlnode_set_namespace(open, XEP_0047_NAMESPACE);
+ xmlnode_set_attrib(open, "sid", jabber_ibb_session_get_sid(sess));
+ g_snprintf(block_size, sizeof(block_size), "%" G_GSIZE_FORMAT,
+ jabber_ibb_session_get_block_size(sess));
+ xmlnode_set_attrib(open, "block-size", block_size);
+ xmlnode_insert_child(set->node, open);
+
+ jabber_iq_set_callback(set, jabber_ibb_session_opened_cb, sess);
+
+ jabber_iq_send(set);
+ }
+}
+
+void
+jabber_ibb_session_close(JabberIBBSession *sess)
+{
+ JabberIBBSessionState state = jabber_ibb_session_get_state(sess);
+
+ if (state != JABBER_IBB_SESSION_OPENED && state != JABBER_IBB_SESSION_ERROR) {
+ purple_debug_error("jabber",
+ "jabber_ibb_session_close called on a session that has not been"
+ "opened\n");
+ } else {
+ JabberIq *set = jabber_iq_new(jabber_ibb_session_get_js(sess),
+ JABBER_IQ_SET);
+ xmlnode *close = xmlnode_new("close");
+
+ xmlnode_set_attrib(set->node, "to", jabber_ibb_session_get_who(sess));
+ xmlnode_set_namespace(close, XEP_0047_NAMESPACE);
+ xmlnode_set_attrib(close, "sid", jabber_ibb_session_get_sid(sess));
+ xmlnode_insert_child(set->node, close);
+ jabber_iq_send(set);
+ sess->state = JABBER_IBB_SESSION_CLOSED;
+ }
+}
+
+void
+jabber_ibb_session_accept(JabberIBBSession *sess)
+{
+ JabberIq *result = jabber_iq_new(jabber_ibb_session_get_js(sess),
+ JABBER_IQ_RESULT);
+
+ xmlnode_set_attrib(result->node, "to", jabber_ibb_session_get_who(sess));
+ jabber_iq_set_id(result, sess->id);
+ jabber_iq_send(result);
+ sess->state = JABBER_IBB_SESSION_OPENED;
+}
+
+static void
+jabber_ibb_session_send_acknowledge_cb(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data)
+{
+ JabberIBBSession *sess = (JabberIBBSession *) data;
+
+ if (sess) {
+ /* reset callback */
+ if (sess->last_iq_id) {
+ g_free(sess->last_iq_id);
+ sess->last_iq_id = NULL;
+ }
+
+ if (type == JABBER_IQ_ERROR) {
+ jabber_ibb_session_close(sess);
+ sess->state = JABBER_IBB_SESSION_ERROR;
+
+ if (sess->error_cb) {
+ sess->error_cb(sess);
+ }
+ } else {
+ if (sess->data_sent_cb) {
+ sess->data_sent_cb(sess);
+ }
+ }
+ } else {
+ /* the session has gone away, it was probably cancelled */
+ purple_debug_info("jabber",
+ "got response from send data, but IBB session is no longer active\n");
+ }
+}
+
+void
+jabber_ibb_session_send_data(JabberIBBSession *sess, gconstpointer data,
+ gsize size)
+{
+ JabberIBBSessionState state = jabber_ibb_session_get_state(sess);
+
+ purple_debug_info("jabber", "sending data block of %" G_GSIZE_FORMAT " bytes on IBB stream\n",
+ size);
+
+ if (state != JABBER_IBB_SESSION_OPENED) {
+ purple_debug_error("jabber",
+ "trying to send data on a non-open IBB session\n");
+ } else if (size > jabber_ibb_session_get_block_size(sess)) {
+ purple_debug_error("jabber",
+ "trying to send a too large packet in the IBB session\n");
+ } else {
+ JabberIq *set = jabber_iq_new(jabber_ibb_session_get_js(sess),
+ JABBER_IQ_SET);
+ xmlnode *data_element = xmlnode_new("data");
+ char *base64 = purple_base64_encode(data, size);
+ char seq[10];
+ g_snprintf(seq, sizeof(seq), "%u", jabber_ibb_session_get_send_seq(sess));
+
+ xmlnode_set_attrib(set->node, "to", jabber_ibb_session_get_who(sess));
+ xmlnode_set_namespace(data_element, XEP_0047_NAMESPACE);
+ xmlnode_set_attrib(data_element, "sid", jabber_ibb_session_get_sid(sess));
+ xmlnode_set_attrib(data_element, "seq", seq);
+ xmlnode_insert_data(data_element, base64, -1);
+
+ xmlnode_insert_child(set->node, data_element);
+
+ purple_debug_info("jabber",
+ "IBB: setting send <iq/> callback for session %p %s\n", sess,
+ sess->sid);
+ jabber_iq_set_callback(set, jabber_ibb_session_send_acknowledge_cb, sess);
+ sess->last_iq_id = g_strdup(xmlnode_get_attrib(set->node, "id"));
+ purple_debug_info("jabber", "IBB: set sess->last_iq_id: %s\n",
+ sess->last_iq_id);
+ jabber_iq_send(set);
+
+ g_free(base64);
+ (sess->send_seq)++;
+ }
+}
+
+static void
+jabber_ibb_send_error_response(JabberStream *js, const char *to, const char *id)
+{
+ JabberIq *result = jabber_iq_new(js, JABBER_IQ_ERROR);
+ xmlnode *error = xmlnode_new("error");
+ xmlnode *item_not_found = xmlnode_new("item-not-found");
+
+ xmlnode_set_namespace(item_not_found,
+ "urn:ietf:params:xml:ns:xmpp-stanzas");
+ xmlnode_set_attrib(error, "code", "440");
+ xmlnode_set_attrib(error, "type", "cancel");
+ jabber_iq_set_id(result, id);
+ xmlnode_set_attrib(result->node, "to", to);
+ xmlnode_insert_child(error, item_not_found);
+ xmlnode_insert_child(result->node, error);
+
+ jabber_iq_send(result);
+}
+
+void
+jabber_ibb_parse(JabberStream *js, const char *who, JabberIqType type,
+ const char *id, xmlnode *child)
+{
+ const char *name = child->name;
+ gboolean data = g_str_equal(name, "data");
+ gboolean close = g_str_equal(name, "close");
+ gboolean open = g_str_equal(name, "open");
+ const gchar *sid = (data || close) ?
+ xmlnode_get_attrib(child, "sid") : NULL;
+ JabberIBBSession *sess =
+ sid ? g_hash_table_lookup(jabber_ibb_sessions, sid) : NULL;
+
+ if (sess) {
+
+ if (strcmp(who, jabber_ibb_session_get_who(sess)) != 0) {
+ /* the iq comes from a different JID than the remote JID of the
+ session, ignore it */
+ purple_debug_error("jabber",
+ "Got IBB iq from wrong JID, ignoring\n");
+ } else if (data) {
+ const gchar *seq_attr = xmlnode_get_attrib(child, "seq");
+ guint16 seq = (seq_attr ? atoi(seq_attr) : 0);
+
+ /* reject the data, and set the session in error if we get an
+ out-of-order packet */
+ if (seq_attr && seq == jabber_ibb_session_get_recv_seq(sess)) {
+ /* sequence # is the expected... */
+ JabberIq *result = jabber_iq_new(js, JABBER_IQ_RESULT);
+
+ jabber_iq_set_id(result, id);
+ xmlnode_set_attrib(result->node, "to", who);
+
+ if (sess->data_received_cb) {
+ gchar *base64 = xmlnode_get_data(child);
+ gsize size;
+ gpointer rawdata = purple_base64_decode(base64, &size);
+
+ g_free(base64);
+
+ if (rawdata) {
+ purple_debug_info("jabber",
+ "got %" G_GSIZE_FORMAT " bytes of data on IBB stream\n",
+ size);
+ if (size > jabber_ibb_session_get_block_size(sess)) {
+ purple_debug_error("jabber",
+ "IBB: received a too large packet\n");
+ if (sess->error_cb)
+ sess->error_cb(sess);
+ g_free(rawdata);
+ return;
+ } else {
+ purple_debug_info("jabber",
+ "calling IBB callback for received data\n");
+ sess->data_received_cb(sess, rawdata, size);
+ }
+ g_free(rawdata);
+ } else {
+ purple_debug_error("jabber",
+ "IBB: invalid BASE64 data received\n");
+ if (sess->error_cb)
+ sess->error_cb(sess);
+ return;
+
+ }
+ }
+
+ (sess->recv_seq)++;
+ jabber_iq_send(result);
+
+ } else {
+ purple_debug_error("jabber",
+ "Received an out-of-order/invalid IBB packet\n");
+ sess->state = JABBER_IBB_SESSION_ERROR;
+
+ if (sess->error_cb) {
+ sess->error_cb(sess);
+ }
+ }
+ } else if (close) {
+ sess->state = JABBER_IBB_SESSION_CLOSED;
+ purple_debug_info("jabber", "IBB: received close\n");
+
+ if (sess->closed_cb) {
+ purple_debug_info("jabber", "IBB: calling closed handler\n");
+ sess->closed_cb(sess);
+ }
+
+ } else {
+ /* this should never happen */
+ purple_debug_error("jabber", "Received bogus iq for IBB session\n");
+ }
+ } else if (open) {
+ JabberIq *result;
+ const GList *iterator;
+
+ /* run all open handlers registered until one returns true */
+ for (iterator = open_handlers ; iterator ;
+ iterator = g_list_next(iterator)) {
+ JabberIBBOpenHandler *handler = iterator->data;
+
+ if (handler(js, who, id, child)) {
+ result = jabber_iq_new(js, JABBER_IQ_RESULT);
+ xmlnode_set_attrib(result->node, "to", who);
+ jabber_iq_set_id(result, id);
+ jabber_iq_send(result);
+ return;
+ }
+ }
+ /* no open callback returned success, reject */
+ jabber_ibb_send_error_response(js, who, id);
+ } else {
+ /* send error reply */
+ jabber_ibb_send_error_response(js, who, id);
+ }
+}
+
+void
+jabber_ibb_register_open_handler(JabberIBBOpenHandler *cb)
+{
+ open_handlers = g_list_append(open_handlers, cb);
+}
+
+void
+jabber_ibb_unregister_open_handler(JabberIBBOpenHandler *cb)
+{
+ open_handlers = g_list_remove(open_handlers, cb);
+}
+
+void
+jabber_ibb_init(void)
+{
+ jabber_ibb_sessions = g_hash_table_new(g_str_hash, g_str_equal);
+
+ jabber_add_feature(XEP_0047_NAMESPACE, NULL);
+
+ jabber_iq_register_handler("close", XEP_0047_NAMESPACE, jabber_ibb_parse);
+ jabber_iq_register_handler("data", XEP_0047_NAMESPACE, jabber_ibb_parse);
+ jabber_iq_register_handler("open", XEP_0047_NAMESPACE, jabber_ibb_parse);
+}
+
+void
+jabber_ibb_uninit(void)
+{
+ g_hash_table_destroy(jabber_ibb_sessions);
+ g_list_free(open_handlers);
+ jabber_ibb_sessions = NULL;
+ open_handlers = NULL;
+}
+
diff --git a/libpurple/protocols/jabber/ibb.h b/libpurple/protocols/jabber/ibb.h
new file mode 100644
index 0000000000..54da63a20f
--- /dev/null
+++ b/libpurple/protocols/jabber/ibb.h
@@ -0,0 +1,121 @@
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor Boston, MA 02110-1301, USA
+ */
+
+#ifndef PURPLE_JABBER_IBB_H_
+#define PURPLE_JABBER_IBB_H_
+
+#include "jabber.h"
+#include "iq.h"
+
+#define XEP_0047_NAMESPACE "http://jabber.org/protocol/ibb"
+
+typedef struct _JabberIBBSession JabberIBBSession;
+
+typedef void
+(JabberIBBDataCallback)(JabberIBBSession *, const gpointer data, gsize size);
+
+typedef void (JabberIBBOpenedCallback)(JabberIBBSession *);
+typedef void (JabberIBBClosedCallback)(JabberIBBSession *);
+typedef void (JabberIBBErrorCallback)(JabberIBBSession *);
+typedef void (JabberIBBSentCallback)(JabberIBBSession *);
+
+typedef gboolean (JabberIBBOpenHandler)(JabberStream *js, const char *from,
+ const char *id, xmlnode *open);
+
+typedef enum {
+ JABBER_IBB_SESSION_NOT_OPENED,
+ JABBER_IBB_SESSION_OPENED,
+ JABBER_IBB_SESSION_CLOSED,
+ JABBER_IBB_SESSION_ERROR
+} JabberIBBSessionState;
+
+struct _JabberIBBSession {
+ JabberStream *js;
+ gchar *who;
+ gchar *sid;
+ gchar *id;
+ guint16 send_seq;
+ guint16 recv_seq;
+ gsize block_size;
+
+ /* session state */
+ JabberIBBSessionState state;
+
+ /* user data (f.ex. a handle to a PurpleXfer) */
+ gpointer user_data;
+
+ /* callbacks */
+ JabberIBBOpenedCallback *opened_cb;
+ JabberIBBSentCallback *data_sent_cb;
+ JabberIBBClosedCallback *closed_cb;
+ /* callback for receiving data */
+ JabberIBBDataCallback *data_received_cb;
+ JabberIBBErrorCallback *error_cb;
+
+ /* store the last sent IQ (to permit cancel of callback) */
+ gchar *last_iq_id;
+};
+
+JabberIBBSession *jabber_ibb_session_create(JabberStream *js, const gchar *sid,
+ const gchar *who, gpointer user_data);
+JabberIBBSession *jabber_ibb_session_create_from_xmlnode(JabberStream *js,
+ const gchar *from, const gchar *id, xmlnode *open, gpointer user_data);
+
+void jabber_ibb_session_destroy(JabberIBBSession *sess);
+
+void jabber_ibb_session_set_opened_callback(JabberIBBSession *sess,
+ JabberIBBOpenedCallback *cb);
+void jabber_ibb_session_set_data_sent_callback(JabberIBBSession *sess,
+ JabberIBBSentCallback *cb);
+void jabber_ibb_session_set_closed_callback(JabberIBBSession *sess,
+ JabberIBBClosedCallback *cb);
+void jabber_ibb_session_set_data_received_callback(JabberIBBSession *sess,
+ JabberIBBDataCallback *cb);
+void jabber_ibb_session_set_error_callback(JabberIBBSession *sess,
+ JabberIBBErrorCallback *cb);
+
+void jabber_ibb_session_open(JabberIBBSession *sess);
+void jabber_ibb_session_close(JabberIBBSession *sess);
+void jabber_ibb_session_accept(JabberIBBSession *sess);
+void jabber_ibb_session_send_data(JabberIBBSession *sess, gconstpointer data,
+ gsize size);
+
+const gchar *jabber_ibb_session_get_sid(const JabberIBBSession *sess);
+JabberStream *jabber_ibb_session_get_js(JabberIBBSession *sess);
+const gchar *jabber_ibb_session_get_who(const JabberIBBSession *sess);
+
+guint16 jabber_ibb_session_get_send_seq(const JabberIBBSession *sess);
+guint16 jabber_ibb_session_get_recv_seq(const JabberIBBSession *sess);
+
+JabberIBBSessionState jabber_ibb_session_get_state(const JabberIBBSession *sess);
+
+gsize jabber_ibb_session_get_block_size(const JabberIBBSession *sess);
+void jabber_ibb_session_set_block_size(JabberIBBSession *sess, gsize size);
+
+gpointer jabber_ibb_session_get_user_data(JabberIBBSession *sess);
+
+/* handle incoming packet */
+void jabber_ibb_parse(JabberStream *js, const char *who, JabberIqType type,
+ const char *id, xmlnode *child);
+
+/* add a handler for open session */
+void jabber_ibb_register_open_handler(JabberIBBOpenHandler *cb);
+void jabber_ibb_unregister_open_handler(JabberIBBOpenHandler *cb);
+
+void jabber_ibb_init(void);
+void jabber_ibb_uninit(void);
+
+#endif /* PURPLE_JABBER_IBB_H_ */
diff --git a/libpurple/protocols/jabber/iq.c b/libpurple/protocols/jabber/iq.c
index 11442ed5a5..c4717de673 100644
--- a/libpurple/protocols/jabber/iq.c
+++ b/libpurple/protocols/jabber/iq.c
@@ -28,19 +28,21 @@
#include "disco.h"
#include "google.h"
#include "iq.h"
+#include "jingle/jingle.h"
#include "oob.h"
#include "roster.h"
#include "si.h"
#include "ping.h"
#include "adhoccommands.h"
#include "data.h"
+#include "ibb.h"
#ifdef _WIN32
#include "utsname.h"
#endif
GHashTable *iq_handlers = NULL;
-
+GHashTable *signal_iq_handlers = NULL;
JabberIq *jabber_iq_new(JabberStream *js, JabberIqType type)
{
@@ -142,23 +144,19 @@ void jabber_iq_free(JabberIq *iq)
g_free(iq);
}
-static void jabber_iq_last_parse(JabberStream *js, xmlnode *packet)
+static void jabber_iq_last_parse(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet)
{
JabberIq *iq;
- const char *type;
- const char *from;
- const char *id;
xmlnode *query;
char *idle_time;
- type = xmlnode_get_attrib(packet, "type");
- from = xmlnode_get_attrib(packet, "from");
- id = xmlnode_get_attrib(packet, "id");
-
- if(type && !strcmp(type, "get")) {
+ if(type == JABBER_IQ_GET) {
iq = jabber_iq_new_query(js, JABBER_IQ_RESULT, "jabber:iq:last");
jabber_iq_set_id(iq, id);
- xmlnode_set_attrib(iq->node, "to", from);
+ if (from)
+ xmlnode_set_attrib(iq->node, "to", from);
query = xmlnode_get_child(iq->node, "query");
@@ -170,88 +168,67 @@ static void jabber_iq_last_parse(JabberStream *js, xmlnode *packet)
}
}
-static void jabber_iq_time_parse(JabberStream *js, xmlnode *packet)
+static void jabber_iq_time_parse(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *child)
{
- const char *type, *from, *id, *xmlns;
+ const char *xmlns;
JabberIq *iq;
- xmlnode *query;
time_t now_t;
+ struct tm now_local;
+ struct tm now_utc;
struct tm *now;
time(&now_t);
now = localtime(&now_t);
+ memcpy(&now_local, now, sizeof(struct tm));
+ now = gmtime(&now_t);
+ memcpy(&now_utc, now, sizeof(struct tm));
- type = xmlnode_get_attrib(packet, "type");
- from = xmlnode_get_attrib(packet, "from");
- id = xmlnode_get_attrib(packet, "id");
-
- /* we're gonna throw this away in a moment, but we need it
- * to get the xmlns, so we can figure out if this is
- * jabber:iq:time or urn:xmpp:time */
- query = xmlnode_get_child(packet, "query");
- xmlns = xmlnode_get_namespace(query);
+ xmlns = xmlnode_get_namespace(child);
- if(type && !strcmp(type, "get")) {
+ if(type == JABBER_IQ_GET) {
xmlnode *utc;
- const char *date;
+ const char *date, *tz, *display;
- iq = jabber_iq_new_query(js, JABBER_IQ_RESULT, xmlns);
+ iq = jabber_iq_new(js, JABBER_IQ_RESULT);
jabber_iq_set_id(iq, id);
- xmlnode_set_attrib(iq->node, "to", from);
-
- query = xmlnode_get_child(iq->node, "query");
+ if (from)
+ xmlnode_set_attrib(iq->node, "to", from);
- date = purple_utf8_strftime("%Y%m%dT%T", now);
- utc = xmlnode_new_child(query, "utc");
- xmlnode_insert_data(utc, date, -1);
+ child = xmlnode_new_child(iq->node, child->name);
+ xmlnode_set_namespace(child, xmlns);
+ utc = xmlnode_new_child(child, "utc");
if(!strcmp("urn:xmpp:time", xmlns)) {
- xmlnode_insert_data(utc, "Z", 1); /* of COURSE the thing that is the same is different */
+ tz = purple_get_tzoff_str(&now_local, TRUE);
+ xmlnode_insert_data(xmlnode_new_child(child, "tzo"), tz, -1);
- date = purple_get_tzoff_str(now, TRUE);
- xmlnode_insert_data(xmlnode_new_child(query, "tzo"), date, -1);
+ date = purple_utf8_strftime("%FT%TZ", &now_utc);
+ xmlnode_insert_data(utc, date, -1);
} else { /* jabber:iq:time */
- date = purple_utf8_strftime("%Z", now);
- xmlnode_insert_data(xmlnode_new_child(query, "tz"), date, -1);
-
- date = purple_utf8_strftime("%d %b %Y %T", now);
- xmlnode_insert_data(xmlnode_new_child(query, "display"), date, -1);
- }
-
- jabber_iq_send(iq);
- }
-}
+ tz = purple_utf8_strftime("%Z", &now_local);
+ xmlnode_insert_data(xmlnode_new_child(child, "tz"), tz, -1);
-static void urn_xmpp_ping_parse(JabberStream *js, xmlnode *packet)
-{
- const char *type, *id, *from;
- JabberIq *iq;
-
- type = xmlnode_get_attrib(packet, "type");
- from = xmlnode_get_attrib(packet, "from");
- id = xmlnode_get_attrib(packet, "id");
+ date = purple_utf8_strftime("%Y%m%dT%T", &now_utc);
+ xmlnode_insert_data(utc, date, -1);
- if(type && !strcmp(type, "get")) {
- iq = jabber_iq_new_query(js, JABBER_IQ_RESULT, "urn:xmpp:ping");
-
- jabber_iq_set_id(iq, id);
- xmlnode_set_attrib(iq->node, "to", from);
+ display = purple_utf8_strftime("%d %b %Y %T", &now_local);
+ xmlnode_insert_data(xmlnode_new_child(child, "display"), display, -1);
+ }
jabber_iq_send(iq);
- } else {
- /* XXX: error */
}
}
-static void jabber_iq_version_parse(JabberStream *js, xmlnode *packet)
+static void jabber_iq_version_parse(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet)
{
JabberIq *iq;
- const char *type, *from, *id;
xmlnode *query;
- type = xmlnode_get_attrib(packet, "type");
-
- if(type && !strcmp(type, "get")) {
+ if(type == JABBER_IQ_GET) {
GHashTable *ui_info;
const char *ui_name = NULL, *ui_version = NULL;
#if 0
@@ -264,11 +241,10 @@ static void jabber_iq_version_parse(JabberStream *js, xmlnode *packet)
osinfo.machine);
}
#endif
- from = xmlnode_get_attrib(packet, "from");
- id = xmlnode_get_attrib(packet, "id");
iq = jabber_iq_new_query(js, JABBER_IQ_RESULT, "jabber:iq:version");
- xmlnode_set_attrib(iq->node, "to", from);
+ if (from)
+ xmlnode_set_attrib(iq->node, "to", from);
jabber_iq_set_id(iq, id);
query = xmlnode_get_child(iq->node, "query");
@@ -309,33 +285,62 @@ void jabber_iq_remove_callback_by_id(JabberStream *js, const char *id)
void jabber_iq_parse(JabberStream *js, xmlnode *packet)
{
JabberCallbackData *jcd;
- xmlnode *query, *error, *x;
+ xmlnode *child, *error, *x;
const char *xmlns;
- const char *type, *id, *from;
- JabberIqHandler *jih;
+ const char *iq_type, *id, *from;
+ JabberIqType type = JABBER_IQ_NONE;
+ gboolean signal_return;
- query = xmlnode_get_child(packet, "query");
- type = xmlnode_get_attrib(packet, "type");
from = xmlnode_get_attrib(packet, "from");
id = xmlnode_get_attrib(packet, "id");
+ iq_type = xmlnode_get_attrib(packet, "type");
+
+ signal_return = GPOINTER_TO_INT(purple_signal_emit_return_1(jabber_plugin,
+ "jabber-receiving-iq", js->gc, iq_type, id, from, packet));
+ if (signal_return)
+ return;
- if(type == NULL || !(!strcmp(type, "get") || !strcmp(type, "set")
- || !strcmp(type, "result") || !strcmp(type, "error"))) {
+ /*
+ * child will be either the first tag child or NULL if there is no child.
+ * Historically, we used just the 'query' subchild, but newer XEPs use
+ * differently named children. Grabbing the first child is (for the time
+ * being) sufficient.
+ */
+ for (child = packet->child; child; child = child->next) {
+ if (child->type == XMLNODE_TYPE_TAG)
+ break;
+ }
+
+ if (iq_type) {
+ if (!strcmp(iq_type, "get"))
+ type = JABBER_IQ_GET;
+ else if (!strcmp(iq_type, "set"))
+ type = JABBER_IQ_SET;
+ else if (!strcmp(iq_type, "result"))
+ type = JABBER_IQ_RESULT;
+ else if (!strcmp(iq_type, "error"))
+ type = JABBER_IQ_ERROR;
+ }
+
+ if (type == JABBER_IQ_NONE) {
purple_debug_error("jabber", "IQ with invalid type ('%s') - ignoring.\n",
- type ? type : "(null)");
+ iq_type ? iq_type : "(null)");
return;
}
/* All IQs must have an ID, so send an error for a set/get that doesn't */
if(!id || !*id) {
- if(!strcmp(type, "set") || !strcmp(type, "get")) {
+ if(type == JABBER_IQ_SET || type == JABBER_IQ_GET) {
JabberIq *iq = jabber_iq_new(js, JABBER_IQ_ERROR);
xmlnode_free(iq->node);
iq->node = xmlnode_copy(packet);
- xmlnode_set_attrib(iq->node, "to", from);
- xmlnode_remove_attrib(iq->node, "from");
+ if (from) {
+ xmlnode_set_attrib(iq->node, "to", from);
+ xmlnode_remove_attrib(iq->node, "from");
+ }
+
xmlnode_set_attrib(iq->node, "type", "error");
/* This id is clearly not useful, but we must put something there for a valid stanza */
iq->id = jabber_get_next_id(js);
@@ -347,60 +352,57 @@ void jabber_iq_parse(JabberStream *js, xmlnode *packet)
jabber_iq_send(iq);
} else
- purple_debug_error("jabber", "IQ of type '%s' missing id - ignoring.\n", type);
+ purple_debug_error("jabber", "IQ of type '%s' missing id - ignoring.\n",
+ iq_type);
return;
}
/* First, lets see if a special callback got registered */
-
- if(!strcmp(type, "result") || !strcmp(type, "error")) {
- if(id && *id && (jcd = g_hash_table_lookup(js->iq_callbacks, id))) {
- jcd->callback(js, packet, jcd->data);
+ if(type == JABBER_IQ_RESULT || type == JABBER_IQ_ERROR) {
+ if((jcd = g_hash_table_lookup(js->iq_callbacks, id))) {
+ jcd->callback(js, from, type, id, packet, jcd->data);
jabber_iq_remove_callback_by_id(js, id);
return;
}
}
- /* Apparently not, so lets see if we have a pre-defined handler */
+ /*
+ * Apparently not, so let's see if we have a pre-defined handler
+ * or if an outside plugin is interested.
+ */
+ if(child && (xmlns = xmlnode_get_namespace(child))) {
+ char *key = g_strdup_printf("%s %s", child->name, xmlns);
+ JabberIqHandler *jih = g_hash_table_lookup(iq_handlers, key);
+ int signal_ref = GPOINTER_TO_INT(g_hash_table_lookup(signal_iq_handlers, key));
+ g_free(key);
+
+ if (signal_ref > 0) {
+ signal_return = GPOINTER_TO_INT(purple_signal_emit_return_1(jabber_plugin, "jabber-watched-iq",
+ js->gc, iq_type, id, from, child));
+ if (signal_return)
+ return;
+ }
- if(query && (xmlns = xmlnode_get_namespace(query))) {
- if((jih = g_hash_table_lookup(iq_handlers, xmlns))) {
- jih(js, packet);
+ if(jih) {
+ jih(js, from, type, id, child);
return;
}
}
- if(xmlnode_get_child_with_namespace(packet, "si", "http://jabber.org/protocol/si")) {
- jabber_si_parse(js, packet);
- return;
- }
-
- if(xmlnode_get_child_with_namespace(packet, "new-mail", "google:mail:notify")) {
- jabber_gmail_poke(js, packet);
- return;
- }
-
purple_debug_info("jabber", "jabber_iq_parse\n");
- if(xmlnode_get_child_with_namespace(packet, "ping", "urn:xmpp:ping")) {
- jabber_ping_parse(js, packet);
- return;
- }
-
- if (xmlnode_get_child_with_namespace(packet, "data", XEP_0231_NAMESPACE)) {
- jabber_data_parse(js, packet);
- return;
- }
-
/* If we get here, send the default error reply mandated by XMPP-CORE */
- if(!strcmp(type, "set") || !strcmp(type, "get")) {
+ if(type == JABBER_IQ_SET || type == JABBER_IQ_GET) {
JabberIq *iq = jabber_iq_new(js, JABBER_IQ_ERROR);
xmlnode_free(iq->node);
iq->node = xmlnode_copy(packet);
- xmlnode_set_attrib(iq->node, "to", from);
- xmlnode_remove_attrib(iq->node, "from");
+ if (from) {
+ xmlnode_set_attrib(iq->node, "to", from);
+ xmlnode_remove_attrib(iq->node, "from");
+ }
+
xmlnode_set_attrib(iq->node, "type", "error");
error = xmlnode_new_child(iq->node, "error");
xmlnode_set_attrib(error, "type", "cancel");
@@ -412,31 +414,96 @@ void jabber_iq_parse(JabberStream *js, xmlnode *packet)
}
}
-void jabber_iq_register_handler(const char *xmlns, JabberIqHandler *handlerfunc)
+void jabber_iq_register_handler(const char *node, const char *xmlns, JabberIqHandler *handlerfunc)
+{
+ /*
+ * This is valid because nodes nor namespaces cannot have spaces in them
+ * (see http://www.w3.org/TR/2006/REC-xml-20060816/ and
+ * http://www.w3.org/TR/REC-xml-names/)
+ */
+ char *key = g_strdup_printf("%s %s", node, xmlns);
+ g_hash_table_replace(iq_handlers, key, handlerfunc);
+}
+
+void jabber_iq_signal_register(const gchar *node, const gchar *xmlns)
+{
+ gchar *key;
+ int ref;
+
+ g_return_if_fail(node != NULL && *node != '\0');
+ g_return_if_fail(xmlns != NULL && *xmlns != '\0');
+
+ key = g_strdup_printf("%s %s", node, xmlns);
+ ref = GPOINTER_TO_INT(g_hash_table_lookup(signal_iq_handlers, key));
+ if (ref == 0) {
+ g_hash_table_insert(signal_iq_handlers, key, GINT_TO_POINTER(1));
+ } else {
+ g_hash_table_insert(signal_iq_handlers, key, GINT_TO_POINTER(ref + 1));
+ g_free(key);
+ }
+}
+
+void jabber_iq_signal_unregister(const gchar *node, const gchar *xmlns)
{
- g_hash_table_replace(iq_handlers, g_strdup(xmlns), handlerfunc);
+ gchar *key;
+ int ref;
+
+ g_return_if_fail(node != NULL && *node != '\0');
+ g_return_if_fail(xmlns != NULL && *xmlns != '\0');
+
+ key = g_strdup_printf("%s %s", node, xmlns);
+ ref = GPOINTER_TO_INT(g_hash_table_lookup(signal_iq_handlers, key));
+
+ if (ref == 1) {
+ g_hash_table_remove(signal_iq_handlers, key);
+ } else if (ref > 1) {
+ g_hash_table_insert(signal_iq_handlers, key, GINT_TO_POINTER(ref - 1));
+ }
+
+ g_free(key);
}
void jabber_iq_init(void)
{
iq_handlers = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL);
+ signal_iq_handlers = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL);
+
+ jabber_iq_register_handler("jingle", JINGLE, jingle_parse);
+ jabber_iq_register_handler("mailbox", "google:mail:notify",
+ jabber_gmail_poke);
+ jabber_iq_register_handler("new-mail", "google:mail:notify",
+ jabber_gmail_poke);
+ jabber_iq_register_handler("ping", "urn:xmpp:ping", jabber_ping_parse);
+ jabber_iq_register_handler("query", GOOGLE_JINGLE_INFO_NAMESPACE,
+ jabber_google_handle_jingle_info);
+ jabber_iq_register_handler("query", "http://jabber.org/protocol/bytestreams",
+ jabber_bytestreams_parse);
+ jabber_iq_register_handler("query", "http://jabber.org/protocol/disco#info",
+ jabber_disco_info_parse);
+ jabber_iq_register_handler("query", "http://jabber.org/protocol/disco#items",
+ jabber_disco_items_parse);
+ jabber_iq_register_handler("query", "jabber:iq:last", jabber_iq_last_parse);
+ jabber_iq_register_handler("query", "jabber:iq:oob", jabber_oob_parse);
+ jabber_iq_register_handler("query", "jabber:iq:register",
+ jabber_register_parse);
+ jabber_iq_register_handler("query", "jabber:iq:roster",
+ jabber_roster_parse);
+ jabber_iq_register_handler("query", "jabber:iq:time", jabber_iq_time_parse);
+ jabber_iq_register_handler("query", "jabber:iq:version",
+ jabber_iq_version_parse);
+#ifdef USE_VV
+ jabber_iq_register_handler("session", "http://www.google.com/session",
+ jabber_google_session_parse);
+#endif
+ jabber_iq_register_handler("block", "urn:xmpp:blocking", jabber_blocklist_parse_push);
+ jabber_iq_register_handler("unblock", "urn:xmpp:blocking", jabber_blocklist_parse_push);
+ jabber_iq_register_handler("time", "urn:xmpp:time", jabber_iq_time_parse);
- jabber_iq_register_handler("jabber:iq:roster", jabber_roster_parse);
- jabber_iq_register_handler("jabber:iq:oob", jabber_oob_parse);
- jabber_iq_register_handler("http://jabber.org/protocol/bytestreams", jabber_bytestreams_parse);
- jabber_iq_register_handler("jabber:iq:last", jabber_iq_last_parse);
- jabber_iq_register_handler("jabber:iq:time", jabber_iq_time_parse);
- jabber_iq_register_handler("urn:xmpp:time", jabber_iq_time_parse);
- jabber_iq_register_handler("jabber:iq:version", jabber_iq_version_parse);
- jabber_iq_register_handler("http://jabber.org/protocol/disco#info", jabber_disco_info_parse);
- jabber_iq_register_handler("http://jabber.org/protocol/disco#items", jabber_disco_items_parse);
- jabber_iq_register_handler("jabber:iq:register", jabber_register_parse);
- jabber_iq_register_handler("urn:xmpp:ping", urn_xmpp_ping_parse);
}
void jabber_iq_uninit(void)
{
g_hash_table_destroy(iq_handlers);
- iq_handlers = NULL;
+ g_hash_table_destroy(signal_iq_handlers);
+ iq_handlers = signal_iq_handlers = NULL;
}
-
diff --git a/libpurple/protocols/jabber/iq.h b/libpurple/protocols/jabber/iq.h
index a8743350cd..5d506841dc 100644
--- a/libpurple/protocols/jabber/iq.h
+++ b/libpurple/protocols/jabber/iq.h
@@ -19,12 +19,8 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
*/
-#ifndef _PURPLE_JABBER_IQ_H_
-#define _PURPLE_JABBER_IQ_H_
-
-#include "jabber.h"
-
-typedef struct _JabberIq JabberIq;
+#ifndef PURPLE_JABBER_IQ_H_
+#define PURPLE_JABBER_IQ_H_
typedef enum {
JABBER_IQ_SET,
@@ -34,9 +30,52 @@ typedef enum {
JABBER_IQ_NONE
} JabberIqType;
-typedef void (JabberIqHandler)(JabberStream *js, xmlnode *packet);
+#include "jabber.h"
+#include "connection.h"
-typedef void (JabberIqCallback)(JabberStream *js, xmlnode *packet, gpointer data);
+typedef struct _JabberIq JabberIq;
+
+/**
+ * A JabberIqHandler is called to process an incoming IQ stanza.
+ * Handlers typically process unsolicited incoming GETs or SETs for their
+ * registered namespace, but may be called to handle the results of a
+ * GET or SET that we generated if no JabberIqCallback was generated
+ * The handler may be called for the results of a GET or SET (RESULT or ERROR)
+ * that we generated
+ * if the generating function did not register a JabberIqCallback.
+ *
+ * @param js The JabberStream object.
+ * @param from The remote entity (the from attribute on the <iq/> stanza)
+ * @param type The IQ type.
+ * @param id The IQ id (the id attribute on the <iq/> stanza)
+ * @param child The child element of the <iq/> stanza that matches the name
+ * and namespace registered with jabber_iq_register_handler.
+ *
+ * @see jabber_iq_register_handler()
+ * @see JabberIqCallback
+ */
+typedef void (JabberIqHandler)(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *child);
+
+/**
+ * A JabberIqCallback is called to process the results of a GET or SET that
+ * we send to a remote entity. The callback is matched based on the id
+ * of the incoming stanza (which matches the one on the initial stanza).
+ *
+ * @param js The JabberStream object.
+ * @param from The remote entity (the from attribute on the <iq/> stanza)
+ * @param type The IQ type. The only possible values are JABBER_IQ_RESULT
+ * and JABBER_IQ_ERROR.
+ * @param id The IQ id (the id attribute on the <iq/> stanza)
+ * @param packet The <iq/> stanza
+ * @param data The callback data passed to jabber_iq_set_callback()
+ *
+ * @see jabber_iq_set_callback()
+ */
+typedef void (JabberIqCallback)(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data);
struct _JabberIq {
JabberIqType type;
@@ -65,6 +104,11 @@ void jabber_iq_free(JabberIq *iq);
void jabber_iq_init(void);
void jabber_iq_uninit(void);
-void jabber_iq_register_handler(const char *xmlns, JabberIqHandler *func);
+void jabber_iq_register_handler(const char *node, const char *xmlns,
+ JabberIqHandler *func);
+
+/* Connected to namespace-handler registration signals */
+void jabber_iq_signal_register(const gchar *node, const gchar *xmlns);
+void jabber_iq_signal_unregister(const gchar *node, const gchar *xmlns);
-#endif /* _PURPLE_JABBER_IQ_H_ */
+#endif /* PURPLE_JABBER_IQ_H_ */
diff --git a/libpurple/protocols/jabber/jabber.c b/libpurple/protocols/jabber/jabber.c
index 840d8a40df..b12788b58a 100644
--- a/libpurple/protocols/jabber/jabber.c
+++ b/libpurple/protocols/jabber/jabber.c
@@ -23,11 +23,13 @@
#include "account.h"
#include "accountopt.h"
#include "blist.h"
+#include "core.h"
#include "cmds.h"
#include "connection.h"
#include "conversation.h"
#include "debug.h"
#include "dnssrv.h"
+#include "imgstore.h"
#include "message.h"
#include "notify.h"
#include "pluginpref.h"
@@ -36,12 +38,14 @@
#include "prpl.h"
#include "request.h"
#include "server.h"
+#include "status.h"
#include "util.h"
#include "version.h"
#include "xmlnode.h"
#include "auth.h"
#include "buddy.h"
+#include "caps.h"
#include "chat.h"
#include "data.h"
#include "disco.h"
@@ -59,11 +63,15 @@
#include "pep.h"
#include "adhoccommands.h"
+#include "jingle/jingle.h"
+#include "jingle/rtp.h"
#define JABBER_CONNECT_STEPS (js->gsc ? 9 : 5)
-static PurplePlugin *my_protocol = NULL;
+PurplePlugin *jabber_plugin = NULL;
GList *jabber_features = NULL;
+GList *jabber_identities = NULL;
+GSList *jabber_cmds = NULL;
static void jabber_unregister_account_cb(JabberStream *js);
static void try_srv_connect(JabberStream *js);
@@ -77,10 +85,6 @@ static void jabber_stream_init(JabberStream *js)
"xmlns:stream='http://etherx.jabber.org/streams' "
"version='1.0'>",
js->user->domain);
- if (js->reinit)
- /* Close down the current stream to keep the XML parser happy */
- jabber_parser_close_stream(js);
-
/* setup the parser fresh for each stream */
jabber_parser_setup(js);
jabber_send_raw(js, open_stream, -1);
@@ -89,11 +93,12 @@ static void jabber_stream_init(JabberStream *js)
}
static void
-jabber_session_initialized_cb(JabberStream *js, xmlnode *packet, gpointer data)
+jabber_session_initialized_cb(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data)
{
- const char *type = xmlnode_get_attrib(packet, "type");
- if(type && !strcmp(type, "result")) {
- jabber_stream_set_state(js, JABBER_STREAM_CONNECTED);
+ if (type == JABBER_IQ_RESULT) {
+ jabber_disco_items_server(js);
if(js->unregistration)
jabber_unregister_account_cb(js);
} else {
@@ -116,13 +121,13 @@ static void jabber_session_init(JabberStream *js)
jabber_iq_send(iq);
}
-static void jabber_bind_result_cb(JabberStream *js, xmlnode *packet,
- gpointer data)
+static void jabber_bind_result_cb(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data)
{
- const char *type = xmlnode_get_attrib(packet, "type");
xmlnode *bind;
- if(type && !strcmp(type, "result") &&
+ if (type == JABBER_IQ_RESULT &&
(bind = xmlnode_get_child_with_namespace(packet, "bind", "urn:ietf:params:xml:ns:xmpp-bind"))) {
xmlnode *jid;
char *full_jid;
@@ -184,13 +189,13 @@ static char *jabber_prep_resource(char *input) {
return purple_strreplace(input, "__HOSTNAME__", hostname);
}
-static void jabber_stream_features_parse(JabberStream *js, xmlnode *packet)
+void jabber_stream_features_parse(JabberStream *js, xmlnode *packet)
{
if(xmlnode_get_child(packet, "starttls")) {
if(jabber_process_starttls(js, packet))
-
+
return;
- } else if(purple_account_get_bool(js->gc->account, "require_tls", FALSE) && !js->gsc) {
+ } else if(purple_account_get_bool(js->gc->account, "require_tls", FALSE) && !jabber_stream_is_ssl(js)) {
purple_connection_error_reason (js->gc,
PURPLE_CONNECTION_ERROR_ENCRYPTION_ERROR,
_("You require encryption, but it is not available on this server."));
@@ -244,7 +249,7 @@ void jabber_process_packet(JabberStream *js, xmlnode **packet)
{
const char *xmlns;
- purple_signal_emit(my_protocol, "jabber-receiving-xmlnode", js->gc, packet);
+ purple_signal_emit(jabber_plugin, "jabber-receiving-xmlnode", js->gc, packet);
/* if the signal leaves us with a null packet, we're done */
if(NULL == *packet)
@@ -388,7 +393,7 @@ void jabber_send_raw(JabberStream *js, const char *data, int len)
}
purple_debug(PURPLE_DEBUG_MISC, "jabber", "Sending%s: %s%s%s\n",
- js->gsc ? " (ssl)" : "", text ? text : data,
+ jabber_stream_is_ssl(js) ? " (ssl)" : "", text ? text : data,
last_part ? "password removed" : "",
last_part ? last_part : "");
@@ -398,7 +403,7 @@ void jabber_send_raw(JabberStream *js, const char *data, int len)
/* If we've got a security layer, we need to encode the data,
* splitting it on the maximum buffer length negotiated */
- purple_signal_emit(my_protocol, "jabber-sending-text", js->gc, &data);
+ purple_signal_emit(jabber_plugin, "jabber-sending-text", js->gc, &data);
if (data == NULL)
return;
@@ -429,7 +434,13 @@ void jabber_send_raw(JabberStream *js, const char *data, int len)
}
#endif
- do_jabber_send_raw(js, data, len);
+ if (len == -1)
+ len = strlen(data);
+
+ if (js->use_bosh)
+ jabber_bosh_connection_send_raw(js->bosh, data);
+ else
+ do_jabber_send_raw(js, data, len);
}
int jabber_prpl_send_raw(PurpleConnection *gc, const char *buf, int len)
@@ -439,34 +450,31 @@ int jabber_prpl_send_raw(PurpleConnection *gc, const char *buf, int len)
return len;
}
-void jabber_send(JabberStream *js, xmlnode *packet)
+void jabber_send_signal_cb(PurpleConnection *pc, xmlnode **packet,
+ gpointer unused)
{
char *txt;
int len;
- purple_signal_emit(my_protocol, "jabber-sending-xmlnode", js->gc, &packet);
-
- /* if we get NULL back, we're done processing */
- if(NULL == packet)
+ if (NULL == packet)
return;
- txt = xmlnode_to_str(packet, &len);
- jabber_send_raw(js, txt, len);
+ txt = xmlnode_to_str(*packet, &len);
+ jabber_send_raw(purple_connection_get_protocol_data(pc), txt, len);
g_free(txt);
}
-static void jabber_pong_cb(JabberStream *js, xmlnode *packet, gpointer unused)
+void jabber_send(JabberStream *js, xmlnode *packet)
{
- purple_timeout_remove(js->keepalive_timeout);
- js->keepalive_timeout = -1;
+ purple_signal_emit(jabber_plugin, "jabber-sending-xmlnode", js->gc, &packet);
}
-static gboolean jabber_pong_timeout(PurpleConnection *gc)
+static gboolean jabber_keepalive_timeout(PurpleConnection *gc)
{
JabberStream *js = gc->proto_data;
purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
_("Ping timeout"));
- js->keepalive_timeout = -1;
+ js->keepalive_timeout = 0;
return FALSE;
}
@@ -474,15 +482,10 @@ void jabber_keepalive(PurpleConnection *gc)
{
JabberStream *js = gc->proto_data;
- if (js->keepalive_timeout == -1) {
- JabberIq *iq = jabber_iq_new(js, JABBER_IQ_GET);
-
- xmlnode *ping = xmlnode_new_child(iq->node, "ping");
- xmlnode_set_namespace(ping, "urn:xmpp:ping");
-
- js->keepalive_timeout = purple_timeout_add_seconds(120, (GSourceFunc)(jabber_pong_timeout), gc);
- jabber_iq_set_callback(iq, jabber_pong_cb, NULL);
- jabber_iq_send(iq);
+ if (js->keepalive_timeout == 0) {
+ jabber_keepalive_ping(js);
+ js->keepalive_timeout = purple_timeout_add_seconds(120,
+ (GSourceFunc)(jabber_keepalive_timeout), gc);
}
}
@@ -587,11 +590,54 @@ jabber_login_callback_ssl(gpointer data, PurpleSslConnection *gsc,
jabber_send_raw(js, "<?xml version='1.0' ?>", -1);
jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING);
purple_ssl_input_add(gsc, jabber_recv_cb_ssl, gc);
-
+
/* Tell the app that we're doing encryption */
jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING_ENCRYPTION);
}
+static void
+txt_resolved_cb(GSList *responses, gpointer data)
+{
+ JabberStream *js = data;
+
+ js->srv_query_data = NULL;
+
+ if (responses == NULL) {
+ gchar *tmp;
+ tmp = g_strdup_printf(_("Could not find alternative XMPP connection methods after failing to connect directly.\n"));
+ purple_connection_error_reason (js->gc,
+ PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
+ g_free(tmp);
+ return;
+ }
+
+ while (responses) {
+ PurpleTxtResponse *resp = responses->data;
+ gchar **token;
+ token = g_strsplit(purple_txt_response_get_content(resp), "=", 2);
+ if (!strcmp(token[0], "_xmpp-client-xbosh")) {
+ purple_debug_info("jabber","Found alternative connection method using %s at %s.\n", token[0], token[1]);
+ js->bosh = jabber_bosh_connection_init(js, token[1]);
+ js->use_bosh = TRUE;
+ g_strfreev(token);
+ break;
+ }
+ g_strfreev(token);
+ purple_txt_response_destroy(resp);
+ responses = g_slist_delete_link(responses, responses);
+ }
+
+ if (js->bosh) {
+ jabber_bosh_connection_connect(js->bosh);
+ } else {
+ purple_debug_info("jabber","Didn't find an alternative connection method.\n");
+ }
+
+ if (responses) {
+ g_slist_foreach(responses, (GFunc)purple_txt_response_destroy, NULL);
+ g_slist_free(responses);
+ }
+}
static void
jabber_login_callback(gpointer data, gint source, const gchar *error)
@@ -604,12 +650,8 @@ jabber_login_callback(gpointer data, gint source, const gchar *error)
purple_debug_error("jabber", "Unable to connect to server: %s. Trying next SRV record.\n", error);
try_srv_connect(js);
} else {
- gchar *tmp;
- tmp = g_strdup_printf(_("Could not establish a connection with the server:\n%s"),
- error);
- purple_connection_error_reason(gc,
- PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
- g_free(tmp);
+ purple_debug_info("jabber","Couldn't connect directly to %s. Trying to find alternative connection methods, like BOSH.\n", js->user->domain);
+ js->srv_query_data = purple_txt_resolve("_xmppconnect", js->user->domain, txt_resolved_cb, js);
}
return;
}
@@ -645,9 +687,6 @@ jabber_ssl_connect_failure(PurpleSslConnection *gsc, PurpleSslErrorType error,
static void tls_init(JabberStream *js)
{
- /* Close down the current stream to keep the XML parser happy */
- jabber_parser_close_stream(js);
-
purple_input_remove(js->gc->inpa);
js->gc->inpa = 0;
js->gsc = purple_ssl_connect_with_host_fd(js->gc->account, js->fd,
@@ -720,6 +759,8 @@ jabber_login(PurpleAccount *account)
const char *connect_server = purple_account_get_string(account,
"connect_server", "");
JabberStream *js;
+ PurplePresence *presence;
+ PurpleStoredImage *image;
JabberBuddy *my_jb = NULL;
gc->flags |= PURPLE_CONNECTION_HTML |
@@ -729,8 +770,6 @@ jabber_login(PurpleAccount *account)
js->fd = -1;
js->iq_callbacks = g_hash_table_new_full(g_str_hash, g_str_equal,
g_free, g_free);
- js->disco_callbacks = g_hash_table_new_full(g_str_hash, g_str_equal,
- g_free, g_free);
js->buddies = g_hash_table_new_full(g_str_hash, g_str_equal,
g_free, (GDestroyNotify)jabber_buddy_free);
js->chats = g_hash_table_new_full(g_str_hash, g_str_equal,
@@ -739,8 +778,20 @@ jabber_login(PurpleAccount *account)
js->next_id = g_random_int();
js->write_buffer = purple_circ_buffer_new(512);
js->old_length = 0;
- js->keepalive_timeout = -1;
- js->certificate_CN = g_strdup(connect_server[0] ? connect_server : js->user ? js->user->domain : NULL);
+ js->keepalive_timeout = 0;
+ /* Set the default protocol version to 1.0. Overridden in parser.c. */
+ js->protocol_version = JABBER_PROTO_1_0;
+ js->sessions = NULL;
+ js->stun_ip = NULL;
+ js->stun_port = 0;
+ js->stun_query = NULL;
+
+ /* if we are idle, set idle-ness on the stream (this could happen if we get
+ disconnected and the reconnects while being idle. I don't think it makes
+ sense to do this when registering a new account... */
+ presence = purple_account_get_presence(account);
+ if (purple_presence_is_idle(presence))
+ js->idle = purple_presence_get_idle_time(presence);
if(!js->user) {
purple_connection_error_reason (gc,
@@ -748,19 +799,46 @@ jabber_login(PurpleAccount *account)
_("Invalid XMPP ID"));
return;
}
-
+
if (!js->user->domain || *(js->user->domain) == '\0') {
purple_connection_error_reason (gc,
PURPLE_CONNECTION_ERROR_INVALID_SETTINGS,
_("Invalid XMPP ID. Domain must be set."));
return;
}
-
+
+ /*
+ * Calculate the avatar hash for our current image so we know (when we
+ * fetch our vCard and PEP avatar) if we should send our avatar to the
+ * server.
+ */
+ if ((image = purple_buddy_icons_find_account_icon(account))) {
+ js->initial_avatar_hash = jabber_calculate_data_sha1sum(purple_imgstore_get_data(image),
+ purple_imgstore_get_size(image));
+ purple_imgstore_unref(image);
+ }
+
if((my_jb = jabber_buddy_find(js, purple_account_get_username(account), TRUE)))
my_jb->subscription |= JABBER_SUB_BOTH;
jabber_stream_set_state(js, JABBER_STREAM_CONNECTING);
+ /* TODO: Just use purple_url_parse? */
+ if (!g_ascii_strncasecmp(connect_server, "http://", 7) || !g_ascii_strncasecmp(connect_server, "https://", 8)) {
+ js->use_bosh = TRUE;
+ js->bosh = jabber_bosh_connection_init(js, connect_server);
+ if (!js->bosh) {
+ purple_connection_error_reason (js->gc,
+ PURPLE_CONNECTION_ERROR_INVALID_SETTINGS,
+ _("Malformed BOSH Connect Server"));
+ return;
+ }
+ jabber_bosh_connection_connect(js->bosh);
+ return;
+ } else {
+ js->certificate_CN = g_strdup(connect_server[0] ? connect_server : js->user->domain);
+ }
+
/* if they've got old-ssl mode going, we probably want to ignore SRV lookups */
if(purple_account_get_bool(js->gc->account, "old_ssl", FALSE)) {
if(purple_ssl_is_supported()) {
@@ -768,22 +846,27 @@ jabber_login(PurpleAccount *account)
js->certificate_CN,
purple_account_get_int(account, "port", 5223), jabber_login_callback_ssl,
jabber_ssl_connect_failure, js->gc);
+ if (!js->gsc) {
+ purple_connection_error_reason (js->gc,
+ PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT,
+ _("Unable to establish SSL connection"));
+ }
} else {
purple_connection_error_reason (js->gc,
PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT,
_("SSL support unavailable"));
}
+
+ return;
}
/* no old-ssl, so if they've specified a connect server, we'll use that, otherwise we'll
* invoke the magic of SRV lookups, to figure out host and port */
- if(!js->gsc) {
- if(connect_server[0]) {
- jabber_login_connect(js, js->user->domain, connect_server, purple_account_get_int(account, "port", 5222), TRUE);
- } else {
- js->srv_query_data = purple_srv_resolve("xmpp-client",
- "tcp", js->user->domain, srv_resolved_cb, js);
- }
+ if(connect_server[0]) {
+ jabber_login_connect(js, js->user->domain, connect_server, purple_account_get_int(account, "port", 5222), TRUE);
+ } else {
+ js->srv_query_data = purple_srv_resolve("xmpp-client",
+ "tcp", js->user->domain, srv_resolved_cb, js);
}
}
@@ -808,14 +891,15 @@ jabber_connection_schedule_close(JabberStream *js)
}
static void
-jabber_registration_result_cb(JabberStream *js, xmlnode *packet, gpointer data)
+jabber_registration_result_cb(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data)
{
PurpleAccount *account = purple_connection_get_account(js->gc);
- const char *type = xmlnode_get_attrib(packet, "type");
char *buf;
char *to = data;
- if(!strcmp(type, "result")) {
+ if (type == JABBER_IQ_RESULT) {
if(js->registration) {
buf = g_strdup_printf(_("Registration of %s@%s successful"),
js->user->node, js->user->domain);
@@ -843,13 +927,14 @@ jabber_registration_result_cb(JabberStream *js, xmlnode *packet, gpointer data)
}
g_free(to);
if(js->registration)
- jabber_connection_schedule_close(js);
+ jabber_connection_schedule_close(js);
}
static void
-jabber_unregistration_result_cb(JabberStream *js, xmlnode *packet, gpointer data)
+jabber_unregistration_result_cb(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data)
{
- const char *type = xmlnode_get_attrib(packet, "type");
char *buf;
char *to = data;
@@ -857,7 +942,7 @@ jabber_unregistration_result_cb(JabberStream *js, xmlnode *packet, gpointer data
* the server, so there should always be a 'to' address. */
g_return_if_fail(to != NULL);
- if(!strcmp(type, "result")) {
+ if (type == JABBER_IQ_RESULT) {
buf = g_strdup_printf(_("Registration from %s successfully removed"),
to);
purple_notify_info(NULL, _("Unregistration Successful"),
@@ -865,10 +950,10 @@ jabber_unregistration_result_cb(JabberStream *js, xmlnode *packet, gpointer data
g_free(buf);
} else {
char *msg = jabber_parse_error(js, packet, NULL);
-
+
if(!msg)
msg = g_strdup(_("Unknown Error"));
-
+
purple_notify_error(NULL, _("Unregistration Failed"),
_("Unregistration Failed"), msg);
g_free(msg);
@@ -911,9 +996,9 @@ jabber_register_cb(JabberRegisterCBData *cbdata, PurpleRequestFields *fields)
if (cbdata->who)
xmlnode_set_attrib(iq->node,"to",cbdata->who);
xmlnode_new_child(query, "remove");
-
+
jabber_iq_set_callback(iq, jabber_unregistration_result_cb, cbdata->who);
-
+
jabber_iq_send(iq);
g_free(cbdata);
return;
@@ -1006,31 +1091,45 @@ static void jabber_register_x_data_cb(JabberStream *js, xmlnode *result, gpointe
jabber_iq_send(iq);
}
-void jabber_register_parse(JabberStream *js, xmlnode *packet)
+static const struct {
+ const char *name;
+ const char *label;
+} registration_fields[] = {
+ { "email", N_("Email") },
+ { "nick", N_("Nickname") },
+ { "first", N_("First name") },
+ { "last", N_("Last name") },
+ { "address", N_("Address") },
+ { "city", N_("City") },
+ { "state", N_("State") },
+ { "zip", N_("Postal code") },
+ { "phone", N_("Phone") },
+ { "url", N_("URL") },
+ { "date", N_("Date") },
+ { NULL, NULL }
+};
+
+void jabber_register_parse(JabberStream *js, const char *from, JabberIqType type,
+ const char *id, xmlnode *query)
{
PurpleAccount *account = purple_connection_get_account(js->gc);
- const char *type;
- const char *from;
PurpleRequestFields *fields;
PurpleRequestFieldGroup *group;
PurpleRequestField *field;
- xmlnode *query, *x, *y;
+ xmlnode *x, *y, *node;
char *instructions;
JabberRegisterCBData *cbdata;
gboolean registered = FALSE;
+ int i;
- if(!(type = xmlnode_get_attrib(packet, "type")) || strcmp(type, "result"))
+ if (type != JABBER_IQ_RESULT)
return;
- from = xmlnode_get_attrib(packet, "from");
-
if(js->registration) {
/* get rid of the login thingy */
purple_connection_set_state(js->gc, PURPLE_CONNECTED);
}
- query = xmlnode_get_child(packet, "query");
-
if(xmlnode_get_child(query, "registered")) {
registered = TRUE;
@@ -1043,7 +1142,7 @@ void jabber_register_parse(JabberStream *js, xmlnode *packet)
return;
}
}
-
+
if((x = xmlnode_get_child_with_namespace(query, "x", "jabber:x:data"))) {
jabber_x_data_request(js, x, jabber_register_x_data_cb, g_strdup(from));
return;
@@ -1074,74 +1173,53 @@ void jabber_register_parse(JabberStream *js, xmlnode *packet)
group = purple_request_field_group_new(NULL);
purple_request_fields_add_group(fields, group);
- if(js->registration)
- field = purple_request_field_string_new("username", _("Username"), js->user->node, FALSE);
- else
- field = purple_request_field_string_new("username", _("Username"), NULL, FALSE);
-
- purple_request_field_group_add_field(group, field);
-
- if(js->registration)
- field = purple_request_field_string_new("password", _("Password"),
- purple_connection_get_password(js->gc), FALSE);
- else
- field = purple_request_field_string_new("password", _("Password"), NULL, FALSE);
-
- purple_request_field_string_set_masked(field, TRUE);
- purple_request_field_group_add_field(group, field);
-
- if(xmlnode_get_child(query, "name")) {
+ if((node = xmlnode_get_child(query, "username"))) {
+ char *data = xmlnode_get_data(node);
if(js->registration)
- field = purple_request_field_string_new("name", _("Name"),
- purple_account_get_alias(js->gc->account), FALSE);
+ field = purple_request_field_string_new("username", _("Username"), data ? data : js->user->node, FALSE);
else
- field = purple_request_field_string_new("name", _("Name"), NULL, FALSE);
- purple_request_field_group_add_field(group, field);
- }
- if(xmlnode_get_child(query, "email")) {
- field = purple_request_field_string_new("email", _("Email"), NULL, FALSE);
- purple_request_field_group_add_field(group, field);
- }
- if(xmlnode_get_child(query, "nick")) {
- field = purple_request_field_string_new("nick", _("Nickname"), NULL, FALSE);
- purple_request_field_group_add_field(group, field);
- }
- if(xmlnode_get_child(query, "first")) {
- field = purple_request_field_string_new("first", _("First name"), NULL, FALSE);
- purple_request_field_group_add_field(group, field);
- }
- if(xmlnode_get_child(query, "last")) {
- field = purple_request_field_string_new("last", _("Last name"), NULL, FALSE);
- purple_request_field_group_add_field(group, field);
- }
- if(xmlnode_get_child(query, "address")) {
- field = purple_request_field_string_new("address", _("Address"), NULL, FALSE);
- purple_request_field_group_add_field(group, field);
- }
- if(xmlnode_get_child(query, "city")) {
- field = purple_request_field_string_new("city", _("City"), NULL, FALSE);
- purple_request_field_group_add_field(group, field);
- }
- if(xmlnode_get_child(query, "state")) {
- field = purple_request_field_string_new("state", _("State"), NULL, FALSE);
- purple_request_field_group_add_field(group, field);
- }
- if(xmlnode_get_child(query, "zip")) {
- field = purple_request_field_string_new("zip", _("Postal code"), NULL, FALSE);
+ field = purple_request_field_string_new("username", _("Username"), data, FALSE);
+
purple_request_field_group_add_field(group, field);
+ g_free(data);
}
- if(xmlnode_get_child(query, "phone")) {
- field = purple_request_field_string_new("phone", _("Phone"), NULL, FALSE);
+ if((node = xmlnode_get_child(query, "password"))) {
+ if(js->registration)
+ field = purple_request_field_string_new("password", _("Password"),
+ purple_connection_get_password(js->gc), FALSE);
+ else {
+ char *data = xmlnode_get_data(node);
+ field = purple_request_field_string_new("password", _("Password"), data, FALSE);
+ g_free(data);
+ }
+
+ purple_request_field_string_set_masked(field, TRUE);
purple_request_field_group_add_field(group, field);
}
- if(xmlnode_get_child(query, "url")) {
- field = purple_request_field_string_new("url", _("URL"), NULL, FALSE);
+
+ if((node = xmlnode_get_child(query, "name"))) {
+ if(js->registration)
+ field = purple_request_field_string_new("name", _("Name"),
+ purple_account_get_alias(js->gc->account), FALSE);
+ else {
+ char *data = xmlnode_get_data(node);
+ field = purple_request_field_string_new("name", _("Name"), data, FALSE);
+ g_free(data);
+ }
purple_request_field_group_add_field(group, field);
}
- if(xmlnode_get_child(query, "date")) {
- field = purple_request_field_string_new("date", _("Date"), NULL, FALSE);
- purple_request_field_group_add_field(group, field);
+
+ for (i = 0; registration_fields[i].name != NULL; ++i) {
+ if ((node = xmlnode_get_child(query, registration_fields[i].name))) {
+ char *data = xmlnode_get_data(node);
+ field = purple_request_field_string_new(registration_fields[i].name,
+ _(registration_fields[i].label),
+ data, FALSE);
+ purple_request_field_group_add_field(group, field);
+ g_free(data);
+ }
}
+
if(registered) {
field = purple_request_field_bool_new("unregister", _("Unregister"), FALSE);
purple_request_field_group_add_field(group, field);
@@ -1194,7 +1272,7 @@ void jabber_register_start(JabberStream *js)
void jabber_register_gateway(JabberStream *js, const char *gateway) {
JabberIq *iq;
-
+
iq = jabber_iq_new_query(js, JABBER_IQ_GET, "jabber:iq:register");
xmlnode_set_attrib(iq->node, "to", gateway);
jabber_iq_send(iq);
@@ -1214,11 +1292,10 @@ void jabber_register_account(PurpleAccount *account)
js->registration = TRUE;
js->iq_callbacks = g_hash_table_new_full(g_str_hash, g_str_equal,
g_free, g_free);
- js->disco_callbacks = g_hash_table_new_full(g_str_hash, g_str_equal,
- g_free, g_free);
js->user = jabber_id_new(purple_account_get_username(account));
js->next_id = g_random_int();
js->old_length = 0;
+ js->keepalive_timeout = 0;
if(!js->user) {
purple_connection_error_reason (gc,
@@ -1235,47 +1312,76 @@ void jabber_register_account(PurpleAccount *account)
server = connect_server[0] ? connect_server : js->user->domain;
js->certificate_CN = g_strdup(server);
+ js->stun_ip = NULL;
+ js->stun_port = 0;
+ js->stun_query = NULL;
+
jabber_stream_set_state(js, JABBER_STREAM_CONNECTING);
+ /* TODO: Just use purple_url_parse? */
+ if (!g_ascii_strncasecmp(connect_server, "http://", 7) || !g_ascii_strncasecmp(connect_server, "https://", 8)) {
+ js->use_bosh = TRUE;
+ js->bosh = jabber_bosh_connection_init(js, connect_server);
+ if (!js->bosh) {
+ purple_connection_error_reason (js->gc,
+ PURPLE_CONNECTION_ERROR_INVALID_SETTINGS,
+ _("Malformed BOSH Connect Server"));
+ return;
+ }
+ jabber_bosh_connection_connect(js->bosh);
+ return;
+ } else {
+ js->certificate_CN = g_strdup(connect_server[0] ? connect_server : js->user->domain);
+ }
+
if(purple_account_get_bool(account, "old_ssl", FALSE)) {
if(purple_ssl_is_supported()) {
js->gsc = purple_ssl_connect(account, server,
purple_account_get_int(account, "port", 5222),
jabber_login_callback_ssl, jabber_ssl_connect_failure, gc);
+ if (!js->gsc) {
+ purple_connection_error_reason (js->gc,
+ PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT,
+ _("Unable to establish SSL connection"));
+ }
} else {
purple_connection_error_reason (gc,
PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT,
_("SSL support unavailable"));
}
+
+ return;
}
- if(!js->gsc) {
- if (connect_server[0]) {
- jabber_login_connect(js, js->user->domain, server,
- purple_account_get_int(account,
- "port", 5222), TRUE);
- } else {
- js->srv_query_data = purple_srv_resolve("xmpp-client",
- "tcp",
- js->user->domain,
- srv_resolved_cb,
- js);
- }
+ if (connect_server[0]) {
+ jabber_login_connect(js, js->user->domain, server,
+ purple_account_get_int(account,
+ "port", 5222), TRUE);
+ } else {
+ js->srv_query_data = purple_srv_resolve("xmpp-client",
+ "tcp",
+ js->user->domain,
+ srv_resolved_cb,
+ js);
}
}
-static void jabber_unregister_account_iq_cb(JabberStream *js, xmlnode *packet, gpointer data) {
+static void
+jabber_unregister_account_iq_cb(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data)
+{
PurpleAccount *account = purple_connection_get_account(js->gc);
- const char *type = xmlnode_get_attrib(packet,"type");
- if(!strcmp(type,"error")) {
+
+ if (type == JABBER_IQ_ERROR) {
char *msg = jabber_parse_error(js, packet, NULL);
-
+
purple_notify_error(js->gc, _("Error unregistering account"),
_("Error unregistering account"), msg);
g_free(msg);
if(js->unregistration_cb)
js->unregistration_cb(account, FALSE, js->unregistration_user_data);
- } else if(!strcmp(type,"result")) {
+ } else {
purple_notify_info(js->gc, _("Account successfully unregistered"),
_("Account successfully unregistered"), NULL);
if(js->unregistration_cb)
@@ -1303,7 +1409,7 @@ static void jabber_unregister_account_cb(JabberStream *js) {
void jabber_unregister_account(PurpleAccount *account, PurpleAccountUnregistrationCb cb, void *user_data) {
PurpleConnection *gc = purple_account_get_connection(account);
JabberStream *js;
-
+
if(gc->state != PURPLE_CONNECTED) {
if(gc->state != PURPLE_CONNECTING)
jabber_login(account);
@@ -1313,7 +1419,7 @@ void jabber_unregister_account(PurpleAccount *account, PurpleAccountUnregistrati
js->unregistration_user_data = user_data;
return;
}
-
+
js = gc->proto_data;
if (js->unregistration) {
@@ -1337,12 +1443,19 @@ void jabber_close(PurpleConnection *gc)
{
JabberStream *js = gc->proto_data;
+ /* Close all of the open Jingle sessions on this stream */
+ jingle_terminate_sessions(js);
+
/* Don't perform any actions on the ssl connection
* if we were forcibly disconnected because it will crash
* on some SSL backends.
*/
- if (!gc->disconnect_timeout)
- jabber_send_raw(js, "</stream:stream>", -1);
+ if (!gc->disconnect_timeout) {
+ if (js->use_bosh)
+ jabber_bosh_connection_close(js->bosh);
+ else
+ jabber_send_raw(js, "</stream:stream>", -1);
+ }
if (js->srv_query_data)
purple_srv_cancel(js->srv_query_data);
@@ -1358,14 +1471,15 @@ void jabber_close(PurpleConnection *gc)
close(js->fd);
}
+ if (js->bosh)
+ jabber_bosh_connection_destroy(js->bosh);
+
jabber_buddy_remove_all_pending_buddy_info_requests(js);
jabber_parser_free(js);
if(js->iq_callbacks)
g_hash_table_destroy(js->iq_callbacks);
- if(js->disco_callbacks)
- g_hash_table_destroy(js->disco_callbacks);
if(js->buddies)
g_hash_table_destroy(js->buddies);
if(js->chats)
@@ -1398,7 +1512,9 @@ void jabber_close(PurpleConnection *gc)
g_free(js->stream_id);
if(js->user)
jabber_id_free(js->user);
+ g_free(js->initial_avatar_hash);
g_free(js->avatar_hash);
+ g_free(js->caps_hash);
purple_circ_buffer_destroy(js->write_buffer);
if(js->writeh)
@@ -1432,12 +1548,21 @@ void jabber_close(PurpleConnection *gc)
g_free(js->old_track);
g_free(js->expected_rspauth);
- if (js->keepalive_timeout != -1)
+ if (js->keepalive_timeout != 0)
purple_timeout_remove(js->keepalive_timeout);
g_free(js->srv_rec);
js->srv_rec = NULL;
+ g_free(js->stun_ip);
+ js->stun_ip = NULL;
+
+ /* cancel DNS query for STUN, if one is ongoing */
+ if (js->stun_query) {
+ purple_dnsquery_destroy(js->stun_query);
+ js->stun_query = NULL;
+ }
+
g_free(js);
gc->proto_data = NULL;
@@ -1491,7 +1616,6 @@ void jabber_stream_set_state(JabberStream *js, JabberStreamState state)
case JABBER_STREAM_CONNECTED:
/* now we can alert the core that we're ready to send status */
purple_connection_set_state(js->gc, PURPLE_CONNECTED);
- jabber_disco_items_server(js);
break;
}
}
@@ -1507,9 +1631,82 @@ void jabber_idle_set(PurpleConnection *gc, int idle)
JabberStream *js = gc->proto_data;
js->idle = idle ? time(NULL) - idle : idle;
+
+ /* send out an updated prescence */
+ purple_debug_info("jabber", "sending updated presence for idle\n");
+ jabber_presence_send(js, FALSE);
}
-static void jabber_blocklist_parse(JabberStream *js, xmlnode *packet, gpointer data)
+void jabber_blocklist_parse_push(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *child)
+{
+ JabberIq *result;
+ xmlnode *item;
+ PurpleAccount *account;
+ gboolean is_block;
+
+ if (!jabber_is_own_account(js, from)) {
+ xmlnode *error, *x;
+ result = jabber_iq_new(js, JABBER_IQ_ERROR);
+ xmlnode_set_attrib(result->node, "id", id);
+ if (from)
+ xmlnode_set_attrib(result->node, "to", from);
+
+ error = xmlnode_new_child(result->node, "error");
+ xmlnode_set_attrib(error, "type", "cancel");
+ x = xmlnode_new_child(error, "not-allowed");
+ xmlnode_set_namespace(x, "urn:ietf:params:xml:ns:xmpp-stanzas");
+
+ jabber_iq_send(result);
+ return;
+ }
+
+ account = purple_connection_get_account(js->gc);
+ is_block = g_str_equal(child->name, "block");
+
+ item = xmlnode_get_child(child, "item");
+ if (!is_block && item == NULL) {
+ /* Unblock everyone */
+ purple_debug_info("jabber", "Received unblock push. Unblocking everyone.\n");
+
+ while (account->deny != NULL) {
+ purple_privacy_deny_remove(account, account->deny->data, TRUE);
+ }
+ } else if (item == NULL) {
+ /* An empty <block/> is bogus */
+ xmlnode *error, *x;
+ result = jabber_iq_new(js, JABBER_IQ_ERROR);
+ xmlnode_set_attrib(result->node, "id", id);
+
+ error = xmlnode_new_child(result->node, "error");
+ xmlnode_set_attrib(error, "type", "modify");
+ x = xmlnode_new_child(error, "bad-request");
+ xmlnode_set_namespace(x, "urn:ietf:params:xml:ns:xmpp-stanzas");
+
+ jabber_iq_send(result);
+ return;
+ } else {
+ for ( ; item; item = xmlnode_get_next_twin(item)) {
+ const char *jid = xmlnode_get_attrib(item, "jid");
+ if (jid == NULL || *jid == '\0')
+ continue;
+
+ if (is_block)
+ purple_privacy_deny_add(account, jid, TRUE);
+ else
+ purple_privacy_deny_remove(account, jid, TRUE);
+ }
+ }
+
+ result = jabber_iq_new(js, JABBER_IQ_RESULT);
+ xmlnode_set_attrib(result->node, "id", id);
+ jabber_iq_send(result);
+}
+
+static void jabber_blocklist_parse(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data)
{
xmlnode *blocklist, *item;
PurpleAccount *account;
@@ -1518,13 +1715,23 @@ static void jabber_blocklist_parse(JabberStream *js, xmlnode *packet, gpointer d
"blocklist", "urn:xmpp:blocking");
account = purple_connection_get_account(js->gc);
- if (blocklist == NULL)
+ if (type == JABBER_IQ_ERROR || blocklist == NULL)
return;
+ /* This is the only privacy method supported by XEP-0191 */
+ if (account->perm_deny != PURPLE_PRIVACY_DENY_USERS)
+ account->perm_deny = PURPLE_PRIVACY_DENY_USERS;
+
+ /*
+ * TODO: When account->deny is something more than a hash table, this can
+ * be re-written to find the set intersection and difference.
+ */
+ while (account->deny)
+ purple_privacy_deny_remove(account, account->deny->data, TRUE);
+
item = xmlnode_get_child(blocklist, "item");
while (item != NULL) {
const char *jid = xmlnode_get_attrib(item, "jid");
-
purple_privacy_deny_add(account, jid, TRUE);
item = xmlnode_get_next_twin(item);
}
@@ -1609,31 +1816,27 @@ void jabber_rem_deny(PurpleConnection *gc, const char *who)
jabber_iq_send(iq);
}
-void jabber_add_feature(const char *shortname, const char *namespace, JabberFeatureEnabled cb) {
+void jabber_add_feature(const char *namespace, JabberFeatureEnabled cb) {
JabberFeature *feat;
- g_return_if_fail(shortname != NULL);
g_return_if_fail(namespace != NULL);
feat = g_new0(JabberFeature,1);
- feat->shortname = g_strdup(shortname);
feat->namespace = g_strdup(namespace);
feat->is_enabled = cb;
-
+
/* try to remove just in case it already exists in the list */
- jabber_remove_feature(shortname);
-
+ jabber_remove_feature(namespace);
+
jabber_features = g_list_append(jabber_features, feat);
}
-void jabber_remove_feature(const char *shortname) {
+void jabber_remove_feature(const char *namespace) {
GList *feature;
for(feature = jabber_features; feature; feature = feature->next) {
JabberFeature *feat = (JabberFeature*)feature->data;
- if(!strcmp(feat->shortname, shortname)) {
- g_free(feat->shortname);
+ if(!strcmp(feat->namespace, namespace)) {
g_free(feat->namespace);
-
g_free(feature->data);
jabber_features = g_list_delete_link(jabber_features, feature);
break;
@@ -1641,6 +1844,59 @@ void jabber_remove_feature(const char *shortname) {
}
}
+static void jabber_features_destroy(void)
+{
+ while (jabber_features) {
+ JabberFeature *feature = jabber_features->data;
+ g_free(feature->namespace);
+ g_free(feature);
+ jabber_features = g_list_remove_link(jabber_features, jabber_features);
+ }
+}
+
+void jabber_add_identity(const gchar *category, const gchar *type, const gchar *lang, const gchar *name) {
+ GList *identity;
+ JabberIdentity *ident;
+ /* both required according to XEP-0030 */
+ g_return_if_fail(category != NULL);
+ g_return_if_fail(type != NULL);
+
+ for(identity = jabber_identities; identity; identity = identity->next) {
+ JabberIdentity *ident = (JabberIdentity*)identity->data;
+ if (!strcmp(ident->category, category) &&
+ !strcmp(ident->type, type) &&
+ ((!ident->lang && !lang) || (ident->lang && lang && !strcmp(ident->lang, lang)))) {
+ return;
+ }
+ }
+
+ ident = g_new0(JabberIdentity, 1);
+ ident->category = g_strdup(category);
+ ident->type = g_strdup(type);
+ ident->lang = g_strdup(lang);
+ ident->name = g_strdup(name);
+ jabber_identities = g_list_prepend(jabber_identities, ident);
+}
+
+static void jabber_identities_destroy(void)
+{
+ while (jabber_identities) {
+ JabberIdentity *id = jabber_identities->data;
+ g_free(id->category);
+ g_free(id->type);
+ g_free(id->lang);
+ g_free(id->name);
+ g_free(id);
+ jabber_identities = g_list_remove_link(jabber_identities, jabber_identities);
+ }
+}
+
+gboolean jabber_stream_is_ssl(JabberStream *js)
+{
+ return (js->bosh && jabber_bosh_connection_is_ssl(js->bosh)) ||
+ (!js->bosh && js->gsc);
+}
+
const char *jabber_list_icon(PurpleAccount *a, PurpleBuddy *b)
{
return "jabber";
@@ -1650,19 +1906,42 @@ const char* jabber_list_emblem(PurpleBuddy *b)
{
JabberStream *js;
JabberBuddy *jb = NULL;
+ PurpleConnection *gc = purple_account_get_connection(purple_buddy_get_account(b));
- if(!b->account->gc)
+ if(!gc)
return NULL;
- js = b->account->gc->proto_data;
+ js = gc->proto_data;
if(js)
- jb = jabber_buddy_find(js, b->name, FALSE);
+ jb = jabber_buddy_find(js, purple_buddy_get_name(b), FALSE);
if(!PURPLE_BUDDY_IS_ONLINE(b)) {
if(jb && (jb->subscription & JABBER_SUB_PENDING ||
!(jb->subscription & JABBER_SUB_TO)))
return "not-authorized";
}
+
+ if (jb) {
+ JabberBuddyResource *jbr = jabber_buddy_find_resource(jb, NULL);
+ if (jbr) {
+ const gchar *client_type =
+ jabber_resource_get_identity_category_type(jbr, "client");
+
+ if (client_type) {
+ if (strcmp(client_type, "phone") == 0) {
+ return "mobile";
+ } else if (strcmp(client_type, "web") == 0) {
+ return "external";
+ } else if (strcmp(client_type, "handheld") == 0) {
+ return "hiptop";
+ } else if (strcmp(client_type, "bot") == 0) {
+ return "bot";
+ }
+ /* the default value "pc" falls through and has no emblem */
+ }
+ }
+ }
+
return NULL;
}
@@ -1670,19 +1949,22 @@ char *jabber_status_text(PurpleBuddy *b)
{
char *ret = NULL;
JabberBuddy *jb = NULL;
-
- if (b->account->gc && b->account->gc->proto_data)
- jb = jabber_buddy_find(b->account->gc->proto_data, b->name, FALSE);
+ PurpleAccount *account = purple_buddy_get_account(b);
+ PurpleConnection *gc = purple_account_get_connection(account);
+
+ if (gc && gc->proto_data)
+ jb = jabber_buddy_find(gc->proto_data, purple_buddy_get_name(b), FALSE);
if(jb && !PURPLE_BUDDY_IS_ONLINE(b) && (jb->subscription & JABBER_SUB_PENDING || !(jb->subscription & JABBER_SUB_TO))) {
ret = g_strdup(_("Not Authorized"));
} else if(jb && !PURPLE_BUDDY_IS_ONLINE(b) && jb->error_msg) {
ret = g_strdup(jb->error_msg);
} else {
+ PurplePresence *presence = purple_buddy_get_presence(b);
+ PurpleStatus *status =purple_presence_get_active_status(presence);
char *stripped;
- if(!(stripped = purple_markup_strip_html(jabber_buddy_get_status_msg(jb)))) {
- PurplePresence *presence = purple_buddy_get_presence(b);
+ if(!(stripped = purple_markup_strip_html(purple_status_get_attr_string(status, "message")))) {
if (purple_presence_is_status_primitive_active(presence, PURPLE_STATUS_TUNE)) {
PurpleStatus *status = purple_presence_get_status(presence, "tune");
stripped = g_strdup(purple_status_get_attr_string(status, PURPLE_TUNE_TITLE));
@@ -1698,17 +1980,72 @@ char *jabber_status_text(PurpleBuddy *b)
return ret;
}
+static void
+jabber_tooltip_add_resource_text(JabberBuddyResource *jbr,
+ PurpleNotifyUserInfo *user_info, gboolean multiple_resources)
+{
+ char *text = NULL;
+ char *res = NULL;
+ char *label, *value;
+ const char *state;
+
+ if(jbr->status) {
+ char *tmp;
+ text = purple_strreplace(jbr->status, "\n", "<br />\n");
+ tmp = purple_markup_strip_html(text);
+ g_free(text);
+ text = g_markup_escape_text(tmp, -1);
+ g_free(tmp);
+ }
+
+ if(jbr->name)
+ res = g_strdup_printf(" (%s)", jbr->name);
+
+ state = jabber_buddy_state_get_name(jbr->state);
+ if (text != NULL && !purple_utf8_strcasecmp(state, text)) {
+ g_free(text);
+ text = NULL;
+ }
+
+ label = g_strdup_printf("%s%s", _("Status"), (res ? res : ""));
+ value = g_strdup_printf("%s%s%s", state, (text ? ": " : ""), (text ? text : ""));
+
+ purple_notify_user_info_add_pair(user_info, label, value);
+ g_free(label);
+ g_free(value);
+ g_free(text);
+
+ /* if the resource is idle, show that */
+ /* only show it if there is more than one resource available for
+ the buddy, since the "general" idleness will be shown anyway,
+ this way we can see see the idleness of lower-priority resources */
+ if (jbr->idle && multiple_resources) {
+ gchar *idle_str =
+ purple_str_seconds_to_string(time(NULL) - jbr->idle);
+ label = g_strdup_printf("%s%s", _("Idle"), (res ? res : ""));
+ purple_notify_user_info_add_pair(user_info, label, idle_str);
+ g_free(idle_str);
+ g_free(label);
+ }
+ g_free(res);
+}
+
void jabber_tooltip_text(PurpleBuddy *b, PurpleNotifyUserInfo *user_info, gboolean full)
{
JabberBuddy *jb;
+ PurpleAccount *account;
+ PurpleConnection *gc;
g_return_if_fail(b != NULL);
- g_return_if_fail(b->account != NULL);
- g_return_if_fail(b->account->gc != NULL);
- g_return_if_fail(b->account->gc->proto_data != NULL);
- jb = jabber_buddy_find(b->account->gc->proto_data, b->name,
- FALSE);
+ account = purple_buddy_get_account(b);
+ g_return_if_fail(account != NULL);
+
+ gc = purple_account_get_connection(account);
+ g_return_if_fail(gc != NULL);
+ g_return_if_fail(gc->proto_data != NULL);
+
+ jb = jabber_buddy_find(gc->proto_data, purple_buddy_get_name(b), FALSE);
if(jb) {
JabberBuddyResource *jbr = NULL;
@@ -1716,27 +2053,27 @@ void jabber_tooltip_text(PurpleBuddy *b, PurpleNotifyUserInfo *user_info, gboole
const char *sub;
GList *l;
const char *mood;
+ gboolean multiple_resources =
+ jb->resources && g_list_next(jb->resources);
+ JabberBuddyResource *top_jbr = jabber_buddy_find_resource(jb, NULL);
+
+ /* resource-specific info for the top resource */
+ if (top_jbr) {
+ jabber_tooltip_add_resource_text(top_jbr, user_info,
+ multiple_resources);
+ }
- if (full) {
- PurpleStatus *status;
-
- if(jb->subscription & JABBER_SUB_FROM) {
- if(jb->subscription & JABBER_SUB_TO)
- sub = _("Both");
- else if(jb->subscription & JABBER_SUB_PENDING)
- sub = _("From (To pending)");
- else
- sub = _("From");
- } else {
- if(jb->subscription & JABBER_SUB_TO)
- sub = _("To");
- else if(jb->subscription & JABBER_SUB_PENDING)
- sub = _("None (To pending)");
- else
- sub = _("None");
+ for(l=jb->resources; l; l = l->next) {
+ jbr = l->data;
+ /* the remaining resources */
+ if (jbr != top_jbr) {
+ jabber_tooltip_add_resource_text(jbr, user_info,
+ multiple_resources);
}
+ }
- purple_notify_user_info_add_pair(user_info, _("Subscription"), sub);
+ if (full) {
+ PurpleStatus *status;
status = purple_presence_get_active_status(presence);
mood = purple_status_get_attr_string(status, "mood");
@@ -1762,47 +2099,25 @@ void jabber_tooltip_text(PurpleBuddy *b, PurpleNotifyUserInfo *user_info, gboole
g_free(playing);
}
}
- }
-
- for(l=jb->resources; l; l = l->next) {
- char *text = NULL;
- char *res = NULL;
- char *label, *value;
- const char *state;
-
- jbr = l->data;
-
- if(jbr->status) {
- char *tmp;
- text = purple_strreplace(jbr->status, "\n", "<br />\n");
- tmp = purple_markup_strip_html(text);
- g_free(text);
- text = g_markup_escape_text(tmp, -1);
- g_free(tmp);
- }
- if(jbr->name)
- res = g_strdup_printf(" (%s)", jbr->name);
-
- state = jabber_buddy_state_get_name(jbr->state);
- if (text != NULL && !purple_utf8_strcasecmp(state, text)) {
- g_free(text);
- text = NULL;
+ if(jb->subscription & JABBER_SUB_FROM) {
+ if(jb->subscription & JABBER_SUB_TO)
+ sub = _("Both");
+ else if(jb->subscription & JABBER_SUB_PENDING)
+ sub = _("From (To pending)");
+ else
+ sub = _("From");
+ } else {
+ if(jb->subscription & JABBER_SUB_TO)
+ sub = _("To");
+ else if(jb->subscription & JABBER_SUB_PENDING)
+ sub = _("None (To pending)");
+ else
+ sub = _("None");
}
- label = g_strdup_printf("%s%s",
- _("Status"), (res ? res : ""));
- value = g_strdup_printf("%s%s%s",
- state,
- (text ? ": " : ""),
- (text ? text : ""));
-
- purple_notify_user_info_add_pair(user_info, label, value);
+ purple_notify_user_info_add_pair(user_info, _("Subscription"), sub);
- g_free(label);
- g_free(value);
- g_free(text);
- g_free(res);
}
if(!PURPLE_BUDDY_IS_ONLINE(b) && jb->error_msg) {
@@ -1816,9 +2131,12 @@ GList *jabber_status_types(PurpleAccount *account)
PurpleStatusType *type;
GList *types = NULL;
PurpleValue *priority_value;
+ PurpleValue *buzz_enabled;
priority_value = purple_value_new(PURPLE_TYPE_INT);
purple_value_set_int(priority_value, 1);
+ buzz_enabled = purple_value_new(PURPLE_TYPE_BOOLEAN);
+ purple_value_set_boolean(buzz_enabled, TRUE);
type = purple_status_type_new_with_attrs(PURPLE_STATUS_AVAILABLE,
jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_ONLINE),
NULL, TRUE, TRUE, FALSE,
@@ -1827,12 +2145,14 @@ GList *jabber_status_types(PurpleAccount *account)
"mood", _("Mood"), purple_value_new(PURPLE_TYPE_STRING),
"moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING),
"nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING),
- "buzz", _("Allow Buzz"), purple_value_new(PURPLE_TYPE_BOOLEAN),
+ "buzz", _("Allow Buzz"), buzz_enabled,
NULL);
types = g_list_append(types, type);
priority_value = purple_value_new(PURPLE_TYPE_INT);
purple_value_set_int(priority_value, 1);
+ buzz_enabled = purple_value_new(PURPLE_TYPE_BOOLEAN);
+ purple_value_set_boolean(buzz_enabled, TRUE);
type = purple_status_type_new_with_attrs(PURPLE_STATUS_AVAILABLE,
jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_CHAT),
_("Chatty"), TRUE, TRUE, FALSE,
@@ -1841,12 +2161,14 @@ GList *jabber_status_types(PurpleAccount *account)
"mood", _("Mood"), purple_value_new(PURPLE_TYPE_STRING),
"moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING),
"nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING),
- "buzz", _("Allow Buzz"), purple_value_new(PURPLE_TYPE_BOOLEAN),
+ "buzz", _("Allow Buzz"), buzz_enabled,
NULL);
types = g_list_append(types, type);
priority_value = purple_value_new(PURPLE_TYPE_INT);
purple_value_set_int(priority_value, 0);
+ buzz_enabled = purple_value_new(PURPLE_TYPE_BOOLEAN);
+ purple_value_set_boolean(buzz_enabled, TRUE);
type = purple_status_type_new_with_attrs(PURPLE_STATUS_AWAY,
jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_AWAY),
NULL, TRUE, TRUE, FALSE,
@@ -1855,12 +2177,14 @@ GList *jabber_status_types(PurpleAccount *account)
"mood", _("Mood"), purple_value_new(PURPLE_TYPE_STRING),
"moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING),
"nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING),
- "buzz", _("Allow Buzz"), purple_value_new(PURPLE_TYPE_BOOLEAN),
+ "buzz", _("Allow Buzz"), buzz_enabled,
NULL);
types = g_list_append(types, type);
priority_value = purple_value_new(PURPLE_TYPE_INT);
purple_value_set_int(priority_value, 0);
+ buzz_enabled = purple_value_new(PURPLE_TYPE_BOOLEAN);
+ purple_value_set_boolean(buzz_enabled, TRUE);
type = purple_status_type_new_with_attrs(PURPLE_STATUS_EXTENDED_AWAY,
jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_XA),
NULL, TRUE, TRUE, FALSE,
@@ -1869,7 +2193,7 @@ GList *jabber_status_types(PurpleAccount *account)
"mood", _("Mood"), purple_value_new(PURPLE_TYPE_STRING),
"moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING),
"nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING),
- "buzz", _("Allow Buzz"), purple_value_new(PURPLE_TYPE_BOOLEAN),
+ "buzz", _("Allow Buzz"), buzz_enabled,
NULL);
types = g_list_append(types, type);
@@ -1883,7 +2207,6 @@ GList *jabber_status_types(PurpleAccount *account)
"mood", _("Mood"), purple_value_new(PURPLE_TYPE_STRING),
"moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING),
"nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING),
- "buzz", _("Allow Buzz"), purple_value_new(PURPLE_TYPE_BOOLEAN),
NULL);
types = g_list_append(types, type);
@@ -1917,14 +2240,11 @@ GList *jabber_status_types(PurpleAccount *account)
}
static void
-jabber_password_change_result_cb(JabberStream *js, xmlnode *packet,
- gpointer data)
+jabber_password_change_result_cb(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data)
{
- const char *type;
-
- type = xmlnode_get_attrib(packet, "type");
-
- if(type && !strcmp(type, "result")) {
+ if (type == JABBER_IQ_RESULT) {
purple_notify_info(js->gc, _("Password Changed"), _("Password Changed"),
_("Your password has been changed."));
@@ -2029,7 +2349,7 @@ GList *jabber_actions(PurplePlugin *plugin, gpointer context)
if(js->pep)
jabber_pep_init_actions(&m);
-
+
if(js->commands)
jabber_adhoc_init_server_commands(js, &m);
@@ -2044,19 +2364,24 @@ PurpleChat *jabber_find_blist_chat(PurpleAccount *account, const char *name)
if(!(jid = jabber_id_new(name)))
return NULL;
- for(gnode = purple_get_blist()->root; gnode; gnode = gnode->next) {
- for(cnode = gnode->child; cnode; cnode = cnode->next) {
+ for(gnode = purple_blist_get_root(); gnode;
+ gnode = purple_blist_node_get_sibling_next(gnode)) {
+ for(cnode = purple_blist_node_get_first_child(gnode);
+ cnode;
+ cnode = purple_blist_node_get_sibling_next(cnode)) {
PurpleChat *chat = (PurpleChat*)cnode;
const char *room, *server;
+ GHashTable *components;
if(!PURPLE_BLIST_NODE_IS_CHAT(cnode))
continue;
- if(chat->account != account)
+ if (purple_chat_get_account(chat) != account)
continue;
- if(!(room = g_hash_table_lookup(chat->components, "room")))
+ components = purple_chat_get_components(chat);
+ if(!(room = g_hash_table_lookup(components, "room")))
continue;
- if(!(server = g_hash_table_lookup(chat->components, "server")))
+ if(!(server = g_hash_table_lookup(components, "server")))
continue;
if(jid->node && jid->domain &&
@@ -2076,7 +2401,7 @@ void jabber_convo_closed(PurpleConnection *gc, const char *who)
JabberID *jid;
JabberBuddy *jb;
JabberBuddyResource *jbr;
-
+
if(!(jid = jabber_id_new(who)))
return;
@@ -2086,8 +2411,6 @@ void jabber_convo_closed(PurpleConnection *gc, const char *who)
g_free(jbr->thread_id);
jbr->thread_id = NULL;
}
- if(jbr->chat_states == JABBER_CHAT_STATES_SUPPORTED)
- jabber_message_conv_closed(js, who);
}
jabber_id_free(jid);
@@ -2285,7 +2608,25 @@ static PurpleCmdRet jabber_cmd_chat_topic(PurpleConversation *conv,
if (!chat)
return PURPLE_CMD_RET_FAILED;
- jabber_chat_change_topic(chat, args ? args[0] : NULL);
+ if (args && args[0] && *args[0])
+ jabber_chat_change_topic(chat, args[0]);
+ else {
+ const char *cur = purple_conv_chat_get_topic(PURPLE_CONV_CHAT(conv));
+ char *buf, *tmp, *tmp2;
+
+ if (cur) {
+ tmp = g_markup_escape_text(cur, -1);
+ tmp2 = purple_markup_linkify(tmp);
+ buf = g_strdup_printf(_("current topic is: %s"), tmp2);
+ g_free(tmp);
+ g_free(tmp2);
+ } else
+ buf = g_strdup(_("No topic is set"));
+ purple_conv_chat_write(PURPLE_CONV_CHAT(conv), "", buf,
+ PURPLE_MESSAGE_SYSTEM | PURPLE_MESSAGE_NO_LOG, time(NULL));
+ g_free(buf);
+ }
+
return PURPLE_CMD_RET_OK;
}
@@ -2334,21 +2675,32 @@ static PurpleCmdRet jabber_cmd_chat_affiliate(PurpleConversation *conv,
{
JabberChat *chat = jabber_chat_find_by_conv(conv);
- if (!chat || !args || !args[0] || !args[1])
+ if (!chat || !args || !args[0])
return PURPLE_CMD_RET_FAILED;
- if (strcmp(args[1], "owner") != 0 &&
- strcmp(args[1], "admin") != 0 &&
- strcmp(args[1], "member") != 0 &&
- strcmp(args[1], "outcast") != 0 &&
- strcmp(args[1], "none") != 0) {
- *error = g_strdup_printf(_("Unknown affiliation: \"%s\""), args[1]);
+ if (strcmp(args[0], "owner") != 0 &&
+ strcmp(args[0], "admin") != 0 &&
+ strcmp(args[0], "member") != 0 &&
+ strcmp(args[0], "outcast") != 0 &&
+ strcmp(args[0], "none") != 0) {
+ *error = g_strdup_printf(_("Unknown affiliation: \"%s\""), args[0]);
return PURPLE_CMD_RET_FAILED;
}
- if (!jabber_chat_affiliate_user(chat, args[0], args[1])) {
- *error = g_strdup_printf(_("Unable to affiliate user %s as \"%s\""), args[0], args[1]);
- return PURPLE_CMD_RET_FAILED;
+ if (args[1]) {
+ int i;
+ char **nicks = g_strsplit(args[1], " ", -1);
+
+ for (i = 0; nicks[i]; ++i)
+ if (!jabber_chat_affiliate_user(chat, nicks[i], args[0])) {
+ *error = g_strdup_printf(_("Unable to affiliate user %s as \"%s\""), nicks[i], args[0]);
+ g_strfreev(nicks);
+ return PURPLE_CMD_RET_FAILED;
+ }
+
+ g_strfreev(nicks);
+ } else {
+ jabber_chat_affiliation_list(chat, args[0]);
}
return PURPLE_CMD_RET_OK;
@@ -2359,23 +2711,32 @@ static PurpleCmdRet jabber_cmd_chat_role(PurpleConversation *conv,
{
JabberChat *chat = jabber_chat_find_by_conv(conv);
- if (!chat || !args || !args[0] || !args[1])
+ if (!chat || !args || !args[0])
return PURPLE_CMD_RET_FAILED;
- if (strcmp(args[1], "moderator") != 0 &&
- strcmp(args[1], "participant") != 0 &&
- strcmp(args[1], "visitor") != 0 &&
- strcmp(args[1], "none") != 0) {
- *error = g_strdup_printf(_("Unknown role: \"%s\""), args[1]);
+ if (strcmp(args[0], "moderator") != 0 &&
+ strcmp(args[0], "participant") != 0 &&
+ strcmp(args[0], "visitor") != 0 &&
+ strcmp(args[0], "none") != 0) {
+ *error = g_strdup_printf(_("Unknown role: \"%s\""), args[0]);
return PURPLE_CMD_RET_FAILED;
}
- if (!jabber_chat_role_user(chat, args[0], args[1])) {
- *error = g_strdup_printf(_("Unable to set role \"%s\" for user: %s"),
- args[1], args[0]);
- return PURPLE_CMD_RET_FAILED;
- }
+ if (args[1]) {
+ int i;
+ char **nicks = g_strsplit(args[1], " ", -1);
+ for (i = 0; nicks[i]; i++)
+ if (!jabber_chat_role_user(chat, nicks[i], args[0])) {
+ *error = g_strdup_printf(_("Unable to set role \"%s\" for user: %s"),
+ args[0], nicks[i]);
+ return PURPLE_CMD_RET_FAILED;
+ }
+
+ g_strfreev(nicks);
+ } else {
+ jabber_chat_role_list(chat, args[0]);
+ }
return PURPLE_CMD_RET_OK;
}
@@ -2451,10 +2812,16 @@ static PurpleCmdRet jabber_cmd_chat_msg(PurpleConversation *conv,
static PurpleCmdRet jabber_cmd_ping(PurpleConversation *conv,
const char *cmd, char **args, char **error, void *data)
{
+ PurpleAccount *account;
+ PurpleConnection *pc;
+
if(!args || !args[0])
return PURPLE_CMD_RET_FAILED;
- if(!jabber_ping_jid(conv, args[0])) {
+ account = purple_conversation_get_account(conv);
+ pc = purple_account_get_connection(account);
+
+ if(!jabber_ping_jid(purple_connection_get_protocol_data(pc), args[0])) {
*error = g_strdup_printf(_("Unable to ping user %s"), args[0]);
return PURPLE_CMD_RET_FAILED;
}
@@ -2466,63 +2833,92 @@ static gboolean _jabber_send_buzz(JabberStream *js, const char *username, char *
JabberBuddy *jb;
JabberBuddyResource *jbr;
- GList *iter;
+ PurpleConnection *gc = js->gc;
+ PurpleBuddy *buddy =
+ purple_find_buddy(purple_connection_get_account(gc), username);
+ const gchar *alias =
+ buddy ? purple_buddy_get_contact_alias(buddy) : username;
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);
+ *error = g_strdup_printf(_("Unable to buzz, because there is nothing "
+ "known about %s."), alias);
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);
+ if (!jbr) {
+ *error = g_strdup_printf(_("Unable to buzz, because %s might be offline."),
+ alias);
return FALSE;
}
- if(!jbr->caps) {
- *error = g_strdup_printf(_("Unable to buzz, because there is nothing known about user %s."), username);
- return FALSE;
- }
+ if (jabber_resource_has_capability(jbr, XEP_0224_NAMESPACE)) {
+ xmlnode *buzz, *msg = xmlnode_new("message");
+ gchar *to;
- 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);
- 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");
- /* avoid offline storage */
- xmlnode_set_attrib(msg, "type", "headline");
+ buzz = xmlnode_new_child(msg, "attention");
+ xmlnode_set_namespace(buzz, XEP_0224_NAMESPACE);
- 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);
- jabber_send(js, msg);
- xmlnode_free(msg);
-
- return TRUE;
- }
+ return TRUE;
+ } else {
+ *error = g_strdup_printf(_("Unable to buzz, because %s does "
+ "not support it or does not wish to receive buzzes now."), alias);
+ return FALSE;
}
-
- *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;
+ const gchar *who;
- if(!args || !args[0])
- return PURPLE_CMD_RET_FAILED;
+ if (!args || !args[0]) {
+ /* use the buddy from conversation, if it's a one-to-one conversation */
+ if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM) {
+ who = purple_conversation_get_name(conv);
+ } else {
+ return PURPLE_CMD_RET_FAILED;
+ }
+ } else {
+ who = args[0];
+ }
- return _jabber_send_buzz(js, args[0], error) ? PURPLE_CMD_RET_OK : PURPLE_CMD_RET_FAILED;
+ if (_jabber_send_buzz(js, who, error)) {
+ const gchar *alias;
+ gchar *str;
+ PurpleBuddy *buddy =
+ purple_find_buddy(purple_connection_get_account(conv->account->gc),
+ who);
+
+ if (buddy != NULL)
+ alias = purple_buddy_get_contact_alias(buddy);
+ else
+ alias = who;
+
+ str = g_strdup_printf(_("Buzzing %s..."), alias);
+ purple_conversation_write(conv, NULL, str,
+ PURPLE_MESSAGE_SYSTEM|PURPLE_MESSAGE_NOTIFY, time(NULL));
+ g_free(str);
+
+ return PURPLE_CMD_RET_OK;
+ } else {
+ return PURPLE_CMD_RET_FAILED;
+ }
}
GList *jabber_attention_types(PurpleAccount *account)
@@ -2557,92 +2953,565 @@ gboolean jabber_offline_message(const PurpleBuddy *buddy)
return TRUE;
}
+#ifdef USE_VV
+gboolean
+jabber_audio_enabled(JabberStream *js, const char *namespace)
+{
+ PurpleMediaManager *manager = purple_media_manager_get();
+ PurpleMediaCaps caps = purple_media_manager_get_ui_caps(manager);
+
+ return (caps & (PURPLE_MEDIA_CAPS_AUDIO | PURPLE_MEDIA_CAPS_AUDIO_SINGLE_DIRECTION));
+}
+
+gboolean
+jabber_video_enabled(JabberStream *js, const char *namespace)
+{
+ PurpleMediaManager *manager = purple_media_manager_get();
+ PurpleMediaCaps caps = purple_media_manager_get_ui_caps(manager);
+
+ return (caps & (PURPLE_MEDIA_CAPS_VIDEO | PURPLE_MEDIA_CAPS_VIDEO_SINGLE_DIRECTION));
+}
+
+typedef struct {
+ PurpleAccount *account;
+ gchar *who;
+ PurpleMediaSessionType type;
+
+} JabberMediaRequest;
+
+static void
+jabber_media_cancel_cb(JabberMediaRequest *request,
+ PurpleRequestFields *fields)
+{
+ g_free(request->who);
+ g_free(request);
+}
+
+static void
+jabber_media_ok_cb(JabberMediaRequest *request, PurpleRequestFields *fields)
+{
+ PurpleRequestField *field =
+ purple_request_fields_get_field(fields, "resource");
+ int selected_id = purple_request_field_choice_get_value(field);
+ GList *labels = purple_request_field_choice_get_labels(field);
+ gchar *who = g_strdup_printf("%s/%s", request->who,
+ (gchar*)g_list_nth_data(labels, selected_id));
+ jabber_initiate_media(request->account, who, request->type);
+
+ g_free(who);
+ g_free(request->who);
+ g_free(request);
+}
+#endif
+
+gboolean
+jabber_initiate_media(PurpleAccount *account, const char *who,
+ PurpleMediaSessionType type)
+{
+#ifdef USE_VV
+ JabberStream *js = (JabberStream *)
+ purple_account_get_connection(account)->proto_data;
+ JabberBuddy *jb;
+ JabberBuddyResource *jbr = NULL;
+ char *resource;
+
+ if (!js) {
+ purple_debug_error("jabber",
+ "jabber_initiate_media: NULL stream\n");
+ return FALSE;
+ }
+
+
+ if((resource = jabber_get_resource(who)) != NULL) {
+ /* they've specified a resource, no need to ask or
+ * default or anything, just do it */
+
+ jb = jabber_buddy_find(js, who, FALSE);
+ jbr = jabber_buddy_find_resource(jb, resource);
+ g_free(resource);
+
+ if (type & PURPLE_MEDIA_AUDIO &&
+ !jabber_resource_has_capability(jbr,
+ JINGLE_APP_RTP_SUPPORT_AUDIO) &&
+ jabber_resource_has_capability(jbr,
+ GOOGLE_VOICE_CAP))
+ return jabber_google_session_initiate(js, who, type);
+ else
+ return jingle_rtp_initiate_media(js, who, type);
+ }
+
+ jb = jabber_buddy_find(js, who, FALSE);
+
+ if(!jb || !jb->resources) {
+ /* no resources online, we're trying to initiate with someone
+ * whose presence we're not subscribed to, or
+ * someone who is offline. Let's inform the user */
+ char *msg;
+
+ if(!jb) {
+ msg = g_strdup_printf(_("Unable to initiate media with %s: invalid JID"), who);
+ } else if(jb->subscription & JABBER_SUB_TO) {
+ msg = g_strdup_printf(_("Unable to initiate media with %s: user is not online"), who);
+ } else {
+ msg = g_strdup_printf(_("Unable to initiate media with %s: not subscribed to user presence"), who);
+ }
+
+ purple_notify_error(account, _("Media Initiation Failed"),
+ _("Media Initiation Failed"), msg);
+ g_free(msg);
+ return FALSE;
+ } else if(!jb->resources->next) {
+ /* only 1 resource online (probably our most common case)
+ * so no need to ask who to initiate with */
+ gchar *name;
+ gboolean result;
+ jbr = jb->resources->data;
+ name = g_strdup_printf("%s/%s", who, jbr->name);
+ result = jabber_initiate_media(account, name, type);
+ g_free(name);
+ return result;
+ } else {
+ /* we've got multiple resources,
+ * we need to pick one to initiate with */
+ GList *l;
+ char *msg;
+ PurpleRequestFields *fields;
+ PurpleRequestField *field = purple_request_field_choice_new(
+ "resource", _("Resource"), 0);
+ PurpleRequestFieldGroup *group;
+ JabberMediaRequest *request;
+
+ for(l = jb->resources; l; l = l->next)
+ {
+ JabberBuddyResource *ljbr = l->data;
+ PurpleMediaCaps caps;
+ gchar *name;
+ name = g_strdup_printf("%s/%s", who, ljbr->name);
+ caps = jabber_get_media_caps(account, name);
+ g_free(name);
+
+ if ((type & PURPLE_MEDIA_AUDIO) &&
+ (type & PURPLE_MEDIA_VIDEO)) {
+ if (caps & PURPLE_MEDIA_CAPS_AUDIO_VIDEO) {
+ jbr = ljbr;
+ purple_request_field_choice_add(
+ field, jbr->name);
+ }
+ } else if (type & (PURPLE_MEDIA_AUDIO) &&
+ (caps & PURPLE_MEDIA_CAPS_AUDIO)) {
+ jbr = ljbr;
+ purple_request_field_choice_add(
+ field, jbr->name);
+ }else if (type & (PURPLE_MEDIA_VIDEO) &&
+ (caps & PURPLE_MEDIA_CAPS_VIDEO)) {
+ jbr = ljbr;
+ purple_request_field_choice_add(
+ field, jbr->name);
+ }
+ }
+
+ if (jbr == NULL) {
+ purple_debug_error("jabber",
+ "No resources available\n");
+ return FALSE;
+ }
+
+ if (g_list_length(purple_request_field_choice_get_labels(
+ field)) <= 1) {
+ gchar *name;
+ gboolean result;
+ purple_request_field_destroy(field);
+ name = g_strdup_printf("%s/%s", who, jbr->name);
+ result = jabber_initiate_media(account, name, type);
+ g_free(name);
+ return result;
+ }
+
+ msg = g_strdup_printf(_("Please select the resource of %s with which you would like to start a media session."), who);
+ fields = purple_request_fields_new();
+ group = purple_request_field_group_new(NULL);
+ request = g_new0(JabberMediaRequest, 1);
+ request->account = account;
+ request->who = g_strdup(who);
+ request->type = type;
+
+ purple_request_field_group_add_field(group, field);
+ purple_request_fields_add_group(fields, group);
+ purple_request_fields(account, _("Select a Resource"), msg,
+ NULL, fields, _("Initiate Media"),
+ G_CALLBACK(jabber_media_ok_cb), _("Cancel"),
+ G_CALLBACK(jabber_media_cancel_cb),
+ account, who, NULL, request);
+
+ g_free(msg);
+ return TRUE;
+ }
+#endif
+ return FALSE;
+}
+
+PurpleMediaCaps jabber_get_media_caps(PurpleAccount *account, const char *who)
+{
+#ifdef USE_VV
+ JabberStream *js = (JabberStream *)
+ purple_account_get_connection(account)->proto_data;
+ JabberBuddy *jb;
+ JabberBuddyResource *jbr;
+ PurpleMediaCaps caps = PURPLE_MEDIA_CAPS_NONE;
+ gchar *resource;
+
+ if (!js) {
+ purple_debug_info("jabber",
+ "jabber_can_do_media: NULL stream\n");
+ return FALSE;
+ }
+
+ if ((resource = jabber_get_resource(who)) != NULL) {
+ /* they've specified a resource, no need to ask or
+ * default or anything, just do it */
+
+ jb = jabber_buddy_find(js, who, FALSE);
+ jbr = jabber_buddy_find_resource(jb, resource);
+ g_free(resource);
+
+ if (!jbr) {
+ purple_debug_error("jabber", "jabber_get_media_caps:"
+ " Can't find resource %s\n", who);
+ return caps;
+ }
+
+ if (jabber_resource_has_capability(jbr,
+ JINGLE_APP_RTP_SUPPORT_AUDIO))
+ caps |= PURPLE_MEDIA_CAPS_AUDIO_SINGLE_DIRECTION |
+ PURPLE_MEDIA_CAPS_AUDIO;
+ if (jabber_resource_has_capability(jbr,
+ JINGLE_APP_RTP_SUPPORT_VIDEO))
+ caps |= PURPLE_MEDIA_CAPS_VIDEO_SINGLE_DIRECTION |
+ PURPLE_MEDIA_CAPS_VIDEO;
+ if (caps & PURPLE_MEDIA_CAPS_AUDIO && caps &
+ PURPLE_MEDIA_CAPS_VIDEO)
+ caps |= PURPLE_MEDIA_CAPS_AUDIO_VIDEO;
+ if (caps != PURPLE_MEDIA_CAPS_NONE) {
+ if (!jabber_resource_has_capability(jbr,
+ JINGLE_TRANSPORT_ICEUDP) &&
+ !jabber_resource_has_capability(jbr,
+ JINGLE_TRANSPORT_RAWUDP)) {
+ purple_debug_info("jingle-rtp", "Buddy doesn't "
+ "support the same transport types\n");
+ caps = PURPLE_MEDIA_CAPS_NONE;
+ } else
+ caps |= PURPLE_MEDIA_CAPS_MODIFY_SESSION |
+ PURPLE_MEDIA_CAPS_CHANGE_DIRECTION;
+ }
+ if (jabber_resource_has_capability(jbr, GOOGLE_VOICE_CAP)) {
+ caps |= PURPLE_MEDIA_CAPS_AUDIO;
+ if (jabber_resource_has_capability(jbr,
+ GOOGLE_VIDEO_CAP))
+ caps |= PURPLE_MEDIA_CAPS_AUDIO_VIDEO;
+ }
+ return caps;
+ }
+
+ jb = jabber_buddy_find(js, who, FALSE);
+
+ if(!jb || !jb->resources) {
+ /* no resources online, we're trying to get caps for someone
+ * whose presence we're not subscribed to, or
+ * someone who is offline. */
+ return caps;
+ } else if(!jb->resources->next) {
+ /* only 1 resource online (probably our most common case) */
+ gchar *name;
+ jbr = jb->resources->data;
+ name = g_strdup_printf("%s/%s", who, jbr->name);
+ caps = jabber_get_media_caps(account, name);
+ g_free(name);
+ } else {
+ /* we've got multiple resources, combine their caps */
+ GList *l;
+
+ for(l = jb->resources; l; l = l->next)
+ {
+ gchar *name;
+ jbr = l->data;
+ name = g_strdup_printf("%s/%s", who, jbr->name);
+ caps |= jabber_get_media_caps(account, name);
+ g_free(name);
+ }
+ }
+
+ return caps;
+#else
+ return PURPLE_MEDIA_CAPS_NONE;
+#endif
+}
+
void jabber_register_commands(void)
{
- purple_cmd_register("config", "", PURPLE_CMD_P_PRPL,
+ PurpleCmdId id;
+ id = purple_cmd_register("config", "", PURPLE_CMD_P_PRPL,
PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
"prpl-jabber", jabber_cmd_chat_config,
_("config: Configure a chat room."), NULL);
- purple_cmd_register("configure", "", PURPLE_CMD_P_PRPL,
+ jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
+
+ id = purple_cmd_register("configure", "", PURPLE_CMD_P_PRPL,
PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
"prpl-jabber", jabber_cmd_chat_config,
_("configure: Configure a chat room."), NULL);
- purple_cmd_register("nick", "s", PURPLE_CMD_P_PRPL,
+ jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
+
+ id = purple_cmd_register("nick", "s", PURPLE_CMD_P_PRPL,
PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
"prpl-jabber", jabber_cmd_chat_nick,
_("nick &lt;new nickname&gt;: Change your nickname."),
NULL);
- purple_cmd_register("part", "s", PURPLE_CMD_P_PRPL,
+ jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
+
+ id = purple_cmd_register("part", "s", PURPLE_CMD_P_PRPL,
PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
jabber_cmd_chat_part, _("part [room]: Leave the room."),
NULL);
- purple_cmd_register("register", "", PURPLE_CMD_P_PRPL,
+ jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
+
+ id = purple_cmd_register("register", "", PURPLE_CMD_P_PRPL,
PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
"prpl-jabber", jabber_cmd_chat_register,
_("register: Register with a chat room."), NULL);
+ jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
+
/* XXX: there needs to be a core /topic cmd, methinks */
- purple_cmd_register("topic", "s", PURPLE_CMD_P_PRPL,
+ id = purple_cmd_register("topic", "s", PURPLE_CMD_P_PRPL,
PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
jabber_cmd_chat_topic,
_("topic [new topic]: View or change the topic."),
NULL);
- purple_cmd_register("ban", "ws", PURPLE_CMD_P_PRPL,
+ jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
+
+ id = purple_cmd_register("ban", "ws", PURPLE_CMD_P_PRPL,
PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
jabber_cmd_chat_ban,
_("ban &lt;user&gt; [reason]: Ban a user from the room."),
NULL);
- purple_cmd_register("affiliate", "ws", PURPLE_CMD_P_PRPL,
+ jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
+
+ id = purple_cmd_register("affiliate", "ws", PURPLE_CMD_P_PRPL,
PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
jabber_cmd_chat_affiliate,
- _("affiliate &lt;user&gt; &lt;owner|admin|member|outcast|none&gt;: Set a user's affiliation with the room."),
+ _("affiliate &lt;owner|admin|member|outcast|none&gt; [nick1] [nick2] ...: Get the users with an affiliation or set users' affiliation with the room."),
NULL);
- purple_cmd_register("role", "ws", PURPLE_CMD_P_PRPL,
+ jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
+
+ id = purple_cmd_register("role", "ws", PURPLE_CMD_P_PRPL,
PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
jabber_cmd_chat_role,
- _("role &lt;user&gt; &lt;moderator|participant|visitor|none&gt;: Set a user's role in the room."),
+ _("role &lt;moderator|participant|visitor|none&gt; [nick1] [nick2] ...: Get the users with an role or set users' role with the room."),
NULL);
- purple_cmd_register("invite", "ws", PURPLE_CMD_P_PRPL,
+ jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
+
+ id = purple_cmd_register("invite", "ws", PURPLE_CMD_P_PRPL,
PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
jabber_cmd_chat_invite,
_("invite &lt;user&gt; [message]: Invite a user to the room."),
NULL);
- purple_cmd_register("join", "ws", PURPLE_CMD_P_PRPL,
+ jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
+
+ id = purple_cmd_register("join", "ws", PURPLE_CMD_P_PRPL,
PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
jabber_cmd_chat_join,
_("join: &lt;room&gt; [password]: Join a chat on this server."),
NULL);
- purple_cmd_register("kick", "ws", PURPLE_CMD_P_PRPL,
+ jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
+
+ id = purple_cmd_register("kick", "ws", PURPLE_CMD_P_PRPL,
PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
jabber_cmd_chat_kick,
_("kick &lt;user&gt; [reason]: Kick a user from the room."),
NULL);
- purple_cmd_register("msg", "ws", PURPLE_CMD_P_PRPL,
+ jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
+
+ id = purple_cmd_register("msg", "ws", PURPLE_CMD_P_PRPL,
PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
"prpl-jabber", jabber_cmd_chat_msg,
_("msg &lt;user&gt; &lt;message&gt;: Send a private message to another user."),
NULL);
- purple_cmd_register("ping", "w", PURPLE_CMD_P_PRPL,
+ jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
+
+ id = purple_cmd_register("ping", "w", PURPLE_CMD_P_PRPL,
PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM |
PURPLE_CMD_FLAG_PRPL_ONLY,
"prpl-jabber", jabber_cmd_ping,
_("ping &lt;jid&gt;: Ping a user/component/server."),
NULL);
- purple_cmd_register("buzz", "s", PURPLE_CMD_P_PRPL,
- PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_PRPL_ONLY,
+ jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
+
+ id = purple_cmd_register("buzz", "w", PURPLE_CMD_P_PRPL,
+ PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_PRPL_ONLY |
+ PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS,
"prpl-jabber", jabber_cmd_buzz,
_("buzz: Buzz a user to get their attention"), NULL);
}
+void jabber_unregister_commands(void)
+{
+ while (jabber_cmds != NULL) {
+ purple_cmd_unregister(GPOINTER_TO_UINT(jabber_cmds->data));
+ jabber_cmds = g_slist_delete_link(jabber_cmds, jabber_cmds);
+ }
+}
+
+/* IPC functions */
+
+/**
+ * IPC function for determining if a contact supports a certain feature.
+ *
+ * @param account The PurpleAccount
+ * @param jid The full JID of the contact.
+ * @param feature The feature's namespace.
+ *
+ * @return TRUE if supports feature; else FALSE.
+ */
+static gboolean
+jabber_ipc_contact_has_feature(PurpleAccount *account, const gchar *jid,
+ const gchar *feature)
+{
+ PurpleConnection *gc = purple_account_get_connection(account);
+ JabberStream *js;
+ JabberBuddy *jb;
+ JabberBuddyResource *jbr;
+ gchar *resource;
+
+ if (!purple_account_is_connected(account))
+ return FALSE;
+ js = gc->proto_data;
+
+ if (!(resource = jabber_get_resource(jid)) ||
+ !(jb = jabber_buddy_find(js, jid, FALSE)) ||
+ !(jbr = jabber_buddy_find_resource(jb, resource))) {
+ g_free(resource);
+ return FALSE;
+ }
+
+ g_free(resource);
+
+ return jabber_resource_has_capability(jbr, feature);
+}
+
+static void
+jabber_ipc_add_feature(const gchar *feature)
+{
+ if (!feature)
+ return;
+ jabber_add_feature(feature, 0);
+
+ /* send presence with new caps info for all connected accounts */
+ jabber_caps_broadcast_change();
+}
+
void
jabber_init_plugin(PurplePlugin *plugin)
{
- my_protocol = plugin;
+ GHashTable *ui_info = purple_core_get_ui_info();
+ const gchar *ui_type;
+ const gchar *type = "pc"; /* default client type, if unknown or
+ unspecified */
+
+ jabber_plugin = plugin;
+
+ ui_type = ui_info ? g_hash_table_lookup(ui_info, "client_type") : NULL;
+ if (ui_type) {
+ if (strcmp(ui_type, "pc") == 0 ||
+ strcmp(ui_type, "console") == 0 ||
+ strcmp(ui_type, "phone") == 0 ||
+ strcmp(ui_type, "handheld") == 0 ||
+ strcmp(ui_type, "web") == 0 ||
+ strcmp(ui_type, "bot") == 0) {
+ type = ui_type;
+ }
+ }
+
+ jabber_add_identity("client", type, NULL, PACKAGE);
+
+ /* initialize jabber_features list */
+ jabber_add_feature("jabber:iq:last", 0);
+ jabber_add_feature("jabber:iq:oob", 0);
+ jabber_add_feature("jabber:iq:time", 0);
+ jabber_add_feature("urn:xmpp:time", 0);
+ jabber_add_feature("jabber:iq:version", 0);
+ jabber_add_feature("jabber:x:conference", 0);
+ jabber_add_feature("http://jabber.org/protocol/bytestreams", 0);
+ jabber_add_feature("http://jabber.org/protocol/caps", 0);
+ jabber_add_feature("http://jabber.org/protocol/chatstates", 0);
+ jabber_add_feature("http://jabber.org/protocol/disco#info", 0);
+ jabber_add_feature("http://jabber.org/protocol/disco#items", 0);
+ jabber_add_feature("http://jabber.org/protocol/ibb", 0);
+ jabber_add_feature("http://jabber.org/protocol/muc", 0);
+ jabber_add_feature("http://jabber.org/protocol/muc#user", 0);
+ jabber_add_feature("http://jabber.org/protocol/si", 0);
+ jabber_add_feature("http://jabber.org/protocol/si/profile/file-transfer", 0);
+ jabber_add_feature("http://jabber.org/protocol/xhtml-im", 0);
+ jabber_add_feature("urn:xmpp:ping", 0);
+
+ /* Buzz/Attention */
+ jabber_add_feature(XEP_0224_NAMESPACE, jabber_buzz_isenabled);
+
+ /* Bits Of Binary */
+ jabber_add_feature(XEP_0231_NAMESPACE, 0);
+
+ /* Jingle features! */
+ jabber_add_feature(JINGLE, 0);
+ jabber_add_feature(JINGLE_TRANSPORT_RAWUDP, 0);
+
+#ifdef USE_VV
+ jabber_add_feature("http://www.google.com/xmpp/protocol/session", jabber_audio_enabled);
+ jabber_add_feature("http://www.google.com/xmpp/protocol/voice/v1", jabber_audio_enabled);
+ jabber_add_feature(JINGLE_APP_RTP_SUPPORT_AUDIO, jabber_audio_enabled);
+ jabber_add_feature(JINGLE_APP_RTP_SUPPORT_VIDEO, jabber_video_enabled);
+ jabber_add_feature(JINGLE_TRANSPORT_ICEUDP, 0);
+#endif
+
+ /* IPC functions */
+ purple_plugin_ipc_register(plugin, "contact_has_feature", PURPLE_CALLBACK(jabber_ipc_contact_has_feature),
+ purple_marshal_BOOLEAN__POINTER_POINTER_POINTER,
+ purple_value_new(PURPLE_TYPE_BOOLEAN), 3,
+ purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_ACCOUNT),
+ purple_value_new(PURPLE_TYPE_STRING),
+ purple_value_new(PURPLE_TYPE_STRING));
+
+ purple_plugin_ipc_register(plugin, "add_feature", PURPLE_CALLBACK(jabber_ipc_add_feature),
+ purple_marshal_VOID__POINTER,
+ NULL, 1,
+ purple_value_new(PURPLE_TYPE_STRING));
+
+ /* Modifying these? Look at libxmpp.c:load_plugin for the signal versions */
+ purple_plugin_ipc_register(plugin, "register_namespace_watcher",
+ PURPLE_CALLBACK(jabber_iq_signal_register),
+ purple_marshal_VOID__POINTER_POINTER,
+ NULL, 2,
+ purple_value_new(PURPLE_TYPE_STRING), /* node */
+ purple_value_new(PURPLE_TYPE_STRING)); /* namespace */
+
+ purple_plugin_ipc_register(plugin, "unregister_namespace_watcher",
+ PURPLE_CALLBACK(jabber_iq_signal_unregister),
+ purple_marshal_VOID__POINTER_POINTER,
+ NULL, 2,
+ purple_value_new(PURPLE_TYPE_STRING), /* node */
+ purple_value_new(PURPLE_TYPE_STRING)); /* namespace */
+}
+
+void
+jabber_uninit_plugin(void)
+{
+ purple_plugin_ipc_unregister_all(jabber_plugin);
+
+ jabber_features_destroy();
+ jabber_identities_destroy();
}
diff --git a/libpurple/protocols/jabber/jabber.h b/libpurple/protocols/jabber/jabber.h
index 5692525e5b..4746e1ee6d 100644
--- a/libpurple/protocols/jabber/jabber.h
+++ b/libpurple/protocols/jabber/jabber.h
@@ -19,8 +19,8 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
*/
-#ifndef _PURPLE_JABBER_H_
-#define _PURPLE_JABBER_H_
+#ifndef PURPLE_JABBER_H_
+#define PURPLE_JABBER_H_
typedef enum {
JABBER_CAP_NONE = 0,
@@ -44,6 +44,8 @@ typedef enum {
JABBER_CAP_ADHOC = 1 << 12,
JABBER_CAP_BLOCKING = 1 << 13,
+ JABBER_CAP_ITEMS = 1 << 14,
+
JABBER_CAP_RETRIEVED = 1 << 31
} JabberCapabilities;
@@ -53,23 +55,30 @@ typedef struct _JabberStream JabberStream;
#include <glib.h>
#include "circbuffer.h"
#include "connection.h"
+#include "dnsquery.h"
#include "dnssrv.h"
+#include "media.h"
+#include "mediamanager.h"
#include "roomlist.h"
#include "sslconn.h"
+#include "iq.h"
#include "jutil.h"
#include "xmlnode.h"
#include "buddy.h"
+#include "bosh.h"
#ifdef HAVE_CYRUS_SASL
#include <sasl/sasl.h>
#endif
-#define CAPS0115_NODE "http://pidgin.im/caps"
+#define CAPS0115_NODE "http://pidgin.im/"
/* Index into attention_types list */
#define JABBER_BUZZ 0
+extern PurplePlugin *jabber_plugin;
+
typedef enum {
JABBER_STREAM_OFFLINE,
JABBER_STREAM_CONNECTING,
@@ -146,7 +155,6 @@ struct _JabberStream
GList *user_directories;
GHashTable *iq_callbacks;
- GHashTable *disco_callbacks;
int next_id;
GList *bs_proxies;
@@ -154,6 +162,7 @@ struct _JabberStream
GList *file_transfers;
time_t idle;
+ time_t old_idle;
JabberID *user;
PurpleConnection *gc;
@@ -161,6 +170,7 @@ struct _JabberStream
gboolean registration;
+ char *initial_avatar_hash;
char *avatar_hash;
GSList *pending_avatar_requests;
@@ -203,24 +213,27 @@ struct _JabberStream
gboolean unregistration;
PurpleAccountUnregistrationCb unregistration_cb;
void *unregistration_user_data;
-
+
gboolean vcard_fetched;
+ /* Entity Capabilities hash */
+ char *caps_hash;
+
/* does the local server support PEP? */
gboolean pep;
/* Is Buzz enabled? */
gboolean allowBuzz;
-
+
/* A list of JabberAdHocCommands supported by the server */
GList *commands;
-
+
/* last presence update to check for differences */
JabberBuddyState old_state;
char *old_msg;
int old_priority;
char *old_avatarhash;
-
+
/* same for user tune */
char *old_artist;
char *old_title;
@@ -228,31 +241,52 @@ struct _JabberStream
char *old_uri;
int old_length;
char *old_track;
-
+
char *certificate_CN;
-
+
/* A purple timeout tag for the keepalive */
- int keepalive_timeout;
+ guint keepalive_timeout;
PurpleSrvResponse *srv_rec;
guint srv_rec_idx;
guint max_srv_rec_idx;
+
+ /* BOSH stuff */
+ gboolean use_bosh;
+ PurpleBOSHConnection *bosh;
+
/**
* This linked list contains PurpleUtilFetchUrlData structs
* for when we lookup buddy icons from a url
*/
GSList *url_datas;
+
+ /* keep a hash table of JingleSessions */
+ GHashTable *sessions;
+
+ /* maybe this should only be present when USE_VV? */
+ gchar *stun_ip;
+ int stun_port;
+ PurpleDnsQueryData *stun_query;
+ /* later add stuff to handle TURN relays... */
};
-typedef gboolean (JabberFeatureEnabled)(JabberStream *js, const gchar *shortname, const gchar *namespace);
+typedef gboolean (JabberFeatureEnabled)(JabberStream *js, const gchar *namespace);
typedef struct _JabberFeature
{
- gchar *shortname;
gchar *namespace;
JabberFeatureEnabled *is_enabled;
} JabberFeature;
+typedef struct _JabberIdentity
+{
+ gchar *category;
+ gchar *type;
+ gchar *name;
+ gchar *lang;
+} JabberIdentity;
+
typedef struct _JabberBytestreamsStreamhost {
char *jid;
char *host;
@@ -262,14 +296,19 @@ typedef struct _JabberBytestreamsStreamhost {
/* what kind of additional features as returned from disco#info are supported? */
extern GList *jabber_features;
+extern GList *jabber_identities;
+void jabber_stream_features_parse(JabberStream *js, xmlnode *packet);
void jabber_process_packet(JabberStream *js, xmlnode **packet);
void jabber_send(JabberStream *js, xmlnode *data);
void jabber_send_raw(JabberStream *js, const char *data, int len);
+void jabber_send_signal_cb(PurpleConnection *pc, xmlnode **packet,
+ gpointer unused);
void jabber_stream_set_state(JabberStream *js, JabberStreamState state);
-void jabber_register_parse(JabberStream *js, xmlnode *packet);
+void jabber_register_parse(JabberStream *js, const char *from,
+ JabberIqType type, const char *id, xmlnode *query);
void jabber_register_start(JabberStream *js);
char *jabber_get_next_id(JabberStream *js);
@@ -283,8 +322,24 @@ char *jabber_get_next_id(JabberStream *js);
*/
char *jabber_parse_error(JabberStream *js, xmlnode *packet, PurpleConnectionError *reason);
-void jabber_add_feature(const gchar *shortname, const gchar *namespace, JabberFeatureEnabled cb); /* cb may be NULL */
-void jabber_remove_feature(const gchar *shortname);
+void jabber_add_feature(const gchar *namespace, JabberFeatureEnabled cb); /* cb may be NULL */
+void jabber_remove_feature(const gchar *namespace);
+
+/** Adds an identity to this jabber library instance. For list of valid values visit the
+ * website of the XMPP Registrar ( http://www.xmpp.org/registrar/disco-categories.html#client ).
+ * @param category the category of the identity.
+ * @param type the type of the identity.
+ * @param language the language localization of the name. Can be NULL.
+ * @param name the name of the identity.
+ */
+void jabber_add_identity(const gchar *category, const gchar *type, const gchar *lang, const gchar *name);
+
+/**
+ * Returns true if this connection is over a secure (SSL) stream. Use this
+ * instead of checking js->gsc because BOSH stores its PurpleSslConnection
+ * members in its own data structure.
+ */
+gboolean jabber_stream_is_ssl(JabberStream *js);
/** PRPL functions */
const char *jabber_list_icon(PurpleAccount *a, PurpleBuddy *b);
@@ -295,6 +350,9 @@ GList *jabber_status_types(PurpleAccount *account);
void jabber_login(PurpleAccount *account);
void jabber_close(PurpleConnection *gc);
void jabber_idle_set(PurpleConnection *gc, int idle);
+void jabber_blocklist_parse_push(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *child);
void jabber_request_block_list(JabberStream *js);
void jabber_add_deny(PurpleConnection *gc, const char *who);
void jabber_rem_deny(PurpleConnection *gc, const char *who);
@@ -309,7 +367,17 @@ PurpleChat *jabber_find_blist_chat(PurpleAccount *account, const char *name);
gboolean jabber_offline_message(const PurpleBuddy *buddy);
int jabber_prpl_send_raw(PurpleConnection *gc, const char *buf, int len);
GList *jabber_actions(PurplePlugin *plugin, gpointer context);
+
+gboolean jabber_audio_enabled(JabberStream *js, const char *unused);
+gboolean jabber_video_enabled(JabberStream *js, const char *unused);
+gboolean jabber_initiate_media(PurpleAccount *account, const char *who,
+ PurpleMediaSessionType type);
+PurpleMediaCaps jabber_get_media_caps(PurpleAccount *account, const char *who);
+
void jabber_register_commands(void);
+void jabber_unregister_commands(void);
+
void jabber_init_plugin(PurplePlugin *plugin);
+void jabber_uninit_plugin(void);
-#endif /* _PURPLE_JABBER_H_ */
+#endif /* PURPLE_JABBER_H_ */
diff --git a/libpurple/protocols/jabber/jingle/content.c b/libpurple/protocols/jabber/jingle/content.c
new file mode 100644
index 0000000000..e3d06c9662
--- /dev/null
+++ b/libpurple/protocols/jabber/jingle/content.c
@@ -0,0 +1,461 @@
+/**
+ * @file content.c
+ *
+ * purple
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#include "internal.h"
+
+#include "debug.h"
+#include "content.h"
+#include "jingle.h"
+
+#include <string.h>
+
+struct _JingleContentPrivate
+{
+ JingleSession *session;
+ gchar *description_type;
+ gchar *creator;
+ gchar *disposition;
+ gchar *name;
+ gchar *senders;
+ JingleTransport *transport;
+ JingleTransport *pending_transport;
+};
+
+#define JINGLE_CONTENT_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), JINGLE_TYPE_CONTENT, JingleContentPrivate))
+
+static void jingle_content_class_init (JingleContentClass *klass);
+static void jingle_content_init (JingleContent *content);
+static void jingle_content_finalize (GObject *object);
+static void jingle_content_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
+static void jingle_content_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
+static xmlnode *jingle_content_to_xml_internal(JingleContent *content, xmlnode *jingle, JingleActionType action);
+static JingleContent *jingle_content_parse_internal(xmlnode *content);
+
+static GObjectClass *parent_class = NULL;
+
+enum {
+ PROP_0,
+ PROP_SESSION,
+ PROP_CREATOR,
+ PROP_DISPOSITION,
+ PROP_NAME,
+ PROP_SENDERS,
+ PROP_TRANSPORT,
+ PROP_PENDING_TRANSPORT,
+};
+
+GType
+jingle_content_get_type()
+{
+ static GType type = 0;
+
+ if (type == 0) {
+ static const GTypeInfo info = {
+ sizeof(JingleContentClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) jingle_content_class_init,
+ NULL,
+ NULL,
+ sizeof(JingleContent),
+ 0,
+ (GInstanceInitFunc) jingle_content_init,
+ NULL
+ };
+ type = g_type_register_static(G_TYPE_OBJECT, "JingleContent", &info, 0);
+ }
+ return type;
+}
+
+static void
+jingle_content_class_init (JingleContentClass *klass)
+{
+ GObjectClass *gobject_class = (GObjectClass*)klass;
+ parent_class = g_type_class_peek_parent(klass);
+
+ gobject_class->finalize = jingle_content_finalize;
+ gobject_class->set_property = jingle_content_set_property;
+ gobject_class->get_property = jingle_content_get_property;
+ klass->to_xml = jingle_content_to_xml_internal;
+ klass->parse = jingle_content_parse_internal;
+
+ g_object_class_install_property(gobject_class, PROP_SESSION,
+ g_param_spec_object("session",
+ "Jingle Session",
+ "The jingle session parent of this content.",
+ JINGLE_TYPE_SESSION,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property(gobject_class, PROP_CREATOR,
+ g_param_spec_string("creator",
+ "Creator",
+ "The participant that created this content.",
+ NULL,
+ G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
+
+ g_object_class_install_property(gobject_class, PROP_DISPOSITION,
+ g_param_spec_string("disposition",
+ "Disposition",
+ "The disposition of the content.",
+ NULL,
+ G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
+
+ g_object_class_install_property(gobject_class, PROP_NAME,
+ g_param_spec_string("name",
+ "Name",
+ "The name of this content.",
+ NULL,
+ G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
+
+ g_object_class_install_property(gobject_class, PROP_SENDERS,
+ g_param_spec_string("senders",
+ "Senders",
+ "The sender of this content.",
+ NULL,
+ G_PARAM_CONSTRUCT | G_PARAM_READWRITE));
+
+ g_object_class_install_property(gobject_class, PROP_TRANSPORT,
+ g_param_spec_object("transport",
+ "transport",
+ "The transport of this content.",
+ JINGLE_TYPE_TRANSPORT,
+ G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
+
+ g_object_class_install_property(gobject_class, PROP_PENDING_TRANSPORT,
+ g_param_spec_object("pending-transport",
+ "Pending transport",
+ "The pending transport contained within this content",
+ JINGLE_TYPE_TRANSPORT,
+ G_PARAM_READWRITE));
+
+ g_type_class_add_private(klass, sizeof(JingleContentPrivate));
+}
+
+static void
+jingle_content_init (JingleContent *content)
+{
+ content->priv = JINGLE_CONTENT_GET_PRIVATE(content);
+ memset(content->priv, 0, sizeof(*content->priv));
+}
+
+static void
+jingle_content_finalize (GObject *content)
+{
+ JingleContentPrivate *priv = JINGLE_CONTENT_GET_PRIVATE(content);
+ purple_debug_info("jingle","jingle_content_finalize\n");
+
+ g_free(priv->description_type);
+ g_free(priv->creator);
+ g_free(priv->disposition);
+ g_free(priv->name);
+ g_free(priv->senders);
+ g_object_unref(priv->transport);
+ if (priv->pending_transport)
+ g_object_unref(priv->pending_transport);
+
+ parent_class->finalize(content);
+}
+
+static void
+jingle_content_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+{
+ JingleContent *content;
+ g_return_if_fail(JINGLE_IS_CONTENT(object));
+
+ content = JINGLE_CONTENT(object);
+
+ switch (prop_id) {
+ case PROP_SESSION:
+ content->priv->session = g_value_get_object(value);
+ break;
+ case PROP_CREATOR:
+ g_free(content->priv->creator);
+ content->priv->creator = g_value_dup_string(value);
+ break;
+ case PROP_DISPOSITION:
+ g_free(content->priv->disposition);
+ content->priv->disposition = g_value_dup_string(value);
+ break;
+ case PROP_NAME:
+ g_free(content->priv->name);
+ content->priv->name = g_value_dup_string(value);
+ break;
+ case PROP_SENDERS:
+ g_free(content->priv->senders);
+ content->priv->senders = g_value_dup_string(value);
+ break;
+ case PROP_TRANSPORT:
+ if (content->priv->transport)
+ g_object_unref(content->priv->transport);
+ content->priv->transport = g_value_get_object(value);
+ break;
+ case PROP_PENDING_TRANSPORT:
+ if (content->priv->pending_transport)
+ g_object_unref(content->priv->pending_transport);
+ content->priv->pending_transport = g_value_get_object(value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+jingle_content_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+{
+ JingleContent *content;
+ g_return_if_fail(JINGLE_IS_CONTENT(object));
+
+ content = JINGLE_CONTENT(object);
+
+ switch (prop_id) {
+ case PROP_SESSION:
+ g_value_set_object(value, content->priv->session);
+ break;
+ case PROP_CREATOR:
+ g_value_set_string(value, content->priv->creator);
+ break;
+ case PROP_DISPOSITION:
+ g_value_set_string(value, content->priv->disposition);
+ break;
+ case PROP_NAME:
+ g_value_set_string(value, content->priv->name);
+ break;
+ case PROP_SENDERS:
+ g_value_set_string(value, content->priv->senders);
+ break;
+ case PROP_TRANSPORT:
+ g_value_set_object(value, content->priv->transport);
+ break;
+ case PROP_PENDING_TRANSPORT:
+ g_value_set_object(value, content->priv->pending_transport);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+JingleContent *
+jingle_content_create(const gchar *type, const gchar *creator,
+ const gchar *disposition, const gchar *name,
+ const gchar *senders, JingleTransport *transport)
+{
+
+
+ JingleContent *content = g_object_new(jingle_get_type(type),
+ "creator", creator,
+ "disposition", disposition != NULL ? disposition : "session",
+ "name", name,
+ "senders", senders != NULL ? senders : "both",
+ "transport", transport,
+ NULL);
+ return content;
+}
+
+JingleSession *jingle_content_get_session(JingleContent *content)
+{
+ JingleSession *session;
+ g_object_get(content, "session", &session, NULL);
+ return session;
+}
+
+const gchar *
+jingle_content_get_description_type(JingleContent *content)
+{
+ return JINGLE_CONTENT_GET_CLASS(content)->description_type;
+}
+
+gchar *
+jingle_content_get_creator(JingleContent *content)
+{
+ gchar *creator;
+ g_object_get(content, "creator", &creator, NULL);
+ return creator;
+}
+
+gchar *
+jingle_content_get_disposition(JingleContent *content)
+{
+ gchar *disposition;
+ g_object_get(content, "disposition", &disposition, NULL);
+ return disposition;
+}
+
+gchar *
+jingle_content_get_name(JingleContent *content)
+{
+ gchar *name;
+ g_object_get(content, "name", &name, NULL);
+ return name;
+}
+
+gchar *
+jingle_content_get_senders(JingleContent *content)
+{
+ gchar *senders;
+ g_object_get(content, "senders", &senders, NULL);
+ return senders;
+}
+
+JingleTransport *
+jingle_content_get_transport(JingleContent *content)
+{
+ JingleTransport *transport;
+ g_object_get(content, "transport", &transport, NULL);
+ return transport;
+}
+
+void
+jingle_content_set_session(JingleContent *content, JingleSession *session)
+{
+ JINGLE_IS_CONTENT(content);
+ JINGLE_IS_SESSION(session);
+ g_object_set(content, "session", session, NULL);
+}
+
+JingleTransport *
+jingle_content_get_pending_transport(JingleContent *content)
+{
+ JingleTransport *pending_transport;
+ g_object_get(content, "pending_transport", &pending_transport, NULL);
+ return pending_transport;
+}
+
+void
+jingle_content_set_pending_transport(JingleContent *content, JingleTransport *transport)
+{
+ g_object_set(content, "pending-transport", transport, NULL);
+}
+
+void
+jingle_content_accept_transport(JingleContent *content)
+{
+ if (content->priv->transport)
+ g_object_unref(content->priv->transport);
+ content->priv->transport = content->priv->pending_transport;
+ content->priv->pending_transport = NULL;
+}
+
+void
+jingle_content_remove_pending_transport(JingleContent *content)
+{
+ if (content->priv->pending_transport) {
+ g_object_unref(content->priv->pending_transport);
+ content->priv->pending_transport = NULL;
+ }
+}
+
+void
+jingle_content_modify(JingleContent *content, const gchar *senders)
+{
+ g_object_set(content, "senders", senders, NULL);
+}
+
+static JingleContent *
+jingle_content_parse_internal(xmlnode *content)
+{
+ xmlnode *description = xmlnode_get_child(content, "description");
+ const gchar *type = xmlnode_get_namespace(description);
+ const gchar *creator = xmlnode_get_attrib(content, "creator");
+ const gchar *disposition = xmlnode_get_attrib(content, "disposition");
+ const gchar *senders = xmlnode_get_attrib(content, "senders");
+ const gchar *name = xmlnode_get_attrib(content, "name");
+ JingleTransport *transport =
+ jingle_transport_parse(xmlnode_get_child(content, "transport"));
+
+ if (senders == NULL)
+ senders = "both";
+
+ return jingle_content_create(type, creator, disposition, name, senders, transport);
+}
+
+JingleContent *
+jingle_content_parse(xmlnode *content)
+{
+ const gchar *type = xmlnode_get_namespace(xmlnode_get_child(content, "description"));
+ GType jingle_type = jingle_get_type(type);
+
+ if (jingle_type != G_TYPE_NONE) {
+ return JINGLE_CONTENT_CLASS(g_type_class_ref(jingle_type))->parse(content);
+ } else {
+ return NULL;
+ }
+}
+
+static xmlnode *
+jingle_content_to_xml_internal(JingleContent *content, xmlnode *jingle, JingleActionType action)
+{
+ xmlnode *node = xmlnode_new_child(jingle, "content");
+ gchar *creator = jingle_content_get_creator(content);
+ gchar *name = jingle_content_get_name(content);
+ gchar *senders = jingle_content_get_senders(content);
+ gchar *disposition = jingle_content_get_disposition(content);
+
+ xmlnode_set_attrib(node, "creator", creator);
+ xmlnode_set_attrib(node, "name", name);
+ xmlnode_set_attrib(node, "senders", senders);
+ if (strcmp("session", disposition))
+ xmlnode_set_attrib(node, "disposition", disposition);
+
+ g_free(disposition);
+ g_free(senders);
+ g_free(name);
+ g_free(creator);
+
+ if (action != JINGLE_CONTENT_REMOVE) {
+ JingleTransport *transport;
+
+ if (action != JINGLE_TRANSPORT_ACCEPT &&
+ action != JINGLE_TRANSPORT_INFO &&
+ action != JINGLE_TRANSPORT_REJECT &&
+ action != JINGLE_TRANSPORT_REPLACE) {
+ xmlnode *description = xmlnode_new_child(node, "description");
+
+ xmlnode_set_namespace(description,
+ jingle_content_get_description_type(content));
+ }
+
+ if (action != JINGLE_TRANSPORT_REJECT && action == JINGLE_TRANSPORT_REPLACE)
+ transport = jingle_content_get_pending_transport(content);
+ else
+ transport = jingle_content_get_transport(content);
+
+ jingle_transport_to_xml(transport, node, action);
+ g_object_unref(transport);
+ }
+
+ return node;
+}
+
+xmlnode *
+jingle_content_to_xml(JingleContent *content, xmlnode *jingle, JingleActionType action)
+{
+ g_return_val_if_fail(JINGLE_IS_CONTENT(content), NULL);
+ return JINGLE_CONTENT_GET_CLASS(content)->to_xml(content, jingle, action);
+}
+
+void
+jingle_content_handle_action(JingleContent *content, xmlnode *xmlcontent, JingleActionType action)
+{
+ g_return_if_fail(JINGLE_IS_CONTENT(content));
+ JINGLE_CONTENT_GET_CLASS(content)->handle_action(content, xmlcontent, action);
+}
+
diff --git a/libpurple/protocols/jabber/jingle/content.h b/libpurple/protocols/jabber/jingle/content.h
new file mode 100644
index 0000000000..bb23be01f1
--- /dev/null
+++ b/libpurple/protocols/jabber/jingle/content.h
@@ -0,0 +1,117 @@
+/**
+ * @file content.h
+ *
+ * purple
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#ifndef PURPLE_JABBER_JINGLE_CONTENT_H
+#define PURPLE_JABBER_JINGLE_CONTENT_H
+
+
+#include "jabber.h"
+#include "jingle.h"
+#include "session.h"
+#include "transport.h"
+
+#include <glib.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define JINGLE_TYPE_CONTENT (jingle_content_get_type())
+#define JINGLE_CONTENT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), JINGLE_TYPE_CONTENT, JingleContent))
+#define JINGLE_CONTENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), JINGLE_TYPE_CONTENT, JingleContentClass))
+#define JINGLE_IS_CONTENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), JINGLE_TYPE_CONTENT))
+#define JINGLE_IS_CONTENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), JINGLE_TYPE_CONTENT))
+#define JINGLE_CONTENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), JINGLE_TYPE_CONTENT, JingleContentClass))
+
+/** @copydoc _JingleContent */
+typedef struct _JingleContent JingleContent;
+/** @copydoc _JingleContentClass */
+typedef struct _JingleContentClass JingleContentClass;
+/** @copydoc _JingleContentPrivate */
+typedef struct _JingleContentPrivate JingleContentPrivate;
+
+/** The content class */
+struct _JingleContentClass
+{
+ GObjectClass parent_class; /**< The parent class. */
+
+ xmlnode *(*to_xml) (JingleContent *content, xmlnode *jingle, JingleActionType action);
+ JingleContent *(*parse) (xmlnode *content);
+ void (*handle_action) (JingleContent *content, xmlnode *xmlcontent, JingleActionType action);
+ const gchar *description_type;
+};
+
+/** The content class's private data */
+struct _JingleContent
+{
+ GObject parent; /**< The parent of this object. */
+ JingleContentPrivate *priv; /**< The private data of this object. */
+};
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * Gets the content class's GType
+ *
+ * @return The content class's GType.
+ */
+GType jingle_content_get_type(void);
+
+JingleContent *jingle_content_create(const gchar *type, const gchar *creator,
+ const gchar *disposition, const gchar *name,
+ const gchar *senders, JingleTransport *transport);
+
+JingleSession *jingle_content_get_session(JingleContent *content);
+const gchar *jingle_content_get_description_type(JingleContent *content);
+gchar *jingle_content_get_creator(JingleContent *content);
+gchar *jingle_content_get_disposition(JingleContent *content);
+gchar *jingle_content_get_name(JingleContent *content);
+gchar *jingle_content_get_senders(JingleContent *content);
+JingleTransport *jingle_content_get_transport(JingleContent *content);
+JingleTransport *jingle_content_get_pending_transport(JingleContent *content);
+
+void jingle_content_set_session(JingleContent *content, JingleSession *session);
+void jingle_content_set_pending_transport(JingleContent *content, JingleTransport *transport);
+void jingle_content_accept_transport(JingleContent *content);
+void jingle_content_remove_pending_transport(JingleContent *content);
+void jingle_content_modify(JingleContent *content, const gchar *senders);
+
+#define jingle_content_create_content_accept(session) \
+ jingle_session_to_packet(session, JINGLE_CONTENT_ACCEPT)
+#define jingle_content_create_content_add(session) \
+ jingle_session_to_packet(session, JINGLE_CONTENT_ADD)
+#define jingle_content_create_content_modify(session) \
+ jingle_session_to_packet(session, JINGLE_CONTENT_MODIFY)
+#define jingle_content_create_content_remove(session) \
+ jingle_session_to_packet(session, JINGLE_CONTENT_REMOVE)
+
+JingleContent *jingle_content_parse(xmlnode *content);
+xmlnode *jingle_content_to_xml(JingleContent *content, xmlnode *jingle, JingleActionType action);
+void jingle_content_handle_action(JingleContent *content, xmlnode *xmlcontent, JingleActionType action);
+
+#ifdef __cplusplus
+}
+#endif
+
+G_END_DECLS
+
+#endif /* PURPLE_JABBER_JINGLE_CONTENT_H */
+
diff --git a/libpurple/protocols/jabber/jingle/iceudp.c b/libpurple/protocols/jabber/jingle/iceudp.c
new file mode 100644
index 0000000000..966fff28fe
--- /dev/null
+++ b/libpurple/protocols/jabber/jingle/iceudp.c
@@ -0,0 +1,427 @@
+/**
+ * @file iceudp.c
+ *
+ * purple
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#include "internal.h"
+
+#include "iceudp.h"
+#include "jingle.h"
+#include "debug.h"
+
+#include <string.h>
+
+struct _JingleIceUdpPrivate
+{
+ GList *local_candidates;
+ GList *remote_candidates;
+};
+
+#define JINGLE_ICEUDP_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), JINGLE_TYPE_ICEUDP, JingleIceUdpPrivate))
+
+static void jingle_iceudp_class_init (JingleIceUdpClass *klass);
+static void jingle_iceudp_init (JingleIceUdp *iceudp);
+static void jingle_iceudp_finalize (GObject *object);
+static void jingle_iceudp_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
+static void jingle_iceudp_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
+static JingleTransport *jingle_iceudp_parse_internal(xmlnode *iceudp);
+static xmlnode *jingle_iceudp_to_xml_internal(JingleTransport *transport, xmlnode *content, JingleActionType action);
+
+static JingleTransportClass *parent_class = NULL;
+
+enum {
+ PROP_0,
+ PROP_LOCAL_CANDIDATES,
+ PROP_REMOTE_CANDIDATES,
+};
+
+static JingleIceUdpCandidate *
+jingle_iceudp_candidate_copy(JingleIceUdpCandidate *candidate)
+{
+ JingleIceUdpCandidate *new_candidate = g_new0(JingleIceUdpCandidate, 1);
+ new_candidate->component = candidate->component;
+ new_candidate->foundation = g_strdup(candidate->foundation);
+ new_candidate->generation = candidate->generation;
+ new_candidate->id = g_strdup(candidate->id);
+ new_candidate->ip = g_strdup(candidate->ip);
+ new_candidate->network = candidate->network;
+ new_candidate->port = candidate->port;
+ new_candidate->priority = candidate->priority;
+ new_candidate->protocol = g_strdup(candidate->protocol);
+ new_candidate->type = g_strdup(candidate->type);
+
+ new_candidate->username = g_strdup(candidate->username);
+ new_candidate->password = g_strdup(candidate->password);
+
+ new_candidate->rem_known = candidate->rem_known;
+
+ return new_candidate;
+}
+
+static void
+jingle_iceudp_candidate_free(JingleIceUdpCandidate *candidate)
+{
+ g_free(candidate->foundation);
+ g_free(candidate->id);
+ g_free(candidate->ip);
+ g_free(candidate->protocol);
+ g_free(candidate->reladdr);
+ g_free(candidate->type);
+
+ g_free(candidate->username);
+ g_free(candidate->password);
+}
+
+GType
+jingle_iceudp_candidate_get_type()
+{
+ static GType type = 0;
+
+ if (type == 0) {
+ type = g_boxed_type_register_static("JingleIceUdpCandidate",
+ (GBoxedCopyFunc)jingle_iceudp_candidate_copy,
+ (GBoxedFreeFunc)jingle_iceudp_candidate_free);
+ }
+ return type;
+}
+
+JingleIceUdpCandidate *
+jingle_iceudp_candidate_new(guint component, const gchar *foundation,
+ guint generation, const gchar *id, const gchar *ip,
+ guint network, guint port, guint priority,
+ const gchar *protocol, const gchar *type,
+ const gchar *username, const gchar *password)
+{
+ JingleIceUdpCandidate *candidate = g_new0(JingleIceUdpCandidate, 1);
+ candidate->component = component;
+ candidate->foundation = g_strdup(foundation);
+ candidate->generation = generation;
+ candidate->id = g_strdup(id);
+ candidate->ip = g_strdup(ip);
+ candidate->network = network;
+ candidate->port = port;
+ candidate->priority = priority;
+ candidate->protocol = g_strdup(protocol);
+ candidate->type = g_strdup(type);
+
+ candidate->username = g_strdup(username);
+ candidate->password = g_strdup(password);
+
+ candidate->rem_known = FALSE;
+ return candidate;
+}
+
+GType
+jingle_iceudp_get_type()
+{
+ static GType type = 0;
+
+ if (type == 0) {
+ static const GTypeInfo info = {
+ sizeof(JingleIceUdpClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) jingle_iceudp_class_init,
+ NULL,
+ NULL,
+ sizeof(JingleIceUdp),
+ 0,
+ (GInstanceInitFunc) jingle_iceudp_init,
+ NULL
+ };
+ type = g_type_register_static(JINGLE_TYPE_TRANSPORT, "JingleIceUdp", &info, 0);
+ }
+ return type;
+}
+
+static void
+jingle_iceudp_class_init (JingleIceUdpClass *klass)
+{
+ GObjectClass *gobject_class = (GObjectClass*)klass;
+ parent_class = g_type_class_peek_parent(klass);
+
+ gobject_class->finalize = jingle_iceudp_finalize;
+ gobject_class->set_property = jingle_iceudp_set_property;
+ gobject_class->get_property = jingle_iceudp_get_property;
+ klass->parent_class.to_xml = jingle_iceudp_to_xml_internal;
+ klass->parent_class.parse = jingle_iceudp_parse_internal;
+ klass->parent_class.transport_type = JINGLE_TRANSPORT_ICEUDP;
+
+ g_object_class_install_property(gobject_class, PROP_LOCAL_CANDIDATES,
+ g_param_spec_pointer("local-candidates",
+ "Local candidates",
+ "The local candidates for this transport.",
+ G_PARAM_READABLE));
+
+ g_object_class_install_property(gobject_class, PROP_REMOTE_CANDIDATES,
+ g_param_spec_pointer("remote-candidates",
+ "Remote candidates",
+ "The remote candidates for this transport.",
+ G_PARAM_READABLE));
+
+ g_type_class_add_private(klass, sizeof(JingleIceUdpPrivate));
+}
+
+static void
+jingle_iceudp_init (JingleIceUdp *iceudp)
+{
+ iceudp->priv = JINGLE_ICEUDP_GET_PRIVATE(iceudp);
+ iceudp->priv->local_candidates = NULL;
+ iceudp->priv->remote_candidates = NULL;
+}
+
+static void
+jingle_iceudp_finalize (GObject *iceudp)
+{
+/* JingleIceUdpPrivate *priv = JINGLE_ICEUDP_GET_PRIVATE(iceudp); */
+ purple_debug_info("jingle","jingle_iceudp_finalize\n");
+
+ G_OBJECT_CLASS(parent_class)->finalize(iceudp);
+}
+
+static void
+jingle_iceudp_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+{
+ JingleIceUdp *iceudp;
+ g_return_if_fail(JINGLE_IS_ICEUDP(object));
+
+ iceudp = JINGLE_ICEUDP(object);
+
+ switch (prop_id) {
+ case PROP_LOCAL_CANDIDATES:
+ iceudp->priv->local_candidates =
+ g_value_get_pointer(value);
+ break;
+ case PROP_REMOTE_CANDIDATES:
+ iceudp->priv->remote_candidates =
+ g_value_get_pointer(value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+jingle_iceudp_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+{
+ JingleIceUdp *iceudp;
+ g_return_if_fail(JINGLE_IS_ICEUDP(object));
+
+ iceudp = JINGLE_ICEUDP(object);
+
+ switch (prop_id) {
+ case PROP_LOCAL_CANDIDATES:
+ g_value_set_pointer(value, iceudp->priv->local_candidates);
+ break;
+ case PROP_REMOTE_CANDIDATES:
+ g_value_set_pointer(value, iceudp->priv->remote_candidates);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+void
+jingle_iceudp_add_local_candidate(JingleIceUdp *iceudp, JingleIceUdpCandidate *candidate)
+{
+ GList *iter = iceudp->priv->local_candidates;
+
+ for (; iter; iter = g_list_next(iter)) {
+ JingleIceUdpCandidate *c = iter->data;
+ if (!strcmp(c->id, candidate->id)) {
+ guint generation = c->generation + 1;
+
+ g_boxed_free(JINGLE_TYPE_ICEUDP_CANDIDATE, c);
+ iceudp->priv->local_candidates = g_list_delete_link(
+ iceudp->priv->local_candidates, iter);
+
+ candidate->generation = generation;
+
+ iceudp->priv->local_candidates = g_list_append(
+ iceudp->priv->local_candidates, candidate);
+ return;
+ }
+ }
+
+ iceudp->priv->local_candidates = g_list_append(
+ iceudp->priv->local_candidates, candidate);
+}
+
+GList *
+jingle_iceudp_get_remote_candidates(JingleIceUdp *iceudp)
+{
+ return g_list_copy(iceudp->priv->remote_candidates);
+}
+
+static JingleIceUdpCandidate *
+jingle_iceudp_get_remote_candidate_by_id(JingleIceUdp *iceudp,
+ const gchar *id)
+{
+ GList *iter = iceudp->priv->remote_candidates;
+ for (; iter; iter = g_list_next(iter)) {
+ JingleIceUdpCandidate *candidate = iter->data;
+ if (!strcmp(candidate->id, id)) {
+ return candidate;
+ }
+ }
+ return NULL;
+}
+
+static void
+jingle_iceudp_add_remote_candidate(JingleIceUdp *iceudp, JingleIceUdpCandidate *candidate)
+{
+ JingleIceUdpPrivate *priv = JINGLE_ICEUDP_GET_PRIVATE(iceudp);
+ JingleIceUdpCandidate *iceudp_candidate =
+ jingle_iceudp_get_remote_candidate_by_id(iceudp,
+ candidate->id);
+ if (iceudp_candidate != NULL) {
+ priv->remote_candidates = g_list_remove(
+ priv->remote_candidates, iceudp_candidate);
+ g_boxed_free(JINGLE_TYPE_ICEUDP_CANDIDATE, iceudp_candidate);
+ }
+ priv->remote_candidates = g_list_append(priv->remote_candidates, candidate);
+}
+
+static JingleTransport *
+jingle_iceudp_parse_internal(xmlnode *iceudp)
+{
+ JingleTransport *transport = parent_class->parse(iceudp);
+ xmlnode *candidate = xmlnode_get_child(iceudp, "candidate");
+ JingleIceUdpCandidate *iceudp_candidate = NULL;
+
+ const gchar *username = xmlnode_get_attrib(iceudp, "ufrag");
+ const gchar *password = xmlnode_get_attrib(iceudp, "pwd");
+
+ for (; candidate; candidate = xmlnode_get_next_twin(candidate)) {
+ const gchar *relport = xmlnode_get_attrib(candidate, "rel-port");
+ const gchar *component = xmlnode_get_attrib(candidate, "component");
+ const gchar *foundation = xmlnode_get_attrib(candidate, "foundation");
+ const gchar *generation = xmlnode_get_attrib(candidate, "generation");
+ const gchar *id = xmlnode_get_attrib(candidate, "id");
+ const gchar *ip = xmlnode_get_attrib(candidate, "ip");
+ const gchar *network = xmlnode_get_attrib(candidate, "network");
+ const gchar *port = xmlnode_get_attrib(candidate, "port");
+ const gchar *priority = xmlnode_get_attrib(candidate, "priority");
+ const gchar *protocol = xmlnode_get_attrib(candidate, "protocol");
+ const gchar *type = xmlnode_get_attrib(candidate, "type");
+
+ if (!component || !foundation || !generation || !id || !ip ||
+ !network || !port || !priority || !protocol || !type)
+ continue;
+
+ iceudp_candidate = jingle_iceudp_candidate_new(
+ atoi(component),
+ foundation,
+ atoi(generation),
+ id,
+ ip,
+ atoi(network),
+ atoi(port),
+ atoi(priority),
+ protocol,
+ type,
+ username, password);
+ iceudp_candidate->reladdr = g_strdup(
+ xmlnode_get_attrib(candidate, "rel-addr"));
+ iceudp_candidate->relport =
+ relport != NULL ? atoi(relport) : 0;
+ iceudp_candidate->rem_known = TRUE;
+ jingle_iceudp_add_remote_candidate(JINGLE_ICEUDP(transport), iceudp_candidate);
+ }
+
+ return transport;
+}
+
+static xmlnode *
+jingle_iceudp_to_xml_internal(JingleTransport *transport, xmlnode *content, JingleActionType action)
+{
+ xmlnode *node = parent_class->to_xml(transport, content, action);
+
+ if (action == JINGLE_SESSION_INITIATE ||
+ action == JINGLE_SESSION_ACCEPT ||
+ action == JINGLE_TRANSPORT_INFO ||
+ action == JINGLE_CONTENT_ADD ||
+ action == JINGLE_TRANSPORT_REPLACE) {
+ JingleIceUdpPrivate *priv = JINGLE_ICEUDP_GET_PRIVATE(transport);
+ GList *iter = priv->local_candidates;
+ gboolean used_candidate = FALSE;
+
+ for (; iter; iter = g_list_next(iter)) {
+ JingleIceUdpCandidate *candidate = iter->data;
+ xmlnode *xmltransport;
+ gchar *component, *generation, *network,
+ *port, *priority;
+
+ if (candidate->rem_known == TRUE)
+ continue;
+
+ used_candidate = TRUE;
+ candidate->rem_known = TRUE;
+
+ xmltransport = xmlnode_new_child(node, "candidate");
+ component = g_strdup_printf("%d", candidate->component);
+ generation = g_strdup_printf("%d",
+ candidate->generation);
+ network = g_strdup_printf("%d", candidate->network);
+ port = g_strdup_printf("%d", candidate->port);
+ priority = g_strdup_printf("%d", candidate->priority);
+
+ xmlnode_set_attrib(xmltransport, "component", component);
+ xmlnode_set_attrib(xmltransport, "foundation", candidate->foundation);
+ xmlnode_set_attrib(xmltransport, "generation", generation);
+ xmlnode_set_attrib(xmltransport, "id", candidate->id);
+ xmlnode_set_attrib(xmltransport, "ip", candidate->ip);
+ xmlnode_set_attrib(xmltransport, "network", network);
+ xmlnode_set_attrib(xmltransport, "port", port);
+ xmlnode_set_attrib(xmltransport, "priority", priority);
+ xmlnode_set_attrib(xmltransport, "protocol", candidate->protocol);
+
+ if (candidate->reladdr != NULL &&
+ (strcmp(candidate->ip, candidate->reladdr) ||
+ (candidate->port != candidate->relport))) {
+ gchar *relport = g_strdup_printf("%d",
+ candidate->relport);
+ xmlnode_set_attrib(xmltransport, "rel-addr",
+ candidate->reladdr);
+ xmlnode_set_attrib(xmltransport, "rel-port",
+ relport);
+ g_free(relport);
+ }
+
+ xmlnode_set_attrib(xmltransport, "type", candidate->type);
+
+ g_free(component);
+ g_free(generation);
+ g_free(network);
+ g_free(port);
+ g_free(priority);
+ }
+
+ if (used_candidate == TRUE) {
+ JingleIceUdpCandidate *candidate =
+ priv->local_candidates->data;
+ xmlnode_set_attrib(node, "pwd", candidate->password);
+ xmlnode_set_attrib(node, "ufrag", candidate->username);
+ }
+ }
+
+ return node;
+}
+
diff --git a/libpurple/protocols/jabber/jingle/iceudp.h b/libpurple/protocols/jabber/jingle/iceudp.h
new file mode 100644
index 0000000000..bf3b961f37
--- /dev/null
+++ b/libpurple/protocols/jabber/jingle/iceudp.h
@@ -0,0 +1,114 @@
+/**
+ * @file iceudp.h
+ *
+ * purple
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#ifndef PURPLE_JABBER_JINGLE_ICEUDP_H
+#define PURPLE_JABBER_JINGLE_ICEUDP_H
+
+#include <glib.h>
+#include <glib-object.h>
+
+#include "transport.h"
+
+G_BEGIN_DECLS
+
+#define JINGLE_TYPE_ICEUDP (jingle_iceudp_get_type())
+#define JINGLE_TYPE_ICEUDP_CANDIDATE (jingle_iceudp_candidate_get_type())
+#define JINGLE_ICEUDP(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), JINGLE_TYPE_ICEUDP, JingleIceUdp))
+#define JINGLE_ICEUDP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), JINGLE_TYPE_ICEUDP, JingleIceUdpClass))
+#define JINGLE_IS_ICEUDP(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), JINGLE_TYPE_ICEUDP))
+#define JINGLE_IS_ICEUDP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), JINGLE_TYPE_ICEUDP))
+#define JINGLE_ICEUDP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), JINGLE_TYPE_ICEUDP, JingleIceUdpClass))
+
+/** @copydoc _JingleIceUdp */
+typedef struct _JingleIceUdp JingleIceUdp;
+/** @copydoc _JingleIceUdpClass */
+typedef struct _JingleIceUdpClass JingleIceUdpClass;
+/** @copydoc _JingleIceUdpPrivate */
+typedef struct _JingleIceUdpPrivate JingleIceUdpPrivate;
+/** @copydoc _JingleIceUdpCandidate */
+typedef struct _JingleIceUdpCandidate JingleIceUdpCandidate;
+
+/** The iceudp class */
+struct _JingleIceUdpClass
+{
+ JingleTransportClass parent_class; /**< The parent class. */
+
+ xmlnode *(*to_xml) (JingleTransport *transport, xmlnode *content, JingleActionType action);
+ JingleTransport *(*parse) (xmlnode *transport);
+};
+
+/** The iceudp class's private data */
+struct _JingleIceUdp
+{
+ JingleTransport parent; /**< The parent of this object. */
+ JingleIceUdpPrivate *priv; /**< The private data of this object. */
+};
+
+struct _JingleIceUdpCandidate
+{
+ guint component;
+ gchar *foundation;
+ guint generation;
+ gchar *id;
+ gchar *ip;
+ guint network;
+ guint port;
+ guint priority;
+ gchar *protocol;
+ gchar *reladdr;
+ guint relport;
+ gchar *type;
+
+ gchar *username;
+ gchar *password;
+
+ gboolean rem_known; /* TRUE if the remote side knows
+ * about this candidate */
+};
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+GType jingle_iceudp_candidate_get_type(void);
+
+/**
+ * Gets the iceudp class's GType
+ *
+ * @return The iceudp class's GType.
+ */
+GType jingle_iceudp_get_type(void);
+
+JingleIceUdpCandidate *jingle_iceudp_candidate_new(guint component,
+ const gchar *foundation, guint generation, const gchar *id,
+ const gchar *ip, guint network, guint port, guint priority,
+ const gchar *protocol, const gchar *type,
+ const gchar *username, const gchar *password);
+void jingle_iceudp_add_local_candidate(JingleIceUdp *iceudp, JingleIceUdpCandidate *candidate);
+GList *jingle_iceudp_get_remote_candidates(JingleIceUdp *iceudp);
+
+#ifdef __cplusplus
+}
+#endif
+
+G_END_DECLS
+
+#endif /* PURPLE_JABBER_JINGLE_ICEUDP_H */
+
diff --git a/libpurple/protocols/jabber/jingle/jingle.c b/libpurple/protocols/jabber/jingle/jingle.c
new file mode 100644
index 0000000000..12b51737bf
--- /dev/null
+++ b/libpurple/protocols/jabber/jingle/jingle.c
@@ -0,0 +1,457 @@
+/*
+ * @file jingle.c
+ *
+ * purple - Jabber Protocol Plugin
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ *
+ */
+
+#include "internal.h"
+#include "network.h"
+
+#include "content.h"
+#include "debug.h"
+#include "jingle.h"
+#include <string.h>
+#include "session.h"
+#include "iceudp.h"
+#include "rawudp.h"
+#include "rtp.h"
+
+GType
+jingle_get_type(const gchar *type)
+{
+ if (!strcmp(type, JINGLE_TRANSPORT_RAWUDP))
+ return JINGLE_TYPE_RAWUDP;
+ else if (!strcmp(type, JINGLE_TRANSPORT_ICEUDP))
+ return JINGLE_TYPE_ICEUDP;
+#if 0
+ else if (!strcmp(type, JINGLE_TRANSPORT_SOCKS))
+ return JINGLE_TYPE_SOCKS;
+ else if (!strcmp(type, JINGLE_TRANSPORT_IBB))
+ return JINGLE_TYPE_IBB;
+#endif
+#ifdef USE_VV
+ else if (!strcmp(type, JINGLE_APP_RTP))
+ return JINGLE_TYPE_RTP;
+#endif
+#if 0
+ else if (!strcmp(type, JINGLE_APP_FT))
+ return JINGLE_TYPE_FT;
+ else if (!strcmp(type, JINGLE_APP_XML))
+ return JINGLE_TYPE_XML;
+#endif
+ else
+ return G_TYPE_NONE;
+}
+
+static void
+jingle_handle_unknown_type(JingleSession *session, xmlnode *jingle)
+{
+ /* Send error */
+}
+
+static void
+jingle_handle_content_accept(JingleSession *session, xmlnode *jingle)
+{
+ xmlnode *content = xmlnode_get_child(jingle, "content");
+ jabber_iq_send(jingle_session_create_ack(session, jingle));
+
+ for (; content; content = xmlnode_get_next_twin(content)) {
+ const gchar *name = xmlnode_get_attrib(content, "name");
+ const gchar *creator = xmlnode_get_attrib(content, "creator");
+ jingle_session_accept_content(session, name, creator);
+ /* signal here */
+ }
+}
+
+static void
+jingle_handle_content_add(JingleSession *session, xmlnode *jingle)
+{
+ xmlnode *content = xmlnode_get_child(jingle, "content");
+ jabber_iq_send(jingle_session_create_ack(session, jingle));
+
+ for (; content; content = xmlnode_get_next_twin(content)) {
+ JingleContent *pending_content =
+ jingle_content_parse(content);
+ if (pending_content == NULL) {
+ purple_debug_error("jingle",
+ "Error parsing \"content-add\" content.\n");
+ /* XXX: send error here */
+ } else {
+ jingle_session_add_pending_content(session,
+ pending_content);
+ }
+ }
+
+ /* XXX: signal here */
+}
+
+static void
+jingle_handle_content_modify(JingleSession *session, xmlnode *jingle)
+{
+ xmlnode *content = xmlnode_get_child(jingle, "content");
+ jabber_iq_send(jingle_session_create_ack(session, jingle));
+
+ for (; content; content = xmlnode_get_next_twin(content)) {
+ const gchar *name = xmlnode_get_attrib(content, "name");
+ const gchar *creator = xmlnode_get_attrib(content, "creator");
+ JingleContent *local_content = jingle_session_find_content(session, name, creator);
+
+ if (content != NULL) {
+ const gchar *senders = xmlnode_get_attrib(content, "senders");
+ gchar *local_senders = jingle_content_get_senders(local_content);
+ if (strcmp(senders, local_senders))
+ jingle_content_modify(local_content, senders);
+ g_free(local_senders);
+ } else {
+ purple_debug_error("jingle", "content_modify: unknown content\n");
+ /* XXX: send error */
+ }
+ }
+}
+
+static void
+jingle_handle_content_reject(JingleSession *session, xmlnode *jingle)
+{
+ xmlnode *content = xmlnode_get_child(jingle, "content");
+ jabber_iq_send(jingle_session_create_ack(session, jingle));
+
+ for (; content; content = xmlnode_get_next_twin(content)) {
+ const gchar *name = xmlnode_get_attrib(content, "name");
+ const gchar *creator = xmlnode_get_attrib(content, "creator");
+ jingle_session_remove_pending_content(session, name, creator);
+ /* signal here */
+ }
+}
+
+static void
+jingle_handle_content_remove(JingleSession *session, xmlnode *jingle)
+{
+ xmlnode *content = xmlnode_get_child(jingle, "content");
+
+ jabber_iq_send(jingle_session_create_ack(session, jingle));
+
+ for (; content; content = xmlnode_get_next_twin(content)) {
+ const gchar *name = xmlnode_get_attrib(content, "name");
+ const gchar *creator = xmlnode_get_attrib(content, "creator");
+ jingle_session_remove_content(session, name, creator);
+ }
+}
+
+static void
+jingle_handle_description_info(JingleSession *session, xmlnode *jingle)
+{
+ xmlnode *content = xmlnode_get_child(jingle, "content");
+
+ jabber_iq_send(jingle_session_create_ack(session, jingle));
+
+ jingle_session_accept_session(session);
+
+ for (; content; content = xmlnode_get_next_twin(content)) {
+ const gchar *name = xmlnode_get_attrib(content, "name");
+ const gchar *creator = xmlnode_get_attrib(content, "creator");
+ JingleContent *parsed_content =
+ jingle_session_find_content(session, name, creator);
+ if (parsed_content == NULL) {
+ purple_debug_error("jingle", "Error parsing content\n");
+ /* XXX: send error */
+ } else {
+ jingle_content_handle_action(parsed_content, content,
+ JINGLE_DESCRIPTION_INFO);
+ }
+ }
+}
+
+static void
+jingle_handle_security_info(JingleSession *session, xmlnode *jingle)
+{
+ jabber_iq_send(jingle_session_create_ack(session, jingle));
+}
+
+static void
+jingle_handle_session_accept(JingleSession *session, xmlnode *jingle)
+{
+ xmlnode *content = xmlnode_get_child(jingle, "content");
+
+ jabber_iq_send(jingle_session_create_ack(session, jingle));
+
+ jingle_session_accept_session(session);
+
+ for (; content; content = xmlnode_get_next_twin(content)) {
+ const gchar *name = xmlnode_get_attrib(content, "name");
+ const gchar *creator = xmlnode_get_attrib(content, "creator");
+ JingleContent *parsed_content =
+ jingle_session_find_content(session, name, creator);
+ if (parsed_content == NULL) {
+ purple_debug_error("jingle", "Error parsing content\n");
+ /* XXX: send error */
+ } else {
+ jingle_content_handle_action(parsed_content, content,
+ JINGLE_SESSION_ACCEPT);
+ }
+ }
+}
+
+static void
+jingle_handle_session_info(JingleSession *session, xmlnode *jingle)
+{
+ jabber_iq_send(jingle_session_create_ack(session, jingle));
+ /* XXX: call signal */
+}
+
+static void
+jingle_handle_session_initiate(JingleSession *session, xmlnode *jingle)
+{
+ xmlnode *content = xmlnode_get_child(jingle, "content");
+
+ for (; content; content = xmlnode_get_next_twin(content)) {
+ JingleContent *parsed_content = jingle_content_parse(content);
+ if (parsed_content == NULL) {
+ purple_debug_error("jingle", "Error parsing content\n");
+ /* XXX: send error */
+ } else {
+ jingle_session_add_content(session, parsed_content);
+ jingle_content_handle_action(parsed_content, content,
+ JINGLE_SESSION_INITIATE);
+ }
+ }
+
+ jabber_iq_send(jingle_session_create_ack(session, jingle));
+}
+
+static void
+jingle_handle_session_terminate(JingleSession *session, xmlnode *jingle)
+{
+ jabber_iq_send(jingle_session_create_ack(session, jingle));
+
+ jingle_session_handle_action(session, jingle,
+ JINGLE_SESSION_TERMINATE);
+ /* display reason? */
+ g_object_unref(session);
+}
+
+static void
+jingle_handle_transport_accept(JingleSession *session, xmlnode *jingle)
+{
+ xmlnode *content = xmlnode_get_child(jingle, "content");
+
+ jabber_iq_send(jingle_session_create_ack(session, jingle));
+
+ for (; content; content = xmlnode_get_next_twin(content)) {
+ const gchar *name = xmlnode_get_attrib(content, "name");
+ const gchar *creator = xmlnode_get_attrib(content, "creator");
+ JingleContent *content = jingle_session_find_content(session, name, creator);
+ jingle_content_accept_transport(content);
+ }
+}
+
+static void
+jingle_handle_transport_info(JingleSession *session, xmlnode *jingle)
+{
+ xmlnode *content = xmlnode_get_child(jingle, "content");
+
+ jabber_iq_send(jingle_session_create_ack(session, jingle));
+
+ for (; content; content = xmlnode_get_next_twin(content)) {
+ const gchar *name = xmlnode_get_attrib(content, "name");
+ const gchar *creator = xmlnode_get_attrib(content, "creator");
+ JingleContent *parsed_content =
+ jingle_session_find_content(session, name, creator);
+ if (parsed_content == NULL) {
+ purple_debug_error("jingle", "Error parsing content\n");
+ /* XXX: send error */
+ } else {
+ jingle_content_handle_action(parsed_content, content,
+ JINGLE_TRANSPORT_INFO);
+ }
+ }
+}
+
+static void
+jingle_handle_transport_reject(JingleSession *session, xmlnode *jingle)
+{
+ xmlnode *content = xmlnode_get_child(jingle, "content");
+
+ jabber_iq_send(jingle_session_create_ack(session, jingle));
+
+ for (; content; content = xmlnode_get_next_twin(content)) {
+ const gchar *name = xmlnode_get_attrib(content, "name");
+ const gchar *creator = xmlnode_get_attrib(content, "creator");
+ JingleContent *content = jingle_session_find_content(session, name, creator);
+ jingle_content_remove_pending_transport(content);
+ }
+}
+
+static void
+jingle_handle_transport_replace(JingleSession *session, xmlnode *jingle)
+{
+ xmlnode *content = xmlnode_get_child(jingle, "content");
+
+ jabber_iq_send(jingle_session_create_ack(session, jingle));
+
+ for (; content; content = xmlnode_get_next_twin(content)) {
+ const gchar *name = xmlnode_get_attrib(content, "name");
+ const gchar *creator = xmlnode_get_attrib(content, "creator");
+ xmlnode *xmltransport = xmlnode_get_child(content, "transport");
+ JingleTransport *transport = jingle_transport_parse(xmltransport);
+ JingleContent *content = jingle_session_find_content(session, name, creator);
+
+ jingle_content_set_pending_transport(content, transport);
+ }
+}
+
+typedef struct {
+ const char *name;
+ void (*handler)(JingleSession*, xmlnode*);
+} JingleAction;
+
+static const JingleAction jingle_actions[] = {
+ {"unknown-type", jingle_handle_unknown_type},
+ {"content-accept", jingle_handle_content_accept},
+ {"content-add", jingle_handle_content_add},
+ {"content-modify", jingle_handle_content_modify},
+ {"content-reject", jingle_handle_content_reject},
+ {"content-remove", jingle_handle_content_remove},
+ {"description-info", jingle_handle_description_info},
+ {"security-info", jingle_handle_security_info},
+ {"session-accept", jingle_handle_session_accept},
+ {"session-info", jingle_handle_session_info},
+ {"session-initiate", jingle_handle_session_initiate},
+ {"session-terminate", jingle_handle_session_terminate},
+ {"transport-accept", jingle_handle_transport_accept},
+ {"transport-info", jingle_handle_transport_info},
+ {"transport-reject", jingle_handle_transport_reject},
+ {"transport-replace", jingle_handle_transport_replace},
+};
+
+const gchar *
+jingle_get_action_name(JingleActionType action)
+{
+ return jingle_actions[action].name;
+}
+
+JingleActionType
+jingle_get_action_type(const gchar *action)
+{
+ static const int num_actions =
+ sizeof(jingle_actions)/sizeof(JingleAction);
+ /* Start at 1 to skip the unknown-action type */
+ int i = 1;
+ for (; i < num_actions; ++i) {
+ if (!strcmp(action, jingle_actions[i].name))
+ return i;
+ }
+ return JINGLE_UNKNOWN_TYPE;
+}
+
+void
+jingle_parse(JabberStream *js, const char *from, JabberIqType type,
+ const char *id, xmlnode *jingle)
+{
+ const gchar *action;
+ const gchar *sid;
+ JingleActionType action_type;
+ JingleSession *session;
+
+ if (type != JABBER_IQ_SET) {
+ /* TODO: send iq error here */
+ return;
+ }
+
+ if (!(action = xmlnode_get_attrib(jingle, "action"))) {
+ /* TODO: send iq error here */
+ return;
+ }
+
+ action_type = jingle_get_action_type(action);
+
+ purple_debug_info("jabber", "got Jingle package action = %s\n",
+ action);
+
+ if (!(sid = xmlnode_get_attrib(jingle, "sid"))) {
+ /* send iq error here */
+ return;
+ }
+
+ if (!(session = jingle_session_find_by_sid(js, sid))
+ && strcmp(action, "session-initiate")) {
+ purple_debug_error("jingle", "jabber_jingle_session_parse couldn't find session\n");
+ /* send iq error here */
+ return;
+ }
+
+ if (action_type == JINGLE_SESSION_INITIATE) {
+ if (session) {
+ /* This should only happen if you start a session with yourself */
+ purple_debug_error("jingle", "Jingle session with "
+ "id={%s} already exists\n", sid);
+ /* send iq error */
+ return;
+ } else {
+ char *own_jid = g_strdup_printf("%s@%s/%s", js->user->node,
+ js->user->domain, js->user->resource);
+ session = jingle_session_create(js, sid, own_jid, from, FALSE);
+ g_free(own_jid);
+ }
+ }
+
+ jingle_actions[action_type].handler(session, jingle);
+}
+
+static void
+jingle_terminate_sessions_gh(gpointer key, gpointer value, gpointer user_data)
+{
+ g_object_unref(value);
+}
+
+void
+jingle_terminate_sessions(JabberStream *js)
+{
+ if (js->sessions)
+ g_hash_table_foreach(js->sessions,
+ jingle_terminate_sessions_gh, NULL);
+}
+
+GParameter *
+jingle_get_params(JabberStream *js, guint *num)
+{
+ /* don't set a STUN server if one is set globally in prefs, in that case
+ this will be handled in media.c */
+ gboolean has_account_stun = js->stun_ip && !purple_network_get_stun_ip();
+ guint num_params = has_account_stun ? 2 : 0;
+ GParameter *params = NULL;
+
+ if (num_params > 0) {
+ params = g_new0(GParameter, num_params);
+
+ purple_debug_info("jabber",
+ "setting param stun-ip for stream using Google auto-config: %s\n",
+ js->stun_ip);
+ params[0].name = "stun-ip";
+ g_value_init(&params[0].value, G_TYPE_STRING);
+ g_value_set_string(&params[0].value, js->stun_ip);
+ purple_debug_info("jabber",
+ "setting param stun-port for stream using Google auto-config: %d\n",
+ js->stun_port);
+ params[1].name = "stun-port";
+ g_value_init(&params[1].value, G_TYPE_UINT);
+ g_value_set_uint(&params[1].value, js->stun_port);
+ }
+
+ *num = num_params;
+ return params;
+}
diff --git a/libpurple/protocols/jabber/jingle/jingle.h b/libpurple/protocols/jabber/jingle/jingle.h
new file mode 100644
index 0000000000..cb3d3e9ad8
--- /dev/null
+++ b/libpurple/protocols/jabber/jingle/jingle.h
@@ -0,0 +1,87 @@
+/*
+ * @file jingle.h
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor Boston, MA 02110-1301, USA
+ */
+
+#ifndef PURPLE_JABBER_JINGLE_H
+#define PURPLE_JABBER_JINGLE_H
+
+#include "jabber.h"
+
+#include <glib.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define JINGLE "urn:xmpp:jingle:1"
+#define JINGLE_ERROR "urn:xmpp:jingle:errors:0"
+#define JINGLE_APP_FT "urn:xmpp:jingle:apps:file-transfer:1"
+#define JINGLE_APP_RTP "urn:xmpp:jingle:apps:rtp:1"
+#define JINGLE_APP_RTP_ERROR "urn:xmpp:jingle:apps:rtp:errors:1"
+#define JINGLE_APP_RTP_INFO "urn:xmpp:jingle:apps:rtp:info:1"
+#define JINGLE_APP_RTP_SUPPORT_AUDIO "urn:xmpp:jingle:apps:rtp:audio"
+#define JINGLE_APP_RTP_SUPPORT_VIDEO "urn:xmpp:jingle:apps:rtp:video"
+#define JINGLE_APP_XML "urn:xmpp:tmp:jingle:apps:xmlstream"
+#define JINGLE_DTMF "urn:xmpp:jingle:dtmf:0"
+#define JINGLE_TRANSPORT_S5B "urn:xmpp:jingle:transports:s5b:0"
+#define JINGLE_TRANSPORT_IBB "urn:xmpp:jingle:transports:ibb:0"
+#define JINGLE_TRANSPORT_ICEUDP "urn:xmpp:jingle:transports:ice-udp:1"
+#define JINGLE_TRANSPORT_RAWUDP "urn:xmpp:jingle:transports:raw-udp:1"
+
+typedef enum {
+ JINGLE_UNKNOWN_TYPE,
+ JINGLE_CONTENT_ACCEPT,
+ JINGLE_CONTENT_ADD,
+ JINGLE_CONTENT_MODIFY,
+ JINGLE_CONTENT_REJECT,
+ JINGLE_CONTENT_REMOVE,
+ JINGLE_DESCRIPTION_INFO,
+ JINGLE_SECURITY_INFO,
+ JINGLE_SESSION_ACCEPT,
+ JINGLE_SESSION_INFO,
+ JINGLE_SESSION_INITIATE,
+ JINGLE_SESSION_TERMINATE,
+ JINGLE_TRANSPORT_ACCEPT,
+ JINGLE_TRANSPORT_INFO,
+ JINGLE_TRANSPORT_REJECT,
+ JINGLE_TRANSPORT_REPLACE,
+} JingleActionType;
+
+const gchar *jingle_get_action_name(JingleActionType action);
+JingleActionType jingle_get_action_type(const gchar *action);
+
+GType jingle_get_type(const gchar *type);
+
+void jingle_parse(JabberStream *js, const char *from, JabberIqType type,
+ const char *id, xmlnode *child);
+
+void jingle_terminate_sessions(JabberStream *js);
+
+/* create a GParam array given autoconfigured STUN (and later perhaps TURN).
+ if google_talk is TRUE, set compatability mode to GOOGLE_TALK */
+GParameter *jingle_get_params(JabberStream *js, guint *num_params);
+
+#ifdef __cplusplus
+}
+#endif
+
+G_END_DECLS
+
+#endif /* PURPLE_JABBER_JINGLE_H */
diff --git a/libpurple/protocols/jabber/jingle/rawudp.c b/libpurple/protocols/jabber/jingle/rawudp.c
new file mode 100644
index 0000000000..8948aa58f3
--- /dev/null
+++ b/libpurple/protocols/jabber/jingle/rawudp.c
@@ -0,0 +1,351 @@
+/**
+ * @file rawudp.c
+ *
+ * purple
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#include "internal.h"
+
+#include "rawudp.h"
+#include "jingle.h"
+#include "debug.h"
+
+#include <string.h>
+
+struct _JingleRawUdpPrivate
+{
+ GList *local_candidates;
+ GList *remote_candidates;
+};
+
+#define JINGLE_RAWUDP_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), JINGLE_TYPE_RAWUDP, JingleRawUdpPrivate))
+
+static void jingle_rawudp_class_init (JingleRawUdpClass *klass);
+static void jingle_rawudp_init (JingleRawUdp *rawudp);
+static void jingle_rawudp_finalize (GObject *object);
+static void jingle_rawudp_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
+static void jingle_rawudp_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
+static JingleTransport *jingle_rawudp_parse_internal(xmlnode *rawudp);
+static xmlnode *jingle_rawudp_to_xml_internal(JingleTransport *transport, xmlnode *content, JingleActionType action);
+
+static JingleTransportClass *parent_class = NULL;
+
+enum {
+ PROP_0,
+ PROP_LOCAL_CANDIDATES,
+ PROP_REMOTE_CANDIDATES,
+};
+
+static JingleRawUdpCandidate *
+jingle_rawudp_candidate_copy(JingleRawUdpCandidate *candidate)
+{
+ JingleRawUdpCandidate *new_candidate = g_new0(JingleRawUdpCandidate, 1);
+ new_candidate->generation = candidate->generation;
+ new_candidate->component = candidate->component;
+ new_candidate->id = g_strdup(candidate->id);
+ new_candidate->ip = g_strdup(candidate->ip);
+ new_candidate->port = candidate->port;
+
+ new_candidate->rem_known = candidate->rem_known;
+ return new_candidate;
+}
+
+static void
+jingle_rawudp_candidate_free(JingleRawUdpCandidate *candidate)
+{
+ g_free(candidate->id);
+ g_free(candidate->ip);
+}
+
+GType
+jingle_rawudp_candidate_get_type()
+{
+ static GType type = 0;
+
+ if (type == 0) {
+ type = g_boxed_type_register_static("JingleRawUdpCandidate",
+ (GBoxedCopyFunc)jingle_rawudp_candidate_copy,
+ (GBoxedFreeFunc)jingle_rawudp_candidate_free);
+ }
+ return type;
+}
+
+JingleRawUdpCandidate *
+jingle_rawudp_candidate_new(const gchar *id, guint generation, guint component, const gchar *ip, guint port)
+{
+ JingleRawUdpCandidate *candidate = g_new0(JingleRawUdpCandidate, 1);
+ candidate->generation = generation;
+ candidate->component = component;
+ candidate->id = g_strdup(id);
+ candidate->ip = g_strdup(ip);
+ candidate->port = port;
+
+ candidate->rem_known = FALSE;
+ return candidate;
+}
+
+GType
+jingle_rawudp_get_type()
+{
+ static GType type = 0;
+
+ if (type == 0) {
+ static const GTypeInfo info = {
+ sizeof(JingleRawUdpClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) jingle_rawudp_class_init,
+ NULL,
+ NULL,
+ sizeof(JingleRawUdp),
+ 0,
+ (GInstanceInitFunc) jingle_rawudp_init,
+ NULL
+ };
+ type = g_type_register_static(JINGLE_TYPE_TRANSPORT, "JingleRawUdp", &info, 0);
+ }
+ return type;
+}
+
+static void
+jingle_rawudp_class_init (JingleRawUdpClass *klass)
+{
+ GObjectClass *gobject_class = (GObjectClass*)klass;
+ parent_class = g_type_class_peek_parent(klass);
+
+ gobject_class->finalize = jingle_rawudp_finalize;
+ gobject_class->set_property = jingle_rawudp_set_property;
+ gobject_class->get_property = jingle_rawudp_get_property;
+ klass->parent_class.to_xml = jingle_rawudp_to_xml_internal;
+ klass->parent_class.parse = jingle_rawudp_parse_internal;
+ klass->parent_class.transport_type = JINGLE_TRANSPORT_RAWUDP;
+
+ g_object_class_install_property(gobject_class, PROP_LOCAL_CANDIDATES,
+ g_param_spec_pointer("local-candidates",
+ "Local candidates",
+ "The local candidates for this transport.",
+ G_PARAM_READABLE));
+
+ g_object_class_install_property(gobject_class, PROP_REMOTE_CANDIDATES,
+ g_param_spec_pointer("remote-candidates",
+ "Remote candidates",
+ "The remote candidates for this transport.",
+ G_PARAM_READABLE));
+
+ g_type_class_add_private(klass, sizeof(JingleRawUdpPrivate));
+}
+
+static void
+jingle_rawudp_init (JingleRawUdp *rawudp)
+{
+ rawudp->priv = JINGLE_RAWUDP_GET_PRIVATE(rawudp);
+ rawudp->priv->local_candidates = NULL;
+ rawudp->priv->remote_candidates = NULL;
+}
+
+static void
+jingle_rawudp_finalize (GObject *rawudp)
+{
+/* JingleRawUdpPrivate *priv = JINGLE_RAWUDP_GET_PRIVATE(rawudp); */
+ purple_debug_info("jingle","jingle_rawudp_finalize\n");
+
+ G_OBJECT_CLASS(parent_class)->finalize(rawudp);
+}
+
+static void
+jingle_rawudp_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+{
+ JingleRawUdp *rawudp;
+ g_return_if_fail(JINGLE_IS_RAWUDP(object));
+
+ rawudp = JINGLE_RAWUDP(object);
+
+ switch (prop_id) {
+ case PROP_LOCAL_CANDIDATES:
+ rawudp->priv->local_candidates =
+ g_value_get_pointer(value);
+ break;
+ case PROP_REMOTE_CANDIDATES:
+ rawudp->priv->remote_candidates =
+ g_value_get_pointer(value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+jingle_rawudp_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+{
+ JingleRawUdp *rawudp;
+ g_return_if_fail(JINGLE_IS_RAWUDP(object));
+
+ rawudp = JINGLE_RAWUDP(object);
+
+ switch (prop_id) {
+ case PROP_LOCAL_CANDIDATES:
+ g_value_set_pointer(value, rawudp->priv->local_candidates);
+ break;
+ case PROP_REMOTE_CANDIDATES:
+ g_value_set_pointer(value, rawudp->priv->remote_candidates);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+void
+jingle_rawudp_add_local_candidate(JingleRawUdp *rawudp, JingleRawUdpCandidate *candidate)
+{
+ GList *iter = rawudp->priv->local_candidates;
+
+ for (; iter; iter = g_list_next(iter)) {
+ JingleRawUdpCandidate *c = iter->data;
+ if (!strcmp(c->id, candidate->id)) {
+ guint generation = c->generation + 1;
+
+ g_boxed_free(JINGLE_TYPE_RAWUDP_CANDIDATE, c);
+ rawudp->priv->local_candidates = g_list_delete_link(
+ rawudp->priv->local_candidates, iter);
+
+ candidate->generation = generation;
+
+ rawudp->priv->local_candidates = g_list_append(
+ rawudp->priv->local_candidates, candidate);
+ return;
+ }
+ }
+
+ rawudp->priv->local_candidates = g_list_append(
+ rawudp->priv->local_candidates, candidate);
+}
+
+GList *
+jingle_rawudp_get_remote_candidates(JingleRawUdp *rawudp)
+{
+ return g_list_copy(rawudp->priv->remote_candidates);
+}
+
+static JingleRawUdpCandidate *
+jingle_rawudp_get_remote_candidate_by_id(JingleRawUdp *rawudp, gchar *id)
+{
+ GList *iter = rawudp->priv->remote_candidates;
+ for (; iter; iter = g_list_next(iter)) {
+ JingleRawUdpCandidate *candidate = iter->data;
+ if (!strcmp(candidate->id, id)) {
+ return candidate;
+ }
+ }
+ return NULL;
+}
+
+static void
+jingle_rawudp_add_remote_candidate(JingleRawUdp *rawudp, JingleRawUdpCandidate *candidate)
+{
+ JingleRawUdpPrivate *priv = JINGLE_RAWUDP_GET_PRIVATE(rawudp);
+ JingleRawUdpCandidate *rawudp_candidate =
+ jingle_rawudp_get_remote_candidate_by_id(rawudp, candidate->id);
+ if (rawudp_candidate != NULL) {
+ priv->remote_candidates = g_list_remove(
+ priv->remote_candidates, rawudp_candidate);
+ g_boxed_free(JINGLE_TYPE_RAWUDP_CANDIDATE, rawudp_candidate);
+ }
+ priv->remote_candidates = g_list_append(priv->remote_candidates, candidate);
+}
+
+static JingleTransport *
+jingle_rawudp_parse_internal(xmlnode *rawudp)
+{
+ JingleTransport *transport = parent_class->parse(rawudp);
+ JingleRawUdpPrivate *priv = JINGLE_RAWUDP_GET_PRIVATE(transport);
+ xmlnode *candidate = xmlnode_get_child(rawudp, "candidate");
+ JingleRawUdpCandidate *rawudp_candidate = NULL;
+
+ for (; candidate; candidate = xmlnode_get_next_twin(candidate)) {
+ const gchar *id = xmlnode_get_attrib(candidate, "id");
+ const gchar *generation = xmlnode_get_attrib(candidate, "generation");
+ const gchar *component = xmlnode_get_attrib(candidate, "component");
+ const gchar *ip = xmlnode_get_attrib(candidate, "ip");
+ const gchar *port = xmlnode_get_attrib(candidate, "port");
+
+ if (!id || !generation || !component || !ip || !port)
+ continue;
+
+ rawudp_candidate = jingle_rawudp_candidate_new(
+ id,
+ atoi(generation),
+ atoi(component),
+ ip,
+ atoi(port));
+ rawudp_candidate->rem_known = TRUE;
+ jingle_rawudp_add_remote_candidate(JINGLE_RAWUDP(transport), rawudp_candidate);
+ }
+
+ if (rawudp_candidate != NULL &&
+ g_list_length(priv->remote_candidates) == 1) {
+ /* manufacture rtcp candidate */
+ rawudp_candidate = g_boxed_copy(JINGLE_TYPE_RAWUDP_CANDIDATE, rawudp_candidate);
+ rawudp_candidate->component = 2;
+ rawudp_candidate->port = rawudp_candidate->port + 1;
+ rawudp_candidate->rem_known = TRUE;
+ jingle_rawudp_add_remote_candidate(JINGLE_RAWUDP(transport), rawudp_candidate);
+ }
+
+ return transport;
+}
+
+static xmlnode *
+jingle_rawudp_to_xml_internal(JingleTransport *transport, xmlnode *content, JingleActionType action)
+{
+ xmlnode *node = parent_class->to_xml(transport, content, action);
+
+ if (action == JINGLE_SESSION_INITIATE ||
+ action == JINGLE_TRANSPORT_INFO ||
+ action == JINGLE_SESSION_ACCEPT) {
+ JingleRawUdpPrivate *priv = JINGLE_RAWUDP_GET_PRIVATE(transport);
+ GList *iter = priv->local_candidates;
+
+ for (; iter; iter = g_list_next(iter)) {
+ JingleRawUdpCandidate *candidate = iter->data;
+ xmlnode *xmltransport;
+ gchar *generation, *component, *port;
+
+ if (candidate->rem_known == TRUE)
+ continue;
+ candidate->rem_known = TRUE;
+
+ xmltransport = xmlnode_new_child(node, "candidate");
+ generation = g_strdup_printf("%d", candidate->generation);
+ component = g_strdup_printf("%d", candidate->component);
+ port = g_strdup_printf("%d", candidate->port);
+
+ xmlnode_set_attrib(xmltransport, "generation", generation);
+ xmlnode_set_attrib(xmltransport, "component", component);
+ xmlnode_set_attrib(xmltransport, "id", candidate->id);
+ xmlnode_set_attrib(xmltransport, "ip", candidate->ip);
+ xmlnode_set_attrib(xmltransport, "port", port);
+
+ g_free(port);
+ g_free(generation);
+ }
+ }
+
+ return node;
+}
+
diff --git a/libpurple/protocols/jabber/jingle/rawudp.h b/libpurple/protocols/jabber/jingle/rawudp.h
new file mode 100644
index 0000000000..99135cc384
--- /dev/null
+++ b/libpurple/protocols/jabber/jingle/rawudp.h
@@ -0,0 +1,101 @@
+/**
+ * @file rawudp.h
+ *
+ * purple
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#ifndef PURPLE_JABBER_JINGLE_RAWUDP_H
+#define PURPLE_JABBER_JINGLE_RAWUDP_H
+
+#include <glib.h>
+#include <glib-object.h>
+
+#include "transport.h"
+
+G_BEGIN_DECLS
+
+#define JINGLE_TYPE_RAWUDP (jingle_rawudp_get_type())
+#define JINGLE_TYPE_RAWUDP_CANDIDATE (jingle_rawudp_candidate_get_type())
+#define JINGLE_RAWUDP(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), JINGLE_TYPE_RAWUDP, JingleRawUdp))
+#define JINGLE_RAWUDP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), JINGLE_TYPE_RAWUDP, JingleRawUdpClass))
+#define JINGLE_IS_RAWUDP(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), JINGLE_TYPE_RAWUDP))
+#define JINGLE_IS_RAWUDP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), JINGLE_TYPE_RAWUDP))
+#define JINGLE_RAWUDP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), JINGLE_TYPE_RAWUDP, JingleRawUdpClass))
+
+/** @copydoc _JingleRawUdp */
+typedef struct _JingleRawUdp JingleRawUdp;
+/** @copydoc _JingleRawUdpClass */
+typedef struct _JingleRawUdpClass JingleRawUdpClass;
+/** @copydoc _JingleRawUdpPrivate */
+typedef struct _JingleRawUdpPrivate JingleRawUdpPrivate;
+/** @copydoc _JingleRawUdpCandidate */
+typedef struct _JingleRawUdpCandidate JingleRawUdpCandidate;
+
+/** The rawudp class */
+struct _JingleRawUdpClass
+{
+ JingleTransportClass parent_class; /**< The parent class. */
+
+ xmlnode *(*to_xml) (JingleTransport *transport, xmlnode *content, JingleActionType action);
+ JingleTransport *(*parse) (xmlnode *transport);
+};
+
+/** The rawudp class's private data */
+struct _JingleRawUdp
+{
+ JingleTransport parent; /**< The parent of this object. */
+ JingleRawUdpPrivate *priv; /**< The private data of this object. */
+};
+
+struct _JingleRawUdpCandidate
+{
+ guint generation;
+ guint component;
+ gchar *id;
+ gchar *ip;
+ guint port;
+
+ gboolean rem_known; /* TRUE if the remote side knows
+ * about this candidate */
+};
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+GType jingle_rawudp_candidate_get_type(void);
+
+/**
+ * Gets the rawudp class's GType
+ *
+ * @return The rawudp class's GType.
+ */
+GType jingle_rawudp_get_type(void);
+
+JingleRawUdpCandidate *jingle_rawudp_candidate_new(const gchar *id,
+ guint generation, guint component, const gchar *ip, guint port);
+void jingle_rawudp_add_local_candidate(JingleRawUdp *rawudp, JingleRawUdpCandidate *candidate);
+GList *jingle_rawudp_get_remote_candidates(JingleRawUdp *rawudp);
+
+#ifdef __cplusplus
+}
+#endif
+
+G_END_DECLS
+
+#endif /* PURPLE_JABBER_JINGLE_RAWUDP_H */
+
diff --git a/libpurple/protocols/jabber/jingle/rtp.c b/libpurple/protocols/jabber/jingle/rtp.c
new file mode 100644
index 0000000000..05a214cd17
--- /dev/null
+++ b/libpurple/protocols/jabber/jingle/rtp.c
@@ -0,0 +1,924 @@
+/**
+ * @file rtp.c
+ *
+ * purple
+ *
+ * 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 "config.h"
+
+#ifdef USE_VV
+
+#include "jabber.h"
+#include "jingle.h"
+#include "media.h"
+#include "mediamanager.h"
+#include "iceudp.h"
+#include "rawudp.h"
+#include "rtp.h"
+#include "session.h"
+#include "debug.h"
+
+#include <string.h>
+
+struct _JingleRtpPrivate
+{
+ gchar *media_type;
+ gchar *ssrc;
+};
+
+#define JINGLE_RTP_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), JINGLE_TYPE_RTP, JingleRtpPrivate))
+
+static void jingle_rtp_class_init (JingleRtpClass *klass);
+static void jingle_rtp_init (JingleRtp *rtp);
+static void jingle_rtp_finalize (GObject *object);
+static void jingle_rtp_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
+static void jingle_rtp_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
+static JingleContent *jingle_rtp_parse_internal(xmlnode *rtp);
+static xmlnode *jingle_rtp_to_xml_internal(JingleContent *rtp, xmlnode *content, JingleActionType action);
+static void jingle_rtp_handle_action_internal(JingleContent *content, xmlnode *jingle, JingleActionType action);
+
+static PurpleMedia *jingle_rtp_get_media(JingleSession *session);
+
+static JingleContentClass *parent_class = NULL;
+#if 0
+enum {
+ LAST_SIGNAL
+};
+static guint jingle_rtp_signals[LAST_SIGNAL] = {0};
+#endif
+
+enum {
+ PROP_0,
+ PROP_MEDIA_TYPE,
+ PROP_SSRC,
+};
+
+GType
+jingle_rtp_get_type()
+{
+ static GType type = 0;
+
+ if (type == 0) {
+ static const GTypeInfo info = {
+ sizeof(JingleRtpClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) jingle_rtp_class_init,
+ NULL,
+ NULL,
+ sizeof(JingleRtp),
+ 0,
+ (GInstanceInitFunc) jingle_rtp_init,
+ NULL
+ };
+ type = g_type_register_static(JINGLE_TYPE_CONTENT, "JingleRtp", &info, 0);
+ }
+ return type;
+}
+
+static void
+jingle_rtp_class_init (JingleRtpClass *klass)
+{
+ GObjectClass *gobject_class = (GObjectClass*)klass;
+ parent_class = g_type_class_peek_parent(klass);
+
+ gobject_class->finalize = jingle_rtp_finalize;
+ gobject_class->set_property = jingle_rtp_set_property;
+ gobject_class->get_property = jingle_rtp_get_property;
+ klass->parent_class.to_xml = jingle_rtp_to_xml_internal;
+ klass->parent_class.parse = jingle_rtp_parse_internal;
+ klass->parent_class.description_type = JINGLE_APP_RTP;
+ klass->parent_class.handle_action = jingle_rtp_handle_action_internal;
+
+ g_object_class_install_property(gobject_class, PROP_MEDIA_TYPE,
+ g_param_spec_string("media-type",
+ "Media Type",
+ "The media type (\"audio\" or \"video\") for this rtp session.",
+ NULL,
+ G_PARAM_READWRITE));
+ g_object_class_install_property(gobject_class, PROP_SSRC,
+ g_param_spec_string("ssrc",
+ "ssrc",
+ "The ssrc for this rtp session.",
+ NULL,
+ G_PARAM_READWRITE));
+
+ g_type_class_add_private(klass, sizeof(JingleRtpPrivate));
+}
+
+static void
+jingle_rtp_init (JingleRtp *rtp)
+{
+ rtp->priv = JINGLE_RTP_GET_PRIVATE(rtp);
+ memset(rtp->priv, 0, sizeof(*rtp->priv));
+}
+
+static void
+jingle_rtp_finalize (GObject *rtp)
+{
+ JingleRtpPrivate *priv = JINGLE_RTP_GET_PRIVATE(rtp);
+ purple_debug_info("jingle-rtp","jingle_rtp_finalize\n");
+
+ g_free(priv->media_type);
+ g_free(priv->ssrc);
+
+ G_OBJECT_CLASS(parent_class)->finalize(rtp);
+}
+
+static void
+jingle_rtp_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+{
+ JingleRtp *rtp;
+ g_return_if_fail(JINGLE_IS_RTP(object));
+
+ rtp = JINGLE_RTP(object);
+
+ switch (prop_id) {
+ case PROP_MEDIA_TYPE:
+ g_free(rtp->priv->media_type);
+ rtp->priv->media_type = g_value_dup_string(value);
+ break;
+ case PROP_SSRC:
+ g_free(rtp->priv->ssrc);
+ rtp->priv->ssrc = g_value_dup_string(value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+jingle_rtp_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+{
+ JingleRtp *rtp;
+ g_return_if_fail(JINGLE_IS_RTP(object));
+
+ rtp = JINGLE_RTP(object);
+
+ switch (prop_id) {
+ case PROP_MEDIA_TYPE:
+ g_value_set_string(value, rtp->priv->media_type);
+ break;
+ case PROP_SSRC:
+ g_value_set_string(value, rtp->priv->ssrc);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+gchar *
+jingle_rtp_get_media_type(JingleContent *content)
+{
+ gchar *media_type;
+ g_object_get(content, "media-type", &media_type, NULL);
+ return media_type;
+}
+
+gchar *
+jingle_rtp_get_ssrc(JingleContent *content)
+{
+ gchar *ssrc;
+ g_object_get(content, "ssrc", &ssrc, NULL);
+ return ssrc;
+}
+
+static PurpleMedia *
+jingle_rtp_get_media(JingleSession *session)
+{
+ JabberStream *js = jingle_session_get_js(session);
+ PurpleMedia *media = NULL;
+ GList *iter = purple_media_manager_get_media_by_account(
+ purple_media_manager_get(),
+ purple_connection_get_account(js->gc));
+
+ for (; iter; iter = g_list_delete_link(iter, iter)) {
+ JingleSession *media_session =
+ purple_media_get_prpl_data(iter->data);
+ if (media_session == session) {
+ media = iter->data;
+ break;
+ }
+ }
+ if (iter != NULL)
+ g_list_free(iter);
+
+ return media;
+}
+
+static JingleRawUdpCandidate *
+jingle_rtp_candidate_to_rawudp(JingleSession *session, guint generation,
+ PurpleMediaCandidate *candidate)
+{
+ gchar *id = jabber_get_next_id(jingle_session_get_js(session));
+ gchar *ip = purple_media_candidate_get_ip(candidate);
+ JingleRawUdpCandidate *rawudp_candidate =
+ jingle_rawudp_candidate_new(id, generation,
+ purple_media_candidate_get_component_id(candidate),
+ ip, purple_media_candidate_get_port(candidate));
+ g_free(ip);
+ g_free(id);
+ return rawudp_candidate;
+}
+
+static JingleIceUdpCandidate *
+jingle_rtp_candidate_to_iceudp(JingleSession *session, guint generation,
+ PurpleMediaCandidate *candidate)
+{
+ gchar *id = jabber_get_next_id(jingle_session_get_js(session));
+ gchar *ip = purple_media_candidate_get_ip(candidate);
+ gchar *username = purple_media_candidate_get_username(candidate);
+ gchar *password = purple_media_candidate_get_password(candidate);
+ PurpleMediaCandidateType type =
+ purple_media_candidate_get_candidate_type(candidate);
+
+ JingleIceUdpCandidate *iceudp_candidate = jingle_iceudp_candidate_new(
+ purple_media_candidate_get_component_id(candidate),
+ purple_media_candidate_get_foundation(candidate),
+ generation, id, ip, 0,
+ purple_media_candidate_get_port(candidate),
+ purple_media_candidate_get_priority(candidate), "udp",
+ type == PURPLE_MEDIA_CANDIDATE_TYPE_HOST ? "host" :
+ type == PURPLE_MEDIA_CANDIDATE_TYPE_SRFLX ? "srflx" :
+ type == PURPLE_MEDIA_CANDIDATE_TYPE_PRFLX ? "prflx" :
+ type == PURPLE_MEDIA_CANDIDATE_TYPE_RELAY ? "relay" :
+ "", username, password);
+ iceudp_candidate->reladdr =
+ purple_media_candidate_get_base_ip(candidate);
+ iceudp_candidate->relport =
+ purple_media_candidate_get_base_port(candidate);
+ g_free(password);
+ g_free(username);
+ g_free(ip);
+ g_free(id);
+ return iceudp_candidate;
+}
+
+static JingleTransport *
+jingle_rtp_candidates_to_transport(JingleSession *session, GType type, guint generation, GList *candidates)
+{
+ if (type == JINGLE_TYPE_RAWUDP) {
+ JingleTransport *transport = jingle_transport_create(JINGLE_TRANSPORT_RAWUDP);
+ JingleRawUdpCandidate *rawudp_candidate;
+ for (; candidates; candidates = g_list_next(candidates)) {
+ PurpleMediaCandidate *candidate = candidates->data;
+ rawudp_candidate = jingle_rtp_candidate_to_rawudp(
+ session, generation, candidate);
+ jingle_rawudp_add_local_candidate(
+ JINGLE_RAWUDP(transport),
+ rawudp_candidate);
+ }
+ return transport;
+ } else if (type == JINGLE_TYPE_ICEUDP) {
+ JingleTransport *transport = jingle_transport_create(JINGLE_TRANSPORT_ICEUDP);
+ JingleIceUdpCandidate *iceudp_candidate;
+ for (; candidates; candidates = g_list_next(candidates)) {
+ PurpleMediaCandidate *candidate = candidates->data;
+ iceudp_candidate = jingle_rtp_candidate_to_iceudp(
+ session, generation, candidate);
+ jingle_iceudp_add_local_candidate(
+ JINGLE_ICEUDP(transport),
+ iceudp_candidate);
+ }
+ return transport;
+ } else {
+ return NULL;
+ }
+}
+
+static GList *
+jingle_rtp_transport_to_candidates(JingleTransport *transport)
+{
+ const gchar *type = jingle_transport_get_transport_type(transport);
+ GList *ret = NULL;
+ if (!strcmp(type, JINGLE_TRANSPORT_RAWUDP)) {
+ GList *candidates = jingle_rawudp_get_remote_candidates(JINGLE_RAWUDP(transport));
+
+ for (; candidates; candidates = g_list_delete_link(candidates, candidates)) {
+ JingleRawUdpCandidate *candidate = candidates->data;
+ ret = g_list_append(ret, purple_media_candidate_new(
+ "", candidate->component,
+ PURPLE_MEDIA_CANDIDATE_TYPE_SRFLX,
+ PURPLE_MEDIA_NETWORK_PROTOCOL_UDP,
+ candidate->ip, candidate->port));
+ }
+
+ return ret;
+ } else if (!strcmp(type, JINGLE_TRANSPORT_ICEUDP)) {
+ GList *candidates = jingle_iceudp_get_remote_candidates(JINGLE_ICEUDP(transport));
+
+ for (; candidates; candidates = g_list_delete_link(candidates, candidates)) {
+ JingleIceUdpCandidate *candidate = candidates->data;
+ PurpleMediaCandidate *new_candidate = purple_media_candidate_new(
+ candidate->foundation, candidate->component,
+ !strcmp(candidate->type, "host") ?
+ PURPLE_MEDIA_CANDIDATE_TYPE_HOST :
+ !strcmp(candidate->type, "srflx") ?
+ PURPLE_MEDIA_CANDIDATE_TYPE_SRFLX :
+ !strcmp(candidate->type, "prflx") ?
+ PURPLE_MEDIA_CANDIDATE_TYPE_PRFLX :
+ !strcmp(candidate->type, "relay") ?
+ PURPLE_MEDIA_CANDIDATE_TYPE_RELAY : 0,
+ PURPLE_MEDIA_NETWORK_PROTOCOL_UDP,
+ candidate->ip, candidate->port);
+ g_object_set(new_candidate,
+ "base-ip", candidate->reladdr,
+ "base-port", candidate->relport,
+ "username", candidate->username,
+ "password", candidate->password,
+ "priority", candidate->priority, NULL);
+ ret = g_list_append(ret, new_candidate);
+ }
+
+ return ret;
+ } else {
+ return NULL;
+ }
+}
+
+static void jingle_rtp_ready(JingleSession *session);
+
+static void
+jingle_rtp_accepted_cb(PurpleMedia *media, gchar *sid, gchar *name,
+ JingleSession *session)
+{
+ purple_debug_info("jingle-rtp", "jingle_rtp_accepted_cb\n");
+ jingle_rtp_ready(session);
+}
+
+static void
+jingle_rtp_candidates_prepared_cb(PurpleMedia *media,
+ gchar *sid, gchar *name, JingleSession *session)
+{
+ JingleContent *content = jingle_session_find_content(
+ session, sid, NULL);
+ JingleTransport *oldtransport, *transport;
+ GList *candidates;
+
+ purple_debug_info("jingle-rtp", "jingle_rtp_candidates_prepared_cb\n");
+
+ if (content == NULL) {
+ purple_debug_error("jingle-rtp",
+ "jingle_rtp_candidates_prepared_cb: "
+ "Can't find session %s\n", sid);
+ return;
+ }
+
+ oldtransport = jingle_content_get_transport(content);
+ candidates = purple_media_get_local_candidates(media, sid, name);
+ transport = JINGLE_TRANSPORT(jingle_rtp_candidates_to_transport(
+ session, JINGLE_IS_RAWUDP(oldtransport) ?
+ JINGLE_TYPE_RAWUDP : JINGLE_TYPE_ICEUDP,
+ 0, candidates));
+
+ g_list_free(candidates);
+ g_object_unref(oldtransport);
+
+ jingle_content_set_pending_transport(content, transport);
+ jingle_content_accept_transport(content);
+
+ jingle_rtp_ready(session);
+}
+
+static void
+jingle_rtp_codecs_changed_cb(PurpleMedia *media, gchar *sid,
+ JingleSession *session)
+{
+ purple_debug_info("jingle-rtp", "jingle_rtp_codecs_changed_cb: "
+ "session_id: %s jingle_session: %p\n", sid, session);
+ jingle_rtp_ready(session);
+}
+
+static void
+jingle_rtp_new_candidate_cb(PurpleMedia *media, gchar *sid, gchar *name, PurpleMediaCandidate *candidate, JingleSession *session)
+{
+ JingleContent *content = jingle_session_find_content(
+ session, sid, NULL);
+ JingleTransport *transport;
+
+ purple_debug_info("jingle-rtp", "jingle_rtp_new_candidate_cb\n");
+
+ if (content == NULL) {
+ purple_debug_error("jingle-rtp",
+ "jingle_rtp_new_candidate_cb: "
+ "Can't find session %s\n", sid);
+ return;
+ }
+
+ transport = jingle_content_get_transport(content);
+
+ if (JINGLE_IS_ICEUDP(transport))
+ jingle_iceudp_add_local_candidate(JINGLE_ICEUDP(transport),
+ jingle_rtp_candidate_to_iceudp(
+ session, 1, candidate));
+ else if (JINGLE_IS_RAWUDP(transport))
+ jingle_rawudp_add_local_candidate(JINGLE_RAWUDP(transport),
+ jingle_rtp_candidate_to_rawudp(
+ session, 1, candidate));
+
+ g_object_unref(transport);
+
+ jabber_iq_send(jingle_session_to_packet(session,
+ JINGLE_TRANSPORT_INFO));
+}
+
+static void
+jingle_rtp_initiate_ack_cb(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data)
+{
+ JingleSession *session = data;
+
+ if (type == JABBER_IQ_ERROR || xmlnode_get_child(packet, "error")) {
+ purple_media_end(jingle_rtp_get_media(session), NULL, NULL);
+ g_object_unref(session);
+ return;
+ }
+}
+
+static void
+jingle_rtp_state_changed_cb(PurpleMedia *media, PurpleMediaState state,
+ gchar *sid, gchar *name, JingleSession *session)
+{
+ purple_debug_info("jingle-rtp", "state-changed: state %d "
+ "id: %s name: %s\n", state, sid, name);
+}
+
+static void
+jingle_rtp_stream_info_cb(PurpleMedia *media, PurpleMediaInfoType type,
+ gchar *sid, gchar *name, gboolean local,
+ JingleSession *session)
+{
+ purple_debug_info("jingle-rtp", "stream-info: type %d "
+ "id: %s name: %s\n", type, sid, name);
+
+ g_return_if_fail(JINGLE_IS_SESSION(session));
+
+ if (type == PURPLE_MEDIA_INFO_HANGUP) {
+ jabber_iq_send(jingle_session_terminate_packet(
+ session, "success"));
+ g_object_unref(session);
+ } else if (type == PURPLE_MEDIA_INFO_REJECT) {
+ jabber_iq_send(jingle_session_terminate_packet(
+ session, "decline"));
+ g_object_unref(session);
+ }
+}
+
+static void
+jingle_rtp_ready(JingleSession *session)
+{
+ PurpleMedia *media = jingle_rtp_get_media(session);
+
+ if (purple_media_candidates_prepared(media, NULL, NULL) &&
+ purple_media_codecs_ready(media, NULL) &&
+ (jingle_session_is_initiator(session) == TRUE ||
+ purple_media_accepted(media, NULL, NULL))) {
+ if (jingle_session_is_initiator(session)) {
+ JabberIq *iq = jingle_session_to_packet(
+ session, JINGLE_SESSION_INITIATE);
+ jabber_iq_set_callback(iq,
+ jingle_rtp_initiate_ack_cb, session);
+ jabber_iq_send(iq);
+ } else {
+ jabber_iq_send(jingle_session_to_packet(session,
+ JINGLE_SESSION_ACCEPT));
+ }
+
+ g_signal_handlers_disconnect_by_func(G_OBJECT(media),
+ G_CALLBACK(jingle_rtp_accepted_cb), session);
+ g_signal_handlers_disconnect_by_func(G_OBJECT(media),
+ G_CALLBACK(jingle_rtp_candidates_prepared_cb),
+ session);
+ g_signal_handlers_disconnect_by_func(G_OBJECT(media),
+ G_CALLBACK(jingle_rtp_codecs_changed_cb),
+ session);
+ g_signal_connect(G_OBJECT(media), "new-candidate",
+ G_CALLBACK(jingle_rtp_new_candidate_cb),
+ session);
+ }
+}
+
+static PurpleMedia *
+jingle_rtp_create_media(JingleContent *content)
+{
+ JingleSession *session = jingle_content_get_session(content);
+ JabberStream *js = jingle_session_get_js(session);
+ gchar *remote_jid = jingle_session_get_remote_jid(session);
+
+ PurpleMedia *media = purple_media_manager_create_media(
+ purple_media_manager_get(),
+ purple_connection_get_account(js->gc),
+ "fsrtpconference", remote_jid,
+ jingle_session_is_initiator(session));
+ g_free(remote_jid);
+
+ if (!media) {
+ purple_debug_error("jingle-rtp", "Couldn't create media session\n");
+ return NULL;
+ }
+
+ purple_media_set_prpl_data(media, session);
+
+ /* connect callbacks */
+ if (jingle_session_is_initiator(session) == FALSE)
+ g_signal_connect(G_OBJECT(media), "accepted",
+ G_CALLBACK(jingle_rtp_accepted_cb), session);
+ g_signal_connect(G_OBJECT(media), "candidates-prepared",
+ G_CALLBACK(jingle_rtp_candidates_prepared_cb), session);
+ g_signal_connect(G_OBJECT(media), "codecs-changed",
+ G_CALLBACK(jingle_rtp_codecs_changed_cb), session);
+ g_signal_connect(G_OBJECT(media), "state-changed",
+ G_CALLBACK(jingle_rtp_state_changed_cb), session);
+ g_signal_connect(G_OBJECT(media), "stream-info",
+ G_CALLBACK(jingle_rtp_stream_info_cb), session);
+
+ g_object_unref(session);
+ return media;
+}
+
+static gboolean
+jingle_rtp_init_media(JingleContent *content)
+{
+ JingleSession *session = jingle_content_get_session(content);
+ PurpleMedia *media = jingle_rtp_get_media(session);
+ gchar *creator;
+ gchar *media_type;
+ gchar *remote_jid;
+ gchar *senders;
+ gchar *name;
+ const gchar *transmitter;
+ gboolean is_audio;
+ gboolean is_creator;
+ PurpleMediaSessionType type;
+ JingleTransport *transport;
+ GParameter *params = NULL;
+ guint num_params;
+
+ /* maybe this create ought to just be in initiate and handle initiate */
+ if (media == NULL)
+ media = jingle_rtp_create_media(content);
+
+ if (media == NULL)
+ return FALSE;
+
+ name = jingle_content_get_name(content);
+ media_type = jingle_rtp_get_media_type(content);
+ remote_jid = jingle_session_get_remote_jid(session);
+ senders = jingle_content_get_senders(content);
+ transport = jingle_content_get_transport(content);
+
+ if (JINGLE_IS_RAWUDP(transport))
+ transmitter = "rawudp";
+ else if (JINGLE_IS_ICEUDP(transport))
+ transmitter = "nice";
+ else
+ transmitter = "notransmitter";
+ g_object_unref(transport);
+
+ is_audio = !strcmp(media_type, "audio");
+
+ if (!strcmp(senders, "both"))
+ type = is_audio == TRUE ? PURPLE_MEDIA_AUDIO
+ : PURPLE_MEDIA_VIDEO;
+ else if (!strcmp(senders, "initiator")
+ && jingle_session_is_initiator(session))
+ type = is_audio == TRUE ? PURPLE_MEDIA_SEND_AUDIO
+ : PURPLE_MEDIA_SEND_VIDEO;
+ else
+ type = is_audio == TRUE ? PURPLE_MEDIA_RECV_AUDIO
+ : PURPLE_MEDIA_RECV_VIDEO;
+
+ params =
+ jingle_get_params(jingle_session_get_js(session), &num_params);
+
+ creator = jingle_content_get_creator(content);
+ if (!strcmp(creator, "initiator"))
+ is_creator = jingle_session_is_initiator(session);
+ else
+ is_creator = !jingle_session_is_initiator(session);
+ g_free(creator);
+
+ purple_media_add_stream(media, name, remote_jid,
+ type, is_creator, transmitter, num_params, params);
+
+ g_free(name);
+ g_free(media_type);
+ g_free(remote_jid);
+ g_free(senders);
+ g_free(params);
+ g_object_unref(session);
+
+ return TRUE;
+}
+
+static GList *
+jingle_rtp_parse_codecs(xmlnode *description)
+{
+ GList *codecs = NULL;
+ xmlnode *codec_element = NULL;
+ const char *encoding_name,*id, *clock_rate;
+ PurpleMediaCodec *codec;
+ const gchar *media = xmlnode_get_attrib(description, "media");
+ PurpleMediaSessionType type =
+ !strcmp(media, "video") ? PURPLE_MEDIA_VIDEO :
+ !strcmp(media, "audio") ? PURPLE_MEDIA_AUDIO : 0;
+
+ for (codec_element = xmlnode_get_child(description, "payload-type") ;
+ codec_element ;
+ codec_element = xmlnode_get_next_twin(codec_element)) {
+ xmlnode *param;
+ gchar *codec_str;
+ encoding_name = xmlnode_get_attrib(codec_element, "name");
+
+ id = xmlnode_get_attrib(codec_element, "id");
+ clock_rate = xmlnode_get_attrib(codec_element, "clockrate");
+
+ codec = purple_media_codec_new(atoi(id), encoding_name,
+ type,
+ clock_rate ? atoi(clock_rate) : 0);
+
+ for (param = xmlnode_get_child(codec_element, "parameter");
+ param; param = xmlnode_get_next_twin(param)) {
+ purple_media_codec_add_optional_parameter(codec,
+ xmlnode_get_attrib(param, "name"),
+ xmlnode_get_attrib(param, "value"));
+ }
+
+ codec_str = purple_media_codec_to_string(codec);
+ purple_debug_info("jingle-rtp", "received codec: %s\n", codec_str);
+ g_free(codec_str);
+
+ codecs = g_list_append(codecs, codec);
+ }
+ return codecs;
+}
+
+static JingleContent *
+jingle_rtp_parse_internal(xmlnode *rtp)
+{
+ JingleContent *content = parent_class->parse(rtp);
+ xmlnode *description = xmlnode_get_child(rtp, "description");
+ const gchar *media_type = xmlnode_get_attrib(description, "media");
+ const gchar *ssrc = xmlnode_get_attrib(description, "ssrc");
+ purple_debug_info("jingle-rtp", "rtp parse\n");
+ g_object_set(content, "media-type", media_type, NULL);
+ if (ssrc != NULL)
+ g_object_set(content, "ssrc", ssrc, NULL);
+ return content;
+}
+
+static void
+jingle_rtp_add_payloads(xmlnode *description, GList *codecs)
+{
+ for (; codecs ; codecs = codecs->next) {
+ PurpleMediaCodec *codec = (PurpleMediaCodec*)codecs->data;
+ GList *iter = purple_media_codec_get_optional_parameters(codec);
+ gchar *id, *name, *clockrate, *channels;
+ gchar *codec_str;
+ xmlnode *payload = xmlnode_new_child(description, "payload-type");
+
+ id = g_strdup_printf("%d",
+ purple_media_codec_get_id(codec));
+ name = purple_media_codec_get_encoding_name(codec);
+ clockrate = g_strdup_printf("%d",
+ purple_media_codec_get_clock_rate(codec));
+ channels = g_strdup_printf("%d",
+ purple_media_codec_get_channels(codec));
+
+ xmlnode_set_attrib(payload, "name", name);
+ xmlnode_set_attrib(payload, "id", id);
+ xmlnode_set_attrib(payload, "clockrate", clockrate);
+ xmlnode_set_attrib(payload, "channels", channels);
+
+ g_free(channels);
+ g_free(clockrate);
+ g_free(name);
+ g_free(id);
+
+ for (; iter; iter = g_list_next(iter)) {
+ PurpleKeyValuePair *mparam = iter->data;
+ xmlnode *param = xmlnode_new_child(payload, "parameter");
+ xmlnode_set_attrib(param, "name", mparam->key);
+ xmlnode_set_attrib(param, "value", mparam->value);
+ }
+
+ codec_str = purple_media_codec_to_string(codec);
+ purple_debug_info("jingle", "adding codec: %s\n", codec_str);
+ g_free(codec_str);
+ }
+}
+
+static xmlnode *
+jingle_rtp_to_xml_internal(JingleContent *rtp, xmlnode *content, JingleActionType action)
+{
+ xmlnode *node = parent_class->to_xml(rtp, content, action);
+ xmlnode *description = xmlnode_get_child(node, "description");
+ if (description != NULL) {
+ JingleSession *session = jingle_content_get_session(rtp);
+ PurpleMedia *media = jingle_rtp_get_media(session);
+ gchar *media_type = jingle_rtp_get_media_type(rtp);
+ gchar *ssrc = jingle_rtp_get_ssrc(rtp);
+ gchar *name = jingle_content_get_name(rtp);
+ GList *codecs = purple_media_get_codecs(media, name);
+
+ xmlnode_set_attrib(description, "media", media_type);
+
+ if (ssrc != NULL)
+ xmlnode_set_attrib(description, "ssrc", ssrc);
+
+ g_free(media_type);
+ g_free(name);
+ g_object_unref(session);
+
+ jingle_rtp_add_payloads(description, codecs);
+ purple_media_codec_list_free(codecs);
+ }
+ return node;
+}
+
+static void
+jingle_rtp_handle_action_internal(JingleContent *content, xmlnode *xmlcontent, JingleActionType action)
+{
+ switch (action) {
+ case JINGLE_SESSION_ACCEPT:
+ case JINGLE_SESSION_INITIATE: {
+ JingleSession *session = jingle_content_get_session(content);
+ JingleTransport *transport = jingle_transport_parse(
+ xmlnode_get_child(xmlcontent, "transport"));
+ xmlnode *description = xmlnode_get_child(xmlcontent, "description");
+ GList *candidates = jingle_rtp_transport_to_candidates(transport);
+ GList *codecs = jingle_rtp_parse_codecs(description);
+ gchar *name = jingle_content_get_name(content);
+ gchar *remote_jid =
+ jingle_session_get_remote_jid(session);
+ PurpleMedia *media;
+
+ if (action == JINGLE_SESSION_INITIATE &&
+ jingle_rtp_init_media(content) == FALSE) {
+ /* XXX: send error */
+ jabber_iq_send(jingle_session_terminate_packet(
+ session, "general-error"));
+ g_object_unref(session);
+ break;
+ }
+
+ media = jingle_rtp_get_media(session);
+ purple_media_set_remote_codecs(media,
+ name, remote_jid, codecs);
+ purple_media_add_remote_candidates(media,
+ name, remote_jid, candidates);
+
+ if (action == JINGLE_SESSION_ACCEPT)
+ purple_media_stream_info(media,
+ PURPLE_MEDIA_INFO_ACCEPT,
+ name, remote_jid, FALSE);
+
+ g_free(remote_jid);
+ g_free(name);
+ g_object_unref(session);
+ break;
+ }
+ case JINGLE_SESSION_TERMINATE: {
+ JingleSession *session = jingle_content_get_session(content);
+ PurpleMedia *media = jingle_rtp_get_media(session);
+
+ if (media != NULL) {
+ purple_media_end(media, NULL, NULL);
+ }
+
+ g_object_unref(session);
+ break;
+ }
+ case JINGLE_TRANSPORT_INFO: {
+ JingleSession *session = jingle_content_get_session(content);
+ JingleTransport *transport = jingle_transport_parse(
+ xmlnode_get_child(xmlcontent, "transport"));
+ GList *candidates = jingle_rtp_transport_to_candidates(transport);
+ gchar *name = jingle_content_get_name(content);
+ gchar *remote_jid =
+ jingle_session_get_remote_jid(session);
+
+ purple_media_add_remote_candidates(
+ jingle_rtp_get_media(session),
+ name, remote_jid, candidates);
+
+ g_free(remote_jid);
+ g_free(name);
+ g_object_unref(session);
+ break;
+ }
+ default:
+ break;
+ }
+}
+
+gboolean
+jingle_rtp_initiate_media(JabberStream *js, const gchar *who,
+ PurpleMediaSessionType type)
+{
+ /* create content negotiation */
+ JingleSession *session;
+ JingleContent *content;
+ JingleTransport *transport;
+ JabberBuddy *jb;
+ JabberBuddyResource *jbr;
+ const gchar *transport_type;
+
+ gchar *resource = NULL, *me = NULL, *sid = NULL;
+
+ /* construct JID to send to */
+ jb = jabber_buddy_find(js, who, FALSE);
+ if (!jb) {
+ purple_debug_error("jingle-rtp", "Could not find Jabber buddy\n");
+ return FALSE;
+ }
+
+ resource = jabber_get_resource(who);
+ jbr = jabber_buddy_find_resource(jb, resource);
+ g_free(resource);
+
+ if (!jbr) {
+ purple_debug_error("jingle-rtp", "Could not find buddy's resource\n");
+ }
+
+ if (jabber_resource_has_capability(jbr, JINGLE_TRANSPORT_ICEUDP)) {
+ transport_type = JINGLE_TRANSPORT_ICEUDP;
+ } else if (jabber_resource_has_capability(jbr, JINGLE_TRANSPORT_RAWUDP)) {
+ transport_type = JINGLE_TRANSPORT_RAWUDP;
+ } else {
+ purple_debug_error("jingle-rtp", "Resource doesn't support "
+ "the same transport types\n");
+ return FALSE;
+ }
+
+ /* set ourselves as initiator */
+ me = g_strdup_printf("%s@%s/%s", js->user->node, js->user->domain, js->user->resource);
+
+ sid = jabber_get_next_id(js);
+ session = jingle_session_create(js, sid, me, who, TRUE);
+ g_free(sid);
+
+
+ if (type & PURPLE_MEDIA_AUDIO) {
+ transport = jingle_transport_create(transport_type);
+ content = jingle_content_create(JINGLE_APP_RTP, "initiator",
+ "session", "audio-session", "both", transport);
+ jingle_session_add_content(session, content);
+ JINGLE_RTP(content)->priv->media_type = g_strdup("audio");
+ jingle_rtp_init_media(content);
+ }
+ if (type & PURPLE_MEDIA_VIDEO) {
+ transport = jingle_transport_create(transport_type);
+ content = jingle_content_create(JINGLE_APP_RTP, "initiator",
+ "session", "video-session", "both", transport);
+ jingle_session_add_content(session, content);
+ JINGLE_RTP(content)->priv->media_type = g_strdup("video");
+ jingle_rtp_init_media(content);
+ }
+
+ g_free(me);
+
+ if (jingle_rtp_get_media(session) == NULL) {
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+void
+jingle_rtp_terminate_session(JabberStream *js, const gchar *who)
+{
+ JingleSession *session;
+/* XXX: This may cause file transfers and xml sessions to stop as well */
+ session = jingle_session_find_by_jid(js, who);
+
+ if (session) {
+ PurpleMedia *media = jingle_rtp_get_media(session);
+ if (media) {
+ purple_debug_info("jingle-rtp", "hanging up media\n");
+ purple_media_stream_info(media,
+ PURPLE_MEDIA_INFO_HANGUP,
+ NULL, NULL, TRUE);
+ }
+ }
+}
+
+#endif /* USE_VV */
+
diff --git a/libpurple/protocols/jabber/jingle/rtp.h b/libpurple/protocols/jabber/jingle/rtp.h
new file mode 100644
index 0000000000..db21706f45
--- /dev/null
+++ b/libpurple/protocols/jabber/jingle/rtp.h
@@ -0,0 +1,92 @@
+/**
+ * @file rtp.h
+ *
+ * purple
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#ifndef PURPLE_JABBER_JINGLE_RTP_H
+#define PURPLE_JABBER_JINGLE_RTP_H
+
+#include "config.h"
+
+#ifdef USE_VV
+
+#include <glib.h>
+#include <glib-object.h>
+
+#include "content.h"
+#include "media.h"
+#include "xmlnode.h"
+
+G_BEGIN_DECLS
+
+#define JINGLE_TYPE_RTP (jingle_rtp_get_type())
+#define JINGLE_RTP(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), JINGLE_TYPE_RTP, JingleRtp))
+#define JINGLE_RTP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), JINGLE_TYPE_RTP, JingleRtpClass))
+#define JINGLE_IS_RTP(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), JINGLE_TYPE_RTP))
+#define JINGLE_IS_RTP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), JINGLE_TYPE_RTP))
+#define JINGLE_RTP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), JINGLE_TYPE_RTP, JingleRtpClass))
+
+/** @copydoc _JingleRtp */
+typedef struct _JingleRtp JingleRtp;
+/** @copydoc _JingleRtpClass */
+typedef struct _JingleRtpClass JingleRtpClass;
+/** @copydoc _JingleRtpPrivate */
+typedef struct _JingleRtpPrivate JingleRtpPrivate;
+
+/** The rtp class */
+struct _JingleRtpClass
+{
+ JingleContentClass parent_class; /**< The parent class. */
+};
+
+/** The rtp class's private data */
+struct _JingleRtp
+{
+ JingleContent parent; /**< The parent of this object. */
+ JingleRtpPrivate *priv; /**< The private data of this object. */
+};
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * Gets the rtp class's GType
+ *
+ * @return The rtp class's GType.
+ */
+GType jingle_rtp_get_type(void);
+
+gchar *jingle_rtp_get_media_type(JingleContent *content);
+gchar *jingle_rtp_get_ssrc(JingleContent *content);
+
+gboolean jingle_rtp_initiate_media(JabberStream *js,
+ const gchar *who,
+ PurpleMediaSessionType type);
+void jingle_rtp_terminate_session(JabberStream *js, const gchar *who);
+
+#ifdef __cplusplus
+}
+#endif
+
+G_END_DECLS
+
+#endif /* USE_VV */
+
+#endif /* PURPLE_JABBER_JINGLE_RTP_H */
+
diff --git a/libpurple/protocols/jabber/jingle/session.c b/libpurple/protocols/jabber/jingle/session.c
new file mode 100644
index 0000000000..2a262e9d7d
--- /dev/null
+++ b/libpurple/protocols/jabber/jingle/session.c
@@ -0,0 +1,680 @@
+/**
+ * @file session.c
+ *
+ * purple
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#include "internal.h"
+
+#include "content.h"
+#include "debug.h"
+#include "session.h"
+#include "jingle.h"
+
+#include <string.h>
+
+struct _JingleSessionPrivate
+{
+ gchar *sid;
+ JabberStream *js;
+ gchar *remote_jid;
+ gchar *local_jid;
+ gboolean is_initiator;
+ gboolean state;
+ GList *contents;
+ GList *pending_contents;
+};
+
+#define JINGLE_SESSION_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), JINGLE_TYPE_SESSION, JingleSessionPrivate))
+
+static void jingle_session_class_init (JingleSessionClass *klass);
+static void jingle_session_init (JingleSession *session);
+static void jingle_session_finalize (GObject *object);
+static void jingle_session_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
+static void jingle_session_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
+
+static GObjectClass *parent_class = NULL;
+
+enum {
+ PROP_0,
+ PROP_SID,
+ PROP_JS,
+ PROP_REMOTE_JID,
+ PROP_LOCAL_JID,
+ PROP_IS_INITIATOR,
+ PROP_STATE,
+ PROP_CONTENTS,
+ PROP_PENDING_CONTENTS,
+};
+
+GType
+jingle_session_get_type()
+{
+ static GType type = 0;
+
+ if (type == 0) {
+ static const GTypeInfo info = {
+ sizeof(JingleSessionClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) jingle_session_class_init,
+ NULL,
+ NULL,
+ sizeof(JingleSession),
+ 0,
+ (GInstanceInitFunc) jingle_session_init,
+ NULL
+ };
+ type = g_type_register_static(G_TYPE_OBJECT, "JingleSession", &info, 0);
+ }
+ return type;
+}
+
+static void
+jingle_session_class_init (JingleSessionClass *klass)
+{
+ GObjectClass *gobject_class = (GObjectClass*)klass;
+ parent_class = g_type_class_peek_parent(klass);
+
+ gobject_class->finalize = jingle_session_finalize;
+ gobject_class->set_property = jingle_session_set_property;
+ gobject_class->get_property = jingle_session_get_property;
+
+ g_object_class_install_property(gobject_class, PROP_SID,
+ g_param_spec_string("sid",
+ "Session ID",
+ "The unique session ID of the Jingle Session.",
+ NULL,
+ G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
+
+ g_object_class_install_property(gobject_class, PROP_JS,
+ g_param_spec_pointer("js",
+ "JabberStream",
+ "The Jabber stream associated with this session.",
+ G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
+
+ g_object_class_install_property(gobject_class, PROP_REMOTE_JID,
+ g_param_spec_string("remote-jid",
+ "Remote JID",
+ "The JID of the remote participant.",
+ NULL,
+ G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
+
+ g_object_class_install_property(gobject_class, PROP_LOCAL_JID,
+ g_param_spec_string("local-jid",
+ "Local JID",
+ "The JID of the local participant.",
+ NULL,
+ G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
+
+ g_object_class_install_property(gobject_class, PROP_IS_INITIATOR,
+ g_param_spec_boolean("is-initiator",
+ "Is Initiator",
+ "Whether or not the local JID is the initiator of the session.",
+ FALSE,
+ G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
+
+ g_object_class_install_property(gobject_class, PROP_STATE,
+ g_param_spec_boolean("state",
+ "State",
+ "The state of the session (PENDING=FALSE, ACTIVE=TRUE).",
+ FALSE,
+ G_PARAM_READABLE));
+
+ g_object_class_install_property(gobject_class, PROP_CONTENTS,
+ g_param_spec_pointer("contents",
+ "Contents",
+ "The active contents contained within this session",
+ G_PARAM_READABLE));
+
+ g_object_class_install_property(gobject_class, PROP_PENDING_CONTENTS,
+ g_param_spec_pointer("pending-contents",
+ "Pending contents",
+ "The pending contents contained within this session",
+ G_PARAM_READABLE));
+
+ g_type_class_add_private(klass, sizeof(JingleSessionPrivate));
+}
+
+static void
+jingle_session_init (JingleSession *session)
+{
+ session->priv = JINGLE_SESSION_GET_PRIVATE(session);
+ memset(session->priv, 0, sizeof(*session->priv));
+}
+
+static void
+jingle_session_finalize (GObject *session)
+{
+ JingleSessionPrivate *priv = JINGLE_SESSION_GET_PRIVATE(session);
+ purple_debug_info("jingle","jingle_session_finalize\n");
+
+ g_hash_table_remove(priv->js->sessions, priv->sid);
+
+ g_free(priv->sid);
+ g_free(priv->remote_jid);
+ g_free(priv->local_jid);
+
+ for (; priv->contents; priv->contents =
+ g_list_delete_link(priv->contents, priv->contents)) {
+ g_object_unref(priv->contents->data);
+ }
+ for (; priv->pending_contents; priv->pending_contents =
+ g_list_delete_link(priv->pending_contents, priv->pending_contents)) {
+ g_object_unref(priv->pending_contents->data);
+ }
+
+ parent_class->finalize(session);
+}
+
+static void
+jingle_session_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+{
+ JingleSession *session;
+ g_return_if_fail(JINGLE_IS_SESSION(object));
+
+ session = JINGLE_SESSION(object);
+
+ switch (prop_id) {
+ case PROP_SID:
+ g_free(session->priv->sid);
+ session->priv->sid = g_value_dup_string(value);
+ break;
+ case PROP_JS:
+ session->priv->js = g_value_get_pointer(value);
+ break;
+ case PROP_REMOTE_JID:
+ g_free(session->priv->remote_jid);
+ session->priv->remote_jid = g_value_dup_string(value);
+ break;
+ case PROP_LOCAL_JID:
+ g_free(session->priv->local_jid);
+ session->priv->local_jid = g_value_dup_string(value);
+ break;
+ case PROP_IS_INITIATOR:
+ session->priv->is_initiator = g_value_get_boolean(value);
+ break;
+ case PROP_STATE:
+ session->priv->state = g_value_get_boolean(value);
+ break;
+ case PROP_CONTENTS:
+ session->priv->contents = g_value_get_pointer(value);
+ break;
+ case PROP_PENDING_CONTENTS:
+ session->priv->pending_contents = g_value_get_pointer(value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+jingle_session_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+{
+ JingleSession *session;
+ g_return_if_fail(JINGLE_IS_SESSION(object));
+
+ session = JINGLE_SESSION(object);
+
+ switch (prop_id) {
+ case PROP_SID:
+ g_value_set_string(value, session->priv->sid);
+ break;
+ case PROP_JS:
+ g_value_set_pointer(value, session->priv->js);
+ break;
+ case PROP_REMOTE_JID:
+ g_value_set_string(value, session->priv->remote_jid);
+ break;
+ case PROP_LOCAL_JID:
+ g_value_set_string(value, session->priv->local_jid);
+ break;
+ case PROP_IS_INITIATOR:
+ g_value_set_boolean(value, session->priv->is_initiator);
+ break;
+ case PROP_STATE:
+ g_value_set_boolean(value, session->priv->state);
+ break;
+ case PROP_CONTENTS:
+ g_value_set_pointer(value, session->priv->contents);
+ break;
+ case PROP_PENDING_CONTENTS:
+ g_value_set_pointer(value, session->priv->pending_contents);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+JingleSession *
+jingle_session_create(JabberStream *js, const gchar *sid,
+ const gchar *local_jid, const gchar *remote_jid,
+ gboolean is_initiator)
+{
+ JingleSession *session = g_object_new(jingle_session_get_type(),
+ "js", js,
+ "sid", sid,
+ "local-jid", local_jid,
+ "remote-jid", remote_jid,
+ "is_initiator", is_initiator,
+ NULL);
+
+ /* insert it into the hash table */
+ if (!js->sessions) {
+ purple_debug_info("jingle",
+ "Creating hash table for sessions\n");
+ js->sessions = g_hash_table_new(g_str_hash, g_str_equal);
+ }
+ purple_debug_info("jingle",
+ "inserting session with key: %s into table\n", sid);
+ g_hash_table_insert(js->sessions, g_strdup(sid), session);
+
+ return session;
+}
+
+JabberStream *
+jingle_session_get_js(JingleSession *session)
+{
+ JabberStream *js;
+ g_object_get(session, "js", &js, NULL);
+ return js;
+}
+
+gchar *
+jingle_session_get_sid(JingleSession *session)
+{
+ gchar *sid;
+ g_object_get(session, "sid", &sid, NULL);
+ return sid;
+}
+
+gchar *
+jingle_session_get_local_jid(JingleSession *session)
+{
+ gchar *local_jid;
+ g_object_get(session, "local-jid", &local_jid, NULL);
+ return local_jid;
+}
+
+gchar *
+jingle_session_get_remote_jid(JingleSession *session)
+{
+ gchar *remote_jid;
+ g_object_get(session, "remote-jid", &remote_jid, NULL);
+ return remote_jid;
+}
+
+gboolean
+jingle_session_is_initiator(JingleSession *session)
+{
+ gboolean is_initiator;
+ g_object_get(session, "is-initiator", &is_initiator, NULL);
+ return is_initiator;
+}
+
+gboolean
+jingle_session_get_state(JingleSession *session)
+{
+ gboolean state;
+ g_object_get(session, "state", &state, NULL);
+ return state;
+}
+
+GList *
+jingle_session_get_contents(JingleSession *session)
+{
+ GList *contents;
+ g_object_get(session, "contents", &contents, NULL);
+ return contents;
+}
+
+GList *
+jingle_session_get_pending_contents(JingleSession *session)
+{
+ GList *pending_contents;
+ g_object_get(session, "pending-contents", &pending_contents, NULL);
+ return pending_contents;
+}
+
+JingleSession *
+jingle_session_find_by_sid(JabberStream *js, const gchar *sid)
+{
+ purple_debug_info("jingle", "find_by_id %s\n", sid);
+ purple_debug_info("jingle", "lookup: %p\n", (js->sessions) ?
+ g_hash_table_lookup(js->sessions, sid) : NULL);
+ return (JingleSession *) (js->sessions) ?
+ g_hash_table_lookup(js->sessions, sid) : NULL;
+}
+
+#if GLIB_CHECK_VERSION(2,4,0)
+static gboolean find_by_jid_ghr(gpointer key,
+ gpointer value, gpointer user_data)
+{
+ JingleSession *session = (JingleSession *)value;
+ const gchar *jid = user_data;
+ gboolean use_bare = g_utf8_strchr(jid, -1, '/') == NULL;
+ gchar *remote_jid = jingle_session_get_remote_jid(session);
+ gchar *cmp_jid = use_bare ? jabber_get_bare_jid(remote_jid)
+ : g_strdup(remote_jid);
+ g_free(remote_jid);
+ if (g_str_equal(jid, cmp_jid)) {
+ g_free(cmp_jid);
+ return TRUE;
+ }
+ g_free(cmp_jid);
+
+ return FALSE;
+}
+
+#else /* GLIB_CHECK_VERSION 2.4.0 */
+
+/* Ugly code; g_hash_table_find version above is much nicer */
+struct session_find_jid
+{
+ const gchar *jid;
+ JingleSession *ret;
+ gboolean use_bare;
+};
+
+static void find_by_jid_ghr(gpointer key, gpointer value, gpointer user_data)
+{
+ JingleSession *session = (JingleSession *)value;
+ struct session_find_jid *data = user_data;
+ gchar *remote_jid;
+ gchar *cmp_jid;
+
+ if (data->ret != NULL)
+ return;
+
+ remote_jid = jingle_session_get_remote_jid(session);
+ cmp_jid = data->use_bare ? jabber_get_bare_jid(remote_jid)
+ : g_strdup(remote_jid);
+ g_free(remote_jid);
+
+ if (g_str_equal(data->jid, cmp_jid))
+ data->ret = session;
+
+ g_free(cmp_jid);
+}
+#endif /* GLIB_CHECK_VERSION 2.4.0 */
+
+JingleSession *
+jingle_session_find_by_jid(JabberStream *js, const gchar *jid)
+{
+#if GLIB_CHECK_VERSION(2,4,0)
+ return js->sessions != NULL ?
+ g_hash_table_find(js->sessions,
+ find_by_jid_ghr, (gpointer)jid) : NULL;
+#else
+ struct session_find_jid data;
+
+ if (js->sessions == NULL)
+ return NULL;
+
+ data.jid = jid;
+ data.ret = NULL;
+ data.use_bare = g_utf8_strchr(jid, -1, '/') == NULL;
+
+ g_hash_table_foreach(js->sessions, find_by_jid_ghr, &data);
+ return data.ret;
+#endif
+}
+
+static xmlnode *
+jingle_add_jingle_packet(JingleSession *session,
+ JabberIq *iq, JingleActionType action)
+{
+ xmlnode *jingle = iq ?
+ xmlnode_new_child(iq->node, "jingle") :
+ xmlnode_new("jingle");
+ gchar *local_jid = jingle_session_get_local_jid(session);
+ gchar *remote_jid = jingle_session_get_remote_jid(session);
+
+ xmlnode_set_namespace(jingle, JINGLE);
+ xmlnode_set_attrib(jingle, "action", jingle_get_action_name(action));
+
+ if (jingle_session_is_initiator(session)) {
+ xmlnode_set_attrib(jingle, "initiator",
+ jingle_session_get_local_jid(session));
+ xmlnode_set_attrib(jingle, "responder",
+ jingle_session_get_remote_jid(session));
+ } else {
+ xmlnode_set_attrib(jingle, "initiator",
+ jingle_session_get_remote_jid(session));
+ xmlnode_set_attrib(jingle, "responder",
+ jingle_session_get_local_jid(session));
+ }
+
+ g_free(local_jid);
+ g_free(remote_jid);
+
+ xmlnode_set_attrib(jingle, "sid", jingle_session_get_sid(session));
+
+ return jingle;
+}
+
+JabberIq *
+jingle_session_create_ack(JingleSession *session, const xmlnode *jingle)
+{
+ JabberIq *result = jabber_iq_new(
+ jingle_session_get_js(session),
+ JABBER_IQ_RESULT);
+ xmlnode *packet = xmlnode_get_parent(jingle);
+ jabber_iq_set_id(result, xmlnode_get_attrib(packet, "id"));
+ xmlnode_set_attrib(result->node, "from", xmlnode_get_attrib(packet, "to"));
+ xmlnode_set_attrib(result->node, "to", xmlnode_get_attrib(packet, "from"));
+ return result;
+}
+
+static JabberIq *
+jingle_create_iq(JingleSession *session)
+{
+ JabberStream *js = jingle_session_get_js(session);
+ JabberIq *result = jabber_iq_new(js, JABBER_IQ_SET);
+ gchar *from = jingle_session_get_local_jid(session);
+ gchar *to = jingle_session_get_remote_jid(session);
+
+ xmlnode_set_attrib(result->node, "from", from);
+ xmlnode_set_attrib(result->node, "to", to);
+
+ g_free(from);
+ g_free(to);
+ return result;
+}
+
+xmlnode *
+jingle_session_to_xml(JingleSession *session, xmlnode *jingle, JingleActionType action)
+{
+ if (action != JINGLE_SESSION_INFO && action != JINGLE_SESSION_TERMINATE) {
+ GList *iter;
+ if (action == JINGLE_CONTENT_ACCEPT
+ || action == JINGLE_CONTENT_ADD
+ || action == JINGLE_CONTENT_REMOVE)
+ iter = jingle_session_get_pending_contents(session);
+ else
+ iter = jingle_session_get_contents(session);
+
+ for (; iter; iter = g_list_next(iter)) {
+ jingle_content_to_xml(iter->data, jingle, action);
+ }
+ }
+ return jingle;
+}
+
+JabberIq *
+jingle_session_to_packet(JingleSession *session, JingleActionType action)
+{
+ JabberIq *iq = jingle_create_iq(session);
+ xmlnode *jingle = jingle_add_jingle_packet(session, iq, action);
+ jingle_session_to_xml(session, jingle, action);
+ return iq;
+}
+
+void jingle_session_handle_action(JingleSession *session, xmlnode *jingle, JingleActionType action)
+{
+ GList *iter;
+ if (action == JINGLE_CONTENT_ADD || action == JINGLE_CONTENT_REMOVE)
+ iter = jingle_session_get_pending_contents(session);
+ else
+ iter = jingle_session_get_contents(session);
+
+ for (; iter; iter = g_list_next(iter)) {
+ jingle_content_handle_action(iter->data, jingle, action);
+ }
+}
+
+JingleContent *
+jingle_session_find_content(JingleSession *session, const gchar *name, const gchar *creator)
+{
+ GList *iter = session->priv->contents;
+ for (; iter; iter = g_list_next(iter)) {
+ JingleContent *content = iter->data;
+ gchar *cname = jingle_content_get_name(content);
+ gboolean result = !strcmp(name, cname);
+ g_free(cname);
+
+ if (creator != NULL) {
+ gchar *ccreator = jingle_content_get_creator(content);
+ result = (result && !strcmp(creator, ccreator));
+ g_free(ccreator);
+ }
+
+ if (result == TRUE)
+ return content;
+ }
+ return NULL;
+}
+
+JingleContent *
+jingle_session_find_pending_content(JingleSession *session, const gchar *name, const gchar *creator)
+{
+ GList *iter = session->priv->pending_contents;
+ for (; iter; iter = g_list_next(iter)) {
+ JingleContent *content = iter->data;
+ gchar *cname = jingle_content_get_name(content);
+ gboolean result = !strcmp(name, cname);
+ g_free(cname);
+
+ if (creator != NULL) {
+ gchar *ccreator = jingle_content_get_creator(content);
+ result = (result && !strcmp(creator, ccreator));
+ g_free(ccreator);
+ }
+
+ if (result == TRUE)
+ return content;
+ }
+ return NULL;
+}
+
+void
+jingle_session_add_content(JingleSession *session, JingleContent* content)
+{
+ session->priv->contents =
+ g_list_append(session->priv->contents, content);
+ jingle_content_set_session(content, session);
+}
+
+void
+jingle_session_remove_content(JingleSession *session, const gchar *name, const gchar *creator)
+{
+ JingleContent *content =
+ jingle_session_find_content(session, name, creator);
+
+ if (content) {
+ session->priv->contents =
+ g_list_remove(session->priv->contents, content);
+ g_object_unref(content);
+ }
+}
+
+void
+jingle_session_add_pending_content(JingleSession *session, JingleContent* content)
+{
+ session->priv->pending_contents =
+ g_list_append(session->priv->pending_contents, content);
+ jingle_content_set_session(content, session);
+}
+
+void
+jingle_session_remove_pending_content(JingleSession *session, const gchar *name, const gchar *creator)
+{
+ JingleContent *content = jingle_session_find_pending_content(session, name, creator);
+
+ if (content) {
+ session->priv->pending_contents =
+ g_list_remove(session->priv->pending_contents, content);
+ g_object_unref(content);
+ }
+}
+
+void
+jingle_session_accept_content(JingleSession *session, const gchar *name, const gchar *creator)
+{
+ JingleContent *content = jingle_session_find_pending_content(session, name, creator);
+
+ if (content) {
+ g_object_ref(content);
+ jingle_session_remove_pending_content(session, name, creator);
+ jingle_session_add_content(session, content);
+ }
+}
+
+void
+jingle_session_accept_session(JingleSession *session)
+{
+ session->priv->state = TRUE;
+}
+
+JabberIq *
+jingle_session_terminate_packet(JingleSession *session, const gchar *reason)
+{
+ JabberIq *iq = jingle_session_to_packet(session,
+ JINGLE_SESSION_TERMINATE);
+ xmlnode *jingle = xmlnode_get_child(iq->node, "jingle");
+
+ if (reason != NULL) {
+ xmlnode *reason_node;
+ reason_node = xmlnode_new_child(jingle, "reason");
+ xmlnode_new_child(reason_node, reason);
+ }
+ return iq;
+}
+
+JabberIq *
+jingle_session_redirect_packet(JingleSession *session, const gchar *sid)
+{
+ JabberIq *iq = jingle_session_terminate_packet(session,
+ "alternative-session");
+ xmlnode *alt_session;
+
+ if (sid == NULL)
+ return iq;
+
+ alt_session = xmlnode_get_child(iq->node,
+ "jingle/reason/alternative-session");
+
+ if (alt_session != NULL) {
+ xmlnode *sid_node = xmlnode_new_child(alt_session, "sid");
+ xmlnode_insert_data(sid_node, sid, -1);
+ }
+ return iq;
+}
+
diff --git a/libpurple/protocols/jabber/jingle/session.h b/libpurple/protocols/jabber/jingle/session.h
new file mode 100644
index 0000000000..15c90fda98
--- /dev/null
+++ b/libpurple/protocols/jabber/jingle/session.h
@@ -0,0 +1,115 @@
+/**
+ * @file session.h
+ *
+ * purple
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#ifndef PURPLE_JABBER_JINGLE_SESSION_H
+#define PURPLE_JABBER_JINGLE_SESSION_H
+
+#include "iq.h"
+#include "jabber.h"
+
+#include <glib.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define JINGLE_TYPE_SESSION (jingle_session_get_type())
+#define JINGLE_SESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), JINGLE_TYPE_SESSION, JingleSession))
+#define JINGLE_SESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), JINGLE_TYPE_SESSION, JingleSessionClass))
+#define JINGLE_IS_SESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), JINGLE_TYPE_SESSION))
+#define JINGLE_IS_SESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), JINGLE_TYPE_SESSION))
+#define JINGLE_SESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), JINGLE_TYPE_SESSION, JingleSessionClass))
+
+/** @copydoc _JingleSession */
+typedef struct _JingleSession JingleSession;
+/** @copydoc _JingleSessionClass */
+typedef struct _JingleSessionClass JingleSessionClass;
+/** @copydoc _JingleSessionPrivate */
+typedef struct _JingleSessionPrivate JingleSessionPrivate;
+
+/** The session class */
+struct _JingleSessionClass
+{
+ GObjectClass parent_class; /**< The parent class. */
+};
+
+/** The session class's private data */
+struct _JingleSession
+{
+ GObject parent; /**< The parent of this object. */
+ JingleSessionPrivate *priv; /**< The private data of this object. */
+};
+
+struct _JingleContent;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * Gets the session class's GType
+ *
+ * @return The session class's GType.
+ */
+GType jingle_session_get_type(void);
+
+JingleSession *jingle_session_create(JabberStream *js, const gchar *sid,
+ const gchar *local_jid, const gchar *remote_jid,
+ gboolean is_initiator);
+JabberStream *jingle_session_get_js(JingleSession *session);
+gchar *jingle_session_get_sid(JingleSession *session);
+gchar *jingle_session_get_local_jid(JingleSession *session);
+gchar *jingle_session_get_remote_jid(JingleSession *session);
+gboolean jingle_session_is_initiator(JingleSession *session);
+gboolean jingle_session_get_state(JingleSession *session);
+
+GList *jingle_session_get_contents(JingleSession *session);
+GList *jingle_session_get_pending_contents(JingleSession *session);
+
+JingleSession *jingle_session_find_by_sid(JabberStream *js, const gchar *sid);
+JingleSession *jingle_session_find_by_jid(JabberStream *js, const gchar *jid);
+
+JabberIq *jingle_session_create_ack(JingleSession *session, const xmlnode *jingle);
+xmlnode *jingle_session_to_xml(JingleSession *session, xmlnode *parent, JingleActionType action);
+JabberIq *jingle_session_to_packet(JingleSession *session, JingleActionType action);
+
+void jingle_session_handle_action(JingleSession *session, xmlnode *jingle, JingleActionType action);
+
+struct _JingleContent *jingle_session_find_content(JingleSession *session,
+ const gchar *name, const gchar *creator);
+struct _JingleContent *jingle_session_find_pending_content(JingleSession *session,
+ const gchar *name, const gchar *creator);
+
+void jingle_session_add_content(JingleSession *session, struct _JingleContent* content);
+void jingle_session_remove_content(JingleSession *session, const gchar *name, const gchar *creator);
+void jingle_session_add_pending_content(JingleSession *session, struct _JingleContent* content);
+void jingle_session_remove_pending_content(JingleSession *session, const gchar *name, const gchar *creator);
+void jingle_session_accept_content(JingleSession *session, const gchar *name, const gchar *creator);
+void jingle_session_accept_session(JingleSession *session);
+JabberIq *jingle_session_terminate_packet(JingleSession *session, const gchar *reason);
+JabberIq *jingle_session_redirect_packet(JingleSession *session, const gchar *sid);
+
+#ifdef __cplusplus
+}
+#endif
+
+G_END_DECLS
+
+#endif /* PURPLE_JABBER_JINGLE_SESSION_H */
+
diff --git a/libpurple/protocols/jabber/jingle/transport.c b/libpurple/protocols/jabber/jingle/transport.c
new file mode 100644
index 0000000000..c3105f43eb
--- /dev/null
+++ b/libpurple/protocols/jabber/jingle/transport.c
@@ -0,0 +1,174 @@
+/**
+ * @file transport.c
+ *
+ * purple
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#include "internal.h"
+
+#include "transport.h"
+#include "jingle.h"
+#include "debug.h"
+
+#include <string.h>
+
+struct _JingleTransportPrivate
+{
+ void *dummy;
+};
+
+#define JINGLE_TRANSPORT_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), JINGLE_TYPE_TRANSPORT, JingleTransportPrivate))
+
+static void jingle_transport_class_init (JingleTransportClass *klass);
+static void jingle_transport_init (JingleTransport *transport);
+static void jingle_transport_finalize (GObject *object);
+static void jingle_transport_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
+static void jingle_transport_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
+JingleTransport *jingle_transport_parse_internal(xmlnode *transport);
+xmlnode *jingle_transport_to_xml_internal(JingleTransport *transport, xmlnode *content, JingleActionType action);
+
+static GObjectClass *parent_class = NULL;
+
+enum {
+ PROP_0,
+};
+
+GType
+jingle_transport_get_type()
+{
+ static GType type = 0;
+
+ if (type == 0) {
+ static const GTypeInfo info = {
+ sizeof(JingleTransportClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) jingle_transport_class_init,
+ NULL,
+ NULL,
+ sizeof(JingleTransport),
+ 0,
+ (GInstanceInitFunc) jingle_transport_init,
+ NULL
+ };
+ type = g_type_register_static(G_TYPE_OBJECT, "JingleTransport", &info, 0);
+ }
+ return type;
+}
+
+static void
+jingle_transport_class_init (JingleTransportClass *klass)
+{
+ GObjectClass *gobject_class = (GObjectClass*)klass;
+ parent_class = g_type_class_peek_parent(klass);
+
+ gobject_class->finalize = jingle_transport_finalize;
+ gobject_class->set_property = jingle_transport_set_property;
+ gobject_class->get_property = jingle_transport_get_property;
+ klass->to_xml = jingle_transport_to_xml_internal;
+ klass->parse = jingle_transport_parse_internal;
+
+ g_type_class_add_private(klass, sizeof(JingleTransportPrivate));
+}
+
+static void
+jingle_transport_init (JingleTransport *transport)
+{
+ transport->priv = JINGLE_TRANSPORT_GET_PRIVATE(transport);
+ transport->priv->dummy = NULL;
+}
+
+static void
+jingle_transport_finalize (GObject *transport)
+{
+ /* JingleTransportPrivate *priv = JINGLE_TRANSPORT_GET_PRIVATE(transport); */
+ purple_debug_info("jingle","jingle_transport_finalize\n");
+
+ parent_class->finalize(transport);
+}
+
+static void
+jingle_transport_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+{
+ JingleTransport *transport;
+ g_return_if_fail(JINGLE_IS_TRANSPORT(object));
+
+ transport = JINGLE_TRANSPORT(object);
+
+ switch (prop_id) {
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+jingle_transport_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+{
+ JingleTransport *transport;
+ g_return_if_fail(JINGLE_IS_TRANSPORT(object));
+
+ transport = JINGLE_TRANSPORT(object);
+
+ switch (prop_id) {
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+JingleTransport *
+jingle_transport_create(const gchar *type)
+{
+ return g_object_new(jingle_get_type(type), NULL);
+}
+
+const gchar *
+jingle_transport_get_transport_type(JingleTransport *transport)
+{
+ return JINGLE_TRANSPORT_GET_CLASS(transport)->transport_type;
+}
+
+JingleTransport *
+jingle_transport_parse_internal(xmlnode *transport)
+{
+ const gchar *type = xmlnode_get_namespace(transport);
+ return jingle_transport_create(type);
+}
+
+xmlnode *
+jingle_transport_to_xml_internal(JingleTransport *transport, xmlnode *content, JingleActionType action)
+{
+ xmlnode *node = xmlnode_new_child(content, "transport");
+ xmlnode_set_namespace(node, jingle_transport_get_transport_type(transport));
+ return node;
+}
+
+JingleTransport *
+jingle_transport_parse(xmlnode *transport)
+{
+ const gchar *type = xmlnode_get_namespace(transport);
+ return JINGLE_TRANSPORT_CLASS(g_type_class_ref(jingle_get_type(type)))->parse(transport);
+}
+
+xmlnode *
+jingle_transport_to_xml(JingleTransport *transport, xmlnode *content, JingleActionType action)
+{
+ g_return_val_if_fail(JINGLE_IS_TRANSPORT(transport), NULL);
+ return JINGLE_TRANSPORT_GET_CLASS(transport)->to_xml(transport, content, action);
+}
+
diff --git a/libpurple/protocols/jabber/jingle/transport.h b/libpurple/protocols/jabber/jingle/transport.h
new file mode 100644
index 0000000000..6b00d06a35
--- /dev/null
+++ b/libpurple/protocols/jabber/jingle/transport.h
@@ -0,0 +1,88 @@
+/**
+ * @file transport.h
+ *
+ * purple
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#ifndef PURPLE_JABBER_JINGLE_TRANSPORT_H
+#define PURPLE_JABBER_JINGLE_TRANSPORT_H
+
+#include <glib.h>
+#include <glib-object.h>
+
+#include "jingle.h"
+#include "xmlnode.h"
+
+G_BEGIN_DECLS
+
+#define JINGLE_TYPE_TRANSPORT (jingle_transport_get_type())
+#define JINGLE_TRANSPORT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), JINGLE_TYPE_TRANSPORT, JingleTransport))
+#define JINGLE_TRANSPORT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), JINGLE_TYPE_TRANSPORT, JingleTransportClass))
+#define JINGLE_IS_TRANSPORT(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), JINGLE_TYPE_TRANSPORT))
+#define JINGLE_IS_TRANSPORT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), JINGLE_TYPE_TRANSPORT))
+#define JINGLE_TRANSPORT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), JINGLE_TYPE_TRANSPORT, JingleTransportClass))
+
+/** @copydoc _JingleTransport */
+typedef struct _JingleTransport JingleTransport;
+/** @copydoc _JingleTransportClass */
+typedef struct _JingleTransportClass JingleTransportClass;
+/** @copydoc _JingleTransportPrivate */
+typedef struct _JingleTransportPrivate JingleTransportPrivate;
+
+/** The transport class */
+struct _JingleTransportClass
+{
+ GObjectClass parent_class; /**< The parent class. */
+
+ const gchar *transport_type;
+ xmlnode *(*to_xml) (JingleTransport *transport, xmlnode *content, JingleActionType action);
+ JingleTransport *(*parse) (xmlnode *transport);
+};
+
+/** The transport class's private data */
+struct _JingleTransport
+{
+ GObject parent; /**< The parent of this object. */
+ JingleTransportPrivate *priv; /**< The private data of this object. */
+};
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * Gets the transport class's GType
+ *
+ * @return The transport class's GType.
+ */
+GType jingle_transport_get_type(void);
+
+JingleTransport *jingle_transport_create(const gchar *type);
+const gchar *jingle_transport_get_transport_type(JingleTransport *transport);
+void jingle_transport_add_candidate();
+
+JingleTransport *jingle_transport_parse(xmlnode *transport);
+xmlnode *jingle_transport_to_xml(JingleTransport *transport, xmlnode *content, JingleActionType action);
+
+#ifdef __cplusplus
+}
+#endif
+
+G_END_DECLS
+
+#endif /* PURPLE_JABBER_JINGLE_TRANSPORT_H */
+
diff --git a/libpurple/protocols/jabber/jutil.c b/libpurple/protocols/jabber/jutil.c
index 5f77db9fcb..e9e475bfd8 100644
--- a/libpurple/protocols/jabber/jutil.c
+++ b/libpurple/protocols/jabber/jutil.c
@@ -105,6 +105,8 @@ jabber_id_new(const char *str)
{
char *at;
char *slash;
+ char *node = NULL;
+ char *domain;
JabberID *jid;
if(!str || !g_utf8_validate(str, -1, NULL))
@@ -116,22 +118,31 @@ jabber_id_new(const char *str)
slash = g_utf8_strchr(str, -1, '/');
if(at) {
- jid->node = g_utf8_normalize(str, at-str, G_NORMALIZE_NFKC);
+ node = g_utf8_normalize(str, at-str, G_NORMALIZE_NFKC);
if(slash) {
- jid->domain = g_utf8_normalize(at+1, slash-(at+1), G_NORMALIZE_NFKC);
+ domain = g_utf8_normalize(at+1, slash-(at+1), G_NORMALIZE_NFKC);
jid->resource = g_utf8_normalize(slash+1, -1, G_NORMALIZE_NFKC);
} else {
- jid->domain = g_utf8_normalize(at+1, -1, G_NORMALIZE_NFKC);
+ domain = g_utf8_normalize(at+1, -1, G_NORMALIZE_NFKC);
}
} else {
if(slash) {
- jid->domain = g_utf8_normalize(str, slash-str, G_NORMALIZE_NFKC);
+ domain = g_utf8_normalize(str, slash-str, G_NORMALIZE_NFKC);
jid->resource = g_utf8_normalize(slash+1, -1, G_NORMALIZE_NFKC);
} else {
- jid->domain = g_utf8_normalize(str, -1, G_NORMALIZE_NFKC);
+ domain = g_utf8_normalize(str, -1, G_NORMALIZE_NFKC);
}
}
+ if (node) {
+ jid->node = g_utf8_strdown(node, -1);
+ g_free(node);
+ }
+
+ if (domain) {
+ jid->domain = g_utf8_strdown(domain, -1);
+ g_free(domain);
+ }
if(!jabber_nodeprep_validate(jid->node) ||
!jabber_nameprep_validate(jid->domain) ||
@@ -193,32 +204,70 @@ const char *jabber_normalize(const PurpleAccount *account, const char *in)
JabberStream *js = gc ? gc->proto_data : NULL;
static char buf[3072]; /* maximum legal length of a jabber jid */
JabberID *jid;
- char *node, *domain;
jid = jabber_id_new(in);
if(!jid)
return NULL;
- node = jid->node ? g_utf8_strdown(jid->node, -1) : NULL;
- domain = g_utf8_strdown(jid->domain, -1);
-
-
- if(js && node && jid->resource &&
- jabber_chat_find(js, node, domain))
- g_snprintf(buf, sizeof(buf), "%s@%s/%s", node, domain,
+ if(js && jid->node && jid->resource &&
+ jabber_chat_find(js, jid->node, jid->domain))
+ g_snprintf(buf, sizeof(buf), "%s@%s/%s", jid->node, jid->domain,
jid->resource);
else
- g_snprintf(buf, sizeof(buf), "%s%s%s", node ? node : "",
- node ? "@" : "", domain);
+ g_snprintf(buf, sizeof(buf), "%s%s%s", jid->node ? jid->node : "",
+ jid->node ? "@" : "", jid->domain);
jabber_id_free(jid);
- g_free(node);
- g_free(domain);
return buf;
}
+gboolean
+jabber_is_own_server(JabberStream *js, const char *str)
+{
+ JabberID *jid;
+ gboolean equal;
+
+ if (str == NULL)
+ return FALSE;
+
+ g_return_val_if_fail(*str != '\0', FALSE);
+
+ jid = jabber_id_new(str);
+ if (!jid)
+ return FALSE;
+
+ equal = (jid->node == NULL &&
+ g_str_equal(jid->domain, js->user->domain) &&
+ jid->resource == NULL);
+ jabber_id_free(jid);
+ return equal;
+}
+
+gboolean
+jabber_is_own_account(JabberStream *js, const char *str)
+{
+ JabberID *jid;
+ gboolean equal;
+
+ if (str == NULL)
+ return TRUE;
+
+ g_return_val_if_fail(*str != '\0', FALSE);
+
+ jid = jabber_id_new(str);
+ if (!jid)
+ return FALSE;
+
+ equal = (purple_strequal(jid->node, js->user->node) &&
+ g_str_equal(jid->domain, js->user->domain) &&
+ (jid->resource == NULL ||
+ g_str_equal(jid->resource, js->user->resource)));
+ jabber_id_free(jid);
+ return equal;
+}
+
PurpleConversation *
jabber_find_unnormalized_conv(const char *name, PurpleAccount *account)
{
diff --git a/libpurple/protocols/jabber/jutil.h b/libpurple/protocols/jabber/jutil.h
index f7ddf1ce11..741365273e 100644
--- a/libpurple/protocols/jabber/jutil.h
+++ b/libpurple/protocols/jabber/jutil.h
@@ -19,8 +19,8 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
*/
-#ifndef _PURPLE_JABBER_JUTIL_H_
-#define _PURPLE_JABBER_JUTIL_H_
+#ifndef PURPLE_JABBER_JUTIL_H_
+#define PURPLE_JABBER_JUTIL_H_
typedef struct _JabberID {
char *node;
@@ -36,6 +36,12 @@ char *jabber_get_bare_jid(const char *jid);
const char *jabber_normalize(const PurpleAccount *account, const char *in);
+/* Returns true if JID is the bare JID of our server. */
+gboolean jabber_is_own_server(JabberStream *js, const char *jid);
+
+/* Returns true if JID is the bare JID of our account. */
+gboolean jabber_is_own_account(JabberStream *js, const char *jid);
+
gboolean jabber_nodeprep_validate(const char *);
gboolean jabber_nameprep_validate(const char *);
gboolean jabber_resourceprep_validate(const char *);
@@ -43,4 +49,4 @@ gboolean jabber_resourceprep_validate(const char *);
PurpleConversation *jabber_find_unnormalized_conv(const char *name, PurpleAccount *account);
char *jabber_calculate_data_sha1sum(gconstpointer data, size_t len);
-#endif /* _PURPLE_JABBER_JUTIL_H_ */
+#endif /* PURPLE_JABBER_JUTIL_H_ */
diff --git a/libpurple/protocols/jabber/libxmpp.c b/libpurple/protocols/jabber/libxmpp.c
index cc8c408320..b535042eb9 100644
--- a/libpurple/protocols/jabber/libxmpp.c
+++ b/libpurple/protocols/jabber/libxmpp.c
@@ -34,6 +34,7 @@
#include "iq.h"
#include "jabber.h"
#include "chat.h"
+#include "disco.h"
#include "message.h"
#include "roster.h"
#include "si.h"
@@ -44,6 +45,7 @@
#include "usertune.h"
#include "caps.h"
#include "data.h"
+#include "ibb.h"
static PurplePluginProtocolInfo prpl_info =
{
@@ -69,7 +71,7 @@ static PurplePluginProtocolInfo prpl_info =
jabber_set_info, /* set_info */
jabber_send_typing, /* send_typing */
jabber_buddy_get_info, /* get_info */
- jabber_presence_send, /* set_status */
+ jabber_set_status, /* set_status */
jabber_idle_set, /* set_idle */
NULL, /* change_passwd */
jabber_roster_add_buddy, /* add_buddy */
@@ -118,7 +120,9 @@ static PurplePluginProtocolInfo prpl_info =
jabber_attention_types, /* attention_types */
sizeof(PurplePluginProtocolInfo), /* struct_size */
- NULL
+ NULL, /* get_account_text_table */
+ jabber_initiate_media, /* initiate_media */
+ jabber_get_media_caps, /* get_media_caps */
};
static gboolean load_plugin(PurplePlugin *plugin)
@@ -133,24 +137,95 @@ static gboolean load_plugin(PurplePlugin *plugin)
purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION),
purple_value_new_outgoing(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE));
+ /*
+ * Do not remove this or the plugin will fail. Completely. You have been
+ * warned!
+ */
+ purple_signal_connect_priority(plugin, "jabber-sending-xmlnode",
+ plugin, PURPLE_CALLBACK(jabber_send_signal_cb),
+ NULL, PURPLE_SIGNAL_PRIORITY_HIGHEST);
+
purple_signal_register(plugin, "jabber-sending-text",
purple_marshal_VOID__POINTER_POINTER, NULL, 2,
purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION),
purple_value_new_outgoing(PURPLE_TYPE_STRING));
-
+
+ purple_signal_register(plugin, "jabber-receiving-message",
+ purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER_POINTER,
+ purple_value_new(PURPLE_TYPE_BOOLEAN), 6,
+ purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION),
+ purple_value_new(PURPLE_TYPE_STRING), /* type */
+ purple_value_new(PURPLE_TYPE_STRING), /* id */
+ purple_value_new(PURPLE_TYPE_STRING), /* from */
+ purple_value_new(PURPLE_TYPE_STRING), /* to */
+ purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE));
+
+ purple_signal_register(plugin, "jabber-receiving-iq",
+ purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER,
+ purple_value_new(PURPLE_TYPE_BOOLEAN), 5,
+ purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION),
+ purple_value_new(PURPLE_TYPE_STRING), /* type */
+ purple_value_new(PURPLE_TYPE_STRING), /* id */
+ purple_value_new(PURPLE_TYPE_STRING), /* from */
+ purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE));
+
+ purple_signal_register(plugin, "jabber-watched-iq",
+ purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER,
+ purple_value_new(PURPLE_TYPE_BOOLEAN), 5,
+ purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION),
+ purple_value_new(PURPLE_TYPE_STRING), /* type */
+ purple_value_new(PURPLE_TYPE_STRING), /* id */
+ purple_value_new(PURPLE_TYPE_STRING), /* from */
+ purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE)); /* child */
+
+ /* Modifying these? Look at jabber_init_plugin for the ipc versions */
+ purple_signal_register(plugin, "jabber-register-namespace-watcher",
+ purple_marshal_VOID__POINTER_POINTER,
+ NULL, 2,
+ purple_value_new(PURPLE_TYPE_STRING), /* node */
+ purple_value_new(PURPLE_TYPE_STRING)); /* namespace */
+
+ purple_signal_register(plugin, "jabber-unregister-namespace-watcher",
+ purple_marshal_VOID__POINTER_POINTER,
+ NULL, 2,
+ purple_value_new(PURPLE_TYPE_STRING), /* node */
+ purple_value_new(PURPLE_TYPE_STRING)); /* namespace */
+
+ purple_signal_connect(plugin, "jabber-register-namespace-watcher",
+ plugin, PURPLE_CALLBACK(jabber_iq_signal_register), NULL);
+ purple_signal_connect(plugin, "jabber-unregister-namespace-watcher",
+ plugin, PURPLE_CALLBACK(jabber_iq_signal_unregister), NULL);
+
+ purple_signal_register(plugin, "jabber-receiving-presence",
+ purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER,
+ purple_value_new(PURPLE_TYPE_BOOLEAN), 4,
+ purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION),
+ purple_value_new(PURPLE_TYPE_STRING), /* type */
+ purple_value_new(PURPLE_TYPE_STRING), /* from */
+ purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE));
+
return TRUE;
}
static gboolean unload_plugin(PurplePlugin *plugin)
{
- purple_signal_unregister(plugin, "jabber-receiving-xmlnode");
+ purple_signals_unregister_by_instance(plugin);
- purple_signal_unregister(plugin, "jabber-sending-xmlnode");
-
- purple_signal_unregister(plugin, "jabber-sending-text");
-
+ /* reverse order of init_plugin */
+ jabber_bosh_uninit();
jabber_data_uninit();
-
+ jabber_si_uninit();
+ jabber_ibb_uninit();
+ /* PEP things should be uninit via jabber_pep_uninit, not here */
+ jabber_pep_uninit();
+ jabber_caps_uninit();
+ jabber_iq_uninit();
+
+ jabber_unregister_commands();
+
+ /* Stay on target...stay on target... Almost there... */
+ jabber_uninit_plugin();
+
return TRUE;
}
@@ -203,30 +278,30 @@ init_plugin(PurplePlugin *plugin)
#endif
PurpleAccountUserSplit *split;
PurpleAccountOption *option;
-
+
/* Translators: 'domain' is used here in the context of Internet domains, e.g. pidgin.im */
split = purple_account_user_split_new(_("Domain"), NULL, '@');
purple_account_user_split_set_reverse(split, FALSE);
prpl_info.user_splits = g_list_append(prpl_info.user_splits, split);
-
+
split = purple_account_user_split_new(_("Resource"), NULL, '/');
purple_account_user_split_set_reverse(split, FALSE);
prpl_info.user_splits = g_list_append(prpl_info.user_splits, split);
-
+
option = purple_account_option_bool_new(_("Require SSL/TLS"), "require_tls", FALSE);
prpl_info.protocol_options = g_list_append(prpl_info.protocol_options,
option);
-
+
option = purple_account_option_bool_new(_("Force old (port 5223) SSL"), "old_ssl", FALSE);
prpl_info.protocol_options = g_list_append(prpl_info.protocol_options,
option);
-
+
option = purple_account_option_bool_new(
_("Allow plaintext auth over unencrypted streams"),
"auth_plain_in_clear", FALSE);
prpl_info.protocol_options = g_list_append(prpl_info.protocol_options,
option);
-
+
option = purple_account_option_int_new(_("Connect port"), "port", 5222);
prpl_info.protocol_options = g_list_append(prpl_info.protocol_options,
option);
@@ -238,8 +313,9 @@ init_plugin(PurplePlugin *plugin)
option = purple_account_option_string_new(_("File transfer proxies"),
"ft_proxies",
- /* TODO: Is this an acceptable default? */
- "proxy.jabber.org");
+ /* TODO: Is this an acceptable default?
+ * Also, keep this in sync as they add more servers */
+ "proxy.eu.jabber.org");
prpl_info.protocol_options = g_list_append(prpl_info.protocol_options,
option);
@@ -272,23 +348,19 @@ init_plugin(PurplePlugin *plugin)
#endif
#endif
jabber_register_commands();
-
+
+ /* reverse order of unload_plugin */
jabber_iq_init();
- jabber_pep_init();
-
- jabber_tune_init();
jabber_caps_init();
-
+ /* PEP things should be init via jabber_pep_init, not here */
+ jabber_pep_init();
jabber_data_init();
-
- jabber_add_feature("avatarmeta", AVATARNAMESPACEMETA, jabber_pep_namespace_only_when_pep_enabled_cb);
- jabber_add_feature("avatardata", AVATARNAMESPACEDATA, jabber_pep_namespace_only_when_pep_enabled_cb);
- jabber_add_feature("buzz", "http://www.xmpp.org/extensions/xep-0224.html#ns",
- jabber_buzz_isenabled);
- jabber_add_feature("bob", XEP_0231_NAMESPACE,
- jabber_custom_smileys_isenabled);
-
- jabber_pep_register_handler("avatar", AVATARNAMESPACEMETA, jabber_buddy_avatar_update_metadata);
+ jabber_bosh_init();
+
+ #warning implement adding and retrieving own features via IPC API
+
+ jabber_ibb_init();
+ jabber_si_init();
}
diff --git a/libpurple/protocols/jabber/message.c b/libpurple/protocols/jabber/message.c
index cce394e9ac..6bdd84754a 100644
--- a/libpurple/protocols/jabber/message.c
+++ b/libpurple/protocols/jabber/message.c
@@ -24,6 +24,7 @@
#include "notify.h"
#include "server.h"
#include "util.h"
+#include "adhoccommands.h"
#include "buddy.h"
#include "chat.h"
#include "data.h"
@@ -118,7 +119,7 @@ static void handle_chat(JabberMessage *jm)
}
}
serv_got_typing_stopped(jm->js->gc, from);
-
+
} else {
serv_got_typing_stopped(jm->js->gc, from);
}
@@ -138,7 +139,7 @@ static void handle_chat(JabberMessage *jm)
g_free(jbr->thread_id);
jbr->thread_id = g_strdup(jbr->thread_id);
}
-
+
if (jm->js->googletalk && jm->xhtml == NULL) {
char *tmp = jm->body;
jm->body = jabber_google_format_to_html(jm->body);
@@ -289,8 +290,6 @@ static void handle_error(JabberMessage *jm)
static void handle_buzz(JabberMessage *jm) {
PurpleBuddy *buddy;
PurpleAccount *account;
- PurpleConversation *c;
- char *username;
/* Delayed buzz MUST NOT be accepted */
if(jm->delayed)
@@ -305,15 +304,8 @@ static void handle_buzz(JabberMessage *jm) {
if ((buddy = purple_find_buddy(account, jm->from)) == NULL)
return; /* Do not accept buzzes from unknown people */
- c = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, jm->from, account);
- if (c == NULL)
- c = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, jm->from);
-
- username = g_markup_escape_text(purple_buddy_get_alias(buddy), -1);
/* xmpp only has 1 attention type, so index is 0 */
- purple_prpl_got_attention(jm->js->gc, username, 0);
-
- g_free(username);
+ purple_prpl_got_attention(jm->js->gc, jm->from, 0);
}
/* used internally by the functions below */
@@ -328,14 +320,14 @@ jabber_message_get_refs_from_xmlnode_internal(const xmlnode *message,
GHashTable *table)
{
xmlnode *child;
-
+
for (child = xmlnode_get_child(message, "img") ; child ;
child = xmlnode_get_next_twin(child)) {
const gchar *src = xmlnode_get_attrib(child, "src");
-
+
if (g_str_has_prefix(src, "cid:")) {
const gchar *cid = src + 4;
-
+
/* if we haven't "fetched" this yet... */
if (!g_hash_table_lookup(table, cid)) {
/* take a copy of the cid and let the SmileyRef own it... */
@@ -343,14 +335,14 @@ jabber_message_get_refs_from_xmlnode_internal(const xmlnode *message,
JabberSmileyRef *ref = g_new0(JabberSmileyRef, 1);
const gchar *alt = xmlnode_get_attrib(child, "alt");
ref->cid = temp_cid;
- /* if there is no "alt" string, use the cid...
+ /* if there is no "alt" string, use the cid...
include the entire src, eg. "cid:.." to avoid linkification */
if (alt && alt[0] != '\0') {
/* workaround for when "alt" is set to the value of the
CID (which Jabbim seems to do), to avoid it showing up
as an mailto: link */
if (purple_email_is_valid(alt)) {
- ref->alt = g_strdup_printf("smiley:%s", alt);
+ ref->alt = g_strdup_printf("smiley:%s", alt);
} else {
ref->alt = g_strdup(alt);
}
@@ -361,7 +353,7 @@ jabber_message_get_refs_from_xmlnode_internal(const xmlnode *message,
}
}
}
-
+
for (child = message->child ; child ; child = child->next) {
jabber_message_get_refs_from_xmlnode_internal(child, table);
}
@@ -372,9 +364,9 @@ jabber_message_get_refs_steal(gpointer key, gpointer value, gpointer user_data)
{
GList **refs = (GList **) user_data;
JabberSmileyRef *ref = (JabberSmileyRef *) value;
-
+
*refs = g_list_append(*refs, ref);
-
+
return TRUE;
}
@@ -383,9 +375,9 @@ jabber_message_get_refs_from_xmlnode(const xmlnode *message)
{
GList *refs = NULL;
GHashTable *unique_refs = g_hash_table_new(g_str_hash, g_str_equal);
-
+
jabber_message_get_refs_from_xmlnode_internal(message, unique_refs);
- (void) g_hash_table_foreach_steal(unique_refs,
+ (void) g_hash_table_foreach_steal(unique_refs,
jabber_message_get_refs_steal, (gpointer) &refs);
g_hash_table_destroy(unique_refs);
return refs;
@@ -486,7 +478,9 @@ typedef struct {
} JabberDataRef;
static void
-jabber_message_get_data_cb(JabberStream *js, xmlnode *packet, gpointer data)
+jabber_message_get_data_cb(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data)
{
JabberDataRef *ref = (JabberDataRef *) data;
PurpleConversation *conv = ref->conv;
@@ -518,7 +512,7 @@ jabber_message_get_data_cb(JabberStream *js, xmlnode *packet, gpointer data)
static void
jabber_message_send_data_request(JabberStream *js, PurpleConversation *conv,
- const gchar *cid, const gchar *who,
+ const gchar *cid, const gchar *who,
const gchar *alt)
{
JabberIq *request = jabber_iq_new(js, JABBER_IQ_GET);
@@ -538,16 +532,25 @@ jabber_message_send_data_request(JabberStream *js, PurpleConversation *conv,
void jabber_message_parse(JabberStream *js, xmlnode *packet)
{
JabberMessage *jm;
- const char *type;
+ const char *id, *from, *to, *type;
xmlnode *child;
+ gboolean signal_return;
+
+ from = xmlnode_get_attrib(packet, "from");
+ id = xmlnode_get_attrib(packet, "id");
+ to = xmlnode_get_attrib(packet, "to");
+ type = xmlnode_get_attrib(packet, "type");
+
+ signal_return = GPOINTER_TO_INT(purple_signal_emit_return_1(jabber_plugin,
+ "jabber-receiving-message", js->gc, type, id, from, to, packet));
+ if (signal_return)
+ return;
jm = g_new0(JabberMessage, 1);
jm->js = js;
jm->sent = time(NULL);
jm->delayed = FALSE;
- type = xmlnode_get_attrib(packet, "type");
-
if(type) {
if(!strcmp(type, "normal"))
jm->type = JABBER_MESSAGE_NORMAL;
@@ -565,9 +568,9 @@ void jabber_message_parse(JabberStream *js, xmlnode *packet)
jm->type = JABBER_MESSAGE_NORMAL;
}
- jm->from = g_strdup(xmlnode_get_attrib(packet, "from"));
- jm->to = g_strdup(xmlnode_get_attrib(packet, "to"));
- jm->id = g_strdup(xmlnode_get_attrib(packet, "id"));
+ jm->from = g_strdup(from);
+ jm->to = g_strdup(to);
+ jm->id = g_strdup(id);
for(child = packet->child; child; child = child->next) {
const char *xmlns = xmlnode_get_namespace(child);
@@ -580,7 +583,7 @@ void jabber_message_parse(JabberStream *js, xmlnode *packet)
char *text = xmlnode_get_data(child);
if (!text) {
xmlnode *enclosed_text_node;
-
+
if ((enclosed_text_node = xmlnode_get_child(child, "text")))
text = xmlnode_get_data(enclosed_text_node);
}
@@ -604,8 +607,11 @@ void jabber_message_parse(JabberStream *js, xmlnode *packet)
/* The following tests expect xmlns != NULL */
continue;
} else if(!strcmp(child->name, "subject") && !strcmp(xmlns,"jabber:client")) {
- if(!jm->subject)
+ if(!jm->subject) {
jm->subject = xmlnode_get_data(child);
+ if(!jm->subject)
+ jm->subject = g_strdup("");
+ }
} else if(!strcmp(child->name, "thread") && !strcmp(xmlns,"jabber:client")) {
if(!jm->thread_id)
jm->thread_id = xmlnode_get_data(child);
@@ -632,8 +638,8 @@ void jabber_message_parse(JabberStream *js, xmlnode *packet)
smiley_refs = jabber_message_get_refs_from_xmlnode(child);
purple_debug_info("jabber", "found %d smileys\n",
g_list_length(smiley_refs));
-
- if (smiley_refs) {
+
+ if (smiley_refs) {
if (jm->type == JABBER_MESSAGE_GROUPCHAT) {
JabberID *jid = jabber_id_new(jm->from);
JabberChat *chat = NULL;
@@ -651,7 +657,7 @@ void jabber_message_parse(JabberStream *js, xmlnode *packet)
who, account);
if (!conv) {
/* we need to create the conversation here */
- conv =
+ conv =
purple_conversation_new(PURPLE_CONV_TYPE_IM,
account, who);
}
@@ -680,7 +686,7 @@ void jabber_message_parse(JabberStream *js, xmlnode *packet)
const gchar *cid = ref->cid;
const gchar *alt = ref->alt;
- purple_debug_info("jabber",
+ purple_debug_info("jabber",
"about to add custom smiley %s to the conv\n", alt);
if (purple_conv_custom_smiley_add(conv, alt, "cid", cid,
TRUE)) {
@@ -688,8 +694,8 @@ void jabber_message_parse(JabberStream *js, xmlnode *packet)
jabber_data_find_remote_by_cid(cid);
/* if data is already known, we write it immediatly */
if (data) {
- purple_debug_info("jabber",
- "data is already known\n");
+ purple_debug_info("jabber",
+ "data is already known\n");
purple_conv_custom_smiley_write(conv, alt,
jabber_data_get_data(data),
jabber_data_get_size(data));
@@ -735,7 +741,7 @@ void jabber_message_parse(JabberStream *js, xmlnode *packet)
jm->type = JABBER_MESSAGE_EVENT;
for(items = xmlnode_get_child(child,"items"); items; items = items->next)
jm->eventitems = g_list_append(jm->eventitems, items);
- } else if(!strcmp(child->name, "attention") && !strcmp(xmlns,"http://www.xmpp.org/extensions/xep-0224.html#ns")) {
+ } else if(!strcmp(child->name, "attention") && !strcmp(xmlns, XEP_0224_NAMESPACE)) {
jm->hasBuzz = TRUE;
} else if(!strcmp(child->name, "delay") && !strcmp(xmlns,"urn:xmpp:delay")) {
const char *timestamp = xmlnode_get_attrib(child, "stamp");
@@ -784,6 +790,12 @@ void jabber_message_parse(JabberStream *js, xmlnode *packet)
} else {
jm->etc = g_list_append(jm->etc, child);
}
+ } else if (g_str_equal(child->name, "query")) {
+ const char *node = xmlnode_get_attrib(child, "node");
+ if (purple_strequal(xmlns, "http://jabber.org/protocol/disco#items")
+ && purple_strequal(node, "http://jabber.org/protocol/commands")) {
+ jabber_adhoc_got_list(js, jm->from, child);
+ }
}
}
@@ -909,20 +921,20 @@ jabber_message_get_smileyfied_xhtml(const gchar *xhtml, const GList *smileys)
static gboolean
jabber_conv_support_custom_smileys(const PurpleConnection *gc,
- const PurpleConversation *conv,
+ PurpleConversation *conv,
const gchar *who)
{
JabberStream *js = (JabberStream *) gc->proto_data;
JabberBuddy *jb;
-
+ JabberChat *chat;
+
if (!js) {
- purple_debug_error("jabber",
+ purple_debug_error("jabber",
"jabber_conv_support_custom_smileys: could not find stream\n");
return FALSE;
}
switch (purple_conversation_get_type(conv)) {
- /* for the time being, we will not support custom smileys in MUCs */
case PURPLE_CONV_TYPE_IM:
jb = jabber_buddy_find(js, who, FALSE);
if (jb) {
@@ -931,12 +943,76 @@ jabber_conv_support_custom_smileys(const PurpleConnection *gc,
return FALSE;
}
break;
+ case PURPLE_CONV_TYPE_CHAT:
+ chat = jabber_chat_find_by_conv(conv);
+ if (chat) {
+ /* do not attempt to send custom smileys in a MUC with more than
+ 10 people, to avoid getting too many BoB requests */
+ return jabber_chat_get_num_participants(chat) <= 10 &&
+ jabber_chat_all_participants_have_capability(chat,
+ XEP_0231_NAMESPACE);
+ } else {
+ return FALSE;
+ }
+ break;
default:
return FALSE;
break;
}
}
+static char *
+jabber_message_smileyfy_xhtml(JabberMessage *jm, const char *xhtml)
+{
+ PurpleAccount *account = purple_connection_get_account(jm->js->gc);
+ PurpleConversation *conv =
+ purple_find_conversation_with_account(PURPLE_CONV_TYPE_ANY, jm->to,
+ account);
+
+ if (jabber_conv_support_custom_smileys(jm->js->gc, conv, jm->to)) {
+ GList *found_smileys = jabber_message_xhtml_find_smileys(xhtml);
+
+ if (found_smileys) {
+ gchar *smileyfied_xhtml = NULL;
+ const GList *iterator;
+
+ for (iterator = found_smileys; iterator ;
+ iterator = g_list_next(iterator)) {
+ const PurpleSmiley *smiley =
+ (PurpleSmiley *) iterator->data;
+ const gchar *shortcut = purple_smiley_get_shortcut(smiley);
+ const JabberData *data =
+ jabber_data_find_local_by_alt(shortcut);
+
+ /* the object has not been sent before */
+ if (!data) {
+ PurpleStoredImage *image =
+ purple_smiley_get_stored_image(smiley);
+ const gchar *ext = purple_imgstore_get_extension(image);
+ JabberStream *js = jm->js;
+
+ JabberData *new_data =
+ jabber_data_create_from_data(purple_imgstore_get_data(image),
+ purple_imgstore_get_size(image),
+ jabber_message_get_mimetype_from_ext(ext), js);
+ purple_debug_info("jabber",
+ "cache local smiley alt = %s, cid = %s\n",
+ shortcut, jabber_data_get_cid(new_data));
+ jabber_data_associate_local(new_data, shortcut);
+ }
+ }
+
+ smileyfied_xhtml =
+ jabber_message_get_smileyfied_xhtml(xhtml, found_smileys);
+ g_list_free(found_smileys);
+
+ return smileyfied_xhtml;
+ }
+ }
+
+ return NULL;
+}
+
void jabber_message_send(JabberMessage *jm)
{
xmlnode *message, *child;
@@ -969,7 +1045,7 @@ void jabber_message_send(JabberMessage *jm)
if(type)
xmlnode_set_attrib(message, "type", type);
-
+
if (jm->id)
xmlnode_set_attrib(message, "id", jm->id);
@@ -1022,56 +1098,7 @@ void jabber_message_send(JabberMessage *jm)
}
if(jm->xhtml) {
- PurpleAccount *account = purple_connection_get_account(jm->js->gc);
- PurpleConversation *conv =
- purple_find_conversation_with_account(PURPLE_CONV_TYPE_ANY, jm->to,
- account);
-
- if (jabber_conv_support_custom_smileys(jm->js->gc, conv, jm->to)) {
- GList *found_smileys = jabber_message_xhtml_find_smileys(jm->xhtml);
-
- if (found_smileys) {
- gchar *smileyfied_xhtml = NULL;
- const GList *iterator;
-
- for (iterator = found_smileys; iterator ;
- iterator = g_list_next(iterator)) {
- const PurpleSmiley *smiley =
- (PurpleSmiley *) iterator->data;
- const gchar *shortcut = purple_smiley_get_shortcut(smiley);
- const JabberData *data =
- jabber_data_find_local_by_alt(shortcut);
-
- /* the object has not been sent before */
- if (!data) {
- PurpleStoredImage *image =
- purple_smiley_get_stored_image(smiley);
- const gchar *ext = purple_imgstore_get_extension(image);
- JabberStream *js = jm->js;
-
- JabberData *new_data =
- jabber_data_create_from_data(purple_imgstore_get_data(image),
- purple_imgstore_get_size(image),
- jabber_message_get_mimetype_from_ext(ext), js);
- purple_debug_info("jabber",
- "cache local smiley alt = %s, cid = %s\n",
- shortcut, jabber_data_get_cid(new_data));
- jabber_data_associate_local(new_data, shortcut);
- }
- }
-
- smileyfied_xhtml =
- jabber_message_get_smileyfied_xhtml(jm->xhtml, found_smileys);
- child = xmlnode_from_str(smileyfied_xhtml, -1);
- g_free(smileyfied_xhtml);
- g_list_free(found_smileys);
- } else {
- child = xmlnode_from_str(jm->xhtml, -1);
- }
- } else {
- child = xmlnode_from_str(jm->xhtml, -1);
- }
- if(child) {
+ if ((child = xmlnode_from_str(jm->xhtml, -1))) {
xmlnode_insert_child(message, child);
} else {
purple_debug(PURPLE_DEBUG_ERROR, "jabber",
@@ -1085,14 +1112,51 @@ void jabber_message_send(JabberMessage *jm)
xmlnode_free(message);
}
+/*
+ * Compare the XHTML and plain strings passed in for "equality". Any HTML markup
+ * other than <br/> (matches a newline) in the XHTML will cause this to return
+ * FALSE.
+ */
+static gboolean
+jabber_xhtml_plain_equal(const char *xhtml_escaped,
+ const char *plain)
+{
+ int i = 0;
+ int j = 0;
+ gboolean ret;
+ char *xhtml = purple_unescape_html(xhtml_escaped);
+
+ while (xhtml[i] && plain[j]) {
+ if (xhtml[i] == plain[j]) {
+ i += 1;
+ j += 1;
+ continue;
+ }
+
+ if (plain[j] == '\n' && !strncmp(xhtml+i, "<br/>", 5)) {
+ i += 5;
+ j += 1;
+ continue;
+ }
+
+ g_free(xhtml);
+ return FALSE;
+ }
+
+ /* Are we at the end of both strings? */
+ ret = (xhtml[i] == plain[j]) && (xhtml[i] == '\0');
+ g_free(xhtml);
+ return ret;
+}
+
int jabber_message_send_im(PurpleConnection *gc, const char *who, const char *msg,
PurpleMessageFlags flags)
{
JabberMessage *jm;
JabberBuddy *jb;
JabberBuddyResource *jbr;
- char *buf;
char *xhtml;
+ char *tmp;
char *resource;
if(!who || !msg)
@@ -1111,7 +1175,6 @@ int jabber_message_send_im(PurpleConnection *gc, const char *who, const char *ms
jm->chat_state = JM_STATE_ACTIVE;
jm->to = g_strdup(who);
jm->id = jabber_get_next_id(jm->js);
- jm->chat_state = JM_STATE_ACTIVE;
if(jbr) {
if(jbr->thread_id)
@@ -1127,15 +1190,20 @@ int jabber_message_send_im(PurpleConnection *gc, const char *who, const char *ms
jm->typing_style |= JM_TS_JEP_0022;
}
- buf = g_strdup_printf("<html xmlns='http://jabber.org/protocol/xhtml-im'><body xmlns='http://www.w3.org/1999/xhtml'>%s</body></html>", msg);
-
- purple_markup_html_to_xhtml(buf, &xhtml, &jm->body);
- g_free(buf);
-
- if(!jbr || jbr->capabilities & JABBER_CAP_XHTML)
- jm->xhtml = xhtml;
- else
+ tmp = purple_utf8_strip_unprintables(msg);
+ purple_markup_html_to_xhtml(tmp, &xhtml, &jm->body);
+ g_free(tmp);
+ tmp = jabber_message_smileyfy_xhtml(jm, xhtml);
+ if (tmp) {
g_free(xhtml);
+ xhtml = tmp;
+ }
+
+ if ((!jbr || jbr->capabilities & JABBER_CAP_XHTML) &&
+ !jabber_xhtml_plain_equal(xhtml, jm->body))
+ jm->xhtml = g_strdup_printf("<html xmlns='http://jabber.org/protocol/xhtml-im'><body xmlns='http://www.w3.org/1999/xhtml'>%s</body></html>", xhtml);
+
+ g_free(xhtml);
jabber_message_send(jm);
jabber_message_free(jm);
@@ -1147,7 +1215,8 @@ int jabber_message_send_chat(PurpleConnection *gc, int id, const char *msg, Purp
JabberChat *chat;
JabberMessage *jm;
JabberStream *js;
- char *buf;
+ char *xhtml;
+ char *tmp;
if(!msg || !gc)
return 0;
@@ -1164,15 +1233,20 @@ int jabber_message_send_chat(PurpleConnection *gc, int id, const char *msg, Purp
jm->to = g_strdup_printf("%s@%s", chat->room, chat->server);
jm->id = jabber_get_next_id(jm->js);
- buf = g_strdup_printf("<html xmlns='http://jabber.org/protocol/xhtml-im'><body xmlns='http://www.w3.org/1999/xhtml'>%s</body></html>", msg);
- purple_markup_html_to_xhtml(buf, &jm->xhtml, &jm->body);
- g_free(buf);
-
- if(!chat->xhtml) {
- g_free(jm->xhtml);
- jm->xhtml = NULL;
+ tmp = purple_utf8_strip_unprintables(msg);
+ purple_markup_html_to_xhtml(msg, &xhtml, &jm->body);
+ g_free(tmp);
+ tmp = jabber_message_smileyfy_xhtml(jm, xhtml);
+ if (tmp) {
+ g_free(xhtml);
+ xhtml = tmp;
}
+ if (chat->xhtml && !jabber_xhtml_plain_equal(xhtml, jm->body))
+ jm->xhtml = g_strdup_printf("<html xmlns='http://jabber.org/protocol/xhtml-im'><body xmlns='http://www.w3.org/1999/xhtml'>%s</body></html>", xhtml);
+
+ g_free(xhtml);
+
jabber_message_send(jm);
jabber_message_free(jm);
@@ -1223,29 +1297,11 @@ unsigned int jabber_send_typing(PurpleConnection *gc, const char *who, PurpleTyp
return 0;
}
-void jabber_message_conv_closed(JabberStream *js, const char *who)
-{
- JabberMessage *jm;
- if (!purple_prefs_get_bool("/purple/conversations/im/send_typing"))
- return;
-
- jm = g_new0(JabberMessage, 1);
- jm->js = js;
- jm->type = JABBER_MESSAGE_CHAT;
- jm->to = g_strdup(who);
- jm->id = jabber_get_next_id(jm->js);
- jm->typing_style = JM_TS_JEP_0085;
- jm->chat_state = JM_STATE_GONE;
- jabber_message_send(jm);
- jabber_message_free(jm);
-}
-
-gboolean jabber_buzz_isenabled(JabberStream *js, const gchar *shortname, const gchar *namespace) {
+gboolean jabber_buzz_isenabled(JabberStream *js, const gchar *namespace) {
return js->allowBuzz;
}
-gboolean jabber_custom_smileys_isenabled(JabberStream *js, const gchar *shortname,
- const gchar *namespace)
+gboolean jabber_custom_smileys_isenabled(JabberStream *js, const gchar *namespace)
{
const PurpleConnection *gc = js->gc;
PurpleAccount *account = purple_connection_get_account(gc);
diff --git a/libpurple/protocols/jabber/message.h b/libpurple/protocols/jabber/message.h
index 550dd1fe5a..d073e0acb6 100644
--- a/libpurple/protocols/jabber/message.h
+++ b/libpurple/protocols/jabber/message.h
@@ -19,13 +19,15 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
*/
-#ifndef _PURPLE_JABBER_MESSAGE_H_
-#define _PURPLE_JABBER_MESSAGE_H_
+#ifndef PURPLE_JABBER_MESSAGE_H_
+#define PURPLE_JABBER_MESSAGE_H_
#include "buddy.h"
#include "jabber.h"
#include "xmlnode.h"
+#define XEP_0224_NAMESPACE "urn:xmpp:attention:0"
+
typedef struct _JabberMessage {
JabberStream *js;
enum {
@@ -76,11 +78,9 @@ int jabber_message_send_im(PurpleConnection *gc, const char *who, const char *ms
int jabber_message_send_chat(PurpleConnection *gc, int id, const char *message, PurpleMessageFlags flags);
unsigned int jabber_send_typing(PurpleConnection *gc, const char *who, PurpleTypingState state);
-void jabber_message_conv_closed(JabberStream *js, const char *who);
-gboolean jabber_buzz_isenabled(JabberStream *js, const gchar *shortname, const gchar *namespace);
+gboolean jabber_buzz_isenabled(JabberStream *js, const gchar *namespace);
-gboolean jabber_custom_smileys_isenabled(JabberStream *js, const gchar *shortname,
- const gchar *namespace);
+gboolean jabber_custom_smileys_isenabled(JabberStream *js, const const gchar *namespace);
-#endif /* _PURPLE_JABBER_MESSAGE_H_ */
+#endif /* PURPLE_JABBER_MESSAGE_H_ */
diff --git a/libpurple/protocols/jabber/oob.c b/libpurple/protocols/jabber/oob.c
index e43bf5c3ec..73b18fb030 100644
--- a/libpurple/protocols/jabber/oob.c
+++ b/libpurple/protocols/jabber/oob.c
@@ -187,18 +187,18 @@ static void jabber_oob_xfer_recv_canceled(PurpleXfer *xfer) {
jabber_oob_xfer_recv_error(xfer, "404");
}
-void jabber_oob_parse(JabberStream *js, xmlnode *packet) {
+void jabber_oob_parse(JabberStream *js, const char *from, JabberIqType type,
+ const char *id, xmlnode *querynode) {
JabberOOBXfer *jox;
PurpleXfer *xfer;
char *filename;
char *url;
- const char *type;
- xmlnode *querynode, *urlnode;
+ xmlnode *urlnode;
- if(!(type = xmlnode_get_attrib(packet, "type")) || strcmp(type, "set"))
+ if(type != JABBER_IQ_SET)
return;
- if(!(querynode = xmlnode_get_child(packet, "query")))
+ if(!from)
return;
if(!(urlnode = xmlnode_get_child(querynode, "url")))
@@ -211,10 +211,9 @@ void jabber_oob_parse(JabberStream *js, xmlnode *packet) {
g_free(url);
jox->js = js;
jox->headers = g_string_new("");
- jox->iq_id = g_strdup(xmlnode_get_attrib(packet, "id"));
+ jox->iq_id = g_strdup(id);
- xfer = purple_xfer_new(js->gc->account, PURPLE_XFER_RECEIVE,
- xmlnode_get_attrib(packet, "from"));
+ xfer = purple_xfer_new(js->gc->account, PURPLE_XFER_RECEIVE, from);
if (xfer)
{
xfer->data = jox;
diff --git a/libpurple/protocols/jabber/oob.h b/libpurple/protocols/jabber/oob.h
index 3a669003dd..c1103e6b12 100644
--- a/libpurple/protocols/jabber/oob.h
+++ b/libpurple/protocols/jabber/oob.h
@@ -1,5 +1,5 @@
/**
- * @file jutil.h utility functions
+ * @file oob.h out-of-band transfer functions
*
* purple
*
@@ -19,9 +19,12 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
*/
-#ifndef _PURPLE_JABBER_OOB_H_
-#define _PURPLE_JABBER_OOB_H_
+#ifndef PURPLE_JABBER_OOB_H_
+#define PURPLE_JABBER_OOB_H_
-void jabber_oob_parse(JabberStream *js, xmlnode *packet);
+#include "jabber.h"
-#endif /* _PURPLE_JABBER_OOB_H_ */
+void jabber_oob_parse(JabberStream *js, const char *from, JabberIqType type,
+ const char *id, xmlnode *querynode);
+
+#endif /* PURPLE_JABBER_OOB_H_ */
diff --git a/libpurple/protocols/jabber/parser.c b/libpurple/protocols/jabber/parser.c
index 4d791fcc92..3cc5e0e2c3 100644
--- a/libpurple/protocols/jabber/parser.c
+++ b/libpurple/protocols/jabber/parser.c
@@ -86,6 +86,8 @@ jabber_parser_element_start_libxml(void *user_data,
}
}
for(i=0; i < nb_attributes * 5; i+=5) {
+ const char *name = (const char *)attributes[i];
+ const char *prefix = (const char *)attributes[i+1];
const char *attrib_ns = (const char *)attributes[i+2];
char *txt;
int attrib_len = attributes[i+4] - attributes[i+3];
@@ -97,7 +99,7 @@ jabber_parser_element_start_libxml(void *user_data,
txt = attrib;
attrib = purple_unescape_html(txt);
g_free(txt);
- xmlnode_set_attrib_with_namespace(node, (const char*) attributes[i], attrib_ns, attrib);
+ xmlnode_set_attrib_full(node, name, attrib_ns, prefix, attrib);
g_free(attrib);
}
@@ -205,12 +207,6 @@ jabber_parser_setup(JabberStream *js)
jabber_parser_free(js);
}
-void
-jabber_parser_close_stream(JabberStream *js)
-{
- xmlParseChunk(js->context, "</stream:stream>", 16 /* length */, 0);
-}
-
void jabber_parser_free(JabberStream *js) {
if (js->context) {
xmlParseChunk(js->context, NULL,0,1);
diff --git a/libpurple/protocols/jabber/parser.h b/libpurple/protocols/jabber/parser.h
index f7caacc813..b08f0c950e 100644
--- a/libpurple/protocols/jabber/parser.h
+++ b/libpurple/protocols/jabber/parser.h
@@ -19,14 +19,13 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
*/
-#ifndef _PURPLE_JABBER_PARSER_H_
-#define _PURPLE_JABBER_PARSER_H_
+#ifndef PURPLE_JABBER_PARSER_H_
+#define PURPLE_JABBER_PARSER_H_
#include "jabber.h"
void jabber_parser_setup(JabberStream *js);
-void jabber_parser_close_stream(JabberStream *js);
void jabber_parser_free(JabberStream *js);
void jabber_parser_process(JabberStream *js, const char *buf, int len);
-#endif /* _PURPLE_JABBER_PARSER_H_ */
+#endif /* PURPLE_JABBER_PARSER_H_ */
diff --git a/libpurple/protocols/jabber/pep.c b/libpurple/protocols/jabber/pep.c
index fae2223b63..bdc91815a2 100644
--- a/libpurple/protocols/jabber/pep.c
+++ b/libpurple/protocols/jabber/pep.c
@@ -24,68 +24,87 @@
#include "pep.h"
#include "iq.h"
#include <string.h>
+#include "useravatar.h"
#include "usermood.h"
#include "usernick.h"
+#include "usertune.h"
static GHashTable *pep_handlers = NULL;
void jabber_pep_init(void) {
if(!pep_handlers) {
pep_handlers = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL);
-
+
/* register PEP handlers */
+ jabber_avatar_init();
jabber_mood_init();
+ jabber_tune_init();
jabber_nick_init();
}
}
+void jabber_pep_uninit(void) {
+ /* any PEP handlers that need to clean things up go here. The standard
+ * cleanup of removing the handler and feature are handled here and by
+ * jabber_features_destroy() in jabber.c
+ */
+ g_hash_table_destroy(pep_handlers);
+ pep_handlers = NULL;
+}
+
void jabber_pep_init_actions(GList **m) {
/* register the PEP-specific actions */
jabber_mood_init_action(m);
jabber_nick_init_action(m);
}
-void jabber_pep_register_handler(const char *shortname, const char *xmlns, JabberPEPHandler handlerfunc) {
+void jabber_pep_register_handler(const char *xmlns, JabberPEPHandler handlerfunc) {
gchar *notifyns = g_strdup_printf("%s+notify", xmlns);
- jabber_add_feature(shortname, notifyns, NULL); /* receiving PEPs is always supported */
+ jabber_add_feature(notifyns, NULL); /* receiving PEPs is always supported */
g_free(notifyns);
g_hash_table_replace(pep_handlers, g_strdup(xmlns), handlerfunc);
}
-static void do_pep_iq_request_item_callback(JabberStream *js, xmlnode *packet, gpointer data) {
- const char *from = xmlnode_get_attrib(packet,"from");
- xmlnode *pubsub = xmlnode_get_child_with_namespace(packet,"pubsub","http://jabber.org/protocol/pubsub");
+static void
+do_pep_iq_request_item_callback(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data)
+{
+ xmlnode *pubsub;
xmlnode *items = NULL;
JabberPEPHandler *cb = data;
-
- if(pubsub)
- items = xmlnode_get_child(pubsub, "items");
-
+
+ if (type == JABBER_IQ_RESULT) {
+ pubsub = xmlnode_get_child_with_namespace(packet, "pubsub", "http://jabber.org/protocol/pubsub");
+ if(pubsub)
+ items = xmlnode_get_child(pubsub, "items");
+ }
+
cb(js, from, items);
}
void jabber_pep_request_item(JabberStream *js, const char *to, const char *node, const char *id, JabberPEPHandler cb) {
JabberIq *iq = jabber_iq_new(js, JABBER_IQ_GET);
xmlnode *pubsub, *items, *item;
-
+
xmlnode_set_attrib(iq->node,"to",to);
pubsub = xmlnode_new_child(iq->node,"pubsub");
-
+
xmlnode_set_namespace(pubsub,"http://jabber.org/protocol/pubsub");
-
+
items = xmlnode_new_child(pubsub, "items");
xmlnode_set_attrib(items,"node",node);
-
+
item = xmlnode_new_child(items, "item");
if(id)
xmlnode_set_attrib(item, "id", id);
-
+
jabber_iq_set_callback(iq,do_pep_iq_request_item_callback,(gpointer)cb);
-
+
jabber_iq_send(iq);
}
-gboolean jabber_pep_namespace_only_when_pep_enabled_cb(JabberStream *js, const gchar *shortname, const gchar *namespace) {
+gboolean jabber_pep_namespace_only_when_pep_enabled_cb(JabberStream *js, const gchar *namespace) {
return js->pep;
}
@@ -93,20 +112,44 @@ void jabber_handle_event(JabberMessage *jm) {
/* this may be called even when the own server doesn't support pep! */
JabberPEPHandler *jph;
GList *itemslist;
- char *jid = jabber_get_bare_jid(jm->from);
-
+ char *jid;
+
+ if (jm->type != JABBER_MESSAGE_EVENT)
+ return;
+
+ jid = jabber_get_bare_jid(jm->from);
+
for(itemslist = jm->eventitems; itemslist; itemslist = itemslist->next) {
xmlnode *items = (xmlnode*)itemslist->data;
const char *nodename = xmlnode_get_attrib(items,"node");
-
+
if(nodename && (jph = g_hash_table_lookup(pep_handlers, nodename)))
jph(jm->js, jid, items);
}
-
+
/* discard items we don't have a handler for */
g_free(jid);
}
+void jabber_pep_delete_node(JabberStream *js, const gchar *node)
+{
+ JabberIq *iq;
+ xmlnode *pubsub, *del;
+
+ g_return_if_fail(node != NULL);
+ g_return_if_fail(js->pep);
+
+ iq = jabber_iq_new(js, JABBER_IQ_SET);
+
+ pubsub = xmlnode_new_child(iq->node, "pubsub");
+ xmlnode_set_namespace(pubsub, "http://jabber.org/protocol/pubsub#owner");
+
+ del = xmlnode_new_child(pubsub, "delete");
+ xmlnode_set_attrib(del, "node", node);
+
+ jabber_iq_send(iq);
+}
+
void jabber_pep_publish(JabberStream *js, xmlnode *publish) {
JabberIq *iq;
xmlnode *pubsub;
diff --git a/libpurple/protocols/jabber/pep.h b/libpurple/protocols/jabber/pep.h
index f1e1aca059..5be64754e9 100644
--- a/libpurple/protocols/jabber/pep.h
+++ b/libpurple/protocols/jabber/pep.h
@@ -19,14 +19,15 @@
*
*/
-#ifndef _PURPLE_JABBER_PEP_H_
-#define _PURPLE_JABBER_PEP_H_
+#ifndef PURPLE_JABBER_PEP_H_
+#define PURPLE_JABBER_PEP_H_
#include "jabber.h"
#include "message.h"
#include "buddy.h"
void jabber_pep_init(void);
+void jabber_pep_uninit(void);
void jabber_pep_init_actions(GList **m);
@@ -42,11 +43,10 @@ typedef void (JabberPEPHandler)(JabberStream *js, const char *from, xmlnode *ite
* Registers a callback for PEP events. Also automatically announces this receiving capability via disco#info.
* Don't forget to use jabber_add_feature when supporting the sending of PEP events of this type.
*
- * @parameter shortname A short name for this feature for XEP-0115. It has no semantic meaning, it just has to be unique.
- * @parameter xmlns The namespace for this event
+ * @parameter xmlns The namespace for this event
* @parameter handlerfunc The callback to be used when receiving an event with this namespace
*/
-void jabber_pep_register_handler(const char *shortname, const char *xmlns, JabberPEPHandler handlerfunc);
+void jabber_pep_register_handler(const char *xmlns, JabberPEPHandler handlerfunc);
/*
* Request a specific item from another PEP node.
@@ -64,16 +64,20 @@ void jabber_pep_request_item(JabberStream *js, const char *to, const char *node,
/*
* Default callback that can be used for namespaces which should only be enabled when PEP is supported
*
- * @parameter js The JabberStream struct for this connection
- * @parameter shortname The namespace's shortname (for caps), ignored.
+ * @parameter js The JabberStream struct for this connection
* @parameter namespace The namespace that's queried, ignored.
*
* @returns TRUE when PEP is enabled, FALSE otherwise
*/
-gboolean jabber_pep_namespace_only_when_pep_enabled_cb(JabberStream *js, const gchar *shortname, const gchar *namespace);
+gboolean jabber_pep_namespace_only_when_pep_enabled_cb(JabberStream *js, const gchar *namespace);
void jabber_handle_event(JabberMessage *jm);
+/**
+ * Delete the specified PEP node.
+ */
+void jabber_pep_delete_node(JabberStream *js, const gchar *node);
+
/*
* Publishes PEP item(s)
*
@@ -82,4 +86,4 @@ void jabber_handle_event(JabberMessage *jm);
*/
void jabber_pep_publish(JabberStream *js, xmlnode *publish);
-#endif /* _PURPLE_JABBER_PEP_H_ */
+#endif /* PURPLE_JABBER_PEP_H_ */
diff --git a/libpurple/protocols/jabber/ping.c b/libpurple/protocols/jabber/ping.c
index 4339c27dd1..dc51e186c2 100644
--- a/libpurple/protocols/jabber/ping.c
+++ b/libpurple/protocols/jabber/ping.c
@@ -23,50 +23,71 @@
#include "internal.h"
#include "debug.h"
-#include "xmlnode.h"
#include "jabber.h"
#include "ping.h"
#include "iq.h"
-void
-jabber_ping_parse(JabberStream *js, xmlnode *packet)
+static void jabber_keepalive_pong_cb(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data)
{
- JabberIq *iq;
-
- purple_debug_info("jabber", "jabber_ping_parse\n");
-
- iq = jabber_iq_new(js, JABBER_IQ_RESULT);
+ if (js->keepalive_timeout != 0) {
+ purple_debug_misc("jabber", "Keepalive PONG\n");
+ purple_timeout_remove(js->keepalive_timeout);
+ js->keepalive_timeout = 0;
+ } else
+ purple_debug_warning("jabber", "Keepalive PONG with no outstanding timeout!\n");
+}
- xmlnode_set_attrib(iq->node, "to", xmlnode_get_attrib(packet, "from") );
+void
+jabber_ping_parse(JabberStream *js, const char *from,
+ JabberIqType type, const char *id, xmlnode *ping)
+{
+ if (type == JABBER_IQ_GET) {
+ JabberIq *iq = jabber_iq_new(js, JABBER_IQ_RESULT);
- jabber_iq_set_id(iq, xmlnode_get_attrib(packet, "id"));
+ if (from)
+ xmlnode_set_attrib(iq->node, "to", from);
+ xmlnode_set_attrib(iq->node, "id", id);
- jabber_iq_send(iq);
+ jabber_iq_send(iq);
+ } else if (type == JABBER_IQ_SET) {
+ /* XXX: error */
+ }
}
-static void jabber_ping_result_cb(JabberStream *js, xmlnode *packet,
- gpointer data)
+static void jabber_ping_result_cb(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data)
{
- const char *type = xmlnode_get_attrib(packet, "type");
-
- purple_debug_info("jabber", "jabber_ping_result_cb\n");
- if(type && !strcmp(type, "result")) {
+ if (type == JABBER_IQ_RESULT)
purple_debug_info("jabber", "PONG!\n");
- } else {
- purple_debug_info("jabber", "(not supported)\n");
- }
+ else
+ purple_debug_info("jabber", "ping not supported\n");
}
-gboolean jabber_ping_jid(PurpleConversation *conv, const char *jid)
+void jabber_keepalive_ping(JabberStream *js)
{
JabberIq *iq;
xmlnode *ping;
- purple_debug_info("jabber", "jabber_ping_jid\n");
+ iq = jabber_iq_new(js, JABBER_IQ_GET);
+ ping = xmlnode_new_child(iq->node, "ping");
+ xmlnode_set_namespace(ping, "urn:xmpp:ping");
- iq = jabber_iq_new(conv->account->gc->proto_data, JABBER_IQ_GET);
- xmlnode_set_attrib(iq->node, "to", jid);
+ jabber_iq_set_callback(iq, jabber_keepalive_pong_cb, NULL);
+ jabber_iq_send(iq);
+}
+
+gboolean jabber_ping_jid(JabberStream *js, const char *jid)
+{
+ JabberIq *iq;
+ xmlnode *ping;
+
+ iq = jabber_iq_new(js, JABBER_IQ_GET);
+ if (jid)
+ xmlnode_set_attrib(iq->node, "to", jid);
ping = xmlnode_new_child(iq->node, "ping");
xmlnode_set_namespace(ping, "urn:xmpp:ping");
@@ -74,7 +95,5 @@ gboolean jabber_ping_jid(PurpleConversation *conv, const char *jid)
jabber_iq_set_callback(iq, jabber_ping_result_cb, NULL);
jabber_iq_send(iq);
-
-
return TRUE;
}
diff --git a/libpurple/protocols/jabber/ping.h b/libpurple/protocols/jabber/ping.h
index 377452f56c..f34a5a4be5 100644
--- a/libpurple/protocols/jabber/ping.h
+++ b/libpurple/protocols/jabber/ping.h
@@ -1,5 +1,5 @@
/**
- * @file ping.h utility functions
+ * @file ping.h ping functions
*
* purple
*
@@ -19,17 +19,16 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-#ifndef _PURPLE_JABBER_PING_H_
-#define _PURPLE_JABBER_PING_H_
+#ifndef PURPLE_JABBER_PING_H_
+#define PURPLE_JABBER_PING_H_
#include "jabber.h"
-#include "conversation.h"
+#include "iq.h"
+#include "xmlnode.h"
-void jabber_ping_parse(JabberStream *js,
- xmlnode *packet);
+void jabber_ping_parse(JabberStream *js, const char *from,
+ JabberIqType, const char *id, xmlnode *child);
+gboolean jabber_ping_jid(JabberStream *js, const char *jid);
+void jabber_keepalive_ping(JabberStream *js);
-
-gboolean jabber_ping_jid(PurpleConversation *conv, const char *jid);
-
-
-#endif /* _PURPLE_JABBER_PING_H_ */
+#endif /* PURPLE_JABBER_PING_H_ */
diff --git a/libpurple/protocols/jabber/presence.c b/libpurple/protocols/jabber/presence.c
index 1c6c79732d..34424f9889 100644
--- a/libpurple/protocols/jabber/presence.c
+++ b/libpurple/protocols/jabber/presence.c
@@ -93,11 +93,31 @@ void jabber_presence_fake_to_self(JabberStream *js, const PurpleStatus *gstatus)
g_free(my_base_jid);
}
+void jabber_set_status(PurpleAccount *account, PurpleStatus *status)
+{
+ PurpleConnection *gc;
+ JabberStream *js;
+
+ if (!purple_account_is_connected(account))
+ return;
+
+ if (!purple_status_is_active(status))
+ return;
+
+ if (purple_status_is_exclusive(status) && !purple_status_is_active(status)) {
+ /* An exclusive status can't be deactivated. You should just
+ * activate some other exclusive status. */
+ return;
+ }
-void jabber_presence_send(PurpleAccount *account, PurpleStatus *status)
+ gc = purple_account_get_connection(account);
+ js = purple_connection_get_protocol_data(gc);
+ jabber_presence_send(js, FALSE);
+}
+
+void jabber_presence_send(JabberStream *js, gboolean force)
{
- PurpleConnection *gc = NULL;
- JabberStream *js = NULL;
+ PurpleAccount *account;
xmlnode *presence, *x, *photo;
char *stripped = NULL;
JabberBuddyState state;
@@ -106,28 +126,11 @@ void jabber_presence_send(PurpleAccount *account, PurpleStatus *status)
int length = -1;
gboolean allowBuzz;
PurplePresence *p;
- PurpleStatus *tune;
-
- if (purple_account_is_disconnected(account))
- return;
+ PurpleStatus *status, *tune;
+ account = purple_connection_get_account(js->gc);
p = purple_account_get_presence(account);
- if (NULL == status) {
- status = purple_presence_get_active_status(p);
- }
-
- if (purple_status_is_exclusive(status)) {
- /* An exclusive status can't be deactivated. You should just
- * activate some other exclusive status. */
- if (!purple_status_is_active(status))
- return;
- } else {
- /* Work with the exclusive status. */
- status = purple_presence_get_active_status(p);
- }
-
- gc = purple_account_get_connection(account);
- js = gc->proto_data;
+ status = purple_presence_get_active_status(p);
/* we don't want to send presence before we've gotten our roster */
if(!js->roster_parsed) {
@@ -136,39 +139,49 @@ void jabber_presence_send(PurpleAccount *account, PurpleStatus *status)
}
purple_status_to_jabber(status, &state, &stripped, &priority);
-
+
/* check for buzz support */
allowBuzz = purple_status_get_attr_boolean(status,"buzz");
/* changing the buzz state has to trigger a re-broadcasting of the presence for caps */
- if (js->googletalk && stripped == NULL && purple_presence_is_status_primitive_active(p, PURPLE_STATUS_TUNE)) {
- tune = purple_presence_get_status(p, "tune");
+ tune = purple_presence_get_status(p, "tune");
+ if (js->googletalk && !stripped && purple_status_is_active(tune)) {
stripped = jabber_google_presence_outgoing(tune);
}
-
+
#define CHANGED(a,b) ((!a && b) || (a && a[0] == '\0' && b && b[0] != '\0') || \
(a && !b) || (a && a[0] != '\0' && b && b[0] == '\0') || (a && b && strcmp(a,b)))
/* check if there are any differences to the <presence> and send them in that case */
- if (allowBuzz != js->allowBuzz || js->old_state != state || CHANGED(js->old_msg, stripped) ||
- js->old_priority != priority || CHANGED(js->old_avatarhash, js->avatar_hash)) {
+ if (force || allowBuzz != js->allowBuzz || js->old_state != state ||
+ CHANGED(js->old_msg, stripped) || js->old_priority != priority ||
+ CHANGED(js->old_avatarhash, js->avatar_hash) || js->old_idle != js->idle) {
+ /* Need to update allowBuzz before creating the presence (with caps) */
js->allowBuzz = allowBuzz;
presence = jabber_presence_create_js(js, state, stripped, priority);
- if(js->avatar_hash) {
- x = xmlnode_new_child(presence, "x");
- xmlnode_set_namespace(x, "vcard-temp:x:update");
+ /* Per XEP-0153 4.1, we must always send the <x> */
+ x = xmlnode_new_child(presence, "x");
+ xmlnode_set_namespace(x, "vcard-temp:x:update");
+ /*
+ * FIXME: Per XEP-0153 4.3.2 bullet 2, we must not publish our
+ * image hash if another resource has logged in and updated the
+ * vcard avatar. Requires changes in jabber_presence_parse.
+ */
+ if (js->vcard_fetched) {
+ /* Always publish a <photo>; it's empty if we have no image. */
photo = xmlnode_new_child(x, "photo");
- xmlnode_insert_data(photo, js->avatar_hash, -1);
+ if (js->avatar_hash)
+ xmlnode_insert_data(photo, js->avatar_hash, -1);
}
jabber_send(js, presence);
g_hash_table_foreach(js->chats, chats_send_presence_foreach, presence);
xmlnode_free(presence);
-
+
/* update old values */
-
+
if(js->old_msg)
g_free(js->old_msg);
if(js->old_avatarhash)
@@ -177,12 +190,12 @@ void jabber_presence_send(PurpleAccount *account, PurpleStatus *status)
js->old_avatarhash = g_strdup(js->avatar_hash);
js->old_state = state;
js->old_priority = priority;
+ js->old_idle = js->idle;
}
g_free(stripped);
/* next, check if there are any changes to the tune values */
- tune = purple_presence_get_status(p, "tune");
- if (tune && purple_status_is_active(tune)) {
+ if (purple_status_is_active(tune)) {
artist = purple_status_get_attr_string(tune, PURPLE_TUNE_ARTIST);
title = purple_status_get_attr_string(tune, PURPLE_TUNE_TITLE);
source = purple_status_get_attr_string(tune, PURPLE_TUNE_ALBUM);
@@ -191,7 +204,7 @@ void jabber_presence_send(PurpleAccount *account, PurpleStatus *status)
length = (!purple_status_get_attr_value(tune, PURPLE_TUNE_TIME)) ? -1 :
purple_status_get_attr_int(tune, PURPLE_TUNE_TIME);
}
-
+
if(CHANGED(artist, js->old_artist) || CHANGED(title, js->old_title) || CHANGED(source, js->old_source) ||
CHANGED(uri, js->old_uri) || CHANGED(track, js->old_track) || (length != js->old_length)) {
PurpleJabberTuneInfo tuneinfo = {
@@ -203,7 +216,7 @@ void jabber_presence_send(PurpleAccount *account, PurpleStatus *status)
(char*)uri
};
jabber_tune_set(js->gc, &tuneinfo);
-
+
/* update old values */
g_free(js->old_artist);
g_free(js->old_title);
@@ -232,6 +245,9 @@ xmlnode *jabber_presence_create_js(JabberStream *js, JabberBuddyState state, con
{
xmlnode *show, *status, *presence, *pri, *c;
const char *show_string = NULL;
+#ifdef USE_VV
+ gboolean audio_enabled, video_enabled;
+#endif
presence = xmlnode_new("presence");
@@ -259,44 +275,48 @@ xmlnode *jabber_presence_create_js(JabberStream *js, JabberBuddyState state, con
g_free(pstr);
}
+ /* if we are idle and not offline, include idle */
+ if (js->idle && state != JABBER_BUDDY_STATE_UNAVAILABLE) {
+ xmlnode *query = xmlnode_new_child(presence, "query");
+ gchar seconds[10];
+ g_snprintf(seconds, 10, "%d", (int) (time(NULL) - js->idle));
+
+ xmlnode_set_namespace(query, "jabber:iq:last");
+ xmlnode_set_attrib(query, "seconds", seconds);
+ }
+
/* JEP-0115 */
+ /* calculate hash */
+ jabber_caps_calculate_own_hash(js);
+ /* create xml */
c = xmlnode_new_child(presence, "c");
xmlnode_set_namespace(c, "http://jabber.org/protocol/caps");
xmlnode_set_attrib(c, "node", CAPS0115_NODE);
- xmlnode_set_attrib(c, "ver", VERSION);
-
- if(js != NULL) {
- /* add the extensions */
- char extlist[1024];
- unsigned remaining = 1023; /* one less for the \0 */
- GList *feature;
-
- extlist[0] = '\0';
- for(feature = jabber_features; feature && remaining > 0; feature = feature->next) {
- JabberFeature *feat = (JabberFeature*)feature->data;
- unsigned featlen;
-
- if(feat->is_enabled != NULL && feat->is_enabled(js, feat->shortname, feat->namespace) == FALSE)
- continue; /* skip this feature */
-
- featlen = strlen(feat->shortname);
-
- /* cut off when we don't have any more space left in our buffer (too bad) */
- if(featlen > remaining)
- break;
-
- strncat(extlist,feat->shortname,remaining);
- remaining -= featlen;
- if(feature->next) { /* no space at the end */
- strncat(extlist," ",remaining);
- --remaining;
- }
- }
- /* did we add anything? */
- if(remaining < 1023)
- xmlnode_set_attrib(c, "ext", extlist);
- }
-
+ xmlnode_set_attrib(c, "hash", "sha-1");
+ xmlnode_set_attrib(c, "ver", jabber_caps_get_own_hash(js));
+
+#ifdef USE_VV
+ /*
+ * MASSIVE HUGE DISGUSTING HACK
+ * This is a huge hack. As far as I can tell, Google Talk's gmail client
+ * doesn't bother to check the actual features we advertise; they
+ * just assume that if we specify a 'voice-v1' ext (ignoring that
+ * these are to be assigned no semantic value), we support receiving voice
+ * calls.
+ *
+ * Ditto for 'video-v1'.
+ */
+ audio_enabled = jabber_audio_enabled(js, NULL /* unused */);
+ video_enabled = jabber_video_enabled(js, NULL /* unused */);
+
+ if (audio_enabled && video_enabled)
+ xmlnode_set_attrib(c, "ext", "voice-v1 video-v1");
+ else if (audio_enabled)
+ xmlnode_set_attrib(c, "ext", "voice-v1");
+ else if (video_enabled)
+ xmlnode_set_attrib(c, "ext", "video-v1");
+#endif
+
return presence;
}
@@ -326,14 +346,14 @@ static void deny_add_cb(gpointer data)
g_free(jap);
}
-static void jabber_vcard_parse_avatar(JabberStream *js, xmlnode *packet, gpointer blah)
+static void
+jabber_vcard_parse_avatar(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer blah)
{
JabberBuddy *jb = NULL;
- xmlnode *vcard, *photo, *binval;
+ xmlnode *vcard, *photo, *binval, *fn, *nick;
char *text;
- guchar *data;
- gsize size;
- const char *from = xmlnode_get_attrib(packet, "from");
if(!from)
return;
@@ -344,14 +364,40 @@ static void jabber_vcard_parse_avatar(JabberStream *js, xmlnode *packet, gpointe
if((vcard = xmlnode_get_child(packet, "vCard")) ||
(vcard = xmlnode_get_child_with_namespace(packet, "query", "vcard-temp"))) {
+ /* The logic here regarding the nickname and full name is copied from
+ * buddy.c:jabber_vcard_parse. */
+ gchar *nickname = NULL;
+ if ((fn = xmlnode_get_child(vcard, "FN")))
+ nickname = xmlnode_get_data(fn);
+
+ if ((nick = xmlnode_get_child(vcard, "NICKNAME"))) {
+ char *tmp = xmlnode_get_data(nick);
+ char *bare_jid = jabber_get_bare_jid(from);
+ if (tmp && strstr(bare_jid, tmp) == NULL) {
+ g_free(nickname);
+ nickname = tmp;
+ } else if (tmp)
+ g_free(tmp);
+
+ g_free(bare_jid);
+ }
+
+ if (nickname) {
+ serv_got_alias(js->gc, from, nickname);
+ g_free(nickname);
+ }
+
if((photo = xmlnode_get_child(vcard, "PHOTO")) &&
(( (binval = xmlnode_get_child(photo, "BINVAL")) &&
(text = xmlnode_get_data(binval))) ||
(text = xmlnode_get_data(photo)))) {
- char *hash;
+ guchar *data;
+ gchar *hash;
+ gsize size;
data = purple_base64_decode(text, &size);
hash = jabber_calculate_data_sha1sum(data, size);
+
purple_buddy_icons_set_for_user(js->gc->account, from, data, size, hash);
g_free(hash);
g_free(text);
@@ -365,39 +411,45 @@ typedef struct _JabberPresenceCapabilities {
char *from;
} JabberPresenceCapabilities;
-static void jabber_presence_set_capabilities(JabberCapsClientInfo *info, gpointer user_data) {
- JabberPresenceCapabilities *userdata = user_data;
- JabberID *jid;
+static void
+jabber_presence_set_capabilities(JabberCapsClientInfo *info, GList *exts,
+ JabberPresenceCapabilities *userdata)
+{
JabberBuddyResource *jbr;
- GList *iter;
+ char *resource = g_utf8_strchr(userdata->from, -1, '/');
- jid = jabber_id_new(userdata->from);
- jbr = jabber_buddy_find_resource(userdata->jb, jid->resource);
- jabber_id_free(jid);
+ if (resource)
+ resource += 1;
- if(!jbr) {
+ jbr = jabber_buddy_find_resource(userdata->jb, resource);
+ if (!jbr) {
g_free(userdata->from);
g_free(userdata);
+ if (exts) {
+ g_list_foreach(exts, (GFunc)g_free, NULL);
+ g_list_free(exts);
+ }
return;
}
- if(jbr->caps)
- jabber_caps_free_clientinfo(jbr->caps);
- jbr->caps = info;
-
- if (info) {
- for(iter = info->features; iter; iter = g_list_next(iter)) {
- if(!strcmp((const char*)iter->data, "http://jabber.org/protocol/commands")) {
- JabberIq *iq = jabber_iq_new_query(userdata->js, JABBER_IQ_GET, "http://jabber.org/protocol/disco#items");
- xmlnode *query = xmlnode_get_child_with_namespace(iq->node,"query","http://jabber.org/protocol/disco#items");
- xmlnode_set_attrib(iq->node, "to", userdata->from);
- xmlnode_set_attrib(query, "node", "http://jabber.org/protocol/commands");
-
- jabber_iq_set_callback(iq, jabber_adhoc_disco_result_cb, NULL);
- jabber_iq_send(iq);
- break;
- }
- }
+ /* Any old jbr->caps.info is owned by the caps code */
+ if (jbr->caps.exts) {
+ g_list_foreach(jbr->caps.exts, (GFunc)g_free, NULL);
+ g_list_free(jbr->caps.exts);
+ }
+
+ jbr->caps.info = info;
+ jbr->caps.exts = exts;
+
+ if (!jbr->commands_fetched && jabber_resource_has_capability(jbr, "http://jabber.org/protocol/commands")) {
+ JabberIq *iq = jabber_iq_new_query(userdata->js, JABBER_IQ_GET, "http://jabber.org/protocol/disco#items");
+ xmlnode *query = xmlnode_get_child_with_namespace(iq->node, "query", "http://jabber.org/protocol/disco#items");
+ xmlnode_set_attrib(iq->node, "to", userdata->from);
+ xmlnode_set_attrib(query, "node", "http://jabber.org/protocol/commands");
+ jabber_iq_set_callback(iq, jabber_adhoc_disco_result_cb, NULL);
+ jabber_iq_send(iq);
+
+ jbr->commands_fetched = TRUE;
}
g_free(userdata->from);
@@ -406,8 +458,8 @@ static void jabber_presence_set_capabilities(JabberCapsClientInfo *info, gpointe
void jabber_presence_parse(JabberStream *js, xmlnode *packet)
{
- const char *from = xmlnode_get_attrib(packet, "from");
- const char *type = xmlnode_get_attrib(packet, "type");
+ const char *from;
+ const char *type;
const char *real_jid = NULL;
const char *affiliation = NULL;
const char *role = NULL;
@@ -419,6 +471,7 @@ void jabber_presence_parse(JabberStream *js, xmlnode *packet)
JabberBuddyResource *jbr = NULL, *found_jbr = NULL;
PurpleConvChatBuddyFlags flags = PURPLE_CBFLAGS_NONE;
gboolean delayed = FALSE;
+ const gchar *stamp = NULL; /* from <delayed/> element */
PurpleBuddy *b = NULL;
char *buddy_name;
JabberBuddyState state = JABBER_BUDDY_STATE_UNKNOWN;
@@ -426,10 +479,21 @@ void jabber_presence_parse(JabberStream *js, xmlnode *packet)
gboolean muc = FALSE;
char *avatar_hash = NULL;
xmlnode *caps = NULL;
+ int idle = 0;
+ gchar *nickname = NULL;
+ gboolean signal_return;
+
+ from = xmlnode_get_attrib(packet, "from");
+ type = xmlnode_get_attrib(packet, "type");
if(!(jb = jabber_buddy_find(js, from, TRUE)))
return;
+ signal_return = GPOINTER_TO_INT(purple_signal_emit_return_1(jabber_plugin,
+ "jabber-receiving-presence", js->gc, type, from, packet));
+ if (signal_return)
+ return;
+
if(!(jid = jabber_id_new(from)))
return;
@@ -448,6 +512,11 @@ void jabber_presence_parse(JabberStream *js, xmlnode *packet)
gboolean onlist = FALSE;
PurpleBuddy *buddy = purple_find_buddy(purple_connection_get_account(js->gc), from);
JabberBuddy *jb = NULL;
+ xmlnode *nick;
+
+ nick = xmlnode_get_child_with_namespace(packet, "nick", "http://jabber.org/protocol/nick");
+ if (nick)
+ nickname = xmlnode_get_data(nick);
if (buddy) {
jb = jabber_buddy_find(js, from, TRUE);
@@ -459,8 +528,9 @@ void jabber_presence_parse(JabberStream *js, xmlnode *packet)
jap->who = g_strdup(from);
jap->js = js;
- purple_account_request_authorization(purple_connection_get_account(js->gc), from, NULL, NULL, NULL, onlist,
+ purple_account_request_authorization(purple_connection_get_account(js->gc), from, NULL, nickname, NULL, onlist,
authorize_add_cb, deny_add_cb, jap);
+ g_free(nickname);
jabber_id_free(jid);
return;
} else if(type && !strcmp(type, "subscribed")) {
@@ -508,12 +578,16 @@ void jabber_presence_parse(JabberStream *js, xmlnode *packet)
} else if(!strcmp(y->name, "delay") && !strcmp(xmlns, "urn:xmpp:delay")) {
/* XXX: compare the time. jabber:x:delay can happen on presence packets that aren't really and truly delayed */
delayed = TRUE;
+ stamp = xmlnode_get_attrib(y, "stamp");
} else if(!strcmp(y->name, "c") && !strcmp(xmlns, "http://jabber.org/protocol/caps")) {
caps = y; /* store for later, when creating buddy resource */
+ } else if (g_str_equal(y->name, "nick") && g_str_equal(xmlns, "http://jabber.org/protocol/nick")) {
+ nickname = xmlnode_get_data(y);
} else if(!strcmp(y->name, "x")) {
if(!strcmp(xmlns, "jabber:x:delay")) {
/* XXX: compare the time. jabber:x:delay can happen on presence packets that aren't really and truly delayed */
delayed = TRUE;
+ stamp = xmlnode_get_attrib(y, "stamp");
} else if(!strcmp(xmlns, "http://jabber.org/protocol/muc#user")) {
xmlnode *z;
@@ -564,13 +638,29 @@ void jabber_presence_parse(JabberStream *js, xmlnode *packet)
avatar_hash = xmlnode_get_data(photo);
}
}
+ } else if (!strcmp(y->name, "query") &&
+ !strcmp(xmlnode_get_namespace(y), "jabber:iq:last")) {
+ /* resource has specified idle */
+ const gchar *seconds = xmlnode_get_attrib(y, "seconds");
+ if (seconds) {
+ /* we may need to take "delayed" into account here */
+ idle = atoi(seconds);
+ }
}
}
+ if (idle && delayed && stamp) {
+ /* if we have a delayed presence, we need to add the delay to the idle
+ value */
+ time_t offset = time(NULL) - purple_str_to_time(stamp, TRUE, NULL, NULL,
+ NULL);
+ purple_debug_info("jabber", "got delay %s yielding %ld s offset\n",
+ stamp, offset);
+ idle += offset;
+ }
if(jid->node && (chat = jabber_chat_find(js, jid->node, jid->domain))) {
static int i = 1;
- char *room_jid = g_strdup_printf("%s@%s", jid->node, jid->domain);
if(state == JABBER_BUDDY_STATE_ERROR) {
char *title, *msg = jabber_parse_error(js, packet, NULL);
@@ -592,8 +682,8 @@ void jabber_presence_parse(JabberStream *js, xmlnode *packet)
jabber_chat_destroy(chat);
jabber_id_free(jid);
g_free(status);
- g_free(room_jid);
g_free(avatar_hash);
+ g_free(nickname);
return;
}
@@ -611,8 +701,8 @@ void jabber_presence_parse(JabberStream *js, xmlnode *packet)
jabber_chat_destroy(chat);
jabber_id_free(jid);
g_free(status);
- g_free(room_jid);
g_free(avatar_hash);
+ g_free(nickname);
return;
}
@@ -674,17 +764,20 @@ void jabber_presence_parse(JabberStream *js, xmlnode *packet)
if (!jid->resource) {
jabber_id_free(jid);
g_free(avatar_hash);
+ g_free(nickname);
g_free(status);
return;
}
if(!chat->conv) {
+ char *room_jid = g_strdup_printf("%s@%s", jid->node, jid->domain);
chat->id = i++;
chat->muc = muc;
chat->conv = serv_got_joined_chat(js->gc, chat->id, room_jid);
purple_conv_chat_set_nick(PURPLE_CONV_CHAT(chat->conv), chat->handle);
jabber_chat_disco_traffic(chat);
+ g_free(room_jid);
}
jabber_buddy_track_resource(jb, jid->resource, priority, state,
@@ -699,7 +792,6 @@ void jabber_presence_parse(JabberStream *js, xmlnode *packet)
purple_conv_chat_user_set_flags(PURPLE_CONV_CHAT(chat->conv), jid->resource,
flags);
}
- g_free(room_jid);
} else {
buddy_name = g_strdup_printf("%s%s%s", jid->node ? jid->node : "",
jid->node ? "@" : "", jid->domain);
@@ -710,6 +802,7 @@ void jabber_presence_parse(JabberStream *js, xmlnode *packet)
jabber_id_free(jid);
g_free(avatar_hash);
g_free(buddy_name);
+ g_free(nickname);
g_free(status);
return;
} else {
@@ -755,29 +848,59 @@ void jabber_presence_parse(JabberStream *js, xmlnode *packet)
} else {
jbr = jabber_buddy_track_resource(jb, jid->resource, priority,
state, status);
- if(caps) {
- const char *node = xmlnode_get_attrib(caps,"node");
- const char *ver = xmlnode_get_attrib(caps,"ver");
- const char *ext = xmlnode_get_attrib(caps,"ext");
-
- if(node && ver) {
- JabberPresenceCapabilities *userdata = g_new0(JabberPresenceCapabilities, 1);
- userdata->js = js;
- userdata->jb = jb;
- userdata->from = g_strdup(from);
- jabber_caps_get_info(js, from, node, ver, ext, jabber_presence_set_capabilities, userdata);
- }
+ if (idle) {
+ jbr->idle = time(NULL) - idle;
+ } else {
+ jbr->idle = 0;
}
}
if((found_jbr = jabber_buddy_find_resource(jb, NULL))) {
jabber_google_presence_incoming(js, buddy_name, found_jbr);
purple_prpl_got_user_status(js->gc->account, buddy_name, jabber_buddy_state_get_status_id(found_jbr->state), "priority", found_jbr->priority, "message", found_jbr->status, NULL);
+ purple_prpl_got_user_idle(js->gc->account, buddy_name, found_jbr->idle, found_jbr->idle);
+ if (nickname)
+ serv_got_alias(js->gc, buddy_name, nickname);
} else {
purple_prpl_got_user_status(js->gc->account, buddy_name, "offline", status ? "message" : NULL, status, NULL);
}
g_free(buddy_name);
}
+
+ if (caps && (!type || g_str_equal(type, "available"))) {
+ /* handle Entity Capabilities (XEP-0115) */
+ const char *node = xmlnode_get_attrib(caps, "node");
+ const char *ver = xmlnode_get_attrib(caps, "ver");
+ const char *hash = xmlnode_get_attrib(caps, "hash");
+ const char *ext = xmlnode_get_attrib(caps, "ext");
+
+ /* v1.3 uses: node, ver, and optionally ext.
+ * v1.5 uses: node, ver, and hash. */
+ if (node && *node && ver && *ver) {
+ gchar **exts = ext && *ext ? g_strsplit(ext, " ", -1) : NULL;
+ jbr = jabber_buddy_find_resource(jb, jid->resource);
+
+ /* Look it up if we don't already have all this information */
+ if (!jbr || !jbr->caps.info ||
+ !g_str_equal(node, jbr->caps.info->tuple.node) ||
+ !g_str_equal(ver, jbr->caps.info->tuple.ver) ||
+ !purple_strequal(hash, jbr->caps.info->tuple.hash) ||
+ !jabber_caps_exts_known(jbr->caps.info, (gchar **)exts)) {
+ JabberPresenceCapabilities *userdata = g_new0(JabberPresenceCapabilities, 1);
+ userdata->js = js;
+ userdata->jb = jb;
+ userdata->from = g_strdup(from);
+ jabber_caps_get_info(js, from, node, ver, hash, exts,
+ (jabber_caps_get_info_cb)jabber_presence_set_capabilities,
+ userdata);
+ } else {
+ if (exts)
+ g_strfreev(exts);
+ }
+ }
+ }
+
+ g_free(nickname);
g_free(status);
jabber_id_free(jid);
g_free(avatar_hash);
diff --git a/libpurple/protocols/jabber/presence.h b/libpurple/protocols/jabber/presence.h
index 961c56ddc7..a1f7fd6fd0 100644
--- a/libpurple/protocols/jabber/presence.h
+++ b/libpurple/protocols/jabber/presence.h
@@ -19,14 +19,24 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
*/
-#ifndef _PURPLE_JABBER_PRESENCE_H_
-#define _PURPLE_JABBER_PRESENCE_H_
+#ifndef PURPLE_JABBER_PRESENCE_H_
+#define PURPLE_JABBER_PRESENCE_H_
#include "buddy.h"
#include "jabber.h"
#include "xmlnode.h"
-void jabber_presence_send(PurpleAccount *account, PurpleStatus *status);
+void jabber_set_status(PurpleAccount *account, PurpleStatus *status);
+
+/**
+ * Send a full presence stanza.
+ *
+ * @param js A JabberStream object.
+ * @param force Force sending the presence stanza, irrespective of whether
+ * the contents seem to have changed.
+ */
+void jabber_presence_send(JabberStream *js, gboolean force);
+
xmlnode *jabber_presence_create(JabberBuddyState state, const char *msg, int priority); /* DEPRECATED */
xmlnode *jabber_presence_create_js(JabberStream *js, JabberBuddyState state, const char *msg, int priority);
void jabber_presence_parse(JabberStream *js, xmlnode *packet);
@@ -35,4 +45,4 @@ void jabber_presence_subscription_set(JabberStream *js, const char *who,
void jabber_presence_fake_to_self(JabberStream *js, const PurpleStatus *status);
void purple_status_to_jabber(const PurpleStatus *status, JabberBuddyState *state, char **msg, int *priority);
-#endif /* _PURPLE_JABBER_PRESENCE_H_ */
+#endif /* PURPLE_JABBER_PRESENCE_H_ */
diff --git a/libpurple/protocols/jabber/roster.c b/libpurple/protocols/jabber/roster.c
index cab8df2942..81e35fbc14 100644
--- a/libpurple/protocols/jabber/roster.c
+++ b/libpurple/protocols/jabber/roster.c
@@ -80,15 +80,16 @@ static void add_purple_buddies_to_groups(JabberStream *js, const char *jid,
buddies = g_slist_remove(buddies, b);
- if((l = g_slist_find_custom(g2, g->name, (GCompareFunc)strcmp))) {
- const char *servernick;
+ if((l = g_slist_find_custom(g2, purple_group_get_name(g), (GCompareFunc)strcmp))) {
+ const char *servernick, *balias;
/* Previously stored serverside / buddy-supplied alias */
if((servernick = purple_blist_node_get_string((PurpleBlistNode*)b, "servernick")))
serv_got_alias(js->gc, jid, servernick);
/* Alias from our roster retrieval */
- if(alias && (!b->alias || strcmp(b->alias, alias)))
+ balias = purple_buddy_get_local_buddy_alias(b);
+ if(alias && (!balias || strcmp(balias, alias)))
purple_serv_got_private_alias(js->gc, jid, alias);
g_free(l->data);
g2 = g_slist_delete_link(g2, l);
@@ -104,7 +105,7 @@ static void add_purple_buddies_to_groups(JabberStream *js, const char *jid,
if (pool) {
b = pool->data;
pool = g_list_delete_link(pool, pool);
- } else {
+ } else {
b = purple_buddy_new(js->gc->account, jid, alias);
}
@@ -119,11 +120,13 @@ static void add_purple_buddies_to_groups(JabberStream *js, const char *jid,
/* If we just learned about ourself, then fake our status,
* because we won't be receiving a normal presence message
* about ourself. */
- if(!strcmp(b->name, my_bare_jid)) {
+ if(!strcmp(purple_buddy_get_name(b), my_bare_jid)) {
PurplePresence *gpresence;
PurpleStatus *status;
+ PurpleAccount *account;
- gpresence = purple_account_get_presence(js->gc->account);
+ account = purple_connection_get_account(js->gc);
+ gpresence = purple_account_get_presence(account);
status = purple_presence_get_active_status(gpresence);
jabber_presence_fake_to_self(js, status);
}
@@ -142,10 +145,10 @@ static void add_purple_buddies_to_groups(JabberStream *js, const char *jid,
g_slist_free(buddies);
}
-void jabber_roster_parse(JabberStream *js, xmlnode *packet)
+void jabber_roster_parse(JabberStream *js, const char *from,
+ JabberIqType type, const char *id, xmlnode *query)
{
- xmlnode *query, *item, *group;
- const char *from = xmlnode_get_attrib(packet, "from");
+ xmlnode *item, *group;
if(from) {
char *from_norm;
@@ -166,10 +169,6 @@ void jabber_roster_parse(JabberStream *js, xmlnode *packet)
return;
}
- query = xmlnode_get_child(packet, "query");
- if(!query)
- return;
-
js->currently_parsing_roster_push = TRUE;
for(item = xmlnode_get_child(query, "item"); item; item = xmlnode_get_next_twin(item))
@@ -257,11 +256,12 @@ void jabber_roster_parse(JabberStream *js, xmlnode *packet)
js->currently_parsing_roster_push = FALSE;
/* if we're just now parsing the roster for the first time,
- * then now would be the time to send our initial presence */
+ * then now would be the time to declare ourselves connected and
+ * send our initial presence */
if(!js->roster_parsed) {
js->roster_parsed = TRUE;
-
- jabber_presence_send(js->gc->account, NULL);
+ jabber_presence_send(js, TRUE);
+ jabber_stream_set_state(js, JABBER_STREAM_CONNECTED);
}
}
@@ -273,6 +273,7 @@ static void jabber_roster_update(JabberStream *js, const char *name,
GSList *groups = NULL, *l;
JabberIq *iq;
xmlnode *query, *item, *group;
+ const char *balias;
if (js->currently_parsing_roster_push)
return;
@@ -281,17 +282,40 @@ static void jabber_roster_update(JabberStream *js, const char *name,
return;
if(grps) {
+ GString *out = g_string_new(NULL);
groups = grps;
+
+ for (l = groups; l; l = l->next) {
+ out = g_string_append(out, (const char *)l->data);
+ if (l->next)
+ out = g_string_append(out, ", ");
+ }
+
+ purple_debug_info("jabber", "jabber_roster_update(%s): [Source: grps]: groups: %s\n",
+ name, out->str);
+ g_string_free(out, TRUE);
+
} else {
GSList *buddies = purple_find_buddies(js->gc->account, name);
+ GString *out = g_string_new(NULL);
+
if(!buddies)
return;
while(buddies) {
b = buddies->data;
g = purple_buddy_get_group(b);
- groups = g_slist_append(groups, g->name);
+ groups = g_slist_append(groups, (char *)purple_group_get_name(g));
buddies = g_slist_remove(buddies, b);
}
+ for (l = groups; l; l = l->next) {
+ out = g_string_append(out, (const char *)l->data);
+ if (l->next)
+ out = g_string_append(out, ", ");
+ }
+
+ purple_debug_info("jabber", "jabber_roster_update(%s): [Source: local blist]: groups: %s\n",
+ name, out->str);
+ g_string_free(out, TRUE);
}
iq = jabber_iq_new_query(js, JABBER_IQ_SET, "jabber:iq:roster");
@@ -301,7 +325,8 @@ static void jabber_roster_update(JabberStream *js, const char *name,
xmlnode_set_attrib(item, "jid", name);
- xmlnode_set_attrib(item, "name", b->alias ? b->alias : "");
+ balias = purple_buddy_get_local_buddy_alias(b);
+ xmlnode_set_attrib(item, "name", balias ? balias : "");
for(l = groups; l; l = l->next) {
group = xmlnode_new_child(item, "group");
@@ -310,7 +335,7 @@ static void jabber_roster_update(JabberStream *js, const char *name,
if(!grps)
g_slist_free(groups);
-
+
if (js->server_caps & JABBER_CAP_GOOGLE_ROSTER) {
jabber_google_roster_outgoing(js, query, item);
xmlnode_set_attrib(query, "xmlns:gr", "google:roster");
@@ -327,14 +352,19 @@ void jabber_roster_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy,
JabberBuddy *jb;
JabberBuddyResource *jbr;
char *my_bare_jid;
+ const char *name;
if(!js->roster_parsed)
return;
- if(!(who = jabber_get_bare_jid(buddy->name)))
+ name = purple_buddy_get_name(buddy);
+ if(!(who = jabber_get_bare_jid(name)))
return;
- jb = jabber_buddy_find(js, buddy->name, FALSE);
+ jb = jabber_buddy_find(js, name, FALSE);
+
+ purple_debug_info("jabber", "jabber_roster_add_buddy(): Adding %s\n",
+ name);
jabber_roster_update(js, who, NULL);
@@ -365,6 +395,9 @@ void jabber_roster_alias_change(PurpleConnection *gc, const char *name, const ch
if(b != NULL) {
purple_blist_alias_buddy(b, alias);
+ purple_debug_info("jabber", "jabber_roster_alias_change(): Aliased %s to %s\n",
+ name, alias ? alias : "(null)");
+
jabber_roster_update(gc->proto_data, name, NULL);
}
}
@@ -375,6 +408,7 @@ void jabber_roster_group_change(PurpleConnection *gc, const char *name,
GSList *buddies, *groups = NULL;
PurpleBuddy *b;
PurpleGroup *g;
+ const char *gname;
if(!old_group || !new_group || !strcmp(old_group, new_group))
return;
@@ -383,12 +417,17 @@ void jabber_roster_group_change(PurpleConnection *gc, const char *name,
while(buddies) {
b = buddies->data;
g = purple_buddy_get_group(b);
- if(!strcmp(g->name, old_group))
+ gname = purple_group_get_name(g);
+ if(!strcmp(gname, old_group))
groups = g_slist_append(groups, (char*)new_group); /* ick */
else
- groups = g_slist_append(groups, g->name);
+ groups = g_slist_append(groups, (char*)gname);
buddies = g_slist_remove(buddies, b);
}
+
+ purple_debug_info("jabber", "jabber_roster_group_change(): Moving %s from %s to %s\n",
+ name, old_group, new_group);
+
jabber_roster_update(gc->proto_data, name, groups);
g_slist_free(groups);
}
@@ -397,15 +436,17 @@ void jabber_roster_group_rename(PurpleConnection *gc, const char *old_name,
PurpleGroup *group, GList *moved_buddies)
{
GList *l;
+ const char *gname = purple_group_get_name(group);
for(l = moved_buddies; l; l = l->next) {
PurpleBuddy *buddy = l->data;
- jabber_roster_group_change(gc, buddy->name, old_name, group->name);
+ jabber_roster_group_change(gc, purple_buddy_get_name(buddy), old_name, gname);
}
}
void jabber_roster_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy,
PurpleGroup *group) {
- GSList *buddies = purple_find_buddies(gc->account, buddy->name);
+ const char *name = purple_buddy_get_name(buddy);
+ GSList *buddies = purple_find_buddies(purple_connection_get_account(gc), name);
buddies = g_slist_remove(buddies, buddy);
if(buddies != NULL) {
@@ -416,11 +457,14 @@ void jabber_roster_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy,
while(buddies) {
tmpbuddy = buddies->data;
tmpgroup = purple_buddy_get_group(tmpbuddy);
- groups = g_slist_append(groups, tmpgroup->name);
+ groups = g_slist_append(groups, (char *)purple_group_get_name(tmpgroup));
buddies = g_slist_remove(buddies, tmpbuddy);
}
- jabber_roster_update(gc->proto_data, buddy->name, groups);
+ purple_debug_info("jabber", "jabber_roster_remove_buddy(): Removing %s from %s\n",
+ purple_buddy_get_name(buddy), purple_group_get_name(group));
+
+ jabber_roster_update(gc->proto_data, name, groups);
g_slist_free(groups);
} else {
JabberIq *iq = jabber_iq_new_query(gc->proto_data, JABBER_IQ_SET,
@@ -428,9 +472,12 @@ void jabber_roster_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy,
xmlnode *query = xmlnode_get_child(iq->node, "query");
xmlnode *item = xmlnode_new_child(query, "item");
- xmlnode_set_attrib(item, "jid", buddy->name);
+ xmlnode_set_attrib(item, "jid", name);
xmlnode_set_attrib(item, "subscription", "remove");
+ purple_debug_info("jabber", "jabber_roster_remove_buddy(): Removing %s\n",
+ purple_buddy_get_name(buddy));
+
jabber_iq_send(iq);
}
}
diff --git a/libpurple/protocols/jabber/roster.h b/libpurple/protocols/jabber/roster.h
index a20ac309ee..d84b806bd7 100644
--- a/libpurple/protocols/jabber/roster.h
+++ b/libpurple/protocols/jabber/roster.h
@@ -19,14 +19,15 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
*/
-#ifndef _PURPLE_JABBER_ROSTER_H_
-#define _PURPLE_JABBER_ROSTER_H_
+#ifndef PURPLE_JABBER_ROSTER_H_
+#define PURPLE_JABBER_ROSTER_H_
#include "jabber.h"
void jabber_roster_request(JabberStream *js);
-void jabber_roster_parse(JabberStream *js, xmlnode *packet);
+void jabber_roster_parse(JabberStream *js, const char *from,
+ JabberIqType type, const char *id, xmlnode *query);
void jabber_roster_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy,
PurpleGroup *group);
@@ -39,4 +40,4 @@ void jabber_roster_group_rename(PurpleConnection *gc, const char *old_name,
void jabber_roster_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy,
PurpleGroup *group);
-#endif /* _PURPLE_JABBER_ROSTER_H_ */
+#endif /* PURPLE_JABBER_ROSTER_H_ */
diff --git a/libpurple/protocols/jabber/si.c b/libpurple/protocols/jabber/si.c
index 7e40cca3bf..1fbf0d6a7a 100644
--- a/libpurple/protocols/jabber/si.c
+++ b/libpurple/protocols/jabber/si.c
@@ -32,6 +32,7 @@
#include "buddy.h"
#include "disco.h"
#include "jabber.h"
+#include "ibb.h"
#include "iq.h"
#include "si.h"
@@ -63,8 +64,15 @@ typedef struct _JabberSIXfer {
size_t rxlen;
gsize rxmaxlen;
int local_streamhost_fd;
+
+ JabberIBBSession *ibb_session;
+ guint ibb_timeout_handle;
+ FILE *fp;
} JabberSIXfer;
+/* some forward declarations */
+static void jabber_si_xfer_ibb_send_init(JabberStream *js, PurpleXfer *xfer);
+
static PurpleXfer*
jabber_si_xfer_find(JabberStream *js, const char *sid, const char *from)
{
@@ -178,6 +186,32 @@ connect_timeout_cb(gpointer data)
return FALSE;
}
+static void
+jabber_si_bytestreams_ibb_timeout_remove(JabberSIXfer *jsx)
+{
+ if (jsx->ibb_timeout_handle) {
+ purple_timeout_remove(jsx->ibb_timeout_handle);
+ jsx->ibb_timeout_handle = 0;
+ }
+}
+
+static gboolean
+jabber_si_bytestreams_ibb_timeout_cb(gpointer data)
+{
+ PurpleXfer *xfer = (PurpleXfer *) data;
+ JabberSIXfer *jsx = xfer->data;
+
+ if (jsx && !jsx->ibb_session) {
+ purple_debug_info("jabber",
+ "jabber_si_bytestreams_ibb_timeout called and IBB session not set "
+ " up yet, cancel transfer");
+ jabber_si_bytestreams_ibb_timeout_remove(jsx);
+ purple_xfer_cancel_local(xfer);
+ }
+
+ return FALSE;
+}
+
static void jabber_si_bytestreams_attempt_connect(PurpleXfer *xfer)
{
JabberSIXfer *jsx = xfer->data;
@@ -200,7 +234,28 @@ static void jabber_si_bytestreams_attempt_connect(PurpleXfer *xfer)
jabber_iq_send(iq);
- purple_xfer_cancel_local(xfer);
+ /* if IBB is available, revert to that before giving up... */
+ if (jsx->stream_method & STREAM_METHOD_IBB) {
+ /* if we are the initializer, init IBB */
+ purple_debug_info("jabber",
+ "jabber_si_bytestreams_attempt_connect: "
+ "no streamhosts found, trying IBB\n");
+ /* if we are the sender, open an IBB session, but not if we already
+ did it, since we could have received the error <iq/> from the
+ receiver already... */
+ if (purple_xfer_get_type(xfer) == PURPLE_XFER_SEND
+ && !jsx->ibb_session) {
+ jabber_si_xfer_ibb_send_init(jsx->js, xfer);
+ } else {
+ /* setup a timeout to cancel waiting for IBB open */
+ jsx->ibb_timeout_handle = purple_timeout_add_seconds(30,
+ jabber_si_bytestreams_ibb_timeout_cb, xfer);
+ }
+ /* if we are the receiver, just wait for IBB open, callback is
+ already set up... */
+ } else {
+ purple_xfer_cancel_local(xfer);
+ }
return;
}
@@ -256,20 +311,18 @@ static void jabber_si_bytestreams_attempt_connect(PurpleXfer *xfer)
}
}
-void jabber_bytestreams_parse(JabberStream *js, xmlnode *packet)
+void jabber_bytestreams_parse(JabberStream *js, const char *from,
+ JabberIqType type, const char *id, xmlnode *query)
{
PurpleXfer *xfer;
JabberSIXfer *jsx;
- xmlnode *query, *streamhost;
- const char *sid, *from, *type;
+ xmlnode *streamhost;
+ const char *sid;
- if(!(type = xmlnode_get_attrib(packet, "type")) || strcmp(type, "set"))
+ if(type != JABBER_IQ_SET)
return;
- if(!(from = xmlnode_get_attrib(packet, "from")))
- return;
-
- if(!(query = xmlnode_get_child(packet, "query")))
+ if(!from)
return;
if(!(sid = xmlnode_get_attrib(query, "sid")))
@@ -285,7 +338,7 @@ void jabber_bytestreams_parse(JabberStream *js, xmlnode *packet)
if(jsx->iq_id)
g_free(jsx->iq_id);
- jsx->iq_id = g_strdup(xmlnode_get_attrib(packet, "id"));
+ jsx->iq_id = g_strdup(id);
for(streamhost = xmlnode_get_child(query, "streamhost"); streamhost;
streamhost = xmlnode_get_next_twin(streamhost)) {
@@ -388,9 +441,11 @@ jabber_si_xfer_bytestreams_send_read_again_cb(gpointer data, gint source,
purple_xfer_cancel_remote(xfer);
return;
} else if(jsx->rxlen - 5 < jsx->rxqueue[4] + 2) {
- purple_debug_info("jabber", "reading %u bytes for DST.ADDR + port num (trying to read %u now)\n",
- jsx->rxqueue[4] + 2, jsx->rxqueue[4] + 2 - (jsx->rxlen - 5));
- len = read(source, buffer, jsx->rxqueue[4] + 2 - (jsx->rxlen - 5));
+ /* Upper-bound of 257 (jsx->rxlen = 5, jsx->rxqueue[4] = 0xFF) */
+ unsigned short to_read = jsx->rxqueue[4] + 2 - (jsx->rxlen - 5);
+ purple_debug_info("jabber", "reading %u bytes for DST.ADDR + port num (trying to read %hu now)\n",
+ jsx->rxqueue[4] + 2, to_read);
+ len = read(source, buffer, to_read);
if(len < 0 && errno == EAGAIN)
return;
else if(len <= 0) {
@@ -533,10 +588,12 @@ jabber_si_xfer_bytestreams_send_read_cb(gpointer data, gint source,
memcpy(jsx->rxqueue + jsx->rxlen, buffer, len);
jsx->rxlen += len;
return;
- } else if(jsx->rxlen - 2 < jsx->rxqueue[1]) {
- purple_debug_info("jabber", "reading %u bytes for auth methods (trying to read %u now)\n",
- jsx->rxqueue[1], jsx->rxqueue[1] - (jsx->rxlen - 2));
- len = read(source, buffer, jsx->rxqueue[1] - (jsx->rxlen - 2));
+ } else if(jsx->rxlen - 2 < jsx->rxqueue[1]) {
+ /* Has a maximum value of 255 (jsx->rxlen = 2, jsx->rxqueue[1] = 0xFF) */
+ unsigned short to_read = jsx->rxqueue[1] - (jsx->rxlen - 2);
+ purple_debug_info("jabber", "reading %u bytes for auth methods (trying to read %hu now)\n",
+ jsx->rxqueue[1], to_read);
+ len = read(source, buffer, to_read);
if(len < 0 && errno == EAGAIN)
return;
else if(len <= 0) {
@@ -646,13 +703,14 @@ jabber_si_xfer_bytestreams_send_connected_cb(gpointer data, gint source,
}
static void
-jabber_si_connect_proxy_cb(JabberStream *js, xmlnode *packet,
- gpointer data)
+jabber_si_connect_proxy_cb(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data)
{
PurpleXfer *xfer = data;
JabberSIXfer *jsx;
xmlnode *query, *streamhost_used;
- const char *from, *type, *jid;
+ const char *jid;
GList *matched;
/* TODO: This need to send errors if we don't see what we're looking for */
@@ -669,13 +727,34 @@ jabber_si_connect_proxy_cb(JabberStream *js, xmlnode *packet,
jsx = xfer->data;
- if(!(type = xmlnode_get_attrib(packet, "type")) || strcmp(type, "result")) {
- if (type && !strcmp(type, "error"))
+ if(type != JABBER_IQ_RESULT) {
+ purple_debug_info("jabber",
+ "jabber_si_xfer_connect_proxy_cb: type = error\n");
+ /* if IBB is available, open IBB session */
+ purple_debug_info("jabber",
+ "jabber_si_xfer_connect_proxy_cb: got error, method: %d\n",
+ jsx->stream_method);
+ if (jsx->stream_method & STREAM_METHOD_IBB) {
+ purple_debug_info("jabber", "IBB is possible, try it\n");
+ /* if we are the sender and haven't already opened an IBB
+ session, do so now (we might already have failed to open
+ the bytestream proxy ourselves when receiving this <iq/> */
+ if (purple_xfer_get_type(xfer) == PURPLE_XFER_SEND
+ && !jsx->ibb_session) {
+ jabber_si_xfer_ibb_send_init(js, xfer);
+ } else {
+ jsx->ibb_timeout_handle = purple_timeout_add_seconds(30,
+ jabber_si_bytestreams_ibb_timeout_cb, xfer);
+ }
+ /* if we are receiver, just wait for IBB open stanza, callback
+ is already set up */
+ } else {
purple_xfer_cancel_remote(xfer);
+ }
return;
}
- if(!(from = xmlnode_get_attrib(packet, "from")))
+ if (!from)
return;
if(!(query = xmlnode_get_child(packet, "query")))
@@ -698,8 +777,22 @@ jabber_si_connect_proxy_cb(JabberStream *js, xmlnode *packet,
purple_debug_info("jabber", "Got local SOCKS5 streamhost-used.\n");
purple_xfer_start(xfer, xfer->fd, NULL, -1);
} else {
- purple_debug_info("jabber", "streamhost-used does not match any proxy that was offered to target\n");
- purple_xfer_cancel_local(xfer);
+ /* if available, try to revert to IBB... */
+ if (jsx->stream_method & STREAM_METHOD_IBB) {
+ purple_debug_info("jabber",
+ "jabber_si_connect_proxy_cb: trying to revert to IBB\n");
+ if (purple_xfer_get_type(xfer) == PURPLE_XFER_SEND) {
+ jabber_si_xfer_ibb_send_init(jsx->js, xfer);
+ } else {
+ jsx->ibb_timeout_handle = purple_timeout_add_seconds(30,
+ jabber_si_bytestreams_ibb_timeout_cb, xfer);
+ }
+ /* if we are the receiver, we are already set up...*/
+ } else {
+ purple_debug_info("jabber",
+ "streamhost-used does not match any proxy that was offered to target\n");
+ purple_xfer_cancel_local(xfer);
+ }
}
g_free(my_jid);
return;
@@ -826,8 +919,26 @@ jabber_si_xfer_bytestreams_listen_cb(int sock, gpointer data)
/* We have no way of transferring, cancel the transfer */
if (streamhost_count == 0) {
jabber_iq_free(iq);
- /* We should probably notify the target, but this really shouldn't ever happen */
- purple_xfer_cancel_local(xfer);
+
+ /* if available, revert to IBB */
+ if (jsx->stream_method & STREAM_METHOD_IBB) {
+ purple_debug_info("jabber",
+ "jabber_si_xfer_bytestreams_listen_cb: trying to revert to IBB\n");
+ if (purple_xfer_get_type(xfer) == PURPLE_XFER_SEND) {
+ /* if we are the sender, init the IBB session... */
+ jabber_si_xfer_ibb_send_init(jsx->js, xfer);
+ } else {
+ jsx->ibb_timeout_handle = purple_timeout_add_seconds(30,
+ jabber_si_bytestreams_ibb_timeout_cb, xfer);
+ }
+ /* if we are the receiver, we should just wait... the IBB open
+ handler has already been set up... */
+ } else {
+ /* We should probably notify the target,
+ but this really shouldn't ever happen */
+ purple_xfer_cancel_local(xfer);
+ }
+
return;
}
@@ -857,11 +968,243 @@ jabber_si_xfer_bytestreams_send_init(PurpleXfer *xfer)
}
-static void jabber_si_xfer_send_method_cb(JabberStream *js, xmlnode *packet,
- gpointer data)
+static void
+jabber_si_xfer_ibb_error_cb(JabberIBBSession *sess)
+{
+ PurpleXfer *xfer = (PurpleXfer *) jabber_ibb_session_get_user_data(sess);
+ JabberStream *js = jabber_ibb_session_get_js(sess);
+ PurpleConnection *gc = js->gc;
+ PurpleAccount *account = purple_connection_get_account(gc);
+
+ purple_debug_error("jabber", "an error occured during IBB file transfer\n");
+ purple_xfer_error(purple_xfer_get_type(xfer), account,
+ jabber_ibb_session_get_who(sess),
+ _("An error occured on the in-band bytestream transfer\n"));
+ purple_xfer_cancel_remote(xfer);
+}
+
+static void
+jabber_si_xfer_ibb_closed_cb(JabberIBBSession *sess)
+{
+ PurpleXfer *xfer = (PurpleXfer *) jabber_ibb_session_get_user_data(sess);
+ JabberStream *js = jabber_ibb_session_get_js(sess);
+ PurpleConnection *gc = js->gc;
+ PurpleAccount *account = purple_connection_get_account(gc);
+
+ purple_debug_info("jabber", "the remote user closed the transfer\n");
+ if (purple_xfer_get_bytes_remaining(xfer) > 0) {
+ purple_xfer_error(purple_xfer_get_type(xfer), account,
+ jabber_ibb_session_get_who(sess), _("Transfer was closed."));
+ purple_xfer_cancel_remote(xfer);
+ } else {
+ purple_xfer_set_completed(xfer, TRUE);
+ purple_xfer_end(xfer);
+ }
+}
+
+static void
+jabber_si_xfer_ibb_recv_data_cb(JabberIBBSession *sess, gpointer data,
+ gsize size)
+{
+ PurpleXfer *xfer = (PurpleXfer *) jabber_ibb_session_get_user_data(sess);
+ JabberSIXfer *jsx = (JabberSIXfer *) xfer->data;
+
+ if (size <= purple_xfer_get_bytes_remaining(xfer)) {
+ purple_debug_info("jabber", "about to write %" G_GSIZE_FORMAT " bytes from IBB stream\n",
+ size);
+ if(!fwrite(data, size, 1, jsx->fp)) {
+ purple_debug_error("jabber", "error writing to file\n");
+ purple_xfer_cancel_remote(xfer);
+ return;
+ }
+ purple_xfer_set_bytes_sent(xfer, purple_xfer_get_bytes_sent(xfer) + size);
+ purple_xfer_update_progress(xfer);
+
+ if (purple_xfer_get_bytes_remaining(xfer) == 0) {
+ purple_xfer_set_completed(xfer, TRUE);
+ purple_xfer_end(xfer);
+ }
+ } else {
+ /* trying to write past size of file transfers negotiated size,
+ reject transfer to protect against malicious behaviour */
+ purple_debug_error("jabber",
+ "IBB file transfer send more data than expected\n");
+ purple_xfer_cancel_remote(xfer);
+ }
+
+}
+
+static gboolean
+jabber_si_xfer_ibb_open_cb(JabberStream *js, const char *who, const char *id,
+ xmlnode *open)
+{
+ const gchar *sid = xmlnode_get_attrib(open, "sid");
+ PurpleXfer *xfer = jabber_si_xfer_find(js, sid, who);
+ if (xfer) {
+ JabberSIXfer *jsx = (JabberSIXfer *) xfer->data;
+ JabberIBBSession *sess =
+ jabber_ibb_session_create_from_xmlnode(js, who, id, open, xfer);
+ const char *filename;
+
+ jabber_si_bytestreams_ibb_timeout_remove(jsx);
+
+ if (sess) {
+ /* open the file to write to */
+ filename = purple_xfer_get_local_filename(xfer);
+ jsx->fp = g_fopen(filename, "wb");
+ if (jsx->fp == NULL) {
+ purple_debug_error("jabber", "failed to open file %s for writing: %s\n",
+ filename, g_strerror(errno));
+ purple_xfer_cancel_remote(xfer);
+ return FALSE;
+ }
+
+ /* setup callbacks here...*/
+ jabber_ibb_session_set_data_received_callback(sess,
+ jabber_si_xfer_ibb_recv_data_cb);
+ jabber_ibb_session_set_closed_callback(sess,
+ jabber_si_xfer_ibb_closed_cb);
+ jabber_ibb_session_set_error_callback(sess,
+ jabber_si_xfer_ibb_error_cb);
+
+ jsx->ibb_session = sess;
+
+ /* start the transfer */
+ purple_xfer_start(xfer, 0, NULL, 0);
+ return TRUE;
+ } else {
+ /* failed to create IBB session */
+ purple_debug_error("jabber", "failed to create IBB session\n");
+ purple_xfer_cancel_remote(xfer);
+ return FALSE;
+ }
+ } else {
+ /* we got an IBB <open/> for an unknown file transfer, pass along... */
+ purple_debug_info("jabber",
+ "IBB open did not match any SI file transfer\n");
+ return FALSE;
+ }
+}
+
+static void
+jabber_si_xfer_ibb_send_data(JabberIBBSession *sess)
+{
+ PurpleXfer *xfer = (PurpleXfer *) jabber_ibb_session_get_user_data(sess);
+ JabberSIXfer *jsx = (JabberSIXfer *) xfer->data;
+ gsize remaining = purple_xfer_get_bytes_remaining(xfer);
+ gsize packet_size = remaining < jabber_ibb_session_get_block_size(sess) ?
+ remaining : jabber_ibb_session_get_block_size(sess);
+ gpointer data = g_malloc(packet_size);
+ int res;
+
+ purple_debug_info("jabber", "IBB: about to read %" G_GSIZE_FORMAT " bytes from file %p\n",
+ packet_size, jsx->fp);
+ res = fread(data, packet_size, 1, jsx->fp);
+
+ if (res == 1) {
+ jabber_ibb_session_send_data(sess, data, packet_size);
+ purple_xfer_set_bytes_sent(xfer,
+ purple_xfer_get_bytes_sent(xfer) + packet_size);
+ purple_xfer_update_progress(xfer);
+ } else {
+ purple_debug_error("jabber",
+ "jabber_si_xfer_ibb_send_data: error reading from file\n");
+ purple_xfer_cancel_local(xfer);
+ }
+ g_free(data);
+}
+
+static void
+jabber_si_xfer_ibb_sent_cb(JabberIBBSession *sess)
+{
+ PurpleXfer *xfer = (PurpleXfer *) jabber_ibb_session_get_user_data(sess);
+ gsize remaining = purple_xfer_get_bytes_remaining(xfer);
+
+ if (remaining == 0) {
+ /* close the session */
+ jabber_ibb_session_close(sess);
+ purple_xfer_set_completed(xfer, TRUE);
+ purple_xfer_end(xfer);
+ } else {
+ /* send more... */
+ jabber_si_xfer_ibb_send_data(sess);
+ }
+}
+
+static void
+jabber_si_xfer_ibb_opened_cb(JabberIBBSession *sess)
+{
+ PurpleXfer *xfer = (PurpleXfer *) jabber_ibb_session_get_user_data(sess);
+ JabberSIXfer *jsx = (JabberSIXfer *) xfer->data;
+ JabberStream *js = jabber_ibb_session_get_js(sess);
+ PurpleConnection *gc = js->gc;
+ PurpleAccount *account = purple_connection_get_account(gc);
+
+ if (jabber_ibb_session_get_state(sess) == JABBER_IBB_SESSION_OPENED) {
+ const char *filename = purple_xfer_get_local_filename(xfer);
+ jsx->fp = g_fopen(filename, "rb");
+ if (jsx->fp == NULL) {
+ purple_debug_error("jabber", "Failed to open file %s for reading: %s\n",
+ filename, g_strerror(errno));
+ purple_xfer_error(purple_xfer_get_type(xfer), account,
+ jabber_ibb_session_get_who(sess),
+ _("Failed to open the file"));
+ purple_xfer_cancel_local(xfer);
+ return;
+ }
+
+ purple_xfer_start(xfer, 0, NULL, 0);
+ purple_xfer_set_bytes_sent(xfer, 0);
+ purple_xfer_update_progress(xfer);
+ jabber_si_xfer_ibb_send_data(sess);
+ } else {
+ /* error */
+ purple_xfer_error(purple_xfer_get_type(xfer), account,
+ jabber_ibb_session_get_who(sess),
+ _("Failed to open in-band bytestream"));
+ purple_xfer_end(xfer);
+ }
+}
+
+static void
+jabber_si_xfer_ibb_send_init(JabberStream *js, PurpleXfer *xfer)
+{
+ JabberSIXfer *jsx = (JabberSIXfer *) xfer->data;
+
+ purple_xfer_ref(xfer);
+
+ jsx->ibb_session = jabber_ibb_session_create(js, jsx->stream_id,
+ purple_xfer_get_remote_user(xfer), xfer);
+
+ if (jsx->ibb_session) {
+ /* should set callbacks here... */
+ jabber_ibb_session_set_opened_callback(jsx->ibb_session,
+ jabber_si_xfer_ibb_opened_cb);
+ jabber_ibb_session_set_data_sent_callback(jsx->ibb_session,
+ jabber_si_xfer_ibb_sent_cb);
+ jabber_ibb_session_set_closed_callback(jsx->ibb_session,
+ jabber_si_xfer_ibb_closed_cb);
+ jabber_ibb_session_set_error_callback(jsx->ibb_session,
+ jabber_si_xfer_ibb_error_cb);
+
+ /* open the IBB session */
+ jabber_ibb_session_open(jsx->ibb_session);
+
+ } else {
+ /* failed to create IBB session */
+ purple_debug_error("jabber",
+ "failed to initiate IBB session for file transfer\n");
+ purple_xfer_cancel_local(xfer);
+ }
+}
+
+static void jabber_si_xfer_send_method_cb(JabberStream *js, const char *from,
+ JabberIqType type, const char *id,
+ xmlnode *packet, gpointer data)
{
PurpleXfer *xfer = data;
xmlnode *si, *feature, *x, *field, *value;
+ gboolean found_method = FALSE;
if(!(si = xmlnode_get_child_with_namespace(packet, "si", "http://jabber.org/protocol/si"))) {
purple_xfer_cancel_remote(xfer);
@@ -880,20 +1223,33 @@ static void jabber_si_xfer_send_method_cb(JabberStream *js, xmlnode *packet,
for(field = xmlnode_get_child(x, "field"); field; field = xmlnode_get_next_twin(field)) {
const char *var = xmlnode_get_attrib(field, "var");
+ JabberSIXfer *jsx = (JabberSIXfer *) xfer->data;
if(var && !strcmp(var, "stream-method")) {
if((value = xmlnode_get_child(field, "value"))) {
char *val = xmlnode_get_data(value);
if(val && !strcmp(val, "http://jabber.org/protocol/bytestreams")) {
jabber_si_xfer_bytestreams_send_init(xfer);
- g_free(val);
- return;
+ jsx->stream_method |= STREAM_METHOD_BYTESTREAMS;
+ found_method = TRUE;
+ } else if (val && !strcmp(val, XEP_0047_NAMESPACE)) {
+ jsx->stream_method |= STREAM_METHOD_IBB;
+ if (!found_method) {
+ /* we haven't tried to init a bytestream session, yet
+ start IBB right away... */
+ jabber_si_xfer_ibb_send_init(js, xfer);
+ found_method = TRUE;
+ }
}
g_free(val);
}
}
}
- purple_xfer_cancel_remote(xfer);
+
+ if (!found_method) {
+ purple_xfer_cancel_remote(xfer);
+ }
+
}
static void jabber_si_xfer_send_request(PurpleXfer *xfer)
@@ -930,14 +1286,14 @@ static void jabber_si_xfer_send_request(PurpleXfer *xfer)
field = xmlnode_new_child(x, "field");
xmlnode_set_attrib(field, "var", "stream-method");
xmlnode_set_attrib(field, "type", "list-single");
+ /* maybe we should add an option to always skip bytestreams for people
+ behind troublesome firewalls */
option = xmlnode_new_child(field, "option");
value = xmlnode_new_child(option, "value");
xmlnode_insert_data(value, "http://jabber.org/protocol/bytestreams", -1);
- /*
option = xmlnode_new_child(field, "option");
value = xmlnode_new_child(option, "value");
xmlnode_insert_data(value, "http://jabber.org/protocol/ibb", -1);
- */
jabber_iq_set_callback(iq, jabber_si_xfer_send_method_cb, xfer);
@@ -951,38 +1307,71 @@ static void jabber_si_xfer_send_request(PurpleXfer *xfer)
static void jabber_si_xfer_free(PurpleXfer *xfer)
{
JabberSIXfer *jsx = xfer->data;
- JabberStream *js = jsx->js;
- js->file_transfers = g_list_remove(js->file_transfers, xfer);
+ if (jsx) {
+ JabberStream *js = jsx->js;
+
+ js->file_transfers = g_list_remove(js->file_transfers, xfer);
+
+ if (jsx->connect_data != NULL)
+ purple_proxy_connect_cancel(jsx->connect_data);
+ if (jsx->listen_data != NULL)
+ purple_network_listen_cancel(jsx->listen_data);
+ if (jsx->iq_id != NULL)
+ jabber_iq_remove_callback_by_id(js, jsx->iq_id);
+ if (jsx->local_streamhost_fd >= 0)
+ close(jsx->local_streamhost_fd);
+ if (purple_xfer_get_type(xfer) == PURPLE_XFER_SEND &&
+ xfer->fd >= 0) {
+ purple_debug_info("jabber", "remove port mapping\n");
+ purple_network_remove_port_mapping(xfer->fd);
+ }
+ if (jsx->connect_timeout > 0)
+ purple_timeout_remove(jsx->connect_timeout);
+ if (jsx->ibb_timeout_handle > 0)
+ purple_timeout_remove(jsx->ibb_timeout_handle);
+
+ if (jsx->streamhosts) {
+ g_list_foreach(jsx->streamhosts, jabber_si_free_streamhost, NULL);
+ g_list_free(jsx->streamhosts);
+ }
- if (jsx->connect_data != NULL)
- purple_proxy_connect_cancel(jsx->connect_data);
- if (jsx->listen_data != NULL)
- purple_network_listen_cancel(jsx->listen_data);
- if (jsx->iq_id != NULL)
- jabber_iq_remove_callback_by_id(js, jsx->iq_id);
- if (jsx->local_streamhost_fd >= 0)
- close(jsx->local_streamhost_fd);
- if (jsx->connect_timeout > 0)
- purple_timeout_remove(jsx->connect_timeout);
+ if (jsx->ibb_session) {
+ purple_debug_info("jabber",
+ "jabber_si_xfer_free: destroying IBB session\n");
+ jabber_ibb_session_destroy(jsx->ibb_session);
+ }
- if (jsx->streamhosts) {
- g_list_foreach(jsx->streamhosts, jabber_si_free_streamhost, NULL);
- g_list_free(jsx->streamhosts);
- }
+ if (jsx->fp) {
+ purple_debug_info("jabber",
+ "jabber_si_xfer_free: closing file for IBB transfer\n");
+ fclose(jsx->fp);
+ }
- g_free(jsx->stream_id);
- g_free(jsx->iq_id);
- /* XXX: free other stuff */
- g_free(jsx->rxqueue);
- g_free(jsx);
- xfer->data = NULL;
+ g_free(jsx->stream_id);
+ g_free(jsx->iq_id);
+ /* XXX: free other stuff */
+ g_free(jsx->rxqueue);
+ g_free(jsx);
+ xfer->data = NULL;
- purple_debug_info("jabber", "jabber_si_xfer_free(): freeing jsx %p", jsx);
+ purple_debug_info("jabber", "jabber_si_xfer_free(): freeing jsx %p\n", jsx);
+ }
}
+/*
+ * These four functions should only be called from the PurpleXfer functions
+ * (typically purple_xfer_cancel_(remote|local), purple_xfer_end, or
+ * purple_xfer_request_denied.
+ */
static void jabber_si_xfer_cancel_send(PurpleXfer *xfer)
{
+ JabberSIXfer *jsx = (JabberSIXfer *) xfer->data;
+
+ /* if there is an IBB session active, send close on that */
+ if (jsx->ibb_session) {
+ jabber_ibb_session_close(jsx->ibb_session);
+ }
jabber_si_xfer_free(xfer);
purple_debug(PURPLE_DEBUG_INFO, "jabber", "in jabber_si_xfer_cancel_send\n");
}
@@ -997,6 +1386,11 @@ static void jabber_si_xfer_request_denied(PurpleXfer *xfer)
static void jabber_si_xfer_cancel_recv(PurpleXfer *xfer)
{
+ JabberSIXfer *jsx = (JabberSIXfer *) xfer->data;
+ /* if there is an IBB session active, send close */
+ if (jsx->ibb_session) {
+ jabber_ibb_session_close(jsx->ibb_session);
+ }
jabber_si_xfer_free(xfer);
purple_debug(PURPLE_DEBUG_INFO, "jabber", "in jabber_si_xfer_cancel_recv\n");
}
@@ -1011,9 +1405,16 @@ static void jabber_si_xfer_end(PurpleXfer *xfer)
static void jabber_si_xfer_send_disco_cb(JabberStream *js, const char *who,
JabberCapabilities capabilities, gpointer data)
{
- PurpleXfer *xfer = data;
+ PurpleXfer *xfer = (PurpleXfer *) data;
+ JabberSIXfer *jsx = (JabberSIXfer *) xfer->data;
+
+ if (capabilities & JABBER_CAP_IBB) {
+ purple_debug_info("jabber",
+ "jabber_si_xfer_send_disco_cb: remote JID supports IBB\n");
+ jsx->stream_method |= STREAM_METHOD_IBB;
+ }
- if(capabilities & JABBER_CAP_SI_FILE_XFER) {
+ if (capabilities & JABBER_CAP_SI_FILE_XFER) {
jabber_si_xfer_send_request(xfer);
} else {
char *msg = g_strdup_printf(_("Unable to send file to %s, user does not support file transfers"), who);
@@ -1140,17 +1541,21 @@ static void jabber_si_xfer_init(PurpleXfer *xfer)
x = xmlnode_new_child(feature, "x");
xmlnode_set_namespace(x, "jabber:x:data");
xmlnode_set_attrib(x, "type", "submit");
-
field = xmlnode_new_child(x, "field");
xmlnode_set_attrib(field, "var", "stream-method");
- value = xmlnode_new_child(field, "value");
- if(jsx->stream_method & STREAM_METHOD_BYTESTREAMS)
+ /* we should maybe "remember" if bytestreams has failed before (in the
+ same session) with this JID, and only present IBB as an option to
+ avoid unnessesary timeout */
+ /* maybe we should have an account option to always just try IBB
+ for people who know their firewalls are very restrictive */
+ if (jsx->stream_method & STREAM_METHOD_BYTESTREAMS) {
+ value = xmlnode_new_child(field, "value");
xmlnode_insert_data(value, "http://jabber.org/protocol/bytestreams", -1);
- /*
- else if(jsx->stream_method & STREAM_METHOD_IBB)
- xmlnode_insert_data(value, "http://jabber.org/protocol/ibb", -1);
- */
+ } else if(jsx->stream_method & STREAM_METHOD_IBB) {
+ value = xmlnode_new_child(field, "value");
+ xmlnode_insert_data(value, "http://jabber.org/protocol/ibb", -1);
+ }
jabber_iq_send(iq);
}
@@ -1172,6 +1577,9 @@ PurpleXfer *jabber_si_new_xfer(PurpleConnection *gc, const char *who)
jsx->js = js;
jsx->local_streamhost_fd = -1;
+ jsx->ibb_session = NULL;
+ jsx->fp = NULL;
+
purple_xfer_set_init_fnc(xfer, jabber_si_xfer_init);
purple_xfer_set_cancel_send_fnc(xfer, jabber_si_xfer_cancel_send);
purple_xfer_set_end_fnc(xfer, jabber_si_xfer_end);
@@ -1198,17 +1606,15 @@ void jabber_si_xfer_send(PurpleConnection *gc, const char *who, const char *file
purple_xfer_request(xfer);
}
-void jabber_si_parse(JabberStream *js, xmlnode *packet)
+void jabber_si_parse(JabberStream *js, const char *from, JabberIqType type,
+ const char *id, xmlnode *si)
{
JabberSIXfer *jsx;
PurpleXfer *xfer;
- xmlnode *si, *file, *feature, *x, *field, *option, *value;
- const char *stream_id, *filename, *filesize_c, *profile, *from;
+ xmlnode *file, *feature, *x, *field, *option, *value;
+ const char *stream_id, *filename, *filesize_c, *profile;
size_t filesize = 0;
- if(!(si = xmlnode_get_child(packet, "si")))
- return;
-
if(!(profile = xmlnode_get_attrib(si, "profile")) ||
strcmp(profile, "http://jabber.org/protocol/si/profile/file-transfer"))
return;
@@ -1231,7 +1637,7 @@ void jabber_si_parse(JabberStream *js, xmlnode *packet)
if(!(x = xmlnode_get_child_with_namespace(feature, "x", "jabber:x:data")))
return;
- if(!(from = xmlnode_get_attrib(packet, "from")))
+ if(!from)
return;
/* if they've already sent us this file transfer with the same damn id
@@ -1243,6 +1649,8 @@ void jabber_si_parse(JabberStream *js, xmlnode *packet)
jsx = g_new0(JabberSIXfer, 1);
jsx->local_streamhost_fd = -1;
+ jsx->ibb_session = NULL;
+
for(field = xmlnode_get_child(x, "field"); field; field = xmlnode_get_next_twin(field)) {
const char *var = xmlnode_get_attrib(field, "var");
if(var && !strcmp(var, "stream-method")) {
@@ -1253,10 +1661,8 @@ void jabber_si_parse(JabberStream *js, xmlnode *packet)
if((val = xmlnode_get_data(value))) {
if(!strcmp(val, "http://jabber.org/protocol/bytestreams")) {
jsx->stream_method |= STREAM_METHOD_BYTESTREAMS;
- /*
} else if(!strcmp(val, "http://jabber.org/protocol/ibb")) {
jsx->stream_method |= STREAM_METHOD_IBB;
- */
}
g_free(val);
}
@@ -1272,26 +1678,38 @@ void jabber_si_parse(JabberStream *js, xmlnode *packet)
jsx->js = js;
jsx->stream_id = g_strdup(stream_id);
- jsx->iq_id = g_strdup(xmlnode_get_attrib(packet, "id"));
+ jsx->iq_id = g_strdup(id);
xfer = purple_xfer_new(js->gc->account, PURPLE_XFER_RECEIVE, from);
- if (xfer)
- {
- xfer->data = jsx;
+ g_return_if_fail(xfer != NULL);
- purple_xfer_set_filename(xfer, filename);
- if(filesize > 0)
- purple_xfer_set_size(xfer, filesize);
+ xfer->data = jsx;
- purple_xfer_set_init_fnc(xfer, jabber_si_xfer_init);
- purple_xfer_set_request_denied_fnc(xfer, jabber_si_xfer_request_denied);
- purple_xfer_set_cancel_recv_fnc(xfer, jabber_si_xfer_cancel_recv);
- purple_xfer_set_end_fnc(xfer, jabber_si_xfer_end);
+ purple_xfer_set_filename(xfer, filename);
+ if(filesize > 0)
+ purple_xfer_set_size(xfer, filesize);
- js->file_transfers = g_list_append(js->file_transfers, xfer);
+ purple_xfer_set_init_fnc(xfer, jabber_si_xfer_init);
+ purple_xfer_set_request_denied_fnc(xfer, jabber_si_xfer_request_denied);
+ purple_xfer_set_cancel_recv_fnc(xfer, jabber_si_xfer_cancel_recv);
+ purple_xfer_set_end_fnc(xfer, jabber_si_xfer_end);
- purple_xfer_request(xfer);
- }
+ js->file_transfers = g_list_append(js->file_transfers, xfer);
+
+ purple_xfer_request(xfer);
+}
+
+void
+jabber_si_init(void)
+{
+ jabber_iq_register_handler("si", "http://jabber.org/protocol/si", jabber_si_parse);
+
+ jabber_ibb_register_open_handler(jabber_si_xfer_ibb_open_cb);
}
+void
+jabber_si_uninit(void)
+{
+ jabber_ibb_unregister_open_handler(jabber_si_xfer_ibb_open_cb);
+}
diff --git a/libpurple/protocols/jabber/si.h b/libpurple/protocols/jabber/si.h
index c7f0ff9526..8186d94554 100644
--- a/libpurple/protocols/jabber/si.h
+++ b/libpurple/protocols/jabber/si.h
@@ -1,5 +1,5 @@
/**
- * @file jutil.h utility functions
+ * @file si.h SI transfer functions
*
* purple
*
@@ -19,16 +19,20 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
*/
-#ifndef _PURPLE_JABBER_SI_H_
-#define _PURPLE_JABBER_SI_H_
+#ifndef PURPLE_JABBER_SI_H_
+#define PURPLE_JABBER_SI_H_
#include "ft.h"
#include "jabber.h"
-void jabber_bytestreams_parse(JabberStream *js, xmlnode *packet);
-void jabber_si_parse(JabberStream *js, xmlnode *packet);
+void jabber_bytestreams_parse(JabberStream *js, const char *from,
+ JabberIqType type, const char *id, xmlnode *query);
+void jabber_si_parse(JabberStream *js, const char *from, JabberIqType type,
+ const char *id, xmlnode *si);
PurpleXfer *jabber_si_new_xfer(PurpleConnection *gc, const char *who);
void jabber_si_xfer_send(PurpleConnection *gc, const char *who, const char *file);
+void jabber_si_init(void);
+void jabber_si_uninit(void);
-#endif /* _PURPLE_JABBER_SI_H_ */
+#endif /* PURPLE_JABBER_SI_H_ */
diff --git a/libpurple/protocols/jabber/useravatar.c b/libpurple/protocols/jabber/useravatar.c
new file mode 100644
index 0000000000..b51aad60aa
--- /dev/null
+++ b/libpurple/protocols/jabber/useravatar.c
@@ -0,0 +1,387 @@
+/*
+ * purple - Jabber Protocol Plugin
+ *
+ * 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 "internal.h"
+
+#include "useravatar.h"
+#include "pep.h"
+#include "debug.h"
+
+#define MAX_HTTP_BUDDYICON_BYTES (200 * 1024)
+
+static void update_buddy_metadata(JabberStream *js, const char *from, xmlnode *items);
+
+void jabber_avatar_init(void)
+{
+ jabber_add_feature(NS_AVATAR_1_1_METADATA,
+ jabber_pep_namespace_only_when_pep_enabled_cb);
+ jabber_add_feature(NS_AVATAR_1_1_DATA,
+ jabber_pep_namespace_only_when_pep_enabled_cb);
+
+ jabber_pep_register_handler(NS_AVATAR_1_1_METADATA,
+ update_buddy_metadata);
+}
+
+static void
+remove_avatar_0_12_nodes(JabberStream *js)
+{
+#if 0
+ /* See note below for why this is #if 0'd */
+
+ /* Publish an empty avatar according to the XEP-0084 v0.12 semantics */
+ xmlnode *publish, *item, *metadata;
+ /* publish the metadata */
+ publish = xmlnode_new("publish");
+ xmlnode_set_attrib(publish, "node", NS_AVATAR_0_12_METADATA);
+
+ item = xmlnode_new_child(publish, "item");
+ xmlnode_set_attrib(item, "id", "stop");
+
+ metadata = xmlnode_new_child(item, "metadata");
+ xmlnode_set_namespace(metadata, NS_AVATAR_0_12_METADATA);
+
+ xmlnode_new_child(metadata, "stop");
+
+ /* publish */
+ jabber_pep_publish(js, publish);
+#endif
+
+ /*
+ * This causes ejabberd 2.0.0 to kill the connection unceremoniously.
+ * See https://support.process-one.net/browse/EJAB-623. When adiumx.com
+ * was upgraded, the issue went away.
+ *
+ * I think it makes a lot of sense to not have an avatar at the old
+ * node instead of having something interpreted as "no avatar". When
+ * a contact with an older client logs in, in the latter situation,
+ * there's a race between interpreting the <presence/> vcard-temp:x:update
+ * avatar (non-empty) and the XEP-0084 v0.12 avatar (empty, so show no
+ * avatar for the buddy) which leads to unhappy and confused users.
+ *
+ * A deluge of frustrating "Read error" bug reports may change my mind
+ * about this.
+ * --darkrain42
+ */
+ jabber_pep_delete_node(js, NS_AVATAR_0_12_METADATA);
+ jabber_pep_delete_node(js, NS_AVATAR_0_12_DATA);
+}
+
+void jabber_avatar_set(JabberStream *js, PurpleStoredImage *img)
+{
+ xmlnode *publish, *metadata, *item;
+
+ if (!js->pep)
+ return;
+
+ /* Hmmm, not sure if this is worth the traffic, but meh */
+ remove_avatar_0_12_nodes(js);
+
+ if (!img) {
+ publish = xmlnode_new("publish");
+ xmlnode_set_attrib(publish, "node", NS_AVATAR_1_1_METADATA);
+
+ item = xmlnode_new_child(publish, "item");
+ metadata = xmlnode_new_child(item, "metadata");
+ xmlnode_set_namespace(metadata, NS_AVATAR_1_1_METADATA);
+
+ /* publish */
+ jabber_pep_publish(js, publish);
+ } else {
+ /*
+ * TODO: This is pretty gross. The Jabber PRPL really shouldn't
+ * do voodoo to try to determine the image type, height
+ * and width.
+ */
+ /* A PNG header, including the IHDR, but nothing else */
+ const struct {
+ guchar signature[8]; /* must be hex 89 50 4E 47 0D 0A 1A 0A */
+ struct {
+ guint32 length; /* must be 0x0d */
+ guchar type[4]; /* must be 'I' 'H' 'D' 'R' */
+ guint32 width;
+ guint32 height;
+ guchar bitdepth;
+ guchar colortype;
+ guchar compression;
+ guchar filter;
+ guchar interlace;
+ } ihdr;
+ } *png = purple_imgstore_get_data(img); /* ATTN: this is in network byte order! */
+
+ /* check if the data is a valid png file (well, at least to some extent) */
+ if(png->signature[0] == 0x89 &&
+ png->signature[1] == 0x50 &&
+ png->signature[2] == 0x4e &&
+ png->signature[3] == 0x47 &&
+ png->signature[4] == 0x0d &&
+ png->signature[5] == 0x0a &&
+ png->signature[6] == 0x1a &&
+ png->signature[7] == 0x0a &&
+ ntohl(png->ihdr.length) == 0x0d &&
+ png->ihdr.type[0] == 'I' &&
+ png->ihdr.type[1] == 'H' &&
+ png->ihdr.type[2] == 'D' &&
+ png->ihdr.type[3] == 'R') {
+ /* parse PNG header to get the size of the image (yes, this is required) */
+ guint32 width = ntohl(png->ihdr.width);
+ guint32 height = ntohl(png->ihdr.height);
+ xmlnode *data, *info;
+ char *lengthstring, *widthstring, *heightstring;
+
+ /* compute the sha1 hash */
+ char *hash = jabber_calculate_data_sha1sum(purple_imgstore_get_data(img),
+ purple_imgstore_get_size(img));
+ char *base64avatar = purple_base64_encode(purple_imgstore_get_data(img),
+ purple_imgstore_get_size(img));
+
+ publish = xmlnode_new("publish");
+ xmlnode_set_attrib(publish, "node", NS_AVATAR_1_1_DATA);
+
+ item = xmlnode_new_child(publish, "item");
+ xmlnode_set_attrib(item, "id", hash);
+
+ data = xmlnode_new_child(item, "data");
+ xmlnode_set_namespace(data, NS_AVATAR_1_1_DATA);
+
+ xmlnode_insert_data(data, base64avatar, -1);
+ /* publish the avatar itself */
+ jabber_pep_publish(js, publish);
+
+ g_free(base64avatar);
+
+ lengthstring = g_strdup_printf("%" G_GSIZE_FORMAT,
+ purple_imgstore_get_size(img));
+ widthstring = g_strdup_printf("%u", width);
+ heightstring = g_strdup_printf("%u", height);
+
+ /* publish the metadata */
+ publish = xmlnode_new("publish");
+ xmlnode_set_attrib(publish, "node", NS_AVATAR_1_1_METADATA);
+
+ item = xmlnode_new_child(publish, "item");
+ xmlnode_set_attrib(item, "id", hash);
+
+ metadata = xmlnode_new_child(item, "metadata");
+ xmlnode_set_namespace(metadata, NS_AVATAR_1_1_METADATA);
+
+ info = xmlnode_new_child(metadata, "info");
+ xmlnode_set_attrib(info, "id", hash);
+ xmlnode_set_attrib(info, "type", "image/png");
+ xmlnode_set_attrib(info, "bytes", lengthstring);
+ xmlnode_set_attrib(info, "width", widthstring);
+ xmlnode_set_attrib(info, "height", heightstring);
+
+ jabber_pep_publish(js, publish);
+
+ g_free(lengthstring);
+ g_free(widthstring);
+ g_free(heightstring);
+ g_free(hash);
+ } else {
+ purple_debug_error("jabber", "Cannot set PEP avatar to non-PNG data\n");
+ }
+ }
+}
+
+static void
+do_got_own_avatar_0_12_cb(JabberStream *js, const char *from, xmlnode *items)
+{
+ if (items)
+ /* It wasn't an error (i.e. 'item-not-found') */
+ remove_avatar_0_12_nodes(js);
+}
+
+static void
+do_got_own_avatar_cb(JabberStream *js, const char *from, xmlnode *items)
+{
+ xmlnode *item = NULL, *metadata = NULL, *info = NULL;
+ PurpleAccount *account = purple_connection_get_account(js->gc);
+ const char *server_hash = NULL;
+
+ if (items && (item = xmlnode_get_child(items, "item")) &&
+ (metadata = xmlnode_get_child(item, "metadata")) &&
+ (info = xmlnode_get_child(metadata, "info"))) {
+ server_hash = xmlnode_get_attrib(info, "id");
+ }
+
+ if (items && !metadata)
+ return;
+
+ /* Publish ours if it's different than the server's */
+ if (!purple_strequal(server_hash, js->initial_avatar_hash)) {
+ PurpleStoredImage *img = purple_buddy_icons_find_account_icon(account);
+ jabber_avatar_set(js, img);
+ purple_imgstore_unref(img);
+ }
+}
+
+void jabber_avatar_fetch_mine(JabberStream *js)
+{
+ char *jid = g_strdup_printf("%s@%s", js->user->node, js->user->domain);
+ jabber_pep_request_item(js, jid, NS_AVATAR_0_12_METADATA, NULL,
+ do_got_own_avatar_0_12_cb);
+ jabber_pep_request_item(js, jid, NS_AVATAR_1_1_METADATA, NULL,
+ do_got_own_avatar_cb);
+ g_free(jid);
+}
+
+typedef struct _JabberBuddyAvatarUpdateURLInfo {
+ JabberStream *js;
+ char *from;
+ char *id;
+} JabberBuddyAvatarUpdateURLInfo;
+
+static void
+do_buddy_avatar_update_fromurl(PurpleUtilFetchUrlData *url_data,
+ gpointer user_data, const gchar *url_text,
+ gsize len, const gchar *error_message)
+{
+ JabberBuddyAvatarUpdateURLInfo *info = user_data;
+ if(!url_text) {
+ purple_debug(PURPLE_DEBUG_ERROR, "jabber",
+ "do_buddy_avatar_update_fromurl got error \"%s\"",
+ error_message);
+ goto out;
+ }
+
+ purple_buddy_icons_set_for_user(purple_connection_get_account(info->js->gc), info->from, (void*)url_text, len, info->id);
+
+out:
+ g_free(info->from);
+ g_free(info->id);
+ g_free(info);
+}
+
+static void
+do_buddy_avatar_update_data(JabberStream *js, const char *from, xmlnode *items)
+{
+ xmlnode *item, *data;
+ const char *checksum;
+ char *b64data;
+ void *img;
+ size_t size;
+ if(!items)
+ return;
+
+ item = xmlnode_get_child(items, "item");
+ if(!item)
+ return;
+
+ data = xmlnode_get_child(item, "data");
+ if(!data)
+ return;
+
+ checksum = xmlnode_get_attrib(item,"id");
+ if(!checksum)
+ return;
+
+ b64data = xmlnode_get_data(data);
+ if(!b64data)
+ return;
+
+ img = purple_base64_decode(b64data, &size);
+ if(!img) {
+ g_free(b64data);
+ return;
+ }
+
+ purple_buddy_icons_set_for_user(purple_connection_get_account(js->gc), from, img, size, checksum);
+ g_free(b64data);
+}
+
+static void
+update_buddy_metadata(JabberStream *js, const char *from, xmlnode *items)
+{
+ PurpleBuddy *buddy = purple_find_buddy(purple_connection_get_account(js->gc), from);
+ const char *checksum;
+ xmlnode *item, *metadata;
+ if(!buddy)
+ return;
+
+ if (!items)
+ return;
+
+ item = xmlnode_get_child(items,"item");
+ if (!item)
+ return;
+
+ metadata = xmlnode_get_child(item, "metadata");
+ if(!metadata)
+ return;
+
+ checksum = purple_buddy_icons_get_checksum_for_user(buddy);
+
+ /* <stop/> was the pre-v1.1 method of publishing an empty avatar */
+ if(xmlnode_get_child(metadata, "stop")) {
+ purple_buddy_icons_set_for_user(purple_connection_get_account(js->gc), from, NULL, 0, NULL);
+ } else {
+ xmlnode *info, *goodinfo = NULL;
+ gboolean has_children = FALSE;
+
+ /* iterate over all info nodes to get one we can use */
+ for(info = metadata->child; info; info = info->next) {
+ if(info->type == XMLNODE_TYPE_TAG)
+ has_children = TRUE;
+ if(info->type == XMLNODE_TYPE_TAG && !strcmp(info->name,"info")) {
+ const char *type = xmlnode_get_attrib(info,"type");
+ const char *id = xmlnode_get_attrib(info,"id");
+
+ if(checksum && id && !strcmp(id, checksum)) {
+ /* we already have that avatar, so we don't have to do anything */
+ goodinfo = NULL;
+ break;
+ }
+ /* We'll only pick the png one for now. It's a very nice image format anyways. */
+ if(type && id && !goodinfo && !strcmp(type, "image/png"))
+ goodinfo = info;
+ }
+ }
+ if(has_children == FALSE) {
+ purple_buddy_icons_set_for_user(purple_connection_get_account(js->gc), from, NULL, 0, NULL);
+ } else if(goodinfo) {
+ const char *url = xmlnode_get_attrib(goodinfo, "url");
+ const char *id = xmlnode_get_attrib(goodinfo,"id");
+
+ /* the avatar might either be stored in a pep node, or on a HTTP(S) URL */
+ if(!url) {
+ jabber_pep_request_item(js, from, NS_AVATAR_1_1_DATA, id,
+ do_buddy_avatar_update_data);
+ } else {
+ PurpleUtilFetchUrlData *url_data;
+ JabberBuddyAvatarUpdateURLInfo *info = g_new0(JabberBuddyAvatarUpdateURLInfo, 1);
+ info->js = js;
+
+ url_data = purple_util_fetch_url_len(url, TRUE, NULL, TRUE,
+ MAX_HTTP_BUDDYICON_BYTES,
+ do_buddy_avatar_update_fromurl, info);
+ if (url_data) {
+ info->from = g_strdup(from);
+ info->id = g_strdup(id);
+ js->url_datas = g_slist_prepend(js->url_datas, url_data);
+ } else
+ g_free(info);
+
+ }
+ }
+ }
+}
diff --git a/libpurple/protocols/jabber/useravatar.h b/libpurple/protocols/jabber/useravatar.h
new file mode 100644
index 0000000000..0ae77dfdfa
--- /dev/null
+++ b/libpurple/protocols/jabber/useravatar.h
@@ -0,0 +1,43 @@
+/*
+ * purple - Jabber Protocol Plugin
+ *
+ * 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 _PURPLE_JABBER_USERAVATAR_H_
+#define _PURPLE_JABBER_USERAVATAR_H_
+
+#include "jabber.h"
+#include "imgstore.h"
+
+/* Implementation of XEP-0084 */
+
+#define NS_AVATAR_0_12_DATA "http://www.xmpp.org/extensions/xep-0084.html#ns-data"
+#define NS_AVATAR_0_12_METADATA "http://www.xmpp.org/extensions/xep-0084.html#ns-metadata"
+
+#define NS_AVATAR_1_1_DATA "urn:xmpp:avatar:data"
+#define NS_AVATAR_1_1_METADATA "urn:xmpp:avatar:metadata"
+
+void jabber_avatar_init(void);
+void jabber_avatar_set(JabberStream *js, PurpleStoredImage *img);
+
+void jabber_avatar_fetch_mine(JabberStream *js);
+
+#endif /* _PURPLE_JABBER_USERAVATAR_H_ */
diff --git a/libpurple/protocols/jabber/usermood.c b/libpurple/protocols/jabber/usermood.c
index 3ff09d0402..0caaa2fd83 100644
--- a/libpurple/protocols/jabber/usermood.c
+++ b/libpurple/protocols/jabber/usermood.c
@@ -103,7 +103,7 @@ static void jabber_mood_cb(JabberStream *js, const char *from, xmlnode *items) {
/* ignore the mood of people not on our buddy list */
if (!buddy || !item)
return;
-
+
mood = xmlnode_get_child_with_namespace(item, "mood", "http://jabber.org/protocol/mood");
if (!mood)
return;
@@ -141,8 +141,8 @@ static void jabber_mood_cb(JabberStream *js, const char *from, xmlnode *items) {
}
void jabber_mood_init(void) {
- jabber_add_feature("mood", "http://jabber.org/protocol/mood", jabber_pep_namespace_only_when_pep_enabled_cb);
- jabber_pep_register_handler("moodn", "http://jabber.org/protocol/mood", jabber_mood_cb);
+ jabber_add_feature("http://jabber.org/protocol/mood", jabber_pep_namespace_only_when_pep_enabled_cb);
+ jabber_pep_register_handler("http://jabber.org/protocol/mood", jabber_mood_cb);
}
static void do_mood_set_from_fields(PurpleConnection *gc, PurpleRequestFields *fields) {
@@ -179,10 +179,10 @@ static void do_mood_set_mood(PurplePluginAction *action) {
field = purple_request_field_choice_new("mood",
_("Mood"), 0);
-
+
for(i = 0; moodstrings[i]; ++i)
purple_request_field_choice_add(field, _(moodstrings[i]));
-
+
purple_request_field_set_required(field, TRUE);
purple_request_field_group_add_field(group, field);
@@ -190,7 +190,7 @@ static void do_mood_set_mood(PurplePluginAction *action) {
_("Description"), NULL,
FALSE);
purple_request_field_group_add_field(group, field);
-
+
purple_request_fields(gc, _("Edit User Mood"),
_("Edit User Mood"),
_("Please select your mood from the list."),
@@ -199,7 +199,7 @@ static void do_mood_set_mood(PurplePluginAction *action) {
_("Cancel"), NULL,
purple_connection_get_account(gc), NULL, NULL,
gc);
-
+
}
void jabber_mood_init_action(GList **m) {
@@ -222,7 +222,7 @@ void jabber_mood_set(JabberStream *js, const char *mood, const char *text) {
xmlnode *textnode = xmlnode_new_child(moodnode, "text");
xmlnode_insert_data(textnode, text, -1);
}
-
+
jabber_pep_publish(js, publish);
/* publish is freed by jabber_pep_publish -> jabber_iq_send -> jabber_iq_free
(yay for well-defined memory management rules) */
diff --git a/libpurple/protocols/jabber/usermood.h b/libpurple/protocols/jabber/usermood.h
index 425c8065ca..ebea275ba9 100644
--- a/libpurple/protocols/jabber/usermood.h
+++ b/libpurple/protocols/jabber/usermood.h
@@ -19,8 +19,8 @@
*
*/
-#ifndef _PURPLE_JABBER_USERMOOD_H_
-#define _PURPLE_JABBER_USERMOOD_H_
+#ifndef PURPLE_JABBER_USERMOOD_H_
+#define PURPLE_JABBER_USERMOOD_H_
#include "jabber.h"
@@ -34,4 +34,4 @@ void jabber_mood_set(JabberStream *js,
const char *mood, /* must be one of the valid strings defined in the XEP */
const char *text /* might be NULL */);
-#endif /* _PURPLE_JABBER_USERMOOD_H_ */
+#endif /* PURPLE_JABBER_USERMOOD_H_ */
diff --git a/libpurple/protocols/jabber/usernick.c b/libpurple/protocols/jabber/usernick.c
index 618d493aed..7a6a5c0c5a 100644
--- a/libpurple/protocols/jabber/usernick.c
+++ b/libpurple/protocols/jabber/usernick.c
@@ -34,11 +34,11 @@ static void jabber_nick_cb(JabberStream *js, const char *from, xmlnode *items) {
JabberBuddy *buddy = jabber_buddy_find(js, from, FALSE);
xmlnode *nick;
char *nickname = NULL;
-
- /* ignore the tune of people not on our buddy list */
+
+ /* ignore the nick of people not on our buddy list */
if (!buddy || !item)
return;
-
+
nick = xmlnode_get_child_with_namespace(item, "nick", "http://jabber.org/protocol/nick");
if (!nick)
return;
@@ -49,15 +49,15 @@ static void jabber_nick_cb(JabberStream *js, const char *from, xmlnode *items) {
static void do_nick_set(JabberStream *js, const char *nick) {
xmlnode *publish, *nicknode;
-
+
publish = xmlnode_new("publish");
xmlnode_set_attrib(publish,"node","http://jabber.org/protocol/nick");
nicknode = xmlnode_new_child(xmlnode_new_child(publish, "item"), "nick");
xmlnode_set_namespace(nicknode, "http://jabber.org/protocol/nick");
-
+
if(nick && nick[0] != '\0')
xmlnode_insert_data(nicknode, nick, -1);
-
+
jabber_pep_publish(js, publish);
/* publish is freed by jabber_pep_publish -> jabber_iq_send -> jabber_iq_free
(yay for well-defined memory management rules) */
@@ -65,14 +65,17 @@ static void do_nick_set(JabberStream *js, const char *nick) {
static void do_nick_got_own_nick_cb(JabberStream *js, const char *from, xmlnode *items) {
char *oldnickname = NULL;
- xmlnode *item = xmlnode_get_child(items,"item");
+ xmlnode *item = NULL;
+ if (items)
+ item = xmlnode_get_child(items,"item");
+
if(item) {
xmlnode *nick = xmlnode_get_child_with_namespace(item,"nick","http://jabber.org/protocol/nick");
if(nick)
oldnickname = xmlnode_get_data(nick);
}
-
+
purple_request_input(js->gc, _("Set User Nickname"), _("Please specify a new nickname for you."),
_("This information is visible to all contacts on your contact list, so choose something appropriate."),
oldnickname, FALSE, FALSE, NULL, _("Set"), PURPLE_CALLBACK(do_nick_set), _("Cancel"), NULL,
@@ -84,7 +87,7 @@ static void do_nick_set_nick(PurplePluginAction *action) {
PurpleConnection *gc = (PurpleConnection *) action->context;
JabberStream *js = gc->proto_data;
char *jid = g_strdup_printf("%s@%s", js->user->node, js->user->domain);
-
+
/* since the nickname might have been changed by another resource of this account, we always have to request the old one
from the server to present as the default for the new one */
jabber_pep_request_item(js, jid, "http://jabber.org/protocol/nick", NULL, do_nick_got_own_nick_cb);
@@ -92,8 +95,8 @@ static void do_nick_set_nick(PurplePluginAction *action) {
}
void jabber_nick_init(void) {
- jabber_add_feature("nick", "http://jabber.org/protocol/nick", jabber_pep_namespace_only_when_pep_enabled_cb);
- jabber_pep_register_handler("nickn", "http://jabber.org/protocol/nick", jabber_nick_cb);
+ jabber_add_feature("http://jabber.org/protocol/nick", jabber_pep_namespace_only_when_pep_enabled_cb);
+ jabber_pep_register_handler("http://jabber.org/protocol/nick", jabber_nick_cb);
}
void jabber_nick_init_action(GList **m) {
diff --git a/libpurple/protocols/jabber/usernick.h b/libpurple/protocols/jabber/usernick.h
index 60a7e03026..f3f000041a 100644
--- a/libpurple/protocols/jabber/usernick.h
+++ b/libpurple/protocols/jabber/usernick.h
@@ -19,8 +19,8 @@
*
*/
-#ifndef _PURPLE_JABBER_USERNICK_H_
-#define _PURPLE_JABBER_USERNICK_H_
+#ifndef PURPLE_JABBER_USERNICK_H_
+#define PURPLE_JABBER_USERNICK_H_
#include "jabber.h"
@@ -29,4 +29,4 @@
void jabber_nick_init(void);
void jabber_nick_init_action(GList **m);
-#endif /* _PURPLE_JABBER_USERNICK_H_ */
+#endif /* PURPLE_JABBER_USERNICK_H_ */
diff --git a/libpurple/protocols/jabber/usertune.c b/libpurple/protocols/jabber/usertune.c
index 92d06d3168..0c1996cc0e 100644
--- a/libpurple/protocols/jabber/usertune.c
+++ b/libpurple/protocols/jabber/usertune.c
@@ -109,19 +109,19 @@ static void jabber_tune_cb(JabberStream *js, const char *from, xmlnode *items) {
}
void jabber_tune_init(void) {
- jabber_add_feature("tune", "http://jabber.org/protocol/tune", jabber_pep_namespace_only_when_pep_enabled_cb);
- jabber_pep_register_handler("tunen", "http://jabber.org/protocol/tune", jabber_tune_cb);
+ jabber_add_feature("http://jabber.org/protocol/tune", jabber_pep_namespace_only_when_pep_enabled_cb);
+ jabber_pep_register_handler("http://jabber.org/protocol/tune", jabber_tune_cb);
}
void jabber_tune_set(PurpleConnection *gc, const PurpleJabberTuneInfo *tuneinfo) {
xmlnode *publish, *tunenode;
JabberStream *js = gc->proto_data;
-
+
publish = xmlnode_new("publish");
xmlnode_set_attrib(publish,"node","http://jabber.org/protocol/tune");
tunenode = xmlnode_new_child(xmlnode_new_child(publish, "item"), "tune");
xmlnode_set_namespace(tunenode, "http://jabber.org/protocol/tune");
-
+
if(tuneinfo) {
if(tuneinfo->artist && tuneinfo->artist[0] != '\0')
xmlnode_insert_data(xmlnode_new_child(tunenode, "artist"),tuneinfo->artist,-1);
@@ -139,7 +139,7 @@ void jabber_tune_set(PurpleConnection *gc, const PurpleJabberTuneInfo *tuneinfo)
if(tuneinfo->track && tuneinfo->track[0] != '\0')
xmlnode_insert_data(xmlnode_new_child(tunenode, "track"),tuneinfo->track,-1);
}
-
+
jabber_pep_publish(js, publish);
/* publish is freed by jabber_pep_publish -> jabber_iq_send -> jabber_iq_free
(yay for well-defined memory management rules) */
diff --git a/libpurple/protocols/jabber/usertune.h b/libpurple/protocols/jabber/usertune.h
index 9457b29480..8b72923c1b 100644
--- a/libpurple/protocols/jabber/usertune.h
+++ b/libpurple/protocols/jabber/usertune.h
@@ -19,8 +19,8 @@
*
*/
-#ifndef _PURPLE_JABBER_USERTUNE_H_
-#define _PURPLE_JABBER_USERTUNE_H_
+#ifndef PURPLE_JABBER_USERTUNE_H_
+#define PURPLE_JABBER_USERTUNE_H_
#include "jabber.h"
@@ -40,4 +40,4 @@ void jabber_tune_init(void);
void jabber_tune_set(PurpleConnection *gc, const PurpleJabberTuneInfo *tuneinfo);
-#endif /* _PURPLE_JABBER_USERTUNE_H_ */
+#endif /* PURPLE_JABBER_USERTUNE_H_ */
diff --git a/libpurple/protocols/jabber/xdata.c b/libpurple/protocols/jabber/xdata.c
index 9eff9a84f9..3a1914fc32 100644
--- a/libpurple/protocols/jabber/xdata.c
+++ b/libpurple/protocols/jabber/xdata.c
@@ -153,11 +153,12 @@ static void jabber_x_data_ok_cb(struct jabber_x_data_data *data, PurpleRequestFi
}
g_free(data);
- if (hasActions) {
+ if (hasActions)
cb(js, result, actionhandle, user_data);
- g_free(actionhandle);
- } else
+ else
((jabber_x_data_cb)cb)(js, result, user_data);
+
+ g_free(actionhandle);
}
static void jabber_x_data_cancel_cb(struct jabber_x_data_data *data, PurpleRequestFields *fields) {
@@ -372,7 +373,7 @@ void *jabber_x_data_request_with_actions(JabberStream *js, xmlnode *packet, GLis
if(field && xmlnode_get_child(fn, "required"))
purple_request_field_set_required(field,TRUE);
}
-
+
if(actions != NULL) {
PurpleRequestField *actionfield;
GList *action;
@@ -382,7 +383,7 @@ void *jabber_x_data_request_with_actions(JabberStream *js, xmlnode *packet, GLis
for(action = actions; action; action = g_list_next(action)) {
JabberXDataAction *a = action->data;
-
+
purple_request_field_choice_add(actionfield, a->name);
data->actions = g_list_append(data->actions, g_strdup(a->handle));
}
diff --git a/libpurple/protocols/jabber/xdata.h b/libpurple/protocols/jabber/xdata.h
index e99dcaf482..c0cba5b931 100644
--- a/libpurple/protocols/jabber/xdata.h
+++ b/libpurple/protocols/jabber/xdata.h
@@ -19,8 +19,8 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
*/
-#ifndef _PURPLE_JABBER_XDATA_H_
-#define _PURPLE_JABBER_XDATA_H_
+#ifndef PURPLE_JABBER_XDATA_H_
+#define PURPLE_JABBER_XDATA_H_
#include "jabber.h"
#include "xmlnode.h"
@@ -35,4 +35,4 @@ typedef void (*jabber_x_data_action_cb)(JabberStream *js, xmlnode *result, const
void *jabber_x_data_request(JabberStream *js, xmlnode *packet, jabber_x_data_cb cb, gpointer user_data);
void *jabber_x_data_request_with_actions(JabberStream *js, xmlnode *packet, GList *actions, int defaultaction, jabber_x_data_action_cb cb, gpointer user_data);
-#endif /* _PURPLE_JABBER_XDATA_H_ */
+#endif /* PURPLE_JABBER_XDATA_H_ */
diff --git a/libpurple/protocols/msn/cmdproc.c b/libpurple/protocols/msn/cmdproc.c
index e487c77a66..49db28a3b3 100644
--- a/libpurple/protocols/msn/cmdproc.c
+++ b/libpurple/protocols/msn/cmdproc.c
@@ -117,8 +117,10 @@ msn_cmdproc_send_trans(MsnCmdProc *cmdproc, MsnTransaction *trans)
servconn = cmdproc->servconn;
- if (!servconn->connected)
+ if (!servconn->connected) {
+ /* TODO: Need to free trans */
return;
+ }
msn_history_add(cmdproc->history, trans);
diff --git a/libpurple/protocols/msn/contact.c b/libpurple/protocols/msn/contact.c
index 0e83a10242..20479bddaf 100644
--- a/libpurple/protocols/msn/contact.c
+++ b/libpurple/protocols/msn/contact.c
@@ -357,29 +357,36 @@ msn_parse_each_member(MsnSession *session, xmlnode *member, const char *node,
MsnUser *user = msn_userlist_find_add_user(session->userlist, passport, NULL);
xmlnode *annotation;
guint nid = MSN_NETWORK_UNKNOWN;
-
- /* For EmailMembers, the network must be found in the annotations. */
- if (!strcmp(node, "PassportName")) {
- nid = MSN_NETWORK_PASSPORT;
- } else {
- for (annotation = xmlnode_get_child(member, "Annotations/Annotation");
- annotation;
- annotation = xmlnode_get_next_twin(annotation)) {
- char *name = xmlnode_get_data(xmlnode_get_child(annotation, "Name"));
- if (name && !strcmp(name, "MSN.IM.BuddyType")) {
- char *value = xmlnode_get_data(xmlnode_get_child(annotation, "Value"));
- if (value != NULL)
- nid = strtoul(value, NULL, 10);
- g_free(value);
+ char *invite = NULL;
+
+ for (annotation = xmlnode_get_child(member, "Annotations/Annotation");
+ annotation;
+ annotation = xmlnode_get_next_twin(annotation)) {
+ char *name = xmlnode_get_data(xmlnode_get_child(annotation, "Name"));
+ char *value = xmlnode_get_data(xmlnode_get_child(annotation, "Value"));
+ if (name && value) {
+ if (!strcmp(name, "MSN.IM.BuddyType")) {
+ nid = strtoul(value, NULL, 10);
+ }
+ else if (!strcmp(name, "MSN.IM.InviteMessage")) {
+ invite = value;
+ value = NULL;
}
- g_free(name);
}
+ g_free(name);
+ g_free(value);
}
+ /* For EmailMembers, the network must be found in the annotations, above.
+ Otherwise, PassportMembers are on the Passport network. */
+ if (!strcmp(node, "PassportName"))
+ nid = MSN_NETWORK_PASSPORT;
+
purple_debug_info("msn", "CL: %s name: %s, Type: %s, MembershipID: %s, NetworkID: %u\n",
node, passport, type, member_id == NULL ? "(null)" : member_id, nid);
msn_user_set_network(user, nid);
+ msn_user_set_invite_message(user, invite);
if (member_id) {
user->membership_id[list] = atoi(member_id);
@@ -390,6 +397,7 @@ msn_parse_each_member(MsnSession *session, xmlnode *member, const char *node,
g_free(passport);
g_free(type);
g_free(member_id);
+ g_free(invite);
}
static void
@@ -717,8 +725,6 @@ msn_parse_addressbook_contacts(MsnSession *session, xmlnode *node)
g_free(msnEnabled);
}
}
- if (passport == NULL) /* Couldn't find anything */
- continue;
} else {
xmlnode *messenger_user;
/* ignore non-messenger contacts */
@@ -736,6 +742,7 @@ msn_parse_addressbook_contacts(MsnSession *session, xmlnode *node)
passport = xmlnode_get_data(passportName);
}
+ /* Couldn't find anything */
if (passport == NULL)
continue;
diff --git a/libpurple/protocols/msn/directconn.c b/libpurple/protocols/msn/directconn.c
index 7c5b1a5005..1ebc6f8b43 100644
--- a/libpurple/protocols/msn/directconn.c
+++ b/libpurple/protocols/msn/directconn.c
@@ -201,24 +201,6 @@ msn_directconn_write(MsnDirectConn *directconn,
g_free(buffer);
-#if 0
- /* Let's write the length of the data. */
- ret = write(directconn->fd, &len, sizeof(len));
-
- /* Let's write the data. */
- ret = write(directconn->fd, data, len);
-
- char *str;
- str = g_strdup_printf("/home/revo/msntest/w%.4d.bin", directconn->c);
-
- FILE *tf = g_fopen(str, "w");
- fwrite(&len, 1, sizeof(len), tf);
- fwrite(data, 1, len, tf);
- fclose(tf);
-
- g_free(str);
-#endif
-
directconn->c++;
return ret;
@@ -341,7 +323,7 @@ read_cb(gpointer data, gint source, PurpleInputCondition cond)
MsnMessage *msg;
#ifdef DEBUG_DC
- str = g_strdup_printf("/home/revo/msntest/r%.4d.bin", directconn->c);
+ str = g_strdup_printf("%s/msntest/r%.4d.bin", g_get_home_dir(), directconn->c);
FILE *tf = g_fopen(str, "w");
fwrite(body, 1, len, tf);
diff --git a/libpurple/protocols/msn/msg.c b/libpurple/protocols/msn/msg.c
index 0de408d9e3..a86dc1c1a4 100644
--- a/libpurple/protocols/msn/msg.c
+++ b/libpurple/protocols/msn/msg.c
@@ -984,3 +984,67 @@ msn_datacast_msg(MsnCmdProc *cmdproc, MsnMessage *msg)
g_hash_table_destroy(body);
}
+void
+msn_invite_msg(MsnCmdProc *cmdproc, MsnMessage *msg)
+{
+ GHashTable *body;
+ const gchar *guid;
+
+ g_return_if_fail(cmdproc != NULL);
+ g_return_if_fail(msg != NULL);
+
+ body = msn_message_get_hashtable_from_body(msg);
+
+ if (body == NULL) {
+ purple_debug_warning("msn",
+ "Unable to parse invite msg body.\n");
+ return;
+ }
+
+ guid = g_hash_table_lookup(body, "Application-GUID");
+
+ if (guid == NULL) {
+ const gchar *cmd = g_hash_table_lookup(
+ body, "Invitation-Command");
+
+ if (cmd && !strcmp(cmd, "CANCEL")) {
+ const gchar *code = g_hash_table_lookup(
+ body, "Cancel-Code");
+ purple_debug_info("msn",
+ "MSMSGS invitation cancelled: %s.\n",
+ code ? code : "no reason given");
+ } else
+ purple_debug_warning("msn", "Invite msg missing "
+ "Application-GUID.\n");
+ } else if (!strcmp(guid, "{02D3C01F-BF30-4825-A83A-DE7AF41648AA}")) {
+ purple_debug_info("msn", "Computer call\n");
+
+ if (cmdproc->session) {
+ PurpleConversation *conv = NULL;
+ gchar *from = msg->remote_user;
+ gchar *buf = NULL;
+
+ if (from)
+ conv = purple_find_conversation_with_account(
+ PURPLE_CONV_TYPE_IM, from,
+ cmdproc->session->account);
+ if (conv)
+ buf = g_strdup_printf(
+ _("%s sent you a voice chat "
+ "invite, which is not yet "
+ "supported."), from);
+ if (buf) {
+ purple_conversation_write(conv, NULL, buf,
+ PURPLE_MESSAGE_SYSTEM |
+ PURPLE_MESSAGE_NOTIFY,
+ time(NULL));
+ g_free(buf);
+ }
+ }
+ } else
+ purple_debug_warning("msn",
+ "Unhandled invite msg with GUID %s.\n", guid);
+
+ g_hash_table_destroy(body);
+}
+
diff --git a/libpurple/protocols/msn/msn.c b/libpurple/protocols/msn/msn.c
index 28b70d4108..8ec2d8ee3a 100644
--- a/libpurple/protocols/msn/msn.c
+++ b/libpurple/protocols/msn/msn.c
@@ -457,23 +457,27 @@ show_send_to_mobile_cb(PurpleBlistNode *node, gpointer ignored)
PurpleConnection *gc;
MsnSession *session;
MsnMobileData *data;
+ PurpleAccount *account;
+ const char *name;
g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
buddy = (PurpleBuddy *) node;
- gc = purple_account_get_connection(buddy->account);
+ account = purple_buddy_get_account(buddy);
+ gc = purple_account_get_connection(account);
+ name = purple_buddy_get_name(buddy);
session = gc->proto_data;
data = g_new0(MsnMobileData, 1);
data->gc = gc;
- data->passport = buddy->name;
+ data->passport = name;
purple_request_input(gc, NULL, _("Send a mobile message."), NULL,
NULL, TRUE, FALSE, NULL,
_("Page"), G_CALLBACK(send_to_mobile_cb),
_("Close"), G_CALLBACK(close_mobile_page_cb),
- purple_connection_get_account(gc), purple_buddy_get_name(buddy), NULL,
+ account, name, NULL,
data);
}
@@ -505,6 +509,7 @@ initiate_chat_cb(PurpleBlistNode *node, gpointer data)
{
PurpleBuddy *buddy;
PurpleConnection *gc;
+ PurpleAccount *account;
MsnSession *session;
MsnSwitchBoard *swboard;
@@ -514,13 +519,14 @@ initiate_chat_cb(PurpleBlistNode *node, gpointer data)
g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
buddy = (PurpleBuddy *) node;
- gc = purple_account_get_connection(buddy->account);
+ account = purple_buddy_get_account(buddy);
+ gc = purple_account_get_connection(account);
session = gc->proto_data;
swboard = msn_switchboard_new(session);
msn_switchboard_request(swboard);
- msn_switchboard_request_add_user(swboard, buddy->name);
+ msn_switchboard_request_add_user(swboard, purple_buddy_get_name(buddy));
/* TODO: This might move somewhere else, after USR might be */
swboard->chat_id = msn_switchboard_get_chat_id();
@@ -528,9 +534,9 @@ initiate_chat_cb(PurpleBlistNode *node, gpointer data)
swboard->flag = MSN_SB_FLAG_IM;
/* Local alias > Display name > Username */
- if ((alias = purple_account_get_alias(buddy->account)) == NULL)
+ if ((alias = purple_account_get_alias(account)) == NULL)
if ((alias = purple_connection_get_display_name(gc)) == NULL)
- alias = purple_account_get_username(buddy->account);
+ alias = purple_account_get_username(account);
purple_conv_chat_add_user(PURPLE_CONV_CHAT(swboard->conv),
alias, NULL, PURPLE_CBFLAGS_NONE, TRUE);
@@ -613,7 +619,7 @@ msn_list_icon(PurpleAccount *a, PurpleBuddy *b)
static const char *
msn_list_emblems(PurpleBuddy *b)
{
- MsnUser *user = b->proto_data;
+ MsnUser *user = purple_buddy_get_protocol_data(b);
if (user != NULL) {
if (user->clientid & MSN_CLIENT_CAP_BOT)
@@ -694,7 +700,7 @@ msn_tooltip_text(PurpleBuddy *buddy, PurpleNotifyUserInfo *user_info, gboolean f
PurplePresence *presence = purple_buddy_get_presence(buddy);
PurpleStatus *status = purple_presence_get_active_status(presence);
- user = buddy->proto_data;
+ user = purple_buddy_get_protocol_data(buddy);
if (purple_presence_is_online(presence))
{
@@ -937,7 +943,7 @@ msn_buddy_menu(PurpleBuddy *buddy)
g_return_val_if_fail(buddy != NULL, NULL);
- user = buddy->proto_data;
+ user = purple_buddy_get_protocol_data(buddy);
if (user != NULL)
{
@@ -950,8 +956,8 @@ msn_buddy_menu(PurpleBuddy *buddy)
}
}
- if (g_ascii_strcasecmp(buddy->name,
- purple_account_get_username(buddy->account)))
+ if (g_ascii_strcasecmp(purple_buddy_get_name(buddy),
+ purple_account_get_username(purple_buddy_get_account(buddy))))
{
act = purple_menu_action_new(_("Initiate _Chat"),
PURPLE_CALLBACK(initiate_chat_cb),
@@ -1275,7 +1281,7 @@ msn_send_im(PurpleConnection *gc, const char *who, const char *message,
imdata->gc = gc;
imdata->who = who;
imdata->msg = body_str;
- imdata->flags = flags;
+ imdata->flags = flags & ~PURPLE_MESSAGE_SEND;
imdata->when = time(NULL);
purple_timeout_add(0, msn_send_me_im, imdata);
}
@@ -1410,14 +1416,15 @@ msn_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
{
MsnSession *session;
MsnUserList *userlist;
- const char *who;
+ const char *who, *gname;
MsnUser *user;
session = gc->proto_data;
userlist = session->userlist;
- who = msn_normalize(gc->account, buddy->name);
+ who = msn_normalize(purple_connection_get_account(gc), purple_buddy_get_name(buddy));
- purple_debug_info("msn", "Add user:%s to group:%s\n", who, (group && group->name) ? group->name : "(null)");
+ gname = group ? purple_group_get_name(group) : NULL;
+ purple_debug_info("msn", "Add user:%s to group:%s\n", who, gname ? gname : "(null)");
if (!session->logged_in)
{
purple_debug_error("msn", "msn_add_buddy called before connected\n");
@@ -1432,13 +1439,13 @@ msn_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
if ((user != NULL) && (user->networkid != MSN_NETWORK_UNKNOWN)) {
/* We already know this buddy and their network. This function knows
what to do with users already in the list and stuff... */
- msn_userlist_add_buddy(userlist, who, group ? group->name : NULL);
+ msn_userlist_add_buddy(userlist, who, gname);
} else {
char **tokens;
char *fqy;
/* We need to check the network for this buddy first */
user = msn_user_new(userlist, who, NULL);
- msn_user_set_pending_group(user, group ? group->name : NULL);
+ msn_user_set_pending_group(user, gname);
msn_user_set_network(user, MSN_NETWORK_UNKNOWN);
tokens = g_strsplit(who, "@", 2);
fqy = g_strdup_printf("<ml><d n=\"%s\"><c n=\"%s\"/></d></ml>",
@@ -1464,7 +1471,7 @@ msn_rem_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
return;
/* XXX - Does buddy->name need to be msn_normalize'd here? --KingAnt */
- msn_userlist_rem_buddy(userlist, buddy->name);
+ msn_userlist_rem_buddy(userlist, purple_buddy_get_name(buddy));
}
static void
@@ -1717,20 +1724,22 @@ msn_rename_group(PurpleConnection *gc, const char *old_name,
PurpleGroup *group, GList *moved_buddies)
{
MsnSession *session;
+ const char *gname;
session = gc->proto_data;
g_return_if_fail(session != NULL);
g_return_if_fail(session->userlist != NULL);
+ gname = purple_group_get_name(group);
if (msn_userlist_find_group_with_name(session->userlist, old_name) != NULL)
{
- msn_contact_rename_group(session, old_name, group->name);
+ msn_contact_rename_group(session, old_name, gname);
}
else
{
/* not found */
- msn_add_group(session, NULL, group->name);
+ msn_add_group(session, NULL, gname);
}
}
@@ -1790,20 +1799,22 @@ msn_remove_group(PurpleConnection *gc, PurpleGroup *group)
{
MsnSession *session;
MsnCmdProc *cmdproc;
+ const char *gname;
session = gc->proto_data;
cmdproc = session->notification->cmdproc;
+ gname = purple_group_get_name(group);
- purple_debug_info("msn", "Remove group %s\n", group->name);
+ purple_debug_info("msn", "Remove group %s\n", gname);
/*we can't delete the default group*/
- if(!strcmp(group->name, MSN_INDIVIDUALS_GROUP_NAME)||
- !strcmp(group->name, MSN_NON_IM_GROUP_NAME))
+ if(!strcmp(gname, MSN_INDIVIDUALS_GROUP_NAME)||
+ !strcmp(gname, MSN_NON_IM_GROUP_NAME))
{
purple_debug_info("msn", "This group can't be removed, returning.\n");
return ;
}
- msn_del_group(session, group->name);
+ msn_del_group(session, gname);
}
/**
@@ -1820,17 +1831,19 @@ msn_tooltip_extract_info_text(PurpleNotifyUserInfo *user_info, MsnGetInfoData *i
if (b)
{
char *tmp;
+ const char *alias;
- if (b->alias && b->alias[0])
+ alias = purple_buddy_get_local_buddy_alias(b);
+ if (alias && alias[0])
{
- char *aliastext = g_markup_escape_text(b->alias, -1);
+ char *aliastext = g_markup_escape_text(alias, -1);
purple_notify_user_info_add_pair(user_info, _("Alias"), aliastext);
g_free(aliastext);
}
- if (b->server_alias)
+ if ((alias = purple_buddy_get_server_alias(b)) != NULL)
{
- char *nicktext = g_markup_escape_text(b->server_alias, -1);
+ char *nicktext = g_markup_escape_text(alias, -1);
tmp = g_strdup_printf("<font sml=\"msn\">%s</font>", nicktext);
purple_notify_user_info_add_pair(user_info, _("Nickname"), tmp);
g_free(tmp);
@@ -2564,9 +2577,10 @@ static PurplePluginProtocolInfo prpl_info =
NULL, /* unregister_user */
msn_send_attention, /* send_attention */
msn_attention_types, /* attention_types */
-
sizeof(PurplePluginProtocolInfo), /* struct_size */
msn_get_account_text_table, /* get_account_text_table */
+ NULL, /* initiate_media */
+ NULL /* can_do_media */
};
static PurplePluginInfo info =
diff --git a/libpurple/protocols/msn/msn.h b/libpurple/protocols/msn/msn.h
index d5bf4a590a..f87863af5e 100644
--- a/libpurple/protocols/msn/msn.h
+++ b/libpurple/protocols/msn/msn.h
@@ -76,6 +76,8 @@
#define BUDDY_ALIAS_MAXLEN 387
+#define MSN_CAM_GUID "4BD96FC0-AB17-4425-A14A-439185962DC8"
+#define MSN_CAM_REQUEST_GUID "1C9AA97E-9C05-4583-A3BD-908A196F1E92"
#define MSN_FT_GUID "5D3E02AB-6190-11D3-BBBB-00C04F795683"
#define MSN_OBJ_GUID "A4268EEC-FEC5-49E5-95C3-F126696BDBF6"
diff --git a/libpurple/protocols/msn/notification.c b/libpurple/protocols/msn/notification.c
index ab7d13165e..90914b32e8 100644
--- a/libpurple/protocols/msn/notification.c
+++ b/libpurple/protocols/msn/notification.c
@@ -327,14 +327,13 @@ msg_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
/* 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;
+ cmdproc->last_cmd->payload_cb = msg_cmd_post;
cmd->payload_len = atoi(cmd->params[2]);
-
} else {
g_return_if_fail(cmd->payload_cb != NULL);
#if 0 /* glib on win32 doesn't correctly support precision modifiers for a string */
- purple_debug_info("msn", "MSG payload:{%.*s}\n", cmd->payload_len, cmd->payload);
+ purple_debug_info("msn", "MSG payload:{%.*s}\n", (guint)cmd->payload_len, cmd->payload);
#endif
cmd->payload_cb(cmdproc, cmd, cmd->payload, cmd->payload_len);
}
@@ -828,10 +827,10 @@ adl_error_parse(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload, size_t len)
MsnSession *session;
PurpleAccount *account;
PurpleConnection *gc;
- /*char *adl = g_strndup(payload, len);*/
- char *reason = g_strdup_printf(_("Unknown error (%d)"),
- GPOINTER_TO_INT(cmd->payload_cbdata)/*, adl*/);
- /*g_free(adl);*/
+ char *adl = g_strndup(payload, len);
+ char *reason = g_strdup_printf(_("Unknown error (%d): %s"),
+ GPOINTER_TO_INT(cmd->payload_cbdata), adl);
+ g_free(adl);
session = cmdproc->session;
account = session->account;
@@ -1477,7 +1476,7 @@ gcf_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload,
if ( (root = xmlnode_from_str(cmd->payload, cmd->payload_len)) == NULL)
{
- purple_debug_error("msn", "Unable to parse GCF payload into a XML tree");
+ purple_debug_error("msn", "Unable to parse GCF payload into a XML tree\n");
return;
}
@@ -1550,7 +1549,7 @@ ubx_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload,
user = msn_userlist_find_user(session->userlist, passport);
if (user == NULL) {
char *str = g_strndup(payload, len);
- purple_debug_info("msn", "unknown user %s, payload is %s",
+ purple_debug_info("msn", "unknown user %s, payload is %s\n",
passport, str);
g_free(str);
return;
diff --git a/libpurple/protocols/msn/oim.c b/libpurple/protocols/msn/oim.c
index d428ad4a22..1c6aabab96 100644
--- a/libpurple/protocols/msn/oim.c
+++ b/libpurple/protocols/msn/oim.c
@@ -174,7 +174,7 @@ msn_oim_request_cb(MsnSoapMessage *request, MsnSoapMessage *response,
gchar *faultcode_str = xmlnode_get_data(faultcode);
if (faultcode_str && g_str_equal(faultcode_str, "q0:BadContextToken")) {
- purple_debug_warning("msn", "OIM Request Error, Updating token now.");
+ purple_debug_warning("msn", "OIM Request Error, Updating token now.\n");
msn_nexus_update_token(data->oim->session->nexus,
data->send ? MSN_AUTH_LIVE_SECURE : MSN_AUTH_MESSENGER_WEB,
(GSourceFunc)msn_oim_request_helper, data);
@@ -183,7 +183,7 @@ msn_oim_request_cb(MsnSoapMessage *request, MsnSoapMessage *response,
} else if (faultcode_str && g_str_equal(faultcode_str, "q0:AuthenticationFailed")) {
if (xmlnode_get_child(fault, "detail/RequiredAuthPolicy") != NULL) {
- purple_debug_warning("msn", "OIM Request Error, Updating token now.");
+ purple_debug_warning("msn", "OIM Request Error, Updating token now.\n");
msn_nexus_update_token(data->oim->session->nexus,
data->send ? MSN_AUTH_LIVE_SECURE : MSN_AUTH_MESSENGER_WEB,
(GSourceFunc)msn_oim_request_helper, data);
diff --git a/libpurple/protocols/msn/session.c b/libpurple/protocols/msn/session.c
index 1bbfd0efd6..07ddced361 100644
--- a/libpurple/protocols/msn/session.c
+++ b/libpurple/protocols/msn/session.c
@@ -261,9 +261,9 @@ msn_session_get_swboard(MsnSession *session, const char *username,
static void
msn_session_sync_users(MsnSession *session)
{
- PurpleBlistNode *gnode, *cnode, *bnode;
PurpleConnection *gc = purple_account_get_connection(session->account);
GList *to_remove = NULL;
+ GSList *buddies;
g_return_if_fail(gc != NULL);
@@ -271,55 +271,36 @@ msn_session_sync_users(MsnSession *session)
* being logged in. This no longer happens, so we manually iterate
* over the whole buddy list to identify sync issues.
*/
- for (gnode = purple_get_blist()->root; gnode; gnode = gnode->next) {
- PurpleGroup *group = (PurpleGroup *)gnode;
- const char *group_name;
- if(!PURPLE_BLIST_NODE_IS_GROUP(gnode))
- continue;
- group_name = group->name;
- for(cnode = gnode->child; cnode; cnode = cnode->next) {
- 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(purple_buddy_get_account(b) == purple_connection_get_account(gc)) {
- MsnUser *remote_user;
- gboolean found = FALSE;
-
- remote_user = msn_userlist_find_user(session->userlist, purple_buddy_get_name(b));
-
- if ((remote_user != NULL) && (remote_user->list_op & MSN_LIST_FL_OP))
- {
- GList *l;
-
- for (l = remote_user->group_ids; l != NULL; l = l->next)
- {
- const char *name = msn_userlist_find_group_name(remote_user->userlist, l->data);
- if (name && !g_strcasecmp(group_name, name))
- {
- found = TRUE;
- break;
- }
- }
- }
-
- /* We don't care if they're in a different group, as long as they're on the
- * list somewhere. If we check for the group, we cause pain, agony and
- * suffering for people who decide to re-arrange their buddy list elsewhere.
- */
- if (!found)
- {
- if ((remote_user == NULL) || !(remote_user->list_op & MSN_LIST_FL_OP)) {
- /* The user is not on the server list */
- msn_show_sync_issue(session, purple_buddy_get_name(b), group_name);
- } else {
- /* The user is not in that group on the server list */
- to_remove = g_list_prepend(to_remove, b);
- }
- }
+ for (buddies = purple_find_buddies(session->account, NULL); buddies;
+ buddies = g_slist_delete_link(buddies, buddies)) {
+ PurpleBuddy *buddy = buddies->data;
+ const gchar *buddy_name = purple_buddy_get_name(buddy);
+ const gchar *group_name = purple_group_get_name(purple_buddy_get_group(buddy));
+ MsnUser *remote_user;
+ gboolean found = FALSE;
+
+ remote_user = msn_userlist_find_user(session->userlist, buddy_name);
+ if (remote_user && remote_user->list_op & MSN_LIST_FL_OP) {
+ GList *l;
+ for (l = remote_user->group_ids; l; l = l->next) {
+ const char *name = msn_userlist_find_group_name(remote_user->userlist, l->data);
+ if (name && !g_ascii_strcasecmp(group_name, name)) {
+ found = TRUE;
+ break;
+ }
+ }
+
+ /* We don't care if they're in a different group, as long as they're on the
+ * list somewhere. If we check for the group, we cause pain, agony and
+ * suffering for people who decide to re-arrange their buddy list elsewhere.
+ */
+ if (!found) {
+ if ((remote_user == NULL) || !(remote_user->list_op & MSN_LIST_FL_OP)) {
+ /* The user is not on the server list */
+ msn_show_sync_issue(session, buddy_name, group_name);
+ } else {
+ /* The user is not in that group on the server list */
+ to_remove = g_list_prepend(to_remove, buddy);
}
}
}
diff --git a/libpurple/protocols/msn/slp.c b/libpurple/protocols/msn/slp.c
index ba6451a494..aea90326ad 100644
--- a/libpurple/protocols/msn/slp.c
+++ b/libpurple/protocols/msn/slp.c
@@ -377,6 +377,50 @@ got_sessionreq(MsnSlpCall *slpcall, const char *branch,
purple_xfer_request(xfer);
}
+ } else if (!strcmp(euf_guid, MSN_CAM_REQUEST_GUID)) {
+ purple_debug_info("msn", "Cam request.\n");
+ if (slpcall && slpcall->slplink &&
+ slpcall->slplink->session) {
+ PurpleConversation *conv;
+ gchar *from = slpcall->slplink->remote_user;
+ conv = purple_find_conversation_with_account(
+ PURPLE_CONV_TYPE_IM, from,
+ slpcall->slplink->session->account);
+ if (conv) {
+ char *buf;
+ buf = g_strdup_printf(
+ _("%s requests to view your "
+ "webcam, but this request is "
+ "not yet supported."), from);
+ purple_conversation_write(conv, NULL, buf,
+ PURPLE_MESSAGE_SYSTEM |
+ PURPLE_MESSAGE_NOTIFY,
+ time(NULL));
+ g_free(buf);
+ }
+ }
+ } else if (!strcmp(euf_guid, MSN_CAM_GUID)) {
+ purple_debug_info("msn", "Cam invite.\n");
+ if (slpcall && slpcall->slplink &&
+ slpcall->slplink->session) {
+ PurpleConversation *conv;
+ gchar *from = slpcall->slplink->remote_user;
+ conv = purple_find_conversation_with_account(
+ PURPLE_CONV_TYPE_IM, from,
+ slpcall->slplink->session->account);
+ if (conv) {
+ char *buf;
+ buf = g_strdup_printf(
+ _("%s has sent you a webcam "
+ "invite, which is not yet "
+ "supported."), from);
+ purple_conversation_write(conv, NULL, buf,
+ PURPLE_MESSAGE_SYSTEM |
+ PURPLE_MESSAGE_NOTIFY,
+ time(NULL));
+ g_free(buf);
+ }
+ }
} else
purple_debug_warning("msn", "SLP SessionReq with unknown EUF-GUID: %s\n", euf_guid);
}
diff --git a/libpurple/protocols/msn/slplink.c b/libpurple/protocols/msn/slplink.c
index 372135b15a..002e9554f9 100644
--- a/libpurple/protocols/msn/slplink.c
+++ b/libpurple/protocols/msn/slplink.c
@@ -46,7 +46,7 @@ debug_msg_to_file(MsnMessage *msg, gboolean send)
pload = msn_message_gen_payload(msg, &pload_size);
if (!purple_util_write_data_to_file_absolute(tmp, pload, pload_size))
{
- purple_debug_error("msn", "could not save debug file");
+ purple_debug_error("msn", "could not save debug file\n");
}
g_free(tmp);
}
@@ -592,7 +592,7 @@ msn_slplink_process_msg(MsnSlpLink *slplink, MsnMessage *msg)
if (G_MAXSIZE - len < offset || (offset + len) > slpmsg->size)
{
purple_debug_error("msn",
- "Oversized slpmsg - msgsize=%lld offset=%" G_GSIZE_FORMAT " len=%" G_GSIZE_FORMAT "\n",
+ "Oversized slpmsg - msgsize=%lld offset=%" G_GUINT64_FORMAT " len=%" G_GSIZE_FORMAT "\n",
slpmsg->size, offset, len);
g_return_if_reached();
}
@@ -683,7 +683,9 @@ gen_context(const char *file_name, const char *file_path)
size = st.st_size;
if(!file_name) {
- u8 = purple_utf8_try_convert(g_basename(file_path));
+ gchar *basename = g_path_get_basename(file_path);
+ u8 = purple_utf8_try_convert(basename);
+ g_free(basename);
file_name = u8;
}
diff --git a/libpurple/protocols/msn/soap.c b/libpurple/protocols/msn/soap.c
index 237ea50ecf..f2f4db7778 100644
--- a/libpurple/protocols/msn/soap.c
+++ b/libpurple/protocols/msn/soap.c
@@ -667,7 +667,8 @@ msn_soap_connection_run(gpointer data)
conn->handled_len = 0;
conn->current_request = req;
- purple_input_remove(conn->event_handle);
+ if (conn->event_handle)
+ purple_input_remove(conn->event_handle);
conn->event_handle = purple_input_add(conn->ssl->fd,
PURPLE_INPUT_WRITE, msn_soap_write_cb, conn);
if (!msn_soap_write_cb_internal(conn, conn->ssl->fd, PURPLE_INPUT_WRITE, TRUE)) {
diff --git a/libpurple/protocols/msn/state.c b/libpurple/protocols/msn/state.c
index e172d880bb..749540ab39 100644
--- a/libpurple/protocols/msn/state.c
+++ b/libpurple/protocols/msn/state.c
@@ -21,6 +21,10 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
*/
+
+#include "internal.h"
+#include "core.h"
+
#include "msn.h"
#include "state.h"
@@ -169,7 +173,7 @@ msn_get_currentmedia(char *xml_str, gsize len)
}
currentmediaNode = xmlnode_get_child(payloadNode, "CurrentMedia");
if (currentmediaNode == NULL) {
- purple_debug_info("msn", "No CurrentMedia Node");
+ purple_debug_info("msn", "No CurrentMedia Node\n");
xmlnode_free(payloadNode);
return NULL;
}
@@ -195,7 +199,7 @@ msn_get_psm(char *xml_str, gsize len)
}
psmNode = xmlnode_get_child(payloadNode, "PSM");
if (psmNode == NULL) {
- purple_debug_info("msn", "No PSM status Node");
+ purple_debug_info("msn", "No PSM status Node\n");
xmlnode_free(payloadNode);
return NULL;
}
@@ -288,10 +292,29 @@ msn_change_status(MsnSession *session)
MsnUser *user;
MsnObject *msnobj;
const char *state_text;
+ GHashTable *ui_info = purple_core_get_ui_info();
+ MsnClientCaps caps = MSN_CLIENT_ID;
g_return_if_fail(session != NULL);
g_return_if_fail(session->notification != NULL);
+ /* set client caps based on what the UI tells us it is... */
+ if (ui_info) {
+ const gchar *client_type = g_hash_table_lookup(ui_info, "client_type");
+ if (client_type) {
+ if (strcmp(client_type, "phone") == 0 ||
+ strcmp(client_type, "handheld") == 0) {
+ caps |= MSN_CLIENT_CAP_WIN_MOBILE;
+ } else if (strcmp(client_type, "web") == 0) {
+ caps |= MSN_CLIENT_CAP_WEBMSGR;
+ } else if (strcmp(client_type, "bot") == 0) {
+ caps |= MSN_CLIENT_CAP_BOT;
+ }
+ /* MSN doesn't a "console" type...
+ What, they have no ncurses UI? :-) */
+ }
+ }
+
account = session->account;
cmdproc = session->notification->cmdproc;
user = session->user;
@@ -307,8 +330,7 @@ msn_change_status(MsnSession *session)
if (msnobj == NULL)
{
- msn_cmdproc_send(cmdproc, "CHG", "%s %d", state_text,
- MSN_CLIENT_ID);
+ msn_cmdproc_send(cmdproc, "CHG", "%s %d", state_text, caps);
}
else
{
@@ -317,7 +339,7 @@ msn_change_status(MsnSession *session)
msnobj_str = msn_object_to_string(msnobj);
msn_cmdproc_send(cmdproc, "CHG", "%s %d %s", state_text,
- MSN_CLIENT_ID, purple_url_encode(msnobj_str));
+ caps, purple_url_encode(msnobj_str));
g_free(msnobj_str);
}
diff --git a/libpurple/protocols/msn/switchboard.c b/libpurple/protocols/msn/switchboard.c
index 0ada2639d1..7a04dc7a99 100644
--- a/libpurple/protocols/msn/switchboard.c
+++ b/libpurple/protocols/msn/switchboard.c
@@ -590,7 +590,7 @@ release_msg(MsnSwitchBoard *swboard, MsnMessage *msg)
payload = msn_message_gen_payload(msg, &payload_len);
#ifdef MSN_DEBUG_SB
- purple_debug_info("msn", "SB length:{%" G_GSIZE_FORMAT "}", payload_len);
+ purple_debug_info("msn", "SB length:{%" G_GSIZE_FORMAT "}\n", payload_len);
msn_message_show_readable(msg, "SB SEND", FALSE);
#endif
@@ -1237,10 +1237,8 @@ msn_switchboard_init(void)
msn_emoticon_msg);
msn_table_add_msg_type(cbs_table, "text/x-msnmsgr-datacast",
msn_datacast_msg);
-#if 0
- msn_table_add_msg_type(cbs_table, "text/x-msmmsginvite",
+ msn_table_add_msg_type(cbs_table, "text/x-msmsgsinvite",
msn_invite_msg);
-#endif
}
void
diff --git a/libpurple/protocols/msn/user.c b/libpurple/protocols/msn/user.c
index d5b5430afc..de4e4aabd0 100644
--- a/libpurple/protocols/msn/user.c
+++ b/libpurple/protocols/msn/user.c
@@ -74,6 +74,7 @@ msn_user_destroy(MsnUser *user)
g_free(user->media.title);
g_free(user->media.album);
g_free(user->statusline);
+ g_free(user->invite_message);
g_free(user);
}
@@ -294,9 +295,8 @@ msn_user_add_group_id(MsnUser *user, const char* group_id)
b = purple_buddy_new(account, passport, NULL);
purple_blist_add_buddy(b, NULL, g, NULL);
}
- b->proto_data = user;
+ purple_buddy_set_protocol_data(b, user);
/*Update the blist Node info*/
-// purple_blist_node_set_string(&(b->node), "", "");
}
/*check if the msn user is online*/
@@ -427,6 +427,15 @@ msn_user_set_client_caps(MsnUser *user, GHashTable *info)
user->clientcaps = info;
}
+void
+msn_user_set_invite_message(MsnUser *user, const char *message)
+{
+ g_return_if_fail(user != NULL);
+
+ g_free(user->invite_message);
+ user->invite_message = g_strdup(message);
+}
+
const char *
msn_user_get_passport(const MsnUser *user)
{
@@ -490,3 +499,12 @@ msn_user_get_client_caps(const MsnUser *user)
return user->clientcaps;
}
+
+const char *
+msn_user_get_invite_message(const MsnUser *user)
+{
+ g_return_val_if_fail(user != NULL, NULL);
+
+ return user->invite_message;
+}
+
diff --git a/libpurple/protocols/msn/user.h b/libpurple/protocols/msn/user.h
index 60c83b17b0..63c8d827f2 100644
--- a/libpurple/protocols/msn/user.h
+++ b/libpurple/protocols/msn/user.h
@@ -105,6 +105,8 @@ struct _MsnUser
guint membership_id[5]; /**< The membershipId sent by the contacts server,
indexed by the list it belongs to */
+
+ char *invite_message; /**< Invite message of user request */
};
/**************************************************************************
@@ -290,6 +292,14 @@ void msn_user_set_object(MsnUser *user, MsnObject *obj);
*/
void msn_user_set_client_caps(MsnUser *user, GHashTable *info);
+/**
+ * Sets the invite message for a user.
+ *
+ * @param user The user.
+ * @param message The invite message for a user.
+ */
+void msn_user_set_invite_message(MsnUser *user, const char *message);
+
/**
* Returns the passport account for a user.
@@ -373,6 +383,15 @@ MsnObject *msn_user_get_object(const MsnUser *user);
GHashTable *msn_user_get_client_caps(const MsnUser *user);
/**
+ * Returns the invite message for a user.
+ *
+ * @param user The user.
+ *
+ * @return The user's invite message.
+ */
+const char *msn_user_get_invite_message(const MsnUser *user);
+
+/**
* check to see if user is online
*/
gboolean
diff --git a/libpurple/protocols/msn/userlist.c b/libpurple/protocols/msn/userlist.c
index b0f0a5d4a4..5e1135292b 100644
--- a/libpurple/protocols/msn/userlist.c
+++ b/libpurple/protocols/msn/userlist.c
@@ -86,7 +86,7 @@ msn_cancel_add_cb(gpointer data)
}
static void
-got_new_entry(PurpleConnection *gc, const char *passport, const char *friendly)
+got_new_entry(PurpleConnection *gc, const char *passport, const char *friendly, const char *message)
{
PurpleAccount *acct;
MsnPermitAdd *pa;
@@ -97,7 +97,7 @@ got_new_entry(PurpleConnection *gc, const char *passport, const char *friendly)
pa->gc = gc;
acct = purple_connection_get_account(gc);
- purple_account_request_authorization(acct, passport, NULL, friendly, NULL,
+ purple_account_request_authorization(acct, passport, NULL, friendly, message,
purple_find_buddy(acct, passport) != NULL,
msn_accept_add_cb, msn_cancel_add_cb, pa);
@@ -142,155 +142,6 @@ msn_userlist_user_is_in_list(MsnUser *user, MsnListId list_id)
* Server functions
**************************************************************************/
-MsnListId
-msn_get_list_id(const char *list)
-{
- if (list[0] == 'F')
- return MSN_LIST_FL;
- else if (list[0] == 'A')
- return MSN_LIST_AL;
- else if (list[0] == 'B')
- return MSN_LIST_BL;
- else if (list[0] == 'R')
- return MSN_LIST_RL;
-
- return -1;
-}
-
-/* this function msn_got_add_user isn't called anywhere */
-void
-msn_got_add_user(MsnSession *session, MsnUser *user,
- MsnListId list_id, const char * group_id)
-{
- PurpleAccount *account;
- const char *passport;
- const char *friendly;
-
- purple_debug_info("msn", "got add user...\n");
- account = session->account;
-
- passport = msn_user_get_passport(user);
- friendly = msn_user_get_friendly_name(user);
-
- if (list_id == MSN_LIST_FL)
- {
- PurpleConnection *gc;
-
- gc = purple_account_get_connection(account);
-
- serv_got_alias(gc, passport, friendly);
-
- if (group_id != NULL)
- {
- msn_user_add_group_id(user, group_id);
- }
- }
- else if (list_id == MSN_LIST_AL)
- {
- purple_privacy_permit_add(account, passport, TRUE);
- }
- else if (list_id == MSN_LIST_BL)
- {
- purple_privacy_deny_add(account, passport, TRUE);
- }
- else if (list_id == MSN_LIST_RL)
- {
- PurpleConversation *convo;
-
- purple_debug_info("msn",
- "%s has added you to his or her buddy list.\n",
- passport);
-
- convo = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, passport, account);
- if (convo) {
- PurpleBuddy *buddy;
- char *msg;
-
- buddy = purple_find_buddy(account, passport);
- msg = g_strdup_printf(
- _("%s has added you to his or her buddy list."),
- buddy ? purple_buddy_get_contact_alias(buddy) : passport);
- purple_conv_im_write(PURPLE_CONV_IM(convo), passport, msg,
- PURPLE_MESSAGE_SYSTEM, time(NULL));
- g_free(msg);
- }
-
- if (!(user->list_op & (MSN_LIST_AL_OP | MSN_LIST_BL_OP)))
- {
- /*
- * TODO: The friendly name was NULL for me when I
- * looked at this. Maybe we should use the store
- * name instead? --KingAnt
- */
-/* got_new_entry(gc, passport, friendly); */
- }
- }
-
- user->list_op |= (1 << list_id);
- /* purple_user_add_list_id (user, list_id); */
-}
-
-void
-msn_got_rem_user(MsnSession *session, MsnUser *user,
- MsnListId list_id, const char * group_id)
-{
- PurpleAccount *account;
- const char *passport;
-
- account = session->account;
-
- passport = msn_user_get_passport(user);
-
- if (list_id == MSN_LIST_FL)
- {
- /* TODO: When is the user totally removed? */
- if (group_id != NULL)
- {
- msn_user_remove_group_id(user, group_id);
- return;
- }
- }
- else if (list_id == MSN_LIST_AL)
- {
- purple_privacy_permit_remove(account, passport, TRUE);
- }
- else if (list_id == MSN_LIST_BL)
- {
- purple_privacy_deny_remove(account, passport, TRUE);
- }
- else if (list_id == MSN_LIST_RL)
- {
- PurpleConversation *convo;
-
- purple_debug_info("msn",
- "%s has removed you from his or her buddy list.\n",
- passport);
-
- convo = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, passport, account);
- if (convo) {
- PurpleBuddy *buddy;
- char *msg;
-
- buddy = purple_find_buddy(account, passport);
- msg = g_strdup_printf(
- _("%s has removed you from his or her buddy list."),
- buddy ? purple_buddy_get_contact_alias(buddy) : passport);
- purple_conv_im_write(PURPLE_CONV_IM(convo), passport, msg,
- PURPLE_MESSAGE_SYSTEM, time(NULL));
- g_free(msg);
- }
- }
-
- user->list_op &= ~(1 << list_id);
- /* purple_user_remove_list_id (user, list_id); */
-
- if (user->list_op == 0)
- {
- purple_debug_info("msn", "Buddy '%s' shall be deleted?.\n",
- passport);
- }
-}
-
void
msn_got_lst_user(MsnSession *session, MsnUser *user,
int list_op, GSList *group_ids)
@@ -299,12 +150,14 @@ msn_got_lst_user(MsnSession *session, MsnUser *user,
PurpleAccount *account;
const char *passport;
const char *store;
+ const char *message;
account = session->account;
gc = purple_account_get_connection(account);
passport = msn_user_get_passport(user);
store = msn_user_get_friendly_name(user);
+ message = msn_user_get_invite_message(user);
msn_user_set_op(user, list_op);
@@ -348,13 +201,13 @@ msn_got_lst_user(MsnSession *session, MsnUser *user,
if (!(list_op & (MSN_LIST_AL_OP | MSN_LIST_BL_OP)))
{
-/* got_new_entry(gc, passport, store); */
+/* got_new_entry(gc, passport, store, NULL); */
}
}
if (list_op & MSN_LIST_PL_OP)
{
- got_new_entry(gc, passport, store);
+ got_new_entry(gc, passport, store, message);
}
}
@@ -448,7 +301,7 @@ msn_userlist_find_user(MsnUserList *userlist, const char *passport)
g_return_val_if_fail(user->passport != NULL, NULL);
- if (!g_strcasecmp(passport, user->passport)){
+ if (!g_ascii_strcasecmp(passport, user->passport)){
return user;
}
}
@@ -470,7 +323,7 @@ msn_userlist_find_user_with_id(MsnUserList *userlist, const char *uid)
continue;
}
- if ( !g_strcasecmp(uid, user->uid) ) {
+ if ( !g_ascii_strcasecmp(uid, user->uid) ) {
return user;
}
}
@@ -492,7 +345,7 @@ msn_userlist_find_user_with_mobile_phone(MsnUserList *userlist, const char *numb
continue;
}
- if (!g_strcasecmp(number, user->phone.mobile)) {
+ if (!g_ascii_strcasecmp(number, user->phone.mobile)) {
return user;
}
}
@@ -524,7 +377,7 @@ msn_userlist_find_group_with_id(MsnUserList *userlist, const char * id)
{
MsnGroup *group = l->data;
- if (!g_strcasecmp(group->id,id))
+ if (!g_ascii_strcasecmp(group->id,id))
return group;
}
@@ -543,7 +396,7 @@ msn_userlist_find_group_with_name(MsnUserList *userlist, const char *name)
{
MsnGroup *group = l->data;
- if ((group->name != NULL) && !g_strcasecmp(name, group->name))
+ if ((group->name != NULL) && !g_ascii_strcasecmp(name, group->name))
return group;
}
@@ -795,7 +648,7 @@ msn_userlist_add_buddy_to_group(MsnUserList *userlist, const char *who,
}
if ( (user = msn_userlist_find_user(userlist, who)) == NULL) {
- purple_debug_error("msn", "User %s not found!", who);
+ purple_debug_error("msn", "User %s not found!\n", who);
return FALSE;
}
@@ -824,7 +677,7 @@ msn_userlist_rem_buddy_from_group(MsnUserList *userlist, const char *who,
}
if ( (user = msn_userlist_find_user(userlist, who)) == NULL) {
- purple_debug_error("msn", "User %s not found!", who);
+ purple_debug_error("msn", "User %s not found!\n", who);
return FALSE;
}
@@ -867,36 +720,21 @@ msn_userlist_move_buddy(MsnUserList *userlist, const char *who,
void
msn_userlist_load(MsnSession *session)
{
- PurpleBlistNode *gnode, *cnode, *bnode;
- PurpleConnection *gc = purple_account_get_connection(session->account);
+ PurpleAccount *account = session->account;
+ PurpleConnection *gc = purple_account_get_connection(account);
GSList *l;
MsnUser * user;
g_return_if_fail(gc != NULL);
- for (gnode = purple_get_blist()->root; gnode; gnode = gnode->next)
- {
- 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 = purple_find_buddies(account, NULL); l != NULL;
+ l = g_slist_delete_link(l, l)) {
+ PurpleBuddy *buddy = l->data;
+
+ user = msn_userlist_find_add_user(session->userlist,
+ purple_buddy_get_name(buddy), NULL);
+ purple_buddy_set_protocol_data(buddy, user);
+ msn_user_set_op(user, MSN_LIST_FL_OP);
}
for (l = session->account->permit; l != NULL; l = l->next)
{
diff --git a/libpurple/protocols/msn/userlist.h b/libpurple/protocols/msn/userlist.h
index 76e64e615d..fe6c804f0f 100644
--- a/libpurple/protocols/msn/userlist.h
+++ b/libpurple/protocols/msn/userlist.h
@@ -56,12 +56,7 @@ struct _MsnUserList
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, const char *group_id);
-void msn_got_rem_user(MsnSession *session, MsnUser *user,
- MsnListId list_id, const char *group_id);
void msn_got_lst_user(MsnSession *session, MsnUser *user,
int list_op, GSList *group_ids);
diff --git a/libpurple/protocols/msnp9/msn.c b/libpurple/protocols/msnp9/msn.c
index cf8527864a..dfad8705d8 100644
--- a/libpurple/protocols/msnp9/msn.c
+++ b/libpurple/protocols/msnp9/msn.c
@@ -2276,9 +2276,10 @@ static PurplePluginProtocolInfo prpl_info =
NULL, /* unregister_user */
msn_send_attention, /* send_attention */
msn_attention_types, /* attention_types */
-
sizeof(PurplePluginProtocolInfo), /* struct_size */
msn_get_account_text_table, /* get_account_text_table */
+ NULL, /* initiate_media */
+ NULL /* can_do_media */
};
static PurplePluginInfo info =
diff --git a/libpurple/protocols/msnp9/session.c b/libpurple/protocols/msnp9/session.c
index ca8f7f124c..91c418e371 100644
--- a/libpurple/protocols/msnp9/session.c
+++ b/libpurple/protocols/msnp9/session.c
@@ -221,68 +221,51 @@ msn_session_get_swboard(MsnSession *session, const char *username,
static void
msn_session_sync_users(MsnSession *session)
{
- PurpleBlistNode *gnode, *cnode, *bnode;
PurpleConnection *gc = purple_account_get_connection(session->account);
GList *to_remove = NULL;
+ GSList *buddies;
g_return_if_fail(gc != NULL);
/* 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 (buddies = purple_find_buddies(session->account, NULL); buddies;
+ buddies = g_slist_delete_link(buddies, buddies)) {
+ PurpleBuddy *buddy = buddies->data;
+ const char *buddy_name = purple_buddy_get_name(buddy);
+ const char *group_name = purple_group_get_name(purple_buddy_get_group(buddy));
+ MsnUser *remote_user;
+ gboolean found = FALSE;
+
+ remote_user = msn_userlist_find_user(session->userlist, buddy_name);
+
+ if (remote_user && 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; l = l->next) {
+ if (group_id == GPOINTER_TO_INT(l->data)) {
+ found = TRUE;
+ break;
+ }
+ }
- for (gnode = purple_blist_get_root(); gnode; gnode = gnode->next) {
- PurpleGroup *group = (PurpleGroup *)gnode;
- const char *group_name = group->name;
- 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(purple_buddy_get_account(b) == purple_connection_get_account(gc)) {
- MsnUser *remote_user;
- gboolean found = FALSE;
-
- remote_user = msn_userlist_find_user(session->userlist, purple_buddy_get_name(b));
-
- 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))
- {
- found = TRUE;
- break;
- }
- }
-
- }
-
- /* We don't care if they're in a different group, as long as they're on the
- * list somewhere. If we check for the group, we cause pain, agony and
- * suffering for people who decide to re-arrange their buddy list elsewhere.
- */
- if (!found)
- {
- if ((remote_user == NULL) || !(remote_user->list_op & MSN_LIST_FL_OP)) {
- /* The user is not on the server list */
- msn_show_sync_issue(session, purple_buddy_get_name(b), group_name);
- } else {
- /* The user is not in that group on the server list */
- to_remove = g_list_prepend(to_remove, b);
- }
- }
+ /* We don't care if they're in a different group, as long as they're on the
+ * list somewhere. If we check for the group, we cause pain, agony and
+ * suffering for people who decide to re-arrange their buddy list elsewhere.
+ */
+ if (!found)
+ {
+ if ((remote_user == NULL) || !(remote_user->list_op & MSN_LIST_FL_OP)) {
+ /* The user is not on the server list */
+ msn_show_sync_issue(session, buddy_name, group_name);
+ } else {
+ /* The user is not in that group on the server list */
+ to_remove = g_list_prepend(to_remove, buddy);
}
}
}
diff --git a/libpurple/protocols/msnp9/slplink.c b/libpurple/protocols/msnp9/slplink.c
index b7a61ac0b4..30767f2877 100644
--- a/libpurple/protocols/msnp9/slplink.c
+++ b/libpurple/protocols/msnp9/slplink.c
@@ -510,7 +510,7 @@ msn_slplink_process_msg(MsnSlpLink *slplink, MsnMessage *msg)
{
MsnSlpMessage *slpmsg;
const char *data;
- gsize offset;
+ guint64 offset;
gsize len;
#ifdef MSN_DEBUG_SLP
@@ -581,6 +581,7 @@ msn_slplink_process_msg(MsnSlpLink *slplink, MsnMessage *msg)
if (slpmsg->buffer == NULL)
{
purple_debug_error("msn", "Failed to allocate buffer for slpmsg\n");
+ msn_slpmsg_destroy(slpmsg);
return;
}
}
diff --git a/libpurple/protocols/myspace/README b/libpurple/protocols/myspace/README
index b890160596..f9f062c9e6 100644
--- a/libpurple/protocols/myspace/README
+++ b/libpurple/protocols/myspace/README
@@ -1,9 +1,8 @@
-MySpaceIM Protocol Plugin for Libpurple by Jeff Connelly 20070807
-
+MySpaceIM Protocol Plugin for libpurple by Jeff Connelly 2007-08-07
Greetings. This package contains a plugin for libpurple (as used in
-Pidgin, formerly Gaim) to connect to the new MySpaceIM instant messaging
-network and send/receive messages. Functionality is only basic as of yet,
+Pidgin, formerly Gaim) to connect to the new MySpaceIM instant messaging
+network and send/receive messages. Functionality is only basic as of yet,
and this code should be considered alpha quality.
This code was initially developed under Google Summer of Code 2007.
@@ -15,10 +14,10 @@ Usage:
Login using your _email address_ you use to login to myspace.com. You can't
login using your numeric ID or alias.
-To test it out, send a message to yourself (by your username or numeric
-uid (email not yet supported)) or tom (6221). In either case you should
-get a reply. You should also be able to talk to other MySpaceIM users if
-you desire. Replies will always be shown as coming from a user's username,
+To test it out, send a message to yourself (by your username or numeric
+uid (email not yet supported)) or tom (6221). In either case you should
+get a reply. You should also be able to talk to other MySpaceIM users if
+you desire. Replies will always be shown as coming from a user's username,
even if you IM by email or userid.
Feedback welcome. You can IM my test account at "msimprpl" if you feel like it.
@@ -26,4 +25,3 @@ Feedback welcome. You can IM my test account at "msimprpl" if you feel like it.
Enjoy,
-Jeff Connelly
msimprpl@xyzzy.cjb.net
-
diff --git a/libpurple/protocols/myspace/myspace.c b/libpurple/protocols/myspace/myspace.c
index ff2d36995c..3ff5adacb6 100644
--- a/libpurple/protocols/myspace/myspace.c
+++ b/libpurple/protocols/myspace/myspace.c
@@ -202,7 +202,7 @@ msim_postprocess_outgoing(MsimSession *session, MsimMessage *msg,
/* Next, see if on buddy list and know uid. */
buddy = purple_find_buddy(session->account, username);
if (buddy) {
- uid = purple_blist_node_get_int(&buddy->node, "UserID");
+ uid = purple_blist_node_get_int(PURPLE_BLIST_NODE(buddy), "UserID");
} else {
uid = 0;
}
@@ -311,7 +311,7 @@ msim_uid2username_from_blist(PurpleAccount *account, guint wanted_uid)
/* See finch/gnthistory.c */
buddy = cur->data;
- uid = purple_blist_node_get_int(&buddy->node, "UserID");
+ uid = purple_blist_node_get_int(PURPLE_BLIST_NODE(buddy), "UserID");
name = purple_buddy_get_name(buddy);
if (uid == wanted_uid)
@@ -383,12 +383,17 @@ msim_status_text(PurpleBuddy *buddy)
MsimSession *session;
MsimUser *user;
const gchar *display_name, *headline;
+ PurpleAccount *account;
+ PurpleConnection *gc;
g_return_val_if_fail(buddy != NULL, NULL);
- user = msim_get_user_from_buddy(buddy);
+ user = msim_get_user_from_buddy(buddy, TRUE);
+
+ account = purple_buddy_get_account(buddy);
+ gc = purple_account_get_connection(account);
+ session = (MsimSession *)gc->proto_data;
- session = (MsimSession *)buddy->account->gc->proto_data;
g_return_val_if_fail(MSIM_SESSION_VALID(session), NULL);
display_name = headline = NULL;
@@ -431,12 +436,14 @@ msim_tooltip_text(PurpleBuddy *buddy, PurpleNotifyUserInfo *user_info,
g_return_if_fail(buddy != NULL);
g_return_if_fail(user_info != NULL);
- user = msim_get_user_from_buddy(buddy);
+ user = msim_get_user_from_buddy(buddy, TRUE);
if (PURPLE_BUDDY_IS_ONLINE(buddy)) {
MsimSession *session;
-
- session = (MsimSession *)buddy->account->gc->proto_data;
+ PurpleAccount *account = purple_buddy_get_account(buddy);
+ PurpleConnection *gc = purple_account_get_connection(account);
+
+ session = (MsimSession *)gc->proto_data;
g_return_if_fail(MSIM_SESSION_VALID(session));
@@ -1040,21 +1047,21 @@ msim_add_contact_from_server_cb(MsimSession *session, const MsimMessage *user_lo
* of numbers in the buddy list.
*/
if (display_name != NULL) {
- purple_blist_node_set_string(&buddy->node, "DisplayName", display_name);
+ purple_blist_node_set_string(PURPLE_BLIST_NODE(buddy), "DisplayName", display_name);
serv_got_alias(session->gc, username, display_name);
} else {
serv_got_alias(session->gc, username,
- purple_blist_node_get_string(&buddy->node, "DisplayName"));
+ purple_blist_node_get_string(PURPLE_BLIST_NODE(buddy), "DisplayName"));
}
}
g_free(display_name);
/* 3. Update buddy information */
- user = msim_get_user_from_buddy(buddy);
+ user = msim_get_user_from_buddy(buddy, TRUE);
user->id = uid;
/* Keep track of the user ID across sessions */
- purple_blist_node_set_int(&buddy->node, "UserID", uid);
+ purple_blist_node_set_int(PURPLE_BLIST_NODE(buddy), "UserID", uid);
/* Stores a few fields in the MsimUser, relevant to the buddy itself.
* AvatarURL, Headline, ContactID. */
@@ -1111,10 +1118,6 @@ msim_got_contact_list(MsimSession *session, const MsimMessage *reply, gpointer u
guint buddy_count;
body = msim_msg_get_dictionary(reply, "body");
- if (!body) {
- /* No friends. Not an error. */
- return;
- }
buddy_count = 0;
@@ -1374,11 +1377,11 @@ msim_incoming_status(MsimSession *session, MsimMessage *msg)
buddy = purple_buddy_new(session->account, username, NULL);
purple_blist_add_buddy(buddy, NULL, NULL, NULL);
- user = msim_get_user_from_buddy(buddy);
+ user = msim_get_user_from_buddy(buddy, TRUE);
user->id = msim_msg_get_integer(msg, "f");
/* Keep track of the user ID across sessions */
- purple_blist_node_set_int(&buddy->node, "UserID", user->id);
+ purple_blist_node_set_int(PURPLE_BLIST_NODE(buddy), "UserID", user->id);
msim_store_user_info(session, msg, NULL);
} else {
@@ -1470,28 +1473,22 @@ msim_incoming_status(MsimSession *session, MsimMessage *msg)
* @return TRUE if successful.
*/
static gboolean
-msim_incoming_im(MsimSession *session, MsimMessage *msg)
+msim_incoming_im(MsimSession *session, MsimMessage *msg, const gchar *username)
{
- gchar *username, *msg_msim_markup, *msg_purple_markup;
+ gchar *msg_msim_markup, *msg_purple_markup;
gchar *userid;
time_t time_received;
PurpleConversation *conv;
- g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE);
- g_return_val_if_fail(msg != NULL, FALSE);
-
- username = msim_msg_get_string(msg, "_username");
/* I know this isn't really a string... but we need it to be one for
* purple_find_conversation_with_account(). */
userid = msim_msg_get_string(msg, "f");
- g_return_val_if_fail(username != NULL, FALSE);
purple_debug_info("msim_incoming_im", "UserID is %s", userid);
if (msim_is_userid(username)) {
purple_debug_info("msim", "Ignoring message from spambot (%s) on account %s\n",
username, purple_account_get_username(session->account));
- g_free(username);
return FALSE;
}
@@ -1516,14 +1513,13 @@ msim_incoming_im(MsimSession *session, MsimMessage *msg)
serv_got_im(session->gc, username, msg_purple_markup, PURPLE_MESSAGE_RECV, time_received);
- g_free(username);
g_free(msg_purple_markup);
return TRUE;
}
/**
- * Handle an incoming action message.
+ * Handle an incoming action message or an IM.
*
* @param session
* @param msg
@@ -1531,7 +1527,7 @@ msim_incoming_im(MsimSession *session, MsimMessage *msg)
* @return TRUE if successful.
*/
static gboolean
-msim_incoming_action(MsimSession *session, MsimMessage *msg)
+msim_incoming_action_or_im(MsimSession *session, MsimMessage *msg)
{
gchar *msg_text, *username;
gboolean rc;
@@ -1545,7 +1541,8 @@ msim_incoming_action(MsimSession *session, MsimMessage *msg)
username = msim_msg_get_string(msg, "_username");
g_return_val_if_fail(username != NULL, FALSE);
- purple_debug_info("msim", "msim_incoming_action: action <%s> from <%s>\n",
+ purple_debug_info("msim",
+ "msim_incoming_action_or_im: action <%s> from <%s>\n",
msg_text, username);
if (g_str_equal(msg_text, "%typing%")) {
@@ -1559,13 +1556,16 @@ msim_incoming_action(MsimSession *session, MsimMessage *msg)
} else if (strstr(msg_text, "!!!GroupCount=")) {
/* TODO: support group chats. I think the number in msg_text has
* something to do with the 'gid' field. */
- purple_debug_info("msim", "msim_incoming_action: TODO: implement #4691, group chats: %s\n", msg_text);
+ purple_debug_info("msim",
+ "msim_incoming_action_or_im: "
+ "TODO: implement #4691, group chats: %s\n", msg_text);
rc = TRUE;
} else if (strstr(msg_text, "!!!Offline=")) {
/* TODO: support group chats. This one might mean a user
* went offline or exited the chat. */
- purple_debug_info("msim", "msim_incoming_action: TODO: implement #4691, group chats: %s\n", msg_text);
+ purple_debug_info("msim", "msim_incoming_action_or_im: "
+ "TODO: implement #4691, group chats: %s\n", msg_text);
rc = TRUE;
} else if (msim_msg_get_integer(msg, "aid") != 0) {
@@ -1576,9 +1576,7 @@ msim_incoming_action(MsimSession *session, MsimMessage *msg)
rc = TRUE;
} else {
- msim_unrecognized(session, msg,
- "got to msim_incoming_action but unrecognized value for 'msg'");
- rc = FALSE;
+ rc = msim_incoming_im(session, msg, username);
}
g_free(msg_text);
@@ -1663,10 +1661,9 @@ msim_incoming_bm(MsimSession *session, MsimMessage *msg)
switch (bm) {
case MSIM_BM_STATUS:
return msim_incoming_status(session, msg);
- case MSIM_BM_INSTANT:
- return msim_incoming_im(session, msg);
- case MSIM_BM_ACTION:
- return msim_incoming_action(session, msg);
+ case MSIM_BM_INSTANT_ACTION_OR_IM:
+ case MSIM_BM_DELAYABLE_ACTION_OR_IM:
+ return msim_incoming_action_or_im(session, msg);
case MSIM_BM_MEDIA:
return msim_incoming_media(session, msg);
case MSIM_BM_UNOFFICIAL_CLIENT:
@@ -1674,7 +1671,8 @@ msim_incoming_bm(MsimSession *session, MsimMessage *msg)
default:
/* Not really an IM, but show it for informational
* purposes during development. */
- return msim_incoming_im(session, msg);
+ /* TODO: This is probably wrong */
+ return msim_incoming_action_or_im(session, msg);
}
}
@@ -1826,17 +1824,19 @@ msim_error(MsimSession *session, MsimMessage *msg)
gchar *suggestion;
suggestion = g_strdup_printf(_("%s Your password is "
- "%d characters, greater than the "
- "expected maximum length of %d for "
- "MySpaceIM. Please shorten your "
+ "%zu characters, which is longer than the "
+ "maximum length of %d. Please shorten your "
"password at http://profileedit.myspace.com/index.cfm?fuseaction=accountSettings.changePassword and try again."),
- full_errmsg, (int)
+ full_errmsg,
strlen(session->account->password),
MSIM_MAX_PASSWORD_LENGTH);
/* Replace full_errmsg. */
g_free(full_errmsg);
full_errmsg = suggestion;
+ } else {
+ g_free(full_errmsg);
+ full_errmsg = g_strdup(_("Incorrect username or password"));
}
#endif
break;
@@ -2287,7 +2287,7 @@ msim_send_im(PurpleConnection *gc, const gchar *who, const gchar *message,
message_msim = html_to_msim_markup(session, message);
- if (msim_send_bm(session, who, message_msim, MSIM_BM_INSTANT)) {
+ if (msim_send_bm(session, who, message_msim, MSIM_BM_DELAYABLE_ACTION_OR_IM)) {
/* Return 1 to have Purple show this IM as being sent, 0 to not. I always
* return 1 even if the message could not be sent, since I don't know if
* it has failed yet--because the IM is only sent after the userid is
@@ -2340,7 +2340,7 @@ msim_send_typing(PurpleConnection *gc, const gchar *name,
}
purple_debug_info("msim", "msim_send_typing(%s): %d (%s)\n", name, state, typing_str);
- msim_send_bm(session, name, typing_str, MSIM_BM_ACTION);
+ msim_send_bm(session, name, typing_str, MSIM_BM_INSTANT_ACTION_OR_IM);
return 0;
}
@@ -2632,10 +2632,17 @@ msim_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
MsimMessage *msg;
MsimMessage *msg_persist;
MsimMessage *body;
+ const char *name, *gname;
session = (MsimSession *)gc->proto_data;
+ name = purple_buddy_get_name(buddy);
+ gname = group ? purple_group_get_name(group) : NULL;
+
+ if (msim_get_user_from_buddy(buddy, FALSE) != NULL)
+ return;
+
purple_debug_info("msim", "msim_add_buddy: want to add %s to %s\n",
- buddy->name, (group && group->name) ? group->name : "(no group)");
+ name, gname ? gname : "(no group)");
msg = msim_msg_new(
"addbuddy", MSIM_TYPE_BOOLEAN, TRUE,
@@ -2644,7 +2651,7 @@ msim_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
"reason", MSIM_TYPE_STRING, g_strdup(""),
NULL);
- if (!msim_postprocess_outgoing(session, msg, buddy->name, "newprofileid", "reason")) {
+ if (!msim_postprocess_outgoing(session, msg, name, "newprofileid", "reason")) {
purple_notify_error(NULL, NULL, _("Failed to add buddy"), _("'addbuddy' command failed."));
msim_msg_free(msg);
return;
@@ -2656,7 +2663,7 @@ msim_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
body = msim_msg_new(
"ContactID", MSIM_TYPE_STRING, g_strdup("<uid>"),
- "GroupName", MSIM_TYPE_STRING, g_strdup(group->name),
+ "GroupName", MSIM_TYPE_STRING, g_strdup(gname),
"Position", MSIM_TYPE_INTEGER, 1000,
"Visibility", MSIM_TYPE_INTEGER, 1,
"NickName", MSIM_TYPE_STRING, g_strdup(""),
@@ -2677,7 +2684,7 @@ msim_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
"body", MSIM_TYPE_DICTIONARY, body,
NULL);
- if (!msim_postprocess_outgoing(session, msg_persist, buddy->name, "body", NULL))
+ if (!msim_postprocess_outgoing(session, msg_persist, name, "body", NULL))
{
purple_notify_error(NULL, NULL, _("Failed to add buddy"), _("persist command failed"));
msim_msg_free(msg_persist);
@@ -2686,7 +2693,14 @@ msim_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
msim_msg_free(msg_persist);
/* Add to allow list, remove from block list */
- msim_update_blocklist_for_buddy(session, buddy->name, TRUE, FALSE);
+ msim_update_blocklist_for_buddy(session, name, TRUE, FALSE);
+}
+
+static void
+msim_buddy_free(PurpleBuddy *buddy)
+{
+ msim_user_free(purple_buddy_get_protocol_data(buddy));
+ purple_buddy_set_protocol_data(buddy, NULL);
}
/**
@@ -2698,8 +2712,10 @@ msim_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
MsimSession *session;
MsimMessage *delbuddy_msg;
MsimMessage *persist_msg;
+ const char *name;
session = (MsimSession *)gc->proto_data;
+ name = purple_buddy_get_name(buddy);
delbuddy_msg = msim_msg_new(
"delbuddy", MSIM_TYPE_BOOLEAN, TRUE,
@@ -2707,7 +2723,7 @@ msim_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
/* 'delprofileid' with uid will be inserted here. */
NULL);
- if (!msim_postprocess_outgoing(session, delbuddy_msg, buddy->name, "delprofileid", NULL)) {
+ if (!msim_postprocess_outgoing(session, delbuddy_msg, name, "delprofileid", NULL)) {
purple_notify_error(NULL, NULL, _("Failed to remove buddy"), _("'delbuddy' command failed"));
msim_msg_free(delbuddy_msg);
return;
@@ -2726,7 +2742,7 @@ msim_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
"body", MSIM_TYPE_STRING, g_strdup("ContactID=<uid>"),
NULL);
- if (!msim_postprocess_outgoing(session, persist_msg, buddy->name, "body", NULL)) {
+ if (!msim_postprocess_outgoing(session, persist_msg, name, "body", NULL)) {
purple_notify_error(NULL, NULL, _("Failed to remove buddy"), _("persist command failed"));
msim_msg_free(persist_msg);
return;
@@ -2738,15 +2754,12 @@ msim_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
* doesn't seem like it would be necessary, but the official client
* does it)
*/
- if (!msim_update_blocklist_for_buddy(session, buddy->name, FALSE, FALSE)) {
+ if (!msim_update_blocklist_for_buddy(session, name, FALSE, FALSE)) {
purple_notify_error(NULL, NULL,
_("Failed to remove buddy"), _("blocklist command failed"));
return;
}
- if (buddy->proto_data) {
- msim_user_free(buddy->proto_data);
- buddy->proto_data = NULL;
- }
+ msim_buddy_free(buddy);
}
/**
@@ -2836,13 +2849,6 @@ msim_rem_deny(PurpleConnection *gc, const char *name)
msim_update_blocklist_for_buddy(session, name, FALSE, FALSE);
}
-static void
-msim_buddy_free(PurpleBuddy *buddy)
-{
- msim_user_free(buddy->proto_data);
- buddy->proto_data = NULL;
-}
-
/**
* Returns a string of a username in canonical form. Basically removes all the
* spaces, lowercases the string, and looks up user IDs to usernames.
@@ -3079,9 +3085,10 @@ static PurplePluginProtocolInfo prpl_info = {
NULL, /* unregister_user */
msim_send_attention, /* send_attention */
msim_attention_types, /* attention_types */
-
- sizeof(PurplePluginProtocolInfo), /* struct_size */
+ sizeof(PurplePluginProtocolInfo), /* struct_size */
msim_get_account_text_table, /* get_account_text_table */
+ NULL, /* initiate_media */
+ NULL /* can_do_media */
};
/**
diff --git a/libpurple/protocols/myspace/myspace.h b/libpurple/protocols/myspace/myspace.h
index c9e92a96c1..8f6c8b6662 100644
--- a/libpurple/protocols/myspace/myspace.h
+++ b/libpurple/protocols/myspace/myspace.h
@@ -127,12 +127,12 @@
#define MSIM_FINAL_STRING "\\final\\" /**< Message end marker */
/* Messages */
-#define MSIM_BM_INSTANT 1
-#define MSIM_BM_STATUS 100
-#define MSIM_BM_ACTION 121
-#define MSIM_BM_MEDIA 122
-#define MSIM_BM_PROFILE 124
-#define MSIM_BM_UNOFFICIAL_CLIENT 200
+#define MSIM_BM_DELAYABLE_ACTION_OR_IM 1
+#define MSIM_BM_STATUS 100
+#define MSIM_BM_INSTANT_ACTION_OR_IM 121
+#define MSIM_BM_MEDIA 122
+#define MSIM_BM_PROFILE 124
+#define MSIM_BM_UNOFFICIAL_CLIENT 200
/* Authentication algorithm for login2 */
#define MSIM_AUTH_ALGORITHM 196610
diff --git a/libpurple/protocols/myspace/user.c b/libpurple/protocols/myspace/user.c
index 86115d93e5..4aa09ad08b 100644
--- a/libpurple/protocols/myspace/user.c
+++ b/libpurple/protocols/myspace/user.c
@@ -41,10 +41,10 @@ msim_format_now_playing(const gchar *band, const gchar *song)
}
/**
- * Get the MsimUser from a PurpleBuddy, creating it if needed.
+ * Get the MsimUser from a PurpleBuddy, optionally creating it if needed.
*/
MsimUser *
-msim_get_user_from_buddy(PurpleBuddy *buddy)
+msim_get_user_from_buddy(PurpleBuddy *buddy, gboolean create)
{
MsimUser *user;
@@ -52,17 +52,15 @@ msim_get_user_from_buddy(PurpleBuddy *buddy)
return NULL;
}
- if (!buddy->proto_data) {
+ user = purple_buddy_get_protocol_data(buddy);
+ if (create && !user) {
/* No MsimUser for this buddy; make one. */
user = g_new0(MsimUser, 1);
user->buddy = buddy;
- user->id = purple_blist_node_get_int((PurpleBlistNode*)buddy, "UserID");
- buddy->proto_data = (gpointer)user;
+ purple_buddy_set_protocol_data(buddy, user);
}
- user = (MsimUser *)(buddy->proto_data);
-
return user;
}
@@ -97,7 +95,7 @@ msim_find_user(MsimSession *session, const gchar *username)
return NULL;
}
- user = msim_get_user_from_buddy(buddy);
+ user = msim_get_user_from_buddy(buddy, TRUE);
return user;
}
@@ -111,6 +109,7 @@ msim_append_user_info(MsimSession *session, PurpleNotifyUserInfo *user_info, Msi
{
PurplePresence *presence;
gchar *str;
+ guint uid;
guint cv;
/* Useful to identify the account the tooltip refers to.
@@ -119,6 +118,8 @@ msim_append_user_info(MsimSession *session, PurpleNotifyUserInfo *user_info, Msi
purple_notify_user_info_add_pair(user_info, _("User"), user->username);
}
+ uid = purple_blist_node_get_int((PurpleBlistNode *)user->buddy, "UserID");
+
/* a/s/l...the vitals */
if (user->age) {
char age[16];
@@ -209,9 +210,9 @@ msim_downloaded_buddy_icon(PurpleUtilFetchUrlData *url_data,
gsize len,
const gchar *error_message)
{
- MsimUser *user;
-
- user = (MsimUser *)user_data;
+ MsimUser *user = (MsimUser *)user_data;
+ const char *name = purple_buddy_get_name(user->buddy);
+ PurpleAccount *account;
purple_debug_info("msim_downloaded_buddy_icon",
"Downloaded %" G_GSIZE_FORMAT " bytes\n", len);
@@ -219,12 +220,12 @@ msim_downloaded_buddy_icon(PurpleUtilFetchUrlData *url_data,
if (!url_text) {
purple_debug_info("msim_downloaded_buddy_icon",
"failed to download icon for %s",
- user->buddy->name);
+ name);
return;
}
- purple_buddy_icons_set_for_user(user->buddy->account,
- user->buddy->name,
+ account = purple_buddy_get_account(user->buddy);
+ purple_buddy_icons_set_for_user(account, name,
g_memdup((gchar *)url_text, len), len,
/* Use URL itself as buddy icon "checksum" (TODO: ETag) */
user->image_url); /* checksum */
@@ -247,7 +248,9 @@ msim_downloaded_buddy_icon(PurpleUtilFetchUrlData *url_data,
static void msim_set_artist_or_title(MsimUser *user, const char *new_artist, const char *new_title)
{
PurplePresence *presence;
+ PurpleAccount *account;
const char *prev_artist, *prev_title;
+ const char *name;
if (user->buddy == NULL)
/* User not on buddy list so nothing to do */
@@ -261,8 +264,11 @@ static void msim_set_artist_or_title(MsimUser *user, const char *new_artist, con
if (new_title && !*new_title)
new_title = NULL;
+ account = purple_buddy_get_account(user->buddy);
+ name = purple_buddy_get_name(user->buddy);
+
if (!new_artist && !new_title) {
- purple_prpl_got_user_status_deactive(user->buddy->account, user->buddy->name, "tune");
+ purple_prpl_got_user_status_deactive(account, name, "tune");
return;
}
@@ -282,7 +288,7 @@ static void msim_set_artist_or_title(MsimUser *user, const char *new_artist, con
if (!new_title)
new_title = prev_title;
- purple_prpl_got_user_status(user->buddy->account, user->buddy->name, "tune",
+ purple_prpl_got_user_status(account, name, "tune",
PURPLE_TUNE_TITLE, new_title,
PURPLE_TUNE_ARTIST, new_artist,
NULL);
@@ -299,14 +305,16 @@ static void msim_set_artist_or_title(MsimUser *user, const char *new_artist, con
static void
msim_store_user_info_each(const gchar *key_str, gchar *value_str, MsimUser *user)
{
+ const char *name = user->buddy ? purple_buddy_get_name(user->buddy) : NULL;
+
if (g_str_equal(key_str, "UserID") || g_str_equal(key_str, "ContactID")) {
/* Save to buddy list, if it exists, for quick cached uid lookup with msim_uid2username_from_blist(). */
user->id = atol(value_str);
g_free(value_str);
if (user->buddy)
{
- purple_debug_info("msim", "associating uid %s with username %s\n", key_str, user->buddy->name);
- purple_blist_node_set_int(&user->buddy->node, "UserID", user->id);
+ purple_debug_info("msim", "associating uid %s with username %s\n", key_str, name);
+ purple_blist_node_set_int(PURPLE_BLIST_NODE(user->buddy), "UserID", user->id);
}
/* Need to store in MsimUser, too? What if not on blist? */
} else if (g_str_equal(key_str, "Age")) {
@@ -359,9 +367,8 @@ msim_store_user_info_each(const gchar *key_str, gchar *value_str, MsimUser *user
/* Instead of showing 'no photo' picture, show nothing. */
if (g_str_equal(user->image_url, "http://x.myspace.com/images/no_pic.gif"))
{
- purple_buddy_icons_set_for_user(user->buddy->account,
- user->buddy->name,
- NULL, 0, NULL);
+ purple_buddy_icons_set_for_user(purple_buddy_get_account(user->buddy),
+ name, NULL, 0, NULL);
return;
}
diff --git a/libpurple/protocols/myspace/user.h b/libpurple/protocols/myspace/user.h
index 0f17b28c6d..d1a8b59970 100644
--- a/libpurple/protocols/myspace/user.h
+++ b/libpurple/protocols/myspace/user.h
@@ -46,7 +46,7 @@ typedef struct _MsimUser
* initiated from a user lookup. */
typedef void (*MSIM_USER_LOOKUP_CB)(MsimSession *session, const MsimMessage *userinfo, gpointer data);
-MsimUser *msim_get_user_from_buddy(PurpleBuddy *buddy);
+MsimUser *msim_get_user_from_buddy(PurpleBuddy *buddy, gboolean create);
void msim_user_free(MsimUser *user);
MsimUser *msim_find_user(MsimSession *session, const gchar *username);
void msim_append_user_info(MsimSession *session, PurpleNotifyUserInfo *user_info, MsimUser *user, gboolean full);
diff --git a/libpurple/protocols/myspace/zap.c b/libpurple/protocols/myspace/zap.c
index fdecee6c4c..b0df8bf0e0 100644
--- a/libpurple/protocols/myspace/zap.c
+++ b/libpurple/protocols/myspace/zap.c
@@ -109,7 +109,7 @@ msim_send_zap(MsimSession *session, const gchar *username, guint code)
/* Construct and send the actual zap command. */
zap_string = g_strdup_printf("!!!ZAP_SEND!!!=RTE_BTN_ZAPS_%d", code);
- if (!msim_send_bm(session, username, zap_string, MSIM_BM_ACTION)) {
+ if (!msim_send_bm(session, username, zap_string, MSIM_BM_INSTANT_ACTION_OR_IM)) {
purple_debug_info("msim_send_zap",
"msim_send_bm failed: zapping %s with %s\n",
username, zap_string);
@@ -173,13 +173,13 @@ msim_send_zap_from_menu(PurpleBlistNode *node, gpointer zap_num_ptr)
buddy = (PurpleBuddy *)node;
/* Find the session */
- account = buddy->account;
+ account = purple_buddy_get_account(buddy);
gc = purple_account_get_connection(account);
session = (MsimSession *)gc->proto_data;
zap = GPOINTER_TO_INT(zap_num_ptr);
- purple_prpl_send_attention(session->gc, buddy->name, zap);
+ purple_prpl_send_attention(session->gc, purple_buddy_get_name(buddy), zap);
}
/** Return menu, if any, for a buddy list node. */
diff --git a/libpurple/protocols/novell/nmmessage.c b/libpurple/protocols/novell/nmmessage.c
index aa67bfec47..70b00eed22 100644
--- a/libpurple/protocols/novell/nmmessage.c
+++ b/libpurple/protocols/novell/nmmessage.c
@@ -24,7 +24,6 @@ struct _NMMessage
{
NMConference *conference;
char *text;
- gpointer data;
guint32 ref_count;
};
diff --git a/libpurple/protocols/novell/novell.c b/libpurple/protocols/novell/novell.c
index 55d4a53ea2..49eeebde6a 100644
--- a/libpurple/protocols/novell/novell.c
+++ b/libpurple/protocols/novell/novell.c
@@ -293,7 +293,7 @@ _get_details_resp_setup_buddy(NMUser * user, NMERR_T ret_code,
nm_user_record_get_display_id(user_record));
alias = purple_buddy_get_alias(buddy);
- if (alias == NULL || *alias == '\0' || (strcmp(alias, buddy->name) == 0)) {
+ if (alias == NULL || *alias == '\0' || (strcmp(alias, purple_buddy_get_name(buddy)) == 0)) {
purple_blist_alias_buddy(buddy,
nm_user_record_get_full_name(user_record));
@@ -1175,10 +1175,12 @@ _update_buddy_status(NMUser *user, PurpleBuddy * buddy, int novellstatus, int gm
const char *status_id;
const char *text = NULL;
const char *dn;
+ const char *name;
int idle = 0;
gboolean loggedin = TRUE;
- account = buddy->account;
+ account = purple_buddy_get_account(buddy);
+ name = purple_buddy_get_name(buddy);
switch (novellstatus) {
case NM_STATUS_AVAILABLE:
@@ -1205,7 +1207,7 @@ _update_buddy_status(NMUser *user, PurpleBuddy * buddy, int novellstatus, int gm
}
/* Get status text for the user */
- dn = nm_lookup_dn(user, buddy->name);
+ dn = nm_lookup_dn(user, name);
if (dn) {
NMUserRecord *user_record = nm_find_user_record(user, dn);
if (user_record) {
@@ -1213,9 +1215,9 @@ _update_buddy_status(NMUser *user, PurpleBuddy * buddy, int novellstatus, int gm
}
}
- purple_prpl_got_user_status(account, buddy->name, status_id,
+ purple_prpl_got_user_status(account, name, status_id,
"message", text, NULL);
- purple_prpl_got_user_idle(account, buddy->name,
+ purple_prpl_got_user_idle(account, name,
(novellstatus == NM_STATUS_AWAY_IDLE), idle);
}
@@ -1230,44 +1232,46 @@ _remove_purple_buddies(NMUser *user)
PurpleBlistNode *bnode;
PurpleGroup *group;
PurpleBuddy *buddy;
- PurpleBuddyList *blist;
GSList *rem_list = NULL;
GSList *l;
NMFolder *folder = NULL;
const char *gname = NULL;
- if ((blist = purple_get_blist())) {
- for (gnode = blist->root; gnode; gnode = gnode->next) {
- if (!PURPLE_BLIST_NODE_IS_GROUP(gnode))
+ for (gnode = purple_blist_get_root(); gnode;
+ gnode = purple_blist_node_get_sibling_next(gnode)) {
+ if (!PURPLE_BLIST_NODE_IS_GROUP(gnode))
+ continue;
+ group = (PurpleGroup *) gnode;
+ gname = purple_group_get_name(group);
+ for (cnode = purple_blist_node_get_first_child(gnode);
+ cnode;
+ cnode = purple_blist_node_get_sibling_next(cnode)) {
+ if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
continue;
- group = (PurpleGroup *) gnode;
- for (cnode = gnode->child; cnode; cnode = cnode->next) {
- if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
+ for (bnode = purple_blist_node_get_first_child(cnode);
+ bnode;
+ bnode = purple_blist_node_get_sibling_next(bnode)) {
+ if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
continue;
- for (bnode = cnode->child; bnode; bnode = bnode->next) {
- if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
- continue;
- buddy = (PurpleBuddy *) bnode;
- if (buddy->account == user->client_data) {
- gname = group->name;
- if (strcmp(group->name, NM_ROOT_FOLDER_NAME) == 0)
- gname = "";
- folder = nm_find_folder(user, gname);
- if (folder == NULL ||
- !nm_folder_find_contact_by_display_id(folder, buddy->name)) {
- rem_list = g_slist_append(rem_list, buddy);
- }
+ buddy = (PurpleBuddy *) bnode;
+ if (purple_buddy_get_account(buddy) == user->client_data) {
+ if (strcmp(gname, NM_ROOT_FOLDER_NAME) == 0)
+ gname = "";
+ folder = nm_find_folder(user, gname);
+ if (folder == NULL ||
+ !nm_folder_find_contact_by_display_id(folder, purple_buddy_get_name(buddy))) {
+ rem_list = g_slist_append(rem_list, buddy);
}
}
}
}
+ }
- if (rem_list) {
- for (l = rem_list; l; l = l->next) {
- purple_blist_remove_buddy(l->data);
- }
- g_slist_free(rem_list);
+ if (rem_list) {
+ for (l = rem_list; l; l = l->next) {
+ purple_blist_remove_buddy(l->data);
}
+ g_slist_free(rem_list);
}
}
@@ -1613,14 +1617,14 @@ _initiate_conference_cb(PurpleBlistNode *node, gpointer ignored)
g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
buddy = (PurpleBuddy *) node;
- gc = purple_account_get_connection(buddy->account);
+ gc = purple_account_get_connection(purple_buddy_get_account(buddy));
user = gc->proto_data;
if (user == NULL)
return;
/* We should already have a userrecord for the buddy */
- user_record = nm_find_user_record(user, buddy->name);
+ user_record = nm_find_user_record(user, purple_buddy_get_name(buddy));
if (user_record == NULL)
return;
@@ -2538,12 +2542,12 @@ novell_add_buddy(PurpleConnection * gc, PurpleBuddy *buddy, PurpleGroup * group)
NMContact *contact;
NMUser *user;
NMERR_T rc = NM_OK;
- const char *alias, *gname;
+ const char *alias, *gname, *bname;
if (gc == NULL || buddy == NULL || group == NULL)
return;
- user = (NMUser *) gc->proto_data;
+ user = (NMUser *) purple_connection_get_protocol_data(gc);
if (user == NULL)
return;
@@ -2553,23 +2557,27 @@ novell_add_buddy(PurpleConnection * gc, PurpleBuddy *buddy, PurpleGroup * group)
if (!user->clist_synched)
return;
+ /* Don't re-add a buddy that is already on our contact list */
+ if (nm_find_user_record(user, purple_buddy_get_name(buddy)) != NULL)
+ return;
+
contact = nm_create_contact();
- nm_contact_set_dn(contact, buddy->name);
+ nm_contact_set_dn(contact, purple_buddy_get_name(buddy));
/* Remove the PurpleBuddy (we will add it back after adding it
* to the server side list). Save the alias if there is one.
*/
alias = purple_buddy_get_alias(buddy);
- if (alias && strcmp(alias, buddy->name))
+ bname = purple_buddy_get_name(buddy);
+ if (alias && strcmp(alias, bname))
nm_contact_set_display_name(contact, alias);
purple_blist_remove_buddy(buddy);
buddy = NULL;
- if (strcmp(group->name, NM_ROOT_FOLDER_NAME) == 0) {
+ gname = purple_group_get_name(group);
+ if (strcmp(gname, NM_ROOT_FOLDER_NAME) == 0) {
gname = "";
- } else {
- gname = group->name;
}
folder = nm_find_folder(user, gname);
@@ -2603,11 +2611,10 @@ novell_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group
return;
user = (NMUser *) gc->proto_data;
- if (user && (dn = nm_lookup_dn(user, buddy->name))) {
- if (strcmp(group->name, NM_ROOT_FOLDER_NAME) == 0) {
+ if (user && (dn = nm_lookup_dn(user, purple_buddy_get_name(buddy)))) {
+ gname = purple_group_get_name(group);
+ if (strcmp(gname, NM_ROOT_FOLDER_NAME) == 0) {
gname = "";
- } else {
- gname = group->name;
}
folder = nm_find_folder(user, gname);
if (folder) {
@@ -2637,7 +2644,7 @@ novell_remove_group(PurpleConnection * gc, PurpleGroup *group)
user = (NMUser *) gc->proto_data;
if (user) {
- NMFolder *folder = nm_find_folder(user, group->name);
+ NMFolder *folder = nm_find_folder(user, purple_group_get_name(group));
if (folder) {
rc = nm_send_remove_folder(user, folder,
@@ -2684,9 +2691,11 @@ novell_alias_buddy(PurpleConnection * gc, const char *name, const char *alias)
}
if (group) {
+ const char *balias;
buddy = purple_find_buddy_in_group(user->client_data,
name, group);
- if (buddy && strcmp(buddy->alias, alias))
+ balias = buddy ? purple_buddy_get_local_buddy_alias(buddy) : NULL;
+ if (balias && strcmp(balias, alias))
purple_blist_alias_buddy(buddy, alias);
}
@@ -2777,8 +2786,9 @@ novell_rename_group(PurpleConnection * gc, const char *old_name,
user = gc->proto_data;
if (user) {
+ const char *gname = purple_group_get_name(group);
/* Does new folder exist already? */
- if (nm_find_folder(user, group->name)) {
+ if (nm_find_folder(user, gname)) {
/* purple_blist_rename_group() adds the buddies
* to the new group and removes the old group...
* so there is nothing more to do here.
@@ -2793,7 +2803,7 @@ novell_rename_group(PurpleConnection * gc, const char *old_name,
folder = nm_find_folder(user, old_name);
if (folder) {
- rc = nm_send_rename_folder(user, folder, group->name,
+ rc = nm_send_rename_folder(user, folder, gname,
_rename_folder_resp_cb, NULL);
_check_for_disconnect(user, rc);
}
@@ -2819,12 +2829,12 @@ novell_tooltip_text(PurpleBuddy * buddy, PurpleNotifyUserInfo * user_info, gbool
if (buddy == NULL)
return;
- gc = purple_account_get_connection(buddy->account);
+ gc = purple_account_get_connection(purple_buddy_get_account(buddy));
if (gc == NULL || (user = gc->proto_data) == NULL)
return;
if (PURPLE_BUDDY_IS_ONLINE(buddy)) {
- user_record = nm_find_user_record(user, buddy->name);
+ user_record = nm_find_user_record(user, purple_buddy_get_name(buddy));
if (user_record) {
status = nm_user_record_get_status(user_record);
text = nm_user_record_get_status_text(user_record);
@@ -2923,14 +2933,16 @@ novell_status_text(PurpleBuddy * buddy)
{
const char *text = NULL;
const char *dn = NULL;
+ PurpleAccount *account;
- if (buddy && buddy->account) {
- PurpleConnection *gc = purple_account_get_connection(buddy->account);
+ account = buddy ? purple_buddy_get_account(buddy) : NULL;
+ if (buddy && account) {
+ PurpleConnection *gc = purple_account_get_connection(account);
if (gc && gc->proto_data) {
NMUser *user = gc->proto_data;
- dn = nm_lookup_dn(user, buddy->name);
+ dn = nm_lookup_dn(user, purple_buddy_get_name(buddy));
if (dn) {
NMUserRecord *user_record = nm_find_user_record(user, dn);
@@ -3512,13 +3524,13 @@ static PurplePluginProtocolInfo prpl_info = {
NULL, /* whiteboard_prpl_ops */
NULL, /* send_raw */
NULL, /* roomlist_room_serialize */
-
- /* padding */
- NULL,
- NULL,
- NULL,
+ NULL, /* unregister_user */
+ NULL, /* send_attention */
+ NULL, /* get_attention_types */
sizeof(PurplePluginProtocolInfo), /* struct_size */
- NULL
+ NULL, /* get_account_text_table */
+ NULL, /* initiate_media */
+ NULL /* can_do_media */
};
static PurplePluginInfo info = {
diff --git a/libpurple/protocols/null/README b/libpurple/protocols/null/README
index a63e50667d..1e5d962e0b 100644
--- a/libpurple/protocols/null/README
+++ b/libpurple/protocols/null/README
@@ -28,11 +28,10 @@ BUILDING AND INSTALLING
-----------------------
To build, just run ./configure as usual in the root directory of the pidgin
-source distribution. Then cd libpurple/protocols/null and type make. To
-install, copy libnull.la and .libs/libnull.so into your ~/.purple/plugins
-directory. Then run Pidgin.
+source distribution. Then cd libpurple/protocols/null and then make. To
+install, run make install. Then run Pidgin.
-To build nullprpl on Windows (with Cygwin/MinGW), use Makefile.mingw.
+To build nullprpl on Windows (with Cygwin/MinGW), use: make -f Makefile.mingw
-----
USAGE
diff --git a/libpurple/protocols/null/nullprpl.c b/libpurple/protocols/null/nullprpl.c
index 74caa49565..13e6528144 100644
--- a/libpurple/protocols/null/nullprpl.c
+++ b/libpurple/protocols/null/nullprpl.c
@@ -220,25 +220,7 @@ static GList *nullprpl_actions(PurplePlugin *plugin, gpointer context)
*/
static const char *nullprpl_list_icon(PurpleAccount *acct, PurpleBuddy *buddy)
{
- /* shamelessly steal (er, borrow) the meanwhile protocol icon. it's cute! */
- return "meanwhile";
-}
-
-static const char *nullprpl_list_emblem(PurpleBuddy *buddy)
-{
- const char* emblem;
-
- if (get_nullprpl_gc(buddy->name)) {
- PurplePresence *presence = purple_buddy_get_presence(buddy);
- PurpleStatus *status = purple_presence_get_active_status(presence);
- emblem = purple_status_get_name(status);
- } else {
- emblem = "offline";
- }
-
- purple_debug_info("nullprpl", "using emblem %s for %s's buddy %s\n",
- emblem, buddy->account->username, buddy->name);
- return emblem;
+ return "null";
}
static char *nullprpl_status_text(PurpleBuddy *buddy) {
@@ -304,22 +286,22 @@ static GList *nullprpl_status_types(PurpleAccount *acct)
acct->username,
NULL_STATUS_ONLINE, NULL_STATUS_AWAY, NULL_STATUS_OFFLINE);
- type = purple_status_type_new(PURPLE_STATUS_AVAILABLE, NULL_STATUS_ONLINE,
- NULL_STATUS_ONLINE, TRUE);
- purple_status_type_add_attr(type, "message", _("Online"),
- purple_value_new(PURPLE_TYPE_STRING));
+ type = purple_status_type_new_with_attrs(PURPLE_STATUS_AVAILABLE,
+ NULL_STATUS_ONLINE, NULL, TRUE, TRUE, FALSE,
+ "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
+ NULL);
types = g_list_prepend(types, type);
- type = purple_status_type_new(PURPLE_STATUS_AWAY, NULL_STATUS_AWAY,
- NULL_STATUS_AWAY, TRUE);
- purple_status_type_add_attr(type, "message", _("Away"),
- purple_value_new(PURPLE_TYPE_STRING));
+ type = purple_status_type_new_with_attrs(PURPLE_STATUS_AWAY,
+ NULL_STATUS_AWAY, NULL, TRUE, TRUE, FALSE,
+ "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
+ NULL);
types = g_list_prepend(types, type);
-
- type = purple_status_type_new(PURPLE_STATUS_OFFLINE, NULL_STATUS_OFFLINE,
- NULL_STATUS_OFFLINE, TRUE);
- purple_status_type_add_attr(type, "message", _("Offline"),
- purple_value_new(PURPLE_TYPE_STRING));
+
+ type = purple_status_type_new_with_attrs(PURPLE_STATUS_OFFLINE,
+ NULL_STATUS_OFFLINE, NULL, TRUE, TRUE, FALSE,
+ "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
+ NULL);
types = g_list_prepend(types, type);
return g_list_reverse(types);
@@ -1074,7 +1056,7 @@ static PurplePluginProtocolInfo prpl_info =
PURPLE_ICON_SCALE_DISPLAY, /* scale_rules */
},
nullprpl_list_icon, /* list_icon */
- nullprpl_list_emblem, /* list_emblem */
+ NULL, /* list_emblem */
nullprpl_status_text, /* status_text */
nullprpl_tooltip_text, /* tooltip_text */
nullprpl_status_types, /* status_types */
@@ -1131,24 +1113,26 @@ static PurplePluginProtocolInfo prpl_info =
NULL, /* whiteboard_prpl_ops */
NULL, /* send_raw */
NULL, /* roomlist_room_serialize */
- NULL, /* padding... */
- NULL,
+ NULL, /* unregister_user */
+ NULL, /* send_attention */
+ NULL, /* get_attention_types */
+ sizeof(PurplePluginProtocolInfo), /* struct_size */
NULL,
- sizeof(PurplePluginProtocolInfo), /* struct_size */
- NULL
+ NULL, /* initiate_media */
+ NULL /* can_do_media */
};
static void nullprpl_init(PurplePlugin *plugin)
{
/* see accountopt.h for information about user splits and protocol options */
PurpleAccountUserSplit *split = purple_account_user_split_new(
- _("Example user split (unused)"), /* text shown to user */
- "default", /* default value */
- '@'); /* field separator */
+ _("Example user split"), /* text shown to user */
+ "default", /* default value */
+ '@'); /* field separator */
PurpleAccountOption *option = purple_account_option_string_new(
- _("Example option (unused)"), /* text shown to user */
- "example", /* pref name */
- "default"); /* default value */
+ _("Example option"), /* text shown to user */
+ "example", /* pref name */
+ "default"); /* default value */
purple_debug_info("nullprpl", "starting up\n");
@@ -1157,13 +1141,13 @@ static void nullprpl_init(PurplePlugin *plugin)
/* register whisper chat command, /msg */
purple_cmd_register("msg",
- "ws", /* args: recipient and message */
+ "ws", /* args: recipient and message */
PURPLE_CMD_P_DEFAULT, /* priority */
PURPLE_CMD_FLAG_CHAT,
"prpl-null",
send_whisper,
"msg &lt;username&gt; &lt;message&gt;: send a private message, aka a whisper",
- NULL); /* userdata */
+ NULL); /* userdata */
/* get ready to store offline messages */
goffline_messages = g_hash_table_new_full(g_str_hash, /* hash fn */
@@ -1190,12 +1174,12 @@ static PurplePluginInfo info =
NULL, /* dependencies */
PURPLE_PRIORITY_DEFAULT, /* priority */
NULLPRPL_ID, /* id */
- "Nullprpl", /* name */
- "0.3", /* version */
- "Null Protocol Plugin", /* summary */
- "Null Protocol Plugin", /* description */
- "Ryan Barrett <nullprpl@ryanb.org>", /* author */
- "http://snarfed.org/space/pidgin+null+protocol+plugin", /* homepage */
+ "Null - Testing Plugin", /* name */
+ DISPLAY_VERSION, /* version */
+ N_("Null Protocol Plugin"), /* summary */
+ N_("Null Protocol Plugin"), /* description */
+ NULL, /* author */
+ PURPLE_WEBSITE, /* homepage */
NULL, /* load */
NULL, /* unload */
nullprpl_destroy, /* destroy */
diff --git a/libpurple/protocols/oscar/bstream.c b/libpurple/protocols/oscar/bstream.c
index 9119fe063e..01e8db912b 100644
--- a/libpurple/protocols/oscar/bstream.c
+++ b/libpurple/protocols/oscar/bstream.c
@@ -311,3 +311,37 @@ int byte_stream_putuid(ByteStream *bs, OscarData *od)
return byte_stream_putle32(bs, atoi(purple_account_get_username(account)));
}
+
+void byte_stream_put_bart_asset(ByteStream *bs, guint16 type, ByteStream *data)
+{
+ byte_stream_put16(bs, type);
+
+ if (data != NULL && data->len > 0) {
+ /* Flags. 0x04 means "this asset has data attached to it" */
+ byte_stream_put8(bs, 0x04); /* Flags */
+ byte_stream_put8(bs, data->len); /* Length */
+ byte_stream_rewind(data);
+ byte_stream_putbs(bs, data, data->len); /* Data */
+ } else {
+ byte_stream_put8(bs, 0x00); /* No flags */
+ byte_stream_put8(bs, 0x00); /* Length */
+ /* No data */
+ }
+}
+
+void byte_stream_put_bart_asset_str(ByteStream *bs, guint16 type, const char *datastr)
+{
+ ByteStream data;
+ size_t len = datastr != NULL ? strlen(datastr) : 0;
+
+ if (len > 0) {
+ byte_stream_new(&data, 2 + len + 2);
+ byte_stream_put16(&data, len); /* Length */
+ byte_stream_putstr(&data, datastr); /* String */
+ byte_stream_put16(&data, 0x0000); /* Unknown */
+ byte_stream_put_bart_asset(bs, type, &data);
+ byte_stream_destroy(&data);
+ } else {
+ byte_stream_put_bart_asset(bs, type, NULL);
+ }
+}
diff --git a/libpurple/protocols/oscar/family_admin.c b/libpurple/protocols/oscar/family_admin.c
index b111c3dfaf..c276f12cb9 100644
--- a/libpurple/protocols/oscar/family_admin.c
+++ b/libpurple/protocols/oscar/family_admin.c
@@ -21,9 +21,8 @@
/*
* Family 0x0007 - Account Administration.
*
- * Used for stuff like changing the formating of your screen name, changing your
+ * Used for stuff like changing the formating of your username, changing your
* email address, requesting an account confirmation email, getting account info,
- *
*/
#include "oscar.h"
@@ -32,7 +31,7 @@
* Subtype 0x0002 - Request a bit of account info.
*
* Info should be one of the following:
- * 0x0001 - Screen name formatting
+ * 0x0001 - Username formatting
* 0x0011 - Email address
* 0x0013 - Unknown
*/
@@ -111,7 +110,7 @@ infochange(OscarData *od, FlapConnection *conn, aim_module_t *mod, FlapFrame *fr
}
/**
- * Subtype 0x0004 - Set screenname formatting.
+ * Subtype 0x0004 - Set the formatting of username (change spaces and capitalization).
*/
void
aim_admin_setnick(OscarData *od, FlapConnection *conn, const char *newnick)
diff --git a/libpurple/protocols/oscar/family_alert.c b/libpurple/protocols/oscar/family_alert.c
index f945dec34d..df6f909d7a 100644
--- a/libpurple/protocols/oscar/family_alert.c
+++ b/libpurple/protocols/oscar/family_alert.c
@@ -22,10 +22,10 @@
* Family 0x0018 - Email notification
*
* Used for being alerted when the email address(es) associated with
- * your screen name get new electronic-m. For normal AIM accounts, you
- * get the email address screenname@netscape.net. AOL accounts have
- * screenname@aol.com, and can also activate a netscape.net account.
- *
+ * your username get new electronic-m. For normal AIM accounts, you
+ * get the email address username@netscape.net. AOL accounts have
+ * username@aol.com, and can also activate a netscape.net account.
+ * Note: This information might be out of date.
*/
#include "oscar.h"
@@ -88,7 +88,7 @@ aim_email_sendcookies(OscarData *od)
* but this is coded so it will handle that, and handle it well.
* This tells you if you have unread mail or not, the URL you
* should use to access that mail, and the domain name for the
- * email account (screenname@domainname.com). If this is the
+ * email account (username@domainname.com). If this is the
* first 0x0007 SNAC you've received since you signed on, or if
* this is just a periodic status update, this will also contain
* the number of unread emails that you have.
diff --git a/libpurple/protocols/oscar/family_auth.c b/libpurple/protocols/oscar/family_auth.c
index ca7a069ee1..422f704174 100644
--- a/libpurple/protocols/oscar/family_auth.c
+++ b/libpurple/protocols/oscar/family_auth.c
@@ -129,6 +129,8 @@ goddamnicq2(OscarData *od, FlapConnection *conn, const char *sn, const char *pas
GSList *tlvlist = NULL;
int passwdlen;
guint8 *password_encoded;
+ const char *clientstring;
+ guint32 distrib;
passwdlen = strlen(password);
password_encoded = (guint8 *)g_malloc(passwdlen+1);
@@ -139,18 +141,25 @@ goddamnicq2(OscarData *od, FlapConnection *conn, const char *sn, const char *pas
aim_encode_password(password, password_encoded);
+ clientstring = purple_prefs_get_string("/plugins/prpl/oscar/clientstring");
+ if (clientstring == NULL)
+ clientstring = ci->clientstring;
+ distrib = purple_prefs_get_int("/plugins/prpl/oscar/distid");
+ if ((gint32)distrib == -1)
+ distrib = ci->distrib;
+
byte_stream_put32(&frame->data, 0x00000001); /* FLAP Version */
aim_tlvlist_add_str(&tlvlist, 0x0001, sn);
aim_tlvlist_add_raw(&tlvlist, 0x0002, passwdlen, password_encoded);
- if (ci->clientstring)
- aim_tlvlist_add_str(&tlvlist, 0x0003, ci->clientstring);
+ if (clientstring)
+ aim_tlvlist_add_str(&tlvlist, 0x0003, clientstring);
aim_tlvlist_add_16(&tlvlist, 0x0016, (guint16)ci->clientid);
aim_tlvlist_add_16(&tlvlist, 0x0017, (guint16)ci->major);
aim_tlvlist_add_16(&tlvlist, 0x0018, (guint16)ci->minor);
aim_tlvlist_add_16(&tlvlist, 0x0019, (guint16)ci->point);
aim_tlvlist_add_16(&tlvlist, 0x001a, (guint16)ci->build);
- aim_tlvlist_add_32(&tlvlist, 0x0014, (guint32)ci->distrib); /* distribution chan */
+ aim_tlvlist_add_32(&tlvlist, 0x0014, distrib); /* distribution chan */
aim_tlvlist_add_str(&tlvlist, 0x000f, ci->lang);
aim_tlvlist_add_str(&tlvlist, 0x000e, ci->country);
@@ -210,6 +219,8 @@ aim_send_login(OscarData *od, FlapConnection *conn, const char *sn, const char *
guint8 digest[16];
aim_snacid_t snacid;
size_t password_len;
+ const char *clientstring;
+ guint32 distrib;
if (!ci || !sn || !password)
return -EINVAL;
@@ -229,27 +240,34 @@ aim_send_login(OscarData *od, FlapConnection *conn, const char *sn, const char *
/* Truncate ICQ and AOL passwords, if necessary */
password_len = strlen(password);
- if (aim_snvalid_icq(sn) && (password_len > MAXICQPASSLEN))
+ if (oscar_util_valid_name_icq(sn) && (password_len > MAXICQPASSLEN))
password_len = MAXICQPASSLEN;
else if (truncate_pass && password_len > 8)
password_len = 8;
aim_encode_password_md5(password, password_len, key, digest);
+ clientstring = purple_prefs_get_string("/plugins/prpl/oscar/clientstring");
+ if (clientstring == NULL)
+ clientstring = ci->clientstring;
+ distrib = purple_prefs_get_int("/plugins/prpl/oscar/distid");
+ if ((gint32)distrib == -1)
+ distrib = ci->distrib;
+
aim_tlvlist_add_raw(&tlvlist, 0x0025, 16, digest);
#ifndef USE_OLD_MD5
aim_tlvlist_add_noval(&tlvlist, 0x004c);
#endif
- if (ci->clientstring)
- aim_tlvlist_add_str(&tlvlist, 0x0003, ci->clientstring);
+ if (clientstring)
+ aim_tlvlist_add_str(&tlvlist, 0x0003, clientstring);
aim_tlvlist_add_16(&tlvlist, 0x0016, (guint16)ci->clientid);
aim_tlvlist_add_16(&tlvlist, 0x0017, (guint16)ci->major);
aim_tlvlist_add_16(&tlvlist, 0x0018, (guint16)ci->minor);
aim_tlvlist_add_16(&tlvlist, 0x0019, (guint16)ci->point);
aim_tlvlist_add_16(&tlvlist, 0x001a, (guint16)ci->build);
- aim_tlvlist_add_32(&tlvlist, 0x0014, (guint32)ci->distrib);
+ aim_tlvlist_add_32(&tlvlist, 0x0014, distrib);
aim_tlvlist_add_str(&tlvlist, 0x000f, ci->lang);
aim_tlvlist_add_str(&tlvlist, 0x000e, ci->country);
@@ -293,11 +311,11 @@ parse(OscarData *od, FlapConnection *conn, aim_module_t *mod, FlapFrame *frame,
tlvlist = aim_tlvlist_read(bs);
/*
- * No matter what, we should have a screen name.
+ * No matter what, we should have a username.
*/
if (aim_tlv_gettlv(tlvlist, 0x0001, 1)) {
- info->sn = aim_tlv_getstr(tlvlist, 0x0001, 1);
- purple_connection_set_display_name(od->gc, info->sn);
+ info->bn = aim_tlv_getstr(tlvlist, 0x0001, 1);
+ purple_connection_set_display_name(od->gc, info->bn);
}
/*
@@ -394,7 +412,7 @@ parse(OscarData *od, FlapConnection *conn, aim_module_t *mod, FlapFrame *frame,
#if 0
/*
- * Unknown. Seen on an @mac.com screen name with value of 0x003f
+ * Unknown. Seen on an @mac.com username with value of 0x003f
*/
if (aim_tlv_gettlv(tlvlist, 0x0055, 1)) {
/* Unhandled */
@@ -421,7 +439,7 @@ parse(OscarData *od, FlapConnection *conn, aim_module_t *mod, FlapFrame *frame,
* - connect
* - server sends flap version
* - client sends flap version
- * - client sends screen name (17/6)
+ * - client sends username (17/6)
* - server sends hash key (17/7)
* - client sends auth request (17/2 -- aim_send_login)
* - server yells
@@ -460,7 +478,7 @@ goddamnicq(OscarData *od, FlapConnection *conn, const char *sn)
* Subtype 0x0006
*
* In AIM 3.5 protocol, the first stage of login is to request login from the
- * Authorizer, passing it the screen name for verification. If the name is
+ * Authorizer, passing it the username for verification. If the name is
* invalid, a 0017/0003 is spit back, with the standard error contents. If
* valid, a 0017/0007 comes back, which is the signal to send it the main
* login command (0017/0002).
@@ -527,7 +545,7 @@ keyparse(OscarData *od, FlapConnection *conn, aim_module_t *mod, FlapFrame *fram
/*
* If the truncate_pass TLV exists then we should truncate the
* user's password to 8 characters. This flag is sent to us
- * when logging in with an AOL user's screen name.
+ * when logging in with an AOL user's username.
*/
truncate_pass = aim_tlv_gettlv(tlvlist, 0x0026, 1) != NULL;
@@ -597,7 +615,7 @@ auth_shutdown(OscarData *od, aim_module_t *mod)
{
if (od->authinfo != NULL)
{
- g_free(od->authinfo->sn);
+ g_free(od->authinfo->bn);
g_free(od->authinfo->bosip);
g_free(od->authinfo->errorurl);
g_free(od->authinfo->email);
diff --git a/libpurple/protocols/oscar/family_bart.c b/libpurple/protocols/oscar/family_bart.c
index d699f91617..ee388456bd 100644
--- a/libpurple/protocols/oscar/family_bart.c
+++ b/libpurple/protocols/oscar/family_bart.c
@@ -90,26 +90,26 @@ uploadack(OscarData *od, FlapConnection *conn, aim_module_t *mod, FlapFrame *fra
* Subtype 0x0004 - Request someone's icon.
*
* @param od The oscar session.
- * @param sn The screen name of the person who's icon you are requesting.
+ * @param bn The name of the buddy whose icon you are requesting.
* @param iconcsum The MD5 checksum of the icon you are requesting.
* @param iconcsumlen Length of the MD5 checksum given above. Should be 10 bytes.
* @return Return 0 if no errors, otherwise return the error number.
*/
int
-aim_bart_request(OscarData *od, const char *sn, guint8 iconcsumtype, const guint8 *iconcsum, guint16 iconcsumlen)
+aim_bart_request(OscarData *od, const char *bn, guint8 iconcsumtype, const guint8 *iconcsum, guint16 iconcsumlen)
{
FlapConnection *conn;
ByteStream bs;
aim_snacid_t snacid;
- if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_BART)) || !sn || !strlen(sn) || !iconcsum || !iconcsumlen)
+ if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_BART)) || !bn || !strlen(bn) || !iconcsum || !iconcsumlen)
return -EINVAL;
- byte_stream_new(&bs, 1+strlen(sn) + 4 + 1+iconcsumlen);
+ byte_stream_new(&bs, 1+strlen(bn) + 4 + 1+iconcsumlen);
- /* Screen name */
- byte_stream_put8(&bs, strlen(sn));
- byte_stream_putstr(&bs, sn);
+ /* Buddy name */
+ byte_stream_put8(&bs, strlen(bn));
+ byte_stream_putstr(&bs, bn);
/* Some numbers. You like numbers, right? */
byte_stream_put8(&bs, 0x01);
@@ -138,11 +138,11 @@ parseicon(OscarData *od, FlapConnection *conn, aim_module_t *mod, FlapFrame *fra
{
int ret = 0;
aim_rxcallback_t userfunc;
- char *sn;
+ char *bn;
guint16 flags, iconlen;
guint8 iconcsumtype, iconcsumlen, *iconcsum, *icon;
- sn = byte_stream_getstr(bs, byte_stream_get8(bs));
+ bn = byte_stream_getstr(bs, byte_stream_get8(bs));
flags = byte_stream_get16(bs);
iconcsumtype = byte_stream_get8(bs);
iconcsumlen = byte_stream_get8(bs);
@@ -151,9 +151,9 @@ parseicon(OscarData *od, FlapConnection *conn, aim_module_t *mod, FlapFrame *fra
icon = byte_stream_getraw(bs, iconlen);
if ((userfunc = aim_callhandler(od, snac->family, snac->subtype)))
- ret = userfunc(od, conn, frame, sn, iconcsumtype, iconcsum, iconcsumlen, icon, iconlen);
+ ret = userfunc(od, conn, frame, bn, iconcsumtype, iconcsum, iconcsumlen, icon, iconlen);
- g_free(sn);
+ g_free(bn);
g_free(iconcsum);
g_free(icon);
diff --git a/libpurple/protocols/oscar/family_bos.c b/libpurple/protocols/oscar/family_bos.c
index e34eba43b2..2790b2ed82 100644
--- a/libpurple/protocols/oscar/family_bos.c
+++ b/libpurple/protocols/oscar/family_bos.c
@@ -94,8 +94,7 @@ aim_bos_setgroupperm(OscarData *od, FlapConnection *conn, guint32 mask)
* AIM_VISIBILITYCHANGE_DENYADD: Hides you from provided list of names
* AIM_VISIBILITYCHANGE_DENYREMOVE: Lets list see you again
*
- * list should be a list of
- * screen names in the form "Screen Name One&ScreenNameTwo&" etc.
+ * list should be a list of "Buddy Name One&BuddyNameTwo&" etc.
*
* Equivelents to options in WinAIM:
* - Allow all users to contact me: Send an AIM_VISIBILITYCHANGE_DENYADD
diff --git a/libpurple/protocols/oscar/family_buddy.c b/libpurple/protocols/oscar/family_buddy.c
index b20e0fc7f5..3b98664519 100644
--- a/libpurple/protocols/oscar/family_buddy.c
+++ b/libpurple/protocols/oscar/family_buddy.c
@@ -121,7 +121,7 @@ aim_buddylist_addbuddy(OscarData *od, FlapConnection *conn, const char *sn)
*
* This just builds the "set buddy list" command then queues it.
*
- * buddy_list = "Screen Name One&ScreenNameTwo&";
+ * buddy_list = "Buddy Name One&BuddyNameTwo&";
*
* XXX Clean this up.
*
@@ -222,7 +222,7 @@ buddychange(OscarData *od, FlapConnection *conn, aim_module_t *mod, FlapFrame *f
ret = userfunc(od, conn, frame, &userinfo);
if (snac->subtype == SNAC_SUBTYPE_BUDDY_ONCOMING && userinfo.flags & AIM_FLAG_AWAY)
- aim_locate_autofetch_away_message(od, userinfo.sn);
+ aim_locate_autofetch_away_message(od, userinfo.bn);
aim_info_free(&userinfo);
diff --git a/libpurple/protocols/oscar/family_chatnav.c b/libpurple/protocols/oscar/family_chatnav.c
index d24c31eb0d..1509b3c14e 100644
--- a/libpurple/protocols/oscar/family_chatnav.c
+++ b/libpurple/protocols/oscar/family_chatnav.c
@@ -44,6 +44,8 @@ error(OscarData *od, FlapConnection *conn, aim_module_t *mod, FlapFrame *frame,
if (snac2->family != SNAC_FAMILY_CHATNAV) {
purple_debug_warning("oscar", "chatnav error: received response that maps to corrupt request (fam=%04x)\n", snac2->family);
+ g_free(snac2->data);
+ g_free(snac2);
return 0;
}
@@ -462,6 +464,8 @@ parseinfo(OscarData *od, FlapConnection *conn, aim_module_t *mod, FlapFrame *fra
if (snac2->family != SNAC_FAMILY_CHATNAV) {
purple_debug_misc("oscar", "faim: chatnav_parse_info: received response that maps to corrupt request! (fam=%04x)\n", snac2->family);
+ g_free(snac2->data);
+ g_free(snac2);
return 0;
}
diff --git a/libpurple/protocols/oscar/family_feedbag.c b/libpurple/protocols/oscar/family_feedbag.c
index dcc32b7e05..0ef5370068 100644
--- a/libpurple/protocols/oscar/family_feedbag.c
+++ b/libpurple/protocols/oscar/family_feedbag.c
@@ -243,7 +243,7 @@ static int aim_ssi_itemlist_cmp(struct aim_ssi_item *cur1, struct aim_ssi_item *
if (!cur1->name && cur2->name)
return 6;
- if (cur1->name && cur2->name && aim_sncmp(cur1->name, cur2->name))
+ if (cur1->name && cur2->name && oscar_util_name_compare(cur1->name, cur2->name))
return 7;
if (cur1->gid != cur2->gid)
@@ -285,8 +285,8 @@ struct aim_ssi_item *aim_ssi_itemlist_find(struct aim_ssi_item *list, guint16 gi
}
/**
- * Locally find an item given a group name, screen name, and type. If group name
- * and screen name are null, then just return the first item of the given type.
+ * Locally find an item given a group name, buddy name, and type. If group name
+ * and buddy name are null, then just return the first item of the given type.
*
* @param list A pointer to the current list of items.
* @param gn The group name of the desired item.
@@ -294,31 +294,31 @@ struct aim_ssi_item *aim_ssi_itemlist_find(struct aim_ssi_item *list, guint16 gi
* @param type The type of the desired item.
* @return Return a pointer to the item if found, else return NULL.
*/
-struct aim_ssi_item *aim_ssi_itemlist_finditem(struct aim_ssi_item *list, const char *gn, const char *sn, guint16 type)
+struct aim_ssi_item *aim_ssi_itemlist_finditem(struct aim_ssi_item *list, const char *gn, const char *bn, guint16 type)
{
struct aim_ssi_item *cur;
if (!list)
return NULL;
- if (gn && sn) { /* For finding buddies in groups */
+ if (gn && bn) { /* For finding buddies in groups */
for (cur=list; cur; cur=cur->next)
- if ((cur->type == type) && (cur->name) && !(aim_sncmp(cur->name, sn))) {
+ if ((cur->type == type) && (cur->name) && !(oscar_util_name_compare(cur->name, bn))) {
struct aim_ssi_item *curg;
for (curg=list; curg; curg=curg->next)
- if ((curg->type == AIM_SSI_TYPE_GROUP) && (curg->gid == cur->gid) && (curg->name) && !(aim_sncmp(curg->name, gn)))
+ if ((curg->type == AIM_SSI_TYPE_GROUP) && (curg->gid == cur->gid) && (curg->name) && !(oscar_util_name_compare(curg->name, gn)))
return cur;
}
} else if (gn) { /* For finding groups */
for (cur=list; cur; cur=cur->next) {
- if ((cur->type == type) && (cur->bid == 0x0000) && (cur->name) && !(aim_sncmp(cur->name, gn))) {
+ if ((cur->type == type) && (cur->bid == 0x0000) && (cur->name) && !(oscar_util_name_compare(cur->name, gn))) {
return cur;
}
}
- } else if (sn) { /* For finding permits, denies, and ignores */
+ } else if (bn) { /* For finding permits, denies, and ignores */
for (cur=list; cur; cur=cur->next) {
- if ((cur->type == type) && (cur->name) && !(aim_sncmp(cur->name, sn))) {
+ if ((cur->type == type) && (cur->name) && !(oscar_util_name_compare(cur->name, bn))) {
return cur;
}
}
@@ -336,14 +336,14 @@ struct aim_ssi_item *aim_ssi_itemlist_finditem(struct aim_ssi_item *list, const
* Check if the given buddy exists in any group in the buddy list.
*
* @param list A pointer to the current list of items.
- * @param sn The group name of the desired item.
+ * @param bn The group name of the desired item.
* @return Return a pointer to the name of the item if found, else return NULL;
*/
-struct aim_ssi_item *aim_ssi_itemlist_exists(struct aim_ssi_item *list, const char *sn)
+struct aim_ssi_item *aim_ssi_itemlist_exists(struct aim_ssi_item *list, const char *bn)
{
- if (!sn)
+ if (!bn)
return NULL;
- return aim_ssi_itemlist_finditem(list, NULL, sn, AIM_SSI_TYPE_BUDDY);
+ return aim_ssi_itemlist_finditem(list, NULL, bn, AIM_SSI_TYPE_BUDDY);
}
/**
@@ -353,12 +353,12 @@ struct aim_ssi_item *aim_ssi_itemlist_exists(struct aim_ssi_item *list, const ch
* @param bn The buddy name of the desired item.
* @return Return a pointer to the name of the item if found, else return NULL;
*/
-char *aim_ssi_itemlist_findparentname(struct aim_ssi_item *list, const char *sn)
+char *aim_ssi_itemlist_findparentname(struct aim_ssi_item *list, const char *bn)
{
struct aim_ssi_item *cur, *curg;
- if (!list || !sn)
+ if (!list || !bn)
return NULL;
- if (!(cur = aim_ssi_itemlist_exists(list, sn)))
+ if (!(cur = aim_ssi_itemlist_exists(list, bn)))
return NULL;
if (!(curg = aim_ssi_itemlist_find(list, cur->gid, 0x0000)))
return NULL;
@@ -406,14 +406,14 @@ guint32 aim_ssi_getpresence(struct aim_ssi_item *list)
*
* @param list A pointer to the current list of items.
* @param gn The group of the buddy.
- * @param sn The name of the buddy.
+ * @param bn The name of the buddy.
* @return A pointer to a NULL terminated string that is the buddy's
* alias, or NULL if the buddy has no alias. You should free
* this returned value!
*/
-char *aim_ssi_getalias(struct aim_ssi_item *list, const char *gn, const char *sn)
+char *aim_ssi_getalias(struct aim_ssi_item *list, const char *gn, const char *bn)
{
- struct aim_ssi_item *cur = aim_ssi_itemlist_finditem(list, gn, sn, AIM_SSI_TYPE_BUDDY);
+ struct aim_ssi_item *cur = aim_ssi_itemlist_finditem(list, gn, bn, AIM_SSI_TYPE_BUDDY);
if (cur) {
aim_tlv_t *tlv = aim_tlv_gettlv(cur->data, 0x0131, 1);
if (tlv && tlv->length)
@@ -427,14 +427,14 @@ char *aim_ssi_getalias(struct aim_ssi_item *list, const char *gn, const char *sn
*
* @param list A pointer to the current list of items.
* @param gn The group of the buddy.
- * @param sn The name of the buddy.
+ * @param bn The name of the buddy.
* @return A pointer to a NULL terminated string that is the buddy's
* comment, or NULL if the buddy has no comment. You should free
* this returned value!
*/
-char *aim_ssi_getcomment(struct aim_ssi_item *list, const char *gn, const char *sn)
+char *aim_ssi_getcomment(struct aim_ssi_item *list, const char *gn, const char *bn)
{
- struct aim_ssi_item *cur = aim_ssi_itemlist_finditem(list, gn, sn, AIM_SSI_TYPE_BUDDY);
+ struct aim_ssi_item *cur = aim_ssi_itemlist_finditem(list, gn, bn, AIM_SSI_TYPE_BUDDY);
if (cur) {
aim_tlv_t *tlv = aim_tlv_gettlv(cur->data, 0x013c, 1);
if (tlv && tlv->length) {
@@ -449,12 +449,12 @@ char *aim_ssi_getcomment(struct aim_ssi_item *list, const char *gn, const char *
*
* @param list A pointer to the current list of items.
* @param gn The group of the buddy.
- * @param sn The name of the buddy.
+ * @param bn The name of the buddy.
* @return 1 if you are waiting for authorization; 0 if you are not
*/
-gboolean aim_ssi_waitingforauth(struct aim_ssi_item *list, const char *gn, const char *sn)
+gboolean aim_ssi_waitingforauth(struct aim_ssi_item *list, const char *gn, const char *bn)
{
- struct aim_ssi_item *cur = aim_ssi_itemlist_finditem(list, gn, sn, AIM_SSI_TYPE_BUDDY);
+ struct aim_ssi_item *cur = aim_ssi_itemlist_finditem(list, gn, bn, AIM_SSI_TYPE_BUDDY);
if (cur) {
if (aim_tlv_gettlv(cur->data, 0x0066, 1))
return TRUE;
@@ -678,7 +678,7 @@ int aim_ssi_cleanlist(OscarData *od)
cur2 = cur->next;
while (cur2) {
next2 = cur2->next;
- if ((cur->type == cur2->type) && (cur->gid == cur2->gid) && (cur->name != NULL) && (cur2->name != NULL) && (!aim_sncmp(cur->name, cur2->name))) {
+ if ((cur->type == cur2->type) && (cur->gid == cur2->gid) && (cur->name != NULL) && (cur2->name != NULL) && (!oscar_util_name_compare(cur->name, cur2->name))) {
aim_ssi_itemlist_del(&od->ssi.local, cur2);
}
cur2 = next2;
@@ -916,16 +916,16 @@ int aim_ssi_deldeny(OscarData *od, const char *name)
* @param od The oscar odion.
* @param oldgn The group that the buddy is currently in.
* @param newgn The group that the buddy should be moved in to.
- * @param sn The name of the buddy to be moved.
+ * @param bn The name of the buddy to be moved.
* @return Return 0 if no errors, otherwise return the error number.
*/
-int aim_ssi_movebuddy(OscarData *od, const char *oldgn, const char *newgn, const char *sn)
+int aim_ssi_movebuddy(OscarData *od, const char *oldgn, const char *newgn, const char *bn)
{
struct aim_ssi_item *buddy;
GSList *data;
/* Find the buddy */
- buddy = aim_ssi_itemlist_finditem(od->ssi.local, oldgn, sn, AIM_SSI_TYPE_BUDDY);
+ buddy = aim_ssi_itemlist_finditem(od->ssi.local, oldgn, bn, AIM_SSI_TYPE_BUDDY);
if (buddy == NULL)
return -EINVAL;
@@ -933,10 +933,10 @@ int aim_ssi_movebuddy(OscarData *od, const char *oldgn, const char *newgn, const
data = aim_tlvlist_copy(buddy->data);
/* Delete the old item */
- aim_ssi_delbuddy(od, sn, oldgn);
+ aim_ssi_delbuddy(od, bn, oldgn);
/* Add the new item using the EXACT SAME TLV list */
- aim_ssi_addbuddy(od, sn, newgn, data, NULL, NULL, NULL, FALSE);
+ aim_ssi_addbuddy(od, bn, newgn, data, NULL, NULL, NULL, FALSE);
return 0;
}
@@ -946,19 +946,19 @@ int aim_ssi_movebuddy(OscarData *od, const char *oldgn, const char *newgn, const
*
* @param od The oscar odion.
* @param gn The group that the buddy is currently in.
- * @param sn The screen name of the buddy.
+ * @param bn The name of the buddy.
* @param alias The new alias for the buddy, or NULL if you want to remove
* a buddy's comment.
* @return Return 0 if no errors, otherwise return the error number.
*/
-int aim_ssi_aliasbuddy(OscarData *od, const char *gn, const char *sn, const char *alias)
+int aim_ssi_aliasbuddy(OscarData *od, const char *gn, const char *bn, const char *alias)
{
struct aim_ssi_item *tmp;
- if (!od || !gn || !sn)
+ if (!od || !gn || !bn)
return -EINVAL;
- if (!(tmp = aim_ssi_itemlist_finditem(od->ssi.local, gn, sn, AIM_SSI_TYPE_BUDDY)))
+ if (!(tmp = aim_ssi_itemlist_finditem(od->ssi.local, gn, bn, AIM_SSI_TYPE_BUDDY)))
return -EINVAL;
/* Either add or remove the 0x0131 TLV from the TLV chain */
@@ -976,19 +976,19 @@ int aim_ssi_aliasbuddy(OscarData *od, const char *gn, const char *sn, const char
*
* @param od The oscar odion.
* @param gn The group that the buddy is currently in.
- * @param sn The screen name of the buddy.
+ * @param bn The name of the buddy.
* @param alias The new comment for the buddy, or NULL if you want to remove
* a buddy's comment.
* @return Return 0 if no errors, otherwise return the error number.
*/
-int aim_ssi_editcomment(OscarData *od, const char *gn, const char *sn, const char *comment)
+int aim_ssi_editcomment(OscarData *od, const char *gn, const char *bn, const char *comment)
{
struct aim_ssi_item *tmp;
- if (!od || !gn || !sn)
+ if (!od || !gn || !bn)
return -EINVAL;
- if (!(tmp = aim_ssi_itemlist_finditem(od->ssi.local, gn, sn, AIM_SSI_TYPE_BUDDY)))
+ if (!(tmp = aim_ssi_itemlist_finditem(od->ssi.local, gn, bn, AIM_SSI_TYPE_BUDDY)))
return -EINVAL;
/* Either add or remove the 0x0131 TLV from the TLV chain */
@@ -1681,20 +1681,20 @@ int aim_ssi_modend(OscarData *od)
* Authorizes a contact so they can add you to their contact list.
*
*/
-int aim_ssi_sendauth(OscarData *od, char *sn, char *msg)
+int aim_ssi_sendauth(OscarData *od, char *bn, char *msg)
{
FlapConnection *conn;
ByteStream bs;
aim_snacid_t snacid;
- if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_FEEDBAG)) || !sn)
+ if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_FEEDBAG)) || !bn)
return -EINVAL;
- byte_stream_new(&bs, 1+strlen(sn) + 2+(msg ? strlen(msg)+1 : 0) + 2);
+ byte_stream_new(&bs, 1+strlen(bn) + 2+(msg ? strlen(msg)+1 : 0) + 2);
- /* Screen name */
- byte_stream_put8(&bs, strlen(sn));
- byte_stream_putstr(&bs, sn);
+ /* Username */
+ byte_stream_put8(&bs, strlen(bn));
+ byte_stream_putstr(&bs, bn);
/* Message (null terminated) */
byte_stream_put16(&bs, msg ? strlen(msg) : 0);
@@ -1722,13 +1722,13 @@ static int receiveauthgrant(OscarData *od, FlapConnection *conn, aim_module_t *m
int ret = 0;
aim_rxcallback_t userfunc;
guint16 tmp;
- char *sn, *msg;
+ char *bn, *msg;
- /* Read screen name */
+ /* Read buddy name */
if ((tmp = byte_stream_get8(bs)))
- sn = byte_stream_getstr(bs, tmp);
+ bn = byte_stream_getstr(bs, tmp);
else
- sn = NULL;
+ bn = NULL;
/* Read message (null terminated) */
if ((tmp = byte_stream_get16(bs)))
@@ -1740,9 +1740,9 @@ static int receiveauthgrant(OscarData *od, FlapConnection *conn, aim_module_t *m
tmp = byte_stream_get16(bs);
if ((userfunc = aim_callhandler(od, snac->family, snac->subtype)))
- ret = userfunc(od, conn, frame, sn, msg);
+ ret = userfunc(od, conn, frame, bn, msg);
- g_free(sn);
+ g_free(bn);
g_free(msg);
return ret;
@@ -1755,20 +1755,20 @@ static int receiveauthgrant(OscarData *od, FlapConnection *conn, aim_module_t *m
* granted, denied, or dropped.
*
*/
-int aim_ssi_sendauthrequest(OscarData *od, char *sn, const char *msg)
+int aim_ssi_sendauthrequest(OscarData *od, char *bn, const char *msg)
{
FlapConnection *conn;
ByteStream bs;
aim_snacid_t snacid;
- if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_FEEDBAG)) || !sn)
+ if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_FEEDBAG)) || !bn)
return -EINVAL;
- byte_stream_new(&bs, 1+strlen(sn) + 2+(msg ? strlen(msg)+1 : 0) + 2);
+ byte_stream_new(&bs, 1+strlen(bn) + 2+(msg ? strlen(msg)+1 : 0) + 2);
- /* Screen name */
- byte_stream_put8(&bs, strlen(sn));
- byte_stream_putstr(&bs, sn);
+ /* Username */
+ byte_stream_put8(&bs, strlen(bn));
+ byte_stream_putstr(&bs, bn);
/* Message (null terminated) */
byte_stream_put16(&bs, msg ? strlen(msg) : 0);
@@ -1796,13 +1796,13 @@ static int receiveauthrequest(OscarData *od, FlapConnection *conn, aim_module_t
int ret = 0;
aim_rxcallback_t userfunc;
guint16 tmp;
- char *sn, *msg;
+ char *bn, *msg;
- /* Read screen name */
+ /* Read buddy name */
if ((tmp = byte_stream_get8(bs)))
- sn = byte_stream_getstr(bs, tmp);
+ bn = byte_stream_getstr(bs, tmp);
else
- sn = NULL;
+ bn = NULL;
/* Read message (null terminated) */
if ((tmp = byte_stream_get16(bs)))
@@ -1814,9 +1814,9 @@ static int receiveauthrequest(OscarData *od, FlapConnection *conn, aim_module_t
tmp = byte_stream_get16(bs);
if ((userfunc = aim_callhandler(od, snac->family, snac->subtype)))
- ret = userfunc(od, conn, frame, sn, msg);
+ ret = userfunc(od, conn, frame, bn, msg);
- g_free(sn);
+ g_free(bn);
g_free(msg);
return ret;
@@ -1832,20 +1832,20 @@ static int receiveauthrequest(OscarData *od, FlapConnection *conn, aim_module_t
* if reply=0x01 then grant
*
*/
-int aim_ssi_sendauthreply(OscarData *od, char *sn, guint8 reply, const char *msg)
+int aim_ssi_sendauthreply(OscarData *od, char *bn, guint8 reply, const char *msg)
{
FlapConnection *conn;
ByteStream bs;
aim_snacid_t snacid;
- if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_FEEDBAG)) || !sn)
+ if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_FEEDBAG)) || !bn)
return -EINVAL;
- byte_stream_new(&bs, 1+strlen(sn) + 1 + 2+(msg ? (strlen(msg)+1) : 0) + 2);
+ byte_stream_new(&bs, 1+strlen(bn) + 1 + 2+(msg ? (strlen(msg)+1) : 0) + 2);
- /* Screen name */
- byte_stream_put8(&bs, strlen(sn));
- byte_stream_putstr(&bs, sn);
+ /* Username */
+ byte_stream_put8(&bs, strlen(bn));
+ byte_stream_putstr(&bs, bn);
/* Grant or deny */
byte_stream_put8(&bs, reply);
@@ -1880,13 +1880,13 @@ static int receiveauthreply(OscarData *od, FlapConnection *conn, aim_module_t *m
aim_rxcallback_t userfunc;
guint16 tmp;
guint8 reply;
- char *sn, *msg;
+ char *bn, *msg;
- /* Read screen name */
+ /* Read buddy name */
if ((tmp = byte_stream_get8(bs)))
- sn = byte_stream_getstr(bs, tmp);
+ bn = byte_stream_getstr(bs, tmp);
else
- sn = NULL;
+ bn = NULL;
/* Read reply */
reply = byte_stream_get8(bs);
@@ -1901,9 +1901,9 @@ static int receiveauthreply(OscarData *od, FlapConnection *conn, aim_module_t *m
tmp = byte_stream_get16(bs);
if ((userfunc = aim_callhandler(od, snac->family, snac->subtype)))
- ret = userfunc(od, conn, frame, sn, reply, msg);
+ ret = userfunc(od, conn, frame, bn, reply, msg);
- g_free(sn);
+ g_free(bn);
g_free(msg);
return ret;
@@ -1917,18 +1917,18 @@ static int receiveadded(OscarData *od, FlapConnection *conn, aim_module_t *mod,
int ret = 0;
aim_rxcallback_t userfunc;
guint16 tmp;
- char *sn;
+ char *bn;
- /* Read screen name */
+ /* Read buddy name */
if ((tmp = byte_stream_get8(bs)))
- sn = byte_stream_getstr(bs, tmp);
+ bn = byte_stream_getstr(bs, tmp);
else
- sn = NULL;
+ bn = NULL;
if ((userfunc = aim_callhandler(od, snac->family, snac->subtype)))
- ret = userfunc(od, conn, frame, sn);
+ ret = userfunc(od, conn, frame, bn);
- g_free(sn);
+ g_free(bn);
return ret;
}
diff --git a/libpurple/protocols/oscar/family_icbm.c b/libpurple/protocols/oscar/family_icbm.c
index 3bd9fae6cd..c217e0f3bb 100644
--- a/libpurple/protocols/oscar/family_icbm.c
+++ b/libpurple/protocols/oscar/family_icbm.c
@@ -61,16 +61,16 @@
* @param bs The bstream to write the ICBM header to.
* @param c c is for cookie, and cookie is for me.
* @param channel The ICBM channel (1 through 4).
- * @param sn Null-terminated scrizeen nizame.
+ * @param bn Null-terminated scrizeen nizame.
* @return The number of bytes written. It's really not useful.
*/
-static int aim_im_puticbm(ByteStream *bs, const guchar *c, guint16 channel, const char *sn)
+static int aim_im_puticbm(ByteStream *bs, const guchar *c, guint16 channel, const char *bn)
{
byte_stream_putraw(bs, c, 8);
byte_stream_put16(bs, channel);
- byte_stream_put8(bs, strlen(sn));
- byte_stream_putstr(bs, sn);
- return 8+2+1+strlen(sn);
+ byte_stream_put8(bs, strlen(bn));
+ byte_stream_putstr(bs, bn);
+ return 8+2+1+strlen(bn);
}
/**
@@ -324,7 +324,7 @@ int aim_im_sendch1_ext(OscarData *od, struct aim_sendimext_args *args)
aim_icbm_makecookie(cookie);
/* ICBM header */
- aim_im_puticbm(&data, cookie, 0x0001, args->destsn);
+ aim_im_puticbm(&data, cookie, 0x0001, args->destbn);
/* Message TLV (type 0x0002) */
byte_stream_put16(&data, 0x0002);
@@ -410,7 +410,7 @@ int aim_im_sendch1_ext(OscarData *od, struct aim_sendimext_args *args)
}
/* XXX - should be optional */
- snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, args->destsn, strlen(args->destsn)+1);
+ snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, args->destbn, strlen(args->destbn)+1);
flap_connection_send_snac(od, conn, SNAC_FAMILY_ICBM, 0x0006, 0x0000, snacid, &data);
byte_stream_destroy(&data);
@@ -431,11 +431,11 @@ int aim_im_sendch1_ext(OscarData *od, struct aim_sendimext_args *args)
* that requires an explicit message length. Use aim_im_sendch1_ext().
*
*/
-int aim_im_sendch1(OscarData *od, const char *sn, guint16 flags, const char *msg)
+int aim_im_sendch1(OscarData *od, const char *bn, guint16 flags, const char *msg)
{
struct aim_sendimext_args args;
- args.destsn = sn;
+ args.destbn = bn;
args.flags = flags;
args.msg = msg;
args.msglen = strlen(msg);
@@ -451,7 +451,7 @@ int aim_im_sendch1(OscarData *od, const char *sn, guint16 flags, const char *msg
/*
* Subtype 0x0006 - Send a chat invitation.
*/
-int aim_im_sendch2_chatinvite(OscarData *od, const char *sn, const char *msg, guint16 exchange, const char *roomname, guint16 instance)
+int aim_im_sendch2_chatinvite(OscarData *od, const char *bn, const char *msg, guint16 exchange, const char *roomname, guint16 instance)
{
FlapConnection *conn;
ByteStream bs;
@@ -465,18 +465,18 @@ int aim_im_sendch2_chatinvite(OscarData *od, const char *sn, const char *msg, gu
if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICBM)))
return -EINVAL;
- if (!sn || !msg || !roomname)
+ if (!bn || !msg || !roomname)
return -EINVAL;
aim_icbm_makecookie(cookie);
- byte_stream_new(&bs, 1142+strlen(sn)+strlen(roomname)+strlen(msg));
+ byte_stream_new(&bs, 1142+strlen(bn)+strlen(roomname)+strlen(msg));
- snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, sn, strlen(sn)+1);
+ snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, bn, strlen(bn)+1);
/* XXX should be uncached by an unwritten 'invite accept' handler */
priv = g_malloc(sizeof(struct aim_invite_priv));
- priv->sn = g_strdup(sn);
+ priv->bn = g_strdup(bn);
priv->roomname = g_strdup(roomname);
priv->exchange = exchange;
priv->instance = instance;
@@ -487,7 +487,7 @@ int aim_im_sendch2_chatinvite(OscarData *od, const char *sn, const char *msg, gu
g_free(priv);
/* ICBM Header */
- aim_im_puticbm(&bs, cookie, 0x0002, sn);
+ aim_im_puticbm(&bs, cookie, 0x0002, bn);
/*
* TLV t(0005)
@@ -532,7 +532,7 @@ int aim_im_sendch2_chatinvite(OscarData *od, const char *sn, const char *msg, gu
* This is also performance sensitive. (If you can believe it...)
*
*/
-int aim_im_sendch2_icon(OscarData *od, const char *sn, const guint8 *icon, int iconlen, time_t stamp, guint16 iconsum)
+int aim_im_sendch2_icon(OscarData *od, const char *bn, const guint8 *icon, int iconlen, time_t stamp, guint16 iconsum)
{
FlapConnection *conn;
ByteStream bs;
@@ -542,17 +542,17 @@ int aim_im_sendch2_icon(OscarData *od, const char *sn, const guint8 *icon, int i
if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICBM)))
return -EINVAL;
- if (!sn || !icon || (iconlen <= 0) || (iconlen >= MAXICONLEN))
+ if (!bn || !icon || (iconlen <= 0) || (iconlen >= MAXICONLEN))
return -EINVAL;
aim_icbm_makecookie(cookie);
- byte_stream_new(&bs, 8+2+1+strlen(sn)+2+2+2+8+16+2+2+2+2+2+2+2+4+4+4+iconlen+strlen(AIM_ICONIDENT)+2+2);
+ byte_stream_new(&bs, 8+2+1+strlen(bn)+2+2+2+8+16+2+2+2+2+2+2+2+4+4+4+iconlen+strlen(AIM_ICONIDENT)+2+2);
snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, NULL, 0);
/* ICBM header */
- aim_im_puticbm(&bs, cookie, 0x0002, sn);
+ aim_im_puticbm(&bs, cookie, 0x0002, bn);
/*
* TLV t(0005)
@@ -623,7 +623,7 @@ int aim_im_sendch2_rtfmsg(OscarData *od, struct aim_sendrtfmsg_args *args)
if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICBM)))
return -EINVAL;
- if (!args || !args->destsn || !args->rtfmsg)
+ if (!args || !args->destbn || !args->rtfmsg)
return -EINVAL;
servdatalen = 2+2+16+2+4+1+2 + 2+2+4+4+4 + 2+4+2+strlen(args->rtfmsg)+1 + 4+4+4+strlen(rtfcap)+1;
@@ -635,7 +635,7 @@ int aim_im_sendch2_rtfmsg(OscarData *od, struct aim_sendrtfmsg_args *args)
snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, NULL, 0);
/* ICBM header */
- aim_im_puticbm(&bs, cookie, 0x0002, args->destsn);
+ aim_im_puticbm(&bs, cookie, 0x0002, args->destbn);
/* TLV t(0005) - Encompasses everything below. */
byte_stream_put16(&bs, 0x0005);
@@ -708,12 +708,12 @@ aim_im_sendch2_cancel(PeerConnection *peer_conn)
if (conn == NULL)
return;
- byte_stream_new(&bs, 118+strlen(peer_conn->sn));
+ byte_stream_new(&bs, 118+strlen(peer_conn->bn));
snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, NULL, 0);
/* ICBM header */
- aim_im_puticbm(&bs, peer_conn->cookie, 0x0002, peer_conn->sn);
+ aim_im_puticbm(&bs, peer_conn->cookie, 0x0002, peer_conn->bn);
aim_tlvlist_add_noval(&outer_tlvlist, 0x0003);
@@ -757,12 +757,12 @@ aim_im_sendch2_connected(PeerConnection *peer_conn)
if (conn == NULL)
return;
- byte_stream_new(&bs, 11+strlen(peer_conn->sn) + 4+2+8+16);
+ byte_stream_new(&bs, 11+strlen(peer_conn->bn) + 4+2+8+16);
snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, NULL, 0);
/* ICBM header */
- aim_im_puticbm(&bs, peer_conn->cookie, 0x0002, peer_conn->sn);
+ aim_im_puticbm(&bs, peer_conn->cookie, 0x0002, peer_conn->bn);
byte_stream_put16(&bs, 0x0005);
byte_stream_put16(&bs, 0x001a);
@@ -783,7 +783,7 @@ aim_im_sendch2_connected(PeerConnection *peer_conn)
* "I want to connect through a proxy server"
*/
void
-aim_im_sendch2_odc_requestdirect(OscarData *od, guchar *cookie, const char *sn, const guint8 *ip, guint16 port, guint16 requestnumber)
+aim_im_sendch2_odc_requestdirect(OscarData *od, guchar *cookie, const char *bn, const guint8 *ip, guint16 port, guint16 requestnumber)
{
FlapConnection *conn;
ByteStream bs;
@@ -795,12 +795,12 @@ aim_im_sendch2_odc_requestdirect(OscarData *od, guchar *cookie, const char *sn,
if (conn == NULL)
return;
- byte_stream_new(&bs, 246+strlen(sn));
+ byte_stream_new(&bs, 246+strlen(bn));
snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, NULL, 0);
/* ICBM header */
- aim_im_puticbm(&bs, cookie, 0x0002, sn);
+ aim_im_puticbm(&bs, cookie, 0x0002, bn);
aim_tlvlist_add_noval(&outer_tlvlist, 0x0003);
@@ -835,7 +835,7 @@ aim_im_sendch2_odc_requestdirect(OscarData *od, guchar *cookie, const char *sn,
* remote user to connect to us via a proxy server.
*/
void
-aim_im_sendch2_odc_requestproxy(OscarData *od, guchar *cookie, const char *sn, const guint8 *ip, guint16 pin, guint16 requestnumber)
+aim_im_sendch2_odc_requestproxy(OscarData *od, guchar *cookie, const char *bn, const guint8 *ip, guint16 pin, guint16 requestnumber)
{
FlapConnection *conn;
ByteStream bs;
@@ -848,12 +848,12 @@ aim_im_sendch2_odc_requestproxy(OscarData *od, guchar *cookie, const char *sn, c
if (conn == NULL)
return;
- byte_stream_new(&bs, 246+strlen(sn));
+ byte_stream_new(&bs, 246+strlen(bn));
snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, NULL, 0);
/* ICBM header */
- aim_im_puticbm(&bs, cookie, 0x0002, sn);
+ aim_im_puticbm(&bs, cookie, 0x0002, bn);
aim_tlvlist_add_noval(&outer_tlvlist, 0x0003);
@@ -898,7 +898,7 @@ aim_im_sendch2_odc_requestproxy(OscarData *od, guchar *cookie, const char *sn, c
*
*/
void
-aim_im_sendch2_sendfile_requestdirect(OscarData *od, guchar *cookie, const char *sn, const guint8 *ip, guint16 port, guint16 requestnumber, const gchar *filename, guint32 size, guint16 numfiles)
+aim_im_sendch2_sendfile_requestdirect(OscarData *od, guchar *cookie, const char *bn, const guint8 *ip, guint16 port, guint16 requestnumber, const gchar *filename, guint32 size, guint16 numfiles)
{
FlapConnection *conn;
ByteStream bs;
@@ -915,7 +915,7 @@ aim_im_sendch2_sendfile_requestdirect(OscarData *od, guchar *cookie, const char
snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, NULL, 0);
/* ICBM header */
- aim_im_puticbm(&bs, cookie, 0x0002, sn);
+ aim_im_puticbm(&bs, cookie, 0x0002, bn);
aim_tlvlist_add_noval(&outer_tlvlist, 0x0003);
@@ -981,7 +981,7 @@ aim_im_sendch2_sendfile_requestdirect(OscarData *od, guchar *cookie, const char
* remote user to connect to us via a proxy server.
*/
void
-aim_im_sendch2_sendfile_requestproxy(OscarData *od, guchar *cookie, const char *sn, const guint8 *ip, guint16 pin, guint16 requestnumber, const gchar *filename, guint32 size, guint16 numfiles)
+aim_im_sendch2_sendfile_requestproxy(OscarData *od, guchar *cookie, const char *bn, const guint8 *ip, guint16 pin, guint16 requestnumber, const gchar *filename, guint32 size, guint16 numfiles)
{
FlapConnection *conn;
ByteStream bs;
@@ -999,7 +999,7 @@ aim_im_sendch2_sendfile_requestproxy(OscarData *od, guchar *cookie, const char *
snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, NULL, 0);
/* ICBM header */
- aim_im_puticbm(&bs, cookie, 0x0002, sn);
+ aim_im_puticbm(&bs, cookie, 0x0002, bn);
aim_tlvlist_add_noval(&outer_tlvlist, 0x0003);
@@ -1073,29 +1073,29 @@ aim_im_sendch2_sendfile_requestproxy(OscarData *od, guchar *cookie, const char *
* Subtype 0x0006 - Request the status message of the given ICQ user.
*
* @param od The oscar session.
- * @param sn The UIN of the user of whom you wish to request info.
+ * @param bn The UIN of the user of whom you wish to request info.
* @param type The type of info you wish to request. This should be the current
* state of the user, as one of the AIM_ICQ_STATE_* defines.
* @return Return 0 if no errors, otherwise return the error number.
*/
-int aim_im_sendch2_geticqaway(OscarData *od, const char *sn, int type)
+int aim_im_sendch2_geticqaway(OscarData *od, const char *bn, int type)
{
FlapConnection *conn;
ByteStream bs;
aim_snacid_t snacid;
guchar cookie[8];
- if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICBM)) || !sn)
+ if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICBM)) || !bn)
return -EINVAL;
aim_icbm_makecookie(cookie);
- byte_stream_new(&bs, 8+2+1+strlen(sn) + 4+0x5e + 4);
+ byte_stream_new(&bs, 8+2+1+strlen(bn) + 4+0x5e + 4);
snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, NULL, 0);
/* ICBM header */
- aim_im_puticbm(&bs, cookie, 0x0002, sn);
+ aim_im_puticbm(&bs, cookie, 0x0002, bn);
/* TLV t(0005) - Encompasses almost everything below. */
byte_stream_put16(&bs, 0x0005); /* T */
@@ -1176,12 +1176,12 @@ int aim_im_sendch2_geticqaway(OscarData *od, const char *sn, int type)
* but thats ok, because it gives me time to try to figure out what kind of drugs the AOL people
* were taking when they merged the two protocols.
*
- * @param sn The destination screen name.
+ * @param bn The destination buddy name.
* @param type The type of message. 0x0007 for authorization denied. 0x0008 for authorization granted.
* @param message The message you want to send, it should be null terminated.
* @return Return 0 if no errors, otherwise return the error number.
*/
-int aim_im_sendch4(OscarData *od, const char *sn, guint16 type, const char *message)
+int aim_im_sendch4(OscarData *od, const char *bn, guint16 type, const char *message)
{
FlapConnection *conn;
ByteStream bs;
@@ -1191,17 +1191,17 @@ int aim_im_sendch4(OscarData *od, const char *sn, guint16 type, const char *mess
if (!od || !(conn = flap_connection_findbygroup(od, 0x0002)))
return -EINVAL;
- if (!sn || !type || !message)
+ if (!bn || !type || !message)
return -EINVAL;
- byte_stream_new(&bs, 8+3+strlen(sn)+12+strlen(message)+1+4);
+ byte_stream_new(&bs, 8+3+strlen(bn)+12+strlen(message)+1+4);
snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, NULL, 0);
aim_icbm_makecookie(cookie);
/* ICBM header */
- aim_im_puticbm(&bs, cookie, 0x0004, sn);
+ aim_im_puticbm(&bs, cookie, 0x0004, bn);
/*
* TLV t(0005)
@@ -1246,8 +1246,8 @@ static int outgoingim(OscarData *od, FlapConnection *conn, aim_module_t *mod, Fl
guchar cookie[8];
guint16 channel;
GSList *tlvlist;
- char *sn;
- int snlen;
+ char *bn;
+ int bnlen;
guint16 icbmflags = 0;
guint8 flag1 = 0, flag2 = 0;
gchar *msg = NULL;
@@ -1264,8 +1264,8 @@ static int outgoingim(OscarData *od, FlapConnection *conn, aim_module_t *mod, Fl
return 0;
}
- snlen = byte_stream_get8(bs);
- sn = byte_stream_getstr(bs, snlen);
+ bnlen = byte_stream_get8(bs);
+ bn = byte_stream_getstr(bs, bnlen);
tlvlist = aim_tlvlist_read(bs);
@@ -1296,9 +1296,9 @@ static int outgoingim(OscarData *od, FlapConnection *conn, aim_module_t *mod, Fl
}
if ((userfunc = aim_callhandler(od, snac->family, snac->subtype)))
- ret = userfunc(od, conn, frame, channel, sn, msg, icbmflags, flag1, flag2);
+ ret = userfunc(od, conn, frame, channel, bn, msg, icbmflags, flag1, flag2);
- g_free(sn);
+ g_free(bn);
g_free(msg);
aim_tlvlist_free(tlvlist);
@@ -1480,7 +1480,7 @@ static int incomingim_ch1_parsemsgs(OscarData *od, aim_userinfo_t *userinfo, gui
msglen = byte_stream_get16(&mbs);
if (msglen > byte_stream_empty(&mbs))
{
- purple_debug_misc("oscar", "Received an IM containing an invalid message part from %s. They are probably trying to do something malicious.\n", userinfo->sn);
+ purple_debug_misc("oscar", "Received an IM containing an invalid message part from %s. They are probably trying to do something malicious.\n", userinfo->bn);
break;
}
@@ -1589,7 +1589,7 @@ static int incomingim_ch1(OscarData *od, FlapConnection *conn, aim_module_t *mod
if (length > byte_stream_empty(bs))
{
- purple_debug_misc("oscar", "Received an IM containing an invalid message part from %s. They are probably trying to do something malicious.\n", userinfo->sn);
+ purple_debug_misc("oscar", "Received an IM containing an invalid message part from %s. They are probably trying to do something malicious.\n", userinfo->bn);
break;
}
@@ -1625,14 +1625,14 @@ static int incomingim_ch1(OscarData *od, FlapConnection *conn, aim_module_t *mod
if (magic1 != 0x501)
{
- purple_debug_misc("oscar", "Received an IM containing an invalid message part from %s. They are probably trying to do something malicious.\n", userinfo->sn);
+ purple_debug_misc("oscar", "Received an IM containing an invalid message part from %s. They are probably trying to do something malicious.\n", userinfo->bn);
break;
}
args.featureslen = byte_stream_get16(bs);
if (args.featureslen > byte_stream_empty(bs))
{
- purple_debug_misc("oscar", "Received an IM containing an invalid message part from %s. They are probably trying to do something malicious.\n", userinfo->sn);
+ purple_debug_misc("oscar", "Received an IM containing an invalid message part from %s. They are probably trying to do something malicious.\n", userinfo->bn);
break;
}
if (args.featureslen == 0)
@@ -1654,7 +1654,7 @@ static int incomingim_ch1(OscarData *od, FlapConnection *conn, aim_module_t *mod
magic1 = byte_stream_get16(bs); /* 01 01 */
if (magic1 != 0x101) /* Bad, message comes before attributes */
{
- purple_debug_misc("oscar", "Received an IM containing an invalid message part from %s. They are probably trying to do something malicious.\n", userinfo->sn);
+ purple_debug_misc("oscar", "Received an IM containing an invalid message part from %s. They are probably trying to do something malicious.\n", userinfo->bn);
break;
}
msglen = byte_stream_get16(bs);
@@ -1721,7 +1721,7 @@ static int incomingim_ch1(OscarData *od, FlapConnection *conn, aim_module_t *mod
if (length > byte_stream_empty(bs))
{
- purple_debug_misc("oscar", "Received an IM containing an invalid message part from %s. They are probably trying to do something malicious.\n", userinfo->sn);
+ purple_debug_misc("oscar", "Received an IM containing an invalid message part from %s. They are probably trying to do something malicious.\n", userinfo->bn);
break;
}
g_free(args.extdata);
@@ -1796,7 +1796,7 @@ incomingim_ch2_buddylist(OscarData *od, FlapConnection *conn, aim_module_t *mod,
bnlen = byte_stream_get16(servdata);
bn = byte_stream_getstr(servdata, bnlen);
- purple_debug_misc("oscar", "got a buddy list from %s: group %s, buddy %s\n", userinfo->sn, gn, bn);
+ purple_debug_misc("oscar", "got a buddy list from %s: group %s, buddy %s\n", userinfo->bn, gn, bn);
g_free(bn);
}
@@ -2285,7 +2285,7 @@ static int incomingim(OscarData *od, FlapConnection *conn, aim_module_t *mod, Fl
}
/*
- * Subtype 0x0008 - Send a warning to sn.
+ * Subtype 0x0008 - Send a warning to bn.
*
* Flags:
* AIM_WARN_ANON Send as an anonymous (doesn't count as much)
@@ -2293,21 +2293,21 @@ static int incomingim(OscarData *od, FlapConnection *conn, aim_module_t *mod, Fl
* returns -1 on error (couldn't alloc packet), 0 on success.
*
*/
-int aim_im_warn(OscarData *od, FlapConnection *conn, const char *sn, guint32 flags)
+int aim_im_warn(OscarData *od, FlapConnection *conn, const char *bn, guint32 flags)
{
ByteStream bs;
aim_snacid_t snacid;
- if (!od || !conn || !sn)
+ if (!od || !conn || !bn)
return -EINVAL;
- byte_stream_new(&bs, strlen(sn)+3);
+ byte_stream_new(&bs, strlen(bn)+3);
- snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0008, 0x0000, sn, strlen(sn)+1);
+ snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0008, 0x0000, bn, strlen(bn)+1);
byte_stream_put16(&bs, (flags & AIM_WARN_ANON) ? 0x0001 : 0x0000);
- byte_stream_put8(&bs, strlen(sn));
- byte_stream_putstr(&bs, sn);
+ byte_stream_put8(&bs, strlen(bn));
+ byte_stream_putstr(&bs, bn);
flap_connection_send_snac(od, conn, SNAC_FAMILY_ICBM, 0x0008, 0x0000, snacid, &bs);
@@ -2349,7 +2349,7 @@ static int missedcall(OscarData *od, FlapConnection *conn, aim_module_t *mod, Fl
* AIM_TRANSFER_DENY_NOTACCEPTING -- "client is not accepting transfers"
*
*/
-int aim_im_denytransfer(OscarData *od, const char *sn, const guchar *cookie, guint16 code)
+int aim_im_denytransfer(OscarData *od, const char *bn, const guchar *cookie, guint16 code)
{
FlapConnection *conn;
ByteStream bs;
@@ -2359,15 +2359,15 @@ int aim_im_denytransfer(OscarData *od, const char *sn, const guchar *cookie, gui
if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICBM)))
return -EINVAL;
- byte_stream_new(&bs, 8+2+1+strlen(sn)+6);
+ byte_stream_new(&bs, 8+2+1+strlen(bn)+6);
snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x000b, 0x0000, NULL, 0);
byte_stream_putraw(&bs, cookie, 8);
byte_stream_put16(&bs, 0x0002); /* channel */
- byte_stream_put8(&bs, strlen(sn));
- byte_stream_putstr(&bs, sn);
+ byte_stream_put8(&bs, strlen(bn));
+ byte_stream_putstr(&bs, bn);
aim_tlvlist_add_16(&tlvlist, 0x0003, code);
aim_tlvlist_write(&bs, &tlvlist);
@@ -2380,7 +2380,7 @@ int aim_im_denytransfer(OscarData *od, const char *sn, const guchar *cookie, gui
return 0;
}
-static void parse_status_note_text(OscarData *od, guchar *cookie, char *sn, ByteStream *bs)
+static void parse_status_note_text(OscarData *od, guchar *cookie, char *bn, ByteStream *bs)
{
struct aim_icq_info *info;
struct aim_icq_info *prev_info;
@@ -2534,10 +2534,10 @@ static void parse_status_note_text(OscarData *od, guchar *cookie, char *sn, Byte
g_free(status_note_text);
g_free(stripped_status_note_text);
- buddy = purple_find_buddy(account, sn);
+ buddy = purple_find_buddy(account, bn);
if (buddy == NULL)
{
- purple_debug_misc("oscar", "clientautoresp: buddy %s was not found.\n", sn);
+ purple_debug_misc("oscar", "clientautoresp: buddy %s was not found.\n", bn);
g_free(status_note);
return;
}
@@ -2548,7 +2548,7 @@ static void parse_status_note_text(OscarData *od, guchar *cookie, char *sn, Byte
presence = purple_buddy_get_presence(buddy);
status = purple_presence_get_active_status(presence);
- purple_prpl_got_user_status(account, sn,
+ purple_prpl_got_user_status(account, bn,
purple_status_get_id(status),
"message", status_note, NULL);
@@ -2565,26 +2565,26 @@ static int clientautoresp(OscarData *od, FlapConnection *conn, aim_module_t *mod
int ret = 0;
aim_rxcallback_t userfunc;
guint16 channel, reason;
- char *sn;
+ char *bn;
guchar *cookie;
- guint8 snlen;
+ guint8 bnlen;
cookie = byte_stream_getraw(bs, 8);
channel = byte_stream_get16(bs);
- snlen = byte_stream_get8(bs);
- sn = byte_stream_getstr(bs, snlen);
+ bnlen = byte_stream_get8(bs);
+ bn = byte_stream_getstr(bs, bnlen);
reason = byte_stream_get16(bs);
if (channel == 0x0002)
{
if (reason == 0x0003) /* channel-specific */
/* parse status note text */
- parse_status_note_text(od, cookie, sn, bs);
+ parse_status_note_text(od, cookie, bn, bs);
byte_stream_get16(bs); /* Unknown */
byte_stream_get16(bs); /* Unknown */
if ((userfunc = aim_callhandler(od, snac->family, snac->subtype)))
- ret = userfunc(od, conn, frame, channel, sn, reason, cookie);
+ ret = userfunc(od, conn, frame, channel, bn, reason, cookie);
} else if (channel == 0x0004) { /* ICQ message */
switch (reason) {
@@ -2629,20 +2629,20 @@ static int clientautoresp(OscarData *od, FlapConnection *conn, aim_module_t *mod
msg = byte_stream_getraw(bs, len);
if ((userfunc = aim_callhandler(od, snac->family, snac->subtype)))
- ret = userfunc(od, conn, frame, channel, sn, reason, state, msg);
+ ret = userfunc(od, conn, frame, channel, bn, reason, state, msg);
g_free(msg);
} break;
default: {
if ((userfunc = aim_callhandler(od, snac->family, snac->subtype)))
- ret = userfunc(od, conn, frame, channel, sn, reason);
+ ret = userfunc(od, conn, frame, channel, bn, reason);
} break;
} /* end switch */
}
g_free(cookie);
- g_free(sn);
+ g_free(bn);
return ret;
}
@@ -2660,17 +2660,17 @@ static int msgack(OscarData *od, FlapConnection *conn, aim_module_t *mod, FlapFr
aim_rxcallback_t userfunc;
guint16 ch;
guchar *cookie;
- char *sn;
+ char *bn;
int ret = 0;
cookie = byte_stream_getraw(bs, 8);
ch = byte_stream_get16(bs);
- sn = byte_stream_getstr(bs, byte_stream_get8(bs));
+ bn = byte_stream_getstr(bs, byte_stream_get8(bs));
if ((userfunc = aim_callhandler(od, snac->family, snac->subtype)))
- ret = userfunc(od, conn, frame, ch, sn);
+ ret = userfunc(od, conn, frame, ch, bn);
- g_free(sn);
+ g_free(bn);
g_free(cookie);
return ret;
@@ -2707,7 +2707,7 @@ int aim_im_reqofflinemsgs(OscarData *od)
* and Purple 0.60 and newer.
*
*/
-int aim_im_sendmtn(OscarData *od, guint16 type1, const char *sn, guint16 type2)
+int aim_im_sendmtn(OscarData *od, guint16 type1, const char *bn, guint16 type2)
{
FlapConnection *conn;
ByteStream bs;
@@ -2716,10 +2716,10 @@ int aim_im_sendmtn(OscarData *od, guint16 type1, const char *sn, guint16 type2)
if (!od || !(conn = flap_connection_findbygroup(od, 0x0002)))
return -EINVAL;
- if (!sn)
+ if (!bn)
return -EINVAL;
- byte_stream_new(&bs, 11+strlen(sn)+2);
+ byte_stream_new(&bs, 11+strlen(bn)+2);
snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0014, 0x0000, NULL, 0);
@@ -2738,10 +2738,10 @@ int aim_im_sendmtn(OscarData *od, guint16 type1, const char *sn, guint16 type2)
byte_stream_put16(&bs, type1);
/*
- * Dest sn
+ * Dest buddy name
*/
- byte_stream_put8(&bs, strlen(sn));
- byte_stream_putstr(&bs, sn);
+ byte_stream_put8(&bs, strlen(bn));
+ byte_stream_putstr(&bs, bn);
/*
* Type 2 (should be 0x0000, 0x0001, or 0x0002 for mtn)
@@ -2766,20 +2766,20 @@ static int mtn_receive(OscarData *od, FlapConnection *conn, aim_module_t *mod, F
{
int ret = 0;
aim_rxcallback_t userfunc;
- char *sn;
- guint8 snlen;
+ char *bn;
+ guint8 bnlen;
guint16 type1, type2;
byte_stream_advance(bs, 8); /* Unknown - All 0's */
type1 = byte_stream_get16(bs);
- snlen = byte_stream_get8(bs);
- sn = byte_stream_getstr(bs, snlen);
+ bnlen = byte_stream_get8(bs);
+ bn = byte_stream_getstr(bs, bnlen);
type2 = byte_stream_get16(bs);
if ((userfunc = aim_callhandler(od, snac->family, snac->subtype)))
- ret = userfunc(od, conn, frame, type1, sn, type2);
+ ret = userfunc(od, conn, frame, type1, bn, type2);
- g_free(sn);
+ g_free(bn);
return ret;
}
diff --git a/libpurple/protocols/oscar/family_locate.c b/libpurple/protocols/oscar/family_locate.c
index 0646a2b807..159b50aeca 100644
--- a/libpurple/protocols/oscar/family_locate.c
+++ b/libpurple/protocols/oscar/family_locate.c
@@ -100,7 +100,7 @@ static const struct {
0x82, 0x22, 0x44, 0x45, 0x45, 0x53, 0x54, 0x00}},
/* Supports "new status message features" (Who advertises this one?) */
- /* OSCAR_CAPABILITY_HOST_STATUS_TEXT_AWARE */
+ /* OSCAR_CAPABILITY_HOST_STATUS_TEXT_AWARE */
{OSCAR_CAPABILITY_GENERICUNKNOWN,
{0x09, 0x46, 0x01, 0x0a, 0x4c, 0x7f, 0x11, 0xd1,
0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}},
@@ -112,7 +112,7 @@ static const struct {
0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}},
/* Client only asserts caps for services in which it is participating */
- /* OSCAR_CAPABILITY_SMARTCAPS */
+ /* OSCAR_CAPABILITY_SMARTCAPS */
{OSCAR_CAPABILITY_GENERICUNKNOWN,
{0x09, 0x46, 0x01, 0xff, 0x4c, 0x7f, 0x11, 0xd1,
0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}},
@@ -253,11 +253,11 @@ aim_locate_adduserinfo(OscarData *od, aim_userinfo_t *userinfo)
FlapConnection *conn;
aim_rxcallback_t userfunc;
- cur = aim_locate_finduserinfo(od, userinfo->sn);
+ cur = aim_locate_finduserinfo(od, userinfo->bn);
if (cur == NULL) {
cur = (aim_userinfo_t *)g_new0(aim_userinfo_t, 1);
- cur->sn = g_strdup(userinfo->sn);
+ cur->bn = g_strdup(userinfo->bn);
cur->next = od->locate.userinfo;
od->locate.userinfo = cur;
}
@@ -366,35 +366,35 @@ aim_locate_adduserinfo(OscarData *od, aim_userinfo_t *userinfo)
}
/**
- * Remove this screen name from our queue. If this info was requested
+ * Remove this buddy name from our queue. If this info was requested
* by our info request queue, then pop the next element off of the queue.
*
* @param od The aim session.
- * @param sn Screen name of the info we just received.
+ * @param bn Buddy name of the info we just received.
* @return True if the request was explicit (client requested the info),
* false if the request was implicit (libfaim request the info).
*/
static int
-aim_locate_gotuserinfo(OscarData *od, FlapConnection *conn, const char *sn)
+aim_locate_gotuserinfo(OscarData *od, FlapConnection *conn, const char *bn)
{
struct userinfo_node *cur, *del;
int was_explicit = TRUE;
- while ((od->locate.requested != NULL) && (aim_sncmp(sn, od->locate.requested->sn) == 0)) {
+ while ((od->locate.requested != NULL) && (oscar_util_name_compare(bn, od->locate.requested->bn) == 0)) {
del = od->locate.requested;
od->locate.requested = del->next;
was_explicit = FALSE;
- g_free(del->sn);
+ g_free(del->bn);
g_free(del);
}
cur = od->locate.requested;
while ((cur != NULL) && (cur->next != NULL)) {
- if (aim_sncmp(sn, cur->next->sn) == 0) {
+ if (oscar_util_name_compare(bn, cur->next->bn) == 0) {
del = cur->next;
cur->next = del->next;
was_explicit = FALSE;
- g_free(del->sn);
+ g_free(del->bn);
g_free(del);
} else
cur = cur->next;
@@ -404,34 +404,34 @@ aim_locate_gotuserinfo(OscarData *od, FlapConnection *conn, const char *sn)
}
void
-aim_locate_autofetch_away_message(OscarData *od, const char *sn)
+aim_locate_autofetch_away_message(OscarData *od, const char *bn)
{
struct userinfo_node *cur;
/* Make sure we haven't already made an info request for this buddy */
for (cur = od->locate.requested; cur != NULL; cur = cur->next)
- if (aim_sncmp(sn, cur->sn) == 0)
+ if (oscar_util_name_compare(bn, cur->bn) == 0)
return;
/* Add a new node to our request queue */
cur = (struct userinfo_node *)g_malloc(sizeof(struct userinfo_node));
- cur->sn = g_strdup(sn);
+ cur->bn = g_strdup(bn);
cur->next = od->locate.requested;
od->locate.requested = cur;
- aim_locate_getinfoshort(od, cur->sn, 0x00000002);
+ aim_locate_getinfoshort(od, cur->bn, 0x00000002);
}
-aim_userinfo_t *aim_locate_finduserinfo(OscarData *od, const char *sn) {
+aim_userinfo_t *aim_locate_finduserinfo(OscarData *od, const char *bn) {
aim_userinfo_t *cur = NULL;
- if (sn == NULL)
+ if (bn == NULL)
return NULL;
cur = od->locate.userinfo;
while (cur != NULL) {
- if (aim_sncmp(cur->sn, sn) == 0)
+ if (oscar_util_name_compare(cur->bn, bn) == 0)
return cur;
cur = cur->next;
}
@@ -552,7 +552,7 @@ dumptlv(OscarData *od, guint16 type, ByteStream *bs, guint8 len)
void
aim_info_free(aim_userinfo_t *info)
{
- g_free(info->sn);
+ g_free(info->bn);
g_free(info->iconcsum);
g_free(info->info);
g_free(info->info_encoding);
@@ -572,7 +572,7 @@ int
aim_info_extract(OscarData *od, ByteStream *bs, aim_userinfo_t *outinfo)
{
int curtlv, tlvcnt;
- guint8 snlen;
+ guint8 bnlen;
if (!bs || !outinfo)
return -EINVAL;
@@ -581,11 +581,11 @@ aim_info_extract(OscarData *od, ByteStream *bs, aim_userinfo_t *outinfo)
memset(outinfo, 0x00, sizeof(aim_userinfo_t));
/*
- * Screen name. Stored as an unterminated string prepended with a
+ * Username. Stored as an unterminated string prepended with a
* byte containing its length.
*/
- snlen = byte_stream_get8(bs);
- outinfo->sn = byte_stream_getstr(bs, snlen);
+ bnlen = byte_stream_get8(bs);
+ outinfo->bn = byte_stream_getstr(bs, bnlen);
/*
* Warning Level. Stored as an unsigned short.
@@ -881,7 +881,7 @@ aim_info_extract(OscarData *od, ByteStream *bs, aim_userinfo_t *outinfo)
*/
#ifdef LOG_UNKNOWN_TLV
purple_debug_misc("oscar", "userinfo: **warning: unexpected TLV:\n");
- purple_debug_misc("oscar", "userinfo: sn =%s\n", outinfo->sn);
+ purple_debug_misc("oscar", "userinfo: bn =%s\n", outinfo->bn);
dumptlv(od, type, bs, length);
#endif
}
@@ -906,8 +906,8 @@ aim_putuserinfo(ByteStream *bs, aim_userinfo_t *info)
if (!bs || !info)
return -EINVAL;
- byte_stream_put8(bs, strlen(info->sn));
- byte_stream_putstr(bs, info->sn);
+ byte_stream_put8(bs, strlen(info->bn));
+ byte_stream_putstr(bs, info->bn);
byte_stream_put16(bs, info->warnlevel);
@@ -922,7 +922,7 @@ aim_putuserinfo(ByteStream *bs, aim_userinfo_t *info)
/* XXX - So, ICQ_OSCAR_SUPPORT is never defined anywhere... */
#ifdef ICQ_OSCAR_SUPPORT
- if (atoi(info->sn) != 0) {
+ if (atoi(info->bn) != 0) {
if (info->present & AIM_USERINFO_PRESENT_ICQEXTSTATUS)
aim_tlvlist_add_16(&tlvlist, 0x0006, info->icqinfo.status);
if (info->present & AIM_USERINFO_PRESENT_ICQIPADDR)
@@ -953,35 +953,38 @@ error(OscarData *od, FlapConnection *conn, aim_module_t *mod, FlapFrame *frame,
aim_rxcallback_t userfunc;
aim_snac_t *snac2;
guint16 reason;
- char *sn;
+ char *bn;
int was_explicit;
if (!(snac2 = aim_remsnac(od, snac->id))) {
- purple_debug_misc("oscar", "faim: locate.c, error(): received response from unknown request!\n");
+ purple_debug_misc("oscar", "locate error: received response from unknown request!\n");
return 0;
}
if ((snac2->family != SNAC_FAMILY_LOCATE) && (snac2->type != 0x0015)) {
- purple_debug_misc("oscar", "faim: locate.c, error(): received response from invalid request! %d\n", snac2->family);
+ purple_debug_misc("oscar", "locate error: received response from invalid request! %d\n", snac2->family);
+ g_free(snac2->data);
+ g_free(snac2);
return 0;
}
- if (!(sn = snac2->data)) {
- purple_debug_misc("oscar", "faim: locate.c, error(): received response from request without a screen name!\n");
+ if (!(bn = snac2->data)) {
+ purple_debug_misc("oscar", "locate error: received response from request without a buddy name!\n");
+ g_free(snac2);
return 0;
}
reason = byte_stream_get16(bs);
/*
- * Remove this screen name from our queue. If the client requested
+ * Remove this buddy name from our queue. If the client requested
* this buddy's info explicitly, then notify them that we do not have
* info for this buddy.
*/
- was_explicit = aim_locate_gotuserinfo(od, conn, sn);
+ was_explicit = aim_locate_gotuserinfo(od, conn, bn);
if (was_explicit == TRUE)
if ((userfunc = aim_callhandler(od, snac->family, snac->subtype)))
- ret = userfunc(od, conn, frame, reason, sn);
+ ret = userfunc(od, conn, frame, reason, bn);
if (snac2)
g_free(snac2->data);
@@ -1157,29 +1160,29 @@ aim_locate_setcaps(OscarData *od, guint32 caps)
/*
* Subtype 0x0005 - Request info of another AIM user.
*
- * @param sn The screenname whose info you wish to request.
+ * @param bn The buddy name whose info you wish to request.
* @param infotype The type of info you wish to request.
* 0x0001 - Info/profile
* 0x0003 - Away message
* 0x0004 - Capabilities
*/
int
-aim_locate_getinfo(OscarData *od, const char *sn, guint16 infotype)
+aim_locate_getinfo(OscarData *od, const char *bn, guint16 infotype)
{
FlapConnection *conn;
ByteStream bs;
aim_snacid_t snacid;
- if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_LOCATE)) || !sn)
+ if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_LOCATE)) || !bn)
return -EINVAL;
- byte_stream_new(&bs, 2+1+strlen(sn));
+ byte_stream_new(&bs, 2+1+strlen(bn));
snacid = aim_cachesnac(od, SNAC_FAMILY_LOCATE, 0x0005, 0x0000, NULL, 0);
byte_stream_put16(&bs, infotype);
- byte_stream_put8(&bs, strlen(sn));
- byte_stream_putstr(&bs, sn);
+ byte_stream_put8(&bs, strlen(bn));
+ byte_stream_putstr(&bs, bn);
flap_connection_send_snac(od, conn, SNAC_FAMILY_LOCATE, 0x0005, 0x0000, snacid, &bs);
@@ -1229,18 +1232,18 @@ userinfo(OscarData *od, FlapConnection *conn, aim_module_t *mod, FlapFrame *fram
aim_tlvlist_free(tlvlist);
aim_locate_adduserinfo(od, userinfo);
- userinfo2 = aim_locate_finduserinfo(od, userinfo->sn);
+ userinfo2 = aim_locate_finduserinfo(od, userinfo->bn);
aim_info_free(userinfo);
g_free(userinfo);
/*
- * Remove this screen name from our queue. If the client requested
+ * Remove this buddy name from our queue. If the client requested
* this buddy's info explicitly, then notify them that we have info
* for this buddy.
*/
if (userinfo2 != NULL)
{
- was_explicit = aim_locate_gotuserinfo(od, conn, userinfo2->sn);
+ was_explicit = aim_locate_gotuserinfo(od, conn, userinfo2->bn);
if (was_explicit == TRUE)
if ((userfunc = aim_callhandler(od, snac->family, snac->subtype)))
ret = userfunc(od, conn, frame, userinfo2);
@@ -1307,7 +1310,7 @@ int aim_locate_setdirinfo(OscarData *od, const char *first, const char *middle,
/*
* Subtype 0x000b - Huh? What is this?
*/
-int aim_locate_000b(OscarData *od, const char *sn)
+int aim_locate_000b(OscarData *od, const char *bn)
{
FlapConnection *conn;
ByteStream bs;
@@ -1315,15 +1318,15 @@ int aim_locate_000b(OscarData *od, const char *sn)
return -EINVAL;
- if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_LOCATE)) || !sn)
+ if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_LOCATE)) || !bn)
return -EINVAL;
- byte_stream_new(&bs, 1+strlen(sn));
+ byte_stream_new(&bs, 1+strlen(bn));
snacid = aim_cachesnac(od, SNAC_FAMILY_LOCATE, 0x000b, 0x0000, NULL, 0);
- byte_stream_put8(&bs, strlen(sn));
- byte_stream_putstr(&bs, sn);
+ byte_stream_put8(&bs, strlen(bn));
+ byte_stream_putstr(&bs, bn);
flap_connection_send_snac(od, conn, SNAC_FAMILY_LOCATE, 0x000b, 0x0000, snacid, &bs);
@@ -1380,7 +1383,7 @@ aim_locate_setinterests(OscarData *od, const char *interest1, const char *intere
* Subtype 0x0015 - Request the info of a user using the short method. This is
* what iChat uses. It normally is VERY leniently rate limited.
*
- * @param sn The screen name whose info you wish to request.
+ * @param bn The buddy name whose info you wish to request.
* @param flags The bitmask which specifies the type of info you wish to request.
* 0x00000001 - Info/profile.
* 0x00000002 - Away message.
@@ -1389,21 +1392,21 @@ aim_locate_setinterests(OscarData *od, const char *interest1, const char *intere
* @return Return 0 if no errors, otherwise return the error number.
*/
int
-aim_locate_getinfoshort(OscarData *od, const char *sn, guint32 flags)
+aim_locate_getinfoshort(OscarData *od, const char *bn, guint32 flags)
{
FlapConnection *conn;
ByteStream bs;
aim_snacid_t snacid;
- if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_LOCATE)) || !sn)
+ if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_LOCATE)) || !bn)
return -EINVAL;
- byte_stream_new(&bs, 4 + 1 + strlen(sn));
+ byte_stream_new(&bs, 4 + 1 + strlen(bn));
byte_stream_put32(&bs, flags);
- byte_stream_put8(&bs, strlen(sn));
- byte_stream_putstr(&bs, sn);
+ byte_stream_put8(&bs, strlen(bn));
+ byte_stream_putstr(&bs, bn);
- snacid = aim_cachesnac(od, SNAC_FAMILY_LOCATE, 0x0015, 0x0000, sn, strlen(sn)+1);
+ snacid = aim_cachesnac(od, SNAC_FAMILY_LOCATE, 0x0015, 0x0000, bn, strlen(bn)+1);
flap_connection_send_snac_with_priority(od, conn, SNAC_FAMILY_LOCATE, 0x0015, 0x0000, snacid, &bs, FALSE);
byte_stream_destroy(&bs);
diff --git a/libpurple/protocols/oscar/family_odir.c b/libpurple/protocols/oscar/family_odir.c
index a31768a003..be1638fb39 100644
--- a/libpurple/protocols/oscar/family_odir.c
+++ b/libpurple/protocols/oscar/family_odir.c
@@ -31,7 +31,7 @@
/**
* Subtype 0x0002 - Submit a User Search Request
*
- * Search for an AIM screen name based on their email address.
+ * Search for an AIM buddy based on their email address.
*
* @param od The oscar session.
* @param region Should be "us-ascii" unless you know what you're doing.
@@ -70,7 +70,7 @@ int aim_odir_email(OscarData *od, const char *region, const char *email)
/**
* Subtype 0x0002 - Submit a User Search Request
*
- * Search for an AIM screen name based on various info
+ * Search for an AIM buddy based on various info
* about the person.
*
* @param od The oscar session.
@@ -202,7 +202,7 @@ static int parseresults(OscarData *od, FlapConnection *conn, aim_module_t *mod,
new->country = aim_tlv_getstr(tlvlist, 0x0006, 1);
new->state = aim_tlv_getstr(tlvlist, 0x0007, 1);
new->city = aim_tlv_getstr(tlvlist, 0x0008, 1);
- new->sn = aim_tlv_getstr(tlvlist, 0x0009, 1);
+ new->bn = aim_tlv_getstr(tlvlist, 0x0009, 1);
new->interest = aim_tlv_getstr(tlvlist, 0x000b, 1);
new->nick = aim_tlv_getstr(tlvlist, 0x000c, 1);
new->zip = aim_tlv_getstr(tlvlist, 0x000d, 1);
@@ -228,7 +228,7 @@ static int parseresults(OscarData *od, FlapConnection *conn, aim_module_t *mod,
g_free(del->country);
g_free(del->state);
g_free(del->city);
- g_free(del->sn);
+ g_free(del->bn);
g_free(del->interest);
g_free(del->nick);
g_free(del->zip);
diff --git a/libpurple/protocols/oscar/family_oservice.c b/libpurple/protocols/oscar/family_oservice.c
index e11283e0fc..1ba0f2833b 100644
--- a/libpurple/protocols/oscar/family_oservice.c
+++ b/libpurple/protocols/oscar/family_oservice.c
@@ -825,7 +825,7 @@ hostversions(OscarData *od, FlapConnection *conn, aim_module_t *mod, FlapFrame *
int
aim_srv_setextrainfo(OscarData *od,
gboolean seticqstatus, guint32 icqstatus,
- gboolean setavailmsg, const char *availmsg, const char *itmsurl)
+ gboolean setstatusmsg, const char *statusmsg, const char *itmsurl)
{
FlapConnection *conn;
ByteStream bs;
@@ -851,30 +851,17 @@ aim_srv_setextrainfo(OscarData *od,
}
#endif
- if (setavailmsg)
+ if (setstatusmsg)
{
- int availmsglen, itmsurllen;
+ size_t statusmsglen, itmsurllen;
ByteStream tmpbs;
- availmsglen = (availmsg != NULL) ? strlen(availmsg) : 0;
+ statusmsglen = (statusmsg != NULL) ? strlen(statusmsg) : 0;
itmsurllen = (itmsurl != NULL) ? strlen(itmsurl) : 0;
- byte_stream_new(&tmpbs, availmsglen + 8 + itmsurllen + 8);
- byte_stream_put16(&tmpbs, 0x0002);
- byte_stream_put8(&tmpbs, 0x04); /* Flags */
- byte_stream_put8(&tmpbs, availmsglen + 4);
- byte_stream_put16(&tmpbs, availmsglen);
- if (availmsglen > 0)
- byte_stream_putstr(&tmpbs, availmsg);
- byte_stream_put16(&tmpbs, 0x0000);
-
- byte_stream_put16(&tmpbs, 0x0009);
- byte_stream_put8(&tmpbs, 0x04); /* Flags */
- byte_stream_put8(&tmpbs, itmsurllen + 4);
- byte_stream_put16(&tmpbs, itmsurllen);
- if (itmsurllen > 0)
- byte_stream_putstr(&tmpbs, itmsurl);
- byte_stream_put16(&tmpbs, 0x0000);
+ byte_stream_new(&tmpbs, statusmsglen + 8 + itmsurllen + 8);
+ byte_stream_put_bart_asset_str(&tmpbs, 0x0002, statusmsg);
+ byte_stream_put_bart_asset_str(&tmpbs, 0x0009, itmsurl);
aim_tlvlist_add_raw(&tlvlist, 0x001d,
byte_stream_curpos(&tmpbs), tmpbs.data);
diff --git a/libpurple/protocols/oscar/libaim.c b/libpurple/protocols/oscar/libaim.c
index ead36b3538..5e8579a0de 100644
--- a/libpurple/protocols/oscar/libaim.c
+++ b/libpurple/protocols/oscar/libaim.c
@@ -95,9 +95,10 @@ static PurplePluginProtocolInfo prpl_info =
NULL, /* unregister_user */
NULL, /* send_attention */
NULL, /* get_attention_types */
-
sizeof(PurplePluginProtocolInfo), /* struct_size */
- NULL
+ NULL, /* get_account_text_table */
+ NULL, /* initiate_media */
+ NULL /* can_do_media */
};
static PurplePluginInfo info =
diff --git a/libpurple/protocols/oscar/libicq.c b/libpurple/protocols/oscar/libicq.c
index fae6fd2b64..0de97bc145 100644
--- a/libpurple/protocols/oscar/libicq.c
+++ b/libpurple/protocols/oscar/libicq.c
@@ -107,6 +107,8 @@ static PurplePluginProtocolInfo prpl_info =
sizeof(PurplePluginProtocolInfo), /* struct_size */
icq_get_account_text_table, /* get_account_text_table */
+ NULL, /* initiate_media */
+ NULL /* can_do_media */
};
static PurplePluginInfo info =
diff --git a/libpurple/protocols/oscar/odc.c b/libpurple/protocols/oscar/odc.c
index a4f29d09f4..8c02578972 100644
--- a/libpurple/protocols/oscar/odc.c
+++ b/libpurple/protocols/oscar/odc.c
@@ -62,7 +62,7 @@ peer_odc_close(PeerConnection *conn)
PurpleConversation *conv;
account = purple_connection_get_account(conn->od->gc);
- conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, conn->sn);
+ conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, conn->bn);
purple_conversation_write(conv, NULL, tmp, PURPLE_MESSAGE_SYSTEM, time(NULL));
g_free(tmp);
}
@@ -90,11 +90,11 @@ peer_odc_send(PeerConnection *conn, OdcFrame *frame)
purple_debug_info("oscar", "Outgoing ODC frame to %s with "
"type=0x%04x, flags=0x%04x, payload length=%u\n",
- conn->sn, frame->type, frame->flags, frame->payload.len);
+ conn->bn, frame->type, frame->flags, frame->payload.len);
account = purple_connection_get_account(conn->od->gc);
username = purple_account_get_username(account);
- memcpy(frame->sn, username, strlen(username));
+ memcpy(frame->bn, username, strlen(username));
memcpy(frame->cookie, conn->cookie, 8);
length = 76;
@@ -116,7 +116,7 @@ peer_odc_send(PeerConnection *conn, OdcFrame *frame)
byte_stream_put16(&bs, frame->flags);
byte_stream_put16(&bs, 0x0000);
byte_stream_put16(&bs, 0x0000);
- byte_stream_putraw(&bs, frame->sn, 32);
+ byte_stream_putraw(&bs, frame->bn, 32);
byte_stream_putraw(&bs, frame->payload.data, frame->payload.len);
peer_connection_send(conn, &bs);
@@ -366,7 +366,7 @@ peer_odc_handle_payload(PeerConnection *conn, const char *msg, size_t len, int e
g_datalist_clear(&attributes);
/* Append the message up to the tag */
- utf8 = purple_plugin_oscar_decode_im_part(account, conn->sn,
+ utf8 = purple_plugin_oscar_decode_im_part(account, conn->bn,
encoding, 0x0000, tmp, start - tmp);
if (utf8 != NULL) {
g_string_append(newmsg, utf8);
@@ -386,7 +386,7 @@ peer_odc_handle_payload(PeerConnection *conn, const char *msg, size_t len, int e
/* Append any remaining message data */
if (tmp <= msgend)
{
- utf8 = purple_plugin_oscar_decode_im_part(account, conn->sn,
+ utf8 = purple_plugin_oscar_decode_im_part(account, conn->bn,
encoding, 0x0000, tmp, msgend - tmp);
if (utf8 != NULL) {
g_string_append(newmsg, utf8);
@@ -400,7 +400,7 @@ peer_odc_handle_payload(PeerConnection *conn, const char *msg, size_t len, int e
imflags |= PURPLE_MESSAGE_IMAGES;
if (autoreply)
imflags |= PURPLE_MESSAGE_AUTO_RESP;
- serv_got_im(gc, conn->sn, newmsg->str, imflags, time(NULL));
+ serv_got_im(gc, conn->bn, newmsg->str, imflags, time(NULL));
g_string_free(newmsg, TRUE);
/* unref any images we allocated */
@@ -503,11 +503,11 @@ peer_odc_recv_frame(PeerConnection *conn, ByteStream *bs)
byte_stream_advance(bs, 4);
frame->flags = byte_stream_get16(bs);
byte_stream_advance(bs, 4);
- byte_stream_getrawbuf(bs, frame->sn, 32);
+ byte_stream_getrawbuf(bs, frame->bn, 32);
purple_debug_info("oscar", "Incoming ODC frame from %s with "
"type=0x%04x, flags=0x%04x, payload length=%u\n",
- frame->sn, frame->type, frame->flags, frame->payload.len);
+ frame->bn, frame->type, frame->flags, frame->payload.len);
if (!conn->ready)
{
@@ -558,7 +558,7 @@ peer_odc_recv_frame(PeerConnection *conn, ByteStream *bs)
/* Tell the local user that we are connected */
account = purple_connection_get_account(gc);
- conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, conn->sn);
+ conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, conn->bn);
purple_conversation_write(conv, NULL, _("Direct IM established"),
PURPLE_MESSAGE_SYSTEM, time(NULL));
}
@@ -576,16 +576,16 @@ peer_odc_recv_frame(PeerConnection *conn, ByteStream *bs)
/* I had to leave this. It's just too funny. It reminds me of my sister. */
purple_debug_info("oscar", "ohmigod! %s has started typing "
"(DirectIM). He's going to send you a message! "
- "*squeal*\n", conn->sn);
- serv_got_typing(gc, conn->sn, 0, PURPLE_TYPING);
+ "*squeal*\n", conn->bn);
+ serv_got_typing(gc, conn->bn, 0, PURPLE_TYPING);
}
else if (frame->flags & 0x0004)
{
- serv_got_typing(gc, conn->sn, 0, PURPLE_TYPED);
+ serv_got_typing(gc, conn->bn, 0, PURPLE_TYPED);
}
else
{
- serv_got_typing_stopped(gc, conn->sn);
+ serv_got_typing_stopped(gc, conn->bn);
}
if (frame->payload.len > 0)
@@ -598,12 +598,12 @@ peer_odc_recv_frame(PeerConnection *conn, ByteStream *bs)
size1 = purple_str_size_to_units(frame->payload.len);
size2 = purple_str_size_to_units(DIRECTIM_MAX_FILESIZE);
- tmp = g_strdup_printf(_("%s tried to send you a %s file, but we only allow files up to %s over Direct IM. Try using file transfer instead.\n"), conn->sn, size1, size2);
+ tmp = g_strdup_printf(_("%s tried to send you a %s file, but we only allow files up to %s over Direct IM. Try using file transfer instead.\n"), conn->bn, size1, size2);
g_free(size1);
g_free(size2);
account = purple_connection_get_account(conn->od->gc);
- conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, conn->sn);
+ conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, conn->bn);
purple_conversation_write(conv, NULL, tmp, PURPLE_MESSAGE_SYSTEM, time(NULL));
g_free(tmp);
diff --git a/libpurple/protocols/oscar/oft.c b/libpurple/protocols/oscar/oft.c
index d2ba5bebd8..d82622a1c4 100644
--- a/libpurple/protocols/oscar/oft.c
+++ b/libpurple/protocols/oscar/oft.c
@@ -544,7 +544,7 @@ peer_oft_recv_frame(PeerConnection *conn, ByteStream *bs)
frame.name = byte_stream_getraw(bs, frame.name_length);
purple_debug_info("oscar", "Incoming OFT frame from %s with "
- "type=0x%04x\n", conn->sn, frame.type);
+ "type=0x%04x\n", conn->bn, frame.type);
/* TODOFT: peer_oft_dirconvert_fromstupid(frame->name); */
diff --git a/libpurple/protocols/oscar/oscar.c b/libpurple/protocols/oscar/oscar.c
index d0bfc9ef7a..c4d4a83847 100644
--- a/libpurple/protocols/oscar/oscar.c
+++ b/libpurple/protocols/oscar/oscar.c
@@ -204,7 +204,7 @@ static void purple_icons_fetch(PurpleConnection *gc);
void oscar_set_info(PurpleConnection *gc, const char *info);
static void oscar_set_info_and_status(PurpleAccount *account, gboolean setinfo, const char *rawinfo, gboolean setstatus, PurpleStatus *status);
static void oscar_set_extendedstatus(PurpleConnection *gc);
-static void oscar_format_screenname(PurpleConnection *gc, const char *nick);
+static void oscar_format_username(PurpleConnection *gc, const char *nick);
static gboolean purple_ssi_rerequestdata(gpointer data);
static void oscar_free_name_data(struct name_data *data) {
@@ -362,7 +362,7 @@ oscar_utf8_try_convert(PurpleAccount *account, const gchar *msg)
const char *charset = NULL;
char *ret = NULL;
- if(aim_snvalid_icq(purple_account_get_username(account)))
+ if(oscar_util_valid_name_icq(purple_account_get_username(account)))
charset = purple_account_get_string(account, "encoding", NULL);
if(charset && *charset)
@@ -414,7 +414,7 @@ purple_plugin_oscar_convert_to_utf8(const gchar *data, gsize datalen, const char
* charsetstr1 is always set to what the correct encoding should be.
*/
gchar *
-purple_plugin_oscar_decode_im_part(PurpleAccount *account, const char *sourcesn, guint16 charset, guint16 charsubset, const gchar *data, gsize datalen)
+purple_plugin_oscar_decode_im_part(PurpleAccount *account, const char *sourcebn, guint16 charset, guint16 charsubset, const gchar *data, gsize datalen)
{
gchar *ret = NULL;
const gchar *charsetstr1, *charsetstr2;
@@ -428,7 +428,7 @@ purple_plugin_oscar_decode_im_part(PurpleAccount *account, const char *sourcesn,
charsetstr1 = "UTF-16BE";
charsetstr2 = "UTF-8";
} else if (charset == AIM_CHARSET_CUSTOM) {
- if ((sourcesn != NULL) && aim_snvalid_icq(sourcesn))
+ if ((sourcebn != NULL) && oscar_util_valid_name_icq(sourcebn))
charsetstr1 = purple_account_get_string(account, "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING);
else
charsetstr1 = "ISO-8859-1";
@@ -458,7 +458,7 @@ purple_plugin_oscar_decode_im_part(PurpleAccount *account, const char *sourcesn,
str[datalen] = '\0';
salvage = purple_utf8_salvage(str);
tmp = g_strdup_printf(_("(There was an error receiving this message. Either you and %s have different encodings selected, or %s has a buggy client.)"),
- sourcesn, sourcesn);
+ sourcebn, sourcebn);
ret = g_strdup_printf("%s %s", salvage, tmp);
g_free(tmp);
g_free(str);
@@ -473,11 +473,11 @@ purple_plugin_oscar_decode_im_part(PurpleAccount *account, const char *sourcesn,
*/
static void
purple_plugin_oscar_convert_to_best_encoding(PurpleConnection *gc,
- const char *destsn, const gchar *from,
+ const char *destbn, const gchar *from,
gchar **msg, int *msglen_int,
guint16 *charset, guint16 *charsubset)
{
- OscarData *od = gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(gc);
PurpleAccount *account = purple_connection_get_account(gc);
GError *err = NULL;
aim_userinfo_t *userinfo = NULL;
@@ -499,13 +499,13 @@ purple_plugin_oscar_convert_to_best_encoding(PurpleConnection *gc,
* capability, and they are online, then attempt to send
* as UTF-16BE.
*/
- if ((destsn != NULL) && aim_snvalid_icq(destsn))
- userinfo = aim_locate_finduserinfo(od, destsn);
+ if ((destbn != NULL) && oscar_util_valid_name_icq(destbn))
+ userinfo = aim_locate_finduserinfo(od, destbn);
if ((userinfo != NULL) && (userinfo->capabilities & OSCAR_CAPABILITY_UNICODE))
{
PurpleBuddy *b;
- b = purple_find_buddy(account, destsn);
+ b = purple_find_buddy(account, destbn);
if ((b != NULL) && (PURPLE_BUDDY_IS_ONLINE(b)))
{
*msg = g_convert(from, -1, "UTF-16BE", "UTF-8", NULL, &msglen, &err);
@@ -529,7 +529,7 @@ purple_plugin_oscar_convert_to_best_encoding(PurpleConnection *gc,
* ICQ then attempt to send as the user specified character encoding.
*/
charsetstr = "ISO-8859-1";
- if ((destsn != NULL) && aim_snvalid_icq(destsn))
+ if ((destbn != NULL) && oscar_util_valid_name_icq(destbn))
charsetstr = purple_account_get_string(account, "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING);
/*
@@ -808,16 +808,16 @@ static void oscar_user_info_append_status(PurpleConnection *gc, PurpleNotifyUser
gchar *message = NULL, *itmsurl = NULL, *tmp;
gboolean is_away;
- od = gc->proto_data;
+ od = purple_connection_get_protocol_data(gc);
if (userinfo == NULL)
- userinfo = aim_locate_finduserinfo(od, b->name);
+ userinfo = aim_locate_finduserinfo(od, purple_buddy_get_name(b));
if ((user_info == NULL) || ((b == NULL) && (userinfo == NULL)))
return;
if (b == NULL)
- b = purple_find_buddy(purple_connection_get_account(gc), userinfo->sn);
+ b = purple_find_buddy(purple_connection_get_account(gc), userinfo->bn);
if (b) {
presence = purple_buddy_get_presence(b);
@@ -870,11 +870,11 @@ static void oscar_user_info_append_status(PurpleConnection *gc, PurpleNotifyUser
if (itmsurl) {
tmp = g_strdup_printf("<a href=\"%s\">%s</a>",
itmsurl, message);
- g_free(itmsurl);
g_free(message);
message = tmp;
}
}
+ g_free(itmsurl);
if (is_away && message) {
tmp = purple_str_sub_away_formatters(message, purple_account_get_username(account));
@@ -884,7 +884,7 @@ static void oscar_user_info_append_status(PurpleConnection *gc, PurpleNotifyUser
if (b) {
if (purple_presence_is_online(presence)) {
- if (aim_snvalid_icq(b->name) || is_away || !message || !(*message)) {
+ if (oscar_util_valid_name_icq(purple_buddy_get_name(b)) || is_away || !message || !(*message)) {
/* Append the status name for online ICQ statuses, away AIM statuses, and for all buddies with no message.
* If the status name and the message are the same, only show one. */
const char *status_name = purple_status_get_name(status);
@@ -899,21 +899,20 @@ static void oscar_user_info_append_status(PurpleConnection *gc, PurpleNotifyUser
message = tmp;
}
+ } else if (aim_ssi_waitingforauth(od->ssi.local,
+ aim_ssi_itemlist_findparentname(od->ssi.local, purple_buddy_get_name(b)),
+ purple_buddy_get_name(b)))
+ {
+ /* Note if an offline buddy is not authorized */
+ tmp = g_strdup_printf("%s%s%s",
+ _("Not Authorized"),
+ (message && *message) ? ": " : "",
+ (message && *message) ? message : "");
+ g_free(message);
+ message = tmp;
} else {
- if (aim_ssi_waitingforauth(od->ssi.local,
- aim_ssi_itemlist_findparentname(od->ssi.local, b->name),
- b->name)) {
- /* Note if an offline buddy is not authorized */
- tmp = g_strdup_printf("%s%s%s",
- _("Not Authorized"),
- (message && *message) ? ": " : "",
- (message && *message) ? message : "");
- g_free(message);
- message = tmp;
- } else {
- g_free(message);
- message = g_strdup(_("Offline"));
- }
+ g_free(message);
+ message = g_strdup(_("Offline"));
}
}
@@ -931,27 +930,30 @@ static void oscar_user_info_append_extra_info(PurpleConnection *gc, PurpleNotify
PurpleGroup *g = NULL;
struct buddyinfo *bi = NULL;
char *tmp;
+ const char *bname = NULL, *gname = NULL;
- od = gc->proto_data;
+ od = purple_connection_get_protocol_data(gc);
account = purple_connection_get_account(gc);
if ((user_info == NULL) || ((b == NULL) && (userinfo == NULL)))
return;
if (userinfo == NULL)
- userinfo = aim_locate_finduserinfo(od, b->name);
+ userinfo = aim_locate_finduserinfo(od, purple_buddy_get_name(b));
if (b == NULL)
- b = purple_find_buddy(account, userinfo->sn);
+ b = purple_find_buddy(account, userinfo->bn);
if (b != NULL) {
+ bname = purple_buddy_get_name(b);
g = purple_buddy_get_group(b);
+ gname = purple_group_get_name(g);
presence = purple_buddy_get_presence(b);
status = purple_presence_get_active_status(presence);
}
if (userinfo != NULL)
- bi = g_hash_table_lookup(od->buddyinfo, purple_normalize(account, userinfo->sn));
+ bi = g_hash_table_lookup(od->buddyinfo, purple_normalize(account, userinfo->bn));
if ((bi != NULL) && (bi->ipaddr != 0)) {
tmp = g_strdup_printf("%hhu.%hhu.%hhu.%hhu",
@@ -969,8 +971,8 @@ static void oscar_user_info_append_extra_info(PurpleConnection *gc, PurpleNotify
g_free(tmp);
}
- if ((b != NULL) && (b->name != NULL) && (g != NULL) && (g->name != NULL)) {
- tmp = aim_ssi_getcomment(od->ssi.local, g->name, b->name);
+ if ((b != NULL) && (bname != NULL) && (g != NULL) && (gname != NULL)) {
+ tmp = aim_ssi_getcomment(od->ssi.local, gname, bname);
if (tmp != NULL) {
char *tmp2 = g_markup_escape_text(tmp, strlen(tmp));
g_free(tmp);
@@ -1017,7 +1019,7 @@ static char *extract_name(const char *name) {
static struct chat_connection *
find_oscar_chat(PurpleConnection *gc, int id)
{
- OscarData *od = (OscarData *)gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(gc);
GSList *cur;
struct chat_connection *cc;
@@ -1034,7 +1036,7 @@ find_oscar_chat(PurpleConnection *gc, int id)
static struct chat_connection *
find_oscar_chat_by_conn(PurpleConnection *gc, FlapConnection *conn)
{
- OscarData *od = (OscarData *)gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(gc);
GSList *cur;
struct chat_connection *cc;
@@ -1051,7 +1053,7 @@ find_oscar_chat_by_conn(PurpleConnection *gc, FlapConnection *conn)
static struct chat_connection *
find_oscar_chat_by_conv(PurpleConnection *gc, PurpleConversation *conv)
{
- OscarData *od = (OscarData *)gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(gc);
GSList *cur;
struct chat_connection *cc;
@@ -1076,7 +1078,7 @@ oscar_chat_destroy(struct chat_connection *cc)
static void
oscar_chat_kill(PurpleConnection *gc, struct chat_connection *cc)
{
- OscarData *od = (OscarData *)gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(gc);
/* Notify the conversation window that we've left the chat */
serv_got_chat_left(gc, purple_conv_chat_get_id(PURPLE_CONV_CHAT(cc->conv)));
@@ -1292,10 +1294,10 @@ flap_connection_established_admin(OscarData *od, FlapConnection *conn)
od->chpass = FALSE;
}
if (od->setnick) {
- purple_debug_info("oscar", "formatting screen name\n");
- aim_admin_setnick(od, conn, od->newsn);
- g_free(od->newsn);
- od->newsn = NULL;
+ purple_debug_info("oscar", "formatting username\n");
+ aim_admin_setnick(od, conn, od->newformatting);
+ g_free(od->newformatting);
+ od->newformatting = NULL;
od->setnick = FALSE;
}
if (od->conf) {
@@ -1391,7 +1393,7 @@ idle_reporting_pref_cb(const char *name, PurplePrefType type,
guint32 presence;
gc = data;
- od = gc->proto_data;
+ od = purple_connection_get_protocol_data(gc);
report_idle = strcmp((const char *)value, "none") != 0;
presence = aim_ssi_getpresence(od->ssi.local);
@@ -1414,7 +1416,7 @@ recent_buddies_pref_cb(const char *name, PurplePrefType type,
guint32 presence;
gc = data;
- od = gc->proto_data;
+ od = purple_connection_get_protocol_data(gc);
presence = aim_ssi_getpresence(od->ssi.local);
if (value)
@@ -1431,8 +1433,9 @@ oscar_login(PurpleAccount *account)
FlapConnection *newconn;
gc = purple_account_get_connection(account);
- od = gc->proto_data = oscar_data_new();
+ od = oscar_data_new();
od->gc = gc;
+ purple_connection_set_protocol_data(gc, od);
oscar_data_addhandler(od, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, purple_connerr, 0);
oscar_data_addhandler(od, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, flap_connection_established, 0);
@@ -1499,7 +1502,7 @@ oscar_login(PurpleAccount *account)
purple_debug_misc("oscar", "oscar_login: gc = %p\n", gc);
- if (!aim_snvalid(purple_account_get_username(account))) {
+ if (!oscar_util_valid_name(purple_account_get_username(account))) {
gchar *buf;
buf = g_strdup_printf(_("Unable to login: Could not sign on as %s because the username is invalid. Usernames must be a valid email address, or start with a letter and contain only letters, numbers and spaces, or contain only numbers."), purple_account_get_username(account));
purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_INVALID_SETTINGS, buf);
@@ -1507,7 +1510,7 @@ oscar_login(PurpleAccount *account)
return;
}
- if (aim_snvalid_icq((purple_account_get_username(account)))) {
+ if (oscar_util_valid_name_icq((purple_account_get_username(account)))) {
od->icq = TRUE;
} else {
gc->flags |= PURPLE_CONNECTION_HTML;
@@ -1578,7 +1581,7 @@ oscar_close(PurpleConnection *gc)
{
OscarData *od;
- od = (OscarData *)gc->proto_data;
+ od = purple_connection_get_protocol_data(gc);
while (od->oscar_chats)
{
@@ -1594,7 +1597,7 @@ oscar_close(PurpleConnection *gc)
g_free(cr);
}
oscar_data_destroy(od);
- gc->proto_data = NULL;
+ purple_connection_set_protocol_data(gc, NULL);
purple_prefs_disconnect_by_handle(gc);
@@ -1605,7 +1608,7 @@ static int
purple_parse_auth_resp(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...)
{
PurpleConnection *gc = od->gc;
- PurpleAccount *account = gc->account;
+ PurpleAccount *account = purple_connection_get_account(gc);
char *host; int port;
int i;
FlapConnection *newconn;
@@ -1619,13 +1622,13 @@ purple_parse_auth_resp(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...)
va_end(ap);
purple_debug_info("oscar",
- "inside auth_resp (Username: %s)\n", info->sn);
+ "inside auth_resp (Username: %s)\n", info->bn);
if (info->errorcode || !info->bosip || !info->cookielen || !info->cookie) {
char buf[256];
switch (info->errorcode) {
case 0x01:
- /* Unregistered screen name */
+ /* Unregistered username */
purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_INVALID_USERNAME, _("Invalid username."));
break;
case 0x05:
@@ -1644,7 +1647,7 @@ purple_parse_auth_resp(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...)
purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, _("The AOL Instant Messenger service is temporarily unavailable."));
break;
case 0x18:
- /* screen name connecting too frequently */
+ /* username connecting too frequently */
purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_OTHER_ERROR, _("You have been connecting and disconnecting too frequently. Wait ten minutes and try again. If you continue to try, you will need to wait even longer."));
break;
case 0x1c:
@@ -1722,7 +1725,7 @@ static void
purple_parse_auth_securid_request_yes_cb(gpointer user_data, const char *msg)
{
PurpleConnection *gc = user_data;
- OscarData *od = gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(gc);
aim_auth_securid_send(od, msg);
}
@@ -1774,7 +1777,7 @@ struct pieceofcrap {
static void damn_you(gpointer data, gint source, PurpleInputCondition c)
{
struct pieceofcrap *pos = data;
- OscarData *od = pos->gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(pos->gc);
char in = '\0';
int x = 0;
unsigned char m[17];
@@ -1830,17 +1833,10 @@ straight_to_hell(gpointer data, gint source, const gchar *error_message)
gchar *buf;
gssize result;
- if (!PURPLE_CONNECTION_IS_VALID(pos->gc))
- {
- g_free(pos->modname);
- g_free(pos);
- return;
- }
-
pos->fd = source;
if (source < 0) {
- GHashTable *ui_info = purple_core_get_ui_info();
+ GHashTable *ui_info = purple_core_get_ui_info();
buf = g_strdup_printf(_("You may be disconnected shortly. "
"Check %s for updates."),
((ui_info && g_hash_table_lookup(ui_info, "website")) ? (char *)g_hash_table_lookup(ui_info, "website") : PURPLE_WEBSITE));
@@ -1934,8 +1930,7 @@ int purple_memrequest(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
pos->len = len;
pos->modname = g_strdup(modname);
- /* TODO: Keep track of this return value. */
- if (purple_proxy_connect(NULL, pos->gc->account, "pidgin.im", 80,
+ if (purple_proxy_connect(pos->gc, pos->gc->account, "pidgin.im", 80,
straight_to_hell, pos) == NULL)
{
char buf[256];
@@ -2099,7 +2094,7 @@ static int purple_parse_oncoming(OscarData *od, FlapConnection *conn, FlapFrame
va_end(ap);
g_return_val_if_fail(info != NULL, 1);
- g_return_val_if_fail(info->sn != NULL, 1);
+ g_return_val_if_fail(info->bn != NULL, 1);
if (info->present & AIM_USERINFO_PRESENT_FLAGS) {
if (info->flags & AIM_FLAG_AWAY)
@@ -2113,7 +2108,7 @@ static int purple_parse_oncoming(OscarData *od, FlapConnection *conn, FlapFrame
}
}
- if (aim_snvalid_icq(info->sn)) {
+ if (oscar_util_valid_name_icq(info->bn)) {
if (type & AIM_ICQ_STATE_CHAT)
status_id = OSCAR_STATUS_ID_FREE4CHAT;
else if (type & AIM_ICQ_STATE_DND)
@@ -2139,9 +2134,9 @@ static int purple_parse_oncoming(OscarData *od, FlapConnection *conn, FlapFrame
if (info->flags & AIM_FLAG_WIRELESS)
{
- purple_prpl_got_user_status(account, info->sn, OSCAR_STATUS_ID_MOBILE, NULL);
+ purple_prpl_got_user_status(account, info->bn, OSCAR_STATUS_ID_MOBILE, NULL);
} else {
- purple_prpl_got_user_status_deactive(account, info->sn, OSCAR_STATUS_ID_MOBILE);
+ purple_prpl_got_user_status_deactive(account, info->bn, OSCAR_STATUS_ID_MOBILE);
}
if (info->status != NULL && info->status[0] != '\0')
@@ -2164,11 +2159,11 @@ static int purple_parse_oncoming(OscarData *od, FlapConnection *conn, FlapFrame
*/
tmp2 = "";
- purple_prpl_got_user_status(account, info->sn, status_id,
+ purple_prpl_got_user_status(account, info->bn, status_id,
"message", tmp2, "itmsurl", itmsurl, NULL);
}
else
- purple_prpl_got_user_status(account, info->sn, status_id, "message", tmp2, NULL);
+ purple_prpl_got_user_status(account, info->bn, status_id, "message", tmp2, NULL);
g_free(tmp);
@@ -2180,7 +2175,7 @@ static int purple_parse_oncoming(OscarData *od, FlapConnection *conn, FlapFrame
signon = info->onlinesince;
else if (info->present & AIM_USERINFO_PRESENT_SESSIONLEN)
signon = time(NULL) - info->sessionlen;
- purple_prpl_got_user_login_time(account, info->sn, signon);
+ purple_prpl_got_user_login_time(account, info->bn, signon);
/* Idle time stuff */
/* info->idletime is the number of minutes that this user has been idle */
@@ -2188,15 +2183,15 @@ static int purple_parse_oncoming(OscarData *od, FlapConnection *conn, FlapFrame
time_idle = time(NULL) - info->idletime * 60;
if (time_idle > 0)
- purple_prpl_got_user_idle(account, info->sn, TRUE, time_idle);
+ purple_prpl_got_user_idle(account, info->bn, TRUE, time_idle);
else
- purple_prpl_got_user_idle(account, info->sn, FALSE, 0);
+ purple_prpl_got_user_idle(account, info->bn, FALSE, 0);
/* Server stored icon stuff */
- bi = g_hash_table_lookup(od->buddyinfo, purple_normalize(account, info->sn));
+ bi = g_hash_table_lookup(od->buddyinfo, purple_normalize(account, info->bn));
if (!bi) {
bi = g_new0(struct buddyinfo, 1);
- g_hash_table_insert(od->buddyinfo, g_strdup(purple_normalize(account, info->sn)), bi);
+ g_hash_table_insert(od->buddyinfo, g_strdup(purple_normalize(account, info->bn)), bi);
}
bi->typingnot = FALSE;
bi->ico_informed = FALSE;
@@ -2208,20 +2203,20 @@ static int purple_parse_oncoming(OscarData *od, FlapConnection *conn, FlapFrame
PurpleBuddy *b = NULL;
b16 = purple_base16_encode(info->iconcsum, info->iconcsumlen);
- b = purple_find_buddy(account, info->sn);
+ b = purple_find_buddy(account, info->bn);
if (b != NULL)
saved_b16 = purple_buddy_icons_get_checksum_for_user(b);
if (!b16 || !saved_b16 || strcmp(b16, saved_b16)) {
/* Invalidate the old icon for this user */
- purple_buddy_icons_set_for_user(account, info->sn, NULL, 0, NULL);
+ purple_buddy_icons_set_for_user(account, info->bn, NULL, 0, NULL);
/* Fetch the new icon (if we're not already doing so) */
- if (g_slist_find_custom(od->requesticon, info->sn,
- (GCompareFunc)aim_sncmp) == NULL)
+ if (g_slist_find_custom(od->requesticon, info->bn,
+ (GCompareFunc)oscar_util_name_compare) == NULL)
{
od->requesticon = g_slist_prepend(od->requesticon,
- g_strdup(purple_normalize(account, info->sn)));
+ g_strdup(purple_normalize(account, info->bn)));
purple_icons_fetch(gc);
}
}
@@ -2248,9 +2243,9 @@ static int purple_parse_offgoing(OscarData *od, FlapConnection *conn, FlapFrame
info = va_arg(ap, aim_userinfo_t *);
va_end(ap);
- purple_prpl_got_user_status(account, info->sn, OSCAR_STATUS_ID_OFFLINE, NULL);
- purple_prpl_got_user_status_deactive(account, info->sn, OSCAR_STATUS_ID_MOBILE);
- g_hash_table_remove(od->buddyinfo, purple_normalize(gc->account, info->sn));
+ purple_prpl_got_user_status(account, info->bn, OSCAR_STATUS_ID_OFFLINE, NULL);
+ purple_prpl_got_user_status_deactive(account, info->bn, OSCAR_STATUS_ID_MOBILE);
+ g_hash_table_remove(od->buddyinfo, purple_normalize(gc->account, info->bn));
return 1;
}
@@ -2268,15 +2263,15 @@ static int incomingim_chan1(OscarData *od, FlapConnection *conn, aim_userinfo_t
GData *attribs;
purple_debug_misc("oscar", "Received IM from %s with %d parts\n",
- userinfo->sn, args->mpmsg.numparts);
+ userinfo->bn, args->mpmsg.numparts);
if (args->mpmsg.numparts == 0)
return 1;
- bi = g_hash_table_lookup(od->buddyinfo, purple_normalize(account, userinfo->sn));
+ bi = g_hash_table_lookup(od->buddyinfo, purple_normalize(account, userinfo->bn));
if (!bi) {
bi = g_new0(struct buddyinfo, 1);
- g_hash_table_insert(od->buddyinfo, g_strdup(purple_normalize(account, userinfo->sn)), bi);
+ g_hash_table_insert(od->buddyinfo, g_strdup(purple_normalize(account, userinfo->bn)), bi);
}
if (args->icbmflags & AIM_IMFLAGS_AWAY)
@@ -2288,7 +2283,7 @@ static int incomingim_chan1(OscarData *od, FlapConnection *conn, aim_userinfo_t
bi->typingnot = FALSE;
if ((args->icbmflags & AIM_IMFLAGS_HASICON) && (args->iconlen) && (args->iconsum) && (args->iconstamp)) {
- purple_debug_misc("oscar", "%s has an icon\n", userinfo->sn);
+ purple_debug_misc("oscar", "%s has an icon\n", userinfo->bn);
if ((args->iconlen != bi->ico_len) || (args->iconsum != bi->ico_csum) || (args->iconstamp != bi->ico_time)) {
bi->ico_need = TRUE;
bi->ico_len = args->iconlen;
@@ -2304,8 +2299,8 @@ static int incomingim_chan1(OscarData *od, FlapConnection *conn, aim_userinfo_t
size_t len = purple_imgstore_get_size(img);
purple_debug_info("oscar",
"Sending buddy icon to %s (%" G_GSIZE_FORMAT " bytes)\n",
- userinfo->sn, len);
- aim_im_sendch2_icon(od, userinfo->sn, data, len,
+ userinfo->bn, len);
+ aim_im_sendch2_icon(od, userinfo->bn, data, len,
purple_buddy_icons_get_account_icon_timestamp(account),
aimutil_iconsum(data, len));
}
@@ -2314,7 +2309,7 @@ static int incomingim_chan1(OscarData *od, FlapConnection *conn, aim_userinfo_t
message = g_string_new("");
curpart = args->mpmsg.parts;
while (curpart != NULL) {
- tmp = purple_plugin_oscar_decode_im_part(account, userinfo->sn, curpart->charset,
+ tmp = purple_plugin_oscar_decode_im_part(account, userinfo->bn, curpart->charset,
curpart->charsubset, curpart->data, curpart->datalen);
if (tmp != NULL) {
g_string_append(message, tmp);
@@ -2334,7 +2329,7 @@ static int incomingim_chan1(OscarData *od, FlapConnection *conn, aim_userinfo_t
* Note: There *may* be some clients which send messages as HTML formatted -
* they need to be special-cased somehow.
*/
- if (aim_snvalid_icq(purple_account_get_username(account)) && aim_snvalid_icq(userinfo->sn)) {
+ if (oscar_util_valid_name_icq(purple_account_get_username(account)) && oscar_util_valid_name_icq(userinfo->bn)) {
/* being recevied by ICQ from ICQ - escape HTML so it is displayed as sent */
gchar *tmp2 = g_markup_escape_text(tmp, -1);
g_free(tmp);
@@ -2372,7 +2367,7 @@ static int incomingim_chan1(OscarData *od, FlapConnection *conn, aim_userinfo_t
g_datalist_clear(&attribs);
}
- serv_got_im(gc, userinfo->sn, tmp, flags,
+ serv_got_im(gc, userinfo->bn, tmp, flags,
(args->icbmflags & AIM_IMFLAGS_OFFLINE) ? args->timestamp : time(NULL));
g_free(tmp);
@@ -2391,13 +2386,13 @@ incomingim_chan2(OscarData *od, FlapConnection *conn, aim_userinfo_t *userinfo,
gc = od->gc;
account = purple_connection_get_account(gc);
- od = gc->proto_data;
+ od = purple_connection_get_protocol_data(gc);
if (args == NULL)
return 0;
purple_debug_misc("oscar", "Incoming rendezvous message of type %u, "
- "user %s, status %hu\n", args->type, userinfo->sn, args->status);
+ "user %s, status %hu\n", args->type, userinfo->bn, args->status);
if (args->msg != NULL)
{
@@ -2443,7 +2438,7 @@ incomingim_chan2(OscarData *od, FlapConnection *conn, aim_userinfo_t *userinfo,
g_strdup_printf("%d", args->info.chat.roominfo.exchange));
serv_got_chat_invite(gc,
utf8name,
- userinfo->sn,
+ userinfo->bn,
message,
components);
}
@@ -2453,14 +2448,14 @@ incomingim_chan2(OscarData *od, FlapConnection *conn, aim_userinfo_t *userinfo,
{
if (args->status == AIM_RENDEZVOUS_PROPOSE)
{
- peer_connection_got_proposition(od, userinfo->sn, message, args);
+ peer_connection_got_proposition(od, userinfo->bn, message, args);
}
else if (args->status == AIM_RENDEZVOUS_CANCEL)
{
/* The other user canceled a peer request */
PeerConnection *conn;
- conn = peer_connection_find_by_cookie(od, userinfo->sn, args->cookie);
+ conn = peer_connection_find_by_cookie(od, userinfo->bn, args->cookie);
/*
* If conn is NULL it means we haven't tried to create
* a connection with that user. They may be trying to
@@ -2491,7 +2486,7 @@ incomingim_chan2(OscarData *od, FlapConnection *conn, aim_userinfo_t *userinfo,
else if (args->type & OSCAR_CAPABILITY_BUDDYICON)
{
- purple_buddy_icons_set_for_user(account, userinfo->sn,
+ purple_buddy_icons_set_for_user(account, userinfo->bn,
g_memdup(args->info.icon.icon, args->info.icon.length),
args->info.icon.length,
NULL);
@@ -2528,9 +2523,10 @@ purple_auth_request(struct name_data *data, char *msg)
PurpleAccount *account;
PurpleBuddy *buddy;
PurpleGroup *group;
+ const char *bname, *gname;
gc = data->gc;
- od = gc->proto_data;
+ od = purple_connection_get_protocol_data(gc);
account = purple_connection_get_account(gc);
buddy = purple_find_buddy(account, data->name);
if (buddy != NULL)
@@ -2540,15 +2536,17 @@ purple_auth_request(struct name_data *data, char *msg)
if (group != NULL)
{
+ bname = purple_buddy_get_name(buddy);
+ gname = purple_group_get_name(group);
purple_debug_info("oscar", "ssi: adding buddy %s to group %s\n",
- buddy->name, group->name);
+ bname, gname);
aim_ssi_sendauthrequest(od, data->name, msg ? msg : _("Please authorize me so I can add you to my buddy list."));
- if (!aim_ssi_itemlist_finditem(od->ssi.local, group->name, buddy->name, AIM_SSI_TYPE_BUDDY))
+ if (!aim_ssi_itemlist_finditem(od->ssi.local, gname, bname, AIM_SSI_TYPE_BUDDY))
{
- aim_ssi_addbuddy(od, buddy->name, group->name, NULL, purple_buddy_get_alias_only(buddy), NULL, NULL, TRUE);
+ aim_ssi_addbuddy(od, bname, gname, NULL, purple_buddy_get_alias_only(buddy), NULL, NULL, TRUE);
/* Mobile users should always be online */
- if (buddy->name[0] == '+') {
+ if (bname[0] == '+') {
purple_prpl_got_user_status(account,
purple_buddy_get_name(buddy),
OSCAR_STATUS_ID_AVAILABLE, NULL);
@@ -2588,8 +2586,8 @@ purple_auth_sendrequest_menu(PurpleBlistNode *node, gpointer ignored)
g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
buddy = (PurpleBuddy *) node;
- gc = purple_account_get_connection(buddy->account);
- purple_auth_sendrequest(gc, buddy->name);
+ gc = purple_account_get_connection(purple_buddy_get_account(buddy));
+ purple_auth_sendrequest(gc, purple_buddy_get_name(buddy));
}
/* When other people ask you for authorization */
@@ -2598,7 +2596,7 @@ purple_auth_grant(gpointer cbdata)
{
struct name_data *data = cbdata;
PurpleConnection *gc = data->gc;
- OscarData *od = gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(gc);
aim_ssi_sendauthreply(od, data->name, 0x01, NULL);
@@ -2610,7 +2608,7 @@ static void
purple_auth_dontgrant(struct name_data *data, char *msg)
{
PurpleConnection *gc = data->gc;
- OscarData *od = gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(gc);
aim_ssi_sendauthreply(od, data->name, 0x00, msg ? msg : _("No reason given."));
}
@@ -2724,21 +2722,21 @@ incomingim_chan4(OscarData *od, FlapConnection *conn, aim_userinfo_t *userinfo,
case 0x06: { /* Someone requested authorization */
if (i >= 6) {
struct name_data *data = g_new(struct name_data, 1);
- gchar *sn = g_strdup_printf("%u", args->uin);
+ gchar *bn = g_strdup_printf("%u", args->uin);
gchar *reason = NULL;
if (msg2[5] != NULL)
- reason = purple_plugin_oscar_decode_im_part(account, sn, AIM_CHARSET_CUSTOM, 0x0000, msg2[5], strlen(msg2[5]));
+ reason = purple_plugin_oscar_decode_im_part(account, bn, AIM_CHARSET_CUSTOM, 0x0000, msg2[5], strlen(msg2[5]));
purple_debug_info("oscar",
"Received an authorization request from UIN %u\n",
args->uin);
data->gc = gc;
- data->name = sn;
+ data->name = bn;
data->nick = NULL;
- purple_account_request_authorization(account, sn, NULL, NULL,
- reason, purple_find_buddy(account, sn) != NULL,
+ purple_account_request_authorization(account, bn, NULL, NULL,
+ reason, purple_find_buddy(account, bn) != NULL,
purple_auth_grant,
purple_auth_dontgrant_msgprompt, data);
g_free(reason);
@@ -2940,7 +2938,7 @@ static int purple_parse_misses(OscarData *od, FlapConnection *conn, FlapFrame *f
"You missed %hu messages from %s because they were invalid.",
nummissed),
nummissed,
- userinfo->sn);
+ userinfo->bn);
break;
case 1: /* Message too large */
buf = g_strdup_printf(
@@ -2949,7 +2947,7 @@ static int purple_parse_misses(OscarData *od, FlapConnection *conn, FlapFrame *f
"You missed %hu messages from %s because they were too large.",
nummissed),
nummissed,
- userinfo->sn);
+ userinfo->bn);
break;
case 2: /* Rate exceeded */
buf = g_strdup_printf(
@@ -2958,7 +2956,7 @@ static int purple_parse_misses(OscarData *od, FlapConnection *conn, FlapFrame *f
"You missed %hu messages from %s because the rate limit has been exceeded.",
nummissed),
nummissed,
- userinfo->sn);
+ userinfo->bn);
break;
case 3: /* Evil Sender */
buf = g_strdup_printf(
@@ -2967,7 +2965,7 @@ static int purple_parse_misses(OscarData *od, FlapConnection *conn, FlapFrame *f
"You missed %hu messages from %s because his/her warning level is too high.",
nummissed),
nummissed,
- userinfo->sn);
+ userinfo->bn);
break;
case 4: /* Evil Receiver */
buf = g_strdup_printf(
@@ -2976,7 +2974,7 @@ static int purple_parse_misses(OscarData *od, FlapConnection *conn, FlapFrame *f
"You missed %hu messages from %s because your warning level is too high.",
nummissed),
nummissed,
- userinfo->sn);
+ userinfo->bn);
break;
default:
buf = g_strdup_printf(
@@ -2985,11 +2983,11 @@ static int purple_parse_misses(OscarData *od, FlapConnection *conn, FlapFrame *f
"You missed %hu messages from %s for an unknown reason.",
nummissed),
nummissed,
- userinfo->sn);
+ userinfo->bn);
break;
}
- if (!purple_conv_present_error(userinfo->sn, account, buf))
+ if (!purple_conv_present_error(userinfo->bn, account, buf))
purple_notify_error(od->gc, NULL, buf, NULL);
g_free(buf);
@@ -3107,7 +3105,7 @@ static int purple_parse_genericerr(OscarData *od, FlapConnection *conn, FlapFram
static int purple_parse_msgerr(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
PurpleConnection *gc = od->gc;
#ifdef TODOFT
- OscarData *od = gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(gc);
PurpleXfer *xfer;
#endif
va_list ap;
@@ -3135,7 +3133,7 @@ static int purple_parse_msgerr(OscarData *od, FlapConnection *conn, FlapFrame *f
}
#endif
- /* Data is assumed to be the destination sn */
+ /* Data is assumed to be the destination bn */
buf = g_strdup_printf(_("Unable to send message: %s"), (reason < msgerrreasonlen) ? _(msgerrreason[reason]) : _("Unknown reason."));
if (!purple_conv_present_error(data, purple_connection_get_account(gc), buf)) {
g_free(buf);
@@ -3152,25 +3150,25 @@ static int purple_parse_mtn(OscarData *od, FlapConnection *conn, FlapFrame *fr,
PurpleConnection *gc = od->gc;
va_list ap;
guint16 type1, type2;
- char *sn;
+ char *bn;
va_start(ap, fr);
type1 = (guint16) va_arg(ap, unsigned int);
- sn = va_arg(ap, char *);
+ bn = va_arg(ap, char *);
type2 = (guint16) va_arg(ap, unsigned int);
va_end(ap);
switch (type2) {
case 0x0000: { /* Text has been cleared */
- serv_got_typing_stopped(gc, sn);
+ serv_got_typing_stopped(gc, bn);
} break;
case 0x0001: { /* Paused typing */
- serv_got_typing(gc, sn, 0, PURPLE_TYPED);
+ serv_got_typing(gc, bn, 0, PURPLE_TYPED);
} break;
case 0x0002: { /* Typing */
- serv_got_typing(gc, sn, 0, PURPLE_TYPING);
+ serv_got_typing(gc, bn, 0, PURPLE_TYPING);
} break;
default: {
@@ -3178,7 +3176,7 @@ static int purple_parse_mtn(OscarData *od, FlapConnection *conn, FlapFrame *fr,
* It looks like iChat sometimes sends typing notification
* with type1=0x0001 and type2=0x000f. Not sure why.
*/
- purple_debug_info("oscar", "Received unknown typing notification message from %s. Type1 is 0x%04x and type2 is 0x%04hx.\n", sn, type1, type2);
+ purple_debug_info("oscar", "Received unknown typing notification message from %s. Type1 is 0x%04x and type2 is 0x%04hx.\n", bn, type1, type2);
} break;
}
@@ -3239,7 +3237,7 @@ static int purple_parse_userinfo(OscarData *od, FlapConnection *conn, FlapFrame
oscar_user_info_append_extra_info(gc, user_info, NULL, userinfo);
- if ((userinfo->present & AIM_USERINFO_PRESENT_ONLINESINCE) && !aim_snvalid_sms(userinfo->sn)) {
+ if ((userinfo->present & AIM_USERINFO_PRESENT_ONLINESINCE) && !oscar_util_valid_name_sms(userinfo->bn)) {
/* An SMS contact is always online; its Online Since valid is not useful */
time_t t = userinfo->onlinesince;
oscar_user_info_add_pair(user_info, _("Online Since"), purple_date_format_full(localtime(&t)));
@@ -3273,11 +3271,11 @@ static int purple_parse_userinfo(OscarData *od, FlapConnection *conn, FlapFrame
purple_notify_user_info_add_section_break(user_info);
tmp = g_strdup_printf("<a href=\"http://profiles.aim.com/%s\">%s</a>",
- purple_normalize(account, userinfo->sn), _("View web profile"));
+ purple_normalize(account, userinfo->bn), _("View web profile"));
purple_notify_user_info_add_pair(user_info, NULL, tmp);
g_free(tmp);
- purple_notify_userinfo(gc, userinfo->sn, user_info, NULL, NULL);
+ purple_notify_userinfo(gc, userinfo->bn, user_info, NULL, NULL);
purple_notify_user_info_destroy(user_info);
return 1;
@@ -3299,14 +3297,14 @@ static int purple_got_infoblock(OscarData *od, FlapConnection *conn, FlapFrame *
userinfo = va_arg(ap, aim_userinfo_t *);
va_end(ap);
- b = purple_find_buddy(account, userinfo->sn);
+ b = purple_find_buddy(account, userinfo->bn);
if (b == NULL)
return 1;
- if (!aim_snvalid_icq(userinfo->sn))
+ if (!oscar_util_valid_name_icq(userinfo->bn))
{
- if (strcmp(purple_buddy_get_name(b), userinfo->sn) != 0)
- serv_got_alias(gc, purple_buddy_get_name(b), userinfo->sn);
+ if (strcmp(purple_buddy_get_name(b), userinfo->bn) != 0)
+ serv_got_alias(gc, purple_buddy_get_name(b), userinfo->bn);
else
serv_got_alias(gc, purple_buddy_get_name(b), NULL);
}
@@ -3323,7 +3321,7 @@ static int purple_got_infoblock(OscarData *od, FlapConnection *conn, FlapFrame *
userinfo->away,
userinfo->away_len);
g_free(charset);
- purple_prpl_got_user_status(account, userinfo->sn,
+ purple_prpl_got_user_status(account, userinfo->bn,
purple_status_get_id(status),
"message", message, NULL);
g_free(message);
@@ -3444,7 +3442,7 @@ static int purple_conv_chat_join(OscarData *od, FlapConnection *conn, FlapFrame
return 1;
for (i = 0; i < count; i++)
- purple_conv_chat_add_user(PURPLE_CONV_CHAT(c->conv), info[i].sn, NULL, PURPLE_CBFLAGS_NONE, TRUE);
+ purple_conv_chat_add_user(PURPLE_CONV_CHAT(c->conv), info[i].bn, NULL, PURPLE_CBFLAGS_NONE, TRUE);
return 1;
}
@@ -3467,7 +3465,7 @@ static int purple_conv_chat_leave(OscarData *od, FlapConnection *conn, FlapFrame
return 1;
for (i = 0; i < count; i++)
- purple_conv_chat_remove_user(PURPLE_CONV_CHAT(c->conv), info[i].sn, NULL);
+ purple_conv_chat_remove_user(PURPLE_CONV_CHAT(c->conv), info[i].bn, NULL);
return 1;
}
@@ -3536,7 +3534,7 @@ static int purple_conv_chat_incoming_msg(OscarData *od, FlapConnection *conn, Fl
if (utf8 == NULL)
/* The conversion failed! */
utf8 = g_strdup(_("[Unable to display a message from this user because it contained invalid characters.]"));
- serv_got_chat_in(gc, ccon->id, info->sn, 0, utf8, time((time_t)NULL));
+ serv_got_chat_in(gc, ccon->id, info->bn, 0, utf8, time((time_t)NULL));
g_free(utf8);
return 1;
@@ -3544,11 +3542,15 @@ static int purple_conv_chat_incoming_msg(OscarData *od, FlapConnection *conn, Fl
static int purple_email_parseupdate(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
va_list ap;
- PurpleConnection *gc = od->gc;
+ PurpleConnection *gc;
+ PurpleAccount *account;
struct aim_emailinfo *emailinfo;
int havenewmail;
char *alertitle, *alerturl;
+ gc = od->gc;
+ account = purple_connection_get_account(gc);
+
va_start(ap, fr);
emailinfo = va_arg(ap, struct aim_emailinfo *);
havenewmail = va_arg(ap, int);
@@ -3556,14 +3558,16 @@ static int purple_email_parseupdate(OscarData *od, FlapConnection *conn, FlapFra
alerturl = va_arg(ap, char *);
va_end(ap);
- if ((emailinfo != NULL) && purple_account_get_check_mail(gc->account)) {
- gchar *to = g_strdup_printf("%s%s%s", purple_account_get_username(purple_connection_get_account(gc)),
- emailinfo->domain ? "@" : "",
- emailinfo->domain ? emailinfo->domain : "");
+ if (account != NULL && emailinfo != NULL && purple_account_get_check_mail(account) &&
+ emailinfo->unread && havenewmail) {
+ gchar *to = g_strdup_printf("%s%s%s",
+ purple_account_get_username(account),
+ emailinfo->domain ? "@" : "",
+ emailinfo->domain ? emailinfo->domain : "");
const char *tos[2] = { to };
- const char *urls[2] = {emailinfo->url };
- if (emailinfo->unread && havenewmail)
- purple_notify_emails(gc, emailinfo->nummsgs, FALSE, NULL, NULL, tos, urls, NULL, NULL);
+ const char *urls[2] = { emailinfo->url };
+ purple_notify_emails(gc, emailinfo->nummsgs, FALSE, NULL, NULL,
+ tos, urls, NULL, NULL);
g_free(to);
}
@@ -3576,12 +3580,12 @@ static int purple_email_parseupdate(OscarData *od, FlapConnection *conn, FlapFra
static int purple_icon_parseicon(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
PurpleConnection *gc = od->gc;
va_list ap;
- char *sn;
+ char *bn;
guint8 iconcsumtype, *iconcsum, *icon;
guint16 iconcsumlen, iconlen;
va_start(ap, fr);
- sn = va_arg(ap, char *);
+ bn = va_arg(ap, char *);
iconcsumtype = va_arg(ap, int);
iconcsum = va_arg(ap, guint8 *);
iconcsumlen = va_arg(ap, int);
@@ -3596,7 +3600,7 @@ static int purple_icon_parseicon(OscarData *od, FlapConnection *conn, FlapFrame
if ((iconlen > 0) && (iconlen != 90)) {
char *b16 = purple_base16_encode(iconcsum, iconcsumlen);
purple_buddy_icons_set_for_user(purple_connection_get_account(gc),
- sn, g_memdup(icon, iconlen), iconlen, b16);
+ bn, g_memdup(icon, iconlen), iconlen, b16);
g_free(b16);
}
@@ -3606,7 +3610,7 @@ static int purple_icon_parseicon(OscarData *od, FlapConnection *conn, FlapFrame
static void
purple_icons_fetch(PurpleConnection *gc)
{
- OscarData *od = gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(gc);
aim_userinfo_t *userinfo;
FlapConnection *conn;
@@ -3653,14 +3657,14 @@ purple_icons_fetch(PurpleConnection *gc)
static int purple_parse_msgack(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
va_list ap;
guint16 type;
- char *sn;
+ char *bn;
va_start(ap, fr);
type = (guint16) va_arg(ap, unsigned int);
- sn = va_arg(ap, char *);
+ bn = va_arg(ap, char *);
va_end(ap);
- purple_debug_info("oscar", "Sent message to %s.\n", sn);
+ purple_debug_info("oscar", "Sent message to %s.\n", bn);
return 1;
}
@@ -3720,7 +3724,7 @@ static int purple_parse_evilnotify(OscarData *od, FlapConnection *conn, FlapFram
userinfo = va_arg(ap, aim_userinfo_t *);
va_end(ap);
- purple_prpl_got_account_warning_level(account, (userinfo && userinfo->sn) ? userinfo->sn : NULL, (newevil/10.0) + 0.5);
+ purple_prpl_got_account_warning_level(account, (userinfo && userinfo->bn) ? userinfo->bn : NULL, (newevil/10.0) + 0.5);
#endif
return 1;
@@ -3735,7 +3739,7 @@ static int purple_selfinfo(OscarData *od, FlapConnection *conn, FlapFrame *fr, .
info = va_arg(ap, aim_userinfo_t *);
va_end(ap);
- purple_connection_set_display_name(od->gc, info->sn);
+ purple_connection_set_display_name(od->gc, info->bn);
/*
* What's with the + 0.5?
@@ -3844,13 +3848,13 @@ static int purple_bosrights(OscarData *od, FlapConnection *conn, FlapFrame *fr,
PurpleAccount *account;
PurpleStatus *status;
PurplePresence *presence;
- const char *message, *itmsurl;
+ const char *username, *message, *itmsurl;
char *tmp;
va_list ap;
guint16 maxpermits, maxdenies;
gc = od->gc;
- od = (OscarData *)gc->proto_data;
+ od = purple_connection_get_protocol_data(gc);
account = purple_connection_get_account(gc);
va_start(ap, fr);
@@ -3873,12 +3877,13 @@ static int purple_bosrights(OscarData *od, FlapConnection *conn, FlapFrame *fr,
if (purple_account_get_user_info(account) != NULL)
serv_set_info(gc, purple_account_get_user_info(account));
- if (!od->icq && strcmp(purple_account_get_username(account), purple_connection_get_display_name(gc)) != 0)
+ username = purple_account_get_username(account);
+ if (!od->icq && strcmp(username, purple_connection_get_display_name(gc)) != 0)
/*
- * Format the screen name for AIM accounts if it's different
+ * Format the username for AIM accounts if it's different
* than what's currently set.
*/
- oscar_format_screenname(gc, account->username);
+ oscar_format_username(gc, username);
/* Set our available message based on the current status */
status = purple_account_get_active_status(account);
@@ -3912,13 +3917,13 @@ static int purple_bosrights(OscarData *od, FlapConnection *conn, FlapFrame *fr,
/*
* The "if" statement here is a pathetic attempt to not attempt to
* connect to the alerts servce (aka email notification) if this
- * screen name does not support it. I think mail notification
+ * username does not support it. I think mail notification
* works for @mac.com accounts but does not work for the newer
* @anythingelse.com accounts. If that's true then this change
* breaks mail notification for @mac.com accounts, but it gets rid
* of an annoying error at signon for @anythingelse.com accounts.
*/
- if ((od->authinfo->email != NULL) && ((strchr(gc->account->username, '@') == NULL)))
+ if (od->authinfo->email != NULL && strchr(username, '@') == NULL)
aim_srv_requestnew(od, SNAC_FAMILY_ALERT);
return 1;
@@ -3982,9 +3987,9 @@ static int purple_icqinfo(OscarData *od, FlapConnection *conn, FlapFrame *fr, ..
user_info = purple_notify_user_info_new();
g_snprintf(who, sizeof(who), "%u", info->uin);
- buddy = purple_find_buddy(purple_connection_get_account(gc), who);
+ buddy = purple_find_buddy(account, who);
if (buddy != NULL)
- bi = g_hash_table_lookup(od->buddyinfo, purple_normalize(buddy->account, buddy->name));
+ bi = g_hash_table_lookup(od->buddyinfo, purple_normalize(account, purple_buddy_get_name(buddy)));
else
bi = NULL;
@@ -4001,7 +4006,7 @@ static int purple_icqinfo(OscarData *od, FlapConnection *conn, FlapFrame *fr, ..
}
oscar_user_info_convert_and_add(account, user_info, _("First Name"), info->first);
oscar_user_info_convert_and_add(account, user_info, _("Last Name"), info->last);
- if (info->email && info->email[0] && (utf8 = oscar_utf8_try_convert(gc->account, info->email))) {
+ if (info->email && info->email[0] && (utf8 = oscar_utf8_try_convert(account, info->email))) {
buf = g_strdup_printf("<a href=\"mailto:%s\">%s</a>", utf8, utf8);
purple_notify_user_info_add_pair(user_info, _("Email Address"), buf);
g_free(buf);
@@ -4010,7 +4015,7 @@ static int purple_icqinfo(OscarData *od, FlapConnection *conn, FlapFrame *fr, ..
if (info->numaddresses && info->email2) {
int i;
for (i = 0; i < info->numaddresses; i++) {
- if (info->email2[i] && info->email2[i][0] && (utf8 = oscar_utf8_try_convert(gc->account, info->email2[i]))) {
+ if (info->email2[i] && info->email2[i][0] && (utf8 = oscar_utf8_try_convert(account, info->email2[i]))) {
buf = g_strdup_printf("<a href=\"mailto:%s\">%s</a>", utf8, utf8);
purple_notify_user_info_add_pair(user_info, _("Email Address"), buf);
g_free(buf);
@@ -4045,7 +4050,7 @@ static int purple_icqinfo(OscarData *od, FlapConnection *conn, FlapFrame *fr, ..
snprintf(age, sizeof(age), "%hhd", info->age);
purple_notify_user_info_add_pair(user_info, _("Age"), age);
}
- if (info->personalwebpage && info->personalwebpage[0] && (utf8 = oscar_utf8_try_convert(gc->account, info->personalwebpage))) {
+ if (info->personalwebpage && info->personalwebpage[0] && (utf8 = oscar_utf8_try_convert(account, info->personalwebpage))) {
buf = g_strdup_printf("<a href=\"%s\">%s</a>", utf8, utf8);
purple_notify_user_info_add_pair(user_info, _("Personal Web Page"), buf);
g_free(buf);
@@ -4081,7 +4086,7 @@ static int purple_icqinfo(OscarData *od, FlapConnection *conn, FlapFrame *fr, ..
oscar_user_info_convert_and_add(account, user_info, _("Division"), info->workdivision);
oscar_user_info_convert_and_add(account, user_info, _("Position"), info->workposition);
- if (info->workwebpage && info->workwebpage[0] && (utf8 = oscar_utf8_try_convert(gc->account, info->workwebpage))) {
+ if (info->workwebpage && info->workwebpage[0] && (utf8 = oscar_utf8_try_convert(account, info->workwebpage))) {
char *webpage = g_strdup_printf("<a href=\"%s\">%s</a>", utf8, utf8);
purple_notify_user_info_add_pair(user_info, _("Web Page"), webpage);
g_free(webpage);
@@ -4115,7 +4120,7 @@ static int purple_icqalias(OscarData *od, FlapConnection *conn, FlapFrame *fr, .
if (info->uin && info->nick && info->nick[0] && (utf8 = oscar_utf8_try_convert(account, info->nick))) {
g_snprintf(who, sizeof(who), "%u", info->uin);
serv_got_alias(gc, who, utf8);
- if ((b = purple_find_buddy(gc->account, who))) {
+ if ((b = purple_find_buddy(account, who))) {
purple_blist_node_set_string((PurpleBlistNode*)b, "servernick", utf8);
}
g_free(utf8);
@@ -4245,7 +4250,7 @@ static int purple_info_change(OscarData *od, FlapConnection *conn, FlapFrame *fr
PurpleConnection *gc = od->gc;
va_list ap;
guint16 perms, err;
- char *url, *sn, *email;
+ char *url, *bn, *email;
int change;
va_start(ap, fr);
@@ -4253,15 +4258,15 @@ static int purple_info_change(OscarData *od, FlapConnection *conn, FlapFrame *fr
perms = (guint16) va_arg(ap, unsigned int);
err = (guint16) va_arg(ap, unsigned int);
url = va_arg(ap, char *);
- sn = va_arg(ap, char *);
+ bn = va_arg(ap, char *);
email = va_arg(ap, char *);
va_end(ap);
purple_debug_misc("oscar",
- "account info: because of %s, perms=0x%04x, err=0x%04x, url=%s, sn=%s, email=%s\n",
+ "account info: because of %s, perms=0x%04x, err=0x%04x, url=%s, bn=%s, email=%s\n",
change ? "change" : "request", perms, err,
(url != NULL) ? url : "(null)",
- (sn != NULL) ? sn : "(null)",
+ (bn != NULL) ? bn : "(null)",
(email != NULL) ? email : "(null)");
if ((err > 0) && (url != NULL)) {
@@ -4303,7 +4308,7 @@ oscar_keepalive(PurpleConnection *gc)
OscarData *od;
FlapConnection *conn;
- od = (OscarData *)gc->proto_data;
+ od = purple_connection_get_protocol_data(gc);
conn = flap_connection_getbytype(od, SNAC_FAMILY_LOCATE);
if (conn != NULL)
flap_connection_send_keepalive(od, conn);
@@ -4315,7 +4320,7 @@ oscar_send_typing(PurpleConnection *gc, const char *name, PurpleTypingState stat
OscarData *od;
PeerConnection *conn;
- od = (OscarData *)gc->proto_data;
+ od = purple_connection_get_protocol_data(gc);
conn = peer_connection_find_by_type(od, name, OSCAR_CAPABILITY_DIRECTIM);
if ((conn != NULL) && (conn->ready))
@@ -4325,7 +4330,7 @@ oscar_send_typing(PurpleConnection *gc, const char *name, PurpleTypingState stat
else {
/* Don't send if this turkey is in our deny list */
GSList *list;
- for (list=gc->account->deny; (list && aim_sncmp(name, list->data)); list=list->next);
+ for (list=gc->account->deny; (list && oscar_util_name_compare(name, list->data)); list=list->next);
if (!list) {
struct buddyinfo *bi = g_hash_table_lookup(od->buddyinfo, purple_normalize(gc->account, name));
if (bi && bi->typingnot) {
@@ -4411,7 +4416,7 @@ purple_odc_send_im(PeerConnection *conn, const char *message, PurpleMessageFlags
/* Convert the message to a good encoding */
purple_plugin_oscar_convert_to_best_encoding(conn->od->gc,
- conn->sn, msg->str, &tmp, &tmplen, &charset, &charsubset);
+ conn->bn, msg->str, &tmp, &tmplen, &charset, &charsubset);
g_string_free(msg, TRUE);
msg = g_string_new_len(tmp, tmplen);
g_free(tmp);
@@ -4437,11 +4442,11 @@ oscar_send_im(PurpleConnection *gc, const char *name, const char *message, Purpl
char *tmp1, *tmp2;
gboolean is_sms, is_html;
- od = (OscarData *)gc->proto_data;
+ od = purple_connection_get_protocol_data(gc);
account = purple_connection_get_account(gc);
ret = 0;
- is_sms = aim_snvalid_sms(name);
+ is_sms = oscar_util_valid_name_sms(name);
if (od->icq && is_sms) {
/*
@@ -4480,7 +4485,7 @@ oscar_send_im(PurpleConnection *gc, const char *name, const char *message, Purpl
"You must be Direct Connected to send IM Images."),
PURPLE_MESSAGE_ERROR, time(NULL));
- buddy = purple_find_buddy(gc->account, name);
+ buddy = purple_find_buddy(account, name);
bi = g_hash_table_lookup(od->buddyinfo, purple_normalize(account, name));
if (!bi) {
@@ -4555,17 +4560,17 @@ oscar_send_im(PurpleConnection *gc, const char *name, const char *message, Purpl
purple_imgstore_unref(img);
}
- args.destsn = name;
+ args.destbn = name;
/*
* If we're IMing an SMS user or an ICQ user from an ICQ account, then strip HTML.
*/
- if (aim_snvalid_sms(name)) {
+ if (oscar_util_valid_name_sms(name)) {
/* Messaging an SMS (mobile) user */
tmp2 = purple_markup_strip_html(tmp1);
is_html = FALSE;
- } else if (aim_snvalid_icq(purple_account_get_username(account))) {
- if (aim_snvalid_icq(name)) {
+ } else if (oscar_util_valid_name_icq(purple_account_get_username(account))) {
+ if (oscar_util_valid_name_icq(name)) {
/* From ICQ to ICQ */
tmp2 = purple_markup_strip_html(tmp1);
is_html = FALSE;
@@ -4625,9 +4630,9 @@ oscar_send_im(PurpleConnection *gc, const char *name, const char *message, Purpl
* AIM users can only request AIM info.
*/
void oscar_get_info(PurpleConnection *gc, const char *name) {
- OscarData *od = (OscarData *)gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(gc);
- if (od->icq && aim_snvalid_icq(name))
+ if (od->icq && oscar_util_valid_name_icq(name))
aim_icq_getallinfo(od, name);
else
aim_locate_getinfoshort(od, name, 0x00000003);
@@ -4637,14 +4642,14 @@ void oscar_get_info(PurpleConnection *gc, const char *name) {
static void oscar_set_dir(PurpleConnection *gc, const char *first, const char *middle, const char *last,
const char *maiden, const char *city, const char *state, const char *country, int web) {
/* XXX - some of these things are wrong, but i'm lazy */
- OscarData *od = (OscarData *)gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(gc);
aim_locate_setdirinfo(od, first, middle, last,
maiden, NULL, NULL, city, state, NULL, 0, web);
}
#endif
void oscar_set_idle(PurpleConnection *gc, int time) {
- OscarData *od = (OscarData *)gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(gc);
aim_srv_setidle(od, time);
}
@@ -4690,7 +4695,7 @@ oscar_set_extendedstatus(PurpleConnection *gc)
const gchar *status_id;
guint32 data = 0x00000000;
- od = gc->proto_data;
+ od = purple_connection_get_protocol_data(gc);
account = purple_connection_get_account(gc);
status = purple_account_get_active_status(account);
status_id = purple_status_get_id(status);
@@ -4724,20 +4729,21 @@ oscar_set_info_and_status(PurpleAccount *account, gboolean setinfo, const char *
gboolean setstatus, PurpleStatus *status)
{
PurpleConnection *gc = purple_account_get_connection(account);
- OscarData *od = gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(gc);
PurpleStatusType *status_type;
PurpleStatusPrimitive primitive;
- char *htmlinfo;
char *info_encoding = NULL;
char *info = NULL;
gsize infolen = 0;
- const char *htmlaway;
char *away_encoding = NULL;
char *away = NULL;
gsize awaylen = 0;
+ char *status_text = NULL;
+ const char *itmsurl = NULL;
+
status_type = purple_status_get_type(status);
primitive = purple_status_type_get_primitive(status_type);
@@ -4755,7 +4761,7 @@ oscar_set_info_and_status(PurpleAccount *account, gboolean setinfo, const char *
}
else if (rawinfo != NULL)
{
- htmlinfo = purple_strdup_withhtml(rawinfo);
+ char *htmlinfo = purple_strdup_withhtml(rawinfo);
info = purple_prpl_oscar_convert_to_infotext(htmlinfo, &infolen, &info_encoding);
g_free(htmlinfo);
@@ -4772,102 +4778,87 @@ oscar_set_info_and_status(PurpleAccount *account, gboolean setinfo, const char *
}
}
- if (!setstatus)
- {
- /* Do nothing! */
- }
- else if (primitive == PURPLE_STATUS_AVAILABLE || primitive == PURPLE_STATUS_INVISIBLE)
+ if (setstatus)
{
- const char *status_html, *itmsurl;
- char *status_text = NULL;
+ const char *status_html;
status_html = purple_status_get_attr_string(status, "message");
- if (status_html != NULL)
+
+ if (status_html == NULL || primitive == PURPLE_STATUS_AVAILABLE || primitive == PURPLE_STATUS_INVISIBLE)
{
- status_text = purple_markup_strip_html(status_html);
- /* If the status_text is longer than 251 characters then truncate it */
- if (strlen(status_text) > MAXAVAILMSGLEN)
+ /* This is needed for us to un-set any previous away message. */
+ away = g_strdup("");
+ }
+ else
+ {
+ gchar *linkified;
+
+ /* We do this for icq too so that they work for old third party clients */
+ linkified = purple_markup_linkify(status_html);
+ away = purple_prpl_oscar_convert_to_infotext(linkified, &awaylen, &away_encoding);
+ g_free(linkified);
+
+ if (awaylen > od->rights.maxawaymsglen)
{
- char *tmp = g_utf8_find_prev_char(status_text, &status_text[MAXAVAILMSGLEN - 2]);
- strcpy(tmp, "...");
+ gchar *errstr;
+
+ errstr = g_strdup_printf(dngettext(PACKAGE, "The maximum away message length of %d byte "
+ "has been exceeded. It has been truncated for you.",
+ "The maximum away message length of %d bytes "
+ "has been exceeded. It has been truncated for you.",
+ od->rights.maxawaymsglen), od->rights.maxawaymsglen);
+ purple_notify_warning(gc, NULL, _("Away message too long."), errstr);
+ g_free(errstr);
}
}
- itmsurl = purple_status_get_attr_string(status, "itmsurl");
+ }
- aim_srv_setextrainfo(od, FALSE, 0, TRUE, status_text, itmsurl);
- g_free(status_text);
+ aim_locate_setprofile(od,
+ info_encoding, info, MIN(infolen, od->rights.maxsiglen),
+ away_encoding, away, MIN(awaylen, od->rights.maxawaymsglen));
+ g_free(info);
+ g_free(away);
- /* This is needed for us to un-set any previous away message. */
- away = g_strdup("");
- }
- else
+ if (setstatus)
{
- char *status_text = NULL;
-
- htmlaway = purple_status_get_attr_string(status, "message");
- if ((htmlaway == NULL) || (*htmlaway == '\0'))
- htmlaway = purple_status_type_get_name(status_type);
-
- /* ICQ 6.x seems to use an available message for all statuses so set one */
- if (od->icq)
+ const char *status_html;
+
+ status_html = purple_status_get_attr_string(status, "message");
+ if (od->icq && (status_html == NULL || status_html[0] == '\0'))
+ status_html = purple_status_type_get_name(status_type);
+ if (status_html != NULL)
{
- status_text = purple_markup_strip_html(htmlaway);
+ status_text = purple_markup_strip_html(status_html);
/* If the status_text is longer than 251 characters then truncate it */
if (strlen(status_text) > MAXAVAILMSGLEN)
{
char *tmp = g_utf8_find_prev_char(status_text, &status_text[MAXAVAILMSGLEN - 2]);
strcpy(tmp, "...");
}
- aim_srv_setextrainfo(od, FALSE, 0, TRUE, status_text, NULL);
}
- g_free(status_text);
-
- /* Set a proper away message for icq too so that they work for old third party clients */
-
- away = purple_prpl_oscar_convert_to_infotext(htmlaway, &awaylen, &away_encoding);
- if (awaylen > od->rights.maxawaymsglen)
- {
- gchar *errstr;
-
- errstr = g_strdup_printf(dngettext(PACKAGE, "The maximum away message length of %d byte "
- "has been exceeded. It has been truncated for you.",
- "The maximum away message length of %d bytes "
- "has been exceeded. It has been truncated for you.",
- od->rights.maxawaymsglen), od->rights.maxawaymsglen);
- purple_notify_warning(gc, NULL, _("Away message too long."), errstr);
- g_free(errstr);
- }
- }
+ itmsurl = purple_status_get_attr_string(status, "itmsurl");
- if (setstatus)
+ /* TODO: Combine these two calls! */
+ aim_srv_setextrainfo(od, FALSE, 0, TRUE, status_text, itmsurl);
oscar_set_extendedstatus(gc);
-
- aim_locate_setprofile(od, info_encoding, info, MIN(infolen, od->rights.maxsiglen),
- away_encoding, away, MIN(awaylen, od->rights.maxawaymsglen));
- g_free(info);
- g_free(away);
+ g_free(status_text);
+ }
}
static void
-oscar_set_status_icq(PurpleAccount *account, PurpleStatus *status)
+oscar_set_status_icq(PurpleAccount *account)
{
PurpleConnection *gc = purple_account_get_connection(account);
- OscarData *od = NULL;
- if (gc)
- od = (OscarData *)gc->proto_data;
- if (!od)
- return;
-
- if (purple_status_type_get_primitive(purple_status_get_type(status)) == PURPLE_STATUS_INVISIBLE)
- account->perm_deny = PURPLE_PRIVACY_ALLOW_USERS;
- else
- account->perm_deny = PURPLE_PRIVACY_DENY_USERS;
-
- if ((od->ssi.received_data) && (aim_ssi_getpermdeny(od->ssi.local) != account->perm_deny))
- aim_ssi_setpermdeny(od, account->perm_deny, 0xffffffff);
+ /* Our permit/deny setting affects our invisibility */
+ oscar_set_permit_deny(gc);
+ /*
+ * TODO: I guess we should probably wait and do this after we get
+ * confirmation from the above SSI call? Right now other people
+ * see our status blip to "invisible" before we appear offline.
+ */
oscar_set_extendedstatus(gc);
}
@@ -4886,14 +4877,14 @@ oscar_set_status(PurpleAccount *account, PurpleStatus *status)
oscar_set_info_and_status(account, FALSE, NULL, TRUE, status);
/* Set the ICQ status for ICQ accounts only */
- if (aim_snvalid_icq(purple_account_get_username(account)))
- oscar_set_status_icq(account, status);
+ if (oscar_util_valid_name_icq(purple_account_get_username(account)))
+ oscar_set_status_icq(account);
}
#ifdef CRAZY_WARN
void
oscar_warn(PurpleConnection *gc, const char *name, gboolean anonymous) {
- OscarData *od = (OscarData *)gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(gc);
aim_im_warn(od, od->conn, name, anonymous ? AIM_WARN_ANON : 0);
}
#endif
@@ -4902,14 +4893,17 @@ void
oscar_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) {
OscarData *od;
PurpleAccount *account;
+ const char *bname, *gname;
- od = (OscarData *)gc->proto_data;
+ od = purple_connection_get_protocol_data(gc);
account = purple_connection_get_account(gc);
+ bname = purple_buddy_get_name(buddy);
+ gname = purple_group_get_name(group);
- if (!aim_snvalid(buddy->name)) {
+ if (!oscar_util_valid_name(bname)) {
gchar *buf;
- buf = g_strdup_printf(_("Could not add the buddy %s because the username is invalid. Usernames must be a valid email address, or start with a letter and contain only letters, numbers and spaces, or contain only numbers."), buddy->name);
- if (!purple_conv_present_error(buddy->name, account, buf))
+ buf = g_strdup_printf(_("Could not add the buddy %s because the username is invalid. Usernames must be a valid email address, or start with a letter and contain only letters, numbers and spaces, or contain only numbers."), bname);
+ if (!purple_conv_present_error(bname, account, buf))
purple_notify_error(gc, NULL, _("Unable to Add"), buf);
g_free(buf);
@@ -4919,39 +4913,47 @@ oscar_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) {
return;
}
- if ((od->ssi.received_data) && !(aim_ssi_itemlist_finditem(od->ssi.local, group->name, buddy->name, AIM_SSI_TYPE_BUDDY))) {
- purple_debug_info("oscar",
- "ssi: adding buddy %s to group %s\n", buddy->name, group->name);
- aim_ssi_addbuddy(od, buddy->name, group->name, NULL, purple_buddy_get_alias_only(buddy), NULL, NULL, 0);
+ if (od->ssi.received_data) {
+ if (!aim_ssi_itemlist_finditem(od->ssi.local, gname, bname, AIM_SSI_TYPE_BUDDY)) {
+ purple_debug_info("oscar",
+ "ssi: adding buddy %s to group %s\n", bname, gname);
+ aim_ssi_addbuddy(od, bname, gname, NULL, purple_buddy_get_alias_only(buddy), NULL, NULL, 0);
- /* Mobile users should always be online */
- if (buddy->name[0] == '+') {
- purple_prpl_got_user_status(account,
- purple_buddy_get_name(buddy),
- OSCAR_STATUS_ID_AVAILABLE, NULL);
- purple_prpl_got_user_status(account,
- purple_buddy_get_name(buddy),
- OSCAR_STATUS_ID_MOBILE, NULL);
+ /* Mobile users should always be online */
+ if (bname[0] == '+') {
+ purple_prpl_got_user_status(account, bname,
+ OSCAR_STATUS_ID_AVAILABLE, NULL);
+ purple_prpl_got_user_status(account, bname,
+ OSCAR_STATUS_ID_MOBILE, NULL);
+ }
+ } else if (aim_ssi_waitingforauth(od->ssi.local,
+ aim_ssi_itemlist_findparentname(od->ssi.local, bname),
+ bname)) {
+ /* Not authorized -- Re-request authorization */
+ purple_auth_sendrequest(gc, bname);
}
}
/* XXX - Should this be done from AIM accounts, as well? */
if (od->icq)
- aim_icq_getalias(od, buddy->name);
+ aim_icq_getalias(od, bname);
}
void oscar_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) {
- OscarData *od = (OscarData *)gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(gc);
if (od->ssi.received_data) {
+ const char *gname = purple_group_get_name(group);
+ const char *bname = purple_buddy_get_name(buddy);
purple_debug_info("oscar",
- "ssi: deleting buddy %s from group %s\n", buddy->name, group->name);
- aim_ssi_delbuddy(od, buddy->name, group->name);
+ "ssi: deleting buddy %s from group %s\n", bname, gname);
+ aim_ssi_delbuddy(od, bname, gname);
}
}
void oscar_move_buddy(PurpleConnection *gc, const char *name, const char *old_group, const char *new_group) {
- OscarData *od = (OscarData *)gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(gc);
+
if (od->ssi.received_data && strcmp(old_group, new_group)) {
purple_debug_info("oscar",
"ssi: moving buddy %s from group %s to group %s\n", name, old_group, new_group);
@@ -4960,7 +4962,8 @@ void oscar_move_buddy(PurpleConnection *gc, const char *name, const char *old_gr
}
void oscar_alias_buddy(PurpleConnection *gc, const char *name, const char *alias) {
- OscarData *od = (OscarData *)gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(gc);
+
if (od->ssi.received_data) {
char *gname = aim_ssi_itemlist_findparentname(od->ssi.local, name);
if (gname) {
@@ -4975,10 +4978,11 @@ void oscar_alias_buddy(PurpleConnection *gc, const char *name, const char *alias
* FYI, the OSCAR SSI code removes empty groups automatically.
*/
void oscar_rename_group(PurpleConnection *gc, const char *old_name, PurpleGroup *group, GList *moved_buddies) {
- OscarData *od = (OscarData *)gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(gc);
if (od->ssi.received_data) {
- if (aim_ssi_itemlist_finditem(od->ssi.local, group->name, NULL, AIM_SSI_TYPE_GROUP)) {
+ const char *gname = purple_group_get_name(group);
+ if (aim_ssi_itemlist_finditem(od->ssi.local, gname, NULL, AIM_SSI_TYPE_GROUP)) {
GList *cur, *groups = NULL;
PurpleAccount *account = purple_connection_get_account(gc);
@@ -4988,25 +4992,25 @@ void oscar_rename_group(PurpleConnection *gc, const char *old_name, PurpleGroup
/* node is PurpleBuddy, parent is a PurpleContact.
* We must go two levels up to get the Group */
groups = g_list_append(groups,
- node->parent->parent);
+ purple_buddy_get_group((PurpleBuddy*)node));
}
purple_account_remove_buddies(account, moved_buddies, groups);
purple_account_add_buddies(account, moved_buddies);
g_list_free(groups);
purple_debug_info("oscar",
- "ssi: moved all buddies from group %s to %s\n", old_name, group->name);
+ "ssi: moved all buddies from group %s to %s\n", old_name, gname);
} else {
- aim_ssi_rename_group(od, old_name, group->name);
+ aim_ssi_rename_group(od, old_name, gname);
purple_debug_info("oscar",
- "ssi: renamed group %s to %s\n", old_name, group->name);
+ "ssi: renamed group %s to %s\n", old_name, gname);
}
}
}
void oscar_remove_group(PurpleConnection *gc, PurpleGroup *group)
{
- aim_ssi_delgroup(gc->proto_data, group->name);
+ aim_ssi_delgroup(purple_connection_get_protocol_data(gc), purple_group_get_name(group));
}
static gboolean purple_ssi_rerequestdata(gpointer data) {
@@ -5038,11 +5042,11 @@ static int purple_ssi_parseerr(OscarData *od, FlapConnection *conn, FlapFrame *f
_("The AIM servers were temporarily unable to send "
"your buddy list. Your buddy list is not lost, and "
"will probably become available in a few minutes."));
- od->getblisttimer = purple_timeout_add(30000, purple_ssi_rerequestdata, od);
+ od->getblisttimer = purple_timeout_add_seconds(30, purple_ssi_rerequestdata, od);
return 1;
}
- oscar_set_extendedstatus(gc);
+ oscar_set_status_icq(purple_connection_get_account(gc));
return 1;
}
@@ -5092,7 +5096,7 @@ static int purple_ssi_parselist(OscarData *od, FlapConnection *conn, FlapFrame *
guint32 timestamp;
gc = od->gc;
- od = gc->proto_data;
+ od = purple_connection_get_protocol_data(gc);
account = purple_connection_get_account(gc);
va_start(ap, fr);
@@ -5113,47 +5117,43 @@ static int purple_ssi_parselist(OscarData *od, FlapConnection *conn, FlapFrame *
aim_ssi_cleanlist(od);
{ /* If not in server list then prune from local list */
- PurpleBlistNode *gnode, *cnode, *bnode;
- PurpleBuddyList *blist;
GSList *cur, *next;
-
+ GSList *buddies = purple_find_buddies(account, NULL);
+
/* Buddies */
cur = NULL;
- if ((blist = purple_get_blist()) != NULL) {
- for (gnode = blist->root; gnode; gnode = gnode->next) {
- if(!PURPLE_BLIST_NODE_IS_GROUP(gnode))
- continue;
- g = (PurpleGroup *)gnode;
- for (cnode = gnode->child; cnode; cnode = cnode->next) {
- if(!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
- continue;
- for (bnode = cnode->child; bnode; bnode = bnode->next) {
- if(!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
- continue;
- b = (PurpleBuddy *)bnode;
- if (b->account == gc->account) {
- if (aim_ssi_itemlist_exists(od->ssi.local, b->name)) {
- /* If the buddy is an ICQ user then load his nickname */
- const char *servernick = purple_blist_node_get_string((PurpleBlistNode*)b, "servernick");
- char *alias;
- if (servernick)
- serv_got_alias(gc, b->name, servernick);
-
- /* Store local alias on server */
- alias = aim_ssi_getalias(od->ssi.local, g->name, b->name);
- if (!alias && b->alias && strlen(b->alias))
- aim_ssi_aliasbuddy(od, g->name, b->name, b->alias);
- g_free(alias);
- } else {
- purple_debug_info("oscar",
- "ssi: removing buddy %s from local list\n", b->name);
- /* We can't actually remove now because it will screw up our looping */
- cur = g_slist_prepend(cur, b);
- }
- }
- }
- }
+
+ while(buddies) {
+ PurpleGroup *g;
+ const char *gname;
+ const char *bname;
+
+ b = buddies->data;
+ g = purple_buddy_get_group(b);
+ gname = purple_group_get_name(g);
+ bname = purple_buddy_get_name(b);
+
+ if (aim_ssi_itemlist_exists(od->ssi.local, bname)) {
+ /* If the buddy is an ICQ user then load his nickname */
+ const char *servernick = purple_blist_node_get_string((PurpleBlistNode*)b, "servernick");
+ char *alias;
+ const char *balias;
+ if (servernick)
+ serv_got_alias(gc, bname, servernick);
+
+ /* Store local alias on server */
+ alias = aim_ssi_getalias(od->ssi.local, gname, bname);
+ balias = purple_buddy_get_local_buddy_alias(b);
+ if (!alias && balias && *balias)
+ aim_ssi_aliasbuddy(od, gname, bname, balias);
+ g_free(alias);
+ } else {
+ purple_debug_info("oscar",
+ "ssi: removing buddy %s from local list\n", bname);
+ /* We can't actually remove now because it will screw up our looping */
+ cur = g_slist_prepend(cur, b);
}
+ buddies = g_slist_delete_link(buddies, buddies);
}
while (cur != NULL) {
@@ -5163,8 +5163,8 @@ static int purple_ssi_parselist(OscarData *od, FlapConnection *conn, FlapFrame *
}
/* Permit list */
- if (gc->account->permit) {
- next = gc->account->permit;
+ if (account->permit) {
+ next = account->permit;
while (next != NULL) {
cur = next;
next = next->next;
@@ -5177,8 +5177,8 @@ static int purple_ssi_parselist(OscarData *od, FlapConnection *conn, FlapFrame *
}
/* Deny list */
- if (gc->account->deny) {
- next = gc->account->deny;
+ if (account->deny) {
+ next = account->deny;
while (next != NULL) {
cur = next;
next = next->next;
@@ -5222,7 +5222,7 @@ static int purple_ssi_parselist(OscarData *od, FlapConnection *conn, FlapFrame *
if (g_utf8_validate(gname, -1, NULL))
gname_utf8 = g_strdup(gname);
else
- gname_utf8 = oscar_utf8_try_convert(gc->account, gname);
+ gname_utf8 = oscar_utf8_try_convert(account, gname);
} else
gname_utf8 = NULL;
@@ -5242,18 +5242,18 @@ static int purple_ssi_parselist(OscarData *od, FlapConnection *conn, FlapFrame *
} else
alias_utf8 = NULL;
- b = purple_find_buddy_in_group(gc->account, curitem->name, g);
+ b = purple_find_buddy_in_group(account, curitem->name, g);
if (b) {
/* Get server stored alias */
purple_blist_alias_buddy(b, alias_utf8);
} else {
- b = purple_buddy_new(gc->account, curitem->name, alias_utf8);
+ b = purple_buddy_new(account, curitem->name, alias_utf8);
purple_debug_info("oscar",
- "ssi: adding buddy %s to group %s to local list\n", curitem->name, g->name);
+ "ssi: adding buddy %s to group %s to local list\n", curitem->name, gname);
purple_blist_add_buddy(b, NULL, g, NULL);
}
- if (!aim_sncmp(curitem->name, account->username)) {
+ if (!oscar_util_name_compare(curitem->name, purple_account_get_username(account))) {
char *comment = aim_ssi_getcomment(od->ssi.local, gname, curitem->name);
if (comment != NULL)
{
@@ -5263,7 +5263,7 @@ static int purple_ssi_parselist(OscarData *od, FlapConnection *conn, FlapFrame *
}
/* Mobile users should always be online */
- if (b->name[0] == '+') {
+ if (curitem->name[0] == '+') {
purple_prpl_got_user_status(account,
purple_buddy_get_name(b),
OSCAR_STATUS_ID_AVAILABLE, NULL);
@@ -5286,7 +5286,7 @@ static int purple_ssi_parselist(OscarData *od, FlapConnection *conn, FlapFrame *
if (g_utf8_validate(gname, -1, NULL))
gname_utf8 = g_strdup(gname);
else
- gname_utf8 = oscar_utf8_try_convert(gc->account, gname);
+ gname_utf8 = oscar_utf8_try_convert(account, gname);
} else
gname_utf8 = NULL;
@@ -5301,7 +5301,7 @@ static int purple_ssi_parselist(OscarData *od, FlapConnection *conn, FlapFrame *
if (curitem->name) {
/* if (!find_permdeny_by_name(gc->permit, curitem->name)) { AAA */
GSList *list;
- for (list=account->permit; (list && aim_sncmp(curitem->name, list->data)); list=list->next);
+ for (list=account->permit; (list && oscar_util_name_compare(curitem->name, list->data)); list=list->next);
if (!list) {
purple_debug_info("oscar",
"ssi: adding permit buddy %s to local list\n", curitem->name);
@@ -5313,7 +5313,7 @@ static int purple_ssi_parselist(OscarData *od, FlapConnection *conn, FlapFrame *
case 0x0003: { /* Deny buddy */
if (curitem->name) {
GSList *list;
- for (list=account->deny; (list && aim_sncmp(curitem->name, list->data)); list=list->next);
+ for (list=account->deny; (list && oscar_util_name_compare(curitem->name, list->data)); list=list->next);
if (!list) {
purple_debug_info("oscar",
"ssi: adding deny buddy %s to local list\n", curitem->name);
@@ -5323,15 +5323,19 @@ static int purple_ssi_parselist(OscarData *od, FlapConnection *conn, FlapFrame *
} break;
case 0x0004: { /* Permit/deny setting */
- if (curitem->data) {
- guint8 permdeny;
- if ((permdeny = aim_ssi_getpermdeny(od->ssi.local)) && (permdeny != account->perm_deny)) {
+ /*
+ * We don't inherit the permit/deny setting from the server
+ * for ICQ because, for ICQ, this setting controls who can
+ * see your online status when you are invisible. Thus it is
+ * a part of your status and not really related to blocking.
+ */
+ if (!od->icq && curitem->data) {
+ guint8 perm_deny = aim_ssi_getpermdeny(od->ssi.local);
+ if (perm_deny != 0 && perm_deny != account->perm_deny)
+ {
purple_debug_info("oscar",
- "ssi: changing permdeny from %d to %hhu\n", account->perm_deny, permdeny);
- account->perm_deny = permdeny;
- if (od->icq && account->perm_deny == PURPLE_PRIVACY_ALLOW_USERS) {
- purple_presence_set_status_active(account->presence, OSCAR_STATUS_ID_INVISIBLE, TRUE);
- }
+ "ssi: changing permdeny from %d to %hhu\n", account->perm_deny, perm_deny);
+ account->perm_deny = perm_deny;
}
}
} break;
@@ -5342,7 +5346,7 @@ static int purple_ssi_parselist(OscarData *od, FlapConnection *conn, FlapFrame *
} /* End of switch on curitem->type */
} /* End of for loop */
- oscar_set_extendedstatus(gc);
+ oscar_set_status_icq(account);
/* Activate SSI */
/* Sending the enable causes other people to be able to see you, and you to see them */
@@ -5476,13 +5480,11 @@ purple_ssi_parseaddmod(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...)
purple_blist_add_buddy(b, NULL, g, NULL);
/* Mobile users should always be online */
- if (b->name[0] == '+') {
+ if (name[0] == '+') {
purple_prpl_got_user_status(account,
- purple_buddy_get_name(b),
- OSCAR_STATUS_ID_AVAILABLE, NULL);
+ name, OSCAR_STATUS_ID_AVAILABLE, NULL);
purple_prpl_got_user_status(account,
- purple_buddy_get_name(b),
- OSCAR_STATUS_ID_MOBILE, NULL);
+ name, OSCAR_STATUS_ID_MOBILE, NULL);
}
}
@@ -5505,36 +5507,36 @@ purple_ssi_parseaddmod(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...)
static int purple_ssi_authgiven(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
PurpleConnection *gc = od->gc;
va_list ap;
- char *sn, *msg;
+ char *bn, *msg;
gchar *dialog_msg, *nombre;
struct name_data *data;
PurpleBuddy *buddy;
va_start(ap, fr);
- sn = va_arg(ap, char *);
+ bn = va_arg(ap, char *);
msg = va_arg(ap, char *);
va_end(ap);
purple_debug_info("oscar",
- "ssi: %s has given you permission to add him to your buddy list\n", sn);
+ "ssi: %s has given you permission to add him to your buddy list\n", bn);
- buddy = purple_find_buddy(gc->account, sn);
+ buddy = purple_find_buddy(purple_connection_get_account(gc), bn);
if (buddy && (purple_buddy_get_alias_only(buddy)))
- nombre = g_strdup_printf("%s (%s)", sn, purple_buddy_get_alias_only(buddy));
+ nombre = g_strdup_printf("%s (%s)", bn, purple_buddy_get_alias_only(buddy));
else
- nombre = g_strdup(sn);
+ nombre = g_strdup(bn);
dialog_msg = g_strdup_printf(_("The user %s has given you permission to add him or her to your buddy list. Do you want to add this user?"), nombre);
g_free(nombre);
data = g_new(struct name_data, 1);
data->gc = gc;
- data->name = g_strdup(sn);
+ data->name = g_strdup(bn);
data->nick = (buddy ? g_strdup(purple_buddy_get_alias_only(buddy)) : NULL);
purple_request_yes_no(gc, NULL, _("Authorization Given"), dialog_msg,
PURPLE_DEFAULT_ACTION_NONE,
- purple_connection_get_account(gc), sn, NULL,
+ purple_connection_get_account(gc), bn, NULL,
data,
G_CALLBACK(purple_icq_buddyadd),
G_CALLBACK(oscar_free_name_data));
@@ -5546,7 +5548,7 @@ static int purple_ssi_authgiven(OscarData *od, FlapConnection *conn, FlapFrame *
static int purple_ssi_authrequest(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
PurpleConnection *gc = od->gc;
va_list ap;
- char *sn;
+ char *bn;
char *msg;
PurpleAccount *account = purple_connection_get_account(gc);
gchar *reason = NULL;
@@ -5554,24 +5556,24 @@ static int purple_ssi_authrequest(OscarData *od, FlapConnection *conn, FlapFrame
PurpleBuddy *buddy;
va_start(ap, fr);
- sn = va_arg(ap, char *);
+ bn = va_arg(ap, char *);
msg = va_arg(ap, char *);
va_end(ap);
purple_debug_info("oscar",
- "ssi: received authorization request from %s\n", sn);
+ "ssi: received authorization request from %s\n", bn);
- buddy = purple_find_buddy(account, sn);
+ buddy = purple_find_buddy(account, bn);
if (msg != NULL)
- reason = purple_plugin_oscar_decode_im_part(account, sn, AIM_CHARSET_CUSTOM, 0x0000, msg, strlen(msg));
+ reason = purple_plugin_oscar_decode_im_part(account, bn, AIM_CHARSET_CUSTOM, 0x0000, msg, strlen(msg));
data = g_new(struct name_data, 1);
data->gc = gc;
- data->name = g_strdup(sn);
+ data->name = g_strdup(bn);
data->nick = (buddy ? g_strdup(purple_buddy_get_alias_only(buddy)) : NULL);
- purple_account_request_authorization(account, sn, NULL,
+ purple_account_request_authorization(account, bn, NULL,
(buddy ? purple_buddy_get_alias_only(buddy) : NULL),
reason, buddy != NULL, purple_auth_grant,
purple_auth_dontgrant_msgprompt, data);
@@ -5583,25 +5585,25 @@ static int purple_ssi_authrequest(OscarData *od, FlapConnection *conn, FlapFrame
static int purple_ssi_authreply(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
PurpleConnection *gc = od->gc;
va_list ap;
- char *sn, *msg;
+ char *bn, *msg;
gchar *dialog_msg, *nombre;
guint8 reply;
PurpleBuddy *buddy;
va_start(ap, fr);
- sn = va_arg(ap, char *);
+ bn = va_arg(ap, char *);
reply = (guint8)va_arg(ap, int);
msg = va_arg(ap, char *);
va_end(ap);
purple_debug_info("oscar",
- "ssi: received authorization reply from %s. Reply is 0x%04hhx\n", sn, reply);
+ "ssi: received authorization reply from %s. Reply is 0x%04hhx\n", bn, reply);
- buddy = purple_find_buddy(gc->account, sn);
+ buddy = purple_find_buddy(purple_connection_get_account(gc), bn);
if (buddy && (purple_buddy_get_alias_only(buddy)))
- nombre = g_strdup_printf("%s (%s)", sn, purple_buddy_get_alias_only(buddy));
+ nombre = g_strdup_printf("%s (%s)", bn, purple_buddy_get_alias_only(buddy));
else
- nombre = g_strdup(sn);
+ nombre = g_strdup(bn);
if (reply) {
/* Granted */
@@ -5620,17 +5622,19 @@ static int purple_ssi_authreply(OscarData *od, FlapConnection *conn, FlapFrame *
static int purple_ssi_gotadded(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
PurpleConnection *gc = od->gc;
+ PurpleAccount *account = purple_connection_get_account(gc);
va_list ap;
- char *sn;
+ char *bn;
PurpleBuddy *buddy;
va_start(ap, fr);
- sn = va_arg(ap, char *);
+ bn = va_arg(ap, char *);
va_end(ap);
- buddy = purple_find_buddy(gc->account, sn);
- purple_debug_info("oscar", "ssi: %s added you to their buddy list\n", sn);
- purple_account_notify_added(gc->account, sn, NULL, (buddy ? purple_buddy_get_alias_only(buddy) : NULL), NULL);
+ buddy = purple_find_buddy(account, bn);
+ purple_debug_info("oscar", "ssi: %s added you to their buddy list\n", bn);
+ purple_account_notify_added(account, bn, NULL,
+ (buddy ? purple_buddy_get_alias_only(buddy) : NULL), NULL);
return 1;
}
@@ -5679,7 +5683,7 @@ oscar_get_chat_name(GHashTable *data)
void
oscar_join_chat(PurpleConnection *gc, GHashTable *data)
{
- OscarData *od = (OscarData *)gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(gc);
FlapConnection *conn;
char *name, *exchange;
int exchange_int;
@@ -5714,7 +5718,7 @@ oscar_join_chat(PurpleConnection *gc, GHashTable *data)
void
oscar_chat_invite(PurpleConnection *gc, int id, const char *message, const char *name)
{
- OscarData *od = (OscarData *)gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(gc);
struct chat_connection *ccon = find_oscar_chat(gc, id);
if (ccon == NULL)
@@ -5734,14 +5738,16 @@ oscar_chat_leave(PurpleConnection *gc, int id)
g_return_if_fail(conv != NULL);
- purple_debug_info("oscar", "Leaving chat room %s\n", conv->name);
+ purple_debug_info("oscar", "Leaving chat room %s\n",
+ purple_conversation_get_name(conv));
cc = find_oscar_chat(gc, purple_conv_chat_get_id(PURPLE_CONV_CHAT(conv)));
oscar_chat_kill(gc, cc);
}
-int oscar_send_chat(PurpleConnection *gc, int id, const char *message, PurpleMessageFlags flags) {
- OscarData *od = (OscarData *)gc->proto_data;
+int oscar_send_chat(PurpleConnection *gc, int id, const char *message, PurpleMessageFlags flags)
+{
+ OscarData *od = purple_connection_get_protocol_data(gc);
PurpleConversation *conv = NULL;
struct chat_connection *c = NULL;
char *buf, *buf2, *buf3;
@@ -5808,30 +5814,32 @@ int oscar_send_chat(PurpleConnection *gc, int id, const char *message, PurpleMes
const char *oscar_list_icon_icq(PurpleAccount *a, PurpleBuddy *b)
{
- if ((b == NULL) || (b->name == NULL) || aim_snvalid_sms(b->name))
+ const char *name = b ? purple_buddy_get_name(b) : NULL;
+ if ((b == NULL) || (name == NULL) || oscar_util_valid_name_sms(name))
{
- if (a == NULL || aim_snvalid_icq(purple_account_get_username(a)))
+ if (a == NULL || oscar_util_valid_name_icq(purple_account_get_username(a)))
return "icq";
else
return "aim";
}
- if (aim_snvalid_icq(b->name))
+ if (oscar_util_valid_name_icq(name))
return "icq";
return "aim";
}
const char *oscar_list_icon_aim(PurpleAccount *a, PurpleBuddy *b)
{
- if ((b == NULL) || (b->name == NULL) || aim_snvalid_sms(b->name))
+ const char *name = b ? purple_buddy_get_name(b) : NULL;
+ if ((b == NULL) || (name == NULL) || oscar_util_valid_name_sms(name))
{
- if (a != NULL && aim_snvalid_icq(purple_account_get_username(a)))
+ if (a != NULL && oscar_util_valid_name_icq(purple_account_get_username(a)))
return "icq";
else
return "aim";
}
- if (aim_snvalid_icq(b->name))
+ if (oscar_util_valid_name_icq(name))
return "icq";
return "aim";
}
@@ -5845,14 +5853,16 @@ const char *oscar_list_emblem(PurpleBuddy *b)
PurpleStatus *status;
const char *status_id;
aim_userinfo_t *userinfo = NULL;
+ const char *name;
- account = b->account;
+ account = purple_buddy_get_account(b);
+ name = purple_buddy_get_name(b);
if (account != NULL)
- gc = account->gc;
+ gc = purple_account_get_connection(account);
if (gc != NULL)
- od = gc->proto_data;
+ od = purple_connection_get_protocol_data(gc);
if (od != NULL)
- userinfo = aim_locate_finduserinfo(od, b->name);
+ userinfo = aim_locate_finduserinfo(od, name);
presence = purple_buddy_get_presence(b);
status = purple_presence_get_active_status(presence);
@@ -5860,9 +5870,9 @@ const char *oscar_list_emblem(PurpleBuddy *b)
if (purple_presence_is_online(presence) == FALSE) {
char *gname;
- if ((b->name) && (od) && (od->ssi.received_data) &&
- (gname = aim_ssi_itemlist_findparentname(od->ssi.local, b->name)) &&
- (aim_ssi_waitingforauth(od->ssi.local, gname, b->name))) {
+ if ((name) && (od) && (od->ssi.received_data) &&
+ (gname = aim_ssi_itemlist_findparentname(od->ssi.local, name)) &&
+ (aim_ssi_waitingforauth(od->ssi.local, gname, name))) {
return "not-authorized";
}
}
@@ -5885,15 +5895,17 @@ const char *oscar_list_emblem(PurpleBuddy *b)
void oscar_tooltip_text(PurpleBuddy *b, PurpleNotifyUserInfo *user_info, gboolean full)
{
PurpleConnection *gc;
+ PurpleAccount *account;
OscarData *od;
aim_userinfo_t *userinfo;
if (!PURPLE_BUDDY_IS_ONLINE(b))
return;
- gc = b->account->gc;
- od = gc->proto_data;
- userinfo = aim_locate_finduserinfo(od, b->name);
+ account = purple_buddy_get_account(b);
+ gc = purple_account_get_connection(account);
+ od = purple_connection_get_protocol_data(gc);
+ userinfo = aim_locate_finduserinfo(od, purple_buddy_get_name(b));
oscar_user_info_append_status(gc, user_info, b, userinfo, /* strip_html_tags */ TRUE);
@@ -5914,15 +5926,16 @@ char *oscar_status_text(PurpleBuddy *b)
gc = purple_account_get_connection(purple_buddy_get_account(b));
account = purple_connection_get_account(gc);
- od = gc->proto_data;
+ od = purple_connection_get_protocol_data(gc);
presence = purple_buddy_get_presence(b);
status = purple_presence_get_active_status(presence);
id = purple_status_get_id(status);
if ((od != NULL) && !purple_presence_is_online(presence))
{
- char *gname = aim_ssi_itemlist_findparentname(od->ssi.local, b->name);
- if (aim_ssi_waitingforauth(od->ssi.local, gname, b->name))
+ const char *name = purple_buddy_get_name(b);
+ char *gname = aim_ssi_itemlist_findparentname(od->ssi.local, name);
+ if (aim_ssi_waitingforauth(od->ssi.local, gname, name))
ret = g_strdup(_("Not Authorized"));
else
ret = g_strdup(_("Offline"));
@@ -6013,55 +6026,62 @@ static int oscar_icon_req(OscarData *od, FlapConnection *conn, FlapFrame *fr, ..
void oscar_set_permit_deny(PurpleConnection *gc) {
PurpleAccount *account = purple_connection_get_account(gc);
- OscarData *od = (OscarData *)gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(gc);
+ PurplePrivacyType perm_deny;
- if (od->ssi.received_data) {
- switch (account->perm_deny) {
- case PURPLE_PRIVACY_ALLOW_ALL:
- aim_ssi_setpermdeny(od, 0x01, 0xffffffff);
- break;
- case PURPLE_PRIVACY_ALLOW_BUDDYLIST:
- aim_ssi_setpermdeny(od, 0x05, 0xffffffff);
- break;
- case PURPLE_PRIVACY_ALLOW_USERS:
- aim_ssi_setpermdeny(od, 0x03, 0xffffffff);
- break;
- case PURPLE_PRIVACY_DENY_ALL:
- aim_ssi_setpermdeny(od, 0x02, 0xffffffff);
- break;
- case PURPLE_PRIVACY_DENY_USERS:
- aim_ssi_setpermdeny(od, 0x04, 0xffffffff);
- break;
- default:
- aim_ssi_setpermdeny(od, 0x01, 0xffffffff);
- break;
- }
- }
+ /*
+ * For ICQ the permit/deny setting controls who you can see you
+ * online when you set your status to "invisible." If we're ICQ
+ * and we're invisible then we need to use one of
+ * PURPLE_PRIVACY_ALLOW_USERS or PURPLE_PRIVACY_ALLOW_BUDDYLIST or
+ * PURPLE_PRIVACY_DENY_USERS if we actually want to be invisible
+ * to anyone.
+ *
+ * These three permit/deny settings correspond to:
+ * 1. Invisible to everyone except the people on my "permit" list
+ * 2. Invisible to everyone except the people on my buddy list
+ * 3. Invisible only to the people on my "deny" list
+ *
+ * It would be nice to allow cases 2 and 3, but our UI doesn't have
+ * a nice way to do it. For now we just force case 1.
+ */
+ if (od->icq && purple_account_is_status_active(account, OSCAR_STATUS_ID_INVISIBLE))
+ perm_deny = PURPLE_PRIVACY_ALLOW_USERS;
+ else
+ perm_deny = account->perm_deny;
+
+ if (od->ssi.received_data)
+ /*
+ * Conveniently there is a one-to-one mapping between the
+ * values of libpurple's PurplePrivacyType and the values used
+ * by the oscar protocol.
+ */
+ aim_ssi_setpermdeny(od, perm_deny, 0xffffffff);
}
void oscar_add_permit(PurpleConnection *gc, const char *who) {
- OscarData *od = (OscarData *)gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(gc);
purple_debug_info("oscar", "ssi: About to add a permit\n");
if (od->ssi.received_data)
aim_ssi_addpermit(od, who);
}
void oscar_add_deny(PurpleConnection *gc, const char *who) {
- OscarData *od = (OscarData *)gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(gc);
purple_debug_info("oscar", "ssi: About to add a deny\n");
if (od->ssi.received_data)
aim_ssi_adddeny(od, who);
}
void oscar_rem_permit(PurpleConnection *gc, const char *who) {
- OscarData *od = (OscarData *)gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(gc);
purple_debug_info("oscar", "ssi: About to delete a permit\n");
if (od->ssi.received_data)
aim_ssi_delpermit(od, who);
}
void oscar_rem_deny(PurpleConnection *gc, const char *who) {
- OscarData *od = (OscarData *)gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(gc);
purple_debug_info("oscar", "ssi: About to delete a deny\n");
if (od->ssi.received_data)
aim_ssi_deldeny(od, who);
@@ -6077,7 +6097,7 @@ oscar_status_types(PurpleAccount *account)
g_return_val_if_fail(account != NULL, NULL);
/* Used to flag some statuses as "user settable" or not */
- is_icq = aim_snvalid_icq(purple_account_get_username(account));
+ is_icq = oscar_util_valid_name_icq(purple_account_get_username(account));
/* Common status types */
/* Really the available message should only be settable for AIM accounts */
@@ -6143,24 +6163,33 @@ oscar_status_types(PurpleAccount *account)
}
static void oscar_ssi_editcomment(struct name_data *data, const char *text) {
- PurpleConnection *gc = data->gc;
- OscarData *od = gc->proto_data;
+ PurpleConnection *gc;
+ PurpleAccount *account;
+ OscarData *od;
PurpleBuddy *b;
PurpleGroup *g;
+ const char *username;
+
+ gc = data->gc;
+ od = purple_connection_get_protocol_data(gc);
+ account = purple_connection_get_account(gc);
- if (!(b = purple_find_buddy(purple_connection_get_account(data->gc), data->name))) {
+ b = purple_find_buddy(account, data->name);
+ if (b == NULL) {
oscar_free_name_data(data);
return;
}
- if (!(g = purple_buddy_get_group(b))) {
+ g = purple_buddy_get_group(b);
+ if (g == NULL) {
oscar_free_name_data(data);
return;
}
- aim_ssi_editcomment(od, g->name, data->name, text);
+ aim_ssi_editcomment(od, purple_group_get_name(g), data->name, text);
- if (!aim_sncmp(data->name, gc->account->username))
+ username = purple_account_get_username(account);
+ if (!oscar_util_name_compare(data->name, username))
purple_check_comment(od, text);
oscar_free_name_data(data);
@@ -6176,23 +6205,27 @@ static void oscar_buddycb_edit_comment(PurpleBlistNode *node, gpointer ignore) {
char *comment;
gchar *comment_utf8;
gchar *title;
+ PurpleAccount *account;
+ const char *name;
g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
buddy = (PurpleBuddy *) node;
- gc = purple_account_get_connection(buddy->account);
- od = gc->proto_data;
+ name = purple_buddy_get_name(buddy);
+ account = purple_buddy_get_account(buddy);
+ gc = purple_account_get_connection(account);
+ od = purple_connection_get_protocol_data(gc);
if (!(g = purple_buddy_get_group(buddy)))
return;
data = g_new(struct name_data, 1);
- comment = aim_ssi_getcomment(od->ssi.local, g->name, buddy->name);
- comment_utf8 = comment ? oscar_utf8_try_convert(gc->account, comment) : NULL;
+ comment = aim_ssi_getcomment(od->ssi.local, purple_group_get_name(g), name);
+ comment_utf8 = comment ? oscar_utf8_try_convert(account, comment) : NULL;
data->gc = gc;
- data->name = g_strdup(purple_buddy_get_name(buddy));
+ data->name = g_strdup(name);
data->nick = g_strdup(purple_buddy_get_alias_only(buddy));
title = g_strdup_printf(_("Buddy Comment for %s"), data->name);
@@ -6200,7 +6233,7 @@ static void oscar_buddycb_edit_comment(PurpleBlistNode *node, gpointer ignore) {
comment_utf8, TRUE, FALSE, NULL,
_("_OK"), G_CALLBACK(oscar_ssi_editcomment),
_("_Cancel"), G_CALLBACK(oscar_free_name_data),
- purple_connection_get_account(gc), data->name, NULL,
+ account, data->name, NULL,
data);
g_free(title);
@@ -6232,26 +6265,28 @@ oscar_ask_directim(gpointer object, gpointer ignored)
PurpleConnection *gc;
gchar *buf;
struct oscar_ask_directim_data *data;
+ PurpleAccount *account;
node = object;
g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
buddy = (PurpleBuddy *)node;
- gc = purple_account_get_connection(buddy->account);
+ account = purple_buddy_get_account(buddy);
+ gc = purple_account_get_connection(account);
data = g_new0(struct oscar_ask_directim_data, 1);
- data->who = g_strdup(buddy->name);
- data->od = gc->proto_data;
+ data->who = g_strdup(purple_buddy_get_name(buddy));
+ data->od = purple_connection_get_protocol_data(gc);
buf = g_strdup_printf(_("You have selected to open a Direct IM connection with %s."),
- buddy->name);
+ data->who);
purple_request_action(gc, NULL, buf,
_("Because this reveals your IP address, it "
"may be considered a security risk. Do you "
"wish to continue?"),
0, /* Default action is "connect" */
- purple_connection_get_account(gc), data->who, NULL,
+ account, data->who, NULL,
data, 2,
_("C_onnect"), G_CALLBACK(oscar_ask_directim_yes_cb),
_("_Cancel"), G_CALLBACK(oscar_ask_directim_no_cb));
@@ -6267,9 +6302,10 @@ oscar_get_aim_info_cb(PurpleBlistNode *node, gpointer ignore)
g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
buddy = (PurpleBuddy *)node;
- gc = purple_account_get_connection(buddy->account);
+ gc = purple_account_get_connection(purple_buddy_get_account(buddy));
- aim_locate_getinfoshort(gc->proto_data, purple_buddy_get_name(buddy), 0x00000003);
+ aim_locate_getinfoshort(purple_connection_get_protocol_data(gc),
+ purple_buddy_get_name(buddy), 0x00000003);
}
static GList *
@@ -6280,13 +6316,16 @@ oscar_buddy_menu(PurpleBuddy *buddy) {
GList *menu;
PurpleMenuAction *act;
aim_userinfo_t *userinfo;
+ PurpleAccount *account;
+ const char *bname = purple_buddy_get_name(buddy);
- gc = purple_account_get_connection(buddy->account);
- od = gc->proto_data;
- userinfo = aim_locate_finduserinfo(od, buddy->name);
+ account = purple_buddy_get_account(buddy);
+ gc = purple_account_get_connection(account);
+ od = purple_connection_get_protocol_data(gc);
+ userinfo = aim_locate_finduserinfo(od, bname);
menu = NULL;
- if (od->icq && aim_snvalid_icq(purple_buddy_get_name(buddy)))
+ if (od->icq && oscar_util_valid_name_icq(bname))
{
act = purple_menu_action_new(_("Get AIM Info"),
PURPLE_CALLBACK(oscar_get_aim_info_cb),
@@ -6314,7 +6353,7 @@ oscar_buddy_menu(PurpleBuddy *buddy) {
#endif
if (userinfo &&
- aim_sncmp(purple_account_get_username(buddy->account), buddy->name) &&
+ oscar_util_name_compare(purple_account_get_username(account), bname) &&
PURPLE_BUDDY_IS_ONLINE(buddy))
{
if (userinfo->capabilities & OSCAR_CAPABILITY_DIRECTIM)
@@ -6338,8 +6377,8 @@ oscar_buddy_menu(PurpleBuddy *buddy) {
if (od->ssi.received_data && purple_buddy_get_group(buddy) != NULL)
{
char *gname;
- gname = aim_ssi_itemlist_findparentname(od->ssi.local, buddy->name);
- if (gname && aim_ssi_waitingforauth(od->ssi.local, gname, buddy->name))
+ gname = aim_ssi_itemlist_findparentname(od->ssi.local, bname);
+ if (gname && aim_ssi_waitingforauth(od->ssi.local, gname, bname))
{
act = purple_menu_action_new(_("Re-request Authorization"),
PURPLE_CALLBACK(purple_auth_sendrequest_menu),
@@ -6365,7 +6404,7 @@ GList *oscar_blist_node_menu(PurpleBlistNode *node) {
static void
oscar_icq_privacy_opts(PurpleConnection *gc, PurpleRequestFields *fields)
{
- OscarData *od = gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(gc);
PurpleAccount *account = purple_connection_get_account(gc);
PurpleRequestField *f;
gboolean auth, web_aware;
@@ -6416,13 +6455,13 @@ oscar_show_icq_privacy_opts(PurplePluginAction *action)
gc);
}
-static void oscar_format_screenname(PurpleConnection *gc, const char *nick) {
- OscarData *od = gc->proto_data;
- if (!aim_sncmp(purple_account_get_username(purple_connection_get_account(gc)), nick)) {
+static void oscar_format_username(PurpleConnection *gc, const char *nick) {
+ OscarData *od = purple_connection_get_protocol_data(gc);
+ if (!oscar_util_name_compare(purple_account_get_username(purple_connection_get_account(gc)), nick)) {
if (!flap_connection_getbytype(od, SNAC_FAMILY_ADMIN)) {
od->setnick = TRUE;
- g_free(od->newsn);
- od->newsn = g_strdup(nick);
+ g_free(od->newformatting);
+ od->newformatting = g_strdup(nick);
aim_srv_requestnew(od, SNAC_FAMILY_ADMIN);
} else {
aim_admin_setnick(od, flap_connection_getbytype(od, SNAC_FAMILY_ADMIN), nick);
@@ -6440,7 +6479,7 @@ static void oscar_confirm_account(PurplePluginAction *action)
FlapConnection *conn;
gc = (PurpleConnection *)action->context;
- od = gc->proto_data;
+ od = purple_connection_get_protocol_data(gc);
conn = flap_connection_getbytype(od, SNAC_FAMILY_ADMIN);
if (conn != NULL) {
@@ -6454,7 +6493,7 @@ static void oscar_confirm_account(PurplePluginAction *action)
static void oscar_show_email(PurplePluginAction *action)
{
PurpleConnection *gc = (PurpleConnection *) action->context;
- OscarData *od = gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(gc);
FlapConnection *conn = flap_connection_getbytype(od, SNAC_FAMILY_ADMIN);
if (conn) {
@@ -6467,7 +6506,7 @@ static void oscar_show_email(PurplePluginAction *action)
static void oscar_change_email(PurpleConnection *gc, const char *email)
{
- OscarData *od = gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(gc);
FlapConnection *conn = flap_connection_getbytype(od, SNAC_FAMILY_ADMIN);
if (conn) {
@@ -6493,37 +6532,36 @@ static void oscar_show_change_email(PurplePluginAction *action)
static void oscar_show_awaitingauth(PurplePluginAction *action)
{
PurpleConnection *gc = (PurpleConnection *) action->context;
- OscarData *od = gc->proto_data;
- gchar *nombre, *text, *tmp;
- PurpleBlistNode *gnode, *cnode, *bnode;
+ OscarData *od = purple_connection_get_protocol_data(gc);
+ gchar *text, *tmp;
+ GSList *buddies;
+ PurpleAccount *account;
int num=0;
text = g_strdup("");
+ account = purple_connection_get_account(gc);
- for (gnode = purple_get_blist()->root; gnode; gnode = gnode->next) {
- PurpleGroup *group = (PurpleGroup *)gnode;
- 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 *buddy = (PurpleBuddy *)bnode;
- if(!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
- continue;
- if (buddy->account == gc->account && aim_ssi_waitingforauth(od->ssi.local, group->name, buddy->name)) {
- if (purple_buddy_get_alias_only(buddy))
- nombre = g_strdup_printf(" %s (%s)", buddy->name, purple_buddy_get_alias_only(buddy));
- else
- nombre = g_strdup_printf(" %s", buddy->name);
- tmp = g_strdup_printf("%s%s<br>", text, nombre);
- g_free(text);
- text = tmp;
- g_free(nombre);
- num++;
- }
- }
+ buddies = purple_find_buddies(account, NULL);
+ while (buddies) {
+ PurpleBuddy *buddy;
+ const gchar *bname, *gname;
+
+ buddy = buddies->data;
+ bname = purple_buddy_get_name(buddy);
+ gname = purple_group_get_name(purple_buddy_get_group(buddy));
+ if (aim_ssi_waitingforauth(od->ssi.local, gname, bname)) {
+ const gchar *alias = purple_buddy_get_alias_only(buddy);
+ if (alias)
+ tmp = g_strdup_printf("%s %s (%s)<br>", text, bname, alias);
+ else
+ tmp = g_strdup_printf("%s %s<br>", text, bname);
+ g_free(text);
+ text = tmp;
+
+ num++;
}
+
+ buddies = g_slist_delete_link(buddies, buddies);
}
if (!num) {
@@ -6541,7 +6579,7 @@ static void oscar_show_awaitingauth(PurplePluginAction *action)
static void search_by_email_cb(PurpleConnection *gc, const char *email)
{
- OscarData *od = (OscarData *)gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(gc);
aim_search_address(od, email);
}
@@ -6581,7 +6619,7 @@ static void oscar_change_pass(PurplePluginAction *action)
static void oscar_show_chpassurl(PurplePluginAction *action)
{
PurpleConnection *gc = (PurpleConnection *) action->context;
- OscarData *od = gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(gc);
gchar *substituted = purple_strreplace(od->authinfo->chpassurl, "%s", purple_account_get_username(purple_connection_get_account(gc)));
purple_notify_uri(gc, substituted);
g_free(substituted);
@@ -6595,7 +6633,7 @@ static void oscar_show_imforwardingurl(PurplePluginAction *action)
void oscar_set_icon(PurpleConnection *gc, PurpleStoredImage *img)
{
- OscarData *od = gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(gc);
if (img == NULL) {
aim_ssi_delicon(od);
@@ -6624,7 +6662,7 @@ oscar_can_receive_file(PurpleConnection *gc, const char *who)
OscarData *od;
PurpleAccount *account;
- od = gc->proto_data;
+ od = purple_connection_get_protocol_data(gc);
account = purple_connection_get_account(gc);
if (od != NULL)
@@ -6638,7 +6676,7 @@ oscar_can_receive_file(PurpleConnection *gc, const char *who)
*/
if (((userinfo == NULL) ||
(userinfo->capabilities & OSCAR_CAPABILITY_SENDFILE)) &&
- aim_sncmp(who, purple_account_get_username(account)))
+ oscar_util_name_compare(who, purple_account_get_username(account)))
{
return TRUE;
}
@@ -6655,7 +6693,7 @@ oscar_new_xfer(PurpleConnection *gc, const char *who)
PurpleAccount *account;
PeerConnection *conn;
- od = gc->proto_data;
+ od = purple_connection_get_protocol_data(gc);
account = purple_connection_get_account(gc);
xfer = purple_xfer_new(account, PURPLE_XFER_SEND, who);
@@ -6699,7 +6737,7 @@ GList *
oscar_actions(PurplePlugin *plugin, gpointer context)
{
PurpleConnection *gc = (PurpleConnection *) context;
- OscarData *od = gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(gc);
GList *menu = NULL;
PurplePluginAction *act;
@@ -6779,7 +6817,7 @@ oscar_actions(PurplePlugin *plugin, gpointer context)
void oscar_change_passwd(PurpleConnection *gc, const char *old, const char *new)
{
- OscarData *od = gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(gc);
if (od->icq) {
aim_icq_changepasswd(od, new);
@@ -6803,7 +6841,7 @@ oscar_convo_closed(PurpleConnection *gc, const char *who)
OscarData *od;
PeerConnection *conn;
- od = gc->proto_data;
+ od = purple_connection_get_protocol_data(gc);
conn = peer_connection_find_by_type(od, who, OSCAR_CAPABILITY_DIRECTIM);
if (conn != NULL)
@@ -6896,14 +6934,14 @@ static gboolean oscar_uri_handler(const char *proto, const char *cmd, GHashTable
/* aim:GoIM?screenname=SCREENNAME&message=MESSAGE */
if (!g_ascii_strcasecmp(cmd, "GoIM")) {
- char *sname = g_hash_table_lookup(params, "screenname");
- if (sname) {
+ char *bname = g_hash_table_lookup(params, "screenname");
+ if (bname) {
char *message = g_hash_table_lookup(params, "message");
PurpleConversation *conv = purple_find_conversation_with_account(
- PURPLE_CONV_TYPE_IM, sname, acct);
+ PURPLE_CONV_TYPE_IM, bname, acct);
if (conv == NULL)
- conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, acct, sname);
+ conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, acct, bname);
purple_conversation_present(conv);
if (message) {
@@ -6936,9 +6974,9 @@ static gboolean oscar_uri_handler(const char *proto, const char *cmd, GHashTable
}
/* aim:AddBuddy?screenname=SCREENNAME&groupname=GROUPNAME*/
else if (!g_ascii_strcasecmp(cmd, "AddBuddy")) {
- char *sname = g_hash_table_lookup(params, "screenname");
+ char *bname = g_hash_table_lookup(params, "screenname");
char *gname = g_hash_table_lookup(params, "groupname");
- purple_blist_request_add_buddy(acct, sname, gname, NULL);
+ purple_blist_request_add_buddy(acct, bname, gname, NULL);
return TRUE;
}
@@ -6968,7 +7006,7 @@ void oscar_init(PurplePluginProtocolInfo *prpl_info)
option = purple_account_option_bool_new(_("Allow multiple simultaneous logins"), "allow_multiple_logins",
OSCAR_DEFAULT_ALLOW_MULTIPLE_LOGINS);
prpl_info->protocol_options = g_list_append(prpl_info->protocol_options, option);
-
+
if (init)
return;
init = TRUE;
@@ -6976,6 +7014,16 @@ void oscar_init(PurplePluginProtocolInfo *prpl_info)
/* Preferences */
purple_prefs_add_none("/plugins/prpl/oscar");
purple_prefs_add_bool("/plugins/prpl/oscar/recent_buddies", FALSE);
+
+ /*
+ * These two preferences will normally not be changed. UIs can optionally
+ * use them to override these two version fields which are sent to the
+ * server when logging in. AOL requested this change to allow clients to
+ * use custom values.
+ */
+ purple_prefs_add_string("/plugins/prpl/oscar/clientstring", NULL);
+ purple_prefs_add_int("/plugins/prpl/oscar/distid", -1);
+
purple_prefs_remove("/plugins/prpl/oscar/show_idle");
purple_prefs_remove("/plugins/prpl/oscar/always_use_rv_proxy");
diff --git a/libpurple/protocols/oscar/oscar.h b/libpurple/protocols/oscar/oscar.h
index ce29d8e004..b30133c364 100644
--- a/libpurple/protocols/oscar/oscar.h
+++ b/libpurple/protocols/oscar/oscar.h
@@ -75,7 +75,7 @@ extern "C" {
#define FAIM_SNAC_HASH_SIZE 16
/*
- * Current Maximum Length for Screen Names (not including NULL)
+ * Current Maximum Length for usernames (not including NULL)
*
* Currently only names up to 16 characters can be registered
* however it is apparently legal for them to be larger.
@@ -479,7 +479,7 @@ struct _OscarData
gboolean setemail;
char *email;
gboolean setnick;
- char *newsn;
+ char *newformatting;
gboolean chpass;
char *oldp;
char *newp;
@@ -582,7 +582,7 @@ struct aim_clientrelease
struct aim_authresp_info
{
- char *sn;
+ char *bn;
guint16 errorcode;
char *errorurl;
guint16 regstatus;
@@ -611,8 +611,8 @@ struct aim_redirect_data
} chat;
};
-int aim_request_login(OscarData *od, FlapConnection *conn, const char *sn);
-int aim_send_login(OscarData *od, FlapConnection *conn, const char *sn, const char *password, gboolean truncate_pass, ClientInfo *ci, const char *key, gboolean allow_multiple_logins);
+int aim_request_login(OscarData *od, FlapConnection *conn, const char *bn);
+int aim_send_login(OscarData *od, FlapConnection *conn, const char *bn, const char *password, gboolean truncate_pass, ClientInfo *ci, const char *key, gboolean allow_multiple_logins);
/* 0x000b */ int aim_auth_securid_send(OscarData *od, const char *securid);
void oscar_data_addhandler(OscarData *od, guint16 family, guint16 subtype, aim_rxcallback_t newhandler, guint16 flags);
@@ -665,7 +665,7 @@ void oscar_data_destroy(OscarData *);
/* 0x0014 */ void aim_srv_setprivacyflags(OscarData *od, FlapConnection *conn, guint32);
/* 0x0016 */ void aim_srv_nop(OscarData *od, FlapConnection *conn);
/* 0x0017 */ void aim_srv_setversions(OscarData *od, FlapConnection *conn);
-/* 0x001e */ int aim_srv_setextrainfo(OscarData *od, gboolean seticqstatus, guint32 icqstatus, gboolean setavailmsg, const char *availmsg, const char *itmsurl);
+/* 0x001e */ int aim_srv_setextrainfo(OscarData *od, gboolean seticqstatus, guint32 icqstatus, gboolean setstatusmsg, const char *statusmsg, const char *itmsurl);
void aim_bos_reqrights(OscarData *od, FlapConnection *conn);
@@ -811,7 +811,7 @@ struct aim_sendimext_args
{
/* These are _required_ */
- const char *destsn;
+ const char *destbn;
guint32 flags; /* often 0 */
/* Only required if not using multipart messages */
@@ -840,7 +840,7 @@ struct aim_sendimext_args
*/
struct aim_sendrtfmsg_args
{
- const char *destsn;
+ const char *destbn;
guint32 fgcolor;
guint32 bgcolor;
const char *rtfmsg; /* must be in RTF */
@@ -954,28 +954,28 @@ struct aim_incomingim_ch4_args
/* 0x0002 */ int aim_im_setparams(OscarData *od, struct aim_icbmparameters *params);
/* 0x0004 */ int aim_im_reqparams(OscarData *od);
/* 0x0006 */ int aim_im_sendch1_ext(OscarData *od, struct aim_sendimext_args *args);
-/* 0x0006 */ int aim_im_sendch1(OscarData *, const char *destsn, guint16 flags, const char *msg);
-/* 0x0006 */ int aim_im_sendch2_chatinvite(OscarData *od, const char *sn, const char *msg, guint16 exchange, const char *roomname, guint16 instance);
-/* 0x0006 */ int aim_im_sendch2_icon(OscarData *od, const char *sn, const guint8 *icon, int iconlen, time_t stamp, guint16 iconsum);
+/* 0x0006 */ int aim_im_sendch1(OscarData *, const char *destbn, guint16 flags, const char *msg);
+/* 0x0006 */ int aim_im_sendch2_chatinvite(OscarData *od, const char *bn, const char *msg, guint16 exchange, const char *roomname, guint16 instance);
+/* 0x0006 */ int aim_im_sendch2_icon(OscarData *od, const char *bn, const guint8 *icon, int iconlen, time_t stamp, guint16 iconsum);
/* 0x0006 */ int aim_im_sendch2_rtfmsg(OscarData *od, struct aim_sendrtfmsg_args *args);
/* 0x0006 */ void aim_im_sendch2_cancel(PeerConnection *peer_conn);
/* 0x0006 */ void aim_im_sendch2_connected(PeerConnection *peer_conn);
-/* 0x0006 */ void aim_im_sendch2_odc_requestdirect(OscarData *od, guchar *cookie, const char *sn, const guint8 *ip, guint16 port, guint16 requestnumber);
-/* 0x0006 */ void aim_im_sendch2_odc_requestproxy(OscarData *od, guchar *cookie, const char *sn, const guint8 *ip, guint16 pin, guint16 requestnumber);
-/* 0x0006 */ void aim_im_sendch2_sendfile_requestdirect(OscarData *od, guchar *cookie, const char *sn, const guint8 *ip, guint16 port, guint16 requestnumber, const gchar *filename, guint32 size, guint16 numfiles);
-/* 0x0006 */ void aim_im_sendch2_sendfile_requestproxy(OscarData *od, guchar *cookie, const char *sn, const guint8 *ip, guint16 pin, guint16 requestnumber, const gchar *filename, guint32 size, guint16 numfiles);
-
-/* 0x0006 */ int aim_im_sendch2_geticqaway(OscarData *od, const char *sn, int type);
-/* 0x0006 */ int aim_im_sendch4(OscarData *od, const char *sn, guint16 type, const char *message);
-/* 0x0008 */ int aim_im_warn(OscarData *od, FlapConnection *conn, const char *destsn, guint32 flags);
-/* 0x000b */ int aim_im_denytransfer(OscarData *od, const char *sn, const guchar *cookie, guint16 code);
+/* 0x0006 */ void aim_im_sendch2_odc_requestdirect(OscarData *od, guchar *cookie, const char *bn, const guint8 *ip, guint16 port, guint16 requestnumber);
+/* 0x0006 */ void aim_im_sendch2_odc_requestproxy(OscarData *od, guchar *cookie, const char *bn, const guint8 *ip, guint16 pin, guint16 requestnumber);
+/* 0x0006 */ void aim_im_sendch2_sendfile_requestdirect(OscarData *od, guchar *cookie, const char *bn, const guint8 *ip, guint16 port, guint16 requestnumber, const gchar *filename, guint32 size, guint16 numfiles);
+/* 0x0006 */ void aim_im_sendch2_sendfile_requestproxy(OscarData *od, guchar *cookie, const char *bn, const guint8 *ip, guint16 pin, guint16 requestnumber, const gchar *filename, guint32 size, guint16 numfiles);
+
+/* 0x0006 */ int aim_im_sendch2_geticqaway(OscarData *od, const char *bn, int type);
+/* 0x0006 */ int aim_im_sendch4(OscarData *od, const char *bn, guint16 type, const char *message);
+/* 0x0008 */ int aim_im_warn(OscarData *od, FlapConnection *conn, const char *destbn, guint32 flags);
+/* 0x000b */ int aim_im_denytransfer(OscarData *od, const char *bn, const guchar *cookie, guint16 code);
/* 0x0010 */ int aim_im_reqofflinemsgs(OscarData *od);
-/* 0x0014 */ int aim_im_sendmtn(OscarData *od, guint16 type1, const char *sn, guint16 type2);
+/* 0x0014 */ int aim_im_sendmtn(OscarData *od, guint16 type1, const char *bn, guint16 type2);
void aim_icbm_makecookie(guchar* cookie);
gchar *oscar_encoding_extract(const char *encoding);
gchar *oscar_encoding_to_utf8(PurpleAccount *account, const char *encoding, const char *text, int textlen);
-gchar *purple_plugin_oscar_decode_im_part(PurpleAccount *account, const char *sourcesn, guint16 charset, guint16 charsubset, const gchar *data, gsize datalen);
+gchar *purple_plugin_oscar_decode_im_part(PurpleAccount *account, const char *sourcebn, guint16 charset, guint16 charsubset, const gchar *data, gsize datalen);
/* 0x0002 - family_locate.c */
@@ -1010,13 +1010,13 @@ gchar *purple_plugin_oscar_decode_im_part(PurpleAccount *account, const char *so
struct userinfo_node
{
- char *sn;
+ char *bn;
struct userinfo_node *next;
};
typedef struct aim_userinfo_s
{
- char *sn;
+ char *bn;
guint16 warnlevel; /* evil percent * 10 (999 = 99.9%) */
guint16 idletime; /* in seconds */
guint16 flags;
@@ -1062,7 +1062,7 @@ int aim_sendmemblock(OscarData *od, FlapConnection *conn, guint32 offset, guint3
struct aim_invite_priv
{
- char *sn;
+ char *bn;
char *roomname;
guint16 exchange;
guint16 instance;
@@ -1085,7 +1085,7 @@ struct aim_invite_priv
#define AIM_COOKIETYPE_OFTIMAGE 0x14
#define AIM_COOKIETYPE_OFTICON 0x15
-aim_userinfo_t *aim_locate_finduserinfo(OscarData *od, const char *sn);
+aim_userinfo_t *aim_locate_finduserinfo(OscarData *od, const char *bn);
void aim_locate_dorequest(OscarData *od);
/* 0x0002 */ int aim_locate_reqrights(OscarData *od);
@@ -1093,11 +1093,11 @@ void aim_locate_dorequest(OscarData *od);
/* 0x0004 */ int aim_locate_setprofile(OscarData *od, const char *profile_encoding, const gchar *profile, const int profile_len, const char *awaymsg_encoding, const gchar *awaymsg, const int awaymsg_len);
/* 0x0005 */ int aim_locate_getinfo(OscarData *od, const char *, guint16);
/* 0x0009 */ int aim_locate_setdirinfo(OscarData *od, const char *first, const char *middle, const char *last, const char *maiden, const char *nickname, const char *street, const char *city, const char *state, const char *zip, int country, guint16 privacy);
-/* 0x000b */ int aim_locate_000b(OscarData *od, const char *sn);
+/* 0x000b */ int aim_locate_000b(OscarData *od, const char *bn);
/* 0x000f */ int aim_locate_setinterests(OscarData *od, const char *interest1, const char *interest2, const char *interest3, const char *interest4, const char *interest5, guint16 privacy);
-/* 0x0015 */ int aim_locate_getinfoshort(OscarData *od, const char *sn, guint32 flags);
+/* 0x0015 */ int aim_locate_getinfoshort(OscarData *od, const char *bn, guint32 flags);
-void aim_locate_autofetch_away_message(OscarData *od, const char *sn);
+void aim_locate_autofetch_away_message(OscarData *od, const char *bn);
guint32 aim_locate_getcaps(OscarData *od, ByteStream *bs, int len);
guint32 aim_locate_getcaps_short(OscarData *od, ByteStream *bs, int len);
void aim_info_free(aim_userinfo_t *);
@@ -1164,7 +1164,7 @@ struct aim_odir
char *country;
char *state;
char *city;
- char *sn;
+ char *bn;
char *interest;
char *nick;
char *zip;
@@ -1181,7 +1181,7 @@ int aim_odir_interest(OscarData *, const char *, const char *);
/* 0x0010 - family_bart.c */
int aim_bart_upload(OscarData *od, const guint8 *icon, guint16 iconlen);
-int aim_bart_request(OscarData *od, const char *sn, guint8 iconcsumtype, const guint8 *iconstr, guint16 iconstrlen);
+int aim_bart_request(OscarData *od, const char *bn, guint8 iconcsumtype, const guint8 *iconstr, guint16 iconstrlen);
@@ -1231,20 +1231,20 @@ struct aim_ssi_tmp
/* 0x0007 */ int aim_ssi_enable(OscarData *od);
/* 0x0011 */ int aim_ssi_modbegin(OscarData *od);
/* 0x0012 */ int aim_ssi_modend(OscarData *od);
-/* 0x0014 */ int aim_ssi_sendauth(OscarData *od, char *sn, char *msg);
-/* 0x0018 */ int aim_ssi_sendauthrequest(OscarData *od, char *sn, const char *msg);
-/* 0x001a */ int aim_ssi_sendauthreply(OscarData *od, char *sn, guint8 reply, const char *msg);
+/* 0x0014 */ int aim_ssi_sendauth(OscarData *od, char *bn, char *msg);
+/* 0x0018 */ int aim_ssi_sendauthrequest(OscarData *od, char *bn, const char *msg);
+/* 0x001a */ int aim_ssi_sendauthreply(OscarData *od, char *bn, guint8 reply, const char *msg);
/* Client functions for retrieving SSI data */
struct aim_ssi_item *aim_ssi_itemlist_find(struct aim_ssi_item *list, guint16 gid, guint16 bid);
-struct aim_ssi_item *aim_ssi_itemlist_finditem(struct aim_ssi_item *list, const char *gn, const char *sn, guint16 type);
-struct aim_ssi_item *aim_ssi_itemlist_exists(struct aim_ssi_item *list, const char *sn);
-char *aim_ssi_itemlist_findparentname(struct aim_ssi_item *list, const char *sn);
+struct aim_ssi_item *aim_ssi_itemlist_finditem(struct aim_ssi_item *list, const char *gn, const char *bn, guint16 type);
+struct aim_ssi_item *aim_ssi_itemlist_exists(struct aim_ssi_item *list, const char *bn);
+char *aim_ssi_itemlist_findparentname(struct aim_ssi_item *list, const char *bn);
int aim_ssi_getpermdeny(struct aim_ssi_item *list);
guint32 aim_ssi_getpresence(struct aim_ssi_item *list);
-char *aim_ssi_getalias(struct aim_ssi_item *list, const char *gn, const char *sn);
-char *aim_ssi_getcomment(struct aim_ssi_item *list, const char *gn, const char *sn);
-gboolean aim_ssi_waitingforauth(struct aim_ssi_item *list, const char *gn, const char *sn);
+char *aim_ssi_getalias(struct aim_ssi_item *list, const char *gn, const char *bn);
+char *aim_ssi_getcomment(struct aim_ssi_item *list, const char *gn, const char *bn);
+gboolean aim_ssi_waitingforauth(struct aim_ssi_item *list, const char *gn, const char *bn);
/* Client functions for changing SSI data */
int aim_ssi_addbuddy(OscarData *od, const char *name, const char *group, GSList *tlvlist, const char *alias, const char *comment, const char *smsnum, gboolean needauth);
@@ -1254,9 +1254,9 @@ int aim_ssi_delbuddy(OscarData *od, const char *name, const char *group);
int aim_ssi_delgroup(OscarData *od, const char *group);
int aim_ssi_delpermit(OscarData *od, const char *name);
int aim_ssi_deldeny(OscarData *od, const char *name);
-int aim_ssi_movebuddy(OscarData *od, const char *oldgn, const char *newgn, const char *sn);
-int aim_ssi_aliasbuddy(OscarData *od, const char *gn, const char *sn, const char *alias);
-int aim_ssi_editcomment(OscarData *od, const char *gn, const char *sn, const char *alias);
+int aim_ssi_movebuddy(OscarData *od, const char *oldgn, const char *newgn, const char *bn);
+int aim_ssi_aliasbuddy(OscarData *od, const char *gn, const char *bn, const char *alias);
+int aim_ssi_editcomment(OscarData *od, const char *gn, const char *bn, const char *alias);
int aim_ssi_rename_group(OscarData *od, const char *oldgn, const char *newgn);
int aim_ssi_cleanlist(OscarData *od);
int aim_ssi_deletelist(OscarData *od);
@@ -1501,11 +1501,10 @@ int aimutil_tokslen(char *toSearch, int theindex, char dl);
int aimutil_itemcnt(char *toSearch, char dl);
char *aimutil_itemindex(char *toSearch, int theindex, char dl);
-gboolean aim_snvalid(const char *sn);
-gboolean aim_snvalid_icq(const char *sn);
-gboolean aim_snvalid_sms(const char *sn);
-int aim_snlen(const char *sn);
-int aim_sncmp(const char *sn1, const char *sn2);
+gboolean oscar_util_valid_name(const char *bn);
+gboolean oscar_util_valid_name_icq(const char *bn);
+gboolean oscar_util_valid_name_sms(const char *bn);
+int oscar_util_name_compare(const char *bn1, const char *bn2);
@@ -1595,6 +1594,18 @@ int byte_stream_putbs(ByteStream *bs, ByteStream *srcbs, int len);
int byte_stream_putuid(ByteStream *bs, OscarData *od);
int byte_stream_putcaps(ByteStream *bs, guint32 caps);
+/**
+ * Inserts a BART asset block into the given byte stream. The flags
+ * and length are set appropriately based on the value of data.
+ */
+void byte_stream_put_bart_asset(ByteStream *bs, guint16 type, ByteStream *data);
+
+/**
+ * A helper function that calls byte_stream_put_bart_asset with the
+ * appropriate data ByteStream given the datastr.
+ */
+void byte_stream_put_bart_asset_str(ByteStream *bs, guint16 type, const char *datastr);
+
/*
* Generic SNAC structure. Rarely if ever used.
*/
diff --git a/libpurple/protocols/oscar/peer.c b/libpurple/protocols/oscar/peer.c
index dff1dc81e1..d756218154 100644
--- a/libpurple/protocols/oscar/peer.c
+++ b/libpurple/protocols/oscar/peer.c
@@ -69,7 +69,7 @@
#endif
PeerConnection *
-peer_connection_find_by_type(OscarData *od, const char *sn, OscarCapability type)
+peer_connection_find_by_type(OscarData *od, const char *bn, OscarCapability type)
{
GSList *cur;
PeerConnection *conn;
@@ -77,7 +77,7 @@ peer_connection_find_by_type(OscarData *od, const char *sn, OscarCapability type
for (cur = od->peer_connections; cur != NULL; cur = cur->next)
{
conn = cur->data;
- if ((conn->type == type) && !aim_sncmp(conn->sn, sn))
+ if ((conn->type == type) && !oscar_util_name_compare(conn->bn, bn))
return conn;
}
@@ -88,7 +88,7 @@ peer_connection_find_by_type(OscarData *od, const char *sn, OscarCapability type
* @param cookie This must be exactly 8 characters.
*/
PeerConnection *
-peer_connection_find_by_cookie(OscarData *od, const char *sn, const guchar *cookie)
+peer_connection_find_by_cookie(OscarData *od, const char *bn, const guchar *cookie)
{
GSList *cur;
PeerConnection *conn;
@@ -96,7 +96,7 @@ peer_connection_find_by_cookie(OscarData *od, const char *sn, const guchar *cook
for (cur = od->peer_connections; cur != NULL; cur = cur->next)
{
conn = cur->data;
- if (!memcmp(conn->cookie, cookie, 8) && !aim_sncmp(conn->sn, sn))
+ if (!memcmp(conn->cookie, cookie, 8) && !oscar_util_name_compare(conn->bn, bn))
return conn;
}
@@ -104,7 +104,7 @@ peer_connection_find_by_cookie(OscarData *od, const char *sn, const guchar *cook
}
PeerConnection *
-peer_connection_new(OscarData *od, OscarCapability type, const char *sn)
+peer_connection_new(OscarData *od, OscarCapability type, const char *bn)
{
PeerConnection *conn;
PurpleAccount *account;
@@ -114,7 +114,7 @@ peer_connection_new(OscarData *od, OscarCapability type, const char *sn)
conn = g_new0(PeerConnection, 1);
conn->od = od;
conn->type = type;
- conn->sn = g_strdup(sn);
+ conn->bn = g_strdup(bn);
conn->buffer_outgoing = purple_circ_buffer_new(0);
conn->listenerfd = -1;
conn->fd = -1;
@@ -228,7 +228,7 @@ peer_connection_destroy_cb(gpointer data)
conn->xfer = NULL;
}
- g_free(conn->sn);
+ g_free(conn->bn);
g_free(conn->error_message);
g_free(conn->proxyip);
g_free(conn->clientip);
@@ -698,20 +698,20 @@ peer_connection_establish_listener_cb(int listenerfd, gpointer data)
if (conn->type == OSCAR_CAPABILITY_DIRECTIM)
{
aim_im_sendch2_odc_requestdirect(od,
- conn->cookie, conn->sn, purple_network_ip_atoi(listener_ip),
+ conn->cookie, conn->bn, purple_network_ip_atoi(listener_ip),
listener_port, ++conn->lastrequestnumber);
/* Print a message to a local conversation window */
- conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, conn->sn);
+ conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, conn->bn);
tmp = g_strdup_printf(_("Asking %s to connect to us at %s:%hu for "
- "Direct IM."), conn->sn, listener_ip, listener_port);
+ "Direct IM."), conn->bn, listener_ip, listener_port);
purple_conversation_write(conv, NULL, tmp, PURPLE_MESSAGE_SYSTEM, time(NULL));
g_free(tmp);
}
else if (conn->type == OSCAR_CAPABILITY_SENDFILE)
{
aim_im_sendch2_sendfile_requestdirect(od,
- conn->cookie, conn->sn,
+ conn->cookie, conn->bn,
purple_network_ip_atoi(listener_ip),
listener_port, ++conn->lastrequestnumber,
(const gchar *)conn->xferdata.name,
@@ -790,7 +790,7 @@ peer_connection_trynext(PeerConnection *conn)
PurpleConversation *conv;
tmp = g_strdup_printf(_("Attempting to connect to %s:%hu."),
conn->verifiedip, conn->port);
- conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, conn->sn);
+ conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, conn->bn);
purple_conversation_write(conv, NULL, tmp,
PURPLE_MESSAGE_SYSTEM, time(NULL));
g_free(tmp);
@@ -863,7 +863,7 @@ peer_connection_trynext(PeerConnection *conn)
gchar *tmp;
PurpleConversation *conv;
tmp = g_strdup(_("Attempting to connect via proxy server."));
- conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, conn->sn);
+ conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, conn->bn);
purple_conversation_write(conv, NULL, tmp,
PURPLE_MESSAGE_SYSTEM, time(NULL));
g_free(tmp);
@@ -888,13 +888,13 @@ peer_connection_trynext(PeerConnection *conn)
* Initiate a peer connection with someone.
*/
void
-peer_connection_propose(OscarData *od, OscarCapability type, const char *sn)
+peer_connection_propose(OscarData *od, OscarCapability type, const char *bn)
{
PeerConnection *conn;
if (type == OSCAR_CAPABILITY_DIRECTIM)
{
- conn = peer_connection_find_by_type(od, sn, type);
+ conn = peer_connection_find_by_type(od, bn, type);
if (conn != NULL)
{
if (conn->ready)
@@ -903,10 +903,10 @@ peer_connection_propose(OscarData *od, OscarCapability type, const char *sn)
PurpleConversation *conv;
purple_debug_info("oscar", "Already have a direct IM "
- "session with %s.\n", sn);
+ "session with %s.\n", bn);
account = purple_connection_get_account(od->gc);
conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM,
- sn, account);
+ bn, account);
if (conv != NULL)
purple_conversation_present(conv);
return;
@@ -917,7 +917,7 @@ peer_connection_propose(OscarData *od, OscarCapability type, const char *sn)
}
}
- conn = peer_connection_new(od, type, sn);
+ conn = peer_connection_new(od, type, bn);
conn->flags |= PEER_CONNECTION_FLAG_INITIATED_BY_ME;
conn->flags |= PEER_CONNECTION_FLAG_APPROVED;
aim_icbm_makecookie(conn->cookie);
@@ -954,7 +954,7 @@ peer_connection_got_proposition_no_cb(gpointer data, gint id)
conn = data;
- aim_im_denytransfer(conn->od, conn->sn, conn->cookie,
+ aim_im_denytransfer(conn->od, conn->bn, conn->cookie,
AIM_TRANSFER_DENY_DECLINE);
peer_connection_destroy(conn, OSCAR_DISCONNECT_LOCAL_CLOSED, NULL);
}
@@ -963,7 +963,7 @@ peer_connection_got_proposition_no_cb(gpointer data, gint id)
* Someone else wants to establish a peer connection with us.
*/
void
-peer_connection_got_proposition(OscarData *od, const gchar *sn, const gchar *message, IcbmArgsCh2 *args)
+peer_connection_got_proposition(OscarData *od, const gchar *bn, const gchar *message, IcbmArgsCh2 *args)
{
PurpleConnection *gc;
PurpleAccount *account;
@@ -979,7 +979,7 @@ peer_connection_got_proposition(OscarData *od, const gchar *sn, const gchar *mes
* and we should try connecting to them, instead. Or they want
* to go through a proxy.
*/
- conn = peer_connection_find_by_cookie(od, sn, args->cookie);
+ conn = peer_connection_find_by_cookie(od, bn, args->cookie);
if ((conn != NULL) && (conn->type == args->type))
{
purple_debug_info("oscar", "Remote user wants to try a "
@@ -1003,12 +1003,12 @@ peer_connection_got_proposition(OscarData *od, const gchar *sn, const gchar *mes
/* If this is a direct IM, then close any existing session */
if (args->type == OSCAR_CAPABILITY_DIRECTIM)
{
- conn = peer_connection_find_by_type(od, sn, args->type);
+ conn = peer_connection_find_by_type(od, bn, args->type);
if (conn != NULL)
{
/* Close the old direct IM and start a new one */
purple_debug_info("oscar", "Received new direct IM request "
- "from %s. Destroying old connection.\n", sn);
+ "from %s. Destroying old connection.\n", bn);
peer_connection_destroy(conn, OSCAR_DISCONNECT_REMOTE_CLOSED, NULL);
}
}
@@ -1022,12 +1022,12 @@ peer_connection_got_proposition(OscarData *od, const gchar *sn, const gchar *mes
{
purple_debug_warning("oscar",
"%s tried to send you a file with incomplete "
- "information.\n", sn);
+ "information.\n", bn);
return;
}
}
- conn = peer_connection_new(od, args->type, sn);
+ conn = peer_connection_new(od, args->type, bn);
memcpy(conn->cookie, args->cookie, 8);
if (args->use_proxy)
conn->proxyip = g_strdup(args->proxyip);
@@ -1040,7 +1040,7 @@ peer_connection_got_proposition(OscarData *od, const gchar *sn, const gchar *mes
if (args->type == OSCAR_CAPABILITY_DIRECTIM)
{
buf = g_strdup_printf(_("%s has just asked to directly connect to %s"),
- sn, purple_account_get_username(account));
+ bn, purple_account_get_username(account));
purple_request_action(conn, NULL, buf,
_("This requires a direct connection between "
@@ -1049,7 +1049,7 @@ peer_connection_got_proposition(OscarData *od, const gchar *sn, const gchar *mes
"revealed, this may be considered a privacy "
"risk."),
PURPLE_DEFAULT_ACTION_NONE,
- account, sn, NULL,
+ account, bn, NULL,
conn, 2,
_("C_onnect"), G_CALLBACK(peer_connection_got_proposition_yes_cb),
_("Cancel"), G_CALLBACK(peer_connection_got_proposition_no_cb));
@@ -1058,7 +1058,7 @@ peer_connection_got_proposition(OscarData *od, const gchar *sn, const gchar *mes
{
gchar *filename;
- conn->xfer = purple_xfer_new(account, PURPLE_XFER_RECEIVE, sn);
+ conn->xfer = purple_xfer_new(account, PURPLE_XFER_RECEIVE, bn);
if (conn->xfer)
{
conn->xfer->data = conn;
diff --git a/libpurple/protocols/oscar/peer.h b/libpurple/protocols/oscar/peer.h
index ebdfc1ca20..1027a75b1b 100644
--- a/libpurple/protocols/oscar/peer.h
+++ b/libpurple/protocols/oscar/peer.h
@@ -83,7 +83,7 @@ struct _OdcFrame
/* Unknown */
guint16 flags; /* 38 */
/* Unknown */
- guchar sn[32]; /* 44 */
+ guchar bn[32]; /* 44 */
/* Unknown */
ByteStream payload; /* 76 */
};
@@ -137,7 +137,7 @@ struct _PeerConnection
{
OscarData *od;
OscarCapability type;
- char *sn;
+ char *bn;
guchar magic[4];
guchar cookie[8];
guint16 lastrequestnumber;
@@ -228,12 +228,12 @@ struct _PeerConnection
* @param type The type of the peer connection. One of
* OSCAR_CAPABILITY_DIRECTIM or OSCAR_CAPABILITY_SENDFILE.
*/
-PeerConnection *peer_connection_new(OscarData *od, OscarCapability type, const char *sn);
+PeerConnection *peer_connection_new(OscarData *od, OscarCapability type, const char *bn);
void peer_connection_destroy(PeerConnection *conn, OscarDisconnectReason reason, const gchar *error_message);
void peer_connection_schedule_destroy(PeerConnection *conn, OscarDisconnectReason reason, const gchar *error_message);
-PeerConnection *peer_connection_find_by_type(OscarData *od, const char *sn, OscarCapability type);
-PeerConnection *peer_connection_find_by_cookie(OscarData *od, const char *sn, const guchar *cookie);
+PeerConnection *peer_connection_find_by_type(OscarData *od, const char *bn, OscarCapability type);
+PeerConnection *peer_connection_find_by_cookie(OscarData *od, const char *bn, const guchar *cookie);
void peer_connection_listen_cb(gpointer data, gint source, PurpleInputCondition cond);
void peer_connection_recv_cb(gpointer data, gint source, PurpleInputCondition cond);
@@ -241,8 +241,8 @@ void peer_connection_send(PeerConnection *conn, ByteStream *bs);
void peer_connection_trynext(PeerConnection *conn);
void peer_connection_finalize_connection(PeerConnection *conn);
-void peer_connection_propose(OscarData *od, OscarCapability type, const char *sn);
-void peer_connection_got_proposition(OscarData *od, const gchar *sn, const gchar *message, IcbmArgsCh2 *args);
+void peer_connection_propose(OscarData *od, OscarCapability type, const char *bn);
+void peer_connection_got_proposition(OscarData *od, const gchar *bn, const gchar *message, IcbmArgsCh2 *args);
/*
* For ODC
diff --git a/libpurple/protocols/oscar/peer_proxy.c b/libpurple/protocols/oscar/peer_proxy.c
index 0ca423e2b3..1ef991b704 100644
--- a/libpurple/protocols/oscar/peer_proxy.c
+++ b/libpurple/protocols/oscar/peer_proxy.c
@@ -63,19 +63,19 @@ peer_proxy_send_create_new_conn(PeerConnection *conn)
{
ProxyFrame frame;
PurpleAccount *account;
- const gchar *sn;
- guint8 sn_length;
+ const gchar *bn;
+ guint8 bn_length;
memset(&frame, 0, sizeof(ProxyFrame));
frame.type = PEER_PROXY_TYPE_CREATE;
frame.flags = 0x0000;
account = purple_connection_get_account(conn->od->gc);
- sn = purple_account_get_username(account);
- sn_length = strlen(sn);
- byte_stream_new(&frame.payload, 1 + sn_length + 8 + 20);
- byte_stream_put8(&frame.payload, sn_length);
- byte_stream_putraw(&frame.payload, (const guint8 *)sn, sn_length);
+ bn = purple_account_get_username(account);
+ bn_length = strlen(bn);
+ byte_stream_new(&frame.payload, 1 + bn_length + 8 + 20);
+ byte_stream_put8(&frame.payload, bn_length);
+ byte_stream_putraw(&frame.payload, (const guint8 *)bn, bn_length);
byte_stream_putraw(&frame.payload, conn->cookie, 8);
byte_stream_put16(&frame.payload, 0x0001); /* Type */
@@ -99,19 +99,19 @@ peer_proxy_send_join_existing_conn(PeerConnection *conn, guint16 pin)
{
ProxyFrame frame;
PurpleAccount *account;
- const gchar *sn;
- guint8 sn_length;
+ const gchar *bn;
+ guint8 bn_length;
memset(&frame, 0, sizeof(ProxyFrame));
frame.type = PEER_PROXY_TYPE_JOIN;
frame.flags = 0x0000;
account = purple_connection_get_account(conn->od->gc);
- sn = purple_account_get_username(account);
- sn_length = strlen(sn);
- byte_stream_new(&frame.payload, 1 + sn_length + 2 + 8 + 20);
- byte_stream_put8(&frame.payload, sn_length);
- byte_stream_putraw(&frame.payload, (const guint8 *)sn, sn_length);
+ bn = purple_account_get_username(account);
+ bn_length = strlen(bn);
+ byte_stream_new(&frame.payload, 1 + bn_length + 2 + 8 + 20);
+ byte_stream_put8(&frame.payload, bn_length);
+ byte_stream_putraw(&frame.payload, (const guint8 *)bn, bn_length);
byte_stream_put16(&frame.payload, pin);
byte_stream_putraw(&frame.payload, conn->cookie, 8);
@@ -149,11 +149,11 @@ peer_proxy_recv_frame(PeerConnection *conn, ProxyFrame *frame)
if (conn->type == OSCAR_CAPABILITY_DIRECTIM)
aim_im_sendch2_odc_requestproxy(conn->od,
conn->cookie,
- conn->sn, ip, pin, ++conn->lastrequestnumber);
+ conn->bn, ip, pin, ++conn->lastrequestnumber);
else if (conn->type == OSCAR_CAPABILITY_SENDFILE)
{
aim_im_sendch2_sendfile_requestproxy(conn->od,
- conn->cookie, conn->sn,
+ conn->cookie, conn->bn,
ip, pin, ++conn->lastrequestnumber,
(const gchar *)conn->xferdata.name,
conn->xferdata.size, conn->xferdata.totfiles);
diff --git a/libpurple/protocols/oscar/snactypes.h b/libpurple/protocols/oscar/snactypes.h
index 31d60ffb5c..5a697aa827 100644
--- a/libpurple/protocols/oscar/snactypes.h
+++ b/libpurple/protocols/oscar/snactypes.h
@@ -252,7 +252,6 @@
* SNAC Family: Authorizer
*
* Used only in protocol versions three and above.
- *
*/
#define SNAC_SUBTYPE_AUTH_ERROR 0x0001
#define SNAC_SUBTYPE_AUTH_LOGINREQEST 0x0002
@@ -266,8 +265,7 @@
* SNAC Family: Email
*
* Used for getting information on the email address
- * associated with your screen name.
- *
+ * associated with your username.
*/
#define SNAC_SUBTYPE_ALERT_ERROR 0x0001
#define SNAC_SUBTYPE_ALERT_SENDCOOKIES 0x0006
@@ -280,7 +278,6 @@
* This isn't truly a SNAC family either, but using
* these, we can integrated non-SNAC services into
* the SNAC-centered libfaim callback structure.
- *
*/
#define AIM_CB_SPECIAL_CONNERR 0x0003
#define AIM_CB_SPECIAL_CONNINITDONE 0x0006
diff --git a/libpurple/protocols/oscar/util.c b/libpurple/protocols/oscar/util.c
index 6875f68887..ed06bb74f5 100644
--- a/libpurple/protocols/oscar/util.c
+++ b/libpurple/protocols/oscar/util.c
@@ -136,27 +136,27 @@ aimutil_iconsum(const guint8 *buf, int buflen)
}
/**
- * Check if the given screen name is a valid AIM screen name.
+ * Check if the given name is a valid AIM username.
* Example: BobDole
* Example: Henry_Ford@mac.com
* Example: 1KrazyKat@example.com
*
- * @return TRUE if the screen name is valid, FALSE if not.
+ * @return TRUE if the name is valid, FALSE if not.
*/
static gboolean
-aim_snvalid_aim(const char *sn)
+oscar_util_valid_name_aim(const char *name)
{
int i;
- if (purple_email_is_valid(sn))
+ if (purple_email_is_valid(name))
return TRUE;
- /* Normal AIM screen names can't start with a number */
- if (isdigit(sn[0]))
+ /* Normal AIM usernames can't start with a number */
+ if (isdigit(name[0]))
return FALSE;
- for (i = 0; sn[i] != '\0'; i++) {
- if (!isalnum(sn[i]) && (sn[i] != ' '))
+ for (i = 0; name[i] != '\0'; i++) {
+ if (!isalnum(name[i]) && (name[i] != ' '))
return FALSE;
}
@@ -164,18 +164,18 @@ aim_snvalid_aim(const char *sn)
}
/**
- * Check if the given screen name is a valid ICQ screen name.
+ * Check if the given name is a valid ICQ username.
* Example: 1234567
*
- * @return TRUE if the screen name is valid, FALSE if not.
+ * @return TRUE if the name is valid, FALSE if not.
*/
gboolean
-aim_snvalid_icq(const char *sn)
+oscar_util_valid_name_icq(const char *name)
{
int i;
- for (i = 0; sn[i] != '\0'; i++) {
- if (!isdigit(sn[i]))
+ for (i = 0; name[i] != '\0'; i++) {
+ if (!isdigit(name[i]))
return FALSE;
}
@@ -183,21 +183,21 @@ aim_snvalid_icq(const char *sn)
}
/**
- * Check if the given screen name is a valid SMS screen name.
+ * Check if the given name is a valid SMS username.
* Example: +19195551234
*
- * @return TRUE if the screen name is valid, FALSE if not.
+ * @return TRUE if the name is valid, FALSE if not.
*/
gboolean
-aim_snvalid_sms(const char *sn)
+oscar_util_valid_name_sms(const char *name)
{
int i;
- if (sn[0] != '+')
+ if (name[0] != '+')
return FALSE;
- for (i = 1; sn[i] != '\0'; i++) {
- if (!isdigit(sn[i]))
+ for (i = 1; name[i] != '\0'; i++) {
+ if (!isdigit(name[i]))
return FALSE;
}
@@ -205,44 +205,46 @@ aim_snvalid_sms(const char *sn)
}
/**
- * Check if the given screen name is a valid oscar screen name.
+ * Check if the given name is a valid oscar username.
*
- * @return TRUE if the screen name is valid, FALSE if not.
+ * @return TRUE if the name is valid, FALSE if not.
*/
gboolean
-aim_snvalid(const char *sn)
+oscar_util_valid_name(const char *name)
{
- if ((sn == NULL) || (*sn == '\0'))
+ if ((name == NULL) || (*name == '\0'))
return FALSE;
- return aim_snvalid_icq(sn) || aim_snvalid_sms(sn) || aim_snvalid_aim(sn);
+ return oscar_util_valid_name_icq(name)
+ || oscar_util_valid_name_sms(name)
+ || oscar_util_valid_name_aim(name);
}
/**
- * This takes two screen names and compares them using the rules
- * on screen names for AIM/AOL. Mainly, this means case and space
+ * This takes two names and compares them using the rules
+ * on usernames for AIM/AOL. Mainly, this means case and space
* insensitivity (all case differences and spacing differences are
- * ignored, with the exception that screen names can not start with
+ * ignored, with the exception that usernames can not start with
* a space).
*
* @return 0 if equal, non-0 if different
*/
/* TODO: Do something different for email addresses. */
int
-aim_sncmp(const char *sn1, const char *sn2)
+oscar_util_name_compare(const char *name1, const char *name2)
{
- if ((sn1 == NULL) || (sn2 == NULL))
+ if ((name1 == NULL) || (name2 == NULL))
return -1;
do {
- while (*sn2 == ' ')
- sn2++;
- while (*sn1 == ' ')
- sn1++;
- if (toupper(*sn1) != toupper(*sn2))
+ while (*name2 == ' ')
+ name2++;
+ while (*name1 == ' ')
+ name1++;
+ if (toupper(*name1) != toupper(*name2))
return 1;
- } while ((*sn1 != '\0') && sn1++ && sn2++);
+ } while ((*name1 != '\0') && name1++ && name2++);
return 0;
}
diff --git a/libpurple/protocols/qq/ChangeLog b/libpurple/protocols/qq/ChangeLog
index 241f449dc6..cb6d7a1877 100644
--- a/libpurple/protocols/qq/ChangeLog
+++ b/libpurple/protocols/qq/ChangeLog
@@ -1,3 +1,6 @@
+2009.04.23 - flos <lonicerae(at)gmail.com>
+ * Fixed a bug of updating buddy who is not in user's buddy list
+
2009.02.25 - flos <lonicerae(at)gmail.com>
* Changed text 'ZipCode' to 'Postal Code'
diff --git a/libpurple/protocols/qq/buddy_info.c b/libpurple/protocols/qq/buddy_info.c
index 5342907e02..b881f173af 100644
--- a/libpurple/protocols/qq/buddy_info.c
+++ b/libpurple/protocols/qq/buddy_info.c
@@ -191,7 +191,7 @@ static void info_display_only(PurpleConnection *gc, gchar **segments)
}
switch (field_infos[index].type) {
case QQ_FIELD_BOOL:
- purple_notify_user_info_add_pair(user_info, field_infos[index].text,
+ purple_notify_user_info_add_pair(user_info, _(field_infos[index].text),
strtol(segments[index], NULL, 10) ? _("True") : _("False"));
break;
case QQ_FIELD_CHOICE:
@@ -200,7 +200,7 @@ static void info_display_only(PurpleConnection *gc, gchar **segments)
choice_num = 0;
}
- purple_notify_user_info_add_pair(user_info, field_infos[index].text, field_infos[index].choice[choice_num]);
+ purple_notify_user_info_add_pair(user_info, _(field_infos[index].text), field_infos[index].choice[choice_num]);
break;
case QQ_FIELD_LABEL:
case QQ_FIELD_STRING:
@@ -208,7 +208,7 @@ static void info_display_only(PurpleConnection *gc, gchar **segments)
default:
if (strlen(segments[index]) != 0) {
utf8_value = qq_to_utf8(segments[index], QQ_CHARSET_DEFAULT);
- purple_notify_user_info_add_pair(user_info, field_infos[index].text, utf8_value);
+ purple_notify_user_info_add_pair(user_info, _(field_infos[index].text), utf8_value);
g_free(utf8_value);
}
break;
@@ -348,18 +348,18 @@ static void field_request_new(PurpleRequestFieldGroup *group, gint index, gchar
utf8_value = qq_to_utf8(segments[index], QQ_CHARSET_DEFAULT);
if (field_infos[index].type == QQ_FIELD_STRING) {
field = purple_request_field_string_new(
- field_infos[index].id, field_infos[index].text, utf8_value, FALSE);
+ field_infos[index].id, _(field_infos[index].text), utf8_value, FALSE);
} else {
field = purple_request_field_string_new(
- field_infos[index].id, field_infos[index].text, utf8_value, TRUE);
+ field_infos[index].id, _(field_infos[index].text), utf8_value, TRUE);
}
purple_request_field_group_add_field(group, field);
g_free(utf8_value);
break;
case QQ_FIELD_BOOL:
field = purple_request_field_bool_new(
- field_infos[index].id, field_infos[index].text,
- strtol(segments[index], NULL, 10) ? TRUE : FALSE);
+ field_infos[index].id, _(field_infos[index].text),
+ strtol(segments[index], NULL, 10) ? TRUE : FALSE);
purple_request_field_group_add_field(group, field);
break;
case QQ_FIELD_CHOICE:
@@ -374,7 +374,7 @@ static void field_request_new(PurpleRequestFieldGroup *group, gint index, gchar
}
}
field = purple_request_field_choice_new(
- field_infos[index].id, field_infos[index].text, choice_num);
+ field_infos[index].id, _(field_infos[index].text), choice_num);
for (i = 0; i < field_infos[index].choice_size; i++) {
purple_request_field_choice_add(field, field_infos[index].choice[i]);
}
@@ -606,21 +606,21 @@ void qq_update_buddy_icon(PurpleAccount *account, const gchar *who, gint face)
/* after getting info or modify myself, refresh the buddy list accordingly */
static void update_buddy_info(PurpleConnection *gc, gchar **segments)
{
- PurpleBuddy *buddy;
- qq_data *qd;
- qq_buddy_data *bd;
+ PurpleBuddy *buddy = NULL;
+ qq_data *qd = NULL;
+ qq_buddy_data *bd = NULL;
guint32 uid;
gchar *who;
gchar *alias_utf8;
- PurpleAccount *account = purple_connection_get_account(gc);
- qd = (qq_data *) gc->proto_data;
+ PurpleAccount *account = purple_connection_get_account(gc);
+ qd = (qq_data *)purple_connection_get_protocol_data(gc);
uid = strtoul(segments[QQ_INFO_UID], NULL, 10);
who = uid_to_purple_name(uid);
-
qq_filter_str(segments[QQ_INFO_NICK]);
alias_utf8 = qq_to_utf8(segments[QQ_INFO_NICK], QQ_CHARSET_DEFAULT);
+
if (uid == qd->uid) { /* it is me */
purple_debug_info("QQ", "Got my info\n");
qd->my_icon = strtol(segments[QQ_INFO_FACE], NULL, 10);
@@ -631,20 +631,24 @@ static void update_buddy_info(PurpleConnection *gc, gchar **segments)
buddy = qq_buddy_find_or_new(gc, uid);
} else {
buddy = purple_find_buddy(gc->account, who);
+ /* purple_debug_info("QQ", "buddy=%p\n", (void*)buddy); */
}
- if (buddy == NULL || buddy->proto_data == NULL) {
+ /* if the buddy is null, the api will catch it and return null here */
+ bd = purple_buddy_get_protocol_data(buddy);
+ /* purple_debug_info("QQ", "bd=%p\n", (void*)bd); */
+
+ if (bd == NULL || buddy == NULL) {
g_free(who);
g_free(alias_utf8);
return;
}
/* update buddy list (including myself, if myself is the buddy) */
- bd = (qq_buddy_data *)buddy->proto_data;
-
bd->age = strtol(segments[QQ_INFO_AGE], NULL, 10);
bd->gender = strtol(segments[QQ_INFO_GENDER], NULL, 10);
bd->face = strtol(segments[QQ_INFO_FACE], NULL, 10);
+
if (alias_utf8 != NULL) {
if (bd->nickname) g_free(bd->nickname);
bd->nickname = g_strdup(alias_utf8);
@@ -770,8 +774,7 @@ void qq_request_get_buddies_level(PurpleConnection *gc, guint32 update_class)
for (it = buddies; it; it = it->next) {
buddy = it->data;
if (buddy == NULL) continue;
- if (buddy->proto_data == NULL) continue;
- bd = (qq_buddy_data *)buddy->proto_data;
+ if ((bd = purple_buddy_get_protocol_data(buddy)) == NULL) continue;
if (bd->uid == 0) continue; /* keep me as end of packet*/
if (bd->uid == qd->uid) continue;
bytes += qq_put32(buf + bytes, bd->uid);
diff --git a/libpurple/protocols/qq/buddy_list.c b/libpurple/protocols/qq/buddy_list.c
index 2d8c5a1d32..a1712f90a9 100644
--- a/libpurple/protocols/qq/buddy_list.c
+++ b/libpurple/protocols/qq/buddy_list.c
@@ -47,7 +47,6 @@
#define QQ_GET_ONLINE_BUDDY_03 0x03 /* unknown function */
typedef struct _qq_buddy_online {
- qq_buddy_status bs;
guint16 unknown1;
guint8 ext_flag;
guint8 comm_flag;
@@ -233,7 +232,7 @@ guint8 qq_process_get_buddies_online(guint8 *data, gint data_len, PurpleConnecti
/* create no-auth buddy */
buddy = qq_buddy_new(gc, bs.uid);
}
- bd = (buddy == NULL) ? NULL : (qq_buddy_data *)buddy->proto_data;
+ bd = (buddy == NULL) ? NULL : (qq_buddy_data *)purple_buddy_get_protocol_data(buddy);
if (bd == NULL) {
purple_debug_error("QQ",
"Got an online buddy %u, but not in my buddy list\n", bs.uid);
@@ -335,7 +334,7 @@ guint16 qq_process_get_buddies(guint8 *data, gint data_len, PurpleConnection *gc
#endif
buddy = qq_buddy_find_or_new(gc, bd.uid);
- if (buddy == NULL || buddy->proto_data == NULL) {
+ if (buddy == NULL || purple_buddy_get_protocol_data(buddy) == NULL) {
g_free(bd.nickname);
continue;
}
@@ -343,7 +342,7 @@ guint16 qq_process_get_buddies(guint8 *data, gint data_len, PurpleConnection *gc
bd.last_update = time(NULL);
qq_update_buddy_status(gc, bd.uid, bd.status, bd.comm_flag);
- g_memmove(buddy->proto_data, &bd, sizeof(qq_buddy_data));
+ g_memmove(purple_buddy_get_protocol_data(buddy), &bd, sizeof(qq_buddy_data));
/* nickname has been copy to buddy_data do not free
g_free(bd.nickname);
*/
@@ -570,7 +569,7 @@ void qq_process_buddy_change_status(guint8 *data, gint data_len, PurpleConnectio
/* create no-auth buddy */
buddy = qq_buddy_new(gc, bs.uid);
}
- bd = (buddy == NULL) ? NULL : (qq_buddy_data *) buddy->proto_data;
+ bd = (buddy == NULL) ? NULL : (qq_buddy_data *)purple_buddy_get_protocol_data(buddy);
if (bd == NULL) {
purple_debug_warning("QQ", "Got status of no-auth buddy %u\n", bs.uid);
return;
@@ -662,9 +661,10 @@ void qq_update_buddyies_status(PurpleConnection *gc)
for (it = buddies; it; it = it->next) {
buddy = it->data;
if (buddy == NULL) continue;
- if (buddy->proto_data == NULL) continue;
- bd = (qq_buddy_data *)buddy->proto_data;
+ bd = purple_buddy_get_protocol_data(buddy);
+ if (bd == NULL) continue;
+
if (bd->uid == 0) continue;
if (bd->uid == qd->uid) continue; /* my status is always online in my buddy list */
if (tm_limit < bd->last_update) continue;
@@ -684,16 +684,20 @@ void qq_buddy_data_free_all(PurpleConnection *gc)
GSList *buddies, *it;
gint count = 0;
- qd = (qq_data *) (gc->proto_data);
+ qd = (qq_data *)purple_connection_get_protocol_data(gc);
buddies = purple_find_buddies(purple_connection_get_account(gc), NULL);
for (it = buddies; it; it = it->next) {
+ qq_buddy_data *qbd = NULL;
+
buddy = it->data;
if (buddy == NULL) continue;
- if (buddy->proto_data == NULL) continue;
- qq_buddy_data_free(buddy->proto_data);
- buddy->proto_data = NULL;
+ qbd = purple_buddy_get_protocol_data(buddy);
+ if (qbd == NULL) continue;
+
+ qq_buddy_data_free(qbd);
+ purple_buddy_set_protocol_data(buddy, NULL);
count++;
}
diff --git a/libpurple/protocols/qq/buddy_opt.c b/libpurple/protocols/qq/buddy_opt.c
index 92d9ebceb3..d2527aa285 100644
--- a/libpurple/protocols/qq/buddy_opt.c
+++ b/libpurple/protocols/qq/buddy_opt.c
@@ -101,6 +101,7 @@ qq_buddy_data *qq_buddy_data_find(PurpleConnection *gc, guint32 uid)
{
gchar *who;
PurpleBuddy *buddy;
+ qq_buddy_data *bd;
g_return_val_if_fail(gc != NULL, NULL);
@@ -113,11 +114,12 @@ qq_buddy_data *qq_buddy_data_find(PurpleConnection *gc, guint32 uid)
purple_debug_error("QQ", "Can not find purple buddy of %u\n", uid);
return NULL;
}
- if (buddy->proto_data == NULL) {
+
+ if ((bd = purple_buddy_get_protocol_data(buddy)) == NULL) {
purple_debug_error("QQ", "Can not find buddy data of %u\n", uid);
return NULL;
}
- return (qq_buddy_data *)buddy->proto_data;
+ return bd;
}
void qq_buddy_data_free(qq_buddy_data *bd)
@@ -149,7 +151,7 @@ PurpleBuddy *qq_buddy_new(PurpleConnection *gc, guint32 uid)
purple_debug_info("QQ", "Add new purple buddy: [%u]\n", uid);
who = uid_to_purple_name(uid);
buddy = purple_buddy_new(gc->account, who, NULL); /* alias is NULL */
- buddy->proto_data = NULL;
+ purple_buddy_set_protocol_data(buddy, NULL);
g_free(who);
@@ -162,11 +164,14 @@ PurpleBuddy *qq_buddy_new(PurpleConnection *gc, guint32 uid)
static void qq_buddy_free(PurpleBuddy *buddy)
{
+ qq_buddy_data *bd;
+
g_return_if_fail(buddy);
- if (buddy->proto_data) {
- qq_buddy_data_free(buddy->proto_data);
+
+ if ((bd = purple_buddy_get_protocol_data(buddy)) != NULL) {
+ qq_buddy_data_free(bd);
}
- buddy->proto_data = NULL;
+ purple_buddy_set_protocol_data(buddy, NULL);
purple_blist_remove_buddy(buddy);
}
@@ -186,6 +191,7 @@ PurpleBuddy *qq_buddy_find(PurpleConnection *gc, guint32 uid)
PurpleBuddy *qq_buddy_find_or_new(PurpleConnection *gc, guint32 uid)
{
PurpleBuddy *buddy;
+ qq_buddy_data *bd;
g_return_val_if_fail(gc->account != NULL && uid != 0, NULL);
@@ -197,11 +203,12 @@ PurpleBuddy *qq_buddy_find_or_new(PurpleConnection *gc, guint32 uid)
}
}
- if (buddy->proto_data != NULL) {
+ if (purple_buddy_get_protocol_data(buddy) != NULL) {
return buddy;
}
- buddy->proto_data = qq_buddy_data_new(uid);
+ bd = qq_buddy_data_new(uid);
+ purple_buddy_set_protocol_data(buddy, bd);
return buddy;
}
@@ -691,7 +698,7 @@ void qq_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
if (!qd->is_login)
return; /* IMPORTANT ! */
- uid = purple_name_to_uid(buddy->name);
+ uid = purple_name_to_uid(purple_buddy_get_name(buddy));
if (uid > 0) {
if (qd->client_version > 2005) {
request_add_buddy_no_auth_ex(gc, uid);
@@ -782,6 +789,7 @@ void qq_process_add_buddy_no_auth(PurpleConnection *gc,
gchar **segments;
gchar *dest_uid, *reply;
PurpleBuddy *buddy;
+ qq_buddy_data *bd;
g_return_if_fail(data != NULL && data_len != 0);
g_return_if_fail(uid != 0);
@@ -826,10 +834,10 @@ void qq_process_add_buddy_no_auth(PurpleConnection *gc,
if (buddy == NULL) {
buddy = qq_buddy_new(gc, uid);
}
- if (buddy != NULL && buddy->proto_data != NULL) {
+ if (buddy != NULL && (bd = purple_buddy_get_protocol_data(buddy)) != NULL) {
/* Not authorized now, free buddy data */
- qq_buddy_data_free(buddy->proto_data);
- buddy->proto_data = NULL;
+ qq_buddy_data_free(bd);
+ purple_buddy_set_protocol_data(buddy, NULL);
}
add_buddy_authorize_input(gc, uid, NULL, 0);
@@ -905,6 +913,7 @@ void qq_process_add_buddy_no_auth_ex(PurpleConnection *gc,
void qq_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
{
qq_data *qd;
+ qq_buddy_data *bd;
guint32 uid;
g_return_if_fail(gc != NULL && gc->proto_data != NULL);
@@ -914,7 +923,7 @@ void qq_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *grou
if (!qd->is_login)
return;
- uid = purple_name_to_uid(buddy->name);
+ uid = purple_name_to_uid(purple_buddy_get_name(buddy));
if (uid > 0 && uid != qd->uid) {
if (qd->client_version > 2005) {
qq_request_auth_code(gc, QQ_AUTH_INFO_BUDDY, QQ_AUTH_INFO_REMOVE_BUDDY, uid);
@@ -924,11 +933,11 @@ void qq_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *grou
}
}
- if (buddy->proto_data) {
- qq_buddy_data_free(buddy->proto_data);
- buddy->proto_data = NULL;
+ if ((bd = purple_buddy_get_protocol_data(buddy)) != NULL) {
+ qq_buddy_data_free(bd);
+ purple_buddy_set_protocol_data(buddy, NULL);
} else {
- purple_debug_warning("QQ", "Empty buddy data of %s\n", buddy->name);
+ purple_debug_warning("QQ", "Empty buddy data of %s\n", purple_buddy_get_name(buddy));
}
/* Do not call purple_blist_remove_buddy,
@@ -1216,6 +1225,7 @@ static void server_buddy_rejected_me(PurpleConnection *gc, gchar *from, gchar *t
gint bytes;
gchar **segments;
gchar *primary, *secondary;
+ qq_buddy_data *bd;
g_return_if_fail(from != NULL && to != NULL);
@@ -1255,10 +1265,10 @@ static void server_buddy_rejected_me(PurpleConnection *gc, gchar *from, gchar *t
g_return_if_fail(uid != 0);
buddy = qq_buddy_find(gc, uid);
- if (buddy != NULL && buddy->proto_data != NULL) {
+ if (buddy != NULL && (bd = purple_buddy_get_protocol_data(buddy)) != NULL) {
/* Not authorized now, free buddy data */
- qq_buddy_data_free(buddy->proto_data);
- buddy->proto_data = NULL;
+ qq_buddy_data_free(bd);
+ purple_buddy_set_protocol_data(buddy, NULL);
}
}
diff --git a/libpurple/protocols/qq/group_internal.c b/libpurple/protocols/qq/group_internal.c
index 4176ec0b2b..e8f0645f69 100644
--- a/libpurple/protocols/qq/group_internal.c
+++ b/libpurple/protocols/qq/group_internal.c
@@ -103,16 +103,21 @@ static void room_data_free(qq_room_data *rmd)
void qq_room_update_chat_info(PurpleChat *chat, qq_room_data *rmd)
{
+ GHashTable *components;
+
if (rmd->title_utf8 != NULL && strlen(rmd->title_utf8) > 0) {
purple_blist_alias_chat(chat, rmd->title_utf8);
}
- g_hash_table_replace(chat->components,
+
+ components = purple_chat_get_components(chat);
+
+ g_hash_table_replace(components,
g_strdup(QQ_ROOM_KEY_INTERNAL_ID),
g_strdup_printf("%u", rmd->id));
- g_hash_table_replace(chat->components,
+ g_hash_table_replace(components,
g_strdup(QQ_ROOM_KEY_EXTERNAL_ID),
g_strdup_printf("%u", rmd->ext_id));
- g_hash_table_replace(chat->components,
+ g_hash_table_replace(components,
g_strdup(QQ_ROOM_KEY_TITLE_UTF8), g_strdup(rmd->title_utf8));
}
@@ -251,11 +256,13 @@ qq_buddy_data *qq_room_buddy_find_or_new(PurpleConnection *gc, qq_room_data *rmd
member->uid = member_uid;
buddy = purple_find_buddy(purple_connection_get_account(gc), uid_to_purple_name(member_uid));
if (buddy != NULL) {
- bd = (qq_buddy_data *) buddy->proto_data;
+ const gchar *alias = NULL;
+
+ bd = purple_buddy_get_protocol_data(buddy);
if (bd != NULL && bd->nickname != NULL)
member->nickname = g_strdup(bd->nickname);
- else if (buddy->alias != NULL)
- member->nickname = g_strdup(buddy->alias);
+ else if ((alias = purple_buddy_get_alias(buddy)) != NULL)
+ member->nickname = g_strdup(alias);
}
rmd->members = g_list_append(rmd->members, member);
}
@@ -384,16 +391,19 @@ void qq_room_data_initial(PurpleConnection *gc)
}
count = 0;
- for (node = ((PurpleBlistNode *) purple_group)->child; node != NULL; node = node->next) {
+ for (node = purple_blist_node_get_first_child((PurpleBlistNode *)purple_group);
+ node != NULL;
+ node = purple_blist_node_get_sibling_next(node))
+ {
if ( !PURPLE_BLIST_NODE_IS_CHAT(node)) {
continue;
}
/* got one */
chat = (PurpleChat *) node;
- if (account != chat->account) /* not qq account*/
+ if (account != purple_chat_get_account(chat)) /* not qq account*/
continue;
- rmd = room_data_new_by_hashtable(gc, chat->components);
+ rmd = room_data_new_by_hashtable(gc, purple_chat_get_components(chat));
qd->groups = g_list_append(qd->groups, rmd);
count++;
}
diff --git a/libpurple/protocols/qq/im.c b/libpurple/protocols/qq/im.c
index beafb264af..c4363bf826 100644
--- a/libpurple/protocols/qq/im.c
+++ b/libpurple/protocols/qq/im.c
@@ -788,7 +788,7 @@ static void process_im_text(PurpleConnection *gc, guint8 *data, gint len, qq_im_
/* create no-auth buddy */
buddy = qq_buddy_new(gc, im_header->uid_from);
}
- bd = (buddy == NULL) ? NULL : (qq_buddy_data *) buddy->proto_data;
+ bd = (buddy == NULL) ? NULL : purple_buddy_get_protocol_data(buddy);
if (bd != NULL) {
bd->client_tag = im_header->version_from;
bd->face = im_text.sender_icon;
@@ -889,7 +889,7 @@ static void process_extend_im_text(PurpleConnection *gc, guint8 *data, gint len,
/* create no-auth buddy */
buddy = qq_buddy_new(gc, im_header->uid_from);
}
- bd = (buddy == NULL) ? NULL : (qq_buddy_data *) buddy->proto_data;
+ bd = (buddy == NULL) ? NULL : purple_buddy_get_protocol_data(buddy);
if (bd != NULL) {
bd->client_tag = im_header->version_from;
bd->face = im_text.sender_icon;
diff --git a/libpurple/protocols/qq/qq.c b/libpurple/protocols/qq/qq.c
index 9dbb11eeb1..72d28a0e82 100644
--- a/libpurple/protocols/qq/qq.c
+++ b/libpurple/protocols/qq/qq.c
@@ -248,7 +248,7 @@ static gchar *qq_status_text(PurpleBuddy *b)
qq_buddy_data *bd;
GString *status;
- bd = (qq_buddy_data *) b->proto_data;
+ bd = purple_buddy_get_protocol_data(b);
if (bd == NULL)
return NULL;
@@ -291,7 +291,7 @@ static void qq_tooltip_text(PurpleBuddy *b, PurpleNotifyUserInfo *user_info, gbo
g_return_if_fail(b != NULL);
- bd = (qq_buddy_data *) b->proto_data;
+ bd = purple_buddy_get_protocol_data(b);
if (bd == NULL)
return;
@@ -382,11 +382,12 @@ static const char *qq_list_emblem(PurpleBuddy *b)
qq_data *qd;
qq_buddy_data *buddy;
- if (!b || !(account = b->account) ||
- !(gc = purple_account_get_connection(account)) || !(qd = gc->proto_data))
+ if (!b || !(account = purple_buddy_get_account(b)) ||
+ !(gc = purple_account_get_connection(account)) ||
+ !(qd = purple_connection_get_protocol_data(gc)))
return NULL;
- buddy = (qq_buddy_data *)b->proto_data;
+ buddy = purple_buddy_get_protocol_data(b);
if (!buddy) {
return "not-authorized";
}
@@ -673,8 +674,8 @@ static void action_about_openq(PurplePluginAction *action)
g_string_append(info, "wd<br>\n");
g_string_append(info, "x6719620<br>\n");
g_string_append(info, "netelk<br>\n");
- g_string_append(info, "and more, please let me know... thank you!<br>\n");
- g_string_append(info, "<br>\n");
+ g_string_append(info, _("and more, please let me know... thank you!))"));
+ g_string_append(info, "<br>\n<br>\n");
g_string_append(info, _("<p><i>And, all the boys in the backroom...</i><br>\n"));
g_string_append(info, _("<i>Feel free to join us!</i> :)"));
g_string_append(info, "</body></html>");
@@ -708,8 +709,9 @@ static void action_about_openq(PurplePluginAction *action)
static void action_chat_quit(PurpleBlistNode * node)
{
PurpleChat *chat = (PurpleChat *)node;
- PurpleConnection *gc = purple_account_get_connection(chat->account);
- GHashTable *components = chat -> components;
+ PurpleAccount *account = purple_chat_get_account(chat);
+ PurpleConnection *gc = purple_account_get_connection(account);
+ GHashTable *components = purple_chat_get_components(chat);
gchar *num_str;
guint32 room_id;
@@ -727,8 +729,9 @@ static void action_chat_quit(PurpleBlistNode * node)
static void action_chat_get_info(PurpleBlistNode * node)
{
PurpleChat *chat = (PurpleChat *)node;
- PurpleConnection *gc = purple_account_get_connection(chat->account);
- GHashTable *components = chat -> components;
+ PurpleAccount *account = purple_chat_get_account(chat);
+ PurpleConnection *gc = purple_account_get_connection(account);
+ GHashTable *components = purple_chat_get_components(chat);
gchar *num_str;
guint32 room_id;
@@ -815,7 +818,7 @@ static void qq_add_buddy_from_menu_cb(PurpleBlistNode *node, gpointer data)
g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
buddy = (PurpleBuddy *) node;
- gc = purple_account_get_connection(buddy->account);
+ gc = purple_account_get_connection(purple_buddy_get_account(buddy));
qq_add_buddy(gc, buddy, NULL);
}
@@ -830,12 +833,12 @@ static void qq_modify_buddy_memo_from_menu_cb(PurpleBlistNode *node, gpointer da
g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
buddy = (PurpleBuddy *)node;
- g_return_if_fail(NULL != buddy && NULL != buddy->proto_data);
+ g_return_if_fail(NULL != buddy);
- gc = purple_account_get_connection(buddy->account);
+ gc = purple_account_get_connection(purple_buddy_get_account(buddy));
g_return_if_fail(NULL != gc);
- bd = (qq_buddy_data *)buddy->proto_data;
+ bd = (qq_buddy_data *)purple_buddy_get_protocol_data(buddy);
g_return_if_fail(NULL != bd);
bd_uid = bd->uid;
@@ -849,7 +852,7 @@ static GList *qq_buddy_menu(PurpleBuddy *buddy)
{
GList *m = NULL;
PurpleMenuAction *act;
- qq_buddy_data *bd = (qq_buddy_data *)buddy->proto_data;
+ qq_buddy_data *bd = purple_buddy_get_protocol_data(buddy);
if (bd == NULL) {
act = purple_menu_action_new(_("Add Buddy"),
@@ -1032,7 +1035,9 @@ static PurplePluginProtocolInfo prpl_info =
NULL, /* get attention_types */
sizeof(PurplePluginProtocolInfo), /* struct_size */
- NULL
+ NULL, /* get_account_text_table */
+ NULL, /* initiate_media */
+ NULL /* can_do_media */
};
static PurplePluginInfo info = {
diff --git a/libpurple/protocols/qq/send_file.c b/libpurple/protocols/qq/send_file.c
index 85441d97e3..38d9504269 100644
--- a/libpurple/protocols/qq/send_file.c
+++ b/libpurple/protocols/qq/send_file.c
@@ -808,7 +808,7 @@ void qq_process_recv_file_request(guint8 *data, gint data_len, guint32 sender_ui
"Received a FACE ip detect from %d, so he/she must be online :)\n", sender_uid);
b = purple_find_buddy(gc->account, sender_name);
- bd = (b == NULL) ? NULL : (qq_buddy_data *) b->proto_data;
+ bd = (b == NULL) ? NULL : purple_buddy_get_protocol_data(b);
if (bd) {
if(0 != info->remote_real_ip) {
g_memmove(&(bd->ip), &info->remote_real_ip, sizeof(bd->ip));
diff --git a/libpurple/protocols/sametime/sametime.c b/libpurple/protocols/sametime/sametime.c
index dff89f3d7c..e25fdbc7e0 100644
--- a/libpurple/protocols/sametime/sametime.c
+++ b/libpurple/protocols/sametime/sametime.c
@@ -28,8 +28,6 @@
/* glib includes */
#include <glib.h>
-#include <glib/ghash.h>
-#include <glib/glist.h>
/* purple includes */
#include "internal.h"
@@ -663,7 +661,6 @@ static void blist_export(PurpleConnection *gc, struct mwSametimeList *stlist) {
*/
PurpleAccount *acct;
- PurpleBuddyList *blist;
PurpleBlistNode *gn, *cn, *bn;
PurpleGroup *grp;
PurpleBuddy *bdy;
@@ -674,10 +671,8 @@ static void blist_export(PurpleConnection *gc, struct mwSametimeList *stlist) {
acct = purple_connection_get_account(gc);
g_return_if_fail(acct != NULL);
- blist = purple_get_blist();
- g_return_if_fail(blist != NULL);
-
- for(gn = blist->root; gn; gn = gn->next) {
+ for(gn = purple_blist_get_root(); gn;
+ gn = purple_blist_node_get_sibling_next(gn)) {
const char *owner;
const char *gname;
enum mwSametimeGroupType gtype;
@@ -702,13 +697,13 @@ static void blist_export(PurpleConnection *gc, struct mwSametimeList *stlist) {
/* the group's actual name may be different from the purple group's
name. Find whichever is there */
gname = purple_blist_node_get_string(gn, GROUP_KEY_NAME);
- if(! gname) gname = grp->name;
+ if(! gname) gname = purple_group_get_name(grp);
/* we save this, but never actually honor it */
gopen = ! purple_blist_node_get_bool(gn, GROUP_KEY_COLLAPSED);
stg = mwSametimeGroup_new(stlist, gtype, gname);
- mwSametimeGroup_setAlias(stg, grp->name);
+ mwSametimeGroup_setAlias(stg, purple_group_get_name(grp));
mwSametimeGroup_setOpen(stg, gopen);
/* don't attempt to put buddies in a dynamic group, it breaks
@@ -716,27 +711,31 @@ static void blist_export(PurpleConnection *gc, struct mwSametimeList *stlist) {
if(gtype == mwSametimeGroup_DYNAMIC)
continue;
- for(cn = gn->child; cn; cn = cn->next) {
+ for(cn = purple_blist_node_get_first_child(gn);
+ cn;
+ cn = purple_blist_node_get_sibling_next(cn)) {
if(! PURPLE_BLIST_NODE_IS_CONTACT(cn)) continue;
- for(bn = cn->child; bn; bn = bn->next) {
+ for(bn = purple_blist_node_get_first_child(cn);
+ bn;
+ bn = purple_blist_node_get_sibling_next(bn)) {
if(! PURPLE_BLIST_NODE_IS_BUDDY(bn)) continue;
if(! PURPLE_BLIST_NODE_SHOULD_SAVE(bn)) continue;
bdy = (PurpleBuddy *) bn;
- if(bdy->account == acct) {
+ if(purple_buddy_get_account(bdy) == acct) {
struct mwSametimeUser *stu;
enum mwSametimeUserType utype;
- idb.user = bdy->name;
+ idb.user = (char *)purple_buddy_get_name(bdy);
utype = purple_blist_node_get_int(bn, BUDDY_KEY_TYPE);
if(! utype) utype = mwSametimeUser_NORMAL;
stu = mwSametimeUser_new(stg, utype, &idb);
- mwSametimeUser_setShortName(stu, bdy->server_alias);
- mwSametimeUser_setAlias(stu, bdy->alias);
+ mwSametimeUser_setShortName(stu, purple_buddy_get_server_alias(bdy));
+ mwSametimeUser_setAlias(stu, purple_buddy_get_local_buddy_alias(bdy));
}
}
}
@@ -816,7 +815,7 @@ static void blist_schedule(struct mwPurplePluginData *pd) {
static gboolean buddy_is_external(PurpleBuddy *b) {
g_return_val_if_fail(b != NULL, FALSE);
- return purple_str_has_prefix(b->name, "@E ");
+ return purple_str_has_prefix(purple_buddy_get_name(b), "@E ");
}
@@ -825,7 +824,7 @@ static gboolean buddy_is_external(PurpleBuddy *b) {
static void buddy_add(struct mwPurplePluginData *pd,
PurpleBuddy *buddy) {
- struct mwAwareIdBlock idb = { mwAware_USER, (char *) buddy->name, NULL };
+ struct mwAwareIdBlock idb = { mwAware_USER, (char *) purple_buddy_get_name(buddy), NULL };
struct mwAwareList *list;
PurpleGroup *group;
@@ -890,7 +889,7 @@ static void group_add(struct mwPurplePluginData *pd,
GList *add;
n = purple_blist_node_get_string((PurpleBlistNode *) group, GROUP_KEY_NAME);
- if(! n) n = group->name;
+ if(! n) n = purple_group_get_name(group);
idb.user = (char *) n;
add = g_list_prepend(NULL, &idb);
@@ -926,7 +925,8 @@ static PurpleGroup *group_ensure(PurpleConnection *gc,
NSTR(name), NSTR(alias));
/* first attempt at finding the group, by the name key */
- for(gn = blist->root; gn; gn = gn->next) {
+ for(gn = purple_blist_get_root(); gn;
+ gn = purple_blist_node_get_sibling_next(gn)) {
const char *n, *o;
if(! PURPLE_BLIST_NODE_IS_GROUP(gn)) continue;
n = purple_blist_node_get_string(gn, GROUP_KEY_NAME);
@@ -1006,23 +1006,27 @@ static void group_clear(PurpleGroup *group, PurpleAccount *acct, gboolean del) {
g_return_if_fail(group != NULL);
- DEBUG_INFO("clearing members from pruned group %s\n", NSTR(group->name));
+ DEBUG_INFO("clearing members from pruned group %s\n", NSTR(purple_group_get_name(group)));
gc = purple_account_get_connection(acct);
g_return_if_fail(gc != NULL);
gn = (PurpleBlistNode *) group;
- for(cn = gn->child; cn; cn = cn->next) {
+ for(cn = purple_blist_node_get_first_child(gn);
+ cn;
+ cn = purple_blist_node_get_sibling_next(cn)) {
if(! PURPLE_BLIST_NODE_IS_CONTACT(cn)) continue;
- for(bn = cn->child; bn; bn = bn->next) {
+ for(bn = purple_blist_node_get_first_child(cn);
+ bn;
+ bn = purple_blist_node_get_sibling_next(bn)) {
PurpleBuddy *gb = (PurpleBuddy *) bn;
if(! PURPLE_BLIST_NODE_IS_BUDDY(bn)) continue;
- if(gb->account == acct) {
- DEBUG_INFO("clearing %s from group\n", NSTR(gb->name));
+ if(purple_buddy_get_account(gb) == acct) {
+ DEBUG_INFO("clearing %s from group\n", NSTR(purple_buddy_get_name(gb)));
prune = g_list_prepend(prune, gb);
}
}
@@ -1059,7 +1063,7 @@ static void group_prune(PurpleConnection *gc, PurpleGroup *group,
g_return_if_fail(group != NULL);
- DEBUG_INFO("pruning membership of group %s\n", NSTR(group->name));
+ DEBUG_INFO("pruning membership of group %s\n", NSTR(purple_group_get_name(group)));
acct = purple_connection_get_account(gc);
g_return_if_fail(acct != NULL);
@@ -1078,18 +1082,22 @@ static void group_prune(PurpleConnection *gc, PurpleGroup *group,
gn = (PurpleBlistNode *) group;
- for(cn = gn->child; cn; cn = cn->next) {
+ for(cn = purple_blist_node_get_first_child(gn);
+ cn;
+ cn = purple_blist_node_get_sibling_next(cn)) {
if(! PURPLE_BLIST_NODE_IS_CONTACT(cn)) continue;
- for(bn = cn->child; bn; bn = bn->next) {
+ for(bn = purple_blist_node_get_first_child(cn);
+ bn;
+ bn = purple_blist_node_get_sibling_next(bn)) {
PurpleBuddy *gb = (PurpleBuddy *) bn;
if(! PURPLE_BLIST_NODE_IS_BUDDY(bn)) continue;
/* if the account is correct and they're not in our table, mark
them for pruning */
- if(gb->account == acct && !g_hash_table_lookup(stusers, gb->name)) {
- DEBUG_INFO("marking %s for pruning\n", NSTR(gb->name));
+ if(purple_buddy_get_account(gb) == acct && !g_hash_table_lookup(stusers, purple_buddy_get_name(gb))) {
+ DEBUG_INFO("marking %s for pruning\n", NSTR(purple_buddy_get_name(gb)));
prune = g_list_prepend(prune, gb);
}
}
@@ -1145,7 +1153,8 @@ static void blist_sync(PurpleConnection *gc, struct mwSametimeList *stlist) {
g_list_free(gtl);
/* find all groups which should be pruned from the local list */
- for(gn = blist->root; gn; gn = gn->next) {
+ for(gn = purple_blist_get_root(); gn;
+ gn = purple_blist_node_get_sibling_next(gn)) {
PurpleGroup *grp = (PurpleGroup *) gn;
const char *gname, *owner;
struct mwSametimeGroup *stgrp;
@@ -1164,12 +1173,12 @@ static void blist_sync(PurpleConnection *gc, struct mwSametimeList *stlist) {
/* we actually are synching by this key as opposed to the group
title, which can be different things in the st list */
gname = purple_blist_node_get_string(gn, GROUP_KEY_NAME);
- if(! gname) gname = grp->name;
+ if(! gname) gname = purple_group_get_name(grp);
stgrp = g_hash_table_lookup(stgroups, gname);
if(! stgrp) {
/* remove the whole group */
- DEBUG_INFO("marking group %s for pruning\n", grp->name);
+ DEBUG_INFO("marking group %s for pruning\n", purple_group_get_name(grp));
g_prune = g_list_prepend(g_prune, grp);
} else {
@@ -1284,6 +1293,7 @@ static void blist_menu_nab(PurpleBlistNode *node, gpointer data) {
GString *str;
char *tmp;
+ const char *gname;
g_return_if_fail(pd != NULL);
@@ -1295,11 +1305,12 @@ static void blist_menu_nab(PurpleBlistNode *node, gpointer data) {
str = g_string_new(NULL);
tmp = (char *) purple_blist_node_get_string(node, GROUP_KEY_NAME);
+ gname = purple_group_get_name(group);
- g_string_append_printf(str, _("<b>Group Title:</b> %s<br>"), group->name);
+ g_string_append_printf(str, _("<b>Group Title:</b> %s<br>"), gname);
g_string_append_printf(str, _("<b>Notes Group ID:</b> %s<br>"), tmp);
- tmp = g_strdup_printf(_("Info for Group %s"), group->name);
+ tmp = g_strdup_printf(_("Info for Group %s"), gname);
purple_notify_formatted(gc, tmp, _("Notes Address Book Information"),
NULL, str->str, NULL, NULL);
@@ -1356,19 +1367,24 @@ static void blist_init(PurpleAccount *acct) {
PurpleBlistNode *gnode, *cnode, *bnode;
GList *add_buds = NULL;
- for(gnode = purple_get_blist()->root; gnode; gnode = gnode->next) {
+ for(gnode = purple_blist_get_root(); gnode;
+ gnode = purple_blist_node_get_sibling_next(gnode)) {
if(! PURPLE_BLIST_NODE_IS_GROUP(gnode)) continue;
- for(cnode = gnode->child; cnode; cnode = cnode->next) {
+ for(cnode = purple_blist_node_get_first_child(gnode);
+ cnode;
+ cnode = purple_blist_node_get_sibling_next(cnode)) {
if(! PURPLE_BLIST_NODE_IS_CONTACT(cnode))
continue;
- for(bnode = cnode->child; bnode; bnode = bnode->next) {
+ for(bnode = purple_blist_node_get_first_child(cnode);
+ bnode;
+ bnode = purple_blist_node_get_sibling_next(bnode)) {
PurpleBuddy *b;
if(!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
continue;
-
+
b = (PurpleBuddy *)bnode;
- if(b->account == acct) {
+ if(purple_buddy_get_account(b) == acct) {
add_buds = g_list_append(add_buds, b);
}
}
@@ -1388,7 +1404,6 @@ static void services_starting(struct mwPurplePluginData *pd) {
PurpleConnection *gc;
PurpleAccount *acct;
struct mwStorageUnit *unit;
- PurpleBuddyList *blist;
PurpleBlistNode *l;
gc = pd->gc;
@@ -1399,8 +1414,8 @@ static void services_starting(struct mwPurplePluginData *pd) {
mwServiceStorage_load(pd->srvc_store, unit, fetch_blist_cb, pd, NULL);
/* find all the NAB groups and subscribe to them */
- blist = purple_get_blist();
- for(l = blist->root; l; l = l->next) {
+ for(l = purple_blist_get_root(); l;
+ l = purple_blist_node_get_sibling_next(l)) {
PurpleGroup *group = (PurpleGroup *) l;
enum mwSametimeGroupType gt;
const char *owner;
@@ -1451,7 +1466,7 @@ static void session_loginRedirect(struct mwSession *session,
if(purple_account_get_bool(account, MW_KEY_FORCE, FALSE) ||
!host || (! strcmp(current_host, host)) ||
- (purple_proxy_connect(NULL, account, host, port, connect_cb, pd) == NULL)) {
+ (purple_proxy_connect(gc, account, host, port, connect_cb, pd) == NULL)) {
/* if we're configured to force logins, or if we're being
redirected to the already configured host, or if we couldn't
@@ -3239,10 +3254,10 @@ static const char* mw_prpl_list_emblem(PurpleBuddy *b)
static char *mw_prpl_status_text(PurpleBuddy *b) {
PurpleConnection *gc;
struct mwPurplePluginData *pd;
- struct mwAwareIdBlock t = { mwAware_USER, b->name, NULL };
+ struct mwAwareIdBlock t = { mwAware_USER, (char *)purple_buddy_get_name(b), NULL };
const char *ret = NULL;
- if ((gc = purple_account_get_connection(b->account))
+ if ((gc = purple_account_get_connection(purple_buddy_get_account(b)))
&& (pd = gc->proto_data))
ret = mwServiceAware_getText(pd->srvc_aware, &t);
@@ -3299,13 +3314,13 @@ static char *user_supports_text(struct mwServiceAware *srvc, const char *who) {
static void mw_prpl_tooltip_text(PurpleBuddy *b, PurpleNotifyUserInfo *user_info, gboolean full) {
PurpleConnection *gc;
struct mwPurplePluginData *pd = NULL;
- struct mwAwareIdBlock idb = { mwAware_USER, b->name, NULL };
+ struct mwAwareIdBlock idb = { mwAware_USER, (char *)purple_buddy_get_name(b), NULL };
const char *message = NULL;
const char *status;
char *tmp;
- if ((gc = purple_account_get_connection(b->account))
+ if ((gc = purple_account_get_connection(purple_buddy_get_account(b)))
&& (pd = gc->proto_data))
message = mwServiceAware_getText(pd->srvc_aware, &idb);
@@ -3321,7 +3336,7 @@ static void mw_prpl_tooltip_text(PurpleBuddy *b, PurpleNotifyUserInfo *user_info
}
if(full && pd != NULL) {
- tmp = user_supports_text(pd->srvc_aware, b->name);
+ tmp = user_supports_text(pd->srvc_aware, purple_buddy_get_name(b));
if(tmp) {
purple_notify_user_info_add_pair(user_info, _("Supports"), tmp);
g_free(tmp);
@@ -3333,34 +3348,34 @@ static void mw_prpl_tooltip_text(PurpleBuddy *b, PurpleNotifyUserInfo *user_info
}
}
+static GList *mw_prpl_status_types(PurpleAccount *acct)
+{
+ GList *types = NULL;
+ PurpleStatusType *type;
-static GList *mw_prpl_status_types(PurpleAccount *acct) {
- GList *types = NULL;
- PurpleStatusType *type;
+ type = purple_status_type_new_with_attrs(PURPLE_STATUS_AVAILABLE,
+ MW_STATE_ACTIVE, NULL, TRUE, TRUE, FALSE,
+ MW_STATE_MESSAGE, _("Message"), purple_value_new(PURPLE_TYPE_STRING),
+ NULL);
+ types = g_list_append(types, type);
- type = purple_status_type_new(PURPLE_STATUS_AVAILABLE, MW_STATE_ACTIVE,
- NULL, TRUE);
- purple_status_type_add_attr(type, MW_STATE_MESSAGE, _("Message"),
- purple_value_new(PURPLE_TYPE_STRING));
- types = g_list_append(types, type);
+ type = purple_status_type_new_with_attrs(PURPLE_STATUS_AWAY,
+ MW_STATE_AWAY, NULL, TRUE, TRUE, FALSE,
+ MW_STATE_MESSAGE, _("Message"), purple_value_new(PURPLE_TYPE_STRING),
+ NULL);
+ types = g_list_append(types, type);
- type = purple_status_type_new(PURPLE_STATUS_AWAY, MW_STATE_AWAY,
- NULL, TRUE);
- purple_status_type_add_attr(type, MW_STATE_MESSAGE, _("Message"),
- purple_value_new(PURPLE_TYPE_STRING));
- types = g_list_append(types, type);
-
- type = purple_status_type_new(PURPLE_STATUS_UNAVAILABLE, MW_STATE_BUSY,
- _("Do Not Disturb"), TRUE);
- purple_status_type_add_attr(type, MW_STATE_MESSAGE, _("Message"),
- purple_value_new(PURPLE_TYPE_STRING));
- types = g_list_append(types, type);
-
- type = purple_status_type_new(PURPLE_STATUS_OFFLINE, MW_STATE_OFFLINE,
- NULL, TRUE);
- types = g_list_append(types, type);
+ type = purple_status_type_new_with_attrs(PURPLE_STATUS_UNAVAILABLE,
+ MW_STATE_BUSY, _("Do Not Disturb"), TRUE, TRUE, FALSE,
+ MW_STATE_MESSAGE, _("Message"), purple_value_new(PURPLE_TYPE_STRING),
+ NULL);
+ types = g_list_append(types, type);
+
+ type = purple_status_type_new_full(PURPLE_STATUS_OFFLINE,
+ MW_STATE_OFFLINE, NULL, TRUE, TRUE, FALSE);
+ types = g_list_append(types, type);
- return types;
+ return types;
}
@@ -3383,7 +3398,7 @@ static void conf_create_prompt_join(PurpleBuddy *buddy,
struct mwConference *conf;
struct mwIdBlock idb = { NULL, NULL };
- acct = buddy->account;
+ acct = purple_buddy_get_account(buddy);
gc = purple_account_get_connection(acct);
pd = gc->proto_data;
srvc = pd->srvc_conf;
@@ -3397,7 +3412,7 @@ static void conf_create_prompt_join(PurpleBuddy *buddy,
conf = mwConference_new(srvc, topic);
mwConference_open(conf);
- idb.user = buddy->name;
+ idb.user = (char *)purple_buddy_get_name(buddy);
mwConference_invite(conf, &idb, invite);
}
@@ -3417,7 +3432,7 @@ static void blist_menu_conf_create(PurpleBuddy *buddy, const char *msg) {
g_return_if_fail(buddy != NULL);
- acct = buddy->account;
+ acct = purple_buddy_get_account(buddy);
g_return_if_fail(acct != NULL);
gc = purple_account_get_connection(acct);
@@ -3437,7 +3452,7 @@ static void blist_menu_conf_create(PurpleBuddy *buddy, const char *msg) {
msgA = _("Create conference with user");
msgB = _("Please enter a topic for the new conference, and an invitation"
" message to be sent to %s");
- msg1 = g_strdup_printf(msgB, buddy->name);
+ msg1 = g_strdup_printf(msgB, purple_buddy_get_name(buddy));
purple_request_fields(gc, _("New Conference"),
msgA, msg1, fields,
@@ -3474,7 +3489,7 @@ static void conf_select_prompt_invite(PurpleBuddy *buddy,
blist_menu_conf_create(buddy, msg);
} else {
- struct mwIdBlock idb = { buddy->name, NULL };
+ struct mwIdBlock idb = { (char *)purple_buddy_get_name(buddy), NULL };
mwConference_invite(d, &idb, msg);
}
}
@@ -3495,7 +3510,7 @@ static void blist_menu_conf_list(PurpleBuddy *buddy,
const char *msgB;
char *msg;
- acct = buddy->account;
+ acct = purple_buddy_get_account(buddy);
g_return_if_fail(acct != NULL);
gc = purple_account_get_connection(acct);
@@ -3523,7 +3538,7 @@ static void blist_menu_conf_list(PurpleBuddy *buddy,
msgB = _("Select a conference from the list below to send an invite to"
" user %s. Select \"Create New Conference\" if you'd like to"
" create a new conference to invite this user to.");
- msg = g_strdup_printf(msgB, buddy->name);
+ msg = g_strdup_printf(msgB, purple_buddy_get_name(buddy));
purple_request_fields(gc, _("Invite to Conference"),
msgA, msg, fields,
@@ -3545,7 +3560,7 @@ static void blist_menu_conf(PurpleBlistNode *node, gpointer data) {
g_return_if_fail(node != NULL);
g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
- acct = buddy->account;
+ acct = purple_buddy_get_account(buddy);
g_return_if_fail(acct != NULL);
gc = purple_account_get_connection(acct);
@@ -4186,8 +4201,8 @@ static void mw_prpl_get_info(PurpleConnection *gc, const char *who) {
if(b) {
guint32 type;
- if(b->server_alias) {
- purple_notify_user_info_add_pair(user_info, _("Full Name"), b->server_alias);
+ if(purple_buddy_get_server_alias(b)) {
+ purple_notify_user_info_add_pair(user_info, _("Full Name"), purple_buddy_get_server_alias(b));
}
type = purple_blist_node_get_int((PurpleBlistNode *) b, BUDDY_KEY_CLIENT);
@@ -4329,10 +4344,10 @@ static void notify_im(PurpleConnection *gc, GList *row, void *user_data) {
static void notify_add(PurpleConnection *gc, GList *row, void *user_data) {
BuddyAddData *data = user_data;
- char *group_name = NULL;
+ const char *group_name = NULL;
if (data && data->group) {
- group_name = data->group->name;
+ group_name = purple_group_get_name(data->group);
}
purple_blist_request_add_buddy(purple_connection_get_account(gc),
@@ -4414,7 +4429,7 @@ static void add_buddy_resolved(struct mwServiceResolve *srvc,
buddy = data->buddy;
- gc = purple_account_get_connection(buddy->account);
+ gc = purple_account_get_connection(purple_buddy_get_account(buddy));
pd = gc->proto_data;
if(results)
@@ -4515,7 +4530,7 @@ static void mw_prpl_add_buddy(PurpleConnection *gc,
srvc = pd->srvc_resolve;
- query = g_list_prepend(NULL, buddy->name);
+ query = g_list_prepend(NULL, (char *)purple_buddy_get_name(buddy));
flags = mwResolveFlag_FIRST | mwResolveFlag_USERS;
req = mwServiceResolve_resolve(srvc, query, flags, add_buddy_resolved,
@@ -4568,7 +4583,7 @@ static void mw_prpl_add_buddies(PurpleConnection *gc,
/* convert PurpleBuddy into a mwAwareIdBlock */
idb->type = mwAware_USER;
- idb->user = (char *) b->name;
+ idb->user = (char *) purple_buddy_get_name(b);
idb->community = NULL;
/* put idb into the list associated with the buddy's group */
@@ -4593,7 +4608,7 @@ static void mw_prpl_remove_buddy(PurpleConnection *gc,
PurpleBuddy *buddy, PurpleGroup *group) {
struct mwPurplePluginData *pd;
- struct mwAwareIdBlock idb = { mwAware_USER, buddy->name, NULL };
+ struct mwAwareIdBlock idb = { mwAware_USER, (char *)purple_buddy_get_name(buddy), NULL };
struct mwAwareList *list;
GList *rem = g_list_prepend(NULL, &idb);
@@ -5192,7 +5207,8 @@ static PurplePluginProtocolInfo mw_prpl_info = {
.new_xfer = mw_prpl_new_xfer,
.offline_message = NULL,
.whiteboard_prpl_ops = NULL,
- .send_raw = NULL
+ .send_raw = NULL,
+ .struct_size = sizeof(PurplePluginProtocolInfo)
};
diff --git a/libpurple/protocols/silc/buddy.c b/libpurple/protocols/silc/buddy.c
index 112d796ddd..072509c06b 100644
--- a/libpurple/protocols/silc/buddy.c
+++ b/libpurple/protocols/silc/buddy.c
@@ -322,9 +322,12 @@ static void
silcpurple_buddy_keyagr(PurpleBlistNode *node, gpointer data)
{
PurpleBuddy *buddy;
+ PurpleAccount *account;
buddy = (PurpleBuddy *)node;
- silcpurple_buddy_keyagr_do(buddy->account->gc, buddy->name, FALSE);
+ account = purple_buddy_get_account(buddy);
+ silcpurple_buddy_keyagr_do(purple_account_get_connection(account),
+ purple_buddy_get_name(buddy), FALSE);
}
@@ -341,12 +344,12 @@ silcpurple_buddy_resetkey(PurpleBlistNode *node, gpointer data)
g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
b = (PurpleBuddy *) node;
- gc = purple_account_get_connection(b->account);
+ gc = purple_account_get_connection(purple_buddy_get_account(b));
sg = gc->proto_data;
/* Find client entry */
clients = silc_client_get_clients_local(sg->client, sg->conn,
- b->name, FALSE);
+ purple_buddy_get_name(b), FALSE);
if (!clients)
return;
@@ -467,9 +470,9 @@ silcpurple_buddy_privkey_menu(PurpleBlistNode *node, gpointer data)
g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
buddy = (PurpleBuddy *) node;
- gc = purple_account_get_connection(buddy->account);
+ gc = purple_account_get_connection(purple_buddy_get_account(buddy));
- silcpurple_buddy_privkey(gc, buddy->name);
+ silcpurple_buddy_privkey(gc, purple_buddy_get_name(buddy));
}
@@ -596,9 +599,9 @@ silcpurple_buddy_getkey_menu(PurpleBlistNode *node, gpointer data)
g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
buddy = (PurpleBuddy *) node;
- gc = purple_account_get_connection(buddy->account);
+ gc = purple_account_get_connection(purple_buddy_get_account(buddy));
- silcpurple_buddy_getkey(gc, buddy->name);
+ silcpurple_buddy_getkey(gc, purple_buddy_get_name(buddy));
}
static void
@@ -613,7 +616,7 @@ silcpurple_buddy_showkey(PurpleBlistNode *node, gpointer data)
g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
b = (PurpleBuddy *) node;
- gc = purple_account_get_connection(b->account);
+ gc = purple_account_get_connection(purple_buddy_get_account(b));
sg = gc->proto_data;
pkfile = purple_blist_node_get_string(node, "public-key");
@@ -624,7 +627,7 @@ silcpurple_buddy_showkey(PurpleBlistNode *node, gpointer data)
return;
}
- silcpurple_show_public_key(sg, b->name, public_key, NULL, NULL);
+ silcpurple_show_public_key(sg, purple_buddy_get_name(b), public_key, NULL, NULL);
silc_pkcs_public_key_free(public_key);
}
@@ -686,6 +689,7 @@ void silcpurple_get_info(PurpleConnection *gc, const char *who)
if (b) {
/* See if we have this buddy's public key. If we do use that
to search the details. */
+ gpointer proto_data;
filename = purple_blist_node_get_string((PurpleBlistNode *)b, "public-key");
if (filename) {
/* Call WHOIS. The user info is displayed in the WHOIS
@@ -695,15 +699,15 @@ void silcpurple_get_info(PurpleConnection *gc, const char *who)
return;
}
- if (!b->proto_data) {
+ if (!(proto_data = purple_buddy_get_protocol_data(b))) {
g_snprintf(tmp, sizeof(tmp),
- _("User %s is not present in the network"), b->name);
+ _("User %s is not present in the network"), purple_buddy_get_name(b));
purple_notify_error(gc, _("User Information"),
_("Cannot get user information"), tmp);
return;
}
- client_entry = silc_client_get_client_by_id(client, conn, b->proto_data);
+ client_entry = silc_client_get_client_by_id(client, conn, proto_data);
if (client_entry) {
/* Call WHOIS. The user info is displayed in the WHOIS
command reply. */
@@ -721,7 +725,7 @@ silcpurple_add_buddy_pk_no(SilcPurpleBuddyRes r)
{
char tmp[512];
g_snprintf(tmp, sizeof(tmp), _("The %s buddy is not trusted"),
- r->b->name);
+ purple_buddy_get_name(r->b));
purple_notify_error(r->client->application, _("Add Buddy"), tmp,
_("You cannot receive buddy notifications until you "
"import his/her public key. You can use the Get Public Key "
@@ -1033,7 +1037,7 @@ silcpurple_add_buddy_ask_import(void *user_data, const char *name)
/* Now verify the public key */
r->offline_pk = silc_pkcs_public_key_encode(r->public_key, &r->offline_pk_len);
- silcpurple_verify_public_key(r->client, r->conn, r->b->name,
+ silcpurple_verify_public_key(r->client, r->conn, purple_buddy_get_name(r->b),
SILC_CONN_CLIENT, r->public_key,
silcpurple_add_buddy_save, r);
}
@@ -1071,7 +1075,7 @@ silcpurple_add_buddy_ask_pk(SilcPurpleBuddyRes r)
{
char tmp[512];
g_snprintf(tmp, sizeof(tmp), _("The %s buddy is not present in the network"),
- r->b->name);
+ purple_buddy_get_name(r->b));
purple_request_action(r->client->application, _("Add Buddy"), tmp,
_("To add the buddy you must import his/her public key. "
"Press Import to import a public key."), 0,
@@ -1209,6 +1213,7 @@ silcpurple_add_buddy_resolved(SilcClient client,
const char *filename;
SilcClientEntry client_entry = NULL;
SilcUInt16 cmd_ident;
+ const char *name;
filename = purple_blist_node_get_string((PurpleBlistNode *)b, "public-key");
@@ -1246,17 +1251,19 @@ silcpurple_add_buddy_resolved(SilcClient client,
silc_dlist_start(clients);
client_entry = silc_dlist_get(clients);
+ name = purple_buddy_get_name(b);
+
/* If we searched using public keys and more than one entry was found
the same person is logged on multiple times. */
- if (silc_dlist_count(clients) > 1 && r->pubkey_search && b->name) {
+ if (silc_dlist_count(clients) > 1 && r->pubkey_search && name) {
if (r->init) {
/* Find the entry that closest matches to the
buddy nickname. */
SilcClientEntry entry;
silc_dlist_start(clients);
while ((entry = silc_dlist_get(clients))) {
- if (!g_ascii_strncasecmp(b->name, entry->nickname,
- strlen(b->name))) {
+ if (!g_ascii_strncasecmp(name, entry->nickname,
+ strlen(name))) {
client_entry = entry;
break;
}
@@ -1271,7 +1278,7 @@ silcpurple_add_buddy_resolved(SilcClient client,
/* The client was found. Now get its public key and verify
that before adding the buddy. */
memset(&userpk, 0, sizeof(userpk));
- b->proto_data = silc_memdup(&client_entry->id, sizeof(client_entry->id));
+ purple_buddy_set_protocol_data(b, silc_memdup(&client_entry->id, sizeof(client_entry->id)));
r->client_id = client_entry->id;
/* Get the public key from attributes, if not present then
@@ -1335,7 +1342,7 @@ silcpurple_add_buddy_i(PurpleConnection *gc, PurpleBuddy *b, gboolean init)
SilcClientConnection conn = sg->conn;
SilcPurpleBuddyRes r;
SilcBuffer attrs;
- const char *filename, *name = b->name;
+ const char *filename, *name = purple_buddy_get_name(b);
r = silc_calloc(1, sizeof(*r));
if (!r)
@@ -1390,45 +1397,33 @@ silcpurple_add_buddy_i(PurpleConnection *gc, PurpleBuddy *b, gboolean init)
void silcpurple_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
{
- silcpurple_add_buddy_i(gc, buddy, FALSE);
+ /* Don't add if the buddy is already on the list.
+ *
+ * SILC doesn't have groups, so we also don't need to do anything
+ * for a move. */
+ if (purple_buddy_get_protocol_data(buddy) == NULL)
+ silcpurple_add_buddy_i(gc, buddy, FALSE);
}
void silcpurple_send_buddylist(PurpleConnection *gc)
{
- PurpleBuddyList *blist;
- PurpleBlistNode *gnode, *cnode, *bnode;
- PurpleBuddy *buddy;
+ GSList *buddies;
PurpleAccount *account;
account = purple_connection_get_account(gc);
- if ((blist = purple_get_blist()) != NULL)
+ for (buddies = purple_find_buddies(account, NULL); buddies;
+ buddies = g_slist_delete_link(buddies, buddies))
{
- for (gnode = blist->root; gnode != NULL; gnode = gnode->next)
- {
- if (!PURPLE_BLIST_NODE_IS_GROUP(gnode))
- continue;
- for (cnode = gnode->child; cnode != NULL; cnode = cnode->next)
- {
- if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
- continue;
- for (bnode = cnode->child; bnode != NULL; bnode = bnode->next)
- {
- if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
- continue;
- buddy = (PurpleBuddy *)bnode;
- if (purple_buddy_get_account(buddy) == account)
- silcpurple_add_buddy_i(gc, buddy, TRUE);
- }
- }
- }
+ PurpleBuddy *buddy = buddies->data;
+ silcpurple_add_buddy_i(gc, buddy, TRUE);
}
}
void silcpurple_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy,
PurpleGroup *group)
{
- silc_free(buddy->proto_data);
+ silc_free(purple_buddy_get_protocol_data(buddy));
}
void silcpurple_idle_set(PurpleConnection *gc, int idle)
@@ -1469,10 +1464,12 @@ void silcpurple_idle_set(PurpleConnection *gc, int idle)
char *silcpurple_status_text(PurpleBuddy *b)
{
- SilcPurple sg = b->account->gc->proto_data;
+ PurpleAccount *account = purple_buddy_get_account(b);
+ PurpleConnection *gc = purple_account_get_connection(account);
+ SilcPurple sg = gc->proto_data;
SilcClient client = sg->client;
SilcClientConnection conn = sg->conn;
- SilcClientID *client_id = b->proto_data;
+ SilcClientID *client_id = purple_buddy_get_protocol_data(b);
SilcClientEntry client_entry;
SilcAttributePayload attr;
SilcAttributeMood mood = 0;
@@ -1533,10 +1530,12 @@ char *silcpurple_status_text(PurpleBuddy *b)
void silcpurple_tooltip_text(PurpleBuddy *b, PurpleNotifyUserInfo *user_info, gboolean full)
{
- SilcPurple sg = b->account->gc->proto_data;
+ PurpleAccount *account = purple_buddy_get_account(b);
+ PurpleConnection *gc = purple_account_get_connection(account);
+ SilcPurple sg = gc->proto_data;
SilcClient client = sg->client;
SilcClientConnection conn = sg->conn;
- SilcClientID *client_id = b->proto_data;
+ SilcClientID *client_id = purple_buddy_get_protocol_data(b);
SilcClientEntry client_entry;
char *moodstr, *statusstr, *contactstr, *langstr, *devicestr, *tzstr, *geostr;
char tmp[256];
@@ -1610,12 +1609,12 @@ silcpurple_buddy_kill(PurpleBlistNode *node, gpointer data)
g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
b = (PurpleBuddy *) node;
- gc = purple_account_get_connection(b->account);
+ gc = purple_account_get_connection(purple_buddy_get_account(b));
sg = gc->proto_data;
/* Call KILL */
silc_client_command_call(sg->client, sg->conn, NULL, "KILL",
- b->name, "Killed by operator", NULL);
+ purple_buddy_get_name(b), "Killed by operator", NULL);
}
typedef struct {
@@ -1633,7 +1632,8 @@ silcpurple_buddy_wb(PurpleBlistNode *node, gpointer data)
GList *silcpurple_buddy_menu(PurpleBuddy *buddy)
{
- PurpleConnection *gc = purple_account_get_connection(buddy->account);
+ PurpleAccount *account = purple_buddy_get_account(buddy);
+ PurpleConnection *gc = purple_account_get_connection(account);
SilcPurple sg = gc->proto_data;
SilcClientConnection conn = sg->conn;
const char *pkfile = NULL;
@@ -1645,7 +1645,7 @@ GList *silcpurple_buddy_menu(PurpleBuddy *buddy)
pkfile = purple_blist_node_get_string((PurpleBlistNode *) buddy, "public-key");
client_entry = silc_client_get_client_by_id(sg->client,
sg->conn,
- buddy->proto_data);
+ purple_buddy_get_protocol_data(buddy));
if (client_entry &&
silc_client_private_message_key_is_set(sg->client,
diff --git a/libpurple/protocols/silc/chat.c b/libpurple/protocols/silc/chat.c
index 320cfbd31a..fa95dd708b 100644
--- a/libpurple/protocols/silc/chat.c
+++ b/libpurple/protocols/silc/chat.c
@@ -182,7 +182,9 @@ static void
silcpurple_chat_getinfo_menu(PurpleBlistNode *node, gpointer data)
{
PurpleChat *chat = (PurpleChat *)node;
- silcpurple_chat_getinfo(chat->account->gc, chat->components);
+ PurpleAccount *account = purple_chat_get_account(chat);
+ silcpurple_chat_getinfo(purple_account_get_connection(account),
+ purple_chat_get_components(chat));
}
@@ -496,11 +498,11 @@ silcpurple_chat_chauth(PurpleBlistNode *node, gpointer data)
g_return_if_fail(PURPLE_BLIST_NODE_IS_CHAT(node));
chat = (PurpleChat *) node;
- gc = purple_account_get_connection(chat->account);
+ gc = purple_account_get_connection(purple_chat_get_account(chat));
sg = gc->proto_data;
silc_client_command_call(sg->client, sg->conn, NULL, "CMODE",
- g_hash_table_lookup(chat->components, "channel"),
+ g_hash_table_lookup(purple_chat_get_components(chat), "channel"),
"+C", NULL);
}
@@ -549,7 +551,7 @@ silcpurple_chat_prv_add(SilcPurpleCharPrv p, PurpleRequestFields *fields)
g_hash_table_replace(comp, "passphrase", g_strdup(passphrase));
cn = purple_chat_new(sg->account, alias, comp);
- g = (PurpleGroup *)p->c->node.parent;
+ g = purple_chat_get_group(p->c);
purple_blist_add_chat(cn, g, (PurpleBlistNode *)p->c);
/* Associate to a real channel */
@@ -583,7 +585,7 @@ silcpurple_chat_prv(PurpleBlistNode *node, gpointer data)
g_return_if_fail(PURPLE_BLIST_NODE_IS_CHAT(node));
chat = (PurpleChat *) node;
- gc = purple_account_get_connection(chat->account);
+ gc = purple_account_get_connection(purple_chat_get_account(chat));
sg = gc->proto_data;
p = silc_calloc(1, sizeof(*p));
@@ -591,7 +593,7 @@ silcpurple_chat_prv(PurpleBlistNode *node, gpointer data)
return;
p->sg = sg;
- p->channel = g_hash_table_lookup(chat->components, "channel");
+ p->channel = g_hash_table_lookup(purple_chat_get_components(chat), "channel");
p->c = purple_blist_find_chat(sg->account, p->channel);
fields = purple_request_fields_new();
@@ -633,11 +635,11 @@ silcpurple_chat_permanent_reset(PurpleBlistNode *node, gpointer data)
g_return_if_fail(PURPLE_BLIST_NODE_IS_CHAT(node));
chat = (PurpleChat *) node;
- gc = purple_account_get_connection(chat->account);
+ gc = purple_account_get_connection(purple_chat_get_account(chat));
sg = gc->proto_data;
silc_client_command_call(sg->client, sg->conn, NULL, "CMODE",
- g_hash_table_lookup(chat->components, "channel"),
+ g_hash_table_lookup(purple_chat_get_components(chat), "channel"),
"-f", NULL);
}
@@ -652,7 +654,7 @@ silcpurple_chat_permanent(PurpleBlistNode *node, gpointer data)
g_return_if_fail(PURPLE_BLIST_NODE_IS_CHAT(node));
chat = (PurpleChat *) node;
- gc = purple_account_get_connection(chat->account);
+ gc = purple_account_get_connection(purple_chat_get_account(chat));
sg = gc->proto_data;
if (!sg->conn)
@@ -663,7 +665,7 @@ silcpurple_chat_permanent(PurpleBlistNode *node, gpointer data)
(default key). */
/* Call CMODE */
- channel = g_hash_table_lookup(chat->components, "channel");
+ channel = g_hash_table_lookup(purple_chat_get_components(chat), "channel");
silc_client_command_call(sg->client, sg->conn, NULL, "CMODE", channel,
"+f", NULL);
}
@@ -729,13 +731,13 @@ silcpurple_chat_ulimit(PurpleBlistNode *node, gpointer data)
g_return_if_fail(PURPLE_BLIST_NODE_IS_CHAT(node));
chat = (PurpleChat *) node;
- gc = purple_account_get_connection(chat->account);
+ gc = purple_account_get_connection(purple_chat_get_account(chat));
sg = gc->proto_data;
if (!sg->conn)
return;
- ch = g_strdup(g_hash_table_lookup(chat->components, "channel"));
+ ch = g_strdup(g_hash_table_lookup(purple_chat_get_components(chat), "channel"));
channel = silc_client_get_channel(sg->client, sg->conn, (char *)ch);
if (!channel)
return;
@@ -764,11 +766,11 @@ silcpurple_chat_resettopic(PurpleBlistNode *node, gpointer data)
g_return_if_fail(PURPLE_BLIST_NODE_IS_CHAT(node));
chat = (PurpleChat *) node;
- gc = purple_account_get_connection(chat->account);
+ gc = purple_account_get_connection(purple_chat_get_account(chat));
sg = gc->proto_data;
silc_client_command_call(sg->client, sg->conn, NULL, "CMODE",
- g_hash_table_lookup(chat->components, "channel"),
+ g_hash_table_lookup(purple_chat_get_components(chat), "channel"),
"-t", NULL);
}
@@ -782,11 +784,11 @@ silcpurple_chat_settopic(PurpleBlistNode *node, gpointer data)
g_return_if_fail(PURPLE_BLIST_NODE_IS_CHAT(node));
chat = (PurpleChat *) node;
- gc = purple_account_get_connection(chat->account);
+ gc = purple_account_get_connection(purple_chat_get_account(chat));
sg = gc->proto_data;
silc_client_command_call(sg->client, sg->conn, NULL, "CMODE",
- g_hash_table_lookup(chat->components, "channel"),
+ g_hash_table_lookup(purple_chat_get_components(chat), "channel"),
"+t", NULL);
}
@@ -800,11 +802,11 @@ silcpurple_chat_resetprivate(PurpleBlistNode *node, gpointer data)
g_return_if_fail(PURPLE_BLIST_NODE_IS_CHAT(node));
chat = (PurpleChat *) node;
- gc = purple_account_get_connection(chat->account);
+ gc = purple_account_get_connection(purple_chat_get_account(chat));
sg = gc->proto_data;
silc_client_command_call(sg->client, sg->conn, NULL, "CMODE",
- g_hash_table_lookup(chat->components, "channel"),
+ g_hash_table_lookup(purple_chat_get_components(chat), "channel"),
"-p", NULL);
}
@@ -818,11 +820,11 @@ silcpurple_chat_setprivate(PurpleBlistNode *node, gpointer data)
g_return_if_fail(PURPLE_BLIST_NODE_IS_CHAT(node));
chat = (PurpleChat *) node;
- gc = purple_account_get_connection(chat->account);
+ gc = purple_account_get_connection(purple_chat_get_account(chat));
sg = gc->proto_data;
silc_client_command_call(sg->client, sg->conn, NULL, "CMODE",
- g_hash_table_lookup(chat->components, "channel"),
+ g_hash_table_lookup(purple_chat_get_components(chat), "channel"),
"+p", NULL);
}
@@ -836,11 +838,11 @@ silcpurple_chat_resetsecret(PurpleBlistNode *node, gpointer data)
g_return_if_fail(PURPLE_BLIST_NODE_IS_CHAT(node));
chat = (PurpleChat *) node;
- gc = purple_account_get_connection(chat->account);
+ gc = purple_account_get_connection(purple_chat_get_account(chat));
sg = gc->proto_data;
silc_client_command_call(sg->client, sg->conn, NULL, "CMODE",
- g_hash_table_lookup(chat->components, "channel"),
+ g_hash_table_lookup(purple_chat_get_components(chat), "channel"),
"-s", NULL);
}
@@ -854,11 +856,11 @@ silcpurple_chat_setsecret(PurpleBlistNode *node, gpointer data)
g_return_if_fail(PURPLE_BLIST_NODE_IS_CHAT(node));
chat = (PurpleChat *) node;
- gc = purple_account_get_connection(chat->account);
+ gc = purple_account_get_connection(purple_chat_get_account(chat));
sg = gc->proto_data;
silc_client_command_call(sg->client, sg->conn, NULL, "CMODE",
- g_hash_table_lookup(chat->components, "channel"),
+ g_hash_table_lookup(purple_chat_get_components(chat), "channel"),
"+s", NULL);
}
@@ -877,8 +879,8 @@ silcpurple_chat_wb(PurpleBlistNode *node, gpointer data)
GList *silcpurple_chat_menu(PurpleChat *chat)
{
- GHashTable *components = chat->components;
- PurpleConnection *gc = purple_account_get_connection(chat->account);
+ GHashTable *components = purple_chat_get_components(chat);
+ PurpleConnection *gc = purple_account_get_connection(purple_chat_get_account(chat));
SilcPurple sg = gc->proto_data;
SilcClientConnection conn = sg->conn;
const char *chname = NULL;
diff --git a/libpurple/protocols/silc/ops.c b/libpurple/protocols/silc/ops.c
index 0a918ffd56..50edf3c649 100644
--- a/libpurple/protocols/silc/ops.c
+++ b/libpurple/protocols/silc/ops.c
@@ -431,6 +431,7 @@ silc_notify(SilcClient client, SilcClientConnection conn,
va_list va;
PurpleConnection *gc = client->application;
SilcPurple sg = gc->proto_data;
+ PurpleAccount *account = purple_connection_get_account(gc);
PurpleConversation *convo;
SilcClientEntry client_entry, client_entry2;
SilcChannelEntry channel;
@@ -838,7 +839,7 @@ silc_notify(SilcClient client, SilcClientConnection conn,
b = NULL;
if (public_key) {
- PurpleBlistNode *gnode, *cnode, *bnode;
+ GSList *buddies;
const char *f;
pk = silc_pkcs_public_key_encode(public_key, &pk_len);
@@ -856,26 +857,13 @@ silc_notify(SilcClient client, SilcClientConnection conn,
silc_free(pk);
/* Find buddy by associated public key */
- 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) {
- if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
- continue;
- b = (PurpleBuddy *)bnode;
- if (b->account != gc->account)
- continue;
- f = purple_blist_node_get_string(bnode, "public-key");
- if (f && !strcmp(f, buf))
- goto cont;
- b = NULL;
- }
- }
+ for (buddies = purple_find_buddies(account, NULL); buddies;
+ buddies = g_slist_delete_link(buddies, buddies)) {
+ b = buddies->data;
+ f = purple_blist_node_get_string(PURPLE_BLIST_NODE(b), "public-key");
+ if (purple_strequal(f, buf))
+ goto cont;
+ b = NULL;
}
}
cont:
@@ -889,9 +877,9 @@ silc_notify(SilcClient client, SilcClientConnection conn,
}
}
- silc_free(b->proto_data);
- b->proto_data = silc_memdup(&client_entry->id,
- sizeof(client_entry->id));
+ silc_free(purple_buddy_get_protocol_data(b));
+ purple_buddy_set_protocol_data(b, silc_memdup(&client_entry->id,
+ sizeof(client_entry->id)));
if (notify == SILC_NOTIFY_TYPE_NICK_CHANGE) {
break;
} else if (notify == SILC_NOTIFY_TYPE_UMODE_CHANGE) {
diff --git a/libpurple/protocols/silc/silc.c b/libpurple/protocols/silc/silc.c
index 4088f1c078..7c97726c26 100644
--- a/libpurple/protocols/silc/silc.c
+++ b/libpurple/protocols/silc/silc.c
@@ -2109,13 +2109,13 @@ static PurplePluginProtocolInfo prpl_info =
&silcpurple_wb_ops, /* whiteboard_prpl_ops */
NULL, /* send_raw */
NULL, /* roomlist_room_serialize */
-
- /* padding */
- NULL,
- NULL,
- NULL,
+ NULL, /* unregister_user */
+ NULL, /* send_attention */
+ NULL, /* get_attention_types */
sizeof(PurplePluginProtocolInfo), /* struct_size */
- NULL
+ NULL, /* get_account_text_table */
+ NULL, /* initiate_media */
+ NULL /* can_do_media */
};
static PurplePluginInfo info =
diff --git a/libpurple/protocols/silc10/buddy.c b/libpurple/protocols/silc10/buddy.c
index 67e53f630f..5939ef40a0 100644
--- a/libpurple/protocols/silc10/buddy.c
+++ b/libpurple/protocols/silc10/buddy.c
@@ -1390,7 +1390,12 @@ silcpurple_add_buddy_i(PurpleConnection *gc, PurpleBuddy *b, gboolean init)
void silcpurple_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
{
- silcpurple_add_buddy_i(gc, buddy, FALSE);
+ /* Don't add if the buddy is already on the list.
+ *
+ * SILC doesn't have groups, so we don't need to do anything
+ * for a move. */
+ if (purple_buddy_get_protocol_data(buddy) == NULL)
+ silcpurple_add_buddy_i(gc, buddy, FALSE);
}
void silcpurple_send_buddylist(PurpleConnection *gc)
diff --git a/libpurple/protocols/silc10/silc.c b/libpurple/protocols/silc10/silc.c
index 7ea8e9cb4e..c67b6901dd 100644
--- a/libpurple/protocols/silc10/silc.c
+++ b/libpurple/protocols/silc10/silc.c
@@ -1836,12 +1836,13 @@ static PurplePluginProtocolInfo prpl_info =
&silcpurple_wb_ops, /* whiteboard_prpl_ops */
NULL, /* send_raw */
NULL, /* roomlist_room_serialize */
-
- NULL,
- NULL,
- NULL,
+ NULL, /* unregister_user */
+ NULL, /* send_attention */
+ NULL, /* get_attention_types */
sizeof(PurplePluginProtocolInfo), /* struct_size */
- NULL
+ NULL, /* get_account_text_table */
+ NULL, /* initiate_media */
+ NULL /* can_do_media */
};
static PurplePluginInfo info =
diff --git a/libpurple/protocols/simple/simple.c b/libpurple/protocols/simple/simple.c
index 2ce022f550..c14bf7bae8 100644
--- a/libpurple/protocols/simple/simple.c
+++ b/libpurple/protocols/simple/simple.c
@@ -196,44 +196,44 @@ static void simple_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGro
{
struct simple_account_data *sip = (struct simple_account_data *)gc->proto_data;
struct simple_buddy *b;
- if(strncmp(buddy->name, "sip:", 4)) {
- gchar *buf = g_strdup_printf("sip:%s", buddy->name);
+ const char *name = purple_buddy_get_name(buddy);
+ if(strncmp(name, "sip:", 4)) {
+ gchar *buf = g_strdup_printf("sip:%s", name);
purple_blist_rename_buddy(buddy, buf);
g_free(buf);
}
- if(!g_hash_table_lookup(sip->buddies, buddy->name)) {
+ if(!g_hash_table_lookup(sip->buddies, name)) {
b = g_new0(struct simple_buddy, 1);
- purple_debug_info("simple", "simple_add_buddy %s\n", buddy->name);
- b->name = g_strdup(buddy->name);
+ purple_debug_info("simple", "simple_add_buddy %s\n", name);
+ b->name = g_strdup(name);
g_hash_table_insert(sip->buddies, b->name, b);
} else {
- purple_debug_info("simple", "buddy %s already in internal list\n", buddy->name);
+ purple_debug_info("simple", "buddy %s already in internal list\n", name);
}
}
static void simple_get_buddies(PurpleConnection *gc) {
- PurpleBlistNode *gnode, *cnode, *bnode;
+ GSList *buddies;
+ PurpleAccount *account;
purple_debug_info("simple", "simple_get_buddies\n");
- 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) {
- if(!PURPLE_BLIST_NODE_IS_BUDDY(bnode)) continue;
- if(((PurpleBuddy*)bnode)->account == gc->account)
- simple_add_buddy(gc, (PurpleBuddy*)bnode, (PurpleGroup *)gnode);
- }
- }
+ account = purple_connection_get_account(gc);
+ buddies = purple_find_buddies(account, NULL);
+ while (buddies) {
+ PurpleBuddy *buddy = buddies->data;
+ simple_add_buddy(gc, buddy, purple_buddy_get_group(buddy));
+
+ buddies = g_slist_delete_link(buddies, buddies);
}
}
static void simple_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
{
+ const char *name = purple_buddy_get_name(buddy);
struct simple_account_data *sip = (struct simple_account_data *)gc->proto_data;
- struct simple_buddy *b = g_hash_table_lookup(sip->buddies, buddy->name);
- g_hash_table_remove(sip->buddies, buddy->name);
+ struct simple_buddy *b = g_hash_table_lookup(sip->buddies, name);
+ g_hash_table_remove(sip->buddies, name);
g_free(b->name);
g_free(b);
}
@@ -446,13 +446,6 @@ static void send_later_cb(gpointer data, gint source, const gchar *error) {
struct simple_account_data *sip;
struct sip_connection *conn;
- if (!PURPLE_CONNECTION_IS_VALID(gc))
- {
- if (source >= 0)
- close(source);
- return;
- }
-
if(source < 0) {
purple_connection_error_reason(gc,
PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
@@ -922,7 +915,7 @@ static gboolean simple_add_lcs_contacts(struct simple_account_data *sip, struct
purple_blist_add_buddy(b, NULL, g, NULL);
purple_blist_alias_buddy(b, uri);
bs = g_new0(struct simple_buddy, 1);
- bs->name = g_strdup(b->name);
+ bs->name = g_strdup(purple_buddy_get_name(b));
g_hash_table_insert(sip->buddies, bs->name, bs);
}
xmlnode_free(isc);
@@ -1735,13 +1728,6 @@ static void login_cb(gpointer data, gint source, const gchar *error_message) {
struct simple_account_data *sip;
struct sip_connection *conn;
- if (!PURPLE_CONNECTION_IS_VALID(gc))
- {
- if (source >= 0)
- close(source);
- return;
- }
-
if(source < 0) {
purple_connection_error_reason(gc,
PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
@@ -2088,13 +2074,13 @@ static PurplePluginProtocolInfo prpl_info =
NULL, /* whiteboard_prpl_ops */
simple_send_raw, /* send_raw */
NULL, /* roomlist_room_serialize */
-
- /* padding */
- NULL,
- NULL,
- NULL,
+ NULL, /* unregister_user */
+ NULL, /* send_attention */
+ NULL, /* get_attention_types */
sizeof(PurplePluginProtocolInfo), /* struct_size */
- NULL
+ NULL, /* get_account_text_table */
+ NULL, /* initiate_media */
+ NULL /* can_do_media */
};
diff --git a/libpurple/protocols/toc/Makefile.am b/libpurple/protocols/toc/Makefile.am
deleted file mode 100644
index db41dfa9ad..0000000000
--- a/libpurple/protocols/toc/Makefile.am
+++ /dev/null
@@ -1,32 +0,0 @@
-EXTRA_DIST = \
- PROTOCOL \
- Makefile.mingw
-
-pkgdir = $(libdir)/purple-$(PURPLE_MAJOR_VERSION)
-
-TOCSOURCES = toc.c
-
-AM_CFLAGS = $(st)
-
-libtoc_la_LDFLAGS = -module -avoid-version
-
-if STATIC_TOC
-
-st = -DPURPLE_STATIC_PRPL
-noinst_LTLIBRARIES = libtoc.la
-libtoc_la_SOURCES = $(TOCSOURCES)
-libtoc_la_CFLAGS = $(AM_CFLAGS)
-
-else
-
-st =
-pkg_LTLIBRARIES = libtoc.la
-libtoc_la_SOURCES = $(TOCSOURCES)
-
-endif
-
-AM_CPPFLAGS = \
- -I$(top_srcdir)/libpurple \
- -I$(top_builddir)/libpurple \
- $(GLIB_CFLAGS) \
- $(DEBUG_CFLAGS)
diff --git a/libpurple/protocols/toc/Makefile.mingw b/libpurple/protocols/toc/Makefile.mingw
deleted file mode 100644
index 4da3a3dc26..0000000000
--- a/libpurple/protocols/toc/Makefile.mingw
+++ /dev/null
@@ -1,78 +0,0 @@
-#
-# Makefile.mingw
-#
-# Description: Makefile for win32 (mingw) version of libtoc
-#
-
-PIDGIN_TREE_TOP := ../../..
-include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
-
-TARGET = libtoc
-TYPE = PLUGIN
-
-# Static or Plugin...
-ifeq ($(TYPE),STATIC)
- DEFINES += -DSTATIC
- DLL_INSTALL_DIR = $(PURPLE_INSTALL_DIR)
-else
-ifeq ($(TYPE),PLUGIN)
- DLL_INSTALL_DIR = $(PURPLE_INSTALL_PLUGINS_DIR)
-endif
-endif
-
-##
-## INCLUDE PATHS
-##
-INCLUDE_PATHS += -I$(TOC_ROOT) \
- -I$(GTK_TOP)/include \
- -I$(GTK_TOP)/include/glib-2.0 \
- -I$(GTK_TOP)/lib/glib-2.0/include \
- -I$(LIBPIDGIN_TREE_TOP) \
- -I$(LIBPIDGIN_TREE_TOP)/win32 \
- -I$(PIDGIN_TREE_TOP)
-
-LIB_PATHS += -L$(GTK_TOP)/lib \
- -L$(LIBPIDGIN_TREE_TOP)
-
-##
-## SOURCES, OBJECTS
-##
-C_SRC = toc.c
-
-OBJECTS = $(C_SRC:%.c=%.o)
-
-##
-## LIBRARIES
-##
-LIBS = \
- -lglib-2.0 \
- -lws2_32 \
- -lintl \
- -lpurple
-
-include $(PIDGIN_COMMON_RULES)
-
-##
-## TARGET DEFINITIONS
-##
-
-.PHONY: all install clean
-
-all: $(TARGET).dll
-
-install: all $(DLL_INSTALL_DIR)
- cp $(TARGET).dll $(DLL_INSTALL_DIR)
-
-$(OBJECTS): $(PURPLE_CONFIG_H)
-
-$(TARGET).dll: $(PURPLE_DLL).a $(OBJECTS)
- $(CC) -shared $(OBJECTS) $(LIB_PATHS) $(LIBS) $(DLL_LD_FLAGS) -o $(TARGET).dll
-
-##
-## CLEAN RULES
-##
-clean:
- rm -f $(OBJECTS)
- rm -f $(TARGET).dll
-
-include $(PIDGIN_COMMON_TARGETS)
diff --git a/libpurple/protocols/toc/PROTOCOL b/libpurple/protocols/toc/PROTOCOL
deleted file mode 100644
index 87672dd55f..0000000000
--- a/libpurple/protocols/toc/PROTOCOL
+++ /dev/null
@@ -1,499 +0,0 @@
-# Copyright (c) 1998-9 America Online, Inc. All Rights Reserved.
-#
-# 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.
-
-# Note from Jim Duchek, former libpurple maintainer -- this may not be
-# the latest version of this document, I provide it as a service.
-# Download a copy of TiK (http://www.aim.aol.com/tik/) for the latest
-# version of this doc.
-
-# Note from Eric Warmenhoven, random guy -- this appears to be the last
-# published version of the protocol, and AOL has stopped hosting the TiK
-# program. TiK is still being maintained and is hosted on sourceforge.net;
-# this appears to be the same version of the protocol they're using.
-
-Version: TOC1.0
-
-This document describes the protocol between TOC and TOC clients.
-The protocol is built on TCP. Framing is done by SFLAP,
-described at the bottom of this document. Inside each
-SFLAP frame is a TOC command.
-
-The TOC protocol is ASCII based, and special attention
-must be placed argument separation. The separator and
-the rules of separation are different for messages inbound
-to TOC and outbound to the client. The rules of separation
-are described in sections below.
-
-The TOC server is built mainly to service the TIC and TiK clients. Since
-the TIC client is a Java applet, and downloadable, TOC will NOT support
-multiple TOC protocol versions at the same time. Therefore, TiK
-users will be forced to upgrade if the protocol version changes.
-TOC sends down the protocol version it expects the client
-to speak and understand. Note, the protocol version is a string.
-
-Important Notes
-===============
-* TOC will drop the connection if a command exceeds the maximum
- length, which is currently 2048 bytes. So the client needs to
- spend special attention to im, chat, and config message lengths.
- There is an 8k length maximum from TOC to the client.
-
-* No commands should be sent to TOC (besides toc_signon) before
- a SIGN_ON is received. If you do send a command before SIGN_ON
- the command will be ignored, and in some case the connection
- will be dropped.
-
-* Initial permit/deny items should be sent after receiving SIGN_ON
- but before sending toc_init_done, otherwise the user will flash
- on peoples buddylist who the user has denied. You will probably
- want to send the toc_add_buddies at this time also.
-
-* After TOC sends the PAUSE message to a client, all messages sent
- to TOC will be ignored, and in some cases the connection will
- be dropped. Another SIGN_ON message will be sent to the client
- when it is online again. The buddy list and permit/deny items must
- be sent again, followed by the toc_init_done. In most cases the
- SIGN_ON message will be sent between 1-2 seconds after the
- PAUSE message. Therefore a client could choose to ignore the
- PAUSE message and hope nothing bad happens.
-
-
-Client -> TOC
-==============
-The commands and the arguments are usually separated by whitespaces. Arguments
-with whitespace characters should be enclosed in quotes. Dollar signs,
-curly brackets, square brackets, parentheses, quotes, and backslashes
-must all be backslashed whether in quotes or not. It is usually
-a good idea just to use quotes no matter what. All user names from clients
-to TOC should be normalized (spaces removed and lowercased), and therefore
-are the one exception to the always use quotes rule.
-
-When sending commands to the server you will not get a response
-back confirming that the command format was correct or not! However
-in some cases if the command format was incorrect the connection
-will be dropped.
-
-
-RoastingString="Tic/Toc"
-
-toc_signon <authorizer host> <authorizer port> <User Name> <Password>
- <language> <version>
- The password needs to be roasted with the Roasting String if
- coming over a FLAP connection, CP connections don't use
- roasted passwords. The language specified will be used
- when generating web pages, such as the get info pages.
- Currently the only supported language is "english".
- If the language sent isn't found, the default "english"
- language will be used. The version string will be used
- for the client identity, and must be less then 50
- characters.
-
- Passwords are roasted when sent to the host. This is done so they
- aren't sent in "clear text" over the wire, although they are still
- trivial to decode. Roasting is performed by first xoring each byte
- in the password with the equivalent modulo byte in the roasting
- string. The result is then converted to ascii hex, and prepended
- with "0x". So for example the password "password" roasts to
- "0x2408105c23001130"
-
-toc_init_done
- Tells TOC that we are ready to go online. TOC clients should first
- send TOC the buddy list and any permit/deny lists. However toc_init_done
- must be called within 30 seconds after toc_signon, or the connection
- will be dropped. Remember, it can't be called until after the SIGN_ON
- message is received. Calling this before or multiple times after a
- SIGN_ON will cause the connection to be dropped.
-
-toc_send_im <Destination User> <Message> [auto]
- Send a message to a remote user. Remember to quote and encode the
- message. If the optional string "auto" is the last argument, then the
- auto response flag will be turned on for the im.
-
-toc_add_buddy <Buddy User 1> [<Buddy User2> [<Buddy User 3> [...]]]
- Add buddies to your buddy list. This does not change your
- saved config.
-
-toc_remove_buddy <Buddy User 1> [<Buddy User2> [<Buddy User 3> [...]]]
- Remove buddies from your buddy list. This does not change your
- saved config.
-
-toc_set_config <Config Info>
- Set the config information for this user. The config information
- is line oriented with the first character being the item type,
- followed by a space, with the rest of the line being the item
- value. Only letters, numbers, and spaces should be used. Remember
- you will have to enclose the entire config in quotes.
-
- Item Types:
- g - Buddy Group (All Buddies until the next g or the end of config
- are in this group.)
- b - A Buddy
- p - Person on permit list
- d - Person on deny list
- m - Permit/Deny Mode. Possible values are
- 1 - Permit All
- 2 - Deny All
- 3 - Permit Some
- 4 - Deny Some
-
-toc_evil <User> <norm|anon>
- Evil/Warn someone else. The 2nd argument is either the string
- "norm" for a normal warning, or "anon" for an anonymous
- warning. You can only evil people who have recently sent you
- ims. The higher someones evil level, the slower they can
- send message.
-
-toc_add_permit [ <User 1> [<User 2> [...]]]
- ADD the following people to your permit mode. If
- you are in deny mode it will switch you to permit
- mode first. With no arguments and in deny mode
- this will switch you to permit none. If already
- in permit mode, no arguments does nothing
- and your permit list remains the same.
-
-toc_add_deny [ <User 1> [<User 2> [...]]]
- ADD the following people to your deny mode. If
- you are in permit mode it will switch you to
- deny mode first. With no arguments and in permit
- mode, this will switch you to deny none. If
- already in deny mode, no arguments does nothing
- and your deny list remains unchanged.
-
-toc_chat_join <Exchange> <Chat Room Name>
- Join a chat room in the given exchange. Exchange is
- an integer that represents a group of chat rooms.
- Different exchanges have different properties. For
- example some exchanges might have room replication (ie
- a room never fills up, there are just multiple
- instances.) and some exchanges might have navigational
- information, and some exchanges might have ... Currently
- exchange should always be 4, however this may
- change in the future. You will either
- receive an ERROR if the room couldn't be joined
- or a CHAT_JOIN message. The Chat Room Name
- is case insensitive and consecutive spaces
- are removed.
-
-toc_chat_send <Chat Room ID> <Message>
- Send a message in a chat room using the chat room
- id from CHAT_JOIN. Since reflection is always on in
- TOC, you do not need to add the message to your chat UI,
- since you will get a CHAT_IN with the message.
- Remember to quote and encode the message.
-
-toc_chat_whisper <Chat Room ID> <dst_user> <Message>
- Send a message in a chat room using the chat room
- id from CHAT_JOIN. This message is directed at
- only one person. (Currently you DO need to add this to
- your UI.) Remember to quote and encode the message.
- Chat whispering is different from IMs since it is linked
- to a chat room, and should usually be displayed in the chat
- room UI.
-
-toc_chat_evil <Chat Room ID> <User> <norm|anon>
- Evil/Warn someone else inside a chat room. The 3rd argument is either
- the string "norm" for a normal warning, or "anon" for an anonymous
- warning. Currently chat evil is not turned on in the chat complex.
-
-toc_chat_invite <Chat Room ID> <Invite Msg> <buddy1> [<buddy2> [<buddy3> [...]]]
- Once you are inside a chat room you can invite other people into
- that room. Remember to quote and encode the invite message.
-
-toc_chat_leave <Chat Room ID>
- Leave the chat room.
-
-toc_chat_accept <Chat Room ID>
- Accept a CHAT_INVITE message from TOC. The server will send a
- CHAT_JOIN in response.
-
-toc_get_info <username>
- Gets a user's info a GOTO_URL or ERROR message will be sent back to the
- client.
-
-toc_set_info <info information>
- Set the LOCATE user information. This is basic HTML.
- Remember to encode the info.
-
-toc_set_away [<away message>]
- if the away message is present, then the unavailable
- status flag is set for the user. If the away message
- is not present, then the unavailable status flag is
- unset. The away message is basic HTML, remember to
- encode the information.
-
-toc_get_dir <username>
- Gets a user's dir info a GOTO_URL or ERROR message will be sent back to the
- client.
-
-toc_set_dir <info information>
- Set the DIR user information. This is a colon separated fields as in:
- "first name":"middle name":"last name":"maiden name":"city":"state":"country":"email":"allow web searches"
- Should return a DIR_STATUS msg. Having anything in the "allow web searches"
- field allows people to use web-searches to find your directory info.
- Otherwise, they'd have to use the client.
-
-toc_dir_search <info information>
- Perform a search of the Oscar Directory, using colon separated fields as in:
- "first name":"middle name":"last name":"maiden name":"city":"state":"country":"email"
- Returns either a GOTO_URL or ERROR msg.
-
-toc_set_idle <idle secs>
- Set idle information. If <idle secs> is 0 then the user isn't idle at all.
- If <idle secs> is greater then 0 then the user has already been idle
- for <idle secs> number of seconds. The server will automatically
- keep incrementing this number, so do not repeatedly call with new
- idle times.
-
-toc_set_caps [ <Capability 1> [<Capability 2> [...]]]
- Set my capabilities. All capabilities that we support need to
- be sent at the same time. Capabilities are represented by
- UUIDs.
-
-toc_rvous_propose - Not Implemented Yet
-
-toc_rvous_accept <nick> <cookie> <service> <tlvlist>
- Accept a rendezvous proposal from the user <nick>.
- <cookie> is the cookie from the RVOUS_PROPOSE
- message. <service> is the UUID the proposal was
- for. <tlvlist> contains a list of tlv tags followed by
- base64 encoded values.
-
-toc_rvous_cancel <nick> <cookie> <service> <tlvlist>
- Cancel a rendezvous proposal from the user <nick>.
- <cookie> is the cookie from the RVOUS_PROPOSE
- message. <service> is the UUID the proposal was
- for. <tlvlist> contains a list of tlv tags followed by
- base64 encoded values.
-
-toc_format_nickname <new_format>
- Reformat a user's nickname. An ADMIN_NICK_STATUS or ERROR message will
- be sent back to the client.
-
-toc_change_passwd <existing_passwd new_passwd>
- Change a user's password. An ADMIN_PASSWD_STATUS or ERROR message will
- be sent back to the client.
-
-
-TOC -> Client
-==============
-All user names from TOC to client are NOT normalized, and are
-sent as they should be displayed. String are NOT encoded, instead
-we use colons as separators. So that you can have colons inside
-of messages, everything after the colon before :<Message> should
-be considered part of the message (ie don't just "split" on colons,
-instead split with a max number of results.)
-
-
-SIGN_ON:<Client Version Supported>
- This is sent after a successful toc_signon command is sent to TOC.
- If the command was unsuccessful either the FLAP connection will
- be dropped or you will receive a ERROR message.
-
-CONFIG:<config>
- A user's config. Config can be empty in which case the host was not able to
- retrieve it, or a config didn't exist for the user. See toc_set_config
- above for the format.
-
-NICK:<Nickname>
- Tells you your correct nickname (ie how it should be capitalized and
- spacing)
-
-IM_IN:<Source User>:<Auto Response T/F?>:<Message>
- Receive an IM from some one. Everything after the third colon is
- the incoming message, including other colons.
-
-UPDATE_BUDDY:<Buddy User>:<Online? T/F>:<Evil Amount>:<Signon Time>:<IdleTime>:<UC>
- This one command handles arrival/depart/updates. Evil Amount is
- a percentage, Signon Time is UNIX epoc, idle time is in minutes, UC (User Class)
- is a two/three character string.
- uc[0]:
- ' ' - Ignore
- 'A' - On AOL
- uc[1]
- ' ' - Ignore
- 'A' - Oscar Admin
- 'U' - Oscar Unconfirmed
- 'O' - Oscar Normal
- uc[2]
- '\0' - Ignore
- ' ' - Ignore
- 'U' - The user has set their unavailable flag.
-
-
-
-ERROR:<Error Code>:Var args
- * General Errors *
- 901 - $1 not currently available
- 902 - Warning of $1 not currently available
- 903 - A message has been dropped, you are exceeding
- the server speed limit
-
- * Admin Errors *
- 911 - Error validating input
- 912 - Invalid account
- 913 - Error encountered while processing request
- 914 - Service unavailable
-
- * Chat Errors *
- 950 - Chat in $1 is unavailable.
-
- * IM & Info Errors *
- 960 - You are sending message too fast to $1
- 961 - You missed an im from $1 because it was too big.
- 962 - You missed an im from $1 because it was sent too fast.
-
- * Dir Errors *
- 970 - Failure
- 971 - Too many matches
- 972 - Need more qualifiers
- 973 - Dir service temporarily unavailable
- 974 - Email lookup restricted
- 975 - Keyword Ignored
- 976 - No Keywords
- 977 - Language not supported
- 978 - Country not supported
- 979 - Failure unknown $1
-
- * Auth errors *
- 980 - Incorrect nickname or password.
- 981 - The service is temporarily unavailable.
- 982 - Your warning level is currently too high to sign on.
- 983 - You have been connecting and
- disconnecting too frequently. Wait 10 minutes and try again.
- If you continue to try, you will need to wait even longer.
- 989 - An unknown signon error has occurred $1
-
-
-EVILED:<new evil>:<name of eviler, blank if anonymous>
- The user was just eviled.
-
-CHAT_JOIN:<Chat Room Id>:<Chat Room Name>
- We were able to join this chat room. The Chat Room Id is
- internal to TOC.
-
-CHAT_IN:<Chat Room Id>:<Source User>:<Whisper? T/F>:<Message>
- A chat message was sent in a chat room.
-
-CHAT_UPDATE_BUDDY:<Chat Room Id>:<Inside? T/F>:<User 1>:<User 2>...
- This one command handles arrival/departs from a chat room. The
- very first message of this type for each chat room contains the
- users already in the room.
-
-CHAT_INVITE:<Chat Room Name>:<Chat Room Id>:<Invite Sender>:<Message>
- We are being invited to a chat room.
-
-CHAT_LEFT:<Chat Room Id>
- Tells tic connection to chat room has been dropped
-
-GOTO_URL:<Window Name>:<Url>
- Goto a URL. Window Name is the suggested internal name of the window
- to use. (Java supports this.)
-
-DIR_STATUS:<Return Code>:<Optional args>
- <Return Code> is always 0 for success status.
-
-ADMIN_NICK_STATUS:<Return Code>:<Optional args>
- <Return Code> is always 0 for success status.
-
-ADMIN_PASSWD_STATUS:<Return Code>:<Optional args>
- <Return Code> is always 0 for success status.
-
-
-PAUSE
- Tells TIC to pause so we can do migration
-
-RVOUS_PROPOSE:<user>:<uuid>:<cookie>:<seq>:<rip>:<pip>:<vip>:<port>
- [:tlv tag1:tlv value1[:tlv tag2:tlv value2[:...]]]
- Another user has proposed that we rendezvous with them to
- perform the service specified by <uuid>. They want us
- to connect to them, we have their rendezvous ip, their
- proposer_ip, and their verified_ip. The tlv values are
- base64 encoded.
-
-Typical Signon Process
-======================
-Except for the section marked optional this is an sequential
-process. Each line MUST occur before the following line.
-
-* Client connects to TOC
-* Client sends "FLAPON\r\n\r\n"
-* TOC sends Client FLAP SIGNON
-* Client sends TOC FLAP SIGNON
-* Client sends TOC "toc_signon" message
-* if login fails TOC drops client's connection
- else TOC sends client SIGN_ON reply
-* if Client doesn't support version it drops the connection
-
-[BEGIN OPTIONAL]
- * TOC sends Client CONFIG
- * Client sends TOC permit/deny stuff
- * Client sends TOC toc_add_buddy message
-[END OPTIONAL]
-
-* Client sends TOC toc_init_done message
-
-
-SFLAP Documentation
-===================
-SFLAP is pretty much a FLAP connection except the DATA frame payload is a null
-terminated string when traveling from client to host, it is NOT null
-terminated when traveling from host to client. The FLAP Header is binary
-data, and is in network byte order. The data portion is at offset 6, after the
-header. The sequence number is sequential in each direction. So
-packets from the server to client have one sequence number, while
-the packets from the client to server have an independent
-increasing number.
-
-FLAP Header (6 bytes)
------------
-Offset Size Type
-0 1 ASTERISK (literal ASCII '*')
-1 1 Frame Type
-2 2 Sequence Number
-4 2 Data Length
-
-
-Valid Frame Type Values
------------------------
-1 SIGNON
-2 DATA
-3 ERROR (Not used by TOC)
-4 SIGNOFF (Not used by TOC)
-5 KEEP_ALIVE
-
-
-TOC SIGNON FRAME TYPE
----------------------
-Sequence Number contains the initial sequence number used in each direction.
-Data Length contains the payload length, with the payload described
-below. The payload area is NOT null terminated.
-
-Host To Client:
- 4 byte FLAP version (1)
-
-Client To Host:
- 4 byte FLAP version (1)
- 2 byte TLV Tag (1)
- 2 byte Normalized User Name Length
- N byte Normalized User Name (NOT null terminated)
-
-
-TOC DATA FRAME TYPE
--------------------
-Sequence Number contains the next sequence number.
-Data Length is the length of the payload, including the null termination
-from client to host.
-
diff --git a/libpurple/protocols/toc/toc.c b/libpurple/protocols/toc/toc.c
deleted file mode 100644
index 95b9d926b2..0000000000
--- a/libpurple/protocols/toc/toc.c
+++ /dev/null
@@ -1,2338 +0,0 @@
-/*
- * purple
- *
- * Copyright (C) 1998-1999, Mark Spencer <markster@marko.net>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
- *
- */
-#include "internal.h"
-
-#include "account.h"
-#include "accountopt.h"
-#include "conversation.h"
-#include "debug.h"
-#include "notify.h"
-#include "privacy.h"
-#include "proxy.h"
-#include "prpl.h"
-#include "request.h"
-#include "util.h"
-#include "version.h"
-
-static PurplePlugin *my_protocol = NULL;
-
-#define REVISION "penguin"
-
-#define TYPE_SIGNON 1
-#define TYPE_DATA 2
-#define TYPE_ERROR 3
-#define TYPE_SIGNOFF 4
-#define TYPE_KEEPALIVE 5
-
-#define FLAPON "FLAPON\r\n\r\n"
-#define ROAST "Tic/Toc"
-
-#define TOC_HOST "toc.oscar.aol.com"
-#define TOC_PORT 9898
-#define AUTH_HOST "login.oscar.aol.com"
-#define AUTH_PORT 5190
-#define LANGUAGE "english"
-
-#define STATE_OFFLINE 0
-#define STATE_FLAPON 1
-#define STATE_SIGNON_REQUEST 2
-#define STATE_ONLINE 3
-#define STATE_PAUSE 4
-
-#define VOICE_UID "09461341-4C7F-11D1-8222-444553540000"
-#define FILE_SEND_UID "09461343-4C7F-11D1-8222-444553540000"
-#define IMAGE_UID "09461345-4C7F-11D1-8222-444553540000"
-#define B_ICON_UID "09461346-4C7F-11D1-8222-444553540000"
-#define STOCKS_UID "09461347-4C7F-11D1-8222-444553540000"
-#define FILE_GET_UID "09461348-4C7F-11D1-8222-444553540000"
-#define GAMES_UID "0946134a-4C7F-11D1-8222-444553540000"
-
-#define UC_UNAVAILABLE 0x01
-#define UC_AOL 0x02
-#define UC_ADMIN 0x04
-#define UC_UNCONFIRMED 0x08
-#define UC_NORMAL 0x10
-#define UC_WIRELESS 0x20
-
-struct ft_request {
- PurpleConnection *gc;
- char *user;
- char UID[2048];
- char *cookie;
- char *ip;
- int port;
- char *message;
- char *filename;
- int files;
- int size;
-};
-
-struct buddy_icon {
- guint32 hash;
- guint32 len;
- time_t time;
- void *data;
-};
-
-struct toc_data {
- int toc_fd;
- char toc_ip[20];
- int seqno;
- int state;
-};
-
-struct sflap_hdr {
- unsigned char ast;
- unsigned char type;
- unsigned short seqno;
- unsigned short len;
-};
-
-struct signon {
- unsigned int ver;
- unsigned short tag;
- unsigned short namelen;
- char username[80];
-};
-
-/* constants to identify proto_opts */
-#define USEROPT_AUTH 0
-#define USEROPT_AUTHPORT 1
-
-#define TOC_CONNECT_STEPS 3
-
-static void toc_login_callback(gpointer, gint, PurpleInputCondition);
-static void toc_callback(gpointer, gint, PurpleInputCondition);
-
-/* ok. this function used to take username/password, and return 0 on success.
- * now, it takes username/password, and returns NULL on error or a new purple_connection
- * on success. */
-static void toc_login(PurpleAccount *account)
-{
- PurpleConnection *gc;
- struct toc_data *tdt;
- char buf[80];
-
- gc = purple_account_get_connection(account);
- gc->proto_data = tdt = g_new0(struct toc_data, 1);
- gc->flags |= PURPLE_CONNECTION_HTML;
- gc->flags |= PURPLE_CONNECTION_AUTO_RESP;
-
- g_snprintf(buf, sizeof buf, _("Looking up %s"),
- purple_account_get_string(account, "server", TOC_HOST));
- purple_connection_update_progress(gc, buf, 0, TOC_CONNECT_STEPS);
-
- purple_debug(PURPLE_DEBUG_INFO, "toc", "Client connects to TOC\n");
- if (purple_proxy_connect(gc, account,
- purple_account_get_string(account, "server", TOC_HOST),
- purple_account_get_int(account, "port", TOC_PORT),
- toc_login_callback, gc) != 0 || !account->gc) {
- g_snprintf(buf, sizeof(buf), _("Connect to %s failed"),
- purple_account_get_string(account, "server", TOC_HOST));
- purple_connection_error(gc, buf);
- return;
- }
-}
-
-static void toc_login_callback(gpointer data, gint source, PurpleInputCondition cond)
-{
- PurpleConnection *gc = data;
- struct toc_data *tdt;
- char buf[80];
- struct sockaddr_in name;
- socklen_t namelen;
-
- if (!PURPLE_CONNECTION_IS_VALID(gc)) {
- if (source >= 0)
- close(source);
- return;
- }
-
- tdt = gc->proto_data;
-
- if (source == -1) {
- /* we didn't successfully connect. tdt->toc_fd is valid here */
- purple_connection_error(gc, _("Unable to connect."));
- return;
- }
- tdt->toc_fd = source;
-
- /*
- * Copy the IP that we're connected to. We need this because "GOTO_URL"'s
- * should open on the exact server we're connected to. toc.oscar.aol.com
- * doesn't work because that hostname resolves to multiple IP addresses.
- */
- if (getpeername(tdt->toc_fd, (struct sockaddr *)&name, &namelen) == 0)
- strncpy(tdt->toc_ip, inet_ntoa(name.sin_addr), sizeof(tdt->toc_ip));
- else
- strncpy(tdt->toc_ip, purple_account_get_string(gc->account, "server", TOC_HOST), sizeof(tdt->toc_ip));
-
- purple_debug(PURPLE_DEBUG_INFO, "toc",
- "Client sends \"FLAPON\\r\\n\\r\\n\"\n");
- if (write(tdt->toc_fd, FLAPON, strlen(FLAPON)) < 0) {
- purple_connection_error(gc, _("Disconnected."));
- return;
- }
- tdt->state = STATE_FLAPON;
-
- /* i know a lot of people like to look at purple to see how TOC works. so i'll comment
- * on what this does. it's really simple. when there's data ready to be read from the
- * toc_fd file descriptor, toc_callback is called, with gc passed as its data arg. */
- gc->inpa = purple_input_add(tdt->toc_fd, PURPLE_INPUT_READ, toc_callback, gc);
-
- g_snprintf(buf, sizeof(buf), _("Signon: %s"), purple_account_get_username(gc->account));
- purple_connection_update_progress(gc, buf, 1, TOC_CONNECT_STEPS);
-}
-
-static void toc_close(PurpleConnection *gc)
-{
- if (gc->inpa > 0)
- purple_input_remove(gc->inpa);
- gc->inpa = 0;
- close(((struct toc_data *)gc->proto_data)->toc_fd);
- g_free(gc->proto_data);
-}
-
-static void toc_build_config(PurpleAccount *account, char *s, int len, gboolean show)
-{
- PurpleBlistNode *gnode, *cnode, *bnode;
- PurpleGroup *g;
- PurpleBuddy *b;
- GSList *plist = account->permit;
- GSList *dlist = account->deny;
-
- int pos = 0;
-
- if (!account->perm_deny)
- account->perm_deny = 1;
-
- pos += g_snprintf(&s[pos], len - pos, "m %d\n", account->perm_deny);
- for(gnode = purple_get_blist()->root; gnode && len > pos; gnode = gnode->next) {
- g = (PurpleGroup *)gnode;
- if(!PURPLE_BLIST_NODE_IS_GROUP(gnode))
- continue;
- if(purple_group_on_account(g, account)) {
- pos += g_snprintf(&s[pos], len - pos, "g %s\n", g->name);
- for(cnode = gnode->child; cnode; cnode = cnode->next) {
- if(!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
- continue;
- for(bnode = gnode->child; bnode && len > pos; bnode = bnode->next) {
- b = (PurpleBuddy *)bnode;
- if(!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
- continue;
- if(b->account == account) {
- pos += g_snprintf(&s[pos], len - pos, "b %s%s%s\n",
- b->name,
- (show && b->alias) ? ":" : "",
- (show && b->alias) ? b->alias : "");
- }
- }
- }
- }
- }
-
- while (len > pos && plist) {
- pos += g_snprintf(&s[pos], len - pos, "p %s\n", (char *)plist->data);
- plist = plist->next;
- }
-
- while (len > pos && dlist) {
- pos += g_snprintf(&s[pos], len - pos, "d %s\n", (char *)dlist->data);
- dlist = dlist->next;
- }
-}
-
-char *escape_message(const char *msg)
-{
- char *ret;
- int i, j;
-
- if (!msg)
- return NULL;
-
- /* Calculate the length after escaping */
- for (i=0, j=0; msg[i]; i++)
- switch (msg[i]) {
- case '$':
- case '[':
- case ']':
- case '(':
- case ')':
- j++;
- default:
- j++;
- }
-
- /* Allocate a string */
- ret = (char *)g_malloc((j+1) * sizeof(char));
-
- /* Copy the string */
- for (i=0, j=0; msg[i]; i++)
- switch (msg[i]) {
- case '$':
- case '[':
- case ']':
- case '(':
- case ')':
- ret[j++] = '\\';
- default:
- ret[j++] = msg[i];
- }
- ret[j] = '\0';
-
- return ret;
-}
-
-/*
- * Duplicates the input string, replacing each \n with a <BR>, and
- * escaping a few other characters.
- */
-char *escape_text(const char *msg)
-{
- char *ret;
- int i, j;
-
- if (!msg)
- return NULL;
-
- /* Calculate the length after escaping */
- for (i=0, j=0; msg[i]; i++)
- switch (msg[i]) {
- case '\n':
- j += 4;
- break;
- case '{':
- case '}':
- case '\\':
- case '"':
- j += 1;
- default:
- j += 1;
- }
-
- /* Allocate a string */
- ret = (char *)malloc((j+1) * sizeof(char));
-
- /* Copy the string */
- for (i=0, j=0; msg[i]; i++)
- switch (msg[i]) {
- case '\n':
- ret[j++] = '<';
- ret[j++] = 'B';
- ret[j++] = 'R';
- ret[j++] = '>';
- break;
- case '{':
- case '}':
- case '\\':
- case '"':
- ret[j++] = '\\';
- default:
- ret[j++] = msg[i];
- }
- ret[j] = '\0';
-
- return ret;
-}
-
-static int sflap_send(PurpleConnection *gc, const char *buf, int olen, int type)
-{
- struct toc_data *tdt = (struct toc_data *)gc->proto_data;
- int len;
- int slen = 0;
- int ret;
- struct sflap_hdr hdr;
- char *escaped, *obuf;
-
- if (tdt->state == STATE_PAUSE)
- /* TOC has given us the PAUSE message; sending could cause a disconnect
- * so we just return here like everything went through fine */
- return 0;
-
- if (olen < 0) {
- escaped = escape_message(buf);
- len = strlen(escaped);
- } else {
- escaped = g_memdup(buf, olen);
- len = olen;
- }
-
- /*
- * One _last_ 2048 check here! This shouldn't ever
- * get hit though, hopefully. If it gets hit on an IM
- * It'll lose the last " and the message won't go through,
- * but this'll stop a segfault.
- */
- if (len > MSG_LEN) {
- purple_debug(PURPLE_DEBUG_WARNING, "toc", "message too long, truncating\n");
- escaped[MSG_LEN - 1] = '\0';
- len = MSG_LEN;
- }
-
- if (olen < 0)
- purple_debug(PURPLE_DEBUG_INFO, "toc", "C: %s\n", escaped);
-
- hdr.ast = '*';
- hdr.type = type;
- hdr.seqno = htons(tdt->seqno++ & 0xffff);
- hdr.len = htons(len + (type == TYPE_SIGNON ? 0 : 1));
-
- obuf = (char *)malloc((sizeof(hdr)+len+1) * sizeof(char));
- memcpy(obuf, &hdr, sizeof(hdr));
- slen += sizeof(hdr);
-
- memcpy(&obuf[slen], escaped, len);
- slen += len;
-
- if (type != TYPE_SIGNON) {
- obuf[slen] = '\0';
- slen += 1;
- }
-
- ret = write(tdt->toc_fd, obuf, slen);
- free(obuf);
- g_free(escaped);
-
- return ret;
-}
-
-static int toc_send_raw(PurpleConnection *gc, const char *buf, int len)
-{
- return sflap_send(gc, buf, len, 2);
-}
-
-static int wait_reply(PurpleConnection *gc, char *buffer, size_t buflen)
-{
- struct toc_data *tdt = (struct toc_data *)gc->proto_data;
- struct sflap_hdr *hdr;
- int ret;
-
- if (read(tdt->toc_fd, buffer, sizeof(struct sflap_hdr)) < 0) {
- purple_debug(PURPLE_DEBUG_ERROR, "toc", "Couldn't read flap header\n");
- return -1;
- }
-
- hdr = (struct sflap_hdr *)buffer;
-
- if (buflen < ntohs(hdr->len)) {
- /* fake like there's a read error */
- purple_debug(PURPLE_DEBUG_ERROR, "toc",
- "buffer too small (have %d, need %d)\n",
- buflen, ntohs(hdr->len));
- return -1;
- }
-
- if (ntohs(hdr->len) > 0) {
- int count = 0;
- ret = 0;
- do {
- count += ret;
- ret = read(tdt->toc_fd,
- buffer + sizeof(struct sflap_hdr) + count, ntohs(hdr->len) - count);
- } while (count + ret < ntohs(hdr->len) && ret > 0);
- buffer[sizeof(struct sflap_hdr) + count + ret] = '\0';
- return ret;
- } else
- return 0;
-}
-
-static unsigned char *roast_password(const char *pass)
-{
- /* Trivial "encryption" */
- static unsigned char rp[256];
- static char *roast = ROAST;
- int pos = 2;
- int x;
- strcpy(rp, "0x");
- for (x = 0; (x < 150) && pass[x]; x++)
- pos += sprintf(&rp[pos], "%02x", pass[x] ^ roast[x % strlen(roast)]);
- rp[pos] = '\0';
- return rp;
-}
-
-static void toc_got_info(void *data, const char *url_text, size_t len)
-{
- if (!url_text)
- return;
-
- purple_notify_formatted(data, NULL, _("Buddy Information"), NULL,
- url_text, NULL, NULL);
-}
-
-static char *show_error_message()
-{
- int no = atoi(strtok(NULL, ":"));
- char *w = strtok(NULL, ":");
- static char buf[256];
-
- switch(no) {
- case 69:
- g_snprintf(buf, sizeof(buf), _("Unable to write file %s."), w);
- break;
- case 169:
- g_snprintf(buf, sizeof(buf), _("Unable to read file %s."), w);
- break;
- case 269:
- g_snprintf(buf, sizeof(buf), _("Message too long, last %s bytes truncated."), w);
- break;
- case 901:
- g_snprintf(buf, sizeof(buf), _("%s not currently logged in."), w);
- break;
- case 902:
- g_snprintf(buf, sizeof(buf), _("Warning of %s not allowed."), w);
- break;
- case 903:
- g_snprintf(buf, sizeof(buf), _("A message has been dropped, you are exceeding the server speed limit."));
- break;
- case 950:
- g_snprintf(buf, sizeof(buf), _("Chat in %s is not available."), w);
- break;
- case 960:
- g_snprintf(buf, sizeof(buf), _("You are sending messages too fast to %s."), w);
- break;
- case 961:
- g_snprintf(buf, sizeof(buf), _("You missed an IM from %s because it was too big."), w);
- break;
- case 962:
- g_snprintf(buf, sizeof(buf), _("You missed an IM from %s because it was sent too fast."), w);
- break;
- case 970:
- g_snprintf(buf, sizeof(buf), _("Failure."));
- break;
- case 971:
- g_snprintf(buf, sizeof(buf), _("Too many matches."));
- break;
- case 972:
- g_snprintf(buf, sizeof(buf), _("Need more qualifiers."));
- break;
- case 973:
- g_snprintf(buf, sizeof(buf), _("Dir service temporarily unavailable."));
- break;
- case 974:
- g_snprintf(buf, sizeof(buf), _("Email lookup restricted."));
- break;
- case 975:
- g_snprintf(buf, sizeof(buf), _("Keyword ignored."));
- break;
- case 976:
- g_snprintf(buf, sizeof(buf), _("No keywords."));
- break;
- case 977:
- g_snprintf(buf, sizeof(buf), _("User has no directory information."));
- /* g_snprintf(buf, sizeof(buf), _("Language not supported.")); */
- break;
- case 978:
- g_snprintf(buf, sizeof(buf), _("Country not supported."));
- break;
- case 979:
- g_snprintf(buf, sizeof(buf), _("Failure unknown: %s."), w);
- break;
- case 980:
- g_snprintf(buf, sizeof(buf), _("Incorrect username or password."));
- break;
- case 981:
- g_snprintf(buf, sizeof(buf), _("The service is temporarily unavailable."));
- break;
- case 982:
- g_snprintf(buf, sizeof(buf), _("Your warning level is currently too high to log in."));
- break;
- case 983:
- g_snprintf(buf, sizeof(buf), _("You have been connecting and disconnecting too frequently. Wait ten minutes and try again. If you continue to try, you will need to wait even longer."));
- break;
- g_snprintf(buf, sizeof(buf), _("An unknown signon error has occurred: %s."), w);
- break;
- default:
- g_snprintf(buf, sizeof(buf), _("An unknown error, %d, has occurred. Info: %s"), no, w);
- }
-
- return buf;
-}
-
-static void
-parse_toc_buddy_list(PurpleAccount *account, char *config)
-{
- char *c;
- char current[256];
- GList *buddies = NULL;
-
- if (config == NULL)
- return;
-
- /* skip "CONFIG:" (if it exists) */
- c = strncmp(config + 6 /* sizeof(struct sflap_hdr) */ , "CONFIG:", strlen("CONFIG:")) ?
- strtok(config, "\n") :
- strtok(config + 6 /* sizeof(struct sflap_hdr) */ + strlen("CONFIG:"), "\n");
- do {
- if (c == NULL)
- break;
- if (*c == 'g') {
- char *utf8 = NULL;
- utf8 = purple_utf8_try_convert(c + 2);
- if (utf8 == NULL) {
- g_strlcpy(current, _("Invalid Groupname"), sizeof(current));
- } else {
- g_strlcpy(current, utf8, sizeof(current));
- g_free(utf8);
- }
- if (!purple_find_group(current)) {
- PurpleGroup *g = purple_group_new(current);
- purple_blist_add_group(g, NULL);
- }
- } else if (*c == 'b') { /*&& !purple_find_buddy(user, c + 2)) {*/
- char nm[80], sw[388], *a, *utf8 = NULL;
-
- if ((a = strchr(c + 2, ':')) != NULL) {
- *a++ = '\0'; /* nul the : */
- }
-
- g_strlcpy(nm, c + 2, sizeof(nm));
- if (a) {
- utf8 = purple_utf8_try_convert(a);
- if (utf8 == NULL) {
- purple_debug(PURPLE_DEBUG_ERROR, "toc blist",
- "Failed to convert alias for "
- "'%s' to UTF-8\n", nm);
- }
- }
- if (utf8 == NULL) {
- sw[0] = '\0';
- } else {
- /* This can leave a partial sequence at the end,
- * but who cares? */
- g_strlcpy(sw, utf8, sizeof(sw));
- g_free(utf8);
- }
-
- if (!purple_find_buddy(account, nm)) {
- PurpleBuddy *b = purple_buddy_new(account, nm, sw);
- PurpleGroup *g = purple_find_group(current);
- purple_blist_add_buddy(b, NULL, g, NULL);
- buddies = g_list_append(buddies, b);
- }
- } else if (*c == 'p') {
- purple_privacy_permit_add(account, c + 2, TRUE);
- } else if (*c == 'd') {
- purple_privacy_deny_add(account, c + 2, TRUE);
- } else if (!strncmp("toc", c, 3)) {
- sscanf(c + strlen(c) - 1, "%d", &account->perm_deny);
- purple_debug(PURPLE_DEBUG_MISC, "toc blist",
- "permdeny: %d\n", account->perm_deny);
- if (account->perm_deny == 0)
- account->perm_deny = PURPLE_PRIVACY_ALLOW_ALL;
- } else if (*c == 'm') {
- sscanf(c + 2, "%d", &account->perm_deny);
- purple_debug(PURPLE_DEBUG_MISC, "toc blist",
- "permdeny: %d\n", account->perm_deny);
- if (account->perm_deny == 0)
- account->perm_deny = PURPLE_PRIVACY_ALLOW_ALL;
- }
- } while ((c = strtok(NULL, "\n")));
-
- if (account->gc) {
- if (buddies != NULL) {
- purple_account_add_buddies(account, buddies);
- g_list_free(buddies);
- }
- serv_set_permit_deny(account->gc);
- }
- g_list_free(buddies);
-}
-
-static void toc_callback(gpointer data, gint source, PurpleInputCondition condition)
-{
- PurpleConnection *gc = (PurpleConnection *)data;
- PurpleAccount *account = purple_connection_get_account(gc);
- struct toc_data *tdt = (struct toc_data *)gc->proto_data;
- struct sflap_hdr *hdr;
- struct signon so;
- char buf[8 * 1024], *c;
- char snd[BUF_LEN * 2];
- const char *username = purple_account_get_username(account);
- char *password;
- PurpleBuddy *buddy;
-
- /* there's data waiting to be read, so read it. */
- if (wait_reply(gc, buf, 8 * 1024) <= 0) {
- purple_connection_error(gc, _("Connection Closed"));
- return;
- }
-
- if (tdt->state == STATE_FLAPON) {
- hdr = (struct sflap_hdr *)buf;
- if (hdr->type != TYPE_SIGNON)
- purple_debug(PURPLE_DEBUG_ERROR, "toc", "hdr->type != TYPE_SIGNON\n");
- else
- purple_debug(PURPLE_DEBUG_INFO, "toc",
- "TOC sends Client FLAP SIGNON\n");
- tdt->seqno = ntohs(hdr->seqno);
- tdt->state = STATE_SIGNON_REQUEST;
-
- purple_debug(PURPLE_DEBUG_INFO, "toc", "Client sends TOC FLAP SIGNON\n");
- g_snprintf(so.username, sizeof(so.username), "%s", username);
- so.ver = htonl(1);
- so.tag = htons(1);
- so.namelen = htons(strlen(so.username));
- if (sflap_send(gc, (char *)&so, ntohs(so.namelen) + 8, TYPE_SIGNON) < 0) {
- purple_connection_error(gc, _("Disconnected."));
- return;
- }
-
- purple_debug(PURPLE_DEBUG_INFO, "toc",
- "Client sends TOC \"toc_signon\" message\n");
- /* i hate icq. */
- if (username[0] >= '0' && username[0] <= '9')
- password = g_strndup(purple_connection_get_password(gc), 8);
- else
- password = g_strdup(purple_connection_get_password(gc));
- g_snprintf(snd, sizeof snd, "toc_signon %s %d %s %s %s \"%s\"",
- AUTH_HOST, AUTH_PORT, purple_normalize(account, username),
- roast_password(password), LANGUAGE, REVISION);
- g_free(password);
- if (sflap_send(gc, snd, -1, TYPE_DATA) < 0) {
- purple_connection_error(gc, _("Disconnected."));
- return;
- }
-
- purple_connection_update_progress(gc, _("Waiting for reply..."), 2, TOC_CONNECT_STEPS);
- return;
- }
-
- if (tdt->state == STATE_SIGNON_REQUEST) {
- purple_debug(PURPLE_DEBUG_INFO, "toc", "TOC sends client SIGN_ON reply\n");
- if (g_ascii_strncasecmp(buf + sizeof(struct sflap_hdr), "SIGN_ON", strlen("SIGN_ON"))) {
- purple_debug(PURPLE_DEBUG_ERROR, "toc",
- "Didn't get SIGN_ON! buf was: %s\n",
- buf + sizeof(struct sflap_hdr));
- if (!g_ascii_strncasecmp(buf + sizeof(struct sflap_hdr), "ERROR", 5)) {
- strtok(buf + sizeof(struct sflap_hdr), ":");
- purple_connection_error(gc, show_error_message());
- } else
- purple_connection_error(gc, _("Authentication failed"));
- return;
- }
- /* we're supposed to check that it's really TOC v1 here but we know it is ;) */
- purple_debug(PURPLE_DEBUG_INFO, "toc",
- "TOC version: %s\n", buf + sizeof(struct sflap_hdr) + 8);
-
- /* we used to check for the CONFIG here, but we'll wait until we've sent our
- * version of the config and then the toc_init_done message. we'll come back to
- * the callback in a better state if we get CONFIG anyway */
-
- tdt->state = STATE_ONLINE;
-
- purple_connection_set_state(gc, PURPLE_CONNECTED);
-
- /*
- * Add me to my buddy list so that we know the time when
- * the server thinks I signed on.
- */
- buddy = purple_buddy_new(account, username, NULL);
- /* XXX - Pick a group to add to */
- /* purple_blist_add(buddy, NULL, g, NULL); */
- purple_account_add_buddy(gc, buddy);
-
- /* Client sends TOC toc_init_done message */
- purple_debug(PURPLE_DEBUG_INFO, "toc",
- "Client sends TOC toc_init_done message\n");
- g_snprintf(snd, sizeof snd, "toc_init_done");
- sflap_send(gc, snd, -1, TYPE_DATA);
-
- /*
- g_snprintf(snd, sizeof snd, "toc_set_caps %s %s %s",
- FILE_SEND_UID, FILE_GET_UID, B_ICON_UID);
- */
- g_snprintf(snd, sizeof snd, "toc_set_caps %s %s", FILE_SEND_UID, FILE_GET_UID);
- sflap_send(gc, snd, -1, TYPE_DATA);
-
- return;
- }
-
- purple_debug(PURPLE_DEBUG_INFO, "toc", "S: %s\n",
- buf + sizeof(struct sflap_hdr));
-
- c = strtok(buf + sizeof(struct sflap_hdr), ":"); /* Ditch the first part */
-
- if (!g_ascii_strcasecmp(c, "SIGN_ON")) {
- /* we should only get here after a PAUSE */
- if (tdt->state != STATE_PAUSE)
- purple_debug(PURPLE_DEBUG_ERROR, "toc",
- "got SIGN_ON but not PAUSE!\n");
- else {
- tdt->state = STATE_ONLINE;
- g_snprintf(snd, sizeof snd, "toc_signon %s %d %s %s %s \"%s\"",
- AUTH_HOST, AUTH_PORT,
- purple_normalize(account, purple_account_get_username(account)),
- roast_password(purple_connection_get_password(gc)),
- LANGUAGE, REVISION);
- if (sflap_send(gc, snd, -1, TYPE_DATA) < 0) {
- purple_connection_error(gc, _("Disconnected."));
- return;
- }
- g_snprintf(snd, sizeof snd, "toc_init_done");
- sflap_send(gc, snd, -1, TYPE_DATA);
- purple_notify_info(gc, NULL,
- _("TOC has come back from its pause. You may "
- "now send messages again."), NULL);
- }
- } else if (!g_ascii_strcasecmp(c, "CONFIG")) {
- c = strtok(NULL, ":");
- parse_toc_buddy_list(account, c);
- } else if (!g_ascii_strcasecmp(c, "NICK")) {
- /* ignore NICK so that things get imported/exported properly
- c = strtok(NULL, ":");
- g_snprintf(gc->username, sizeof(gc->username), "%s", c);
- */
- } else if (!g_ascii_strcasecmp(c, "IM_IN")) {
- char *away, *message;
- int a = 0;
-
- c = strtok(NULL, ":");
- away = strtok(NULL, ":");
-
- message = away;
- while (*message && (*message != ':'))
- message++;
- message++;
-
- a = (away && (*away == 'T')) ? PURPLE_MESSAGE_AUTO_RESP : 0;
-
- serv_got_im(gc, c, message, a, time(NULL));
- } else if (!g_ascii_strcasecmp(c, "UPDATE_BUDDY")) {
- char *l, *uc, *tmp;
- gboolean logged_in;
- int evil, idle, type = 0;
- time_t signon, time_idle;
-
- c = strtok(NULL, ":"); /* name */
- l = strtok(NULL, ":"); /* online */
- sscanf(strtok(NULL, ":"), "%d", &evil);
- sscanf(strtok(NULL, ":"), "%ld", &signon);
- sscanf(strtok(NULL, ":"), "%d", &idle);
- uc = strtok(NULL, ":");
-
- logged_in = (l && (*l == 'T')) ? TRUE : FALSE;
-
- if (uc[0] == 'A')
- type |= UC_AOL;
- switch (uc[1]) {
- case 'A':
- type |= UC_ADMIN;
- break;
- case 'U':
- type |= UC_UNCONFIRMED;
- break;
- case 'O':
- type |= UC_NORMAL;
- break;
- case 'C':
- type |= UC_WIRELESS;
- break;
- default:
- break;
- }
- if (uc[2] == 'U')
- type |= UC_UNAVAILABLE;
-
- if (idle) {
- time(&time_idle);
- time_idle -= idle * 60;
- } else
- time_idle = 0;
-
- /*
- * If we have info for ourselves then set our display name, warning
- * level and official time of login.
- */
- tmp = g_strdup(purple_normalize(account, purple_account_get_username(gc->account)));
- if (!strcmp(tmp, purple_normalize(account, c))) {
- purple_connection_set_display_name(gc, c);
- /* XXX - What should the second parameter be here? */
- /* purple_prpl_got_account_warning_level(account, NULL, evil);*/
- purple_prpl_got_account_login_time(account, signon);
- }
- g_free(tmp);
-
- purple_prpl_got_user_status(account, c, (logged_in ? "online" : "offline"), NULL);
- purple_prpl_got_user_login_time(account, c, signon);
- if (time_idle > 0)
- purple_prpl_got_user_idle(account, c, TRUE, time_idle);
- else
- purple_prpl_got_user_idle(account, c, FALSE, 0);
- } else if (!g_ascii_strcasecmp(c, "ERROR")) {
- purple_notify_error(gc, NULL, show_error_message(), NULL);
- } else if (!g_ascii_strcasecmp(c, "EVILED")) {
- int lev;
- char *name;
-
- sscanf(strtok(NULL, ":"), "%d", &lev);
- name = strtok(NULL, ":");
-
- /* purple_prpl_got_account_warning_level(account, name, lev); */
- } else if (!g_ascii_strcasecmp(c, "CHAT_JOIN")) {
- char *name;
- int id;
-
- sscanf(strtok(NULL, ":"), "%d", &id);
- name = strtok(NULL, ":");
-
- serv_got_joined_chat(gc, id, name);
- } else if (!g_ascii_strcasecmp(c, "CHAT_IN")) {
- int id;
- PurpleMessageFlags flags;
- char *m, *who, *whisper;
-
- sscanf(strtok(NULL, ":"), "%d", &id);
- who = strtok(NULL, ":");
- whisper = strtok(NULL, ":");
- m = whisper;
- while (*m && (*m != ':'))
- m++;
- m++;
-
- flags = (whisper && (*whisper == 'T')) ? PURPLE_MESSAGE_WHISPER : 0;
-
- serv_got_chat_in(gc, id, who, flags, m, time((time_t)NULL));
- } else if (!g_ascii_strcasecmp(c, "CHAT_UPDATE_BUDDY")) {
- int id;
- char *in, *buddy;
- GSList *bcs = gc->buddy_chats;
- PurpleConversation *b = NULL;
- PurpleConvChat *chat;
-
- sscanf(strtok(NULL, ":"), "%d", &id);
- in = strtok(NULL, ":");
-
- chat = PURPLE_CONV_CHAT(b);
-
- while (bcs) {
- b = (PurpleConversation *)bcs->data;
- if (id == purple_conv_chat_get_id(chat))
- break;
- bcs = bcs->next;
- b = NULL;
- }
-
- if (!b)
- return;
-
- if (in && (*in == 'T'))
- while ((buddy = strtok(NULL, ":")) != NULL)
- purple_conv_chat_add_user(chat, buddy, NULL, PURPLE_CBFLAGS_NONE, TRUE);
- else
- while ((buddy = strtok(NULL, ":")) != NULL)
- purple_conv_chat_remove_user(chat, buddy, NULL);
- } else if (!g_ascii_strcasecmp(c, "CHAT_INVITE")) {
- char *name, *who, *message;
- int id;
- GHashTable *components = g_hash_table_new_full(g_str_hash, g_str_equal,
- g_free, g_free);
-
- name = strtok(NULL, ":");
- sscanf(strtok(NULL, ":"), "%d", &id);
- who = strtok(NULL, ":");
- message = strtok(NULL, ":");
-
- g_hash_table_replace(components, g_strdup("id"), g_strdup_printf("%d", id));
-
- serv_got_chat_invite(gc, name, who, message, components);
- } else if (!g_ascii_strcasecmp(c, "CHAT_LEFT")) {
- GSList *bcs = gc->buddy_chats;
- PurpleConversation *b = NULL;
- int id;
-
- sscanf(strtok(NULL, ":"), "%d", &id);
-
- while (bcs) {
- b = (PurpleConversation *)bcs->data;
- if (id == purple_conv_chat_get_id(PURPLE_CONV_CHAT(b)))
- break;
- b = NULL;
- bcs = bcs->next;
- }
-
- if (!b)
- return;
-
- if (b->window) {
- char error_buf[BUF_LONG];
- purple_conversation_set_account(b, NULL);
- g_snprintf(error_buf, sizeof error_buf, _("You have been disconnected"
- " from chat room %s."), b->name);
- purple_notify_error(gc, NULL, error_buf, NULL);
- } else
- serv_got_chat_left(gc, id);
- } else if (!g_ascii_strcasecmp(c, "GOTO_URL")) {
- char *name, *url, tmp[256];
-
- name = strtok(NULL, ":");
- url = strtok(NULL, ":");
-
- g_snprintf(tmp, sizeof(tmp), "http://%s:%d/%s", tdt->toc_ip,
- purple_account_get_int(gc->account, "port", TOC_PORT),
- url);
- purple_url_fetch(tmp, FALSE, NULL, FALSE, toc_got_info, gc);
- } else if (!g_ascii_strcasecmp(c, "DIR_STATUS")) {
- } else if (!g_ascii_strcasecmp(c, "ADMIN_NICK_STATUS")) {
- } else if (!g_ascii_strcasecmp(c, "ADMIN_PASSWD_STATUS")) {
- purple_notify_info(gc, NULL, _("Password Change Successful"), NULL);
- } else if (!g_ascii_strcasecmp(c, "PAUSE")) {
- tdt->state = STATE_PAUSE;
- } else if (!g_ascii_strcasecmp(c, "RVOUS_PROPOSE")) {
-#if 0
- char *user, *uuid, *cookie;
- int seq;
- char *rip, *pip, *vip, *trillian = NULL;
- int port;
-
- user = strtok(NULL, ":");
- uuid = strtok(NULL, ":");
- cookie = strtok(NULL, ":");
- sscanf(strtok(NULL, ":"), "%d", &seq);
- rip = strtok(NULL, ":");
- pip = strtok(NULL, ":");
- vip = strtok(NULL, ":");
- sscanf(strtok(NULL, ":"), "%d", &port);
-
- if (!strcmp(uuid, FILE_SEND_UID)) {
- /* they want us to get a file */
- int unk[4], i;
- char *messages[4], *tmp, *name;
- int subtype, files, totalsize = 0;
- struct ft_request *ft;
-
- for (i = 0; i < 4; i++) {
- trillian = strtok(NULL, ":");
- sscanf(trillian, "%d", &unk[i]);
- if (unk[i] == 10001)
- break;
- /* Trillian likes to send an empty token as a message, rather than
- no message at all. */
- if (*(trillian + strlen(trillian) +1) != ':')
- frombase64(strtok(NULL, ":"), &messages[i], NULL);
- }
-
- frombase64(strtok(NULL, ":"), &tmp, NULL);
-
- subtype = tmp[1];
- files = tmp[3];
-
- totalsize |= (tmp[4] << 24) & 0xff000000;
- totalsize |= (tmp[5] << 16) & 0x00ff0000;
- totalsize |= (tmp[6] << 8) & 0x0000ff00;
- totalsize |= (tmp[7] << 0) & 0x000000ff;
-
- if (!totalsize) {
- g_free(tmp);
- for (i--; i >= 0; i--)
- g_free(messages[i]);
- return;
- }
-
- name = tmp + 8;
-
- ft = g_new0(struct ft_request, 1);
- ft->cookie = g_strdup(cookie);
- ft->ip = g_strdup(pip);
- ft->port = port;
- if (i)
- ft->message = g_strdup(messages[0]);
- else
- ft->message = NULL;
- ft->filename = g_strdup(name);
- ft->user = g_strdup(user);
- ft->size = totalsize;
- ft->files = files;
- g_snprintf(ft->UID, sizeof(ft->UID), "%s", FILE_SEND_UID);
- ft->gc = gc;
-
- g_free(tmp);
- for (i--; i >= 0; i--)
- g_free(messages[i]);
-
- purple_debug(PURPLE_DEBUG_MISC, "toc",
- "English translation of RVOUS_PROPOSE: %s requests "
- "Send File (i.e. send a file to you); %s:%d "
- "(verified_ip:port), %d files at total size of "
- "%d bytes.\n", user, vip, port, files, totalsize);
- accept_file_dialog(ft);
- } else if (!strcmp(uuid, FILE_GET_UID)) {
- /* they want us to send a file */
- int unk[4], i;
- char *messages[4], *tmp;
- struct ft_request *ft;
-
- for (i = 0; i < 4; i++) {
- sscanf(strtok(NULL, ":"), "%d", unk + i);
- if (unk[i] == 10001)
- break;
- /* Trillian likes to send an empty token as a message, rather than
- no message at all. */
- if (*(trillian + strlen(trillian) +1) != ':')
- frombase64(strtok(NULL, ":"), &messages[i], NULL);
- }
- frombase64(strtok(NULL, ":"), &tmp, NULL);
-
- ft = g_new0(struct ft_request, 1);
- ft->cookie = g_strdup(cookie);
- ft->ip = g_strdup(pip);
- ft->port = port;
- if (i)
- ft->message = g_strdup(messages[0]);
- else
- ft->message = NULL;
- ft->user = g_strdup(user);
- g_snprintf(ft->UID, sizeof(ft->UID), "%s", FILE_GET_UID);
- ft->gc = gc;
-
- g_free(tmp);
- for (i--; i >= 0; i--)
- g_free(messages[i]);
-
- accept_file_dialog(ft);
- } else if (!strcmp(uuid, VOICE_UID)) {
- /* oh goody. voice over ip. fun stuff. */
- } else if (!strcmp(uuid, B_ICON_UID)) {
- int unk[4], i;
- char *messages[4];
- struct buddy_icon *icon;
-
- for (i = 0; i < 4; i++) {
- sscanf(strtok(NULL, ":"), "%d", unk + i);
- if (unk[i] == 10001)
- break;
- frombase64(strtok(NULL, ":"), &messages[i], NULL);
- }
- frombase64(strtok(NULL, ":"), (char **)&icon, NULL);
-
- purple_debug(PURPLE_DEBUG_MISC, "toc",
- "received icon of length %d\n", icon->len);
- g_free(icon);
- for (i--; i >= 0; i--)
- g_free(messages[i]);
- } else if (!strcmp(uuid, IMAGE_UID)) {
- /* aka Direct IM */
- } else {
- purple_debug(PURPLE_DEBUG_ERROR, "toc",
- "Don't know what to do with RVOUS UUID %s\n", uuid);
- /* do we have to do anything here? i think it just times out */
- }
-#endif
- } else {
- purple_debug(PURPLE_DEBUG_ERROR, "toc",
- "don't know what to do with %s\n", c);
- }
-}
-
-static int toc_send_im(PurpleConnection *gc, const char *name, const char *message, PurpleMessageFlags flags)
-{
- char *buf1, *buf2;
-
-#if 1
- /* This is the old, non-i18n way */
- buf1 = escape_text(message);
- if (strlen(buf1) + 52 > MSG_LEN) {
- g_free(buf1);
- return -E2BIG;
- }
- buf2 = g_strdup_printf("toc_send_im %s \"%s\"%s", purple_normalize(gc->account, name), buf1,
- ((flags & PURPLE_MESSAGE_AUTO_RESP) ? " auto" : ""));
- g_free(buf1);
-#else
- /* This doesn't work yet. See the comments below for details */
- buf1 = purple_strreplace(message, "\"", "\\\"");
-
- /*
- * We still need to determine what encoding should be used and send the
- * message in that encoding. This should be done the same as in
- * oscar_encoding_check() in oscar.c. There is no encoding flag sent
- * along with the message--the TOC to OSCAR proxy server must just
- * use a lil' algorithm to determine what the actual encoding is.
- *
- * After that, you need to convert buf1 to that encoding, and keep track
- * of the length of the resulting string. Then you need to make sure
- * that length is passed to sflap_send().
- */
-
- if (strlen(buf1) + 52 > MSG_LEN) {
- g_free(buf1);
- return -E2BIG;
- }
-
- buf2 = g_strdup_printf("toc2_send_im_enc %s F U en \"%s\" %s", purple_normalize(gc->account, name), buf1,
- ((flags & PURPLE_MESSAGE_AUTO_RESP) ? "auto" : ""));
- g_free(buf1);
-#endif
-
- sflap_send(gc, buf2, -1, TYPE_DATA);
- g_free(buf2);
-
- return 1;
-}
-
-static void toc_set_config(PurpleConnection *gc)
-{
- char *buf = g_malloc(MSG_LEN), snd[BUF_LEN * 2];
- toc_build_config(gc->account, buf, MSG_LEN - strlen("toc_set_config \\{\\}"), FALSE);
- g_snprintf(snd, MSG_LEN, "toc_set_config {%s}", buf);
- sflap_send(gc, snd, -1, TYPE_DATA);
- g_free(buf);
-}
-
-static void toc_get_info(PurpleConnection *gc, const char *name)
-{
- char buf[BUF_LEN * 2];
- g_snprintf(buf, MSG_LEN, "toc_get_info %s", purple_normalize(gc->account, name));
- sflap_send(gc, buf, -1, TYPE_DATA);
-}
-
-/* Should be implemented as an Account Action? */
-static void toc_get_dir(PurpleBlistNode *node, gpointer data)
-{
- PurpleBuddy *buddy;
- PurpleConnection *gc;
- char buf[BUF_LEN * 2];
-
- g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
-
- buddy = (PurpleBuddy *) node;
- gc = purple_account_get_connection(buddy->account);
-
- g_snprintf(buf, MSG_LEN, "toc_get_dir %s",
- purple_normalize(buddy->account, buddy->name));
- sflap_send(gc, buf, -1, TYPE_DATA);
-}
-
-#if 0
-/* Should be implemented as an Account Action */
-static void toc_set_dir(PurpleConnection *g, const char *first, const char *middle, const char *last,
- const char *maiden, const char *city, const char *state, const char *country, int web)
-{
- char *buf3, buf2[BUF_LEN * 4], buf[BUF_LEN];
- g_snprintf(buf2, sizeof(buf2), "%s:%s:%s:%s:%s:%s:%s:%s", first,
- middle, last, maiden, city, state, country, (web == 1) ? "Y" : "");
- buf3 = escape_text(buf2);
- g_snprintf(buf, sizeof(buf), "toc_set_dir %s", buf3);
- g_free(buf3);
- sflap_send(g, buf, -1, TYPE_DATA);
-}
-#endif
-
-#if 0
-/* Should be implemented as an Account Action */
-static void toc_dir_search(PurpleConnection *g, const char *first, const char *middle, const char *last,
- const char *maiden, const char *city, const char *state, const char *country, const char *email)
-{
- char buf[BUF_LONG];
- g_snprintf(buf, sizeof(buf) / 2, "toc_dir_search %s:%s:%s:%s:%s:%s:%s:%s", first, middle,
- last, maiden, city, state, country, email);
- purple_debug(PURPLE_DEBUG_INFO, "toc",
- "Searching for: %s,%s,%s,%s,%s,%s,%s\n",
- first, middle, last, maiden,
- city, state, country);
- sflap_send(g, buf, -1, TYPE_DATA);
-}
-#endif
-
-static void toc_set_status(PurpleAccount *account, PurpleStatus *status)
-{
-#if 0 /* do we care about TOC any more? */
- char buf[BUF_LEN * 2];
- if (gc->away) {
- g_free(gc->away);
- gc->away = NULL;
- }
- if (message) {
- char *tmp;
- gc->away = g_strdup(message);
- tmp = escape_text(message);
- g_snprintf(buf, MSG_LEN, "toc_set_away \"%s\"", tmp);
- g_free(tmp);
- } else
- g_snprintf(buf, MSG_LEN, "toc_set_away \"\"");
- sflap_send(g, buf, -1, TYPE_DATA);
-#endif
-}
-
-static void toc_set_info(PurpleConnection *g, const char *info)
-{
- char buf[BUF_LEN * 2], *buf2;
- buf2 = escape_text(info);
- g_snprintf(buf, sizeof(buf), "toc_set_info \"%s\n\"", buf2);
- g_free(buf2);
- sflap_send(g, buf, -1, TYPE_DATA);
-}
-
-static void toc_change_passwd(PurpleConnection *g, const char *orig, const char *new)
-{
- char buf[BUF_LEN * 2];
- g_snprintf(buf, BUF_LONG, "toc_change_passwd %s %s", orig, new);
- sflap_send(g, buf, -1, TYPE_DATA);
-}
-
-static void
-toc_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
-{
- char buf[BUF_LEN * 2];
- g_snprintf(buf, sizeof(buf), "toc_add_buddy %s", purple_normalize(gc->account, buddy->name));
- sflap_send(gc, buf, -1, TYPE_DATA);
- toc_set_config(gc);
-}
-
-static void toc_add_buddies(PurpleConnection *gc, GList *buddies, GList *groups)
-{
- char buf[BUF_LEN * 2];
- int n;
- GList *cur;
-
- n = g_snprintf(buf, sizeof(buf), "toc_add_buddy");
- for (cur = buddies; cur != NULL; cur = cur->next) {
- PurpleBuddy *buddy = cur->data;
-
- if (strlen(purple_normalize(gc->account, buddy->name)) + n + 32 > MSG_LEN) {
- sflap_send(gc, buf, -1, TYPE_DATA);
- n = g_snprintf(buf, sizeof(buf), "toc_add_buddy");
- }
- n += g_snprintf(buf + n, sizeof(buf) - n, " %s", purple_normalize(gc->account, buddy->name));
- }
- sflap_send(gc, buf, -1, TYPE_DATA);
-}
-
-static void toc_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
-{
- char buf[BUF_LEN * 2];
- g_snprintf(buf, sizeof(buf), "toc_remove_buddy %s", purple_normalize(gc->account, buddy->name));
- sflap_send(gc, buf, -1, TYPE_DATA);
- toc_set_config(gc);
-}
-
-static void toc_remove_buddies(PurpleConnection *gc, GList *buddies, GList *groups)
-{
- char buf[BUF_LEN * 2];
- int n;
- GList *cur;
-
- n = g_snprintf(buf, sizeof(buf), "toc_remove_buddy");
- for (cur = buddies; cur != NULL; cur = cur->next) {
- PurpleBuddy *buddy = cur->data;
-
- if (strlen(purple_normalize(gc->account, buddy->name)) + n + 32 > MSG_LEN) {
- sflap_send(gc, buf, -1, TYPE_DATA);
- n = g_snprintf(buf, sizeof(buf), "toc_remove_buddy");
- }
- n += g_snprintf(buf + n, sizeof(buf) - n, " %s", purple_normalize(gc->account, buddy->name));
- }
- sflap_send(gc, buf, -1, TYPE_DATA);
- toc_set_config(gc);
-}
-
-static void toc_set_idle(PurpleConnection *g, int time)
-{
- char buf[BUF_LEN * 2];
- g_snprintf(buf, sizeof(buf), "toc_set_idle %d", time);
- sflap_send(g, buf, -1, TYPE_DATA);
-}
-
-static void toc_warn(PurpleConnection *g, const char *name, int anon)
-{
- char send[BUF_LEN * 2];
- g_snprintf(send, 255, "toc_evil %s %s", name, ((anon) ? "anon" : "norm"));
- sflap_send(g, send, -1, TYPE_DATA);
-}
-
-static GList *toc_chat_info(PurpleConnection *gc)
-{
- GList *m = NULL;
- struct proto_chat_entry *pce;
-
- pce = g_new0(struct proto_chat_entry, 1);
- pce->label = _("_Group:");
- pce->identifier = "room";
- m = g_list_append(m, pce);
-
- pce = g_new0(struct proto_chat_entry, 1);
- pce->label = _("_Exchange:");
- pce->identifier = "exchange";
- pce->is_int = TRUE;
- pce->min = 4;
- pce->max = 20;
- m = g_list_append(m, pce);
-
- return m;
-}
-
-GHashTable *toc_chat_info_defaults(PurpleConnection *gc, const char *chat_name)
-{
- GHashTable *defaults;
-
- defaults = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, g_free);
-
- if (chat_name != NULL)
- g_hash_table_insert(defaults, "room", g_strdup(chat_name));
-
- return defaults;
-}
-
-static void toc_join_chat(PurpleConnection *g, GHashTable *data)
-{
- char buf[BUF_LONG];
- char *name, *exchange;
- char *id;
-
- name = g_hash_table_lookup(data, "room");
- exchange = g_hash_table_lookup(data, "exchange");
- id = g_hash_table_lookup(data, "id");
-
- if (id) {
- g_snprintf(buf, 255, "toc_chat_accept %d", atoi(id));
- } else {
- g_snprintf(buf, sizeof(buf) / 2, "toc_chat_join %d \"%s\"", atoi(exchange), name);
- }
-
- sflap_send(g, buf, -1, TYPE_DATA);
-}
-
-static void toc_chat_invite(PurpleConnection *gc, int id, const char *message, const char *name)
-{
- char buf[BUF_LONG];
- g_snprintf(buf, sizeof(buf) / 2, "toc_chat_invite %d \"%s\" %s", id,
- message ? message : "", purple_normalize(gc->account, name));
- sflap_send(gc, buf, -1, TYPE_DATA);
-}
-
-static void toc_chat_leave(PurpleConnection *g, int id)
-{
- GSList *bcs = g->buddy_chats;
- PurpleConversation *b = NULL;
- char buf[BUF_LEN * 2];
-
- while (bcs) {
- b = (PurpleConversation *)bcs->data;
- if (id == purple_conv_chat_get_id(PURPLE_CONV_CHAT(b)))
- break;
- b = NULL;
- bcs = bcs->next;
- }
-
- if (!b)
- return; /* can this happen? */
-
- if (purple_conversation_get_account(b) == NULL) {
- /* TOC already kicked us out of this room */
- serv_got_chat_left(g, id);
- }
- else {
- g_snprintf(buf, 255, "toc_chat_leave %d", id);
- sflap_send(g, buf, -1, TYPE_DATA);
- }
-}
-
-static void toc_chat_whisper(PurpleConnection *gc, int id, const char *who, const char *message)
-{
- char *buf1, *buf2;
- buf1 = escape_text(message);
- buf2 = g_strdup_printf("toc_chat_whisper %d %s \"%s\"", id, purple_normalize(gc->account, who), buf1);
- g_free(buf1);
- sflap_send(gc, buf2, -1, TYPE_DATA);
- g_free(buf2);
-}
-
-static int toc_chat_send(PurpleConnection *g, int id, const char *message, PurpleMessageFlags flags)
-{
- char *buf1, *buf2;
- buf1 = escape_text(message);
- if (strlen(buf1) > 2000) {
- g_free(buf1);
- return -E2BIG;
- }
- buf2 = g_strdup_printf("toc_chat_send %d \"%s\"", id, buf1);
- g_free(buf1);
- sflap_send(g, buf2, -1, TYPE_DATA);
- g_free(buf2);
- return 0;
-}
-
-static void toc_keepalive(PurpleConnection *gc)
-{
- sflap_send(gc, "", 0, TYPE_KEEPALIVE);
-}
-
-static const char *
-toc_normalize(const PurpleAccount *account, const char *str)
-{
- static char buf[BUF_LEN];
- char *tmp1, *tmp2;
- int i, j;
-
- g_return_val_if_fail(str != NULL, NULL);
-
- strncpy(buf, str, BUF_LEN);
- for (i=0, j=0; buf[j]; i++, j++)
- {
- while (buf[j] == ' ')
- j++;
- buf[i] = buf[j];
- }
- buf[i] = '\0';
-
- tmp1 = g_utf8_strdown(buf, -1);
- tmp2 = g_utf8_normalize(tmp1, -1, G_NORMALIZE_DEFAULT);
- g_snprintf(buf, sizeof(buf), "%s", tmp2);
- g_free(tmp2);
- g_free(tmp1);
-
- return buf;
-}
-
-static const char *toc_list_icon(PurpleAccount *a, PurpleBuddy *b)
-{
- if (!b || (b && b->name && b->name[0] == '+')) {
- if (a != NULL && isdigit(*purple_account_get_username(a)))
- return "icq";
- else
- return "aim";
- }
-
- if (b && b->name && isdigit(b->name[0]))
- return "icq";
- return "aim";
-}
-
-static const char* toc_list_emblem(PurpleBuddy *b)
-{
- if (b->uc & UC_AOL)
- return "aol";
- if (b->uc & UC_ADMIN)
- return "admin";
- if (b->uc & UC_WIRELESS)
- return "mobile";
- return NULL
-}
-
-static GList *toc_blist_node_menu(PurpleBlistNode *node)
-{
- GList *m = NULL;
- PurpleMenuAction *act;
-
- if(PURPLE_BLIST_NODE_IS_BUDDY(node)) {
- act = purple_menu_action_new(_("Get Dir Info"),
- toc_get_dir, NULL, NULL);
- m = g_list_append(m, act);
- }
-
- return m;
-}
-
-static void toc_add_permit(PurpleConnection *gc, const char *who)
-{
- char buf2[BUF_LEN * 2];
- if (gc->account->perm_deny != 3)
- return;
- g_snprintf(buf2, sizeof(buf2), "toc_add_permit %s", purple_normalize(gc->account, who));
- sflap_send(gc, buf2, -1, TYPE_DATA);
- toc_set_config(gc);
-}
-
-static void toc_add_deny(PurpleConnection *gc, const char *who)
-{
- char buf2[BUF_LEN * 2];
- if (gc->account->perm_deny != 4)
- return;
- g_snprintf(buf2, sizeof(buf2), "toc_add_deny %s", purple_normalize(gc->account, who));
- sflap_send(gc, buf2, -1, TYPE_DATA);
- toc_set_config(gc);
-}
-
-static void toc_set_permit_deny(PurpleConnection *gc)
-{
- char buf2[BUF_LEN * 2];
- GSList *list;
- int at;
-
- switch (gc->account->perm_deny) {
- case 1:
- /* permit all, deny none. to get here reliably we need to have been in permit
- * mode, and send an empty toc_add_deny message, which will switch us to deny none */
- g_snprintf(buf2, sizeof(buf2), "toc_add_permit ");
- sflap_send(gc, buf2, -1, TYPE_DATA);
- g_snprintf(buf2, sizeof(buf2), "toc_add_deny ");
- sflap_send(gc, buf2, -1, TYPE_DATA);
- break;
- case 2:
- /* deny all, permit none. to get here reliably we need to have been in deny
- * mode, and send an empty toc_add_permit message, which will switch us to permit none */
- g_snprintf(buf2, sizeof(buf2), "toc_add_deny ");
- sflap_send(gc, buf2, -1, TYPE_DATA);
- g_snprintf(buf2, sizeof(buf2), "toc_add_permit ");
- sflap_send(gc, buf2, -1, TYPE_DATA);
- break;
- case 3:
- /* permit some. we want to switch to deny mode first, then send the toc_add_permit
- * message, which will clear and set our permit list. toc sucks. */
- g_snprintf(buf2, sizeof(buf2), "toc_add_deny ");
- sflap_send(gc, buf2, -1, TYPE_DATA);
-
- at = g_snprintf(buf2, sizeof(buf2), "toc_add_permit ");
- list = gc->account->permit;
- while (list) {
- at += g_snprintf(buf2 + at, sizeof(buf2) - at, "%s ", purple_normalize(gc->account, list->data));
- if (at > MSG_LEN + 32) { /* from out my ass comes greatness */
- sflap_send(gc, buf2, -1, TYPE_DATA);
- at = g_snprintf(buf2, sizeof(buf2), "toc_add_permit ");
- }
- list = list->next;
- }
- sflap_send(gc, buf2, -1, TYPE_DATA);
- break;
- case 4:
- /* deny some. we want to switch to permit mode first, then send the toc_add_deny
- * message, which will clear and set our deny list. toc sucks. */
- g_snprintf(buf2, sizeof(buf2), "toc_add_permit ");
- sflap_send(gc, buf2, -1, TYPE_DATA);
-
- at = g_snprintf(buf2, sizeof(buf2), "toc_add_deny ");
- list = gc->account->deny;
- while (list) {
- at += g_snprintf(buf2 + at, sizeof(buf2) - at, "%s ", purple_normalize(gc->account, list->data));
- if (at > MSG_LEN + 32) { /* from out my ass comes greatness */
- sflap_send(gc, buf2, -1, TYPE_DATA);
- at = g_snprintf(buf2, sizeof(buf2), "toc_add_deny ");
- }
- list = list->next;
- }
- sflap_send(gc, buf2, -1, TYPE_DATA);
- break;
- default:
- break;
- }
- toc_set_config(gc);
-}
-
-static void toc_rem_permit(PurpleConnection *gc, const char *who)
-{
- if (gc->account->perm_deny != 3)
- return;
- toc_set_permit_deny(gc);
-}
-
-static void toc_rem_deny(PurpleConnection *gc, const char *who)
-{
- if (gc->account->perm_deny != 4)
- return;
- toc_set_permit_deny(gc);
-}
-
-static GList *toc_away_states(PurpleAccount *account)
-{
-#if 0 /* do we care about TOC any more? */
- return g_list_append(NULL, PURPLE_AWAY_CUSTOM);
-#else
- return NULL;
-#endif
-}
-
-static void
-show_set_info(PurplePluginAction *action)
-{
- PurpleConnection *gc = (PurpleConnection *) action->context;
- purple_account_request_change_user_info(purple_connection_get_account(gc));
-}
-
-static void
-change_pass(PurplePluginAction *action)
-{
- PurpleConnection *gc = (PurpleConnection *) action->context;
- purple_account_request_change_password(purple_connection_get_account(gc));
-}
-
-static GList *toc_actions(PurplePlugin *plugin, gpointer context)
-{
- GList *m = NULL;
- PurplePluginAction *act;
-
- act = purple_plugin_action_new(_("Set User Info"),
- show_set_info);
- m = g_list_append(m, act);
-
-#if 0
- act = purple_plugin_action_new(_("Set Dir Info"),
- show_set_dir);
- m = g_list_append(m, act);
-#endif
-
- act = purple_plugin_action_new(_("Change Password"),
- change_pass);
- m = g_list_append(m, act);
-
- return m;
-}
-
-#if 0
-/*********
- * RVOUS ACTIONS
- ********/
-
-struct file_header {
- char magic[4]; /* 0 */
- short hdrlen; /* 4 */
- short hdrtype; /* 6 */
- char bcookie[8]; /* 8 */
- short encrypt; /* 16 */
- short compress; /* 18 */
- short totfiles; /* 20 */
- short filesleft; /* 22 */
- short totparts; /* 24 */
- short partsleft; /* 26 */
- long totsize; /* 28 */
- long size; /* 32 */
- long modtime; /* 36 */
- long checksum; /* 40 */
- long rfrcsum; /* 44 */
- long rfsize; /* 48 */
- long cretime; /* 52 */
- long rfcsum; /* 56 */
- long nrecvd; /* 60 */
- long recvcsum; /* 64 */
- char idstring[32]; /* 68 */
- char flags; /* 100 */
- char lnameoffset; /* 101 */
- char lsizeoffset; /* 102 */
- char dummy[69]; /* 103 */
- char macfileinfo[16]; /* 172 */
- short nencode; /* 188 */
- short nlanguage; /* 190 */
- char name[64]; /* 192 */
- /* 256 */
-};
-
-struct file_transfer {
- struct file_header hdr;
-
- PurpleConnection *gc;
-
- char *user;
- char *cookie;
- char *ip;
- int port;
- long size;
- struct stat st;
-
- GtkWidget *window;
- int files;
- char *filename;
- FILE *file;
- int recvsize;
-
- gint inpa;
-};
-
-static void debug_header(struct file_transfer *ft) {
- struct file_header *f = (struct file_header *)ft;
- purple_debug(PURPLE_DEBUG_MISC, "toc", "FT HEADER:\n"
- "\t%s %d 0x%04x\n"
- "\t%s %d %d\n"
- "\t%d %d %d %d %d %d\n"
- "\t%d %d %d %d %d %d %d %d\n"
- "\t%s\n"
- "\t0x%02x, 0x%02x, 0x%02x\n"
- "\t%s %s\n"
- "\t%d %d\n"
- "\t%s\n",
- f->magic, ntohs(f->hdrlen), f->hdrtype,
- f->bcookie, ntohs(f->encrypt), ntohs(f->compress),
- ntohs(f->totfiles), ntohs(f->filesleft), ntohs(f->totparts),
- ntohs(f->partsleft), ntohl(f->totsize), ntohl(f->size),
- ntohl(f->modtime), ntohl(f->checksum), ntohl(f->rfrcsum), ntohl(f->rfsize),
- ntohl(f->cretime), ntohl(f->rfcsum), ntohl(f->nrecvd),
- ntohl(f->recvcsum),
- f->idstring,
- f->flags, f->lnameoffset, f->lsizeoffset,
- f->dummy, f->macfileinfo,
- ntohs(f->nencode), ntohs(f->nlanguage),
- f->name);
-}
-
-static void toc_send_file_callback(gpointer data, gint source, PurpleInputCondition cond)
-{
- char buf[BUF_LONG];
- int rt, i;
-
- struct file_transfer *ft = data;
-
- if (ft->hdr.hdrtype != 0x202) {
- char *buf;
- frombase64(ft->cookie, &buf, NULL);
-
- read(source, ft, 8);
- read(source, &ft->hdr.bcookie, MIN(256 - 8, ntohs(ft->hdr.hdrlen) - 8));
- debug_header(ft);
-
- ft->hdr.hdrtype = 0x202;
- memcpy(ft->hdr.bcookie, buf, 8);
- g_free(buf);
- ft->hdr.encrypt = 0; ft->hdr.compress = 0;
- debug_header(ft);
- write(source, ft, 256);
-
- if (ft->files == 1) {
- ft->file = g_fopen(ft->filename, "w");
- if (!ft->file) {
- buf = g_strdup_printf(_("Could not open %s for writing!"), ft->filename);
- purple_notify_error(ft->gc, NULL, buf, g_strerror(errno));
- g_free(buf);
- purple_input_remove(ft->inpa);
- close(source);
- g_free(ft->filename);
- g_free(ft->user);
- g_free(ft->ip);
- g_free(ft->cookie);
- g_free(ft);
- }
- } else {
- buf = g_strdup_printf("%s/%s", ft->filename, ft->hdr.name);
- ft->file = g_fopen(buf, "w");
- g_free(buf);
- if (!ft->file) {
- buf = g_strdup_printf("Could not open %s/%s for writing!", ft->filename,
- ft->hdr.name);
- purple_notify_error(ft->gc, NULL, buf, g_strerror(errno));
- g_free(buf);
- purple_input_remove(ft->inpa);
- close(source);
- g_free(ft->filename);
- g_free(ft->user);
- g_free(ft->ip);
- g_free(ft->cookie);
- g_free(ft);
- }
- }
-
- return;
- }
-
- rt = read(source, buf, MIN(ntohl(ft->hdr.size) - ft->recvsize, 1024));
- if (rt < 0) {
- purple_notify_error(ft->gc, NULL,
- _("File transfer failed; other side probably "
- "canceled."), NULL);
- purple_input_remove(ft->inpa);
- close(source);
- g_free(ft->user);
- g_free(ft->ip);
- g_free(ft->cookie);
- if (ft->file)
- fclose(ft->file);
- g_free(ft);
- return;
- }
- ft->recvsize += rt;
- for (i = 0; i < rt; i++)
- fprintf(ft->file, "%c", buf[i]);
-
- if (ft->recvsize == ntohl(ft->hdr.size)) {
- ft->hdr.hdrtype = htons(0x0204);
- ft->hdr.filesleft = htons(ntohs(ft->hdr.filesleft) - 1);
- ft->hdr.partsleft = htons(ntohs(ft->hdr.partsleft) - 1);
- ft->hdr.recvcsum = ft->hdr.checksum; /* uh... */
- ft->hdr.nrecvd = htons(ntohs(ft->hdr.nrecvd) + 1);
- ft->hdr.flags = 0;
- write(source, ft, 256);
- debug_header(ft);
- ft->recvsize = 0;
- fclose(ft->file);
- if (ft->hdr.filesleft == 0) {
- purple_input_remove(ft->inpa);
- close(source);
- g_free(ft->filename);
- g_free(ft->user);
- g_free(ft->ip);
- g_free(ft->cookie);
- g_free(ft);
- }
- }
-}
-
-static void toc_send_file_connect(gpointer data, gint src, PurpleInputCondition cond)
-{
- struct file_transfer *ft = data;
-
- if (src == -1) {
- purple_notify_error(ft->gc, NULL,
- _("Could not connect for transfer."), NULL);
- g_free(ft->filename);
- g_free(ft->cookie);
- g_free(ft->user);
- g_free(ft->ip);
- g_free(ft);
- return;
- }
-
- ft->inpa = purple_input_add(src, PURPLE_INPUT_READ, toc_send_file_callback, ft);
-}
-
-static void toc_send_file(gpointer a, struct file_transfer *old_ft)
-{
- struct file_transfer *ft;
- const char *dirname = gtk_file_selection_get_filename(GTK_FILE_SELECTION(old_ft->window));
- PurpleAccount *account;
- char buf[BUF_LEN * 2];
-
- if (purple_gtk_check_if_dir(dirname, GTK_FILE_SELECTION(old_ft->window)))
- return;
- ft = g_new0(struct file_transfer, 1);
- if (old_ft->files == 1)
- ft->filename = g_strdup(dirname);
- else
- ft->filename = g_path_get_dirname(dirname);
- ft->cookie = g_strdup(old_ft->cookie);
- ft->user = g_strdup(old_ft->user);
- ft->ip = g_strdup(old_ft->ip);
- ft->files = old_ft->files;
- ft->port = old_ft->port;
- ft->gc = old_ft->gc;
- account = ft->gc->account;
- gtk_widget_destroy(old_ft->window);
-
- g_snprintf(buf, sizeof(buf), "toc_rvous_accept %s %s %s", ft->user, ft->cookie, FILE_SEND_UID);
- sflap_send(ft->gc, buf, -1, TYPE_DATA);
-
- if (purple_proxy_connect(ft->gc, account, ft->ip, ft->port, toc_send_file_connect, ft) != 0) {
- purple_notify_error(ft->gc, NULL,
- _("Could not connect for transfer."), NULL);
- g_free(ft->filename);
- g_free(ft->cookie);
- g_free(ft->user);
- g_free(ft->ip);
- g_free(ft);
- return;
- }
-}
-
-static void toc_get_file_callback(gpointer data, gint source, PurpleInputCondition cond)
-{
- char buf[BUF_LONG];
-
- struct file_transfer *ft = data;
-
- if (cond & PURPLE_INPUT_WRITE) {
- int remain = MIN(ntohl(ft->hdr.totsize) - ft->recvsize, 1024);
- int i;
- for (i = 0; i < remain; i++)
- fscanf(ft->file, "%c", &buf[i]);
- write(source, buf, remain);
- ft->recvsize += remain;
- if (ft->recvsize == ntohl(ft->hdr.totsize)) {
- purple_input_remove(ft->inpa);
- ft->inpa = purple_input_add(source, PURPLE_INPUT_READ,
- toc_get_file_callback, ft);
- }
- return;
- }
-
- if (ft->hdr.hdrtype == htons(0x1108)) {
- struct tm *fortime;
- struct stat st;
- char *basename;
-
- read(source, ft, 8);
- read(source, &ft->hdr.bcookie, MIN(256 - 8, ntohs(ft->hdr.hdrlen) - 8));
- debug_header(ft);
-
- g_stat(ft->filename, &st);
- fortime = localtime(&st.st_mtime);
- basename = g_path_get_basename(ft->filename);
- g_snprintf(buf, sizeof(buf), "%2d/%2d/%4d %2d:%2d %8ld %s\r\n",
- fortime->tm_mon + 1, fortime->tm_mday, fortime->tm_year + 1900,
- fortime->tm_hour + 1, fortime->tm_min + 1, (long)st.st_size,
- basename);
- write(source, buf, ntohl(ft->hdr.size));
- g_free(basename);
- return;
- }
-
- if (ft->hdr.hdrtype == htons(0x1209)) {
- read(source, ft, 8);
- read(source, &ft->hdr.bcookie, MIN(256 - 8, ntohs(ft->hdr.hdrlen) - 8));
- debug_header(ft);
- return;
- }
-
- if (ft->hdr.hdrtype == htons(0x120b)) {
- read(source, ft, 8);
- read(source, &ft->hdr.bcookie, MIN(256 - 8, ntohs(ft->hdr.hdrlen) - 8));
- debug_header(ft);
-
- if (ft->hdr.hdrtype != htons(0x120c)) {
- g_snprintf(buf, sizeof(buf), "%s decided to cancel the transfer", ft->user);
- purple_notify_error(ft->gc, NULL, buf, NULL);
- purple_input_remove(ft->inpa);
- close(source);
- g_free(ft->filename);
- g_free(ft->user);
- g_free(ft->ip);
- g_free(ft->cookie);
- if (ft->file)
- fclose(ft->file);
- g_free(ft);
- return;
- }
-
- ft->hdr.hdrtype = 0x0101;
- ft->hdr.totfiles = htons(1); ft->hdr.filesleft = htons(1);
- ft->hdr.flags = 0x20;
- write(source, ft, 256);
- return;
- }
-
- if (ft->hdr.hdrtype == 0x0101) {
- read(source, ft, 8);
- read(source, &ft->hdr.bcookie, MIN(256 - 8, ntohs(ft->hdr.hdrlen) - 8));
- debug_header(ft);
-
- purple_input_remove(ft->inpa);
- ft->inpa = purple_input_add(source, PURPLE_INPUT_WRITE,
- toc_get_file_callback, ft);
- return;
- }
-
- if (ft->hdr.hdrtype == 0x0202) {
- read(source, ft, 8);
- read(source, &ft->hdr.bcookie, MIN(256 - 8, ntohs(ft->hdr.hdrlen) - 8));
- debug_header(ft);
-
- purple_input_remove(ft->inpa);
- close(source);
- g_free(ft->filename);
- g_free(ft->user);
- g_free(ft->ip);
- g_free(ft->cookie);
- if (ft->file)
- fclose(ft->file);
- g_free(ft);
- return;
- }
-}
-
-static void toc_get_file_connect(gpointer data, gint src, PurpleInputCondition cond)
-{
- struct file_transfer *ft = data;
- struct file_header *hdr;
- char *buf;
- char *basename;
-
- if (src == -1) {
- purple_notify_error(ft->gc, NULL,
- _("Could not connect for transfer."), NULL);
- fclose(ft->file);
- g_free(ft->filename);
- g_free(ft->cookie);
- g_free(ft->user);
- g_free(ft->ip);
- g_free(ft);
- return;
- }
-
- hdr = (struct file_header *)ft;
- hdr->magic[0] = 'O'; hdr->magic[1] = 'F'; hdr->magic[2] = 'T'; hdr->magic[3] = '2';
- hdr->hdrlen = htons(256);
- hdr->hdrtype = htons(0x1108);
- rombase64(ft->cookie, &buf, NULL);
- g_snprintf(hdr->bcookie, 8, "%s", buf);
- g_free(buf);
- hdr->totfiles = htons(1); hdr->filesleft = htons(1);
- hdr->totparts = htons(1); hdr->partsleft = htons(1);
- hdr->totsize = htonl((long)ft->st.st_size); /* combined size of all files */
- /* size = strlen("mm/dd/yyyy hh:mm sizesize 'name'\r\n") */
- basename = g_path_get_basename(ft->filename);
- hdr->size = htonl(28 + strlen(basename)); /* size of listing.txt */
- g_free(basename);
- hdr->modtime = htonl(ft->st.st_mtime);
- hdr->checksum = htonl(0x89f70000); /* uh... */
- g_snprintf(hdr->idstring, 32, "OFT_Windows ICBMFT V1.1 32");
- hdr->flags = 0x02;
- hdr->lnameoffset = 0x1A;
- hdr->lsizeoffset = 0x10;
- g_snprintf(hdr->name, 64, "listing.txt");
- if (write(src, hdr, 256) < 0) {
- purple_notify_error(ft->gc, NULL,
- _("Could not write file header. The file will "
- "not be transferred."), NULL);
- fclose(ft->file);
- g_free(ft->filename);
- g_free(ft->cookie);
- g_free(ft->user);
- g_free(ft->ip);
- g_free(ft);
- return;
- }
-
- ft->inpa = purple_input_add(src, PURPLE_INPUT_READ, toc_get_file_callback, ft);
-}
-
-static void toc_get_file(gpointer a, struct file_transfer *old_ft)
-{
- struct file_transfer *ft;
- const char *dirname = gtk_file_selection_get_filename(GTK_FILE_SELECTION(old_ft->window));
- PurpleAccount *account;
- char *buf, buf2[BUF_LEN * 2];
-
- if (purple_gtk_check_if_dir(dirname, GTK_FILE_SELECTION(old_ft->window)))
- return;
- ft = g_new0(struct file_transfer, 1);
- ft->filename = g_strdup(dirname);
- ft->file = g_fopen(ft->filename, "r");
- if (!ft->file) {
- buf = g_strdup_printf("Unable to open %s for transfer.", ft->filename);
- purple_notify_error(ft->gc, NULL, buf, NULL);
- g_free(buf);
- g_free(ft->filename);
- g_free(ft);
- return;
- }
- if (g_stat(dirname, &ft->st)) {
- buf = g_strdup_printf("Unable to examine %s.", dirname);
- purple_notify_error(ft->gc, NULL, buf, NULL);
- g_free(buf);
- g_free(ft->filename);
- g_free(ft);
- return;
- }
- ft->cookie = g_strdup(old_ft->cookie);
- ft->user = g_strdup(old_ft->user);
- ft->ip = g_strdup(old_ft->ip);
- ft->port = old_ft->port;
- ft->gc = old_ft->gc;
- account = ft->gc->account;
- gtk_widget_destroy(old_ft->window);
-
- g_snprintf(buf2, sizeof(buf2), "toc_rvous_accept %s %s %s", ft->user, ft->cookie, FILE_GET_UID);
- sflap_send(ft->gc, buf2, -1, TYPE_DATA);
-
- if (purple_proxy_connect(ft->gc, account, ft->ip, ft->port, toc_get_file_connect, ft) < 0) {
- purple_notify_error(ft->gc, NULL,
- _("Could not connect for transfer."), NULL);
- fclose(ft->file);
- g_free(ft->filename);
- g_free(ft->cookie);
- g_free(ft->user);
- g_free(ft->ip);
- g_free(ft);
- return;
- }
-}
-
-static void cancel_callback(gpointer a, struct file_transfer *ft) {
- gtk_widget_destroy(ft->window);
- if (a == ft->window) {
- g_free(ft->cookie);
- g_free(ft->user);
- g_free(ft->ip);
- g_free(ft);
- }
-}
-
-static void toc_reject_ft(struct ft_request *ft) {
- g_free(ft->user);
- g_free(ft->filename);
- g_free(ft->ip);
- g_free(ft->cookie);
- if (ft->message)
- g_free(ft->message);
- g_free(ft);
-}
-
-
-static void toc_accept_ft(struct ft_request *fr) {
- if(g_list_find(purple_connections_get_all(), fr->gc)) {
- GtkWidget *window;
- char buf[BUF_LEN];
-
- struct file_transfer *ft = g_new0(struct file_transfer, 1);
- ft->gc = fr->gc;
- ft->user = g_strdup(fr->user);
- ft->cookie = g_strdup(fr->cookie);
- ft->ip = g_strdup(fr->ip);
- ft->port = fr->port;
- ft->files = fr->files;
-
- ft->window = window = gtk_file_selection_new(_("Save As..."));
- g_snprintf(buf, sizeof(buf), "%s/%s", purple_home_dir(), fr->filename ? fr->filename : "");
- gtk_file_selection_set_filename(GTK_FILE_SELECTION(window), buf);
- g_signal_connect(G_OBJECT(window), "destroy",
- G_CALLBACK(cancel_callback), ft);
- g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(ft->window)->cancel_button),
- "clicked", G_CALLBACK(cancel_callback), ft);
-
- if (!strcmp(fr->UID, FILE_SEND_UID))
- g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(window)->ok_button),
- "clicked", G_CALLBACK(toc_send_file), ft);
- else
- g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(window)->ok_button),
- "clicked", G_CALLBACK(toc_get_file), ft);
-
- gtk_widget_show(window);
- }
-
- toc_reject_ft(fr);
-}
-
-static void accept_file_dialog(struct ft_request *ft) {
- char buf[BUF_LONG];
- if (!strcmp(ft->UID, FILE_SEND_UID)) {
- /* holy crap. who the fuck would transfer gigabytes through AIM?! */
- static char *sizes[4] = { "bytes", "KB", "MB", "GB" };
- float size = ft->size;
- int index = 0;
- while ((index < 4) && (size > 1024)) {
- size /= 1024;
- index++;
- }
- g_snprintf(buf, sizeof(buf),
- dngettext(PACKAGE,
- "%s requests %s to accept %d file: %s (%.2f %s)%s%s",
- "%s requests %s to accept %d files: %s (%.2f %s)%s%s",
- ft->files),
- ft->user, purple_account_get_username(ft->gc->account), ft->files,
- ft->filename, size, sizes[index], (ft->message) ? "\n" : "",
- (ft->message) ? ft->message : "");
- } else {
- g_snprintf(buf, sizeof(buf), _("%s requests you to send them a file"), ft->user);
- }
-
- purple_request_accept_cancel(ft->gc, NULL, buf, NULL,
- PURPLE_DEFAULT_ACTION_NONE, ft,
- G_CALLBACK(toc_accept_ft),
- G_CALLBACK(toc_reject_ft));
-}
-#endif
-
-static PurplePluginProtocolInfo prpl_info =
-{
- 0,
- NULL, /* user_splits */
- NULL, /* protocol_options */
- NO_BUDDY_ICONS, /* icon_spec */
- toc_list_icon, /* list_icon */
- toc_list_emblem, /* list_emblems */
- NULL, /* status_text */
- NULL, /* tooltip_text */
- toc_away_states, /* away_states */
- toc_blist_node_menu, /* blist_node_menu */
- toc_chat_info, /* chat_info */
- toc_chat_info_defaults, /* chat_info_defaults */
- toc_login, /* login */
- toc_close, /* close */
- toc_send_im, /* send_im */
- toc_set_info, /* set_info */
- NULL, /* send_typing */
- toc_get_info, /* get_info */
- toc_set_status, /* set_away */
- toc_set_idle, /* set_idle */
- toc_change_passwd, /* change_passwd */
- toc_add_buddy, /* add_buddy */
- toc_add_buddies, /* add_buddies */
- toc_remove_buddy, /* remove_buddy */
- toc_remove_buddies, /* remove_buddies */
- toc_add_permit, /* add_permit */
- toc_add_deny, /* add_deny */
- toc_rem_permit, /* rem_permit */
- toc_rem_deny, /* rem_deny */
- toc_set_permit_deny, /* set_permit_deny */
- toc_join_chat, /* join_chat */
- NULL, /* reject_chat */
- NULL, /* get_chat_name */
- toc_chat_invite, /* chat_invite */
- toc_chat_leave, /* chat_leave */
- toc_chat_whisper, /* chat_whisper */
- toc_chat_send, /* chat_send */
- toc_keepalive, /* keepalive */
- NULL, /* register_user */
- NULL, /* get_cb_info */
- NULL, /* get_cb_away */
- NULL, /* alias_buddy */
- NULL, /* group_buddy */
- NULL, /* rename_group */
- NULL, /* buddy_free */
- NULL, /* convo_closed */
- toc_normalize, /* normalize */
- NULL, /* set_buddy_icon */
- NULL, /* remove_group */
- NULL, /* get_cb_real_name */
- NULL, /* set_chat_topic */
- NULL, /* find_blist_chat */
- NULL, /* roomlist_get_list */
- NULL, /* roomlist_cancel */
- NULL, /* roomlist_expand_category */
- NULL, /* can_receive_file */
- NULL, /* send_file */
- NULL, /* new_xfer */
- NULL, /* offline_message */
- NULL, /* whiteboard_prpl_ops */
- toc_send_raw, /* send_raw */
-};
-
-static PurplePluginInfo info =
-{
- PURPLE_PLUGIN_MAGIC,
- PURPLE_MAJOR_VERSION,
- PURPLE_MINOR_VERSION,
- PURPLE_PLUGIN_PROTOCOL, /**< type */
- NULL, /**< ui_requirement */
- 0, /**< flags */
- NULL, /**< dependencies */
- PURPLE_PRIORITY_DEFAULT, /**< priority */
-
- "prpl-toc", /**< id */
- "TOC", /**< name */
- DISPLAY_VERSION, /**< version */
- /** summary */
- N_("TOC Protocol Plugin"),
- /** description */
- N_("TOC Protocol Plugin"),
- NULL, /**< author */
- PURPLE_WEBSITE, /**< homepage */
-
- NULL, /**< load */
- NULL, /**< unload */
- NULL, /**< destroy */
-
- NULL, /**< ui_info */
- &prpl_info, /**< extra_info */
- NULL,
- toc_actions
-};
-
-static void
-init_plugin(PurplePlugin *plugin)
-{
- PurpleAccountOption *option;
-
- option = purple_account_option_string_new(_("Server"), "server", TOC_HOST);
- prpl_info.protocol_options = g_list_append(prpl_info.protocol_options,
- option);
-
- option = purple_account_option_int_new(_("Port"), "port", TOC_PORT);
- prpl_info.protocol_options = g_list_append(prpl_info.protocol_options,
- option);
-
- my_protocol = plugin;
-}
-
-PURPLE_INIT_PLUGIN(toc, init_plugin, info);
diff --git a/libpurple/protocols/yahoo/util.c b/libpurple/protocols/yahoo/util.c
index 2dd7c997b3..820f2eb8ae 100644
--- a/libpurple/protocols/yahoo/util.c
+++ b/libpurple/protocols/yahoo/util.c
@@ -22,562 +22,16 @@
#ifdef HAVE_CONFIG_H
#include "config.h"
-#endif
+#endif /* HAVE_CONFIG_H */
-#include "cipher.h"
#include "debug.h"
#include "internal.h"
#include "prpl.h"
-#include "util.h"
#include "yahoo.h"
#include <string.h>
-struct _PurpleUtilFetchUrlData
-{
- PurpleUtilFetchUrlCallback callback;
- void *user_data;
-
- struct
- {
- char *user;
- char *passwd;
- char *address;
- int port;
- char *page;
-
- } website;
-
- char *url;
- int num_times_redirected;
- gboolean full;
- char *user_agent;
- gboolean http11;
- char *request;
- gsize request_written;
- gboolean include_headers;
-
- gboolean is_ssl;
- PurpleSslConnection *ssl_connection;
- PurpleProxyConnectData *connect_data;
- int fd;
- guint inpa;
-
- gboolean got_headers;
- gboolean has_explicit_data_len;
- char *webdata;
- unsigned long len;
- unsigned long data_len;
- gssize max_len;
-};
-
-/**
- * The arguments to this function are similar to printf.
- */
-static void
-purple_util_fetch_url_error(PurpleUtilFetchUrlData *gfud, const char *format, ...)
-{
- gchar *error_message;
- va_list args;
-
- va_start(args, format);
- error_message = g_strdup_vprintf(format, args);
- va_end(args);
-
- gfud->callback(gfud, gfud->user_data, NULL, 0, error_message);
- g_free(error_message);
- purple_util_fetch_url_cancel(gfud);
-}
-static void url_fetch_connect_cb(gpointer url_data, gint source, const gchar *error_message);
-static void ssl_url_fetch_connect_cb(gpointer data, PurpleSslConnection *ssl_connection, PurpleInputCondition cond);
-static void ssl_url_fetch_error_cb(PurpleSslConnection *ssl_connection, PurpleSslErrorType error, gpointer data);
-
-static gboolean
-parse_redirect(const char *data, size_t data_len,
- PurpleUtilFetchUrlData *gfud)
-{
- gchar *s;
- gchar *new_url, *temp_url, *end;
- gboolean full;
- int len;
-
- if ((s = g_strstr_len(data, data_len, "\nLocation: ")) == NULL)
- /* We're not being redirected */
- return FALSE;
-
- s += strlen("Location: ");
- end = strchr(s, '\r');
-
- /* Just in case :) */
- if (end == NULL)
- end = strchr(s, '\n');
-
- if (end == NULL)
- return FALSE;
-
- len = end - s;
-
- new_url = g_malloc(len + 1);
- strncpy(new_url, s, len);
- new_url[len] = '\0';
-
- full = gfud->full;
-
- if (*new_url == '/' || g_strstr_len(new_url, len, "://") == NULL)
- {
- temp_url = new_url;
-
- new_url = g_strdup_printf("%s:%d%s", gfud->website.address,
- gfud->website.port, temp_url);
-
- g_free(temp_url);
-
- full = FALSE;
- }
-
- purple_debug_info("util", "Redirecting to %s\n", new_url);
-
- gfud->num_times_redirected++;
- if (gfud->num_times_redirected >= 5)
- {
- purple_util_fetch_url_error(gfud,
- _("Could not open %s: Redirected too many times"),
- gfud->url);
- return TRUE;
- }
-
- /*
- * Try again, with this new location. This code is somewhat
- * ugly, but we need to reuse the gfud because whoever called
- * us is holding a reference to it.
- */
- g_free(gfud->url);
- gfud->url = new_url;
- gfud->full = full;
- g_free(gfud->request);
- gfud->request = NULL;
-
- if (gfud->is_ssl) {
- gfud->is_ssl = FALSE;
- purple_ssl_close(gfud->ssl_connection);
- gfud->ssl_connection = NULL;
- } else {
- purple_input_remove(gfud->inpa);
- gfud->inpa = 0;
- close(gfud->fd);
- gfud->fd = -1;
- }
- gfud->request_written = 0;
- gfud->len = 0;
- gfud->data_len = 0;
-
- g_free(gfud->website.user);
- g_free(gfud->website.passwd);
- g_free(gfud->website.address);
- g_free(gfud->website.page);
- purple_url_parse(new_url, &gfud->website.address, &gfud->website.port,
- &gfud->website.page, &gfud->website.user, &gfud->website.passwd);
-
- if (purple_strcasestr(new_url, "https://") != NULL) {
- gfud->is_ssl = TRUE;
- gfud->ssl_connection = purple_ssl_connect(NULL,
- gfud->website.address, gfud->website.port,
- ssl_url_fetch_connect_cb, ssl_url_fetch_error_cb, gfud);
- } else {
- gfud->connect_data = purple_proxy_connect(NULL, NULL,
- gfud->website.address, gfud->website.port,
- url_fetch_connect_cb, gfud);
- }
-
- if (gfud->ssl_connection == NULL && gfud->connect_data == NULL)
- {
- purple_util_fetch_url_error(gfud, _("Unable to connect to %s"),
- gfud->website.address);
- }
-
- return TRUE;
-}
-
-static size_t
-parse_content_len(const char *data, size_t data_len)
-{
- size_t content_len = 0;
- const char *p = NULL;
-
- /* This is still technically wrong, since headers are case-insensitive
- * [RFC 2616, section 4.2], though this ought to catch the normal case.
- * Note: data is _not_ nul-terminated.
- */
- if(data_len > 16) {
- p = (strncmp(data, "Content-Length: ", 16) == 0) ? data : NULL;
- if(!p)
- p = (strncmp(data, "CONTENT-LENGTH: ", 16) == 0)
- ? data : NULL;
- if(!p) {
- p = g_strstr_len(data, data_len, "\nContent-Length: ");
- if (p)
- p++;
- }
- if(!p) {
- p = g_strstr_len(data, data_len, "\nCONTENT-LENGTH: ");
- if (p)
- p++;
- }
-
- if(p)
- p += 16;
- }
-
- /* If we can find a Content-Length header at all, try to sscanf it.
- * Response headers should end with at least \r\n, so sscanf is safe,
- * if we make sure that there is indeed a \n in our header.
- */
- if (p && g_strstr_len(p, data_len - (p - data), "\n")) {
- sscanf(p, "%" G_GSIZE_FORMAT, &content_len);
- purple_debug_misc("util", "parsed %" G_GSIZE_FORMAT "\n", content_len);
- }
-
- return content_len;
-}
-
-
-static void
-url_fetch_recv_cb(gpointer url_data, gint source, PurpleInputCondition cond)
-{
- PurpleUtilFetchUrlData *gfud = url_data;
- int len;
- char buf[4096];
- char *data_cursor;
- gboolean got_eof = FALSE;
-
- /*
- * Read data in a loop until we can't read any more! This is a
- * little confusing because we read using a different function
- * depending on whether the socket is ssl or cleartext.
- */
- while ((gfud->is_ssl && ((len = purple_ssl_read(gfud->ssl_connection, buf, sizeof(buf))) > 0)) ||
- (!gfud->is_ssl && (len = read(source, buf, sizeof(buf))) > 0))
- {
- if(gfud->max_len != -1 && (gfud->len + len) > gfud->max_len) {
- purple_util_fetch_url_error(gfud, _("Error reading from %s: response too long (%d bytes limit)"),
- gfud->website.address, gfud->max_len);
- return;
- }
-
- /* If we've filled up our buffer, make it bigger */
- if((gfud->len + len) >= gfud->data_len) {
- while((gfud->len + len) >= gfud->data_len)
- gfud->data_len += sizeof(buf);
-
- gfud->webdata = g_realloc(gfud->webdata, gfud->data_len);
- }
-
- data_cursor = gfud->webdata + gfud->len;
-
- gfud->len += len;
-
- memcpy(data_cursor, buf, len);
-
- gfud->webdata[gfud->len] = '\0';
-
- if(!gfud->got_headers) {
- char *tmp;
-
- /* See if we've reached the end of the headers yet */
- if((tmp = strstr(gfud->webdata, "\r\n\r\n"))) {
- char * new_data;
- guint header_len = (tmp + 4 - gfud->webdata);
- size_t content_len;
-
- purple_debug_misc("util", "Response headers: '%.*s'\n",
- header_len, gfud->webdata);
-
- /* See if we can find a redirect. */
- if(parse_redirect(gfud->webdata, header_len, gfud))
- return;
-
- gfud->got_headers = TRUE;
-
- /* No redirect. See if we can find a content length. */
- content_len = parse_content_len(gfud->webdata, header_len);
-
- if(content_len == 0) {
- /* We'll stick with an initial 8192 */
- content_len = 8192;
- } else {
- gfud->has_explicit_data_len = TRUE;
- }
-
-
- /* If we're returning the headers too, we don't need to clean them out */
- if(gfud->include_headers) {
- gfud->data_len = content_len + header_len;
- gfud->webdata = g_realloc(gfud->webdata, gfud->data_len);
- } else {
- size_t body_len = 0;
-
- if(gfud->len > (header_len + 1))
- body_len = (gfud->len - header_len);
-
- content_len = MAX(content_len, body_len);
-
- new_data = g_try_malloc(content_len);
- if(new_data == NULL) {
- purple_debug_error("util",
- "Failed to allocate %" G_GSIZE_FORMAT " bytes: %s\n",
- content_len, g_strerror(errno));
- purple_util_fetch_url_error(gfud,
- _("Unable to allocate enough memory to hold "
- "the contents from %s. The web server may "
- "be trying something malicious."),
- gfud->website.address);
-
- return;
- }
-
- /* We may have read part of the body when reading the headers, don't lose it */
- if(body_len > 0) {
- tmp += 4;
- memcpy(new_data, tmp, body_len);
- }
-
- /* Out with the old... */
- g_free(gfud->webdata);
-
- /* In with the new. */
- gfud->len = body_len;
- gfud->data_len = content_len;
- gfud->webdata = new_data;
- }
- }
- }
-
- if(gfud->has_explicit_data_len && gfud->len >= gfud->data_len) {
- got_eof = TRUE;
- break;
- }
- }
-
- if(len < 0) {
- if(errno == EAGAIN) {
- return;
- } else {
- purple_util_fetch_url_error(gfud, _("Error reading from %s: %s"),
- gfud->website.address, g_strerror(errno));
- return;
- }
- }
-
- if((len == 0) || got_eof) {
- gfud->webdata = g_realloc(gfud->webdata, gfud->len + 1);
- gfud->webdata[gfud->len] = '\0';
-
- gfud->callback(gfud, gfud->user_data, gfud->webdata, gfud->len, NULL);
- purple_util_fetch_url_cancel(gfud);
- }
-}
-
-static void ssl_url_fetch_recv_cb(gpointer data, PurpleSslConnection *ssl_connection, PurpleInputCondition cond)
-{
- url_fetch_recv_cb(data, -1, cond);
-}
-
-/*
- * This function is called when the socket is available to be written
- * to.
- *
- * @param source The file descriptor that can be written to. This can
- * be an http connection or it can be the SSL connection of an
- * https request. So be careful what you use it for! If it's
- * an https request then use purple_ssl_write() instead of
- * writing to it directly.
- */
-static void
-url_fetch_send_cb(gpointer data, gint source, PurpleInputCondition cond)
-{
- PurpleUtilFetchUrlData *gfud;
- int len, total_len;
-
- gfud = data;
-
- if (gfud->request == NULL)
- {
- /* Host header is not forbidden in HTTP/1.0 requests, and HTTP/1.1
- * clients must know how to handle the "chunked" transfer encoding.
- * Purple doesn't know how to handle "chunked", so should always send
- * the Host header regardless, to get around some observed problems
- */
- if (gfud->user_agent) {
- gfud->request = g_strdup_printf(
- "GET %s%s HTTP/%s\r\n"
- "Connection: close\r\n"
- "User-Agent: %s\r\n"
- "Accept: */*\r\n"
- "Host: %s\r\n\r\n",
- (gfud->full ? "" : "/"),
- (gfud->full ? (gfud->url ? gfud->url : "") : (gfud->website.page ? gfud->website.page : "")),
- (gfud->http11 ? "1.1" : "1.0"),
- (gfud->user_agent ? gfud->user_agent : ""),
- (gfud->website.address ? gfud->website.address : ""));
- } else {
- gfud->request = g_strdup_printf(
- "GET %s%s HTTP/%s\r\n"
- "Connection: close\r\n"
- "Accept: */*\r\n"
- "Host: %s\r\n\r\n",
- (gfud->full ? "" : "/"),
- (gfud->full ? (gfud->url ? gfud->url : "") : (gfud->website.page ? gfud->website.page : "")),
- (gfud->http11 ? "1.1" : "1.0"),
- (gfud->website.address ? gfud->website.address : ""));
- }
- }
-
- if(g_getenv("PURPLE_UNSAFE_DEBUG"))
- purple_debug_misc("util", "Request: '%s'\n", gfud->request);
- else
- purple_debug_misc("util", "request constructed\n");
-
- total_len = strlen(gfud->request);
-
- if (gfud->is_ssl)
- len = purple_ssl_write(gfud->ssl_connection, gfud->request + gfud->request_written,
- total_len - gfud->request_written);
- else
- len = write(gfud->fd, gfud->request + gfud->request_written,
- total_len - gfud->request_written);
-
- if (len < 0 && errno == EAGAIN)
- return;
- else if (len < 0) {
- purple_util_fetch_url_error(gfud, _("Error writing to %s: %s"),
- gfud->website.address, g_strerror(errno));
- return;
- }
- gfud->request_written += len;
-
- if (gfud->request_written < total_len)
- return;
-
- /* We're done writing our request, now start reading the response */
- if (gfud->is_ssl) {
- purple_input_remove(gfud->inpa);
- gfud->inpa = 0;
- purple_ssl_input_add(gfud->ssl_connection, ssl_url_fetch_recv_cb, gfud);
- } else {
- purple_input_remove(gfud->inpa);
- gfud->inpa = purple_input_add(gfud->fd, PURPLE_INPUT_READ, url_fetch_recv_cb,
- gfud);
- }
-}
-
-static void
-url_fetch_connect_cb(gpointer url_data, gint source, const gchar *error_message)
-{
- PurpleUtilFetchUrlData *gfud;
-
- gfud = url_data;
- gfud->connect_data = NULL;
-
- if (source == -1)
- {
- purple_util_fetch_url_error(gfud, _("Unable to connect to %s: %s"),
- (gfud->website.address ? gfud->website.address : ""), error_message);
- return;
- }
-
- gfud->fd = source;
-
- gfud->inpa = purple_input_add(source, PURPLE_INPUT_WRITE,
- url_fetch_send_cb, gfud);
- url_fetch_send_cb(gfud, source, PURPLE_INPUT_WRITE);
-}
-
-static void ssl_url_fetch_connect_cb(gpointer data, PurpleSslConnection *ssl_connection, PurpleInputCondition cond)
-{
- PurpleUtilFetchUrlData *gfud;
-
- gfud = data;
-
- gfud->inpa = purple_input_add(ssl_connection->fd, PURPLE_INPUT_WRITE,
- url_fetch_send_cb, gfud);
- url_fetch_send_cb(gfud, ssl_connection->fd, PURPLE_INPUT_WRITE);
-}
-
-static void ssl_url_fetch_error_cb(PurpleSslConnection *ssl_connection, PurpleSslErrorType error, gpointer data)
-{
- PurpleUtilFetchUrlData *gfud;
-
- gfud = data;
- gfud->ssl_connection = NULL;
-
- purple_util_fetch_url_error(gfud, _("Unable to connect to %s: %s"),
- (gfud->website.address ? gfud->website.address : ""),
- purple_ssl_strerror(error));
-}
-
-PurpleUtilFetchUrlData *
-purple_util_fetch_url_request_len_with_account(PurpleAccount *account,
- const char *url, gboolean full, const char *user_agent, gboolean http11,
- const char *request, gboolean include_headers, gssize max_len,
- PurpleUtilFetchUrlCallback callback, void *user_data)
-{
- PurpleUtilFetchUrlData *gfud;
-
- g_return_val_if_fail(url != NULL, NULL);
- g_return_val_if_fail(callback != NULL, NULL);
-
- if(g_getenv("PURPLE_UNSAFE_DEBUG"))
- purple_debug_info("util",
- "requested to fetch (%s), full=%d, user_agent=(%s), http11=%d\n",
- url, full, user_agent?user_agent:"(null)", http11);
- else
- purple_debug_info("util", "requesting to fetch a URL\n");
-
- gfud = g_new0(PurpleUtilFetchUrlData, 1);
-
- gfud->callback = callback;
- gfud->user_data = user_data;
- gfud->url = g_strdup(url);
- gfud->user_agent = g_strdup(user_agent);
- gfud->http11 = http11;
- gfud->full = full;
- gfud->request = g_strdup(request);
- gfud->include_headers = include_headers;
- gfud->fd = -1;
- gfud->max_len = max_len;
-
- purple_url_parse(url, &gfud->website.address, &gfud->website.port,
- &gfud->website.page, &gfud->website.user, &gfud->website.passwd);
-
- if (purple_strcasestr(url, "https://") != NULL) {
- if (!purple_ssl_is_supported()) {
- purple_util_fetch_url_error(gfud,
- _("Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was found."),
- gfud->website.address);
- return NULL;
- }
-
- gfud->is_ssl = TRUE;
- gfud->ssl_connection = purple_ssl_connect(account,
- gfud->website.address, gfud->website.port,
- ssl_url_fetch_connect_cb, ssl_url_fetch_error_cb, gfud);
- } else {
- gfud->connect_data = purple_proxy_connect(NULL, account,
- gfud->website.address, gfud->website.port,
- url_fetch_connect_cb, gfud);
- }
-
- if (gfud->ssl_connection == NULL && gfud->connect_data == NULL)
- {
- purple_util_fetch_url_error(gfud, _("Unable to connect to %s"),
- gfud->website.address);
- return NULL;
- }
-
- return gfud;
-}
-
gboolean
yahoo_account_use_http_proxy(PurpleConnection *conn)
{
@@ -588,7 +42,7 @@ yahoo_account_use_http_proxy(PurpleConnection *conn)
/*
* Returns cookies formatted as a null terminated string for the given connection.
* Must g_free return value.
- *
+ *
* TODO:will work, but must test for strict correctness
*/
gchar* yahoo_get_cookies(PurpleConnection *gc)
@@ -737,7 +191,7 @@ char *yahoo_convert_to_numeric(const char *str)
/*
* I found these on some website but i don't know that they actually
* work (or are supposed to work). I didn't implement them yet.
- *
+ *
* [0;30m ---black
* [1;37m ---white
* [0;37m ---tan
diff --git a/libpurple/protocols/yahoo/yahoo.c b/libpurple/protocols/yahoo/yahoo.c
index e889e2e2e5..6ef19f222b 100644
--- a/libpurple/protocols/yahoo/yahoo.c
+++ b/libpurple/protocols/yahoo/yahoo.c
@@ -30,6 +30,7 @@
#include "cmds.h"
#include "core.h"
#include "debug.h"
+#include "network.h"
#include "notify.h"
#include "privacy.h"
#include "prpl.h"
@@ -38,6 +39,7 @@
#include "server.h"
#include "util.h"
#include "version.h"
+#include "xmlnode.h"
#include "yahoo.h"
#include "yahoochat.h"
@@ -62,7 +64,7 @@
static void yahoo_add_buddy(PurpleConnection *gc, PurpleBuddy *, PurpleGroup *);
#ifdef TRY_WEBMESSENGER_LOGIN
static void yahoo_login_page_cb(PurpleUtilFetchUrlData *url_data, gpointer user_data, const gchar *url_text, size_t len, const gchar *error_message);
-#endif
+#endif /* TRY_WEBMESSENGER_LOGIN */
static void yahoo_set_status(PurpleAccount *account, PurpleStatus *status);
static void yahoo_update_status(PurpleConnection *gc, const char *name, YahooFriend *f)
@@ -150,6 +152,7 @@ static void yahoo_process_status(PurpleConnection *gc, struct yahoo_packet *pkt)
char *name = NULL;
gboolean unicode = FALSE;
char *message = NULL;
+ char *msn_name = NULL;
if (pkt->service == YAHOO_SERVICE_LOGOFF && pkt->status == -1) {
if (!purple_account_get_remember_password(account))
@@ -210,6 +213,8 @@ static void yahoo_process_status(PurpleConnection *gc, struct yahoo_packet *pkt)
message = pair->value;
break;
case 11: /* this is the buddy's session id */
+ if (f)
+ f->session_id = strtol(pair->value, NULL, 10);
break;
case 17: /* in chat? */
break;
@@ -325,7 +330,12 @@ static void yahoo_process_status(PurpleConnection *gc, struct yahoo_packet *pkt)
if(f && strtol(pair->value, NULL, 10))
f->version_id = strtol(pair->value, NULL, 10);
break;
-
+ case 241: /* protocol buddy belongs to */
+ if(strtol(pair->value, NULL, 10) == 2) {
+ msn_name = g_strconcat("msn/", name, NULL);
+ name = msn_name;
+ }
+ break;
default:
purple_debug_warning("yahoo",
"Unknown status key %d\n", pair->key);
@@ -360,7 +370,7 @@ static void yahoo_do_group_check(PurpleAccount *account, GHashTable *ht, const c
for (i = list; i; i = i->next) {
b = i->data;
g = purple_buddy_get_group(b);
- if (!purple_utf8_strcasecmp(group, g->name)) {
+ if (!purple_utf8_strcasecmp(group, purple_group_get_name(g))) {
purple_debug(PURPLE_DEBUG_MISC, "yahoo",
"Oh good, %s is in the right group (%s).\n", name, group);
list = g_slist_delete_link(list, i);
@@ -398,7 +408,8 @@ static void yahoo_do_group_cleanup(gpointer key, gpointer value, gpointer user_d
for (i = list; i; i = i->next) {
b = i->data;
g = purple_buddy_get_group(b);
- purple_debug(PURPLE_DEBUG_MISC, "yahoo", "Deleting Buddy %s from group %s.\n", name, g->name);
+ purple_debug(PURPLE_DEBUG_MISC, "yahoo", "Deleting Buddy %s from group %s.\n", name,
+ purple_group_get_name(g));
purple_blist_remove_buddy(b);
}
}
@@ -446,10 +457,13 @@ static void yahoo_process_list_15(PurpleConnection *gc, struct yahoo_packet *pkt
struct yahoo_data *yd = gc->proto_data;
GHashTable *ht;
char *norm_bud = NULL;
+ char *temp = NULL;
YahooFriend *f = NULL; /* It's your friends. They're going to want you to share your StarBursts. */
/* But what if you had no friends? */
PurpleBuddy *b;
PurpleGroup *g;
+ int protocol = 0;
+ int stealth = 0;
ht = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, (GDestroyNotify) g_slist_free);
@@ -473,6 +487,48 @@ static void yahoo_process_list_15(PurpleConnection *gc, struct yahoo_packet *pkt
break;
case 301: /* This is 319 before all s/n's in a group after the first. It is followed by an identical 300. */
+ if(temp != NULL) {
+ if(protocol == 2)
+ norm_bud = g_strconcat("msn/", temp, NULL);
+ else
+ norm_bud = g_strdup(temp);
+
+ if (yd->current_list15_grp) {
+ /* This buddy is in a group */
+ f = yahoo_friend_find_or_new(gc, norm_bud);
+ if (!(b = purple_find_buddy(account, norm_bud))) {
+ if (!(g = purple_find_group(yd->current_list15_grp))) {
+ g = purple_group_new(yd->current_list15_grp);
+ purple_blist_add_group(g, NULL);
+ }
+ b = purple_buddy_new(account, norm_bud, NULL);
+ purple_blist_add_buddy(b, NULL, g, NULL);
+ }
+ yahoo_do_group_check(account, ht, norm_bud, yd->current_list15_grp);
+ if(protocol != 0) {
+ f->protocol = protocol;
+ purple_debug_info("yahoo", "Setting protocol to %d\n", f->protocol);
+ }
+ if(stealth == 2)
+ f->presence = YAHOO_PRESENCE_PERM_OFFLINE;
+
+ /* set p2p status not connected and no p2p packet sent */
+ if(protocol == 0) {
+ yahoo_friend_set_p2p_status(f, YAHOO_P2PSTATUS_NOT_CONNECTED);
+ f->p2p_packet_sent = 0;
+ } else
+ yahoo_friend_set_p2p_status(f, YAHOO_P2PSTATUS_DO_NOT_CONNECT);
+ } else {
+ /* This buddy is on the ignore list (and therefore in no group) */
+ purple_debug_info("yahoo", "%s adding %s to the deny list because of the ignore list / no group was found\n",account->username, norm_bud);
+ purple_privacy_deny_add(account, norm_bud, 1);
+ }
+
+ protocol = 0;
+ stealth = 0;
+ norm_bud = NULL;
+ temp = NULL;
+ }
break;
case 300: /* This is 318 before a group, 319 before any s/n in a group, and 320 before any ignored s/n. */
break;
@@ -481,42 +537,16 @@ static void yahoo_process_list_15(PurpleConnection *gc, struct yahoo_packet *pkt
yd->current_list15_grp = yahoo_string_decode(gc, pair->value, FALSE);
break;
case 7: /* buddy's s/n */
- g_free(norm_bud);
- norm_bud = g_strdup(purple_normalize(account, pair->value));
-
- if (yd->current_list15_grp) {
- /* This buddy is in a group */
- f = yahoo_friend_find_or_new(gc, norm_bud);
- if (!(b = purple_find_buddy(account, norm_bud))) {
- if (!(g = purple_find_group(yd->current_list15_grp))) {
- g = purple_group_new(yd->current_list15_grp);
- purple_blist_add_group(g, NULL);
- }
- b = purple_buddy_new(account, norm_bud, NULL);
- purple_blist_add_buddy(b, NULL, g, NULL);
- }
- yahoo_do_group_check(account, ht, norm_bud, yd->current_list15_grp);
-
- } else {
- /* This buddy is on the ignore list (and therefore in no group) */
- purple_debug_info("yahoo", "%s adding %s to the deny list because of the ignore list / no group was found\n",
- account->username, norm_bud);
- purple_privacy_deny_add(account, norm_bud, 1);
- }
+ temp = g_strdup(purple_normalize(account, pair->value));
break;
case 241: /* another protocol user */
- if (f) {
- f->protocol = strtol(pair->value, NULL, 10);
- purple_debug_info("yahoo", "Setting protocol to %d\n", f->protocol);
- }
+ protocol = strtol(pair->value, NULL, 10);
break;
case 59: /* somebody told cookies come here too, but im not sure */
yahoo_process_cookie(yd, pair->value);
break;
case 317: /* Stealth Setting */
- if (f && (strtol(pair->value, NULL, 10) == 2)) {
- f->presence = YAHOO_PRESENCE_PERM_OFFLINE;
- }
+ stealth = strtol(pair->value, NULL, 10);
break;
/* case 242: */ /* this seems related to 241 */
/* break; */
@@ -524,7 +554,7 @@ static void yahoo_process_list_15(PurpleConnection *gc, struct yahoo_packet *pkt
}
g_hash_table_foreach(ht, yahoo_do_group_cleanup, NULL);
-
+
/* Now that we have processed the buddy list, we can say yahoo has connected */
purple_connection_set_display_name(gc, purple_normalize(account, purple_account_get_username(account)));
purple_connection_set_state(gc, PURPLE_CONNECTED);
@@ -538,6 +568,7 @@ static void yahoo_process_list_15(PurpleConnection *gc, struct yahoo_packet *pkt
g_hash_table_destroy(ht);
g_free(norm_bud);
+ g_free(temp);
}
static void yahoo_process_list(PurpleConnection *gc, struct yahoo_packet *pkt)
@@ -622,6 +653,10 @@ static void yahoo_process_list(PurpleConnection *gc, struct yahoo_packet *pkt)
}
yahoo_do_group_check(account, ht, norm_bud, grp);
+ /* set p2p status not connected and no p2p packet sent */
+ yahoo_friend_set_p2p_status(f, YAHOO_P2PSTATUS_NOT_CONNECTED);
+ f->p2p_packet_sent = 0;
+
g_free(norm_bud);
}
g_strfreev(buddies);
@@ -678,7 +713,8 @@ static void yahoo_process_list(PurpleConnection *gc, struct yahoo_packet *pkt)
yahoo_fetch_aliases(gc);
}
-static void yahoo_process_notify(PurpleConnection *gc, struct yahoo_packet *pkt)
+/* pkt_type is YAHOO_PKT_TYPE_SERVER if pkt arrives from yahoo server, YAHOO_PKT_TYPE_P2P if pkt arrives through p2p */
+static void yahoo_process_notify(PurpleConnection *gc, struct yahoo_packet *pkt, yahoo_pkt_type pkt_type)
{
PurpleAccount *account;
char *msg = NULL;
@@ -687,12 +723,16 @@ static void yahoo_process_notify(PurpleConnection *gc, struct yahoo_packet *pkt)
char *game = NULL;
YahooFriend *f = NULL;
GSList *l = pkt->hash;
+ gint val_11 = 0;
+ struct yahoo_data *yd = gc->proto_data;
+ gboolean msn = FALSE;
+ char *msn_from = NULL;
account = purple_connection_get_account(gc);
while (l) {
struct yahoo_pair *pair = l->data;
- if (pair->key == 4)
+ if (pair->key == 4 || pair->key == 1)
from = pair->value;
if (pair->key == 49)
msg = pair->value;
@@ -700,19 +740,43 @@ static void yahoo_process_notify(PurpleConnection *gc, struct yahoo_packet *pkt)
stat = pair->value;
if (pair->key == 14)
game = pair->value;
+ if (pair->key == 11)
+ val_11 = strtol(pair->value, NULL, 10);
+ if (pair->key == 241)
+ if(strtol(pair->value, NULL, 10) == 2)
+ msn = TRUE;
l = l->next;
}
if (!from || !msg)
return;
+ /* disconnect the peer if connected through p2p and sends wrong value for session id */
+ if( (pkt_type == YAHOO_PKT_TYPE_P2P) && (val_11 != yd->session_id) ) {
+ purple_debug_warning("yahoo","p2p: %s sent us notify with wrong session id. Disconnecting p2p connection to peer\n", from);
+ /* remove from p2p connection lists, also calls yahoo_p2p_disconnect_destroy_data */
+ g_hash_table_remove(yd->peers, from);
+ return;
+ }
+
+ if(msn)
+ msn_from = g_strconcat("msn/", from, NULL);
+
if (!g_ascii_strncasecmp(msg, "TYPING", strlen("TYPING"))
&& (purple_privacy_check(account, from)))
{
- if (*stat == '1')
- serv_got_typing(gc, from, 0, PURPLE_TYPING);
- else
- serv_got_typing_stopped(gc, from);
+ if(msn) {
+ if (*stat == '1')
+ serv_got_typing(gc, msn_from, 0, PURPLE_TYPING);
+ else
+ serv_got_typing_stopped(gc, msn_from);
+ }
+ else {
+ if (*stat == '1')
+ serv_got_typing(gc, from, 0, PURPLE_TYPING);
+ else
+ serv_got_typing_stopped(gc, from);
+ }
} else if (!g_ascii_strncasecmp(msg, "GAME", strlen("GAME"))) {
PurpleBuddy *bud = purple_find_buddy(account, from);
@@ -740,6 +804,7 @@ static void yahoo_process_notify(PurpleConnection *gc, struct yahoo_packet *pkt)
g_free(buf);
}
+ g_free(msn_from);
}
@@ -752,7 +817,69 @@ struct _yahoo_im {
char *msg;
};
-static void yahoo_process_message(PurpleConnection *gc, struct yahoo_packet *pkt)
+static void yahoo_process_sms_message(PurpleConnection *gc, struct yahoo_packet *pkt)
+{
+ PurpleAccount *account;
+ GSList *l = pkt->hash;
+ struct _yahoo_im *sms = NULL;
+ struct yahoo_data *yd;
+ char *server_msg = NULL;
+ char *m;
+
+ yd = gc->proto_data;
+ account = purple_connection_get_account(gc);
+
+ while (l != NULL) {
+ struct yahoo_pair *pair = l->data;
+ if (pair->key == 4) {
+ sms = g_new0(struct _yahoo_im, 1);
+ sms->from = g_strdup_printf("+%s", pair->value);
+ sms->time = time(NULL);
+ sms->utf8 = TRUE;
+ }
+ if (pair->key == 14) {
+ if (sms)
+ sms->msg = pair->value;
+ }
+ if (pair->key == 68)
+ if(sms)
+ g_hash_table_insert(yd->sms_carrier, g_strdup(sms->from), g_strdup(pair->value));
+ if (pair->key == 16)
+ server_msg = pair->value;
+ l = l->next;
+ }
+
+ if( (pkt->status == -1) || (pkt->status == YAHOO_STATUS_DISCONNECTED) ) {
+ if (server_msg) {
+ PurpleConversation *c;
+ c = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, sms->from, account);
+ if (c == NULL)
+ c = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, sms->from);
+ purple_conversation_write(c, NULL, server_msg, PURPLE_MESSAGE_SYSTEM, time(NULL));
+ }
+ else
+ purple_notify_error(gc, NULL, _("Your SMS was not delivered"), NULL);
+
+ g_free(sms->from);
+ g_free(sms);
+ return ;
+ }
+
+ if (!sms->from || !sms->msg) {
+ g_free(sms);
+ return;
+ }
+
+ m = yahoo_string_decode(gc, sms->msg, sms->utf8);
+ serv_got_im(gc, sms->from, m, 0, sms->time);
+
+ g_free(m);
+ g_free(sms->from);
+ g_free(sms);
+}
+
+/* pkt_type is YAHOO_PKT_TYPE_SERVER if pkt arrives from yahoo server, YAHOO_PKT_TYPE_P2P if pkt arrives through p2p */
+static void yahoo_process_message(PurpleConnection *gc, struct yahoo_packet *pkt, yahoo_pkt_type pkt_type)
{
PurpleAccount *account;
struct yahoo_data *yd = gc->proto_data;
@@ -760,13 +887,17 @@ static void yahoo_process_message(PurpleConnection *gc, struct yahoo_packet *pkt
GSList *list = NULL;
struct _yahoo_im *im = NULL;
const char *imv = NULL;
+ gint val_11 = 0;
+ gboolean msn = FALSE;
+ char *msn_from = NULL;
account = purple_connection_get_account(gc);
- if (pkt->status <= 1 || pkt->status == 5) {
+ if (pkt->status <= 1 || pkt->status == 5 || pkt->status == YAHOO_STATUS_OFFLINE) {
+ /* messages are received with status YAHOO_STATUS_OFFLINE in case of p2p */
while (l != NULL) {
struct yahoo_pair *pair = l->data;
- if (pair->key == 4) {
+ if (pair->key == 4 || pair->key == 1) {
im = g_new0(struct _yahoo_im, 1);
list = g_slist_append(list, im);
im->from = pair->value;
@@ -786,6 +917,15 @@ static void yahoo_process_message(PurpleConnection *gc, struct yahoo_packet *pkt
if (im)
im->msg = pair->value;
}
+ if (pair->key == 241) {
+ if(strtol(pair->value, NULL, 10) == 2)
+ msn = TRUE;
+ }
+ /* peer session id */
+ if (pair->key == 11) {
+ if (im)
+ val_11 = strtol(pair->value, NULL, 10);
+ }
/* IMV key */
if (pair->key == 63)
{
@@ -801,6 +941,17 @@ static void yahoo_process_message(PurpleConnection *gc, struct yahoo_packet *pkt
_("Your Yahoo! message did not get sent."), NULL);
}
+ if(msn)
+ msn_from = g_strconcat("msn/", im->from, NULL);
+
+ /* disconnect the peer if connected through p2p and sends wrong value for session id */
+ if( (pkt_type == YAHOO_PKT_TYPE_P2P) && (val_11 != yd->session_id) ) {
+ purple_debug_warning("yahoo","p2p: %s sent us message with wrong session id. Disconnecting p2p connection to peer\n", im->from);
+ /* remove from p2p connection lists, also calls yahoo_p2p_disconnect_destroy_data */
+ g_hash_table_remove(yd->peers, im->from);
+ return;
+ }
+
/** TODO: It seems that this check should be per IM, not global */
/* Check for the Doodle IMV */
if (im != NULL && imv!= NULL && im->from != NULL)
@@ -837,6 +988,7 @@ static void yahoo_process_message(PurpleConnection *gc, struct yahoo_packet *pkt
for (l = list; l; l = l->next) {
YahooFriend *f;
char *m, *m2;
+ PurpleConversation *c;
im = l->data;
if (!im->from || !im->msg) {
@@ -881,35 +1033,54 @@ static void yahoo_process_message(PurpleConnection *gc, struct yahoo_packet *pkt
m = m2;
purple_util_chrreplace(m, '\r', '\n');
+ c = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, im->from, account);
+ if ((c == NULL) && msn)
+ c=purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, msn_from, account);
+
if (!strcmp(m, "<ding>")) {
- PurpleConversation *c;
char *username;
- c = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, im->from, account);
- if (c == NULL)
- c = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, im->from);
+ if(c == NULL) {
+ if(msn)
+ c = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, msn_from);
+ else
+ c = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, im->from);
+ }
+ if(msn)
+ username = g_markup_escape_text(msn_from, -1);
+ else
+ username = g_markup_escape_text(im->from, -1);
- username = g_markup_escape_text(im->from, -1);
purple_prpl_got_attention(gc, username, YAHOO_BUZZ);
g_free(username);
g_free(m);
g_free(im);
+ g_free(msn_from);
continue;
}
m2 = yahoo_codes_to_html(m);
g_free(m);
- serv_got_im(gc, im->from, m2, 0, im->time);
+
+ if(msn)
+ serv_got_im(gc, msn_from, m2, 0, im->time);
+ else
+ serv_got_im(gc, im->from, m2, 0, im->time);
+
g_free(m2);
- if ((f = yahoo_friend_find(gc, im->from)) && im->buddy_icon == 2) {
- if (yahoo_friend_get_buddy_icon_need_request(f)) {
- yahoo_send_picture_request(gc, im->from);
- yahoo_friend_set_buddy_icon_need_request(f, FALSE);
+ /* laters : implement buddy icon for msn friends */
+ if(!msn) {
+ if ((f = yahoo_friend_find(gc, im->from)) && im->buddy_icon == 2) {
+ if (yahoo_friend_get_buddy_icon_need_request(f)) {
+ yahoo_send_picture_request(gc, im->from);
+ yahoo_friend_set_buddy_icon_need_request(f, FALSE);
+ }
}
}
g_free(im);
+ g_free(msn_from);
}
g_slist_free(list);
}
@@ -1042,12 +1213,14 @@ static void yahoo_buddy_auth_req_15(PurpleConnection *gc, struct yahoo_packet *p
PurpleAccount *account;
GSList *l = pkt->hash;
const char *msg = NULL;
+ int protocol = 0;
account = purple_connection_get_account(gc);
/* Buddy authorized/declined our addition */
if (pkt->status == 1) {
- const char *who = NULL;
+ char *temp = NULL;
+ char *who = NULL;
int response = 0;
while (l) {
@@ -1055,7 +1228,7 @@ static void yahoo_buddy_auth_req_15(PurpleConnection *gc, struct yahoo_packet *p
switch (pair->key) {
case 4:
- who = pair->value;
+ temp = pair->value;
break;
case 13:
response = strtol(pair->value, NULL, 10);
@@ -1063,10 +1236,18 @@ static void yahoo_buddy_auth_req_15(PurpleConnection *gc, struct yahoo_packet *p
case 14:
msg = pair->value;
break;
+ case 241:
+ protocol = strtol(pair->value, NULL, 10);
+ break;
}
l = l->next;
}
+ if(protocol == 0)
+ who = g_strdup(temp);
+ else if(protocol == 2)
+ who = g_strconcat("msn/", temp, NULL);
+
if (response == 1) /* Authorized */
purple_debug_info("yahoo", "Received authorization from buddy '%s'.\n", who ? who : "(Unknown Buddy)");
else if (response == 2) { /* Declined */
@@ -1074,12 +1255,13 @@ static void yahoo_buddy_auth_req_15(PurpleConnection *gc, struct yahoo_packet *p
yahoo_buddy_denied_our_add(gc, who, msg);
} else
purple_debug_error("yahoo", "Received unknown authorization response of %d from buddy '%s'.\n", response, who ? who : "(Unknown Buddy)");
-
+ g_free(who);
}
/* Buddy requested authorization to add us. */
else if (pkt->status == 3) {
struct yahoo_add_request *add_req;
const char *firstname = NULL, *lastname = NULL;
+ char *temp = NULL;
add_req = g_new0(struct yahoo_add_request, 1);
add_req->gc = gc;
@@ -1089,6 +1271,7 @@ static void yahoo_buddy_auth_req_15(PurpleConnection *gc, struct yahoo_packet *p
switch (pair->key) {
case 4:
+ temp = pair->value;
add_req->who = g_strdup(pair->value);
break;
case 5:
@@ -1110,6 +1293,10 @@ static void yahoo_buddy_auth_req_15(PurpleConnection *gc, struct yahoo_packet *p
}
l = l->next;
}
+ if(add_req->protocol == 2)
+ add_req->who = g_strconcat("msn/", temp, NULL);
+ else
+ add_req->who = g_strdup(temp);
if (add_req->id && add_req->who) {
char *alias = NULL, *dec_msg = NULL;
@@ -1464,7 +1651,7 @@ static void yahoo_auth16_stage2(PurpleUtilFetchUrlData *unused, gpointer user_da
purple_debug_error("yahoo", "Login Failed, unable to retrieve stage 2 url: %s\n", error_message);
purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, error_message);
g_free(auth_data->seed);
- g_free(auth_data);
+ g_free(auth_data);
return;
}
else if (len > 0 && ret_data && *ret_data) {
@@ -1721,21 +1908,23 @@ static void ignore_buddy(PurpleBuddy *buddy) {
return;
group = purple_buddy_get_group(buddy);
- name = g_strdup(buddy->name);
- account = buddy->account;
+ name = g_strdup(purple_buddy_get_name(buddy));
+ account = purple_buddy_get_account(buddy);
purple_debug(PURPLE_DEBUG_INFO, "blist",
- "Removing '%s' from buddy list.\n", buddy->name);
+ "Removing '%s' from buddy list.\n", name);
purple_account_remove_buddy(account, buddy, group);
purple_blist_remove_buddy(buddy);
- serv_add_deny(account->gc, name);
+ serv_add_deny(purple_account_get_connection(account), name);
g_free(name);
}
-static void keep_buddy(PurpleBuddy *b) {
- purple_privacy_deny_remove(b->account, b->name, 1);
+static void keep_buddy(PurpleBuddy *b)
+{
+ purple_privacy_deny_remove(purple_buddy_get_account(b),
+ purple_buddy_get_name(b), 1);
}
static void yahoo_process_ignore(PurpleConnection *gc, struct yahoo_packet *pkt) {
@@ -1809,7 +1998,7 @@ static void yahoo_process_authresp(PurpleConnection *gc, struct yahoo_packet *pk
{
#ifdef TRY_WEBMESSENGER_LOGIN
struct yahoo_data *yd = gc->proto_data;
-#endif
+#endif /* TRY_WEBMESSENGER_LOGIN */
GSList *l = pkt->hash;
int err = 0;
char *msg;
@@ -1853,7 +2042,7 @@ static void yahoo_process_authresp(PurpleConnection *gc, struct yahoo_packet *pk
yd->url_datas = g_slist_prepend(yd->url_datas, url_data);
return;
}
-#endif
+#endif /* TRY_WEBMESSENGER_LOGIN */
if (!purple_account_get_remember_password(account))
purple_account_set_password(account, NULL);
@@ -1882,11 +2071,15 @@ static void yahoo_process_addbuddy(PurpleConnection *gc, struct yahoo_packet *pk
{
int err = 0;
char *who = NULL;
+ char *temp = NULL;
char *group = NULL;
char *decoded_group;
char *buf;
YahooFriend *f;
GSList *l = pkt->hash;
+ struct yahoo_data *yd = gc->proto_data;
+ int protocol = 0;
+ gboolean msn = FALSE;
while (l) {
struct yahoo_pair *pair = l->data;
@@ -1896,24 +2089,48 @@ static void yahoo_process_addbuddy(PurpleConnection *gc, struct yahoo_packet *pk
err = strtol(pair->value, NULL, 10);
break;
case 7:
- who = pair->value;
+ temp = pair->value;
break;
case 65:
group = pair->value;
break;
+ case 241:
+ protocol = strtol(pair->value, NULL, 10);
+ if(protocol == 2)
+ msn = TRUE;
+ break;
}
l = l->next;
}
- if (!who)
+ if (!temp)
return;
if (!group)
group = "";
+ if(msn)
+ who = g_strconcat("msn/", temp, NULL);
+ else
+ who = g_strdup(temp);
+
if (!err || (err == 2)) { /* 0 = ok, 2 = already on serv list */
f = yahoo_friend_find_or_new(gc, who);
yahoo_update_status(gc, who, f);
+ if(protocol)
+ f->protocol = protocol;
+
+ if( !g_hash_table_lookup(yd->peers, who) ) {
+ /* we are not connected as client, so set friend to not connected */
+ if(msn)
+ yahoo_friend_set_p2p_status(f, YAHOO_P2PSTATUS_DO_NOT_CONNECT);
+ else {
+ yahoo_friend_set_p2p_status(f, YAHOO_P2PSTATUS_NOT_CONNECTED);
+ f->p2p_packet_sent = 0;
+ }
+ }
+ else /* we are already connected. set friend to YAHOO_P2PSTATUS_WE_ARE_CLIENT */
+ yahoo_friend_set_p2p_status(f, YAHOO_P2PSTATUS_WE_ARE_CLIENT);
return;
}
@@ -1924,6 +2141,437 @@ static void yahoo_process_addbuddy(PurpleConnection *gc, struct yahoo_packet *pk
purple_notify_error(gc, NULL, _("Could not add buddy to server list"), buf);
g_free(buf);
g_free(decoded_group);
+ g_free(who);
+}
+
+/* write pkt to the source */
+static void yahoo_p2p_write_pkt(gint source, struct yahoo_packet *pkt)
+{
+ size_t pkt_len;
+ guchar *raw_packet;
+
+ /*build the raw packet and send it to the host*/
+ pkt_len = yahoo_packet_build(pkt, 0, 0, 0, &raw_packet);
+ if(write(source, raw_packet, pkt_len) != pkt_len)
+ purple_debug_warning("yahoo","p2p: couldn't write to the source\n");
+ g_free(raw_packet);
+}
+
+static void yahoo_p2p_keepalive_cb(gpointer key, gpointer value, gpointer user_data)
+{
+ struct yahoo_p2p_data *p2p_data = value;
+ PurpleConnection *gc = user_data;
+ struct yahoo_packet *pkt_to_send;
+ PurpleAccount *account;
+ struct yahoo_data *yd = gc->proto_data;
+
+ account = purple_connection_get_account(gc);
+
+ pkt_to_send = yahoo_packet_new(YAHOO_SERVICE_P2PFILEXFER, YAHOO_STATUS_AVAILABLE, yd->session_id);
+ yahoo_packet_hash(pkt_to_send, "ssisi",
+ 4, purple_normalize(account, purple_account_get_username(account)),
+ 5, p2p_data->host_username,
+ 241, 0, /* Protocol identifier */
+ 49, "PEERTOPEER",
+ 13, 7);
+ yahoo_p2p_write_pkt(p2p_data->source, pkt_to_send);
+
+ yahoo_packet_free(pkt_to_send);
+}
+
+static gboolean yahoo_p2p_keepalive(gpointer data)
+{
+ PurpleConnection *gc = data;
+ struct yahoo_data *yd = gc->proto_data;
+
+ g_hash_table_foreach(yd->peers, yahoo_p2p_keepalive_cb, gc);
+
+ return TRUE;
+}
+
+/* destroy p2p_data associated with a peer and close p2p connection.
+ * g_hash_table_remove() calls this function to destroy p2p_data associated with the peer,
+ * call g_hash_table_remove() instead of this fucntion if peer has an entry in the table */
+static void yahoo_p2p_disconnect_destroy_data(gpointer data)
+{
+ struct yahoo_p2p_data *p2p_data;
+ YahooFriend *f;
+
+ if(!(p2p_data = data))
+ return ;
+
+ /* If friend, set him not connected */
+ f = yahoo_friend_find(p2p_data->gc, p2p_data->host_username);
+ if (f)
+ yahoo_friend_set_p2p_status(f, YAHOO_P2PSTATUS_NOT_CONNECTED);
+
+ if(p2p_data->source >= 0)
+ close(p2p_data->source);
+ purple_input_remove(p2p_data->input_event);
+ g_free(p2p_data->host_ip);
+ g_free(p2p_data->host_username);
+ g_free(p2p_data);
+}
+
+/* exchange of initial p2pfilexfer packets, service type YAHOO_SERVICE_P2PFILEXFER */
+static void yahoo_p2p_process_p2pfilexfer(gpointer data, gint source, struct yahoo_packet *pkt)
+{
+ struct yahoo_p2p_data *p2p_data;
+ char *who = NULL;
+ GSList *l = pkt->hash;
+ struct yahoo_packet *pkt_to_send;
+ PurpleAccount *account;
+ int val_13_to_send = 0;
+ struct yahoo_data *yd;
+ YahooFriend *f;
+
+ if(!(p2p_data = data))
+ return ;
+
+ yd = p2p_data->gc->proto_data;
+
+ /* lets see whats in the packet */
+ while (l) {
+ struct yahoo_pair *pair = l->data;
+
+ switch (pair->key) {
+ case 4:
+ who = pair->value;
+ if(strncmp(who, p2p_data->host_username, strlen(p2p_data->host_username)) != 0) {
+ /* from whom are we receiving the packets ?? */
+ purple_debug_warning("yahoo","p2p: received data from wrong user\n");
+ return;
+ }
+ break;
+ case 13:
+ p2p_data->val_13 = strtol(pair->value, NULL, 10); /* Value should be 5-7 */
+ break;
+ /* case 5, 49 look laters, no use right now */
+ }
+ l = l->next;
+ }
+
+ account = purple_connection_get_account(p2p_data->gc);
+
+ /* key_13: sort of a counter.
+ * WHEN WE ARE CLIENT: yahoo server sends val_13 = 0, we send to peer val_13 = 1, receive back val_13 = 5,
+ * we send val_13=6, receive val_13=7, we send val_13=7, HALT. Keep sending val_13 = 7 as keep alive.
+ * WHEN WE ARE SERVER: we send val_13 = 0 to yahoo server, peer sends us val_13 = 1, we send val_13 = 5,
+ * receive val_13 = 6, send val_13 = 7, receive val_13 = 7. HALT. Keep sending val_13 = 7 as keep alive. */
+
+ switch(p2p_data->val_13) {
+ case 1 : val_13_to_send = 5; break;
+ case 5 : val_13_to_send = 6; break;
+ case 6 : val_13_to_send = 7; break;
+ case 7 : if( g_hash_table_lookup(yd->peers, p2p_data->host_username) )
+ return;
+ val_13_to_send = 7; break;
+ default: purple_debug_warning("yahoo","p2p:Unknown value for key 13\n");
+ return;
+ }
+
+ /* Build the yahoo packet */
+ pkt_to_send = yahoo_packet_new(YAHOO_SERVICE_P2PFILEXFER, YAHOO_STATUS_AVAILABLE, yd->session_id);
+ yahoo_packet_hash(pkt_to_send, "ssisi",
+ 4, purple_normalize(account, purple_account_get_username(account)),
+ 5, p2p_data->host_username,
+ 241, 0, /* Protocol identifier */
+ 49, "PEERTOPEER",
+ 13, val_13_to_send);
+
+ /* build the raw packet and send it to the host */
+ yahoo_p2p_write_pkt(source, pkt_to_send);
+ yahoo_packet_free(pkt_to_send);
+
+ if( val_13_to_send == 7 )
+ if( !g_hash_table_lookup(yd->peers, p2p_data->host_username) ) {
+ g_hash_table_insert(yd->peers, g_strdup(p2p_data->host_username), p2p_data);
+ /* If the peer is a friend, set him connected */
+ f = yahoo_friend_find(p2p_data->gc, p2p_data->host_username);
+ if (f) {
+ if(p2p_data->connection_type == YAHOO_P2P_WE_ARE_SERVER) {
+ p2p_data->session_id = f->session_id;
+ yahoo_friend_set_p2p_status(f, YAHOO_P2PSTATUS_WE_ARE_SERVER);
+ }
+ else
+ yahoo_friend_set_p2p_status(f, YAHOO_P2PSTATUS_WE_ARE_CLIENT);
+ }
+ }
+}
+
+/* callback function associated with receiving of data, not considering receipt of multiple YMSG packets in a single TCP packet */
+static void yahoo_p2p_read_pkt_cb(gpointer data, gint source, PurpleInputCondition cond)
+{
+ guchar buf[1024]; /* is it safe to assume a fixed array length of 1024 ?? */
+ int len;
+ int pos = 0;
+ int pktlen;
+ struct yahoo_packet *pkt;
+ guchar *start = NULL;
+ struct yahoo_p2p_data *p2p_data;
+ struct yahoo_data *yd;
+
+ if(!(p2p_data = data))
+ return ;
+ yd = p2p_data->gc->proto_data;
+
+ len = read(source, buf, sizeof(buf));
+ if ((len < 0) && ((errno == EAGAIN) || (errno == EWOULDBLOCK)))
+ return ; /* No Worries*/
+ else if (len <= 0)
+ {
+ purple_debug_warning("yahoo","p2p: Error in connection, or host disconnected\n");
+ /* remove from p2p connection lists, also calls yahoo_p2p_disconnect_destroy_data */
+ if( g_hash_table_lookup(yd->peers, p2p_data->host_username) )
+ g_hash_table_remove(yd->peers,p2p_data->host_username);
+ else
+ yahoo_p2p_disconnect_destroy_data(data);
+ return;
+ }
+
+ if(len < YAHOO_PACKET_HDRLEN)
+ return;
+
+ if(strncmp((char *)buf, "YMSG", MIN(4, len)) != 0) {
+ /* Not a YMSG packet */
+ purple_debug_warning("yahoo","p2p: Got something other than YMSG packet\n");
+
+ start = memchr(buf + 1, 'Y', len - 1);
+ if (start == NULL)
+ return;
+
+ g_memmove(buf, start, len - (start - buf));
+ len -= start - buf;
+ }
+
+ pos += 4; /* YMSG */
+ pos += 2;
+ pos += 2;
+
+ pktlen = yahoo_get16(buf + pos); pos += 2;
+ purple_debug(PURPLE_DEBUG_MISC, "yahoo", "p2p: %d bytes to read\n", len);
+
+ pkt = yahoo_packet_new(0, 0, 0);
+ pkt->service = yahoo_get16(buf + pos); pos += 2;
+ pkt->status = yahoo_get32(buf + pos); pos += 4;
+ pkt->id = yahoo_get32(buf + pos); pos += 4;
+
+ purple_debug(PURPLE_DEBUG_MISC, "yahoo", "p2p: Yahoo Service: 0x%02x Status: %d\n",pkt->service, pkt->status);
+ yahoo_packet_read(pkt, buf + pos, pktlen);
+
+ /* packet processing */
+ switch(pkt->service) {
+ case YAHOO_SERVICE_P2PFILEXFER:
+ yahoo_p2p_process_p2pfilexfer(data, source, pkt);
+ break;
+ case YAHOO_SERVICE_MESSAGE:
+ yahoo_process_message(p2p_data->gc, pkt, YAHOO_PKT_TYPE_P2P);
+ break;
+ case YAHOO_SERVICE_NOTIFY:
+ yahoo_process_notify(p2p_data->gc, pkt, YAHOO_PKT_TYPE_P2P);
+ break;
+ default:
+ purple_debug_warning("yahoo","p2p: p2p service %d Unhandled\n",pkt->service);
+ }
+
+ yahoo_packet_free(pkt);
+}
+
+static void yahoo_p2p_server_send_connected_cb(gpointer data, gint source, PurpleInputCondition cond)
+{
+ int acceptfd;
+ struct yahoo_p2p_data *p2p_data;
+ struct yahoo_data *yd;
+
+ if(!(p2p_data = data))
+ return ;
+ yd = p2p_data->gc->proto_data;
+
+ acceptfd = accept(source, NULL, 0);
+ if(acceptfd == -1 && (errno == EAGAIN || errno == EWOULDBLOCK))
+ return;
+ else if(acceptfd == -1) {
+ purple_debug_warning("yahoo","yahoo_p2p_server_send_connected_cb: accept: %s\n", g_strerror(errno));
+ yahoo_p2p_disconnect_destroy_data(data);
+ return;
+ }
+
+ /* remove timeout */
+ if (yd->yahoo_p2p_server_timeout_handle) {
+ purple_timeout_remove(yd->yahoo_p2p_server_timeout_handle);
+ yd->yahoo_p2p_server_timeout_handle = 0;
+ }
+
+ /* remove watcher and close p2p server */
+ if (yd->yahoo_p2p_server_watcher) {
+ purple_input_remove(yd->yahoo_p2p_server_watcher);
+ yd->yahoo_p2p_server_watcher = 0;
+ }
+ if (yd->yahoo_local_p2p_server_fd >= 0) {
+ close(yd->yahoo_local_p2p_server_fd);
+ yd->yahoo_local_p2p_server_fd = -1;
+ }
+
+ /* Add an Input Read event to the file descriptor */
+ p2p_data->input_event = purple_input_add(acceptfd, PURPLE_INPUT_READ, yahoo_p2p_read_pkt_cb, data);
+ p2p_data->source = acceptfd;
+}
+
+static gboolean yahoo_cancel_p2p_server_listen_cb(gpointer data)
+{
+ struct yahoo_p2p_data *p2p_data;
+ struct yahoo_data *yd;
+
+ if(!(p2p_data = data))
+ return FALSE;
+
+ yd = p2p_data->gc->proto_data;
+
+ purple_debug_warning("yahoo","yahoo p2p server timeout, peer failed to connect");
+ yahoo_p2p_disconnect_destroy_data(data);
+ purple_input_remove(yd->yahoo_p2p_server_watcher);
+ yd->yahoo_p2p_server_watcher = 0;
+ close(yd->yahoo_local_p2p_server_fd);
+ yd->yahoo_local_p2p_server_fd = -1;
+ yd->yahoo_p2p_server_timeout_handle = 0;
+
+ return FALSE;
+}
+
+static void yahoo_p2p_server_listen_cb(int listenfd, gpointer data)
+{
+ struct yahoo_p2p_data *p2p_data;
+ struct yahoo_data *yd;
+
+ if(!(p2p_data = data))
+ return ;
+
+ if(listenfd == -1) {
+ purple_debug_warning("yahoo","p2p: error starting p2p server\n");
+ yahoo_p2p_disconnect_destroy_data(data);
+ return;
+ }
+
+ yd = p2p_data->gc->proto_data;
+
+ /* Add an Input Read event to the file descriptor */
+ yd->yahoo_local_p2p_server_fd = listenfd;
+ yd->yahoo_p2p_server_watcher = purple_input_add(listenfd, PURPLE_INPUT_READ, yahoo_p2p_server_send_connected_cb,data);
+
+ /* add timeout */
+ yd->yahoo_p2p_server_timeout_handle = purple_timeout_add_seconds(YAHOO_P2P_SERVER_TIMEOUT, yahoo_cancel_p2p_server_listen_cb, data);
+}
+
+/* send p2p pkt containing our encoded ip, asking peer to connect to us */
+void yahoo_send_p2p_pkt(PurpleConnection *gc, const char *who, int val_13)
+{
+ const char *public_ip;
+ guint32 temp[4];
+ guint32 ip;
+ char temp_str[100];
+ gchar *base64_ip = NULL;
+ YahooFriend *f;
+ struct yahoo_packet *pkt;
+ PurpleAccount *account;
+ struct yahoo_data *yd = gc->proto_data;
+ struct yahoo_p2p_data *p2p_data;
+
+ f = yahoo_friend_find(gc, who);
+ account = purple_connection_get_account(gc);
+
+ /* Do not send invitation if already listening for other connection */
+ if(yd->yahoo_local_p2p_server_fd >= 0)
+ return;
+
+ /* One shouldn't try to connect to self */
+ if( strcmp(purple_normalize(account, purple_account_get_username(account)), who) == 0)
+ return;
+
+ /* send packet to only those friends who arent p2p connected and to whom we havent already sent. Do not send if this condition doesn't hold good */
+ if( !( f && (yahoo_friend_get_p2p_status(f) == YAHOO_P2PSTATUS_NOT_CONNECTED) && (f->p2p_packet_sent == 0)) )
+ return;
+
+ /* Dont send p2p packet to buddies of other protocols */
+ if(f->protocol)
+ return;
+
+ /* Finally, don't try to connect to buddies not online or on sms */
+ if( (f->status == YAHOO_STATUS_OFFLINE) || f->sms )
+ return;
+
+ public_ip = purple_network_get_public_ip();
+ if( (sscanf(public_ip, "%u.%u.%u.%u", &temp[0], &temp[1], &temp[2], &temp[3])) !=4 )
+ return ;
+
+ ip = (temp[3] << 24) | (temp[2] <<16) | (temp[1] << 8) | temp[0];
+ sprintf(temp_str, "%d", ip);
+ base64_ip = purple_base64_encode( (guchar *)temp_str, strlen(temp_str) );
+
+ pkt = yahoo_packet_new(YAHOO_SERVICE_PEERTOPEER, YAHOO_STATUS_AVAILABLE, 0);
+ yahoo_packet_hash(pkt, "sssissis",
+ 1, purple_normalize(account, purple_account_get_username(account)),
+ 4, purple_normalize(account, purple_account_get_username(account)),
+ 12, base64_ip, /* base64 encode ip */
+ 61, 0, /* To-do : figure out what is 61 for?? */
+ 2, "",
+ 5, who,
+ 13, val_13,
+ 49, "PEERTOPEER");
+ yahoo_packet_send_and_free(pkt, yd);
+
+ f->p2p_packet_sent = 1; /* set p2p_packet_sent to sent */
+
+ p2p_data = g_new0(struct yahoo_p2p_data, 1);
+
+ p2p_data->gc = gc;
+ p2p_data->host_ip = NULL;
+ p2p_data->host_username = g_strdup(who);
+ p2p_data->val_13 = val_13;
+ p2p_data->connection_type = YAHOO_P2P_WE_ARE_SERVER;
+ p2p_data->source = -1;
+
+ purple_network_listen(YAHOO_PAGER_PORT_P2P, SOCK_STREAM, yahoo_p2p_server_listen_cb, p2p_data);
+
+ g_free(base64_ip);
+}
+
+/* function called when connection to p2p host is setup */
+static void yahoo_p2p_init_cb(gpointer data, gint source, const gchar *error_message)
+{
+ struct yahoo_p2p_data *p2p_data;
+ struct yahoo_packet *pkt_to_send;
+ PurpleAccount *account;
+ struct yahoo_data *yd;
+
+ if(!(p2p_data = data))
+ return ;
+ yd = p2p_data->gc->proto_data;
+
+ if(error_message != NULL) {
+ purple_debug_warning("yahoo","p2p: %s\n",error_message);
+ yahoo_send_p2p_pkt(p2p_data->gc, p2p_data->host_username, 2);/* send p2p init packet with val_13=2 */
+
+ yahoo_p2p_disconnect_destroy_data(p2p_data);
+ return;
+ }
+
+ /* Add an Input Read event to the file descriptor */
+ p2p_data->input_event = purple_input_add(source, PURPLE_INPUT_READ, yahoo_p2p_read_pkt_cb, data);
+ p2p_data->source = source;
+
+ account = purple_connection_get_account(p2p_data->gc);
+
+ /* Build the yahoo packet */
+ pkt_to_send = yahoo_packet_new(YAHOO_SERVICE_P2PFILEXFER, YAHOO_STATUS_AVAILABLE, yd->session_id);
+ yahoo_packet_hash(pkt_to_send, "ssisi",
+ 4, purple_normalize(account, purple_account_get_username(account)),
+ 5, p2p_data->host_username,
+ 241, 0, /* Protocol identifier */
+ 49, "PEERTOPEER",
+ 13, 1); /* we receive key13= 0 or 2, we send key13=1 */
+
+ yahoo_p2p_write_pkt(source, pkt_to_send); /* build raw packet and send */
+ yahoo_packet_free(pkt_to_send);
}
static void yahoo_process_p2p(PurpleConnection *gc, struct yahoo_packet *pkt)
@@ -1933,6 +2581,14 @@ static void yahoo_process_p2p(PurpleConnection *gc, struct yahoo_packet *pkt)
char *base64 = NULL;
guchar *decoded;
gsize len;
+ gint val_13 = 0;
+ gint val_11 = 0;
+ PurpleAccount *account;
+ YahooFriend *f;
+
+ /* if status is not 1 ie YAHOO_STATUS_BRB, the packet bounced back, so contains our own ip */
+ if(!(pkt->status == YAHOO_STATUS_BRB))
+ return ;
while (l) {
struct yahoo_pair *pair = l->data;
@@ -1952,14 +2608,21 @@ static void yahoo_process_p2p(PurpleConnection *gc, struct yahoo_packet *pkt)
/* so, this is an ip address. in base64. decoded it's in ascii.
after strtol, it's in reversed byte order. Who thought this up?*/
break;
+ case 13:
+ val_13 = strtol(pair->value, NULL, 10);
+ break;
+ case 11:
+ val_11 = strtol(pair->value, NULL, 10); /* session id of peer */
+ if( (f = yahoo_friend_find(gc, who)) )
+ f->session_id = val_11;
+ break;
/*
TODO: figure these out
yahoo: Key: 61 Value: 0
yahoo: Key: 2 Value:
- yahoo: Key: 13 Value: 0
+ yahoo: Key: 13 Value: 0 packet count ??
yahoo: Key: 49 Value: PEERTOPEER
yahoo: Key: 140 Value: 1
- yahoo: Key: 11 Value: -1786225828
*/
}
@@ -1969,8 +2632,9 @@ static void yahoo_process_p2p(PurpleConnection *gc, struct yahoo_packet *pkt)
if (base64) {
guint32 ip;
- char *tmp2;
YahooFriend *f;
+ char *host_ip;
+ struct yahoo_p2p_data *p2p_data;
decoded = purple_base64_decode(base64, &len);
if (len) {
@@ -1979,16 +2643,40 @@ static void yahoo_process_p2p(PurpleConnection *gc, struct yahoo_packet *pkt)
g_free(tmp);
}
- tmp2 = g_strndup((const gchar *)decoded, len); /* so its \0 terminated...*/
- ip = strtol(tmp2, NULL, 10);
- g_free(tmp2);
+ ip = strtol((gchar *)decoded, NULL, 10);
g_free(decoded);
- tmp2 = g_strdup_printf("%u.%u.%u.%u", ip & 0xff, (ip >> 8) & 0xff, (ip >> 16) & 0xff,
+ host_ip = g_strdup_printf("%u.%u.%u.%u", ip & 0xff, (ip >> 8) & 0xff, (ip >> 16) & 0xff,
(ip >> 24) & 0xff);
f = yahoo_friend_find(gc, who);
if (f)
- yahoo_friend_set_ip(f, tmp2);
- g_free(tmp2);
+ yahoo_friend_set_ip(f, host_ip);
+ purple_debug_info("yahoo", "IP : %s\n", host_ip);
+
+ account = purple_connection_get_account(gc);
+
+ if(val_11==0) {
+ if(!f)
+ return;
+ else
+ val_11 = f->session_id;
+ }
+
+ p2p_data = g_new0(struct yahoo_p2p_data, 1);
+ p2p_data->host_username = g_strdup(who);
+ p2p_data->val_13 = val_13;
+ p2p_data->session_id = val_11;
+ p2p_data->host_ip = host_ip;
+ p2p_data->gc = gc;
+ p2p_data->connection_type = YAHOO_P2P_WE_ARE_CLIENT;
+ p2p_data->source = -1;
+
+ /* connect to host */
+ if((purple_proxy_connect(gc, account, host_ip, YAHOO_PAGER_PORT_P2P, yahoo_p2p_init_cb, p2p_data))==NULL) {
+ purple_debug_info("yahoo","p2p: Connection to %s failed\n", host_ip);
+ g_free(p2p_data->host_ip);
+ g_free(p2p_data->host_username);
+ g_free(p2p_data);
+ }
}
}
@@ -2068,12 +2756,12 @@ static void yahoo_packet_process(PurpleConnection *gc, struct yahoo_packet *pkt)
yahoo_process_status(gc, pkt);
break;
case YAHOO_SERVICE_NOTIFY:
- yahoo_process_notify(gc, pkt);
+ yahoo_process_notify(gc, pkt, YAHOO_PKT_TYPE_SERVER);
break;
case YAHOO_SERVICE_MESSAGE:
case YAHOO_SERVICE_GAMEMSG:
case YAHOO_SERVICE_CHATMSG:
- yahoo_process_message(gc, pkt);
+ yahoo_process_message(gc, pkt, YAHOO_PKT_TYPE_SERVER);
break;
case YAHOO_SERVICE_SYSMESSAGE:
yahoo_process_sysmessage(gc, pkt);
@@ -2150,7 +2838,8 @@ static void yahoo_packet_process(PurpleConnection *gc, struct yahoo_packet *pkt)
break;
case YAHOO_SERVICE_P2PFILEXFER:
/* This case had no break and continued; thus keeping it this way.*/
- yahoo_process_p2pfilexfer(gc, pkt);
+ yahoo_process_p2p(gc, pkt); /* P2PFILEXFER handled the same way as process_p2p */
+ yahoo_process_p2pfilexfer(gc, pkt); /* redundant ??, need to have a break now */
case YAHOO_SERVICE_FILETRANSFER:
yahoo_process_filetransfer(gc, pkt);
break;
@@ -2184,6 +2873,9 @@ static void yahoo_packet_process(PurpleConnection *gc, struct yahoo_packet *pkt)
case YAHOO_SERVICE_FILETRANS_ACC_15:
yahoo_process_filetrans_acc_15(gc, pkt);
break;
+ case YAHOO_SERVICE_SMS_MSG:
+ yahoo_process_sms_message(gc, pkt);
+ break;
default:
purple_debug(PURPLE_DEBUG_ERROR, "yahoo",
@@ -2297,11 +2989,6 @@ static void yahoo_got_connected(gpointer data, gint source, const gchar *error_m
struct yahoo_data *yd;
struct yahoo_packet *pkt;
- if (!PURPLE_CONNECTION_IS_VALID(gc)) {
- close(source);
- return;
- }
-
if (source < 0) {
gchar *tmp;
tmp = g_strdup_printf(_("Could not establish a connection with the server:\n%s"),
@@ -2329,11 +3016,6 @@ static void yahoo_got_web_connected(gpointer data, gint source, const gchar *err
struct yahoo_data *yd;
struct yahoo_packet *pkt;
- if (!PURPLE_CONNECTION_IS_VALID(gc)) {
- close(source);
- return;
- }
-
if (source < 0) {
gchar *tmp;
tmp = g_strdup_printf(_("Could not establish a connection with the server:\n%s"),
@@ -2623,7 +3305,7 @@ yahoo_login_page_cb(PurpleUtilFetchUrlData *url_data, gpointer user_data,
purple_cipher_context_destroy(context);
}
-#endif
+#endif /* TRY_WEBMESSENGER_LOGIN */
static void yahoo_server_check(PurpleAccount *account)
{
@@ -2699,6 +3381,7 @@ static void yahoo_login(PurpleAccount *account) {
purple_connection_set_display_name(gc, purple_account_get_username(account));
+ yd->yahoo_local_p2p_server_fd = -1;
yd->fd = -1;
yd->txhandler = 0;
/* TODO: Is there a good grow size for the buffer? */
@@ -2706,6 +3389,9 @@ static void yahoo_login(PurpleAccount *account) {
yd->friends = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, yahoo_friend_free);
yd->imvironments = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
yd->xfer_peer_idstring_map = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, NULL);
+ yd->peers = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, yahoo_p2p_disconnect_destroy_data);
+ yd->sms_carrier = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
+ yd->yahoo_p2p_timer = purple_timeout_add_seconds(YAHOO_P2P_KEEPALIVE_SECS, yahoo_p2p_keepalive, gc);
yd->confs = NULL;
yd->conf_id = 2;
yd->last_keepalive = yd->last_ping = time(NULL);
@@ -2771,6 +3457,24 @@ static void yahoo_close(PurpleConnection *gc) {
if (yd->in_chat)
yahoo_c_leave(gc, 1); /* 1 = YAHOO_CHAT_ID */
+ purple_timeout_remove(yd->yahoo_p2p_timer);
+ if(yd->yahoo_p2p_server_timeout_handle != 0) {
+ purple_timeout_remove(yd->yahoo_p2p_server_timeout_handle);
+ yd->yahoo_p2p_server_timeout_handle = 0;
+ }
+
+ /* close p2p server if it is waiting for a peer to connect */
+ if (yd->yahoo_p2p_server_watcher) {
+ purple_input_remove(yd->yahoo_p2p_server_watcher);
+ yd->yahoo_p2p_server_watcher = 0;
+ }
+ if (yd->yahoo_local_p2p_server_fd >= 0) {
+ close(yd->yahoo_local_p2p_server_fd);
+ yd->yahoo_local_p2p_server_fd = -1;
+ }
+
+ g_hash_table_destroy(yd->sms_carrier);
+ g_hash_table_destroy(yd->peers);
g_hash_table_destroy(yd->friends);
g_hash_table_destroy(yd->imvironments);
g_hash_table_destroy(yd->xfer_peer_idstring_map);
@@ -2822,11 +3526,12 @@ static const char *yahoo_list_emblem(PurpleBuddy *b)
YahooFriend *f;
PurplePresence *presence;
- if (!b || !(account = b->account) || !(gc = purple_account_get_connection(account)) ||
- !(yd = gc->proto_data))
+ if (!b || !(account = purple_buddy_get_account(b)) ||
+ !(gc = purple_account_get_connection(account)) ||
+ !(yd = gc->proto_data))
return NULL;
- f = yahoo_friend_find(gc, b->name);
+ f = yahoo_friend_find(gc, purple_buddy_get_name(b));
if (!f) {
return "not-authorized";
}
@@ -2886,7 +3591,7 @@ static void yahoo_initiate_conference(PurpleBlistNode *node, gpointer data) {
g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
buddy = (PurpleBuddy *) node;
- gc = purple_account_get_connection(buddy->account);
+ gc = purple_account_get_connection(purple_buddy_get_account(buddy));
yd = gc->proto_data;
id = yd->conf_id;
@@ -2898,7 +3603,7 @@ static void yahoo_initiate_conference(PurpleBlistNode *node, gpointer data) {
yahoo_c_join(gc, components);
g_hash_table_destroy(components);
- yahoo_c_invite(gc, id, "Join my conference...", buddy->name);
+ yahoo_c_invite(gc, id, "Join my conference...", purple_buddy_get_name(buddy));
}
static void yahoo_presence_settings(PurpleBlistNode *node, gpointer data) {
@@ -2907,9 +3612,9 @@ static void yahoo_presence_settings(PurpleBlistNode *node, gpointer data) {
int presence_val = GPOINTER_TO_INT(data);
buddy = (PurpleBuddy *) node;
- gc = purple_account_get_connection(buddy->account);
+ gc = purple_account_get_connection(purple_buddy_get_account(buddy));
- yahoo_friend_update_presence(gc, buddy->name, presence_val);
+ yahoo_friend_update_presence(gc, purple_buddy_get_name(buddy), presence_val);
}
static void yahoo_game(PurpleBlistNode *node, gpointer data) {
@@ -2927,10 +3632,10 @@ static void yahoo_game(PurpleBlistNode *node, gpointer data) {
g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
buddy = (PurpleBuddy *) node;
- gc = purple_account_get_connection(buddy->account);
+ gc = purple_account_get_connection(purple_buddy_get_account(buddy));
yd = (struct yahoo_data *) gc->proto_data;
- f = yahoo_friend_find(gc, buddy->name);
+ f = yahoo_friend_find(gc, purple_buddy_get_name(buddy));
if (!f)
return;
@@ -2952,8 +3657,10 @@ static char *yahoo_status_text(PurpleBuddy *b)
YahooFriend *f = NULL;
const char *msg;
char *msg2;
+ PurpleAccount *account;
- f = yahoo_friend_find(b->account->gc, b->name);
+ account = purple_buddy_get_account(b);
+ f = yahoo_friend_find(purple_account_get_connection(account), purple_buddy_get_name(b));
if (!f)
return g_strdup(_("Not on server list"));
@@ -2982,8 +3689,10 @@ void yahoo_tooltip_text(PurpleBuddy *b, PurpleNotifyUserInfo *user_info, gboolea
char *escaped;
char *status = NULL;
const char *presence = NULL;
+ PurpleAccount *account;
- f = yahoo_friend_find(b->account->gc, b->name);
+ account = purple_buddy_get_account(b);
+ f = yahoo_friend_find(purple_account_get_connection(account), purple_buddy_get_name(b));
if (!f)
status = g_strdup_printf("\n%s", _("Not on server list"));
else {
@@ -3034,7 +3743,7 @@ static void yahoo_addbuddyfrommenu_cb(PurpleBlistNode *node, gpointer data)
g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
buddy = (PurpleBuddy *) node;
- gc = purple_account_get_connection(buddy->account);
+ gc = purple_account_get_connection(purple_buddy_get_account(buddy));
yahoo_add_buddy(gc, buddy, NULL);
}
@@ -3048,9 +3757,9 @@ static void yahoo_chat_goto_menu(PurpleBlistNode *node, gpointer data)
g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
buddy = (PurpleBuddy *) node;
- gc = purple_account_get_connection(buddy->account);
+ gc = purple_account_get_connection(purple_buddy_get_account(buddy));
- yahoo_chat_goto(gc, buddy->name);
+ yahoo_chat_goto(gc, purple_buddy_get_name(buddy));
}
static GList *build_presence_submenu(YahooFriend *f, PurpleConnection *gc) {
@@ -3094,9 +3803,10 @@ static GList *build_presence_submenu(YahooFriend *f, PurpleConnection *gc) {
static void yahoo_doodle_blist_node(PurpleBlistNode *node, gpointer data)
{
PurpleBuddy *b = (PurpleBuddy *)node;
- PurpleConnection *gc = b->account->gc;
+ PurpleAccount *account = purple_buddy_get_account(b);
+ PurpleConnection *gc = purple_account_get_connection(account);
- yahoo_doodle_initiate(gc, b->name);
+ yahoo_doodle_initiate(gc, purple_buddy_get_name(b));
}
static GList *yahoo_buddy_menu(PurpleBuddy *buddy)
@@ -3104,12 +3814,12 @@ static GList *yahoo_buddy_menu(PurpleBuddy *buddy)
GList *m = NULL;
PurpleMenuAction *act;
- PurpleConnection *gc = purple_account_get_connection(buddy->account);
+ PurpleConnection *gc = purple_account_get_connection(purple_buddy_get_account(buddy));
struct yahoo_data *yd = gc->proto_data;
static char buf2[1024];
YahooFriend *f;
- f = yahoo_friend_find(gc, buddy->name);
+ f = yahoo_friend_find(gc, purple_buddy_get_name(buddy));
if (!f && !yd->wm) {
act = purple_menu_action_new(_("Add Buddy"),
@@ -3202,7 +3912,7 @@ yahoo_get_inbox_token_cb(PurpleUtilFetchUrlData *url_data, gpointer user_data,
struct yahoo_data *yd = gc->proto_data;
g_return_if_fail(PURPLE_CONNECTION_IS_VALID(gc));
-
+
yd->url_datas = g_slist_remove(yd->url_datas, url_data);
if (error_message != NULL)
@@ -3311,10 +4021,130 @@ static GList *yahoo_actions(PurplePlugin *plugin, gpointer context) {
return m;
}
+struct yahoo_sms_carrier_cb_data {
+ PurpleConnection *gc;
+ char *who;
+ char *what;
+};
+
+static int yahoo_send_im(PurpleConnection *gc, const char *who, const char *what, PurpleMessageFlags flags);
+
+static void yahoo_get_sms_carrier_cb(PurpleUtilFetchUrlData *url_data, gpointer user_data,
+ const gchar *webdata, size_t len, const gchar *error_message)
+{
+ struct yahoo_sms_carrier_cb_data *sms_cb_data = user_data;
+ PurpleConnection *gc = sms_cb_data->gc;
+ struct yahoo_data *yd = gc->proto_data;
+ char *mobile_no = NULL;
+ char *status = NULL;
+ char *carrier = NULL;
+ PurpleAccount *account = purple_connection_get_account(gc);
+ PurpleConversation *conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, sms_cb_data->who, account);
+
+ if (error_message != NULL) {
+ purple_conversation_write(conv, NULL, "Cant send SMS, Unable to obtain mobile carrier", PURPLE_MESSAGE_SYSTEM, time(NULL));
+
+ g_free(sms_cb_data->who);
+ g_free(sms_cb_data->what);
+ g_free(sms_cb_data);
+ return ;
+ }
+ else if (len > 0 && webdata && *webdata) {
+ xmlnode *validate_data_root = xmlnode_from_str(webdata, -1);
+ xmlnode *validate_data_child = xmlnode_get_child(validate_data_root, "mobile_no");
+ mobile_no = (char *)xmlnode_get_attrib(validate_data_child, "msisdn");
+
+ validate_data_root = xmlnode_copy(validate_data_child);
+ validate_data_child = xmlnode_get_child(validate_data_root, "status");
+ status = xmlnode_get_data(validate_data_child);
+
+ validate_data_child = xmlnode_get_child(validate_data_root, "carrier");
+ carrier = xmlnode_get_data(validate_data_child);
+
+ purple_debug_info("yahoo","SMS validate data: Mobile:%s, Status:%s, Carrier:%s\n", mobile_no, status, carrier);
+
+ if( strcmp(status, "Valid") == 0) {
+ g_hash_table_insert(yd->sms_carrier, g_strdup_printf("+%s", mobile_no), g_strdup(carrier));
+ yahoo_send_im(sms_cb_data->gc, sms_cb_data->who, sms_cb_data->what, PURPLE_MESSAGE_SEND);
+ }
+ else {
+ g_hash_table_insert(yd->sms_carrier, g_strdup_printf("+%s", mobile_no), g_strdup("Unknown"));
+ purple_conversation_write(conv, NULL, "Cant send SMS, Unknown mobile carrier", PURPLE_MESSAGE_SYSTEM, time(NULL));
+ }
+
+ xmlnode_free(validate_data_child);
+ xmlnode_free(validate_data_root);
+ g_free(sms_cb_data->who);
+ g_free(sms_cb_data->what);
+ g_free(sms_cb_data);
+ g_free(mobile_no);
+ g_free(status);
+ g_free(carrier);
+ }
+}
+
+static void yahoo_get_sms_carrier(PurpleConnection *gc, gpointer data)
+{
+ struct yahoo_data *yd = gc->proto_data;
+ PurpleUtilFetchUrlData *url_data;
+ struct yahoo_sms_carrier_cb_data *sms_cb_data;
+ char *validate_request_str = NULL;
+ char *request = NULL;
+ gboolean use_whole_url = FALSE;
+ xmlnode *validate_request_root = NULL;
+ xmlnode *validate_request_child = NULL;
+
+ if(!(sms_cb_data = data))
+ return;
+
+ validate_request_root = xmlnode_new("validate");
+ xmlnode_set_attrib(validate_request_root, "intl", "us");
+ xmlnode_set_attrib(validate_request_root, "version", YAHOO_CLIENT_VERSION);
+ xmlnode_set_attrib(validate_request_root, "qos", "0");
+
+ validate_request_child = xmlnode_new_child(validate_request_root, "mobile_no");
+ xmlnode_set_attrib(validate_request_child, "msisdn", sms_cb_data->who + 1);
+
+ validate_request_str = xmlnode_to_str(validate_request_root, NULL);
+
+ xmlnode_free(validate_request_child);
+ xmlnode_free(validate_request_root);
+
+ request = g_strdup_printf(
+ "POST /mobileno?intl=us&version=%s HTTP/1.1\r\n"
+ "Cookie: T=%s; path=/; domain=.yahoo.com; Y=%s; path=/; domain=.yahoo.com;\r\n"
+ "User-Agent: " YAHOO_CLIENT_USERAGENT "\r\n"
+ "Host: validate.msg.yahoo.com\r\n"
+ "Content-Length: %" G_GSIZE_FORMAT "\r\n"
+ "Cache-Control: no-cache\r\n\r\n%s",
+ YAHOO_CLIENT_VERSION, yd->cookie_t, yd->cookie_y, strlen(validate_request_str), validate_request_str);
+
+ /* use whole URL if using HTTP Proxy */
+ if ((gc->account->proxy_info) && (gc->account->proxy_info->type == PURPLE_PROXY_HTTP))
+ use_whole_url = TRUE;
+
+ url_data = purple_util_fetch_url_request_len_with_account(
+ purple_connection_get_account(gc), YAHOO_SMS_CARRIER_URL, use_whole_url,
+ YAHOO_CLIENT_USERAGENT, TRUE, request, FALSE, -1,
+ yahoo_get_sms_carrier_cb, data);
+
+ g_free(request);
+ g_free(validate_request_str);
+
+ if (!url_data) {
+ PurpleAccount *account = purple_connection_get_account(gc);
+ PurpleConversation *conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, sms_cb_data->who, account);
+ purple_conversation_write(conv, NULL, "Cant send SMS, Unable to obtain mobile carrier", PURPLE_MESSAGE_SYSTEM, time(NULL));
+ g_free(sms_cb_data->who);
+ g_free(sms_cb_data->what);
+ g_free(sms_cb_data);
+ }
+}
+
static int yahoo_send_im(PurpleConnection *gc, const char *who, const char *what, PurpleMessageFlags flags)
{
struct yahoo_data *yd = gc->proto_data;
- struct yahoo_packet *pkt = yahoo_packet_new(YAHOO_SERVICE_MESSAGE, YAHOO_STATUS_OFFLINE, 0);
+ struct yahoo_packet *pkt = NULL;
char *msg = yahoo_html_to_codes(what);
char *msg2;
gboolean utf8 = TRUE;
@@ -3323,9 +4153,10 @@ static int yahoo_send_im(PurpleConnection *gc, const char *who, const char *what
YahooFriend *f = NULL;
gsize lenb = 0;
glong lenc = 0;
-
+ struct yahoo_p2p_data *p2p_data;
+ gboolean msn = FALSE;
msg2 = yahoo_string_encode(gc, msg, &utf8);
-
+
if(msg2) {
lenb = strlen(msg2);
lenc = g_utf8_strlen(msg2, -1);
@@ -3341,9 +4172,65 @@ static int yahoo_send_im(PurpleConnection *gc, const char *who, const char *what
}
}
- yahoo_packet_hash(pkt, "ss", 1, purple_connection_get_display_name(gc), 5, who);
- if ((f = yahoo_friend_find(gc, who)) && f->protocol)
- yahoo_packet_hash_int(pkt, 241, f->protocol);
+ msn = g_str_has_prefix(who, "msn/") || g_str_has_prefix(who, "MSN/");
+
+ if( strncmp(who, "+", 1) == 0 ) {
+ /* we have an sms to be sent */
+ gchar *carrier = NULL;
+ const char *alias = NULL;
+ PurpleAccount *account = purple_connection_get_account(gc);
+ PurpleConversation *conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, who, account);
+
+ carrier = g_hash_table_lookup(yd->sms_carrier, who);
+ if (!carrier) {
+ struct yahoo_sms_carrier_cb_data *sms_cb_data;
+ sms_cb_data = g_malloc(sizeof(struct yahoo_sms_carrier_cb_data));
+ sms_cb_data->gc = gc;
+ sms_cb_data->who = g_strdup(who);
+ sms_cb_data->what = g_strdup(what);
+
+ purple_conversation_write(conv, NULL, "Getting mobile carrier to send the sms", PURPLE_MESSAGE_SYSTEM, time(NULL));
+
+ yahoo_get_sms_carrier(gc, sms_cb_data);
+
+ g_free(msg);
+ g_free(msg2);
+ return ret;
+ }
+ else if( strcmp(carrier,"Unknown") == 0 ) {
+ purple_conversation_write(conv, NULL, "Cant send SMS, Unknown mobile carrier", PURPLE_MESSAGE_SYSTEM, time(NULL));
+
+ g_free(msg);
+ g_free(msg2);
+ return -1;
+ }
+
+ alias = purple_account_get_alias(account);
+ pkt = yahoo_packet_new(YAHOO_SERVICE_SMS_MSG, YAHOO_STATUS_AVAILABLE, 0);
+ yahoo_packet_hash(pkt, "sssss",
+ 1, purple_connection_get_display_name(gc),
+ 69, alias,
+ 5, who + 1,
+ 68, carrier,
+ 14, msg2);
+ yahoo_packet_send_and_free(pkt, yd);
+
+ g_free(msg);
+ g_free(msg2);
+
+ return ret;
+ }
+
+ pkt = yahoo_packet_new(YAHOO_SERVICE_MESSAGE, YAHOO_STATUS_OFFLINE, 0);
+ if(msn) {
+ yahoo_packet_hash(pkt, "ss", 1, purple_connection_get_display_name(gc), 5, who+4);
+ yahoo_packet_hash_int(pkt, 241, 2);
+ }
+ else {
+ yahoo_packet_hash(pkt, "ss", 1, purple_connection_get_display_name(gc), 5, who);
+ if ((f = yahoo_friend_find(gc, who)) && f->protocol)
+ yahoo_packet_hash_int(pkt, 241, f->protocol);
+ }
if (utf8)
yahoo_packet_hash_str(pkt, 97, "1");
@@ -3382,8 +4269,18 @@ static int yahoo_send_im(PurpleConnection *gc, const char *who, const char *what
yahoo_packet_hash_str(pkt, 206, "2");
/* We may need to not send any packets over 2000 bytes, but I'm not sure yet. */
- if ((YAHOO_PACKET_HDRLEN + yahoo_packet_length(pkt)) <= 2000)
- yahoo_packet_send(pkt, yd);
+ if ((YAHOO_PACKET_HDRLEN + yahoo_packet_length(pkt)) <= 2000) {
+ /* if p2p link exists, send through it. To-do: key 15, time value to be sent in case of p2p */
+ if( (p2p_data = g_hash_table_lookup(yd->peers, who)) && !msn ) {
+ yahoo_packet_hash_int(pkt, 11, p2p_data->session_id);
+ yahoo_p2p_write_pkt(p2p_data->source, pkt);
+ }
+ else {
+ yahoo_packet_send(pkt, yd);
+ if(!msn)
+ yahoo_send_p2p_pkt(gc, who, 0); /* send p2p packet, with val_13=0 */
+ }
+ }
else
ret = -E2BIG;
@@ -3398,12 +4295,35 @@ static int yahoo_send_im(PurpleConnection *gc, const char *who, const char *what
static unsigned int yahoo_send_typing(PurpleConnection *gc, const char *who, PurpleTypingState state)
{
struct yahoo_data *yd = gc->proto_data;
- struct yahoo_packet *pkt = yahoo_packet_new(YAHOO_SERVICE_NOTIFY, YAHOO_STATUS_TYPING, 0);
- yahoo_packet_hash(pkt, "ssssss", 49, "TYPING", 1, purple_connection_get_display_name(gc),
- 14, " ", 13, state == PURPLE_TYPING ? "1" : "0",
- 5, who, 1002, "1");
+ struct yahoo_p2p_data *p2p_data;
+ gboolean msn = (g_str_has_prefix(who, "msn/") || g_str_has_prefix(who, "MSN/"));
+ struct yahoo_packet *pkt = NULL;
- yahoo_packet_send_and_free(pkt, yd);
+ /* Don't do anything if sms is being typed */
+ if( strncmp(who, "+", 1) == 0 )
+ return 0;
+
+ pkt = yahoo_packet_new(YAHOO_SERVICE_NOTIFY, YAHOO_STATUS_TYPING, 0);
+
+ /* check to see if p2p link exists, send through it */
+ if( (p2p_data = g_hash_table_lookup(yd->peers, who)) && !msn ) {
+ yahoo_packet_hash(pkt, "sssssis", 49, "TYPING", 1, purple_connection_get_display_name(gc),
+ 14, " ", 13, state == PURPLE_TYPING ? "1" : "0",
+ 5, who, 11, p2p_data->session_id, 1002, "1"); /* To-do: key 15 to be sent in case of p2p */
+ yahoo_p2p_write_pkt(p2p_data->source, pkt);
+ yahoo_packet_free(pkt);
+ }
+ else { /* send through yahoo server */
+ if(msn)
+ yahoo_packet_hash(pkt, "sssssss", 49, "TYPING", 1, purple_connection_get_display_name(gc),
+ 14, " ", 13, state == PURPLE_TYPING ? "1" : "0",
+ 5, who+4, 1002, "1", 241, "2");
+ else
+ yahoo_packet_hash(pkt, "ssssss", 49, "TYPING", 1, purple_connection_get_display_name(gc),
+ 14, " ", 13, state == PURPLE_TYPING ? "1" : "0",
+ 5, who+4, 1002, "1");
+ yahoo_packet_send_and_free(pkt, yd);
+ }
return 0;
}
@@ -3638,38 +4558,59 @@ static void yahoo_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGrou
const char *group = NULL;
char *group2;
YahooFriend *f;
+ const char *bname;
+ gboolean msn = FALSE;
if (!yd->logged_in)
return;
- if (!purple_privacy_check(purple_connection_get_account(gc),
- purple_buddy_get_name(buddy)))
+ bname = purple_buddy_get_name(buddy);
+ if (!purple_privacy_check(purple_connection_get_account(gc), bname))
return;
- f = yahoo_friend_find(gc, purple_buddy_get_name(buddy));
+ f = yahoo_friend_find(gc, bname);
+ msn = g_str_has_prefix(bname, "msn/") || g_str_has_prefix(bname, "MSN/");
g = purple_buddy_get_group(buddy);
if (g)
- group = g->name;
+ group = purple_group_get_name(g);
else
group = "Buddies";
group2 = yahoo_string_encode(gc, group, NULL);
pkt = yahoo_packet_new(YAHOO_SERVICE_ADDBUDDY, YAHOO_STATUS_AVAILABLE, 0);
- yahoo_packet_hash(pkt, "ssssssssss",
- 14, "",
- 65, group2,
- 97, "1",
- 1, purple_connection_get_display_name(gc),
- 302, "319",
- 300, "319",
- 7, buddy->name,
- 334, "0",
- 301, "319",
- 303, "319"
- );
- if (f && f->protocol)
+ if(msn) {
+ yahoo_packet_hash(pkt, "sssssssssss",
+ 14, "",
+ 65, group2,
+ 97, "1",
+ 1, purple_connection_get_display_name(gc),
+ 302, "319",
+ 300, "319",
+ 7, bname + 4,
+ 241, "2",
+ 334, "0",
+ 301, "319",
+ 303, "319"
+ );
+ }
+ else {
+ yahoo_packet_hash(pkt, "ssssssssss",
+ 14, "",
+ 65, group2,
+ 97, "1",
+ 1, purple_connection_get_display_name(gc),
+ 302, "319",
+ 300, "319",
+ 7, bname,
+ 334, "0",
+ 301, "319",
+ 303, "319"
+ );
+ }
+ if (f && f->protocol && !msn)
yahoo_packet_hash_int(pkt, 241, f->protocol);
+
yahoo_packet_send_and_free(pkt, yd);
g_free(group2);
}
@@ -3677,19 +4618,27 @@ static void yahoo_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGrou
static void yahoo_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
{
struct yahoo_data *yd = (struct yahoo_data *)gc->proto_data;
- struct yahoo_packet *pkt;
+ struct yahoo_packet *pkt;
GSList *buddies, *l;
PurpleGroup *g;
gboolean remove = TRUE;
char *cg;
+ const char *bname, *gname;
+ YahooFriend *f = NULL;
+ gboolean msn = FALSE;
- if (!(yahoo_friend_find(gc, buddy->name)))
+ bname = purple_buddy_get_name(buddy);
+ f = yahoo_friend_find(gc, bname);
+ if (!f)
return;
- buddies = purple_find_buddies(purple_connection_get_account(gc), buddy->name);
+ gname = purple_group_get_name(group);
+ buddies = purple_find_buddies(purple_connection_get_account(gc), bname);
+ if(f->protocol == 2)
+ msn = TRUE;
for (l = buddies; l; l = l->next) {
g = purple_buddy_get_group(l->data);
- if (purple_utf8_strcasecmp(group->name, g->name)) {
+ if (purple_utf8_strcasecmp(gname, purple_group_get_name(g))) {
remove = FALSE;
break;
}
@@ -3698,12 +4647,19 @@ static void yahoo_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleG
g_slist_free(buddies);
if (remove)
- g_hash_table_remove(yd->friends, buddy->name);
+ g_hash_table_remove(yd->friends, bname);
- cg = yahoo_string_encode(gc, group->name, NULL);
+ cg = yahoo_string_encode(gc, gname, NULL);
pkt = yahoo_packet_new(YAHOO_SERVICE_REMBUDDY, YAHOO_STATUS_AVAILABLE, 0);
- yahoo_packet_hash(pkt, "sss", 1, purple_connection_get_display_name(gc),
- 7, buddy->name, 65, cg);
+
+ if(msn)
+ yahoo_packet_hash(pkt, "sss", 1, purple_connection_get_display_name(gc),
+ 7, bname+4, 65, cg);
+ else
+ yahoo_packet_hash(pkt, "sss", 1, purple_connection_get_display_name(gc),
+ 7, bname, 65, cg);
+ if(f->protocol)
+ yahoo_packet_hash_int(pkt, 241, f->protocol);
yahoo_packet_send_and_free(pkt, yd);
g_free(cg);
}
@@ -3776,13 +4732,22 @@ static void yahoo_change_buddys_group(PurpleConnection *gc, const char *who,
struct yahoo_data *yd = gc->proto_data;
struct yahoo_packet *pkt;
char *gpn, *gpo;
+ YahooFriend *f = yahoo_friend_find(gc, who);
+ gboolean msn = FALSE;
+ const char *temp = NULL;
/* Step 0: If they aren't on the server list anyway,
* don't bother letting the server know.
*/
- if (!yahoo_friend_find(gc, who))
+ if (!f)
return;
+ if(f->protocol == 2) {
+ msn = TRUE;
+ temp = who+4;
+ } else
+ temp = who;
+
/* If old and new are the same, we would probably
* end up deleting the buddy, which would be bad.
* This might happen because of the charset conversation.
@@ -3796,8 +4761,13 @@ static void yahoo_change_buddys_group(PurpleConnection *gc, const char *who,
}
pkt = yahoo_packet_new(YAHOO_SERVICE_CHGRP_15, YAHOO_STATUS_AVAILABLE, 0);
- yahoo_packet_hash(pkt, "ssssssss", 1, purple_connection_get_display_name(gc),
- 302, "240", 300, "240", 7, who, 224, gpo, 264, gpn, 301,
+ if(f->protocol)
+ yahoo_packet_hash(pkt, "ssssissss", 1, purple_connection_get_display_name(gc),
+ 302, "240", 300, "240", 7, temp, 241, f->protocol, 224, gpo, 264, gpn, 301,
+ "240", 303, "240");
+ else
+ yahoo_packet_hash(pkt, "ssssssss", 1, purple_connection_get_display_name(gc),
+ 302, "240", 300, "240", 7, temp, 224, gpo, 264, gpn, 301,
"240", 303, "240");
yahoo_packet_send_and_free(pkt, yd);
@@ -3812,7 +4782,7 @@ static void yahoo_rename_group(PurpleConnection *gc, const char *old_name,
struct yahoo_packet *pkt;
char *gpn, *gpo;
- gpn = yahoo_string_encode(gc, group->name, NULL);
+ gpn = yahoo_string_encode(gc, purple_group_get_name(group), NULL);
gpo = yahoo_string_encode(gc, old_name, NULL);
if (!strcmp(gpn, gpo)) {
g_free(gpn);
@@ -3967,7 +4937,7 @@ static PurpleAccount *find_acct(const char *prpl, const char *acct_id)
}
/* This may not be the best way to do this, but we find the first key w/o a value
- * and assume it is the screenname */
+ * and assume it is the buddy name */
static void yahoo_find_uri_novalue_param(gpointer key, gpointer value, gpointer user_data)
{
char **retval = user_data;
@@ -4009,10 +4979,10 @@ static gboolean yahoo_uri_handler(const char *proto, const char *cmd, GHashTable
purple_conv_send_confirm(conv, message);
}
}
- /*else
+ /* else
**If pidgindialogs_im() was in the core, we could use it here.
* It is all purple_request_* based, but I'm not sure it really belongs in the core
- pidgindialogs_im();*/
+ pidgindialogs_im(); */
return TRUE;
}
@@ -4026,7 +4996,7 @@ static gboolean yahoo_uri_handler(const char *proto, const char *cmd, GHashTable
g_hash_table_insert(params, g_strdup("type"), g_strdup("Chat"));
serv_join_chat(purple_account_get_connection(acct), params);
}
- /*else
+ /* else
** Same as above (except that this would have to be re-written using purple_request_*)
pidgin_blist_joinchat_show(); */
@@ -4096,7 +5066,7 @@ static PurplePluginProtocolInfo prpl_info =
yahoo_add_buddy,
NULL, /* add_buddies */
yahoo_remove_buddy,
- NULL, /*remove_buddies */
+ NULL, /* remove_buddies */
NULL, /* add_permit */
yahoo_add_deny,
NULL, /* rem_permit */
@@ -4141,6 +5111,8 @@ static PurplePluginProtocolInfo prpl_info =
sizeof(PurplePluginProtocolInfo), /* struct_size */
yahoo_get_account_text_table, /* get_account_text_table */
+ NULL, /* initiate_media */
+ NULL /* can_do_media */
};
static PurplePluginInfo info =
diff --git a/libpurple/protocols/yahoo/yahoo.h b/libpurple/protocols/yahoo/yahoo.h
index aba6f15043..ace55bee92 100644
--- a/libpurple/protocols/yahoo/yahoo.h
+++ b/libpurple/protocols/yahoo/yahoo.h
@@ -30,10 +30,13 @@
#define YAHOO_PAGER_HOST "scsa.msg.yahoo.com"
#define YAHOO_PAGER_PORT 5050
+#define YAHOO_PAGER_PORT_P2P 5101
#define YAHOO_LOGIN_URL "https://login.yahoo.com/config/pwtoken_login?src=ymsgr&ts=&token=%s"
#define YAHOO_TOKEN_URL "https://login.yahoo.com/config/pwtoken_get?src=ymsgr&ts=&login=%s&passwd=%s&chal=%s"
+#define YAHOO_P2P_KEEPALIVE_SECS 300
+#define YAHOO_P2P_SERVER_TIMEOUT 10
#define YAHOO_PROFILE_URL "http://profiles.yahoo.com/"
-#define YAHOO_MAIL_URL "https://login.yahoo.com/config/login?.src=ym"
+#define YAHOO_MAIL_URL "http://rd.yahoo.com/messenger/client/?http://mail.yahoo.com/"
#define YAHOO_XFER_HOST "filetransfer.msg.yahoo.com"
#define YAHOO_XFER_PORT 80
#define YAHOO_XFER_RELAY_HOST "relay.msg.yahoo.com"
@@ -49,8 +52,8 @@
#define YAHOOJP_MAIL_URL "http://mail.yahoo.co.jp/"
#define YAHOOJP_XFER_HOST "filetransfer.msg.yahoo.co.jp"
#define YAHOOJP_WEBCAM_HOST "wc.yahoo.co.jp"
-/*not sure, must test:*/
-#define YAHOOJP_XFER_RELAY_HOST "relay.msg.yahoo.co.jp"
+/* not sure, must test: */
+#define YAHOOJP_XFER_RELAY_HOST "relay.msg.yahoo.co.jp"
#define YAHOOJP_XFER_RELAY_PORT 80
#define YAHOOJP_ROOMLIST_URL "http://insider.msg.yahoo.co.jp/ycontent/"
#define YAHOOJP_ROOMLIST_LOCALE "ja"
@@ -59,6 +62,8 @@
#define WEBMESSENGER_URL "http://login.yahoo.com/config/login?.src=pg"
+#define YAHOO_SMS_CARRIER_URL "http://lookup.msg.vip.mud.yahoo.com"
+
#define YAHOO_PICURL_SETTING "picture_url"
#define YAHOO_PICCKSUM_SETTING "picture_checksum"
#define YAHOO_PICEXPIRE_SETTING "picture_expire"
@@ -84,12 +89,21 @@
#define YAHOOJP_CLIENT_VERSION_ID "4194239"
#define YAHOOJP_CLIENT_VERSION "9.0.0.2152"
-
#define YAHOO_CLIENT_USERAGENT "Mozilla/4.0 (compatible; MSIE 5.5)"
/* Index into attention types list. */
#define YAHOO_BUZZ 0
+typedef enum {
+ YAHOO_PKT_TYPE_SERVER = 0,
+ YAHOO_PKT_TYPE_P2P
+} yahoo_pkt_type;
+
+typedef enum {
+ YAHOO_P2P_WE_ARE_CLIENT =0,
+ YAHOO_P2P_WE_ARE_SERVER
+} yahoo_p2p_connection_type;
+
enum yahoo_status {
YAHOO_STATUS_AVAILABLE = 0,
YAHOO_STATUS_BRB,
@@ -119,6 +133,17 @@ struct yahoo_buddy_icon_upload_data {
guint watcher;
};
+struct yahoo_p2p_data {
+ PurpleConnection *gc;
+ char *host_ip;
+ char *host_username;
+ int val_13;
+ guint input_event;
+ gint source;
+ int session_id;
+ yahoo_p2p_connection_type connection_type;
+};
+
struct _YchtConn;
struct yahoo_data {
@@ -174,9 +199,9 @@ struct yahoo_data {
* for when we lookup people profile or photo information.
*/
GSList *url_datas;
- GHashTable *xfer_peer_idstring_map;/*Hey, i dont know, but putting this HashTable next to friends gives a run time fault...*/
- GSList *cookies;/*contains all cookies, including _y and _t*/
-
+ GHashTable *xfer_peer_idstring_map;/* Hey, i dont know, but putting this HashTable next to friends gives a run time fault... */
+ GSList *cookies;/* contains all cookies, including _y and _t */
+
/**
* We may receive a list15 in multiple packets with no prior warning as to how many we'll be getting;
* the server expects us to keep track of the group for which it is sending us contact names.
@@ -184,6 +209,12 @@ struct yahoo_data {
char *current_list15_grp;
time_t last_ping;
time_t last_keepalive;
+ GHashTable *peers; /* information about p2p data */
+ int yahoo_p2p_timer;
+ int yahoo_local_p2p_server_fd;
+ int yahoo_p2p_server_watcher;
+ GHashTable *sms_carrier; /* sms carrier data */
+ guint yahoo_p2p_server_timeout_handle;
};
#define YAHOO_MAX_STATUS_MESSAGE_LENGTH (255)
@@ -271,9 +302,7 @@ gchar* yahoo_get_cookies(PurpleConnection *gc);
gboolean yahoo_send_attention(PurpleConnection *gc, const char *username, guint type);
GList *yahoo_attention_types(PurpleAccount *account);
-/* This is a hack for 2.5.7 to get the y16 login to work properly with http proxies */
-PurpleUtilFetchUrlData * purple_util_fetch_url_request_len_with_account(PurpleAccount *account,
- const char *url, gboolean full, const char *user_agent, gboolean http11,
- const char *request, gboolean include_headers, gssize max_len,
- PurpleUtilFetchUrlCallback callback, void *user_data);
+/* send p2p pkt containing our encoded ip, asking peer to connect to us */
+void yahoo_send_p2p_pkt(PurpleConnection *gc, const char *who, int val_13);
+
#endif /* _YAHOO_H_ */
diff --git a/libpurple/protocols/yahoo/yahoo_aliases.h b/libpurple/protocols/yahoo/yahoo_aliases.h
index 049a23345f..2b1b375416 100644
--- a/libpurple/protocols/yahoo/yahoo_aliases.h
+++ b/libpurple/protocols/yahoo/yahoo_aliases.h
@@ -1,38 +1,38 @@
-/*
- * purple
- *
- * Purple is the legal property of its developers, whose names are too numerous
- * to list here. Please refer to the COPYRIGHT file distributed with this
- * source distribution.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
- *
- */
-
-
-#include "internal.h"
-
-#include "account.h"
-#include "accountopt.h"
-#include "blist.h"
-#include "debug.h"
-#include "util.h"
-#include "version.h"
-#include "yahoo.h"
-#include "yahoo_packet.h"
-
-void yahoo_update_alias(PurpleConnection *gc, const char *who, const char *alias);
-void yahoo_fetch_aliases(PurpleConnection *gc);
-
+/*
+ * purple
+ *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ *
+ */
+
+
+#include "internal.h"
+
+#include "account.h"
+#include "accountopt.h"
+#include "blist.h"
+#include "debug.h"
+#include "util.h"
+#include "version.h"
+#include "yahoo.h"
+#include "yahoo_packet.h"
+
+void yahoo_update_alias(PurpleConnection *gc, const char *who, const char *alias);
+void yahoo_fetch_aliases(PurpleConnection *gc);
+
diff --git a/libpurple/protocols/yahoo/yahoo_filexfer.c b/libpurple/protocols/yahoo/yahoo_filexfer.c
index 03af732d3e..deb137c00a 100644
--- a/libpurple/protocols/yahoo/yahoo_filexfer.c
+++ b/libpurple/protocols/yahoo/yahoo_filexfer.c
@@ -26,6 +26,7 @@
#include "prpl.h"
#include "util.h"
#include "debug.h"
+#include "network.h"
#include "notify.h"
#include "proxy.h"
#include "ft.h"
@@ -50,7 +51,7 @@ struct yahoo_xfer_data {
guint rxlen;
gchar *xfer_peer_idstring;
gchar *xfer_idstring_for_relay;
- int version; /*0 for old, 15 for Y7(YMSG 15)*/
+ int version; /* 0 for old, 15 for Y7(YMSG 15) */
int info_val_249;
enum {
@@ -58,14 +59,22 @@ struct yahoo_xfer_data {
HEAD_REQUESTED,
HEAD_REPLY_RECEIVED,
TRANSFER_PHASE,
- ACCEPTED
+ ACCEPTED,
+ P2P_HEAD_REQUESTED,
+ P2P_HEAD_REPLIED,
+ P2P_GET_REQUESTED
} status_15;
/* contains all filenames, in case of multiple transfers, with the first
* one in the list being the current file's name (ymsg15) */
GSList *filename_list;
- GSList *size_list; /*corresponds to filename_list, with size as **STRING** */
+ GSList *size_list; /* corresponds to filename_list, with size as **STRING** */
gboolean firstoflist;
+ gchar *xfer_url; /* url of the file, used when we are p2p server */
+ int yahoo_local_p2p_ft_server_fd;
+ int yahoo_local_p2p_ft_server_port;
+ int yahoo_p2p_ft_server_watcher;
+ int input_event;
};
static void yahoo_xfer_data_free(struct yahoo_xfer_data *xd)
@@ -78,14 +87,14 @@ static void yahoo_xfer_data_free(struct yahoo_xfer_data *xd)
gc = xd->gc;
yd = gc->proto_data;
- /*remove entry from map*/
+ /* remove entry from map */
if(xd->xfer_peer_idstring) {
xfer = g_hash_table_lookup(yd->xfer_peer_idstring_map, xd->xfer_peer_idstring);
if(xfer)
g_hash_table_remove(yd->xfer_peer_idstring_map, xd->xfer_peer_idstring);
}
- /*empty file & filesize list*/
+ /* empty file & filesize list */
for (l = xd->filename_list; l; l = l->next) {
g_free(l->data);
l->data=NULL;
@@ -311,7 +320,7 @@ static void yahoo_xfer_init(PurpleXfer *xfer)
if (purple_xfer_get_type(xfer) == PURPLE_XFER_SEND) {
if (yd->jp) {
- if (purple_proxy_connect(NULL, account, purple_account_get_string(account, "xferjp_host", YAHOOJP_XFER_HOST),
+ if (purple_proxy_connect(gc, account, purple_account_get_string(account, "xferjp_host", YAHOOJP_XFER_HOST),
purple_account_get_int(account, "xfer_port", YAHOO_XFER_PORT),
yahoo_sendfile_connected, xfer) == NULL)
{
@@ -320,7 +329,7 @@ static void yahoo_xfer_init(PurpleXfer *xfer)
purple_xfer_cancel_remote(xfer);
}
} else {
- if (purple_proxy_connect(NULL, account, purple_account_get_string(account, "xfer_host", YAHOO_XFER_HOST),
+ if (purple_proxy_connect(gc, account, purple_account_get_string(account, "xfer_host", YAHOO_XFER_HOST),
purple_account_get_int(account, "xfer_port", YAHOO_XFER_PORT),
yahoo_sendfile_connected, xfer) == NULL)
{
@@ -331,7 +340,7 @@ static void yahoo_xfer_init(PurpleXfer *xfer)
}
} else {
xfer->fd = -1;
- if (purple_proxy_connect(NULL, account, xfer_data->host, xfer_data->port,
+ if (purple_proxy_connect(gc, account, xfer_data->host, xfer_data->port,
yahoo_receivefile_connected, xfer) == NULL) {
purple_notify_error(gc, NULL, _("File Transfer Failed"),
_("Unable to establish file descriptor."));
@@ -371,12 +380,12 @@ static void yahoo_xfer_init_15(PurpleXfer *xfer)
28, xfer->size,
301, 268,
303, 268);
- g_free(filename);
+ g_free(filename);
} else {
if(xfer_data->firstoflist == TRUE) {
pkt = yahoo_packet_new(YAHOO_SERVICE_FILETRANS_15,
YAHOO_STATUS_AVAILABLE, yd->session_id);
-
+
yahoo_packet_hash(pkt, "sssi",
1, purple_normalize(account, purple_account_get_username(account)),
5, xfer->who,
@@ -385,7 +394,7 @@ static void yahoo_xfer_init_15(PurpleXfer *xfer)
} else {
pkt = yahoo_packet_new(YAHOO_SERVICE_FILETRANS_ACC_15,
YAHOO_STATUS_AVAILABLE, yd->session_id);
-
+
yahoo_packet_hash(pkt, "sssi",
1, purple_normalize(account, purple_account_get_username(account)),
5, xfer->who,
@@ -600,6 +609,26 @@ static void yahoo_xfer_cancel_recv(PurpleXfer *xfer)
xfer->data = NULL;
}
+/* Send HTTP OK after receiving file */
+static void yahoo_p2p_ft_server_send_OK(PurpleXfer *xfer)
+{
+ char *tx = NULL;
+ int written;
+
+ tx = g_strdup_printf("HTTP/1.1 200 OK\r\nContent-Length: 0\r\nContent-Type: application/octet-stream\r\nConnection: close\r\n\r\n");
+ written = write(xfer->fd, tx, strlen(tx));
+
+ if (written < 0 && errno == EAGAIN)
+ written = 0;
+ else if (written <= 0)
+ purple_debug_info("yahoo", "p2p filetransfer: Unable to write HTTP OK");
+
+ /* close connection */
+ close(xfer->fd);
+ xfer->fd = -1;
+ g_free(tx);
+}
+
static void yahoo_xfer_end(PurpleXfer *xfer_old)
{
struct yahoo_xfer_data *xfer_data;
@@ -611,14 +640,18 @@ static void yahoo_xfer_end(PurpleXfer *xfer_old)
if(xfer_data && xfer_data->version == 15
&& purple_xfer_get_type(xfer_old) == PURPLE_XFER_RECEIVE
&& xfer_data->filename_list) {
-
+
+ /* Send HTTP OK in case of p2p transfer, when we act as server */
+ if((xfer_data->xfer_url != NULL) && (xfer_old->fd >=0) && (purple_xfer_get_status(xfer_old) == PURPLE_XFER_STATUS_DONE))
+ yahoo_p2p_ft_server_send_OK(xfer_old);
+
/* removing top of filename & size list completely */
g_free( xfer_data->filename_list->data );
g_free( xfer_data->size_list->data );
-
+
xfer_data->filename_list->data = NULL;
xfer_data->size_list->data = NULL;
-
+
xfer_data->filename_list = g_slist_delete_link(xfer_data->filename_list, xfer_data->filename_list);
xfer_data->size_list = g_slist_delete_link(xfer_data->size_list, xfer_data->size_list);
@@ -664,16 +697,16 @@ static void yahoo_xfer_end(PurpleXfer *xfer_old)
/* Build the file transfer handle. */
xfer = purple_xfer_new(gc->account, PURPLE_XFER_RECEIVE, xfer_old->who);
-
+
if (xfer) {
/* Set the info about the incoming file. */
char *utf8_filename = yahoo_string_decode(gc, filename, TRUE);
purple_xfer_set_filename(xfer, utf8_filename);
g_free(utf8_filename);
purple_xfer_set_size(xfer, filesize);
-
+
xfer->data = xfer_data;
-
+
/* Setup our I/O op functions */
purple_xfer_set_init_fnc(xfer, yahoo_xfer_init_15);
purple_xfer_set_start_fnc(xfer, yahoo_xfer_start);
@@ -684,7 +717,7 @@ static void yahoo_xfer_end(PurpleXfer *xfer_old)
purple_xfer_set_write_fnc(xfer, yahoo_xfer_write);
purple_xfer_set_request_denied_fnc(xfer,yahoo_xfer_cancel_recv);
- /*update map to current xfer*/
+ /* update map to current xfer */
g_hash_table_remove(yd->xfer_peer_idstring_map, xfer_data->xfer_peer_idstring);
g_hash_table_insert(yd->xfer_peer_idstring_map, xfer_data->xfer_peer_idstring, xfer);
@@ -970,7 +1003,7 @@ static void yahoo_xfer_dns_connected_15(GSList *hosts, gpointer data, const char
purple_xfer_cancel_remote(xfer);
return;
}
-
+
/* Discard the length... */
hosts = g_slist_remove(hosts, hosts->data);
if(!hosts)
@@ -979,8 +1012,8 @@ static void yahoo_xfer_dns_connected_15(GSList *hosts, gpointer data, const char
purple_xfer_cancel_remote(xfer);
return;
}
-
- /*TODO:actually, u must try with addr no.1 , if its not working addr no.2 .....*/
+
+ /* TODO:actually, u must try with addr no.1 , if its not working addr no.2 ..... */
addr = hosts->data;
actaddr = addr->sin_addr.s_addr;
d = actaddr % 256;
@@ -996,12 +1029,7 @@ static void yahoo_xfer_dns_connected_15(GSList *hosts, gpointer data, const char
xd->port = YAHOO_XFER_RELAY_PORT;
url = g_strdup_printf("%ld.%ld.%ld.%ld", d, c, b, a);
- if (!purple_url_parse(url, &(xd->host), &(xd->port), &(xd->path), NULL, NULL)) {
- purple_xfer_cancel_remote(xfer);
- g_free(url);
- return;
- }
- g_free(url);
+
/* Free the address... */
g_free(hosts->data);
hosts = g_slist_remove(hosts, hosts->data);
@@ -1015,6 +1043,13 @@ static void yahoo_xfer_dns_connected_15(GSList *hosts, gpointer data, const char
hosts = g_slist_remove(hosts, hosts->data);
}
+ if (!purple_url_parse(url, &(xd->host), &(xd->port), &(xd->path), NULL, NULL)) {
+ purple_xfer_cancel_remote(xfer);
+ g_free(url);
+ return;
+ }
+ g_free(url);
+
pkt = yahoo_packet_new(YAHOO_SERVICE_FILETRANS_INFO_15, YAHOO_STATUS_AVAILABLE, yd->session_id);
filename = g_path_get_basename(purple_xfer_get_local_filename(xfer));
@@ -1030,30 +1065,24 @@ static void yahoo_xfer_dns_connected_15(GSList *hosts, gpointer data, const char
yahoo_packet_send_and_free(pkt, yd);
}
-
void yahoo_send_file(PurpleConnection *gc, const char *who, const char *file)
{
struct yahoo_xfer_data *xfer_data;
struct yahoo_data *yd = gc->proto_data;
- int ver = 0;
PurpleXfer *xfer = yahoo_new_xfer(gc, who);
- YahooFriend *yf = yahoo_friend_find(gc, who);
-
- /* To determine if we should use yahoo p15 for transfer. Check other user's
- * reported version, but if we're on Yahoo Japan, ignore it. */
- if(yf && yf->version_id > 500000 && !yd->jp)
- ver = 15;
g_return_if_fail(xfer != NULL);
- if(ver == 15) {
- xfer_data = xfer->data;
- xfer_data->status_15 = STARTED;
- purple_xfer_set_init_fnc(xfer, yahoo_xfer_init_15);
- xfer_data->version = 15;
- xfer_data->xfer_peer_idstring = yahoo_xfer_new_xfer_id();
- g_hash_table_insert(yd->xfer_peer_idstring_map, xfer_data->xfer_peer_idstring, xfer);
- }
+ /* if we don't have a p2p connection, try establishing it now */
+ if( !g_hash_table_lookup(yd->peers, who) )
+ yahoo_send_p2p_pkt(gc, who, 0);
+
+ xfer_data = xfer->data;
+ xfer_data->status_15 = STARTED;
+ purple_xfer_set_init_fnc(xfer, yahoo_xfer_init_15);
+ xfer_data->version = 15;
+ xfer_data->xfer_peer_idstring = yahoo_xfer_new_xfer_id();
+ g_hash_table_insert(yd->xfer_peer_idstring_map, xfer_data->xfer_peer_idstring, xfer);
/* Now perform the request */
if (file)
@@ -1062,7 +1091,9 @@ void yahoo_send_file(PurpleConnection *gc, const char *who, const char *file)
purple_xfer_request(xfer);
}
-static void yahoo_xfer_connected_15(gpointer data, gint source, const gchar *error_message);/*using this in recv_cb*/
+static void yahoo_p2p_ft_server_listen_cb(int listenfd, gpointer data); /* using this in yahoo_xfer_send_cb_15 */
+static void yahoo_xfer_connected_15(gpointer data, gint source, const gchar *error_message);/* using this in recv_cb */
+
static void yahoo_xfer_recv_cb_15(gpointer data, gint source, PurpleInputCondition condition)
{
PurpleXfer *xfer;
@@ -1082,14 +1113,15 @@ static void yahoo_xfer_recv_cb_15(gpointer data, gint source, PurpleInputConditi
while((did = read(source, buf, 998)) > 0)
{
xd->txbuflen += did;
- buf[did] = '\0';
+ buf[did] = '\0';
t = xd->txbuf;
xd->txbuf = g_strconcat(t,buf,NULL);
g_free(t);
}
g_free(buf);
- if (did < 0 && errno == EAGAIN) return;
+ if (did < 0 && errno == EAGAIN)
+ return;
else if (did < 0) {
purple_debug_error("yahoo", "Unable to write in order to start ft errno = %d\n", errno);
purple_xfer_cancel_remote(xfer);
@@ -1102,10 +1134,10 @@ static void yahoo_xfer_recv_cb_15(gpointer data, gint source, PurpleInputConditi
if(xd->status_15 == HEAD_REQUESTED) {
xd->status_15 = HEAD_REPLY_RECEIVED;
- close(source);/*Is this required?*/
+ close(source);/* Is this required? */
g_free(xd->txbuf);
xd->txbuf = NULL;
- if (purple_proxy_connect(NULL, account, xd->host, xd->port, yahoo_xfer_connected_15, xfer) == NULL)
+ if (purple_proxy_connect(gc, account, xd->host, xd->port, yahoo_xfer_connected_15, xfer) == NULL)
{
purple_notify_error(gc, NULL, _("File Transfer Failed"),
_("Unable to establish file descriptor."));
@@ -1151,7 +1183,7 @@ static void yahoo_xfer_send_cb_15(gpointer data, gint source, PurpleInputConditi
xd->txbuf_written = 0;
if(purple_xfer_get_type(xfer) == PURPLE_XFER_RECEIVE && xd->status_15 == STARTED)
- {
+ {
xd->status_15 = HEAD_REQUESTED;
xd->tx_handler = purple_input_add(source, PURPLE_INPUT_READ, yahoo_xfer_recv_cb_15, xfer);
yahoo_xfer_recv_cb_15(xfer, source, PURPLE_INPUT_READ);
@@ -1162,21 +1194,33 @@ static void yahoo_xfer_send_cb_15(gpointer data, gint source, PurpleInputConditi
xfer->fd = source;
purple_xfer_start(xfer, source, NULL, 0);
}
- else if(purple_xfer_get_type(xfer) == PURPLE_XFER_SEND && xd->status_15 == ACCEPTED)
+ else if(purple_xfer_get_type(xfer) == PURPLE_XFER_SEND && (xd->status_15 == ACCEPTED || xd->status_15 == P2P_GET_REQUESTED) )
{
xd->status_15 = TRANSFER_PHASE;
xfer->fd = source;
+ /* Remove Read event */
+ purple_input_remove(xd->input_event);
+ xd->input_event = 0;
purple_xfer_start(xfer, source, NULL, 0);
}
+ else if(purple_xfer_get_type(xfer) == PURPLE_XFER_SEND && xd->status_15 == P2P_HEAD_REQUESTED)
+ {
+ xd->status_15 = P2P_HEAD_REPLIED;
+ /* Remove Read event and close descriptor */
+ purple_input_remove(xd->input_event);
+ xd->input_event = 0;
+ close(source);
+ xfer->fd = -1;
+ /* start local server, listen for connections */
+ purple_network_listen(xd->yahoo_local_p2p_ft_server_port, SOCK_STREAM, yahoo_p2p_ft_server_listen_cb, xfer);
+ }
else
{
purple_debug_error("yahoo", "Unrecognized yahoo file transfer mode and stage (ymsg15):%d,%d\n", purple_xfer_get_type(xfer), xd->status_15);
return;
}
-
}
-
static void yahoo_xfer_connected_15(gpointer data, gint source, const gchar *error_message)
{
PurpleXfer *xfer;
@@ -1203,31 +1247,90 @@ static void yahoo_xfer_connected_15(gpointer data, gint source, const gchar *err
cookies = yahoo_get_cookies(xd->gc);
if(purple_xfer_get_type(xfer) == PURPLE_XFER_SEND && xd->status_15 == ACCEPTED)
{
- xd->txbuf = g_strdup_printf("POST /relay?token=%s&sender=%s&recver=%s HTTP/1.1\r\nCookie:%s\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 5.5)\r\nHost: %s\r\nContent-Length: %ld\r\nCache-Control: no-cache\r\n\r\n",
+ if(xd->info_val_249 == 2)
+ {
+ /* sending file via p2p, we are connected as client */
+ xd->txbuf = g_strdup_printf("POST /%s HTTP/1.1\r\n"
+ "User-Agent: " YAHOO_CLIENT_USERAGENT "\r\n"
+ "Host: %s\r\n"
+ "Content-Length: %ld\r\n"
+ "Cache-Control: no-cache\r\n\r\n",
+ xd->path,
+ xd->host,
+ (long int)xfer->size); /* to do, add Referer */
+ }
+ else
+ {
+ /* sending file via relaying */
+ xd->txbuf = g_strdup_printf("POST /relay?token=%s&sender=%s&recver=%s HTTP/1.1\r\n"
+ "Cookie:%s\r\n"
+ "User-Agent: " YAHOO_CLIENT_USERAGENT "\r\n"
+ "Host: %s\r\n"
+ "Content-Length: %ld\r\n"
+ "Cache-Control: no-cache\r\n\r\n",
purple_url_encode(xd->xfer_idstring_for_relay),
purple_normalize(account, purple_account_get_username(account)),
xfer->who,
cookies,
xd->host,
(long int)xfer->size);
+ }
}
else if(purple_xfer_get_type(xfer) == PURPLE_XFER_RECEIVE && xd->status_15 == STARTED)
- {
- xd->txbuf = g_strdup_printf("HEAD /relay?token=%s&sender=%s&recver=%s HTTP/1.1\r\nAccept:*/*\r\nCookie:%s\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 5.5)\r\nHost:%s\r\nContent-Length: 0\r\nCache-Control: no-cache\r\n\r\n",
+ {
+ if(xd->info_val_249 == 1)
+ {
+ /* receiving file via p2p, connected as client */
+ xd->txbuf = g_strdup_printf("HEAD /%s HTTP/1.1\r\n"
+ "Accept: */*\r\n"
+ "User-Agent: " YAHOO_CLIENT_USERAGENT "\r\n"
+ "Host: %s\r\n"
+ "Content-Length: 0\r\n"
+ "Cache-Control: no-cache\r\n\r\n",
+ xd->path,xd->host);
+ }
+ else
+ {
+ /* receiving file via relaying */
+ xd->txbuf = g_strdup_printf("HEAD /relay?token=%s&sender=%s&recver=%s HTTP/1.1\r\n"
+ "Accept: */*\r\n"
+ "Cookie: %s\r\n"
+ "User-Agent: " YAHOO_CLIENT_USERAGENT "\r\n"
+ "Host: %s\r\n"
+ "Content-Length: 0\r\n"
+ "Cache-Control: no-cache\r\n\r\n",
purple_url_encode(xd->xfer_idstring_for_relay),
purple_normalize(account, purple_account_get_username(account)),
xfer->who,
cookies,
xd->host);
+ }
}
else if(purple_xfer_get_type(xfer) == PURPLE_XFER_RECEIVE && xd->status_15 == HEAD_REPLY_RECEIVED)
{
- xd->txbuf = g_strdup_printf("GET /relay?token=%s&sender=%s&recver=%s HTTP/1.1\r\nCookie:%s\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 5.5)\r\nHost:%s\r\nConnection: Keep-Alive\r\n\r\n",
+ if(xd->info_val_249 == 1)
+ {
+ /* receiving file via p2p, connected as client */
+ xd->txbuf = g_strdup_printf("GET /%s HTTP/1.1\r\n"
+ "User-Agent: " YAHOO_CLIENT_USERAGENT "\r\n"
+ "Host: %s\r\n"
+ "Connection: Keep-Alive\r\n\r\n",
+ xd->path, xd->host);
+ }
+ else
+ {
+ /* receiving file via relaying */
+ xd->txbuf = g_strdup_printf("GET /relay?token=%s&sender=%s&recver=%s HTTP/1.1\r\n"
+ "Cookie: %s\r\n"
+ "User-Agent: " YAHOO_CLIENT_USERAGENT "\r\n"
+ "Host: %s\r\n"
+ "Connection: Keep-Alive\r\n\r\n",
purple_url_encode(xd->xfer_idstring_for_relay),
purple_normalize(account, purple_account_get_username(account)),
xfer->who,
cookies,
xd->host);
+ }
}
else
{
@@ -1248,6 +1351,231 @@ static void yahoo_xfer_connected_15(gpointer data, gint source, const gchar *err
}
}
+static void yahoo_p2p_ft_POST_cb(gpointer data, gint source, PurpleInputCondition cond)
+{
+ PurpleXfer *xfer;
+ struct yahoo_xfer_data *xd;
+
+ xfer = data;
+ if (!(xd = xfer->data)) {
+ purple_input_remove(xd->input_event);
+ purple_xfer_cancel_remote(xfer);
+ return;
+ }
+
+ purple_input_remove(xd->input_event);
+ xd->status_15 = TRANSFER_PHASE;
+ xfer->fd = source;
+ purple_xfer_start(xfer, source, NULL, 0);
+}
+
+static void yahoo_p2p_ft_HEAD_GET_cb(gpointer data, gint source, PurpleInputCondition cond)
+{
+ PurpleXfer *xfer;
+ struct yahoo_xfer_data *xd;
+ guchar buf[1024];
+ int len;
+ char *url_head;
+ char *url_get;
+ time_t unix_time;
+ char *time_str;
+
+ xfer = data;
+ if (!(xd = xfer->data)) {
+ purple_input_remove(xd->input_event);
+ purple_xfer_cancel_remote(xfer);
+ return;
+ }
+
+ len = read(source, buf, sizeof(buf));
+ if ((len < 0) && ((errno == EAGAIN) || (errno == EWOULDBLOCK)))
+ return ; /* No Worries*/
+ else if (len <= 0) {
+ purple_debug_warning("yahoo","p2p-ft: Error in connection, or host disconnected\n");
+ purple_input_remove(xd->input_event);
+ purple_xfer_cancel_remote(xfer);
+ return;
+ }
+
+ url_head = g_strdup_printf("HEAD %s", xd->xfer_url);
+ url_get = g_strdup_printf("GET %s", xd->xfer_url);
+
+ if( strncmp(url_head, (char *)buf, strlen(url_head)) == 0 )
+ xd->status_15 = P2P_HEAD_REQUESTED;
+ else if( strncmp(url_get, (char *)buf, strlen(url_get)) == 0 )
+ xd->status_15 = P2P_GET_REQUESTED;
+ else {
+ purple_debug_warning("yahoo","p2p-ft: Wrong HEAD/GET request from peer, disconnecting host\n");
+ purple_input_remove(xd->input_event);
+ purple_xfer_cancel_remote(xfer);
+ g_free(url_head);
+ return;
+ }
+
+ unix_time = time(NULL);
+ time_str = ctime(&unix_time);
+ strcpy(time_str + strlen(time_str) - 1, "\0");
+
+ if (xd->txbuflen == 0) {
+ xd->txbuf = g_strdup_printf("HTTP/1.0 200 OK\r\n"
+ "Date: %s GMT\r\n"
+ "Server: Y!/1.0\r\n"
+ "MIME-version: 1.0\r\n"
+ "Last-modified: %s GMT\r\n"
+ "Content-length: %" G_GSIZE_FORMAT "\r\n\r\n",
+ time_str, time_str, xfer->size);
+ xd->txbuflen = strlen(xd->txbuf);
+ xd->txbuf_written = 0;
+ }
+
+ if (!xd->tx_handler) {
+ xd->tx_handler = purple_input_add(source, PURPLE_INPUT_WRITE, yahoo_xfer_send_cb_15, xfer);
+ yahoo_xfer_send_cb_15(xfer, source, PURPLE_INPUT_WRITE);
+ }
+
+ g_free(url_head);
+ g_free(url_get);
+}
+
+static void yahoo_p2p_ft_server_send_connected_cb(gpointer data, gint source, PurpleInputCondition cond)
+{
+ int acceptfd;
+ PurpleXfer *xfer;
+ struct yahoo_xfer_data *xd;
+
+ xfer = data;
+ if (!(xd = xfer->data)) {
+ purple_xfer_cancel_remote(xfer);
+ return;
+ }
+
+ acceptfd = accept(source, NULL, 0);
+ if(acceptfd == -1 && (errno == EAGAIN || errno == EWOULDBLOCK))
+ return;
+ else if(acceptfd == -1) {
+ purple_debug_warning("yahoo","yahoo_p2p_server_send_connected_cb: accept: %s\n", g_strerror(errno));
+ purple_xfer_cancel_remote(xfer);
+ /* remove watcher and close p2p ft server */
+ purple_input_remove(xd->yahoo_p2p_ft_server_watcher);
+ close(xd->yahoo_local_p2p_ft_server_fd);
+ return;
+ }
+
+ /* remove watcher and close p2p ft server */
+ purple_input_remove(xd->yahoo_p2p_ft_server_watcher);
+ close(xd->yahoo_local_p2p_ft_server_fd);
+
+ /* Add an Input Read event to the file descriptor */
+ xfer->fd = acceptfd;
+ if(xfer->type == PURPLE_XFER_RECEIVE)
+ xd->input_event = purple_input_add(acceptfd, PURPLE_INPUT_READ, yahoo_p2p_ft_POST_cb, data);
+ else
+ xd->input_event = purple_input_add(acceptfd, PURPLE_INPUT_READ, yahoo_p2p_ft_HEAD_GET_cb, data);
+}
+
+static void yahoo_p2p_ft_server_listen_cb(int listenfd, gpointer data)
+{
+ PurpleXfer *xfer;
+ struct yahoo_xfer_data *xd;
+ struct yahoo_packet *pkt;
+ PurpleAccount *account;
+ struct yahoo_data *yd;
+ gchar *filename;
+ const char *local_ip;
+ gchar *url_to_send = NULL;
+ char *filename_without_spaces = NULL;
+
+ xfer = data;
+ if ( !( (xd = xfer->data) || (listenfd != -1) ) ) {
+ purple_debug_warning("yahoo","p2p: error starting server for p2p file transfer\n");
+ purple_xfer_cancel_remote(xfer);
+ return;
+ }
+
+ if( (xfer->type == PURPLE_XFER_RECEIVE) || (xd->status_15 != P2P_HEAD_REPLIED) ) {
+ yd = xd->gc->proto_data;
+ account = purple_connection_get_account(xd->gc);
+ local_ip = purple_network_get_my_ip(listenfd);
+ xd->yahoo_local_p2p_ft_server_port = purple_network_get_port_from_fd(listenfd);
+
+ filename = g_path_get_basename(purple_xfer_get_local_filename(xfer));
+ filename_without_spaces = g_strdup(filename);
+ purple_util_chrreplace(filename_without_spaces, ' ', '+');
+ xd->xfer_url = g_strdup_printf("/Messenger.%s.%d000%s?AppID=Messenger&UserID=%s&K=lc9lu2u89gz1llmplwksajkjx", xfer->who, (int)time(NULL), filename_without_spaces, xfer->who);
+ url_to_send = g_strdup_printf("http://%s:%d%s", local_ip, xd->yahoo_local_p2p_ft_server_port, xd->xfer_url);
+
+ if(xfer->type == PURPLE_XFER_RECEIVE) {
+ xd->info_val_249 = 2; /* 249=2: we are p2p server, and receiving file */
+ pkt = yahoo_packet_new(YAHOO_SERVICE_FILETRANS_ACC_15,
+ YAHOO_STATUS_AVAILABLE, yd->session_id);
+ yahoo_packet_hash(pkt, "ssssis",
+ 1, purple_normalize(account, purple_account_get_username(account)),
+ 5, xfer->who,
+ 265, xd->xfer_peer_idstring,
+ 27, xfer->filename,
+ 249, 2,
+ 250, url_to_send);
+ }
+ else {
+ xd->info_val_249 = 1; /* 249=1: we are p2p server, and sending file */
+ pkt = yahoo_packet_new(YAHOO_SERVICE_FILETRANS_INFO_15, YAHOO_STATUS_AVAILABLE, yd->session_id);
+ yahoo_packet_hash(pkt, "ssssis",
+ 1, purple_normalize(account, purple_account_get_username(account)),
+ 5, xfer->who,
+ 265, xd->xfer_peer_idstring,
+ 27, filename,
+ 249, 1,
+ 250, url_to_send);
+ }
+
+ yahoo_packet_send_and_free(pkt, yd);
+
+ g_free(filename);
+ g_free(url_to_send);
+ g_free(filename_without_spaces);
+ }
+
+ /* Add an Input Read event to the file descriptor */
+ xd->yahoo_local_p2p_ft_server_fd = listenfd;
+ xd->yahoo_p2p_ft_server_watcher = purple_input_add(listenfd, PURPLE_INPUT_READ, yahoo_p2p_ft_server_send_connected_cb, data);
+}
+
+/* send (p2p) file transfer information */
+static void yahoo_p2p_client_send_ft_info(PurpleConnection *gc, PurpleXfer *xfer)
+{
+ struct yahoo_xfer_data *xd;
+ struct yahoo_packet *pkt;
+ PurpleAccount *account;
+ struct yahoo_data *yd;
+ gchar *filename;
+ struct yahoo_p2p_data *p2p_data;
+
+ if (!(xd = xfer->data))
+ return;
+
+ account = purple_connection_get_account(gc);
+ yd = gc->proto_data;
+
+ p2p_data = g_hash_table_lookup(yd->peers, xfer->who);
+ if( p2p_data->connection_type == YAHOO_P2P_WE_ARE_SERVER )
+ if(purple_network_listen_range(0, 0, SOCK_STREAM, yahoo_p2p_ft_server_listen_cb, xfer))
+ return;
+
+ pkt = yahoo_packet_new(YAHOO_SERVICE_FILETRANS_INFO_15, YAHOO_STATUS_AVAILABLE, yd->session_id);
+ filename = g_path_get_basename(purple_xfer_get_local_filename(xfer));
+
+ yahoo_packet_hash(pkt, "ssssi",
+ 1, purple_normalize(account, purple_account_get_username(account)),
+ 5, xfer->who,
+ 265, xd->xfer_peer_idstring,
+ 27, filename,
+ 249, 2); /* 249=2: we are p2p client */
+ xd->info_val_249 = 2;
+ yahoo_packet_send_and_free(pkt, yd);
+
+ g_free(filename);
+}
+
void yahoo_process_filetrans_15(PurpleConnection *gc, struct yahoo_packet *pkt)
{
char *from = NULL;
@@ -1265,7 +1593,7 @@ void yahoo_process_filetrans_15(PurpleConnection *gc, struct yahoo_packet *pkt)
GSList *filename_list = NULL;
GSList *size_list = NULL;
int nooffiles = 0;
-
+
yd = gc->proto_data;
for (l = pkt->hash; l; l = l->next) {
@@ -1290,17 +1618,17 @@ void yahoo_process_filetrans_15(PurpleConnection *gc, struct yahoo_packet *pkt)
break;
case 222:
val_222 = atol(pair->value);
- /* 1=send, 2=cancel, 3=accept, 4=reject */
+ /* 1=send, 2=cancel, 3=accept, 4=reject */
break;
- /*check for p2p and imviron .... not sure it comes by this service packet. Since it was bundled with filexfer in old ymsg version, still keeping it.*/
+ /* check for p2p and imviron .... not sure it comes by this service packet. Since it was bundled with filexfer in old ymsg version, still keeping it. */
case 49:
service = pair->value;
break;
case 63:
imv = pair->value;
break;
- /*end check*/
+ /* end check */
}
}
@@ -1328,6 +1656,14 @@ void yahoo_process_filetrans_15(PurpleConnection *gc, struct yahoo_packet *pkt)
* so, purple dnsquery is used... but retries, trying with next ip
* address etc. is not implemented..TODO
*/
+
+ /* To send through p2p */
+ if( g_hash_table_lookup(yd->peers, from) ) {
+ /* send p2p file transfer information */
+ yahoo_p2p_client_send_ft_info(gc, xfer);
+ return;
+ }
+
if (yd->jp)
{
purple_dnsquery_a(YAHOOJP_XFER_RELAY_HOST, YAHOOJP_XFER_RELAY_PORT,
@@ -1341,7 +1677,7 @@ void yahoo_process_filetrans_15(PurpleConnection *gc, struct yahoo_packet *pkt)
return;
}
- /*processing for p2p and imviron .... not sure it comes by this service packet. Since it was bundled with filexfer in old ymsg version, still keeping it.*/
+ /* processing for p2p and imviron .... not sure it comes by this service packet. Since it was bundled with filexfer in old ymsg version, still keeping it. */
/*
* The remote user has changed their IMVironment. We
* record it for later use.
@@ -1350,14 +1686,14 @@ void yahoo_process_filetrans_15(PurpleConnection *gc, struct yahoo_packet *pkt)
g_hash_table_replace(yd->imvironments, g_strdup(from), g_strdup(imv));
return;
}
-
+
if (pkt->service == YAHOO_SERVICE_P2PFILEXFER) {
if (service && (strcmp("FILEXFER", service) != 0)) {
purple_debug_misc("yahoo", "unhandled service 0x%02x\n", pkt->service);
return;
}
}
- /*end processing*/
+ /* end processing */
if(!filename_list)
return;
@@ -1375,7 +1711,7 @@ void yahoo_process_filetrans_15(PurpleConnection *gc, struct yahoo_packet *pkt)
xfer_data->xfer_peer_idstring = g_strdup(xfer_peer_idstring);
xfer_data->filename_list = filename_list;
xfer_data->size_list = size_list;
-
+
/* Build the file transfer handle. */
xfer = purple_xfer_new(gc->account, PURPLE_XFER_RECEIVE, from);
xfer->message = NULL;
@@ -1404,7 +1740,7 @@ void yahoo_process_filetrans_15(PurpleConnection *gc, struct yahoo_packet *pkt)
g_hash_table_insert(yd->xfer_peer_idstring_map,
xfer_data->xfer_peer_idstring,
xfer);
-
+
if(nooffiles > 1) {
gchar* message;
message = g_strdup_printf(_("%s is trying to send you a group of %d files.\n"), xfer->who, nooffiles);
@@ -1432,6 +1768,7 @@ void yahoo_process_filetrans_info_15(PurpleConnection *gc, struct yahoo_packet *
GSList *l;
struct yahoo_packet *pkt_to_send;
PurpleAccount *account;
+ struct yahoo_p2p_data *p2p_data;
yd = gc->proto_data;
@@ -1455,13 +1792,8 @@ void yahoo_process_filetrans_info_15(PurpleConnection *gc, struct yahoo_packet *
val_66 = strtol(pair->value, NULL, 10);
break;
case 249:
- val_249 = strtol(pair->value, NULL, 10); /*
- * really pissed off with this- i hv seen 2 occurences of this
- * being 1(its normally 3) - and in those cases, the url
- * format and corresponding processing seems to be different
- * (i havent tested - couldnt reproduce a 1), although i
- * guess its easier.
- */
+ val_249 = strtol(pair->value, NULL, 10);
+ /* 249 has value 1 or 2 when doing p2p transfer and value 3 when relaying through yahoo server */
break;
case 250:
url = pair->value;
@@ -1489,35 +1821,48 @@ void yahoo_process_filetrans_info_15(PurpleConnection *gc, struct yahoo_packet *
xfer_data->info_val_249 = val_249;
xfer_data->xfer_idstring_for_relay = g_strdup(xfer_idstring_for_relay);
- if (!purple_url_parse(url, &(xfer_data->host), &(xfer_data->port), &(xfer_data->path), NULL, NULL)) {
- purple_xfer_cancel_remote(xfer);
- return;
- }
+ if(val_249 == 1 || val_249 == 3) {
+ if (!purple_url_parse(url, &(xfer_data->host), &(xfer_data->port), &(xfer_data->path), NULL, NULL)) {
+ purple_xfer_cancel_remote(xfer);
+ return;
+ }
- account = purple_connection_get_account(xfer_data->gc);
+ account = purple_connection_get_account(xfer_data->gc);
- pkt_to_send = yahoo_packet_new(YAHOO_SERVICE_FILETRANS_ACC_15,
- YAHOO_STATUS_AVAILABLE, yd->session_id);
+ pkt_to_send = yahoo_packet_new(YAHOO_SERVICE_FILETRANS_ACC_15,
+ YAHOO_STATUS_AVAILABLE, yd->session_id);
+ yahoo_packet_hash(pkt_to_send, "ssssisi",
+ 1, purple_normalize(account, purple_account_get_username(account)),
+ 5, xfer->who,
+ 265, xfer_data->xfer_peer_idstring,
+ 27, xfer->filename,
+ 249, xfer_data->info_val_249,
+ 251, xfer_data->xfer_idstring_for_relay,
+ 222, 3);
- yahoo_packet_hash(pkt_to_send, "ssssisi",
- 1, purple_normalize(account, purple_account_get_username(account)),
- 5, xfer->who,
- 265, xfer_data->xfer_peer_idstring,
- 27, xfer->filename,
- 249, xfer_data->info_val_249,
- 251, xfer_data->xfer_idstring_for_relay,
- 222, 3);
-
- yahoo_packet_send_and_free(pkt_to_send, yd);
- if (purple_proxy_connect(NULL, account, xfer_data->host, xfer_data->port,
- yahoo_xfer_connected_15, xfer) == NULL) {
- purple_notify_error(gc, NULL, _("File Transfer Failed"),
- _("Unable to establish file descriptor."));
- purple_xfer_cancel_remote(xfer);
- }
+ yahoo_packet_send_and_free(pkt_to_send, yd);
+ if (purple_proxy_connect(gc, account, xfer_data->host, xfer_data->port,
+ yahoo_xfer_connected_15, xfer) == NULL) {
+ purple_notify_error(gc, NULL, _("File Transfer Failed"),
+ _("Unable to establish file descriptor."));
+ purple_xfer_cancel_remote(xfer);
+ }
+ }
+ else if(val_249 == 2) {
+ p2p_data = g_hash_table_lookup(yd->peers, xfer->who);
+ if( !( p2p_data && (p2p_data->connection_type == YAHOO_P2P_WE_ARE_SERVER) ) ) {
+ purple_xfer_cancel_remote(xfer);
+ return;
+ }
+ if(!purple_network_listen_range(0, 0, SOCK_STREAM, yahoo_p2p_ft_server_listen_cb, xfer)) {
+ purple_xfer_cancel_remote(xfer);
+ return;
+ }
+ }
}
-/*TODO: Check filename etc. No probs till some hacker comes in the way*/
+
+/* TODO: Check filename etc. No probs till some hacker comes in the way */
void yahoo_process_filetrans_acc_15(PurpleConnection *gc, struct yahoo_packet *pkt)
{
gchar *xfer_peer_idstring = NULL;
@@ -1528,6 +1873,8 @@ void yahoo_process_filetrans_acc_15(PurpleConnection *gc, struct yahoo_packet *p
GSList *l;
PurpleAccount *account;
long val_66 = 0;
+ gchar *url = NULL;
+ int val_249 = 0;
yd = gc->proto_data;
for (l = pkt->hash; l; l = l->next) {
@@ -1542,24 +1889,40 @@ void yahoo_process_filetrans_acc_15(PurpleConnection *gc, struct yahoo_packet *p
break;
case 66:
val_66 = atol(pair->value);
+ break;
+ case 249:
+ val_249 = atol(pair->value);
+ break;
+ case 250:
+ url = pair->value; /* we get a p2p url here when sending file, connected as client */
+ break;
}
}
xfer = g_hash_table_lookup(yd->xfer_peer_idstring_map, xfer_peer_idstring);
if(!xfer) return;
- if(val_66 == -1 || !(xfer_idstring_for_relay))
+ if(val_66 == -1 || ( (!(xfer_idstring_for_relay)) && (val_249 != 2) ))
+ {
+ purple_xfer_cancel_remote(xfer);
+ return;
+ }
+
+ if( (val_249 == 2) && (!(url)) )
{
purple_xfer_cancel_remote(xfer);
return;
}
xfer_data = xfer->data;
+ if(url)
+ purple_url_parse(url, &(xfer_data->host), &(xfer_data->port), &(xfer_data->path), NULL, NULL);
+
xfer_data->xfer_idstring_for_relay = g_strdup(xfer_idstring_for_relay);
xfer_data->status_15 = ACCEPTED;
account = purple_connection_get_account(gc);
- if (purple_proxy_connect(NULL, account, xfer_data->host, xfer_data->port,
+ if (purple_proxy_connect(gc, account, xfer_data->host, xfer_data->port,
yahoo_xfer_connected_15, xfer) == NULL)
{
purple_notify_error(gc, NULL, _("File Transfer Failed"),_("Unable to connect"));
diff --git a/libpurple/protocols/yahoo/yahoo_friend.c b/libpurple/protocols/yahoo/yahoo_friend.c
index d0e348da52..00ad6f489a 100644
--- a/libpurple/protocols/yahoo/yahoo_friend.c
+++ b/libpurple/protocols/yahoo/yahoo_friend.c
@@ -147,24 +147,36 @@ void yahoo_process_presence(PurpleConnection *gc, struct yahoo_packet *pkt)
{
GSList *l = pkt->hash;
YahooFriend *f;
+ char *temp = NULL;
char *who = NULL;
int value = 0;
+ int protocol = 0;
+ gboolean msn = FALSE;
while (l) {
struct yahoo_pair *pair = l->data;
switch (pair->key) {
case 7:
- who = pair->value;
+ temp = pair->value;
break;
case 31:
value = strtol(pair->value, NULL, 10);
break;
+ case 241:
+ protocol = strtol(pair->value, NULL, 10);
+ msn = TRUE;
+ break;
}
l = l->next;
}
+ if(msn)
+ who = g_strconcat("msn/", temp, NULL);
+ else
+ who = g_strdup(temp);
+
if (value != 1 && value != 2) {
purple_debug_error("yahoo", "Received unknown value for presence key: %d\n", value);
return;
@@ -173,8 +185,10 @@ void yahoo_process_presence(PurpleConnection *gc, struct yahoo_packet *pkt)
g_return_if_fail(who != NULL);
f = yahoo_friend_find(gc, who);
- if (!f)
+ if (!f) {
+ g_free(who);
return;
+ }
if (pkt->service == YAHOO_SERVICE_PRESENCE_PERM) {
purple_debug_info("yahoo", "Setting permanent presence for %s to %d.\n", who, (value == 1));
@@ -194,6 +208,7 @@ void yahoo_process_presence(PurpleConnection *gc, struct yahoo_packet *pkt)
else
f->presence = YAHOO_PRESENCE_DEFAULT;
}
+ g_free(who);
}
void yahoo_friend_update_presence(PurpleConnection *gc, const char *name,
@@ -204,6 +219,7 @@ void yahoo_friend_update_presence(PurpleConnection *gc, const char *name,
YahooFriend *f;
const char *thirtyone, *thirteen;
int service = -1;
+ const char *temp = NULL;
if (!yd->logged_in)
return;
@@ -212,6 +228,11 @@ void yahoo_friend_update_presence(PurpleConnection *gc, const char *name,
if (!f)
return;
+ if(f->protocol == 2)
+ temp = name+4;
+ else
+ temp = name;
+
/* No need to change the value if it is already correct */
if (f->presence == presence) {
purple_debug_info("yahoo", "Not setting presence because there are no changes.\n");
@@ -236,12 +257,21 @@ void yahoo_friend_update_presence(PurpleConnection *gc, const char *name,
if (f->presence == YAHOO_PRESENCE_PERM_OFFLINE) {
pkt = yahoo_packet_new(YAHOO_SERVICE_PRESENCE_PERM,
YAHOO_STATUS_AVAILABLE, yd->session_id);
- yahoo_packet_hash(pkt, "ssssssss",
+ if(f->protocol)
+ yahoo_packet_hash(pkt, "ssssssiss",
+ 1, purple_connection_get_display_name(gc),
+ 31, "2", 13, "2",
+ 302, "319", 300, "319",
+ 7, temp, 241, f->protocol,
+ 301, "319", 303, "319");
+ else
+ yahoo_packet_hash(pkt, "ssssssss",
1, purple_connection_get_display_name(gc),
31, "2", 13, "2",
302, "319", 300, "319",
- 7, name,
+ 7, temp,
301, "319", 303, "319");
+
yahoo_packet_send_and_free(pkt, yd);
}
@@ -254,13 +284,31 @@ void yahoo_friend_update_presence(PurpleConnection *gc, const char *name,
pkt = yahoo_packet_new(service,
YAHOO_STATUS_AVAILABLE, yd->session_id);
- yahoo_packet_hash(pkt, "ssssssss",
+ if(f->protocol)
+ yahoo_packet_hash(pkt, "ssssssiss",
+ 1, purple_connection_get_display_name(gc),
+ 31, thirtyone, 13, thirteen,
+ 302, "319", 300, "319",
+ 7, temp, 241, f->protocol,
+ 301, "319", 303, "319");
+ else
+ yahoo_packet_hash(pkt, "ssssssss",
1, purple_connection_get_display_name(gc),
31, thirtyone, 13, thirteen,
302, "319", 300, "319",
- 7, name,
+ 7, temp,
301, "319", 303, "319");
yahoo_packet_send_and_free(pkt, yd);
}
}
+
+void yahoo_friend_set_p2p_status(YahooFriend *f, YahooP2PStatus p2p_status)
+{
+ f->p2p_status = p2p_status;
+}
+
+YahooP2PStatus yahoo_friend_get_p2p_status(YahooFriend *f)
+{
+ return f->p2p_status;
+}
diff --git a/libpurple/protocols/yahoo/yahoo_friend.h b/libpurple/protocols/yahoo/yahoo_friend.h
index 6aa103f682..883c691548 100644
--- a/libpurple/protocols/yahoo/yahoo_friend.h
+++ b/libpurple/protocols/yahoo/yahoo_friend.h
@@ -34,6 +34,13 @@ typedef enum {
YAHOO_PRESENCE_PERM_OFFLINE
} YahooPresenceVisibility;
+typedef enum {
+ YAHOO_P2PSTATUS_NOT_CONNECTED = 0,
+ YAHOO_P2PSTATUS_DO_NOT_CONNECT,
+ YAHOO_P2PSTATUS_WE_ARE_SERVER,
+ YAHOO_P2PSTATUS_WE_ARE_CLIENT
+} YahooP2PStatus;
+
/* these are called friends instead of buddies mainly so I can use variables
* named f and not confuse them with variables named b
*/
@@ -50,6 +57,9 @@ typedef struct _YahooFriend {
int protocol; /* 1=LCS, 2=MSN*/
long int version_id;
gchar *alias_id;
+ YahooP2PStatus p2p_status;
+ gboolean p2p_packet_sent; /* 0:not sent, 1=sent */
+ gint session_id; /* session id of friend */
} YahooFriend;
YahooFriend *yahoo_friend_find(PurpleConnection *gc, const char *name);
@@ -76,4 +86,7 @@ void yahoo_process_presence(PurpleConnection *gc, struct yahoo_packet *pkt);
void yahoo_friend_update_presence(PurpleConnection *gc, const char *name,
YahooPresenceVisibility presence);
+void yahoo_friend_set_p2p_status(YahooFriend *f, YahooP2PStatus p2p_status);
+YahooP2PStatus yahoo_friend_get_p2p_status(YahooFriend *f);
+
#endif /* _YAHOO_FRIEND_H_ */
diff --git a/libpurple/protocols/yahoo/yahoo_packet.c b/libpurple/protocols/yahoo/yahoo_packet.c
index c1226a4c44..5cf5a631b7 100644
--- a/libpurple/protocols/yahoo/yahoo_packet.c
+++ b/libpurple/protocols/yahoo/yahoo_packet.c
@@ -195,12 +195,14 @@ void yahoo_packet_read(struct yahoo_packet *pkt, const guchar *data, int len)
"Key: %d \tValue: %s\n", pair->key, esc);
g_free(esc);
}
-#endif
+#endif /* DEBUG */
} else {
g_free(pair);
}
pos += 2;
+ if (pos + 1 > len) break;
+
/* Skip over garbage we've noticed in the mail notifications */
if (data[0] == '9' && data[pos] == 0x01)
pos++;
@@ -280,7 +282,7 @@ void yahoo_packet_dump(guchar *data, int len)
}
purple_debug(PURPLE_DEBUG_MISC, NULL, "\n");
-#endif
+#endif /* YAHOO_DEBUG */
}
static void
@@ -327,7 +329,7 @@ size_t yahoo_packet_build(struct yahoo_packet *pkt, int pad, gboolean wm,
if (wm)
pos += yahoo_put16(data + pos, YAHOO_WEBMESSENGER_PROTO_VER);
else if (jp)
- pos += yahoo_put16(data + pos, YAHOO_PROTO_VER_JAPAN);
+ pos += yahoo_put16(data + pos, YAHOO_PROTO_VER_JAPAN);
else
pos += yahoo_put16(data + pos, YAHOO_PROTO_VER);
pos += yahoo_put16(data + pos, 0x0000);
diff --git a/libpurple/protocols/yahoo/yahoo_packet.h b/libpurple/protocols/yahoo/yahoo_packet.h
index d73ada6f7a..230d251da8 100644
--- a/libpurple/protocols/yahoo/yahoo_packet.h
+++ b/libpurple/protocols/yahoo/yahoo_packet.h
@@ -98,16 +98,19 @@ enum yahoo_service { /* these are easier to see in hex */
YAHOO_SERVICE_AVATAR_UPDATE = 0xc7,
YAHOO_SERVICE_VERIFY_ID_EXISTS = 0xc8,
YAHOO_SERVICE_AUDIBLE = 0xd0,
+ /* YAHOO_SERVICE_CHAT_SESSION = 0xd4,?? Reports start of chat session, gets an id from server */
YAHOO_SERVICE_AUTH_REQ_15 = 0xd6,
+ YAHOO_SERVICE_FILETRANS_15 = 0xdc,
+ YAHOO_SERVICE_FILETRANS_INFO_15 = 0xdd,
+ YAHOO_SERVICE_FILETRANS_ACC_15 = 0xde,
+ /* photo sharing services ?? - 0xd2, 0xd7, 0xd8, 0xda */
YAHOO_SERVICE_CHGRP_15 = 0xe7,
YAHOO_SERVICE_STATUS_15 = 0xf0,
YAHOO_SERVICE_LIST_15 = 0xf1,
YAHOO_SERVICE_MESSAGE_ACK = 0xfb,
- YAHOO_SERVICE_FILETRANS_15 = 0xdc,
- YAHOO_SERVICE_FILETRANS_INFO_15 = 0xdd,
- YAHOO_SERVICE_FILETRANS_ACC_15 = 0xde,
YAHOO_SERVICE_WEBLOGIN = 0x0226,
YAHOO_SERVICE_SMS_MSG = 0x02ea
+ /* YAHOO_SERVICE_DISCONNECT = 0x07d1 Server forces us to disconnect. Is sent with TCP FIN flag set */
};
struct yahoo_pair {
diff --git a/libpurple/protocols/yahoo/yahoo_picture.c b/libpurple/protocols/yahoo/yahoo_picture.c
index bf2f72936d..3e1a358a36 100644
--- a/libpurple/protocols/yahoo/yahoo_picture.c
+++ b/libpurple/protocols/yahoo/yahoo_picture.c
@@ -126,7 +126,7 @@ void yahoo_process_picture(PurpleConnection *gc, struct yahoo_packet *pkt)
gboolean use_whole_url = yahoo_account_use_http_proxy(gc);
/* FIXME: Cleanup this strtol() stuff if possible. */
- if (b && (locksum = purple_buddy_icons_get_checksum_for_user(b)) != NULL &&
+ if (b && (locksum = purple_buddy_icons_get_checksum_for_user(b)) != NULL &&
(checksum == strtol(locksum, NULL, 10)))
return;
@@ -506,7 +506,7 @@ static void yahoo_buddy_icon_upload_connected(gpointer data, gint source, const
"Content-Length: %" G_GSIZE_FORMAT "\r\n"
"Cache-Control: no-cache\r\n\r\n",
use_whole_url ? "http://" : "", use_whole_url ? tmp : "",
- yd->cookie_t, yd->cookie_y,
+ yd->cookie_t, yd->cookie_y,
tmp,
pkt_buf_len + 4 + d->str->len);
g_free(tmp);
@@ -570,10 +570,10 @@ static int yahoo_buddy_icon_calculate_checksum(const guchar *data, gsize len)
checksum &= ~g;
}
- purple_debug_misc("yahoo", "Calculated buddy icon checksum: %d", checksum);
+ purple_debug_misc("yahoo", "Calculated buddy icon checksum: %d\n", checksum);
return checksum;
-}
+}
void yahoo_set_buddy_icon(PurpleConnection *gc, PurpleStoredImage *img)
{
diff --git a/libpurple/protocols/yahoo/yahoo_profile.c b/libpurple/protocols/yahoo/yahoo_profile.c
index 5a3ac178f3..f04f92de15 100644
--- a/libpurple/protocols/yahoo/yahoo_profile.c
+++ b/libpurple/protocols/yahoo/yahoo_profile.c
@@ -29,7 +29,7 @@
#include "util.h"
#if PHOTO_SUPPORT
#include "imgstore.h"
-#endif
+#endif /* PHOTO_SUPPORT */
#include "yahoo.h"
#include "yahoo_friend.h"
@@ -40,11 +40,11 @@ typedef struct {
} YahooGetInfoData;
typedef enum profile_lang_id {
- XX, DA, DE, EL,
- EN, EN_GB,
+ XX, DA, DE, EL,
+ EN, EN_GB,
ES_AR, ES_ES, ES_MX, ES_US,
- FR_CA, FR_FR,
- IT, JA, KO, NO, PT, SV,
+ FR_CA, FR_FR,
+ IT, JA, KO, NO, PT, SV,
ZH_CN, ZH_HK, ZH_TW, ZH_US, PT_BR
} profile_lang_id_t;
@@ -699,9 +699,10 @@ static void yahoo_extract_user_info_text(PurpleNotifyUserInfo *user_info, YahooG
info_data->name);
if (b) {
- if(b->alias && b->alias[0]) {
- char *aliastext = g_markup_escape_text(b->alias, -1);
- purple_notify_user_info_add_pair(user_info, _("Alias"), aliastext);
+ const char *balias = purple_buddy_get_local_buddy_alias(b);
+ if(balias && balias[0]) {
+ char *aliastext = g_markup_escape_text(balias, -1);
+ purple_notify_user_info_add_pair(user_info, _("Alias"), aliastext);
g_free(aliastext);
}
#if 0
@@ -715,7 +716,7 @@ static void yahoo_extract_user_info_text(PurpleNotifyUserInfo *user_info, YahooG
/* Add the normal tooltip pairs */
yahoo_tooltip_text(b, user_info, TRUE);
- if ((f = yahoo_friend_find(info_data->gc, b->name))) {
+ if ((f = yahoo_friend_find(info_data->gc, purple_buddy_get_name(b)))) {
const char *ip;
if ((ip = yahoo_friend_get_ip(f)))
purple_notify_user_info_add_pair(user_info, _("IP Address"), ip);
@@ -776,7 +777,7 @@ static void yahoo_got_info(PurpleUtilFetchUrlData *url_data, gpointer user_data,
char *stripped;
int stripped_len;
char *last_updated_utf8_string = NULL;
-#endif
+#endif /* !PHOTO_SUPPORT */
const char *last_updated_string = NULL;
char *url_buffer;
GString *s;
@@ -898,7 +899,7 @@ static void yahoo_got_info(PurpleUtilFetchUrlData *url_data, gpointer user_data,
#if PHOTO_SUPPORT
photo_url_text = yahoo_get_photo_url(url_text, info_data->name);
-#endif
+#endif /* PHOTO_SUPPORT */
url_buffer = g_strdup(url_text);
@@ -1047,7 +1048,7 @@ yahoo_got_photo(PurpleUtilFetchUrlData *url_data, gpointer data,
purple_debug_info("yahoo", "%s is %" G_GSIZE_FORMAT
" bytes\n", photo_url_text, len);
id = purple_imgstore_add_with_id(g_memdup(url_text, len), len, NULL);
-
+
tmp = g_strdup_printf("<img id=\"%d\"><br>", id);
purple_notify_user_info_add_pair(user_info, NULL, tmp);
g_free(tmp);
@@ -1213,7 +1214,9 @@ yahoo_got_photo(PurpleUtilFetchUrlData *url_data, gpointer data,
* in which case the user may or may not actually exist.
* Hence this extra step.
*/
- f = yahoo_friend_find(b->account->gc, b->name);
+ PurpleAccount *account = purple_buddy_get_account(b);
+ f = yahoo_friend_find(purple_account_get_connection(account),
+ purple_buddy_get_name(b));
}
str = f ? _("Could not retrieve the user's profile. "
"This most likely is a temporary server-side problem. "
@@ -1256,7 +1259,7 @@ yahoo_got_photo(PurpleUtilFetchUrlData *url_data, gpointer data,
g_free(info2_data);
if (id != -1)
purple_imgstore_unref_by_id(id);
-#endif
+#endif /* PHOTO_SUPPORT */
}
void yahoo_get_info(PurpleConnection *gc, const char *name)
diff --git a/libpurple/protocols/yahoo/yahoochat.c b/libpurple/protocols/yahoo/yahoochat.c
index b4ca3b38fa..a177bbf572 100644
--- a/libpurple/protocols/yahoo/yahoochat.c
+++ b/libpurple/protocols/yahoo/yahoochat.c
@@ -30,7 +30,7 @@
#ifdef HAVE_CONFIG_H
#include "config.h"
-#endif
+#endif /* HAVE_CONFIG_H */
#include "debug.h"
#include "privacy.h"
@@ -519,7 +519,7 @@ void yahoo_process_chat_join(PurpleConnection *gc, struct yahoo_packet *pkt)
GList *l;
GList *flags = NULL;
for (l = members; l; l = l->next)
- flags = g_list_append(flags, GINT_TO_POINTER(PURPLE_CBFLAGS_NONE));
+ flags = g_list_prepend(flags, GINT_TO_POINTER(PURPLE_CBFLAGS_NONE));
if (c && purple_conv_chat_has_left(PURPLE_CONV_CHAT(c))) {
/* this might be a hack, but oh well, it should nicely */
char *tmpmsg;
@@ -1519,7 +1519,7 @@ PurpleRoomlist *yahoo_roomlist_get_list(PurpleConnection *gc)
purple_roomlist_set_fields(rl, fields);
- if (purple_proxy_connect(NULL, account, yrl->host, 80,
+ if (purple_proxy_connect(gc, account, yrl->host, 80,
yahoo_roomlist_got_connected, yrl) == NULL)
{
purple_notify_error(gc, NULL, _("Connection problem"), _("Unable to fetch room list."));
@@ -1588,8 +1588,9 @@ void yahoo_roomlist_expand_category(PurpleRoomlist *list, PurpleRoomlistRoom *ca
yrl->ucat = purple_roomlist_room_new(PURPLE_ROOMLIST_ROOMTYPE_CATEGORY, _("User Rooms"), yrl->cat);
purple_roomlist_room_add(list, yrl->ucat);
- if (purple_proxy_connect(NULL, list->account, yrl->host, 80,
- yahoo_roomlist_got_connected, yrl) == NULL)
+ if (purple_proxy_connect(purple_account_get_connection(list->account),
+ list->account, yrl->host, 80,
+ yahoo_roomlist_got_connected, yrl) == NULL)
{
purple_notify_error(purple_account_get_connection(list->account),
NULL, _("Connection problem"), _("Unable to fetch room list."));
diff --git a/libpurple/protocols/yahoo/ycht.c b/libpurple/protocols/yahoo/ycht.c
index 17722dd0e1..44ab290700 100644
--- a/libpurple/protocols/yahoo/ycht.c
+++ b/libpurple/protocols/yahoo/ycht.c
@@ -225,7 +225,7 @@ static void ycht_packet_dump(const guchar *data, int len)
}
purple_debug(PURPLE_DEBUG_MISC, NULL, "\n");
-#endif
+#endif /* YAHOO_YCHT_DEBUG */
}
static YchtPkt *ycht_packet_new(guint version, guint service, int status)
@@ -578,7 +578,7 @@ void ycht_connection_open(PurpleConnection *gc)
yd->ycht = ycht;
- if (purple_proxy_connect(NULL, account,
+ if (purple_proxy_connect(gc, account,
purple_account_get_string(account, "ycht-server", YAHOO_YCHT_HOST),
purple_account_get_int(account, "ycht-port", YAHOO_YCHT_PORT),
ycht_got_connected, ycht) == NULL)
diff --git a/libpurple/protocols/zephyr/ZVariables.c b/libpurple/protocols/zephyr/ZVariables.c
index f433e45ddb..96e7b0b035 100644
--- a/libpurple/protocols/zephyr/ZVariables.c
+++ b/libpurple/protocols/zephyr/ZVariables.c
@@ -186,7 +186,7 @@ static int varline(bfr, var)
#define max(a,b) ((a > b) ? (a) : (b))
#endif
- if (g_strncasecmp(bfr, var, max(strlen(var), cp - bfr)))
+ if (g_ascii_strncasecmp(bfr, var, max(strlen(var), cp - bfr)))
return(0); /* var is not the var in
bfr ==> no match */
diff --git a/libpurple/protocols/zephyr/zephyr.c b/libpurple/protocols/zephyr/zephyr.c
index d1d422ce92..b3089625ba 100644
--- a/libpurple/protocols/zephyr/zephyr.c
+++ b/libpurple/protocols/zephyr/zephyr.c
@@ -732,7 +732,7 @@ static char *zephyr_to_html(const char *message)
return ret;
}
-static gboolean pending_zloc(zephyr_account *zephyr,char *who)
+static gboolean pending_zloc(zephyr_account *zephyr, const char *who)
{
GList *curr;
@@ -771,6 +771,8 @@ static void handle_message(PurpleConnection *gc,ZNotice_t notice)
int nlocs;
char *user;
PurpleBuddy *b;
+ const char *bname;
+
/* XXX add real error reporting */
if (ZParseLocations(&notice, NULL, &nlocs, &user) != ZERR_NONE)
return;
@@ -780,15 +782,19 @@ static void handle_message(PurpleConnection *gc,ZNotice_t notice)
b = purple_find_buddy(gc->account,stripped_user);
g_free(stripped_user);
}
- if ((b && pending_zloc(zephyr,b->name)) || pending_zloc(zephyr,user)) {
+
+ bname = b ? purple_buddy_get_name(b) : NULL;
+ if ((b && pending_zloc(zephyr,bname)) || pending_zloc(zephyr,user)) {
ZLocations_t locs;
int one = 1;
PurpleNotifyUserInfo *user_info = purple_notify_user_info_new();
char *tmp;
+ const char *balias;
- purple_notify_user_info_add_pair(user_info, _("User"), (b ? b->name : user));
- if (b && b->alias)
- purple_notify_user_info_add_pair(user_info, _("Alias"), b->alias);
+ purple_notify_user_info_add_pair(user_info, _("User"), (b ? bname : user));
+ balias = purple_buddy_get_local_buddy_alias(b);
+ if (b && balias)
+ purple_notify_user_info_add_pair(user_info, _("Alias"), balias);
if (!nlocs) {
purple_notify_user_info_add_pair(user_info, NULL, _("Hidden or not logged-in"));
@@ -801,14 +807,14 @@ static void handle_message(PurpleConnection *gc,ZNotice_t notice)
purple_notify_user_info_add_pair(user_info, _("Location"), tmp);
g_free(tmp);
}
- purple_notify_userinfo(gc, (b ? b->name : user),
+ purple_notify_userinfo(gc, (b ? bname : user),
user_info, NULL, NULL);
purple_notify_user_info_destroy(user_info);
} else {
if (nlocs>0)
- purple_prpl_got_user_status(gc->account, b ? b->name : user, "available", NULL);
+ purple_prpl_got_user_status(gc->account, b ? bname : user, "available", NULL);
else
- purple_prpl_got_user_status(gc->account, b ? b->name : user, "offline", NULL);
+ purple_prpl_got_user_status(gc->account, b ? bname : user, "offline", NULL);
}
g_free(user);
@@ -954,7 +960,7 @@ static parse_tree *find_node(parse_tree* ptree,gchar* key)
tc = tree_child(ptree,0)->contents;
/* g_strcasecmp() is deprecated. What is the encoding here??? */
- if (ptree->num_children > 0 && tc && !g_strcasecmp(tc, key)) {
+ if (ptree->num_children > 0 && tc && !g_ascii_strcasecmp(tc, key)) {
return ptree;
} else {
parse_tree *result = &null_parse_tree;
@@ -1141,6 +1147,7 @@ static gint check_notify_tzc(gpointer data)
/* XXX fix */
char *user;
PurpleBuddy *b;
+ const char *bname;
int nlocs = 0;
parse_tree *locations;
gchar *locval;
@@ -1160,15 +1167,18 @@ static gint check_notify_tzc(gpointer data)
nlocs = 1;
}
- if ((b && pending_zloc(zephyr,b->name)) || pending_zloc(zephyr,user) || pending_zloc(zephyr,local_zephyr_normalize(zephyr,user))){
+ bname = b ? purple_buddy_get_name(b) : NULL;
+ if ((b && pending_zloc(zephyr,bname)) || pending_zloc(zephyr,user) || pending_zloc(zephyr,local_zephyr_normalize(zephyr,user))){
PurpleNotifyUserInfo *user_info = purple_notify_user_info_new();
char *tmp;
+ const char *balias;
+
+ purple_notify_user_info_add_pair(user_info, _("User"), (b ? bname : user));
- purple_notify_user_info_add_pair(user_info, _("User"), (b ? b->name : user));
+ balias = b ? purple_buddy_get_local_buddy_alias(b) : NULL;
+ if (balias)
+ purple_notify_user_info_add_pair(user_info, _("Alias"), balias);
- if (b && b->alias)
- purple_notify_user_info_add_pair(user_info, _("Alias"), b->alias);
-
if (!nlocs) {
purple_notify_user_info_add_pair(user_info, NULL, _("Hidden or not logged-in"));
} else {
@@ -1179,14 +1189,14 @@ static gint check_notify_tzc(gpointer data)
g_free(tmp);
}
- purple_notify_userinfo(gc, b ? b->name : user,
+ purple_notify_userinfo(gc, b ? bname : user,
user_info, NULL, NULL);
purple_notify_user_info_destroy(user_info);
} else {
if (nlocs>0)
- purple_prpl_got_user_status(gc->account, b ? b->name : user, "available", NULL);
+ purple_prpl_got_user_status(gc->account, b ? bname : user, "available", NULL);
else
- purple_prpl_got_user_status(gc->account, b ? b->name : user, "offline", NULL);
+ purple_prpl_got_user_status(gc->account, b ? bname : user, "offline", NULL);
}
}
else if (!g_ascii_strncasecmp(spewtype,"subscribed",10)) {
@@ -1244,50 +1254,44 @@ static gint check_notify_zeph02(gpointer data)
#ifdef WIN32
-static gint check_loc(gpointer_data)
+static gint check_loc(gpointer data)
{
- PurpleBlistNode *gnode, *cnode, *bnode;
- ZLocations_t locations;
- int numlocs;
- int one = 1;
-
- 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 = (PurpleBuddy *) bnode;
-
- if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
- continue;
- if (b->account->gc == zgc) {
- char *chk;
- chk = local_zephyr_normalize(b->name);
- ZLocateUser(chk,&numlocs, ZAUTH);
- if (numlocs) {
- int i;
- for(i=0;i<numlocs;i++) {
- ZGetLocations(&locations,&one);
- serv_got_update(zgc,b->name,1,0,0,0,0);
- }
- }
- }
- }
- }
- }
- return TRUE;
+ GSList *buddies;
+ ZLocations_t locations;
+ PurpleConnection *gc = data;
+ zephyr_account *zephyr = gc->proto_data;
+ PurpleAccount *account = purple_connection_get_account(gc);
+ int numlocs;
+ int one = 1;
+
+ for (buddies = purple_find_buddies(account, NULL); buddies;
+ buddies = g_slist_delete_link(buddies, buddies)) {
+ PurpleBuddy *b = buddies->data;
+ char *chk;
+ const char *bname = purple_buddy_get_name(b);
+ chk = local_zephyr_normalize(bname);
+ ZLocateUser(chk,&numlocs, ZAUTH);
+ if (numlocs) {
+ int i;
+ for(i=0;i<numlocs;i++) {
+ ZGetLocations(&locations,&one);
+ serv_got_update(zgc,bname,1,0,0,0,0);
+ }
+ }
+ }
+
+ return TRUE;
}
#else
static gint check_loc(gpointer data)
{
- PurpleBlistNode *gnode, *cnode, *bnode;
+ GSList *buddies;
ZAsyncLocateData_t ald;
PurpleConnection *gc = (PurpleConnection *)data;
zephyr_account *zephyr = gc->proto_data;
+ PurpleAccount *account = purple_connection_get_account(gc);
if (use_zeph02(zephyr)) {
ald.user = NULL;
@@ -1295,59 +1299,49 @@ static gint check_loc(gpointer data)
ald.version = 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 = (PurpleBuddy *) bnode;
+ for (buddies = purple_find_buddies(account, NULL); buddies;
+ buddies = g_slist_delete_link(buddies, buddies)) {
+ PurpleBuddy *b = buddies->data;
- if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
- continue;
- if (b->account->gc == gc) {
- const char *chk;
+ const char *chk;
+ const char *name = purple_buddy_get_name(b);
- chk = local_zephyr_normalize(zephyr,b->name);
- purple_debug_info("zephyr","chk: %s b->name %s\n",chk,b->name);
- /* XXX add real error reporting */
- /* doesn't matter if this fails or not; we'll just move on to the next one */
- if (use_zeph02(zephyr)) {
+ chk = local_zephyr_normalize(zephyr,name);
+ purple_debug_info("zephyr","chk: %s b->name %s\n",chk,name);
+ /* XXX add real error reporting */
+ /* doesn't matter if this fails or not; we'll just move on to the next one */
+ if (use_zeph02(zephyr)) {
#ifdef WIN32
- int numlocs;
- int one=1;
- ZLocateUser(chk,&numlocs,ZAUTH);
- if (numlocs) {
- int i;
- for(i=0;i<numlocs;i++) {
- ZGetLocations(&locations,&one);
- if (nlocs>0)
- purple_prpl_got_user_status(gc->account,b->name,"available",NULL);
- else
- purple_prpl_got_user_status(gc->account,b->name,"offline",NULL);
- }
- }
+ int numlocs;
+ int one=1;
+ ZLocateUser(chk,&numlocs,ZAUTH);
+ if (numlocs) {
+ int i;
+ for(i=0;i<numlocs;i++) {
+ ZGetLocations(&locations,&one);
+ if (nlocs>0)
+ purple_prpl_got_user_status(account,name,"available",NULL);
+ else
+ purple_prpl_got_user_status(account,name,"offline",NULL);
+ }
+ }
#else
- ZRequestLocations(chk, &ald, UNACKED, ZAUTH);
- g_free(ald.user);
- g_free(ald.version);
+ ZRequestLocations(chk, &ald, UNACKED, ZAUTH);
+ g_free(ald.user);
+ g_free(ald.version);
#endif /* WIN32 */
- } else
- if (use_tzc(zephyr)) {
- gchar *zlocstr = g_strdup_printf("((tzcfodder . zlocate) \"%s\")\n",chk);
- size_t len = strlen(zlocstr);
- size_t result = write(zephyr->totzc[ZEPHYR_FD_WRITE],zlocstr,len);
- if (result != len) {
- purple_debug_error("zephyr", "Unable to write a message: %s\n", g_strerror(errno));
- }
- g_free(zlocstr);
- }
+ } else
+ if (use_tzc(zephyr)) {
+ gchar *zlocstr = g_strdup_printf("((tzcfodder . zlocate) \"%s\")\n",chk);
+ size_t len = strlen(zlocstr);
+ size_t result = write(zephyr->totzc[ZEPHYR_FD_WRITE],zlocstr,len);
+ if (result != len) {
+ purple_debug_error("zephyr", "Unable to write a message: %s\n", g_strerror(errno));
}
+ g_free(zlocstr);
}
- }
}
-
+
return TRUE;
}
@@ -1932,10 +1926,10 @@ static void write_zsubs(zephyr_account *zephyr)
static void write_anyone(PurpleConnection *gc)
{
- PurpleBlistNode *gnode, *cnode, *bnode;
- PurpleBuddy *b;
+ GSList *buddies;
char *fname;
FILE *fd;
+ PurpleAccount *account;
zephyr_account* zephyr = gc->proto_data;
fname = g_strdup_printf("%s/.anyone", purple_home_dir());
fd = g_fopen(fname, "w");
@@ -1944,23 +1938,13 @@ static void write_anyone(PurpleConnection *gc)
return;
}
- 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) {
- if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
- continue;
- b = (PurpleBuddy *) bnode;
- if (b->account == gc->account) {
- gchar *stripped_user = zephyr_strip_local_realm(zephyr,b->name);
- fprintf(fd, "%s\n", stripped_user);
- g_free(stripped_user);
- }
- }
- }
+ account = purple_connection_get_account(gc);
+ for (buddies = purple_find_buddies(account, NULL); buddies;
+ buddies = g_slist_delete_link(buddies, buddies)) {
+ PurpleBuddy *b = buddies->data;
+ gchar *stripped_user = zephyr_strip_local_realm(zephyr, purple_buddy_get_name(b));
+ fprintf(fd, "%s\n", stripped_user);
+ g_free(stripped_user);
}
fclose(fd);
@@ -2498,26 +2482,31 @@ static PurpleChat *zephyr_find_blist_chat(PurpleAccount *account, const char *na
PurpleBlistNode *gnode, *cnode;
/* XXX needs to be %host%,%canon%, and %me% clean */
- for(gnode = purple_get_blist()->root; gnode; gnode = gnode->next) {
- for(cnode = gnode->child; cnode; cnode = cnode->next) {
+ for(gnode = purple_blist_get_root(); gnode;
+ gnode = purple_blist_node_get_sibling_next(gnode)) {
+ for(cnode = purple_blist_node_get_first_child(gnode);
+ cnode;
+ cnode = purple_blist_node_get_sibling_next(cnode)) {
PurpleChat *chat = (PurpleChat*)cnode;
char *zclass, *inst, *recip;
char** triple;
+ GHashTable *components;
if(!PURPLE_BLIST_NODE_IS_CHAT(cnode))
continue;
- if(chat->account !=account)
+ if(purple_chat_get_account(chat) != account)
continue;
- if(!(zclass = g_hash_table_lookup(chat->components, "class")))
+ components = purple_chat_get_components(chat);
+ if(!(zclass = g_hash_table_lookup(components, "class")))
continue;
- if(!(inst = g_hash_table_lookup(chat->components, "instance")))
+ if(!(inst = g_hash_table_lookup(components, "instance")))
inst = g_strdup("");
- if(!(recip = g_hash_table_lookup(chat->components, "recipient")))
+ if(!(recip = g_hash_table_lookup(components, "recipient")))
recip = g_strdup("");
/* purple_debug_info("zephyr","in zephyr_find_blist_chat name: %s\n",name?name:""); */
triple = g_strsplit(name,",",3);
if (!g_ascii_strcasecmp(triple[0],zclass) && !g_ascii_strcasecmp(triple[1],inst) && !g_ascii_strcasecmp(triple[2],recip))
return chat;
-
+
}
}
return NULL;
@@ -2917,7 +2906,9 @@ static PurplePluginProtocolInfo prpl_info = {
NULL,
NULL,
sizeof(PurplePluginProtocolInfo), /* struct_size */
- NULL
+ NULL, /* get_account_text_table */
+ NULL, /* initate_media */
+ NULL /* can_do_media */
};
static PurplePluginInfo info = {
diff --git a/libpurple/proxy.c b/libpurple/proxy.c
index 03d798e631..db5acd76bb 100644
--- a/libpurple/proxy.c
+++ b/libpurple/proxy.c
@@ -47,6 +47,7 @@ struct _PurpleProxyConnectData {
gchar *host;
int port;
int fd;
+ int socket_type;
guint inpa;
PurpleProxyInfo *gpi;
PurpleDnsQueryData *query_data;
@@ -207,6 +208,16 @@ purple_global_proxy_get_info(void)
return global_proxy_info;
}
+void
+purple_global_proxy_set_info(PurpleProxyInfo *info)
+{
+ g_return_if_fail(info != NULL);
+
+ purple_proxy_info_destroy(global_proxy_info);
+
+ global_proxy_info = info;
+}
+
static PurpleProxyInfo *
purple_gnome_proxy_get_info(void)
{
@@ -228,13 +239,13 @@ purple_gnome_proxy_get_info(void)
g_free(err);
err = NULL;
- if (!strcmp(tmp, "none\n")) {
+ if (purple_strequal(tmp, "none\n")) {
info.type = PURPLE_PROXY_NONE;
g_free(tmp);
return &info;
}
- if (strcmp(tmp, "manual\n")) {
+ if (purple_strequal(tmp, "manual\n")) {
/* Unknown setting. Fallback to using our global proxy settings. */
g_free(tmp);
return purple_global_proxy_get_info();
@@ -263,7 +274,7 @@ purple_gnome_proxy_get_info(void)
g_free(err);
err = NULL;
- if (!strcmp(tmp, "true\n"))
+ if (purple_strequal(tmp, "true\n"))
use_same_proxy = TRUE;
g_free(tmp);
tmp = NULL;
@@ -666,6 +677,68 @@ clean_connect(gpointer data)
}
static void
+proxy_connect_udp_none(PurpleProxyConnectData *connect_data, struct sockaddr *addr, socklen_t addrlen)
+{
+ int flags;
+
+ purple_debug_info("proxy", "UDP Connecting to %s:%d with no proxy\n",
+ connect_data->host, connect_data->port);
+
+ connect_data->fd = socket(addr->sa_family, SOCK_DGRAM, 0);
+ if (connect_data->fd < 0)
+ {
+ purple_proxy_connect_data_disconnect_formatted(connect_data,
+ _("Unable to create socket:\n%s"), g_strerror(errno));
+ return;
+ }
+
+ flags = fcntl(connect_data->fd, F_GETFL);
+ fcntl(connect_data->fd, F_SETFL, flags | O_NONBLOCK);
+#ifndef _WIN32
+ fcntl(connect_data->fd, F_SETFD, FD_CLOEXEC);
+#endif
+
+ if (connect(connect_data->fd, addr, addrlen) != 0)
+ {
+ if ((errno == EINPROGRESS) || (errno == EINTR))
+ {
+ purple_debug_info("proxy", "UDP Connection in progress\n");
+ connect_data->inpa = purple_input_add(connect_data->fd,
+ PURPLE_INPUT_WRITE, socket_ready_cb, connect_data);
+ }
+ else
+ {
+ purple_proxy_connect_data_disconnect(connect_data, g_strerror(errno));
+ }
+ }
+ else
+ {
+ /*
+ * The connection happened IMMEDIATELY... strange, but whatever.
+ */
+ int error = ETIMEDOUT;
+ int ret;
+
+ purple_debug_info("proxy", "UDP Connected immediately.\n");
+
+ ret = purple_input_get_error(connect_data->fd, &error);
+ if ((ret != 0) || (error != 0))
+ {
+ if (ret != 0)
+ error = errno;
+ purple_proxy_connect_data_disconnect(connect_data, g_strerror(error));
+ return;
+ }
+
+ /*
+ * We want to call the "connected" callback eventually, but we
+ * don't want to call it before we return, just in case.
+ */
+ purple_timeout_add(10, clean_connect, connect_data);
+ }
+}
+
+static void
proxy_connect_none(PurpleProxyConnectData *connect_data, struct sockaddr *addr, socklen_t addrlen)
{
int flags;
@@ -2032,6 +2105,12 @@ static void try_connect(PurpleProxyConnectData *connect_data)
#endif
purple_debug_info("proxy", "Attempting connection to %s\n", ipaddr);
+ if (connect_data->socket_type == SOCK_DGRAM) {
+ proxy_connect_udp_none(connect_data, addr, addrlen);
+ g_free(addr);
+ return;
+ }
+
switch (purple_proxy_info_get_type(connect_data->gpi)) {
case PURPLE_PROXY_NONE:
proxy_connect_none(connect_data, addr, addrlen);
@@ -2183,6 +2262,7 @@ purple_proxy_connect(void *handle, PurpleAccount *account,
connect_data = g_new0(PurpleProxyConnectData, 1);
connect_data->fd = -1;
+ connect_data->socket_type = SOCK_STREAM;
connect_data->handle = handle;
connect_data->connect_cb = connect_cb;
connect_data->data = data;
@@ -2233,6 +2313,71 @@ purple_proxy_connect(void *handle, PurpleAccount *account,
return connect_data;
}
+PurpleProxyConnectData *
+purple_proxy_connect_udp(void *handle, PurpleAccount *account,
+ const char *host, int port,
+ PurpleProxyConnectFunction connect_cb, gpointer data)
+{
+ const char *connecthost = host;
+ int connectport = port;
+ PurpleProxyConnectData *connect_data;
+
+ g_return_val_if_fail(host != NULL, NULL);
+ g_return_val_if_fail(port > 0, NULL);
+ g_return_val_if_fail(connect_cb != NULL, NULL);
+
+ connect_data = g_new0(PurpleProxyConnectData, 1);
+ connect_data->fd = -1;
+ connect_data->socket_type = SOCK_DGRAM;
+ connect_data->handle = handle;
+ connect_data->connect_cb = connect_cb;
+ connect_data->data = data;
+ connect_data->host = g_strdup(host);
+ connect_data->port = port;
+ connect_data->gpi = purple_proxy_get_setup(account);
+
+ if ((purple_proxy_info_get_type(connect_data->gpi) != PURPLE_PROXY_NONE) &&
+ (purple_proxy_info_get_host(connect_data->gpi) == NULL ||
+ purple_proxy_info_get_port(connect_data->gpi) <= 0)) {
+
+ purple_notify_error(NULL, NULL, _("Invalid proxy settings"), _("Either the host name or port number specified for your given proxy type is invalid."));
+ purple_proxy_connect_data_destroy(connect_data);
+ return NULL;
+ }
+
+ switch (purple_proxy_info_get_type(connect_data->gpi))
+ {
+ case PURPLE_PROXY_NONE:
+ break;
+
+ case PURPLE_PROXY_HTTP:
+ case PURPLE_PROXY_SOCKS4:
+ case PURPLE_PROXY_SOCKS5:
+ case PURPLE_PROXY_USE_ENVVAR:
+ purple_debug_info("proxy", "Ignoring Proxy type (%d) for UDP.\n",
+ purple_proxy_info_get_type(connect_data->gpi));
+ break;
+
+ default:
+ purple_debug_error("proxy", "Invalid Proxy type (%d) specified.\n",
+ purple_proxy_info_get_type(connect_data->gpi));
+ purple_proxy_connect_data_destroy(connect_data);
+ return NULL;
+ }
+
+ connect_data->query_data = purple_dnsquery_a(connecthost,
+ connectport, connection_host_resolved, connect_data);
+ if (connect_data->query_data == NULL)
+ {
+ purple_proxy_connect_data_destroy(connect_data);
+ return NULL;
+ }
+
+ handles = g_slist_prepend(handles, connect_data);
+
+ return connect_data;
+}
+
/*
* Combine some of this code with purple_proxy_connect()
*/
@@ -2250,6 +2395,7 @@ purple_proxy_connect_socks5(void *handle, PurpleProxyInfo *gpi,
connect_data = g_new0(PurpleProxyConnectData, 1);
connect_data->fd = -1;
+ connect_data->socket_type = SOCK_STREAM;
connect_data->handle = handle;
connect_data->connect_cb = connect_cb;
connect_data->data = data;
@@ -2300,31 +2446,31 @@ proxy_pref_cb(const char *name, PurplePrefType type,
{
PurpleProxyInfo *info = purple_global_proxy_get_info();
- if (!strcmp(name, "/purple/proxy/type")) {
+ if (purple_strequal(name, "/purple/proxy/type")) {
int proxytype;
const char *type = value;
- if (!strcmp(type, "none"))
+ if (purple_strequal(type, "none"))
proxytype = PURPLE_PROXY_NONE;
- else if (!strcmp(type, "http"))
+ else if (purple_strequal(type, "http"))
proxytype = PURPLE_PROXY_HTTP;
- else if (!strcmp(type, "socks4"))
+ else if (purple_strequal(type, "socks4"))
proxytype = PURPLE_PROXY_SOCKS4;
- else if (!strcmp(type, "socks5"))
+ else if (purple_strequal(type, "socks5"))
proxytype = PURPLE_PROXY_SOCKS5;
- else if (!strcmp(type, "envvar"))
+ else if (purple_strequal(type, "envvar"))
proxytype = PURPLE_PROXY_USE_ENVVAR;
else
proxytype = -1;
purple_proxy_info_set_type(info, proxytype);
- } else if (!strcmp(name, "/purple/proxy/host"))
+ } else if (purple_strequal(name, "/purple/proxy/host"))
purple_proxy_info_set_host(info, value);
- else if (!strcmp(name, "/purple/proxy/port"))
+ else if (purple_strequal(name, "/purple/proxy/port"))
purple_proxy_info_set_port(info, GPOINTER_TO_INT(value));
- else if (!strcmp(name, "/purple/proxy/username"))
+ else if (purple_strequal(name, "/purple/proxy/username"))
purple_proxy_info_set_username(info, value);
- else if (!strcmp(name, "/purple/proxy/password"))
+ else if (purple_strequal(name, "/purple/proxy/password"))
purple_proxy_info_set_password(info, value);
}
diff --git a/libpurple/proxy.h b/libpurple/proxy.h
index 2145f6038f..bf9db8d7f2 100644
--- a/libpurple/proxy.h
+++ b/libpurple/proxy.h
@@ -186,6 +186,14 @@ const char *purple_proxy_info_get_password(const PurpleProxyInfo *info);
*/
PurpleProxyInfo *purple_global_proxy_get_info(void);
+/**
+ * Set purple's global proxy information.
+ *
+ * @param info The proxy information.
+ * @since 2.6.0
+ */
+void purple_global_proxy_set_info(PurpleProxyInfo *info);
+
/*@}*/
/**************************************************************************/
@@ -249,6 +257,35 @@ PurpleProxyConnectData *purple_proxy_connect(void *handle,
PurpleProxyConnectFunction connect_cb, gpointer data);
/**
+ * Makes a connection to the specified host and port. Note that this
+ * function name can be misleading--although it is called "proxy
+ * connect," it is used for establishing any outgoing UDP connection,
+ * whether through a proxy or not.
+ *
+ * @param handle A handle that should be associated with this
+ * connection attempt. The handle can be used
+ * to cancel the connection attempt using the
+ * purple_proxy_connect_cancel_with_handle()
+ * function.
+ * @param account The account making the connection.
+ * @param host The destination host.
+ * @param port The destination port.
+ * @param connect_cb The function to call when the connection is
+ * established. If the connection failed then
+ * fd will be -1 and error message will be set
+ * to something descriptive (hopefully).
+ * @param data User-defined data.
+ *
+ * @return NULL if there was an error, or a reference to an
+ * opaque data structure that can be used to cancel
+ * the pending connection, if needed.
+ */
+PurpleProxyConnectData *purple_proxy_connect_udp(void *handle,
+ PurpleAccount *account,
+ const char *host, int port,
+ PurpleProxyConnectFunction connect_cb, gpointer data);
+
+/**
* Makes a connection through a SOCKS5 proxy.
*
* @param handle A handle that should be associated with this
diff --git a/libpurple/prpl.c b/libpurple/prpl.c
index bbb1ec66f0..f423486407 100644
--- a/libpurple/prpl.c
+++ b/libpurple/prpl.c
@@ -75,7 +75,7 @@ void
purple_attention_type_set_icon_name(PurpleAttentionType *type, const char *name)
{
g_return_if_fail(type != NULL);
-
+
type->icon_name = name;
}
@@ -182,6 +182,17 @@ purple_prpl_got_account_status(PurpleAccount *account, const char *status_id, ..
}
void
+purple_prpl_got_account_actions(PurpleAccount *account)
+{
+
+ g_return_if_fail(account != NULL);
+ g_return_if_fail(purple_account_is_connected(account));
+
+ purple_signal_emit(purple_accounts_get_handle(), "account-actions-changed",
+ account);
+}
+
+void
purple_prpl_got_user_idle(PurpleAccount *account, const char *name,
gboolean idle, time_t idle_time)
{
@@ -400,7 +411,7 @@ purple_prpl_send_attention(PurpleConnection *gc, const char *who, guint type_cod
PurpleConversation *conv;
gboolean (*send_attention)(PurpleConnection *, const char *, guint);
PurpleBuddy *buddy;
- const char *alias;
+ const char *alias;
gchar *description;
time_t mtime;
@@ -425,7 +436,7 @@ purple_prpl_send_attention(PurpleConnection *gc, const char *who, guint type_cod
} else {
description = g_strdup_printf(_("Requesting %s's attention..."), alias);
}
-
+
flags = PURPLE_MESSAGE_SEND | PURPLE_MESSAGE_NOTIFY | PURPLE_MESSAGE_SYSTEM;
purple_debug_info("server", "serv_send_attention: sending '%s' to %s\n",
@@ -496,6 +507,54 @@ purple_prpl_got_attention_in_chat(PurpleConnection *gc, int id, const char *who,
got_attention(gc, id, who, type_code);
}
+gboolean
+purple_prpl_initiate_media(PurpleAccount *account,
+ const char *who,
+ PurpleMediaSessionType type)
+{
+#ifdef USE_VV
+ PurpleConnection *gc = NULL;
+ PurplePlugin *prpl = NULL;
+ PurplePluginProtocolInfo *prpl_info = NULL;
+
+ if (account)
+ gc = purple_account_get_connection(account);
+ if (gc)
+ prpl = purple_connection_get_prpl(gc);
+ if (prpl)
+ prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
+
+ if (prpl_info && PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl_info, initiate_media)) {
+ /* should check that the protocol supports this media type here? */
+ return prpl_info->initiate_media(account, who, type);
+ } else
+#endif
+ return FALSE;
+}
+
+PurpleMediaCaps
+purple_prpl_get_media_caps(PurpleAccount *account, const char *who)
+{
+#ifdef USE_VV
+ PurpleConnection *gc = NULL;
+ PurplePlugin *prpl = NULL;
+ PurplePluginProtocolInfo *prpl_info = NULL;
+
+ if (account)
+ gc = purple_account_get_connection(account);
+ if (gc)
+ prpl = purple_connection_get_prpl(gc);
+ if (prpl)
+ prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
+
+ if (prpl_info && PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl_info,
+ get_media_caps)) {
+ return prpl_info->get_media_caps(account, who);
+ }
+#endif
+ return PURPLE_MEDIA_CAPS_NONE;
+}
+
/**************************************************************************
* Protocol Plugin Subsystem API
**************************************************************************/
@@ -511,7 +570,7 @@ purple_find_prpl(const char *id)
for (l = purple_plugins_get_protocols(); l != NULL; l = l->next) {
plugin = (PurplePlugin *)l->data;
- if (!strcmp(plugin->info->id, id))
+ if (purple_strequal(plugin->info->id, id))
return plugin;
}
diff --git a/libpurple/prpl.h b/libpurple/prpl.h
index 615beb6981..5d46075269 100644
--- a/libpurple/prpl.h
+++ b/libpurple/prpl.h
@@ -65,6 +65,7 @@ typedef struct _PurpleBuddyIconSpec PurpleBuddyIconSpec;
#include "conversation.h"
#include "ft.h"
#include "imgstore.h"
+#include "media.h"
#include "notify.h"
#include "proxy.h"
#include "plugin.h"
@@ -125,10 +126,10 @@ struct _PurpleAttentionType
typedef enum
{
/**
- * Use a unique name, not an alias, for chat rooms.
+ * User names are unique to a chat and are not shared between rooms.
*
- * XMPP lets you choose what name you want for chat.
- * So it shouldn't be pulling the alias for when you're in chat;
+ * XMPP lets you choose what name you want in chats, so it shouldn't
+ * be pulling the aliases from the buddy list for the chat list;
* it gets annoying.
*/
OPT_PROTO_UNIQUE_CHATNAME = 0x00000004,
@@ -178,9 +179,11 @@ typedef enum
OPT_PROTO_USE_POINTSIZE = 0x00000100,
/**
- * Set the Register button active when screenname is not given.
+ * Set the Register button active even when the username has not
+ * been specified.
*
- * Gadu-Gadu doesn't need a screenname to register new account.
+ * Gadu-Gadu doesn't need a username to register new account (because
+ * usernames are assigned by the server).
*/
OPT_PROTO_REGISTER_NOSCREENNAME = 0x00000200,
@@ -211,7 +214,7 @@ struct _PurplePluginProtocolInfo
/**
* Returns the base icon name for the given buddy and account.
- * If buddy is NULL and the account is non-NULL, it will return the
+ * If buddy is NULL and the account is non-NULL, it will return the
* name to use for the account's icon. If both are NULL, it will
* return the name to use for the protocol's icon.
*
@@ -294,6 +297,14 @@ struct _PurplePluginProtocolInfo
void (*set_idle)(PurpleConnection *, int idletime);
void (*change_passwd)(PurpleConnection *, const char *old_pass,
const char *new_pass);
+ /**
+ * Add a buddy to a group on the server.
+ *
+ * This PRPL function may be called in situations in which the buddy is
+ * already in the specified group. If the protocol supports
+ * authorization and the user is not already authorized to see the
+ * status of \a buddy, \a add_buddy should request authorization.
+ */
void (*add_buddy)(PurpleConnection *, PurpleBuddy *buddy, PurpleGroup *group);
void (*add_buddies)(PurpleConnection *, GList *buddies, GList *groups);
void (*remove_buddy)(PurpleConnection *, PurpleBuddy *buddy, PurpleGroup *group);
@@ -413,7 +424,7 @@ struct _PurplePluginProtocolInfo
* reasons.
*/
void (*unregister_user)(PurpleAccount *, PurpleAccountUnregistrationCb cb, void *user_data);
-
+
/* Attention API for sending & receiving zaps/nudges/buzzes etc. */
gboolean (*send_attention)(PurpleConnection *gc, const char *username, guint type);
GList *(*get_attention_types)(PurpleAccount *acct);
@@ -449,6 +460,27 @@ struct _PurplePluginProtocolInfo
* destroyed by the caller when it's no longer needed.
*/
GHashTable *(*get_account_text_table)(PurpleAccount *account);
+
+ /**
+ * Initiate a media session with the given contact.
+ *
+ * @param account The account to initiate the media session on.
+ * @param who The remote user to initiate the session with.
+ * @param type The type of media session to initiate.
+ * @return TRUE if the call succeeded else FALSE. (Doesn't imply the media session or stream will be successfully created)
+ */
+ gboolean (*initiate_media)(PurpleAccount *account, const char *who,
+ PurpleMediaSessionType type);
+
+ /**
+ * Checks to see if the given contact supports the given type of media session.
+ *
+ * @param account The account the contact is on.
+ * @param who The remote user to check for media capability with.
+ * @return The media caps the contact supports.
+ */
+ PurpleMediaCaps (*get_media_caps)(PurpleAccount *account,
+ const char *who);
};
#define PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl, member) \
@@ -594,7 +626,7 @@ const char *purple_attention_type_get_unlocalized_name(const PurpleAttentionType
/*@{*/
/**
- * Notifies Purple that an account's idle state and time have changed.
+ * Notifies Purple that our account's idle state and time have changed.
*
* This is meant to be called from protocol plugins.
*
@@ -606,7 +638,7 @@ void purple_prpl_got_account_idle(PurpleAccount *account, gboolean idle,
time_t idle_time);
/**
- * Notifies Purple of an account's log-in time.
+ * Notifies Purple of our account's log-in time.
*
* This is meant to be called from protocol plugins.
*
@@ -616,7 +648,7 @@ void purple_prpl_got_account_idle(PurpleAccount *account, gboolean idle,
void purple_prpl_got_account_login_time(PurpleAccount *account, time_t login_time);
/**
- * Notifies Purple that an account's status has changed.
+ * Notifies Purple that our account's status has changed.
*
* This is meant to be called from protocol plugins.
*
@@ -627,13 +659,28 @@ void purple_prpl_got_account_login_time(PurpleAccount *account, time_t login_tim
*/
void purple_prpl_got_account_status(PurpleAccount *account,
const char *status_id, ...) G_GNUC_NULL_TERMINATED;
+
+/**
+ * Notifies Purple that our account's actions have changed. This is only
+ * called after the initial connection. Emits the account-actions-changed
+ * signal.
+ *
+ * This is meant to be called from protocol plugins.
+ *
+ * @param account The account.
+ *
+ * @see account-actions-changed
+ * @since 2.6.0
+ */
+void purple_prpl_got_account_actions(PurpleAccount *account);
+
/**
- * Notifies Purple that a user's idle state and time have changed.
+ * Notifies Purple that a buddy's idle state and time have changed.
*
* This is meant to be called from protocol plugins.
*
* @param account The account the user is on.
- * @param name The screen name of the user.
+ * @param name The name of the buddy.
* @param idle The user's idle state.
* @param idle_time The user's idle time. This is the time at
* which the user became idle, in seconds since
@@ -644,24 +691,24 @@ void purple_prpl_got_user_idle(PurpleAccount *account, const char *name,
gboolean idle, time_t idle_time);
/**
- * Notifies Purple of a user's log-in time.
+ * Notifies Purple of a buddy's log-in time.
*
* This is meant to be called from protocol plugins.
*
* @param account The account the user is on.
- * @param name The screen name of the user.
+ * @param name The name of the buddy.
* @param login_time The user's log-in time.
*/
void purple_prpl_got_user_login_time(PurpleAccount *account, const char *name,
time_t login_time);
/**
- * Notifies Purple that a user's status has been activated.
+ * Notifies Purple that a buddy's status has been activated.
*
* This is meant to be called from protocol plugins.
*
* @param account The account the user is on.
- * @param name The screen name of the user.
+ * @param name The name of the buddy.
* @param status_id The status ID.
* @param ... A NULL-terminated list of attribute IDs and values,
* beginning with the value for @a attr_id.
@@ -670,19 +717,19 @@ void purple_prpl_got_user_status(PurpleAccount *account, const char *name,
const char *status_id, ...) G_GNUC_NULL_TERMINATED;
/**
- * Notifies libpurple that a user's status has been deactivated
+ * Notifies libpurple that a buddy's status has been deactivated
*
* This is meant to be called from protocol plugins.
*
* @param account The account the user is on.
- * @param name The screen name of the user.
+ * @param name The name of the buddy.
* @param status_id The status ID.
*/
void purple_prpl_got_user_status_deactive(PurpleAccount *account, const char *name,
const char *status_id);
-
+
/**
- * Informs the server that an account's status changed.
+ * Informs the server that our account's status changed.
*
* @param account The account the user is on.
* @param old_status The previous status.
@@ -703,41 +750,71 @@ void purple_prpl_change_account_status(PurpleAccount *account,
*/
GList *purple_prpl_get_statuses(PurpleAccount *account, PurplePresence *presence);
-/** Send an attention request message.
+/**
+ * Send an attention request message.
*
* @param gc The connection to send the message on.
* @param who Whose attention to request.
* @param type_code An index into the prpl's attention_types list determining the type
- * of the attention request command to send. 0 if prpl only defines one
- * (for example, Yahoo and MSN), but some protocols define more (MySpaceIM).
+ * of the attention request command to send. 0 if prpl only defines one
+ * (for example, Yahoo and MSN), but some protocols define more (MySpaceIM).
*
* Note that you can't send arbitrary PurpleAttentionType's, because there is
* only a fixed set of attention commands.
+ *
* @since 2.5.0
*/
void purple_prpl_send_attention(PurpleConnection *gc, const char *who, guint type_code);
-/** Process an incoming attention message.
+/**
+ * Process an incoming attention message.
*
* @param gc The connection that received the attention message.
* @param who Who requested your attention.
* @param type_code An index into the prpl's attention_types list determining the type
- * of the attention request command to send.
+ * of the attention request command to send.
+ *
* @since 2.5.0
*/
void purple_prpl_got_attention(PurpleConnection *gc, const char *who, guint type_code);
-/** Process an incoming attention message in a chat.
+/**
+ * Process an incoming attention message in a chat.
*
* @param gc The connection that received the attention message.
* @param id The chat id.
* @param who Who requested your attention.
* @param type_code An index into the prpl's attention_types list determining the type
- * of the attention request command to send.
+ * of the attention request command to send.
+ *
* @since 2.5.0
*/
void purple_prpl_got_attention_in_chat(PurpleConnection *gc, int id, const char *who, guint type_code);
+/**
+ * Determines if the contact supports the given media session type.
+ *
+ * @param account The account the user is on.
+ * @param who The name of the contact to check capabilities for.
+ *
+ * @return The media caps the contact supports.
+ */
+PurpleMediaCaps purple_prpl_get_media_caps(PurpleAccount *account,
+ const char *who);
+
+/**
+ * Initiates a media session with the given contact.
+ *
+ * @param account The account the user is on.
+ * @param who The name of the contact to start a session with.
+ * @param type The type of media session to start.
+ *
+ * @return TRUE if the call succeeded else FALSE. (Doesn't imply the media session or stream will be successfully created)
+ */
+gboolean purple_prpl_initiate_media(PurpleAccount *account,
+ const char *who,
+ PurpleMediaSessionType type);
+
/*@}*/
/**************************************************************************/
diff --git a/libpurple/purple-send-async b/libpurple/purple-send-async
index a5cfbda821..e15340eb07 100755
--- a/libpurple/purple-send-async
+++ b/libpurple/purple-send-async
@@ -2,18 +2,18 @@
METHOD_NAME=$1
-if test -z "$METHOD_NAME"
+if test -z "$METHOD_NAME"
then
- cat <<EOF
-This program calls purple API functions using DBus. As opposed to purple-send,
+ cat <<EOF
+This program calls purple API functions using DBus. As opposed to purple-send,
it does not print the return value.
Usage:
$0 method-name type1:parameter1 type2:parameter2 ...
-This shell script just invokes dbus-send, see man dbus-send for how
-to specify the parameters.
+This shell script just invokes dbus-send, see man dbus-send for how
+to specify the parameters.
Examples:
@@ -27,4 +27,4 @@ fi
shift
dbus-send --dest=im.pidgin.purple.PurpleService --type=method_call /im/pidgin/purple/PurpleObject im.pidgin.purple.PurpleInterface.$METHOD_NAME "$@"
-echo
+echo
diff --git a/libpurple/purple-url-handler b/libpurple/purple-url-handler
index fdec81984e..083070b1ae 100755
--- a/libpurple/purple-url-handler
+++ b/libpurple/purple-url-handler
@@ -207,11 +207,7 @@ def irc(uri):
def correct_server(account):
username = cpurple.PurpleAccountGetUsername(account)
- user_split = (username.split("@"))
- # Not all accounts have a split, so append an empty string so the
- # [1] doesn't throw an IndexError.
- user_split.append("")
- return (server == user_split[1])
+ return ("@" in username) and (server == (username.split("@"))[1])
account = findaccount(protocol, matcher=correct_server)
diff --git a/libpurple/request.c b/libpurple/request.c
index c35b04fb1e..8ff0e3728e 100644
--- a/libpurple/request.c
+++ b/libpurple/request.c
@@ -23,6 +23,8 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
*/
+#define _PURPLE_REQUEST_C_
+
#include "internal.h"
#include "notify.h"
@@ -137,6 +139,23 @@ purple_request_fields_is_field_required(const PurpleRequestFields *fields,
return purple_request_field_is_required(field);
}
+gpointer
+purple_request_field_get_ui_data(const PurpleRequestField *field)
+{
+ g_return_val_if_fail(field != NULL, NULL);
+
+ return field->ui_data;
+}
+
+void
+purple_request_field_set_ui_data(PurpleRequestField *field,
+ gpointer ui_data)
+{
+ g_return_if_fail(field != NULL);
+
+ field->ui_data = ui_data;
+}
+
gboolean
purple_request_fields_all_required_filled(const PurpleRequestFields *fields)
{
@@ -443,6 +462,14 @@ purple_request_field_get_type(const PurpleRequestField *field)
return field->type;
}
+PurpleRequestFieldGroup *
+purple_request_field_get_group(const PurpleRequestField *field)
+{
+ g_return_val_if_fail(field != NULL, NULL);
+
+ return field->group;
+}
+
const char *
purple_request_field_get_id(const PurpleRequestField *field)
{
diff --git a/libpurple/request.h b/libpurple/request.h
index 2d66522123..08a18faaca 100644
--- a/libpurple/request.h
+++ b/libpurple/request.h
@@ -30,6 +30,9 @@
#include <glib-object.h>
#include <glib.h>
+/** @copydoc _PurpleRequestField */
+typedef struct _PurpleRequestField PurpleRequestField;
+
#include "account.h"
#define PURPLE_DEFAULT_ACTION_NONE -1
@@ -93,10 +96,11 @@ typedef struct
} PurpleRequestFieldGroup;
+#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_REQUEST_C_)
/**
* A request field.
*/
-typedef struct
+struct _PurpleRequestField
{
PurpleRequestFieldType type;
PurpleRequestFieldGroup *group;
@@ -176,7 +180,8 @@ typedef struct
void *ui_data;
-} PurpleRequestField;
+};
+#endif
/**
* Request UI operations.
@@ -521,6 +526,17 @@ void purple_request_field_set_required(PurpleRequestField *field,
PurpleRequestFieldType purple_request_field_get_type(const PurpleRequestField *field);
/**
+ * Returns the group for the field.
+ *
+ * @param field The field.
+ *
+ * @return The UI data.
+ *
+ * @since 2.6.0
+ */
+PurpleRequestFieldGroup *purple_request_field_get_group(const PurpleRequestField *field);
+
+/**
* Returns the ID of a field.
*
* @param field The field.
@@ -565,6 +581,30 @@ const char *purple_request_field_get_type_hint(const PurpleRequestField *field);
*/
gboolean purple_request_field_is_required(const PurpleRequestField *field);
+/**
+ * Returns the ui_data for a field.
+ *
+ * @param field The field.
+ *
+ * @return The UI data.
+ *
+ * @since 2.6.0
+ */
+gpointer purple_request_field_get_ui_data(const PurpleRequestField *field);
+
+/**
+ * Sets the ui_data for a field.
+ *
+ * @param field The field.
+ * @param ui_data The UI data.
+ *
+ * @return The UI data.
+ *
+ * @since 2.6.0
+ */
+void purple_request_field_set_ui_data(PurpleRequestField *field,
+ gpointer ui_data);
+
/*@}*/
/**************************************************************************/
diff --git a/libpurple/savedstatuses.c b/libpurple/savedstatuses.c
index 4fe457ca82..ebbdfd2989 100644
--- a/libpurple/savedstatuses.c
+++ b/libpurple/savedstatuses.c
@@ -285,13 +285,13 @@ status_to_xmlnode(PurpleSavedStatus *status)
xmlnode_set_attrib(node, "transient", "true");
}
- snprintf(buf, sizeof(buf), "%lu", status->creation_time);
+ g_snprintf(buf, sizeof(buf), "%lu", status->creation_time);
xmlnode_set_attrib(node, "created", buf);
- snprintf(buf, sizeof(buf), "%lu", status->lastused);
+ g_snprintf(buf, sizeof(buf), "%lu", status->lastused);
xmlnode_set_attrib(node, "lastused", buf);
- snprintf(buf, sizeof(buf), "%u", status->usage_count);
+ g_snprintf(buf, sizeof(buf), "%u", status->usage_count);
xmlnode_set_attrib(node, "usage_count", buf);
child = xmlnode_new_child(node, "state");
@@ -461,7 +461,7 @@ parse_status(xmlnode *status)
ret = g_new0(PurpleSavedStatus, 1);
attrib = xmlnode_get_attrib(status, "transient");
- if ((attrib == NULL) || (strcmp(attrib, "true")))
+ if (!purple_strequal(attrib, "true"))
{
/* Read the title */
attrib = xmlnode_get_attrib(status, "name");
@@ -870,15 +870,15 @@ purple_savedstatus_set_idleaway(gboolean idleaway)
/* Don't need to do anything */
return;
- /* Changing our status makes us un-idle */
- if (!idleaway)
- purple_idle_touch();
-
old = purple_savedstatus_get_current();
saved_status = idleaway ? purple_savedstatus_get_idleaway()
: purple_savedstatus_get_default();
purple_prefs_set_bool("/purple/savedstatus/isidleaway", idleaway);
+ /* Changing our status makes us un-idle */
+ if (!idleaway)
+ purple_idle_touch();
+
if (idleaway && (purple_savedstatus_get_type(old) != PURPLE_STATUS_AVAILABLE))
/* Our global status is already "away," so don't change anything */
return;
@@ -940,7 +940,7 @@ purple_savedstatus_find(const char *title)
for (iter = saved_statuses; iter != NULL; iter = iter->next)
{
status = (PurpleSavedStatus *)iter->data;
- if ((status->title != NULL) && !strcmp(status->title, title))
+ if (purple_strequal(status->title, title))
return status;
}
@@ -975,8 +975,7 @@ purple_savedstatus_find_transient_by_type_and_message(PurpleStatusPrimitive type
status = (PurpleSavedStatus *)iter->data;
if ((status->type == type) && purple_savedstatus_is_transient(status) &&
!purple_savedstatus_has_substatuses(status) &&
- (((status->message == NULL) && (message == NULL)) ||
- ((status->message != NULL) && (message != NULL) && !strcmp(status->message, message))))
+ purple_strequal(status->message, message))
{
return status;
}
diff --git a/libpurple/server.c b/libpurple/server.c
index cf47a406bd..4692bc6f60 100644
--- a/libpurple/server.c
+++ b/libpurple/server.c
@@ -152,7 +152,7 @@ int serv_send_im(PurpleConnection *gc, const char *name, const char *message,
auto_reply_pref = purple_prefs_get_string("/purple/away/auto_reply");
if((gc->flags & PURPLE_CONNECTION_AUTO_RESP) &&
!purple_presence_is_available(presence) &&
- strcmp(auto_reply_pref, "never")) {
+ !purple_strequal(auto_reply_pref, "never")) {
struct last_auto_response *lar;
lar = get_last_auto_response(gc, name);
@@ -172,7 +172,7 @@ void serv_get_info(PurpleConnection *gc, const char *name)
if(gc)
prpl = purple_connection_get_prpl(gc);
-
+
if(prpl)
prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
@@ -188,7 +188,7 @@ void serv_set_info(PurpleConnection *gc, const char *info)
if(gc)
prpl = purple_connection_get_prpl(gc);
-
+
if(prpl)
prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
@@ -230,7 +230,7 @@ void serv_alias_buddy(PurpleBuddy *b)
prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
if(b && prpl_info && prpl_info->alias_buddy) {
- prpl_info->alias_buddy(gc, b->name, b->alias);
+ prpl_info->alias_buddy(gc, purple_buddy_get_name(b), purple_buddy_get_local_buddy_alias(b));
}
}
@@ -247,20 +247,20 @@ serv_got_alias(PurpleConnection *gc, const char *who, const char *alias)
while (buddies != NULL)
{
+ const char *server_alias;
+
b = buddies->data;
buddies = g_slist_delete_link(buddies, buddies);
- if((b->server_alias == NULL && alias == NULL) ||
- (b->server_alias && alias && !strcmp(b->server_alias, alias)))
- {
+ server_alias = purple_buddy_get_server_alias(b);
+
+ if (purple_strequal(server_alias, alias))
continue;
- }
purple_blist_server_alias_buddy(b, alias);
- conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, b->name, account);
- if(conv != NULL && alias != NULL &&
- who != NULL && strcmp(alias, who))
+ conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, purple_buddy_get_name(b), account);
+ if (conv != NULL && alias != NULL && purple_strequal(alias, who))
{
char *escaped = g_markup_escape_text(who, -1);
char *escaped2 = g_markup_escape_text(alias, -1);
@@ -289,11 +289,13 @@ purple_serv_got_private_alias(PurpleConnection *gc, const char *who, const char
buddies = purple_find_buddies(account, who);
while(buddies != NULL) {
+ const char *balias;
b = buddies->data;
buddies = g_slist_delete_link(buddies, buddies);
- if((!b->alias && !alias) || (b->alias && alias && !strcmp(b->alias, alias)))
+ balias = purple_buddy_get_local_buddy_alias(b);
+ if (purple_strequal(balias, alias))
continue;
purple_blist_alias_buddy(b, alias);
@@ -367,7 +369,9 @@ void serv_move_buddy(PurpleBuddy *b, PurpleGroup *og, PurpleGroup *ng)
if(gc && og && ng) {
if (prpl_info && prpl_info->group_buddy) {
- prpl_info->group_buddy(gc, b->name, og->name, ng->name);
+ prpl_info->group_buddy(gc, purple_buddy_get_name(b),
+ purple_group_get_name(og),
+ purple_group_get_name(ng));
}
}
}
@@ -666,8 +670,8 @@ void serv_got_im(PurpleConnection *gc, const char *who, const char *msg,
if ((primitive == PURPLE_STATUS_AVAILABLE) ||
(primitive == PURPLE_STATUS_INVISIBLE) ||
mobile ||
- !strcmp(auto_reply_pref, "never") ||
- (!purple_presence_is_idle(presence) && !strcmp(auto_reply_pref, "awayidle")))
+ purple_strequal(auto_reply_pref, "never") ||
+ (!purple_presence_is_idle(presence) && purple_strequal(auto_reply_pref, "awayidle")))
{
g_free(name);
return;
@@ -724,7 +728,6 @@ void serv_got_typing(PurpleConnection *gc, const char *name, int timeout,
im = PURPLE_CONV_IM(conv);
purple_conv_im_set_typing_state(im, state);
- purple_conv_im_update_typing(im);
} else {
switch (state)
{
@@ -762,7 +765,6 @@ void serv_got_typing_stopped(PurpleConnection *gc, const char *name) {
purple_conv_im_stop_typing_timeout(im);
purple_conv_im_set_typing_state(im, PURPLE_NOT_TYPING);
- purple_conv_im_update_typing(im);
}
else
{
@@ -936,7 +938,7 @@ void serv_got_chat_in(PurpleConnection *g, int id, const char *who,
return;
/* Did I send the message? */
- if (!strcmp(purple_conv_chat_get_nick(chat),
+ if (purple_strequal(purple_conv_chat_get_nick(chat),
purple_normalize(purple_conversation_get_account(conv), who))) {
flags |= PURPLE_MESSAGE_SEND;
flags &= ~PURPLE_MESSAGE_RECV; /* Just in case some prpl sets it! */
diff --git a/libpurple/server.h b/libpurple/server.h
index 8832e30583..5c5b40d67f 100644
--- a/libpurple/server.h
+++ b/libpurple/server.h
@@ -55,8 +55,8 @@ unsigned int serv_send_typing(PurpleConnection *gc, const char *name, PurpleTypi
void serv_move_buddy(PurpleBuddy *, PurpleGroup *, PurpleGroup *);
int serv_send_im(PurpleConnection *, const char *, const char *, PurpleMessageFlags flags);
-/** Get information about an account's attention commands, from the prpl.
- *
+/** Get information about an account's attention commands, from the prpl.
+ *
* @return The attention command numbered 'code' from the prpl's attention_types, or NULL.
*/
PurpleAttentionType *purple_get_attention_type_from_code(PurpleAccount *account, guint type_code);
@@ -76,14 +76,14 @@ PurpleAttentionType *purple_get_attention_type_from_code(PurpleAccount *account,
*/
void serv_send_attention(PurpleConnection *gc, const char *who, guint type_code);
-/** Process an incoming attention message.
+/** Process an incoming attention message.
*
* @deprecated Use purple_prpl_got_attention() instead.
*
* @param gc The connection that received the attention message.
* @param who Who requested your attention.
* @param type_code An index into the prpl's attention_types list determining the type
- * of the attention request command to send.
+ * of the attention request command to send.
*/
void serv_got_attention(PurpleConnection *gc, const char *who, guint type_code);
@@ -108,7 +108,7 @@ void serv_got_alias(PurpleConnection *gc, const char *who, const char *alias);
* aliases are the aliases or display names that buddies set for themselves.
*
* @param gc The connection on which the alias was received.
- * @param who The screen name of the buddy whose alias was received.
+ * @param who The name of the buddy whose alias was received.
* @param alias The alias that was received.
*/
void purple_serv_got_private_alias(PurpleConnection *gc, const char *who, const char *alias);
@@ -180,7 +180,7 @@ PurpleConversation *serv_got_joined_chat(PurpleConnection *gc,
* function should be g_str_equal().
*/
void purple_serv_got_join_chat_failed(PurpleConnection *gc, GHashTable *data);
-
+
void serv_got_chat_left(PurpleConnection *g, int id);
void serv_got_chat_in(PurpleConnection *g, int id, const char *who,
PurpleMessageFlags flags, const char *message, time_t mtime);
diff --git a/libpurple/signals.c b/libpurple/signals.c
index 26a3aa9054..bcde34727c 100644
--- a/libpurple/signals.c
+++ b/libpurple/signals.c
@@ -487,7 +487,7 @@ purple_signal_emit_vargs(void *instance, const char *signal, va_list args)
}
#ifdef HAVE_DBUS
- purple_dbus_signal_emit_purple(signal, signal_data->num_values,
+ purple_dbus_signal_emit_purple(signal, signal_data->num_values,
signal_data->values, args);
#endif /* HAVE_DBUS */
@@ -539,7 +539,7 @@ purple_signal_emit_vargs_return_1(void *instance, const char *signal,
#ifdef HAVE_DBUS
G_VA_COPY(tmp, args);
- purple_dbus_signal_emit_purple(signal, signal_data->num_values,
+ purple_dbus_signal_emit_purple(signal, signal_data->num_values,
signal_data->values, tmp);
va_end(tmp);
#endif /* HAVE_DBUS */
@@ -975,6 +975,26 @@ purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_UINT(
}
void
+purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER_POINTER(
+ PurpleCallback cb, va_list args, void *data, void **return_val)
+{
+ gboolean ret_val;
+ void *arg1 = va_arg(args, void *);
+ void *arg2 = va_arg(args, void *);
+ void *arg3 = va_arg(args, void *);
+ void *arg4 = va_arg(args, void *);
+ void *arg5 = va_arg(args, void *);
+ void *arg6 = va_arg(args, void *);
+
+ ret_val =
+ ((gboolean (*)(void *, void *, void *, void *, void *, void *, void *))cb)(
+ arg1, arg2, arg3, arg4, arg5, arg6, data);
+
+ if (return_val != NULL)
+ *return_val = GINT_TO_POINTER(ret_val);
+}
+
+void
purple_marshal_BOOLEAN__INT_POINTER(PurpleCallback cb, va_list args, void *data,
void **return_val)
{
diff --git a/libpurple/signals.h b/libpurple/signals.h
index 3a104c15fa..57bb7e90f3 100644
--- a/libpurple/signals.h
+++ b/libpurple/signals.h
@@ -137,7 +137,7 @@ gulong purple_signal_connect_priority(void *instance, const char *signal,
/**
* Connects a signal handler to a signal for a particular object.
* (Its priority defaults to 0, aka #PURPLE_SIGNAL_PRIORITY_DEFAULT.)
- *
+ *
* Take care not to register a handler function twice. Purple will
* not correct any mistakes for you in this area.
*
@@ -349,6 +349,8 @@ void purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER(
PurpleCallback cb, va_list args, void *data, void **return_val);
void purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_UINT(
PurpleCallback cb, va_list args, void *data, void **return_val);
+void purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER_POINTER(
+ PurpleCallback cb, va_list args, void *data, void **return_val);
void purple_marshal_BOOLEAN__INT_POINTER(
PurpleCallback cb, va_list args, void *data, void **return_val);
diff --git a/libpurple/smiley.c b/libpurple/smiley.c
index 8bcb8e935f..2c08b5994b 100644
--- a/libpurple/smiley.c
+++ b/libpurple/smiley.c
@@ -722,7 +722,7 @@ purple_smiley_new_from_file(const char *shortcut, const char *filepath)
smiley = purple_smiley_new_from_stream(shortcut, smiley_data,
smiley_data_len);
}
-
+
return smiley;
}
diff --git a/libpurple/smiley.h b/libpurple/smiley.h
index ecb4385b6b..8d96fddd0e 100644
--- a/libpurple/smiley.h
+++ b/libpurple/smiley.h
@@ -61,44 +61,41 @@ extern "C" {
/*@{*/
/**
- * GObject foo.
+ * GObject-fu.
* @internal.
*/
GType purple_smiley_get_type(void);
/**
- * Creates a new custom smiley structure and populates it.
+ * Creates a new custom smiley from a PurpleStoredImage.
*
- * If a custom smiley with the informed shortcut already exist, it
+ * If a custom smiley with the given shortcut already exists, it
* will be automaticaly returned.
*
* @param img The image associated with the smiley.
- * @param shortcut The custom smiley associated shortcut.
+ * @param shortcut The associated shortcut (e.g. "(homer)").
*
- * @return The custom smiley structure filled up.
+ * @return The custom smiley.
*/
PurpleSmiley *
purple_smiley_new(PurpleStoredImage *img, const char *shortcut);
/**
- * Creates a new custom smiley structure and populates it.
+ * Creates a new custom smiley, reading the image data from a file.
*
- * The data is retrieved from an already existent file.
- *
- * If a custom smiley with the informed shortcut already exist, it
+ * If a custom smiley with the given shortcut already exists, it
* will be automaticaly returned.
*
- * @param shortcut The custom smiley associated shortcut.
- * @param filepath The image file to be imported to a
- * new custom smiley.
+ * @param shortcut The associated shortcut (e.g. "(homer)").
+ * @param filepath The image file.
*
- * @return The custom smiley structure filled up.
+ * @return The custom smiley.
*/
PurpleSmiley *
purple_smiley_new_from_file(const char *shortcut, const char *filepath);
/**
- * Destroy the custom smiley and release the associated resources.
+ * Destroys the custom smiley and release the associated resources.
*
* @param smiley The custom smiley.
*/
@@ -109,32 +106,28 @@ purple_smiley_delete(PurpleSmiley *smiley);
* Changes the custom smiley's shortcut.
*
* @param smiley The custom smiley.
- * @param shortcut The custom smiley associated shortcut.
+ * @param shortcut The new shortcut. A custom smiley with this shortcut
+ * cannot already be in use.
*
- * @return TRUE whether the shortcut is not associated with another
- * custom smiley and the parameters are valid. FALSE otherwise.
+ * @return TRUE if the shortcut was changed. FALSE otherwise.
*/
gboolean
purple_smiley_set_shortcut(PurpleSmiley *smiley, const char *shortcut);
/**
- * Changes the custom smiley's data.
- *
- * When the filename controling is made outside this API, the param
- * #keepfilename must be TRUE.
- * Otherwise, the file and filename will be regenerated, and the
- * old one will be removed.
+ * Changes the custom smiley's image data.
*
* @param smiley The custom smiley.
- * @param smiley_data The custom smiley data.
- * @param smiley_data_len The custom smiley data length.
+ * @param smiley_data The custom smiley data, which the smiley code
+ * takes ownership of and will free.
+ * @param smiley_data_len The length of the data in @a smiley_data.
*/
void
purple_smiley_set_data(PurpleSmiley *smiley, guchar *smiley_data,
size_t smiley_data_len);
/**
- * Returns the custom smiley's associated shortcut.
+ * Returns the custom smiley's associated shortcut (e.g. "(homer)").
*
* @param smiley The custom smiley.
*
@@ -155,11 +148,11 @@ const char *purple_smiley_get_checksum(const PurpleSmiley *smiley);
* Returns the PurpleStoredImage with the reference counter incremented.
*
* The returned PurpleStoredImage reference counter must be decremented
- * after use.
+ * when the caller is done using it.
*
* @param smiley The custom smiley.
*
- * @return A PurpleStoredImage reference.
+ * @return A PurpleStoredImage.
*/
PurpleStoredImage *purple_smiley_get_stored_image(const PurpleSmiley *smiley);
@@ -167,7 +160,7 @@ PurpleStoredImage *purple_smiley_get_stored_image(const PurpleSmiley *smiley);
* Returns the custom smiley's data.
*
* @param smiley The custom smiley.
- * @param len If not @c NULL, the length of the icon data returned
+ * @param len If not @c NULL, the length of the image data returned
* will be set in the location pointed to by this.
*
* @return A pointer to the custom smiley data.
@@ -194,6 +187,8 @@ const char *purple_smiley_get_extension(const PurpleSmiley *smiley);
* directly. If you find yourself wanting to use this function, think
* very long and hard about it, and then don't.
*
+ * Think some more.
+ *
* @param smiley The custom smiley.
*
* @return A full path to the file, or @c NULL under various conditions.
@@ -210,7 +205,8 @@ char *purple_smiley_get_full_path(PurpleSmiley *smiley);
/*@{*/
/**
- * Returns a list of all custom smileys. The caller should free the list.
+ * Returns a list of all custom smileys. The caller is responsible for freeing
+ * the list.
*
* @return A list of all custom smileys.
*/
@@ -218,23 +214,21 @@ GList *
purple_smileys_get_all(void);
/**
- * Returns the custom smiley given it's shortcut.
+ * Returns a custom smiley given its shortcut.
*
* @param shortcut The custom smiley's shortcut.
*
- * @return The custom smiley (with a reference for the caller) if found,
- * or @c NULL if not found.
+ * @return The custom smiley if found, or @c NULL if not found.
*/
PurpleSmiley *
purple_smileys_find_by_shortcut(const char *shortcut);
/**
- * Returns the custom smiley given it's checksum.
+ * Returns a custom smiley given its checksum.
*
* @param checksum The custom smiley's checksum.
*
- * @return The custom smiley (with a reference for the caller) if found,
- * or @c NULL if not found.
+ * @return The custom smiley if found, or @c NULL if not found.
*/
PurpleSmiley *
purple_smileys_find_by_checksum(const char *checksum);
@@ -242,10 +236,9 @@ purple_smileys_find_by_checksum(const char *checksum);
/**
* Returns the directory used to store custom smiley cached files.
*
- * The default directory is PURPLEDIR/smileys, unless otherwise specified
- * by purple_buddy_icons_set_cache_dir().
+ * The default directory is PURPLEDIR/custom_smiley.
*
- * @return The directory to store custom smyles cached files to.
+ * @return The directory in which to store custom smileys cached files.
*/
const char *purple_smileys_get_storing_dir(void);
diff --git a/libpurple/sound-theme-loader.c b/libpurple/sound-theme-loader.c
new file mode 100644
index 0000000000..8a9d7fe875
--- /dev/null
+++ b/libpurple/sound-theme-loader.c
@@ -0,0 +1,111 @@
+/*
+ * SoundThemeLoader for libpurple
+ *
+ * Pidgin is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#include "internal.h"
+#include "sound-theme-loader.h"
+#include "sound-theme.h"
+#include "util.h"
+#include "xmlnode.h"
+
+/*****************************************************************************
+ * Sound Theme Builder
+ *****************************************************************************/
+
+static PurpleTheme *
+purple_sound_loader_build(const gchar *dir)
+{
+ xmlnode *root_node = NULL, *sub_node;
+ gchar *filename_full, *data;
+ PurpleSoundTheme *theme = NULL;
+
+ /* Find the theme file */
+ g_return_val_if_fail(dir != NULL, NULL);
+ filename_full = g_build_filename(dir, "theme.xml", NULL);
+
+ if (g_file_test(filename_full, G_FILE_TEST_IS_REGULAR))
+ root_node = xmlnode_from_file(dir, "theme.xml", "sound themes", "sound-theme-loader");
+
+ g_free(filename_full);
+ g_return_val_if_fail(root_node != NULL, NULL);
+
+ /* Parse the tree */
+ sub_node = xmlnode_get_child(root_node, "description");
+ data = xmlnode_get_data(sub_node);
+
+ if (xmlnode_get_attrib(root_node, "name") != NULL) {
+ theme = g_object_new(PURPLE_TYPE_SOUND_THEME,
+ "type", "sound",
+ "name", xmlnode_get_attrib(root_node, "name"),
+ "author", xmlnode_get_attrib(root_node, "author"),
+ "image", xmlnode_get_attrib(root_node, "image"),
+ "directory", dir,
+ "description", data, NULL);
+
+ sub_node = xmlnode_get_child(root_node, "event");
+
+ while (sub_node) {
+ purple_sound_theme_set_file(theme,
+ xmlnode_get_attrib(sub_node, "name"),
+ xmlnode_get_attrib(sub_node, "file"));
+ sub_node = xmlnode_get_next_twin(sub_node);
+ }
+ }
+
+ xmlnode_free(root_node);
+ g_free(data);
+ return PURPLE_THEME(theme);
+}
+
+/******************************************************************************
+ * GObject Stuff
+ *****************************************************************************/
+
+static void
+purple_sound_theme_loader_class_init(PurpleSoundThemeLoaderClass *klass)
+{
+ PurpleThemeLoaderClass *loader_klass = PURPLE_THEME_LOADER_CLASS(klass);
+
+ loader_klass->purple_theme_loader_build = purple_sound_loader_build;
+}
+
+GType
+purple_sound_theme_loader_get_type(void)
+{
+ static GType type = 0;
+ if (type == 0) {
+ static const GTypeInfo info = {
+ sizeof(PurpleSoundThemeLoaderClass),
+ NULL, /* base_init */
+ NULL, /* base_finalize */
+ (GClassInitFunc)purple_sound_theme_loader_class_init, /* class_init */
+ NULL, /* class_finalize */
+ NULL, /* class_data */
+ sizeof(PurpleSoundThemeLoader),
+ 0, /* n_preallocs */
+ NULL, /* instance_init */
+ NULL, /* value table */
+ };
+ type = g_type_register_static(PURPLE_TYPE_THEME_LOADER,
+ "PurpleSoundThemeLoader", &info, 0);
+ }
+ return type;
+}
diff --git a/libpurple/sound-theme-loader.h b/libpurple/sound-theme-loader.h
new file mode 100644
index 0000000000..9eb927b156
--- /dev/null
+++ b/libpurple/sound-theme-loader.h
@@ -0,0 +1,71 @@
+/**
+ * @file sound-theme-loader.h Purple Sound Theme Loader Class API
+ */
+
+/* purple
+ *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#ifndef PURPLE_SOUND_THEME_LOADER_H
+#define PURPLE_SOUND_THEME_LOADER_H
+
+#include <glib.h>
+#include <glib-object.h>
+#include "theme-loader.h"
+
+/**
+ * A purple sound theme loader. extends PurpleThemeLoader (theme-loader.h)
+ * This is a class designed to build sound themes
+ *
+ * PurpleSoundThemeLoader is a GObject.
+ */
+typedef struct _PurpleSoundThemeLoader PurpleSoundThemeLoader;
+typedef struct _PurpleSoundThemeLoaderClass PurpleSoundThemeLoaderClass;
+
+#define PURPLE_TYPE_SOUND_THEME_LOADER (purple_sound_theme_loader_get_type())
+#define PURPLE_SOUND_THEME_LOADER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PURPLE_TYPE_SOUND_THEME_LOADER, PurpleSoundThemeLoader))
+#define PURPLE_SOUND_THEME_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), PURPLE_TYPE_SOUND_THEME_LOADER, PurpleSoundThemeLoaderClass))
+#define PURPLE_IS_SOUND_THEME_LOADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), PURPLE_TYPE_SOUND_THEME_LOADER))
+#define PURPLE_IS_SOUND_THEME_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), PURPLE_TYPE_SOUND_THEME_LOADER))
+#define PURPLE_SOUND_THEME_LOADER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), PURPLE_TYPE_SOUND_THEME_LOADER, PurpleSoundThemeLoaderClass))
+
+struct _PurpleSoundThemeLoader
+{
+ PurpleThemeLoader parent;
+};
+
+struct _PurpleSoundThemeLoaderClass
+{
+ PurpleThemeLoaderClass parent_class;
+};
+
+/**************************************************************************/
+/** @name Purple Theme-Loader API */
+/**************************************************************************/
+G_BEGIN_DECLS
+
+/**
+ * GObject foo.
+ * @internal.
+ */
+GType purple_sound_theme_loader_get_type(void);
+
+G_END_DECLS
+#endif /* PURPLE_SOUND_THEME_LOADER_H */
diff --git a/libpurple/sound-theme.c b/libpurple/sound-theme.c
new file mode 100644
index 0000000000..4918f40758
--- /dev/null
+++ b/libpurple/sound-theme.c
@@ -0,0 +1,158 @@
+/*
+ * Sound Themes for libpurple
+ *
+ * Pidgin is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#include "internal.h"
+#include "sound-theme.h"
+
+#define PURPLE_SOUND_THEME_GET_PRIVATE(Gobject) \
+ ((PurpleSoundThemePrivate *) ((PURPLE_SOUND_THEME(Gobject))->priv))
+
+/******************************************************************************
+ * Structs
+ *****************************************************************************/
+
+typedef struct {
+ /* used to store filenames of diffrent sounds */
+ GHashTable *sound_files;
+} PurpleSoundThemePrivate;
+
+/******************************************************************************
+ * Globals
+ *****************************************************************************/
+
+static GObjectClass *parent_class = NULL;
+
+/******************************************************************************
+ * Enums
+ *****************************************************************************/
+
+/******************************************************************************
+ * GObject Stuff
+ *****************************************************************************/
+
+static void
+purple_sound_theme_init(GTypeInstance *instance,
+ gpointer klass)
+{
+ PurpleSoundThemePrivate *priv;
+
+ (PURPLE_SOUND_THEME(instance))->priv = g_new0(PurpleSoundThemePrivate, 1);
+
+ priv = PURPLE_SOUND_THEME_GET_PRIVATE(instance);
+
+ priv->sound_files = g_hash_table_new_full(g_str_hash,
+ g_str_equal, g_free, g_free);
+}
+
+static void
+purple_sound_theme_finalize(GObject *obj)
+{
+ PurpleSoundThemePrivate *priv;
+
+ priv = PURPLE_SOUND_THEME_GET_PRIVATE(obj);
+
+ g_hash_table_destroy(priv->sound_files);
+
+ parent_class->finalize(obj);
+}
+
+static void
+purple_sound_theme_class_init(PurpleSoundThemeClass *klass)
+{
+ GObjectClass *obj_class = G_OBJECT_CLASS(klass);
+
+ parent_class = g_type_class_peek_parent(klass);
+
+ obj_class->finalize = purple_sound_theme_finalize;
+}
+
+GType
+purple_sound_theme_get_type(void)
+{
+ static GType type = 0;
+ if (type == 0) {
+ static const GTypeInfo info = {
+ sizeof(PurpleSoundThemeClass),
+ NULL, /* base_init */
+ NULL, /* base_finalize */
+ (GClassInitFunc)purple_sound_theme_class_init, /* class_init */
+ NULL, /* class_finalize */
+ NULL, /* class_data */
+ sizeof(PurpleSoundTheme),
+ 0, /* n_preallocs */
+ purple_sound_theme_init, /* instance_init */
+ NULL, /* value table */
+ };
+ type = g_type_register_static(PURPLE_TYPE_THEME,
+ "PurpleSoundTheme", &info, 0);
+ }
+ return type;
+}
+
+/*****************************************************************************
+ * Public API functions
+ *****************************************************************************/
+
+const gchar *
+purple_sound_theme_get_file(PurpleSoundTheme *theme,
+ const gchar *event)
+{
+ PurpleSoundThemePrivate *priv;
+
+ g_return_val_if_fail(PURPLE_IS_SOUND_THEME(theme), NULL);
+
+ priv = PURPLE_SOUND_THEME_GET_PRIVATE(theme);
+
+ return g_hash_table_lookup(priv->sound_files, event);
+}
+
+gchar *
+purple_sound_theme_get_file_full(PurpleSoundTheme *theme,
+ const gchar *event)
+{
+ const gchar *filename;
+
+ g_return_val_if_fail(PURPLE_IS_SOUND_THEME(theme), NULL);
+
+ filename = purple_sound_theme_get_file(theme, event);
+
+ g_return_val_if_fail(filename, NULL);
+
+ return g_build_filename(purple_theme_get_dir(PURPLE_THEME(theme)), filename, NULL);
+}
+
+void
+purple_sound_theme_set_file(PurpleSoundTheme *theme,
+ const gchar *event,
+ const gchar *filename)
+{
+ PurpleSoundThemePrivate *priv;
+ g_return_if_fail(PURPLE_IS_SOUND_THEME(theme));
+
+ priv = PURPLE_SOUND_THEME_GET_PRIVATE(theme);
+
+ if (filename != NULL)
+ g_hash_table_replace(priv->sound_files,
+ g_strdup(event), g_strdup(filename));
+ else
+ g_hash_table_remove(priv->sound_files, event);
+}
diff --git a/libpurple/sound-theme.h b/libpurple/sound-theme.h
new file mode 100644
index 0000000000..3814e4527f
--- /dev/null
+++ b/libpurple/sound-theme.h
@@ -0,0 +1,108 @@
+/**
+ * @file sound-theme.h Purple Sound Theme Abstact Class API
+ */
+
+/* purple
+ *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#ifndef PURPLE_SOUND_THEME_H
+#define PURPLE_SOUND_THEME_H
+
+#include <glib.h>
+#include <glib-object.h>
+#include "theme.h"
+#include "sound.h"
+
+/**
+ * extends PurpleTheme (theme.h)
+ * A purple sound theme.
+ * This is an object for Purple to represent a sound theme.
+ *
+ * PurpleSoundTheme is a PurpleTheme Object.
+ */
+typedef struct _PurpleSoundTheme PurpleSoundTheme;
+typedef struct _PurpleSoundThemeClass PurpleSoundThemeClass;
+
+#define PURPLE_TYPE_SOUND_THEME (purple_sound_theme_get_type())
+#define PURPLE_SOUND_THEME(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PURPLE_TYPE_SOUND_THEME, PurpleSoundTheme))
+#define PURPLE_SOUND_THEME_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), PURPLE_TYPE_SOUND_THEME, PurpleSoundThemeClass))
+#define PURPLE_IS_SOUND_THEME(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), PURPLE_TYPE_SOUND_THEME))
+#define PURPLE_IS_SOUND_THEME_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), PURPLE_TYPE_SOUND_THEME))
+#define PURPLE_SOUND_THEME_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), PURPLE_TYPE_SOUND_THEME, PurpleSoundThemeClass))
+
+struct _PurpleSoundTheme
+{
+ PurpleTheme parent;
+ gpointer priv;
+};
+
+struct _PurpleSoundThemeClass
+{
+ PurpleThemeClass parent_class;
+};
+
+/**************************************************************************/
+/** @name Purple Sound Theme API */
+/**************************************************************************/
+G_BEGIN_DECLS
+
+/**
+ * GObject foo.
+ * @internal.
+ */
+GType purple_sound_theme_get_type(void);
+
+/**
+ * Returns a copy of the filename for the sound event.
+ *
+ * @param theme The theme.
+ * @param event The purple sound event to look up.
+ *
+ * @returns The filename of the sound event.
+ */
+const gchar *purple_sound_theme_get_file(PurpleSoundTheme *theme,
+ const gchar *event);
+
+/**
+ * Returns a copy of the directory and filename for the sound event
+ *
+ * @param theme The theme.
+ * @param event The purple sound event to look up
+ *
+ * @returns The directory + '/' + filename of the sound event. This is
+ * a newly allocated string that should be freed with g_free.
+ */
+gchar *purple_sound_theme_get_file_full(PurpleSoundTheme *theme,
+ const gchar *event);
+
+/**
+ * Sets the filename for a given sound event
+ *
+ * @param theme The theme.
+ * @param event the purple sound event to look up
+ * @param filename the name of the file to be used for the event
+ */
+void purple_sound_theme_set_file(PurpleSoundTheme *theme,
+ const gchar *event,
+ const gchar *filename);
+
+G_END_DECLS
+#endif /* PURPLE_SOUND_THEME_H */
diff --git a/libpurple/sound.c b/libpurple/sound.c
index 86eeade167..4cb4ebb013 100644
--- a/libpurple/sound.c
+++ b/libpurple/sound.c
@@ -25,6 +25,8 @@
#include "blist.h"
#include "prefs.h"
#include "sound.h"
+#include "sound-theme-loader.h"
+#include "theme-manager.h"
static PurpleSoundUiOps *sound_ui_ops = NULL;
@@ -134,6 +136,8 @@ purple_sound_init()
purple_prefs_add_none("/purple/sound");
purple_prefs_add_int("/purple/sound/while_status", STATUS_AVAILABLE);
memset(last_played, 0, sizeof(last_played));
+
+ purple_theme_manager_register_type(g_object_new(PURPLE_TYPE_SOUND_THEME_LOADER, "type", "sound", NULL));
}
void
diff --git a/libpurple/sslconn.c b/libpurple/sslconn.c
index fb921a53ba..c44bb54c06 100644
--- a/libpurple/sslconn.c
+++ b/libpurple/sslconn.c
@@ -216,7 +216,7 @@ purple_ssl_connect_with_host_fd(PurpleAccount *account, int fd,
/* TODO: Move this elsewhere */
gsc->verifier = purple_certificate_find_verifier("x509","tls_cached");
-
+
ops = purple_ssl_get_ops();
ops->connectfunc(gsc);
diff --git a/libpurple/sslconn.h b/libpurple/sslconn.h
index 4c8a912618..d7378f8e42 100644
--- a/libpurple/sslconn.h
+++ b/libpurple/sslconn.h
@@ -66,7 +66,7 @@ struct _PurpleSslConnection
/** File descriptor used to refer to the socket */
int fd;
- /** Glib event source ID; used to refer to the received data callback
+ /** Glib event source ID; used to refer to the received data callback
* in the glib eventloop */
guint inpa;
/** Data related to the underlying TCP connection */
@@ -134,7 +134,7 @@ typedef struct
* list can be guaranteed.
*/
GList * (* get_peer_certificates)(PurpleSslConnection * gsc);
-
+
void (*_purple_reserved2)(void);
void (*_purple_reserved3)(void);
void (*_purple_reserved4)(void);
diff --git a/libpurple/status.c b/libpurple/status.c
index 5feb311e7d..7d91ddd5e4 100644
--- a/libpurple/status.c
+++ b/libpurple/status.c
@@ -23,6 +23,8 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
*/
+#define _PURPLE_STATUS_C_
+
#include "internal.h"
#include "blist.h"
@@ -203,7 +205,7 @@ purple_primitive_get_type_from_id(const char *id)
for (i = 0; i < PURPLE_STATUS_NUM_PRIMITIVES; i++)
{
- if (!strcmp(id, status_primitive_map[i].id))
+ if (purple_strequal(id, status_primitive_map[i].id))
return status_primitive_map[i].type;
}
@@ -451,7 +453,7 @@ purple_status_type_get_attr(const PurpleStatusType *status_type, const char *id)
{
PurpleStatusAttr *attr = (PurpleStatusAttr *)l->data;
- if (!strcmp(purple_status_attr_get_id(attr), id))
+ if (purple_strequal(purple_status_attr_get_id(attr), id))
return attr;
}
@@ -477,7 +479,7 @@ purple_status_type_find_with_id(GList *status_types, const char *id)
{
status_type = status_types->data;
- if (!strcmp(id, status_type->id))
+ if (purple_strequal(id, status_type->id))
return status_type;
status_types = status_types->next;
@@ -612,7 +614,8 @@ notify_buddy_status_update(PurpleBuddy *buddy, PurplePresence *presence,
if (old_status != NULL)
{
- tmp = g_strdup_printf(_("%s (%s) changed status from %s to %s"), buddy_alias, buddy->name,
+ tmp = g_strdup_printf(_("%s (%s) changed status from %s to %s"), buddy_alias,
+ purple_buddy_get_name(buddy),
purple_status_get_name(old_status),
purple_status_get_name(new_status));
logtmp = g_markup_escape_text(tmp, -1);
@@ -623,19 +626,21 @@ notify_buddy_status_update(PurpleBuddy *buddy, PurplePresence *presence,
if (purple_status_is_active(new_status))
{
- tmp = g_strdup_printf(_("%s (%s) is now %s"), buddy_alias, buddy->name,
+ tmp = g_strdup_printf(_("%s (%s) is now %s"), buddy_alias,
+ purple_buddy_get_name(buddy),
purple_status_get_name(new_status));
logtmp = g_markup_escape_text(tmp, -1);
}
else
{
- tmp = g_strdup_printf(_("%s (%s) is no longer %s"), buddy_alias, buddy->name,
+ tmp = g_strdup_printf(_("%s (%s) is no longer %s"), buddy_alias,
+ purple_buddy_get_name(buddy),
purple_status_get_name(new_status));
logtmp = g_markup_escape_text(tmp, -1);
}
}
- log = purple_account_get_log(buddy->account, FALSE);
+ log = purple_account_get_log(purple_buddy_get_account(buddy), FALSE);
if (log != NULL)
{
purple_log_write(log, PURPLE_MESSAGE_SYSTEM, buddy_alias,
@@ -779,12 +784,8 @@ purple_status_set_active_with_attrs_list(PurpleStatus *status, gboolean active,
{
const gchar *string_data = l->data;
l = l->next;
- if (((string_data == NULL) && (value->data.string_data == NULL)) ||
- ((string_data != NULL) && (value->data.string_data != NULL) &&
- !strcmp(string_data, value->data.string_data)))
- {
+ if (purple_strequal(string_data, value->data.string_data))
continue;
- }
purple_status_set_attr_string(status, id, string_data);
changed = TRUE;
}
@@ -1146,13 +1147,13 @@ purple_presence_new_for_buddy(PurpleBuddy *buddy)
PurpleAccount *account;
g_return_val_if_fail(buddy != NULL, NULL);
- account = buddy->account;
+ account = purple_buddy_get_account(buddy);
presence = purple_presence_new(PURPLE_PRESENCE_CONTEXT_BUDDY);
- presence->u.buddy.name = g_strdup(buddy->name);
- presence->u.buddy.account = buddy->account;
- presence->statuses = purple_prpl_get_statuses(buddy->account, presence);
+ presence->u.buddy.name = g_strdup(purple_buddy_get_name(buddy));
+ presence->u.buddy.account = account;
+ presence->statuses = purple_prpl_get_statuses(account, presence);
presence->u.buddy.buddy = buddy;
@@ -1248,12 +1249,13 @@ update_buddy_idle(PurpleBuddy *buddy, PurplePresence *presence,
time_t current_time, gboolean old_idle, gboolean idle)
{
PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
+ PurpleAccount *account = purple_buddy_get_account(buddy);
if (!old_idle && idle)
{
if (purple_prefs_get_bool("/purple/logging/log_system"))
{
- PurpleLog *log = purple_account_get_log(buddy->account, FALSE);
+ PurpleLog *log = purple_account_get_log(account, FALSE);
if (log != NULL)
{
@@ -1273,7 +1275,7 @@ update_buddy_idle(PurpleBuddy *buddy, PurplePresence *presence,
{
if (purple_prefs_get_bool("/purple/logging/log_system"))
{
- PurpleLog *log = purple_account_get_log(buddy->account, FALSE);
+ PurpleLog *log = purple_account_get_log(account, FALSE);
if (log != NULL)
{
@@ -1461,7 +1463,7 @@ purple_presence_get_status(const PurplePresence *presence, const char *status_id
{
PurpleStatus *temp_status = l->data;
- if (!strcmp(status_id, purple_status_get_id(temp_status)))
+ if (purple_strequal(status_id, purple_status_get_id(temp_status)))
status = temp_status;
}
diff --git a/libpurple/status.h b/libpurple/status.h
index a364a8a0fd..f79a1958cc 100644
--- a/libpurple/status.h
+++ b/libpurple/status.h
@@ -252,6 +252,7 @@ PurpleStatusType *purple_status_type_new_with_attrs(PurpleStatusPrimitive primit
*/
void purple_status_type_destroy(PurpleStatusType *status_type);
+#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_STATUS_C_)
/**
* Sets a status type's primary attribute.
*
@@ -261,10 +262,14 @@ void purple_status_type_destroy(PurpleStatusType *status_type);
*
* @param status_type The status type.
* @param attr_id The ID of the primary attribute.
+ *
+ * @deprecated This function isn't used and should be removed in 3.0.0.
*/
void purple_status_type_set_primary_attr(PurpleStatusType *status_type,
const char *attr_id);
+#endif
+#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_STATUS_C_)
/**
* Adds an attribute to a status type.
*
@@ -272,10 +277,16 @@ void purple_status_type_set_primary_attr(PurpleStatusType *status_type,
* @param id The ID of the attribute.
* @param name The name presented to the user.
* @param value The value type of this attribute.
+ *
+ * @deprecated This function isn't needed and should be removed in 3.0.0.
+ * Status type attributes should be set when the status type
+ * is created, in the call to purple_status_type_new_with_attrs.
*/
void purple_status_type_add_attr(PurpleStatusType *status_type, const char *id,
const char *name, PurpleValue *value);
+#endif
+#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_STATUS_C_)
/**
* Adds multiple attributes to a status type.
*
@@ -284,18 +295,29 @@ void purple_status_type_add_attr(PurpleStatusType *status_type, const char *id,
* @param name The description of the first attribute.
* @param value The value type of the first attribute attribute.
* @param ... Additional attribute information.
+ *
+ * @deprecated This function isn't needed and should be removed in 3.0.0.
+ * Status type attributes should be set when the status type
+ * is created, in the call to purple_status_type_new_with_attrs.
*/
void purple_status_type_add_attrs(PurpleStatusType *status_type, const char *id,
const char *name, PurpleValue *value, ...) G_GNUC_NULL_TERMINATED;
+#endif
+#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_STATUS_C_)
/**
* Adds multiple attributes to a status type using a va_list.
*
* @param status_type The status type to add the attribute to.
* @param args The va_list of attributes.
+ *
+ * @deprecated This function isn't needed and should be removed in 3.0.0.
+ * Status type attributes should be set when the status type
+ * is created, in the call to purple_status_type_new_with_attrs.
*/
void purple_status_type_add_attrs_vargs(PurpleStatusType *status_type,
va_list args);
+#endif
/**
* Returns the primitive type of a status type.
@@ -378,14 +400,18 @@ gboolean purple_status_type_is_exclusive(const PurpleStatusType *status_type);
*/
gboolean purple_status_type_is_available(const PurpleStatusType *status_type);
+#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_STATUS_C_)
/**
* Returns a status type's primary attribute ID.
*
* @param type The status type.
*
* @return The primary attribute's ID.
+ *
+ * @deprecated This function isn't used and should be removed in 3.0.0.
*/
const char *purple_status_type_get_primary_attr(const PurpleStatusType *type);
+#endif
/**
* Returns the attribute with the specified ID.
@@ -537,35 +563,50 @@ void purple_status_set_active_with_attrs(PurpleStatus *status, gboolean active,
void purple_status_set_active_with_attrs_list(PurpleStatus *status, gboolean active,
GList *attrs);
+#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_STATUS_C_)
/**
* Sets the boolean value of an attribute in a status with the specified ID.
*
* @param status The status.
* @param id The attribute ID.
* @param value The boolean value.
+ *
+ * @deprecated This function is only used by status.c and should be made
+ * static in 3.0.0.
*/
void purple_status_set_attr_boolean(PurpleStatus *status, const char *id,
gboolean value);
+#endif
+#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_STATUS_C_)
/**
* Sets the integer value of an attribute in a status with the specified ID.
*
* @param status The status.
* @param id The attribute ID.
* @param value The integer value.
+ *
+ * @deprecated This function is only used by status.c and should be made
+ * static in 3.0.0.
*/
void purple_status_set_attr_int(PurpleStatus *status, const char *id,
int value);
+#endif
+#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_STATUS_C_)
/**
* Sets the string value of an attribute in a status with the specified ID.
*
* @param status The status.
* @param id The attribute ID.
* @param value The string value.
+ *
+ * @deprecated This function is only used by status.c and should be made
+ * static in 3.0.0.
*/
void purple_status_set_attr_string(PurpleStatus *status, const char *id,
const char *value);
+#endif
/**
* Returns the status's type.
@@ -773,22 +814,31 @@ PurplePresence *purple_presence_new_for_buddy(PurpleBuddy *buddy);
*/
void purple_presence_destroy(PurplePresence *presence);
+#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_STATUS_C_)
/**
* Adds a status to a presence.
*
* @param presence The presence.
* @param status The status to add.
+ *
+ * @deprecated This function is only used by purple_presence_add_list,
+ * and both should be removed in 3.0.0.
*/
void purple_presence_add_status(PurplePresence *presence, PurpleStatus *status);
+#endif
+#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_STATUS_C_)
/**
* Adds a list of statuses to the presence.
*
* @param presence The presence.
* @param source_list The source list of statuses to add, which is not
* modified or freed by this function.
+ *
+ * @deprecated This function isn't used and should be removed in 3.0.0.
*/
void purple_presence_add_list(PurplePresence *presence, GList *source_list);
+#endif
/**
* Sets the active state of a status in a presence.
diff --git a/libpurple/stun.c b/libpurple/stun.c
index d28a04114d..8aad4cfdd3 100644
--- a/libpurple/stun.c
+++ b/libpurple/stun.c
@@ -341,6 +341,12 @@ static void hbn_cb(GSList *hosts, gpointer data, const char *error_message) {
}
if (!purple_network_listen_range(12108, 12208, SOCK_DGRAM, hbn_listen_cb, hosts)) {
+ while(hosts) {
+ hosts = g_slist_remove(hosts, hosts->data);
+ g_free(hosts->data);
+ hosts = g_slist_remove(hosts, hosts->data);
+ }
+
nattype.status = PURPLE_STUN_STATUS_UNKNOWN;
nattype.lookup_time = time(NULL);
do_callbacks();
@@ -388,9 +394,7 @@ PurpleStunNatDiscovery *purple_stun_discover(StunCallback cb) {
/** Deal with the server name having changed since we did the
lookup */
if (servername && strlen(servername) > 1
- && ((nattype.servername
- && strcmp(servername, nattype.servername))
- || !nattype.servername)) {
+ && !purple_strequal(servername, nattype.servername)) {
use_cached_result = FALSE;
}
diff --git a/libpurple/tests/test_util.c b/libpurple/tests/test_util.c
index de56591afb..9269e5e4ec 100644
--- a/libpurple/tests/test_util.c
+++ b/libpurple/tests/test_util.c
@@ -5,7 +5,7 @@
START_TEST(test_util_base16_encode)
{
- assert_string_equal_free("68656c6c6f2c20776f726c642100", purple_base16_encode("hello, world!", 14));
+ assert_string_equal_free("68656c6c6f2c20776f726c642100", purple_base16_encode((const unsigned char *)"hello, world!", 14));
}
END_TEST
@@ -14,14 +14,14 @@ START_TEST(test_util_base16_decode)
gsize sz = 0;
guchar *out = purple_base16_decode("21646c726f77202c6f6c6c656800", &sz);
fail_unless(sz == 14, NULL);
- fail_unless(strcmp("!dlrow ,olleh", out) == 0, NULL);
+ fail_unless(strcmp("!dlrow ,olleh", (const char *)out) == 0, NULL);
g_free(out);
}
END_TEST
START_TEST(test_util_base64_encode)
{
- assert_string_equal_free("Zm9ydHktdHdvAA==", purple_base64_encode("forty-two", 10));
+ assert_string_equal_free("Zm9ydHktdHdvAA==", purple_base64_encode((const unsigned char *)"forty-two", 10));
}
END_TEST
@@ -30,7 +30,7 @@ START_TEST(test_util_base64_decode)
gsize sz;
guchar *out = purple_base64_decode("b3d0LXl0cm9mAA==", &sz);
fail_unless(sz == 10, NULL);
- fail_unless(strcmp("owt-ytrof", out) == 0, NULL);
+ fail_unless(strcmp("owt-ytrof", (const char *)out) == 0, NULL);
g_free(out);
}
END_TEST
diff --git a/libpurple/theme-loader.c b/libpurple/theme-loader.c
new file mode 100644
index 0000000000..d50c28dec0
--- /dev/null
+++ b/libpurple/theme-loader.c
@@ -0,0 +1,183 @@
+/*
+ * ThemeLoaders for libpurple
+ *
+ * Pidgin is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#include "internal.h"
+#include "theme-loader.h"
+
+#define PURPLE_THEME_LOADER_GET_PRIVATE(PurpleThemeLoader) \
+ ((PurpleThemeLoaderPrivate *) ((PurpleThemeLoader)->priv))
+
+void purple_theme_loader_set_type_string(PurpleThemeLoader *loader, const gchar *type);
+
+/******************************************************************************
+ * Structs
+ *****************************************************************************/
+typedef struct {
+ gchar *type;
+} PurpleThemeLoaderPrivate;
+
+/******************************************************************************
+ * Globals
+ *****************************************************************************/
+
+static GObjectClass *parent_class = NULL;
+
+/******************************************************************************
+ * Enums
+ *****************************************************************************/
+
+enum {
+ PROP_ZERO = 0,
+ PROP_TYPE,
+};
+
+/******************************************************************************
+ * GObject Stuff *
+ *****************************************************************************/
+
+static void
+purple_theme_loader_get_property(GObject *obj, guint param_id, GValue *value,
+ GParamSpec *psec)
+{
+ PurpleThemeLoader *theme_loader = PURPLE_THEME_LOADER(obj);
+
+ switch (param_id) {
+ case PROP_TYPE:
+ g_value_set_string(value, purple_theme_loader_get_type_string(theme_loader));
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, psec);
+ break;
+ }
+}
+
+static void
+purple_theme_loader_set_property(GObject *obj, guint param_id, const GValue *value,
+ GParamSpec *psec)
+{
+ PurpleThemeLoader *loader = PURPLE_THEME_LOADER(obj);
+
+ switch (param_id) {
+ case PROP_TYPE:
+ purple_theme_loader_set_type_string(loader, g_value_get_string(value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, psec);
+ break;
+ }
+}
+
+static void
+purple_theme_loader_init(GTypeInstance *instance,
+ gpointer klass)
+{
+ PurpleThemeLoader *loader = PURPLE_THEME_LOADER(instance);
+ loader->priv = g_new0(PurpleThemeLoaderPrivate, 1);
+}
+
+static void
+purple_theme_loader_finalize(GObject *obj)
+{
+ PurpleThemeLoader *loader = PURPLE_THEME_LOADER(obj);
+ PurpleThemeLoaderPrivate *priv = PURPLE_THEME_LOADER_GET_PRIVATE(loader);
+
+ g_free(priv->type);
+
+ parent_class->finalize(obj);
+}
+
+static void
+purple_theme_loader_class_init(PurpleThemeLoaderClass *klass)
+{
+ GObjectClass *obj_class = G_OBJECT_CLASS(klass);
+ GParamSpec *pspec;
+
+ parent_class = g_type_class_peek_parent(klass);
+
+ obj_class->get_property = purple_theme_loader_get_property;
+ obj_class->set_property = purple_theme_loader_set_property;
+ obj_class->finalize = purple_theme_loader_finalize;
+
+ /* TYPE STRING (read only) */
+ pspec = g_param_spec_string("type", "Type",
+ "The string represtenting the type of the theme",
+ NULL,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY);
+ g_object_class_install_property(obj_class, PROP_TYPE, pspec);
+}
+
+GType
+purple_theme_loader_get_type(void)
+{
+ static GType type = 0;
+ if (type == 0) {
+ static const GTypeInfo info = {
+ sizeof(PurpleThemeLoaderClass),
+ NULL, /* base_init */
+ NULL, /* base_finalize */
+ (GClassInitFunc)purple_theme_loader_class_init, /* class_init */
+ NULL, /* class_finalize */
+ NULL, /* class_data */
+ sizeof(PurpleThemeLoader),
+ 0, /* n_preallocs */
+ purple_theme_loader_init, /* instance_init */
+ NULL, /* value table */
+ };
+ type = g_type_register_static(G_TYPE_OBJECT,
+ "PurpleThemeLoader", &info, G_TYPE_FLAG_ABSTRACT);
+ }
+ return type;
+}
+
+/*****************************************************************************
+ * Public API functions
+ *****************************************************************************/
+
+const gchar *
+purple_theme_loader_get_type_string(PurpleThemeLoader *theme_loader)
+{
+ PurpleThemeLoaderPrivate *priv = NULL;
+
+ g_return_val_if_fail(PURPLE_IS_THEME_LOADER(theme_loader), NULL);
+
+ priv = PURPLE_THEME_LOADER_GET_PRIVATE(theme_loader);
+ return priv->type;
+}
+
+/* < private > */
+void
+purple_theme_loader_set_type_string(PurpleThemeLoader *loader, const gchar *type)
+{
+ PurpleThemeLoaderPrivate *priv;
+
+ g_return_if_fail(PURPLE_IS_THEME_LOADER(loader));
+
+ priv = PURPLE_THEME_LOADER_GET_PRIVATE(loader);
+
+ g_free(priv->type);
+ priv->type = g_strdup(type);
+}
+
+PurpleTheme *
+purple_theme_loader_build(PurpleThemeLoader *loader, const gchar *dir)
+{
+ return PURPLE_THEME_LOADER_GET_CLASS(loader)->purple_theme_loader_build(dir);
+}
diff --git a/libpurple/theme-loader.h b/libpurple/theme-loader.h
new file mode 100644
index 0000000000..5496f2c7e2
--- /dev/null
+++ b/libpurple/theme-loader.h
@@ -0,0 +1,93 @@
+/**
+ * @file theme-loader.h Purple Theme Loader Abstact Class API
+ */
+
+/* purple
+ *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#ifndef PURPLE_THEME_LOADER_H
+#define PURPLE_THEME_LOADER_H
+
+#include <glib.h>
+#include <glib-object.h>
+#include "theme.h"
+
+/**
+ * A purple theme loader.
+ * This is an abstract class for Purple to use with the Purple theme manager.
+ * The loader is responsible for building each type of theme
+ *
+ * PurpleThemeLoader is a GObject.
+ */
+typedef struct _PurpleThemeLoader PurpleThemeLoader;
+typedef struct _PurpleThemeLoaderClass PurpleThemeLoaderClass;
+
+#define PURPLE_TYPE_THEME_LOADER (purple_theme_loader_get_type())
+#define PURPLE_THEME_LOADER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PURPLE_TYPE_THEME_LOADER, PurpleThemeLoader))
+#define PURPLE_THEME_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), PURPLE_TYPE_THEME_LOADER, PurpleThemeLoaderClass))
+#define PURPLE_IS_THEME_LOADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), PURPLE_TYPE_THEME_LOADER))
+#define PURPLE_IS_THEME_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), PURPLE_TYPE_THEME_LOADER))
+#define PURPLE_THEME_LOADER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), PURPLE_TYPE_THEME_LOADER, PurpleThemeLoaderClass))
+
+struct _PurpleThemeLoader
+{
+ GObject parent;
+ gpointer priv;
+};
+
+struct _PurpleThemeLoaderClass
+{
+ GObjectClass parent_class;
+ PurpleTheme *((*purple_theme_loader_build)(const gchar*));
+};
+
+/**************************************************************************/
+/** @name Purple Theme-Loader API */
+/**************************************************************************/
+G_BEGIN_DECLS
+
+/**
+ * GObject foo.
+ * @internal.
+ */
+GType purple_theme_loader_get_type(void);
+
+/**
+ * Returns the string represtenting the type of the theme loader
+ *
+ * @param self The theme loader
+ *
+ * @returns The string represting this type
+ */
+const gchar *purple_theme_loader_get_type_string(PurpleThemeLoader *self);
+
+/**
+ * Creates a new PurpleTheme
+ *
+ * @param loader The theme loader
+ * @param dir The directory containing the theme
+ *
+ * @returns A PurpleTheme containing the information from the directory
+ */
+PurpleTheme *purple_theme_loader_build(PurpleThemeLoader *loader, const gchar *dir);
+
+G_END_DECLS
+#endif /* PURPLE_THEME_LOADER_H */
diff --git a/libpurple/theme-manager.c b/libpurple/theme-manager.c
new file mode 100644
index 0000000000..d0938dd461
--- /dev/null
+++ b/libpurple/theme-manager.c
@@ -0,0 +1,296 @@
+/*
+ * Themes for libpurple
+ *
+ * Pidgin is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#include <glib.h>
+#include <string.h>
+
+#include "internal.h"
+#include "theme-manager.h"
+#include "util.h"
+
+/******************************************************************************
+ * Globals
+ *****************************************************************************/
+
+static GHashTable *theme_table = NULL;
+
+/*****************************************************************************
+ * GObject Stuff
+ ****************************************************************************/
+
+GType
+purple_theme_manager_get_type(void)
+{
+ static GType type = 0;
+ if (type == 0) {
+ static const GTypeInfo info = {
+ sizeof(PurpleThemeManagerClass),
+ NULL, /* base_init */
+ NULL, /* base_finalize */
+ NULL, /* class_init */
+ NULL, /* class_finalize */
+ NULL, /* class_data */
+ sizeof(PurpleThemeManager),
+ 0, /* n_preallocs */
+ NULL, /* instance_init */
+ NULL, /* Value Table */
+ };
+ type = g_type_register_static(G_TYPE_OBJECT,
+ "PurpleThemeManager", &info, 0);
+ }
+ return type;
+}
+
+/******************************************************************************
+ * Helpers
+ *****************************************************************************/
+
+/* makes a key of <type> + '/' + <name> */
+static gchar *
+purple_theme_manager_make_key(const gchar *name, const gchar *type)
+{
+ g_return_val_if_fail(name && *name, NULL);
+ g_return_val_if_fail(type && *type, NULL);
+ return g_strconcat(type, "/", name, NULL);
+}
+
+/* returns TRUE if theme is of type "user_data" */
+static gboolean
+purple_theme_manager_is_theme_type(gchar *key,
+ gpointer value,
+ gchar *user_data)
+{
+ return g_str_has_prefix(key, g_strconcat(user_data, "/", NULL));
+}
+
+static gboolean
+purple_theme_manager_is_theme(gchar *key,
+ gpointer value,
+ gchar *user_data)
+{
+ return PURPLE_IS_THEME(value);
+}
+
+static void
+purple_theme_manager_function_wrapper(gchar *key,
+ gpointer value,
+ PTFunc user_data)
+{
+ if (PURPLE_IS_THEME(value))
+ (* user_data)(value);
+}
+
+static void
+purple_theme_manager_build_dir(const gchar *root)
+{
+ gchar *purple_dir, *theme_dir;
+ const gchar *name = NULL, *type = NULL;
+ GDir *rdir, *tdir;
+ PurpleThemeLoader *loader;
+
+ rdir = g_dir_open(root, 0, NULL);
+
+ if (!rdir)
+ return;
+
+ /* Parses directory by root/name/purple/type */
+ while ((name = g_dir_read_name(rdir))) {
+ purple_dir = g_build_filename(root, name, "purple", NULL);
+ tdir = g_dir_open(purple_dir, 0, NULL);
+
+ if (!tdir) {
+ g_free(purple_dir);
+
+ continue;
+ }
+
+ while ((type = g_dir_read_name(tdir))) {
+ if ((loader = g_hash_table_lookup(theme_table, type))) {
+ PurpleTheme *theme = NULL;
+
+ theme_dir = g_build_filename(purple_dir, type, NULL);
+
+ theme = purple_theme_loader_build(loader, theme_dir);
+ g_free(theme_dir);
+
+ if (PURPLE_IS_THEME(theme))
+ purple_theme_manager_add_theme(theme);
+ }
+ }
+
+ g_dir_close(tdir);
+ g_free(purple_dir);
+ }
+
+ g_dir_close(rdir);
+}
+
+/*****************************************************************************
+ * Public API functions
+ *****************************************************************************/
+
+void
+purple_theme_manager_init(void)
+{
+ theme_table = g_hash_table_new_full(g_str_hash,
+ g_str_equal, g_free, g_object_unref);
+}
+
+void
+purple_theme_manager_refresh(void)
+{
+ gchar *path = NULL;
+ const gchar *xdg = NULL;
+ gint i = 0;
+
+ g_hash_table_foreach_remove(theme_table,
+ (GHRFunc) purple_theme_manager_is_theme, NULL);
+
+ /* Add themes from ~/.purple */
+ path = g_build_filename(purple_user_dir(), "themes", NULL);
+ purple_theme_manager_build_dir(path);
+ g_free(path);
+
+ /* look for XDG_DATA_HOME. If we don't have it use ~/.local, and add it */
+ if ((xdg = g_getenv("XDG_DATA_HOME")) != NULL)
+ path = g_build_filename(xdg, "themes", NULL);
+ else
+ path = g_build_filename(purple_home_dir(), ".local", "themes", NULL);
+
+ purple_theme_manager_build_dir(path);
+ g_free(path);
+
+ /* now dig through XDG_DATA_DIRS and add those too */
+ xdg = g_getenv("XDG_DATA_DIRS");
+ if (xdg) {
+ gchar **xdg_dirs = g_strsplit(xdg, G_SEARCHPATH_SEPARATOR_S, 0);
+
+ for (i = 0; xdg_dirs[i]; i++) {
+ path = g_build_filename(xdg_dirs[i], "themes", NULL);
+ purple_theme_manager_build_dir(path);
+ g_free(path);
+ }
+
+ g_strfreev(xdg_dirs);
+ }
+}
+
+void
+purple_theme_manager_uninit(void)
+{
+ g_hash_table_destroy(theme_table);
+}
+
+void
+purple_theme_manager_register_type(PurpleThemeLoader *loader)
+{
+ gchar *type;
+
+ g_return_if_fail(PURPLE_IS_THEME_LOADER(loader));
+
+ type = g_strdup(purple_theme_loader_get_type_string(loader));
+ g_return_if_fail(type);
+
+ /* if something is already there do nothing */
+ if (!g_hash_table_lookup(theme_table, type))
+ g_hash_table_insert(theme_table, type, loader);
+}
+
+void
+purple_theme_manager_unregister_type(PurpleThemeLoader *loader)
+{
+ const gchar *type;
+
+ g_return_if_fail(PURPLE_IS_THEME_LOADER(loader));
+
+ type = purple_theme_loader_get_type_string(loader);
+ g_return_if_fail(type);
+
+ if (g_hash_table_lookup(theme_table, type) == loader)
+ {
+ g_hash_table_remove(theme_table, type);
+
+ g_hash_table_foreach_remove(theme_table,
+ (GHRFunc)purple_theme_manager_is_theme_type, (gpointer)type);
+ } /* only free if given registered loader */
+}
+
+PurpleTheme *
+purple_theme_manager_find_theme(const gchar *name,
+ const gchar *type)
+{
+ gchar *key;
+ PurpleTheme *theme;
+
+ key = purple_theme_manager_make_key(name, type);
+
+ g_return_val_if_fail(key, NULL);
+
+ theme = g_hash_table_lookup(theme_table, key);
+
+ g_free(key);
+
+ return theme;
+}
+
+void
+purple_theme_manager_add_theme(PurpleTheme *theme)
+{
+ gchar *key;
+
+ g_return_if_fail(PURPLE_IS_THEME(theme));
+
+ key = purple_theme_manager_make_key(purple_theme_get_name(theme),
+ purple_theme_get_type_string(theme));
+
+ g_return_if_fail(key);
+
+ /* if something is already there do nothing */
+ if (g_hash_table_lookup(theme_table, key) == NULL)
+ g_hash_table_insert(theme_table, key, theme);
+}
+
+void
+purple_theme_manager_remove_theme(PurpleTheme *theme)
+{
+ gchar *key;
+
+ g_return_if_fail(PURPLE_IS_THEME(theme));
+
+ key = purple_theme_manager_make_key(purple_theme_get_name(theme),
+ purple_theme_get_type_string(theme));
+
+ g_return_if_fail(key);
+
+ g_hash_table_remove(theme_table, key);
+
+ g_free(key);
+}
+
+void
+purple_theme_manager_for_each_theme(PTFunc func)
+{
+ g_return_if_fail(func);
+
+ g_hash_table_foreach(theme_table,
+ (GHFunc) purple_theme_manager_function_wrapper, func);
+}
diff --git a/libpurple/theme-manager.h b/libpurple/theme-manager.h
new file mode 100644
index 0000000000..c34b6bc160
--- /dev/null
+++ b/libpurple/theme-manager.h
@@ -0,0 +1,131 @@
+/**
+ * @file theme-manager.h Theme Manager API
+ */
+
+/*
+ * purple
+ *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#ifndef PURPLE_THEME_MANAGER_H
+#define PURPLE_THEME_MANAGER_H
+
+#include <glib-object.h>
+#include <glib.h>
+#include "theme.h"
+#include "theme-loader.h"
+
+typedef void (*PTFunc) (PurpleTheme *);
+
+typedef struct _PurpleThemeManager PurpleThemeManager;
+typedef struct _PurpleThemeManagerClass PurpleThemeManagerClass;
+
+#define PURPLE_TYPE_THEME_MANAGER (purple_theme_manager_get_type())
+#define PURPLE_THEME_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PURPLE_TYPE_THEME_MANAGER, PurpleThemeManager))
+#define PURPLE_THEME_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), PURPLE_TYPE_THEME_MANAGER, PurpleThemeManagerClass))
+#define PURPLE_IS_THEME_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), PURPLE_TYPE_THEME_MANAGER))
+#define PURPLE_IS_THEME_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), PURPLE_TYPE_THEME_MANAGER))
+#define PURPLE_GET_THEME_MANAGER_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), PURPLE_TYPE_THEME_MANAGER, PurpleThemeManagerClass))
+
+struct _PurpleThemeManager {
+ GObject parent;
+};
+
+struct _PurpleThemeManagerClass {
+ GObjectClass parent_class;
+};
+
+/**************************************************************************/
+/** @name Purple Theme Manager API */
+/**************************************************************************/
+G_BEGIN_DECLS
+
+/**
+ * GObject foo.
+ *
+ * @internal.
+ */
+GType purple_theme_manager_get_type(void);
+
+/**
+ * Initalizes the theme manager.
+ */
+void purple_theme_manager_init(void);
+
+/**
+ * Uninitalizes the manager then frees all the themes and loaders it is
+ * responsible for.
+ */
+void purple_theme_manager_uninit(void);
+
+/**
+ * Rebuilds all the themes in the theme manager.
+ * (Removes all current themes but keeps the added loaders.)
+ */
+void purple_theme_manager_refresh(void);
+
+/**
+ * Finds the PurpleTheme object stored by the theme manager.
+ *
+ * @param name The name of the PurpleTheme.
+ * @param type The type of the PurpleTheme.
+ *
+ * @returns The PurpleTheme, or NULL if it wasn't found.
+ */
+PurpleTheme *purple_theme_manager_find_theme(const gchar *name, const gchar *type);
+
+/**
+ * Adds a PurpleTheme to the theme manager. If the theme already exists
+ * then this function does nothing.
+ *
+ * @param theme The PurpleTheme to add to the manager.
+ */
+void purple_theme_manager_add_theme(PurpleTheme *theme);
+
+/**
+ * Removes a PurpleTheme from the theme manager and frees the theme.
+ *
+ * @param theme The PurpleTheme to remove from the manager.
+ */
+void purple_theme_manager_remove_theme(PurpleTheme *theme);
+
+/**
+ * Adds a loader to the theme manager so it knows how to build themes.
+ *
+ * @param loader The PurpleThemeLoader to add.
+ */
+void purple_theme_manager_register_type(PurpleThemeLoader *loader);
+
+/**
+ * Removes the loader and all themes of the same type from the loader.
+ *
+ * @param loader The PurpleThemeLoader to be removed.
+ */
+void purple_theme_manager_unregister_type(PurpleThemeLoader *loader);
+
+/**
+ * Calls the given function on each purple theme.
+ *
+ * @param func The PTFunc to be applied to each theme.
+ */
+void purple_theme_manager_for_each_theme(PTFunc func);
+
+G_END_DECLS
+#endif /* PURPLE_THEME_MANAGER_H */
diff --git a/libpurple/theme.c b/libpurple/theme.c
new file mode 100644
index 0000000000..384a44a945
--- /dev/null
+++ b/libpurple/theme.c
@@ -0,0 +1,412 @@
+/*
+ * Themes for libpurple
+ *
+ * Pidgin is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#include <glib.h>
+#include <string.h>
+
+#include "internal.h"
+#include "theme.h"
+#include "util.h"
+
+#define PURPLE_THEME_GET_PRIVATE(PurpleTheme) \
+ ((PurpleThemePrivate *) ((PurpleTheme)->priv))
+
+void purple_theme_set_type_string(PurpleTheme *theme, const gchar *type);
+
+/******************************************************************************
+ * Structs
+ *****************************************************************************/
+
+typedef struct {
+ gchar *name;
+ gchar *description;
+ gchar *author;
+ gchar *type;
+ gchar *dir;
+ gchar *img;
+} PurpleThemePrivate;
+
+/******************************************************************************
+ * Globals
+ *****************************************************************************/
+
+static GObjectClass *parent_class = NULL;
+
+/******************************************************************************
+ * Enums
+ *****************************************************************************/
+
+enum {
+ PROP_ZERO = 0,
+ PROP_NAME,
+ PROP_DESCRIPTION,
+ PROP_AUTHOR,
+ PROP_TYPE,
+ PROP_DIR,
+ PROP_IMAGE
+};
+
+/******************************************************************************
+ * GObject Stuff
+ *****************************************************************************/
+
+static void
+purple_theme_get_property(GObject *obj, guint param_id, GValue *value,
+ GParamSpec *psec)
+{
+ PurpleTheme *theme = PURPLE_THEME(obj);
+
+ switch (param_id) {
+ case PROP_NAME:
+ g_value_set_string(value, purple_theme_get_name(theme));
+ break;
+ case PROP_DESCRIPTION:
+ g_value_set_string(value, purple_theme_get_description(theme));
+ break;
+ case PROP_AUTHOR:
+ g_value_set_string(value, purple_theme_get_author(theme));
+ break;
+ case PROP_TYPE:
+ g_value_set_string(value, purple_theme_get_type_string(theme));
+ break;
+ case PROP_DIR:
+ g_value_set_string(value, purple_theme_get_dir(theme));
+ break;
+ case PROP_IMAGE:
+ g_value_set_string(value, purple_theme_get_image(theme));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, psec);
+ break;
+ }
+}
+
+static void
+purple_theme_set_property(GObject *obj, guint param_id, const GValue *value,
+ GParamSpec *psec)
+{
+ PurpleTheme *theme = PURPLE_THEME(obj);
+
+ switch (param_id) {
+ case PROP_NAME:
+ purple_theme_set_name(theme, g_value_get_string(value));
+ break;
+ case PROP_DESCRIPTION:
+ purple_theme_set_description(theme, g_value_get_string(value));
+ break;
+ case PROP_AUTHOR:
+ purple_theme_set_author(theme, g_value_get_string(value));
+ break;
+ case PROP_TYPE:
+ purple_theme_set_type_string(theme, g_value_get_string(value));
+ break;
+ case PROP_DIR:
+ purple_theme_set_dir(theme, g_value_get_string(value));
+ break;
+ case PROP_IMAGE:
+ purple_theme_set_image(theme, g_value_get_string(value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, psec);
+ break;
+ }
+}
+
+static void
+purple_theme_init(GTypeInstance *instance,
+ gpointer klass)
+{
+ PurpleTheme *theme = PURPLE_THEME(instance);
+ theme->priv = g_new0(PurpleThemePrivate, 1);
+}
+
+static void
+purple_theme_finalize(GObject *obj)
+{
+ PurpleTheme *theme = PURPLE_THEME(obj);
+ PurpleThemePrivate *priv = PURPLE_THEME_GET_PRIVATE(theme);
+
+ g_free(priv->name);
+ g_free(priv->description);
+ g_free(priv->author);
+ g_free(priv->type);
+ g_free(priv->dir);
+ g_free(priv->img);
+
+ G_OBJECT_CLASS (parent_class)->finalize (obj);
+}
+
+static void
+purple_theme_class_init(PurpleThemeClass *klass)
+{
+ GObjectClass *obj_class = G_OBJECT_CLASS(klass);
+ GParamSpec *pspec;
+
+ parent_class = g_type_class_peek_parent(klass);
+
+ obj_class->get_property = purple_theme_get_property;
+ obj_class->set_property = purple_theme_set_property;
+ obj_class->finalize = purple_theme_finalize;
+
+ /* NAME */
+ pspec = g_param_spec_string("name", "Name",
+ "The name of the theme",
+ NULL,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT);
+ g_object_class_install_property(obj_class, PROP_NAME, pspec);
+
+ /* DESCRIPTION */
+ pspec = g_param_spec_string("description", "Description",
+ "The description of the theme",
+ NULL,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT);
+ g_object_class_install_property(obj_class, PROP_DESCRIPTION, pspec);
+
+ /* AUTHOR */
+ pspec = g_param_spec_string("author", "Author",
+ "The author of the theme",
+ NULL,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT);
+ g_object_class_install_property(obj_class, PROP_AUTHOR, pspec);
+
+ /* TYPE STRING (read only) */
+ pspec = g_param_spec_string("type", "Type",
+ "The string represtenting the type of the theme",
+ NULL,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY);
+ g_object_class_install_property(obj_class, PROP_TYPE, pspec);
+
+ /* DIRECTORY */
+ pspec = g_param_spec_string("directory", "Directory",
+ "The directory that contains the theme and all its files",
+ NULL,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT);
+ g_object_class_install_property(obj_class, PROP_DIR, pspec);
+
+ /* PREVIEW IMAGE */
+ pspec = g_param_spec_string("image", "Image",
+ "A preview image of the theme",
+ NULL,
+ G_PARAM_READWRITE);
+ g_object_class_install_property(obj_class, PROP_IMAGE, pspec);
+}
+
+
+GType
+purple_theme_get_type(void)
+{
+ static GType type = 0;
+ if (type == 0) {
+ static const GTypeInfo info = {
+ sizeof(PurpleThemeClass),
+ NULL, /* base_init */
+ NULL, /* base_finalize */
+ (GClassInitFunc)purple_theme_class_init, /* class_init */
+ NULL, /* class_finalize */
+ NULL, /* class_data */
+ sizeof(PurpleTheme),
+ 0, /* n_preallocs */
+ purple_theme_init, /* instance_init */
+ NULL, /* value table */
+ };
+ type = g_type_register_static (G_TYPE_OBJECT,
+ "PurpleTheme", &info, G_TYPE_FLAG_ABSTRACT);
+ }
+ return type;
+}
+
+/******************************************************************************
+ * Helper Functions
+ *****************************************************************************/
+
+static gchar *
+theme_clean_text(const gchar *text)
+{
+ gchar *clean_text = NULL;
+ if (text != NULL) {
+ clean_text = g_markup_escape_text(text, -1);
+ g_strdelimit(clean_text, "\n", ' ');
+ purple_str_strip_char(clean_text, '\r');
+ }
+ return clean_text;
+}
+
+/*****************************************************************************
+ * Public API function
+ *****************************************************************************/
+
+const gchar *
+purple_theme_get_name(PurpleTheme *theme)
+{
+ PurpleThemePrivate *priv;
+
+ g_return_val_if_fail(PURPLE_IS_THEME(theme), NULL);
+
+ priv = PURPLE_THEME_GET_PRIVATE(theme);
+ return priv->name;
+}
+
+void
+purple_theme_set_name(PurpleTheme *theme, const gchar *name)
+{
+ PurpleThemePrivate *priv;
+
+ g_return_if_fail(PURPLE_IS_THEME(theme));
+
+ priv = PURPLE_THEME_GET_PRIVATE(theme);
+
+ g_free(priv->name);
+ priv->name = theme_clean_text(name);
+}
+
+const gchar *
+purple_theme_get_description(PurpleTheme *theme)
+{
+ PurpleThemePrivate *priv;
+
+ g_return_val_if_fail(PURPLE_IS_THEME(theme), NULL);
+
+ priv = PURPLE_THEME_GET_PRIVATE(theme);
+ return priv->description;
+}
+
+void
+purple_theme_set_description(PurpleTheme *theme, const gchar *description)
+{
+ PurpleThemePrivate *priv;
+
+ g_return_if_fail(PURPLE_IS_THEME(theme));
+
+ priv = PURPLE_THEME_GET_PRIVATE(theme);
+
+ g_free(priv->description);
+ priv->description = theme_clean_text(description);
+}
+
+const gchar *
+purple_theme_get_author(PurpleTheme *theme)
+{
+ PurpleThemePrivate *priv;
+
+ g_return_val_if_fail(PURPLE_IS_THEME(theme), NULL);
+
+ priv = PURPLE_THEME_GET_PRIVATE(theme);
+ return priv->author;
+}
+
+void
+purple_theme_set_author(PurpleTheme *theme, const gchar *author)
+{
+ PurpleThemePrivate *priv;
+
+ g_return_if_fail(PURPLE_IS_THEME(theme));
+
+ priv = PURPLE_THEME_GET_PRIVATE(theme);
+
+ g_free(priv->author);
+ priv->author = theme_clean_text(author);
+}
+
+const gchar *
+purple_theme_get_type_string(PurpleTheme *theme)
+{
+ PurpleThemePrivate *priv;
+
+ g_return_val_if_fail(PURPLE_IS_THEME(theme), NULL);
+
+ priv = PURPLE_THEME_GET_PRIVATE(theme);
+ return priv->type;
+}
+
+/* < private > */
+void
+purple_theme_set_type_string(PurpleTheme *theme, const gchar *type)
+{
+ PurpleThemePrivate *priv;
+
+ g_return_if_fail(PURPLE_IS_THEME(theme));
+
+ priv = PURPLE_THEME_GET_PRIVATE(theme);
+
+ g_free(priv->type);
+ priv->type = g_strdup(type);
+}
+
+const gchar *
+purple_theme_get_dir(PurpleTheme *theme)
+{
+ PurpleThemePrivate *priv;
+
+ g_return_val_if_fail(PURPLE_IS_THEME(theme), NULL);
+
+ priv = PURPLE_THEME_GET_PRIVATE(theme);
+ return priv->dir;
+}
+
+void
+purple_theme_set_dir(PurpleTheme *theme, const gchar *dir)
+{
+ PurpleThemePrivate *priv;
+
+ g_return_if_fail(PURPLE_IS_THEME(theme));
+
+ priv = PURPLE_THEME_GET_PRIVATE(theme);
+
+ g_free(priv->dir);
+ priv->dir = g_strdup(dir);
+}
+
+const gchar *
+purple_theme_get_image(PurpleTheme *theme)
+{
+ PurpleThemePrivate *priv;
+
+ g_return_val_if_fail(PURPLE_IS_THEME(theme), NULL);
+
+ priv = PURPLE_THEME_GET_PRIVATE(theme);
+
+ return priv->img;
+}
+
+gchar *
+purple_theme_get_image_full(PurpleTheme *theme)
+{
+ const gchar *filename = purple_theme_get_image(theme);
+
+ if (filename)
+ return g_build_filename(purple_theme_get_dir(PURPLE_THEME(theme)), filename, NULL);
+ else
+ return NULL;
+}
+
+void
+purple_theme_set_image(PurpleTheme *theme, const gchar *img)
+{
+ PurpleThemePrivate *priv;
+
+ g_return_if_fail(PURPLE_IS_THEME(theme));
+
+ priv = PURPLE_THEME_GET_PRIVATE(theme);
+
+ g_free(priv->img);
+ priv->img = g_strdup(img);
+}
diff --git a/libpurple/theme.h b/libpurple/theme.h
new file mode 100644
index 0000000000..5efae71a82
--- /dev/null
+++ b/libpurple/theme.h
@@ -0,0 +1,175 @@
+/**
+ * @file theme.h Purple Theme Abstact Class API
+ */
+
+/* purple
+ *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#ifndef PURPLE_THEME_H
+#define PURPLE_THEME_H
+
+#include <glib.h>
+#include <glib-object.h>
+#include "imgstore.h"
+
+/**
+ * A purple theme.
+ * This is an abstract class for Purple to use with the Purple theme manager.
+ *
+ * PurpleTheme is a GObject.
+ */
+typedef struct _PurpleTheme PurpleTheme;
+typedef struct _PurpleThemeClass PurpleThemeClass;
+
+#define PURPLE_TYPE_THEME (purple_theme_get_type ())
+#define PURPLE_THEME(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PURPLE_TYPE_THEME, PurpleTheme))
+#define PURPLE_THEME_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PURPLE_TYPE_THEME, PurpleThemeClass))
+#define PURPLE_IS_THEME(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PURPLE_TYPE_THEME))
+#define PURPLE_IS_THEME_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PURPLE_TYPE_THEME))
+#define PURPLE_THEME_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PURPLE_TYPE_THEME, PurpleThemeClass))
+
+struct _PurpleTheme
+{
+ GObject parent;
+ gpointer priv;
+};
+
+struct _PurpleThemeClass
+{
+ GObjectClass parent_class;
+};
+
+/**************************************************************************/
+/** @name Purple Theme API */
+/**************************************************************************/
+G_BEGIN_DECLS
+
+/**
+ * GObject foo.
+ * @internal.
+ */
+GType purple_theme_get_type(void);
+
+/**
+ * Returns the name of the PurpleTheme object.
+ *
+ * @param theme The purple theme.
+ *
+ * @return The string representating the name of the theme.
+ */
+const gchar *purple_theme_get_name(PurpleTheme *theme);
+
+/**
+ * Sets the name of the PurpleTheme object.
+ *
+ * @param theme The purple theme.
+ * @param name The name of the PurpleTheme object.
+ */
+void purple_theme_set_name(PurpleTheme *theme, const gchar *name);
+
+/**
+ * Returns the description of the PurpleTheme object.
+ *
+ * @param theme The purple theme.
+ *
+ * @return A short description of the theme.
+ */
+const gchar *purple_theme_get_description(PurpleTheme *theme);
+
+/**
+ * Sets the description of the PurpleTheme object.
+ *
+ * @param theme The purple theme.
+ * @param description The description of the PurpleTheme object.
+ */
+void purple_theme_set_description(PurpleTheme *theme, const gchar *description);
+
+/**
+ * Returns the author of the PurpleTheme object.
+ *
+ * @param theme The purple theme.
+ *
+ * @return The author of the theme.
+ */
+const gchar *purple_theme_get_author(PurpleTheme *theme);
+
+/**
+ * Sets the author of the PurpleTheme object.
+ *
+ * @param theme The purple theme.
+ * @param author The author of the PurpleTheme object.
+ */
+void purple_theme_set_author(PurpleTheme *theme, const gchar *author);
+
+/**
+ * Returns the type (string) of the PurpleTheme object.
+ *
+ * @param theme The purple theme.
+ *
+ * @return The string represtenting the type.
+ */
+const gchar *purple_theme_get_type_string(PurpleTheme *theme);
+
+/**
+ * Returns the directory of the PurpleTheme object.
+ *
+ * @param theme The purple theme.
+ *
+ * @return The string represtenting the theme directory.
+ */
+const gchar *purple_theme_get_dir(PurpleTheme *theme);
+
+/**
+ * Sets the directory of the PurpleTheme object.
+ *
+ * @param theme The purple theme.
+ * @param dir The directory of the PurpleTheme object.
+ */
+void purple_theme_set_dir(PurpleTheme *theme, const gchar *dir);
+
+/**
+ * Returns the image preview of the PurpleTheme object.
+ *
+ * @param theme The purple theme.
+ *
+ * @return The image preview of the PurpleTheme object.
+ */
+const gchar *purple_theme_get_image(PurpleTheme *theme);
+
+/**
+ * Returns the image preview and directory of the PurpleTheme object.
+ *
+ * @param theme The purple theme.
+ *
+ * @return The image preview of the PurpleTheme object.
+ */
+gchar *purple_theme_get_image_full(PurpleTheme *theme);
+
+/**
+ * Sets the directory of the PurpleTheme object.
+ *
+ * @param theme The purple theme.
+ * @param img The image preview of the PurpleTheme object.
+ */
+void purple_theme_set_image(PurpleTheme *theme, const gchar *img);
+
+G_END_DECLS
+#endif /* PURPLE_THEME_H */
diff --git a/libpurple/upnp.c b/libpurple/upnp.c
index 9b63072ece..c4ca4316c8 100644
--- a/libpurple/upnp.c
+++ b/libpurple/upnp.c
@@ -130,7 +130,7 @@ typedef struct {
guint tima; /* purple_timeout_add handle */
int fd;
struct sockaddr_in server;
- gchar service_type[25];
+ gchar service_type[20];
int retry_count;
gchar *full_url;
} UPnPDiscoveryData;
@@ -1049,7 +1049,7 @@ static void*
purple_upnp_get_handle(void)
{
static int handle;
-
+
return &handle;
}
diff --git a/libpurple/util.c b/libpurple/util.c
index a71b896430..f7d85f22ca 100644
--- a/libpurple/util.c
+++ b/libpurple/util.c
@@ -98,7 +98,7 @@ purple_menu_action_free(PurpleMenuAction *act)
void
purple_util_init(void)
{
- /* This does nothing right now. It exists for symmetry with
+ /* This does nothing right now. It exists for symmetry with
* purple_util_uninit() and forwards compatibility. */
}
@@ -129,7 +129,7 @@ purple_base16_encode(const guchar *data, gsize len)
ascii = g_malloc(len * 2 + 1);
for (i = 0; i < len; i++)
- snprintf(&ascii[i * 2], 3, "%02hhx", data[i]);
+ g_snprintf(&ascii[i * 2], 3, "%02hhx", data[i]);
return ascii;
}
@@ -1041,6 +1041,35 @@ purple_markup_get_css_property(const gchar *style,
return ret;
}
+gboolean purple_markup_is_rtl(const char *html)
+{
+ GData *attributes;
+ const gchar *start, *end;
+ gboolean res = FALSE;
+
+ if (purple_markup_find_tag("span", html, &start, &end, &attributes))
+ {
+ /* tmp is a member of attributes and is free with g_datalist_clear call */
+ const char *tmp = g_datalist_get_data(&attributes, "dir");
+ if (tmp && !g_ascii_strcasecmp(tmp, "RTL"))
+ res = TRUE;
+ if (!res)
+ {
+ tmp = g_datalist_get_data(&attributes, "style");
+ if (tmp)
+ {
+ char *tmp2 = purple_markup_get_css_property(tmp, "direction");
+ if (tmp2 && !g_ascii_strcasecmp(tmp2, "RTL"))
+ res = TRUE;
+ g_free(tmp2);
+ }
+
+ }
+ g_datalist_clear(&attributes);
+ }
+ return res;
+}
+
gboolean
purple_markup_find_tag(const char *needle, const char *haystack,
const char **start, const char **end, GData **attributes)
@@ -1409,7 +1438,7 @@ purple_markup_html_to_xhtml(const char *html, char **xhtml_out,
struct purple_parse_tag *pt = tags->data;
if(xhtml)
g_string_append_printf(xhtml, "</%s>", pt->dest_tag);
- if(plain && !strcmp(pt->src_tag, "a")) {
+ if(plain && purple_strequal(pt->src_tag, "a")) {
/* if this is a link, we have to add the url to the plaintext, too */
if (cdata && url &&
(!g_string_equal(cdata, url) && (g_ascii_strncasecmp(url->str, "mailto:", 7) != 0 ||
@@ -1623,7 +1652,7 @@ purple_markup_html_to_xhtml(const char *html, char **xhtml_out,
pt->dest_tag = "a";
tags = g_list_prepend(tags, pt);
if(xhtml)
- g_string_append_printf(xhtml, "<a href='%s'>", url ? g_strstrip(url->str) : "");
+ g_string_append_printf(xhtml, "<a href=\"%s\">", url ? g_strstrip(url->str) : "");
continue;
}
if(!g_ascii_strncasecmp(c, "<font", 5) && (*(c+5) == '>' || *(c+5) == ' ')) {
@@ -2017,7 +2046,6 @@ badchar(char c)
case '<':
case '>':
case '"':
- case '\'':
return TRUE;
default:
return FALSE;
@@ -2693,7 +2721,7 @@ purple_util_write_data_to_file_absolute(const char *filename_full, const char *d
return FALSE;
}
#endif
-
+
/* Close file */
if (fclose(file) != 0)
{
@@ -2774,70 +2802,7 @@ purple_util_write_data_to_file_absolute(const char *filename_full, const char *d
xmlnode *
purple_util_read_xml_from_file(const char *filename, const char *description)
{
- const char *user_dir = purple_user_dir();
- gchar *filename_full;
- GError *error = NULL;
- gchar *contents = NULL;
- gsize length;
- xmlnode *node = NULL;
-
- g_return_val_if_fail(user_dir != NULL, NULL);
-
- purple_debug_info("util", "Reading file %s from directory %s\n",
- filename, user_dir);
-
- filename_full = g_build_filename(user_dir, filename, NULL);
-
- if (!g_file_test(filename_full, G_FILE_TEST_EXISTS))
- {
- purple_debug_info("util", "File %s does not exist (this is not "
- "necessarily an error)\n", filename_full);
- g_free(filename_full);
- return NULL;
- }
-
- if (!g_file_get_contents(filename_full, &contents, &length, &error))
- {
- purple_debug_error("util", "Error reading file %s: %s\n",
- filename_full, error->message);
- g_error_free(error);
- }
-
- if ((contents != NULL) && (length > 0))
- {
- node = xmlnode_from_str(contents, length);
-
- /* If we were unable to parse the file then save its contents to a backup file */
- if (node == NULL)
- {
- gchar *filename_temp;
-
- filename_temp = g_strdup_printf("%s~", filename);
- purple_debug_error("util", "Error parsing file %s. Renaming old "
- "file to %s\n", filename_full, filename_temp);
- purple_util_write_data_to_file(filename_temp, contents, length);
- g_free(filename_temp);
- }
-
- g_free(contents);
- }
-
- /* If we could not parse the file then show the user an error message */
- if (node == NULL)
- {
- gchar *title, *msg;
- title = g_strdup_printf(_("Error Reading %s"), filename);
- msg = g_strdup_printf(_("An error was encountered reading your "
- "%s. They have not been loaded, and the old file "
- "has been renamed to %s~."), description, filename_full);
- purple_notify_error(NULL, NULL, title, msg);
- g_free(title);
- g_free(msg);
- }
-
- g_free(filename_full);
-
- return node;
+ return xmlnode_from_file(purple_user_dir(), filename, description, "util");
}
/*
@@ -2913,6 +2878,12 @@ purple_util_get_image_extension(gconstpointer data, size_t len)
return "icon";
}
+/*
+ * TODO: Consider using something faster than SHA-1, such as MD5, MD4
+ * or CRC32. Are there security implications to that? Would
+ * probably be a good idea to benchmark some algorithms with
+ * 3KB-10KB chunks of data (typical buddy icon sizes).
+ */
char *
purple_util_get_image_checksum(gconstpointer image_data, size_t image_len)
{
@@ -3012,7 +2983,7 @@ purple_running_kde(void)
g_free(tmp);
session = g_getenv("KDE_FULL_SESSION");
- if (session != NULL && !strcmp(session, "true"))
+ if (purple_strequal(session, "true"))
return TRUE;
/* If you run Purple from Konsole under !KDE, this will provide a
@@ -3053,6 +3024,17 @@ purple_fd_get_ip(int fd)
/**************************************************************************
* String Functions
**************************************************************************/
+gboolean
+purple_strequal(const gchar *left, const gchar *right)
+{
+#if GLIB_CHECK_VERSION(2,16,0)
+ return (g_strcmp0(left, right) == 0);
+#else
+ return ((left == NULL && right == NULL) ||
+ (left != NULL && right != NULL && strcmp(left, right) == 0));
+#endif
+}
+
const char *
purple_normalize(const PurpleAccount *account, const char *str)
{
@@ -3167,7 +3149,7 @@ purple_str_has_suffix(const char *s, const char *x)
g_return_val_if_fail(x != NULL, FALSE);
off = strlen(s) - strlen(x);
- return (off >= 0 && !strcmp(s + off, x));
+ return (off >= 0 && purple_strequal(s + off, x));
#endif
}
@@ -3916,7 +3898,7 @@ static void ssl_url_fetch_recv_cb(gpointer data, PurpleSslConnection *ssl_connec
url_fetch_recv_cb(data, -1, cond);
}
-/*
+/**
* This function is called when the socket is available to be written
* to.
*
@@ -4055,7 +4037,7 @@ purple_util_fetch_url_request(const char *url, gboolean full,
const char *request, gboolean include_headers,
PurpleUtilFetchUrlCallback callback, void *user_data)
{
- return purple_util_fetch_url_request_len(url, full,
+ return purple_util_fetch_url_request_len_with_account(NULL, url, full,
user_agent, http11,
request, include_headers, -1,
callback, user_data);
@@ -4067,6 +4049,17 @@ purple_util_fetch_url_request_len(const char *url, gboolean full,
const char *request, gboolean include_headers, gssize max_len,
PurpleUtilFetchUrlCallback callback, void *user_data)
{
+ return purple_util_fetch_url_request_len_with_account(NULL, url, full,
+ user_agent, http11, request, include_headers, max_len, callback,
+ user_data);
+}
+
+PurpleUtilFetchUrlData *
+purple_util_fetch_url_request_len_with_account(PurpleAccount *account,
+ const char *url, gboolean full, const char *user_agent, gboolean http11,
+ const char *request, gboolean include_headers, gssize max_len,
+ PurpleUtilFetchUrlCallback callback, void *user_data)
+{
PurpleUtilFetchUrlData *gfud;
g_return_val_if_fail(url != NULL, NULL);
@@ -4096,12 +4089,19 @@ purple_util_fetch_url_request_len(const char *url, gboolean full,
&gfud->website.page, &gfud->website.user, &gfud->website.passwd);
if (purple_strcasestr(url, "https://") != NULL) {
+ if (!purple_ssl_is_supported()) {
+ purple_util_fetch_url_error(gfud,
+ _("Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was found."),
+ gfud->website.address);
+ return NULL;
+ }
+
gfud->is_ssl = TRUE;
- gfud->ssl_connection = purple_ssl_connect(NULL,
+ gfud->ssl_connection = purple_ssl_connect(account,
gfud->website.address, gfud->website.port,
ssl_url_fetch_connect_cb, ssl_url_fetch_error_cb, gfud);
} else {
- gfud->connect_data = purple_proxy_connect(NULL, NULL,
+ gfud->connect_data = purple_proxy_connect(NULL, account,
gfud->website.address, gfud->website.port,
url_fetch_connect_cb, gfud);
}
@@ -4424,6 +4424,37 @@ purple_utf8_salvage(const char *str)
return g_string_free(workstr, FALSE);
}
+gchar *
+purple_utf8_strip_unprintables(const gchar *str)
+{
+ gchar *workstr, *iter;
+
+ if (str == NULL)
+ /* Act like g_strdup */
+ return NULL;
+
+ g_return_val_if_fail(g_utf8_validate(str, -1, NULL), NULL);
+
+ workstr = iter = g_new(gchar, strlen(str) + 1);
+ while (*str) {
+ gunichar c = g_utf8_get_char(str);
+ const gchar *next = g_utf8_next_char(str);
+ size_t len = next - str;
+
+ if (g_unichar_isprint(c)) {
+ memcpy(iter, str, len);
+ iter += len;
+ }
+
+ str = next;
+ }
+
+ /* nul-terminate the new string */
+ *iter = '\0';
+
+ return workstr;
+}
+
/*
* This function is copied from g_strerror() but changed to use
* gai_strerror().
@@ -4770,7 +4801,7 @@ purple_escape_filename(const char *str)
const char *_purple_oscar_convert(const char *act, const char *protocol)
{
- if (protocol && act && strcmp(protocol, "prpl-oscar") == 0) {
+ if (act && purple_strequal(protocol, "prpl-oscar")) {
int i;
for (i = 0; act[i] != '\0'; i++)
if (!isdigit(act[i]))
diff --git a/libpurple/util.h b/libpurple/util.h
index 6092fc4da0..fbef17d923 100644
--- a/libpurple/util.h
+++ b/libpurple/util.h
@@ -31,23 +31,26 @@
#include <stdio.h>
+typedef struct _PurpleUtilFetchUrlData PurpleUtilFetchUrlData;
+typedef struct _PurpleMenuAction PurpleMenuAction;
+typedef struct _PurpleKeyValuePair PurpleKeyValuePair;
+
#include "account.h"
#include "xmlnode.h"
#include "notify.h"
+
#ifdef __cplusplus
extern "C" {
#endif
-typedef struct _PurpleUtilFetchUrlData PurpleUtilFetchUrlData;
-
-typedef struct _PurpleMenuAction
+struct _PurpleMenuAction
{
char *label;
PurpleCallback callback;
gpointer data;
GList *children;
-} PurpleMenuAction;
+};
typedef char *(*PurpleInfoFieldFormatCallback)(const char *field, size_t len);
@@ -57,12 +60,12 @@ typedef char *(*PurpleInfoFieldFormatCallback)(const char *field, size_t len);
* This is used by, among other things, purple_gtk_combo* functions to pass in a
* list of key-value pairs so it can display a user-friendly value.
*/
-typedef struct _PurpleKeyValuePair
+struct _PurpleKeyValuePair
{
gchar *key;
void *value;
-} PurpleKeyValuePair;
+};
/**
* Creates a new PurpleMenuAction.
@@ -493,7 +496,8 @@ char *purple_markup_strip_html(const char *str);
char *purple_markup_linkify(const char *str);
/**
- * Unescapes HTML entities to their literal characters.
+ * Unescapes HTML entities to their literal characters. Also translates
+ * "<br>" to "\n".
* For example "&amp;" is replaced by '&' and so on.
* Actually only "&amp;", "&quot;", "&lt;" and "&gt;" are currently
* supported.
@@ -575,6 +579,16 @@ const char * purple_markup_unescape_entity(const char *text, int *length);
*/
char * purple_markup_get_css_property(const gchar *style, const gchar *opt);
+/**
+ * Check if the given HTML contains RTL text.
+ *
+ * @param html The HTML text.
+ *
+ * @return TRUE if the text contains RTL text, FALSE otherwise.
+ *
+ * @since 2.6.0
+ */
+gboolean purple_markup_is_rtl(const char *html);
/*@}*/
@@ -775,6 +789,21 @@ char *purple_fd_get_ip(int fd);
/*@{*/
/**
+ * Tests two strings for equality.
+ *
+ * Unlike strcmp(), this function will not crash if one or both of the
+ * strings are @c NULL.
+ *
+ * @param left A string
+ * @param right A string to compare with left
+ *
+ * @return @c TRUE if the strings are the same, else @c FALSE.
+ *
+ * @since 2.6.0
+ */
+gboolean purple_strequal(const gchar *left, const gchar *right);
+
+/**
* Normalizes a string, so that it is suitable for comparison.
*
* The returned string will point to a static buffer, so if the
@@ -1085,7 +1114,7 @@ PurpleUtilFetchUrlData *purple_util_fetch_url_request(const gchar *url,
* @param max_len The maximum number of bytes to retrieve (-1 for unlimited)
* @param callback The callback function.
* @param data The user data to pass to the callback function.
- * @deprecated In 3.0.0, we'll rename this to "purple_util_fetch_url_request" and get rid of the old one
+ * @deprecated In 3.0.0, this will go away.
*/
PurpleUtilFetchUrlData *purple_util_fetch_url_request_len(const gchar *url,
gboolean full, const gchar *user_agent, gboolean http11,
@@ -1093,6 +1122,30 @@ PurpleUtilFetchUrlData *purple_util_fetch_url_request_len(const gchar *url,
PurpleUtilFetchUrlCallback callback, gpointer data);
/**
+ * Fetches the data from a URL, and passes it to a callback function.
+ *
+ * @param account The account for which the request is needed, or NULL.
+ * @param url The URL.
+ * @param full TRUE if this is the full URL, or FALSE if it's a
+ * partial URL.
+ * @param user_agent The user agent field to use, or NULL.
+ * @param http11 TRUE if HTTP/1.1 should be used to download the file.
+ * @param request A HTTP request to send to the server instead of the
+ * standard GET
+ * @param include_headers
+ * If TRUE, include the HTTP headers in the response.
+ * @param max_len The maximum number of bytes to retrieve (-1 for unlimited)
+ * @param callback The callback function.
+ * @param data The user data to pass to the callback function.
+ * @deprecated In 3.0.0, we'll rename this to "purple_util_fetch_url_request" and get rid of the old one
+ */
+PurpleUtilFetchUrlData *purple_util_fetch_url_request_len_with_account(
+ PurpleAccount *account, const gchar *url,
+ gboolean full, const gchar *user_agent, gboolean http11,
+ const gchar *request, gboolean include_headers, gssize max_len,
+ PurpleUtilFetchUrlCallback callback, gpointer data);
+
+/**
* Cancel a pending URL request started with either
* purple_util_fetch_url_request() or purple_util_fetch_url().
*
@@ -1195,6 +1248,22 @@ gchar *purple_utf8_try_convert(const char *str);
gchar *purple_utf8_salvage(const char *str);
/**
+ * Removes unprintable characters from a UTF-8 string. These characters
+ * (in particular low-ASCII characters) are invalid in XML 1.0 and thus
+ * are not allowed in XMPP and are rejected by libxml2 by default. This
+ * function uses g_unichar_isprint to determine what characters should
+ * be stripped. The returned string must be freed by the caller.
+ *
+ * @param str A valid UTF-8 string.
+ *
+ * @return A newly allocated UTF-8 string without the unprintable characters.
+ * @since 2.6.0
+ *
+ * @see g_unichar_isprint
+ */
+gchar *purple_utf8_strip_unprintables(const gchar *str);
+
+/**
* Return the UTF-8 version of gai_strerror(). It calls gai_strerror()
* then converts the result to UTF-8. This function is analogous to
* g_strerror().
diff --git a/libpurple/whiteboard.c b/libpurple/whiteboard.c
index 319191d527..97f061545e 100644
--- a/libpurple/whiteboard.c
+++ b/libpurple/whiteboard.c
@@ -115,7 +115,7 @@ PurpleWhiteboard *purple_whiteboard_get_session(const PurpleAccount *account, co
{
wb = l->data;
- if(wb->account == account && !strcmp(wb->who, who))
+ if(wb->account == account && purple_strequal(wb->who, who))
return wb;
l = l->next;
diff --git a/libpurple/win32/global.mak b/libpurple/win32/global.mak
index e188be16b6..315c6e0c7b 100644
--- a/libpurple/win32/global.mak
+++ b/libpurple/win32/global.mak
@@ -103,6 +103,7 @@ ifeq "$(origin CC)" "default"
endif
GMSGFMT ?= $(GTK_BIN)/msgfmt
MAKENSIS ?= makensis.exe
+MAKENSISOPT ?= /
PERL ?= /cygdrive/c/perl/bin/perl
WINDRES ?= windres
STRIP ?= strip
diff --git a/libpurple/win32/win32dep.c b/libpurple/win32/win32dep.c
index d91f6cc12c..5c6f0b43c6 100644
--- a/libpurple/win32/win32dep.c
+++ b/libpurple/win32/win32dep.c
@@ -467,7 +467,14 @@ void wpurple_cleanup(void) {
WSACleanup();
g_free(app_data_dir);
+ g_free(install_dir);
+ g_free(lib_dir);
+ g_free(locale_dir);
+
app_data_dir = NULL;
+ install_dir = NULL;
+ lib_dir = NULL;
+ locale_dir = NULL;
libpurpledll_hInstance = NULL;
}
diff --git a/libpurple/xmlnode.c b/libpurple/xmlnode.c
index 92ad0c5b49..ae59687321 100644
--- a/libpurple/xmlnode.c
+++ b/libpurple/xmlnode.c
@@ -27,6 +27,7 @@
* libxode uses memory pools that we simply have no need for, I decided to
* write my own stuff. Also, re-writing this lets me be as lightweight
* as I want to be. Thank you libxode for giving me a good starting point */
+#define _PURPLE_XMLNODE_C_
#include "debug.h"
#include "internal.h"
@@ -126,40 +127,33 @@ xmlnode_remove_attrib(xmlnode *node, const char *attr)
g_return_if_fail(node != NULL);
g_return_if_fail(attr != NULL);
- for(attr_node = node->child; attr_node; attr_node = attr_node->next)
- {
+ attr_node = node->child;
+ while (attr_node) {
if(attr_node->type == XMLNODE_TYPE_ATTRIB &&
- !strcmp(attr_node->name, attr))
+ purple_strequal(attr_node->name, attr))
{
- if(sibling == NULL) {
+ if (node->lastchild == attr_node) {
+ node->lastchild = sibling;
+ }
+ if (sibling == NULL) {
node->child = attr_node->next;
+ xmlnode_free(attr_node);
+ attr_node = node->child;
} else {
sibling->next = attr_node->next;
+ sibling = attr_node->next;
+ xmlnode_free(attr_node);
+ attr_node = sibling;
}
- if (node->lastchild == attr_node) {
- node->lastchild = sibling;
- }
- xmlnode_free(attr_node);
- return;
+ }
+ else
+ {
+ attr_node = attr_node->next;
}
sibling = attr_node;
}
}
-/* Compare two nullable xmlns strings.
- * They are considered equal if they're both NULL or the strings are equal
- */
-static gboolean _xmlnode_compare_xmlns(const char *xmlns1, const char *xmlns2) {
- gboolean equal = FALSE;
-
- if (xmlns1 == NULL && xmlns2 == NULL)
- equal = TRUE;
- else if (xmlns1 != NULL && xmlns2 != NULL && !strcmp(xmlns1, xmlns2))
- equal = TRUE;
-
- return equal;
-}
-
void
xmlnode_remove_attrib_with_namespace(xmlnode *node, const char *attr, const char *xmlns)
{
@@ -171,8 +165,8 @@ xmlnode_remove_attrib_with_namespace(xmlnode *node, const char *attr, const char
for(attr_node = node->child; attr_node; attr_node = attr_node->next)
{
if(attr_node->type == XMLNODE_TYPE_ATTRIB &&
- !strcmp(attr_node->name, attr) &&
- _xmlnode_compare_xmlns(xmlns, attr_node->xmlns))
+ purple_strequal(attr, attr_node->name) &&
+ purple_strequal(xmlns, attr_node->xmlns))
{
if(sibling == NULL) {
node->child = attr_node->next;
@@ -192,51 +186,36 @@ xmlnode_remove_attrib_with_namespace(xmlnode *node, const char *attr, const char
void
xmlnode_set_attrib(xmlnode *node, const char *attr, const char *value)
{
- xmlnode *attrib_node;
-
- g_return_if_fail(node != NULL);
- g_return_if_fail(attr != NULL);
- g_return_if_fail(value != NULL);
-
xmlnode_remove_attrib(node, attr);
-
- attrib_node = new_node(attr, XMLNODE_TYPE_ATTRIB);
-
- attrib_node->data = g_strdup(value);
-
- xmlnode_insert_child(node, attrib_node);
+ xmlnode_set_attrib_full(node, attr, NULL, NULL, value);
}
void
xmlnode_set_attrib_with_namespace(xmlnode *node, const char *attr, const char *xmlns, const char *value)
{
- xmlnode *attrib_node;
-
- g_return_if_fail(node != NULL);
- g_return_if_fail(attr != NULL);
- g_return_if_fail(value != NULL);
-
- xmlnode_remove_attrib_with_namespace(node, attr, xmlns);
- attrib_node = new_node(attr, XMLNODE_TYPE_ATTRIB);
-
- attrib_node->data = g_strdup(value);
- attrib_node->xmlns = g_strdup(xmlns);
-
- xmlnode_insert_child(node, attrib_node);
+ xmlnode_set_attrib_full(node, attr, xmlns, NULL, value);
}
void
xmlnode_set_attrib_with_prefix(xmlnode *node, const char *attr, const char *prefix, const char *value)
{
+ xmlnode_set_attrib_full(node, attr, NULL, prefix, value);
+}
+
+void
+xmlnode_set_attrib_full(xmlnode *node, const char *attr, const char *xmlns, const char *prefix, const char *value)
+{
xmlnode *attrib_node;
g_return_if_fail(node != NULL);
g_return_if_fail(attr != NULL);
g_return_if_fail(value != NULL);
+ xmlnode_remove_attrib_with_namespace(node, attr, xmlns);
attrib_node = new_node(attr, XMLNODE_TYPE_ATTRIB);
attrib_node->data = g_strdup(value);
+ attrib_node->xmlns = g_strdup(xmlns);
attrib_node->prefix = g_strdup(prefix);
xmlnode_insert_child(node, attrib_node);
@@ -252,7 +231,7 @@ xmlnode_get_attrib(xmlnode *node, const char *attr)
g_return_val_if_fail(attr != NULL, NULL);
for(x = node->child; x; x = x->next) {
- if(x->type == XMLNODE_TYPE_ATTRIB && !strcmp(attr, x->name)) {
+ if(x->type == XMLNODE_TYPE_ATTRIB && purple_strequal(attr, x->name)) {
return x->data;
}
}
@@ -270,8 +249,8 @@ xmlnode_get_attrib_with_namespace(xmlnode *node, const char *attr, const char *x
for(x = node->child; x; x = x->next) {
if(x->type == XMLNODE_TYPE_ATTRIB &&
- !strcmp(attr, x->name) &&
- _xmlnode_compare_xmlns(xmlns, x->xmlns)) {
+ purple_strequal(attr, x->name) &&
+ purple_strequal(xmlns, x->xmlns)) {
return x->data;
}
}
@@ -309,6 +288,12 @@ const char *xmlnode_get_prefix(const xmlnode *node)
return node->prefix;
}
+xmlnode *xmlnode_get_parent(const xmlnode *child)
+{
+ g_return_val_if_fail(child != NULL, NULL);
+ return child->parent;
+}
+
void
xmlnode_free(xmlnode *node)
{
@@ -382,8 +367,8 @@ xmlnode_get_child_with_namespace(const xmlnode *parent, const char *name, const
if(ns)
xmlns = xmlnode_get_namespace(x);
- if(x->type == XMLNODE_TYPE_TAG && name && !strcmp(parent_name, x->name)
- && (!ns || (xmlns && !strcmp(ns, xmlns)))) {
+ if(x->type == XMLNODE_TYPE_TAG && purple_strequal(parent_name, x->name)
+ && purple_strequal(ns, xmlns)) {
ret = x;
break;
}
@@ -397,7 +382,7 @@ xmlnode_get_child_with_namespace(const xmlnode *parent, const char *name, const
}
char *
-xmlnode_get_data(xmlnode *node)
+xmlnode_get_data(const xmlnode *node)
{
GString *str = NULL;
xmlnode *c;
@@ -420,7 +405,7 @@ xmlnode_get_data(xmlnode *node)
}
char *
-xmlnode_get_data_unescaped(xmlnode *node)
+xmlnode_get_data_unescaped(const xmlnode *node)
{
char *escaped = xmlnode_get_data(node);
@@ -471,7 +456,7 @@ xmlnode_to_str_helper(const xmlnode *node, int *len, gboolean formatting, int de
g_hash_table_foreach(node->namespace_map,
(GHFunc)xmlnode_to_str_foreach_append_ns, text);
} else if (node->xmlns) {
- if(!node->parent || !node->parent->xmlns || strcmp(node->xmlns, node->parent->xmlns))
+ if(!node->parent || !purple_strequal(node->xmlns, node->parent->xmlns))
{
char *xmlns = g_markup_escape_text(node->xmlns, -1);
g_string_append_printf(text, " xmlns='%s'", xmlns);
@@ -599,7 +584,8 @@ xmlnode_parser_element_start_libxml(void *user_data,
}
for(i=0; i < nb_attributes * 5; i+=5) {
- const char *prefix = (const char *)attributes[i + 1];
+ const char *name = (const char *)attributes[i];
+ const char *prefix = (const char *)attributes[i+1];
char *txt;
int attrib_len = attributes[i+4] - attributes[i+3];
char *attrib = g_malloc(attrib_len + 1);
@@ -608,11 +594,7 @@ xmlnode_parser_element_start_libxml(void *user_data,
txt = attrib;
attrib = purple_unescape_html(txt);
g_free(txt);
- if (prefix && *prefix) {
- xmlnode_set_attrib_with_prefix(node, (const char*) attributes[i], prefix, attrib);
- } else {
- xmlnode_set_attrib(node, (const char*) attributes[i], attrib);
- }
+ xmlnode_set_attrib_full(node, name, NULL, prefix, attrib);
g_free(attrib);
}
@@ -642,7 +624,7 @@ xmlnode_parser_element_text_libxml(void *user_data, const xmlChar *text, int tex
if(!xpd->current || xpd->error)
return;
-
+
if(!text || !text_len)
return;
@@ -752,6 +734,78 @@ xmlnode_from_str(const char *str, gssize size)
return ret;
}
+xmlnode *
+xmlnode_from_file(const char *dir,const char *filename, const char *description, const char *process)
+{
+ gchar *filename_full;
+ GError *error = NULL;
+ gchar *contents = NULL;
+ gsize length;
+ xmlnode *node = NULL;
+
+ g_return_val_if_fail(dir != NULL, NULL);
+
+ purple_debug_info(process, "Reading file %s from directory %s\n",
+ filename, dir);
+
+ filename_full = g_build_filename(dir, filename, NULL);
+
+ if (!g_file_test(filename_full, G_FILE_TEST_EXISTS))
+ {
+ purple_debug_info(process, "File %s does not exist (this is not "
+ "necessarily an error)\n", filename_full);
+ g_free(filename_full);
+ return NULL;
+ }
+
+ if (!g_file_get_contents(filename_full, &contents, &length, &error))
+ {
+ purple_debug_error(process, "Error reading file %s: %s\n",
+ filename_full, error->message);
+ g_error_free(error);
+ }
+
+ if ((contents != NULL) && (length > 0))
+ {
+ node = xmlnode_from_str(contents, length);
+
+ /* If we were unable to parse the file then save its contents to a backup file */
+ if (node == NULL)
+ {
+ gchar *filename_temp, *filename_temp_full;
+
+ filename_temp = g_strdup_printf("%s~", filename);
+ filename_temp_full = g_build_filename(dir, filename_temp, NULL);
+
+ purple_debug_error("util", "Error parsing file %s. Renaming old "
+ "file to %s\n", filename_full, filename_temp);
+ purple_util_write_data_to_file_absolute(filename_temp_full, contents, length);
+
+ g_free(filename_temp_full);
+ g_free(filename_temp);
+ }
+
+ g_free(contents);
+ }
+
+ /* If we could not parse the file then show the user an error message */
+ if (node == NULL)
+ {
+ gchar *title, *msg;
+ title = g_strdup_printf(_("Error Reading %s"), filename);
+ msg = g_strdup_printf(_("An error was encountered reading your "
+ "%s. The file has not been loaded, and the old file "
+ "has been renamed to %s~."), description, filename_full);
+ purple_notify_error(NULL, NULL, title, msg);
+ g_free(title);
+ g_free(msg);
+ }
+
+ g_free(filename_full);
+
+ return node;
+}
+
static void
xmlnode_copy_foreach_ns(gpointer key, gpointer value, gpointer user_data)
{
@@ -816,8 +870,8 @@ xmlnode_get_next_twin(xmlnode *node)
if(ns)
xmlns = xmlnode_get_namespace(sibling);
- if(sibling->type == XMLNODE_TYPE_TAG && !strcmp(node->name, sibling->name) &&
- (!ns || (xmlns && !strcmp(ns, xmlns))))
+ if(sibling->type == XMLNODE_TYPE_TAG && purple_strequal(node->name, sibling->name) &&
+ purple_strequal(ns, xmlns))
return sibling;
}
diff --git a/libpurple/xmlnode.h b/libpurple/xmlnode.h
index 769600ca07..cf74edc23a 100644
--- a/libpurple/xmlnode.h
+++ b/libpurple/xmlnode.h
@@ -26,6 +26,8 @@
#ifndef _PURPLE_XMLNODE_H_
#define _PURPLE_XMLNODE_H_
+#include <glib.h>
+
#ifdef __cplusplus
extern "C" {
#endif
@@ -134,7 +136,7 @@ void xmlnode_insert_data(xmlnode *node, const char *data, gssize size);
* @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);
+char *xmlnode_get_data(const xmlnode *node);
/**
* Gets unescaped data from a node.
@@ -144,7 +146,7 @@ char *xmlnode_get_data(xmlnode *node);
* @return The data from the node, in unescaped form. You must g_free
* this string when finished using it.
*/
-char *xmlnode_get_data_unescaped(xmlnode *node);
+char *xmlnode_get_data_unescaped(const xmlnode *node);
/**
* Sets an attribute for a node.
@@ -155,6 +157,7 @@ char *xmlnode_get_data_unescaped(xmlnode *node);
*/
void xmlnode_set_attrib(xmlnode *node, const char *attr, const char *value);
+#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_XMLNODE_C_)
/**
* Sets a prefixed attribute for a node
*
@@ -162,6 +165,8 @@ void xmlnode_set_attrib(xmlnode *node, const char *attr, const char *value);
* @param attr The name of the attribute to set
* @param prefix The prefix of the attribute to ste
* @param value The value of the attribute
+ *
+ * @deprecated Use xmlnode_set_attrib_full instead.
*/
void xmlnode_set_attrib_with_prefix(xmlnode *node, const char *attr, const char *prefix, const char *value);
@@ -172,8 +177,25 @@ void xmlnode_set_attrib_with_prefix(xmlnode *node, const char *attr, const char
* @param attr The name of the attribute to set
* @param xmlns The namespace of the attribute to ste
* @param value The value of the attribute
+ *
+ * @deprecated Use xmlnode_set_attrib_full instead.
*/
void xmlnode_set_attrib_with_namespace(xmlnode *node, const char *attr, const char *xmlns, const char *value);
+#endif /* PURPLE_DISABLE_DEPRECATED */
+
+/**
+ * Sets a namespaced attribute for a node
+ *
+ * @param node The node to set an attribute for.
+ * @param attr The name of the attribute to set
+ * @param xmlns The namespace of the attribute to ste
+ * @param prefix The prefix of the attribute to ste
+ * @param value The value of the attribute
+ *
+ * @since 2.6.0
+ */
+void xmlnode_set_attrib_full(xmlnode *node, const char *attr, const char *xmlns,
+ const char *prefix, const char *value);
/**
* Gets an attribute from a node.
@@ -246,6 +268,17 @@ void xmlnode_set_prefix(xmlnode *node, const char *prefix);
const char *xmlnode_get_prefix(const xmlnode *node);
/**
+ * Gets the parent node.
+ *
+ * @param child The child node.
+ *
+ * @return The parent or NULL.
+ *
+ * @since 2.6.0
+ */
+xmlnode *xmlnode_get_parent(const xmlnode *child);
+
+/**
* Returns the node in a string of xml.
*
* @param node The starting node to output.
@@ -297,6 +330,25 @@ xmlnode *xmlnode_copy(const xmlnode *src);
*/
void xmlnode_free(xmlnode *node);
+/**
+ * Creates a node from a XML File. Calling this on the
+ * root node of an XML document will parse the entire document
+ * into a tree of nodes, and return the xmlnode of the root.
+ *
+ * @param dir The directory where the file is located
+ * @param filename The filename
+ * @param description A description of the file being parsed. Displayed to
+ * the user if the file cannot be read.
+ * @param process The subsystem that is calling xmlnode_from_file. Used as
+ * the category for debugging.
+ *
+ * @return The new node or NULL if an error occurred.
+ *
+ * @since 2.6.0
+ */
+xmlnode *xmlnode_from_file(const char *dir, const char *filename,
+ const char *description, const char *process);
+
#ifdef __cplusplus
}
#endif
diff --git a/pidgin/Makefile.am b/pidgin/Makefile.am
index 450d19bbbb..058be59c2a 100644
--- a/pidgin/Makefile.am
+++ b/pidgin/Makefile.am
@@ -78,6 +78,8 @@ pidgin_SOURCES = \
pidginstock.c \
gtkaccount.c \
gtkblist.c \
+ gtkblist-theme.c \
+ gtkblist-theme-loader.c \
gtkcelllayout.c \
gtkcellrendererexpander.c \
gtkcellrendererprogress.c \
@@ -94,11 +96,14 @@ pidgin_SOURCES = \
gtkeventloop.c \
gtkexpander.c \
gtkft.c \
+ gtkicon-theme.c \
+ gtkicon-theme-loader.c \
gtkidle.c \
gtkimhtml.c \
gtkimhtmltoolbar.c \
gtklog.c \
gtkmain.c \
+ gtkmedia.c \
gtkmenutray.c \
gtknotify.c \
gtkplugin.c \
@@ -116,6 +121,7 @@ pidgin_SOURCES = \
gtksourceiter.c \
gtksourceundomanager.c \
gtksourceview-marshal.c \
+ gtkstatus-icon-theme.c \
gtkstatusbox.c \
gtkthemes.c \
gtkutils.c \
@@ -127,13 +133,13 @@ pidgin_headers = \
eggtrayicon.h \
gtkaccount.h \
gtkblist.h \
+ gtkblist-theme.h \
+ gtkblist-theme-loader.h \
gtkcelllayout.h \
gtkcellrendererexpander.h \
gtkcellrendererprogress.h \
gtkcellview.h \
gtkcellviewmenuitem.h \
- gtkcellview.h \
- gtkcellviewmenuitem.h \
gtkcertmgr.h \
pidgincombobox.h \
gtkconn.h \
@@ -146,11 +152,14 @@ pidgin_headers = \
gtkeventloop.h \
gtkexpander.h \
gtkft.h \
+ gtkicon-theme.h \
+ gtkicon-theme-loader.h \
gtkidle.h \
gtkgaim-compat.h \
gtkimhtml.h \
gtkimhtmltoolbar.h \
gtklog.h \
+ gtkmedia.h \
gtkmenutray.h \
gtknickcolors.h \
gtknotify.h \
@@ -169,6 +178,7 @@ pidgin_headers = \
gtksourceiter.h \
gtksourceundomanager.h \
gtksourceview-marshal.h \
+ gtkstatus-icon-theme.h \
gtkstatusbox.h \
pidginstock.h \
gtkthemes.h \
diff --git a/pidgin/Makefile.mingw b/pidgin/Makefile.mingw
index 97a683ec5b..e1b7231581 100644
--- a/pidgin/Makefile.mingw
+++ b/pidgin/Makefile.mingw
@@ -56,6 +56,8 @@ LIB_PATHS += -L$(GTK_TOP)/lib \
PIDGIN_C_SRC = \
gtkaccount.c \
gtkblist.c \
+ gtkblist-theme.c \
+ gtkblist-theme-loader.c \
gtkcertmgr.c \
gtkcellrendererexpander.c \
gtkcellrendererprogress.c \
@@ -68,11 +70,14 @@ PIDGIN_C_SRC = \
gtkeventloop.c \
gtkexpander.c \
gtkft.c \
+ gtkicon-theme.c \
+ gtkicon-theme-loader.c \
gtkidle.c \
gtkimhtml.c \
gtkimhtmltoolbar.c \
gtklog.c \
gtkmain.c \
+ gtkmedia.c \
gtkmenutray.c \
gtknotify.c \
gtkplugin.c \
@@ -88,6 +93,7 @@ PIDGIN_C_SRC = \
gtksound.c \
gtksourceiter.c \
gtksourceundomanager.c \
+ gtkstatus-icon-theme.c \
gtkstatusbox.c \
gtkthemes.c \
gtkutils.c \
diff --git a/pidgin/eggtrayicon.c b/pidgin/eggtrayicon.c
index 5fe5c29709..c39127ecb1 100644
--- a/pidgin/eggtrayicon.c
+++ b/pidgin/eggtrayicon.c
@@ -39,7 +39,7 @@ enum {
PROP_0,
PROP_ORIENTATION
};
-
+
static GtkPlugClass *parent_class = NULL;
static void egg_tray_icon_init (EggTrayIcon *icon);
@@ -102,7 +102,7 @@ egg_tray_icon_init (EggTrayIcon *icon)
{
icon->stamp = 1;
icon->orientation = GTK_ORIENTATION_HORIZONTAL;
-
+
gtk_widget_add_events (GTK_WIDGET (icon), GDK_PROPERTY_CHANGE_MASK);
}
@@ -250,7 +250,7 @@ egg_tray_icon_manager_filter (GdkXEvent *xevent, GdkEvent *event, gpointer user_
egg_tray_icon_manager_window_destroyed (icon);
}
}
-
+
return GDK_FILTER_CONTINUE;
}
@@ -296,7 +296,7 @@ egg_tray_icon_send_manager_message (EggTrayIcon *icon,
{
XClientMessageEvent ev;
Display *display;
-
+
ev.type = ClientMessage;
ev.window = window;
ev.message_type = icon->system_tray_opcode_atom;
@@ -335,7 +335,7 @@ egg_tray_icon_update_manager_window (EggTrayIcon *icon,
gboolean dock_if_realized)
{
Display *xdisplay;
-
+
if (icon->manager_window != None)
return;
@@ -345,7 +345,7 @@ egg_tray_icon_update_manager_window (EggTrayIcon *icon,
return;
XGrabServer (xdisplay);
-
+
icon->manager_window = XGetSelectionOwner (xdisplay,
icon->selection_atom);
@@ -355,7 +355,7 @@ egg_tray_icon_update_manager_window (EggTrayIcon *icon,
XUngrabServer (xdisplay);
XFlush (xdisplay);
-
+
if (icon->manager_window != None)
{
GdkWindow *gdkwin;
@@ -380,7 +380,7 @@ static void
egg_tray_icon_manager_window_destroyed (EggTrayIcon *icon)
{
GdkWindow *gdkwin;
-
+
g_return_if_fail (icon->manager_window != None);
#if GTK_CHECK_VERSION(2,1,0)
@@ -400,9 +400,35 @@ egg_tray_icon_manager_window_destroyed (EggTrayIcon *icon)
static gboolean
transparent_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data)
{
- gdk_window_clear_area (widget->window, event->area.x, event->area.y,
- event->area.width, event->area.height);
- return FALSE;
+ GtkWidget *focus_child = NULL;
+ gint border_width, x, y, width, height;
+ gboolean retval = FALSE;
+
+ gdk_window_clear_area (widget->window, event->area.x, event->area.y,
+ event->area.width, event->area.height);
+
+ if (GTK_WIDGET_CLASS (parent_class)->expose_event)
+ retval = GTK_WIDGET_CLASS (parent_class)->expose_event (widget, event);
+
+ if (GTK_CONTAINER (widget)->focus_child)
+ focus_child = GTK_CONTAINER (GTK_CONTAINER (widget)->focus_child)->focus_child;
+ if (focus_child && GTK_WIDGET_HAS_FOCUS (focus_child))
+ {
+ border_width = GTK_CONTAINER (widget)->border_width;
+
+ x = widget->allocation.x + border_width;
+ y = widget->allocation.y + border_width;
+
+ width = widget->allocation.width - 2 * border_width;
+ height = widget->allocation.height - 2 * border_width;
+
+ gtk_paint_focus (widget->style, widget->window,
+ GTK_WIDGET_STATE (widget),
+ &event->area, widget, "tray_icon",
+ x, y, width, height);
+ }
+
+ return retval;
}
static void
@@ -458,9 +484,9 @@ egg_tray_icon_realize (GtkWidget *widget)
screen);
icon->selection_atom = XInternAtom (xdisplay, buffer, False);
-
+
icon->manager_atom = XInternAtom (xdisplay, "MANAGER", False);
-
+
icon->system_tray_opcode_atom = XInternAtom (xdisplay,
"_NET_SYSTEM_TRAY_OPCODE",
False);
@@ -514,11 +540,11 @@ egg_tray_icon_send_message (EggTrayIcon *icon,
gint len)
{
guint stamp;
-
+
g_return_val_if_fail (EGG_IS_TRAY_ICON (icon), 0);
g_return_val_if_fail (timeout >= 0, 0);
g_return_val_if_fail (message != NULL, 0);
-
+
if (icon->manager_window == None)
return 0;
@@ -526,7 +552,7 @@ egg_tray_icon_send_message (EggTrayIcon *icon,
len = strlen (message);
stamp = icon->stamp++;
-
+
/* Get ready to send the message */
egg_tray_icon_send_manager_message (icon, SYSTEM_TRAY_BEGIN_MESSAGE,
(Window)gtk_plug_get_id (GTK_PLUG (icon)),
@@ -576,7 +602,7 @@ egg_tray_icon_cancel_message (EggTrayIcon *icon,
{
g_return_if_fail (EGG_IS_TRAY_ICON (icon));
g_return_if_fail (id > 0);
-
+
egg_tray_icon_send_manager_message (icon, SYSTEM_TRAY_CANCEL_MESSAGE,
(Window)gtk_plug_get_id (GTK_PLUG (icon)),
id, 0, 0);
diff --git a/pidgin/eggtrayicon.h b/pidgin/eggtrayicon.h
index 0266ca91e9..f5649f727a 100644
--- a/pidgin/eggtrayicon.h
+++ b/pidgin/eggtrayicon.h
@@ -21,8 +21,7 @@
#ifndef __EGG_TRAY_ICON_H__
#define __EGG_TRAY_ICON_H__
-#include <gtk/gtkplug.h>
-#include <gtk/gtkversion.h>
+#include <gtk/gtk.h>
#include <gdk/gdkx.h>
G_BEGIN_DECLS
@@ -33,7 +32,7 @@ G_BEGIN_DECLS
#define EGG_IS_TRAY_ICON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EGG_TYPE_TRAY_ICON))
#define EGG_IS_TRAY_ICON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EGG_TYPE_TRAY_ICON))
#define EGG_TRAY_ICON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EGG_TYPE_TRAY_ICON, EggTrayIconClass))
-
+
typedef struct _EggTrayIcon EggTrayIcon;
typedef struct _EggTrayIconClass EggTrayIconClass;
@@ -42,7 +41,7 @@ struct _EggTrayIcon
GtkPlug parent_instance;
guint stamp;
-
+
Atom selection_atom;
Atom manager_atom;
Atom system_tray_opcode_atom;
@@ -74,7 +73,7 @@ void egg_tray_icon_cancel_message (EggTrayIcon *icon,
guint id);
GtkOrientation egg_tray_icon_get_orientation (EggTrayIcon *icon);
-
+
G_END_DECLS
#endif /* __EGG_TRAY_ICON_H__ */
diff --git a/pidgin/getopt.c b/pidgin/getopt.c
index c73442bd87..7399c02097 100644
--- a/pidgin/getopt.c
+++ b/pidgin/getopt.c
@@ -178,7 +178,7 @@ static enum
{
REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
} ordering;
-
+
#ifdef __GNU_LIBRARY__
/* We want to avoid inclusion of string.h with non-GNU libraries
because there are many ways it can cause trouble.
@@ -219,7 +219,7 @@ my_bcopy (from, to, size)
to[i] = from[i];
}
#endif /* GNU C library. */
-
+
/* Handle permutation of arguments. */
/* Describe the part of ARGV that contains non-options that have
@@ -259,7 +259,7 @@ exchange (argv)
first_nonopt += (optind - last_nonopt);
last_nonopt = optind;
}
-
+
/* Scan elements of ARGV (whose length is ARGC) for option characters
given in OPTSTRING.
@@ -663,7 +663,7 @@ getopt (argc, argv, optstring)
}
#endif /* _LIBC or not __GNU_LIBRARY__. */
-
+
#ifdef TEST
/* Compile with -DTEST to make an executable for use in testing
diff --git a/pidgin/getopt1.c b/pidgin/getopt1.c
index df69cb59bf..d381d28101 100644
--- a/pidgin/getopt1.c
+++ b/pidgin/getopt1.c
@@ -81,7 +81,7 @@ getopt_long_only (argc, argv, options, long_options, opt_index)
#endif /* _LIBC or not __GNU_LIBRARY__. */
-
+
#ifdef TEST
#include <stdio.h>
diff --git a/pidgin/gtkaccount.c b/pidgin/gtkaccount.c
index 3f9985c3d0..98abdafb3d 100644
--- a/pidgin/gtkaccount.c
+++ b/pidgin/gtkaccount.c
@@ -51,7 +51,7 @@ enum
{
COLUMN_ICON,
COLUMN_BUDDYICON,
- COLUMN_SCREENNAME,
+ COLUMN_USERNAME,
COLUMN_ENABLED,
COLUMN_PROTOCOL,
COLUMN_DATA,
@@ -78,7 +78,7 @@ typedef struct
GtkListStore *model;
GtkTreeIter drag_iter;
- GtkTreeViewColumn *screenname_col;
+ GtkTreeViewColumn *username_col;
} AccountsWindow;
@@ -106,8 +106,8 @@ typedef struct
GtkSizeGroup *sg;
GtkWidget *window;
+ GtkWidget *notebook;
GtkWidget *top_vbox;
- GtkWidget *bottom_vbox;
GtkWidget *ok_button;
GtkWidget *register_button;
@@ -115,7 +115,7 @@ typedef struct
GtkWidget *login_frame;
GtkWidget *protocol_menu;
GtkWidget *password_box;
- GtkWidget *screenname_entry;
+ GtkWidget *username_entry;
GtkWidget *password_entry;
GtkWidget *alias_entry;
GtkWidget *remember_pass_check;
@@ -157,8 +157,7 @@ static void set_account(GtkListStore *store, GtkTreeIter *iter,
**************************************************************************/
static void add_login_options(AccountPrefsDialog *dialog, GtkWidget *parent);
static void add_user_options(AccountPrefsDialog *dialog, GtkWidget *parent);
-static void add_protocol_options(AccountPrefsDialog *dialog,
- GtkWidget *parent);
+static void add_protocol_options(AccountPrefsDialog *dialog);
static void add_proxy_options(AccountPrefsDialog *dialog, GtkWidget *parent);
static GtkWidget *
@@ -237,7 +236,7 @@ set_account_protocol_cb(GtkWidget *item, const char *id,
add_login_options(dialog, dialog->top_vbox);
add_user_options(dialog, dialog->top_vbox);
- add_protocol_options(dialog, dialog->bottom_vbox);
+ add_protocol_options(dialog);
gtk_widget_grab_focus(dialog->protocol_menu);
@@ -256,7 +255,7 @@ set_account_protocol_cb(GtkWidget *item, const char *id,
}
static gboolean
-screenname_focus_cb(GtkWidget *widget, GdkEventFocus *event, AccountPrefsDialog *dialog)
+username_focus_cb(GtkWidget *widget, GdkEventFocus *event, AccountPrefsDialog *dialog)
{
GHashTable *table;
const char *label;
@@ -275,7 +274,7 @@ screenname_focus_cb(GtkWidget *widget, GdkEventFocus *event, AccountPrefsDialog
}
static void
-screenname_changed_cb(GtkEntry *entry, AccountPrefsDialog *dialog)
+username_changed_cb(GtkEntry *entry, AccountPrefsDialog *dialog)
{
if (dialog->ok_button)
gtk_widget_set_sensitive(dialog->ok_button,
@@ -290,7 +289,7 @@ screenname_changed_cb(GtkEntry *entry, AccountPrefsDialog *dialog)
}
static gboolean
-screenname_nofocus_cb(GtkWidget *widget, GdkEventFocus *event, AccountPrefsDialog *dialog)
+username_nofocus_cb(GtkWidget *widget, GdkEventFocus *event, AccountPrefsDialog *dialog)
{
GdkColor color = {0, 34952, 35466, 34181};
GHashTable *table = NULL;
@@ -301,13 +300,13 @@ screenname_nofocus_cb(GtkWidget *widget, GdkEventFocus *event, AccountPrefsDialo
label = g_hash_table_lookup(table, "login_label");
if (*gtk_entry_get_text(GTK_ENTRY(widget)) == '\0') {
- /* We have to avoid hitting the screenname_changed_cb function
+ /* We have to avoid hitting the username_changed_cb function
* because it enables buttons we don't want enabled yet ;)
*/
- g_signal_handlers_block_by_func(widget, G_CALLBACK(screenname_changed_cb), dialog);
+ g_signal_handlers_block_by_func(widget, G_CALLBACK(username_changed_cb), dialog);
gtk_entry_set_text(GTK_ENTRY(widget), label);
/* Make sure we can hit it again */
- g_signal_handlers_unblock_by_func(widget, G_CALLBACK(screenname_changed_cb), dialog);
+ g_signal_handlers_unblock_by_func(widget, G_CALLBACK(username_changed_cb), dialog);
gtk_widget_modify_text(widget, GTK_STATE_NORMAL, &color);
}
@@ -393,7 +392,7 @@ update_editable(PurpleConnection *gc, AccountPrefsDialog *dialog)
set = !(purple_account_is_connected(dialog->account) || purple_account_is_connecting(dialog->account));
gtk_widget_set_sensitive(dialog->protocol_menu, set);
- gtk_widget_set_sensitive(dialog->screenname_entry, set);
+ gtk_widget_set_sensitive(dialog->username_entry, set);
for (l = dialog->user_split_entries ; l != NULL ; l = l->next)
gtk_widget_set_sensitive((GtkWidget *)l->data, set);
@@ -414,7 +413,11 @@ add_login_options(AccountPrefsDialog *dialog, GtkWidget *parent)
if (dialog->protocol_menu != NULL)
{
+#if GTK_CHECK_VERSION(2,12,0)
+ g_object_ref(G_OBJECT(dialog->protocol_menu));
+#else
gtk_widget_ref(dialog->protocol_menu);
+#endif
hbox = g_object_get_data(G_OBJECT(dialog->protocol_menu), "container");
gtk_container_remove(GTK_CONTAINER(hbox), dialog->protocol_menu);
}
@@ -441,21 +444,29 @@ add_login_options(AccountPrefsDialog *dialog, GtkWidget *parent)
{
dialog->protocol_menu = pidgin_protocol_option_menu_new(
dialog->protocol_id, G_CALLBACK(set_account_protocol_cb), dialog);
+#if GTK_CHECK_VERSION(2,12,0)
+ g_object_ref(G_OBJECT(dialog->protocol_menu));
+#else
gtk_widget_ref(dialog->protocol_menu);
+#endif
}
hbox = add_pref_box(dialog, vbox, _("Pro_tocol:"), dialog->protocol_menu);
g_object_set_data(G_OBJECT(dialog->protocol_menu), "container", hbox);
+#if GTK_CHECK_VERSION(2,12,0)
+ g_object_unref(G_OBJECT(dialog->protocol_menu));
+#else
gtk_widget_unref(dialog->protocol_menu);
+#endif
- /* Screen name */
- dialog->screenname_entry = gtk_entry_new();
+ /* Username */
+ dialog->username_entry = gtk_entry_new();
#if GTK_CHECK_VERSION(2,10,0)
- g_object_set(G_OBJECT(dialog->screenname_entry), "truncate-multiline", TRUE, NULL);
+ g_object_set(G_OBJECT(dialog->username_entry), "truncate-multiline", TRUE, NULL);
#endif
- add_pref_box(dialog, vbox, _("_Username:"), dialog->screenname_entry);
+ add_pref_box(dialog, vbox, _("_Username:"), dialog->username_entry);
if (dialog->account != NULL)
username = g_strdup(purple_account_get_username(dialog->account));
@@ -468,17 +479,17 @@ add_login_options(AccountPrefsDialog *dialog, GtkWidget *parent)
table = dialog->prpl_info->get_account_text_table(NULL);
label = g_hash_table_lookup(table, "login_label");
- gtk_entry_set_text(GTK_ENTRY(dialog->screenname_entry), label);
- g_signal_connect(G_OBJECT(dialog->screenname_entry), "focus-in-event",
- G_CALLBACK(screenname_focus_cb), dialog);
- g_signal_connect(G_OBJECT(dialog->screenname_entry), "focus-out-event",
- G_CALLBACK(screenname_nofocus_cb), dialog);
- gtk_widget_modify_text(dialog->screenname_entry, GTK_STATE_NORMAL, &color);
+ gtk_entry_set_text(GTK_ENTRY(dialog->username_entry), label);
+ g_signal_connect(G_OBJECT(dialog->username_entry), "focus-in-event",
+ G_CALLBACK(username_focus_cb), dialog);
+ g_signal_connect(G_OBJECT(dialog->username_entry), "focus-out-event",
+ G_CALLBACK(username_nofocus_cb), dialog);
+ gtk_widget_modify_text(dialog->username_entry, GTK_STATE_NORMAL, &color);
g_hash_table_destroy(table);
}
- g_signal_connect(G_OBJECT(dialog->screenname_entry), "changed",
- G_CALLBACK(screenname_changed_cb), dialog);
+ g_signal_connect(G_OBJECT(dialog->username_entry), "changed",
+ G_CALLBACK(username_changed_cb), dialog);
/* Do the user split thang */
if (dialog->prpl_info == NULL)
@@ -547,7 +558,7 @@ add_login_options(AccountPrefsDialog *dialog, GtkWidget *parent)
}
if (username != NULL)
- gtk_entry_set_text(GTK_ENTRY(dialog->screenname_entry), username);
+ gtk_entry_set_text(GTK_ENTRY(dialog->username_entry), username);
g_free(username);
@@ -590,7 +601,7 @@ add_login_options(AccountPrefsDialog *dialog, GtkWidget *parent)
gtk_widget_hide(dialog->remember_pass_check);
}
- /* Do not let the user change the protocol/screenname while connected. */
+ /* Do not let the user change the protocol/username while connected. */
update_editable(NULL, dialog);
purple_signal_connect(purple_connections_get_handle(), "signing-on", dialog,
G_CALLBACK(update_editable), dialog);
@@ -733,11 +744,11 @@ add_user_options(AccountPrefsDialog *dialog, GtkWidget *parent)
}
static void
-add_protocol_options(AccountPrefsDialog *dialog, GtkWidget *parent)
+add_protocol_options(AccountPrefsDialog *dialog)
{
PurpleAccountOption *option;
PurpleAccount *account;
- GtkWidget *frame, *vbox, *check, *entry, *combo;
+ GtkWidget *vbox, *check, *entry, *combo;
GList *list, *node;
gint i, idx, int_value;
GtkListStore *model;
@@ -752,7 +763,7 @@ add_protocol_options(AccountPrefsDialog *dialog, GtkWidget *parent)
ProtocolOptEntry *opt_entry;
if (dialog->protocol_frame != NULL) {
- gtk_widget_destroy(dialog->protocol_frame);
+ gtk_notebook_remove_page (GTK_NOTEBOOK(dialog->notebook), 1);
dialog->protocol_frame = NULL;
}
@@ -769,19 +780,11 @@ add_protocol_options(AccountPrefsDialog *dialog, GtkWidget *parent)
account = dialog->account;
- /* Build the protocol options frame. */
- g_snprintf(buf, sizeof(buf), _("%s Options"), dialog->plugin->info->name);
-
- frame = pidgin_make_frame(parent, buf);
- dialog->protocol_frame =
- gtk_widget_get_parent(gtk_widget_get_parent(frame));
-
- gtk_box_reorder_child(GTK_BOX(parent), dialog->protocol_frame, 0);
- gtk_widget_show(dialog->protocol_frame);
-
/* Main vbox */
- vbox = gtk_vbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
- gtk_container_add(GTK_CONTAINER(frame), vbox);
+ dialog->protocol_frame = vbox = gtk_vbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
+ gtk_container_set_border_width(GTK_CONTAINER(vbox), PIDGIN_HIG_BORDER);
+ gtk_notebook_insert_page(GTK_NOTEBOOK(dialog->notebook), vbox,
+ gtk_label_new_with_mnemonic(_("_Advanced")), 1);
gtk_widget_show(vbox);
for (l = dialog->prpl_info->protocol_options; l != NULL; l = l->next)
@@ -1046,22 +1049,15 @@ static void
add_proxy_options(AccountPrefsDialog *dialog, GtkWidget *parent)
{
PurpleProxyInfo *proxy_info;
- GtkWidget *frame;
GtkWidget *vbox;
GtkWidget *vbox2;
if (dialog->proxy_frame != NULL)
gtk_widget_destroy(dialog->proxy_frame);
- frame = pidgin_make_frame(parent, _("Proxy Options"));
- dialog->proxy_frame = gtk_widget_get_parent(gtk_widget_get_parent(frame));
-
- gtk_box_reorder_child(GTK_BOX(parent), dialog->proxy_frame, 1);
- gtk_widget_show(dialog->proxy_frame);
-
/* Main vbox */
- vbox = gtk_vbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
- gtk_container_add(GTK_CONTAINER(frame), vbox);
+ dialog->proxy_frame = vbox = gtk_vbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
+ gtk_container_add(GTK_CONTAINER(parent), vbox);
gtk_widget_show(vbox);
/* Proxy Type drop-down. */
@@ -1193,7 +1189,7 @@ ok_account_prefs_cb(GtkWidget *w, AccountPrefsDialog *dialog)
PurpleAccount *account;
/* Build the username string. */
- username = g_strdup(gtk_entry_get_text(GTK_ENTRY(dialog->screenname_entry)));
+ username = g_strdup(gtk_entry_get_text(GTK_ENTRY(dialog->username_entry)));
if (dialog->prpl_info != NULL)
{
@@ -1496,15 +1492,15 @@ pidgin_account_dialog_show(PidginAccountDialogType type,
dialog->prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(dialog->plugin);
dialog->window = win = pidgin_create_dialog((type == PIDGIN_ADD_ACCOUNT_DIALOG) ? _("Add Account") : _("Modify Account"),
- PIDGIN_HIG_BORDER, "account", FALSE);
+ PIDGIN_HIG_BOX_SPACE, "account", FALSE);
g_signal_connect(G_OBJECT(win), "delete_event",
G_CALLBACK(account_win_destroy_cb), dialog);
/* Setup the vbox */
- main_vbox = pidgin_dialog_get_vbox_with_properties(GTK_DIALOG(win), FALSE, PIDGIN_HIG_BORDER);
+ main_vbox = pidgin_dialog_get_vbox_with_properties(GTK_DIALOG(win), FALSE, PIDGIN_HIG_BOX_SPACE);
- notebook = gtk_notebook_new();
+ dialog->notebook = notebook = gtk_notebook_new();
gtk_box_pack_start(GTK_BOX(main_vbox), notebook, FALSE, FALSE, 0);
gtk_widget_show(GTK_WIDGET(notebook));
@@ -1530,15 +1526,15 @@ pidgin_account_dialog_show(PidginAccountDialogType type,
if (!dialog->prpl_info || !dialog->prpl_info->register_user)
gtk_widget_hide(button);
- /* Setup the page with 'Advanced'. */
- dialog->bottom_vbox = dbox = gtk_vbox_new(FALSE, PIDGIN_HIG_BORDER);
+ /* Setup the page with 'Advanced' (protocol options). */
+ add_protocol_options(dialog);
+
+ /* Setup the page with 'Proxy'. */
+ dbox = gtk_vbox_new(FALSE, PIDGIN_HIG_BORDER);
gtk_container_set_border_width(GTK_CONTAINER(dbox), PIDGIN_HIG_BORDER);
gtk_notebook_append_page(GTK_NOTEBOOK(notebook), dbox,
- gtk_label_new_with_mnemonic(_("_Advanced")));
+ gtk_label_new_with_mnemonic(_("_Proxy")));
gtk_widget_show(dbox);
-
- /** Setup the bottom frames. */
- add_protocol_options(dialog, dbox);
add_proxy_options(dialog, dbox);
/* Cancel button */
@@ -1933,7 +1929,7 @@ add_columns(GtkWidget *treeview, AccountsWindow *dialog)
gtk_tree_view_column_set_resizable(column, FALSE);
gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
- /* Screen Name column */
+ /* Username column */
column = gtk_tree_view_column_new();
gtk_tree_view_column_set_title(column, _("Username"));
gtk_tree_view_column_set_resizable(column, TRUE);
@@ -1945,12 +1941,12 @@ add_columns(GtkWidget *treeview, AccountsWindow *dialog)
gtk_tree_view_column_add_attribute(column, renderer,
"pixbuf", COLUMN_BUDDYICON);
- /* Screen Name */
+ /* Username */
renderer = gtk_cell_renderer_text_new();
gtk_tree_view_column_pack_start(column, renderer, TRUE);
gtk_tree_view_column_add_attribute(column, renderer,
- "text", COLUMN_SCREENNAME);
- dialog->screenname_col = column;
+ "text", COLUMN_USERNAME);
+ dialog->username_col = column;
/* Protocol name */
@@ -2016,7 +2012,7 @@ set_account(GtkListStore *store, GtkTreeIter *iter, PurpleAccount *account, GdkP
gtk_list_store_set(store, iter,
COLUMN_ICON, pixbuf,
COLUMN_BUDDYICON, buddyicon,
- COLUMN_SCREENNAME, purple_account_get_username(account),
+ COLUMN_USERNAME, purple_account_get_username(account),
COLUMN_ENABLED, purple_account_get_enabled(account, PIDGIN_UI),
COLUMN_PROTOCOL, purple_account_get_protocol_name(account),
COLUMN_DATA, account,
@@ -2190,7 +2186,7 @@ create_accounts_list(AccountsWindow *dialog)
dialog->model = gtk_list_store_new(NUM_COLUMNS,
GDK_TYPE_PIXBUF, /* COLUMN_ICON */
GDK_TYPE_PIXBUF, /* COLUMN_BUDDYICON */
- G_TYPE_STRING, /* COLUMN_SCREENNAME */
+ G_TYPE_STRING, /* COLUMN_USERNAME */
G_TYPE_BOOLEAN, /* COLUMN_ENABLED */
G_TYPE_STRING, /* COLUMN_PROTOCOL */
G_TYPE_POINTER /* COLUMN_DATA */
diff --git a/pidgin/gtkblist-theme-loader.c b/pidgin/gtkblist-theme-loader.c
new file mode 100644
index 0000000000..8bff653bdf
--- /dev/null
+++ b/pidgin/gtkblist-theme-loader.c
@@ -0,0 +1,247 @@
+/*
+ * GTKBlistThemeLoader for Pidgin
+ *
+ * Pidgin is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "xmlnode.h"
+
+#include "gtkblist-theme-loader.h"
+#include "gtkblist-theme.h"
+
+/******************************************************************************
+ * Globals
+ *****************************************************************************/
+
+#define DEFAULT_TEXT_COLOR "black"
+
+/*****************************************************************************
+ * Buddy List Theme Builder
+ *****************************************************************************/
+
+static PidginThemeFont *
+pidgin_theme_font_parse(xmlnode *node)
+{
+ const char *font;
+ const char *colordesc;
+ GdkColor color;
+
+ font = xmlnode_get_attrib(node, "font");
+
+ if ((colordesc = xmlnode_get_attrib(node, "color")) == NULL ||
+ !gdk_color_parse(colordesc, &color))
+ gdk_color_parse(DEFAULT_TEXT_COLOR, &color);
+
+ return pidgin_theme_font_new(font, &color);
+}
+
+static PurpleTheme *
+pidgin_blist_loader_build(const gchar *dir)
+{
+ xmlnode *root_node = NULL, *sub_node, *sub_sub_node;
+ gchar *filename_full, *data;
+ const gchar *temp;
+ gboolean success = TRUE;
+ GdkColor bgcolor, expanded_bgcolor, collapsed_bgcolor, contact_color;
+ PidginThemeFont *expanded, *collapsed, *contact, *online, *away, *offline, *idle, *message, *message_nick_said, *status;
+ PidginBlistLayout layout;
+ PidginBlistTheme *theme;
+ int i;
+ struct {
+ const char *tag;
+ PidginThemeFont **font;
+ } lookups[] = {
+ {"contact_text", &contact},
+ {"online_text", &online},
+ {"away_text", &away},
+ {"offline_text", &offline},
+ {"idle_text", &idle},
+ {"message_text", &message},
+ {"message_nick_said_text", &message_nick_said},
+ {"status_text", &status},
+ {NULL, NULL}
+ };
+
+ expanded = NULL;
+ collapsed = NULL;
+ contact = NULL;
+ online = NULL;
+ away = NULL;
+ offline = NULL;
+ idle = NULL;
+ message = NULL;
+ message_nick_said = NULL;
+ status = NULL;
+
+ /* Find the theme file */
+ g_return_val_if_fail(dir != NULL, NULL);
+ filename_full = g_build_filename(dir, "theme.xml", NULL);
+
+ if (g_file_test(filename_full, G_FILE_TEST_IS_REGULAR))
+ root_node = xmlnode_from_file(dir, "theme.xml", "buddy list themes", "blist-loader");
+
+ g_free(filename_full);
+ g_return_val_if_fail(root_node != NULL, NULL);
+
+ sub_node = xmlnode_get_child(root_node, "description");
+ data = xmlnode_get_data(sub_node);
+
+ /* <blist> */
+ if ((success = (sub_node = xmlnode_get_child(root_node, "blist")) != NULL)) {
+ if ((temp = xmlnode_get_attrib(sub_node, "color")) != NULL && gdk_color_parse(temp, &bgcolor))
+ gdk_colormap_alloc_color(gdk_colormap_get_system(), &bgcolor, FALSE, TRUE);
+ else
+ memset(&bgcolor, 0, sizeof(GdkColor));
+ }
+
+ /* <groups> */
+ if ((success = (success && (sub_node = xmlnode_get_child(root_node, "groups")) != NULL
+ && (sub_sub_node = xmlnode_get_child(sub_node, "expanded")) != NULL)))
+ {
+ expanded = pidgin_theme_font_parse(sub_sub_node);
+
+ if ((temp = xmlnode_get_attrib(sub_sub_node, "background")) != NULL && gdk_color_parse(temp, &expanded_bgcolor))
+ gdk_colormap_alloc_color(gdk_colormap_get_system(), &expanded_bgcolor, FALSE, TRUE);
+ else
+ memset(&expanded_bgcolor, 0, sizeof(GdkColor));
+ }
+
+ if ((success = (success && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "collapsed")) != NULL)))
+ {
+ collapsed = pidgin_theme_font_parse(sub_sub_node);
+
+ if ((temp = xmlnode_get_attrib(sub_sub_node, "background")) != NULL && gdk_color_parse(temp, &collapsed_bgcolor))
+ gdk_colormap_alloc_color(gdk_colormap_get_system(), &collapsed_bgcolor, FALSE, TRUE);
+ else
+ memset(&collapsed_bgcolor, 0, sizeof(GdkColor));
+ }
+
+ /* <buddys> */
+ if ((success = (success && (sub_node = xmlnode_get_child(root_node, "buddys")) != NULL &&
+ (sub_sub_node = xmlnode_get_child(sub_node, "placement")) != NULL)))
+ {
+ layout.status_icon = (temp = xmlnode_get_attrib(sub_sub_node, "status_icon")) != NULL ? atoi(temp) : 0;
+ layout.text = (temp = xmlnode_get_attrib(sub_sub_node, "name")) != NULL ? atoi(temp) : 1;
+ layout.emblem = (temp = xmlnode_get_attrib(sub_sub_node, "emblem")) != NULL ? atoi(temp) : 2;
+ layout.protocol_icon = (temp = xmlnode_get_attrib(sub_sub_node, "protocol_icon")) != NULL ? atoi(temp) : 3;
+ layout.buddy_icon = (temp = xmlnode_get_attrib(sub_sub_node, "buddy_icon")) != NULL ? atoi(temp) : 4;
+ layout.show_status = (temp = xmlnode_get_attrib(sub_sub_node, "status_icon")) != NULL ? atoi(temp) != 0 : 1;
+ }
+
+ if ((success = (success && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "background")) != NULL))) {
+ if(gdk_color_parse(xmlnode_get_attrib(sub_sub_node, "color"), &contact_color))
+ gdk_colormap_alloc_color(gdk_colormap_get_system(), &contact_color, FALSE, TRUE);
+ else
+ memset(&contact_color, 0, sizeof(GdkColor));
+ }
+
+ for (i = 0; success && lookups[i].tag; i++) {
+ if ((success = (sub_node != NULL &&
+ (sub_sub_node = xmlnode_get_child(sub_node, lookups[i].tag)) != NULL))) {
+ *(lookups[i].font) = pidgin_theme_font_parse(sub_sub_node);
+ } else {
+ *(lookups[i].font) = NULL;
+ }
+ }
+
+ /* name is required for theme manager */
+ success = (success && xmlnode_get_attrib(root_node, "name") != NULL);
+
+ /* the new theme */
+ theme = g_object_new(PIDGIN_TYPE_BLIST_THEME,
+ "type", "blist",
+ "name", xmlnode_get_attrib(root_node, "name"),
+ "author", xmlnode_get_attrib(root_node, "author"),
+ "image", xmlnode_get_attrib(root_node, "image"),
+ "directory", dir,
+ "description", data,
+ "background-color", &bgcolor,
+ "layout", &layout,
+ "expanded-color", &expanded_bgcolor,
+ "expanded-text", expanded,
+ "collapsed-color", &collapsed_bgcolor,
+ "collapsed-text", collapsed,
+ "contact-color", &contact_color,
+ "contact", contact,
+ "online", online,
+ "away", away,
+ "offline", offline,
+ "idle", idle,
+ "message", message,
+ "message_nick_said", message_nick_said,
+ "status", status, NULL);
+
+ for (i = 0; lookups[i].tag; i++) {
+ if (*lookups[i].font) {
+ pidgin_theme_font_free(*lookups[i].font);
+ }
+ }
+
+ pidgin_theme_font_free(expanded);
+ pidgin_theme_font_free(collapsed);
+
+ xmlnode_free(root_node);
+ g_free(data);
+
+ /* malformed xml file - also frees all partial data*/
+ if (!success) {
+ g_object_unref(theme);
+ theme = NULL;
+ }
+
+ return PURPLE_THEME(theme);
+}
+
+/******************************************************************************
+ * GObject Stuff
+ *****************************************************************************/
+
+static void
+pidgin_blist_theme_loader_class_init(PidginBlistThemeLoaderClass *klass)
+{
+ PurpleThemeLoaderClass *loader_klass = PURPLE_THEME_LOADER_CLASS(klass);
+
+ loader_klass->purple_theme_loader_build = pidgin_blist_loader_build;
+}
+
+GType
+pidgin_blist_theme_loader_get_type(void)
+{
+ static GType type = 0;
+ if (type == 0) {
+ static const GTypeInfo info = {
+ sizeof(PidginBlistThemeLoaderClass),
+ NULL, /* base_init */
+ NULL, /* base_finalize */
+ (GClassInitFunc)pidgin_blist_theme_loader_class_init, /* class_init */
+ NULL, /* class_finalize */
+ NULL, /* class_data */
+ sizeof(PidginBlistThemeLoader),
+ 0, /* n_preallocs */
+ NULL, /* instance_init */
+ NULL, /* value table */
+ };
+ type = g_type_register_static(PURPLE_TYPE_THEME_LOADER,
+ "PidginBlistThemeLoader", &info, 0);
+ }
+ return type;
+}
diff --git a/pidgin/gtkblist-theme-loader.h b/pidgin/gtkblist-theme-loader.h
new file mode 100644
index 0000000000..049c1c6ceb
--- /dev/null
+++ b/pidgin/gtkblist-theme-loader.h
@@ -0,0 +1,71 @@
+/**
+ * @file gtkblist-theme-loader.h Pidgin Buddy List Theme Loader Class API
+ */
+
+/* pidgin
+ *
+ * Pidgin is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#ifndef PIDGIN_BLIST_THEME_LOADER_H
+#define PIDGIN_BLIST_THEME_LOADER_H
+
+#include <glib.h>
+#include <glib-object.h>
+#include "theme-loader.h"
+
+/**
+ * A pidgin buddy list theme loader. extends PurpleThemeLoader (theme-loader.h)
+ * This is a class designed to build sound themes
+ *
+ * PidginBlistThemeLoader is a GObject.
+ */
+typedef struct _PidginBlistThemeLoader PidginBlistThemeLoader;
+typedef struct _PidginBlistThemeLoaderClass PidginBlistThemeLoaderClass;
+
+#define PIDGIN_TYPE_BLIST_THEME_LOADER (pidgin_blist_theme_loader_get_type ())
+#define PIDGIN_BLIST_THEME_LOADER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PIDGIN_TYPE_BLIST_THEME_LOADER, PidginBlistThemeLoader))
+#define PIDGIN_BLIST_THEME_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PIDGIN_TYPE_BLIST_THEME_LOADER, PidginBlistThemeLoaderClass))
+#define PIDGIN_IS_BLIST_THEME_LOADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PIDGIN_TYPE_BLIST_THEME_LOADER))
+#define PIDGIN_IS_BLIST_THEME_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PIDGIN_TYPE_BLIST_THEME_LOADER))
+#define PIDGIN_BLIST_THEME_LOADER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PIDGIN_TYPE_BLIST_THEME_LOADER, PidginBlistThemeLoaderClass))
+
+struct _PidginBlistThemeLoader
+{
+ PurpleThemeLoader parent;
+};
+
+struct _PidginBlistThemeLoaderClass
+{
+ PurpleThemeLoaderClass parent_class;
+};
+
+/**************************************************************************/
+/** @name Buddy List Theme-Loader API */
+/**************************************************************************/
+G_BEGIN_DECLS
+
+/**
+ * GObject foo.
+ * @internal.
+ */
+GType pidgin_blist_theme_loader_get_type(void);
+
+G_END_DECLS
+#endif /* PIDGIN_BLIST_THEME_LOADER_H */
diff --git a/pidgin/gtkblist-theme.c b/pidgin/gtkblist-theme.c
new file mode 100644
index 0000000000..3ca355d4d3
--- /dev/null
+++ b/pidgin/gtkblist-theme.c
@@ -0,0 +1,876 @@
+/*
+ * Buddy List Themes for Pidgin
+ *
+ * Pidgin is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#include "internal.h"
+#include "gtkblist-theme.h"
+
+#define PIDGIN_BLIST_THEME_GET_PRIVATE(Gobject) \
+ ((PidginBlistThemePrivate *) ((PIDGIN_BLIST_THEME(Gobject))->priv))
+
+/******************************************************************************
+ * Structs
+ *****************************************************************************/
+
+typedef struct {
+ /* Buddy list */
+ gdouble opacity;
+ GdkColor *bgcolor;
+ PidginBlistLayout *layout;
+
+ /* groups */
+ GdkColor *expanded_color;
+ PidginThemeFont *expanded;
+
+ GdkColor *collapsed_color;
+ PidginThemeFont *collapsed;
+
+ /* buddy */
+ GdkColor *contact_color;
+
+ PidginThemeFont *contact;
+
+ PidginThemeFont *online;
+ PidginThemeFont *away;
+ PidginThemeFont *offline;
+ PidginThemeFont *idle;
+ PidginThemeFont *message;
+ PidginThemeFont *message_nick_said;
+
+ PidginThemeFont *status;
+
+} PidginBlistThemePrivate;
+
+struct _PidginThemeFont
+{
+ gchar *font;
+ gchar color[10];
+ GdkColor *gdkcolor;
+};
+
+/******************************************************************************
+ * Globals
+ *****************************************************************************/
+
+static GObjectClass *parent_class = NULL;
+
+/******************************************************************************
+ * Enums
+ *****************************************************************************/
+
+enum {
+ PROP_ZERO = 0,
+ PROP_BACKGROUND_COLOR,
+ PROP_OPACITY,
+ PROP_LAYOUT,
+ PROP_EXPANDED_COLOR,
+ PROP_EXPANDED_TEXT,
+ PROP_COLLAPSED_COLOR,
+ PROP_COLLAPSED_TEXT,
+ PROP_CONTACT_COLOR,
+ PROP_CONTACT,
+ PROP_ONLINE,
+ PROP_AWAY,
+ PROP_OFFLINE,
+ PROP_IDLE,
+ PROP_MESSAGE,
+ PROP_MESSAGE_NICK_SAID,
+ PROP_STATUS,
+};
+
+/******************************************************************************
+ * Helpers
+ *****************************************************************************/
+
+PidginThemeFont *
+pidgin_theme_font_new(const gchar *face, GdkColor *color)
+{
+ PidginThemeFont *font = g_new0(PidginThemeFont, 1);
+ font->font = g_strdup(face);
+ if (color)
+ pidgin_theme_font_set_color(font, color);
+ return font;
+}
+
+void
+pidgin_theme_font_free(PidginThemeFont *pair)
+{
+ if (pair != NULL) {
+ g_free(pair->font);
+ if (pair->gdkcolor)
+ gdk_color_free(pair->gdkcolor);
+ g_free(pair);
+ }
+}
+
+static PidginThemeFont *
+copy_font_and_color(const PidginThemeFont *pair)
+{
+ PidginThemeFont *copy = g_new0(PidginThemeFont, 1);
+ copy->font = g_strdup(pair->font);
+ strncpy(copy->color, pair->color, sizeof(copy->color) - 1);
+ if (pair->gdkcolor)
+ copy->gdkcolor = gdk_color_copy(pair->gdkcolor);
+ return copy;
+}
+
+void
+pidgin_theme_font_set_font_face(PidginThemeFont *font, const gchar *face)
+{
+ g_return_if_fail(font);
+ g_return_if_fail(face);
+
+ g_free(font->font);
+ font->font = g_strdup(face);
+}
+
+void
+pidgin_theme_font_set_color(PidginThemeFont *font, const GdkColor *color)
+{
+ g_return_if_fail(font);
+
+ if (font->gdkcolor)
+ gdk_color_free(font->gdkcolor);
+
+ font->gdkcolor = color ? gdk_color_copy(color) : NULL;
+ if (color)
+ g_snprintf(font->color, sizeof(font->color),
+ "#%02x%02x%02x", color->red >> 8, color->green >> 8, color->blue >> 8);
+ else
+ font->color[0] = '\0';
+}
+
+const gchar *
+pidgin_theme_font_get_font_face(PidginThemeFont *font)
+{
+ g_return_val_if_fail(font, NULL);
+ return font->font;
+}
+
+const GdkColor *
+pidgin_theme_font_get_color(PidginThemeFont *font)
+{
+ g_return_val_if_fail(font, NULL);
+ return font->gdkcolor;
+}
+
+const gchar *
+pidgin_theme_font_get_color_describe(PidginThemeFont *font)
+{
+ g_return_val_if_fail(font, NULL);
+ return font->color[0] ? font->color : NULL;
+}
+
+/******************************************************************************
+ * GObject Stuff
+ *****************************************************************************/
+
+static void
+pidgin_blist_theme_init(GTypeInstance *instance,
+ gpointer klass)
+{
+ (PIDGIN_BLIST_THEME(instance))->priv = g_new0(PidginBlistThemePrivate, 1);
+}
+
+static void
+pidgin_blist_theme_get_property(GObject *obj, guint param_id, GValue *value,
+ GParamSpec *psec)
+{
+ PidginBlistTheme *theme = PIDGIN_BLIST_THEME(obj);
+
+ switch (param_id) {
+ case PROP_BACKGROUND_COLOR:
+ g_value_set_boxed(value, pidgin_blist_theme_get_background_color(theme));
+ break;
+ case PROP_OPACITY:
+ g_value_set_double(value, pidgin_blist_theme_get_opacity(theme));
+ break;
+ case PROP_LAYOUT:
+ g_value_set_pointer(value, pidgin_blist_theme_get_layout(theme));
+ break;
+ case PROP_EXPANDED_COLOR:
+ g_value_set_boxed(value, pidgin_blist_theme_get_expanded_background_color(theme));
+ break;
+ case PROP_EXPANDED_TEXT:
+ g_value_set_pointer(value, pidgin_blist_theme_get_expanded_text_info(theme));
+ break;
+ case PROP_COLLAPSED_COLOR:
+ g_value_set_boxed(value, pidgin_blist_theme_get_collapsed_background_color(theme));
+ break;
+ case PROP_COLLAPSED_TEXT:
+ g_value_set_pointer(value, pidgin_blist_theme_get_collapsed_text_info(theme));
+ break;
+ case PROP_CONTACT_COLOR:
+ g_value_set_boxed(value, pidgin_blist_theme_get_contact_color(theme));
+ break;
+ case PROP_CONTACT:
+ g_value_set_pointer(value, pidgin_blist_theme_get_contact_text_info(theme));
+ break;
+ case PROP_ONLINE:
+ g_value_set_pointer(value, pidgin_blist_theme_get_online_text_info(theme));
+ break;
+ case PROP_AWAY:
+ g_value_set_pointer(value, pidgin_blist_theme_get_away_text_info(theme));
+ break;
+ case PROP_OFFLINE:
+ g_value_set_pointer(value, pidgin_blist_theme_get_offline_text_info(theme));
+ break;
+ case PROP_IDLE:
+ g_value_set_pointer(value, pidgin_blist_theme_get_idle_text_info(theme));
+ break;
+ case PROP_MESSAGE:
+ g_value_set_pointer(value, pidgin_blist_theme_get_unread_message_text_info(theme));
+ break;
+ case PROP_MESSAGE_NICK_SAID:
+ g_value_set_pointer(value, pidgin_blist_theme_get_unread_message_nick_said_text_info(theme));
+ break;
+ case PROP_STATUS:
+ g_value_set_pointer(value, pidgin_blist_theme_get_status_text_info(theme));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, psec);
+ break;
+ }
+}
+
+static void
+pidgin_blist_theme_set_property(GObject *obj, guint param_id, const GValue *value,
+ GParamSpec *psec)
+{
+ PidginBlistTheme *theme = PIDGIN_BLIST_THEME(obj);
+
+ switch (param_id) {
+ case PROP_BACKGROUND_COLOR:
+ pidgin_blist_theme_set_background_color(theme, g_value_get_boxed(value));
+ break;
+ case PROP_OPACITY:
+ pidgin_blist_theme_set_opacity(theme, g_value_get_double(value));
+ break;
+ case PROP_LAYOUT:
+ pidgin_blist_theme_set_layout(theme, g_value_get_pointer(value));
+ break;
+ case PROP_EXPANDED_COLOR:
+ pidgin_blist_theme_set_expanded_background_color(theme, g_value_get_boxed(value));
+ break;
+ case PROP_EXPANDED_TEXT:
+ pidgin_blist_theme_set_expanded_text_info(theme, g_value_get_pointer(value));
+ break;
+ case PROP_COLLAPSED_COLOR:
+ pidgin_blist_theme_set_collapsed_background_color(theme, g_value_get_boxed(value));
+ break;
+ case PROP_COLLAPSED_TEXT:
+ pidgin_blist_theme_set_collapsed_text_info(theme, g_value_get_pointer(value));
+ break;
+ case PROP_CONTACT_COLOR:
+ pidgin_blist_theme_set_contact_color(theme, g_value_get_boxed(value));
+ break;
+ case PROP_CONTACT:
+ pidgin_blist_theme_set_contact_text_info(theme, g_value_get_pointer(value));
+ break;
+ case PROP_ONLINE:
+ pidgin_blist_theme_set_online_text_info(theme, g_value_get_pointer(value));
+ break;
+ case PROP_AWAY:
+ pidgin_blist_theme_set_away_text_info(theme, g_value_get_pointer(value));
+ break;
+ case PROP_OFFLINE:
+ pidgin_blist_theme_set_offline_text_info(theme, g_value_get_pointer(value));
+ break;
+ case PROP_IDLE:
+ pidgin_blist_theme_set_idle_text_info(theme, g_value_get_pointer(value));
+ break;
+ case PROP_MESSAGE:
+ pidgin_blist_theme_set_unread_message_text_info(theme, g_value_get_pointer(value));
+ break;
+ case PROP_MESSAGE_NICK_SAID:
+ pidgin_blist_theme_set_unread_message_nick_said_text_info(theme, g_value_get_pointer(value));
+ break;
+ case PROP_STATUS:
+ pidgin_blist_theme_set_status_text_info(theme, g_value_get_pointer(value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, psec);
+ break;
+ }
+}
+
+static void
+pidgin_blist_theme_finalize(GObject *obj)
+{
+ PidginBlistThemePrivate *priv;
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(obj);
+
+ /* Buddy List */
+ if (priv->bgcolor)
+ gdk_color_free(priv->bgcolor);
+ g_free(priv->layout);
+
+ /* Group */
+ if (priv->expanded_color)
+ gdk_color_free(priv->expanded_color);
+ pidgin_theme_font_free(priv->expanded);
+ if (priv->collapsed_color)
+ gdk_color_free(priv->collapsed_color);
+ pidgin_theme_font_free(priv->collapsed);
+
+ /* Buddy */
+ if (priv->contact_color)
+ gdk_color_free(priv->contact_color);
+ pidgin_theme_font_free(priv->contact);
+ pidgin_theme_font_free(priv->online);
+ pidgin_theme_font_free(priv->away);
+ pidgin_theme_font_free(priv->offline);
+ pidgin_theme_font_free(priv->idle);
+ pidgin_theme_font_free(priv->message);
+ pidgin_theme_font_free(priv->message_nick_said);
+ pidgin_theme_font_free(priv->status);
+
+ g_free(priv);
+
+ parent_class->finalize (obj);
+}
+
+static void
+pidgin_blist_theme_class_init(PidginBlistThemeClass *klass)
+{
+ GObjectClass *obj_class = G_OBJECT_CLASS(klass);
+ GParamSpec *pspec;
+
+ parent_class = g_type_class_peek_parent (klass);
+
+ obj_class->get_property = pidgin_blist_theme_get_property;
+ obj_class->set_property = pidgin_blist_theme_set_property;
+ obj_class->finalize = pidgin_blist_theme_finalize;
+
+ /* Buddy List */
+ pspec = g_param_spec_boxed("background-color", _("Background Color"),
+ _("The background color for the buddy list"),
+ GDK_TYPE_COLOR, G_PARAM_READWRITE);
+ g_object_class_install_property(obj_class, PROP_BACKGROUND_COLOR, pspec);
+
+ pspec = g_param_spec_pointer("layout", _("Layout"),
+ _("The layout of icons, name, and status of the blist"),
+ G_PARAM_READWRITE);
+
+ g_object_class_install_property(obj_class, PROP_LAYOUT, pspec);
+
+ /* Group */
+ pspec = g_param_spec_boxed("expanded-color", _("Expanded Background Color"),
+ _("The background color of an expanded group"),
+ GDK_TYPE_COLOR, G_PARAM_READWRITE);
+ g_object_class_install_property(obj_class, PROP_EXPANDED_COLOR, pspec);
+
+ pspec = g_param_spec_pointer("expanded-text", _("Expanded Text"),
+ _("The text information for when a group is expanded"),
+ G_PARAM_READWRITE);
+ g_object_class_install_property(obj_class, PROP_EXPANDED_TEXT, pspec);
+
+ pspec = g_param_spec_boxed("collapsed-color", _("Collapsed Background Color"),
+ _("The background color of a collapsed group"),
+ GDK_TYPE_COLOR, G_PARAM_READWRITE);
+ g_object_class_install_property(obj_class, PROP_COLLAPSED_COLOR, pspec);
+
+ pspec = g_param_spec_pointer("collapsed-text", _("Collapsed Text"),
+ _("The text information for when a group is collapsed"),
+ G_PARAM_READWRITE);
+ g_object_class_install_property(obj_class, PROP_COLLAPSED_TEXT, pspec);
+
+ /* Buddy */
+ pspec = g_param_spec_boxed("contact-color", _("Contact/Chat Background Color"),
+ _("The background color of a contact or chat"),
+ GDK_TYPE_COLOR, G_PARAM_READWRITE);
+ g_object_class_install_property(obj_class, PROP_CONTACT_COLOR, pspec);
+
+ pspec = g_param_spec_pointer("contact", _("Contact Text"),
+ _("The text information for when a contact is expanded"),
+ G_PARAM_READWRITE);
+ g_object_class_install_property(obj_class, PROP_CONTACT, pspec);
+
+ pspec = g_param_spec_pointer("online", _("On-line Text"),
+ _("The text information for when a buddy is online"),
+ G_PARAM_READWRITE);
+ g_object_class_install_property(obj_class, PROP_ONLINE, pspec);
+
+ pspec = g_param_spec_pointer("away", _("Away Text"),
+ _("The text information for when a buddy is away"),
+ G_PARAM_READWRITE);
+ g_object_class_install_property(obj_class, PROP_AWAY, pspec);
+
+ pspec = g_param_spec_pointer("offline", _("Off-line Text"),
+ _("The text information for when a buddy is off-line"),
+ G_PARAM_READWRITE);
+ g_object_class_install_property(obj_class, PROP_OFFLINE, pspec);
+
+ pspec = g_param_spec_pointer("idle", _("Idle Text"),
+ _("The text information for when a buddy is idle"),
+ G_PARAM_READWRITE);
+ g_object_class_install_property(obj_class, PROP_IDLE, pspec);
+
+ pspec = g_param_spec_pointer("message", _("Message Text"),
+ _("The text information for when a buddy has an unread message"),
+ G_PARAM_READWRITE);
+ g_object_class_install_property(obj_class, PROP_MESSAGE, pspec);
+
+ pspec = g_param_spec_pointer("message_nick_said", _("Message (Nick Said) Text"),
+ _("The text information for when a chat has an unread message that mentions your nick"),
+ G_PARAM_READWRITE);
+ g_object_class_install_property(obj_class, PROP_MESSAGE_NICK_SAID, pspec);
+
+ pspec = g_param_spec_pointer("status", _("Status Text"),
+ _("The text information for a buddy's status"),
+ G_PARAM_READWRITE);
+ g_object_class_install_property(obj_class, PROP_STATUS, pspec);
+}
+
+GType
+pidgin_blist_theme_get_type (void)
+{
+ static GType type = 0;
+ if (type == 0) {
+ static GTypeInfo info = {
+ sizeof(PidginBlistThemeClass),
+ NULL, /* base_init */
+ NULL, /* base_finalize */
+ (GClassInitFunc)pidgin_blist_theme_class_init, /* class_init */
+ NULL, /* class_finalize */
+ NULL, /* class_data */
+ sizeof(PidginBlistTheme),
+ 0, /* n_preallocs */
+ pidgin_blist_theme_init, /* instance_init */
+ NULL, /* value table */
+ };
+ type = g_type_register_static (PURPLE_TYPE_THEME,
+ "PidginBlistTheme", &info, 0);
+ }
+ return type;
+}
+
+
+/*****************************************************************************
+ * Public API functions
+ *****************************************************************************/
+
+/* get methods */
+
+GdkColor *
+pidgin_blist_theme_get_background_color(PidginBlistTheme *theme)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ return priv->bgcolor;
+}
+
+gdouble
+pidgin_blist_theme_get_opacity(PidginBlistTheme *theme)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), 1.0);
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ return priv->opacity;
+}
+
+PidginBlistLayout *
+pidgin_blist_theme_get_layout(PidginBlistTheme *theme)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ return priv->layout;
+}
+
+GdkColor *
+pidgin_blist_theme_get_expanded_background_color(PidginBlistTheme *theme)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ return priv->expanded_color;
+}
+
+PidginThemeFont *
+pidgin_blist_theme_get_expanded_text_info(PidginBlistTheme *theme)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ return priv->expanded;
+}
+
+GdkColor *
+pidgin_blist_theme_get_collapsed_background_color(PidginBlistTheme *theme)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ return priv->collapsed_color;
+}
+
+PidginThemeFont *
+pidgin_blist_theme_get_collapsed_text_info(PidginBlistTheme *theme)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ return priv->collapsed;
+}
+
+GdkColor *
+pidgin_blist_theme_get_contact_color(PidginBlistTheme *theme)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ return priv->contact_color;
+}
+
+PidginThemeFont *
+pidgin_blist_theme_get_contact_text_info(PidginBlistTheme *theme)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ return priv->contact;
+}
+
+PidginThemeFont *
+pidgin_blist_theme_get_online_text_info(PidginBlistTheme *theme)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ return priv->online;
+}
+
+PidginThemeFont *
+pidgin_blist_theme_get_away_text_info(PidginBlistTheme *theme)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ return priv->away;
+}
+
+PidginThemeFont *
+pidgin_blist_theme_get_offline_text_info(PidginBlistTheme *theme)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ return priv->offline;
+}
+
+PidginThemeFont *
+pidgin_blist_theme_get_idle_text_info(PidginBlistTheme *theme)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ return priv->idle;
+}
+
+PidginThemeFont *
+pidgin_blist_theme_get_unread_message_text_info(PidginBlistTheme *theme)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ return priv->message;
+}
+
+PidginThemeFont *
+pidgin_blist_theme_get_unread_message_nick_said_text_info(PidginBlistTheme *theme)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ return priv->message_nick_said;
+}
+
+PidginThemeFont *
+pidgin_blist_theme_get_status_text_info(PidginBlistTheme *theme)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ return priv->status;
+}
+
+/* Set Methods */
+void
+pidgin_blist_theme_set_background_color(PidginBlistTheme *theme, const GdkColor *color)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ if (priv->bgcolor)
+ gdk_color_free(priv->bgcolor);
+ priv->bgcolor = gdk_color_copy(color);
+}
+
+void
+pidgin_blist_theme_set_opacity(PidginBlistTheme *theme, gdouble opacity)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme) || opacity < 0.0 || opacity > 1.0);
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ priv->opacity = opacity;
+}
+
+void
+pidgin_blist_theme_set_layout(PidginBlistTheme *theme, const PidginBlistLayout *layout)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ g_free(priv->layout);
+ priv->layout = g_memdup(layout, sizeof(PidginBlistLayout));
+}
+
+void
+pidgin_blist_theme_set_expanded_background_color(PidginBlistTheme *theme, const GdkColor *color)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ if (priv->expanded_color)
+ gdk_color_free(priv->expanded_color);
+ priv->expanded_color = gdk_color_copy(color);
+}
+
+void
+pidgin_blist_theme_set_expanded_text_info(PidginBlistTheme *theme, const PidginThemeFont *pair)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ pidgin_theme_font_free(priv->expanded);
+ priv->expanded = copy_font_and_color(pair);
+}
+
+void
+pidgin_blist_theme_set_collapsed_background_color(PidginBlistTheme *theme, const GdkColor *color)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ if (priv->collapsed_color)
+ gdk_color_free(priv->collapsed_color);
+ priv->collapsed_color = gdk_color_copy(color);
+}
+
+void
+pidgin_blist_theme_set_collapsed_text_info(PidginBlistTheme *theme, const PidginThemeFont *pair)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ pidgin_theme_font_free(priv->collapsed);
+ priv->collapsed = copy_font_and_color(pair);
+}
+
+void
+pidgin_blist_theme_set_contact_color(PidginBlistTheme *theme, const GdkColor *color)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ if (priv->contact_color)
+ gdk_color_free(priv->contact_color);
+ priv->contact_color = gdk_color_copy(color);
+}
+
+void
+pidgin_blist_theme_set_contact_text_info(PidginBlistTheme *theme, const PidginThemeFont *pair)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ pidgin_theme_font_free(priv->contact);
+ priv->contact = copy_font_and_color(pair);
+}
+
+void
+pidgin_blist_theme_set_online_text_info(PidginBlistTheme *theme, const PidginThemeFont *pair)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ pidgin_theme_font_free(priv->online);
+ priv->online = copy_font_and_color(pair);
+}
+
+void
+pidgin_blist_theme_set_away_text_info(PidginBlistTheme *theme, const PidginThemeFont *pair)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ pidgin_theme_font_free(priv->away);
+ priv->away = copy_font_and_color(pair);
+}
+
+void
+pidgin_blist_theme_set_offline_text_info(PidginBlistTheme *theme, const PidginThemeFont *pair)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ pidgin_theme_font_free(priv->offline);
+ priv->offline = copy_font_and_color(pair);
+}
+
+void
+pidgin_blist_theme_set_idle_text_info(PidginBlistTheme *theme, const PidginThemeFont *pair)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ pidgin_theme_font_free(priv->idle);
+ priv->idle = copy_font_and_color(pair);
+}
+
+void
+pidgin_blist_theme_set_unread_message_text_info(PidginBlistTheme *theme, const PidginThemeFont *pair)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ pidgin_theme_font_free(priv->message);
+ priv->message = copy_font_and_color(pair);
+}
+
+void
+pidgin_blist_theme_set_unread_message_nick_said_text_info(PidginBlistTheme *theme, const PidginThemeFont *pair)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ pidgin_theme_font_free(priv->message_nick_said);
+ priv->message_nick_said = copy_font_and_color(pair);
+}
+
+void
+pidgin_blist_theme_set_status_text_info(PidginBlistTheme *theme, const PidginThemeFont *pair)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ pidgin_theme_font_free(priv->status);
+ priv->status = copy_font_and_color(pair);
+}
diff --git a/pidgin/gtkblist-theme.h b/pidgin/gtkblist-theme.h
new file mode 100644
index 0000000000..2c4fb07fb0
--- /dev/null
+++ b/pidgin/gtkblist-theme.h
@@ -0,0 +1,438 @@
+/**
+ * @file gtkblist-theme.h GTK+ Buddy List Theme API
+ */
+
+/* pidgin
+ *
+ * Pidgin is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#ifndef PIDGIN_BLIST_THEME_H
+#define PIDGIN_BLIST_THEME_H
+
+#include <glib.h>
+#include <glib-object.h>
+#include <gtk/gtk.h>
+
+#include "theme.h"
+
+/**
+ * A pidgin buddy list theme.
+ * This is an object for Purple to represent a buddy list theme.
+ *
+ * PidginBlistTheme is a PurpleTheme Object.
+ */
+typedef struct _PidginBlistTheme PidginBlistTheme;
+typedef struct _PidginBlistThemeClass PidginBlistThemeClass;
+
+#define PIDGIN_TYPE_BLIST_THEME (pidgin_blist_theme_get_type ())
+#define PIDGIN_BLIST_THEME(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PIDGIN_TYPE_BLIST_THEME, PidginBlistTheme))
+#define PIDGIN_BLIST_THEME_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PIDGIN_TYPE_BLIST_THEME, PidginBlistThemeClass))
+#define PIDGIN_IS_BLIST_THEME(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PIDGIN_TYPE_BLIST_THEME))
+#define PIDGIN_IS_BLIST_THEME_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PIDGIN_TYPE_BLIST_THEME))
+#define PIDGIN_BLIST_THEME_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PIDGIN_TYPE_BLIST_THEME, PidginBlistThemeClass))
+
+struct _PidginBlistTheme
+{
+ PurpleTheme parent;
+ gpointer priv;
+};
+
+struct _PidginBlistThemeClass
+{
+ PurpleThemeClass parent_class;
+};
+
+#if 0
+typedef struct
+{
+ const gchar *font;
+ const gchar *color;
+
+} PidginThemeFont;
+#endif
+typedef struct _PidginThemeFont PidginThemeFont;
+
+typedef struct
+{
+ gint status_icon;
+ gint text;
+ gint emblem;
+ gint protocol_icon;
+ gint buddy_icon;
+ gboolean show_status;
+
+} PidginBlistLayout;
+
+/**************************************************************************/
+/** @name PidginThemeFont API */
+/**************************************************************************/
+
+/**
+ * Create a new PidginThemeFont.
+ *
+ * @param face The font face
+ * @param color The color of the font
+ *
+ * @return A newly created PidginThemeFont
+ */
+PidginThemeFont * pidgin_theme_font_new(const gchar *face, GdkColor *color);
+
+/**
+ * Frees a font and color pair
+ *
+ * @param font The theme font
+ */
+void pidgin_theme_font_free(PidginThemeFont *font);
+
+/**
+ * Set the font-face of a PidginThemeFont.
+ *
+ * @param font The PidginThemeFont
+ * @param face The font-face
+ */
+void pidgin_theme_font_set_font_face(PidginThemeFont *font, const gchar *face);
+
+/**
+ * Set the color of a PidginThemeFont.
+ *
+ * @param font The PidginThemeFont
+ * @param color The color
+ */
+void pidgin_theme_font_set_color(PidginThemeFont *font, const GdkColor *color);
+
+/**
+ * Get the font-face of a PidginThemeFont.
+ *
+ * @param font The PidginThemeFont
+ *
+ * @return The font-face, or NULL if none is set.
+ */
+const gchar * pidgin_theme_font_get_font_face(PidginThemeFont *font);
+
+/**
+ * Get the color of a PidginThemeFont as a GdkColor object.
+ *
+ * @param font The PidginThemeFont
+ *
+ * @return The color, or NULL if none is set.
+ */
+const GdkColor * pidgin_theme_font_get_color(PidginThemeFont *font);
+
+/**
+ * Get the color of a PidginThemeFont.
+ *
+ * @param font The PidginThemeFont
+ *
+ * @return The color, or NULL if none is set.
+ */
+const gchar * pidgin_theme_font_get_color_describe(PidginThemeFont *font);
+
+/**************************************************************************/
+/** @name Purple Buddy List Theme API */
+/**************************************************************************/
+G_BEGIN_DECLS
+
+/**
+ * GObject foo.
+ * @internal.
+ */
+GType pidgin_blist_theme_get_type(void);
+
+/* get methods */
+
+/**
+ * Returns the background color of the buddy list.
+ *
+ * @param theme The PidginBlist theme.
+ *
+ * @returns A gdk color.
+ */
+ GdkColor *pidgin_blist_theme_get_background_color(PidginBlistTheme *theme);
+
+/**
+ * Returns the opacity of the buddy list window
+ * (0.0 or clear to 1.0 fully opaque).
+ *
+ * @param theme The PidginBlist theme.
+ *
+ * @returns The opacity
+ */
+gdouble pidgin_blist_theme_get_opacity(PidginBlistTheme *theme);
+
+/**
+ * Returns the layout to be used with the buddy list.
+ *
+ * @param theme The PidginBlist theme.
+ *
+ * @returns The buddy list layout.
+ */
+ PidginBlistLayout *pidgin_blist_theme_get_layout(PidginBlistTheme *theme);
+
+/**
+ * Returns the background color to be used with expanded groups.
+ *
+ * @param theme The PidginBlist theme.
+ *
+ * @returns A gdk color.
+ */
+ GdkColor *pidgin_blist_theme_get_expanded_background_color(PidginBlistTheme *theme);
+
+/**
+ * Returns the text font and color to be used with expanded groups.
+ *
+ * @param theme The PidginBlist theme.
+ *
+ * @returns A font and color pair.
+ */
+ PidginThemeFont *pidgin_blist_theme_get_expanded_text_info(PidginBlistTheme *theme);
+
+/**
+ * Returns the background color to be used with collapsed groups.
+ *
+ * @param theme The PidginBlist theme.
+ *
+ * @returns A gdk color.
+ */
+ GdkColor *pidgin_blist_theme_get_collapsed_background_color(PidginBlistTheme *theme);
+
+/**
+ * Returns the text font and color to be used with collapsed groups.
+ *
+ * @param theme The PidginBlist theme.
+ *
+ * @returns A font and color pair.
+ */
+ PidginThemeFont *pidgin_blist_theme_get_collapsed_text_info(PidginBlistTheme *theme);
+
+/**
+ * Returns the colors to be used for contacts and chats.
+ *
+ * @param theme The PidginBlist theme.
+ *
+ * @returns A gdkcolor for contacts and chats.
+ */
+ GdkColor *pidgin_blist_theme_get_contact_color(PidginBlistTheme *theme);
+
+/**
+ * Returns the text font and color to be used for expanded contacts.
+ *
+ * @param theme The PidginBlist theme.
+ *
+ * @returns A font and color pair.
+ */
+ PidginThemeFont *pidgin_blist_theme_get_contact_text_info(PidginBlistTheme *theme);
+
+/**
+ * Returns the text font and color to be used for online buddies.
+ *
+ * @param theme The PidginBlist theme.
+ *
+ * @returns A font and color pair.
+ */
+ PidginThemeFont *pidgin_blist_theme_get_online_text_info(PidginBlistTheme *theme);
+
+/**
+ * Returns the text font and color to be used for away and idle buddies.
+ *
+ * @param theme The PidginBlist theme.
+ *
+ * @returns A font and color pair.
+ */
+ PidginThemeFont *pidgin_blist_theme_get_away_text_info(PidginBlistTheme *theme);
+
+/**
+ * Returns the text font and color to be used for offline buddies.
+ *
+ * @param theme The PidginBlist theme.
+ *
+ * @returns A font and color pair.
+ */
+ PidginThemeFont *pidgin_blist_theme_get_offline_text_info(PidginBlistTheme *theme);
+
+/**
+ * Returns the text font and color to be used for idle buddies.
+ *
+ * @param theme The PidginBlist theme.
+ *
+ * @returns A font and color pair.
+ */
+ PidginThemeFont *pidgin_blist_theme_get_idle_text_info(PidginBlistTheme *theme);
+
+/**
+ * Returns the text font and color to be used for buddies with unread messages.
+ *
+ * @param theme The PidginBlist theme.
+ *
+ * @returns A font and color pair.
+ */
+ PidginThemeFont *pidgin_blist_theme_get_unread_message_text_info(PidginBlistTheme *theme);
+
+/**
+ * Returns the text font and color to be used for chats with unread messages
+ * that mention your nick.
+ *
+ * @param theme The PidginBlist theme.
+ *
+ * @returns A font and color pair.
+ */
+ PidginThemeFont *pidgin_blist_theme_get_unread_message_nick_said_text_info(PidginBlistTheme *theme);
+
+/**
+ * Returns the text font and color to be used for a buddy's status message.
+ *
+ * @param theme The PidginBlist theme.
+ *
+ * @returns A font and color pair.
+ */
+ PidginThemeFont *pidgin_blist_theme_get_status_text_info(PidginBlistTheme *theme);
+
+/* Set Methods */
+
+/**
+ * Sets the background color to be used for this buddy list theme.
+ *
+ * @param theme The PidginBlist theme.
+ * @param color The new background color.
+ */
+void pidgin_blist_theme_set_background_color(PidginBlistTheme *theme, const GdkColor *color);
+
+/**
+ * Sets the opacity to be used for this buddy list theme.
+ *
+ * @param theme The PidginBlist theme.
+ * @param opacity The new opacity setting.
+ */
+void pidgin_blist_theme_set_opacity(PidginBlistTheme *theme, gdouble opacity);
+
+/**
+ * Sets the buddy list layout to be used for this buddy list theme.
+ *
+ * @param theme The PidginBlist theme.
+ * @param layout The new layout.
+ */
+void pidgin_blist_theme_set_layout(PidginBlistTheme *theme, const PidginBlistLayout *layout);
+
+/**
+ * Sets the background color to be used for expanded groups.
+ *
+ * @param theme The PidginBlist theme.
+ * @param color The new background color.
+ */
+void pidgin_blist_theme_set_expanded_background_color(PidginBlistTheme *theme, const GdkColor *color);
+
+/**
+ * Sets the text color and font to be used for expanded groups.
+ *
+ * @param theme The PidginBlist theme.
+ * @param pair The new text font and color pair.
+ */
+void pidgin_blist_theme_set_expanded_text_info(PidginBlistTheme *theme, const PidginThemeFont *pair);
+
+/**
+ * Sets the background color to be used for collapsed groups.
+ *
+ * @param theme The PidginBlist theme.
+ * @param color The new background color.
+ */
+void pidgin_blist_theme_set_collapsed_background_color(PidginBlistTheme *theme, const GdkColor *color);
+
+/**
+ * Sets the text color and font to be used for expanded groups.
+ *
+ * @param theme The PidginBlist theme.
+ * @param pair The new text font and color pair.
+ */
+void pidgin_blist_theme_set_collapsed_text_info(PidginBlistTheme *theme, const PidginThemeFont *pair);
+
+/**
+ * Sets the background color to be used for contacts and chats.
+ *
+ * @param theme The PidginBlist theme.
+ * @param color The color to use for contacts and chats.
+ */
+void pidgin_blist_theme_set_contact_color(PidginBlistTheme *theme, const GdkColor *color);
+
+/**
+ * Sets the text color and font to be used for expanded contacts.
+ *
+ * @param theme The PidginBlist theme.
+ * @param pair The new text font and color pair.
+ */
+void pidgin_blist_theme_set_contact_text_info(PidginBlistTheme *theme, const PidginThemeFont *pair);
+
+/**
+ * Sets the text color and font to be used for online buddies.
+ *
+ * @param theme The PidginBlist theme.
+ * @param pair The new text font and color pair.
+ */
+void pidgin_blist_theme_set_online_text_info(PidginBlistTheme *theme, const PidginThemeFont *pair);
+
+/**
+ * Sets the text color and font to be used for away and idle buddies.
+ *
+ * @param theme The PidginBlist theme.
+ * @param pair The new text font and color pair.
+ */
+void pidgin_blist_theme_set_away_text_info(PidginBlistTheme *theme, const PidginThemeFont *pair);
+
+/**
+ * Sets the text color and font to be used for offline buddies.
+ *
+ * @param theme The PidginBlist theme.
+ * @param pair The new text font and color pair.
+ */
+void pidgin_blist_theme_set_offline_text_info(PidginBlistTheme *theme, const PidginThemeFont *pair);
+
+/**
+ * Sets the text color and font to be used for idle buddies.
+ *
+ * @param theme The PidginBlist theme.
+ * @param pair The new text font and color pair.
+ */
+void pidgin_blist_theme_set_idle_text_info(PidginBlistTheme *theme, const PidginThemeFont *pair);
+
+/**
+ * Sets the text color and font to be used for buddies with unread messages.
+ *
+ * @param theme The PidginBlist theme.
+ * @param pair The new text font and color pair.
+ */
+void pidgin_blist_theme_set_unread_message_text_info(PidginBlistTheme *theme, const PidginThemeFont *pair);
+
+/**
+ * Sets the text color and font to be used for a chat with unread messages
+ * that mention your nick.
+ *
+ * @param theme The PidginBlist theme.
+ * @param pair The new text font and color pair.
+ */
+void pidgin_blist_theme_set_unread_message_nick_said_text_info(PidginBlistTheme *theme, const PidginThemeFont *pair);
+
+/**
+ * Sets the text color and font to be used for buddy status messages.
+ *
+ * @param theme The PidginBlist theme.
+ * @param pair The new text font and color pair.
+ */
+void pidgin_blist_theme_set_status_text_info(PidginBlistTheme *theme, const PidginThemeFont *pair);
+
+G_END_DECLS
+#endif /* PIDGIN_BLIST_THEME_H */
diff --git a/pidgin/gtkblist.c b/pidgin/gtkblist.c
index 5d16af4d67..0ba286ac62 100644
--- a/pidgin/gtkblist.c
+++ b/pidgin/gtkblist.c
@@ -38,6 +38,8 @@
#include "request.h"
#include "signals.h"
#include "pidginstock.h"
+#include "theme-loader.h"
+#include "theme-manager.h"
#include "util.h"
#include "gtkaccount.h"
@@ -58,6 +60,8 @@
#include "gtkstatusbox.h"
#include "gtkscrollbook.h"
#include "gtksmiley.h"
+#include "gtkblist-theme.h"
+#include "gtkblist-theme-loader.h"
#include "gtkutils.h"
#include "pidgin/minidialog.h"
#include "pidgin/pidgintooltip.h"
@@ -71,47 +75,40 @@
typedef struct
{
PurpleAccount *account;
-
GtkWidget *window;
+ GtkBox *vbox;
+ GtkWidget *account_menu;
+ GtkSizeGroup *sg;
+} PidginBlistRequestData;
+
+typedef struct
+{
+ PidginBlistRequestData rq_data;
GtkWidget *combo;
GtkWidget *entry;
GtkWidget *entry_for_alias;
- GtkWidget *account_box;
} PidginAddBuddyData;
typedef struct
{
- PurpleAccount *account;
+ PidginBlistRequestData rq_data;
gchar *default_chat_name;
+ GList *entries;
+} PidginChatData;
+
+typedef struct
+{
+ PidginChatData chat_data;
- GtkWidget *window;
- GtkWidget *account_menu;
GtkWidget *alias_entry;
GtkWidget *group_combo;
- GtkWidget *entries_box;
- GtkSizeGroup *sg;
GtkWidget *autojoin;
GtkWidget *persistent;
-
- GList *entries;
-
} PidginAddChatData;
typedef struct
{
- PurpleAccount *account;
-
- GtkWidget *window;
- GtkWidget *account_menu;
- GtkWidget *entries_box;
- GtkSizeGroup *sg;
-
- GList *entries;
-} PidginJoinChatData;
-
-typedef struct
-{
/** Used to hold error minidialogs. Gets packed
* inside PidginBuddyList.error_buttons
*/
@@ -121,6 +118,9 @@ typedef struct
* is showing; @c NULL otherwise.
*/
PidginMiniDialog *signed_on_elsewhere;
+
+ PidginBlistTheme *current_theme;
+
} PidginBuddyListPrivate;
#define PIDGIN_BUDDY_LIST_GET_PRIVATE(list) \
@@ -142,7 +142,7 @@ static void sort_method_none(PurpleBlistNode *node, PurpleBuddyList *blist, GtkT
#if GTK_CHECK_VERSION(2,2,1)
static void sort_method_alphabetical(PurpleBlistNode *node, PurpleBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter);
static void sort_method_status(PurpleBlistNode *node, PurpleBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter);
-static void sort_method_log(PurpleBlistNode *node, PurpleBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter);
+static void sort_method_log_activity(PurpleBlistNode *node, PurpleBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter);
#endif
static PidginBuddyList *gtkblist = NULL;
@@ -164,7 +164,8 @@ static void pidgin_blist_expand_contact_cb(GtkWidget *w, PurpleBlistNode *node);
static void set_urgent(void);
typedef enum {
- PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE = 1 << 0, /* Whether there's pending message in a conversation */
+ PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE = 1 << 0, /* Whether there's pending message in a conversation */
+ PIDGIN_BLIST_CHAT_HAS_PENDING_MESSAGE_WITH_NICK = 1 << 1, /* Whether there's a pending message in a chat that mentions our nick */
} PidginBlistNodeFlags;
typedef struct _pidgin_blist_node {
@@ -179,17 +180,6 @@ typedef struct _pidgin_blist_node {
} conv;
} PidginBlistNode;
-static char dim_grey_string[8] = "";
-static char *dim_grey(void)
-{
- if (!gtkblist)
- return "dim grey";
- if (!dim_grey_string[0]) {
- snprintf(dim_grey_string, sizeof(dim_grey_string), "%s", pidgin_get_dim_grey_string(gtkblist->treeview));
- }
- return dim_grey_string;
-}
-
/***************************************************
* Callbacks *
***************************************************/
@@ -329,17 +319,48 @@ static gboolean gtk_blist_configure_cb(GtkWidget *w, GdkEventConfigure *event, g
static void gtk_blist_menu_info_cb(GtkWidget *w, PurpleBuddy *b)
{
- pidgin_retrieve_user_info(b->account->gc, purple_buddy_get_name(b));
+ PurpleAccount *account = purple_buddy_get_account(b);
+
+ pidgin_retrieve_user_info(purple_account_get_connection(account),
+ purple_buddy_get_name(b));
}
static void gtk_blist_menu_im_cb(GtkWidget *w, PurpleBuddy *b)
{
- pidgin_dialogs_im_with_user(b->account, b->name);
+ pidgin_dialogs_im_with_user(purple_buddy_get_account(b),
+ purple_buddy_get_name(b));
+}
+
+#ifdef USE_VV
+static void gtk_blist_menu_audio_call_cb(GtkWidget *w, PurpleBuddy *b)
+{
+ purple_prpl_initiate_media(purple_buddy_get_account(b),
+ purple_buddy_get_name(b), PURPLE_MEDIA_AUDIO);
}
+static void gtk_blist_menu_video_call_cb(GtkWidget *w, PurpleBuddy *b)
+{
+ /* if the buddy supports both audio and video, start a combined call,
+ otherwise start a pure video session */
+ if (purple_prpl_get_media_caps(purple_buddy_get_account(b),
+ purple_buddy_get_name(b)) &
+ PURPLE_MEDIA_CAPS_AUDIO_VIDEO) {
+ purple_prpl_initiate_media(purple_buddy_get_account(b),
+ purple_buddy_get_name(b), PURPLE_MEDIA_AUDIO | PURPLE_MEDIA_VIDEO);
+ } else {
+ purple_prpl_initiate_media(purple_buddy_get_account(b),
+ purple_buddy_get_name(b), PURPLE_MEDIA_VIDEO);
+ }
+}
+
+#endif
+
static void gtk_blist_menu_send_file_cb(GtkWidget *w, PurpleBuddy *b)
{
- serv_send_file(b->account->gc, b->name, NULL);
+ PurpleAccount *account = purple_buddy_get_account(b);
+
+ serv_send_file(purple_account_get_connection(account),
+ purple_buddy_get_name(b), NULL);
}
static void gtk_blist_menu_move_to_cb(GtkWidget *w, PurpleBlistNode *node)
@@ -364,7 +385,7 @@ static void gtk_blist_menu_persistent_cb(GtkWidget *w, PurpleChat *chat)
static PurpleConversation *
find_conversation_with_buddy(PurpleBuddy *buddy)
{
- PidginBlistNode *ui = buddy->node.ui_data;
+ PidginBlistNode *ui = purple_blist_node_get_ui_data(PURPLE_BLIST_NODE(buddy));
if (ui)
return ui->conv.conv;
return purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM,
@@ -374,15 +395,20 @@ find_conversation_with_buddy(PurpleBuddy *buddy)
static void gtk_blist_join_chat(PurpleChat *chat)
{
+ PurpleAccount *account;
PurpleConversation *conv;
PurplePluginProtocolInfo *prpl_info;
+ GHashTable *components;
const char *name;
char *chat_name;
- prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_find_prpl(purple_account_get_protocol_id(chat->account)));
+ account = purple_chat_get_account(chat);
+ prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_find_prpl(purple_account_get_protocol_id(account)));
+
+ components = purple_chat_get_components(chat);
if (prpl_info && prpl_info->get_chat_name)
- chat_name = prpl_info->get_chat_name(chat->components);
+ chat_name = prpl_info->get_chat_name(components);
else
chat_name = NULL;
@@ -392,14 +418,14 @@ static void gtk_blist_join_chat(PurpleChat *chat)
name = purple_chat_get_name(chat);
conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_CHAT, name,
- chat->account);
+ account);
if (conv != NULL) {
pidgin_conv_attach_to_conversation(conv);
purple_conversation_present(conv);
}
- serv_join_chat(chat->account->gc, chat->components);
+ serv_join_chat(purple_account_get_connection(account), components);
g_free(chat_name);
}
@@ -434,15 +460,15 @@ static void gtk_blist_renderer_editing_started_cb(GtkCellRenderer *renderer,
gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &val);
node = g_value_get_pointer(&val);
- switch (node->type) {
+ switch (purple_blist_node_get_type(node)) {
case PURPLE_BLIST_CONTACT_NODE:
- text = purple_contact_get_alias((PurpleContact *)node);
+ text = purple_contact_get_alias(PURPLE_CONTACT(node));
break;
case PURPLE_BLIST_BUDDY_NODE:
- text = purple_buddy_get_alias((PurpleBuddy *)node);
+ text = purple_buddy_get_alias(PURPLE_BUDDY(node));
break;
case PURPLE_BLIST_GROUP_NODE:
- text = ((PurpleGroup *)node)->name;
+ text = purple_group_get_name(PURPLE_GROUP(node));
break;
default:
g_return_if_reached();
@@ -470,17 +496,24 @@ gtk_blist_do_personize(GList *merges)
for (tmp = merges; tmp; tmp = tmp->next) {
PurpleBlistNode *node = tmp->data;
PurpleBlistNode *b;
+ PurpleBlistNodeType type;
int i = 0;
- if (node->type == PURPLE_BLIST_BUDDY_NODE)
- node = node->parent;
+ type = purple_blist_node_get_type(node);
+
+ if(type == PURPLE_BLIST_BUDDY_NODE)
+ node = purple_blist_node_get_parent(node);
- if (node->type != PURPLE_BLIST_CONTACT_NODE)
+ if(type == PURPLE_BLIST_CONTACT_NODE)
continue;
-
- for (b = node->child; b; b = b->next)
+ for (b = purple_blist_node_get_first_child(node);
+ b;
+ b = purple_blist_node_get_sibling_next(b))
+ {
i++;
+ }
+
if (i > max) {
contact = node;
max = i;
@@ -493,8 +526,8 @@ gtk_blist_do_personize(GList *merges)
/* Merge all those buddies into this contact */
for (tmp = merges; tmp; tmp = tmp->next) {
PurpleBlistNode *node = tmp->data;
- if (node->type == PURPLE_BLIST_BUDDY_NODE)
- node = node->parent;
+ if (purple_blist_node_get_type(node) == PURPLE_BLIST_BUDDY_NODE)
+ node = purple_blist_node_get_parent(node);
if (node == contact)
continue;
@@ -516,9 +549,11 @@ gtk_blist_auto_personize(PurpleBlistNode *group, const char *alias)
int i = 0;
char *a = g_utf8_casefold(alias, -1);
- for (contact = group->child; contact; contact = contact->next) {
+ for (contact = purple_blist_node_get_first_child(group);
+ contact != NULL;
+ contact = purple_blist_node_get_sibling_next(contact)) {
char *node_alias;
- if (contact->type != PURPLE_BLIST_CONTACT_NODE)
+ if (purple_blist_node_get_type(contact) != PURPLE_BLIST_CONTACT_NODE)
continue;
node_alias = g_utf8_casefold(purple_contact_get_alias((PurpleContact *)contact), -1);
@@ -530,11 +565,14 @@ gtk_blist_auto_personize(PurpleBlistNode *group, const char *alias)
}
g_free(node_alias);
- for (buddy = contact->child; buddy; buddy = buddy->next) {
- if (buddy->type != PURPLE_BLIST_BUDDY_NODE)
+ for (buddy = purple_blist_node_get_first_child(contact);
+ buddy;
+ buddy = purple_blist_node_get_sibling_next(buddy))
+ {
+ if (purple_blist_node_get_type(buddy) != PURPLE_BLIST_BUDDY_NODE)
continue;
- node_alias = g_utf8_casefold(purple_buddy_get_alias((PurpleBuddy *)buddy), -1);
+ node_alias = g_utf8_casefold(purple_buddy_get_alias(PURPLE_BUDDY(buddy)), -1);
if (node_alias && !g_utf8_collate(node_alias, a)) {
merges = g_list_append(merges, buddy);
i++;
@@ -576,39 +614,45 @@ static void gtk_blist_renderer_edited_cb(GtkCellRendererText *text_rend, char *a
gtk_tree_view_set_enable_search (GTK_TREE_VIEW(gtkblist->treeview), TRUE);
g_object_set(G_OBJECT(gtkblist->text_rend), "editable", FALSE, NULL);
- switch (node->type)
+ switch (purple_blist_node_get_type(node))
{
case PURPLE_BLIST_CONTACT_NODE:
{
- PurpleContact *contact = (PurpleContact *)node;
- struct _pidgin_blist_node *gtknode = (struct _pidgin_blist_node *)node->ui_data;
+ PurpleContact *contact = PURPLE_CONTACT(node);
+ struct _pidgin_blist_node *gtknode =
+ (struct _pidgin_blist_node *)purple_blist_node_get_ui_data(node);
- if (contact->alias || gtknode->contact_expanded) {
+ if (purple_contact_get_alias(contact) || gtknode->contact_expanded) {
purple_blist_alias_contact(contact, arg2);
- gtk_blist_auto_personize(node->parent, arg2);
+ gtk_blist_auto_personize(purple_blist_node_get_parent(node), arg2);
} else {
PurpleBuddy *buddy = purple_contact_get_priority_buddy(contact);
purple_blist_alias_buddy(buddy, arg2);
serv_alias_buddy(buddy);
- gtk_blist_auto_personize(node->parent, arg2);
+ gtk_blist_auto_personize(purple_blist_node_get_parent(node), arg2);
}
}
break;
case PURPLE_BLIST_BUDDY_NODE:
- purple_blist_alias_buddy((PurpleBuddy*)node, arg2);
- serv_alias_buddy((PurpleBuddy *)node);
- gtk_blist_auto_personize(node->parent->parent, arg2);
+ {
+ PurpleGroup *group = purple_buddy_get_group(PURPLE_BUDDY(node));
+
+ purple_blist_alias_buddy(PURPLE_BUDDY(node), arg2);
+ serv_alias_buddy(PURPLE_BUDDY(node));
+ gtk_blist_auto_personize(PURPLE_BLIST_NODE(group), arg2);
+ }
break;
case PURPLE_BLIST_GROUP_NODE:
dest = purple_find_group(arg2);
- if (dest != NULL && purple_utf8_strcasecmp(arg2, ((PurpleGroup*) node)->name)) {
- pidgin_dialogs_merge_groups((PurpleGroup*) node, arg2);
- } else
- purple_blist_rename_group((PurpleGroup*)node, arg2);
+ if (dest != NULL && purple_utf8_strcasecmp(arg2, purple_group_get_name(PURPLE_GROUP(node)))) {
+ pidgin_dialogs_merge_groups(PURPLE_GROUP(node), arg2);
+ } else {
+ purple_blist_rename_group(PURPLE_GROUP(node), arg2);
+ }
break;
case PURPLE_BLIST_CHAT_NODE:
- purple_blist_alias_chat((PurpleChat*)node, arg2);
+ purple_blist_alias_chat(PURPLE_CHAT(node), arg2);
break;
default:
break;
@@ -695,7 +739,7 @@ static void gtk_blist_menu_alias_cb(GtkWidget *w, PurpleBlistNode *node)
if (!(get_iter_from_node(node, &iter))) {
/* This is either a bug, or the buddy is in a collapsed contact */
- node = node->parent;
+ node = purple_blist_node_get_parent(node);
if (!get_iter_from_node(node, &iter))
/* Now it's definitely a bug */
return;
@@ -718,7 +762,8 @@ static void gtk_blist_menu_alias_cb(GtkWidget *w, PurpleBlistNode *node)
static void gtk_blist_menu_bp_cb(GtkWidget *w, PurpleBuddy *b)
{
- pidgin_pounce_editor_show(b->account, b->name, NULL);
+ pidgin_pounce_editor_show(purple_buddy_get_account(b),
+ purple_buddy_get_name(b), NULL);
}
static void gtk_blist_menu_showlog_cb(GtkWidget *w, PurpleBlistNode *node)
@@ -732,19 +777,19 @@ static void gtk_blist_menu_showlog_cb(GtkWidget *w, PurpleBlistNode *node)
if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
PurpleBuddy *b = (PurpleBuddy*) node;
type = PURPLE_LOG_IM;
- name = g_strdup(b->name);
- account = b->account;
+ name = g_strdup(purple_buddy_get_name(b));
+ account = purple_buddy_get_account(b);
} else if (PURPLE_BLIST_NODE_IS_CHAT(node)) {
- PurpleChat *c = (PurpleChat*) node;
+ PurpleChat *c = PURPLE_CHAT(node);
PurplePluginProtocolInfo *prpl_info = NULL;
type = PURPLE_LOG_CHAT;
- account = c->account;
+ account = purple_chat_get_account(c);
prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_find_prpl(purple_account_get_protocol_id(account)));
if (prpl_info && prpl_info->get_chat_name) {
- name = prpl_info->get_chat_name(c->components);
+ name = prpl_info->get_chat_name(purple_chat_get_components(c));
}
} else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
- pidgin_log_show_contact((PurpleContact *)node);
+ pidgin_log_show_contact(PURPLE_CONTACT(node));
pidgin_clear_cursor(gtkblist->window);
return;
} else {
@@ -757,10 +802,10 @@ static void gtk_blist_menu_showlog_cb(GtkWidget *w, PurpleBlistNode *node)
if (name && account) {
pidgin_log_show(type, name, account);
- g_free(name);
-
pidgin_clear_cursor(gtkblist->window);
}
+
+ g_free(name);
}
static void gtk_blist_menu_showoffline_cb(GtkWidget *w, PurpleBlistNode *node)
@@ -777,7 +822,10 @@ static void gtk_blist_menu_showoffline_cb(GtkWidget *w, PurpleBlistNode *node)
gboolean setting = !purple_blist_node_get_bool(node, "show_offline");
purple_blist_node_set_bool(node, "show_offline", setting);
- for (bnode = node->child; bnode != NULL; bnode = bnode->next) {
+ for (bnode = purple_blist_node_get_first_child(node);
+ bnode != NULL;
+ bnode = purple_blist_node_get_sibling_next(bnode))
+ {
purple_blist_node_set_bool(bnode, "show_offline", setting);
pidgin_blist_update(purple_get_blist(), bnode);
}
@@ -786,9 +834,15 @@ static void gtk_blist_menu_showoffline_cb(GtkWidget *w, PurpleBlistNode *node)
gboolean setting = !purple_blist_node_get_bool(node, "show_offline");
purple_blist_node_set_bool(node, "show_offline", setting);
- for (cnode = node->child; cnode != NULL; cnode = cnode->next) {
+ for (cnode = purple_blist_node_get_first_child(node);
+ cnode != NULL;
+ cnode = purple_blist_node_get_sibling_next(cnode))
+ {
purple_blist_node_set_bool(cnode, "show_offline", setting);
- for (bnode = cnode->child; bnode != NULL; bnode = bnode->next) {
+ for (bnode = purple_blist_node_get_first_child(cnode);
+ bnode != NULL;
+ bnode = purple_blist_node_get_sibling_next(bnode))
+ {
purple_blist_node_set_bool(bnode, "show_offline", setting);
pidgin_blist_update(purple_get_blist(), bnode);
}
@@ -807,7 +861,7 @@ static void gtk_blist_show_onlinehelp_cb(void)
}
static void
-do_join_chat(PidginJoinChatData *data)
+do_join_chat(PidginChatData *data)
{
if (data)
{
@@ -833,14 +887,14 @@ do_join_chat(PidginJoinChatData *data)
}
}
- chat = purple_chat_new(data->account, NULL, components);
+ chat = purple_chat_new(data->rq_data.account, NULL, components);
gtk_blist_join_chat(chat);
purple_blist_remove_chat(chat);
}
}
static void
-do_joinchat(GtkWidget *dialog, int id, PidginJoinChatData *info)
+do_joinchat(GtkWidget *dialog, int id, PidginChatData *info)
{
switch(id)
{
@@ -849,7 +903,7 @@ do_joinchat(GtkWidget *dialog, int id, PidginJoinChatData *info)
break;
case 1:
- pidgin_roomlist_dialog_show_with_account(info->account);
+ pidgin_roomlist_dialog_show_with_account(info->rq_data.account);
return;
break;
@@ -865,11 +919,11 @@ do_joinchat(GtkWidget *dialog, int id, PidginJoinChatData *info)
* strings are empty then don't allow the user to click on "OK."
*/
static void
-joinchat_set_sensitive_if_input_cb(GtkWidget *entry, gpointer user_data)
+set_sensitive_if_input_cb(GtkWidget *entry, gpointer user_data)
{
PurplePluginProtocolInfo *prpl_info;
PurpleConnection *gc;
- PidginJoinChatData *data;
+ PidginChatData *data;
GList *tmp;
const char *text;
gboolean required;
@@ -888,25 +942,118 @@ joinchat_set_sensitive_if_input_cb(GtkWidget *entry, gpointer user_data)
}
}
- gtk_dialog_set_response_sensitive(GTK_DIALOG(data->window), GTK_RESPONSE_OK, sensitive);
+ gtk_dialog_set_response_sensitive(GTK_DIALOG(data->rq_data.window), GTK_RESPONSE_OK, sensitive);
- gc = purple_account_get_connection(data->account);
+ gc = purple_account_get_connection(data->rq_data.account);
prpl_info = (gc != NULL) ? PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl) : NULL;
sensitive = (prpl_info != NULL && prpl_info->roomlist_get_list != NULL);
- gtk_dialog_set_response_sensitive(GTK_DIALOG(data->window), 1, sensitive);
+ gtk_dialog_set_response_sensitive(GTK_DIALOG(data->rq_data.window), 1, sensitive);
}
static void
pidgin_blist_update_privacy_cb(PurpleBuddy *buddy)
{
- if (buddy->node.ui_data == NULL || ((struct _pidgin_blist_node*)buddy->node.ui_data)->row == NULL)
+ struct _pidgin_blist_node *ui_data = purple_blist_node_get_ui_data(PURPLE_BLIST_NODE(buddy));
+ if (ui_data == NULL || ui_data->row == NULL)
return;
- pidgin_blist_update_buddy(purple_get_blist(), (PurpleBlistNode*)(buddy), TRUE);
+ pidgin_blist_update_buddy(purple_get_blist(), PURPLE_BLIST_NODE(buddy), TRUE);
+}
+
+static gboolean
+chat_account_filter_func(PurpleAccount *account)
+{
+ PurpleConnection *gc = purple_account_get_connection(account);
+ PurplePluginProtocolInfo *prpl_info = NULL;
+
+ prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl);
+
+ return (prpl_info->chat_info != NULL);
+}
+
+gboolean
+pidgin_blist_joinchat_is_showable()
+{
+ GList *c;
+ PurpleConnection *gc;
+
+ for (c = purple_connections_get_all(); c != NULL; c = c->next) {
+ gc = c->data;
+
+ if (chat_account_filter_func(purple_connection_get_account(gc)))
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static GtkWidget *
+make_blist_request_dialog(PidginBlistRequestData *data, PurpleAccount *account,
+ const char *title, const char *window_role, const char *label_text,
+ GCallback callback_func, PurpleFilterAccountFunc filter_func,
+ GCallback response_cb)
+{
+ GtkWidget *label;
+ GtkWidget *img;
+ GtkWidget *hbox;
+ GtkWidget *vbox;
+ GtkWindow *blist_window;
+ PidginBuddyList *gtkblist;
+
+ data->account = account;
+
+ img = gtk_image_new_from_stock(PIDGIN_STOCK_DIALOG_QUESTION,
+ gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_HUGE));
+
+ gtkblist = PIDGIN_BLIST(purple_get_blist());
+ blist_window = gtkblist ? GTK_WINDOW(gtkblist->window) : NULL;
+
+ data->window = gtk_dialog_new_with_buttons(title,
+ blist_window, GTK_DIALOG_NO_SEPARATOR,
+ NULL);
+
+ gtk_window_set_transient_for(GTK_WINDOW(data->window), blist_window);
+ gtk_dialog_set_default_response(GTK_DIALOG(data->window), GTK_RESPONSE_OK);
+ gtk_container_set_border_width(GTK_CONTAINER(data->window), PIDGIN_HIG_BOX_SPACE);
+ gtk_window_set_resizable(GTK_WINDOW(data->window), FALSE);
+ gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(data->window)->vbox), PIDGIN_HIG_BORDER);
+ gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(data->window)->vbox), PIDGIN_HIG_BOX_SPACE);
+ gtk_window_set_role(GTK_WINDOW(data->window), window_role);
+
+ hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER);
+ gtk_container_add(GTK_CONTAINER(GTK_DIALOG(data->window)->vbox), hbox);
+ gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
+ gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
+
+ vbox = gtk_vbox_new(FALSE, 5);
+ gtk_container_add(GTK_CONTAINER(hbox), vbox);
+
+ label = gtk_label_new(label_text);
+
+ gtk_widget_set_size_request(label, 400, -1);
+ gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
+ gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
+ gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
+
+ data->sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
+
+ data->account_menu = pidgin_account_option_menu_new(account, FALSE,
+ callback_func, filter_func, data);
+ pidgin_add_widget_to_vbox(GTK_BOX(vbox), _("A_ccount"), data->sg, data->account_menu, TRUE, NULL);
+
+ data->vbox = GTK_BOX(gtk_vbox_new(FALSE, 5));
+ gtk_container_set_border_width(GTK_CONTAINER(data->vbox), 0);
+ gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(data->vbox), FALSE, FALSE, 0);
+
+ g_signal_connect(G_OBJECT(data->window), "response", response_cb, data);
+
+ g_object_unref(data->sg);
+
+ return vbox;
}
static void
-rebuild_joinchat_entries(PidginJoinChatData *data)
+rebuild_chat_entries(PidginChatData *data, const char *default_chat_name)
{
PurpleConnection *gc;
GList *list = NULL, *tmp;
@@ -914,11 +1061,11 @@ rebuild_joinchat_entries(PidginJoinChatData *data)
struct proto_chat_entry *pce;
gboolean focus = TRUE;
- g_return_if_fail(data->account != NULL);
+ g_return_if_fail(data->rq_data.account != NULL);
- gc = purple_account_get_connection(data->account);
+ gc = purple_account_get_connection(data->rq_data.account);
- gtk_container_foreach(GTK_CONTAINER(data->entries_box), (GtkCallback)gtk_widget_destroy, NULL);
+ gtk_container_foreach(GTK_CONTAINER(data->rq_data.vbox), (GtkCallback)gtk_widget_destroy, NULL);
g_list_free(data->entries);
data->entries = NULL;
@@ -927,7 +1074,7 @@ rebuild_joinchat_entries(PidginJoinChatData *data)
list = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info(gc);
if (PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults != NULL)
- defaults = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults(gc, NULL);
+ defaults = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults(gc, default_chat_name);
for (tmp = list; tmp; tmp = tmp->next)
{
@@ -942,7 +1089,7 @@ rebuild_joinchat_entries(PidginJoinChatData *data)
1, 10, 10);
input = gtk_spin_button_new(GTK_ADJUSTMENT(adjust), 1, 0);
gtk_widget_set_size_request(input, 50, -1);
- pidgin_add_widget_to_vbox(GTK_BOX(data->entries_box), pce->label, data->sg, input, FALSE, NULL);
+ pidgin_add_widget_to_vbox(GTK_BOX(data->rq_data.vbox), pce->label, data->rq_data.sg, input, FALSE, NULL);
}
else
{
@@ -960,9 +1107,9 @@ rebuild_joinchat_entries(PidginJoinChatData *data)
gtk_entry_set_invisible_char(GTK_ENTRY(input), PIDGIN_INVISIBLE_CHAR);
#endif /* Less than GTK+ 2.16 */
}
- pidgin_add_widget_to_vbox(GTK_BOX(data->entries_box), pce->label, data->sg, input, TRUE, NULL);
+ pidgin_add_widget_to_vbox(data->rq_data.vbox, pce->label, data->rq_data.sg, input, TRUE, NULL);
g_signal_connect(G_OBJECT(input), "changed",
- G_CALLBACK(joinchat_set_sensitive_if_input_cb), data);
+ G_CALLBACK(set_sensitive_if_input_cb), data);
}
/* Do the following for any type of input widget */
@@ -983,110 +1130,50 @@ rebuild_joinchat_entries(PidginJoinChatData *data)
g_hash_table_destroy(defaults);
/* Set whether the "OK" button should be clickable initially */
- joinchat_set_sensitive_if_input_cb(NULL, data);
+ set_sensitive_if_input_cb(NULL, data);
- gtk_widget_show_all(data->entries_box);
+ gtk_widget_show_all(GTK_WIDGET(data->rq_data.vbox));
}
static void
-joinchat_select_account_cb(GObject *w, PurpleAccount *account,
- PidginJoinChatData *data)
-{
- data->account = account;
- rebuild_joinchat_entries(data);
-}
-
-static gboolean
-chat_account_filter_func(PurpleAccount *account)
+chat_select_account_cb(GObject *w, PurpleAccount *account,
+ PidginChatData *data)
{
- PurpleConnection *gc = purple_account_get_connection(account);
- PurplePluginProtocolInfo *prpl_info = NULL;
-
- prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl);
-
- return (prpl_info->chat_info != NULL);
-}
-
-gboolean
-pidgin_blist_joinchat_is_showable()
-{
- GList *c;
- PurpleConnection *gc;
-
- for (c = purple_connections_get_all(); c != NULL; c = c->next) {
- gc = c->data;
-
- if (chat_account_filter_func(purple_connection_get_account(gc)))
- return TRUE;
+ if (strcmp(purple_account_get_protocol_id(data->rq_data.account),
+ purple_account_get_protocol_id(account)) == 0)
+ {
+ data->rq_data.account = account;
+ }
+ else
+ {
+ data->rq_data.account = account;
+ rebuild_chat_entries(data, data->default_chat_name);
}
-
- return FALSE;
}
void
pidgin_blist_joinchat_show(void)
{
- GtkWidget *hbox, *vbox;
- GtkWidget *label;
- PidginBuddyList *gtkblist;
- GtkWidget *img = NULL;
- PidginJoinChatData *data = NULL;
+ PidginChatData *data = NULL;
- gtkblist = PIDGIN_BLIST(purple_get_blist());
- img = gtk_image_new_from_stock(PIDGIN_STOCK_DIALOG_QUESTION,
- gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_HUGE));
- data = g_new0(PidginJoinChatData, 1);
+ data = g_new0(PidginChatData, 1);
- data->window = gtk_dialog_new_with_buttons(_("Join a Chat"),
- NULL, GTK_DIALOG_NO_SEPARATOR,
+ make_blist_request_dialog((PidginBlistRequestData *)data, NULL,
+ _("Join a Chat"), "join_chat",
+ _("Please enter the appropriate information about the chat "
+ "you would like to join.\n"),
+ G_CALLBACK(chat_select_account_cb),
+ chat_account_filter_func, (GCallback)do_joinchat);
+ gtk_dialog_add_buttons(GTK_DIALOG(data->rq_data.window),
_("Room _List"), 1,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
PIDGIN_STOCK_CHAT, GTK_RESPONSE_OK, NULL);
- gtk_dialog_set_default_response(GTK_DIALOG(data->window), GTK_RESPONSE_OK);
- gtk_container_set_border_width(GTK_CONTAINER(data->window), PIDGIN_HIG_BOX_SPACE);
- gtk_window_set_resizable(GTK_WINDOW(data->window), FALSE);
- gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(data->window)->vbox), PIDGIN_HIG_BORDER);
- gtk_container_set_border_width(
- GTK_CONTAINER(GTK_DIALOG(data->window)->vbox), PIDGIN_HIG_BOX_SPACE);
- gtk_window_set_role(GTK_WINDOW(data->window), "join_chat");
-
- hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER);
- gtk_container_add(GTK_CONTAINER(GTK_DIALOG(data->window)->vbox), hbox);
- gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
- gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
-
- vbox = gtk_vbox_new(FALSE, 5);
- gtk_container_set_border_width(GTK_CONTAINER(vbox), 0);
- gtk_container_add(GTK_CONTAINER(hbox), vbox);
-
- label = gtk_label_new(_("Please enter the appropriate information "
- "about the chat you would like to join.\n"));
- gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
- gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
- gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
-
- data->sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
-
- data->account_menu = pidgin_account_option_menu_new(NULL, FALSE,
- G_CALLBACK(joinchat_select_account_cb),
- chat_account_filter_func, data);
-
- pidgin_add_widget_to_vbox(GTK_BOX(vbox), _("_Account:"), data->sg, data->account_menu, TRUE, NULL);
-
- data->entries_box = gtk_vbox_new(FALSE, 5);
- gtk_container_add(GTK_CONTAINER(vbox), data->entries_box);
- gtk_container_set_border_width(GTK_CONTAINER(data->entries_box), 0);
-
- data->account = pidgin_account_option_menu_get_selected(data->account_menu);
-
- rebuild_joinchat_entries(data);
+ data->default_chat_name = NULL;
+ data->rq_data.account = pidgin_account_option_menu_get_selected(data->rq_data.account_menu);
- g_signal_connect(G_OBJECT(data->window), "response",
- G_CALLBACK(do_joinchat), data);
+ rebuild_chat_entries(data, NULL);
- g_object_unref(data->sg);
-
- gtk_widget_show_all(data->window);
+ gtk_widget_show_all(data->rq_data.window);
}
static void gtk_blist_row_expanded_cb(GtkTreeView *tv, GtkTreeIter *iter, GtkTreePath *path, gpointer user_data)
@@ -1438,6 +1525,30 @@ pidgin_blist_make_buddy_menu(GtkWidget *menu, PurpleBuddy *buddy, gboolean sub)
}
pidgin_new_item_from_stock(menu, _("I_M"), PIDGIN_STOCK_TOOLBAR_MESSAGE_NEW,
G_CALLBACK(gtk_blist_menu_im_cb), buddy, 0, 0, NULL);
+
+#ifdef USE_VV
+ if (prpl_info && prpl_info->get_media_caps) {
+ PurpleAccount *account = purple_buddy_get_account(buddy);
+ const gchar *who = purple_buddy_get_name(buddy);
+ PurpleMediaCaps caps = purple_prpl_get_media_caps(account, who);
+ if (caps & PURPLE_MEDIA_CAPS_AUDIO) {
+ pidgin_new_item_from_stock(menu, _("_Audio Call"),
+ PIDGIN_STOCK_TOOLBAR_AUDIO_CALL,
+ G_CALLBACK(gtk_blist_menu_audio_call_cb), buddy, 0, 0, NULL);
+ }
+ if (caps & PURPLE_MEDIA_CAPS_AUDIO_VIDEO) {
+ pidgin_new_item_from_stock(menu, _("Audio/_Video Call"),
+ PIDGIN_STOCK_TOOLBAR_VIDEO_CALL,
+ G_CALLBACK(gtk_blist_menu_video_call_cb), buddy, 0, 0, NULL);
+ } else if (caps & PURPLE_MEDIA_CAPS_VIDEO) {
+ pidgin_new_item_from_stock(menu, _("_Video Call"),
+ PIDGIN_STOCK_TOOLBAR_VIDEO_CALL,
+ G_CALLBACK(gtk_blist_menu_video_call_cb), buddy, 0, 0, NULL);
+ }
+ }
+
+#endif
+
if (prpl_info && prpl_info->send_file) {
if (!prpl_info->can_receive_file ||
prpl_info->can_receive_file(buddy->account->gc, buddy->name))
@@ -1452,7 +1563,7 @@ pidgin_blist_make_buddy_menu(GtkWidget *menu, PurpleBuddy *buddy, gboolean sub)
pidgin_new_item_from_stock(menu, _("Add Buddy _Pounce..."), NULL,
G_CALLBACK(gtk_blist_menu_bp_cb), buddy, 0, 0, NULL);
- if (node->parent && node->parent->child->next &&
+ if (node->parent && node->parent->child->next &&
!sub && !contact_expanded) {
pidgin_new_item_from_stock(menu, _("View _Log"), NULL,
G_CALLBACK(gtk_blist_menu_showlog_cb),
@@ -1474,7 +1585,7 @@ pidgin_blist_make_buddy_menu(GtkWidget *menu, PurpleBuddy *buddy, gboolean sub)
if (!contact_expanded && contact != NULL)
pidgin_append_blist_node_move_to_menu(menu, (PurpleBlistNode *)contact);
- if (node->parent && node->parent->child->next &&
+ if (node->parent && node->parent->child->next &&
!sub && !contact_expanded) {
pidgin_separator(menu);
pidgin_append_blist_node_privacy_menu(menu, node);
@@ -1500,8 +1611,9 @@ gtk_blist_key_press_cb(GtkWidget *tv, GdkEventKey *event, gpointer data)
{
PurpleBlistNode *node;
GValue val;
- GtkTreeIter iter;
+ GtkTreeIter iter, parent;
GtkTreeSelection *sel;
+ GtkTreePath *path;
sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(tv));
if(!gtk_tree_selection_get_selected(sel, NULL, &iter))
@@ -1525,8 +1637,62 @@ gtk_blist_key_press_cb(GtkWidget *tv, GdkEventKey *event, gpointer data)
}
if(buddy)
pidgin_retrieve_user_info(buddy->account->gc, buddy->name);
- } else if (event->keyval == GDK_F2) {
- gtk_blist_menu_alias_cb(tv, node);
+ } else {
+ switch (event->keyval) {
+ case GDK_F2:
+ gtk_blist_menu_alias_cb(tv, node);
+ break;
+
+ case GDK_Left:
+ path = gtk_tree_model_get_path(GTK_TREE_MODEL(gtkblist->treemodel), &iter);
+ if (gtk_tree_view_row_expanded(GTK_TREE_VIEW(tv), path)) {
+ /* Collapse the Group */
+ gtk_tree_view_collapse_row(GTK_TREE_VIEW(tv), path);
+ gtk_tree_path_free(path);
+ return TRUE;
+ } else {
+ /* Select the Parent */
+ if (gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), &iter, path)) {
+ if (gtk_tree_model_iter_parent(GTK_TREE_MODEL(gtkblist->treemodel), &parent, &iter)) {
+ gtk_tree_path_free(path);
+ path = gtk_tree_model_get_path(GTK_TREE_MODEL(gtkblist->treemodel), &parent);
+ gtk_tree_view_set_cursor(GTK_TREE_VIEW(tv), path, NULL, FALSE);
+ gtk_tree_path_free(path);
+ return TRUE;
+ }
+ }
+ }
+ gtk_tree_path_free(path);
+ break;
+
+ case GDK_Right:
+ path = gtk_tree_model_get_path(GTK_TREE_MODEL(gtkblist->treemodel), &iter);
+ if (!gtk_tree_view_row_expanded(GTK_TREE_VIEW(tv), path)) {
+ /* Expand the Group */
+ if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
+ pidgin_blist_expand_contact_cb(NULL, node);
+ gtk_tree_path_free(path);
+ return TRUE;
+ } else if (!PURPLE_BLIST_NODE_IS_BUDDY(node)) {
+ gtk_tree_view_expand_row(GTK_TREE_VIEW(tv), path, FALSE);
+ gtk_tree_path_free(path);
+ return TRUE;
+ }
+ } else {
+ /* Select the First Child */
+ if (gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), &parent, path)) {
+ if (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(gtkblist->treemodel), &iter, &parent, 0)) {
+ gtk_tree_path_free(path);
+ path = gtk_tree_model_get_path(GTK_TREE_MODEL(gtkblist->treemodel), &iter);
+ gtk_tree_view_set_cursor(GTK_TREE_VIEW(tv), path, NULL, FALSE);
+ gtk_tree_path_free(path);
+ return TRUE;
+ }
+ }
+ }
+ gtk_tree_path_free(path);
+ break;
+ }
}
return FALSE;
@@ -1792,7 +1958,8 @@ pidgin_blist_show_context_menu(PurpleBlistNode *node,
return handled;
}
-static gboolean gtk_blist_button_press_cb(GtkWidget *tv, GdkEventButton *event, gpointer user_data)
+static gboolean
+gtk_blist_button_press_cb(GtkWidget *tv, GdkEventButton *event, gpointer user_data)
{
GtkTreePath *path;
PurpleBlistNode *node;
@@ -2496,7 +2663,7 @@ static void pidgin_blist_drag_data_rcv_cb(GtkWidget *widget, GdkDragContext *dc,
node = g_value_get_pointer(&val);
if (PURPLE_BLIST_NODE_IS_BUDDY(node) || PURPLE_BLIST_NODE_IS_CONTACT(node)) {
- PurpleBuddy *b = PURPLE_BLIST_NODE_IS_BUDDY(node) ? (PurpleBuddy*)node : purple_contact_get_priority_buddy((PurpleContact*)node);
+ PurpleBuddy *b = PURPLE_BLIST_NODE_IS_BUDDY(node) ? PURPLE_BUDDY(node) : purple_contact_get_priority_buddy(PURPLE_CONTACT(node));
pidgin_dnd_file_manage(sd, b->account, b->name);
gtk_drag_finish(dc, TRUE, (dc->action == GDK_ACTION_MOVE), t);
} else {
@@ -2720,7 +2887,7 @@ static GdkPixbuf *pidgin_blist_get_buddy_icon(PurpleBlistNode *node,
*
*
*/
-#define STATUS_SIZE 16
+#define STATUS_SIZE 16
#define TOOLTIP_BORDER 12
#define SMALL_SPACE 6
#define LARGE_SPACE 12
@@ -2982,18 +3149,18 @@ void pidgin_blist_tooltip_destroy()
}
static void
-pidgin_blist_align_tooltip(struct tooltip_data *td, GtkWidget *widget)
-{
- GtkTextDirection dir = gtk_widget_get_direction(widget);
+pidgin_blist_align_tooltip(struct tooltip_data *td, GtkWidget *widget)
+{
+ GtkTextDirection dir = gtk_widget_get_direction(widget);
- if (dir == GTK_TEXT_DIR_RTL)
+ if (dir == GTK_TEXT_DIR_RTL)
{
char* layout_name = purple_markup_strip_html(pango_layout_get_text(td->name_layout));
PangoDirection dir = pango_find_base_dir(layout_name, -1);
if (dir == PANGO_DIRECTION_RTL || dir == PANGO_DIRECTION_NEUTRAL)
- pango_layout_set_alignment(td->name_layout, PANGO_ALIGN_RIGHT);
+ pango_layout_set_alignment(td->name_layout, PANGO_ALIGN_RIGHT);
g_free(layout_name);
- pango_layout_set_alignment(td->layout, PANGO_ALIGN_RIGHT);
+ pango_layout_set_alignment(td->layout, PANGO_ALIGN_RIGHT);
}
}
@@ -3082,7 +3249,7 @@ static gboolean pidgin_blist_expand_timeout(GtkWidget *tv)
GValue val;
struct _pidgin_blist_node *gtknode;
- if (!gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(tv), gtkblist->tip_rect.x, gtkblist->tip_rect.y + (gtkblist->tip_rect.height/2),
+ if (!gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(tv), gtkblist->tip_rect.x, gtkblist->tip_rect.y + (gtkblist->tip_rect.height/2),
&path, NULL, NULL, NULL))
return FALSE;
gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), &iter, path);
@@ -3168,7 +3335,7 @@ static gboolean pidgin_blist_drag_motion_cb(GtkWidget *tv, GdkDragContext *drag_
if (y < rect.y + (rect.height / 3) ||
y > rect.y + (2 * (rect.height /3)))
return FALSE;
-
+
rect.height = rect.height / 3;
rect.y += rect.height;
@@ -3287,10 +3454,10 @@ static GtkItemFactoryEntry blist_menu[] =
{ N_("/_Tools"), NULL, NULL, 0, "<Branch>", NULL },
{ N_("/Tools/Buddy _Pounces"), NULL, pidgin_pounces_manager_show, 1, "<Item>", NULL },
{ N_("/Tools/_Certificates"), NULL, pidgin_certmgr_show, 0, "<Item>", NULL },
+ { N_("/Tools/Custom Smile_ys"), "<CTL>Y", pidgin_smiley_manager_show, 0, "<StockItem>", PIDGIN_STOCK_TOOLBAR_SMILEY },
{ N_("/Tools/Plu_gins"), "<CTL>U", pidgin_plugin_dialog_show, 2, "<StockItem>", PIDGIN_STOCK_TOOLBAR_PLUGINS },
{ N_("/Tools/Pr_eferences"), "<CTL>P", pidgin_prefs_show, 0, "<StockItem>", GTK_STOCK_PREFERENCES },
{ N_("/Tools/Pr_ivacy"), NULL, pidgin_privacy_dialog_show, 0, "<Item>", NULL },
- { N_("/Tools/Smile_y"), "<CTL>Y", pidgin_smiley_manager_show, 0, "<StockItem>", PIDGIN_STOCK_TOOLBAR_SMILEY },
{ "/Tools/sep2", NULL, NULL, 0, "<Separator>", NULL },
{ N_("/Tools/_File Transfers"), "<CTL>T", pidgin_xfer_dialog_show, 0, "<StockItem>", PIDGIN_STOCK_TOOLBAR_TRANSFER },
{ N_("/Tools/R_oom List"), NULL, pidgin_roomlist_dialog_show, 0, "<Item>", NULL },
@@ -3815,19 +3982,40 @@ pidgin_blist_get_status_icon(PurpleBlistNode *node, PidginStatusIconSize size)
return ret;
}
-gchar *pidgin_blist_get_name_markup(PurpleBuddy *b, gboolean selected, gboolean aliased)
+static const char *
+theme_font_get_color_default(PidginThemeFont *font, const char *def)
{
- const char *name;
- char *esc, *text = NULL;
+ const char *ret;
+ if (!font || !(ret = pidgin_theme_font_get_color_describe(font)))
+ ret = def;
+ return ret;
+}
+
+static const char *
+theme_font_get_face_default(PidginThemeFont *font, const char *def)
+{
+ const char *ret;
+ if (!font || !(ret = pidgin_theme_font_get_font_face(font)))
+ ret = def;
+ return ret;
+}
+
+gchar *
+pidgin_blist_get_name_markup(PurpleBuddy *b, gboolean selected, gboolean aliased)
+{
+ const char *name, *name_color, *name_font, *status_color, *status_font;
+ char *text = NULL;
PurplePlugin *prpl;
PurplePluginProtocolInfo *prpl_info = NULL;
PurpleContact *contact;
PurplePresence *presence;
struct _pidgin_blist_node *gtkcontactnode = NULL;
- char *idletime = NULL, *statustext = NULL;
- time_t t;
+ char *idletime = NULL, *statustext = NULL, *nametext = NULL;
PurpleConversation *conv = find_conversation_with_buddy(b);
gboolean hidden_conv = FALSE;
+ gboolean biglist = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons");
+ PidginThemeFont *statusfont = NULL, *namefont = NULL;
+ PidginBlistTheme *theme;
if (conv != NULL) {
PidginBlistNode *ui = b->node.ui_data;
@@ -3841,178 +4029,180 @@ gchar *pidgin_blist_get_name_markup(PurpleBuddy *b, gboolean selected, gboolean
}
/* XXX Good luck cleaning up this crap */
- contact = (PurpleContact*)((PurpleBlistNode*)b)->parent;
+ contact = PURPLE_CONTACT(PURPLE_BLIST_NODE(b)->parent);
if(contact)
- gtkcontactnode = ((PurpleBlistNode*)contact)->ui_data;
+ gtkcontactnode = purple_blist_node_get_ui_data(PURPLE_BLIST_NODE(contact));
- if(gtkcontactnode && !gtkcontactnode->contact_expanded && contact->alias)
+ /* Name */
+ if (gtkcontactnode && !gtkcontactnode->contact_expanded && contact->alias)
name = contact->alias;
else
name = purple_buddy_get_alias(b);
-
- esc = g_markup_escape_text(name, strlen(name));
- presence = purple_buddy_get_presence(b);
+ nametext = g_markup_escape_text(name, strlen(name));
- if (!purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons") && aliased)
- {
- if (!selected && purple_presence_is_idle(presence))
- {
- text = g_strdup_printf("<span color='%s'>%s</span>",
- dim_grey(), esc);
- g_free(esc);
- if (hidden_conv) {
- char *tmp = text;
- text = g_strdup_printf("<b>%s</b>", text);
- g_free(tmp);
- }
- return text;
- }
- else if (hidden_conv)
- {
- char *tmp = esc;
- esc = g_strdup_printf("<b>%s</b>", esc);
- g_free(tmp);
- }
- return esc;
- }
+ presence = purple_buddy_get_presence(b);
- prpl = purple_find_prpl(purple_account_get_protocol_id(b->account));
+ /* Name is all that is needed */
+ if (!aliased || biglist) {
- if (prpl != NULL)
- prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
+ /* Status Info */
+ prpl = purple_find_prpl(purple_account_get_protocol_id(b->account));
- if (prpl_info && prpl_info->status_text && b->account->gc) {
- char *tmp = prpl_info->status_text(b);
- const char *end;
+ if (prpl != NULL)
+ prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
- if(tmp && !g_utf8_validate(tmp, -1, &end)) {
- char *new = g_strndup(tmp,
- g_utf8_pointer_to_offset(tmp, end));
- g_free(tmp);
- tmp = new;
- }
+ if (prpl_info && prpl_info->status_text && b->account->gc) {
+ char *tmp = prpl_info->status_text(b);
+ const char *end;
-#if !GTK_CHECK_VERSION(2,6,0)
- if(tmp) {
- char buf[32];
- char *c = tmp;
- int length = 0, vis=0;
- gboolean inside = FALSE;
- g_strdelimit(tmp, "\n", ' ');
- purple_str_strip_char(tmp, '\r');
-
- while(*c && vis < 20) {
- if(*c == '&')
- inside = TRUE;
- else if(*c == ';')
- inside = FALSE;
- if(!inside)
- vis++;
- c = g_utf8_next_char(c); /* this is fun */
+ if(tmp && !g_utf8_validate(tmp, -1, &end)) {
+ char *new = g_strndup(tmp,
+ g_utf8_pointer_to_offset(tmp, end));
+ g_free(tmp);
+ tmp = new;
}
+ /* add ... to messages that are too long, GTK 2.6+ does it automatically */
+#if !GTK_CHECK_VERSION(2,6,0)
+ if(tmp) {
+ char buf[32];
+ char *c = tmp;
+ int length = 0, vis=0;
+ gboolean inside = FALSE;
+ g_strdelimit(tmp, "\n", ' ');
+ purple_str_strip_char(tmp, '\r');
+
+ while(*c && vis < 20) {
+ if(*c == '&')
+ inside = TRUE;
+ else if(*c == ';')
+ inside = FALSE;
+ if(!inside)
+ vis++;
+ c = g_utf8_next_char(c); /* this is fun */
+ }
- length = c - tmp;
+ length = c - tmp;
- if(vis == 20)
- g_snprintf(buf, sizeof(buf), "%%.%ds...", length);
- else
- g_snprintf(buf, sizeof(buf), "%%s ");
+ if(vis == 20)
+ g_snprintf(buf, sizeof(buf), "%%.%ds...", length);
+ else
+ g_snprintf(buf, sizeof(buf), "%%s ");
- statustext = g_strdup_printf(buf, tmp);
+ statustext = g_strdup_printf(buf, tmp);purple_presence_is_idle(presence)
- g_free(tmp);
- }
+ g_free(tmp);
+ }
#else
- if(tmp) {
- g_strdelimit(tmp, "\n", ' ');
- purple_str_strip_char(tmp, '\r');
- }
- statustext = tmp;
+ if(tmp) {
+ g_strdelimit(tmp, "\n", ' ');
+ purple_str_strip_char(tmp, '\r');
+ }
+ statustext = tmp;
#endif
- }
+ }
- if(!purple_presence_is_online(presence) && !statustext)
- statustext = g_strdup(_("Offline"));
- else if (!statustext)
- text = g_strdup(esc);
+ if(!purple_presence_is_online(presence) && !statustext)
+ statustext = g_strdup(_("Offline"));
- if (purple_presence_is_idle(presence)) {
- if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_idle_time")) {
+ /* Idle Text */
+ if (purple_presence_is_idle(presence) && purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_idle_time")) {
time_t idle_secs = purple_presence_get_idle_time(presence);
if (idle_secs > 0) {
int iday, ihrs, imin;
+ time_t t;
time(&t);
iday = (t - idle_secs) / (24 * 60 * 60);
ihrs = ((t - idle_secs) / 60 / 60) % 24;
imin = ((t - idle_secs) / 60) % 60;
- if (iday)
+ if (iday)
idletime = g_strdup_printf(_("Idle %dd %dh %02dm"), iday, ihrs, imin);
else if (ihrs)
idletime = g_strdup_printf(_("Idle %dh %02dm"), ihrs, imin);
else
idletime = g_strdup_printf(_("Idle %dm"), imin);
- }
- else
- idletime = g_strdup(_("Idle"));
- if (!selected) {
- g_free(text);
- text = g_strdup_printf("<span color='%s'>%s</span>\n"
- "<span color='%s' size='smaller'>%s%s%s</span>",
- dim_grey(), esc, dim_grey(),
- idletime != NULL ? idletime : "",
- (idletime != NULL && statustext != NULL) ? " - " : "",
- statustext != NULL ? statustext : "");
- }
+ } else
+ idletime = g_strdup(_("Idle"));
}
- else if (!selected && !statustext) {/* We handle selected text later */
- g_free(text);
- text = g_strdup_printf("<span color='%s'>%s</span>", dim_grey(), esc);
- } else if (!selected && !text) {
- g_free(text);
- text = g_strdup_printf("<span color='%s'>%s</span>\n"
- "<span color='%s' size='smaller'>%s</span>",
- dim_grey(), esc, dim_grey(),
- statustext != NULL ? statustext : "");
+ }
+
+ /* choose the colors of the text */
+ theme = pidgin_blist_get_theme();
+ name_color = NULL;
+
+ if (theme) {
+ if (purple_presence_is_idle(presence)) {
+ namefont = statusfont = pidgin_blist_theme_get_idle_text_info(theme);
+ name_color = "dim grey";
+ } else if (!purple_presence_is_online(presence)) {
+ namefont = pidgin_blist_theme_get_offline_text_info(theme);
+ statusfont = pidgin_blist_theme_get_status_text_info(theme);
+ } else if (purple_presence_is_available(presence)) {
+ namefont = pidgin_blist_theme_get_online_text_info(theme);
+ statusfont = pidgin_blist_theme_get_status_text_info(theme);
+ } else {
+ namefont = pidgin_blist_theme_get_away_text_info(theme);
+ statusfont = pidgin_blist_theme_get_status_text_info(theme);
}
- } else if (!PURPLE_BUDDY_IS_ONLINE(b)) {
- if (!selected && !statustext) {/* We handle selected text later */
- g_free(text);
- text = g_strdup_printf("<span color='%s'>%s</span>", dim_grey(), esc);
- } else if (!selected && !text)
- text = g_strdup_printf("<span color='%s'>%s</span>\n"
- "<span color='%s' size='smaller'>%s</span>",
- dim_grey(), esc, dim_grey(),
- statustext != NULL ? statustext : "");
-
- }
- /* Not idle and not selected */
- else if (!selected && !text)
- {
- text = g_strdup_printf("%s\n"
- "<span color='%s' size='smaller'>%s</span>",
- esc, dim_grey(),
- statustext != NULL ? statustext : "");
}
- /* It is selected. */
- if ((selected && !text) || (selected && idletime)) {
- g_free(text);
- text = g_strdup_printf("%s\n"
- "<span size='smaller'>%s%s%s</span>",
- esc,
- idletime != NULL ? idletime : "",
- (idletime != NULL && statustext != NULL) ? " - " : "",
- statustext != NULL ? statustext : "");
+ name_color = theme_font_get_color_default(namefont, name_color);
+ name_font = theme_font_get_face_default(namefont, "");
+
+ status_color = theme_font_get_color_default(statusfont, "dim grey");
+ status_font = theme_font_get_face_default(statusfont, "");
+
+ if (aliased && selected) {
+ if (theme) {
+ name_color = "black";
+ status_color = "black";
+ } else {
+ name_color = NULL;
+ status_color = NULL;
+ }
}
- g_free(idletime);
+ /* Put it all together */
+ if ((!aliased || biglist) && (statustext || idletime)) {
+ /* using <span size='smaller'> breaks the status, so it must be seperated into <small><span>*/
+ if (name_color) {
+ text = g_strdup_printf("<span font_desc='%s' foreground='%s'>%s</span>\n"
+ "<small><span font_desc='%s' foreground='%s'>%s%s%s</span></small>",
+ name_font, name_color, nametext, status_font, status_color,
+ idletime != NULL ? idletime : "",
+ (idletime != NULL && statustext != NULL) ? " - " : "",
+ statustext != NULL ? statustext : "");
+ } else if (status_color) {
+ text = g_strdup_printf("<span font_desc='%s'>%s</span>\n"
+ "<small><span font_desc='%s' foreground='%s'>%s%s%s</span></small>",
+ name_font, nametext, status_font, status_color,
+ idletime != NULL ? idletime : "",
+ (idletime != NULL && statustext != NULL) ? " - " : "",
+ statustext != NULL ? statustext : "");
+ } else {
+ text = g_strdup_printf("<span font_desc='%s'>%s</span>\n"
+ "<small><span font_desc='%s'>%s%s%s</span></small>",
+ name_font, nametext, status_font,
+ idletime != NULL ? idletime : "",
+ (idletime != NULL && statustext != NULL) ? " - " : "",
+ statustext != NULL ? statustext : "");
+ }
+ } else {
+ if (name_color) {
+ text = g_strdup_printf("<span font_desc='%s' color='%s'>%s</span>",
+ name_font, name_color, nametext);
+ } else {
+ text = g_strdup_printf("<span font_desc='%s'>%s</span>", name_font,
+ nametext);
+ }
+ }
+ g_free(nametext);
g_free(statustext);
- g_free(esc);
+ g_free(idletime);
if (hidden_conv) {
char *tmp = text;
@@ -4062,7 +4252,7 @@ static gboolean pidgin_blist_refresh_timer(PurpleBuddyList *list)
PurpleBlistNode *gnode, *cnode;
if (gtk_blist_visibility == GDK_VISIBILITY_FULLY_OBSCURED
- || !GTK_WIDGET_VISIBLE(gtkblist->window))
+ || !GTK_WIDGET_VISIBLE(gtkblist->window))
return TRUE;
for(gnode = list->root; gnode; gnode = gnode->next) {
@@ -4331,6 +4521,10 @@ written_msg_update_ui_cb(PurpleAccount *account, const char *who, const char *me
!(flag & (PURPLE_MESSAGE_SEND | PURPLE_MESSAGE_RECV)))
return;
ui->conv.flags |= PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE;
+ if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT
+ && (flag & PURPLE_MESSAGE_NICK))
+ ui->conv.flags |= PIDGIN_BLIST_CHAT_HAS_PENDING_MESSAGE_WITH_NICK;
+
ui->conv.last_message = time(NULL); /* XXX: for lack of better data */
pidgin_blist_update(purple_get_blist(), node);
}
@@ -4341,7 +4535,8 @@ displayed_msg_update_ui_cb(PidginConversation *gtkconv, PurpleBlistNode *node)
PidginBlistNode *ui = node->ui_data;
if (ui->conv.conv != gtkconv->active_conv)
return;
- ui->conv.flags &= ~PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE;
+ ui->conv.flags &= ~(PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE |
+ PIDGIN_BLIST_CHAT_HAS_PENDING_MESSAGE_WITH_NICK);
pidgin_blist_update(purple_get_blist(), node);
}
@@ -4450,7 +4645,7 @@ void pidgin_blist_setup_sort_methods()
#if GTK_CHECK_VERSION(2,2,1)
pidgin_blist_sort_method_reg("alphabetical", _("Alphabetically"), sort_method_alphabetical);
pidgin_blist_sort_method_reg("status", _("By status"), sort_method_status);
- pidgin_blist_sort_method_reg("log_size", _("By log size"), sort_method_log);
+ pidgin_blist_sort_method_reg("log_size", _("By recent log activity"), sort_method_log_activity);
#endif
pidgin_blist_sort_method_set(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/blist/sort_type"));
}
@@ -4537,6 +4732,12 @@ static void account_modified(PurpleAccount *account, PidginBuddyList *gtkblist)
}
static void
+account_actions_changed(PurpleAccount *account, gpointer data)
+{
+ pidgin_blist_update_accounts_menu();
+}
+
+static void
account_status_changed(PurpleAccount *account, PurpleStatus *old,
PurpleStatus *new, PidginBuddyList *gtkblist)
{
@@ -4772,8 +4973,9 @@ generic_error_destroy_cb(GtkObject *dialog,
#define SSL_FAQ_URI "http://d.pidgin.im/wiki/FAQssl"
static void
-ssl_faq_clicked_cb(GtkButton *button,
- PurpleAccount *account)
+ssl_faq_clicked_cb(PidginMiniDialog *mini_dialog,
+ GtkButton *button,
+ gpointer ignored)
{
purple_notify_uri(NULL, SSL_FAQ_URI);
}
@@ -4806,25 +5008,9 @@ add_generic_error_dialog(PurpleAccount *account,
g_object_set_data(G_OBJECT(mini_dialog), OBJECT_DATA_KEY_ACCOUNT,
account);
- if(err->type == PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT) {
- GtkWidget *faq_button = gtk_button_new();
- GtkWidget *faq_label = gtk_label_new(NULL);
- gtk_label_set_markup(GTK_LABEL(faq_label),
- "<span underline=\"single\" foreground=\"blue\""
- " size=\"smaller\">" SSL_FAQ_URI "</span>");
-#if GTK_CHECK_VERSION(2,6,0)
- g_object_set(G_OBJECT(faq_label), "ellipsize",
- PANGO_ELLIPSIZE_MIDDLE, NULL);
-#endif
- gtk_container_add(GTK_CONTAINER(faq_button), faq_label);
- gtk_button_set_relief(GTK_BUTTON(faq_button), GTK_RELIEF_NONE);
-
- g_signal_connect(faq_button, "clicked",
- (GCallback)ssl_faq_clicked_cb, account);
-
- gtk_box_pack_start(PIDGIN_MINI_DIALOG(mini_dialog)->contents,
- faq_button, FALSE, FALSE, 0);
- }
+ if(err->type == PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT)
+ pidgin_mini_dialog_add_button(PIDGIN_MINI_DIALOG(mini_dialog),
+ _("SSL FAQs"), ssl_faq_clicked_cb, NULL);
g_signal_connect_after(mini_dialog, "destroy",
(GCallback)generic_error_destroy_cb,
@@ -5261,11 +5447,144 @@ kiosk_page()
}
#endif
+/* builds the blist layout according to to the current theme */
+static void
+pidgin_blist_build_layout(PurpleBuddyList *list)
+{
+ GtkTreeViewColumn *column;
+ PidginBlistLayout *layout;
+ PidginBlistTheme *theme;
+ GtkCellRenderer *rend;
+ gint i, status_icon = 0, text = 1, emblem = 2, protocol_icon = 3, buddy_icon = 4;
+
+
+ column = gtkblist->text_column;
+
+ if ((theme = pidgin_blist_get_theme()) != NULL && (layout = pidgin_blist_theme_get_layout(theme)) != NULL) {
+ status_icon = layout->status_icon ;
+ text = layout->text;
+ emblem = layout->emblem;
+ protocol_icon = layout->protocol_icon;
+ buddy_icon = layout->buddy_icon;
+ }
+
+ gtk_tree_view_column_clear(column);
+
+ /* group */
+ rend = pidgin_cell_renderer_expander_new();
+ gtk_tree_view_column_pack_start(column, rend, FALSE);
+ gtk_tree_view_column_set_attributes(column, rend,
+ "visible", GROUP_EXPANDER_VISIBLE_COLUMN,
+ "expander-visible", GROUP_EXPANDER_COLUMN,
+#if GTK_CHECK_VERSION(2,6,0)
+ "sensitive", GROUP_EXPANDER_COLUMN,
+ "cell-background-gdk", BGCOLOR_COLUMN,
+#endif
+ NULL);
+
+ /* contact */
+ rend = pidgin_cell_renderer_expander_new();
+ gtk_tree_view_column_pack_start(column, rend, FALSE);
+ gtk_tree_view_column_set_attributes(column, rend,
+ "visible", CONTACT_EXPANDER_VISIBLE_COLUMN,
+ "expander-visible", CONTACT_EXPANDER_COLUMN,
+#if GTK_CHECK_VERSION(2,6,0)
+ "sensitive", CONTACT_EXPANDER_COLUMN,
+ "cell-background-gdk", BGCOLOR_COLUMN,
+#endif
+ NULL);
+
+ for (i = 0; i < 5; i++) {
+
+ if (status_icon == i) {
+ /* status icons */
+ rend = gtk_cell_renderer_pixbuf_new();
+ gtk_tree_view_column_pack_start(column, rend, FALSE);
+ gtk_tree_view_column_set_attributes(column, rend,
+ "pixbuf", STATUS_ICON_COLUMN,
+ "visible", STATUS_ICON_VISIBLE_COLUMN,
+#if GTK_CHECK_VERSION(2,6,0)
+ "cell-background-gdk", BGCOLOR_COLUMN,
+#endif
+ NULL);
+ g_object_set(rend, "xalign", 0.0, "xpad", 6, "ypad", 0, NULL);
+
+ } else if (text == i) {
+ /* name */
+ gtkblist->text_rend = rend = gtk_cell_renderer_text_new();
+ gtk_tree_view_column_pack_start(column, rend, TRUE);
+ gtk_tree_view_column_set_attributes(column, rend,
+#if GTK_CHECK_VERSION(2,6,0)
+ "cell-background-gdk", BGCOLOR_COLUMN,
+#endif
+ "markup", NAME_COLUMN,
+ NULL);
+#if GTK_CHECK_VERSION(2,6,0)
+ g_signal_connect(G_OBJECT(rend), "editing-started", G_CALLBACK(gtk_blist_renderer_editing_started_cb), NULL);
+ g_signal_connect(G_OBJECT(rend), "editing-canceled", G_CALLBACK(gtk_blist_renderer_editing_cancelled_cb), list);
+#endif
+ g_signal_connect(G_OBJECT(rend), "edited", G_CALLBACK(gtk_blist_renderer_edited_cb), list);
+ g_object_set(rend, "ypad", 0, "yalign", 0.5, NULL);
+#if GTK_CHECK_VERSION(2,6,0)
+ g_object_set(rend, "ellipsize", PANGO_ELLIPSIZE_END, NULL);
+#endif
+
+ /* idle */
+ rend = gtk_cell_renderer_text_new();
+ g_object_set(rend, "xalign", 1.0, "ypad", 0, NULL);
+ gtk_tree_view_column_pack_start(column, rend, FALSE);
+ gtk_tree_view_column_set_attributes(column, rend,
+ "markup", IDLE_COLUMN,
+ "visible", IDLE_VISIBLE_COLUMN,
+#if GTK_CHECK_VERSION(2,6,0)
+ "cell-background-gdk", BGCOLOR_COLUMN,
+#endif
+ NULL);
+ } else if (emblem == i) {
+ /* emblem */
+ rend = gtk_cell_renderer_pixbuf_new();
+ g_object_set(rend, "xalign", 1.0, "yalign", 0.5, "ypad", 0, "xpad", 3, NULL);
+ gtk_tree_view_column_pack_start(column, rend, FALSE);
+ gtk_tree_view_column_set_attributes(column, rend, "pixbuf", EMBLEM_COLUMN,
+#if GTK_CHECK_VERSION(2,6,0)
+ "cell-background-gdk", BGCOLOR_COLUMN,
+#endif
+ "visible", EMBLEM_VISIBLE_COLUMN, NULL);
+
+ } else if (protocol_icon == i) {
+ /* protocol icon */
+ rend = gtk_cell_renderer_pixbuf_new();
+ gtk_tree_view_column_pack_start(column, rend, FALSE);
+ gtk_tree_view_column_set_attributes(column, rend,
+ "pixbuf", PROTOCOL_ICON_COLUMN,
+ "visible", PROTOCOL_ICON_VISIBLE_COLUMN,
+#if GTK_CHECK_VERSION(2,6,0)
+ "cell-background-gdk", BGCOLOR_COLUMN,
+#endif
+ NULL);
+ g_object_set(rend, "xalign", 0.0, "xpad", 3, "ypad", 0, NULL);
+
+ } else if (buddy_icon == i) {
+ /* buddy icon */
+ rend = gtk_cell_renderer_pixbuf_new();
+ g_object_set(rend, "xalign", 1.0, "ypad", 0, NULL);
+ gtk_tree_view_column_pack_start(column, rend, FALSE);
+ gtk_tree_view_column_set_attributes(column, rend, "pixbuf", BUDDY_ICON_COLUMN,
+#if GTK_CHECK_VERSION(2,6,0)
+ "cell-background-gdk", BGCOLOR_COLUMN,
+#endif
+ "visible", BUDDY_ICON_VISIBLE_COLUMN,
+ NULL);
+ }
+
+ }/* end for loop */
+
+}
+
static void pidgin_blist_show(PurpleBuddyList *list)
{
PidginBuddyListPrivate *priv;
void *handle;
- GtkCellRenderer *rend;
GtkTreeViewColumn *column;
GtkWidget *menu;
GtkWidget *ebox;
@@ -5273,6 +5592,7 @@ static void pidgin_blist_show(PurpleBuddyList *list)
GtkWidget *sep;
GtkWidget *label;
char *pretty, *tmp;
+ const char *theme_name;
GtkAccelGroup *accel_group;
GtkTreeSelection *selection;
GtkTargetEntry dte[] = {{"PURPLE_BLIST_NODE", GTK_TARGET_SAME_APP, DRAG_ROW},
@@ -5291,6 +5611,15 @@ static void pidgin_blist_show(PurpleBuddyList *list)
gtkblist = PIDGIN_BLIST(list);
priv = PIDGIN_BUDDY_LIST_GET_PRIVATE(gtkblist);
+ if (priv->current_theme)
+ g_object_unref(priv->current_theme);
+
+ theme_name = purple_prefs_get_string(PIDGIN_PREFS_ROOT "/blist/theme");
+ if (theme_name && *theme_name)
+ priv->current_theme = g_object_ref(PIDGIN_BLIST_THEME(purple_theme_manager_find_theme(theme_name, "blist")));
+ else
+ priv->current_theme = NULL;
+
gtkblist->empty_avatar = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, 32, 32);
gdk_pixbuf_fill(gtkblist->empty_avatar, 0x00000000);
@@ -5323,8 +5652,8 @@ static void pidgin_blist_show(PurpleBuddyList *list)
gtk_item_factory_create_items(gtkblist->ift, sizeof(blist_menu) / sizeof(*blist_menu),
blist_menu, NULL);
pidgin_load_accels();
- g_signal_connect(G_OBJECT(accel_group), "accel-changed",
- G_CALLBACK(pidgin_save_accels_cb), NULL);
+ g_signal_connect(G_OBJECT(accel_group), "accel-changed", G_CALLBACK(pidgin_save_accels_cb), NULL);
+
menu = gtk_item_factory_get_widget(gtkblist->ift, "<PurpleMain>");
gtkblist->menutray = pidgin_menu_tray_new();
gtk_menu_shell_append(GTK_MENU_SHELL(menu), gtkblist->menutray);
@@ -5468,105 +5797,16 @@ static void pidgin_blist_show(PurpleBuddyList *list)
gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(gtkblist->treeview), FALSE);
+ /* expander columns */
column = gtk_tree_view_column_new();
gtk_tree_view_append_column(GTK_TREE_VIEW(gtkblist->treeview), column);
gtk_tree_view_column_set_visible(column, FALSE);
gtk_tree_view_set_expander_column(GTK_TREE_VIEW(gtkblist->treeview), column);
- gtkblist->text_column = column = gtk_tree_view_column_new ();
- rend = pidgin_cell_renderer_expander_new();
- gtk_tree_view_column_pack_start(column, rend, FALSE);
- gtk_tree_view_column_set_attributes(column, rend,
- "visible", GROUP_EXPANDER_VISIBLE_COLUMN,
- "expander-visible", GROUP_EXPANDER_COLUMN,
-#if GTK_CHECK_VERSION(2,6,0)
- "sensitive", GROUP_EXPANDER_COLUMN,
- "cell-background-gdk", BGCOLOR_COLUMN,
-#endif
- NULL);
-
- rend = pidgin_cell_renderer_expander_new();
- gtk_tree_view_column_pack_start(column, rend, FALSE);
- gtk_tree_view_column_set_attributes(column, rend,
- "expander-visible", CONTACT_EXPANDER_COLUMN,
-#if GTK_CHECK_VERSION(2,6,0)
- "sensitive", CONTACT_EXPANDER_COLUMN,
- "cell-background-gdk", BGCOLOR_COLUMN,
-#endif
- "visible", CONTACT_EXPANDER_VISIBLE_COLUMN,
- NULL);
-
- rend = gtk_cell_renderer_pixbuf_new();
- gtk_tree_view_column_pack_start(column, rend, FALSE);
- gtk_tree_view_column_set_attributes(column, rend,
- "pixbuf", STATUS_ICON_COLUMN,
- "visible", STATUS_ICON_VISIBLE_COLUMN,
-#if GTK_CHECK_VERSION(2,6,0)
- "cell-background-gdk", BGCOLOR_COLUMN,
-#endif
- NULL);
- g_object_set(rend, "xalign", 0.0, "xpad", 6, "ypad", 0, NULL);
-
- gtkblist->text_rend = rend = gtk_cell_renderer_text_new();
- gtk_tree_view_column_pack_start (column, rend, TRUE);
- gtk_tree_view_column_set_attributes(column, rend,
-#if GTK_CHECK_VERSION(2,6,0)
- "cell-background-gdk", BGCOLOR_COLUMN,
-#endif
- "markup", NAME_COLUMN,
- NULL);
-#if GTK_CHECK_VERSION(2,6,0)
- g_signal_connect(G_OBJECT(rend), "editing-started", G_CALLBACK(gtk_blist_renderer_editing_started_cb), NULL);
- g_signal_connect(G_OBJECT(rend), "editing-canceled", G_CALLBACK(gtk_blist_renderer_editing_cancelled_cb), list);
-#endif
- g_signal_connect(G_OBJECT(rend), "edited", G_CALLBACK(gtk_blist_renderer_edited_cb), list);
- g_object_set(rend, "ypad", 0, "yalign", 0.5, NULL);
-#if GTK_CHECK_VERSION(2,6,0)
- g_object_set(rend, "ellipsize", PANGO_ELLIPSIZE_END, NULL);
-#endif
- gtk_tree_view_append_column(GTK_TREE_VIEW(gtkblist->treeview), column);
-
- rend = gtk_cell_renderer_text_new();
- g_object_set(rend, "xalign", 1.0, "ypad", 0, NULL);
- gtk_tree_view_column_pack_start(column, rend, FALSE);
- gtk_tree_view_column_set_attributes(column, rend,
- "markup", IDLE_COLUMN,
- "visible", IDLE_VISIBLE_COLUMN,
-#if GTK_CHECK_VERSION(2,6,0)
- "cell-background-gdk", BGCOLOR_COLUMN,
-#endif
- NULL);
-
- rend = gtk_cell_renderer_pixbuf_new();
- g_object_set(rend, "xalign", 1.0, "yalign", 0.5, "ypad", 0, "xpad", 3, NULL);
- gtk_tree_view_column_pack_start(column, rend, FALSE);
- gtk_tree_view_column_set_attributes(column, rend, "pixbuf", EMBLEM_COLUMN,
-#if GTK_CHECK_VERSION(2,6,0)
- "cell-background-gdk", BGCOLOR_COLUMN,
-#endif
- "visible", EMBLEM_VISIBLE_COLUMN, NULL);
-
- rend = gtk_cell_renderer_pixbuf_new();
- gtk_tree_view_column_pack_start(column, rend, FALSE);
- gtk_tree_view_column_set_attributes(column, rend,
- "pixbuf", PROTOCOL_ICON_COLUMN,
- "visible", PROTOCOL_ICON_VISIBLE_COLUMN,
-#if GTK_CHECK_VERSION(2,6,0)
- "cell-background-gdk", BGCOLOR_COLUMN,
-#endif
- NULL);
- g_object_set(rend, "xalign", 0.0, "xpad", 3, "ypad", 0, NULL);
-
- rend = gtk_cell_renderer_pixbuf_new();
- g_object_set(rend, "xalign", 1.0, "ypad", 0, NULL);
- gtk_tree_view_column_pack_start(column, rend, FALSE);
- gtk_tree_view_column_set_attributes(column, rend, "pixbuf", BUDDY_ICON_COLUMN,
-#if GTK_CHECK_VERSION(2,6,0)
- "cell-background-gdk", BGCOLOR_COLUMN,
-#endif
- "visible", BUDDY_ICON_VISIBLE_COLUMN,
- NULL);
-
+ /* everything else column */
+ gtkblist->text_column = gtk_tree_view_column_new ();
+ gtk_tree_view_append_column(GTK_TREE_VIEW(gtkblist->treeview), gtkblist->text_column);
+ pidgin_blist_build_layout(list);
g_signal_connect(G_OBJECT(gtkblist->treeview), "row-activated", G_CALLBACK(gtk_blist_row_activated_cb), NULL);
g_signal_connect(G_OBJECT(gtkblist->treeview), "row-expanded", G_CALLBACK(gtk_blist_row_expanded_cb), NULL);
@@ -5645,7 +5885,7 @@ static void pidgin_blist_show(PurpleBuddyList *list)
purple_blist_set_visible(purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/list_visible"));
/* start the refresh timer */
- gtkblist->refresh_timer = g_timeout_add(30000, (GSourceFunc)pidgin_blist_refresh_timer, list);
+ gtkblist->refresh_timer = purple_timeout_add_seconds(30, (GSourceFunc)pidgin_blist_refresh_timer, list);
handle = pidgin_blist_get_handle();
@@ -5686,6 +5926,8 @@ static void pidgin_blist_show(PurpleBuddyList *list)
purple_signal_connect(handle, "account-error-changed", gtkblist,
PURPLE_CALLBACK(update_account_error_state),
gtkblist);
+ purple_signal_connect(handle, "account-actions-changed", gtkblist,
+ PURPLE_CALLBACK(account_actions_changed), NULL);
handle = pidgin_account_get_handle();
purple_signal_connect(handle, "account-modified", gtkblist,
@@ -5766,7 +6008,7 @@ pidgin_blist_update_refresh_timeout()
blist = purple_get_blist();
gtkblist = PIDGIN_BLIST(purple_get_blist());
- gtkblist->refresh_timer = g_timeout_add(30000,(GSourceFunc)pidgin_blist_refresh_timer, blist);
+ gtkblist->refresh_timer = purple_timeout_add_seconds(30,(GSourceFunc)pidgin_blist_refresh_timer, blist);
}
static gboolean get_iter_from_node(PurpleBlistNode *node, GtkTreeIter *iter) {
@@ -5959,7 +6201,7 @@ static void pidgin_blist_update_group(PurpleBuddyList *list,
if (editing_blist)
return;
-
+
if (PURPLE_BLIST_NODE_IS_GROUP(node))
gnode = node;
else if (PURPLE_BLIST_NODE_IS_BUDDY(node))
@@ -5980,10 +6222,9 @@ static void pidgin_blist_update_group(PurpleBuddyList *list,
if (count > 0 || purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_empty_groups"))
show = TRUE;
- else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) { /* Or chat? */
- if (buddy_is_displayable((PurpleBuddy*)node))
- show = TRUE;
- } else if (!show_offline && PURPLE_BLIST_NODE_IS_GROUP(node)) {
+ else if (PURPLE_BLIST_NODE_IS_BUDDY(node) && buddy_is_displayable((PurpleBuddy*)node)) { /* Or chat? */
+ show = TRUE;
+ } else if (!show_offline) {
show = pidgin_blist_group_has_show_offline_buddy(group);
}
@@ -5993,13 +6234,19 @@ static void pidgin_blist_update_group(PurpleBuddyList *list,
GtkTreeIter iter;
GtkTreePath *path;
gboolean expanded;
- GdkColor bgcolor;
+ GdkColor *bgcolor = NULL;
GdkPixbuf *avatar = NULL;
+ PidginBlistTheme *theme = NULL;
if(!insert_node(list, gnode, &iter))
return;
- bgcolor = gtkblist->treeview->style->bg[GTK_STATE_ACTIVE];
+ if ((theme = pidgin_blist_get_theme()) == NULL)
+ bgcolor = NULL;
+ else if (purple_blist_node_get_bool(gnode, "collapsed") || count <= 0)
+ bgcolor = pidgin_blist_theme_get_collapsed_background_color(theme);
+ else
+ bgcolor = pidgin_blist_theme_get_expanded_background_color(theme);
path = gtk_tree_model_get_path(GTK_TREE_MODEL(gtkblist->treemodel), &iter);
expanded = gtk_tree_view_row_expanded(GTK_TREE_VIEW(gtkblist->treeview), path);
@@ -6017,7 +6264,7 @@ static void pidgin_blist_update_group(PurpleBuddyList *list,
STATUS_ICON_COLUMN, NULL,
NAME_COLUMN, title,
NODE_COLUMN, gnode,
- /* BGCOLOR_COLUMN, &bgcolor, */
+ BGCOLOR_COLUMN, bgcolor,
GROUP_EXPANDER_COLUMN, TRUE,
GROUP_EXPANDER_VISIBLE_COLUMN, TRUE,
CONTACT_EXPANDER_VISIBLE_COLUMN, FALSE,
@@ -6040,6 +6287,9 @@ static char *pidgin_get_group_title(PurpleBlistNode *gnode, gboolean expanded)
char *mark, *esc;
PurpleBlistNode *selected_node = NULL;
GtkTreeIter iter;
+ PidginThemeFont *pair;
+ gchar const *text_color, *text_font;
+ PidginBlistTheme *theme;
group = (PurpleGroup*)gnode;
@@ -6055,8 +6305,26 @@ static char *pidgin_get_group_title(PurpleBlistNode *gnode, gboolean expanded)
purple_blist_get_group_size(group, FALSE));
}
+ theme = pidgin_blist_get_theme();
+ if (theme == NULL)
+ pair = NULL;
+ else if (expanded)
+ pair = pidgin_blist_theme_get_expanded_text_info(theme);
+ else
+ pair = pidgin_blist_theme_get_collapsed_text_info(theme);
+
+
+ text_color = selected ? NULL : theme_font_get_color_default(pair, NULL);
+ text_font = theme_font_get_face_default(pair, "");
+
esc = g_markup_escape_text(group->name, -1);
- mark = g_strdup_printf("<span weight='bold'>%s</span>%s", esc ? esc : "", group_count);
+ if (text_color) {
+ mark = g_strdup_printf("<span foreground='%s' font_desc='%s'><b>%s</b>%s</span>",
+ text_color, text_font, esc ? esc : "", group_count);
+ } else {
+ mark = g_strdup_printf("<span font_desc='%s'><b>%s</b>%s</span>",
+ text_font, esc ? esc : "", group_count);
+ }
g_free(esc);
return mark;
@@ -6064,14 +6332,15 @@ static char *pidgin_get_group_title(PurpleBlistNode *gnode, gboolean expanded)
static void buddy_node(PurpleBuddy *buddy, GtkTreeIter *iter, PurpleBlistNode *node)
{
- PurplePresence *presence;
+ PurplePresence *presence = purple_buddy_get_presence(buddy);
GdkPixbuf *status, *avatar, *emblem, *prpl_icon;
+ GdkColor *color = NULL;
char *mark;
char *idle = NULL;
gboolean expanded = ((struct _pidgin_blist_node *)(node->parent->ui_data))->contact_expanded;
gboolean selected = (gtkblist->selected_node == node);
gboolean biglist = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons");
- presence = purple_buddy_get_presence(buddy);
+ PidginBlistTheme *theme;
if (editing_blist)
return;
@@ -6095,35 +6364,46 @@ static void buddy_node(PurpleBuddy *buddy, GtkTreeIter *iter, PurpleBlistNode *n
emblem = pidgin_blist_get_emblem((PurpleBlistNode*) buddy);
mark = pidgin_blist_get_name_markup(buddy, selected, TRUE);
+ theme = pidgin_blist_get_theme();
+
if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_idle_time") &&
- purple_presence_is_idle(presence) &&
- !purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons"))
+ purple_presence_is_idle(presence) && !biglist)
{
time_t idle_secs = purple_presence_get_idle_time(presence);
if (idle_secs > 0)
{
+ PidginThemeFont *pair = NULL;
+ const gchar *textcolor;
time_t t;
int ihrs, imin;
time(&t);
+
ihrs = (t - idle_secs) / 3600;
imin = ((t - idle_secs) / 60) % 60;
- idle = g_strdup_printf("%d:%02d", ihrs, imin);
- }
- }
- if (purple_presence_is_idle(presence))
- {
- if (idle && !selected) {
- char *i2 = g_strdup_printf("<span color='%s'>%s</span>",
- dim_grey(), idle);
- g_free(idle);
- idle = i2;
+ if (!selected && theme != NULL && (pair = pidgin_blist_theme_get_idle_text_info(theme)) != NULL)
+ textcolor = pidgin_theme_font_get_color_describe(pair);
+ else
+ textcolor = NULL;
+
+ if (textcolor) {
+ idle = g_strdup_printf("<span color='%s' font_desc='%s'>%d:%02d</span>",
+ textcolor, theme_font_get_face_default(pair, ""),
+ ihrs, imin);
+ } else {
+ idle = g_strdup_printf("<span font_desc='%s'>%d:%02d</span>",
+ theme_font_get_face_default(pair, ""),
+ ihrs, imin);
+ }
}
}
prpl_icon = pidgin_create_prpl_icon(buddy->account, PIDGIN_PRPL_ICON_SMALL);
+ if (theme != NULL)
+ color = pidgin_blist_theme_get_contact_color(theme);
+
gtk_tree_store_set(gtkblist->treemodel, iter,
STATUS_ICON_COLUMN, status,
STATUS_ICON_VISIBLE_COLUMN, TRUE,
@@ -6136,7 +6416,7 @@ static void buddy_node(PurpleBuddy *buddy, GtkTreeIter *iter, PurpleBlistNode *n
EMBLEM_VISIBLE_COLUMN, (emblem != NULL),
PROTOCOL_ICON_COLUMN, prpl_icon,
PROTOCOL_ICON_VISIBLE_COLUMN, purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_protocol_icons"),
- BGCOLOR_COLUMN, NULL,
+ BGCOLOR_COLUMN, color,
CONTACT_EXPANDER_COLUMN, NULL,
CONTACT_EXPANDER_VISIBLE_COLUMN, expanded,
GROUP_EXPANDER_VISIBLE_COLUMN, FALSE,
@@ -6194,19 +6474,46 @@ static void pidgin_blist_update_contact(PurpleBuddyList *list, PurpleBlistNode *
if(gtknode->contact_expanded) {
GdkPixbuf *status;
- char *mark;
+ gchar *mark, *tmp;
+ const gchar *fg_color, *font;
+ GdkColor *color = NULL;
+ PidginBlistTheme *theme = pidgin_blist_get_theme();
+ PidginThemeFont *pair;
+ gboolean selected = (gtkblist->selected_node == cnode);
+
+ mark = g_markup_escape_text(purple_contact_get_alias(contact), -1);
+
+ theme = pidgin_blist_get_theme();
+ if (theme == NULL)
+ pair = NULL;
+ else {
+ pair = pidgin_blist_theme_get_contact_text_info(theme);
+ color = pidgin_blist_theme_get_contact_color(theme);
+ }
+
+ font = theme_font_get_face_default(pair, "");
+ fg_color = selected ? NULL : theme_font_get_color_default(pair, NULL);
+
+ if (fg_color) {
+ tmp = g_strdup_printf("<span font_desc='%s' color='%s'>%s</span>",
+ font, fg_color, mark);
+ } else {
+ tmp = g_strdup_printf("<span font_desc='%s'>%s</span>", font,
+ mark);
+ }
+ g_free(mark);
+ mark = tmp;
status = pidgin_blist_get_status_icon(cnode,
biglist? PIDGIN_STATUS_ICON_LARGE : PIDGIN_STATUS_ICON_SMALL);
- mark = g_markup_escape_text(purple_contact_get_alias(contact), -1);
gtk_tree_store_set(gtkblist->treemodel, &iter,
STATUS_ICON_COLUMN, status,
STATUS_ICON_VISIBLE_COLUMN, TRUE,
NAME_COLUMN, mark,
IDLE_COLUMN, NULL,
IDLE_VISIBLE_COLUMN, FALSE,
- BGCOLOR_COLUMN, NULL,
+ BGCOLOR_COLUMN, color,
BUDDY_ICON_COLUMN, NULL,
CONTACT_EXPANDER_COLUMN, TRUE,
CONTACT_EXPANDER_VISIBLE_COLUMN, TRUE,
@@ -6274,20 +6581,28 @@ static void pidgin_blist_update_chat(PurpleBuddyList *list, PurpleBlistNode *nod
if(purple_account_is_connected(chat->account)) {
GtkTreeIter iter;
GdkPixbuf *status, *avatar, *emblem, *prpl_icon;
- char *mark;
+ const gchar *color, *font;
+ gchar *mark, *tmp;
gboolean showicons = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons");
gboolean biglist = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons");
PidginBlistNode *ui;
PurpleConversation *conv;
- gboolean hidden;
+ gboolean hidden = FALSE;
+ GdkColor *bgcolor = NULL;
+ PidginThemeFont *pair;
+ PidginBlistTheme *theme;
+ gboolean selected = (gtkblist->selected_node == node);
+ gboolean nick_said = FALSE;
if (!insert_node(list, node, &iter))
return;
ui = node->ui_data;
conv = ui->conv.conv;
- hidden = (conv && (ui->conv.flags & PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE) &&
- pidgin_conv_is_hidden(PIDGIN_CONVERSATION(conv)));
+ if (conv && pidgin_conv_is_hidden(PIDGIN_CONVERSATION(conv))) {
+ hidden = (ui->conv.flags & PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE);
+ nick_said = (ui->conv.flags & PIDGIN_BLIST_CHAT_HAS_PENDING_MESSAGE_WITH_NICK);
+ }
status = pidgin_blist_get_status_icon(node,
biglist ? PIDGIN_STATUS_ICON_LARGE : PIDGIN_STATUS_ICON_SMALL);
@@ -6300,14 +6615,38 @@ static void pidgin_blist_update_chat(PurpleBuddyList *list, PurpleBlistNode *nod
avatar = NULL;
mark = g_markup_escape_text(purple_chat_get_name(chat), -1);
- if (hidden) {
- char *bold = g_strdup_printf("<b>%s</b>", mark);
- g_free(mark);
- mark = bold;
+
+ theme = pidgin_blist_get_theme();
+
+ if (theme == NULL)
+ pair = NULL;
+ else if (nick_said)
+ pair = pidgin_blist_theme_get_unread_message_nick_said_text_info(theme);
+ else if (hidden)
+ pair = pidgin_blist_theme_get_unread_message_text_info(theme);
+ else pair = pidgin_blist_theme_get_online_text_info(theme);
+
+
+ font = theme_font_get_face_default(pair, "");
+ if (selected || !(color = theme_font_get_color_default(pair, NULL)))
+ /* nick_said color is the same as gtkconv:tab-label-attention */
+ color = (nick_said ? "#006aff" : NULL);
+
+ if (color) {
+ tmp = g_strdup_printf("<span font_desc='%s' color='%s' weight='%s'>%s</span>",
+ font, color, hidden ? "bold" : "normal", mark);
+ } else {
+ tmp = g_strdup_printf("<span font_desc='%s' weight='%s'>%s</span>",
+ font, hidden ? "bold" : "normal", mark);
}
+ g_free(mark);
+ mark = tmp;
prpl_icon = pidgin_create_prpl_icon(chat->account, PIDGIN_PRPL_ICON_SMALL);
+ if (theme != NULL)
+ bgcolor = pidgin_blist_theme_get_contact_color(theme);
+
gtk_tree_store_set(gtkblist->treemodel, &iter,
STATUS_ICON_COLUMN, status,
STATUS_ICON_VISIBLE_COLUMN, TRUE,
@@ -6318,6 +6657,7 @@ static void pidgin_blist_update_chat(PurpleBuddyList *list, PurpleBlistNode *nod
PROTOCOL_ICON_COLUMN, prpl_icon,
PROTOCOL_ICON_VISIBLE_COLUMN, purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_protocol_icons"),
NAME_COLUMN, mark,
+ BGCOLOR_COLUMN, bgcolor,
GROUP_EXPANDER_VISIBLE_COLUMN, FALSE,
-1);
@@ -6330,6 +6670,7 @@ static void pidgin_blist_update_chat(PurpleBuddyList *list, PurpleBlistNode *nod
g_object_unref(avatar);
if(prpl_icon)
g_object_unref(prpl_icon);
+
} else {
pidgin_blist_hide_node(list, node, TRUE);
}
@@ -6378,14 +6719,14 @@ static void pidgin_blist_destroy(PurpleBuddyList *list)
purple_signals_disconnect_by_handle(gtkblist);
if (gtkblist->headline_close)
- gdk_pixbuf_unref(gtkblist->headline_close);
+ g_object_unref(G_OBJECT(gtkblist->headline_close));
gtk_widget_destroy(gtkblist->window);
pidgin_blist_tooltip_destroy();
if (gtkblist->refresh_timer)
- g_source_remove(gtkblist->refresh_timer);
+ purple_timeout_remove(gtkblist->refresh_timer);
if (gtkblist->timeout)
g_source_remove(gtkblist->timeout);
if (gtkblist->drag_timeout)
@@ -6407,6 +6748,8 @@ static void pidgin_blist_destroy(PurpleBuddyList *list)
gtkblist->arrow_cursor = NULL;
priv = PIDGIN_BUDDY_LIST_GET_PRIVATE(gtkblist);
+ if (priv->current_theme)
+ g_object_unref(priv->current_theme);
g_free(priv);
g_free(gtkblist);
@@ -6475,7 +6818,7 @@ add_buddy_select_account_cb(GObject *w, PurpleAccount *account,
PidginAddBuddyData *data)
{
/* Save our account */
- data->account = account;
+ data->rq_data.account = account;
}
static void
@@ -6488,6 +6831,7 @@ static void
add_buddy_cb(GtkWidget *w, int resp, PidginAddBuddyData *data)
{
const char *grp, *who, *whoalias;
+ PurpleAccount *account;
PurpleGroup *g;
PurpleBuddy *b;
PurpleConversation *c;
@@ -6501,16 +6845,31 @@ add_buddy_cb(GtkWidget *w, int resp, PidginAddBuddyData *data)
if (*whoalias == '\0')
whoalias = NULL;
+ account = data->rq_data.account;
+
g = NULL;
- if ((grp != NULL) && (*grp != '\0') && ((g = purple_find_group(grp)) == NULL))
+ if ((grp != NULL) && (*grp != '\0'))
+ {
+ if ((g = purple_find_group(grp)) == NULL)
+ {
+ g = purple_group_new(grp);
+ purple_blist_add_group(g, NULL);
+ }
+
+ b = purple_find_buddy_in_group(account, who, g);
+ }
+ else if ((b = purple_find_buddy(account, who)) != NULL)
{
- g = purple_group_new(grp);
- purple_blist_add_group(g, NULL);
+ g = purple_buddy_get_group(b);
}
- b = purple_buddy_new(data->account, who, whoalias);
- purple_blist_add_buddy(b, NULL, g, NULL);
- purple_account_add_buddy(data->account, b);
+ if (b == NULL)
+ {
+ b = purple_buddy_new(account, who, whoalias);
+ purple_blist_add_buddy(b, NULL, g, NULL);
+ }
+
+ purple_account_add_buddy(account, b);
/* Offer to merge people with the same alias. */
if (whoalias != NULL && g != NULL)
@@ -6531,7 +6890,7 @@ add_buddy_cb(GtkWidget *w, int resp, PidginAddBuddyData *data)
* Or something. --Mark
*/
- c = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, who, data->account);
+ c = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, who, data->rq_data.account);
if (c != NULL) {
icon = purple_conv_im_get_icon(PURPLE_CONV_IM(c));
if (icon != NULL)
@@ -6539,103 +6898,52 @@ add_buddy_cb(GtkWidget *w, int resp, PidginAddBuddyData *data)
}
}
- gtk_widget_destroy(data->window);
+ gtk_widget_destroy(data->rq_data.window);
}
static void
pidgin_blist_request_add_buddy(PurpleAccount *account, const char *username,
const char *group, const char *alias)
{
- GtkWidget *table;
- GtkWidget *label;
- GtkWidget *hbox;
- GtkWidget *vbox;
- GtkWidget *img;
- PidginBuddyList *gtkblist;
PidginAddBuddyData *data = g_new0(PidginAddBuddyData, 1);
- data->account =
+ make_blist_request_dialog((PidginBlistRequestData *)data,
(account != NULL
- ? account
- : purple_connection_get_account(purple_connections_get_all()->data));
-
- img = gtk_image_new_from_stock(PIDGIN_STOCK_DIALOG_QUESTION,
- gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_HUGE));
-
- gtkblist = PIDGIN_BLIST(purple_get_blist());
-
- data->window = gtk_dialog_new_with_buttons(_("Add Buddy"),
- gtkblist ? GTK_WINDOW(gtkblist->window) : NULL, GTK_DIALOG_NO_SEPARATOR,
+ ? account : purple_connection_get_account(purple_connections_get_all()->data)),
+ _("Add Buddy"), "add_buddy",
+ _("Add a buddy.\n"),
+ G_CALLBACK(add_buddy_select_account_cb), NULL,
+ G_CALLBACK(add_buddy_cb));
+ gtk_dialog_add_buttons(GTK_DIALOG(data->rq_data.window),
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_ADD, GTK_RESPONSE_OK,
NULL);
- if (gtkblist)
- gtk_window_set_transient_for(GTK_WINDOW(data->window), GTK_WINDOW(gtkblist->window));
- gtk_dialog_set_default_response(GTK_DIALOG(data->window), GTK_RESPONSE_OK);
- gtk_container_set_border_width(GTK_CONTAINER(data->window), PIDGIN_HIG_BOX_SPACE);
- gtk_window_set_resizable(GTK_WINDOW(data->window), FALSE);
- gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(data->window)->vbox), PIDGIN_HIG_BORDER);
- gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(data->window)->vbox), PIDGIN_HIG_BOX_SPACE);
- gtk_window_set_role(GTK_WINDOW(data->window), "add_buddy");
- gtk_window_set_type_hint(GTK_WINDOW(data->window),
- GDK_WINDOW_TYPE_HINT_DIALOG);
-
- hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER);
- gtk_container_add(GTK_CONTAINER(GTK_DIALOG(data->window)->vbox), hbox);
- gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
- gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
-
- vbox = gtk_vbox_new(FALSE, 0);
- gtk_container_add(GTK_CONTAINER(hbox), vbox);
-
- g_signal_connect(G_OBJECT(data->window), "destroy",
+ g_signal_connect(G_OBJECT(data->rq_data.window), "destroy",
G_CALLBACK(destroy_add_buddy_dialog_cb), data);
- label = gtk_label_new(_("Add a buddy.\n"));
- gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
- gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
-
- table = gtk_table_new(4, 2, FALSE);
- gtk_table_set_row_spacings(GTK_TABLE(table), 5);
- gtk_table_set_col_spacings(GTK_TABLE(table), 5);
- gtk_container_set_border_width(GTK_CONTAINER(table), 0);
- gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0);
-
- data->account_box = pidgin_account_option_menu_new(account, FALSE,
- G_CALLBACK(add_buddy_select_account_cb), NULL, data);
-
- gtk_table_attach_defaults(GTK_TABLE(table), data->account_box, 0, 2, 0, 1);
-
- label = gtk_label_new_with_mnemonic(_("Buddy's _username:"));
- gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
- gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2);
-
data->entry = gtk_entry_new();
- gtk_table_attach_defaults(GTK_TABLE(table), data->entry, 1, 2, 1, 2);
+
+ pidgin_add_widget_to_vbox(data->rq_data.vbox, _("Buddy's _username:"),
+ data->rq_data.sg, data->entry, TRUE, NULL);
gtk_widget_grab_focus(data->entry);
if (username != NULL)
gtk_entry_set_text(GTK_ENTRY(data->entry), username);
else
- gtk_dialog_set_response_sensitive(GTK_DIALOG(data->window),
+ gtk_dialog_set_response_sensitive(GTK_DIALOG(data->rq_data.window),
GTK_RESPONSE_OK, FALSE);
gtk_entry_set_activates_default (GTK_ENTRY(data->entry), TRUE);
- gtk_label_set_mnemonic_widget(GTK_LABEL(label), data->entry);
- pidgin_set_accessible_label (data->entry, label);
g_signal_connect(G_OBJECT(data->entry), "changed",
G_CALLBACK(pidgin_set_sensitive_if_input),
- data->window);
-
- label = gtk_label_new_with_mnemonic(_("(Optional) A_lias:"));
- gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
- gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 2, 3);
+ data->rq_data.window);
data->entry_for_alias = gtk_entry_new();
- gtk_table_attach_defaults(GTK_TABLE(table),
- data->entry_for_alias, 1, 2, 2, 3);
+ pidgin_add_widget_to_vbox(data->rq_data.vbox, _("(Optional) A_lias:"),
+ data->rq_data.sg, data->entry_for_alias, TRUE,
+ NULL);
if (alias != NULL)
gtk_entry_set_text(GTK_ENTRY(data->entry_for_alias), alias);
@@ -6643,23 +6951,11 @@ pidgin_blist_request_add_buddy(PurpleAccount *account, const char *username,
if (username != NULL)
gtk_widget_grab_focus(GTK_WIDGET(data->entry_for_alias));
- gtk_entry_set_activates_default (GTK_ENTRY(data->entry_for_alias), TRUE);
- gtk_label_set_mnemonic_widget(GTK_LABEL(label), data->entry_for_alias);
- pidgin_set_accessible_label (data->entry_for_alias, label);
-
- label = gtk_label_new_with_mnemonic(_("Add buddy to _group:"));
- gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
- gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 3, 4);
-
data->combo = pidgin_text_combo_box_entry_new(group, groups_tree());
- gtk_table_attach_defaults(GTK_TABLE(table), data->combo, 1, 2, 3, 4);
- gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_BIN(data->combo)->child);
- pidgin_set_accessible_label (data->combo, label);
-
- g_signal_connect(G_OBJECT(data->window), "response",
- G_CALLBACK(add_buddy_cb), data);
+ pidgin_add_widget_to_vbox(data->rq_data.vbox, _("Add buddy to _group:"),
+ data->rq_data.sg, data->combo, TRUE, NULL);
- gtk_widget_show_all(data->window);
+ gtk_widget_show_all(data->rq_data.window);
}
static void
@@ -6675,7 +6971,7 @@ add_chat_cb(GtkWidget *w, PidginAddChatData *data)
components = g_hash_table_new_full(g_str_hash, g_str_equal,
g_free, g_free);
- for (tmp = data->entries; tmp; tmp = tmp->next)
+ for (tmp = data->chat_data.entries; tmp; tmp = tmp->next)
{
if (g_object_get_data(tmp->data, "is_spin"))
{
@@ -6694,7 +6990,7 @@ add_chat_cb(GtkWidget *w, PidginAddChatData *data)
}
}
- chat = purple_chat_new(data->account,
+ chat = purple_chat_new(data->chat_data.rq_data.account,
gtk_entry_get_text(GTK_ENTRY(data->alias_entry)),
components);
@@ -6718,9 +7014,9 @@ add_chat_cb(GtkWidget *w, PidginAddChatData *data)
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);
+ gtk_widget_destroy(data->chat_data.rq_data.window);
+ g_free(data->chat_data.default_chat_name);
+ g_list_free(data->chat_data.entries);
g_free(data);
}
@@ -6733,166 +7029,25 @@ add_chat_resp_cb(GtkWidget *w, int resp, PidginAddChatData *data)
}
else if (resp == 1)
{
- pidgin_roomlist_dialog_show_with_account(data->account);
+ pidgin_roomlist_dialog_show_with_account(data->chat_data.rq_data.account);
}
else
{
- gtk_widget_destroy(data->window);
- g_free(data->default_chat_name);
- g_list_free(data->entries);
+ gtk_widget_destroy(data->chat_data.rq_data.window);
+ g_free(data->chat_data.default_chat_name);
+ g_list_free(data->chat_data.entries);
g_free(data);
}
}
-/*
- * Check the values of all the text entry boxes. If any required input
- * strings are empty then don't allow the user to click on "OK."
- */
-static void
-addchat_set_sensitive_if_input_cb(GtkWidget *entry, gpointer user_data)
-{
- PurplePluginProtocolInfo *prpl_info;
- PurpleConnection *gc;
- PidginAddChatData *data;
- GList *tmp;
- const char *text;
- gboolean required;
- gboolean sensitive = TRUE;
-
- data = user_data;
-
- for (tmp = data->entries; tmp != NULL; tmp = tmp->next)
- {
- if (!g_object_get_data(tmp->data, "is_spin"))
- {
- required = GPOINTER_TO_INT(g_object_get_data(tmp->data, "required"));
- text = gtk_entry_get_text(tmp->data);
- if (required && (*text == '\0'))
- sensitive = FALSE;
- }
- }
-
- gtk_dialog_set_response_sensitive(GTK_DIALOG(data->window), GTK_RESPONSE_OK, sensitive);
-
- gc = purple_account_get_connection(data->account);
- prpl_info = (gc != NULL) ? PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl) : NULL;
- sensitive = (prpl_info != NULL && prpl_info->roomlist_get_list != NULL);
-
- gtk_dialog_set_response_sensitive(GTK_DIALOG(data->window), 1, sensitive);
-}
-
-static void
-rebuild_addchat_entries(PidginAddChatData *data)
-{
- PurpleConnection *gc;
- GList *list = NULL, *tmp;
- GHashTable *defaults = NULL;
- struct proto_chat_entry *pce;
- gboolean focus = TRUE;
-
- g_return_if_fail(data->account != NULL);
-
- gc = purple_account_get_connection(data->account);
-
- gtk_container_foreach(GTK_CONTAINER(data->entries_box), (GtkCallback)gtk_widget_destroy, NULL);
-
- g_list_free(data->entries);
-
- data->entries = NULL;
-
- if (PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info != NULL)
- list = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info(gc);
-
- if (PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults != NULL)
- defaults = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults(gc, data->default_chat_name);
-
- for (tmp = list; tmp; tmp = tmp->next)
- {
- GtkWidget *input;
-
- pce = tmp->data;
-
- if (pce->is_int)
- {
- GtkObject *adjust;
- adjust = gtk_adjustment_new(pce->min, pce->min, pce->max,
- 1, 10, 10);
- input = gtk_spin_button_new(GTK_ADJUSTMENT(adjust), 1, 0);
- gtk_widget_set_size_request(input, 50, -1);
- pidgin_add_widget_to_vbox(GTK_BOX(data->entries_box), pce->label, data->sg, input, FALSE, NULL);
- }
- else
- {
- char *value;
- input = gtk_entry_new();
- gtk_entry_set_activates_default(GTK_ENTRY(input), TRUE);
- value = g_hash_table_lookup(defaults, pce->identifier);
- if (value != NULL)
- gtk_entry_set_text(GTK_ENTRY(input), value);
- if (pce->secret)
- {
- gtk_entry_set_visibility(GTK_ENTRY(input), FALSE);
-#if !GTK_CHECK_VERSION(2,16,0)
- if (gtk_entry_get_invisible_char(GTK_ENTRY(input)) == '*')
- gtk_entry_set_invisible_char(GTK_ENTRY(input), PIDGIN_INVISIBLE_CHAR);
-#endif /* Less than GTK+ 2.16 */
- }
- pidgin_add_widget_to_vbox(GTK_BOX(data->entries_box), pce->label, data->sg, input, TRUE, NULL);
- g_signal_connect(G_OBJECT(input), "changed",
- G_CALLBACK(addchat_set_sensitive_if_input_cb), data);
- }
-
- /* Do the following for any type of input widget */
- if (focus)
- {
- gtk_widget_grab_focus(input);
- focus = FALSE;
- }
- g_object_set_data(G_OBJECT(input), "identifier", (gpointer)pce->identifier);
- g_object_set_data(G_OBJECT(input), "is_spin", GINT_TO_POINTER(pce->is_int));
- g_object_set_data(G_OBJECT(input), "required", GINT_TO_POINTER(pce->required));
- data->entries = g_list_append(data->entries, input);
-
- g_free(pce);
- }
-
- g_list_free(list);
- g_hash_table_destroy(defaults);
-
- /* Set whether the "OK" button should be clickable initially */
- addchat_set_sensitive_if_input_cb(NULL, data);
-
- gtk_widget_show_all(data->entries_box);
-}
-
-static void
-addchat_select_account_cb(GObject *w, PurpleAccount *account,
- PidginAddChatData *data)
-{
- if (strcmp(purple_account_get_protocol_id(data->account),
- purple_account_get_protocol_id(account)) == 0)
- {
- data->account = account;
- }
- else
- {
- data->account = account;
- rebuild_addchat_entries(data);
- }
-}
-
static void
pidgin_blist_request_add_chat(PurpleAccount *account, PurpleGroup *group,
const char *alias, const char *name)
{
PidginAddChatData *data;
- PidginBuddyList *gtkblist;
GList *l;
PurpleConnection *gc;
- GtkWidget *label;
- GtkWidget *hbox;
- GtkWidget *vbox;
- GtkWidget *img;
+ GtkBox *vbox;
if (account != NULL) {
gc = purple_account_get_connection(account);
@@ -6921,82 +7076,44 @@ pidgin_blist_request_add_chat(PurpleAccount *account, PurpleGroup *group,
}
data = g_new0(PidginAddChatData, 1);
- data->account = account;
- data->default_chat_name = g_strdup(name);
-
- img = gtk_image_new_from_stock(PIDGIN_STOCK_DIALOG_QUESTION,
- gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_HUGE));
-
- gtkblist = PIDGIN_BLIST(purple_get_blist());
-
- data->sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
-
- data->window = gtk_dialog_new_with_buttons(_("Add Chat"),
- gtkblist ? GTK_WINDOW(gtkblist->window) : NULL, GTK_DIALOG_NO_SEPARATOR,
- _("Room _List"), 1,
+ vbox = GTK_BOX(make_blist_request_dialog((PidginBlistRequestData *)data, account,
+ _("Add Chat"), "add_chat",
+ _("Please enter an alias, and the appropriate information "
+ "about the chat you would like to add to your buddy list.\n"),
+ G_CALLBACK(chat_select_account_cb), chat_account_filter_func,
+ G_CALLBACK(add_chat_resp_cb)));
+ gtk_dialog_add_buttons(GTK_DIALOG(data->chat_data.rq_data.window),
+ _("Room List"), 1,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_ADD, GTK_RESPONSE_OK,
NULL);
- if (gtkblist)
- gtk_window_set_transient_for(GTK_WINDOW(data->window), GTK_WINDOW(gtkblist->window));
- gtk_dialog_set_default_response(GTK_DIALOG(data->window), GTK_RESPONSE_OK);
- gtk_container_set_border_width(GTK_CONTAINER(data->window), PIDGIN_HIG_BOX_SPACE);
- gtk_window_set_resizable(GTK_WINDOW(data->window), FALSE);
- gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(data->window)->vbox), PIDGIN_HIG_BORDER);
- gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(data->window)->vbox), PIDGIN_HIG_BOX_SPACE);
- gtk_window_set_role(GTK_WINDOW(data->window), "add_chat");
- gtk_window_set_type_hint(GTK_WINDOW(data->window),
- GDK_WINDOW_TYPE_HINT_DIALOG);
+ data->chat_data.default_chat_name = g_strdup(name);
- hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER);
- gtk_container_add(GTK_CONTAINER(GTK_DIALOG(data->window)->vbox), hbox);
- gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
- gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
-
- vbox = gtk_vbox_new(FALSE, 5);
- gtk_container_add(GTK_CONTAINER(hbox), vbox);
-
- label = gtk_label_new(
- _("Please enter an alias, and the appropriate information "
- "about the chat you would like to add to your buddy list.\n"));
- gtk_widget_set_size_request(label, 400, -1);
- gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
- gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
- gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
-
- data->account_menu = pidgin_account_option_menu_new(account, FALSE,
- G_CALLBACK(addchat_select_account_cb),
- chat_account_filter_func, data);
- pidgin_add_widget_to_vbox(GTK_BOX(vbox), _("_Account:"), data->sg, data->account_menu, TRUE, NULL);
-
- data->entries_box = gtk_vbox_new(FALSE, 5);
- gtk_container_set_border_width(GTK_CONTAINER(data->entries_box), 0);
- gtk_box_pack_start(GTK_BOX(vbox), data->entries_box, TRUE, TRUE, 0);
-
- rebuild_addchat_entries(data);
+ rebuild_chat_entries((PidginChatData *)data, name);
data->alias_entry = gtk_entry_new();
if (alias != NULL)
gtk_entry_set_text(GTK_ENTRY(data->alias_entry), alias);
gtk_entry_set_activates_default(GTK_ENTRY(data->alias_entry), TRUE);
- pidgin_add_widget_to_vbox(GTK_BOX(vbox), _("A_lias:"), data->sg, data->alias_entry, TRUE, NULL);
+ pidgin_add_widget_to_vbox(GTK_BOX(vbox), _("A_lias:"),
+ data->chat_data.rq_data.sg, data->alias_entry,
+ TRUE, NULL);
if (name != NULL)
gtk_widget_grab_focus(data->alias_entry);
data->group_combo = pidgin_text_combo_box_entry_new(group ? group->name : NULL, groups_tree());
- pidgin_add_widget_to_vbox(GTK_BOX(vbox), _("_Group:"), data->sg, data->group_combo, TRUE, NULL);
-
+ pidgin_add_widget_to_vbox(GTK_BOX(vbox), _("_Group:"),
+ data->chat_data.rq_data.sg, data->group_combo,
+ TRUE, NULL);
+
data->autojoin = gtk_check_button_new_with_mnemonic(_("Auto_join when account becomes online."));
data->persistent = gtk_check_button_new_with_mnemonic(_("_Remain in chat after window is closed."));
gtk_box_pack_start(GTK_BOX(vbox), data->autojoin, FALSE, FALSE, 0);
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);
-
- gtk_widget_show_all(data->window);
+ gtk_widget_show_all(data->chat_data.rq_data.window);
}
static void
@@ -7187,10 +7304,41 @@ static void buddy_signonoff_cb(PurpleBuddy *buddy)
if(gtknode->recent_signonoff_timer > 0)
purple_timeout_remove(gtknode->recent_signonoff_timer);
- gtknode->recent_signonoff_timer = purple_timeout_add(10000,
+ gtknode->recent_signonoff_timer = purple_timeout_add_seconds(10,
(GSourceFunc)buddy_signonoff_timeout_cb, buddy);
}
+void
+pidgin_blist_set_theme(PidginBlistTheme *theme)
+{
+ PidginBuddyListPrivate *priv = PIDGIN_BUDDY_LIST_GET_PRIVATE(gtkblist);
+ PurpleBuddyList *list = purple_get_blist();
+
+ if (theme != NULL)
+ purple_prefs_set_string(PIDGIN_PREFS_ROOT "/blist/theme",
+ purple_theme_get_name(PURPLE_THEME(theme)));
+ else
+ purple_prefs_set_string(PIDGIN_PREFS_ROOT "/blist/theme", "");
+
+ if (priv->current_theme)
+ g_object_unref(priv->current_theme);
+
+ priv->current_theme = theme ? g_object_ref(theme) : NULL;
+
+ pidgin_blist_build_layout(list);
+
+ pidgin_blist_refresh(list);
+}
+
+
+PidginBlistTheme *
+pidgin_blist_get_theme()
+{
+ PidginBuddyListPrivate *priv = PIDGIN_BUDDY_LIST_GET_PRIVATE(gtkblist);
+
+ return priv->current_theme;
+}
+
void pidgin_blist_init(void)
{
void *gtk_blist_handle = pidgin_blist_get_handle();
@@ -7219,6 +7367,9 @@ void pidgin_blist_init(void)
/* This pref is used in pidgintooltip.c. */
purple_prefs_add_int(PIDGIN_PREFS_ROOT "/blist/tooltip_delay", 500);
#endif
+ purple_prefs_add_string(PIDGIN_PREFS_ROOT "/blist/theme", "");
+
+ purple_theme_manager_register_type(g_object_new(PIDGIN_TYPE_BLIST_THEME_LOADER, "type", "blist", NULL));
/* Register our signals */
purple_signal_register(gtk_blist_handle, "gtkblist-hiding",
@@ -7493,11 +7644,11 @@ static void sort_method_status(PurpleBlistNode *node, PurpleBuddyList *blist, Gt
}
}
-static void sort_method_log(PurpleBlistNode *node, PurpleBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter)
+static void sort_method_log_activity(PurpleBlistNode *node, PurpleBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter)
{
GtkTreeIter more_z;
- int log_size = 0, this_log_size = 0;
+ int activity_score = 0, this_log_activity_score = 0;
const char *buddy_name, *this_buddy_name;
if(cur && (gtk_tree_model_iter_n_children(GTK_TREE_MODEL(gtkblist->treemodel), &groupiter) == 1)) {
@@ -7507,8 +7658,11 @@ static void sort_method_log(PurpleBlistNode *node, PurpleBuddyList *blist, GtkTr
if(PURPLE_BLIST_NODE_IS_CONTACT(node)) {
PurpleBlistNode *n;
- for (n = node->child; n; n = n->next)
- log_size += purple_log_get_total_size(PURPLE_LOG_IM, ((PurpleBuddy*)(n))->name, ((PurpleBuddy*)(n))->account);
+ PurpleBuddy *buddy;
+ for (n = node->child; n; n = n->next) {
+ buddy = (PurpleBuddy*)n;
+ activity_score += purple_log_get_activity_score(PURPLE_LOG_IM, buddy->name, buddy->account);
+ }
buddy_name = purple_contact_get_alias((PurpleContact*)node);
} else if(PURPLE_BLIST_NODE_IS_CHAT(node)) {
/* we don't have a reliable way of getting the log filename
@@ -7535,16 +7689,19 @@ static void sort_method_log(PurpleBlistNode *node, PurpleBuddyList *blist, GtkTr
GValue val;
PurpleBlistNode *n;
PurpleBlistNode *n2;
+ PurpleBuddy *buddy;
int cmp;
val.g_type = 0;
gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &more_z, NODE_COLUMN, &val);
n = g_value_get_pointer(&val);
- this_log_size = 0;
+ this_log_activity_score = 0;
if(PURPLE_BLIST_NODE_IS_CONTACT(n)) {
- for (n2 = n->child; n2; n2 = n2->next)
- this_log_size += purple_log_get_total_size(PURPLE_LOG_IM, ((PurpleBuddy*)(n2))->name, ((PurpleBuddy*)(n2))->account);
+ for (n2 = n->child; n2; n2 = n2->next) {
+ buddy = (PurpleBuddy*)n2;
+ this_log_activity_score += purple_log_get_activity_score(PURPLE_LOG_IM, buddy->name, buddy->account);
+ }
this_buddy_name = purple_contact_get_alias((PurpleContact*)n);
} else {
this_buddy_name = NULL;
@@ -7552,8 +7709,8 @@ static void sort_method_log(PurpleBlistNode *node, PurpleBuddyList *blist, GtkTr
cmp = purple_utf8_strcasecmp(buddy_name, this_buddy_name);
- if (!PURPLE_BLIST_NODE_IS_CONTACT(n) || log_size > this_log_size ||
- ((log_size == this_log_size) &&
+ if (!PURPLE_BLIST_NODE_IS_CONTACT(n) || activity_score > this_log_activity_score ||
+ ((activity_score == this_log_activity_score) &&
(cmp < 0 || (cmp == 0 && node < n)))) {
if (cur != NULL) {
gtk_tree_store_move_before(gtkblist->treemodel, cur, &more_z);
@@ -7886,4 +8043,3 @@ pidgin_blist_update_sort_methods(void)
if (activeitem)
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(activeitem), TRUE);
}
-
diff --git a/pidgin/gtkblist.h b/pidgin/gtkblist.h
index 9df53a899a..bda0ef77d8 100644
--- a/pidgin/gtkblist.h
+++ b/pidgin/gtkblist.h
@@ -60,6 +60,7 @@ typedef enum {
#include "pidgin.h"
#include "blist.h"
+#include "gtkblist-theme.h"
/**************************************************************************
* @name Structures
@@ -251,6 +252,23 @@ void pidgin_blist_visibility_manager_remove(void);
*/
void pidgin_blist_add_alert(GtkWidget *widget);
+/**
+ * Sets the current theme for Pidgin to use
+ *
+ * @param theme the new theme to use
+ *
+ * @since 2.6.0
+ */
+void pidgin_blist_set_theme(PidginBlistTheme *theme);
+
+/**
+ * Gets Pidgin's current buddy list theme
+ *
+ * @returns the current theme
+ *
+ * @since 2.6.0
+ */
+PidginBlistTheme *pidgin_blist_get_theme(void);
/**************************************************************************
* @name GTK+ Buddy List sorting functions
@@ -382,7 +400,7 @@ void pidgin_blist_set_headline(const char *text, GdkPixbuf *pixbuf, GCallback ca
*
* @param buddy The buddy to return markup from
* @param selected Whether this buddy is selected. If TRUE, the markup will not change the color.
- * @param aliased TRUE to return the appropriate alias of this buddy, FALSE to return its screenname and status information
+ * @param aliased TRUE to return the appropriate alias of this buddy, FALSE to return its username and status information
* @return The markup for this buddy
*
* @since 2.1.0
diff --git a/pidgin/gtkcellrendererexpander.c b/pidgin/gtkcellrendererexpander.c
index 289e34143d..06d0f384f7 100644
--- a/pidgin/gtkcellrendererexpander.c
+++ b/pidgin/gtkcellrendererexpander.c
@@ -18,19 +18,18 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
*
*/
-/* This is taken largely from GtkCellRenderer[Text|Pixbuf|Toggle] by
+/* This is taken largely from GtkCellRenderer[Text|Pixbuf|Toggle] by
* Jonathon Blandford <jrb@redhat.com> for RedHat, Inc.
*/
#include <gtk/gtk.h>
-#include <gtk/gtktreeview.h>
#include "gtkcellrendererexpander.h"
static void pidgin_cell_renderer_expander_get_property (GObject *object,
@@ -74,14 +73,14 @@ enum {
PROP_0,
PROP_IS_EXPANDER
};
-
+
static gpointer parent_class;
/* static guint expander_cell_renderer_signals [LAST_SIGNAL]; */
GType pidgin_cell_renderer_expander_get_type (void)
{
static GType cell_expander_type = 0;
-
+
if (!cell_expander_type)
{
static const GTypeInfo cell_expander_info =
@@ -97,13 +96,13 @@ GType pidgin_cell_renderer_expander_get_type (void)
(GInstanceInitFunc) pidgin_cell_renderer_expander_init,
NULL /* value_table */
};
-
+
cell_expander_type =
g_type_register_static (GTK_TYPE_CELL_RENDERER,
"PidginCellRendererExpander",
&cell_expander_info, 0);
}
-
+
return cell_expander_type;
}
@@ -118,17 +117,17 @@ static void pidgin_cell_renderer_expander_class_init (PidginCellRendererExpander
{
GObjectClass *object_class = G_OBJECT_CLASS(class);
GtkCellRendererClass *cell_class = GTK_CELL_RENDERER_CLASS(class);
-
+
parent_class = g_type_class_peek_parent (class);
object_class->finalize = pidgin_cell_renderer_expander_finalize;
object_class->get_property = pidgin_cell_renderer_expander_get_property;
object_class->set_property = pidgin_cell_renderer_expander_set_property;
-
+
cell_class->get_size = pidgin_cell_renderer_expander_get_size;
cell_class->render = pidgin_cell_renderer_expander_render;
cell_class->activate = pidgin_cell_renderer_expander_activate;
-
+
g_object_class_install_property (object_class,
PROP_IS_EXPANDER,
g_param_spec_boolean ("expander-visible",
@@ -162,7 +161,7 @@ static void pidgin_cell_renderer_expander_get_property (GObject *object,
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, psec);
break;
-
+
}
}
@@ -199,19 +198,19 @@ static void pidgin_cell_renderer_expander_get_size (GtkCellRenderer *cell,
{
gint calc_width;
gint calc_height;
- gint expander_size;
-
+ gint expander_size;
+
gtk_widget_style_get(widget, "expander-size", &expander_size, NULL);
-
+
calc_width = (gint) cell->xpad * 2 + expander_size;
calc_height = (gint) cell->ypad * 2 + expander_size;
-
+
if (width)
*width = calc_width;
-
+
if (height)
*height = calc_height;
-
+
if (cell_area)
{
if (x_offset)
@@ -228,7 +227,7 @@ static void pidgin_cell_renderer_expander_get_size (GtkCellRenderer *cell,
}
-static void pidgin_cell_renderer_expander_render (GtkCellRenderer *cell,
+static void pidgin_cell_renderer_expander_render(GtkCellRenderer *cell,
GdkWindow *window,
GtkWidget *widget,
GdkRectangle *background_area,
@@ -237,7 +236,7 @@ static void pidgin_cell_renderer_expander_render (GtkCellRenderer *cell,
guint flags)
{
PidginCellRendererExpander *cellexpander = (PidginCellRendererExpander *) cell;
-
+ gboolean set;
gint width, height;
GtkStateType state;
@@ -246,7 +245,7 @@ static void pidgin_cell_renderer_expander_render (GtkCellRenderer *cell,
width = cell_area->width;
height = cell_area->height;
-
+
#if GTK_CHECK_VERSION(2,6,0)
if (!cell->sensitive)
state = GTK_STATE_INSENSITIVE;
@@ -270,8 +269,11 @@ static void pidgin_cell_renderer_expander_render (GtkCellRenderer *cell,
cell_area->x + cell->xpad + (width / 2),
cell_area->y + cell->ypad + (height / 2),
cell->is_expanded ? GTK_EXPANDER_EXPANDED : GTK_EXPANDER_COLLAPSED);
- if (cell->is_expanded)
- gtk_paint_hline (widget->style, window, state, NULL, widget, NULL, 0,
+
+ /* only draw the line if the color isn't set - this prevents a bug where the hline appears only under the expander */
+ g_object_get(cellexpander, "cell-background-set", &set, NULL);
+ if (cell->is_expanded && !set)
+ gtk_paint_hline (widget->style, window, state, NULL, widget, NULL, 0,
widget->allocation.width, cell_area->y + cell_area->height);
}
diff --git a/pidgin/gtkcellrendererexpander.h b/pidgin/gtkcellrendererexpander.h
index ec62370cf0..983a9bd84a 100644
--- a/pidgin/gtkcellrendererexpander.h
+++ b/pidgin/gtkcellrendererexpander.h
@@ -12,7 +12,7 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
@@ -21,7 +21,7 @@
#ifndef _PIDGINCELLRENDEREREXPANDER_H_
#define _PIDGINCELLRENDEREREXPANDER_H_
-#include <gtk/gtkcellrenderer.h>
+#include <gtk/gtk.h>
#ifdef __cplusplus
extern "C" {
diff --git a/pidgin/gtkcellrendererprogress.c b/pidgin/gtkcellrendererprogress.c
index 44b831e1ef..ea5e90b59d 100644
--- a/pidgin/gtkcellrendererprogress.c
+++ b/pidgin/gtkcellrendererprogress.c
@@ -18,14 +18,14 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
*
*/
-/* This is taken largely from GtkCellRenderer[Text|Pixbuf|Toggle] by
+/* This is taken largely from GtkCellRenderer[Text|Pixbuf|Toggle] by
* Jonathon Blandford <jrb@redhat.com> for RedHat, Inc.
*/
@@ -76,14 +76,14 @@ enum {
PROP_TEXT,
PROP_SHOW_TEXT
};
-
+
static gpointer parent_class;
/* static guint progress_cell_renderer_signals [LAST_SIGNAL]; */
GType pidgin_cell_renderer_progress_get_type (void)
{
static GType cell_progress_type = 0;
-
+
if (!cell_progress_type)
{
static const GTypeInfo cell_progress_info =
@@ -99,13 +99,13 @@ GType pidgin_cell_renderer_progress_get_type (void)
(GInstanceInitFunc) pidgin_cell_renderer_progress_init,
NULL /* value_table */
};
-
+
cell_progress_type =
g_type_register_static (GTK_TYPE_CELL_RENDERER,
"PidginCellRendererProgress",
&cell_progress_info, 0);
}
-
+
return cell_progress_type;
}
@@ -120,16 +120,16 @@ static void pidgin_cell_renderer_progress_class_init (PidginCellRendererProgress
{
GObjectClass *object_class = G_OBJECT_CLASS(class);
GtkCellRendererClass *cell_class = GTK_CELL_RENDERER_CLASS(class);
-
+
parent_class = g_type_class_peek_parent (class);
object_class->finalize = pidgin_cell_renderer_progress_finalize;
object_class->get_property = pidgin_cell_renderer_progress_get_property;
object_class->set_property = pidgin_cell_renderer_progress_set_property;
-
+
cell_class->get_size = pidgin_cell_renderer_progress_get_size;
cell_class->render = pidgin_cell_renderer_progress_render;
-
+
g_object_class_install_property (object_class,
PROP_PERCENTAGE,
g_param_spec_double ("percentage",
@@ -228,16 +228,16 @@ static void pidgin_cell_renderer_progress_get_size (GtkCellRenderer *cell,
{
gint calc_width;
gint calc_height;
-
+
calc_width = (gint) cell->xpad * 2 + 50;
calc_height = (gint) cell->ypad * 2 + 12;
-
+
if (width)
*width = calc_width;
-
+
if (height)
*height = calc_height;
-
+
if (cell_area)
{
if (x_offset)
@@ -263,13 +263,13 @@ static void pidgin_cell_renderer_progress_render (GtkCellRenderer *cell,
guint flags)
{
PidginCellRendererProgress *cellprogress = (PidginCellRendererProgress *) cell;
-
+
gint width, height;
GtkStateType state;
width = cell_area->width;
height = cell_area->height;
-
+
if (GTK_WIDGET_HAS_FOCUS (widget))
state = GTK_STATE_ACTIVE;
else
@@ -280,7 +280,7 @@ static void pidgin_cell_renderer_progress_render (GtkCellRenderer *cell,
gtk_paint_box (widget->style,
window,
- GTK_STATE_NORMAL, GTK_SHADOW_IN,
+ GTK_STATE_NORMAL, GTK_SHADOW_IN,
NULL, widget, "trough",
cell_area->x + cell->xpad,
cell_area->y + cell->ypad,
diff --git a/pidgin/gtkcellrendererprogress.h b/pidgin/gtkcellrendererprogress.h
index 4c97f69cb8..d2853eef38 100644
--- a/pidgin/gtkcellrendererprogress.h
+++ b/pidgin/gtkcellrendererprogress.h
@@ -12,7 +12,7 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
@@ -21,7 +21,7 @@
#ifndef _PIDGINCELLRENDERERPROGRESS_H_
#define _PIDGINCELLRENDERERPROGRESS_H_
-#include <gtk/gtkcellrenderer.h>
+#include <gtk/gtk.h>
#ifdef __cplusplus
extern "C" {
diff --git a/pidgin/gtkcellview.c b/pidgin/gtkcellview.c
index 83b011001f..1f16de9f15 100644
--- a/pidgin/gtkcellview.c
+++ b/pidgin/gtkcellview.c
@@ -463,14 +463,14 @@ gtk_cell_view_expose (GtkWidget *widget,
area = widget->allocation;
/* we draw on our very own window, initialize x and y to zero */
- area.x = widget->allocation.x + (rtl ? widget->allocation.width : 0);
+ area.x = widget->allocation.x + (rtl ? widget->allocation.width : 0);
area.y = widget->allocation.y;
if (GTK_WIDGET_STATE (widget) == GTK_STATE_PRELIGHT)
state = GTK_CELL_RENDERER_PRELIT;
else
state = 0;
-
+
/* PACK_START */
for (i = cellview->priv->cell_list; i; i = i->next)
{
@@ -483,7 +483,7 @@ gtk_cell_view_expose (GtkWidget *widget,
continue;
area.width = info->real_width;
- if (rtl)
+ if (rtl)
area.x -= area.width;
gtk_cell_renderer_render (info->cell,
@@ -492,11 +492,11 @@ gtk_cell_view_expose (GtkWidget *widget,
/* FIXME! */
&area, &area, &event->area, state);
- if (!rtl)
+ if (!rtl)
area.x += info->real_width;
}
- area.x = rtl ? widget->allocation.x : (widget->allocation.x + widget->allocation.width);
+ area.x = rtl ? widget->allocation.x : (widget->allocation.x + widget->allocation.width);
/* PACK_END */
for (i = cellview->priv->cell_list; i; i = i->next)
@@ -511,7 +511,7 @@ gtk_cell_view_expose (GtkWidget *widget,
area.width = info->real_width;
if (!rtl)
- area.x -= area.width;
+ area.x -= area.width;
gtk_cell_renderer_render (info->cell,
widget->window,
@@ -550,7 +550,7 @@ gtk_cell_view_set_cell_data (GtkCellView *cellview)
GtkTreePath *path;
g_return_if_fail (cellview->priv->displayed_row != NULL);
-
+
path = gtk_tree_row_reference_get_path (cellview->priv->displayed_row);
gtk_tree_model_get_iter (cellview->priv->model, &iter, path);
gtk_tree_path_free (path);
@@ -666,7 +666,7 @@ gtk_cell_view_cell_layout_clear (GtkCellLayout *layout)
gtk_cell_view_cell_layout_clear_attributes (layout, info->cell);
g_object_unref (G_OBJECT (info->cell));
g_free (info);
- cellview->priv->cell_list = g_list_delete_link (cellview->priv->cell_list,
+ cellview->priv->cell_list = g_list_delete_link (cellview->priv->cell_list,
cellview->priv->cell_list);
}
}
@@ -719,7 +719,7 @@ gtk_cell_view_cell_layout_clear_attributes (GtkCellLayout *layout,
g_free (list->data);
list = list->next->next;
}
-
+
g_slist_free (info->attributes);
info->attributes = NULL;
}
@@ -905,7 +905,7 @@ gtk_cell_view_set_model (GtkCellView *cell_view,
* gtk_cell_view_set_displayed_row:
* @cell_view: a #GtkCellView
* @path: a #GtkTreePath or %NULL to unset.
- *
+ *
* Sets the row of the model that is currently displayed
* by the #GtkCellView. If the path is unset, then the
* contents of the cellview "stick" at their last value;
diff --git a/pidgin/gtkconv.c b/pidgin/gtkconv.c
index 02b0614433..1501b575d5 100644
--- a/pidgin/gtkconv.c
+++ b/pidgin/gtkconv.c
@@ -202,11 +202,11 @@ get_conversation_blist_node(PurpleConversation *conv)
switch (purple_conversation_get_type(conv)) {
case PURPLE_CONV_TYPE_IM:
- node = (PurpleBlistNode*)purple_find_buddy(conv->account, conv->name);
+ node = PURPLE_BLIST_NODE(purple_find_buddy(conv->account, conv->name));
node = node ? node->parent : NULL;
break;
case PURPLE_CONV_TYPE_CHAT:
- node = (PurpleBlistNode*)purple_blist_find_chat(conv->account, conv->name);
+ node = PURPLE_BLIST_NODE(purple_blist_find_chat(conv->account, conv->name));
break;
default:
break;
@@ -1201,6 +1201,23 @@ menu_find_cb(gpointer data, guint action, GtkWidget *widget)
gtk_widget_grab_focus(s->entry);
}
+#ifdef USE_VV
+static void
+menu_initiate_media_call_cb(gpointer data, guint action, GtkWidget *widget)
+{
+ PidginWindow *win = (PidginWindow *)data;
+ PurpleConversation *conv = pidgin_conv_window_get_active_conversation(win);
+ PurpleAccount *account = purple_conversation_get_account(conv);
+
+ purple_prpl_initiate_media(account,
+ purple_conversation_get_name(conv),
+ action == 0 ? PURPLE_MEDIA_AUDIO :
+ action == 1 ? PURPLE_MEDIA_VIDEO :
+ action == 2 ? PURPLE_MEDIA_AUDIO |
+ PURPLE_MEDIA_VIDEO : PURPLE_MEDIA_NONE);
+}
+#endif
+
static void
menu_send_file_cb(gpointer data, guint action, GtkWidget *widget)
{
@@ -1397,7 +1414,7 @@ menu_logging_cb(gpointer data, guint action, GtkWidget *widget)
if (logging == purple_conversation_is_logging(conv))
return;
-
+
node = get_conversation_blist_node(conv);
if (logging)
@@ -1837,7 +1854,7 @@ right_click_chat_cb(GtkWidget *widget, GdkEventButton *event,
gtk_tree_selection_select_path(GTK_TREE_SELECTION(
gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list))), path);
gtk_tree_view_set_cursor(GTK_TREE_VIEW(gtkchat->list),
- path, NULL, FALSE);
+ path, NULL, FALSE);
gtk_widget_grab_focus(GTK_WIDGET(gtkchat->list));
gtk_tree_model_get_iter(GTK_TREE_MODEL(model), &iter, path);
@@ -1869,7 +1886,7 @@ activate_list_cb(GtkTreeView *list, GtkTreePath *path, GtkTreeViewColumn *column
GtkTreeIter iter;
GtkTreeModel *model;
gchar *who;
-
+
model = gtk_tree_view_get_model(GTK_TREE_VIEW(list));
gtk_tree_model_get_iter(GTK_TREE_MODEL(model), &iter, path);
@@ -2063,7 +2080,7 @@ entry_key_press_cb(GtkWidget *entry, GdkEventKey *event, gpointer data)
gtkconv = (PidginConversation *)data;
conv = gtkconv->active_conv;
win = gtkconv->win;
-
+
if (conv_keypress_common(gtkconv, event))
return TRUE;
@@ -2495,13 +2512,49 @@ pidgin_conv_get_tab_icons(PurpleConversation *conv)
return get_prpl_icon_list(account);
}
+static const char *
+pidgin_conv_get_icon_stock(PurpleConversation *conv)
+{
+ PurpleAccount *account = NULL;
+ const char *stock = NULL;
+
+ g_return_val_if_fail(conv != NULL, NULL);
+
+ account = purple_conversation_get_account(conv);
+ g_return_val_if_fail(account != NULL, NULL);
+
+ /* Use the buddy icon, if possible */
+ if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM) {
+ const char *name = NULL;
+ PurpleBuddy *b;
+ name = purple_conversation_get_name(conv);
+ b = purple_find_buddy(account, name);
+ if (b != NULL) {
+ PurplePresence *p = purple_buddy_get_presence(b);
+ PurpleStatus *active = purple_presence_get_active_status(p);
+ PurpleStatusType *type = purple_status_get_type(active);
+ PurpleStatusPrimitive prim = purple_status_type_get_primitive(type);
+ stock = pidgin_stock_id_from_status_primitive(prim);
+ } else {
+ stock = PIDGIN_STOCK_STATUS_PERSON;
+ }
+ } else {
+ stock = PIDGIN_STOCK_STATUS_CHAT;
+ }
+
+ return stock;
+}
+
static GdkPixbuf *
pidgin_conv_get_icon(PurpleConversation *conv, GtkWidget *parent, const char *icon_size)
{
PurpleAccount *account = NULL;
const char *name = NULL;
+ const char *stock = NULL;
GdkPixbuf *status = NULL;
PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
+ GtkIconSize size;
+
g_return_val_if_fail(conv != NULL, NULL);
account = purple_conversation_get_account(conv);
@@ -2514,40 +2567,17 @@ pidgin_conv_get_icon(PurpleConversation *conv, GtkWidget *parent, const char *ic
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);
-
- /* XXX Seanegan: We really need a util function to return a pixbuf for a Presence to avoid all this switching */
- if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_AWAY))
- status = pidgin_create_status_icon(PURPLE_STATUS_AWAY, parent, icon_size);
- else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_EXTENDED_AWAY))
- 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 (parent, PIDGIN_STOCK_STATUS_PERSON,
- size, "GtkWidget");
- } else {
- status = gtk_widget_render_icon (parent, PIDGIN_STOCK_STATUS_CHAT,
- size, "GtkWidget");
- }
- }
+ stock = pidgin_conv_get_icon_stock(conv);
+ size = gtk_icon_size_from_name(icon_size);
+ status = gtk_widget_render_icon (parent, stock, size, "GtkWidget");
return status;
}
@@ -2565,9 +2595,9 @@ update_tab_icon(PurpleConversation *conv)
PidginConversation *gtkconv;
PidginWindow *win;
GList *l;
- GdkPixbuf *status = NULL;
- GdkPixbuf *infopane_status = NULL;
GdkPixbuf *emblem = NULL;
+ const char *status = NULL;
+ const char *infopane_status = NULL;
g_return_if_fail(conv != NULL);
@@ -2576,8 +2606,7 @@ update_tab_icon(PurpleConversation *conv)
if (conv != gtkconv->active_conv)
return;
- status = pidgin_conv_get_tab_icon(conv, TRUE);
- infopane_status = pidgin_conv_get_tab_icon(conv, FALSE);
+ status = infopane_status = pidgin_conv_get_icon_stock(conv);
if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM) {
PurpleBuddy *b = purple_find_buddy(conv->account, conv->name);
@@ -2587,14 +2616,14 @@ update_tab_icon(PurpleConversation *conv)
g_return_if_fail(status != NULL);
- gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->icon), status);
- gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->menu_icon), status);
+ g_object_set(G_OBJECT(gtkconv->icon), "stock", status, NULL);
+ g_object_set(G_OBJECT(gtkconv->menu_icon), "stock", status, NULL);
- gtk_list_store_set(GTK_LIST_STORE(gtkconv->infopane_model),
+ gtk_list_store_set(GTK_LIST_STORE(gtkconv->infopane_model),
&(gtkconv->infopane_iter),
CONV_ICON_COLUMN, infopane_status, -1);
- gtk_list_store_set(GTK_LIST_STORE(gtkconv->infopane_model),
+ gtk_list_store_set(GTK_LIST_STORE(gtkconv->infopane_model),
&(gtkconv->infopane_iter),
CONV_EMBLEM_COLUMN, emblem, -1);
if (emblem)
@@ -2616,9 +2645,6 @@ update_tab_icon(PurpleConversation *conv)
gtk_widget_queue_resize(gtkconv->infopane);
gtk_widget_queue_draw(gtkconv->infopane);
- if (status != NULL)
- g_object_unref(status);
-
if (pidgin_conv_window_is_active_conversation(conv) &&
(purple_conversation_get_type(conv) != PURPLE_CONV_TYPE_IM ||
gtkconv->u.im->anim == NULL))
@@ -2674,7 +2700,7 @@ redraw_icon(gpointer data)
scale_width = gdk_pixbuf_get_width(buf);
scale_height = gdk_pixbuf_get_height(buf);
- gtk_widget_get_size_request(gtkconv->infopane_hbox, NULL, &size);
+ gtk_widget_get_size_request(gtkconv->u.im->icon_container, NULL, &size);
size = MIN(size, MIN(scale_width, scale_height));
size = CLAMP(size, BUDDYICON_SIZE_MIN, BUDDYICON_SIZE_MAX);
@@ -2732,13 +2758,22 @@ start_anim(GtkObject *obj, PidginConversation *gtkconv)
static void
remove_icon(GtkWidget *widget, PidginConversation *gtkconv)
{
+ GList *children;
+ GtkWidget *event;
PurpleConversation *conv = gtkconv->active_conv;
PidginWindow *gtkwin;
g_return_if_fail(conv != NULL);
- if (gtkconv->u.im->icon_container != NULL)
- gtk_widget_destroy(gtkconv->u.im->icon_container);
+ gtk_widget_set_size_request(gtkconv->u.im->icon_container, -1, BUDDYICON_SIZE_MIN);
+ children = gtk_container_get_children(GTK_CONTAINER(gtkconv->u.im->icon_container));
+ if (children) {
+ /* We know there's only one child here. It'd be nice to shortcut to the
+ event box, but we can't change the PidginConversation until 3.0 */
+ event = (GtkWidget *)children->data;
+ gtk_container_remove(GTK_CONTAINER(gtkconv->u.im->icon_container), event);
+ g_list_free(children);
+ }
if (gtkconv->u.im->anim != NULL)
g_object_unref(G_OBJECT(gtkconv->u.im->anim));
@@ -2753,7 +2788,6 @@ remove_icon(GtkWidget *widget, PidginConversation *gtkconv)
gtkconv->u.im->icon = NULL;
gtkconv->u.im->anim = NULL;
gtkconv->u.im->iter = NULL;
- gtkconv->u.im->icon_container = NULL;
gtkconv->u.im->show_icon = FALSE;
gtkwin = gtkconv->win;
@@ -2814,7 +2848,7 @@ change_size_cb(GtkWidget *widget, PidginConversation *gtkconv)
PurpleConversation *conv = gtkconv->active_conv;
GSList *buddies;
- gtk_widget_get_size_request(gtkconv->infopane_hbox, NULL, &size);
+ gtk_widget_get_size_request(gtkconv->u.im->icon_container, NULL, &size);
if (size == BUDDYICON_SIZE_MAX) {
size = BUDDYICON_SIZE_MIN;
@@ -2822,7 +2856,7 @@ change_size_cb(GtkWidget *widget, PidginConversation *gtkconv)
size = BUDDYICON_SIZE_MAX;
}
- gtk_widget_set_size_request(gtkconv->infopane_hbox, -1, size);
+ gtk_widget_set_size_request(gtkconv->u.im->icon_container, -1, size);
pidgin_conv_update_buddy_icon(conv);
buddies = purple_find_buddies(purple_conversation_get_account(conv),
@@ -3054,16 +3088,13 @@ pidgin_conversations_fill_menu(GtkWidget *menu, GList *convs)
PurpleConversation *conv = (PurpleConversation*)l->data;
PidginConversation *gtkconv = PIDGIN_CONVERSATION(conv);
- GtkWidget *icon = gtk_image_new();
- GdkPixbuf *pbuf = pidgin_conv_get_icon(conv, icon, PIDGIN_ICON_SIZE_TANGO_MICROSCOPIC);
+ GtkWidget *icon = gtk_image_new_from_stock(pidgin_conv_get_icon_stock(conv),
+ gtk_icon_size_from_name(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);
- gtk_image_set_from_pixbuf(GTK_IMAGE(icon), pbuf);
- g_object_unref(pbuf);
-
item = gtk_image_menu_item_new_with_label(text);
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), icon);
g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(unseen_conv_menu_cb), conv);
@@ -3114,6 +3145,17 @@ static GtkItemFactoryEntry menu_items[] =
{ "/Conversation/sep1", NULL, NULL, 0, "<Separator>", NULL },
+#ifdef USE_VV
+ { N_("/Conversation/M_edia"), NULL, NULL, 0, "<Branch>", NULL },
+
+ { N_("/Conversation/Media/_Audio Call"), NULL, menu_initiate_media_call_cb, 0,
+ "<StockItem>", PIDGIN_STOCK_TOOLBAR_AUDIO_CALL },
+ { N_("/Conversation/Media/_Video Call"), NULL, menu_initiate_media_call_cb, 1,
+ "<StockItem>", PIDGIN_STOCK_TOOLBAR_VIDEO_CALL },
+ { N_("/Conversation/Media/Audio\\/Video _Call"), NULL, menu_initiate_media_call_cb, 2,
+ "<StockItem>", PIDGIN_STOCK_TOOLBAR_VIDEO_CALL },
+#endif
+
{ N_("/Conversation/Se_nd File..."), NULL, menu_send_file_cb, 0, "<StockItem>", PIDGIN_STOCK_TOOLBAR_SEND_FILE },
{ N_("/Conversation/Add Buddy _Pounce..."), NULL, menu_add_pounce_cb,
0, "<Item>", NULL },
@@ -3424,6 +3466,18 @@ setup_menubar(PidginWindow *win)
gtk_item_factory_get_widget(win->menu.item_factory,
N_("/Conversation/View Log"));
+#ifdef USE_VV
+ win->audio_call =
+ gtk_item_factory_get_widget(win->menu.item_factory,
+ N_("/Conversation/Media/Audio Call"));
+ win->video_call =
+ gtk_item_factory_get_widget(win->menu.item_factory,
+ N_("/Conversation/Media/Video Call"));
+ win->audio_video_call =
+ gtk_item_factory_get_widget(win->menu.item_factory,
+ N_("/Conversation/Media/Audio\\/Video Call"));
+#endif
+
/* --- */
win->menu.send_file =
@@ -3855,7 +3909,7 @@ generate_send_to_items(PidginWindow *win)
{
PurpleBlistNode *node;
- node = (PurpleBlistNode *) purple_buddy_get_contact((PurpleBuddy *)l->data);
+ node = PURPLE_BLIST_NODE(purple_buddy_get_contact(PURPLE_BUDDY(l->data)));
for (node = node->child; node != NULL; node = node->next)
{
@@ -3901,12 +3955,9 @@ generate_send_to_items(PidginWindow *win)
update_send_to_selection(win);
}
-static GdkPixbuf *
+static const char *
get_chat_buddy_status_icon(PurpleConvChat *chat, const char *name, PurpleConvChatBuddyFlags flags)
{
- PidginConversation *gtkconv = PIDGIN_CONVERSATION(chat->conv);
- GdkPixbuf *pixbuf, *scale, *scale2;
- char *filename;
const char *image = NULL;
if (flags & PURPLE_CBFLAGS_FOUNDER) {
@@ -3922,28 +3973,7 @@ get_chat_buddy_status_icon(PurpleConvChat *chat, const char *name, PurpleConvCha
} else {
return NULL;
}
-
- pixbuf = gtk_widget_render_icon (gtkconv->tab_cont, image, gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL),
- "GtkTreeView");
-
- if (!pixbuf)
- return NULL;
-
- scale = gdk_pixbuf_scale_simple(pixbuf, 16, 16, GDK_INTERP_BILINEAR);
- g_object_unref(pixbuf);
-
- if (flags && purple_conv_chat_is_user_ignored(chat, name)) {
-/* TODO: the .../status/default directory isn't installed, should it be? */
- filename = g_build_filename(DATADIR, "pixmaps", "pidgin", "status", "default", "ignored.png", NULL);
- pixbuf = gdk_pixbuf_new_from_file(filename, NULL);
- g_free(filename);
- scale2 = gdk_pixbuf_scale_simple(pixbuf, 16, 16, GDK_INTERP_BILINEAR);
- g_object_unref(pixbuf);
- gdk_pixbuf_composite(scale2, scale, 0, 0, 16, 16, 0, 0, 1, 1, GDK_INTERP_BILINEAR, 192);
- g_object_unref(scale2);
- }
-
- return scale;
+ return image;
}
static void
@@ -3955,7 +3985,7 @@ add_chat_buddy_common(PurpleConversation *conv, PurpleConvChatBuddy *cb, const c
PurpleConnection *gc;
PurplePluginProtocolInfo *prpl_info;
GtkListStore *ls;
- GdkPixbuf *pixbuf;
+ const char *stock;
GtkTreeIter iter;
gboolean is_me = FALSE;
gboolean is_buddy;
@@ -3977,7 +4007,7 @@ add_chat_buddy_common(PurpleConversation *conv, PurpleConvChatBuddy *cb, const c
ls = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)));
- pixbuf = get_chat_buddy_status_icon(chat, name, flags);
+ stock = get_chat_buddy_status_icon(chat, name, flags);
if (!strcmp(chat->nick, purple_normalize(conv->account, old_name != NULL ? old_name : name)))
is_me = TRUE;
@@ -3994,6 +4024,11 @@ add_chat_buddy_common(PurpleConversation *conv, PurpleConvChatBuddy *cb, const c
"send-name");
g_object_get(tag, "foreground-gdk", &color, NULL);
} else {
+ GtkTextTag *tag;
+ if ((tag = get_buddy_tag(conv, name, 0, FALSE)))
+ g_object_set(G_OBJECT(tag), "style", PANGO_STYLE_NORMAL, NULL);
+ if ((tag = get_buddy_tag(conv, name, PURPLE_MESSAGE_NICK, FALSE)))
+ g_object_set(G_OBJECT(tag), "style", PANGO_STYLE_NORMAL, NULL);
color = (GdkColor*)get_nick_color(gtkconv, name);
}
@@ -4007,7 +4042,7 @@ add_chat_buddy_common(PurpleConversation *conv, PurpleConvChatBuddy *cb, const c
* Inserting in the "wrong" location has no visible ill effects. - F.P.
*/
-1, /* "row" */
- CHAT_USERS_ICON_COLUMN, pixbuf,
+ CHAT_USERS_ICON_STOCK_COLUMN, stock,
CHAT_USERS_ALIAS_COLUMN, alias,
CHAT_USERS_ALIAS_KEY_COLUMN, alias_key,
CHAT_USERS_NAME_COLUMN, name,
@@ -4018,7 +4053,7 @@ add_chat_buddy_common(PurpleConversation *conv, PurpleConvChatBuddy *cb, const c
#else
gtk_list_store_append(ls, &iter);
gtk_list_store_set(ls, &iter,
- CHAT_USERS_ICON_COLUMN, pixbuf,
+ CHAT_USERS_ICON_STOCK_COLUMN, stock,
CHAT_USERS_ALIAS_COLUMN, alias,
CHAT_USERS_ALIAS_KEY_COLUMN, alias_key,
CHAT_USERS_NAME_COLUMN, name,
@@ -4028,8 +4063,6 @@ add_chat_buddy_common(PurpleConversation *conv, PurpleConvChatBuddy *cb, const c
-1);
#endif
- if (pixbuf)
- g_object_unref(pixbuf);
if (is_me && color)
gdk_color_free(color);
g_free(alias_key);
@@ -4471,19 +4504,26 @@ buddy_cb_common(PurpleBuddy *buddy, PurpleConversation *conv, gboolean is_buddy)
}
static void
-buddy_added_cb(PurpleBuddy *buddy, PurpleConversation *conv)
+buddy_added_cb(PurpleBlistNode *node, PurpleConversation *conv)
{
- buddy_cb_common(buddy, conv, TRUE);
+ if (!PURPLE_BLIST_NODE_IS_BUDDY(node))
+ return;
+
+ buddy_cb_common(PURPLE_BUDDY(node), conv, TRUE);
}
static void
-buddy_removed_cb(PurpleBuddy *buddy, PurpleConversation *conv)
+buddy_removed_cb(PurpleBlistNode *node, PurpleConversation *conv)
{
+ if (!PURPLE_BLIST_NODE_IS_BUDDY(node))
+ return;
+
/* If there's another buddy for the same "dude" on the list, do nothing. */
- if (purple_find_buddy(buddy->account, buddy->name) != NULL)
+ if (purple_find_buddy(purple_buddy_get_account(PURPLE_BUDDY(node)),
+ purple_buddy_get_name(PURPLE_BUDDY(node))) != NULL)
return;
- buddy_cb_common(buddy, conv, FALSE);
+ buddy_cb_common(PURPLE_BUDDY(node), conv, FALSE);
}
static void send_menu_cb(GtkWidget *widget, PidginConversation *gtkconv)
@@ -4597,6 +4637,7 @@ setup_chat_topic(PidginConversation *gtkconv, GtkWidget *vbox)
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
gtkchat->topic_text = gtk_entry_new();
+ gtk_widget_set_size_request(gtkchat->topic_text, -1, BUDDYICON_SIZE_MIN);
if(prpl_info->set_chat_topic == NULL) {
gtk_editable_set_editable(GTK_EDITABLE(gtkchat->topic_text), FALSE);
@@ -4676,16 +4717,18 @@ setup_chat_userlist(PidginConversation *gtkconv, GtkWidget *hpaned)
ls = gtk_list_store_new(CHAT_USERS_COLUMNS, GDK_TYPE_PIXBUF, G_TYPE_STRING,
G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT,
- GDK_TYPE_COLOR, G_TYPE_INT);
+ GDK_TYPE_COLOR, G_TYPE_INT, G_TYPE_STRING);
gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(ls), CHAT_USERS_ALIAS_KEY_COLUMN,
sort_chat_users, NULL, NULL);
list = gtk_tree_view_new_with_model(GTK_TREE_MODEL(ls));
rend = gtk_cell_renderer_pixbuf_new();
-
+ g_object_set(G_OBJECT(rend),
+ "stock-size", gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL),
+ NULL);
col = gtk_tree_view_column_new_with_attributes(NULL, rend,
- "pixbuf", CHAT_USERS_ICON_COLUMN, NULL);
+ "stock-id", CHAT_USERS_ICON_STOCK_COLUMN, NULL);
gtk_tree_view_column_set_sizing(col, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
gtk_tree_view_append_column(GTK_TREE_VIEW(list), col);
ul_width = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/conversations/chat/userlist_width");
@@ -4712,7 +4755,7 @@ setup_chat_userlist(PidginConversation *gtkconv, GtkWidget *hpaned)
"foreground-set", TRUE,
"weight-set", TRUE,
NULL);
- g_object_set(G_OBJECT(rend), "editable", TRUE, NULL);
+ g_object_set(G_OBJECT(rend), "editable", TRUE, NULL);
col = gtk_tree_view_column_new_with_attributes(NULL, rend,
"text", CHAT_USERS_ALIAS_COLUMN,
@@ -4720,9 +4763,9 @@ setup_chat_userlist(PidginConversation *gtkconv, GtkWidget *hpaned)
"weight", CHAT_USERS_WEIGHT_COLUMN,
NULL);
- purple_signal_connect(blist_handle, "buddy-added",
+ purple_signal_connect(blist_handle, "blist-node-added",
gtkchat, PURPLE_CALLBACK(buddy_added_cb), conv);
- purple_signal_connect(blist_handle, "buddy-removed",
+ purple_signal_connect(blist_handle, "blist-node-removed",
gtkchat, PURPLE_CALLBACK(buddy_removed_cb), conv);
purple_signal_connect(blist_handle, "blist-node-aliased",
gtkchat, PURPLE_CALLBACK(blist_node_aliased_cb), conv);
@@ -4803,8 +4846,8 @@ setup_common_pane(PidginConversation *gtkconv)
pidgin_conv_create_tooltip, NULL);
gtkconv->infopane = gtk_cell_view_new();
- gtkconv->infopane_model = gtk_list_store_new(CONV_NUM_COLUMNS, GDK_TYPE_PIXBUF, G_TYPE_STRING, GDK_TYPE_PIXBUF, GDK_TYPE_PIXBUF);
- gtk_cell_view_set_model(GTK_CELL_VIEW(gtkconv->infopane),
+ gtkconv->infopane_model = gtk_list_store_new(CONV_NUM_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_PIXBUF, GDK_TYPE_PIXBUF);
+ gtk_cell_view_set_model(GTK_CELL_VIEW(gtkconv->infopane),
GTK_TREE_MODEL(gtkconv->infopane_model));
g_object_unref(gtkconv->infopane_model);
gtk_list_store_append(gtkconv->infopane_model, &(gtkconv->infopane_iter));
@@ -4813,21 +4856,45 @@ setup_common_pane(PidginConversation *gtkconv)
gtk_cell_view_set_displayed_row(GTK_CELL_VIEW(gtkconv->infopane), path);
gtk_tree_path_free(path);
- if ((buddy = purple_find_buddy(purple_conversation_get_account(conv),
- purple_conversation_get_name(conv))) != NULL) {
- PurpleContact *contact = purple_buddy_get_contact(buddy);
- if (contact) {
- buddyicon_size = purple_blist_node_get_int((PurpleBlistNode*)contact, "pidgin-infopane-iconsize");
+ if (chat) {
+ /* This empty widget is used to ensure that the infopane is consistently
+ sized for chat windows. The correct fix is to put an icon in the chat
+ window as well, because that would make "Set Custom Icon" consistent
+ for both the buddy list and the chat window, but PidginConversation
+ is pretty much stuck until 3.0. */
+ GtkWidget *sizing_vbox;
+ sizing_vbox = gtk_vbox_new(FALSE, 0);
+ gtk_widget_set_size_request(sizing_vbox, -1, BUDDYICON_SIZE_MIN);
+ gtk_box_pack_start(GTK_BOX(gtkconv->infopane_hbox), sizing_vbox, FALSE, FALSE, 0);
+ gtk_widget_show(sizing_vbox);
+ }
+ else {
+ gtkconv->u.im->icon_container = gtk_vbox_new(FALSE, 0);
+
+ if ((buddy = purple_find_buddy(purple_conversation_get_account(conv),
+ purple_conversation_get_name(conv))) != NULL) {
+ PurpleContact *contact = purple_buddy_get_contact(buddy);
+ if (contact) {
+ buddyicon_size = purple_blist_node_get_int((PurpleBlistNode*)contact, "pidgin-infopane-iconsize");
+ }
}
+ buddyicon_size = CLAMP(buddyicon_size, BUDDYICON_SIZE_MIN, BUDDYICON_SIZE_MAX);
+ gtk_widget_set_size_request(gtkconv->u.im->icon_container, -1, buddyicon_size);
+
+ gtk_box_pack_start(GTK_BOX(gtkconv->infopane_hbox),
+ gtkconv->u.im->icon_container, FALSE, FALSE, 0);
+
+ gtk_widget_show(gtkconv->u.im->icon_container);
}
- buddyicon_size = CLAMP(buddyicon_size, BUDDYICON_SIZE_MIN, BUDDYICON_SIZE_MAX);
- gtk_widget_set_size_request(gtkconv->infopane_hbox, -1, buddyicon_size);
+
gtk_widget_show(gtkconv->infopane);
rend = gtk_cell_renderer_pixbuf_new();
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(gtkconv->infopane), rend, FALSE);
- gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(gtkconv->infopane), rend, "pixbuf", CONV_ICON_COLUMN, NULL);
- g_object_set(rend, "xalign", 0.0, "xpad", 6, "ypad", 0, NULL);
+ gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(gtkconv->infopane), rend, "stock-id", CONV_ICON_COLUMN, NULL);
+ g_object_set(rend, "xalign", 0.0, "xpad", 6, "ypad", 0,
+ "stock-size", gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL),
+ NULL);
rend = gtk_cell_renderer_text_new();
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(gtkconv->infopane), rend, TRUE);
@@ -4941,11 +5008,17 @@ conv_dnd_recv(GtkWidget *widget, GdkDragContext *dc, guint x, guint y,
PurpleConversation *conv = gtkconv->active_conv;
PidginWindow *win = gtkconv->win;
PurpleConversation *c;
+ PurpleAccount *convaccount = purple_conversation_get_account(conv);
+ PurpleConnection *gc = purple_account_get_connection(convaccount);
+ PurplePluginProtocolInfo *prpl_info = gc ? PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl) : NULL;
+
if (sd->target == gdk_atom_intern("PURPLE_BLIST_NODE", FALSE))
{
PurpleBlistNode *n = NULL;
PurpleBuddy *b;
PidginConversation *gtkconv = NULL;
+ PurpleAccount *buddyaccount;
+ const char *buddyname;
n = *(PurpleBlistNode **)sd->data;
@@ -4956,32 +5029,44 @@ conv_dnd_recv(GtkWidget *widget, GdkDragContext *dc, guint x, guint y,
else
return;
+ buddyaccount = purple_buddy_get_account(b);
+ buddyname = purple_buddy_get_name(b);
/*
- * If we already have an open conversation with this buddy, then
- * just move the conv to this window. Otherwise, create a new
- * conv and add it to this window.
+ * If a buddy is dragged to a chat window of the same protocol,
+ * invite him to the chat.
*/
- c = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, b->name, b->account);
- if (c != NULL) {
- PidginWindow *oldwin;
- gtkconv = PIDGIN_CONVERSATION(c);
- oldwin = gtkconv->win;
- if (oldwin != win) {
- pidgin_conv_window_remove_gtkconv(oldwin, gtkconv);
- pidgin_conv_window_add_gtkconv(win, gtkconv);
- }
+ if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT &&
+ prpl_info && PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl_info, chat_invite) &&
+ strcmp(purple_account_get_protocol_id(convaccount),
+ purple_account_get_protocol_id(buddyaccount)) == 0) {
+ purple_conv_chat_invite_user(PURPLE_CONV_CHAT(conv), buddyname, NULL, TRUE);
} else {
- c = purple_conversation_new(PURPLE_CONV_TYPE_IM, b->account, b->name);
- gtkconv = PIDGIN_CONVERSATION(c);
- if (gtkconv->win != win)
- {
- pidgin_conv_window_remove_gtkconv(gtkconv->win, gtkconv);
- pidgin_conv_window_add_gtkconv(win, gtkconv);
+ /*
+ * If we already have an open conversation with this buddy, then
+ * just move the conv to this window. Otherwise, create a new
+ * conv and add it to this window.
+ */
+ c = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, buddyname, buddyaccount);
+ if (c != NULL) {
+ PidginWindow *oldwin;
+ gtkconv = PIDGIN_CONVERSATION(c);
+ oldwin = gtkconv->win;
+ if (oldwin != win) {
+ pidgin_conv_window_remove_gtkconv(oldwin, gtkconv);
+ pidgin_conv_window_add_gtkconv(win, gtkconv);
+ }
+ } else {
+ c = purple_conversation_new(PURPLE_CONV_TYPE_IM, buddyaccount, buddyname);
+ gtkconv = PIDGIN_CONVERSATION(c);
+ if (gtkconv->win != win) {
+ pidgin_conv_window_remove_gtkconv(gtkconv->win, gtkconv);
+ pidgin_conv_window_add_gtkconv(win, gtkconv);
+ }
}
- }
- /* Make this conversation the active conversation */
- pidgin_conv_window_switch_gtkconv(win, gtkconv);
+ /* Make this conversation the active conversation */
+ pidgin_conv_window_switch_gtkconv(win, gtkconv);
+ }
gtk_drag_finish(dc, TRUE, (dc->action == GDK_ACTION_MOVE), t);
}
@@ -5000,15 +5085,22 @@ conv_dnd_recv(GtkWidget *widget, GdkDragContext *dc, guint x, guint y,
purple_notify_error(win, NULL,
_("You are not currently signed on with an account that "
"can add that buddy."), NULL);
- }
- else
- {
- c = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, username);
- gtkconv = PIDGIN_CONVERSATION(c);
- if (gtkconv->win != win)
- {
- pidgin_conv_window_remove_gtkconv(gtkconv->win, gtkconv);
- pidgin_conv_window_add_gtkconv(win, gtkconv);
+ } else {
+ /*
+ * If a buddy is dragged to a chat window of the same protocol,
+ * invite him to the chat.
+ */
+ if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT &&
+ prpl_info && PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl_info, chat_invite) &&
+ strcmp(purple_account_get_protocol_id(convaccount), protocol) == 0) {
+ purple_conv_chat_invite_user(PURPLE_CONV_CHAT(conv), username, NULL, TRUE);
+ } else {
+ c = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, username);
+ gtkconv = PIDGIN_CONVERSATION(c);
+ if (gtkconv->win != win) {
+ pidgin_conv_window_remove_gtkconv(gtkconv->win, gtkconv);
+ pidgin_conv_window_add_gtkconv(win, gtkconv);
+ }
}
}
}
@@ -5020,7 +5112,7 @@ conv_dnd_recv(GtkWidget *widget, GdkDragContext *dc, guint x, guint y,
}
else if (sd->target == gdk_atom_intern("text/uri-list", FALSE)) {
if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM)
- pidgin_dnd_file_manage(sd, purple_conversation_get_account(conv), purple_conversation_get_name(conv));
+ pidgin_dnd_file_manage(sd, convaccount, purple_conversation_get_name(conv));
gtk_drag_finish(dc, TRUE, (dc->action == GDK_ACTION_MOVE), t);
}
else
@@ -5038,9 +5130,9 @@ static const GtkTargetEntry te[] =
static PidginConversation *
pidgin_conv_find_gtkconv(PurpleConversation * conv)
{
- PurpleBuddy *bud = purple_find_buddy(conv->account, conv->name), *b;
+ PurpleBuddy *bud = purple_find_buddy(conv->account, conv->name);
PurpleContact *c;
- PurpleBlistNode *cn;
+ PurpleBlistNode *cn, *bn;
if (!bud)
return NULL;
@@ -5048,8 +5140,9 @@ pidgin_conv_find_gtkconv(PurpleConversation * conv)
if (!(c = purple_buddy_get_contact(bud)))
return NULL;
- cn = (PurpleBlistNode *)c;
- for (b = (PurpleBuddy *)cn->child; b; b = (PurpleBuddy *) ((PurpleBlistNode *)b)->next) {
+ cn = PURPLE_BLIST_NODE(c);
+ for (bn = purple_blist_node_get_first_child(cn); bn; bn = purple_blist_node_get_sibling_next(bn)) {
+ PurpleBuddy *b = PURPLE_BUDDY(bn);
PurpleConversation *conv;
if ((conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, b->name, b->account))) {
if (conv->ui_data)
@@ -5066,7 +5159,8 @@ buddy_update_cb(PurpleBlistNode *bnode, gpointer null)
GList *list;
g_return_if_fail(bnode);
- g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(bnode));
+ if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
+ return;
for (list = pidgin_conv_windows_get_list(); list; list = list->next)
{
@@ -5499,7 +5593,7 @@ static void pidgin_conv_calculate_newday(PidginConversation *gtkconv, time_t mti
gtkconv->newday = mktime(tm);
}
-/* Detect string direction and encapsulate the string in RLE/LRE/PDF unicode characters
+/* Detect string direction and encapsulate the string in RLE/LRE/PDF unicode characters
str - pointer to string (string is re-allocated and the pointer updated) */
static void
str_embed_direction_chars(char **str)
@@ -5535,38 +5629,6 @@ str_embed_direction_chars(char **str)
#endif
}
-/* Returns true if the given HTML contains RTL text */
-static gboolean
-html_is_rtl(const char *html)
-{
- GData *attributes;
- const gchar *start, *end;
- gboolean res = FALSE;
-
- if (purple_markup_find_tag("span", html, &start, &end, &attributes))
- {
- /* tmp is a member of attributes and is free with g_datalist_clear call */
- const char *tmp = g_datalist_get_data(&attributes, "dir");
- if (tmp && !g_ascii_strcasecmp(tmp, "RTL"))
- res = TRUE;
- if (!res)
- {
- tmp = g_datalist_get_data(&attributes, "style");
- if (tmp)
- {
- char *tmp2 = purple_markup_get_css_property(tmp, "direction");
- if (tmp2 && !g_ascii_strcasecmp(tmp2, "RTL"))
- res = TRUE;
- g_free(tmp2);
- }
-
- }
- g_datalist_clear(&attributes);
- }
- return res;
-}
-
-
static void
pidgin_conv_write_conv(PurpleConversation *conv, const char *name, const char *alias,
const char *message, PurpleMessageFlags flags,
@@ -5728,7 +5790,7 @@ pidgin_conv_write_conv(PurpleConversation *conv, const char *name, const char *a
}
/* Bi-Directional support - set timestamp direction using unicode characters */
- is_rtl_message = html_is_rtl(message);
+ is_rtl_message = purple_markup_is_rtl(message);
/* Enforce direction only if message is RTL - doesn't effect LTR users */
if (is_rtl_message)
str_embed_direction_chars(&mdate);
@@ -5997,6 +6059,7 @@ pidgin_conv_chat_rename_user(PurpleConversation *conv, const char *old_name,
PurpleConvChatBuddy *cbuddy;
GtkTreeIter iter;
GtkTreeModel *model;
+ GtkTextTag *tag;
int f = 1;
chat = PURPLE_CONV_CHAT(conv);
@@ -6024,6 +6087,11 @@ pidgin_conv_chat_rename_user(PurpleConversation *conv, const char *old_name,
g_free(val);
}
+ if ((tag = get_buddy_tag(conv, old_name, 0, FALSE)))
+ g_object_set(G_OBJECT(tag), "style", PANGO_STYLE_ITALIC, NULL);
+ if ((tag = get_buddy_tag(conv, old_name, PURPLE_MESSAGE_NICK, FALSE)))
+ g_object_set(G_OBJECT(tag), "style", PANGO_STYLE_ITALIC, NULL);
+
if (!purple_conv_chat_find_user(chat, old_name))
return;
@@ -6046,6 +6114,7 @@ pidgin_conv_chat_remove_users(PurpleConversation *conv, GList *users)
char tmp[BUF_LONG];
int num_users;
gboolean f;
+ GtkTextTag *tag;
chat = PURPLE_CONV_CHAT(conv);
gtkconv = PIDGIN_CONVERSATION(conv);
@@ -6078,6 +6147,11 @@ pidgin_conv_chat_remove_users(PurpleConversation *conv, GList *users)
g_free(val);
} while (f);
+
+ if ((tag = get_buddy_tag(conv, l->data, 0, FALSE)))
+ g_object_set(G_OBJECT(tag), "style", PANGO_STYLE_ITALIC, NULL);
+ if ((tag = get_buddy_tag(conv, l->data, PURPLE_MESSAGE_NICK, FALSE)))
+ g_object_set(G_OBJECT(tag), "style", PANGO_STYLE_ITALIC, NULL);
}
g_snprintf(tmp, sizeof(tmp),
@@ -6234,6 +6308,10 @@ pidgin_conv_custom_smiley_write(PurpleConversation *conv, const char *smile,
if (!smiley)
return;
+ smiley->data = g_realloc(smiley->data, smiley->datasize + size);
+ g_memmove((guchar *)smiley->data + smiley->datasize, data, size);
+ smiley->datasize += size;
+
loader = smiley->loader;
if (!loader)
return;
@@ -6406,6 +6484,36 @@ gray_stuff_out(PidginConversation *gtkconv)
else
buttons &= ~GTK_IMHTML_CUSTOM_SMILEY;
+#ifdef USE_VV
+ /* check if account support voice calls, and if the current buddy
+ supports it */
+ if (account != NULL && purple_conversation_get_type(conv)
+ == PURPLE_CONV_TYPE_IM) {
+ PurpleMediaCaps caps =
+ purple_prpl_get_media_caps(account,
+ purple_conversation_get_name(conv));
+
+ gtk_widget_set_sensitive(win->audio_call,
+ caps & PURPLE_MEDIA_CAPS_AUDIO
+ ? TRUE : FALSE);
+ gtk_widget_set_sensitive(win->video_call,
+ caps & PURPLE_MEDIA_CAPS_VIDEO
+ ? TRUE : FALSE);
+ gtk_widget_set_sensitive(win->audio_video_call,
+ caps & PURPLE_MEDIA_CAPS_AUDIO_VIDEO
+ ? TRUE : FALSE);
+ } else if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT) {
+ /* for now, don't care about chats... */
+ gtk_widget_set_sensitive(win->audio_call, FALSE);
+ gtk_widget_set_sensitive(win->video_call, FALSE);
+ gtk_widget_set_sensitive(win->audio_video_call, FALSE);
+ } else {
+ gtk_widget_set_sensitive(win->audio_call, FALSE);
+ gtk_widget_set_sensitive(win->video_call, FALSE);
+ gtk_widget_set_sensitive(win->audio_video_call, FALSE);
+ }
+#endif
+
gtk_imhtml_set_format_functions(GTK_IMHTML(gtkconv->entry), buttons);
if (account != NULL)
gtk_imhtmltoolbar_associate_smileys(GTK_IMHTMLTOOLBAR(gtkconv->toolbar), purple_account_get_protocol_id(account));
@@ -6467,10 +6575,10 @@ gray_stuff_out(PidginConversation *gtkconv)
PurpleBuddy *buddy = purple_find_buddy(conv->account, conv->name);
window_icon =
gdk_pixbuf_animation_get_static_image(gtkconv->u.im->anim);
-
+
if (buddy && !PURPLE_BUDDY_IS_ONLINE(buddy))
gdk_pixbuf_saturate_and_pixelate(window_icon, window_icon, 0.0, FALSE);
-
+
g_object_ref(window_icon);
l = g_list_append(l, window_icon);
} else {
@@ -6663,7 +6771,7 @@ pidgin_conv_update_fields(PurpleConversation *conv, PidginConvFields fields)
pango_attr_list_unref(list);
} else
gtk_label_set_attributes(GTK_LABEL(gtkconv->tab_label), NULL);
-
+
if (pidgin_conv_window_is_active_conversation(conv))
update_typing_icon(gtkconv);
@@ -6730,7 +6838,8 @@ 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))
+ PidginConversation *gtkconv = conv ? PIDGIN_CONVERSATION(conv) : NULL;
+ if (conv == NULL || (gtkconv && gtkconv->win != hidden_convwin))
return;
if (flags & (PURPLE_MESSAGE_SEND | PURPLE_MESSAGE_RECV)) {
PidginUnseenState unseen = PIDGIN_UNSEEN_NONE;
@@ -6799,6 +6908,7 @@ pidgin_conv_update_buddy_icon(PurpleConversation *conv)
GdkPixbuf *buf;
+ GList *children;
GtkWidget *event;
GdkPixbuf *scale;
int scale_width, scale_height;
@@ -6826,9 +6936,14 @@ pidgin_conv_update_buddy_icon(PurpleConversation *conv)
prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(account->gc->prpl);
/* Remove the current icon stuff */
- if (gtkconv->u.im->icon_container != NULL)
- gtk_widget_destroy(gtkconv->u.im->icon_container);
- gtkconv->u.im->icon_container = NULL;
+ children = gtk_container_get_children(GTK_CONTAINER(gtkconv->u.im->icon_container));
+ if (children) {
+ /* We know there's only one child here. It'd be nice to shortcut to the
+ event box, but we can't change the PidginConversation until 3.0 */
+ event = (GtkWidget *)children->data;
+ gtk_container_remove(GTK_CONTAINER(gtkconv->u.im->icon_container), event);
+ g_list_free(children);
+ }
if (gtkconv->u.im->anim != NULL)
g_object_unref(G_OBJECT(gtkconv->u.im->anim));
@@ -6916,7 +7031,7 @@ pidgin_conv_update_buddy_icon(PurpleConversation *conv)
scale_width = gdk_pixbuf_get_width(buf);
scale_height = gdk_pixbuf_get_height(buf);
- gtk_widget_get_size_request(gtkconv->infopane_hbox, NULL, &size);
+ gtk_widget_get_size_request(gtkconv->u.im->icon_container, NULL, &size);
size = MIN(size, MIN(scale_width, scale_height));
/* Some sanity checks */
@@ -6935,7 +7050,6 @@ pidgin_conv_update_buddy_icon(PurpleConversation *conv)
g_object_unref(buf);
if (pidgin_gdk_pixbuf_is_opaque(scale))
pidgin_gdk_pixbuf_make_round(scale);
- gtkconv->u.im->icon_container = gtk_vbox_new(FALSE, 0);
event = gtk_event_box_new();
gtk_container_add(GTK_CONTAINER(gtkconv->u.im->icon_container), event);
@@ -6956,11 +7070,6 @@ pidgin_conv_update_buddy_icon(PurpleConversation *conv)
g_object_unref(G_OBJECT(scale));
- gtk_box_pack_start(GTK_BOX(gtkconv->infopane_hbox),
- gtkconv->u.im->icon_container, FALSE, FALSE, 0);
-
- gtk_widget_show(gtkconv->u.im->icon_container);
-
/* The buddy icon code needs badly to be fixed. */
if(pidgin_conv_window_is_active_conversation(conv))
{
@@ -7235,7 +7344,7 @@ show_buddy_icons_pref_cb(const char *name, PurplePrefType type,
PurpleConversation *conv = l->data;
if (!PIDGIN_CONVERSATION(conv))
continue;
- if (GPOINTER_TO_INT(value))
+ if (GPOINTER_TO_INT(value))
gtk_widget_show(PIDGIN_CONVERSATION(conv)->infopane_hbox);
else
gtk_widget_hide(PIDGIN_CONVERSATION(conv)->infopane_hbox);
@@ -7443,7 +7552,7 @@ update_buddy_status_changed(PurpleBuddy *buddy, PurpleStatus *old, PurpleStatus
}
/* In case a conversation is started after the buddy has signed-on/off */
- g_timeout_add(11000, (GSourceFunc)update_buddy_status_timeout, buddy);
+ purple_timeout_add_seconds(11, (GSourceFunc)update_buddy_status_timeout, buddy);
}
static void
@@ -7645,7 +7754,7 @@ gboolean pidgin_conv_attach_to_conversation(PurpleConversation *conv)
list = purple_conversation_get_message_history(conv);
if (list) {
switch (purple_conversation_get_type(conv)) {
- case PURPLE_CONV_TYPE_IM:
+ case PURPLE_CONV_TYPE_IM:
{
GList *convs;
list = g_list_copy(list);
@@ -7919,9 +8028,9 @@ pidgin_conversations_init(void)
handle, PURPLE_CALLBACK(account_status_changed_cb), NULL);
/* Callbacks to update a conversation */
- purple_signal_connect(blist_handle, "buddy-added", handle,
+ purple_signal_connect(blist_handle, "blist-node-added", handle,
G_CALLBACK(buddy_update_cb), NULL);
- purple_signal_connect(blist_handle, "buddy-removed", handle,
+ purple_signal_connect(blist_handle, "blist-node-removed", handle,
G_CALLBACK(buddy_update_cb), NULL);
purple_signal_connect(blist_handle, "buddy-signed-on",
handle, PURPLE_CALLBACK(update_buddy_sign), "on");
@@ -8218,6 +8327,9 @@ gtkconv_set_unseen(PidginConversation *gtkconv, PidginUnseenState state)
gtkconv->unseen_state = state;
}
+ purple_conversation_set_data(gtkconv->active_conv, "unseen-count", GINT_TO_POINTER(gtkconv->unseen_count));
+ purple_conversation_set_data(gtkconv->active_conv, "unseen-state", GINT_TO_POINTER(gtkconv->unseen_state));
+
purple_conversation_update(gtkconv->active_conv, PURPLE_CONV_UPDATE_UNSEEN);
}
@@ -8411,7 +8523,7 @@ infopane_press_cb(GtkWidget *widget, GdkEventButton *e, PidginConversation *gtkc
G_CALLBACK(notebook_leave_cb), gtkconv->win);
return FALSE;
}
-
+
if (e->button == 3) {
/* Right click was pressed. Popup the context menu. */
GtkWidget *menu = gtk_menu_new(), *sub;
@@ -8437,7 +8549,7 @@ infopane_press_cb(GtkWidget *widget, GdkEventButton *e, PidginConversation *gtkc
}
return FALSE;
}
-
+
static gboolean
notebook_press_cb(GtkWidget *widget, GdkEventButton *e, PidginWindow *win)
{
@@ -9017,7 +9129,7 @@ plugin_changed_cb(PurplePlugin *p, gpointer data)
static gboolean gtk_conv_configure_cb(GtkWidget *w, GdkEventConfigure *event, gpointer data) {
int x, y;
-
+
if (GTK_WIDGET_VISIBLE(w))
gtk_window_get_position(GTK_WINDOW(w), &x, &y);
else
@@ -9027,7 +9139,7 @@ static gboolean gtk_conv_configure_cb(GtkWidget *w, GdkEventConfigure *event, gp
* when the window is being maximized */
if (gdk_window_get_state(w->window) & GDK_WINDOW_STATE_MAXIMIZED)
return FALSE;
-
+
/* don't save off-screen positioning */
if (x + event->width < 0 ||
y + event->height < 0 ||
@@ -9043,7 +9155,7 @@ static gboolean gtk_conv_configure_cb(GtkWidget *w, GdkEventConfigure *event, gp
/* continue to handle event normally */
return FALSE;
-
+
}
static void
@@ -9124,7 +9236,7 @@ pidgin_conv_window_new()
/* Intercept keystrokes from the menu items */
g_signal_connect(G_OBJECT(win->window), "key_press_event",
G_CALLBACK(window_keypress_cb), win);
-
+
/* Create the notebook. */
win->notebook = gtk_notebook_new();
@@ -9286,7 +9398,7 @@ pidgin_conv_window_add_gtkconv(PidginWindow *win, PidginConversation *gtkconv)
win->gtkconvs = g_list_append(win->gtkconvs, gtkconv);
gtkconv->win = win;
- if (win->gtkconvs && win->gtkconvs->next && win->gtkconvs->next->next == NULL)
+ if (win->gtkconvs && win->gtkconvs->next && win->gtkconvs->next->next == NULL)
pidgin_conv_tab_pack(win, ((PidginConversation*)win->gtkconvs->data));
@@ -9320,6 +9432,12 @@ pidgin_conv_window_add_gtkconv(PidginWindow *win, PidginConversation *gtkconv)
/* Status icon. */
gtkconv->icon = gtk_image_new();
gtkconv->menu_icon = gtk_image_new();
+ g_object_set(G_OBJECT(gtkconv->icon),
+ "icon-size", gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_MICROSCOPIC),
+ NULL);
+ g_object_set(G_OBJECT(gtkconv->menu_icon),
+ "icon-size", gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_MICROSCOPIC),
+ NULL);
gtk_widget_show(gtkconv->icon);
update_tab_icon(conv);
@@ -9445,11 +9563,11 @@ pidgin_conv_tab_pack(PidginWindow *win, PidginConversation *gtkconv)
gtk_notebook_set_tab_label(GTK_NOTEBOOK(win->notebook), gtkconv->tab_cont, ebox);
}
- gtk_notebook_set_tab_label_packing(GTK_NOTEBOOK(win->notebook), gtkconv->tab_cont,
- !tabs_side && !angle,
+ gtk_notebook_set_tab_label_packing(GTK_NOTEBOOK(win->notebook), gtkconv->tab_cont,
+ !tabs_side && !angle,
TRUE, GTK_PACK_START);
- if (pidgin_conv_window_get_gtkconv_count(win) == 1)
+ if (pidgin_conv_window_get_gtkconv_count(win) == 1)
gtk_notebook_set_show_tabs(GTK_NOTEBOOK(win->notebook),
purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/tabs") &&
(!purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/im/show_buddy_icons") ||
@@ -9660,7 +9778,7 @@ conv_placement_last_created_win(PidginConversation *conv)
if (win == NULL) {
win = pidgin_conv_window_new();
- g_signal_connect(G_OBJECT(win->window), "configure_event",
+ g_signal_connect(G_OBJECT(win->window), "configure_event",
G_CALLBACK(gtk_conv_configure_cb), NULL);
pidgin_conv_window_add_gtkconv(win, conv);
@@ -9675,7 +9793,7 @@ static gboolean
conv_placement_last_created_win_type_configured_cb(GtkWidget *w,
GdkEventConfigure *event, PidginConversation *conv)
{
- int x, y;
+ int x, y;
PurpleConversationType type = purple_conversation_get_type(conv->active_conv);
GList *all;
@@ -9688,7 +9806,7 @@ conv_placement_last_created_win_type_configured_cb(GtkWidget *w,
* when the window is being maximized */
if (gdk_window_get_state(w->window) & GDK_WINDOW_STATE_MAXIMIZED)
return FALSE;
-
+
/* don't save off-screen positioning */
if (x + event->width < 0 ||
y + event->height < 0 ||
@@ -9742,11 +9860,11 @@ conv_placement_last_created_win_type(PidginConversation *conv)
purple_prefs_get_int(PIDGIN_PREFS_ROOT "/conversations/chat/width"),
purple_prefs_get_int(PIDGIN_PREFS_ROOT "/conversations/chat/height"));
}
-
+
pidgin_conv_window_add_gtkconv(win, conv);
pidgin_conv_window_show(win);
- g_signal_connect(G_OBJECT(win->window), "configure_event",
+ g_signal_connect(G_OBJECT(win->window), "configure_event",
G_CALLBACK(conv_placement_last_created_win_type_configured_cb), conv);
} else
pidgin_conv_window_add_gtkconv(win, conv);
@@ -9760,7 +9878,7 @@ conv_placement_new_window(PidginConversation *conv)
win = pidgin_conv_window_new();
- g_signal_connect(G_OBJECT(win->window), "configure_event",
+ g_signal_connect(G_OBJECT(win->window), "configure_event",
G_CALLBACK(gtk_conv_configure_cb), NULL);
pidgin_conv_window_add_gtkconv(win, conv);
diff --git a/pidgin/gtkconv.h b/pidgin/gtkconv.h
index f94b6efc4a..afe2a21651 100644
--- a/pidgin/gtkconv.h
+++ b/pidgin/gtkconv.h
@@ -51,6 +51,7 @@ enum {
CHAT_USERS_FLAGS_COLUMN,
CHAT_USERS_COLOR_COLUMN,
CHAT_USERS_WEIGHT_COLUMN,
+ CHAT_USERS_ICON_STOCK_COLUMN, /** @since 2.6.0 */
CHAT_USERS_COLUMNS
};
diff --git a/pidgin/gtkconvwin.h b/pidgin/gtkconvwin.h
index 73107d2971..986b1ca28f 100644
--- a/pidgin/gtkconvwin.h
+++ b/pidgin/gtkconvwin.h
@@ -96,6 +96,11 @@ struct _PidginWindow
gint drag_motion_signal;
gint drag_leave_signal;
+
+ /* Media menu options. */
+ GtkWidget *audio_call;
+ GtkWidget *video_call;
+ GtkWidget *audio_video_call;
};
/*@}*/
diff --git a/pidgin/gtkdebug.c b/pidgin/gtkdebug.c
index b6edea6233..07e8872dcd 100644
--- a/pidgin/gtkdebug.c
+++ b/pidgin/gtkdebug.c
@@ -94,7 +94,7 @@ debug_window_destroy(GtkWidget *w, GdkEvent *event, void *unused)
if(debug_win->timer != 0) {
const gchar *text;
- g_source_remove(debug_win->timer);
+ purple_timeout_remove(debug_win->timer);
text = gtk_entry_get_text(GTK_ENTRY(debug_win->expression));
purple_prefs_set_string(PIDGIN_PREFS_ROOT "/debug/regex", text);
@@ -552,7 +552,7 @@ regex_changed_cb(GtkWidget *w, DebugWindow *win) {
}
if(win->timer == 0)
- win->timer = purple_timeout_add(5000, (GSourceFunc)regex_timer_cb, win);
+ win->timer = purple_timeout_add_seconds(5, (GSourceFunc)regex_timer_cb, win);
regex_compile(win);
}
@@ -769,7 +769,7 @@ debug_window_new(void)
win->filter =
gtk_toolbar_append_element(GTK_TOOLBAR(toolbar),
GTK_TOOLBAR_CHILD_TOGGLEBUTTON,
- NULL, _("Filter"), _("Filter"),
+ NULL, _("Filter"), _("Filter"),
NULL, NULL,
G_CALLBACK(regex_filter_toggled_cb),
win);
@@ -821,7 +821,7 @@ debug_window_new(void)
GTK_TOOLBAR_CHILD_WIDGET, gtk_label_new(_("Level ")),
NULL, _("Select the debug filter level."),
NULL, NULL, NULL, NULL);
-
+
win->filterlevel = gtk_combo_box_new_text();
gtk_toolbar_append_element(GTK_TOOLBAR(toolbar),
GTK_TOOLBAR_CHILD_WIDGET, win->filterlevel,
diff --git a/pidgin/gtkdialogs.c b/pidgin/gtkdialogs.c
index 167aad928e..0e16c3d8db 100644
--- a/pidgin/gtkdialogs.c
+++ b/pidgin/gtkdialogs.c
@@ -73,7 +73,8 @@ struct artist {
/* Order: Alphabetical by Last Name */
static const struct developer developers[] = {
{"Daniel 'datallah' Atallah", NULL, NULL},
- {"John 'rekkanoryo' Bailey", N_("bug master"), "rekkanoryo@pidgin.im"},
+ {"Paul 'darkrain42' Aurich", NULL, NULL },
+ {"John 'rekkanoryo' Bailey", N_("bug master"), NULL},
{"Ethan 'Paco-Paco' Blanton", NULL, NULL},
{"Hylke Bons", N_("artist"), "h.bons@student.rug.nl"},
{"Thomas Butter", NULL, NULL},
@@ -90,6 +91,7 @@ static const struct developer developers[] = {
{"Bartosz Oler", NULL, NULL},
{"Etan 'deryni' Reisner", NULL, NULL},
{"Tim 'marv' Ringenbach", NULL, NULL},
+ {"Michael 'Maiku' Ruprecht", N_("voice and video"), NULL},
{"Elliott 'QuLogic' Sales de Andrade", NULL, NULL},
{"Luke 'LSchiere' Schierer", N_("support"), "lschiere@users.sf.net"},
{"Evan Schoenberg", NULL, NULL},
@@ -101,7 +103,6 @@ static const struct developer developers[] = {
/* Order: Alphabetical by Last Name */
static const struct developer patch_writers[] = {
- {"Paul 'darkrain42' Aurich", NULL, NULL },
{"Marcus 'malu' Lundblad", NULL, NULL},
{"Dennis 'EvilDennisR' Ristuccia", N_("Senior Contributor/QA"), NULL},
{"Peter 'Fmoo' Ruibal", NULL, NULL},
@@ -185,11 +186,12 @@ static const struct translator translators[] = {
{N_("Hebrew"), "he", "Shalom Craimer", "scraimer@gmail.com"},
{N_("Hindi"), "hi", "Ravishankar Shrivastava", "raviratlami@yahoo.com"},
{N_("Hungarian"), "hu", "Kelemen Gábor", "kelemeng@gnome.hu"},
+ {N_("Armenian"), "hy", "David Avsharyan", "avsharyan@gmail.com"},
{N_("Indonesian"), "id", "Rai S. Regawa", "raireg@yahoo.com"},
{N_("Italian"), "it", "Claudio Satriano", "satriano@na.infn.it"},
{N_("Japanese"), "ja", "Takashi Aihana", "aihana@gnome.gr.jp"},
{N_("Georgian"), "ka", N_("Ubuntu Georgian Translators"), "alexander.didebulidze@stusta.mhn.de"},
- {"Khmer", "km", "Khoem Sokhem", "khoemsokhem@khmeros.info"},
+ {N_("Khmer"), "km", "Khoem Sokhem", "khoemsokhem@khmeros.info"},
{N_("Kannada"), "kn", N_("Kannada Translation team"), "translation@sampada.info"},
{N_("Korean"), "ko", "Sushizang", "sushizang@empal.com"},
{N_("Kurdish"), "ku", "Erdal Ronahi", "erdal.ronahi@gmail.com"},
@@ -222,6 +224,7 @@ static const struct translator translators[] = {
{N_("Sinhala"), "si", "Danishka Navin", "snavin@redhat.com"},
{N_("Sinhala"), "si", "Yajith Ajantha Dayarathna", "yajith@gmail.com"},
{N_("Swedish"), "sv", "Peter Hjalmarsson", "xake@telia.com"},
+ {N_("Swahili"), "sw", "Paul Msegeya", "msegeya@gmail.com"},
{N_("Tamil"), "ta", "Viveka Nathan K", "vivekanathan@users.sourceforge.net"},
{N_("Telugu"), "te", "Mr. Subbaramaih", "info.gist@cdac.in"},
{N_("Thai"), "th", "Isriya Paireepairit", "markpeak@gmail.com"},
@@ -351,7 +354,7 @@ static void destroy_about(void)
}
#if 0
-/* This function puts the version number onto the pixmap we use in the 'about'
+/* This function puts the version number onto the pixmap we use in the 'about'
* screen in Pidgin. */
static void
pidgin_logo_versionize(GdkPixbuf **original, GtkWidget *widget) {
@@ -427,7 +430,7 @@ void pidgin_dialogs_about()
#endif
gtk_widget_destroy(logo);
logo = gtk_image_new_from_pixbuf(pixbuf);
- gdk_pixbuf_unref(pixbuf);
+ g_object_unref(G_OBJECT(pixbuf));
/* Insert the logo */
obj = gtk_widget_get_accessible(logo);
tmp = g_strconcat(PIDGIN_NAME, " " DISPLAY_VERSION, NULL);
@@ -494,7 +497,7 @@ void pidgin_dialogs_about()
_("Retired Crazy Patch Writers"));
add_developers(str, retired_patch_writers);
g_string_append(str, "<BR/>");
-
+
/* Current Translators */
g_string_append_printf(str, "<FONT SIZE=\"4\">%s:</FONT><BR/>",
_("Current Translators"));
@@ -644,6 +647,12 @@ if (purple_plugins_find_with_id("core-tcl") != NULL) {
g_string_append(str, " <b>Tk:</b> Disabled<br/>");
}
+#ifdef USE_VV
+ g_string_append(str, " <b>Voice and Video:</b> Enabled<br/>");
+#else
+ g_string_append(str, " <b>Voice and Video:</b> Disabled<br/>");
+#endif
+
#ifndef _WIN32
#ifdef USE_SM
g_string_append(str, " <b>X Session Management:</b> Enabled<br/>");
@@ -1068,8 +1077,8 @@ pidgin_dialogs_remove_contact(PurpleContact *contact)
g_return_if_fail(contact != NULL);
g_return_if_fail(buddy != NULL);
- if (((PurpleBlistNode*)contact)->child == (PurpleBlistNode*)buddy &&
- !((PurpleBlistNode*)buddy)->next) {
+ if (PURPLE_BLIST_NODE(contact)->child == PURPLE_BLIST_NODE(buddy) &&
+ PURPLE_BLIST_NODE(buddy)->next == NULL) {
pidgin_dialogs_remove_buddy(buddy);
} else {
gchar *text;
@@ -1123,7 +1132,7 @@ pidgin_dialogs_merge_groups(PurpleGroup *source, const char *new_name)
ggp = g_new(struct _PidginGroupMergeObject, 1);
ggp->parent = source;
ggp->new_name = g_strdup(new_name);
-
+
purple_request_action(source, NULL, _("Merge Groups"), text, 0,
NULL, NULL, NULL,
ggp, 2,
diff --git a/pidgin/gtkdnd-hints.c b/pidgin/gtkdnd-hints.c
index 141724ee93..faed31c511 100644
--- a/pidgin/gtkdnd-hints.c
+++ b/pidgin/gtkdnd-hints.c
@@ -46,7 +46,7 @@ typedef struct
/**
* Info about each hint widget. See DndHintWindowId enum.
*/
-static HintWindowInfo hint_windows[] = {
+static HintWindowInfo hint_windows[] = {
{ NULL, "arrow-up.xpm", -13/2, 0 },
{ NULL, "arrow-down.xpm", -13/2, -16 },
{ NULL, "arrow-left.xpm", 0, -13/2 },
@@ -139,7 +139,7 @@ dnd_hints_hide_all(void)
dnd_hints_hide(i);
}
-void
+void
dnd_hints_hide(DndHintWindowId i)
{
GtkWidget *w = hint_windows[i].widget;
@@ -148,7 +148,7 @@ dnd_hints_hide(DndHintWindowId i)
gtk_widget_hide(w);
}
-void
+void
dnd_hints_show(DndHintWindowId id, gint x, gint y)
{
GtkWidget *w;
@@ -165,7 +165,7 @@ dnd_hints_show(DndHintWindowId id, gint x, gint y)
}
}
-void
+void
dnd_hints_show_relative(DndHintWindowId id, GtkWidget *widget,
DndHintPosition horiz, DndHintPosition vert)
{
diff --git a/pidgin/gtkdnd-hints.h b/pidgin/gtkdnd-hints.h
index c67ef17fed..a53b9b5835 100644
--- a/pidgin/gtkdnd-hints.h
+++ b/pidgin/gtkdnd-hints.h
@@ -25,7 +25,7 @@
#define _PIDGIN_DND_HINTS_H_
#include <glib.h>
-#include <gtk/gtkwidget.h>
+#include <gtk/gtk.h>
/**
* Conversation drag-and-drop arrow types.
diff --git a/pidgin/gtkdocklet-x11.c b/pidgin/gtkdocklet-x11.c
index 06b832b2aa..0790b1defa 100644
--- a/pidgin/gtkdocklet-x11.c
+++ b/pidgin/gtkdocklet-x11.c
@@ -5,7 +5,7 @@
* Copyright (C) 2003 Herman Bloggs <hermanator12002@yahoo.com>
* Inspired by a similar plugin by:
* John (J5) Palmieri <johnp@martianrock.com>
- *
+ *
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
@@ -15,7 +15,7 @@
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
@@ -32,6 +32,7 @@
#include "eggtrayicon.h"
#include "gtkdocklet.h"
+#include <gdk/gdkkeysyms.h>
#define SHORT_EMBED_TIMEOUT 5000
#define LONG_EMBED_TIMEOUT 15000
@@ -59,7 +60,7 @@ static void
docklet_x11_embedded_cb(GtkWidget *widget, void *data)
{
purple_debug(PURPLE_DEBUG_INFO, "docklet", "embedded\n");
-
+
g_source_remove(embed_timeout);
embed_timeout = 0;
pidgin_docklet_embedded();
@@ -89,6 +90,33 @@ docklet_x11_clicked_cb(GtkWidget *button, GdkEventButton *event, void *data)
return TRUE;
}
+static gboolean
+docklet_x11_pressed_cb(GtkWidget *button, GdkEventKey *event)
+{
+ guint state, keyval;
+
+ state = event->state & gtk_accelerator_get_default_mod_mask();
+ keyval = event->keyval;
+ if (state == 0 &&
+ (keyval == GDK_Return ||
+ keyval == GDK_KP_Enter ||
+ keyval == GDK_ISO_Enter ||
+ keyval == GDK_space ||
+ keyval == GDK_KP_Space))
+ {
+ pidgin_docklet_clicked(1);
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static void
+docklet_x11_popup_cb(GtkWidget *button)
+{
+ pidgin_docklet_clicked(3);
+}
+
static void
docklet_x11_update_icon(PurpleStatusPrimitive status, gboolean connecting, gboolean pending)
{
@@ -211,9 +239,9 @@ docklet_x11_destroy(void)
if (embed_timeout)
g_source_remove(embed_timeout);
-
+
pidgin_docklet_remove();
-
+
g_signal_handlers_disconnect_by_func(G_OBJECT(docklet), G_CALLBACK(docklet_x11_destroyed_cb), NULL);
gtk_widget_destroy(GTK_WIDGET(docklet));
@@ -239,7 +267,7 @@ docklet_x11_embed_timeout_cb(gpointer data)
*/
purple_debug_info("docklet", "failed to embed within timeout\n");
pidgin_docklet_remove();
-
+
return FALSE;
}
@@ -259,11 +287,14 @@ docklet_x11_create(gboolean recreate)
docklet = egg_tray_icon_new(PIDGIN_NAME);
box = gtk_event_box_new();
image = gtk_image_new();
+ GTK_WIDGET_SET_FLAGS (image, GTK_CAN_FOCUS);
g_signal_connect(G_OBJECT(docklet), "embedded", G_CALLBACK(docklet_x11_embedded_cb), NULL);
g_signal_connect(G_OBJECT(docklet), "destroy", G_CALLBACK(docklet_x11_destroyed_cb), NULL);
g_signal_connect(G_OBJECT(docklet), "size-allocate", G_CALLBACK(docklet_x11_resize_icon), NULL);
g_signal_connect(G_OBJECT(box), "button-press-event", G_CALLBACK(docklet_x11_clicked_cb), NULL);
+ g_signal_connect(G_OBJECT(box), "key-press-event", G_CALLBACK(docklet_x11_pressed_cb), NULL);
+ g_signal_connect(G_OBJECT(box), "popup-menu", G_CALLBACK(docklet_x11_popup_cb), NULL);
gtk_container_add(GTK_CONTAINER(box), image);
gtk_container_add(GTK_CONTAINER(docklet), box);
diff --git a/pidgin/gtkdocklet.c b/pidgin/gtkdocklet.c
index 32e2444aa7..571222e017 100644
--- a/pidgin/gtkdocklet.c
+++ b/pidgin/gtkdocklet.c
@@ -482,7 +482,7 @@ activate_saved_status_cb(GtkMenuItem *menuitem, gpointer user_data)
}
static GtkWidget *
-new_menu_item_with_status_icon(GtkWidget *menu, const char *str, PurpleStatusPrimitive primitive, GtkSignalFunc sf, gpointer data, guint accel_key, guint accel_mods, char *mod)
+new_menu_item_with_status_icon(GtkWidget *menu, const char *str, PurpleStatusPrimitive primitive, GCallback cb, gpointer data, guint accel_key, guint accel_mods, char *mod)
{
GtkWidget *menuitem;
GdkPixbuf *pixbuf;
@@ -493,8 +493,8 @@ new_menu_item_with_status_icon(GtkWidget *menu, const char *str, PurpleStatusPri
if (menu)
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
- if (sf)
- g_signal_connect(G_OBJECT(menuitem), "activate", sf, data);
+ if (cb)
+ g_signal_connect(G_OBJECT(menuitem), "activate", cb, data);
pixbuf = pidgin_create_status_icon(primitive, menu, PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL);
image = gtk_image_new_from_pixbuf(pixbuf);
diff --git a/pidgin/gtkdocklet.h b/pidgin/gtkdocklet.h
index e4e44bdc9b..8904dfe088 100644
--- a/pidgin/gtkdocklet.h
+++ b/pidgin/gtkdocklet.h
@@ -1,11 +1,11 @@
-/*
+/*
* System tray icon (aka docklet) plugin for Purple
- *
+ *
* Copyright (C) 2002-3 Robert McQueen <robot101@debian.org>
* Copyright (C) 2003 Herman Bloggs <hermanator12002@yahoo.com>
* Inspired by a similar plugin by:
* John (J5) Palmieri <johnp@martianrock.com>
- *
+ *
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
@@ -15,7 +15,7 @@
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
diff --git a/pidgin/gtkexpander.c b/pidgin/gtkexpander.c
index 71661bdf45..8df893d8b6 100644
--- a/pidgin/gtkexpander.c
+++ b/pidgin/gtkexpander.c
@@ -63,7 +63,7 @@ struct _GtkExpanderPrivate
guint expanded : 1;
guint use_underline : 1;
- guint use_markup : 1;
+ guint use_markup : 1;
guint button_down : 1;
guint prelight : 1;
};
@@ -129,7 +129,7 @@ GType
gtk_expander_get_type (void)
{
static GType expander_type = 0;
-
+
if (!expander_type)
{
static const GTypeInfo expander_info =
@@ -144,12 +144,12 @@ gtk_expander_get_type (void)
0, /* n_preallocs */
(GInstanceInitFunc) gtk_expander_init,
};
-
+
expander_type = g_type_register_static (GTK_TYPE_BIN,
"GtkExpander",
&expander_info, 0);
}
-
+
return expander_type;
}
@@ -314,7 +314,7 @@ gtk_expander_set_property (GObject *object,
GParamSpec *pspec)
{
GtkExpander *expander = GTK_EXPANDER (object);
-
+
switch (prop_id)
{
case PROP_EXPANDED:
@@ -382,7 +382,7 @@ static void
gtk_expander_destroy (GtkObject *object)
{
GtkExpanderPrivate *priv = GTK_EXPANDER (object)->priv;
-
+
if (priv->animation_timeout)
{
g_source_remove (priv->animation_timeout);
@@ -407,7 +407,7 @@ gtk_expander_realize (GtkWidget *widget)
border_width = GTK_CONTAINER (widget)->border_width;
get_expander_bounds (GTK_EXPANDER (widget), &expander_rect);
-
+
attributes.window_type = GDK_WINDOW_CHILD;
attributes.x = widget->allocation.x + border_width;
attributes.y = expander_rect.y;
@@ -831,7 +831,7 @@ gtk_expander_paint_focus (GtkExpander *expander,
NULL);
ltr = gtk_widget_get_direction (widget) != GTK_TEXT_DIR_RTL;
-
+
x = widget->allocation.x + border_width;
y = widget->allocation.y + border_width;
@@ -853,7 +853,7 @@ gtk_expander_paint_focus (GtkExpander *expander,
width += expander_size + 2 * expander_spacing;
height = MAX (height, expander_size + 2 * expander_spacing);
}
-
+
width += 2 * focus_pad + 2 * focus_width;
height += 2 * focus_pad + 2 * focus_width;
@@ -1115,16 +1115,16 @@ gtk_expander_focus (GtkWidget *widget,
GtkDirectionType direction)
{
GtkExpander *expander = GTK_EXPANDER (widget);
-
+
if (!focus_current_site (expander, direction))
{
GtkWidget *old_focus_child;
gboolean widget_is_focus;
FocusSite site = FOCUS_NONE;
-
+
widget_is_focus = gtk_widget_is_focus (widget);
old_focus_child = GTK_CONTAINER (widget)->focus_child;
-
+
if (old_focus_child && old_focus_child == expander->priv->label_widget)
site = FOCUS_LABEL;
else if (old_focus_child)
@@ -1192,9 +1192,9 @@ gtk_expander_activate (GtkExpander *expander)
/**
* gtk_expander_new:
* @label: the text of the label
- *
+ *
* Creates a new expander using @label as the text of the label.
- *
+ *
* Return value: a new #GtkExpander widget.
*
* Since: 2.4
@@ -1209,14 +1209,14 @@ gtk_expander_new (const gchar *label)
* gtk_expander_new_with_mnemonic:
* @label: the text of the label with an underscore in front of the
* mnemonic character
- *
+ *
* Creates a new expander using @label as the text of the label.
* If characters in @label are preceded by an underscore, they are underlined.
- * If you need a literal underscore character in a label, use '__' (two
- * underscores). The first underlined character represents a keyboard
+ * If you need a literal underscore character in a label, use '__' (two
+ * underscores). The first underlined character represents a keyboard
* accelerator called a mnemonic.
* Pressing Alt and that key activates the button.
- *
+ *
* Return value: a new #GtkExpander widget.
*
* Since: 2.4
@@ -1328,7 +1328,7 @@ gtk_expander_set_expanded (GtkExpander *expander,
{
gtk_expander_start_animation (expander);
}
- else
+ else
{
priv->expander_style = expanded ? GTK_EXPANDER_EXPANDED :
GTK_EXPANDER_COLLAPSED;
@@ -1643,7 +1643,7 @@ gtk_expander_set_label_widget (GtkExpander *expander,
* gtk_expander_set_label_widget().
*
* Return value: the label widget, or %NULL if there is none.
- *
+ *
* Since: 2.4
**/
GtkWidget *
diff --git a/pidgin/gtkft.c b/pidgin/gtkft.c
index 49890981db..5fd9fc9fef 100644
--- a/pidgin/gtkft.c
+++ b/pidgin/gtkft.c
@@ -705,12 +705,12 @@ make_info_table(PidginXferDialog *dialog)
};
/* Setup the initial table */
- dialog->table = table = gtk_table_new(9, 2, FALSE);
+ dialog->table = table = gtk_table_new(G_N_ELEMENTS(labels) + 1, 2, FALSE);
gtk_table_set_row_spacings(GTK_TABLE(table), PIDGIN_HIG_BOX_SPACE);
gtk_table_set_col_spacings(GTK_TABLE(table), PIDGIN_HIG_BOX_SPACE);
/* Setup the labels */
- for (i = 0; i < sizeof(labels) / sizeof(*labels); i++) {
+ for (i = 0; i < G_N_ELEMENTS(labels); i++) {
GtkWidget *label;
char buf[256];
@@ -734,7 +734,9 @@ make_info_table(PidginXferDialog *dialog)
/* Setup the progress bar */
dialog->progress = gtk_progress_bar_new();
- gtk_table_attach(GTK_TABLE(table), dialog->progress, 0, 2, 8, 9,
+ gtk_table_attach(GTK_TABLE(table), dialog->progress,
+ 0, 2,
+ G_N_ELEMENTS(labels), G_N_ELEMENTS(labels) + 1,
GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show(dialog->progress);
diff --git a/pidgin/gtkicon-theme-loader.c b/pidgin/gtkicon-theme-loader.c
new file mode 100644
index 0000000000..79281f6822
--- /dev/null
+++ b/pidgin/gtkicon-theme-loader.c
@@ -0,0 +1,111 @@
+/*
+ * PidginIconThemeLoader for Pidgin
+ *
+ * Pidgin is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#include "gtkicon-theme-loader.h"
+#include "gtkstatus-icon-theme.h"
+
+#include "xmlnode.h"
+
+/*****************************************************************************
+ * Icon Theme Builder
+ *****************************************************************************/
+
+static PurpleTheme *
+pidgin_icon_loader_build(const gchar *dir)
+{
+ xmlnode *root_node = NULL, *sub_node;
+ gchar *filename_full, *data;
+ PidginIconTheme *theme = NULL;
+
+ /* Find the theme file */
+ g_return_val_if_fail(dir != NULL, NULL);
+ filename_full = g_build_filename(dir, "theme.xml", NULL);
+
+ if (g_file_test(filename_full, G_FILE_TEST_IS_REGULAR))
+ root_node = xmlnode_from_file(dir, "theme.xml", "icon themes", "icon-theme-loader");
+
+ g_free(filename_full);
+ g_return_val_if_fail(root_node != NULL, NULL);
+
+ /* Parse the tree */
+ sub_node = xmlnode_get_child(root_node, "description");
+ data = xmlnode_get_data(sub_node);
+
+ if (xmlnode_get_attrib(root_node, "name") != NULL) {
+ theme = g_object_new(PIDGIN_TYPE_STATUS_ICON_THEME,
+ "type", "status-icon",
+ "name", xmlnode_get_attrib(root_node, "name"),
+ "author", xmlnode_get_attrib(root_node, "author"),
+ "image", xmlnode_get_attrib(root_node, "image"),
+ "directory", dir,
+ "description", data, NULL);
+
+ sub_node = xmlnode_get_child(root_node, "icon");
+
+ while (sub_node) {
+ pidgin_icon_theme_set_icon(theme,
+ xmlnode_get_attrib(sub_node, "id"),
+ xmlnode_get_attrib(sub_node, "file"));
+ sub_node = xmlnode_get_next_twin(sub_node);
+ }
+ }
+
+ xmlnode_free(root_node);
+ g_free(data);
+ return PURPLE_THEME(theme);
+}
+
+/******************************************************************************
+ * GObject Stuff
+ *****************************************************************************/
+
+static void
+pidgin_icon_theme_loader_class_init (PidginIconThemeLoaderClass *klass)
+{
+ PurpleThemeLoaderClass *loader_klass = PURPLE_THEME_LOADER_CLASS(klass);
+
+ loader_klass->purple_theme_loader_build = pidgin_icon_loader_build;
+}
+
+
+GType
+pidgin_icon_theme_loader_get_type (void)
+{
+ static GType type = 0;
+ if (type == 0) {
+ static const GTypeInfo info = {
+ sizeof(PidginIconThemeLoaderClass),
+ NULL, /* base_init */
+ NULL, /* base_finalize */
+ (GClassInitFunc)pidgin_icon_theme_loader_class_init, /* class_init */
+ NULL, /* class_finalize */
+ NULL, /* class_data */
+ sizeof (PidginIconThemeLoader),
+ 0, /* n_preallocs */
+ NULL, /* instance_init */
+ NULL, /* value table */
+ };
+ type = g_type_register_static (PURPLE_TYPE_THEME_LOADER,
+ "PidginIconThemeLoader", &info, 0);
+ }
+ return type;
+}
diff --git a/pidgin/gtkicon-theme-loader.h b/pidgin/gtkicon-theme-loader.h
new file mode 100644
index 0000000000..eccb85dc32
--- /dev/null
+++ b/pidgin/gtkicon-theme-loader.h
@@ -0,0 +1,71 @@
+/**
+ * @file gtkicon-theme-loader.h Pidgin Icon Theme Loader Class API
+ */
+
+/* purple
+ *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#ifndef PIDGIN_ICON_THEME_LOADER_H
+#define PIDGIN_ICON_THEME_LOADER_H
+
+#include <glib.h>
+#include <glib-object.h>
+#include "theme-loader.h"
+
+/**
+ * A pidgin icon theme loader. Extends PurpleThemeLoader (theme-loader.h)
+ * This is a class designed to build icon themes
+ *
+ * PidginIconThemeLoader is a GObject.
+ */
+typedef struct _PidginIconThemeLoader PidginIconThemeLoader;
+typedef struct _PidginIconThemeLoaderClass PidginIconThemeLoaderClass;
+
+#define PIDGIN_TYPE_ICON_THEME_LOADER (pidgin_icon_theme_loader_get_type ())
+#define PIDGIN_ICON_THEME_LOADER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PIDGIN_TYPE_ICON_THEME_LOADER, PidginIconThemeLoader))
+#define PIDGIN_ICON_THEME_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PIDGIN_TYPE_ICON_THEME_LOADER, PidginIconThemeLoaderClass))
+#define PIDGIN_IS_ICON_THEME_LOADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PIDGIN_TYPE_ICON_THEME_LOADER))
+#define PIDGIN_IS_ICON_THEME_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PIDGIN_TYPE_ICON_THEME_LOADER))
+#define PIDGIN_ICON_THEME_LOADER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PIDGIN_TYPE_ICON_THEME_LOADER, PidginIconThemeLoaderClass))
+
+struct _PidginIconThemeLoader
+{
+ PurpleThemeLoader parent;
+};
+
+struct _PidginIconThemeLoaderClass
+{
+ PurpleThemeLoaderClass parent_class;
+};
+
+/**************************************************************************/
+/** @name Pidgin Icon Theme-Loader API */
+/**************************************************************************/
+G_BEGIN_DECLS
+
+/**
+ * GObject foo.
+ * @internal.
+ */
+GType pidgin_icon_theme_loader_get_type(void);
+
+G_END_DECLS
+#endif /* PIDGIN_ICON_THEME_LOADER_H */
diff --git a/pidgin/gtkicon-theme.c b/pidgin/gtkicon-theme.c
new file mode 100644
index 0000000000..feca1dd7ef
--- /dev/null
+++ b/pidgin/gtkicon-theme.c
@@ -0,0 +1,142 @@
+/*
+ * Icon Themes for Pidgin
+ *
+ * Pidgin is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#include "gtkicon-theme.h"
+#include "pidginstock.h"
+
+#include <gtk/gtk.h>
+
+#define PIDGIN_ICON_THEME_GET_PRIVATE(Gobject) \
+ ((PidginIconThemePrivate *) ((PIDGIN_ICON_THEME(Gobject))->priv))
+
+/******************************************************************************
+ * Structs
+ *****************************************************************************/
+
+typedef struct {
+ /* used to store filenames of diffrent icons */
+ GHashTable *icon_files;
+} PidginIconThemePrivate;
+
+/******************************************************************************
+ * Globals
+ *****************************************************************************/
+
+static GObjectClass *parent_class = NULL;
+
+/******************************************************************************
+ * GObject Stuff
+ *****************************************************************************/
+
+static void
+pidgin_icon_theme_init(GTypeInstance *instance,
+ gpointer klass)
+{
+ PidginIconThemePrivate *priv;
+
+ (PIDGIN_ICON_THEME(instance))->priv = g_new0(PidginIconThemePrivate, 1);
+
+ priv = PIDGIN_ICON_THEME_GET_PRIVATE(instance);
+
+ priv->icon_files = g_hash_table_new_full(g_str_hash,
+ g_str_equal, g_free, g_free);
+}
+
+static void
+pidgin_icon_theme_finalize(GObject *obj)
+{
+ PidginIconThemePrivate *priv;
+
+ priv = PIDGIN_ICON_THEME_GET_PRIVATE(obj);
+
+ g_hash_table_destroy(priv->icon_files);
+ g_free(priv);
+
+ parent_class->finalize(obj);
+}
+
+static void
+pidgin_icon_theme_class_init(PidginIconThemeClass *klass)
+{
+ GObjectClass *obj_class = G_OBJECT_CLASS(klass);
+
+ parent_class = g_type_class_peek_parent(klass);
+
+ obj_class->finalize = pidgin_icon_theme_finalize;
+}
+
+GType
+pidgin_icon_theme_get_type(void)
+{
+ static GType type = 0;
+ if (type == 0) {
+ static const GTypeInfo info = {
+ sizeof(PidginIconThemeClass),
+ NULL, /* base_init */
+ NULL, /* base_finalize */
+ (GClassInitFunc)pidgin_icon_theme_class_init, /* class_init */
+ NULL, /* class_finalize */
+ NULL, /* class_data */
+ sizeof(PidginIconTheme),
+ 0, /* n_preallocs */
+ pidgin_icon_theme_init, /* instance_init */
+ NULL, /* value table */
+ };
+ type = g_type_register_static(PURPLE_TYPE_THEME,
+ "PidginIconTheme", &info, G_TYPE_FLAG_ABSTRACT);
+ }
+ return type;
+}
+
+/*****************************************************************************
+ * Public API functions
+ *****************************************************************************/
+
+const gchar *
+pidgin_icon_theme_get_icon(PidginIconTheme *theme,
+ const gchar *id)
+{
+ PidginIconThemePrivate *priv;
+
+ g_return_val_if_fail(PIDGIN_IS_ICON_THEME(theme), NULL);
+
+ priv = PIDGIN_ICON_THEME_GET_PRIVATE(theme);
+
+ return g_hash_table_lookup(priv->icon_files, id);
+}
+
+void
+pidgin_icon_theme_set_icon(PidginIconTheme *theme,
+ const gchar *id,
+ const gchar *filename)
+{
+ PidginIconThemePrivate *priv;
+ g_return_if_fail(PIDGIN_IS_ICON_THEME(theme));
+
+ priv = PIDGIN_ICON_THEME_GET_PRIVATE(theme);
+
+ if (filename != NULL)
+ g_hash_table_replace(priv->icon_files,
+ g_strdup(id), g_strdup(filename));
+ else
+ g_hash_table_remove(priv->icon_files, id);
+}
diff --git a/pidgin/gtkicon-theme.h b/pidgin/gtkicon-theme.h
new file mode 100644
index 0000000000..ce67048ba8
--- /dev/null
+++ b/pidgin/gtkicon-theme.h
@@ -0,0 +1,95 @@
+/**
+ * @file gtkicon-theme.h Pidgin Icon Theme Class API
+ */
+
+/* pidgin
+ *
+ * Pidgin is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#ifndef PIDGIN_ICON_THEME_H
+#define PIDGIN_ICON_THEME_H
+
+#include <glib.h>
+#include <glib-object.h>
+#include "theme.h"
+
+/**
+ * extends PurpleTheme (theme.h)
+ * A pidgin icon theme.
+ * This object represents a Pidgin icon theme.
+ *
+ * PidginIconTheme is a PurpleTheme Object.
+ */
+typedef struct _PidginIconTheme PidginIconTheme;
+typedef struct _PidginIconThemeClass PidginIconThemeClass;
+
+#define PIDGIN_TYPE_ICON_THEME (pidgin_icon_theme_get_type ())
+#define PIDGIN_ICON_THEME(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PIDGIN_TYPE_ICON_THEME, PidginIconTheme))
+#define PIDGIN_ICON_THEME_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PIDGIN_TYPE_ICON_THEME, PidginIconThemeClass))
+#define PIDGIN_IS_ICON_THEME(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PIDGIN_TYPE_ICON_THEME))
+#define PIDGIN_IS_ICON_THEME_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PIDGIN_TYPE_ICON_THEME))
+#define PIDGIN_ICON_THEME_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PIDGIN_TYPE_ICON_THEME, PidginIconThemeClass))
+
+struct _PidginIconTheme
+{
+ PurpleTheme parent;
+ gpointer priv;
+};
+
+struct _PidginIconThemeClass
+{
+ PurpleThemeClass parent_class;
+};
+
+/**************************************************************************/
+/** @name Pidgin Icon Theme API */
+/**************************************************************************/
+G_BEGIN_DECLS
+
+/**
+ * GObject foo.
+ * @internal.
+ */
+GType pidgin_icon_theme_get_type(void);
+
+/**
+ * Returns a copy of the filename for the icon event or NULL if it is not set
+ *
+ * @param theme the theme
+ * @param event the pidgin icon event to look up
+ *
+ * @returns the filename of the icon event
+ */
+const gchar *pidgin_icon_theme_get_icon(PidginIconTheme *theme,
+ const gchar *event);
+
+/**
+ * Sets the filename for a given icon id, setting the icon to NULL will remove the icon from the theme
+ *
+ * @param theme the theme
+ * @param icon_id a string representing what the icon is to be used for
+ * @param filename the name of the file to be used for the given id
+ */
+void pidgin_icon_theme_set_icon(PidginIconTheme *theme,
+ const gchar *icon_id,
+ const gchar *filename);
+
+G_END_DECLS
+#endif /* PIDGIN_ICON_THEME_H */
diff --git a/pidgin/gtkimhtml.c b/pidgin/gtkimhtml.c
index 5008c65eb4..0e5d696239 100644
--- a/pidgin/gtkimhtml.c
+++ b/pidgin/gtkimhtml.c
@@ -45,7 +45,7 @@
#include "gtksourceundomanager.h"
#include "gtksourceview-marshal.h"
#include <gtk/gtk.h>
-#include <glib/gerror.h>
+#include <glib.h>
#include <gdk/gdkkeysyms.h>
#include <string.h>
#include <ctype.h>
@@ -82,12 +82,33 @@ struct scalable_data {
GtkTextMark *mark;
};
+typedef struct {
+ GtkIMHtmlScalable *image;
+ gpointer data;
+ gsize datasize;
+} GtkIMHtmlImageSave;
struct im_image_data {
int id;
GtkTextMark *mark;
};
+struct _GtkIMHtmlLink
+{
+ GtkIMHtml *imhtml;
+ gchar *url;
+ GtkTextTag *tag;
+};
+
+typedef struct _GtkIMHtmlProtocol
+{
+ char *name;
+ int length;
+
+ gboolean (*activate)(GtkIMHtml *imhtml, GtkIMHtmlLink *link);
+ gboolean (*context_menu)(GtkIMHtml *imhtml, GtkIMHtmlLink *link, GtkWidget *menu);
+} GtkIMHtmlProtocol;
+
static gboolean
gtk_text_view_drag_motion (GtkWidget *widget,
GdkDragContext *context,
@@ -115,6 +136,9 @@ static void imhtml_toggle_underline(GtkIMHtml *imhtml);
static void imhtml_font_grow(GtkIMHtml *imhtml);
static void imhtml_font_shrink(GtkIMHtml *imhtml);
static void imhtml_clear_formatting(GtkIMHtml *imhtml);
+static int gtk_imhtml_is_protocol(const char *text);
+static void gtk_imhtml_activate_tag(GtkIMHtml *imhtml, GtkTextTag *tag);
+static void gtk_imhtml_link_destroy(GtkIMHtmlLink *link);
/* POINT_SIZE converts from AIM font sizes to a point size scale factor. */
#define MAX_FONT_SIZE 7
@@ -349,7 +373,7 @@ gtk_smiley_tree_destroy (GtkSmileyTree *tree)
g_string_free (t->values, TRUE);
g_free (t->children);
}
-
+
g_free (t);
}
}
@@ -763,7 +787,7 @@ gtk_imhtml_expose_event (GtkWidget *widget,
gc,
TRUE,
visible_rect.x, visible_rect.y, visible_rect.width, visible_rect.height);
- gdk_gc_unref(gc);
+ g_object_unref(G_OBJECT(gc));
if (GTK_WIDGET_CLASS (parent_class)->expose_event)
return (* GTK_WIDGET_CLASS (parent_class)->expose_event)
@@ -819,7 +843,7 @@ gtk_imhtml_expose_event (GtkWidget *widget,
&tag_area.x,
&tag_area.y);
-
+
rect.height = tag_area.y + tag_area.height - rect.y
+ gtk_text_view_get_pixels_above_lines(GTK_TEXT_VIEW(widget))
+ gtk_text_view_get_pixels_below_lines(GTK_TEXT_VIEW(widget));
@@ -854,7 +878,7 @@ gtk_imhtml_expose_event (GtkWidget *widget,
!gtk_text_iter_begins_tag(&cur, NULL));
}
- gdk_gc_unref(gc);
+ g_object_unref(G_OBJECT(gc));
if (GTK_WIDGET_CLASS (parent_class)->expose_event)
return (* GTK_WIDGET_CLASS (parent_class)->expose_event)
@@ -1106,8 +1130,8 @@ static void imhtml_paste_insert(GtkIMHtml *imhtml, const char *text, gboolean pl
GtkTextIter iter;
GtkIMHtmlOptions flags = plaintext ? GTK_IMHTML_NO_SMILEY : (GTK_IMHTML_NO_NEWLINE | GTK_IMHTML_NO_COMMENTS);
- if (gtk_text_buffer_get_selection_bounds(imhtml->text_buffer, NULL, NULL))
- gtk_text_buffer_delete_selection(imhtml->text_buffer, TRUE, TRUE);
+ /* Delete any currently selected text */
+ gtk_text_buffer_delete_selection(imhtml->text_buffer, TRUE, TRUE);
gtk_text_buffer_get_iter_at_mark(imhtml->text_buffer, &iter, gtk_text_buffer_get_insert(imhtml->text_buffer));
if (!imhtml->wbfo && !plaintext)
@@ -1365,7 +1389,7 @@ gtk_imhtml_finalize (GObject *object)
gtk_widget_destroy(imhtml->tip_window);
}
if(imhtml->tip_timer)
- gtk_timeout_remove(imhtml->tip_timer);
+ g_source_remove(imhtml->tip_timer);
for(scalables = imhtml->scalables; scalables; scalables = scalables->next) {
struct scalable_data *sd = scalables->data;
@@ -1391,6 +1415,38 @@ gtk_imhtml_finalize (GObject *object)
}
+static GtkIMHtmlProtocol *
+imhtml_find_protocol(const char *url, gboolean reverse)
+{
+ GtkIMHtmlClass *klass;
+ GList *iter;
+ GtkIMHtmlProtocol *proto = NULL;
+ int length = reverse ? strlen(url) : -1;
+
+ klass = g_type_class_ref(GTK_TYPE_IMHTML);
+ for (iter = klass->protocols; iter; iter = iter->next) {
+ proto = iter->data;
+ if (g_ascii_strncasecmp(url, proto->name, reverse ? MIN(length, proto->length) : proto->length) == 0) {
+ return proto;
+ }
+ }
+ return NULL;
+}
+
+static void
+imhtml_url_clicked(GtkIMHtml *imhtml, const char *url)
+{
+ GtkIMHtmlProtocol *proto = imhtml_find_protocol(url, FALSE);
+ GtkIMHtmlLink *link;
+ if (!proto)
+ return;
+ link = g_new0(GtkIMHtmlLink, 1);
+ link->imhtml = g_object_ref(imhtml);
+ link->url = g_strdup(url);
+ proto->activate(imhtml, link); /* XXX: Do something with the return value? */
+ gtk_imhtml_link_destroy(link);
+}
+
/* Boring GTK+ stuff */
static void gtk_imhtml_class_init (GtkIMHtmlClass *klass)
{
@@ -1400,7 +1456,7 @@ static void gtk_imhtml_class_init (GtkIMHtmlClass *klass)
GObjectClass *gobject_class;
object_class = (GtkObjectClass*) klass;
gobject_class = (GObjectClass*) klass;
- parent_class = gtk_type_class(GTK_TYPE_TEXT_VIEW);
+ parent_class = g_type_class_ref(GTK_TYPE_TEXT_VIEW);
signals[URL_CLICKED] = g_signal_new("url_clicked",
G_TYPE_FROM_CLASS(gobject_class),
G_SIGNAL_RUN_FIRST,
@@ -1475,6 +1531,7 @@ static void gtk_imhtml_class_init (GtkIMHtmlClass *klass)
klass->toggle_format = imhtml_toggle_format;
klass->message_send = imhtml_message_send;
klass->clear_format = imhtml_clear_formatting;
+ klass->url_clicked = imhtml_url_clicked;
klass->undo = gtk_imhtml_undo;
klass->redo = gtk_imhtml_redo;
@@ -1688,37 +1745,14 @@ GType gtk_imhtml_get_type()
return imhtml_type;
}
-struct url_data {
- GObject *object;
- gchar *url;
- GtkTextTag *tag;
-};
-
-static void url_data_destroy(gpointer mydata)
+static void gtk_imhtml_link_destroy(GtkIMHtmlLink *link)
{
- struct url_data *data = mydata;
- g_object_unref(data->object);
- g_object_unref(data->tag);
- g_free(data->url);
- g_free(data);
-}
-
-static void url_open(GtkWidget *w, struct url_data *data)
-{
- if(!data) return;
- g_signal_emit(data->object, signals[URL_CLICKED], 0, data->url);
- g_object_set_data(G_OBJECT(data->tag), "visited", GINT_TO_POINTER(TRUE));
- gtk_imhtml_set_link_color(GTK_IMHTML(data->object), data->tag);
-}
-
-static void url_copy(GtkWidget *w, gchar *url) {
- GtkClipboard *clipboard;
-
- clipboard = gtk_widget_get_clipboard(w, GDK_SELECTION_PRIMARY);
- gtk_clipboard_set_text(clipboard, url, -1);
-
- clipboard = gtk_widget_get_clipboard(w, GDK_SELECTION_CLIPBOARD);
- gtk_clipboard_set_text(clipboard, url, -1);
+ if (link->imhtml)
+ g_object_unref(link->imhtml);
+ if (link->tag)
+ g_object_unref(link->tag);
+ g_free(link->url);
+ g_free(link);
}
/* The callback for an event on a link tag. */
@@ -1734,21 +1768,16 @@ static gboolean tag_event(GtkTextTag *tag, GObject *imhtml, GdkEvent *event, Gtk
if (gtk_text_buffer_get_selection_bounds(
gtk_text_iter_get_buffer(arg2), &start, &end))
return FALSE;
-
- /* A link was clicked--we emit the "url_clicked" signal
- * with the URL as the argument */
- g_object_ref(G_OBJECT(tag));
- g_signal_emit(imhtml, signals[URL_CLICKED], 0, g_object_get_data(G_OBJECT(tag), "link_url"));
- g_object_unref(G_OBJECT(tag));
- g_object_set_data(G_OBJECT(tag), "visited", GINT_TO_POINTER(TRUE));
- gtk_imhtml_set_link_color(GTK_IMHTML(imhtml), tag);
+ gtk_imhtml_activate_tag(GTK_IMHTML(imhtml), tag);
return FALSE;
} else if(event_button->button == 3) {
- GtkWidget *img, *item, *menu;
- struct url_data *tempdata = g_new(struct url_data, 1);
- tempdata->object = g_object_ref(imhtml);
- tempdata->url = g_strdup(g_object_get_data(G_OBJECT(tag), "link_url"));
- tempdata->tag = g_object_ref(tag);
+ GList *children;
+ GtkWidget *menu;
+ GtkIMHtmlProtocol *proto;
+ GtkIMHtmlLink *link = g_new(GtkIMHtmlLink, 1);
+ link->imhtml = g_object_ref(imhtml);
+ link->url = g_strdup(g_object_get_data(G_OBJECT(tag), "link_url"));
+ link->tag = g_object_ref(tag);
/* Don't want the tooltip around if user right-clicked on link */
if (GTK_IMHTML(imhtml)->tip_window) {
@@ -1764,43 +1793,23 @@ static gboolean tag_event(GtkTextTag *tag, GObject *imhtml, GdkEvent *event, Gtk
else
gdk_window_set_cursor(event_button->window, GTK_IMHTML(imhtml)->arrow_cursor);
menu = gtk_menu_new();
- g_object_set_data_full(G_OBJECT(menu), "x-imhtml-url-data", tempdata, url_data_destroy);
+ g_object_set_data_full(G_OBJECT(menu), "x-imhtml-url-data", link,
+ (GDestroyNotify)gtk_imhtml_link_destroy);
- /* buttons and such */
+ proto = imhtml_find_protocol(link->url, FALSE);
- if (!strncmp(tempdata->url, "mailto:", 7))
- {
- /* Copy Email Address */
- img = gtk_image_new_from_stock(GTK_STOCK_COPY,
- GTK_ICON_SIZE_MENU);
- item = gtk_image_menu_item_new_with_mnemonic(
- _("_Copy Email Address"));
- gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), img);
- g_signal_connect(G_OBJECT(item), "activate",
- G_CALLBACK(url_copy), tempdata->url + 7);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
+ if (proto && proto->context_menu) {
+ proto->context_menu(GTK_IMHTML(link->imhtml), link, menu);
}
- else
- {
- /* Open Link in Browser */
- img = gtk_image_new_from_stock(GTK_STOCK_JUMP_TO,
- GTK_ICON_SIZE_MENU);
- item = gtk_image_menu_item_new_with_mnemonic(
- _("_Open Link in Browser"));
- gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), img);
- g_signal_connect(G_OBJECT(item), "activate",
- G_CALLBACK(url_open), tempdata);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
- /* Copy Link Location */
- img = gtk_image_new_from_stock(GTK_STOCK_COPY,
- GTK_ICON_SIZE_MENU);
- item = gtk_image_menu_item_new_with_mnemonic(
- _("_Copy Link Location"));
- gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), img);
- g_signal_connect(G_OBJECT(item), "activate",
- G_CALLBACK(url_copy), tempdata->url);
+ children = gtk_container_get_children(GTK_CONTAINER(menu));
+ if (!children) {
+ GtkWidget *item = gtk_menu_item_new_with_label(_("No actions available"));
+ gtk_widget_show(item);
+ gtk_widget_set_sensitive(item, FALSE);
gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
+ } else {
+ g_list_free(children);
}
@@ -1884,10 +1893,7 @@ gtk_imhtml_link_drag_rcv_cb(GtkWidget *widget, GdkDragContext *dc, guint x, guin
links = g_strsplit((char *)sd->data, "\n", 0);
while((link = links[i]) != NULL){
- if(purple_str_has_prefix(link, "http://") ||
- purple_str_has_prefix(link, "https://") ||
- purple_str_has_prefix(link, "ftp://"))
- {
+ if (gtk_imhtml_is_protocol(link)) {
gchar *label;
if(links[i + 1])
@@ -1896,7 +1902,7 @@ gtk_imhtml_link_drag_rcv_cb(GtkWidget *widget, GdkDragContext *dc, guint x, guin
label = links[i];
gtk_imhtml_insert_link(imhtml, mark, link, label);
- } else if (link=='\0') {
+ } else if (*link == '\0') {
/* Ignore blank lines */
} else {
/* Special reasons, aka images being put in via other tag, etc. */
@@ -2067,7 +2073,7 @@ gtk_imhtml_disassociate_smiley(GtkIMHtmlSmiley *smiley)
{
if (smiley->imhtml) {
gtk_smiley_tree_remove(smiley->imhtml->default_smilies, smiley);
- g_hash_table_foreach(smiley->imhtml->smiley_data,
+ g_hash_table_foreach(smiley->imhtml->smiley_data,
gtk_imhtml_disassociate_smiley_foreach, smiley);
g_signal_handlers_disconnect_matched(smiley->imhtml, G_SIGNAL_MATCH_DATA,
0, 0, NULL, NULL, smiley);
@@ -2096,13 +2102,13 @@ gtk_imhtml_associate_smiley (GtkIMHtml *imhtml,
g_signal_handlers_disconnect_matched(smiley->imhtml, G_SIGNAL_MATCH_DATA,
0, 0, NULL, NULL, smiley);
}
-
+
smiley->imhtml = imhtml;
gtk_smiley_tree_insert (tree, smiley);
-
+
/* connect destroy signal for the imhtml */
- g_signal_connect(imhtml, "destroy", G_CALLBACK(gtk_imhtml_disconnect_smiley),
+ g_signal_connect(imhtml, "destroy", G_CALLBACK(gtk_imhtml_disconnect_smiley),
smiley);
}
@@ -2198,14 +2204,17 @@ gtk_smiley_tree_image (GtkIMHtml *imhtml,
return gtk_smiley_get_image(smiley);
}
-#define VALID_TAG(x) if (!g_ascii_strncasecmp (string, x ">", strlen (x ">"))) { \
- *tag = g_strndup (string, strlen (x)); \
- *len = strlen (x) + 1; \
+#define VALID_TAG(x) do { \
+ if (!g_ascii_strncasecmp (string, x ">", strlen (x ">"))) { \
+ if (tag) *tag = g_strndup (string, strlen (x)); \
+ if (len) *len = strlen (x) + 1; \
return TRUE; \
} \
- (*type)++
+ if (type) (*type)++; \
+ } while (0)
-#define VALID_OPT_TAG(x) if (!g_ascii_strncasecmp (string, x " ", strlen (x " "))) { \
+#define VALID_OPT_TAG(x) do { \
+ if (!g_ascii_strncasecmp (string, x " ", strlen (x " "))) { \
const gchar *c = string + strlen (x " "); \
gchar e = '"'; \
gboolean quote = FALSE; \
@@ -2222,12 +2231,13 @@ gtk_smiley_tree_image (GtkIMHtml *imhtml,
c++; \
} \
if (*c) { \
- *tag = g_strndup (string, c - string); \
- *len = c - string + 1; \
+ if (tag) *tag = g_strndup (string, c - string); \
+ if (len) *len = c - string + 1; \
return TRUE; \
} \
} \
- (*type)++
+ if (type) (*type)++; \
+ } while (0)
static gboolean
@@ -2237,8 +2247,8 @@ gtk_imhtml_is_tag (const gchar *string,
gint *type)
{
char *close;
- *type = 1;
-
+ if (type)
+ *type = 1;
if (!(close = strchr (string, '>')))
return FALSE;
@@ -2311,15 +2321,20 @@ gtk_imhtml_is_tag (const gchar *string,
if (!g_ascii_strncasecmp(string, "!--", strlen ("!--"))) {
gchar *e = strstr (string + strlen("!--"), "-->");
if (e) {
- *len = e - string + strlen ("-->");
- *tag = g_strndup (string + strlen ("!--"), *len - strlen ("!---->"));
+ if (len)
+ *len = e - string + strlen ("-->");
+ if (tag)
+ *tag = g_strndup (string + strlen ("!--"), *len - strlen ("!---->"));
return TRUE;
}
}
- *type = -1;
- *len = close - string + 1;
- *tag = g_strndup(string, *len - 1);
+ if (type)
+ *type = -1;
+ if (len)
+ *len = close - string + 1;
+ if (tag)
+ *tag = g_strndup(string, *len - 1);
return TRUE;
}
@@ -2382,26 +2397,12 @@ gtk_imhtml_get_html_opt (gchar *tag,
return g_string_free(ret, FALSE);
}
-static const char *accepted_protocols[] = {
- "http://",
- "https://",
- "ftp://"
-};
-
-static const int accepted_protocols_size = 3;
-
/* returns if the beginning of the text is a protocol. If it is the protocol, returns the length so
the caller knows how long the protocol string is. */
static int gtk_imhtml_is_protocol(const char *text)
{
- gint i;
-
- for(i=0; i<accepted_protocols_size; i++){
- if( g_ascii_strncasecmp(text, accepted_protocols[i], strlen(accepted_protocols[i])) == 0 ){
- return strlen(accepted_protocols[i]);
- }
- }
- return 0;
+ GtkIMHtmlProtocol *proto = imhtml_find_protocol(text, FALSE);
+ return proto ? proto->length : 0;
}
/*
@@ -2606,7 +2607,7 @@ parse_css_color(gchar *in_color)
count++;
}
-
+
g_free(in_color);
return g_strdup_printf("#%02X%02X%02X", rgbval[0], rgbval[1], rgbval[2]);
}
@@ -2655,7 +2656,7 @@ void gtk_imhtml_insert_html_at_iter(GtkIMHtml *imhtml,
c = text;
len = strlen(text);
ws = g_malloc(len + 1);
- ws[0] = 0;
+ ws[0] = '\0';
gtk_text_buffer_begin_user_action(imhtml->text_buffer);
while (pos < len) {
@@ -3307,8 +3308,7 @@ void gtk_imhtml_insert_html_at_iter(GtkIMHtml *imhtml,
ws[wpos] = '\n';
wpos++;
gtk_text_buffer_insert(imhtml->text_buffer, iter, ws, wpos);
- ws[0] = '\0';
- wpos = 0;
+ ws[0] = '\0'; wpos = 0;
/* NEW_BIT (NEW_TEXT_BIT); */
} else if (!br) { /* Don't insert a space immediately after an HTML break */
/* A newline is defined by HTML as whitespace, which means we have to replace it with a word boundary.
@@ -3319,19 +3319,44 @@ void gtk_imhtml_insert_html_at_iter(GtkIMHtml *imhtml,
ws[wpos] = ' ';
wpos++;
gtk_text_buffer_insert(imhtml->text_buffer, iter, ws, wpos);
- ws[0] = '\0';
- wpos = 0;
+ ws[0] = '\0'; wpos = 0;
}
c++;
pos++;
- } else if ((len_protocol = gtk_imhtml_is_protocol(c)) > 0){
+ } else if ((pos == 0 || wpos == 0 || isspace(*(c - 1))) &&
+ (len_protocol = gtk_imhtml_is_protocol(c)) > 0 &&
+ c[len_protocol] && !isspace(c[len_protocol]) &&
+ (c[len_protocol] != '<' || !gtk_imhtml_is_tag(c + 1, NULL, NULL, NULL))) {
br = FALSE;
- while(len_protocol--){
- /* Skip the next len_protocol characters, but make sure they're
- copied into the ws array.
- */
- ws [wpos++] = *c++;
- pos++;
+ if (wpos > 0) {
+ gtk_text_buffer_insert(imhtml->text_buffer, iter, ws, wpos);
+ ws[0] = '\0'; wpos = 0;
+ }
+ while (len_protocol--) {
+ /* Skip the next len_protocol characters, but
+ * make sure they're copied into the ws array.
+ */
+ ws [wpos++] = *c++;
+ pos++;
+ }
+ if (!imhtml->edit.link && (imhtml->format_functions & GTK_IMHTML_LINK)) {
+ while (*c && !isspace((int)*c) &&
+ (*c != '<' || !gtk_imhtml_is_tag(c + 1, NULL, NULL, NULL))) {
+ if (*c == '&' && (amp = purple_markup_unescape_entity(c, &tlen))) {
+ while (*amp)
+ ws[wpos++] = *amp++;
+ c += tlen;
+ pos += tlen;
+ } else {
+ ws [wpos++] = *c++;
+ pos++;
+ }
+ }
+ ws[wpos] = '\0';
+ gtk_imhtml_toggle_link(imhtml, ws);
+ gtk_text_buffer_insert(imhtml->text_buffer, iter, ws, wpos);
+ ws[0] = '\0'; wpos = 0;
+ gtk_imhtml_toggle_link(imhtml, NULL);
}
} else if (*c) {
br = FALSE;
@@ -3355,7 +3380,7 @@ void gtk_imhtml_insert_html_at_iter(GtkIMHtml *imhtml,
ws[wpos++] = 0xE2;
ws[wpos++] = 0x80;
ws[wpos++] = 0x8F;
-
+
if (!rtl_direction)
{
/* insert LRM character to set direction */
@@ -3368,8 +3393,7 @@ void gtk_imhtml_insert_html_at_iter(GtkIMHtml *imhtml,
ws[wpos] = '\0';
gtk_text_buffer_insert(imhtml->text_buffer, &line_iter, ws, wpos);
gtk_text_buffer_get_end_iter(gtk_text_iter_get_buffer(&line_iter), iter);
- ws[0] = '\0';
- wpos = 0;
+ ws[0] = '\0'; wpos = 0;
}
while (fonts) {
@@ -3622,95 +3646,108 @@ void gtk_imhtml_image_scale(GtkIMHtmlScalable *scale, int width, int height)
}
static void
-image_save_yes_cb(GtkIMHtmlImage *image, const char *filename)
+image_save_yes_cb(GtkIMHtmlImageSave *save, const char *filename)
{
- gchar *type = NULL;
GError *error = NULL;
-#if GTK_CHECK_VERSION(2,2,0)
- GSList *formats = gdk_pixbuf_get_formats();
-#else
- char *basename = g_path_get_basename(filename);
- char *ext = strrchr(basename, '.');
-#endif
- char *newfilename;
+ GtkIMHtmlImage *image = (GtkIMHtmlImage *)save->image;
gtk_widget_destroy(image->filesel);
image->filesel = NULL;
+ if (save->data && save->datasize) {
+#if GLIB_CHECK_VERSION(2,8,0)
+ g_file_set_contents(filename, save->data, save->datasize, &error);
+#else
+ purple_util_write_data_to_file_absolute(filename, save->data, save->datasize);
+#endif
+ } else {
+ gchar *type = NULL;
#if GTK_CHECK_VERSION(2,2,0)
- while (formats) {
- GdkPixbufFormat *format = formats->data;
- gchar **extensions = gdk_pixbuf_format_get_extensions(format);
- gpointer p = extensions;
+ GSList *formats = gdk_pixbuf_get_formats();
+#else
+ char *basename = g_path_get_basename(filename);
+ char *ext = strrchr(basename, '.');
+#endif
+ char *newfilename;
- while(gdk_pixbuf_format_is_writable(format) && extensions && extensions[0]){
- gchar *fmt_ext = extensions[0];
- const gchar* file_ext = filename + strlen(filename) - strlen(fmt_ext);
+#if GTK_CHECK_VERSION(2,2,0)
+ while (formats) {
+ GdkPixbufFormat *format = formats->data;
+ gchar **extensions = gdk_pixbuf_format_get_extensions(format);
+ gpointer p = extensions;
- if(!g_ascii_strcasecmp(fmt_ext, file_ext)){
- type = gdk_pixbuf_format_get_name(format);
- break;
- }
+ while(gdk_pixbuf_format_is_writable(format) && extensions && extensions[0]){
+ gchar *fmt_ext = extensions[0];
+ const gchar* file_ext = filename + strlen(filename) - strlen(fmt_ext);
- extensions++;
- }
+ if(!g_ascii_strcasecmp(fmt_ext, file_ext)){
+ type = gdk_pixbuf_format_get_name(format);
+ break;
+ }
- g_strfreev(p);
+ extensions++;
+ }
- if (type)
- break;
+ g_strfreev(p);
- formats = formats->next;
- }
+ if (type)
+ break;
+
+ formats = formats->next;
+ }
- g_slist_free(formats);
+ g_slist_free(formats);
#else
- /* this is really ugly code, but I think it will work */
- if (ext) {
- ext++;
- if (!g_ascii_strcasecmp(ext, "jpeg") || !g_ascii_strcasecmp(ext, "jpg"))
- type = g_strdup("jpeg");
- else if (!g_ascii_strcasecmp(ext, "png"))
- type = g_strdup("png");
- }
+ /* this is really ugly code, but I think it will work */
+ if (ext) {
+ ext++;
+ if (!g_ascii_strcasecmp(ext, "jpeg") || !g_ascii_strcasecmp(ext, "jpg"))
+ type = g_strdup("jpeg");
+ else if (!g_ascii_strcasecmp(ext, "png"))
+ type = g_strdup("png");
+ }
- g_free(basename);
+ g_free(basename);
#endif
- /* If I can't find a valid type, I will just tell the user about it and then assume
- it's a png */
- if (!type){
- char *basename, *tmp;
+ /* If I can't find a valid type, I will just tell the user about it and then assume
+ it's a png */
+ if (!type){
+ char *basename, *tmp;
+ char *dirname;
#if GTK_CHECK_VERSION(2,4,0)
- GtkWidget *dialog = gtk_message_dialog_new_with_markup(NULL, 0, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,
- _("<span size='larger' weight='bold'>Unrecognized file type</span>\n\nDefaulting to PNG."));
+ GtkWidget *dialog = gtk_message_dialog_new_with_markup(NULL, 0, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,
+ _("<span size='larger' weight='bold'>Unrecognized file type</span>\n\nDefaulting to PNG."));
#else
- GtkWidget *dialog = gtk_message_dialog_new(NULL, 0, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,
- _("Unrecognized file type\n\nDefaulting to PNG."));
+ GtkWidget *dialog = gtk_message_dialog_new(NULL, 0, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,
+ _("Unrecognized file type\n\nDefaulting to PNG."));
#endif
- g_signal_connect_swapped(dialog, "response", G_CALLBACK (gtk_widget_destroy), dialog);
- gtk_widget_show(dialog);
+ g_signal_connect_swapped(dialog, "response", G_CALLBACK (gtk_widget_destroy), dialog);
+ gtk_widget_show(dialog);
- type = g_strdup("png");
- basename = g_path_get_basename(filename);
- tmp = strrchr(basename, '.');
- if (tmp != NULL)
- tmp[0] = '\0';
- newfilename = g_strdup_printf("%s.png", basename);
- g_free(basename);
- } else {
- /*
- * We're able to save the file in it's original format, so we
- * can use the original file name.
- */
- newfilename = g_strdup(filename);
- }
+ type = g_strdup("png");
+ dirname = g_path_get_dirname(filename);
+ basename = g_path_get_basename(filename);
+ tmp = strrchr(basename, '.');
+ if (tmp != NULL)
+ tmp[0] = '\0';
+ newfilename = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s.png", dirname, basename);
+ g_free(dirname);
+ g_free(basename);
+ } else {
+ /*
+ * We're able to save the file in it's original format, so we
+ * can use the original file name.
+ */
+ newfilename = g_strdup(filename);
+ }
- gdk_pixbuf_save(image->pixbuf, newfilename, type, &error, NULL);
+ gdk_pixbuf_save(image->pixbuf, newfilename, type, &error, NULL);
- g_free(newfilename);
- g_free(type);
+ g_free(newfilename);
+ g_free(type);
+ }
if (error){
#if GTK_CHECK_VERSION(2,4,0)
@@ -3728,9 +3765,10 @@ image_save_yes_cb(GtkIMHtmlImage *image, const char *filename)
#if GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */
static void
-image_save_check_if_exists_cb(GtkWidget *widget, gint response, GtkIMHtmlImage *image)
+image_save_check_if_exists_cb(GtkWidget *widget, gint response, GtkIMHtmlImageSave *save)
{
gchar *filename;
+ GtkIMHtmlImage *image = (GtkIMHtmlImage *)save->image;
if (response != GTK_RESPONSE_ACCEPT) {
gtk_widget_destroy(widget);
@@ -3741,9 +3779,10 @@ image_save_check_if_exists_cb(GtkWidget *widget, gint response, GtkIMHtmlImage *
filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(widget));
#else /* FILECHOOSER */
static void
-image_save_check_if_exists_cb(GtkWidget *button, GtkIMHtmlImage *image)
+image_save_check_if_exists_cb(GtkWidget *button, GtkIMHtmlImageSave *save)
{
gchar *filename;
+ GtkIMHtmlImage *image = (GtkIMHtmlImage *)save->image;
filename = g_strdup(gtk_file_selection_get_filename(GTK_FILE_SELECTION(image->filesel)));
@@ -3776,7 +3815,7 @@ image_save_check_if_exists_cb(GtkWidget *button, GtkIMHtmlImage *image)
image_save_yes_cb(image, filename);
*/
- image_save_yes_cb(image, filename);
+ image_save_yes_cb(save, filename);
g_free(filename);
}
@@ -3791,8 +3830,10 @@ image_save_cancel_cb(GtkIMHtmlImage *image)
#endif /* FILECHOOSER */
static void
-gtk_imhtml_image_save(GtkWidget *w, GtkIMHtmlImage *image)
+gtk_imhtml_image_save(GtkWidget *w, GtkIMHtmlImageSave *save)
{
+ GtkIMHtmlImage *image = (GtkIMHtmlImage *)save->image;
+
if (image->filesel != NULL) {
gtk_window_present(GTK_WINDOW(image->filesel));
return;
@@ -3809,7 +3850,7 @@ gtk_imhtml_image_save(GtkWidget *w, GtkIMHtmlImage *image)
if (image->filename != NULL)
gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(image->filesel), image->filename);
g_signal_connect(G_OBJECT(GTK_FILE_CHOOSER(image->filesel)), "response",
- G_CALLBACK(image_save_check_if_exists_cb), image);
+ G_CALLBACK(image_save_check_if_exists_cb), save);
#else /* FILECHOOSER */
image->filesel = gtk_file_selection_new(_("Save Image"));
if (image->filename != NULL)
@@ -3819,19 +3860,22 @@ gtk_imhtml_image_save(GtkWidget *w, GtkIMHtmlImage *image)
g_signal_connect_swapped(G_OBJECT(GTK_FILE_SELECTION(image->filesel)->cancel_button),
"clicked", G_CALLBACK(image_save_cancel_cb), image);
g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(image->filesel)->ok_button), "clicked",
- G_CALLBACK(image_save_check_if_exists_cb), image);
+ G_CALLBACK(image_save_check_if_exists_cb), save);
#endif /* FILECHOOSER */
gtk_widget_show(image->filesel);
}
static void
-gtk_imhtml_custom_smiley_save(GtkWidget *w, GtkIMHtmlImage *image)
+gtk_imhtml_custom_smiley_save(GtkWidget *w, GtkIMHtmlImageSave *save)
{
+ GtkIMHtmlImage *image = (GtkIMHtmlImage *)save->image;
+
/* Create an add dialog */
PidginSmiley *editor = pidgin_smiley_edit(NULL, NULL);
pidgin_smiley_editor_set_shortcut(editor, image->filename);
pidgin_smiley_editor_set_image(editor, image->pixbuf);
+ pidgin_smiley_editor_set_data(editor, save->data, save->datasize);
}
/*
@@ -3841,33 +3885,32 @@ gtk_imhtml_custom_smiley_save(GtkWidget *w, GtkIMHtmlImage *image)
* embedded in the conversation. Someone should make the Purple core handle
* all of that.
*/
-static gboolean gtk_imhtml_image_clicked(GtkWidget *w, GdkEvent *event, GtkIMHtmlImage *image)
+static gboolean gtk_imhtml_image_clicked(GtkWidget *w, GdkEvent *event, GtkIMHtmlImageSave *save)
{
GdkEventButton *event_button = (GdkEventButton *) event;
+ GtkIMHtmlImage *image = (GtkIMHtmlImage *)save->image;
if (event->type == GDK_BUTTON_RELEASE) {
if(event_button->button == 3) {
GtkWidget *img, *item, *menu;
- gchar *text = g_strdup_printf(_("_Save Image..."));
menu = gtk_menu_new();
/* buttons and such */
img = gtk_image_new_from_stock(GTK_STOCK_SAVE, GTK_ICON_SIZE_MENU);
- item = gtk_image_menu_item_new_with_mnemonic(text);
+ item = gtk_image_menu_item_new_with_mnemonic(_("_Save Image..."));
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), img);
- g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(gtk_imhtml_image_save), image);
+ g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(gtk_imhtml_image_save), save);
gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
/* Add menu item for adding custom smiley to local smileys */
/* we only add the menu if the image is of "custom smiley size"
<= 96x96 pixels */
if (image->width <= 96 && image->height <= 96) {
- text = g_strdup_printf(_("_Add Custom Smiley..."));
img = gtk_image_new_from_stock(GTK_STOCK_ADD, GTK_ICON_SIZE_MENU);
- item = gtk_image_menu_item_new_with_mnemonic(text);
+ item = gtk_image_menu_item_new_with_mnemonic(_("_Add Custom Smiley..."));
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), img);
g_signal_connect(G_OBJECT(item), "activate",
- G_CALLBACK(gtk_imhtml_custom_smiley_save), image);
+ G_CALLBACK(gtk_imhtml_custom_smiley_save), save);
gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
}
@@ -3875,7 +3918,6 @@ static gboolean gtk_imhtml_image_clicked(GtkWidget *w, GdkEvent *event, GtkIMHtm
gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL,
event_button->button, event_button->time);
- g_free(text);
return TRUE;
}
}
@@ -3890,7 +3932,7 @@ static gboolean gtk_imhtml_image_clicked(GtkWidget *w, GdkEvent *event, GtkIMHtm
static gboolean gtk_imhtml_smiley_clicked(GtkWidget *w, GdkEvent *event, GtkIMHtmlSmiley *smiley)
{
GdkPixbufAnimation *anim = NULL;
- GtkIMHtmlScalable *image = NULL;
+ GtkIMHtmlImageSave *save = NULL;
gboolean ret;
if (event->type != GDK_BUTTON_RELEASE || ((GdkEventButton*)event)->button != 3)
@@ -3900,9 +3942,14 @@ static gboolean gtk_imhtml_smiley_clicked(GtkWidget *w, GdkEvent *event, GtkIMHt
if (!anim)
return FALSE;
- image = gtk_imhtml_animation_new(anim, smiley->smile, 0);
- ret = gtk_imhtml_image_clicked(w, event, (GtkIMHtmlImage*)image);
- g_object_set_data_full(G_OBJECT(w), "image-data", image, (GDestroyNotify)gtk_imhtml_animation_free);
+ save = g_new0(GtkIMHtmlImageSave, 1);
+ save->image = (GtkIMHtmlScalable *)gtk_imhtml_animation_new(anim, smiley->smile, 0);
+ save->data = smiley->data; /* Do not need to memdup here, since the smiley is not
+ destroyed before this GtkIMHtmlImageSave */
+ save->datasize = smiley->datasize;
+ ret = gtk_imhtml_image_clicked(w, event, save);
+ g_object_set_data_full(G_OBJECT(w), "image-data", save->image, (GDestroyNotify)gtk_imhtml_animation_free);
+ g_object_set_data_full(G_OBJECT(w), "image-save-data", save, (GDestroyNotify)g_free);
return ret;
}
@@ -3936,6 +3983,7 @@ void gtk_imhtml_image_add_to(GtkIMHtmlScalable *scale, GtkIMHtml *imhtml, GtkTex
GtkWidget *box = gtk_event_box_new();
char *tag;
GtkTextChildAnchor *anchor = gtk_text_buffer_create_child_anchor(imhtml->text_buffer, iter);
+ GtkIMHtmlImageSave *save;
gtk_container_add(GTK_CONTAINER(box), GTK_WIDGET(image->image));
@@ -3950,7 +3998,11 @@ void gtk_imhtml_image_add_to(GtkIMHtmlScalable *scale, GtkIMHtml *imhtml, GtkTex
g_object_set_data(G_OBJECT(anchor), "gtkimhtml_plaintext", "[Image]");
gtk_text_view_add_child_at_anchor(GTK_TEXT_VIEW(imhtml), box, anchor);
- g_signal_connect(G_OBJECT(box), "event", G_CALLBACK(gtk_imhtml_image_clicked), image);
+
+ save = g_new0(GtkIMHtmlImageSave, 1);
+ save->image = scale;
+ g_signal_connect(G_OBJECT(box), "event", G_CALLBACK(gtk_imhtml_image_clicked), save);
+ g_object_set_data_full(G_OBJECT(box), "image-save-data", save, (GDestroyNotify)g_free);
}
GtkIMHtmlScalable *gtk_imhtml_hr_new()
@@ -4401,15 +4453,19 @@ void gtk_imhtml_set_editable(GtkIMHtml *imhtml, gboolean editable)
* people can highlight stuff.
*/
/* gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(imhtml), editable); */
- imhtml->editable = editable;
- imhtml->format_functions = GTK_IMHTML_ALL;
-
- if (editable)
- {
+ if (editable && !imhtml->editable) {
g_signal_connect_after(G_OBJECT(GTK_IMHTML(imhtml)->text_buffer), "mark-set",
G_CALLBACK(mark_set_cb), imhtml);
g_signal_connect(G_OBJECT(imhtml), "backspace", G_CALLBACK(smart_backspace_cb), NULL);
+ } else if (!editable && imhtml->editable) {
+ g_signal_handlers_disconnect_by_func(G_OBJECT(GTK_IMHTML(imhtml)->text_buffer),
+ mark_set_cb, imhtml);
+ g_signal_handlers_disconnect_by_func(G_OBJECT(imhtml),
+ smart_backspace_cb, NULL);
}
+
+ imhtml->editable = editable;
+ imhtml->format_functions = GTK_IMHTML_ALL;
}
void gtk_imhtml_set_whole_buffer_formatting_only(GtkIMHtml *imhtml, gboolean wbfo)
@@ -4885,8 +4941,8 @@ void gtk_imhtml_insert_link(GtkIMHtml *imhtml, GtkTextMark *mark, const char *ur
{
GtkTextIter iter;
- if (gtk_text_buffer_get_selection_bounds(imhtml->text_buffer, NULL, NULL))
- gtk_text_buffer_delete_selection(imhtml->text_buffer, TRUE, TRUE);
+ /* Delete any currently selected text */
+ gtk_text_buffer_delete_selection(imhtml->text_buffer, TRUE, TRUE);
gtk_imhtml_toggle_link(imhtml, url);
gtk_text_buffer_get_iter_at_mark(imhtml->text_buffer, &iter, mark);
@@ -4899,8 +4955,8 @@ void gtk_imhtml_insert_smiley(GtkIMHtml *imhtml, const char *sml, char *smiley)
GtkTextMark *mark;
GtkTextIter iter;
- if (gtk_text_buffer_get_selection_bounds(imhtml->text_buffer, NULL, NULL))
- gtk_text_buffer_delete_selection(imhtml->text_buffer, TRUE, TRUE);
+ /* Delete any currently selected text */
+ gtk_text_buffer_delete_selection(imhtml->text_buffer, TRUE, TRUE);
mark = gtk_text_buffer_get_insert(imhtml->text_buffer);
@@ -5009,6 +5065,7 @@ void gtk_imhtml_insert_smiley_at_iter(GtkIMHtml *imhtml, const char *sml, char *
gtk_widget_show(img);
g_object_set_data_full(G_OBJECT(anchor), "gtkimhtml_plaintext", text, g_free);
g_object_set_data(G_OBJECT(anchor), "gtkimhtml_tiptext", text);
+ g_object_set_data_full(G_OBJECT(anchor), "gtkimhtml_htmltext", g_strdup(smiley), g_free);
gtk_text_view_add_child_at_anchor(GTK_TEXT_VIEW(imhtml), ebox, anchor);
}
} else {
@@ -5750,6 +5807,140 @@ void gtk_imhtml_smiley_destroy(GtkIMHtmlSmiley *smiley)
g_object_unref(smiley->icon);
if (smiley->loader)
g_object_unref(smiley->loader);
+ g_free(smiley->data);
g_free(smiley);
}
+gboolean gtk_imhtml_class_register_protocol(const char *name,
+ gboolean (*activate)(GtkIMHtml *imhtml, GtkIMHtmlLink *link),
+ gboolean (*context_menu)(GtkIMHtml *imhtml, GtkIMHtmlLink *link, GtkWidget *menu))
+{
+ GtkIMHtmlClass *klass;
+ GtkIMHtmlProtocol *proto;
+
+ g_return_val_if_fail(name, FALSE);
+
+ klass = g_type_class_ref(GTK_TYPE_IMHTML);
+ g_return_val_if_fail(klass, FALSE);
+
+ if ((proto = imhtml_find_protocol(name, TRUE))) {
+ if (activate) {
+ return FALSE;
+ }
+ g_free(proto->name);
+ g_free(proto);
+ klass->protocols = g_list_remove(klass->protocols, proto);
+ return TRUE;
+ } else if (!activate) {
+ return FALSE;
+ }
+
+ proto = g_new0(GtkIMHtmlProtocol, 1);
+ proto->name = g_strdup(name);
+ proto->length = strlen(name);
+ proto->activate = activate;
+ proto->context_menu = context_menu;
+ klass->protocols = g_list_prepend(klass->protocols, proto);
+
+ return TRUE;
+}
+
+static void
+gtk_imhtml_activate_tag(GtkIMHtml *imhtml, GtkTextTag *tag)
+{
+ /* A link was clicked--we emit the "url_clicked" signal
+ * with the URL as the argument */
+ g_object_ref(G_OBJECT(tag));
+ g_signal_emit(imhtml, signals[URL_CLICKED], 0, g_object_get_data(G_OBJECT(tag), "link_url"));
+ g_object_unref(G_OBJECT(tag));
+ g_object_set_data(G_OBJECT(tag), "visited", GINT_TO_POINTER(TRUE));
+ gtk_imhtml_set_link_color(GTK_IMHTML(imhtml), tag);
+}
+
+gboolean gtk_imhtml_link_activate(GtkIMHtmlLink *link)
+{
+ g_return_val_if_fail(link, FALSE);
+
+ if (link->tag) {
+ gtk_imhtml_activate_tag(link->imhtml, link->tag);
+ } else if (link->url) {
+ g_signal_emit(link->imhtml, signals[URL_CLICKED], 0, link->url);
+ } else
+ return FALSE;
+ return TRUE;
+}
+
+const char *gtk_imhtml_link_get_url(GtkIMHtmlLink *link)
+{
+ return link->url;
+}
+
+const GtkTextTag * gtk_imhtml_link_get_text_tag(GtkIMHtmlLink *link)
+{
+ return link->tag;
+}
+
+static gboolean return_add_newline_cb(GtkWidget *widget, gpointer data)
+{
+ GtkTextBuffer *buffer;
+ GtkTextMark *mark;
+ GtkTextIter iter;
+
+ buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(widget));
+
+ /* Delete any currently selected text */
+ gtk_text_buffer_delete_selection(buffer, TRUE, TRUE);
+
+ /* Insert a newline at the current cursor position */
+ mark = gtk_text_buffer_get_insert(buffer);
+ gtk_text_buffer_get_iter_at_mark(buffer, &iter, mark);
+ gtk_imhtml_insert_html_at_iter(GTK_IMHTML(widget), "\n", 0, &iter);
+
+ /*
+ * If we just newlined ourselves past the end of the visible area
+ * then scroll down so the cursor is in view.
+ */
+ gtk_text_view_scroll_to_mark(GTK_TEXT_VIEW(widget),
+ gtk_text_buffer_get_insert(buffer),
+ 0, FALSE, 0.0, 0.0);
+
+ return TRUE;
+}
+
+/*
+ * It's kind of a pain that we need this function and the above just
+ * to reinstate the default GtkTextView behavior. It might be better
+ * if GtkIMHtml didn't intercept the enter key and just required the
+ * application to deal with it--it's really not much more work than it
+ * is to connect to the current "message_send" signal.
+ */
+void gtk_imhtml_set_return_inserts_newline(GtkIMHtml *imhtml)
+{
+ g_signal_connect(G_OBJECT(imhtml), "message_send",
+ G_CALLBACK(return_add_newline_cb), NULL);
+}
+
+void gtk_imhtml_set_populate_primary_clipboard(GtkIMHtml *imhtml, gboolean populate)
+{
+ gulong signal_id;
+ signal_id = g_signal_handler_find(imhtml->text_buffer,
+ G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_UNBLOCKED, 0, 0, NULL,
+ mark_set_so_update_selection_cb, NULL);
+ if (populate) {
+ if (!signal_id) {
+ /* We didn't find an unblocked signal handler, which means there
+ is a blocked handler. Now unblock it.
+ This is necessary to avoid a mutex-lock when the debug message
+ saying 'no handler is blocked' is printed in the debug window.
+ -- sad
+ */
+ g_signal_handlers_unblock_matched(imhtml->text_buffer,
+ G_SIGNAL_MATCH_FUNC, 0, 0, NULL,
+ mark_set_so_update_selection_cb, NULL);
+ }
+ } else {
+ /* Block only if we found an unblocked handler */
+ if (signal_id)
+ g_signal_handler_block(imhtml->text_buffer, signal_id);
+ }
+}
diff --git a/pidgin/gtkimhtml.h b/pidgin/gtkimhtml.h
index ef18d99445..31dee5bb42 100644
--- a/pidgin/gtkimhtml.h
+++ b/pidgin/gtkimhtml.h
@@ -26,9 +26,7 @@
#define _PIDGINIMHTML_H_
#include <gdk/gdk.h>
-#include <gtk/gtktextview.h>
-#include <gtk/gtktooltips.h>
-#include <gtk/gtkimage.h>
+#include <gtk/gtk.h>
#include "gtksourceundomanager.h"
#include "connection.h"
@@ -42,13 +40,13 @@ extern "C" {
**************************************************************************/
/*@{*/
-#define GTK_TYPE_IMHTML (gtk_imhtml_get_type ())
-#define GTK_IMHTML(obj) (GTK_CHECK_CAST ((obj), GTK_TYPE_IMHTML, GtkIMHtml))
-#define GTK_IMHTML_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_IMHTML, GtkIMHtmlClass))
-#define GTK_IS_IMHTML(obj) (GTK_CHECK_TYPE ((obj), GTK_TYPE_IMHTML))
-#define GTK_IS_IMHTML_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_IMHTML))
+#define GTK_TYPE_IMHTML (gtk_imhtml_get_type())
+#define GTK_IMHTML(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GTK_TYPE_IMHTML, GtkIMHtml))
+#define GTK_IMHTML_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GTK_TYPE_IMHTML, GtkIMHtmlClass))
+#define GTK_IS_IMHTML(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GTK_TYPE_IMHTML))
+#define GTK_IS_IMHTML_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GTK_TYPE_IMHTML))
#define GTK_IMHTML_SCALABLE(obj) ((GtkIMHtmlScalable *)obj)
-#define GTK_IMHTML_ANIMATION(obj) ((GtkIMHtmlAnimation *)obj)
+#define GTK_IMHTML_ANIMATION(obj) ((GtkIMHtmlAnimation *)obj)
typedef struct _GtkIMHtml GtkIMHtml;
typedef struct _GtkIMHtmlClass GtkIMHtmlClass;
@@ -61,6 +59,11 @@ typedef struct _GtkIMHtmlAnimation GtkIMHtmlAnimation;
typedef struct _GtkIMHtmlHr GtkIMHtmlHr;
typedef struct _GtkIMHtmlFuncs GtkIMHtmlFuncs;
+/**
+ * @since 2.6.0
+ */
+typedef struct _GtkIMHtmlLink GtkIMHtmlLink;
+
typedef enum {
GTK_IMHTML_BOLD = 1 << 0,
GTK_IMHTML_ITALIC = 1 << 1,
@@ -156,6 +159,7 @@ struct _GtkIMHtmlClass {
gboolean (*message_send)(GtkIMHtml *);
void (*undo)(GtkIMHtml *);
void (*redo)(GtkIMHtml *);
+ GList *protocols; /* List of GtkIMHtmlProtocol's */
};
struct _GtkIMHtmlFontDetail {
@@ -184,6 +188,8 @@ struct _GtkIMHtmlSmiley {
GSList *anchors;
GtkIMHtmlSmileyFlags flags;
GtkIMHtml *imhtml;
+ gpointer data; /** @Since 2.6.0 */
+ gsize datasize; /** @Since 2.6.0 */
};
struct _GtkIMHtmlScalable {
@@ -885,6 +891,84 @@ void gtk_imhtml_smiley_reload(GtkIMHtmlSmiley *smiley);
* @since 2.5.0
*/
void gtk_imhtml_smiley_destroy(GtkIMHtmlSmiley *smiley);
+
+/**
+ * Register a protocol with the GtkIMHtml widget. Registering a protocol would
+ * allow certain text to be clickable.
+ *
+ * @param name The name of the protocol (e.g. http://)
+ * @param activate The callback to trigger when the protocol text is clicked.
+ * Removes any current protocol definition if @c NULL. The
+ * callback should return @c TRUE if the link was activated
+ * properly, @c FALSE otherwise.
+ * @param context_menu The callback to trigger when the context menu is popped
+ * up on the protocol text. The callback should return
+ * @c TRUE if the request for context menu was processed
+ * successfully, @c FALSE otherwise.
+ *
+ * @return @c TRUE if the protocol was successfully registered (or unregistered, when #activate is @c NULL)
+ *
+ * @since 2.6.0
+ */
+gboolean gtk_imhtml_class_register_protocol(const char *name,
+ gboolean (*activate)(GtkIMHtml *imhtml, GtkIMHtmlLink *link),
+ gboolean (*context_menu)(GtkIMHtml *imhtml, GtkIMHtmlLink *link, GtkWidget *menu));
+
+/**
+ * Get the URL associated with a link. This should be used by the IMHtml protocol-callbacks.
+ *
+ * @param link The GtkIMHtmlLink object sent to the callback functions
+ *
+ * @return The URL
+ *
+ * @since 2.6.0
+ */
+const char *gtk_imhtml_link_get_url(GtkIMHtmlLink *link);
+
+/**
+ * Get the GtkTextTag object (if any) associated with a particular link.
+ *
+ * @param link The GtkIMHtmlLink object sent to the callback functions
+ *
+ * @return The GtkTextTag object, or @c NULL
+ *
+ * @since 2.6.0
+ */
+const GtkTextTag *gtk_imhtml_link_get_text_tag(GtkIMHtmlLink *link);
+
+/**
+ * Activates a GtkIMHtmlLink object. This triggers the 'url-clicked' signal, marks the
+ * link as visited (when possible).
+ *
+ * @param link The GtkIMHtmlLink object sent to the callback functions
+ *
+ * @return @c TRUE if 'url-clicked' signal was emitted, @c FALSE otherwise.
+ *
+ * @since 2.6.0
+ */
+gboolean gtk_imhtml_link_activate(GtkIMHtmlLink *link);
+
+/**
+ * By default this widget intercepts presses of the "return" key and
+ * emits the "message_send" signal instead. If you don't want this
+ * behavior, and you want the standard GtkTextView behavior of
+ * inserting a newline into the buffer, then call this function.
+ *
+ * @param imhtml The GtkIMHtml where you want the "return" key to add
+ * newline and not emit the "message_send" signal.
+ */
+void gtk_imhtml_set_return_inserts_newline(GtkIMHtml *imhtml);
+
+/**
+ * By default this widget populates the PRIMARY clipboard with any selected
+ * text (as you would expect). For scenarios (e.g. select-on-focus) where this
+ * would be problematic, this function can disable the PRIMARY population.
+ *
+ * @param imhtml The GtkIMHtml to enable/disable populating PRIMARY
+ * @param populate enable/disable PRIMARY population
+ */
+void gtk_imhtml_set_populate_primary_clipboard(GtkIMHtml *imhtml, gboolean populate);
+
/*@}*/
#ifdef __cplusplus
diff --git a/pidgin/gtkimhtmltoolbar.c b/pidgin/gtkimhtmltoolbar.c
index a09208b490..fcc0ac77c0 100644
--- a/pidgin/gtkimhtmltoolbar.c
+++ b/pidgin/gtkimhtmltoolbar.c
@@ -680,7 +680,7 @@ sort_smileys(struct smiley_button_list *ls, GtkIMHtmlToolbar *toolbar,
is custom smiley-enabled */
if (supports_custom && psmiley && !(smiley->flags & GTK_IMHTML_SMILEY_CUSTOM)) {
gchar tip[128];
- g_snprintf(tip, sizeof(tip),
+ g_snprintf(tip, sizeof(tip),
_("This smiley is disabled because a custom smiley exists for this shortcut:\n %s"),
face);
gtk_tooltips_set_tip(toolbar->tooltips, button, tip, NULL);
@@ -808,7 +808,7 @@ insert_smiley_cb(GtkWidget *smiley, GtkIMHtmlToolbar *toolbar)
unique_smileys = g_slist_prepend(unique_smileys, smiley);
}
}
-
+
/* we need to reverse the list to get the smileys in the correct order */
unique_smileys = g_slist_reverse(unique_smileys);
@@ -1198,7 +1198,7 @@ static void gtk_imhtmltoolbar_class_init (GtkIMHtmlToolbarClass *class)
GObjectClass *gobject_class;
object_class = (GtkObjectClass*) class;
gobject_class = (GObjectClass*) class;
- parent_class = gtk_type_class(GTK_TYPE_HBOX);
+ parent_class = g_type_class_ref(GTK_TYPE_HBOX);
gobject_class->finalize = gtk_imhtmltoolbar_finalize;
purple_prefs_add_none(PIDGIN_PREFS_ROOT "/conversations/toolbar");
@@ -1413,13 +1413,13 @@ static void gtk_imhtmltoolbar_init (GtkIMHtmlToolbar *toolbar)
menuitem = gtk_menu_item_new_with_mnemonic(_("_Horizontal rule"));
g_signal_connect(G_OBJECT(menuitem), "activate" , G_CALLBACK(insert_hr_cb), toolbar);
gtk_menu_shell_append(GTK_MENU_SHELL(insert_menu), menuitem);
- toolbar->insert_hr = menuitem;
+ toolbar->insert_hr = menuitem;
g_signal_connect_swapped(G_OBJECT(insert_button), "button-press-event", G_CALLBACK(gtk_widget_activate), insert_button);
g_signal_connect(G_OBJECT(insert_button), "activate", G_CALLBACK(pidgin_menu_clicked), insert_menu);
g_signal_connect(G_OBJECT(insert_menu), "deactivate", G_CALLBACK(pidgin_menu_deactivate), insert_button);
toolbar->sml = NULL;
-
+
/* Sep */
sep = gtk_vseparator_new();
gtk_box_pack_start(GTK_BOX(box), sep, FALSE, FALSE, 0);
diff --git a/pidgin/gtkimhtmltoolbar.h b/pidgin/gtkimhtmltoolbar.h
index f7de106c49..ad3285eeca 100644
--- a/pidgin/gtkimhtmltoolbar.h
+++ b/pidgin/gtkimhtmltoolbar.h
@@ -23,7 +23,7 @@
#ifndef _PIDGINIMHTMLTOOLBAR_H_
#define _PIDGINIMHTMLTOOLBAR_H_
-#include <gtk/gtkvbox.h>
+#include <gtk/gtk.h>
#include "gtkimhtml.h"
#ifdef __cplusplus
@@ -32,11 +32,11 @@ extern "C" {
#define DEFAULT_FONT_FACE "Helvetica 12"
-#define GTK_TYPE_IMHTMLTOOLBAR (gtk_imhtmltoolbar_get_type ())
-#define GTK_IMHTMLTOOLBAR(obj) (GTK_CHECK_CAST ((obj), GTK_TYPE_IMHTMLTOOLBAR, GtkIMHtmlToolbar))
-#define GTK_IMHTMLTOOLBAR_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_IMHTMLTOOLBAR, GtkIMHtmlToolbarClass))
-#define GTK_IS_IMHTMLTOOLBAR(obj) (GTK_CHECK_TYPE ((obj), GTK_TYPE_IMHTMLTOOLBAR))
-#define GTK_IS_IMHTMLTOOLBAR_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_IMHTMLTOOLBAR))
+#define GTK_TYPE_IMHTMLTOOLBAR (gtk_imhtmltoolbar_get_type())
+#define GTK_IMHTMLTOOLBAR(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GTK_TYPE_IMHTMLTOOLBAR, GtkIMHtmlToolbar))
+#define GTK_IMHTMLTOOLBAR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GTK_TYPE_IMHTMLTOOLBAR, GtkIMHtmlToolbarClass))
+#define GTK_IS_IMHTMLTOOLBAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GTK_TYPE_IMHTMLTOOLBAR))
+#define GTK_IS_IMHTMLTOOLBAR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GTK_TYPE_IMHTMLTOOLBAR))
typedef struct _GtkIMHtmlToolbar GtkIMHtmlToolbar;
typedef struct _GtkIMHtmlToolbarClass GtkIMHtmlToolbarClass;
@@ -76,6 +76,7 @@ struct _GtkIMHtmlToolbar {
char *sml;
GtkWidget *strikethrough;
GtkWidget *insert_hr;
+ GtkWidget *call;
};
struct _GtkIMHtmlToolbarClass {
diff --git a/pidgin/gtklog.c b/pidgin/gtklog.c
index bcc1b8cd66..aed4f054e0 100644
--- a/pidgin/gtklog.c
+++ b/pidgin/gtklog.c
@@ -45,7 +45,7 @@ static PidginLogViewer *syslog_viewer = NULL;
struct log_viewer_hash_t {
PurpleLogType type;
- char *screenname;
+ char *buddyname;
PurpleAccount *account;
PurpleContact *contact;
};
@@ -57,7 +57,7 @@ static guint log_viewer_hash(gconstpointer data)
if (viewer->contact != NULL)
return g_direct_hash(viewer->contact);
- return g_str_hash(viewer->screenname) +
+ return g_str_hash(viewer->buddyname) +
g_str_hash(purple_account_get_username(viewer->account));
}
@@ -80,9 +80,9 @@ static gboolean log_viewer_equal(gconstpointer y, gconstpointer z)
return FALSE;
}
- normal = g_strdup(purple_normalize(a->account, a->screenname));
+ normal = g_strdup(purple_normalize(a->account, a->buddyname));
ret = (a->account == b->account) &&
- !strcmp(normal, purple_normalize(b->account, b->screenname));
+ !strcmp(normal, purple_normalize(b->account, b->buddyname));
g_free(normal);
return ret;
@@ -209,7 +209,7 @@ static void destroy_cb(GtkWidget *w, gint resp, struct log_viewer_hash_t *ht) {
lv = g_hash_table_lookup(log_viewers, ht);
g_hash_table_remove(log_viewers, ht);
- g_free(ht->screenname);
+ g_free(ht->buddyname);
g_free(ht);
} else
syslog_viewer = NULL;
@@ -556,7 +556,7 @@ static PidginLogViewer *display_log_viewer(struct log_viewer_hash_t *ht, GList *
if (!purple_prefs_get_bool("/purple/logging/log_chats"))
log_preferences = _("Chats will only be logged if the \"Log all chats\" preference is enabled.");
}
- g_free(ht->screenname);
+ g_free(ht->buddyname);
g_free(ht);
}
@@ -681,27 +681,27 @@ static PidginLogViewer *display_log_viewer(struct log_viewer_hash_t *ht, GList *
return lv;
}
-void pidgin_log_show(PurpleLogType type, const char *screenname, PurpleAccount *account) {
+void pidgin_log_show(PurpleLogType type, const char *buddyname, PurpleAccount *account) {
struct log_viewer_hash_t *ht;
PidginLogViewer *lv = NULL;
- const char *name = screenname;
+ const char *name = buddyname;
char *title;
GdkPixbuf *prpl_icon;
g_return_if_fail(account != NULL);
- g_return_if_fail(screenname != NULL);
+ g_return_if_fail(buddyname != NULL);
ht = g_new0(struct log_viewer_hash_t, 1);
ht->type = type;
- ht->screenname = g_strdup(screenname);
+ ht->buddyname = g_strdup(buddyname);
ht->account = account;
if (log_viewers == NULL) {
log_viewers = g_hash_table_new(log_viewer_hash, log_viewer_equal);
} else if ((lv = g_hash_table_lookup(log_viewers, ht))) {
gtk_window_present(GTK_WINDOW(lv->window));
- g_free(ht->screenname);
+ g_free(ht->buddyname);
g_free(ht);
return;
}
@@ -709,7 +709,7 @@ void pidgin_log_show(PurpleLogType type, const char *screenname, PurpleAccount *
if (type == PURPLE_LOG_CHAT) {
PurpleChat *chat;
- chat = purple_blist_find_chat(account, screenname);
+ chat = purple_blist_find_chat(account, buddyname);
if (chat != NULL)
name = purple_chat_get_name(chat);
@@ -717,7 +717,7 @@ void pidgin_log_show(PurpleLogType type, const char *screenname, PurpleAccount *
} else {
PurpleBuddy *buddy;
- buddy = purple_find_buddy(account, screenname);
+ buddy = purple_find_buddy(account, buddyname);
if (buddy != NULL)
name = purple_buddy_get_contact_alias(buddy);
@@ -726,9 +726,9 @@ void pidgin_log_show(PurpleLogType type, const char *screenname, PurpleAccount *
prpl_icon = pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_MEDIUM);
- display_log_viewer(ht, purple_log_get_logs(type, screenname, account),
+ display_log_viewer(ht, purple_log_get_logs(type, buddyname, account),
title, gtk_image_new_from_pixbuf(prpl_icon),
- purple_log_get_total_size(type, screenname, account));
+ purple_log_get_total_size(type, buddyname, account));
if (prpl_icon)
g_object_unref(prpl_icon);
@@ -760,13 +760,19 @@ void pidgin_log_show_contact(PurpleContact *contact) {
return;
}
- for (child = contact->node.child ; child ; child = child->next) {
+ for (child = purple_blist_node_get_first_child((PurpleBlistNode*)contact) ;
+ child != NULL ;
+ child = purple_blist_node_get_sibling_next(child)) {
+ const char *buddy_name;
+ PurpleAccount *account;
+
if (!PURPLE_BLIST_NODE_IS_BUDDY(child))
continue;
- logs = g_list_concat(purple_log_get_logs(PURPLE_LOG_IM, ((PurpleBuddy *)child)->name,
- ((PurpleBuddy *)child)->account), logs);
- total_log_size += purple_log_get_total_size(PURPLE_LOG_IM, ((PurpleBuddy *)child)->name, ((PurpleBuddy *)child)->account);
+ buddy_name = purple_buddy_get_name((PurpleBuddy *)child);
+ account = purple_buddy_get_account((PurpleBuddy *)child);
+ logs = g_list_concat(purple_log_get_logs(PURPLE_LOG_IM, buddy_name, account), logs);
+ total_log_size += purple_log_get_total_size(PURPLE_LOG_IM, buddy_name, account);
}
logs = g_list_sort(logs, purple_log_compare);
diff --git a/pidgin/gtklog.h b/pidgin/gtklog.h
index adc6c4320c..77917a8a15 100644
--- a/pidgin/gtklog.h
+++ b/pidgin/gtklog.h
@@ -9,7 +9,7 @@
* Pidgin is the legal property of its developers, whose names are too numerous
* to list here. Please refer to the COPYRIGHT file distributed with this
* source distribution.
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -53,7 +53,7 @@ struct _PidginLogViewer {
-void pidgin_log_show(PurpleLogType type, const char *screenname, PurpleAccount *account);
+void pidgin_log_show(PurpleLogType type, const char *buddyname, PurpleAccount *account);
void pidgin_log_show_contact(PurpleContact *contact);
void pidgin_syslog_show(void);
diff --git a/pidgin/gtkmain.c b/pidgin/gtkmain.c
index b82f271d6e..caf621e594 100644
--- a/pidgin/gtkmain.c
+++ b/pidgin/gtkmain.c
@@ -53,6 +53,7 @@
#include "gtkft.h"
#include "gtkidle.h"
#include "gtklog.h"
+#include "gtkmedia.h"
#include "gtknotify.h"
#include "gtkplugin.h"
#include "gtkpounce.h"
@@ -310,6 +311,8 @@ pidgin_ui_init(void)
pidgin_log_init();
pidgin_docklet_init();
pidgin_smileys_init();
+ pidgin_utils_init();
+ pidgin_medias_init();
}
static GHashTable *ui_info = NULL;
@@ -323,6 +326,7 @@ pidgin_quit(void)
#endif
/* Uninit */
+ pidgin_utils_uninit();
pidgin_smileys_uninit();
pidgin_conversations_uninit();
pidgin_status_uninit();
@@ -349,6 +353,7 @@ static GHashTable *pidgin_ui_get_info(void)
g_hash_table_insert(ui_info, "version", VERSION);
g_hash_table_insert(ui_info, "website", "http://pidgin.im");
g_hash_table_insert(ui_info, "dev_website", "http://developer.pidgin.im");
+ g_hash_table_insert(ui_info, "client_type", "pc");
}
return ui_info;
@@ -385,6 +390,7 @@ show_usage(const char *name, gboolean terse)
"Usage: %s [OPTION]...\n\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+ " -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -398,6 +404,7 @@ show_usage(const char *name, gboolean terse)
"Usage: %s [OPTION]...\n\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+ " -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -457,10 +464,10 @@ int pidgin_main(HINSTANCE hint, int argc, char *argv[])
int main(int argc, char *argv[])
#endif
{
+ gboolean opt_force_online = FALSE;
gboolean opt_help = FALSE;
gboolean opt_login = FALSE;
gboolean opt_nologin = FALSE;
- gboolean opt_nocrash = FALSE;
gboolean opt_version = FALSE;
gboolean opt_si = TRUE; /* Check for single instance? */
char *opt_config_dir_arg = NULL;
@@ -485,17 +492,17 @@ int main(int argc, char *argv[])
GList *active_accounts;
struct option long_options[] = {
- {"config", required_argument, NULL, 'c'},
- {"debug", no_argument, NULL, 'd'},
- {"help", no_argument, NULL, 'h'},
- {"login", optional_argument, NULL, 'l'},
- {"multiple", no_argument, NULL, 'm'},
- {"nologin", no_argument, NULL, 'n'},
- {"nocrash", no_argument, NULL, 'x'},
- {"session", required_argument, NULL, 's'},
- {"version", no_argument, NULL, 'v'},
- {"display", required_argument, NULL, 'D'},
- {"sync", no_argument, NULL, 'S'},
+ {"config", required_argument, NULL, 'c'},
+ {"debug", no_argument, NULL, 'd'},
+ {"force-online", no_argument, NULL, 'd'},
+ {"help", no_argument, NULL, 'h'},
+ {"login", optional_argument, NULL, 'l'},
+ {"multiple", no_argument, NULL, 'm'},
+ {"nologin", no_argument, NULL, 'n'},
+ {"session", required_argument, NULL, 's'},
+ {"version", no_argument, NULL, 'v'},
+ {"display", required_argument, NULL, 'D'},
+ {"sync", no_argument, NULL, 'S'},
{0, 0, 0, 0}
};
@@ -602,9 +609,9 @@ int main(int argc, char *argv[])
opterr = 1;
while ((opt = getopt_long(argc, argv,
#ifndef _WIN32
- "c:dhmnl::s:v",
+ "c:dfhmnl::s:v",
#else
- "c:dhmnl::v",
+ "c:dfhmnl::v",
#endif
long_options, NULL)) != -1) {
switch (opt) {
@@ -615,6 +622,9 @@ int main(int argc, char *argv[])
case 'd': /* debug */
debug_enabled = TRUE;
break;
+ case 'f': /* force-online */
+ opt_force_online = TRUE;
+ break;
case 'h': /* help */
opt_help = TRUE;
break;
@@ -637,9 +647,6 @@ int main(int argc, char *argv[])
case 'm': /* do not ensure single instance. */
opt_si = FALSE;
break;
- case 'x': /* --nocrash */
- opt_nocrash = TRUE;
- break;
case 'D': /* --display */
case 'S': /* --sync */
/* handled by gtk_init_check below */
@@ -817,6 +824,11 @@ int main(int argc, char *argv[])
opt_config_dir_arg = NULL;
}
+ /* This needs to be before purple_blist_show() so the
+ * statusbox gets the forced online status. */
+ if (opt_force_online)
+ purple_network_force_online();
+
/*
* We want to show the blist early in the init process so the
* user feels warm and fuzzy (not cold and prickley).
diff --git a/pidgin/gtkmedia.c b/pidgin/gtkmedia.c
new file mode 100644
index 0000000000..988e145e7b
--- /dev/null
+++ b/pidgin/gtkmedia.c
@@ -0,0 +1,1143 @@
+/**
+ * @file media.c Account API
+ * @ingroup core
+ *
+ * Pidgin
+ *
+ * Pidgin is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include <string.h>
+#include "debug.h"
+#include "internal.h"
+#include "connection.h"
+#include "media.h"
+#include "mediamanager.h"
+#include "pidgin.h"
+#include "request.h"
+
+#include "gtkmedia.h"
+#include "gtkutils.h"
+
+#ifdef USE_VV
+#include "media-gst.h"
+
+#include <gst/interfaces/xoverlay.h>
+
+#define PIDGIN_TYPE_MEDIA (pidgin_media_get_type())
+#define PIDGIN_MEDIA(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PIDGIN_TYPE_MEDIA, PidginMedia))
+#define PIDGIN_MEDIA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), PIDGIN_TYPE_MEDIA, PidginMediaClass))
+#define PIDGIN_IS_MEDIA(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), PIDGIN_TYPE_MEDIA))
+#define PIDGIN_IS_MEDIA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), PIDGIN_TYPE_MEDIA))
+#define PIDGIN_MEDIA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), PIDGIN_TYPE_MEDIA, PidginMediaClass))
+
+typedef struct _PidginMedia PidginMedia;
+typedef struct _PidginMediaClass PidginMediaClass;
+typedef struct _PidginMediaPrivate PidginMediaPrivate;
+
+typedef enum
+{
+ /* Waiting for response */
+ PIDGIN_MEDIA_WAITING = 1,
+ /* Got request */
+ PIDGIN_MEDIA_REQUESTED,
+ /* Accepted call */
+ PIDGIN_MEDIA_ACCEPTED,
+ /* Rejected call */
+ PIDGIN_MEDIA_REJECTED,
+} PidginMediaState;
+
+struct _PidginMediaClass
+{
+ GtkWindowClass parent_class;
+};
+
+struct _PidginMedia
+{
+ GtkWindow parent;
+ PidginMediaPrivate *priv;
+};
+
+struct _PidginMediaPrivate
+{
+ PurpleMedia *media;
+ gchar *screenname;
+ GstElement *send_level;
+ GstElement *recv_level;
+
+ GtkItemFactory *item_factory;
+ GtkWidget *menubar;
+ GtkWidget *statusbar;
+
+ GtkWidget *mute;
+
+ GtkWidget *send_progress;
+ GtkWidget *recv_progress;
+
+ PidginMediaState state;
+
+ GtkWidget *display;
+ GtkWidget *send_widget;
+ GtkWidget *recv_widget;
+ GtkWidget *local_video;
+ GtkWidget *remote_video;
+
+ guint timeout_id;
+ PurpleMediaSessionType request_type;
+};
+
+#define PIDGIN_MEDIA_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), PIDGIN_TYPE_MEDIA, PidginMediaPrivate))
+
+static void pidgin_media_class_init (PidginMediaClass *klass);
+static void pidgin_media_init (PidginMedia *media);
+static void pidgin_media_dispose (GObject *object);
+static void pidgin_media_finalize (GObject *object);
+static void pidgin_media_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
+static void pidgin_media_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
+static void pidgin_media_set_state(PidginMedia *gtkmedia, PidginMediaState state);
+
+static GtkWindowClass *parent_class = NULL;
+
+
+#if 0
+enum {
+ LAST_SIGNAL
+};
+static guint pidgin_media_signals[LAST_SIGNAL] = {0};
+#endif
+
+enum {
+ PROP_0,
+ PROP_MEDIA,
+ PROP_SCREENNAME,
+ PROP_SEND_LEVEL,
+ PROP_RECV_LEVEL
+};
+
+static GType
+pidgin_media_get_type(void)
+{
+ static GType type = 0;
+
+ if (type == 0) {
+ static const GTypeInfo info = {
+ sizeof(PidginMediaClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) pidgin_media_class_init,
+ NULL,
+ NULL,
+ sizeof(PidginMedia),
+ 0,
+ (GInstanceInitFunc) pidgin_media_init,
+ NULL
+ };
+ type = g_type_register_static(GTK_TYPE_WINDOW, "PidginMedia", &info, 0);
+ }
+ return type;
+}
+
+
+static void
+pidgin_media_class_init (PidginMediaClass *klass)
+{
+ GObjectClass *gobject_class = (GObjectClass*)klass;
+/* GtkContainerClass *container_class = (GtkContainerClass*)klass; */
+ parent_class = g_type_class_peek_parent(klass);
+
+ gobject_class->dispose = pidgin_media_dispose;
+ gobject_class->finalize = pidgin_media_finalize;
+ gobject_class->set_property = pidgin_media_set_property;
+ gobject_class->get_property = pidgin_media_get_property;
+
+ g_object_class_install_property(gobject_class, PROP_MEDIA,
+ g_param_spec_object("media",
+ "PurpleMedia",
+ "The PurpleMedia associated with this media.",
+ PURPLE_TYPE_MEDIA,
+ G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
+ g_object_class_install_property(gobject_class, PROP_SCREENNAME,
+ g_param_spec_string("screenname",
+ "Screenname",
+ "The screenname of the user this session is with.",
+ NULL,
+ G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
+ g_object_class_install_property(gobject_class, PROP_SEND_LEVEL,
+ g_param_spec_object("send-level",
+ "Send level",
+ "The GstElement of this media's send 'level'",
+ GST_TYPE_ELEMENT,
+ G_PARAM_READWRITE));
+ g_object_class_install_property(gobject_class, PROP_RECV_LEVEL,
+ g_param_spec_object("recv-level",
+ "Receive level",
+ "The GstElement of this media's recv 'level'",
+ GST_TYPE_ELEMENT,
+ G_PARAM_READWRITE));
+
+ g_type_class_add_private(klass, sizeof(PidginMediaPrivate));
+}
+
+static void
+pidgin_media_mute_toggled(GtkToggleButton *toggle, PidginMedia *media)
+{
+ purple_media_stream_info(media->priv->media,
+ gtk_toggle_button_get_active(toggle) ?
+ PURPLE_MEDIA_INFO_MUTE : PURPLE_MEDIA_INFO_UNMUTE,
+ NULL, NULL, TRUE);
+}
+
+static gboolean
+pidgin_media_delete_event_cb(GtkWidget *widget,
+ GdkEvent *event, PidginMedia *media)
+{
+ if (media->priv->media)
+ purple_media_stream_info(media->priv->media,
+ PURPLE_MEDIA_INFO_HANGUP, NULL, NULL, TRUE);
+ return FALSE;
+}
+
+static int
+pidgin_x_error_handler(Display *display, XErrorEvent *event)
+{
+ const gchar *error_type;
+ switch (event->error_code) {
+#define XERRORCASE(type) case type: error_type = #type; break
+ XERRORCASE(BadAccess);
+ XERRORCASE(BadAlloc);
+ XERRORCASE(BadAtom);
+ XERRORCASE(BadColor);
+ XERRORCASE(BadCursor);
+ XERRORCASE(BadDrawable);
+ XERRORCASE(BadFont);
+ XERRORCASE(BadGC);
+ XERRORCASE(BadIDChoice);
+ XERRORCASE(BadImplementation);
+ XERRORCASE(BadLength);
+ XERRORCASE(BadMatch);
+ XERRORCASE(BadName);
+ XERRORCASE(BadPixmap);
+ XERRORCASE(BadRequest);
+ XERRORCASE(BadValue);
+ XERRORCASE(BadWindow);
+#undef XERRORCASE
+ default:
+ error_type = "unknown";
+ break;
+ }
+ purple_debug_error("media", "A %s Xlib error has occurred. "
+ "The program would normally crash now.\n",
+ error_type);
+ return 0;
+}
+
+static void
+menu_hangup(gpointer data, guint action, GtkWidget *item)
+{
+ PidginMedia *gtkmedia = PIDGIN_MEDIA(data);
+ purple_media_stream_info(gtkmedia->priv->media,
+ PURPLE_MEDIA_INFO_HANGUP, NULL, NULL, TRUE);
+}
+
+static GtkItemFactoryEntry menu_items[] = {
+ { N_("/_Media"), NULL, NULL, 0, "<Branch>", NULL },
+ { N_("/Media/_Hangup"), NULL, menu_hangup, 0, "<Item>", NULL },
+};
+
+static gint menu_item_count = sizeof(menu_items) / sizeof(menu_items[0]);
+
+static const char *
+item_factory_translate_func (const char *path, gpointer func_data)
+{
+ return _(path);
+}
+
+static GtkWidget *
+setup_menubar(PidginMedia *window)
+{
+ GtkAccelGroup *accel_group;
+ GtkWidget *menu;
+
+ accel_group = gtk_accel_group_new ();
+ gtk_window_add_accel_group(GTK_WINDOW(window), accel_group);
+ g_object_unref(accel_group);
+
+ window->priv->item_factory = gtk_item_factory_new(GTK_TYPE_MENU_BAR,
+ "<main>", accel_group);
+
+ gtk_item_factory_set_translate_func(window->priv->item_factory,
+ (GtkTranslateFunc)item_factory_translate_func,
+ NULL, NULL);
+
+ gtk_item_factory_create_items(window->priv->item_factory,
+ menu_item_count, menu_items, window);
+ g_signal_connect(G_OBJECT(accel_group), "accel-changed",
+ G_CALLBACK(pidgin_save_accels_cb), NULL);
+
+ menu = gtk_item_factory_get_widget(
+ window->priv->item_factory, "<main>");
+
+ gtk_widget_show(menu);
+ return menu;
+}
+
+static void
+pidgin_media_init (PidginMedia *media)
+{
+ GtkWidget *vbox;
+ media->priv = PIDGIN_MEDIA_GET_PRIVATE(media);
+
+ XSetErrorHandler(pidgin_x_error_handler);
+
+ vbox = gtk_vbox_new(FALSE, 0);
+ gtk_container_add(GTK_CONTAINER(media), vbox);
+
+ media->priv->statusbar = gtk_statusbar_new();
+ gtk_box_pack_end(GTK_BOX(vbox), media->priv->statusbar,
+ FALSE, FALSE, 0);
+ gtk_statusbar_push(GTK_STATUSBAR(media->priv->statusbar),
+ 0, _("Calling..."));
+ gtk_widget_show(media->priv->statusbar);
+
+ media->priv->menubar = setup_menubar(media);
+ gtk_box_pack_start(GTK_BOX(vbox), media->priv->menubar,
+ FALSE, TRUE, 0);
+
+ media->priv->display = gtk_vbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
+ gtk_container_set_border_width(GTK_CONTAINER(media->priv->display),
+ PIDGIN_HIG_BOX_SPACE);
+ gtk_box_pack_start(GTK_BOX(vbox), media->priv->display,
+ TRUE, TRUE, PIDGIN_HIG_BOX_SPACE);
+ gtk_widget_show(vbox);
+
+ g_signal_connect(G_OBJECT(media), "delete-event",
+ G_CALLBACK(pidgin_media_delete_event_cb), media);
+}
+
+static gboolean
+level_message_cb(GstBus *bus, GstMessage *message, PidginMedia *gtkmedia)
+{
+ gdouble rms_db;
+ gdouble percent;
+ const GValue *list;
+ const GValue *value;
+
+ GstElement *src = GST_ELEMENT(GST_MESSAGE_SRC(message));
+ GtkWidget *progress;
+
+ if (message->type != GST_MESSAGE_ELEMENT)
+ return TRUE;
+
+ if (!gst_structure_has_name(
+ gst_message_get_structure(message), "level"))
+ return TRUE;
+
+ if (src == gtkmedia->priv->send_level)
+ progress = gtkmedia->priv->send_progress;
+ else if (src == gtkmedia->priv->recv_level)
+ progress = gtkmedia->priv->recv_progress;
+ else
+ return TRUE;
+
+ list = gst_structure_get_value(
+ gst_message_get_structure(message), "rms");
+
+ /* Only bother with the first channel. */
+ value = gst_value_list_get_value(list, 0);
+ rms_db = g_value_get_double(value);
+
+ percent = pow(10, rms_db / 20) * 5;
+
+ if(percent > 1.0)
+ percent = 1.0;
+
+ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(progress), percent);
+ return TRUE;
+}
+
+
+static void
+pidgin_media_disconnect_levels(PurpleMedia *media, PidginMedia *gtkmedia)
+{
+ PurpleMediaManager *manager = purple_media_get_manager(media);
+ GstElement *element = purple_media_manager_get_pipeline(manager);
+ gulong handler_id = g_signal_handler_find(G_OBJECT(gst_pipeline_get_bus(GST_PIPELINE(element))),
+ G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, 0, 0,
+ NULL, G_CALLBACK(level_message_cb), gtkmedia);
+ if (handler_id)
+ g_signal_handler_disconnect(G_OBJECT(gst_pipeline_get_bus(GST_PIPELINE(element))),
+ handler_id);
+}
+
+static void
+pidgin_media_dispose(GObject *media)
+{
+ PidginMedia *gtkmedia = PIDGIN_MEDIA(media);
+ purple_debug_info("gtkmedia", "pidgin_media_dispose\n");
+
+ if (gtkmedia->priv->media) {
+ purple_request_close_with_handle(gtkmedia);
+ purple_media_remove_output_windows(gtkmedia->priv->media);
+ pidgin_media_disconnect_levels(gtkmedia->priv->media, gtkmedia);
+ g_object_unref(gtkmedia->priv->media);
+ gtkmedia->priv->media = NULL;
+ }
+
+ if (gtkmedia->priv->item_factory) {
+ g_object_unref(gtkmedia->priv->item_factory);
+ gtkmedia->priv->item_factory = NULL;
+ }
+
+ if (gtkmedia->priv->send_level) {
+ gst_object_unref(gtkmedia->priv->send_level);
+ gtkmedia->priv->send_level = NULL;
+ }
+
+ if (gtkmedia->priv->recv_level) {
+ gst_object_unref(gtkmedia->priv->recv_level);
+ gtkmedia->priv->recv_level = NULL;
+ }
+
+ G_OBJECT_CLASS(parent_class)->dispose(media);
+}
+
+static void
+pidgin_media_finalize(GObject *media)
+{
+ /* PidginMedia *gtkmedia = PIDGIN_MEDIA(media); */
+ purple_debug_info("gtkmedia", "pidgin_media_finalize\n");
+
+ G_OBJECT_CLASS(parent_class)->finalize(media);
+}
+
+static void
+pidgin_media_emit_message(PidginMedia *gtkmedia, const char *msg)
+{
+ PurpleConversation *conv = purple_find_conversation_with_account(
+ PURPLE_CONV_TYPE_ANY, gtkmedia->priv->screenname,
+ purple_media_get_account(gtkmedia->priv->media));
+ if (conv != NULL)
+ purple_conversation_write(conv, NULL, msg,
+ PURPLE_MESSAGE_SYSTEM, time(NULL));
+}
+
+typedef struct
+{
+ PidginMedia *gtkmedia;
+ gchar *session_id;
+ gchar *participant;
+} PidginMediaRealizeData;
+
+static gboolean
+realize_cb_cb(PidginMediaRealizeData *data)
+{
+ PidginMediaPrivate *priv = data->gtkmedia->priv;
+ gulong window_id;
+
+ if (data->participant == NULL)
+ window_id = GDK_WINDOW_XWINDOW(priv->local_video->window);
+ else
+ window_id = GDK_WINDOW_XWINDOW(priv->remote_video->window);
+
+ purple_media_set_output_window(priv->media, data->session_id,
+ data->participant, window_id);
+
+ g_free(data->session_id);
+ g_free(data->participant);
+ g_free(data);
+ return FALSE;
+}
+
+static void
+realize_cb(GtkWidget *widget, PidginMediaRealizeData *data)
+{
+ g_timeout_add(0, (GSourceFunc)realize_cb_cb, data);
+}
+
+static void
+pidgin_media_error_cb(PidginMedia *media, const char *error, PidginMedia *gtkmedia)
+{
+ PurpleConversation *conv = purple_find_conversation_with_account(
+ PURPLE_CONV_TYPE_ANY, gtkmedia->priv->screenname,
+ purple_media_get_account(gtkmedia->priv->media));
+ if (conv != NULL)
+ purple_conversation_write(conv, NULL, error,
+ PURPLE_MESSAGE_ERROR, time(NULL));
+ gtk_statusbar_push(GTK_STATUSBAR(gtkmedia->priv->statusbar),
+ 0, error);
+}
+
+static void
+pidgin_media_accepted_cb(PurpleMedia *media, const gchar *session_id,
+ const gchar *participant, PidginMedia *gtkmedia)
+{
+ pidgin_media_set_state(gtkmedia, PIDGIN_MEDIA_ACCEPTED);
+ pidgin_media_emit_message(gtkmedia, _("Call in progress."));
+ gtk_statusbar_push(GTK_STATUSBAR(gtkmedia->priv->statusbar),
+ 0, _("Call in progress."));
+ gtk_widget_show(GTK_WIDGET(gtkmedia));
+}
+
+static void
+pidgin_media_accept_cb(PurpleMedia *media, int index)
+{
+ purple_media_stream_info(media, PURPLE_MEDIA_INFO_ACCEPT,
+ NULL, NULL, TRUE);
+}
+
+static void
+pidgin_media_reject_cb(PurpleMedia *media, int index)
+{
+ purple_media_stream_info(media, PURPLE_MEDIA_INFO_REJECT,
+ NULL, NULL, TRUE);
+}
+
+static gboolean
+pidgin_request_timeout_cb(PidginMedia *gtkmedia)
+{
+ PurpleAccount *account;
+ PurpleBuddy *buddy;
+ const gchar *alias;
+ PurpleMediaSessionType type;
+ gchar *message = NULL;
+
+ account = purple_media_get_account(gtkmedia->priv->media);
+ buddy = purple_find_buddy(account, gtkmedia->priv->screenname);
+ alias = buddy ? purple_buddy_get_contact_alias(buddy) :
+ gtkmedia->priv->screenname;
+ type = gtkmedia->priv->request_type;
+ gtkmedia->priv->timeout_id = 0;
+
+ if (type & PURPLE_MEDIA_AUDIO && type & PURPLE_MEDIA_VIDEO) {
+ message = g_strdup_printf(_("%s wishes to start an audio/video session with you."),
+ alias);
+ } else if (type & PURPLE_MEDIA_AUDIO) {
+ message = g_strdup_printf(_("%s wishes to start an audio session with you."),
+ alias);
+ } else if (type & PURPLE_MEDIA_VIDEO) {
+ message = g_strdup_printf(_("%s wishes to start a video session with you."),
+ alias);
+ }
+
+ gtkmedia->priv->request_type = PURPLE_MEDIA_NONE;
+
+ purple_request_accept_cancel(gtkmedia, "Media invitation",
+ message, NULL, PURPLE_DEFAULT_ACTION_NONE,
+ (void*)account, gtkmedia->priv->screenname, NULL,
+ gtkmedia->priv->media,
+ pidgin_media_accept_cb,
+ pidgin_media_reject_cb);
+ pidgin_media_emit_message(gtkmedia, message);
+ g_free(message);
+ return FALSE;
+}
+
+static void
+#if GTK_CHECK_VERSION(2,12,0)
+pidgin_media_input_volume_changed(GtkScaleButton *range, double value,
+ PurpleMedia *media)
+{
+ double val = (double)value * 100.0;
+#else
+pidgin_media_input_volume_changed(GtkRange *range, PurpleMedia *media)
+{
+ double val = (double)gtk_range_get_value(GTK_RANGE(range));
+#endif
+ purple_prefs_set_int("/pidgin/media/audio/volume/input", val);
+ purple_media_set_input_volume(media, NULL, val / 10.0);
+}
+
+static void
+#if GTK_CHECK_VERSION(2,12,0)
+pidgin_media_output_volume_changed(GtkScaleButton *range, double value,
+ PurpleMedia *media)
+{
+ double val = (double)value * 100.0;
+#else
+pidgin_media_output_volume_changed(GtkRange *range, PurpleMedia *media)
+{
+ double val = (double)gtk_range_get_value(GTK_RANGE(range));
+#endif
+ purple_prefs_set_int("/pidgin/media/audio/volume/output", val);
+ purple_media_set_output_volume(media, NULL, NULL, val / 10.0);
+}
+
+static GtkWidget *
+pidgin_media_add_audio_widget(PidginMedia *gtkmedia,
+ PurpleMediaSessionType type)
+{
+ GtkWidget *volume_widget, *progress_parent, *volume, *progress;
+ double value;
+
+ if (type & PURPLE_MEDIA_SEND_AUDIO) {
+ value = purple_prefs_get_int(
+ "/pidgin/media/audio/volume/input");
+ } else if (type & PURPLE_MEDIA_RECV_AUDIO) {
+ value = purple_prefs_get_int(
+ "/pidgin/media/audio/volume/output");
+ } else
+ g_return_val_if_reached(NULL);
+
+#if GTK_CHECK_VERSION(2,12,0)
+ /* Setup widget structure */
+ volume_widget = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
+ progress_parent = gtk_vbox_new(FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(volume_widget),
+ progress_parent, TRUE, TRUE, 0);
+
+ /* Volume button */
+ volume = gtk_volume_button_new();
+ gtk_scale_button_set_value(GTK_SCALE_BUTTON(volume), value/100.0);
+ gtk_box_pack_end(GTK_BOX(volume_widget),
+ volume, FALSE, FALSE, 0);
+#else
+ /* Setup widget structure */
+ volume_widget = gtk_vbox_new(FALSE, 0);
+ progress_parent = volume_widget;
+
+ /* Volume slider */
+ volume = gtk_hscale_new_with_range(0.0, 100.0, 5.0);
+ gtk_range_set_increments(GTK_RANGE(volume), 5.0, 25.0);
+ gtk_range_set_value(GTK_RANGE(volume), value);
+ gtk_scale_set_draw_value(GTK_SCALE(volume), FALSE);
+ gtk_box_pack_end(GTK_BOX(volume_widget),
+ volume, TRUE, FALSE, 0);
+#endif
+
+ /* Volume level indicator */
+ progress = gtk_progress_bar_new();
+ gtk_widget_set_size_request(progress, 250, 10);
+ gtk_box_pack_end(GTK_BOX(progress_parent), progress, TRUE, FALSE, 0);
+
+ if (type & PURPLE_MEDIA_SEND_AUDIO) {
+ g_signal_connect (G_OBJECT(volume), "value-changed",
+ G_CALLBACK(pidgin_media_input_volume_changed),
+ gtkmedia->priv->media);
+ gtkmedia->priv->send_progress = progress;
+ } else if (type & PURPLE_MEDIA_RECV_AUDIO) {
+ g_signal_connect (G_OBJECT(volume), "value-changed",
+ G_CALLBACK(pidgin_media_output_volume_changed),
+ gtkmedia->priv->media);
+ gtkmedia->priv->recv_progress = progress;
+ }
+
+ gtk_widget_show_all(volume_widget);
+
+ return volume_widget;
+}
+
+static void
+pidgin_media_ready_cb(PurpleMedia *media, PidginMedia *gtkmedia, const gchar *sid)
+{
+ PurpleMediaManager *manager = purple_media_get_manager(media);
+ GstElement *pipeline = purple_media_manager_get_pipeline(manager);
+ GtkWidget *send_widget = NULL, *recv_widget = NULL;
+ PurpleMediaSessionType type =
+ purple_media_get_session_type(media, sid);
+
+ if (gtkmedia->priv->recv_widget == NULL
+ && type & (PURPLE_MEDIA_RECV_VIDEO |
+ PURPLE_MEDIA_RECV_AUDIO)) {
+ recv_widget = gtk_vbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
+ gtk_box_pack_start(GTK_BOX(gtkmedia->priv->display),
+ recv_widget, TRUE, TRUE, 0);
+ gtk_widget_show(recv_widget);
+ } else
+ recv_widget = gtkmedia->priv->recv_widget;
+ if (gtkmedia->priv->send_widget == NULL
+ && type & (PURPLE_MEDIA_SEND_VIDEO |
+ PURPLE_MEDIA_SEND_AUDIO)) {
+ send_widget = gtk_vbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
+ gtk_box_pack_start(GTK_BOX(gtkmedia->priv->display),
+ send_widget, TRUE, TRUE, 0);
+ gtk_widget_show(send_widget);
+ } else
+ send_widget = gtkmedia->priv->send_widget;
+
+ if (type & PURPLE_MEDIA_RECV_VIDEO) {
+ PidginMediaRealizeData *data;
+ GtkWidget *aspect;
+ GtkWidget *remote_video;
+ GdkColor color = {0, 0, 0, 0};
+
+ aspect = gtk_aspect_frame_new(NULL, 0.5, 0.5, 4.0/3.0, FALSE);
+ gtk_frame_set_shadow_type(GTK_FRAME(aspect), GTK_SHADOW_IN);
+ gtk_box_pack_start(GTK_BOX(recv_widget), aspect, TRUE, TRUE, 0);
+
+ data = g_new0(PidginMediaRealizeData, 1);
+ data->gtkmedia = gtkmedia;
+ data->session_id = g_strdup(sid);
+ data->participant = g_strdup(gtkmedia->priv->screenname);
+
+ remote_video = gtk_drawing_area_new();
+ gtk_widget_modify_bg(remote_video, GTK_STATE_NORMAL, &color);
+ g_signal_connect(G_OBJECT(remote_video), "realize",
+ G_CALLBACK(realize_cb), data);
+ gtk_container_add(GTK_CONTAINER(aspect), remote_video);
+ gtk_widget_set_size_request (GTK_WIDGET(remote_video), 320, 240);
+ gtk_widget_show(remote_video);
+ gtk_widget_show(aspect);
+
+ gtkmedia->priv->remote_video = remote_video;
+ }
+ if (type & PURPLE_MEDIA_SEND_VIDEO) {
+ PidginMediaRealizeData *data;
+ GtkWidget *aspect;
+ GtkWidget *local_video;
+ GdkColor color = {0, 0, 0, 0};
+
+ aspect = gtk_aspect_frame_new(NULL, 0.5, 0.5, 4.0/3.0, FALSE);
+ gtk_frame_set_shadow_type(GTK_FRAME(aspect), GTK_SHADOW_IN);
+ gtk_box_pack_start(GTK_BOX(send_widget), aspect, TRUE, TRUE, 0);
+
+ data = g_new0(PidginMediaRealizeData, 1);
+ data->gtkmedia = gtkmedia;
+ data->session_id = g_strdup(sid);
+ data->participant = NULL;
+
+ local_video = gtk_drawing_area_new();
+ gtk_widget_modify_bg(local_video, GTK_STATE_NORMAL, &color);
+ g_signal_connect(G_OBJECT(local_video), "realize",
+ G_CALLBACK(realize_cb), data);
+ gtk_container_add(GTK_CONTAINER(aspect), local_video);
+ gtk_widget_set_size_request (GTK_WIDGET(local_video), 160, 120);
+
+ gtk_widget_show(local_video);
+ gtk_widget_show(aspect);
+
+ gtkmedia->priv->local_video = local_video;
+ }
+
+ if (type & PURPLE_MEDIA_RECV_AUDIO) {
+ gtk_box_pack_end(GTK_BOX(recv_widget),
+ pidgin_media_add_audio_widget(gtkmedia,
+ PURPLE_MEDIA_RECV_AUDIO), FALSE, FALSE, 0);
+ }
+ if (type & PURPLE_MEDIA_SEND_AUDIO) {
+ GstElement *media_src;
+ GtkWidget *hbox;
+
+ hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
+ gtk_box_pack_end(GTK_BOX(send_widget), hbox, FALSE, FALSE, 0);
+ gtkmedia->priv->mute =
+ gtk_toggle_button_new_with_mnemonic("_Mute");
+ g_signal_connect(gtkmedia->priv->mute, "toggled",
+ G_CALLBACK(pidgin_media_mute_toggled),
+ gtkmedia);
+ gtk_box_pack_end(GTK_BOX(hbox), gtkmedia->priv->mute,
+ FALSE, FALSE, 0);
+ gtk_widget_show(gtkmedia->priv->mute);
+ gtk_widget_show(GTK_WIDGET(hbox));
+
+ media_src = purple_media_get_src(media, sid);
+ gtkmedia->priv->send_level = gst_bin_get_by_name(
+ GST_BIN(media_src), "sendlevel");
+
+ gtk_box_pack_end(GTK_BOX(send_widget),
+ pidgin_media_add_audio_widget(gtkmedia,
+ PURPLE_MEDIA_SEND_AUDIO), FALSE, FALSE, 0);
+
+ gtk_widget_show(gtkmedia->priv->mute);
+ }
+
+
+ if (type & PURPLE_MEDIA_AUDIO) {
+ GstBus *bus = gst_pipeline_get_bus(GST_PIPELINE(pipeline));
+ g_signal_connect(G_OBJECT(bus), "message::element",
+ G_CALLBACK(level_message_cb), gtkmedia);
+ gst_object_unref(bus);
+ }
+
+ if (send_widget != NULL)
+ gtkmedia->priv->send_widget = send_widget;
+ if (recv_widget != NULL)
+ gtkmedia->priv->recv_widget = recv_widget;
+
+ if (purple_media_is_initiator(media, sid, NULL) == FALSE) {
+ if (gtkmedia->priv->timeout_id != 0)
+ g_source_remove(gtkmedia->priv->timeout_id);
+ gtkmedia->priv->request_type |= type;
+ gtkmedia->priv->timeout_id = g_timeout_add(500,
+ (GSourceFunc)pidgin_request_timeout_cb,
+ gtkmedia);
+ }
+
+ gtk_widget_show(gtkmedia->priv->display);
+}
+
+static void
+pidgin_media_state_changed_cb(PurpleMedia *media, PurpleMediaState state,
+ gchar *sid, gchar *name, PidginMedia *gtkmedia)
+{
+ purple_debug_info("gtkmedia", "state: %d sid: %s name: %s\n",
+ state, sid, name);
+ if (sid == NULL && name == NULL) {
+ if (state == PURPLE_MEDIA_STATE_END) {
+ pidgin_media_emit_message(gtkmedia,
+ _("The call has been terminated."));
+ gtk_widget_destroy(GTK_WIDGET(gtkmedia));
+ }
+ } else if (state == PURPLE_MEDIA_STATE_NEW &&
+ sid != NULL && name != NULL) {
+ pidgin_media_ready_cb(media, gtkmedia, sid);
+ } else if (state == PURPLE_MEDIA_STATE_CONNECTED &&
+ purple_media_get_session_type(media, sid) &
+ PURPLE_MEDIA_RECV_AUDIO) {
+ GstElement *tee = purple_media_get_tee(media, sid, name);
+ GstIterator *iter = gst_element_iterate_src_pads(tee);
+ GstPad *sinkpad;
+ if (gst_iterator_next(iter, (gpointer)&sinkpad)
+ == GST_ITERATOR_OK) {
+ GstPad *peer = gst_pad_get_peer(sinkpad);
+ if (peer != NULL) {
+ gtkmedia->priv->recv_level =
+ gst_bin_get_by_name(
+ GST_BIN(GST_OBJECT_PARENT(
+ peer)), "recvlevel");
+ gst_object_unref(peer);
+ }
+ gst_object_unref(sinkpad);
+ }
+ gst_iterator_free(iter);
+ }
+}
+
+static void
+pidgin_media_stream_info_cb(PurpleMedia *media, PurpleMediaInfoType type,
+ gchar *sid, gchar *name, gboolean local,
+ PidginMedia *gtkmedia)
+{
+ if (type == PURPLE_MEDIA_INFO_REJECT) {
+ pidgin_media_emit_message(gtkmedia,
+ _("You have rejected the call."));
+ }
+}
+
+static void
+pidgin_media_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+{
+ PidginMedia *media;
+ g_return_if_fail(PIDGIN_IS_MEDIA(object));
+
+ media = PIDGIN_MEDIA(object);
+ switch (prop_id) {
+ case PROP_MEDIA:
+ {
+ if (media->priv->media)
+ g_object_unref(media->priv->media);
+ media->priv->media = g_value_get_object(value);
+ g_object_ref(media->priv->media);
+
+ if (purple_media_is_initiator(media->priv->media,
+ NULL, NULL) == TRUE)
+ pidgin_media_set_state(media, PIDGIN_MEDIA_WAITING);
+ else
+ pidgin_media_set_state(media, PIDGIN_MEDIA_REQUESTED);
+
+ g_signal_connect(G_OBJECT(media->priv->media), "error",
+ G_CALLBACK(pidgin_media_error_cb), media);
+ g_signal_connect(G_OBJECT(media->priv->media), "accepted",
+ G_CALLBACK(pidgin_media_accepted_cb), media);
+ g_signal_connect(G_OBJECT(media->priv->media), "state-changed",
+ G_CALLBACK(pidgin_media_state_changed_cb), media);
+ g_signal_connect(G_OBJECT(media->priv->media), "stream-info",
+ G_CALLBACK(pidgin_media_stream_info_cb), media);
+ break;
+ }
+ case PROP_SCREENNAME:
+ if (media->priv->screenname)
+ g_free(media->priv->screenname);
+ media->priv->screenname = g_value_dup_string(value);
+ break;
+ case PROP_SEND_LEVEL:
+ if (media->priv->send_level)
+ gst_object_unref(media->priv->send_level);
+ media->priv->send_level = g_value_get_object(value);
+ g_object_ref(media->priv->send_level);
+ break;
+ case PROP_RECV_LEVEL:
+ if (media->priv->recv_level)
+ gst_object_unref(media->priv->recv_level);
+ media->priv->recv_level = g_value_get_object(value);
+ g_object_ref(media->priv->recv_level);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+pidgin_media_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+{
+ PidginMedia *media;
+ g_return_if_fail(PIDGIN_IS_MEDIA(object));
+
+ media = PIDGIN_MEDIA(object);
+
+ switch (prop_id) {
+ case PROP_MEDIA:
+ g_value_set_object(value, media->priv->media);
+ break;
+ case PROP_SCREENNAME:
+ g_value_set_string(value, media->priv->screenname);
+ break;
+ case PROP_SEND_LEVEL:
+ g_value_set_object(value, media->priv->send_level);
+ break;
+ case PROP_RECV_LEVEL:
+ g_value_set_object(value, media->priv->recv_level);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static GtkWidget *
+pidgin_media_new(PurpleMedia *media, const gchar *screenname)
+{
+ PidginMedia *gtkmedia = g_object_new(pidgin_media_get_type(),
+ "media", media,
+ "screenname", screenname, NULL);
+ return GTK_WIDGET(gtkmedia);
+}
+
+static void
+pidgin_media_set_state(PidginMedia *gtkmedia, PidginMediaState state)
+{
+ gtkmedia->priv->state = state;
+}
+
+static gboolean
+pidgin_media_new_cb(PurpleMediaManager *manager, PurpleMedia *media,
+ PurpleAccount *account, gchar *screenname, gpointer nul)
+{
+ PidginMedia *gtkmedia = PIDGIN_MEDIA(
+ pidgin_media_new(media, screenname));
+ PurpleBuddy *buddy = purple_find_buddy(account, screenname);
+ const gchar *alias = buddy ?
+ purple_buddy_get_contact_alias(buddy) : screenname;
+ gtk_window_set_title(GTK_WINDOW(gtkmedia), alias);
+
+ if (purple_media_is_initiator(media, NULL, NULL) == TRUE)
+ gtk_widget_show(GTK_WIDGET(gtkmedia));
+
+ return TRUE;
+}
+
+static GstElement *
+create_default_video_src(PurpleMedia *media,
+ const gchar *session_id, const gchar *participant)
+{
+ GstElement *sendbin, *src, *videoscale, *capsfilter;
+ GstPad *pad;
+ GstPad *ghost;
+ GstCaps *caps;
+
+ src = gst_element_factory_make("gconfvideosrc", NULL);
+ if (src == NULL)
+ src = gst_element_factory_make("autovideosrc", NULL);
+ if (src == NULL)
+ src = gst_element_factory_make("v4l2src", NULL);
+ if (src == NULL)
+ src = gst_element_factory_make("v4lsrc", NULL);
+ if (src == NULL)
+ src = gst_element_factory_make("ksvideosrc", NULL);
+ if (src == NULL)
+ src = gst_element_factory_make("dshowvideosrc", NULL);
+ if (src == NULL) {
+ purple_debug_error("gtkmedia", "Unable to find a suitable "
+ "element for the default video source.\n");
+ return NULL;
+ }
+
+ sendbin = gst_bin_new("pidgindefaultvideosrc");
+ videoscale = gst_element_factory_make("videoscale", NULL);
+ capsfilter = gst_element_factory_make("capsfilter", NULL);
+
+ /* It was recommended to set the size <= 352x288 and framerate <= 20 */
+ caps = gst_caps_from_string("video/x-raw-yuv , width=[250,352] , "
+ "height=[200,288] , framerate=[1/1,20/1]");
+ g_object_set(G_OBJECT(capsfilter), "caps", caps, NULL);
+
+ gst_bin_add_many(GST_BIN(sendbin), src,
+ videoscale, capsfilter, NULL);
+ gst_element_link_many(src, videoscale, capsfilter, NULL);
+
+ pad = gst_element_get_static_pad(capsfilter, "src");
+ ghost = gst_ghost_pad_new("ghostsrc", pad);
+ gst_object_unref(pad);
+ gst_element_add_pad(sendbin, ghost);
+
+ return sendbin;
+}
+
+static GstElement *
+create_default_video_sink(PurpleMedia *media,
+ const gchar *session_id, const gchar *participant)
+{
+ GstElement *sink = gst_element_factory_make("gconfvideosink", NULL);
+ if (sink == NULL)
+ sink = gst_element_factory_make("autovideosink", NULL);
+ if (sink == NULL)
+ purple_debug_error("gtkmedia", "Unable to find a suitable "
+ "element for the default video sink.\n");
+ return sink;
+}
+
+static GstElement *
+create_default_audio_src(PurpleMedia *media,
+ const gchar *session_id, const gchar *participant)
+{
+ GstElement *bin, *src, *volume, *level;
+ GstPad *pad, *ghost;
+ double input_volume = purple_prefs_get_int(
+ "/pidgin/media/audio/volume/input")/10.0;
+
+ src = gst_element_factory_make("gconfaudiosrc", NULL);
+ if (src == NULL)
+ src = gst_element_factory_make("autoaudiosrc", NULL);
+ if (src == NULL)
+ src = gst_element_factory_make("alsasrc", NULL);
+ if (src == NULL)
+ src = gst_element_factory_make("osssrc", NULL);
+ if (src == NULL)
+ src = gst_element_factory_make("dshowaudiosrc", NULL);
+ if (src == NULL) {
+ purple_debug_error("gtkmedia", "Unable to find a suitable "
+ "element for the default audio source.\n");
+ return NULL;
+ }
+
+ bin = gst_bin_new("pidgindefaultaudiosrc");
+ volume = gst_element_factory_make("volume", "purpleaudioinputvolume");
+ g_object_set(volume, "volume", input_volume, NULL);
+ level = gst_element_factory_make("level", "sendlevel");
+ gst_bin_add_many(GST_BIN(bin), src, volume, level, NULL);
+ gst_element_link(src, volume);
+ gst_element_link(volume, level);
+ pad = gst_element_get_pad(level, "src");
+ ghost = gst_ghost_pad_new("ghostsrc", pad);
+ gst_element_add_pad(bin, ghost);
+ g_object_set(G_OBJECT(level), "message", TRUE, NULL);
+
+ return bin;
+}
+
+static GstElement *
+create_default_audio_sink(PurpleMedia *media,
+ const gchar *session_id, const gchar *participant)
+{
+ GstElement *bin, *sink, *volume, *level, *queue;
+ GstPad *pad, *ghost;
+ double output_volume = purple_prefs_get_int(
+ "/pidgin/media/audio/volume/output")/10.0;
+
+ sink = gst_element_factory_make("gconfaudiosink", NULL);
+ if (sink == NULL)
+ sink = gst_element_factory_make("autoaudiosink",NULL);
+ if (sink == NULL) {
+ purple_debug_error("gtkmedia", "Unable to find a suitable "
+ "element for the default audio sink.\n");
+ return NULL;
+ }
+
+ bin = gst_bin_new("pidginrecvaudiobin");
+ volume = gst_element_factory_make("volume", "purpleaudiooutputvolume");
+ g_object_set(volume, "volume", output_volume, NULL);
+ level = gst_element_factory_make("level", "recvlevel");
+ queue = gst_element_factory_make("queue", NULL);
+ gst_bin_add_many(GST_BIN(bin), sink, volume, level, queue, NULL);
+ gst_element_link(level, sink);
+ gst_element_link(volume, level);
+ gst_element_link(queue, volume);
+ pad = gst_element_get_pad(queue, "sink");
+ ghost = gst_ghost_pad_new("ghostsink", pad);
+ gst_element_add_pad(bin, ghost);
+ g_object_set(G_OBJECT(level), "message", TRUE, NULL);
+
+ return bin;
+}
+#endif /* USE_VV */
+
+void
+pidgin_medias_init(void)
+{
+#ifdef USE_VV
+ PurpleMediaManager *manager = purple_media_manager_get();
+ PurpleMediaElementInfo *default_video_src =
+ g_object_new(PURPLE_TYPE_MEDIA_ELEMENT_INFO,
+ "id", "pidgindefaultvideosrc",
+ "name", "Pidgin Default Video Source",
+ "type", PURPLE_MEDIA_ELEMENT_VIDEO
+ | PURPLE_MEDIA_ELEMENT_SRC
+ | PURPLE_MEDIA_ELEMENT_ONE_SRC
+ | PURPLE_MEDIA_ELEMENT_UNIQUE,
+ "create-cb", create_default_video_src, NULL);
+ PurpleMediaElementInfo *default_video_sink =
+ g_object_new(PURPLE_TYPE_MEDIA_ELEMENT_INFO,
+ "id", "pidgindefaultvideosink",
+ "name", "Pidgin Default Video Sink",
+ "type", PURPLE_MEDIA_ELEMENT_VIDEO
+ | PURPLE_MEDIA_ELEMENT_SINK
+ | PURPLE_MEDIA_ELEMENT_ONE_SINK,
+ "create-cb", create_default_video_sink, NULL);
+ PurpleMediaElementInfo *default_audio_src =
+ g_object_new(PURPLE_TYPE_MEDIA_ELEMENT_INFO,
+ "id", "pidgindefaultaudiosrc",
+ "name", "Pidgin Default Audio Source",
+ "type", PURPLE_MEDIA_ELEMENT_AUDIO
+ | PURPLE_MEDIA_ELEMENT_SRC
+ | PURPLE_MEDIA_ELEMENT_ONE_SRC
+ | PURPLE_MEDIA_ELEMENT_UNIQUE,
+ "create-cb", create_default_audio_src, NULL);
+ PurpleMediaElementInfo *default_audio_sink =
+ g_object_new(PURPLE_TYPE_MEDIA_ELEMENT_INFO,
+ "id", "pidgindefaultaudiosink",
+ "name", "Pidgin Default Audio Sink",
+ "type", PURPLE_MEDIA_ELEMENT_AUDIO
+ | PURPLE_MEDIA_ELEMENT_SINK
+ | PURPLE_MEDIA_ELEMENT_ONE_SINK,
+ "create-cb", create_default_audio_sink, NULL);
+
+ g_signal_connect(G_OBJECT(manager), "init-media",
+ G_CALLBACK(pidgin_media_new_cb), NULL);
+
+ purple_media_manager_set_ui_caps(manager,
+ PURPLE_MEDIA_CAPS_AUDIO |
+ PURPLE_MEDIA_CAPS_AUDIO_SINGLE_DIRECTION |
+ PURPLE_MEDIA_CAPS_VIDEO |
+ PURPLE_MEDIA_CAPS_VIDEO_SINGLE_DIRECTION |
+ PURPLE_MEDIA_CAPS_AUDIO_VIDEO);
+
+ purple_debug_info("gtkmedia", "Registering media element types\n");
+ purple_media_manager_set_active_element(manager, default_video_src);
+ purple_media_manager_set_active_element(manager, default_video_sink);
+ purple_media_manager_set_active_element(manager, default_audio_src);
+ purple_media_manager_set_active_element(manager, default_audio_sink);
+
+ purple_prefs_add_none("/pidgin/media");
+ purple_prefs_add_none("/pidgin/media/audio");
+ purple_prefs_add_none("/pidgin/media/audio/volume");
+ purple_prefs_add_int("/pidgin/media/audio/volume/input", 10);
+ purple_prefs_add_int("/pidgin/media/audio/volume/output", 10);
+#endif
+}
+
diff --git a/pidgin/gtkmedia.h b/pidgin/gtkmedia.h
new file mode 100644
index 0000000000..a87af78b6d
--- /dev/null
+++ b/pidgin/gtkmedia.h
@@ -0,0 +1,36 @@
+/**
+ * @file gtkmedia.h Pidgin Media API
+ * @ingroup pidgin
+ */
+
+/* Pidgin
+ *
+ * Pidgin is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __GTKMEDIA_H_
+#define __GTKMEDIA_H_
+
+G_BEGIN_DECLS
+
+void pidgin_medias_init(void);
+
+G_END_DECLS
+
+#endif /* __GTKMEDIA_H_ */
diff --git a/pidgin/gtkmenutray.c b/pidgin/gtkmenutray.c
index e1fa249e15..d74f9ced4f 100644
--- a/pidgin/gtkmenutray.c
+++ b/pidgin/gtkmenutray.c
@@ -21,9 +21,7 @@
#include "gtkmenutray.h"
-#include <gtk/gtkeventbox.h>
-#include <gtk/gtkiconfactory.h>
-#include <gtk/gtkversion.h>
+#include <gtk/gtk.h>
/******************************************************************************
* Enums
diff --git a/pidgin/gtkmenutray.h b/pidgin/gtkmenutray.h
index 3e94bcdc22..0661ef8425 100644
--- a/pidgin/gtkmenutray.h
+++ b/pidgin/gtkmenutray.h
@@ -24,16 +24,14 @@
#ifndef PIDGIN_MENU_TRAY_H
#define PIDGIN_MENU_TRAY_H
-#include <gtk/gtkhbox.h>
-#include <gtk/gtkmenuitem.h>
-#include <gtk/gtktooltips.h>
+#include <gtk/gtk.h>
-#define PIDGIN_TYPE_MENU_TRAY (pidgin_menu_tray_get_gtype())
-#define PIDGIN_MENU_TRAY(obj) (GTK_CHECK_CAST((obj), PIDGIN_TYPE_MENU_TRAY, PidginMenuTray))
-#define PIDGIN_MENU_TRAY_CLASS(klass) (GTK_CHECK_CLASS_CAST((klass), PIDGIN_TYPE_MENU_TRAY, PidginMenuTrayClass))
-#define PIDGIN_IS_MENU_TRAY(obj) (GTK_CHECK_TYPE((obj), PIDGIN_TYPE_MENU_TRAY))
-#define PIDGIN_IS_MENU_TRAY_CLASS(klass) (GTK_CHECK_CLASS_TYPE((klass), PIDGIN_TYPE_MENU_TRAY))
-#define PIDGIN_MENU_TRAY_GET_CLASS(obj) (GTK_CHECK_GET_CLASS((obj), PIDGIN_TYPE_MENU_TRAY, PidginMenuTrayClass))
+#define PIDGIN_TYPE_MENU_TRAY (pidgin_menu_tray_get_gtype())
+#define PIDGIN_MENU_TRAY(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PIDGIN_TYPE_MENU_TRAY, PidginMenuTray))
+#define PIDGIN_MENU_TRAY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), PIDGIN_TYPE_MENU_TRAY, PidginMenuTrayClass))
+#define PIDGIN_IS_MENU_TRAY(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), PIDGIN_TYPE_MENU_TRAY))
+#define PIDGIN_IS_MENU_TRAY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), PIDGIN_TYPE_MENU_TRAY))
+#define PIDGIN_MENU_TRAY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), PIDGIN_TYPE_MENU_TRAY, PidginMenuTrayClass))
typedef struct _PidginMenuTray PidginMenuTray;
typedef struct _PidginMenuTrayClass PidginMenuTrayClass;
diff --git a/pidgin/gtknotify.c b/pidgin/gtknotify.c
index 288bc83d4a..bae48e78a7 100644
--- a/pidgin/gtknotify.c
+++ b/pidgin/gtknotify.c
@@ -28,6 +28,7 @@
#include <gdk/gdkkeysyms.h>
+#include "account.h"
#include "connection.h"
#include "debug.h"
#include "prefs.h"
@@ -37,6 +38,7 @@
#include "gtkblist.h"
#include "gtkimhtml.h"
#include "gtknotify.h"
+#include "gtkpounce.h"
#include "gtkutils.h"
typedef struct
@@ -57,6 +59,13 @@ typedef struct
typedef struct
{
PurpleAccount *account;
+ PurplePounce *pounce;
+} PidginNotifyPounceData;
+
+
+typedef struct
+{
+ PurpleAccount *account;
GtkListStore *model;
GtkWidget *treeview;
GtkWidget *window;
@@ -80,21 +89,44 @@ enum
COLUMNS_PIDGIN_MAIL
};
-typedef struct _PidginMailDialog PidginMailDialog;
+enum
+{
+ PIDGIN_POUNCE_ICON,
+ PIDGIN_POUNCE_ALIAS,
+ PIDGIN_POUNCE_EVENT,
+ PIDGIN_POUNCE_TEXT,
+ PIDGIN_POUNCE_DATE,
+ PIDGIN_POUNCE_DATA,
+ PIDGIN_POUNCE_COLUMNS
+};
-struct _PidginMailDialog
+typedef struct _PidginNotifyDialog PidginNotifyDialog;
+typedef PidginNotifyDialog PidginMailDialog;
+
+struct _PidginNotifyDialog
{
GtkWidget *dialog;
GtkWidget *treeview;
GtkTreeStore *treemodel;
GtkLabel *label;
GtkWidget *open_button;
+ GtkWidget *dismiss_button;
+ GtkWidget *edit_button;
int total_count;
gboolean in_use;
};
-static PidginMailDialog *mail_dialog = NULL;
+typedef enum
+{
+ PIDGIN_NOTIFY_MAIL,
+ PIDGIN_NOTIFY_POUNCE,
+ PIDGIN_NOTIFY_TYPES
+} PidginNotifyType;
+
+static PidginNotifyDialog *mail_dialog = NULL;
+static PidginNotifyDialog *pounce_dialog = NULL;
+static GtkWidget *pidgin_get_notification_dialog(PidginNotifyType type);
static void *pidgin_notify_emails(PurpleConnection *gc, size_t count, gboolean detailed,
const char **subjects,
const char **froms, const char **tos,
@@ -109,6 +141,159 @@ message_response_cb(GtkDialog *dialog, gint id, GtkWidget *widget)
}
static void
+pounce_response_close(PidginNotifyDialog *dialog)
+{
+ GtkTreeIter iter;
+ PidginNotifyPounceData *pounce_data;
+
+ while (gtk_tree_model_get_iter_first(
+ GTK_TREE_MODEL(pounce_dialog->treemodel), &iter)) {
+ gtk_tree_model_get(GTK_TREE_MODEL(pounce_dialog->treemodel), &iter,
+ PIDGIN_POUNCE_DATA, &pounce_data,
+ -1);
+ gtk_tree_store_remove(dialog->treemodel, &iter);
+
+ g_free(pounce_data);
+ }
+
+ gtk_widget_destroy(pounce_dialog->dialog);
+ g_free(pounce_dialog);
+ pounce_dialog = NULL;
+}
+
+static void
+delete_foreach(GtkTreeModel *model, GtkTreePath *path,
+ GtkTreeIter *iter, gpointer data)
+{
+ PidginNotifyPounceData *pounce_data;
+
+ gtk_tree_model_get(model, iter,
+ PIDGIN_POUNCE_DATA, &pounce_data,
+ -1);
+
+ if (pounce_data != NULL)
+ g_free(pounce_data);
+}
+
+static void
+append_to_list(GtkTreeModel *model, GtkTreePath *path,
+ GtkTreeIter *iter, gpointer data)
+{
+ GList **list = data;
+ *list = g_list_prepend(*list, gtk_tree_path_copy(path));
+}
+static void
+pounce_response_dismiss()
+{
+ GtkTreeSelection *selection;
+ GList *list = NULL;
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(pounce_dialog->treeview));
+ gtk_tree_selection_selected_foreach(selection, delete_foreach, pounce_dialog);
+ gtk_tree_selection_selected_foreach(selection, append_to_list, &list);
+
+ while (list) {
+ GtkTreeIter iter;
+ if (gtk_tree_model_get_iter(GTK_TREE_MODEL(pounce_dialog->treemodel), &iter,
+ list->data)) {
+ gtk_tree_store_remove(GTK_TREE_STORE(pounce_dialog->treemodel), &iter);
+ }
+ gtk_tree_path_free(list->data);
+ list = g_list_delete_link(list, list);
+ }
+}
+
+static void
+pounce_response_edit_cb(GtkTreeModel *model, GtkTreePath *path,
+ GtkTreeIter *iter, gpointer data)
+{
+ PidginNotifyPounceData *pounce_data;
+ PidginNotifyDialog *dialog = (PidginNotifyDialog*)data;
+ PurplePounce *pounce;
+ GList *list;
+
+ list = purple_pounces_get_all();
+
+ gtk_tree_model_get(GTK_TREE_MODEL(dialog->treemodel), iter,
+ PIDGIN_POUNCE_DATA, &pounce_data,
+ -1);
+
+ for (; list != NULL; list = list->next) {
+ pounce = list->data;
+ if (pounce == pounce_data->pounce) {
+ pidgin_pounce_editor_show(pounce_data->account, NULL, pounce_data->pounce);
+ return;
+ }
+ }
+
+ purple_debug_warning("gtknotify", "Pounce was destroyed.\n");
+}
+
+static void
+pounce_response_cb(GtkDialog *dlg, gint id, PidginNotifyDialog *dialog)
+{
+ GtkTreeSelection *selection = NULL;
+
+ switch (id) {
+ case GTK_RESPONSE_CLOSE:
+ case GTK_RESPONSE_DELETE_EVENT:
+ pounce_response_close(dialog);
+ break;
+ case GTK_RESPONSE_NO:
+ pounce_response_dismiss();
+ break;
+ case GTK_RESPONSE_APPLY:
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(dialog->treeview));
+ gtk_tree_selection_selected_foreach(selection, pounce_response_edit_cb,
+ dialog);
+ break;
+ }
+}
+
+static void
+pounce_row_selected_cb(GtkTreeView *tv, GtkTreePath *path,
+ GtkTreeViewColumn *col, gpointer data)
+{
+ GtkTreeIter iter;
+ GtkTreeSelection *selection;
+ gboolean selected;
+ GList *list;
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(pounce_dialog->treeview));
+
+ selected = gtk_tree_selection_get_selected(selection,
+ NULL, &iter);
+
+ if (selected) {
+ PurplePounce *pounce;
+ PidginNotifyPounceData *pounce_data;
+
+ list = purple_pounces_get_all();
+
+ gtk_tree_model_get(GTK_TREE_MODEL(pounce_dialog->treemodel), &iter,
+ PIDGIN_POUNCE_DATA, &pounce_data,
+ -1);
+
+ gtk_widget_set_sensitive(pounce_dialog->edit_button, FALSE);
+
+ for (; list != NULL; list = list->next) {
+ pounce = list->data;
+ if (pounce == pounce_data->pounce) {
+ gtk_widget_set_sensitive(pounce_dialog->edit_button, TRUE);
+ break;
+ }
+ }
+
+ gtk_widget_set_sensitive(pounce_dialog->dismiss_button, TRUE);
+ } else {
+ gtk_widget_set_sensitive(pounce_dialog->edit_button, FALSE);
+ gtk_widget_set_sensitive(pounce_dialog->dismiss_button, FALSE);
+ }
+
+
+}
+
+static void
email_response_cb(GtkDialog *dlg, gint id, PidginMailDialog *dialog)
{
PidginNotifyMailData *data = NULL;
@@ -342,89 +527,7 @@ mail_window_focus_cb(GtkWidget *widget, GdkEventFocus *focus, gpointer null)
static GtkWidget *
pidgin_get_mail_dialog(void)
{
- if (mail_dialog == NULL) {
- GtkWidget *dialog = NULL;
- GtkWidget *label;
- GtkWidget *sw;
- GtkCellRenderer *rend;
- GtkTreeViewColumn *column;
- GtkWidget *button = NULL;
- GtkWidget *vbox = NULL;
-
- dialog = gtk_dialog_new_with_buttons(_("New Mail"), NULL, 0,
- GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,
- NULL);
- gtk_window_set_role(GTK_WINDOW(dialog), "new_mail_detailed");
- g_signal_connect(G_OBJECT(dialog), "focus-in-event",
- G_CALLBACK(mail_window_focus_cb), NULL);
-
- gtk_dialog_add_button(GTK_DIALOG(dialog),
- _("Open All Messages"), GTK_RESPONSE_ACCEPT);
-
- button = gtk_dialog_add_button(GTK_DIALOG(dialog),
- PIDGIN_STOCK_OPEN_MAIL, GTK_RESPONSE_YES);
-
- /* make "Open All Messages" the default response */
- gtk_dialog_set_default_response(GTK_DIALOG(dialog),
- GTK_RESPONSE_ACCEPT);
-
- /* Setup the dialog */
- gtk_container_set_border_width(GTK_CONTAINER(dialog), PIDGIN_HIG_BOX_SPACE);
- gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), PIDGIN_HIG_BOX_SPACE);
- gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE);
- gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog)->vbox), PIDGIN_HIG_BORDER);
-
- /* Vertical box */
- vbox = GTK_DIALOG(dialog)->vbox;
-
- /* Golden ratio it up! */
- gtk_widget_set_size_request(dialog, 550, 400);
-
- sw = gtk_scrolled_window_new(NULL, NULL);
- gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN);
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
-
- mail_dialog = g_new0(PidginMailDialog, 1);
- mail_dialog->dialog = dialog;
- mail_dialog->open_button = button;
-
- mail_dialog->treemodel = gtk_tree_store_new(COLUMNS_PIDGIN_MAIL,
- GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_POINTER);
- mail_dialog->treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(mail_dialog->treemodel));
- g_object_unref(G_OBJECT(mail_dialog->treemodel));
- gtk_tree_view_set_search_column(GTK_TREE_VIEW(mail_dialog->treeview), PIDGIN_MAIL_TEXT);
- gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(mail_dialog->treeview),
- pidgin_tree_view_search_equal_func, NULL, NULL);
-
- g_signal_connect(G_OBJECT(dialog), "response",
- G_CALLBACK(email_response_cb), mail_dialog);
- g_signal_connect(G_OBJECT(gtk_tree_view_get_selection(GTK_TREE_VIEW(mail_dialog->treeview))),
- "changed", G_CALLBACK(selection_changed_cb), mail_dialog);
- g_signal_connect(G_OBJECT(mail_dialog->treeview), "row-activated", G_CALLBACK(email_row_activated_cb), NULL);
-
- gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(mail_dialog->treeview), FALSE);
- gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(mail_dialog->treeview), TRUE);
- gtk_container_add(GTK_CONTAINER(sw), mail_dialog->treeview);
-
- column = gtk_tree_view_column_new();
- gtk_tree_view_column_set_resizable(column, TRUE);
- rend = gtk_cell_renderer_pixbuf_new();
- gtk_tree_view_column_pack_start(column, rend, FALSE);
- gtk_tree_view_column_set_attributes(column, rend, "pixbuf", PIDGIN_MAIL_ICON, NULL);
- rend = gtk_cell_renderer_text_new();
- gtk_tree_view_column_pack_start(column, rend, TRUE);
- gtk_tree_view_column_set_attributes(column, rend, "markup", PIDGIN_MAIL_TEXT, NULL);
- gtk_tree_view_append_column(GTK_TREE_VIEW(mail_dialog->treeview), column);
-
- label = gtk_label_new(NULL);
- gtk_label_set_markup(GTK_LABEL(label), _("<span weight=\"bold\" size=\"larger\">You have mail!</span>"));
- gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
- gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
- gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
- gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0);
- }
-
- return mail_dialog->dialog;
+ return pidgin_get_notification_dialog(PIDGIN_NOTIFY_MAIL);
}
/* count == 0 means this is a detailed mail notification.
@@ -1001,8 +1104,13 @@ pidgin_close_notify(PurpleNotifyType type, void *ui_handle)
{
PidginNotifyMailData *data = (PidginNotifyMailData *)ui_handle;
- g_free(data->url);
- g_free(data);
+ /* Close the notification dialog */
+ pidgin_notify_emails(purple_account_get_connection(data->account),
+ 0, FALSE, NULL, NULL, NULL, NULL);
+ if (data) {
+ g_free(data->url);
+ g_free(data);
+ }
}
else if (type == PURPLE_NOTIFY_SEARCHRESULTS)
{
@@ -1234,6 +1342,228 @@ pidgin_notify_uri(const char *uri)
return NULL;
}
+static GtkWidget *
+pidgin_get_dialog(PidginNotifyType type, GtkTreeStore *treemodel)
+{
+ GtkWidget *dialog = NULL;
+ GtkWidget *label = NULL;
+ GtkWidget *sw;
+ GtkCellRenderer *rend;
+ GtkTreeViewColumn *column;
+ GtkWidget *button = NULL;
+ GtkWidget *vbox = NULL;
+ GtkTreeSelection *sel;
+ PidginNotifyDialog *spec_dialog = NULL;
+
+ g_return_val_if_fail(type < PIDGIN_NOTIFY_TYPES, NULL);
+
+ dialog = gtk_dialog_new_with_buttons(NULL, NULL, 0,
+ GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,
+ NULL);
+
+ /* Setup the dialog */
+ gtk_container_set_border_width(GTK_CONTAINER(dialog), PIDGIN_HIG_BOX_SPACE);
+ gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), PIDGIN_HIG_BOX_SPACE);
+ gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE);
+ gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog)->vbox), PIDGIN_HIG_BORDER);
+
+ /* Vertical box */
+ vbox = GTK_DIALOG(dialog)->vbox;
+
+ /* Golden ratio it up! */
+ gtk_widget_set_size_request(dialog, 550, 400);
+
+ sw = gtk_scrolled_window_new(NULL, NULL);
+ gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
+
+ spec_dialog = g_new0(PidginNotifyDialog, 1);
+ spec_dialog->dialog = dialog;
+
+ spec_dialog->treemodel = treemodel;
+ spec_dialog->treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(spec_dialog->treemodel));
+ g_object_unref(G_OBJECT(spec_dialog->treemodel));
+
+ gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(spec_dialog->treeview), TRUE);
+ gtk_container_add(GTK_CONTAINER(sw), spec_dialog->treeview);
+
+ if (type == PIDGIN_NOTIFY_MAIL) {
+ gtk_window_set_title(GTK_WINDOW(dialog), _("New Mail"));
+ gtk_window_set_role(GTK_WINDOW(dialog), "new_mail_detailed");
+ g_signal_connect(G_OBJECT(dialog), "focus-in-event",
+ G_CALLBACK(mail_window_focus_cb), NULL);
+
+ gtk_dialog_add_button(GTK_DIALOG(dialog),
+ _("Open All Messages"), GTK_RESPONSE_ACCEPT);
+
+ button = gtk_dialog_add_button(GTK_DIALOG(dialog),
+ PIDGIN_STOCK_OPEN_MAIL, GTK_RESPONSE_YES);
+ spec_dialog->open_button = button;
+
+ gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(spec_dialog->treeview), FALSE);
+
+ gtk_tree_view_set_search_column(GTK_TREE_VIEW(spec_dialog->treeview), PIDGIN_MAIL_TEXT);
+ gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(spec_dialog->treeview),
+ pidgin_tree_view_search_equal_func, NULL, NULL);
+
+ g_signal_connect(G_OBJECT(dialog), "response",
+ G_CALLBACK(email_response_cb), spec_dialog);
+ g_signal_connect(G_OBJECT(gtk_tree_view_get_selection(GTK_TREE_VIEW(spec_dialog->treeview))),
+ "changed", G_CALLBACK(selection_changed_cb), spec_dialog);
+ g_signal_connect(G_OBJECT(spec_dialog->treeview), "row-activated", G_CALLBACK(email_row_activated_cb), NULL);
+
+ column = gtk_tree_view_column_new();
+ gtk_tree_view_column_set_resizable(column, TRUE);
+ rend = gtk_cell_renderer_pixbuf_new();
+ gtk_tree_view_column_pack_start(column, rend, FALSE);
+
+ gtk_tree_view_column_set_attributes(column, rend, "pixbuf", PIDGIN_MAIL_ICON, NULL);
+ rend = gtk_cell_renderer_text_new();
+ gtk_tree_view_column_pack_start(column, rend, TRUE);
+ gtk_tree_view_column_set_attributes(column, rend, "markup", PIDGIN_MAIL_TEXT, NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(spec_dialog->treeview), column);
+
+ label = gtk_label_new(NULL);
+ gtk_label_set_markup(GTK_LABEL(label), _("<span weight=\"bold\" size=\"larger\">You have mail!</span>"));
+
+ } else if (type == PIDGIN_NOTIFY_POUNCE) {
+ gtk_window_set_title(GTK_WINDOW(dialog), _("New Pounces"));
+
+ button = gtk_dialog_add_button(GTK_DIALOG(dialog),
+ _("Dismiss"), GTK_RESPONSE_NO);
+ gtk_widget_set_sensitive(button, FALSE);
+ spec_dialog->dismiss_button = button;
+
+ button = gtk_dialog_add_button(GTK_DIALOG(dialog),
+ PIDGIN_STOCK_EDIT, GTK_RESPONSE_APPLY);
+ gtk_widget_set_sensitive(button, FALSE);
+ spec_dialog->edit_button = button;
+
+ g_signal_connect(G_OBJECT(dialog), "response",
+ G_CALLBACK(pounce_response_cb), spec_dialog);
+
+ column = gtk_tree_view_column_new();
+ gtk_tree_view_column_set_title(column, _("Buddy"));
+ gtk_tree_view_column_set_resizable(column, TRUE);
+ rend = gtk_cell_renderer_pixbuf_new();
+ gtk_tree_view_column_pack_start(column, rend, FALSE);
+
+ gtk_tree_view_column_set_attributes(column, rend, "pixbuf", PIDGIN_POUNCE_ICON, NULL);
+ rend = gtk_cell_renderer_text_new();
+ gtk_tree_view_column_pack_start(column, rend, FALSE);
+ gtk_tree_view_column_add_attribute(column, rend, "text", PIDGIN_POUNCE_ALIAS);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(spec_dialog->treeview), column);
+
+ column = gtk_tree_view_column_new();
+ gtk_tree_view_column_set_title(column, _("Event"));
+ gtk_tree_view_column_set_resizable(column, TRUE);
+ rend = gtk_cell_renderer_text_new();
+ gtk_tree_view_column_pack_start(column, rend, FALSE);
+ gtk_tree_view_column_add_attribute(column, rend, "text", PIDGIN_POUNCE_EVENT);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(spec_dialog->treeview), column);
+
+ column = gtk_tree_view_column_new();
+ gtk_tree_view_column_set_title(column, _("Message"));
+ gtk_tree_view_column_set_resizable(column, TRUE);
+ rend = gtk_cell_renderer_text_new();
+ gtk_tree_view_column_pack_start(column, rend, FALSE);
+ gtk_tree_view_column_add_attribute(column, rend, "text", PIDGIN_POUNCE_TEXT);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(spec_dialog->treeview), column);
+
+ column = gtk_tree_view_column_new();
+ gtk_tree_view_column_set_title(column, _("Date"));
+ gtk_tree_view_column_set_resizable(column, TRUE);
+ rend = gtk_cell_renderer_text_new();
+ gtk_tree_view_column_pack_start(column, rend, FALSE);
+ gtk_tree_view_column_add_attribute(column, rend, "text", PIDGIN_POUNCE_DATE);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(spec_dialog->treeview), column);
+
+ label = gtk_label_new(NULL);
+ gtk_label_set_markup(GTK_LABEL(label), _("<span weight=\"bold\" size=\"larger\">You have pounced!</span>"));
+
+ sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(spec_dialog->treeview));
+ gtk_tree_selection_set_mode(sel, GTK_SELECTION_SINGLE);
+ g_signal_connect(G_OBJECT(sel), "changed",
+ G_CALLBACK(pounce_row_selected_cb), NULL);
+ }
+
+ gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
+ gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
+ gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 2);
+
+ if (type == PIDGIN_NOTIFY_MAIL)
+ mail_dialog = spec_dialog;
+ else if (type == PIDGIN_NOTIFY_POUNCE) {
+ pounce_dialog = spec_dialog;
+ }
+
+ return spec_dialog->dialog;
+
+}
+
+void
+pidgin_notify_pounce_add(PurpleAccount *account, PurplePounce *pounce,
+ const char *alias, const char *event, const char *message, const char *date)
+{
+ GtkWidget *dialog;
+ GdkPixbuf *icon;
+ GtkTreeIter iter;
+ PidginNotifyPounceData *pounce_data;
+
+ dialog = pidgin_get_notification_dialog(PIDGIN_NOTIFY_POUNCE);
+
+ icon = pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_SMALL);
+
+ pounce_data = g_new(PidginNotifyPounceData, 1);
+
+ pounce_data->account = account;
+ pounce_data->pounce = pounce;
+
+ gtk_tree_store_append(pounce_dialog->treemodel, &iter, NULL);
+
+ gtk_tree_store_set(pounce_dialog->treemodel, &iter,
+ PIDGIN_POUNCE_ICON, icon,
+ PIDGIN_POUNCE_ALIAS, alias,
+ PIDGIN_POUNCE_EVENT, event,
+ PIDGIN_POUNCE_TEXT, (message != NULL)? message : _("No message"),
+ PIDGIN_POUNCE_DATE, date,
+ PIDGIN_POUNCE_DATA, pounce_data,
+ -1);
+
+ if (icon)
+ g_object_unref(icon);
+
+ gtk_widget_show_all(dialog);
+
+ return;
+}
+
+static GtkWidget *
+pidgin_get_notification_dialog(PidginNotifyType type)
+{
+ GtkTreeStore *model = NULL;
+
+ if (type == PIDGIN_NOTIFY_MAIL) {
+ if (mail_dialog != NULL)
+ return mail_dialog->dialog;
+
+ model = gtk_tree_store_new(COLUMNS_PIDGIN_MAIL,
+ GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_POINTER);
+
+ } else if (type == PIDGIN_NOTIFY_POUNCE) {
+
+ if (pounce_dialog != NULL)
+ return pounce_dialog->dialog;
+
+ model = gtk_tree_store_new(PIDGIN_POUNCE_COLUMNS,
+ GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING,
+ G_TYPE_STRING, G_TYPE_POINTER);
+ }
+
+ return pidgin_get_dialog(type, model);
+}
+
static PurpleNotifyUiOps ops =
{
pidgin_notify_message,
diff --git a/pidgin/gtknotify.h b/pidgin/gtknotify.h
index d134d9957b..7fa7996263 100644
--- a/pidgin/gtknotify.h
+++ b/pidgin/gtknotify.h
@@ -27,6 +27,20 @@
#define _PIDGINNOTIFY_H_
#include "notify.h"
+#include "pounce.h"
+
+/**
+ * Adds a buddy pounce to the buddy pounce dialog
+ *
+ * @param account The account
+ * @param pounce The pounce
+ * @param alias The buddy alias
+ * @param event Event description
+ * @param message Pounce message
+ * @param date Pounce date
+ */
+void pidgin_notify_pounce_add(PurpleAccount *account, PurplePounce *pounce,
+ const char *alias, const char *event, const char *message, const char *date);
/**
* Returns the UI operations structure for GTK+ notification functions.
diff --git a/pidgin/gtkplugin.c b/pidgin/gtkplugin.c
index fe2d3e9bde..68be3f7e6d 100644
--- a/pidgin/gtkplugin.c
+++ b/pidgin/gtkplugin.c
@@ -135,7 +135,13 @@ update_plugin_list(void *data)
gtk_list_store_append (ls, &iter);
- name = g_markup_escape_text(plug->info->name ? _(plug->info->name) : g_basename(plug->path), -1);
+ if (plug->info->name) {
+ name = g_markup_escape_text(_(plug->info->name), -1);
+ } else {
+ char *tmp = g_path_get_basename(plug->path);
+ name = g_markup_escape_text(tmp, -1);
+ g_free(tmp);
+ }
version = g_markup_escape_text(purple_plugin_get_version(plug), -1);
summary = g_markup_escape_text(purple_plugin_get_summary(plug), -1);
diff --git a/pidgin/gtkpluginpref.c b/pidgin/gtkpluginpref.c
index cc353de990..024575a034 100644
--- a/pidgin/gtkpluginpref.c
+++ b/pidgin/gtkpluginpref.c
@@ -93,7 +93,7 @@ make_string_pref(GtkWidget *parent, PurplePluginPref *pref, GtkSizeGroup *sg) {
case PURPLE_PLUGIN_PREF_NONE:
default:
if (format == PURPLE_STRING_FORMAT_TYPE_NONE)
- {
+ {
entry = gtk_entry_new();
gtk_entry_set_text(GTK_ENTRY(entry), purple_prefs_get_string(pref_name));
gtk_entry_set_max_length(GTK_ENTRY(entry),
diff --git a/pidgin/gtkpounce.c b/pidgin/gtkpounce.c
index 51c497a850..e2ee53335c 100644
--- a/pidgin/gtkpounce.c
+++ b/pidgin/gtkpounce.c
@@ -30,7 +30,6 @@
#include "account.h"
#include "conversation.h"
#include "debug.h"
-#include "notify.h"
#include "prpl.h"
#include "request.h"
#include "server.h"
@@ -41,6 +40,7 @@
#include "gtkdialogs.h"
#include "gtkimhtml.h"
#include "gtkpounce.h"
+#include "gtknotify.h"
#include "pidginstock.h"
#include "gtkutils.h"
@@ -535,7 +535,7 @@ pidgin_pounce_editor_show(PurpleAccount *account, const char *name,
/* Create the window. */
dialog->window = window = gtk_dialog_new();
- gtk_window_set_title(GTK_WINDOW(window), (cur_pounce == NULL ? _("New Buddy Pounce") : _("Edit Buddy Pounce")));
+ gtk_window_set_title(GTK_WINDOW(window), (cur_pounce == NULL ? _("Add Buddy Pounce") : _("Modify Buddy Pounce")));
gtk_window_set_role(GTK_WINDOW(window), "buddy_pounce");
gtk_container_set_border_width(GTK_CONTAINER(dialog->window), PIDGIN_HIG_BORDER);
@@ -637,19 +637,19 @@ pidgin_pounce_editor_show(PurpleAccount *account, const char *name,
GTK_FILL, 0, 0, 0);
gtk_table_attach(GTK_TABLE(table), dialog->signoff, 0, 1, 2, 3,
GTK_FILL, 0, 0, 0);
- gtk_table_attach(GTK_TABLE(table), dialog->away, 0, 1, 3, 4,
+ gtk_table_attach(GTK_TABLE(table), dialog->away, 1, 2, 0, 1,
GTK_FILL, 0, 0, 0);
- gtk_table_attach(GTK_TABLE(table), dialog->away_return, 0, 1, 4, 5,
+ gtk_table_attach(GTK_TABLE(table), dialog->away_return, 1, 2, 1, 2,
GTK_FILL, 0, 0, 0);
- gtk_table_attach(GTK_TABLE(table), dialog->idle, 1, 2, 0, 1,
+ gtk_table_attach(GTK_TABLE(table), dialog->idle, 1, 2, 2, 3,
GTK_FILL, 0, 0, 0);
- gtk_table_attach(GTK_TABLE(table), dialog->idle_return, 1, 2, 1, 2,
+ gtk_table_attach(GTK_TABLE(table), dialog->idle_return, 2, 3, 0, 1,
GTK_FILL, 0, 0, 0);
- gtk_table_attach(GTK_TABLE(table), dialog->typing, 1, 2, 2, 3,
+ gtk_table_attach(GTK_TABLE(table), dialog->typing, 2, 3, 1, 2,
GTK_FILL, 0, 0, 0);
- gtk_table_attach(GTK_TABLE(table), dialog->typed, 1, 2, 3, 4,
+ gtk_table_attach(GTK_TABLE(table), dialog->typed, 2, 3, 2, 3,
GTK_FILL, 0, 0, 0);
- gtk_table_attach(GTK_TABLE(table), dialog->stop_typing, 1, 2, 4, 5,
+ gtk_table_attach(GTK_TABLE(table), dialog->stop_typing, 3, 4, 0, 1,
GTK_FILL, 0, 0, 0);
gtk_widget_show(dialog->signon);
@@ -1275,7 +1275,6 @@ create_pounces_list(PouncesManager *dialog)
/* Handle double-clicking */
g_signal_connect(G_OBJECT(treeview), "button_press_event",
G_CALLBACK(pounce_double_click_cb), dialog);
-
gtk_container_add(GTK_CONTAINER(sw), treeview);
gtk_widget_show(treeview);
@@ -1458,27 +1457,27 @@ pounce_cb(PurplePounce *pounce, PurplePounceEvent events, void *data)
*/
tmp = g_strdup_printf(
(events & PURPLE_POUNCE_TYPING) ?
- _("%s has started typing to you (%s)") :
+ _("Started typing") :
(events & PURPLE_POUNCE_TYPED) ?
- _("%s has paused while typing to you (%s)") :
+ _("Paused while typing") :
(events & PURPLE_POUNCE_SIGNON) ?
- _("%s has signed on (%s)") :
+ _("Signed on") :
(events & PURPLE_POUNCE_IDLE_RETURN) ?
- _("%s has returned from being idle (%s)") :
+ _("Returned from being idle") :
(events & PURPLE_POUNCE_AWAY_RETURN) ?
- _("%s has returned from being away (%s)") :
+ _("Returned from being away") :
(events & PURPLE_POUNCE_TYPING_STOPPED) ?
- _("%s has stopped typing to you (%s)") :
+ _("Stopped typing") :
(events & PURPLE_POUNCE_SIGNOFF) ?
- _("%s has signed off (%s)") :
+ _("Signed off") :
(events & PURPLE_POUNCE_IDLE) ?
- _("%s has become idle (%s)") :
+ _("Became idle") :
(events & PURPLE_POUNCE_AWAY) ?
- _("%s has gone away. (%s)") :
+ _("Went away") :
(events & PURPLE_POUNCE_MESSAGE_RECEIVED) ?
- _("%s has sent you a message. (%s)") :
- _("Unknown pounce event. Please report this!"),
- alias, purple_account_get_protocol_name(account));
+ _("Sent a message") :
+ _("Unknown.... Please report this!")
+ );
/*
* Ok here is where I change the second argument, title, from
@@ -1488,16 +1487,9 @@ pounce_cb(PurplePounce *pounce, PurplePounceEvent events, void *data)
if ((name_shown = purple_account_get_alias(account)) == NULL)
name_shown = purple_account_get_username(account);
- if (reason == NULL)
- {
- purple_notify_info(NULL, name_shown, tmp, purple_date_format_full(NULL));
- }
- else
- {
- char *tmp2 = g_strdup_printf("%s\n\n%s", reason, purple_date_format_full(NULL));
- purple_notify_info(NULL, name_shown, tmp, tmp2);
- g_free(tmp2);
- }
+ pidgin_notify_pounce_add(account, pounce, alias, tmp, reason,
+ purple_date_format_full(NULL));
+
g_free(tmp);
}
diff --git a/pidgin/gtkpounce.h b/pidgin/gtkpounce.h
index 7d62a22030..ce5bbc6505 100644
--- a/pidgin/gtkpounce.h
+++ b/pidgin/gtkpounce.h
@@ -8,7 +8,7 @@
* Pidgin is the legal property of its developers, whose names are too numerous
* to list here. Please refer to the COPYRIGHT file distributed with this
* source distribution.
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
diff --git a/pidgin/gtkprefs.c b/pidgin/gtkprefs.c
index bf827ffaa0..2a96927aaa 100644
--- a/pidgin/gtkprefs.c
+++ b/pidgin/gtkprefs.c
@@ -35,6 +35,8 @@
#include "request.h"
#include "savedstatuses.h"
#include "sound.h"
+#include "sound-theme.h"
+#include "theme-manager.h"
#include "util.h"
#include "network.h"
@@ -47,6 +49,7 @@
#include "gtkprefs.h"
#include "gtksavedstatuses.h"
#include "gtksound.h"
+#include "gtkstatus-icon-theme.h"
#include "gtkthemes.h"
#include "gtkutils.h"
#include "pidginstock.h"
@@ -56,6 +59,8 @@
#define PROXYUSER 2
#define PROXYPASS 3
+#define PREFS_OPTIMAL_ICON_SIZE 32
+
static int sound_row_sel = 0;
static GtkWidget *prefsnotebook;
@@ -69,6 +74,12 @@ static GtkWidget *debugbutton = NULL;
static int notebook_page = 0;
static GtkTreeRowReference *previous_smiley_row = NULL;
+static gboolean prefs_themes_unsorted = TRUE;
+static GtkListStore *prefs_sound_themes;
+static GtkListStore *prefs_blist_themes;
+static GtkListStore *prefs_status_icon_themes;
+
+
/*
* PROTOTYPES
*/
@@ -134,6 +145,26 @@ pidgin_prefs_labeled_entry(GtkWidget *page, const gchar *title,
return pidgin_add_widget_to_vbox(GTK_BOX(page), title, sg, entry, TRUE, NULL);
}
+GtkWidget *
+pidgin_prefs_labeled_password(GtkWidget *page, const gchar *title,
+ const char *key, GtkSizeGroup *sg)
+{
+ GtkWidget *entry;
+ const gchar *value;
+
+ value = purple_prefs_get_string(key);
+
+ entry = gtk_entry_new();
+ gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE);
+ gtk_entry_set_text(GTK_ENTRY(entry), value);
+ g_signal_connect(G_OBJECT(entry), "changed",
+ G_CALLBACK(entry_set), (char*)key);
+ gtk_widget_show(entry);
+
+ return pidgin_add_widget_to_vbox(GTK_BOX(page), title, sg, entry, TRUE, NULL);
+}
+
+
static void
dropdown_set(GObject *w, const char *key)
{
@@ -546,6 +577,212 @@ theme_dnd_recv(GtkWidget *widget, GdkDragContext *dc, guint x, guint y,
gtk_drag_finish(dc, FALSE, FALSE, t);
}
+/* Rebuild the markup for the sound theme selection for "(Custom)" themes */
+static void
+pref_sound_generate_markup()
+{
+ gboolean print_custom, customized;
+ const gchar *name, *author, *description, *current_theme;
+ gchar *markup;
+ PurpleSoundTheme *theme;
+ GtkTreeIter iter;
+
+ customized = pidgin_sound_is_customized();
+ current_theme = purple_prefs_get_string(PIDGIN_PREFS_ROOT "/sound/theme");
+
+ if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(prefs_sound_themes), &iter)) {
+ do {
+ gtk_tree_model_get(GTK_TREE_MODEL(prefs_sound_themes), &iter, 2, &name, -1);
+
+ print_custom = customized && g_str_equal(current_theme, name);
+
+ if (g_str_equal(name, ""))
+ markup = g_strdup_printf("<b>(Default)</b>%s%s - None\n<span foreground='dim grey'>The default Pidgin sound theme</span>",
+ print_custom ? " " : "", print_custom ? "(Custom)" : "");
+ else {
+ theme = PURPLE_SOUND_THEME(purple_theme_manager_find_theme(name, "sound"));
+ author = purple_theme_get_author(PURPLE_THEME(theme));
+ description = purple_theme_get_description(PURPLE_THEME(theme));
+
+ markup = g_strdup_printf("<b>%s</b>%s%s%s%s\n<span foreground='dim grey'>%s</span>",
+ name, print_custom ? " " : "", print_custom ? "(Custom)" : "",
+ author != NULL ? " - " : "", author != NULL ? author : "", description != NULL ? description : "");
+ }
+
+ gtk_list_store_set(prefs_sound_themes, &iter, 1, markup, -1);
+
+ g_free(markup);
+
+ } while (gtk_tree_model_iter_next(GTK_TREE_MODEL(prefs_sound_themes), &iter));
+ }
+}
+
+/* adds the themes to the theme list from the manager so they can be sisplayed in prefs */
+static void
+prefs_themes_sort(PurpleTheme *theme)
+{
+ GdkPixbuf *pixbuf = NULL;
+ GtkTreeIter iter;
+ gchar *image_full = NULL, *markup;
+ const gchar *name, *author, *description;
+
+ if (PURPLE_IS_SOUND_THEME(theme)){
+
+ image_full = purple_theme_get_image_full(theme);
+ if (image_full != NULL){
+ pixbuf = gdk_pixbuf_new_from_file_at_scale(image_full, PREFS_OPTIMAL_ICON_SIZE, PREFS_OPTIMAL_ICON_SIZE, TRUE, NULL);
+ g_free(image_full);
+ } else pixbuf = NULL;
+
+ gtk_list_store_append(prefs_sound_themes, &iter);
+ gtk_list_store_set(prefs_sound_themes, &iter, 0, pixbuf, 2, purple_theme_get_name(theme), -1);
+
+ if (pixbuf != NULL)
+ g_object_unref(G_OBJECT(pixbuf));
+
+ } else if (PIDGIN_IS_BLIST_THEME(theme) || PIDGIN_IS_STATUS_ICON_THEME(theme)){
+ GtkListStore *store;
+
+ if (PIDGIN_IS_BLIST_THEME(theme))
+ store = prefs_blist_themes;
+ else store = prefs_status_icon_themes;
+
+ image_full = purple_theme_get_image_full(theme);
+ if (image_full != NULL){
+ pixbuf = gdk_pixbuf_new_from_file_at_scale(image_full, PREFS_OPTIMAL_ICON_SIZE, PREFS_OPTIMAL_ICON_SIZE, TRUE, NULL);
+ g_free(image_full);
+ } else pixbuf = NULL;
+
+ name = purple_theme_get_name(theme);
+ author = purple_theme_get_author(theme);
+ description = purple_theme_get_description(theme);
+
+ markup = g_strdup_printf("<b>%s</b>%s%s\n<span foreground='dim grey'>%s</span>", name, author != NULL ? " - " : "",
+ author != NULL ? author : "", description != NULL ? description : "");
+
+ gtk_list_store_append(store, &iter);
+ gtk_list_store_set(store, &iter, 0, pixbuf, 1, markup, 2, name, -1);
+
+ g_free(markup);
+ if (pixbuf != NULL)
+ g_object_unref(G_OBJECT(pixbuf));
+ }
+
+}
+
+/* init all the theme variables so that the themes can be sorted later and used by pref pages */
+static void
+prefs_themes_init()
+{
+ GdkPixbuf *pixbuf = NULL;
+ gchar *filename;
+ GtkTreeIter iter;
+
+ filename = g_build_filename(DATADIR, "icons", "hicolor", "32x32", "apps", "pidgin.png", NULL);
+ pixbuf = gdk_pixbuf_new_from_file_at_scale(filename, PREFS_OPTIMAL_ICON_SIZE, PREFS_OPTIMAL_ICON_SIZE, TRUE, NULL);
+ g_free(filename);
+
+ /* sound themes */
+ prefs_sound_themes = gtk_list_store_new(3, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING);
+
+ gtk_list_store_append(prefs_sound_themes, &iter);
+ gtk_list_store_set(prefs_sound_themes, &iter, 0, pixbuf, 2, "", -1);
+
+ /* blist themes */
+ prefs_blist_themes = gtk_list_store_new(3, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING);
+
+ gtk_list_store_append(prefs_blist_themes, &iter);
+ gtk_list_store_set(prefs_blist_themes, &iter, 0, pixbuf, 1, "<b>(Default)</b> - None\n<span color='dim grey'>"
+ "The default Pidgin buddy list theme</span>", 2, "", -1);
+
+ /* status icon themes */
+ prefs_status_icon_themes = gtk_list_store_new(3, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING);
+
+ gtk_list_store_append(prefs_status_icon_themes, &iter);
+ gtk_list_store_set(prefs_status_icon_themes, &iter, 0, pixbuf, 1, "<b>(Default)</b> - None\n<span color='dim grey'>"
+ "The default Pidgin status icon theme</span>", 2, "", -1);
+
+ g_object_unref(G_OBJECT(pixbuf));
+}
+
+/* builds a theme combo box from a list store with colums: icon preview, markup, theme name */
+static GtkWidget *
+prefs_build_theme_combo_box(GtkListStore *store, const gchar *current_theme)
+{
+ GtkWidget *combo_box;
+ GtkCellRenderer *cell_rend;
+ GtkTreeIter iter;
+ gchar *theme = NULL;
+ gboolean unset = TRUE;
+
+ g_return_val_if_fail(store != NULL && current_theme != NULL, NULL);
+
+ combo_box = gtk_combo_box_new_with_model(GTK_TREE_MODEL(store));
+
+ cell_rend = gtk_cell_renderer_pixbuf_new();
+ gtk_cell_renderer_set_fixed_size(cell_rend, PREFS_OPTIMAL_ICON_SIZE, PREFS_OPTIMAL_ICON_SIZE);
+ gtk_cell_layout_pack_start(GTK_CELL_LAYOUT (combo_box), cell_rend, FALSE);
+ gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combo_box), cell_rend, "pixbuf", 0, NULL);
+
+ cell_rend = gtk_cell_renderer_text_new();
+ gtk_cell_layout_pack_start(GTK_CELL_LAYOUT (combo_box), cell_rend, FALSE);
+ gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combo_box), cell_rend, "markup", 1, NULL);
+/*#if GTK_CHECK_VERSION(2,6,0)
+ g_object_set(cell_rend, "ellipsize", PANGO_ELLIPSIZE_END, NULL);
+#endif*/
+
+ if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(store), &iter)) {
+ do {
+ gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, 2, &theme, -1);
+
+ if (g_str_equal(current_theme, theme)) {
+ gtk_combo_box_set_active_iter(GTK_COMBO_BOX(combo_box), &iter);
+ unset = FALSE;
+ }
+
+ g_free(theme);
+ } while (gtk_tree_model_iter_next(GTK_TREE_MODEL(store), &iter));
+ }
+
+ if (unset)
+ gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box), 0);
+
+ return combo_box;
+}
+
+/* sets the current sound theme */
+static void
+prefs_set_sound_theme_cb(GtkComboBox *combo_box, gpointer user_data)
+{
+ gint i;
+ gchar *pref;
+ gchar *new_theme;
+ gboolean success;
+ GtkTreeIter new_iter;
+
+ success = gtk_combo_box_get_active_iter(combo_box, &new_iter);
+ g_return_if_fail(success);
+
+ gtk_tree_model_get(GTK_TREE_MODEL(prefs_sound_themes), &new_iter, 2, &new_theme, -1);
+
+ purple_prefs_set_string(PIDGIN_PREFS_ROOT "/sound/theme", new_theme);
+
+ /* New theme removes all customization */
+ for(i=0; i < PURPLE_NUM_SOUNDS; i++){
+ pref = g_strdup_printf(PIDGIN_PREFS_ROOT "/sound/file/%s",
+ pidgin_sound_get_event_option(i));
+ purple_prefs_set_path(pref, "");
+ g_free(pref);
+ }
+
+ /* gets rid of the "(Custom)" from the last selection */
+ pref_sound_generate_markup();
+
+ gtk_entry_set_text(GTK_ENTRY(sound_entry), _("(default)"));
+
+ g_free(new_theme);
+}
+
/* Does same as normal sort, except "none" is sorted first */
static gint pidgin_sort_smileys (GtkTreeModel *model,
GtkTreeIter *a,
@@ -922,6 +1159,41 @@ keyboard_shortcuts(GtkWidget *page)
gtk_box_pack_start(GTK_BOX(vbox), checkbox, FALSE, FALSE, 0);
}
+/* sets the current buddy list theme */
+static void
+prefs_set_blist_theme_cb(GtkComboBox *combo_box, gpointer user_data)
+{
+ PidginBlistTheme *theme = NULL;
+ GtkTreeIter iter;
+ gchar *name = NULL;
+
+ g_return_if_fail(gtk_combo_box_get_active_iter(combo_box, &iter));
+ gtk_tree_model_get(GTK_TREE_MODEL(prefs_blist_themes), &iter, 2, &name, -1);
+
+ if (name && *name)
+ theme = PIDGIN_BLIST_THEME(purple_theme_manager_find_theme(name, "blist"));
+ g_free(name);
+
+ pidgin_blist_set_theme(theme);
+}
+
+/* sets the current icon theme */
+static void
+prefs_set_status_icon_theme_cb(GtkComboBox *combo_box, gpointer user_data)
+{
+ PidginStatusIconTheme *theme;
+ GtkTreeIter iter;
+ gchar *name = NULL;
+
+ g_return_if_fail(gtk_combo_box_get_active_iter(combo_box, &iter));
+ gtk_tree_model_get(GTK_TREE_MODEL(prefs_status_icon_themes), &iter, 2, &name, -1);
+
+ theme = PIDGIN_STATUS_ICON_THEME(purple_theme_manager_find_theme(name, "status-icon"));
+ g_free(name);
+
+ pidgin_stock_load_status_icon_theme(theme);
+}
+
static GtkWidget *
interface_page(void)
{
@@ -929,6 +1201,7 @@ interface_page(void)
GtkWidget *vbox;
GtkWidget *vbox2;
GtkWidget *label;
+ GtkWidget *combo_box;
GtkSizeGroup *sg;
GList *names = NULL;
@@ -937,6 +1210,19 @@ interface_page(void)
sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
+ /* Buddy List Themes */
+ vbox = pidgin_make_frame(ret, _("Buddy List Theme"));
+
+ combo_box = prefs_build_theme_combo_box(prefs_blist_themes, purple_prefs_get_string(PIDGIN_PREFS_ROOT "/blist/theme"));
+ gtk_box_pack_start(GTK_BOX (vbox), combo_box, FALSE, FALSE, 0);
+ g_signal_connect(G_OBJECT(combo_box), "changed", (GCallback)prefs_set_blist_theme_cb, NULL);
+
+ /* Status Icon Themes */
+ combo_box = prefs_build_theme_combo_box(prefs_status_icon_themes, purple_prefs_get_string(PIDGIN_PREFS_ROOT "/status/icon-theme"));
+ gtk_box_pack_start(GTK_BOX (vbox), combo_box, FALSE, FALSE, 0);
+ g_signal_connect(G_OBJECT(combo_box), "changed", (GCallback)prefs_set_status_icon_theme_cb, NULL);
+
+ /* System Tray */
vbox = pidgin_make_frame(ret, _("System Tray Icon"));
label = pidgin_prefs_dropdown(vbox, _("_Show system tray icon:"), PURPLE_PREF_STRING,
PIDGIN_PREFS_ROOT "/docklet/show",
@@ -1141,6 +1427,28 @@ static void network_ip_changed(GtkEntry *entry, gpointer data)
purple_network_set_public_ip(gtk_entry_get_text(entry));
}
+static gboolean network_stun_server_changed_cb(GtkWidget *widget,
+ GdkEventFocus *event, gpointer data)
+{
+ GtkEntry *entry = GTK_ENTRY(widget);
+ purple_prefs_set_string("/purple/network/stun_server",
+ gtk_entry_get_text(entry));
+ purple_network_set_stun_server(gtk_entry_get_text(entry));
+
+ return FALSE;
+}
+
+static gboolean network_turn_server_changed_cb(GtkWidget *widget,
+ GdkEventFocus *event, gpointer data)
+{
+ GtkEntry *entry = GTK_ENTRY(widget);
+ purple_prefs_set_string("/purple/network/turn_server",
+ gtk_entry_get_text(entry));
+ purple_network_set_turn_server(gtk_entry_get_text(entry));
+
+ return FALSE;
+}
+
static void
proxy_changed_cb(const char *name, PurplePrefType type,
gconstpointer value, gpointer data)
@@ -1206,8 +1514,16 @@ network_page(void)
vbox = pidgin_make_frame (ret, _("IP Address"));
sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
- pidgin_prefs_labeled_entry(vbox,_("ST_UN server:"),
- "/purple/network/stun_server", sg);
+
+ entry = gtk_entry_new();
+ gtk_entry_set_text(GTK_ENTRY(entry), purple_prefs_get_string(
+ "/purple/network/stun_server"));
+ g_signal_connect(G_OBJECT(entry), "focus-out-event",
+ G_CALLBACK(network_stun_server_changed_cb), NULL);
+ gtk_widget_show(entry);
+
+ pidgin_add_widget_to_vbox(GTK_BOX(vbox), "ST_UN server:",
+ sg, entry, TRUE, NULL);
hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
gtk_container_add(GTK_CONTAINER(vbox), hbox);
@@ -1285,6 +1601,29 @@ network_page(void)
g_signal_connect(G_OBJECT(ports_checkbox), "clicked",
G_CALLBACK(pidgin_toggle_sensitive), spin_button);
+ g_object_unref(sg);
+
+ /* TURN server */
+ vbox = pidgin_make_frame(ret, _("Relay Server (TURN)"));
+ sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
+
+ entry = gtk_entry_new();
+ gtk_entry_set_text(GTK_ENTRY(entry), purple_prefs_get_string(
+ "/purple/network/turn_server"));
+ g_signal_connect(G_OBJECT(entry), "focus-out-event",
+ G_CALLBACK(network_turn_server_changed_cb), NULL);
+ gtk_widget_show(entry);
+
+ hbox = pidgin_add_widget_to_vbox(GTK_BOX(vbox), "_TURN server:",
+ sg, entry, TRUE, NULL);
+
+ pidgin_prefs_labeled_spin_button(hbox, _("_Port:"),
+ "/purple/network/turn_port", 0, 65535, NULL);
+ hbox = pidgin_prefs_labeled_entry(vbox, "_Username:",
+ "/purple/network/turn_username", sg);
+ pidgin_prefs_labeled_password(hbox, "_Password:",
+ "/purple/network/turn_password", NULL);
+
if (purple_running_gnome()) {
vbox = pidgin_make_frame(ret, _("Proxy Server &amp; Browser"));
prefs_proxy_frame = gtk_vbox_new(FALSE, 0);
@@ -1742,6 +2081,8 @@ reset_sound(GtkWidget *button, gpointer i_am_also_NULL)
g_free(pref);
gtk_entry_set_text(GTK_ENTRY(sound_entry), _("(default)"));
+
+ pref_sound_generate_markup();
}
static void
@@ -1764,6 +2105,8 @@ sound_chosen_cb(void *user_data, const char *filename)
*/
if (sound == sound_row_sel)
gtk_entry_set_text(GTK_ENTRY(sound_entry), filename);
+
+ pref_sound_generate_markup();
}
static void select_sound(GtkWidget *button, gpointer being_NULL_is_fun)
@@ -1832,6 +2175,8 @@ static void prefs_sound_sel(GtkTreeSelection *sel, GtkTreeModel *model) {
if (sound_entry)
gtk_entry_set_text(GTK_ENTRY(sound_entry), (file && *file != '\0') ? file : _("(default)"));
g_value_unset (&val);
+
+ pref_sound_generate_markup();
}
@@ -1857,7 +2202,7 @@ static GtkWidget *
sound_page(void)
{
GtkWidget *ret;
- GtkWidget *vbox, *sw, *button;
+ GtkWidget *vbox, *sw, *button, *combo_box;
GtkSizeGroup *sg;
GtkTreeIter iter;
GtkWidget *event_view;
@@ -1951,7 +2296,6 @@ sound_page(void)
purple_prefs_connect_callback(prefs, PIDGIN_PREFS_ROOT "/sound/method",
sound_changed2_cb, vbox);
#endif
-
vbox = pidgin_make_frame(ret, _("Sound Events"));
/* The following is an ugly hack to make the frame expand so the
@@ -1963,6 +2307,14 @@ sound_page(void)
gtk_box_set_child_packing(GTK_BOX(vbox->parent->parent->parent),
vbox->parent->parent, TRUE, TRUE, 0, GTK_PACK_START);
+ /* SOUND THEMES */
+ combo_box = prefs_build_theme_combo_box(prefs_sound_themes, purple_prefs_get_string(PIDGIN_PREFS_ROOT "/sound/theme"));
+ pref_sound_generate_markup();
+ gtk_box_pack_start(GTK_BOX (vbox), combo_box, FALSE, FALSE, 0);
+
+ g_signal_connect(G_OBJECT(combo_box), "changed", (GCallback)prefs_set_sound_theme_cb, NULL);
+
+ /* SOUND SELECTION */
sw = gtk_scrolled_window_new(NULL,NULL);
gtk_widget_set_size_request(sw, -1, 100);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
@@ -2107,14 +2459,12 @@ away_page(void)
/* Auto-away stuff */
vbox = pidgin_make_frame(ret, _("Auto-away"));
- button = pidgin_prefs_checkbox(_("Change status when _idle"),
- "/purple/away/away_when_idle", vbox);
-
select = pidgin_prefs_labeled_spin_button(vbox,
_("_Minutes before becoming idle:"), "/purple/away/mins_before_away",
1, 24 * 60, sg);
- g_signal_connect(G_OBJECT(button), "clicked",
- G_CALLBACK(pidgin_toggle_sensitive), select);
+
+ button = pidgin_prefs_checkbox(_("Change status when _idle"),
+ "/purple/away/away_when_idle", vbox);
/* TODO: Show something useful if we don't have any saved statuses. */
menu = pidgin_status_menu(purple_savedstatus_get_idleaway(), G_CALLBACK(set_idle_away));
@@ -2126,7 +2476,6 @@ away_page(void)
if (!purple_prefs_get_bool("/purple/away/away_when_idle")) {
gtk_widget_set_sensitive(GTK_WIDGET(menu), FALSE);
- gtk_widget_set_sensitive(GTK_WIDGET(select), FALSE);
gtk_widget_set_sensitive(GTK_WIDGET(label), FALSE);
}
@@ -2196,6 +2545,14 @@ void pidgin_prefs_show(void)
return;
}
+ /* Refresh the list of themes before showing the preferences window */
+ purple_theme_manager_refresh();
+
+ /* add everything in the theme manager before the window is loaded */
+ if (prefs_themes_unsorted) {
+ purple_theme_manager_for_each_theme(prefs_themes_sort);
+ prefs_themes_unsorted = FALSE;
+ }
/* copy the preferences to tmp values...
* I liked "take affect immediately" Oh well :-( */
/* (that should have been "effect," right?) */
@@ -2290,6 +2647,9 @@ pidgin_prefs_init(void)
purple_prefs_add_path(PIDGIN_PREFS_ROOT "/filelocations/last_open_folder", "");
purple_prefs_add_path(PIDGIN_PREFS_ROOT "/filelocations/last_icon_folder", "");
+ /* Themes */
+ prefs_themes_init();
+
/* Smiley Themes */
purple_prefs_add_none(PIDGIN_PREFS_ROOT "/smileys");
purple_prefs_add_string(PIDGIN_PREFS_ROOT "/smileys/theme", "Default");
diff --git a/pidgin/gtkprefs.h b/pidgin/gtkprefs.h
index e2baefc397..d07c968b8a 100644
--- a/pidgin/gtkprefs.h
+++ b/pidgin/gtkprefs.h
@@ -59,7 +59,7 @@ GtkWidget *pidgin_prefs_checkbox(const char *title, const char *key,
* @param max The maximum value of the spin button
* @param sg If not NULL, the size group to which the spin button will be added
* @return An hbox containing both the label and the spinner. Can be
- * used to set the widgets to sensitive or insensitive based on the
+ * used to set the widgets to sensitive or insensitive based on the
* value of a checkbox.
*/
GtkWidget *pidgin_prefs_labeled_spin_button(GtkWidget *page,
@@ -81,6 +81,24 @@ GtkWidget *pidgin_prefs_labeled_entry(GtkWidget *page, const gchar *title,
const char *key, GtkSizeGroup *sg);
/**
+ * Add a new entry representing a password (string) preference
+ * The entry will use a password-style text entry (the text is substituded)
+ *
+ * @param page The page to which the entry will be added
+ * @param title The text to be displayed as the entry label
+ * @param key The key of the string pref that will be represented by the entry
+ * @param sg If not NULL, the size group to which the entry will be added
+ *
+ * @return An hbox containing both the label and the entry. Can be used to set
+ * the widgets to sensitive or insensitive based on the value of a
+ * checkbox.
+ *
+ * @since 2.6.0
+ */
+GtkWidget *pidgin_prefs_labeled_password(GtkWidget *page, const gchar *title,
+ const char *key, GtkSizeGroup *sg);
+
+/**
* Add a new dropdown representing a preference of the specified type
*
* @param page The page to which the dropdown will be added
diff --git a/pidgin/gtkrequest.c b/pidgin/gtkrequest.c
index 81f1ba0f71..7fc4b97a04 100644
--- a/pidgin/gtkrequest.c
+++ b/pidgin/gtkrequest.c
@@ -384,6 +384,8 @@ pidgin_request_input(const char *title, const char *primary,
gtk_imhtml_append_text(GTK_IMHTML(entry), default_value, GTK_IMHTML_NO_SCROLL);
gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0);
gtk_widget_show(frame);
+
+ gtk_imhtml_set_return_inserts_newline(GTK_IMHTML(entry));
}
else {
if (multiline) {
@@ -682,15 +684,17 @@ pidgin_request_action(const char *title, const char *primary,
static void
req_entry_field_changed_cb(GtkWidget *entry, PurpleRequestField *field)
{
+ PurpleRequestFieldGroup *group;
PidginRequestData *req_data;
const char *text = gtk_entry_get_text(GTK_ENTRY(entry));
purple_request_field_string_set_value(field, (*text == '\0' ? NULL : text));
- req_data = (PidginRequestData *)field->group->fields_list->ui_data;
+ group = purple_request_field_get_group(field);
+ req_data = (PidginRequestData *)group->fields_list->ui_data;
gtk_widget_set_sensitive(req_data->ok_button,
- purple_request_fields_all_required_filled(field->group->fields_list));
+ purple_request_fields_all_required_filled(group->fields_list));
}
static void
@@ -711,7 +715,8 @@ setup_entry_field(GtkWidget *entry, PurpleRequestField *field)
if (purple_str_has_prefix(type_hint, "screenname"))
{
GtkWidget *optmenu = NULL;
- GList *fields = field->group->fields;
+ PurpleRequestFieldGroup *group = purple_request_field_get_group(field);
+ GList *fields = group->fields;
while (fields)
{
PurpleRequestField *fld = fields->data;
@@ -722,9 +727,11 @@ setup_entry_field(GtkWidget *entry, PurpleRequestField *field)
const char *type_hint = purple_request_field_get_type_hint(fld);
if (type_hint != NULL && strcmp(type_hint, "account") == 0)
{
- if (fld->ui_data == NULL)
- fld->ui_data = create_account_field(fld);
- optmenu = GTK_WIDGET(fld->ui_data);
+ optmenu = GTK_WIDGET(purple_request_field_get_ui_data(fld));
+ if (optmenu == NULL) {
+ optmenu = GTK_WIDGET(create_account_field(fld));
+ purple_request_field_set_ui_data(field, optmenu);
+ }
break;
}
}
@@ -1338,24 +1345,26 @@ pidgin_request_fields(const char *title, const char *primary,
gtk_widget_show(label);
}
- if (field->ui_data != NULL)
- widget = GTK_WIDGET(field->ui_data);
- else if (type == PURPLE_REQUEST_FIELD_STRING)
- widget = create_string_field(field);
- else if (type == PURPLE_REQUEST_FIELD_INTEGER)
- widget = create_int_field(field);
- else if (type == PURPLE_REQUEST_FIELD_BOOLEAN)
- widget = create_bool_field(field);
- else if (type == PURPLE_REQUEST_FIELD_CHOICE)
- widget = create_choice_field(field);
- else if (type == PURPLE_REQUEST_FIELD_LIST)
- widget = create_list_field(field);
- else if (type == PURPLE_REQUEST_FIELD_IMAGE)
- widget = create_image_field(field);
- else if (type == PURPLE_REQUEST_FIELD_ACCOUNT)
- widget = create_account_field(field);
- else
- continue;
+ widget = GTK_WIDGET(purple_request_field_get_ui_data(field));
+ if (widget == NULL)
+ {
+ if (type == PURPLE_REQUEST_FIELD_STRING)
+ widget = create_string_field(field);
+ else if (type == PURPLE_REQUEST_FIELD_INTEGER)
+ widget = create_int_field(field);
+ else if (type == PURPLE_REQUEST_FIELD_BOOLEAN)
+ widget = create_bool_field(field);
+ else if (type == PURPLE_REQUEST_FIELD_CHOICE)
+ widget = create_choice_field(field);
+ else if (type == PURPLE_REQUEST_FIELD_LIST)
+ widget = create_list_field(field);
+ else if (type == PURPLE_REQUEST_FIELD_IMAGE)
+ widget = create_image_field(field);
+ else if (type == PURPLE_REQUEST_FIELD_ACCOUNT)
+ widget = create_account_field(field);
+ else
+ continue;
+ }
if (label)
gtk_label_set_mnemonic_widget(GTK_LABEL(label), widget);
@@ -1400,7 +1409,7 @@ pidgin_request_fields(const char *title, const char *primary,
gtk_widget_show(widget);
- field->ui_data = widget;
+ purple_request_field_set_ui_data(field, widget);
}
}
}
diff --git a/pidgin/gtkroomlist.c b/pidgin/gtkroomlist.c
index 5302481e87..82bac84809 100644
--- a/pidgin/gtkroomlist.c
+++ b/pidgin/gtkroomlist.c
@@ -64,7 +64,6 @@ typedef struct _PidginRoomlist {
gint num_rooms, total_rooms;
GtkWidget *tipwindow;
GdkRectangle tip_rect;
- guint timeout;
PangoLayout *tip_layout;
PangoLayout *tip_name_layout;
int tip_height;
diff --git a/pidgin/gtksavedstatuses.c b/pidgin/gtksavedstatuses.c
index 5ea80774fa..f157d133bd 100644
--- a/pidgin/gtksavedstatuses.c
+++ b/pidgin/gtksavedstatuses.c
@@ -76,7 +76,7 @@ enum
STATUS_EDITOR_COLUMN_WINDOW,
STATUS_EDITOR_COLUMN_ENABLE_SUBSTATUS,
STATUS_EDITOR_COLUMN_ICON,
- STATUS_EDITOR_COLUMN_SCREENNAME,
+ STATUS_EDITOR_COLUMN_USERNAME,
/** A hidden column containing the ID of this PurpleStatusType. */
STATUS_EDITOR_COLUMN_STATUS_ID,
STATUS_EDITOR_COLUMN_STATUS_NAME,
@@ -390,7 +390,7 @@ status_selected_cb(GtkTreeSelection *sel, gpointer user_data)
gtk_widget_set_sensitive(dialog->use_button, (num_selected == 1) && can_use);
gtk_widget_set_sensitive(dialog->modify_button, (num_selected > 0));
- gtk_widget_set_sensitive(dialog->delete_button, can_delete);
+ gtk_widget_set_sensitive(dialog->delete_button, num_selected > 0 && can_delete);
g_list_free(sel_paths);
}
@@ -398,23 +398,7 @@ status_selected_cb(GtkTreeSelection *sel, gpointer user_data)
static const gchar *
get_stock_icon_from_primitive(PurpleStatusPrimitive type)
{
- switch (type) {
- case PURPLE_STATUS_AVAILABLE:
- return PIDGIN_STOCK_STATUS_AVAILABLE;
- case PURPLE_STATUS_AWAY:
- return PIDGIN_STOCK_STATUS_AWAY;
- case PURPLE_STATUS_EXTENDED_AWAY:
- return PIDGIN_STOCK_STATUS_XA;
- case PURPLE_STATUS_INVISIBLE:
- return PIDGIN_STOCK_STATUS_INVISIBLE;
- case PURPLE_STATUS_OFFLINE:
- return PIDGIN_STOCK_STATUS_OFFLINE;
- case PURPLE_STATUS_UNAVAILABLE:
- return PIDGIN_STOCK_STATUS_BUSY;
- default:
- /* this shouldn't happen */
- return NULL;
- }
+ return pidgin_stock_id_from_status_primitive(type);
}
static void
@@ -664,6 +648,7 @@ pidgin_status_window_show(void)
button = pidgin_dialog_add_button(GTK_DIALOG(win), PIDGIN_STOCK_MODIFY,
G_CALLBACK(status_window_modify_cb), dialog);
dialog->modify_button = button;
+ gtk_widget_set_sensitive(button, FALSE);
/* Delete button */
button = pidgin_dialog_add_button(GTK_DIALOG(win), GTK_STOCK_DELETE,
@@ -1007,7 +992,7 @@ status_editor_add_columns(StatusEditor *dialog)
g_signal_connect(G_OBJECT(renderer), "toggled",
G_CALLBACK(status_editor_substatus_cb), dialog);
- /* Screen Name column */
+ /* Username column */
column = gtk_tree_view_column_new();
gtk_tree_view_column_set_resizable(column, TRUE);
gtk_tree_view_column_set_title(column, _("Username"));
@@ -1020,11 +1005,11 @@ status_editor_add_columns(StatusEditor *dialog)
gtk_tree_view_column_add_attribute(column, renderer, "pixbuf",
STATUS_EDITOR_COLUMN_ICON);
- /* Screen Name */
+ /* Username */
renderer = gtk_cell_renderer_text_new();
gtk_tree_view_column_pack_start(column, renderer, TRUE);
gtk_tree_view_column_add_attribute(column, renderer, "text",
- STATUS_EDITOR_COLUMN_SCREENNAME);
+ STATUS_EDITOR_COLUMN_USERNAME);
/* Status column */
column = gtk_tree_view_column_new();
@@ -1086,7 +1071,7 @@ status_editor_set_account(GtkListStore *store, PurpleAccount *account,
STATUS_EDITOR_COLUMN_ACCOUNT, account,
STATUS_EDITOR_COLUMN_ENABLE_SUBSTATUS, (substatus != NULL),
STATUS_EDITOR_COLUMN_ICON, pixbuf,
- STATUS_EDITOR_COLUMN_SCREENNAME, purple_account_get_username(account),
+ STATUS_EDITOR_COLUMN_USERNAME, purple_account_get_username(account),
STATUS_EDITOR_COLUMN_STATUS_ID, id,
STATUS_EDITOR_COLUMN_STATUS_NAME, name,
STATUS_EDITOR_COLUMN_STATUS_MESSAGE, message,
@@ -1218,6 +1203,8 @@ pidgin_status_editor_show(gboolean edit, PurpleSavedStatus *saved_status)
gtk_container_set_focus_chain(GTK_CONTAINER(hbox), focus_chain);
g_list_free(focus_chain);
+ gtk_imhtml_set_return_inserts_newline(dialog->message);
+
if ((saved_status != NULL) && (purple_savedstatus_get_message(saved_status) != NULL))
gtk_imhtml_append_text(GTK_IMHTML(text),
purple_savedstatus_get_message(saved_status), 0);
@@ -1501,16 +1488,19 @@ edit_substatus(StatusEditor *status_editor, PurpleAccount *account)
gtk_size_group_add_widget(sg, label);
dialog->model = gtk_list_store_new(SUBSTATUS_NUM_COLUMNS,
- GDK_TYPE_PIXBUF,
+ G_TYPE_STRING,
G_TYPE_STRING,
G_TYPE_STRING);
combo = gtk_combo_box_new_with_model(GTK_TREE_MODEL(dialog->model));
dialog->box = GTK_COMBO_BOX(combo);
rend = GTK_CELL_RENDERER(gtk_cell_renderer_pixbuf_new());
+ g_object_set(G_OBJECT(rend),
+ "stock-size", gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL),
+ NULL);
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(combo), rend, FALSE);
gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combo), rend,
- "pixbuf", SUBSTATUS_COLUMN_ICON, NULL);
+ "stock-id", SUBSTATUS_COLUMN_ICON, NULL);
rend = GTK_CELL_RENDERER(gtk_cell_renderer_text_new());
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(combo), rend, TRUE);
@@ -1547,7 +1537,7 @@ edit_substatus(StatusEditor *status_editor, PurpleAccount *account)
/* Seed the input widgets with the current values */
/* Only look at the saved status if we can't find it in the parent status dialog's substatuses model */
- gtk_tree_model_get(GTK_TREE_MODEL(status_editor->model), &iter,
+ gtk_tree_model_get(GTK_TREE_MODEL(status_editor->model), &iter,
STATUS_EDITOR_COLUMN_ENABLE_SUBSTATUS, &parent_dialog_has_substatus, -1);
if (parent_dialog_has_substatus) {
gtk_tree_model_get(GTK_TREE_MODEL(status_editor->model), &iter,
@@ -1572,8 +1562,8 @@ edit_substatus(StatusEditor *status_editor, PurpleAccount *account)
for (list = purple_account_get_status_types(account); list; list = list->next)
{
PurpleStatusType *status_type;
- GdkPixbuf *pixbuf;
const char *id, *name;
+ PurpleStatusPrimitive prim;
status_type = list->data;
@@ -1586,17 +1576,15 @@ edit_substatus(StatusEditor *status_editor, PurpleAccount *account)
continue;
id = purple_status_type_get_id(status_type);
- pixbuf = pidgin_create_status_icon(purple_status_type_get_primitive(status_type), combo, PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL);
+ prim = purple_status_type_get_primitive(status_type);
name = purple_status_type_get_name(status_type);
gtk_list_store_append(dialog->model, &iter);
gtk_list_store_set(dialog->model, &iter,
- SUBSTATUS_COLUMN_ICON, pixbuf,
+ SUBSTATUS_COLUMN_ICON, pidgin_stock_id_from_status_primitive(prim),
SUBSTATUS_COLUMN_STATUS_ID, id,
SUBSTATUS_COLUMN_STATUS_NAME, name,
-1);
- if (pixbuf != NULL)
- g_object_unref(pixbuf);
if ((status_id != NULL) && !strcmp(status_id, id))
{
gtk_combo_box_set_active_iter(GTK_COMBO_BOX(combo), &iter);
@@ -1656,7 +1644,7 @@ enum {
* And whether or not that emblem is visible
*/
SS_MENU_EMBLEM_VISIBLE_COLUMN,
-
+
SS_MENU_NUM_COLUMNS
};
@@ -1703,18 +1691,15 @@ static gboolean pidgin_status_menu_add_primitive(GtkListStore *model, GtkWidget
{
GtkTreeIter iter;
gboolean currently_selected = FALSE;
- GdkPixbuf *pixbuf = pidgin_create_status_icon(primitive, w, PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL);
gtk_list_store_append(model, &iter);
gtk_list_store_set(model, &iter,
SS_MENU_TYPE_COLUMN, SS_MENU_ENTRY_TYPE_PRIMITIVE,
- SS_MENU_ICON_COLUMN, pixbuf,
+ SS_MENU_ICON_COLUMN, pidgin_stock_id_from_status_primitive(primitive),
SS_MENU_TEXT_COLUMN, purple_primitive_get_name_from_type(primitive),
SS_MENU_DATA_COLUMN, GINT_TO_POINTER(primitive),
SS_MENU_EMBLEM_VISIBLE_COLUMN, FALSE,
-1);
- if (pixbuf != NULL)
- g_object_unref(pixbuf);
if (purple_savedstatus_is_transient(current_status)
&& !purple_savedstatus_has_substatuses(current_status)
@@ -1728,23 +1713,20 @@ static void
pidgin_status_menu_update_iter(GtkWidget *combobox, GtkListStore *store, GtkTreeIter *iter,
PurpleSavedStatus *status)
{
- GdkPixbuf *pixbuf;
+ PurpleStatusPrimitive primitive;
if (store == NULL)
store = GTK_LIST_STORE(gtk_combo_box_get_model(GTK_COMBO_BOX(combobox)));
- pixbuf = pidgin_create_status_icon(purple_savedstatus_get_type(status),
- combobox, PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL);
+ primitive = purple_savedstatus_get_type(status);
gtk_list_store_set(store, iter,
SS_MENU_TYPE_COLUMN, SS_MENU_ENTRY_TYPE_SAVEDSTATUS,
- SS_MENU_ICON_COLUMN, pixbuf,
+ SS_MENU_ICON_COLUMN, pidgin_stock_id_from_status_primitive(primitive),
SS_MENU_TEXT_COLUMN, purple_savedstatus_get_title(status),
SS_MENU_DATA_COLUMN, GINT_TO_POINTER(purple_savedstatus_get_creation_time(status)),
SS_MENU_EMBLEM_COLUMN, GTK_STOCK_SAVE,
SS_MENU_EMBLEM_VISIBLE_COLUMN, TRUE,
-1);
- if (pixbuf)
- g_object_unref(G_OBJECT(pixbuf));
}
static gboolean
@@ -1826,7 +1808,7 @@ GtkWidget *pidgin_status_menu(PurpleSavedStatus *current_status, GCallback callb
GtkCellRenderer *icon_rend;
GtkCellRenderer *emblem_rend;
- model = gtk_list_store_new(SS_MENU_NUM_COLUMNS, G_TYPE_INT, GDK_TYPE_PIXBUF,
+ model = gtk_list_store_new(SS_MENU_NUM_COLUMNS, G_TYPE_INT, G_TYPE_STRING,
G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_STRING, G_TYPE_BOOLEAN);
combobox = gtk_combo_box_new();
@@ -1873,10 +1855,13 @@ GtkWidget *pidgin_status_menu(PurpleSavedStatus *current_status, GCallback callb
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(combobox), icon_rend, FALSE);
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(combobox), text_rend, TRUE);
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(combobox), emblem_rend, FALSE);
- gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combobox), icon_rend, "pixbuf", SS_MENU_ICON_COLUMN, NULL);
+ gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combobox), icon_rend, "stock-id", SS_MENU_ICON_COLUMN, NULL);
gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combobox), text_rend, "markup", SS_MENU_TEXT_COLUMN, NULL);
gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combobox), emblem_rend,
"stock-id", SS_MENU_EMBLEM_COLUMN, "visible", SS_MENU_EMBLEM_VISIBLE_COLUMN, NULL);
+ g_object_set(G_OBJECT(icon_rend),
+ "stock-size", gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL),
+ NULL);
gtk_combo_box_set_active(GTK_COMBO_BOX(combobox), index);
g_signal_connect(G_OBJECT(combobox), "changed", G_CALLBACK(status_menu_cb), callback);
diff --git a/pidgin/gtkscrollbook.h b/pidgin/gtkscrollbook.h
index 859488c145..4dec336e87 100644
--- a/pidgin/gtkscrollbook.h
+++ b/pidgin/gtkscrollbook.h
@@ -51,7 +51,7 @@ struct _PidginScrollBook
GtkWidget *left_arrow;
GtkWidget *right_arrow;
GList *children;
-
+
/* Padding for future expansion */
void (*_gtk_reserved1) (void);
void (*_gtk_reserved2) (void);
diff --git a/pidgin/gtksession.c b/pidgin/gtksession.c
index cf75989634..9e3192170b 100644
--- a/pidgin/gtksession.c
+++ b/pidgin/gtksession.c
@@ -108,7 +108,7 @@ static void ice_connection_watch(IceConn connection, IcePointer client_data,
purple_debug(PURPLE_DEBUG_INFO, NULL, "done.\n");
}
-/* We call any handler installed before (or after) ice_init but
+/* We call any handler installed before (or after) ice_init but
* avoid calling the default libICE handler which does an exit().
*
* This means we do nothing by default, which is probably correct,
diff --git a/pidgin/gtksmiley.c b/pidgin/gtksmiley.c
index f111eb1770..0dff98e699 100644
--- a/pidgin/gtksmiley.c
+++ b/pidgin/gtksmiley.c
@@ -47,6 +47,8 @@ struct _PidginSmiley
GtkWidget *smiley_image;
gchar *filename;
GdkPixbuf *custom_pixbuf;
+ gpointer data; /** @since 2.6.0 */
+ gsize datasize; /** @since 2.6.0 */
};
typedef struct
@@ -74,7 +76,7 @@ pidgin_smiley_destroy(PidginSmiley *smiley)
gtk_widget_destroy(smiley->parent);
g_free(smiley->filename);
if (smiley->custom_pixbuf)
- gdk_pixbuf_unref(smiley->custom_pixbuf);
+ g_object_unref(G_OBJECT(smiley->custom_pixbuf));
g_free(smiley);
}
@@ -225,6 +227,12 @@ static void do_add(GtkWidget *widget, PidginSmiley *s)
entry = gtk_entry_get_text(GTK_ENTRY(s->smile));
if (!entry || !*entry) {
+ /*
+ * TODO: We should enable/disable the add button based on
+ * whether the user has entered all required data. That
+ * would eliminate the need for this check and provide a
+ * better user experience.
+ */
purple_notify_error(s->parent, _("Custom Smiley"),
_("More Data needed"),
_("Please provide a shortcut to associate with the smiley."));
@@ -233,9 +241,12 @@ static void do_add(GtkWidget *widget, PidginSmiley *s)
emoticon = purple_smileys_find_by_shortcut(entry);
if (emoticon && emoticon != s->smiley) {
+ gchar *msg;
+ msg = g_strdup_printf(_("A custom smiley for '%s' already exists. "
+ "Please use a different shortcut."), entry);
purple_notify_error(s->parent, _("Custom Smiley"),
- _("Duplicate Shortcut"),
- _("A custom smiley for the selected shortcut already exists. Please specify a different shortcut."));
+ _("Duplicate Shortcut"), msg);
+ g_free(msg);
return;
}
@@ -268,12 +279,11 @@ static void do_add(GtkWidget *widget, PidginSmiley *s)
purple_debug_info("gtksmiley", "adding a new smiley\n");
if (s->filename == NULL) {
- /* Get the smiley from the custom pixbuf */
gchar *buffer = NULL;
gsize size = 0;
gchar *filename;
const gchar *dirname = purple_smileys_get_storing_dir();
-
+
/* since this may be called before purple_smiley_new_* has ever been
called, we create the storing dir, if it doesn't exist yet, to be
able to save the pixbuf before adding the smiley */
@@ -286,9 +296,17 @@ static void do_add(GtkWidget *widget, PidginSmiley *s)
dirname, g_strerror(errno));
}
}
-
- gdk_pixbuf_save_to_buffer(s->custom_pixbuf, &buffer, &size,
- "png", NULL, "compression", "9", NULL, NULL);
+
+ if (s->data && s->datasize) {
+ /* Cached data & size in memory */
+ buffer = s->data;
+ size = s->datasize;
+ }
+ else {
+ /* Get the smiley from the custom pixbuf */
+ gdk_pixbuf_save_to_buffer(s->custom_pixbuf, &buffer, &size,
+ "png", NULL, "compression", "9", NULL, NULL);
+ }
filename = purple_util_get_image_filename(buffer, size);
s->filename = g_build_filename(dirname, filename, NULL);
purple_util_write_data_to_file_absolute(s->filename, buffer, size);
@@ -335,7 +353,7 @@ static void do_add_file_cb(const char *filename, gpointer data)
pixbuf = gdk_pixbuf_new_from_file_at_scale(filename, 64, 64, FALSE, NULL);
gtk_image_set_from_pixbuf(GTK_IMAGE(s->smiley_image), pixbuf);
if (pixbuf)
- gdk_pixbuf_unref(pixbuf);
+ g_object_unref(G_OBJECT(pixbuf));
gtk_widget_grab_focus(s->smile);
}
@@ -385,7 +403,7 @@ pidgin_smiley_edit(GtkWidget *widget, PurpleSmiley *smiley)
hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER);
gtk_container_add(GTK_CONTAINER(GTK_VBOX(vbox)), hbox);
- label = gtk_label_new_with_mnemonic(_("Smiley _Image"));
+ label = gtk_label_new_with_mnemonic(_("_Image:"));
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
gtk_widget_show(label);
@@ -415,8 +433,8 @@ pidgin_smiley_edit(GtkWidget *widget, PurpleSmiley *smiley)
hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER);
gtk_container_add(GTK_CONTAINER(GTK_VBOX(vbox)),hbox);
- /* Smiley shortcut */
- label = gtk_label_new_with_mnemonic(_("Smiley S_hortcut"));
+ /* Shortcut text */
+ label = gtk_label_new_with_mnemonic(_("S_hortcut text:"));
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
gtk_widget_show(label);
@@ -450,12 +468,19 @@ void
pidgin_smiley_editor_set_image(PidginSmiley *editor, GdkPixbuf *image)
{
if (editor->custom_pixbuf)
- gdk_pixbuf_unref(editor->custom_pixbuf);
- editor->custom_pixbuf = image ? gdk_pixbuf_ref(image) : NULL;
+ g_object_unref(G_OBJECT(editor->custom_pixbuf));
+ editor->custom_pixbuf = image ? g_object_ref(G_OBJECT(image)) : NULL;
if (image)
gtk_image_set_from_pixbuf(GTK_IMAGE(editor->smiley_image), image);
}
+void
+pidgin_smiley_editor_set_data(PidginSmiley *editor, gpointer *data, gsize datasize)
+{
+ editor->data = data;
+ editor->datasize = datasize;
+}
+
/******************************************************************************
* Delete smiley
*****************************************************************************/
@@ -520,9 +545,9 @@ static void add_columns(GtkWidget *treeview, SmileyManager *dialog)
gtk_tree_view_column_pack_start(column, rend, FALSE);
gtk_tree_view_column_add_attribute(column, rend, "pixbuf", ICON);
- /* Shortcut */
+ /* Shortcut Text */
column = gtk_tree_view_column_new();
- gtk_tree_view_column_set_title(column, _("Shortcut"));
+ gtk_tree_view_column_set_title(column, _("Shortcut Text"));
gtk_tree_view_column_set_resizable(column, TRUE);
gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
@@ -712,7 +737,7 @@ void pidgin_smiley_manager_show(void)
_("Custom Smiley Manager"),
NULL,
GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_STOCK_ADD, GTK_RESPONSE_YES,
+ PIDGIN_STOCK_ADD, GTK_RESPONSE_YES,
PIDGIN_STOCK_MODIFY, PIDGIN_RESPONSE_MODIFY,
GTK_STOCK_DELETE, GTK_RESPONSE_NO,
GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,
@@ -740,4 +765,3 @@ void pidgin_smiley_manager_show(void)
gtk_widget_show(win);
}
-
diff --git a/pidgin/gtksmiley.h b/pidgin/gtksmiley.h
index 37795c51a4..06d0dc2868 100644
--- a/pidgin/gtksmiley.h
+++ b/pidgin/gtksmiley.h
@@ -25,8 +25,8 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
*/
-#ifndef _PIDGIN_GTKSMILEY_H_
-#define _PIDGIN_GTKSMILEY_H_
+#ifndef PIDGIN_GTKSMILEY_H
+#define PIDGIN_GTKSMILEY_H
#include "smiley.h"
@@ -62,7 +62,7 @@ void pidgin_smileys_uninit(void);
*
* @constreturn A GtkIMHmlSmiley list
*/
-GSList* pidgin_smileys_get_all(void);
+GSList *pidgin_smileys_get_all(void);
/******************************************************************************
* Smiley Manager
@@ -100,4 +100,15 @@ void pidgin_smiley_editor_set_shortcut(PidginSmiley *editor, const gchar *shortc
*/
void pidgin_smiley_editor_set_image(PidginSmiley *editor, GdkPixbuf *image);
-#endif /* _PIDGIN_GTKSMILEY_H_*/
+/**
+ * Sets the image data in a smiley add dialog
+ *
+ * @param editor A smiley editor dialog
+ * @param data A pointer to smiley's data
+ * @param datasize The size of smiley's data
+ *
+ * @since 2.6.0
+ */
+void pidgin_smiley_editor_set_data(PidginSmiley *editor, gpointer *data, gsize datasize);
+
+#endif /* PIDGIN_GTKSMILEY_H */
diff --git a/pidgin/gtksound.c b/pidgin/gtksound.c
index dfb5a5d48c..e576f6440e 100644
--- a/pidgin/gtksound.c
+++ b/pidgin/gtksound.c
@@ -40,6 +40,8 @@
#include "notify.h"
#include "prefs.h"
#include "sound.h"
+#include "sound-theme.h"
+#include "theme-manager.h"
#include "util.h"
#include "gtkconv.h"
@@ -224,9 +226,9 @@ static void
account_signon_cb(PurpleConnection *gc, gpointer data)
{
if (mute_login_sounds_timeout != 0)
- g_source_remove(mute_login_sounds_timeout);
+ purple_timeout_remove(mute_login_sounds_timeout);
mute_login_sounds = TRUE;
- mute_login_sounds_timeout = purple_timeout_add(10000, unmute_login_sounds_cb, NULL);
+ mute_login_sounds_timeout = purple_timeout_add_seconds(10, unmute_login_sounds_cb, NULL);
}
const char *
@@ -294,6 +296,7 @@ pidgin_sound_init(void)
purple_prefs_add_path(PIDGIN_PREFS_ROOT "/sound/file/nick_said", "");
purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/sound/enabled/pounce_default", TRUE);
purple_prefs_add_path(PIDGIN_PREFS_ROOT "/sound/file/pounce_default", "");
+ purple_prefs_add_string(PIDGIN_PREFS_ROOT "/sound/theme", "");
purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/sound/conv_focus", TRUE);
purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/sound/mute", FALSE);
purple_prefs_add_path(PIDGIN_PREFS_ROOT "/sound/command", "");
@@ -557,6 +560,8 @@ pidgin_sound_play_event(PurpleSoundEventID event)
{
char *enable_pref;
char *file_pref;
+ const char *theme_name;
+ PurpleSoundTheme *theme;
if ((event == PURPLE_SOUND_BUDDY_ARRIVE) && mute_login_sounds)
return;
@@ -573,13 +578,31 @@ pidgin_sound_play_event(PurpleSoundEventID event)
/* check NULL for sounds that don't have an option, ie buddy pounce */
if (purple_prefs_get_bool(enable_pref)) {
char *filename = g_strdup(purple_prefs_get_path(file_pref));
- if(!filename || !strlen(filename)) {
+ theme_name = purple_prefs_get_string(PIDGIN_PREFS_ROOT "/sound/theme");
+
+ if (theme_name && *theme_name && (!filename || !*filename)) {
+ /* Use theme */
+ g_free(filename);
+
+ theme = PURPLE_SOUND_THEME(purple_theme_manager_find_theme(theme_name, "sound"));
+ filename = purple_sound_theme_get_file_full(theme, sounds[event].pref);
+
+ if(!g_file_test(filename, G_FILE_TEST_IS_REGULAR)){ /* Use Default sound in this case */
+ purple_debug_error("sound", "The file: (%s) %s\n from theme: %s, was not found or wasn't readable\n",
+ sounds[event].pref, filename, theme_name);
+ g_free(filename);
+ }
+ }
+
+ if (!filename || !strlen(filename)) { /* Use Default sounds */
g_free(filename);
+
/* XXX Consider creating a constant for "sounds/purple" to be shared with Finch */
filename = g_build_filename(DATADIR, "sounds", "purple", sounds[event].def, NULL);
}
purple_sound_play_file(filename, NULL);
+
g_free(filename);
}
@@ -587,6 +610,29 @@ pidgin_sound_play_event(PurpleSoundEventID event)
g_free(file_pref);
}
+gboolean
+pidgin_sound_is_customized(void)
+{
+ gint i;
+ gchar *path, *file;
+
+ for (i = 0; i < PURPLE_NUM_SOUNDS; i++) {
+ path = g_strdup_printf(PIDGIN_PREFS_ROOT "/sound/file/%s", sounds[i].pref);
+ file = g_strdup(purple_prefs_get_path(path));
+ g_free(path);
+
+ if (file && file[0] != '\0'){
+ g_free(file);
+ return TRUE;
+ }
+
+ g_free(file);
+ }
+
+ return FALSE;
+
+}
+
static PurpleSoundUiOps sound_ui_ops =
{
pidgin_sound_init,
diff --git a/pidgin/gtksound.h b/pidgin/gtksound.h
index c1bb91d7e8..f55713907e 100644
--- a/pidgin/gtksound.h
+++ b/pidgin/gtksound.h
@@ -63,6 +63,15 @@ PurpleSoundUiOps *pidgin_sound_get_ui_ops(void);
*/
void *pidgin_sound_get_handle(void);
+/**
+ * Returns true Pidgin is using customized sounds
+ *
+ * @return TRUE if non default sounds are used.
+ *
+ * @since 2.6.0
+ */
+gboolean pidgin_sound_is_customized(void);
+
/*@}*/
#endif /* _PIDGINSOUND_H_ */
diff --git a/pidgin/gtksourceiter.c b/pidgin/gtksourceiter.c
index 97397a07e8..bc0086268c 100644
--- a/pidgin/gtksourceiter.c
+++ b/pidgin/gtksourceiter.c
@@ -1,4 +1,4 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
* gtksourceiter.c
*
* Pidgin is the legal property of its developers, whose names are too numerous
@@ -7,7 +7,7 @@
*
* The following copyright notice applies to this file:
*
- * Copyright (C) 2000 - 2005 Paolo Maggi
+ * Copyright (C) 2000 - 2005 Paolo Maggi
* Copyright (C) 2002, 2003 Jeroen Zwartepoorte
*
* This program is free software; you can redistribute it and/or modify
@@ -206,7 +206,7 @@ g_utf8_caselessnmatch (const char *s1, const char *s2,
finally_2:
g_free (normalized_s1);
- g_free (normalized_s2);
+ g_free (normalized_s2);
return ret;
}
@@ -247,7 +247,7 @@ forward_chars_with_skipping (GtkTextIter *iter,
{
/* being UTF8 correct sucks; this accounts for extra
offsets coming from canonical decompositions of
- UTF8 characters (e.g. accented characters) which
+ UTF8 characters (e.g. accented characters) which
g_utf8_normalize() performs */
gchar *normal;
gchar buffer[6];
@@ -530,14 +530,14 @@ strbreakup (const char *string,
* @match_start: return location for start of match, or %%NULL.
* @match_end: return location for end of match, or %%NULL.
* @limit: bound for the search, or %%NULL for the end of the buffer.
- *
- * Searches forward for @str. Any match is returned by setting
- * @match_start to the first character of the match and @match_end to the
+ *
+ * Searches forward for @str. Any match is returned by setting
+ * @match_start to the first character of the match and @match_end to the
* first character after the match. The search will not continue past
* @limit. Note that a search is a linear or O(n) operation, so you
* may wish to use @limit to avoid locking up your UI on large
* buffers.
- *
+ *
* If the #GTK_SOURCE_SEARCH_VISIBLE_ONLY flag is present, the match may
* have invisible text interspersed in @str. i.e. @str will be a
* possibly-noncontiguous subsequence of the matched range. similarly,
@@ -550,7 +550,7 @@ strbreakup (const char *string,
*
* Same as gtk_text_iter_forward_search(), but supports case insensitive
* searching.
- *
+ *
* Return value: whether a match was found.
**/
gboolean
@@ -574,7 +574,7 @@ gtk_source_iter_forward_search (const GtkTextIter *iter,
if ((flags & GTK_SOURCE_SEARCH_CASE_INSENSITIVE) == 0)
return gtk_text_iter_forward_search (iter, str, flags,
match_start, match_end,
- limit);
+ limit);
if (limit && gtk_text_iter_compare (iter, limit) >= 0)
return FALSE;
@@ -650,10 +650,10 @@ gtk_source_iter_forward_search (const GtkTextIter *iter,
* @match_start: return location for start of match, or %%NULL.
* @match_end: return location for end of match, or %%NULL.
* @limit: location of last possible @match_start, or %%NULL for start of buffer.
- *
+ *
* Same as gtk_text_iter_backward_search(), but supports case insensitive
* searching.
- *
+ *
* Return value: whether a match was found.
**/
gboolean
@@ -677,7 +677,7 @@ gtk_source_iter_backward_search (const GtkTextIter *iter,
if ((flags & GTK_SOURCE_SEARCH_CASE_INSENSITIVE) == 0)
return gtk_text_iter_backward_search (iter, str, flags,
match_start, match_end,
- limit);
+ limit);
if (limit && gtk_text_iter_compare (iter, limit) <= 0)
return FALSE;
diff --git a/pidgin/gtksourceiter.h b/pidgin/gtksourceiter.h
index b69e478a53..2be2737c9b 100644
--- a/pidgin/gtksourceiter.h
+++ b/pidgin/gtksourceiter.h
@@ -1,4 +1,4 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
* gtksourceiter.h
*
* Pidgin is the legal property of its developers, whose names are too numerous
@@ -7,7 +7,7 @@
*
* The following copyright notice applies to this file:
*
- * Copyright (C) 2000 - 2005 Paolo Maggi
+ * Copyright (C) 2000 - 2005 Paolo Maggi
* Copyright (C) 2002, 2003 Jeroen Zwartepoorte
*
* This program is free software; you can redistribute it and/or modify
@@ -28,7 +28,7 @@
#ifndef _PIDGINSOURCEITER_H_
#define _PIDGINSOURCEITER_H_
-#include <gtk/gtktextiter.h>
+#include <gtk/gtk.h>
G_BEGIN_DECLS
diff --git a/pidgin/gtksourceundomanager.c b/pidgin/gtksourceundomanager.c
index af9e2e0ef9..9cb177ed80 100644
--- a/pidgin/gtksourceundomanager.c
+++ b/pidgin/gtksourceundomanager.c
@@ -4,8 +4,8 @@
* This file is part of GtkSourceView
*
* Copyright (C) 1998, 1999 Alex Roberts, Evan Lawrence
- * Copyright (C) 2000, 2001 Chema Celorio, Paolo Maggi
- * Copyright (C) 2002-2005 Paolo Maggi
+ * Copyright (C) 2000, 2001 Chema Celorio, Paolo Maggi
+ * Copyright (C) 2002-2005 Paolo Maggi
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -19,7 +19,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02111-1301, USA.
*/
@@ -49,14 +49,14 @@ typedef enum {
GTK_SOURCE_UNDO_ACTION_INSERT_ANCHOR,
} GtkSourceUndoActionType;
-/*
+/*
* We use offsets instead of GtkTextIters because the last ones
* require to much memory in this context without giving us any advantage.
- */
+ */
struct _GtkSourceUndoInsertAction
{
- gint pos;
+ gint pos;
gchar *text;
gint length;
gint chars;
@@ -79,7 +79,7 @@ struct _GtkSourceUndoInsertAnchorAction
struct _GtkSourceUndoAction
{
GtkSourceUndoActionType action_type;
-
+
union {
GtkSourceUndoInsertAction insert;
GtkSourceUndoDeleteAction delete;
@@ -92,7 +92,7 @@ struct _GtkSourceUndoAction
guint mergeable : 1;
/* It is TRUE whether the action is marked as "modified".
- * An action is marked as "modified" if it changed the
+ * An action is marked as "modified" if it changed the
* state of the buffer from "not modified" to "modified". Only the first
* action of a group can be marked as modified.
* There can be a single action marked as "modified" in the actions list.
@@ -106,29 +106,29 @@ struct _GtkSourceUndoAction
struct _GtkSourceUndoManagerPrivate
{
GtkTextBuffer *document;
-
+
GList* actions;
- gint next_redo;
+ gint next_redo;
gint actions_in_current_group;
-
+
gint running_not_undoable_actions;
gint num_of_groups;
gint max_undo_levels;
-
+
guint can_undo : 1;
guint can_redo : 1;
-
+
/* It is TRUE whether, while undoing an action of the current group (with order_in_group > 1),
* the state of the buffer changed from "not modified" to "modified".
*/
- guint modified_undoing_group : 1;
+ guint modified_undoing_group : 1;
/* Pointer to the action (in the action list) marked as "modified".
- * It is NULL when no action is marked as "modified".
- * It is INVALID when the action marked as "modified" has been removed
+ * It is NULL when no action is marked as "modified".
+ * It is INVALID when the action marked as "modified" has been removed
* from the action list (freeing the list or resizing it) */
GtkSourceUndoAction *modified_action;
};
@@ -143,33 +143,33 @@ static void gtk_source_undo_manager_class_init (GtkSourceUndoManagerClass *k
static void gtk_source_undo_manager_init (GtkSourceUndoManager *um);
static void gtk_source_undo_manager_finalize (GObject *object);
-static void gtk_source_undo_manager_insert_text_handler (GtkTextBuffer *buffer,
+static void gtk_source_undo_manager_insert_text_handler (GtkTextBuffer *buffer,
GtkTextIter *pos,
- const gchar *text,
- gint length,
+ const gchar *text,
+ gint length,
GtkSourceUndoManager *um);
static void gtk_source_undo_manager_insert_anchor_handler (GtkTextBuffer *buffer,
GtkTextIter *pos,
GtkTextChildAnchor *anchor,
GtkSourceUndoManager *um);
-static void gtk_source_undo_manager_delete_range_handler (GtkTextBuffer *buffer,
+static void gtk_source_undo_manager_delete_range_handler (GtkTextBuffer *buffer,
GtkTextIter *start,
GtkTextIter *end,
GtkSourceUndoManager *um);
-static void gtk_source_undo_manager_begin_user_action_handler (GtkTextBuffer *buffer,
+static void gtk_source_undo_manager_begin_user_action_handler (GtkTextBuffer *buffer,
GtkSourceUndoManager *um);
static void gtk_source_undo_manager_modified_changed_handler (GtkTextBuffer *buffer,
GtkSourceUndoManager *um);
static void gtk_source_undo_manager_free_action_list (GtkSourceUndoManager *um);
-static void gtk_source_undo_manager_add_action (GtkSourceUndoManager *um,
+static void gtk_source_undo_manager_add_action (GtkSourceUndoManager *um,
const GtkSourceUndoAction *undo_action);
-static void gtk_source_undo_manager_free_first_n_actions (GtkSourceUndoManager *um,
+static void gtk_source_undo_manager_free_first_n_actions (GtkSourceUndoManager *um,
gint n);
static void gtk_source_undo_manager_check_list_size (GtkSourceUndoManager *um);
-static gboolean gtk_source_undo_manager_merge_action (GtkSourceUndoManager *um,
+static gboolean gtk_source_undo_manager_merge_action (GtkSourceUndoManager *um,
const GtkSourceUndoAction *undo_action);
static GObjectClass *parent_class = NULL;
@@ -216,7 +216,7 @@ gtk_source_undo_manager_class_init (GtkSourceUndoManagerClass *klass)
klass->can_undo = NULL;
klass->can_redo = NULL;
-
+
undo_manager_signals[CAN_UNDO] =
g_signal_new ("can_undo",
G_OBJECT_CLASS_TYPE (object_class),
@@ -269,7 +269,7 @@ gtk_source_undo_manager_finalize (GObject *object)
g_return_if_fail (object != NULL);
g_return_if_fail (GTK_SOURCE_IS_UNDO_MANAGER (object));
-
+
um = GTK_SOURCE_UNDO_MANAGER (object);
g_return_if_fail (um->priv != NULL);
@@ -280,19 +280,19 @@ gtk_source_undo_manager_finalize (GObject *object)
}
g_signal_handlers_disconnect_by_func (G_OBJECT (um->priv->document),
- G_CALLBACK (gtk_source_undo_manager_delete_range_handler),
+ G_CALLBACK (gtk_source_undo_manager_delete_range_handler),
um);
g_signal_handlers_disconnect_by_func (G_OBJECT (um->priv->document),
- G_CALLBACK (gtk_source_undo_manager_insert_text_handler),
+ G_CALLBACK (gtk_source_undo_manager_insert_text_handler),
um);
-
+
g_signal_handlers_disconnect_by_func (G_OBJECT (um->priv->document),
- G_CALLBACK (gtk_source_undo_manager_insert_anchor_handler),
+ G_CALLBACK (gtk_source_undo_manager_insert_anchor_handler),
um);
-
+
g_signal_handlers_disconnect_by_func (G_OBJECT (um->priv->document),
- G_CALLBACK (gtk_source_undo_manager_begin_user_action_handler),
+ G_CALLBACK (gtk_source_undo_manager_begin_user_action_handler),
um);
g_free (um->priv);
@@ -311,19 +311,19 @@ gtk_source_undo_manager_new (GtkTextBuffer* buffer)
um->priv->document = buffer;
g_signal_connect (G_OBJECT (buffer), "insert_text",
- G_CALLBACK (gtk_source_undo_manager_insert_text_handler),
+ G_CALLBACK (gtk_source_undo_manager_insert_text_handler),
um);
g_signal_connect (G_OBJECT (buffer), "insert_child_anchor",
- G_CALLBACK (gtk_source_undo_manager_insert_anchor_handler),
+ G_CALLBACK (gtk_source_undo_manager_insert_anchor_handler),
um);
g_signal_connect (G_OBJECT (buffer), "delete_range",
- G_CALLBACK (gtk_source_undo_manager_delete_range_handler),
+ G_CALLBACK (gtk_source_undo_manager_delete_range_handler),
um);
g_signal_connect (G_OBJECT (buffer), "begin_user_action",
- G_CALLBACK (gtk_source_undo_manager_begin_user_action_handler),
+ G_CALLBACK (gtk_source_undo_manager_begin_user_action_handler),
um);
g_signal_connect (G_OBJECT (buffer), "modified_changed",
@@ -332,7 +332,7 @@ gtk_source_undo_manager_new (GtkTextBuffer* buffer)
return um;
}
-void
+void
gtk_source_undo_manager_begin_not_undoable_action (GtkSourceUndoManager *um)
{
g_return_if_fail (GTK_SOURCE_IS_UNDO_MANAGER (um));
@@ -341,18 +341,18 @@ gtk_source_undo_manager_begin_not_undoable_action (GtkSourceUndoManager *um)
++um->priv->running_not_undoable_actions;
}
-static void
+static void
gtk_source_undo_manager_end_not_undoable_action_internal (GtkSourceUndoManager *um)
{
g_return_if_fail (GTK_SOURCE_IS_UNDO_MANAGER (um));
g_return_if_fail (um->priv != NULL);
g_return_if_fail (um->priv->running_not_undoable_actions > 0);
-
+
--um->priv->running_not_undoable_actions;
}
-void
+void
gtk_source_undo_manager_end_not_undoable_action (GtkSourceUndoManager *um)
{
g_return_if_fail (GTK_SOURCE_IS_UNDO_MANAGER (um));
@@ -361,26 +361,26 @@ gtk_source_undo_manager_end_not_undoable_action (GtkSourceUndoManager *um)
gtk_source_undo_manager_end_not_undoable_action_internal (um);
if (um->priv->running_not_undoable_actions == 0)
- {
+ {
gtk_source_undo_manager_free_action_list (um);
-
- um->priv->next_redo = -1;
+
+ um->priv->next_redo = -1;
if (um->priv->can_undo)
{
um->priv->can_undo = FALSE;
- g_signal_emit (G_OBJECT (um),
- undo_manager_signals [CAN_UNDO],
- 0,
+ g_signal_emit (G_OBJECT (um),
+ undo_manager_signals [CAN_UNDO],
+ 0,
FALSE);
}
if (um->priv->can_redo)
{
um->priv->can_redo = FALSE;
- g_signal_emit (G_OBJECT (um),
- undo_manager_signals [CAN_REDO],
- 0,
+ g_signal_emit (G_OBJECT (um),
+ undo_manager_signals [CAN_REDO],
+ 0,
FALSE);
}
}
@@ -395,7 +395,7 @@ gtk_source_undo_manager_can_undo (const GtkSourceUndoManager *um)
return um->priv->can_undo;
}
-gboolean
+gboolean
gtk_source_undo_manager_can_redo (const GtkSourceUndoManager *um)
{
g_return_val_if_fail (GTK_SOURCE_IS_UNDO_MANAGER (um), FALSE);
@@ -408,31 +408,31 @@ static void
set_cursor (GtkTextBuffer *buffer, gint cursor)
{
GtkTextIter iter;
-
+
/* Place the cursor at the requested position */
gtk_text_buffer_get_iter_at_offset (buffer, &iter, cursor);
gtk_text_buffer_place_cursor (buffer, &iter);
}
-static void
+static void
insert_text (GtkTextBuffer *buffer, gint pos, const gchar *text, gint len)
{
GtkTextIter iter;
-
+
gtk_text_buffer_get_iter_at_offset (buffer, &iter, pos);
gtk_text_buffer_insert (buffer, &iter, text, len);
}
-static void
+static void
insert_anchor (GtkTextBuffer *buffer, gint pos, GtkTextChildAnchor *anchor)
{
GtkTextIter iter;
-
+
gtk_text_buffer_get_iter_at_offset (buffer, &iter, pos);
gtk_text_buffer_insert_child_anchor (buffer, &iter, anchor);
}
-static void
+static void
delete_text (GtkTextBuffer *buffer, gint start, gint end)
{
GtkTextIter start_iter;
@@ -464,7 +464,7 @@ get_chars (GtkTextBuffer *buffer, gint start, gint end)
return gtk_text_buffer_get_slice (buffer, &start_iter, &end_iter, TRUE);
}
-void
+void
gtk_source_undo_manager_undo (GtkSourceUndoManager *um)
{
GtkSourceUndoAction *undo_action;
@@ -473,13 +473,13 @@ gtk_source_undo_manager_undo (GtkSourceUndoManager *um)
g_return_if_fail (GTK_SOURCE_IS_UNDO_MANAGER (um));
g_return_if_fail (um->priv != NULL);
g_return_if_fail (um->priv->can_undo);
-
+
um->priv->modified_undoing_group = FALSE;
gtk_source_undo_manager_begin_not_undoable_action (um);
do
- {
+ {
undo_action = g_list_nth_data (um->priv->actions, um->priv->next_redo + 1);
g_return_if_fail (undo_action != NULL);
@@ -490,7 +490,7 @@ gtk_source_undo_manager_undo (GtkSourceUndoManager *um)
if (undo_action->order_in_group <= 1)
{
/* Set modified to TRUE only if the buffer did not change its state from
- * "not modified" to "modified" undoing an action (with order_in_group > 1)
+ * "not modified" to "modified" undoing an action (with order_in_group > 1)
* in current group. */
modified = (undo_action->modified && !um->priv->modified_undoing_group);
}
@@ -499,31 +499,31 @@ gtk_source_undo_manager_undo (GtkSourceUndoManager *um)
{
case GTK_SOURCE_UNDO_ACTION_DELETE:
insert_text (
- um->priv->document,
- undo_action->action.delete.start,
+ um->priv->document,
+ undo_action->action.delete.start,
undo_action->action.delete.text,
strlen (undo_action->action.delete.text));
if (undo_action->action.delete.forward)
set_cursor (
- um->priv->document,
+ um->priv->document,
undo_action->action.delete.start);
else
set_cursor (
- um->priv->document,
+ um->priv->document,
undo_action->action.delete.end);
break;
-
+
case GTK_SOURCE_UNDO_ACTION_INSERT:
delete_text (
- um->priv->document,
- undo_action->action.insert.pos,
- undo_action->action.insert.pos +
- undo_action->action.insert.chars);
+ um->priv->document,
+ undo_action->action.insert.pos,
+ undo_action->action.insert.pos +
+ undo_action->action.insert.chars);
set_cursor (
- um->priv->document,
+ um->priv->document,
undo_action->action.insert.pos);
break;
@@ -551,29 +551,29 @@ gtk_source_undo_manager_undo (GtkSourceUndoManager *um)
}
gtk_source_undo_manager_end_not_undoable_action_internal (um);
-
+
um->priv->modified_undoing_group = FALSE;
if (!um->priv->can_redo)
{
um->priv->can_redo = TRUE;
- g_signal_emit (G_OBJECT (um),
- undo_manager_signals [CAN_REDO],
- 0,
+ g_signal_emit (G_OBJECT (um),
+ undo_manager_signals [CAN_REDO],
+ 0,
TRUE);
}
if (um->priv->next_redo >= (gint)(g_list_length (um->priv->actions) - 1))
{
um->priv->can_undo = FALSE;
- g_signal_emit (G_OBJECT (um),
- undo_manager_signals [CAN_UNDO],
- 0,
+ g_signal_emit (G_OBJECT (um),
+ undo_manager_signals [CAN_UNDO],
+ 0,
FALSE);
}
}
-void
+void
gtk_source_undo_manager_redo (GtkSourceUndoManager *um)
{
GtkSourceUndoAction *undo_action;
@@ -582,7 +582,7 @@ gtk_source_undo_manager_redo (GtkSourceUndoManager *um)
g_return_if_fail (GTK_SOURCE_IS_UNDO_MANAGER (um));
g_return_if_fail (um->priv != NULL);
g_return_if_fail (um->priv->can_redo);
-
+
undo_action = g_list_nth_data (um->priv->actions, um->priv->next_redo);
g_return_if_fail (undo_action != NULL);
@@ -597,29 +597,29 @@ gtk_source_undo_manager_redo (GtkSourceUndoManager *um)
}
--um->priv->next_redo;
-
+
switch (undo_action->action_type)
{
case GTK_SOURCE_UNDO_ACTION_DELETE:
delete_text (
- um->priv->document,
- undo_action->action.delete.start,
- undo_action->action.delete.end);
+ um->priv->document,
+ undo_action->action.delete.start,
+ undo_action->action.delete.end);
set_cursor (
um->priv->document,
undo_action->action.delete.start);
break;
-
+
case GTK_SOURCE_UNDO_ACTION_INSERT:
set_cursor (
um->priv->document,
undo_action->action.insert.pos);
insert_text (
- um->priv->document,
- undo_action->action.insert.pos,
+ um->priv->document,
+ undo_action->action.insert.pos,
undo_action->action.insert.text,
undo_action->action.insert.length);
@@ -646,7 +646,7 @@ gtk_source_undo_manager_redo (GtkSourceUndoManager *um)
undo_action = NULL;
else
undo_action = g_list_nth_data (um->priv->actions, um->priv->next_redo);
-
+
} while ((undo_action != NULL) && (undo_action->order_in_group > 1));
if (modified)
@@ -689,7 +689,7 @@ gtk_source_undo_action_free (GtkSourceUndoAction *action)
g_free (action);
}
-static void
+static void
gtk_source_undo_manager_free_action_list (GtkSourceUndoManager *um)
{
GList *l;
@@ -712,18 +712,18 @@ gtk_source_undo_manager_free_action_list (GtkSourceUndoManager *um)
}
g_list_free (um->priv->actions);
- um->priv->actions = NULL;
+ um->priv->actions = NULL;
}
-static void
-gtk_source_undo_manager_insert_text_handler (GtkTextBuffer *buffer,
+static void
+gtk_source_undo_manager_insert_text_handler (GtkTextBuffer *buffer,
GtkTextIter *pos,
- const gchar *text,
- gint length,
+ const gchar *text,
+ gint length,
GtkSourceUndoManager *um)
{
GtkSourceUndoAction undo_action;
-
+
if (um->priv->running_not_undoable_actions > 0)
return;
@@ -766,15 +766,15 @@ static void gtk_source_undo_manager_insert_anchor_handler (GtkTextBuffer *buffer
gtk_source_undo_manager_add_action (um, &undo_action);
}
-static void
-gtk_source_undo_manager_delete_range_handler (GtkTextBuffer *buffer,
+static void
+gtk_source_undo_manager_delete_range_handler (GtkTextBuffer *buffer,
GtkTextIter *start,
- GtkTextIter *end,
+ GtkTextIter *end,
GtkSourceUndoManager *um)
{
GtkSourceUndoAction undo_action;
GtkTextIter insert_iter;
-
+
if (um->priv->running_not_undoable_actions > 0)
return;
@@ -805,14 +805,14 @@ gtk_source_undo_manager_delete_range_handler (GtkTextBuffer *buffer,
undo_action.mergeable = TRUE;
undo_action.modified = FALSE;
-
+
gtk_source_undo_manager_add_action (um, &undo_action);
g_free (undo_action.action.delete.text);
}
-static void
+static void
gtk_source_undo_manager_begin_user_action_handler (GtkTextBuffer *buffer, GtkSourceUndoManager *um)
{
g_return_if_fail (GTK_SOURCE_IS_UNDO_MANAGER (um));
@@ -825,11 +825,11 @@ gtk_source_undo_manager_begin_user_action_handler (GtkTextBuffer *buffer, GtkSou
}
static void
-gtk_source_undo_manager_add_action (GtkSourceUndoManager *um,
+gtk_source_undo_manager_add_action (GtkSourceUndoManager *um,
const GtkSourceUndoAction *undo_action)
{
GtkSourceUndoAction* action;
-
+
if (um->priv->next_redo >= 0)
{
gtk_source_undo_manager_free_first_n_actions (um, um->priv->next_redo + 1);
@@ -845,7 +845,7 @@ gtk_source_undo_manager_add_action (GtkSourceUndoManager *um,
if (action->action_type == GTK_SOURCE_UNDO_ACTION_INSERT)
action->action.insert.text = g_strndup (undo_action->action.insert.text, undo_action->action.insert.length);
else if (action->action_type == GTK_SOURCE_UNDO_ACTION_DELETE)
- action->action.delete.text = g_strdup (undo_action->action.delete.text);
+ action->action.delete.text = g_strdup (undo_action->action.delete.text);
else if (action->action_type == GTK_SOURCE_UNDO_ACTION_INSERT_ANCHOR)
{
/* Nothing needs to be done */
@@ -855,16 +855,16 @@ gtk_source_undo_manager_add_action (GtkSourceUndoManager *um,
g_free (action);
g_return_if_reached ();
}
-
+
++um->priv->actions_in_current_group;
action->order_in_group = um->priv->actions_in_current_group;
if (action->order_in_group == 1)
++um->priv->num_of_groups;
-
+
um->priv->actions = g_list_prepend (um->priv->actions, action);
}
-
+
gtk_source_undo_manager_check_list_size (um);
if (!um->priv->can_undo)
@@ -880,8 +880,8 @@ gtk_source_undo_manager_add_action (GtkSourceUndoManager *um,
}
}
-static void
-gtk_source_undo_manager_free_first_n_actions (GtkSourceUndoManager *um,
+static void
+gtk_source_undo_manager_free_first_n_actions (GtkSourceUndoManager *um,
gint n)
{
gint i;
@@ -904,21 +904,21 @@ gtk_source_undo_manager_free_first_n_actions (GtkSourceUndoManager *um,
um->priv->actions = g_list_delete_link (um->priv->actions,
um->priv->actions);
- if (um->priv->actions == NULL)
+ if (um->priv->actions == NULL)
return;
}
}
-static void
+static void
gtk_source_undo_manager_check_list_size (GtkSourceUndoManager *um)
{
gint undo_levels;
-
+
g_return_if_fail (GTK_SOURCE_IS_UNDO_MANAGER (um));
g_return_if_fail (um->priv != NULL);
-
+
undo_levels = gtk_source_undo_manager_get_max_undo_levels (um);
-
+
if (undo_levels < 1)
return;
@@ -926,14 +926,14 @@ gtk_source_undo_manager_check_list_size (GtkSourceUndoManager *um)
{
GtkSourceUndoAction *undo_action;
GList *last;
-
+
last = g_list_last (um->priv->actions);
undo_action = (GtkSourceUndoAction*) last->data;
-
+
do
{
GList *tmp;
-
+
if (undo_action->order_in_group == 1)
--um->priv->num_of_groups;
@@ -945,32 +945,32 @@ gtk_source_undo_manager_check_list_size (GtkSourceUndoManager *um)
tmp = g_list_previous (last);
um->priv->actions = g_list_delete_link (um->priv->actions, last);
last = tmp;
- g_return_if_fail (last != NULL);
+ g_return_if_fail (last != NULL);
undo_action = (GtkSourceUndoAction*) last->data;
- } while ((undo_action->order_in_group > 1) ||
+ } while ((undo_action->order_in_group > 1) ||
(um->priv->num_of_groups > undo_levels));
- }
+ }
}
/**
* gtk_source_undo_manager_merge_action:
- * @um: a #GtkSourceUndoManager.
+ * @um: a #GtkSourceUndoManager.
* @undo_action: a #GtkSourceUndoAction.
- *
+ *
* This function tries to merge the undo action at the top of
* the stack with a new undo action. So when we undo for example
* typing, we can undo the whole word and not each letter by itself.
- *
- * Return Value: %TRUE is merge was sucessful, %FALSE otherwise.
+ *
+ * Return Value: %TRUE is merge was successful, %FALSE otherwise.
**/
-static gboolean
-gtk_source_undo_manager_merge_action (GtkSourceUndoManager *um,
+static gboolean
+gtk_source_undo_manager_merge_action (GtkSourceUndoManager *um,
const GtkSourceUndoAction *undo_action)
{
GtkSourceUndoAction *last_action;
-
+
g_return_val_if_fail (GTK_SOURCE_IS_UNDO_MANAGER (um), FALSE);
g_return_val_if_fail (um->priv != NULL, FALSE);
@@ -990,7 +990,7 @@ gtk_source_undo_manager_merge_action (GtkSourceUndoManager *um,
}
if (undo_action->action_type == GTK_SOURCE_UNDO_ACTION_DELETE)
- {
+ {
if ((last_action->action.delete.forward != undo_action->action.delete.forward) ||
((last_action->action.delete.start != undo_action->action.delete.start) &&
(last_action->action.delete.start != undo_action->action.delete.end)))
@@ -998,14 +998,14 @@ gtk_source_undo_manager_merge_action (GtkSourceUndoManager *um,
last_action->mergeable = FALSE;
return FALSE;
}
-
+
if (last_action->action.delete.start == undo_action->action.delete.start)
{
gchar *str;
-
+
#define L (last_action->action.delete.end - last_action->action.delete.start - 1)
#define g_utf8_get_char_at(p,i) g_utf8_get_char(g_utf8_offset_to_pointer((p),(i)))
-
+
/* Deleted with the delete key */
if ((g_utf8_get_char (undo_action->action.delete.text) != ' ') &&
(g_utf8_get_char (undo_action->action.delete.text) != '\t') &&
@@ -1015,19 +1015,19 @@ gtk_source_undo_manager_merge_action (GtkSourceUndoManager *um,
last_action->mergeable = FALSE;
return FALSE;
}
-
- str = g_strdup_printf ("%s%s", last_action->action.delete.text,
+
+ str = g_strdup_printf ("%s%s", last_action->action.delete.text,
undo_action->action.delete.text);
-
+
g_free (last_action->action.delete.text);
- last_action->action.delete.end += (undo_action->action.delete.end -
+ last_action->action.delete.end += (undo_action->action.delete.end -
undo_action->action.delete.start);
last_action->action.delete.text = str;
}
else
{
gchar *str;
-
+
/* Deleted with the backspace key */
if ((g_utf8_get_char (undo_action->action.delete.text) != ' ') &&
(g_utf8_get_char (undo_action->action.delete.text) != '\t') &&
@@ -1038,9 +1038,9 @@ gtk_source_undo_manager_merge_action (GtkSourceUndoManager *um,
return FALSE;
}
- str = g_strdup_printf ("%s%s", undo_action->action.delete.text,
+ str = g_strdup_printf ("%s%s", undo_action->action.delete.text,
last_action->action.delete.text);
-
+
g_free (last_action->action.delete.text);
last_action->action.delete.start = undo_action->action.delete.start;
last_action->action.delete.text = str;
@@ -1049,10 +1049,10 @@ gtk_source_undo_manager_merge_action (GtkSourceUndoManager *um,
else if (undo_action->action_type == GTK_SOURCE_UNDO_ACTION_INSERT)
{
gchar* str;
-
+
#define I (last_action->action.insert.chars - 1)
-
- if ((undo_action->action.insert.pos !=
+
+ if ((undo_action->action.insert.pos !=
(last_action->action.insert.pos + last_action->action.insert.chars)) ||
((g_utf8_get_char (undo_action->action.insert.text) != ' ') &&
(g_utf8_get_char (undo_action->action.insert.text) != '\t') &&
@@ -1064,9 +1064,9 @@ gtk_source_undo_manager_merge_action (GtkSourceUndoManager *um,
return FALSE;
}
- str = g_strdup_printf ("%s%s", last_action->action.insert.text,
+ str = g_strdup_printf ("%s%s", last_action->action.insert.text,
undo_action->action.insert.text);
-
+
g_free (last_action->action.insert.text);
last_action->action.insert.length += undo_action->action.insert.length;
last_action->action.insert.text = str;
@@ -1080,7 +1080,7 @@ gtk_source_undo_manager_merge_action (GtkSourceUndoManager *um,
else
/* Unknown action inside undo merge encountered */
g_return_val_if_reached (TRUE);
-
+
return TRUE;
}
@@ -1098,7 +1098,7 @@ gtk_source_undo_manager_set_max_undo_levels (GtkSourceUndoManager *um,
gint max_undo_levels)
{
gint old_levels;
-
+
g_return_if_fail (um != NULL);
g_return_if_fail (GTK_SOURCE_IS_UNDO_MANAGER (um));
@@ -1107,7 +1107,7 @@ gtk_source_undo_manager_set_max_undo_levels (GtkSourceUndoManager *um,
if (max_undo_levels < 1)
return;
-
+
if (old_levels > max_undo_levels)
{
/* strip redo actions first */
@@ -1116,7 +1116,7 @@ gtk_source_undo_manager_set_max_undo_levels (GtkSourceUndoManager *um,
gtk_source_undo_manager_free_first_n_actions (um, 1);
um->priv->next_redo--;
}
-
+
/* now remove undo actions if necessary */
gtk_source_undo_manager_check_list_size (um);
@@ -1142,7 +1142,7 @@ gtk_source_undo_manager_modified_changed_handler (GtkTextBuffer *buffer,
{
GtkSourceUndoAction *action;
GList *list;
-
+
g_return_if_fail (GTK_SOURCE_IS_UNDO_MANAGER (um));
g_return_if_fail (um->priv != NULL);
@@ -1157,7 +1157,7 @@ gtk_source_undo_manager_modified_changed_handler (GtkTextBuffer *buffer,
action = NULL;
if (gtk_text_buffer_get_modified (buffer) == FALSE)
- {
+ {
if (action != NULL)
action->mergeable = FALSE;
@@ -1178,7 +1178,7 @@ gtk_source_undo_manager_modified_changed_handler (GtkTextBuffer *buffer,
return;
}
-
+
/* gtk_text_buffer_get_modified (buffer) == TRUE */
g_return_if_fail (um->priv->modified_action == NULL);
diff --git a/pidgin/gtksourceundomanager.h b/pidgin/gtksourceundomanager.h
index 432312e5c0..0148455476 100644
--- a/pidgin/gtksourceundomanager.h
+++ b/pidgin/gtksourceundomanager.h
@@ -4,8 +4,8 @@
* This file is part of GtkSourceView
*
* Copyright (C) 1998, 1999 Alex Roberts, Evan Lawrence
- * Copyright (C) 2000, 2001 Chema Celorio, Paolo Maggi
- * Copyright (C) 2002, 2003 Paolo Maggi
+ * Copyright (C) 2000, 2001 Chema Celorio, Paolo Maggi
+ * Copyright (C) 2002, 2003 Paolo Maggi
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -19,21 +19,21 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02111-1301, USA. * *
*/
-
+
#ifndef __GTK_SOURCE_UNDO_MANAGER_H__
#define __GTK_SOURCE_UNDO_MANAGER_H__
-#include <gtk/gtktextbuffer.h>
+#include <gtk/gtk.h>
-#define GTK_SOURCE_TYPE_UNDO_MANAGER (gtk_source_undo_manager_get_type ())
-#define GTK_SOURCE_UNDO_MANAGER(obj) (GTK_CHECK_CAST ((obj), GTK_SOURCE_TYPE_UNDO_MANAGER, GtkSourceUndoManager))
-#define GTK_SOURCE_UNDO_MANAGER_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GTK_SOURCE_TYPE_UNDO_MANAGER, GtkSourceUndoManagerClass))
-#define GTK_SOURCE_IS_UNDO_MANAGER(obj) (GTK_CHECK_TYPE ((obj), GTK_SOURCE_TYPE_UNDO_MANAGER))
-#define GTK_SOURCE_IS_UNDO_MANAGER_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GTK_SOURCE_TYPE_UNDO_MANAGER))
-#define GTK_SOURCE_UNDO_MANAGER_GET_CLASS(obj) (GTK_CHECK_GET_CLASS ((obj), GTK_SOURCE_TYPE_UNDO_MANAGER, GtkSourceUndoManagerClass))
+#define GTK_SOURCE_TYPE_UNDO_MANAGER (gtk_source_undo_manager_get_type())
+#define GTK_SOURCE_UNDO_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GTK_SOURCE_TYPE_UNDO_MANAGER, GtkSourceUndoManager))
+#define GTK_SOURCE_UNDO_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GTK_SOURCE_TYPE_UNDO_MANAGER, GtkSourceUndoManagerClass))
+#define GTK_SOURCE_IS_UNDO_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GTK_SOURCE_TYPE_UNDO_MANAGER))
+#define GTK_SOURCE_IS_UNDO_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GTK_SOURCE_TYPE_UNDO_MANAGER))
+#define GTK_SOURCE_UNDO_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GTK_SOURCE_TYPE_UNDO_MANAGER, GtkSourceUndoManagerClass))
typedef struct _GtkSourceUndoManager GtkSourceUndoManager;
@@ -44,7 +44,7 @@ typedef struct _GtkSourceUndoManagerPrivate GtkSourceUndoManagerPrivate;
struct _GtkSourceUndoManager
{
GObject base;
-
+
GtkSourceUndoManagerPrivate *priv;
};
@@ -67,14 +67,14 @@ gboolean gtk_source_undo_manager_can_redo (const GtkSourceUndoManager *um);
void gtk_source_undo_manager_undo (GtkSourceUndoManager *um);
void gtk_source_undo_manager_redo (GtkSourceUndoManager *um);
-void gtk_source_undo_manager_begin_not_undoable_action
+void gtk_source_undo_manager_begin_not_undoable_action
(GtkSourceUndoManager *um);
-void gtk_source_undo_manager_end_not_undoable_action
+void gtk_source_undo_manager_end_not_undoable_action
(GtkSourceUndoManager *um);
-gint gtk_source_undo_manager_get_max_undo_levels
+gint gtk_source_undo_manager_get_max_undo_levels
(GtkSourceUndoManager *um);
-void gtk_source_undo_manager_set_max_undo_levels
+void gtk_source_undo_manager_set_max_undo_levels
(GtkSourceUndoManager *um,
gint undo_levels);
diff --git a/pidgin/gtkstatus-icon-theme.c b/pidgin/gtkstatus-icon-theme.c
new file mode 100644
index 0000000000..590fc4c743
--- /dev/null
+++ b/pidgin/gtkstatus-icon-theme.c
@@ -0,0 +1,72 @@
+/*
+ * Status Icon Themes for Pidgin
+ *
+ * Pidgin is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#include "gtkstatus-icon-theme.h"
+
+/******************************************************************************
+ * Globals
+ *****************************************************************************/
+
+static GObjectClass *parent_class = NULL;
+
+/******************************************************************************
+ * GObject Stuff
+ *****************************************************************************/
+
+static void
+pidgin_status_icon_theme_finalize(GObject *obj)
+{
+ parent_class->finalize(obj);
+}
+
+static void
+pidgin_status_icon_theme_class_init(PidginStatusIconThemeClass *klass)
+{
+ GObjectClass *obj_class = G_OBJECT_CLASS(klass);
+
+ parent_class = g_type_class_peek_parent(klass);
+
+ obj_class->finalize = pidgin_status_icon_theme_finalize;
+}
+
+GType
+pidgin_status_icon_theme_get_type(void)
+{
+ static GType type = 0;
+ if (type == 0) {
+ static const GTypeInfo info = {
+ sizeof (PidginStatusIconThemeClass),
+ NULL, /* base_init */
+ NULL, /* base_finalize */
+ (GClassInitFunc)pidgin_status_icon_theme_class_init, /* class_init */
+ NULL, /* class_finalize */
+ NULL, /* class_data */
+ sizeof (PidginStatusIconTheme),
+ 0, /* n_preallocs */
+ NULL,
+ NULL, /* value table */
+ };
+ type = g_type_register_static(PIDGIN_TYPE_ICON_THEME,
+ "PidginStatusIconTheme", &info, 0);
+ }
+ return type;
+}
diff --git a/pidgin/gtkstatus-icon-theme.h b/pidgin/gtkstatus-icon-theme.h
new file mode 100644
index 0000000000..ba8269a778
--- /dev/null
+++ b/pidgin/gtkstatus-icon-theme.h
@@ -0,0 +1,71 @@
+/**
+ * @file gtkstatus-icon-theme.h Pidgin Icon Theme Class API
+ */
+
+/* pidgin
+ *
+ * Pidgin is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#ifndef PIDGIN_STATUS_ICON_THEME_H
+#define PIDGIN_STATUS_ICON_THEME_H
+
+#include <glib-object.h>
+#include "gtkicon-theme.h"
+
+/**
+ * extends PidginIconTheme (gtkicon-theme.h)
+ * A pidgin status icon theme.
+ * This object represents a Pidgin status icon theme.
+ *
+ * PidginStatusIconTheme is a PidginIconTheme Object.
+ */
+typedef struct _PidginStatusIconTheme PidginStatusIconTheme;
+typedef struct _PidginStatusIconThemeClass PidginStatusIconThemeClass;
+
+#define PIDGIN_TYPE_STATUS_ICON_THEME (pidgin_status_icon_theme_get_type ())
+#define PIDGIN_STATUS_ICON_THEME(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PIDGIN_TYPE_STATUS_ICON_THEME, PidginStatusIconTheme))
+#define PIDGIN_STATUS_ICON_THEME_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PIDGIN_TYPE_STATUS_ICON_THEME, PidginStatusIconThemeClass))
+#define PIDGIN_IS_STATUS_ICON_THEME(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PIDGIN_TYPE_STATUS_ICON_THEME))
+#define PIDGIN_IS_STATUS_ICON_THEME_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PIDGIN_TYPE_STATUS_ICON_THEME))
+#define PIDGIN_STATUS_ICON_THEME_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PIDGIN_TYPE_STATUS_ICON_THEME, PidginStatusIconThemeClass))
+
+struct _PidginStatusIconTheme
+{
+ PidginIconTheme parent;
+};
+
+struct _PidginStatusIconThemeClass
+{
+ PidginIconThemeClass parent_class;
+};
+
+/**************************************************************************/
+/** @name Pidgin Status Icon Theme API */
+/**************************************************************************/
+G_BEGIN_DECLS
+
+/**
+ * GObject foo.
+ * @internal.
+ */
+GType pidgin_status_icon_theme_get_type(void);
+
+G_END_DECLS
+#endif /* PIDGIN_STATUS_ICON_THEME_H */
diff --git a/pidgin/gtkstatusbox.c b/pidgin/gtkstatusbox.c
index 94fcd50640..49971183cf 100644
--- a/pidgin/gtkstatusbox.c
+++ b/pidgin/gtkstatusbox.c
@@ -67,7 +67,8 @@
# endif
#endif
-#define TYPING_TIMEOUT 4000
+/* Timeout for typing notifications in seconds */
+#define TYPING_TIMEOUT 4
static void imhtml_changed_cb(GtkTextBuffer *buffer, void *data);
static void imhtml_format_changed_cb(GtkIMHtml *imhtml, GtkIMHtmlButtons buttons, void *data);
@@ -92,11 +93,15 @@ static void pidgin_status_box_popdown(PidginStatusBox *box);
static void do_colorshift (GdkPixbuf *dest, GdkPixbuf *src, int shift);
static void icon_choose_cb(const char *filename, gpointer data);
static void remove_buddy_icon_cb(GtkWidget *w, PidginStatusBox *box);
+static void choose_buddy_icon_cb(GtkWidget *w, PidginStatusBox *box);
enum {
/** A PidginStatusBoxItemType */
TYPE_COLUMN,
+ /** This is the stock-id for the icon. */
+ ICON_STOCK_COLUMN,
+
/**
* This is a GdkPixbuf (the other columns are strings).
* This column is visible.
@@ -141,7 +146,51 @@ enum {
PROP_ICON_SEL,
};
-GtkContainerClass *parent_class = NULL;
+static char *typing_stock_ids[7] = {
+ PIDGIN_STOCK_ANIMATION_TYPING0,
+ PIDGIN_STOCK_ANIMATION_TYPING1,
+ PIDGIN_STOCK_ANIMATION_TYPING2,
+ PIDGIN_STOCK_ANIMATION_TYPING3,
+ PIDGIN_STOCK_ANIMATION_TYPING4,
+ NULL
+};
+
+static char *connecting_stock_ids[] = {
+ PIDGIN_STOCK_ANIMATION_CONNECT0,
+ PIDGIN_STOCK_ANIMATION_CONNECT1,
+ PIDGIN_STOCK_ANIMATION_CONNECT2,
+ PIDGIN_STOCK_ANIMATION_CONNECT3,
+ PIDGIN_STOCK_ANIMATION_CONNECT4,
+ PIDGIN_STOCK_ANIMATION_CONNECT5,
+ PIDGIN_STOCK_ANIMATION_CONNECT6,
+ PIDGIN_STOCK_ANIMATION_CONNECT7,
+ PIDGIN_STOCK_ANIMATION_CONNECT8,
+ PIDGIN_STOCK_ANIMATION_CONNECT9,
+ PIDGIN_STOCK_ANIMATION_CONNECT10,
+ PIDGIN_STOCK_ANIMATION_CONNECT11,
+ PIDGIN_STOCK_ANIMATION_CONNECT12,
+ PIDGIN_STOCK_ANIMATION_CONNECT13,
+ PIDGIN_STOCK_ANIMATION_CONNECT14,
+ PIDGIN_STOCK_ANIMATION_CONNECT15,
+ PIDGIN_STOCK_ANIMATION_CONNECT16,
+ PIDGIN_STOCK_ANIMATION_CONNECT17,
+ PIDGIN_STOCK_ANIMATION_CONNECT18,
+ PIDGIN_STOCK_ANIMATION_CONNECT19,
+ PIDGIN_STOCK_ANIMATION_CONNECT20,
+ PIDGIN_STOCK_ANIMATION_CONNECT21,
+ PIDGIN_STOCK_ANIMATION_CONNECT22,
+ PIDGIN_STOCK_ANIMATION_CONNECT23,
+ PIDGIN_STOCK_ANIMATION_CONNECT24,
+ PIDGIN_STOCK_ANIMATION_CONNECT25,
+ PIDGIN_STOCK_ANIMATION_CONNECT26,
+ PIDGIN_STOCK_ANIMATION_CONNECT27,
+ PIDGIN_STOCK_ANIMATION_CONNECT28,
+ PIDGIN_STOCK_ANIMATION_CONNECT29,
+ PIDGIN_STOCK_ANIMATION_CONNECT30,
+ NULL
+};
+
+static GtkContainerClass *parent_class = NULL;
static void pidgin_status_box_class_init (PidginStatusBoxClass *klass);
static void pidgin_status_box_init (PidginStatusBox *status_box);
@@ -217,6 +266,9 @@ update_to_reflect_account_status(PidginStatusBox *status_box, PurpleAccount *acc
break;
}
+ gtk_imhtml_set_populate_primary_clipboard(
+ GTK_IMHTML(status_box->imhtml), TRUE);
+
if (status_no != -1) {
GtkTreePath *path;
gtk_widget_set_sensitive(GTK_WIDGET(status_box), FALSE);
@@ -266,6 +318,10 @@ icon_box_press_cb(GtkWidget *widget, GdkEventButton *event, PidginStatusBox *box
box->icon_box_menu = gtk_menu_new();
+ menu_item = pidgin_new_item_from_stock(box->icon_box_menu, _("Select Buddy Icon"), GTK_STOCK_ADD,
+ G_CALLBACK(choose_buddy_icon_cb),
+ box, 0, 0, NULL);
+
menu_item = pidgin_new_item_from_stock(box->icon_box_menu, _("Remove"), GTK_STOCK_REMOVE,
G_CALLBACK(remove_buddy_icon_cb),
box, 0, 0, NULL);
@@ -276,13 +332,7 @@ icon_box_press_cb(GtkWidget *widget, GdkEventButton *event, PidginStatusBox *box
event->button, event->time);
} else {
- if (box->buddy_icon_sel) {
- gtk_window_present(GTK_WINDOW(box->buddy_icon_sel));
- return FALSE;
- }
-
- box->buddy_icon_sel = pidgin_buddy_icon_chooser_new(GTK_WINDOW(gtk_widget_get_toplevel(widget)), icon_choose_cb, box);
- gtk_widget_show_all(box->buddy_icon_sel);
+ choose_buddy_icon_cb(widget, box);
}
return FALSE;
}
@@ -534,12 +584,12 @@ pidgin_status_box_finalize(GObject *obj)
for (i = 0; i < G_N_ELEMENTS(statusbox->connecting_pixbufs); i++) {
if (statusbox->connecting_pixbufs[i] != NULL)
- gdk_pixbuf_unref(statusbox->connecting_pixbufs[i]);
+ g_object_unref(G_OBJECT(statusbox->connecting_pixbufs[i]));
}
for (i = 0; i < G_N_ELEMENTS(statusbox->typing_pixbufs); i++) {
if (statusbox->typing_pixbufs[i] != NULL)
- gdk_pixbuf_unref(statusbox->typing_pixbufs[i]);
+ g_object_unref(G_OBJECT(statusbox->typing_pixbufs[i]));
}
g_object_unref(G_OBJECT(statusbox->store));
@@ -597,32 +647,6 @@ pidgin_status_box_class_init (PidginStatusBoxClass *klass)
);
}
-static GdkPixbuf *
-pidgin_status_box_get_pixbuf(PidginStatusBox *status_box, PurpleStatusPrimitive prim)
-{
- GdkPixbuf *pixbuf;
- GtkIconSize icon_size = gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL);
- if (prim == PURPLE_STATUS_UNAVAILABLE)
- pixbuf = gtk_widget_render_icon (GTK_WIDGET(status_box), PIDGIN_STOCK_STATUS_BUSY,
- icon_size, "PidginStatusBox");
- else if (prim == PURPLE_STATUS_AWAY)
- pixbuf = gtk_widget_render_icon (GTK_WIDGET(status_box), PIDGIN_STOCK_STATUS_AWAY,
- icon_size, "PidginStatusBox");
- else if (prim == PURPLE_STATUS_EXTENDED_AWAY)
- pixbuf = gtk_widget_render_icon (GTK_WIDGET(status_box), PIDGIN_STOCK_STATUS_XA,
- icon_size, "PidginStatusBox");
- else if (prim == PURPLE_STATUS_INVISIBLE)
- pixbuf = gtk_widget_render_icon (GTK_WIDGET(status_box), PIDGIN_STOCK_STATUS_INVISIBLE,
- icon_size, "PidginStatusBox");
- else if (prim == PURPLE_STATUS_OFFLINE)
- pixbuf = gtk_widget_render_icon (GTK_WIDGET(status_box), PIDGIN_STOCK_STATUS_OFFLINE,
- icon_size, "PidginStatusBox");
- else
- pixbuf = gtk_widget_render_icon (GTK_WIDGET(status_box), PIDGIN_STOCK_STATUS_AVAILABLE,
- icon_size, "PidginStatusBox");
- return pixbuf;
-}
-
/**
* This updates the text displayed on the status box so that it shows
* the current status. This is the only function in this file that
@@ -636,7 +660,8 @@ pidgin_status_box_refresh(PidginStatusBox *status_box)
char aa_color[8];
PurpleSavedStatus *saved_status;
char *primary, *secondary, *text;
- GdkPixbuf *pixbuf, *emblem = NULL;
+ const char *stock = NULL;
+ GdkPixbuf *emblem = NULL;
GtkTreePath *path;
gboolean account_status = FALSE;
PurpleAccount *acct = (status_box->account) ? status_box->account : status_box->token_status_account;
@@ -712,21 +737,21 @@ pidgin_status_box_refresh(PidginStatusBox *status_box)
/* Pixbuf */
if (status_box->typing != 0)
- pixbuf = status_box->typing_pixbufs[status_box->typing_index];
+ stock = typing_stock_ids[status_box->typing_index];
else if (status_box->connecting)
- pixbuf = status_box->connecting_pixbufs[status_box->connecting_index];
+ stock = connecting_stock_ids[status_box->connecting_index];
else
{
PurpleStatusType *status_type;
PurpleStatusPrimitive prim;
if (account_status) {
- status_type = purple_status_get_type(purple_account_get_active_status(acct));
+ status_type = purple_status_get_type(purple_account_get_active_status(acct));
prim = purple_status_type_get_primitive(status_type);
} else {
- prim = purple_savedstatus_get_type(saved_status);
+ prim = purple_savedstatus_get_type(saved_status);
}
- pixbuf = pidgin_status_box_get_pixbuf(status_box, prim);
+ stock = pidgin_stock_id_from_status_primitive(prim);
}
if (status_box->account != NULL) {
@@ -748,13 +773,11 @@ pidgin_status_box_refresh(PidginStatusBox *status_box)
* really need to be a list store?)
*/
gtk_list_store_set(status_box->store, &(status_box->iter),
- ICON_COLUMN, pixbuf,
+ ICON_STOCK_COLUMN, (gpointer)stock,
TEXT_COLUMN, text,
EMBLEM_COLUMN, emblem,
EMBLEM_VISIBLE_COLUMN, (emblem != NULL),
-1);
- if ((status_box->typing == 0) && (!status_box->connecting))
- g_object_unref(pixbuf);
g_free(text);
if (emblem)
g_object_unref(emblem);
@@ -922,7 +945,6 @@ static void
add_popular_statuses(PidginStatusBox *statusbox)
{
GList *list, *cur;
- GdkPixbuf *pixbuf;
list = purple_savedstatuses_get_popular(6);
if (list == NULL)
@@ -942,9 +964,6 @@ add_popular_statuses(PidginStatusBox *statusbox)
/* Get an appropriate status icon */
prim = purple_savedstatus_get_type(saved);
-
- pixbuf = pidgin_status_box_get_pixbuf(statusbox, prim);
-
if (purple_savedstatus_is_transient(saved))
{
/*
@@ -965,11 +984,9 @@ add_popular_statuses(PidginStatusBox *statusbox)
}
pidgin_status_box_add(statusbox, type,
- pixbuf, purple_savedstatus_get_title(saved), stripped,
+ NULL, purple_savedstatus_get_title(saved), stripped,
GINT_TO_POINTER(purple_savedstatus_get_creation_time(saved)));
g_free(stripped);
- if (pixbuf != NULL)
- g_object_unref(G_OBJECT(pixbuf));
}
g_list_free(list);
@@ -1030,7 +1047,6 @@ add_account_statuses(PidginStatusBox *status_box, PurpleAccount *account)
{
/* Per-account */
GList *l;
- GdkPixbuf *pixbuf;
for (l = purple_account_get_status_types(account); l != NULL; l = l->next)
{
@@ -1043,22 +1059,17 @@ add_account_statuses(PidginStatusBox *status_box, PurpleAccount *account)
prim = purple_status_type_get_primitive(status_type);
- pixbuf = pidgin_status_box_get_pixbuf(status_box, prim);
-
pidgin_status_box_add(PIDGIN_STATUS_BOX(status_box),
- PIDGIN_STATUS_BOX_TYPE_PRIMITIVE, pixbuf,
+ PIDGIN_STATUS_BOX_TYPE_PRIMITIVE, NULL,
purple_status_type_get_name(status_type),
NULL,
GINT_TO_POINTER(purple_status_type_get_primitive(status_type)));
- if (pixbuf != NULL)
- g_object_unref(pixbuf);
}
}
static void
pidgin_status_box_regenerate(PidginStatusBox *status_box)
{
- GdkPixbuf *pixbuf, *pixbuf2, *pixbuf3, *pixbuf4, *pixbuf5;
GtkIconSize icon_size;
icon_size = gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL);
@@ -1073,8 +1084,6 @@ pidgin_status_box_regenerate(PidginStatusBox *status_box)
if (status_box->account == NULL)
{
- pixbuf = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_STATUS_AVAILABLE,
- icon_size, "PidginStatusBox");
/* Do all the currently enabled accounts have the same statuses?
* If so, display them instead of our global list.
*/
@@ -1082,25 +1091,11 @@ pidgin_status_box_regenerate(PidginStatusBox *status_box)
add_account_statuses(status_box, status_box->token_status_account);
} else {
/* Global */
- pixbuf2 = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_STATUS_AWAY,
- icon_size, "PidginStatusBox");
- pixbuf3 = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_STATUS_OFFLINE,
- icon_size, "PidginStatusBox");
- pixbuf4 = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_STATUS_INVISIBLE,
- icon_size, "PidginStatusBox");
- pixbuf5 = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_STATUS_BUSY,
- icon_size, "PidginStatusBox");
-
- pidgin_status_box_add(PIDGIN_STATUS_BOX(status_box), PIDGIN_STATUS_BOX_TYPE_PRIMITIVE, pixbuf, _("Available"), NULL, GINT_TO_POINTER(PURPLE_STATUS_AVAILABLE));
- pidgin_status_box_add(PIDGIN_STATUS_BOX(status_box), PIDGIN_STATUS_BOX_TYPE_PRIMITIVE, pixbuf2, _("Away"), NULL, GINT_TO_POINTER(PURPLE_STATUS_AWAY));
- pidgin_status_box_add(PIDGIN_STATUS_BOX(status_box), PIDGIN_STATUS_BOX_TYPE_PRIMITIVE, pixbuf5, _("Do not disturb"), NULL, GINT_TO_POINTER(PURPLE_STATUS_UNAVAILABLE));
- pidgin_status_box_add(PIDGIN_STATUS_BOX(status_box), PIDGIN_STATUS_BOX_TYPE_PRIMITIVE, pixbuf4, _("Invisible"), NULL, GINT_TO_POINTER(PURPLE_STATUS_INVISIBLE));
- pidgin_status_box_add(PIDGIN_STATUS_BOX(status_box), PIDGIN_STATUS_BOX_TYPE_PRIMITIVE, pixbuf3, _("Offline"), NULL, GINT_TO_POINTER(PURPLE_STATUS_OFFLINE));
-
- if (pixbuf2) g_object_unref(G_OBJECT(pixbuf2));
- if (pixbuf3) g_object_unref(G_OBJECT(pixbuf3));
- if (pixbuf4) g_object_unref(G_OBJECT(pixbuf4));
- if (pixbuf5) g_object_unref(G_OBJECT(pixbuf5));
+ pidgin_status_box_add(PIDGIN_STATUS_BOX(status_box), PIDGIN_STATUS_BOX_TYPE_PRIMITIVE, NULL, _("Available"), NULL, GINT_TO_POINTER(PURPLE_STATUS_AVAILABLE));
+ pidgin_status_box_add(PIDGIN_STATUS_BOX(status_box), PIDGIN_STATUS_BOX_TYPE_PRIMITIVE, NULL, _("Away"), NULL, GINT_TO_POINTER(PURPLE_STATUS_AWAY));
+ pidgin_status_box_add(PIDGIN_STATUS_BOX(status_box), PIDGIN_STATUS_BOX_TYPE_PRIMITIVE, NULL, _("Do not disturb"), NULL, GINT_TO_POINTER(PURPLE_STATUS_UNAVAILABLE));
+ pidgin_status_box_add(PIDGIN_STATUS_BOX(status_box), PIDGIN_STATUS_BOX_TYPE_PRIMITIVE, NULL, _("Invisible"), NULL, GINT_TO_POINTER(PURPLE_STATUS_INVISIBLE));
+ pidgin_status_box_add(PIDGIN_STATUS_BOX(status_box), PIDGIN_STATUS_BOX_TYPE_PRIMITIVE, NULL, _("Offline"), NULL, GINT_TO_POINTER(PURPLE_STATUS_OFFLINE));
}
add_popular_statuses(status_box);
@@ -1108,7 +1103,6 @@ pidgin_status_box_regenerate(PidginStatusBox *status_box)
pidgin_status_box_add_separator(PIDGIN_STATUS_BOX(status_box));
pidgin_status_box_add(PIDGIN_STATUS_BOX(status_box), PIDGIN_STATUS_BOX_TYPE_CUSTOM, NULL, _("New status..."), NULL, NULL);
pidgin_status_box_add(PIDGIN_STATUS_BOX(status_box), PIDGIN_STATUS_BOX_TYPE_SAVED, NULL, _("Saved statuses..."), NULL, NULL);
- if (pixbuf) g_object_unref(G_OBJECT(pixbuf));
status_menu_refresh_iter(status_box);
pidgin_status_box_refresh(status_box);
@@ -1154,8 +1148,10 @@ static gboolean imhtml_remove_focus(GtkWidget *w, GdkEventKey *event, PidginStat
/* Reset the status if Escape was pressed */
if (event->keyval == GDK_Escape)
{
- g_source_remove(status_box->typing);
+ purple_timeout_remove(status_box->typing);
status_box->typing = 0;
+ gtk_imhtml_set_populate_primary_clipboard(
+ GTK_IMHTML(status_box->imhtml), TRUE);
if (status_box->account != NULL)
update_to_reflect_account_status(status_box, status_box->account,
purple_account_get_active_status(status_box->account));
@@ -1167,8 +1163,8 @@ static gboolean imhtml_remove_focus(GtkWidget *w, GdkEventKey *event, PidginStat
}
pidgin_status_box_pulse_typing(status_box);
- g_source_remove(status_box->typing);
- status_box->typing = g_timeout_add(TYPING_TIMEOUT, (GSourceFunc)remove_typing_cb, status_box);
+ purple_timeout_remove(status_box->typing);
+ status_box->typing = purple_timeout_add_seconds(TYPING_TIMEOUT, (GSourceFunc)remove_typing_cb, status_box);
return FALSE;
}
@@ -1200,45 +1196,26 @@ cache_pixbufs(PidginStatusBox *status_box)
for (i = 0; i < G_N_ELEMENTS(status_box->connecting_pixbufs); i++) {
if (status_box->connecting_pixbufs[i] != NULL)
- gdk_pixbuf_unref(status_box->connecting_pixbufs[i]);
+ g_object_unref(G_OBJECT(status_box->connecting_pixbufs[i]));
+ if (connecting_stock_ids[i])
+ status_box->connecting_pixbufs[i] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox),
+ connecting_stock_ids[i], icon_size, "PidginStatusBox");
+ else
+ status_box->connecting_pixbufs[i] = NULL;
}
-
status_box->connecting_index = 0;
-#define CACHE_ANIMATION_CONNECT(index) \
- status_box->connecting_pixbufs[index] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox),\
- PIDGIN_STOCK_ANIMATION_CONNECT ## index, icon_size, "PidginStatusBox")
-
- CACHE_ANIMATION_CONNECT(0);
- CACHE_ANIMATION_CONNECT(1);
- CACHE_ANIMATION_CONNECT(2);
- CACHE_ANIMATION_CONNECT(3);
- CACHE_ANIMATION_CONNECT(4);
- CACHE_ANIMATION_CONNECT(5);
- CACHE_ANIMATION_CONNECT(6);
- CACHE_ANIMATION_CONNECT(7);
- CACHE_ANIMATION_CONNECT(8);
-
-#undef CACHE_ANIMATION_CONNECT
for (i = 0; i < G_N_ELEMENTS(status_box->typing_pixbufs); i++) {
if (status_box->typing_pixbufs[i] != NULL)
- gdk_pixbuf_unref(status_box->typing_pixbufs[i]);
+ g_object_unref(G_OBJECT(status_box->typing_pixbufs[i]));
+ if (typing_stock_ids[i])
+ status_box->typing_pixbufs[i] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox),
+ typing_stock_ids[i], icon_size, "PidginStatusBox");
+ else
+ status_box->typing_pixbufs[i] = NULL;
}
-
status_box->typing_index = 0;
-
-#define CACHE_ANIMATION_TYPING(index) \
- status_box->typing_pixbufs[index] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), \
- PIDGIN_STOCK_ANIMATION_TYPING ## index, icon_size, "PidginStatusBox")
-
- CACHE_ANIMATION_TYPING(0);
- CACHE_ANIMATION_TYPING(1);
- CACHE_ANIMATION_TYPING(2);
- CACHE_ANIMATION_TYPING(3);
- CACHE_ANIMATION_TYPING(4);
-
-#undef CACHE_ANIMATION_TYPING
}
static void account_enabled_cb(PurpleAccount *acct, PidginStatusBox *status_box)
@@ -1551,6 +1528,17 @@ remove_buddy_icon_cb(GtkWidget *w, PidginStatusBox *box)
}
static void
+choose_buddy_icon_cb(GtkWidget *w, PidginStatusBox *box)
+{
+ if (box->buddy_icon_sel) {
+ gtk_window_present(GTK_WINDOW(box->buddy_icon_sel));
+ } else {
+ box->buddy_icon_sel = pidgin_buddy_icon_chooser_new(GTK_WINDOW(gtk_widget_get_toplevel(w)), icon_choose_cb, box);
+ gtk_widget_show_all(box->buddy_icon_sel);
+ }
+}
+
+static void
icon_choose_cb(const char *filename, gpointer data)
{
PidginStatusBox *box = data;
@@ -1647,7 +1635,7 @@ treeview_button_release_cb(GtkWidget *widget, GdkEventButton *event, PidginStatu
pidgin_status_box_popdown (status_box);
return TRUE;
} else if (ewidget == status_box->toggle_button) {
- status_box->popup_in_progress = TRUE;
+ status_box->popup_in_progress = TRUE;
}
/* released outside treeview */
@@ -1699,7 +1687,7 @@ treeview_key_press_event(GtkWidget *widget,
gtk_tree_path_free (path);
return ret;
}
- }
+ }
}
return FALSE;
}
@@ -1778,9 +1766,9 @@ pidgin_status_box_init (PidginStatusBox *status_box)
status_box->vsep = gtk_vseparator_new();
status_box->arrow = gtk_arrow_new (GTK_ARROW_DOWN, GTK_SHADOW_NONE);
- status_box->store = gtk_list_store_new(NUM_COLUMNS, G_TYPE_INT, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING,
+ status_box->store = gtk_list_store_new(NUM_COLUMNS, G_TYPE_INT, G_TYPE_STRING, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING,
G_TYPE_STRING, G_TYPE_POINTER, GDK_TYPE_PIXBUF, G_TYPE_BOOLEAN);
- status_box->dropdown_store = gtk_list_store_new(NUM_COLUMNS, G_TYPE_INT, GDK_TYPE_PIXBUF, G_TYPE_STRING,
+ status_box->dropdown_store = gtk_list_store_new(NUM_COLUMNS, G_TYPE_INT, G_TYPE_STRING, GDK_TYPE_PIXBUF, G_TYPE_STRING,
G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_STRING, G_TYPE_BOOLEAN);
gtk_cell_view_set_model(GTK_CELL_VIEW(status_box->cell_view), GTK_TREE_MODEL(status_box->store));
@@ -1855,7 +1843,7 @@ pidgin_status_box_init (PidginStatusBox *status_box)
gtk_tree_view_column_pack_start(status_box->column, icon_rend, FALSE);
gtk_tree_view_column_pack_start(status_box->column, text_rend, TRUE);
gtk_tree_view_column_pack_start(status_box->column, emblem_rend, FALSE);
- gtk_tree_view_column_set_attributes(status_box->column, icon_rend, "pixbuf", ICON_COLUMN, NULL);
+ gtk_tree_view_column_set_attributes(status_box->column, icon_rend, "stock-id", ICON_STOCK_COLUMN, NULL);
gtk_tree_view_column_set_attributes(status_box->column, text_rend, "markup", TEXT_COLUMN, NULL);
gtk_tree_view_column_set_attributes(status_box->column, emblem_rend, "stock-id", EMBLEM_COLUMN, "visible", EMBLEM_VISIBLE_COLUMN, NULL);
gtk_container_add(GTK_CONTAINER(status_box->scrolled_window), status_box->tree_view);
@@ -1874,7 +1862,7 @@ pidgin_status_box_init (PidginStatusBox *status_box)
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(status_box->cell_view), status_box->icon_rend, FALSE);
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(status_box->cell_view), status_box->text_rend, TRUE);
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(status_box->cell_view), emblem_rend, FALSE);
- gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(status_box->cell_view), status_box->icon_rend, "pixbuf", ICON_COLUMN, NULL);
+ gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(status_box->cell_view), status_box->icon_rend, "stock-id", ICON_STOCK_COLUMN, NULL);
gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(status_box->cell_view), status_box->text_rend, "markup", TEXT_COLUMN, NULL);
gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(status_box->cell_view), emblem_rend, "pixbuf", EMBLEM_COLUMN, "visible", EMBLEM_VISIBLE_COLUMN, NULL);
#if GTK_CHECK_VERSION(2, 6, 0)
@@ -1904,7 +1892,7 @@ pidgin_status_box_init (PidginStatusBox *status_box)
g_signal_connect(G_OBJECT(status_box->imhtml), "key_press_event",
G_CALLBACK(imhtml_remove_focus), status_box);
g_signal_connect_swapped(G_OBJECT(status_box->imhtml), "message_send", G_CALLBACK(remove_typing_cb), status_box);
- gtk_imhtml_set_editable(GTK_IMHTML(status_box->imhtml), TRUE);
+
#ifdef USE_GTKSPELL
if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/spellcheck"))
pidgin_setup_gtkspell(GTK_TEXT_VIEW(status_box->imhtml));
@@ -2133,7 +2121,8 @@ pidgin_status_box_new_with_account(PurpleAccount *account)
*
* @param status_box The status box itself.
* @param type A PidginStatusBoxItemType.
- * @param pixbuf The icon to associate with this row in the menu.
+ * @param pixbuf The icon to associate with this row in the menu. The
+ * function will try to decide a pixbuf if none is given.
* @param title The title of this item. For the primitive entries,
* this is something like "Available" or "Away." For
* the saved statuses, this is something like
@@ -2149,10 +2138,12 @@ pidgin_status_box_new_with_account(PurpleAccount *account)
* creation timestamp.
*/
void
-pidgin_status_box_add(PidginStatusBox *status_box, PidginStatusBoxItemType type, GdkPixbuf *pixbuf, const char *title, const char *desc, gpointer data)
+pidgin_status_box_add(PidginStatusBox *status_box, PidginStatusBoxItemType type, GdkPixbuf *pixbuf,
+ const char *title, const char *desc, gpointer data)
{
GtkTreeIter iter;
char *text;
+ const char *stock = NULL;
if (desc == NULL)
{
@@ -2179,10 +2170,25 @@ pidgin_status_box_add(PidginStatusBox *status_box, PidginStatusBoxItemType type,
g_free(escaped_desc);
}
+ if (!pixbuf) {
+ PurpleStatusPrimitive prim = PURPLE_STATUS_UNSET;
+ if (type == PIDGIN_STATUS_BOX_TYPE_PRIMITIVE) {
+ prim = GPOINTER_TO_INT(data);
+ } else if (type == PIDGIN_STATUS_BOX_TYPE_SAVED_POPULAR ||
+ type == PIDGIN_STATUS_BOX_TYPE_POPULAR) {
+ PurpleSavedStatus *saved = purple_savedstatus_find_by_creation_time(GPOINTER_TO_INT(data));
+ if (saved) {
+ prim = purple_savedstatus_get_type(saved);
+ }
+ }
+
+ stock = pidgin_stock_id_from_status_primitive(prim);
+ }
+
gtk_list_store_append(status_box->dropdown_store, &iter);
gtk_list_store_set(status_box->dropdown_store, &iter,
TYPE_COLUMN, type,
- ICON_COLUMN, pixbuf,
+ ICON_STOCK_COLUMN, stock,
TEXT_COLUMN, text,
TITLE_COLUMN, title,
DESC_COLUMN, desc,
@@ -2303,20 +2309,16 @@ pidgin_status_box_pulse_connecting(PidginStatusBox *status_box)
{
if (!status_box)
return;
- if (status_box->connecting_index == 8)
+ if (!connecting_stock_ids[++status_box->connecting_index])
status_box->connecting_index = 0;
- else
- status_box->connecting_index++;
pidgin_status_box_refresh(status_box);
}
static void
pidgin_status_box_pulse_typing(PidginStatusBox *status_box)
{
- if (status_box->typing_index == 4)
+ if (!typing_stock_ids[++status_box->typing_index])
status_box->typing_index = 0;
- else
- status_box->typing_index++;
pidgin_status_box_refresh(status_box);
}
@@ -2530,7 +2532,7 @@ static void update_size(PidginStatusBox *status_box)
{
GtkTextBuffer *buffer;
GtkTextIter iter;
- int wrapped_lines;
+ int display_lines;
int lines;
GdkRectangle oneline;
int height;
@@ -2546,28 +2548,44 @@ static void update_size(PidginStatusBox *status_box)
buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(status_box->imhtml));
height = 0;
- wrapped_lines = 1;
+ display_lines = 1;
gtk_text_buffer_get_start_iter(buffer, &iter);
do {
gtk_text_view_get_iter_location(GTK_TEXT_VIEW(status_box->imhtml), &iter, &oneline);
height += oneline.height;
- wrapped_lines++;
- if (wrapped_lines > 4)
- break;
- } while (gtk_text_view_forward_display_line(GTK_TEXT_VIEW(status_box->imhtml), &iter));
+ display_lines++;
+ } while (display_lines <= 4 &&
+ gtk_text_view_forward_display_line(GTK_TEXT_VIEW(status_box->imhtml), &iter));
+
+ /*
+ * This check fixes the case where the last character entered is a
+ * newline (shift+return). For some reason the
+ * gtk_text_view_forward_display_line() function doesn't treat this
+ * like a new line, and so we think the input box only needs to be
+ * two lines instead of three, for example. So we check if the
+ * last character was a newline and add some extra height if so.
+ */
+ if (display_lines <= 4
+ && gtk_text_iter_backward_char(&iter)
+ && gtk_text_iter_get_char(&iter) == '\n')
+ {
+ gtk_text_view_get_iter_location(GTK_TEXT_VIEW(status_box->imhtml), &iter, &oneline);
+ height += oneline.height;
+ display_lines++;
+ }
lines = gtk_text_buffer_get_line_count(buffer);
/* Show a maximum of 4 lines */
lines = MIN(lines, 4);
- wrapped_lines = MIN(wrapped_lines, 4);
+ display_lines = MIN(display_lines, 4);
pad_top = gtk_text_view_get_pixels_above_lines(GTK_TEXT_VIEW(status_box->imhtml));
pad_bottom = gtk_text_view_get_pixels_below_lines(GTK_TEXT_VIEW(status_box->imhtml));
pad_inside = gtk_text_view_get_pixels_inside_wrap(GTK_TEXT_VIEW(status_box->imhtml));
height += (pad_top + pad_bottom) * lines;
- height += (pad_inside) * (wrapped_lines - lines);
+ height += (pad_inside) * (display_lines - lines);
gtk_widget_set_size_request(status_box->vbox, -1, height + PIDGIN_HIG_BOX_SPACE);
}
@@ -2581,7 +2599,10 @@ static void remove_typing_cb(PidginStatusBox *status_box)
return;
}
- g_source_remove(status_box->typing);
+ gtk_imhtml_set_populate_primary_clipboard(
+ GTK_IMHTML(status_box->imhtml), TRUE);
+
+ purple_timeout_remove(status_box->typing);
status_box->typing = 0;
activate_currently_selected_status(status_box);
@@ -2609,7 +2630,7 @@ static void pidgin_status_box_changed(PidginStatusBox *status_box)
DATA_COLUMN, &data,
-1);
if (status_box->typing != 0)
- g_source_remove(status_box->typing);
+ purple_timeout_remove(status_box->typing);
status_box->typing = 0;
if (GTK_WIDGET_IS_SENSITIVE(GTK_WIDGET(status_box)))
@@ -2677,9 +2698,13 @@ static void pidgin_status_box_changed(PidginStatusBox *status_box)
GtkTextIter start, end;
GtkTextBuffer *buffer;
gtk_widget_show_all(status_box->vbox);
- status_box->typing = g_timeout_add(TYPING_TIMEOUT, (GSourceFunc)remove_typing_cb, status_box);
+ status_box->typing = purple_timeout_add_seconds(TYPING_TIMEOUT, (GSourceFunc)remove_typing_cb, status_box);
gtk_widget_grab_focus(status_box->imhtml);
buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(status_box->imhtml));
+
+ gtk_imhtml_set_populate_primary_clipboard(
+ GTK_IMHTML(status_box->imhtml), FALSE);
+
gtk_text_buffer_get_bounds(buffer, &start, &end);
gtk_text_buffer_move_mark(buffer, gtk_text_buffer_get_mark(buffer, "insert"), &end);
gtk_text_buffer_move_mark(buffer, gtk_text_buffer_get_mark(buffer, "selection_bound"), &start);
@@ -2726,9 +2751,9 @@ static void imhtml_changed_cb(GtkTextBuffer *buffer, void *data)
{
if (status_box->typing != 0) {
pidgin_status_box_pulse_typing(status_box);
- g_source_remove(status_box->typing);
+ purple_timeout_remove(status_box->typing);
}
- status_box->typing = g_timeout_add(TYPING_TIMEOUT, (GSourceFunc)remove_typing_cb, status_box);
+ status_box->typing = purple_timeout_add_seconds(TYPING_TIMEOUT, (GSourceFunc)remove_typing_cb, status_box);
}
pidgin_status_box_refresh(status_box);
}
diff --git a/pidgin/gtkstatusbox.h b/pidgin/gtkstatusbox.h
index bd116b72b1..37b536788f 100644
--- a/pidgin/gtkstatusbox.h
+++ b/pidgin/gtkstatusbox.h
@@ -34,8 +34,6 @@
#include "imgstore.h"
#include "savedstatuses.h"
#include "status.h"
-#include <gtk/gtktreemodel.h>
-#include <gtk/gtktreeview.h>
G_BEGIN_DECLS
diff --git a/pidgin/gtkthemes.c b/pidgin/gtkthemes.c
index 22b15a30b0..c194a70ecc 100644
--- a/pidgin/gtkthemes.c
+++ b/pidgin/gtkthemes.c
@@ -83,7 +83,7 @@ void pidgin_themes_remove_smiley_theme(const char *file)
{
char *theme_dir = NULL, *last_slash = NULL;
g_return_if_fail(NULL != file);
-
+
if (!g_file_test(file, G_FILE_TEST_EXISTS)) return;
if ((theme_dir = g_strdup(file)) == NULL) return ;
@@ -169,12 +169,12 @@ pidgin_themes_destroy_smiley_theme_smileys(struct smiley_theme *theme)
for (wer = theme->list; wer != NULL; wer = theme->list) {
while (wer->smileys) {
GtkIMHtmlSmiley *uio = wer->smileys->data;
-
+
if (uio->imhtml) {
g_signal_handlers_disconnect_matched(uio->imhtml, G_SIGNAL_MATCH_DATA,
0, 0, NULL, NULL, uio);
}
-
+
if (uio->icon)
g_object_unref(uio->icon);
if (g_hash_table_lookup(already_freed, uio->file) == NULL) {
diff --git a/pidgin/gtkutils.c b/pidgin/gtkutils.c
index 4a1ba44b51..b0a48ac3ae 100644
--- a/pidgin/gtkutils.c
+++ b/pidgin/gtkutils.c
@@ -56,6 +56,9 @@
#include "signals.h"
#include "util.h"
+#include "gtkaccount.h"
+#include "gtkprefs.h"
+
#include "gtkconv.h"
#include "gtkdialogs.h"
#include "gtkimhtml.h"
@@ -71,6 +74,7 @@ typedef struct {
} AopMenu;
static guint accels_save_timer = 0;
+static GList *gnome_url_handlers = NULL;
static gboolean
url_clicked_idle_cb(gpointer data)
@@ -80,10 +84,12 @@ url_clicked_idle_cb(gpointer data)
return FALSE;
}
-static void
-url_clicked_cb(GtkWidget *w, const char *uri)
+static gboolean
+url_clicked_cb(GtkIMHtml *unused, GtkIMHtmlLink *link)
{
+ const char *uri = gtk_imhtml_link_get_url(link);
g_idle_add(url_clicked_idle_cb, g_strdup(uri));
+ return TRUE;
}
static GtkIMHtmlFuncs gtkimhtml_cbs = {
@@ -102,9 +108,6 @@ pidgin_setup_imhtml(GtkWidget *imhtml)
g_return_if_fail(imhtml != NULL);
g_return_if_fail(GTK_IS_IMHTML(imhtml));
- g_signal_connect(G_OBJECT(imhtml), "url_clicked",
- G_CALLBACK(url_clicked_cb), NULL);
-
pidgin_themes_smiley_themeize(imhtml);
gtk_imhtml_set_funcs(GTK_IMHTML(imhtml), &gtkimhtml_cbs);
@@ -355,7 +358,7 @@ GtkWidget *pidgin_new_item(GtkWidget *menu, const char *str)
}
GtkWidget *pidgin_new_check_item(GtkWidget *menu, const char *str,
- GtkSignalFunc sf, gpointer data, gboolean checked)
+ GCallback cb, gpointer data, gboolean checked)
{
GtkWidget *menuitem;
menuitem = gtk_check_menu_item_new_with_mnemonic(str);
@@ -365,8 +368,8 @@ GtkWidget *pidgin_new_check_item(GtkWidget *menu, const char *str,
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), checked);
- if (sf)
- g_signal_connect(G_OBJECT(menuitem), "activate", sf, data);
+ if (cb)
+ g_signal_connect(G_OBJECT(menuitem), "activate", cb, data);
gtk_widget_show_all(menuitem);
@@ -436,7 +439,7 @@ pidgin_pixbuf_button_from_stock(const char *text, const char *icon,
}
-GtkWidget *pidgin_new_item_from_stock(GtkWidget *menu, const char *str, const char *icon, GtkSignalFunc sf, gpointer data, guint accel_key, guint accel_mods, char *mod)
+GtkWidget *pidgin_new_item_from_stock(GtkWidget *menu, const char *str, const char *icon, GCallback cb, gpointer data, guint accel_key, guint accel_mods, char *mod)
{
GtkWidget *menuitem;
/*
@@ -453,8 +456,8 @@ GtkWidget *pidgin_new_item_from_stock(GtkWidget *menu, const char *str, const ch
if (menu)
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
- if (sf)
- g_signal_connect(G_OBJECT(menuitem), "activate", sf, data);
+ if (cb)
+ g_signal_connect(G_OBJECT(menuitem), "activate", cb, data);
if (icon != NULL) {
image = gtk_image_new_from_stock(icon, gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL));
@@ -522,7 +525,7 @@ aop_option_menu_get_selected(GtkWidget *optmenu, GtkWidget **p_item)
GtkWidget *item = gtk_menu_get_active(GTK_MENU(menu));
if (p_item)
(*p_item) = item;
- return g_object_get_data(G_OBJECT(item), "aop_per_item_data");
+ return item ? g_object_get_data(G_OBJECT(item), "aop_per_item_data") : NULL;
}
static void
@@ -567,7 +570,7 @@ aop_menu_item_new(GtkSizeGroup *sg, GdkPixbuf *pixbuf, const char *lbl, gpointer
gtk_widget_show (label);
gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT);
gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
-
+
gtk_container_add(GTK_CONTAINER(item), hbox);
gtk_box_pack_start(GTK_BOX(hbox), image, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0);
@@ -947,7 +950,7 @@ pidgin_save_accels_cb(GtkAccelGroup *accel_group, guint arg1,
"accel changed, scheduling save.\n");
if (!accels_save_timer)
- accels_save_timer = g_timeout_add(5000, pidgin_save_accels,
+ accels_save_timer = purple_timeout_add_seconds(5, pidgin_save_accels,
NULL);
}
@@ -1461,7 +1464,7 @@ static void dnd_image_ok_callback(_DndData *data, int choice)
str);
g_free(str);
- return;
+ break;
}
buddy = purple_find_buddy(data->account, data->who);
@@ -1491,7 +1494,7 @@ static void dnd_image_ok_callback(_DndData *data, int choice)
g_error_free(err);
g_free(str);
- return;
+ break;
}
id = purple_imgstore_add_with_id(filedata, size, data->filename);
@@ -1624,7 +1627,7 @@ pidgin_dnd_file_manage(GtkSelectionData *sd, PurpleAccount *account, const char
_("Set as buddy icon"), DND_BUDDY_ICON,
(ft ? _("Send image file") : _("Insert in message")), (ft ? DND_FILE_TRANSFER : DND_IM_IMAGE),
NULL);
- gdk_pixbuf_unref(pb);
+ g_object_unref(G_OBJECT(pb));
return;
}
@@ -1712,29 +1715,67 @@ GdkPixbuf * pidgin_create_status_icon(PurpleStatusPrimitive prim, GtkWidget *w,
{
GtkIconSize icon_size = gtk_icon_size_from_name(size);
GdkPixbuf *pixbuf = NULL;
+ const char *stock = pidgin_stock_id_from_status_primitive(prim);
- if (prim == PURPLE_STATUS_UNAVAILABLE)
- pixbuf = gtk_widget_render_icon (w, PIDGIN_STOCK_STATUS_BUSY,
- icon_size, "GtkWidget");
- else if (prim == PURPLE_STATUS_AWAY)
- pixbuf = gtk_widget_render_icon (w, PIDGIN_STOCK_STATUS_AWAY,
- icon_size, "GtkWidget");
- else if (prim == PURPLE_STATUS_EXTENDED_AWAY)
- pixbuf = gtk_widget_render_icon (w, PIDGIN_STOCK_STATUS_XA,
- icon_size, "GtkWidget");
- else if (prim == PURPLE_STATUS_INVISIBLE)
- pixbuf = gtk_widget_render_icon (w, PIDGIN_STOCK_STATUS_INVISIBLE,
- icon_size, "GtkWidget");
- else if (prim == PURPLE_STATUS_OFFLINE)
- pixbuf = gtk_widget_render_icon (w, PIDGIN_STOCK_STATUS_OFFLINE,
- icon_size, "GtkWidget");
- else
- pixbuf = gtk_widget_render_icon (w, PIDGIN_STOCK_STATUS_AVAILABLE,
- icon_size, "GtkWidget");
+ pixbuf = gtk_widget_render_icon (w, stock ? stock : PIDGIN_STOCK_STATUS_AVAILABLE,
+ icon_size, "GtkWidget");
return pixbuf;
+}
+static const char *
+stock_id_from_status_primitive_idle(PurpleStatusPrimitive prim, gboolean idle)
+{
+ const char *stock = NULL;
+ switch (prim) {
+ case PURPLE_STATUS_UNSET:
+ stock = NULL;
+ break;
+ case PURPLE_STATUS_UNAVAILABLE:
+ stock = idle ? PIDGIN_STOCK_STATUS_BUSY_I : PIDGIN_STOCK_STATUS_BUSY;
+ break;
+ case PURPLE_STATUS_AWAY:
+ stock = idle ? PIDGIN_STOCK_STATUS_AWAY_I : PIDGIN_STOCK_STATUS_AWAY;
+ break;
+ case PURPLE_STATUS_EXTENDED_AWAY:
+ stock = idle ? PIDGIN_STOCK_STATUS_XA_I : PIDGIN_STOCK_STATUS_XA;
+ break;
+ case PURPLE_STATUS_INVISIBLE:
+ stock = PIDGIN_STOCK_STATUS_INVISIBLE;
+ break;
+ case PURPLE_STATUS_OFFLINE:
+ stock = idle ? PIDGIN_STOCK_STATUS_OFFLINE_I : PIDGIN_STOCK_STATUS_OFFLINE;
+ break;
+ default:
+ stock = idle ? PIDGIN_STOCK_STATUS_AVAILABLE_I : PIDGIN_STOCK_STATUS_AVAILABLE;
+ break;
+ }
+ return stock;
}
+const char *
+pidgin_stock_id_from_status_primitive(PurpleStatusPrimitive prim)
+{
+ return stock_id_from_status_primitive_idle(prim, FALSE);
+}
+
+const char *
+pidgin_stock_id_from_presence(PurplePresence *presence)
+{
+ PurpleStatus *status;
+ PurpleStatusType *type;
+ PurpleStatusPrimitive prim;
+ gboolean idle;
+
+ g_return_val_if_fail(presence, NULL);
+
+ status = purple_presence_get_active_status(presence);
+ type = purple_status_get_type(status);
+ prim = purple_status_type_get_primitive(type);
+
+ idle = purple_presence_is_idle(presence);
+
+ return stock_id_from_status_primitive_idle(prim, idle);
+}
GdkPixbuf *
pidgin_create_prpl_icon(PurpleAccount *account, PidginPrplIconSize size)
@@ -1924,7 +1965,7 @@ destroy_completion_data(GtkWidget *w, PidginCompletionData *data)
#endif /* !NEW_STYLE_COMPLETION */
#ifdef NEW_STYLE_COMPLETION
-static gboolean screenname_completion_match_func(GtkEntryCompletion *completion,
+static gboolean buddyname_completion_match_func(GtkEntryCompletion *completion,
const gchar *key, GtkTreeIter *iter, gpointer user_data)
{
GtkTreeModel *model;
@@ -1957,7 +1998,7 @@ static gboolean screenname_completion_match_func(GtkEntryCompletion *completion,
return FALSE;
}
-static gboolean screenname_completion_match_selected_cb(GtkEntryCompletion *completion,
+static gboolean buddyname_completion_match_selected_cb(GtkEntryCompletion *completion,
GtkTreeModel *model, GtkTreeIter *iter, PidginCompletionData *data)
{
GValue val;
@@ -1983,22 +2024,22 @@ static gboolean screenname_completion_match_selected_cb(GtkEntryCompletion *comp
}
static void
-add_screenname_autocomplete_entry(GtkListStore *store, const char *buddy_alias, const char *contact_alias,
- const PurpleAccount *account, const char *screenname)
+add_buddyname_autocomplete_entry(GtkListStore *store, const char *buddy_alias, const char *contact_alias,
+ const PurpleAccount *account, const char *buddyname)
{
GtkTreeIter iter;
gboolean completion_added = FALSE;
- gchar *normalized_screenname;
+ gchar *normalized_buddyname;
gchar *tmp;
- tmp = g_utf8_normalize(screenname, -1, G_NORMALIZE_DEFAULT);
- normalized_screenname = g_utf8_casefold(tmp, -1);
+ tmp = g_utf8_normalize(buddyname, -1, G_NORMALIZE_DEFAULT);
+ normalized_buddyname = g_utf8_casefold(tmp, -1);
g_free(tmp);
/* There's no sense listing things like: 'xxx "xxx"'
- when the screenname and buddy alias match. */
- if (buddy_alias && strcmp(buddy_alias, screenname)) {
- char *completion_entry = g_strdup_printf("%s \"%s\"", screenname, buddy_alias);
+ when the name and buddy alias match. */
+ if (buddy_alias && strcmp(buddy_alias, buddyname)) {
+ char *completion_entry = g_strdup_printf("%s \"%s\"", buddyname, buddy_alias);
char *tmp2 = g_utf8_normalize(buddy_alias, -1, G_NORMALIZE_DEFAULT);
tmp = g_utf8_casefold(tmp2, -1);
@@ -2007,8 +2048,8 @@ add_screenname_autocomplete_entry(GtkListStore *store, const char *buddy_alias,
gtk_list_store_append(store, &iter);
gtk_list_store_set(store, &iter,
0, completion_entry,
- 1, screenname,
- 2, normalized_screenname,
+ 1, buddyname,
+ 2, normalized_buddyname,
3, tmp,
4, account,
-1);
@@ -2018,12 +2059,12 @@ add_screenname_autocomplete_entry(GtkListStore *store, const char *buddy_alias,
}
/* There's no sense listing things like: 'xxx "xxx"'
- when the screenname and contact alias match. */
- if (contact_alias && strcmp(contact_alias, screenname)) {
+ when the name and contact alias match. */
+ if (contact_alias && strcmp(contact_alias, buddyname)) {
/* We don't want duplicates when the contact and buddy alias match. */
if (!buddy_alias || strcmp(contact_alias, buddy_alias)) {
char *completion_entry = g_strdup_printf("%s \"%s\"",
- screenname, contact_alias);
+ buddyname, contact_alias);
char *tmp2 = g_utf8_normalize(contact_alias, -1, G_NORMALIZE_DEFAULT);
tmp = g_utf8_casefold(tmp2, -1);
@@ -2032,8 +2073,8 @@ add_screenname_autocomplete_entry(GtkListStore *store, const char *buddy_alias,
gtk_list_store_append(store, &iter);
gtk_list_store_set(store, &iter,
0, completion_entry,
- 1, screenname,
- 2, normalized_screenname,
+ 1, buddyname,
+ 2, normalized_buddyname,
3, tmp,
4, account,
-1);
@@ -2044,18 +2085,18 @@ add_screenname_autocomplete_entry(GtkListStore *store, const char *buddy_alias,
}
if (completion_added == FALSE) {
- /* Add the buddy's screenname. */
+ /* Add the buddy's name. */
gtk_list_store_append(store, &iter);
gtk_list_store_set(store, &iter,
- 0, screenname,
- 1, screenname,
- 2, normalized_screenname,
+ 0, buddyname,
+ 1, buddyname,
+ 2, normalized_buddyname,
3, NULL,
4, account,
-1);
}
- g_free(normalized_screenname);
+ g_free(normalized_buddyname);
}
#endif /* NEW_STYLE_COMPLETION */
@@ -2064,8 +2105,8 @@ static void get_log_set_name(PurpleLogSet *set, gpointer value, PidginCompletion
PidginFilterBuddyCompletionEntryFunc filter_func = data->filter_func;
gpointer user_data = data->filter_func_user_data;
- /* 1. Don't show buddies because we will have gotten them already.
- * 2. The boxes that use this autocomplete code handle only IMs. */
+ /* 1. Don't show buddies because we will have gotten them already.
+ * 2. The boxes that use this autocomplete code handle only IMs. */
if (!set->buddy && set->type == PURPLE_LOG_IM) {
PidginBuddyCompletionEntry entry;
entry.is_buddy = FALSE;
@@ -2073,7 +2114,7 @@ static void get_log_set_name(PurpleLogSet *set, gpointer value, PidginCompletion
if (filter_func(&entry, user_data)) {
#ifdef NEW_STYLE_COMPLETION
- add_screenname_autocomplete_entry(data->store,
+ add_buddyname_autocomplete_entry(data->store,
NULL, NULL, set->account, set->name);
#else
/* Steal the name for the GCompletion. */
@@ -2119,7 +2160,7 @@ add_completion_list(PidginCompletionData *data)
if (filter_func(&entry, user_data)) {
#ifdef NEW_STYLE_COMPLETION
- add_screenname_autocomplete_entry(data->store,
+ add_buddyname_autocomplete_entry(data->store,
((PurpleContact *)cnode)->alias,
purple_buddy_get_contact_alias(entry.entry.buddy),
entry.entry.buddy->account,
@@ -2150,7 +2191,7 @@ add_completion_list(PidginCompletionData *data)
}
static void
-screenname_autocomplete_destroyed_cb(GtkWidget *widget, gpointer data)
+buddyname_autocomplete_destroyed_cb(GtkWidget *widget, gpointer data)
{
g_free(data);
purple_signals_disconnect_by_handle(widget);
@@ -2162,15 +2203,17 @@ repopulate_autocomplete(gpointer something, gpointer data)
add_completion_list(data);
}
-
void
pidgin_setup_screenname_autocomplete_with_filter(GtkWidget *entry, GtkWidget *accountopt, PidginFilterBuddyCompletionEntryFunc filter_func, gpointer user_data)
{
PidginCompletionData *data;
#ifdef NEW_STYLE_COMPLETION
- /* Store the displayed completion value, the screenname, the UTF-8 normalized & casefolded screenname,
- * the UTF-8 normalized & casefolded value for comparison, and the account. */
+ /*
+ * Store the displayed completion value, the buddy name, the UTF-8
+ * normalized & casefolded buddy name, the UTF-8 normalized &
+ * casefolded value for comparison, and the account.
+ */
GtkListStore *store;
GtkEntryCompletion *completion;
@@ -2191,15 +2234,15 @@ pidgin_setup_screenname_autocomplete_with_filter(GtkWidget *entry, GtkWidget *ac
add_completion_list(data);
- /* Sort the completion list by screenname. */
+ /* Sort the completion list by buddy name */
gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(store),
1, GTK_SORT_ASCENDING);
completion = gtk_entry_completion_new();
- gtk_entry_completion_set_match_func(completion, screenname_completion_match_func, NULL, NULL);
+ gtk_entry_completion_set_match_func(completion, buddyname_completion_match_func, NULL, NULL);
g_signal_connect(G_OBJECT(completion), "match-selected",
- G_CALLBACK(screenname_completion_match_selected_cb), data);
+ G_CALLBACK(buddyname_completion_match_selected_cb), data);
gtk_entry_set_completion(GTK_ENTRY(entry), completion);
g_object_unref(completion);
@@ -2246,7 +2289,7 @@ pidgin_setup_screenname_autocomplete_with_filter(GtkWidget *entry, GtkWidget *ac
purple_signal_connect(purple_accounts_get_handle(), "account-removed", entry,
PURPLE_CALLBACK(repopulate_autocomplete), data);
- g_signal_connect(G_OBJECT(entry), "destroy", G_CALLBACK(screenname_autocomplete_destroyed_cb), data);
+ g_signal_connect(G_OBJECT(entry), "destroy", G_CALLBACK(buddyname_autocomplete_destroyed_cb), data);
}
gboolean
@@ -2446,11 +2489,6 @@ GtkWidget *pidgin_buddy_icon_chooser_new(GtkWindow *parent, void(*callback)(cons
dialog->callback = callback;
dialog->data = data;
- if (dialog->icon_filesel != NULL) {
- gtk_window_present(GTK_WINDOW(dialog->icon_filesel));
- return NULL;
- }
-
current_folder = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/filelocations/last_icon_folder");
#if GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */
@@ -2943,7 +2981,7 @@ void pidgin_set_urgent(GtkWindow *window, gboolean urgent)
#endif
}
-GSList *minidialogs = NULL;
+static GSList *minidialogs = NULL;
static void *
pidgin_utils_get_handle(void)
@@ -3240,7 +3278,7 @@ const char *pidgin_get_dim_grey_string(GtkWidget *widget) {
style = gtk_widget_get_style(widget);
if (!style)
return "dim grey";
-
+
snprintf(dim_grey_string, sizeof(dim_grey_string), "#%02x%02x%02x",
style->text_aa[GTK_STATE_NORMAL].red >> 8,
style->text_aa[GTK_STATE_NORMAL].green >> 8,
@@ -3480,3 +3518,200 @@ GdkPixbuf * pidgin_pixbuf_from_imgstore(PurpleStoredImage *image)
return pixbuf;
}
+static void url_copy(GtkWidget *w, gchar *url)
+{
+ GtkClipboard *clipboard;
+
+ clipboard = gtk_widget_get_clipboard(w, GDK_SELECTION_PRIMARY);
+ gtk_clipboard_set_text(clipboard, url, -1);
+
+ clipboard = gtk_widget_get_clipboard(w, GDK_SELECTION_CLIPBOARD);
+ gtk_clipboard_set_text(clipboard, url, -1);
+}
+
+static gboolean
+link_context_menu(GtkIMHtml *imhtml, GtkIMHtmlLink *link, GtkWidget *menu)
+{
+ GtkWidget *img, *item;
+ const char *url;
+
+ url = gtk_imhtml_link_get_url(link);
+
+ /* Open Link */
+ img = gtk_image_new_from_stock(GTK_STOCK_JUMP_TO, GTK_ICON_SIZE_MENU);
+ item = gtk_image_menu_item_new_with_mnemonic(_("_Open Link"));
+ gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), img);
+ g_signal_connect_swapped(G_OBJECT(item), "activate", G_CALLBACK(gtk_imhtml_link_activate), link);
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
+
+ /* Copy Link Location */
+ img = gtk_image_new_from_stock(GTK_STOCK_COPY, GTK_ICON_SIZE_MENU);
+ item = gtk_image_menu_item_new_with_mnemonic(_("_Copy Link Location"));
+ gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), img);
+ g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(url_copy), (gpointer)url);
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
+
+ return TRUE;
+}
+
+static gboolean
+copy_email_address(GtkIMHtml *imhtml, GtkIMHtmlLink *link, GtkWidget *menu)
+{
+ GtkWidget *img, *item;
+ const char *text;
+ char *address;
+#define MAILTOSIZE (sizeof("mailto:") - 1)
+
+ text = gtk_imhtml_link_get_url(link);
+ g_return_val_if_fail(text && strlen(text) > MAILTOSIZE, FALSE);
+ address = (char*)text + MAILTOSIZE;
+
+ /* Copy Email Address */
+ img = gtk_image_new_from_stock(GTK_STOCK_COPY, GTK_ICON_SIZE_MENU);
+ item = gtk_image_menu_item_new_with_mnemonic(_("_Copy Email Address"));
+ gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), img);
+ g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(url_copy), address);
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
+
+ return TRUE;
+}
+
+/* XXX: The following two functions are for demonstration purposes only! */
+static gboolean
+open_dialog(GtkIMHtml *imhtml, GtkIMHtmlLink *link)
+{
+ const char *url;
+ const char *str;
+
+ url = gtk_imhtml_link_get_url(link);
+ if (!url || strlen(url) < sizeof("open://"))
+ return FALSE;
+
+ str = url + sizeof("open://") - 1;
+
+ if (strcmp(str, "accounts") == 0)
+ pidgin_accounts_window_show();
+ else if (strcmp(str, "prefs") == 0)
+ pidgin_prefs_show();
+ else
+ return FALSE;
+ return TRUE;
+}
+
+static gboolean
+dummy(GtkIMHtml *imhtml, GtkIMHtmlLink *link, GtkWidget *menu)
+{
+ return TRUE;
+}
+
+static gboolean
+register_gnome_url_handlers(void)
+{
+ char *tmp;
+ char *err;
+ char *c;
+ char *start;
+
+ tmp = g_find_program_in_path("gconftool-2");
+ if (tmp == NULL)
+ return FALSE;
+
+ g_free(tmp);
+ tmp = NULL;
+
+ if (!g_spawn_command_line_sync("gconftool-2 --all-dirs /desktop/gnome/url-handlers",
+ &tmp, &err, NULL, NULL))
+ {
+ g_free(tmp);
+ g_free(err);
+ g_return_val_if_reached(FALSE);
+ }
+ g_free(err);
+ err = NULL;
+
+ for (c = start = tmp ; *c ; c++)
+ {
+ /* Skip leading spaces. */
+ if (c == start && *c == ' ')
+ start = c + 1;
+ else if (*c == '\n')
+ {
+ *c = '\0';
+ if (g_str_has_prefix(start, "/desktop/gnome/url-handlers/"))
+ {
+ char *cmd;
+ char *tmp2 = NULL;
+ char *protocol;
+
+ /* If there is an enabled boolean, honor it. */
+ cmd = g_strdup_printf("gconftool-2 -g %s/enabled", start);
+ if (g_spawn_command_line_sync(cmd, &tmp2, &err, NULL, NULL))
+ {
+ g_free(err);
+ err = NULL;
+ if (!strcmp(tmp2, "false\n"))
+ {
+ g_free(tmp2);
+ g_free(cmd);
+ start = c + 1;
+ continue;
+ }
+ }
+ g_free(cmd);
+ g_free(tmp2);
+
+ start += sizeof("/desktop/gnome/url-handlers/") - 1;
+
+ protocol = g_strdup_printf("%s:", start);
+ gnome_url_handlers = g_list_prepend(gnome_url_handlers, protocol);
+ gtk_imhtml_class_register_protocol(protocol, url_clicked_cb, link_context_menu);
+ }
+ start = c + 1;
+ }
+ }
+ g_free(tmp);
+
+ return (gnome_url_handlers != NULL);
+}
+
+void pidgin_utils_init(void)
+{
+ gtk_imhtml_class_register_protocol("http://", url_clicked_cb, link_context_menu);
+ gtk_imhtml_class_register_protocol("https://", url_clicked_cb, link_context_menu);
+ gtk_imhtml_class_register_protocol("ftp://", url_clicked_cb, link_context_menu);
+ gtk_imhtml_class_register_protocol("gopher://", url_clicked_cb, link_context_menu);
+ gtk_imhtml_class_register_protocol("mailto:", url_clicked_cb, copy_email_address);
+
+ /* Example custom URL handler. */
+ gtk_imhtml_class_register_protocol("open://", open_dialog, dummy);
+
+ /* If we're under GNOME, try registering the system URL handlers. */
+ if (purple_running_gnome())
+ register_gnome_url_handlers();
+}
+
+void pidgin_utils_uninit(void)
+{
+ gtk_imhtml_class_register_protocol("open://", NULL, NULL);
+
+ /* If we have GNOME handlers registered, unregister them. */
+ if (gnome_url_handlers)
+ {
+ GList *l;
+ for (l = gnome_url_handlers ; l ; l = l->next)
+ {
+ gtk_imhtml_class_register_protocol((char *)l->data, NULL, NULL);
+ g_free(l->data);
+ }
+ g_list_free(gnome_url_handlers);
+ gnome_url_handlers = NULL;
+ return;
+ }
+
+ gtk_imhtml_class_register_protocol("http://", NULL, NULL);
+ gtk_imhtml_class_register_protocol("https://", NULL, NULL);
+ gtk_imhtml_class_register_protocol("ftp://", NULL, NULL);
+ gtk_imhtml_class_register_protocol("mailto:", NULL, NULL);
+ gtk_imhtml_class_register_protocol("gopher://", NULL, NULL);
+}
+
diff --git a/pidgin/gtkutils.h b/pidgin/gtkutils.h
index ace6bd4d2e..305512ede9 100644
--- a/pidgin/gtkutils.h
+++ b/pidgin/gtkutils.h
@@ -136,7 +136,7 @@ GtkWidget *pidgin_create_dialog(const char *title, guint border_width, const cha
* Retrieves the main content box (vbox) from a pidgin dialog window
*
* @param dialog The dialog window
- * @param homogeneous TRUE if all children are to be given equal space allotments.
+ * @param homogeneous TRUE if all children are to be given equal space allotments.
* @param spacing the number of pixels to place by default between children
*
* @since 2.4.0
@@ -184,8 +184,8 @@ GtkWidget *pidgin_dialog_get_action_area(GtkDialog *dialog);
void pidgin_toggle_sensitive(GtkWidget *widget, GtkWidget *to_toggle);
/**
- * Checks if text has been entered into a GtkTextEntry widget. If
- * so, the GTK_RESPONSE_OK on the given dialog is set to TRUE.
+ * Checks if text has been entered into a GtkTextEntry widget. If
+ * so, the GTK_RESPONSE_OK on the given dialog is set to TRUE.
* Otherwise GTK_RESPONSE_OK is set to FALSE.
*
* @param entry The text entry widget.
@@ -233,14 +233,14 @@ GtkWidget *pidgin_new_item(GtkWidget *menu, const char *str);
*
* @param menu The menu to which to append the check menu item.
* @param str The title to use for the newly created menu item.
- * @param sf A function to call when the menu item is activated.
+ * @param cb A function to call when the menu item is activated.
* @param data Data to pass to the signal function.
* @param checked The initial state of the check item
*
* @return The newly created menu item.
*/
GtkWidget *pidgin_new_check_item(GtkWidget *menu, const char *str,
- GtkSignalFunc sf, gpointer data, gboolean checked);
+ GCallback cb, gpointer data, gboolean checked);
/**
* Creates a menu item.
@@ -249,7 +249,7 @@ GtkWidget *pidgin_new_check_item(GtkWidget *menu, const char *str,
* @param str The title for the menu item.
* @param icon An icon to place to the left of the menu item,
* or @c NULL for no icon.
- * @param sf A function to call when the menu item is activated.
+ * @param cb A function to call when the menu item is activated.
* @param data Data to pass to the signal function.
* @param accel_key Something.
* @param accel_mods Something.
@@ -258,7 +258,7 @@ GtkWidget *pidgin_new_check_item(GtkWidget *menu, const char *str,
* @return The newly created menu item.
*/
GtkWidget *pidgin_new_item_from_stock(GtkWidget *menu, const char *str,
- const char *icon, GtkSignalFunc sf,
+ const char *icon, GCallback cb,
gpointer data, guint accel_key,
guint accel_mods, char *mod);
@@ -355,7 +355,7 @@ void pidgin_account_option_menu_set_selected(GtkWidget *optmenu, PurpleAccount *
*
* @param entry The GtkEntry on which to setup autocomplete.
* @param optmenu A menu for accounts, returned by gaim_gtk_account_option_menu_new().
- * If @a optmenu is not @c NULL, it'll be updated when a screenname is chosen
+ * If @a optmenu is not @c NULL, it'll be updated when a username is chosen
* from the autocomplete list.
* @param filter_func A function for checking if an autocomplete entry
* should be shown. This can be @c NULL.
@@ -364,7 +364,7 @@ void pidgin_account_option_menu_set_selected(GtkWidget *optmenu, PurpleAccount *
void pidgin_setup_screenname_autocomplete_with_filter(GtkWidget *entry, GtkWidget *optmenu, PidginFilterBuddyCompletionEntryFunc filter_func, gpointer user_data);
/**
- * The default filter function for screenname autocomplete.
+ * The default filter function for username autocomplete.
*
* @param completion_entry The completion entry to filter.
* @param all_accounts If this is @c FALSE, only the autocompletion entries
@@ -385,9 +385,9 @@ gboolean pidgin_screenname_autocomplete_default_filter(const PidginBuddyCompleti
* @param entry The GtkEntry on which to setup autocomplete.
* @param optmenu A menu for accounts, returned by
* pidgin_account_option_menu_new(). If @a optmenu is not @c
- * NULL, it'll be updated when a screenname is chosen from the
+ * NULL, it'll be updated when a username is chosen from the
* autocomplete list.
- * @param all Whether to include screennames from disconnected accounts.
+ * @param all Whether to include usernames from disconnected accounts.
*/
void pidgin_setup_screenname_autocomplete(GtkWidget *entry, GtkWidget *optmenu, gboolean all);
@@ -473,7 +473,7 @@ gboolean pidgin_parse_x_im_contact(const char *msg, gboolean all_accounts,
char **ret_alias);
/**
- * Sets an ATK name for a given widget. Also sets the labelled-by
+ * Sets an ATK name for a given widget. Also sets the labelled-by
* and label-for ATK relationships.
*
* @param w The widget that we want to name.
@@ -509,10 +509,10 @@ void pidgin_menu_position_func_helper(GtkMenu *menu, gint *x, gint *y,
gboolean *push_in, gpointer data);
/**
- * A valid GtkMenuPositionFunc. This is used to determine where
- * to draw context menus when the menu is activated with the
- * keyboard (shift+F10). If the menu is activated with the mouse,
- * then you should just use GTK's built-in position function,
+ * A valid GtkMenuPositionFunc. This is used to determine where
+ * to draw context menus when the menu is activated with the
+ * keyboard (shift+F10). If the menu is activated with the mouse,
+ * then you should just use GTK's built-in position function,
* because it does a better job of positioning the menu.
*
* @param menu The menu we are positioning.
@@ -569,6 +569,27 @@ GdkPixbuf *pidgin_create_prpl_icon(PurpleAccount *account, PidginPrplIconSize si
*/
GdkPixbuf * pidgin_create_status_icon(PurpleStatusPrimitive primitive, GtkWidget *w, const char *size);
+/**
+ * Returns an appropriate stock-id for a status primitive.
+ *
+ * @param prim The status primitive
+ *
+ * @return The stock-id
+ *
+ * @since 2.6.0
+ */
+const char *pidgin_stock_id_from_status_primitive(PurpleStatusPrimitive prim);
+
+/**
+ * Returns an appropriate stock-id for a PurplePresence.
+ *
+ * @param presence The presence.
+ *
+ * @return The stock-id
+ *
+ * @since 2.6.0
+ */
+const char *pidgin_stock_id_from_presence(PurplePresence *presence);
/**
* Append a PurpleMenuAction to a menu.
@@ -612,13 +633,13 @@ void pidgin_clear_cursor(GtkWidget *widget);
* @param parent The parent window
* @param callback The callback to call when the window is closed. If the user chose an icon, the char* argument will point to its path
* @param data Data to pass to @a callback
- * @return The file dialog
+ * @return The file dialog
*/
GtkWidget *pidgin_buddy_icon_chooser_new(GtkWindow *parent, void(*callback)(const char*,gpointer), gpointer data);
/**
* Converts a buddy icon to the required size and format
- *
+ *
* @param plugin The prpl to convert the icon
* @param path The path of a file to convert
* @param len If not @c NULL, the length of the returned data will be set here.
@@ -706,7 +727,7 @@ gboolean pidgin_tree_view_search_equal_func(GtkTreeModel *model, gint column,
const gchar *key, GtkTreeIter *iter, gpointer data);
/**
- * Sets or resets a window to 'urgent,' by setting the URGENT hint in X
+ * Sets or resets a window to 'urgent,' by setting the URGENT hint in X
* or blinking in the win32 taskbar
*
* @param window The window to draw attention to
@@ -792,7 +813,8 @@ void pidgin_text_combo_box_entry_set_text(GtkWidget *widget, const char *text);
*
* @param window The window to make transient.
*
- * @return Whether the window was made transient or not.
+ * @return Whether the window was made transient or not.
+ *
* @since 2.4.0
*/
gboolean pidgin_auto_parent_window(GtkWidget *window);
@@ -818,9 +840,24 @@ GtkWidget *pidgin_add_widget_to_vbox(GtkBox *vbox, const char *widget_label, Gtk
* @param image A PurpleStoredImage.
*
* @return A GdkPixbuf created from the stored image.
+ *
* @since 2.5.0
*/
-GdkPixbuf * pidgin_pixbuf_from_imgstore(PurpleStoredImage *image);
+GdkPixbuf *pidgin_pixbuf_from_imgstore(PurpleStoredImage *image);
+
+/**
+ * Initialize some utility functions.
+ *
+ * @since 2.6.0
+ */
+void pidgin_utils_init(void);
+
+/**
+ * Uninitialize some utility functions.
+ *
+ * @since 2.6.0
+ */
+void pidgin_utils_uninit(void);
#endif /* _PIDGINUTILS_H_ */
diff --git a/pidgin/gtkwhiteboard.c b/pidgin/gtkwhiteboard.c
index 15bc801f0c..dbc528ebcc 100644
--- a/pidgin/gtkwhiteboard.c
+++ b/pidgin/gtkwhiteboard.c
@@ -624,7 +624,7 @@ static void pidgin_whiteboard_draw_brush_point(PurpleWhiteboard *wb, int x, int
update_rect.x, update_rect.y,
update_rect.width, update_rect.height);
- gdk_gc_unref(gfx_con);
+ g_object_unref(G_OBJECT(gfx_con));
}
/* Uses Bresenham's algorithm (as provided by Wikipedia) */
@@ -857,7 +857,7 @@ static void color_select_dialog(GtkWidget *widget, PidginWhiteboard *gtkwb)
{
GdkColor color;
GtkColorSelectionDialog *dialog;
-
+
dialog = (GtkColorSelectionDialog *)gtk_color_selection_dialog_new(_("Select color"));
g_signal_connect(G_OBJECT(dialog->colorsel), "color-changed",
diff --git a/pidgin/minidialog.c b/pidgin/minidialog.c
index 2b40577914..453cffccd1 100644
--- a/pidgin/minidialog.c
+++ b/pidgin/minidialog.c
@@ -26,8 +26,7 @@
#include "internal.h"
-#include <gtk/gtkhbox.h>
-#include <gtk/gtkbutton.h>
+#include <gtk/gtk.h>
#include "libpurple/prefs.h"
diff --git a/pidgin/minidialog.h b/pidgin/minidialog.h
index 2b5e6a4d1c..386084c8e8 100644
--- a/pidgin/minidialog.h
+++ b/pidgin/minidialog.h
@@ -28,8 +28,7 @@
#define __PIDGIN_MINI_DIALOG_H__
#include <glib-object.h>
-#include <gtk/gtkvbox.h>
-#include <gtk/gtklabel.h>
+#include <gtk/gtk.h>
G_BEGIN_DECLS
diff --git a/pidgin/pidgincombobox.c b/pidgin/pidgincombobox.c
index 736021fba1..e3c5f188be 100644
--- a/pidgin/pidgincombobox.c
+++ b/pidgin/pidgincombobox.c
@@ -112,7 +112,7 @@ struct _GtkComboBoxPrivate
/* While debugging this evil code, I have learned that
* there are actually 4 modes to this widget, which can
* be characterized as follows
- *
+ *
* 1) menu mode, no child added
*
* tree_view -> NULL
@@ -127,9 +127,9 @@ struct _GtkComboBoxPrivate
* popup_frame -> NULL
*
* 2) menu mode, child added
- *
+ *
* tree_view -> NULL
- * cell_view -> NULL
+ * cell_view -> NULL
* cell_view_frame -> NULL
* button -> GtkToggleButton set_parent to combo
* box -> NULL
@@ -140,7 +140,7 @@ struct _GtkComboBoxPrivate
* popup_frame -> NULL
*
* 3) list mode, no child added
- *
+ *
* tree_view -> GtkTreeView, child of popup_frame
* cell_view -> GtkCellView, regular child
* cell_view_frame -> GtkFrame, set parent to combo
@@ -164,7 +164,7 @@ struct _GtkComboBoxPrivate
* popup_widget -> tree_view
* popup_window -> GtkWindow
* popup_frame -> GtkFrame, child of popup_window
- *
+ *
*/
enum {
@@ -285,9 +285,9 @@ static void gtk_combo_box_model_row_changed (GtkTreeModel *model,
gpointer data);
/* list */
-static void gtk_combo_box_list_position (GtkComboBox *combo_box,
- gint *x,
- gint *y,
+static void gtk_combo_box_list_position (GtkComboBox *combo_box,
+ gint *x,
+ gint *y,
gint *width,
gint *height);
@@ -641,7 +641,7 @@ gtk_combo_box_state_changed (GtkWidget *widget,
if (GTK_WIDGET_REALIZED (widget))
{
if (combo_box->priv->tree_view && combo_box->priv->cell_view)
- gtk_cell_view_set_background_color (GTK_CELL_VIEW (combo_box->priv->cell_view),
+ gtk_cell_view_set_background_color (GTK_CELL_VIEW (combo_box->priv->cell_view),
&widget->style->base[GTK_WIDGET_STATE (widget)]);
}
@@ -694,7 +694,7 @@ gtk_combo_box_style_set (GtkWidget *widget,
gtk_combo_box_check_appearance (combo_box);
if (combo_box->priv->tree_view && combo_box->priv->cell_view)
- gtk_cell_view_set_background_color (GTK_CELL_VIEW (combo_box->priv->cell_view),
+ gtk_cell_view_set_background_color (GTK_CELL_VIEW (combo_box->priv->cell_view),
&widget->style->base[GTK_WIDGET_STATE (widget)]);
}
@@ -725,7 +725,7 @@ gtk_combo_box_add (GtkContainer *container,
GTK_BIN (container)->child = NULL;
gtk_widget_queue_resize (GTK_WIDGET (container));
}
-
+
gtk_widget_set_parent (widget, GTK_WIDGET (container));
GTK_BIN (container)->child = widget;
@@ -770,7 +770,7 @@ gtk_combo_box_remove (GtkContainer *container,
appears_as_list = FALSE;
else
appears_as_list = TRUE;
-
+
if (appears_as_list)
gtk_combo_box_list_destroy (combo_box);
else if (GTK_IS_MENU (combo_box->priv->popup_widget))
@@ -785,7 +785,7 @@ gtk_combo_box_remove (GtkContainer *container,
combo_box->priv->cell_view = gtk_cell_view_new ();
gtk_widget_set_parent (combo_box->priv->cell_view, GTK_WIDGET (container));
GTK_BIN (container)->child = combo_box->priv->cell_view;
-
+
gtk_widget_show (combo_box->priv->cell_view);
gtk_cell_view_set_model (GTK_CELL_VIEW (combo_box->priv->cell_view),
combo_box->priv->model);
@@ -856,7 +856,7 @@ gtk_combo_box_detacher (GtkWidget *widget,
g_signal_handlers_disconnect_by_func (menu,
gtk_combo_box_menu_hide,
combo_box);
-
+
combo_box->priv->popup_widget = NULL;
}
@@ -940,12 +940,12 @@ gtk_combo_box_menu_position_below (GtkMenu *menu,
GdkScreen *screen;
gint monitor_num;
GdkRectangle monitor;
-
+
/* FIXME: is using the size request here broken? */
child = GTK_BIN (combo_box)->child;
-
+
gdk_window_get_origin (child->window, &sx, &sy);
-
+
if (GTK_WIDGET_NO_WINDOW (child))
{
sx += child->allocation.x;
@@ -961,20 +961,20 @@ gtk_combo_box_menu_position_below (GtkMenu *menu,
*y = sy;
screen = gtk_widget_get_screen (GTK_WIDGET (combo_box));
- monitor_num = gdk_screen_get_monitor_at_window (screen,
+ monitor_num = gdk_screen_get_monitor_at_window (screen,
GTK_WIDGET (combo_box)->window);
gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor);
-
+
if (*x < monitor.x)
*x = monitor.x;
else if (*x + req.width > monitor.x + monitor.width)
*x = monitor.x + monitor.width - req.width;
-
+
if (monitor.y + monitor.height - *y - child->allocation.height >= req.height)
*y += child->allocation.height;
else if (*y - monitor.y >= req.height)
*y -= req.height;
- else if (monitor.y + monitor.height - *y - child->allocation.height > *y - monitor.y)
+ else if (monitor.y + monitor.height - *y - child->allocation.height > *y - monitor.y)
*y += child->allocation.height;
else
*y -= req.height;
@@ -1001,7 +1001,7 @@ gtk_combo_box_menu_position_over (GtkMenu *menu,
gint menu_width;
g_return_if_fail (GTK_IS_COMBO_BOX (user_data));
-
+
combo_box = GTK_COMBO_BOX (user_data);
widget = GTK_WIDGET (combo_box);
@@ -1042,7 +1042,7 @@ gtk_combo_box_menu_position_over (GtkMenu *menu,
/* Clamp the position on screen */
screen_width = gdk_screen_get_width (gtk_widget_get_screen (widget));
-
+
if (menu_xpos < 0)
menu_xpos = 0;
else if ((menu_xpos + menu_width) > screen_width)
@@ -1066,13 +1066,13 @@ gtk_combo_box_menu_position (GtkMenu *menu,
combo_box = GTK_COMBO_BOX (user_data);
- if (combo_box->priv->wrap_width > 0 || combo_box->priv->cell_view == NULL)
+ if (combo_box->priv->wrap_width > 0 || combo_box->priv->cell_view == NULL)
gtk_combo_box_menu_position_below (menu, x, y, push_in, user_data);
else
{
menu_item = gtk_menu_get_active (GTK_MENU (combo_box->priv->popup_widget));
if (menu_item)
- gtk_menu_shell_select_item (GTK_MENU_SHELL (combo_box->priv->popup_widget),
+ gtk_menu_shell_select_item (GTK_MENU_SHELL (combo_box->priv->popup_widget),
menu_item);
gtk_combo_box_menu_position_over (menu, x, y, push_in, user_data);
@@ -1082,9 +1082,9 @@ gtk_combo_box_menu_position (GtkMenu *menu,
#endif /* Gtk 2.2 */
static void
-gtk_combo_box_list_position (GtkComboBox *combo_box,
- gint *x,
- gint *y,
+gtk_combo_box_list_position (GtkComboBox *combo_box,
+ gint *x,
+ gint *y,
gint *width,
gint *height)
{
@@ -1095,7 +1095,7 @@ gtk_combo_box_list_position (GtkComboBox *combo_box,
gint monitor_num;
GdkRectangle monitor;
#endif
-
+
sample = GTK_BIN (combo_box)->child;
*width = sample->allocation.width;
@@ -1117,30 +1117,30 @@ gtk_combo_box_list_position (GtkComboBox *combo_box,
*x += sample->allocation.x;
*y += sample->allocation.y;
}
-
+
#if GTK_CHECK_VERSION(2,2,0)
screen = gtk_widget_get_screen (GTK_WIDGET (combo_box));
- monitor_num = gdk_screen_get_monitor_at_window (screen,
+ monitor_num = gdk_screen_get_monitor_at_window (screen,
GTK_WIDGET (combo_box)->window);
gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor);
-
+
if (*x < monitor.x)
*x = monitor.x;
else if (*x + *width > monitor.x + monitor.width)
*x = monitor.x + monitor.width - *width;
-
+
if (*y + sample->allocation.height + *height <= monitor.y + monitor.height)
*y += sample->allocation.height;
else
*y -= *height;
#endif /* Gtk 2.2 */
-}
+}
/**
* gtk_combo_box_popup:
* @combo_box: a #GtkComboBox
- *
- * Pops up the menu or dropdown list of @combo_box.
+ *
+ * Pops up the menu or dropdown list of @combo_box.
*
* This function is mostly intended for use by accessibility technologies;
* applications should have little use for it.
@@ -1151,7 +1151,7 @@ void
gtk_combo_box_popup (GtkComboBox *combo_box)
{
gint x, y, width, height;
-
+
g_return_if_fail (GTK_IS_COMBO_BOX (combo_box));
if (GTK_WIDGET_MAPPED (combo_box->priv->popup_widget))
@@ -1172,7 +1172,7 @@ gtk_combo_box_popup (GtkComboBox *combo_box)
gtk_widget_set_size_request (combo_box->priv->popup_widget,
MAX (width, requisition.width), -1);
}
-
+
gtk_menu_popup (GTK_MENU (combo_box->priv->popup_widget),
NULL, NULL,
#if GTK_CHECK_VERSION(2,2,0)
@@ -1187,7 +1187,7 @@ gtk_combo_box_popup (GtkComboBox *combo_box)
gtk_widget_show_all (combo_box->priv->popup_frame);
gtk_combo_box_list_position (combo_box, &x, &y, &width, &height);
- gtk_widget_set_size_request (combo_box->priv->popup_window, width, -1);
+ gtk_widget_set_size_request (combo_box->priv->popup_window, width, -1);
gtk_window_move (GTK_WINDOW (combo_box->priv->popup_window), x, y);
/* popup */
@@ -1217,7 +1217,7 @@ gtk_combo_box_popup (GtkComboBox *combo_box)
/**
* gtk_combo_box_popdown:
* @combo_box: a #GtkComboBox
- *
+ *
* Hides the menu or dropdown list of @combo_box.
*
* This function is mostly intended for use by accessibility technologies;
@@ -1305,7 +1305,7 @@ gtk_combo_box_remeasure (GtkComboBox *combo_box)
GtkRequisition req;
if (combo_box->priv->cell_view)
- gtk_cell_view_get_size_of_row (GTK_CELL_VIEW (combo_box->priv->cell_view),
+ gtk_cell_view_get_size_of_row (GTK_CELL_VIEW (combo_box->priv->cell_view),
path, &req);
else
req.width = 0;
@@ -1335,7 +1335,7 @@ gtk_combo_box_size_request (GtkWidget *widget,
bin_req.width = MAX (bin_req.width, combo_box->priv->width);
gtk_combo_box_check_appearance (combo_box);
-
+
if (!combo_box->priv->tree_view)
{
/* menu mode */
@@ -1454,10 +1454,10 @@ gtk_combo_box_size_allocate (GtkWidget *widget,
if (is_rtl)
{
child.x += req.width;
- child.width = MAX(1, allocation->x + allocation->width
+ child.width = MAX(1, allocation->x + allocation->width
- (border_width + 1 + xthickness + 2) - child.x);
}
- else
+ else
{
child.width = child.x;
child.x = allocation->x + border_width + 1 + xthickness + 2;
@@ -1623,16 +1623,16 @@ gtk_combo_box_scroll_event (GtkWidget *widget,
GtkComboBox *combo_box = GTK_COMBO_BOX (widget);
gint index;
gint items;
-
+
index = gtk_combo_box_get_active (combo_box);
if (index != -1)
{
items = gtk_tree_model_iter_n_children (combo_box->priv->model, NULL);
-
+
if (event->direction == GDK_SCROLL_UP)
index--;
- else
+ else
index++;
gtk_combo_box_set_active (combo_box, CLAMP (index, 0, items - 1));
@@ -1694,15 +1694,15 @@ gtk_combo_box_menu_setup (GtkComboBox *combo_box,
GTK_BIN (combo_box)->child->parent);
combo_box->priv->box = gtk_hbox_new (FALSE, 0);
- gtk_container_add (GTK_CONTAINER (combo_box->priv->button),
+ gtk_container_add (GTK_CONTAINER (combo_box->priv->button),
combo_box->priv->box);
combo_box->priv->separator = gtk_vseparator_new ();
- gtk_container_add (GTK_CONTAINER (combo_box->priv->box),
+ gtk_container_add (GTK_CONTAINER (combo_box->priv->box),
combo_box->priv->separator);
combo_box->priv->arrow = gtk_arrow_new (GTK_ARROW_DOWN, GTK_SHADOW_NONE);
- gtk_container_add (GTK_CONTAINER (combo_box->priv->box),
+ gtk_container_add (GTK_CONTAINER (combo_box->priv->box),
combo_box->priv->arrow);
gtk_widget_show_all (combo_box->priv->button);
@@ -1792,7 +1792,7 @@ gtk_combo_box_menu_destroy (GtkComboBox *combo_box)
/* unparent will remove our latest ref */
gtk_widget_unparent (combo_box->priv->button);
-
+
combo_box->priv->box = NULL;
combo_box->priv->button = NULL;
combo_box->priv->arrow = NULL;
@@ -1895,17 +1895,17 @@ gtk_combo_box_relayout_item (GtkComboBox *combo_box,
item = nth->data;
if (nth->prev)
last = nth->prev->data;
- else
+ else
last = NULL;
g_list_free (list);
gtk_combo_box_item_get_size (combo_box, index, &cols, &rows);
-
+
if (combo_box->priv->col_column == -1 &&
combo_box->priv->row_column == -1 &&
last)
{
- gtk_container_child_get (GTK_CONTAINER (menu),
+ gtk_container_child_get (GTK_CONTAINER (menu),
last,
"right_attach", &current_col,
"top_attach", &current_row,
@@ -1926,12 +1926,12 @@ gtk_combo_box_relayout_item (GtkComboBox *combo_box,
current_col = 0;
current_row++;
}
-
+
if (!menu_occupied (GTK_MENU (menu),
current_col, current_col + cols,
current_row, current_row + rows))
break;
-
+
current_col++;
}
}
@@ -1949,19 +1949,19 @@ gtk_combo_box_relayout (GtkComboBox *combo_box)
GtkWidget *menu;
menu = combo_box->priv->popup_widget;
-
+
/* do nothing unless we are in menu style and realized */
if (combo_box->priv->tree_view || !GTK_IS_MENU_SHELL (menu))
return;
-
+
/* get rid of all children */
list = gtk_container_get_children (GTK_CONTAINER (menu));
-
+
for (j = g_list_last (list); j; j = j->prev)
gtk_container_remove (GTK_CONTAINER (menu), j->data);
-
+
g_list_free (list);
-
+
/* and relayout */
gtk_combo_box_menu_fill (combo_box);
}
@@ -1980,7 +1980,7 @@ gtk_combo_box_menu_button_press (GtkWidget *widget,
if (event->type == GDK_BUTTON_PRESS && event->button == 1)
{
combo_box->priv->popup_in_progress = TRUE;
-
+
gtk_menu_set_active (GTK_MENU (combo_box->priv->popup_widget),
combo_box->priv->active_item);
@@ -2053,7 +2053,7 @@ gtk_combo_box_model_row_deleted (GtkTreeModel *model,
if (!combo_box->priv->tree_view)
gtk_combo_box_menu_row_deleted (model, path, user_data);
-
+
if (index == combo_box->priv->active_item)
{
gint items = gtk_tree_model_iter_n_children (model, NULL);
@@ -2090,7 +2090,7 @@ gtk_combo_box_model_rows_reordered (GtkTreeModel *model,
if (!combo_box->priv->tree_view)
gtk_combo_box_menu_rows_reordered (model, path, iter, new_order, user_data);
}
-
+
static void
gtk_combo_box_model_row_changed (GtkTreeModel *model,
GtkTreePath *path,
@@ -2103,7 +2103,7 @@ gtk_combo_box_model_row_changed (GtkTreeModel *model,
if (index == combo_box->priv->active_item &&
combo_box->priv->cell_view)
gtk_widget_queue_resize (GTK_WIDGET (combo_box->priv->cell_view));
-
+
if (combo_box->priv->tree_view)
gtk_combo_box_list_row_changed (model, path, iter, user_data);
else
@@ -2174,7 +2174,7 @@ gtk_combo_box_menu_rows_reordered (GtkTreeModel *model,
gtk_combo_box_relayout (combo_box);
}
-
+
static void
gtk_combo_box_menu_row_changed (GtkTreeModel *model,
GtkTreePath *path,
@@ -2238,12 +2238,12 @@ gtk_combo_box_list_setup (GtkComboBox *combo_box)
gtk_frame_set_shadow_type (GTK_FRAME (combo_box->priv->cell_view_frame),
GTK_SHADOW_IN);
- gtk_cell_view_set_background_color (GTK_CELL_VIEW (combo_box->priv->cell_view),
+ gtk_cell_view_set_background_color (GTK_CELL_VIEW (combo_box->priv->cell_view),
&GTK_WIDGET (combo_box)->style->base[GTK_WIDGET_STATE (combo_box)]);
combo_box->priv->box = gtk_event_box_new ();
/*
- gtk_event_box_set_visible_window (GTK_EVENT_BOX (combo_box->priv->box),
+ gtk_event_box_set_visible_window (GTK_EVENT_BOX (combo_box->priv->box),
FALSE);
*/
@@ -2253,7 +2253,7 @@ gtk_combo_box_list_setup (GtkComboBox *combo_box)
gtk_widget_show_all (combo_box->priv->cell_view_frame);
g_signal_connect (combo_box->priv->box, "button_press_event",
- G_CALLBACK (gtk_combo_box_list_button_pressed),
+ G_CALLBACK (gtk_combo_box_list_button_pressed),
combo_box);
}
@@ -2269,7 +2269,7 @@ gtk_combo_box_list_setup (GtkComboBox *combo_box)
if (combo_box->priv->model)
gtk_tree_view_set_model (GTK_TREE_VIEW (combo_box->priv->tree_view),
combo_box->priv->model);
-
+
g_signal_connect (combo_box->priv->tree_view, "button_press_event",
G_CALLBACK (gtk_combo_box_list_button_pressed),
combo_box);
@@ -2494,7 +2494,7 @@ gtk_combo_box_key_press (GtkWidget *widget,
if (combo_box->priv->model)
items = gtk_tree_model_iter_n_children (combo_box->priv->model, NULL);
- if ((event->keyval == GDK_Down || event->keyval == GDK_KP_Down) &&
+ if ((event->keyval == GDK_Down || event->keyval == GDK_KP_Down) &&
state == GDK_MOD1_MASK)
{
gtk_combo_box_popup (combo_box);
@@ -2502,7 +2502,7 @@ gtk_combo_box_key_press (GtkWidget *widget,
return TRUE;
}
- switch (event->keyval)
+ switch (event->keyval)
{
case GDK_Down:
case GDK_KP_Down:
@@ -2514,20 +2514,20 @@ gtk_combo_box_key_press (GtkWidget *widget,
break;
case GDK_Page_Up:
case GDK_KP_Page_Up:
- case GDK_Home:
+ case GDK_Home:
case GDK_KP_Home:
new_index = 0;
break;
case GDK_Page_Down:
case GDK_KP_Page_Down:
- case GDK_End:
+ case GDK_End:
case GDK_KP_End:
new_index = items - 1;
break;
default:
return FALSE;
}
-
+
if (items > 0)
gtk_combo_box_set_active (combo_box, CLAMP (new_index, 0, items - 1));
@@ -2542,14 +2542,14 @@ gtk_combo_box_menu_key_press (GtkWidget *widget,
GtkComboBox *combo_box = GTK_COMBO_BOX (data);
guint state = event->state & gtk_accelerator_get_default_mod_mask ();
- if ((event->keyval == GDK_Up || event->keyval == GDK_KP_Up) &&
+ if ((event->keyval == GDK_Up || event->keyval == GDK_KP_Up) &&
state == GDK_MOD1_MASK)
{
gtk_combo_box_popdown (combo_box);
return TRUE;
}
-
+
return FALSE;
}
@@ -2562,35 +2562,35 @@ gtk_combo_box_list_key_press (GtkWidget *widget,
guint state = event->state & gtk_accelerator_get_default_mod_mask ();
if (event->keyval == GDK_Escape ||
- ((event->keyval == GDK_Up || event->keyval == GDK_KP_Up) &&
+ ((event->keyval == GDK_Up || event->keyval == GDK_KP_Up) &&
state == GDK_MOD1_MASK))
{
/* reset active item -- this is incredibly lame and ugly */
gtk_combo_box_set_active (combo_box,
gtk_combo_box_get_active (combo_box));
-
+
gtk_combo_box_popdown (combo_box);
-
+
return TRUE;
}
-
+
if (event->keyval == GDK_Return || event->keyval == GDK_KP_Enter ||
- event->keyval == GDK_space || event->keyval == GDK_KP_Space)
+ event->keyval == GDK_space || event->keyval == GDK_KP_Space)
{
gboolean ret = FALSE;
GtkTreeIter iter;
GtkTreeModel *model = NULL;
-
+
if (combo_box->priv->model)
{
GtkTreeSelection *sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (combo_box->priv->tree_view));
-
+
ret = gtk_tree_selection_get_selected (sel, &model, &iter);
}
if (ret)
{
GtkTreePath *path;
-
+
path = gtk_tree_model_get_path (model, &iter);
if (path)
{
@@ -2600,7 +2600,7 @@ gtk_combo_box_list_key_press (GtkWidget *widget,
}
gtk_combo_box_popdown (combo_box);
-
+
return TRUE;
}
@@ -2620,7 +2620,7 @@ gtk_combo_box_list_row_changed (GtkTreeModel *model,
if (width > combo_box->priv->width)
{
- if (combo_box->priv->cell_view)
+ if (combo_box->priv->cell_view)
{
gtk_widget_set_size_request (combo_box->priv->cell_view, width, -1);
gtk_widget_queue_resize (combo_box->priv->cell_view);
@@ -2742,11 +2742,11 @@ gtk_combo_box_cell_layout_clear (GtkCellLayout *layout)
GtkWidget *menu;
GtkComboBox *combo_box;
GSList *i;
-
+
g_return_if_fail (GTK_IS_COMBO_BOX (layout));
combo_box = GTK_COMBO_BOX (layout);
-
+
if (combo_box->priv->cell_view)
gtk_cell_layout_clear (GTK_CELL_LAYOUT (combo_box->priv->cell_view));
@@ -3082,7 +3082,7 @@ gtk_combo_box_set_wrap_width (GtkComboBox *combo_box,
gtk_combo_box_check_appearance (combo_box);
gtk_combo_box_relayout (combo_box);
-
+
g_object_notify (G_OBJECT (combo_box), "wrap_width");
}
}
@@ -3112,9 +3112,9 @@ gtk_combo_box_set_row_span_column (GtkComboBox *combo_box,
if (row_span != combo_box->priv->row_column)
{
combo_box->priv->row_column = row_span;
-
+
gtk_combo_box_relayout (combo_box);
-
+
g_object_notify (G_OBJECT (combo_box), "row_span_column");
}
}
@@ -3144,7 +3144,7 @@ gtk_combo_box_set_column_span_column (GtkComboBox *combo_box,
if (column_span != combo_box->priv->col_column)
{
combo_box->priv->col_column = column_span;
-
+
gtk_combo_box_relayout (combo_box);
g_object_notify (G_OBJECT (combo_box), "column_span_column");
@@ -3191,7 +3191,7 @@ gtk_combo_box_set_active (GtkComboBox *combo_box,
if (combo_box->priv->active_item == index_)
return;
-
+
gtk_combo_box_set_active_internal (combo_box, index_);
}
@@ -3252,9 +3252,9 @@ gtk_combo_box_set_active_internal (GtkComboBox *combo_box,
* gtk_combo_box_get_active_iter:
* @combo_box: A #GtkComboBox
* @iter: The uninitialized #GtkTreeIter.
- *
+ *
* Sets @iter to point to the current active item, if it exists.
- *
+ *
* Return value: %TRUE, if @iter was set
*
* Since: 2.4
@@ -3293,10 +3293,10 @@ gtk_combo_box_get_active_iter (GtkComboBox *combo_box,
* gtk_combo_box_set_active_iter:
* @combo_box: A #GtkComboBox
* @iter: The #GtkTreeIter.
- *
- * Sets the current active item to be the one referenced by @iter.
+ *
+ * Sets the current active item to be the one referenced by @iter.
* @iter must correspond to a path of depth one.
- *
+ *
* Since: 2.4
**/
void
@@ -3310,7 +3310,7 @@ gtk_combo_box_set_active_iter (GtkComboBox *combo_box,
path = gtk_tree_model_get_path (gtk_combo_box_get_model (combo_box), iter);
g_return_if_fail (path != NULL);
g_return_if_fail (gtk_tree_path_get_depth (path) == 1);
-
+
gtk_combo_box_set_active (combo_box, gtk_tree_path_get_indices (path)[0]);
gtk_tree_path_free (path);
}
@@ -3320,11 +3320,11 @@ gtk_combo_box_set_active_iter (GtkComboBox *combo_box,
* @combo_box: A #GtkComboBox.
* @model: A #GtkTreeModel.
*
- * Sets the model used by @combo_box to be @model. Will unset a previously set
+ * Sets the model used by @combo_box to be @model. Will unset a previously set
* model (if applicable). If @model is %NULL, then it will unset the model.
- *
- * Note that this function does not clear the cell renderers, you have to
- * call gtk_combo_box_cell_layout_clear() yourself if you need to set up
+ *
+ * Note that this function does not clear the cell renderers, you have to
+ * call gtk_combo_box_cell_layout_clear() yourself if you need to set up
* different cell renderers for the new model.
*
* Since: 2.4
@@ -3345,7 +3345,7 @@ gtk_combo_box_set_model (GtkComboBox *combo_box,
if (model == combo_box->priv->model)
return;
-
+
if (combo_box->priv->model)
gtk_combo_box_unset_model (combo_box);
@@ -3368,7 +3368,7 @@ gtk_combo_box_set_model (GtkComboBox *combo_box,
g_signal_connect (combo_box->priv->model, "row_changed",
G_CALLBACK (gtk_combo_box_model_row_changed),
combo_box);
-
+
if (combo_box->priv->tree_view)
{
/* list mode */
@@ -3574,7 +3574,7 @@ gtk_combo_box_destroy (GtkObject *object)
{
GtkComboBox *combo_box = GTK_COMBO_BOX (object);
- gtk_combo_box_popdown (combo_box);
+ gtk_combo_box_popdown (combo_box);
combo_box->priv->destroying = 1;
@@ -3589,14 +3589,14 @@ gtk_combo_box_finalize (GObject *object)
{
GtkComboBox *combo_box = GTK_COMBO_BOX (object);
GSList *i;
-
+
if (GTK_IS_MENU (combo_box->priv->popup_widget))
{
gtk_combo_box_menu_destroy (combo_box);
gtk_menu_detach (GTK_MENU (combo_box->priv->popup_widget));
combo_box->priv->popup_widget = NULL;
}
-
+
if (GTK_IS_TREE_VIEW (combo_box->priv->tree_view))
gtk_combo_box_list_destroy (combo_box);
@@ -3655,13 +3655,13 @@ get_attach_info (GtkWidget *child)
{
GObject *object = G_OBJECT (child);
AttachInfo *ai = g_object_get_data (object, ATTACH_INFO_KEY);
-
+
if (!ai)
{
ai = g_new0 (AttachInfo, 1);
g_object_set_data_full (object, ATTACH_INFO_KEY, ai, g_free);
}
-
+
return ai;
}
@@ -3693,25 +3693,25 @@ gtk_menu_attach (GtkMenu *menu,
guint bottom_attach)
{
GtkMenuShell *menu_shell;
-
+
g_return_if_fail (GTK_IS_MENU (menu));
g_return_if_fail (GTK_IS_MENU_ITEM (child));
- g_return_if_fail (child->parent == NULL ||
+ g_return_if_fail (child->parent == NULL ||
child->parent == GTK_WIDGET (menu));
g_return_if_fail (left_attach < right_attach);
g_return_if_fail (top_attach < bottom_attach);
menu_shell = GTK_MENU_SHELL (menu);
-
+
if (!child->parent)
{
AttachInfo *ai = get_attach_info (child);
-
+
ai->left_attach = left_attach;
ai->right_attach = right_attach;
ai->top_attach = top_attach;
ai->bottom_attach = bottom_attach;
-
+
menu_shell->children = g_list_append (menu_shell->children, child);
gtk_widget_set_parent (child, GTK_WIDGET (menu));
@@ -3741,7 +3741,7 @@ gtk_combo_box_get_active_text (GtkComboBox *combo_box)
/* g_return_val_if_fail (GTK_IS_LIST_STORE (combo_box->priv->model), NULL); */
if (gtk_combo_box_get_active_iter (combo_box, &iter))
- gtk_tree_model_get (gtk_combo_box_get_model(combo_box), &iter,
+ gtk_tree_model_get (gtk_combo_box_get_model(combo_box), &iter,
0, &text, -1);
return text;
}
diff --git a/pidgin/pidginstock.c b/pidgin/pidginstock.c
index 05d4e3700a..75038a0174 100644
--- a/pidgin/pidginstock.c
+++ b/pidgin/pidginstock.c
@@ -26,17 +26,32 @@
*/
#include "internal.h"
#include "pidgin.h"
+#include "prefs.h"
+
+#include "gtkicon-theme-loader.h"
+#include "theme-manager.h"
#include "pidginstock.h"
+/**************************************************************************
+ * Globals
+ **************************************************************************/
+
+static gboolean stock_initted = FALSE;
+static GtkIconSize microscopic, extra_small, small, medium, large, huge;
+
+/**************************************************************************
+ * Structures
+ **************************************************************************/
+
static struct StockIcon
{
const char *name;
const char *dir;
const char *filename;
-} const stock_icons[] =
-{
+} const stock_icons[] = {
+
{ PIDGIN_STOCK_ACTION, NULL, GTK_STOCK_EXECUTE },
#if GTK_CHECK_VERSION(2,6,0)
{ PIDGIN_STOCK_ALIAS, NULL, GTK_STOCK_EDIT },
@@ -98,116 +113,127 @@ static const GtkStockItem stock_items[] =
{ PIDGIN_STOCK_EDIT, N_("_Edit"), 0, 0, NULL }
};
-static struct SizedStockIcon {
- const char *name;
- const char *dir;
- const char *filename;
- gboolean microscopic;
- gboolean extra_small;
- gboolean small;
- gboolean medium;
- gboolean large;
- gboolean huge;
- gboolean rtl;
- const char *translucent_name;
-} const sized_stock_icons [] = {
- { PIDGIN_STOCK_STATUS_AVAILABLE, "status", "available.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_AVAILABLE_I },
- { PIDGIN_STOCK_STATUS_AWAY, "status", "away.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_AWAY_I },
- { PIDGIN_STOCK_STATUS_BUSY, "status", "busy.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_BUSY_I },
- { PIDGIN_STOCK_STATUS_CHAT, "status", "chat.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_STATUS_INVISIBLE,"status", "invisible.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_STATUS_XA, "status", "extended-away.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, PIDGIN_STOCK_STATUS_XA_I },
- { PIDGIN_STOCK_STATUS_LOGIN, "status", "log-in.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, NULL },
- { PIDGIN_STOCK_STATUS_LOGOUT, "status", "log-out.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, NULL },
- { PIDGIN_STOCK_STATUS_OFFLINE, "status", "offline.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_OFFLINE_I },
- { PIDGIN_STOCK_STATUS_PERSON, "status", "person.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_STATUS_MESSAGE, "toolbar", "message-new.png", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
-
- { PIDGIN_STOCK_STATUS_IGNORED, "emblems", "blocked.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_STATUS_FOUNDER, "emblems", "founder.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_STATUS_OPERATOR, "emblems", "operator.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_STATUS_HALFOP, "emblems", "half-operator.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_STATUS_VOICE, "emblems", "voice.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
-
- { PIDGIN_STOCK_DIALOG_AUTH, "dialogs", "auth.png", FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, NULL },
- { PIDGIN_STOCK_DIALOG_COOL, "dialogs", "cool.png", FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, NULL },
- { PIDGIN_STOCK_DIALOG_ERROR, "dialogs", "error.png", FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, NULL },
- { PIDGIN_STOCK_DIALOG_INFO, "dialogs", "info.png", FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, NULL },
- { PIDGIN_STOCK_DIALOG_MAIL, "dialogs", "mail.png", FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, NULL },
- { PIDGIN_STOCK_DIALOG_QUESTION, "dialogs", "question.png", FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, NULL },
- { PIDGIN_STOCK_DIALOG_WARNING, "dialogs", "warning.png", FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, NULL },
-
- { PIDGIN_STOCK_ANIMATION_CONNECT0, "animations", "process-working0.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_ANIMATION_CONNECT1, "animations", "process-working1.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_ANIMATION_CONNECT2, "animations", "process-working2.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_ANIMATION_CONNECT3, "animations", "process-working3.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_ANIMATION_CONNECT4, "animations", "process-working4.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_ANIMATION_CONNECT5, "animations", "process-working5.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_ANIMATION_CONNECT6, "animations", "process-working6.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_ANIMATION_CONNECT7, "animations", "process-working7.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_ANIMATION_CONNECT8, "animations", "process-working8.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_ANIMATION_CONNECT9, "animations", "process-working9.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_ANIMATION_CONNECT10, "animations", "process-working10.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_ANIMATION_CONNECT11, "animations", "process-working11.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_ANIMATION_CONNECT12, "animations", "process-working12.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_ANIMATION_CONNECT13, "animations", "process-working13.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_ANIMATION_CONNECT14, "animations", "process-working14.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_ANIMATION_CONNECT15, "animations", "process-working15.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_ANIMATION_CONNECT16, "animations", "process-working16.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_ANIMATION_CONNECT17, "animations", "process-working17.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_ANIMATION_CONNECT18, "animations", "process-working18.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_ANIMATION_CONNECT19, "animations", "process-working19.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_ANIMATION_CONNECT20, "animations", "process-working20.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_ANIMATION_CONNECT21, "animations", "process-working21.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_ANIMATION_CONNECT22, "animations", "process-working22.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_ANIMATION_CONNECT23, "animations", "process-working23.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_ANIMATION_CONNECT24, "animations", "process-working24.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_ANIMATION_CONNECT25, "animations", "process-working25.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_ANIMATION_CONNECT26, "animations", "process-working26.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_ANIMATION_CONNECT27, "animations", "process-working27.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_ANIMATION_CONNECT28, "animations", "process-working28.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_ANIMATION_CONNECT29, "animations", "process-working29.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_ANIMATION_CONNECT30, "animations", "process-working30.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_ANIMATION_TYPING0, "animations", "typing0.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_ANIMATION_TYPING1, "animations", "typing1.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_ANIMATION_TYPING2, "animations", "typing2.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_ANIMATION_TYPING3, "animations", "typing3.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_ANIMATION_TYPING4, "animations", "typing4.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_ANIMATION_TYPING5, "animations", "typing5.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
-
- { PIDGIN_STOCK_TOOLBAR_BGCOLOR, "toolbar", "change-bgcolor.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_TOOLBAR_BLOCK, "emblems", "blocked.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_TOOLBAR_FGCOLOR, "toolbar", "change-fgcolor.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_TOOLBAR_SMILEY, "toolbar", "emote-select.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_TOOLBAR_FONT_FACE, "toolbar", "font-face.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_TOOLBAR_TEXT_SMALLER, "toolbar", "font-size-down.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_TOOLBAR_TEXT_LARGER, "toolbar", "font-size-up.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_TOOLBAR_INSERT, "toolbar", "insert.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_TOOLBAR_INSERT_IMAGE, "toolbar", "insert-image.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_TOOLBAR_INSERT_LINK, "toolbar", "insert-link.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_TOOLBAR_MESSAGE_NEW, "toolbar", "message-new.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_TOOLBAR_PENDING, "tray", "tray-new-im.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_TOOLBAR_PLUGINS, "toolbar", "plugins.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_TOOLBAR_UNBLOCK, "toolbar", "unblock.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_TOOLBAR_SELECT_AVATAR, "toolbar", "select-avatar.png", FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_TOOLBAR_SEND_FILE, "toolbar", "send-file.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_TOOLBAR_TRANSFER, "toolbar", "transfer.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
-
- { PIDGIN_STOCK_TRAY_AVAILABLE, "tray", "tray-online.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_TRAY_INVISIBLE, "tray", "tray-invisible.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_TRAY_AWAY, "tray", "tray-away.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_TRAY_BUSY, "tray", "tray-busy.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_TRAY_XA, "tray", "tray-extended-away.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_TRAY_OFFLINE, "tray", "tray-offline.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_TRAY_CONNECT, "tray", "tray-connecting.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_TRAY_PENDING, "tray", "tray-new-im.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_TRAY_EMAIL, "tray", "tray-message.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL }
+typedef struct {
+ const char *name;
+ const char *dir;
+ const char *filename;
+ gboolean microscopic;
+ gboolean extra_small;
+ gboolean small;
+ gboolean medium;
+ gboolean large;
+ gboolean huge;
+ gboolean rtl;
+ const char *translucent_name;
+} SizedStockIcon;
+
+const SizedStockIcon sized_stock_icons [] = {
+
+ { PIDGIN_STOCK_STATUS_IGNORED, "emblems", "blocked.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_STATUS_FOUNDER, "emblems", "founder.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_STATUS_OPERATOR, "emblems", "operator.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_STATUS_HALFOP, "emblems", "half-operator.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_STATUS_VOICE, "emblems", "voice.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+
+ { PIDGIN_STOCK_DIALOG_AUTH, "dialogs", "auth.png", FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, NULL },
+ { PIDGIN_STOCK_DIALOG_COOL, "dialogs", "cool.png", FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, NULL },
+ { PIDGIN_STOCK_DIALOG_ERROR, "dialogs", "error.png", FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, NULL },
+ { PIDGIN_STOCK_DIALOG_INFO, "dialogs", "info.png", FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, NULL },
+ { PIDGIN_STOCK_DIALOG_MAIL, "dialogs", "mail.png", FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, NULL },
+ { PIDGIN_STOCK_DIALOG_QUESTION, "dialogs", "question.png", FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, NULL },
+ { PIDGIN_STOCK_DIALOG_WARNING, "dialogs", "warning.png", FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, NULL },
+
+ { PIDGIN_STOCK_ANIMATION_CONNECT0, "animations", "process-working0.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_ANIMATION_CONNECT1, "animations", "process-working1.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_ANIMATION_CONNECT2, "animations", "process-working2.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_ANIMATION_CONNECT3, "animations", "process-working3.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_ANIMATION_CONNECT4, "animations", "process-working4.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_ANIMATION_CONNECT5, "animations", "process-working5.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_ANIMATION_CONNECT6, "animations", "process-working6.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_ANIMATION_CONNECT7, "animations", "process-working7.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_ANIMATION_CONNECT8, "animations", "process-working8.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_ANIMATION_CONNECT9, "animations", "process-working9.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_ANIMATION_CONNECT10, "animations", "process-working10.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_ANIMATION_CONNECT11, "animations", "process-working11.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_ANIMATION_CONNECT12, "animations", "process-working12.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_ANIMATION_CONNECT13, "animations", "process-working13.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_ANIMATION_CONNECT14, "animations", "process-working14.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_ANIMATION_CONNECT15, "animations", "process-working15.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_ANIMATION_CONNECT16, "animations", "process-working16.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_ANIMATION_CONNECT17, "animations", "process-working17.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_ANIMATION_CONNECT18, "animations", "process-working18.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_ANIMATION_CONNECT19, "animations", "process-working19.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_ANIMATION_CONNECT20, "animations", "process-working20.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_ANIMATION_CONNECT21, "animations", "process-working21.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_ANIMATION_CONNECT22, "animations", "process-working22.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_ANIMATION_CONNECT23, "animations", "process-working23.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_ANIMATION_CONNECT24, "animations", "process-working24.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_ANIMATION_CONNECT25, "animations", "process-working25.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_ANIMATION_CONNECT26, "animations", "process-working26.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_ANIMATION_CONNECT27, "animations", "process-working27.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_ANIMATION_CONNECT28, "animations", "process-working28.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_ANIMATION_CONNECT29, "animations", "process-working29.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_ANIMATION_CONNECT30, "animations", "process-working30.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+
+ { PIDGIN_STOCK_ANIMATION_TYPING0, "animations", "typing0.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_ANIMATION_TYPING1, "animations", "typing1.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_ANIMATION_TYPING2, "animations", "typing2.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_ANIMATION_TYPING3, "animations", "typing3.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_ANIMATION_TYPING4, "animations", "typing4.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_ANIMATION_TYPING5, "animations", "typing5.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+
+ { PIDGIN_STOCK_TOOLBAR_BGCOLOR, "toolbar", "change-bgcolor.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TOOLBAR_BLOCK, "emblems", "blocked.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TOOLBAR_FGCOLOR, "toolbar", "change-fgcolor.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TOOLBAR_SMILEY, "toolbar", "emote-select.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TOOLBAR_FONT_FACE, "toolbar", "font-face.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TOOLBAR_TEXT_SMALLER, "toolbar", "font-size-down.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TOOLBAR_TEXT_LARGER, "toolbar", "font-size-up.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TOOLBAR_INSERT, "toolbar", "insert.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TOOLBAR_INSERT_IMAGE, "toolbar", "insert-image.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TOOLBAR_INSERT_LINK, "toolbar", "insert-link.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TOOLBAR_MESSAGE_NEW, "toolbar", "message-new.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TOOLBAR_PENDING, "toolbar", "message-new.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TOOLBAR_PLUGINS, "toolbar", "plugins.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TOOLBAR_UNBLOCK, "toolbar", "unblock.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TOOLBAR_SELECT_AVATAR, "toolbar", "select-avatar.png", FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TOOLBAR_SEND_FILE, "toolbar", "send-file.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TOOLBAR_TRANSFER, "toolbar", "transfer.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+#ifdef USE_VV
+ { PIDGIN_STOCK_TOOLBAR_AUDIO_CALL, "toolbar", "audio-call.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TOOLBAR_VIDEO_CALL, "toolbar", "video-call.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TOOLBAR_AUDIO_VIDEO_CALL, "toolbar", "audio-video-call.png", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+#endif
+};
+
+const SizedStockIcon sized_status_icons [] = {
+
+ { PIDGIN_STOCK_STATUS_AVAILABLE, "status", "available.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_AVAILABLE_I },
+ { PIDGIN_STOCK_STATUS_AWAY, "status", "away.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_AWAY_I },
+ { PIDGIN_STOCK_STATUS_BUSY, "status", "busy.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_BUSY_I },
+ { PIDGIN_STOCK_STATUS_CHAT, "status", "chat.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_STATUS_INVISIBLE, "status", "invisible.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_STATUS_XA, "status", "extended-away.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, PIDGIN_STOCK_STATUS_XA_I },
+ { PIDGIN_STOCK_STATUS_LOGIN, "status", "log-in.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, NULL },
+ { PIDGIN_STOCK_STATUS_LOGOUT, "status", "log-out.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, NULL },
+ { PIDGIN_STOCK_STATUS_OFFLINE, "status", "offline.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_OFFLINE_I },
+ { PIDGIN_STOCK_STATUS_PERSON, "status", "person.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_STATUS_MESSAGE, "toolbar", "message-new.png", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+
+ { PIDGIN_STOCK_TRAY_AVAILABLE, "tray", "tray-online.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TRAY_INVISIBLE, "tray", "tray-invisible.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TRAY_AWAY, "tray", "tray-away.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TRAY_BUSY, "tray", "tray-busy.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TRAY_XA, "tray", "tray-extended-away.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TRAY_OFFLINE, "tray", "tray-offline.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TRAY_CONNECT, "tray", "tray-connecting.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TRAY_PENDING, "tray", "tray-new-im.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TRAY_EMAIL, "tray", "tray-message.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL }
};
-static void
-add_sized_icon_common(GtkIconSet *iconset, GtkIconSize sizeid, const char *dir,
- gboolean rtl, const char *size, const char *file,
- gboolean translucent);
+/*****************************************************************************
+ * Private functions
+ *****************************************************************************/
static gchar *
find_file_common(const char *name)
@@ -257,71 +283,85 @@ find_file(const char *dir, const char *base)
return ret;
}
-static void
-add_sized_icon(GtkIconSet *iconset, GtkIconSize sizeid, const char *dir,
- gboolean rtl, const char *size, const char *file)
-{
- add_sized_icon_common(iconset, sizeid, dir, rtl, size, file, FALSE);
-}
/* Altered from do_colorshift in gnome-panel */
static void
-do_alphashift (GdkPixbuf *dest, GdkPixbuf *src)
+do_alphashift(GdkPixbuf *dest, GdkPixbuf *src)
{
- gint i, j;
- gint width, height, has_alpha, srcrowstride, destrowstride;
- guchar *target_pixels;
- guchar *original_pixels;
- guchar *pixsrc;
- guchar *pixdest;
- guchar a;
-
- has_alpha = gdk_pixbuf_get_has_alpha (src);
- if (!has_alpha)
- return;
-
- width = gdk_pixbuf_get_width (src);
- height = gdk_pixbuf_get_height (src);
- srcrowstride = gdk_pixbuf_get_rowstride (src);
- destrowstride = gdk_pixbuf_get_rowstride (dest);
- target_pixels = gdk_pixbuf_get_pixels (dest);
- original_pixels = gdk_pixbuf_get_pixels (src);
-
- for (i = 0; i < height; i++) {
- pixdest = target_pixels + i*destrowstride;
- pixsrc = original_pixels + i*srcrowstride;
- for (j = 0; j < width; j++) {
- *(pixdest++) = *(pixsrc++);
- *(pixdest++) = *(pixsrc++);
- *(pixdest++) = *(pixsrc++);
- a = *(pixsrc++);
- *(pixdest++) = a / 2;
- }
- }
+ gint i, j;
+ gint width, height, has_alpha, srcrowstride, destrowstride;
+ guchar *target_pixels;
+ guchar *original_pixels;
+ guchar *pixsrc;
+ guchar *pixdest;
+ guchar a;
+
+ has_alpha = gdk_pixbuf_get_has_alpha (src);
+ if (!has_alpha)
+ return;
+
+ width = gdk_pixbuf_get_width (src);
+ height = gdk_pixbuf_get_height (src);
+ srcrowstride = gdk_pixbuf_get_rowstride (src);
+ destrowstride = gdk_pixbuf_get_rowstride (dest);
+ target_pixels = gdk_pixbuf_get_pixels (dest);
+ original_pixels = gdk_pixbuf_get_pixels (src);
+
+ for (i = 0; i < height; i++) {
+ pixdest = target_pixels + i*destrowstride;
+ pixsrc = original_pixels + i*srcrowstride;
+ for (j = 0; j < width; j++) {
+ *(pixdest++) = *(pixsrc++);
+ *(pixdest++) = *(pixsrc++);
+ *(pixdest++) = *(pixsrc++);
+ a = *(pixsrc++);
+ *(pixdest++) = a / 2;
+ }
+ }
}
-static void
-add_translucent_sized_icon(GtkIconSet *iconset, GtkIconSize sizeid, const char *dir,
- gboolean rtl, const char *size, const char *file)
+static gchar *
+find_icon_file(PidginIconTheme *theme, const gchar *size, SizedStockIcon sized_icon, gboolean rtl)
{
- add_sized_icon_common(iconset, sizeid, dir, rtl, size, file, TRUE);
+ const gchar *file, *dir;
+ gchar *file_full = NULL;
+ gchar *tmp;
+
+ if (theme != NULL) {
+ file = pidgin_icon_theme_get_icon(PIDGIN_ICON_THEME(theme), sized_icon.name);
+ dir = purple_theme_get_dir(PURPLE_THEME(theme));
+
+ if (rtl)
+ file_full = g_build_filename(dir, size, "rtl", file, NULL);
+ else
+ file_full = g_build_filename(dir, size, file, NULL);
+
+ if (g_file_test(file_full, G_FILE_TEST_IS_REGULAR))
+ return file_full;
+
+ g_free(file_full);
+ }
+
+ if (rtl)
+ tmp = g_build_filename("pixmaps", "pidgin", sized_icon.dir, size, "rtl", sized_icon.filename, NULL);
+ else
+ tmp = g_build_filename("pixmaps", "pidgin", sized_icon.dir, size, sized_icon.filename, NULL);
+
+ file_full = find_file_common(tmp);
+ g_free(tmp);
+ return file_full;
}
static void
-add_sized_icon_common(GtkIconSet *iconset, GtkIconSize sizeid, const char *dir,
- gboolean rtl, const char *size, const char *file,
- gboolean translucent)
+add_sized_icon(GtkIconSet *iconset, GtkIconSize sizeid, PidginIconTheme *theme,
+ const char *size, SizedStockIcon sized_icon, gboolean translucent)
{
- char *filename, *subpath;
+ char *filename;
GtkIconSource *source;
GdkPixbuf *pixbuf;
- subpath = g_build_filename("pixmaps", "pidgin", dir, size, file, NULL);
- filename = find_file_common(subpath);
- g_free(subpath);
- if (!filename)
- return;
-
+ filename = find_icon_file(theme, size, sized_icon, FALSE);
+ g_return_if_fail(filename != NULL);
pixbuf = gdk_pixbuf_new_from_file(filename, NULL);
if (translucent)
do_alphashift(pixbuf, pixbuf);
@@ -329,7 +369,7 @@ add_sized_icon_common(GtkIconSet *iconset, GtkIconSize sizeid, const char *dir,
source = gtk_icon_source_new();
gtk_icon_source_set_pixbuf(source, pixbuf);
gtk_icon_source_set_direction(source, GTK_TEXT_DIR_LTR);
- gtk_icon_source_set_direction_wildcarded(source, !rtl);
+ gtk_icon_source_set_direction_wildcarded(source, !sized_icon.rtl);
gtk_icon_source_set_size(source, sizeid);
gtk_icon_source_set_size_wildcarded(source, FALSE);
gtk_icon_source_set_state_wildcarded(source, TRUE);
@@ -349,17 +389,16 @@ add_sized_icon_common(GtkIconSet *iconset, GtkIconSize sizeid, const char *dir,
g_free(filename);
g_object_unref(pixbuf);
- if (rtl) {
- subpath = g_build_filename("pixmaps", "pidgin", dir, size, "rtl", file, NULL);
- filename = find_file_common(subpath);
- g_free(subpath);
- if (!filename)
- return;
+ if (sized_icon.rtl) {
+ filename = find_icon_file(theme, size, sized_icon, TRUE);
+ g_return_if_fail(filename != NULL);
pixbuf = gdk_pixbuf_new_from_file(filename, NULL);
if (translucent)
do_alphashift(pixbuf, pixbuf);
+
source = gtk_icon_source_new();
gtk_icon_source_set_pixbuf(source, pixbuf);
+ gtk_icon_source_set_filename(source, filename);
gtk_icon_source_set_direction(source, GTK_TEXT_DIR_RTL);
gtk_icon_source_set_size(source, sizeid);
gtk_icon_source_set_size_wildcarded(source, FALSE);
@@ -371,43 +410,117 @@ add_sized_icon_common(GtkIconSet *iconset, GtkIconSize sizeid, const char *dir,
}
}
+static void
+reload_settings(void)
+{
+#if GTK_CHECK_VERSION(2,4,0)
+ GtkSettings *setting = NULL;
+ setting = gtk_settings_get_default();
+ gtk_rc_reset_styles(setting);
+#endif
+}
+
+/*****************************************************************************
+ * Public API functions
+ *****************************************************************************/
+
void
-pidgin_stock_init(void)
+pidgin_stock_load_status_icon_theme(PidginStatusIconTheme *theme)
{
- static gboolean stock_initted = FALSE;
GtkIconFactory *icon_factory;
- size_t i;
+ gint i;
+ GtkIconSet *normal;
+ GtkIconSet *translucent = NULL;
GtkWidget *win;
- GtkIconSize microscopic, extra_small, small, medium, large, huge;
- if (stock_initted)
- return;
-
- stock_initted = TRUE;
+ if (theme != NULL) {
+ purple_prefs_set_string(PIDGIN_PREFS_ROOT "/status/icon-theme",
+ purple_theme_get_name(PURPLE_THEME(theme)));
+ purple_prefs_set_path(PIDGIN_PREFS_ROOT "/status/icon-theme-dir",
+ purple_theme_get_dir(PURPLE_THEME(theme)));
+ }
+ else {
+ purple_prefs_set_string(PIDGIN_PREFS_ROOT "/status/icon-theme", "");
+ purple_prefs_set_path(PIDGIN_PREFS_ROOT "/status/icon-theme-dir", "");
+ }
- /* Setup the icon factory. */
icon_factory = gtk_icon_factory_new();
gtk_icon_factory_add_default(icon_factory);
- /* Er, yeah, a hack, but it works. :) */
win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_realize(win);
- for (i = 0; i < G_N_ELEMENTS(stock_icons); i++)
+ for (i = 0; i < G_N_ELEMENTS(sized_status_icons); i++)
{
+ normal = gtk_icon_set_new();
+ if (sized_status_icons[i].translucent_name)
+ translucent = gtk_icon_set_new();
+
+#define ADD_SIZED_ICON(name, size) \
+ if (sized_status_icons[i].name) { \
+ add_sized_icon(normal, name, PIDGIN_ICON_THEME(theme), size, sized_status_icons[i], FALSE); \
+ if (sized_status_icons[i].translucent_name) \
+ add_sized_icon(translucent, name, PIDGIN_ICON_THEME(theme), size, sized_status_icons[i], TRUE); \
+ }
+ ADD_SIZED_ICON(microscopic, "11");
+ ADD_SIZED_ICON(extra_small, "16");
+ ADD_SIZED_ICON(small, "22");
+ ADD_SIZED_ICON(medium, "32");
+ ADD_SIZED_ICON(large, "48");
+ ADD_SIZED_ICON(huge, "64");
+#undef ADD_SIZED_ICON
+
+ gtk_icon_factory_add(icon_factory, sized_status_icons[i].name, normal);
+ gtk_icon_set_unref(normal);
+
+ if (sized_status_icons[i].translucent_name) {
+ gtk_icon_factory_add(icon_factory, sized_status_icons[i].translucent_name, translucent);
+ gtk_icon_set_unref(translucent);
+ }
+ }
+
+ gtk_widget_destroy(win);
+ g_object_unref(G_OBJECT(icon_factory));
+ reload_settings();
+}
+
+void
+pidgin_stock_load_stock_icon_theme(PidginStockIconTheme *theme)
+{
+ GtkIconFactory *icon_factory;
+ gint i;
+ GtkWidget *win;
+
+ if (theme != NULL) {
+ purple_prefs_set_string(PIDGIN_PREFS_ROOT "/stock/icon-theme",
+ purple_theme_get_name(PURPLE_THEME(theme)));
+ purple_prefs_set_path(PIDGIN_PREFS_ROOT "/stock/icon-theme-dir",
+ purple_theme_get_dir(PURPLE_THEME(theme)));
+ }
+ else {
+ purple_prefs_set_string(PIDGIN_PREFS_ROOT "/stock/icon-theme", "");
+ purple_prefs_set_path(PIDGIN_PREFS_ROOT "/stock/icon-theme-dir", "");
+ }
+
+ icon_factory = gtk_icon_factory_new();
+
+ gtk_icon_factory_add_default(icon_factory);
+
+ win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ gtk_widget_realize(win);
+
+ /* All non-sized icons */
+ for (i = 0; i < G_N_ELEMENTS(stock_icons); i++) {
GtkIconSource *source;
GtkIconSet *iconset;
gchar *filename;
- if (stock_icons[i].dir == NULL)
- {
+ if (stock_icons[i].dir == NULL) {
/* GTK+ Stock icon */
iconset = gtk_style_lookup_icon_set(gtk_widget_get_style(win),
stock_icons[i].filename);
- }
- else
- {
+ } else {
filename = find_file(stock_icons[i].dir, stock_icons[i].filename);
if (filename == NULL)
@@ -431,27 +544,14 @@ pidgin_stock_init(void)
gtk_icon_set_unref(iconset);
}
- /* register custom icon sizes */
-
- microscopic = gtk_icon_size_register(PIDGIN_ICON_SIZE_TANGO_MICROSCOPIC, 11, 11);
- extra_small = gtk_icon_size_register(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL, 16, 16);
- small = gtk_icon_size_register(PIDGIN_ICON_SIZE_TANGO_SMALL, 22, 22);
- medium = gtk_icon_size_register(PIDGIN_ICON_SIZE_TANGO_MEDIUM, 32, 32);
- large = gtk_icon_size_register(PIDGIN_ICON_SIZE_TANGO_LARGE, 48, 48);
- huge = gtk_icon_size_register(PIDGIN_ICON_SIZE_TANGO_HUGE, 64, 64);
-
+ /* All non-status sized icons */
for (i = 0; i < G_N_ELEMENTS(sized_stock_icons); i++)
{
- GtkIconSet *iconset;
+ GtkIconSet *iconset = gtk_icon_set_new();
- iconset = gtk_icon_set_new();
-
-#define ADD_SIZED_ICON(name, size) do { \
- if (sized_stock_icons[i].name) \
- add_sized_icon(iconset, name, \
- sized_stock_icons[i].dir, sized_stock_icons[i].rtl, \
- size, sized_stock_icons[i].filename); \
- } while (0)
+#define ADD_SIZED_ICON(name, size) \
+ if (sized_stock_icons[i].name) \
+ add_sized_icon(iconset, name, PIDGIN_ICON_THEME(theme), size, sized_stock_icons[i], FALSE);
ADD_SIZED_ICON(microscopic, "11");
ADD_SIZED_ICON(extra_small, "16");
ADD_SIZED_ICON(small, "22");
@@ -462,32 +562,85 @@ pidgin_stock_init(void)
gtk_icon_factory_add(icon_factory, sized_stock_icons[i].name, iconset);
gtk_icon_set_unref(iconset);
-
- if (sized_stock_icons[i].translucent_name) {
- iconset = gtk_icon_set_new();
-
-#define ADD_TRANS_ICON(name, size) do { \
- if (sized_stock_icons[i].name) \
- add_translucent_sized_icon(iconset, name, \
- sized_stock_icons[i].dir, sized_stock_icons[i].rtl, \
- size, sized_stock_icons[i].filename); \
- } while (0)
- ADD_TRANS_ICON(microscopic, "11");
- ADD_TRANS_ICON(extra_small, "16");
- ADD_TRANS_ICON(small, "22");
- ADD_TRANS_ICON(medium, "32");
- ADD_TRANS_ICON(large, "48");
- ADD_TRANS_ICON(huge, "64");
-#undef ADD_TRANS_ICON
-
- gtk_icon_factory_add(icon_factory, sized_stock_icons[i].translucent_name, iconset);
- gtk_icon_set_unref(iconset);
- }
}
gtk_widget_destroy(win);
g_object_unref(G_OBJECT(icon_factory));
+ reload_settings();
+}
+
+void
+pidgin_stock_init(void)
+{
+ PidginIconThemeLoader *loader, *stockloader;
+ const gchar *path = NULL;
+
+ if (stock_initted)
+ return;
+
+ stock_initted = TRUE;
+
+ /* Setup the status icon theme */
+ loader = g_object_new(PIDGIN_TYPE_ICON_THEME_LOADER, "type", "status-icon", NULL);
+ purple_theme_manager_register_type(PURPLE_THEME_LOADER(loader));
+ purple_prefs_add_string(PIDGIN_PREFS_ROOT "/status/icon-theme", "");
+ purple_prefs_add_path(PIDGIN_PREFS_ROOT "/status/icon-theme-dir", "");
+
+ stockloader = g_object_new(PIDGIN_TYPE_ICON_THEME_LOADER, "type", "stock-icon", NULL);
+ purple_theme_manager_register_type(PURPLE_THEME_LOADER(stockloader));
+ purple_prefs_add_string(PIDGIN_PREFS_ROOT "/stock/icon-theme", "");
+ purple_prefs_add_path(PIDGIN_PREFS_ROOT "/stock/icon-theme-dir", "");
+
+ /* register custom icon sizes */
+ microscopic = gtk_icon_size_register(PIDGIN_ICON_SIZE_TANGO_MICROSCOPIC, 11, 11);
+ extra_small = gtk_icon_size_register(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL, 16, 16);
+ small = gtk_icon_size_register(PIDGIN_ICON_SIZE_TANGO_SMALL, 22, 22);
+ medium = gtk_icon_size_register(PIDGIN_ICON_SIZE_TANGO_MEDIUM, 32, 32);
+ large = gtk_icon_size_register(PIDGIN_ICON_SIZE_TANGO_LARGE, 48, 48);
+ huge = gtk_icon_size_register(PIDGIN_ICON_SIZE_TANGO_HUGE, 64, 64);
+
+ pidgin_stock_load_stock_icon_theme(NULL);
+
+ /* Pre-load Status icon theme - this avoids a bug with displaying the correct icon in the tray, theme is destroyed after*/
+ if (purple_prefs_get_string(PIDGIN_PREFS_ROOT "/icon/status/theme") &&
+ (path = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/status/icon-theme-dir"))) {
+
+ PidginStatusIconTheme *theme = PIDGIN_STATUS_ICON_THEME(purple_theme_loader_build(PURPLE_THEME_LOADER(loader), path));
+ pidgin_stock_load_status_icon_theme(theme);
+ g_object_unref(G_OBJECT(theme));
+
+ }
+ else
+ pidgin_stock_load_status_icon_theme(NULL);
/* Register the stock items. */
gtk_stock_add_static(stock_items, G_N_ELEMENTS(stock_items));
}
+
+static void
+pidgin_stock_icon_theme_class_init(PidginStockIconThemeClass *klass)
+{
+}
+
+GType
+pidgin_stock_icon_theme_get_type(void)
+{
+ static GType type = 0;
+ if (type == 0) {
+ static const GTypeInfo info = {
+ sizeof (PidginStockIconThemeClass),
+ NULL, /* base_init */
+ NULL, /* base_finalize */
+ (GClassInitFunc)pidgin_stock_icon_theme_class_init, /* class_init */
+ NULL, /* class_finalize */
+ NULL, /* class_data */
+ sizeof (PidginStockIconTheme),
+ 0, /* n_preallocs */
+ NULL,
+ NULL, /* value table */
+ };
+ type = g_type_register_static(PIDGIN_TYPE_ICON_THEME,
+ "PidginStockIconTheme", &info, 0);
+ }
+ return type;
+}
diff --git a/pidgin/pidginstock.h b/pidgin/pidginstock.h
index 528f2db18e..45fd0027dd 100644
--- a/pidgin/pidginstock.h
+++ b/pidgin/pidginstock.h
@@ -8,7 +8,7 @@
* Pidgin is the legal property of its developers, whose names are too numerous
* to list here. Please refer to the COPYRIGHT file distributed with this
* source distribution.
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -23,7 +23,8 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
*/
-#include <gtk/gtkstock.h>
+#include <gtk/gtk.h>
+#include "gtkstatus-icon-theme.h"
#ifndef _PIDGIN_STOCK_H_
#define _PIDGIN_STOCK_H_
@@ -153,6 +154,11 @@
#define PIDGIN_STOCK_TOOLBAR_SELECT_AVATAR "pidgin-select-avatar"
#define PIDGIN_STOCK_TOOLBAR_SEND_FILE "pidgin-send-file"
#define PIDGIN_STOCK_TOOLBAR_TRANSFER "pidgin-transfer"
+#ifdef USE_VV
+#define PIDGIN_STOCK_TOOLBAR_AUDIO_CALL "pidgin-audio-call"
+#define PIDGIN_STOCK_TOOLBAR_VIDEO_CALL "pidgin-video-call"
+#define PIDGIN_STOCK_TOOLBAR_AUDIO_VIDEO_CALL "pidgin-audio-video-call"
+#endif
/* Tray icons */
#define PIDGIN_STOCK_TRAY_AVAILABLE "pidgin-tray-available"
@@ -177,9 +183,56 @@
#define PIDGIN_ICON_SIZE_TANGO_MEDIUM "pidgin-icon-size-tango-medium"
#define PIDGIN_ICON_SIZE_TANGO_LARGE "pidgin-icon-size-tango-large"
#define PIDGIN_ICON_SIZE_TANGO_HUGE "pidgin-icon-size-tango-huge"
+
+/**
+ * extends PidginIconTheme (gtkicon-theme.h)
+ * A pidgin stock icon theme.
+ * This object represents a Pidgin stock icon theme.
+ *
+ * PidginStockIconTheme is a PidginIconTheme Object.
+ */
+typedef struct _PidginStockIconTheme PidginStockIconTheme;
+typedef struct _PidginStockIconThemeClass PidginStockIconThemeClass;
+
+#define PIDGIN_TYPE_STOCK_ICON_THEME (pidgin_stock_icon_theme_get_type ())
+#define PIDGIN_STOCK_ICON_THEME(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PIDGIN_TYPE_STOCK_ICON_THEME, PidginStockIconTheme))
+#define PIDGIN_STOCK_ICON_THEME_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PIDGIN_TYPE_STOCK_ICON_THEME, PidginStockIconThemeClass))
+#define PIDGIN_IS_STOCK_ICON_THEME(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PIDGIN_TYPE_STOCK_ICON_THEME))
+#define PIDGIN_IS_STOCK_ICON_THEME_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PIDGIN_TYPE_STOCK_ICON_THEME))
+#define PIDGIN_STOCK_ICON_THEME_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PIDGIN_TYPE_STOCK_ICON_THEME, PidginStockIconThemeClass))
+
+struct _PidginStockIconTheme
+{
+ PidginIconTheme parent;
+};
+
+struct _PidginStockIconThemeClass
+{
+ PidginIconThemeClass parent_class;
+};
+
+G_BEGIN_DECLS
+
+/**
+ * GObject foo.
+ * @internal.
+ */
+GType pidgin_stock_icon_theme_get_type(void);
+
+/**
+ * Loades all of the icons from the status icon theme into Pidgin stock
+ *
+ * @param theme the theme to load, or null to load all the default icons
+ */
+void pidgin_stock_load_status_icon_theme(PidginStatusIconTheme *theme);
+
+
+void pidgin_stock_load_stock_icon_theme(PidginStockIconTheme *theme);
+
/**
* Sets up the purple stock repository.
*/
void pidgin_stock_init(void);
+G_END_DECLS
#endif /* _PIDGIN_STOCK_H_ */
diff --git a/pidgin/pixmaps/Makefile.am b/pidgin/pixmaps/Makefile.am
index 8fc9ef5713..3b95734e81 100644
--- a/pidgin/pixmaps/Makefile.am
+++ b/pidgin/pixmaps/Makefile.am
@@ -429,6 +429,7 @@ TOOLBAR_16_SCALABLE = \
toolbar/16/scalable/font-size-up.svg
TOOLBAR_16 = \
+ toolbar/16/audio-call.png \
toolbar/16/change-bgcolor.png \
toolbar/16/change-fgcolor.png \
toolbar/16/emote-select.png \
@@ -442,7 +443,8 @@ TOOLBAR_16 = \
toolbar/16/plugins.png \
toolbar/16/send-file.png \
toolbar/16/transfer.png \
- toolbar/16/unblock.png
+ toolbar/16/unblock.png \
+ toolbar/16/video-call.png
TOOLBAR_22_SCALABLE = \
toolbar/22/scalable/select-avatar.svg
@@ -488,6 +490,7 @@ TRAY_32 = \
tray/32/tray-connecting.png \
tray/32/tray-extended-away.png \
tray/32/tray-invisible.png \
+ tray/32/tray-message.png \
tray/32/tray-new-im.png \
tray/32/tray-offline.png \
tray/32/tray-online.png
@@ -498,6 +501,7 @@ TRAY_48 = \
tray/48/tray-connecting.png \
tray/48/tray-extended-away.png \
tray/48/tray-invisible.png \
+ tray/48/tray-message.png \
tray/48/tray-new-im.png \
tray/48/tray-offline.png \
tray/48/tray-online.png
@@ -525,7 +529,6 @@ EXTRA_DIST = \
$(PROTOCOLS_16_SCALABLE) \
$(PROTOCOLS_22_SCALABLE) \
$(PROTOCOLS_48_SCALABLE) \
- $(TOOLBAR_11) \
$(TOOLBAR_16_SCALABLE) \
$(TOOLBAR_22_SCALABLE)
@@ -553,6 +556,7 @@ nobase_dist_pidginpixmap_DATA = \
$(STATUS_32_RTL) \
$(STATUS_48) \
$(STATUS_48_RTL) \
+ $(TOOLBAR_11) \
$(TOOLBAR_16) \
$(TOOLBAR_22) \
$(TRAY_16) \
diff --git a/pidgin/pixmaps/emotes/default/24/default.theme.in b/pidgin/pixmaps/emotes/default/24/default.theme.in
index ff9deb3ffa..19ba13f252 100644
--- a/pidgin/pixmaps/emotes/default/24/default.theme.in
+++ b/pidgin/pixmaps/emotes/default/24/default.theme.in
@@ -399,13 +399,16 @@ smile.png :) :-) =)
smile-big.png :D :-D =D
wink.png ;) ;-) ;^)
shock.png :-o
-tongue.png :P :-P
+tongue.png :P :-P :-p
glasses-cool.png B-)
angry.png X-(
-sad.png :(
+sad.png :( :-( =(
crying.png :'(
neutral.png :-|
thinking.png :-/
love.png <3
monkey.png :(|)
victory.png \\m/
+! skywalker.png C:-) c:-) C:) c:)
+! monkey.png :-(|) :(|) 8-|)
+! cyclops.png O-) o-)
diff --git a/pidgin/pixmaps/emotes/small/16/small.theme.in b/pidgin/pixmaps/emotes/small/16/small.theme.in
index 897a2383a0..a98a281330 100644
--- a/pidgin/pixmaps/emotes/small/16/small.theme.in
+++ b/pidgin/pixmaps/emotes/small/16/small.theme.in
@@ -161,10 +161,10 @@ smile.png :) :-) =)
smile-big.png :D :-D =D
wink.png ;) ;-) ;^)
shock.png :-o
-tongue.png :P :-P
+tongue.png :P :-P :-p
glasses-cool.png B-)
angry.png X-(
-sad.png :(
+sad.png :( :-( =(
crying.png :'(
neutral.png :-|
thinking.png :-/
diff --git a/pidgin/pixmaps/toolbar/16/audio-call.png b/pidgin/pixmaps/toolbar/16/audio-call.png
new file mode 100644
index 0000000000..7f71ff234a
--- /dev/null
+++ b/pidgin/pixmaps/toolbar/16/audio-call.png
Binary files differ
diff --git a/pidgin/pixmaps/toolbar/16/video-call.png b/pidgin/pixmaps/toolbar/16/video-call.png
new file mode 100644
index 0000000000..514cbc9568
--- /dev/null
+++ b/pidgin/pixmaps/toolbar/16/video-call.png
Binary files differ
diff --git a/pidgin/plugins/Makefile.am b/pidgin/plugins/Makefile.am
index 6d3957931d..96e9861326 100644
--- a/pidgin/plugins/Makefile.am
+++ b/pidgin/plugins/Makefile.am
@@ -1,4 +1,4 @@
-DIST_SUBDIRS = cap gestures gevolution musicmessaging perl ticker
+DIST_SUBDIRS = cap disco gestures gevolution musicmessaging perl ticker
if BUILD_GEVOLUTION
GEVOLUTION_DIR = gevolution
@@ -26,6 +26,7 @@ SUBDIRS = \
$(GEVOLUTION_DIR) \
$(MUSICMESSAGING_DIR) \
$(PERL_DIR) \
+ disco \
ticker
plugindir = $(libdir)/pidgin
@@ -43,6 +44,7 @@ pidginrc_la_LDFLAGS = -module -avoid-version
relnot_la_LDFLAGS = -module -avoid-version
sendbutton_la_LDFLAGS = -module -avoid-version
spellchk_la_LDFLAGS = -module -avoid-version
+themeedit_la_LDFLAGS = -module -avoid-version
timestamp_la_LDFLAGS = -module -avoid-version
timestamp_format_la_LDFLAGS = -module -avoid-version
xmppconsole_la_LDFLAGS = -module -avoid-version
@@ -61,6 +63,7 @@ plugin_LTLIBRARIES = \
relnot.la \
sendbutton.la \
spellchk.la \
+ themeedit.la \
timestamp.la \
timestamp_format.la \
xmppconsole.la
@@ -82,6 +85,7 @@ pidginrc_la_SOURCES = pidginrc.c
relnot_la_SOURCES = relnot.c
sendbutton_la_SOURCES = sendbutton.c
spellchk_la_SOURCES = spellchk.c
+themeedit_la_SOURCES = themeedit.c themeedit-icon.c themeedit-icon.h
timestamp_la_SOURCES = timestamp.c
timestamp_format_la_SOURCES = timestamp_format.c
xmppconsole_la_SOURCES = xmppconsole.c
@@ -99,6 +103,7 @@ pidginrc_la_LIBADD = $(GTK_LIBS)
relnot_la_LIBADD = $(GLIB_LIBS)
sendbutton_la_LIBADD = $(GTK_LIBS)
spellchk_la_LIBADD = $(GTK_LIBS)
+themeedit_la_LIBADD = $(GTK_LIBS)
timestamp_la_LIBADD = $(GTK_LIBS)
timestamp_format_la_LIBADD = $(GTK_LIBS)
xmppconsole_la_LIBADD = $(GTK_LIBS)
diff --git a/pidgin/plugins/cap/cap.c b/pidgin/plugins/cap/cap.c
index 01bb60f7a4..2a32d02e5c 100644
--- a/pidgin/plugins/cap/cap.c
+++ b/pidgin/plugins/cap/cap.c
@@ -135,7 +135,7 @@ static void destroy_stats(gpointer data) {
/* g_free(stats->hourly_usage); */
/* g_free(stats->daily_usage); */
if (stats->timeout_source_id != 0)
- g_source_remove(stats->timeout_source_id);
+ purple_timeout_remove(stats->timeout_source_id);
g_free(stats);
}
@@ -352,7 +352,7 @@ static void sent_im_msg(PurpleAccount *account, const char *receiver, const char
if (buddy == NULL)
return;
- interval = purple_prefs_get_int("/plugins/gtk/cap/max_msg_difference") * 1000 * 60;
+ interval = purple_prefs_get_int("/plugins/gtk/cap/max_msg_difference") * 60;
words = word_count(message);
stats = get_stats_for(buddy);
@@ -361,9 +361,9 @@ static void sent_im_msg(PurpleAccount *account, const char *receiver, const char
stats->last_message = time(NULL);
stats->last_message_status_id = purple_status_get_id(get_status_for(buddy));
if(stats->timeout_source_id != 0)
- g_source_remove(stats->timeout_source_id);
+ purple_timeout_remove(stats->timeout_source_id);
- stats->timeout_source_id = g_timeout_add(interval, max_message_difference_cb, stats);
+ stats->timeout_source_id = purple_timeout_add_seconds(interval, max_message_difference_cb, stats);
}
/* received-im-msg */
@@ -386,7 +386,7 @@ received_im_msg(PurpleAccount *account, char *sender, char *message, PurpleConve
* then cancel the timeout callback. */
if(stats->timeout_source_id != 0) {
purple_debug_info("cap", "Cancelling timeout callback\n");
- g_source_remove(stats->timeout_source_id);
+ purple_timeout_remove(stats->timeout_source_id);
stats->timeout_source_id = 0;
}
@@ -697,7 +697,7 @@ static void add_plugin_functionality(PurplePlugin *plugin) {
static void cancel_conversation_timeouts(gpointer key, gpointer value, gpointer user_data) {
CapStatistics *stats = value;
if(stats->timeout_source_id != 0) {
- g_source_remove(stats->timeout_source_id);
+ purple_timeout_remove(stats->timeout_source_id);
stats->timeout_source_id = 0;
}
}
diff --git a/pidgin/plugins/contact_priority.c b/pidgin/plugins/contact_priority.c
index 2b3c7c66b9..e59566b481 100644
--- a/pidgin/plugins/contact_priority.c
+++ b/pidgin/plugins/contact_priority.c
@@ -31,7 +31,7 @@ static void
select_account(GtkWidget *widget, PurpleAccount *account, gpointer data)
{
gtk_spin_button_set_value(GTK_SPIN_BUTTON(data),
- (gdouble)purple_account_get_int(account, "score", 0));
+ (gdouble)purple_account_get_int(account, "score", 0));
}
static void
@@ -142,18 +142,18 @@ get_config_frame(PurplePlugin *plugin)
spin = gtk_spin_button_new((GtkAdjustment *)adj, 1, 0);
optmenu = pidgin_account_option_menu_new(NULL, TRUE,
- G_CALLBACK(select_account),
- NULL, spin);
+ G_CALLBACK(select_account),
+ NULL, spin);
gtk_box_pack_start(GTK_BOX(hbox), optmenu, FALSE, FALSE, 0);
/* this is where we set up the spin button we made above */
account = g_object_get_data(G_OBJECT(gtk_menu_get_active(GTK_MENU(gtk_option_menu_get_menu(GTK_OPTION_MENU(optmenu))))),
- "account");
+ "account");
gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin),
- (gdouble)purple_account_get_int(account, "score", 0));
+ (gdouble)purple_account_get_int(account, "score", 0));
gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(spin), GTK_ADJUSTMENT(adj));
g_signal_connect(G_OBJECT(spin), "value-changed",
- G_CALLBACK(account_update), optmenu);
+ G_CALLBACK(account_update), optmenu);
gtk_box_pack_start(GTK_BOX(hbox), spin, FALSE, FALSE, 0);
gtk_widget_show_all(ret);
@@ -178,29 +178,29 @@ static PurplePluginInfo info =
PURPLE_PLUGIN_MAGIC,
PURPLE_MAJOR_VERSION,
PURPLE_MINOR_VERSION,
- PURPLE_PLUGIN_STANDARD, /**< type */
+ PURPLE_PLUGIN_STANDARD, /**< type */
PIDGIN_PLUGIN_TYPE, /**< ui_requirement */
- 0, /**< flags */
- NULL, /**< dependencies */
- PURPLE_PRIORITY_DEFAULT, /**< priority */
+ 0, /**< flags */
+ NULL, /**< dependencies */
+ PURPLE_PRIORITY_DEFAULT, /**< priority */
- CONTACT_PRIORITY_PLUGIN_ID, /**< id */
- N_("Contact Priority"), /**< name */
- DISPLAY_VERSION, /**< version */
+ CONTACT_PRIORITY_PLUGIN_ID, /**< id */
+ N_("Contact Priority"), /**< name */
+ DISPLAY_VERSION, /**< version */
/**< summary */
N_("Allows for controlling the values associated with different buddy states."),
/**< description */
N_("Allows for changing the point values of idle/away/offline states for buddies in contact priority computations."),
- "Etan Reisner <deryni@eden.rutgers.edu>", /**< author */
- PURPLE_WEBSITE, /**< homepage */
-
- NULL, /**< load */
- NULL, /**< unload */
- NULL, /**< destroy */
- &ui_info, /**< ui_info */
- NULL, /**< extra_info */
- NULL, /**< prefs_info */
- NULL, /**< actions */
+ "Etan Reisner <deryni@eden.rutgers.edu>", /**< author */
+ PURPLE_WEBSITE, /**< homepage */
+
+ NULL, /**< load */
+ NULL, /**< unload */
+ NULL, /**< destroy */
+ &ui_info, /**< ui_info */
+ NULL, /**< extra_info */
+ NULL, /**< prefs_info */
+ NULL, /**< actions */
/* padding */
NULL,
diff --git a/pidgin/plugins/convcolors.c b/pidgin/plugins/convcolors.c
index 9aa923b3bf..24c5b6889b 100644
--- a/pidgin/plugins/convcolors.c
+++ b/pidgin/plugins/convcolors.c
@@ -101,6 +101,7 @@ displaying_msg(PurpleAccount *account, const char *who, char **displaying,
gboolean bold, italic, underline;
int f;
const char *color;
+ gboolean rtl = FALSE;
for (i = 0; formats[i].prefix; i++)
if (flags & formats[i].flag)
@@ -126,6 +127,7 @@ displaying_msg(PurpleAccount *account, const char *who, char **displaying,
bold = (f & FONT_BOLD);
italic = (f & FONT_ITALIC);
underline = (f & FONT_UNDERLINE);
+ rtl = purple_markup_is_rtl(*displaying);
if (purple_prefs_get_bool(PREF_IGNORE))
{
@@ -156,11 +158,13 @@ displaying_msg(PurpleAccount *account, const char *who, char **displaying,
}
t = *displaying;
- *displaying = g_strdup_printf("%s%s%s%s%s%s%s",
+ *displaying = g_strdup_printf("%s%s%s%s%s%s%s%s%s",
bold ? "<B>" : "</B>",
italic ? "<I>" : "</I>",
underline ? "<U>" : "</U>",
- t,
+ rtl ? "<SPAN style=\"direction:rtl;text-align:right;\">" : "",
+ t,
+ rtl ? "</SPAN>" : "",
bold ? "</B>" : "<B>",
italic ? "</I>" : "<I>",
underline ? "</U>" : "<U>"
diff --git a/pidgin/plugins/disco/Makefile.am b/pidgin/plugins/disco/Makefile.am
new file mode 100644
index 0000000000..4951df0ebc
--- /dev/null
+++ b/pidgin/plugins/disco/Makefile.am
@@ -0,0 +1,23 @@
+plugindir = $(libdir)/pidgin
+
+xmppdisco_la_LDFLAGS = -module -avoid-version
+
+if PLUGINS
+
+plugin_LTLIBRARIES = xmppdisco.la
+
+xmppdisco_la_SOURCES = \
+ gtkdisco.c \
+ xmppdisco.c
+
+xmppdisco_la_LIBADD = $(GTK_LIBS)
+
+endif
+
+AM_CPPFLAGS = \
+ -DDATADIR=\"$(datadir)\" \
+ -I$(top_srcdir)/libpurple \
+ -I$(top_builddir)/libpurple \
+ -I$(top_srcdir)/pidgin \
+ $(DEBUG_CFLAGS) \
+ $(GTK_CFLAGS)
diff --git a/pidgin/plugins/disco/gtkdisco.c b/pidgin/plugins/disco/gtkdisco.c
new file mode 100644
index 0000000000..ee74ad0a31
--- /dev/null
+++ b/pidgin/plugins/disco/gtkdisco.c
@@ -0,0 +1,754 @@
+/**
+ * @file gtkdisco.c GTK+ Service Discovery UI
+ * @ingroup pidgin
+ */
+
+/* pidgin
+ *
+ * Pidgin is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#include "internal.h"
+#include "debug.h"
+#include "gtkutils.h"
+#include "pidgin.h"
+#include "request.h"
+#include "pidgintooltip.h"
+
+#include "gtkdisco.h"
+#include "xmppdisco.h"
+
+GList *dialogs = NULL;
+
+enum {
+ PIXBUF_COLUMN = 0,
+ NAME_COLUMN,
+ DESCRIPTION_COLUMN,
+ SERVICE_COLUMN,
+ NUM_OF_COLUMNS
+};
+
+static void
+pidgin_disco_list_destroy(PidginDiscoList *list)
+{
+ g_hash_table_destroy(list->services);
+ if (list->dialog && list->dialog->discolist == list)
+ list->dialog->discolist = NULL;
+
+ if (list->tree) {
+ gtk_widget_destroy(list->tree);
+ list->tree = NULL;
+ }
+
+ g_free((gchar*)list->server);
+ g_free(list);
+}
+
+PidginDiscoList *pidgin_disco_list_ref(PidginDiscoList *list)
+{
+ g_return_val_if_fail(list != NULL, NULL);
+
+ ++list->ref;
+ purple_debug_misc("xmppdisco", "reffing list, ref count now %d\n", list->ref);
+
+ return list;
+}
+
+void pidgin_disco_list_unref(PidginDiscoList *list)
+{
+ g_return_if_fail(list != NULL);
+
+ --list->ref;
+
+ purple_debug_misc("xmppdisco", "unreffing list, ref count now %d\n", list->ref);
+ if (list->ref == 0)
+ pidgin_disco_list_destroy(list);
+}
+
+void pidgin_disco_list_set_in_progress(PidginDiscoList *list, gboolean in_progress)
+{
+ PidginDiscoDialog *dialog = list->dialog;
+
+ if (!dialog)
+ return;
+
+ list->in_progress = in_progress;
+
+ if (in_progress) {
+ gtk_widget_set_sensitive(dialog->account_widget, FALSE);
+ gtk_widget_set_sensitive(dialog->stop_button, TRUE);
+ gtk_widget_set_sensitive(dialog->browse_button, FALSE);
+ } else {
+ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(dialog->progress), 0.0);
+
+ gtk_widget_set_sensitive(dialog->account_widget, TRUE);
+
+ gtk_widget_set_sensitive(dialog->stop_button, FALSE);
+ gtk_widget_set_sensitive(dialog->browse_button, TRUE);
+/*
+ gtk_widget_set_sensitive(dialog->register_button, FALSE);
+ gtk_widget_set_sensitive(dialog->add_button, FALSE);
+*/
+ }
+}
+
+static void pidgin_disco_create_tree(PidginDiscoList *pdl);
+
+static void dialog_select_account_cb(GObject *w, PurpleAccount *account,
+ PidginDiscoDialog *dialog)
+{
+ dialog->account = account;
+ gtk_widget_set_sensitive(dialog->browse_button, account != NULL);
+}
+
+static void register_button_cb(GtkWidget *unused, PidginDiscoDialog *dialog)
+{
+ xmpp_disco_service_register(dialog->selected);
+}
+
+static void discolist_cancel_cb(PidginDiscoList *pdl, const char *server)
+{
+ pidgin_disco_list_set_in_progress(pdl, FALSE);
+ pidgin_disco_list_unref(pdl);
+}
+
+static void discolist_ok_cb(PidginDiscoList *pdl, const char *server)
+{
+ gtk_widget_set_sensitive(pdl->dialog->browse_button, TRUE);
+
+ if (!server || !*server) {
+ purple_notify_error(my_plugin, _("Invalid Server"), _("Invalid Server"),
+ NULL);
+
+ pidgin_disco_list_set_in_progress(pdl, FALSE);
+ pidgin_disco_list_unref(pdl);
+ return;
+ }
+
+ pdl->server = g_strdup(server);
+ pidgin_disco_list_set_in_progress(pdl, TRUE);
+ xmpp_disco_start(pdl);
+}
+
+static void browse_button_cb(GtkWidget *button, PidginDiscoDialog *dialog)
+{
+ PurpleConnection *pc;
+ PidginDiscoList *pdl;
+ const char *username;
+ const char *at, *slash;
+ char *server = NULL;
+
+ pc = purple_account_get_connection(dialog->account);
+ if (!pc)
+ return;
+
+ gtk_widget_set_sensitive(dialog->browse_button, FALSE);
+ gtk_widget_set_sensitive(dialog->add_button, FALSE);
+ gtk_widget_set_sensitive(dialog->register_button, FALSE);
+
+ if (dialog->discolist != NULL) {
+ if (dialog->discolist->tree) {
+ gtk_widget_destroy(dialog->discolist->tree);
+ dialog->discolist->tree = NULL;
+ }
+ pidgin_disco_list_unref(dialog->discolist);
+ }
+
+ pdl = dialog->discolist = g_new0(PidginDiscoList, 1);
+ pdl->services = g_hash_table_new_full(NULL, NULL, NULL,
+ (GDestroyNotify)gtk_tree_row_reference_free);
+ pdl->pc = pc;
+ /* We keep a copy... */
+ pidgin_disco_list_ref(pdl);
+
+ pdl->dialog = dialog;
+ pidgin_disco_create_tree(pdl);
+
+ if (dialog->account_widget)
+ gtk_widget_set_sensitive(dialog->account_widget, FALSE);
+
+ username = purple_account_get_username(dialog->account);
+ at = g_utf8_strchr(username, -1, '@');
+ slash = g_utf8_strchr(username, -1, '/');
+ if (at && !slash) {
+ server = g_strdup_printf("%s", at + 1);
+ } else if (at && slash && at + 1 < slash) {
+ server = g_strdup_printf("%.*s", (int)(slash - (at + 1)), at + 1);
+ }
+
+ if (server == NULL)
+ /* This shouldn't ever happen since the account is connected */
+ server = g_strdup("jabber.org");
+
+ purple_request_input(my_plugin, _("Server name request"), _("Enter an XMPP Server"),
+ _("Select an XMPP server to query"),
+ server, FALSE, FALSE, NULL,
+ _("Find Services"), PURPLE_CALLBACK(discolist_ok_cb),
+ _("Cancel"), PURPLE_CALLBACK(discolist_cancel_cb),
+ purple_connection_get_account(pc), NULL, NULL, pdl);
+
+ g_free(server);
+}
+
+static void add_to_blist_cb(GtkWidget *unused, PidginDiscoDialog *dialog)
+{
+ XmppDiscoService *service = dialog->selected;
+ PurpleAccount *account;
+ const char *jid;
+
+ g_return_if_fail(service != NULL);
+
+ account = purple_connection_get_account(service->list->pc);
+ jid = service->jid;
+
+ if (service->type == XMPP_DISCO_SERVICE_TYPE_CHAT)
+ purple_blist_request_add_chat(account, NULL, NULL, jid);
+ else
+ purple_blist_request_add_buddy(account, jid, NULL, NULL);
+}
+
+static gboolean
+service_click_cb(GtkTreeView *tree, GdkEventButton *event, gpointer user_data)
+{
+ PidginDiscoList *pdl;
+ XmppDiscoService *service;
+ GtkWidget *menu;
+
+ GtkTreePath *path;
+ GtkTreeIter iter;
+ GValue val;
+
+ if (event->button != 3 || event->type != GDK_BUTTON_PRESS)
+ return FALSE;
+
+ pdl = user_data;
+
+ /* Figure out what was clicked */
+ if (!gtk_tree_view_get_path_at_pos(tree, event->x, event->y, &path,
+ NULL, NULL, NULL))
+ return FALSE;
+ gtk_tree_model_get_iter(GTK_TREE_MODEL(pdl->model), &iter, path);
+ gtk_tree_path_free(path);
+ val.g_type = 0;
+ gtk_tree_model_get_value(GTK_TREE_MODEL(pdl->model), &iter, SERVICE_COLUMN,
+ &val);
+ service = g_value_get_pointer(&val);
+
+ if (!service)
+ return FALSE;
+
+ menu = gtk_menu_new();
+
+ if (service->flags & XMPP_DISCO_ADD)
+ pidgin_new_item_from_stock(menu, _("Add to Buddy List"), GTK_STOCK_ADD,
+ G_CALLBACK(add_to_blist_cb), pdl->dialog,
+ 0, 0, NULL);
+
+ if (service->flags & XMPP_DISCO_REGISTER) {
+ GtkWidget *item = pidgin_new_item(menu, _("Register"));
+ g_signal_connect(G_OBJECT(item), "activate",
+ G_CALLBACK(register_button_cb), pdl->dialog);
+ }
+
+ gtk_widget_show_all(menu);
+ gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, event->button,
+ event->time);
+ return FALSE;
+}
+
+static void
+selection_changed_cb(GtkTreeSelection *selection, PidginDiscoList *pdl)
+{
+ GtkTreeIter iter;
+ GValue val;
+ PidginDiscoDialog *dialog = pdl->dialog;
+
+ if (gtk_tree_selection_get_selected(selection, NULL, &iter)) {
+ val.g_type = 0;
+ gtk_tree_model_get_value(GTK_TREE_MODEL(pdl->model), &iter, SERVICE_COLUMN, &val);
+ dialog->selected = g_value_get_pointer(&val);
+ if (!dialog->selected) {
+ gtk_widget_set_sensitive(dialog->add_button, FALSE);
+ gtk_widget_set_sensitive(dialog->register_button, FALSE);
+ return;
+ }
+
+ gtk_widget_set_sensitive(dialog->add_button, dialog->selected->flags & XMPP_DISCO_ADD);
+ gtk_widget_set_sensitive(dialog->register_button, dialog->selected->flags & XMPP_DISCO_REGISTER);
+ } else {
+ gtk_widget_set_sensitive(dialog->add_button, FALSE);
+ gtk_widget_set_sensitive(dialog->register_button, FALSE);
+ }
+}
+
+static void
+row_expanded_cb(GtkTreeView *tree, GtkTreeIter *arg1, GtkTreePath *rg2,
+ gpointer user_data)
+{
+ PidginDiscoList *pdl;
+ XmppDiscoService *service;
+ GValue val;
+
+ pdl = user_data;
+
+ val.g_type = 0;
+ gtk_tree_model_get_value(GTK_TREE_MODEL(pdl->model), arg1, SERVICE_COLUMN,
+ &val);
+ service = g_value_get_pointer(&val);
+ xmpp_disco_service_expand(service);
+}
+
+static void
+row_activated_cb(GtkTreeView *tree_view,
+ GtkTreePath *path,
+ GtkTreeViewColumn *column,
+ gpointer user_data)
+{
+ PidginDiscoList *pdl = user_data;
+ GtkTreeIter iter;
+ XmppDiscoService *service;
+ GValue val;
+
+ if (!gtk_tree_model_get_iter(GTK_TREE_MODEL(pdl->model), &iter, path))
+ return;
+
+ val.g_type = 0;
+ gtk_tree_model_get_value(GTK_TREE_MODEL(pdl->model), &iter, SERVICE_COLUMN,
+ &val);
+ service = g_value_get_pointer(&val);
+
+ if (service->flags & XMPP_DISCO_BROWSE)
+ if (gtk_tree_view_row_expanded(GTK_TREE_VIEW(pdl->tree), path))
+ gtk_tree_view_collapse_row(GTK_TREE_VIEW(pdl->tree), path);
+ else
+ gtk_tree_view_expand_row(GTK_TREE_VIEW(pdl->tree), path, FALSE);
+ else if (service->flags & XMPP_DISCO_REGISTER)
+ register_button_cb(NULL, pdl->dialog);
+ else if (service->flags & XMPP_DISCO_ADD)
+ add_to_blist_cb(NULL, pdl->dialog);
+}
+
+static void
+destroy_win_cb(GtkWidget *window, gpointer d)
+{
+ PidginDiscoDialog *dialog = d;
+ PidginDiscoList *list = dialog->discolist;
+
+ if (list) {
+ list->dialog = NULL;
+
+ if (list->in_progress)
+ list->in_progress = FALSE;
+
+ pidgin_disco_list_unref(list);
+ }
+
+ dialogs = g_list_remove(dialogs, d);
+ g_free(dialog);
+}
+
+static void stop_button_cb(GtkButton *button, PidginDiscoDialog *dialog)
+{
+ pidgin_disco_list_set_in_progress(dialog->discolist, FALSE);
+}
+
+static void close_button_cb(GtkButton *button, PidginDiscoDialog *dialog)
+{
+ GtkWidget *window = dialog->window;
+
+ gtk_widget_destroy(window);
+}
+
+static gboolean account_filter_func(PurpleAccount *account)
+{
+ return purple_strequal(purple_account_get_protocol_id(account), XMPP_PLUGIN_ID);
+}
+
+static gboolean
+disco_paint_tooltip(GtkWidget *tipwindow, gpointer data)
+{
+ PangoLayout *layout = g_object_get_data(G_OBJECT(tipwindow), "tooltip-plugin");
+ gtk_paint_layout(tipwindow->style, tipwindow->window, GTK_STATE_NORMAL, FALSE,
+ NULL, tipwindow, "tooltip",
+ 6, 6, layout);
+ return TRUE;
+}
+
+static gboolean
+disco_create_tooltip(GtkWidget *tipwindow, GtkTreePath *path,
+ gpointer data, int *w, int *h)
+{
+ PidginDiscoList *pdl = data;
+ GtkTreeIter iter;
+ PangoLayout *layout;
+ int width, height;
+ XmppDiscoService *service;
+ GValue val;
+ const char *type = NULL;
+ char *markup, *jid, *name, *desc = NULL;
+
+ if (!gtk_tree_model_get_iter(GTK_TREE_MODEL(pdl->model), &iter, path))
+ return FALSE;
+
+ val.g_type = 0;
+ gtk_tree_model_get_value(GTK_TREE_MODEL(pdl->model), &iter, SERVICE_COLUMN,
+ &val);
+ service = g_value_get_pointer(&val);
+
+ switch (service->type) {
+ case XMPP_DISCO_SERVICE_TYPE_UNSET:
+ type = _("Unknown");
+ break;
+
+ case XMPP_DISCO_SERVICE_TYPE_GATEWAY:
+ type = _("Gateway");
+ break;
+
+ case XMPP_DISCO_SERVICE_TYPE_DIRECTORY:
+ type = _("Directory");
+ break;
+
+ case XMPP_DISCO_SERVICE_TYPE_CHAT:
+ type = _("Chat");
+ break;
+
+ case XMPP_DISCO_SERVICE_TYPE_PUBSUB_COLLECTION:
+ type = _("PubSub Collection");
+ break;
+
+ case XMPP_DISCO_SERVICE_TYPE_PUBSUB_LEAF:
+ type = _("PubSub Leaf");
+ break;
+
+ case XMPP_DISCO_SERVICE_TYPE_OTHER:
+ type = _("Other");
+ break;
+ }
+
+ markup = g_strdup_printf("<span size='x-large' weight='bold'>%s</span>\n<b>%s:</b> %s%s%s",
+ name = g_markup_escape_text(service->name, -1),
+ type,
+ jid = g_markup_escape_text(service->jid, -1),
+ service->description ? _("\n<b>Description:</b> ") : "",
+ service->description ? desc = g_markup_escape_text(service->description, -1) : "");
+
+ layout = gtk_widget_create_pango_layout(tipwindow, NULL);
+ pango_layout_set_markup(layout, markup, -1);
+ pango_layout_set_wrap(layout, PANGO_WRAP_WORD);
+ pango_layout_set_width(layout, 500000);
+ pango_layout_get_size(layout, &width, &height);
+ g_object_set_data_full(G_OBJECT(tipwindow), "tooltip-plugin", layout, g_object_unref);
+
+ if (w)
+ *w = PANGO_PIXELS(width) + 12;
+ if (h)
+ *h = PANGO_PIXELS(height) + 12;
+
+ g_free(markup);
+ g_free(jid);
+ g_free(name);
+ g_free(desc);
+
+ return TRUE;
+}
+
+static void pidgin_disco_create_tree(PidginDiscoList *pdl)
+{
+ GtkCellRenderer *text_renderer, *pixbuf_renderer;
+ GtkTreeViewColumn *column;
+ GtkTreeSelection *selection;
+
+ pdl->model = gtk_tree_store_new(NUM_OF_COLUMNS,
+ GDK_TYPE_PIXBUF, /* PIXBUF_COLUMN */
+ G_TYPE_STRING, /* NAME_COLUMN */
+ G_TYPE_STRING, /* DESCRIPTION_COLUMN */
+ G_TYPE_POINTER /* SERVICE_COLUMN */
+ );
+
+ pdl->tree = gtk_tree_view_new_with_model(GTK_TREE_MODEL(pdl->model));
+ gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(pdl->tree), TRUE);
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(pdl->tree));
+ g_signal_connect(G_OBJECT(selection), "changed",
+ G_CALLBACK(selection_changed_cb), pdl);
+
+ g_object_unref(pdl->model);
+
+ gtk_container_add(GTK_CONTAINER(pdl->dialog->sw), pdl->tree);
+ gtk_widget_show(pdl->tree);
+
+ text_renderer = gtk_cell_renderer_text_new();
+ pixbuf_renderer = gtk_cell_renderer_pixbuf_new();
+
+ column = gtk_tree_view_column_new();
+ gtk_tree_view_column_set_title(column, _("Name"));
+
+ gtk_tree_view_column_pack_start(column, pixbuf_renderer, FALSE);
+ gtk_tree_view_column_set_attributes(column, pixbuf_renderer,
+ "pixbuf", PIXBUF_COLUMN, NULL);
+
+ gtk_tree_view_column_pack_start(column, text_renderer, TRUE);
+ gtk_tree_view_column_set_attributes(column, text_renderer,
+ "text", NAME_COLUMN, NULL);
+
+ gtk_tree_view_column_set_sizing(GTK_TREE_VIEW_COLUMN(column),
+ GTK_TREE_VIEW_COLUMN_GROW_ONLY);
+ gtk_tree_view_column_set_resizable(GTK_TREE_VIEW_COLUMN(column), TRUE);
+ gtk_tree_view_column_set_sort_column_id(GTK_TREE_VIEW_COLUMN(column), NAME_COLUMN);
+ gtk_tree_view_column_set_reorderable(GTK_TREE_VIEW_COLUMN(column), TRUE);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(pdl->tree), column);
+
+ column = gtk_tree_view_column_new_with_attributes(_("Description"), text_renderer,
+ "text", DESCRIPTION_COLUMN, NULL);
+ gtk_tree_view_column_set_sizing(GTK_TREE_VIEW_COLUMN(column),
+ GTK_TREE_VIEW_COLUMN_GROW_ONLY);
+ gtk_tree_view_column_set_resizable(GTK_TREE_VIEW_COLUMN(column), TRUE);
+ gtk_tree_view_column_set_sort_column_id(GTK_TREE_VIEW_COLUMN(column), DESCRIPTION_COLUMN);
+ gtk_tree_view_column_set_reorderable(GTK_TREE_VIEW_COLUMN(column), TRUE);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(pdl->tree), column);
+
+ g_signal_connect(G_OBJECT(pdl->tree), "button-press-event", G_CALLBACK(service_click_cb), pdl);
+ g_signal_connect(G_OBJECT(pdl->tree), "row-expanded", G_CALLBACK(row_expanded_cb), pdl);
+ g_signal_connect(G_OBJECT(pdl->tree), "row-activated", G_CALLBACK(row_activated_cb), pdl);
+
+ pidgin_tooltip_setup_for_treeview(pdl->tree, pdl,
+ disco_create_tooltip,
+ disco_paint_tooltip);
+}
+
+void pidgin_disco_signed_off_cb(PurpleConnection *pc)
+{
+ GList *node;
+
+ for (node = dialogs; node; node = node->next) {
+ PidginDiscoDialog *dialog = node->data;
+ PidginDiscoList *list = dialog->discolist;
+
+ if (list && list->pc == pc) {
+ if (list->in_progress)
+ pidgin_disco_list_set_in_progress(list, FALSE);
+
+ if (list->tree) {
+ gtk_widget_destroy(list->tree);
+ list->tree = NULL;
+ }
+
+ pidgin_disco_list_unref(list);
+ dialog->discolist = NULL;
+
+ gtk_widget_set_sensitive(dialog->browse_button,
+ pidgin_account_option_menu_get_selected(dialog->account_widget) != NULL);
+
+ gtk_widget_set_sensitive(dialog->register_button, FALSE);
+ gtk_widget_set_sensitive(dialog->add_button, FALSE);
+ }
+ }
+}
+
+void pidgin_disco_dialogs_destroy_all(void)
+{
+ while (dialogs) {
+ PidginDiscoDialog *dialog = dialogs->data;
+
+ gtk_widget_destroy(dialog->window);
+ /* destroy_win_cb removes the dialog from the list */
+ }
+}
+
+PidginDiscoDialog *pidgin_disco_dialog_new(void)
+{
+ PidginDiscoDialog *dialog;
+ GtkWidget *window, *vbox, *vbox2, *bbox;
+
+ dialog = g_new0(PidginDiscoDialog, 1);
+ dialogs = g_list_prepend(dialogs, dialog);
+
+ /* Create the window. */
+ dialog->window = window = pidgin_create_dialog(_("Service Discovery"), PIDGIN_HIG_BORDER, "service discovery", TRUE);
+
+ g_signal_connect(G_OBJECT(window), "destroy",
+ G_CALLBACK(destroy_win_cb), dialog);
+
+ /* Create the parent vbox for everything. */
+ vbox = pidgin_dialog_get_vbox_with_properties(GTK_DIALOG(window), FALSE, PIDGIN_HIG_BORDER);
+
+ vbox2 = gtk_vbox_new(FALSE, PIDGIN_HIG_BORDER);
+ gtk_container_add(GTK_CONTAINER(vbox), vbox2);
+ gtk_widget_show(vbox2);
+
+ /* accounts dropdown list */
+ dialog->account_widget = pidgin_account_option_menu_new(NULL, FALSE,
+ G_CALLBACK(dialog_select_account_cb), account_filter_func, dialog);
+ dialog->account = pidgin_account_option_menu_get_selected(dialog->account_widget);
+ pidgin_add_widget_to_vbox(GTK_BOX(vbox2), _("_Account:"), NULL, dialog->account_widget, TRUE, NULL);
+
+ /* scrolled window */
+ dialog->sw = gtk_scrolled_window_new(NULL, NULL);
+ gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(dialog->sw),
+ GTK_SHADOW_IN);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(dialog->sw),
+ GTK_POLICY_AUTOMATIC,
+ GTK_POLICY_AUTOMATIC);
+ gtk_box_pack_start(GTK_BOX(vbox2), dialog->sw, TRUE, TRUE, 0);
+ gtk_widget_set_size_request(dialog->sw, -1, 250);
+ gtk_widget_show(dialog->sw);
+
+ /* progress bar */
+ dialog->progress = gtk_progress_bar_new();
+ gtk_progress_bar_set_pulse_step(GTK_PROGRESS_BAR(dialog->progress), 0.1);
+ gtk_box_pack_start(GTK_BOX(vbox2), dialog->progress, FALSE, FALSE, 0);
+ gtk_widget_show(dialog->progress);
+
+ /* button box */
+ bbox = pidgin_dialog_get_action_area(GTK_DIALOG(window));
+ gtk_box_set_spacing(GTK_BOX(bbox), PIDGIN_HIG_BOX_SPACE);
+ gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END);
+
+ /* stop button */
+ dialog->stop_button =
+ pidgin_dialog_add_button(GTK_DIALOG(window), GTK_STOCK_STOP,
+ G_CALLBACK(stop_button_cb), dialog);
+ gtk_widget_set_sensitive(dialog->stop_button, FALSE);
+
+ /* browse button */
+ dialog->browse_button =
+ pidgin_pixbuf_button_from_stock(_("_Browse"), GTK_STOCK_REFRESH,
+ PIDGIN_BUTTON_HORIZONTAL);
+ gtk_box_pack_start(GTK_BOX(bbox), dialog->browse_button, FALSE, FALSE, 0);
+ g_signal_connect(G_OBJECT(dialog->browse_button), "clicked",
+ G_CALLBACK(browse_button_cb), dialog);
+ gtk_widget_set_sensitive(dialog->browse_button, dialog->account != NULL);
+ gtk_widget_show(dialog->browse_button);
+
+ /* register button */
+ dialog->register_button =
+ pidgin_dialog_add_button(GTK_DIALOG(dialog->window), _("Register"),
+ G_CALLBACK(register_button_cb), dialog);
+ gtk_widget_set_sensitive(dialog->register_button, FALSE);
+
+ /* add button */
+ dialog->add_button =
+ pidgin_pixbuf_button_from_stock(_("_Add"), GTK_STOCK_ADD,
+ PIDGIN_BUTTON_HORIZONTAL);
+ gtk_box_pack_start(GTK_BOX(bbox), dialog->add_button, FALSE, FALSE, 0);
+ g_signal_connect(G_OBJECT(dialog->add_button), "clicked",
+ G_CALLBACK(add_to_blist_cb), dialog);
+ gtk_widget_set_sensitive(dialog->add_button, FALSE);
+ gtk_widget_show(dialog->add_button);
+
+ /* close button */
+ dialog->close_button =
+ pidgin_dialog_add_button(GTK_DIALOG(window), GTK_STOCK_CLOSE,
+ G_CALLBACK(close_button_cb), dialog);
+
+ /* show the dialog window and return the dialog */
+ gtk_widget_show(dialog->window);
+
+ return dialog;
+}
+
+void pidgin_disco_add_service(PidginDiscoList *pdl, XmppDiscoService *service, XmppDiscoService *parent)
+{
+ PidginDiscoDialog *dialog;
+ GtkTreeIter iter, parent_iter, child;
+ char *filename = NULL;
+ GdkPixbuf *pixbuf = NULL;
+ gboolean append = TRUE;
+
+ dialog = pdl->dialog;
+ g_return_if_fail(dialog != NULL);
+
+ if (service != NULL)
+ purple_debug_info("xmppdisco", "Adding service \"%s\"\n", service->name);
+ else
+ purple_debug_info("xmppdisco", "Service \"%s\" has no childrens\n", parent->name);
+
+ gtk_progress_bar_pulse(GTK_PROGRESS_BAR(dialog->progress));
+
+ if (parent) {
+ GtkTreeRowReference *rr;
+ GtkTreePath *path;
+
+ rr = g_hash_table_lookup(pdl->services, parent);
+ path = gtk_tree_row_reference_get_path(rr);
+ if (path) {
+ gtk_tree_model_get_iter(GTK_TREE_MODEL(pdl->model), &parent_iter, path);
+ gtk_tree_path_free(path);
+
+ if (gtk_tree_model_iter_children(GTK_TREE_MODEL(pdl->model), &child,
+ &parent_iter)) {
+ PidginDiscoList *tmp;
+ gtk_tree_model_get(GTK_TREE_MODEL(pdl->model), &child,
+ SERVICE_COLUMN, &tmp, -1);
+ if (!tmp)
+ append = FALSE;
+ }
+ }
+ }
+
+ if (service == NULL) {
+ if (parent != NULL && !append)
+ gtk_tree_store_remove(pdl->model, &child);
+ return;
+ }
+
+ if (append)
+ gtk_tree_store_append(pdl->model, &iter, (parent ? &parent_iter : NULL));
+ else
+ iter = child;
+
+ if (service->flags & XMPP_DISCO_BROWSE) {
+ GtkTreeRowReference *rr;
+ GtkTreePath *path;
+
+ gtk_tree_store_append(pdl->model, &child, &iter);
+
+ path = gtk_tree_model_get_path(GTK_TREE_MODEL(pdl->model), &iter);
+ rr = gtk_tree_row_reference_new(GTK_TREE_MODEL(pdl->model), path);
+ g_hash_table_insert(pdl->services, service, rr);
+ gtk_tree_path_free(path);
+ }
+
+ if (service->type == XMPP_DISCO_SERVICE_TYPE_GATEWAY && service->gateway_type) {
+ char *tmp = g_strconcat(service->gateway_type, ".png", NULL);
+ filename = g_build_filename(DATADIR, "pixmaps", "pidgin", "protocols", "16", tmp, NULL);
+ g_free(tmp);
+#if 0
+ } else if (service->type == XMPP_DISCO_SERVICE_TYPE_USER) {
+ filename = g_build_filename(DATADIR, "pixmaps", "pidgin", "status", "16", "person.png", NULL);
+#endif
+ } else if (service->type == XMPP_DISCO_SERVICE_TYPE_CHAT)
+ filename = g_build_filename(DATADIR, "pixmaps", "pidgin", "status", "16", "chat.png", NULL);
+
+ if (filename) {
+ pixbuf = gdk_pixbuf_new_from_file(filename, NULL);
+ g_free(filename);
+ }
+
+ gtk_tree_store_set(pdl->model, &iter,
+ PIXBUF_COLUMN, pixbuf,
+ NAME_COLUMN, service->name,
+ DESCRIPTION_COLUMN, service->description,
+ SERVICE_COLUMN, service,
+ -1);
+
+ if (pixbuf)
+ g_object_unref(pixbuf);
+}
+
diff --git a/pidgin/plugins/disco/gtkdisco.h b/pidgin/plugins/disco/gtkdisco.h
new file mode 100644
index 0000000000..8f2fa5b20b
--- /dev/null
+++ b/pidgin/plugins/disco/gtkdisco.h
@@ -0,0 +1,80 @@
+/* pidgin
+ *
+ * Pidgin is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#ifndef PIDGIN_XMPP_DISCO_UI_H
+#define PIDGIN_XMPP_DISCO_UI_H
+
+typedef struct _PidginDiscoDialog PidginDiscoDialog;
+typedef struct _PidginDiscoList PidginDiscoList;
+
+#include "xmppdisco.h"
+
+struct _PidginDiscoDialog {
+ GtkWidget *window;
+ GtkWidget *account_widget;
+
+ GtkWidget *sw;
+ GtkWidget *progress;
+
+ GtkWidget *stop_button;
+ GtkWidget *browse_button;
+ GtkWidget *register_button;
+ GtkWidget *add_button;
+ GtkWidget *close_button;
+ XmppDiscoService *selected;
+
+ PurpleAccount *account;
+ PidginDiscoList *discolist;
+};
+
+struct _PidginDiscoList {
+ PurpleConnection *pc;
+ gboolean in_progress;
+ const gchar *server;
+
+ gint ref;
+ guint fetch_count;
+
+ PidginDiscoDialog *dialog;
+ GtkTreeStore *model;
+ GtkWidget *tree;
+ GHashTable *services;
+};
+
+/**
+ * Shows a new service discovery dialog.
+ */
+PidginDiscoDialog *pidgin_disco_dialog_new(void);
+
+/**
+ * Destroy all the open dialogs (called when unloading the plugin).
+ */
+void pidgin_disco_dialogs_destroy_all(void);
+void pidgin_disco_signed_off_cb(PurpleConnection *pc);
+
+void pidgin_disco_add_service(PidginDiscoList *list, XmppDiscoService *service,
+ XmppDiscoService *parent);
+
+PidginDiscoList *pidgin_disco_list_ref(PidginDiscoList *list);
+void pidgin_disco_list_unref(PidginDiscoList *list);
+
+void pidgin_disco_list_set_in_progress(PidginDiscoList *list, gboolean in_progress);
+#endif /* PIDGIN_XMPP_DISCO_UI_H */
diff --git a/pidgin/plugins/disco/xmppdisco.c b/pidgin/plugins/disco/xmppdisco.c
new file mode 100644
index 0000000000..ed6d95f34d
--- /dev/null
+++ b/pidgin/plugins/disco/xmppdisco.c
@@ -0,0 +1,680 @@
+/*
+ * Purple - XMPP Service Disco Browser
+ *
+ * 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
+ *
+ */
+
+/* TODO list (a little bit of a brain dump):
+ * Support more actions than "register" and "add" based on context.
+ - Subscribe to pubsub nodes (just...because?)
+ - Execute ad-hoc commands
+ - Change 'Register' to 'Unregister' if we're registered?
+ - Administer MUCs
+ * Enumerate pubsub node contents.
+ - PEP too? (useful development tool at times)
+ * See if we can better handle the ad-hoc commands that ejabberd returns
+ when disco'ing a server as an administrator:
+from disco#items:
+ <item jid='darkrain42.org' node='announce' name='Announcements'/>
+disco#info:
+ <iq from='darkrain42.org' type='result'>
+ <query xmlns='http://jabber.org/protocol/disco#info' node='announce'/>
+ </iq>
+ * For services that are a JID w/o a node, handle fetching ad-hoc commands?
+*/
+
+#include "internal.h"
+#include "pidgin.h"
+
+#include "debug.h"
+#include "signals.h"
+#include "version.h"
+
+#include "gtkconv.h"
+#include "gtkimhtml.h"
+#include "gtkplugin.h"
+
+#include "xmppdisco.h"
+#include "gtkdisco.h"
+
+/* Variables */
+PurplePlugin *my_plugin = NULL;
+static GHashTable *iq_callbacks = NULL;
+static gboolean iq_listening = FALSE;
+
+typedef void (*XmppIqCallback)(PurpleConnection *pc, const char *type,
+ const char *id, const char *from, xmlnode *iq,
+ gpointer data);
+
+struct xmpp_iq_cb_data
+{
+ gpointer context;
+ PurpleConnection *pc;
+ XmppIqCallback cb;
+};
+
+struct item_data {
+ PidginDiscoList *list;
+ XmppDiscoService *parent;
+ char *name;
+ char *node; /* disco#info replies don't always include the node */
+};
+
+static char*
+generate_next_id()
+{
+ static guint32 index = 0;
+
+ if (index == 0) {
+ do {
+ index = g_random_int();
+ } while (index == 0);
+ }
+
+ return g_strdup_printf("purpledisco%x", index++);
+}
+
+static gboolean
+remove_iq_callbacks_by_pc(gpointer key, gpointer value, gpointer user_data)
+{
+ struct xmpp_iq_cb_data *cb_data = value;
+
+ if (cb_data && cb_data->pc == user_data) {
+ /*
+ * This is a hack. All the IQ callback datas in this code are
+ * the same structure so that we can free them here. Ideally they'd
+ * be objects and this would be polymorphic. That's overkill, here.
+ */
+ struct item_data *item_data = cb_data->context;
+
+ if (item_data) {
+ pidgin_disco_list_unref(item_data->list);
+ g_free(item_data->name);
+ g_free(item_data->node);
+ g_free(item_data);
+ }
+
+ return TRUE;
+ } else
+ return FALSE;
+}
+
+static gboolean
+xmpp_iq_received(PurpleConnection *pc, const char *type, const char *id,
+ const char *from, xmlnode *iq)
+{
+ struct xmpp_iq_cb_data *cb_data;
+
+ cb_data = g_hash_table_lookup(iq_callbacks, id);
+ if (!cb_data)
+ return FALSE;
+
+ cb_data->cb(cb_data->pc, type, id, from, iq, cb_data->context);
+
+ g_hash_table_remove(iq_callbacks, id);
+ if (g_hash_table_size(iq_callbacks) == 0) {
+ PurplePlugin *prpl = purple_connection_get_prpl(pc);
+ iq_listening = FALSE;
+ purple_signal_disconnect(prpl, "jabber-receiving-iq", my_plugin,
+ PURPLE_CALLBACK(xmpp_iq_received));
+ }
+
+ /* Om nom nom nom */
+ return TRUE;
+}
+
+static void
+xmpp_iq_register_callback(PurpleConnection *pc, gchar *id, gpointer data,
+ XmppIqCallback cb)
+{
+ struct xmpp_iq_cb_data *cbdata = g_new0(struct xmpp_iq_cb_data, 1);
+
+ cbdata->context = data;
+ cbdata->cb = cb;
+ cbdata->pc = pc;
+
+ g_hash_table_insert(iq_callbacks, id, cbdata);
+
+ if (!iq_listening) {
+ PurplePlugin *prpl = purple_plugins_find_with_id(XMPP_PLUGIN_ID);
+ iq_listening = TRUE;
+ purple_signal_connect(prpl, "jabber-receiving-iq", my_plugin,
+ PURPLE_CALLBACK(xmpp_iq_received), NULL);
+ }
+}
+
+static void
+xmpp_disco_info_do(PurpleConnection *pc, gpointer cbdata, const char *jid,
+ const char *node, XmppIqCallback cb)
+{
+ xmlnode *iq, *query;
+ char *id = generate_next_id();
+
+ iq = xmlnode_new("iq");
+ xmlnode_set_attrib(iq, "type", "get");
+ xmlnode_set_attrib(iq, "to", jid);
+ xmlnode_set_attrib(iq, "id", id);
+
+ query = xmlnode_new_child(iq, "query");
+ xmlnode_set_namespace(query, NS_DISCO_INFO);
+ if (node)
+ xmlnode_set_attrib(query, "node", node);
+
+ /* Steals id */
+ xmpp_iq_register_callback(pc, id, cbdata, cb);
+
+ purple_signal_emit(purple_connection_get_prpl(pc), "jabber-sending-xmlnode",
+ pc, &iq);
+ if (iq != NULL)
+ xmlnode_free(iq);
+}
+
+static void
+xmpp_disco_items_do(PurpleConnection *pc, gpointer cbdata, const char *jid,
+ const char *node, XmppIqCallback cb)
+{
+ xmlnode *iq, *query;
+ char *id = generate_next_id();
+
+ iq = xmlnode_new("iq");
+ xmlnode_set_attrib(iq, "type", "get");
+ xmlnode_set_attrib(iq, "to", jid);
+ xmlnode_set_attrib(iq, "id", id);
+
+ query = xmlnode_new_child(iq, "query");
+ xmlnode_set_namespace(query, NS_DISCO_ITEMS);
+ if (node)
+ xmlnode_set_attrib(query, "node", node);
+
+ /* Steals id */
+ xmpp_iq_register_callback(pc, id, cbdata, cb);
+
+ purple_signal_emit(purple_connection_get_prpl(pc), "jabber-sending-xmlnode",
+ pc, &iq);
+ if (iq != NULL)
+ xmlnode_free(iq);
+}
+
+static XmppDiscoServiceType
+disco_service_type_from_identity(xmlnode *identity)
+{
+ const char *category, *type;
+
+ if (!identity)
+ return XMPP_DISCO_SERVICE_TYPE_OTHER;
+
+ category = xmlnode_get_attrib(identity, "category");
+ type = xmlnode_get_attrib(identity, "type");
+
+ if (!category)
+ return XMPP_DISCO_SERVICE_TYPE_OTHER;
+
+ if (g_str_equal(category, "conference"))
+ return XMPP_DISCO_SERVICE_TYPE_CHAT;
+ else if (g_str_equal(category, "directory"))
+ return XMPP_DISCO_SERVICE_TYPE_DIRECTORY;
+ else if (g_str_equal(category, "gateway"))
+ return XMPP_DISCO_SERVICE_TYPE_GATEWAY;
+ else if (g_str_equal(category, "pubsub")) {
+ if (!type || g_str_equal(type, "collection"))
+ return XMPP_DISCO_SERVICE_TYPE_PUBSUB_COLLECTION;
+ else if (g_str_equal(type, "leaf"))
+ return XMPP_DISCO_SERVICE_TYPE_PUBSUB_LEAF;
+ else if (g_str_equal(type, "service"))
+ return XMPP_DISCO_SERVICE_TYPE_OTHER;
+ else {
+ purple_debug_warning("xmppdisco", "Unknown pubsub type '%s'\n", type);
+ return XMPP_DISCO_SERVICE_TYPE_OTHER;
+ }
+ }
+
+ return XMPP_DISCO_SERVICE_TYPE_OTHER;
+}
+
+static const struct {
+ const char *from;
+ const char *to;
+} disco_type_mappings[] = {
+ { "gadu-gadu", "gadu-gadu" }, /* the prpl is prpl-gg, but list_icon returns "gadu-gadu" */
+ { "sametime", "meanwhile" },
+ { "myspaceim", "myspace" },
+ { "xmpp", "jabber" }, /* prpl-jabber (mentioned in case the prpl is renamed so this line will match) */
+ { NULL, NULL }
+};
+
+static const gchar *
+disco_type_from_string(const gchar *str)
+{
+ int i = 0;
+
+ g_return_val_if_fail(str != NULL, "");
+
+ for ( ; disco_type_mappings[i].from; ++i) {
+ if (!strcasecmp(str, disco_type_mappings[i].from))
+ return disco_type_mappings[i].to;
+ }
+
+ /* fallback to the string itself */
+ return str;
+}
+
+static void
+got_info_cb(PurpleConnection *pc, const char *type, const char *id,
+ const char *from, xmlnode *iq, gpointer data)
+{
+ struct item_data *item_data = data;
+ PidginDiscoList *list = item_data->list;
+ xmlnode *query;
+
+ --list->fetch_count;
+
+ if (!list->in_progress)
+ goto out;
+
+ if (g_str_equal(type, "result") &&
+ (query = xmlnode_get_child(iq, "query"))) {
+ xmlnode *identity = xmlnode_get_child(query, "identity");
+ XmppDiscoService *service;
+ xmlnode *feature;
+
+ service = g_new0(XmppDiscoService, 1);
+ service->list = item_data->list;
+ purple_debug_info("xmppdisco", "parent for %s is %p\n", from, item_data->parent);
+ service->parent = item_data->parent;
+ service->flags = 0;
+ service->type = disco_service_type_from_identity(identity);
+
+ if (item_data->node) {
+ if (item_data->name) {
+ service->name = item_data->name;
+ item_data->name = NULL;
+ } else
+ service->name = g_strdup(item_data->node);
+
+ service->node = item_data->node;
+ item_data->node = NULL;
+
+ if (service->type == XMPP_DISCO_SERVICE_TYPE_PUBSUB_COLLECTION)
+ service->flags |= XMPP_DISCO_BROWSE;
+ } else
+ service->name = g_strdup(from);
+
+ if (!service->node)
+ /* Only support adding JIDs, not JID+node combos */
+ service->flags |= XMPP_DISCO_ADD;
+
+ if (item_data->name) {
+ service->description = item_data->name;
+ item_data->name = NULL;
+ } else if (identity)
+ service->description = g_strdup(xmlnode_get_attrib(identity, "name"));
+
+ /* TODO: Overlap with service->name a bit */
+ service->jid = g_strdup(from);
+
+ for (feature = xmlnode_get_child(query, "feature"); feature;
+ feature = xmlnode_get_next_twin(feature)) {
+ const char *var;
+ if (!(var = xmlnode_get_attrib(feature, "var")))
+ continue;
+
+ if (g_str_equal(var, NS_REGISTER))
+ service->flags |= XMPP_DISCO_REGISTER;
+ else if (g_str_equal(var, NS_DISCO_ITEMS))
+ service->flags |= XMPP_DISCO_BROWSE;
+ else if (g_str_equal(var, NS_MUC)) {
+ service->flags |= XMPP_DISCO_BROWSE;
+ service->type = XMPP_DISCO_SERVICE_TYPE_CHAT;
+ }
+ }
+
+ if (service->type == XMPP_DISCO_SERVICE_TYPE_GATEWAY)
+ service->gateway_type = g_strdup(disco_type_from_string(
+ xmlnode_get_attrib(identity, "type")));
+
+ pidgin_disco_add_service(list, service, service->parent);
+ }
+
+out:
+ if (list->fetch_count == 0)
+ pidgin_disco_list_set_in_progress(list, FALSE);
+
+ g_free(item_data->name);
+ g_free(item_data->node);
+ g_free(item_data);
+ pidgin_disco_list_unref(list);
+}
+
+static void
+got_items_cb(PurpleConnection *pc, const char *type, const char *id,
+ const char *from, xmlnode *iq, gpointer data)
+{
+ struct item_data *item_data = data;
+ PidginDiscoList *list = item_data->list;
+ xmlnode *query;
+ gboolean has_items = FALSE;
+
+ --list->fetch_count;
+
+ if (!list->in_progress)
+ goto out;
+
+ if (g_str_equal(type, "result") &&
+ (query = xmlnode_get_child(iq, "query"))) {
+ xmlnode *item;
+
+ for (item = xmlnode_get_child(query, "item"); item;
+ item = xmlnode_get_next_twin(item)) {
+ const char *jid = xmlnode_get_attrib(item, "jid");
+ const char *name = xmlnode_get_attrib(item, "name");
+ const char *node = xmlnode_get_attrib(item, "node");
+
+ has_items = TRUE;
+
+ if (item_data->parent->type == XMPP_DISCO_SERVICE_TYPE_CHAT) {
+ /* This is a hacky first-order approximation. Any MUC
+ * component that has a >1 level hierarchy (a Yahoo MUC
+ * transport component probably does) will violate this.
+ *
+ * On the other hand, this is better than querying all the
+ * chats at conference.jabber.org to enumerate them.
+ */
+ XmppDiscoService *service = g_new0(XmppDiscoService, 1);
+ service->list = item_data->list;
+ service->parent = item_data->parent;
+ service->flags = XMPP_DISCO_ADD;
+ service->type = XMPP_DISCO_SERVICE_TYPE_CHAT;
+
+ service->name = g_strdup(name);
+ service->jid = g_strdup(jid);
+ service->node = g_strdup(node);
+ pidgin_disco_add_service(list, service, item_data->parent);
+ } else {
+ struct item_data *item_data2 = g_new0(struct item_data, 1);
+
+ item_data2->list = item_data->list;
+ item_data2->parent = item_data->parent;
+ item_data2->name = g_strdup(name);
+ item_data2->node = g_strdup(node);
+
+ ++list->fetch_count;
+ pidgin_disco_list_ref(list);
+ xmpp_disco_info_do(pc, item_data2, jid, node, got_info_cb);
+ }
+ }
+ }
+
+ if (!has_items)
+ pidgin_disco_add_service(list, NULL, item_data->parent);
+
+out:
+ if (list->fetch_count == 0)
+ pidgin_disco_list_set_in_progress(list, FALSE);
+
+ g_free(item_data);
+ pidgin_disco_list_unref(list);
+}
+
+static void
+server_items_cb(PurpleConnection *pc, const char *type, const char *id,
+ const char *from, xmlnode *iq, gpointer data)
+{
+ struct item_data *cb_data = data;
+ PidginDiscoList *list = cb_data->list;
+ xmlnode *query;
+
+ g_free(cb_data);
+ --list->fetch_count;
+
+ if (g_str_equal(type, "result") &&
+ (query = xmlnode_get_child(iq, "query"))) {
+ xmlnode *item;
+
+ for (item = xmlnode_get_child(query, "item"); item;
+ item = xmlnode_get_next_twin(item)) {
+ const char *jid = xmlnode_get_attrib(item, "jid");
+ const char *name = xmlnode_get_attrib(item, "name");
+ const char *node = xmlnode_get_attrib(item, "node");
+ struct item_data *item_data;
+
+ if (!jid)
+ continue;
+
+ item_data = g_new0(struct item_data, 1);
+ item_data->list = list;
+ item_data->name = g_strdup(name);
+ item_data->node = g_strdup(node);
+
+ ++list->fetch_count;
+ pidgin_disco_list_ref(list);
+ xmpp_disco_info_do(pc, item_data, jid, node, got_info_cb);
+ }
+ }
+
+ if (list->fetch_count == 0)
+ pidgin_disco_list_set_in_progress(list, FALSE);
+
+ pidgin_disco_list_unref(list);
+}
+
+static void
+server_info_cb(PurpleConnection *pc, const char *type, const char *id,
+ const char *from, xmlnode *iq, gpointer data)
+{
+ struct item_data *cb_data = data;
+ PidginDiscoList *list = cb_data->list;
+ xmlnode *query;
+ xmlnode *error;
+ gboolean items = FALSE;
+
+ --list->fetch_count;
+
+ if (g_str_equal(type, "result") &&
+ (query = xmlnode_get_child(iq, "query"))) {
+ xmlnode *feature;
+
+ for (feature = xmlnode_get_child(query, "feature"); feature;
+ feature = xmlnode_get_next_twin(feature)) {
+ const char *var = xmlnode_get_attrib(feature, "var");
+ if (purple_strequal(var, NS_DISCO_ITEMS)) {
+ items = TRUE;
+ break;
+ }
+ }
+
+ if (items) {
+ xmpp_disco_items_do(pc, cb_data, from, NULL /* node */, server_items_cb);
+ ++list->fetch_count;
+ pidgin_disco_list_ref(list);
+ }
+ }
+ else {
+ error = xmlnode_get_child(iq, "error");
+ if (xmlnode_get_child(error, "remote-server-not-found")
+ || xmlnode_get_child(error, "jid-malformed")) {
+ purple_notify_error(my_plugin, _("Error"),
+ _("Server does not exist"),
+ NULL);
+ }
+ else {
+ purple_notify_error(my_plugin, _("Error"),
+ _("Server does not support service discovery"),
+ NULL);
+ }
+ pidgin_disco_list_set_in_progress(list, FALSE);
+ g_free(cb_data);
+ }
+
+ pidgin_disco_list_unref(list);
+}
+
+void xmpp_disco_start(PidginDiscoList *list)
+{
+ struct item_data *cb_data;
+
+ g_return_if_fail(list != NULL);
+
+ ++list->fetch_count;
+ pidgin_disco_list_ref(list);
+
+ cb_data = g_new0(struct item_data, 1);
+ cb_data->list = list;
+
+ xmpp_disco_info_do(list->pc, cb_data, list->server, NULL, server_info_cb);
+}
+
+void xmpp_disco_service_expand(XmppDiscoService *service)
+{
+ struct item_data *item_data;
+
+ g_return_if_fail(service != NULL);
+
+ if (service->expanded)
+ return;
+
+ item_data = g_new0(struct item_data, 1);
+ item_data->list = service->list;
+ item_data->parent = service;
+
+ ++service->list->fetch_count;
+ pidgin_disco_list_ref(service->list);
+
+ pidgin_disco_list_set_in_progress(service->list, TRUE);
+
+ xmpp_disco_items_do(service->list->pc, item_data, service->jid, service->node,
+ got_items_cb);
+ service->expanded = TRUE;
+}
+
+void xmpp_disco_service_register(XmppDiscoService *service)
+{
+ xmlnode *iq, *query;
+ char *id = generate_next_id();
+
+ iq = xmlnode_new("iq");
+ xmlnode_set_attrib(iq, "type", "get");
+ xmlnode_set_attrib(iq, "to", service->jid);
+ xmlnode_set_attrib(iq, "id", id);
+
+ query = xmlnode_new_child(iq, "query");
+ xmlnode_set_namespace(query, NS_REGISTER);
+
+ purple_signal_emit(purple_connection_get_prpl(service->list->pc),
+ "jabber-sending-xmlnode", service->list->pc, &iq);
+ if (iq != NULL)
+ xmlnode_free(iq);
+ g_free(id);
+}
+
+static void
+create_dialog(PurplePluginAction *action)
+{
+ pidgin_disco_dialog_new();
+}
+
+static GList *
+actions(PurplePlugin *plugin, gpointer context)
+{
+ GList *l = NULL;
+ PurplePluginAction *action = NULL;
+
+ action = purple_plugin_action_new(_("XMPP Service Discovery"),
+ create_dialog);
+ l = g_list_prepend(l, action);
+
+ return l;
+}
+
+static void
+signed_off_cb(PurpleConnection *pc, gpointer unused)
+{
+ /* Deal with any dialogs */
+ pidgin_disco_signed_off_cb(pc);
+
+ /* Remove all the IQ callbacks for this connection */
+ g_hash_table_foreach_remove(iq_callbacks, remove_iq_callbacks_by_pc, pc);
+}
+
+static gboolean
+plugin_load(PurplePlugin *plugin)
+{
+ PurplePlugin *xmpp_prpl;
+
+ my_plugin = plugin;
+
+ xmpp_prpl = purple_plugins_find_with_id(XMPP_PLUGIN_ID);
+ if (NULL == xmpp_prpl)
+ return FALSE;
+
+ purple_signal_connect(purple_connections_get_handle(), "signing-off",
+ plugin, PURPLE_CALLBACK(signed_off_cb), NULL);
+
+ iq_callbacks = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
+
+ return TRUE;
+}
+
+static gboolean
+plugin_unload(PurplePlugin *plugin)
+{
+ g_hash_table_destroy(iq_callbacks);
+ iq_callbacks = NULL;
+
+ purple_signals_disconnect_by_handle(plugin);
+ pidgin_disco_dialogs_destroy_all();
+
+ return TRUE;
+}
+
+static PurplePluginInfo info =
+{
+ PURPLE_PLUGIN_MAGIC,
+ PURPLE_MAJOR_VERSION,
+ PURPLE_MINOR_VERSION,
+ PURPLE_PLUGIN_STANDARD,
+ PIDGIN_PLUGIN_TYPE,
+ 0,
+ NULL,
+ PURPLE_PRIORITY_DEFAULT,
+ "gtk-xmppdisco",
+ N_("XMPP Service Discovery"),
+ DISPLAY_VERSION,
+ N_("Allows browsing and registering services."),
+ N_("This plugin is useful for registering with legacy transports or other "
+ "XMPP services."),
+ "Paul Aurich <paul@darkrain42.org>",
+ PURPLE_WEBSITE,
+ plugin_load,
+ plugin_unload,
+ NULL, /**< destroy */
+ NULL, /**< ui_info */
+ NULL, /**< extra_info */
+ NULL, /**< prefs_info */
+ actions,
+
+ /* padding */
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static void
+init_plugin(PurplePlugin *plugin)
+{
+}
+
+PURPLE_INIT_PLUGIN(xmppdisco, init_plugin, info)
diff --git a/pidgin/plugins/disco/xmppdisco.h b/pidgin/plugins/disco/xmppdisco.h
new file mode 100644
index 0000000000..51b546f3fe
--- /dev/null
+++ b/pidgin/plugins/disco/xmppdisco.h
@@ -0,0 +1,107 @@
+/* pidgin
+ *
+ * Pidgin is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#ifndef PIDGIN_XMPP_DISCO_H
+#define PIDGIN_XMPP_DISCO_H
+
+typedef struct _XmppDiscoService XmppDiscoService;
+
+#include "gtkdisco.h"
+
+#define XMPP_PLUGIN_ID "prpl-jabber"
+#define NS_DISCO_INFO "http://jabber.org/protocol/disco#info"
+#define NS_DISCO_ITEMS "http://jabber.org/protocol/disco#items"
+#define NS_MUC "http://jabber.org/protocol/muc"
+#define NS_REGISTER "jabber:iq:register"
+
+#include "plugin.h"
+extern PurplePlugin *my_plugin;
+
+/**
+ * The types of services.
+ */
+typedef enum
+{
+ XMPP_DISCO_SERVICE_TYPE_UNSET,
+ /**
+ * A registerable gateway to another protocol. An example would be
+ * XMPP legacy transports.
+ */
+ XMPP_DISCO_SERVICE_TYPE_GATEWAY,
+
+ /**
+ * A directory (e.g. allows the user to search for other users).
+ */
+ XMPP_DISCO_SERVICE_TYPE_DIRECTORY,
+
+ /**
+ * A chat (multi-user conversation).
+ */
+ XMPP_DISCO_SERVICE_TYPE_CHAT,
+
+ /**
+ * A pubsub collection (contains nodes)
+ */
+ XMPP_DISCO_SERVICE_TYPE_PUBSUB_COLLECTION,
+
+ /**
+ * A pubsub leaf (contains stuff, not nodes).
+ */
+ XMPP_DISCO_SERVICE_TYPE_PUBSUB_LEAF,
+
+ /**
+ * Something else. Do we need more categories?
+ */
+ XMPP_DISCO_SERVICE_TYPE_OTHER
+} XmppDiscoServiceType;
+
+/**
+ * The flags of services.
+ */
+typedef enum
+{
+ XMPP_DISCO_NONE = 0x0000,
+ XMPP_DISCO_ADD = 0x0001, /**< Supports an 'add' operation */
+ XMPP_DISCO_BROWSE = 0x0002, /**< Supports browsing */
+ XMPP_DISCO_REGISTER = 0x0004 /**< Supports a 'register' operation */
+} XmppDiscoServiceFlags;
+
+struct _XmppDiscoService {
+ PidginDiscoList *list;
+ gchar *name;
+ gchar *description;
+
+ gchar *gateway_type;
+ XmppDiscoServiceType type;
+ XmppDiscoServiceFlags flags;
+
+ XmppDiscoService *parent;
+ gchar *jid;
+ gchar *node;
+ gboolean expanded;
+};
+
+void xmpp_disco_start(PidginDiscoList *list);
+
+void xmpp_disco_service_expand(XmppDiscoService *service);
+void xmpp_disco_service_register(XmppDiscoService *service);
+
+#endif /* PIDGIN_XMPP_DISCO_H */
diff --git a/pidgin/plugins/gevolution/gevo-util.c b/pidgin/plugins/gevolution/gevo-util.c
index c0613ae8f0..d5cac965da 100644
--- a/pidgin/plugins/gevolution/gevo-util.c
+++ b/pidgin/plugins/gevolution/gevo-util.c
@@ -27,13 +27,13 @@
void
gevo_add_buddy(PurpleAccount *account, const char *group_name,
- const char *screenname, const char *alias)
+ const char *buddy_name, const char *alias)
{
PurpleConversation *conv = NULL;
PurpleBuddy *buddy;
PurpleGroup *group;
- conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, screenname, account);
+ conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, buddy_name, account);
if ((group = purple_find_group(group_name)) == NULL)
{
@@ -41,8 +41,12 @@ gevo_add_buddy(PurpleAccount *account, const char *group_name,
purple_blist_add_group(group, NULL);
}
- buddy = purple_buddy_new(account, screenname, alias);
- purple_blist_add_buddy(buddy, NULL, group, NULL);
+ if ((buddy = purple_find_buddy_in_group(account, buddy_name, group)))
+ {
+ buddy = purple_buddy_new(account, buddy_name, alias);
+ purple_blist_add_buddy(buddy, NULL, group, NULL);
+ }
+
purple_account_add_buddy(account, buddy);
if (conv != NULL)
diff --git a/pidgin/plugins/gevolution/gevolution.c b/pidgin/plugins/gevolution/gevolution.c
index c7851ba036..05238df85c 100644
--- a/pidgin/plugins/gevolution/gevolution.c
+++ b/pidgin/plugins/gevolution/gevolution.c
@@ -39,6 +39,7 @@
#include <libedata-book/Evolution-DataServer-Addressbook.h>
#include <libedata-book/e-data-book-factory.h>
+/* TODO: bonobo is going away eventually, we'll need to find an alternative */
#include <bonobo/bonobo-main.h>
#include <glib.h>
@@ -52,7 +53,7 @@ enum
{
COLUMN_AUTOADD,
COLUMN_ICON,
- COLUMN_SCREENNAME,
+ COLUMN_USERNAME,
COLUMN_DATA,
NUM_COLUMNS
};
@@ -463,11 +464,11 @@ get_config_frame(PurplePlugin *plugin)
gtk_tree_view_column_add_attribute(column, renderer,
"pixbuf", COLUMN_ICON);
- /* Screenname */
+ /* Username */
renderer = gtk_cell_renderer_text_new();
gtk_tree_view_column_pack_start(column, renderer, TRUE);
gtk_tree_view_column_add_attribute(column, renderer,
- "text", COLUMN_SCREENNAME);
+ "text", COLUMN_USERNAME);
/* Populate */
@@ -489,7 +490,7 @@ get_config_frame(PurplePlugin *plugin)
purple_account_get_bool(account, "gevo-autoadd",
FALSE),
COLUMN_ICON, pixbuf,
- COLUMN_SCREENNAME,
+ COLUMN_USERNAME,
purple_account_get_username(account),
COLUMN_DATA, account,
-1);
diff --git a/pidgin/plugins/gevolution/gevolution.h b/pidgin/plugins/gevolution/gevolution.h
index 7046070277..1b92b2b940 100644
--- a/pidgin/plugins/gevolution/gevolution.h
+++ b/pidgin/plugins/gevolution/gevolution.h
@@ -75,7 +75,7 @@ typedef struct
GtkWidget *win;
GtkWidget *accounts_menu;
- GtkWidget *screenname;
+ GtkWidget *username;
GtkWidget *firstname;
GtkWidget *lastname;
GtkWidget *email;
diff --git a/pidgin/plugins/gevolution/new_person_dialog.c b/pidgin/plugins/gevolution/new_person_dialog.c
index 0d62c93b67..797d4bbf77 100644
--- a/pidgin/plugins/gevolution/new_person_dialog.c
+++ b/pidgin/plugins/gevolution/new_person_dialog.c
@@ -67,7 +67,7 @@ cancel_cb(GtkWidget *w, GevoNewPersonDialog *dialog)
}
static void
-screenname_changed_cb(GtkEntry *entry, GevoNewPersonDialog *dialog)
+username_changed_cb(GtkEntry *entry, GevoNewPersonDialog *dialog)
{
gtk_widget_set_sensitive(dialog->add_button,
*gtk_entry_get_text(entry) != '\0');
@@ -85,7 +85,7 @@ static void
add_cb(GtkWidget *w, GevoNewPersonDialog *dialog)
{
EContact *contact = NULL;
- const char *screenname;
+ const char *username;
const char *firstname;
const char *lastname;
const char *email;
@@ -96,9 +96,9 @@ add_cb(GtkWidget *w, GevoNewPersonDialog *dialog)
char *full_name = NULL;
if (dialog->person_only)
- screenname = dialog->buddy->name;
+ username = dialog->buddy->name;
else
- screenname = gtk_entry_get_text(GTK_ENTRY(dialog->screenname));
+ username = gtk_entry_get_text(GTK_ENTRY(dialog->username));
firstname = gtk_entry_get_text(GTK_ENTRY(dialog->firstname));
lastname = gtk_entry_get_text(GTK_ENTRY(dialog->lastname));
@@ -143,7 +143,7 @@ add_cb(GtkWidget *w, GevoNewPersonDialog *dialog)
if (!strcmp(im_service, "prpl-oscar"))
{
- if (isdigit(*screenname))
+ if (isdigit(*username))
field = E_CONTACT_IM_ICQ;
else
field = E_CONTACT_IM_AIM;
@@ -163,7 +163,7 @@ add_cb(GtkWidget *w, GevoNewPersonDialog *dialog)
if (field > 0)
{
- GList *list = g_list_append(NULL, g_strdup(screenname));
+ GList *list = g_list_append(NULL, g_strdup(username));
e_contact_set(contact, field, list);
@@ -203,7 +203,7 @@ add_cb(GtkWidget *w, GevoNewPersonDialog *dialog)
group_name = pidgin_text_combo_box_entry_get_text(dialog->group_combo);
- gevo_add_buddy(dialog->account, group_name, screenname, full_name);
+ gevo_add_buddy(dialog->account, group_name, username, full_name);
}
if (name != NULL)
@@ -289,15 +289,15 @@ gevo_new_person_dialog_show(EBook *book, EContact *contact,
NULL, dialog);
add_pref_box(sg, vbox, _("Account type:"), dialog->accounts_menu);
- /* Screen Name */
- dialog->screenname = gtk_entry_new();
- add_pref_box(sg, vbox, _("Username:"), dialog->screenname);
+ /* Username */
+ dialog->username = gtk_entry_new();
+ add_pref_box(sg, vbox, _("Username:"), dialog->username);
if (username != NULL)
- gtk_entry_set_text(GTK_ENTRY(dialog->screenname), username);
+ gtk_entry_set_text(GTK_ENTRY(dialog->username), username);
- g_signal_connect(G_OBJECT(dialog->screenname), "changed",
- G_CALLBACK(screenname_changed_cb), dialog);
+ g_signal_connect(G_OBJECT(dialog->username), "changed",
+ G_CALLBACK(username_changed_cb), dialog);
/* Group */
dialog->group_combo = pidgin_text_combo_box_entry_new(NULL,
diff --git a/pidgin/plugins/history.c b/pidgin/plugins/history.c
index b2e7b8ee48..3d2507343b 100644
--- a/pidgin/plugins/history.c
+++ b/pidgin/plugins/history.c
@@ -62,36 +62,39 @@ static void historize(PurpleConversation *c)
return;
/* Find buddies for this conversation. */
- buddies = purple_find_buddies(account, name);
+ buddies = purple_find_buddies(account, name);
/* If we found at least one buddy, save the first buddy's alias. */
if (buddies != NULL)
alias = purple_buddy_get_contact_alias((PurpleBuddy *)buddies->data);
- for (cur = buddies; cur != NULL; cur = cur->next)
- {
- PurpleBlistNode *node = cur->data;
- if ((node != NULL) && ((node->prev != NULL) || (node->next != NULL)))
- {
+ for (cur = buddies; cur != NULL; cur = cur->next)
+ {
+ PurpleBlistNode *node = cur->data;
+ PurpleBlistNode *prev = purple_blist_node_get_sibling_prev(node);
+ PurpleBlistNode *next = purple_blist_node_get_sibling_next(node);
+ if ((node != NULL) && ((prev != NULL) || (next != NULL)))
+ {
PurpleBlistNode *node2;
+ PurpleBlistNode *parent = purple_blist_node_get_parent(node);
+ PurpleBlistNode *child = purple_blist_node_get_first_child(parent);
alias = purple_buddy_get_contact_alias((PurpleBuddy *)node);
/* We've found a buddy that matches this conversation. It's part of a
* PurpleContact with more than one PurpleBuddy. Loop through the PurpleBuddies
* in the contact and get all the logs. */
- for (node2 = node->parent->child ; node2 != NULL ; node2 = node2->next)
+ for (node2 = child ; node2 != NULL ; node2 = purple_blist_node_get_sibling_next(node2))
{
- logs = g_list_concat(
- purple_log_get_logs(PURPLE_LOG_IM,
+ logs = g_list_concat(purple_log_get_logs(PURPLE_LOG_IM,
purple_buddy_get_name((PurpleBuddy *)node2),
purple_buddy_get_account((PurpleBuddy *)node2)),
- logs);
+ logs);
}
break;
- }
- }
- g_slist_free(buddies);
+ }
+ }
+ g_slist_free(buddies);
if (logs == NULL)
logs = purple_log_get_logs(PURPLE_LOG_IM, name, account);
@@ -118,7 +121,7 @@ static void historize(PurpleConversation *c)
protocol = g_strdup(gtk_imhtml_get_protocol_name(GTK_IMHTML(gtkconv->imhtml)));
gtk_imhtml_set_protocol_name(GTK_IMHTML(gtkconv->imhtml),
- purple_account_get_protocol_name(((PurpleLog*)logs->data)->account));
+ purple_account_get_protocol_name(((PurpleLog*)logs->data)->account));
if (gtk_text_buffer_get_char_count(gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->imhtml))))
gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), "<BR>", options);
diff --git a/pidgin/plugins/mailchk.c b/pidgin/plugins/mailchk.c
index fd30e3ce4f..cd0b677034 100644
--- a/pidgin/plugins/mailchk.c
+++ b/pidgin/plugins/mailchk.c
@@ -13,7 +13,7 @@
#define UNREAD_MAIL 0x02
#define NEW_MAIL 0x04
-static guint32 timer = 0;
+static guint timer = 0;
static GtkWidget *mail = NULL;
static gint
@@ -93,7 +93,7 @@ signon_cb(PurpleConnection *gc)
PurpleBuddyList *list = purple_get_blist();
if (list && PURPLE_IS_GTK_BLIST(list) && !timer) {
check_timeout(NULL); /* we want the box to be drawn immediately */
- timer = g_timeout_add(2000, check_timeout, NULL);
+ timer = purple_timeout_add_seconds(2, check_timeout, NULL);
}
}
@@ -102,7 +102,7 @@ signoff_cb(PurpleConnection *gc)
{
PurpleBuddyList *list = purple_get_blist();
if ((!list || !PURPLE_IS_GTK_BLIST(list) || !PIDGIN_BLIST(list)->vbox) && timer) {
- g_source_remove(timer);
+ purple_timeout_remove(timer);
timer = 0;
}
}
@@ -123,7 +123,7 @@ plugin_load(PurplePlugin *plugin)
}
if (list && PURPLE_IS_GTK_BLIST(list) && PIDGIN_BLIST(list)->vbox)
- timer = g_timeout_add(2000, check_timeout, NULL);
+ timer = purple_timeout_add_seconds(2, check_timeout, NULL);
purple_signal_connect(conn_handle, "signed-on",
plugin, PURPLE_CALLBACK(signon_cb), NULL);
@@ -137,7 +137,7 @@ static gboolean
plugin_unload(PurplePlugin *plugin)
{
if (timer)
- g_source_remove(timer);
+ purple_timeout_remove(timer);
timer = 0;
if (mail)
gtk_widget_destroy(mail);
diff --git a/pidgin/plugins/markerline.c b/pidgin/plugins/markerline.c
index 9d0d11a2e1..214994a906 100644
--- a/pidgin/plugins/markerline.c
+++ b/pidgin/plugins/markerline.c
@@ -84,7 +84,7 @@ imhtml_expose_cb(GtkWidget *widget, GdkEventExpose *event, PidginConversation *g
gdk_gc_set_rgb_fg_color(gc, &red);
gdk_draw_line(event->window, gc,
0, y, visible_rect.width, y);
- gdk_gc_unref(gc);
+ g_object_unref(G_OBJECT(gc));
}
return FALSE;
}
diff --git a/pidgin/plugins/musicmessaging/musicmessaging.c b/pidgin/plugins/musicmessaging/musicmessaging.c
index cf71bf4117..84acabf2b2 100644
--- a/pidgin/plugins/musicmessaging/musicmessaging.c
+++ b/pidgin/plugins/musicmessaging/musicmessaging.c
@@ -529,7 +529,7 @@ static void run_editor (MMConversation *mmconv)
args[1] = "-session_id";
session_id = g_string_new("");
- g_string_sprintfa(session_id, "%d", mmconv_from_conv_loc(mmconv->conv));
+ g_string_append_printf(session_id, "%d", mmconv_from_conv_loc(mmconv->conv));
args[2] = session_id->str;
args[3] = NULL;
diff --git a/pidgin/plugins/perl/common/GtkLog.xs b/pidgin/plugins/perl/common/GtkLog.xs
index 2e32fc5466..3579f1c4f8 100644
--- a/pidgin/plugins/perl/common/GtkLog.xs
+++ b/pidgin/plugins/perl/common/GtkLog.xs
@@ -7,9 +7,9 @@ Purple::Handle
pidgin_log_get_handle()
void
-pidgin_log_show(type, screenname, account)
+pidgin_log_show(type, buddyname, account)
Purple::LogType type
- const char * screenname
+ const char * buddyname
Purple::Account account
void
diff --git a/pidgin/plugins/pidginrc.c b/pidgin/plugins/pidginrc.c
index 7fbaf17bb5..f7d405b6dd 100644
--- a/pidgin/plugins/pidginrc.c
+++ b/pidgin/plugins/pidginrc.c
@@ -28,34 +28,31 @@
static guint pref_callback;
static const gchar *color_prefs[] = {
- "/plugins/gtk/purplerc/color/GtkWidget::cursor-color",
- "/plugins/gtk/purplerc/color/GtkWidget::secondary-cursor-color",
"/plugins/gtk/purplerc/color/GtkIMHtml::hyperlink-color",
"/plugins/gtk/purplerc/color/GtkIMHtml::hyperlink-visited-color",
"/plugins/gtk/purplerc/color/GtkIMHtml::send-name-color",
"/plugins/gtk/purplerc/color/GtkIMHtml::receive-name-color",
"/plugins/gtk/purplerc/color/GtkIMHtml::highlight-name-color",
- "/plugins/gtk/purplerc/color/GtkIMHtml::action-name-color"
+ "/plugins/gtk/purplerc/color/GtkIMHtml::action-name-color",
+ "/plugins/gtk/purplerc/color/GtkIMHtml::typing-notification-color"
};
static const gchar *color_prefs_set[] = {
- "/plugins/gtk/purplerc/set/color/GtkWidget::cursor-color",
- "/plugins/gtk/purplerc/set/color/GtkWidget::secondary-cursor-color",
"/plugins/gtk/purplerc/set/color/GtkIMHtml::hyperlink-color",
"/plugins/gtk/purplerc/set/color/GtkIMHtml::hyperlink-visited-color",
"/plugins/gtk/purplerc/set/color/GtkIMHtml::send-name-color",
"/plugins/gtk/purplerc/set/color/GtkIMHtml::receive-name-color",
"/plugins/gtk/purplerc/set/color/GtkIMHtml::highlight-name-color",
- "/plugins/gtk/purplerc/set/color/GtkIMHtml::action-name-color"
+ "/plugins/gtk/purplerc/set/color/GtkIMHtml::action-name-color",
+ "/plugins/gtk/purplerc/set/color/GtkIMHtml::typing-notification-color"
};
static const gchar *color_names[] = {
- N_("Cursor Color"),
- N_("Secondary Cursor Color"),
N_("Hyperlink Color"),
N_("Visited Hyperlink Color"),
N_("Sent Message Name Color"),
N_("Received Message Name Color"),
N_("Highlighted Message Name Color"),
- N_("Action Message Name Color")
+ N_("Action Message Name Color"),
+ N_("Typing Notification Color")
};
static GtkWidget *color_widgets[G_N_ELEMENTS(color_prefs)];
@@ -126,6 +123,10 @@ make_gtkrc_string(void)
g_string_append(style_string, "style \"purplerc_style\"\n{");
+ if(purple_prefs_get_bool("/plugins/gtk/purplerc/set/disable-typing-notification")) {
+ g_string_append(style_string, "\tGtkIMHtml::typing-notification-enable = 0\n");
+ }
+
for (i = 0; i < G_N_ELEMENTS(color_prefs); i++) {
if (purple_prefs_get_bool(color_prefs_set[i])) {
const gchar *pref;
@@ -349,33 +350,58 @@ purplerc_plugin_unload(PurplePlugin *plugin)
}
static GtkWidget *
-purplerc_get_config_frame(PurplePlugin *plugin)
+purplerc_make_interface_vbox(void)
{
- /* Note: Intentionally not using the size group argument to the
- * pidgin_prefs_labeled_* functions they only add the text label to
- * the size group not the whole thing, which isn't what I want. */
+ GtkWidget *vbox = NULL, *hbox = NULL, *check = NULL;
+ GtkSizeGroup *labelsg = NULL;
gint i;
- gchar *tmp;
- GtkWidget *check = NULL, *widget = NULL;
- GtkWidget *ret = NULL, *hbox = NULL, *frame = NULL;
- GtkSizeGroup *labelsg = NULL, *widgetsg = NULL, *buttonsg = NULL;
-#ifndef _WIN32
- const gchar *homepath = "$HOME";
-#else
- const gchar *homepath = "\%APPDATA\%";
-#endif
- ret = gtk_vbox_new(FALSE, PIDGIN_HIG_CAT_SPACE);
- gtk_container_set_border_width(GTK_CONTAINER(ret), PIDGIN_HIG_BORDER);
+ vbox = gtk_vbox_new(FALSE, PIDGIN_HIG_CAT_SPACE);
+ labelsg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
+
+ gtk_container_set_border_width(GTK_CONTAINER(vbox), PIDGIN_HIG_BORDER);
+
+ for (i = 0; i < G_N_ELEMENTS(color_prefs); i++) {
+ hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_CAT_SPACE);
+ gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
+
+ check = pidgin_prefs_checkbox(_(color_names[i]),
+ color_prefs_set[i], hbox);
+ gtk_size_group_add_widget(labelsg, check);
+
+ color_widgets[i] = pidgin_pixbuf_button_from_stock("",
+ GTK_STOCK_SELECT_COLOR, PIDGIN_BUTTON_HORIZONTAL);
+ gtk_box_pack_start(GTK_BOX(hbox), color_widgets[i], FALSE,
+ FALSE, 0);
+ gtk_widget_set_sensitive(color_widgets[i],
+ purple_prefs_get_bool(color_prefs_set[i]));
+ g_signal_connect(G_OBJECT(check), "toggled",
+ G_CALLBACK(pidgin_toggle_sensitive),
+ color_widgets[i]);
+ g_signal_connect(G_OBJECT(color_widgets[i]), "clicked",
+ G_CALLBACK(purplerc_set_color),
+ GINT_TO_POINTER(i));
+ }
+
+ g_object_unref(labelsg);
+
+ return vbox;
+}
+
+static GtkWidget *
+purplerc_make_fonts_vbox(void)
+{
+ GtkWidget *vbox = NULL, *hbox = NULL, *check = NULL, *widget = NULL;
+ GtkSizeGroup *labelsg = NULL;
+ int i;
+
+ vbox = gtk_vbox_new(FALSE, PIDGIN_HIG_CAT_SPACE);
+ labelsg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
- labelsg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
- widgetsg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
- buttonsg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
+ gtk_container_set_border_width(GTK_CONTAINER(vbox), PIDGIN_HIG_BORDER);
- frame = pidgin_make_frame(ret, _("General"));
- /* interface font */
hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_CAT_SPACE);
- gtk_box_pack_start(GTK_BOX(frame), hbox, FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
check = pidgin_prefs_checkbox(_("GTK+ Interface Font"),
"/plugins/gtk/purplerc/set/gtk-font-name",
@@ -385,7 +411,6 @@ purplerc_get_config_frame(PurplePlugin *plugin)
widget = pidgin_pixbuf_button_from_stock("", GTK_STOCK_SELECT_FONT,
PIDGIN_BUTTON_HORIZONTAL);
gtk_box_pack_start(GTK_BOX(hbox), widget, FALSE, FALSE, 0);
- gtk_size_group_add_widget(widgetsg, widget);
gtk_widget_set_sensitive(widget,
purple_prefs_get_bool("/plugins/gtk/purplerc/set/gtk-font-name"));
g_signal_connect(G_OBJECT(check), "toggled",
@@ -393,9 +418,50 @@ purplerc_get_config_frame(PurplePlugin *plugin)
g_signal_connect(G_OBJECT(widget), "clicked",
G_CALLBACK(purplerc_set_font), GINT_TO_POINTER(-1));
- /* key theme name */
+ for (i = 0; i < G_N_ELEMENTS(font_prefs); i++) {
+ hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_CAT_SPACE);
+ gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
+
+ check = pidgin_prefs_checkbox(_(font_names[i]),
+ font_prefs_set[i], hbox);
+ gtk_size_group_add_widget(labelsg, check);
+
+ font_widgets[i] = pidgin_pixbuf_button_from_stock("",
+ GTK_STOCK_SELECT_FONT, PIDGIN_BUTTON_HORIZONTAL);
+ gtk_box_pack_start(GTK_BOX(hbox), font_widgets[i], FALSE,
+ FALSE, 0);
+ gtk_widget_set_sensitive(font_widgets[i],
+ purple_prefs_get_bool(font_prefs_set[i]));
+ g_signal_connect(G_OBJECT(check), "toggled",
+ G_CALLBACK(pidgin_toggle_sensitive),
+ font_widgets[i]);
+ g_signal_connect(G_OBJECT(font_widgets[i]), "clicked",
+ G_CALLBACK(purplerc_set_font),
+ GINT_TO_POINTER(i));
+ }
+
+ g_object_unref(labelsg);
+
+ return vbox;
+}
+
+static GtkWidget *
+purplerc_make_misc_vbox(void)
+{
+ /* Note: Intentionally not using the size group argument to the
+ * pidgin_prefs_labeled_* functions they only add the text label to
+ * the size group not the whole thing, which isn't what I want. */
+ GtkWidget *vbox = NULL, *hbox = NULL, *check = NULL, *widget = NULL;
+ GtkSizeGroup *labelsg = NULL;
+ int i;
+
+ vbox = gtk_vbox_new(FALSE, PIDGIN_HIG_CAT_SPACE);
+ labelsg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
+
+ gtk_container_set_border_width(GTK_CONTAINER(vbox), PIDGIN_HIG_BORDER);
+
hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_CAT_SPACE);
- gtk_box_pack_start(GTK_BOX(frame), hbox, FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
check = pidgin_prefs_checkbox(_("GTK+ Text Shortcut Theme"),
"/plugins/gtk/purplerc/set/gtk-key-theme-name",
@@ -405,27 +471,45 @@ purplerc_get_config_frame(PurplePlugin *plugin)
widget = pidgin_prefs_labeled_entry(hbox, "",
"/plugins/gtk/purplerc/gtk-key-theme-name",
NULL);
- /*
- gtk_size_group_add_widget(widgetsg, widget);
- */
gtk_widget_set_sensitive(widget,
purple_prefs_get_bool("/plugins/gtk/purplerc/set/gtk-key-theme-name"));
g_signal_connect(G_OBJECT(check), "toggled",
G_CALLBACK(pidgin_toggle_sensitive), widget);
+ for (i = 0; i < G_N_ELEMENTS(widget_size_prefs); i++) {
+ hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_CAT_SPACE);
+ gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
+
+ check = pidgin_prefs_checkbox(_(widget_size_names[i]),
+ widget_size_prefs_set[i], hbox);
+ gtk_size_group_add_widget(labelsg, check);
+
+ widget_size_widgets[i] = pidgin_prefs_labeled_spin_button(hbox, "", widget_size_prefs[i], 0, 50, NULL);
+ gtk_widget_set_sensitive(widget_size_widgets[i],
+ purple_prefs_get_bool(widget_size_prefs_set[i]));
+ g_signal_connect(G_OBJECT(check), "toggled",
+ G_CALLBACK(pidgin_toggle_sensitive),
+ widget_size_widgets[i]);
+ }
+
+ hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_CAT_SPACE);
+ gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
+
+ check = pidgin_prefs_checkbox(_("Disable Typing Notification Text"),
+ "/plugins/gtk/purplerc/set/disable-typing-notification", hbox);
+
+ /* Widget boolean stuff */
/*
for (i = 0; i < G_N_ELEMENTS(widget_bool_prefs); i++) {
hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_CAT_SPACE);
- gtk_box_pack_start(GTK_BOX(frame), hbox, FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
check = pidgin_prefs_checkbox(_(widget_bool_names[i]),
widget_bool_prefs_set[i], hbox);
gtk_size_group_add_widget(labelsg, check);
widget_bool_widgets[i] = pidgin_prefs_checkbox("", widget_bool_prefs[i], hbox);
- *
- gtk_size_group_add_widget(widgetsb, widget_bool_widgets[i]);
- *
+
gtk_widget_set_sensitive(widget_bool_widgets[i],
purple_prefs_get_bool(widget_bool_prefs_set[i]));
g_signal_connect(G_OBJECT(check), "toggled",
@@ -434,74 +518,48 @@ purplerc_get_config_frame(PurplePlugin *plugin)
}
*/
- frame = pidgin_make_frame(ret, _("Interface colors"));
- /* imhtml stuff */
- for (i = 0; i < G_N_ELEMENTS(color_prefs); i++) {
- hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_CAT_SPACE);
- gtk_box_pack_start(GTK_BOX(frame), hbox, FALSE, FALSE, 0);
+ g_object_unref(labelsg);
- check = pidgin_prefs_checkbox(_(color_names[i]),
- color_prefs_set[i], hbox);
- gtk_size_group_add_widget(labelsg, check);
+ return vbox;
+}
- color_widgets[i] = pidgin_pixbuf_button_from_stock("", GTK_STOCK_SELECT_COLOR, PIDGIN_BUTTON_HORIZONTAL);
- gtk_size_group_add_widget(widgetsg, color_widgets[i]);
- gtk_box_pack_start(GTK_BOX(hbox), color_widgets[i], FALSE,
- FALSE, 0);
- gtk_widget_set_sensitive(color_widgets[i],
- purple_prefs_get_bool(color_prefs_set[i]));
- g_signal_connect(G_OBJECT(check), "toggled",
- G_CALLBACK(pidgin_toggle_sensitive),
- color_widgets[i]);
- g_signal_connect(G_OBJECT(color_widgets[i]), "clicked",
- G_CALLBACK(purplerc_set_color),
- GINT_TO_POINTER(i));
- }
+static GtkWidget *
+purplerc_get_config_frame(PurplePlugin *plugin)
+{
+ gchar *tmp;
+ GtkWidget *check = NULL, *label = NULL;
+ GtkWidget *ret = NULL, *hbox = NULL, *frame = NULL, *note = NULL;
+#ifndef _WIN32
+ const gchar *homepath = "$HOME";
+#else
+ const gchar *homepath = "\%APPDATA\%";
+#endif
- frame = pidgin_make_frame(ret, _("Widget Sizes"));
- /* widget size stuff */
- for (i = 0; i < G_N_ELEMENTS(widget_size_prefs); i++) {
- hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_CAT_SPACE);
- gtk_box_pack_start(GTK_BOX(frame), hbox, FALSE, FALSE, 0);
+ ret = gtk_vbox_new(FALSE, PIDGIN_HIG_CAT_SPACE);
+ note = gtk_notebook_new();
+ label = gtk_label_new(NULL);
+ hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_CAT_SPACE);
- check = pidgin_prefs_checkbox(_(widget_size_names[i]),
- widget_size_prefs_set[i], hbox);
- gtk_size_group_add_widget(labelsg, check);
+ gtk_container_set_border_width(GTK_CONTAINER(ret), PIDGIN_HIG_BORDER);
- widget_size_widgets[i] = pidgin_prefs_labeled_spin_button(hbox, "", widget_size_prefs[i], 0, 50, NULL);
- /*
- gtk_size_group_add_widget(widgetsg, widget_size_widgets[i]);
- */
- gtk_widget_set_sensitive(widget_size_widgets[i],
- purple_prefs_get_bool(widget_size_prefs_set[i]));
- g_signal_connect(G_OBJECT(check), "toggled",
- G_CALLBACK(pidgin_toggle_sensitive),
- widget_size_widgets[i]);
- }
+ tmp = g_strdup_printf("<span weight=\"bold\">%s</span>", _("GTK+ Theme Control Settings"));
+ gtk_label_set_markup(GTK_LABEL(label), tmp);
+ g_free(tmp);
- frame = pidgin_make_frame(ret, _("Fonts"));
- /* imhtml font stuff */
- for (i = 0; i < G_N_ELEMENTS(font_prefs); i++) {
- hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_CAT_SPACE);
- gtk_box_pack_start(GTK_BOX(frame), hbox, FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(ret), hbox, FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(ret), note, FALSE, FALSE, 0);
- check = pidgin_prefs_checkbox(_(font_names[i]),
- font_prefs_set[i], hbox);
- gtk_size_group_add_widget(labelsg, check);
+ label = gtk_label_new(_("Colors"));
+ gtk_notebook_insert_page(GTK_NOTEBOOK(note), purplerc_make_interface_vbox(), label, -1);
- font_widgets[i] = pidgin_pixbuf_button_from_stock("", GTK_STOCK_SELECT_FONT, PIDGIN_BUTTON_HORIZONTAL);
- gtk_size_group_add_widget(widgetsg, font_widgets[i]);
- gtk_box_pack_start(GTK_BOX(hbox), font_widgets[i], FALSE,
- FALSE, 0);
- gtk_widget_set_sensitive(font_widgets[i],
- purple_prefs_get_bool(font_prefs_set[i]));
- g_signal_connect(G_OBJECT(check), "toggled",
- G_CALLBACK(pidgin_toggle_sensitive),
- font_widgets[i]);
- g_signal_connect(G_OBJECT(font_widgets[i]), "clicked",
- G_CALLBACK(purplerc_set_font),
- GINT_TO_POINTER(i));
- }
+ label = gtk_label_new(_("Fonts"));
+ gtk_notebook_insert_page(GTK_NOTEBOOK(note), purplerc_make_fonts_vbox(), label, -1);
+
+ label = gtk_label_new(_("Miscellaneous"));
+ gtk_notebook_insert_page(GTK_NOTEBOOK(note), purplerc_make_misc_vbox(), label, -1);
+
+ gtk_box_pack_start(GTK_BOX(ret), gtk_hseparator_new(), TRUE, TRUE, 0);
frame = pidgin_make_frame(ret, _("Gtkrc File Tools"));
@@ -512,22 +570,17 @@ purplerc_get_config_frame(PurplePlugin *plugin)
homepath, G_DIR_SEPARATOR_S ".purple" G_DIR_SEPARATOR_S);
check = gtk_button_new_with_label(tmp);
g_free(tmp);
- gtk_box_pack_start(GTK_BOX(hbox), check, FALSE, FALSE, 0);
- gtk_size_group_add_widget(buttonsg, check);
+ gtk_box_pack_start(GTK_BOX(hbox), check, TRUE, TRUE, 0);
g_signal_connect(G_OBJECT(check), "clicked",
G_CALLBACK(purplerc_write), NULL);
check = gtk_button_new_with_label(_("Re-read gtkrc files"));
- gtk_box_pack_start(GTK_BOX(hbox), check, FALSE, FALSE, 0);
- gtk_size_group_add_widget(buttonsg, check);
+ gtk_box_pack_start(GTK_BOX(hbox), check, TRUE, TRUE, 0);
g_signal_connect(G_OBJECT(check), "clicked",
G_CALLBACK(purplerc_reread), NULL);
gtk_widget_show_all(ret);
- g_object_unref(labelsg);
- g_object_unref(widgetsg);
- g_object_unref(buttonsg);
return ret;
}
@@ -621,6 +674,15 @@ purplerc_init(PurplePlugin *plugin)
purple_prefs_add_bool(widget_bool_prefs_set[i], FALSE);
}
*/
+
+ purple_prefs_add_bool("/plugins/gtk/purplerc/disable-typing-notification", FALSE);
+ purple_prefs_add_bool("/plugins/gtk/purplerc/set/disable-typing-notification", FALSE);
+
+ /* remove old cursor color prefs */
+ purple_prefs_remove("/plugins/gtk/purplerc/color/GtkWidget::cursor-color");
+ purple_prefs_remove("/plugins/gtk/purplerc/color/GtkWidget::secondary-cursor-color");
+ purple_prefs_remove("/plugins/gtk/purplerc/set/color/GtkWidget::cursor-color");
+ purple_prefs_remove("/plugins/gtk/purplerc/set/color/GtkWidget::secondary-cursor-color");
}
PURPLE_INIT_PLUGIN(purplerc, purplerc_init, purplerc_info)
diff --git a/pidgin/plugins/themeedit-icon.c b/pidgin/plugins/themeedit-icon.c
new file mode 100644
index 0000000000..8646d98a30
--- /dev/null
+++ b/pidgin/plugins/themeedit-icon.c
@@ -0,0 +1,312 @@
+/* Pidgin
+ *
+ * Pidgin is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+#include "internal.h"
+#include "pidgin.h"
+#include "debug.h"
+#include "version.h"
+
+#include "theme-manager.h"
+
+#include "gtkblist.h"
+#include "gtkblist-theme.h"
+#include "gtkutils.h"
+#include "gtkplugin.h"
+
+#include "pidginstock.h"
+#include "themeedit-icon.h"
+
+typedef enum
+{
+ FLAG_SIZE_MICROSOPIC = 0,
+ FLAG_SIZE_EXTRA_SMALL,
+ FLAG_SIZE_SMALL,
+ FLAG_SIZE_MEDIUM,
+ FLAG_SIZE_LARGE,
+ FLAG_SIZE_HUGE,
+ FLAG_SIZE_NONE,
+} SectionFlags;
+
+#define SECTION_FLAGS_ALL (0x3f)
+
+static const char *stocksizes [] = {
+ [FLAG_SIZE_MICROSOPIC] = PIDGIN_ICON_SIZE_TANGO_MICROSCOPIC,
+ [FLAG_SIZE_EXTRA_SMALL] = PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL,
+ [FLAG_SIZE_SMALL] = PIDGIN_ICON_SIZE_TANGO_SMALL,
+ [FLAG_SIZE_MEDIUM] = PIDGIN_ICON_SIZE_TANGO_MEDIUM,
+ [FLAG_SIZE_LARGE] = PIDGIN_ICON_SIZE_TANGO_LARGE,
+ [FLAG_SIZE_HUGE] = PIDGIN_ICON_SIZE_TANGO_HUGE,
+ [FLAG_SIZE_NONE] = NULL,
+};
+
+static const struct options {
+ const char *stockid;
+ const char *text;
+} statuses[] = {
+ {PIDGIN_STOCK_STATUS_AVAILABLE, N_("Available")},
+ {PIDGIN_STOCK_STATUS_AWAY, N_("Away")},
+ {PIDGIN_STOCK_STATUS_XA, N_("Extended Away")},
+ {PIDGIN_STOCK_STATUS_BUSY, N_("Busy")},
+ {PIDGIN_STOCK_STATUS_OFFLINE, N_("Offline")},
+ {PIDGIN_STOCK_STATUS_LOGIN, N_("Just logged in")},
+ {PIDGIN_STOCK_STATUS_LOGOUT, N_("Just logged out")},
+ {PIDGIN_STOCK_STATUS_PERSON, N_("Icon for Contact/\nIcon for Unknown person")},
+ {PIDGIN_STOCK_STATUS_CHAT, N_("Icon for Chat")},
+ {NULL, NULL}
+}, chatemblems[] = {
+ {PIDGIN_STOCK_STATUS_IGNORED, N_("Ignored")},
+ {PIDGIN_STOCK_STATUS_FOUNDER, N_("Founder")},
+ {PIDGIN_STOCK_STATUS_OPERATOR, N_("Operator")},
+ {PIDGIN_STOCK_STATUS_HALFOP, N_("Half Operator")},
+ {PIDGIN_STOCK_STATUS_VOICE, N_("Voice")},
+ {NULL, NULL}
+}, dialogicons[] = {
+ {PIDGIN_STOCK_DIALOG_AUTH, N_("Authorization dialog")},
+ {PIDGIN_STOCK_DIALOG_ERROR, N_("Error dialog")},
+ {PIDGIN_STOCK_DIALOG_INFO, N_("Information dialog")},
+ {PIDGIN_STOCK_DIALOG_MAIL, N_("Mail dialog")},
+ {PIDGIN_STOCK_DIALOG_QUESTION, N_("Question dialog")},
+ {PIDGIN_STOCK_DIALOG_WARNING, N_("Warning dialog")},
+ {NULL, NULL},
+ {PIDGIN_STOCK_DIALOG_COOL, N_("What kind of dialog is this?")},
+};
+
+static const struct {
+ const char *heading;
+ const struct options *options;
+ SectionFlags flags;
+} sections[] = {
+ {N_("Status Icons"), statuses, SECTION_FLAGS_ALL ^ (1 << FLAG_SIZE_HUGE)},
+ {N_("Chatroom Emblems"), chatemblems, FLAG_SIZE_SMALL},
+ {N_("Dialog Icons"), dialogicons, (1 << FLAG_SIZE_EXTRA_SMALL) | (1 << FLAG_SIZE_HUGE)},
+ {NULL, NULL, 0}
+};
+
+static PidginStatusIconTheme *
+create_icon_theme(GtkWidget *window)
+{
+ int s, i, j;
+ char *dirname = "/tmp"; /* FIXME */
+ PidginStatusIconTheme *theme = g_object_new(PIDGIN_TYPE_STATUS_ICON_THEME, "type", "status-icon",
+ "author", getlogin(),
+ "directory", dirname,
+ NULL);
+
+ for (s = 0; sections[s].heading; s++) {
+ GtkWidget *vbox = g_object_get_data(G_OBJECT(window), sections[s].heading);
+ for (i = 0; sections[s].options[i].stockid; i++) {
+ GtkWidget *image = g_object_get_data(G_OBJECT(vbox), sections[s].options[i].stockid);
+ GdkPixbuf *pixbuf = g_object_get_data(G_OBJECT(image), "pixbuf");
+ if (!pixbuf)
+ continue;
+ pidgin_icon_theme_set_icon(PIDGIN_ICON_THEME(theme), sections[s].options[i].stockid,
+ sections[s].options[i].stockid);
+ for (j = 0; stocksizes[j]; j++) {
+ int width, height;
+ GtkIconSize iconsize;
+ char size[8];
+ char *name;
+ GdkPixbuf *scale;
+ GError *error = NULL;
+
+ if (!(sections[s].flags & (1 << j)))
+ continue;
+
+ iconsize = gtk_icon_size_from_name(stocksizes[j]);
+ gtk_icon_size_lookup(iconsize, &width, &height);
+ g_snprintf(size, sizeof(size), "%d", width);
+
+ if (i == 0) {
+ name = g_build_filename(dirname, size, NULL);
+ purple_build_dir(name, S_IRUSR | S_IWUSR | S_IXUSR);
+ g_free(name);
+ }
+
+ name = g_build_filename(dirname, size, sections[s].options[i].stockid, NULL);
+ scale = gdk_pixbuf_scale_simple(pixbuf, width, height, GDK_INTERP_BILINEAR);
+ gdk_pixbuf_save(scale, name, "png", &error, "compression", "9", NULL);
+ g_free(name);
+ g_object_unref(G_OBJECT(scale));
+ if (error)
+ g_error_free(error);
+ }
+ }
+ }
+ return theme;
+}
+
+static void
+use_icon_theme(GtkWidget *w, GtkWidget *window)
+{
+ /* I don't quite understand the icon-theme stuff. For example, I don't
+ * know why PidginIconTheme needs to be abstract, or how PidginStatusIconTheme
+ * would be different from other PidginIconTheme's (e.g. PidginStockIconTheme)
+ * etc., but anyway, this works for now.
+ *
+ * Here's an interesting note: A PidginStatusIconTheme can be used for both
+ * stock and status icons. Like I said, I don't quite know how they could be
+ * different. So I am going to just keep it as it is, for now anyway, until I
+ * have the time to dig through this, or someone explains this stuff to me
+ * clearly.
+ * -- Sad
+ */
+ PidginStatusIconTheme *theme = create_icon_theme(window);
+ pidgin_stock_load_status_icon_theme(PIDGIN_STATUS_ICON_THEME(theme));
+ pidgin_stock_load_stock_icon_theme((PidginStockIconTheme *)theme);
+ pidgin_blist_refresh(purple_get_blist());
+ g_object_unref(theme);
+}
+
+#ifdef NOT_SADRUL
+static void
+save_icon_theme(GtkWidget *w, GtkWidget *window)
+{
+ /* TODO: SAVE! */
+ gtk_widget_destroy(window);
+}
+#endif
+
+static void
+close_icon_theme(GtkWidget *w, GtkWidget *window)
+{
+ gtk_widget_destroy(window);
+}
+
+static void
+stock_icon_selected(const char *filename, gpointer image)
+{
+ GError *error = NULL;
+ GdkPixbuf *scale;
+ int i;
+ GdkPixbuf *pixbuf;
+
+ if (!filename)
+ return;
+
+ pixbuf = gdk_pixbuf_new_from_file(filename, &error);
+ if (error || !pixbuf) {
+ purple_debug_error("theme-editor-icon", "Unable to load icon file '%s' (%s)\n",
+ filename, error ? error->message : "Reason unknown");
+ if (error)
+ g_error_free(error);
+ return;
+ }
+
+ scale = gdk_pixbuf_scale_simple(pixbuf, 16, 16, GDK_INTERP_BILINEAR);
+ gtk_image_set_from_pixbuf(GTK_IMAGE(image), scale);
+ g_object_unref(G_OBJECT(scale));
+
+ /* Update the size previews */
+ for (i = 0; stocksizes[i]; i++) {
+ int width, height;
+ GtkIconSize iconsize;
+ GtkWidget *prev = g_object_get_data(G_OBJECT(image), stocksizes[i]);
+ if (!prev)
+ continue;
+ iconsize = gtk_icon_size_from_name(stocksizes[i]);
+ gtk_icon_size_lookup(iconsize, &width, &height);
+ scale = gdk_pixbuf_scale_simple(pixbuf, width, height, GDK_INTERP_BILINEAR);
+ gtk_image_set_from_pixbuf(GTK_IMAGE(prev), scale);
+ g_object_unref(G_OBJECT(scale));
+ }
+
+ /* Save the original pixbuf so we can use it for resizing later */
+ g_object_set_data_full(G_OBJECT(image), "pixbuf", pixbuf,
+ (GDestroyNotify)g_object_unref);
+}
+
+static gboolean
+change_stock_image(GtkWidget *widget, GdkEventButton *event, GtkWidget *image)
+{
+ GtkWidget *win = pidgin_buddy_icon_chooser_new(GTK_WINDOW(gtk_widget_get_toplevel(widget)),
+ stock_icon_selected, image);
+ gtk_widget_show_all(win);
+
+ return TRUE;
+}
+
+void pidgin_icon_theme_edit(PurplePluginAction *unused)
+{
+ GtkWidget *dialog;
+ GtkWidget *box, *vbox;
+ GtkWidget *notebook;
+ GtkSizeGroup *sizegroup;
+ int s, i, j;
+ dialog = pidgin_create_dialog(_("Pidgin Icon Theme Editor"), 0, "theme-editor-icon", FALSE);
+ box = pidgin_dialog_get_vbox_with_properties(GTK_DIALOG(dialog), FALSE, PIDGIN_HIG_BOX_SPACE);
+
+ notebook = gtk_notebook_new();
+ gtk_box_pack_start(GTK_BOX(box), notebook, TRUE, TRUE, PIDGIN_HIG_BOX_SPACE);
+ sizegroup = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
+
+ for (s = 0; sections[s].heading; s++) {
+ const char *heading = sections[s].heading;
+
+ box = gtk_vbox_new(FALSE, 0);
+ gtk_notebook_append_page(GTK_NOTEBOOK(notebook), box, gtk_label_new(heading));
+
+ vbox = pidgin_make_frame(box, heading);
+ g_object_set_data(G_OBJECT(dialog), heading, vbox);
+
+ for (i = 0; sections[s].options[i].stockid; i++) {
+ const char *id = sections[s].options[i].stockid;
+ const char *text = _(sections[s].options[i].text);
+
+ GtkWidget *hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_CAT_SPACE);
+ GtkWidget *label = gtk_label_new(text);
+ GtkWidget *image = gtk_image_new_from_stock(id,
+ gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL));
+ GtkWidget *ebox = gtk_event_box_new();
+ gtk_container_add(GTK_CONTAINER(ebox), image);
+ gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
+
+ g_signal_connect(G_OBJECT(ebox), "button-press-event", G_CALLBACK(change_stock_image), image);
+ g_object_set_data(G_OBJECT(image), "property-name", (gpointer)id);
+
+ gtk_size_group_add_widget(sizegroup, label);
+ gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(hbox), ebox, FALSE, FALSE, 0);
+
+ for (j = 0; stocksizes[j]; j++) {
+ GtkWidget *sh;
+
+ if (!(sections[s].flags & (1 << j)))
+ continue;
+
+ sh = gtk_image_new_from_stock(id, gtk_icon_size_from_name(stocksizes[j]));
+ gtk_box_pack_start(GTK_BOX(hbox), sh, FALSE, FALSE, 0);
+ g_object_set_data(G_OBJECT(image), stocksizes[j], sh);
+ }
+
+ gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
+
+ g_object_set_data(G_OBJECT(vbox), id, image);
+ }
+ }
+
+#ifdef NOT_SADRUL
+ pidgin_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_SAVE, G_CALLBACK(save_icon_theme), dialog);
+#endif
+ pidgin_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_APPLY, G_CALLBACK(use_icon_theme), dialog);
+ pidgin_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_CLOSE, G_CALLBACK(close_icon_theme), dialog);
+ gtk_widget_show_all(dialog);
+ g_object_unref(sizegroup);
+}
+
diff --git a/pidgin/plugins/themeedit-icon.h b/pidgin/plugins/themeedit-icon.h
new file mode 100644
index 0000000000..fbc8e4ad5c
--- /dev/null
+++ b/pidgin/plugins/themeedit-icon.h
@@ -0,0 +1,28 @@
+/* Pidgin
+ *
+ * Pidgin is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#ifndef _THEMEEDIT_ICON_H_
+#define _THEMEEDIT_ICON_H_
+
+void pidgin_icon_theme_edit(PurplePluginAction *);
+
+#endif
+
diff --git a/pidgin/plugins/themeedit.c b/pidgin/plugins/themeedit.c
new file mode 100644
index 0000000000..f87892cca7
--- /dev/null
+++ b/pidgin/plugins/themeedit.c
@@ -0,0 +1,362 @@
+/* Pidgin
+ *
+ * Pidgin is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+#include "internal.h"
+#include "pidgin.h"
+#include "version.h"
+
+#include "theme-manager.h"
+
+#include "gtkblist.h"
+#include "gtkblist-theme.h"
+#include "gtkutils.h"
+#include "gtkplugin.h"
+
+#define PLUGIN_ID "gtk-theme-editor"
+
+#include "themeedit-icon.h"
+
+static gboolean
+prop_type_is_color(PidginBlistTheme *theme, const char *prop)
+{
+ PidginBlistThemeClass *klass = PIDGIN_BLIST_THEME_GET_CLASS(theme);
+ GParamSpec *spec = g_object_class_find_property(G_OBJECT_CLASS(klass), prop);
+
+ return G_IS_PARAM_SPEC_BOXED(spec);
+}
+
+#ifdef NOT_SADRUL
+static void
+save_blist_theme(GtkWidget *w, GtkWidget *window)
+{
+ /* TODO: SAVE! */
+ gtk_widget_destroy(window);
+}
+#endif
+
+static void
+close_blist_theme(GtkWidget *w, GtkWidget *window)
+{
+ gtk_widget_destroy(window);
+}
+
+static void
+theme_color_selected(GtkDialog *dialog, gint response, const char *prop)
+{
+ if (response == GTK_RESPONSE_OK) {
+ GdkColor color;
+ PidginBlistTheme *theme;
+
+ gtk_color_selection_get_current_color(GTK_COLOR_SELECTION(GTK_COLOR_SELECTION_DIALOG(dialog)->colorsel), &color);
+
+ theme = pidgin_blist_get_theme();
+
+ if (prop_type_is_color(theme, prop)) {
+ g_object_set(G_OBJECT(theme), prop, &color, NULL);
+ } else {
+ PidginThemeFont *font = NULL;
+ g_object_get(G_OBJECT(theme), prop, &font, NULL);
+ if (!font) {
+ font = pidgin_theme_font_new(NULL, &color);
+ g_object_set(G_OBJECT(theme), prop, font, NULL);
+ pidgin_theme_font_free(font);
+ } else {
+ pidgin_theme_font_set_color(font, &color);
+ }
+ }
+ pidgin_blist_set_theme(theme);
+ }
+
+ gtk_widget_destroy(GTK_WIDGET(dialog));
+}
+
+static void
+theme_font_face_selected(GtkWidget *dialog, gint response, gpointer font)
+{
+ if (response == GTK_RESPONSE_OK || response == GTK_RESPONSE_APPLY) {
+ const char *fontname = gtk_font_selection_dialog_get_font_name(GTK_FONT_SELECTION_DIALOG(dialog));
+ pidgin_theme_font_set_font_face(font, fontname);
+ pidgin_blist_refresh(purple_get_blist());
+ }
+ gtk_widget_destroy(dialog);
+}
+
+static void
+theme_font_select_face(GtkWidget *widget, gpointer prop)
+{
+ GtkWidget *dialog;
+ PidginBlistTheme *theme;
+ PidginThemeFont *font = NULL;
+ const char *face;
+
+ theme = pidgin_blist_get_theme();
+ g_object_get(G_OBJECT(theme), prop, &font, NULL);
+
+ if (!font) {
+ font = pidgin_theme_font_new(NULL, NULL);
+ g_object_set(G_OBJECT(theme), prop, font, NULL);
+ pidgin_theme_font_free(font);
+ g_object_get(G_OBJECT(theme), prop, &font, NULL);
+ }
+
+ face = pidgin_theme_font_get_font_face(font);
+ dialog = gtk_font_selection_dialog_new(_("Select Font"));
+ if (face && *face)
+ gtk_font_selection_set_font_name(GTK_FONT_SELECTION(GTK_FONT_SELECTION_DIALOG(dialog)->fontsel),
+ face);
+ g_signal_connect(G_OBJECT(dialog), "response", G_CALLBACK(theme_font_face_selected),
+ font);
+ gtk_widget_show_all(dialog);
+}
+
+static void
+theme_color_select(GtkWidget *widget, gpointer prop)
+{
+ GtkWidget *dialog;
+ PidginBlistTheme *theme;
+ const GdkColor *color = NULL;
+
+ theme = pidgin_blist_get_theme();
+
+ if (prop_type_is_color(theme, prop)) {
+ g_object_get(G_OBJECT(theme), prop, &color, NULL);
+ } else {
+ PidginThemeFont *pair = NULL;
+ g_object_get(G_OBJECT(theme), prop, &pair, NULL);
+ if (pair)
+ color = pidgin_theme_font_get_color(pair);
+ }
+
+ dialog = gtk_color_selection_dialog_new(_("Select Color"));
+ if (color)
+ gtk_color_selection_set_current_color(GTK_COLOR_SELECTION(GTK_COLOR_SELECTION_DIALOG(dialog)->colorsel),
+ color);
+ g_signal_connect(G_OBJECT(dialog), "response", G_CALLBACK(theme_color_selected),
+ prop);
+
+ gtk_widget_show_all(dialog);
+}
+
+static GtkWidget *
+pidgin_theme_create_color_selector(const char *text, const char *blurb, const char *prop,
+ GtkSizeGroup *sizegroup)
+{
+ GtkWidget *color;
+ GtkWidget *hbox, *label;
+
+ hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_CAT_SPACE);
+
+ label = gtk_label_new(_(text));
+ gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
+ gtk_size_group_add_widget(sizegroup, label);
+ gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
+#if GTK_CHECK_VERSION(2, 12, 0)
+ gtk_widget_set_tooltip_text(label, blurb);
+#endif
+
+ color = pidgin_pixbuf_button_from_stock("", GTK_STOCK_SELECT_COLOR,
+ PIDGIN_BUTTON_HORIZONTAL);
+ g_signal_connect(G_OBJECT(color), "clicked", G_CALLBACK(theme_color_select),
+ (gpointer)prop);
+ gtk_box_pack_start(GTK_BOX(hbox), color, FALSE, FALSE, 0);
+
+ return hbox;
+}
+
+static GtkWidget *
+pidgin_theme_create_font_selector(const char *text, const char *blurb, const char *prop,
+ GtkSizeGroup *sizegroup)
+{
+ GtkWidget *color, *font;
+ GtkWidget *hbox, *label;
+
+ hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_CAT_SPACE);
+
+ label = gtk_label_new(_(text));
+ gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
+ gtk_size_group_add_widget(sizegroup, label);
+ gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
+#if GTK_CHECK_VERSION(2, 12, 0)
+ gtk_widget_set_tooltip_text(label, blurb);
+#endif
+
+ font = pidgin_pixbuf_button_from_stock("", GTK_STOCK_SELECT_FONT,
+ PIDGIN_BUTTON_HORIZONTAL);
+ g_signal_connect(G_OBJECT(font), "clicked", G_CALLBACK(theme_font_select_face),
+ (gpointer)prop);
+ gtk_box_pack_start(GTK_BOX(hbox), font, FALSE, FALSE, 0);
+
+ color = pidgin_pixbuf_button_from_stock("", GTK_STOCK_SELECT_COLOR,
+ PIDGIN_BUTTON_HORIZONTAL);
+ g_signal_connect(G_OBJECT(color), "clicked", G_CALLBACK(theme_color_select),
+ (gpointer)prop);
+ gtk_box_pack_start(GTK_BOX(hbox), color, FALSE, FALSE, 0);
+
+ return hbox;
+}
+
+static void
+pidgin_blist_theme_edit(PurplePluginAction *unused)
+{
+ GtkWidget *dialog;
+ GtkWidget *box;
+ GtkSizeGroup *group;
+ PidginBlistTheme *theme;
+ GObjectClass *klass;
+ int i, j;
+ static struct {
+ const char *header;
+ const char *props[12];
+ } sections[] = {
+ {N_("Contact"), {
+ "contact-color",
+ "contact",
+ "online",
+ "away",
+ "offline",
+ "idle",
+ "message",
+ "message_nick_said",
+ "status",
+ NULL
+ }
+ },
+ {N_("Group"), {
+ "expanded-color",
+ "expanded-text",
+ "collapsed-color",
+ "collapsed-text",
+ NULL
+ }
+ },
+ { NULL, { } }
+ };
+
+ dialog = pidgin_create_dialog(_("Pidgin Buddylist Theme Editor"), 0, "theme-editor-blist", FALSE);
+ box = pidgin_dialog_get_vbox_with_properties(GTK_DIALOG(dialog), FALSE, PIDGIN_HIG_BOX_SPACE);
+
+ theme = pidgin_blist_get_theme();
+ if (!theme) {
+ theme = g_object_new(PIDGIN_TYPE_BLIST_THEME, "type", "blist",
+ "author", getlogin(),
+ NULL);
+ pidgin_blist_set_theme(theme);
+ }
+ klass = G_OBJECT_CLASS(PIDGIN_BLIST_THEME_GET_CLASS(theme));
+
+ group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
+ for (i = 0; sections[i].header; i++) {
+ GtkWidget *vbox;
+ GtkWidget *hbox;
+ GParamSpec *spec;
+
+ vbox = pidgin_make_frame(box, _(sections[i].header));
+ for (j = 0; sections[i].props[j]; j++) {
+ const char *label;
+ const char *blurb;
+ spec = g_object_class_find_property(klass, sections[i].props[j]);
+ label = g_param_spec_get_nick(spec);
+ blurb = g_param_spec_get_blurb(spec);
+ if (G_IS_PARAM_SPEC_BOXED(spec)) {
+ hbox = pidgin_theme_create_color_selector(label, blurb,
+ sections[i].props[j], group);
+ gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
+ } else {
+ hbox = pidgin_theme_create_font_selector(label, blurb,
+ sections[i].props[j], group);
+ gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
+ }
+ }
+ }
+
+ gtk_dialog_set_has_separator(GTK_DIALOG(dialog), TRUE);
+#ifdef NOT_SADRUL
+ pidgin_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_SAVE, G_CALLBACK(save_blist_theme), dialog);
+#endif
+ pidgin_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_CLOSE, G_CALLBACK(close_blist_theme), dialog);
+
+ gtk_widget_show_all(dialog);
+
+ g_object_unref(group);
+}
+
+static gboolean
+plugin_load(PurplePlugin *plugin)
+{
+ return TRUE;
+}
+
+static GList *
+actions(PurplePlugin *plugin, gpointer context)
+{
+ GList *l = NULL;
+ PurplePluginAction *act = NULL;
+
+ act = purple_plugin_action_new(_("Edit Buddylist Theme"), pidgin_blist_theme_edit);
+ l = g_list_append(l, act);
+ act = purple_plugin_action_new(_("Edit Icon Theme"), pidgin_icon_theme_edit);
+ l = g_list_append(l, act);
+
+ return l;
+}
+
+static PurplePluginInfo info =
+{
+ PURPLE_PLUGIN_MAGIC,
+ PURPLE_MAJOR_VERSION,
+ PURPLE_MINOR_VERSION,
+ PURPLE_PLUGIN_STANDARD, /**< type */
+ PIDGIN_PLUGIN_TYPE, /**< ui_requirement */
+ 0, /**< flags */
+ NULL, /**< dependencies */
+ PURPLE_PRIORITY_DEFAULT, /**< priority */
+
+ PLUGIN_ID, /**< id */
+ N_("Pidgin Theme Editor"), /**< name */
+ DISPLAY_VERSION, /**< version */
+ /** summary */
+ N_("Pidgin Theme Editor."),
+ /** description */
+ N_("Pidgin Theme Editor"),
+ "Sadrul Habib Chowdhury <imadil@gmail.com>", /**< author */
+ PURPLE_WEBSITE, /**< homepage */
+
+ plugin_load, /**< load */
+ NULL, /**< unload */
+ NULL, /**< destroy */
+
+ NULL, /**< ui_info */
+ NULL, /**< extra_info */
+ NULL,
+ actions,
+
+ /* padding */
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static void
+init_plugin(PurplePlugin *plugin)
+{
+}
+
+PURPLE_INIT_PLUGIN(themeeditor, init_plugin, info)
diff --git a/pidgin/plugins/ticker/gtkticker.c b/pidgin/plugins/ticker/gtkticker.c
index 1cdf7ad132..35ea02c239 100644
--- a/pidgin/plugins/ticker/gtkticker.c
+++ b/pidgin/plugins/ticker/gtkticker.c
@@ -41,7 +41,7 @@ static void gtk_ticker_forall (GtkContainer *container,
gboolean include_internals,
GtkCallback callback,
gpointer callback_data);
-static GtkType gtk_ticker_child_type (GtkContainer *container);
+static GType gtk_ticker_child_type (GtkContainer *container);
static GtkContainerClass *parent_class = NULL;
@@ -97,7 +97,7 @@ static void gtk_ticker_class_init (GtkTickerClass *class)
widget_class = (GtkWidgetClass*) class;
container_class = (GtkContainerClass*) class;
- parent_class = gtk_type_class (GTK_TYPE_CONTAINER);
+ parent_class = g_type_class_ref (GTK_TYPE_CONTAINER);
gobject_class->finalize = gtk_ticker_finalize;
@@ -112,7 +112,7 @@ static void gtk_ticker_class_init (GtkTickerClass *class)
container_class->child_type = gtk_ticker_child_type;
}
-static GtkType gtk_ticker_child_type (GtkContainer *container)
+static GType gtk_ticker_child_type (GtkContainer *container)
{
return GTK_TYPE_WIDGET;
}
diff --git a/pidgin/plugins/ticker/gtkticker.h b/pidgin/plugins/ticker/gtkticker.h
index 7f803d15c8..7fc4f476e1 100644
--- a/pidgin/plugins/ticker/gtkticker.h
+++ b/pidgin/plugins/ticker/gtkticker.h
@@ -26,19 +26,18 @@
#include <gdk/gdk.h>
-#include <gtk/gtkcontainer.h>
-#include <gtk/gtkmain.h>
+#include <gtk/gtk.h>
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
-#define GTK_TYPE_TICKER (gtk_ticker_get_type ())
-#define GTK_TICKER(obj) (GTK_CHECK_CAST ((obj), GTK_TYPE_TICKER, GtkTicker))
-#define GTK_TICKER_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_TICKER, GtkTickerClass))
-#define GTK_IS_TICKER(obj) (GTK_CHECK_TYPE ((obj), GTK_TYPE_TICKER))
-#define GTK_IS_TICKER_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_TICKER))
+#define GTK_TYPE_TICKER (gtk_ticker_get_type())
+#define GTK_TICKER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GTK_TYPE_TICKER, GtkTicker))
+#define GTK_TICKER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GTK_TYPE_TICKER, GtkTickerClass))
+#define GTK_IS_TICKER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GTK_TYPE_TICKER))
+#define GTK_IS_TICKER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GTK_TYPE_TICKER))
typedef struct _GtkTicker GtkTicker;
@@ -73,7 +72,7 @@ struct _GtkTickerChild
};
-GtkType gtk_ticker_get_type (void);
+GType gtk_ticker_get_type (void);
GtkWidget* gtk_ticker_new (void);
void gtk_ticker_add (GtkTicker *ticker,
GtkWidget *widget);
diff --git a/pidgin/plugins/ticker/ticker.c b/pidgin/plugins/ticker/ticker.c
index 284c09b417..9682e50425 100644
--- a/pidgin/plugins/ticker/ticker.c
+++ b/pidgin/plugins/ticker/ticker.c
@@ -37,6 +37,7 @@
#include "gtkblist.h"
#include "gtkplugin.h"
#include "gtkutils.h"
+#include "pidginstock.h"
#include "gtkticker.h"
@@ -53,7 +54,7 @@ typedef struct {
guint timeout;
} TickerData;
-GList *tickerbuds = NULL;
+static GList *tickerbuds = NULL;
static void buddy_ticker_update_contact(PurpleContact *contact);
@@ -91,7 +92,10 @@ static gboolean buddy_click_cb(GtkWidget *widget, GdkEventButton *event, gpointe
PurpleContact *contact = user_data;
PurpleBuddy *b = purple_contact_get_priority_buddy(contact);
- purple_conversation_new(PURPLE_CONV_TYPE_IM, b->account, b->name);
+ PurpleConversation *conv = purple_conversation_new(PURPLE_CONV_TYPE_IM,
+ purple_buddy_get_account(b),
+ purple_buddy_get_name(b));
+ purple_conversation_present(conv);
return TRUE;
}
@@ -105,20 +109,27 @@ static TickerData *buddy_ticker_find_contact(PurpleContact *c) {
return NULL;
}
-static void buddy_ticker_set_pixmap(PurpleContact *c) {
+static void buddy_ticker_set_pixmap(PurpleContact *c)
+{
TickerData *td = buddy_ticker_find_contact(c);
- GdkPixbuf *pixbuf;
+ PurpleBuddy *buddy;
+ PurplePresence *presence;
+ const char *stock;
if(!td)
return;
- if(!td->icon)
+ buddy = purple_contact_get_priority_buddy(c);
+ presence = purple_buddy_get_presence(buddy);
+ stock = pidgin_stock_id_from_presence(presence);
+ if(!td->icon) {
td->icon = gtk_image_new();
-
- pixbuf = pidgin_blist_get_status_icon((PurpleBlistNode*)c,
- PIDGIN_STATUS_ICON_SMALL);
- gtk_image_set_from_pixbuf(GTK_IMAGE(td->icon), pixbuf);
- g_object_unref(G_OBJECT(pixbuf));
+ g_object_set(G_OBJECT(td->icon), "stock", stock,
+ "icon-size", gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_MICROSCOPIC),
+ NULL);
+ } else {
+ g_object_set(G_OBJECT(td->icon), "stock", stock, NULL);
+ }
}
static gboolean buddy_ticker_set_pixmap_cb(gpointer data) {
@@ -217,20 +228,25 @@ static void buddy_ticker_remove_buddy(PurpleBuddy *b) {
static void buddy_ticker_show(void)
{
- PurpleBuddyList *list = purple_get_blist();
PurpleBlistNode *gnode, *cnode, *bnode;
PurpleBuddy *b;
- if(!list)
- return;
-
- for(gnode = list->root; gnode; gnode = gnode->next) {
+ for(gnode = purple_blist_get_root();
+ gnode;
+ gnode = purple_blist_node_get_sibling_next(gnode))
+ {
if(!PURPLE_BLIST_NODE_IS_GROUP(gnode))
continue;
- for(cnode = gnode->child; cnode; cnode = cnode->next) {
+ for(cnode = purple_blist_node_get_first_child(gnode);
+ cnode;
+ cnode = purple_blist_node_get_sibling_next(cnode))
+ {
if(!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
continue;
- for(bnode = cnode->child; bnode; bnode = bnode->next) {
+ for(bnode = purple_blist_node_get_first_child(cnode);
+ bnode;
+ bnode = purple_blist_node_get_sibling_next(bnode))
+ {
if(!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
continue;
b = (PurpleBuddy *)bnode;
diff --git a/pidgin/plugins/win32/transparency/win2ktrans.c b/pidgin/plugins/win32/transparency/win2ktrans.c
index bec1f1f3b4..9b31e7d3c1 100644
--- a/pidgin/plugins/win32/transparency/win2ktrans.c
+++ b/pidgin/plugins/win32/transparency/win2ktrans.c
@@ -182,7 +182,7 @@ static GtkWidget *wintrans_slider(GtkWidget *win) {
/* On slider val change, update window's transparency level */
g_signal_connect(GTK_OBJECT(slider), "value-changed",
- GTK_SIGNAL_FUNC(change_alpha), win);
+ G_CALLBACK(change_alpha), win);
gtk_box_pack_start(GTK_BOX(hbox), slider, FALSE, TRUE, 5);
@@ -563,7 +563,7 @@ static GtkWidget *get_config_frame(PurplePlugin *plugin) {
button = pidgin_prefs_checkbox(_("_IM window transparency"),
OPT_WINTRANS_IM_ENABLED, imtransbox);
g_signal_connect(GTK_OBJECT(button), "clicked",
- GTK_SIGNAL_FUNC(update_convs_wintrans),
+ G_CALLBACK(update_convs_wintrans),
(gpointer) OPT_WINTRANS_IM_ENABLED);
trans_box = gtk_vbox_new(FALSE, 18);
@@ -572,12 +572,12 @@ static GtkWidget *get_config_frame(PurplePlugin *plugin) {
gtk_widget_show(trans_box);
g_signal_connect(GTK_OBJECT(button), "clicked",
- GTK_SIGNAL_FUNC(pidgin_toggle_sensitive), trans_box);
+ G_CALLBACK(pidgin_toggle_sensitive), trans_box);
button = pidgin_prefs_checkbox(_("_Show slider bar in IM window"),
OPT_WINTRANS_IM_SLIDER, trans_box);
g_signal_connect(GTK_OBJECT(button), "clicked",
- GTK_SIGNAL_FUNC(update_convs_wintrans),
+ G_CALLBACK(update_convs_wintrans),
(gpointer) OPT_WINTRANS_IM_SLIDER);
button = pidgin_prefs_checkbox(
@@ -587,7 +587,7 @@ static GtkWidget *get_config_frame(PurplePlugin *plugin) {
button = pidgin_prefs_checkbox(_("Always on top"), OPT_WINTRANS_IM_ONTOP,
trans_box);
g_signal_connect(GTK_OBJECT(button), "clicked",
- GTK_SIGNAL_FUNC(update_convs_wintrans),
+ G_CALLBACK(update_convs_wintrans),
(gpointer) OPT_WINTRANS_IM_ONTOP);
gtk_box_pack_start(GTK_BOX(imtransbox), trans_box, FALSE, FALSE, 5);
@@ -604,9 +604,9 @@ static GtkWidget *get_config_frame(PurplePlugin *plugin) {
gtk_widget_set_usize(GTK_WIDGET(slider), 200, -1);
g_signal_connect(GTK_OBJECT(slider), "value-changed",
- GTK_SIGNAL_FUNC(alpha_change), NULL);
+ G_CALLBACK(alpha_change), NULL);
g_signal_connect(GTK_OBJECT(slider), "focus-out-event",
- GTK_SIGNAL_FUNC(alpha_pref_set_int),
+ G_CALLBACK(alpha_pref_set_int),
(gpointer) OPT_WINTRANS_IM_ALPHA);
gtk_box_pack_start(GTK_BOX(hbox), slider, FALSE, TRUE, 5);
@@ -620,7 +620,7 @@ static GtkWidget *get_config_frame(PurplePlugin *plugin) {
button = pidgin_prefs_checkbox(_("_Buddy List window transparency"),
OPT_WINTRANS_BL_ENABLED, bltransbox);
g_signal_connect(GTK_OBJECT(button), "clicked",
- GTK_SIGNAL_FUNC(set_blist_trans),
+ G_CALLBACK(set_blist_trans),
(gpointer) OPT_WINTRANS_BL_ENABLED);
trans_box = gtk_vbox_new(FALSE, 18);
@@ -628,14 +628,14 @@ static GtkWidget *get_config_frame(PurplePlugin *plugin) {
gtk_widget_set_sensitive(GTK_WIDGET(trans_box), FALSE);
gtk_widget_show(trans_box);
g_signal_connect(GTK_OBJECT(button), "clicked",
- GTK_SIGNAL_FUNC(pidgin_toggle_sensitive), trans_box);
+ G_CALLBACK(pidgin_toggle_sensitive), trans_box);
button = pidgin_prefs_checkbox(
_("Remove Buddy List window transparency on focus"),
OPT_WINTRANS_BL_ONFOCUS, trans_box);
button = pidgin_prefs_checkbox(_("Always on top"), OPT_WINTRANS_BL_ONTOP,
trans_box);
g_signal_connect(GTK_OBJECT(button), "clicked",
- GTK_SIGNAL_FUNC(set_blist_trans),
+ G_CALLBACK(set_blist_trans),
(gpointer) OPT_WINTRANS_BL_ONTOP);
gtk_box_pack_start(GTK_BOX(bltransbox), trans_box, FALSE, FALSE, 5);
@@ -652,9 +652,9 @@ static GtkWidget *get_config_frame(PurplePlugin *plugin) {
gtk_widget_set_usize(GTK_WIDGET(slider), 200, -1);
g_signal_connect(GTK_OBJECT(slider), "value-changed",
- GTK_SIGNAL_FUNC(bl_alpha_change), NULL);
+ G_CALLBACK(bl_alpha_change), NULL);
g_signal_connect(GTK_OBJECT(slider), "focus-out-event",
- GTK_SIGNAL_FUNC(alpha_pref_set_int),
+ G_CALLBACK(alpha_pref_set_int),
(gpointer) OPT_WINTRANS_BL_ALPHA);
gtk_box_pack_start(GTK_BOX(hbox), slider, FALSE, TRUE, 5);
diff --git a/pidgin/plugins/win32/winprefs/gtkappbar.c b/pidgin/plugins/win32/winprefs/gtkappbar.c
index ef8d6e1906..c98d9b40e3 100644
--- a/pidgin/plugins/win32/winprefs/gtkappbar.c
+++ b/pidgin/plugins/win32/winprefs/gtkappbar.c
@@ -376,7 +376,7 @@ static GdkFilterReturn wnd_poschanged(GtkAppBar *ab, GdkXEvent *xevent) {
APPBARDATA abd;
MSG *msg = (MSG*)xevent;
- purple_debug(PURPLE_DEBUG_INFO, "gtkappbar", "wnd_poschanged\n");
+ purple_debug(PURPLE_DEBUG_MISC, "gtkappbar", "wnd_poschanged\n");
abd.hWnd = msg->hwnd;
abd.cbSize = sizeof(APPBARDATA);
@@ -391,7 +391,7 @@ static GdkFilterReturn wnd_poschanging(GtkAppBar *ab, GdkXEvent *xevent) {
MSG *msg = (MSG*)xevent;
WINDOWPOS *wpos = (WINDOWPOS*)msg->lParam;
- purple_debug(PURPLE_DEBUG_INFO, "gtkappbar", "wnd_poschanging\n");
+ purple_debug(PURPLE_DEBUG_MISC, "gtkappbar", "wnd_poschanging\n");
if(ab->docked || ab->docking) {
wpos->x = ab->docked_rect.left;
@@ -526,7 +526,7 @@ static GdkFilterReturn gtk_appbar_callback(GtkAppBar *ab, GdkXEvent *xevent) {
break;
case ABN_FULLSCREENAPP:
- purple_debug(PURPLE_DEBUG_INFO, "gtkappbar", "gtk_appbar_callback: ABN_FULLSCREENAPP: %d\n", (BOOL)msg->lParam);
+ purple_debug(PURPLE_DEBUG_MISC, "gtkappbar", "gtk_appbar_callback: ABN_FULLSCREENAPP: %d\n", (BOOL)msg->lParam);
if (!ab->iconized && ab->docked) {
if ((BOOL)msg->lParam) {
SetWindowPos(msg->hwnd, HWND_BOTTOM, 0, 0, 0, 0,
diff --git a/pidgin/plugins/xmppconsole.c b/pidgin/plugins/xmppconsole.c
index 1de520e082..19aedd44a4 100644
--- a/pidgin/plugins/xmppconsole.c
+++ b/pidgin/plugins/xmppconsole.c
@@ -62,58 +62,62 @@ xmlnode_to_pretty_str(xmlnode *node, int *len, int depth)
g_return_val_if_fail(node != NULL, NULL);
- if(pretty && depth) {
+ if (pretty && depth) {
tab = g_strnfill(depth, '\t');
text = g_string_append(text, tab);
}
node_name = g_markup_escape_text(node->name, -1);
- g_string_append_printf(text, "<font color='"
- BRACKET_COLOR "'>&lt;</font><font color='"
- TAG_COLOR "'><b>%s</b></font>", node_name);
+ g_string_append_printf(text,
+ "<font color='" BRACKET_COLOR "'>&lt;</font>"
+ "<font color='" TAG_COLOR "'><b>%s</b></font>",
+ node_name);
if (node->xmlns) {
- if((!node->parent ||
- !node->parent->xmlns ||
- strcmp(node->xmlns, node->parent->xmlns)) &&
- strcmp(node->xmlns, "jabber:client"))
+ if ((!node->parent ||
+ !node->parent->xmlns ||
+ strcmp(node->xmlns, node->parent->xmlns)) &&
+ strcmp(node->xmlns, "jabber:client"))
{
char *xmlns = g_markup_escape_text(node->xmlns, -1);
- g_string_append_printf(text, " <font color='"
- ATTR_NAME_COLOR "'><b>xmlns</b></font>='<font color='"
- XMLNS_COLOR "'><b>%s</b></font>'", xmlns);
+ g_string_append_printf(text,
+ " <font color='" ATTR_NAME_COLOR "'><b>xmlns</b></font>="
+ "'<font color='" XMLNS_COLOR "'><b>%s</b></font>'",
+ xmlns);
g_free(xmlns);
}
}
- for(c = node->child; c; c = c->next)
+ for (c = node->child; c; c = c->next)
{
- if(c->type == XMLNODE_TYPE_ATTRIB) {
+ if (c->type == XMLNODE_TYPE_ATTRIB) {
esc = g_markup_escape_text(c->name, -1);
esc2 = g_markup_escape_text(c->data, -1);
- g_string_append_printf(text, " <font color='"
- ATTR_NAME_COLOR "'><b>%s</b></font>='<font color='"
- ATTR_VALUE_COLOR "'>%s</font>'", esc, esc2);
+ g_string_append_printf(text,
+ " <font color='" ATTR_NAME_COLOR "'><b>%s</b></font>="
+ "'<font color='" ATTR_VALUE_COLOR "'>%s</font>'",
+ esc, esc2);
g_free(esc);
g_free(esc2);
- } else if(c->type == XMLNODE_TYPE_TAG || c->type == XMLNODE_TYPE_DATA) {
- if(c->type == XMLNODE_TYPE_DATA)
+ } else if (c->type == XMLNODE_TYPE_TAG || c->type == XMLNODE_TYPE_DATA) {
+ if (c->type == XMLNODE_TYPE_DATA)
pretty = FALSE;
need_end = TRUE;
}
}
- if(need_end) {
- g_string_append_printf(text,
- "<font color='"BRACKET_COLOR"'>&gt;</font>%s", pretty ? "<br>" : "");
+ if (need_end) {
+ g_string_append_printf(text,
+ "<font color='"BRACKET_COLOR"'>&gt;</font>%s",
+ pretty ? "<br>" : "");
- for(c = node->child; c; c = c->next)
+ for (c = node->child; c; c = c->next)
{
- if(c->type == XMLNODE_TYPE_TAG) {
+ if (c->type == XMLNODE_TYPE_TAG) {
int esc_len;
esc = xmlnode_to_pretty_str(c, &esc_len, depth+1);
text = g_string_append_len(text, esc, esc_len);
g_free(esc);
- } else if(c->type == XMLNODE_TYPE_DATA && c->data_sz > 0) {
+ } else if (c->type == XMLNODE_TYPE_DATA && c->data_sz > 0) {
esc = g_markup_escape_text(c->data, c->data_sz);
text = g_string_append(text, esc);
g_free(esc);
@@ -122,11 +126,14 @@ xmlnode_to_pretty_str(xmlnode *node, int *len, int depth)
if(tab && pretty)
text = g_string_append(text, tab);
- g_string_append_printf(text, "<font color='"BRACKET_COLOR"'>&lt;</font>/<font color='"
- TAG_COLOR"'><b>%s</b></font><font color='"BRACKET_COLOR
- "'>&gt;</font><br>", node_name);
+ g_string_append_printf(text,
+ "<font color='" BRACKET_COLOR "'>&lt;</font>/"
+ "<font color='" TAG_COLOR "'><b>%s</b></font>"
+ "<font color='" BRACKET_COLOR "'>&gt;</font><br>",
+ node_name);
} else {
- g_string_append_printf(text, "/<font color='"BRACKET_COLOR"'>&gt;</font><br>");
+ g_string_append_printf(text,
+ "/<font color='" BRACKET_COLOR "'>&gt;</font><br>");
}
g_free(node_name);
@@ -163,10 +170,10 @@ xmlnode_sent_cb(PurpleConnection *gc, char **packet, gpointer null)
if (!console || console->gc != gc)
return;
node = xmlnode_from_str(*packet, -1);
-
+
if (!node)
return;
-
+
str = xmlnode_to_pretty_str(node, NULL, 0);
formatted = g_strdup_printf("<body bgcolor='#dcecc4'><pre>%s</pre></body>", str);
gtk_imhtml_append_text(GTK_IMHTML(console->imhtml), formatted, 0);
@@ -204,37 +211,35 @@ static void message_send_cb(GtkWidget *widget, gpointer p)
static void entry_changed_cb(GtkTextBuffer *buffer, void *data)
{
char *xmlstr, *str;
- GtkTextIter iter;
- int wrapped_lines;
- int lines;
- GdkRectangle oneline;
- int height;
- int pad_top, pad_inside, pad_bottom;
+ GtkTextIter iter;
+ int wrapped_lines;
+ int lines;
+ GdkRectangle oneline;
+ int height;
+ int pad_top, pad_inside, pad_bottom;
GtkTextIter start, end;
xmlnode *node;
-
- wrapped_lines = 1;
- gtk_text_buffer_get_start_iter(buffer, &iter);
- gtk_text_view_get_iter_location(GTK_TEXT_VIEW(console->entry), &iter, &oneline);
- while (gtk_text_view_forward_display_line(GTK_TEXT_VIEW(console->entry), &iter))
- wrapped_lines++;
- lines = gtk_text_buffer_get_line_count(buffer);
+ wrapped_lines = 1;
+ gtk_text_buffer_get_start_iter(buffer, &iter);
+ gtk_text_view_get_iter_location(GTK_TEXT_VIEW(console->entry), &iter, &oneline);
+ while (gtk_text_view_forward_display_line(GTK_TEXT_VIEW(console->entry), &iter))
+ wrapped_lines++;
- /* Show a maximum of 64 lines */
- lines = MIN(lines, 6);
- wrapped_lines = MIN(wrapped_lines, 6);
+ lines = gtk_text_buffer_get_line_count(buffer);
- pad_top = gtk_text_view_get_pixels_above_lines(GTK_TEXT_VIEW(console->entry));
- pad_bottom = gtk_text_view_get_pixels_below_lines(GTK_TEXT_VIEW(console->entry));
- pad_inside = gtk_text_view_get_pixels_inside_wrap(GTK_TEXT_VIEW(console->entry));
+ /* Show a maximum of 64 lines */
+ lines = MIN(lines, 6);
+ wrapped_lines = MIN(wrapped_lines, 6);
- height = (oneline.height + pad_top + pad_bottom) * lines;
- height += (oneline.height + pad_inside) * (wrapped_lines - lines);
-
- gtk_widget_set_size_request(console->sw, -1, height+6);
+ pad_top = gtk_text_view_get_pixels_above_lines(GTK_TEXT_VIEW(console->entry));
+ pad_bottom = gtk_text_view_get_pixels_below_lines(GTK_TEXT_VIEW(console->entry));
+ pad_inside = gtk_text_view_get_pixels_inside_wrap(GTK_TEXT_VIEW(console->entry));
+ height = (oneline.height + pad_top + pad_bottom) * lines;
+ height += (oneline.height + pad_inside) * (wrapped_lines - lines);
+ gtk_widget_set_size_request(console->sw, -1, height + 6);
gtk_text_buffer_get_start_iter(buffer, &start);
gtk_text_buffer_get_end_iter(buffer, &end);
@@ -287,7 +292,7 @@ static void iq_clicked_cb(GtkWidget *w, gpointer nul)
to_entry = gtk_entry_new();
gtk_entry_set_activates_default (GTK_ENTRY (to_entry), TRUE);
gtk_box_pack_start(GTK_BOX(hbox), to_entry, FALSE, FALSE, 0);
-
+
hbox = gtk_hbox_new(FALSE, 3);
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), hbox, FALSE, FALSE, 0);
label = gtk_label_new("Type:");
@@ -302,7 +307,7 @@ static void iq_clicked_cb(GtkWidget *w, gpointer nul)
gtk_combo_box_append_text(GTK_COMBO_BOX(type_combo), "error");
gtk_combo_box_set_active(GTK_COMBO_BOX(type_combo), 0);
gtk_box_pack_start(GTK_BOX(hbox), type_combo, FALSE, FALSE, 0);
-
+
gtk_widget_show_all(GTK_DIALOG(dialog)->vbox);
result = gtk_dialog_run(GTK_DIALOG(dialog));
@@ -310,16 +315,16 @@ static void iq_clicked_cb(GtkWidget *w, gpointer nul)
gtk_widget_destroy(dialog);
return;
}
-
+
to = gtk_entry_get_text(GTK_ENTRY(to_entry));
- stanza = g_strdup_printf("<iq %s%s%s id='console%x' type='%s'></iq>",
+ stanza = g_strdup_printf("<iq %s%s%s id='console%x' type='%s'></iq>",
to && *to ? "to='" : "",
to && *to ? to : "",
to && *to ? "'" : "",
g_random_int(),
gtk_combo_box_get_active_text(GTK_COMBO_BOX(type_combo)));
-
+
buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(console->entry));
gtk_text_buffer_set_text(buffer, stanza, -1);
gtk_text_buffer_get_iter_at_offset(buffer, &iter, strstr(stanza, "</iq>") - stanza);
@@ -328,25 +333,24 @@ static void iq_clicked_cb(GtkWidget *w, gpointer nul)
gtk_widget_destroy(dialog);
g_object_unref(sg);
-
}
static void presence_clicked_cb(GtkWidget *w, gpointer nul)
{
- GtkWidget *hbox,
- *to_entry,
- *status_entry,
- *priority_entry,
- *label,
- *show_combo,
- *type_combo;
+ GtkWidget *hbox;
+ GtkWidget *to_entry;
+ GtkWidget *status_entry;
+ GtkWidget *priority_entry;
+ GtkWidget *label;
+ GtkWidget *show_combo;
+ GtkWidget *type_combo;
GtkSizeGroup *sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
GtkTextIter iter;
GtkTextBuffer *buffer;
const char *to, *type, *status, *show, *priority;
int result;
char *stanza;
-
+
GtkWidget *dialog = gtk_dialog_new_with_buttons("<presence/>",
GTK_WINDOW(console->window),
GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
@@ -370,7 +374,7 @@ static void presence_clicked_cb(GtkWidget *w, gpointer nul)
to_entry = gtk_entry_new();
gtk_entry_set_activates_default (GTK_ENTRY (to_entry), TRUE);
gtk_box_pack_start(GTK_BOX(hbox), to_entry, FALSE, FALSE, 0);
-
+
hbox = gtk_hbox_new(FALSE, 3);
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), hbox, FALSE, FALSE, 0);
label = gtk_label_new("Type:");
@@ -417,7 +421,6 @@ static void presence_clicked_cb(GtkWidget *w, gpointer nul)
gtk_entry_set_activates_default (GTK_ENTRY (status_entry), TRUE);
gtk_box_pack_start(GTK_BOX(hbox), status_entry, FALSE, FALSE, 0);
-
hbox = gtk_hbox_new(FALSE, 3);
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), hbox, FALSE, FALSE, 0);
@@ -430,7 +433,6 @@ static void presence_clicked_cb(GtkWidget *w, gpointer nul)
gtk_spin_button_set_value(GTK_SPIN_BUTTON(priority_entry), 0);
gtk_box_pack_start(GTK_BOX(hbox), priority_entry, FALSE, FALSE, 0);
-
gtk_widget_show_all(GTK_DIALOG(dialog)->vbox);
result = gtk_dialog_run(GTK_DIALOG(dialog));
@@ -438,7 +440,7 @@ static void presence_clicked_cb(GtkWidget *w, gpointer nul)
gtk_widget_destroy(dialog);
return;
}
-
+
to = gtk_entry_get_text(GTK_ENTRY(to_entry));
type = gtk_combo_box_get_active_text(GTK_COMBO_BOX(type_combo));
if (!strcmp(type, "default"))
@@ -451,32 +453,30 @@ static void presence_clicked_cb(GtkWidget *w, gpointer nul)
if (!strcmp(priority, "0"))
priority = "";
+ stanza = g_strdup_printf("<presence %s%s%s id='console%x' %s%s%s>"
+ "%s%s%s%s%s%s%s%s%s"
+ "</presence>",
+ *to ? "to='" : "",
+ *to ? to : "",
+ *to ? "'" : "",
+ g_random_int(),
+ *type ? "type='" : "",
+ *type ? type : "",
+ *type ? "'" : "",
+
+ *show ? "<show>" : "",
+ *show ? show : "",
+ *show ? "</show>" : "",
+
+ *status ? "<status>" : "",
+ *status ? status : "",
+ *status ? "</status>" : "",
+
+ *priority ? "<priority>" : "",
+ *priority ? priority : "",
+ *priority ? "</priority>" : "");
- stanza = g_strdup_printf("<presence %s%s%s id='console%x' %s%s%s>"
- "%s%s%s%s%s%s%s%s%s"
- "</presence>",
- *to ? "to='" : "",
- *to ? to : "",
- *to ? "'" : "",
- g_random_int(),
-
- *type ? "type='" : "",
- *type ? type : "",
- *type ? "'" : "",
-
- *show ? "<show>" : "",
- *show ? show : "",
- *show ? "</show>" : "",
-
- *status ? "<status>" : "",
- *status ? status : "",
- *status ? "</status>" : "",
-
- *priority ? "<priority>" : "",
- *priority ? priority : "",
- *priority ? "</priority>" : "");
-
buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(console->entry));
gtk_text_buffer_set_text(buffer, stanza, -1);
gtk_text_buffer_get_iter_at_offset(buffer, &iter, strstr(stanza, "</presence>") - stanza);
@@ -489,13 +489,13 @@ static void presence_clicked_cb(GtkWidget *w, gpointer nul)
static void message_clicked_cb(GtkWidget *w, gpointer nul)
{
- GtkWidget *hbox,
- *to_entry,
- *body_entry,
- *thread_entry,
- *subject_entry,
- *label,
- *type_combo;
+ GtkWidget *hbox;
+ GtkWidget *to_entry;
+ GtkWidget *body_entry;
+ GtkWidget *thread_entry;
+ GtkWidget *subject_entry;
+ GtkWidget *label;
+ GtkWidget *type_combo;
GtkSizeGroup *sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
GtkTextIter iter;
GtkTextBuffer *buffer;
@@ -554,7 +554,6 @@ static void message_clicked_cb(GtkWidget *w, gpointer nul)
gtk_entry_set_activates_default (GTK_ENTRY (body_entry), TRUE);
gtk_box_pack_start(GTK_BOX(hbox), body_entry, FALSE, FALSE, 0);
-
hbox = gtk_hbox_new(FALSE, 3);
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), hbox, FALSE, FALSE, 0);
@@ -578,7 +577,7 @@ static void message_clicked_cb(GtkWidget *w, gpointer nul)
thread_entry = gtk_entry_new();
gtk_entry_set_activates_default (GTK_ENTRY (thread_entry), TRUE);
gtk_box_pack_start(GTK_BOX(hbox), thread_entry, FALSE, FALSE, 0);
-
+
gtk_widget_show_all(GTK_DIALOG(dialog)->vbox);
result = gtk_dialog_run(GTK_DIALOG(dialog));
@@ -586,34 +585,34 @@ static void message_clicked_cb(GtkWidget *w, gpointer nul)
gtk_widget_destroy(dialog);
return;
}
-
+
to = gtk_entry_get_text(GTK_ENTRY(to_entry));
body = gtk_entry_get_text(GTK_ENTRY(body_entry));
thread = gtk_entry_get_text(GTK_ENTRY(thread_entry));
subject = gtk_entry_get_text(GTK_ENTRY(subject_entry));
stanza = g_strdup_printf("<message %s%s%s id='console%x' type='%s'>"
- "%s%s%s%s%s%s%s%s%s"
- "</message>",
-
- *to ? "to='" : "",
- *to ? to : "",
- *to ? "'" : "",
- g_random_int(),
- gtk_combo_box_get_active_text(GTK_COMBO_BOX(type_combo)),
-
- *body ? "<body>" : "",
- *body ? body : "",
- *body ? "</body>" : "",
-
- *subject ? "<subject>" : "",
- *subject ? subject : "",
- *subject ? "</subject>" : "",
-
- *thread ? "<thread>" : "",
- *thread ? thread : "",
- *thread ? "</thread>" : "");
-
+ "%s%s%s%s%s%s%s%s%s"
+ "</message>",
+
+ *to ? "to='" : "",
+ *to ? to : "",
+ *to ? "'" : "",
+ g_random_int(),
+ gtk_combo_box_get_active_text(GTK_COMBO_BOX(type_combo)),
+
+ *body ? "<body>" : "",
+ *body ? body : "",
+ *body ? "</body>" : "",
+
+ *subject ? "<subject>" : "",
+ *subject ? subject : "",
+ *subject ? "</subject>" : "",
+
+ *thread ? "<thread>" : "",
+ *thread ? thread : "",
+ *thread ? "</thread>" : "");
+
buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(console->entry));
gtk_text_buffer_set_text(buffer, stanza, -1);
gtk_text_buffer_get_iter_at_offset(buffer, &iter, strstr(stanza, "</message>") - stanza);
@@ -629,11 +628,11 @@ signed_on_cb(PurpleConnection *gc)
{
if (!console)
return;
-
+
gtk_combo_box_append_text(GTK_COMBO_BOX(console->dropdown), purple_account_get_username(gc->account));
console->accounts = g_list_append(console->accounts, gc);
console->count++;
-
+
if (console->count > 1)
gtk_widget_show_all(console->hbox);
}
@@ -666,7 +665,7 @@ signed_off_cb(PurpleConnection *gc)
if (gc == console->gc) {
console->gc = NULL;
- gtk_imhtml_append_text(GTK_IMHTML(console->imhtml),
+ gtk_imhtml_append_text(GTK_IMHTML(console->imhtml),
_("<font color='#777777'>Logged out.</font>"), 0);
}
}
@@ -689,7 +688,7 @@ plugin_load(PurplePlugin *plugin)
plugin, PURPLE_CALLBACK(signed_on_cb), NULL);
purple_signal_connect(purple_connections_get_handle(), "signed-off",
plugin, PURPLE_CALLBACK(signed_off_cb), NULL);
-
+
return TRUE;
}
@@ -716,18 +715,18 @@ dropdown_changed_cb(GtkComboBox *widget, gpointer nul)
if (!console)
return;
-
- account = purple_accounts_find(gtk_combo_box_get_active_text(GTK_COMBO_BOX(console->dropdown)),
+
+ account = purple_accounts_find(gtk_combo_box_get_active_text(GTK_COMBO_BOX(console->dropdown)),
"prpl-jabber");
if (!account || !account->gc)
return;
-
+
console->gc = account->gc;
gtk_imhtml_clear(GTK_IMHTML(console->imhtml));
}
-static void
-create_console(PurplePluginAction *action)
+static void
+create_console(PurplePluginAction *action)
{
GtkWidget *vbox = gtk_vbox_new(FALSE, 6);
GtkWidget *sw = gtk_scrolled_window_new(NULL, NULL);
@@ -743,7 +742,7 @@ create_console(PurplePluginAction *action)
gtk_window_present(GTK_WINDOW(console->window));
return;
}
-
+
console = g_new0(XmppConsole, 1);
console->window = pidgin_create_window(_("XMPP Console"), PIDGIN_HIG_BORDER, NULL, TRUE);
@@ -773,32 +772,32 @@ create_console(PurplePluginAction *action)
g_signal_connect(G_OBJECT(console->dropdown), "changed", G_CALLBACK(dropdown_changed_cb), NULL);
gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_ETCHED_IN);
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
console->imhtml = gtk_imhtml_new(NULL, NULL);
gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0);
if (console->count == 0)
- gtk_imhtml_append_text(GTK_IMHTML(console->imhtml),
+ gtk_imhtml_append_text(GTK_IMHTML(console->imhtml),
_("<font color='#777777'>Not connected to XMPP</font>"), 0);
gtk_container_add(GTK_CONTAINER(sw), console->imhtml);
-
+
toolbar = gtk_toolbar_new();
-#if GTK_CHECK_VERSION(2,4,0)
+#if GTK_CHECK_VERSION(2,4,0)
button = gtk_tool_button_new(NULL, "<iq/>");
g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(iq_clicked_cb), NULL);
gtk_container_add(GTK_CONTAINER(toolbar), GTK_WIDGET(button));
#else
- gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), "<iq/>",
+ gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), "<iq/>",
_("Insert an <iq/> stanza."), "foo", NULL, GTK_SIGNAL_FUNC(iq_clicked_cb), NULL);
#endif
-#if GTK_CHECK_VERSION(2,4,0)
+#if GTK_CHECK_VERSION(2,4,0)
button = gtk_tool_button_new(NULL, "<presence/>");
g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(presence_clicked_cb), NULL);
gtk_container_add(GTK_CONTAINER(toolbar), GTK_WIDGET(button));
#else
- gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), "<presence/>",
+ gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), "<presence/>",
_("Insert a <presence/> stanza."), NULL, gtk_label_new(NULL), GTK_SIGNAL_FUNC(presence_clicked_cb), NULL);
#endif
@@ -807,17 +806,17 @@ create_console(PurplePluginAction *action)
g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(message_clicked_cb), NULL);
gtk_container_add(GTK_CONTAINER(toolbar), GTK_WIDGET(button));
#else
- gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), "<message/>",
+ gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), "<message/>",
_("Insert a <message/> stanza."), "foo", gtk_label_new(NULL), GTK_SIGNAL_FUNC(message_clicked_cb), NULL);
#endif
-
+
gtk_box_pack_start(GTK_BOX(vbox), toolbar, FALSE, FALSE, 0);
-
+
sw = gtk_scrolled_window_new(NULL, NULL);
gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_ETCHED_IN);
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
-
+
console->entry = gtk_imhtml_new(NULL, NULL);
gtk_imhtml_set_whole_buffer_formatting_only(GTK_IMHTML(console->entry), TRUE);
g_signal_connect(G_OBJECT(console->entry),"message_send", G_CALLBACK(message_send_cb), console);
@@ -843,7 +842,7 @@ actions(PurplePlugin *plugin, gpointer context)
act = purple_plugin_action_new(_("XMPP Console"), create_console);
l = g_list_append(l, act);
-
+
return l;
}
@@ -853,28 +852,28 @@ static PurplePluginInfo info =
PURPLE_PLUGIN_MAGIC,
PURPLE_MAJOR_VERSION,
PURPLE_MINOR_VERSION,
- PURPLE_PLUGIN_STANDARD, /**< type */
- PIDGIN_PLUGIN_TYPE, /**< ui_requirement */
- 0, /**< flags */
- NULL, /**< dependencies */
- PURPLE_PRIORITY_DEFAULT, /**< priority */
-
- "gtk-xmpp", /**< id */
- N_("XMPP Console"), /**< name */
- DISPLAY_VERSION, /**< version */
- /** summary */
+ PURPLE_PLUGIN_STANDARD, /**< type */
+ PIDGIN_PLUGIN_TYPE, /**< ui_requirement */
+ 0, /**< flags */
+ NULL, /**< dependencies */
+ PURPLE_PRIORITY_DEFAULT, /**< priority */
+
+ "gtk-xmpp", /**< id */
+ N_("XMPP Console"), /**< name */
+ DISPLAY_VERSION, /**< version */
+ /** summary */
N_("Send and receive raw XMPP stanzas."),
- /** description */
+ /** description */
N_("This plugin is useful for debbuging XMPP servers or clients."),
- "Sean Egan <seanegan@gmail.com>", /**< author */
- PURPLE_WEBSITE, /**< homepage */
+ "Sean Egan <seanegan@gmail.com>", /**< author */
+ PURPLE_WEBSITE, /**< homepage */
- plugin_load, /**< load */
- plugin_unload, /**< unload */
- NULL, /**< destroy */
+ plugin_load, /**< load */
+ plugin_unload, /**< unload */
+ NULL, /**< destroy */
NULL, /**< ui_info */
- NULL, /**< extra_info */
+ NULL, /**< extra_info */
NULL,
actions,
diff --git a/pidgin/win32/nsis/pidgin-installer.nsi b/pidgin/win32/nsis/pidgin-installer.nsi
index a3345cce2d..a8154312e5 100644
--- a/pidgin/win32/nsis/pidgin-installer.nsi
+++ b/pidgin/win32/nsis/pidgin-installer.nsi
@@ -717,6 +717,7 @@ Section Uninstall
Delete "$INSTDIR\ca-certs\GTE_CyberTrust_Global_Root.pem"
Delete "$INSTDIR\ca-certs\Microsoft_Internet_Authority.pem"
Delete "$INSTDIR\ca-certs\Microsoft_Secure_Server_Authority.pem"
+ Delete "$INSTDIR\ca-certs\StartCom_Certification_Authority.pem"
Delete "$INSTDIR\ca-certs\StartCom_Free_SSL_CA.pem"
Delete "$INSTDIR\ca-certs\Verisign_Class3_Primary_CA.pem"
Delete "$INSTDIR\ca-certs\VeriSign_Class_3_Public_Primary_Certification_Authority_-_G5.pem"
diff --git a/pidgin/win32/pidgin_dll_rc.rc.in b/pidgin/win32/pidgin_dll_rc.rc.in
index 47157453a2..2b447d7158 100644
--- a/pidgin/win32/pidgin_dll_rc.rc.in
+++ b/pidgin/win32/pidgin_dll_rc.rc.in
@@ -2,8 +2,6 @@
#include "version.h"
#include "resource.h"
-#define PIXMAPDIR "pixmaps/tray/16/"
-
VS_VERSION_INFO VERSIONINFO
FILEVERSION PURPLE_MAJOR_VERSION,PURPLE_MINOR_VERSION,PURPLE_MICRO_VERSION,0
PRODUCTVERSION PURPLE_MAJOR_VERSION,PURPLE_MINOR_VERSION,PURPLE_MICRO_VERSION,0
@@ -33,11 +31,11 @@ VS_VERSION_INFO VERSIONINFO
END
END
-PIDGIN_TRAY_AVAILABLE_4BIT ICON PIXMAPDIR "available_4bit.ico"
-PIDGIN_TRAY_AWAY_4BIT ICON PIXMAPDIR "away_4bit.ico"
-PIDGIN_TRAY_BUSY_4BIT ICON PIXMAPDIR "busy_4bit.ico"
-PIDGIN_TRAY_XA_4BIT ICON PIXMAPDIR "extended-away_4bit.ico"
-PIDGIN_TRAY_OFFLINE_4BIT ICON PIXMAPDIR "offline_4bit.ico"
-PIDGIN_TRAY_CONNECTING_4BIT ICON PIXMAPDIR "connecting_4bit.ico"
-PIDGIN_TRAY_PENDING_4BIT ICON PIXMAPDIR "message_4bit.ico"
-PIDGIN_TRAY_INVISIBLE_4BIT ICON PIXMAPDIR "invisible_4bit.ico"
+PIDGIN_TRAY_AVAILABLE_4BIT ICON "pixmaps/tray/16/available_4bit.ico"
+PIDGIN_TRAY_AWAY_4BIT ICON "pixmaps/tray/16/away_4bit.ico"
+PIDGIN_TRAY_BUSY_4BIT ICON "pixmaps/tray/16/busy_4bit.ico"
+PIDGIN_TRAY_XA_4BIT ICON "pixmaps/tray/16/extended-away_4bit.ico"
+PIDGIN_TRAY_OFFLINE_4BIT ICON "pixmaps/tray/16/offline_4bit.ico"
+PIDGIN_TRAY_CONNECTING_4BIT ICON "pixmaps/tray/16/connecting_4bit.ico"
+PIDGIN_TRAY_PENDING_4BIT ICON "pixmaps/tray/16/message_4bit.ico"
+PIDGIN_TRAY_INVISIBLE_4BIT ICON "pixmaps/tray/16/invisible_4bit.ico"
diff --git a/pidgin/win32/pidgin_exe_rc.rc.in b/pidgin/win32/pidgin_exe_rc.rc.in
index 6afbda377a..2e8b26ec75 100644
--- a/pidgin/win32/pidgin_exe_rc.rc.in
+++ b/pidgin/win32/pidgin_exe_rc.rc.in
@@ -2,8 +2,6 @@
#include "resource.h"
#include "version.h"
-#define PIXMAPDIR "pixmaps/"
-
VS_VERSION_INFO VERSIONINFO
FILEVERSION PURPLE_MAJOR_VERSION,PURPLE_MINOR_VERSION,PURPLE_MICRO_VERSION,0
PRODUCTVERSION PURPLE_MAJOR_VERSION,PURPLE_MINOR_VERSION,PURPLE_MICRO_VERSION,0
@@ -33,4 +31,4 @@ VS_VERSION_INFO VERSIONINFO
END
END
-PIDGIN_ICON ICON PIXMAPDIR "pidgin.ico"
+PIDGIN_ICON ICON "pixmaps/pidgin.ico"
diff --git a/pidgin/win32/untar.c b/pidgin/win32/untar.c
index 0ec2e09ccc..7121513485 100644
--- a/pidgin/win32/untar.c
+++ b/pidgin/win32/untar.c
@@ -212,9 +212,11 @@ static void linkorcopy(src, dst, sym)
* make sure the directory path exists.
*/
fpdst = createpath(dst);
- if (!fpdst)
+ if (!fpdst) {
/* error message already given */
+ fclose(fpsrc);
return;
+ }
#ifdef _POSIX_SOURCE
# ifndef _WEAK_POSIX
diff --git a/pidgin/win32/winpidgin.c b/pidgin/win32/winpidgin.c
index c954ab299e..ad2c83b20c 100644
--- a/pidgin/win32/winpidgin.c
+++ b/pidgin/win32/winpidgin.c
@@ -586,7 +586,7 @@ static void handle_protocol(char *cmd) {
return;
}
- printf("Trying to handle protocol message:\n'%*s'\n", len, tmp1);
+ printf("Trying to handle protocol message:\n'%.*s'\n", len, tmp1);
/* MEM_COMMIT initializes the memory to zero,
* so we don't need to worry that our section of tmp1 isn't nul-terminated */
diff --git a/po/ChangeLog b/po/ChangeLog
index d857e41bb6..8cc6d730ea 100644
--- a/po/ChangeLog
+++ b/po/ChangeLog
@@ -1,7 +1,10 @@
Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul
-version 2.5.7
- * No changes
+version 2.6.0
+ * Armenian translation added (David Avsharyan)
+ * Lao translation updated (Anousak Souphavah)
+ * Slovenian translation updated (Martin Srebotnjak)
+ * Swahili translation added (Paul Msegeya)
version 2.5.6
* German translation updated (Björn Vogt)
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 1612ef8c72..57315ed76d 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -8,6 +8,7 @@ finch/gntconv.c
finch/gntdebug.c
finch/gntft.c
finch/gntlog.c
+finch/gntmedia.c
finch/gntnotify.c
finch/gntplugin.c
finch/gntpounce.c
@@ -36,6 +37,7 @@ finch/plugins/gntgf.c
finch/plugins/gnthistory.c
finch/plugins/grouping.c
finch/plugins/lastlog.c
+finch/plugins/gnttinyurl.c
libpurple/account.c
libpurple/blist.c
libpurple/certificate.c
@@ -62,6 +64,7 @@ libpurple/plugins/log_reader.c
libpurple/plugins/mono/loader/mono.c
libpurple/plugins/newline.c
libpurple/plugins/offlinemsg.c
+libpurple/plugins/one_time_password.c
libpurple/plugins/perl/perl.c
libpurple/plugins/psychic.c
libpurple/plugins/signals-test.c
@@ -83,6 +86,7 @@ libpurple/protocols/irc/msgs.c
libpurple/protocols/irc/parse.c
libpurple/protocols/jabber/adhoccommands.c
libpurple/protocols/jabber/auth.c
+libpurple/protocols/jabber/bosh.c
libpurple/protocols/jabber/buddy.c
libpurple/protocols/jabber/chat.c
libpurple/protocols/jabber/jabber.c
@@ -165,7 +169,6 @@ libpurple/protocols/silc10/silc.c
libpurple/protocols/silc10/util.c
libpurple/protocols/silc10/wb.c
libpurple/protocols/simple/simple.c
-libpurple/protocols/toc/toc.c
libpurple/protocols/yahoo/yahoo.c
libpurple/protocols/yahoo/yahoo_doodle.c
libpurple/protocols/yahoo/yahoo_filexfer.c
@@ -184,6 +187,7 @@ libpurple/sslconn.c
libpurple/status.c
libpurple/util.c
libpurple/win32/libc_interface.c
+libpurple/xmlnode.c
pidgin.desktop.in
pidgin/eggtrayicon.c
pidgin/gtkaccount.c
@@ -201,6 +205,7 @@ pidgin/gtkimhtml.c
pidgin/gtkimhtmltoolbar.c
pidgin/gtklog.c
pidgin/gtkmain.c
+pidgin/gtkmedia.c
pidgin/gtknotify.c
pidgin/gtkplugin.c
pidgin/gtkpounce.c
diff --git a/po/README b/po/README
index 1e42ec7164..b839e56292 100644
--- a/po/README
+++ b/po/README
@@ -1,2 +1,2 @@
-For information on translating Pidgin, Libpurple, and Finch, please see
+For information on translating Pidgin, libpurple, and Finch, please see
our wiki page at http://developer.pidgin.im/wiki/TipsForTranslators.
diff --git a/po/af.po b/po/af.po
index fcb7076520..99e59f1c9e 100644
--- a/po/af.po
+++ b/po/af.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 2.3.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-27 10:14-0800\n"
+"POT-Creation-Date: 2009-04-30 10:36-0400\n"
"PO-Revision-Date: 2009-02-23 19:54+0200\n"
"Last-Translator: F Wolff <friedel@translate.org.za>\n"
"Language-Team: translate-discuss-af@lists.sourceforge.net\n"
@@ -613,19 +613,6 @@ msgstr ""
msgid "Send To"
msgstr "Stuur na"
-msgid "Invite message"
-msgstr "Uitnodigingsboodskap"
-
-msgid "Invite"
-msgstr "Nooi uit"
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Tik gerus die naam van die gebruiker om uit te nooi,\n"
-"saam met 'n opsionele uitnodigingsboodskap."
-
msgid "Conversation"
msgstr "Gesprek"
@@ -882,6 +869,41 @@ msgstr "Alle gesprekke"
msgid "System Log"
msgstr "Stelselstaaflêer"
+#, fuzzy
+msgid "Calling ... "
+msgstr "Bereken..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "Aanvaar"
+
+msgid "Reject"
+msgstr "Weier"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "U het die kanaal%s%s verlaat"
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "E-posse"
@@ -916,6 +938,9 @@ msgstr "Gaan voort"
msgid "IM"
msgstr "Kitsboodskap"
+msgid "Invite"
+msgstr "Nooi uit"
+
msgid "(none)"
msgstr "(geen)"
@@ -1119,7 +1144,6 @@ msgstr "%s het weggegaan. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s het u 'n boodskap gestuur. (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "Onbekende vriendwag-gebeurtenis. Rapporteer dit, asseblief!"
@@ -1530,6 +1554,28 @@ msgstr "GntLastlog"
msgid "Lastlog plugin."
msgstr "Laastestaaf-inprop."
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "Deuntjie-URL"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "rekeninge"
@@ -1630,13 +1676,6 @@ msgstr "Aanvaar sertifikaat vir %s?"
msgid "SSL Certificate Verification"
msgstr "SSL-sertifikaatverifikasie"
-#. Number of actions
-msgid "Accept"
-msgstr "Aanvaar"
-
-msgid "Reject"
-msgstr "Weier"
-
msgid "_View Certificate..."
msgstr "_Bekyk sertifikaat..."
@@ -1787,6 +1826,18 @@ msgstr "%s het die kamer verlaat."
msgid "%s left the room (%s)."
msgstr "%s het die kamer verlaat (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Nooi na konferensie"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Tik gerus die naam van die gebruiker om uit te nooi, saam met 'n opsionele "
+"uitnodigingsboodskap."
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "Kry van verbinding het misluk: %s"
@@ -2627,6 +2678,32 @@ msgstr "Stoor vanlyn boodskappe in vriendwag"
msgid "Do not ask. Always save in pounce."
msgstr "Moenie vra nie. Stoor altyd in vriendwag."
+#, fuzzy
+msgid "One Time Password"
+msgstr "Tik wagwoord"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -3028,6 +3105,7 @@ msgstr "Kies 'n geselsie vir vriend: %s"
msgid "Add to chat..."
msgstr "Voeg by geselsie..."
+#. Global
msgid "Available"
msgstr "Beskikbaar"
@@ -3374,6 +3452,17 @@ msgstr ""
"U gekose rekeningnaam is geweier deur die bediener. Dit bevat waarskynlik "
"ongeldige karakters."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "Hierdie geselsienaam word reeds gebruik"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Bynaam"
+
msgid "Cannot change nick"
msgstr "Kan nie bynaam verander nie"
@@ -3646,6 +3735,41 @@ msgstr "Ongeldige uitdaging vanaf bediener"
msgid "SASL error"
msgstr "SASL-fout"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "Geen rede gegee nie"
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Niegesteunde weergawe"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"Kon nie 'n verbinding met die bediener bewerkstellig nie:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"Kon nie 'n verbinding met die bediener bewerkstellig nie:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "Kan nie verbinding inisialiseer nie"
+
+msgid "Unable to create socket"
+msgstr "Kan nie sok skep nie"
+
+msgid "Write error"
+msgstr "Skryffout"
+
msgid "Full Name"
msgstr "Volle name"
@@ -3712,6 +3836,10 @@ msgstr "Kliënt"
msgid "Operating System"
msgstr "Bedryfstelsel"
+#, fuzzy
+msgid "Local Time"
+msgstr "Plaaslike lêer:"
+
msgid "Last Activity"
msgstr "Vorige aktiwiteit"
@@ -4040,9 +4168,6 @@ msgstr "Vind kamers"
msgid "You require encryption, but it is not available on this server."
msgstr "U vereis enkripsie, maar dis nie op hierdie bediener beskikbaar nie."
-msgid "Write error"
-msgstr "Skryffout"
-
msgid "Ping timeout"
msgstr "Pieng-uittelling"
@@ -4051,14 +4176,9 @@ msgstr "Leesfout"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"Kon nie 'n verbinding met die bediener bewerkstellig nie:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "Kan nie sok skep nie"
msgid "Invalid XMPP ID"
msgstr "Ongeldige XMPP-ID"
@@ -4066,6 +4186,10 @@ msgstr "Ongeldige XMPP-ID"
msgid "Invalid XMPP ID. Domain must be set."
msgstr "Ongeldige XMPP-ID. Domein moet ingestel word."
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Verbind aan bediener het misluk."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "Registrasie van %s@%s suksesvol"
@@ -4158,6 +4282,12 @@ msgstr "Bediener ondersteun nie blokkering nie"
msgid "Not Authorized"
msgstr "Nie gemagtig nie"
+msgid "Mood"
+msgstr "Stemming"
+
+msgid "Now Listening"
+msgstr "Luister tans"
+
msgid "Both"
msgstr "Beide"
@@ -4179,12 +4309,6 @@ msgstr "Geen"
msgid "Subscription"
msgstr "Inskrywing"
-msgid "Mood"
-msgstr "Stemming"
-
-msgid "Now Listening"
-msgstr "Luister tans"
-
msgid "Mood Text"
msgstr "Stemmingteks"
@@ -4422,20 +4546,26 @@ msgstr "Kan nie gebruiker %s skop nie"
msgid "Unable to ping user %s"
msgstr "Kan nie gebruiker %s pieng nie"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr ""
"Kon nie zoempie stuur nie omdat daar niks oor gebruiker %s bekend is nie."
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr "Kon nie zoempie stuur nie omdat gebruiker %s dalk vanlyn is."
-#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+#, fuzzy, c-format
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr ""
"Kon nie zoempie stuur nie omdat die gebruiker %s dit nie ondersteun nie."
+#, c-format
+msgid "Buzzing %s..."
+msgstr "Stuur zoempie aan %s..."
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
msgid "Buzz"
@@ -4445,9 +4575,35 @@ msgstr "Zoempie"
msgid "%s has buzzed you!"
msgstr "%s het u 'n zoempie gestuur!"
-#, c-format
-msgid "Buzzing %s..."
-msgstr "Stuur zoempie aan %s..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "Kan nie lêer aan %s stuur nie, ongeldige JID"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "Kan nie lêer stuur aan %s nie, gebruiker nie aanlyn nie"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr ""
+"Kan nie lêer stuur aan %s nie, nie by gebruikerteenwoordigheid ingeteken nie"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "Registrasie het misluk"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "Kies gerus aan watter hulpbron van %s u 'n lêer wil stuur"
+
+msgid "Select a Resource"
+msgstr "Kies 'n hulpbron"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "Inisieer _geselsie"
msgid "config: Configure a chat room."
msgstr "config: Konfigureer 'n geselsiekamer."
@@ -4604,6 +4760,21 @@ msgstr "Kon nie by geselsie %s aansluit nie"
msgid "Error in chat %s"
msgstr "Fout in geselsie %s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "Kon nie die lêer open nie."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "Lêeroordrag het misluk"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Open van lêer '%s' het misluk: %s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr "Kan nie lêer stuur aan %s nie: die gebruiker steun nie lêeroordrag nie"
@@ -4628,9 +4799,6 @@ msgstr ""
msgid "Please select the resource of %s to which you would like to send a file"
msgstr "Kies gerus aan watter hulpbron van %s u 'n lêer wil stuur"
-msgid "Select a Resource"
-msgstr "Kies 'n hulpbron"
-
msgid "Edit User Mood"
msgstr "Redigeer gebruikerstemming"
@@ -6433,7 +6601,7 @@ msgstr ""
"is. Skermname moet geldige e-posadresse wees, of met 'n letter begin en net "
"letters, syfers en spasies bevat, of net syfers bevat."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr "Ongeldige gebruikernaam."
@@ -6449,7 +6617,7 @@ msgstr "U rekening is tans opgeskort."
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "Die AOL-kitsboodskapdiens is tydelik nie beskikbaar nie."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6637,7 +6805,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] "U het %hu kitsboodskap vanaf %s gemis vir 'n onbekende rede."
msgstr[1] "U het %hu kitsboodskappe vanaf %s gemis vir 'n onbekende rede."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "Kan nie boodskap stuur nie: %s"
@@ -7227,6 +7395,38 @@ msgstr "Werk by"
msgid "Could not change buddy information."
msgstr "Kon nie vriendinligting verander nie."
+msgid "Mobile"
+msgstr "Mobiel"
+
+msgid "Note"
+msgstr "Nota"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "Wysig adres"
+
+msgid "Change his/her memo as you like"
+msgstr ""
+
+#, fuzzy
+msgid "_Modify"
+msgstr "Wysig"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "Wysig"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "Bediener besig"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
#, c-format
msgid "%u requires verification"
msgstr "%u vereis magtiging"
@@ -7551,6 +7751,9 @@ msgstr "<b>Gestuur</b>: %lu<br>\n"
msgid "<p><b>Scrupulous Testers</b>:<br>\n"
msgstr "<b>Vorige verfrissing</b>: %s<br>\n"
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7700,7 +7903,6 @@ msgid ""
"%s"
msgstr "Ongeldige teken-antwoordkode, 0x%02X"
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "Kan nie koppel nie."
@@ -8611,9 +8813,6 @@ msgstr "Organisasie"
msgid "Unit"
msgstr "Eenheid"
-msgid "Note"
-msgstr "Nota"
-
msgid "Join Chat"
msgstr "Sluit by geselsie aan"
@@ -9307,193 +9506,13 @@ msgid "Auth Domain"
msgstr "Magtig domein"
#, c-format
-msgid "Looking up %s"
-msgstr "Soek tans %s op"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Verbinding na %s het misluk"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Aanmelding: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "Kan nie lêer %s skryf nie."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "Kan nie lêer %s lees nie."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "Boodskap te lank, laaste %s grepe afgekap."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s nie tans aanmeld nie."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "Waarskuwing indien %s nie toegelaat nie."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "'n Boodskap is laat val, u oorskry die bediener se spoedlimiet."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "Geselsie in %s is nie beskikbaar nie."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "U stuur te vinnig boodskappe aan %s."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "U het 'n kitsboodskap vanaf %s gemis omdat dit te groot was."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "U het 'n kitsboodskap vanaf %s gemis omdat dit te vinnig gestuur is."
-
-#, c-format
-msgid "Failure."
-msgstr "Mislukking."
-
-#, c-format
-msgid "Too many matches."
-msgstr "Te veel wat pas."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "Benodig méér kwalifiseerders."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "Gidsdiens is tydelik nie beskikbaar nie."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "E-posopsoek ingeperk."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "Sleutelwoord geïgnoreer."
-
-#, c-format
-msgid "No keywords."
-msgstr "Geen sleutelwoorde."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "Gebruiker het geen gidsinliging nie."
-
-#, c-format
-msgid "Country not supported."
-msgstr "Land nie ondersteun nie."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Onbekende mislukking: %s."
-
-#, c-format
-msgid "Incorrect username or password."
-msgstr "Verkeerde gebruikernaam of wagwoord."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "Die diens is tydelik nie beskikbaar nie."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "U waarskuwingsvlak is tans te hoog om aan te meld."
-
-#, 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 ""
-"U het nou te gereeld gekoppel en ontkoppel. Wag tien minute en probeer "
-"weer. Indien u voortgaan om te probeer sal u selfs nog langer moet wag."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "'n Onbekende aanmeldfout het voorgekom: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "'n Onbekende fout, %d, het voorgekom. Inligting: %s"
-
-msgid "Invalid Groupname"
-msgstr "Ongeldige groepnaam"
-
-msgid "Connection Closed"
-msgstr "Verbinding gesluit"
-
-msgid "Waiting for reply..."
-msgstr "Wag vir antwoord..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "TOC is terug ná sy blaaskans. U kan u weer boodskappe stuur."
-
-msgid "Password Change Successful"
-msgstr "Wagwoord suksesvol verander"
-
-msgid "_Group:"
-msgstr "_Groep:"
-
-msgid "Get Dir Info"
-msgstr "Kry gidsinligting"
-
-msgid "Set Dir Info"
-msgstr "Stel gidsinligting"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "Kon nie %s vir skryf open nie!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "Lêeroordrag het misluk; ander kant het waarskynlik gekanselleer."
-
-msgid "Could not connect for transfer."
-msgstr "Kon nie vir oordrag koppel nie."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "Kon nie lêerkop skryf nie. Die lêer sal nie oorgedra word nie."
-
-msgid "Save As..."
-msgstr "Stoor as..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s versoek dat %s %d lêer aanvaar: %s (%.2f %s)%s%s"
-msgstr[1] "%s versoek dat %s %d lêers aanvaar: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s vra dat u hulle 'n lêer stuur"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "TOC-protokolinprop"
-
-#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
"%s het u 'n webkamera-uitnodiging gestuur, wat nog nie ondersteun word nie."
+msgid "Your SMS was not delivered"
+msgstr ""
+
msgid "Your Yahoo! message did not get sent."
msgstr "U Yahoo!-boodskap is nie gestuur nie."
@@ -10094,9 +10113,6 @@ msgstr "Moenie steur nie"
msgid "Extended away"
msgstr "Vir lank weg"
-msgid "Mobile"
-msgstr "Mobiel"
-
msgid "Listening to music"
msgstr "Luister na musiek"
@@ -10138,18 +10154,6 @@ msgstr "+++ %s is nie meer ledig nie"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "Kon nie %s lees nie"
-
-#, 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 ""
-"Kon nie volledig u %s lees nie. Dit is nie gelaai nie, en die ou lêer is "
-"hernoem na %s~."
-
msgid "Calculating..."
msgstr "Bereken..."
@@ -10224,6 +10228,13 @@ msgstr "Kon nie %s skryf nie: %s"
msgid "Unable to connect to %s: %s"
msgstr "Kan nie koppel aan %s nie: %s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+"Bediener vereis TLS/SSL vir aanmelding. Geen TLS/SSL-steun gevind nie."
+
#, c-format
msgid " - %s"
msgstr " - %s"
@@ -10257,6 +10268,18 @@ msgstr "Verbinding geweier."
msgid "Address already in use."
msgstr "Adres word reeds gebruik."
+#, c-format
+msgid "Error Reading %s"
+msgstr "Kon nie %s lees nie"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"Kon nie volledig u %s lees nie. Dit is nie gelaai nie, en die ou lêer is "
+"hernoem na %s~."
+
msgid "Internet Messenger"
msgstr "Internetboodskapper"
@@ -10299,10 +10322,8 @@ msgstr "Kennis_gewings vir nuwe pos"
msgid "Use this buddy _icon for this account:"
msgstr "Gebruik hierdie vriend_ikoon vir hierdie rekening:"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s-opsies"
+msgid "_Advanced"
+msgstr "_Gevorderd"
msgid "Use GNOME Proxy Settings"
msgstr "Gebruik GNOME se instaaninstellings"
@@ -10337,9 +10358,6 @@ msgstr "As mens stip kyk,"
msgid "you can see the butterflies mating"
msgstr "kan mens skoenlappers sien paar"
-msgid "Proxy Options"
-msgstr "Instaanopsies"
-
msgid "Proxy _type:"
msgstr "Instaan_tipes:"
@@ -10367,8 +10385,9 @@ msgstr "_Eenvoudig"
msgid "Create _this new account on the server"
msgstr "Skep _hierdie nuwe rekening op die bediener"
-msgid "_Advanced"
-msgstr "_Gevorderd"
+#, fuzzy
+msgid "_Proxy"
+msgstr "Instaanbediener"
msgid "Enabled"
msgstr "Geaktiveer"
@@ -10444,6 +10463,17 @@ msgstr "_Inligting"
msgid "I_M"
msgstr "_Kitsklets"
+#, fuzzy
+msgid "_Audio Call"
+msgstr "_Voeg geselsie by"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Videogeselsies"
+
msgid "_Send File..."
msgstr "_Stuur lêer..."
@@ -10578,6 +10608,10 @@ msgstr "Vriend_wagte"
msgid "/Tools/_Certificates"
msgstr "_Sertifikate"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "_Gesiggie"
+
msgid "/Tools/Plu_gins"
msgstr "_Inproppe"
@@ -10587,9 +10621,6 @@ msgstr "_Voorkeure"
msgid "/Tools/Pr_ivacy"
msgstr "_Privaatheid"
-msgid "/Tools/Smile_y"
-msgstr "_Gesiggie"
-
msgid "/Tools/_File Transfers"
msgstr "_Lêeroordragte"
@@ -10707,8 +10738,8 @@ msgstr "Handmatig"
msgid "By status"
msgstr "Volgens status"
-msgid "By log size"
-msgstr "Volgens staaflêergrootte"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10724,6 +10755,9 @@ msgstr "Herkoppel"
msgid "Re-enable"
msgstr "Heraktiveer"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr "Welkom terug!"
@@ -10811,6 +10845,9 @@ msgstr ""
msgid "A_lias:"
msgstr "A_lias:"
+msgid "_Group:"
+msgstr "_Groep:"
+
msgid "Auto_join when account becomes online."
msgstr "Sluit _outomaties aan waneer rekening aanlyn kom."
@@ -10862,14 +10899,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr "Nooi vriend na geselsiekamer"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Tik gerus die naam van die gebruiker om uit te nooi, saam met 'n opsionele "
-"uitnodigingsboodskap."
-
msgid "_Buddy:"
msgstr "_Vriend:"
@@ -10944,6 +10973,22 @@ msgstr "_Stoor as..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "Maak gesprekvenster skoo_n"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "_Meer"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "_Meer"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "_Meer"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "Bekyk staaf_lêer"
+
msgid "/Conversation/Se_nd File..."
msgstr "S_tuur lêer..."
@@ -11016,6 +11061,18 @@ msgstr "Gesprek"
msgid "/Conversation/View Log"
msgstr "Bekyk staaflêer"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "Meer"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "Bekyk staaflêer"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "Meer"
+
msgid "/Conversation/Send File..."
msgstr "Stuur lêer..."
@@ -11198,6 +11255,9 @@ msgstr "kunstenaar"
msgid "Ka-Hing Cheung"
msgstr "Ka-Hing Cheung"
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "steun"
@@ -11337,6 +11397,10 @@ msgstr "Georgies"
msgid "Ubuntu Georgian Translators"
msgstr "Ubuntu- Georgiese vertalers"
+#, fuzzy
+msgid "Khmer"
+msgstr "Ander"
+
msgid "Kannada"
msgstr "Kannada"
@@ -11807,15 +11871,6 @@ msgstr "Die font vir die tikkennisgewing"
msgid "Enable typing notification"
msgstr "Aktiveer tikkennisgewings"
-msgid "_Copy Email Address"
-msgstr "_Kopieer e-posadres"
-
-msgid "_Open Link in Browser"
-msgstr "_Open skakel in blaaier"
-
-msgid "_Copy Link Location"
-msgstr "_Kopieer skakelligging"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12062,13 +12117,14 @@ msgstr "_Blaai deur staaflêervouer"
msgid "%s %s. Try `%s -h' for more information.\n"
msgstr "%s %s. Probeer `%s -h' vir meer inligting.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12093,13 +12149,14 @@ msgstr ""
" --display=VERTOON X vertoon om te gebruik\n"
" -v, --version wys die huidige weergawe, en sluit af\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12158,11 +12215,23 @@ msgstr "Pidgin"
msgid "Exiting because another libpurple client is already running.\n"
msgstr "Sluit af omdat 'n ander libpurple-kliënt reeds loop.\n"
-msgid "Open All Messages"
-msgstr "Open alle boodskappe"
+msgid "/_Media"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">U het pos!</span>"
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "Bereken..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -12192,6 +12261,27 @@ msgid ""
msgstr ""
"Die 'Handmatige' blaaier-bevel is gekies, maar geen bevel is gestel nie."
+msgid "Open All Messages"
+msgstr "Open alle boodskappe"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">U het pos!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "Nuwe vriendwag"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">U het pos!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "Onbekende boodskap"
+
msgid "The following plugins will be unloaded."
msgstr "Die volgende inproppe gaan ontlaai word."
@@ -12240,6 +12330,10 @@ msgstr "<b>Inpropdetails</b>"
msgid "Select a file"
msgstr "Kies 'n lêer"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Wysig vriendwag"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "Hou wie dop"
@@ -12310,6 +12404,50 @@ msgstr "_Herhalend"
msgid "Pounce Target"
msgstr "Dophou-teiken"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "Begin tik"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "Wag tydens tik"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "Aanmeld"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s het teruggekeer na ledigheid (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "Terugkeer"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "Het opgehou tik"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "Afmeld"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "Ledig raak"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "Terwyl weg"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Stuur 'n boodskap"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "Onbekende vriendwag-gebeurtenis. Rapporteer dit, asseblief!"
+
msgid "Smiley theme failed to unpack."
msgstr "Uitpak van gesiggie-tema het misluk."
@@ -12332,6 +12470,12 @@ msgstr "Sleutelbordkortpaaie"
msgid "Cl_ose conversations with the Escape key"
msgstr "Sl_uit gesprekke met die Escape-sleutel"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Vriendelys"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "Stelsellaai-ikoon"
@@ -12442,9 +12586,6 @@ msgstr "Kan nie instaanopstellingsprogram begin nie."
msgid "Cannot start browser configuration program."
msgstr "Kan nie blaaieropstellingsprogram begin nie."
-msgid "ST_UN server:"
-msgstr "ST_UN-bediener:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">Voorbeeld: stunserver.org</span>"
@@ -12469,6 +12610,10 @@ msgstr "_Beginpoort:"
msgid "_End port:"
msgstr "_Endpoort:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr "Instaanbediener en blaaier"
@@ -12659,12 +12804,12 @@ msgstr "Terwyl weg en ledig"
msgid "Auto-away"
msgstr "Outoweg"
-msgid "Change status when _idle"
-msgstr "Verander status terwyl _ledig"
-
msgid "_Minutes before becoming idle:"
msgstr "_Minute voor ledig word:"
+msgid "Change status when _idle"
+msgstr "Verander status terwyl _ledig"
+
msgid "Change _status to:"
msgstr "Verander _status na:"
@@ -12812,6 +12957,12 @@ msgstr "S_toor en gebruik"
msgid "Status for %s"
msgstr "Status vir %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
msgid "Custom Smiley"
msgstr "Eie gesiggie"
@@ -12821,16 +12972,16 @@ msgstr "Meer data benodig"
msgid "Please provide a shortcut to associate with the smiley."
msgstr "Verskaf gerus 'n kortpad om met die gesiggie te assosieer."
-msgid "Duplicate Shortcut"
-msgstr "Duplikaatkortpad"
-
+#, fuzzy, c-format
msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
+"A custom smiley for '%s' already exists. Please use a different shortcut."
msgstr ""
"'n Eie gesiggie vir die gekose kortpad bestaan reeds. Gee asseblief 'n ander "
"kortpad."
+msgid "Duplicate Shortcut"
+msgstr "Duplikaatkortpad"
+
msgid "Please select an image for the smiley."
msgstr "Kies asseblief 'n prent vir die gesiggie."
@@ -12840,16 +12991,22 @@ msgstr "Wysig gesiggie"
msgid "Add Smiley"
msgstr "Voeg gesiggie by"
-msgid "Smiley _Image"
-msgstr "Gesiggie_prent"
+#, fuzzy
+msgid "_Image:"
+msgstr "_Prent"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr "Gesiggie_kortpad"
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "Kortpad"
msgid "Smiley"
msgstr "Gesiggie"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "Kortpad"
+
msgid "Custom Smiley Manager"
msgstr "Bestuurder van eie gesiggies"
@@ -12974,6 +13131,16 @@ msgid ""
msgstr ""
"Kon nie prent '%s' laai nie: rede onbekend, waarskynlik 'n korrupte prentlêer"
+#, fuzzy
+msgid "_Open Link"
+msgstr "_Open skakel in:"
+
+msgid "_Copy Link Location"
+msgstr "_Kopieer skakelligging"
+
+msgid "_Copy Email Address"
+msgstr "_Kopieer e-posadres"
+
msgid "Save File"
msgstr "Stoor lêer"
@@ -13989,6 +14156,178 @@ msgstr "Stuur en ontvang rou XMPP-stanzas."
msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr "Hierdie inprop is nuttig om XMPP-bedieners of -kliënte te ontfout."
+#~ msgid "Invite message"
+#~ msgstr "Uitnodigingsboodskap"
+
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Tik gerus die naam van die gebruiker om uit te nooi,\n"
+#~ "saam met 'n opsionele uitnodigingsboodskap."
+
+#~ msgid "Looking up %s"
+#~ msgstr "Soek tans %s op"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "Verbinding na %s het misluk"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Aanmelding: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "Kan nie lêer %s skryf nie."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "Kan nie lêer %s lees nie."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "Boodskap te lank, laaste %s grepe afgekap."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s nie tans aanmeld nie."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "Waarskuwing indien %s nie toegelaat nie."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr "'n Boodskap is laat val, u oorskry die bediener se spoedlimiet."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "Geselsie in %s is nie beskikbaar nie."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "U stuur te vinnig boodskappe aan %s."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "U het 'n kitsboodskap vanaf %s gemis omdat dit te groot was."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr ""
+#~ "U het 'n kitsboodskap vanaf %s gemis omdat dit te vinnig gestuur is."
+
+#~ msgid "Failure."
+#~ msgstr "Mislukking."
+
+#~ msgid "Too many matches."
+#~ msgstr "Te veel wat pas."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "Benodig méér kwalifiseerders."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "Gidsdiens is tydelik nie beskikbaar nie."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "E-posopsoek ingeperk."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "Sleutelwoord geïgnoreer."
+
+#~ msgid "No keywords."
+#~ msgstr "Geen sleutelwoorde."
+
+#~ msgid "User has no directory information."
+#~ msgstr "Gebruiker het geen gidsinliging nie."
+
+#~ msgid "Country not supported."
+#~ msgstr "Land nie ondersteun nie."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Onbekende mislukking: %s."
+
+#~ msgid "Incorrect username or password."
+#~ msgstr "Verkeerde gebruikernaam of wagwoord."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "Die diens is tydelik nie beskikbaar nie."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "U waarskuwingsvlak is tans te hoog om aan te meld."
+
+#~ 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 ""
+#~ "U het nou te gereeld gekoppel en ontkoppel. Wag tien minute en probeer "
+#~ "weer. Indien u voortgaan om te probeer sal u selfs nog langer moet wag."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "'n Onbekende aanmeldfout het voorgekom: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "'n Onbekende fout, %d, het voorgekom. Inligting: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "Ongeldige groepnaam"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Verbinding gesluit"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "Wag vir antwoord..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "TOC is terug ná sy blaaskans. U kan u weer boodskappe stuur."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "Wagwoord suksesvol verander"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Kry gidsinligting"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Stel gidsinligting"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "Kon nie %s vir skryf open nie!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr "Lêeroordrag het misluk; ander kant het waarskynlik gekanselleer."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "Kon nie vir oordrag koppel nie."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "Kon nie lêerkop skryf nie. Die lêer sal nie oorgedra word nie."
+
+#~ msgid "Save As..."
+#~ msgstr "Stoor as..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s versoek dat %s %d lêer aanvaar: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s versoek dat %s %d lêers aanvaar: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s vra dat u hulle 'n lêer stuur"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "TOC-protokolinprop"
+
+#~ msgid "%s Options"
+#~ msgstr "%s-opsies"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Instaanopsies"
+
+#~ msgid "By log size"
+#~ msgstr "Volgens staaflêergrootte"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_Open skakel in blaaier"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "ST_UN-bediener:"
+
+#~ msgid "Smiley _Image"
+#~ msgstr "Gesiggie_prent"
+
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "Gesiggie_kortpad"
+
#~ msgid "Unable to retrieve MSN Address Book"
#~ msgstr "Kan nie MSN-adresboek haal nie"
diff --git a/po/am.po b/po/am.po
index 878bbc0c86..e0bf578ef2 100644
--- a/po/am.po
+++ b/po/am.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin 0.60 \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
+"POT-Creation-Date: 2009-04-30 10:36-0400\n"
"PO-Revision-Date: 2003-04-08 09:23:11+EDT\n"
"Last-Translator: Ge'ez Frontier Foundation <locales@geez.org>\n"
"Language-Team: Amharic <locales@geez.org>\n"
@@ -31,7 +31,7 @@ msgid ""
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -627,19 +627,6 @@ msgid "Send To"
msgstr "ላክ"
#, fuzzy
-msgid "Invite message"
-msgstr "(1 መልዕክት)"
-
-#, fuzzy
-msgid "Invite"
-msgstr "አስገባ"
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-
-#, fuzzy
msgid "Conversation"
msgstr "ተገናኝቷል"
@@ -890,6 +877,40 @@ msgstr "ተገናኝቷል"
msgid "System Log"
msgstr ""
+msgid "Calling ... "
+msgstr ""
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr ""
+
+#, fuzzy
+msgid "Reject"
+msgstr "እንደነበረ አድረግ"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+msgid "You have rejected the call."
+msgstr ""
+
+msgid "call: Make an audio call."
+msgstr ""
+
#, fuzzy
msgid "Emails"
msgstr "ኢሜይል"
@@ -931,6 +952,10 @@ msgid "IM"
msgstr ""
#, fuzzy
+msgid "Invite"
+msgstr "አስገባ"
+
+#, fuzzy
msgid "(none)"
msgstr "(ስም የለም)"
@@ -1137,7 +1162,6 @@ msgstr ""
msgid "%s has sent you a message. (%s)"
msgstr "ጌም - ምልክትን አስቀምጥ"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr ""
@@ -1190,7 +1214,6 @@ msgstr ""
msgid "Change status to"
msgstr "የቤት አድራሻ፦"
-#. Conversations
msgid "Conversations"
msgstr ""
@@ -1527,7 +1550,6 @@ msgid ""
"conversation into the current conversation."
msgstr ""
-#, c-format
msgid "Online"
msgstr "ኦንላይን"
@@ -1577,6 +1599,28 @@ msgstr ""
msgid "Lastlog plugin."
msgstr ""
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
#, fuzzy
msgid "accounts"
msgstr ""
@@ -1685,14 +1729,6 @@ msgstr ""
msgid "SSL Certificate Verification"
msgstr ""
-#. Number of actions
-msgid "Accept"
-msgstr ""
-
-#, fuzzy
-msgid "Reject"
-msgstr "እንደነበረ አድረግ"
-
msgid "_View Certificate..."
msgstr ""
@@ -1830,6 +1866,16 @@ msgstr ""
msgid "%s left the room (%s)."
msgstr ""
+#, fuzzy
+msgid "Invite to chat"
+msgstr "የጌም ማውሪያ"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+
#, fuzzy, c-format
msgid "Failed to get connection: %s"
msgstr "ተገናኝቷል"
@@ -1955,7 +2001,6 @@ msgstr ""
msgid "Transfer of file %s complete"
msgstr ""
-#, c-format
msgid "File transfer complete"
msgstr ""
@@ -1963,7 +2008,6 @@ msgstr ""
msgid "You canceled the transfer of %s"
msgstr ""
-#, c-format
msgid "File transfer cancelled"
msgstr ""
@@ -2148,7 +2192,6 @@ msgstr ""
msgid "You are using %s, but this plugin requires %s."
msgstr ""
-#, c-format
msgid "This plugin has not defined an ID."
msgstr ""
@@ -2625,6 +2668,32 @@ msgstr ""
msgid "Do not ask. Always save in pounce."
msgstr ""
+#, fuzzy
+msgid "One Time Password"
+msgstr "ሚስጢራዊ ቃልን ለውጥ"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2824,7 +2893,6 @@ msgid ""
"Unable to establish connection with the local mDNS server. Is it running?"
msgstr ""
-#. Creating the options for the protocol
#, fuzzy
msgid "First name"
msgstr "ስም"
@@ -2866,6 +2934,11 @@ msgstr ""
msgid "Purple Person"
msgstr "<አዲስ ተጠቃሚ>"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "አካባቢ"
+
msgid "Bonjour"
msgstr ""
@@ -3035,13 +3108,13 @@ msgstr ""
msgid "Add to chat..."
msgstr "ውሪ"
+#. Global
msgid "Available"
msgstr ""
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr ""
@@ -3405,6 +3478,17 @@ msgid ""
"invalid characters."
msgstr ""
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr ""
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "ቅጽል ስም"
+
msgid "Cannot change nick"
msgstr ""
@@ -3637,6 +3721,35 @@ msgstr ""
msgid "SASL error"
msgstr "የIRC ስህተት"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+msgid "No session ID given"
+msgstr ""
+
+msgid "Unsupported version of BOSH protocol"
+msgstr ""
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr "ተገናኝቷል"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "ተገናኝቷል"
+
+msgid "Unable to create socket"
+msgstr ""
+
+msgid "Write error"
+msgstr ""
+
msgid "Full Name"
msgstr "ሙሉ ስም"
@@ -3702,6 +3815,10 @@ msgstr "ከተማ"
msgid "Operating System"
msgstr ""
+#, fuzzy
+msgid "Local Time"
+msgstr "አካባቢ"
+
msgid "Last Activity"
msgstr ""
@@ -3938,7 +4055,6 @@ msgstr ""
msgid "Extended Away"
msgstr ""
-#, c-format
msgid "Do Not Disturb"
msgstr ""
@@ -4074,9 +4190,6 @@ msgstr "የውሪ ቤቶች"
msgid "You require encryption, but it is not available on this server."
msgstr ""
-msgid "Write error"
-msgstr ""
-
#, fuzzy
msgid "Ping timeout"
msgstr "መድረክን አስወግድ"
@@ -4087,11 +4200,8 @@ msgstr "የIRC ስህተት"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
-msgstr ""
-
-msgid "Unable to create socket"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
msgid "Invalid XMPP ID"
@@ -4100,6 +4210,10 @@ msgstr ""
msgid "Invalid XMPP ID. Domain must be set."
msgstr ""
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "ተገናኝቷል"
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr ""
@@ -4188,9 +4302,18 @@ msgstr ""
msgid "Re-initializing Stream"
msgstr ""
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr ""
+msgid "Mood"
+msgstr ""
+
+msgid "Now Listening"
+msgstr ""
+
#, fuzzy
msgid "Both"
msgstr "ወደ ታች"
@@ -4215,12 +4338,6 @@ msgstr "ምንም"
msgid "Subscription"
msgstr "መግለጫ"
-msgid "Mood"
-msgstr ""
-
-msgid "Now Listening"
-msgstr ""
-
#, fuzzy
msgid "Mood Text"
msgstr "ጽሑፍ"
@@ -4479,15 +4596,21 @@ msgid "Unable to ping user %s"
msgstr "ተገናኝቷል"
#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+msgid "Unable to buzz, because there is nothing known about %s."
+msgstr ""
+
+#, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr ""
#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr ""
#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+msgid "Buzzing %s..."
msgstr ""
#. Yahoo only supports one attention command: the 'buzz'.
@@ -4499,11 +4622,37 @@ msgstr ""
msgid "%s has buzzed you!"
msgstr ""
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "ተገናኝቷል"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "ተገናኝቷል"
+
#, c-format
-msgid "Buzzing %s..."
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr ""
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "መድረክን አስወግድ"
+
+#, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
msgstr ""
#, fuzzy
+msgid "Select a Resource"
+msgstr "ቀጥል (_R)"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "የጌም ማውሪያ"
+
+#, fuzzy
msgid "config: Configure a chat room."
msgstr "የውሪ ቤትን አገጣጥም"
@@ -4657,6 +4806,20 @@ msgstr ""
msgid "Error in chat %s"
msgstr ""
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr ""
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "ፋይልን ላክ"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "ተገናኝቷል"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4682,10 +4845,6 @@ msgid "Please select the resource of %s to which you would like to send a file"
msgstr ""
#, fuzzy
-msgid "Select a Resource"
-msgstr "ቀጥል (_R)"
-
-#, fuzzy
msgid "Edit User Mood"
msgstr "ተጠቃሚ መርጫዎች"
@@ -4723,10 +4882,19 @@ msgstr "አካባቢ"
msgid "Select an action"
msgstr "የፊደል ቅርጽ ምረጡ"
-#, fuzzy
-msgid "Unable to retrieve MSN Address Book"
+#. 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
+#, fuzzy, c-format
+msgid "Unable to add \"%s\"."
msgstr "ተገናኝቷል"
+msgid "Buddy Add error"
+msgstr ""
+
+msgid "The username specified does not exist."
+msgstr ""
+
#, c-format
msgid "Buddy list synchronization issue in %s (%s)"
msgstr ""
@@ -4951,7 +5119,6 @@ msgstr ""
msgid "Passport account not yet verified"
msgstr ""
-#, c-format
msgid "Passport account suspended"
msgstr ""
@@ -5044,6 +5211,13 @@ msgstr ""
msgid "Page"
msgstr "ድረ-ገጽ፦"
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "ተጨማሪ ፕሮግራሞች (Plugins)"
+
msgid "Has you"
msgstr ""
@@ -5085,6 +5259,14 @@ msgid "Album"
msgstr ""
#, fuzzy
+msgid "Game Title"
+msgstr "አርእስት"
+
+#, fuzzy
+msgid "Office Title"
+msgstr "አርእስት"
+
+#, fuzzy
msgid "Set Friendly Name..."
msgstr "እስክሪን ስም"
@@ -5302,8 +5484,9 @@ msgid ""
"does not exist."
msgstr ""
-msgid "Profile URL"
-msgstr ""
+#, fuzzy
+msgid "View web profile"
+msgstr "ኦንላይን"
#. *< type
#. *< ui_requirement
@@ -5543,19 +5726,15 @@ msgstr ""
msgid "Do you want to delete this buddy from your address book as well?"
msgstr ""
-#. only notify the user about problems adding to the friends list
-#. * maybe we should do something else for other lists, but it probably
-#. * won't cause too many problems if we just ignore it
-#, fuzzy, c-format
-msgid "Unable to add \"%s\"."
-msgstr "ተገናኝቷል"
-
msgid "The username specified is invalid."
msgstr ""
msgid "This Hotmail account may not be active."
msgstr ""
+msgid "Profile URL"
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5569,16 +5748,13 @@ msgstr ""
msgid "MSN Protocol Plugin"
msgstr ""
-msgid "Missing Cipher"
-msgstr ""
-
-msgid "The RC4 cipher could not be found"
+#, c-format
+msgid "No such user: %s"
msgstr ""
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
-msgstr ""
+#, fuzzy
+msgid "User lookup"
+msgstr "ተጠቃሚ መርጫዎች"
#, fuzzy
msgid "Reading challenge"
@@ -5591,11 +5767,19 @@ msgstr ""
msgid "Logging in"
msgstr "የዝምብለህ ይግባ መርጫዎች"
-#, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] ""
-msgstr[1] ""
+#, fuzzy
+msgid "MySpaceIM - No Username Set"
+msgstr "ተጠቃሚ፦ (_U)"
+
+msgid "You appear to have no MySpace username."
+msgstr ""
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr ""
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr "ተገናኝቷል"
#. Can't write _()'d strings in array initializers. Workaround.
#, fuzzy
@@ -5617,15 +5801,22 @@ msgstr ""
msgid "MySpace"
msgstr ""
-#, fuzzy
-msgid "MySpaceIM - No Username Set"
-msgstr "ተጠቃሚ፦ (_U)"
-
-msgid "You appear to have no MySpace username."
+msgid "IM Friends"
msgstr ""
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
-msgstr ""
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+msgstr[1] ""
+
+#, fuzzy
+msgid "Add contacts from server"
+msgstr "ተገናኝቷል"
#. The session is now set up, ready to be connected. This emits the
#. * signedOn signal, so clients can now do anything with msimprpl, and
@@ -5649,22 +5840,29 @@ msgstr ""
msgid "MySpaceIM Error"
msgstr ""
-msgid "Failed to add buddy"
+#, fuzzy
+msgid "Invalid input condition"
+msgstr "ሰርቨር፦"
+
+msgid "Read buffer full (2)"
msgstr ""
-msgid "'addbuddy' command failed."
+#, fuzzy
+msgid "Unparseable message"
+msgstr "አዲስ መልእክት"
+
+#, c-format
+msgid "Couldn't connect to host: %s (%d)"
msgstr ""
-msgid "persist command failed"
+msgid "Failed to add buddy"
msgstr ""
-#, c-format
-msgid "No such user: %s"
+msgid "'addbuddy' command failed."
msgstr ""
-#, fuzzy
-msgid "User lookup"
-msgstr "ተጠቃሚ መርጫዎች"
+msgid "persist command failed"
+msgstr ""
msgid "Failed to remove buddy"
msgstr ""
@@ -5675,37 +5873,16 @@ msgstr ""
msgid "blocklist command failed"
msgstr ""
-#, fuzzy
-msgid "Invalid input condition"
-msgstr "ሰርቨር፦"
-
-msgid "Read buffer full (2)"
-msgstr ""
-
-#, fuzzy
-msgid "Unparseable message"
-msgstr "አዲስ መልእክት"
-
-#, c-format
-msgid "Couldn't connect to host: %s (%d)"
+msgid "Missing Cipher"
msgstr ""
-msgid "IM Friends"
+msgid "The RC4 cipher could not be found"
msgstr ""
-#, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-msgstr[1] ""
-
-#, fuzzy
-msgid "Add contacts from server"
-msgstr "ተገናኝቷል"
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
msgid "Add friends from MySpace.com"
msgstr ""
@@ -5751,10 +5928,6 @@ msgid "User"
msgstr "ተጠቃሚ (_U)"
#, fuzzy
-msgid "Profile"
-msgstr "የJabber ስህተት %s"
-
-#, fuzzy
msgid "Headline"
msgstr "እንደገና ሰይም (_R)"
@@ -5769,17 +5942,6 @@ msgstr ""
msgid "Client Version"
msgstr "የCTCP ዝርያ"
-#. Protocol won't log in now without a username set.. Disconnect
-#, fuzzy
-msgid "No username set"
-msgstr "ተጠቃሚ፦ (_U)"
-
-msgid "MySpaceIM - Please Set a Username"
-msgstr ""
-
-msgid "Please enter a username to check its availability:"
-msgstr ""
-
msgid "MySpaceIM - Username Available"
msgstr ""
@@ -5789,6 +5951,9 @@ msgstr ""
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr ""
+msgid "MySpaceIM - Please Set a Username"
+msgstr ""
+
#, fuzzy
msgid "This username is unavailable."
msgstr "ሰርቨርን የለም"
@@ -5796,6 +5961,14 @@ msgstr "ሰርቨርን የለም"
msgid "Please try another username:"
msgstr ""
+#. Protocol won't log in now without a username set.. Disconnect
+#, fuzzy
+msgid "No username set"
+msgstr "ተጠቃሚ፦ (_U)"
+
+msgid "Please enter a username to check its availability:"
+msgstr ""
+
#. TODO: icons for each zap
#. Lots of comments for translators:
#. Zap means "to strike suddenly and forcefully as if with a
@@ -6180,7 +6353,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr ""
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr ""
@@ -6449,23 +6621,18 @@ msgstr "ስም"
msgid "Screen Sharing"
msgstr "እስክሪን ስም"
-#, c-format
msgid "Free For Chat"
msgstr ""
-#, c-format
msgid "Not Available"
msgstr ""
-#, c-format
msgid "Occupied"
msgstr ""
-#, c-format
msgid "Web Aware"
msgstr ""
-#, c-format
msgid "Invisible"
msgstr ""
@@ -6510,7 +6677,7 @@ msgid ""
"only letters, numbers and spaces, or contain only numbers."
msgstr ""
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
#, fuzzy
msgid "Invalid username."
@@ -6527,7 +6694,7 @@ msgstr ""
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr ""
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6561,9 +6728,7 @@ msgid "_OK"
msgstr "እሺ"
#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
+msgid "You may be disconnected shortly. If so, check %s for updates."
msgstr ""
msgid "Unable to get a valid AIM login hash."
@@ -6693,7 +6858,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] ""
msgstr[1] ""
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, fuzzy, c-format
msgid "Unable to send message: %s"
msgstr "ተገናኝቷል"
@@ -6717,6 +6882,10 @@ msgstr "ኦንላይን"
msgid "Member Since"
msgstr ""
+#, fuzzy
+msgid "Profile"
+msgstr "የJabber ስህተት %s"
+
msgid "Your AIM connection may be lost."
msgstr ""
@@ -6973,6 +7142,7 @@ msgstr "አገናኝ"
msgid "Get AIM Info"
msgstr "መረጃ አግኝ"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr ""
@@ -7082,7 +7252,7 @@ msgstr ""
msgid "Attempting to connect to %s:%hu."
msgstr "ተገናኝቷል"
-#, fuzzy, c-format
+#, fuzzy
msgid "Attempting to connect via proxy server."
msgstr "ተገናኝቷል"
@@ -7188,7 +7358,7 @@ msgstr "ኦፔራ"
msgid "Visible"
msgstr ""
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
#, fuzzy
@@ -7282,18 +7452,53 @@ msgstr "የአባት ስም"
msgid "Could not change buddy information."
msgstr "የቢሮ መረጃ፦"
-#, c-format
-msgid "%d needs Q&A"
+#, fuzzy
+msgid "Mobile"
+msgstr "የሞቢል ስልክ፦"
+
+#, fuzzy
+msgid "Note"
+msgstr "ምንም"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "የቢሮ መረጃ፦"
+
+msgid "Change his/her memo as you like"
msgstr ""
#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "ምልክትን በሌላ ስም አስቀምጥ..."
+msgid "_Modify"
+msgstr "ለውጡ (_M)"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "ለውጡ (_M)"
-msgid "Input answer here"
+#, fuzzy
+msgid "Server says:"
+msgstr "ሰርቨር፦"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
+#, c-format
+msgid "%u requires verification"
msgstr ""
#, fuzzy
+msgid "Add buddy question"
+msgstr "የቢሮ መረጃ፦"
+
+#, fuzzy
+msgid "Enter answer here"
+msgstr "የጌም ማውሪያ"
+
+#, fuzzy
msgid "Send"
msgstr "ላክ"
@@ -7304,19 +7509,20 @@ msgstr "እስክሪን ስም"
msgid "Authorization denied message:"
msgstr ""
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr ""
#, fuzzy, c-format
-msgid "%d needs authentication"
+msgid "%u needs authorization"
msgstr "መድረክን አስወግድ"
#, fuzzy
msgid "Add buddy authorize"
msgstr "የቢሮ መረጃ፦"
-msgid "Input request here"
-msgstr ""
+#, fuzzy
+msgid "Enter request here"
+msgstr "የጌም ማውሪያ"
msgid "Would you be my friend?"
msgstr ""
@@ -7338,7 +7544,7 @@ msgid "Failed sending authorize"
msgstr "ፋይልን ላክ"
#, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr ""
#, c-format
@@ -7381,6 +7587,9 @@ msgstr "የቢሮ መረጃ፦"
msgid "You can only search for permanent Qun\n"
msgstr ""
+msgid "(Invalid UTF-8 string)"
+msgstr ""
+
msgid "Not member"
msgstr ""
@@ -7419,15 +7628,18 @@ msgstr ""
msgid "Join QQ Qun"
msgstr "ውሪን አገጣጥም"
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
+msgid "Input request here"
msgstr ""
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "ስልክ"
+
msgid "Successfully joined Qun"
msgstr ""
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
#, fuzzy
@@ -7438,7 +7650,7 @@ msgstr "የድምፅ ምርጫዎች"
msgid "Failed:"
msgstr "ሴት"
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
#, fuzzy
@@ -7450,11 +7662,11 @@ msgid ""
"this operation will eventually remove this Qun."
msgstr ""
-msgid "Sorry, you are not our style ..."
+msgid "Sorry, you are not our style"
msgstr ""
#, fuzzy
-msgid "Successfully changed Qun member"
+msgid "Successfully changed Qun members"
msgstr "ስልክ"
#, fuzzy
@@ -7465,7 +7677,7 @@ msgid "You have successfully created a Qun"
msgstr ""
#, fuzzy
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr "የቢሮ መረጃ፦"
#, fuzzy
@@ -7473,28 +7685,28 @@ msgid "Setup"
msgstr "አድርግ"
#, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr ""
#, c-format
-msgid "%d request to join Qun %d"
+msgid "%u request to join Qun %u"
msgstr ""
#, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr ""
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr "አስወግድ (_R)"
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "አስወግድ (_R)"
#, fuzzy, c-format
msgid "Unknown-%d"
@@ -7614,6 +7826,13 @@ msgstr "<b>ሁኔታ፦</b> %s"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<b>ሁኔታ፦</b> %s"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<b>ሁኔታ፦</b> %s"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7621,7 +7840,7 @@ msgid "<i>Feel free to join us!</i> :)"
msgstr ""
#, c-format
-msgid "About OpenQ r%s"
+msgid "About OpenQ %s"
msgstr ""
#, fuzzy
@@ -7641,6 +7860,10 @@ msgstr ""
msgid "About OpenQ"
msgstr ""
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "የቤት አድራሻ፦"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7671,7 +7894,6 @@ msgstr ""
msgid "QQ2008"
msgstr ""
-#. #endif
#, fuzzy
msgid "Connect by TCP"
msgstr "ተገናኝቷል"
@@ -7684,6 +7906,9 @@ msgstr "ሰርቨር፦"
msgid "Show server news"
msgstr "የቤት አድራሻ፦"
+msgid "Show chat room when msg comes"
+msgstr ""
+
#, fuzzy
msgid "Keep alive interval (seconds)"
msgstr "የIRC ስህተት"
@@ -7693,13 +7918,9 @@ msgid "Update interval (seconds)"
msgstr "የIRC ስህተት"
#, fuzzy
-msgid "Can not decrypt server reply"
+msgid "Cannot decrypt server reply"
msgstr "ተገናኝቷል"
-#, fuzzy
-msgid "Can not decrypt get server reply"
-msgstr "ሰርቨርን የለም"
-
#, c-format
msgid "Failed requesting token, 0x%02X"
msgstr ""
@@ -7719,20 +7940,20 @@ msgid "Activation required"
msgstr ""
#, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr ""
#, fuzzy
-msgid "Keep alive error"
-msgstr "የIRC ስህተት"
+msgid "Could not decrypt server reply"
+msgstr "ተገናኝቷል"
-msgid "Requesting captcha ..."
+msgid "Requesting captcha"
msgstr ""
-msgid "Checking code of captcha ..."
+msgid "Checking captcha"
msgstr ""
-msgid "Failed captcha verify"
+msgid "Failed captcha verification"
msgstr ""
#, fuzzy
@@ -7743,7 +7964,7 @@ msgstr "ምስሉን አስቀምጥ... (_S)"
msgid "Enter code"
msgstr "ሚስጢራዊ ቃልን ለውጥ"
-msgid "QQ Captcha Verifing"
+msgid "QQ Captcha Verification"
msgstr ""
#, fuzzy
@@ -7751,16 +7972,15 @@ msgid "Enter the text from the image"
msgstr "ተገናኝቷል"
#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
+msgid "Unknown reply when checking password (0x%02X)"
msgstr ""
#, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
msgstr ""
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr ""
@@ -7768,12 +7988,6 @@ msgstr ""
msgid "Socket error"
msgstr "ያልታወቀ ስህተት"
-#, fuzzy, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr "ተገናኝቷል"
-
#, fuzzy
msgid "Unable to read from socket"
msgstr "ተገናኝቷል"
@@ -7787,10 +8001,10 @@ msgid "Connection lost"
msgstr "ተገናኝቷል"
#, fuzzy
-msgid "Get server ..."
+msgid "Getting server"
msgstr "ተገናኝቷል"
-msgid "Request token"
+msgid "Requesting token"
msgstr ""
#, fuzzy
@@ -7802,17 +8016,13 @@ msgid "Invalid server or port"
msgstr "ሰርቨር፦"
#, fuzzy
-msgid "Connecting server ..."
+msgid "Connecting to server"
msgstr "ተገናኝቷል"
#, fuzzy
msgid "QQ Error"
msgstr "የIRC ስህተት"
-#, fuzzy
-msgid "Failed to send IM."
-msgstr "ተገናኝቷል"
-
#, fuzzy, c-format
msgid ""
"Server News:\n"
@@ -7821,6 +8031,12 @@ msgid ""
"%s"
msgstr "የቤት አድራሻ፦"
+#, fuzzy, c-format
+msgid "%s:%s"
+msgstr ""
+"%s\n"
+"%s፦ %s"
+
#, c-format
msgid "From %s:"
msgstr ""
@@ -7831,32 +8047,30 @@ msgid ""
"%s"
msgstr "የቢሮ መረጃ፦"
-msgid "Unknow SERVER CMD"
-msgstr ""
+#, fuzzy
+msgid "Unknown SERVER CMD"
+msgstr "ያልታወቀ ስህተት"
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
#, fuzzy
msgid "QQ Qun Command"
msgstr "ትእዛዝ"
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr ""
-
-msgid "Can not decrypt login reply"
-msgstr ""
+#, fuzzy
+msgid "Could not decrypt login reply"
+msgstr "ተገናኝቷል"
#, fuzzy
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr "ያልታወቀ ስህተት"
#, fuzzy
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr "ያልታወቀ ስህተት"
#, fuzzy, c-format
@@ -8699,10 +8913,6 @@ msgid "Unit"
msgstr ""
#, fuzzy
-msgid "Note"
-msgstr "ምንም"
-
-#, fuzzy
msgid "Join Chat"
msgstr "ውሪን አገጣጥም"
@@ -9340,6 +9550,10 @@ msgstr ""
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr ""
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "ሰርቨር፦"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -9377,190 +9591,10 @@ msgid "Auth Domain"
msgstr "አውቶማቲክ"
#, c-format
-msgid "Looking up %s"
-msgstr ""
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr ""
-
-#, c-format
-msgid "Signon: %s"
-msgstr ""
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr ""
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr ""
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr ""
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr ""
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr ""
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr ""
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr ""
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr ""
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr ""
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr ""
-
-#, c-format
-msgid "Failure."
-msgstr ""
-
-#, c-format
-msgid "Too many matches."
-msgstr ""
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr ""
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr ""
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr ""
-
-#, c-format
-msgid "Keyword ignored."
-msgstr ""
-
-#, c-format
-msgid "No keywords."
-msgstr ""
-
-#, c-format
-msgid "User has no directory information."
-msgstr ""
-
-#, c-format
-msgid "Country not supported."
-msgstr ""
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr ""
-
-#, fuzzy, c-format
-msgid "Incorrect username or password."
-msgstr "አዲስ ሚስጢራዊ ቃል"
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr ""
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr ""
-
-#, c-format
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
-msgstr ""
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr ""
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr ""
-
-#, fuzzy
-msgid "Invalid Groupname"
-msgstr "እስክሪን ስም"
-
-msgid "Connection Closed"
-msgstr ""
-
-msgid "Waiting for reply..."
-msgstr ""
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr ""
-
-msgid "Password Change Successful"
-msgstr ""
-
-msgid "_Group:"
-msgstr "መድረክ፦ (_G)"
-
-msgid "Get Dir Info"
-msgstr ""
-
-msgid "Set Dir Info"
-msgstr ""
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr ""
-
-msgid "File transfer failed; other side probably canceled."
-msgstr ""
-
-msgid "Could not connect for transfer."
-msgstr ""
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr ""
-
-#, fuzzy
-msgid "Save As..."
-msgstr "ምልክትን በሌላ ስም አስቀምጥ..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr ""
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
+msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
-#, c-format
-msgid "%s has sent you a webcam invite, which is not yet supported."
+msgid "Your SMS was not delivered"
msgstr ""
msgid "Your Yahoo! message did not get sent."
@@ -9834,13 +9868,8 @@ msgstr ""
msgid "Last Update"
msgstr "የአባት ስም"
-#, c-format
-msgid "User information for %s unavailable"
-msgstr ""
-
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr ""
msgid ""
@@ -10158,10 +10187,6 @@ msgstr ""
msgid "Extended away"
msgstr ""
-#, fuzzy
-msgid "Mobile"
-msgstr "የሞቢል ስልክ፦"
-
msgid "Listening to music"
msgstr ""
@@ -10203,16 +10228,6 @@ msgstr ""
msgid "%x %X"
msgstr ""
-#, fuzzy, c-format
-msgid "Error Reading %s"
-msgstr " የመጀመሪያው ሚስጢራዊ ቃል"
-
-#, 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 ""
-
msgid "Calculating..."
msgstr ""
@@ -10286,6 +10301,12 @@ msgid "Unable to connect to %s: %s"
msgstr "ተገናኝቷል"
#, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+
+#, c-format
msgid " - %s"
msgstr ""
@@ -10320,6 +10341,16 @@ msgstr "ተገናኝቷል"
msgid "Address already in use."
msgstr ""
+#, fuzzy, c-format
+msgid "Error Reading %s"
+msgstr " የመጀመሪያው ሚስጢራዊ ቃል"
+
+#, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+
#, fuzzy
msgid "Internet Messenger"
msgstr "አዲስ መልእክት"
@@ -10368,10 +10399,9 @@ msgstr "አያያዝ ቦታ ቅጂ"
msgid "Use this buddy _icon for this account:"
msgstr ""
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s ምርጫዎች"
+#, fuzzy
+msgid "_Advanced"
+msgstr "ተወው"
msgid "Use GNOME Proxy Settings"
msgstr ""
@@ -10406,9 +10436,6 @@ msgstr ""
msgid "you can see the butterflies mating"
msgstr ""
-msgid "Proxy Options"
-msgstr ""
-
msgid "Proxy _type:"
msgstr ""
@@ -10440,8 +10467,8 @@ msgid "Create _this new account on the server"
msgstr ""
#, fuzzy
-msgid "_Advanced"
-msgstr "ተወው"
+msgid "_Proxy"
+msgstr "ፖርት"
#, fuzzy
msgid "Enabled"
@@ -10510,6 +10537,17 @@ msgid "I_M"
msgstr ""
#, fuzzy
+msgid "_Audio Call"
+msgstr "ውሪ"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "ውሪ"
+
+#, fuzzy
msgid "_Send File..."
msgstr "ፋይልን ላክ"
@@ -10671,6 +10709,10 @@ msgid "/Tools/_Certificates"
msgstr "ምርጫዎች"
#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "ምርጫዎች"
+
+#, fuzzy
msgid "/Tools/Plu_gins"
msgstr "ምርጫዎች"
@@ -10682,10 +10724,6 @@ msgid "/Tools/Pr_ivacy"
msgstr ""
#, fuzzy
-msgid "/Tools/Smile_y"
-msgstr "ምርጫዎች"
-
-#, fuzzy
msgid "/Tools/_File Transfers"
msgstr "ምርጫዎች"
@@ -10812,7 +10850,7 @@ msgstr ""
msgid "By status"
msgstr "ሁኔታ፦"
-msgid "By log size"
+msgid "By recent log activity"
msgstr ""
#, fuzzy, c-format
@@ -10831,6 +10869,9 @@ msgstr "አገናኝ"
msgid "Re-enable"
msgstr "እንደገና ሰይም (_R)"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr ""
@@ -10924,6 +10965,9 @@ msgstr ""
msgid "A_lias:"
msgstr "የጌም ማውሪያ"
+msgid "_Group:"
+msgstr "መድረክ፦ (_G)"
+
msgid "Auto_join when account becomes online."
msgstr ""
@@ -10983,12 +11027,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr ""
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-
msgid "_Buddy:"
msgstr ""
@@ -11071,6 +11109,22 @@ msgstr ""
msgid "/Conversation/Clea_r Scrollback"
msgstr "መድረክን አስወግድ"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "ተገናኝቷል"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "ተገናኝቷል"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "ተገናኝቷል"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "ተገናኝቷል"
+
msgid "/Conversation/Se_nd File..."
msgstr ""
@@ -11150,6 +11204,18 @@ msgid "/Conversation/View Log"
msgstr ""
#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "ተገናኝቷል"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "ተገናኝቷል"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "ተገናኝቷል"
+
+#, fuzzy
msgid "/Conversation/Send File..."
msgstr "መድረክን አስወግድ"
@@ -11344,6 +11410,9 @@ msgstr "አድራሻ፦"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr ""
@@ -11494,6 +11563,10 @@ msgstr "ዝምብለህ ይግባ"
msgid "Ubuntu Georgian Translators"
msgstr ""
+#, fuzzy
+msgid "Khmer"
+msgstr "ኦፔራ"
+
msgid "Kannada"
msgstr ""
@@ -11516,6 +11589,9 @@ msgstr ""
msgid "Macedonian"
msgstr ""
+msgid "Mongolian"
+msgstr ""
+
msgid "Bokmål Norwegian"
msgstr ""
@@ -11628,7 +11704,24 @@ msgid ""
msgstr ""
#, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr ""
+
+#, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr ""
msgid "Current Developers"
@@ -11956,16 +12049,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr "አያያዝ ቦታ ቅጂ"
-#, fuzzy
-msgid "_Copy Email Address"
-msgstr "ኢሜያል አድራሻ"
-
-msgid "_Open Link in Browser"
-msgstr ""
-
-msgid "_Copy Link Location"
-msgstr "አያያዝ ቦታ ቅጂ"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12221,6 +12304,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12238,6 +12322,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12269,11 +12354,25 @@ msgstr ""
msgid "Pidgin"
msgstr "ተጨማሪ ፕሮግራሞች (Plugins)"
-#, fuzzy
-msgid "Open All Messages"
-msgstr "አዲስ መልእክት"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+msgid "Calling..."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
msgstr ""
#, c-format
@@ -12303,6 +12402,27 @@ msgid ""
"The 'Manual' browser command has been chosen, but no command has been set."
msgstr ""
+#, fuzzy
+msgid "Open All Messages"
+msgstr "አዲስ መልእክት"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr ""
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "የቢሮ መረጃ፦"
+
+msgid "Dismiss"
+msgstr ""
+
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr ""
+
+#, fuzzy
+msgid "No message"
+msgstr "(1 መልዕክት)"
+
msgid "The following plugins will be unloaded."
msgstr ""
@@ -12352,6 +12472,10 @@ msgstr ""
msgid "Select a file"
msgstr ""
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "የቢሮ መረጃ፦"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr ""
@@ -12430,6 +12554,50 @@ msgstr ""
msgid "Pounce Target"
msgstr ""
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "ጌም - ምልክትን አስቀምጥ"
+
+#, c-format
+msgid "Paused while typing"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "ጌም - ምልክትን አስቀምጥ"
+
+#, c-format
+msgid "Returned from being idle"
+msgstr ""
+
+#, c-format
+msgid "Returned from being away"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "ጌም - ምልክትን አስቀምጥ"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "ጌም - ምልክትን አስቀምጥ"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "ምልክትን በሌላ ስም አስቀምጥ..."
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "ድረ-ገጽ፦"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "[መልዕክት የለም]"
+
+#, c-format
+msgid "Unknown.... Please report this!"
+msgstr ""
+
msgid "Smiley theme failed to unpack."
msgstr ""
@@ -12452,6 +12620,12 @@ msgstr "አቋራጮች"
msgid "Cl_ose conversations with the Escape key"
msgstr "ተገናኝቷል"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "የቢሮ መረጃ፦"
+
+#. System Tray
msgid "System Tray Icon"
msgstr ""
@@ -12570,10 +12744,6 @@ msgstr ""
msgid "Cannot start browser configuration program."
msgstr "የቢሮ መረጃ፦"
-#, fuzzy
-msgid "ST_UN server:"
-msgstr "ሰርቨር፦"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr ""
@@ -12602,6 +12772,10 @@ msgstr "ፖርት፦"
msgid "_End port:"
msgstr "ፖርት፦"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr ""
@@ -12630,6 +12804,10 @@ msgstr ""
msgid "No proxy"
msgstr ""
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
#, fuzzy
msgid "_User:"
msgstr "ተጠቃሚ (_U)"
@@ -12797,10 +12975,10 @@ msgstr ""
msgid "Auto-away"
msgstr ""
-msgid "Change status when _idle"
+msgid "_Minutes before becoming idle:"
msgstr ""
-msgid "_Minutes before becoming idle:"
+msgid "Change status when _idle"
msgstr ""
#, fuzzy
@@ -12962,6 +13140,12 @@ msgstr "አስቀምጥ እና ተጠቀም"
msgid "Status for %s"
msgstr "ሁኔታ፦ %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
#, fuzzy
msgid "Custom Smiley"
msgstr "ምስል አስገባ"
@@ -12972,15 +13156,15 @@ msgstr ""
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
+msgstr ""
+
#, fuzzy
msgid "Duplicate Shortcut"
msgstr "የቢሮ መረጃ፦"
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
-msgstr ""
-
msgid "Please select an image for the smiley."
msgstr ""
@@ -12993,18 +13177,22 @@ msgid "Add Smiley"
msgstr "ምስል አስገባ"
#, fuzzy
-msgid "Smiley _Image"
+msgid "_Image:"
msgstr "ምስሉን አስቀምጥ... (_S)"
-#. Smiley shortcut
+#. Shortcut text
#, fuzzy
-msgid "Smiley S_hortcut"
+msgid "S_hortcut text:"
msgstr "አቋራጮች"
#, fuzzy
msgid "Smiley"
msgstr "ምስል አስገባ"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "አቋራጮች"
+
msgid "Custom Smiley Manager"
msgstr ""
@@ -13124,6 +13312,17 @@ msgid ""
msgstr ""
#, fuzzy
+msgid "_Open Link"
+msgstr "ኦንላይን"
+
+msgid "_Copy Link Location"
+msgstr "አያያዝ ቦታ ቅጂ"
+
+#, fuzzy
+msgid "_Copy Email Address"
+msgstr "ኢሜያል አድራሻ"
+
+#, fuzzy
msgid "Save File"
msgstr "ምልክትን በሌላ ስም አስቀምጥ..."
@@ -14099,9 +14298,6 @@ msgstr ""
msgid "Only when docked"
msgstr ""
-msgid "_Flash window when chat messages are received"
-msgstr ""
-
#, fuzzy
msgid "Windows Pidgin Options"
msgstr "የዝምብለህ ይግባ መርጫዎች"
@@ -14155,6 +14351,63 @@ msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr ""
#, fuzzy
+#~ msgid "Invite message"
+#~ msgstr "(1 መልዕክት)"
+
+#, fuzzy
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "ተገናኝቷል"
+
+#, fuzzy
+#~ msgid "Add buddy Q&A"
+#~ msgstr "ምልክትን በሌላ ስም አስቀምጥ..."
+
+#, fuzzy
+#~ msgid "Can not decrypt get server reply"
+#~ msgstr "ሰርቨርን የለም"
+
+#, fuzzy
+#~ msgid "Keep alive error"
+#~ msgstr "የIRC ስህተት"
+
+#, fuzzy
+#~ msgid ""
+#~ "Lost connection with server:\n"
+#~ "%d, %s"
+#~ msgstr "ተገናኝቷል"
+
+#, fuzzy
+#~ msgid "Connecting server ..."
+#~ msgstr "ተገናኝቷል"
+
+#, fuzzy
+#~ msgid "Incorrect username or password."
+#~ msgstr "አዲስ ሚስጢራዊ ቃል"
+
+#, fuzzy
+#~ msgid "Invalid Groupname"
+#~ msgstr "እስክሪን ስም"
+
+#, fuzzy
+#~ msgid "Save As..."
+#~ msgstr "ምልክትን በሌላ ስም አስቀምጥ..."
+
+#~ msgid "%s Options"
+#~ msgstr "%s ምርጫዎች"
+
+#, fuzzy
+#~ msgid "ST_UN server:"
+#~ msgstr "ሰርቨር፦"
+
+#, fuzzy
+#~ msgid "Smiley _Image"
+#~ msgstr "ምስሉን አስቀምጥ... (_S)"
+
+#, fuzzy
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "አቋራጮች"
+
+#, fuzzy
#~ msgid "Primary Information"
#~ msgstr "የቢሮ መረጃ፦"
@@ -14187,15 +14440,6 @@ msgstr ""
#~ msgstr "መድረክን አስወግድ"
#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr ""
-#~ "%s\n"
-#~ "%s፦ %s"
-
-#, fuzzy
#~ msgid "System Message"
#~ msgstr "አዲስ መልእክት"
@@ -14338,10 +14582,6 @@ msgstr ""
#~ msgstr "አዲስ ሚስጢራዊ ቃል"
#, fuzzy
-#~ msgid "Unable to connect to OIM server"
-#~ msgstr "ተገናኝቷል"
-
-#, fuzzy
#~ msgid "_Merge"
#~ msgstr "መልእክት፦ (_M)"
@@ -14481,10 +14721,6 @@ msgstr ""
#~ msgstr "<B>UIN:</B> %s<BR><B>ሁኔታ:</B> %s<HR>%s"
#, fuzzy
-#~ msgid "Web aware"
-#~ msgstr "ድረ-ገጽ፦"
-
-#, fuzzy
#~ msgid "EMail"
#~ msgstr "ኢሜይል"
@@ -14510,9 +14746,6 @@ msgstr ""
#~ msgstr[0] "(%d መልዕክቶች)"
#~ msgstr[1] "(%d መልዕክቶች)"
-#~ msgid "(1 message)"
-#~ msgstr "(1 መልዕክት)"
-
#, fuzzy
#~ msgid "Mail Server"
#~ msgstr "ሰርቨር፦"
@@ -14617,10 +14850,6 @@ msgstr ""
#~ msgstr "ምርጫዎች"
#, fuzzy
-#~ msgid "Initiate Chat"
-#~ msgstr "የጌም ማውሪያ"
-
-#, fuzzy
#~ msgid "_Browse"
#~ msgstr "መቃኛ (_B)"
diff --git a/po/ar.po b/po/ar.po
index b68ed8c6ac..c137f0b669 100644
--- a/po/ar.po
+++ b/po/ar.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ar\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-11-01 09:57+0000\n"
+"POT-Creation-Date: 2009-04-30 10:36-0400\n"
"PO-Revision-Date: 2008-11-01 17:41+0200\n"
"Last-Translator: Khaled Hosny <khaledhosny@eglug.org>\n"
"Language-Team: Arabic <doc@arabeyes.org>\n"
@@ -21,7 +21,8 @@ msgstr ""
"X-Poedit-Language: Arabic\n"
"X-Poedit-SourceCharset: utf-8\n"
"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
+"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
+"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
#. Translators may want to transliterate the name.
#. It is not to be translated.
@@ -32,13 +33,13 @@ msgstr "فِنْش"
msgid "%s. Try `%s -h' for more information.\n"
msgstr "%s. جرّب `%s -h' لمزيد من المعلومات.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -593,25 +594,13 @@ msgstr "لقد فارقت هذه الدردشة."
msgid "Logging started. Future messages in this conversation will be logged."
msgstr "بدأ التسجيل. الرسائل اللاحقة في هذه المحادثة ستسجل."
-msgid "Logging stopped. Future messages in this conversation will not be logged."
+msgid ""
+"Logging stopped. Future messages in this conversation will not be logged."
msgstr "أُوقِف التسجيل. الرسائل اللاحقة في هذه المحادثة لن تسجل."
msgid "Send To"
msgstr "أرسل إلى"
-msgid "Invite message"
-msgstr "رسالة الدعوة"
-
-msgid "Invite"
-msgstr "ادعُ"
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"أدخل اسم المستخدم الذي ترغب في دعوته،\n"
-"مع رسالة دعوة اختيارية."
-
msgid "Conversation"
msgstr "محادثة"
@@ -680,7 +669,8 @@ msgstr "me &lt;إجراء&gt;: يرسل فعلا على نمط آي‌آر‌س
msgid ""
"debug &lt;option&gt;: Send various debug information to the current "
"conversation."
-msgstr "debug &lt;option&gt;: يرسل معلومات متنوعة للتنقيح إلى المحادثة الحالية."
+msgstr ""
+"debug &lt;option&gt;: يرسل معلومات متنوعة للتنقيح إلى المحادثة الحالية."
msgid "clear: Clears the conversation scrollback."
msgstr "clear: يمسح ما سبق في نافذة المحادثة."
@@ -831,9 +821,11 @@ msgstr ""
msgid ""
"Instant messages will only be logged if the \"Log all instant messages\" "
"preference is enabled."
-msgstr "الرسائل الفورية ستسجل فقط إذا كان خيار \"سجل جميع الرسائل الفورية\" مفعلا."
+msgstr ""
+"الرسائل الفورية ستسجل فقط إذا كان خيار \"سجل جميع الرسائل الفورية\" مفعلا."
-msgid "Chats will only be logged if the \"Log all chats\" preference is enabled."
+msgid ""
+"Chats will only be logged if the \"Log all chats\" preference is enabled."
msgstr "الدردشات ستسجل فقط إذا كان خيار \"سجل جميع الدردشات\" مفعلا.."
msgid "No logs were found"
@@ -860,6 +852,41 @@ msgstr "كل المحادثات"
msgid "System Log"
msgstr "سجل النظام"
+#, fuzzy
+msgid "Calling ... "
+msgstr "يجري حسابات..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "اقبل"
+
+msgid "Reject"
+msgstr "ارفض"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "لقد فارقت القناة%s%s"
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "بريد إلكتروني"
@@ -898,6 +925,9 @@ msgstr "استمر"
msgid "IM"
msgstr "رسالة فورية"
+msgid "Invite"
+msgstr "ادعُ"
+
msgid "(none)"
msgstr "(بدون)"
@@ -941,7 +971,8 @@ msgstr "عطل أثناء تحميل الملحقة"
msgid "The selected file is not a valid plugin."
msgstr "الملف المختار ليس ملحقة سليمة."
-msgid "Please open the debug window and try again to see the exact error message."
+msgid ""
+"Please open the debug window and try again to see the exact error message."
msgstr "من فضلك افتح نافذة التنقيح وحاول أن ترى رسالة العطل بدقّة."
msgid "Select plugin to install"
@@ -1143,7 +1174,6 @@ msgstr "الدقائق المنقضية قبل تغيير الحالة"
msgid "Change status to"
msgstr "غيّر الحالة إلى"
-#. Conversations
msgid "Conversations"
msgstr "محادثات"
@@ -1310,7 +1340,7 @@ msgstr "النّوع"
#. PurpleStatusPrimitive
#. id - use default
#. name - use default
-#. savable
+#. saveable
#. user_settable
#. not independent
#. Attributes - each status can have a message.
@@ -1504,6 +1534,28 @@ msgstr "GntLastlog"
msgid "Lastlog plugin."
msgstr "ملحقة آخر سجل."
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "مسار اللحن"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "الحسابات"
@@ -1604,13 +1656,6 @@ msgstr "أتقبل شهادة %s؟"
msgid "SSL Certificate Verification"
msgstr "التّحقّق من شهادة SSL"
-#. Number of actions
-msgid "Accept"
-msgstr "اقبل"
-
-msgid "Reject"
-msgstr "ارفض"
-
msgid "_View Certificate..."
msgstr "اعرض ال_شهادة..."
@@ -1641,10 +1686,12 @@ msgstr "سلسلة شهادات غير صحيحة"
msgid ""
"You have no database of root certificates, so this certificate cannot be "
"validated."
-msgstr "ليست لديك قاعدة بيانات بالشهادات الجذر، لذا لا يمكن التحقق من هذه الشهادة."
+msgstr ""
+"ليست لديك قاعدة بيانات بالشهادات الجذر، لذا لا يمكن التحقق من هذه الشهادة."
#. vrq will be completed by user_auth
-msgid "The root certificate this one claims to be issued by is unknown to Pidgin."
+msgid ""
+"The root certificate this one claims to be issued by is unknown to Pidgin."
msgstr "الشهادة الجذر التي تزعم هذه أنها أُصدِرت منها مجهولة لبِدْجِن."
#, c-format
@@ -1752,6 +1799,16 @@ msgstr "%s ترك الغرفة."
msgid "%s left the room (%s)."
msgstr "%s ترك الغرفة (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "ادعُ إلى الاجتماع"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr "أدخل اسم المستخدم الذي ترغب في دعوته، مع رسالة دعوة اختيارية."
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "تعذَّر الاتصال: %s"
@@ -1796,6 +1853,7 @@ msgstr ""
"عطل في القراءة من صيرورة الاستجلاء:\n"
"%s"
+#, c-format
msgid "Resolver process exited without answering our request"
msgstr ""
@@ -2021,7 +2079,8 @@ msgstr ""
msgid ""
"True if the command used to handle this type of URL should be run in a "
"terminal."
-msgstr "صحيح إذا كان الأمر المستخدم لمعالجة هذا النوع من المسارات سيشتغل في مرقاب."
+msgstr ""
+"صحيح إذا كان الأمر المستخدم لمعالجة هذا النوع من المسارات سيشتغل في مرقاب."
msgid "Whether the specified command should handle \"aim\" URLs"
msgstr "إذا ما كان الأمر المحدّد سيستخدم لمعالجة مسارات \"aim\""
@@ -2107,7 +2166,8 @@ msgstr "لا يتطابق الرقم السحري للملحقة %d (المطل
msgid "ABI version mismatch %d.%d.x (need %d.%d.x)"
msgstr "لا تتطابق الواجهة التنفيذية للتطبيق %d.%d.x (المطلوب %d.%d.x)"
-msgid "Plugin does not implement all required functions (list_icon, login and close)"
+msgid ""
+"Plugin does not implement all required functions (list_icon, login and close)"
msgstr "الملحقة لا تطبق جميع الوظائف المطلوبة ((list_icon، الولوج والغلق)"
#, c-format
@@ -2317,7 +2377,8 @@ msgstr "ملحقة اختبار دعم IPC كعميل."
msgid ""
"Test plugin IPC support, as a client. This locates the server plugin and "
"calls the commands registered."
-msgstr "ملحقة اختبارية لدعم IPC. تحدد موضع النركيبة الخادوم ويستدعي الأوامر المسجلة."
+msgstr ""
+"ملحقة اختبارية لدعم IPC. تحدد موضع النركيبة الخادوم ويستدعي الأوامر المسجلة."
#. *< type
#. *< ui_requirement
@@ -2568,6 +2629,32 @@ msgstr "احفظ الرسائل بلا اتصال في الإشعار"
msgid "Do not ask. Always save in pounce."
msgstr "لاتسأل. دائمًا احفظ في إشعارات."
+#, fuzzy
+msgid "One Time Password"
+msgstr "أدخل كلمة السر"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2762,17 +2849,16 @@ msgid ""
"The Apple Bonjour For Windows toolkit wasn't found, see the FAQ at: http://d."
"pidgin.im/BonjourWindows for more information."
msgstr ""
-"لم يُعثر على عدة أدوات أبل بونجور لويندوز، راجع الأسئلة الشائعة في: "
-"http://d.pidgin.im/BonjourWindows "
-"لمزيد من المعلومات."
+"لم يُعثر على عدة أدوات أبل بونجور لويندوز، راجع الأسئلة الشائعة في: http://d."
+"pidgin.im/BonjourWindows لمزيد من المعلومات."
msgid "Unable to listen for incoming IM connections\n"
msgstr "تعذّر الاستماع إلى اتصالات التراسل الفوري الواردة\n"
-msgid "Unable to establish connection with the local mDNS server. Is it running?"
+msgid ""
+"Unable to establish connection with the local mDNS server. Is it running?"
msgstr "تعذر الاتصال بخادوم mDNS المحلّي. هل يعمل؟"
-#. Creating the options for the protocol
msgid "First name"
msgstr "الاسم الأول"
@@ -2804,6 +2890,11 @@ msgstr "ملحقة بروتوكول بونجور"
msgid "Purple Person"
msgstr "شخص أرجواني"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "المحلية"
+
msgid "Bonjour"
msgstr "بونجور"
@@ -2959,6 +3050,7 @@ msgstr "اختر دردشة للصديق: %s"
msgid "Add to chat..."
msgstr "أشرك في الدردشة..."
+#. Global
msgid "Available"
msgstr "متاح"
@@ -3299,7 +3391,19 @@ msgstr "رفض الخادوم الكنية التي اخترتها. من الم
msgid ""
"Your selected account name was rejected by the server. It probably contains "
"invalid characters."
-msgstr "رفض الخادوم اسم الحساب الذي اخترته. من المحتمل أنها تحتوي محارف غير صالحة."
+msgstr ""
+"رفض الخادوم اسم الحساب الذي اخترته. من المحتمل أنها تحتوي محارف غير صالحة."
+
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "اسم الدردشة هذا مستخدم بالفعلً"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "الاسم المستعار"
msgid "Cannot change nick"
msgstr "تعذّر تغيير الكنية"
@@ -3602,6 +3706,41 @@ msgstr "تحدٍ غير صحيح من الخادوم"
msgid "SASL error"
msgstr "عطل في SASL"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "لا سبب معطى"
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "إصدارة غير مدعومة"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"تعذَّر الاتصال بالخادوم:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"تعذَّر الاتصال بالخادوم:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "تعذّر استبداء الاتصال"
+
+msgid "Unable to create socket"
+msgstr "تعذّر إنشاء مقبس"
+
+msgid "Write error"
+msgstr "عطل في الكتابة"
+
msgid "Full Name"
msgstr "الاسم الكامل"
@@ -3658,7 +3797,8 @@ msgstr "حرِّر XMPP vCard"
msgid ""
"All items below are optional. Enter only the information with which you feel "
"comfortable."
-msgstr "جميع العناصر التالية اختيارية. أدخل فقط المعلومات التي لا يزعجك الإفصاح عنها."
+msgstr ""
+"جميع العناصر التالية اختيارية. أدخل فقط المعلومات التي لا يزعجك الإفصاح عنها."
msgid "Client"
msgstr "العميل"
@@ -3666,6 +3806,10 @@ msgstr "العميل"
msgid "Operating System"
msgstr "نظام التشغيل"
+#, fuzzy
+msgid "Local Time"
+msgstr "الملف المحلي:"
+
msgid "Last Activity"
msgstr "آخر نشاط"
@@ -3994,9 +4138,6 @@ msgstr "ابحث عن الغرف"
msgid "You require encryption, but it is not available on this server."
msgstr "أنت تتطلب استخدام التعمية لكنها غير متاحة على الخادوم."
-msgid "Write error"
-msgstr "عطل في الكتابة"
-
msgid "Ping timeout"
msgstr "مهلة بِنْج"
@@ -4005,14 +4146,9 @@ msgstr "عطل في القراءة"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"تعذَّر الاتصال بالخادوم:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "تعذّر إنشاء مقبس"
msgid "Invalid XMPP ID"
msgstr "هوية XMPP غير صحيحة"
@@ -4020,6 +4156,10 @@ msgstr "هوية XMPP غير صحيحة"
msgid "Invalid XMPP ID. Domain must be set."
msgstr "هوية XMPP غير صحيحة. يجب تحديد النطاق."
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "فشل الاتصال بالخادوم."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "نجح تسجيل %s@%s"
@@ -4062,7 +4202,8 @@ msgstr "التاريخ"
msgid "Unregister"
msgstr "ألغ التسجيل"
-msgid "Please fill out the information below to change your account registration."
+msgid ""
+"Please fill out the information below to change your account registration."
msgstr "من فضلك املأ المعلومات أدناه لتغير تسجيل حسابك."
msgid "Please fill out the information below to register your new account."
@@ -4103,9 +4244,18 @@ msgstr "يجري الاستيثاق"
msgid "Re-initializing Stream"
msgstr "تجري إعادة استبداء التيار"
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr "غير مصرح"
+msgid "Mood"
+msgstr "المزاج"
+
+msgid "Now Listening"
+msgstr "الآن يستمع"
+
msgid "Both"
msgstr "كلاهما"
@@ -4127,12 +4277,6 @@ msgstr "لا شيء"
msgid "Subscription"
msgstr "الاشتراك"
-msgid "Mood"
-msgstr "المزاج"
-
-msgid "Now Listening"
-msgstr "الآن يستمع"
-
msgid "Mood Text"
msgstr "نص المزاج"
@@ -4370,18 +4514,24 @@ msgstr "تعذّر ركل المستخدم %s"
msgid "Unable to ping user %s"
msgstr "تعذّر إرسال ping للمستخدم %s"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr "تعذّر الرنّ، لأنه لا يُعرف أي شيء عن المستخدم %s."
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr "تعذّر الرنّ، لأن المستخدم %s قد لا يكون متصلا."
-#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+#, fuzzy, c-format
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "تعذّر الرنّ، لأن المستخدم %s لا يدعمه."
+#, c-format
+msgid "Buzzing %s..."
+msgstr "يرن على %s..."
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
msgid "Buzz"
@@ -4391,9 +4541,34 @@ msgstr "رن"
msgid "%s has buzzed you!"
msgstr "‏%s رنّ عليك"
-#, c-format
-msgid "Buzzing %s..."
-msgstr "يرن على %s..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "تعذّر إرسال ملف إلى %s، JID غير صحيحة"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "تعذّر إرسال ملف إلى %s، المستخدم ليس متصلا"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr "تعذّر إرسال ملف إلى %s، ليس مشتركا في تواجد المستخدم"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "فشل التسجيل"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "من فضلك حدد موْرِد %s الذي تود إرسال ملف إليه"
+
+msgid "Select a Resource"
+msgstr "اختر مَوْرِدا"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "ابدأ _دردشة"
msgid "config: Configure a chat room."
msgstr ""
@@ -4454,7 +4629,8 @@ msgstr ""
"kick &lt;user&gt; [reason]:\n"
"اركل مستخدما خارج الغرفة."
-msgid "msg &lt;user&gt; &lt;message&gt;: Send a private message to another user."
+msgid ""
+"msg &lt;user&gt; &lt;message&gt;: Send a private message to another user."
msgstr ""
"msg &lt;user&gt; &lt;message&gt;:\n"
"ارسل رسالة خاصة إلى مستخدم آخر."
@@ -4565,6 +4741,21 @@ msgstr "عطل أثناء الانضمام للدردشة %s"
msgid "Error in chat %s"
msgstr "عطل في دردشة %s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "حدث عطل أثناء فتح الملف."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "فشل إرسال الملف"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "فشل فتح ملف '%s': %s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr "تعذّر إرسال ملف إلى %s، المستخدم لا يدعم نقل الملفات"
@@ -4588,9 +4779,6 @@ msgstr "تعذّر إرسال ملف إلى %s، ليس مشتركا في توا
msgid "Please select the resource of %s to which you would like to send a file"
msgstr "من فضلك حدد موْرِد %s الذي تود إرسال ملف إليه"
-msgid "Select a Resource"
-msgstr "اختر مَوْرِدا"
-
msgid "Edit User Mood"
msgstr "حرر مزاج المستخدم"
@@ -4623,8 +4811,19 @@ msgstr "أفعال"
msgid "Select an action"
msgstr "اختر فعلا"
-msgid "Unable to retrieve MSN Address Book"
-msgstr "تعذّر جلب دفتر عناوين MSN "
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr "تعذّرت إضافة \"%s\"."
+
+msgid "Buddy Add error"
+msgstr ""
+
+#, fuzzy
+msgid "The username specified does not exist."
+msgstr "اسم المستخدم المحدد غير صالح."
#, c-format
msgid "Buddy list synchronization issue in %s (%s)"
@@ -4646,165 +4845,218 @@ msgstr ""
"‏%s مدرج في القائمة المحلية لكن ليس على قائمة الخادوم. هل تريد أن يضاف هذا "
"الصديق؟"
+#, c-format
msgid "Unable to parse message"
msgstr "تعذّر تحليل الرسالة"
+#, c-format
msgid "Syntax Error (probably a client bug)"
msgstr "خطأ نحوي (غالبا علة في العميل)"
+#, c-format
msgid "Invalid email address"
msgstr "عنوان بريد إلكترونى غير صالح"
+#, c-format
msgid "User does not exist"
msgstr "المستخدم غير موجود"
+#, c-format
msgid "Fully qualified domain name missing"
msgstr "يفتقد اسم نطاق كامل"
+#, c-format
msgid "Already logged in"
msgstr "والج بالفعل"
+#, c-format
msgid "Invalid username"
msgstr "اسم مستخدم غير صالح"
+#, c-format
msgid "Invalid friendly name"
msgstr "اسم ودّي غير صالح"
+#, c-format
msgid "List full"
msgstr "القائمة ممتلئة"
+#, c-format
msgid "Already there"
msgstr "هنا بالفعل"
+#, c-format
msgid "Not on list"
msgstr "ليس في القائمة"
+#, c-format
msgid "User is offline"
msgstr "المستخدم غير متصل"
+#, c-format
msgid "Already in the mode"
msgstr "في هذا الطور بالفعل"
+#, c-format
msgid "Already in opposite list"
msgstr "بالفعل في القائمة المقابلة"
+#, c-format
msgid "Too many groups"
msgstr "مجموعات كثيرة جدا"
+#, c-format
msgid "Invalid group"
msgstr "المجموعة غير صالحة"
+#, c-format
msgid "User not in group"
msgstr "المستخدم ليس في المجموعة"
+#, c-format
msgid "Group name too long"
msgstr "اسم المجموعة طويل جدًا"
+#, c-format
msgid "Cannot remove group zero"
msgstr "لايمكن إزالة المجموعة صفر"
+#, c-format
msgid "Tried to add a user to a group that doesn't exist"
msgstr "حاولت إضافة مستخدم إلى مجموعة لا وجود لها"
+#, c-format
msgid "Switchboard failed"
msgstr "عطل في لوحة التحويل"
+#, c-format
msgid "Notify transfer failed"
msgstr "فشل تنبيه النقل"
+#, c-format
msgid "Required fields missing"
msgstr "حقول مطلوبة خاوية"
+#, c-format
msgid "Too many hits to a FND"
msgstr ""
+#, c-format
msgid "Not logged in"
msgstr "لم يلج"
+#, c-format
msgid "Service temporarily unavailable"
msgstr "الخدمة غير متوفّرة مُؤقّتًا"
+#, c-format
msgid "Database server error"
msgstr "خطأ في خادوم قاعدة البيانات"
+#, c-format
msgid "Command disabled"
msgstr "عُطِّل الأمر"
+#, c-format
msgid "File operation error"
msgstr "خطأ في عملية الملف"
+#, c-format
msgid "Memory allocation error"
msgstr "خطأ في تخصيص الذاكرة"
+#, c-format
msgid "Wrong CHL value sent to server"
msgstr "أُرسِلت قيمة CHL خطأ للخادوم"
+#, c-format
msgid "Server busy"
msgstr "الخادوم مشغول"
+#, c-format
msgid "Server unavailable"
msgstr "الخادوم غير متاح"
+#, c-format
msgid "Peer notification server down"
msgstr "خادوم تنبيهات الأنداد مطفأ"
+#, c-format
msgid "Database connect error"
msgstr "خطأ في الاتصال بقاعدة البيانات"
+#, c-format
msgid "Server is going down (abandon ship)"
msgstr "الخادوم سيُطفأ (سنفروا بحياتكم)"
+#, c-format
msgid "Error creating connection"
msgstr "خطأ في إنشاء الاتصال"
+#, c-format
msgid "CVR parameters are either unknown or not allowed"
msgstr "معاملات CVR إما مجهولة أو ممنوعة"
+#, c-format
msgid "Unable to write"
msgstr "تعذّرت الكتابة"
+#, c-format
msgid "Session overload"
msgstr "تحميل زائد في الجلسة"
+#, c-format
msgid "User is too active"
msgstr "المستخدم نشط أكثر من اللازم"
+#, c-format
msgid "Too many sessions"
msgstr "جلسات أكثر من المحتمل"
+#, c-format
msgid "Passport not verified"
msgstr "جواز مرور غير مُوثّق"
+#, c-format
msgid "Bad friend file"
msgstr "ملف صديق سيء"
+#, c-format
msgid "Not expected"
msgstr "غير متوقع"
+#, c-format
msgid "Friendly name changes too rapidly"
msgstr "الاسم الودّي يتغير أسرع من اللازم"
+#, c-format
msgid "Server too busy"
msgstr "الخادوم مشغول جدًا"
+#, c-format
msgid "Authentication failed"
msgstr "فشل الاستيثاق"
+#, c-format
msgid "Not allowed when offline"
msgstr "غير مسموح عندم لا تكون متصلا"
+#, c-format
msgid "Not accepting new users"
msgstr "لا يقبل المستخدمين الجدد"
+#, c-format
msgid "Kids Passport without parental consent"
msgstr "جواز مرور أطفال بدون موافقة الأبوين"
+#, c-format
msgid "Passport account not yet verified"
msgstr "حساب جواز المرور لم يُوثّق"
msgid "Passport account suspended"
msgstr "عُلّق حساب جواز المرور"
+#, c-format
msgid "Bad ticket"
msgstr "تذكرة سيّئة"
@@ -4878,7 +5130,8 @@ msgid "No text is blocked for this account."
msgstr "لا نص محجوب من هذا الحساب."
#, c-format
-msgid "MSN servers are currently blocking the following regular expressions:<br/>%s"
+msgid ""
+"MSN servers are currently blocking the following regular expressions:<br/>%s"
msgstr "خواديم MSN تحظر حاليا هذه التعابير النمطية:<br/>%s"
msgid "This account does not have email enabled."
@@ -4890,6 +5143,13 @@ msgstr "أرسل رسالة إلى محمول."
msgid "Page"
msgstr "صفحة"
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "العمل"
+
msgid "Has you"
msgstr "أنت لديه"
@@ -4917,7 +5177,7 @@ msgstr "خرجت للغداء"
#. primitive
#. ID
#. name - use default
-#. savable
+#. saveable
#. should be user_settable some day
#. independent
msgid "Artist"
@@ -4926,6 +5186,14 @@ msgstr "الفنانون"
msgid "Album"
msgstr "ألبوم"
+#, fuzzy
+msgid "Game Title"
+msgstr "عنوان اللحن"
+
+#, fuzzy
+msgid "Office Title"
+msgstr "عنوان اللحن"
+
msgid "Set Friendly Name..."
msgstr "أدخل اسما ودّيا..."
@@ -5112,10 +5380,12 @@ msgstr ""
msgid ""
"Could not find any information in the user's profile. The user most likely "
"does not exist."
-msgstr "تعذّر العثور على أية معلومات في لاحة المستخدم. المستخدم غالبًا لا وجود له."
+msgstr ""
+"تعذّر العثور على أية معلومات في لاحة المستخدم. المستخدم غالبًا لا وجود له."
-msgid "Profile URL"
-msgstr "مسار اللاحة"
+#, fuzzy
+msgid "View web profile"
+msgstr "اخفِ عندما لا تكون متصلا"
#. *< type
#. *< ui_requirement
@@ -5125,8 +5395,7 @@ msgstr "مسار اللاحة"
#. *< id
#. *< name
#. *< version
-#. * summary
-#. * description
+#. *< summary
msgid "Windows Live Messenger Protocol Plugin"
msgstr "ملحقة بروتوكول Windows Live Messenger"
@@ -5257,7 +5526,9 @@ msgstr[5] ""
msgid ""
"Message was not sent because the system is unavailable. This normally "
"happens when the user is blocked or does not exist."
-msgstr "لم ترسل الرسالة لأن النظام غير متاح. يحدث هذا طبيعيا إذا كان المستخدم محظورا أو لا وجود له."
+msgstr ""
+"لم ترسل الرسالة لأن النظام غير متاح. يحدث هذا طبيعيا إذا كان المستخدم محظورا "
+"أو لا وجود له."
msgid "Message was not sent because messages are being sent too quickly."
msgstr "تعذّر إرسال الرسالة لأننا نرسل بسرعة جدًا."
@@ -5304,7 +5575,8 @@ msgstr "خادوم MSN سيطفأ مؤقتا."
msgid "Unable to authenticate: %s"
msgstr "تعذّر الاستيثاق: %s"
-msgid "Your MSN buddy list is temporarily unavailable. Please wait and try again."
+msgid ""
+"Your MSN buddy list is temporarily unavailable. Please wait and try again."
msgstr "قائمة أصدقائك في MSN غير متاحة مؤقتًا. من فضلك انتظر و حاول مرة ثانية."
msgid "Handshaking"
@@ -5356,7 +5628,8 @@ msgstr ""
"تعذّر إرسال الرسالة لتعذّر الإتصال بالخادوم. في الأغلب هذه مشكلة في الخادوم، "
"حاول مجددا بعد بضع دقائق:"
-msgid "Message could not be sent because an error with the switchboard occurred:"
+msgid ""
+"Message could not be sent because an error with the switchboard occurred:"
msgstr "تعذّر إرسال الرسالة لحدوث عطل في لوحة التحويل:"
msgid "Message may have not been sent because an unknown error occurred:"
@@ -5376,19 +5649,15 @@ msgstr "أأحذف الصديق من دفتر العناوين؟"
msgid "Do you want to delete this buddy from your address book as well?"
msgstr "أتريد حذف هذا الصديق من دفتر عناوينك أيضا؟"
-#. only notify the user about problems adding to the friends list
-#. * maybe we should do something else for other lists, but it probably
-#. * won't cause too many problems if we just ignore it
-#, c-format
-msgid "Unable to add \"%s\"."
-msgstr "تعذّرت إضافة \"%s\"."
-
msgid "The username specified is invalid."
msgstr "اسم المستخدم المحدد غير صالح."
msgid "This Hotmail account may not be active."
msgstr "حساب هوتميل هذا قد لا يكون مُفعلا."
+msgid "Profile URL"
+msgstr "مسار اللاحة"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5402,16 +5671,12 @@ msgstr "حساب هوتميل هذا قد لا يكون مُفعلا."
msgid "MSN Protocol Plugin"
msgstr "ملحقة بروتوكول MSN"
-msgid "Missing Cipher"
-msgstr "شفرة مفقودة"
-
-msgid "The RC4 cipher could not be found"
-msgstr "لم يُعثر على شفرة RC4"
+#, c-format
+msgid "No such user: %s"
+msgstr "لا مستخدِم باسم: %s"
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
-msgstr "رقِّ إلى libpurple تدعم RC4 (>= 2.0.1). لن يُحمّل ملحق MySpaceIM."
+msgid "User lookup"
+msgstr "البحث عن مستخدمين"
msgid "Reading challenge"
msgstr "تجري قراءة التحدي"
@@ -5422,15 +5687,20 @@ msgstr "طول تحدٍ غير متوقع من الخادوم"
msgid "Logging in"
msgstr "يجري الولوج"
-#, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] "فُقِد الاتصال بالخادوم (لم تُستقبل أي بيانات خلال %d ثانية)"
-msgstr[1] "فُقِد الاتصال بالخادوم (لم تُستقبل أي بيانات خلال ثانية واحدة)"
-msgstr[2] "فُقِد الاتصال بالخادوم (لم تُستقبل أي بيانات خلال ثانيتين)"
-msgstr[3] "فُقِد الاتصال بالخادوم (لم تُستقبل أي بيانات خلال %d ثوان)"
-msgstr[4] "فُقِد الاتصال بالخادوم (لم تُستقبل أي بيانات خلال %d ثانية)"
-msgstr[5] "فُقِد الاتصال بالخادوم (لم تُستقبل أي بيانات خلال %d ثانية)"
+msgid "MySpaceIM - No Username Set"
+msgstr "‏MySpaceIM - لم تحدد اسم مستخدم"
+
+msgid "You appear to have no MySpace username."
+msgstr "يظهر أنك لا تملك اسم مستخدم MySpace."
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr "أتريد عمل واحد الآن؟ (ملحوظة: هذا لا يمكن تغييره!)"
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr ""
+"انقطع الاتصال بالخادوم\n"
+"%s"
#. Can't write _()'d strings in array initializers. Workaround.
msgid "New mail messages"
@@ -5451,14 +5721,37 @@ msgstr "تعليقات صورة جديدة"
msgid "MySpace"
msgstr "MySpace"
-msgid "MySpaceIM - No Username Set"
-msgstr "‏MySpaceIM - لم تحدد اسم مستخدم"
+msgid "IM Friends"
+msgstr "أصدقاء التراسل الفوري"
-msgid "You appear to have no MySpace username."
-msgstr "يظهر أنك لا تملك اسم مستخدم MySpace."
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+"تمت إضافة أو تحديث %d صديق من الخادوم (بمن فيهم أصدقاء من قائمة الأصدقاء على "
+"الخادوم)"
+msgstr[1] ""
+"تمت إضافة أو تحديث صديق من الخادوم (بمن فيهم أصدقاء من قائمة الأصدقاء على "
+"الخادوم)"
+msgstr[2] ""
+"تمت إضافة أو تحديث صديقين من الخادوم (بمن فيهم أصدقاء من قائمة الأصدقاء على "
+"الخادوم)"
+msgstr[3] ""
+"تمت إضافة أو تحديث %d أصدقاء من الخادوم (بمن فيهم أصدقاء من قائمة الأصدقاء "
+"على الخادوم)"
+msgstr[4] ""
+"تمت إضافة أو تحديث %d صديقا من الخادوم (بمن فيهم أصدقاء من قائمة الأصدقاء "
+"على الخادوم)"
+msgstr[5] ""
+"تمت إضافة أو تحديث %d صديق من الخادوم (بمن فيهم أصدقاء من قائمة الأصدقاء على "
+"الخادوم)"
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
-msgstr "أتريد عمل واحد الآن؟ (ملحوظة: هذا لا يمكن تغييره!)"
+msgid "Add contacts from server"
+msgstr "أضف معارف من الخادوم"
#. The session is now set up, ready to be connected. This emits the
#. * signedOn signal, so clients can now do anything with msimprpl, and
@@ -5484,6 +5777,19 @@ msgstr ""
msgid "MySpaceIM Error"
msgstr "عطل في MySpaceIM"
+msgid "Invalid input condition"
+msgstr "حالة دخل غير صحيحة"
+
+msgid "Read buffer full (2)"
+msgstr "براح القراءة ممتليء (2)"
+
+msgid "Unparseable message"
+msgstr "رسالة يتعذّر تحليلها"
+
+#, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr "تعذّر الاتصال بالخادوم: %s (%d)"
+
msgid "Failed to add buddy"
msgstr "فشلت إضافة صديق"
@@ -5493,13 +5799,6 @@ msgstr "فشل أمر 'addbuddy'"
msgid "persist command failed"
msgstr "فشل أمر persist"
-#, c-format
-msgid "No such user: %s"
-msgstr "لا مستخدِم باسم: %s"
-
-msgid "User lookup"
-msgstr "البحث عن مستخدمين"
-
msgid "Failed to remove buddy"
msgstr "فشلت إزالة الصديق"
@@ -5509,50 +5808,16 @@ msgstr "فشل أمر 'delbuddy' "
msgid "blocklist command failed"
msgstr "فشل أمر blocklist"
-msgid "Invalid input condition"
-msgstr "حالة دخل غير صحيحة"
-
-msgid "Read buffer full (2)"
-msgstr "براح القراءة ممتليء (2)"
-
-msgid "Unparseable message"
-msgstr "رسالة يتعذّر تحليلها"
-
-#, c-format
-msgid "Couldn't connect to host: %s (%d)"
-msgstr "تعذّر الاتصال بالخادوم: %s (%d)"
+msgid "Missing Cipher"
+msgstr "شفرة مفقودة"
-msgid "IM Friends"
-msgstr "أصدقاء التراسل الفوري"
+msgid "The RC4 cipher could not be found"
+msgstr "لم يُعثر على شفرة RC4"
-#, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-"تمت إضافة أو تحديث %d صديق من الخادوم (بمن فيهم أصدقاء من قائمة الأصدقاء على "
-"الخادوم)"
-msgstr[1] ""
-"تمت إضافة أو تحديث صديق من الخادوم (بمن فيهم أصدقاء من قائمة الأصدقاء على "
-"الخادوم)"
-msgstr[2] ""
-"تمت إضافة أو تحديث صديقين من الخادوم (بمن فيهم أصدقاء من قائمة الأصدقاء على "
-"الخادوم)"
-msgstr[3] ""
-"تمت إضافة أو تحديث %d أصدقاء من الخادوم (بمن فيهم أصدقاء من قائمة الأصدقاء على "
-"الخادوم)"
-msgstr[4] ""
-"تمت إضافة أو تحديث %d صديقا من الخادوم (بمن فيهم أصدقاء من قائمة الأصدقاء على "
-"الخادوم)"
-msgstr[5] ""
-"تمت إضافة أو تحديث %d صديق من الخادوم (بمن فيهم أصدقاء من قائمة الأصدقاء على "
-"الخادوم)"
-
-msgid "Add contacts from server"
-msgstr "أضف معارف من الخادوم"
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr "رقِّ إلى libpurple تدعم RC4 (>= 2.0.1). لن يُحمّل ملحق MySpaceIM."
msgid "Add friends from MySpace.com"
msgstr "أضف أصدقاء من MySpaces.com"
@@ -5594,9 +5859,6 @@ msgstr "حجم الخط الأساس (نقاط)"
msgid "User"
msgstr "مستخدم"
-msgid "Profile"
-msgstr "لاحة"
-
msgid "Headline"
msgstr "عنوان رئيسي"
@@ -5609,16 +5871,6 @@ msgstr "مجموع الأصدقاء"
msgid "Client Version"
msgstr "إصدارة العميل"
-#. Protocol won't log in now without a username set.. Disconnect
-msgid "No username set"
-msgstr "لم تحدد اسم مستخدم"
-
-msgid "MySpaceIM - Please Set a Username"
-msgstr "‏MySpaceIM - من فضلك ضع اسم مُستخدم"
-
-msgid "Please enter a username to check its availability:"
-msgstr "من فضلك أدخِل اسم مُستخدم لتحقق من وجوده:"
-
msgid "MySpaceIM - Username Available"
msgstr "‏MySpaceIM - الاسم غير مُتاح"
@@ -5628,12 +5880,22 @@ msgstr "اسم المستخدم متاح. أتريد استخدامه؟"
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr "بمجرّد تحديده، لا يُمكن تغييره!"
+msgid "MySpaceIM - Please Set a Username"
+msgstr "‏MySpaceIM - من فضلك ضع اسم مُستخدم"
+
msgid "This username is unavailable."
msgstr "اسم المستخدم هذا غير متاح."
msgid "Please try another username:"
msgstr "من فضلك جرّب اسم مستخدم آخر:"
+#. Protocol won't log in now without a username set.. Disconnect
+msgid "No username set"
+msgstr "لم تحدد اسم مستخدم"
+
+msgid "Please enter a username to check its availability:"
+msgstr "من فضلك أدخِل اسم مُستخدم لتحقق من وجوده:"
+
#. TODO: icons for each zap
#. Lots of comments for translators:
#. Zap means "to strike suddenly and forcefully as if with a
@@ -5907,7 +6169,8 @@ msgstr ""
msgid ""
"Unable to add %s to your buddy list. Error creating folder in server side "
"list (%s)."
-msgstr "تعذّرت إضافة %s إلى قائمة أصدقائك. عطل في إنشاء مجلد في قائمة الخادوم (%s)."
+msgstr ""
+"تعذّرت إضافة %s إلى قائمة أصدقائك. عطل في إنشاء مجلد في قائمة الخادوم (%s)."
#, c-format
msgid "Could not get details for user %s (%s)."
@@ -5998,7 +6261,8 @@ msgid "You have been logged out because you logged in at another workstation."
msgstr "أولجت خارجا لأنك ولجت من حاسوب آخر."
#, c-format
-msgid "%s appears to be offline and did not receive the message that you just sent."
+msgid ""
+"%s appears to be offline and did not receive the message that you just sent."
msgstr "يبدو أن %s غير متصل و لم يتسلم الرسالة التي أرسلتها توا.."
msgid ""
@@ -6331,7 +6595,8 @@ msgstr ""
"عنوان بريد صحيح، أو أن يبدأ بحرف و يحوي فقط أحرفا و أرقاما و مسافات، أو "
"أرقاما فقط."
-#. Unregistered screen name
+#. Unregistered username
+#. uid is not exist
msgid "Invalid username."
msgstr "اسم مستخدم غير صالح"
@@ -6346,7 +6611,7 @@ msgstr "حسابك مُعَلّق حاليا."
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "خدمة مِرسال AOL الفوري غير متاحة مؤقتًا."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6380,13 +6645,9 @@ msgstr "أدخل الرقم الذي يتألف من 6 أرقام من العر
msgid "_OK"
msgstr "_موافق"
-#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
-msgstr ""
-"قد ينقطع اتصالك قريبا. قد ترغب في استخدام TOC إلى أن يتم إصلاح هذا. طالع %s "
-"للتحديثات."
+#, fuzzy, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
+msgstr "قد ينقطع اتصالك قريبا. طالع %s للتحديثات."
msgid "Unable to get a valid AIM login hash."
msgstr "تعذّر جلب تلبيدة ولوج صحيحة إلى AIM."
@@ -6506,8 +6767,10 @@ msgstr[4] "فقدت %hu رسالة من %s لكونها أكبر من اللاز
msgstr[5] "فقدت %hu رسالة من %s لكونها أكبر من اللازم."
#, c-format
-msgid "You missed %hu message from %s because the rate limit has been exceeded."
-msgid_plural "You missed %hu messages from %s because the rate limit has been exceeded."
+msgid ""
+"You missed %hu message from %s because the rate limit has been exceeded."
+msgid_plural ""
+"You missed %hu messages from %s because the rate limit has been exceeded."
msgstr[0] "لم تفقد أي رسائل (%hu) من %s لتجاوز حد المنسوب"
msgstr[1] "فقدت رسالة واحدة (%hu) من %s لتجاوز حدّ المنسوب."
msgstr[2] "فقدت رسالتين (%hu) من %s لتجاوز حدّ المنسوب."
@@ -6516,8 +6779,10 @@ msgstr[4] "فقدت %hu رسالة من %s لتجاوز حدّ المنسوب."
msgstr[5] "فقدت %hu رسالة من %s لتجاوز حدّ المنسوب."
#, c-format
-msgid "You missed %hu message from %s because his/her warning level is too high."
-msgid_plural "You missed %hu messages from %s because his/her warning level is too high."
+msgid ""
+"You missed %hu message from %s because his/her warning level is too high."
+msgid_plural ""
+"You missed %hu messages from %s because his/her warning level is too high."
msgstr[0] "لم تفقد أي رسائل (%hu) من %s لأن مستوى تحذيره مرتفع جدا."
msgstr[1] "فقدت رسالة واحدة (%hu) من %s لأن مستوى تحذيره مرتفع جدا."
msgstr[2] "فقدت رسالتين (%hu) من %s لأن مستوى تحذيره مرتفع جدا."
@@ -6527,7 +6792,8 @@ msgstr[5] "فقدت %hu رسالة من %s لأن مستوى تحذيره مرت
#, c-format
msgid "You missed %hu message from %s because your warning level is too high."
-msgid_plural "You missed %hu messages from %s because your warning level is too high."
+msgid_plural ""
+"You missed %hu messages from %s because your warning level is too high."
msgstr[0] " لم تفقد أي رسائل (%hu) من %s لأن مستوى تحذيرك مرتفع جدا."
msgstr[1] "فقدت رسالة واحدة (%hu) من %s لأن مستوى تحذيرك مرتفع جدا."
msgstr[2] "فقدت رسالتين (%hu) من %s لأن مستوى تحذيرك مرتفع جدا."
@@ -6545,7 +6811,7 @@ msgstr[3] "فقدت %hu رسائل من %s لسبب مجهول."
msgstr[4] "فقدت %hu رسالة من %s لسبب مجهول."
msgstr[5] "فقدت %hu رسالة من %s لسبب مجهول."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "تعذّر إرسال رسالة: %s"
@@ -6567,6 +6833,9 @@ msgstr "متصل منذ"
msgid "Member Since"
msgstr "عضو منذ"
+msgid "Profile"
+msgstr "لاحة"
+
msgid "Your AIM connection may be lost."
msgstr "قد ينقطع اتصالك مع AIM."
@@ -6641,7 +6910,8 @@ msgstr "تم طلب توكيد الحساب"
msgid ""
"Error 0x%04x: Unable to format username because the requested name differs "
"from the original."
-msgstr "خطأ 0x%04x: تعذّر تنسيق اسم المستخدم لأن اسم المستخدم المطلوب مختلف عن الأصلي."
+msgstr ""
+"خطأ 0x%04x: تعذّر تنسيق اسم المستخدم لأن اسم المستخدم المطلوب مختلف عن الأصلي."
#, c-format
msgid "Error 0x%04x: Unable to format username because it is invalid."
@@ -6657,7 +6927,8 @@ msgstr "خطأ 0x%04x: تعذّر تنسيق اسم المستخدم لأن اس
msgid ""
"Error 0x%04x: Unable to change email address because there is already a "
"request pending for this username."
-msgstr "خطأ 0x%04x: تعذّر تغيير عنوان البريد الإلكتروني لوجود طلب سابق لهذا الاسم."
+msgstr ""
+"خطأ 0x%04x: تعذّر تغيير عنوان البريد الإلكتروني لوجود طلب سابق لهذا الاسم."
#, c-format
msgid ""
@@ -6671,7 +6942,8 @@ msgstr ""
msgid ""
"Error 0x%04x: Unable to change email address because the given address is "
"invalid."
-msgstr "خطأ 0x%04x: تعذّر تغيير عنوان البريد الإلكتروني لأن العنوان المعطى غير صالح."
+msgstr ""
+"خطأ 0x%04x: تعذّر تغيير عنوان البريد الإلكتروني لأن العنوان المعطى غير صالح."
#, c-format
msgid "Error 0x%04x: Unknown error."
@@ -6687,7 +6959,8 @@ msgstr "عنوان البريد الإلكتروني لـ %s هو %s"
msgid "Account Info"
msgstr "معلومات الحساب"
-msgid "Your IM Image was not sent. You must be Direct Connected to send IM Images."
+msgid ""
+"Your IM Image was not sent. You must be Direct Connected to send IM Images."
msgstr ""
"صورة رسالتك الفورية لم ترسل. يجب ان تكون متصلا مباشرة لإرسال صور الرسالة "
"الفورية."
@@ -6747,10 +7020,12 @@ msgstr ""
"تكون عناوين بريد سليمة، أو أن تبدأ بحرف و أن تحوي فقط أحرفا و أرقاما و "
"مسافات، أو أرقاما فقط."
-msgid "Unable To Add"
+#, fuzzy
+msgid "Unable to Add"
msgstr "تعذّرت الإضافة"
-msgid "Unable To Retrieve Buddy List"
+#, fuzzy
+msgid "Unable to Retrieve Buddy List"
msgstr "تعذّر جلب قائمة الأصدقاء"
msgid ""
@@ -6812,7 +7087,8 @@ msgid "_Exchange:"
msgstr "_بادل:"
msgid "Your IM Image was not sent. You cannot send IM Images in AIM chats."
-msgstr "صورة رسالتك الفورية لم ترسل. لا يمكنك إرسال صور التراسل الفوري في دردشات AIM."
+msgstr ""
+"صورة رسالتك الفورية لم ترسل. لا يمكنك إرسال صور التراسل الفوري في دردشات AIM."
msgid "iTunes Music Store Link"
msgstr "رابط إلى متجر موسيقى iTunes"
@@ -6839,6 +7115,7 @@ msgstr "ا_تّصل"
msgid "Get AIM Info"
msgstr "اجلب معلومات AIM"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "حرِّر تعليق صديق"
@@ -7039,7 +7316,7 @@ msgstr "أخرى"
msgid "Visible"
msgstr "مرئي"
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
msgid "Private"
@@ -7102,7 +7379,8 @@ msgstr "عدّل المراسل"
msgid "Modify Address"
msgstr "عدّل العنوان"
-msgid "Modify Extend Information"
+#, fuzzy
+msgid "Modify Extended Information"
msgstr "عدّل المعلومات المزيدة"
msgid "Modify Information"
@@ -7111,27 +7389,51 @@ msgstr "عدّل المعلومات"
msgid "Update"
msgstr "حدّث"
-msgid "Failed changing buddy information."
+#, fuzzy
+msgid "Could not change buddy information."
msgstr "فشل تغيير معلومات الصديق."
-#, c-format
-msgid "Can not get face number in file name (%s)"
+msgid "Mobile"
+msgstr "محمول"
+
+msgid "Note"
+msgstr "ملاحظة"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "أيقونة الصديق"
+
+msgid "Change his/her memo as you like"
msgstr ""
-msgid "QQ Buddy"
-msgstr "صديق QQ"
+msgid "_Modify"
+msgstr "_عدِّل"
-msgid "Failed change icon"
-msgstr "فشل تغيير الأيقونة"
+#, fuzzy
+msgid "Memo Modify"
+msgstr "عدّل"
-#, c-format
-msgid "%d needs Q&A"
-msgstr "%d يحتاج س/ج"
+#, fuzzy
+msgid "Server says:"
+msgstr "الخادوم مشغول"
-msgid "Add buddy Q&A"
-msgstr "أضف س/ج الصديق"
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
-msgid "Input answer here"
+#, fuzzy, c-format
+msgid "%u requires verification"
+msgstr "اشترط التصريح"
+
+#, fuzzy
+msgid "Add buddy question"
+msgstr "أضِف تصريح الصديق"
+
+#, fuzzy
+msgid "Enter answer here"
msgstr "أدخل الإجابة هنا"
msgid "Send"
@@ -7143,22 +7445,27 @@ msgstr "إجابة غير صالحة."
msgid "Authorization denied message:"
msgstr "رسالة منع التصريح:"
-msgid "Sorry, You are not my style."
+#, fuzzy
+msgid "Sorry, you're not my style."
msgstr "آسف، لست النوع الذي أفضله."
-#, c-format
-msgid "%d needs authentication"
+#, fuzzy, c-format
+msgid "%u needs authorization"
msgstr "%d بحاجة لتصريح"
msgid "Add buddy authorize"
msgstr "أضِف تصريح الصديق"
-msgid "Input request here"
+#, fuzzy
+msgid "Enter request here"
msgstr "أدخل الطلب هنا"
msgid "Would you be my friend?"
msgstr "هل تود أن تكون صديقي؟"
+msgid "QQ Buddy"
+msgstr "صديق QQ"
+
msgid "Add buddy"
msgstr "أضف صديقا"
@@ -7168,8 +7475,8 @@ msgstr "رقم QQ غير صالح"
msgid "Failed sending authorize"
msgstr "من فضلك صرّح لي"
-#, c-format
-msgid "Failed removing buddy %d"
+#, fuzzy, c-format
+msgid "Failed removing buddy %u"
msgstr "فشلت إزالة الصديق %d"
#, c-format
@@ -7210,21 +7517,64 @@ msgstr "من فضلك أدخل رقم Qun"
msgid "You can only search for permanent Qun\n"
msgstr "يمكنك فقط البحث عن Qun الدائمة\n"
+#, fuzzy
+msgid "(Invalid UTF-8 string)"
+msgstr "خصائص الوسيط غير صالحة"
+
+#, fuzzy
+msgid "Not member"
+msgstr "عضو"
+
+msgid "Member"
+msgstr "عضو"
+
+#, fuzzy
+msgid "Requesting"
+msgstr "حوار الطلب"
+
+#, fuzzy
+msgid "Admin"
+msgstr "Adium"
+
+#, fuzzy
+msgid "Notice"
+msgstr "ملاحظة"
+
+#, fuzzy
+msgid "Detail"
+msgstr "المبدئي"
+
+#, fuzzy
+msgid "Creator"
+msgstr "أنشئ"
+
+#, fuzzy
+msgid "About me"
+msgstr "عن %s"
+
+#, fuzzy
+msgid "Category"
+msgstr "عُطل في الدردشة"
+
msgid "The Qun does not allow others to join"
msgstr "هذه الQun لا تسمح بالانضمام إليها"
msgid "Join QQ Qun"
msgstr "انضم إلى QQ Qun"
-#, c-format
-msgid "Successed join to Qun %s (%d)"
+msgid "Input request here"
+msgstr "أدخل الطلب هنا"
+
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
msgstr "نجه الانضمام إلى Qun %s (%d)"
-msgid "Successed join to Qun"
+#, fuzzy
+msgid "Successfully joined Qun"
msgstr "نجح الانضمام إلى Qun"
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
msgid "QQ Qun Operation"
@@ -7233,7 +7583,7 @@ msgstr "عملية QQ Qun"
msgid "Failed:"
msgstr "فشل:"
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
msgid "Quit Qun"
@@ -7246,47 +7596,51 @@ msgstr ""
"ملاحظة، إذا كنت المنشئ، \n"
"هذه العملية فعليا ستزيل Qun."
-msgid "Sorry, you are not our style ..."
+#, fuzzy
+msgid "Sorry, you are not our style"
msgstr "آسف، لست النوع الذي نفضله..."
-msgid "Successed changing Qun member"
+#, fuzzy
+msgid "Successfully changed Qun members"
msgstr "نجح تغيير رقم Qun"
-msgid "Successed changing Qun information"
+#, fuzzy
+msgid "Successfully changed Qun information"
msgstr "نج تغيير معلومات Qun"
msgid "You have successfully created a Qun"
msgstr "أنشأتَ Qun بنجاح"
-msgid "Would you like to set up the detail information now?"
+#, fuzzy
+msgid "Would you like to set up detailed information now?"
msgstr "هل تود إدخال البيانات التفصيلية الآن؟"
msgid "Setup"
msgstr "الإعداد"
-#, c-format
-msgid "%d requested to join Qun %d for %s"
+#, fuzzy, c-format
+msgid "%u requested to join Qun %u for %s"
msgstr "يطلب المستخدم %d الانضمام إلى Qun %d ل %s"
-#, c-format
-msgid "%d request to join Qun %d"
+#, fuzzy, c-format
+msgid "%u request to join Qun %u"
msgstr "يطلب %d الانضمام إلى %d"
-#, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
-msgstr ""
+#, fuzzy, c-format
+msgid "Failed to join Qun %u, operated by admin %u"
+msgstr "فشل ضم صديق للدردشة"
#, c-format
-msgid "<b>Joinning Qun %d is approved by Admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
-#, c-format
-msgid "<b>Removed buddy %d.</b>"
+#, fuzzy, c-format
+msgid "<b>Removed buddy %u.</b>"
msgstr "<b>أُزِيل الصديق %d.</b>"
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "<b>أُزِيل الصديق %d.</b>"
#, c-format
msgid "Unknown-%d"
@@ -7295,9 +7649,6 @@ msgstr "%d مجهول"
msgid "Level"
msgstr "مستوى"
-msgid "Member"
-msgstr "عضو"
-
msgid " VIP"
msgstr " شخص مهم جدا"
@@ -7399,14 +7750,21 @@ msgstr "<p><b>كتاب الرقع الرائعين</b>:<br>\n"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<p><b>شكر</b>:<br>\n"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<p><b>المؤلف الأصلي</b>:<br>\n"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr "<p><i>وكل الشباب وراء الكواليس...</i><br>\n"
msgid "<i>Feel free to join us!</i> :)"
msgstr "<i>لا تتردد في الانضمام إلينا</i> :)"
-#, c-format
-msgid "About OpenQ r%s"
+#, fuzzy, c-format
+msgid "About OpenQ %s"
msgstr "عن OpenQ r%s"
msgid "Change Icon"
@@ -7424,6 +7782,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "عن OpenQ"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "عدّل العنوان"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7434,7 +7796,8 @@ msgstr "عن OpenQ"
#. *< version
#. * summary
#. * description
-msgid "QQ Protocol\tPlugin"
+#, fuzzy
+msgid "QQ Protocol Plugin"
msgstr "ملحقة بروتوكول QQ"
msgid "Auto"
@@ -7452,7 +7815,6 @@ msgstr "QQ2007"
msgid "QQ2008"
msgstr "QQ2008"
-#. #endif
msgid "Connect by TCP"
msgstr "اتّصل باستخدام TCP"
@@ -7462,13 +7824,19 @@ msgstr "أظهر تنبيه الخادوم"
msgid "Show server news"
msgstr "أظهر أخبار الخادوم"
-msgid "Keep alive interval(s)"
+msgid "Show chat room when msg comes"
msgstr ""
-msgid "Update interval(s)"
+#, fuzzy
+msgid "Keep alive interval (seconds)"
msgstr "فترات التحديث"
-msgid "Can not decrypt get server reply"
+#, fuzzy
+msgid "Update interval (seconds)"
+msgstr "فترات التحديث"
+
+#, fuzzy
+msgid "Cannot decrypt server reply"
msgstr "تعذّر تظهير رد الخادوم المُستَلَم"
#, c-format
@@ -7480,32 +7848,34 @@ msgid "Invalid token len, %d"
msgstr ""
#. extend redirect used in QQ2006
-msgid "Not support Redirect_EX now"
+msgid "Redirect_EX is not currently supported"
msgstr ""
-msgid "Error password"
-msgstr "عطل كلمة سر"
-
#. need activation
#. need activation
#. need activation
-msgid "Need active"
-msgstr ""
+#, fuzzy
+msgid "Activation required"
+msgstr "تتطلب التسجيل"
-#, c-format
-msgid "Unknow reply code when login (0x%02X)"
+#, fuzzy, c-format
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr "رمز رد غير معروف أثناء الولوج (0x%02X)"
-msgid "Keep alive error"
-msgstr "عطل في الإبقاء على الاتصال"
+#, fuzzy
+msgid "Could not decrypt server reply"
+msgstr "تعذّر تظهير رد الخادوم المُستَلَم"
-msgid "Requesting captcha ..."
+#, fuzzy
+msgid "Requesting captcha"
msgstr "يسجّل كابتشا ..."
-msgid "Checking code of captcha ..."
+#, fuzzy
+msgid "Checking captcha"
msgstr "يفحص من رمز كابتشا ..."
-msgid "Failed captcha verify"
+#, fuzzy
+msgid "Failed captcha verification"
msgstr "فشل تحقق كاباتشا"
msgid "Captcha Image"
@@ -7514,46 +7884,32 @@ msgstr "صورة كابتشا"
msgid "Enter code"
msgstr "أدخل الرمز"
-msgid "QQ Captcha Verifing"
+#, fuzzy
+msgid "QQ Captcha Verification"
msgstr "تحقق كابتشا QQ"
-msgid "Please fill code according to image"
-msgstr "من فضلك اكتب طبقا للصورة"
-
-#. uid is not exist
-msgid "invalid user name"
-msgstr "اسم مستخدم غير صالح"
+#, fuzzy
+msgid "Enter the text from the image"
+msgstr "أدخل اسم المجموعة"
-#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
+#, fuzzy, c-format
+msgid "Unknown reply when checking password (0x%02X)"
msgstr "رمز رد غير معروف أثناء فحص كلمة السر (0x%02X)"
-#, c-format
+#, fuzzy, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
msgstr ""
"رمز رد غير معروف أثناء الولوج (0x%02X):\n"
"%s"
-msgid "Failed to connect all servers"
-msgstr "فشل الاتصال بكل الخواديم"
-
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "تعذّر الاتصال."
msgid "Socket error"
msgstr "عطل في المقبس"
-#, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr ""
-"فُقد الاتصال بالخادوم:\n"
-"%d، %s"
-
msgid "Unable to read from socket"
msgstr "تعذّرت القراءة من المقبس"
@@ -7563,11 +7919,13 @@ msgstr "عطل في الكتابة"
msgid "Connection lost"
msgstr "قُطع الاتصال"
-msgid "Get server ..."
+#, fuzzy
+msgid "Getting server"
msgstr "اجلب الخادوم ..."
-msgid "Request token"
-msgstr ""
+#, fuzzy
+msgid "Requesting token"
+msgstr "مُنِع الطلب"
msgid "Couldn't resolve host"
msgstr "لا يمكن استجلاء المضيف"
@@ -7575,15 +7933,13 @@ msgstr "لا يمكن استجلاء المضيف"
msgid "Invalid server or port"
msgstr "خادوم أو منفذ غير صحيح"
-msgid "Connecting server ..."
-msgstr "يتصل بالخادوم..."
+#, fuzzy
+msgid "Connecting to server"
+msgstr "يجري الاتصال بخادوم SILC"
msgid "QQ Error"
msgstr "خطأ QQ"
-msgid "Failed to send IM."
-msgstr "تعذّر إرسال رسالة فورية."
-
#, c-format
msgid ""
"Server News:\n"
@@ -7596,6 +7952,10 @@ msgstr ""
"%s\n"
"%s"
+#, fuzzy, c-format
+msgid "%s:%s"
+msgstr "%s (%s)"
+
#, c-format
msgid "From %s:"
msgstr "مِن %s:"
@@ -7608,32 +7968,26 @@ msgstr ""
"تنبيهات الخادوم من %s: \n"
"%s"
-msgid "Unknow SERVER CMD"
+msgid "Unknown SERVER CMD"
msgstr ""
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
msgid "QQ Qun Command"
msgstr ""
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr "ليس عضوا في الغرفة \"%s\"\n"
-
-msgid "Can not decrypt login reply"
+#, fuzzy
+msgid "Could not decrypt login reply"
msgstr "تعذر تظهير رد الولوج"
-msgid "Logined"
-msgstr "ولج"
-
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr ""
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr ""
#, c-format
@@ -7696,7 +8050,8 @@ msgid "Starting Services"
msgstr "يجري بدء الخدمات"
#, c-format
-msgid "A Sametime administrator has issued the following announcement on server %s"
+msgid ""
+"A Sametime administrator has issued the following announcement on server %s"
msgstr "وضع مدير Sametime الإعلان التالي على الخادوم %s"
msgid "Sametime Administrator Announcement"
@@ -7913,7 +8268,8 @@ msgstr "تعذّرت إضافة مجموعة: المجموعة غير موجود
msgid ""
"The identifier '%s' did not match any Notes Address Book groups in your "
"Sametime community."
-msgstr "لم يطابق المعرف '%s' أي مجموعة دفتر عناوين ملاحظات في مجتمعك في Sametime."
+msgstr ""
+"لم يطابق المعرف '%s' أي مجموعة دفتر عناوين ملاحظات في مجتمعك في Sametime."
msgid "Notes Address Book Group"
msgstr "مجموعة دفتر عناوين الملاحظات"
@@ -8228,6 +8584,7 @@ msgstr "<br><b>HMAC للقناة</b> %s"
msgid "<br><b>Channel Topic:</b><br>%s"
msgstr "<br><b>موضوع القناة:</b><br>%s"
+#, c-format
msgid "<br><b>Channel Modes:</b> "
msgstr "<br><b>أطوار القناة:</b> "
@@ -8252,6 +8609,7 @@ msgstr "عبارة سر القناة"
msgid "Channel Public Keys List"
msgstr "قائمة المفاتيح العلنية للقناة"
+#, c-format
msgid ""
"Channel authentication is used to secure the channel from unauthorized "
"access. The authentication may be based on passphrase and digital "
@@ -8326,8 +8684,10 @@ msgid "Set Secret Channel"
msgstr "حددها قناةً سريةً"
#, c-format
-msgid "You have to join the %s channel before you are able to join the private group"
-msgstr "يجب عليك الانضمام إلى القناة %s قبل أن تتمكن من الانضمام إلى المجموعة الخاصة"
+msgid ""
+"You have to join the %s channel before you are able to join the private group"
+msgstr ""
+"يجب عليك الانضمام إلى القناة %s قبل أن تتمكن من الانضمام إلى المجموعة الخاصة"
msgid "Join Private Group"
msgstr "انضم إلى لمجموعة الخاصة"
@@ -8436,9 +8796,6 @@ msgstr "المنظّمة"
msgid "Unit"
msgstr "الوحدة"
-msgid "Note"
-msgstr "ملاحظة"
-
msgid "Join Chat"
msgstr "انضم للدردشة"
@@ -8603,7 +8960,8 @@ msgstr "خطأ أثناء الاتصال بخادوم SILC"
msgid "Key Exchange failed"
msgstr "فشل تبادل المفتاح"
-msgid "Resuming detached session failed. Press Reconnect to create new connection."
+msgid ""
+"Resuming detached session failed. Press Reconnect to create new connection."
msgstr "فشلت متابعة الجلسة المفصولة. اضغط \"أعِد الاتصال\" لتُنشئ اتصالا جديدا."
msgid "Connection failed"
@@ -8638,6 +8996,7 @@ msgstr "نزّل %s: %s"
msgid "Your Current Mood"
msgstr "مزاجك الحالي"
+#, c-format
msgid "Normal"
msgstr "عادي"
@@ -9053,33 +9412,43 @@ msgstr "السبورة"
msgid "No server statistics available"
msgstr "لا تتوفر إحصائيات للخادوم"
+#, c-format
msgid "Failure: Version mismatch, upgrade your client"
msgstr "فشل: إصدارة قديمة. رقّ العميل."
+#, c-format
msgid "Failure: Remote does not trust/support your public key"
msgstr "فشل: لا يدعم البعيد أو لا يثق في مفتاحك العلني"
+#, c-format
msgid "Failure: Remote does not support proposed KE group"
msgstr "فشل: لا يدعم البعيد مجموعة KE المقترحة"
+#, c-format
msgid "Failure: Remote does not support proposed cipher"
msgstr "فشل: لا يدعم البعيد الشفرة المقترحة"
+#, c-format
msgid "Failure: Remote does not support proposed PKCS"
msgstr "فشل: لا يدعم البعيد PKCS المقترحة"
+#, c-format
msgid "Failure: Remote does not support proposed hash function"
msgstr "فشل: لا يدعم البعيد دالة التلبيد المقترحة"
+#, c-format
msgid "Failure: Remote does not support proposed HMAC"
msgstr "فشل: لا يدعم البعيد HMAC المقترحة"
+#, c-format
msgid "Failure: Incorrect signature"
msgstr "فشل: توقيع غير صحيح"
+#, c-format
msgid "Failure: Invalid cookie"
msgstr "فشل: كوكي غير صالحة"
+#, c-format
msgid "Failure: Authentication failed"
msgstr "فشل: فشل الاستيثاق"
@@ -9111,6 +9480,10 @@ msgstr "لا يمكن استجلاء اسم المضيف"
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr "لا يمكن أن تحوي أسماء مستخدمي SIP فراغات أو رمز @"
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "أظهر تنبيه الخادوم"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -9145,186 +9518,12 @@ msgid "Auth Domain"
msgstr "استوثق من النطاق"
#, c-format
-msgid "Looking up %s"
-msgstr "يبحث عن %s"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "فشل الاتصال بـ %s"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "ولج: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "تعذّرت كتابة الملف %s."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "تعذّرت قراءة الملف %s."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "الرسالة أطول من المسموح به، بتر آخر %s بايت."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "غير والج %s حاليًا."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "تحذير أن %s غير مسموح به."
-
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "أُسقِطت رسالة، أنت تتجاوز حدّ سرعة الخادوم."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "الدردشة في %s غير متوفرة."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "أرسلتَ رسائل بسرعة جدًا إلى %s."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "فقدت رسالة فورية من %s لكونها أكبر من اللازم."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "فقدت رسالة فورية من %s لأنها أرسلت بسرعة جدًا."
-
-msgid "Failure."
-msgstr "فشل."
-
-msgid "Too many matches."
-msgstr "الكثير جدا من التطابقات"
-
-msgid "Need more qualifiers."
-msgstr "تحتاج لمزيد من المحددات."
-
-msgid "Dir service temporarily unavailable."
-msgstr "خدمة الدليل غير متاحة مؤقتا."
-
-msgid "Email lookup restricted."
-msgstr "البحث في البريد مقيد."
-
-msgid "Keyword ignored."
-msgstr "الكلمة المفتاحية تم تجاهلها."
-
-msgid "No keywords."
-msgstr "لا كلمات مفتاحية."
-
-msgid "User has no directory information."
-msgstr "ليس للمستخدم معلومات في الدليل."
-
-msgid "Country not supported."
-msgstr "البلد غير مدعومة."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "فشل مجهول: %s."
-
-msgid "Incorrect username or password."
-msgstr "اسم مستخدم أو كلمة سر غير صحيحة."
-
-msgid "The service is temporarily unavailable."
-msgstr "الخدمة غير متاحة مؤقتًا."
-
-msgid "Your warning level is currently too high to log in."
-msgstr "مستوى تحذيراتك حاليًا أعلى من أن يسمح لك بالولوج."
-
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
-msgstr ""
-"أنت توالي الاتصال و الفصل سريعا. انتظر عشر دقائق ثم حاول مجددا. لو عدت "
-"للمحاولة فورا فستضطر إلى أن تنتظر أطول."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "حدث عطل ولوج غير معروف: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "حدث عطل مجهول، %d. معلومات: %s"
-
-msgid "Invalid Groupname"
-msgstr "اسم مجموعة غير صالح"
-
-msgid "Connection Closed"
-msgstr "أُغلق الاتصال"
-
-msgid "Waiting for reply..."
-msgstr "في انتظار الرد..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "عاد TOC من توقفه المؤقت. يمكنك الآن إرسال الرسائل ثانية."
-
-msgid "Password Change Successful"
-msgstr "تغيّرت كلمة السر بنجاح"
-
-msgid "_Group:"
-msgstr "_مجموعة:"
-
-msgid "Get Dir Info"
-msgstr "اجلب معلومات الدليل"
-
-msgid "Set Dir Info"
-msgstr "اضبط معلومات الدليل"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "لايمكن فتح %s للكتابة!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "فشل ارسال الملف: من المحتمل أن المستقبِل ألغى العملية."
-
-msgid "Could not connect for transfer."
-msgstr "لايمكن الاتصال للنقل."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "تعذرت كتابة ترويسة الملف، لن يُنقل الملف."
-
-msgid "Save As..."
-msgstr "احفظ باسم..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s يطلب من %s قبول %d ملف: %s (%.2f %s)%s%s"
-msgstr[1] ""
-"%s "
-" يطلب من %s قبول %0.sملف واحد: %s (%.2f %s)%s%s"
-msgstr[2] ""
-"%s "
-" يطلب من %s قبول %0.sملفين: %s (%.2f %s)%s%s"
-msgstr[3] "%s يطلب من %s قبول %d ملفات: %s (%.2f %s)%s%s"
-msgstr[4] "%s يطلب من %s قبول %d ملفا: %s (%.2f %s)%s%s"
-msgstr[5] "%s يطلب من %s قبول %d ملف: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s يطلب منك أن ترسل إليه ملفا"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "ملحقة بروتوكول TOC"
-
-#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr "أرسل إليك %s دعوة كاميرا وب، لكنها ليست مدعومة بعد."
+msgid "Your SMS was not delivered"
+msgstr ""
+
msgid "Your Yahoo! message did not get sent."
msgstr "لم تُرسل رسالة ياهوو!"
@@ -9557,7 +9756,8 @@ msgstr "لاحة ياهو!"
msgid ""
"Sorry, profiles marked as containing adult content are not supported at this "
"time."
-msgstr "عذرا، اللاحات المؤشرة بأنها محتواها للبالغين فقط غير مدعومة في الوقت الحالي."
+msgstr ""
+"عذرا، اللاحات المؤشرة بأنها محتواها للبالغين فقط غير مدعومة في الوقت الحالي."
msgid ""
"If you wish to view this profile, you will need to visit this link in your "
@@ -9588,13 +9788,9 @@ msgstr "رابط رائع 3"
msgid "Last Update"
msgstr "التحديث الأخير"
-#, c-format
-msgid "User information for %s unavailable"
-msgstr "معلومات المستخدم %s غير متاحة"
-
+#, fuzzy
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr "عذرا، يبدو أن اللاحة مكتوبة بلغة أو صيغة غير مدعومة في الوقت الحالي."
msgid ""
@@ -9684,7 +9880,8 @@ msgstr ""
msgid ""
"(There was an error converting this message.\t Check the 'Encoding' option "
"in the Account Editor)"
-msgstr "(حدث عطل أثناء تحويل الرسالة. \t افحص خيارات 'الترميز' في محرر الحسابات)"
+msgstr ""
+"(حدث عطل أثناء تحويل الرسالة. \t افحص خيارات 'الترميز' في محرر الحسابات)"
#, c-format
msgid "Unable to send to chat %s,%s,%s"
@@ -9737,7 +9934,8 @@ msgstr ""
"sub &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;:\n"
"انضم لدردشة جديدة"
-msgid "zi &lt;instance&gt;: Send a message to &lt;message,<i>instance</i>,*&gt;"
+msgid ""
+"zi &lt;instance&gt;: Send a message to &lt;message,<i>instance</i>,*&gt;"
msgstr ""
"zi &lt;instance&gt;: \n"
"أرسل رسالة إلى &lt;message,<i>instance</i>,*&gt;"
@@ -9924,9 +10122,6 @@ msgstr "الرجاء عدم الإزعاج"
msgid "Extended away"
msgstr "غائب طويلًا"
-msgid "Mobile"
-msgstr "محمول"
-
msgid "Listening to music"
msgstr "يستمع إلى الموسيقى"
@@ -9968,16 +10163,6 @@ msgstr "+++ %s يصبح غير ساكن"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "عطل في قراءة %s"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr "حدث عطل أثناء قراءة %s. لم يتم تحميلها، وحُفِظ الملف القديم باسم %s~"
-
msgid "Calculating..."
msgstr "يجري حسابات..."
@@ -10076,6 +10261,12 @@ msgstr "عطل في الكتابة إلى %s: %s"
msgid "Unable to connect to %s: %s"
msgstr "تعذّر الاتصال بـ %s: %s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr "يتطلب الخادوم TLS/SSL للولوج. لا يوجد دعم TLS/SSL."
+
#, c-format
msgid " - %s"
msgstr " - %s"
@@ -10085,25 +10276,40 @@ msgid " (%s)"
msgstr " (%s)"
#. 10053
+#, c-format
msgid "Connection interrupted by other software on your computer."
msgstr "قُوطع الاتصال من برمجيات على حاسوبك."
#. 10054
+#, c-format
msgid "Remote host closed connection."
msgstr "المستضيف البعيد أغلق الاتصال."
#. 10060
+#, c-format
msgid "Connection timed out."
msgstr "انتهت مهلة الاتصال."
#. 10061
+#, c-format
msgid "Connection refused."
msgstr "رُفِض الاتصال."
#. 10048
+#, c-format
msgid "Address already in use."
msgstr "العنوان مستخدم بالفعل."
+#, c-format
+msgid "Error Reading %s"
+msgstr "عطل في قراءة %s"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr "حدث عطل أثناء قراءة %s. لم يتم تحميلها، وحُفِظ الملف القديم باسم %s~"
+
msgid "Internet Messenger"
msgstr "مرسال إنترنت"
@@ -10146,10 +10352,8 @@ msgstr "تنبيهات _بريديّة جديدة"
msgid "Use this buddy _icon for this account:"
msgstr "استخدم هذه الأ_يقونة لهذا الحساب:"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "خيارات %s"
+msgid "_Advanced"
+msgstr "م_تقدم"
msgid "Use GNOME Proxy Settings"
msgstr "استخدم إعدادات وسيط جنوم"
@@ -10184,9 +10388,6 @@ msgstr "إذا نظرت بتمعن"
msgid "you can see the butterflies mating"
msgstr "يمكنك أن ترى الفراشات تتزاوج"
-msgid "Proxy Options"
-msgstr "خيارات الوسيط"
-
msgid "Proxy _type:"
msgstr "نوع ال_وسيط:"
@@ -10214,8 +10415,9 @@ msgstr "أ_ساسي"
msgid "Create _this new account on the server"
msgstr "أنشئ _هذا الحساب الجديد على الخادوم"
-msgid "_Advanced"
-msgstr "م_تقدم"
+#, fuzzy
+msgid "_Proxy"
+msgstr "الوسيط"
msgid "Enabled"
msgstr "مُفعّل"
@@ -10223,27 +10425,31 @@ msgstr "مُفعّل"
msgid "Protocol"
msgstr "البروتوكول"
-#, c-format
+#, fuzzy, c-format
msgid ""
"<span size='larger' weight='bold'>Welcome to %s!</span>\n"
"\n"
"You have no IM accounts configured. To start connecting with %s press the "
-"<b>Add</b> button below and configure your first account. If you want %s to "
-"connect to multiple IM accounts, press <b>Add</b> again to configure them "
-"all.\n"
+"<b>Add...</b> button below and configure your first account. If you want %s "
+"to connect to multiple IM accounts, press <b>Add...</b> again to configure "
+"them all.\n"
"\n"
"You can come back to this window to add, edit, or remove accounts from "
"<b>Accounts->Manage Accounts</b> in the Buddy List window"
msgstr ""
"<span size='larger' weight='bold'>مرحبا بك في %s!</span>\n"
"\n"
-"ليست لديك أية حسابات تراسل معدّة. لكي تبدأ التواصل باستخدام %s اضغط زر <b>أضف</b> أدناه و أعِدّ أول حساب لك.إذا كنت تريد أن يتصل %s بعدة حسابات تراسل فوري فاضغط <b>أضف</b> مجددا لإعدادها جميعا.\n"
+"ليست لديك أية حسابات تراسل معدّة. لكي تبدأ التواصل باستخدام %s اضغط زر "
+"<b>أضف</b> أدناه و أعِدّ أول حساب لك.إذا كنت تريد أن يتصل %s بعدة حسابات تراسل "
+"فوري فاضغط <b>أضف</b> مجددا لإعدادها جميعا.\n"
"\n"
-"يمكنك دائما الرجوع إلى هذه النافذة لإضافة أو تحرير أو إزالة الحسابات عن طريق <b>حسابات⇦أدِر الحسابات</b> في نافذة قائمة الأصدقاء"
+"يمكنك دائما الرجوع إلى هذه النافذة لإضافة أو تحرير أو إزالة الحسابات عن طريق "
+"<b>حسابات⇦أدِر الحسابات</b> في نافذة قائمة الأصدقاء"
#, c-format
msgid "You have %d contact named %s. Would you like to merge them?"
-msgid_plural "You currently have %d contacts named %s. Would you like to merge them?"
+msgid_plural ""
+"You currently have %d contacts named %s. Would you like to merge them?"
msgstr[0] "لا مراسلين%0.s لديك باسم %s. أتريد دمجهم؟"
msgstr[1] "لديك مراسل واحد%0.s باسم %s. أتريد دمجه؟"
msgstr[2] "لديك مراسليْن%0.s باسم %s. أتريد دمجهما؟"
@@ -10288,6 +10494,17 @@ msgstr "اجلب _معلومات"
msgid "I_M"
msgstr "_تراسل فوري"
+#, fuzzy
+msgid "_Audio Call"
+msgstr "أ_ضف دردشة"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "دردشة بالفيديو"
+
msgid "_Send File..."
msgstr "أرسل _ملفا..."
@@ -10346,7 +10563,8 @@ msgstr "_مدّد"
msgid "/Tools/Mute Sounds"
msgstr "/الأدوات/أكتم الأصوات"
-msgid "You are not currently signed on with an account that can add that buddy."
+msgid ""
+"You are not currently signed on with an account that can add that buddy."
msgstr "لست والجا بحساب يمكّنك من إضافة هذا الصديق."
#. I don't believe this can happen currently, I think
@@ -10421,6 +10639,10 @@ msgstr "/الأدوات/إشعارات الأ_صدقاء"
msgid "/Tools/_Certificates"
msgstr "/الأدوات/ال_شهادات"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/الأدوات/الاب_تسامات"
+
msgid "/Tools/Plu_gins"
msgstr "/الأدوات/ال_ملحقات"
@@ -10430,9 +10652,6 @@ msgstr "/الأدوات/ال_تفضيلات"
msgid "/Tools/Pr_ivacy"
msgstr "/الأدوات/ال_خصوصيّة"
-msgid "/Tools/Smile_y"
-msgstr "/الأدوات/الاب_تسامات"
-
msgid "/Tools/_File Transfers"
msgstr "/الأدوات/نقل ا_لملفات"
@@ -10552,8 +10771,8 @@ msgstr "يدويا"
msgid "By status"
msgstr "حسب الحالة"
-msgid "By log size"
-msgstr "حسب حجم السجل"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10569,12 +10788,16 @@ msgstr "أعد الاتصال"
msgid "Re-enable"
msgstr "أعِد التفعيل"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr "مرحبا بعودتك"
#, c-format
msgid "%d account was disabled because you signed on from another location:"
-msgid_plural "%d accounts were disabled because you signed on from another location:"
+msgid_plural ""
+"%d accounts were disabled because you signed on from another location:"
msgstr[0] "لم تُعطّل أية حسابات لأنك دخلت من موقع آخر:"
msgstr[1] "عُطّل حساب واحد لأنك دخلت من موقع آخر:"
msgstr[2] "عُطّل حسابين واحد لأنك دخلت من موقع آخر:"
@@ -10605,7 +10828,9 @@ msgid ""
msgstr ""
"<span weight='bold' size='larger'>مرحبًا بك في %s!</span>\n"
"\n"
-"لم تُفعِّل أي حسابات. فعِّل حساباتك من نافذة <b>الحسابات</b> في <b>الحسابات⇦أدِر الحسابات</b>. متى فعلت حسابك ، ستتمكن من الولوج، ضبط حالتك، والتحدث مع أصدقائك."
+"لم تُفعِّل أي حسابات. فعِّل حساباتك من نافذة <b>الحسابات</b> في <b>الحسابات⇦أدِر "
+"الحسابات</b>. متى فعلت حسابك ، ستتمكن من الولوج، ضبط حالتك، والتحدث مع "
+"أصدقائك."
#. set the Show Offline Buddies option. must be done
#. * after the treeview or faceprint gets mad. -Robot101
@@ -10655,10 +10880,14 @@ msgstr ""
msgid "A_lias:"
msgstr "الك_نية:"
+msgid "_Group:"
+msgstr "_مجموعة:"
+
msgid "Auto_join when account becomes online."
msgstr "انضم تلقائيا عندما يتصل الحساب."
-msgid "_Hide chat when the window is closed."
+#, fuzzy
+msgid "_Remain in chat after window is closed."
msgstr "ا_خفِ الدردشة عند غلق النافذة."
msgid "Please enter the name of the group to be added."
@@ -10698,18 +10927,13 @@ msgstr "أمرٌ مجهول."
msgid "That buddy is not on the same protocol as this chat."
msgstr "هذا الصديق لا يستخدم ذات البروتوكول الذي تستخدمه هذه الدردشة."
-msgid "You are not currently signed on with an account that can invite that buddy."
+msgid ""
+"You are not currently signed on with an account that can invite that buddy."
msgstr "لست والجا حاليًا بحساب يمكنك من دعوة ذلك الصديق."
msgid "Invite Buddy Into Chat Room"
msgstr "ادعُ صديقا إلى غرفة الدردشة"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr "أدخل اسم المستخدم الذي ترغب في دعوته، مع رسالة دعوة اختيارية."
-
msgid "_Buddy:"
msgstr "ال_صديق:"
@@ -10784,6 +11008,22 @@ msgstr "/محادثة/ا_حفظ باسم..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/محادثة/ام_ح نافذة المحادثة"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/محادثة/ال_مزيد"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/محادثة/ال_مزيد"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/محادثة/ال_مزيد"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/محادثة/استعرض ال_سجل"
+
msgid "/Conversation/Se_nd File..."
msgstr "/محادثة/أر_سل ملفا..."
@@ -10856,6 +11096,18 @@ msgstr "/محادثة"
msgid "/Conversation/View Log"
msgstr "/محادثة/استعرض السجل"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/محادثة/المزيد"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/محادثة/استعرض السجل"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/محادثة/المزيد"
+
msgid "/Conversation/Send File..."
msgstr "/محادثة/أرسل ملفا..."
@@ -11044,6 +11296,9 @@ msgstr "الفنانون"
msgid "Ka-Hing Cheung"
msgstr "Ka-Hing Cheung"
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "دعم"
@@ -11183,6 +11438,10 @@ msgstr "جورجية"
msgid "Ubuntu Georgian Translators"
msgstr "مترجمو أوبونتو الجورجيون "
+#, fuzzy
+msgid "Khmer"
+msgstr "أخرى"
+
msgid "Kannada"
msgstr "كانادا"
@@ -11204,6 +11463,10 @@ msgstr "لتوانية"
msgid "Macedonian"
msgstr "مقدونية"
+#, fuzzy
+msgid "Mongolian"
+msgstr "مقدونية"
+
msgid "Bokmål Norwegian"
msgstr "نرويجية بوكمال"
@@ -11316,7 +11579,25 @@ msgstr ""
"'COPYRIGHT' لترى القائمة الكاملة بالمساهمين. لا نقدم أي ضمان على هذه "
"البرمجية.<BR><BR> "
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, fuzzy, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin على irc.freenode.net<BR><BR>"
+
+#, fuzzy, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin على irc.freenode.net<BR><BR>"
msgid "Current Developers"
@@ -11435,7 +11716,8 @@ msgid "_Remove Group"
msgstr "أزِل _مجموعة"
#, c-format
-msgid "You are about to remove %s from your buddy list. Do you want to continue?"
+msgid ""
+"You are about to remove %s from your buddy list. Do you want to continue?"
msgstr "أنت بصدد إزالة %s من قائمة أصدقائك. هل تريد الاستمرار؟"
msgid "Remove Buddy"
@@ -11633,15 +11915,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr "تنبيهات بريديّة جديدة"
-msgid "_Copy Email Address"
-msgstr "ا_نسخ عنوان البريد الإلكتروني"
-
-msgid "_Open Link in Browser"
-msgstr "ا_فتح الرابط في المتصفح"
-
-msgid "_Copy Link Location"
-msgstr "ا_نسخ موقع الرابط"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -11683,9 +11956,11 @@ msgstr ""
msgid "Save Image"
msgstr "احفظ الصورة"
+#, c-format
msgid "_Save Image..."
msgstr "ا_حفظ الصورة..."
+#, c-format
msgid "_Add Custom Smiley..."
msgstr "أ_ضف بسمة مخصصة..."
@@ -11876,13 +12151,14 @@ msgstr "_تصفّح مجلد السجلات"
msgid "%s %s. Try `%s -h' for more information.\n"
msgstr "%s %s. جرب `%s -h' لمزيد من المعلومات.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -11906,13 +12182,14 @@ msgstr ""
" --display=DISPLAY اسم معراض س ليُستخدم\n"
" -v, --version اعرض النسخة الحالية واخرج\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -11934,7 +12211,7 @@ msgstr ""
" بدون هذا لن يُفعّل سوى الحساب الأول).\n"
" -v, --version اعرض النسخة الحالية واخرج\n"
-#, c-format
+#, fuzzy, 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"
@@ -11948,11 +12225,6 @@ msgid ""
"and post the backtrace from the core file. If you do not know\n"
"how to get the backtrace, please read the instructions at\n"
"%swiki/GetABacktrace\n"
-"\n"
-"If you need further assistance, please IM either SeanEgn or \n"
-"LSchiere (via AIM). Contact information for Sean and Luke \n"
-"on other protocols is at\n"
-"%swiki/DeveloperPages\n"
msgstr ""
"حدث خطأ في %s %s وقام بطرْح ملف لُب.\n"
"هذه علّة في البرمجية وليست خطأ منك.\n"
@@ -11976,11 +12248,27 @@ msgstr ""
msgid "Pidgin"
msgstr "بِدْجِن"
-msgid "Open All Messages"
-msgstr "افتح جميع الرسائل"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">لديك رسالة!</span>"
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "يجري حسابات..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -12013,9 +12301,31 @@ msgstr "تعذّر فتح المسار"
msgid "Error launching \"%s\": %s"
msgstr "خطأ في إطلاق \"%s\": %s"
-msgid "The 'Manual' browser command has been chosen, but no command has been set."
+msgid ""
+"The 'Manual' browser command has been chosen, but no command has been set."
msgstr "أمر المتصفح \"اليدوي\" تم اختياره، ولكن لم يُحدد أي أمر."
+msgid "Open All Messages"
+msgstr "افتح جميع الرسائل"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">لديك رسالة!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "إشعار صديق جديد"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">لديك رسالة!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "رسالة مجهولة"
+
msgid "The following plugins will be unloaded."
msgstr "الملحقات التالية ستفرغ."
@@ -12062,6 +12372,10 @@ msgstr "<b>بيانات الملحقة</b>"
msgid "Select a file"
msgstr "اختر ملفًا"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "حرِّر إشعار الصديق"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "إشعار على من"
@@ -12132,6 +12446,50 @@ msgstr "_متكرر"
msgid "Pounce Target"
msgstr "أشعر الهدف"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "يبدأ في الكتابة"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "يلبث أثناء الكتابة"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "يلج"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s عاد من السكون (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "يعود من غيابه"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "أوقَفَ الكتابة"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "يخرج"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "يصبح ساكنا"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "عند الغياب"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "أرسل رسالة"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "حدث إشعار مجهول. من فضلك أبلغ عن هذا!"
+
msgid "Smiley theme failed to unpack."
msgstr "فشل فك ضغط تيمة البسمات."
@@ -12154,6 +12512,12 @@ msgstr "اختصارات لوحة المفاتيح"
msgid "Cl_ose conversations with the Escape key"
msgstr "أ_غلق المحادثات بزر Escape"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "قائمة الأصدقاء"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "أيقونة لوحة النظام"
@@ -12262,9 +12626,6 @@ msgstr "تعذّر بدأ برنامج إعداد الوسيط."
msgid "Cannot start browser configuration program."
msgstr "تعذّر بدأ برنامج إعداد المتصفح."
-msgid "ST_UN server:"
-msgstr "خادوم ST_UN:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">مثال: stunserver.org</span>"
@@ -12289,6 +12650,10 @@ msgstr "_منفذ البداية:"
msgid "_End port:"
msgstr "_منفذ النهاية:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr "الخادوم الوسيط والمتصفح"
@@ -12317,6 +12682,10 @@ msgstr "خادوم وسيط"
msgid "No proxy"
msgstr "بلا وسيط"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "_مستخدم:"
@@ -12397,21 +12766,27 @@ msgstr "سجّل جميع تغيرات ال_حالة إلى سجل النظام"
msgid "Sound Selection"
msgstr "اختيار الصّوت"
+#, c-format
msgid "Quietest"
msgstr "هادئ جدًا"
+#, c-format
msgid "Quieter"
msgstr "أهدأ"
+#, c-format
msgid "Quiet"
msgstr "هادئ"
+#, c-format
msgid "Loud"
msgstr "عال"
+#, c-format
msgid "Louder"
msgstr "أعلى"
+#, c-format
msgid "Loudest"
msgstr "صاخب"
@@ -12469,12 +12844,12 @@ msgstr "عند الغياب و السكون معًا"
msgid "Auto-away"
msgstr "غياب تلقائي"
-msgid "Change status when _idle"
-msgstr "غير الحالة عند ال_سكون"
-
msgid "_Minutes before becoming idle:"
msgstr "عدد ال_دقائق قبل تغيير الحالة:"
+msgid "Change status when _idle"
+msgstr "غير الحالة عند ال_سكون"
+
msgid "Change _status to:"
msgstr "غيّر ال_حالة إلى:"
@@ -12622,6 +12997,12 @@ msgstr "احف_ظ و استخدم"
msgid "Status for %s"
msgstr "حالة %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
#, fuzzy
msgid "Custom Smiley"
msgstr "أدرِج بسمة"
@@ -12632,15 +13013,15 @@ msgstr ""
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
+msgstr ""
+
#, fuzzy
msgid "Duplicate Shortcut"
msgstr "تصوِيب مكرر"
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
-msgstr ""
-
#, fuzzy
msgid "Please select an image for the smiley."
msgstr "من فضلك اختر مزاجك من القائمة."
@@ -12652,17 +13033,22 @@ msgid "Add Smiley"
msgstr "أضف بسمة"
#, fuzzy
-msgid "Smiley _Image"
-msgstr "احفظ الصورة"
+msgid "_Image:"
+msgstr "_صورة"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr "ا_ختصار الابتسامة"
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "اختصار"
msgid "Smiley"
msgstr "بسمة"
#, fuzzy
+msgid "Shortcut Text"
+msgstr "اختصار"
+
+#, fuzzy
msgid "Custom Smiley Manager"
msgstr "مدير الشّهادات"
@@ -12779,9 +13165,20 @@ msgid "Failed to open file '%s': %s"
msgstr "فشل فتح ملف '%s': %s"
#, c-format
-msgid "Failed to load image '%s': reason not known, probably a corrupt image file"
+msgid ""
+"Failed to load image '%s': reason not known, probably a corrupt image file"
msgstr "فشل تحميل الصورة '%s': السبب مجهول، ربما يكون ملف الصورة تالفًا"
+#, fuzzy
+msgid "_Open Link"
+msgstr "ا_فتح الرابط في:"
+
+msgid "_Copy Link Location"
+msgstr "ا_نسخ موقع الرابط"
+
+msgid "_Copy Email Address"
+msgstr "ا_نسخ عنوان البريد الإلكتروني"
+
msgid "Save File"
msgstr "احفظ الملف"
@@ -12800,9 +13197,14 @@ msgstr "ا_جلب معلومات"
msgid "_Invite"
msgstr "ادعُ"
-msgid "_Modify"
+#, fuzzy
+msgid "_Modify..."
msgstr "_عدِّل"
+#, fuzzy
+msgid "_Add..."
+msgstr "أ_ضف"
+
msgid "_Open Mail"
msgstr "ا_فتح البريد"
@@ -12824,6 +13226,13 @@ msgstr "اختيار هذا يُعطِّل البسمات الرسومية."
msgid "none"
msgstr "بدون"
+#, fuzzy
+msgid "Small"
+msgstr "البريد الإلكتروني"
+
+msgid "Smaller versions of the default smilies"
+msgstr ""
+
msgid "Response Probability:"
msgstr "احتمالية الرد:"
@@ -12885,7 +13294,8 @@ msgstr "قيم النقاط لتستخدم عندما..."
msgid ""
"The buddy with the <i>largest score</i> is the buddy who will have priority "
"in the contact.\n"
-msgstr "الصديق ذو <i>الحاصل الأكبر</i> هو الصديق الذي لديه أولوية في الاتصال.\n"
+msgstr ""
+"الصديق ذو <i>الحاصل الأكبر</i> هو الصديق الذي لديه أولوية في الاتصال.\n"
msgid "Use last buddy when scores are equal"
msgstr "استخدم الصديق الأخير عندما تكون النقاط متعادلة"
@@ -12905,7 +13315,8 @@ msgstr "أولوية الاتصال"
#. *< name
#. *< version
#. *< summary
-msgid "Allows for controlling the values associated with different buddy states."
+msgid ""
+"Allows for controlling the values associated with different buddy states."
msgstr "يسمح بالتحكم بالقيم المرتبطة مع حالات الأصدقاء المختلفة."
#. *< description
@@ -12960,7 +13371,8 @@ msgstr "موضع المحادثة"
msgid ""
"Note: The preference for \"New conversations\" must be set to \"By "
"conversation count\"."
-msgstr "ملحوظة: تفضيل \"محادثات جديدة\" يجب أن يكون مضبوطا على \"بتعداد المحادثة\"."
+msgstr ""
+"ملحوظة: تفضيل \"محادثات جديدة\" يجب أن يكون مضبوطا على \"بتعداد المحادثة\"."
msgid "Number of conversations per window"
msgstr "عدد المحادثات لكل نافذة"
@@ -12987,7 +13399,8 @@ msgstr "خيارات إضافية لموضع المحادثة"
msgid ""
"Restrict the number of conversations per windows, optionally separating IMs "
"and Chats"
-msgstr "قيد عدد المحادثات لكل نافذة، اختياريًا مع فصل الرسائل الفورية عن الدردشات"
+msgstr ""
+"قيد عدد المحادثات لكل نافذة، اختياريًا مع فصل الرسائل الفورية عن الدردشات"
#. Configuration frame
msgid "Mouse Gestures Configuration"
@@ -13384,6 +13797,7 @@ msgstr "حوار التذكير"
msgid "Select Color"
msgstr "اختر لونا"
+#, c-format
msgid "Select Interface Font"
msgstr "حدد خط الواجهة"
@@ -13456,20 +13870,20 @@ msgstr ""
"'Enter' في صندوق الإدخال للإرسال. راقب نافذة التنقيح."
#, c-format
-msgid ""
-"You are using %s version %s. The current version is %s. You can get it "
-"from <a href=\"%s\">%s</a><hr>"
+msgid "You can upgrade to %s %s today."
msgstr ""
-"تستخدم %s إصدارة %s. الإصدارة الحالية هي %s. يمكنك الحصول عليها من <a href="
-"\"%s\">%s</a><hr>"
-
-#, c-format
-msgid "<b>ChangeLog:</b><br>%s"
-msgstr "<b>سجل التغييرات:</b><br>%s"
msgid "New Version Available"
msgstr "توجد إصدارة جديدة"
+#, fuzzy
+msgid "Later"
+msgstr "التاريخ"
+
+#, fuzzy
+msgid "Download Now"
+msgstr "نزّل %s: %s"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -13603,6 +14017,7 @@ msgstr "اعرض أختام زمنية بأسلوب iChat كل N دقيقة."
msgid "Timestamp Format Options"
msgstr "خيارات تنسيق الخاتم الزمني"
+#, c-format
msgid "_Force 24-hour time format"
msgstr "أ_جبر على تنسيق 24 ساعة للوقت"
@@ -13722,16 +14137,14 @@ msgstr "_حافظ على قائمة الأصدقاء في الأعلى:"
msgid "Only when docked"
msgstr "فقط عند الإرساء"
-msgid "_Flash window when chat messages are received"
-msgstr "أو_مض النافذة عند استقبال رسائل الدردشة"
-
msgid "Windows Pidgin Options"
msgstr "خيارات بِدْجِن لويندوز"
msgid "Options specific to Pidgin for Windows."
msgstr "خيارات خاصة لبِدْجِن من أجل ويندوز"
-msgid "Provides options specific to Pidgin for Windows , such as buddy list docking."
+msgid ""
+"Provides options specific to Pidgin for Windows , such as buddy list docking."
msgstr "يتيح خيارات خاصة بويندوز، مثل إرساء قائمة الأصدقاء."
msgid "<font color='#777777'>Logged out.</font>"
@@ -13771,3 +14184,257 @@ msgstr "أرسِل و استقبل أبيات XMPP خام."
msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr "تفيد هذه الملحقة في تنقيح خواديم و عملاء XMPXMPPP."
+#~ msgid "Invite message"
+#~ msgstr "رسالة الدعوة"
+
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "أدخل اسم المستخدم الذي ترغب في دعوته،\n"
+#~ "مع رسالة دعوة اختيارية."
+
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "تعذّر جلب دفتر عناوين MSN "
+
+#~ msgid "Connection to server lost (no data received within %d second)"
+#~ msgid_plural ""
+#~ "Connection to server lost (no data received within %d seconds)"
+#~ msgstr[0] "فُقِد الاتصال بالخادوم (لم تُستقبل أي بيانات خلال %d ثانية)"
+#~ msgstr[1] "فُقِد الاتصال بالخادوم (لم تُستقبل أي بيانات خلال ثانية واحدة)"
+#~ msgstr[2] "فُقِد الاتصال بالخادوم (لم تُستقبل أي بيانات خلال ثانيتين)"
+#~ msgstr[3] "فُقِد الاتصال بالخادوم (لم تُستقبل أي بيانات خلال %d ثوان)"
+#~ msgstr[4] "فُقِد الاتصال بالخادوم (لم تُستقبل أي بيانات خلال %d ثانية)"
+#~ msgstr[5] "فُقِد الاتصال بالخادوم (لم تُستقبل أي بيانات خلال %d ثانية)"
+
+#~ msgid ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+#~ msgstr ""
+#~ "قد ينقطع اتصالك قريبا. قد ترغب في استخدام TOC إلى أن يتم إصلاح هذا. طالع %"
+#~ "s للتحديثات."
+
+#~ msgid "Failed change icon"
+#~ msgstr "فشل تغيير الأيقونة"
+
+#~ msgid "%d needs Q&A"
+#~ msgstr "%d يحتاج س/ج"
+
+#~ msgid "Add buddy Q&A"
+#~ msgstr "أضف س/ج الصديق"
+
+#~ msgid "Error password"
+#~ msgstr "عطل كلمة سر"
+
+#~ msgid "Keep alive error"
+#~ msgstr "عطل في الإبقاء على الاتصال"
+
+#~ msgid "Please fill code according to image"
+#~ msgstr "من فضلك اكتب طبقا للصورة"
+
+#~ msgid "invalid user name"
+#~ msgstr "اسم مستخدم غير صالح"
+
+#~ msgid "Failed to connect all servers"
+#~ msgstr "فشل الاتصال بكل الخواديم"
+
+#~ msgid ""
+#~ "Lost connection with server:\n"
+#~ "%d, %s"
+#~ msgstr ""
+#~ "فُقد الاتصال بالخادوم:\n"
+#~ "%d، %s"
+
+#~ msgid "Connecting server ..."
+#~ msgstr "يتصل بالخادوم..."
+
+#~ msgid "Failed to send IM."
+#~ msgstr "تعذّر إرسال رسالة فورية."
+
+#~ msgid "Not a member of room \"%s\"\n"
+#~ msgstr "ليس عضوا في الغرفة \"%s\"\n"
+
+#~ msgid "Logined"
+#~ msgstr "ولج"
+
+#~ msgid "Looking up %s"
+#~ msgstr "يبحث عن %s"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "فشل الاتصال بـ %s"
+
+#~ msgid "Signon: %s"
+#~ msgstr "ولج: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "تعذّرت كتابة الملف %s."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "تعذّرت قراءة الملف %s."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "الرسالة أطول من المسموح به، بتر آخر %s بايت."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "غير والج %s حاليًا."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "تحذير أن %s غير مسموح به."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr "أُسقِطت رسالة، أنت تتجاوز حدّ سرعة الخادوم."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "الدردشة في %s غير متوفرة."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "أرسلتَ رسائل بسرعة جدًا إلى %s."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "فقدت رسالة فورية من %s لكونها أكبر من اللازم."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr "فقدت رسالة فورية من %s لأنها أرسلت بسرعة جدًا."
+
+#~ msgid "Failure."
+#~ msgstr "فشل."
+
+#~ msgid "Too many matches."
+#~ msgstr "الكثير جدا من التطابقات"
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "تحتاج لمزيد من المحددات."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "خدمة الدليل غير متاحة مؤقتا."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "البحث في البريد مقيد."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "الكلمة المفتاحية تم تجاهلها."
+
+#~ msgid "No keywords."
+#~ msgstr "لا كلمات مفتاحية."
+
+#~ msgid "User has no directory information."
+#~ msgstr "ليس للمستخدم معلومات في الدليل."
+
+#~ msgid "Country not supported."
+#~ msgstr "البلد غير مدعومة."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "فشل مجهول: %s."
+
+#~ msgid "Incorrect username or password."
+#~ msgstr "اسم مستخدم أو كلمة سر غير صحيحة."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "الخدمة غير متاحة مؤقتًا."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "مستوى تحذيراتك حاليًا أعلى من أن يسمح لك بالولوج."
+
+#~ 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 ""
+#~ "أنت توالي الاتصال و الفصل سريعا. انتظر عشر دقائق ثم حاول مجددا. لو عدت "
+#~ "للمحاولة فورا فستضطر إلى أن تنتظر أطول."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "حدث عطل ولوج غير معروف: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "حدث عطل مجهول، %d. معلومات: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "اسم مجموعة غير صالح"
+
+#~ msgid "Connection Closed"
+#~ msgstr "أُغلق الاتصال"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "في انتظار الرد..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "عاد TOC من توقفه المؤقت. يمكنك الآن إرسال الرسائل ثانية."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "تغيّرت كلمة السر بنجاح"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "اجلب معلومات الدليل"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "اضبط معلومات الدليل"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "لايمكن فتح %s للكتابة!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr "فشل ارسال الملف: من المحتمل أن المستقبِل ألغى العملية."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "لايمكن الاتصال للنقل."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "تعذرت كتابة ترويسة الملف، لن يُنقل الملف."
+
+#~ msgid "Save As..."
+#~ msgstr "احفظ باسم..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s يطلب من %s قبول %d ملف: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s يطلب من %s قبول %0.sملف واحد: %s (%.2f %s)%s%s"
+#~ msgstr[2] "%s يطلب من %s قبول %0.sملفين: %s (%.2f %s)%s%s"
+#~ msgstr[3] "%s يطلب من %s قبول %d ملفات: %s (%.2f %s)%s%s"
+#~ msgstr[4] "%s يطلب من %s قبول %d ملفا: %s (%.2f %s)%s%s"
+#~ msgstr[5] "%s يطلب من %s قبول %d ملف: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s يطلب منك أن ترسل إليه ملفا"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "ملحقة بروتوكول TOC"
+
+#~ msgid "User information for %s unavailable"
+#~ msgstr "معلومات المستخدم %s غير متاحة"
+
+#~ msgid "%s Options"
+#~ msgstr "خيارات %s"
+
+#~ msgid "Proxy Options"
+#~ msgstr "خيارات الوسيط"
+
+#~ msgid "By log size"
+#~ msgstr "حسب حجم السجل"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "ا_فتح الرابط في المتصفح"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "خادوم ST_UN:"
+
+#, fuzzy
+#~ msgid "Smiley _Image"
+#~ msgstr "احفظ الصورة"
+
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "ا_ختصار الابتسامة"
+
+#~ msgid ""
+#~ "You are using %s version %s. The current version is %s. You can get it "
+#~ "from <a href=\"%s\">%s</a><hr>"
+#~ msgstr ""
+#~ "تستخدم %s إصدارة %s. الإصدارة الحالية هي %s. يمكنك الحصول عليها من <a "
+#~ "href=\"%s\">%s</a><hr>"
+
+#~ msgid "<b>ChangeLog:</b><br>%s"
+#~ msgstr "<b>سجل التغييرات:</b><br>%s"
+
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "أو_مض النافذة عند استقبال رسائل الدردشة"
diff --git a/po/az.po b/po/az.po
index 5eded06fdd..d2ce4f47db 100644
--- a/po/az.po
+++ b/po/az.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
+"POT-Creation-Date: 2009-04-30 10:36-0400\n"
"PO-Revision-Date: 2004-06-28 14:03+0300\n"
"Last-Translator: Metin Amiroff <metin@karegen.com>\n"
"Language-Team: Azerbaijani <translation-team-az@lists.sourceforge.net>\n"
@@ -33,7 +33,7 @@ msgid ""
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -623,19 +623,6 @@ msgid "Send To"
msgstr "_Fərqli Yolla"
#, fuzzy
-msgid "Invite message"
-msgstr "(1 ismarış)"
-
-#, fuzzy
-msgid "Invite"
-msgstr "_Daxil Et"
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-
-#, fuzzy
msgid "Conversation"
msgstr "/_Danışıq"
@@ -888,6 +875,42 @@ msgid "System Log"
msgstr "Sistem Qeydi"
#, fuzzy
+msgid "Calling ... "
+msgstr "Hesablanır..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "Qəbul Et"
+
+#, fuzzy
+msgid "Reject"
+msgstr "Sıfırla"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "Bu söhbət üçün bir alias bildir."
+
+msgid "call: Make an audio call."
+msgstr ""
+
+#, fuzzy
msgid "Emails"
msgstr "Epoçt"
@@ -925,6 +948,10 @@ msgid "IM"
msgstr "IM"
#, fuzzy
+msgid "Invite"
+msgstr "_Daxil Et"
+
+#, fuzzy
msgid "(none)"
msgstr "Hər kimsə"
@@ -1140,7 +1167,6 @@ msgstr ""
msgid "%s has sent you a message. (%s)"
msgstr "%s sizə %s yollamaq istəyir (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr ""
@@ -1193,7 +1219,6 @@ msgstr ""
msgid "Change status to"
msgstr "Səhv şifrə."
-#. Conversations
msgid "Conversations"
msgstr ""
@@ -1534,7 +1559,6 @@ msgid ""
"conversation into the current conversation."
msgstr ""
-#, c-format
msgid "Online"
msgstr "Xətdə"
@@ -1583,6 +1607,28 @@ msgstr ""
msgid "Lastlog plugin."
msgstr ""
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
#, fuzzy
msgid "accounts"
msgstr "Hesablar"
@@ -1685,14 +1731,6 @@ msgstr "Söhbət dəvəti qəbul edilsin?"
msgid "SSL Certificate Verification"
msgstr ""
-#. Number of actions
-msgid "Accept"
-msgstr "Qəbul Et"
-
-#, fuzzy
-msgid "Reject"
-msgstr "Sıfırla"
-
msgid "_View Certificate..."
msgstr ""
@@ -1829,6 +1867,16 @@ msgstr ""
msgid "%s left the room (%s)."
msgstr ""
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Dəvət Rədd Edildi"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+
#, fuzzy, c-format
msgid "Failed to get connection: %s"
msgstr "Transfer üçün bağlana bilmədi."
@@ -1955,7 +2003,7 @@ msgstr "%s əlaqəsinin fayl transfer istəyi qəbul edilsin?"
msgid "Transfer of file %s complete"
msgstr ""
-#, fuzzy, c-format
+#, fuzzy
msgid "File transfer complete"
msgstr "Fayl transfer qovşağı"
@@ -1963,7 +2011,7 @@ msgstr "Fayl transfer qovşağı"
msgid "You canceled the transfer of %s"
msgstr ""
-#, fuzzy, c-format
+#, fuzzy
msgid "File transfer cancelled"
msgstr "Fayl transfer qovşağı"
@@ -2148,7 +2196,6 @@ msgstr ""
msgid "You are using %s, but this plugin requires %s."
msgstr ""
-#, c-format
msgid "This plugin has not defined an ID."
msgstr ""
@@ -2632,6 +2679,32 @@ msgstr ""
msgid "Do not ask. Always save in pounce."
msgstr ""
+#, fuzzy
+msgid "One Time Password"
+msgstr "Şifrə"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2836,7 +2909,6 @@ msgid ""
"Unable to establish connection with the local mDNS server. Is it running?"
msgstr ""
-#. Creating the options for the protocol
#, fuzzy
msgid "First name"
msgstr "Ad:"
@@ -2874,6 +2946,11 @@ msgstr "Yahoo Protokol Əlavəsi"
msgid "Purple Person"
msgstr "Yeni Şəxs"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "Yerli İstifadəçilər"
+
msgid "Bonjour"
msgstr ""
@@ -3044,13 +3121,13 @@ msgstr ""
msgid "Add to chat..."
msgstr "_Söhbət Əlavə Et"
+#. Global
msgid "Available"
msgstr ""
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "Uzaqda"
@@ -3416,6 +3493,16 @@ msgid ""
"invalid characters."
msgstr ""
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "O fayl onsuz da mövcuddur"
+
+msgid "Nickname in use"
+msgstr ""
+
msgid "Cannot change nick"
msgstr ""
@@ -3646,6 +3733,36 @@ msgstr ""
msgid "SASL error"
msgstr "Oxuma xətası"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "Otaq adı bildirilməyib."
+
+msgid "Unsupported version of BOSH protocol"
+msgstr ""
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr "Transfer üçün bağlana bilmədi."
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "Bağlanıla bilmədi"
+
+msgid "Unable to create socket"
+msgstr ""
+
+msgid "Write error"
+msgstr ""
+
msgid "Full Name"
msgstr ""
@@ -3710,6 +3827,10 @@ msgstr ""
msgid "Operating System"
msgstr ""
+#, fuzzy
+msgid "Local Time"
+msgstr "Yerli İstifadəçilər"
+
msgid "Last Activity"
msgstr ""
@@ -3936,7 +4057,6 @@ msgstr ""
msgid "Extended Away"
msgstr ""
-#, c-format
msgid "Do Not Disturb"
msgstr ""
@@ -4063,9 +4183,6 @@ msgstr ""
msgid "You require encryption, but it is not available on this server."
msgstr ""
-msgid "Write error"
-msgstr ""
-
#, fuzzy
msgid "Ping timeout"
msgstr "Bağlantı bacarılmadı"
@@ -4075,11 +4192,8 @@ msgstr ""
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
-msgstr ""
-
-msgid "Unable to create socket"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
#, fuzzy
@@ -4089,6 +4203,10 @@ msgstr "Səhv AIM URI-si"
msgid "Invalid XMPP ID. Domain must be set."
msgstr ""
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Transfer üçün bağlana bilmədi."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr ""
@@ -4176,9 +4294,18 @@ msgstr ""
msgid "Re-initializing Stream"
msgstr ""
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr ""
+msgid "Mood"
+msgstr ""
+
+msgid "Now Listening"
+msgstr ""
+
msgid "Both"
msgstr ""
@@ -4200,12 +4327,6 @@ msgstr "Heç biri"
msgid "Subscription"
msgstr ""
-msgid "Mood"
-msgstr ""
-
-msgid "Now Listening"
-msgstr ""
-
#, fuzzy
msgid "Mood Text"
msgstr "Mətn"
@@ -4449,15 +4570,21 @@ msgid "Unable to ping user %s"
msgstr "Soket açıla bilmədi"
#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr ""
#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+msgid "Unable to buzz, because %s might be offline."
msgstr ""
#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
+msgstr ""
+
+#, c-format
+msgid "Buzzing %s..."
msgstr ""
#. Yahoo only supports one attention command: the 'buzz'.
@@ -4470,8 +4597,33 @@ msgstr "Oyan!!"
msgid "%s has buzzed you!"
msgstr ""
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "Soket açıla bilmədi"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "Soket açıla bilmədi"
+
#, c-format
-msgid "Buzzing %s..."
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr ""
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "Bağlantı bacarılmadı"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "Xahiş edirik altda əlaqənin ləqəbi və hesan bövünü bildirin."
+
+#, fuzzy
+msgid "Select a Resource"
+msgstr "Mənbə"
+
+msgid "Initiate Media"
msgstr ""
msgid "config: Configure a chat room."
@@ -4624,6 +4776,20 @@ msgstr ""
msgid "Error in chat %s"
msgstr ""
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr ""
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "Fayl transfer qovşağı"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Soket açıla bilmədi"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4648,10 +4814,6 @@ msgid "Please select the resource of %s to which you would like to send a file"
msgstr "Xahiş edirik altda əlaqənin ləqəbi və hesan bövünü bildirin."
#, fuzzy
-msgid "Select a Resource"
-msgstr "Mənbə"
-
-#, fuzzy
msgid "Edit User Mood"
msgstr "İstifadəçi Otaqları"
@@ -4689,9 +4851,19 @@ msgstr "Hesablar"
msgid "Select an action"
msgstr "Ara Üz Seçimləri"
+#. 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
+#, fuzzy, c-format
+msgid "Unable to add \"%s\"."
+msgstr "Oxuna bilmədi"
+
+msgid "Buddy Add error"
+msgstr ""
+
#, fuzzy
-msgid "Unable to retrieve MSN Address Book"
-msgstr "Ünvan Kitabçasına Əlavə Et"
+msgid "The username specified does not exist."
+msgstr "Bu fayl mövcud deyil."
#, c-format
msgid "Buddy list synchronization issue in %s (%s)"
@@ -4917,7 +5089,6 @@ msgstr ""
msgid "Passport account not yet verified"
msgstr ""
-#, c-format
msgid "Passport account suspended"
msgstr ""
@@ -5009,6 +5180,13 @@ msgstr ""
msgid "Page"
msgstr "Səhifə"
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "_Xəbərdarlıq Göstər"
+
msgid "Has you"
msgstr ""
@@ -5050,6 +5228,14 @@ msgid "Album"
msgstr ""
#, fuzzy
+msgid "Game Title"
+msgstr "Başlıq"
+
+#, fuzzy
+msgid "Office Title"
+msgstr "Başlıq"
+
+#, fuzzy
msgid "Set Friendly Name..."
msgstr "Fərqli Qeyd Et..."
@@ -5254,8 +5440,9 @@ msgid ""
"does not exist."
msgstr ""
-msgid "Profile URL"
-msgstr ""
+#, fuzzy
+msgid "View web profile"
+msgstr "Daha az seçim göstər"
#. *< type
#. *< ui_requirement
@@ -5497,19 +5684,15 @@ msgstr "Ünvan Kitabçasına Əlavə Et"
msgid "Do you want to delete this buddy from your address book as well?"
msgstr ""
-#. only notify the user about problems adding to the friends list
-#. * maybe we should do something else for other lists, but it probably
-#. * won't cause too many problems if we just ignore it
-#, fuzzy, c-format
-msgid "Unable to add \"%s\"."
-msgstr "Oxuna bilmədi"
-
msgid "The username specified is invalid."
msgstr ""
msgid "This Hotmail account may not be active."
msgstr ""
+msgid "Profile URL"
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5524,16 +5707,13 @@ msgstr ""
msgid "MSN Protocol Plugin"
msgstr "AIM/ICQ Protokol Əlavəsi"
-msgid "Missing Cipher"
-msgstr ""
-
-msgid "The RC4 cipher could not be found"
+#, c-format
+msgid "No such user: %s"
msgstr ""
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
-msgstr ""
+#, fuzzy
+msgid "User lookup"
+msgstr "İstifadəçi Otaqları"
#, fuzzy
msgid "Reading challenge"
@@ -5546,11 +5726,19 @@ msgstr ""
msgid "Logging in"
msgstr "Giriş Seçimləri"
-#, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] ""
-msgstr[1] ""
+#, fuzzy
+msgid "MySpaceIM - No Username Set"
+msgstr "Ləqəb bildirilməyib."
+
+msgid "You appear to have no MySpace username."
+msgstr ""
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr ""
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr "Transfer üçün bağlana bilmədi."
#. Can't write _()'d strings in array initializers. Workaround.
#, fuzzy
@@ -5573,14 +5761,22 @@ msgid "MySpace"
msgstr ""
#, fuzzy
-msgid "MySpaceIM - No Username Set"
-msgstr "Ləqəb bildirilməyib."
+msgid "IM Friends"
+msgstr "_Cİ pəncərələri"
-msgid "You appear to have no MySpace username."
-msgstr ""
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+msgstr[1] ""
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
-msgstr ""
+#, fuzzy
+msgid "Add contacts from server"
+msgstr "Transfer üçün bağlana bilmədi."
#. The session is now set up, ready to be connected. This emits the
#. * signedOn signal, so clients can now do anything with msimprpl, and
@@ -5605,6 +5801,21 @@ msgid "MySpaceIM Error"
msgstr ""
#, fuzzy
+msgid "Invalid input condition"
+msgstr "Səhv istifadəçi adı."
+
+msgid "Read buffer full (2)"
+msgstr ""
+
+#, fuzzy
+msgid "Unparseable message"
+msgstr "Soket açıla bilmədi"
+
+#, fuzzy, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr "Transfer üçün bağlana bilmədi."
+
+#, fuzzy
msgid "Failed to add buddy"
msgstr "Söhbətdəki əlaqəyə qoşula bilmədi"
@@ -5614,14 +5825,6 @@ msgstr ""
msgid "persist command failed"
msgstr ""
-#, c-format
-msgid "No such user: %s"
-msgstr ""
-
-#, fuzzy
-msgid "User lookup"
-msgstr "İstifadəçi Otaqları"
-
#, fuzzy
msgid "Failed to remove buddy"
msgstr "Söhbətdəki əlaqəyə qoşula bilmədi"
@@ -5632,38 +5835,16 @@ msgstr ""
msgid "blocklist command failed"
msgstr ""
-#, fuzzy
-msgid "Invalid input condition"
-msgstr "Səhv istifadəçi adı."
-
-msgid "Read buffer full (2)"
+msgid "Missing Cipher"
msgstr ""
-#, fuzzy
-msgid "Unparseable message"
-msgstr "Soket açıla bilmədi"
-
-#, fuzzy, c-format
-msgid "Couldn't connect to host: %s (%d)"
-msgstr "Transfer üçün bağlana bilmədi."
-
-#, fuzzy
-msgid "IM Friends"
-msgstr "_Cİ pəncərələri"
+msgid "The RC4 cipher could not be found"
+msgstr ""
-#, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-msgstr[1] ""
-
-#, fuzzy
-msgid "Add contacts from server"
-msgstr "Transfer üçün bağlana bilmədi."
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
msgid "Add friends from MySpace.com"
msgstr ""
@@ -5707,9 +5888,6 @@ msgstr "Daha böyük yazı növü"
msgid "User"
msgstr "İstifadəçilər"
-msgid "Profile"
-msgstr "Profil"
-
msgid "Headline"
msgstr ""
@@ -5723,17 +5901,6 @@ msgstr ""
msgid "Client Version"
msgstr ""
-#. Protocol won't log in now without a username set.. Disconnect
-#, fuzzy
-msgid "No username set"
-msgstr "Ləqəb bildirilməyib."
-
-msgid "MySpaceIM - Please Set a Username"
-msgstr ""
-
-msgid "Please enter a username to check its availability:"
-msgstr ""
-
msgid "MySpaceIM - Username Available"
msgstr ""
@@ -5743,6 +5910,9 @@ msgstr ""
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr ""
+msgid "MySpaceIM - Please Set a Username"
+msgstr ""
+
msgid "This username is unavailable."
msgstr ""
@@ -5750,6 +5920,14 @@ msgstr ""
msgid "Please try another username:"
msgstr "Xahiş edirik seçili qrup üçün yeni ad bildirin."
+#. Protocol won't log in now without a username set.. Disconnect
+#, fuzzy
+msgid "No username set"
+msgstr "Ləqəb bildirilməyib."
+
+msgid "Please enter a username to check its availability:"
+msgstr ""
+
#. TODO: icons for each zap
#. Lots of comments for translators:
#. Zap means "to strike suddenly and forcefully as if with a
@@ -6129,7 +6307,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr ""
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr ""
@@ -6390,23 +6567,18 @@ msgstr "Kamera"
msgid "Screen Sharing"
msgstr "Ləqəb"
-#, c-format
msgid "Free For Chat"
msgstr ""
-#, c-format
msgid "Not Available"
msgstr ""
-#, c-format
msgid "Occupied"
msgstr ""
-#, c-format
msgid "Web Aware"
msgstr ""
-#, c-format
msgid "Invisible"
msgstr ""
@@ -6449,7 +6621,7 @@ msgid ""
"only letters, numbers and spaces, or contain only numbers."
msgstr ""
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
#, fuzzy
msgid "Invalid username."
@@ -6466,7 +6638,7 @@ msgstr ""
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr ""
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6500,9 +6672,7 @@ msgid "_OK"
msgstr "Oldu"
#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
+msgid "You may be disconnected shortly. If so, check %s for updates."
msgstr ""
msgid "Unable to get a valid AIM login hash."
@@ -6633,7 +6803,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] ""
msgstr[1] ""
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, fuzzy, c-format
msgid "Unable to send message: %s"
msgstr "Soket açıla bilmədi"
@@ -6656,6 +6826,9 @@ msgstr ""
msgid "Member Since"
msgstr ""
+msgid "Profile"
+msgstr "Profil"
+
msgid "Your AIM connection may be lost."
msgstr ""
@@ -6904,6 +7077,7 @@ msgstr "_Yenidən bağlan"
msgid "Get AIM Info"
msgstr "_Məlumat Al"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr ""
@@ -7010,7 +7184,7 @@ msgstr ""
msgid "Attempting to connect to %s:%hu."
msgstr "Transfer üçün bağlana bilmədi."
-#, fuzzy, c-format
+#, fuzzy
msgid "Attempting to connect via proxy server."
msgstr "Transfer üçün bağlana bilmədi."
@@ -7113,7 +7287,7 @@ msgstr "Opera"
msgid "Visible"
msgstr ""
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
#, fuzzy
@@ -7206,17 +7380,51 @@ msgstr "Soyad:"
msgid "Could not change buddy information."
msgstr "Xahiş edirik şəxs haqqında məlumatı aşağıda bildirin."
-#, c-format
-msgid "%d needs Q&A"
+#, fuzzy
+msgid "Mobile"
+msgstr "Mozilla"
+
+msgid "Note"
+msgstr "Qeyd"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "Əlaqə Timsalı"
+
+msgid "Change his/her memo as you like"
msgstr ""
#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "Əlaqə Əlavə Et"
+msgid "_Modify"
+msgstr "_Təkmilləşdir"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "_Təkmilləşdir"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "Verici"
-msgid "Input answer here"
+msgid "Your request was accepted."
msgstr ""
+msgid "Your request was rejected."
+msgstr ""
+
+#, c-format
+msgid "%u requires verification"
+msgstr ""
+
+#, fuzzy
+msgid "Add buddy question"
+msgstr "Əlaqə siyahınıza əlavə edilsin?"
+
+#, fuzzy
+msgid "Enter answer here"
+msgstr "0 bayt böyüklüyündə fayl göndərilə bilməz."
+
#, fuzzy
msgid "Send"
msgstr "_Fərqli Yolla"
@@ -7228,18 +7436,18 @@ msgstr "Səhv istifadəçi adı."
msgid "Authorization denied message:"
msgstr ""
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr ""
#, fuzzy, c-format
-msgid "%d needs authentication"
+msgid "%u needs authorization"
msgstr "Yahoo! Təsstiqlənməsi Bacarılmadı"
#, fuzzy
msgid "Add buddy authorize"
msgstr "Əlaqə siyahınıza əlavə edilsin?"
-msgid "Input request here"
+msgid "Enter request here"
msgstr ""
#, fuzzy
@@ -7262,7 +7470,7 @@ msgid "Failed sending authorize"
msgstr ""
#, fuzzy, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr "Söhbətdəki əlaqəyə qoşula bilmədi"
#, fuzzy, c-format
@@ -7307,6 +7515,10 @@ msgstr "Xahiş edirik seçili qrup üçün yeni ad bildirin."
msgid "You can only search for permanent Qun\n"
msgstr ""
+#, fuzzy
+msgid "(Invalid UTF-8 string)"
+msgstr "Səhv vəkil qurğuları"
+
msgid "Not member"
msgstr ""
@@ -7346,15 +7558,18 @@ msgstr ""
msgid "Join QQ Qun"
msgstr ""
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
+msgid "Input request here"
msgstr ""
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "Telefon"
+
msgid "Successfully joined Qun"
msgstr ""
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
msgid "QQ Qun Operation"
@@ -7364,7 +7579,7 @@ msgstr ""
msgid "Failed:"
msgstr "Bacarılmadı"
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
#, fuzzy
@@ -7376,11 +7591,12 @@ msgid ""
"this operation will eventually remove this Qun."
msgstr ""
-msgid "Sorry, you are not our style ..."
-msgstr ""
+#, fuzzy
+msgid "Sorry, you are not our style"
+msgstr "Bağışlayın, başqa yerdə biraz işim var!"
#, fuzzy
-msgid "Successfully changed Qun member"
+msgid "Successfully changed Qun members"
msgstr "Telefon"
#, fuzzy
@@ -7391,7 +7607,7 @@ msgid "You have successfully created a Qun"
msgstr ""
#, fuzzy
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr "Üstündən yazmaq istəyirsiniz?"
#, fuzzy
@@ -7399,28 +7615,28 @@ msgid "Setup"
msgstr "_Seç"
#, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr ""
#, c-format
-msgid "%d request to join Qun %d"
+msgid "%u request to join Qun %u"
msgstr ""
#, fuzzy, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr "Söhbətdəki əlaqəyə qoşula bilmədi"
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr "_Sil"
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "_Sil"
#, fuzzy, c-format
msgid "Unknown-%d"
@@ -7539,6 +7755,13 @@ msgstr "<b>İstifadəçi:</b> %s<br>"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<b>İstifadəçi:</b> %s<br>"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<b>İstifadəçi:</b> %s<br>"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7546,7 +7769,7 @@ msgid "<i>Feel free to join us!</i> :)"
msgstr ""
#, fuzzy, c-format
-msgid "About OpenQ r%s"
+msgid "About OpenQ %s"
msgstr "Hesablar"
#, fuzzy
@@ -7567,6 +7790,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "Hesablar"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Ünvan"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7598,7 +7825,6 @@ msgstr ""
msgid "QQ2008"
msgstr ""
-#. #endif
#, fuzzy
msgid "Connect by TCP"
msgstr "Bağlanılır..."
@@ -7610,6 +7836,9 @@ msgstr ""
msgid "Show server news"
msgstr "Naməlum xəta"
+msgid "Show chat room when msg comes"
+msgstr ""
+
#, fuzzy
msgid "Keep alive interval (seconds)"
msgstr "Oxuma xətası"
@@ -7619,11 +7848,7 @@ msgid "Update interval (seconds)"
msgstr "Oxuma xətası"
#, fuzzy
-msgid "Can not decrypt server reply"
-msgstr "Verici siyahısında deyil"
-
-#, fuzzy
-msgid "Can not decrypt get server reply"
+msgid "Cannot decrypt server reply"
msgstr "Verici siyahısında deyil"
#, c-format
@@ -7645,21 +7870,23 @@ msgid "Activation required"
msgstr ""
#, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr ""
#, fuzzy
-msgid "Keep alive error"
-msgstr "Oxuma xətası"
+msgid "Could not decrypt server reply"
+msgstr "Verici siyahısında deyil"
-msgid "Requesting captcha ..."
-msgstr ""
+#, fuzzy
+msgid "Requesting captcha"
+msgstr "Qalan"
-msgid "Checking code of captcha ..."
+msgid "Checking captcha"
msgstr ""
-msgid "Failed captcha verify"
-msgstr ""
+#, fuzzy
+msgid "Failed captcha verification"
+msgstr "Yahoo! Təsstiqlənməsi Bacarılmadı"
msgid "Captcha Image"
msgstr ""
@@ -7668,7 +7895,7 @@ msgstr ""
msgid "Enter code"
msgstr "Şifrə"
-msgid "QQ Captcha Verifing"
+msgid "QQ Captcha Verification"
msgstr ""
#, fuzzy
@@ -7676,16 +7903,15 @@ msgid "Enter the text from the image"
msgstr "Xahiş edirik seçili qrup üçün yeni ad bildirin."
#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
+msgid "Unknown reply when checking password (0x%02X)"
msgstr ""
#, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
msgstr ""
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr ""
@@ -7693,12 +7919,6 @@ msgstr ""
msgid "Socket error"
msgstr "Xəta"
-#, fuzzy, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr "Transfer üçün bağlana bilmədi."
-
#, fuzzy
msgid "Unable to read from socket"
msgstr "Soket açıla bilmədi"
@@ -7712,11 +7932,12 @@ msgid "Connection lost"
msgstr "Bağlantı bacarılmadı"
#, fuzzy
-msgid "Get server ..."
+msgid "Getting server"
msgstr "Peycer qovşağı"
-msgid "Request token"
-msgstr ""
+#, fuzzy
+msgid "Requesting token"
+msgstr "Qalan"
#, fuzzy
msgid "Couldn't resolve host"
@@ -7727,17 +7948,13 @@ msgid "Invalid server or port"
msgstr "Səhv istifadəçi adı."
#, fuzzy
-msgid "Connecting server ..."
+msgid "Connecting to server"
msgstr "Bağlantı problemi"
#, fuzzy
msgid "QQ Error"
msgstr "Xəta"
-#, fuzzy
-msgid "Failed to send IM."
-msgstr "Söhbətə qoşula bilmədi"
-
#, fuzzy, c-format
msgid ""
"Server News:\n"
@@ -7746,6 +7963,10 @@ msgid ""
"%s"
msgstr "Verici"
+#, fuzzy, c-format
+msgid "%s:%s"
+msgstr "%s sizə %s yollamaq istəyir (%s)"
+
#, c-format
msgid "From %s:"
msgstr ""
@@ -7756,32 +7977,30 @@ msgid ""
"%s"
msgstr ""
-msgid "Unknow SERVER CMD"
-msgstr ""
+#, fuzzy
+msgid "Unknown SERVER CMD"
+msgstr "Naməlum xəta"
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
#, fuzzy
msgid "QQ Qun Command"
msgstr "Əmr"
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr ""
-
-msgid "Can not decrypt login reply"
-msgstr ""
+#, fuzzy
+msgid "Could not decrypt login reply"
+msgstr "Verici siyahısında deyil"
#, fuzzy
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr "Naməlum xəta"
#, fuzzy
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr "Naməlum xəta"
#, c-format
@@ -8593,9 +8812,6 @@ msgstr ""
msgid "Unit"
msgstr ""
-msgid "Note"
-msgstr "Qeyd"
-
msgid "Join Chat"
msgstr ""
@@ -9215,6 +9431,10 @@ msgstr ""
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr ""
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "Transfer üçün bağlana bilmədi."
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -9256,190 +9476,10 @@ msgid "Auth Domain"
msgstr "Avtomatik"
#, c-format
-msgid "Looking up %s"
-msgstr ""
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr ""
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Bağlan: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr ""
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr ""
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr ""
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr ""
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr ""
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr ""
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr ""
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr ""
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr ""
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr ""
-
-#, c-format
-msgid "Failure."
-msgstr ""
-
-#, c-format
-msgid "Too many matches."
-msgstr ""
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr ""
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr ""
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr ""
-
-#, c-format
-msgid "Keyword ignored."
-msgstr ""
-
-#, c-format
-msgid "No keywords."
-msgstr ""
-
-#, c-format
-msgid "User has no directory information."
-msgstr ""
-
-#, c-format
-msgid "Country not supported."
-msgstr ""
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr ""
-
-#, fuzzy, c-format
-msgid "Incorrect username or password."
-msgstr "Səhv şifrə."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr ""
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr ""
-
-#, c-format
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
-msgstr ""
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr ""
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr ""
-
-#, fuzzy
-msgid "Invalid Groupname"
-msgstr "Səhv istifadəçi adı."
-
-msgid "Connection Closed"
-msgstr ""
-
-msgid "Waiting for reply..."
-msgstr ""
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr ""
-
-msgid "Password Change Successful"
-msgstr ""
-
-msgid "_Group:"
-msgstr ""
-
-msgid "Get Dir Info"
-msgstr ""
-
-msgid "Set Dir Info"
-msgstr ""
-
-#, c-format
-msgid "Could not open %s for writing!"
+msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
-msgid "File transfer failed; other side probably canceled."
-msgstr "Fayl transferi bacarılmadı, güman ki digər tərəfdən ləğv edildi."
-
-msgid "Could not connect for transfer."
-msgstr "Transfer üçün bağlana bilmədi."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr ""
-
-#, fuzzy
-msgid "Save As..."
-msgstr "Timsalı Fərqli Qeyd Et..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s sizdən ona fayl göndərmənizi istəyir"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "TOC Protokol Əlavəsi"
-
-#, c-format
-msgid "%s has sent you a webcam invite, which is not yet supported."
+msgid "Your SMS was not delivered"
msgstr ""
msgid "Your Yahoo! message did not get sent."
@@ -9710,13 +9750,8 @@ msgstr "Sevdiyim Sayt 3"
msgid "Last Update"
msgstr "Soyad:"
-#, c-format
-msgid "User information for %s unavailable"
-msgstr "%s istifadəçisi haqqında məlumat mövcud deyil"
-
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr ""
msgid ""
@@ -10041,10 +10076,6 @@ msgstr ""
msgid "Extended away"
msgstr "%s uzaqlaşdı"
-#, fuzzy
-msgid "Mobile"
-msgstr "Mozilla"
-
msgid "Listening to music"
msgstr ""
@@ -10086,16 +10117,6 @@ msgstr "%s fəal oldu"
msgid "%x %X"
msgstr ""
-#, fuzzy, c-format
-msgid "Error Reading %s"
-msgstr "MOTD göstərilə bilmir"
-
-#, 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 ""
-
msgid "Calculating..."
msgstr "Hesablanır..."
@@ -10169,6 +10190,12 @@ msgid "Unable to connect to %s: %s"
msgstr "Bağlanıla bilmədi"
#, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+
+#, c-format
msgid " - %s"
msgstr ""
@@ -10201,6 +10228,16 @@ msgstr "Bağlantı problemi"
msgid "Address already in use."
msgstr "O fayl onsuz da mövcuddur"
+#, fuzzy, c-format
+msgid "Error Reading %s"
+msgstr "MOTD göstərilə bilmir"
+
+#, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+
#, fuzzy
msgid "Internet Messenger"
msgstr "Canlı İsmarışlaşma"
@@ -10249,10 +10286,9 @@ msgstr "Yeni məktub bildirişləri"
msgid "Use this buddy _icon for this account:"
msgstr ""
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s Seçimləri"
+#, fuzzy
+msgid "_Advanced"
+msgstr "_Ləğv Et"
#, fuzzy
msgid "Use GNOME Proxy Settings"
@@ -10288,9 +10324,6 @@ msgstr ""
msgid "you can see the butterflies mating"
msgstr ""
-msgid "Proxy Options"
-msgstr "Vəkil Vericisi Seçimləri"
-
msgid "Proxy _type:"
msgstr "Vəkil _növü:"
@@ -10321,8 +10354,8 @@ msgid "Create _this new account on the server"
msgstr ""
#, fuzzy
-msgid "_Advanced"
-msgstr "_Ləğv Et"
+msgid "_Proxy"
+msgstr "Vəkil İşlətmə"
#, fuzzy
msgid "Enabled"
@@ -10389,6 +10422,17 @@ msgid "I_M"
msgstr "I_M"
#, fuzzy
+msgid "_Audio Call"
+msgstr "Söhbət Əlavə Et"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Kamera"
+
+#, fuzzy
msgid "_Send File..."
msgstr "Faylı Göndər"
@@ -10544,6 +10588,10 @@ msgid "/Tools/_Certificates"
msgstr "/Vasitələr/_Seçimlər"
#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Vasitələr/_Uzaqda"
+
+#, fuzzy
msgid "/Tools/Plu_gins"
msgstr "/Vasitələr/_Hesablar"
@@ -10553,10 +10601,6 @@ msgstr "/Vasitələr/_Seçimlər"
msgid "/Tools/Pr_ivacy"
msgstr "/Vasitələr/_Gizlilik"
-#, fuzzy
-msgid "/Tools/Smile_y"
-msgstr "/Vasitələr/_Uzaqda"
-
msgid "/Tools/_File Transfers"
msgstr "/Vasitələr/Fayl _Transferləri"
@@ -10686,8 +10730,8 @@ msgstr ""
msgid "By status"
msgstr "Vəziyyətə görə"
-msgid "By log size"
-msgstr "Qeyd böyüklüyünə görə"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10705,6 +10749,9 @@ msgstr "_Hamısını Yenidən Bağla"
msgid "Re-enable"
msgstr "Yeni_dən Adlandır"
+msgid "SSL FAQs"
+msgstr ""
+
#, fuzzy
msgid "Welcome back!"
msgstr "%s geri gəldi"
@@ -10800,6 +10847,9 @@ msgstr ""
msgid "A_lias:"
msgstr "Alias:"
+msgid "_Group:"
+msgstr ""
+
msgid "Auto_join when account becomes online."
msgstr ""
@@ -10856,12 +10906,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr ""
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-
msgid "_Buddy:"
msgstr "Əla_qə:"
@@ -10943,6 +10987,22 @@ msgid "/Conversation/Clea_r Scrollback"
msgstr "/_Danışıq"
#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/_Danışıq"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/_Danışıq"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/_Danışıq"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/_Danışıq"
+
+#, fuzzy
msgid "/Conversation/Se_nd File..."
msgstr "/_Danışıq"
@@ -11023,6 +11083,18 @@ msgid "/Conversation/View Log"
msgstr ""
#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/_Danışıq"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/_Danışıq"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/_Danışıq"
+
+#, fuzzy
msgid "/Conversation/Send File..."
msgstr "/_Danışıq"
@@ -11215,6 +11287,9 @@ msgstr "Ünvan"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr ""
@@ -11363,6 +11438,10 @@ msgstr "Alman Dili"
msgid "Ubuntu Georgian Translators"
msgstr "Köhnə Tərcüməçilər"
+#, fuzzy
+msgid "Khmer"
+msgstr "Opera"
+
msgid "Kannada"
msgstr ""
@@ -11385,6 +11464,10 @@ msgid "Macedonian"
msgstr "Makedon Dili"
#, fuzzy
+msgid "Mongolian"
+msgstr "Makedon Dili"
+
+#, fuzzy
msgid "Bokmål Norwegian"
msgstr "Norveç Dili"
@@ -11495,7 +11578,24 @@ msgid ""
msgstr ""
#, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr ""
+
+#, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr ""
msgid "Current Developers"
@@ -11822,15 +11922,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr "Yeni məktub bildirişləri"
-msgid "_Copy Email Address"
-msgstr ""
-
-msgid "_Open Link in Browser"
-msgstr ""
-
-msgid "_Copy Link Location"
-msgstr ""
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12090,6 +12181,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12107,6 +12199,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12138,16 +12231,27 @@ msgstr ""
msgid "Pidgin"
msgstr "Əlavələr"
-#, fuzzy
-msgid "Open All Messages"
-msgstr "Uzaqda İsmarışı Al"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
+
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
#, fuzzy
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgid "Calling..."
+msgstr "Hesablanır..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
msgstr ""
-"<span weight=\"bold\" size=\"larger\">Məktubunuz var!</span>\n"
-"\n"
-"%s"
#, c-format
msgid "%s has %d new message."
@@ -12176,6 +12280,35 @@ msgid ""
"The 'Manual' browser command has been chosen, but no command has been set."
msgstr ""
+#, fuzzy
+msgid "Open All Messages"
+msgstr "Uzaqda İsmarışı Al"
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr ""
+"<span weight=\"bold\" size=\"larger\">Məktubunuz var!</span>\n"
+"\n"
+"%s"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "Əlaqə Timsalı"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr ""
+"<span weight=\"bold\" size=\"larger\">Məktubunuz var!</span>\n"
+"\n"
+"%s"
+
+#, fuzzy
+msgid "No message"
+msgstr "(1 ismarış)"
+
msgid "The following plugins will be unloaded."
msgstr ""
@@ -12233,6 +12366,10 @@ msgstr ""
msgid "Select a file"
msgstr ""
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Əlaqə Əlavə Et"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr ""
@@ -12313,6 +12450,50 @@ msgstr ""
msgid "Pounce Target"
msgstr ""
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "İstifadəçi yazır..."
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "İstifadəçi yazır..."
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "_Bağlan"
+
+#, c-format
+msgid "Returned from being idle"
+msgstr ""
+
+#, c-format
+msgid "Returned from being away"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "%s uzaqlaşdı."
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "Xətdən çıx"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "%s qeyri-fəal oldu"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "%s uzaqlaşdı"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Uzaqdayam ismarışı seç"
+
+#, c-format
+msgid "Unknown.... Please report this!"
+msgstr ""
+
msgid "Smiley theme failed to unpack."
msgstr ""
@@ -12335,6 +12516,12 @@ msgstr "Qısa Yollar"
msgid "Cl_ose conversations with the Escape key"
msgstr "Söhbət edilən əlaqə"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Əlaqə hərəkətsizdir:"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "Bildiriş Sahəsi Timsalı"
@@ -12455,10 +12642,6 @@ msgstr ""
msgid "Cannot start browser configuration program."
msgstr ""
-#, fuzzy
-msgid "ST_UN server:"
-msgstr "Verici"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr ""
@@ -12485,6 +12668,10 @@ msgstr "_Bunu axtar:"
msgid "_End port:"
msgstr "_Port:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr ""
@@ -12513,6 +12700,10 @@ msgstr ""
msgid "No proxy"
msgstr ""
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr ""
@@ -12675,10 +12866,10 @@ msgstr ""
msgid "Auto-away"
msgstr ""
-msgid "Change status when _idle"
+msgid "_Minutes before becoming idle:"
msgstr ""
-msgid "_Minutes before becoming idle:"
+msgid "Change status when _idle"
msgstr ""
#, fuzzy
@@ -12837,6 +13028,12 @@ msgstr "_Qeyd Et & İşlət"
msgid "Status for %s"
msgstr "Vəziyyət"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
#, fuzzy
msgid "Custom Smiley"
msgstr "Emosiya daxil et"
@@ -12847,12 +13044,12 @@ msgstr ""
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
-msgid "Duplicate Shortcut"
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
msgstr ""
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
+msgid "Duplicate Shortcut"
msgstr ""
#, fuzzy
@@ -12868,18 +13065,22 @@ msgid "Add Smiley"
msgstr "Emosiya!"
#, fuzzy
-msgid "Smiley _Image"
-msgstr "Emosiya Örtükləri"
+msgid "_Image:"
+msgstr "Səhifə"
-#. Smiley shortcut
+#. Shortcut text
#, fuzzy
-msgid "Smiley S_hortcut"
+msgid "S_hortcut text:"
msgstr "Qısa Yollar"
#, fuzzy
msgid "Smiley"
msgstr "Emosiya!"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "Qısa Yollar"
+
msgid "Custom Smiley Manager"
msgstr ""
@@ -13004,6 +13205,16 @@ msgid ""
msgstr ""
#, fuzzy
+msgid "_Open Link"
+msgstr "Poçtu _Aç"
+
+msgid "_Copy Link Location"
+msgstr ""
+
+msgid "_Copy Email Address"
+msgstr ""
+
+#, fuzzy
msgid "Save File"
msgstr "Fərqli Qeyd Et..."
@@ -14001,9 +14212,6 @@ msgstr ""
msgid "Only when docked"
msgstr ""
-msgid "_Flash window when chat messages are received"
-msgstr ""
-
#, fuzzy
msgid "Windows Pidgin Options"
msgstr "Giriş Seçimləri"
@@ -14055,6 +14263,87 @@ msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr ""
#, fuzzy
+#~ msgid "Invite message"
+#~ msgstr "(1 ismarış)"
+
+#, fuzzy
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "Ünvan Kitabçasına Əlavə Et"
+
+#, fuzzy
+#~ msgid "Add buddy Q&A"
+#~ msgstr "Əlaqə Əlavə Et"
+
+#, fuzzy
+#~ msgid "Can not decrypt get server reply"
+#~ msgstr "Verici siyahısında deyil"
+
+#, fuzzy
+#~ msgid "Keep alive error"
+#~ msgstr "Oxuma xətası"
+
+#, fuzzy
+#~ msgid ""
+#~ "Lost connection with server:\n"
+#~ "%d, %s"
+#~ msgstr "Transfer üçün bağlana bilmədi."
+
+#, fuzzy
+#~ msgid "Failed to send IM."
+#~ msgstr "Söhbətə qoşula bilmədi"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Bağlan: %s"
+
+#, fuzzy
+#~ msgid "Incorrect username or password."
+#~ msgstr "Səhv şifrə."
+
+#, fuzzy
+#~ msgid "Invalid Groupname"
+#~ msgstr "Səhv istifadəçi adı."
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr "Fayl transferi bacarılmadı, güman ki digər tərəfdən ləğv edildi."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "Transfer üçün bağlana bilmədi."
+
+#, fuzzy
+#~ msgid "Save As..."
+#~ msgstr "Timsalı Fərqli Qeyd Et..."
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s sizdən ona fayl göndərmənizi istəyir"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "TOC Protokol Əlavəsi"
+
+#~ msgid "User information for %s unavailable"
+#~ msgstr "%s istifadəçisi haqqında məlumat mövcud deyil"
+
+#~ msgid "%s Options"
+#~ msgstr "%s Seçimləri"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Vəkil Vericisi Seçimləri"
+
+#~ msgid "By log size"
+#~ msgstr "Qeyd böyüklüyünə görə"
+
+#, fuzzy
+#~ msgid "ST_UN server:"
+#~ msgstr "Verici"
+
+#, fuzzy
+#~ msgid "Smiley _Image"
+#~ msgstr "Emosiya Örtükləri"
+
+#, fuzzy
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "Qısa Yollar"
+
+#, fuzzy
#~ msgid "A group with the name already exists."
#~ msgstr "Bu fayl onsuz da mövcuddur."
@@ -14095,13 +14384,6 @@ msgstr ""
#~ msgstr "Qrupu Yenidən Adlandır"
#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr "%s sizə %s yollamaq istəyir (%s)"
-
-#, fuzzy
#~ msgid "System Message"
#~ msgstr "Sistem Qeydi"
@@ -14314,10 +14596,6 @@ msgstr ""
#~ msgstr "Səhv şifrə."
#, fuzzy
-#~ msgid "Unable to connect to OIM server"
-#~ msgstr "Transfer üçün bağlana bilmədi."
-
-#, fuzzy
#~ msgid "_Merge"
#~ msgstr "_İsmarış:"
@@ -14540,9 +14818,6 @@ msgstr ""
#~ msgstr[0] "(%d ismarış)"
#~ msgstr[1] "(%d ismarış)"
-#~ msgid "(1 message)"
-#~ msgstr "(1 ismarış)"
-
#~ msgid "g003: Error opening connection.\n"
#~ msgstr "g003: Bağlantı açıla bilmədi.\n"
@@ -14692,9 +14967,6 @@ msgstr ""
#~ msgid "Visit Homepage"
#~ msgstr "Veb Səhifəsini Ziyarət Et"
-#~ msgid "Local Users"
-#~ msgstr "Yerli İstifadəçilər"
-
#~ msgid "Trepia Protocol Plugin"
#~ msgstr "Trepia Protokol Əlavəsi"
@@ -14723,9 +14995,6 @@ msgstr ""
#~ "edir\n"
#~ "%s"
-#~ msgid "Sorry, I ran out for a bit!"
-#~ msgstr "Bağışlayın, başqa yerdə biraz işim var!"
-
#~ msgid "Local Addressbook"
#~ msgstr "yerli Ünvan Kitabçası"
@@ -14735,9 +15004,6 @@ msgstr ""
#~ msgid "boring default"
#~ msgstr "ön qurğulusu"
-#~ msgid "That file does not exist."
-#~ msgstr "Bu fayl mövcud deyil."
-
#~ msgid "_Preferences"
#~ msgstr "_Seçimlər"
diff --git a/po/be@latin.po b/po/be@latin.po
index c68b5ceda7..368ac861a3 100644
--- a/po/be@latin.po
+++ b/po/be@latin.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pidgin 2.1.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
+"POT-Creation-Date: 2009-04-30 10:36-0400\n"
"PO-Revision-Date: 2008-03-29 21:08+0200\n"
"Last-Translator: YOUR NAME <E-MAIL@ADDRESS>\n"
"Language-Team: Belarusian Latin <be-latin.open-tran.eu>\n"
@@ -26,13 +26,13 @@ msgstr "Finch"
msgid "%s. Try `%s -h' for more information.\n"
msgstr "%s. Pasprabuj `%s -h' dla padrabiaźniejšych źviestak.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -611,21 +611,6 @@ msgstr ""
msgid "Send To"
msgstr "Dašli da"
-#, fuzzy
-msgid "Invite message"
-msgstr "Ustaŭ u paviedamleńnie"
-
-msgid "Invite"
-msgstr "Zaprasi"
-
-#, fuzzy
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Akreśl nazvu karystalnika, jakoha ty chočaš zaprasić, razam ź "
-"nieabaviazkovym tekstam zaprašeńnia."
-
msgid "Conversation"
msgstr "Razmova"
@@ -881,6 +866,41 @@ msgstr "Razmovy"
msgid "System Log"
msgstr "Systemny log"
+#, fuzzy
+msgid "Calling ... "
+msgstr "Padlik..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "Pryjmi"
+
+msgid "Reject"
+msgstr "Admoŭ"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "Ty ŭvachodziš na kanał%s%s"
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "Listy"
@@ -916,6 +936,9 @@ msgstr "Praciahvaj"
msgid "IM"
msgstr "Razmova"
+msgid "Invite"
+msgstr "Zaprasi"
+
msgid "(none)"
msgstr "(niama)"
@@ -1119,7 +1142,6 @@ msgstr "%s adyjšoŭ. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s dasłaŭ tabie paviedamleńnie. (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "Nieviadomaja padzieja dla začepki. Kali łaska, adrapartuj ab hetym!"
@@ -1165,7 +1187,6 @@ msgstr "Chvilin da źmieny statusu"
msgid "Change status to"
msgstr "Źmiani status na"
-#. Conversations
msgid "Conversations"
msgstr "Razmovy"
@@ -1487,7 +1508,6 @@ msgstr ""
"Kali adčyniajecca novaja razmova, hety plugin ustaŭlaje tekst apošniaje "
"razmovy ŭ dziejnuju."
-#, c-format
msgid "Online"
msgstr "Spałučany"
@@ -1531,6 +1551,28 @@ msgstr "GntLastlog"
msgid "Lastlog plugin."
msgstr "Plugin apošniaha logu."
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "Adras pieśni"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "accounts"
@@ -1631,13 +1673,6 @@ msgstr "Pryniać sertyfikat dla %s?"
msgid "SSL Certificate Verification"
msgstr "Pravierka sertyfikatu SSL"
-#. Number of actions
-msgid "Accept"
-msgstr "Pryjmi"
-
-msgid "Reject"
-msgstr "Admoŭ"
-
msgid "_View Certificate..."
msgstr "_Pakažy sertyfikat..."
@@ -1784,6 +1819,18 @@ msgstr "%s pakidaje pakoj."
msgid "%s left the room (%s)."
msgstr "%s pakidaje pakoj (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Zaprasi na kanferencyju"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Akreśl nazvu karystalnika, jakoha ty chočaš zaprasić, razam ź "
+"nieabaviazkovym tekstam zaprašeńnia."
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "Pamyłka atrymańnia spałučeńnia: %s"
@@ -1920,7 +1967,6 @@ msgstr "Pačynajecca pieradača %s dla %s"
msgid "Transfer of file %s complete"
msgstr "Pieradača fajłu %s skončanaja"
-#, c-format
msgid "File transfer complete"
msgstr "Pieradača fajłu skončanaja"
@@ -1928,7 +1974,6 @@ msgstr "Pieradača fajłu skončanaja"
msgid "You canceled the transfer of %s"
msgstr "Ty anulavaŭ pieradaču %s"
-#, c-format
msgid "File transfer cancelled"
msgstr "Pieradača fajłu anulavanaja"
@@ -2135,7 +2180,6 @@ msgstr "(%s) %s <AŬTA-ADKAZ>: %s\n"
msgid "You are using %s, but this plugin requires %s."
msgstr "Ty karystajeśsia %s, ale hety plugin vymahaje %s."
-#, c-format
msgid "This plugin has not defined an ID."
msgstr "Hety plugin nie akreśliŭ ID."
@@ -2626,6 +2670,32 @@ msgstr "Zachavaj adłučanyja paviedamleńni ŭ začepcy"
msgid "Do not ask. Always save in pounce."
msgstr "Nie pytajsia. Zaŭsiody zachoŭvaj u začepcy."
+#, fuzzy
+msgid "One Time Password"
+msgstr "Uviadzi parol"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2834,7 +2904,6 @@ msgid ""
"Unable to establish connection with the local mDNS server. Is it running?"
msgstr "Niemahčyma spałučycca z lakalnym serveram mDNS. Ci jon pracuje?"
-#. Creating the options for the protocol
msgid "First name"
msgstr "Imia"
@@ -2866,6 +2935,11 @@ msgstr "Plugin pratakołu Bonjour"
msgid "Purple Person"
msgstr "Asoba Purple"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "Miascovaść"
+
msgid "Bonjour"
msgstr "Bonjour"
@@ -3023,13 +3097,13 @@ msgstr "Abiary hutarku dla siabra: %s"
msgid "Add to chat..."
msgstr "Dadaj u hutarku..."
+#. Global
msgid "Available"
msgstr "Dastupny"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "Adyjšoŭ"
@@ -3370,6 +3444,17 @@ msgstr ""
"Abranaja taboju nazva kontu nie pryjmalnaja dla servera. Mabyć, jana "
"ŭtrymvaje niedazvolenyja znaki."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "Hetaja nazva hutarki ŭžo zaniataja"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Mianuška"
+
msgid "Cannot change nick"
msgstr "Niemahčyma źmianić mianušku"
@@ -3640,6 +3725,41 @@ msgstr "Niapravilny vyklik ad servera"
msgid "SASL error"
msgstr "Pamyłka SASL"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "Pryčyna nie akreślenaja."
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Niepadtrymanaja versija"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"Niemahčyma spałučycca z serveram:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"Niemahčyma spałučycca z serveram:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "Niemahčyma inicyjavać spałučeńnie"
+
+msgid "Unable to create socket"
+msgstr "Niemahčyma stvaryć sokiet"
+
+msgid "Write error"
+msgstr "Pamyłka zapisu"
+
msgid "Full Name"
msgstr "Poŭnaje imia"
@@ -3706,6 +3826,10 @@ msgstr "Klijent"
msgid "Operating System"
msgstr "Aperacyjnaja systema"
+#, fuzzy
+msgid "Local Time"
+msgstr "Lakalny fajł:"
+
msgid "Last Activity"
msgstr "Apošniaja dziejnaść"
@@ -3911,7 +4035,6 @@ msgstr "Chaču pahavaryć"
msgid "Extended Away"
msgstr "Pašyrany adychod"
-#, c-format
msgid "Do Not Disturb"
msgstr "Nie turbuj mianie"
@@ -4036,9 +4159,6 @@ msgstr "Šukaj pakoi"
msgid "You require encryption, but it is not available on this server."
msgstr "Ty vymahaješ šyfravańnia, ale server nia ŭmieje hetaha."
-msgid "Write error"
-msgstr "Pamyłka zapisu"
-
msgid "Ping timeout"
msgstr "Termin čakańnia pingu"
@@ -4047,14 +4167,9 @@ msgstr "Pamyłka čytańnia"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"Niemahčyma spałučycca z serveram:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "Niemahčyma stvaryć sokiet"
msgid "Invalid XMPP ID"
msgstr "Niapravilny XMPP ID"
@@ -4062,6 +4177,10 @@ msgstr "Niapravilny XMPP ID"
msgid "Invalid XMPP ID. Domain must be set."
msgstr "Niapravilny XMPP ID. Treba akreślić damen."
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Pamyłka spałučeńnia z serveram."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "Paśpiachovaja rehistracyja %s@%s"
@@ -4146,9 +4265,18 @@ msgstr "Aŭtaryzacyja"
msgid "Re-initializing Stream"
msgstr "Paŭtornaja inicyjalizacyja płyni"
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr "Nie aŭtaryzavany"
+msgid "Mood"
+msgstr "Nastroj"
+
+msgid "Now Listening"
+msgstr "Ciapier hraje"
+
msgid "Both"
msgstr "Dvuchbakovaja"
@@ -4170,12 +4298,6 @@ msgstr "Niama"
msgid "Subscription"
msgstr "Padpiska"
-msgid "Mood"
-msgstr "Nastroj"
-
-msgid "Now Listening"
-msgstr "Ciapier hraje"
-
msgid "Mood Text"
msgstr "Tekst nastroju"
@@ -4413,18 +4535,24 @@ msgstr "Niemahčyma kiknuć karystalnika %s"
msgid "Unable to ping user %s"
msgstr "Niemahčyma pingnuć karystalnika %s"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr "Niemahčyma pazvanić, bo pra karystalnika %s aničoha nie viadoma."
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr "Niemahčyma pazvanić, bo karystalnik %s moža być adłučanym."
-#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+#, fuzzy, c-format
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "Niemahčyma pazvanić, bo karystalnik %s nia ŭmieje hetaha."
+#, c-format
+msgid "Buzzing %s..."
+msgstr "Zvanok da %s..."
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
msgid "Buzz"
@@ -4434,9 +4562,35 @@ msgstr "Pazvani"
msgid "%s has buzzed you!"
msgstr "%s pazvaniŭ tabie!"
-#, c-format
-msgid "Buzzing %s..."
-msgstr "Zvanok da %s..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "Niemahčyma dasłać fajł da %s, niapravilny JID"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "Niemahčyma dasłać fajł da %s, karystalnik adłučany"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr ""
+"Niemahčyma dasłać fajł da %s, niama padpiski na prysutnaść karystalnika"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "Pamyłka rehistracyi"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "Abiary resurs dla %s, jakomu chočaš dasłać fajł"
+
+msgid "Select a Resource"
+msgstr "Abiary resurs"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "Inicyjuj _hutarku"
msgid "config: Configure a chat room."
msgstr "config: Skanfihuruj pakoj hutarki."
@@ -4593,6 +4747,21 @@ msgstr "Pamyłka dałučeńnia da hutarki %s"
msgid "Error in chat %s"
msgstr "Pamyłka ŭ hutarcy %s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "Pry adčynieńni fajłu adbyłasia pamyłka."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "Pamyłka pieradačy fajłu"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Pamyłka adčynieńnia fajłu '%s': %s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4618,9 +4787,6 @@ msgstr ""
msgid "Please select the resource of %s to which you would like to send a file"
msgstr "Abiary resurs dla %s, jakomu chočaš dasłać fajł"
-msgid "Select a Resource"
-msgstr "Abiary resurs"
-
msgid "Edit User Mood"
msgstr "Redahuj nastroj karystalnika"
@@ -4655,8 +4821,19 @@ msgstr "Dziejańni"
msgid "Select an action"
msgstr "Abiary dziejańnie"
-msgid "Unable to retrieve MSN Address Book"
-msgstr "Niemahčyma atrymać adrasnuju knihu MSN"
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr "Niemahčyma dadać \"%s\"."
+
+msgid "Buddy Add error"
+msgstr ""
+
+#, fuzzy
+msgid "The username specified does not exist."
+msgstr "Akreślenaja nazva karystalnika niapravilnaja."
#, c-format
msgid "Buddy list synchronization issue in %s (%s)"
@@ -4886,7 +5063,7 @@ msgstr "Dziciačy pašpart biaz baćkoŭskaj zhody"
msgid "Passport account not yet verified"
msgstr "Kont pašpartu jašče nie pravierany"
-#, fuzzy, c-format
+#, fuzzy
msgid "Passport account suspended"
msgstr "Kont pašpartu jašče nie pravierany"
@@ -4982,6 +5159,13 @@ msgstr "Dašli mabilnaje paviedamleńnie."
msgid "Page"
msgstr "Staronka"
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "Praca"
+
msgid "Has you"
msgstr "Maju ciabie"
@@ -5018,6 +5202,14 @@ msgstr "Vykanaŭca"
msgid "Album"
msgstr "Albom"
+#, fuzzy
+msgid "Game Title"
+msgstr "Nazva pieśni"
+
+#, fuzzy
+msgid "Office Title"
+msgstr "Nazva pieśni"
+
msgid "Set Friendly Name..."
msgstr "Akreśl pryjaznuju nazvu..."
@@ -5210,8 +5402,9 @@ msgstr ""
"Niemahčyma znajści choć jakoj infarmacyi ŭ profili karystalnika. Mabyć, "
"karystalnik nie isnuje."
-msgid "Profile URL"
-msgstr "Spasyłka na profil"
+#, fuzzy
+msgid "View web profile"
+msgstr "Chavaj, kali adłučany"
#. *< type
#. *< ui_requirement
@@ -5474,19 +5667,15 @@ msgstr "Dadaj u adrasnuju knihu"
msgid "Do you want to delete this buddy from your address book as well?"
msgstr "Chočaš dadać hetaha siabra da svajho śpisu siabroŭ?"
-#. only notify the user about problems adding to the friends list
-#. * maybe we should do something else for other lists, but it probably
-#. * won't cause too many problems if we just ignore it
-#, c-format
-msgid "Unable to add \"%s\"."
-msgstr "Niemahčyma dadać \"%s\"."
-
msgid "The username specified is invalid."
msgstr "Akreślenaja nazva karystalnika niapravilnaja."
msgid "This Hotmail account may not be active."
msgstr "Hety kont Hotmail moža być niezadziejničanym."
+msgid "Profile URL"
+msgstr "Spasyłka na profil"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5500,18 +5689,12 @@ msgstr "Hety kont Hotmail moža być niezadziejničanym."
msgid "MSN Protocol Plugin"
msgstr "Plugin pratakołu MSN"
-msgid "Missing Cipher"
-msgstr "Niastača šyfru"
-
-msgid "The RC4 cipher could not be found"
-msgstr "Niemahčyma znajści šyfar RC4"
+#, c-format
+msgid "No such user: %s"
+msgstr "Niama takoha karystalnika: %s"
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
-msgstr ""
-"Aktualizuj libpurple da versii z padtrymkaj RC4 (>= 2.0.1). Plugin dla "
-"MySpaceIM nia budzie zahružany."
+msgid "User lookup"
+msgstr "Pošuk karystalnika"
msgid "Reading challenge"
msgstr "Čytańnie vyklika"
@@ -5522,15 +5705,20 @@ msgstr "Niečakanaja daŭžynia vyklika ad servera"
msgid "Logging in"
msgstr "Uvachod"
-#, fuzzy, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] ""
-"Spałučeńnie z serveram stračanaje (niama źviestak ciaham %d sekundaŭ)"
-msgstr[1] ""
-"Spałučeńnie z serveram stračanaje (niama źviestak ciaham %d sekundaŭ)"
-msgstr[2] ""
-"Spałučeńnie z serveram stračanaje (niama źviestak ciaham %d sekundaŭ)"
+msgid "MySpaceIM - No Username Set"
+msgstr "MySpaceIM - Nazva karystalnika nie akreślenaja"
+
+msgid "You appear to have no MySpace username."
+msgstr "U ciabie niama kontu na MySpace."
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr "Chočaš zaniać novy kont? (Uvaha: POTYM HETA NIELHA ANULAVAĆ!)"
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr ""
+"Spałučeńnie z serveram zhublenaje\n"
+"%s"
#. Can't write _()'d strings in array initializers. Workaround.
msgid "New mail messages"
@@ -5551,14 +5739,28 @@ msgstr "Novyja kamentary da vyjavaŭ"
msgid "MySpace"
msgstr "MySpace"
-msgid "MySpaceIM - No Username Set"
-msgstr "MySpaceIM - Nazva karystalnika nie akreślenaja"
+msgid "IM Friends"
+msgstr "Siabry"
-msgid "You appear to have no MySpace username."
-msgstr "U ciabie niama kontu na MySpace."
+#, fuzzy, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+"%d siabroŭ byli dadadzienyja albo aktualizavanyja z servera (taksama siabry, "
+"jakija ŭžo zachoŭvajucca ŭ śpisie na servery)"
+msgstr[1] ""
+"%d siabroŭ byli dadadzienyja albo aktualizavanyja z servera (taksama siabry, "
+"jakija ŭžo zachoŭvajucca ŭ śpisie na servery)"
+msgstr[2] ""
+"%d siabroŭ byli dadadzienyja albo aktualizavanyja z servera (taksama siabry, "
+"jakija ŭžo zachoŭvajucca ŭ śpisie na servery)"
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
-msgstr "Chočaš zaniać novy kont? (Uvaha: POTYM HETA NIELHA ANULAVAĆ!)"
+msgid "Add contacts from server"
+msgstr "Dadaj kantakty z servera"
#. The session is now set up, ready to be connected. This emits the
#. * signedOn signal, so clients can now do anything with msimprpl, and
@@ -5585,6 +5787,19 @@ msgstr ""
msgid "MySpaceIM Error"
msgstr "Pamyłka MySpaceIM"
+msgid "Invalid input condition"
+msgstr "Niapravilnaja ŭmova ŭvodu"
+
+msgid "Read buffer full (2)"
+msgstr "Bufer čytańnia zapoŭnieny (2)"
+
+msgid "Unparseable message"
+msgstr "Paviedamleńnie, jakoje niemahčyma razabrać"
+
+#, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr "Niemahčyma spałučycca z hostam: %s (%d)"
+
msgid "Failed to add buddy"
msgstr "Pamyłka dadańnia siabra"
@@ -5594,13 +5809,6 @@ msgstr "Niaŭdałaje vykanańnie zahadu \"addbuddy\"."
msgid "persist command failed"
msgstr "Niaŭdałaje vykanańnie zahadu \"persist\""
-#, c-format
-msgid "No such user: %s"
-msgstr "Niama takoha karystalnika: %s"
-
-msgid "User lookup"
-msgstr "Pošuk karystalnika"
-
msgid "Failed to remove buddy"
msgstr "Niaŭdałaje vydaleńnie siabra"
@@ -5610,41 +5818,18 @@ msgstr "Niaŭdałaje vykanańnie zahadu \"delbuddy\""
msgid "blocklist command failed"
msgstr "Niaŭdałaje vykanańnie zahadu \"blocklist\""
-msgid "Invalid input condition"
-msgstr "Niapravilnaja ŭmova ŭvodu"
-
-msgid "Read buffer full (2)"
-msgstr "Bufer čytańnia zapoŭnieny (2)"
-
-msgid "Unparseable message"
-msgstr "Paviedamleńnie, jakoje niemahčyma razabrać"
-
-#, c-format
-msgid "Couldn't connect to host: %s (%d)"
-msgstr "Niemahčyma spałučycca z hostam: %s (%d)"
+msgid "Missing Cipher"
+msgstr "Niastača šyfru"
-msgid "IM Friends"
-msgstr "Siabry"
+msgid "The RC4 cipher could not be found"
+msgstr "Niemahčyma znajści šyfar RC4"
-#, fuzzy, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-"%d siabroŭ byli dadadzienyja albo aktualizavanyja z servera (taksama siabry, "
-"jakija ŭžo zachoŭvajucca ŭ śpisie na servery)"
-msgstr[1] ""
-"%d siabroŭ byli dadadzienyja albo aktualizavanyja z servera (taksama siabry, "
-"jakija ŭžo zachoŭvajucca ŭ śpisie na servery)"
-msgstr[2] ""
-"%d siabroŭ byli dadadzienyja albo aktualizavanyja z servera (taksama siabry, "
-"jakija ŭžo zachoŭvajucca ŭ śpisie na servery)"
-
-msgid "Add contacts from server"
-msgstr "Dadaj kantakty z servera"
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
+"Aktualizuj libpurple da versii z padtrymkaj RC4 (>= 2.0.1). Plugin dla "
+"MySpaceIM nia budzie zahružany."
msgid "Add friends from MySpace.com"
msgstr "Dadaj siabroŭ z MySpace.com"
@@ -5687,9 +5872,6 @@ msgstr "Pamier asnoŭnaha šryftu (u punktach)"
msgid "User"
msgstr "Karystalnik"
-msgid "Profile"
-msgstr "Profil"
-
msgid "Headline"
msgstr "Zahałovak"
@@ -5702,16 +5884,6 @@ msgstr "Usich siabroŭ"
msgid "Client Version"
msgstr "Versija klijenta"
-#. Protocol won't log in now without a username set.. Disconnect
-msgid "No username set"
-msgstr "Nazva karystalnika nie akreślenaja"
-
-msgid "MySpaceIM - Please Set a Username"
-msgstr "MySpaceIM - Akreśl nazvu karystalnika"
-
-msgid "Please enter a username to check its availability:"
-msgstr "Uviadzi nazvu karystalnika dla pravierki jaje volnaści:"
-
msgid "MySpaceIM - Username Available"
msgstr "MySpaceIM - Volnaja nazva karystalnika"
@@ -5721,12 +5893,22 @@ msgstr "Hetaja nazva karystalnika volnaja. Chočaš jaje ŭžyć?"
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr "PAŚLA ŬŽYĆCIA JAJE ŬŽO NIELHA BUDZIE ŹMIANIĆ!"
+msgid "MySpaceIM - Please Set a Username"
+msgstr "MySpaceIM - Akreśl nazvu karystalnika"
+
msgid "This username is unavailable."
msgstr "Hetaja nazva karystalnika zaniataja."
msgid "Please try another username:"
msgstr "Pasprabuj inšuju nazvu karystalnika:"
+#. Protocol won't log in now without a username set.. Disconnect
+msgid "No username set"
+msgstr "Nazva karystalnika nie akreślenaja"
+
+msgid "Please enter a username to check its availability:"
+msgstr "Uviadzi nazvu karystalnika dla pravierki jaje volnaści:"
+
#. TODO: icons for each zap
#. Lots of comments for translators:
#. Zap means "to strike suddenly and forcefully as if with a
@@ -6116,7 +6298,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr "Pamyłka. Padtrymka SSL nie zainstalavanaja."
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr "Hetaja kanferencyja začynienaja. Bolš nielha dasyłać paviedamleńni."
@@ -6382,23 +6563,18 @@ msgstr "Kamera"
msgid "Screen Sharing"
msgstr "Nazva karystalnika"
-#, c-format
msgid "Free For Chat"
msgstr "Volny dla hutarki"
-#, c-format
msgid "Not Available"
msgstr "Niedastupny"
-#, c-format
msgid "Occupied"
msgstr "Zaniaty"
-#, c-format
msgid "Web Aware"
msgstr "Ahladaju sieciva"
-#, c-format
msgid "Invisible"
msgstr "Niabačny"
@@ -6448,7 +6624,7 @@ msgstr ""
"pačynacca ź litary i ŭtrymlivać tolki litary, ličby j prabieły, albo tolki "
"ličby."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr "Niapravilnaja nazva."
@@ -6464,7 +6640,7 @@ msgstr "Tvoj kont dziejna ŭsypleny."
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "Servis AOL Instant Messenger'a časova niedastupny."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6498,13 +6674,9 @@ msgstr "Uviadzi 6-ličbavy numar ź ličbavaha displaju."
msgid "_OK"
msgstr "_OK"
-#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
-msgstr ""
-"Ty možaš być chutka adłučany. Ty možaš užyć TOC, pakul heta nia budzie "
-"vypraŭlena. Pravier aktualnaść na %s."
+#, fuzzy, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
+msgstr "Ty možaš być chutka adłučany. Pravier aktualnaść na %s."
msgid "Unable to get a valid AIM login hash."
msgstr "Niemahčyma atrymać pravilny hash uvachodu dla AIM."
@@ -6655,7 +6827,7 @@ msgstr[0] "Ty zhubiŭ %hu paviedamleńnie ad %s ź nieviadomaj pryčyny."
msgstr[1] "Ty zhubiŭ %hu paviedamleńni ad %s ź nieviadomaj pryčyny."
msgstr[2] "Ty zhubiŭ %hu paviedamleńniaŭ ad %s ź nieviadomaj pryčyny."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "Niemahčyma dasłać paviedamleńnie: %s"
@@ -6677,6 +6849,9 @@ msgstr "Spałučany ad"
msgid "Member Since"
msgstr "Udzielničaje ad"
+msgid "Profile"
+msgstr "Profil"
+
msgid "Your AIM connection may be lost."
msgstr "Tvajo spałučeńnie AIM moža zhubicca."
@@ -6976,6 +7151,7 @@ msgstr "_Spałučysia"
msgid "Get AIM Info"
msgstr "Atrymaj źviestki AIM"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "Redahuj kamentar siabra"
@@ -7085,7 +7261,6 @@ msgstr "Prapanova dla %s spałučycca z nami na %s:%hu dziela Prostaha IM."
msgid "Attempting to connect to %s:%hu."
msgstr "Sproba spałučycca z %s:%hu."
-#, c-format
msgid "Attempting to connect via proxy server."
msgstr "Sproba spałučycca praz proxy-server."
@@ -7180,7 +7355,7 @@ msgstr "Inšaje"
msgid "Visible"
msgstr "Niabačny"
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
#, fuzzy
@@ -7271,16 +7446,48 @@ msgstr "Apošniaja aktualizacyja"
msgid "Could not change buddy information."
msgstr "Kali łaska, uviadzi źviestki ab siabry."
-#, c-format
-msgid "%d needs Q&A"
+msgid "Mobile"
+msgstr "Mabilnik"
+
+msgid "Note"
+msgstr "Natatki"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "Ikona siabra"
+
+msgid "Change his/her memo as you like"
msgstr ""
#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "Dadaj siabra"
+msgid "_Modify"
+msgstr "Madyfikuj"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "Madyfikuj"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "Server zaniaty"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%u requires verification"
+msgstr "Vymahaj aŭtaryzacyi"
#, fuzzy
-msgid "Input answer here"
+msgid "Add buddy question"
+msgstr "Dadać siabra ŭ tvoj śpis?"
+
+#, fuzzy
+msgid "Enter answer here"
msgstr "Akreśl zapyt tut"
msgid "Send"
@@ -7294,18 +7501,19 @@ msgid "Authorization denied message:"
msgstr "Paviedamleńnie admovy aŭtaryzacyi:"
#, fuzzy
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr "Prabač, ale ty nie majho typu..."
#, fuzzy, c-format
-msgid "%d needs authentication"
+msgid "%u needs authorization"
msgstr "Karystalnik %d vymahaje aŭtaryzacyi"
#, fuzzy
msgid "Add buddy authorize"
msgstr "Dadać siabra ŭ tvoj śpis?"
-msgid "Input request here"
+#, fuzzy
+msgid "Enter request here"
msgstr "Akreśl zapyt tut"
msgid "Would you be my friend?"
@@ -7328,7 +7536,7 @@ msgid "Failed sending authorize"
msgstr "Kali łaska, aŭtaryzuj mianie!"
#, fuzzy, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr "Niaŭdałaje vydaleńnie siabra"
#, fuzzy, c-format
@@ -7373,6 +7581,10 @@ msgid "You can only search for permanent Qun\n"
msgstr "Ty možaš šukać tolki stałyja hrupy QQ\n"
#, fuzzy
+msgid "(Invalid UTF-8 string)"
+msgstr "Niapravilnyja nałady proxy"
+
+#, fuzzy
msgid "Not member"
msgstr "Ja nia ŭdzielnik"
@@ -7415,16 +7627,19 @@ msgstr "Hetaja hrupa nie dazvalaje dałučeńnia inšych"
msgid "Join QQ Qun"
msgstr "Dałučysia da hutarki"
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
-msgstr ""
+msgid "Input request here"
+msgstr "Akreśl zapyt tut"
+
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "Ty paśpiachova madyfikavaŭ udzielnika Quna"
#, fuzzy
msgid "Successfully joined Qun"
msgstr "Ty paśpiachova madyfikavaŭ udzielnika Quna"
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
msgid "QQ Qun Operation"
@@ -7434,7 +7649,7 @@ msgstr "Aperacyja QQ Qun"
msgid "Failed:"
msgstr "Pamyłka"
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
#, fuzzy
@@ -7449,11 +7664,11 @@ msgstr ""
"hetaja aperacyja całkam vydalić hety Qun."
#, fuzzy
-msgid "Sorry, you are not our style ..."
+msgid "Sorry, you are not our style"
msgstr "Prabač, ale ty nie majho typu..."
#, fuzzy
-msgid "Successfully changed Qun member"
+msgid "Successfully changed Qun members"
msgstr "Ty paśpiachova madyfikavaŭ udzielnika Quna"
#, fuzzy
@@ -7464,35 +7679,35 @@ msgid "You have successfully created a Qun"
msgstr "Ty paśpiachova stvaryŭ Qun"
#, fuzzy
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr "Chočaš zaraz akreślić padrabiaznaści Quna?"
msgid "Setup"
msgstr "Akreśl"
#, fuzzy, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr "Karystalnik %d choča dałučycca da hrupy %d"
#, fuzzy, c-format
-msgid "%d request to join Qun %d"
+msgid "%u request to join Qun %u"
msgstr "Karystalnik %d choča dałučycca da hrupy %d"
#, fuzzy, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr "Pamyłka dałučeńnia siabra da hutarki"
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr "Vydali siabra"
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "Vydali siabra"
#, c-format
msgid "Unknown-%d"
@@ -7609,6 +7824,13 @@ msgstr "<b>Apošniaja aktualizacyja</b>: %s<br>\n"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<b>Dziejna spałučany</b>: %d<br>\n"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<b>Apošniaja aktualizacyja</b>: %s<br>\n"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7616,7 +7838,7 @@ msgid "<i>Feel free to join us!</i> :)"
msgstr ""
#, fuzzy, c-format
-msgid "About OpenQ r%s"
+msgid "About OpenQ %s"
msgstr "Ab %s"
#, fuzzy
@@ -7637,6 +7859,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "Ab %s"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Chatni adras"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7668,7 +7894,6 @@ msgstr ""
msgid "QQ2008"
msgstr ""
-#. #endif
#, fuzzy
msgid "Connect by TCP"
msgstr "Spałučysia praz TCP"
@@ -7681,6 +7906,9 @@ msgstr "Port servera"
msgid "Show server news"
msgstr "Adras servera"
+msgid "Show chat room when msg comes"
+msgstr ""
+
#, fuzzy
msgid "Keep alive interval (seconds)"
msgstr "Pamyłka padtrymki aktyŭnaha stanu"
@@ -7690,11 +7918,7 @@ msgid "Update interval (seconds)"
msgstr "Pamyłka padtrymki aktyŭnaha stanu"
#, fuzzy
-msgid "Can not decrypt server reply"
-msgstr "Niemahčyma atrymać źviestki ab servery"
-
-#, fuzzy
-msgid "Can not decrypt get server reply"
+msgid "Cannot decrypt server reply"
msgstr "Niemahčyma atrymać źviestki ab servery"
#, c-format
@@ -7717,21 +7941,24 @@ msgid "Activation required"
msgstr "Vymahaje rehistracyi"
#, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr ""
-msgid "Keep alive error"
-msgstr "Pamyłka padtrymki aktyŭnaha stanu"
+#, fuzzy
+msgid "Could not decrypt server reply"
+msgstr "Niemahčyma atrymać źviestki ab servery"
#, fuzzy
-msgid "Requesting captcha ..."
+msgid "Requesting captcha"
msgstr "Vymahańnie ŭvahi %s..."
-msgid "Checking code of captcha ..."
-msgstr ""
+#, fuzzy
+msgid "Checking captcha"
+msgstr "Vymahańnie ŭvahi %s..."
-msgid "Failed captcha verify"
-msgstr ""
+#, fuzzy
+msgid "Failed captcha verification"
+msgstr "Pamyłka aŭtaryzacyi Yahoo!"
#, fuzzy
msgid "Captcha Image"
@@ -7741,38 +7968,30 @@ msgstr "Zapišy vyjavu"
msgid "Enter code"
msgstr "Uviadzi parol"
-msgid "QQ Captcha Verifing"
-msgstr ""
+#, fuzzy
+msgid "QQ Captcha Verification"
+msgstr "Pravierka sertyfikatu SSL"
#, fuzzy
msgid "Enter the text from the image"
msgstr "Uviadzi nazvu hrupy"
#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
+msgid "Unknown reply when checking password (0x%02X)"
msgstr ""
#, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
msgstr ""
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "Niemahčyma spałučycca."
msgid "Socket error"
msgstr "Pamyłka sokieta"
-#, fuzzy, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr ""
-"Spałučeńnie z serversm stračanaje:\n"
-"%s"
-
msgid "Unable to read from socket"
msgstr "Niemahčyma pračytać z sokieta"
@@ -7783,11 +8002,11 @@ msgid "Connection lost"
msgstr "Spałučeńnie zhublenaje"
#, fuzzy
-msgid "Get server ..."
+msgid "Getting server"
msgstr "Akreśl źviestki karystalnika..."
#, fuzzy
-msgid "Request token"
+msgid "Requesting token"
msgstr "Zapyt admoŭleny"
msgid "Couldn't resolve host"
@@ -7798,16 +8017,13 @@ msgid "Invalid server or port"
msgstr "Niapravilnaja pamyłka"
#, fuzzy
-msgid "Connecting server ..."
-msgstr "Spałučysia z serveram"
+msgid "Connecting to server"
+msgstr "Spałučeńnia z serveram SILC"
#, fuzzy
msgid "QQ Error"
msgstr "Pamyłka QQid"
-msgid "Failed to send IM."
-msgstr "Pamyłka dasyłańnia IM."
-
#, fuzzy, c-format
msgid ""
"Server News:\n"
@@ -7817,6 +8033,10 @@ msgid ""
msgstr "Retranślacyja servera ICQ"
#, fuzzy, c-format
+msgid "%s:%s"
+msgstr "%s (%s)"
+
+#, fuzzy, c-format
msgid "From %s:"
msgstr "Ad"
@@ -7826,32 +8046,30 @@ msgid ""
"%s"
msgstr "Instrukcyi servera: %s"
-msgid "Unknow SERVER CMD"
-msgstr ""
+#, fuzzy
+msgid "Unknown SERVER CMD"
+msgstr "Nieviadomaja pryčyna"
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
#, fuzzy
msgid "QQ Qun Command"
msgstr "Zahad"
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr ""
-
-msgid "Can not decrypt login reply"
-msgstr ""
+#, fuzzy
+msgid "Could not decrypt login reply"
+msgstr "Niemahčyma atrymać źviestki ab servery"
#, fuzzy
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr "Nieviadomaja pryčyna"
#, fuzzy
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr "Nieviadomaja pryčyna"
#, c-format
@@ -8672,9 +8890,6 @@ msgstr "Arhanizacyja"
msgid "Unit"
msgstr "Addzieł"
-msgid "Note"
-msgstr "Natatki"
-
msgid "Join Chat"
msgstr "Dałučysia da hutarki"
@@ -9332,6 +9547,10 @@ msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr ""
"Nazvy karystalnikaŭ SIP nia mohuć utrymlivać prabiełaŭ albo znakaŭ \"@\""
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "Port servera"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -9366,195 +9585,13 @@ msgid "Auth Domain"
msgstr "Aŭtaryzuj damen"
#, c-format
-msgid "Looking up %s"
-msgstr "Pošuk %s"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Pamyłka spałučeńnia z %s"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Uvachod: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "Niemahčyma zapisać fajł %s."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "Niemahčyma pračytać fajł %s."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "Paviedamleńnie nadta daŭhoje, apošnija %s bajtaŭ abatnutyja."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s dziejna nia spałučany/spałučanaja."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "Aściaroha dla %s nie dazvolenaja."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "Paviedamleńnie nie pryniataje, ty pieravysiŭ limit chutkaści servera."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "Hutarka ŭ %s niedastupnaja."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "Ty dasyłaješ paviedamleńni da %s nadta chutka."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "Ty zhubiŭ paviedamleńnie ad %s, bo jano było nadta daŭhim."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "Ty zhubiŭ paviedamleńnie ad %s, bo jano buło dasłanaje nadta chutka."
-
-#, c-format
-msgid "Failure."
-msgstr "Pamyłka."
-
-#, c-format
-msgid "Too many matches."
-msgstr "Nadta šmat adpaviednikaŭ."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "Treba bolš udakładnieńniaŭ."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "Servis katalohu časova niedastupny."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "Pošuk pavodle e-maiłu abmiežavany."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "Klučavoje słova ihnaravanaje."
-
-#, c-format
-msgid "No keywords."
-msgstr "Niama klučavych słovaŭ."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "Karystalnik nia maje źviestak z katalohu."
-
-#, c-format
-msgid "Country not supported."
-msgstr "Kraina nie padtrymvajecca."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Nieviadomaja pamyłka: %s."
-
-#, c-format
-msgid "Incorrect username or password."
-msgstr "Niapravilnaja nazva karystalnika albo parol."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "Servis časova niedastupny."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "Tvoj uzrovień aściarohi nadta vysoki, kab uvachodzić."
-
-#, 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 ""
-"Ty spałučajeśsia j adłučajeśsia nadta časta. Pačakaj 10 chvilin i pasprabuj "
-"znoŭ. Kali ty praciahnieš tak rabić, tabie pryjdziecca pačakać jašče daŭžej."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "Adbyłasia nieviadomaja pamyłka ŭvachodu: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "Adbyłasia nieviadomaja pamyłka %d. Źviestki: %s"
-
-msgid "Invalid Groupname"
-msgstr "Niapravilnaja nazva hrupy"
-
-msgid "Connection Closed"
-msgstr "Spałučeńnie začynienaje."
-
-msgid "Waiting for reply..."
-msgstr "Čakańnie adkazu..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr ""
-"TOC viarnuŭsia paśla pierapynku. Ciapier ty znoŭ možaš dasyłać paviedamleńni."
-
-msgid "Password Change Successful"
-msgstr "Parol paśpiachova źmienieny"
-
-msgid "_Group:"
-msgstr "_Hrupa:"
-
-msgid "Get Dir Info"
-msgstr "Atrymaj źviestki z katalohu"
-
-msgid "Set Dir Info"
-msgstr "Akreśl źviestki dla katalohu"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "Niemahčyma adčynić %s dziela zapisu!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "Pamyłka pieradačy fajłu; aperacyja, mabyć, anulavanaja z taho boku."
-
-msgid "Could not connect for transfer."
-msgstr "Niemahčyma spałučycca dziela pieradačy."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "Niemahčyma zapisać zahałovak fajłu. Fajł nia budzie pieradadzieny."
-
-msgid "Save As..."
-msgstr "Zapišy jak..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s prosić %s pryniać %d fajł: %s (%.2f %s)%s%s"
-msgstr[1] "%s prosić %s pryniać %d fajły: %s (%.2f %s)%s%s"
-msgstr[2] "%s prosić %s pryniać %d fajłaŭ: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s prosić ciabie dasłać jamu fajł"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "Plugin pratakołu TOC"
-
-#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
"%s zaprašaje ciabie ŭ Web-kamernuju hutarku, jakaja pakul nie padtrymvajecca."
+msgid "Your SMS was not delivered"
+msgstr ""
+
msgid "Your Yahoo! message did not get sent."
msgstr "Tvajo paviedamleńnie Yahoo! nie dasłanaje."
@@ -9820,13 +9857,9 @@ msgstr "Fajnaja spasyłka 3"
msgid "Last Update"
msgstr "Apošniaja aktualizacyja"
-#, c-format
-msgid "User information for %s unavailable"
-msgstr "Źviestki ab karystalniku %s niedastupnyja"
-
+#, fuzzy
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr ""
"Hety profil zachoŭvajecca na movie albo ŭ farmacie, jaki pakul nie "
"padtrymvajecca."
@@ -10162,9 +10195,6 @@ msgstr "Nie turbuj mianie"
msgid "Extended away"
msgstr "Pašyrany adychod"
-msgid "Mobile"
-msgstr "Mabilnik"
-
msgid "Listening to music"
msgstr "Słuhaju muzyku"
@@ -10206,18 +10236,6 @@ msgstr "+++ %s pierapyniaje biaździejańnie"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "Pamyłka čytańnia %s"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"Pry čytańni tvajho %s adbyłasia pamyłka. Jany nie byli zahružanyja, a stary "
-"fajł pieranazvany ŭ %s~."
-
msgid "Calculating..."
msgstr "Padlik..."
@@ -10298,6 +10316,12 @@ msgstr "Pamyłka zapisu ŭ %s: %s"
msgid "Unable to connect to %s: %s"
msgstr "Niemahčyma spałučycca z %s: %s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr "Server vymahaje TLS/SSL, kab uvajści. Niama padtrymki TLS/SSL."
+
#, c-format
msgid " - %s"
msgstr " - %s"
@@ -10331,6 +10355,18 @@ msgstr "Admoŭlenaje spałučeńnie."
msgid "Address already in use."
msgstr "Hetaja nazva hutarki ŭžo zaniataja"
+#, c-format
+msgid "Error Reading %s"
+msgstr "Pamyłka čytańnia %s"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"Pry čytańni tvajho %s adbyłasia pamyłka. Jany nie byli zahružanyja, a stary "
+"fajł pieranazvany ŭ %s~."
+
msgid "Internet Messenger"
msgstr "Internet-kamunikatar"
@@ -10373,10 +10409,8 @@ msgstr "Nahadvańni ab novaj pošcie"
msgid "Use this buddy _icon for this account:"
msgstr "Užyj hetuju siabroŭskuju _ikonu dziela hetaha kontu:"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "Opcyi %s"
+msgid "_Advanced"
+msgstr "_Prasunuty"
msgid "Use GNOME Proxy Settings"
msgstr "Užyj nałady proxy GNOME"
@@ -10411,9 +10445,6 @@ msgstr "Kali budzieš hladzieć uvažliviej, "
msgid "you can see the butterflies mating"
msgstr "ty ŭbačyš matylkoŭ"
-msgid "Proxy Options"
-msgstr "Opcyi proxy"
-
msgid "Proxy _type:"
msgstr "_Typ proxy:"
@@ -10442,8 +10473,9 @@ msgstr "_Prosty"
msgid "Create _this new account on the server"
msgstr "Stvary hety novy kont na servery"
-msgid "_Advanced"
-msgstr "_Prasunuty"
+#, fuzzy
+msgid "_Proxy"
+msgstr "Proxy"
msgid "Enabled"
msgstr "Uklučany"
@@ -10520,6 +10552,17 @@ msgstr "Atrymaj ź_viestki"
msgid "I_M"
msgstr "_Razmova"
+#, fuzzy
+msgid "_Audio Call"
+msgstr "_Dadaj hutarku"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Videahutarka"
+
msgid "_Send File..."
msgstr "_Dašli fajł..."
@@ -10657,6 +10700,10 @@ msgstr "/Pryładździe/Siabroŭskija _začepki"
msgid "/Tools/_Certificates"
msgstr "/Pryładździe/_Sertyfikaty"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Pryładździe/Tajemnaść"
+
msgid "/Tools/Plu_gins"
msgstr "/Pryładździe/Plu_giny"
@@ -10666,10 +10713,6 @@ msgstr "/Pryładździe/_Nałady"
msgid "/Tools/Pr_ivacy"
msgstr "/Pryładździe/_Tajemnaść"
-#, fuzzy
-msgid "/Tools/Smile_y"
-msgstr "/Pryładździe/Tajemnaść"
-
msgid "/Tools/_File Transfers"
msgstr "/Pryładździe/_Pieradačy fajłaŭ"
@@ -10788,8 +10831,8 @@ msgstr "Samastojna"
msgid "By status"
msgstr "Pavodle statusu"
-msgid "By log size"
-msgstr "Pavodle pamieru logaŭ"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10805,6 +10848,9 @@ msgstr "Spałučy znoŭ"
msgid "Re-enable"
msgstr "Uklučy znoŭ"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr "Ty viarnuŭsia!"
@@ -10893,6 +10939,9 @@ msgstr ""
msgid "A_lias:"
msgstr "A_lias:"
+msgid "_Group:"
+msgstr "_Hrupa:"
+
msgid "Auto_join when account becomes online."
msgstr "Aŭtamatyčna _dałučajsia, kali kont uvachodzić."
@@ -10946,14 +10995,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr "Zaprasi siabra ŭ pakoj dla hutarak"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Akreśl nazvu karystalnika, jakoha ty chočaš zaprasić, razam ź "
-"nieabaviazkovym tekstam zaprašeńnia."
-
msgid "_Buddy:"
msgstr "_Siabra:"
@@ -11028,6 +11069,22 @@ msgstr "/Razmova/_Zapišy jak..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Razmova/_Ačyść bufer prakrutki"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Razmova/_Jašče"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Razmova/_Jašče"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Razmova/_Jašče"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Razmova/Pakažy _log"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Razmova/_Dašli fajł..."
@@ -11100,6 +11157,18 @@ msgstr "/Razmova"
msgid "/Conversation/View Log"
msgstr "/Razmova/Pakažy log"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Razmova/Jašče"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Razmova/Pakažy log"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Razmova/Jašče"
+
msgid "/Conversation/Send File..."
msgstr "/Razmova/Dašli fajł..."
@@ -11285,6 +11354,9 @@ msgstr "Vykanaŭca"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "padtrymka"
@@ -11426,6 +11498,10 @@ msgstr "Hruzinskaja"
msgid "Ubuntu Georgian Translators"
msgstr "Hruzinskija pierakładčyki Ubuntu"
+#, fuzzy
+msgid "Khmer"
+msgstr "Inšaje"
+
msgid "Kannada"
msgstr "Kannada"
@@ -11447,6 +11523,10 @@ msgstr "Litoŭskaja"
msgid "Macedonian"
msgstr "Makiedonskaja"
+#, fuzzy
+msgid "Mongolian"
+msgstr "Makiedonskaja"
+
msgid "Bokmål Norwegian"
msgstr "Narveskaja Bokmål"
@@ -11561,7 +11641,24 @@ msgstr ""
"prahramu.<BR><BR>"
#, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, fuzzy, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin na irc.freenode.net<BR><BR>"
+
+#, fuzzy, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin na irc.freenode.net<BR><BR>"
msgid "Current Developers"
@@ -11883,15 +11980,6 @@ msgstr "Šryft dziela infarmavańnia pra nabor tekstu"
msgid "Enable typing notification"
msgstr "Uklučy infarmavańni pra nabor tekstu"
-msgid "_Copy Email Address"
-msgstr "_Skapijuj adras email"
-
-msgid "_Open Link in Browser"
-msgstr "_Adčyni spasyłku ŭ hartačy"
-
-msgid "_Copy Link Location"
-msgstr "_Skapijuj adras spasyłki"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12134,13 +12222,14 @@ msgstr "_Ahladaj kataloh logaŭ"
msgid "%s %s. Try `%s -h' for more information.\n"
msgstr "%s %s. Pasprabuj `%s -h' dla padrabiaźniejšych źviestak.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12165,13 +12254,14 @@ msgstr ""
" --display=EKRAN patrebny ekran X\n"
" -v, --version pakažy dziejnuju versiju i vyjdzi\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12232,11 +12322,27 @@ msgstr ""
msgid "Pidgin"
msgstr "Pidgin"
-msgid "Open All Messages"
-msgstr "Adčyni ŭsie paviedamleńni"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Majem novuju poštu!</span>"
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "Padlik..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -12267,6 +12373,27 @@ msgid ""
"The 'Manual' browser command has been chosen, but no command has been set."
msgstr "Abrany 'Admysłovy' hartač, ale zahad nie akreśleny."
+msgid "Open All Messages"
+msgstr "Adčyni ŭsie paviedamleńni"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Majem novuju poštu!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "Novaja siabroŭskaja začepka"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Majem novuju poštu!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "Nieviadomaje paviedamleńnie"
+
msgid "The following plugins will be unloaded."
msgstr "Nastupnyja pluginy buduć adhružanyja."
@@ -12315,6 +12442,10 @@ msgstr "<b>Padrabiaznaści ab pluginie</b>"
msgid "Select a file"
msgstr "Abiary fajł"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Redahuj siabroŭskuju začepku"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "Čyja začepka"
@@ -12385,6 +12516,50 @@ msgstr "_Paŭtarajecca"
msgid "Pounce Target"
msgstr "Meta začepki"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "Pačynaje pisać"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "Prypyniajecca pisać"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "Uvachodzić"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s viarnuŭsia ź biaździejańnia (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "Viartajecca"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "Spynijsia pisać"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "Vychodzić"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "Biaździejničaje"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "Kali adyjšoŭ"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Dašli paviedamleńnie"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "Nieviadomaja padzieja dla začepki. Kali łaska, adrapartuj ab hetym!"
+
msgid "Smiley theme failed to unpack."
msgstr "Pamyłka raspakavańnia matyvu smajłaŭ."
@@ -12407,6 +12582,12 @@ msgstr "Klavijaturnyja skaroty"
msgid "Cl_ose conversations with the Escape key"
msgstr "_Začyniaj razmovy klavišaj Escape"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Śpis siabroŭ"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "Ikona systemnaha treju"
@@ -12517,9 +12698,6 @@ msgstr "Niemahčyma ŭklučyć prahramu dziela kanfihuravańnie proxy."
msgid "Cannot start browser configuration program."
msgstr "Niemahčyma ŭklučyć prahramu dziela kanfihuravańnia hartača."
-msgid "ST_UN server:"
-msgstr "ST_UN server:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">Prykład: stunserver.org</span>"
@@ -12544,6 +12722,10 @@ msgstr "_Pačatkovy port:"
msgid "_End port:"
msgstr "_Kancavy port:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr "Proxy-server & hartač"
@@ -12572,6 +12754,10 @@ msgstr "Proxy-server"
msgid "No proxy"
msgstr "Biaz proxy"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "_Karystalnik:"
@@ -12735,12 +12921,12 @@ msgstr "Kali i adyjšoŭ, i biaździejny"
msgid "Auto-away"
msgstr "Aŭtamatyčny adychod"
-msgid "Change status when _idle"
-msgstr "Źmianiaj status, kali _biaździejničaju"
-
msgid "_Minutes before becoming idle:"
msgstr "_Chvilin da biaździejnaści:"
+msgid "Change status when _idle"
+msgstr "Źmianiaj status, kali _biaździejničaju"
+
msgid "Change _status to:"
msgstr "Źmianiaj _status na:"
@@ -12888,6 +13074,12 @@ msgstr "_Zapišy i ŭžyj"
msgid "Status for %s"
msgstr "Status dla %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
#, fuzzy
msgid "Custom Smiley"
msgstr "Ustaŭ smajł"
@@ -12898,15 +13090,15 @@ msgstr ""
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
+msgstr ""
+
#, fuzzy
msgid "Duplicate Shortcut"
msgstr "Padvojnaje vypraŭleńnie."
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
-msgstr ""
-
#, fuzzy
msgid "Please select an image for the smiley."
msgstr "Abiary sabie nastroj sa śpisu."
@@ -12920,19 +13112,23 @@ msgid "Add Smiley"
msgstr "Uśmichnisia!"
#, fuzzy
-msgid "Smiley _Image"
-msgstr "Zapišy vyjavu"
+msgid "_Image:"
+msgstr "_Vyjava"
-#. Smiley shortcut
+#. Shortcut text
#, fuzzy
-msgid "Smiley S_hortcut"
-msgstr "Klavijaturnyja skaroty"
+msgid "S_hortcut text:"
+msgstr "Paradkuj"
#, fuzzy
msgid "Smiley"
msgstr "Uśmichnisia!"
#, fuzzy
+msgid "Shortcut Text"
+msgstr "Paradkuj"
+
+#, fuzzy
msgid "Custom Smiley Manager"
msgstr "Kiraŭnik sertyfikataŭ"
@@ -13058,6 +13254,16 @@ msgstr ""
"Niemahčyma zahruzić vyjavu '%s': pryčyna nieviadomaja, mahčyma, fajł vyjavy "
"sapsavany"
+#, fuzzy
+msgid "_Open Link"
+msgstr "_Adčyniaj spasyłki ŭ:"
+
+msgid "_Copy Link Location"
+msgstr "_Skapijuj adras spasyłki"
+
+msgid "_Copy Email Address"
+msgstr "_Skapijuj adras email"
+
msgid "Save File"
msgstr "Zapišy fajł"
@@ -14036,9 +14242,6 @@ msgstr "_Trymaj vakno sa śpisam siabroŭ naviersie:"
msgid "Only when docked"
msgstr "Tolki kali ŭbudavanaje"
-msgid "_Flash window when chat messages are received"
-msgstr "Mir_haj vaknom, kali atrymanyja novyja paviedamleńni ŭ hutarcy"
-
msgid "Windows Pidgin Options"
msgstr "Opcyi Pidgina dla Windowsa"
@@ -14088,6 +14291,240 @@ msgstr "Dasyłaj i atrymvaj suvoryja strofy XMPP."
msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr "Hety plugin užyvajecca dziela debugavańnia serveraŭ i klijentaŭ XMPP."
+#, fuzzy
+#~ msgid "Invite message"
+#~ msgstr "Ustaŭ u paviedamleńnie"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Akreśl nazvu karystalnika, jakoha ty chočaš zaprasić, razam ź "
+#~ "nieabaviazkovym tekstam zaprašeńnia."
+
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "Niemahčyma atrymać adrasnuju knihu MSN"
+
+#, fuzzy
+#~ msgid "Connection to server lost (no data received within %d second)"
+#~ msgid_plural ""
+#~ "Connection to server lost (no data received within %d seconds)"
+#~ msgstr[0] ""
+#~ "Spałučeńnie z serveram stračanaje (niama źviestak ciaham %d sekundaŭ)"
+#~ msgstr[1] ""
+#~ "Spałučeńnie z serveram stračanaje (niama źviestak ciaham %d sekundaŭ)"
+#~ msgstr[2] ""
+#~ "Spałučeńnie z serveram stračanaje (niama źviestak ciaham %d sekundaŭ)"
+
+#~ msgid ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+#~ msgstr ""
+#~ "Ty možaš być chutka adłučany. Ty možaš užyć TOC, pakul heta nia budzie "
+#~ "vypraŭlena. Pravier aktualnaść na %s."
+
+#, fuzzy
+#~ msgid "Add buddy Q&A"
+#~ msgstr "Dadaj siabra"
+
+#, fuzzy
+#~ msgid "Can not decrypt get server reply"
+#~ msgstr "Niemahčyma atrymać źviestki ab servery"
+
+#~ msgid "Keep alive error"
+#~ msgstr "Pamyłka padtrymki aktyŭnaha stanu"
+
+#, fuzzy
+#~ msgid ""
+#~ "Lost connection with server:\n"
+#~ "%d, %s"
+#~ msgstr ""
+#~ "Spałučeńnie z serversm stračanaje:\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Connecting server ..."
+#~ msgstr "Spałučysia z serveram"
+
+#~ msgid "Failed to send IM."
+#~ msgstr "Pamyłka dasyłańnia IM."
+
+#~ msgid "Looking up %s"
+#~ msgstr "Pošuk %s"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "Pamyłka spałučeńnia z %s"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Uvachod: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "Niemahčyma zapisać fajł %s."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "Niemahčyma pračytać fajł %s."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "Paviedamleńnie nadta daŭhoje, apošnija %s bajtaŭ abatnutyja."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s dziejna nia spałučany/spałučanaja."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "Aściaroha dla %s nie dazvolenaja."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr ""
+#~ "Paviedamleńnie nie pryniataje, ty pieravysiŭ limit chutkaści servera."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "Hutarka ŭ %s niedastupnaja."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "Ty dasyłaješ paviedamleńni da %s nadta chutka."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "Ty zhubiŭ paviedamleńnie ad %s, bo jano było nadta daŭhim."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr ""
+#~ "Ty zhubiŭ paviedamleńnie ad %s, bo jano buło dasłanaje nadta chutka."
+
+#~ msgid "Failure."
+#~ msgstr "Pamyłka."
+
+#~ msgid "Too many matches."
+#~ msgstr "Nadta šmat adpaviednikaŭ."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "Treba bolš udakładnieńniaŭ."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "Servis katalohu časova niedastupny."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "Pošuk pavodle e-maiłu abmiežavany."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "Klučavoje słova ihnaravanaje."
+
+#~ msgid "No keywords."
+#~ msgstr "Niama klučavych słovaŭ."
+
+#~ msgid "User has no directory information."
+#~ msgstr "Karystalnik nia maje źviestak z katalohu."
+
+#~ msgid "Country not supported."
+#~ msgstr "Kraina nie padtrymvajecca."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Nieviadomaja pamyłka: %s."
+
+#~ msgid "Incorrect username or password."
+#~ msgstr "Niapravilnaja nazva karystalnika albo parol."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "Servis časova niedastupny."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "Tvoj uzrovień aściarohi nadta vysoki, kab uvachodzić."
+
+#~ 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 ""
+#~ "Ty spałučajeśsia j adłučajeśsia nadta časta. Pačakaj 10 chvilin i "
+#~ "pasprabuj znoŭ. Kali ty praciahnieš tak rabić, tabie pryjdziecca pačakać "
+#~ "jašče daŭžej."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "Adbyłasia nieviadomaja pamyłka ŭvachodu: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "Adbyłasia nieviadomaja pamyłka %d. Źviestki: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "Niapravilnaja nazva hrupy"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Spałučeńnie začynienaje."
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "Čakańnie adkazu..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr ""
+#~ "TOC viarnuŭsia paśla pierapynku. Ciapier ty znoŭ možaš dasyłać "
+#~ "paviedamleńni."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "Parol paśpiachova źmienieny"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Atrymaj źviestki z katalohu"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Akreśl źviestki dla katalohu"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "Niemahčyma adčynić %s dziela zapisu!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr "Pamyłka pieradačy fajłu; aperacyja, mabyć, anulavanaja z taho boku."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "Niemahčyma spałučycca dziela pieradačy."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "Niemahčyma zapisać zahałovak fajłu. Fajł nia budzie pieradadzieny."
+
+#~ msgid "Save As..."
+#~ msgstr "Zapišy jak..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s prosić %s pryniać %d fajł: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s prosić %s pryniać %d fajły: %s (%.2f %s)%s%s"
+#~ msgstr[2] "%s prosić %s pryniać %d fajłaŭ: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s prosić ciabie dasłać jamu fajł"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "Plugin pratakołu TOC"
+
+#~ msgid "User information for %s unavailable"
+#~ msgstr "Źviestki ab karystalniku %s niedastupnyja"
+
+#~ msgid "%s Options"
+#~ msgstr "Opcyi %s"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Opcyi proxy"
+
+#~ msgid "By log size"
+#~ msgstr "Pavodle pamieru logaŭ"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_Adčyni spasyłku ŭ hartačy"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "ST_UN server:"
+
+#, fuzzy
+#~ msgid "Smiley _Image"
+#~ msgstr "Zapišy vyjavu"
+
+#, fuzzy
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "Klavijaturnyja skaroty"
+
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "Mir_haj vaknom, kali atrymanyja novyja paviedamleńni ŭ hutarcy"
+
#~ msgid "A group with the name already exists."
#~ msgstr "Hrupa z takoj nazvaj užo isnuje."
@@ -14189,13 +14626,6 @@ msgstr "Hety plugin užyvajecca dziela debugavańnia serveraŭ i klijentaŭ XMPP
#~ msgid "Change Qun information"
#~ msgstr "Źviestki ab kanale"
-#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr "%s (%s)"
-
#~ msgid "System Message"
#~ msgstr "Systemnaje paviedamleńnie"
diff --git a/po/bg.po b/po/bg.po
index 01a9d30454..cd2109ecc8 100644
--- a/po/bg.po
+++ b/po/bg.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin-1.30\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
+"POT-Creation-Date: 2009-04-30 10:37-0400\n"
"PO-Revision-Date: 2007-02-12 00:46+0200\n"
"Last-Translator: Vladimir \"Kaladan\" Petkov <kaladan@gmail.com>\n"
"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
@@ -32,7 +32,7 @@ msgid ""
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -630,21 +630,6 @@ msgid "Send To"
msgstr "_Изпращане до"
#, fuzzy
-msgid "Invite message"
-msgstr "Вмъкване в съобщение"
-
-msgid "Invite"
-msgstr "Покана"
-
-#, fuzzy
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Въведете името на потребителя, който желаете да поканите заедно със "
-"съобщение за покана."
-
-#, fuzzy
msgid "Conversation"
msgstr "Разговори"
@@ -900,6 +885,43 @@ msgid "System Log"
msgstr "Дневник на системата"
#, fuzzy
+msgid "Calling ... "
+msgstr "Изчисляване..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+#, fuzzy
+msgid "Accept"
+msgstr "Прием_ане"
+
+#, fuzzy
+msgid "Reject"
+msgstr "Изчистване"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "Вие напуснахте канал%s%s"
+
+msgid "call: Make an audio call."
+msgstr ""
+
+#, fuzzy
msgid "Emails"
msgstr "Е-поща"
@@ -936,6 +958,9 @@ msgstr "Свързване"
msgid "IM"
msgstr "Съобщение"
+msgid "Invite"
+msgstr "Покана"
+
#, fuzzy
msgid "(none)"
msgstr "(без име)"
@@ -1160,7 +1185,6 @@ msgstr "%s премина в състояние „Няма ме“. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s иска да ви изпрати %s (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr ""
@@ -1216,7 +1240,6 @@ msgstr "_Минути преди преминаване в състояние
msgid "Change status to"
msgstr "Промяна на адреса До:"
-#. Conversations
msgid "Conversations"
msgstr "Разговори"
@@ -1562,7 +1585,6 @@ msgid ""
"conversation into the current conversation."
msgstr ""
-#, c-format
msgid "Online"
msgstr "Включен"
@@ -1611,6 +1633,28 @@ msgstr ""
msgid "Lastlog plugin."
msgstr ""
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "акаунти"
@@ -1709,15 +1753,6 @@ msgstr "Да се приеме ли поканата за разговор?"
msgid "SSL Certificate Verification"
msgstr ""
-#. Number of actions
-#, fuzzy
-msgid "Accept"
-msgstr "Прием_ане"
-
-#, fuzzy
-msgid "Reject"
-msgstr "Изчистване"
-
msgid "_View Certificate..."
msgstr ""
@@ -1856,6 +1891,18 @@ msgstr "%s напусна стаята."
msgid "%s left the room (%s)."
msgstr "%s напусна стаята (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Канене в конференция"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Въведете името на потребителя, който желаете да поканите заедно със "
+"съобщение за покана."
+
#, fuzzy, c-format
msgid "Failed to get connection: %s"
msgstr "Не може да бъде установена нова връзка."
@@ -1990,7 +2037,6 @@ msgstr ""
msgid "Transfer of file %s complete"
msgstr ""
-#, c-format
msgid "File transfer complete"
msgstr "Изпращането на файл завърши"
@@ -1998,7 +2044,6 @@ msgstr "Изпращането на файл завърши"
msgid "You canceled the transfer of %s"
msgstr "Отказахте получаването на файл от %s"
-#, c-format
msgid "File transfer cancelled"
msgstr "Прехвърлянето на файл е прекъснато"
@@ -2183,7 +2228,6 @@ msgstr "(%s) %s <автоматичен отговор>: %s\n"
msgid "You are using %s, but this plugin requires %s."
msgstr ""
-#, c-format
msgid "This plugin has not defined an ID."
msgstr ""
@@ -2673,6 +2717,32 @@ msgstr ""
msgid "Do not ask. Always save in pounce."
msgstr ""
+#, fuzzy
+msgid "One Time Password"
+msgstr "Въведете парола"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2880,7 +2950,6 @@ msgid ""
"Unable to establish connection with the local mDNS server. Is it running?"
msgstr ""
-#. Creating the options for the protocol
msgid "First name"
msgstr "Първо име"
@@ -2915,6 +2984,11 @@ msgstr "Приставка за протокола Bonjour"
msgid "Purple Person"
msgstr "Нов потребител"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "_Форматиране на дневника:"
+
msgid "Bonjour"
msgstr "Bonjour"
@@ -3083,13 +3157,13 @@ msgstr "Избор на шрифт"
msgid "Add to chat..."
msgstr "Добавяне към разговор..."
+#. Global
msgid "Available"
msgstr "На разположение"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "Няма ме"
@@ -3432,6 +3506,17 @@ msgid ""
"invalid characters."
msgstr ""
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "Това име вече се използва от някой друг"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Псевдоним"
+
msgid "Cannot change nick"
msgstr "Потребителското име не може да бъде променено"
@@ -3666,6 +3751,37 @@ msgstr ""
msgid "SASL error"
msgstr "Грешка при четенето"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "Няма посочена причина."
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Тази версия не е поддържана"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr "Неуспено свързване със сървъра."
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "Не може да бъде установена нова връзка."
+
+msgid "Unable to create socket"
+msgstr "Грешка при създаване на сокет"
+
+msgid "Write error"
+msgstr "Грешка при запис"
+
msgid "Full Name"
msgstr "Пълно име"
@@ -3732,6 +3848,10 @@ msgstr "Град"
msgid "Operating System"
msgstr ""
+#, fuzzy
+msgid "Local Time"
+msgstr "Локален файл:"
+
msgid "Last Activity"
msgstr ""
@@ -3967,7 +4087,6 @@ msgstr ""
msgid "Extended Away"
msgstr "Продължително състояние „Няма ме“"
-#, c-format
msgid "Do Not Disturb"
msgstr "Не ме безпокойте"
@@ -4094,9 +4213,6 @@ msgstr "Търсене за стаи"
msgid "You require encryption, but it is not available on this server."
msgstr ""
-msgid "Write error"
-msgstr "Грешка при запис"
-
#, fuzzy
msgid "Ping timeout"
msgstr "Обикновен текст"
@@ -4106,13 +4222,10 @@ msgstr "Грешка при четене"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-msgid "Unable to create socket"
-msgstr "Грешка при създаване на сокет"
-
#, fuzzy
msgid "Invalid XMPP ID"
msgstr "Невалиден ID"
@@ -4120,6 +4233,10 @@ msgstr "Невалиден ID"
msgid "Invalid XMPP ID. Domain must be set."
msgstr ""
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Неуспешно свързване със сървъра."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "Успешна регистрация на %s@%s"
@@ -4213,9 +4330,18 @@ msgstr "Идентификация"
msgid "Re-initializing Stream"
msgstr "Повторно инициализиране на поток"
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr "Не е разрешено"
+msgid "Mood"
+msgstr "Настроение"
+
+msgid "Now Listening"
+msgstr ""
+
msgid "Both"
msgstr "Всички"
@@ -4237,12 +4363,6 @@ msgstr "Няма"
msgid "Subscription"
msgstr "Абонамент"
-msgid "Mood"
-msgstr "Настроение"
-
-msgid "Now Listening"
-msgstr ""
-
#, fuzzy
msgid "Mood Text"
msgstr "Настроение"
@@ -4488,15 +4608,21 @@ msgid "Unable to ping user %s"
msgstr "Неуспех при забраната на потребителя %s"
#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr ""
#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+msgid "Unable to buzz, because %s might be offline."
msgstr ""
#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
+msgstr ""
+
+#, c-format
+msgid "Buzzing %s..."
msgstr ""
#. Yahoo only supports one attention command: the 'buzz'.
@@ -4508,11 +4634,38 @@ msgstr ""
msgid "%s has buzzed you!"
msgstr "%s влезе в (%s)"
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "Неуспех при изпращането на съобщение до %s."
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "Неуспех при добавянето на потребител в %s (%s)"
+
#, c-format
-msgid "Buzzing %s..."
+msgid "Unable to initiate media with %s: not subscribed to user presence"
msgstr ""
#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "Неуспешна регистрация"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr ""
+"Моля, въведете име на лицето, за което искате да видите повече информация."
+
+#, fuzzy
+msgid "Select a Resource"
+msgstr "Избор на файл"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "Покана за раз_говор"
+
+#, fuzzy
msgid "config: Configure a chat room."
msgstr "Влизане в стая за разговори"
@@ -4666,6 +4819,21 @@ msgstr "Грешка при присъединяването към чат %s"
msgid "Error in chat %s"
msgstr "Грешка в чат %s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "Получи се грешка при отварянето на файла."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "Преноса на файла е неуспешен"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Неуспешно запазване на изображение: %s\n"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4691,10 +4859,6 @@ msgstr ""
"Моля, въведете име на лицето, за което искате да видите повече информация."
#, fuzzy
-msgid "Select a Resource"
-msgstr "Избор на файл"
-
-#, fuzzy
msgid "Edit User Mood"
msgstr "Режими на потребителя"
@@ -4734,9 +4898,19 @@ msgstr "Действие"
msgid "Select an action"
msgstr "Избор на файл"
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr "Неуспех при добавянето на \"%s\"."
+
+msgid "Buddy Add error"
+msgstr ""
+
#, fuzzy
-msgid "Unable to retrieve MSN Address Book"
-msgstr "Добавяне към адресника"
+msgid "The username specified does not exist."
+msgstr "Новото форматиране е неправилно."
#, c-format
msgid "Buddy list synchronization issue in %s (%s)"
@@ -4962,7 +5136,7 @@ msgstr "Детски паспорт без родителско съгласие
msgid "Passport account not yet verified"
msgstr ""
-#, fuzzy, c-format
+#, fuzzy
msgid "Passport account suspended"
msgstr "Абонаментът временно спрян."
@@ -5054,6 +5228,13 @@ msgstr "Изпращане на мобилно съобщение."
msgid "Page"
msgstr "Страница"
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "Нива на предупреждение"
+
msgid "Has you"
msgstr "Ви има"
@@ -5096,6 +5277,14 @@ msgid "Album"
msgstr "Adium"
#, fuzzy
+msgid "Game Title"
+msgstr "Длъжност"
+
+#, fuzzy
+msgid "Office Title"
+msgstr "Длъжност"
+
+#, fuzzy
msgid "Set Friendly Name..."
msgstr "Име или номер в ICQ"
@@ -5306,8 +5495,9 @@ msgid ""
"does not exist."
msgstr ""
-msgid "Profile URL"
-msgstr "URL на профил"
+#, fuzzy
+msgid "View web profile"
+msgstr "Не е разрешено при състояние „Изключен“"
#. *< type
#. *< ui_requirement
@@ -5545,13 +5735,6 @@ msgstr "Добавяне към адресника"
msgid "Do you want to delete this buddy from your address book as well?"
msgstr "Искате ли да добавите този потребител към списъка с познатите си?"
-#. only notify the user about problems adding to the friends list
-#. * maybe we should do something else for other lists, but it probably
-#. * won't cause too many problems if we just ignore it
-#, c-format
-msgid "Unable to add \"%s\"."
-msgstr "Неуспех при добавянето на \"%s\"."
-
#, fuzzy
msgid "The username specified is invalid."
msgstr "Новото форматиране е неправилно."
@@ -5559,6 +5742,9 @@ msgstr "Новото форматиране е неправилно."
msgid "This Hotmail account may not be active."
msgstr ""
+msgid "Profile URL"
+msgstr "URL на профил"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5573,16 +5759,13 @@ msgstr ""
msgid "MSN Protocol Plugin"
msgstr "Приставка за протокола AIM/ICQ"
-msgid "Missing Cipher"
-msgstr ""
-
-msgid "The RC4 cipher could not be found"
+#, c-format
+msgid "No such user: %s"
msgstr ""
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
-msgstr ""
+#, fuzzy
+msgid "User lookup"
+msgstr "Стаи на потребителя"
#, fuzzy
msgid "Reading challenge"
@@ -5595,11 +5778,19 @@ msgstr ""
msgid "Logging in"
msgstr "Записване в дневник"
-#, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] ""
-msgstr[1] ""
+#, fuzzy
+msgid "MySpaceIM - No Username Set"
+msgstr "Без име"
+
+msgid "You appear to have no MySpace username."
+msgstr ""
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr ""
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr "Не сте свързван със сървъра."
#. Can't write _()'d strings in array initializers. Workaround.
#, fuzzy
@@ -5622,14 +5813,22 @@ msgid "MySpace"
msgstr ""
#, fuzzy
-msgid "MySpaceIM - No Username Set"
-msgstr "Без име"
+msgid "IM Friends"
+msgstr "_IM прозорци"
-msgid "You appear to have no MySpace username."
-msgstr ""
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+msgstr[1] ""
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
-msgstr ""
+#, fuzzy
+msgid "Add contacts from server"
+msgstr "Неправилен отговор от сървъра."
#. The session is now set up, ready to be connected. This emits the
#. * signedOn signal, so clients can now do anything with msimprpl, and
@@ -5653,6 +5852,22 @@ msgid "MySpaceIM Error"
msgstr ""
#, fuzzy
+msgid "Invalid input condition"
+msgstr "Приключване на връзката"
+
+#, fuzzy
+msgid "Read buffer full (2)"
+msgstr "Опашката е запълнена"
+
+#, fuzzy
+msgid "Unparseable message"
+msgstr "Съобщението не може да бъде прегледано"
+
+#, fuzzy, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr "Неуспешна връзка със сървъра"
+
+#, fuzzy
msgid "Failed to add buddy"
msgstr "Неуспешен опит за присъединяване към приятелски чат"
@@ -5663,14 +5878,6 @@ msgstr "Зареждане на списък с приятели от файл..
msgid "persist command failed"
msgstr ""
-#, c-format
-msgid "No such user: %s"
-msgstr ""
-
-#, fuzzy
-msgid "User lookup"
-msgstr "Стаи на потребителя"
-
#, fuzzy
msgid "Failed to remove buddy"
msgstr "Неуспешен опит за присъединяване към приятелски чат"
@@ -5681,39 +5888,16 @@ msgstr ""
msgid "blocklist command failed"
msgstr ""
-#, fuzzy
-msgid "Invalid input condition"
-msgstr "Приключване на връзката"
-
-#, fuzzy
-msgid "Read buffer full (2)"
-msgstr "Опашката е запълнена"
-
-#, fuzzy
-msgid "Unparseable message"
-msgstr "Съобщението не може да бъде прегледано"
-
-#, fuzzy, c-format
-msgid "Couldn't connect to host: %s (%d)"
-msgstr "Неуспешна връзка със сървъра"
+msgid "Missing Cipher"
+msgstr ""
-#, fuzzy
-msgid "IM Friends"
-msgstr "_IM прозорци"
+msgid "The RC4 cipher could not be found"
+msgstr ""
-#, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-msgstr[1] ""
-
-#, fuzzy
-msgid "Add contacts from server"
-msgstr "Неправилен отговор от сървъра."
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
msgid "Add friends from MySpace.com"
msgstr ""
@@ -5762,10 +5946,6 @@ msgid "User"
msgstr "Потребители"
#, fuzzy
-msgid "Profile"
-msgstr "Профил в MSN"
-
-#, fuzzy
msgid "Headline"
msgstr "_Отказ"
@@ -5780,17 +5960,6 @@ msgstr ""
msgid "Client Version"
msgstr "Затваряне на разговор"
-#. Protocol won't log in now without a username set.. Disconnect
-#, fuzzy
-msgid "No username set"
-msgstr "Без име"
-
-msgid "MySpaceIM - Please Set a Username"
-msgstr ""
-
-msgid "Please enter a username to check its availability:"
-msgstr ""
-
#, fuzzy
msgid "MySpaceIM - Username Available"
msgstr "Услугата не е налична"
@@ -5801,6 +5970,9 @@ msgstr ""
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr ""
+msgid "MySpaceIM - Please Set a Username"
+msgstr ""
+
#, fuzzy
msgid "This username is unavailable."
msgstr "В тази тема няма налични картинки за усмивки."
@@ -5809,6 +5981,14 @@ msgstr "В тази тема няма налични картинки за ус
msgid "Please try another username:"
msgstr "Въведете новата парола"
+#. Protocol won't log in now without a username set.. Disconnect
+#, fuzzy
+msgid "No username set"
+msgstr "Без име"
+
+msgid "Please enter a username to check its availability:"
+msgstr ""
+
#. TODO: icons for each zap
#. Lots of comments for translators:
#. Zap means "to strike suddenly and forcefully as if with a
@@ -6196,7 +6376,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr ""
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr ""
@@ -6460,23 +6639,18 @@ msgstr "Камера"
msgid "Screen Sharing"
msgstr "Име или номер в ICQ"
-#, c-format
msgid "Free For Chat"
msgstr "Свободен за разговор"
-#, c-format
msgid "Not Available"
msgstr "Не съм свободен"
-#, c-format
msgid "Occupied"
msgstr "Зает"
-#, c-format
msgid "Web Aware"
msgstr ""
-#, c-format
msgid "Invisible"
msgstr "Невидим"
@@ -6519,7 +6693,7 @@ msgid ""
"only letters, numbers and spaces, or contain only numbers."
msgstr ""
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
#, fuzzy
msgid "Invalid username."
@@ -6536,7 +6710,7 @@ msgstr "Абонаментът временно спрян."
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr ""
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6574,11 +6748,9 @@ msgstr ""
msgid "_OK"
msgstr "Да"
-#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
-msgstr ""
+#, fuzzy, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
+msgstr "Връзката със сървъра беше прекъсната."
#, fuzzy
msgid "Unable to get a valid AIM login hash."
@@ -6718,7 +6890,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] "Вие пропуснахте %hu от %s съобщение по неизвестни причини."
msgstr[1] "Вие пропуснахте %hu от %s съобщения по неизвестни причини."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "Съобщението не може да бъде изпратено: %s"
@@ -6740,6 +6912,10 @@ msgstr "Включен от"
msgid "Member Since"
msgstr "Член от"
+#, fuzzy
+msgid "Profile"
+msgstr "Профил в MSN"
+
msgid "Your AIM connection may be lost."
msgstr "Връзката ви с AIM по всяка вероятност прекъсна."
@@ -6941,9 +7117,9 @@ msgid ""
"The AIM servers were temporarily unable to send your buddy list. Your buddy "
"list is not lost, and will probably become available in a few minutes."
msgstr ""
-"Pidgin не успя да изтегли списъкът с познатите ви от сървъра на AIM. Списъкът "
-"ви обаче не е загубен. Той по всяка вероятност ще бъде достъпен след няколко "
-"часа."
+"Pidgin не успя да изтегли списъкът с познатите ви от сървъра на AIM. "
+"Списъкът ви обаче не е загубен. Той по всяка вероятност ще бъде достъпен "
+"след няколко часа."
msgid "Orphans"
msgstr "Сираци"
@@ -7026,6 +7202,7 @@ msgstr "Свързване"
msgid "Get AIM Info"
msgstr "Показване на данни"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "Редактиране на коментар"
@@ -7138,7 +7315,7 @@ msgstr ""
msgid "Attempting to connect to %s:%hu."
msgstr "Опит за пренасочване на връзката..."
-#, fuzzy, c-format
+#, fuzzy
msgid "Attempting to connect via proxy server."
msgstr "Опит за пренасочване на връзката..."
@@ -7247,7 +7424,7 @@ msgstr "Opera"
msgid "Visible"
msgstr "Невидим"
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
#, fuzzy
@@ -7342,17 +7519,51 @@ msgstr "Последно актуализиране"
msgid "Could not change buddy information."
msgstr "Въведете име на потребител"
-#, c-format
-msgid "%d needs Q&A"
+#, fuzzy
+msgid "Mobile"
+msgstr "Длъжност"
+
+msgid "Note"
+msgstr "Бележка"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "Икона на познат"
+
+msgid "Change his/her memo as you like"
msgstr ""
#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "Добавяне на приятел"
+msgid "_Modify"
+msgstr "_Промяна"
-msgid "Input answer here"
+#, fuzzy
+msgid "Memo Modify"
+msgstr "_Промяна"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "Сървърът е зает"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
msgstr ""
+#, fuzzy, c-format
+msgid "%u requires verification"
+msgstr "Запитване за разрешение"
+
+#, fuzzy
+msgid "Add buddy question"
+msgstr "Да се добави ли потребителят в списъка ви?"
+
+#, fuzzy
+msgid "Enter answer here"
+msgstr "Папката не може да бъде изпратена."
+
#, fuzzy
msgid "Send"
msgstr "_Изпращане"
@@ -7365,19 +7576,20 @@ msgstr "Невалидно потребителско име"
msgid "Authorization denied message:"
msgstr "Съобщение за отказано разрешение:"
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr ""
#, fuzzy, c-format
-msgid "%d needs authentication"
+msgid "%u needs authorization"
msgstr "Стартиране на идентификация"
#, fuzzy
msgid "Add buddy authorize"
msgstr "Да се добави ли потребителят в списъка ви?"
-msgid "Input request here"
-msgstr ""
+#, fuzzy
+msgid "Enter request here"
+msgstr "Задаване на сървър за конференции"
#, fuzzy
msgid "Would you be my friend?"
@@ -7400,7 +7612,7 @@ msgid "Failed sending authorize"
msgstr "Моля, разрешете ми!"
#, fuzzy, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr "Неуспешен опит за присъединяване към приятелски чат"
#, fuzzy, c-format
@@ -7446,6 +7658,10 @@ msgid "You can only search for permanent Qun\n"
msgstr ""
#, fuzzy
+msgid "(Invalid UTF-8 string)"
+msgstr "Невалидни настройки на прокси-сървъра."
+
+#, fuzzy
msgid "Not member"
msgstr "Член от"
@@ -7488,15 +7704,18 @@ msgstr ""
msgid "Join QQ Qun"
msgstr "Включване в разговор"
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
+msgid "Input request here"
msgstr ""
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "Телефонен номер"
+
msgid "Successfully joined Qun"
msgstr ""
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
#, fuzzy
@@ -7507,7 +7726,7 @@ msgstr "Настройки на звуците"
msgid "Failed:"
msgstr "Прекъснал"
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
#, fuzzy
@@ -7519,11 +7738,11 @@ msgid ""
"this operation will eventually remove this Qun."
msgstr ""
-msgid "Sorry, you are not our style ..."
+msgid "Sorry, you are not our style"
msgstr ""
#, fuzzy
-msgid "Successfully changed Qun member"
+msgid "Successfully changed Qun members"
msgstr "Телефонен номер"
#, fuzzy
@@ -7534,7 +7753,7 @@ msgid "You have successfully created a Qun"
msgstr ""
#, fuzzy
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr "Искате ли да запишете новия на негово място?"
#, fuzzy
@@ -7542,28 +7761,28 @@ msgid "Setup"
msgstr "Зареждане при стартиране"
#, fuzzy, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr "Потребителят не е в групата"
#, fuzzy, c-format
-msgid "%d request to join Qun %d"
+msgid "%u request to join Qun %u"
msgstr "Потребителят не е в групата"
#, fuzzy, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr "Неуспешен опит за присъединяване към приятелски чат"
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr "Изтриване на потребител"
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "Изтриване на потребител"
#, fuzzy, c-format
msgid "Unknown-%d"
@@ -7683,6 +7902,13 @@ msgstr "<b>Потребител:<b> %s<b>"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<b>Потребител:<b> %s<b>"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<b>Потребител:<b> %s<b>"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7690,7 +7916,7 @@ msgid "<i>Feel free to join us!</i> :)"
msgstr ""
#, fuzzy, c-format
-msgid "About OpenQ r%s"
+msgid "About OpenQ %s"
msgstr "Относно Pidgin"
#, fuzzy
@@ -7711,6 +7937,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "Относно Pidgin"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Домашен адрес"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7742,7 +7972,6 @@ msgstr ""
msgid "QQ2008"
msgstr ""
-#. #endif
#, fuzzy
msgid "Connect by TCP"
msgstr "Свързване"
@@ -7755,6 +7984,9 @@ msgstr "Порт"
msgid "Show server news"
msgstr "Сървър"
+msgid "Show chat room when msg comes"
+msgstr ""
+
#, fuzzy
msgid "Keep alive interval (seconds)"
msgstr "Грешка при четенето"
@@ -7764,11 +7996,7 @@ msgid "Update interval (seconds)"
msgstr "Грешка при четенето"
#, fuzzy
-msgid "Can not decrypt server reply"
-msgstr "Грешка при получаване данните на сървъра"
-
-#, fuzzy
-msgid "Can not decrypt get server reply"
+msgid "Cannot decrypt server reply"
msgstr "Грешка при получаване данните на сървъра"
#, c-format
@@ -7791,21 +8019,23 @@ msgid "Activation required"
msgstr "Изисква се регистрация"
#, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr ""
#, fuzzy
-msgid "Keep alive error"
-msgstr "Грешка при четенето"
+msgid "Could not decrypt server reply"
+msgstr "Грешка при получаване данните на сървъра"
-msgid "Requesting captcha ..."
-msgstr ""
+#, fuzzy
+msgid "Requesting captcha"
+msgstr "Отговорът е отказан"
-msgid "Checking code of captcha ..."
+msgid "Checking captcha"
msgstr ""
-msgid "Failed captcha verify"
-msgstr ""
+#, fuzzy
+msgid "Failed captcha verification"
+msgstr "Провалена Yahoo!-идентификация"
#, fuzzy
msgid "Captcha Image"
@@ -7815,7 +8045,7 @@ msgstr "Запазване на изображение"
msgid "Enter code"
msgstr "Въведете парола"
-msgid "QQ Captcha Verifing"
+msgid "QQ Captcha Verification"
msgstr ""
#, fuzzy
@@ -7823,16 +8053,15 @@ msgid "Enter the text from the image"
msgstr "Въведете име на групата, която искате да добавите."
#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
+msgid "Unknown reply when checking password (0x%02X)"
msgstr ""
#, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
msgstr ""
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "Неуспешно свързване."
@@ -7840,12 +8069,6 @@ msgstr "Неуспешно свързване."
msgid "Socket error"
msgstr "Непозната грешка"
-#, fuzzy, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr "Не сте свързван със сървъра."
-
#, fuzzy
msgid "Unable to read from socket"
msgstr "Грешка при четене през мрежата"
@@ -7859,11 +8082,11 @@ msgid "Connection lost"
msgstr "Връзката е прекъсната"
#, fuzzy
-msgid "Get server ..."
+msgid "Getting server"
msgstr "Задаване данни на потребител..."
#, fuzzy
-msgid "Request token"
+msgid "Requesting token"
msgstr "Отговорът е отказан"
#, fuzzy
@@ -7875,17 +8098,13 @@ msgid "Invalid server or port"
msgstr "Невалидна грешка"
#, fuzzy
-msgid "Connecting server ..."
-msgstr "Сървър"
+msgid "Connecting to server"
+msgstr "Свързване към сървър"
#, fuzzy
msgid "QQ Error"
msgstr "Грешка при четене"
-#, fuzzy
-msgid "Failed to send IM."
-msgstr "Неуспешно запазване на изображение: %s\n"
-
#, fuzzy, c-format
msgid ""
"Server News:\n"
@@ -7895,6 +8114,10 @@ msgid ""
msgstr "Сървър"
#, fuzzy, c-format
+msgid "%s:%s"
+msgstr "%s иска да ви изпрати %s (%s)"
+
+#, fuzzy, c-format
msgid "From %s:"
msgstr "От"
@@ -7904,32 +8127,30 @@ msgid ""
"%s"
msgstr "Данни за сървъра"
-msgid "Unknow SERVER CMD"
-msgstr ""
+#, fuzzy
+msgid "Unknown SERVER CMD"
+msgstr "Причината е неизвестна."
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
#, fuzzy
msgid "QQ Qun Command"
msgstr "Команда"
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr ""
-
-msgid "Can not decrypt login reply"
-msgstr ""
+#, fuzzy
+msgid "Could not decrypt login reply"
+msgstr "Грешка при получаване данните на сървъра"
#, fuzzy
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr "Причината е неизвестна."
#, fuzzy
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr "Причината е неизвестна."
#, fuzzy, c-format
@@ -8750,9 +8971,6 @@ msgstr "Организация"
msgid "Unit"
msgstr "Единица"
-msgid "Note"
-msgstr "Бележка"
-
msgid "Join Chat"
msgstr "Включване в разговор"
@@ -9396,6 +9614,10 @@ msgstr "Неуспешна връзка със сървъра"
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr "Потребителските имена в IRC не може да съдържат интервали"
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "Порт"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -9434,190 +9656,10 @@ msgid "Auth Domain"
msgstr "Автоматично"
#, c-format
-msgid "Looking up %s"
-msgstr ""
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Свързването с %s се провали"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Влизане: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "Файлът %s не може да бъде записан."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "Файлът %s не може да бъде прочетен."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "Твърде дълго съобщение, последните %s байта бяха отрязани."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s в момента не е свързан."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr ""
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr ""
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "Чата в %s не е достъпен."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "Изпращате твърде бързо съобщения към %s."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "Пропуснахте съобщение от %s, тъй като то беше твърде голямо."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "Пропуснахте съобщение от %s, тъй като то беше изпратено твърде бързо."
-
-#, c-format
-msgid "Failure."
-msgstr "Грешка."
-
-#, c-format
-msgid "Too many matches."
-msgstr "Твърде много съвпадения."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr ""
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr ""
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr ""
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "Ключовите думи са игнорирани."
-
-#, c-format
-msgid "No keywords."
-msgstr "Няма ключови думи."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "В директорията няма данни за този потребител."
-
-#, c-format
-msgid "Country not supported."
-msgstr ""
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr ""
-
-#, fuzzy, c-format
-msgid "Incorrect username or password."
-msgstr "Неправилно потребителско име или парола."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "Услугата е временно недостъпна."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr ""
-
-#, c-format
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
-msgstr ""
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "Получи се непозната грешка при влизането: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "Получи се непозната грешка, %d. Подробности: %s"
-
-msgid "Invalid Groupname"
-msgstr "Невалидно име на група"
-
-msgid "Connection Closed"
-msgstr "Връзката е прекъсната"
-
-msgid "Waiting for reply..."
-msgstr "Изчакване за отговор..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "TOC отново работи. Сега отново можете да изпращате съобщения."
-
-msgid "Password Change Successful"
-msgstr "Успешна смяна на паролата"
-
-msgid "_Group:"
-msgstr "_Група:"
-
-msgid "Get Dir Info"
-msgstr "Данни за директория"
-
-msgid "Set Dir Info"
-msgstr "Задаване данните на директорията"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "%s не може да бъде отворен за запис!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr ""
-"Неуспешен пренос на файла. Получателят вероятно е отказал получаването."
-
-msgid "Could not connect for transfer."
-msgstr "Не може да бъде установена връзка за трансфер."
-
-msgid "Could not write file header. The file will not be transferred."
+msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
-#, fuzzy
-msgid "Save As..."
-msgstr "Запазване на икона като..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s пита %s дали ще приеме %d файл: %s (%.2f %s)%s%s"
-msgstr[1] "%s питат %s дали ще приемат %d файлове: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s иска да им изпратите файл"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "Модул за протокола TOC"
-
-#, c-format
-msgid "%s has sent you a webcam invite, which is not yet supported."
+msgid "Your SMS was not delivered"
msgstr ""
msgid "Your Yahoo! message did not get sent."
@@ -9901,14 +9943,9 @@ msgstr "Готина връзка 3"
msgid "Last Update"
msgstr "Последно актуализиране"
-#, c-format
-msgid "User information for %s unavailable"
-msgstr "Няма налични данни за %s"
-
#, fuzzy
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr "Извиняваме се, но не-английски профили засега не се поддържат."
msgid ""
@@ -10232,10 +10269,6 @@ msgstr "Не ме безпокойте"
msgid "Extended away"
msgstr "Продължително състояние „Няма ме“"
-#, fuzzy
-msgid "Mobile"
-msgstr "Длъжност"
-
msgid "Listening to music"
msgstr ""
@@ -10277,16 +10310,6 @@ msgstr "%s премина в състояние „Активен“"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "Грешка при четенето на %s"
-
-#, 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 "Грешка при на вашият списък с познати. Списъкът не беше зареден."
-
msgid "Calculating..."
msgstr "Изчисляване..."
@@ -10359,6 +10382,12 @@ msgstr "Грешка при писане в %s: %s"
msgid "Unable to connect to %s: %s"
msgstr "Невъзможност за връзка с %s: %s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr "Сървърът изисква TLS или SSL за влизане. Нямаме поддръжка на TLS/SSL."
+
#, c-format
msgid " - %s"
msgstr ""
@@ -10392,6 +10421,16 @@ msgstr "Връзката е прекъсната"
msgid "Address already in use."
msgstr "Това име вече се използва от някой друг"
+#, c-format
+msgid "Error Reading %s"
+msgstr "Грешка при четенето на %s"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr "Грешка при на вашият списък с познати. Списъкът не беше зареден."
+
msgid "Internet Messenger"
msgstr "Бързи съобщения"
@@ -10439,10 +10478,8 @@ msgstr "Известяване за нова е-поща"
msgid "Use this buddy _icon for this account:"
msgstr ""
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s настройки"
+msgid "_Advanced"
+msgstr "_Допълнителни"
#, fuzzy
msgid "Use GNOME Proxy Settings"
@@ -10478,9 +10515,6 @@ msgstr "Ако погледнете достатъчно близо"
msgid "you can see the butterflies mating"
msgstr "можете да видите пеперудите да се съчетават"
-msgid "Proxy Options"
-msgstr "Настройки за сървър-посредник"
-
msgid "Proxy _type:"
msgstr "_Вид сървър-посредник:"
@@ -10509,8 +10543,9 @@ msgstr "_Основни"
msgid "Create _this new account on the server"
msgstr ""
-msgid "_Advanced"
-msgstr "_Допълнителни"
+#, fuzzy
+msgid "_Proxy"
+msgstr "Сървър-посредник"
msgid "Enabled"
msgstr "Активиран"
@@ -10577,6 +10612,17 @@ msgid "I_M"
msgstr "_Съобщение"
#, fuzzy
+msgid "_Audio Call"
+msgstr "Доб_авяне на разговор"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Видео разговор"
+
+#, fuzzy
msgid "_Send File..."
msgstr "_Изпращане на файл"
@@ -10729,6 +10775,10 @@ msgstr "/Инструменти/Познат"
msgid "/Tools/_Certificates"
msgstr "/Инструменти/На_стройки"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Инструменти/Уединение"
+
msgid "/Tools/Plu_gins"
msgstr "/Инструменти/П_риставки"
@@ -10738,10 +10788,6 @@ msgstr "/Инструменти/На_стройки"
msgid "/Tools/Pr_ivacy"
msgstr "/Инструменти/_Уединение"
-#, fuzzy
-msgid "/Tools/Smile_y"
-msgstr "/Инструменти/Уединение"
-
msgid "/Tools/_File Transfers"
msgstr "/Инструменти/Пренос на _файлове"
@@ -10866,8 +10912,8 @@ msgstr "Ръчно"
msgid "By status"
msgstr "По състояние"
-msgid "By log size"
-msgstr "По размер на дневника"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10885,6 +10931,9 @@ msgstr "Свързване"
msgid "Re-enable"
msgstr "Активиране на акаунт"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr ""
@@ -10982,6 +11031,9 @@ msgstr ""
msgid "A_lias:"
msgstr "Псевдоним:"
+msgid "_Group:"
+msgstr "_Група:"
+
msgid "Auto_join when account becomes online."
msgstr ""
@@ -11035,14 +11087,6 @@ msgstr "Не сте включени с абонамент, който може
msgid "Invite Buddy Into Chat Room"
msgstr "Покана към потребител в стая за разговори"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Въведете името на потребителя, който желаете да поканите заедно със "
-"съобщение за покана."
-
msgid "_Buddy:"
msgstr "_Приятел:"
@@ -11120,6 +11164,22 @@ msgstr "/Разговор/_Запазване като..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Разговор/Изчистване"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Разговор/Затвар_яне"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Разговор/Затвар_яне"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Разговор/Затвар_яне"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Разговор/Преглед на _история"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Разговор/Изпращане _на файл..."
@@ -11197,6 +11257,18 @@ msgstr "/_Разговор"
msgid "/Conversation/View Log"
msgstr "/Разговори/Преглед на историята"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Разговор/Затвар_яне"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Разговори/Преглед на историята"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Разговор/Затвар_яне"
+
msgid "/Conversation/Send File..."
msgstr "/Разговори/Изпращане на файл..."
@@ -11393,6 +11465,9 @@ msgstr "Адрес"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "поддръжка"
@@ -11543,6 +11618,10 @@ msgid "Ubuntu Georgian Translators"
msgstr "Настоящи преводачи"
#, fuzzy
+msgid "Khmer"
+msgstr "Opera"
+
+#, fuzzy
msgid "Kannada"
msgstr "Забранено"
@@ -11565,6 +11644,10 @@ msgid "Macedonian"
msgstr "македонски"
#, fuzzy
+msgid "Mongolian"
+msgstr "македонски"
+
+#, fuzzy
msgid "Bokmål Norwegian"
msgstr "норвежки"
@@ -11679,12 +11762,29 @@ msgstr ""
"Gadu-Gadu едновременно. Написан е чрез Gtk+.<BR><BR> Имате право да "
"променяте и разпространявате програмата под условията на лиценза GPL "
"(версия 1 или по-нова) Копие на GPL може да бъде намерен във файла \"COPYING"
-"\", разпространяван с Pidgin. Правата за копиране на Pidgin са собственост на "
-"хората, които допринасят за неговото развитие. Програмата се разпространява "
-"без никакви гаранции.<BR><BR>"
+"\", разпространяван с Pidgin. Правата за копиране на Pidgin са собственост "
+"на хората, които допринасят за неговото развитие. Програмата се "
+"разпространява без никакви гаранции.<BR><BR>"
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, fuzzy, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"4\">IRC:</FONT> #Pidgin на irc.freenode.net<BR><BR>"
#, fuzzy, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"4\">IRC:</FONT> #Pidgin на irc.freenode.net<BR><BR>"
msgid "Current Developers"
@@ -12017,15 +12117,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr "Известяване за нова е-поща"
-msgid "_Copy Email Address"
-msgstr "_Копиране на адреса на ел. поща"
-
-msgid "_Open Link in Browser"
-msgstr "_Отваряне на връзката в браузър"
-
-msgid "_Copy Link Location"
-msgstr "_Копиране адреса на връзката"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12302,6 +12393,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12319,6 +12411,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12350,11 +12443,27 @@ msgstr ""
msgid "Pidgin"
msgstr "Ping"
-msgid "Open All Messages"
-msgstr "Отваряне на всички съобщения"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Имате поща!</span>"
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "Изчисляване..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -12383,6 +12492,27 @@ msgid ""
"The 'Manual' browser command has been chosen, but no command has been set."
msgstr ""
+msgid "Open All Messages"
+msgstr "Отваряне на всички съобщения"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Имате поща!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "Нов потребител"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Имате поща!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "Непознато съобщение"
+
msgid "The following plugins will be unloaded."
msgstr "Следните приставки ще бъдат деактивирани."
@@ -12432,6 +12562,10 @@ msgstr "<b>Настройки на приставката</b>"
msgid "Select a file"
msgstr "Избор на файл"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Редакция"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "Кога"
@@ -12507,6 +12641,50 @@ msgstr ""
msgid "Pounce Target"
msgstr "Кога"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "Събеседникът _започна да пише"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "Потребителят пише..."
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "Влизане"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s излезе от състояние „Бездействам“ (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "Зав_ръщане от състояние „Няма ме“"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "Събеседникът _престана да пише"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "Излизане"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "%s премина в състояние „Бездействам“"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "При състояние \"Няма ме\""
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Изпращане на _съобщение"
+
+#, c-format
+msgid "Unknown.... Please report this!"
+msgstr ""
+
msgid "Smiley theme failed to unpack."
msgstr ""
@@ -12530,6 +12708,12 @@ msgstr ""
msgid "Cl_ose conversations with the Escape key"
msgstr "Разговори с %s"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Списък с приятели"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "Икона в системната лента"
@@ -12651,9 +12835,6 @@ msgstr ""
msgid "Cannot start browser configuration program."
msgstr "Грешка при получаване данните на потребителя"
-msgid "ST_UN server:"
-msgstr "ST_UN сървър:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr ""
@@ -12678,6 +12859,10 @@ msgstr "_Начален порт:"
msgid "_End port:"
msgstr "Кра_ен порт:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
#, fuzzy
msgid "Proxy Server &amp; Browser"
msgstr "Сървър-посредник"
@@ -12707,6 +12892,10 @@ msgstr "Сървър-посредник"
msgid "No proxy"
msgstr "Без сървър-посредник"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "_Потребител:"
@@ -12875,14 +13064,14 @@ msgid "Auto-away"
msgstr "Автоматично преминаване в „Няма ме“"
#, fuzzy
-msgid "Change status when _idle"
-msgstr "Преминаване в състояние „Няма ме“ след активно състояние „Бездействам“"
-
-#, fuzzy
msgid "_Minutes before becoming idle:"
msgstr "_Минути преди преминаване в състояние „Няма ме“:"
#, fuzzy
+msgid "Change status when _idle"
+msgstr "Преминаване в състояние „Няма ме“ след активно състояние „Бездействам“"
+
+#, fuzzy
msgid "Change _status to:"
msgstr "Промяна на адреса До:"
@@ -13039,6 +13228,12 @@ msgstr "Запаз_ване и използване"
msgid "Status for %s"
msgstr "Състояние за %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
#, fuzzy
msgid "Custom Smiley"
msgstr "Вмъкване на усмивка"
@@ -13049,15 +13244,15 @@ msgstr ""
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
+msgstr ""
+
#, fuzzy
msgid "Duplicate Shortcut"
msgstr "Файл с публичния ключ"
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
-msgstr ""
-
#, fuzzy
msgid "Please select an image for the smiley."
msgstr "Въведете новата парола"
@@ -13071,17 +13266,22 @@ msgid "Add Smiley"
msgstr "Усмивка!"
#, fuzzy
-msgid "Smiley _Image"
+msgid "_Image:"
msgstr "Запазване на изображение"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr ""
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "Порт"
#, fuzzy
msgid "Smiley"
msgstr "Усмивка!"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "Порт"
+
msgid "Custom Smiley Manager"
msgstr ""
@@ -13205,6 +13405,16 @@ msgid ""
msgstr ""
#, fuzzy
+msgid "_Open Link"
+msgstr "_Отваряне на връзката в:"
+
+msgid "_Copy Link Location"
+msgstr "_Копиране адреса на връзката"
+
+msgid "_Copy Email Address"
+msgstr "_Копиране на адреса на ел. поща"
+
+#, fuzzy
msgid "Save File"
msgstr "Запазване на файл..."
@@ -14211,10 +14421,6 @@ msgid "Only when docked"
msgstr ""
#, fuzzy
-msgid "_Flash window when chat messages are received"
-msgstr "_Прозореца да примигва при получаване на ново съобщение"
-
-#, fuzzy
msgid "Windows Pidgin Options"
msgstr "Настройки за влизане"
@@ -14267,6 +14473,179 @@ msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr ""
#, fuzzy
+#~ msgid "Invite message"
+#~ msgstr "Вмъкване в съобщение"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Въведете името на потребителя, който желаете да поканите заедно със "
+#~ "съобщение за покана."
+
+#, fuzzy
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "Добавяне към адресника"
+
+#, fuzzy
+#~ msgid "Add buddy Q&A"
+#~ msgstr "Добавяне на приятел"
+
+#, fuzzy
+#~ msgid "Can not decrypt get server reply"
+#~ msgstr "Грешка при получаване данните на сървъра"
+
+#, fuzzy
+#~ msgid "Keep alive error"
+#~ msgstr "Грешка при четенето"
+
+#, fuzzy
+#~ msgid ""
+#~ "Lost connection with server:\n"
+#~ "%d, %s"
+#~ msgstr "Не сте свързван със сървъра."
+
+#, fuzzy
+#~ msgid "Connecting server ..."
+#~ msgstr "Сървър"
+
+#, fuzzy
+#~ msgid "Failed to send IM."
+#~ msgstr "Неуспешно запазване на изображение: %s\n"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "Свързването с %s се провали"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Влизане: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "Файлът %s не може да бъде записан."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "Файлът %s не може да бъде прочетен."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "Твърде дълго съобщение, последните %s байта бяха отрязани."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s в момента не е свързан."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "Чата в %s не е достъпен."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "Изпращате твърде бързо съобщения към %s."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "Пропуснахте съобщение от %s, тъй като то беше твърде голямо."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr ""
+#~ "Пропуснахте съобщение от %s, тъй като то беше изпратено твърде бързо."
+
+#~ msgid "Failure."
+#~ msgstr "Грешка."
+
+#~ msgid "Too many matches."
+#~ msgstr "Твърде много съвпадения."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "Ключовите думи са игнорирани."
+
+#~ msgid "No keywords."
+#~ msgstr "Няма ключови думи."
+
+#~ msgid "User has no directory information."
+#~ msgstr "В директорията няма данни за този потребител."
+
+#, fuzzy
+#~ msgid "Incorrect username or password."
+#~ msgstr "Неправилно потребителско име или парола."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "Услугата е временно недостъпна."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "Получи се непозната грешка при влизането: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "Получи се непозната грешка, %d. Подробности: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "Невалидно име на група"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Връзката е прекъсната"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "Изчакване за отговор..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "TOC отново работи. Сега отново можете да изпращате съобщения."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "Успешна смяна на паролата"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Данни за директория"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Задаване данните на директорията"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "%s не може да бъде отворен за запис!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr ""
+#~ "Неуспешен пренос на файла. Получателят вероятно е отказал получаването."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "Не може да бъде установена връзка за трансфер."
+
+#, fuzzy
+#~ msgid "Save As..."
+#~ msgstr "Запазване на икона като..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s пита %s дали ще приеме %d файл: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s питат %s дали ще приемат %d файлове: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s иска да им изпратите файл"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "Модул за протокола TOC"
+
+#~ msgid "User information for %s unavailable"
+#~ msgstr "Няма налични данни за %s"
+
+#~ msgid "%s Options"
+#~ msgstr "%s настройки"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Настройки за сървър-посредник"
+
+#~ msgid "By log size"
+#~ msgstr "По размер на дневника"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_Отваряне на връзката в браузър"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "ST_UN сървър:"
+
+#, fuzzy
+#~ msgid "Smiley _Image"
+#~ msgstr "Запазване на изображение"
+
+#, fuzzy
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "_Прозореца да примигва при получаване на ново съобщение"
+
+#, fuzzy
#~ msgid "A group with the name already exists."
#~ msgstr "Вече съществува папка с това име"
@@ -14339,13 +14718,6 @@ msgstr ""
#~ msgstr "Сигурни ли сте, че искате да изтриете %s?"
#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr "%s иска да ви изпрати %s (%s)"
-
-#, fuzzy
#~ msgid "System Message"
#~ msgstr "Съобщение"
@@ -14484,10 +14856,6 @@ msgstr ""
#~ msgid "Invalid screen name"
#~ msgstr "Невалидно потребителско име"
-#, fuzzy
-#~ msgid "Unable to make SSL connection to server."
-#~ msgstr "Неуспено свързване със сървъра."
-
#~ msgid "Too evil (sender)"
#~ msgstr "Твърде зъл (изпращач)"
@@ -14918,8 +15286,8 @@ msgstr ""
#~ msgid ""
#~ "When this happens, TOC ignores any messages sent to it, and may kick you "
-#~ "off if you send a message. Pidgin will prevent anything from going through. "
-#~ "This is only temporary, please be patient."
+#~ "off if you send a message. Pidgin will prevent anything from going "
+#~ "through. This is only temporary, please be patient."
#~ msgstr ""
#~ "Когато това се случи, TOC игнорира всички съобщения, изпращани до него. "
#~ "Ако изпратите съобщение, може да ви изхвърли. Pidgin ще възпрепятства "
diff --git a/po/bn.po b/po/bn.po
index c2f0dc3ac2..005ae22d9b 100644
--- a/po/bn.po
+++ b/po/bn.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin 2.5.3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-27 10:17-0800\n"
+"POT-Creation-Date: 2009-04-30 10:37-0400\n"
"PO-Revision-Date: 2008-11-13 17:07+0600\n"
"Last-Translator: Israt Jahan <israt@ankur.org.bd>\n"
"Language-Team: Bengali <core@bengalinux.org>\n"
@@ -633,19 +633,6 @@ msgstr "লগ করা বন্ধ করা হয়েছে। এই ক
msgid "Send To"
msgstr "এখানে প্রেরণ করুন"
-msgid "Invite message"
-msgstr "আমন্ত্রণ বার্তা"
-
-msgid "Invite"
-msgstr "আমন্ত্রণ"
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"একটি ঐচ্ছিক আমন্ত্রণ বার্তার সাথে,\n"
-"অনুগ্রহ করে আপনি যে ব্যবহারকারীকে আমন্ত্রণ করতে চান তার নামটি প্রবেশ করান।"
-
msgid "Conversation"
msgstr "কথোপকথন"
@@ -904,6 +891,41 @@ msgstr "সকল কথোপকথন"
msgid "System Log"
msgstr "সিস্টেম লগ"
+#, fuzzy
+msgid "Calling ... "
+msgstr "গননা করা হচ্ছে..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "গ্রহণ করুন"
+
+msgid "Reject"
+msgstr "প্রত্যাখান করুন"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "আপনি চ্যানেল%s%s বিভক্ত করেছেন"
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "ই-মেইলসমূহ"
@@ -938,6 +960,9 @@ msgstr "অব্যাহত"
msgid "IM"
msgstr "তাৎক্ষণিক বার্তা"
+msgid "Invite"
+msgstr "আমন্ত্রণ"
+
msgid "(none)"
msgstr "(কোনটি না)"
@@ -1151,7 +1176,6 @@ msgstr "%1s এখন অনুপস্থিত। (%2s)"
msgid "%s has sent you a message. (%s)"
msgstr "%1s আপনাকে একটি বার্তা পাঠিয়েছে। (%2s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "অজানা পাউন্স ইভেন্ট। অনুগ্রহ করে এটি রিপোর্ট করুন!"
@@ -1583,6 +1607,29 @@ msgstr "GntLastlog"
msgid "Lastlog plugin."
msgstr "সর্বশেষ-লগ প্লাগইন।"
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+# tithi
+#, fuzzy
+msgid "TinyURL"
+msgstr "টিউন URL"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "একাউন্টসমূহ"
@@ -1690,13 +1737,6 @@ msgstr "%s এর জন্য কি প্রত্যয়ন পত্র গ
msgid "SSL Certificate Verification"
msgstr "SSL প্রত্যয়ন পত্রের সত্যতা যাচাই"
-#. Number of actions
-msgid "Accept"
-msgstr "গ্রহণ করুন"
-
-msgid "Reject"
-msgstr "প্রত্যাখান করুন"
-
# tithi
msgid "_View Certificate..."
msgstr "প্রত্যয়ন পত্র দেখুন...(_V)"
@@ -1852,6 +1892,19 @@ msgstr "%s এই কক্ষে ত্যাগ করেছে।"
msgid "%s left the room (%s)."
msgstr "%1s (%2s) এই কক্ষে ত্যাগ করেছে।"
+# tithi
+#, fuzzy
+msgid "Invite to chat"
+msgstr "অধিবেশনে আমন্ত্রন জানান"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"একটি ঐচ্ছিক আমন্ত্রণ বার্তা সহ, অনুগ্রহ করে আপনি যে ব্যবহারকারীকে আমন্ত্রণ জানাতে চান "
+"তার নামটি প্রবেশ করান।"
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "সংযোগ পেতে ব্যর্থ: %s"
@@ -2734,6 +2787,32 @@ msgstr "অফলাইন বার্তা পাউন্সে সংরক
msgid "Do not ask. Always save in pounce."
msgstr "জিজ্ঞাসা করবেন না। সবসময় পাউন্সে সংরক্ষণ করুন।"
+#, fuzzy
+msgid "One Time Password"
+msgstr "গুপ্তসংকেত প্রবেশ করান"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -3141,6 +3220,7 @@ msgstr "বন্ধুর জন্য আড্ডা নির্বাচন
msgid "Add to chat..."
msgstr "আড্ডায় যোগ দিন..."
+#. Global
msgid "Available"
msgstr "সহজলভ্য"
@@ -3493,6 +3573,17 @@ msgstr ""
"আপনার নির্বাচিত একাউন্ট নাম সার্ভার থেকে বাতিল করা হয়েছে। এটি সম্ভবত অবৈধ "
"বর্ণচিহ্ন ধারণ করে।"
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "এই আড্ডা নামটি ইতোমধ্যে ব্যবহৃত হচ্ছে"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "ডাকনাম"
+
msgid "Cannot change nick"
msgstr "ডাকনাম পরিবর্তন করতে পারে না"
@@ -3789,6 +3880,42 @@ msgstr "সার্ভার থেকে অবৈধ চ্যালেঞ্
msgid "SASL error"
msgstr "SASL ত্রুটি"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "কোনো কারন দর্শানো হয়নি"
+
+# tithi
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "অসমর্থিত সংস্করণ"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"সার্ভারের সাথে সংযোগ স্থাপন করতে পারে না:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"সার্ভারের সাথে সংযোগ স্থাপন করতে পারে না:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "সংযোগ প্রস্তুত করতে ব্যর্থ"
+
+msgid "Unable to create socket"
+msgstr "সকেট তৈরী করতে অক্ষম"
+
+msgid "Write error"
+msgstr "লিখন ত্রুটি"
+
msgid "Full Name"
msgstr "পুরো নাম"
@@ -3856,6 +3983,10 @@ msgstr "ক্লায়েন্ট"
msgid "Operating System"
msgstr "অপারেটিং সিস্টেম"
+#, fuzzy
+msgid "Local Time"
+msgstr "স্থানীয় ফাইল:"
+
# tithi
msgid "Last Activity"
msgstr "শেষ সক্রিয়তা"
@@ -4220,9 +4351,6 @@ msgstr "কক্ষ খুঁজুন"
msgid "You require encryption, but it is not available on this server."
msgstr "আপনার সঙ্কেতায়ন প্রয়োজন, কিন্তু এটি এই সার্ভারটিতে সহজলভ্য নয়।"
-msgid "Write error"
-msgstr "লিখন ত্রুটি"
-
msgid "Ping timeout"
msgstr "পিঙ্গ সময়-উত্তীর্ণ হয়েছে"
@@ -4231,14 +4359,9 @@ msgstr "পাঠ ত্রুটি"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"সার্ভারের সাথে সংযোগ স্থাপন করতে পারে না:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "সকেট তৈরী করতে অক্ষম"
msgid "Invalid XMPP ID"
msgstr "অবৈধ XMPP ID"
@@ -4247,6 +4370,10 @@ msgstr "অবৈধ XMPP ID"
msgid "Invalid XMPP ID. Domain must be set."
msgstr "অবৈধ XMPP ID। ডোমেইন অবশ্যই নির্ধারণ করতে হবে।"
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "সার্ভারে সংযোগ দিতে ব্যর্থ হয়েছে।"
+
# tithi
#, c-format
msgid "Registration of %s@%s successful"
@@ -4342,6 +4469,13 @@ msgstr "সার্ভার আবদ্ধকরণ সমর্থন কর
msgid "Not Authorized"
msgstr "অনুমোদিত নয়"
+msgid "Mood"
+msgstr "অবস্থা"
+
+# tithi
+msgid "Now Listening"
+msgstr "এখন শুনছে"
+
msgid "Both"
msgstr "উভয়"
@@ -4365,13 +4499,6 @@ msgstr "কোনটি না"
msgid "Subscription"
msgstr "শেয়ারকরণ"
-msgid "Mood"
-msgstr "অবস্থা"
-
-# tithi
-msgid "Now Listening"
-msgstr "এখন শুনছে"
-
msgid "Mood Text"
msgstr "মোড পাঠ"
@@ -4645,20 +4772,27 @@ msgid "Unable to ping user %s"
msgstr "%s ব্যবহারকারীকে পিঙ্গ করতে অক্ষম"
# tithi
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr "বাজ দিতে ব্যর্থ, কারণ %s ব্যবহারকারীর সম্পর্কে কোনো কিছু জানা নেই।"
# tithi
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr "বাজ দিতে ব্যর্থ, কারণ %s ব্যবহারকারীরা সম্ভবত অফলাইনে।"
# tithi
-#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+#, fuzzy, c-format
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "বাজ দিতে ব্যর্থ, কারণ %s ব্যবহারকারী এটি সমর্থন করে না।"
+# tithi
+#, c-format
+msgid "Buzzing %s..."
+msgstr "%s বাজ দিচ্ছে..."
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
msgid "Buzz"
@@ -4668,10 +4802,37 @@ msgstr "বাজ"
msgid "%s has buzzed you!"
msgstr "%s আপনাকে বাজ দিয়েছে!"
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "%s এ ফাইল পাঠাতে সমর্থ ছিল না, অবৈধ JID"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "%s এ ফাইল পাঠাতে সমর্থ ছিল না, ব্যবহারকারী অনলাইনে নেই"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr "%s এ ফাইল পাঠাতে সমর্থ ছিল না, ব্যবহারকারী উপস্থিতিতে সম্মত নয়"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "নিবন্ধন ব্যর্থ হয়েছে"
+
+# fix me tithi
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr ""
+"অনুগ্রহ করে আপনি %s এর এমন একটি সম্পদ নির্বাচন করুন যাতে আপনি একটি ফাইল পাঠাতে চান"
+
+msgid "Select a Resource"
+msgstr "একটি সম্পদ নির্বাচন করুন"
+
# tithi
-#, c-format
-msgid "Buzzing %s..."
-msgstr "%s বাজ দিচ্ছে..."
+#, fuzzy
+msgid "Initiate Media"
+msgstr "আড্ডা প্রস্তুত করুন (_C)"
msgid "config: Configure a chat room."
msgstr "বিন্যাস: একটি আড্ডার কক্ষ পছন্দসই বিন্যাস করুন।"
@@ -4845,6 +5006,21 @@ msgstr "%s আড্ডায় অংশগ্রহনের ত্রুটি"
msgid "Error in chat %s"
msgstr "%s আড্ডায় ত্রুটি"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "ফাইলটি খোলার সময়ে একটি ত্রুটি ঘটেছে।"
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "ফাইল বিনিময় ব্যর্থ"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "'%1s' ফাইলটি খুলতে ব্যর্থ: %2s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
# tithi
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
@@ -4871,9 +5047,6 @@ msgid "Please select the resource of %s to which you would like to send a file"
msgstr ""
"অনুগ্রহ করে আপনি %s এর এমন একটি সম্পদ নির্বাচন করুন যাতে আপনি একটি ফাইল পাঠাতে চান"
-msgid "Select a Resource"
-msgstr "একটি সম্পদ নির্বাচন করুন"
-
msgid "Edit User Mood"
msgstr "ব্যবহাকারীরর মোড সম্পাদন করুন"
@@ -6852,7 +7025,7 @@ msgstr ""
"ব্যবহারকারীর অবশ্যই একটি বৈধ ই-মেইল ঠিকানা থাকতে হবে, বা একটি বর্ণ দ্বারা শুরু হবে "
"এবং শুধুমাত্র বর্ণ, সংখ্যা এবং স্পেস ধারণ করবে, বা শুধুমাত্র সংখ্যা ধারণ করবে।"
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr "অবৈধ ব্যবহারকারীর নাম।"
@@ -6871,7 +7044,7 @@ msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "AOL তাৎক্ষণিক বার্তাবাহক সার্ভিস সাময়িকভাবে অপ্রাপ্য।"
# tithi
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -7073,7 +7246,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] "আপনি অজ্ঞাত কারণে %1hu বার্তাটি %2s হতে হারিয়েছেন।"
msgstr[1] "আপনি অজ্ঞাত কারণে %1hu বার্তাসমূহ %2s হতে হারিয়েছেন।"
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "বার্তা পাঠানো অসমর্থ: %s।"
@@ -7740,6 +7913,38 @@ msgstr "হালনাগাদ করুন"
msgid "Could not change buddy information."
msgstr "বন্ধুর তথ্য পরিবর্তন করতে পারে না।"
+msgid "Mobile"
+msgstr "মোবাইল"
+
+msgid "Note"
+msgstr "নোট"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "ঠিকানা পরিবর্তন করুন"
+
+msgid "Change his/her memo as you like"
+msgstr ""
+
+#, fuzzy
+msgid "_Modify"
+msgstr "পরিবর্তন"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "পরিবর্তন"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "সার্ভার ব্যস্ত"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
# tithi
#, c-format
msgid "%u requires verification"
@@ -8080,6 +8285,9 @@ msgstr "<p><b>প্রাপ্তিস্বীকার</b>:<br>\n"
msgid "<p><b>Scrupulous Testers</b>:<br>\n"
msgstr "<p><b> মূল লেখক</b>:<br>\n"
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
# fix me tithi
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr "<p><i>এবং, সমস্ত ছেলে পিছন-কামরায়...</i><br>\n"
@@ -8236,7 +8444,6 @@ msgstr ""
"(0x%02X) এ লগইন করার সময় অজানা উত্তর কোড:\n"
"%s"
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "সংযুক্ত করতে ব্যর্থ।"
@@ -9273,9 +9480,6 @@ msgstr "সংঘঠন"
msgid "Unit"
msgstr "একক"
-msgid "Note"
-msgstr "নোট"
-
msgid "Join Chat"
msgstr "আড্ডায় যোগ দিন"
@@ -10063,216 +10267,14 @@ msgstr "স্বীকৃত ব্যবহারকারী"
msgid "Auth Domain"
msgstr "স্বীকৃত ডোমেইন"
-#, c-format
-msgid "Looking up %s"
-msgstr "%s খোঁজা হচ্ছে"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "%s-এর সাথে সংযোগ দিতে ব্যর্থ হয়েছে"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "সাইনঅন: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "%s ফাইলে লিখতে ব্যর্থ হয়েছে।"
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "%s ফাইলে পড়তে ব্যর্থ হয়েছে।"
-
-# tithi
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "বার্তাটি খুব দীর্ঘ, শেষ %s বাইট বাদ দেয়া হয়েছে।"
-
-# tithi
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s বর্তমানে লগইন নেই।"
-
-# tithi
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "%s এর সতর্কতা অনুমোদিত নয়।"
-
-# tithi
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "একটি বার্তা বাদ দেয়া হয়েছে, আপনি সার্ভারের গতি সীমা অতিক্রম করছেন।"
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "%s-এ আড্ডা সহজলভ্য নয়।"
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "আপনি %s এ খুব দ্রুত বার্তা পাঠাচ্ছেন।"
-
-# tithi
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "আপনি %s থেকে একটি তাৎক্ষণিক বার্তা পাননি কারণ এটি খুব বড় ছিল।"
-
-# tithi
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "আপনি %s থেকে একটি তাৎক্ষণিক বার্তা পাননি কারণ এটি খুব দ্রুত পাঠানো হয়েছিল।"
-
-#, c-format
-msgid "Failure."
-msgstr "ব্যর্থতা।"
-
-# tithi
-#, c-format
-msgid "Too many matches."
-msgstr "অনেক বেশি মিল।"
-
-# tithi
-#, c-format
-msgid "Need more qualifiers."
-msgstr "আরও নিয়ন্ত্রণকারী প্রয়োজন।"
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "নির্দেশিকা সেবা সাময়িকভাবে অপ্রাপ্য"
-
-# tithi
-#, c-format
-msgid "Email lookup restricted."
-msgstr "ই-মেইল অনুসন্ধান নিষিদ্ধ।"
-
-# tithi
-#, c-format
-msgid "Keyword ignored."
-msgstr "মূল-শব্দ অগ্রাহ্য করা হয়েছে।"
-
-#, c-format
-msgid "No keywords."
-msgstr "কোনো মূল-শব্দ নেই।"
-
-#, c-format
-msgid "User has no directory information."
-msgstr "ব্যবহারকারীর কোনো নির্দেশিকা তথ্য নেই।"
-
-#, c-format
-msgid "Country not supported."
-msgstr "দেশটি সমর্থিত নয়।"
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "ব্যর্থতা অজানা: %s।"
-
-#, c-format
-msgid "Incorrect username or password."
-msgstr "ভুল ব্যবহারকারীর-নাম বা গুপ্তসংকেত।"
-
-# tithi
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "সেবাটি সাময়িকভাবে অপ্রাপ্য।"
-
-# tithi
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "আপনার সতর্কতা স্তর লগইন করার জন্য বর্তমানে খুব উচ্চ।"
-
-# tithi
-#, 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 ""
-"আপনি প্রায়সই সংযুক্ত এবং বিচ্ছিন্ন হচ্ছেন। দশ মিনিট অপেক্ষা করুন এবং পুনরায় চেষ্টা "
-"করুন। আপনি যদি চেষ্টা অব্যাহত রাখেন, আপনাকে দীর্ঘ সময় অপেক্ষা করতে হতে পারে।"
-
-# tithi
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "একটি অজানা সাইনঅন ত্রুটি সংঘটিত হয়েছে: %s।"
-
-# tithi
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "একটি অজানা ত্রুটি, %d, সংঘটিত হয়েছে। তথ্য: %s"
-
-# tithi
-msgid "Invalid Groupname"
-msgstr "অবৈধ গ্রুপনাম"
-
-msgid "Connection Closed"
-msgstr "সংযোগ বন্ধ করা হয়েছে "
-
-msgid "Waiting for reply..."
-msgstr "উত্তরের অপেক্ষায়..."
-
-# tithi
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "TOC পুনরায় সচল হয়েছে। আপনি এখন পুনরায় বার্তা পাঠাতে পারেন।"
-
-msgid "Password Change Successful"
-msgstr "গুপ্তসংকেত পরিবর্তন সফল হয়েছে"
-
-msgid "_Group:"
-msgstr "গ্রুপ: (_G)"
-
-msgid "Get Dir Info"
-msgstr "নির্দেশিকা তথ্য গ্রহণ করুন"
-
-msgid "Set Dir Info"
-msgstr "নির্দেশিকা তথ্য নির্ধারণ করুন"
-
-# tithi
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "লেখার জন্য %s খুলতে পারেনি!"
-
-# tithi
-msgid "File transfer failed; other side probably canceled."
-msgstr "ফাইল স্থানান্তর ব্যর্থ হয়েছে; অন্য দিক সম্ভবত বাতিল হয়েছে।"
-
-# tithi
-msgid "Could not connect for transfer."
-msgstr "স্থানান্তরের জন্য সংযোগ করতে পারেনি।"
-
-# tithi
-msgid "Could not write file header. The file will not be transferred."
-msgstr "ফাইল শিরোনাম লিখতে পারেনি। ফাইল স্থানান্তর করা হবে না।"
-
-msgid "Save As..."
-msgstr "এভাবে সংরক্ষণ করুন..."
-
-# tithi
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] " %1s %2s-কে %3d ফাইলটি গ্রহণ করতে অনুরোধ করে: %4s (%.2f %5s)%6s%7s"
-msgstr[1] "%1s %2s-কে %3d ফাইলসমূহ গ্রহণ করতে অনুরোধ করে: %4s (%.2f %5s)%6s%7s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s আপনাকে একটি ফাইল পাঠাতে অনুরোধ করেছেন"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "TOC প্রটোকল প্লাগইন"
-
# tithi
#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr "%s আপনাকে ওয়েবক্যাম আমন্ত্রন পাঠিয়েছেন, যা এখনও সমর্থিত নয়।"
+msgid "Your SMS was not delivered"
+msgstr ""
+
# tithi
msgid "Your Yahoo! message did not get sent."
msgstr "আপনার ইয়াহু! বার্তাটি পৌঁছায়নি।"
@@ -10912,9 +10914,6 @@ msgstr "বিরক্ত করবেন না"
msgid "Extended away"
msgstr "অনেক বর্ধিত"
-msgid "Mobile"
-msgstr "মোবাইল"
-
# tithi
msgid "Listening to music"
msgstr "গান শুনছে"
@@ -10957,19 +10956,6 @@ msgstr "+++ %s অলস হয়নি"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "%s পড়ায় ত্রুটি"
-
-# tithi
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"আপনার %s পড়ার সময় একটি ত্রুটির বাধা দেয়েছিল। তাদেরকে লোড করা হয়নি, এবং পুরনো "
-"ফাইলটি %s~ এ নামান্তর করা হয়েছে।"
-
msgid "Calculating..."
msgstr "গননা করা হচ্ছে..."
@@ -11047,6 +11033,14 @@ msgid "Unable to connect to %s: %s"
msgstr "%1s এর সাথে সংযোগে ব্যর্থ: %2s"
# tithi
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+"সার্ভারের লগইন করার জন্য TSL/SSL আবশ্যক, কোনো TLS/SSL সমর্থন খুঁজে পাওয়া যায়নি।"
+
+# tithi
#, c-format
msgid " - %s"
msgstr " - %s"
@@ -11082,6 +11076,19 @@ msgstr "সংযোগে প্রত্যাখান করা হয়েছ
msgid "Address already in use."
msgstr "ঠিকানাটি ইতোমধ্যে ব্যবহৃত হচ্ছে।"
+#, c-format
+msgid "Error Reading %s"
+msgstr "%s পড়ায় ত্রুটি"
+
+# tithi
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"আপনার %s পড়ার সময় একটি ত্রুটির বাধা দেয়েছিল। তাদেরকে লোড করা হয়নি, এবং পুরনো "
+"ফাইলটি %s~ এ নামান্তর করা হয়েছে।"
+
msgid "Internet Messenger"
msgstr "ইন্টারনেট বার্তাবাহক"
@@ -11126,10 +11133,8 @@ msgstr "নতুন মেইলের প্রজ্ঞাপন (_m)"
msgid "Use this buddy _icon for this account:"
msgstr "এই একাউন্টের জন্য এই বন্ধু আইকন ব্যবহার করুন (_i):"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s পছন্দসমূহ"
+msgid "_Advanced"
+msgstr "অগ্রগামী (_A)"
msgid "Use GNOME Proxy Settings"
msgstr "GNOME প্রক্সি বিন্যাসনসমূহ ব্যবহার করুন"
@@ -11164,9 +11169,6 @@ msgstr "আপনি যদি খুব ভালভাবে দেখেন"
msgid "you can see the butterflies mating"
msgstr "আপনি প্রজাপতিদের সঙ্গী দেখতে পাবেন"
-msgid "Proxy Options"
-msgstr "প্রক্সির পছন্দসমূহ"
-
msgid "Proxy _type:"
msgstr "প্রক্সির ধরন (_t):"
@@ -11196,8 +11198,9 @@ msgstr "মৌলিক (_B)"
msgid "Create _this new account on the server"
msgstr "সার্ভারে এই নতুন একাউন্টটি তৈরী করুন (_t)"
-msgid "_Advanced"
-msgstr "অগ্রগামী (_A)"
+#, fuzzy
+msgid "_Proxy"
+msgstr "প্রক্সি"
msgid "Enabled"
msgstr "সক্রিয়"
@@ -11279,6 +11282,17 @@ msgstr "তথ্য সংগ্রহ করুন (_I)"
msgid "I_M"
msgstr "আইএম (_M)"
+#, fuzzy
+msgid "_Audio Call"
+msgstr "আড্ডা যোগ করুন (_A)"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "ভিডিও আড্ডা"
+
msgid "_Send File..."
msgstr "ফাইল পাঠান... (_S)"
@@ -11414,6 +11428,10 @@ msgstr "/টুলসমূহ/বন্ধু পাউন্সসমূহ (_
msgid "/Tools/_Certificates"
msgstr "/টুলসমূহ/প্রত্যয়নপত্রসমূহ (_C)"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/টুলসমূহ/স্মাইলী (_y)"
+
msgid "/Tools/Plu_gins"
msgstr "/টুলসমূহ/প্লাগ-ইনসমূহ (_g)"
@@ -11423,9 +11441,6 @@ msgstr "/টুলসমূহ/প্রাধিকারসমূহ (_e)"
msgid "/Tools/Pr_ivacy"
msgstr "/টুলসমূহ/গোপনীয়তা (_i)"
-msgid "/Tools/Smile_y"
-msgstr "/টুলসমূহ/স্মাইলী (_y)"
-
msgid "/Tools/_File Transfers"
msgstr "/টুলসমূহ/ফাইল স্থানান্তর করে (_F)"
@@ -11546,8 +11561,8 @@ msgstr "হস্তচালিতভাবে"
msgid "By status"
msgstr "অবস্থা অনুসারে"
-msgid "By log size"
-msgstr "লগের আকার অনুসারে"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -11563,6 +11578,9 @@ msgstr "পুনরায় সংযোগ দিন"
msgid "Re-enable"
msgstr "পুনরায় সক্রিয় করুন"
+msgid "SSL FAQs"
+msgstr ""
+
# tithi
msgid "Welcome back!"
msgstr "পুনরায় স্বাগতম!"
@@ -11652,6 +11670,9 @@ msgstr ""
msgid "A_lias:"
msgstr "উপনাম (_l):"
+msgid "_Group:"
+msgstr "গ্রুপ: (_G)"
+
# tithi
msgid "Auto_join when account becomes online."
msgstr "একাউন্ট অনলাইনে থাকলে স্বয়ংক্রিয় ভাবে যোগদান করুন।"
@@ -11704,14 +11725,6 @@ msgstr "আপনি বর্তমানে এমন কোনো একা
msgid "Invite Buddy Into Chat Room"
msgstr "বন্ধুকে আড্ডার রুমে আমন্ত্রণ জানান"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"একটি ঐচ্ছিক আমন্ত্রণ বার্তা সহ, অনুগ্রহ করে আপনি যে ব্যবহারকারীকে আমন্ত্রণ জানাতে চান "
-"তার নামটি প্রবেশ করান।"
-
msgid "_Buddy:"
msgstr "বন্ধু (_B):"
@@ -11788,6 +11801,22 @@ msgstr "/কথোপকথন/এভাবে সংরক্ষণ করু
msgid "/Conversation/Clea_r Scrollback"
msgstr "/কথোপকথন/স্ক্রলবেক মুছুন (_r)"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/কথোপকথন/আরও (_o)"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/কথোপকথন/আরও (_o)"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/কথোপকথন/আরও (_o)"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/কথোপকথন/কার্যবিবরণী প্রদর্শন করুন (_L)"
+
msgid "/Conversation/Se_nd File..."
msgstr "/কথোপকথন/ফাইল প্রেরণ করুন... (_n)"
@@ -11860,6 +11889,18 @@ msgstr "/কথোপকথন"
msgid "/Conversation/View Log"
msgstr "/কথোপকথন/কার্যবিবরণী প্রদর্শন করুন"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/কথোপকথন/আরও"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/কথোপকথন/কার্যবিবরণী প্রদর্শন করুন"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/কথোপকথন/আরও"
+
msgid "/Conversation/Send File..."
msgstr "/কথোপকথন/ফাইল প্রেরণ করুন..."
@@ -12046,6 +12087,9 @@ msgstr "শিল্পী"
msgid "Ka-Hing Cheung"
msgstr "কা-হিং চিউং"
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "সমর্থন করুন"
@@ -12195,6 +12239,10 @@ msgstr "জর্জীয়"
msgid "Ubuntu Georgian Translators"
msgstr "উবান্টুর জর্জিয়ান অনুবাদকবৃন্দ"
+#, fuzzy
+msgid "Khmer"
+msgstr "অন্যান্য"
+
# fix me tithi
msgid "Kannada"
msgstr "কান্নাডা"
@@ -12679,15 +12727,6 @@ msgstr "টাইপকরণ প্রজ্ঞাপনের জন্য ব
msgid "Enable typing notification"
msgstr "টাইপকরণ প্রজ্ঞাপন সক্রিয় করুন"
-msgid "_Copy Email Address"
-msgstr "ই-মেইল ঠিকানা অনুলিপি করুন (_C)"
-
-msgid "_Open Link in Browser"
-msgstr "ব্রাউজারে লিঙ্ক খুলুন (_O)"
-
-msgid "_Copy Link Location"
-msgstr "লিঙ্ক অবস্থান অনুলিপি করুন (_C)"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12948,13 +12987,14 @@ msgid "%s %s. Try `%s -h' for more information.\n"
msgstr "%1s %2s। আরও তথ্যের জন্য `%3s -h' এ চেষ্টা করুন।\n"
# fix me
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12980,13 +13020,14 @@ msgstr ""
" -v, --version বর্তমান সংস্করণ প্রদর্শন করুন এবং ত্যাগ করুন\n"
# fix me
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -13044,11 +13085,23 @@ msgstr "পিজিন"
msgid "Exiting because another libpurple client is already running.\n"
msgstr ""
-msgid "Open All Messages"
-msgstr "সকল বার্তা খুলুন"
+msgid "/_Media"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">আপনার মেইল আছে!</span>"
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "গননা করা হচ্ছে..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -13079,6 +13132,27 @@ msgstr ""
"'হস্তচালিতভাবে' ব্রাউজার নির্দেশ পছন্দ করা হয়েছে, কিন্তু কোনো নির্দেশ নির্ধারণ করা "
"হয়নি।"
+msgid "Open All Messages"
+msgstr "সকল বার্তা খুলুন"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">আপনার মেইল আছে!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "নতুন বন্ধু পাউন্স করুন"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">আপনার মেইল আছে!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "অজানা বার্তা"
+
# tithi
msgid "The following plugins will be unloaded."
msgstr "নিম্নোক্ত প্লাগইনগুলো লোড মুক্ত করা হবে।"
@@ -13130,6 +13204,10 @@ msgstr "<b>প্লাগইনের বর্ণনা</b>"
msgid "Select a file"
msgstr "একটি ফাইল নির্বাচন করুন"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "বন্ধু পাউন্স সম্পাদন করুন"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "কাকে পাউন্স করেন"
@@ -13202,6 +13280,50 @@ msgstr "পুনরাবৃত্ত করছে (_R)"
msgid "Pounce Target"
msgstr "পাউন্সের লক্ষ্য"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "টাইপ শুরু করছে"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "টাইপ করার সময় বিরতি দিন"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "সাইন অন"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%1s অলস অবস্থা থেকে ফিরে এসেছে (%2s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "দূর হতে ফিরে আসে"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "টাইপ করা বন্ধ করেছে"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "সাইন অফ"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "অলস হয়ে যায়"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "যখন অনুপস্থিত"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "একটি বার্তা পাঠান"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "অজানা পাউন্স ইভেন্ট। অনুগ্রহ করে এটি রিপোর্ট করুন!"
+
msgid "Smiley theme failed to unpack."
msgstr "স্মাইলী থীম প্যাকহীন করতে ব্যর্থ হয়েছে"
@@ -13226,6 +13348,12 @@ msgstr "কীবোর্ড শর্টকাট"
msgid "Cl_ose conversations with the Escape key"
msgstr "Escape কী দ্বারা কথোপকথনসমূহ বন্ধ করুন (_o)"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Buddy List"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "সিস্টেম ট্রে এর আইকন"
@@ -13342,9 +13470,6 @@ msgstr "প্রক্সি বিন্যাসন প্রোগ্রা
msgid "Cannot start browser configuration program."
msgstr "ব্রাউজারের বিন্যাসন প্রোগ্রাম শুরু করতে পারে না।"
-msgid "ST_UN server:"
-msgstr "STUN সার্ভার (_U):"
-
# tithi
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">উদাহরণ: স্ট্যানসার্ভার.অর্গ</span>"
@@ -13371,6 +13496,10 @@ msgstr "শুরুর পোর্ট (_S):"
msgid "_End port:"
msgstr "শেষ পোর্ট (_E):"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr "প্রক্সি সার্ভার &amp; ব্রাউজার"
@@ -13566,12 +13695,12 @@ msgstr "যখন উভয়ই অনুপস্থিত এবং অলস"
msgid "Auto-away"
msgstr "স্বয়ংক্রিয়ভাবে অনুপস্থিতি"
-msgid "Change status when _idle"
-msgstr "অলস থাকলে অবস্থা পরিবর্তন করুন (_i)"
-
msgid "_Minutes before becoming idle:"
msgstr "অলস হওয়ার পূর্বের মিনিট (_M):"
+msgid "Change status when _idle"
+msgstr "অলস থাকলে অবস্থা পরিবর্তন করুন (_i)"
+
msgid "Change _status to:"
msgstr "অবস্থা পরিবর্তন করুন (_s):"
@@ -13725,6 +13854,12 @@ msgstr "সংরক্ষণ এবং ব্যবহার করুন (_v)"
msgid "Status for %s"
msgstr "%s-এর জন্য অবস্থা"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
msgid "Custom Smiley"
msgstr "পছন্দসই স্মাইলী"
@@ -13736,17 +13871,17 @@ msgstr "আরও তথ্য প্রয়োজন"
msgid "Please provide a shortcut to associate with the smiley."
msgstr "অনুগ্রহ করে স্মাইলীর সাথে সম্পর্কিত করতে একটি শর্টকাট প্রদান করুন।"
-msgid "Duplicate Shortcut"
-msgstr "অনুরুপ শর্টকাট"
-
# tithi
+#, fuzzy, c-format
msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
+"A custom smiley for '%s' already exists. Please use a different shortcut."
msgstr ""
"নির্বাচিত শর্টকাটটির জন্য পছন্দসই স্মাইলী ইতোমধ্যে বিদ্যমান। অনুগ্রহ করে একটি ভিন্ন "
"শর্টকাট উল্লেখ করুন।"
+msgid "Duplicate Shortcut"
+msgstr "অনুরুপ শর্টকাট"
+
msgid "Please select an image for the smiley."
msgstr "অনুগ্রহ করে স্মাইলীটির জন্য একটি চিত্র নির্বাচন করুন।"
@@ -13756,17 +13891,22 @@ msgstr "স্মাইলী সম্পাদনা করুন"
msgid "Add Smiley"
msgstr "স্মাইলী যোগ করুন"
-msgid "Smiley _Image"
-msgstr "স্মাইলীর চিত্র (_I)"
+#, fuzzy
+msgid "_Image:"
+msgstr "চিত্র (_I)"
-# tithi
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr "স্মাইলীর শর্টকাট (_S)"
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "শর্টকাট"
msgid "Smiley"
msgstr "স্মাইলী"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "শর্টকাট"
+
# tithi
msgid "Custom Smiley Manager"
msgstr "পছন্দসই স্মাইলী ব্যবস্থাপক"
@@ -13897,6 +14037,16 @@ msgid ""
msgstr ""
"'%s' চিত্রটি লোড করতে ব্যর্থ হয়েছে। কারণ জানা নেই, সম্ভবত একটি নষ্ট চিত্রের ফাইল"
+#, fuzzy
+msgid "_Open Link"
+msgstr "লিঙ্ক খুলুন (_O):"
+
+msgid "_Copy Link Location"
+msgstr "লিঙ্ক অবস্থান অনুলিপি করুন (_C)"
+
+msgid "_Copy Email Address"
+msgstr "ই-মেইল ঠিকানা অনুলিপি করুন (_C)"
+
msgid "Save File"
msgstr "ফাইল সংরক্ষণ করুন"
@@ -14954,6 +15104,202 @@ msgstr "নতুন XMPP পংক্তিগুলো পাঠান এব
msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr "এই প্লাগিনটি XMPP সার্ভার বা ক্লায়েন্ট ডিবাগ করার জন্য কার্যকর।"
+#~ msgid "Invite message"
+#~ msgstr "আমন্ত্রণ বার্তা"
+
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "একটি ঐচ্ছিক আমন্ত্রণ বার্তার সাথে,\n"
+#~ "অনুগ্রহ করে আপনি যে ব্যবহারকারীকে আমন্ত্রণ করতে চান তার নামটি প্রবেশ করান।"
+
+#~ msgid "Looking up %s"
+#~ msgstr "%s খোঁজা হচ্ছে"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "%s-এর সাথে সংযোগ দিতে ব্যর্থ হয়েছে"
+
+#~ msgid "Signon: %s"
+#~ msgstr "সাইনঅন: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "%s ফাইলে লিখতে ব্যর্থ হয়েছে।"
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "%s ফাইলে পড়তে ব্যর্থ হয়েছে।"
+
+# tithi
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "বার্তাটি খুব দীর্ঘ, শেষ %s বাইট বাদ দেয়া হয়েছে।"
+
+# tithi
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s বর্তমানে লগইন নেই।"
+
+# tithi
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "%s এর সতর্কতা অনুমোদিত নয়।"
+
+# tithi
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr "একটি বার্তা বাদ দেয়া হয়েছে, আপনি সার্ভারের গতি সীমা অতিক্রম করছেন।"
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "%s-এ আড্ডা সহজলভ্য নয়।"
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "আপনি %s এ খুব দ্রুত বার্তা পাঠাচ্ছেন।"
+
+# tithi
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "আপনি %s থেকে একটি তাৎক্ষণিক বার্তা পাননি কারণ এটি খুব বড় ছিল।"
+
+# tithi
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr ""
+#~ "আপনি %s থেকে একটি তাৎক্ষণিক বার্তা পাননি কারণ এটি খুব দ্রুত পাঠানো হয়েছিল।"
+
+#~ msgid "Failure."
+#~ msgstr "ব্যর্থতা।"
+
+# tithi
+#~ msgid "Too many matches."
+#~ msgstr "অনেক বেশি মিল।"
+
+# tithi
+#~ msgid "Need more qualifiers."
+#~ msgstr "আরও নিয়ন্ত্রণকারী প্রয়োজন।"
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "নির্দেশিকা সেবা সাময়িকভাবে অপ্রাপ্য"
+
+# tithi
+#~ msgid "Email lookup restricted."
+#~ msgstr "ই-মেইল অনুসন্ধান নিষিদ্ধ।"
+
+# tithi
+#~ msgid "Keyword ignored."
+#~ msgstr "মূল-শব্দ অগ্রাহ্য করা হয়েছে।"
+
+#~ msgid "No keywords."
+#~ msgstr "কোনো মূল-শব্দ নেই।"
+
+#~ msgid "User has no directory information."
+#~ msgstr "ব্যবহারকারীর কোনো নির্দেশিকা তথ্য নেই।"
+
+#~ msgid "Country not supported."
+#~ msgstr "দেশটি সমর্থিত নয়।"
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "ব্যর্থতা অজানা: %s।"
+
+#~ msgid "Incorrect username or password."
+#~ msgstr "ভুল ব্যবহারকারীর-নাম বা গুপ্তসংকেত।"
+
+# tithi
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "সেবাটি সাময়িকভাবে অপ্রাপ্য।"
+
+# tithi
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "আপনার সতর্কতা স্তর লগইন করার জন্য বর্তমানে খুব উচ্চ।"
+
+# tithi
+#~ 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 ""
+#~ "আপনি প্রায়সই সংযুক্ত এবং বিচ্ছিন্ন হচ্ছেন। দশ মিনিট অপেক্ষা করুন এবং পুনরায় চেষ্টা "
+#~ "করুন। আপনি যদি চেষ্টা অব্যাহত রাখেন, আপনাকে দীর্ঘ সময় অপেক্ষা করতে হতে পারে।"
+
+# tithi
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "একটি অজানা সাইনঅন ত্রুটি সংঘটিত হয়েছে: %s।"
+
+# tithi
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "একটি অজানা ত্রুটি, %d, সংঘটিত হয়েছে। তথ্য: %s"
+
+# tithi
+#~ msgid "Invalid Groupname"
+#~ msgstr "অবৈধ গ্রুপনাম"
+
+#~ msgid "Connection Closed"
+#~ msgstr "সংযোগ বন্ধ করা হয়েছে "
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "উত্তরের অপেক্ষায়..."
+
+# tithi
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "TOC পুনরায় সচল হয়েছে। আপনি এখন পুনরায় বার্তা পাঠাতে পারেন।"
+
+#~ msgid "Password Change Successful"
+#~ msgstr "গুপ্তসংকেত পরিবর্তন সফল হয়েছে"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "নির্দেশিকা তথ্য গ্রহণ করুন"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "নির্দেশিকা তথ্য নির্ধারণ করুন"
+
+# tithi
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "লেখার জন্য %s খুলতে পারেনি!"
+
+# tithi
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr "ফাইল স্থানান্তর ব্যর্থ হয়েছে; অন্য দিক সম্ভবত বাতিল হয়েছে।"
+
+# tithi
+#~ msgid "Could not connect for transfer."
+#~ msgstr "স্থানান্তরের জন্য সংযোগ করতে পারেনি।"
+
+# tithi
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "ফাইল শিরোনাম লিখতে পারেনি। ফাইল স্থানান্তর করা হবে না।"
+
+#~ msgid "Save As..."
+#~ msgstr "এভাবে সংরক্ষণ করুন..."
+
+# tithi
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] ""
+#~ " %1s %2s-কে %3d ফাইলটি গ্রহণ করতে অনুরোধ করে: %4s (%.2f %5s)%6s%7s"
+#~ msgstr[1] "%1s %2s-কে %3d ফাইলসমূহ গ্রহণ করতে অনুরোধ করে: %4s (%.2f %5s)%6s%7s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s আপনাকে একটি ফাইল পাঠাতে অনুরোধ করেছেন"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "TOC প্রটোকল প্লাগইন"
+
+#~ msgid "%s Options"
+#~ msgstr "%s পছন্দসমূহ"
+
+#~ msgid "Proxy Options"
+#~ msgstr "প্রক্সির পছন্দসমূহ"
+
+#~ msgid "By log size"
+#~ msgstr "লগের আকার অনুসারে"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "ব্রাউজারে লিঙ্ক খুলুন (_O)"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "STUN সার্ভার (_U):"
+
+#~ msgid "Smiley _Image"
+#~ msgstr "স্মাইলীর চিত্র (_I)"
+
+# tithi
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "স্মাইলীর শর্টকাট (_S)"
+
#~ msgid "Unable to retrieve MSN Address Book"
#~ msgstr "MSN ঠিকানা বই পুনরূদ্ধারে ব্যর্থ হয়েছে"
diff --git a/po/bs.po b/po/bs.po
index 891cec8ac8..2f531ca54b 100644
--- a/po/bs.po
+++ b/po/bs.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin 2.0.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
+"POT-Creation-Date: 2009-04-30 10:37-0400\n"
"PO-Revision-Date: 2005-10-27 16:55-0400\n"
"Last-Translator: Lejla Hadialic <lejlah@gmail.com>\n"
"Language-Team: bs <LL@li.org>\n"
@@ -32,7 +32,7 @@ msgid ""
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -626,21 +626,6 @@ msgid "Send To"
msgstr "Pošalji"
#, fuzzy
-msgid "Invite message"
-msgstr "Ubaci sliku"
-
-msgid "Invite"
-msgstr "Pozovi"
-
-#, fuzzy
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Unesite ime korisnika, kojeg želite pozvati, zajedno sa opcionalnom pozivnom "
-"porukom."
-
-#, fuzzy
msgid "Conversation"
msgstr "Konverzacije"
@@ -902,6 +887,42 @@ msgid "System Log"
msgstr "Sistemski log"
#, fuzzy
+msgid "Calling ... "
+msgstr "Racunanje..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "Prihvati"
+
+#, fuzzy
+msgid "Reject"
+msgstr "Ponovno postavljanje"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "Bili ste na kanalu%s%s"
+
+msgid "call: Make an audio call."
+msgstr ""
+
+#, fuzzy
msgid "Emails"
msgstr "Email"
@@ -939,6 +960,9 @@ msgstr "Spajanje"
msgid "IM"
msgstr "IM"
+msgid "Invite"
+msgstr "Pozovi"
+
#, fuzzy
msgid "(none)"
msgstr "(bez imena)"
@@ -1162,7 +1186,6 @@ msgstr "%s je otišao/la. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s hoce da vam pošalje %s (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "Nepoznat alarm-dogadaj. Molimo Vas prijavite ovo!"
@@ -1218,7 +1241,6 @@ msgstr "_Minute prije postavljanja odsutnosti:"
msgid "Change status to"
msgstr "Promjena adrese na:"
-#. Conversations
msgid "Conversations"
msgstr "Konverzacije"
@@ -1566,7 +1588,6 @@ msgstr ""
"Kada je otvorena nova konverzacija, ovaj plugin ubacuje zadnju konverzaciju "
"u trenutnu konverzaciju."
-#, c-format
msgid "Online"
msgstr "Online"
@@ -1615,6 +1636,28 @@ msgstr ""
msgid "Lastlog plugin."
msgstr ""
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
#, fuzzy
msgid "accounts"
msgstr "Accounti"
@@ -1718,14 +1761,6 @@ msgstr "Prihvati chat pozivnicu?"
msgid "SSL Certificate Verification"
msgstr ""
-#. Number of actions
-msgid "Accept"
-msgstr "Prihvati"
-
-#, fuzzy
-msgid "Reject"
-msgstr "Ponovno postavljanje"
-
msgid "_View Certificate..."
msgstr ""
@@ -1863,6 +1898,18 @@ msgstr "%s nije više u sobi."
msgid "%s left the room (%s)."
msgstr "%s nije u više u sobi (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Iniciraj konferenciju"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Unesite ime korisnika, kojeg želite pozvati, zajedno sa opcionalnom pozivnom "
+"porukom."
+
#, fuzzy, c-format
msgid "Failed to get connection: %s"
msgstr "Neuspio pokušaj postavljanja cmodova za %s"
@@ -2001,7 +2048,6 @@ msgstr "Da li prihvatate transfer datoteke od %s?"
msgid "Transfer of file %s complete"
msgstr "Transfer datoteke %s kompletiran"
-#, c-format
msgid "File transfer complete"
msgstr "Transfer datoteke kompletiran"
@@ -2009,7 +2055,6 @@ msgstr "Transfer datoteke kompletiran"
msgid "You canceled the transfer of %s"
msgstr "Odustali ste od transfera %s"
-#, c-format
msgid "File transfer cancelled"
msgstr "Transfer datoteke je otkazan"
@@ -2198,7 +2243,6 @@ msgstr "(%s) %s<AUTO-ODGOVOR>: %s\n"
msgid "You are using %s, but this plugin requires %s."
msgstr ""
-#, c-format
msgid "This plugin has not defined an ID."
msgstr ""
@@ -2694,6 +2738,32 @@ msgstr ""
msgid "Do not ask. Always save in pounce."
msgstr ""
+#, fuzzy
+msgid "One Time Password"
+msgstr "Promjeni lozinku"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2899,7 +2969,6 @@ msgid ""
"Unable to establish connection with the local mDNS server. Is it running?"
msgstr ""
-#. Creating the options for the protocol
#, fuzzy
msgid "First name"
msgstr "Ime:"
@@ -2937,6 +3006,11 @@ msgstr "Yahoo protokol plugin"
msgid "Purple Person"
msgstr "Nova osoba"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "Mjesto"
+
msgid "Bonjour"
msgstr ""
@@ -3122,13 +3196,13 @@ msgstr "Odstrani chat iz liste prijatelja"
msgid "Add to chat..."
msgstr "Dodaj C_hat"
+#. Global
msgid "Available"
msgstr "Dostupan"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "Odsutan"
@@ -3494,6 +3568,17 @@ msgid ""
msgstr ""
"Vaše izabrano ime je server odbacio. Vjerovatno sadrži nedozvoljena slova."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "Ta datoteka vec postoji"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Nadimak"
+
msgid "Cannot change nick"
msgstr "Nemoguce promjeniti nadimak"
@@ -3775,6 +3860,37 @@ msgstr "Pogrešan upit od servera"
msgid "SASL error"
msgstr "Greška prilikom citanja"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "Nema razloga"
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Nepodržana verzija"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr "Nije moguce ostvariti SSL konekciju na server."
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "Nije moguce kreirati novu konekciju."
+
+msgid "Unable to create socket"
+msgstr "Nije moguce kreirati socket"
+
+msgid "Write error"
+msgstr "Greška pri pisanju"
+
msgid "Full Name"
msgstr "Puno ime"
@@ -3842,6 +3958,10 @@ msgstr "Grad"
msgid "Operating System"
msgstr "Sakrij operativni sistem"
+#, fuzzy
+msgid "Local Time"
+msgstr "Lokalna datoteka:"
+
msgid "Last Activity"
msgstr ""
@@ -4079,7 +4199,6 @@ msgstr "Pricljivo"
msgid "Extended Away"
msgstr "Produžena odsutnost"
-#, c-format
msgid "Do Not Disturb"
msgstr "Ne smetaj"
@@ -4209,9 +4328,6 @@ msgstr "Traži sobe"
msgid "You require encryption, but it is not available on this server."
msgstr ""
-msgid "Write error"
-msgstr "Greška pri pisanju"
-
#, fuzzy
msgid "Ping timeout"
msgstr "Obicni tekst"
@@ -4221,13 +4337,10 @@ msgstr "Greška pri citanju"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-msgid "Unable to create socket"
-msgstr "Nije moguce kreirati socket"
-
#, fuzzy
msgid "Invalid XMPP ID"
msgstr "Pogrešan ID"
@@ -4235,6 +4348,10 @@ msgstr "Pogrešan ID"
msgid "Invalid XMPP ID. Domain must be set."
msgstr ""
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Neuspjelo spajanje na server."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "Registracija %s@%s uspješna"
@@ -4328,9 +4445,18 @@ msgstr "Autenticiranje"
msgid "Re-initializing Stream"
msgstr "Ponovno inicijalizirajuci tok"
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr "Neautorizovani"
+msgid "Mood"
+msgstr "Raspoloženje"
+
+msgid "Now Listening"
+msgstr ""
+
msgid "Both"
msgstr "Oboje"
@@ -4352,12 +4478,6 @@ msgstr "Niko"
msgid "Subscription"
msgstr "Pretplata"
-msgid "Mood"
-msgstr "Raspoloženje"
-
-msgid "Now Listening"
-msgstr ""
-
#, fuzzy
msgid "Mood Text"
msgstr "Tekst"
@@ -4603,18 +4723,24 @@ msgstr "Nije moguce izbaciti korisnika %s"
msgid "Unable to ping user %s"
msgstr "Nije moguce banovati korisnika %s"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
+msgstr "Nije moguce odsvirati zvuk, jer izabrana datoteka (%s) ne postoji."
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
+msgstr "Nije moguce odsvirati zvuk, jer izabrana datoteka (%s) ne postoji."
#, fuzzy, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "Nije moguce odsvirati zvuk, jer izabrana datoteka (%s) ne postoji."
+#, c-format
+msgid "Buzzing %s..."
+msgstr ""
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
#, fuzzy
@@ -4625,9 +4751,37 @@ msgstr "ZZZZujanje! !"
msgid "%s has buzzed you!"
msgstr "Korisnik Vas je blokirao"
-#, c-format
-msgid "Buzzing %s..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "Nije moguce poslati poruku za %s:"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
msgstr ""
+"Nije moguce poslati datoteku korisniku %s, korisnik ne podržavanja slanje"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr ""
+"Nije moguce poslati datoteku korisniku %s, korisnik ne podržavanja slanje"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "Registracija neuspjela"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "Unesite nadimak osobe, cije informacije želite da pogledate."
+
+#, fuzzy
+msgid "Select a Resource"
+msgstr "Odaberite datoteku"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "Iniciraj _Chat"
msgid "config: Configure a chat room."
msgstr "config: Konfiguriši sobu za chat."
@@ -4791,6 +4945,21 @@ msgstr "Greška pri ulaženju na chat %s"
msgid "Error in chat %s"
msgstr "Greška na chatu %s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "Pojavila se greška tokom otvaranja datoteke."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "Transfer datoteke je otkazan"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Neuspio pokušaj spašavanja slike: %s\n"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4818,10 +4987,6 @@ msgid "Please select the resource of %s to which you would like to send a file"
msgstr "Unesite nadimak osobe, cije informacije želite da pogledate."
#, fuzzy
-msgid "Select a Resource"
-msgstr "Odaberite datoteku"
-
-#, fuzzy
msgid "Edit User Mood"
msgstr "Korisnicki modusi"
@@ -4860,9 +5025,20 @@ msgstr "Accounti"
msgid "Select an action"
msgstr "Odaberite datoteku"
+#. 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
+#, fuzzy, c-format
+msgid "Unable to add \"%s\"."
+msgstr "Nije moguce citanje datoteke %s."
+
#, fuzzy
-msgid "Unable to retrieve MSN Address Book"
-msgstr "Nije moguce povratiti listu prijatelja"
+msgid "Buddy Add error"
+msgstr "Greška u listi prijatelja"
+
+#, fuzzy
+msgid "The username specified does not exist."
+msgstr "Ukucani SecurID je pogrešan."
#, c-format
msgid "Buddy list synchronization issue in %s (%s)"
@@ -5092,7 +5268,7 @@ msgstr "Djecji pasoš bez roditeljskog odobrenja"
msgid "Passport account not yet verified"
msgstr "Pasoš account nije još provjeren"
-#, fuzzy, c-format
+#, fuzzy
msgid "Passport account suspended"
msgstr "Pasoš account nije još provjeren"
@@ -5186,6 +5362,13 @@ msgstr "Pošalji mobilnu poruku."
msgid "Page"
msgstr "Strana"
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "Upozori"
+
msgid "Has you"
msgstr "Da li Vi"
@@ -5229,6 +5412,14 @@ msgid "Album"
msgstr ""
#, fuzzy
+msgid "Game Title"
+msgstr "Titula"
+
+#, fuzzy
+msgid "Office Title"
+msgstr "Titula"
+
+#, fuzzy
msgid "Set Friendly Name..."
msgstr "Postavi prijateljsko ime"
@@ -5444,11 +5635,12 @@ msgid ""
"Could not find any information in the user's profile. The user most likely "
"does not exist."
msgstr ""
-"Pidgin nije mogao pronaci ni jednu informaciju u korisnickom profilu. Korisnik "
-"vjerovatno ne postoji."
+"Pidgin nije mogao pronaci ni jednu informaciju u korisnickom profilu. "
+"Korisnik vjerovatno ne postoji."
-msgid "Profile URL"
-msgstr "Profil URL"
+#, fuzzy
+msgid "View web profile"
+msgstr "Nije dozvoljeno kada je offline"
#. *< type
#. *< ui_requirement
@@ -5707,13 +5899,6 @@ msgstr "Dodaj u adresar"
msgid "Do you want to delete this buddy from your address book as well?"
msgstr "Da li želite da dodate ovog prijatelja na Vašu listu prijatelja?"
-#. 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
-#, fuzzy, c-format
-msgid "Unable to add \"%s\"."
-msgstr "Nije moguce citanje datoteke %s."
-
#, fuzzy
msgid "The username specified is invalid."
msgstr "Ukucani SecurID je pogrešan."
@@ -5721,6 +5906,9 @@ msgstr "Ukucani SecurID je pogrešan."
msgid "This Hotmail account may not be active."
msgstr ""
+msgid "Profile URL"
+msgstr "Profil URL"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5735,16 +5923,13 @@ msgstr ""
msgid "MSN Protocol Plugin"
msgstr "AIM/ICQ protokol plugin"
-msgid "Missing Cipher"
-msgstr ""
-
-msgid "The RC4 cipher could not be found"
+#, c-format
+msgid "No such user: %s"
msgstr ""
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
-msgstr ""
+#, fuzzy
+msgid "User lookup"
+msgstr "Korisnicke sobe"
#, fuzzy
msgid "Reading challenge"
@@ -5757,11 +5942,19 @@ msgstr "Pogrešan upit od servera"
msgid "Logging in"
msgstr "Prijavljivanje"
-#, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] ""
-msgstr[1] ""
+#, fuzzy
+msgid "MySpaceIM - No Username Set"
+msgstr "Nije postavljen nadimak."
+
+msgid "You appear to have no MySpace username."
+msgstr ""
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr ""
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr "Greška pri komunikaciji sa serverom"
#. Can't write _()'d strings in array initializers. Workaround.
#, fuzzy
@@ -5784,14 +5977,22 @@ msgid "MySpace"
msgstr ""
#, fuzzy
-msgid "MySpaceIM - No Username Set"
-msgstr "Nije postavljen nadimak."
+msgid "IM Friends"
+msgstr "_IM prozori"
-msgid "You appear to have no MySpace username."
-msgstr ""
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+msgstr[1] ""
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
-msgstr ""
+#, fuzzy
+msgid "Add contacts from server"
+msgstr "Pogrešan odgovor od servera."
#. The session is now set up, ready to be connected. This emits the
#. * signedOn signal, so clients can now do anything with msimprpl, and
@@ -5816,6 +6017,22 @@ msgid "MySpaceIM Error"
msgstr ""
#, fuzzy
+msgid "Invalid input condition"
+msgstr "Finaliziranje konekcije"
+
+#, fuzzy
+msgid "Read buffer full (2)"
+msgstr "Popunjen red cekanja"
+
+#, fuzzy
+msgid "Unparseable message"
+msgstr "Nije moguce parsati poruku"
+
+#, fuzzy, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr "Spajanje na hosta neuspješno"
+
+#, fuzzy
msgid "Failed to add buddy"
msgstr "Neuspjeh prilikom pridruživanja prijatelju na chat-u"
@@ -5826,14 +6043,6 @@ msgstr ""
msgid "persist command failed"
msgstr "Switchboard neuspjeh"
-#, c-format
-msgid "No such user: %s"
-msgstr ""
-
-#, fuzzy
-msgid "User lookup"
-msgstr "Korisnicke sobe"
-
#, fuzzy
msgid "Failed to remove buddy"
msgstr "Neuspjeh prilikom pridruživanja prijatelju na chat-u"
@@ -5845,39 +6054,16 @@ msgstr ""
msgid "blocklist command failed"
msgstr "Switchboard neuspjeh"
-#, fuzzy
-msgid "Invalid input condition"
-msgstr "Finaliziranje konekcije"
-
-#, fuzzy
-msgid "Read buffer full (2)"
-msgstr "Popunjen red cekanja"
-
-#, fuzzy
-msgid "Unparseable message"
-msgstr "Nije moguce parsati poruku"
-
-#, fuzzy, c-format
-msgid "Couldn't connect to host: %s (%d)"
-msgstr "Spajanje na hosta neuspješno"
+msgid "Missing Cipher"
+msgstr ""
-#, fuzzy
-msgid "IM Friends"
-msgstr "_IM prozori"
+msgid "The RC4 cipher could not be found"
+msgstr ""
-#, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-msgstr[1] ""
-
-#, fuzzy
-msgid "Add contacts from server"
-msgstr "Pogrešan odgovor od servera."
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
msgid "Add friends from MySpace.com"
msgstr ""
@@ -5925,9 +6111,6 @@ msgstr "Veca velicina fonta"
msgid "User"
msgstr "Korisnici"
-msgid "Profile"
-msgstr "Profil"
-
#, fuzzy
msgid "Headline"
msgstr "Odbiti"
@@ -5943,17 +6126,6 @@ msgstr ""
msgid "Client Version"
msgstr "Zatvori konverzaciju"
-#. Protocol won't log in now without a username set.. Disconnect
-#, fuzzy
-msgid "No username set"
-msgstr "Nije postavljen nadimak."
-
-msgid "MySpaceIM - Please Set a Username"
-msgstr ""
-
-msgid "Please enter a username to check its availability:"
-msgstr ""
-
#, fuzzy
msgid "MySpaceIM - Username Available"
msgstr "Servis nedostupan"
@@ -5964,6 +6136,9 @@ msgstr ""
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr ""
+msgid "MySpaceIM - Please Set a Username"
+msgstr ""
+
#, fuzzy
msgid "This username is unavailable."
msgstr "Ova tema nema dostupnih smiley-ja."
@@ -5972,6 +6147,14 @@ msgstr "Ova tema nema dostupnih smiley-ja."
msgid "Please try another username:"
msgstr "Molim Vas unesite novo ime za izabranu grupu."
+#. Protocol won't log in now without a username set.. Disconnect
+#, fuzzy
+msgid "No username set"
+msgstr "Nije postavljen nadimak."
+
+msgid "Please enter a username to check its availability:"
+msgstr ""
+
#. TODO: icons for each zap
#. Lots of comments for translators:
#. Zap means "to strike suddenly and forcefully as if with a
@@ -6367,7 +6550,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr "Greška. SSL podrška nije instalirana."
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr "Ova konferencija je zatvorena. Poruke više ne mogu biti poslane."
@@ -6634,23 +6816,18 @@ msgstr "Kamera"
msgid "Screen Sharing"
msgstr "Korisnicko ime"
-#, c-format
msgid "Free For Chat"
msgstr "Slobodan/a za chat"
-#, c-format
msgid "Not Available"
msgstr "Nedostupan/a"
-#, c-format
msgid "Occupied"
msgstr "Zaposlen/a"
-#, c-format
msgid "Web Aware"
msgstr "Na webu"
-#, c-format
msgid "Invisible"
msgstr "Nevidljiv"
@@ -6696,7 +6873,7 @@ msgstr ""
"pogrešno. Imena moraju pocinjati sa slovima i sadržavati samo slova, brojeve "
"i razmake, ili sadržavati samo brojeve."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
#, fuzzy
msgid "Invalid username."
@@ -6713,7 +6890,7 @@ msgstr "Vaš account je trenutno suspendovan."
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "AOL Instant Messenger servis je trenutno nedostupan."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6748,10 +6925,8 @@ msgstr "Ukucajte šestocifreni broj sa digitalnog displeja."
msgid "_OK"
msgstr "OK"
-#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
+#, fuzzy, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
msgstr ""
"Moguce da ce Vaša veza biti prekinuta ubrzo. Možda cete htjeti da koristite "
"TOC, dok ovo ne bude popravljeno. Provjerite %s za noviju verziju."
@@ -6903,7 +7078,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] "Propustili ste %hu poruku od %s iz nepoznatog razloga."
msgstr[1] "Propustili ste %hu poruke od %s iz nepoznatog razloga."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "Nije moguce poslati poruku: %s"
@@ -6925,6 +7100,9 @@ msgstr "Prijavljen vec"
msgid "Member Since"
msgstr "Clan vec od"
+msgid "Profile"
+msgstr "Profil"
+
msgid "Your AIM connection may be lost."
msgstr "Vaša AIM konekcija može biti izgubljena."
@@ -7082,7 +7260,8 @@ msgstr[0] ""
"Maksimalna dužina profila od %d bajta je prekoracena. Pidgin je skratio za "
"Vas. "
msgstr[1] ""
-"Maksimalna dužina profila od %d bajta je prekoracena. Pidgin je skratio za Vas."
+"Maksimalna dužina profila od %d bajta je prekoracena. Pidgin je skratio za "
+"Vas."
msgid "Profile too long."
msgstr "Profil predugacak."
@@ -7095,11 +7274,11 @@ msgid_plural ""
"The maximum away message length of %d bytes has been exceeded. It has been "
"truncated for you."
msgstr[0] ""
-"Maksimalna dužina poruke o odsutnosti od %d bajta je prekoracena. Pidgin je za "
-"Vas skratio."
+"Maksimalna dužina poruke o odsutnosti od %d bajta je prekoracena. Pidgin je "
+"za Vas skratio."
msgstr[1] ""
-"Maksimalna dužina poruke o odsutnosti od %d bajta je prekoracena. Pidgin je za "
-"Vas skratio."
+"Maksimalna dužina poruke o odsutnosti od %d bajta je prekoracena. Pidgin je "
+"za Vas skratio."
msgid "Away message too long."
msgstr "Poruka o odsutnosti preduga."
@@ -7219,6 +7398,7 @@ msgstr "Spajanje"
msgid "Get AIM Info"
msgstr "Uzmi info"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "Uredi prijateljev komentar"
@@ -7334,7 +7514,7 @@ msgstr "Pitam %s da se veže na nas na %s:%hu za direktnu IM."
msgid "Attempting to connect to %s:%hu."
msgstr "Pokušaj konektovanja na %s na %s:%hu za direktnu IM."
-#, fuzzy, c-format
+#, fuzzy
msgid "Attempting to connect via proxy server."
msgstr "Nije moguce konektovanje na server."
@@ -7444,7 +7624,7 @@ msgstr "Opera"
msgid "Visible"
msgstr "Nevidljiv"
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
#, fuzzy
@@ -7540,17 +7720,51 @@ msgstr "Zadnji put obnovljeno"
msgid "Could not change buddy information."
msgstr "Unesite alarmiranje za prijatelja."
-#, c-format
-msgid "%d needs Q&A"
+#, fuzzy
+msgid "Mobile"
+msgstr "Mobilni telefon"
+
+msgid "Note"
+msgstr "Bilješka"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "Ikonica prijatelja"
+
+msgid "Change his/her memo as you like"
msgstr ""
#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "Dodaj prijatelja"
+msgid "_Modify"
+msgstr "_Modificiraj"
-msgid "Input answer here"
+#, fuzzy
+msgid "Memo Modify"
+msgstr "_Modificiraj"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "Server zauzet"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
msgstr ""
+#, fuzzy, c-format
+msgid "%u requires verification"
+msgstr "Zahtjev za autorizaciju"
+
+#, fuzzy
+msgid "Add buddy question"
+msgstr "Dodajte prijatelja Vašoj listi?"
+
+#, fuzzy
+msgid "Enter answer here"
+msgstr "Nemoguce poslati direktorij."
+
msgid "Send"
msgstr "Pošalji"
@@ -7562,19 +7776,20 @@ msgstr "Netacna lozinka"
msgid "Authorization denied message:"
msgstr "Poruka o odbijanju autorizacije:"
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr ""
#, fuzzy, c-format
-msgid "%d needs authentication"
+msgid "%u needs authorization"
msgstr "Pocetak autentikacije"
#, fuzzy
msgid "Add buddy authorize"
msgstr "Dodajte prijatelja Vašoj listi?"
-msgid "Input request here"
-msgstr ""
+#, fuzzy
+msgid "Enter request here"
+msgstr "Upišite server za konferenciju"
#, fuzzy
msgid "Would you be my friend?"
@@ -7597,7 +7812,7 @@ msgid "Failed sending authorize"
msgstr "Autorizujte me, molim Vas! "
#, fuzzy, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr "Neuspjeh prilikom pridruživanja prijatelju na chat-u"
#, fuzzy, c-format
@@ -7643,6 +7858,10 @@ msgid "You can only search for permanent Qun\n"
msgstr ""
#, fuzzy
+msgid "(Invalid UTF-8 string)"
+msgstr "Netacne proxy postavke"
+
+#, fuzzy
msgid "Not member"
msgstr "Clan vec od"
@@ -7685,15 +7904,18 @@ msgstr ""
msgid "Join QQ Qun"
msgstr "Pridruži se chat-u"
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
+msgid "Input request here"
msgstr ""
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "Broj telefona"
+
msgid "Successfully joined Qun"
msgstr ""
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
#, fuzzy
@@ -7704,7 +7926,7 @@ msgstr "Opcije zvuka"
msgid "Failed:"
msgstr "Neuspio pokušaj"
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
#, fuzzy
@@ -7716,11 +7938,12 @@ msgid ""
"this operation will eventually remove this Qun."
msgstr ""
-msgid "Sorry, you are not our style ..."
-msgstr ""
+#, fuzzy
+msgid "Sorry, you are not our style"
+msgstr "Žao mi je, izašao/la sam na sekundu!"
#, fuzzy
-msgid "Successfully changed Qun member"
+msgid "Successfully changed Qun members"
msgstr "Broj telefona"
#, fuzzy
@@ -7731,7 +7954,7 @@ msgid "You have successfully created a Qun"
msgstr ""
#, fuzzy
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr "Da li biste željeli da se pridružite konverzaciji?"
#, fuzzy
@@ -7739,28 +7962,28 @@ msgid "Setup"
msgstr "_Postavi"
#, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr ""
#, c-format
-msgid "%d request to join Qun %d"
+msgid "%u request to join Qun %u"
msgstr ""
#, fuzzy, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr "Neuspjeh prilikom pridruživanja prijatelju na chat-u"
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr "Odstrani prijatelja"
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "Odstrani prijatelja"
#, fuzzy, c-format
msgid "Unknown-%d"
@@ -7880,6 +8103,13 @@ msgstr "<b>Korisnik:</b> %s<br>"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<b>Alias:</b> %s<br>"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<b>Korisnik:</b> %s<br>"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7887,7 +8117,7 @@ msgid "<i>Feel free to join us!</i> :)"
msgstr ""
#, fuzzy, c-format
-msgid "About OpenQ r%s"
+msgid "About OpenQ %s"
msgstr "O Pidgin-u"
#, fuzzy
@@ -7908,6 +8138,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "O Pidgin-u"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Kucna adresa"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7939,7 +8173,6 @@ msgstr ""
msgid "QQ2008"
msgstr ""
-#. #endif
#, fuzzy
msgid "Connect by TCP"
msgstr "Spajanje"
@@ -7952,6 +8185,9 @@ msgstr "Prikaži manje opcija"
msgid "Show server news"
msgstr "Prikaži manje opcija"
+msgid "Show chat room when msg comes"
+msgstr ""
+
#, fuzzy
msgid "Keep alive interval (seconds)"
msgstr "Greška pri citanju"
@@ -7961,11 +8197,7 @@ msgid "Update interval (seconds)"
msgstr "Greška pri citanju"
#, fuzzy
-msgid "Can not decrypt server reply"
-msgstr "Nemoguce dobiti informacije o serveru"
-
-#, fuzzy
-msgid "Can not decrypt get server reply"
+msgid "Cannot decrypt server reply"
msgstr "Nemoguce dobiti informacije o serveru"
#, c-format
@@ -7988,21 +8220,23 @@ msgid "Activation required"
msgstr "Potrebna registracija"
#, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr ""
#, fuzzy
-msgid "Keep alive error"
-msgstr "Greška pri citanju"
+msgid "Could not decrypt server reply"
+msgstr "Nemoguce dobiti informacije o serveru"
-msgid "Requesting captcha ..."
-msgstr ""
+#, fuzzy
+msgid "Requesting captcha"
+msgstr "Zahtjev nejasan"
-msgid "Checking code of captcha ..."
+msgid "Checking captcha"
msgstr ""
-msgid "Failed captcha verify"
-msgstr ""
+#, fuzzy
+msgid "Failed captcha verification"
+msgstr "Neuspjela Yahoo! autentikacija"
#, fuzzy
msgid "Captcha Image"
@@ -8012,7 +8246,7 @@ msgstr "Spasi sliku"
msgid "Enter code"
msgstr "Promjeni lozinku"
-msgid "QQ Captcha Verifing"
+msgid "QQ Captcha Verification"
msgstr ""
#, fuzzy
@@ -8020,16 +8254,15 @@ msgid "Enter the text from the image"
msgstr "Unesite ime grupe koju dodajete"
#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
+msgid "Unknown reply when checking password (0x%02X)"
msgstr ""
#, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
msgstr ""
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "Nije moguce spajanje."
@@ -8037,12 +8270,6 @@ msgstr "Nije moguce spajanje."
msgid "Socket error"
msgstr "Greška prilikom citanja"
-#, fuzzy, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr "Greška pri komunikaciji sa serverom"
-
#, fuzzy
msgid "Unable to read from socket"
msgstr "Nije moguce citanje soketa"
@@ -8056,11 +8283,11 @@ msgid "Connection lost"
msgstr "Konekcija zatvorena"
#, fuzzy
-msgid "Get server ..."
+msgid "Getting server"
msgstr "Postavi korisnicki info..."
#, fuzzy
-msgid "Request token"
+msgid "Requesting token"
msgstr "Zahtjev odbijen"
#, fuzzy
@@ -8072,17 +8299,13 @@ msgid "Invalid server or port"
msgstr "Netacno korisnicko ime ili lozinka"
#, fuzzy
-msgid "Connecting server ..."
-msgstr "Spoji sa serverom"
+msgid "Connecting to server"
+msgstr "Spajanje na SILC server"
#, fuzzy
msgid "QQ Error"
msgstr "Greška pri citanju"
-#, fuzzy
-msgid "Failed to send IM."
-msgstr "Neuspio pokušaj pridruživanja na chat"
-
#, fuzzy, c-format
msgid ""
"Server News:\n"
@@ -8092,6 +8315,10 @@ msgid ""
msgstr "ICQ server relay"
#, fuzzy, c-format
+msgid "%s:%s"
+msgstr "%s na %s (%s)"
+
+#, fuzzy, c-format
msgid "From %s:"
msgstr "Od"
@@ -8101,32 +8328,30 @@ msgid ""
"%s"
msgstr "Server informacije"
-msgid "Unknow SERVER CMD"
-msgstr ""
+#, fuzzy
+msgid "Unknown SERVER CMD"
+msgstr "Nepoznat razlog."
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
#, fuzzy
msgid "QQ Qun Command"
msgstr "Komanda"
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr ""
-
-msgid "Can not decrypt login reply"
-msgstr ""
+#, fuzzy
+msgid "Could not decrypt login reply"
+msgstr "Nemoguce dobiti informacije o serveru"
#, fuzzy
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr "Nepoznat razlog."
#, fuzzy
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr "Nepoznat razlog."
#, fuzzy, c-format
@@ -8979,9 +9204,6 @@ msgstr "Organizacija"
msgid "Unit"
msgstr "Jedinica"
-msgid "Note"
-msgstr "Bilješka"
-
msgid "Join Chat"
msgstr "Pridruži se chat-u"
@@ -9661,6 +9883,10 @@ msgstr "Nije moguce riješiti hostname."
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr "IRC nadimci ne smiju sadržavati whitespace"
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "Prikaži manje opcija"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -9702,193 +9928,10 @@ msgid "Auth Domain"
msgstr "Automatski"
#, c-format
-msgid "Looking up %s"
-msgstr "Traženje %s"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Spajanje na %s neuspješno"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Prijava: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "U nemogucnosti pisanja datoteke %s."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "Nije moguce citanje datoteke %s."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "Poruka je preduga, posljednji %s bajti skraceni."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s nije trenutno logovan."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "Upozorenje %s nije dozvoljeno."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "Poruka je propala, vi prekoracujete ogranicenje brzine servera."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "Chat u %s nije dostupan."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "Prebrzo šaljete poruke prema %s."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "Propustili ste IM poruku od %s, jer je bila prevelika."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "Propustili ste IM poruku od %s, jer je prebrzo poslana."
-
-#, c-format
-msgid "Failure."
-msgstr "Neuspjeh."
-
-#, c-format
-msgid "Too many matches."
-msgstr "Previše poklapanja."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "Potrebno više kvalifikovanih."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "Dir servis trenutno nedostupan."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "Pregledanje emaila zabranjeno."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "Kljucna rijec ignorisana."
-
-#, c-format
-msgid "No keywords."
-msgstr "Nema kljucnih rijeci."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "Korisnik nema informacija o direktoriju."
-
-#, c-format
-msgid "Country not supported."
-msgstr "Vaša država nije podržana."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Neuspjeh nepoznat: %s"
-
-#, fuzzy, c-format
-msgid "Incorrect username or password."
-msgstr "Netacan nadimak ili lozinka."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "Servis je trenutno nedostupan."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "Vaš upozoravajuci nivo je trenutno prevelik, da biste se ulogovali."
-
-#, 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 ""
-"Precesto ste se konektovali i diskonektovali. Pricekajte deset minuta i "
-"pokušajte ponovo. Ako nastavite pokušavati, moracete sacekati i duže."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "Nepoznata greška se pojavila prilikom prijave: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "Nepoznata greška, %d, se pojavila. Info: %s"
-
-#, fuzzy
-msgid "Invalid Groupname"
-msgstr "Netacna grupa"
-
-msgid "Connection Closed"
-msgstr "Konekcija zatvorena"
-
-msgid "Waiting for reply..."
-msgstr "Cekanje odgovora..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "TOC se vratio sa pause. Sada možete ponovo slati poruke."
-
-msgid "Password Change Successful"
-msgstr "Uspješno mijenjanje lozinke"
-
-msgid "_Group:"
-msgstr "_Grupa:"
-
-msgid "Get Dir Info"
-msgstr "Uzmi Dir informacije"
-
-msgid "Set Dir Info"
-msgstr "Postavi Dir informacije"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "Nije bilo moguce otvoriti %s za pisanje!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "Transfer datoteke je neuspio; druga strana je vjerovatno odustala."
-
-msgid "Could not connect for transfer."
-msgstr "Nije bilo moguce se spojiti za transfer."
-
-msgid "Could not write file header. The file will not be transferred."
+msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
-"Nije bilo moguce napisati zaglavlje datoteke. Datoteka nece biti prebacena."
-
-#, fuzzy
-msgid "Save As..."
-msgstr "Spasi ikonicu kao…"
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s zahtjeva %s da prihvati %d datotetku: %s (%.2f %s)%s%s"
-msgstr[1] "%s zahtjeva %s da prihvati %d datoteke: %s (%.2f %s)%s%s"
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s zahtjeva da im pošaljete datoteku"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "TOC protokol plugin"
-
-#, c-format
-msgid "%s has sent you a webcam invite, which is not yet supported."
+msgid "Your SMS was not delivered"
msgstr ""
msgid "Your Yahoo! message did not get sent."
@@ -10177,14 +10220,9 @@ msgstr "Cool link 3"
msgid "Last Update"
msgstr "Zadnji put obnovljeno"
-#, c-format
-msgid "User information for %s unavailable"
-msgstr "Korisnicke informacije za %s su nedostupne"
-
#, fuzzy
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr ""
"Žao nam je, ali izgleda da je ovaj profil na jeziku, koji nije podržan u ovo "
"vrijeme."
@@ -10529,10 +10567,6 @@ msgstr "Ne smetaj"
msgid "Extended away"
msgstr "Produžena odsutnost"
-#, fuzzy
-msgid "Mobile"
-msgstr "Mobilni telefon"
-
msgid "Listening to music"
msgstr ""
@@ -10574,20 +10608,6 @@ msgstr "%s je aktivan/a"
msgid "%x %X"
msgstr ""
-#, fuzzy, c-format
-msgid "Error Reading %s"
-msgstr ""
-"Greška pri citanju %s: \n"
-"%s.\n"
-
-#, 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 ""
-"Pojavila se greška pri parsanju vaše liste prijatelja. Lista nije napunjena, "
-"i stara datoteka je premještena u blist.xml~."
-
msgid "Calculating..."
msgstr "Racunanje..."
@@ -10666,6 +10686,13 @@ msgstr ""
msgid "Unable to connect to %s: %s"
msgstr "Nije moguce konektovanje na server."
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+"Serveru je potreban TLS/SSL za prijavu. Nije pronadena TLS/SSL podrška."
+
#, c-format
msgid " - %s"
msgstr ""
@@ -10699,6 +10726,20 @@ msgstr "Konekcija zatvorena"
msgid "Address already in use."
msgstr "Ta datoteka vec postoji"
+#, fuzzy, c-format
+msgid "Error Reading %s"
+msgstr ""
+"Greška pri citanju %s: \n"
+"%s.\n"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"Pojavila se greška pri parsanju vaše liste prijatelja. Lista nije napunjena, "
+"i stara datoteka je premještena u blist.xml~."
+
#, fuzzy
msgid "Internet Messenger"
msgstr "Instant Messagers"
@@ -10747,10 +10788,9 @@ msgstr "Obavještenje o novom mail-u"
msgid "Use this buddy _icon for this account:"
msgstr ""
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s Opcije"
+#, fuzzy
+msgid "_Advanced"
+msgstr "_Odustani"
#, fuzzy
msgid "Use GNOME Proxy Settings"
@@ -10786,9 +10826,6 @@ msgstr "Ako pogledate bliže"
msgid "you can see the butterflies mating"
msgstr "možete gledati parenje leptira "
-msgid "Proxy Options"
-msgstr "Proxy opcije"
-
msgid "Proxy _type:"
msgstr "Proxy _tip:"
@@ -10819,8 +10856,8 @@ msgid "Create _this new account on the server"
msgstr ""
#, fuzzy
-msgid "_Advanced"
-msgstr "_Odustani"
+msgid "_Proxy"
+msgstr "No Proxy"
#, fuzzy
msgid "Enabled"
@@ -10889,6 +10926,17 @@ msgid "I_M"
msgstr "I_M"
#, fuzzy
+msgid "_Audio Call"
+msgstr "Dodaj chat"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Video chat"
+
+#, fuzzy
msgid "_Send File..."
msgstr "Pošalji datoteku"
@@ -11046,6 +11094,10 @@ msgid "/Tools/_Certificates"
msgstr "/Alati/Postavk_e"
#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Alati/Odsut_an"
+
+#, fuzzy
msgid "/Tools/Plu_gins"
msgstr "/Alati/Plugin akcije"
@@ -11055,10 +11107,6 @@ msgstr "/Alati/Postavk_e"
msgid "/Tools/Pr_ivacy"
msgstr "/Alati/Pr_ivatnost"
-#, fuzzy
-msgid "/Tools/Smile_y"
-msgstr "/Alati/Odsut_an"
-
msgid "/Tools/_File Transfers"
msgstr "/Alati/_Prenos datoteka"
@@ -11191,8 +11239,8 @@ msgstr "Manuelno"
msgid "By status"
msgstr "Prema statusu"
-msgid "By log size"
-msgstr "Prema velicini loga"
+msgid "By recent log activity"
+msgstr ""
#, fuzzy, c-format
msgid "%s disconnected"
@@ -11210,6 +11258,9 @@ msgstr "Ponovno spajanje"
msgid "Re-enable"
msgstr "Registruj novi Jabber account"
+msgid "SSL FAQs"
+msgstr ""
+
#, fuzzy
msgid "Welcome back!"
msgstr "%s se vratio/la"
@@ -11307,6 +11358,9 @@ msgstr ""
msgid "A_lias:"
msgstr "Alias:"
+msgid "_Group:"
+msgstr "_Grupa:"
+
msgid "Auto_join when account becomes online."
msgstr ""
@@ -11366,14 +11420,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr "Pozovite prijatelja u sobu za chat"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Unesite ime korisnika, kojeg želite pozvati, zajedno sa opcionalnom pozivnom "
-"porukom."
-
msgid "_Buddy:"
msgstr "_Prijatelj:"
@@ -11453,6 +11499,22 @@ msgstr "/Konverzacija/_Spasi kao…"
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Konverzacija/Ocisti"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Konverzacija/_Zatvori"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Konverzacija/_Zatvori"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Konverzacija/_Zatvori"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Konverzacija/Pogledaj _log"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Konverzacija/Pošalji datoteku…"
@@ -11533,6 +11595,18 @@ msgstr "/Konverza_cija"
msgid "/Conversation/View Log"
msgstr "/Konverzacija/Pogledaj log"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Konverzacija/_Zatvori"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Konverzacija/Pogledaj log"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Konverzacija/_Zatvori"
+
msgid "/Conversation/Send File..."
msgstr "/Konverzacija/Pošalji datoteku…"
@@ -11731,6 +11805,9 @@ msgstr "Adresa"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "podrška"
@@ -11881,6 +11958,10 @@ msgid "Ubuntu Georgian Translators"
msgstr "Trenutni prevodioci"
#, fuzzy
+msgid "Khmer"
+msgstr "Opera"
+
+#, fuzzy
msgid "Kannada"
msgstr "Banovani"
@@ -11904,6 +11985,10 @@ msgid "Macedonian"
msgstr "Makedonski"
#, fuzzy
+msgid "Mongolian"
+msgstr "Makedonski"
+
+#, fuzzy
msgid "Bokmål Norwegian"
msgstr "Norveški"
@@ -12012,8 +12097,25 @@ msgid ""
"<BR><BR>"
msgstr ""
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
#, fuzzy, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"4\">IRC:</FONT> #Pidgin na irc.freenode.net<BR><BR>"
+
+#, fuzzy, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"4\">IRC:</FONT> #Pidgin na irc.freenode.net<BR><BR>"
#, fuzzy
@@ -12353,15 +12455,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr "Obavještenje o novom mail-u"
-msgid "_Copy Email Address"
-msgstr "_Kopiraj email adresu"
-
-msgid "_Open Link in Browser"
-msgstr "_Otvori link u pretraživacu"
-
-msgid "_Copy Link Location"
-msgstr "_Kopiraj lokaciju linka"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12619,6 +12712,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12636,6 +12730,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12667,16 +12762,27 @@ msgstr ""
msgid "Pidgin"
msgstr "Paging"
-#, fuzzy
-msgid "Open All Messages"
-msgstr "Pošalji poruku"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
+
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
#, fuzzy
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgid "Calling..."
+msgstr "Racunanje..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
msgstr ""
-"<span weight=\"bold\" size=\"larger\">Imate mail!</span>\n"
-"\n"
-"%s"
#, c-format
msgid "%s has %d new message."
@@ -12709,6 +12815,35 @@ msgid ""
"The 'Manual' browser command has been chosen, but no command has been set."
msgstr "Komanda u pretraživacu je odabrana, ali nije postavljena."
+#, fuzzy
+msgid "Open All Messages"
+msgstr "Pošalji poruku"
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr ""
+"<span weight=\"bold\" size=\"larger\">Imate mail!</span>\n"
+"\n"
+"%s"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "Novi prijatelj alarm"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr ""
+"<span weight=\"bold\" size=\"larger\">Imate mail!</span>\n"
+"\n"
+"%s"
+
+#, fuzzy
+msgid "No message"
+msgstr "(1 poruka)"
+
msgid "The following plugins will be unloaded."
msgstr ""
@@ -12767,6 +12902,10 @@ msgstr ""
msgid "Select a file"
msgstr "Odaberite datoteku"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Uredite prijatelj alarm"
+
#. Create the "Pounce on Whom" frame.
#, fuzzy
msgid "Pounce on Whom"
@@ -12852,6 +12991,50 @@ msgstr ""
msgid "Pounce Target"
msgstr "Alarmiranje kada"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "Prijatelj pocinje _tipkati"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "Korisnik tipka…"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "Prijavljivanje"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "Opet aktiva_n"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "Opet p_risutan"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "Prijatelj prestaje tipkati"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "Odjavljivanje"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "%s je neaktivan/a"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "Pri odsutnosti"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Pošalji poruku"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "Nepoznat alarm-dogadaj. Molimo Vas prijavite ovo!"
+
msgid "Smiley theme failed to unpack."
msgstr ""
@@ -12877,6 +13060,12 @@ msgstr "Kratica"
msgid "Cl_ose conversations with the Escape key"
msgstr "Konverzacija sa %s"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Lista prijatelja"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "Ikonica system tray-a"
@@ -13002,10 +13191,6 @@ msgstr ""
msgid "Cannot start browser configuration program."
msgstr "Nemoguce dobiti korisnicke informacije"
-#, fuzzy
-msgid "ST_UN server:"
-msgstr "_Server:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr ""
@@ -13033,6 +13218,10 @@ msgstr "_Start port:"
msgid "_End port:"
msgstr "_Završni port:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
#, fuzzy
msgid "Proxy Server &amp; Browser"
msgstr "Proxy server"
@@ -13062,6 +13251,10 @@ msgstr "Proxy server"
msgid "No proxy"
msgstr "Bez proxy-ja"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "_Korisnik:"
@@ -13232,14 +13425,14 @@ msgid "Auto-away"
msgstr "Automatska odsutnost"
#, fuzzy
-msgid "Change status when _idle"
-msgstr "Postavi odsutan/a _pri neaktivnosti"
-
-#, fuzzy
msgid "_Minutes before becoming idle:"
msgstr "_Minute prije postavljanja odsutnosti:"
#, fuzzy
+msgid "Change status when _idle"
+msgstr "Postavi odsutan/a _pri neaktivnosti"
+
+#, fuzzy
msgid "Change _status to:"
msgstr "Promjena adrese na:"
@@ -13396,6 +13589,12 @@ msgstr "Spasi & koristi"
msgid "Status for %s"
msgstr "Status: %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
#, fuzzy
msgid "Custom Smiley"
msgstr "Ubaci smiley"
@@ -13406,15 +13605,15 @@ msgstr ""
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
+msgstr ""
+
#, fuzzy
msgid "Duplicate Shortcut"
msgstr "Datoteka javnog kljuca"
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
-msgstr ""
-
#, fuzzy
msgid "Please select an image for the smiley."
msgstr "Molim Vas unesite novo ime za izabranu grupu."
@@ -13428,18 +13627,22 @@ msgid "Add Smiley"
msgstr "Smijeh!"
#, fuzzy
-msgid "Smiley _Image"
+msgid "_Image:"
msgstr "Spasi sliku"
-#. Smiley shortcut
+#. Shortcut text
#, fuzzy
-msgid "Smiley S_hortcut"
+msgid "S_hortcut text:"
msgstr "Kratica"
#, fuzzy
msgid "Smiley"
msgstr "Smijeh!"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "Kratica"
+
msgid "Custom Smiley Manager"
msgstr ""
@@ -13567,6 +13770,16 @@ msgid ""
msgstr ""
#, fuzzy
+msgid "_Open Link"
+msgstr "_Otvori link u:"
+
+msgid "_Copy Link Location"
+msgstr "_Kopiraj lokaciju linka"
+
+msgid "_Copy Email Address"
+msgstr "_Kopiraj email adresu"
+
+#, fuzzy
msgid "Save File"
msgstr "Spasi datoteku…"
@@ -14597,10 +14810,6 @@ msgid "Only when docked"
msgstr ""
#, fuzzy
-msgid "_Flash window when chat messages are received"
-msgstr "Pojava prozora pri primanju poruke"
-
-#, fuzzy
msgid "Windows Pidgin Options"
msgstr "Opcije prijave"
@@ -14652,6 +14861,232 @@ msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr ""
#, fuzzy
+#~ msgid "Invite message"
+#~ msgstr "Ubaci sliku"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Unesite ime korisnika, kojeg želite pozvati, zajedno sa opcionalnom "
+#~ "pozivnom porukom."
+
+#, fuzzy
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "Nije moguce povratiti listu prijatelja"
+
+#~ msgid ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+#~ msgstr ""
+#~ "Moguce da ce Vaša veza biti prekinuta ubrzo. Možda cete htjeti da "
+#~ "koristite TOC, dok ovo ne bude popravljeno. Provjerite %s za noviju "
+#~ "verziju."
+
+#, fuzzy
+#~ msgid "Add buddy Q&A"
+#~ msgstr "Dodaj prijatelja"
+
+#, fuzzy
+#~ msgid "Can not decrypt get server reply"
+#~ msgstr "Nemoguce dobiti informacije o serveru"
+
+#, fuzzy
+#~ msgid "Keep alive error"
+#~ msgstr "Greška pri citanju"
+
+#, fuzzy
+#~ msgid ""
+#~ "Lost connection with server:\n"
+#~ "%d, %s"
+#~ msgstr "Greška pri komunikaciji sa serverom"
+
+#, fuzzy
+#~ msgid "Connecting server ..."
+#~ msgstr "Spoji sa serverom"
+
+#, fuzzy
+#~ msgid "Failed to send IM."
+#~ msgstr "Neuspio pokušaj pridruživanja na chat"
+
+#~ msgid "Looking up %s"
+#~ msgstr "Traženje %s"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "Spajanje na %s neuspješno"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Prijava: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "U nemogucnosti pisanja datoteke %s."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "Nije moguce citanje datoteke %s."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "Poruka je preduga, posljednji %s bajti skraceni."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s nije trenutno logovan."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "Upozorenje %s nije dozvoljeno."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr "Poruka je propala, vi prekoracujete ogranicenje brzine servera."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "Chat u %s nije dostupan."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "Prebrzo šaljete poruke prema %s."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "Propustili ste IM poruku od %s, jer je bila prevelika."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr "Propustili ste IM poruku od %s, jer je prebrzo poslana."
+
+#~ msgid "Failure."
+#~ msgstr "Neuspjeh."
+
+#~ msgid "Too many matches."
+#~ msgstr "Previše poklapanja."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "Potrebno više kvalifikovanih."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "Dir servis trenutno nedostupan."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "Pregledanje emaila zabranjeno."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "Kljucna rijec ignorisana."
+
+#~ msgid "No keywords."
+#~ msgstr "Nema kljucnih rijeci."
+
+#~ msgid "User has no directory information."
+#~ msgstr "Korisnik nema informacija o direktoriju."
+
+#~ msgid "Country not supported."
+#~ msgstr "Vaša država nije podržana."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Neuspjeh nepoznat: %s"
+
+#, fuzzy
+#~ msgid "Incorrect username or password."
+#~ msgstr "Netacan nadimak ili lozinka."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "Servis je trenutno nedostupan."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "Vaš upozoravajuci nivo je trenutno prevelik, da biste se ulogovali."
+
+#~ 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 ""
+#~ "Precesto ste se konektovali i diskonektovali. Pricekajte deset minuta i "
+#~ "pokušajte ponovo. Ako nastavite pokušavati, moracete sacekati i duže."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "Nepoznata greška se pojavila prilikom prijave: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "Nepoznata greška, %d, se pojavila. Info: %s"
+
+#, fuzzy
+#~ msgid "Invalid Groupname"
+#~ msgstr "Netacna grupa"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Konekcija zatvorena"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "Cekanje odgovora..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "TOC se vratio sa pause. Sada možete ponovo slati poruke."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "Uspješno mijenjanje lozinke"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Uzmi Dir informacije"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Postavi Dir informacije"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "Nije bilo moguce otvoriti %s za pisanje!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr "Transfer datoteke je neuspio; druga strana je vjerovatno odustala."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "Nije bilo moguce se spojiti za transfer."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr ""
+#~ "Nije bilo moguce napisati zaglavlje datoteke. Datoteka nece biti "
+#~ "prebacena."
+
+#, fuzzy
+#~ msgid "Save As..."
+#~ msgstr "Spasi ikonicu kao…"
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s zahtjeva %s da prihvati %d datotetku: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s zahtjeva %s da prihvati %d datoteke: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s zahtjeva da im pošaljete datoteku"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "TOC protokol plugin"
+
+#~ msgid "User information for %s unavailable"
+#~ msgstr "Korisnicke informacije za %s su nedostupne"
+
+#~ msgid "%s Options"
+#~ msgstr "%s Opcije"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Proxy opcije"
+
+#~ msgid "By log size"
+#~ msgstr "Prema velicini loga"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_Otvori link u pretraživacu"
+
+#, fuzzy
+#~ msgid "ST_UN server:"
+#~ msgstr "_Server:"
+
+#, fuzzy
+#~ msgid "Smiley _Image"
+#~ msgstr "Spasi sliku"
+
+#, fuzzy
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "Kratica"
+
+#, fuzzy
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "Pojava prozora pri primanju poruke"
+
+#, fuzzy
#~ msgid "A group with the name already exists."
#~ msgstr "Direktorij sa tim imenom vec postoji"
@@ -14721,13 +15156,6 @@ msgstr ""
#~ "Da li ste sigurni da hocete da odstranite poruku o odsutnosti \"%s\"?"
#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr "%s na %s (%s)"
-
-#, fuzzy
#~ msgid "System Message"
#~ msgstr "Pošalji poruku"
@@ -14867,9 +15295,6 @@ msgstr ""
#~ msgid "Invalid screen name"
#~ msgstr "Pogrešno korisnicko ime"
-#~ msgid "Unable to make SSL connection to server."
-#~ msgstr "Nije moguce ostvariti SSL konekciju na server."
-
#~ msgid "Too evil (sender)"
#~ msgstr "Previše zao (pošiljaoc)"
@@ -15164,8 +15589,8 @@ msgstr ""
#~ "Gives Pidgin the ability to be remote-controlled through third-party "
#~ "applications or through the Pidgin-remote tool."
#~ msgstr ""
-#~ "Pruža Pidgin-u mogucnost daljinskog upravljanja od strane trece aplikacije "
-#~ "ili od strane Pidgin-daljinskog alata."
+#~ "Pruža Pidgin-u mogucnost daljinskog upravljanja od strane trece "
+#~ "aplikacije ili od strane Pidgin-daljinskog alata."
#~ msgid "Hide user details"
#~ msgstr "Sakrij korisnicke detalje"
@@ -15231,9 +15656,6 @@ msgstr ""
#~ msgid "Group not removed"
#~ msgstr "Grupa nije odstranjena"
-#~ msgid "Buddy List Error"
-#~ msgstr "Greška u listi prijatelja"
-
#~ msgid "(+%d more)"
#~ msgstr "(+%d više)"
@@ -15619,9 +16041,6 @@ msgstr ""
#~ msgid "_Idle"
#~ msgstr "Neakt_ivan"
-#~ msgid "Retur_n from idle"
-#~ msgstr "Opet aktiva_n"
-
#~ msgid "Pounce Action"
#~ msgstr "Alarm-akcija"
@@ -15833,8 +16252,8 @@ msgstr ""
#~ msgstr "Nije moguce preuzeti postavke"
#~ msgid ""
-#~ "Pidgin was not able to load your preferences because they are stored in an "
-#~ "old format that is no longer used. Please reconfigure your settings "
+#~ "Pidgin 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 ""
#~ "Pidgin nije uspio preuzeti vaše opcije, jer su sacuvane u starom formatu, "
@@ -15923,8 +16342,8 @@ msgstr ""
#~ "Pidgin was unable to complete your request due to a problem communicating "
#~ "with the Gadu-Gadu HTTP server. Please try again later."
#~ msgstr ""
-#~ "Pidgin nije mogao kompletirati vaš zahtjev u vezi sa problemom komunikacije "
-#~ "sa Gadu-Gadu HTTP serverom. Pokušajte opet kasnije."
+#~ "Pidgin nije mogao kompletirati vaš zahtjev u vezi sa problemom "
+#~ "komunikacije sa Gadu-Gadu HTTP serverom. Pokušajte opet kasnije."
#~ msgid "Unable to import Gadu-Gadu buddy list"
#~ msgstr "Nije moguce importovati Gadu-Gadu listu prijatelja."
@@ -15933,15 +16352,15 @@ msgstr ""
#~ "Pidgin was unable to connect to the Gadu-Gadu buddy list server. Please "
#~ "try again later."
#~ msgstr ""
-#~ "Pidgin se nije mogao spojiti sa Gadu-Gadu serverom liste prijatelja. Molimo "
-#~ "pokušajte opet kasnije."
+#~ "Pidgin se nije mogao spojiti sa Gadu-Gadu serverom liste prijatelja. "
+#~ "Molimo pokušajte opet kasnije."
#~ msgid ""
#~ "Pidgin was unable to connect to the buddy list server. Please try again "
#~ "later."
#~ msgstr ""
-#~ "Pidgin se nije mogao spojiti sa serverom liste prijatelja. Molimo pokušajte "
-#~ "kasnije."
+#~ "Pidgin se nije mogao spojiti sa serverom liste prijatelja. Molimo "
+#~ "pokušajte kasnije."
#~ msgid "Unable to delete Gadu-Gadu buddy list"
#~ msgstr "Nije moguce izbrisati Gadu-Gadu listu prijatelja"
@@ -15950,18 +16369,18 @@ msgstr ""
#~ msgstr "Nije moguce pristupiti direktoriju"
#~ msgid ""
-#~ "Pidgin was unable to search the Directory because it was unable to connect "
-#~ "to the directory server. Please try again later."
+#~ "Pidgin was unable to search the Directory because it was unable to "
+#~ "connect to the directory server. Please try again later."
#~ msgstr ""
#~ "Pidgin nije mogao pretraživati direktorij, jer nije mogao da se spoji na "
#~ "direktorij-server. Molimo pokušajte opet kasnije."
#~ msgid ""
-#~ "Pidgin was unable to change your password due to an error connecting to the "
-#~ "Gadu-Gadu server. Please try again later."
+#~ "Pidgin was unable to change your password due to an error connecting to "
+#~ "the Gadu-Gadu server. Please try again later."
#~ msgstr ""
-#~ "Pidgin nije mogao promjeniti lozinku zbog greške pri spajanju na Gadu-Gadu "
-#~ "server. Molimo pokušajte opet kasnije."
+#~ "Pidgin nije mogao promjeniti lozinku zbog greške pri spajanju na Gadu-"
+#~ "Gadu server. Molimo pokušajte opet kasnije."
#~ msgid "Import Buddy List from Server"
#~ msgstr "Importuj listu prijatelja sa servera"
@@ -15970,8 +16389,8 @@ msgstr ""
#~ msgstr "Nije moguce pristupiti korisnickom profilu."
#~ msgid ""
-#~ "Pidgin was unable to access this user's profile due to an error connecting "
-#~ "to the directory server. Please try again later."
+#~ "Pidgin was unable to access this user's profile due to an error "
+#~ "connecting to the directory server. Please try again later."
#~ msgstr ""
#~ "Pidgin nije mogao pristupiti ovom korisnickom profilu zbog greške pri "
#~ "spajanju na direktorij-server. Molimo pokušajte ponovo kasnije."
@@ -16235,8 +16654,8 @@ msgstr ""
#~ msgid ""
#~ "When this happens, TOC ignores any messages sent to it, and may kick you "
-#~ "off if you send a message. Pidgin will prevent anything from going through. "
-#~ "This is only temporary, please be patient."
+#~ "off if you send a message. Pidgin will prevent anything from going "
+#~ "through. This is only temporary, please be patient."
#~ msgstr ""
#~ "Kada se ovo desi, TOC ignoriše sve poslane poruke, i u mogucnosti je da "
#~ "Vas izbaci ako pošaljete poruku. Pidgin ce sprijeciti bilo šta da prode. "
@@ -16283,8 +16702,8 @@ msgstr ""
#~ msgid ""
#~ "The normal authentication method has failed. This means either your "
#~ "password is incorrect, or Yahoo!'s authentication scheme has changed. "
-#~ "Pidgin will now attempt to log in using Web Messenger authentication, which "
-#~ "will result in reduced functionality and features."
+#~ "Pidgin will now attempt to log in using Web Messenger authentication, "
+#~ "which will result in reduced functionality and features."
#~ msgstr ""
#~ "Normalna metoda autentikacije nije uspjela. Ovo znaci ili da je Vaša "
#~ "lozinka netacna, ili se shema Yahoo! autentikacije promjenila. Pidgin ce "
@@ -16314,9 +16733,6 @@ msgstr ""
#~ msgstr[0] "(%d poruka)"
#~ msgstr[1] "(%d poruka)"
-#~ msgid "(1 message)"
-#~ msgstr "(1 poruka)"
-
#~ msgid "%s logged in."
#~ msgstr "%s ulogovan/a."
@@ -16340,9 +16756,6 @@ msgstr ""
#~ "%s je pozvao/la u chat sobu %s:\n"
#~ "<b>%s</b>"
-#~ msgid "Sorry, I ran out for a bit!"
-#~ msgstr "Žao mi je, izašao/la sam na sekundu!"
-
#~ msgid "_Warn"
#~ msgstr "Upozori"
diff --git a/po/ca.po b/po/ca.po
index d91edf5d84..78a6e05278 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -33,8 +33,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-22 10:28+0100\n"
-"PO-Revision-Date: 2009-02-22 15:18+0100\n"
+"POT-Creation-Date: 2009-06-06 22:44+0200\n"
+"PO-Revision-Date: 2009-06-06 22:51+0200\n"
"Last-Translator: Josep Puigdemont i Casamajó <josep.puigdemont@gmail.com>\n"
"Language-Team: Catalan <tradgnome@softcatala.net>\n"
"MIME-Version: 1.0\n"
@@ -639,19 +639,6 @@ msgstr ""
msgid "Send To"
msgstr "Envia a"
-msgid "Invite message"
-msgstr "Missatge d'invitació"
-
-msgid "Invite"
-msgstr "Convida"
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Introduïu el nom de l'usuari que vulgueu convidar,\n"
-"així com un missatge d'invitació opcional."
-
msgid "Conversation"
msgstr "Conversa"
@@ -915,6 +902,41 @@ msgstr "Totes les converses"
msgid "System Log"
msgstr "Registre del sistema"
+msgid "Calling ... "
+msgstr "S'està trucant..."
+
+msgid "Hangup"
+msgstr "Penja"
+
+#. Number of actions
+msgid "Accept"
+msgstr "Accepta"
+
+msgid "Reject"
+msgstr "Rebutja"
+
+msgid "Call in progress."
+msgstr "S'està fent una trucada."
+
+msgid "The call has been terminated."
+msgstr "Ha finalitzat la trucada."
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr "%s vol iniciar una sessió d'àudio."
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+"%s està intentant iniciar una sessió amb medi d'un tipus que no està "
+"implementat."
+
+msgid "You have rejected the call."
+msgstr "Heu rebutjat la trucada."
+
+msgid "call: Make an audio call."
+msgstr "call: fa una trucada d'àudio."
+
msgid "Emails"
msgstr "Correus electrònics"
@@ -949,6 +971,9 @@ msgstr "Continua"
msgid "IM"
msgstr "MI"
+msgid "Invite"
+msgstr "Convida"
+
msgid "(none)"
msgstr "(cap)"
@@ -1153,7 +1178,6 @@ msgstr "%s ha passat a absent (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s us ha enviat un missatge. (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "Esdeveniment d'avís desconegut, informeu-nos-en."
@@ -1565,6 +1589,30 @@ msgstr "GntLastlog"
msgid "Lastlog plugin."
msgstr "Connector lastlog."
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+"\n"
+"S'està aconseguint un TinyURL..."
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr "Crea TinyURL per a URL així de llargues o més"
+
+msgid "TinyURL (or other) address prefix"
+msgstr "Prefix de l'adreça TinyURL (o altra)"
+
+msgid "TinyURL"
+msgstr "TinyURL"
+
+msgid "TinyURL plugin"
+msgstr "Connector TinyURL"
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+"Quan rebeu missagtes amb URL, feu servir TinyURL per a copiar més fàcilment"
+
msgid "accounts"
msgstr "comptes"
@@ -1666,13 +1714,6 @@ msgstr "Voleu acceptar el certificat de %s?"
msgid "SSL Certificate Verification"
msgstr "Verificació d'un certificat SSL"
-#. Number of actions
-msgid "Accept"
-msgstr "Accepta"
-
-msgid "Reject"
-msgstr "Rebutja"
-
msgid "_View Certificate..."
msgstr "_Mostra el certificat..."
@@ -1775,6 +1816,8 @@ msgstr "+++ %s s'ha connectat"
msgid "+++ %s signed off"
msgstr "+++ %s se n'ha anat"
+#. Unknown error
+#. Unknown error!
msgid "Unknown error"
msgstr "Error desconegut"
@@ -1821,6 +1864,17 @@ msgstr "%s ha sortit de la sala."
msgid "%s left the room (%s)."
msgstr "%s ha sortit de la sala (%s)."
+msgid "Invite to chat"
+msgstr "Convida al xat"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Introduïu el nom de l'usuari que vulgueu convidar, així com un missatge "
+"d'invitació opcional."
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "No s'ha pogut obtenir la connexió: %s"
@@ -2654,6 +2708,36 @@ msgstr "Desa els missatges fora de línia en un avís"
msgid "Do not ask. Always save in pounce."
msgstr "No ho demanis, desa-ho sempre en un avís."
+msgid "One Time Password"
+msgstr "Contrasenya d'un sol ús"
+
+# FIXME ?
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr "Contrasenyes d'un sol ús"
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr "Força que les contrasenyes només s'emprin una vegada."
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+"Us permet forçar que les contrasenyes siguin d'un sol ús per a comptes dels "
+"quals no es desin les contrasenyes.\n"
+"Nota: per poder fer servir això, cal que no es desi la contrasenya del "
+"compte."
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -3056,6 +3140,7 @@ msgstr "Seleccioneu un xat per a l'amic: %s"
msgid "Add to chat..."
msgstr "Afegeix al xat..."
+#. Global
msgid "Available"
msgstr "Disponible"
@@ -3113,6 +3198,10 @@ msgstr "Afegeix al xat"
msgid "Chat _name:"
msgstr "_Nom del xat:"
+#. should this be a settings error?
+msgid "Unable to resolve server"
+msgstr "No s'ha pogut resoldre el nom del servidor"
+
msgid "Chat error"
msgstr "Error en el xat"
@@ -3161,6 +3250,9 @@ msgstr "Popular MI polonesa"
msgid "Gadu-Gadu User"
msgstr "Usuari Gadu-Gadu"
+msgid "GG server"
+msgstr "Servidor GG"
+
#, c-format
msgid "Unknown command: %s"
msgstr "Ordre desconeguda: %s"
@@ -3203,8 +3295,9 @@ msgstr "_Canal:"
msgid "_Password:"
msgstr "_Contrasenya:"
-msgid "IRC nicks may not contain whitespace"
-msgstr "Els sobrenoms d'IRC no poden contenir espais en blanc"
+msgid "IRC nick and server may not contain whitespace"
+msgstr ""
+"Els sobrenoms i els noms de servidor d'IRC no poden contenir espais en blanc"
#. 1. connect to server
#. connect to the server
@@ -3402,6 +3495,16 @@ msgstr ""
"El servidor ha rebutjat el nom del compte que heu triat. Possiblement conté "
"caràcters invàlids."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "Ja hi ha algú amb el sobrenom «%s»."
+
+msgid "Nickname in use"
+msgstr "El sobrenom ja s'està fent servir"
+
msgid "Cannot change nick"
msgstr "No es pot canviar el sobrenom"
@@ -3668,12 +3771,44 @@ msgstr "La resposta del servidor no és vàlida."
msgid "Server does not use any supported authentication method"
msgstr "No hi ha cap mètode d'autenticació compatible amb aquest servidor"
+msgid "You require encryption, but it is not available on this server."
+msgstr "Requeriu xifratge, però no està disponible en aquest servidor."
+
msgid "Invalid challenge from server"
msgstr "Repte del servidor invàlid"
msgid "SASL error"
msgstr "Error en el SASL"
+msgid "The BOSH connection manager terminated your session."
+msgstr "El gestor de connexions BOSH ha tancat la connexió."
+
+msgid "No session ID given"
+msgstr "No s'ha indicat cap ID"
+
+msgid "Unsupported version of BOSH protocol"
+msgstr "Aquesta versió del protocol BOSH no està implementada"
+
+msgid "Unable to establish a connection with the server"
+msgstr "No s'ha pogut establir una connexió amb el servidor"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"No s'ha pogut establir una connexió amb el servidor:\n"
+"%s"
+
+msgid "Unable to establish SSL connection"
+msgstr "No s'ha pogut establir una connexió SSL"
+
+msgid "Unable to create socket"
+msgstr "No s'ha pogut crear el sòcol"
+
+msgid "Write error"
+msgstr "Error d'escriptura"
+
msgid "Full Name"
msgstr "Nom"
@@ -3740,6 +3875,9 @@ msgstr "Client"
msgid "Operating System"
msgstr "Sistema operatiu"
+msgid "Local Time"
+msgstr "Hora local"
+
msgid "Last Activity"
msgstr "Darrera activitat"
@@ -3912,6 +4050,13 @@ msgstr "Prioritat"
msgid "Resource"
msgstr "Recurs"
+#, c-format
+msgid "%s ago"
+msgstr "fa %s"
+
+msgid "Logged off"
+msgstr "Desconnectat"
+
# Segons la viquipèdia
msgid "Middle Name"
msgstr "Nom del mig"
@@ -4080,11 +4225,14 @@ msgstr "Seleccioneu a quin servidor de conferències consultar"
msgid "Find Rooms"
msgstr "Cerca sales"
-msgid "You require encryption, but it is not available on this server."
-msgstr "Requeriu xifratge, però no està disponible en aquest servidor."
+msgid "Affiliations:"
+msgstr "Afiliacions:"
-msgid "Write error"
-msgstr "Error d'escriptura"
+msgid "No users found"
+msgstr "No s'ha trobat cap usuari"
+
+msgid "Roles:"
+msgstr "Rols:"
msgid "Ping timeout"
msgstr "Temps d'espera del ping"
@@ -4094,14 +4242,11 @@ msgstr "Error de lectura"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"No s'ha pogut establir una connexió amb al servidor:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "No s'ha pogut crear el sòcol"
+"No s'ha pogut trobar cap mètode alternatiu de connexió XMPP després de no "
+"haver pogut connectar directament.\n"
msgid "Invalid XMPP ID"
msgstr "ID de l'XMPP invàlid"
@@ -4109,6 +4254,9 @@ msgstr "ID de l'XMPP invàlid"
msgid "Invalid XMPP ID. Domain must be set."
msgstr "L'ID de l'XMPP no és vàlid. Cal especificar un domini."
+msgid "Malformed BOSH Connect Server"
+msgstr ""
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "S'ha registrat %s a %s amb èxit"
@@ -4133,9 +4281,6 @@ msgstr "S'ha cancel·lat el registre amb èxit"
msgid "Unregistration Failed"
msgstr "No s'ha pogut cancel·lar el registre"
-msgid "Already Registered"
-msgstr "Ja esteu registrat"
-
msgid "State"
msgstr "Estat"
@@ -4148,6 +4293,9 @@ msgstr "Telèfon"
msgid "Date"
msgstr "Data"
+msgid "Already Registered"
+msgstr "Ja esteu registrat"
+
msgid "Unregister"
msgstr "Cancel·la el registre"
@@ -4199,6 +4347,13 @@ msgstr "El servidor no permet blocar"
msgid "Not Authorized"
msgstr "No autoritzat"
+msgid "Mood"
+msgstr "Estat d'ànim"
+
+# FIXME?
+msgid "Now Listening"
+msgstr "Ara escoltant"
+
msgid "Both"
msgstr "Ambdós"
@@ -4220,13 +4375,6 @@ msgstr "Cap"
msgid "Subscription"
msgstr "Subscripció"
-msgid "Mood"
-msgstr "Estat d'ànim"
-
-# FIXME?
-msgid "Now Listening"
-msgstr "Ara escoltant"
-
msgid "Mood Text"
msgstr "Text sobre l'estat d'ànim"
@@ -4468,17 +4616,25 @@ msgid "Unable to ping user %s"
msgstr "No s'ha pogut fer ping a l'usuari %s"
#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr "No s'ha pogut botzinar perquè no es coneix res de l'usuari %s."
#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+msgid "Unable to buzz, because %s might be offline."
msgstr ""
"No s'ha pogut botzinar possiblement perquè l'usuari %s està desconnectat."
#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
-msgstr "No s'ha pogut botzinar perquè l'usuari %s no ho permet."
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
+msgstr ""
+"No s'ha pogut botzinar l'usuari %s perquè no ho implementa, o bé ara mateix "
+"no ho permet."
+
+#, c-format
+msgid "Buzzing %s..."
+msgstr "S'està botzinant a %s..."
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
@@ -4490,8 +4646,35 @@ msgid "%s has buzzed you!"
msgstr "%s us ha botzinat!"
#, c-format
-msgid "Buzzing %s..."
-msgstr "S'està botzinant a %s..."
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "No s'ha pogut iniciar el medi amb %s: el JID no és vàlid"
+
+#, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "No s'ha pogut iniciar el medi amb %s: l'usuari no està connectat"
+
+#, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr ""
+"No s'ha pogut iniciar el medi amb %s: no esteu subscrit a la presència de "
+"l'usuari"
+
+msgid "Media Initiation Failed"
+msgstr "Ha fallat la iniciació del medi"
+
+# FIXME: "media session" -> "sessió amb medi"?
+#, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr ""
+"Escolliu el recurs de %s amb el qual voleu iniciar una sessió amb medi."
+
+msgid "Select a Resource"
+msgstr "Seleccioneu un recurs"
+
+msgid "Initiate Media"
+msgstr "Inicia el medi"
msgid "config: Configure a chat room."
msgstr "config: configura la sala de xat."
@@ -4512,18 +4695,18 @@ msgid "ban &lt;user&gt; [reason]: Ban a user from the room."
msgstr "ban &lt;user&gt; [motiu]: bandeja de la sala un usuari."
msgid ""
-"affiliate &lt;user&gt; &lt;owner|admin|member|outcast|none&gt;: Set a user's "
-"affiliation with the room."
+"affiliate &lt;owner|admin|member|outcast|none&gt; [nick1] [nick2] ...: Get "
+"the users with an affiliation or set users' affiliation with the room."
msgstr ""
-"affiliate &lt;usuari&gt; &lt;owner|admin|member|outcast|none&gt;: estableix "
-"l'afiliació de l'usuari a la sala."
+"affiliate &lt;owner|admin|member|outcast|none&gt; [sobrenom1] "
+"[sobrenom2] ...: obtén els usuaris amb una afiliació, o els l'estableix."
msgid ""
-"role &lt;user&gt; &lt;moderator|participant|visitor|none&gt;: Set a user's "
-"role in the room."
+"role &lt;moderator|participant|visitor|none&gt; [nick1] [nick2] ...: Get the "
+"users with an role or set users' role with the room."
msgstr ""
-"role &lt;usuari&gt; &lt;moderator|participant|visitor|none&gt;: estableix el "
-"rol d'un usuari en una sala."
+"role &lt;usuari&gt; &lt;moderator|participant|visitor|none&gt; [sobrenom1] "
+"[sobrenom2] ...: obtén els usuaris amb el rol especificat, o els l'estableix."
msgid "invite &lt;user&gt; [message]: Invite a user to the room."
msgstr "invite &lt;usuari&gt; [sala]: convida un usuari a la sala."
@@ -4646,6 +4829,18 @@ msgstr "S'ha produït un error en entrar al xat %s"
msgid "Error in chat %s"
msgstr "S'ha produït un error en el xat %s"
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr ""
+
+msgid "Transfer was closed."
+msgstr "La transferència s'ha tancat."
+
+msgid "Failed to open the file"
+msgstr "No s'ha pogut obrir el fitxer"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4674,9 +4869,6 @@ msgstr ""
msgid "Please select the resource of %s to which you would like to send a file"
msgstr "Escolliu a quin recurs de %s voleu enviar un fitxer"
-msgid "Select a Resource"
-msgstr "Seleccioneu un recurs"
-
msgid "Edit User Mood"
msgstr "Edita l'estat d'ànim"
@@ -5315,28 +5507,20 @@ msgid "Windows Live ID authentication:Invalid response"
msgstr "Autenticació amb el Windows Live ID: la resposta no és vàlida"
#, c-format
-msgid "%s is not a valid group."
-msgstr "%s no és un nom de grup vàlid"
-
-msgid "Unknown error."
-msgstr "Error desconegut."
-
-#, c-format
-msgid "%s on %s (%s)"
-msgstr "%s a %s (%s)"
-
-#, c-format
msgid "%s just sent you a Nudge!"
msgstr "%s us ha donat un cop de colze!"
-#. char *adl = g_strndup(payload, len);
#, c-format
-msgid "Unknown error (%d)"
-msgstr "Error desconegut (%d)"
+msgid "Unknown error (%d): %s"
+msgstr "Error desconegut (%d): %s"
msgid "Unable to add user"
msgstr "No s'ha pogut afegir l'usuari"
+#, c-format
+msgid "Unknown error (%d)"
+msgstr "Error desconegut (%d)"
+
msgid "The following users are missing from your addressbook"
msgstr "Manquen aquests usuaris a la vostra llista d'amics"
@@ -5363,15 +5547,12 @@ msgstr "%s no és un compte de passaport vàlid."
msgid "Service Temporarily Unavailable."
msgstr "El servei no està disponible temporalment."
+msgid "Unknown error."
+msgstr "Error desconegut."
+
msgid "Mobile message was not sent because it was too long."
msgstr "No s'ha enviat el missatge al mòbil perquè era massa llarg."
-msgid "Unable to rename group"
-msgstr "No s'ha pogut canviar el nom del grup"
-
-msgid "Unable to delete group"
-msgstr "No s'ha pogut suprimir el grup"
-
#, c-format
msgid ""
"The MSN server will shut down for maintenance in %d minute. You will "
@@ -5529,14 +5710,6 @@ msgid "Message may have not been sent because an unknown error occurred:"
msgstr ""
"No s'ha pogut enviar el missatge perquè s'ha produït un error desconegut:"
-#, c-format
-msgid "%s has added you to his or her buddy list."
-msgstr "%s us ha afegit a la seva llista d'amics."
-
-#, c-format
-msgid "%s has removed you from his or her buddy list."
-msgstr "%s us ha suprimit de la seva llista d'amics."
-
msgid "Delete Buddy from Address Book?"
msgstr "Voleu suprimir l'amic de la llibreta d'adreces?"
@@ -5566,6 +5739,28 @@ msgid "MSN Protocol Plugin"
msgstr "Connector per al protocol MSN"
#, c-format
+msgid "%s is not a valid group."
+msgstr "%s no és un nom de grup vàlid"
+
+#, c-format
+msgid "%s on %s (%s)"
+msgstr "%s a %s (%s)"
+
+msgid "Unable to rename group"
+msgstr "No s'ha pogut canviar el nom del grup"
+
+msgid "Unable to delete group"
+msgstr "No s'ha pogut suprimir el grup"
+
+#, c-format
+msgid "%s has added you to his or her buddy list."
+msgstr "%s us ha afegit a la seva llista d'amics."
+
+#, c-format
+msgid "%s has removed you from his or her buddy list."
+msgstr "%s us ha suprimit de la seva llista d'amics."
+
+#, c-format
msgid "No such user: %s"
msgstr "Aquest usuari no existeix: %s"
@@ -5595,6 +5790,8 @@ msgid "Lost connection with server"
msgstr "S'ha perdut la connexió amb el servidor"
#. Can't write _()'d strings in array initializers. Workaround.
+#. khc: then use N_() in the array initializer and use _() when they are
+#. used
msgid "New mail messages"
msgstr "Missatges de correu nous"
@@ -5792,28 +5989,27 @@ msgstr "Entreu un nom d'usuari per a comprovar-ne la disponibilitat:"
#. * connotation, for example, "he was zapped by electricity when
#. * he put a fork in the toaster."
msgid "Zap"
-msgstr ""
+msgstr "Enrampar"
-#, fuzzy, c-format
+#, c-format
msgid "%s has zapped you!"
-msgstr "%s us ha afegit [%s]"
+msgstr "%s us ha enrampat!"
-#, fuzzy, c-format
+#, c-format
msgid "Zapping %s..."
-msgstr "S'està trucant a %s"
+msgstr "S'està enrampant %s..."
#. Whack means "to hit or strike someone with a sharp blow"
-#, fuzzy
msgid "Whack"
msgstr "bufetejar"
-#, fuzzy, c-format
+#, c-format
msgid "%s has whacked you!"
-msgstr "%s us ha afegit [%s]"
+msgstr "%s us ha bufetejat!"
-#, fuzzy, c-format
+#, c-format
msgid "Whacking %s..."
-msgstr "Bufetejant"
+msgstr "S'està bufetejant %s..."
#. Torch means "to set on fire." Don't worry, this doesn't
#. * make a whole lot of sense in English, either. Feel free
@@ -5895,17 +6091,16 @@ msgstr "S'està xocant-ne cinc amb %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.
-#, fuzzy
msgid "Punk"
-msgstr "Ping"
+msgstr "Pren el pèl"
-#, fuzzy, c-format
+#, c-format
msgid "%s has punk'd you!"
-msgstr "%s s'ha connectat."
+msgstr "%s us ha près el pèl!"
-#, fuzzy, c-format
+#, c-format
msgid "Punking %s..."
-msgstr "Ping"
+msgstr "S'està prenent el pèl a %s..."
#. Raspberry is a slang term for the vibrating sound made
#. * when you stick your tongue out of your mouth with your
@@ -5914,17 +6109,16 @@ msgstr "Ping"
#. * gesture, so it does not carry a harsh negative
#. * connotation. It is generally used in a playful tone
#. * with friends.
-#, fuzzy
msgid "Raspberry"
msgstr "Llengoteja"
-#, fuzzy, c-format
+#, c-format
msgid "%s has raspberried you!"
-msgstr "%s s'ha connectat."
+msgstr "%s us ha fet una llengota!"
-#, fuzzy, c-format
+#, c-format
msgid "Raspberrying %s..."
-msgstr "Morrejant"
+msgstr "S'està fent una llengota a %s..."
msgid "Required parameters not passed in"
msgstr "No s'han passat tots els paràmetres requerits"
@@ -6513,7 +6707,7 @@ msgstr ""
"començar amb una lletra i contenir només lletres, nombres o espais, o només "
"nombres."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr "El nom d'usuari no és vàlid"
@@ -6530,7 +6724,7 @@ msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr ""
"El servei de missatges instantanis d'AOL no està disponible temporalment."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6717,7 +6911,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] "Heu perdut %hu missatge de %s per motius desconeguts."
msgstr[1] "Heu perdut %hu missatges de %s per motius desconeguts."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "No s'ha pogut enviar el missatge: %s"
@@ -7308,6 +7502,35 @@ msgstr "Actualitza"
msgid "Could not change buddy information."
msgstr "No s'ha pogut canviar la informació l'amic."
+msgid "Mobile"
+msgstr "Mòbil"
+
+msgid "Note"
+msgstr "Nota"
+
+# FIXME: "memo", el qq té una terminologia molt peculiar
+#. callback
+msgid "Buddy Memo"
+msgstr "Memo de l'amic"
+
+msgid "Change his/her memo as you like"
+msgstr "Canvieu-ne el memo"
+
+msgid "_Modify"
+msgstr "_Modifica"
+
+msgid "Memo Modify"
+msgstr "Modifica el memo"
+
+msgid "Server says:"
+msgstr "El servidor diu:"
+
+msgid "Your request was accepted."
+msgstr "S'ha acceptat la vostra sol·licitud."
+
+msgid "Your request was rejected."
+msgstr "S'ha rebutjat la vostra sol·licitud."
+
#, c-format
msgid "%u requires verification"
msgstr "Cal verificació per a %u"
@@ -7620,6 +7843,12 @@ msgstr "<p><b>Encantadors apedaçadors (de codi)</b>:<br>\n"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<p><b>Reconeixement</b>:<br>\n"
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<p><b>Comprovadors del codi</b>:<br>\n"
+
+msgid "and more, please let me know... thank you!))"
+msgstr "i més, si us plau feu-m'ho saber... gràcies!!!))"
+
# FIXME: ush... traducció lliure...
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr "<p><i>I tothom que ho ha fet possible...<i><br>\n"
@@ -7646,6 +7875,9 @@ msgstr "Actualitza tots els Quns QQ"
msgid "About OpenQ"
msgstr "Quant a l'OpenQ"
+msgid "Modify Buddy Memo"
+msgstr "Modifica el memo de l'amic"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7756,7 +7988,6 @@ msgstr ""
"No s'ha reconegut el codi de resposta en entrar (0x%02X):\n"
"%s"
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "No s'ha pogut connectar."
@@ -8662,9 +8893,6 @@ msgstr "Organització"
msgid "Unit"
msgstr "Unitat"
-msgid "Note"
-msgstr "Nota"
-
msgid "Join Chat"
msgstr "Entra a un xat"
@@ -9361,200 +9589,14 @@ msgid "Auth Domain"
msgstr "Domini Auth"
#, c-format
-msgid "Looking up %s"
-msgstr "S'està cercant %s"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Ha fallat la connexió a %s"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Entrada: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "No s'ha pogut escriure el fitxer %s."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "No s'ha pogut llegir el fitxer %s."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "El missatge és massa llarg, s'han retallat els darrers %s octets."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s no està connectat."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "Avís de %s no permès."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr ""
-"S'ha ignorat un missatge. Esteu excedint el límit de velocitat del servidor."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "El xat a %s no està disponible."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "Esteu enviant missatges massa de pressa a %s."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "Us heu perdut un missatge instantani de %s perquè era massa gran."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr ""
-"Heu perdut un missatge instantani de %s perquè s'ha enviat massa de pressa."
-
-#, c-format
-msgid "Failure."
-msgstr "Fallada."
-
-#, c-format
-msgid "Too many matches."
-msgstr "Massa coincidències."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "Es necessiten més qualificadors."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "Servei de directori no disponible temporalment."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "Recerca per adreça de correu electrònic restringida."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "S'ha ignorat la paraula clau."
-
-#, c-format
-msgid "No keywords."
-msgstr "No hi ha paraules clau."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "L'usuari no té informació al directori."
-
-# FIXME
-#, c-format
-msgid "Country not supported."
-msgstr "Aquest país no està disponible."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Fallada desconeguda: %s."
-
-#, c-format
-msgid "Incorrect username or password."
-msgstr "El nom d'usuari o la contrasenya no són correctes."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "El servei està temporalment no disponible."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "El vostre nivell d'avisos és massa alt per a connectar-se."
-
-#, 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 ""
-"Us heu estat connectant i desconnectant amb massa freqüència. Espereu deu "
-"minuts i torneu-ho a provar. Si continueu intentant-ho, haureu d'esperar "
-"encara més."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "Hi ha hagut un error de connexió desconegut: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "S'ha produït un error desconegut, %d. Informació: %s"
-
-msgid "Invalid Groupname"
-msgstr "El nom del grup no és vàlid"
-
-msgid "Connection Closed"
-msgstr "Connexió tancada"
-
-msgid "Waiting for reply..."
-msgstr "S'està esperant una resposta..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "TOC ha tornat de la pausa. Ja podeu enviar missatges de nou."
-
-msgid "Password Change Successful"
-msgstr "S'ha canviat la contrasenya amb èxit"
-
-msgid "_Group:"
-msgstr "_Grup:"
-
-msgid "Get Dir Info"
-msgstr "Aconsegueix informació del directori"
-
-msgid "Set Dir Info"
-msgstr "Estableix informació del directori"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "No s'ha pogut obrir %s per a escriure-hi."
-
-msgid "File transfer failed; other side probably canceled."
-msgstr ""
-"Ha fallat la transferència de fitxers. Probablement s'ha cancel·lat a "
-"l'altra banda."
-
-msgid "Could not connect for transfer."
-msgstr "No s'ha pogut connectar per realitzar la transferència."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "No s'ha pogut escriure la capçalera del fitxer. No s'enviarà."
-
-msgid "Save As..."
-msgstr "Anomena i desa..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s demana a %s que accepti %d fitxer: %s (%.2f %s)%s%s"
-msgstr[1] "%s demana a %s que accepti %d fitxers: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s us demana que li envieu un fitxer"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "Connector per al protocol TOC"
-
-#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
"%s us ha enviat una invitació a la seva càmera web, però això encara no està "
"implementat."
+msgid "Your SMS was not delivered"
+msgstr "No s'ha enviat l'SMS"
+
msgid "Your Yahoo! message did not get sent."
msgstr "No s'ha pogut enviar el vostre missatge de Yahoo!"
@@ -9579,6 +9621,38 @@ msgstr ""
msgid "Add buddy rejected"
msgstr "S'ha rebutjat afegir l'amic"
+#. Some error in the received stream
+msgid "Received invalid data"
+msgstr "S'han rebut dades invàlides"
+
+#. Password incorrect
+msgid "Incorrect Password"
+msgstr "La contrasenya no és correcta"
+
+#. security lock from too many failed login attempts
+msgid ""
+"Account locked: Too many failed login attempts.\n"
+"Logging into the Yahoo! website may fix this."
+msgstr ""
+"El compte està blocat perquè s'ha intentat entrar massa cops.\n"
+"Això es pot solucionar entrant al web de Yahoo!"
+
+#. the username does not exist
+msgid "Username does not exist"
+msgstr "L'usuari no existeix"
+
+#. indicates a lock of some description
+msgid ""
+"Account locked: Unknown reason.\n"
+"Logging into the Yahoo! website may fix this."
+msgstr ""
+"El compte està blocat, però no se'n coneix el motiu.\n"
+"Això es pot solucionar entrant al web de Yahoo!"
+
+#. username or password missing
+msgid "Username or password missing"
+msgstr "Manquen el nom d'uruari o la contrasenya"
+
#, c-format
msgid ""
"The Yahoo server has requested the use of an unrecognized authentication "
@@ -10166,9 +10240,6 @@ msgstr "No molesteu"
msgid "Extended away"
msgstr "Absent durant una bona estona"
-msgid "Mobile"
-msgstr "Mòbil"
-
# És un estat, com "fora de línia", etc. (josep)
msgid "Listening to music"
msgstr "Escoltant música"
@@ -10211,18 +10282,6 @@ msgstr "+++ %s ja no està inactiu"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "S'ha produït un error en llegir %s"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"S'ha produït un error en llegir el vostre %s. No s'han carregat, i s'ha "
-"canviat el nom del fitxer per %s~."
-
msgid "Calculating..."
msgstr "S'està calculant..."
@@ -10300,6 +10359,14 @@ msgid "Unable to connect to %s: %s"
msgstr "No s'ha pogut connectar a %s: %s"
#, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+"No s'ha pogut connectar a %s: el servidor requereix TLS/SSL, però no s'ha "
+"trobat cap implementació de TLS/SSL."
+
+#, c-format
msgid " - %s"
msgstr " - %s"
@@ -10332,6 +10399,18 @@ msgstr "S'ha refusat la connexió."
msgid "Address already in use."
msgstr "Aquesta adreça ja s'està fent servir"
+#, c-format
+msgid "Error Reading %s"
+msgstr "S'ha produït un error en llegir %s"
+
+#, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"S'ha produït un error en llegir el vostre %s. No s'ha carregat el fitxer, i "
+"s'ha canviat el nom per %s~."
+
msgid "Internet Messenger"
msgstr "Missatger d'Internet"
@@ -10374,10 +10453,8 @@ msgstr "_Notifica si hi ha correu nou"
msgid "Use this buddy _icon for this account:"
msgstr "Utilitza aquesta _icona d'amic per a aquest compte:"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "Opcions de %s"
+msgid "_Advanced"
+msgstr "_Avançat"
msgid "Use GNOME Proxy Settings"
msgstr "Empra la configuració del servidor intermediari del Gnome"
@@ -10412,9 +10489,6 @@ msgstr "Si mireu de ben a prop"
msgid "you can see the butterflies mating"
msgstr "podreu veure les papallones aparellant-se"
-msgid "Proxy Options"
-msgstr "Opcions del servidor intermediari"
-
msgid "Proxy _type:"
msgstr "_Tipus de servidor intermediari"
@@ -10442,8 +10516,8 @@ msgstr "_Bàsic"
msgid "Create _this new account on the server"
msgstr "Crea _aquest compte nou al servidor"
-msgid "_Advanced"
-msgstr "_Avançat"
+msgid "_Proxy"
+msgstr "Servidor _intermediari"
msgid "Enabled"
msgstr "Habilitat"
@@ -10494,8 +10568,8 @@ msgstr ""
msgid "Please update the necessary fields."
msgstr "Actualitzeu els camps necessaris."
-msgid "Room _List"
-msgstr "_Llista de sales"
+msgid "A_ccount"
+msgstr "_Compte"
msgid ""
"Please enter the appropriate information about the chat you would like to "
@@ -10503,8 +10577,8 @@ msgid ""
msgstr ""
"Introduïu la informació necessària sobre el xat al qual vulgueu entrar.\n"
-msgid "_Account:"
-msgstr "C_ompte:"
+msgid "Room _List"
+msgstr "_Llista de sales"
msgid "_Block"
msgstr "_Bloca"
@@ -10522,6 +10596,15 @@ msgstr "_Informació"
msgid "I_M"
msgstr "_MI"
+msgid "_Audio Call"
+msgstr "_Trucada amb àudio"
+
+msgid "Audio/_Video Call"
+msgstr "Trucada d'àudio i _vídeo"
+
+msgid "_Video Call"
+msgstr "Trucada de _vídeo"
+
msgid "_Send File..."
msgstr "_Envia un fitxer..."
@@ -10657,6 +10740,9 @@ msgstr "/Eines/_Avís per a amics"
msgid "/Tools/_Certificates"
msgstr "/Eines/C_ertificats"
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Eines/Em_oticones personalitzades"
+
msgid "/Tools/Plu_gins"
msgstr "/Eines/_Connectors"
@@ -10666,9 +10752,6 @@ msgstr "/Eines/Pre_ferències"
msgid "/Tools/Pr_ivacy"
msgstr "/Eines/_Privadesa"
-msgid "/Tools/Smile_y"
-msgstr "/Eines/Em_oticona"
-
msgid "/Tools/_File Transfers"
msgstr "/Eines/_Transferència de fitxers"
@@ -10786,8 +10869,8 @@ msgstr "Manualment"
msgid "By status"
msgstr "Per estat"
-msgid "By log size"
-msgstr "Per la mida del registre"
+msgid "By recent log activity"
+msgstr "Per activitat recent en el registre"
#, c-format
msgid "%s disconnected"
@@ -10803,6 +10886,9 @@ msgstr "Torna a connectar"
msgid "Re-enable"
msgstr "Rehabilita"
+msgid "SSL FAQs"
+msgstr "PMF sobre SSL"
+
msgid "Welcome back!"
msgstr "Ben tornat!"
@@ -10891,6 +10977,9 @@ msgstr ""
msgid "A_lias:"
msgstr "Àl_ies:"
+msgid "_Group:"
+msgstr "_Grup:"
+
msgid "Auto_join when account becomes online."
msgstr "_Entra automàticament quant el compte estigui connectat."
@@ -10941,14 +11030,6 @@ msgstr "No esteu connectat amb cap protocol que permeti convidar aquest amic."
msgid "Invite Buddy Into Chat Room"
msgstr "Convida l'amic a una sala de xat"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Introduïu el nom de l'usuari que vulgueu convidar, així com un missatge "
-"d'invitació opcional."
-
msgid "_Buddy:"
msgstr "_Amic:"
@@ -11024,6 +11105,18 @@ msgstr "/Conversa/Anomena i _desa..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Conversa/_Neteja la finestra"
+msgid "/Conversation/M_edia"
+msgstr "/Conversa/M_edi"
+
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Conversa/Medi/_Trucada d'àudio"
+
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Conversa/Medi/Trucada de _vídeo"
+
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Conversa/Medi/Tru_cada d'àudio i vídeo"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Conversa/Envia un _fitxer..."
@@ -11096,6 +11189,15 @@ msgstr "/Conversa"
msgid "/Conversation/View Log"
msgstr "/Conversa/Visualitza el registre"
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Conversa/Medi/Trucada d'àudio"
+
+msgid "/Conversation/Media/Video Call"
+msgstr "/Conversa/Medi/Trucada de vídeo"
+
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Conversa/Medi/Trucada d'àudio i vídeo"
+
msgid "/Conversation/Send File..."
msgstr "/Conversa/Envia un fitxer..."
@@ -11282,6 +11384,9 @@ msgstr "artista"
msgid "Ka-Hing Cheung"
msgstr "Ka-Hing Cheung"
+msgid "voice and video"
+msgstr "veu i vídeo"
+
msgid "support"
msgstr "suport"
@@ -11409,6 +11514,9 @@ msgstr "Hindi"
msgid "Hungarian"
msgstr "Hongarès"
+msgid "Armenian"
+msgstr "Armeni"
+
msgid "Indonesian"
msgstr "Indonesi"
@@ -11424,6 +11532,9 @@ msgstr "Georgià"
msgid "Ubuntu Georgian Translators"
msgstr "Traductors al georgià de l'Ubuntu"
+msgid "Khmer"
+msgstr "Khmer"
+
msgid "Kannada"
msgstr "Kannada"
@@ -11503,6 +11614,9 @@ msgstr "Sinhala"
msgid "Swedish"
msgstr "Suec"
+msgid "Swahili"
+msgstr " Suahili"
+
msgid "Tamil"
msgstr "Tàmil"
@@ -11902,15 +12016,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr "Habilita les notificacions de que s'està escrivint"
-msgid "_Copy Email Address"
-msgstr "_Copia l'adreça de correu"
-
-msgid "_Open Link in Browser"
-msgstr "_Obre l'enllaç en el navegador"
-
-msgid "_Copy Link Location"
-msgstr "_Copia la ubicació de l'enllaç"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -11954,11 +12059,9 @@ msgstr ""
msgid "Save Image"
msgstr "Desa imatge"
-#, c-format
msgid "_Save Image..."
msgstr "_Desa la imatge..."
-#, c-format
msgid "_Add Custom Smiley..."
msgstr "_Afegeix una emoticona personalitzada..."
@@ -12169,6 +12272,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12183,8 +12287,11 @@ msgstr ""
"\n"
" -c, --config=DIR utilitza DIR per als fitxers de configuració\n"
" -d, --debug mostra missatges de depuració a la sortida estàndard\n"
+" -f, --force-online força que s'estigui en línia, independent de l'estat "
+"de\n"
+" la xarxa\n"
" -h, --help mostra aquesta ajuda i surt\n"
-" -m, --multiple permet que hi hagi més d'una instància\n"
+" -m, --multiple no controla que només hi hagi una instància\n"
" -n, --nologin no entra automàticament\n"
" -l, --login[=NOM] habilita el compte especificat (l'argument opcional "
"NOM\n"
@@ -12201,6 +12308,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12214,8 +12322,11 @@ msgstr ""
"\n"
" -c, --config=DIR utilitza DIR per als fitxers de configuració\n"
" -d, --debug mostra missatges de depuració a la sortida estàndard\n"
+" -f, --force-online força que s'estigui en línia, independent de l'estat "
+"de\n"
+" la xarxa\n"
" -h, --help mostra aquesta ajuda i surt\n"
-" -m, --multiple permet que hi hagi més d'una instància\n"
+" -m, --multiple no controla que només hi hagi una instància\n"
" -n, --nologin no entra automàticament\n"
" -l, --login[=NOM] habilita el compte especificat (l'argument opcional "
"NOM\n"
@@ -12264,11 +12375,22 @@ msgstr ""
"Ara se sortirà atès que ja hi ha un altre client del libpurple executant-"
"se.\n"
-msgid "Open All Messages"
-msgstr "Obre tots els missatges"
+msgid "/_Media"
+msgstr "/_Medi"
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Teniu correu electrònic.</span>"
+msgid "/Media/_Hangup"
+msgstr "/Medi/_Penja"
+
+msgid "Calling..."
+msgstr "S'està trucant..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr "%s vol iniciar una sessió d'àudio/vídeo."
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr "%s vol iniciar una sessió de vídeo."
#, c-format
msgid "%s has %d new message."
@@ -12298,6 +12420,26 @@ msgid ""
msgstr ""
"S'ha triat l'ordre per al navegador «manualment», però no se n'ha indicat cap."
+msgid "Open All Messages"
+msgstr "Obre tots els missatges"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Teniu correu electrònic.</span>"
+
+msgid "New Pounces"
+msgstr "Avisos nous"
+
+# FIXME: Cancel·la?
+msgid "Dismiss"
+msgstr "Rebutja"
+
+# FIXME: pounced -> envestir?
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Us han envestit!</span>"
+
+msgid "No message"
+msgstr "Cap missatge"
+
msgid "The following plugins will be unloaded."
msgstr "Es descarregaran els connectors següents."
@@ -12346,11 +12488,17 @@ msgstr "<b>Detalls del connector</b>"
msgid "Select a file"
msgstr "Seleccioneu un fitxer"
+msgid "Modify Buddy Pounce"
+msgstr "Modifica l'avís per a l'amic"
+
# FIXME
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "Avisa dels Whom"
+msgid "_Account:"
+msgstr "C_ompte:"
+
msgid "_Buddy name:"
msgstr "_Nom de l'amic:"
@@ -12421,6 +12569,50 @@ msgstr "_Recurrent"
msgid "Pounce Target"
msgstr "Objectiu de l'avís"
+#, c-format
+msgid "Started typing"
+msgstr "Hagi començat a escriure"
+
+#, c-format
+msgid "Paused while typing"
+msgstr "S'aturi mentre tecleja"
+
+#, c-format
+msgid "Signed on"
+msgstr "Es connecti"
+
+#, c-format
+msgid "Returned from being idle"
+msgstr "Torna a estar actiu"
+
+#, c-format
+msgid "Returned from being away"
+msgstr "Torni a estar present"
+
+#, c-format
+msgid "Stopped typing"
+msgstr "Pari d'escriure"
+
+#, c-format
+msgid "Signed off"
+msgstr "Es desconnecti"
+
+#, c-format
+msgid "Became idle"
+msgstr "Passi a inactiu"
+
+#, c-format
+msgid "Went away"
+msgstr "En estar absent"
+
+#, c-format
+msgid "Sent a message"
+msgstr "Envia un missatge"
+
+#, c-format
+msgid "Unknown.... Please report this!"
+msgstr "Esdeveniment d'avís desconegut, informeu-nos-en."
+
msgid "Smiley theme failed to unpack."
msgstr "No s'ha pogut desempaquetar el tema d'emoticones."
@@ -12443,6 +12635,11 @@ msgstr "Dreceres de teclat"
msgid "Cl_ose conversations with the Escape key"
msgstr "Tanca les converses amb la tecla d'_escapament"
+#. Buddy List Themes
+msgid "Buddy List Theme"
+msgstr "Tema de la llista d'amics"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "Icona d'estat"
@@ -12555,9 +12752,6 @@ msgstr ""
msgid "Cannot start browser configuration program."
msgstr "No s'ha pogut iniciar el programa de configuració del navegador."
-msgid "ST_UN server:"
-msgstr "Servidor ST_UN:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">Exemple: stunserver.org</span>"
@@ -12582,6 +12776,10 @@ msgstr "Port _inicial:"
msgid "_End port:"
msgstr "Port _final:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr "Servidor repetidor (TURN)"
+
msgid "Proxy Server &amp; Browser"
msgstr "Servidor intermediari i navegador"
@@ -12774,12 +12972,12 @@ msgstr "En estar absent i inactiu alhora"
msgid "Auto-away"
msgstr "Auto-absència"
-msgid "Change status when _idle"
-msgstr "_Canvia l'estat quan estigui inactiu"
-
msgid "_Minutes before becoming idle:"
msgstr "_Minuts abans de passar a inactiu:"
+msgid "Change status when _idle"
+msgstr "_Canvia l'estat quan estigui inactiu"
+
msgid "Change _status to:"
msgstr "Canvia l'_estat a:"
@@ -12928,6 +13126,12 @@ msgstr "Desa i _fes servir"
msgid "Status for %s"
msgstr "Estat per a %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
msgid "Custom Smiley"
msgstr "Emoticona personalitzada"
@@ -12937,15 +13141,14 @@ msgstr "Calen més dades"
msgid "Please provide a shortcut to associate with the smiley."
msgstr "Especifiqueu una drecera associada a l'emoticona."
-msgid "Duplicate Shortcut"
-msgstr "Drecera duplicada"
-
+#, c-format
msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
+"A custom smiley for '%s' already exists. Please use a different shortcut."
msgstr ""
-"Hi ha una emoticona personalitzada per la drecera que heu seleccionat. "
-"Indiqueu-ne una de diferent."
+"Ja hi ha una emoticona personalitzada per a «%s». Indiqueu-ne una de diferent."
+
+msgid "Duplicate Shortcut"
+msgstr "Drecera duplicada"
msgid "Please select an image for the smiley."
msgstr "Seleccioneu una imatge per a l'emoticona."
@@ -12956,19 +13159,25 @@ msgstr "Edita l'emoticona"
msgid "Add Smiley"
msgstr "Afegeix una emoticona"
-msgid "Smiley _Image"
-msgstr "_Imatge de l'emoticona"
+msgid "_Image:"
+msgstr "_Imatge:"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr "_Dreceres de l'emoticona"
+#. Shortcut text
+msgid "S_hortcut text:"
+msgstr "_Drecera:"
msgid "Smiley"
msgstr "Emoticona"
+msgid "Shortcut Text"
+msgstr "Drecera"
+
msgid "Custom Smiley Manager"
msgstr "Gestor d'emoticones personalitzades"
+msgid "Select Buddy Icon"
+msgstr "Seleccioneu una icona per a l'amic"
+
msgid "Click to change your buddyicon for this account."
msgstr "Feu clic per canviar la icona d'amic d'aquest compte."
@@ -13093,6 +13302,15 @@ msgstr ""
"No s'ha pogut carregar la imatge «%s»: no se'n coneix el motiu, possiblement "
"la imatge estigui corrompuda"
+msgid "_Open Link"
+msgstr "_Obre l'enllaç"
+
+msgid "_Copy Link Location"
+msgstr "_Copia l'enllaç"
+
+msgid "_Copy Email Address"
+msgstr "_Copia l'adreça de correu"
+
msgid "Save File"
msgstr "Desa un fitxer"
@@ -13698,12 +13916,6 @@ msgstr ""
"- escriu a l'inrevés tots els missatges rebuts\n"
"- envia un missatge a tots els amics immediatament després que es connectin"
-msgid "Cursor Color"
-msgstr "Color del cursor"
-
-msgid "Secondary Cursor Color"
-msgstr "Color secundari del cursor"
-
msgid "Hyperlink Color"
msgstr "Color dels hiperenllaços"
@@ -13713,6 +13925,9 @@ msgstr "Color dels enllaços visitats"
msgid "Highlighted Message Name Color"
msgstr "Nom del color per als missatges ressaltats"
+msgid "Typing Notification Color"
+msgstr "Color per a les notificacions de quan s'escriu"
+
msgid "GtkTreeView Horizontal Separation"
msgstr "Separació horitzontal del GtkTreeView"
@@ -13742,35 +13957,21 @@ msgstr "Tipus de lletra de la interfície GTK+"
msgid "GTK+ Text Shortcut Theme"
msgstr "Tema de la drecera de text de GTK+"
-#.
-#. for (i = 0; i < G_N_ELEMENTS(widget_bool_prefs); i++) {
-#. hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_CAT_SPACE);
-#. gtk_box_pack_start(GTK_BOX(frame), hbox, FALSE, FALSE, 0);
-#.
-#. check = pidgin_prefs_checkbox(_(widget_bool_names[i]),
-#. widget_bool_prefs_set[i], hbox);
-#. gtk_size_group_add_widget(labelsg, check);
-#.
-#. widget_bool_widgets[i] = pidgin_prefs_checkbox("", widget_bool_prefs[i], hbox);
-#. *
-#. gtk_size_group_add_widget(widgetsb, widget_bool_widgets[i]);
-#. *
-#. gtk_widget_set_sensitive(widget_bool_widgets[i],
-#. purple_prefs_get_bool(widget_bool_prefs_set[i]));
-#. g_signal_connect(G_OBJECT(check), "toggled",
-#. G_CALLBACK(pidgin_toggle_sensitive),
-#. widget_bool_widgets[i]);
-#. }
-#.
-msgid "Interface colors"
-msgstr "Colors de la interfície"
+msgid "Disable Typing Notification Text"
+msgstr "Inhabilita les notificacions de que s'està escrivint"
+
+msgid "GTK+ Theme Control Settings"
+msgstr "Configuració dels temes GTK+"
-msgid "Widget Sizes"
-msgstr "Mides del giny"
+msgid "Colors"
+msgstr "Colors"
msgid "Fonts"
msgstr "Tipus de lletra"
+msgid "Miscellaneous"
+msgstr "Miscel·lània"
+
msgid "Gtkrc File Tools"
msgstr "Eines de fitxer Gtkrc"
@@ -14126,6 +14327,203 @@ msgstr "Envia i rep blocs XMPP en brut."
msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr "Aquest connector és útil per a depurar servidors i clients XMPP."
+#~ msgid "Account locked: Too many failed login attempts"
+#~ msgstr "S'ha blocat el compte: s'ha intentat entrar massa vegades"
+
+#~ msgid "Account locked: See the debug log"
+#~ msgstr "El compte està blocat: vegeu el registre de depuració"
+
+#~ msgid "Cursor Color"
+#~ msgstr "Color del cursor"
+
+#~ msgid "Secondary Cursor Color"
+#~ msgstr "Color secundari del cursor"
+
+#~ msgid "Interface colors"
+#~ msgstr "Colors de la interfície"
+
+#~ msgid "Widget Sizes"
+#~ msgstr "Mides del giny"
+
+#~ msgid "Invite message"
+#~ msgstr "Missatge d'invitació"
+
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Introduïu el nom de l'usuari que vulgueu convidar,\n"
+#~ "així com un missatge d'invitació opcional."
+
+#~ msgid "Looking up %s"
+#~ msgstr "S'està cercant %s"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "Ha fallat la connexió a %s"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Entrada: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "No s'ha pogut escriure el fitxer %s."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "No s'ha pogut llegir el fitxer %s."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "El missatge és massa llarg, s'han retallat els darrers %s octets."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s no està connectat."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "Avís de %s no permès."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr ""
+#~ "S'ha ignorat un missatge. Esteu excedint el límit de velocitat del "
+#~ "servidor."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "El xat a %s no està disponible."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "Esteu enviant missatges massa de pressa a %s."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "Us heu perdut un missatge instantani de %s perquè era massa gran."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr ""
+#~ "Heu perdut un missatge instantani de %s perquè s'ha enviat massa de "
+#~ "pressa."
+
+#~ msgid "Failure."
+#~ msgstr "Fallada."
+
+#~ msgid "Too many matches."
+#~ msgstr "Massa coincidències."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "Es necessiten més qualificadors."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "Servei de directori no disponible temporalment."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "Recerca per adreça de correu electrònic restringida."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "S'ha ignorat la paraula clau."
+
+#~ msgid "No keywords."
+#~ msgstr "No hi ha paraules clau."
+
+#~ msgid "User has no directory information."
+#~ msgstr "L'usuari no té informació al directori."
+
+# FIXME
+#~ msgid "Country not supported."
+#~ msgstr "Aquest país no està disponible."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Fallada desconeguda: %s."
+
+#~ msgid "Incorrect username or password."
+#~ msgstr "El nom d'usuari o la contrasenya no són correctes."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "El servei està temporalment no disponible."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "El vostre nivell d'avisos és massa alt per a connectar-se."
+
+#~ 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 ""
+#~ "Us heu estat connectant i desconnectant amb massa freqüència. Espereu deu "
+#~ "minuts i torneu-ho a provar. Si continueu intentant-ho, haureu d'esperar "
+#~ "encara més."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "Hi ha hagut un error de connexió desconegut: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "S'ha produït un error desconegut, %d. Informació: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "El nom del grup no és vàlid"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Connexió tancada"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "S'està esperant una resposta..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "TOC ha tornat de la pausa. Ja podeu enviar missatges de nou."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "S'ha canviat la contrasenya amb èxit"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Aconsegueix informació del directori"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Estableix informació del directori"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "No s'ha pogut obrir %s per a escriure-hi."
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr ""
+#~ "Ha fallat la transferència de fitxers. Probablement s'ha cancel·lat a "
+#~ "l'altra banda."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "No s'ha pogut connectar per realitzar la transferència."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "No s'ha pogut escriure la capçalera del fitxer. No s'enviarà."
+
+#~ msgid "Save As..."
+#~ msgstr "Anomena i desa..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s demana a %s que accepti %d fitxer: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s demana a %s que accepti %d fitxers: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s us demana que li envieu un fitxer"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "Connector per al protocol TOC"
+
+#~ msgid "%s Options"
+#~ msgstr "Opcions de %s"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Opcions del servidor intermediari"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "Servidor ST_UN:"
+
+#~ msgid "By log size"
+#~ msgstr "Per la mida del registre"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_Obre l'enllaç en el navegador"
+
+#~ msgid "Smiley _Image"
+#~ msgstr "_Imatge de l'emoticona"
+
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "_Dreceres de l'emoticona"
+
#~ msgid "Unable to retrieve MSN Address Book"
#~ msgstr "No s'ha pogut obtenir la llibreta d'adreces MSN"
@@ -14426,9 +14824,6 @@ msgstr "Aquest connector és útil per a depurar servidors i clients XMPP."
#~ "llista d'amics. Opcionalment podeu entrar un àlies, o sobrenom, per a "
#~ "l'amic. El sobrenom substituirà el nom d'usuari allà on sigui possible.\n"
-#~ msgid "A_ccount:"
-#~ msgstr "_Compte:"
-
#~ msgid "User has typed something and stopped"
#~ msgstr "L'usuari ha escrit alguna cosa i s'ha aturat"
@@ -14833,9 +15228,6 @@ msgstr "Aquest connector és útil per a depurar servidors i clients XMPP."
#~ "\n"
#~ "Inactiu: %s"
-#~ msgid "Nickname: %s\n"
-#~ msgstr "Sobrenom: %s\n"
-
#~ msgid ""
#~ "\n"
#~ "<b>Nickname:</b> %s"
@@ -15307,9 +15699,6 @@ msgstr "Aquest connector és útil per a depurar servidors i clients XMPP."
#~ msgid "Call ended."
#~ msgstr "Ha finalitzat la trucada."
-#~ msgid "End Call"
-#~ msgstr "Finalitza la trucada"
-
#~ msgid "Receiving call from %s"
#~ msgstr "S'està rebent una trucada de %s"
@@ -15478,9 +15867,6 @@ msgstr "Aquest connector és útil per a depurar servidors i clients XMPP."
#~ msgid "_Idle"
#~ msgstr "_Inactiu"
-#~ msgid "Retur_n from idle"
-#~ msgstr "Tor_na a estar actiu"
-
#~ msgid "Bro_wse..."
#~ msgstr "Na_vega..."
@@ -15541,9 +15927,6 @@ msgstr "Aquest connector és útil per a depurar servidors i clients XMPP."
#~ msgstr[0] "(%d missatge)"
#~ msgstr[1] "(%d missatges)"
-#~ msgid "(1 message)"
-#~ msgstr "(1 missatge)"
-
#~ msgid "_Hide new messages until tray icon is clicked"
#~ msgstr ""
#~ "_Oculta els missatges nous fins que no es faci clic a la icona d'estat"
@@ -15985,9 +16368,6 @@ msgstr "Aquest connector és útil per a depurar servidors i clients XMPP."
#~ msgid "Invisible for friends only"
#~ msgstr "Només invisible per als amics"
-#~ msgid "Unable to resolve hostname."
-#~ msgstr "No s'ha pogut resoldre el nom de l'ordinador."
-
#~ msgid "Error while writing to socket."
#~ msgstr "S'ha produït un error en escriure al sòcol."
@@ -16197,9 +16577,6 @@ msgstr "Aquest connector és útil per a depurar servidors i clients XMPP."
#~ msgid "/Buddies/Log Out"
#~ msgstr "/Amics/Desconnecta"
-#~ msgid "Miscellaneous error"
-#~ msgstr "Error miscel·lani"
-
#~ msgid "Unknown error when attempting to authorize with MSN login server."
#~ msgstr ""
#~ "S'ha produït un error desconegut en intentar autoritzar amb el servidor "
diff --git a/po/ca@valencia.po b/po/ca@valencia.po
index 6d41cd04f3..05a8ce7222 100644
--- a/po/ca@valencia.po
+++ b/po/ca@valencia.po
@@ -33,7 +33,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-19 17:53+0100\n"
+"POT-Creation-Date: 2009-04-30 10:37-0400\n"
"PO-Revision-Date: 2009-01-05 20:36+0100\n"
"Last-Translator: Josep Puigdemont i Casamajó <josep.puigdemont@gmail.com>\n"
"Language-Team: Catalan <tradgnome@softcatala.net>\n"
@@ -51,13 +51,13 @@ msgstr "Finch"
msgid "%s. Try `%s -h' for more information.\n"
msgstr "%s. Proveu «%s -h» per a més informació.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -636,19 +636,6 @@ msgstr ""
msgid "Send To"
msgstr "Envia a"
-msgid "Invite message"
-msgstr "Missatge d'invitació"
-
-msgid "Invite"
-msgstr "Convida"
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Introduïu el nom de l'usuari que vulgueu convidar,\n"
-"així com un missatge d'invitació opcional."
-
msgid "Conversation"
msgstr "Conversa"
@@ -912,6 +899,41 @@ msgstr "Totes les converses"
msgid "System Log"
msgstr "Registre del sistema"
+#, fuzzy
+msgid "Calling ... "
+msgstr "S'està calculant..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "Accepta"
+
+msgid "Reject"
+msgstr "Rebutja"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "Heu eixit del canal%s%s"
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "Correus electrònics"
@@ -946,6 +968,9 @@ msgstr "Continua"
msgid "IM"
msgstr "MI"
+msgid "Invite"
+msgstr "Convida"
+
msgid "(none)"
msgstr "(cap)"
@@ -1150,7 +1175,6 @@ msgstr "%s ha passat a absent (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s us ha enviat un missatge. (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "Esdeveniment d'avís desconegut, informeu-nos-en."
@@ -1196,7 +1220,6 @@ msgstr "Minuts abans de canviar l'estat"
msgid "Change status to"
msgstr "Canvia l'estat a"
-#. Conversations
msgid "Conversations"
msgstr "Converses"
@@ -1520,7 +1543,6 @@ msgstr ""
"Quan s'òbriga una nova conversa este connector inserirà la darrera conversa "
"en la conversa actual."
-#, c-format
msgid "Online"
msgstr "En línia"
@@ -1564,6 +1586,28 @@ msgstr "GntLastlog"
msgid "Lastlog plugin."
msgstr "Connector lastlog."
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL de la melodia"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "comptes"
@@ -1665,13 +1709,6 @@ msgstr "Voleu acceptar el certificat de %s?"
msgid "SSL Certificate Verification"
msgstr "Verificació d'un certificat SSL"
-#. Number of actions
-msgid "Accept"
-msgstr "Accepta"
-
-msgid "Reject"
-msgstr "Rebutja"
-
msgid "_View Certificate..."
msgstr "_Mostra el certificat..."
@@ -1820,6 +1857,18 @@ msgstr "%s ha eixit de la sala."
msgid "%s left the room (%s)."
msgstr "%s ha eixit de la sala (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Convida a la conferència"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Introduïu el nom de l'usuari que vulgueu convidar, així com un missatge "
+"d'invitació opcional."
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "No s'ha pogut obtindre la connexió: %s"
@@ -1957,7 +2006,6 @@ msgstr "S'està iniciant la transferència de %s de %s?"
msgid "Transfer of file %s complete"
msgstr "S'ha completat la transferència del fitxer %s"
-#, c-format
msgid "File transfer complete"
msgstr "S'ha completat la transferència del fitxer"
@@ -1965,7 +2013,6 @@ msgstr "S'ha completat la transferència del fitxer"
msgid "You canceled the transfer of %s"
msgstr "Heu cancel·lat la transferència de %s"
-#, c-format
msgid "File transfer cancelled"
msgstr "S'ha cancel·lat la transferència del fitxer"
@@ -2165,7 +2212,6 @@ msgstr "(%s) %s <RESPOSTA-AUTOMÀTICA>: %s\n"
msgid "You are using %s, but this plugin requires %s."
msgstr "Esteu emprant %s, però este connector requerix %s."
-#, c-format
msgid "This plugin has not defined an ID."
msgstr "Este connector no ha definit cap ID."
@@ -2656,6 +2702,32 @@ msgstr "Alça els missatges fora de línia en un avís"
msgid "Do not ask. Always save in pounce."
msgstr "No ho demanes, alça-ho sempre en un avís."
+#, fuzzy
+msgid "One Time Password"
+msgstr "Introduïu la contrasenya"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2864,7 +2936,6 @@ msgstr ""
"No s'ha pogut establir cap connexió amb el servidor local de mDNS. S'està "
"executant?"
-#. Creating the options for the protocol
msgid "First name"
msgstr "Nom"
@@ -2897,6 +2968,11 @@ msgstr "Connector per al protocol Bonjour"
msgid "Purple Person"
msgstr "Persona porpra"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "Ubicació"
+
msgid "Bonjour"
msgstr "Bonjour"
@@ -3055,13 +3131,13 @@ msgstr "Seleccioneu un xat per a l'amic: %s"
msgid "Add to chat..."
msgstr "Afig al xat..."
+#. Global
msgid "Available"
msgstr "Disponible"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "Absent"
@@ -3402,6 +3478,17 @@ msgstr ""
"El servidor ha rebutjat el nom del compte que heu triat. Possiblement conté "
"caràcters invàlids."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "Este nom de xat ja existix"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Sobrenom: %s\n"
+
msgid "Cannot change nick"
msgstr "No es pot canviar el sobrenom"
@@ -3673,6 +3760,41 @@ msgstr "Repte del servidor invàlid"
msgid "SASL error"
msgstr "Error en el SASL"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "No s'ha indicat cap motiu"
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Esta versió no està implementada"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"No s'ha pogut establir una connexió amb al servidor:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"No s'ha pogut establir una connexió amb al servidor:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "No s'ha pogut inicialitzar la connexió"
+
+msgid "Unable to create socket"
+msgstr "No s'ha pogut crear el sòcol"
+
+msgid "Write error"
+msgstr "Error d'escriptura"
+
msgid "Full Name"
msgstr "Nom"
@@ -3739,6 +3861,10 @@ msgstr "Client"
msgid "Operating System"
msgstr "Sistema operatiu"
+#, fuzzy
+msgid "Local Time"
+msgstr "Fitxer local:"
+
msgid "Last Activity"
msgstr "Darrera activitat"
@@ -3958,7 +4084,6 @@ msgstr "Xerraire"
msgid "Extended Away"
msgstr "Absent des de fa una bona estona"
-#, c-format
msgid "Do Not Disturb"
msgstr "No molesteu"
@@ -4083,9 +4208,6 @@ msgstr "Cerca sales"
msgid "You require encryption, but it is not available on this server."
msgstr "Requeriu xifratge, però no està disponible en este servidor."
-msgid "Write error"
-msgstr "Error d'escriptura"
-
msgid "Ping timeout"
msgstr "Temps d'espera del ping"
@@ -4094,14 +4216,9 @@ msgstr "Error de lectura"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"No s'ha pogut establir una connexió amb al servidor:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "No s'ha pogut crear el sòcol"
msgid "Invalid XMPP ID"
msgstr "ID de l'XMPP invàlid"
@@ -4109,6 +4226,10 @@ msgstr "ID de l'XMPP invàlid"
msgid "Invalid XMPP ID. Domain must be set."
msgstr "L'ID de l'XMPP no és vàlid. Cal especificar un domini."
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "No s'ha pogut connectar al servidor."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "S'ha registrat %s a %s amb èxit"
@@ -4193,9 +4314,19 @@ msgstr "S'està autenticant"
msgid "Re-initializing Stream"
msgstr "S'està reinicialitzant el flux"
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr "No autoritzat"
+msgid "Mood"
+msgstr "Estat d'ànim"
+
+# FIXME?
+msgid "Now Listening"
+msgstr "Ara escoltant"
+
msgid "Both"
msgstr "Ambdós"
@@ -4217,13 +4348,6 @@ msgstr "Cap"
msgid "Subscription"
msgstr "Subscripció"
-msgid "Mood"
-msgstr "Estat d'ànim"
-
-# FIXME?
-msgid "Now Listening"
-msgstr "Ara escoltant"
-
msgid "Mood Text"
msgstr "Text sobre l'estat d'ànim"
@@ -4464,19 +4588,25 @@ msgstr "No s'ha pogut fer fora l'usuari %s"
msgid "Unable to ping user %s"
msgstr "No s'ha pogut fer ping a l'usuari %s"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr "No s'ha pogut botzinar perquè no es coneix res de l'usuari %s."
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr ""
"No s'ha pogut botzinar possiblement perquè l'usuari %s està desconnectat."
-#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+#, fuzzy, c-format
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "No s'ha pogut botzinar perquè l'usuari %s no ho permet."
+#, c-format
+msgid "Buzzing %s..."
+msgstr "S'està botzinant a %s..."
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
msgid "Buzz"
@@ -4486,9 +4616,37 @@ msgstr "Botzina"
msgid "%s has buzzed you!"
msgstr "%s us ha botzinat!"
-#, c-format
-msgid "Buzzing %s..."
-msgstr "S'està botzinant a %s..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "No s'ha pogut enviar el fitxer a %s, el JID no és vàlid"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "No s'ha pogut enviar el fitxer a %s, l'usuari no està connectat"
+
+# FIXME: uh?
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr ""
+"No s'ha pogut enviar el fitxer a %s, no esteu subscrit a la presència de "
+"l'usuari"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "Ha fallat el registre"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "Escolliu a quin recurs de %s voleu enviar un fitxer"
+
+msgid "Select a Resource"
+msgstr "Seleccioneu un recurs"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "Inicia un _xat"
msgid "config: Configure a chat room."
msgstr "config: configura la sala de xat."
@@ -4643,6 +4801,21 @@ msgstr "S'ha produït un error en entrar al xat %s"
msgid "Error in chat %s"
msgstr "S'ha produït un error en el xat %s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "S'ha produït un error en obrir el fitxer."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "Ha fallat la transferència del fitxer"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "No s'ha pogut obrir el fitxer «%s»: %s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4671,9 +4844,6 @@ msgstr ""
msgid "Please select the resource of %s to which you would like to send a file"
msgstr "Escolliu a quin recurs de %s voleu enviar un fitxer"
-msgid "Select a Resource"
-msgstr "Seleccioneu un recurs"
-
msgid "Edit User Mood"
msgstr "Edita l'estat d'ànim"
@@ -4708,9 +4878,6 @@ msgstr "Accions"
msgid "Select an action"
msgstr "Seleccioneu una acció"
-msgid "Unable to retrieve MSN Address Book"
-msgstr "No s'ha pogut obtindre la llibreta d'adreces MSN"
-
#. only notify the user about problems adding to the friends list
#. * maybe we should do something else for other lists, but it probably
#. * won't cause too many problems if we just ignore it
@@ -4951,7 +5118,6 @@ msgstr "Passaport per als nens sense consentiment patern"
msgid "Passport account not yet verified"
msgstr "El compte de passaport encara no està verificat"
-#, c-format
msgid "Passport account suspended"
msgstr "El compte de passaport s'ha suspès"
@@ -6185,7 +6351,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr "Error. No hi ha instal·lades les biblioteques per a SSL."
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr "S'ha tancat esta conferència. No s'hi poden enviar més missatges."
@@ -6451,23 +6616,18 @@ msgstr "Càmera"
msgid "Screen Sharing"
msgstr "Compartició de pantalla"
-#, c-format
msgid "Free For Chat"
msgstr "Lliure per parlar"
-#, c-format
msgid "Not Available"
msgstr "No disponible"
-#, c-format
msgid "Occupied"
msgstr "Ocupat"
-#, c-format
msgid "Web Aware"
msgstr "Conscient de la web"
-#, c-format
msgid "Invisible"
msgstr "Invisible"
@@ -6517,7 +6677,7 @@ msgstr ""
"començar amb una lletra i contindre només lletres, nombres o espais, o només "
"nombres."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr "El nom d'usuari no és vàlid"
@@ -6534,7 +6694,7 @@ msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr ""
"El servici de missatges instantanis d'AOL no està disponible temporalment."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6569,13 +6729,11 @@ msgstr "Introduïu el nombre de 6 dígits de la pantalla digital."
msgid "_OK"
msgstr "_D'acord"
-#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
+#, fuzzy, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
msgstr ""
-"Se us pot desconnectar d'ací a poc temps. Si voleu, podeu emprar TOC fins "
-"que això es resolgui. Comproveu si hi ha actualitzacions a %s."
+"Se us pot desconnectar d'ací a poc temps. Comproveu si hi ha actualitzacions "
+"a %s."
# FIXME: hash (josep)
msgid "Unable to get a valid AIM login hash."
@@ -6723,7 +6881,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] "Heu perdut %hu missatge de %s per motius desconeguts."
msgstr[1] "Heu perdut %hu missatges de %s per motius desconeguts."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "No s'ha pogut enviar el missatge: %s"
@@ -7033,6 +7191,7 @@ msgstr "C_onnecta"
msgid "Get AIM Info"
msgstr "Obtén informació d'AIM"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "Edita el comentari sobre l'amic"
@@ -7144,7 +7303,6 @@ msgstr ""
msgid "Attempting to connect to %s:%hu."
msgstr "S'està intentant connectar amb %s:%hu."
-#, c-format
msgid "Attempting to connect via proxy server."
msgstr "S'està intentant connectar a través d'un servidor intermediari."
@@ -7314,6 +7472,38 @@ msgstr "Actualitza"
msgid "Could not change buddy information."
msgstr "No s'ha pogut canviar la informació l'amic."
+msgid "Mobile"
+msgstr "Mòbil"
+
+msgid "Note"
+msgstr "Nota"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "Icona de l'amic"
+
+msgid "Change his/her memo as you like"
+msgstr ""
+
+#, fuzzy
+msgid "_Modify"
+msgstr "Modifica"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "Modifica"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "El servidor està ocupat"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
#, c-format
msgid "%u requires verification"
msgstr "Cal verificació per a %u"
@@ -7628,6 +7818,13 @@ msgstr "<p><b>Encantadors apedaçadors (de codi)</b>:<br>\n"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<p><b>Reconeixement</b>:<br>\n"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<p><b>Autor original</b>:<br>\n"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
# FIXME: ush... traducció lliure...
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr "<p><i>I tothom que ho ha fet possible...<i><br>\n"
@@ -7654,6 +7851,10 @@ msgstr "Actualitza tots els Quns QQ"
msgid "About OpenQ"
msgstr "Quant a l'OpenQ"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Modifica l'adreça"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7691,6 +7892,9 @@ msgstr "Mostra els avisos del servidor"
msgid "Show server news"
msgstr "Mostra les notícies del servidor"
+msgid "Show chat room when msg comes"
+msgstr ""
+
# FIXME: keep alive -> permanència
msgid "Keep alive interval (seconds)"
msgstr "Interval de permanència (en segons)"
@@ -7761,7 +7965,6 @@ msgstr ""
"No s'ha reconegut el codi de resposta en entrar (0x%02X):\n"
"%s"
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "No s'ha pogut connectar."
@@ -8667,9 +8870,6 @@ msgstr "Organització"
msgid "Unit"
msgstr "Unitat"
-msgid "Note"
-msgstr "Nota"
-
msgid "Join Chat"
msgstr "Entra a un xat"
@@ -9328,6 +9528,10 @@ msgstr "No s'ha pogut resoltre el nom de l'ordinador"
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr "Els noms d'usuari SIP no poden contindre espais en blanc ni @"
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "Mostra els avisos del servidor"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -9362,200 +9566,14 @@ msgid "Auth Domain"
msgstr "Domini Auth"
#, c-format
-msgid "Looking up %s"
-msgstr "S'està cercant %s"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Ha fallat la connexió a %s"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Entrada: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "No s'ha pogut escriure el fitxer %s."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "No s'ha pogut llegir el fitxer %s."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "El missatge és massa llarg, s'han retallat els darrers %s octets."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s no està connectat."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "Avís de %s no permés."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr ""
-"S'ha ignorat un missatge. Esteu excedint el límit de velocitat del servidor."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "El xat a %s no està disponible."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "Esteu enviant missatges massa de pressa a %s."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "Us heu perdut un missatge instantani de %s perquè era massa gran."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr ""
-"Heu perdut un missatge instantani de %s perquè s'ha enviat massa de pressa."
-
-#, c-format
-msgid "Failure."
-msgstr "Fallada."
-
-#, c-format
-msgid "Too many matches."
-msgstr "Massa coincidències."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "Es necessiten més qualificadors."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "Servici de directori no disponible temporalment."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "Recerca per adreça de correu electrònic restringida."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "S'ha ignorat la paraula clau."
-
-#, c-format
-msgid "No keywords."
-msgstr "No hi ha paraules clau."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "L'usuari no té informació al directori."
-
-# FIXME
-#, c-format
-msgid "Country not supported."
-msgstr "Este país no està disponible."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Fallada desconeguda: %s."
-
-#, c-format
-msgid "Incorrect username or password."
-msgstr "El nom d'usuari o la contrasenya no són correctes."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "El servici està temporalment no disponible."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "El vostre nivell d'avisos és massa alt per a connectar-se."
-
-#, 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 ""
-"Us heu estat connectant i desconnectant amb massa freqüència. Espereu deu "
-"minuts i torneu-ho a provar. Si continueu intentant-ho, haureu d'esperar "
-"encara més."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "Hi ha hagut un error de connexió desconegut: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "S'ha produït un error desconegut, %d. Informació: %s"
-
-msgid "Invalid Groupname"
-msgstr "El nom del grup no és vàlid"
-
-msgid "Connection Closed"
-msgstr "Connexió tancada"
-
-msgid "Waiting for reply..."
-msgstr "S'està esperant una resposta..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "TOC ha tornat de la pausa. Ja podeu enviar missatges de nou."
-
-msgid "Password Change Successful"
-msgstr "S'ha canviat la contrasenya amb èxit"
-
-msgid "_Group:"
-msgstr "_Grup:"
-
-msgid "Get Dir Info"
-msgstr "Aconseguix informació del directori"
-
-msgid "Set Dir Info"
-msgstr "Establix informació del directori"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "No s'ha pogut obrir %s per a escriure-hi."
-
-msgid "File transfer failed; other side probably canceled."
-msgstr ""
-"Ha fallat la transferència de fitxers. Probablement s'ha cancel·lat a "
-"l'altra banda."
-
-msgid "Could not connect for transfer."
-msgstr "No s'ha pogut connectar per realitzar la transferència."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "No s'ha pogut escriure la capçalera del fitxer. No s'enviarà."
-
-msgid "Save As..."
-msgstr "Anomena i alça..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s demana a %s que accepti %d fitxer: %s (%.2f %s)%s%s"
-msgstr[1] "%s demana a %s que accepti %d fitxers: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s us demana que li envieu un fitxer"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "Connector per al protocol TOC"
-
-#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
"%s us ha enviat una invitació a la seua càmera web, però això encara no està "
"implementat."
+msgid "Your SMS was not delivered"
+msgstr ""
+
msgid "Your Yahoo! message did not get sent."
msgstr "No s'ha pogut enviar el vostre missatge de Yahoo!"
@@ -10164,9 +10182,6 @@ msgstr "No molesteu"
msgid "Extended away"
msgstr "Absent durant una bona estona"
-msgid "Mobile"
-msgstr "Mòbil"
-
# És un estat, com "fora de línia", etc. (josep)
msgid "Listening to music"
msgstr "Escoltant música"
@@ -10209,18 +10224,6 @@ msgstr "+++ %s ja no està inactiu"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "S'ha produït un error en llegir %s"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"S'ha produït un error en llegir el vostre %s. No s'han carregat, i s'ha "
-"canviat el nom del fitxer per %s~."
-
msgid "Calculating..."
msgstr "S'està calculant..."
@@ -10297,6 +10300,13 @@ msgstr "S'ha produït un error en escriure a %s: %s."
msgid "Unable to connect to %s: %s"
msgstr "No s'ha pogut connectar a %s: %s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+"El servidor requerix TLS/SSL per entrar. No s'ha trobat suport per a TLS/SSL."
+
#, c-format
msgid " - %s"
msgstr " - %s"
@@ -10330,6 +10340,18 @@ msgstr "S'ha refusat la connexió."
msgid "Address already in use."
msgstr "Esta adreça ja s'està fent servir"
+#, c-format
+msgid "Error Reading %s"
+msgstr "S'ha produït un error en llegir %s"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"S'ha produït un error en llegir el vostre %s. No s'han carregat, i s'ha "
+"canviat el nom del fitxer per %s~."
+
msgid "Internet Messenger"
msgstr "Missatger d'Internet"
@@ -10372,10 +10394,8 @@ msgstr "_Notifica si hi ha correu nou"
msgid "Use this buddy _icon for this account:"
msgstr "Utilitza esta _icona d'amic per a este compte:"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "Opcions de %s"
+msgid "_Advanced"
+msgstr "_Avançat"
msgid "Use GNOME Proxy Settings"
msgstr "Empra la configuració del servidor intermediari del Gnome"
@@ -10410,9 +10430,6 @@ msgstr "Si mireu de ben a prop"
msgid "you can see the butterflies mating"
msgstr "podreu veure les papallones aparellant-se"
-msgid "Proxy Options"
-msgstr "Opcions del servidor intermediari"
-
msgid "Proxy _type:"
msgstr "_Tipus de servidor intermediari"
@@ -10440,8 +10457,9 @@ msgstr "_Bàsic"
msgid "Create _this new account on the server"
msgstr "Crea _aquest compte nou al servidor"
-msgid "_Advanced"
-msgstr "_Avançat"
+#, fuzzy
+msgid "_Proxy"
+msgstr "Servidor intermediari"
msgid "Enabled"
msgstr "Habilitat"
@@ -10520,6 +10538,17 @@ msgstr "_Informació"
msgid "I_M"
msgstr "_MI"
+#, fuzzy
+msgid "_Audio Call"
+msgstr "Finalitza la trucada"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Xat de vídeo"
+
msgid "_Send File..."
msgstr "_Envia un fitxer..."
@@ -10655,6 +10684,10 @@ msgstr "/Eines/_Avís per a amics"
msgid "/Tools/_Certificates"
msgstr "/Eines/C_ertificats"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Eines/Em_oticona"
+
msgid "/Tools/Plu_gins"
msgstr "/Eines/_Connectors"
@@ -10664,9 +10697,6 @@ msgstr "/Eines/Pre_ferències"
msgid "/Tools/Pr_ivacy"
msgstr "/Eines/_Privadesa"
-msgid "/Tools/Smile_y"
-msgstr "/Eines/Em_oticona"
-
msgid "/Tools/_File Transfers"
msgstr "/Eines/_Transferència de fitxers"
@@ -10784,8 +10814,8 @@ msgstr "Manualment"
msgid "By status"
msgstr "Per estat"
-msgid "By log size"
-msgstr "Per la grandària del registre"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10801,6 +10831,9 @@ msgstr "Torna a connectar"
msgid "Re-enable"
msgstr "Rehabilita"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr "Ben tornat!"
@@ -10889,6 +10922,9 @@ msgstr ""
msgid "A_lias:"
msgstr "Àl_ies:"
+msgid "_Group:"
+msgstr "_Grup:"
+
msgid "Auto_join when account becomes online."
msgstr "_Entra automàticament quant el compte estiga connectat."
@@ -10939,14 +10975,6 @@ msgstr "No esteu connectat amb cap protocol que permeta convidar este amic."
msgid "Invite Buddy Into Chat Room"
msgstr "Convida l'amic a una sala de xat"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Introduïu el nom de l'usuari que vulgueu convidar, així com un missatge "
-"d'invitació opcional."
-
msgid "_Buddy:"
msgstr "_Amic:"
@@ -11022,6 +11050,22 @@ msgstr "/Conversa/Anomena i al_ça..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Conversa/_Neteja la finestra"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Conversa/_Més"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Conversa/_Més"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Conversa/_Més"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Conversa/Visualitza el _registre"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Conversa/Envia un _fitxer..."
@@ -11094,6 +11138,18 @@ msgstr "/Conversa"
msgid "/Conversation/View Log"
msgstr "/Conversa/Visualitza el registre"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Conversa/Més"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Conversa/Visualitza el registre"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Conversa/Més"
+
msgid "/Conversation/Send File..."
msgstr "/Conversa/Envia un fitxer..."
@@ -11280,6 +11336,9 @@ msgstr "artista"
msgid "Ka-Hing Cheung"
msgstr "Ka-Hing Cheung"
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "suport"
@@ -11422,6 +11481,10 @@ msgstr "Georgià"
msgid "Ubuntu Georgian Translators"
msgstr "Traductors al georgià de l'Ubuntu"
+#, fuzzy
+msgid "Khmer"
+msgstr "Altres"
+
msgid "Kannada"
msgstr "Kannada"
@@ -11443,6 +11506,10 @@ msgstr "Lituà"
msgid "Macedonian"
msgstr "Macedoni"
+#, fuzzy
+msgid "Mongolian"
+msgstr "Macedoni"
+
msgid "Bokmål Norwegian"
msgstr "Noruec bokmål"
@@ -11561,7 +11628,24 @@ msgstr ""
"<BR><BR>"
#, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, fuzzy, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin a irc.freenode.net<BR><BR>"
+
+#, fuzzy, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin a irc.freenode.net<BR><BR>"
msgid "Current Developers"
@@ -11875,15 +11959,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr "Habilita les notificacions de que s'està escrivint"
-msgid "_Copy Email Address"
-msgstr "_Copia l'adreça de correu"
-
-msgid "_Open Link in Browser"
-msgstr "_Obri l'enllaç en el navegador"
-
-msgid "_Copy Link Location"
-msgstr "_Copia la ubicació de l'enllaç"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12135,13 +12210,14 @@ msgstr "_Navega la carpeta dels registres"
msgid "%s %s. Try `%s -h' for more information.\n"
msgstr "%s %s. Proveu «%s -h» per a més informació.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12167,13 +12243,14 @@ msgstr ""
" --display=PANTALLA pantalla X a utilitzar\n"
" -v, --version mostra la versió actual i ix\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12231,11 +12308,27 @@ msgstr ""
msgid "Pidgin"
msgstr "Pidgin"
-msgid "Open All Messages"
-msgstr "Obri tots els missatges"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Teniu correu electrònic.</span>"
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "S'està calculant..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -12265,6 +12358,27 @@ msgid ""
msgstr ""
"S'ha triat l'orde per al navegador «manualment», però no se n'ha indicat cap."
+msgid "Open All Messages"
+msgstr "Obri tots els missatges"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Teniu correu electrònic.</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "Avís nou per a l'amic"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Teniu correu electrònic.</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "(1 missatge)"
+
msgid "The following plugins will be unloaded."
msgstr "Es descarregaran els connectors següents."
@@ -12313,6 +12427,10 @@ msgstr "<b>Detalls del connector</b>"
msgid "Select a file"
msgstr "Seleccioneu un fitxer"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Edita l'avís per a l'amic"
+
# FIXME
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
@@ -12388,6 +12506,50 @@ msgstr "_Recurrent"
msgid "Pounce Target"
msgstr "Objectiu de l'avís"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "Comence a escriure"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "S'ature mentre tecleja"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "Es connecte"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "Tor_na a estar actiu"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "Torne a estar present"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "Pare d'escriure"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "Es desconnecte"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "Passe a inactiu"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "En estar absent"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Envia un missatge"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "Esdeveniment d'avís desconegut, informeu-nos-en."
+
msgid "Smiley theme failed to unpack."
msgstr "No s'ha pogut desempaquetar el tema d'emoticones."
@@ -12410,6 +12572,12 @@ msgstr "Dreceres de teclat"
msgid "Cl_ose conversations with the Escape key"
msgstr "Tanca les converses amb la tecla d'_escapament"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Llista d'amics"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "Icona d'estat"
@@ -12522,9 +12690,6 @@ msgstr ""
msgid "Cannot start browser configuration program."
msgstr "No s'ha pogut iniciar el programa de configuració del navegador."
-msgid "ST_UN server:"
-msgstr "Servidor ST_UN:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">Exemple: stunserver.org</span>"
@@ -12549,6 +12714,10 @@ msgstr "Port _inicial:"
msgid "_End port:"
msgstr "Port _final:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr "Servidor intermediari i navegador"
@@ -12579,6 +12748,10 @@ msgstr "Servidor intermediari"
msgid "No proxy"
msgstr "Sense servidor intermediari"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "_Usuari:"
@@ -12737,12 +12910,12 @@ msgstr "En estar absent i inactiu alhora"
msgid "Auto-away"
msgstr "Auto-absència"
-msgid "Change status when _idle"
-msgstr "_Canvia l'estat quan estiga inactiu"
-
msgid "_Minutes before becoming idle:"
msgstr "_Minuts abans de passar a inactiu:"
+msgid "Change status when _idle"
+msgstr "_Canvia l'estat quan estiga inactiu"
+
msgid "Change _status to:"
msgstr "Canvia l'_estat a:"
@@ -12891,6 +13064,12 @@ msgstr "Alça i _fes servir"
msgid "Status for %s"
msgstr "Estat per a %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
msgid "Custom Smiley"
msgstr "Emoticona personalitzada"
@@ -12900,16 +13079,16 @@ msgstr "Calen més dades"
msgid "Please provide a shortcut to associate with the smiley."
msgstr "Especifiqueu una drecera associada a l'emoticona."
-msgid "Duplicate Shortcut"
-msgstr "Drecera duplicada"
-
+#, fuzzy, c-format
msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
+"A custom smiley for '%s' already exists. Please use a different shortcut."
msgstr ""
"Hi ha una emoticona personalitzada per la drecera que heu seleccionat. "
"Indiqueu-ne una de diferent."
+msgid "Duplicate Shortcut"
+msgstr "Drecera duplicada"
+
msgid "Please select an image for the smiley."
msgstr "Seleccioneu una imatge per a l'emoticona."
@@ -12919,16 +13098,22 @@ msgstr "Edita l'emoticona"
msgid "Add Smiley"
msgstr "Afig una emoticona"
-msgid "Smiley _Image"
-msgstr "_Imatge de l'emoticona"
+#, fuzzy
+msgid "_Image:"
+msgstr "_Imatge"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr "_Dreceres de l'emoticona"
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "Drecera"
msgid "Smiley"
msgstr "Emoticona"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "Drecera"
+
msgid "Custom Smiley Manager"
msgstr "Gestor d'emoticones personalitzades"
@@ -13056,6 +13241,16 @@ msgstr ""
"No s'ha pogut carregar la imatge «%s»: no se'n coneix el motiu, possiblement "
"la imatge estiga corrompuda"
+#, fuzzy
+msgid "_Open Link"
+msgstr "_Obri la ubicació de l'enllaç a:"
+
+msgid "_Copy Link Location"
+msgstr "_Copia la ubicació de l'enllaç"
+
+msgid "_Copy Email Address"
+msgstr "_Copia l'adreça de correu"
+
msgid "Save File"
msgstr "Alça un fitxer"
@@ -14040,9 +14235,6 @@ msgstr "_Conserva la finestra d'amics per sobre:"
msgid "Only when docked"
msgstr "Només si està acoblada"
-msgid "_Flash window when chat messages are received"
-msgstr "_Fes que la finestra parpellege quan arriben missatges de xat"
-
msgid "Windows Pidgin Options"
msgstr "Opcions del Pidgin per al Windows"
@@ -14093,6 +14285,198 @@ msgstr "Envia i rep blocs XMPP en brut."
msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr "Este connector és útil per a depurar servidors i clients XMPP."
+#~ msgid "Invite message"
+#~ msgstr "Missatge d'invitació"
+
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Introduïu el nom de l'usuari que vulgueu convidar,\n"
+#~ "així com un missatge d'invitació opcional."
+
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "No s'ha pogut obtindre la llibreta d'adreces MSN"
+
+#~ msgid ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+#~ msgstr ""
+#~ "Se us pot desconnectar d'ací a poc temps. Si voleu, podeu emprar TOC fins "
+#~ "que això es resolgui. Comproveu si hi ha actualitzacions a %s."
+
+#~ msgid "Looking up %s"
+#~ msgstr "S'està cercant %s"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "Ha fallat la connexió a %s"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Entrada: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "No s'ha pogut escriure el fitxer %s."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "No s'ha pogut llegir el fitxer %s."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "El missatge és massa llarg, s'han retallat els darrers %s octets."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s no està connectat."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "Avís de %s no permés."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr ""
+#~ "S'ha ignorat un missatge. Esteu excedint el límit de velocitat del "
+#~ "servidor."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "El xat a %s no està disponible."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "Esteu enviant missatges massa de pressa a %s."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "Us heu perdut un missatge instantani de %s perquè era massa gran."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr ""
+#~ "Heu perdut un missatge instantani de %s perquè s'ha enviat massa de "
+#~ "pressa."
+
+#~ msgid "Failure."
+#~ msgstr "Fallada."
+
+#~ msgid "Too many matches."
+#~ msgstr "Massa coincidències."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "Es necessiten més qualificadors."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "Servici de directori no disponible temporalment."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "Recerca per adreça de correu electrònic restringida."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "S'ha ignorat la paraula clau."
+
+#~ msgid "No keywords."
+#~ msgstr "No hi ha paraules clau."
+
+#~ msgid "User has no directory information."
+#~ msgstr "L'usuari no té informació al directori."
+
+# FIXME
+#~ msgid "Country not supported."
+#~ msgstr "Este país no està disponible."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Fallada desconeguda: %s."
+
+#~ msgid "Incorrect username or password."
+#~ msgstr "El nom d'usuari o la contrasenya no són correctes."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "El servici està temporalment no disponible."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "El vostre nivell d'avisos és massa alt per a connectar-se."
+
+#~ 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 ""
+#~ "Us heu estat connectant i desconnectant amb massa freqüència. Espereu deu "
+#~ "minuts i torneu-ho a provar. Si continueu intentant-ho, haureu d'esperar "
+#~ "encara més."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "Hi ha hagut un error de connexió desconegut: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "S'ha produït un error desconegut, %d. Informació: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "El nom del grup no és vàlid"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Connexió tancada"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "S'està esperant una resposta..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "TOC ha tornat de la pausa. Ja podeu enviar missatges de nou."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "S'ha canviat la contrasenya amb èxit"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Aconseguix informació del directori"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Establix informació del directori"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "No s'ha pogut obrir %s per a escriure-hi."
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr ""
+#~ "Ha fallat la transferència de fitxers. Probablement s'ha cancel·lat a "
+#~ "l'altra banda."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "No s'ha pogut connectar per realitzar la transferència."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "No s'ha pogut escriure la capçalera del fitxer. No s'enviarà."
+
+#~ msgid "Save As..."
+#~ msgstr "Anomena i alça..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s demana a %s que accepti %d fitxer: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s demana a %s que accepti %d fitxers: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s us demana que li envieu un fitxer"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "Connector per al protocol TOC"
+
+#~ msgid "%s Options"
+#~ msgstr "Opcions de %s"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Opcions del servidor intermediari"
+
+#~ msgid "By log size"
+#~ msgstr "Per la grandària del registre"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_Obri l'enllaç en el navegador"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "Servidor ST_UN:"
+
+#~ msgid "Smiley _Image"
+#~ msgstr "_Imatge de l'emoticona"
+
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "_Dreceres de l'emoticona"
+
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "_Fes que la finestra parpellege quan arriben missatges de xat"
+
#~ msgid "Connection to server lost (no data received within %d second)"
#~ msgid_plural ""
#~ "Connection to server lost (no data received within %d seconds)"
@@ -14787,9 +15171,6 @@ msgstr "Este connector és útil per a depurar servidors i clients XMPP."
#~ "\n"
#~ "Inactiu: %s"
-#~ msgid "Nickname: %s\n"
-#~ msgstr "Sobrenom: %s\n"
-
#~ msgid ""
#~ "\n"
#~ "<b>Nickname:</b> %s"
@@ -15261,9 +15642,6 @@ msgstr "Este connector és útil per a depurar servidors i clients XMPP."
#~ msgid "Call ended."
#~ msgstr "Ha finalitzat la trucada."
-#~ msgid "End Call"
-#~ msgstr "Finalitza la trucada"
-
#~ msgid "Receiving call from %s"
#~ msgstr "S'està rebent una trucada de %s"
@@ -15432,9 +15810,6 @@ msgstr "Este connector és útil per a depurar servidors i clients XMPP."
#~ msgid "_Idle"
#~ msgstr "_Inactiu"
-#~ msgid "Retur_n from idle"
-#~ msgstr "Tor_na a estar actiu"
-
#~ msgid "Bro_wse..."
#~ msgstr "Na_vega..."
@@ -15495,9 +15870,6 @@ msgstr "Este connector és útil per a depurar servidors i clients XMPP."
#~ msgstr[0] "(%d missatge)"
#~ msgstr[1] "(%d missatges)"
-#~ msgid "(1 message)"
-#~ msgstr "(1 missatge)"
-
#~ msgid "_Hide new messages until tray icon is clicked"
#~ msgstr ""
#~ "_Oculta els missatges nous fins que no es faci clic a la icona d'estat"
diff --git a/po/cs.po b/po/cs.po
index 7cc1ca11f2..256f741040 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pidgin VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-22 11:04-0500\n"
+"POT-Creation-Date: 2009-04-30 10:37-0400\n"
"PO-Revision-Date: 2009-02-22 14:43+0100\n"
"Last-Translator: David Vachulka <david@konstrukce-cad.com>\n"
"Language-Team: Czech <cs@li.org>\n"
@@ -605,19 +605,6 @@ msgstr ""
msgid "Send To"
msgstr "Odeslat do"
-msgid "Invite message"
-msgstr "Zvací zpráva"
-
-msgid "Invite"
-msgstr "Pozvat"
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Zadejte prosím jméno uživatele, kterého chcete pozvat,\n"
-"a nepovinně i zvací zprávu."
-
msgid "Conversation"
msgstr "Konverzace"
@@ -873,6 +860,41 @@ msgstr "Všechny konverzace"
msgid "System Log"
msgstr "Systémový záznam"
+#, fuzzy
+msgid "Calling ... "
+msgstr "Počítám..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "Přijmout"
+
+msgid "Reject"
+msgstr "Odmítnout"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "Opustili jste kanál%s%s"
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "Emaily"
@@ -908,6 +930,9 @@ msgstr "Pokračovat"
msgid "IM"
msgstr "IM"
+msgid "Invite"
+msgstr "Pozvat"
+
msgid "(none)"
msgstr "(žádné)"
@@ -1111,7 +1136,6 @@ msgstr "%s šel pryč. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s vám poslal zprávu. (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "Neznámá událost sledování. Oznamte to prosím!"
@@ -1520,6 +1544,28 @@ msgstr "GntLastlog"
msgid "Lastlog plugin."
msgstr "Zásuvný modul posledního záznamu."
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "účty"
@@ -1620,13 +1666,6 @@ msgstr "Přijmout certifikát pro %s?"
msgid "SSL Certificate Verification"
msgstr "SSL verifikace certifikátu"
-#. Number of actions
-msgid "Accept"
-msgstr "Přijmout"
-
-msgid "Reject"
-msgstr "Odmítnout"
-
msgid "_View Certificate..."
msgstr "Zobrazit certifikát..."
@@ -1770,6 +1809,18 @@ msgstr "%s opustil místnost."
msgid "%s left the room (%s)."
msgstr "%s opustil místnost (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Pozvat ke konferenci"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Zadejte prosím jméno uživatele, kterého chcete pozvat, a nepovinně i zvací "
+"zprávu."
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "Nemohu získat spojení: %s"
@@ -2597,6 +2648,32 @@ msgstr "Ukládat zprávy při odpojení do sledování"
msgid "Do not ask. Always save in pounce."
msgstr "Neptat se. Vždy uložit do sledování."
+#, fuzzy
+msgid "One Time Password"
+msgstr "Zadejte heslo"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2996,6 +3073,7 @@ msgstr "Vyberte chat pro kamaráda: %s"
msgid "Add to chat..."
msgstr "Přidat k chatu..."
+#. Global
msgid "Available"
msgstr "Přítomen"
@@ -3342,6 +3420,17 @@ msgstr ""
"Vámi zvolený název účtu byl serverem odmítnut. Pravděpodobně obsahuje "
"neplatné znaky."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "Tento název chatu se již používá"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Přezdívka"
+
msgid "Cannot change nick"
msgstr "Nemohu změnit přezdívku"
@@ -3613,6 +3702,41 @@ msgstr "Neplatná výzva od serveru"
msgid "SASL error"
msgstr "Chyba SASL"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "Neudán žádný důvod"
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Nepodporovaná verze"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"Nemohu navázat spojení se serverem:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"Nemohu navázat spojení se serverem:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "Nemohu inicializovat spojení"
+
+msgid "Unable to create socket"
+msgstr "Nemohu vytvořit socket"
+
+msgid "Write error"
+msgstr "Chyba zápisu"
+
msgid "Full Name"
msgstr "Celé jméno"
@@ -3678,6 +3802,10 @@ msgstr "Klient"
msgid "Operating System"
msgstr "Operační systém"
+#, fuzzy
+msgid "Local Time"
+msgstr "Místní soubor:"
+
msgid "Last Activity"
msgstr "Poslední aktivita"
@@ -4006,9 +4134,6 @@ msgstr "Hledat místnosti"
msgid "You require encryption, but it is not available on this server."
msgstr "Vyžadujete šifrování, ale to není na serveru dostupné."
-msgid "Write error"
-msgstr "Chyba zápisu"
-
msgid "Ping timeout"
msgstr "Ping timeout"
@@ -4017,14 +4142,9 @@ msgstr "Chyba čtení"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"Nemohu navázat spojení se serverem:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "Nemohu vytvořit socket"
msgid "Invalid XMPP ID"
msgstr "Neplatné ID XMPP"
@@ -4032,6 +4152,10 @@ msgstr "Neplatné ID XMPP"
msgid "Invalid XMPP ID. Domain must be set."
msgstr "Neplatné ID XMPP. Musí být nastavena doména."
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Nemohu se připojit k serveru."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "Registrace %s@%s úspěšná"
@@ -4122,6 +4246,12 @@ msgstr "Server nepodporuje blokování"
msgid "Not Authorized"
msgstr "Neautorizován"
+msgid "Mood"
+msgstr "Nálada"
+
+msgid "Now Listening"
+msgstr "teď poslouchá"
+
msgid "Both"
msgstr "Obojí"
@@ -4143,12 +4273,6 @@ msgstr "Žádné"
msgid "Subscription"
msgstr "Přihlášení"
-msgid "Mood"
-msgstr "Nálada"
-
-msgid "Now Listening"
-msgstr "teď poslouchá"
-
msgid "Mood Text"
msgstr "Text nálady"
@@ -4386,18 +4510,24 @@ msgstr "Nemohu vykopnout uživatele %s"
msgid "Unable to ping user %s"
msgstr "Nemohu pingnout uživatele %s"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr "Nemohu budit, protože není nic známo o uživateli %s."
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr "Nemohu budit, protože uživatel %s je asi odpojen."
-#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+#, fuzzy, c-format
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "Nemohu vzbudit, protože uživatel %s to nepodporuje."
+#, c-format
+msgid "Buzzing %s..."
+msgstr "Buzení %s..."
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
msgid "Buzz"
@@ -4407,9 +4537,34 @@ msgstr "Buzení"
msgid "%s has buzzed you!"
msgstr "%s vás budí!"
-#, c-format
-msgid "Buzzing %s..."
-msgstr "Buzení %s..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "Nemohu odeslat zprávu k %s, neplatné JID"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "Nemohu odeslat soubor %s, uživatel není připojen"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr "Nemohu odeslat soubor %s, nepřihlášen k přítomnosti uživatele"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "Registrace selhala"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "Zvolte prosím zdroj %s, kterému chcete odeslat soubor"
+
+msgid "Select a Resource"
+msgstr "Zvolte zdroj"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "Začít _chat"
msgid "config: Configure a chat room."
msgstr "config: Nastavit místnost chatu."
@@ -4565,6 +4720,21 @@ msgstr "Chyba při připojování k chatu %s"
msgid "Error in chat %s"
msgstr "Chyba v chatu %s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "Při otevírání souboru došlo k chybě."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "Přenos souborů selhal"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Nemohu otevřít soubor '%s': %s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr "Nemohu odeslat soubor %s, uživatel nepodporuje přenosy souborů"
@@ -4588,9 +4758,6 @@ msgstr "Nemohu odeslat soubor %s, nepřihlášen k přítomnosti uživatele"
msgid "Please select the resource of %s to which you would like to send a file"
msgstr "Zvolte prosím zdroj %s, kterému chcete odeslat soubor"
-msgid "Select a Resource"
-msgstr "Zvolte zdroj"
-
msgid "Edit User Mood"
msgstr "Upravit náladu uživatele"
@@ -6390,7 +6557,7 @@ msgstr ""
"písmenem a obsahovat jen číslice, písmena a mezery, nebo obsahovat jen "
"číslice."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr "Neplatné jméno uživatele."
@@ -6406,7 +6573,7 @@ msgstr "Váš účet je momentálně suspendován."
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "Služba AOL Instant Messenger je dočasně nedostupná."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6608,7 +6775,7 @@ msgstr[0] "Přišli jste o %hu zprávu od %s z neznámého důvodu."
msgstr[1] "Přišli jste o %hu zprávy od %s z neznámého důvodu."
msgstr[2] "Přišli jste o %hu zpráv od %s z neznámého důvodu."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "Nemohu odeslat zprávu: %s"
@@ -7200,6 +7367,38 @@ msgstr "Update"
msgid "Could not change buddy information."
msgstr "Nemohu změnit informace o kamarádovi."
+msgid "Mobile"
+msgstr "Mobilní"
+
+msgid "Note"
+msgstr "Poznámka"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "Ikona kamaráda"
+
+msgid "Change his/her memo as you like"
+msgstr ""
+
+#, fuzzy
+msgid "_Modify"
+msgstr "Změnit"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "Změnit"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "Server zaneprázdněn"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
#, c-format
msgid "%u requires verification"
msgstr "%u vyžaduje ověření"
@@ -7508,6 +7707,13 @@ msgstr "<p><b>Autoři patchů</b>:<br>\n"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<p><b>Potvrzení</b>:<br>\n"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<p><b>Originální autor</b>:<br>\n"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr "<p><i>A všichni v pozadí...</i><br>\n"
@@ -7533,6 +7739,10 @@ msgstr "Updatovat všechny QQ Qun"
msgid "About OpenQ"
msgstr "O OpenQ"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Změnit adresu"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7640,7 +7850,6 @@ msgstr ""
"Neznámý kód odpovědi, při přihlášení (0x%02X):\n"
"%s"
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "Nemohu se připojit."
@@ -8542,9 +8751,6 @@ msgstr "Organizace"
msgid "Unit"
msgstr "Jednotka"
-msgid "Note"
-msgstr "Poznámka"
-
msgid "Join Chat"
msgstr "Připojit se k chatu"
@@ -9231,193 +9437,12 @@ msgid "Auth Domain"
msgstr "Doména autentizace"
#, c-format
-msgid "Looking up %s"
-msgstr "Vyhledávám %s"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Spojení k %s selhalo"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Přihlásit: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "Nemohu zapsat soubor %s."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "Nemohu číst soubor %s."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "Zpráva příliš dlouhá, posledních %s bajtů useknuto."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s není momentálně přihlášen."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "Varování %s není povoleno."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "Zpráva byla zahozena, překračujete limit rychlosti serveru."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "Chat v %s není dostupný."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "Odesíláte zprávy pro %s příliš rychle."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "Přišli jste IM od %s, protože byla příliš dlouhá."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "Přišli jste o IM %s, protože byla odeslána příliš rychle."
-
-#, c-format
-msgid "Failure."
-msgstr "Selhání."
-
-#, c-format
-msgid "Too many matches."
-msgstr "Příliš mnoho odpovědí."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "Potřebuji více kvalifikátorů."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "Adresářová služba momentálně není k dispozici."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "Vyhledávání podle emailu omezeno."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "Klíčové slovo ignorováno."
-
-#, c-format
-msgid "No keywords."
-msgstr "Žádné klíčové slovo."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "Uživatel nemá žádné informace v adresáři."
-
-#, c-format
-msgid "Country not supported."
-msgstr "Země není podporována."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Neznámé selhání: %s."
-
-#, c-format
-msgid "Incorrect username or password."
-msgstr "Nesprávné jméno uživatele nebo heslo."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "Služba je dočasně nedostupná."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "Vaše úroveň výstrahy je momentálně příliš vysoká pro přihlášení."
-
-#, 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 ""
-"Připojovali a odpojovali jste se příliš často. Počkejte deset minut a zkuste "
-"to znovu. Pokud to budete dále zkoušet, budete muset čekat ještě déle."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "Došlo k neznámé chybě při přihlašování: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "Došlo k neznámé chybě, %d. Informace: %s"
-
-msgid "Invalid Groupname"
-msgstr "Neplatný název skupiny"
-
-msgid "Connection Closed"
-msgstr "Spojení uzavřeno"
-
-msgid "Waiting for reply..."
-msgstr "Čekám na odpověď..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "TOC se vrátil z přestávky. Nyní můžete zase odesílat zprávy."
-
-msgid "Password Change Successful"
-msgstr "Změna hesla úspěšná"
-
-msgid "_Group:"
-msgstr "_Skupina:"
-
-msgid "Get Dir Info"
-msgstr "Získat informace adresáře"
-
-msgid "Set Dir Info"
-msgstr "Nastavit informace adresáře"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "Nemohu otevřít %s pro zápis!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "Přenos souboru selhal; druhá strana jej pravděpodobně přerušila."
-
-msgid "Could not connect for transfer."
-msgstr "Nemohu se připojit pro přenos."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "Nemohu zapsat hlavičku souboru. Soubor nebude přenesen."
-
-msgid "Save As..."
-msgstr "Uložit jako..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s požaduje, aby %s přijal %d soubor: %s (%.2f %s)%s%s"
-msgstr[1] "%s požaduje, aby %s přijal %d soubory: %s (%.2f %s)%s%s"
-msgstr[2] "%s požaduje, aby %s přijal %d souborů: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s vás žádá, abyste jim poslali soubor"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "Zásuvný modul protokolu TOC"
-
-#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr "%s vám poslal pozvánku k WWW kameře, což ještě není podporováno."
+msgid "Your SMS was not delivered"
+msgstr ""
+
msgid "Your Yahoo! message did not get sent."
msgstr "Vaše zpráva Yahoo! nebyla odeslána."
@@ -10014,9 +10039,6 @@ msgstr "Nerušit"
msgid "Extended away"
msgstr "Pryč na dlouho"
-msgid "Mobile"
-msgstr "Mobilní"
-
msgid "Listening to music"
msgstr "Poslouchá muziku"
@@ -10058,18 +10080,6 @@ msgstr "+++ %s se stal činným"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "Chyba při čtení %s"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"Při čtení vašeho %s došlo k chybě. Nebylo načteno a starý soubor byl "
-"přejmenován na %s~."
-
msgid "Calculating..."
msgstr "Počítám..."
@@ -10150,6 +10160,12 @@ msgstr "Chyba při zápisu do %s: %s"
msgid "Unable to connect to %s: %s"
msgstr "Nemohu se připojit k %s: %s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr "Server pro přihlášení vyžaduje SSL. Nebyla nalezena podpora TLS/SSL."
+
#, c-format
msgid " - %s"
msgstr " - %s"
@@ -10183,6 +10199,18 @@ msgstr "Spojení odmítnuto."
msgid "Address already in use."
msgstr "Adresa se již používá"
+#, c-format
+msgid "Error Reading %s"
+msgstr "Chyba při čtení %s"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"Při čtení vašeho %s došlo k chybě. Nebylo načteno a starý soubor byl "
+"přejmenován na %s~."
+
msgid "Internet Messenger"
msgstr "Internet Messenger"
@@ -10225,10 +10253,8 @@ msgstr "_Upozornění na nové zprávy"
msgid "Use this buddy _icon for this account:"
msgstr "Používat pro tento účet tuto _ikonu kamaráda:"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "Nastavení %s"
+msgid "_Advanced"
+msgstr "_Pokročilé"
msgid "Use GNOME Proxy Settings"
msgstr "Používat nastavení proxy v GNOME"
@@ -10264,9 +10290,6 @@ msgstr "Pokud se podíváte opravdu zblízka,"
msgid "you can see the butterflies mating"
msgstr "můžete vidět, jak se motýli párují"
-msgid "Proxy Options"
-msgstr "Možnosti proxy"
-
msgid "Proxy _type:"
msgstr "_Typ proxy:"
@@ -10294,8 +10317,9 @@ msgstr "Zá_kladní"
msgid "Create _this new account on the server"
msgstr "Vytvořit _tento nový účet na serveru"
-msgid "_Advanced"
-msgstr "_Pokročilé"
+#, fuzzy
+msgid "_Proxy"
+msgstr "Proxy"
msgid "Enabled"
msgstr "Povoleno"
@@ -10373,6 +10397,17 @@ msgstr "_Info"
msgid "I_M"
msgstr "I_M"
+#, fuzzy
+msgid "_Audio Call"
+msgstr "_Přidat chat"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Video Chat"
+
msgid "_Send File..."
msgstr "_Odeslat soubor..."
@@ -10507,6 +10542,10 @@ msgstr "/Nástroje/_Sledování kamarádů"
msgid "/Tools/_Certificates"
msgstr "/Nástroje/_Certifikáty"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Nástroje/Smajlíky"
+
msgid "/Tools/Plu_gins"
msgstr "/Nástroje/_Zásuvné moduly"
@@ -10516,9 +10555,6 @@ msgstr "/Nástroje/_Nastavení"
msgid "/Tools/Pr_ivacy"
msgstr "/Nástroje/_Soukromí"
-msgid "/Tools/Smile_y"
-msgstr "/Nástroje/Smajlíky"
-
msgid "/Tools/_File Transfers"
msgstr "/Nástroje/_Přenosy souborů"
@@ -10637,8 +10673,8 @@ msgstr "Ručně"
msgid "By status"
msgstr "Podle stavu"
-msgid "By log size"
-msgstr "Podle velikosti záznamu"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10654,6 +10690,9 @@ msgstr "Znovu připojit"
msgid "Re-enable"
msgstr "Znovu povolit"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr "Vítej zpět!"
@@ -10741,6 +10780,9 @@ msgstr ""
msgid "A_lias:"
msgstr "_Alias:"
+msgid "_Group:"
+msgstr "_Skupina:"
+
msgid "Auto_join when account becomes online."
msgstr "Automaticky _připojit při připojení účtu."
@@ -10791,14 +10833,6 @@ msgstr "Nejste momentálně připojen s účtem, který může pozvat tohoto kam
msgid "Invite Buddy Into Chat Room"
msgstr "Pozvat kamaráda do místnosti chatu"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Zadejte prosím jméno uživatele, kterého chcete pozvat, a nepovinně i zvací "
-"zprávu."
-
msgid "_Buddy:"
msgstr "_Kamarád:"
@@ -10873,6 +10907,22 @@ msgstr "/Konverzace/_Uložit jako..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Konverzace/Vy_mazat paměť řádků"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Konverzace/_Více"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Konverzace/_Více"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Konverzace/_Více"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Konverzace/Zobrazit záz_nam"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Konverzace/Odeslat _soubor..."
@@ -10945,6 +10995,18 @@ msgstr "/Konverzace"
msgid "/Conversation/View Log"
msgstr "/Konverzace/Zobrazit záznam"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Konverzace/Více"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Konverzace/Zobrazit záznam"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Konverzace/Více"
+
msgid "/Conversation/Send File..."
msgstr "/Konverzace/Odeslat soubor..."
@@ -11128,6 +11190,9 @@ msgstr "umělec"
msgid "Ka-Hing Cheung"
msgstr "Ka-Hing Cheung"
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "podpora"
@@ -11267,6 +11332,10 @@ msgstr "Gruzínština"
msgid "Ubuntu Georgian Translators"
msgstr "Překladatelé Gruzínštiny z Ubuntu"
+#, fuzzy
+msgid "Khmer"
+msgstr "Jiné"
+
msgid "Kannada"
msgstr "Kannada"
@@ -11731,15 +11800,6 @@ msgstr "Font pro upozornění na psaní"
msgid "Enable typing notification"
msgstr "Povolit upozornění na psaní"
-msgid "_Copy Email Address"
-msgstr "_Kopírovat emailovou adresu"
-
-msgid "_Open Link in Browser"
-msgstr "_Otevřít odkaz v prohlížeči"
-
-msgid "_Copy Link Location"
-msgstr "_Kopírovat adresu odkazu"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -11984,13 +12044,14 @@ msgstr "_Procházet složku záznamů"
msgid "%s %s. Try `%s -h' for more information.\n"
msgstr "%s %s. Pro více informací zkuste `%s -h'.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12014,13 +12075,14 @@ msgstr ""
" --display=DISPLAY použít X obrazovku\n"
" -v, --version zobrazit aktuální verzi a skončit\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12079,11 +12141,23 @@ msgstr "Pidgin"
msgid "Exiting because another libpurple client is already running.\n"
msgstr "Exiting because another libpurple client is already running.\n"
-msgid "Open All Messages"
-msgstr "Otevřít všechny zprávy"
+msgid "/_Media"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Máte poštu!</span>"
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "Počítám..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -12114,6 +12188,27 @@ msgid ""
"The 'Manual' browser command has been chosen, but no command has been set."
msgstr "Byl zvolen 'Ruční' příkaz prohlížeče, ale nebyl nastaven žádný příkaz."
+msgid "Open All Messages"
+msgstr "Otevřít všechny zprávy"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Máte poštu!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "Nové sledování kamaráda"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Máte poštu!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "Neznámá zpráva"
+
msgid "The following plugins will be unloaded."
msgstr "Následující zásuvné moduly budou odebrány."
@@ -12160,6 +12255,10 @@ msgstr "<b>Podrobnosti o zásuvném modulu</b>"
msgid "Select a file"
msgstr "Zvolte soubor"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Upravit sledování kamaráda"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "Sledovat koho"
@@ -12230,6 +12329,50 @@ msgstr "_Opakující se"
msgid "Pounce Target"
msgstr "Cíl sledování"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "Začne psát"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "Zastaví se při psaní"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "Přihlásí se"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s se vrátil z nečinnosti (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "Vrátí se z nepřítomnosti"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "Přestane psát"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "Odhlásí se"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "Stane se nečinným"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "Při nepřítomnosti"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Odeslat zprávu"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "Neznámá událost sledování. Oznamte to prosím!"
+
msgid "Smiley theme failed to unpack."
msgstr "Téma smajlíků nelze rozbalit."
@@ -12252,6 +12395,12 @@ msgstr "Klávesové zkratky"
msgid "Cl_ose conversations with the Escape key"
msgstr "Za_vřít konverzaci klávesou Escape"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Seznam kamarádů"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "Ikona v panelu"
@@ -12362,9 +12511,6 @@ msgstr "Nemohu spustit program pro konfiguraci proxy."
msgid "Cannot start browser configuration program."
msgstr "Nemohu spustit konfiguraci prohlížeče."
-msgid "ST_UN server:"
-msgstr "Server ST_UN:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">Příklad: stunserver.org</span>"
@@ -12389,6 +12535,10 @@ msgstr "_Počáteční port:"
msgid "_End port:"
msgstr "_Koncový port:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr "Proxy server a prohlížeč"
@@ -12579,12 +12729,12 @@ msgstr "Při nepřítomnosti a nečinnosti"
msgid "Auto-away"
msgstr "Automatická nepřítomnost"
-msgid "Change status when _idle"
-msgstr "Změnit stav _při nečinnosti"
-
msgid "_Minutes before becoming idle:"
msgstr "_Minuty před nečinností:"
+msgid "Change status when _idle"
+msgstr "Změnit stav _při nečinnosti"
+
msgid "Change _status to:"
msgstr "Změnit _stav na:"
@@ -12733,6 +12883,12 @@ msgstr "Uložit _a použít"
msgid "Status for %s"
msgstr "Stav pro %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
msgid "Custom Smiley"
msgstr "Uživatelský smajlík"
@@ -12742,16 +12898,16 @@ msgstr "Je potřeba více dat"
msgid "Please provide a shortcut to associate with the smiley."
msgstr "Nastavte klávesovou zkratku asociovanou se smajlíkem."
-msgid "Duplicate Shortcut"
-msgstr "Duplikovat klávesovou zkratku"
-
+#, fuzzy, c-format
msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
+"A custom smiley for '%s' already exists. Please use a different shortcut."
msgstr ""
"Už existuje uživatelský smajlík pro vybranou klávesovou zkratku. "
"Specifikujte jinou."
+msgid "Duplicate Shortcut"
+msgstr "Duplikovat klávesovou zkratku"
+
msgid "Please select an image for the smiley."
msgstr "Prosím vyberte obrázek pro smajlík."
@@ -12761,16 +12917,22 @@ msgstr "Upravit smajlík"
msgid "Add Smiley"
msgstr "Přidat smajlík"
-msgid "Smiley _Image"
-msgstr "Obrázek _smajlíku"
+#, fuzzy
+msgid "_Image:"
+msgstr "_Obrázek"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr "Klávesové _zkratky smajlíků"
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "Klávesová zkratka"
msgid "Smiley"
msgstr "Smajlík"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "Klávesová zkratka"
+
msgid "Custom Smiley Manager"
msgstr "Správce smajlíků"
@@ -12894,6 +13056,16 @@ msgstr ""
"Nemohu načíst obrázek '%s': důvod není znám, pravděpodobně poškozený soubor "
"obrázku"
+#, fuzzy
+msgid "_Open Link"
+msgstr "_Otevřít odkaz v:"
+
+msgid "_Copy Link Location"
+msgstr "_Kopírovat adresu odkazu"
+
+msgid "_Copy Email Address"
+msgstr "_Kopírovat emailovou adresu"
+
msgid "Save File"
msgstr "Uložit soubor"
@@ -13902,6 +14074,179 @@ msgstr "Přijímat a odesílat přímo sekce XMPP."
msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr "Tento zásuvný modul je užitečný pro ladění serverů nebo klientů XMPP."
+#~ msgid "Invite message"
+#~ msgstr "Zvací zpráva"
+
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Zadejte prosím jméno uživatele, kterého chcete pozvat,\n"
+#~ "a nepovinně i zvací zprávu."
+
+#~ msgid "Looking up %s"
+#~ msgstr "Vyhledávám %s"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "Spojení k %s selhalo"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Přihlásit: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "Nemohu zapsat soubor %s."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "Nemohu číst soubor %s."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "Zpráva příliš dlouhá, posledních %s bajtů useknuto."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s není momentálně přihlášen."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "Varování %s není povoleno."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr "Zpráva byla zahozena, překračujete limit rychlosti serveru."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "Chat v %s není dostupný."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "Odesíláte zprávy pro %s příliš rychle."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "Přišli jste IM od %s, protože byla příliš dlouhá."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr "Přišli jste o IM %s, protože byla odeslána příliš rychle."
+
+#~ msgid "Failure."
+#~ msgstr "Selhání."
+
+#~ msgid "Too many matches."
+#~ msgstr "Příliš mnoho odpovědí."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "Potřebuji více kvalifikátorů."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "Adresářová služba momentálně není k dispozici."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "Vyhledávání podle emailu omezeno."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "Klíčové slovo ignorováno."
+
+#~ msgid "No keywords."
+#~ msgstr "Žádné klíčové slovo."
+
+#~ msgid "User has no directory information."
+#~ msgstr "Uživatel nemá žádné informace v adresáři."
+
+#~ msgid "Country not supported."
+#~ msgstr "Země není podporována."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Neznámé selhání: %s."
+
+#~ msgid "Incorrect username or password."
+#~ msgstr "Nesprávné jméno uživatele nebo heslo."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "Služba je dočasně nedostupná."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "Vaše úroveň výstrahy je momentálně příliš vysoká pro přihlášení."
+
+#~ 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 ""
+#~ "Připojovali a odpojovali jste se příliš často. Počkejte deset minut a "
+#~ "zkuste to znovu. Pokud to budete dále zkoušet, budete muset čekat ještě "
+#~ "déle."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "Došlo k neznámé chybě při přihlašování: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "Došlo k neznámé chybě, %d. Informace: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "Neplatný název skupiny"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Spojení uzavřeno"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "Čekám na odpověď..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "TOC se vrátil z přestávky. Nyní můžete zase odesílat zprávy."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "Změna hesla úspěšná"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Získat informace adresáře"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Nastavit informace adresáře"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "Nemohu otevřít %s pro zápis!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr "Přenos souboru selhal; druhá strana jej pravděpodobně přerušila."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "Nemohu se připojit pro přenos."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "Nemohu zapsat hlavičku souboru. Soubor nebude přenesen."
+
+#~ msgid "Save As..."
+#~ msgstr "Uložit jako..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s požaduje, aby %s přijal %d soubor: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s požaduje, aby %s přijal %d soubory: %s (%.2f %s)%s%s"
+#~ msgstr[2] "%s požaduje, aby %s přijal %d souborů: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s vás žádá, abyste jim poslali soubor"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "Zásuvný modul protokolu TOC"
+
+#~ msgid "%s Options"
+#~ msgstr "Nastavení %s"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Možnosti proxy"
+
+#~ msgid "By log size"
+#~ msgstr "Podle velikosti záznamu"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_Otevřít odkaz v prohlížeči"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "Server ST_UN:"
+
+#~ msgid "Smiley _Image"
+#~ msgstr "Obrázek _smajlíku"
+
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "Klávesové _zkratky smajlíků"
+
#~ msgid "Unable to retrieve MSN Address Book"
#~ msgstr "Nemohu získat adresář MSN"
diff --git a/po/da.po b/po/da.po
index c4aec780d4..9f23d9714b 100644
--- a/po/da.po
+++ b/po/da.po
@@ -25,7 +25,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin 2.5.5\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-22 13:16-0500\n"
+"POT-Creation-Date: 2009-04-30 10:37-0400\n"
"PO-Revision-Date: 2009-02-23 18:17+0100\n"
"Last-Translator: Peter Bach <bach.peter@gmail.com>\n"
"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
@@ -64,8 +64,14 @@ msgstr ""
" -v, --version vis nuværende version og afslut\n"
#, c-format
-msgid "%s encountered errors migrating your settings from %s to %s. Please investigate and complete the migration by hand. Please report this error at http://developer.pidgin.im"
-msgstr "%s opdagede fejl ved migrering af dine indstillinger fra %s til %s. Undersøg og færdiggør migreringen manuelt. Venligst rapportér denne fejl på http://developer.pidgin.im"
+msgid ""
+"%s encountered errors migrating your settings from %s to %s. Please "
+"investigate and complete the migration by hand. Please report this error at "
+"http://developer.pidgin.im"
+msgstr ""
+"%s opdagede fejl ved migrering af dine indstillinger fra %s til %s. Undersøg "
+"og færdiggør migreringen manuelt. Venligst rapportér denne fejl på http://"
+"developer.pidgin.im"
msgid "Error"
msgstr "Fejl"
@@ -302,10 +308,12 @@ msgid "Enter empty string to reset the name."
msgstr "Indtast tom streng for at nulstille navnet."
msgid "Removing this contact will also remove all the buddies in the contact"
-msgstr "Ved at fjerne denne kontakt vil du også fjerne alle vennerne i denne kontakt"
+msgstr ""
+"Ved at fjerne denne kontakt vil du også fjerne alle vennerne i denne kontakt"
msgid "Removing this group will also remove all the buddies in the group"
-msgstr "Ved at fjerne denne gruppe vil du også fjerne alle vennerne i denne gruppe"
+msgstr ""
+"Ved at fjerne denne gruppe vil du også fjerne alle vennerne i denne gruppe"
#, c-format
msgid "Are you sure you want to remove %s?"
@@ -361,7 +369,9 @@ msgstr "Blokér"
msgid "Unblock"
msgstr "Frigiv"
-msgid "Please enter the username or alias of the person you would like to Block/Unblock."
+msgid ""
+"Please enter the username or alias of the person you would like to Block/"
+"Unblock."
msgstr "Indtast brugernavnet eller alias på personen du vil blokere/frigive."
#. Not multiline
@@ -388,8 +398,12 @@ msgstr "Indtast navnet på den samtale du vil tilslutte."
msgid "Join"
msgstr "Tilslut"
-msgid "Please enter the username or alias of the person whose log you would like to view."
-msgstr "Indtast brugernavnet eller alias på den person, hvis log du gerne vil gennemse."
+msgid ""
+"Please enter the username or alias of the person whose log you would like to "
+"view."
+msgstr ""
+"Indtast brugernavnet eller alias på den person, hvis log du gerne vil "
+"gennemse."
#. Create the "Options" frame.
msgid "Options"
@@ -535,23 +549,30 @@ msgstr "%s afbrudt."
msgid ""
"%s\n"
"\n"
-"Finch will not attempt to reconnect the account until you correct the error and re-enable the account."
+"Finch will not attempt to reconnect the account until you correct the error "
+"and re-enable the account."
msgstr ""
"%s\n"
" \n"
-"Finch vil ikke forsøge at genforbinde til kontoen før du retter fejlen og genaktiverer kontoen."
+"Finch vil ikke forsøge at genforbinde til kontoen før du retter fejlen og "
+"genaktiverer kontoen."
msgid "Re-enable Account"
msgstr "Slå konto til igen"
-msgid "The account has disconnected and you are no longer in this chat. You will be automatically rejoined in the chat when the account reconnects."
-msgstr "Kontoen har afbrudt og du er ikke længere i denne samtale. Du vil automatisk blive tilsluttet til samtalen igen når kontoen genforbinder."
+msgid ""
+"The account has disconnected and you are no longer in this chat. You will be "
+"automatically rejoined in the chat when the account reconnects."
+msgstr ""
+"Kontoen har afbrudt og du er ikke længere i denne samtale. Du vil automatisk "
+"blive tilsluttet til samtalen igen når kontoen genforbinder."
msgid "No such command."
msgstr "Ingen kommando ved det navn."
msgid "Syntax Error: You typed the wrong number of arguments to that command."
-msgstr "Syntaksfejl: Du indtastede det forkert antal argumenter til den kommando."
+msgstr ""
+"Syntaksfejl: Du indtastede det forkert antal argumenter til den kommando."
msgid "Your command failed for an unknown reason."
msgstr "Din kommando fejlede pga. en ukendt årsag."
@@ -590,25 +611,14 @@ msgstr "Du har forladt denne samtale."
msgid "Logging started. Future messages in this conversation will be logged."
msgstr "Logning startet. Fremtidige beskeder i denne samtale vil blive logget."
-msgid "Logging stopped. Future messages in this conversation will not be logged."
-msgstr "Logning stoppet. Fremtidige beskeder i denne samtale vil ikke blive logget."
+msgid ""
+"Logging stopped. Future messages in this conversation will not be logged."
+msgstr ""
+"Logning stoppet. Fremtidige beskeder i denne samtale vil ikke blive logget."
msgid "Send To"
msgstr "Send til"
-msgid "Invite message"
-msgstr "Invitationsbesked"
-
-msgid "Invite"
-msgstr "Invitér"
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Indtast navnet på den bruger du vil invitere,\n"
-"samt en valgfri invitationsbesked."
-
msgid "Conversation"
msgstr "Samtale"
@@ -653,21 +663,34 @@ msgstr ""
"De følgende kommandoer er tilgængelige i dette sammenhæng:\n"
#, c-format
-msgid "%s is not a valid message class. See '/help msgcolor' for valid message classes."
-msgstr "%s er ikke en gyldig beskedklasse. Se \"/help msgcolor\" for gyldige beskedklasser."
+msgid ""
+"%s is not a valid message class. See '/help msgcolor' for valid message "
+"classes."
+msgstr ""
+"%s er ikke en gyldig beskedklasse. Se \"/help msgcolor\" for gyldige "
+"beskedklasser."
#, c-format
msgid "%s is not a valid color. See '/help msgcolor' for valid colors."
msgstr "%s er ikke gyldig farve. Se \"/help msgcolor\" for gyldige farver."
-msgid "say &lt;message&gt;: Send a message normally as if you weren't using a command."
-msgstr "say &lt;besked&gt;: Send en besked som normalt hvis du ikke brugte en kommando."
+msgid ""
+"say &lt;message&gt;: Send a message normally as if you weren't using a "
+"command."
+msgstr ""
+"say &lt;besked&gt;: Send en besked som normalt hvis du ikke brugte en "
+"kommando."
msgid "me &lt;action&gt;: Send an IRC style action to a buddy or chat."
-msgstr "me &lt;handling&gt;: Send en IRC-lignende handling til en ven eller samtale."
+msgstr ""
+"me &lt;handling&gt;: Send en IRC-lignende handling til en ven eller samtale."
-msgid "debug &lt;option&gt;: Send various debug information to the current conversation."
-msgstr "edbug &lt;tilvalg&gt;: Send forskellige fejlsøgningsoplysninger til den nuværende samtale."
+msgid ""
+"debug &lt;option&gt;: Send various debug information to the current "
+"conversation."
+msgstr ""
+"edbug &lt;tilvalg&gt;: Send forskellige fejlsøgningsoplysninger til den "
+"nuværende samtale."
msgid "clear: Clears the conversation scrollback."
msgstr "clear: Rydder samtalevinduet for tekst."
@@ -696,8 +719,18 @@ msgstr "prefs: Vis indstillingsvinduet."
msgid "statuses: Show the savedstatuses window."
msgstr "statuses: Vis gemte statuser-vinduet."
-msgid "msgcolor &lt;class&gt; &lt;foreground&gt; &lt;background&gt;: Set the color for different classes of messages in the conversation window.<br> &lt;class&gt;: receive, send, highlight, action, timestamp<br> &lt;foreground/background&gt;: black, red, green, blue, white, gray, darkgray, magenta, cyan, default<br><br>EXAMPLE:<br> msgcolor send cyan default"
-msgstr "msgcolor &lt;klasse&gt; &lt;forgrund&gt; &lt;baggrund;: Sæt farven for de forskellige klasser af beskeder i samtalevinduet.<br> &lt;klasse&gt;: modtag, send, markér, handling, tidsstempel<br> &lt;forgrund/baggrund&gt;: sort, rød, grøn, blå, hvid, grå, mørkegrå, magenta, cyan, standard<br><br>EKSEMPEL:<br> msgcolor send cyan standard"
+msgid ""
+"msgcolor &lt;class&gt; &lt;foreground&gt; &lt;background&gt;: Set the color "
+"for different classes of messages in the conversation window.<br> &lt;"
+"class&gt;: receive, send, highlight, action, timestamp<br> &lt;foreground/"
+"background&gt;: black, red, green, blue, white, gray, darkgray, magenta, "
+"cyan, default<br><br>EXAMPLE:<br> msgcolor send cyan default"
+msgstr ""
+"msgcolor &lt;klasse&gt; &lt;forgrund&gt; &lt;baggrund;: Sæt farven for de "
+"forskellige klasser af beskeder i samtalevinduet.<br> &lt;klasse&gt;: "
+"modtag, send, markér, handling, tidsstempel<br> &lt;forgrund/"
+"baggrund&gt;: sort, rød, grøn, blå, hvid, grå, mørkegrå, magenta, cyan, "
+"standard<br><br>EKSEMPEL:<br> msgcolor send cyan standard"
msgid "Unable to open file."
msgstr "Kunne ikke åbne fil."
@@ -799,14 +832,25 @@ msgstr "Samtaler med %s på %s"
msgid "%B %Y"
msgstr "%B %Y"
-msgid "System events will only be logged if the \"Log all status changes to system log\" preference is enabled."
-msgstr "System handlinger vil kun blive logget hvis \"Log alle status ændringer til system log\" indstillingen er slået til."
+msgid ""
+"System events will only be logged if the \"Log all status changes to system "
+"log\" preference is enabled."
+msgstr ""
+"System handlinger vil kun blive logget hvis \"Log alle status ændringer til "
+"system log\" indstillingen er slået til."
-msgid "Instant messages will only be logged if the \"Log all instant messages\" preference is enabled."
-msgstr "Beskeder vil kun blive logget hvis \"Log alle beskeder\" indstillingen er slået til."
+msgid ""
+"Instant messages will only be logged if the \"Log all instant messages\" "
+"preference is enabled."
+msgstr ""
+"Beskeder vil kun blive logget hvis \"Log alle beskeder\" indstillingen er "
+"slået til."
-msgid "Chats will only be logged if the \"Log all chats\" preference is enabled."
-msgstr "Samtaler vil kun blive logget hvis \"Log alle samtaler\" indstillingen er slået til."
+msgid ""
+"Chats will only be logged if the \"Log all chats\" preference is enabled."
+msgstr ""
+"Samtaler vil kun blive logget hvis \"Log alle samtaler\" indstillingen er "
+"slået til."
msgid "No logs were found"
msgstr "Ingen logs blev fundet"
@@ -832,6 +876,41 @@ msgstr "Alle samtaler"
msgid "System Log"
msgstr "System log"
+#, fuzzy
+msgid "Calling ... "
+msgstr "Udregner..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "Acceptér"
+
+msgid "Reject"
+msgstr "Afvis"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "Du har forladt kanalen%s%s"
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "E-post"
@@ -866,6 +945,9 @@ msgstr "Fortsæt"
msgid "IM"
msgstr "Besked"
+msgid "Invite"
+msgstr "Invitér"
+
msgid "(none)"
msgstr "(intet)"
@@ -909,8 +991,10 @@ msgstr "Fejl ved indlæsning af udvidelsesmodul"
msgid "The selected file is not a valid plugin."
msgstr "Den valgte fil er ikke et gyldigt udvidelsesmodul."
-msgid "Please open the debug window and try again to see the exact error message."
-msgstr "Åben fejlsøgningsvinduet og prøv igen for at se den eksakte fejlbesked."
+msgid ""
+"Please open the debug window and try again to see the exact error message."
+msgstr ""
+"Åben fejlsøgningsvinduet og prøv igen for at se den eksakte fejlbesked."
msgid "Select plugin to install"
msgstr "Vælg udvidelsesmodul som skal installeres"
@@ -1066,7 +1150,6 @@ msgstr "%s er nu fraværende. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s har sendt dig en besked. (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "Ukendt hændelse ved overvågning. Venligst rapportér dette!"
@@ -1339,7 +1422,9 @@ msgid "Couldn't find window"
msgstr "Kan ikke finde vindue"
msgid "This plugin cannot be loaded because it was not built with X11 support."
-msgstr "Udvidelsesmodulet kan ikke indlæses, fordi det ikke er bygget med X11-understøttelse."
+msgstr ""
+"Udvidelsesmodulet kan ikke indlæses, fordi det ikke er bygget med X11-"
+"understøttelse."
msgid "GntClipboard"
msgstr "GntClipboard"
@@ -1347,8 +1432,12 @@ msgstr "GntClipboard"
msgid "Clipboard plugin"
msgstr "Klippebords-udvidelsesmodul"
-msgid "When the gnt clipboard contents change, the contents are made available to X, if possible."
-msgstr "Når gnt-klippebordets indhold ændrer sig, bliver indholdet gjort tilgængelig for X, hvis det er muligt."
+msgid ""
+"When the gnt clipboard contents change, the contents are made available to "
+"X, if possible."
+msgstr ""
+"Når gnt-klippebordets indhold ændrer sig, bliver indholdet gjort tilgængelig "
+"for X, hvis det er muligt."
#, c-format
msgid "%s just signed on"
@@ -1407,11 +1496,13 @@ msgstr "Historikmodul kræver logning"
msgid ""
"Logging can be enabled from Tools -> Preferences -> Logging.\n"
"\n"
-"Enabling logs for instant messages and/or chats will activate history for the same conversation type(s)."
+"Enabling logs for instant messages and/or chats will activate history for "
+"the same conversation type(s)."
msgstr ""
"Logning kan slås til i Værktøjer -> Indstillinger -> Logning.\n"
"\n"
-"Ved at slå logs til for beskeder og/eller samtaler, vil det aktivere historikken for de samme samtale typer."
+"Ved at slå logs til for beskeder og/eller samtaler, vil det aktivere "
+"historikken for de samme samtale typer."
msgid "GntHistory"
msgstr "GntHistorik"
@@ -1419,8 +1510,12 @@ msgstr "GntHistorik"
msgid "Shows recently logged conversations in new conversations."
msgstr "Viser tidligere loggede samtaler i nye samtaler."
-msgid "When a new conversation is opened this plugin will insert the last conversation into the current conversation."
-msgstr "Når en ny samtale bliver åbnet, vil dette modul indsætte den sidste samtale ind i den nye samtale."
+msgid ""
+"When a new conversation is opened this plugin will insert the last "
+"conversation into the current conversation."
+msgstr ""
+"Når en ny samtale bliver åbnet, vil dette modul indsætte den sidste samtale "
+"ind i den nye samtale."
msgid "Online"
msgstr "Tilkoblet"
@@ -1465,6 +1560,28 @@ msgstr "GntLastlog"
msgid "Lastlog plugin."
msgstr "Lastlog-udvidelsesmodul."
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "Sang URL"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "konti"
@@ -1565,21 +1682,18 @@ msgstr "Acceptér certifikat til %s?"
msgid "SSL Certificate Verification"
msgstr "SSL-certifikat efterprøvning"
-#. Number of actions
-msgid "Accept"
-msgstr "Acceptér"
-
-msgid "Reject"
-msgstr "Afvis"
-
msgid "_View Certificate..."
msgstr "_Vis certifikat..."
#. Prompt the user to authenticate the certificate
#. vrq will be completed by user_auth
#, c-format
-msgid "The certificate presented by \"%s\" is self-signed. It cannot be automatically checked."
-msgstr "Certifikatet præsenteret af \"%s\" er selv underskrevet. Det kan ikke kontrolleres automatisk."
+msgid ""
+"The certificate presented by \"%s\" is self-signed. It cannot be "
+"automatically checked."
+msgstr ""
+"Certifikatet præsenteret af \"%s\" er selv underskrevet. Det kan ikke "
+"kontrolleres automatisk."
#, c-format
msgid "The certificate chain presented for %s is not valid."
@@ -1597,16 +1711,27 @@ msgid "Invalid certificate chain"
msgstr "Ugyldig certifikatkæde"
#. vrq will be completed by user_auth
-msgid "You have no database of root certificates, so this certificate cannot be validated."
-msgstr "Du har ingen database med rodcertifikater, så dette certifikat kan ikke kontrolleres."
+msgid ""
+"You have no database of root certificates, so this certificate cannot be "
+"validated."
+msgstr ""
+"Du har ingen database med rodcertifikater, så dette certifikat kan ikke "
+"kontrolleres."
#. vrq will be completed by user_auth
-msgid "The root certificate this one claims to be issued by is unknown to Pidgin."
-msgstr "Rodcertifikatet, som denne påstår at være udgivet af, er ukendt af Pidgin."
+msgid ""
+"The root certificate this one claims to be issued by is unknown to Pidgin."
+msgstr ""
+"Rodcertifikatet, som denne påstår at være udgivet af, er ukendt af Pidgin."
#, c-format
-msgid "The certificate chain presented by %s does not have a valid digital signature from the Certificate Authority from which it claims to have a signature."
-msgstr "Certifikatkæden, præsenteret af %s, har ikke en gyldig digital underskrift fra den certificerende myndighed, som den påstår at have en underskrift fra."
+msgid ""
+"The certificate chain presented by %s does not have a valid digital "
+"signature from the Certificate Authority from which it claims to have a "
+"signature."
+msgstr ""
+"Certifikatkæden, præsenteret af %s, har ikke en gyldig digital underskrift "
+"fra den certificerende myndighed, som den påstår at have en underskrift fra."
msgid "Invalid certificate authority signature"
msgstr "Ugyldig underskrift fra certificerende myndighed"
@@ -1616,8 +1741,12 @@ msgstr "Ugyldig underskrift fra certificerende myndighed"
#. being prompted
#. vrq will be completed by user_auth
#, c-format
-msgid "The certificate presented by \"%s\" claims to be from \"%s\" instead. This could mean that you are not connecting to the service you believe you are."
-msgstr "Certifikatet præsenteret af \"%s\" påstår at være fra \"%s\" i stedet. Dette kunne tyde på, at du ikke er forbundet til den tjeneste du tror du er."
+msgid ""
+"The certificate presented by \"%s\" claims to be from \"%s\" instead. This "
+"could mean that you are not connecting to the service you believe you are."
+msgstr ""
+"Certifikatet præsenteret af \"%s\" påstår at være fra \"%s\" i stedet. Dette "
+"kunne tyde på, at du ikke er forbundet til den tjeneste du tror du er."
#. Make messages
#, c-format
@@ -1700,6 +1829,18 @@ msgstr "%s forlod rummet."
msgid "%s left the room (%s)."
msgstr "%s forlod rummet (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Invitér til konference"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Indtast navnet på den bruger, du vil invitere, samt eventuelt en inviterings-"
+"besked."
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "Kunne ikke opnå forbindelse: %s"
@@ -1911,32 +2052,68 @@ msgstr "Håndteringen af \"xmpp\"-adresser"
msgid "The handler for \"ymsgr\" URLs"
msgstr "Håndteringen af \"ymsgr\"-adresser"
-msgid "True if the command specified in the \"command\" key should handle \"aim\" URLs."
-msgstr "Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"aim\"-adresser."
+msgid ""
+"True if the command specified in the \"command\" key should handle \"aim\" "
+"URLs."
+msgstr ""
+"Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"aim\"-"
+"adresser."
-msgid "True if the command specified in the \"command\" key should handle \"gg\" URLs."
-msgstr "Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"gg\"-adresser."
+msgid ""
+"True if the command specified in the \"command\" key should handle \"gg\" "
+"URLs."
+msgstr ""
+"Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"gg\"-"
+"adresser."
-msgid "True if the command specified in the \"command\" key should handle \"icq\" URLs."
-msgstr "Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"icq\"-adresser."
+msgid ""
+"True if the command specified in the \"command\" key should handle \"icq\" "
+"URLs."
+msgstr ""
+"Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"icq\"-"
+"adresser."
-msgid "True if the command specified in the \"command\" key should handle \"irc\" URLs."
-msgstr "Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"irc\"-adresser."
+msgid ""
+"True if the command specified in the \"command\" key should handle \"irc\" "
+"URLs."
+msgstr ""
+"Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"irc\"-"
+"adresser."
-msgid "True if the command specified in the \"command\" key should handle \"msnim\" URLs."
-msgstr "Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"msnim\"-adresser."
+msgid ""
+"True if the command specified in the \"command\" key should handle \"msnim\" "
+"URLs."
+msgstr ""
+"Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"msnim\"-"
+"adresser."
-msgid "True if the command specified in the \"command\" key should handle \"sip\" URLs."
-msgstr "Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"sip\"-adresser."
+msgid ""
+"True if the command specified in the \"command\" key should handle \"sip\" "
+"URLs."
+msgstr ""
+"Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"sip\"-"
+"adresser."
-msgid "True if the command specified in the \"command\" key should handle \"xmpp\" URLs."
-msgstr "Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"xmpp\"-adresser."
+msgid ""
+"True if the command specified in the \"command\" key should handle \"xmpp\" "
+"URLs."
+msgstr ""
+"Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"xmpp\"-"
+"adresser."
-msgid "True if the command specified in the \"command\" key should handle \"ymsgr\" URLs."
-msgstr "Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"ymsgr\"-adresser."
+msgid ""
+"True if the command specified in the \"command\" key should handle \"ymsgr\" "
+"URLs."
+msgstr ""
+"Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"ymsgr\"-"
+"adresser."
-msgid "True if the command used to handle this type of URL should be run in a terminal."
-msgstr "Sand hvis kommandoen brugt til at håndtere denne type af adresse skal køres i en terminal."
+msgid ""
+"True if the command used to handle this type of URL should be run in a "
+"terminal."
+msgstr ""
+"Sand hvis kommandoen brugt til at håndtere denne type af adresse skal køres "
+"i en terminal."
msgid "Whether the specified command should handle \"aim\" URLs"
msgstr "Hvorledes den angivne kommando skal håndtere \"aim\"-adresser"
@@ -1981,12 +2158,20 @@ msgid "XML"
msgstr "XML"
#, c-format
-msgid "<font color=\"#16569E\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-REPLY&gt;:</b></font> %s<br/>\n"
-msgstr "<font color=\"#16569E\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-SVAR&gt;:</b></font> %s<br/>\n"
+msgid ""
+"<font color=\"#16569E\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-"
+"REPLY&gt;:</b></font> %s<br/>\n"
+msgstr ""
+"<font color=\"#16569E\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-SVAR&gt;:"
+"</b></font> %s<br/>\n"
#, c-format
-msgid "<font color=\"#A82F2F\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-REPLY&gt;:</b></font> %s<br/>\n"
-msgstr "<font color=\"#A82F2F\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-SVAR&gt;:</b></font> %s<br/>\n"
+msgid ""
+"<font color=\"#A82F2F\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-"
+"REPLY&gt;:</b></font> %s<br/>\n"
+msgstr ""
+"<font color=\"#A82F2F\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-SVAR&gt;:"
+"</b></font> %s<br/>\n"
msgid "<font color=\"red\"><b>Unable to find log path!</b></font>"
msgstr "<font color=\"red\"><b>Kunne ikke finde logsti!</b></font>"
@@ -2014,12 +2199,19 @@ msgstr "Modul magi fejlede %d (krævede %d)"
msgid "ABI version mismatch %d.%d.x (need %d.%d.x)"
msgstr "ABI versions fejl %d.%d.x (kræver %d.%d.x)"
-msgid "Plugin does not implement all required functions (list_icon, login and close)"
-msgstr "Udvidelsesmodul implementerer ikke alle de krævede funktioner (list_icon, logind og luk)"
+msgid ""
+"Plugin does not implement all required functions (list_icon, login and close)"
+msgstr ""
+"Udvidelsesmodul implementerer ikke alle de krævede funktioner (list_icon, "
+"logind og luk)"
#, c-format
-msgid "The required plugin %s was not found. Please install this plugin and try again."
-msgstr "Det krævede udvidelsesmodul %s blev ikke fundet. Installér modulet og prøv igen."
+msgid ""
+"The required plugin %s was not found. Please install this plugin and try "
+"again."
+msgstr ""
+"Det krævede udvidelsesmodul %s blev ikke fundet. Installér modulet og prøv "
+"igen."
msgid "Unable to load the plugin"
msgstr "Kan ikke indlæse udvidelsesmodulet"
@@ -2219,8 +2411,12 @@ msgid "Test plugin IPC support, as a client."
msgstr "Test modul IPC understøttelse, som en klient."
#. * description
-msgid "Test plugin IPC support, as a client. This locates the server plugin and calls the commands registered."
-msgstr "Test modul IPC understøttelse, som en klient. Dette finder server modulet og kalder den registrerede kommando."
+msgid ""
+"Test plugin IPC support, as a client. This locates the server plugin and "
+"calls the commands registered."
+msgstr ""
+"Test modul IPC understøttelse, som en klient. Dette finder server modulet og "
+"kalder den registrerede kommando."
#. *< type
#. *< ui_requirement
@@ -2239,7 +2435,9 @@ msgstr "Test modul IPC understøttelse, som en server."
#. * description
msgid "Test plugin IPC support, as a server. This registers the IPC commands."
-msgstr "Test modul IPC understøttelse, som en server. Dette registrerer IPC kommandoerne."
+msgstr ""
+"Test modul IPC understøttelse, som en server. Dette registrerer IPC "
+"kommandoerne."
msgid "Join/Part Hiding Configuration"
msgstr "Tilslut/Deltag skjult konfiguration"
@@ -2269,8 +2467,12 @@ msgid "Hides extraneous join/part messages."
msgstr "Skjuler overflødige tilslut/deltag-beskeder."
#. * description
-msgid "This plugin hides join/part messages in large rooms, except for those users actively taking part in a conversation."
-msgstr "Dette udvidelsesmodul skjuler tilslut/deltag-beskeder i store rum, undtagen de brugere der aktivt tager del i en samtale."
+msgid ""
+"This plugin hides join/part messages in large rooms, except for those users "
+"actively taking part in a conversation."
+msgstr ""
+"Dette udvidelsesmodul skjuler tilslut/deltag-beskeder i store rum, undtagen "
+"de brugere der aktivt tager del i en samtale."
#. This is used in the place of a timezone abbreviation if the
#. * offset is way off. The user should never really see it, but
@@ -2295,8 +2497,12 @@ msgstr "En eller flere beskeder er måske ikke blevet leveret."
msgid "You were disconnected from the server."
msgstr "Din forbindelse til serveren blev afbrudt."
-msgid "You are currently disconnected. Messages will not be received unless you are logged in."
-msgstr "Du er ikke forbunddet. Beskeder vil ikke blive modtaget medmindre du er logged ind."
+msgid ""
+"You are currently disconnected. Messages will not be received unless you are "
+"logged in."
+msgstr ""
+"Du er ikke forbunddet. Beskeder vil ikke blive modtaget medmindre du er "
+"logged ind."
msgid "Message could not be sent because the maximum length was exceeded."
msgstr "Besked kunne ikke sendes, fordi maksimum længden var overskredet."
@@ -2377,13 +2583,18 @@ msgstr "Inkludér andre klienters logs i logviseren."
#. * description
msgid ""
-"When viewing logs, this plugin will include logs from other IM clients. Currently, this includes Adium, MSN Messenger, and Trillian.\n"
+"When viewing logs, this plugin will include logs from other IM clients. "
+"Currently, this includes Adium, MSN Messenger, and Trillian.\n"
"\n"
-"WARNING: This plugin is still alpha code and may crash frequently. Use it at your own risk!"
+"WARNING: This plugin is still alpha code and may crash frequently. Use it "
+"at your own risk!"
msgstr ""
-"Når der vises logs, vil dette udvidelsesmodul inkludere logs fra andre beskedklienter. På nuværende tidspunkt, er dette Adium, MSN Messenger og Trillian.\n"
+"Når der vises logs, vil dette udvidelsesmodul inkludere logs fra andre "
+"beskedklienter. På nuværende tidspunkt, er dette Adium, MSN Messenger og "
+"Trillian.\n"
"\n"
-"ADVARSEL: Dette udvidelsesmodul er stadig alfa-kode og kan bryde ned jævnligt. Brug det på eget ansvar!"
+"ADVARSEL: Dette udvidelsesmodul er stadig alfa-kode og kan bryde ned "
+"jævnligt. Brug det på eget ansvar!"
msgid "Mono Plugin Loader"
msgstr "Mono-udvidelsesmodul indlæser"
@@ -2415,21 +2626,35 @@ msgid "Prepends a newline to displayed message."
msgstr "Indskyder en ny linje i viste besked."
#. *< summary
-msgid "Prepends a newline to messages so that the rest of the message appears below the username in the conversation window."
-msgstr "Indskyder en ny linje til beskederne så resten af beskederne optræder nedenunder skærmnavnet i samtalevinduet."
+msgid ""
+"Prepends a newline to messages so that the rest of the message appears below "
+"the username in the conversation window."
+msgstr ""
+"Indskyder en ny linje til beskederne så resten af beskederne optræder "
+"nedenunder skærmnavnet i samtalevinduet."
msgid "Offline Message Emulation"
msgstr "Afkoblet besked-emulering"
msgid "Save messages sent to an offline user as pounce."
-msgstr "Gem beskeder sendt til en afkoblet bruger som automatisk praj ved indlogning."
+msgstr ""
+"Gem beskeder sendt til en afkoblet bruger som automatisk praj ved indlogning."
-msgid "The rest of the messages will be saved as pounce. You can edit/delete the pounce from the `Buddy Pounce' dialog."
-msgstr "Resten af beskeden vil blive gemt som automatisk praj ved indlogning. Du kan redigere/slette automatisk praj ved indlogning fra venne-automatisk praj ved indlogning-vinduet."
+msgid ""
+"The rest of the messages will be saved as pounce. You can edit/delete the "
+"pounce from the `Buddy Pounce' dialog."
+msgstr ""
+"Resten af beskeden vil blive gemt som automatisk praj ved indlogning. Du kan "
+"redigere/slette automatisk praj ved indlogning fra venne-automatisk praj ved "
+"indlogning-vinduet."
#, c-format
-msgid "\"%s\" is currently offline. Do you want to save the rest of the messages in a pounce and automatically send them when \"%s\" logs back in?"
-msgstr "\"%s\" er afkoblet. Vil du gemme testen af beskeden i en automatisk praj ved indlogning og automatisk sende dem når \"%s\" logger på igen?"
+msgid ""
+"\"%s\" is currently offline. Do you want to save the rest of the messages in "
+"a pounce and automatically send them when \"%s\" logs back in?"
+msgstr ""
+"\"%s\" er afkoblet. Vil du gemme testen af beskeden i en automatisk praj ved "
+"indlogning og automatisk sende dem når \"%s\" logger på igen?"
msgid "Offline Message"
msgstr "Besked når afkoblet"
@@ -2449,6 +2674,32 @@ msgstr "Gem beskeder ved afkoblet som automatisk praj ved indlogning"
msgid "Do not ask. Always save in pounce."
msgstr "Spørg ikke. Gem altid som automatisk praj ved indlogning."
+#, fuzzy
+msgid "One Time Password"
+msgstr "Indtast adgangskode"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2470,8 +2721,12 @@ msgstr "Synsk tilstand"
msgid "Psychic mode for incoming conversation"
msgstr "Synsk tilstand for indgående samtaler"
-msgid "Causes conversation windows to appear as other users begin to message you. This works for AIM, ICQ, XMPP, Sametime, and Yahoo!"
-msgstr "Får samtalevinduerne til at dukke frem når andre brugere begynder at skrive til dig. Dette virker med AIM, ICQ, XMPP, Sametime og Yahoo!"
+msgid ""
+"Causes conversation windows to appear as other users begin to message you. "
+"This works for AIM, ICQ, XMPP, Sametime, and Yahoo!"
+msgstr ""
+"Får samtalevinduerne til at dukke frem når andre brugere begynder at skrive "
+"til dig. Dette virker med AIM, ICQ, XMPP, Sametime og Yahoo!"
msgid "You feel a disturbance in the force..."
msgstr "Du føler en ændring i kraften..."
@@ -2617,8 +2872,11 @@ msgstr "Vennestatus påmindelse"
#. *< version
#. * summary
#. * description
-msgid "Notifies in a conversation window when a buddy goes or returns from away or idle."
-msgstr "Fortæller i en samtale når en ven bliver fraværende eller kommer tilbage."
+msgid ""
+"Notifies in a conversation window when a buddy goes or returns from away or "
+"idle."
+msgstr ""
+"Fortæller i en samtale når en ven bliver fraværende eller kommer tilbage."
msgid "Tcl Plugin Loader"
msgstr "Tcl-udvidelsesmodul indlæser"
@@ -2626,16 +2884,25 @@ msgstr "Tcl-udvidelsesmodul indlæser"
msgid "Provides support for loading Tcl plugins"
msgstr "Giver understøttelse af Tcl-udvidelsesmoduler"
-msgid "Unable to detect ActiveTCL installation. If you wish to use TCL plugins, install ActiveTCL from http://www.activestate.com\n"
-msgstr "Ikke i stand til at opdage ActiveTCL installation. Hvis du ønsker at bruge TCL-udvidelsesmoduler, installér ActiveTCL fra http://www.activestate.com\n"
+msgid ""
+"Unable to detect ActiveTCL installation. If you wish to use TCL plugins, "
+"install ActiveTCL from http://www.activestate.com\n"
+msgstr ""
+"Ikke i stand til at opdage ActiveTCL installation. Hvis du ønsker at bruge "
+"TCL-udvidelsesmoduler, installér ActiveTCL fra http://www.activestate.com\n"
-msgid "The Apple Bonjour For Windows toolkit wasn't found, see the FAQ at: http://d.pidgin.im/BonjourWindows for more information."
-msgstr "Apple Bonjour-værktøjssættet til Windows blev ikke fundet, se oss på: http://d.pidgin.im/BonjourWindows for mere information."
+msgid ""
+"The Apple Bonjour For Windows toolkit wasn't found, see the FAQ at: http://d."
+"pidgin.im/BonjourWindows for more information."
+msgstr ""
+"Apple Bonjour-værktøjssættet til Windows blev ikke fundet, se oss på: http://"
+"d.pidgin.im/BonjourWindows for mere information."
msgid "Unable to listen for incoming IM connections\n"
msgstr "Ude af stand til at lytte for indgående beskeder\n"
-msgid "Unable to establish connection with the local mDNS server. Is it running?"
+msgid ""
+"Unable to establish connection with the local mDNS server. Is it running?"
msgstr "Kunne ikke etablerede forbindelse til lokal mDNS server. Kører den?"
msgid "First name"
@@ -2698,8 +2965,11 @@ msgstr "Fejl under kommunikation med lokal mDNSResponder."
msgid "Invalid proxy settings"
msgstr "Ugyldige proxyindstillinger"
-msgid "Either the host name or port number specified for your given proxy type is invalid."
-msgstr "Enten er værtsnavnet eller porten der er angivet for din proxytype ugyldig."
+msgid ""
+"Either the host name or port number specified for your given proxy type is "
+"invalid."
+msgstr ""
+"Enten er værtsnavnet eller porten der er angivet for din proxytype ugyldig."
msgid "Token Error"
msgstr "Nøgle fejl"
@@ -2826,6 +3096,7 @@ msgstr "Vælg en samtale for ven: %s"
msgid "Add to chat..."
msgstr "Tilføj til samtale..."
+#. Global
msgid "Available"
msgstr "Tilgængelig"
@@ -3158,11 +3429,30 @@ msgstr "mode (%s %s) af %s"
msgid "Invalid nickname"
msgstr "Ugyldigt brugernavn"
-msgid "Your selected nickname was rejected by the server. It probably contains invalid characters."
-msgstr "Dit valgte brugernavn blev nægtet af serveren. Det indeholder sikkert ugyldige bogstaver."
+msgid ""
+"Your selected nickname was rejected by the server. It probably contains "
+"invalid characters."
+msgstr ""
+"Dit valgte brugernavn blev nægtet af serveren. Det indeholder sikkert "
+"ugyldige bogstaver."
-msgid "Your selected account name was rejected by the server. It probably contains invalid characters."
-msgstr "Dit valgte konto navn blev nægtet af serveren. Det indeholder sikkert ugyldige bogstaver."
+msgid ""
+"Your selected account name was rejected by the server. It probably contains "
+"invalid characters."
+msgstr ""
+"Dit valgte konto navn blev nægtet af serveren. Det indeholder sikkert "
+"ugyldige bogstaver."
+
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "Dette samtalenavn eksisterer allerede"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Kælenavn"
msgid "Cannot change nick"
msgstr "Kan ikke ændre navn"
@@ -3198,8 +3488,12 @@ msgstr "Wallops fra %s"
msgid "action &lt;action to perform&gt;: Perform an action."
msgstr "action &lt;handling at udføre&gt;: Udfør en handling."
-msgid "away [message]: Set an away message, or use no message to return from being away."
-msgstr "away [besked]: Indstil en fraværsbesked. Hvis ingen besked angives, så returnes du fra fravær."
+msgid ""
+"away [message]: Set an away message, or use no message to return from being "
+"away."
+msgstr ""
+"away [besked]: Indstil en fraværsbesked. Hvis ingen besked angives, så "
+"returnes du fra fravær."
msgid "ctcp <nick> <msg>: sends ctcp msg to nick."
msgstr "ctcp <nick> <msg>: sender ctcp-besked til kælenavn."
@@ -3207,26 +3501,56 @@ msgstr "ctcp <nick> <msg>: sender ctcp-besked til kælenavn."
msgid "chanserv: Send a command to chanserv"
msgstr "chanserv: Send en kommando til chanserv"
-msgid "deop &lt;nick1&gt; [nick2] ...: Remove channel operator status from someone. You must be a channel operator to do this."
-msgstr "deop &lt;navn1&gt; [navn2] ...: Fjern kanal operatør status fra en. Du skal være kanal operatør for at gøre dette."
+msgid ""
+"deop &lt;nick1&gt; [nick2] ...: Remove channel operator status from "
+"someone. You must be a channel operator to do this."
+msgstr ""
+"deop &lt;navn1&gt; [navn2] ...: Fjern kanal operatør status fra en. Du skal "
+"være kanal operatør for at gøre dette."
-msgid "devoice &lt;nick1&gt; [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 &lt;navn1&gt; [navn2] ...: Fjern kanal 'voice' status fra en. Det forhindrer dem i at snakke hvis kanalen er modereret (+m). Du skal være kanal operatør for at gøre dette."
+msgid ""
+"devoice &lt;nick1&gt; [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 &lt;navn1&gt; [navn2] ...: Fjern kanal 'voice' status fra en. Det "
+"forhindrer dem i at snakke hvis kanalen er modereret (+m). Du skal være "
+"kanal operatør for at gøre dette."
-msgid "invite &lt;nick&gt; [room]: Invite someone to join you in the specified channel, or the current channel."
-msgstr "invite &lt;navn&gt; [rum]: Invitér nogle til den angivne kanal, eller den nuværende kanal."
+msgid ""
+"invite &lt;nick&gt; [room]: Invite someone to join you in the specified "
+"channel, or the current channel."
+msgstr ""
+"invite &lt;navn&gt; [rum]: Invitér nogle til den angivne kanal, eller den "
+"nuværende kanal."
-msgid "j &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]: Enter one or more channels, optionally providing a channel key for each if needed."
-msgstr "j &lt;rum1&gt;[,rum2][,...] [nøgle1[,nøgle2][,...]]: Deltag i en eller flere kanaler. Du kan angive en adgangsnøgle hvis det er krævet."
+msgid ""
+"j &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]: Enter one or more "
+"channels, optionally providing a channel key for each if needed."
+msgstr ""
+"j &lt;rum1&gt;[,rum2][,...] [nøgle1[,nøgle2][,...]]: Deltag i en eller "
+"flere kanaler. Du kan angive en adgangsnøgle hvis det er krævet."
-msgid "join &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]: Enter one or more channels, optionally providing a channel key for each if needed."
-msgstr "join &lt;rum1&gt;[,rum2][,...] [nøgle1[,nøgle2][,...]]: Tilslut en eller flere kanaler. Du kan angive en adgangsnøgle hvis det er krævet."
+msgid ""
+"join &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]: Enter one or more "
+"channels, optionally providing a channel key for each if needed."
+msgstr ""
+"join &lt;rum1&gt;[,rum2][,...] [nøgle1[,nøgle2][,...]]: Tilslut en eller "
+"flere kanaler. Du kan angive en adgangsnøgle hvis det er krævet."
-msgid "kick &lt;nick&gt; [message]: Remove someone from a channel. You must be a channel operator to do this."
-msgstr "kick &lt;nick&gt; [besked]: Fjern nogle fra kanalen. Du skal have kanal operatør status for at gøre dette."
+msgid ""
+"kick &lt;nick&gt; [message]: Remove someone from a channel. You must be a "
+"channel operator to do this."
+msgstr ""
+"kick &lt;nick&gt; [besked]: Fjern nogle fra kanalen. Du skal have kanal "
+"operatør status for at gøre dette."
-msgid "list: Display a list of chat rooms on the network. <i>Warning, some servers may disconnect you upon doing this.</i>"
-msgstr "list: Vis en liste over samtalerum på netværket. <i>Advarsel, nogle servere kan afbryde forbindelsen når du gør dette.</i>"
+msgid ""
+"list: Display a list of chat rooms on the network. <i>Warning, some servers "
+"may disconnect you upon doing this.</i>"
+msgstr ""
+"list: Vis en liste over samtalerum på netværket. <i>Advarsel, nogle servere "
+"kan afbryde forbindelsen når du gør dette.</i>"
msgid "me &lt;action to perform&gt;: Perform an action."
msgstr "me &lt;handling at udføre&gt;: Udfør en handling."
@@ -3234,11 +3558,19 @@ msgstr "me &lt;handling at udføre&gt;: Udfør en handling."
msgid "memoserv: Send a command to memoserv"
msgstr "memoserv: Send en kommando til memoserv"
-msgid "mode &lt;+|-&gt;&lt;A-Za-z&gt; &lt;nick|channel&gt;: Set or unset a channel or user mode."
-msgstr "mode &lt;+|-&gt;&lt;A-Za-Z&gt; &lt;nick|kanal&gt;: Sæt eller fjern en kanal eller bruger tilstand."
+msgid ""
+"mode &lt;+|-&gt;&lt;A-Za-z&gt; &lt;nick|channel&gt;: Set or unset a channel "
+"or user mode."
+msgstr ""
+"mode &lt;+|-&gt;&lt;A-Za-Z&gt; &lt;nick|kanal&gt;: Sæt eller fjern en kanal "
+"eller bruger tilstand."
-msgid "msg &lt;nick&gt; &lt;message&gt;: Send a private message to a user (as opposed to a channel)."
-msgstr "msg &lt;navn&gt; &lt;besked&gt;: Send en privat besked til en bruger (istedet for en kanal)."
+msgid ""
+"msg &lt;nick&gt; &lt;message&gt;: Send a private message to a user (as "
+"opposed to a channel)."
+msgstr ""
+"msg &lt;navn&gt; &lt;besked&gt;: Send en privat besked til en bruger "
+"(istedet for en kanal)."
msgid "names [channel]: List the users currently in a channel."
msgstr "names [kanal]: Vis brugerne der er på kanalen lige nu."
@@ -3252,23 +3584,43 @@ msgstr "nickserv: Send en kommando til nickserv"
msgid "notice &lt;target&lt;: Send a notice to a user or channel."
msgstr "notice &lt;targetl&lt;: Send en påmindelse til en bruger eller kanal."
-msgid "op &lt;nick1&gt; [nick2] ...: Grant channel operator status to someone. You must be a channel operator to do this."
-msgstr "op &lt;navn1&gt; [navn2] ...: Giv kanal operatør status til en. Du skal selv være kanal operatør for at gøre dette."
+msgid ""
+"op &lt;nick1&gt; [nick2] ...: Grant channel operator status to someone. You "
+"must be a channel operator to do this."
+msgstr ""
+"op &lt;navn1&gt; [navn2] ...: Giv kanal operatør status til en. Du skal "
+"selv være kanal operatør for at gøre dette."
-msgid "operwall &lt;message&gt;: If you don't know what this is, you probably can't use it."
-msgstr "operwall &lt;message&gt;: Hvis du ikke ved hvad dette er, så kan du sikkert ikke bruge det."
+msgid ""
+"operwall &lt;message&gt;: If you don't know what this is, you probably "
+"can't use it."
+msgstr ""
+"operwall &lt;message&gt;: Hvis du ikke ved hvad dette er, så kan du sikkert "
+"ikke bruge det."
msgid "operserv: Send a command to operserv"
msgstr "operserv: Send en kommando til operserv"
-msgid "part [room] [message]: Leave the current channel, or a specified channel, with an optional message."
-msgstr "part [rum] [besked]: Forlad den nuværende kanal, eller angiv en kanal med en eventuel fraværsbesked."
+msgid ""
+"part [room] [message]: Leave the current channel, or a specified channel, "
+"with an optional message."
+msgstr ""
+"part [rum] [besked]: Forlad den nuværende kanal, eller angiv en kanal med "
+"en eventuel fraværsbesked."
-msgid "ping [nick]: Asks how much lag a user (or the server if no user specified) has."
-msgstr "ping [navn]: Spørger hvor meget lag (tidsforsinkelse) en bruger (eller serveren hvis ingen bruger angivet) har."
+msgid ""
+"ping [nick]: Asks how much lag a user (or the server if no user specified) "
+"has."
+msgstr ""
+"ping [navn]: Spørger hvor meget lag (tidsforsinkelse) en bruger (eller "
+"serveren hvis ingen bruger angivet) har."
-msgid "query &lt;nick&gt; &lt;message&gt;: Send a private message to a user (as opposed to a channel)."
-msgstr "query &lt;navn&gt; &lt;besked&gt;: Send en privat besked til en bruger (istedet for en kanal)."
+msgid ""
+"query &lt;nick&gt; &lt;message&gt;: Send a private message to a user (as "
+"opposed to a channel)."
+msgstr ""
+"query &lt;navn&gt; &lt;besked&gt;: Send en privat besked til en bruger "
+"(istedet for en kanal)."
msgid "quit [message]: Disconnect from the server, with an optional message."
msgstr "quit [besked]: Luk forbindelse til server, med en eventuel besked."
@@ -3276,8 +3628,12 @@ msgstr "quit [besked]: Luk forbindelse til server, med en eventuel besked."
msgid "quote [...]: Send a raw command to the server."
msgstr "quote [...]: Sender en rå kommando til serveren."
-msgid "remove &lt;nick&gt; [message]: Remove someone from a room. You must be a channel operator to do this."
-msgstr "remove &lt;nick&gt; [besked]: Fjern nogen fra et rum. Du skal have kanal operatør status for at gøre dette."
+msgid ""
+"remove &lt;nick&gt; [message]: Remove someone from a room. You must be a "
+"channel operator to do this."
+msgstr ""
+"remove &lt;nick&gt; [besked]: Fjern nogen fra et rum. Du skal have kanal "
+"operatør status for at gøre dette."
msgid "time: Displays the current local time at the IRC server."
msgstr "time: Viser den lokale tid på IRC-serveren."
@@ -3291,11 +3647,19 @@ msgstr "umode &lt;+|-&gt;&lt;A-Za-z&gt;: Sæt eller fjern en bruger tilstand."
msgid "version [nick]: send CTCP VERSION request to a user"
msgstr "version [nick]: send CTCP VERSION forspørgelse til en bruger"
-msgid "voice &lt;nick1&gt; [nick2] ...: Grant channel voice status to someone. You must be a channel operator to do this."
-msgstr "voice &lt;navn1&gt; [navn2] ...: Giv kanal 'voice' status til en. Du skal havekanal operatør status for at gøre dette."
+msgid ""
+"voice &lt;nick1&gt; [nick2] ...: Grant channel voice status to someone. You "
+"must be a channel operator to do this."
+msgstr ""
+"voice &lt;navn1&gt; [navn2] ...: Giv kanal 'voice' status til en. Du skal "
+"havekanal operatør status for at gøre dette."
-msgid "wallops &lt;message&gt;: If you don't know what this is, you probably can't use it."
-msgstr "wallops &lt;besked&gt;: Hvis du ikke ved hvad dette er, så kan du sikkert ikke bruge det."
+msgid ""
+"wallops &lt;message&gt;: If you don't know what this is, you probably can't "
+"use it."
+msgstr ""
+"wallops &lt;besked&gt;: Hvis du ikke ved hvad dette er, så kan du sikkert "
+"ikke bruge det."
msgid "whois [server] &lt;nick&gt;: Get information on a user."
msgstr "whois [server] &lt;navn&gt;: Hent oplysninger om en bruger."
@@ -3335,8 +3699,12 @@ msgid "Server requires plaintext authentication over an unencrypted stream"
msgstr "Server kræver godkendelse i klartekst over en ukrypteret strøm"
#, c-format
-msgid "%s requires plaintext authentication over an unencrypted connection. Allow this and continue authentication?"
-msgstr "%s kræver godkendelse i klartekst over en ukrypteret forbindelse. Tillad dette og fortsæt godkendelse?"
+msgid ""
+"%s requires plaintext authentication over an unencrypted connection. Allow "
+"this and continue authentication?"
+msgstr ""
+"%s kræver godkendelse i klartekst over en ukrypteret forbindelse. Tillad "
+"dette og fortsæt godkendelse?"
msgid "Plaintext Authentication"
msgstr "Godkendelse i klartekst"
@@ -3353,6 +3721,41 @@ msgstr "Ugyldigt svar fra server"
msgid "SASL error"
msgstr "SASL fejl"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "Ingen grund givet"
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Ikke understøttet version"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"Kunne ikke etablere en forbindelse til server:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"Kunne ikke etablere en forbindelse til server:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "Kunne ikke initialisere forbindelse"
+
+msgid "Unable to create socket"
+msgstr "Kunne ikke oprette sokkel"
+
+msgid "Write error"
+msgstr "Fejl ved skrivning"
+
msgid "Full Name"
msgstr "Fulde navn"
@@ -3406,8 +3809,12 @@ msgstr "Beskrivelse"
msgid "Edit XMPP vCard"
msgstr "Redigér XMPP vCard"
-msgid "All items below are optional. Enter only the information with which you feel comfortable."
-msgstr "Alle elementerne nedenfor er valgfrie. Skriv kun de ting, du ønsker andre skal vide om dig."
+msgid ""
+"All items below are optional. Enter only the information with which you feel "
+"comfortable."
+msgstr ""
+"Alle elementerne nedenfor er valgfrie. Skriv kun de ting, du ønsker andre "
+"skal vide om dig."
msgid "Client"
msgstr "Klient"
@@ -3415,6 +3822,10 @@ msgstr "Klient"
msgid "Operating System"
msgstr "Operativsystem"
+#, fuzzy
+msgid "Local Time"
+msgstr "Lokal fil:"
+
msgid "Last Activity"
msgstr "Sidste aktivitet"
@@ -3633,8 +4044,12 @@ msgid "The following are the results of your search"
msgstr "Det følgende er resultaterne på din søgning"
#. current comment from Jabber User Directory users.jabber.org
-msgid "Find a contact by entering the search criteria in the given fields. Note: Each field supports wild card searches (%)"
-msgstr "Find en kontakt ved at indtaste søgekriterien i de givne felter. Bemærk: Hver felt understøtter joker-søgninger (%)"
+msgid ""
+"Find a contact by entering the search criteria in the given fields. Note: "
+"Each field supports wild card searches (%)"
+msgstr ""
+"Find en kontakt ved at indtaste søgekriterien i de givne felter. Bemærk: "
+"Hver felt understøtter joker-søgninger (%)"
msgid "Directory Query Failed"
msgstr "Mappe forespørgsel fejlede"
@@ -3739,9 +4154,6 @@ msgstr "Find rum"
msgid "You require encryption, but it is not available on this server."
msgstr "Du kræver kryptering, men det er ikke tilrådighed på denne server."
-msgid "Write error"
-msgstr "Fejl ved skrivning"
-
msgid "Ping timeout"
msgstr "Ping tidsudløb"
@@ -3750,14 +4162,9 @@ msgstr "Læsefejl"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"Kunne ikke etablere en forbindelse til server:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "Kunne ikke oprette sokkel"
msgid "Invalid XMPP ID"
msgstr "Ugyldigt XMPP-id"
@@ -3765,6 +4172,10 @@ msgstr "Ugyldigt XMPP-id"
msgid "Invalid XMPP ID. Domain must be set."
msgstr "Ugyldigt XMPP-id. Domæne skal angives."
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Kunne ikke forbinde til server."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "Registreringen af %s@%s lykkedes"
@@ -3807,7 +4218,8 @@ msgstr "Dato"
msgid "Unregister"
msgstr "Afregistrér"
-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 "Udfyld oplysninger forneden for at ændre din kontoregistrering."
msgid "Please fill out the information below to register your new account."
@@ -3854,6 +4266,12 @@ msgstr "Server understøtter ikke blokering"
msgid "Not Authorized"
msgstr "Ikke godkendt"
+msgid "Mood"
+msgstr "Humør"
+
+msgid "Now Listening"
+msgstr "Lytter til"
+
msgid "Both"
msgstr "Begge"
@@ -3875,12 +4293,6 @@ msgstr "Ingen"
msgid "Subscription"
msgstr "Abonnering"
-msgid "Mood"
-msgstr "Humør"
-
-msgid "Now Listening"
-msgstr "Lytter til"
-
msgid "Mood Text"
msgstr "Humørtekst"
@@ -4118,18 +4530,24 @@ msgstr "Ude af stand til at sparke bruge %s"
msgid "Unable to ping user %s"
msgstr "Ude af stand til at pinge bruger %s"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr "Kan ikke bippe, fordi der ikke er noget kendt om bruger %s."
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr "Kan ikke bippe, fordi bruger %s måske er afkoblet."
-#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+#, fuzzy, c-format
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "Kunne ikke bippe fordi bruger %s ikke understøtter det."
+#, c-format
+msgid "Buzzing %s..."
+msgstr "Bipper %s..."
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
msgid "Buzz"
@@ -4139,9 +4557,36 @@ msgstr "Bip"
msgid "%s has buzzed you!"
msgstr "%s har bippet dig!"
-#, c-format
-msgid "Buzzing %s..."
-msgstr "Bipper %s..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "Kunne ikke sende fil til %s, ugyldig JID"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "Ikke i stand til at sende fil til %s, brugeren er ikke tilkoblet"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr ""
+"Ikke i stand til at sende fil til %s, brugeren understøtter ikke "
+"filoverførsler"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "Registrering fejlede"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "Vælg ressourcen fra %s som du gerne vil sende en fil"
+
+msgid "Select a Resource"
+msgstr "Vælg en ressource"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "Åbn _samtale"
msgid "config: Configure a chat room."
msgstr "config: Sæt et samtalerum op."
@@ -4161,11 +4606,19 @@ msgstr "topic [nyt emne]: Vis eller ændr emnet."
msgid "ban &lt;user&gt; [reason]: Ban a user from the room."
msgstr "ban &lt;user&gt; [reason]: Udvis en bruger fra rummet."
-msgid "affiliate &lt;user&gt; &lt;owner|admin|member|outcast|none&gt;: Set a user's affiliation with the room."
-msgstr "affiliate &lt;bruger&gt; &lt;owner|admin|member|outcast|none&gt;: Indstil en brugerstilknytning til rummet."
+msgid ""
+"affiliate &lt;user&gt; &lt;owner|admin|member|outcast|none&gt;: Set a user's "
+"affiliation with the room."
+msgstr ""
+"affiliate &lt;bruger&gt; &lt;owner|admin|member|outcast|none&gt;: Indstil en "
+"brugerstilknytning til rummet."
-msgid "role &lt;user&gt; &lt;moderator|participant|visitor|none&gt;: Set a user's role in the room."
-msgstr "role &lt;bruger&gt; &lt;moderator|participant|visitor|none&gt;: Indstil en brugers rolle i rummet."
+msgid ""
+"role &lt;user&gt; &lt;moderator|participant|visitor|none&gt;: Set a user's "
+"role in the room."
+msgstr ""
+"role &lt;bruger&gt; &lt;moderator|participant|visitor|none&gt;: Indstil en "
+"brugers rolle i rummet."
msgid "invite &lt;user&gt; [message]: Invite a user to the room."
msgstr "invite &lt;bruger&gt; [besked]: Invitér en bruger til rummet."
@@ -4176,8 +4629,11 @@ msgstr "join: &lt;room&gt; [password]: Tilslut samtalerum på denne server."
msgid "kick &lt;user&gt; [reason]: Kick a user from the room."
msgstr "kick &lt;user&gt; [reason]: Spark en bruger fra rummet."
-msgid "msg &lt;user&gt; &lt;message&gt;: Send a private message to another user."
-msgstr "msg &lt;bruger&gt; &lt;besked&gt;: Send en privat besked til en anden bruger."
+msgid ""
+"msg &lt;user&gt; &lt;message&gt;: Send a private message to another user."
+msgstr ""
+"msg &lt;bruger&gt; &lt;besked&gt;: Send en privat besked til en anden "
+"bruger."
msgid "ping &lt;jid&gt;:\tPing a user/component/server."
msgstr "ping &lt;jid&gt;:\tPing en bruger/komponent/server."
@@ -4264,8 +4720,12 @@ msgstr "Ukendt fejlkode i tilstedeværelse"
msgid "Create New Room"
msgstr "Opret nyt rum"
-msgid "You are creating a new room. Would you like to configure it, or accept the default settings?"
-msgstr "Du opretter et nyt rum. Vil du konfigurere det, eller bruge standardindstillingerne?"
+msgid ""
+"You are creating a new room. Would you like to configure it, or accept the "
+"default settings?"
+msgstr ""
+"Du opretter et nyt rum. Vil du konfigurere det, eller bruge "
+"standardindstillingerne?"
msgid "_Configure Room"
msgstr "_Konfigurér rum"
@@ -4281,9 +4741,26 @@ msgstr "Fejl ved tilslutning til samtale %s"
msgid "Error in chat %s"
msgstr "Fejl i samtale %s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "En fejl skete ved forsøg på at åbne filen."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "Filoverførsel fejlede"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Kunne ikke åbne fil \"%s\": %s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
-msgstr "Ikke i stand til at sende fil til %s, brugeren understøtter ikke filoverførsler"
+msgstr ""
+"Ikke i stand til at sende fil til %s, brugeren understøtter ikke "
+"filoverførsler"
msgid "File Send Failed"
msgstr "Afsendelse af fil fejlede"
@@ -4298,15 +4775,14 @@ msgstr "Ikke i stand til at sende fil til %s, brugeren er ikke tilkoblet"
#, c-format
msgid "Unable to send file to %s, not subscribed to user presence"
-msgstr "Ikke i stand til at sende fil til %s, brugeren understøtter ikke filoverførsler"
+msgstr ""
+"Ikke i stand til at sende fil til %s, brugeren understøtter ikke "
+"filoverførsler"
#, c-format
msgid "Please select the resource of %s to which you would like to send a file"
msgstr "Vælg ressourcen fra %s som du gerne vil sende en fil"
-msgid "Select a Resource"
-msgstr "Vælg en ressource"
-
msgid "Edit User Mood"
msgstr "Redigér bruger humør"
@@ -4325,8 +4801,12 @@ msgstr "Indstil brugerkælenavn"
msgid "Please specify a new nickname for you."
msgstr "Indtast dit nye kælenavn for dig."
-msgid "This information is visible to all contacts on your contact list, so choose something appropriate."
-msgstr "Denne information er synlig for alle kontakter på din kontaktliste, så vælg noget passende."
+msgid ""
+"This information is visible to all contacts on your contact list, so choose "
+"something appropriate."
+msgstr ""
+"Denne information er synlig for alle kontakter på din kontaktliste, så vælg "
+"noget passende."
msgid "Set Nickname..."
msgstr "Indstil kælenavn..."
@@ -4355,12 +4835,20 @@ msgid "Buddy list synchronization issue in %s (%s)"
msgstr "Problemer med synkronisering af venneliste i %s (%s)"
#, c-format
-msgid "%s on the local list is inside the group \"%s\" but not on the server list. Do you want this buddy to be added?"
-msgstr "%s på den lokale liste er i gruppen \"%s\" men ikke på serverlisten. Vil du have denne ven tilføjet?"
+msgid ""
+"%s on the local list is inside the group \"%s\" but not on the server list. "
+"Do you want this buddy to be added?"
+msgstr ""
+"%s på den lokale liste er i gruppen \"%s\" men ikke på serverlisten. Vil du "
+"have denne ven tilføjet?"
#, c-format
-msgid "%s is on the local list but not on the server list. Do you want this buddy to be added?"
-msgstr "%s er på den lokale liste men ikke på serverlisten. Vil du have denne ven tilføjet?"
+msgid ""
+"%s is on the local list but not on the server list. Do you want this buddy "
+"to be added?"
+msgstr ""
+"%s er på den lokale liste men ikke på serverlisten. Vil du have denne ven "
+"tilføjet?"
#, c-format
msgid "Unable to parse message"
@@ -4626,8 +5114,12 @@ msgstr "Sæt mobiltelefonnummer."
msgid "Allow MSN Mobile pages?"
msgstr "Tillad MSN mobiltelefon sider?"
-msgid "Do you want to allow or disallow people on your buddy list to send you MSN Mobile pages to your cell phone or other mobile device?"
-msgstr "Vil du tillade eller nægte folk på din venneliste at sende dig MSN mobiltelefon sider til din mobiltelefon eller andre mobilenheder?"
+msgid ""
+"Do you want to allow or disallow people on your buddy list to send you MSN "
+"Mobile pages to your cell phone or other mobile device?"
+msgstr ""
+"Vil du tillade eller nægte folk på din venneliste at sende dig MSN "
+"mobiltelefon sider til din mobiltelefon eller andre mobilenheder?"
msgid "Allow"
msgstr "Tillad"
@@ -4643,7 +5135,8 @@ msgid "No text is blocked for this account."
msgstr "Ingen tekst er blokeret for denne konto."
#, c-format
-msgid "MSN servers are currently blocking the following regular expressions:<br/>%s"
+msgid ""
+"MSN servers are currently blocking the following regular expressions:<br/>%s"
msgstr "MSN-servere blokerer følgende regulære udtryk:<br/>%s"
msgid "This account does not have email enabled."
@@ -4734,7 +5227,9 @@ msgid "Initiate _Chat"
msgstr "Åbn _samtale"
msgid "SSL support is needed for MSN. Please install a supported SSL library."
-msgstr "SSL-understøttelse er krævet til MSN. Installér et understøttet SSL-bibliotek."
+msgstr ""
+"SSL-understøttelse er krævet til MSN. Installér et understøttet SSL-"
+"bibliotek."
msgid "Failed to connect to server."
msgstr "Kunne ikke forbinde til server."
@@ -4878,11 +5373,21 @@ msgstr "Hjemmeside"
msgid "The user has not created a public profile."
msgstr "Brugeren har ikke oprettet en offentlig profil."
-msgid "MSN reported not being able to find the user's profile. This either means that the user does not exist, or that the user exists but has not created a public profile."
-msgstr "MSN rapporterede tilbage, at den ikke kunne finde brugerens profil. Dette betyder enten at brugeren ikke eksisterer, eller at brugeren ikke har oprettet en offentlig profil."
+msgid ""
+"MSN reported not being able to find the user's profile. This either means "
+"that the user does not exist, or that the user exists but has not created a "
+"public profile."
+msgstr ""
+"MSN rapporterede tilbage, at den ikke kunne finde brugerens profil. Dette "
+"betyder enten at brugeren ikke eksisterer, eller at brugeren ikke har "
+"oprettet en offentlig profil."
-msgid "Could not find any information in the user's profile. The user most likely does not exist."
-msgstr "Kunne ikke finde nogle oplysninger i brugerens profil. Brugeren eksisterer højst sandsynligt ikke."
+msgid ""
+"Could not find any information in the user's profile. The user most likely "
+"does not exist."
+msgstr ""
+"Kunne ikke finde nogle oplysninger i brugerens profil. Brugeren eksisterer "
+"højst sandsynligt ikke."
msgid "View web profile"
msgstr "Se internet-profil"
@@ -4977,24 +5482,38 @@ msgstr "Kunne ikke slette gruppe"
#, c-format
msgid ""
-"The MSN server will shut down for maintenance in %d minute. You will automatically be signed out at that time. Please finish any conversations in progress.\n"
+"The MSN server will shut down for maintenance in %d minute. You will "
+"automatically be signed out at that time. Please finish any conversations "
+"in progress.\n"
"\n"
-"After the maintenance has been completed, you will be able to successfully sign in."
+"After the maintenance has been completed, you will be able to successfully "
+"sign in."
msgid_plural ""
-"The MSN server will shut down for maintenance in %d minutes. You will automatically be signed out at that time. Please finish any conversations in progress.\n"
+"The MSN server will shut down for maintenance in %d minutes. You will "
+"automatically be signed out at that time. Please finish any conversations "
+"in progress.\n"
"\n"
-"After the maintenance has been completed, you will be able to successfully sign in."
+"After the maintenance has been completed, you will be able to successfully "
+"sign in."
msgstr[0] ""
-"MSN-serveren vil blive lukket ned for vedligeholdelse om %d minut. Du vil automatisk blive logget af på det tidspunkt. Færdiggør alle igangværende samtaler.\n"
+"MSN-serveren vil blive lukket ned for vedligeholdelse om %d minut. Du vil "
+"automatisk blive logget af på det tidspunkt. Færdiggør alle igangværende "
+"samtaler.\n"
"\n"
"Efter vedligeholdelsen er blevet gennemført, kan du logge ind igen."
msgstr[1] ""
-"MSN-serveren vil blive lukket ned for vedligeholdelse om %d minutter. Du vil automatisk blive logget af på det tidspunkt. Færdiggør alle igangværende samtaler.\n"
+"MSN-serveren vil blive lukket ned for vedligeholdelse om %d minutter. Du vil "
+"automatisk blive logget af på det tidspunkt. Færdiggør alle igangværende "
+"samtaler.\n"
"\n"
"Efter vedligeholdelsen er blevet gennemført, kan du logge ind igen."
-msgid "Message was not sent because the system is unavailable. This normally happens when the user is blocked or does not exist."
-msgstr "Besked blev ikke sendt, fordi systemet ikke er tilgængeligt. Dette sker normalt når brugeren er blokeret eller ikke findes."
+msgid ""
+"Message was not sent because the system is unavailable. This normally "
+"happens when the user is blocked or does not exist."
+msgstr ""
+"Besked blev ikke sendt, fordi systemet ikke er tilgængeligt. Dette sker "
+"normalt når brugeren er blokeret eller ikke findes."
msgid "Message was not sent because messages are being sent too quickly."
msgstr "Besked blev ikke sendt, fordi beskederne sendes for hurtigt."
@@ -5032,7 +5551,8 @@ msgid "You have signed on from another location."
msgstr "Du er logget ind fra en anden maskine."
msgid "The MSN servers are temporarily unavailable. Please wait and try again."
-msgstr "MSN-serverne er midlertidigt utilgængelige. Vent og forsøg igen senere."
+msgstr ""
+"MSN-serverne er midlertidigt utilgængelige. Vent og forsøg igen senere."
msgid "The MSN servers are going down temporarily."
msgstr "MSN-serverne lukkes midlertidigt."
@@ -5041,8 +5561,10 @@ msgstr "MSN-serverne lukkes midlertidigt."
msgid "Unable to authenticate: %s"
msgstr "Kunne ikke godkende: %s"
-msgid "Your MSN buddy list is temporarily unavailable. Please wait and try again."
-msgstr "Din MSN venneliste er midlertidigt utilgængelig. Vent og førsøg igen senere."
+msgid ""
+"Your MSN buddy list is temporarily unavailable. Please wait and try again."
+msgstr ""
+"Din MSN venneliste er midlertidigt utilgængelig. Vent og førsøg igen senere."
msgid "Handshaking"
msgstr "Forhandler"
@@ -5072,7 +5594,9 @@ msgid "Out To Lunch"
msgstr "Ude til frokost"
msgid "Message may have not been sent because a timeout occurred:"
-msgstr "Besked er måske ikke blevet sendt på grund af et tidsudløb der overskred grænsen:"
+msgstr ""
+"Besked er måske ikke blevet sendt på grund af et tidsudløb der overskred "
+"grænsen:"
msgid "Message could not be sent, not allowed while invisible:"
msgstr "Besked kunne ikke sendes, ikke tilladt imens du er usynlig:"
@@ -5086,10 +5610,16 @@ msgstr "Besked kunne ikke sendes på grund af en forbindelsesfejl:"
msgid "Message could not be sent because we are sending too quickly:"
msgstr "Besked kunne ikke sendes, fordi vi sender for hurtigt:"
-msgid "Message could not be sent because we were unable to establish a session with the server. This is likely a server problem, try again in a few minutes:"
-msgstr "Besked kunne ikke sendes, fordi vi ikke kunne etablere en session med serveren. Dette er højst sandsynligt et server problem, prøv igen om nogle få minutter:"
+msgid ""
+"Message could not be sent because we were unable to establish a session with "
+"the server. This is likely a server problem, try again in a few minutes:"
+msgstr ""
+"Besked kunne ikke sendes, fordi vi ikke kunne etablere en session med "
+"serveren. Dette er højst sandsynligt et server problem, prøv igen om nogle "
+"få minutter:"
-msgid "Message could not be sent because an error with the switchboard occurred:"
+msgid ""
+"Message could not be sent because an error with the switchboard occurred:"
msgstr "Besked kunne ikke sendes på grund af en fejl med switchboard:"
msgid "Message may have not been sent because an unknown error occurred:"
@@ -5182,10 +5712,18 @@ msgid "IM Friends"
msgstr "IM-venner"
#, c-format
-msgid "%d buddy was added or updated from the server (including buddies already on the server-side list)"
-msgid_plural "%d buddies were added or updated from the server (including buddies already on the server-side list)"
-msgstr[0] "%d ven blev tilføjet eller opdateret fra serveren (inkluderet venner som allerede findes på serverlisten)"
-msgstr[1] "%d venner blev tilføjet eller opdateret fra serveren (inkluderet venner som allerede findes på serverlisten)"
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+"%d ven blev tilføjet eller opdateret fra serveren (inkluderet venner som "
+"allerede findes på serverlisten)"
+msgstr[1] ""
+"%d venner blev tilføjet eller opdateret fra serveren (inkluderet venner som "
+"allerede findes på serverlisten)"
msgid "Add contacts from server"
msgstr "Tilføj kontakter fra server"
@@ -5201,8 +5739,15 @@ msgid "Protocol error, code %d: %s"
msgstr "Protokol fejlkode %d: %s"
#, c-format
-msgid "%s Your password is %d characters, greater than the expected maximum length of %d for MySpaceIM. Please shorten your password at http://profileedit.myspace.com/index.cfm?fuseaction=accountSettings.changePassword and try again."
-msgstr "%s Din adgangskode er %d karakterer og dermed større end det forventede maksimum på %d for MySpaceIM. Forkort din adgangskode på http://profileedit.myspace.com/index.cfm?fuseaction=accountSettings.changePassword og prøv igen."
+msgid ""
+"%s Your password is %d characters, greater than the expected maximum length "
+"of %d for MySpaceIM. Please shorten your password at http://profileedit."
+"myspace.com/index.cfm?fuseaction=accountSettings.changePassword and try "
+"again."
+msgstr ""
+"%s Din adgangskode er %d karakterer og dermed større end det forventede "
+"maksimum på %d for MySpaceIM. Forkort din adgangskode på http://profileedit."
+"myspace.com/index.cfm?fuseaction=accountSettings.changePassword og prøv igen."
msgid "MySpaceIM Error"
msgstr "MySpaceIM-fejl"
@@ -5244,8 +5789,12 @@ msgstr "Manglende kode"
msgid "The RC4 cipher could not be found"
msgstr "RC4 cipher kunne ikke findes"
-msgid "Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will not be loaded."
-msgstr "Opgradér til en libpurple med RC4-understøttelse (>=2.0.1). MySpaceIM-udvidelsesmodul vil ikke blive indlæst."
+msgid ""
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
+"Opgradér til en libpurple med RC4-understøttelse (>=2.0.1). MySpaceIM-"
+"udvidelsesmodul vil ikke blive indlæst."
msgid "Add friends from MySpace.com"
msgstr "Tilføj venner fra MySpace.com"
@@ -5264,7 +5813,9 @@ msgid "myim URL handler"
msgstr "myim URL-håndtering"
msgid "No suitable MySpaceIM account could be found to open this myim URL."
-msgstr "Der kunne ikke findes nogen passende MySpaceIM-konto til at åbne denne myim URL."
+msgstr ""
+"Der kunne ikke findes nogen passende MySpaceIM-konto til at åbne denne myim "
+"URL."
msgid "Enable the proper MySpaceIM account and try again."
msgstr "Aktivér den korrekte MySpaceIM-konto og prøv igen."
@@ -5521,8 +6072,12 @@ msgstr "Forkert brugernavn eller adgangskode"
msgid "Could not recognize the host of the username you entered"
msgstr "Kunne ikke genkende værten på brugernavnet du indtastede"
-msgid "Your account has been disabled because too many incorrect passwords were entered"
-msgstr "Din konto er blevet deaktiveret fordi for mange ugyldige adgangskoder blev indtastet"
+msgid ""
+"Your account has been disabled because too many incorrect passwords were "
+"entered"
+msgstr ""
+"Din konto er blevet deaktiveret fordi for mange ugyldige adgangskoder blev "
+"indtastet"
msgid "You cannot add the same person twice to a conversation"
msgstr "Du kan ikke tilføje den samme person to gange til en samtale"
@@ -5542,8 +6097,11 @@ msgstr "Inkompatibel protokolversion"
msgid "The user has blocked you"
msgstr "Brugeren har blokeret dig"
-msgid "This evaluation version does not allow more than ten users to log in at one time"
-msgstr "Denne prøve-version tillader ikke mere end 10 brugere logget ind på samme tid"
+msgid ""
+"This evaluation version does not allow more than ten users to log in at one "
+"time"
+msgstr ""
+"Denne prøve-version tillader ikke mere end 10 brugere logget ind på samme tid"
msgid "The user is either offline or you are blocked"
msgstr "Brugeren er enten afkoblet, eller du er blokeret"
@@ -5582,12 +6140,20 @@ msgid "Unable to send message. Could not create the conference (%s)."
msgstr "Kunne ikke sende besked. Kunne ikke oprette konferencen (%s)."
#, c-format
-msgid "Unable to move user %s to folder %s in the server side list. Error while creating folder (%s)."
-msgstr "Kunne ikke flytte bruger %s til mappe %s i serverlisten. Fejl skete, da mappe skulle oprettes (%s)."
+msgid ""
+"Unable to move user %s to folder %s in the server side list. Error while "
+"creating folder (%s)."
+msgstr ""
+"Kunne ikke flytte bruger %s til mappe %s i serverlisten. Fejl skete, da "
+"mappe skulle oprettes (%s)."
#, c-format
-msgid "Unable to add %s to your buddy list. Error creating folder in server side list (%s)."
-msgstr "Kunne ikke tilføje %s til din venneliste. Fejl ved opretning af mappe i serverliste (%s)."
+msgid ""
+"Unable to add %s to your buddy list. Error creating folder in server side "
+"list (%s)."
+msgstr ""
+"Kunne ikke tilføje %s til din venneliste. Fejl ved opretning af mappe i "
+"serverliste (%s)."
#, c-format
msgid "Could not get details for user %s (%s)."
@@ -5678,11 +6244,17 @@ msgid "You have been logged out because you logged in at another workstation."
msgstr "Du er blevet logget af, fordi du er logget på en anden maskine."
#, c-format
-msgid "%s appears to be offline and did not receive the message that you just sent."
-msgstr "%s ser ud til at være afkoblet, og har ikke modtaget beskeden du har sendt."
+msgid ""
+"%s appears to be offline and did not receive the message that you just sent."
+msgstr ""
+"%s ser ud til at være afkoblet, og har ikke modtaget beskeden du har sendt."
-msgid "Unable to connect to server. Please enter the address of the server you wish to connect to."
-msgstr "Kunne ikke forbinde til server. Indtast adressen på serveren du vil forbinde til."
+msgid ""
+"Unable to connect to server. Please enter the address of the server you wish "
+"to connect to."
+msgstr ""
+"Kunne ikke forbinde til server. Indtast adressen på serveren du vil forbinde "
+"til."
msgid "Error. SSL support is not installed."
msgstr "Fejl. SSL-understøttelse er ikke installeret."
@@ -5781,8 +6353,12 @@ msgid "Direct IM established"
msgstr "Direkte besked etableret"
#, c-format
-msgid "%s tried to send you a %s file, but we only allow files up to %s over Direct IM. Try using file transfer instead.\n"
-msgstr "%s forsøgte at sende dig en %s fil, men vi tillader kun filer op til %s over direkte besked. Prøv at bruge filoverførelse i stedet for.\n"
+msgid ""
+"%s tried to send you a %s file, but we only allow files up to %s over Direct "
+"IM. Try using file transfer instead.\n"
+msgstr ""
+"%s forsøgte at sende dig en %s fil, men vi tillader kun filer op til %s over "
+"direkte besked. Prøv at bruge filoverførelse i stedet for.\n"
#, c-format
msgid "File %s is %s, which is larger than the maximum size of %s."
@@ -5860,12 +6436,24 @@ msgstr "Kø fuld"
msgid "Not while on AOL"
msgstr "Ikke samtidig med AOL"
-msgid "(There was an error receiving this message. The buddy you are speaking with is probably using a different encoding than expected. If you know what encoding he is using, you can specify it in the advanced account options for your AIM/ICQ account.)"
-msgstr "(Der opstod en fejl ved modtagelse af denne besked. Vennen du taler med bruger måske en anden indkodning end forventet. Hvis du kender indkodningen, som han bruger, kan du angive den i avancerede kontoindstillinger for din AIM/ICQ-konto.)"
+msgid ""
+"(There was an error receiving this message. The buddy you are speaking with "
+"is probably using a different encoding than expected. If you know what "
+"encoding he is using, you can specify it in the advanced account options for "
+"your AIM/ICQ account.)"
+msgstr ""
+"(Der opstod en fejl ved modtagelse af denne besked. Vennen du taler med "
+"bruger måske en anden indkodning end forventet. Hvis du kender indkodningen, "
+"som han bruger, kan du angive den i avancerede kontoindstillinger for din "
+"AIM/ICQ-konto.)"
#, c-format
-msgid "(There was an error receiving this message. Either you and %s have different encodings selected, or %s has a buggy client.)"
-msgstr "(Der opstod en fejl ved modtagelse af denne besked. Enten har du eller %s valgt forskellige indkodninger, eller har %s en fejlramt klient.)"
+msgid ""
+"(There was an error receiving this message. Either you and %s have "
+"different encodings selected, or %s has a buggy client.)"
+msgstr ""
+"(Der opstod en fejl ved modtagelse af denne besked. Enten har du eller %s "
+"valgt forskellige indkodninger, eller har %s en fejlramt klient.)"
#. Label
msgid "Buddy Icon"
@@ -5985,10 +6573,17 @@ msgid "Finalizing connection"
msgstr "Færddiggører forbindelse"
#, c-format
-msgid "Unable to login: Could not sign on as %s because the username is invalid. Usernames must be a valid email address, or start with a letter and contain only letters, numbers and spaces, or contain only numbers."
-msgstr "Kunne ikke logge ind: Kunne ikke logge på som %s, fordi brugernavnet er ugyldigt. Brugernavne skal være en gyldig e-postadresse, eller starte med et bogstav og kun indeholde bogstaver, tal eller mellemrum, eller kun indeholde tal."
+msgid ""
+"Unable to login: Could not sign on as %s because the username is invalid. "
+"Usernames must be a valid email address, or start with a letter and contain "
+"only letters, numbers and spaces, or contain only numbers."
+msgstr ""
+"Kunne ikke logge ind: Kunne ikke logge på som %s, fordi brugernavnet er "
+"ugyldigt. Brugernavne skal være en gyldig e-postadresse, eller starte med et "
+"bogstav og kun indeholde bogstaver, tal eller mellemrum, eller kun indeholde "
+"tal."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr "Ugyldigt brugernavn."
@@ -6004,10 +6599,14 @@ msgstr "Din konto er ikke aktiv for øjeblikket."
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "AOL Instant Messenger tjenesten er midlertidigt utilgængelig."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
-msgid "You have been connecting and disconnecting too frequently. Wait ten minutes and try again. If you continue to try, you will need to wait even longer."
-msgstr "Du er logget ind og ud for mange gange indenfor et kort tidsrum. Vent ti minutter og prøv så igen, for ellers skal du bare vente endnu længere."
+msgid ""
+"You have been connecting and disconnecting too frequently. Wait ten minutes "
+"and try again. If you continue to try, you will need to wait even longer."
+msgstr ""
+"Du er logget ind og ud for mange gange indenfor et kort tidsrum. Vent ti "
+"minutter og prøv så igen, for ellers skal du bare vente endnu længere."
#, c-format
msgid "The client version you are using is too old. Please upgrade at %s"
@@ -6036,7 +6635,9 @@ msgstr "_O.k."
#, c-format
msgid "You may be disconnected shortly. If so, check %s for updates."
-msgstr "Du vil måske blive frakoblet snart. Hvis tilfældet, kontrollér %s for opdateringer."
+msgstr ""
+"Du vil måske blive frakoblet snart. Hvis tilfældet, kontrollér %s for "
+"opdateringer."
msgid "Unable to get a valid AIM login hash."
msgstr "Kunne ikke hente et gyldigt AIM-logindhash."
@@ -6071,10 +6672,12 @@ msgstr "Besked for nægtelse af godkendelses anmodning:"
#, c-format
msgid ""
-"The user %u has denied your request to add them to your buddy list for the following reason:\n"
+"The user %u has denied your request to add them to your buddy list for the "
+"following reason:\n"
"%s"
msgstr ""
-"Brugeren %u har nægtet din anmodning om at tilføje sig til din venneliste, af den følgende grund:\n"
+"Brugeren %u har nægtet din anmodning om at tilføje sig til din venneliste, "
+"af den følgende grund:\n"
"%s"
msgid "ICQ authorization denied."
@@ -6147,22 +6750,37 @@ msgstr[0] "Du har ikke modtaget %hu besked fra %s, fordi den var for store."
msgstr[1] "Du har ikke modtaget %hu beskeder fra %s, fordi de var for store."
#, c-format
-msgid "You missed %hu message from %s because the rate limit has been exceeded."
-msgid_plural "You missed %hu messages from %s because the rate limit has been exceeded."
-msgstr[0] "Du har ikke modtaget %hu besked fra %s, fordi den blev sendt for hurtigt."
-msgstr[1] "Du har ikke modtaget %hu beskeder fra %s, fordi de blev sendt for hurtigt."
+msgid ""
+"You missed %hu message from %s because the rate limit has been exceeded."
+msgid_plural ""
+"You missed %hu messages from %s because the rate limit has been exceeded."
+msgstr[0] ""
+"Du har ikke modtaget %hu besked fra %s, fordi den blev sendt for hurtigt."
+msgstr[1] ""
+"Du har ikke modtaget %hu beskeder fra %s, fordi de blev sendt for hurtigt."
#, c-format
-msgid "You missed %hu message from %s because his/her warning level is too high."
-msgid_plural "You missed %hu messages from %s because his/her warning level is too high."
-msgstr[0] "Du har ikke modtaget %hu besked fra %s, fordi hans/hendes advarselsniveau er for højt."
-msgstr[1] "Du har ikke modtaget %hu beskeder fra %s, fordi hans/hendes advarselsniveau er for højt."
+msgid ""
+"You missed %hu message from %s because his/her warning level is too high."
+msgid_plural ""
+"You missed %hu messages from %s because his/her warning level is too high."
+msgstr[0] ""
+"Du har ikke modtaget %hu besked fra %s, fordi hans/hendes advarselsniveau er "
+"for højt."
+msgstr[1] ""
+"Du har ikke modtaget %hu beskeder fra %s, fordi hans/hendes advarselsniveau "
+"er for højt."
#, c-format
msgid "You missed %hu message from %s because your warning level is too high."
-msgid_plural "You missed %hu messages from %s because your warning level is too high."
-msgstr[0] "Du har ikke modtaget %hu besked fra %s, fordi dit advarselsniveau er for højt."
-msgstr[1] "Du har ikke modtaget %hu beskeder fra %s, fordi dit advarselsniveau er for højt."
+msgid_plural ""
+"You missed %hu messages from %s because your warning level is too high."
+msgstr[0] ""
+"Du har ikke modtaget %hu besked fra %s, fordi dit advarselsniveau er for "
+"højt."
+msgstr[1] ""
+"Du har ikke modtaget %hu beskeder fra %s, fordi dit advarselsniveau er for "
+"højt."
#, c-format
msgid "You missed %hu message from %s for an unknown reason."
@@ -6170,7 +6788,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] "Du har ikke modtaget %hu besked fra %s pga. en ukendt årsag."
msgstr[1] "Du har ikke modtaget %hu beskeder fra %s pga. en ukendt årsag."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "Kunne ikke sende besked: %s"
@@ -6199,11 +6817,19 @@ msgid "Your AIM connection may be lost."
msgstr "Din AIM forbindelse kan være afbrudt."
#. The conversion failed!
-msgid "[Unable to display a message from this user because it contained invalid characters.]"
-msgstr "[Ude af stand til at vise en besked fra denne bruger, fordi den indeholdte ugyldige bogstaver.]"
+msgid ""
+"[Unable to display a message from this user because it contained invalid "
+"characters.]"
+msgstr ""
+"[Ude af stand til at vise en besked fra denne bruger, fordi den indeholdte "
+"ugyldige bogstaver.]"
-msgid "The last action you attempted could not be performed because you are over the rate limit. Please wait 10 seconds and try again."
-msgstr "Den sidste handling blev ikke udført, fordi du har overskredet grænsen. Vent i 10 sekunder og prøv igen."
+msgid ""
+"The last action you attempted could not be performed because you are over "
+"the rate limit. Please wait 10 seconds and try again."
+msgstr ""
+"Den sidste handling blev ikke udført, fordi du har overskredet grænsen. Vent "
+"i 10 sekunder og prøv igen."
#, c-format
msgid "You have been disconnected from chat room %s."
@@ -6256,28 +6882,48 @@ msgid "Account Confirmation Requested"
msgstr "Der er anmodet om konto bekræftelse"
#, c-format
-msgid "Error 0x%04x: Unable to format username because the requested name differs from the original."
-msgstr "Fejl 0x%04x: Kunne ikke formattere brugernavn fordi det anmodede brugernavn er forskelligt fra det oprindelige."
+msgid ""
+"Error 0x%04x: Unable to format username because the requested name differs "
+"from the original."
+msgstr ""
+"Fejl 0x%04x: Kunne ikke formattere brugernavn fordi det anmodede brugernavn "
+"er forskelligt fra det oprindelige."
#, c-format
msgid "Error 0x%04x: Unable to format username because it is invalid."
msgstr "Fejl 0x%04x: Kunne ikke formattere brugernavn fordi det er ugyldigt."
#, c-format
-msgid "Error 0x%04x: Unable to format username because the requested name is too long."
-msgstr "Fejl 0x%04x: Kunne ikke formattere brugernavn fordi det anmodede navn er for langt."
+msgid ""
+"Error 0x%04x: Unable to format username because the requested name is too "
+"long."
+msgstr ""
+"Fejl 0x%04x: Kunne ikke formattere brugernavn fordi det anmodede navn er for "
+"langt."
#, c-format
-msgid "Error 0x%04x: Unable to change email address because there is already a request pending for this username."
-msgstr "Fejl 0x%04x: Kan ikke ændre e-postadresse, fordi der allerede er en anmodning ventende for dette brugernavn."
+msgid ""
+"Error 0x%04x: Unable to change email address because there is already a "
+"request pending for this username."
+msgstr ""
+"Fejl 0x%04x: Kan ikke ændre e-postadresse, fordi der allerede er en "
+"anmodning ventende for dette brugernavn."
#, c-format
-msgid "Error 0x%04x: Unable to change email address because the given address has too many usernames associated with it."
-msgstr "Fejl 0x%04x: Kan ikke ændre e-postadresse, fordi den angivne adresse har for mange brugernavne tilknyttet sig."
+msgid ""
+"Error 0x%04x: Unable to change email address because the given address has "
+"too many usernames associated with it."
+msgstr ""
+"Fejl 0x%04x: Kan ikke ændre e-postadresse, fordi den angivne adresse har for "
+"mange brugernavne tilknyttet sig."
#, c-format
-msgid "Error 0x%04x: Unable to change email address because the given address is invalid."
-msgstr "Fejl 0x%04x: Kan ikke ændre e-postadresse, fordi den angivne adresse er ugyldig."
+msgid ""
+"Error 0x%04x: Unable to change email address because the given address is "
+"invalid."
+msgstr ""
+"Fejl 0x%04x: Kan ikke ændre e-postadresse, fordi den angivne adresse er "
+"ugyldig."
#, c-format
msgid "Error 0x%04x: Unknown error."
@@ -6293,36 +6939,67 @@ msgstr "%s's e-postadresse er %s"
msgid "Account Info"
msgstr "Konto Oplysninger"
-msgid "Your IM Image was not sent. You must be Direct Connected to send IM Images."
-msgstr "Dit billede blev ikke sendt. Du skal være direkte forbundet for at sende billeder."
+msgid ""
+"Your IM Image was not sent. You must be Direct Connected to send IM Images."
+msgstr ""
+"Dit billede blev ikke sendt. Du skal være direkte forbundet for at sende "
+"billeder."
msgid "Unable to set AIM profile."
msgstr "Kunne ikke ændre AIM profil."
-msgid "You have probably requested to set your profile before the login procedure completed. Your profile remains unset; try setting it again when you are fully connected."
-msgstr "Du har sikkert anmodet om at sætte din profil før login-processen er blevet færdig. Din profil er ikke sat; prøv at sætte den igen når du er færdig med at forbinde til serveren."
+msgid ""
+"You have probably requested to set your profile before the login procedure "
+"completed. Your profile remains unset; try setting it again when you are "
+"fully connected."
+msgstr ""
+"Du har sikkert anmodet om at sætte din profil før login-processen er blevet "
+"færdig. Din profil er ikke sat; prøv at sætte den igen når du er færdig med "
+"at forbinde til serveren."
#, c-format
-msgid "The maximum profile length of %d byte has been exceeded. It has been truncated for you."
-msgid_plural "The maximum profile length of %d bytes has been exceeded. It has been truncated for you."
-msgstr[0] "Profil-længdens maksimale størrelse på %d byte er blevet overskredet. Den er blevet forkortet for dig."
-msgstr[1] "Profil-længdens maksimale størrelse på %d bytes er blevet overskredet. Den er blevet forkortet for dig."
+msgid ""
+"The maximum profile length of %d byte has been exceeded. It has been "
+"truncated for you."
+msgid_plural ""
+"The maximum profile length of %d bytes has been exceeded. It has been "
+"truncated for you."
+msgstr[0] ""
+"Profil-længdens maksimale størrelse på %d byte er blevet overskredet. Den "
+"er blevet forkortet for dig."
+msgstr[1] ""
+"Profil-længdens maksimale størrelse på %d bytes er blevet overskredet. Den "
+"er blevet forkortet for dig."
msgid "Profile too long."
msgstr "Profil for lang."
#, c-format
-msgid "The maximum away message length of %d byte has been exceeded. It has been truncated for you."
-msgid_plural "The maximum away message length of %d bytes has been exceeded. It has been truncated for you."
-msgstr[0] "Fraværsbeskedens maksimale længde på %d byte er blevet overskredet. Den er blevet forkortet for dig."
-msgstr[1] "Fraværsbeskedens maksimale længde på %d bytes er blevet overskredet. Den er blevet forkortet for dig."
+msgid ""
+"The maximum away message length of %d byte has been exceeded. It has been "
+"truncated for you."
+msgid_plural ""
+"The maximum away message length of %d bytes has been exceeded. It has been "
+"truncated for you."
+msgstr[0] ""
+"Fraværsbeskedens maksimale længde på %d byte er blevet overskredet. Den er "
+"blevet forkortet for dig."
+msgstr[1] ""
+"Fraværsbeskedens maksimale længde på %d bytes er blevet overskredet. Den er "
+"blevet forkortet for dig."
msgid "Away message too long."
msgstr "Fraværsbesked for lang."
#, c-format
-msgid "Could not add the buddy %s because the username is invalid. Usernames must be a valid email address, or start with a letter and contain only letters, numbers and spaces, or contain only numbers."
-msgstr "Kunne ikke tilføje vennen %s, fordi brugernavnet er ugyldigt. Brugernavne skal være en gyldig e-postadresse, eller starte med ét bogstav og kun indeholde bogstaver, tal og mellemrum, eller kun indeholde tal."
+msgid ""
+"Could not add the buddy %s because the username is invalid. Usernames must "
+"be a valid email address, or start with a letter and contain only letters, "
+"numbers and spaces, or contain only numbers."
+msgstr ""
+"Kunne ikke tilføje vennen %s, fordi brugernavnet er ugyldigt. Brugernavne "
+"skal være en gyldig e-postadresse, eller starte med ét bogstav og kun "
+"indeholde bogstaver, tal og mellemrum, eller kun indeholde tal."
msgid "Unable to Add"
msgstr "Ikke i stand til at tilføje"
@@ -6330,15 +7007,24 @@ msgstr "Ikke i stand til at tilføje"
msgid "Unable to Retrieve Buddy List"
msgstr "Kunne ikke hente venneliste"
-msgid "The AIM servers were temporarily unable to send your buddy list. Your buddy list is not lost, and will probably become available in a few minutes."
-msgstr "AIM-serverne var midlertidigt ude af stand til at sende din venneliste. Din venneliste er ikke tabt, og vil sikkert blive tilgængelig indenfor et par minutter."
+msgid ""
+"The AIM servers were temporarily unable to send your buddy list. Your buddy "
+"list is not lost, and will probably become available in a few minutes."
+msgstr ""
+"AIM-serverne var midlertidigt ude af stand til at sende din venneliste. Din "
+"venneliste er ikke tabt, og vil sikkert blive tilgængelig indenfor et par "
+"minutter."
msgid "Orphans"
msgstr "Tabte"
#, c-format
-msgid "Could not add the buddy %s because you have too many buddies in your buddy list. Please remove one and try again."
-msgstr "Kunne ikke tilføje vennen %s fordi du har for mange venner i din venneliste.Fjern en, og prøv igen."
+msgid ""
+"Could not add the buddy %s because you have too many buddies in your buddy "
+"list. Please remove one and try again."
+msgstr ""
+"Kunne ikke tilføje vennen %s fordi du har for mange venner i din venneliste."
+"Fjern en, og prøv igen."
msgid "(no name)"
msgstr "(intet navn)"
@@ -6348,8 +7034,12 @@ msgid "Could not add the buddy %s for an unknown reason."
msgstr "Kunne ikke tilføje vennen %s af en ukendt årsag."
#, c-format
-msgid "The user %s has given you permission to add him or her to your buddy list. Do you want to add this user?"
-msgstr "Brugeren %s har givet dig lov til at tilføje dig til din venneliste. Vil du tilføje brugeren?"
+msgid ""
+"The user %s has given you permission to add him or her to your buddy list. "
+"Do you want to add this user?"
+msgstr ""
+"Brugeren %s har givet dig lov til at tilføje dig til din venneliste. Vil du "
+"tilføje brugeren?"
msgid "Authorization Given"
msgstr "Godkendelse Givet"
@@ -6357,7 +7047,9 @@ msgstr "Godkendelse Givet"
#. Granted
#, c-format
msgid "The user %s has granted your request to add them to your buddy list."
-msgstr "Brugeren %s har givet lov til din anmodning om at tilføje dem til din venneliste."
+msgstr ""
+"Brugeren %s har givet lov til din anmodning om at tilføje dem til din "
+"venneliste."
msgid "Authorization Granted"
msgstr "Godkendelse Givet"
@@ -6365,10 +7057,12 @@ msgstr "Godkendelse Givet"
#. Denied
#, c-format
msgid ""
-"The user %s has denied your request to add them to your buddy list for the following reason:\n"
+"The user %s has denied your request to add them to your buddy list for the "
+"following reason:\n"
"%s"
msgstr ""
-"Brugeren %s har nægtet din anmodning om at tilføje dem til din venneliste af følgende grund:\n"
+"Brugeren %s har nægtet din anmodning om at tilføje dem til din venneliste af "
+"følgende grund:\n"
"%s"
msgid "Authorization Denied"
@@ -6378,7 +7072,8 @@ msgid "_Exchange:"
msgstr "_Udveksl:"
msgid "Your IM Image was not sent. You cannot send IM Images in AIM chats."
-msgstr "Dit billede blev ikke sendt. Du kan ikke sende billeder i AIM-samtaler."
+msgstr ""
+"Dit billede blev ikke sendt. Du kan ikke sende billeder i AIM-samtaler."
msgid "iTunes Music Store Link"
msgstr "Henvisning til iTunes Music Store"
@@ -6394,8 +7089,12 @@ msgstr "Vennekommentar:"
msgid "You have selected to open a Direct IM connection with %s."
msgstr "Du har valgt at åbne en direkte besked-forbindelse med %s."
-msgid "Because this reveals your IP address, it may be considered a security risk. Do you wish to continue?"
-msgstr "Fordi dette afslører din IP-adresse, ses det som en privatlivs-risiko. Vil du fortsætte?"
+msgid ""
+"Because this reveals your IP address, it may be considered a security risk. "
+"Do you wish to continue?"
+msgstr ""
+"Fordi dette afslører din IP-adresse, ses det som en privatlivs-risiko. Vil "
+"du fortsætte?"
msgid "C_onnect"
msgstr "_Tilslut"
@@ -6420,7 +7119,8 @@ msgid "Require authorization"
msgstr "Kræv godkendelse"
msgid "Web aware (enabling this will cause you to receive SPAM!)"
-msgstr "Internet tilstedeværelse (hvis dette er slået til vil du modtage SPAM!)"
+msgstr ""
+"Internet tilstedeværelse (hvis dette er slået til vil du modtage SPAM!)"
msgid "ICQ Privacy Options"
msgstr "ICQ privatlivsindstillinger"
@@ -6440,8 +7140,12 @@ msgstr "<i>du venter ikke på godkendelse</i>"
msgid "You are awaiting authorization from the following buddies"
msgstr "Du afventer godkendelse fra følgende venner"
-msgid "You can re-request authorization from these buddies by right-clicking on them and selecting \"Re-request Authorization.\""
-msgstr "Du kan anmode om ny godkendelse fra disse venner ved at højreklikke på dem og vælge \"Anmod om ny godkendelse\"."
+msgid ""
+"You can re-request authorization from these buddies by right-clicking on "
+"them and selecting \"Re-request Authorization.\""
+msgstr ""
+"Du kan anmode om ny godkendelse fra disse venner ved at højreklikke på dem "
+"og vælge \"Anmod om ny godkendelse\"."
msgid "Find Buddy by Email"
msgstr "Find ven udfra e-postadresse"
@@ -6514,8 +7218,14 @@ msgstr "Forsøger at forbinde via proxy-server."
msgid "%s has just asked to directly connect to %s"
msgstr "%s har lige spurgt om at forbinde direkte til %s"
-msgid "This requires a direct connection between the two computers and is necessary for IM Images. Because your IP address will be revealed, this may be considered a privacy risk."
-msgstr "Dette kræver en direkte forbindelse imellem to computere og er nødvendigt for billeder. Fordi din IP-adresse vil blive afsløret, kan det anses som en privatlivs risiko."
+msgid ""
+"This requires a direct connection between the two computers and is necessary "
+"for IM Images. Because your IP address will be revealed, this may be "
+"considered a privacy risk."
+msgstr ""
+"Dette kræver en direkte forbindelse imellem to computere og er nødvendigt "
+"for billeder. Fordi din IP-adresse vil blive afsløret, kan det anses som en "
+"privatlivs risiko."
msgid "Aquarius"
msgstr "Vandmand"
@@ -6670,6 +7380,38 @@ msgstr "Opdatér"
msgid "Could not change buddy information."
msgstr "Kunne ikke ændre venneinformation."
+msgid "Mobile"
+msgstr "Mobil"
+
+msgid "Note"
+msgstr "Note"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "Venneikon"
+
+msgid "Change his/her memo as you like"
+msgstr ""
+
+#, fuzzy
+msgid "_Modify"
+msgstr "Ret"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "Ret"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "Server travl"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
#, c-format
msgid "%u requires verification"
msgstr "%u kræver godkendelse"
@@ -6978,6 +7720,13 @@ msgstr "<p><b>Elskede programrettelsesskrivere</b>:<br>\n"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<p><b>Bekræft anerkendelse</b>:<br>\n"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<p><b>Oprindelig forfatter</b>:<br>\n"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr "<p><i>Og alle drengene i baggrunden...</i><br>\n"
@@ -7003,6 +7752,10 @@ msgstr "Opdatér alle QQ Qun'er"
msgid "About OpenQ"
msgstr "Om OpenQ"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Ændr adresse"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7110,7 +7863,6 @@ msgstr ""
"Ukendt svarkode ved indlogning i (0x%02X):\n"
"%s"
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "Kunne ikke få kontakt."
@@ -7255,8 +8007,10 @@ msgid "Starting Services"
msgstr "Starter tjenester"
#, c-format
-msgid "A Sametime administrator has issued the following announcement on server %s"
-msgstr "En Sametime administrator har sendt den følgende annoncering på server %s"
+msgid ""
+"A Sametime administrator has issued the following announcement on server %s"
+msgstr ""
+"En Sametime administrator har sendt den følgende annoncering på server %s"
msgid "Sametime Administrator Announcement"
msgstr "Sametime administrator annoncering"
@@ -7304,8 +8058,12 @@ msgid "Create conference with user"
msgstr "Opret konference med bruger"
#, c-format
-msgid "Please enter a topic for the new conference, and an invitation message to be sent to %s"
-msgstr "Indtast et emne for den nye konference, og en invitationsbesked der skal sendes til %s"
+msgid ""
+"Please enter a topic for the new conference, and an invitation message to be "
+"sent to %s"
+msgstr ""
+"Indtast et emne for den nye konference, og en invitationsbesked der skal "
+"sendes til %s"
msgid "New Conference"
msgstr "Ny konference"
@@ -7323,8 +8081,14 @@ msgid "Invite user to a conference"
msgstr "Invitér bruger til en konference"
#, c-format
-msgid "Select a conference from the list below to send an invite to user %s. Select \"Create New Conference\" if you'd like to create a new conference to invite this user to."
-msgstr "Vælg en konference fra listen forneden for at sende en invitation til bruger %s. Vælg \"Opret ny konference\" hvis du vil oprette en ny konference at invitere denne bruger til."
+msgid ""
+"Select a conference from the list below to send an invite to user %s. Select "
+"\"Create New Conference\" if you'd like to create a new conference to invite "
+"this user to."
+msgstr ""
+"Vælg en konference fra listen forneden for at sende en invitation til bruger "
+"%s. Vælg \"Opret ny konference\" hvis du vil oprette en ny konference at "
+"invitere denne bruger til."
msgid "Invite to Conference"
msgstr "Invitér til konference"
@@ -7342,8 +8106,12 @@ msgid "No Sametime Community Server specified"
msgstr "Ingen Sametime community server angivet"
#, c-format
-msgid "No host or IP address has been configured for the Meanwhile account %s. Please enter one below to continue logging in."
-msgstr "Ingen vært eller IP-adresse er blevet sat op for Meanwhile-kontoen %s. Indtast en forneden for at fortsætte med at logge ind."
+msgid ""
+"No host or IP address has been configured for the Meanwhile account %s. "
+"Please enter one below to continue logging in."
+msgstr ""
+"Ingen vært eller IP-adresse er blevet sat op for Meanwhile-kontoen %s. "
+"Indtast en forneden for at fortsætte med at logge ind."
msgid "Meanwhile Connection Setup"
msgstr "Meanwhile forbindelsesopsætning"
@@ -7371,8 +8139,13 @@ msgid "An ambiguous user ID was entered"
msgstr "Et ugyldigt bruger id blev indtastet"
#, c-format
-msgid "The identifier '%s' may possibly refer to any of the following users. Please select the correct user from the list below to add them to your buddy list."
-msgstr "Identificeringen '%s' kan henvise til hvilken som helst af de følgende brugere. Vælg den korrekte bruger fra listen forneden for at tilføje dem til din venneliste."
+msgid ""
+"The identifier '%s' may possibly refer to any of the following users. Please "
+"select the correct user from the list below to add them to your buddy list."
+msgstr ""
+"Identificeringen '%s' kan henvise til hvilken som helst af de følgende "
+"brugere. Vælg den korrekte bruger fra listen forneden for at tilføje dem til "
+"din venneliste."
msgid "Select User"
msgstr "Vælg bruger"
@@ -7381,8 +8154,12 @@ msgid "Unable to add user: user not found"
msgstr "Kunne ikke tilføje bruger: bruger ikke fundet"
#, c-format
-msgid "The identifier '%s' did not match any users in your Sametime community. This entry has been removed from your buddy list."
-msgstr "Identificeringen '%s' matchede ikke nogle brugere i dit Sametime fællesskab. Denne post er blevet fjernet fra din venneliste."
+msgid ""
+"The identifier '%s' did not match any users in your Sametime community. This "
+"entry has been removed from your buddy list."
+msgstr ""
+"Identificeringen '%s' matchede ikke nogle brugere i dit Sametime fællesskab. "
+"Denne post er blevet fjernet fra din venneliste."
#, c-format
msgid ""
@@ -7435,8 +8212,14 @@ msgid "Notes Address Book group results"
msgstr "Notes adressebog grupperesultater"
#, c-format
-msgid "The identifier '%s' may possibly refer to any of the following Notes Address Book groups. Please select the correct group from the list below to add it to your buddy list."
-msgstr "Identificeringen '%s' kan henvise til hvilken som helst af de følgende Notes adressebogsgrupper. Vælg den korrekte gruppe fra listen forneden for at tilføje den til din venneliste."
+msgid ""
+"The identifier '%s' may possibly refer to any of the following Notes Address "
+"Book groups. Please select the correct group from the list below to add it "
+"to your buddy list."
+msgstr ""
+"Identificeringen '%s' kan henvise til hvilken som helst af de følgende Notes "
+"adressebogsgrupper. Vælg den korrekte gruppe fra listen forneden for at "
+"tilføje den til din venneliste."
msgid "Select Notes Address Book"
msgstr "Vælg Notes adressebog"
@@ -7445,22 +8228,36 @@ msgid "Unable to add group: group not found"
msgstr "Kunne ikke tilføje gruppe: gruppe ikke fundet"
#, c-format
-msgid "The identifier '%s' did not match any Notes Address Book groups in your Sametime community."
-msgstr "Identificeringen '%s' matchede ikke nogle Notes adressebogsgrupper i dit Sametime fællesskab."
+msgid ""
+"The identifier '%s' did not match any Notes Address Book groups in your "
+"Sametime community."
+msgstr ""
+"Identificeringen '%s' matchede ikke nogle Notes adressebogsgrupper i dit "
+"Sametime fællesskab."
msgid "Notes Address Book Group"
msgstr "Notes adressebogsgruppe"
-msgid "Enter the name of a Notes Address Book group in the field below to add the group and its members to your buddy list."
-msgstr "Indtast navnet på en Notes adressebogsgruppe i feltet forneden for at tilføje gruppen og dens medlemmer til din venneliste."
+msgid ""
+"Enter the name of a Notes Address Book group in the field below to add the "
+"group and its members to your buddy list."
+msgstr ""
+"Indtast navnet på en Notes adressebogsgruppe i feltet forneden for at "
+"tilføje gruppen og dens medlemmer til din venneliste."
#, c-format
msgid "Search results for '%s'"
msgstr "Søgeresultater for '%s'"
#, c-format
-msgid "The identifier '%s' may possibly refer to any of the following users. You may add these users to your buddy list or send them messages with the action buttons below."
-msgstr "Identificeringen '%s' kan muligvis henvise til hvilken som helst af de følgende brugere. Du kan tilføje disse brugere til din venneliste eller sende dem beskeder med handlingsknapperne forneden."
+msgid ""
+"The identifier '%s' may possibly refer to any of the following users. You "
+"may add these users to your buddy list or send them messages with the action "
+"buttons below."
+msgstr ""
+"Identificeringen '%s' kan muligvis henvise til hvilken som helst af de "
+"følgende brugere. Du kan tilføje disse brugere til din venneliste eller "
+"sende dem beskeder med handlingsknapperne forneden."
msgid "Search Results"
msgstr "Søgeresultater"
@@ -7470,7 +8267,8 @@ msgstr "Ingen fundne"
#, c-format
msgid "The identifier '%s' did not match any users in your Sametime community."
-msgstr "Identificeringen '%s' matchede ingen brugere i dit Sametime fællesskab."
+msgstr ""
+"Identificeringen '%s' matchede ingen brugere i dit Sametime fællesskab."
msgid "No Matches"
msgstr "Ingen fundne"
@@ -7478,8 +8276,12 @@ msgstr "Ingen fundne"
msgid "Search for a user"
msgstr "Søg efter en bruger"
-msgid "Enter a name or partial ID in the field below to search for matching users in your Sametime community."
-msgstr "Indtast et navn eller delvist id i feltet forneden for at søge efter matchende brugere i dit Sametime fællesskab."
+msgid ""
+"Enter a name or partial ID in the field below to search for matching users "
+"in your Sametime community."
+msgstr ""
+"Indtast et navn eller delvist id i feltet forneden for at søge efter "
+"matchende brugere i dit Sametime fællesskab."
msgid "User Search"
msgstr "Brugersøgning"
@@ -7535,7 +8337,9 @@ msgid "The remote user is not present in the network any more"
msgstr "Brugeren er ikke til stede i netværket længere"
#, c-format
-msgid "Key agreement request received from %s. Would you like to perform the key agreement?"
+msgid ""
+"Key agreement request received from %s. Would you like to perform the key "
+"agreement?"
msgstr "Anmodning om nøgle enighed modtaget %s. Vil du udføre nøgle enigheden?"
#, c-format
@@ -7582,8 +8386,13 @@ msgstr "Kan ikke hente oplysninger"
msgid "The %s buddy is not trusted"
msgstr "Vennen %s er ikke betroet"
-msgid "You cannot receive buddy notifications until you import his/her public key. You can use the Get Public Key command to get the public key."
-msgstr "Du kan ikke modtage venne-påmindelser før du importerer hans/hendes offentlige nøgle. Du kan bruge \"Hent offentlig nøgle\" kommandoen for at hente den offentlige nøgle."
+msgid ""
+"You cannot receive buddy notifications until you import his/her public key. "
+"You can use the Get Public Key command to get the public key."
+msgstr ""
+"Du kan ikke modtage venne-påmindelser før du importerer hans/hendes "
+"offentlige nøgle. Du kan bruge \"Hent offentlig nøgle\" kommandoen for at "
+"hente den offentlige nøgle."
#. Open file selector to select the public key.
msgid "Open..."
@@ -7593,8 +8402,12 @@ msgstr "Åbn..."
msgid "The %s buddy is not present in the network"
msgstr "%s vennen er ikke til stede på netværket"
-msgid "To add the buddy you must import his/her public key. Press Import to import a public key."
-msgstr "For at tilføje vennen, skal du importere hendes/hans offentlige nøgle. Tryk Importér for at importere en offentlig nøgle."
+msgid ""
+"To add the buddy you must import his/her public key. Press Import to import "
+"a public key."
+msgstr ""
+"For at tilføje vennen, skal du importere hendes/hans offentlige nøgle. Tryk "
+"Importér for at importere en offentlig nøgle."
msgid "_Import..."
msgstr "_Importér..."
@@ -7602,11 +8415,19 @@ msgstr "_Importér..."
msgid "Select correct user"
msgstr "Vælg en korrekt bruger"
-msgid "More than one user was found with the same public key. Select the correct user from the list to add to the buddy list."
-msgstr "Mere end én bruger blev fundet med den samme offentlige nøgle. Vælg den korrekte bruger fra listen som du vil tilføje til din venneliste."
+msgid ""
+"More than one user was found with the same public key. Select the correct "
+"user from the list to add to the buddy list."
+msgstr ""
+"Mere end én bruger blev fundet med den samme offentlige nøgle. Vælg den "
+"korrekte bruger fra listen som du vil tilføje til din venneliste."
-msgid "More than one user was found with the same name. Select the correct user from the list to add to the buddy list."
-msgstr "Mere end én bruger blev fundet med det samme navn. Vælg den korrekte bruger fra listen, som du vil tilføje til din venneliste."
+msgid ""
+"More than one user was found with the same name. Select the correct user "
+"from the list to add to the buddy list."
+msgstr ""
+"Mere end én bruger blev fundet med det samme navn. Vælg den korrekte bruger "
+"fra listen, som du vil tilføje til din venneliste."
msgid "Detached"
msgstr "Ikke koblet på"
@@ -7756,8 +8577,18 @@ msgid "Channel Public Keys List"
msgstr "Kanalens liste med offentlige nøgler"
#, c-format
-msgid "Channel authentication is used to secure the channel from unauthorized access. The authentication may be based on passphrase and digital signatures. If passphrase is set, it is required to be able to join. If channel public keys are set then only users whose public keys are listed are able to join."
-msgstr "Kanal godkendelse brugeres til at sikre kanalen fra uønsket adgang. Godkendelsen kan være baseret på en adgangssætning og digitale underskrifter. Hvis adgangssætningen er angivet, er den påkrævet for at tilslutte. Hvis kanalens offentlige nøgler er angivet, så er det kun brugere hvis offentlige nøgler der er nævnt, som kan deltage."
+msgid ""
+"Channel authentication is used to secure the channel from unauthorized "
+"access. The authentication may be based on passphrase and digital "
+"signatures. If passphrase is set, it is required to be able to join. If "
+"channel public keys are set then only users whose public keys are listed are "
+"able to join."
+msgstr ""
+"Kanal godkendelse brugeres til at sikre kanalen fra uønsket adgang. "
+"Godkendelsen kan være baseret på en adgangssætning og digitale "
+"underskrifter. Hvis adgangssætningen er angivet, er den påkrævet for at "
+"tilslutte. Hvis kanalens offentlige nøgler er angivet, så er det kun brugere "
+"hvis offentlige nøgler der er nævnt, som kan deltage."
msgid "Channel Authentication"
msgstr "Kanal godkendelse"
@@ -7821,7 +8652,8 @@ msgid "Set Secret Channel"
msgstr "Sæt hemmelig kanal"
#, c-format
-msgid "You have to join the %s channel before you are able to join the private group"
+msgid ""
+"You have to join the %s channel before you are able to join the private group"
msgstr "Du skal tilslutte %s kanalen før du kan tilslutte den private gruppe"
msgid "Join Private Group"
@@ -7931,9 +8763,6 @@ msgstr "Organisation"
msgid "Unit"
msgstr "Enhed"
-msgid "Note"
-msgstr "Note"
-
msgid "Join Chat"
msgstr "Tilslut samtale"
@@ -8061,8 +8890,12 @@ msgid "Passphrase required"
msgstr "Adgangssætning krævet"
#, c-format
-msgid "Received %s's public key. Your local copy does not match this key. Would you still like to accept this public key?"
-msgstr "Modtog %s's offentlige nøgle. Din lokale kopi passer ikke med denne nøgle. Vil du stadig acceptere den?"
+msgid ""
+"Received %s's public key. Your local copy does not match this key. Would you "
+"still like to accept this public key?"
+msgstr ""
+"Modtog %s's offentlige nøgle. Din lokale kopi passer ikke med denne nøgle. "
+"Vil du stadig acceptere den?"
#, c-format
msgid "Received %s's public key. Would you like to accept this public key?"
@@ -8098,8 +8931,11 @@ msgstr "Fejl ved forbindelse til SILC-server"
msgid "Key Exchange failed"
msgstr "Nøgle udveksling fejlede"
-msgid "Resuming detached session failed. Press Reconnect to create new connection."
-msgstr "Genoptagelse af tidligere session fejlede. Lav en ny forbindelse ved at trykke på gentabler forbindelse."
+msgid ""
+"Resuming detached session failed. Press Reconnect to create new connection."
+msgstr ""
+"Genoptagelse af tidligere session fejlede. Lav en ny forbindelse ved at "
+"trykke på gentabler forbindelse."
msgid "Connection failed"
msgstr "Forbindelse fejlede"
@@ -8177,8 +9013,14 @@ msgstr "Tidszone (UTC)"
msgid "User Online Status Attributes"
msgstr "Status-attributter for tilkoblet bruger"
-msgid "You can let other users see your online status information and your personal information. Please fill the information you would like other users to see about yourself."
-msgstr "Du kan lade andre brugere se dine tilkoblede statusoplysninger og dine personlige oplysninger. Udfyld de oplysninger, du gerne vil have at folk kan se om dig."
+msgid ""
+"You can let other users see your online status information and your personal "
+"information. Please fill the information you would like other users to see "
+"about yourself."
+msgstr ""
+"Du kan lade andre brugere se dine tilkoblede statusoplysninger og dine "
+"personlige oplysninger. Udfyld de oplysninger, du gerne vil have at folk kan "
+"se om dig."
msgid "Message of the Day"
msgstr "Dagens besked (MOTD)"
@@ -8262,7 +9104,8 @@ msgid "topic [&lt;new topic&gt;]: View or change the topic"
msgstr "topic [&lt;nyt emne&gt;]: Vis eller ændr emnet"
msgid "join &lt;channel&gt; [&lt;password&gt;]: Join a chat on this network"
-msgstr "join &lt;kanal&gt; [&lt;adgangskode&gt;]: Tilslut samtale på dette netværk"
+msgstr ""
+"join &lt;kanal&gt; [&lt;adgangskode&gt;]: Tilslut samtale på dette netværk"
msgid "list: List channels on this network"
msgstr "list: Vis kanaler på dette netværk"
@@ -8274,7 +9117,8 @@ msgid "msg &lt;nick&gt; &lt;message&gt;: Send a private message to a user"
msgstr "msg &lt;navn&gt; &lt;besked&gt;: Send en privat besked til en bruger"
msgid "query &lt;nick&gt; [&lt;message&gt;]: Send a private message to a user"
-msgstr "query &lt;navn&gt; [&lt;besked&gt;]: Send en privat besked til en bruger"
+msgstr ""
+"query &lt;navn&gt; [&lt;besked&gt;]: Send en privat besked til en bruger"
msgid "motd: View the server's Message Of The Day"
msgstr "motd: Vis dagens besked (MOTD)"
@@ -8297,11 +9141,19 @@ msgstr "nick &lt;nyt navn&gt;: Ændr dit kælenavn"
msgid "whowas &lt;nick&gt;: View nick's information"
msgstr "whowas &lt;navn&gt;: Vis brugerens oplysninger"
-msgid "cmode &lt;channel&gt; [+|-&lt;modes&gt;] [arguments]: Change or display channel modes"
-msgstr "cmode &lt;kanal&gt; [+|-&lt;tilstande&gt;] [argumenter]: Ændre eller vis kanaltilstande"
+msgid ""
+"cmode &lt;channel&gt; [+|-&lt;modes&gt;] [arguments]: Change or display "
+"channel modes"
+msgstr ""
+"cmode &lt;kanal&gt; [+|-&lt;tilstande&gt;] [argumenter]: Ændre eller vis "
+"kanaltilstande"
-msgid "cumode &lt;channel&gt; +|-&lt;modes&gt; &lt;nick&gt;: Change nick's modes on channel"
-msgstr "cumode &lt;kanal&gt; +|-&lt;tilstande&gt; &lt;navn&gt;: Ændre brugerens tilstande på kanal"
+msgid ""
+"cumode &lt;channel&gt; +|-&lt;modes&gt; &lt;nick&gt;: Change nick's modes "
+"on channel"
+msgstr ""
+"cumode &lt;kanal&gt; +|-&lt;tilstande&gt; &lt;navn&gt;: Ændre brugerens "
+"tilstande på kanal"
msgid "umode &lt;usermodes&gt;: Set your modes in the network"
msgstr "umode &lt;brugertilstande&gt;: Angiv dine tilstande på netværket"
@@ -8309,8 +9161,12 @@ msgstr "umode &lt;brugertilstande&gt;: Angiv dine tilstande på netværket"
msgid "oper &lt;nick&gt; [-pubkey]: Get server operator privileges"
msgstr "oper &lt;navn&gt; [-pubkey]: Få server operatør privilegier"
-msgid "invite &lt;channel&gt; [-|+]&lt;nick&gt;: invite nick or add/remove from channel invite list"
-msgstr "invite &lt;kanal&gt; [-|+]&lt;navn&gt;: invitér navn eller tilføj/fjern fra kanal invitationsliste"
+msgid ""
+"invite &lt;channel&gt; [-|+]&lt;nick&gt;: invite nick or add/remove from "
+"channel invite list"
+msgstr ""
+"invite &lt;kanal&gt; [-|+]&lt;navn&gt;: invitér navn eller tilføj/fjern fra "
+"kanal invitationsliste"
msgid "kick &lt;channel&gt; &lt;nick&gt; [comment]: Kick client from channel"
msgstr "kick &lt;kanal&gt; &lt;navn&gt; [comment]: Spark klient fra kanal"
@@ -8322,7 +9178,8 @@ msgid "ban [&lt;channel&gt; +|-&lt;nick&gt;]: Ban client from channel"
msgstr "ban [&lt;kanal&gt; +|-&lt;navn&gt;]: Udvis klient fra kanal"
msgid "getkey &lt;nick|server&gt;: Retrieve client's or server's public key"
-msgstr "getkey &lt;navn|server&gt;: Hent klientens eller serverens offentlige nøgle"
+msgstr ""
+"getkey &lt;navn|server&gt;: Hent klientens eller serverens offentlige nøgle"
msgid "stats: View server and network statistics"
msgstr "stats: Vis server- og netværksstatistik"
@@ -8333,8 +9190,12 @@ msgstr "ping: Send PING til den forbundne server"
msgid "users &lt;channel&gt;: List users in channel"
msgstr "users &lt;kanal&gt;: Vis brugere på kanalen"
-msgid "names [-count|-ops|-halfops|-voices|-normal] &lt;channel(s)&gt;: List specific users in channel(s)"
-msgstr "names [-count|-ops|-halfops|-voices|-normal] &lt;kanal(er)&gt;: Vis angivne brugere på kanal(er)"
+msgid ""
+"names [-count|-ops|-halfops|-voices|-normal] &lt;channel(s)&gt;: List "
+"specific users in channel(s)"
+msgstr ""
+"names [-count|-ops|-halfops|-voices|-normal] &lt;kanal(er)&gt;: Vis angivne "
+"brugere på kanal(er)"
#. *< type
#. *< ui_requirement
@@ -8471,7 +9332,9 @@ msgid "%s sent message to whiteboard. Would you like to open the whiteboard?"
msgstr "%s sendte besked til tavle. Vil du åbne tavlen?"
#, c-format
-msgid "%s sent message to whiteboard on %s channel. Would you like to open the whiteboard?"
+msgid ""
+"%s sent message to whiteboard on %s channel. Would you like to open the "
+"whiteboard?"
msgstr "%s sendte besked til tavle på kanalen %s. Vil du åbne tavlen?"
msgid "Whiteboard"
@@ -8585,188 +9448,12 @@ msgid "Auth Domain"
msgstr "Autentificering domæne"
#, c-format
-msgid "Looking up %s"
-msgstr "Slår %s op"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Forbindelse til %s fejlede"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Tilsluttet: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "Kunne ikke skrive til filen %s."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "Kunne ikke læse filen %s."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "Beskeden var for lang - de sidste %s bytes blev slettet."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s er ikke logget på lige nu."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "Du kan ikke advare %s."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "En besked blev ikke sendt - du var hurtigere end serveren."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "Samtale i %s er ikke muligt."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "Du sender beskeder for hurtigt til %s."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "Du har ikke modtaget en besked fra %s, fordi den var for lang."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "Du har ikke modtaget en besked fra %s, fordi den blev sendt for hurtigt."
-
-#, c-format
-msgid "Failure."
-msgstr "Fejl."
-
-#, c-format
-msgid "Too many matches."
-msgstr "For mange resultater."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "Angiv flere søgeord."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "Søgetjeneste midlertidigt utilgængelig."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "E-post søgning er begrænset."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "Nøgleord ignoreret."
-
-#, c-format
-msgid "No keywords."
-msgstr "Ingen nøgleord."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "Ingen oplysninger om brugeren fundet."
-
-#, c-format
-msgid "Country not supported."
-msgstr "Land ikke understøttet."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Ukendt fejl: %s."
-
-#, c-format
-msgid "Incorrect username or password."
-msgstr "Forkert brugernavn eller adgangskode."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "Tjenesten er midlertidigt utilgængelig."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "Du har for mange advarsler i øjeblikket til at kunne logge ind."
-
-#, c-format
-msgid "You have been connecting and disconnecting too frequently. Wait ten minutes and try again. If you continue to try, you will need to wait even longer."
-msgstr "Du er logget ind og ud for mange gange indenfor et kort tidsrum. Vent ti minutter og prøv så igen, for ellers skal du bare vente endnu længere."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "Der opstod en ukendt fejl under logind: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "En ukendt fejl, %d, er opstået. Info: %s"
-
-msgid "Invalid Groupname"
-msgstr "Ugyldigt gruppenavn"
-
-msgid "Connection Closed"
-msgstr "Forbindelse lukket"
-
-msgid "Waiting for reply..."
-msgstr "Venter på svar..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "TOC er blevet tilgængelig. Du kan nu sende beskeder igen."
-
-msgid "Password Change Successful"
-msgstr "Adgangskode ændret"
-
-msgid "_Group:"
-msgstr "_Gruppe:"
-
-msgid "Get Dir Info"
-msgstr "Hent mappeoplysninger"
-
-msgid "Set Dir Info"
-msgstr "Ret mappeoplysninger"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "Kunne ikke åbne %s til skrivning!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "Filoverførsel fejlede - den anden side har sikkert afbrudt."
-
-msgid "Could not connect for transfer."
-msgstr "Kunne ikke oprette forbindelse til overførsel."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "Kunne ikke skrive fil-hoved. Filen vil ikke blive overført."
-
-msgid "Save As..."
-msgstr "Gem som..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s anmoder %s om at acceptere %d fil: %s (%.2f %s)%s%s"
-msgstr[1] "%s anmoder %s om at acceptere %d filer: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s beder dig om at sende en fil"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "TOC protokolmodul"
-
-#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr "%s har sendt dig en webcam invitation, hvilket ikke er understøttet."
+msgid "Your SMS was not delivered"
+msgstr ""
+
msgid "Your Yahoo! message did not get sent."
msgstr "Din Yahoo! besked blev ikke sendt."
@@ -8775,28 +9462,43 @@ msgid "Yahoo! system message for %s:"
msgstr "Yahoo! systembesked til %s:"
#, c-format
-msgid "%s has (retroactively) denied your request to add them to your list for the following reason: %s."
+msgid ""
+"%s has (retroactively) denied your request to add them to your list for the "
+"following reason: %s."
msgstr ""
-"%s har (tilbagevirkende) nægtet din anmodning om at tilføje dem til din venneliste af følgende grund:\n"
+"%s har (tilbagevirkende) nægtet din anmodning om at tilføje dem til din "
+"venneliste af følgende grund:\n"
"%s."
#, c-format
msgid "%s has (retroactively) denied your request to add them to your list."
-msgstr "%s har (tilbagevirkende) nægtet din anmodning om at tilføje dem til din venneliste."
+msgstr ""
+"%s har (tilbagevirkende) nægtet din anmodning om at tilføje dem til din "
+"venneliste."
msgid "Add buddy rejected"
msgstr "Vennetilføjelse nægtet"
#, c-format
-msgid "The Yahoo server has requested the use of an unrecognized authentication method. You will probably not be able to successfully sign on to Yahoo. Check %s for updates."
-msgstr "Yahoo-serveren har anmodet om brugen af en ukendt godkendelsesmetode. Du vil højst sandsynligt ikke kunne logge problemfrit på Yahoo. Kontrollér %s for opdateringer."
+msgid ""
+"The Yahoo server has requested the use of an unrecognized authentication "
+"method. You will probably not be able to successfully sign on to Yahoo. "
+"Check %s for updates."
+msgstr ""
+"Yahoo-serveren har anmodet om brugen af en ukendt godkendelsesmetode. Du "
+"vil højst sandsynligt ikke kunne logge problemfrit på Yahoo. Kontrollér %s "
+"for opdateringer."
msgid "Failed Yahoo! Authentication"
msgstr "Fejlede Yahoo! godkendelse"
#, c-format
-msgid "You have tried to ignore %s, but the user is on your buddy list. Clicking \"Yes\" will remove and ignore the buddy."
-msgstr "Du har prøvet at ignorere %s, men brugeren er på din venneliste. Hvis du klikker på \"Ja\" vil det fjerne og ignorere vennen."
+msgid ""
+"You have tried to ignore %s, but the user is on your buddy list. Clicking "
+"\"Yes\" will remove and ignore the buddy."
+msgstr ""
+"Du har prøvet at ignorere %s, men brugeren er på din venneliste. Hvis du "
+"klikker på \"Ja\" vil det fjerne og ignorere vennen."
msgid "Ignore buddy?"
msgstr "Ignorér ven?"
@@ -8806,7 +9508,9 @@ msgstr "Din konto er låst. Log ind på Yahoo!-webstedet."
#, c-format
msgid "Unknown error number %d. Logging into the Yahoo! website may fix this."
-msgstr "Ukendt fejl nummer %d. Prøv at logge ind på Yahoo!webstedet for at fixe dette."
+msgstr ""
+"Ukendt fejl nummer %d. Prøv at logge ind på Yahoo!webstedet for at fixe "
+"dette."
#, c-format
msgid "Could not add buddy %s to group %s to the server list on account %s."
@@ -8981,11 +9685,18 @@ msgstr "Yahoo! Japan profil"
msgid "Yahoo! Profile"
msgstr "Yahoo! profil"
-msgid "Sorry, profiles marked as containing adult content are not supported at this time."
-msgstr "Desværre, profiler der er markeret som indeholdende indhold der ikke er for børn, er ikke understøttet."
+msgid ""
+"Sorry, profiles marked as containing adult content are not supported at this "
+"time."
+msgstr ""
+"Desværre, profiler der er markeret som indeholdende indhold der ikke er for "
+"børn, er ikke understøttet."
-msgid "If you wish to view this profile, you will need to visit this link in your web browser:"
-msgstr "Vis du vil se denne profil, skal du besøge denne henvisning i din netlæser:"
+msgid ""
+"If you wish to view this profile, you will need to visit this link in your "
+"web browser:"
+msgstr ""
+"Vis du vil se denne profil, skal du besøge denne henvisning i din netlæser:"
msgid "Yahoo! ID"
msgstr "Yahoo! ID"
@@ -9011,21 +9722,36 @@ msgstr "Sej henvisning 3"
msgid "Last Update"
msgstr "Sidst opdateret"
-msgid "This profile is in a language or format that is not supported at this time."
-msgstr "Denne profil er i et sprog eller format som ikke er understøttet på nuværende tidspunkt."
+msgid ""
+"This profile is in a language or format that is not supported at this time."
+msgstr ""
+"Denne profil er i et sprog eller format som ikke er understøttet på "
+"nuværende tidspunkt."
-msgid "Could not retrieve the user's profile. This most likely is a temporary server-side problem. Please try again later."
-msgstr "Kunne ikke modtage brugerens profil. Dette er højst sandsynligt et midlertidigt server problem. Prøv igen senere."
+msgid ""
+"Could not retrieve the user's profile. This most likely is a temporary "
+"server-side problem. Please try again later."
+msgstr ""
+"Kunne ikke modtage brugerens profil. Dette er højst sandsynligt et "
+"midlertidigt server problem. Prøv igen senere."
-msgid "Could not retrieve the user's profile. This most likely means that the user does not exist; however, Yahoo! sometimes does fail to find a user's profile. If you know that the user exists, please try again later."
-msgstr "Kunne ikke modtage brugerens profil. Dette betyder højst sandsynligt at brugeren ikke eksisterer; men Yahoo! tager nogen gange fejl og kan ikke finde en brugers profil. Hvis du ved at brugeren eksisterer, så prøv igen senere."
+msgid ""
+"Could not retrieve the user's profile. This most likely means that the user "
+"does not exist; however, Yahoo! sometimes does fail to find a user's "
+"profile. If you know that the user exists, please try again later."
+msgstr ""
+"Kunne ikke modtage brugerens profil. Dette betyder højst sandsynligt at "
+"brugeren ikke eksisterer; men Yahoo! tager nogen gange fejl og kan ikke "
+"finde en brugers profil. Hvis du ved at brugeren eksisterer, så prøv igen "
+"senere."
msgid "The user's profile is empty."
msgstr "Brugerens profil er tom."
#, c-format
msgid "%s declined your conference invitation to room \"%s\" because \"%s\"."
-msgstr "%s sagde nej til din konference-invitiation til rum \"%s\" pga. \"%s\"."
+msgstr ""
+"%s sagde nej til din konference-invitiation til rum \"%s\" pga. \"%s\"."
msgid "Invitation Rejected"
msgstr "Invitation afvist"
@@ -9045,8 +9771,12 @@ msgstr "Måske er rummet fyldt"
msgid "Not available"
msgstr "Ikke tilgængelig"
-msgid "Unknown error. You may need to logout and wait five minutes before being able to rejoin a chatroom"
-msgstr "Ukendt fejl. Det kræver måske at du logger ud og venter fem minutter før du kan tilslutte samtalerummet igen"
+msgid ""
+"Unknown error. You may need to logout and wait five minutes before being "
+"able to rejoin a chatroom"
+msgstr ""
+"Ukendt fejl. Det kræver måske at du logger ud og venter fem minutter før du "
+"kan tilslutte samtalerummet igen"
#, c-format
msgid "You are now chatting in %s."
@@ -9084,8 +9814,12 @@ msgstr ""
"Mistede forbindelsen til server\n"
"%s"
-msgid "(There was an error converting this message.\t Check the 'Encoding' option in the Account Editor)"
-msgstr "(Der opstod en fejl, da denne besked skulle konverteres.\t Tjek 'Tegnsæt'-indstillingen i Konto-redigeringen)"
+msgid ""
+"(There was an error converting this message.\t Check the 'Encoding' option "
+"in the Account Editor)"
+msgstr ""
+"(Der opstod en fejl, da denne besked skulle konverteres.\t Tjek 'Tegnsæt'-"
+"indstillingen i Konto-redigeringen)"
#, c-format
msgid "Unable to send to chat %s,%s,%s"
@@ -9130,19 +9864,33 @@ msgid "topic &lt;instance&gt;: Set the instance to be used on this class"
msgstr "topic &lt;instans&gt;: Sæt instans der skal bruges på denne class"
msgid "sub &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Join a new chat"
-msgstr "sub &lt;class&gt; &lt;instans&gt; &lt;modtager&gt;: Tilslut en ny samtale"
+msgstr ""
+"sub &lt;class&gt; &lt;instans&gt; &lt;modtager&gt;: Tilslut en ny samtale"
-msgid "zi &lt;instance&gt;: Send a message to &lt;message,<i>instance</i>,*&gt;"
+msgid ""
+"zi &lt;instance&gt;: Send a message to &lt;message,<i>instance</i>,*&gt;"
msgstr "zi &lt;instans&gt;: Send en besked til &lt;besked,<i>instans</i>,*&gt;"
-msgid "zci &lt;class&gt; &lt;instance&gt;: Send a message to &lt;<i>class</i>,<i>instance</i>,*&gt;"
-msgstr "zci &lt;klasse&gt; &lt;instans&gt;: Send en besked til &lt;<i>klasse</i>,<i>instans</i>,*&gt;"
+msgid ""
+"zci &lt;class&gt; &lt;instance&gt;: Send a message to &lt;<i>class</i>,"
+"<i>instance</i>,*&gt;"
+msgstr ""
+"zci &lt;klasse&gt; &lt;instans&gt;: Send en besked til &lt;<i>klasse</i>,"
+"<i>instans</i>,*&gt;"
-msgid "zcir &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Send a message to &lt;<i>class</i>,<i>instance</i>,<i>recipient</i>&gt;"
-msgstr "zcir &lt;klasse&gt; &lt;instans&gt; &lt;modtager&gt;: Send en besked til &lt;<i>klasse</i>,<i>instans</i>,<i>modtager</i>&gt;"
+msgid ""
+"zcir &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Send a message to &lt;"
+"<i>class</i>,<i>instance</i>,<i>recipient</i>&gt;"
+msgstr ""
+"zcir &lt;klasse&gt; &lt;instans&gt; &lt;modtager&gt;: Send en besked til &lt;"
+"<i>klasse</i>,<i>instans</i>,<i>modtager</i>&gt;"
-msgid "zir &lt;instance&gt; &lt;recipient&gt;: Send a message to &lt;MESSAGE,<i>instance</i>,<i>recipient</i>&gt;"
-msgstr "zir &lt;instans&gt; &lt;modtager&gt;: Send en besked til &lt;MESSAGE,<i>instans</i>,<i>modtager</i>&gt;"
+msgid ""
+"zir &lt;instance&gt; &lt;recipient&gt;: Send a message to &lt;MESSAGE,"
+"<i>instance</i>,<i>recipient</i>&gt;"
+msgstr ""
+"zir &lt;instans&gt; &lt;modtager&gt;: Send en besked til &lt;MESSAGE,"
+"<i>instans</i>,<i>modtager</i>&gt;"
msgid "zc &lt;class&gt;: Send a message to &lt;<i>class</i>,PERSONAL,*&gt;"
msgstr "zc &lt;klasse&gt;: Send en besked til &lt;<i>klasse</i>,PERSONAL,*&gt;"
@@ -9303,9 +10051,6 @@ msgstr "Vil ikke forstyrres"
msgid "Extended away"
msgstr "Totalt fraværende"
-msgid "Mobile"
-msgstr "Mobil"
-
msgid "Listening to music"
msgstr "Lytter til musik"
@@ -9347,14 +10092,6 @@ msgstr "+++ %s returnerede fra inaktivitet"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "Fejl ved læsning af %s"
-
-#, c-format
-msgid "An error was encountered reading your %s. They have not been loaded, and the old file has been renamed to %s~."
-msgstr "En fejl opstod ved læsning af din %s. De er ikke blevet indlæst, og den gamle fil er blevet omdøbt til %s~."
-
msgid "Calculating..."
msgstr "Udregner..."
@@ -9410,8 +10147,12 @@ msgid "Error reading from %s: response too long (%d bytes limit)"
msgstr "Fejl ved læsning fra %s: svar for langt (%d bytes grænse)"
#, c-format
-msgid "Unable to allocate enough memory to hold the contents from %s. The web server may be trying something malicious."
-msgstr "Ikke i stand til at allokere nok hukommelse til at holde indholdet fra %s. Internetserveren prøver måske noget ondskabsfuldt."
+msgid ""
+"Unable to allocate enough memory to hold the contents from %s. The web "
+"server may be trying something malicious."
+msgstr ""
+"Ikke i stand til at allokere nok hukommelse til at holde indholdet fra %s. "
+"Internetserveren prøver måske noget ondskabsfuldt."
#, c-format
msgid "Error reading from %s: %s"
@@ -9425,6 +10166,12 @@ msgstr "Fejl ved skrivning til %s: %s"
msgid "Unable to connect to %s: %s"
msgstr "Kunne ikke forbinde til %s: %s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr "Server kræver SSL til logind. Ingen TLS/SSL-understøttelse fundet."
+
#, c-format
msgid " - %s"
msgstr " - %s"
@@ -9458,6 +10205,18 @@ msgstr "Forbindelse afvist."
msgid "Address already in use."
msgstr "Addressen er allerede i brug."
+#, c-format
+msgid "Error Reading %s"
+msgstr "Fejl ved læsning af %s"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"En fejl opstod ved læsning af din %s. De er ikke blevet indlæst, og den "
+"gamle fil er blevet omdøbt til %s~."
+
msgid "Internet Messenger"
msgstr "Internet beskeder"
@@ -9500,10 +10259,8 @@ msgstr "Påmindelse om ny _post"
msgid "Use this buddy _icon for this account:"
msgstr "Brug dette venne_ikon til denne konto:"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s indstillinger"
+msgid "_Advanced"
+msgstr "_Avanceret"
msgid "Use GNOME Proxy Settings"
msgstr "Brug GNOME-proxy indstillinger"
@@ -9538,9 +10295,6 @@ msgstr "Hvis du kigger meget tæt på"
msgid "you can see the butterflies mating"
msgstr "du kan se sommerfuglene parre sig"
-msgid "Proxy Options"
-msgstr "Indstillinger for proxy"
-
msgid "Proxy _type:"
msgstr "Proxy_type:"
@@ -9568,8 +10322,9 @@ msgstr "_Basal"
msgid "Create _this new account on the server"
msgstr "Opret _denne nye konto på serveren"
-msgid "_Advanced"
-msgstr "_Avanceret"
+#, fuzzy
+msgid "_Proxy"
+msgstr "Proxy"
msgid "Enabled"
msgstr "Slået til"
@@ -9581,24 +10336,39 @@ msgstr "Protokol"
msgid ""
"<span size='larger' weight='bold'>Welcome to %s!</span>\n"
"\n"
-"You have no IM accounts configured. To start connecting with %s press the <b>Add...</b> button below and configure your first account. If you want %s to connect to multiple IM accounts, press <b>Add...</b> again to configure them all.\n"
+"You have no IM accounts configured. To start connecting with %s press the "
+"<b>Add...</b> button below and configure your first account. If you want %s "
+"to connect to multiple IM accounts, press <b>Add...</b> again to configure "
+"them all.\n"
"\n"
-"You can come back to this window to add, edit, or remove accounts from <b>Accounts->Manage Accounts</b> in the Buddy List window"
+"You can come back to this window to add, edit, or remove accounts from "
+"<b>Accounts->Manage Accounts</b> in the Buddy List window"
msgstr ""
"<span size='larger' weight='bold'>Velkommen til %s!</span>\n"
"\n"
-"Du har ingen besked-konti konfigureret. For at komme i gang med at forbinde med %s tryk <b>Tilføj...</b>-knappen nedenfor og konfigurér din første konto. Hvis du vil have %s til at forbinde til flere besked-konti, tryk <b>Tilføj...</b> igen for at konfigurere dem alle.\n"
+"Du har ingen besked-konti konfigureret. For at komme i gang med at forbinde "
+"med %s tryk <b>Tilføj...</b>-knappen nedenfor og konfigurér din første "
+"konto. Hvis du vil have %s til at forbinde til flere besked-konti, tryk "
+"<b>Tilføj...</b> igen for at konfigurere dem alle.\n"
"\n"
-"Du kan vende tilbage til dette vindue for at tilføje, redigere eller fjerne konti fra <b>Konti->Kontihåndtering</b> i venneliste-vinduet"
+"Du kan vende tilbage til dette vindue for at tilføje, redigere eller fjerne "
+"konti fra <b>Konti->Kontihåndtering</b> i venneliste-vinduet"
#, c-format
msgid "You have %d contact named %s. Would you like to merge them?"
-msgid_plural "You currently have %d contacts named %s. Would you like to merge them?"
+msgid_plural ""
+"You currently have %d contacts named %s. Would you like to merge them?"
msgstr[0] "Du har %d kontakt navngivet %s. Vil du slå dem sammen?"
msgstr[1] "Du har %d kontakter navngivet %s. Vil du slå dem sammen?"
-msgid "Merging these contacts will cause them to share a single entry on the buddy list and use a single conversation window. You can separate them again by choosing 'Expand' from the contact's context menu"
-msgstr "Slås disse kontakter sammen, vil de dele et enkelt element på vennelisten, og bruge et enkelt samtalevindue. Du kan adskille dem igen, ved at vælge \"Udvid\" i kontekstmenuen for kontakten"
+msgid ""
+"Merging these contacts will cause them to share a single entry on the buddy "
+"list and use a single conversation window. You can separate them again by "
+"choosing 'Expand' from the contact's context menu"
+msgstr ""
+"Slås disse kontakter sammen, vil de dele et enkelt element på vennelisten, "
+"og bruge et enkelt samtalevindue. Du kan adskille dem igen, ved at vælge "
+"\"Udvid\" i kontekstmenuen for kontakten"
msgid "Please update the necessary fields."
msgstr "Opdatér de nødvendige felter."
@@ -9606,8 +10376,11 @@ msgstr "Opdatér de nødvendige felter."
msgid "Room _List"
msgstr "Rum_liste"
-msgid "Please enter the appropriate information about the chat you would like to join.\n"
-msgstr "Indtast den nødvendige information om den samtale du gerne vil tilslutte.\n"
+msgid ""
+"Please enter the appropriate information about the chat you would like to "
+"join.\n"
+msgstr ""
+"Indtast den nødvendige information om den samtale du gerne vil tilslutte.\n"
msgid "_Account:"
msgstr "_Konto:"
@@ -9627,6 +10400,17 @@ msgstr "Hent _info"
msgid "I_M"
msgstr "_Besked"
+#, fuzzy
+msgid "_Audio Call"
+msgstr "_Tilføj samtale"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Videosamtale"
+
msgid "_Send File..."
msgstr "_Send fil..."
@@ -9685,8 +10469,11 @@ msgstr "_Udvid"
msgid "/Tools/Mute Sounds"
msgstr "/Værktøjer/Slå lyde fra"
-msgid "You are not currently signed on with an account that can add that buddy."
-msgstr "Du er på nuværende tidspunkt ikke logget på nogen konti som kan tilføje denne ven."
+msgid ""
+"You are not currently signed on with an account that can add that buddy."
+msgstr ""
+"Du er på nuværende tidspunkt ikke logget på nogen konti som kan tilføje "
+"denne ven."
#. I don't believe this can happen currently, I think
#. * everything that calls this function checks for one of the
@@ -9760,6 +10547,10 @@ msgstr "/Værktøjer/_Venneovervågning"
msgid "/Tools/_Certificates"
msgstr "/Værktøjer/_Certifikater"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Værktøjer/Smile_y"
+
msgid "/Tools/Plu_gins"
msgstr "/Værktøjer/_Moduler"
@@ -9769,9 +10560,6 @@ msgstr "/Værktøjer/_Indstillinger"
msgid "/Tools/Pr_ivacy"
msgstr "/Værktøjer/_Privatliv"
-msgid "/Tools/Smile_y"
-msgstr "/Værktøjer/Smile_y"
-
msgid "/Tools/_File Transfers"
msgstr "/Værktøjer/_Filoverførsler"
@@ -9889,8 +10677,8 @@ msgstr "Manuelt"
msgid "By status"
msgstr "Status"
-msgid "By log size"
-msgstr "Logstørrelse"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -9906,14 +10694,20 @@ msgstr "Genforbind"
msgid "Re-enable"
msgstr "Slå konto til igen"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr "Velkommen tilbage!"
#, c-format
msgid "%d account was disabled because you signed on from another location:"
-msgid_plural "%d accounts were disabled because you signed on from another location:"
-msgstr[0] "%d-konto blev deaktiveret, fordi du loggede ind fra en anden lokation:"
-msgstr[1] "%d-kontiene blev deaktiveret, fordi du loggede ind fra en anden lokation:"
+msgid_plural ""
+"%d accounts were disabled because you signed on from another location:"
+msgstr[0] ""
+"%d-konto blev deaktiveret, fordi du loggede ind fra en anden lokation:"
+msgstr[1] ""
+"%d-kontiene blev deaktiveret, fordi du loggede ind fra en anden lokation:"
msgid "<b>Username:</b>"
msgstr "<b>Brugernavn:</b>"
@@ -9932,11 +10726,15 @@ msgstr "/Konti"
msgid ""
"<span weight='bold' size='larger'>Welcome to %s!</span>\n"
"\n"
-"You have no accounts enabled. Enable your IM accounts from the <b>Accounts</b> window at <b>Accounts->Manage Accounts</b>. 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 <b>Accounts</"
+"b> window at <b>Accounts->Manage Accounts</b>. Once you enable accounts, "
+"you'll be able to sign on, set your status, and talk to your friends."
msgstr ""
"<span weight='bold' size='larger'>Velkommen til %s!</span>\n"
"\n"
-"Du har ingen aktive konti. Aktivér dine besked-konti fra <b>Konti</b>-vinduet <b>Konti->Kontihåndtering</b>. Når du har aktiveret konti, vil du være i stand til at logge på, sætte din status og tale med dine venner."
+"Du har ingen aktive konti. Aktivér dine besked-konti fra <b>Konti</b>-"
+"vinduet <b>Konti->Kontihåndtering</b>. Når du har aktiveret konti, vil du "
+"være i stand til at logge på, sætte din status og tale med dine venner."
#. set the Show Offline Buddies option. must be done
#. * after the treeview or faceprint gets mad. -Robot101
@@ -9971,15 +10769,26 @@ msgstr "Tilføj ven til _gruppe:"
msgid "This protocol does not support chat rooms."
msgstr "Denne protokol understøtter ikke samtalerum."
-msgid "You are not currently signed on with any protocols that have the ability to chat."
-msgstr "Du er på nuværende tidspunkt ikke logget på nogen protokoller som har evnen til at samtale."
+msgid ""
+"You are not currently signed on with any protocols that have the ability to "
+"chat."
+msgstr ""
+"Du er på nuværende tidspunkt ikke logget på nogen protokoller som har evnen "
+"til at samtale."
-msgid "Please enter an alias, and the appropriate information about the chat you would like to add to your buddy list.\n"
-msgstr "Indtast et alias og den nødvendige information om den samtale du vil tilføje til din venneliste.\n"
+msgid ""
+"Please enter an alias, and the appropriate information about the chat you "
+"would like to add to your buddy list.\n"
+msgstr ""
+"Indtast et alias og den nødvendige information om den samtale du vil tilføje "
+"til din venneliste.\n"
msgid "A_lias:"
msgstr "A_lias:"
+msgid "_Group:"
+msgstr "_Gruppe:"
+
msgid "Auto_join when account becomes online."
msgstr "_Tilslut automatisk når en konto tilkobles."
@@ -10023,16 +10832,15 @@ msgstr "Ukendt kommando."
msgid "That buddy is not on the same protocol as this chat."
msgstr "Vennen er ikke på den samme protokol som denne samtale."
-msgid "You are not currently signed on with an account that can invite that buddy."
-msgstr "Du er på nuværende tidspunkt ikke logget på nogen konti som kan invitere den ven."
+msgid ""
+"You are not currently signed on with an account that can invite that buddy."
+msgstr ""
+"Du er på nuværende tidspunkt ikke logget på nogen konti som kan invitere den "
+"ven."
msgid "Invite Buddy Into Chat Room"
msgstr "Invitér ven med i samtalerum"
-#. Put our happy label in it.
-msgid "Please enter the name of the user you wish to invite, along with an optional invite message."
-msgstr "Indtast navnet på den bruger, du vil invitere, samt eventuelt en inviterings-besked."
-
msgid "_Buddy:"
msgstr "_Ven:"
@@ -10107,6 +10915,22 @@ msgstr "/Samtale/Gem _som..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Samtale/_Ryd buffer"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Samtale/M_ere"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Samtale/M_ere"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Samtale/M_ere"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Samtale/Vis _log"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Samtale/Se_nd fil..."
@@ -10179,6 +11003,18 @@ msgstr "/Samtale"
msgid "/Conversation/View Log"
msgstr "/Samtale/Vis log"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Samtale/Mere"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Samtale/Vis log"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Samtale/Mere"
+
msgid "/Conversation/Send File..."
msgstr "/Samtale/Send fil..."
@@ -10361,6 +11197,9 @@ msgstr "kunstner"
msgid "Ka-Hing Cheung"
msgstr "Ka-Hing Cheung"
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "support"
@@ -10500,6 +11339,10 @@ msgstr "Geogoriansk"
msgid "Ubuntu Georgian Translators"
msgstr "Georgiske Ubuntu-oversættere"
+#, fuzzy
+msgid "Khmer"
+msgstr "Andet"
+
msgid "Kannada"
msgstr "Kanada"
@@ -10616,19 +11459,45 @@ msgid "About %s"
msgstr "Om %s"
#, c-format
-msgid "%s is a graphical modular messaging client based on libpurple which is capable of connecting to AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC, SIP/SIMPLE, Novell GroupWise, Lotus Sametime, Bonjour, Zephyr, MySpaceIM, Gadu-Gadu, and QQ all at once. It is written using GTK+.<BR><BR>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.<BR><BR>"
-msgstr "%s er en grafisk modulær beskedklient baseret på libpurple, der understøtter AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC, SIP/SIMPLE, Novell GroupWise, Lotus Sametime, Bonjour, Zephyr, MySpaceIM, Gadu-Gadu og QQ på samme tid. Det er skrevet i GTK+.<BR><BR>Du må modificere og redistribuere programmet under de betingelser givet af GPL (version 2 eller senere). En kopi af GPL er indeholdt i 'COPYING' filen som blev distribueret med %s. %s er ophavsret af dens bidragydere. Se 'COPYRIGHT' filen for den komplette liste af bidragydere. Vi giver ingen garanti for dette program.<BR><BR>"
+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+.<BR><BR>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."
+"<BR><BR>"
+msgstr ""
+"%s er en grafisk modulær beskedklient baseret på libpurple, der understøtter "
+"AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC, SIP/SIMPLE, Novell GroupWise, Lotus "
+"Sametime, Bonjour, Zephyr, MySpaceIM, Gadu-Gadu og QQ på samme tid. Det er "
+"skrevet i GTK+.<BR><BR>Du må modificere og redistribuere programmet under de "
+"betingelser givet af GPL (version 2 eller senere). En kopi af GPL er "
+"indeholdt i 'COPYING' filen som blev distribueret med %s. %s er ophavsret af "
+"dens bidragydere. Se 'COPYRIGHT' filen for den komplette liste af "
+"bidragydere. Vi giver ingen garanti for dette program.<BR><BR>"
#, c-format
-msgid "<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
-msgstr "<FONT SIZE=\"4\">OSS:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+"<FONT SIZE=\"4\">OSS:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
#, c-format
-msgid "<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im\">support@pidgin.im</A><BR/><BR/>"
-msgstr "<FONT SIZE=\"4\">Hjælp via e-post:</FONT> <A HREF=\"mailto:support@pidgin.im\">support@pidgin.im</A><BR/><BR/>"
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+"<FONT SIZE=\"4\">Hjælp via e-post:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
#, c-format
-msgid "<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
msgstr "<FONT SIZE=\"4\">IRC-kanal:</FONT> #pidgin on irc.freenode.net<BR><BR>"
#, c-format
@@ -10665,8 +11534,12 @@ msgstr "_Konto"
msgid "Get User Info"
msgstr "Hent brugeroplysninger"
-msgid "Please enter the username or alias of the person whose info you would like to view."
-msgstr "Indtast brugernavnet eller alias på den person, hvis oplysninger du gerne vil se."
+msgid ""
+"Please enter the username or alias of the person whose info you would like "
+"to view."
+msgstr ""
+"Indtast brugernavnet eller alias på den person, hvis oplysninger du gerne "
+"vil se."
msgid "View User Log"
msgstr "Vis bruger log"
@@ -10691,10 +11564,18 @@ msgid "Enter an alias for this chat."
msgstr "Indtast et alias for denne samtale."
#, c-format
-msgid "You are about to remove the contact containing %s and %d other buddy from your buddy list. Do you want to continue?"
-msgid_plural "You are about to remove the contact containing %s and %d other buddies from your buddy list. Do you want to continue?"
-msgstr[0] "Du skal til at fjerne kontakten indeholdende %s og %d anden ven fra din venneliste. Vil du fortsætte?"
-msgstr[1] "Du skal til at fjerne kontakten indeholdende %s og %d andre venner fra din venneliste. Vil du fortsætte?"
+msgid ""
+"You are about to remove the contact containing %s and %d other buddy from "
+"your buddy list. Do you want to continue?"
+msgid_plural ""
+"You are about to remove the contact containing %s and %d other buddies from "
+"your buddy list. Do you want to continue?"
+msgstr[0] ""
+"Du skal til at fjerne kontakten indeholdende %s og %d anden ven fra din "
+"venneliste. Vil du fortsætte?"
+msgstr[1] ""
+"Du skal til at fjerne kontakten indeholdende %s og %d andre venner fra din "
+"venneliste. Vil du fortsætte?"
msgid "Remove Contact"
msgstr "Fjern kontakt"
@@ -10703,7 +11584,9 @@ msgid "_Remove Contact"
msgstr "_Fjern kontakt"
#, c-format
-msgid "You are about to merge the group called %s into the group called %s. Do you want to continue?"
+msgid ""
+"You are about to merge the group called %s into the group called %s. Do you "
+"want to continue?"
msgstr "Du er ved at slå gruppen %s sammen med gruppen %s. Vil du fortsætte?"
msgid "Merge Groups"
@@ -10713,8 +11596,12 @@ msgid "_Merge Groups"
msgstr "_Slå grupper sammen"
#, c-format
-msgid "You are about to remove the group %s and all its members from your buddy list. Do you want to continue?"
-msgstr "Du skal til at fjerne gruppen %s og alle den indeholder fra din venneliste. Vil du fortsætte?"
+msgid ""
+"You are about to remove the group %s and all its members from your buddy "
+"list. Do you want to continue?"
+msgstr ""
+"Du skal til at fjerne gruppen %s og alle den indeholder fra din venneliste. "
+"Vil du fortsætte?"
msgid "Remove Group"
msgstr "Fjern gruppe"
@@ -10723,7 +11610,8 @@ msgid "_Remove Group"
msgstr "_Fjern gruppe"
#, c-format
-msgid "You are about to remove %s from your buddy list. Do you want to continue?"
+msgid ""
+"You are about to remove %s from your buddy list. Do you want to continue?"
msgstr "Du skal til at slette %s fra din venneliste. Vil du fortsætte?"
msgid "Remove Buddy"
@@ -10733,8 +11621,11 @@ msgid "_Remove Buddy"
msgstr "_Fjern ven"
#, c-format
-msgid "You are about to remove the chat %s from your buddy list. Do you want to continue?"
-msgstr "Du skal til at fjerne samtalen %s fra din venneliste. Vil du fortsætte?"
+msgid ""
+"You are about to remove the chat %s from your buddy list. Do you want to "
+"continue?"
+msgstr ""
+"Du skal til at fjerne samtalen %s fra din venneliste. Vil du fortsætte?"
msgid "Remove Chat"
msgstr "Fjern samtale"
@@ -10885,7 +11776,8 @@ msgid "\"Attention\" Name Color"
msgstr "\"Opmærksomhed\" farvenavn"
msgid "Color to draw the name of a message you received containing your name."
-msgstr "Farve som bruges på navnet til den besked du modtog indeholdende dit navn."
+msgstr ""
+"Farve som bruges på navnet til den besked du modtog indeholdende dit navn."
msgid "Action Message Name Color"
msgstr "Farve som bruges på navnet til handlingsbesked"
@@ -10914,15 +11806,6 @@ msgstr "Skriftypen for indtastningspåmindelse"
msgid "Enable typing notification"
msgstr "Aktivér påmindelse om indtastning"
-msgid "_Copy Email Address"
-msgstr "_Kopier e-postadresse"
-
-msgid "_Open Link in Browser"
-msgstr "Åbn henvisning i br_owser"
-
-msgid "_Copy Link Location"
-msgstr "_Kopiér henvisningsadresse"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -10987,8 +11870,12 @@ msgstr "_Hjemmeside"
msgid "_Description"
msgstr "_Beskrivelse"
-msgid "Please enter the URL and description of the link that you want to insert. The description is optional."
-msgstr "Indtast adressen og beskrivelsen på den henvisning du vil indsætte. Beskrivelsen er ikke krævet."
+msgid ""
+"Please enter the URL and description of the link that you want to insert. "
+"The description is optional."
+msgstr ""
+"Indtast adressen og beskrivelsen på den henvisning du vil indsætte. "
+"Beskrivelsen er ikke krævet."
msgid "Please enter the URL of the link that you want to insert."
msgstr "Indtast adressen på henvisningen du vil indsætte."
@@ -11011,7 +11898,8 @@ msgid ""
"This smiley is disabled because a custom smiley exists for this shortcut:\n"
" %s"
msgstr ""
-"Denne smiley er deaktiveret, fordi en tilpasset smiley findes for denne genvej:\n"
+"Denne smiley er deaktiveret, fordi en tilpasset smiley findes for denne "
+"genvej:\n"
"%s"
msgid "Smile!"
@@ -11120,16 +12008,28 @@ msgid "Check permissions and try again."
msgstr "Kontrollér rettigheder og prøv igen."
#, c-format
-msgid "Are you sure you want to permanently delete the log of the conversation with %s which started at %s?"
-msgstr "Er du sikker på at du permanent vil slette loggen over samtaler med %s som startede %s?"
+msgid ""
+"Are you sure you want to permanently delete the log of the conversation with "
+"%s which started at %s?"
+msgstr ""
+"Er du sikker på at du permanent vil slette loggen over samtaler med %s som "
+"startede %s?"
#, c-format
-msgid "Are you sure you want to permanently delete the log of the conversation in %s which started at %s?"
-msgstr "Er du sikker på at du permanent vil slette loggen over samtalen i %s som er startet %s?"
+msgid ""
+"Are you sure you want to permanently delete the log of the conversation in %"
+"s which started at %s?"
+msgstr ""
+"Er du sikker på at du permanent vil slette loggen over samtalen i %s som er "
+"startet %s?"
#, c-format
-msgid "Are you sure you want to permanently delete the system log which started at %s?"
-msgstr "Er du sikker på at du permanent vil slette systemloggen som er startet ved %s?"
+msgid ""
+"Are you sure you want to permanently delete the system log which started at %"
+"s?"
+msgstr ""
+"Er du sikker på at du permanent vil slette systemloggen som er startet ved %"
+"s?"
msgid "Delete Log?"
msgstr "Slet log?"
@@ -11153,13 +12053,14 @@ msgstr "_Gennemse log-mappe"
msgid "%s %s. Try `%s -h' for more information.\n"
msgstr "%s %s. Prøv \"%s -h\" for flere informationer.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -11183,13 +12084,14 @@ msgstr ""
" --display=SKÆRM X-skærm der skal benyttes\n"
" -v, --version vis nuværende version og afslut\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -11248,11 +12150,23 @@ msgstr "Pidgin"
msgid "Exiting because another libpurple client is already running.\n"
msgstr "Afslutter fordi en anden libpurple-klient allerede kører.\n"
-msgid "Open All Messages"
-msgstr "Åbn alle beskeder"
+msgid "/_Media"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Du har fået post!</span>"
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "Udregner..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -11277,8 +12191,32 @@ msgstr "Kunne ikke åbne URL"
msgid "Error launching \"%s\": %s"
msgstr "Fejl ved kørsel af \"%s\": %s"
-msgid "The 'Manual' browser command has been chosen, but no command has been set."
-msgstr "\"Manuel\" browser-kommandoen er blevet valgt, men ingen kommando er blevet angivet."
+msgid ""
+"The 'Manual' browser command has been chosen, but no command has been set."
+msgstr ""
+"\"Manuel\" browser-kommandoen er blevet valgt, men ingen kommando er blevet "
+"angivet."
+
+msgid "Open All Messages"
+msgstr "Åbn alle beskeder"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Du har fået post!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "Tilføj venneovervågning"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Du har fået post!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "Ukendt besked"
msgid "The following plugins will be unloaded."
msgstr "De følgende moduler kunne ikke udlæses."
@@ -11292,8 +12230,12 @@ msgstr "Udlæs udvidelsesmoduler"
msgid "Could not unload plugin"
msgstr "Kunne ikke udlæse udvidelsesmodul"
-msgid "The plugin could not be unloaded now, but will be disabled at the next startup."
-msgstr "Udvidelsesmodulet kunne ikke blive udlæst nu, men vil blive slået fra ved den næste opstart."
+msgid ""
+"The plugin could not be unloaded now, but will be disabled at the next "
+"startup."
+msgstr ""
+"Udvidelsesmodulet kunne ikke blive udlæst nu, men vil blive slået fra ved "
+"den næste opstart."
#, c-format
msgid ""
@@ -11324,6 +12266,10 @@ msgstr "<b>Modul detaljer</b>"
msgid "Select a file"
msgstr "Vælg en fil"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Redigér venneovervågning"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "Overvåg hvem"
@@ -11394,14 +12340,62 @@ msgstr "_Gentages"
msgid "Pounce Target"
msgstr "Overvåg mål"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "Starter med at skrive"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "Pause ved tastning"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "Logger på"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s returnerede fra inaktivitet (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "Returnerer fra fravær"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "Stoppet med at skrive"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "Logger af"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "Bliver inaktiv"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "Hvis fraværende"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Send en besked"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "Ukendt hændelse ved overvågning. Venligst rapportér dette!"
+
msgid "Smiley theme failed to unpack."
msgstr "Smiley-tema kunne ikke udpakkes."
msgid "Install Theme"
msgstr "Installér tema"
-msgid "Select a smiley theme that you would like to use from the list below. New themes can be installed by dragging and dropping them onto the theme list."
-msgstr "Vælg et smiley-tema som du gerne vil bruge fra listen forneden. Nye temaer kan installeres ved at træk-og-slippe dem ind i tema listen."
+msgid ""
+"Select a smiley theme that you would like to use from the list below. New "
+"themes can be installed by dragging and dropping them onto the theme list."
+msgstr ""
+"Vælg et smiley-tema som du gerne vil bruge fra listen forneden. Nye temaer "
+"kan installeres ved at træk-og-slippe dem ind i tema listen."
msgid "Icon"
msgstr "Ikon"
@@ -11412,6 +12406,12 @@ msgstr "Tastaturgenveje"
msgid "Cl_ose conversations with the Escape key"
msgstr "_Afslut samtaler med Escape-tasten"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Venneliste"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "Statusområde ikon"
@@ -11509,8 +12509,12 @@ msgstr "Samtale_skrifttype:"
msgid "Default Formatting"
msgstr "Standard formattering"
-msgid "This is how your outgoing message text will appear when you use protocols that support formatting."
-msgstr "Sådan vil din udgående besked se ud når du bruger protokoller, der understøtter formattering."
+msgid ""
+"This is how your outgoing message text will appear when you use protocols "
+"that support formatting."
+msgstr ""
+"Sådan vil din udgående besked se ud når du bruger protokoller, der "
+"understøtter formattering."
msgid "Cannot start proxy configuration program."
msgstr "Kan ikke starte proxy-konfigurationsprogram."
@@ -11518,9 +12522,6 @@ msgstr "Kan ikke starte proxy-konfigurationsprogram."
msgid "Cannot start browser configuration program."
msgstr "Kan ikke starte konfigurationsprogram til browser."
-msgid "ST_UN server:"
-msgstr "ST_UN server:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">Eksempel: stunserver.org</span>"
@@ -11545,6 +12546,10 @@ msgstr "_Start port:"
msgid "_End port:"
msgstr "Slut _port:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr "Proxy-server &amp; Browser"
@@ -11735,12 +12740,12 @@ msgstr "Når både fraværende og inaktiv"
msgid "Auto-away"
msgstr "Automatisk fraværende"
-msgid "Change status when _idle"
-msgstr "Ændr status ved _inaktivitet"
-
msgid "_Minutes before becoming idle:"
msgstr "_Minutter før du bliver inaktiv:"
+msgid "Change status when _idle"
+msgstr "Ændr status ved _inaktivitet"
+
msgid "Change _status to:"
msgstr "Ændr _status til:"
@@ -11888,6 +12893,12 @@ msgstr "G_em og brug"
msgid "Status for %s"
msgstr "Status for %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
msgid "Custom Smiley"
msgstr "Tilpasset smiley"
@@ -11897,12 +12908,16 @@ msgstr "Der er behov for flere data"
msgid "Please provide a shortcut to associate with the smiley."
msgstr "Angiv en genvej der skal tilknyttes smileyen."
+#, fuzzy, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
+msgstr ""
+"En tilpasset smiley for den valgte genvej findes allerede. Angiv en anden "
+"genvej."
+
msgid "Duplicate Shortcut"
msgstr "Dublet genvej"
-msgid "A custom smiley for the selected shortcut already exists. Please specify a different shortcut."
-msgstr "En tilpasset smiley for den valgte genvej findes allerede. Angiv en anden genvej."
-
msgid "Please select an image for the smiley."
msgstr "Vælg et billede til smileyen."
@@ -11912,16 +12927,22 @@ msgstr "Redigér smiley"
msgid "Add Smiley"
msgstr "Tilføj smiley"
-msgid "Smiley _Image"
-msgstr "Smiley _billede"
+#, fuzzy
+msgid "_Image:"
+msgstr "Bi_llede"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr "Smiley _genvej"
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "Genvej"
msgid "Smiley"
msgstr "Smiley"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "Genvej"
+
msgid "Custom Smiley Manager"
msgstr "Brugertilpasset håndtering af smiley"
@@ -11958,14 +12979,21 @@ msgid "Cannot send folder %s."
msgstr "Kan ikke sende mappe %s."
#, c-format
-msgid "%s cannot transfer a folder. You will need to send the files within individually."
-msgstr "%s kan ikke overføre en mappe. Du skal sende filerne i denne individuelt."
+msgid ""
+"%s cannot transfer a folder. You will need to send the files within "
+"individually."
+msgstr ""
+"%s kan ikke overføre en mappe. Du skal sende filerne i denne individuelt."
msgid "You have dragged an image"
msgstr "Du har trukket et billede"
-msgid "You can send this image as a file transfer, embed it into this message, or use it as the buddy icon for this user."
-msgstr "Du kan sende dette billede som en filoverførsel, vedlægge det til en besked, eller bruge det som venneikonet til denne bruger."
+msgid ""
+"You can send this image as a file transfer, embed it into this message, or "
+"use it as the buddy icon for this user."
+msgstr ""
+"Du kan sende dette billede som en filoverførsel, vedlægge det til en besked, "
+"eller bruge det som venneikonet til denne bruger."
msgid "Set as buddy icon"
msgstr "Sæt som venneikon"
@@ -11979,11 +13007,19 @@ msgstr "Indsæt i besked"
msgid "Would you like to set it as the buddy icon for this user?"
msgstr "Vil du sætte det som venneikon for denne bruger?"
-msgid "You can send this image as a file transfer, or use it as the buddy icon for this user."
-msgstr "Du kan sende dette billede som en filoverførsel, eller bruge det som venneikonet for denne bruger."
+msgid ""
+"You can send this image as a file transfer, or use it as the buddy icon for "
+"this user."
+msgstr ""
+"Du kan sende dette billede som en filoverførsel, eller bruge det som "
+"venneikonet for denne bruger."
-msgid "You can insert this image into this message, or use it as the buddy icon for this user"
-msgstr "Du kan indsætte dette billede i beskeden, eller bruge det som venneikon for denne bruger"
+msgid ""
+"You can insert this image into this message, or use it as the buddy icon for "
+"this user"
+msgstr ""
+"Du kan indsætte dette billede i beskeden, eller bruge det som venneikon for "
+"denne bruger"
#. I don't know if we really want to do anything here. Most of the desktop item types are crap like
#. * "MIME Type" (I have no clue how that would be a desktop item) and "Comment"... nothing we can really
@@ -11993,8 +13029,12 @@ msgstr "Du kan indsætte dette billede i beskeden, eller bruge det som venneikon
msgid "Cannot send launcher"
msgstr "Kan ikke sende starter"
-msgid "You dragged a desktop launcher. Most likely you wanted to send whatever this launcher points to instead of this launcher itself."
-msgstr "Du har trukket en skrivebords starter. Højst sandsynligt vil du sende hvad starteren peger på og ikke starten selv."
+msgid ""
+"You dragged a desktop launcher. Most likely you wanted to send whatever this "
+"launcher points to instead of this launcher itself."
+msgstr ""
+"Du har trukket en skrivebords starter. Højst sandsynligt vil du sende hvad "
+"starteren peger på og ikke starten selv."
#, c-format
msgid ""
@@ -12021,8 +13061,21 @@ msgid "Failed to open file '%s': %s"
msgstr "Kunne ikke åbne fil \"%s\": %s"
#, c-format
-msgid "Failed to load image '%s': reason not known, probably a corrupt image file"
-msgstr "Kunne ikke indlæse billeder \"%s\": årsag ikke kendt, måske en ødelagt billedefil"
+msgid ""
+"Failed to load image '%s': reason not known, probably a corrupt image file"
+msgstr ""
+"Kunne ikke indlæse billeder \"%s\": årsag ikke kendt, måske en ødelagt "
+"billedefil"
+
+#, fuzzy
+msgid "_Open Link"
+msgstr "_Åbn henvisning i:"
+
+msgid "_Copy Link Location"
+msgstr "_Kopiér henvisningsadresse"
+
+msgid "_Copy Email Address"
+msgstr "_Kopier e-postadresse"
msgid "Save File"
msgstr "Gem fil"
@@ -12133,8 +13186,12 @@ msgstr "Ven er afkoblet"
msgid "Point values to use when..."
msgstr "Værdier der skal bruges når..."
-msgid "The buddy with the <i>largest score</i> is the buddy who will have priority in the contact.\n"
-msgstr "Vennen med den <i>højeste score</i> er den ven som vil have prioritet i kontakten.\n"
+msgid ""
+"The buddy with the <i>largest score</i> is the buddy who will have priority "
+"in the contact.\n"
+msgstr ""
+"Vennen med den <i>højeste score</i> er den ven som vil have prioritet i "
+"kontakten.\n"
msgid "Use last buddy when scores are equal"
msgstr "Brug den sidste ven når score er lige"
@@ -12154,12 +13211,19 @@ msgstr "Kontaktsprioritet"
#. *< name
#. *< version
#. *< summary
-msgid "Allows for controlling the values associated with different buddy states."
-msgstr "Giver mulighed for at kontrollere værdierne tilknyttet venners forskellige status."
+msgid ""
+"Allows for controlling the values associated with different buddy states."
+msgstr ""
+"Giver mulighed for at kontrollere værdierne tilknyttet venners forskellige "
+"status."
#. *< description
-msgid "Allows for changing the point values of idle/away/offline states for buddies in contact priority computations."
-msgstr "Giver mulighed for at ændre værdierne af inaktiv/fraværende/afkoblet status for venner i kontaktprioritets beregninger."
+msgid ""
+"Allows for changing the point values of idle/away/offline states for buddies "
+"in contact priority computations."
+msgstr ""
+"Giver mulighed for at ændre værdierne af inaktiv/fraværende/afkoblet status "
+"for venner i kontaktprioritets beregninger."
msgid "Conversation Colors"
msgstr "Samtalefarver"
@@ -12202,8 +13266,12 @@ msgid "Conversation Placement"
msgstr "Samtale placering"
#. Translators: "New conversations" should match the text in the preferences dialog and "By conversation count" should be the same text used above
-msgid "Note: The preference for \"New conversations\" must be set to \"By conversation count\"."
-msgstr "Bemærk: Indstillingerne for \"Nye samtaler\" skal sættes til \"Efter samtale antal\"."
+msgid ""
+"Note: The preference for \"New conversations\" must be set to \"By "
+"conversation count\"."
+msgstr ""
+"Bemærk: Indstillingerne for \"Nye samtaler\" skal sættes til \"Efter samtale "
+"antal\"."
msgid "Number of conversations per window"
msgstr "Antal af samtaler pr. vindue"
@@ -12227,8 +13295,12 @@ msgstr "Ekstra placeringsindstillinger for samtaler."
#. *< summary
#. * description
-msgid "Restrict the number of conversations per windows, optionally separating IMs and Chats"
-msgstr "Begræns antallet af samtaler pr. vindue, med mulighed for seperate samtale- og samtalevinduer"
+msgid ""
+"Restrict the number of conversations per windows, optionally separating IMs "
+"and Chats"
+msgstr ""
+"Begræns antallet af samtaler pr. vindue, med mulighed for seperate samtale- "
+"og samtalevinduer"
#. Configuration frame
msgid "Mouse Gestures Configuration"
@@ -12261,12 +13333,14 @@ msgstr "Giver understøttelse for musebevægelser"
#. * description
msgid ""
-"Allows support for mouse gestures in conversation windows. Drag the middle mouse button to perform certain actions:\n"
+"Allows support for mouse gestures in conversation windows. Drag the middle "
+"mouse button to perform certain actions:\n"
" • Drag down and then to the right to close a conversation.\n"
" • Drag up and then to the left to switch to the previous conversation.\n"
" • Drag up and then to the right to switch to the next conversation."
msgstr ""
-"Giver understøttelse for musebevægelser i samtalevinduer. Træk i den midterste knap for at udføre forskellige handlinger:\n"
+"Giver understøttelse for musebevægelser i samtalevinduer. Træk i den "
+"midterste knap for at udføre forskellige handlinger:\n"
" • Træk ned og derefter til højre, for at afslutte en samtale.\n"
" • Træk op og derefter til venstre, for at skifte til den forrige samtale.\n"
" • Træk op og derefter til højre, for at skifte til den næste samtale."
@@ -12290,8 +13364,12 @@ msgid "Select Buddy"
msgstr "Vælg ven"
#. Add the label.
-msgid "Select a person from your address book to add this buddy to, or create a new person."
-msgstr "Vælg en person fra din adressebog at tilføje denne ven til, eller tilføj en ny person."
+msgid ""
+"Select a person from your address book to add this buddy to, or create a new "
+"person."
+msgstr ""
+"Vælg en person fra din adressebog at tilføje denne ven til, eller tilføj en "
+"ny person."
#. Add the expander
msgid "User _details"
@@ -12432,8 +13510,12 @@ msgstr "Besked-v_induer"
msgid "C_hat windows"
msgstr "C_hat-vinduer"
-msgid "A music messaging session has been requested. Please click the MM icon to accept."
-msgstr "En musik-beskeds session er blevet anmodet. Klik på MM-ikonet for at acceptere."
+msgid ""
+"A music messaging session has been requested. Please click the MM icon to "
+"accept."
+msgstr ""
+"En musik-beskeds session er blevet anmodet. Klik på MM-ikonet for at "
+"acceptere."
msgid "Music messaging session confirmed."
msgstr "Musik beskeds-session bekræftet."
@@ -12472,8 +13554,13 @@ msgid "Music Messaging Plugin for collaborative composition."
msgstr "Musik besked udvidelsesmodul for samarbejdskomposition."
#. * summary
-msgid "The Music Messaging Plugin allows a number of users to simultaneously work on a piece of music by editting a common score in real-time."
-msgstr "Musik beskeds udvidelsesmodulet tillader flere bruger af gangen, til samtidig at arbejde på et stykke musik ved at redigere en fælles score i real-time."
+msgid ""
+"The Music Messaging Plugin allows a number of users to simultaneously work "
+"on a piece of music by editting a common score in real-time."
+msgstr ""
+"Musik beskeds udvidelsesmodulet tillader flere bruger af gangen, til "
+"samtidig at arbejde på et stykke musik ved at redigere en fælles score i "
+"real-time."
#. ---------- "Notify For" ----------
msgid "Notify For"
@@ -12553,7 +13640,8 @@ msgstr "Påmindelse af beskeder"
#. * summary
#. * description
msgid "Provides a variety of ways of notifying you of unread messages."
-msgstr "Giver mulighed for at påminde dig om ulæste beskeder på forskellige måder."
+msgstr ""
+"Giver mulighed for at påminde dig om ulæste beskeder på forskellige måder."
#. *< type
#. *< ui_requirement
@@ -12568,7 +13656,8 @@ msgstr "Pidgin demonstrationsudvidelsesmodul"
#. *< version
#. * summary
msgid "An example plugin that does stuff - see the description."
-msgstr "Et eksempel-udvidelsesmodul der gør forskellige ting - se beskrivelsen."
+msgstr ""
+"Et eksempel-udvidelsesmodul der gør forskellige ting - se beskrivelsen."
#. * description
msgid ""
@@ -12675,10 +13764,16 @@ msgid "Raw"
msgstr "Rå"
msgid "Lets you send raw input to text-based protocols."
-msgstr "Giver dig mulighed for at sende rå inddata til text-baserede protokoller."
+msgstr ""
+"Giver dig mulighed for at sende rå inddata til text-baserede protokoller."
-msgid "Lets you send raw input to text-based protocols (XMPP, MSN, IRC, TOC). Hit 'Enter' in the entry box to send. Watch the debug window."
-msgstr "Giver dig mulighed for at sende rå inddata til tekstbaserede protokoller (XMPP, MSN, IRC, TOC). Tryk \"Enter\" i indtastningsfeltet for at sende. Hold øje med fejlsøgningsvinduet."
+msgid ""
+"Lets you send raw input to text-based protocols (XMPP, MSN, IRC, TOC). Hit "
+"'Enter' in the entry box to send. Watch the debug window."
+msgstr ""
+"Giver dig mulighed for at sende rå inddata til tekstbaserede protokoller "
+"(XMPP, MSN, IRC, TOC). Tryk \"Enter\" i indtastningsfeltet for at sende. "
+"Hold øje med fejlsøgningsvinduet."
#, c-format
msgid "You can upgrade to %s %s today."
@@ -12709,8 +13804,12 @@ msgid "Checks periodically for new releases."
msgstr "Tjekker periodisk efter nye udgivelser."
#. * description
-msgid "Checks periodically for new releases and notifies the user with the ChangeLog."
-msgstr "Tjeker periodisk efter nye udgivelser og viser brugeren hvilke ændringer der er i den nye udgivelse."
+msgid ""
+"Checks periodically for new releases and notifies the user with the "
+"ChangeLog."
+msgstr ""
+"Tjeker periodisk efter nye udgivelser og viser brugeren hvilke ændringer der "
+"er i den nye udgivelse."
#. *< major version
#. *< minor version
@@ -12729,8 +13828,12 @@ msgid "Conversation Window Send Button."
msgstr "Samtalevindue sendknap."
#. *< summary
-msgid "Adds a Send button to the entry area of the conversation window. Intended for when no physical keyboard is present."
-msgstr "Tilføjer en sendknap til indtastningsområdet i samtalevinduet. Beregnet til når der ikke er noget fysisk tastatur tilstede."
+msgid ""
+"Adds a Send button to the entry area of the conversation window. Intended "
+"for when no physical keyboard is present."
+msgstr ""
+"Tilføjer en sendknap til indtastningsområdet i samtalevinduet. Beregnet til "
+"når der ikke er noget fysisk tastatur tilstede."
msgid "Duplicate Correction"
msgstr "Duplikér rettelse"
@@ -12857,8 +13960,12 @@ msgid "Customizes the message timestamp formats."
msgstr "Tilpasser formatet på tidsstempler i beskeder."
#. * description
-msgid "This plugin allows the user to customize conversation and logging message timestamp formats."
-msgstr "Dette modul tillader brugeren selv at tilpasse formatet på tidsstempler i samtaler og logs."
+msgid ""
+"This plugin allows the user to customize conversation and logging message "
+"timestamp formats."
+msgstr ""
+"Dette modul tillader brugeren selv at tilpasse formatet på tidsstempler i "
+"samtaler og logs."
msgid "Opacity:"
msgstr "Ugennemsigtighed:"
@@ -12906,11 +14013,13 @@ msgstr "Variabel gennemsigtighed for venneliste og samtaler."
#. * description
msgid ""
-"This plugin enables variable alpha transparency on conversation windows and the buddy list.\n"
+"This plugin enables variable alpha transparency on conversation windows and "
+"the buddy list.\n"
"\n"
"* Note: This plugin requires Win2000 or greater."
msgstr ""
-"Dette modul giver dig mulighed variabel alpha gennemsigtighed i samtale-vinduer og vennelisten.\n"
+"Dette modul giver dig mulighed variabel alpha gennemsigtighed i samtale-"
+"vinduer og vennelisten.\n"
"\n"
"* Bemærk: Dette modul kræver Win2000 eller bedre."
@@ -12942,8 +14051,10 @@ msgstr "Indstillinger for Pidgin til Windows"
msgid "Options specific to Pidgin for Windows."
msgstr "Specifikke indstillinger for Pidgin til Windows."
-msgid "Provides options specific to Pidgin for Windows , such as buddy list docking."
-msgstr "Indstillinger specifikt for Pidgin for Windows, såsom venneliste dokning."
+msgid ""
+"Provides options specific to Pidgin for Windows , such as buddy list docking."
+msgstr ""
+"Indstillinger specifikt for Pidgin for Windows, såsom venneliste dokning."
msgid "<font color='#777777'>Logged out.</font>"
msgstr "<font color='#777777'>Loggede ud.</font>"
@@ -12980,10 +14091,185 @@ msgstr "Send og modtag rå XMPP-stanzas."
#. * description
msgid "This plugin is useful for debbuging XMPP servers or clients."
-msgstr "Dette udvidelsesmodul er nyttigt for fejlsøgning af XMPP-servere eller klienter."
+msgstr ""
+"Dette udvidelsesmodul er nyttigt for fejlsøgning af XMPP-servere eller "
+"klienter."
+
+#~ msgid "Invite message"
+#~ msgstr "Invitationsbesked"
+
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Indtast navnet på den bruger du vil invitere,\n"
+#~ "samt en valgfri invitationsbesked."
+
+#~ msgid "Looking up %s"
+#~ msgstr "Slår %s op"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "Forbindelse til %s fejlede"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Tilsluttet: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "Kunne ikke skrive til filen %s."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "Kunne ikke læse filen %s."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "Beskeden var for lang - de sidste %s bytes blev slettet."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s er ikke logget på lige nu."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "Du kan ikke advare %s."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr "En besked blev ikke sendt - du var hurtigere end serveren."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "Samtale i %s er ikke muligt."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "Du sender beskeder for hurtigt til %s."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "Du har ikke modtaget en besked fra %s, fordi den var for lang."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr ""
+#~ "Du har ikke modtaget en besked fra %s, fordi den blev sendt for hurtigt."
+
+#~ msgid "Failure."
+#~ msgstr "Fejl."
+
+#~ msgid "Too many matches."
+#~ msgstr "For mange resultater."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "Angiv flere søgeord."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "Søgetjeneste midlertidigt utilgængelig."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "E-post søgning er begrænset."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "Nøgleord ignoreret."
+
+#~ msgid "No keywords."
+#~ msgstr "Ingen nøgleord."
+
+#~ msgid "User has no directory information."
+#~ msgstr "Ingen oplysninger om brugeren fundet."
+
+#~ msgid "Country not supported."
+#~ msgstr "Land ikke understøttet."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Ukendt fejl: %s."
+
+#~ msgid "Incorrect username or password."
+#~ msgstr "Forkert brugernavn eller adgangskode."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "Tjenesten er midlertidigt utilgængelig."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "Du har for mange advarsler i øjeblikket til at kunne logge ind."
+
+#~ msgid ""
+#~ "You have been connecting and disconnecting too frequently. Wait ten "
+#~ "minutes and try again. If you continue to try, you will need to wait "
+#~ "even longer."
+#~ msgstr ""
+#~ "Du er logget ind og ud for mange gange indenfor et kort tidsrum. Vent ti "
+#~ "minutter og prøv så igen, for ellers skal du bare vente endnu længere."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "Der opstod en ukendt fejl under logind: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "En ukendt fejl, %d, er opstået. Info: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "Ugyldigt gruppenavn"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Forbindelse lukket"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "Venter på svar..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "TOC er blevet tilgængelig. Du kan nu sende beskeder igen."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "Adgangskode ændret"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Hent mappeoplysninger"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Ret mappeoplysninger"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "Kunne ikke åbne %s til skrivning!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr "Filoverførsel fejlede - den anden side har sikkert afbrudt."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "Kunne ikke oprette forbindelse til overførsel."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "Kunne ikke skrive fil-hoved. Filen vil ikke blive overført."
+
+#~ msgid "Save As..."
+#~ msgstr "Gem som..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s anmoder %s om at acceptere %d fil: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s anmoder %s om at acceptere %d filer: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s beder dig om at sende en fil"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "TOC protokolmodul"
+
+#~ msgid "%s Options"
+#~ msgstr "%s indstillinger"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Indstillinger for proxy"
+
+#~ msgid "By log size"
+#~ msgstr "Logstørrelse"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "Åbn henvisning i br_owser"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "ST_UN server:"
+
+#~ msgid "Smiley _Image"
+#~ msgstr "Smiley _billede"
+
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "Smiley _genvej"
#~ msgid "Unable to retrieve MSN Address Book"
#~ msgstr "Ikke i stand til at hente MSN-adressebog"
+
#~ msgid ""
#~ "You may be disconnected shortly. You may want to use TOC until this is "
#~ "fixed. Check %s for updates."
@@ -13018,14 +14304,19 @@ msgstr "Dette udvidelsesmodul er nyttigt for fejlsøgning af XMPP-servere eller
#, fuzzy
#~ msgid "Failed to send IM."
#~ msgstr "Kunne ikke hente navn: %s"
+
#~ msgid "User information for %s unavailable"
#~ msgstr "Bruger oplysninger for %s er ikke tilgængelige"
+
#~ msgid "_Flash window when chat messages are received"
#~ msgstr "_Blink vindue når samtalebeskeder modtages"
+
#~ msgid "A group with the name already exists."
#~ msgstr "En mappe med det navn eksisterer allerede."
+
#~ msgid "Primary Information"
#~ msgstr "Primær-information"
+
#~ msgid "Blood Type"
#~ msgstr "Blodtype"
@@ -13044,10 +14335,13 @@ msgstr "Dette udvidelsesmodul er nyttigt for fejlsøgning af XMPP-servere eller
#~ msgstr ""
#~ "Du prøver at opsætte et ansigt. Pidgin tillader, på nuværende tidspunkt, "
#~ "kun standard ansigterne. Vælg venligst et billede fra "
+
#~ msgid "Invalid QQ Face"
#~ msgstr "Ugyldigt QQ-ansigt"
+
#~ msgid "You rejected %d's request"
#~ msgstr "Du afviste %d's anmodning"
+
#~ msgid "Reject request"
#~ msgstr "Afvis anmodning"
@@ -13062,10 +14356,13 @@ msgstr "Dette udvidelsesmodul er nyttigt for fejlsøgning af XMPP-servere eller
#, fuzzy
#~ msgid "QQ Number Error"
#~ msgstr "QQ-nummer"
+
#~ msgid "Group Description"
#~ msgstr "Gruppebeskrivelse"
+
#~ msgid "Auth"
#~ msgstr "Godkend"
+
#~ msgid "Approve"
#~ msgstr "Godkend"
@@ -13082,14 +14379,17 @@ msgstr "Dette udvidelsesmodul er nyttigt for fejlsøgning af XMPP-servere eller
#, fuzzy
#~ msgid "[%d] added to Qun \"%d\""
#~ msgstr "Du [%d] er blevet tilføjet af gruppe \"%d\""
+
#~ msgid "I am a member"
#~ msgstr "Jeg er medlem"
#, fuzzy
#~ msgid "I am requesting"
#~ msgstr "Ugyldig anmodning"
+
#~ msgid "I am the admin"
#~ msgstr "Jeg er administratoren"
+
#~ msgid "Unknown status"
#~ msgstr "Ukendt status"
@@ -13116,10 +14416,13 @@ msgstr "Dette udvidelsesmodul er nyttigt for fejlsøgning af XMPP-servere eller
#, fuzzy
#~ msgid "Change Qun information"
#~ msgstr "Kanal oplysninger"
+
#~ msgid "System Message"
#~ msgstr "Systembesked"
+
#~ msgid "<b>Last Login IP</b>: %s<br>\n"
#~ msgstr "<b>Sidste logind IP</b>: %s<br>\n"
+
#~ msgid "<b>Last Login Time</b>: %s\n"
#~ msgstr "<b>Sidste logind tid</b>: %s\n"
@@ -13184,6 +14487,7 @@ msgstr "Dette udvidelsesmodul er nyttigt for fejlsøgning af XMPP-servere eller
#, fuzzy
#~ msgid "Network disconnected"
#~ msgstr "%s afbrudt"
+
#~ msgid "developer"
#~ msgstr "udvikler"
@@ -13206,78 +14510,105 @@ msgstr "Dette udvidelsesmodul er nyttigt for fejlsøgning af XMPP-servere eller
#~ msgstr ""
#~ "<b>Ændringer:</b>\n"
#~ "%s<br><br>"
+
#~ msgid "Screen name:"
#~ msgstr "Brugernavn:"
#, fuzzy
#~ msgid "Show offline buddies"
#~ msgstr "Vis afkoblede venner"
+
#~ msgid "Sort by status"
#~ msgstr "Sorter efter status"
+
#~ msgid "Sort alphabetically"
#~ msgstr "Sorter alfabetisk"
+
#~ msgid "Sort by log size"
#~ msgstr "Sorter efter logstørrelse"
#, fuzzy
#~ msgid "Pounce only when my status is not available"
#~ msgstr "Over_våg kun når min status er ikke tilgængelig"
+
#~ msgid "Someone says your screen name in chat"
#~ msgstr "Nogle siger dit brugernavn i samtale"
+
#~ msgid "EOF while reading from resolver process"
#~ msgstr "EOF ved læsning fra resolver-proces"
#, fuzzy
#~ msgid "There were errors unloading the plugin."
#~ msgstr "Pidgin kunne ikke udlæse modulet."
+
#~ msgid "Error setting socket options"
#~ msgstr "Fejl ved opsætning af socket indstillinger"
+
#~ msgid "Couldn't open file"
#~ msgstr "Kan ikke åbne fil"
+
#~ msgid ""
#~ "This server requires plaintext authentication over an unencrypted "
#~ "connection. Allow this and continue authentication?"
#~ msgstr ""
#~ "Denne server kræver at godkendelse sker i klartekst (uden kryptering). "
#~ "Tillad dette og fortsæt godkendelse?"
+
#~ msgid "Error initializing session"
#~ msgstr "Fejl ved initialisering af session"
+
#~ msgid "Invalid screen name"
#~ msgstr "Ugyldigt skærmnavn"
+
#~ msgid "Unable to make SSL connection to server."
#~ msgstr "Kunne ikke skabe SSL-forbindelse til server."
+
#~ msgid "Too evil (sender)"
#~ msgstr "For ond (afsender)"
+
#~ msgid "Too evil (receiver)"
#~ msgstr "For ond (modtager)"
+
#~ msgid "Screen name sent"
#~ msgstr "Brugernavn sendt"
+
#~ msgid "Invalid screen name."
#~ msgstr "Ugyldigt skærmnavn."
+
#~ msgid "Available Message"
#~ msgstr "Tilgængelig besked"
+
#~ msgid "Screen name"
#~ msgstr "Skærmnavn"
+
#~ msgid "Invalid chat name specified."
#~ msgstr "Ugyldigt samtalenavn angivet."
+
#~ msgid "Away Message"
#~ msgstr "Fraværs-besked"
+
#~ msgid "<i>(retrieving)</i>"
#~ msgstr " <i>(modtager)</i>"
+
#~ msgid "Use recent buddies group"
#~ msgstr "Brug seneste vennegruppe"
+
#~ msgid "Show how long you have been idle"
#~ msgstr "Vis hvor lang tid du har været inaktiv"
+
#~ msgid ""
#~ "Always use ICQ proxy server for file transfers\n"
#~ "(slower, but does not reveal your IP address)"
#~ msgstr ""
#~ "Brug altid ICQ-mellemværtssever til filoverførelser\n"
#~ "(langsommere, men afslører ikke din IP-adresse)"
+
#~ msgid "Your information has been updated"
#~ msgstr "Din information er blevet opdateret"
+
#~ msgid "Input your reason:"
#~ msgstr "Angiv din grund:"
+
#~ msgid "You have successfully removed a buddy"
#~ msgstr "Du har fjernet en ven."
@@ -13288,12 +14619,14 @@ msgstr "Dette udvidelsesmodul er nyttigt for fejlsøgning af XMPP-servere eller
#, fuzzy
#~ msgid "You have added %d to buddy list"
#~ msgstr "Du har tilføjet %d i vennelisten"
+
#~ msgid "Invalid QQid"
#~ msgstr "Ugyldigt QQid"
#, fuzzy
#~ msgid "Please enter external group ID"
#~ msgstr "Venligt indtast en ekstern gruppe-ID"
+
#~ msgid "Reason: %s"
#~ msgstr "Grund: %s"
@@ -13302,22 +14635,27 @@ msgstr "Dette udvidelsesmodul er nyttigt for fejlsøgning af XMPP-servere eller
#~ msgstr ""
#~ "Din forespørgsel om at tilslutte gruppen %d er blevet godkendt af "
#~ "administrator %d"
+
#~ msgid "This group has been added to your buddy list"
#~ msgstr "Denne gruppe er blevet tilføjet til din venneliste"
+
#~ msgid "I am applying to join"
#~ msgstr "Jeg prøver at tilslutte"
#, fuzzy
#~ msgid "You have successfully left the group"
#~ msgstr "Du har forladt gruppen"
+
#~ msgid "QQ Group Auth"
#~ msgstr "QQ gruppe autorisation"
#, fuzzy
#~ msgid "Your authorization request has been accepted by the QQ server"
#~ msgstr "Din autorisations-operation er blevet accepteret af QQ-serveren"
+
#~ msgid "Code [0x%02X]: %s"
#~ msgstr "Kode [0x%02X]: %s"
+
#~ msgid "Group Operation Error"
#~ msgstr "Gruppe-operationsfejl"
@@ -13328,6 +14666,7 @@ msgstr "Dette udvidelsesmodul er nyttigt for fejlsøgning af XMPP-servere eller
#, fuzzy
#~ msgid "Error requesting login token"
#~ msgstr "Fejl ved oprettelse af forbindelse"
+
#~ msgid "Unable to login, check debug log"
#~ msgstr "Kunne ikke logge ind, kontrollér fejlsøgningslog"
@@ -13338,22 +14677,29 @@ msgstr "Dette udvidelsesmodul er nyttigt for fejlsøgning af XMPP-servere eller
#, fuzzy
#~ msgid "UDP Address"
#~ msgstr "IP-adresse"
+
#~ msgid "Show Login Information"
#~ msgstr "Vis logind information"
+
#~ msgid "Login failed, no reply"
#~ msgstr "Logind slog fejl, intet svar"
+
#~ msgid "User %s rejected your request"
#~ msgstr "Bruger %s afslog din forespørgsel"
#, fuzzy
#~ msgid "User %s approved your request"
#~ msgstr "Bruger %s har godkendt din forespørgsel"
+
#~ msgid "Cannot find/access ~/.silc directory"
#~ msgstr "Kan ikke finde eller tilgå ~/.silc mappe"
+
#~ msgid "%s changed status from %s to %s"
#~ msgstr "%s ændrede status fra %s til %s"
+
#~ msgid "%s is now %s"
#~ msgstr "%s er nu %s"
+
#~ msgid "%s is no longer %s"
#~ msgstr "%s er ikke længere %s"
@@ -13368,12 +14714,16 @@ msgstr "Dette udvidelsesmodul er nyttigt for fejlsøgning af XMPP-servere eller
#, fuzzy
#~ msgid "Add Buddy _Pounce"
#~ msgstr "Tilføj overvågning"
+
#~ msgid "Add a C_hat"
#~ msgstr "Tilføj en _samtale"
+
#~ msgid "/Accounts/Add\\/Edit"
#~ msgstr "/Konti/Tilføj\\/Redigér"
+
#~ msgid "<span color=\"red\">%s disconnected: %s</span>"
#~ msgstr "<span color=\"red\">%s afbrudt: %s</span>"
+
#~ 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 "
@@ -13399,12 +14749,14 @@ msgstr "Dette udvidelsesmodul er nyttigt for fejlsøgning af XMPP-servere eller
#~ " \n"
#~ "Pidgin vil ikke forsøge at genforbinde til kontoen før du retter fejlen "
#~ "og genaktiverer kontoen."
+
#~ msgid "User has typed something and stopped"
#~ msgstr "Bruger har skrevet noget, og stoppet"
#, fuzzy
#~ msgid "_Send To"
#~ msgstr "_Send til"
+
#~ msgid ""
#~ "%s%s<span weight=\"bold\">Written by:</span>\t%s\n"
#~ "<span weight=\"bold\">Website:</span>\t\t%s\n"
@@ -13413,16 +14765,20 @@ msgstr "Dette udvidelsesmodul er nyttigt for fejlsøgning af XMPP-servere eller
#~ "%s%s<span weight=\"bold\">Skrevet af:</span>\t%s\n"
#~ "<span weight=\"bold\">Websted:</span>\t\t%s\n"
#~ "<span weight=\"bold\">Filnavn:</span>\t\t%s"
+
#~ msgid "Display Statistics"
#~ msgstr "Vis statistikker"
+
#~ msgid ""
#~ "The contact availability plugin (cap) is used to display statistical "
#~ "information about buddies in a users contact list."
#~ msgstr ""
#~ "Tilgængelighedsforudsigelses-udvidelsesmodulet (cap) bruges til at vise "
#~ "statistik-information om venner i en brugers kontaktliste."
+
#~ msgid "Conversation History"
#~ msgstr "Samtale historik"
+
#~ msgid "Log Viewer"
#~ msgstr "Loglæser"
@@ -13445,64 +14801,88 @@ msgstr "Dette udvidelsesmodul er nyttigt for fejlsøgning af XMPP-servere eller
#, fuzzy
#~ msgid "A_ccount:"
#~ msgstr "Konto:"
+
#~ msgid "Toggle offline buddies"
#~ msgstr "Afkoblet venner til/fra"
+
#~ msgid ""
#~ "%s was disconnected due to the following error:\n"
#~ "%s"
#~ msgstr ""
#~ "%s blev afbrudt grundet følgende fejl:\n"
#~ "%s"
+
#~ msgid "Commands are not supported yet. Message was NOT sent."
#~ msgstr "Kommandoer er ikke understøttet endnu. Besked blev IKKE sendt."
+
#~ msgid "Timestamps"
#~ msgstr "Tidsstempler"
+
#~ msgid "..."
#~ msgstr "..."
+
#~ msgid "Still need to do something about this."
#~ msgstr "Mangler stadig at gøre noget ved dette."
+
#~ msgid "Alias..."
#~ msgstr "Alias..."
+
#~ msgid "/Tools/Buddy Pounces"
#~ msgstr "/Værktøjer/Venneovervågning"
+
#~ msgid "/Options/Show Buddy _Icon"
#~ msgstr "/Indstillinger/Vis venne_ikoner"
+
#~ msgid "/Options/Show Buddy Icon"
#~ msgstr "/Indstillinger/Vis venne_ikoner"
+
#~ msgid "Jabber developer"
#~ msgstr "Jabber udvikler"
+
#~ msgid "<FONT SIZE=\"4\">IRC:</FONT> #winPidgin on irc.freenode.net<BR><BR>"
#~ msgstr "<FONT SIZE=\"4\">IRC:</FONT> #winPidgin på irc.freenode.net<BR><BR>"
+
#~ msgid "Smaller font size"
#~ msgstr "Mindre skriftstørrelse"
+
#~ msgid "Insert link"
#~ msgstr "Indsæt henvisning"
+
#~ msgid "Insert image"
#~ msgstr "Indsæt billede"
+
#~ msgid "Pidgin %s. Try `%s -h' for more information.\n"
#~ msgstr "Pidgin %s. Prøv `%s -h' for flere oplysninger.\n"
+
#~ msgid "Show buddy _icons"
#~ msgstr "Vis venne_ikoner"
+
#~ msgid ""
#~ "You can send this image as a file transfer or embed it into this message, "
#~ "or use it as the buddy icon for this user."
#~ msgstr ""
#~ "Du kan sende dette billede som en filoverførsel, vedlægge det til en "
#~ "besked, eller bruge det som venneikonet for denne bruger."
+
#~ msgid "GtkTreeView Expander Size"
#~ msgstr "GtkTreeView udfoldelses-pil størrelse"
+
#~ msgid "GtkTreeView Indent Expanders"
#~ msgstr "GtkTreeView indryknings pile"
+
#~ msgid "Tools"
#~ msgstr "Værktøjer"
+
#~ msgid ""
#~ "You can get version %s from:<br><a href=\"http://Pidgin.sourceforge.net/"
#~ "\">http://Pidgin.sourceforge.net</a>."
#~ msgstr ""
#~ "Du kan få version %s fra:<br><a href=\"http://Pidgin.sourceforge.net/"
#~ "\">http://Pidgin.sourceforge.net</a>."
+
#~ msgid "WinPidgin Options"
#~ msgstr "WinPidgin Indstillinger"
+
#~ msgid ""
#~ "%d buddy from group %s was not removed because it belongs to an account "
#~ "which is disabled or offline. This buddy and the group were not "
@@ -13517,14 +14897,19 @@ msgstr "Dette udvidelsesmodul er nyttigt for fejlsøgning af XMPP-servere eller
#~ msgstr[1] ""
#~ "%d venner fra gruppe %s blev ikke fjernet fordi de tilhører en konto som "
#~ "er slået fra eller afkoblet. Disse venner og gruppen blev ikke flyttet.\n"
+
#~ msgid "Group not removed"
#~ msgstr "Gruppe ikke fjernet"
+
#~ msgid "Old Pidgin"
#~ msgstr "Gammel Pidgin"
+
#~ msgid "Autoreply"
#~ msgstr "Automatisk svar"
+
#~ msgid "Autoreply for all the protocols"
#~ msgstr "Automatisk svar for alle protokollerne"
+
#~ msgid ""
#~ "This plugin lets you set autoreply message for any protocol. You can set "
#~ "the global autoreply message from the Plugin-options dialog. To set some "
@@ -13538,80 +14923,112 @@ msgstr "Dette udvidelsesmodul er nyttigt for fejlsøgning af XMPP-servere eller
#~ "automatisk svarbesked for en bestemt ven, højreklik på vennen i "
#~ "venneliste-vinduet. For at sætte en automatisk svarbesked for bestemte "
#~ "konti, gå til \"Avanceret\"-fanen i Konto-redigér-vinduet."
+
#~ msgid "Set autoreply message for %s"
#~ msgstr "Sæt automatisk svarbesked for %s"
+
#~ msgid "Set Autoreply Message"
#~ msgstr "Sæt automatisk svarbesked"
+
#~ msgid ""
#~ "The following message will be sent to the buddy when the buddy sends you "
#~ "a message and autoreply is enabled."
#~ msgstr ""
#~ "Følgende besked vil blive sendt til vennen når vennen sender dig en "
#~ "besked og automatisk svarbesked er aktiveret."
+
#~ msgid "Set _Autoreply Message"
#~ msgstr "Sæt _automatisk svarbesked"
+
#~ msgid "Autoreply message"
#~ msgstr "Automatisk svarbesked"
+
#~ msgid "Send autoreply messages when"
#~ msgstr "Send automatisk svarbesked når"
+
#~ msgid "When my account is _away"
#~ msgstr "Når min konto er _væk"
+
#~ msgid "When my account is _idle"
#~ msgstr "Når min konto er _fraværende"
+
#~ msgid "_Default reply"
#~ msgstr "_Standard-svar"
+
#~ msgid "Status message"
#~ msgstr "Status-besked"
+
#~ msgid "Autoreply with status message"
#~ msgstr "Automatisk svar med statusbesked"
+
#~ msgid "Always when there is a status message"
#~ msgstr "Altid når der er en statusbesked"
+
#~ msgid "Only when there's no autoreply message"
#~ msgstr "Kun når der ikke er nogen automatisk svarbesked"
+
#~ msgid "Delay between autoreplies"
#~ msgstr "Forsinkelse mellem automatisk svar"
+
#~ msgid "_Minimum delay (mins)"
#~ msgstr "_Mindste forsinkelse (mins)"
+
#~ msgid "Times to send autoreplies"
#~ msgstr "Antal gange der sendes automatisk svar"
+
#~ msgid "Ma_ximum count"
#~ msgstr "Maksimum tæller"
+
#~ msgid ""
#~ "I am currently not available. Please leave your message, and I will get "
#~ "back to you as soon as possible."
#~ msgstr ""
#~ "Jeg er ikke til stede. Vær venlig at efterlade en besked, og jeg vil "
#~ "vende tilbage til dig hurtigst muligt."
+
#~ msgid "Pidgin User"
#~ msgstr "Pidgin bruger"
+
#~ msgid "Jabber Account"
#~ msgstr "Jabber-konto"
+
#~ msgid "Server couldn't authenticate you without a password"
#~ msgstr "Server kunne ikke godkende dig uden en adgangskode"
+
#~ msgid "Search for Jabber users"
#~ msgstr "Søg efter Jabber brugere"
+
#~ msgid "Invalid Jabber ID"
#~ msgstr "Ugyldigt Jabber ID"
+
#~ msgid "Change Jabber Password"
#~ msgstr "Ændr Jabber adgangskode"
+
#~ msgid "Jabber Protocol Plugin"
#~ msgstr "Jabber protokolmodul"
+
#~ msgid "You have just sent a Nudge!"
#~ msgstr "Du har sendt et vink!"
+
#~ msgid "SNAC threw error: %s\n"
#~ msgstr "SNAC gav fejlen: %s\n"
+
#~ msgid "User information for %s unavailable:"
#~ msgstr "Bruger oplysninger for %s er ikke tilgængelige:"
+
#~ msgid "Rate limiting error."
#~ msgstr "Grænsefejl."
+
#~ msgid "You have been signed off for an unknown reason."
#~ msgstr "Du er blevet logget af pga. en ukendt årsag."
+
#~ msgid ""
#~ "Your screen name is currently formatted as follows:\n"
#~ "%s"
#~ msgstr ""
#~ "Dit brugernavn er formatter således på nuværende tidspunkt:\n"
#~ "%s"
+
#~ msgid ""
#~ "Could not add the buddy %s for an unknown reason. The most common reason "
#~ "for this is that you have the maximum number of allowed buddies in your "
@@ -13619,50 +15036,73 @@ msgstr "Dette udvidelsesmodul er nyttigt for fejlsøgning af XMPP-servere eller
#~ msgstr ""
#~ "Kunne ikke tilføje vennen %s pga. en ukendt årsag. Den normale grund for "
#~ "dette er at du har det maskimale antal tilladte venner i din venneliste."
+
#~ msgid "New screen name formatting:"
#~ msgstr "Ny brugernavn formatering:"
+
#~ msgid "Format Screen Name..."
#~ msgstr "Formatér brugernavn..."
+
#~ msgid "_Connect"
#~ msgstr "_Tilslut"
+
#~ msgid "Are you sure to exit this Qun?"
#~ msgstr "Er du sikker på at du vil forlade denne Qun?"
+
#~ msgid "Go ahead"
#~ msgstr "Fortsæt"
+
#~ msgid "Server ACK"
#~ msgstr "Server-ACK"
+
#~ msgid "Send IM fail\n"
#~ msgstr "Send besked fejlede\n"
+
#~ msgid "Keep alive error, seems connection lost!"
#~ msgstr "Hold i live fejl, lader til at forbindelsen er tabt!"
+
#~ msgid "Request login token error!"
#~ msgstr "Login forespørgelesmærke-fejl!"
+
#~ msgid "%s Address"
#~ msgstr "%s-adresse"
+
#~ msgid "QQ: Available"
#~ msgstr "QQ: Tilgængelig"
+
#~ msgid "QQ: Away"
#~ msgstr "QQ: Fraværende"
+
#~ msgid "QQ: Invisible"
#~ msgstr "QQ: Usynlig"
+
#~ msgid "QQ: Offline"
#~ msgstr "QQ: Afkoblet"
+
#~ msgid "Login in TCP"
#~ msgstr "Logind i TCP"
+
#~ msgid "Login Hidden"
#~ msgstr "Skjult logind"
+
#~ msgid "Socket send error"
#~ msgstr "Sokkel sendefejl"
+
#~ msgid "Would like to add him?"
#~ msgstr "Vil du tilføje ham?"
+
#~ msgid "Reject watching by other users"
#~ msgstr "Nægt andre brugere at kigge på"
+
#~ msgid "Block invites"
#~ msgstr "Blokér invitationer"
+
#~ msgid "Reject online status attribute requests"
#~ msgstr "Nægt anmodning om online status-attributter"
+
#~ msgid "TOC has sent a PAUSE command."
#~ msgstr "TOC har sendt en PAUSE kommando."
+
#~ msgid ""
#~ "When this happens, TOC ignores any messages sent to it, and may kick you "
#~ "off if you send a message. Pidgin will prevent anything from going "
@@ -13672,8 +15112,10 @@ msgstr "Dette udvidelsesmodul er nyttigt for fejlsøgning af XMPP-servere eller
#~ "risikere at blive logget af, hvis du forsøger at sende en besked. Pidgin "
#~ "vil derfor tilbageholde alle beskeder. Dette er kun midlertidigt, så hav "
#~ "tålmodighed."
+
#~ msgid "Pidgin - Save As..."
#~ msgstr "Pidgin - Gem som..."
+
#~ msgid ""
#~ "The normal authentication method has failed. This means either your "
#~ "password is incorrect, or Yahoo!'s authentication scheme has changed. "
@@ -13684,34 +15126,48 @@ msgstr "Dette udvidelsesmodul er nyttigt for fejlsøgning af XMPP-servere eller
#~ "adgangskode er forkert, eller at Yahoo!'s godkendelsesmetode er blevet "
#~ "ændret. Pidgin vil nu forsøge at logge ind via Web Messenger-"
#~ "godkendelsesmetoden, som vil resultere i begrænset funktionalitet."
+
#~ msgid "Unavailable"
#~ msgstr "Ikke tilgængelig"
+
#~ msgid "Crazychat"
#~ msgstr "Skørchat"
+
#~ msgid "Plugin to establish a Crazychat session."
#~ msgstr "Plugin til at etablere en skørchat session."
+
#~ msgid "Uses Pidgin to obtain buddy ips to connect for a Crazychat session"
#~ msgstr ""
#~ "Bruger Pidgin til at finde venners ip-adresser til at forbinde til en "
#~ "skørchat session"
+
#~ msgid "Network Configuration"
#~ msgstr "Netværksopsætning"
+
#~ msgid "TCP port"
#~ msgstr "TCP port"
+
#~ msgid "UDP port"
#~ msgstr "UDP port"
+
#~ msgid "Feature Calibration"
#~ msgstr "Funktionalitets justering"
+
#~ msgid "DBus"
#~ msgstr "DBus"
+
#~ msgid "Blink tray icon for unread..."
#~ msgstr "Blink statusikon for ulæste..."
+
#~ msgid "_Instant Messages:"
#~ msgstr "_Kvikbeskeder:"
+
#~ msgid "C_hat Messages:"
#~ msgstr "C_hat beskeder:"
+
#~ msgid "Displays an icon for Pidgin in the system tray."
#~ msgstr "Viser et Pidgin-ikon i statusområdet."
+
#~ msgid ""
#~ "Displays a system tray icon (in GNOME, KDE, or Windows for example) to "
#~ "show the current status of Pidgin, allow fast access to commonly used "
@@ -13722,60 +15178,74 @@ msgstr "Dette udvidelsesmodul er nyttigt for fejlsøgning af XMPP-servere eller
#~ "vise Pidgins nuværende status. Det tillader hurtig adgang til ofte brugte "
#~ "funktioner, og du kan hurtigt skjule/vise vennelisten. Det giver også "
#~ "mulighed for at blinke når der er ulæste beskeder."
+
#~ msgid "The specified buddy was not found in the Evolution Contacts."
#~ msgstr "Den angivne ven blev ikke fundet i Evolution kontakter"
+
#~ msgid "Delay"
#~ msgstr "Forsinkelse"
+
#~ msgid "Buddy icon:"
#~ msgstr "Venneikon:"
+
#~ msgid ""
#~ "\n"
#~ "<b>Nickname:</b> %s"
#~ msgstr ""
#~ "\n"
#~ "<b>Kælenavn:</b> %s"
+
#~ msgid ""
#~ "\n"
#~ "<b>Logged In:</b> %s"
#~ msgstr ""
#~ "\n"
#~ "<b>Logget ind:</b> %s"
+
#~ msgid ""
#~ "\n"
#~ "<b>Idle:</b> %s"
#~ msgstr ""
#~ "\n"
#~ "<b>Inaktiv:</b> %s"
+
#~ msgid ""
#~ "\n"
#~ "<b>Status:</b> Offline"
#~ msgstr ""
#~ "\n"
#~ "<b>Status:</b> Afkoblet"
+
#~ msgid ""
#~ "\n"
#~ "<b>Description:</b> Spooky"
#~ msgstr ""
#~ "\n"
#~ "<b>Beskrivelse:</b> Skræmmende"
+
#~ msgid ""
#~ "\n"
#~ "<b>Status:</b> Awesome"
#~ msgstr ""
#~ "\n"
#~ "<b>Status:</b> Enestående"
+
#~ msgid ""
#~ "\n"
#~ "<b>Status:</b> Rockin'"
#~ msgstr ""
#~ "\n"
#~ "<b>Status:</b> Fantastisk"
+
#~ msgid "IM the user"
#~ msgstr "Send besked til bruger"
+
#~ msgid "Ignore the user"
#~ msgstr "Ignorér brugeren"
+
#~ msgid "Get the user's information"
#~ msgstr "Hent brugerens oplysninger"
+
#~ msgid ""
#~ "<span weight=\"bold\" size=\"larger\">You have mail!</span>\n"
#~ "\n"
@@ -13784,96 +15254,131 @@ msgstr "Dette udvidelsesmodul er nyttigt for fejlsøgning af XMPP-servere eller
#~ "<span weight=\"bold\" size=\"larger\">Du har fået post!</span>\n"
#~ "\n"
#~ "%s"
+
#~ msgid "Send unknown \"_slash\" commands as messages"
#~ msgstr "Send ukendte \"_skråstreg\" kommandoer som beskeder"
+
#~ msgid "Tab Options"
#~ msgstr "Faneblad indstillinger"
+
#~ msgid "_Sounds while away"
#~ msgstr "Afspil _lyde under fravær"
+
#~ msgid ""
#~ "Unable to play sound because the 'Command' sound method has been chosen, "
#~ "but no command has been set."
#~ msgstr ""
#~ "Kunne ikke afspille lyd fordi 'Kommando' lydmetoden er blevet valgt, men "
#~ "ingen kommando er blevet sat."
+
#~ msgid ""
#~ "Unable to play sound because the configured sound command could not be "
#~ "launched: %s"
#~ msgstr ""
#~ "Ikke i stand til at afspille lyd fordi den opsatte lydkommando ikke kunne "
#~ "køres: %s"
+
#~ msgid ""
#~ "\n"
#~ "<b>Status:</b> %s"
#~ msgstr ""
#~ "\n"
#~ "<b>Status</b>: %s"
+
#~ msgid ""
#~ "\n"
#~ "<b>Message:</b> %s"
#~ msgstr ""
#~ "\n"
#~ "<b>Besked:</b> %s"
+
#~ msgid "Unable to initiate a new search"
#~ msgstr "Kunne ikke lave en ny søgning"
+
#~ msgid "You have a pending search. Please wait for it to finish."
#~ msgstr "Du har en søgning i gang. Vent til den afslutter."
+
#~ msgid "<b>%s:</b> %s"
#~ msgstr "<b>%s:</b> %s"
+
#~ msgid ""
#~ "Server requires TLS/SSL for login. Select \"Use TLS if available\" in "
#~ "account properties"
#~ msgstr ""
#~ "Server kræevr TLS/SSL til logind. Vælg \"Brug TLS hvis tilgængeligt\" i "
#~ "kontoegenskaber"
+
#~ msgid "Use TLS if available"
#~ msgstr "Brug TLS hvis tilgængelig"
+
#~ msgid "The user %s wants to add %s to his or her buddy list."
#~ msgstr "Brugeren %s vil tilføje %s til sin venneliste."
+
#~ msgid "_Authorize"
#~ msgstr "_Godkend"
+
#~ msgid "_Deny"
#~ msgstr "_Nægt"
+
#~ msgid "%s<b>General</b><br>%s"
#~ msgstr "%s<b>Generelt</b><br>%s"
+
#~ msgid "%s<b>Social</b><br>%s"
#~ msgstr "%s<b>Social</b><br>%s"
+
#~ msgid "<br><b>Personal</b><br>%s"
#~ msgstr "<br><b>Personlig</b><br>%s"
+
#~ msgid "<br><b>Business</b><br>%s"
#~ msgstr "<br><b>Erhverv</b><br>%s"
+
#~ msgid "<hr><b>Contact Info</b>%s%s"
#~ msgstr "<hr><b>Kontaktoplysninger</b>%s%s"
+
#~ msgid "<hr><b>%s:</b> "
#~ msgstr "<hr><b>%s:</b> "
+
#~ msgid "Login server"
#~ msgstr "Indlogningsserver"
+
#~ msgid "The user %s (%s) wants to add %s to his or her buddy list."
#~ msgstr "Brugeren %s (%s) vil tilføje %s til sin venneliste."
+
#~ msgid "Unable to read header from server"
#~ msgstr "Kunne ikke hente hoved fra server"
+
#~ msgid ""
#~ "Unable to read message from server: %s. Command is %hd, length is %hd."
#~ msgstr ""
#~ "Kunne ikke læse besked fra server: %s. Kommando er %hd, længde er %hd."
+
#~ msgid "users: %s, files: %s, size: %sGB"
#~ msgstr "brugere: %s, filer: %s, størrelse: %sGB"
+
#~ msgid "Unable to add \"%s\" to your Napster hotlist"
#~ msgstr "Kunne ikke tilføje \"%s\" til din Napster hotlist"
+
#~ msgid "%s requested a PING"
#~ msgstr "%s anmodede om PING"
+
#~ msgid "NAPSTER Protocol Plugin"
#~ msgstr "NAPSTER protokolmodul"
+
#~ msgid "Direct IM with %s closed"
#~ msgstr "Direkte forbindelse til %s lukket"
+
#~ msgid "Direct IM with %s failed"
#~ msgstr "Direkte forbindelse til %s fejlede"
+
#~ msgid "Unable to open Direct IM"
#~ msgstr "Kunne ikke oprette direkte forbindelse"
+
#~ msgid "You have lost your connection to chat room %s."
#~ msgstr "Du har tabt forbindelsen til samtalerummet %s."
+
#~ msgid "Chat is currently unavailable"
#~ msgstr "Samtale er ikke tilgængelig nu"
+
#~ msgid ""
#~ "Transfer of file %s timed out.\n"
#~ " Try enabling proxy servers for file transfers in Accounts -> %s -> Edit "
@@ -13882,22 +15387,28 @@ msgstr "Dette udvidelsesmodul er nyttigt for fejlsøgning af XMPP-servere eller
#~ "Overførsel af fil %s overløb tidsgrænsen.\n"
#~ " Prøv at aktivere proxyservere for filoverførsler i Konti -> %s -> "
#~ "Redigér konto -> Avanceret."
+
#~ msgid "Unable to log into file transfer proxy."
#~ msgstr "Kunne ikke logge ind til filoverførselsproxy."
+
#~ msgid ""
#~ "Unable to establish listener socket or no AOL proxy connection present."
#~ msgstr ""
#~ "Kan ikke etablere lytte sokkel eller ingen AOL proxy forbindelse tilstede."
+
#~ msgid ""
#~ "The user %s requires authorization before being added to a buddy list. "
#~ "Do you want to send an authorization request?"
#~ msgstr ""
#~ "Brugeren %s kræver godkendelse for at blive tilføjet til en venneliste."
#~ "Vil du sende en anmodning om godkendelse?"
+
#~ msgid "Request Authorization"
#~ msgstr "Anmod om godkendelse"
+
#~ msgid "_Request Authorization"
#~ msgstr "_Anmod om godkendelse"
+
#~ msgid ""
#~ "The user %u wants to add %s to their buddy list for the following "
#~ "reason:\n"
@@ -13905,40 +15416,55 @@ msgstr "Dette udvidelsesmodul er nyttigt for fejlsøgning af XMPP-servere eller
#~ msgstr ""
#~ "Brugeren %u vil tilføje %s til sin venneliste af følgende grund:\n"
#~ "%s"
+
#~ msgid "Authorization Request"
#~ msgstr "Godkendelse anmodning"
+
#~ msgid "<B>UIN:</B> %s<BR><B>Status:</B> %s<HR>%s"
#~ msgstr "<B>UIN:</B> %s<BR><B>Status:</B> %s<HR>%s"
+
#~ msgid "Auth host"
#~ msgstr "Godkendelses server"
+
#~ msgid "Auth port"
#~ msgstr "Godkendelses port"
+
#~ msgid ""
#~ "\n"
#~ "<b>Supports:</b> %s"
#~ msgstr ""
#~ "\n"
#~ "<b>Understøtter:</b>: %s"
+
#~ msgid "<b>Full Name:</b> %s<br>"
#~ msgstr "<b>Fulde navn:</b> %s<br>"
+
#~ msgid "<b>Supports:</b> %s<br>"
#~ msgstr "<b>Understøtter:</b> %s<br>"
+
#~ msgid "<b>Status:</b> %s"
#~ msgstr "<b>Status:</b> %s"
+
#~ msgid "Wrong Password"
#~ msgstr "Forkert adgangskode"
+
#~ msgid "TOC host"
#~ msgstr "TOC Vært"
+
#~ msgid "TOC port"
#~ msgstr "TOC Port"
+
#~ msgid "Unable to read"
#~ msgstr "Kunne ikke læse"
+
#~ msgid "Pager host"
#~ msgstr "Bipper vært"
+
#~ msgid "YCHT host"
#~ msgstr "YCHT vært"
+
#~ msgid "YCHT port"
#~ msgstr "YCHT port"
+
#~ msgid "g003: Error opening connection.\n"
#~ msgstr "g003: Fejl ved oprettelse af forbindelse\n"
-
diff --git a/po/de.po b/po/de.po
index 1491ffd848..d805dd0b1c 100644
--- a/po/de.po
+++ b/po/de.po
@@ -11,10 +11,10 @@ msgid ""
msgstr ""
"Project-Id-Version: de\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-05-01 00:50+0200\n"
-"PO-Revision-Date: 2009-05-01 00:49+0200\n"
-"Last-Translator: Björn Voigt <bjoern@cs.tu-berlin.de>\n"
-"Language-Team: German <de@li.org>\n"
+"POT-Creation-Date: 2009-06-11 12:42+0200\n"
+"PO-Revision-Date: 2009-06-11 12:40+0200\n"
+"Last-Translator: Bjoern Voigt <bjoern@cs.tu-berlin.de>\n"
+"Language-Team: Deutsch <de@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -614,19 +614,6 @@ msgstr ""
msgid "Send To"
msgstr "Senden an"
-msgid "Invite message"
-msgstr "Einladungsnachricht"
-
-msgid "Invite"
-msgstr "Einladen"
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Bitte geben Sie den Benutzernamen der Person ein, die Sie einladen möchten "
-"zusammen mit einer optionalen Einladungsnachricht."
-
msgid "Conversation"
msgstr "Unterhaltung"
@@ -889,6 +876,41 @@ msgstr "Alle Unterhaltungen"
msgid "System Log"
msgstr "System-Mitschnitt"
+msgid "Calling ... "
+msgstr "Anrufen ... "
+
+msgid "Hangup"
+msgstr "Auflegen"
+
+#. Number of actions
+msgid "Accept"
+msgstr "Akzeptieren"
+
+msgid "Reject"
+msgstr "Ablehnen"
+
+msgid "Call in progress."
+msgstr "Anruf läuft."
+
+msgid "The call has been terminated."
+msgstr "Der Anruf wurde beendet."
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr "%s möchte eine Audio-Sitzung mit Ihnen starten."
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+"%s versucht, einen nicht unterstützten Typ von Medien-Sitzung mit Ihnen zu "
+"starten."
+
+msgid "You have rejected the call."
+msgstr "Sie haben den Anruf abgelehnt."
+
+msgid "call: Make an audio call."
+msgstr "call: Einen Audio-Anruf tätigen."
+
msgid "Emails"
msgstr "E-Mails"
@@ -923,6 +945,9 @@ msgstr "Fortfahren"
msgid "IM"
msgstr "Nachricht"
+msgid "Invite"
+msgstr "Einladen"
+
msgid "(none)"
msgstr "(kein)"
@@ -1092,7 +1117,7 @@ msgstr "%s hat begonnen Ihnen zu schreiben (%s)"
#, c-format
msgid "%s has paused while typing to you (%s)"
-msgstr "%s hat beim Schreiben an Sie (%s) angehalten"
+msgstr "%s hat beim Tippen an Sie (%s) angehalten"
#, c-format
msgid "%s has signed on (%s)"
@@ -1537,6 +1562,30 @@ msgstr "Gnt-Verlauf"
msgid "Lastlog plugin."
msgstr "Verlauf-Plugin."
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+"\n"
+"Hole TinyURL..."
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr "TinyURL nur für URLs mit mindestens dieser Länge generieren"
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+msgid "TinyURL"
+msgstr "TinyURL"
+
+msgid "TinyURL plugin"
+msgstr "TinyURL-Plugin"
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+"URLs aus erhaltenen Nachrichten zum einfacheren Kopieren in TinyURLs "
+"umwandeln"
+
msgid "accounts"
msgstr "Konten"
@@ -1638,13 +1687,6 @@ msgstr "Akzeptieren Sie das Zertifikat für %s?"
msgid "SSL Certificate Verification"
msgstr "SSL-Zertifikatsüberprüfung"
-#. Number of actions
-msgid "Accept"
-msgstr "Akzeptieren"
-
-msgid "Reject"
-msgstr "Ablehnen"
-
msgid "_View Certificate..."
msgstr "Ze_rtifikat ansehen..."
@@ -1746,6 +1788,8 @@ msgstr "+++ %s hat sich angemeldet"
msgid "+++ %s signed off"
msgstr "+++ %s hat sich abgemeldet"
+#. Unknown error
+#. Unknown error!
msgid "Unknown error"
msgstr "Unbekannter Fehler"
@@ -1792,6 +1836,17 @@ msgstr "%s hat den Raum verlassen."
msgid "%s left the room (%s)."
msgstr "%s hat den Raum verlassen (%s)."
+msgid "Invite to chat"
+msgstr "Zum Chat einladen"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Bitte geben Sie den Benutzernamen der Person ein, die Sie einladen möchten "
+"zusammen mit einer optionalen Einladungsnachricht."
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "Kann keine Verbindung herstellen: %s"
@@ -2630,6 +2685,31 @@ msgstr "Sichere Offline-Nachricht als Alarm"
msgid "Do not ask. Always save in pounce."
msgstr "Nicht nachfragen. Immer als Alarm sichern."
+msgid "One Time Password"
+msgstr "Einmalpasswort"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr "Unterstützung für Einmalpasswörter"
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr "Erzwinge, dass Passwörter nur einmal verwendet werden."
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -3031,6 +3111,7 @@ msgstr "Wählen sie einen Chat für den Benutzer: %s"
msgid "Add to chat..."
msgstr "Zum Chat hinzufügen..."
+#. Global
msgid "Available"
msgstr "Verfügbar"
@@ -3088,6 +3169,10 @@ msgstr "Zum Chat hinzufügen"
msgid "Chat _name:"
msgstr "Chat_name:"
+#. should this be a settings error?
+msgid "Unable to resolve server"
+msgstr "Verbindung zum Server nicht möglich"
+
msgid "Chat error"
msgstr "Chatfehler"
@@ -3136,6 +3221,10 @@ msgstr "Beliebter polnischer IM-Dienst"
msgid "Gadu-Gadu User"
msgstr "Gadu-Gadu-Benutzer"
+#, fuzzy
+msgid "GG server"
+msgstr "Hole server"
+
#, c-format
msgid "Unknown command: %s"
msgstr "Unbekanntes Kommando: %s"
@@ -3178,8 +3267,8 @@ msgstr "_Kanal:"
msgid "_Password:"
msgstr "_Passwort:"
-msgid "IRC nicks may not contain whitespace"
-msgstr "IRC-Nicknamen dürfen keine Leerzeichen enthalten"
+msgid "IRC nick and server may not contain whitespace"
+msgstr "IRC- Server und -Nicknamen dürfen keine Leerzeichen enthalten"
#. 1. connect to server
#. connect to the server
@@ -3377,6 +3466,17 @@ msgstr ""
"Ihr gewählter Kontoname wurde vom Server abgelehnt. Er enthält vermutlich "
"ungültige Zeichen."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "Der Spitzname „%s“ existiert bereits."
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Spitzname"
+
msgid "Cannot change nick"
msgstr "Kann den Spitznamen nicht ändern"
@@ -3651,12 +3751,45 @@ msgstr "Ungültige Serverantwort."
msgid "Server does not use any supported authentication method"
msgstr "Der Server benutzt keine der unterstützten Authentifizierungsmethoden"
+msgid "You require encryption, but it is not available on this server."
+msgstr ""
+"Sie fordern Verschlüsselung, aber diese ist auf dem Server nicht verfügbar."
+
msgid "Invalid challenge from server"
msgstr "Ungültige Challenge vom Server"
msgid "SASL error"
msgstr "SASL-Fehler"
+msgid "The BOSH connection manager terminated your session."
+msgstr "Der BOSH-Verbindungsmanager hat Ihre Sitzung beendet."
+
+msgid "No session ID given"
+msgstr "Keine Sitzungs-ID angegeben"
+
+msgid "Unsupported version of BOSH protocol"
+msgstr "Nicht-unterstützte Version des BOSH-Protokolls"
+
+msgid "Unable to establish a connection with the server"
+msgstr "Die Verbindung mit dem Server konnte nicht hergestellt werden"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"Die Verbindung mit dem Server konnte nicht hergestellt werden:\n"
+"%s"
+
+msgid "Unable to establish SSL connection"
+msgstr "Kann SSL-Verbindung nicht erstellen"
+
+msgid "Unable to create socket"
+msgstr "Kann Socket nicht erstellen"
+
+msgid "Write error"
+msgstr "Schreibfehler"
+
msgid "Full Name"
msgstr "Vollständiger Name"
@@ -3723,6 +3856,9 @@ msgstr "Client"
msgid "Operating System"
msgstr "Betriebssystem"
+msgid "Local Time"
+msgstr "Lokale Zeit"
+
msgid "Last Activity"
msgstr "Letzte Aktivität"
@@ -3882,6 +4018,14 @@ msgstr "Priorität"
msgid "Resource"
msgstr "Ressource"
+#, c-format
+msgid "%s ago"
+msgstr "vor %s"
+
+#, fuzzy
+msgid "Logged off"
+msgstr "Abgemeldet"
+
msgid "Middle Name"
msgstr "Zweiter Name"
@@ -4051,12 +4195,16 @@ msgstr "Wählen Sie einen Konferenz-Server zur Abfrage"
msgid "Find Rooms"
msgstr "Finde Räume"
-msgid "You require encryption, but it is not available on this server."
-msgstr ""
-"Sie fordern Verschlüsselung, aber diese ist auf dem Server nicht verfügbar."
+#, fuzzy
+msgid "Affiliations:"
+msgstr "Alias:"
-msgid "Write error"
-msgstr "Schreibfehler"
+msgid "No users found"
+msgstr "Keine Benutzer gefunden"
+
+#, fuzzy
+msgid "Roles:"
+msgstr "Funktion"
msgid "Ping timeout"
msgstr "Ping-Zeitüberschreitung"
@@ -4064,16 +4212,10 @@ msgstr "Ping-Zeitüberschreitung"
msgid "Read Error"
msgstr "Fehler beim Lesen"
-#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"Die Verbindung mit dem Server konnte nicht hergestellt werden:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "Kann Socket nicht erstellen"
msgid "Invalid XMPP ID"
msgstr "Ungültige XMPP-ID"
@@ -4081,6 +4223,9 @@ msgstr "Ungültige XMPP-ID"
msgid "Invalid XMPP ID. Domain must be set."
msgstr "Falsche XMPP-ID. Die Domain muss gesetzt werden."
+msgid "Malformed BOSH Connect Server"
+msgstr ""
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "Registrierung von %s@%s erfolgreich"
@@ -4105,9 +4250,6 @@ msgstr "Aufheben der Registrierung erfolgreich"
msgid "Unregistration Failed"
msgstr "Aufheben der Registrierung gescheitert"
-msgid "Already Registered"
-msgstr "Schon registriert"
-
msgid "State"
msgstr "Provinz/Bundesland"
@@ -4120,6 +4262,9 @@ msgstr "Telefon"
msgid "Date"
msgstr "Datum"
+msgid "Already Registered"
+msgstr "Schon registriert"
+
msgid "Unregister"
msgstr "Aufheben der Registrierung"
@@ -4175,6 +4320,12 @@ msgstr "Server unterstützt kein Blockieren"
msgid "Not Authorized"
msgstr "Nicht autorisiert"
+msgid "Mood"
+msgstr "Stimmung"
+
+msgid "Now Listening"
+msgstr "Hört gerade"
+
msgid "Both"
msgstr "Beide"
@@ -4196,12 +4347,6 @@ msgstr "Kein"
msgid "Subscription"
msgstr "Abonnement"
-msgid "Mood"
-msgstr "Stimmung"
-
-msgid "Now Listening"
-msgstr "Hört gerade"
-
msgid "Mood Text"
msgstr "Stimmungstext"
@@ -4440,16 +4585,24 @@ msgid "Unable to ping user %s"
msgstr "Kann den Benutzer %s nicht anpingen"
#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
-msgstr "Kann nicht anklopfen, da nichts über den Benutzer %s bekannt ist."
+msgid "Unable to buzz, because there is nothing known about %s."
+msgstr "Kann nicht anklopfen, da nichts über %s bekannt ist."
+
+#, c-format
+msgid "Unable to buzz, because %s might be offline."
+msgstr "Kann nicht anklopfen, da %s vielleicht offline ist."
#, c-format
-msgid "Unable to buzz, because user %s might be offline."
-msgstr "Kann nicht anklopfen, da der Benutzer %s vielleicht offline ist."
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
+msgstr ""
+"Kann nicht anklopfen, da %s dies nicht unterstützt oder im Moment nicht "
+"möchte."
#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
-msgstr "Kann nicht anklopfen, da der Benutzer %s dies nicht unterstützt."
+msgid "Buzzing %s..."
+msgstr "%s anklopfen..."
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
@@ -4461,8 +4614,37 @@ msgid "%s has buzzed you!"
msgstr "%s hat bei Ihnen angeklopft!"
#, c-format
-msgid "Buzzing %s..."
-msgstr "%s anklopfen..."
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "Medien-Sitzung mit %s konnte nicht gestartet werden: ungültige JID"
+
+#, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr ""
+"Medien-Sitzung mit %s konnte nicht gestartet werden: Benutzer ist nicht "
+"online"
+
+#, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr ""
+"Medien-Sitzung mit %s konnte nicht gestartet werden: Anwesenheit des "
+"Benutzers nicht abonniert"
+
+msgid "Media Initiation Failed"
+msgstr "Medien-Initiierung fehlgeschlagen"
+
+#, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr ""
+"Bitte wählen Sie die Ressource von %s, mir der Sie eine Medien-Sitzung "
+"starten möchten."
+
+msgid "Select a Resource"
+msgstr "Wählen Sie eine Ressource"
+
+msgid "Initiate Media"
+msgstr "Initiiere Medien"
msgid "config: Configure a chat room."
msgstr "config: Konfiguriere einen Chatraum."
@@ -4482,16 +4664,18 @@ msgstr "topic [neues Thema]: Thema ändern oder anzeigen."
msgid "ban &lt;user&gt; [reason]: Ban a user from the room."
msgstr "ban &lt;Benutzer&gt; [Grund]: Verbanne einen Benutzer aus dem Raum."
+#, fuzzy
msgid ""
-"affiliate &lt;user&gt; &lt;owner|admin|member|outcast|none&gt;: Set a user's "
-"affiliation with the room."
+"affiliate &lt;owner|admin|member|outcast|none&gt; [nick1] [nick2] ...: Get "
+"the users with an affiliation or set users' affiliation with the room."
msgstr ""
"affiliate &lt;Benutzer&gt; &lt;owner|admin|member|outcast|none&gt;: Setze "
"eine Benutzerzugehörigkeit für den Raum."
+#, fuzzy
msgid ""
-"role &lt;user&gt; &lt;moderator|participant|visitor|none&gt;: Set a user's "
-"role in the room."
+"role &lt;moderator|participant|visitor|none&gt; [nick1] [nick2] ...: Get the "
+"users with an role or set users' role with the room."
msgstr ""
"role &lt;Benutzer&gt; &lt;moderator|participant|visitor|none&gt;: Setze eine "
"Rolle für den Benutzer im Raum."
@@ -4618,6 +4802,18 @@ msgstr "Fehler beim Betreten des Chats %s"
msgid "Error in chat %s"
msgstr "Fehler im Chat %s"
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "Beim Übertragen der Datei trat ein Fehler auf\n"
+
+msgid "Transfer was closed."
+msgstr "Übertragung wurde geschlossen."
+
+msgid "Failed to open the file"
+msgstr "Öffnen der Datei fehlgeschlagen"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4645,9 +4841,6 @@ msgid "Please select the resource of %s to which you would like to send a file"
msgstr ""
"Bitte wählen Sie die Ressource von %s, an die Sie eine Datei schicken möchten"
-msgid "Select a Resource"
-msgstr "Wählen Sie eine Ressource"
-
msgid "Edit User Mood"
msgstr "Benutzerstimmung ändern"
@@ -5237,63 +5430,26 @@ msgid "Windows Live ID authentication:Invalid response"
msgstr "Windows Live ID-Authentifikation:Ungültige Antwort"
#, c-format
-msgid "%s is not a valid group."
-msgstr "%s ist keine gültige Gruppe."
-
-msgid "Unknown error."
-msgstr "Unbekannter Fehler."
-
-#, c-format
-msgid "%s on %s (%s)"
-msgstr "%s auf %s (%s)"
-
-#, c-format
msgid "%s just sent you a Nudge!"
msgstr "%s hat Sie gerade angestoßen!"
-#. char *adl = g_strndup(payload, len);
#, c-format
-msgid "Unknown error (%d)"
-msgstr "Unbekannter Fehler (%d)"
+msgid "Unknown error (%d): %s"
+msgstr "Unbekannter Fehler (%d): %s"
msgid "Unable to add user"
msgstr "Kann den Benutzer nicht hinzufügen"
-msgid "The following users are missing from your addressbook"
-msgstr "Die folgenden Benutzer fehlen in Ihrem Adressbuch"
-
-#, c-format
-msgid "Unable to add user on %s (%s)"
-msgstr "Kann den Benutzer nicht zu %s (%s) hinzufügen"
-
-#, c-format
-msgid "Unable to block user on %s (%s)"
-msgstr "Kann den Benutzer nicht für %s (%s) blockieren"
-
#, c-format
-msgid "Unable to permit user on %s (%s)"
-msgstr "Kann den Benutzer nicht für %s (%s) erlauben"
-
-#, c-format
-msgid "%s could not be added because your buddy list is full."
-msgstr "%s konnte nicht hinzugefügt werden, da Ihre Buddy-Liste voll ist."
-
-#, c-format
-msgid "%s is not a valid passport account."
-msgstr "%s ist kein gültiges Passport-Konto."
+msgid "Unknown error (%d)"
+msgstr "Unbekannter Fehler (%d)"
-msgid "Service Temporarily Unavailable."
-msgstr "Dienst momentan nicht verfügbar."
+msgid "The following users are missing from your addressbook"
+msgstr "Die folgenden Benutzer fehlen in Ihrem Adressbuch"
msgid "Mobile message was not sent because it was too long."
msgstr "Mobile Nachricht wurde nicht gesendet, da sie zu lang war."
-msgid "Unable to rename group"
-msgstr "Kann die Gruppe nicht umbenennen"
-
-msgid "Unable to delete group"
-msgstr "Kann die Gruppe nicht löschen"
-
#, c-format
msgid ""
"The MSN server will shut down for maintenance in %d minute. You will "
@@ -5390,6 +5546,9 @@ msgstr ""
"Ihre MSN-Buddy-Liste ist temporär nicht verfügbar. Bitte warten Sie und "
"versuchen Sie es später nochmal."
+msgid "Unknown error."
+msgstr "Unbekannter Fehler."
+
msgid "Handshaking"
msgstr "Abgleich"
@@ -5457,14 +5616,6 @@ msgstr ""
"Nachricht konnte nicht gesendet werden, da ein unbekannter Fehler "
"aufgetreten ist:"
-#, c-format
-msgid "%s has added you to his or her buddy list."
-msgstr "Der Benutzer %s hat Sie zu seiner Buddy-Liste hinzugefügt."
-
-#, c-format
-msgid "%s has removed you from his or her buddy list."
-msgstr "Der Benutzer %s hat Sie von seiner Buddy-Liste gelöscht."
-
msgid "Delete Buddy from Address Book?"
msgstr "Buddy aus dem Adressbuch löschen?"
@@ -5494,6 +5645,51 @@ msgid "MSN Protocol Plugin"
msgstr "MSN-Protokoll-Plugin"
#, c-format
+msgid "%s is not a valid group."
+msgstr "%s ist keine gültige Gruppe."
+
+#, c-format
+msgid "%s on %s (%s)"
+msgstr "%s auf %s (%s)"
+
+#, c-format
+msgid "Unable to add user on %s (%s)"
+msgstr "Kann den Benutzer nicht zu %s (%s) hinzufügen"
+
+#, c-format
+msgid "Unable to block user on %s (%s)"
+msgstr "Kann den Benutzer nicht für %s (%s) blockieren"
+
+#, c-format
+msgid "Unable to permit user on %s (%s)"
+msgstr "Kann den Benutzer nicht für %s (%s) erlauben"
+
+#, c-format
+msgid "%s could not be added because your buddy list is full."
+msgstr "%s konnte nicht hinzugefügt werden, da Ihre Buddy-Liste voll ist."
+
+#, c-format
+msgid "%s is not a valid passport account."
+msgstr "%s ist kein gültiges Passport-Konto."
+
+msgid "Service Temporarily Unavailable."
+msgstr "Dienst momentan nicht verfügbar."
+
+msgid "Unable to rename group"
+msgstr "Kann die Gruppe nicht umbenennen"
+
+msgid "Unable to delete group"
+msgstr "Kann die Gruppe nicht löschen"
+
+#, c-format
+msgid "%s has added you to his or her buddy list."
+msgstr "Der Benutzer %s hat Sie zu seiner Buddy-Liste hinzugefügt."
+
+#, c-format
+msgid "%s has removed you from his or her buddy list."
+msgstr "Der Benutzer %s hat Sie von seiner Buddy-Liste gelöscht."
+
+#, c-format
msgid "No such user: %s"
msgstr "Kein solcher Benutzer: %s"
@@ -5523,6 +5719,8 @@ msgid "Lost connection with server"
msgstr "Verbindung zum Server verloren"
#. Can't write _()'d strings in array initializers. Workaround.
+#. khc: then use N_() in the array initializer and use _() when they are
+#. used
msgid "New mail messages"
msgstr "Neue Mail-Nachrichten"
@@ -6435,7 +6633,7 @@ msgstr ""
"sein oder mit einem Buchstaben beginnen und nur Buchstaben, Ziffern und "
"Leerzeichen enthalten oder nur aus Ziffern bestehen."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr "Ungültiger Benutzername."
@@ -6451,7 +6649,7 @@ msgstr "Ihr Benutzerkonto ist momentan gesperrt."
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "Der AOL-Sofortnachrichtendienst ist zur Zeit nicht erreichbar."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6591,7 +6789,7 @@ msgid "Do you want to add this buddy to your buddy list?"
msgstr "Möchten Sie diesen Buddy zu Ihrer Buddy-Liste hinzufügen?"
msgid "_Add"
-msgstr "_Hinzufügen"
+msgstr "Hinzu_fügen"
msgid "_Decline"
msgstr "_Ablehnen"
@@ -6652,7 +6850,7 @@ msgstr[0] ""
msgstr[1] ""
"Sie haben %hu Nachrichten von %s aus unbekannten Gründen nicht erhalten."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "Kann die Nachricht nicht senden: %s"
@@ -7264,13 +7462,13 @@ msgid "Buddy Memo"
msgstr "Buddy-Notiz"
msgid "Change his/her memo as you like"
-msgstr "Ändern Sie seine/ihre Notiz, wenn Sie wollen"
+msgstr ""
msgid "_Modify"
msgstr "_Bearbeiten"
msgid "Memo Modify"
-msgstr "Notiz bearbeiten"
+msgstr "Memo bearbeiten"
msgid "Server says:"
msgstr "Server meldet:"
@@ -7594,6 +7792,9 @@ msgstr "<p><b>Bestätigung</b>:<br>\n"
msgid "<p><b>Scrupulous Testers</b>:<br>\n"
msgstr "<p><b>Gewissenhafte Tester</b>:<br>\n"
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr "<p><i>Und all die Jungs im Hinterzimmer...</i><br>\n"
@@ -7729,7 +7930,6 @@ msgstr ""
"Unbekannte Antwort bei der Anmeldung (0x%02X):\n"
"%s"
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "Verbindung nicht möglich."
@@ -9334,188 +9534,13 @@ msgid "Auth Domain"
msgstr "Auth-Domain"
#, c-format
-msgid "Looking up %s"
-msgstr "Suche nach %s"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Verbindung mit %s fehlgeschlagen"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Anmeldung: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "Datei %s konnte nicht geschrieben werden."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "Datei %s konnte nicht gelesen werden."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "Nachricht zu lange, letzten %s Bytes abgeschnitten."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s ist zur Zeit nicht online."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "Verwarnung von %s nicht erlaubt."
-
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr ""
-"Eine Nachricht ging verloren. Sie überschreiten die Geschwindigkeitsgrenze "
-"des Servers."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "Chat in %s ist nicht verfügbar."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "Sie verschicken die Nachrichten an %s zu schnell."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "Eine Nachricht von %s hat Sie nicht erreicht, da sie zu groß war."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr ""
-"Eine Nachricht von %s hat Sie nicht erreicht, da sie zu schnell gesendet "
-"wurde."
-
-msgid "Failure."
-msgstr "Fehler."
-
-msgid "Too many matches."
-msgstr "Zu viele Übereinstimmungen."
-
-msgid "Need more qualifiers."
-msgstr "Benötige mehr Angaben."
-
-msgid "Dir service temporarily unavailable."
-msgstr "Verzeichnis-Dienst ist zur Zeit nicht verfügbar."
-
-msgid "Email lookup restricted."
-msgstr "E-Mail-Suche eingeschränkt."
-
-msgid "Keyword ignored."
-msgstr "Stichwort ignoriert."
-
-msgid "No keywords."
-msgstr "Keine Stichwörter."
-
-msgid "User has no directory information."
-msgstr "Der Benutzer hat kein Profil."
-
-msgid "Country not supported."
-msgstr "Land nicht unterstützt."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Unbekannter Fehler: %s."
-
-msgid "Incorrect username or password."
-msgstr "Ungültiger Benutzername oder Passwort."
-
-msgid "The service is temporarily unavailable."
-msgstr "Der Dienst ist zur Zeit nicht verfügbar."
-
-msgid "Your warning level is currently too high to log in."
-msgstr "Ihre Warnstufe ist zur Zeit zu hoch, um sich anzumelden."
-
-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 ""
-"Sie haben Sich zu schnell an- und abgemeldet. Warten Sie 10 Minuten und "
-"versuchen Sie es erneut. Wenn Sie es weiter versuchen, werden sie noch "
-"länger warten müssen."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "Unbekannter Anmeldungsfehler: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "Unbekannter Fehler '%d' aufgetreten. Info: %s"
-
-msgid "Invalid Groupname"
-msgstr "Ungültiger Gruppenname"
-
-msgid "Connection Closed"
-msgstr "Verbindung geschlossen"
-
-msgid "Waiting for reply..."
-msgstr "Warte auf Antwort..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr ""
-"TOC ist von seiner Pause zurückgekehrt. Sie können wieder Nachrichten senden."
-
-msgid "Password Change Successful"
-msgstr "Passwortänderung erfolgreich"
-
-msgid "_Group:"
-msgstr "_Gruppe:"
-
-msgid "Get Dir Info"
-msgstr "Verzeichnisinformation abrufen"
-
-msgid "Set Dir Info"
-msgstr "Verzeichnisinformation abrufen"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "Kann %s nicht zum Schreiben öffnen!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr ""
-"Dateiübertragung gescheitert; die andere Seite hat die Dateiübertragung "
-"wahrscheinlich abgebrochen."
-
-msgid "Could not connect for transfer."
-msgstr "Übertragungsverbindung konnte nicht hergestellt werden."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr ""
-"Konnte keinen Datei-Header schreiben. Die Datei wurde nicht übermittelt."
-
-msgid "Save As..."
-msgstr "Speichern unter..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s bittet %s %d Datei zu akzeptieren: %s (%.2f %s)%s%s"
-msgstr[1] "%s bittet %s %d Dateien zu akzeptieren: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s bittet Sie eine Datei zu senden"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "TOC-Protokoll-Plugin"
-
-#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
"%s hat Ihnen eine Webcam-Einladung gesendet, die noch nicht unterstützt wird."
+msgid "Your SMS was not delivered"
+msgstr "Ihre SMS wurde nicht ausgeliefert"
+
msgid "Your Yahoo! message did not get sent."
msgstr "Ihre Yahoo!-Nachricht wurde nicht verschickt."
@@ -9540,6 +9565,40 @@ msgstr ""
msgid "Add buddy rejected"
msgstr "Hinzufügen des Buddys zurückgewiesen"
+#. Some error in the received stream
+msgid "Received invalid data"
+msgstr "Ungültige Daten empfangen"
+
+#. Password incorrect
+msgid "Incorrect Password"
+msgstr "Falsches Passwort"
+
+#. security lock from too many failed login attempts
+#, fuzzy
+msgid ""
+"Account locked: Too many failed login attempts.\n"
+"Logging into the Yahoo! website may fix this."
+msgstr ""
+"Unbekannte Fehlernummer %d. Vielleicht kann dies repariert werden, wenn Sie "
+"sich auf der Yahoo! Webseite anmelden."
+
+#. the username does not exist
+msgid "Username does not exist"
+msgstr "Benutzername existiert nicht"
+
+#. indicates a lock of some description
+#, fuzzy
+msgid ""
+"Account locked: Unknown reason.\n"
+"Logging into the Yahoo! website may fix this."
+msgstr ""
+"Unbekannte Fehlernummer %d. Vielleicht kann dies repariert werden, wenn Sie "
+"sich auf der Yahoo! Webseite anmelden."
+
+#. username or password missing
+msgid "Username or password missing"
+msgstr "Benutzername oder Passwort fehlt"
+
#, c-format
msgid ""
"The Yahoo server has requested the use of an unrecognized authentication "
@@ -10165,18 +10224,6 @@ msgstr "+++ %s wurde tätig"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "Fehler beim Lesen von %s"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"Beim Einlesen Ihrer %s trat ein Fehler auf. Die Liste wurde nicht geladen "
-"und die alte Datei wurde in %s~ umbenannt."
-
msgid "Calculating..."
msgstr "Berechne..."
@@ -10252,6 +10299,14 @@ msgid "Unable to connect to %s: %s"
msgstr "Verbindung zu %s nicht möglich: %s"
#, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+"Verbindung zu %s fehlgeschlagen: Der Server verlangt TLS/SSL, es wurde "
+"jedoch kein TLS/SSL-Support gefunden."
+
+#, c-format
msgid " - %s"
msgstr " - %s"
@@ -10281,6 +10336,18 @@ msgstr "Verbindung abgelehnt."
msgid "Address already in use."
msgstr "Adresse wird bereits benutzt."
+#, c-format
+msgid "Error Reading %s"
+msgstr "Fehler beim Lesen von %s"
+
+#, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"Beim Einlesen Ihrer %s trat ein Fehler auf. Die Datei wurde nicht geladen "
+"und die alte Datei wurde in %s~ umbenannt."
+
msgid "Internet Messenger"
msgstr "Internet-Sofortnachrichtendienst"
@@ -10323,10 +10390,8 @@ msgstr "Benachrichtigung über neue _Mails"
msgid "Use this buddy _icon for this account:"
msgstr "Dieses Buddy-_Icon für dieses Konto benutzen:"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s Einstellungen"
+msgid "_Advanced"
+msgstr "E_rweitert"
msgid "Use GNOME Proxy Settings"
msgstr "Benutze GNOME-Proxy-Einstellungen"
@@ -10361,9 +10426,6 @@ msgstr "Wenn Sie genau hinschauen"
msgid "you can see the butterflies mating"
msgstr "Sie können den Schmetterlingen beim Paaren zusehen"
-msgid "Proxy Options"
-msgstr "Proxy-Optionen"
-
msgid "Proxy _type:"
msgstr "Proxy-_Typ:"
@@ -10391,8 +10453,8 @@ msgstr "_Einfach"
msgid "Create _this new account on the server"
msgstr "Dieses _neue Konto auf dem Server anlegen"
-msgid "_Advanced"
-msgstr "_Erweitert"
+msgid "_Proxy"
+msgstr "Pr_oxy"
# Aktiv
msgid "Enabled"
@@ -10446,8 +10508,8 @@ msgstr ""
msgid "Please update the necessary fields."
msgstr "Bitte aktualisieren Sie die erforderlichen Felder."
-msgid "Room _List"
-msgstr "Ra_umliste"
+msgid "A_ccount"
+msgstr "K_onto"
msgid ""
"Please enter the appropriate information about the chat you would like to "
@@ -10456,8 +10518,8 @@ msgstr ""
"Bitte geben Sie geeignete Informationen über den Chat ein, den Sie betreten "
"wollen.\n"
-msgid "_Account:"
-msgstr "_Konto:"
+msgid "Room _List"
+msgstr "Ra_umliste"
msgid "_Block"
msgstr "_Sperren"
@@ -10474,6 +10536,16 @@ msgstr "_Info abrufen"
msgid "I_M"
msgstr "I_M"
+#, fuzzy
+msgid "_Audio Call"
+msgstr "Chat _hinzufügen"
+
+msgid "Audio/_Video Call"
+msgstr "Audio/_Video-Anruf"
+
+msgid "_Video Call"
+msgstr "_Video-Anruf"
+
msgid "_Send File..."
msgstr "_Datei versenden..."
@@ -10567,7 +10639,7 @@ msgid "/Buddies/Show/_Offline Buddies"
msgstr "/Buddys/Anzeigen/_Offline-Buddys"
msgid "/Buddies/Show/_Empty Groups"
-msgstr "/Buddys/Anzeigen/_leere Gruppen"
+msgstr "/Buddys/Anzeigen/_Leere Gruppen"
msgid "/Buddies/Show/Buddy _Details"
msgstr "/Buddys/Anzeigen/Buddy-_Details"
@@ -10610,6 +10682,9 @@ msgstr "/Werkzeuge/Buddy-_Alarm"
msgid "/Tools/_Certificates"
msgstr "/Werkzeuge/_Zertifikate"
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Werkzeuge/Benutzerdefinierte Smile_ys"
+
msgid "/Tools/Plu_gins"
msgstr "/Werkzeuge/Plu_gins"
@@ -10619,9 +10694,6 @@ msgstr "/Werkzeuge/_Einstellungen"
msgid "/Tools/Pr_ivacy"
msgstr "/Werkzeuge/Pri_vatsphäre"
-msgid "/Tools/Smile_y"
-msgstr "/Werkzeuge/Smile_y"
-
msgid "/Tools/_File Transfers"
msgstr "/Werkzeuge/_Dateiübertragungen"
@@ -10739,8 +10811,8 @@ msgstr "Manuell"
msgid "By status"
msgstr "Nach Status"
-msgid "By log size"
-msgstr "Nach Größe der Logs"
+msgid "By recent log activity"
+msgstr "Nach letzter Mitschnitts-Aktivität"
#, c-format
msgid "%s disconnected"
@@ -10756,6 +10828,9 @@ msgstr "Wiederverbinden"
msgid "Re-enable"
msgstr "Reaktivieren"
+msgid "SSL FAQs"
+msgstr "SSL-FAQs"
+
msgid "Welcome back!"
msgstr "Willkommen zurück!"
@@ -10805,7 +10880,7 @@ msgid "/Buddies/Show/Offline Buddies"
msgstr "/Buddys/Anzeigen/Offline-Buddys"
msgid "/Buddies/Show/Empty Groups"
-msgstr "/Buddys/Anzeigen/leere Gruppen"
+msgstr "/Buddys/Anzeigen/Leere Gruppen"
msgid "/Buddies/Show/Buddy Details"
msgstr "/Buddys/Anzeigen/Buddy-Details"
@@ -10846,6 +10921,9 @@ msgstr ""
msgid "A_lias:"
msgstr "A_lias:"
+msgid "_Group:"
+msgstr "_Gruppe:"
+
msgid "Auto_join when account becomes online."
msgstr "Automatisch _beitreten, wenn das Konto online geht."
@@ -10898,14 +10976,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr "Buddy in einen Chatraum einladen"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Bitte geben Sie den Benutzernamen der Person ein, die Sie einladen möchten "
-"zusammen mit einer optionalen Einladungsnachricht."
-
msgid "_Buddy:"
msgstr "_Buddy:"
@@ -10980,6 +11050,18 @@ msgstr "/Unterhaltung/S_peichern als..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Unterhaltung/_Leeren"
+msgid "/Conversation/M_edia"
+msgstr "/Unterhaltung/M_edien"
+
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Unterhaltung/Medien/_Audio-Anruf"
+
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Unterhaltung/Medien/_Video-Anruf"
+
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Unterhaltung/Medien/A_udio-\\/Video-Anruf"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Unterhaltung/Datei _senden..."
@@ -11052,6 +11134,15 @@ msgstr "/Unterhaltung"
msgid "/Conversation/View Log"
msgstr "/Unterhaltung/Betrachte Mitschnitt"
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Unterhaltung/Medien/Audio-Anruf"
+
+msgid "/Conversation/Media/Video Call"
+msgstr "/Unterhaltung/Medien/Video-Anruf"
+
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Unterhaltung/Medien/Audio-\\/Video-Anruf"
+
msgid "/Conversation/Send File..."
msgstr "/Unterhaltung/Datei senden ..."
@@ -11235,6 +11326,9 @@ msgstr "Künstler"
msgid "Ka-Hing Cheung"
msgstr "Ka-Hing Cheung"
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "Support"
@@ -11359,6 +11453,9 @@ msgstr "Hindi"
msgid "Hungarian"
msgstr "Ungarisch"
+msgid "Armenian"
+msgstr "Armenisch"
+
msgid "Indonesian"
msgstr "Indonesisch"
@@ -11374,6 +11471,9 @@ msgstr "Georgisch"
msgid "Ubuntu Georgian Translators"
msgstr "Ubuntu-Georgisch-Übersetzer"
+msgid "Khmer"
+msgstr "Khmer"
+
msgid "Kannada"
msgstr "Kannada"
@@ -11452,6 +11552,9 @@ msgstr "Singhalesisch"
msgid "Swedish"
msgstr "Schwedisch"
+msgid "Swahili"
+msgstr "Swahili"
+
msgid "Tamil"
msgstr "Tamilisch"
@@ -11558,7 +11661,7 @@ msgid "_Name"
msgstr "_Name"
msgid "_Account"
-msgstr "_Konto"
+msgstr "K_onto"
msgid "Get User Info"
msgstr "Benutzer-Info abrufen"
@@ -11847,15 +11950,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr "Tipp-Benachrichtigung aktivieren"
-msgid "_Copy Email Address"
-msgstr "Kopiere _E-Mail-Adresse"
-
-msgid "_Open Link in Browser"
-msgstr "Ö_ffne Link im Browser"
-
-msgid "_Copy Link Location"
-msgstr "_Kopiere den Link"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12108,6 +12202,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12122,6 +12217,7 @@ msgstr ""
"\n"
" -c, --config=VERZ benutze VERZ als Konfigurationsverzeichnis\n"
" -d, --debug gibt Debugging-Meldungen nach stdout aus\n"
+" -f, --force-online online erzwingen, ungeachtet des Netzwerk-Status\n"
" -h, --help zeigt diese Hilfe und beendet das Programm\n"
" -m, --multiple mehrere Instanzen erlauben\n"
" -n, --nologin nicht automatisch anmelden\n"
@@ -12139,6 +12235,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12152,6 +12249,7 @@ msgstr ""
"\n"
" -c, --config=VERZ benutze VERZ als Konfigurationsverzeichnis\n"
" -d, --debug gibt Debugging-Meldungen nach stdout aus\n"
+" -f, --force-online online erzwingen, ungeachtet des Netzwerkstatus\n"
" -h, --help zeigt diese Hilfe und beendet das Programm\n"
" -m, --multiple mehrere Instanzen erlauben\n"
" -n, --nologin nicht automatisch anmelden\n"
@@ -12198,11 +12296,22 @@ msgstr "Pidgin"
msgid "Exiting because another libpurple client is already running.\n"
msgstr "Wird geschlossen, da bereits ein anderer libpurple-Client läuft\n"
-msgid "Open All Messages"
-msgstr "Alle Nachrichten öffnen"
+msgid "/_Media"
+msgstr "/_Medien"
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Sie haben Post!</span>"
+msgid "/Media/_Hangup"
+msgstr "/Medien/_Auflegen"
+
+msgid "Calling..."
+msgstr "Anrufen..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr "%s möchte eine Audio-/Video-Sitzung mit Ihnen starten."
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr "%s möchte eine Video-Sitzung mit Ihnen starten."
#, c-format
msgid "%s has %d new message."
@@ -12232,6 +12341,24 @@ msgid ""
msgstr ""
"Das benutzerdefinierte Browserkommando wurde ausgewählt, aber nicht gesetzt."
+msgid "Open All Messages"
+msgstr "Alle Nachrichten öffnen"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Sie haben Post!</span>"
+
+msgid "New Pounces"
+msgstr "Neuer Alarm"
+
+msgid "Dismiss"
+msgstr "Verwerfen"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Sie haben geklopft!</span>"
+
+msgid "No message"
+msgstr "Keine Nachricht"
+
msgid "The following plugins will be unloaded."
msgstr "Die folgenden Plugins werden entladen."
@@ -12280,21 +12407,27 @@ msgstr "<b>Plugin-Details</b>"
msgid "Select a file"
msgstr "Wählen Sie eine Datei"
+msgid "Modify Buddy Pounce"
+msgstr "Buddy-Alarm bearbeiten"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "Bei wem alarmieren"
+msgid "_Account:"
+msgstr "K_onto:"
+
msgid "_Buddy name:"
-msgstr "_Buddy-Name:"
+msgstr "Budd_y-Name:"
msgid "Si_gns on"
-msgstr "_sich anmeldet"
+msgstr "si_ch anmeldet"
msgid "Signs o_ff"
msgstr "sich abmel_det"
msgid "Goes a_way"
-msgstr "_hinausgeht"
+msgstr "hinausgeh_t"
msgid "Ret_urns from away"
msgstr "wi_eder anwesend ist"
@@ -12303,22 +12436,22 @@ msgid "Becomes _idle"
msgstr "_untätig wird"
msgid "Is no longer i_dle"
-msgstr "nicht meh_r untätig ist"
+msgstr "nicht _mehr untätig ist"
msgid "Starts _typing"
-msgstr "zu _tippen beginnt"
+msgstr "zu tippen _beginnt"
msgid "P_auses while typing"
-msgstr "beim Tippen an_hält"
+msgstr "beim Tippen anh_ält"
msgid "Stops t_yping"
msgstr "aufhört _zu tippen"
msgid "Sends a _message"
-msgstr "eine _Nachricht sendet"
+msgstr "eine Nachr_icht sendet"
msgid "Ope_n an IM window"
-msgstr "Gesprächsfenster ö_ffnen"
+msgstr "_Gesprächsfenster öffnen"
msgid "_Pop up a notification"
msgstr "_Popup-Benachrichtigung"
@@ -12327,22 +12460,22 @@ msgid "Send a _message"
msgstr "_Nachricht senden"
msgid "E_xecute a command"
-msgstr "Befeh_l ausführen"
+msgstr "Befehl ausfüh_ren"
msgid "P_lay a sound"
-msgstr "einen _Klang abspielen"
+msgstr "Einen _Klang abspielen"
msgid "Brows_e..."
-msgstr "Aus_wählen..."
+msgstr "Au_swählen..."
msgid "Br_owse..."
-msgstr "Aus_wählen..."
+msgstr "Auswäh_len..."
msgid "Pre_view"
msgstr "_Vorschau"
msgid "P_ounce only when my status is not Available"
-msgstr "Nur _alarmieren, wenn ich nicht verfügbar bin"
+msgstr "Nur alarmieren, wenn ich nicht ver_fügbar bin"
msgid "_Recurring"
msgstr "_Wiederkehrend"
@@ -12350,6 +12483,39 @@ msgstr "_Wiederkehrend"
msgid "Pounce Target"
msgstr "Alarm-Ziel"
+msgid "Started typing"
+msgstr "Beginnt zu tippen"
+
+msgid "Paused while typing"
+msgstr "Hat beim Tippen angehalten"
+
+msgid "Signed on"
+msgstr "Hat sich anmeldet"
+
+msgid "Returned from being idle"
+msgstr "Ist nicht mehr inaktiv"
+
+msgid "Returned from being away"
+msgstr "Ist wieder anwesend"
+
+msgid "Stopped typing"
+msgstr "Hat das Tippen gestoppt"
+
+msgid "Signed off"
+msgstr "Hat sich abmeldet"
+
+msgid "Became idle"
+msgstr "Wurde untätig"
+
+msgid "Went away"
+msgstr "Ging hinaus"
+
+msgid "Sent a message"
+msgstr "Eine Nachricht senden"
+
+msgid "Unknown.... Please report this!"
+msgstr "Unbekannt.... Bitte berichten Sie dieses Problem!"
+
msgid "Smiley theme failed to unpack."
msgstr "Smiley-Thema konnte nicht entpackt werden."
@@ -12372,6 +12538,11 @@ msgstr "Tastaturkürzel"
msgid "Cl_ose conversations with the Escape key"
msgstr "_Schließe Gespräche mit der Escape-Taste"
+#. Buddy List Themes
+msgid "Buddy List Theme"
+msgstr "Buddy-Listen-Thema"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "Kontrollleisten-Icon"
@@ -12482,9 +12653,6 @@ msgstr "Kann das Proxy-Konfigurationsprogramm nicht starten."
msgid "Cannot start browser configuration program."
msgstr "Kann das Browser-Konfigurationsprogramm nicht starten."
-msgid "ST_UN server:"
-msgstr "ST_UN Server:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">Beispiel: stunserver.org</span>"
@@ -12509,6 +12677,10 @@ msgstr "_Start-Port:"
msgid "_End port:"
msgstr "_End-Port:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr "Relay-Server (TURN)"
+
msgid "Proxy Server &amp; Browser"
msgstr "Proxy-Server &amp; Browser"
@@ -12693,12 +12865,12 @@ msgstr "Wenn abwesend und untätig"
msgid "Auto-away"
msgstr "Automatisch abwesend"
-msgid "Change status when _idle"
-msgstr "Ändere Status, wenn _inaktiv"
-
msgid "_Minutes before becoming idle:"
msgstr "_Minuten, bevor auf abwesend gesetzt wird:"
+msgid "Change status when _idle"
+msgstr "Ändere Status, wenn _inaktiv"
+
msgid "Change _status to:"
msgstr "Ändere _Status zu:"
@@ -12855,6 +13027,12 @@ msgstr "S_peichern & Übernehmen"
msgid "Status for %s"
msgstr "Status für %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
msgid "Custom Smiley"
msgstr "Benutzerdefinierter Smiley"
@@ -12864,15 +13042,15 @@ msgstr "Weitere Daten benötigt"
msgid "Please provide a shortcut to associate with the smiley."
msgstr "Bitte geben Sie eine Tastenkombination für den Smiley an."
-msgid "Duplicate Shortcut"
-msgstr "Doppelte Tastenkombination"
-
+#, c-format
msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
+"A custom smiley for '%s' already exists. Please use a different shortcut."
msgstr ""
-"Für diese Tastenkombination existiert bereits ein benutzerdefinierter "
-"Smiley. Bitten wählen Sie eine andere Tastenkombination."
+"Für '%s' existiert bereits ein benutzerdefinierter Smiley. Bitten wählen Sie "
+"eine andere Tastenkombination."
+
+msgid "Duplicate Shortcut"
+msgstr "Doppelte Tastenkombination"
msgid "Please select an image for the smiley."
msgstr "Bitte wählen Sie ein Bild für den Smiley."
@@ -12883,19 +13061,25 @@ msgstr "Smiley bearbeiten"
msgid "Add Smiley"
msgstr "Smiley hinzufügen"
-msgid "Smiley _Image"
-msgstr "Smiley-_Bild"
+msgid "_Image:"
+msgstr "_Bild:"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr "_Tastenkombination"
+#. Shortcut text
+msgid "S_hortcut text:"
+msgstr "_Verknüpfter Text:"
msgid "Smiley"
msgstr "Smiley"
+msgid "Shortcut Text"
+msgstr "Verknüpfter Text"
+
msgid "Custom Smiley Manager"
msgstr "Verwaltung für benutzerdefinierte Smileys"
+msgid "Select Buddy Icon"
+msgstr "Buddy-Icon auswählen"
+
msgid "Click to change your buddyicon for this account."
msgstr "Klicken Sie hier, um Ihr Buddy-Icon für dieses Konto zu ändern."
@@ -13018,6 +13202,15 @@ msgstr ""
"Bild '%s' konnte nicht geladen werden: Grund unbekannt, vermutlich eine "
"korrupte Bilddatei"
+msgid "_Open Link"
+msgstr "Ö_ffne Link"
+
+msgid "_Copy Link Location"
+msgstr "_Kopiere den Link"
+
+msgid "_Copy Email Address"
+msgstr "Kopiere _E-Mail-Adresse"
+
msgid "Save File"
msgstr "Datei speichern"
@@ -13624,12 +13817,6 @@ msgstr ""
"- Es sendet eine Nachricht zu Leuten in Ihrer Buddy Liste, direkt wenn Sie "
"sich angemeldet haben"
-msgid "Cursor Color"
-msgstr "Cursor-Farbe"
-
-msgid "Secondary Cursor Color"
-msgstr "Sekundäre Cursor-Farbe"
-
msgid "Hyperlink Color"
msgstr "Hyperlink-Farbe"
@@ -13639,6 +13826,10 @@ msgstr "Farbe für besuchte Hyperlinks"
msgid "Highlighted Message Name Color"
msgstr "Farbe des Absendernamens für hervorgehobene Nachrichten"
+#, fuzzy
+msgid "Typing Notification Color"
+msgstr "Farbe der Tipp-Benachrichtigung"
+
msgid "GtkTreeView Horizontal Separation"
msgstr "GtkTreeview horizontaler Abstand"
@@ -13667,35 +13858,24 @@ msgstr "GTK+ Schrift"
msgid "GTK+ Text Shortcut Theme"
msgstr "GTK+ Text Shortcut-Thema"
-#.
-#. for (i = 0; i < G_N_ELEMENTS(widget_bool_prefs); i++) {
-#. hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_CAT_SPACE);
-#. gtk_box_pack_start(GTK_BOX(frame), hbox, FALSE, FALSE, 0);
-#.
-#. check = pidgin_prefs_checkbox(_(widget_bool_names[i]),
-#. widget_bool_prefs_set[i], hbox);
-#. gtk_size_group_add_widget(labelsg, check);
-#.
-#. widget_bool_widgets[i] = pidgin_prefs_checkbox("", widget_bool_prefs[i], hbox);
-#. *
-#. gtk_size_group_add_widget(widgetsb, widget_bool_widgets[i]);
-#. *
-#. gtk_widget_set_sensitive(widget_bool_widgets[i],
-#. purple_prefs_get_bool(widget_bool_prefs_set[i]));
-#. g_signal_connect(G_OBJECT(check), "toggled",
-#. G_CALLBACK(pidgin_toggle_sensitive),
-#. widget_bool_widgets[i]);
-#. }
-#.
-msgid "Interface colors"
-msgstr "UI-Farben"
+#, fuzzy
+msgid "Disable Typing Notification Text"
+msgstr "Tipp-Benachrichtigung aktivieren"
+
+#, fuzzy
+msgid "GTK+ Theme Control Settings"
+msgstr "Pidgin GTK+ Themenkontrolle"
-msgid "Widget Sizes"
-msgstr "Widget-Größen"
+#, fuzzy
+msgid "Colors"
+msgstr "Schließen"
msgid "Fonts"
msgstr "Schrift"
+msgid "Miscellaneous"
+msgstr ""
+
msgid "Gtkrc File Tools"
msgstr "Gtkrc-Datei-Werkzeuge"
@@ -14045,6 +14225,3 @@ msgstr "Sendet und empfängt RAW-XMPP-Blöcke."
msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr ""
"Dieses Plugin ist nützlich zur Fehlersuche in XMPP-Servern oder -Clients."
-
-#~ msgid "Unable to retrieve MSN Address Book"
-#~ msgstr "Konnte das MSN-Adressbuch nicht abrufen"
diff --git a/po/dz.po b/po/dz.po
index 9443714abe..c27860320b 100644
--- a/po/dz.po
+++ b/po/dz.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
+"POT-Creation-Date: 2009-04-30 10:37-0400\n"
"PO-Revision-Date: 2006-11-09 17:11+0530\n"
"Last-Translator: wangmo sherpa <rinwanshe@yahoo.com>\n"
"Language-Team: <pgeygel@dit.gov.bt>\n"
@@ -31,13 +31,13 @@ msgstr "ཕིརེནཆི།"
msgid "%s. Try `%s -h' for more information.\n"
msgstr "%s. བརྡ་དོན་ཧེང་བཀལ་དོན་ལུ་ `%s -h' འབད་རྩོན་བསྐྱེད།\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -624,21 +624,6 @@ msgid "Send To"
msgstr "ལུ་གཏང་།(_S)"
#, fuzzy
-msgid "Invite message"
-msgstr "འཕྲིན་དོན་སྤང་།"
-
-msgid "Invite"
-msgstr "མགྲོན་དུ་འབོད།"
-
-#, fuzzy
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"ཁྱོད་ཀྱིས་ མགྲོན་བརྡ་འབད་ནིའི་རེ་འདོད་བསྐྱེད་མི་ ལག་ལེན་པའི་མིང་ གདམ་ཁ་ཅན་གྱི་མགྲོན་འབོད་འཕྲིན་དོན་དང་"
-"སྦྲགས་ཏེ་བཙུགས་གནང་།"
-
-#, fuzzy
msgid "Conversation"
msgstr "གྲོས་གླེང་།"
@@ -902,6 +887,42 @@ msgstr "གྲོས་གླེང་།"
msgid "System Log"
msgstr "དྲན་དེབ་རིམ་ལུགས།"
+#, fuzzy
+msgid "Calling ... "
+msgstr "རྩིས་སྟོན་པའི་བསྒང་..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+#, fuzzy
+msgid "Accept"
+msgstr "དང་ལེན་འབད།(_A)"
+
+msgid "Reject"
+msgstr "ཕྱིར་བཏོན།"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "ཁྱོད་ཀྱིས་ རྒྱུ་ལམ%s%sའདི་ཁ་འཕྱལ་ཡི།"
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "གློག་འཕྲིན་ཚུ།"
@@ -937,6 +958,9 @@ msgstr "འཕྲོ་མཐུད།"
msgid "IM"
msgstr "ཨའི་ཨེམ་།"
+msgid "Invite"
+msgstr "མགྲོན་དུ་འབོད།"
+
msgid "(none)"
msgstr "(ཅི་མེད།)"
@@ -1163,7 +1187,6 @@ msgstr "%s འདི་ ཡར་སོ་ནུག (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s གིས་ ཁྱོད་ལུ་ འཕྲིན་དོན་གཅིག་བཏང་ཡོད། (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "ངོ་མ་ཤེས་པའི་ པའུནསི་གི་ བྱུང་ལས། འ་ནི་འདི་སྙན་ཞུ་འབད་གནང་།"
@@ -1214,7 +1237,6 @@ msgstr "གནས་ཚད་བསྒྱུར་བཅོས་མ་འབད
msgid "Change status to"
msgstr ": ལུ་ གནས་ཚད་བསྒྱུར་བཅོས་འབད།(_s)"
-#. Conversations
msgid "Conversations"
msgstr "གྲོས་གླེང་།"
@@ -1553,7 +1575,6 @@ msgid ""
msgstr ""
"གྲོས་གླེང་གསརཔ་འདི་ ཁ་ཕྱེཝ་ད་ལུ པ་ལག་ཨིན་འདི་གིས མཇུག་གི་གྲོས་གླེང་འདི ད་ལྟོའི་གྲོས་གླེང་ནང་བཙུགས་འོང་།"
-#, c-format
msgid "Online"
msgstr "གློག་ཐོག"
@@ -1603,6 +1624,28 @@ msgstr "ཇི་ཨེན་ཊི་མཇུག་གི་ལོག"
msgid "Lastlog plugin."
msgstr "གེམ་-ཚིག་ཡིག་དོན་ལུ་ མཇུག་གི་ལོག་གི་པ་ལག་ཨིན།"
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "ཡུ་ཨར་ཨེལ"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "རྩིས་ཐོ་ ཚུ།"
@@ -1701,14 +1744,6 @@ msgstr "ཁ་སླབ་མགྲོན་བརྡ་དང་ལེན་འ
msgid "SSL Certificate Verification"
msgstr ""
-#. Number of actions
-#, fuzzy
-msgid "Accept"
-msgstr "དང་ལེན་འབད།(_A)"
-
-msgid "Reject"
-msgstr "ཕྱིར་བཏོན།"
-
msgid "_View Certificate..."
msgstr ""
@@ -1845,6 +1880,18 @@ msgstr "%s ཁང་མིག་ནང་ལས་ཡར་སོ་ཡི།"
msgid "%s left the room (%s)."
msgstr "%sའདི་ཁང་མིག་(%s)ནང་ལས་ཡར་སོ་ཡི།"
+#, fuzzy
+msgid "Invite to chat"
+msgstr "གྲོས་ཚོགས་ནང་གདན་འདྲེན་ཞུ།"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"ཁྱོད་ཀྱིས་ མགྲོན་བརྡ་འབད་ནིའི་རེ་འདོད་བསྐྱེད་མི་ ལག་ལེན་པའི་མིང་ གདམ་ཁ་ཅན་གྱི་མགྲོན་འབོད་འཕྲིན་དོན་དང་"
+"སྦྲགས་ཏེ་བཙུགས་གནང་།"
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "མཐུད་ལམ་: %s ཐོབ་ནི་ལུ་འཐུས་ཤོར་བྱུང་ཡོདཔ།"
@@ -1979,7 +2026,6 @@ msgstr "%s ལས་ %s གི་ གནས་སོར་འགོ་བཙུ
msgid "Transfer of file %s complete"
msgstr "མཇུག་བསྡུའི་ཡིག་སྣོད་%sཀྱི་གནས་སོར། "
-#, c-format
msgid "File transfer complete"
msgstr "ཡིག་སྣོད་གནས་སོར་མཇུག་བསྡུ།"
@@ -1987,7 +2033,6 @@ msgstr "ཡིག་སྣོད་གནས་སོར་མཇུག་བས
msgid "You canceled the transfer of %s"
msgstr " ཁྱོད་ཀྱིས་%sཀྱི་གནས་སོར་འདི་ཆ་མེད་བཏང་ནུག"
-#, c-format
msgid "File transfer cancelled"
msgstr "ཡིག་སྣོད་གནས་སོར་འདི་ཆ་མེད་བཏང་ནུག"
@@ -2210,7 +2255,7 @@ msgstr "(%s) %s <རང་བཞིན-ལན>: %s\n"
msgid "You are using %s, but this plugin requires %s."
msgstr ""
-#, fuzzy, c-format
+#, fuzzy
msgid "This plugin has not defined an ID."
msgstr "འ་ནི་ལས་འགན་འདི་ ད་ཚུན་ ལག་ལེན་མ་འཐབ་པས།"
@@ -2699,6 +2744,32 @@ msgstr ""
msgid "Do not ask. Always save in pounce."
msgstr ""
+#, fuzzy
+msgid "One Time Password"
+msgstr "ཆོག་ཡིག་བཙུགས།"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2905,7 +2976,6 @@ msgstr ""
"ཉེ་གནས་ཀྱི་ ཨེམ་ཌི་ཨེན་ཨེསི་སར་བར་དང་གཅིག་ཁར་ མཐུད་ལམ་གཞི་འཛུགས་འབད་མ་ཚུགས། འདི་ལཱ་འབདཝ་མས་"
"ག?"
-#. Creating the options for the protocol
msgid "First name"
msgstr "མགོ་མིང་།"
@@ -2939,6 +3009,11 @@ msgstr "བཱོན་ཇོར་ གནད་སྤེལ་ལམ་ལུ
msgid "Purple Person"
msgstr "གང་ཟག་གསརཔ།"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "ཉེ་གནས།"
+
msgid "Bonjour"
msgstr "བཱོན་ཇོར།"
@@ -3097,13 +3172,13 @@ msgstr "ཆ་རོགས་: %s དོན་ལུ་ ཁ་སླབ་གཅ
msgid "Add to chat..."
msgstr "ཁ་སླབ་ལུ་ཁ་སྐོང་བརྐྱབ།..."
+#. Global
msgid "Available"
msgstr "ཐོབ་ཚུགས།"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "ཕྱི་ཁ།"
@@ -3450,6 +3525,17 @@ msgstr ""
"ཁྱོད་ཀྱི་ སེལ་འཐུ་འབད་འབད་བའི་རྩིས་ཐོའི་མིང་འདི་སར་བར་གྱིས་དང་ལེན་སྤང་ནུག འདི་ནང་ལུ་ ནུས་མེད་ཀྱི་ཡིག་"
"འབྲུ་ཡོདཔ་འོང་ནི་མས།"
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "འ་ནི་ཁ་སླབ་འདི་ ཧེ་མ་ལས་རང་ལག་ལེན་འཐབ་བཞིན་ཡོད།"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "སྐྱོན་མིང་: %s\n"
+
msgid "Cannot change nick"
msgstr "ནིཀ་ བསྒྱུར་བཅོས་རྐྱབས་མི་ཚུགས།"
@@ -3727,6 +3813,41 @@ msgstr "སར་བར་ལས་ ནུས་མེད་ཀྱི་དོ
msgid "SASL error"
msgstr "ཨེསི་ཨེ་ཨེསི་ཨེལ་ འཛོལ་བ།"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "རྒྱུ་མཚན་མ་བཀོད་པས།"
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "རྒྱབ་སྐྱོར་མ་འབད་བའི་ཐོན་རིམ།"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"སར་བར་དང་གཅིག་ཁར་ མཐུད་ལམ་གཞི་འཛུགས་འབད་མ་ཚུགས།:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"སར་བར་དང་གཅིག་ཁར་ མཐུད་ལམ་གཞི་འཛུགས་འབད་མ་ཚུགས།:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "མཐུད་ལམ་གསར་བསྐྲུན་འབད་མ་ཚུགསཔ།"
+
+msgid "Unable to create socket"
+msgstr "སོ་ཀེཊི་བཟོ་བསྐྲུན་འབད་མི་ཚུགས་པས།"
+
+msgid "Write error"
+msgstr "འཛོལ་བ་བྲིས།"
+
msgid "Full Name"
msgstr "ངོ་མིང་ཆ་ཚང་།"
@@ -3793,6 +3914,10 @@ msgstr "ཞབས་ཏོག་སྤྱོད་མི།"
msgid "Operating System"
msgstr "རིམ་ལུགས་བཀོལ་སྤྱོད་འབད་དོ།"
+#, fuzzy
+msgid "Local Time"
+msgstr "ཉེ་གནས་ཀྱི་ཡིག་སྣོད:"
+
msgid "Last Activity"
msgstr ""
@@ -4029,7 +4154,6 @@ msgstr "ཁ་མང་དྲགས།"
msgid "Extended Away"
msgstr "རྒྱ་བསྐྱེད་འབད་ཡི།"
-#, c-format
msgid "Do Not Disturb"
msgstr "མ་དཀྲོགས།"
@@ -4155,9 +4279,6 @@ msgstr "ཁང་མིག་ཚུ་འཚོལ།"
msgid "You require encryption, but it is not available on this server."
msgstr ""
-msgid "Write error"
-msgstr "འཛོལ་བ་བྲིས།"
-
#, fuzzy
msgid "Ping timeout"
msgstr "ཉག་རྐྱང་གི་ཚིག་ཡིག"
@@ -4167,14 +4288,9 @@ msgstr "འཛོལ་བ་ལྷག"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"སར་བར་དང་གཅིག་ཁར་ མཐུད་ལམ་གཞི་འཛུགས་འབད་མ་ཚུགས།:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "སོ་ཀེཊི་བཟོ་བསྐྲུན་འབད་མི་ཚུགས་པས།"
#, fuzzy
msgid "Invalid XMPP ID"
@@ -4183,6 +4299,10 @@ msgstr "ནུས་མེད་ཀྱི་ ཨའི་ཌི།"
msgid "Invalid XMPP ID. Domain must be set."
msgstr ""
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "སར་བར་ལུ་མཐུད་ནི་འཐུས་ཤོར་བྱུང་ཡོདཔ།"
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr " %s@%s ཀྱི་ཐོ་བཀོད་ མཐར་འཁྱོལ་བྱུང་ཡོདཔ།"
@@ -4276,9 +4396,18 @@ msgstr "བདེན་བཤད་དོ།"
msgid "Re-initializing Stream"
msgstr "ལོག་འགོ་བྱེད་ཀྱི་རྒྱུན་རིམ།"
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr "དབང་སྤྲོད་མ་འབད།"
+msgid "Mood"
+msgstr "ཁམས།"
+
+msgid "Now Listening"
+msgstr ""
+
msgid "Both"
msgstr "གཉིས་ཆ་རང་།"
@@ -4300,12 +4429,6 @@ msgstr "ཅི་མེད།"
msgid "Subscription"
msgstr "མཁོ་མངགས"
-msgid "Mood"
-msgstr "ཁམས།"
-
-msgid "Now Listening"
-msgstr ""
-
#, fuzzy
msgid "Mood Text"
msgstr "ཁྲག་དབྱེ་བ།"
@@ -4549,18 +4672,24 @@ msgstr "ལག་ལེན་པ %s འདི་བཏོན་གཏང་མ
msgid "Unable to ping user %s"
msgstr "ལག་ལེན་པ %s འདི་བཀག་དམ་འབད་མི་ཚུགས།"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
+msgstr "གདམ་ཁ་རྐྱབས་པའི་ཡིག་སྣོད་ (%s) འདི་མེད་ནི་དེ་གིས་སྒྲ་སྐད་གཏང་མ་ཚུགས།"
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
+msgstr "གདམ་ཁ་རྐྱབས་པའི་ཡིག་སྣོད་ (%s) འདི་མེད་ནི་དེ་གིས་སྒྲ་སྐད་གཏང་མ་ཚུགས།"
#, fuzzy, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "གདམ་ཁ་རྐྱབས་པའི་ཡིག་སྣོད་ (%s) འདི་མེད་ནི་དེ་གིས་སྒྲ་སྐད་གཏང་མ་ཚུགས།"
+#, c-format
+msgid "Buzzing %s..."
+msgstr ""
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
#, fuzzy
@@ -4571,9 +4700,37 @@ msgstr "ཟིར་ཟིར!!"
msgid "%s has buzzed you!"
msgstr "%s གིས་ ཁྱོད་ [%s] ལུ་ཁ་སྐོང་བརྐྱབ་ཡོདཔ་ཨིན།"
-#, c-format
-msgid "Buzzing %s..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "%s ལུ་ འཕྲིན་དོན་གཏང་མ་ཚུགས།"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr ""
+" %sལུ ཡིག་སྣོད་གཏང་མ་ཚུགས་ དེ་ལས་ ལག་ལེན་པ་གིས་ ཡིག་སྣོད་གནས་སོར་གཏང་ནི་ཚུ་རྒྱབ་སྐྱོར་མི་འབད།"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
msgstr ""
+" %sལུ ཡིག་སྣོད་གཏང་མ་ཚུགས་ དེ་ལས་ ལག་ལེན་པ་གིས་ ཡིག་སྣོད་གནས་སོར་གཏང་ནི་ཚུ་རྒྱབ་སྐྱོར་མི་འབད།"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "ཐོེ་བཀོད་འཐུས་ཤོར་བྱུང་ཡོདཔ།"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "ཁྱོད་ཀྱིས་ བལྟ་དགོ་མནོ་བའི་མི་འདི་གི་ མིང་གཞན་ཡང་ན་གསལ་གཞི་མིང་བཙུགས་གནང་།"
+
+#, fuzzy
+msgid "Select a Resource"
+msgstr "ཨང་གྲངས་གཅིག་སེལ་འཐུ་འབད།"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "ཁ་སླབ་འགོ་བཙུགས(_c)"
msgid "config: Configure a chat room."
msgstr "ཀཱོན་ཕིག: ཁ་སླབ་ཁང་མིག་ རིམ་སྒྲིག་འབད།"
@@ -4736,6 +4893,21 @@ msgstr "ཁ་སླབ་ %sནང་འཛུལ་ནི་ འཛོལ་
msgid "Error in chat %s"
msgstr "ཁ་སླབ་ %sནང་ལུ་ འཛོལ་བ།"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "ཡིག་སྣོད་ཁ་ཕྱེཝ་ད་ འཛོལ་བ་བྱུང་ནུག"
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "ཡིག་སྣོད་གནས་སོར་འཐུས་ཤོར་བྱུང་ཡོདཔ།"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "ཡིག་སྣོད་ '%s': %s ཁ་ཕྱེ་ནི་འཐུས་ཤོར་བྱུང་ཡོདཔ།"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4763,10 +4935,6 @@ msgid "Please select the resource of %s to which you would like to send a file"
msgstr "ཁྱོད་ཀྱིས་ བལྟ་དགོ་མནོ་བའི་མི་འདི་གི་ མིང་གཞན་ཡང་ན་གསལ་གཞི་མིང་བཙུགས་གནང་།"
#, fuzzy
-msgid "Select a Resource"
-msgstr "ཨང་གྲངས་གཅིག་སེལ་འཐུ་འབད།"
-
-#, fuzzy
msgid "Edit User Mood"
msgstr "ལག་ལེན་པའི་ཐབས་ལམ་ཚུ།"
@@ -4806,9 +4974,20 @@ msgstr "བྱ་བ།"
msgid "Select an action"
msgstr "སེལ་འཐུ།"
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr "\"%s\"འདི་ཁ་སྐོང་རྐྱབ་མ་ཚུགས།"
+
#, fuzzy
-msgid "Unable to retrieve MSN Address Book"
-msgstr "དྲན་འཛིན་ཚུའི་ཁ་བྱང་ཀི་དེབ་སེལ་འཐུ་འབད།"
+msgid "Buddy Add error"
+msgstr "ཆ་རོགས་ཐོ་ཡིག་གི་འཛོལ་བ།"
+
+#, fuzzy
+msgid "The username specified does not exist."
+msgstr "གསལ་བཀོད་འབད་འབདཝ་གི་གསལ་གཞི་མིང་འདི་ ནུས་མེད་ཨིན་པས།"
#, c-format
msgid "Buddy list synchronization issue in %s (%s)"
@@ -5038,7 +5217,7 @@ msgstr "རྩ་ལག་གི་ཁས་ལེན་མེད་པའི་
msgid "Passport account not yet verified"
msgstr "ལམ་ཡིག་རྩིས་ཐོ་འདི་ ད་ཚུན་བདེན་སྦྱོར་མ་འབད།"
-#, fuzzy, c-format
+#, fuzzy
msgid "Passport account suspended"
msgstr "ལམ་ཡིག་རྩིས་ཐོ་འདི་ ད་ཚུན་བདེན་སྦྱོར་མ་འབད།"
@@ -5134,6 +5313,13 @@ msgstr "འགྲུལ་འཕྲིན་གྱི་ཡིག་འཕྲི
msgid "Page"
msgstr "ཤོག་ལེབ།"
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "ཨའི་ཨེམ་ ལཱ་གཡོག"
+
msgid "Has you"
msgstr "ཁྱོད་ལུ་ཡོད་ག"
@@ -5175,6 +5361,14 @@ msgstr "དུས་སྦྱོར་ལུག"
msgid "Album"
msgstr "ཨེ་ཌིཡམ།"
+#, fuzzy
+msgid "Game Title"
+msgstr "མགོ་མིང་།"
+
+#, fuzzy
+msgid "Office Title"
+msgstr "མགོ་མིང་།"
+
msgid "Set Friendly Name..."
msgstr "མིང་མཐུན་ཏོག་ཏོ་གཞི་སྒྲིག་འབད།..."
@@ -5372,8 +5566,9 @@ msgid ""
msgstr ""
"གཱེམ་གྱིས་ ལག་ལེན་པའི་གསལ་སྡུད་ནང་ལུ་ བརྡ་དོན་འཚོལ་མ་ཐོབ་པས། ལག་ལེན་པ་འདི་མེདཔ་བཟུམ་ཅིག་འདུག"
-msgid "Profile URL"
-msgstr "གསལ་སྡུད་ ཡུ་ཨར་ཨེལ།"
+#, fuzzy
+msgid "View web profile"
+msgstr "ཨོཕ་ལ་ཡིན་གྱི་སྐབས་འབད་མི་ཆོགཔ་ཨིན།"
#. *< type
#. *< ui_requirement
@@ -5622,13 +5817,6 @@ msgstr "ཁ་བྱང་ཀི་དེབ་ལུ་ཁ་སྐོང་ར
msgid "Do you want to delete this buddy from your address book as well?"
msgstr "ཆ་རོགས་འདི་ ཁྱོད་ཀྱི་ཆ་རོགས་ཐོ་ཡིག་ནང་ཁ་སྐོང་རྐྱབས་ནི་ཨིན་ན?"
-#. only notify the user about problems adding to the friends list
-#. * maybe we should do something else for other lists, but it probably
-#. * won't cause too many problems if we just ignore it
-#, c-format
-msgid "Unable to add \"%s\"."
-msgstr "\"%s\"འདི་ཁ་སྐོང་རྐྱབ་མ་ཚུགས།"
-
#, fuzzy
msgid "The username specified is invalid."
msgstr "གསལ་བཀོད་འབད་འབདཝ་གི་གསལ་གཞི་མིང་འདི་ ནུས་མེད་ཨིན་པས།"
@@ -5636,6 +5824,9 @@ msgstr "གསལ་བཀོད་འབད་འབདཝ་གི་གསལ
msgid "This Hotmail account may not be active."
msgstr "འ་ནི་ཧོཊི་མཱེལ་རྩིས་ཐོ་འདི་ ཤུགས་ལྡན་མེདཔ་འོང་།"
+msgid "Profile URL"
+msgstr "གསལ་སྡུད་ ཡུ་ཨར་ཨེལ།"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5650,17 +5841,13 @@ msgstr "འ་ནི་ཧོཊི་མཱེལ་རྩིས་ཐོ་འ
msgid "MSN Protocol Plugin"
msgstr "ཨེ་ཨའི་ཨེམ/ཨའི་སི་ཀིའུ་ གནད་སྤེལ་ལམ་ལུགས་ པ་ལག་ཨིན།"
-#, fuzzy
-msgid "Missing Cipher"
-msgstr "གསང་ཡིག"
-
-msgid "The RC4 cipher could not be found"
+#, c-format
+msgid "No such user: %s"
msgstr ""
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
-msgstr ""
+#, fuzzy
+msgid "User lookup"
+msgstr "ལག་ལེན་པའི་ཁང་མིག་ཚུ།"
#, fuzzy
msgid "Reading challenge"
@@ -5674,11 +5861,21 @@ msgstr "སར་བར་ལས་ ནུས་མེད་ཀྱི་དོ
msgid "Logging in"
msgstr "ནང་བསྐྱོད།"
-#, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] ""
-msgstr[1] ""
+#, fuzzy
+msgid "MySpaceIM - No Username Set"
+msgstr "མིང་མེད།"
+
+msgid "You appear to have no MySpace username."
+msgstr ""
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr ""
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr ""
+"སར་བར་དང་གཅིག་ཁར་ མཐུད་ལམ་བརླག་སྟོར་ཞུགས་ནུག\n"
+"%s"
#. Can't write _()'d strings in array initializers. Workaround.
#, fuzzy
@@ -5701,14 +5898,22 @@ msgid "MySpace"
msgstr ""
#, fuzzy
-msgid "MySpaceIM - No Username Set"
-msgstr "མིང་མེད།"
+msgid "IM Friends"
+msgstr "ཨའི་ཨེམ་སྒོ་སྒྲིག་ཚུ།(_I)"
-msgid "You appear to have no MySpace username."
-msgstr ""
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+msgstr[1] ""
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
-msgstr ""
+#, fuzzy
+msgid "Add contacts from server"
+msgstr "སར་བར་ལས་ནུས་མེད་ཀྱི་ལན།"
#. The session is now set up, ready to be connected. This emits the
#. * signedOn signal, so clients can now do anything with msimprpl, and
@@ -5732,6 +5937,22 @@ msgid "MySpaceIM Error"
msgstr ""
#, fuzzy
+msgid "Invalid input condition"
+msgstr "མཐུད་ལམ་མཐའ་དཔྱད་འབད་དོ།"
+
+#, fuzzy
+msgid "Read buffer full (2)"
+msgstr "གྲལ་རིམ་གང་།"
+
+#, fuzzy
+msgid "Unparseable message"
+msgstr "འཕྲིན་དོན་མིང་དཔྱད་འབད་མ་ཚུགས།"
+
+#, fuzzy, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr "ཧོསཊི་ལུ་མཐུད་མ་ཚུགས།"
+
+#, fuzzy
msgid "Failed to add buddy"
msgstr "ཆ་རོགས་འདི་ ཁ་སླབ་གྲངས་སུ་འཛུལ་ནི་འཐུས་ཤོར་བྱུང་ནུག"
@@ -5743,14 +5964,6 @@ msgstr "ཡིག་སྣོད་ལས་ ཆ་རོགས་ཐོ་ཡ
msgid "persist command failed"
msgstr "སུཝིཆ་བོཌི་ འཐུས་ཤོར་བྱུང་ཡོདཔ།"
-#, c-format
-msgid "No such user: %s"
-msgstr ""
-
-#, fuzzy
-msgid "User lookup"
-msgstr "ལག་ལེན་པའི་ཁང་མིག་ཚུ།"
-
#, fuzzy
msgid "Failed to remove buddy"
msgstr "ཆ་རོགས་འདི་ ཁ་སླབ་གྲངས་སུ་འཛུལ་ནི་འཐུས་ཤོར་བྱུང་ནུག"
@@ -5763,38 +5976,16 @@ msgid "blocklist command failed"
msgstr "སུཝིཆ་བོཌི་ འཐུས་ཤོར་བྱུང་ཡོདཔ།"
#, fuzzy
-msgid "Invalid input condition"
-msgstr "མཐུད་ལམ་མཐའ་དཔྱད་འབད་དོ།"
-
-#, fuzzy
-msgid "Read buffer full (2)"
-msgstr "གྲལ་རིམ་གང་།"
-
-#, fuzzy
-msgid "Unparseable message"
-msgstr "འཕྲིན་དོན་མིང་དཔྱད་འབད་མ་ཚུགས།"
-
-#, fuzzy, c-format
-msgid "Couldn't connect to host: %s (%d)"
-msgstr "ཧོསཊི་ལུ་མཐུད་མ་ཚུགས།"
+msgid "Missing Cipher"
+msgstr "གསང་ཡིག"
-#, fuzzy
-msgid "IM Friends"
-msgstr "ཨའི་ཨེམ་སྒོ་སྒྲིག་ཚུ།(_I)"
+msgid "The RC4 cipher could not be found"
+msgstr ""
-#, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-msgstr[1] ""
-
-#, fuzzy
-msgid "Add contacts from server"
-msgstr "སར་བར་ལས་ནུས་མེད་ཀྱི་ལན།"
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
msgid "Add friends from MySpace.com"
msgstr ""
@@ -5843,9 +6034,6 @@ msgstr "ཡིག་གཟུགས་ཀྱི་ཚད་སྦོམ་མི
msgid "User"
msgstr "ལག་ལེན་པ་ཚུ།"
-msgid "Profile"
-msgstr "གསལ་སྡུད།"
-
#, fuzzy
msgid "Headline"
msgstr "བཤེད་བཟུང:(_H)"
@@ -5861,17 +6049,6 @@ msgstr ""
msgid "Client Version"
msgstr "གྲོས་གླེང་ཁ་བསྡམ།"
-#. Protocol won't log in now without a username set.. Disconnect
-#, fuzzy
-msgid "No username set"
-msgstr "མིང་མེད།"
-
-msgid "MySpaceIM - Please Set a Username"
-msgstr ""
-
-msgid "Please enter a username to check its availability:"
-msgstr ""
-
#, fuzzy
msgid "MySpaceIM - Username Available"
msgstr "ཞབས་ཏོག་ཐོབ་མ་ཚུགས།"
@@ -5883,6 +6060,9 @@ msgstr "%s གིས་ པང་དེབ་དཀརཔོ་ལུ་འཕ
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr ""
+msgid "MySpaceIM - Please Set a Username"
+msgstr ""
+
#, fuzzy
msgid "This username is unavailable."
msgstr "འ་ནི་བརྗོད་དོན་འདི་ལུ་སི་མའི་ལི་ཚུ་གཅིག་ཡང་ཐོབ་ཚུགསཔ་མེད།"
@@ -5891,6 +6071,14 @@ msgstr "འ་ནི་བརྗོད་དོན་འདི་ལུ་སི
msgid "Please try another username:"
msgstr "%s དོན་ལུ་ མིང་གསརཔ་བཙུགས་གནང་།"
+#. Protocol won't log in now without a username set.. Disconnect
+#, fuzzy
+msgid "No username set"
+msgstr "མིང་མེད།"
+
+msgid "Please enter a username to check its availability:"
+msgstr ""
+
#. TODO: icons for each zap
#. Lots of comments for translators:
#. Zap means "to strike suddenly and forcefully as if with a
@@ -6282,7 +6470,6 @@ msgstr "སར་བར་ལུ་ མཐུད་མ་ཚུགས། ཁྱ
msgid "Error. SSL support is not installed."
msgstr "འཛོལ་བ། ཨེསི་ཨེསི་ཨེལ་གྱི་རྒྱབ་སྐྱོར་འདི་ གཞི་བཙུགས་འབད་མ་ཚུགས་པས།"
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr "གྲོས་ཚོགས་འདི་ཁ་བསྡམས་ཚར་ཡི། ད་འབདན་འཕྲིན་དོན་ཚུ་གཏང་ནི་མེད།"
@@ -6550,23 +6737,18 @@ msgstr "པར་ཆས།"
msgid "Screen Sharing"
msgstr "གསལ་གཞི་མིང་།"
-#, c-format
msgid "Free For Chat"
msgstr "ཁ་སླབ་ནི་ དལཝ་ཨིན།"
-#, c-format
msgid "Not Available"
msgstr "ཐོབ་མི་ཚུགས།"
-#, c-format
msgid "Occupied"
msgstr "དལ་ཁོམས་མེདཔ།"
-#, c-format
msgid "Web Aware"
msgstr "ཝེབ་ དྲན་ཤེས་ཅན།"
-#, c-format
msgid "Invisible"
msgstr "མ་མཐོངམ།"
@@ -6616,7 +6798,7 @@ msgstr ""
"མེད་ཨིན་པས། གསལ་གཞི་མིང་ཚུ་ ཡི་གུ་ལས་འགོ་བཙུགས་ནི་དང་ ནང་ན་ཡི་གུ་དང་ ཨང་གྲངས་དེ་ལས་ བར་སྟོང་"
"ཚུ་རྐྱངམ་ཅིག་ཚུད་དགོཔ་དང་ ཡང་ན་ ཨང་གྲངས་ཚུ་རྐྱངམ་ཅིག་ཚུད་དགོཔ་ཨིན།"
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr "ནུས་མེད་ ལག་ལེན་པའི་མིང་།"
@@ -6632,7 +6814,7 @@ msgstr "ཁྱོད་ཀྱི་ རྩིས་ཐོ་འདི་ ད་
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "ཨེ་ཨོ་ཨེལ་ འཕྲལ་མྱུར་ འཕྲིན་སྐྱེལ་པའི་ཞབས་ཏོག་འདི་ གནས་སྐབས་ཅིག་ ཐོབ་མི་ཚུགས།"
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6668,13 +6850,9 @@ msgstr "ཌི་ཇི་ཊཱལ་བཀྲམ་སྟོན་ནང་ལ
msgid "_OK"
msgstr "བཏུབ།"
-#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
-msgstr ""
-"ཡང་ཅིན་ ཁྱོད་ཀྱིས་དུམ་གྲ་ཅིག་ལས་མཐུད་བཏོག་འོང་། འདི་གཏན་གཏན་མ་བཟོ་ཚུན་ ཁྱོད་ཀྱིས ཊི་ཨོ་སི འདི་ལག་"
-"ལེན་འཐབ་དགོཔ་འོང་།དུས་མཐུན་ཚུ་བཟོ་ནིའི་དོན་ལུ %sཞིབ་དཔྱད་འབད།"
+#, fuzzy, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
+msgstr "ཁྱོད་ དུམ་གྲ་ཅིག་མཐུད་ལམ་བཏོག་ནི་འོང་། དུས་མཐུན་བཟོ་ནིའི་ཚུའི་དོན་ལུ་ %s ཞིབ་དཔྱད་འབད།"
#, fuzzy
msgid "Unable to get a valid AIM login hash."
@@ -6831,7 +7009,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] "ངོ་མ་ཤེས་པའི་རྒྱུ་མཚན་གྱི་དོན་ལུ་ %hu འཕྲིན་དོན་འདི་%sལས་ བྱིག་ཡར་སོ་ནུག "
msgstr[1] "ངོ་མ་ཤེས་པའི་རྒྱུ་མཚན་གྱི་དོན་ལུ ཁྱོད་ཀྱིས%huའཕྲིན་དོན་ཚུ %sལས བྱིག་ཡར་སོ་ནུག "
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "འཕྲིན་དོན%sའདི་གཏང་མ་ཚུགས།"
@@ -6853,6 +7031,9 @@ msgstr "ལས་ཚུར་ གློག་ཐོག"
msgid "Member Since"
msgstr "ལས་ཚུར་ འཐུས་མི།"
+msgid "Profile"
+msgstr "གསལ་སྡུད།"
+
msgid "Your AIM connection may be lost."
msgstr "ཁྱོད་ཀྱི་ ཨེ་ཨའི་ཨེམ་ མཐུད་ལམ་འདི་བརླག་གཏོར་ཞུགས་ཞུགསཔ་འོང་།"
@@ -7141,6 +7322,7 @@ msgstr "མཐུད།"
msgid "Get AIM Info"
msgstr "ཨེ་ཨའི་ཨེམ་ བརྡ་དོན་ལེན།"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "ཆ་རོགས་ཀྱི་བསམ་བཀོད་ཞུན་དག་འབད།"
@@ -7255,7 +7437,6 @@ msgstr "ཨའི་ཨེམ་ཐད་ཀར་གྱི་དོན་ལུ
msgid "Attempting to connect to %s:%hu."
msgstr "%s:%hu ལུ་མཐུད་ནི་དཔའ་བཅམ་དོ།"
-#, c-format
msgid "Attempting to connect via proxy server."
msgstr "པོརོ་སི་སར་བར་བརྒྱུད་དེ་ མཐུད་ནི་དཔའ་བཅམ་དོ།"
@@ -7351,7 +7532,7 @@ msgstr "གཞན།"
msgid "Visible"
msgstr "མ་མཐོངམ།"
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
#, fuzzy
@@ -7441,16 +7622,48 @@ msgstr "དུས་མཐུན་བཟོ།"
msgid "Could not change buddy information."
msgstr "བ་ཌི་བརྡ་བཀོད་བཙུགས་གནང་།"
-#, c-format
-msgid "%d needs Q&A"
+msgid "Mobile"
+msgstr "འགྲུལ་འཕྲིན། "
+
+msgid "Note"
+msgstr "དྲན་ཐོ།"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "ཆ་རོགས་ཀྱི་ངོས་དཔར།"
+
+msgid "Change his/her memo as you like"
msgstr ""
#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "ཆ་རོགས་ཁ་སྐོང་རྐྱབས།"
+msgid "_Modify"
+msgstr "ལེགས་བཅོས་འབད།"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "ལེགས་བཅོས་འབད།"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "སར་བར་ཁོམ་མེད།"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%u requires verification"
+msgstr "དབང་སྤྲོད་དགོས་མཁོ་བས།"
#, fuzzy
-msgid "Input answer here"
+msgid "Add buddy question"
+msgstr "ཁྱོད་རའི་ཐོ་ཡིག་ནང་ཆ་རོགས་ཁ་སྐོང་རྐྱབསན?"
+
+#, fuzzy
+msgid "Enter answer here"
msgstr "ཞུ་བ་འདི་ནཱ་ལུ་ནང་འདེབས་འབད།"
msgid "Send"
@@ -7465,18 +7678,19 @@ msgid "Authorization denied message:"
msgstr "དབང་སྤྲོད་ཉན་མ་བཏུབ་པའི་འཕྲིན་དོན:"
#, fuzzy
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr "དགོངསམ་མ་འཁྲིལ་ ཁྱོད་ངིའི་གདམ་ཁ་བཟུམ་མེད་པས།..."
#, fuzzy, c-format
-msgid "%d needs authentication"
+msgid "%u needs authorization"
msgstr "ལག་ལེན་པ་ %d གིས་ བདེན་བཤད་དགོཔ་ཨིན།"
#, fuzzy
msgid "Add buddy authorize"
msgstr "ཁྱོད་རའི་ཐོ་ཡིག་ནང་ཆ་རོགས་ཁ་སྐོང་རྐྱབསན?"
-msgid "Input request here"
+#, fuzzy
+msgid "Enter request here"
msgstr "ཞུ་བ་འདི་ནཱ་ལུ་ནང་འདེབས་འབད།"
msgid "Would you be my friend?"
@@ -7499,7 +7713,7 @@ msgid "Failed sending authorize"
msgstr "ང་ལུ་དབང་སྤྲོད་འབད་གནང་!"
#, fuzzy, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr "ཆ་རོགས་འདི་ ཁ་སླབ་གྲངས་སུ་འཛུལ་ནི་འཐུས་ཤོར་བྱུང་ནུག"
#, fuzzy, c-format
@@ -7544,6 +7758,10 @@ msgid "You can only search for permanent Qun\n"
msgstr "ཁྱོད་ཀྱིས་ རྟག་བརྟན་ཀིའུ་ཀིའུ་སྡེ་ཚན་རྐྱངམ་ཅིག་འཚོལ་ཞིབ་འབད་ཚུགསཔ་ཨིན།\n"
#, fuzzy
+msgid "(Invalid UTF-8 string)"
+msgstr "ནུས་མེད་ཀྱི་ པོ་རོགསི་ གཞི་སྒྲིག་ཚུ།"
+
+#, fuzzy
msgid "Not member"
msgstr "ང་འཐུས་མི་མེན།"
@@ -7586,16 +7804,19 @@ msgstr "འ་ནི་སྡེ་ཚན་གྱིས་ གཞན་མི
msgid "Join QQ Qun"
msgstr "ཁ་སླབ་གྲངས་སུ་འཛུལ།"
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
-msgstr ""
+msgid "Input request here"
+msgstr "ཞུ་བ་འདི་ནཱ་ལུ་ནང་འདེབས་འབད།"
+
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "ཁྱོད་ཀྱིས་ ཀིའུན་འཐུས་མི་མཐར་འཁྱོལ་སྦེ་ལེགས་བཅོས་འབད་དགོས།"
#, fuzzy
msgid "Successfully joined Qun"
msgstr "ཁྱོད་ཀྱིས་ ཀིའུན་འཐུས་མི་མཐར་འཁྱོལ་སྦེ་ལེགས་བཅོས་འབད་དགོས།"
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
msgid "QQ Qun Operation"
@@ -7605,7 +7826,7 @@ msgstr "ཀིའུ་ཀིའུ་ཀིའུན་ བཀོལ་སྤ
msgid "Failed:"
msgstr "འཐུས་ཤོར་བྱུང་ཡོདཔ།"
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
#, fuzzy
@@ -7620,11 +7841,11 @@ msgstr ""
"འ་ནི་བཀོལ་སྤྱོད་མཇུག་ལུ་ འ་ནི་ཀིའུན་འདི་རྩ་བསྐྲད་གཏངམ་ཨིན།"
#, fuzzy
-msgid "Sorry, you are not our style ..."
+msgid "Sorry, you are not our style"
msgstr "དགོངསམ་མ་འཁྲིལ་ ཁྱོད་ངིའི་གདམ་ཁ་བཟུམ་མེད་པས།..."
#, fuzzy
-msgid "Successfully changed Qun member"
+msgid "Successfully changed Qun members"
msgstr "ཁྱོད་ཀྱིས་ ཀིའུན་འཐུས་མི་མཐར་འཁྱོལ་སྦེ་ལེགས་བཅོས་འབད་དགོས།"
#, fuzzy
@@ -7635,35 +7856,35 @@ msgid "You have successfully created a Qun"
msgstr "ཁྱོད་ཀྱིས་ ཀིའུན་གཅིག་མཐར་འཁྱོལ་སྦེ་གསར་བསྐྲུན་འབད་ཡོདཔ་ཨིན།"
#, fuzzy
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr "ད་འབདན་ཁྱོད་ཀྱིས་ ཀིའུན་རྒྱས་བཤད་ཚུ་གཞི་སྒྲིག་འབད་ནི་ཨིན་ན?"
msgid "Setup"
msgstr "གཞི་སྒྲིག"
#, fuzzy, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr "ལག་ལེན་ %d གིས་ སྡེ་ཚན་ %d ནང་མཐུད་ནིའི་དོན་ལུ་འཇུག་སྤྱོད་འབད་ཡོདཔ།"
#, fuzzy, c-format
-msgid "%d request to join Qun %d"
+msgid "%u request to join Qun %u"
msgstr "ལག་ལེན་ %d གིས་ སྡེ་ཚན་ %d ནང་མཐུད་ནིའི་དོན་ལུ་འཇུག་སྤྱོད་འབད་ཡོདཔ།"
#, fuzzy, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr "ཆ་རོགས་འདི་ ཁ་སླབ་གྲངས་སུ་འཛུལ་ནི་འཐུས་ཤོར་བྱུང་ནུག"
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr "ཆ་རོགས་རྩ་བསྐྲད་གཏང་།"
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "ཆ་རོགས་རྩ་བསྐྲད་གཏང་།"
#, fuzzy, c-format
msgid "Unknown-%d"
@@ -7782,6 +8003,13 @@ msgstr "<b>ཧེ་མའི་ཡང་སེལ།</b>: %s<br>\n"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<b>ད་ལྟོའི་གློག་ཐོག</b>: %d<br>\n"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<b>ཕྱིའི་ལག་ལེན་པ།</b><br>"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7789,7 +8017,7 @@ msgid "<i>Feel free to join us!</i> :)"
msgstr ""
#, fuzzy, c-format
-msgid "About OpenQ r%s"
+msgid "About OpenQ %s"
msgstr "གཱེམ་གྱི་སྐོར་ལས"
#, fuzzy
@@ -7810,6 +8038,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "གཱེམ་གྱི་སྐོར་ལས"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "ཁྱིམ་ནང་གི་ཁ་བྱང་།"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7841,7 +8073,6 @@ msgstr ""
msgid "QQ2008"
msgstr ""
-#. #endif
#, fuzzy
msgid "Connect by TCP"
msgstr "མཐུད་དོ།"
@@ -7854,6 +8085,9 @@ msgstr "གདམ་ཁ་ཉུང་སུ་ཅིག་སྟོན།"
msgid "Show server news"
msgstr "གདམ་ཁ་ཉུང་སུ་ཅིག་སྟོན།"
+msgid "Show chat room when msg comes"
+msgstr ""
+
#, fuzzy
msgid "Keep alive interval (seconds)"
msgstr "འཛོལ་བ་ལྷག་དོ།"
@@ -7863,11 +8097,7 @@ msgid "Update interval (seconds)"
msgstr "འཛོལ་བ་ལྷག་དོ།"
#, fuzzy
-msgid "Can not decrypt server reply"
-msgstr "སལ་བར་ བརྡ་དོན་ཐོབ་མི་ཚུགས།"
-
-#, fuzzy
-msgid "Can not decrypt get server reply"
+msgid "Cannot decrypt server reply"
msgstr "སལ་བར་ བརྡ་དོན་ཐོབ་མི་ཚུགས།"
#, c-format
@@ -7890,21 +8120,23 @@ msgid "Activation required"
msgstr "ཐོ་བཀོད་དགོཔ།"
#, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr ""
#, fuzzy
-msgid "Keep alive error"
-msgstr "འཛོལ་བ་ལྷག་དོ།"
+msgid "Could not decrypt server reply"
+msgstr "སལ་བར་ བརྡ་དོན་ཐོབ་མི་ཚུགས།"
-msgid "Requesting captcha ..."
-msgstr ""
+#, fuzzy
+msgid "Requesting captcha"
+msgstr "ཌའི་ལོག་ཞུ།"
-msgid "Checking code of captcha ..."
+msgid "Checking captcha"
msgstr ""
-msgid "Failed captcha verify"
-msgstr ""
+#, fuzzy
+msgid "Failed captcha verification"
+msgstr "ཡ་ཧུ་ འཐུས་ཤོར་བྱུང་ཡོདཔ! བདེན་བཤད།"
#, fuzzy
msgid "Captcha Image"
@@ -7914,7 +8146,7 @@ msgstr "གཟུགས་བརྙན་སྲུང་བཞག་འབད།
msgid "Enter code"
msgstr "ཆོག་ཡིག་བཙུགས།"
-msgid "QQ Captcha Verifing"
+msgid "QQ Captcha Verification"
msgstr ""
#, fuzzy
@@ -7922,30 +8154,21 @@ msgid "Enter the text from the image"
msgstr "སྡེ་ཚན་གྱི་མིང་བཙུགས།"
#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
+msgid "Unknown reply when checking password (0x%02X)"
msgstr ""
#, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
msgstr ""
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "མཐུད་མི་ཚུགས།"
msgid "Socket error"
msgstr "སོ་ཀེཊི་འཛོལ་བ།"
-#, fuzzy, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr ""
-"སར་བར་དང་གཅིག་ཁར་ མཐུད་ལམ་བརླག་སྟོར་ཞུགས་ནུག:\n"
-"%s"
-
msgid "Unable to read from socket"
msgstr "སོ་ཀེཊི་ལས་ ལྷག་མ་ཚུགས།"
@@ -7957,11 +8180,11 @@ msgid "Connection lost"
msgstr "མཐུད་ལམ་བརླག་སྟོར་ཞུགས་ཡོདཔ།"
#, fuzzy
-msgid "Get server ..."
+msgid "Getting server"
msgstr "ལག་ལེན་པའི་བརྡ་དོན་གཞི་སྒྲིག་འབད..."
#, fuzzy
-msgid "Request token"
+msgid "Requesting token"
msgstr "ཞུ་བ་ངོས་ལེན་འབད་མ་བཏུབ་པས།"
msgid "Couldn't resolve host"
@@ -7972,17 +8195,13 @@ msgid "Invalid server or port"
msgstr "ནུས་མེག་ ལག་ལེན་པའི་མིང་ ཡང་ན་ ལམ་ཡིག"
#, fuzzy
-msgid "Connecting server ..."
-msgstr "སར་བར་ལུ་མཐུད།"
+msgid "Connecting to server"
+msgstr "ཨེསི་ཨའི་ཨེལ་སི་ སར་བར་ལུ་ མཐུད་དོ།"
#, fuzzy
msgid "QQ Error"
msgstr "ཀིའུ་ཀིའུ་ཨའི་ཌི་ འཛོལ་བ།"
-#, fuzzy
-msgid "Failed to send IM."
-msgstr "མིང་: %s ཐོབ་ནི་ལུ་འཐུས་ཤོར་བྱུང་ཡོདཔ།"
-
#, fuzzy, c-format
msgid ""
"Server News:\n"
@@ -7992,6 +8211,10 @@ msgid ""
msgstr "ཨའི་སི་ཀིའུ་ སར་བར་ བརྒྱུད་སྤྲོད།"
#, fuzzy, c-format
+msgid "%s:%s"
+msgstr "%s (%s)"
+
+#, fuzzy, c-format
msgid "From %s:"
msgstr "ལས།"
@@ -8001,32 +8224,30 @@ msgid ""
"%s"
msgstr "སར་བར་བསླབ་སྟོན་ཚུ།: %s"
-msgid "Unknow SERVER CMD"
-msgstr ""
+#, fuzzy
+msgid "Unknown SERVER CMD"
+msgstr "མ་ཤེས་པའི་རྒྱུ་མཚན།"
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
#, fuzzy
msgid "QQ Qun Command"
msgstr "བརྡ་བཀོད།"
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr ""
-
-msgid "Can not decrypt login reply"
-msgstr ""
+#, fuzzy
+msgid "Could not decrypt login reply"
+msgstr "སལ་བར་ བརྡ་དོན་ཐོབ་མི་ཚུགས།"
#, fuzzy
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr "མ་ཤེས་པའི་རྒྱུ་མཚན།"
#, fuzzy
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr "མ་ཤེས་པའི་རྒྱུ་མཚན།"
#, c-format
@@ -8855,9 +9076,6 @@ msgstr "ཚོགས་སྡེ།"
msgid "Unit"
msgstr "ཆ་ཕྲན།"
-msgid "Note"
-msgstr "དྲན་ཐོ།"
-
msgid "Join Chat"
msgstr "ཁ་སླབ་གྲངས་སུ་འཛུལ།"
@@ -9515,6 +9733,10 @@ msgstr "ཧོསཊི་མིང་མོས་མཐུན་འབད་མ
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr "ཨེསི་ཨའི་པི་ལག་ལེན་པའི་མིང་ཚུ་ནང་ན་བར་སྟོང་དཀརཔོ་ཡང་ན་ @བརྡ་མཚོན་ཚུ་ཤོམ་ཏེ་མེདཔ་འོང་།"
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "གདམ་ཁ་ཉུང་སུ་ཅིག་སྟོན།"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -9549,194 +9771,10 @@ msgid "Auth Domain"
msgstr "བདེན་ཅན་ཌོ་མེན།"
#, c-format
-msgid "Looking up %s"
-msgstr " %sལུ བལྟ་དོ།"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "%s ལུ་མཐུད་ནི་ འཐུས་ཤོར་བྱུང་ནུག"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "ནང་ན་འཛུལ: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "ཡིག་སྣོད%sའདི་བྲིས་མ་ཚུགས།"
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "ཡིག་སྣོད%sའདི་ ལྷག་མ་ཚུགས།"
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "འཕྲིན་དོན་རིང་དྲགས་པས་ མཇུག་གི%sབཱའིཊིསི་འདི་ཆུང་ཀུ་བཟོ་ནུག"
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s འདི་ད་ལྟོ་ ནང་བསྐྱོད་མ་འབད།"
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr " %s ཉེན་བརྡ་འབད་ནི་འདི་ མི་ཆོགཔ་ཨིན།"
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "འཕྲིན་དོན་འདི་ ས་ཁར་འབུད་ནུག ཁྱོད་ཀྱིས སལ་བར་གྱི་མགྱོགས་ཚད་འདི་ཚད་ལས་བརྒལ་བཅུག་དེས།"
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "%sནང་ ཁ་སླབ་ནི་ཐོབ་མི་ཚུགས།"
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "ཁྱོད་ཀྱིས་ %s ལུ་ འཕྲིན་དོན་ཚུ་གནམ་མེད་ས་མེད་མགྱོགས་པར་གཏང་དེས།"
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "ཁྱོད་ཀྱིས་ %s ལས་ ཨའི་ཨེམ བྱིག་ཡར་སོ་ནུག ག་ཅི་འབད་ཟེར་བ་ཅིན་ འདི་སྦོམ་དྲགས་པས།"
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
+msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
-"ཁྱོད་ཀྱིས་ %s ལས་ ཨའི་ཨེམ་ བྱིག་ཡར་སོ་ནུག ག་ཅི་འབད་ཟེར་བ་ཅིན་ འདི་གནམ་མེད་ས་མེད་མགྱོགས་པར་བཏང་"
-"ནུག"
-
-#, c-format
-msgid "Failure."
-msgstr "འཐུས་ཤོར།"
-
-#, c-format
-msgid "Too many matches."
-msgstr "མཐུན་སྒྲིག་ཚུ་མང་དྲགས་པས།"
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "ཁྱད་ཆོས་ཚང་མི་ལེ་ཤཱ་རང་དགོ་པས།"
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "Dir ཞབས་ཏོག་འདི་གནས་སྐབས་ཅིག་ཐོབ་མི་ཚུགས།"
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "གློག་འཕྲིན་བལྟ་ནི་བཀག་དམ་འབད་ཡོདཔ།"
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "གཙོ་ཚིག་སྣང་མེད་སྦེ་བཞག་ནུག"
-
-#, c-format
-msgid "No keywords."
-msgstr "གཙོ་ཚིག་ཚུ་མེད།"
-
-#, c-format
-msgid "User has no directory information."
-msgstr "ལག་ལེན་པ་ལུ་ སྣོད་ཐོའི་བརྡ་དོན་མིན་འདུག"
-#, c-format
-msgid "Country not supported."
-msgstr "རྒྱལ་ཁབ་ རྒྱབ་སྐྱོར་མ་འབད་བས།"
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "འཐུས་ཤོར་ངོ་མ་ཤེས: %s"
-
-#, fuzzy, c-format
-msgid "Incorrect username or password."
-msgstr "བདེན་མེད་ཀྱི་ སྐྱོན་མིང་ ཡང་ན་ ཆོག་ཡིག"
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "ཞབས་ཏོག་འདི་གནས་སྐབས་ཅིག་ཐོབ་མི་ཚུགས།"
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "ནང་བསྐྱོད་འབད་ནིའི་དོན་ལུ་ ཁྱོད་ཀྱི་ཉེན་བརྡའི་གནས་རིམ་འདི་མཐོ་དྲགས་པས།"
-
-#, c-format
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
-msgstr ""
-"ཁྱོད་ འཕྲལ་འཕྲལ་རང་ མཐུད་ནི་ནང་ དེ་ལས་མཐུད་བཏོག་སྟེ་ཡོད། སྐར་མ་བཅུ་ཐམ་དེ་ཅིག་བསྒུག་ཞིན་ན་ དོ་རུང་"
-"འབད་རྩོལ་བསྐྱེད། ཁྱོད་ཀྱིས་འཕྲོ་མཐུད་དེ་རང་འབད་རྩོལ་བསྐྱེད་པ་ཅིན་ ཧེང་བཀལ་རང་བསྒུག་དགོ"
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "ངོ་མ་ཤེསཔ་ནང་ན་འཛུལཝ་ད་ འཛོལ་བ་བྱུང་ནུག: %s"
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "ངོ་མ་ཤེས་པའི་འཛོལ་བ %d བྱུང་ནུག བརྡ་དོན: %s"
-
-msgid "Invalid Groupname"
-msgstr "ནུས་མེད་སྡེ་ཚན།"
-
-msgid "Connection Closed"
-msgstr "མཐུད་ལམ་ཁ་མ་བསྡམ།"
-
-msgid "Waiting for reply..."
-msgstr "ལན་ལུ་བསྒུག་དོ..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "ཊི་ཨོ་སི་ འདི་གིས་ ཐེམལས་ ལོག་འོང་ནུག ད་འབདན་ཁྱོད་རང་འཕྲིན་དོན་ཚུ་ དོ་རུང་གཏང་།"
-
-msgid "Password Change Successful"
-msgstr "ཆོག་ཡིག་ བསྒྱུར་བཅོས་ མཐར་འཁྱོལ་ནུག"
-
-msgid "_Group:"
-msgstr "སྡེ་ཚན:(_G)"
-
-msgid "Get Dir Info"
-msgstr "Dir བརྡ་དོན་ལེན།"
-
-msgid "Set Dir Info"
-msgstr "Dir བརྡ་དོན་གཞི་སྒྲིག་འབད།"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "བྲིས་ནིའི་དོན་ལུ %s ཁ་ཕྱེ་མ་ཚུགས།"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "ཡིག་སྣོད་གནས་སོར་འཐུས་ཤོར་བྱུང་ནུག ཕྱོགས་གཞན་མི་འདི་ཆ་མེད་བཏང་ཡི།"
-
-msgid "Could not connect for transfer."
-msgstr "གནས་སོར་གྱི་དོན་ལུ་ མཐུད་མ་ཚུགས།"
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "ཡིག་སྣོད་ཀྱི་མགོ་ཡིག་བྲིས་མ་ཚུགས། ཡིག་སྣོད་འདི་གནས་སོར་མི་གཏང་།"
-
-#, fuzzy
-msgid "Save As..."
-msgstr " བཟུམ་སྦེ་སྲུང་བཞག་འབད།"
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s གིས %s ལུ %dཡིག་སྣོད་དང་ལེན་འབད་ནི་འབད ཞུ་བ་འབདཝ་ཨིན: %s (%.2f %s)%s%s"
-msgstr[1] ""
-"%s གིས %s ལུ %d ཡིག་སྣོད་ཚུ་ དང་ལེན་འབད་ནི་འབད་ ཞུ་བ་འབདཝ་ཨིན: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s གིས་ ཁྱོད་ལུ་ ཁོང་ཚུ་ལུ་ཡི་གུ་གཏང་ནིའི་ཞུ་བ་འབདཝ་ཨིན།"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "ཊི་ཨོ་སི་ གནད་སྤེལ་ལམ་ལུགས་ པ་ལག་ཨིན།"
-
-#, c-format
-msgid "%s has sent you a webcam invite, which is not yet supported."
+msgid "Your SMS was not delivered"
msgstr ""
msgid "Your Yahoo! message did not get sent."
@@ -10009,13 +10047,9 @@ msgstr "བསིལ་བའི་འབྲེལ་ལམ ༣"
msgid "Last Update"
msgstr "མཇུག་གི་དུས་མཐུན་བཟོ།"
-#, c-format
-msgid "User information for %s unavailable"
-msgstr "%sགི་དོན་ལུ་ ལག་ལེན་པའི་བརྡ་དོན་མི་ཐོབ།"
-
+#, fuzzy
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr ""
"དགོངསམ་མ་ཁྲེལ་ འ་ནི་གསལ་སྡུད་འདི་ ད་ལྟོའི་སྐབས་ལུ་ རྒྱབ་སྐྱོར་མ་འབད་བའི་སྐད་ཡིག་ཡང་ན་རྩ་སྒྲིག་ནང་ཨིནམ་"
"བཟུམ་མཐོང་མས།"
@@ -10361,9 +10395,6 @@ msgstr "མ་དཀྲོགས།"
msgid "Extended away"
msgstr "རྒྱ་བསྐྱེད་འབད་ཡི།"
-msgid "Mobile"
-msgstr "འགྲུལ་འཕྲིན། "
-
msgid "Listening to music"
msgstr ""
@@ -10405,18 +10436,6 @@ msgstr "+++ %s འདི་ ལཱ་ཡོདཔ་ལུ་འགྱུར་
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "%s ལྷག་པའི་སྐབས་སུ་འཛོལ་བ།"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"ཁྱོད་ཀྱི་ %s ལྷག་པའི་སྐབས་སུ་ འཛོལ་བ་གཅིག་གདོང་ཐུག་བྱུང་ནུག ཁོང་དེ་ཚུ་ མངོན་གསལ་འབད་དེ་མེདཔ་མ་ཚད་ "
-"ཡིག་སྣོད་རྙིངམ་འདི་ %s~ ལུ་བསྐྱར་མིང་བཏགས་ཏེ་ཡོད། "
-
msgid "Calculating..."
msgstr "རྩིས་སྟོན་པའི་བསྒང་..."
@@ -10491,6 +10510,14 @@ msgstr "%s: %s ལུ་ རྩོམ་སྒྲིག་འབད་ནིའ
msgid "Unable to connect to %s: %s"
msgstr "%s: %s ལུ་མཐུད་མ་ཚུགས།"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+"ནང་བསྐྱོད་ཀྱི་དོན་ལས་ སར་བར་ལུ་ ཊི་ཨེལ་ཨེསི/ཨེསི་ཨེསི་ཨེལ་ དགོས་མཁོ་ཡོདཔ་ཨིན། ཊི་ཨེལ་ཨེསི/ཨེསི་ཨེསི་ཨེལ་ "
+"རྒྱབ་སྐྱོར་མིན་འདུག"
+
#, c-format
msgid " - %s"
msgstr ""
@@ -10524,6 +10551,18 @@ msgstr "མཐུད་ལམ་ངོས་ལེན་མི་འབད་བ
msgid "Address already in use."
msgstr "འ་ནི་ཁ་སླབ་འདི་ ཧེ་མ་ལས་རང་ལག་ལེན་འཐབ་བཞིན་ཡོད།"
+#, c-format
+msgid "Error Reading %s"
+msgstr "%s ལྷག་པའི་སྐབས་སུ་འཛོལ་བ།"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"ཁྱོད་ཀྱི་ %s ལྷག་པའི་སྐབས་སུ་ འཛོལ་བ་གཅིག་གདོང་ཐུག་བྱུང་ནུག ཁོང་དེ་ཚུ་ མངོན་གསལ་འབད་དེ་མེདཔ་མ་ཚད་ "
+"ཡིག་སྣོད་རྙིངམ་འདི་ %s~ ལུ་བསྐྱར་མིང་བཏགས་ཏེ་ཡོད། "
+
msgid "Internet Messenger"
msgstr "ཨིན་ཊར་ནེཊི་འཕྲིན་སྐྱེལ་པ།"
@@ -10572,10 +10611,8 @@ msgstr "ཡིག་འཕྲིན་གསརཔ་གི་བརྡ་བས
msgid "Use this buddy _icon for this account:"
msgstr "འ་ནི་རྩིས་ཐོ་དོན་ལུ་ འ་ནི་བ་ཌི་ངོས་དཔར་ལག་ལེན་འཐབ།"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s གདམ་ཁ་ཚུ།"
+msgid "_Advanced"
+msgstr "ཡར་འཕེལ་ཅན།(_A)"
#, fuzzy
msgid "Use GNOME Proxy Settings"
@@ -10611,9 +10648,6 @@ msgstr "ཁྱོད་ཀྱིས་ངོ་མ་འབད་སྦོ་ལ
msgid "you can see the butterflies mating"
msgstr "ཁྱོད་ཀྱིས་ཕྱེ་མ་ལེབ་འདོད་སྦྱོར་འབད་སར་མཐོང་འོང་།"
-msgid "Proxy Options"
-msgstr "པོ་རོག་སི་གདམ་ཁ་ཚུ།"
-
msgid "Proxy _type:"
msgstr "པོ་རོག་སི་དབྱེ་བ་:(_t)"
@@ -10642,8 +10676,9 @@ msgstr "གཞི་རིམ།(_B)"
msgid "Create _this new account on the server"
msgstr ""
-msgid "_Advanced"
-msgstr "ཡར་འཕེལ་ཅན།(_A)"
+#, fuzzy
+msgid "_Proxy"
+msgstr "པོརོ་སི།"
msgid "Enabled"
msgstr "ལྕོགས་ཅན་བཟོ་ཡོདཔ།"
@@ -10710,6 +10745,17 @@ msgid "I_M"
msgstr "ཨའི་ཨེམ།(_M)"
#, fuzzy
+msgid "_Audio Call"
+msgstr "ཁ་སླབ་ཁ་སྐོང་བརྐྱབ།(_A)"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "ཝི་ཌིའོ་ ཁ་སླབ།"
+
+#, fuzzy
msgid "_Send File..."
msgstr "ཡིག་སྣོད་གཏང་།(_S)"
@@ -10861,6 +10907,10 @@ msgstr "/ལག་ཆས་ཚུ་/ཆ་རོགས་ པ་འུནསི
msgid "/Tools/_Certificates"
msgstr "/ལག་ཆས/དགའ་གདམ(_e)"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/ལག་ཆས/ཕྱི་ཁ(_A)"
+
msgid "/Tools/Plu_gins"
msgstr "/ལག་ཆས་ཚུ་/པ་ལག་ཨིནསི།(_g)"
@@ -10870,10 +10920,6 @@ msgstr "/ལག་ཆས/དགའ་གདམ(_e)"
msgid "/Tools/Pr_ivacy"
msgstr "/ལག་ཆས/སྒེར་གཙང་།(_i)"
-#, fuzzy
-msgid "/Tools/Smile_y"
-msgstr "/ལག་ཆས/ཕྱི་ཁ(_A)"
-
msgid "/Tools/_File Transfers"
msgstr "/ལག་ཆས/ཡིག་སྣོད་གནས་སོར(_F)"
@@ -11000,8 +11046,8 @@ msgstr "ལག་ཐོག་ལས།"
msgid "By status"
msgstr "གནས་ཚད་ཀྱིས།"
-msgid "By log size"
-msgstr "དྲན་དེབ་ཚད་ཀྱིས།"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -11019,6 +11065,9 @@ msgstr "སླར་མཐུད(_R)"
msgid "Re-enable"
msgstr "རྩིས་ཐོ་འདི་སླར་ལྕོགས་ཅན་བཟོ།"
+msgid "SSL FAQs"
+msgstr ""
+
#, fuzzy
msgid "Welcome back!"
msgstr "%s ལོག་འོང་ཡི།"
@@ -11113,6 +11162,9 @@ msgstr ""
msgid "A_lias:"
msgstr "མིང་གཞན:"
+msgid "_Group:"
+msgstr "སྡེ་ཚན:(_G)"
+
msgid "Auto_join when account becomes online."
msgstr ""
@@ -11165,14 +11217,6 @@ msgstr "ཁྱོད་ཀྱིས་ མགྲོན་དུ་འབོད
msgid "Invite Buddy Into Chat Room"
msgstr "ཆ་རོགས་འདི་ཁ་སླབ་གྲངས་སུ་མགྲོན་བརྡ་འབད།"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"ཁྱོད་ཀྱིས་ མགྲོན་བརྡ་འབད་ནིའི་རེ་འདོད་བསྐྱེད་མི་ ལག་ལེན་པའི་མིང་ གདམ་ཁ་ཅན་གྱི་མགྲོན་འབོད་འཕྲིན་དོན་དང་"
-"སྦྲགས་ཏེ་བཙུགས་གནང་།"
-
msgid "_Buddy:"
msgstr "ཆ་རོགས:(_B)"
@@ -11249,6 +11293,22 @@ msgstr "/གྲོས་གླེང་/ བཟུམ་སྦེ་སྲུང
msgid "/Conversation/Clea_r Scrollback"
msgstr "/གྲོས་གླེང་/རྒྱབ་སྒྲིལ་བསལ།(_r)"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/གྲོས་གླེ་ང/ཧེང་བཀལ།(_o)"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/གྲོས་གླེ་ང/ཧེང་བཀལ།(_o)"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/གྲོས་གླེ་ང/ཧེང་བཀལ།(_o)"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/གྲོས་གླེང་/དྲན་དེབ་ལུ་བལྟ(_L)"
+
msgid "/Conversation/Se_nd File..."
msgstr "/གྲོས་གླེང་/ཡིག་སྣོད་གཏང་...(_n)"
@@ -11323,6 +11383,18 @@ msgstr "/གྲོས་གླེང་།"
msgid "/Conversation/View Log"
msgstr "/གྲོས་གླེང་/དྲན་དེབ་བལྟ"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/གྲོས་གླེ་ང/ཧེང་བཀལ།"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/གྲོས་གླེང་/དྲན་དེབ་བལྟ"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/གྲོས་གླེ་ང/ཧེང་བཀལ།"
+
msgid "/Conversation/Send File..."
msgstr "/གྲོས་གླེང་/ཡིག་སྣོད་གཏང་..."
@@ -11507,6 +11579,9 @@ msgstr "དུས་སྦྱོར་ལུག"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "རྒྱབ་སྐྱོར།"
@@ -11652,6 +11727,10 @@ msgid "Ubuntu Georgian Translators"
msgstr "ད་ལྟོའི་སྐད་བསྒྱུར་པཚུ།"
#, fuzzy
+msgid "Khmer"
+msgstr "གཞན།"
+
+#, fuzzy
msgid "Kannada"
msgstr "བཀག་དམ་ཅན།"
@@ -11675,6 +11754,10 @@ msgid "Macedonian"
msgstr "མེ་སི་ཌོ་ནི་ཡཱན།"
#, fuzzy
+msgid "Mongolian"
+msgstr "མེ་སི་ཌོ་ནི་ཡཱན།"
+
+#, fuzzy
msgid "Bokmål Norwegian"
msgstr "ནོར་ཝེ་ཇི་ཡཱན།"
@@ -11789,8 +11872,25 @@ msgstr ""
"རམ་འབད་མི་ཚུ་གིས་ བདག་དབང་ཐོབ་སྟེ་ཡོདཔ་ཨིན། གྲོགས་རམ་པ་ཚུའི་ཐོ་ཡིག་ཡོངས་རྫོགས་དོན་ལུ་ "
"'COPYRIGHT' ཡིག་སྣོད་བལྟ། ང་བཅས་ཀྱིས་ ལས་རིམ་དེའི་དོན་ལུ་ ཉེན་ལེན་བྱིན་ནི་མེདཔ་ཨིན།<BR><BR>"
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, fuzzy, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE =\"4\">IRC:</FONT> #གཱེམ on irc.freenode.net<BR><BR>"
+
#, fuzzy, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE =\"4\">IRC:</FONT> #གཱེམ on irc.freenode.net<BR><BR>"
msgid "Current Developers"
@@ -12114,15 +12214,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr "ཡིག་འཕྲིན་གསརཔ་གི་བརྡ་བསྐུལ།"
-msgid "_Copy Email Address"
-msgstr "གློག་འཕྲིན་འདྲ་བཤུས་རྐྱབས(_C)"
-
-msgid "_Open Link in Browser"
-msgstr "བརའུ་ཟར་ནང་འབྲེལ་ལམ་ཁ་ཕྱེ(_O)"
-
-msgid "_Copy Link Location"
-msgstr "འབྲེལ་ལམ་གནས་ཁོངས་འདྲ་བཤུས(_C)"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12392,6 +12483,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12420,6 +12512,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12479,11 +12572,27 @@ msgstr ""
msgid "Pidgin"
msgstr "ཕགཔ།"
-msgid "Open All Messages"
-msgstr "འཕྲིན་དོན་ཚུ་ཆ་མཉམ་རང་ཁ་ཕྱེ།"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">ཁྱོད་ལུ་ཡིག་འཕྲིན་གཅིག་ཡོད།!</span>"
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "རྩིས་སྟོན་པའི་བསྒང་..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -12513,6 +12622,27 @@ msgid ""
msgstr ""
"ལག་དེབ་བརའུ་ཟར་བརྡ་བཀོད་འདི་གདམ་ཁ་བརྐྱབས་ནུག དེ་འབདཝ་ད་ བརྡ་བཀོད་འདི་གཞི་སྒྲིག་མ་འབད་བས།"
+msgid "Open All Messages"
+msgstr "འཕྲིན་དོན་ཚུ་ཆ་མཉམ་རང་ཁ་ཕྱེ།"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">ཁྱོད་ལུ་ཡིག་འཕྲིན་གཅིག་ཡོད།!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "ཆ་རོགས་པའུནསི་གསརཔ།"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">ཁྱོད་ལུ་ཡིག་འཕྲིན་གཅིག་ཡོད།!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "(༡ འཕྲིན་དོན)"
+
msgid "The following plugins will be unloaded."
msgstr "འོག་ལུ་ཡོད་པའི་པ་ལག་ཨིནསི་འདི་ སྐྱེལ་བཙུགས་འབད་ནི་ཨིན།"
@@ -12565,6 +12695,10 @@ msgstr "<b>པ་ལག་ཨིན་རྒྱས་བཤད་ཚུ།</b>"
msgid "Select a file"
msgstr "ཡིག་སྣོད་སེལ་འཐུ་འབད།"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "ཆ་རོགས་པའུནསི་ ཞུན་དག་འབད།"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "ག་གུ་ལུ་པའུནསི།"
@@ -12636,6 +12770,50 @@ msgstr "སླར་འབྱུང་དོ།(_R)"
msgid "Pounce Target"
msgstr "དམིགས་གཏད་པའུནསི།"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "ཡིག་དཔར་བརྐྱབ་ནི་འགོ་བཙུགསཔ་ཨིན།(_t)"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "ཡིག་དཔར་བརྐྱབ་པའི་སྐབས་སུ་ཐེམ་ཚུ།(_a)"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "འཛུལཝ་ཨིན།(_g)"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "ལས་མེད་ལས་ལོག་ནི(_n)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "ཕྱི་ཁ་ལས་སླར་ལོག་འབདཝ་ཨིན།"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "ཡིག་དཔར་བརྐྱབ་ནི་བཀག་ཡོདཔ།"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "འཐོནམ་ཨིན།(_f)"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "ལས་མེད་འགྱུརཝ་ཨིན།(_i)"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "ཕྱི་ཁ་ཨིན་པའི་སྐབས།"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "འཕྲིན་དོན་གཏང་(_m)"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "ངོ་མ་ཤེས་པའི་ པའུནསི་གི་ བྱུང་ལས། འ་ནི་འདི་སྙན་ཞུ་འབད་གནང་།"
+
msgid "Smiley theme failed to unpack."
msgstr "སི་མའི་ལི་བརྗོད་དོན་བཤུབ་ནི་འཐུས་ཤོར་བྱུང་ཡོདཔ།"
@@ -12660,6 +12838,12 @@ msgstr "མགྱོགས་ཐབས།"
msgid "Cl_ose conversations with the Escape key"
msgstr "%s དང་བཅས་གྲོས་གླེང་ཚུ།"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "ཆ་རོགས་ཀྱི་ཐོ་ཡིག"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "ངོས་དཔར་སྣོད་ཀྱི་རིམ་ལུགས།"
@@ -12782,9 +12966,6 @@ msgstr ""
msgid "Cannot start browser configuration program."
msgstr "ལགལེན་པའི་བརྡ་དོན་ཐོབ་མ་ཚུགས།"
-msgid "ST_UN server:"
-msgstr "ཨེསི་ཊི་ཡུ་ཨེན་ སར་བར།:(_U)"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">དཔེར་བརྗོད།: stunserver.org</span>"
@@ -12809,6 +12990,10 @@ msgstr "འདྲེན་ལམ་ འགོ་བཙུགས:(_S)"
msgid "_End port:"
msgstr "འདྲེན་ལམ་ མཇུག་བསྡུ:(_E)"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
#, fuzzy
msgid "Proxy Server &amp; Browser"
msgstr "པོརོག་སི་སར་བར།"
@@ -12838,6 +13023,10 @@ msgstr "པོརོག་སི་སར་བར།"
msgid "No proxy"
msgstr "པོརོག་སི་མེད།"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "ལག་ལེན་པ:(_U)"
@@ -13002,13 +13191,13 @@ msgstr "གཉིས་ཆ་རང་ ཕྱི་ཁ་དང་ལས་མ
msgid "Auto-away"
msgstr "རང་བཞིན་གྱི་-ཕྱི་ཁ།"
-msgid "Change status when _idle"
-msgstr "ལས་མེད་སྦེ་ཡོད་པའི་སྐབས་སུ་གནས་ཚད་བསྒྱུར་བཅོས་འབད།(_i)"
-
#, fuzzy
msgid "_Minutes before becoming idle:"
msgstr "གནས་ཚད་བསྒྱུར་བཅོས་མ་འབད་བའི་ཧེ་མ་སྐར་མ་ཚུ།:(_M)"
+msgid "Change status when _idle"
+msgstr "ལས་མེད་སྦེ་ཡོད་པའི་སྐབས་སུ་གནས་ཚད་བསྒྱུར་བཅོས་འབད།(_i)"
+
msgid "Change _status to:"
msgstr ": ལུ་ གནས་ཚད་བསྒྱུར་བཅོས་འབད།(_s)"
@@ -13161,6 +13350,12 @@ msgstr "སྲུང་བཞག་འབད་ཞིནམ་ལས་ལག་
msgid "Status for %s"
msgstr "%s དོན་ལུ་ གནས་ཚད་ཚུ།"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
#, fuzzy
msgid "Custom Smiley"
msgstr "སི་མའི་ལི་ནང་ན་བཙུགས།"
@@ -13171,15 +13366,15 @@ msgstr ""
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
+msgstr ""
+
#, fuzzy
msgid "Duplicate Shortcut"
msgstr "ནོར་བཅོས་ངོ་བཤུས།"
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
-msgstr ""
-
#, fuzzy
msgid "Please select an image for the smiley."
msgstr "%s དོན་ལུ་ མིང་གསརཔ་བཙུགས་གནང་།"
@@ -13193,18 +13388,22 @@ msgid "Add Smiley"
msgstr "བགའ་འཛུམ་བཏོན!"
#, fuzzy
-msgid "Smiley _Image"
+msgid "_Image:"
msgstr "གཟུགས་བརྙན་སྲུང་བཞག་འབད།"
-#. Smiley shortcut
+#. Shortcut text
#, fuzzy
-msgid "Smiley S_hortcut"
+msgid "S_hortcut text:"
msgstr "མགྱོགས་ཐབས།"
#, fuzzy
msgid "Smiley"
msgstr "བགའ་འཛུམ་བཏོན!"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "མགྱོགས་ཐབས།"
+
msgid "Custom Smiley Manager"
msgstr ""
@@ -13334,6 +13533,16 @@ msgstr ""
"གཟུགས་བརྙན་ '%s': འདི་མངོན་གསལ་འབད་མ་ཚུགས་ ཏེ་རྒྱུ་མཚན་འདི་མ་ཤེས་པས་ཨིན་རུང་ གཟུགས་བརྙན་ཡིག་"
"སྣོད་ངན་ཅན་གཅིག་གིས་འོང་སྲིད།"
+#, fuzzy
+msgid "_Open Link"
+msgstr "འབྲེལ་ལམ(ནང་)ཁ་ཕྱེ:(_O)"
+
+msgid "_Copy Link Location"
+msgstr "འབྲེལ་ལམ་གནས་ཁོངས་འདྲ་བཤུས(_C)"
+
+msgid "_Copy Email Address"
+msgstr "གློག་འཕྲིན་འདྲ་བཤུས་རྐྱབས(_C)"
+
msgid "Save File"
msgstr "ཡིག་སྣོད་སྲུངས།"
@@ -14332,9 +14541,6 @@ msgstr "ཆ་རོགས་ཐོ་ཡིག་སྒོ་སྒྲིག་
msgid "Only when docked"
msgstr "ཌོཀ་འབད་ཡོདཔ་ད་རྐྱངམ་ཅིག"
-msgid "_Flash window when chat messages are received"
-msgstr "ཁ་སླབ་འཕྲིན་དོན་ཚུ་ཐོབ་ཡོདཔ་ད་ སྒོ་སྒྲིག་རིབ་སྟོན་འབད།(_F)"
-
#, fuzzy
msgid "Windows Pidgin Options"
msgstr "ནང་བསྐྱོད་ཀྱི་གདམ་ཁ་ཚུ།"
@@ -14387,6 +14593,232 @@ msgstr ""
msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr ""
+#, fuzzy
+#~ msgid "Invite message"
+#~ msgstr "འཕྲིན་དོན་སྤང་།"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "ཁྱོད་ཀྱིས་ མགྲོན་བརྡ་འབད་ནིའི་རེ་འདོད་བསྐྱེད་མི་ ལག་ལེན་པའི་མིང་ གདམ་ཁ་ཅན་གྱི་མགྲོན་འབོད་འཕྲིན་དོན་"
+#~ "དང་སྦྲགས་ཏེ་བཙུགས་གནང་།"
+
+#, fuzzy
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "དྲན་འཛིན་ཚུའི་ཁ་བྱང་ཀི་དེབ་སེལ་འཐུ་འབད།"
+
+#~ msgid ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+#~ msgstr ""
+#~ "ཡང་ཅིན་ ཁྱོད་ཀྱིས་དུམ་གྲ་ཅིག་ལས་མཐུད་བཏོག་འོང་། འདི་གཏན་གཏན་མ་བཟོ་ཚུན་ ཁྱོད་ཀྱིས ཊི་ཨོ་སི འདི་"
+#~ "ལག་ལེན་འཐབ་དགོཔ་འོང་།དུས་མཐུན་ཚུ་བཟོ་ནིའི་དོན་ལུ %sཞིབ་དཔྱད་འབད།"
+
+#, fuzzy
+#~ msgid "Add buddy Q&A"
+#~ msgstr "ཆ་རོགས་ཁ་སྐོང་རྐྱབས།"
+
+#, fuzzy
+#~ msgid "Can not decrypt get server reply"
+#~ msgstr "སལ་བར་ བརྡ་དོན་ཐོབ་མི་ཚུགས།"
+
+#, fuzzy
+#~ msgid "Keep alive error"
+#~ msgstr "འཛོལ་བ་ལྷག་དོ།"
+
+#, fuzzy
+#~ msgid ""
+#~ "Lost connection with server:\n"
+#~ "%d, %s"
+#~ msgstr ""
+#~ "སར་བར་དང་གཅིག་ཁར་ མཐུད་ལམ་བརླག་སྟོར་ཞུགས་ནུག:\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Connecting server ..."
+#~ msgstr "སར་བར་ལུ་མཐུད།"
+
+#, fuzzy
+#~ msgid "Failed to send IM."
+#~ msgstr "མིང་: %s ཐོབ་ནི་ལུ་འཐུས་ཤོར་བྱུང་ཡོདཔ།"
+
+#~ msgid "Looking up %s"
+#~ msgstr " %sལུ བལྟ་དོ།"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "%s ལུ་མཐུད་ནི་ འཐུས་ཤོར་བྱུང་ནུག"
+
+#~ msgid "Signon: %s"
+#~ msgstr "ནང་ན་འཛུལ: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "ཡིག་སྣོད%sའདི་བྲིས་མ་ཚུགས།"
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "ཡིག་སྣོད%sའདི་ ལྷག་མ་ཚུགས།"
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "འཕྲིན་དོན་རིང་དྲགས་པས་ མཇུག་གི%sབཱའིཊིསི་འདི་ཆུང་ཀུ་བཟོ་ནུག"
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s འདི་ད་ལྟོ་ ནང་བསྐྱོད་མ་འབད།"
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr " %s ཉེན་བརྡ་འབད་ནི་འདི་ མི་ཆོགཔ་ཨིན།"
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr "འཕྲིན་དོན་འདི་ ས་ཁར་འབུད་ནུག ཁྱོད་ཀྱིས སལ་བར་གྱི་མགྱོགས་ཚད་འདི་ཚད་ལས་བརྒལ་བཅུག་དེས།"
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "%sནང་ ཁ་སླབ་ནི་ཐོབ་མི་ཚུགས།"
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "ཁྱོད་ཀྱིས་ %s ལུ་ འཕྲིན་དོན་ཚུ་གནམ་མེད་ས་མེད་མགྱོགས་པར་གཏང་དེས།"
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "ཁྱོད་ཀྱིས་ %s ལས་ ཨའི་ཨེམ བྱིག་ཡར་སོ་ནུག ག་ཅི་འབད་ཟེར་བ་ཅིན་ འདི་སྦོམ་དྲགས་པས།"
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr ""
+#~ "ཁྱོད་ཀྱིས་ %s ལས་ ཨའི་ཨེམ་ བྱིག་ཡར་སོ་ནུག ག་ཅི་འབད་ཟེར་བ་ཅིན་ འདི་གནམ་མེད་ས་མེད་མགྱོགས་པར་"
+#~ "བཏང་ནུག"
+
+#~ msgid "Failure."
+#~ msgstr "འཐུས་ཤོར།"
+
+#~ msgid "Too many matches."
+#~ msgstr "མཐུན་སྒྲིག་ཚུ་མང་དྲགས་པས།"
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "ཁྱད་ཆོས་ཚང་མི་ལེ་ཤཱ་རང་དགོ་པས།"
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "Dir ཞབས་ཏོག་འདི་གནས་སྐབས་ཅིག་ཐོབ་མི་ཚུགས།"
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "གློག་འཕྲིན་བལྟ་ནི་བཀག་དམ་འབད་ཡོདཔ།"
+
+#~ msgid "Keyword ignored."
+#~ msgstr "གཙོ་ཚིག་སྣང་མེད་སྦེ་བཞག་ནུག"
+
+#~ msgid "No keywords."
+#~ msgstr "གཙོ་ཚིག་ཚུ་མེད།"
+
+#~ msgid "User has no directory information."
+#~ msgstr "ལག་ལེན་པ་ལུ་ སྣོད་ཐོའི་བརྡ་དོན་མིན་འདུག"
+
+#~ msgid "Country not supported."
+#~ msgstr "རྒྱལ་ཁབ་ རྒྱབ་སྐྱོར་མ་འབད་བས།"
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "འཐུས་ཤོར་ངོ་མ་ཤེས: %s"
+
+#, fuzzy
+#~ msgid "Incorrect username or password."
+#~ msgstr "བདེན་མེད་ཀྱི་ སྐྱོན་མིང་ ཡང་ན་ ཆོག་ཡིག"
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "ཞབས་ཏོག་འདི་གནས་སྐབས་ཅིག་ཐོབ་མི་ཚུགས།"
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "ནང་བསྐྱོད་འབད་ནིའི་དོན་ལུ་ ཁྱོད་ཀྱི་ཉེན་བརྡའི་གནས་རིམ་འདི་མཐོ་དྲགས་པས།"
+
+#~ 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 ""
+#~ "ཁྱོད་ འཕྲལ་འཕྲལ་རང་ མཐུད་ནི་ནང་ དེ་ལས་མཐུད་བཏོག་སྟེ་ཡོད། སྐར་མ་བཅུ་ཐམ་དེ་ཅིག་བསྒུག་ཞིན་ན་ དོ་"
+#~ "རུང་འབད་རྩོལ་བསྐྱེད། ཁྱོད་ཀྱིས་འཕྲོ་མཐུད་དེ་རང་འབད་རྩོལ་བསྐྱེད་པ་ཅིན་ ཧེང་བཀལ་རང་བསྒུག་དགོ"
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "ངོ་མ་ཤེསཔ་ནང་ན་འཛུལཝ་ད་ འཛོལ་བ་བྱུང་ནུག: %s"
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "ངོ་མ་ཤེས་པའི་འཛོལ་བ %d བྱུང་ནུག བརྡ་དོན: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "ནུས་མེད་སྡེ་ཚན།"
+
+#~ msgid "Connection Closed"
+#~ msgstr "མཐུད་ལམ་ཁ་མ་བསྡམ།"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "ལན་ལུ་བསྒུག་དོ..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "ཊི་ཨོ་སི་ འདི་གིས་ ཐེམལས་ ལོག་འོང་ནུག ད་འབདན་ཁྱོད་རང་འཕྲིན་དོན་ཚུ་ དོ་རུང་གཏང་།"
+
+#~ msgid "Password Change Successful"
+#~ msgstr "ཆོག་ཡིག་ བསྒྱུར་བཅོས་ མཐར་འཁྱོལ་ནུག"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Dir བརྡ་དོན་ལེན།"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Dir བརྡ་དོན་གཞི་སྒྲིག་འབད།"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "བྲིས་ནིའི་དོན་ལུ %s ཁ་ཕྱེ་མ་ཚུགས།"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr "ཡིག་སྣོད་གནས་སོར་འཐུས་ཤོར་བྱུང་ནུག ཕྱོགས་གཞན་མི་འདི་ཆ་མེད་བཏང་ཡི།"
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "གནས་སོར་གྱི་དོན་ལུ་ མཐུད་མ་ཚུགས།"
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "ཡིག་སྣོད་ཀྱི་མགོ་ཡིག་བྲིས་མ་ཚུགས། ཡིག་སྣོད་འདི་གནས་སོར་མི་གཏང་།"
+
+#, fuzzy
+#~ msgid "Save As..."
+#~ msgstr " བཟུམ་སྦེ་སྲུང་བཞག་འབད།"
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] ""
+#~ "%s གིས %s ལུ %dཡིག་སྣོད་དང་ལེན་འབད་ནི་འབད ཞུ་བ་འབདཝ་ཨིན: %s (%.2f %s)%s%s"
+#~ msgstr[1] ""
+#~ "%s གིས %s ལུ %d ཡིག་སྣོད་ཚུ་ དང་ལེན་འབད་ནི་འབད་ ཞུ་བ་འབདཝ་ཨིན: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s གིས་ ཁྱོད་ལུ་ ཁོང་ཚུ་ལུ་ཡི་གུ་གཏང་ནིའི་ཞུ་བ་འབདཝ་ཨིན།"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "ཊི་ཨོ་སི་ གནད་སྤེལ་ལམ་ལུགས་ པ་ལག་ཨིན།"
+
+#~ msgid "User information for %s unavailable"
+#~ msgstr "%sགི་དོན་ལུ་ ལག་ལེན་པའི་བརྡ་དོན་མི་ཐོབ།"
+
+#~ msgid "%s Options"
+#~ msgstr "%s གདམ་ཁ་ཚུ།"
+
+#~ msgid "Proxy Options"
+#~ msgstr "པོ་རོག་སི་གདམ་ཁ་ཚུ།"
+
+#~ msgid "By log size"
+#~ msgstr "དྲན་དེབ་ཚད་ཀྱིས།"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "བརའུ་ཟར་ནང་འབྲེལ་ལམ་ཁ་ཕྱེ(_O)"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "ཨེསི་ཊི་ཡུ་ཨེན་ སར་བར།:(_U)"
+
+#, fuzzy
+#~ msgid "Smiley _Image"
+#~ msgstr "གཟུགས་བརྙན་སྲུང་བཞག་འབད།"
+
+#, fuzzy
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "མགྱོགས་ཐབས།"
+
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "ཁ་སླབ་འཕྲིན་དོན་ཚུ་ཐོབ་ཡོདཔ་ད་ སྒོ་སྒྲིག་རིབ་སྟོན་འབད།(_F)"
+
#~ msgid "A group with the name already exists."
#~ msgstr "མིང་དང་བཅས་པའི་སྡེ་ཚན་འདི་ཧེ་མ་ལས་རང་གནས་ཏེ་འདུག"
@@ -14486,13 +14918,6 @@ msgstr ""
#~ msgid "Change Qun information"
#~ msgstr "རྒྱུ་ལམ་བརྡ་དོན།"
-#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr "%s (%s)"
-
#~ msgid "System Message"
#~ msgstr "འཕྲིན་དོན་རིམ་ལུགས།"
@@ -14882,9 +15307,6 @@ msgstr ""
#~ "\n"
#~ "ལས་མེད།: %s"
-#~ msgid "Nickname: %s\n"
-#~ msgstr "སྐྱོན་མིང་: %s\n"
-
#~ msgid "Toggle offline buddies"
#~ msgstr "གློག་ལམ་མེད་པའི་ཆ་རོགས་ཚུ་ སོར་སྟོན་འབད།"
@@ -15040,8 +15462,8 @@ msgstr ""
#~ "You can get version %s from:<br><a href=\"http://Pidgin.sourceforge.net/"
#~ "\">http://Pidgin.sourceforge.net</a>."
#~ msgstr ""
-#~ "ཁྱོད་ཀྱིས<br><a href=\"http://Pidgin.sourceforge.net/\">http://Pidgin.sourceforge."
-#~ "net</a>.ལས་ཐོན་རིམ་%sཐོབ་ཚུགས།"
+#~ "ཁྱོད་ཀྱིས<br><a href=\"http://Pidgin.sourceforge.net/\">http://Pidgin."
+#~ "sourceforge.net</a>.ལས་ཐོན་རིམ་%sཐོབ་ཚུགས།"
#~ msgid "Delay"
#~ msgstr "ཕྱིར་འགྱངས།"
@@ -15339,8 +15761,8 @@ msgstr ""
#~ msgid ""
#~ "When this happens, TOC ignores any messages sent to it, and may kick you "
-#~ "off if you send a message. Pidgin will prevent anything from going through. "
-#~ "This is only temporary, please be patient."
+#~ "off if you send a message. Pidgin will prevent anything from going "
+#~ "through. This is only temporary, please be patient."
#~ msgstr ""
#~ "འདི་བཟུམ་བྱུངམ་ད་ལུ་ ཊི་ཨོ་སི་གིས་ འཕྲིན་དོན་ག་ཅི་རང་བཏང་རུང་ སྣང་མེད་སྦེ་བཞགཔ་ཨིནམ་དང་འཕྲིན་"
#~ "དོན་གཏང་པ་ཅིན་ ཕྱི་ཁ་ཡང་བཏོན་གཏང་འོང་། གཱེམ་གྱིས་ ག་ཅིའི་ཐད་ལས་འབད་རུང་ འཕྲིན་དོན་གཏང་ནི་"
@@ -15352,8 +15774,8 @@ msgstr ""
#~ msgid ""
#~ "The normal authentication method has failed. This means either your "
#~ "password is incorrect, or Yahoo!'s authentication scheme has changed. "
-#~ "Pidgin will now attempt to log in using Web Messenger authentication, which "
-#~ "will result in reduced functionality and features."
+#~ "Pidgin will now attempt to log in using Web Messenger authentication, "
+#~ "which will result in reduced functionality and features."
#~ msgstr ""
#~ "སྤྱིར་བཏང་བདེན་བཤད་ཐབས་ལམ་འདི་འཐུས་ཤོར་བྱུང་ནུག འདི་ཡང་ ཡང་ཅིན་ ཁྱོད་རའི་ཆོག་ཡིག་འདི་བདེན་"
#~ "མེད་ ཡང་ན་ ཡ་ཧུ་བདེན་བཤད་ཀྱི་ལས་འཆར་འདི་བསྒྱུར་བཅོས་འབད་འབདཝ་འོང་། གཱེམ་གྱིས་ ཝེབ་འཕྲིན་"
@@ -15497,9 +15919,6 @@ msgstr ""
#~ msgid "Away title: "
#~ msgstr "ཕྱི་ཁ་ཨིན་པའི་མགོ་མིང་: "
-#~ msgid "Buddy List Error"
-#~ msgstr "ཆ་རོགས་ཐོ་ཡིག་གི་འཛོལ་བ།"
-
#~ msgid "(+%d more)"
#~ msgstr "(+%d ཧེང་བཀལ)"
@@ -15813,9 +16232,6 @@ msgstr ""
#~ msgid "_Idle"
#~ msgstr "ལས་མེད(_I)"
-#~ msgid "Retur_n from idle"
-#~ msgstr "ལས་མེད་ལས་ལོག་ནི(_n)"
-
#~ msgid "Pounce Action"
#~ msgstr "པའུནསི་གི་བྱ་བ།"
@@ -16017,8 +16433,8 @@ msgstr ""
#~ msgstr "དགའ་གདམ་ཚུ་མངོན་གསལ་འབད་མ་ཚུགས།"
#~ msgid ""
-#~ "Pidgin was not able to load your preferences because they are stored in an "
-#~ "old format that is no longer used. Please reconfigure your settings "
+#~ "Pidgin 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 ""
#~ "གཱེམ་འདི་གིས་ཁྱོད་ཀྱི་དགའ་གདམ་ཚུ་མངོན་གསལ་འབད་མ་ཚུགས་པས་ ག་ཅི་འབད་ཟེར་བ་ཅིན་ དེ་ཚུ་ད་ལས་"
@@ -16127,15 +16543,15 @@ msgstr ""
#~ msgstr "སྣོད་ཐོ་འཛུལ་སྤྱོད་འབད་མི་ཚུགས།"
#~ msgid ""
-#~ "Pidgin was unable to search the Directory because it was unable to connect "
-#~ "to the directory server. Please try again later."
+#~ "Pidgin was unable to search the Directory because it was unable to "
+#~ "connect to the directory server. Please try again later."
#~ msgstr ""
#~ "གཱེམ་གྱིས་སྣོད་ཐོ་འཚོལ་ཞིབ་འབད་མ་ཚུགས་པས་ ག་ཅི་འབད་ཟེར་བ་ཅིན་ སྣོད་ཐོའི་སར་བར་ལུ་མཐུད་མ་ཚུགས་"
#~ "པས། དོ་རུང་ཤུལ་ལས་འབད་རྩོལ་བསྐྱེད་གནང་།"
#~ msgid ""
-#~ "Pidgin was unable to change your password due to an error connecting to the "
-#~ "Gadu-Gadu server. Please try again later."
+#~ "Pidgin was unable to change your password due to an error connecting to "
+#~ "the Gadu-Gadu server. Please try again later."
#~ msgstr ""
#~ "ག་ཌུ་ ག་ཌུ་ སར་བར་ལུ་འཛོལ་བ་མཐུད་དེ་ཡོདཔ་ལས་བརྟེན་ཏེ་ གཱེམ་གྱིས་ཁྱོད་ཀྱི་ཆོག་ཡིག་བསྒྱུར་བཅོས་འབད་"
#~ "མ་ཚུགས་པས། དོ་རུང་ཤུལ་ལས་འབད་རྩོལ་བསྐྱེད་གནང་།"
@@ -16147,8 +16563,8 @@ msgstr ""
#~ msgstr "ལག་ལེན་པའི་གསལ་སྡུད་འཛུལ་སྤྱོད་འབད་མི་ཚུགས།"
#~ msgid ""
-#~ "Pidgin was unable to access this user's profile due to an error connecting "
-#~ "to the directory server. Please try again later."
+#~ "Pidgin was unable to access this user's profile due to an error "
+#~ "connecting to the directory server. Please try again later."
#~ msgstr ""
#~ "སྣོད་ཐོ་སར་བར་ལུ་འཛོལ་བ་མཐུདཔ་ལས་བརྟེན་ཏེ་ གཱེམ་གྱིས་ལག་ལེན་པའི་གསལ་སྡུད་འདི་འཛུལ་སྤྱོད་འབད་མ་"
#~ "ཚུགས་པས། དོ་རུང་ཤུལ་ལས་འབད་རྩོལ་བསྐྱེད་གནང་།"
@@ -16376,9 +16792,6 @@ msgstr ""
#~ msgstr[0] "(%d འཕྲིན་དོན)"
#~ msgstr[1] "(%d འཕྲིན་དོན་ཚུ)"
-#~ msgid "(1 message)"
-#~ msgstr "(༡ འཕྲིན་དོན)"
-
#~ msgid "%s logged in."
#~ msgstr "%s ནང་བསྐྱོད་འབད་ཡི།"
diff --git a/po/el.po b/po/el.po
index 07b35967dd..bb6d2bf2a7 100644
--- a/po/el.po
+++ b/po/el.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pidgin[el]\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-18 01:17-0800\n"
+"POT-Creation-Date: 2009-04-30 10:37-0400\n"
"PO-Revision-Date: 2008-12-17 23:56+0200\n"
"Last-Translator: Bouklis Panos <panos@echidna-band.com>\n"
"Language-Team: Greek <i18ngr@lists.hellug.gr>\n"
@@ -29,13 +29,13 @@ msgstr "Finch"
msgid "%s. Try `%s -h' for more information.\n"
msgstr "%s. Δοκιμάστε `%s -h' για περισσότερες πληροφορίες.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -612,19 +612,6 @@ msgstr ""
msgid "Send To"
msgstr "Αποστολή σε"
-msgid "Invite message"
-msgstr "Μήνυμα πρόσκλησης"
-
-msgid "Invite"
-msgstr "Πρόσκληση"
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Παρακαλούμε εισάγετε το όνομα του χρήστη που επιθυμείτε να προσκαλέσετε,\n"
-"μαζί με ένα προαιρετικό μήνυμα πρόσκλησης."
-
msgid "Conversation"
msgstr "Συνομιλία"
@@ -879,6 +866,41 @@ msgstr "Όλες οι συνομιλίες"
msgid "System Log"
msgstr "Καταγραφή συστήματος"
+#, fuzzy
+msgid "Calling ... "
+msgstr "Υπολογισμός..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "Αποδοχή"
+
+msgid "Reject"
+msgstr "Απόρριψη"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "Αποχωρίσατε από το κανάλι%s%s"
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "Emails"
@@ -913,6 +935,9 @@ msgstr "Συνέχεια"
msgid "IM"
msgstr "Μήνυμα"
+msgid "Invite"
+msgstr "Πρόσκληση"
+
msgid "(none)"
msgstr "(κανένα)"
@@ -1118,7 +1143,6 @@ msgstr "%s απουσιάζει. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s σας έστειλε ένα μήνυμα. (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "Άγνωστο γεγονός εφόρμησης. Παρακαλούμε αναφέρετέ το!"
@@ -1164,7 +1188,6 @@ msgstr "Λεπτά πριν την αλλαγή της κατάστασης"
msgid "Change status to"
msgstr "Αλλαγή κατάστασης σε"
-#. Conversations
msgid "Conversations"
msgstr "Συνομιλίες"
@@ -1491,7 +1514,6 @@ msgstr ""
"Όταν ανοίγει μία νέα συνομιλία αυτό το πρόσθετο θα εισάγει την τελευταία "
"συνομιλία μέσα στην τρέχουσα."
-#, c-format
msgid "Online"
msgstr "Συνδεδεμένος"
@@ -1535,6 +1557,28 @@ msgstr ""
msgid "Lastlog plugin."
msgstr "Πρόσθετο lastlog."
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "λογαριασμοί"
@@ -1633,13 +1677,6 @@ msgstr "Αποδοχή πιστοποιητικού για %s;"
msgid "SSL Certificate Verification"
msgstr "Επιβεβαίωση πιστοποιητικού SSL"
-#. Number of actions
-msgid "Accept"
-msgstr "Αποδοχή"
-
-msgid "Reject"
-msgstr "Απόρριψη"
-
msgid "_View Certificate..."
msgstr "_Προβολή πιστοποιητικού..."
@@ -1777,6 +1814,18 @@ msgstr "%s έφυγε από το δωμάτιο."
msgid "%s left the room (%s)."
msgstr "%s έφυγε από το δωμάτιο (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Πρόσκληση σε συζήτηση"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Παρακαλούμε εισάγετε το όνομα του χρήστη που επιθυμείτε να προσκαλέσετε, "
+"μαζί με ένα προαιρετικό μήνυμα πρόσκλησης."
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "Αποτυχία δημιουργίας σύνδεσης: %s"
@@ -1911,7 +1960,6 @@ msgstr "Εκκίνηση μεταφοράς του %s από %s"
msgid "Transfer of file %s complete"
msgstr "Η μεταφορά του αρχείου %s ολοκληρώθηκε"
-#, c-format
msgid "File transfer complete"
msgstr "Μεταφορά αρχείου ολοκληρώθηκε"
@@ -1919,7 +1967,6 @@ msgstr "Μεταφορά αρχείου ολοκληρώθηκε"
msgid "You canceled the transfer of %s"
msgstr "Ακυρώσατε τη μεταφορά του %s"
-#, c-format
msgid "File transfer cancelled"
msgstr "Μεταφορά αρχείου ακυρώθηκε"
@@ -2129,7 +2176,6 @@ msgstr "(%s) %s <ΑΥΤΟΜΑΤΗ-ΑΠΑΝΤΗΣΗ>: %s\n"
msgid "You are using %s, but this plugin requires %s."
msgstr "Χρησιμοποιείτε το %s, αλλά αυτό το πρόσθετο απαιτεί το %s."
-#, c-format
msgid "This plugin has not defined an ID."
msgstr "Αυτό το πρόσθετο δεν έχει αναγνωριστικό ID."
@@ -2627,6 +2673,32 @@ msgstr "Αποθήκευση των μηνυμάτων χωρίς σύνδεση
msgid "Do not ask. Always save in pounce."
msgstr "Χωρίς ερώτηση. Πάντα αποθήκευση ως εφόρμηση."
+#, fuzzy
+msgid "One Time Password"
+msgstr "Εισαγωγή κωδικού"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2837,7 +2909,6 @@ msgstr ""
"Αδυναμία δημιουργία σύνδεσης με τον τοπικό εξυπηρετητή mDNS. Είναι σε "
"λειτουργία;"
-#. Creating the options for the protocol
msgid "First name"
msgstr "Όνομα"
@@ -2869,6 +2940,11 @@ msgstr "Πρόσθετο πρωτοκόλλου Bonjour"
msgid "Purple Person"
msgstr ""
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "Συνοικία"
+
msgid "Bonjour"
msgstr "Bonjour"
@@ -3027,13 +3103,13 @@ msgstr "Επιλογή συζήτησης φίλου: %s"
msgid "Add to chat..."
msgstr "Προσθήκη στη συζήτηση..."
+#. Global
msgid "Available"
msgstr "Διαθέσιμος"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "Απών"
@@ -3374,6 +3450,17 @@ msgstr ""
"Το όνομα λογαριασμού που επιλέξατε απορρίφθηκε από τον εξυπηρετητή. Πιθανώς "
"να περιέχει μη έγκυρους χαρακτήρες."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "Αυτό το όνομα συζήτησης χρησιμοποιείται ήδη"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Ψευδώνυμο"
+
msgid "Cannot change nick"
msgstr "Δεν είναι δυνατή η αλλαγή του ψευδωνύμου"
@@ -3651,6 +3738,41 @@ msgstr "Μη έγκυρη πρόκληση από τον εξυπηρετητή"
msgid "SASL error"
msgstr "Σφάλμα SASL"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "Δεν δόθηκε αιτία"
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Μη υποστηριζόμενη έκδοση"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"Αδυναμία δημιουργίας σύνδεσης με τον εξυπηρετητή:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"Αδυναμία δημιουργίας σύνδεσης με τον εξυπηρετητή:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "Αδυναμία δημιουργίας σύνδεσης"
+
+msgid "Unable to create socket"
+msgstr "Αδυναμία δημιουργίας υποδοχέα"
+
+msgid "Write error"
+msgstr "Σφάλμα εγγραφής"
+
msgid "Full Name"
msgstr "Ονοματεπώνυμο"
@@ -3717,6 +3839,10 @@ msgstr "Πελάτης"
msgid "Operating System"
msgstr "Λειτουργικό σύστημα"
+#, fuzzy
+msgid "Local Time"
+msgstr "Τοπικό αρχείο:"
+
msgid "Last Activity"
msgstr "Τελευταία ενέργεια"
@@ -3922,7 +4048,6 @@ msgstr "Ομιλητικός"
msgid "Extended Away"
msgstr "Πολύ απών"
-#, c-format
msgid "Do Not Disturb"
msgstr "Μην ενοχλείτε"
@@ -4047,9 +4172,6 @@ msgid "You require encryption, but it is not available on this server."
msgstr ""
"Απαιτείτε κρυπτογράφηση, αλλά δεν είναι διαθέσιμη σε αυτόν τον εξυπηρετητή."
-msgid "Write error"
-msgstr "Σφάλμα εγγραφής"
-
msgid "Ping timeout"
msgstr "Τέλος χρονικού ορίου για ping"
@@ -4058,14 +4180,9 @@ msgstr "Σφάλμα ανάγνωσης"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"Αδυναμία δημιουργίας σύνδεσης με τον εξυπηρετητή:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "Αδυναμία δημιουργίας υποδοχέα"
msgid "Invalid XMPP ID"
msgstr "Μη έγκυρο XMPP ID"
@@ -4073,6 +4190,10 @@ msgstr "Μη έγκυρο XMPP ID"
msgid "Invalid XMPP ID. Domain must be set."
msgstr ""
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Αποτυχία σύνδεσης με τον εξυπηρετητή."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "Η καταχώρηση του %s@%s ήταν επιτυχής"
@@ -4161,9 +4282,18 @@ msgstr "Γίνεται έγκριση"
msgid "Re-initializing Stream"
msgstr "Επανεκκίνηση ροής"
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr "Δεν εγκρίθηκε"
+msgid "Mood"
+msgstr "Διάθεση"
+
+msgid "Now Listening"
+msgstr "Τώρα ακούει"
+
msgid "Both"
msgstr "Και τα δύο"
@@ -4185,12 +4315,6 @@ msgstr "Καμία"
msgid "Subscription"
msgstr "Εγγραφή"
-msgid "Mood"
-msgstr "Διάθεση"
-
-msgid "Now Listening"
-msgstr "Τώρα ακούει"
-
msgid "Mood Text"
msgstr "Κείμενο διάθεσης"
@@ -4429,15 +4553,21 @@ msgid "Unable to ping user %s"
msgstr "Δεν ήταν δυνατό να γίνει ping στο χρήστη %s"
#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr ""
#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+msgid "Unable to buzz, because %s might be offline."
msgstr ""
#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
+msgstr ""
+
+#, c-format
+msgid "Buzzing %s..."
msgstr ""
#. Yahoo only supports one attention command: the 'buzz'.
@@ -4449,10 +4579,36 @@ msgstr ""
msgid "%s has buzzed you!"
msgstr ""
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "Αδυναμία αποστολής αρχείου σε %s, μη έγκυρο JID"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "Αδυναμία αποστολής αρχείου σε %s, ο χρήστης δεν είναι συνδεδεμένος"
+
#, c-format
-msgid "Buzzing %s..."
+msgid "Unable to initiate media with %s: not subscribed to user presence"
msgstr ""
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "Αποτυχία καταχώρησης"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr ""
+"Παρακαλούμε επιλέξτε την πηγή του %s στο οποίο θέλετε να στείλετε ένα αρχείο"
+
+msgid "Select a Resource"
+msgstr "Επιλογή πηγής"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "Έναρξη _συζήτησης"
+
msgid "config: Configure a chat room."
msgstr "config: Ρύθμιση του δωματίου συζήτησης."
@@ -4607,6 +4763,21 @@ msgstr "Σφάλμα κατά τη συμμετοχή στη συζήτηση %s
msgid "Error in chat %s"
msgstr "Σφάλμα στη συζήτηση %s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "Ένα σφάλμα συνέβη κατά το άνοιγμα του αρχείου."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "Αποτυχία μεταφοράς αρχείου"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Αποτυχία κατά το άνοιγμα του αρχείου '%s': %s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4632,9 +4803,6 @@ msgid "Please select the resource of %s to which you would like to send a file"
msgstr ""
"Παρακαλούμε επιλέξτε την πηγή του %s στο οποίο θέλετε να στείλετε ένα αρχείο"
-msgid "Select a Resource"
-msgstr "Επιλογή πηγής"
-
msgid "Edit User Mood"
msgstr "Επεξεργασία διάθεσης χρήστη"
@@ -4669,9 +4837,6 @@ msgstr "Ενέργειες"
msgid "Select an action"
msgstr "Επιλέξτε μία ενέργεια"
-msgid "Unable to retrieve MSN Address Book"
-msgstr "Αδύνατη η λήψη ενός βιβλίου διευθύνσεων του MSN"
-
#. only notify the user about problems adding to the friends list
#. * maybe we should do something else for other lists, but it probably
#. * won't cause too many problems if we just ignore it
@@ -4913,7 +5078,6 @@ msgstr "Διαβατήριο παιδιών χωρίς γονική συναίν
msgid "Passport account not yet verified"
msgstr "Ο λογαριασμός διαβατηρίου δεν πιστοποιήθηκε"
-#, c-format
msgid "Passport account suspended"
msgstr ""
@@ -6132,7 +6296,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr "Σφάλμα. Δεν είναι εγκατεστημένη η υποστήριξη SSL."
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr "Αυτή η συζήτηση έκλεισε. Δεν είναι δυνατή η αποστολή άλλων μηνυμάτων."
@@ -6400,23 +6563,18 @@ msgstr "Κάμερα"
msgid "Screen Sharing"
msgstr ""
-#, c-format
msgid "Free For Chat"
msgstr "Ελεύθερος για συζήτηση"
-#, c-format
msgid "Not Available"
msgstr "Μη διαθέσιμος"
-#, c-format
msgid "Occupied"
msgstr "Απασχολημένος"
-#, c-format
msgid "Web Aware"
msgstr "Εμφανής στον ιστό"
-#, c-format
msgid "Invisible"
msgstr "Αόρατος"
@@ -6466,7 +6624,7 @@ msgstr ""
"διεύθυνση ηλεκτρονικού ταχυδρομείου, είτε να ξεκινούν με ένα γράμμα και να "
"περιέχουν μόνο γράμματα, αριθμούς και κενά, είτε να περιέχουν μόνο αριθμούς."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr "Μη έγκυρο όνομα χρήστη."
@@ -6482,7 +6640,7 @@ msgstr "Ο λογαριασμός σας είναι προς το παρόν σ
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "Η υπηρεσία AOL Instant Messenger είναι προσωρινά μη διαθέσιμη."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6519,13 +6677,9 @@ msgstr "Δώστε τα 6 ψηφία από τη ψηφιακή οθόνη."
msgid "_OK"
msgstr "_Εντάξει"
-#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
-msgstr ""
-"Αποσυνδεθήκατε πολύ γρήγορα. Ίσως να θέλετε να χρησιμοποιήσετε το TOC μέχρι "
-"να διορθωθεί αυτό. Ελέγξτε το %s για αναβαθμίσεις."
+#, fuzzy, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
+msgstr "Αποσυνδεθήκατε πολύ γρήγορα. Ελέγξτε το %s για αναβαθμίσεις."
msgid "Unable to get a valid AIM login hash."
msgstr "Αδυναμία λήψης ενός έγκυρου hash εισόδου στο AIM."
@@ -6676,7 +6830,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] "Χάσατε %hu μήνυμα από %s για άγνωστο λόγο."
msgstr[1] "Χάσατε %hu μηνύματα από %s για άγνωστο λόγο."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "Αδυναμία αποστολής μηνύματος: %s"
@@ -6992,6 +7146,7 @@ msgstr "_Σύνδεση"
msgid "Get AIM Info"
msgstr "Λήψη πληροφοριών AIM"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "Επεξεργασία σχολίου φίλου"
@@ -7104,7 +7259,6 @@ msgstr ""
msgid "Attempting to connect to %s:%hu."
msgstr "Προσπάθεια σύνδεσης με %s:%hu."
-#, c-format
msgid "Attempting to connect via proxy server."
msgstr "Προσπάθεια σύνδεσης με διαμεσολαβητή."
@@ -7274,6 +7428,38 @@ msgstr "Ενημέρωση"
msgid "Could not change buddy information."
msgstr "Δεν ήταν δυνατή η αλλαγή των πληροφοριών φίλου."
+msgid "Mobile"
+msgstr "Με φορητή συσκευή"
+
+msgid "Note"
+msgstr "Σημείωση"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "Εικονίδιο φίλου"
+
+msgid "Change his/her memo as you like"
+msgstr ""
+
+#, fuzzy
+msgid "_Modify"
+msgstr "Τροποποίηση"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "Τροποποίηση"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "Ο εξυπηρετητής είναι απασχολημένος"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
#, c-format
msgid "%u requires verification"
msgstr "%u απαιτεί έγκριση"
@@ -7582,6 +7768,13 @@ msgstr ""
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr ""
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<p><b>Αρχικός συγγραφέας</b>:<br>\n"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr "<p><i>Και, όλα τα παιδιά στο πίσω δωμάτιο...</i><br>\n"
@@ -7607,6 +7800,10 @@ msgstr "Ανανέωση όλων των QQ Quns"
msgid "About OpenQ"
msgstr "Σχετικά με το OpenQ"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Τροποποίηση διεύθυνσης"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7644,6 +7841,9 @@ msgstr "Εμφάνιση μηνύματος εξυπηρετητή"
msgid "Show server news"
msgstr "Εμφάνιση νέων εξυπηρετητή"
+msgid "Show chat room when msg comes"
+msgstr ""
+
msgid "Keep alive interval (seconds)"
msgstr ""
@@ -7711,7 +7911,6 @@ msgstr ""
"Άγνωστος κωδικός απάντησης κατά την είσοδο (0x%02X):\n"
"%s"
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "Αδυναμία σύνδεσης."
@@ -8610,9 +8809,6 @@ msgstr "Οργανισμός"
msgid "Unit"
msgstr "Μονάδα"
-msgid "Note"
-msgstr "Σημείωση"
-
msgid "Join Chat"
msgstr "Συμμετοχή σε συζήτηση"
@@ -9277,6 +9473,10 @@ msgstr "Δεν ήταν δυνατή η εύρεση του ονόματος τ
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr "Τα ονόματα χρήστη χρηστών SIP δεν πρέπει να περιέχουν κενά ή σύμβολα @"
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "Εμφάνιση μηνύματος εξυπηρετητή"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -9311,197 +9511,13 @@ msgid "Auth Domain"
msgstr ""
#, c-format
-msgid "Looking up %s"
-msgstr "Εύρεση του %s"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Αποτυχία σύνδεσης με %s"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Σύνδεση: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "Αδύνατη η εγγραφή του αρχείου %s."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "Αδύνατη η ανάγνωση του αρχείου %s."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "Πολύ μεγάλο μήνυμα, τα τελευταία %s bytes αποκόπηκαν."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s δεν είναι συνδεδεμένος."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "Η προειδοποίηση του %s δεν επιτρέπεται."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "Το μήνυμα απορρίφθηκε, ξεπεράσατε το όριο ταχύτητας του εξυπηρετητή."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "Η συζήτηση στο %s δεν είναι διαθέσιμη."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "Στέλνετε πολύ γρήγορα μηνύματα σε %s."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "Χάσατε ένα μήνυμα από %s επειδή ήταν πολύ μεγάλο."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "Χάσατε ένα άμεσο μήνυμα από %s επειδή στάλθηκε πολύ γρήγορα."
-
-#, c-format
-msgid "Failure."
-msgstr "Αποτυχία."
-
-#, c-format
-msgid "Too many matches."
-msgstr "Πάρα πολλές αντιστοιχίες."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr ""
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "Η υπηρεσία καταλόγου είναι προσωρινά μη διαθέσιμη."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "Απαγορεύεται η εύρεση email."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "Η λέξη-κλειδί αγνοήθηκε."
-
-#, c-format
-msgid "No keywords."
-msgstr "Δεν υπάρχουν λέξεις κλειδιά."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "Ο χρήστης δεν έχει πληροφορίες καταλόγου."
-
-#, c-format
-msgid "Country not supported."
-msgstr "Η χώρα δεν υποστηρίζεται."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Άγνωστη αποτυχία: %s."
-
-#, c-format
-msgid "Incorrect username or password."
-msgstr "Λανθασμένο όνομα χρήστη ή κωδικός."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "Η υπηρεσία είναι προσωρινά μη διαθέσιμη."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "Έχετε πολύ υψηλό επίπεδο προειδοποίησης για να συνδεθείτε."
-
-#, c-format
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
-msgstr ""
-"Συνδεόσασταν και αποσυνδεόσασταν πολύ γρήγορα. Περιμένετε δέκα λεπτά και "
-"προσπαθήστε ξανά. Αν συνεχίσετε να προσπαθείτε, θα χρειαστεί να περιμένετε "
-"ακόμα περισσότερο."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "Ένα άγνωστο σφάλμα σύνδεσης συνέβη: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "Ένα άγνωστο σφάλμα, %d, συνέβη. Πληροφορίες: %s"
-
-msgid "Invalid Groupname"
-msgstr "Μη έγκυρο όνομα ομάδας"
-
-msgid "Connection Closed"
-msgstr "Η σύνδεση έκλεισε"
-
-msgid "Waiting for reply..."
-msgstr "Αναμονή απάντησης..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr ""
-"Το TOC επέστρεψε από την παύση του. Τώρα μπορείτε να στείλετε μηνύματα ξανά."
-
-msgid "Password Change Successful"
-msgstr "Επιτυχής αλλαγή κωδικού"
-
-msgid "_Group:"
-msgstr "_Ομάδα:"
-
-msgid "Get Dir Info"
-msgstr "Λήψη πληροφοριών καταλόγου"
-
-msgid "Set Dir Info"
-msgstr "Ορισμός πληροφοριών καταλόγου"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "Αδύνατο το άνοιγμα του %s για εγγραφή!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "Αποτυχία μεταφοράς αρχείου. Πιθανώς να ακυρώθηκε από την άλλη πλευρά."
-
-msgid "Could not connect for transfer."
-msgstr "Δεν ήταν δυνατή η σύνδεση για τη μεταφορά."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr ""
-"Δεν ήταν δυνατή η εγγραφή της κεφαλίδας του αρχείου. Το αρχείο δε θα "
-"μεταφερθεί."
-
-msgid "Save As..."
-msgstr "Αποθήκευση ως..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s ζητά %s την αποδοχή %d αρχείου: %s (%.2f %s)%s%s"
-msgstr[1] "%s ζητά %s την αποδοχή %d αρχείων: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s ζητά να του στείλετε ένα αρχείο"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "Πρόσθετο πρωτοκόλλου TOC"
-
-#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
"%s σας έστειλε πρόσκληση με κάμερα, κάτι το οποίο δεν υποστηρίζεται ακόμα."
+msgid "Your SMS was not delivered"
+msgstr ""
+
msgid "Your Yahoo! message did not get sent."
msgstr "Το μήνυμα σας Yahoo! δε στάλθηκε."
@@ -10096,9 +10112,6 @@ msgstr "Μην ενοχλείτε"
msgid "Extended away"
msgstr "Πολύ απών"
-msgid "Mobile"
-msgstr "Με φορητή συσκευή"
-
msgid "Listening to music"
msgstr "Ακούει μουσική"
@@ -10140,18 +10153,6 @@ msgstr "+++ %s δεν είναι πια ανενεργός"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "Σφάλμα ανάγνωσης του %s"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"Ένα σφάλμα συνέβη κατά την ανάγνωση του %s σας. Δεν φορτώθηκε, και το παλιό "
-"αρχείο μετονομάστηκε σε %s~."
-
msgid "Calculating..."
msgstr "Υπολογισμός..."
@@ -10226,6 +10227,14 @@ msgstr "Σφάλμα εγγραφής του %s: %s"
msgid "Unable to connect to %s: %s"
msgstr "Αδυναμία σύνδεσης με %s: %s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+"Ο εξυπηρετητής απαιτεί TLS/SSL για να γίνει σύνδεση. Δε βρέθηκε υποστήριξη "
+"TLS/SSL."
+
#, c-format
msgid " - %s"
msgstr " - %s"
@@ -10259,6 +10268,18 @@ msgstr "Άρνηση σύνδεσης."
msgid "Address already in use."
msgstr "Η διεύθυνση ήδη χρησιμοποιείται."
+#, c-format
+msgid "Error Reading %s"
+msgstr "Σφάλμα ανάγνωσης του %s"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"Ένα σφάλμα συνέβη κατά την ανάγνωση του %s σας. Δεν φορτώθηκε, και το παλιό "
+"αρχείο μετονομάστηκε σε %s~."
+
msgid "Internet Messenger"
msgstr "Αποστολέας μηνυμάτων διαδικτύου"
@@ -10301,10 +10322,8 @@ msgstr "Ειδοποιήσεις νέας α_λληλογραφίας"
msgid "Use this buddy _icon for this account:"
msgstr "Χρήση αυτού του _εικονιδίου φίλου για αυτόν το λογαριασμό."
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "Επιλογές %s"
+msgid "_Advanced"
+msgstr "_Για προχωρημένους"
msgid "Use GNOME Proxy Settings"
msgstr "Χρήση ρυθμίσεων διαμεσολαβητή GNOME"
@@ -10339,9 +10358,6 @@ msgstr "Αν κοιτάξεις από πραγματικά πολύ κοντά"
msgid "you can see the butterflies mating"
msgstr "θα μπορέσεις να δεις τις πεταλούδες να ζευγαρώνουν"
-msgid "Proxy Options"
-msgstr "Επιλογές διαμεσολαβητή"
-
msgid "Proxy _type:"
msgstr "_Τύπος διαμεσολαβητή:"
@@ -10369,8 +10385,9 @@ msgstr "_Βασικά"
msgid "Create _this new account on the server"
msgstr "Δημιουργία αυτού του νέου _λογαριασμού στον εξυπηρετητή"
-msgid "_Advanced"
-msgstr "_Για προχωρημένους"
+#, fuzzy
+msgid "_Proxy"
+msgstr "Διαμεσολαβητής"
msgid "Enabled"
msgstr "Ενεργοποιήθηκε"
@@ -10446,6 +10463,17 @@ msgstr "Λήψη _πληροφοριών"
msgid "I_M"
msgstr "_Μήνυμα"
+#, fuzzy
+msgid "_Audio Call"
+msgstr "_Προσθήκη συζήτησης"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Βιντεοσυνομιλία"
+
msgid "_Send File..."
msgstr "_Αποστολή αρχείου..."
@@ -10582,6 +10610,10 @@ msgstr "/Εργαλεία/_Εφόρμηση φίλων"
msgid "/Tools/_Certificates"
msgstr "/Εργαλεία/_Πιστοποιητικά"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Εργαλεία/Smile_y"
+
msgid "/Tools/Plu_gins"
msgstr "/Εργαλεία/_Πρόσθετα"
@@ -10591,9 +10623,6 @@ msgstr "/Εργαλεία/Π_ροτιμήσεις"
msgid "/Tools/Pr_ivacy"
msgstr "/Εργαλεία/Προσωπικό _απόρρητο"
-msgid "/Tools/Smile_y"
-msgstr "/Εργαλεία/Smile_y"
-
msgid "/Tools/_File Transfers"
msgstr "/Εργαλεία/_Μεταφορές αρχείων"
@@ -10711,8 +10740,8 @@ msgstr "Με το χέρι"
msgid "By status"
msgstr "Ανά κατάσταση"
-msgid "By log size"
-msgstr "Ανά μέγεθος καταγραφής"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10728,6 +10757,9 @@ msgstr "Επανασύνδεση"
msgid "Re-enable"
msgstr "Επανενεργοποίηση"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr "Καλώς ήρθατε πίσω!"
@@ -10819,6 +10851,9 @@ msgstr ""
msgid "A_lias:"
msgstr "_Γνωστός ως:"
+msgid "_Group:"
+msgstr "_Ομάδα:"
+
msgid "Auto_join when account becomes online."
msgstr "Αυτόματη ε_πανασύνδεση όταν ο λογαριασμός συνδέεται."
@@ -10871,14 +10906,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr "Πρόσκληση φίλου στο δωμάτιο συζήτησης"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Παρακαλούμε εισάγετε το όνομα του χρήστη που επιθυμείτε να προσκαλέσετε, "
-"μαζί με ένα προαιρετικό μήνυμα πρόσκλησης."
-
msgid "_Buddy:"
msgstr "_Φίλος:"
@@ -10953,6 +10980,22 @@ msgstr "/Συνομιλία/_Αποθήκευση ως..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Συνομιλία/_Καθαρισμός αναδίφησης"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Συνομιλία/Π_ερισσότερα"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Συνομιλία/Π_ερισσότερα"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Συνομιλία/Π_ερισσότερα"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Συνομιλία/Εμφάνιση _καταγραφής"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Συνομιλία/_Αποστολή αρχείου..."
@@ -11025,6 +11068,18 @@ msgstr "/Συνομιλία"
msgid "/Conversation/View Log"
msgstr "/Συνομιλία/Εμφάνιση καταγραφής"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Συνομιλία/Περισσότερα"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Συνομιλία/Εμφάνιση καταγραφής"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Συνομιλία/Περισσότερα"
+
msgid "/Conversation/Send File..."
msgstr "/Συνομιλία/Αποστολή αρχείου..."
@@ -11209,6 +11264,9 @@ msgstr "καλλιτέχνης"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "υποστήριξη"
@@ -11348,6 +11406,10 @@ msgstr "Γεωργιανά"
msgid "Ubuntu Georgian Translators"
msgstr "Γεωργιανοί μεταφραστές Ubuntu"
+#, fuzzy
+msgid "Khmer"
+msgstr "Άλλο"
+
msgid "Kannada"
msgstr ""
@@ -11369,6 +11431,10 @@ msgstr "Λιθουανικά"
msgid "Macedonian"
msgstr "Μακεδονικά (Σλαβικά)"
+#, fuzzy
+msgid "Mongolian"
+msgstr "Μακεδονικά (Σλαβικά)"
+
msgid "Bokmål Norwegian"
msgstr ""
@@ -11484,7 +11550,24 @@ msgstr ""
"εγγύηση για αυτό το πρόγραμμα.<BR><BR>"
#, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, fuzzy, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin στο irc.freenode.net<BR><BR>"
+
+#, fuzzy, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin στο irc.freenode.net<BR><BR>"
msgid "Current Developers"
@@ -11798,15 +11881,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr "Ενεργοποίηση ειδοποίησης πληκτρολόγησης"
-msgid "_Copy Email Address"
-msgstr "_Αντιγραφή διεύθυνσης email"
-
-msgid "_Open Link in Browser"
-msgstr "_Άνοιγμα στον περιηγητή"
-
-msgid "_Copy Link Location"
-msgstr "_Αντιγραφή τοποθεσίας συνδέσμου"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12055,13 +12129,14 @@ msgstr "_Εξερεύνηση φακέλου καταγραφών"
msgid "%s %s. Try `%s -h' for more information.\n"
msgstr "%s %s. Δοκιμάστε `%s -h' για περισσότερες πληροφορίες.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12086,13 +12161,14 @@ msgstr ""
" --display=DISPLAY Οθόνη X που θα χρησιμοποιηθεί\n"
" -v, --version εμφάνιση τρέχουσας έκδοσης και έξοδος\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12136,14 +12212,27 @@ msgstr ""
msgid "Pidgin"
msgstr "Pidgin"
-msgid "Open All Messages"
-msgstr "Άνοιγμα όλων των μηνυμάτων"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "Υπολογισμός..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
msgstr ""
-"<span weight=\"bold\" size=\"larger\">Έχετε αλληλογραφία!</span>\n"
-"\n"
-"%s"
#, c-format
msgid "%s has %d new message."
@@ -12174,6 +12263,33 @@ msgstr ""
"Έχει επιλεχθεί η 'με το χέρι' εντολή του περιηγητή, αλλά δεν έχει ορισθεί "
"καμία εντολή."
+msgid "Open All Messages"
+msgstr "Άνοιγμα όλων των μηνυμάτων"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr ""
+"<span weight=\"bold\" size=\"larger\">Έχετε αλληλογραφία!</span>\n"
+"\n"
+"%s"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "Νέα εφόρμηση φίλου"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr ""
+"<span weight=\"bold\" size=\"larger\">Έχετε αλληλογραφία!</span>\n"
+"\n"
+"%s"
+
+#, fuzzy
+msgid "No message"
+msgstr "Άγνωστο μήνυμα"
+
msgid "The following plugins will be unloaded."
msgstr "Τα ακόλουθα πρόσθετα θα αποφορτωθούν."
@@ -12222,6 +12338,10 @@ msgstr "<b>Λεπτομέρειες προσθέτου</b>"
msgid "Select a file"
msgstr "Επιλογή αρχείου"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Επεξεργασία εφόρμησης φίλου"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "Εφόρμηση σε"
@@ -12292,6 +12412,50 @@ msgstr "_Κατ' επανάληψη"
msgid "Pounce Target"
msgstr "Στόχος εφόρμησης"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "Ξεκινάει να πληκτρολογεί"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "Κάνει παύση κατά την πληκτρολόγηση"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "Συνδέεται"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s δεν είναι πια ανενεργός (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "Επιστρέφει από απών"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "Σταμάτησε την πληκτρολόγηση"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "Αποσυνδέεται"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "Γίνεται ανενεργός"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "Κατά την απουσία"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Αποστολή μηνύματος"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "Άγνωστο γεγονός εφόρμησης. Παρακαλούμε αναφέρετέ το!"
+
msgid "Smiley theme failed to unpack."
msgstr ""
@@ -12315,6 +12479,12 @@ msgstr "Συντομεύσεις πληκτρολογίου"
msgid "Cl_ose conversations with the Escape key"
msgstr "_Κλείσιμο των συνομιλιών με το Escape"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Λίστα φίλων"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "Εικονίδιο εργαλειοθήκης συστήματος"
@@ -12425,9 +12595,6 @@ msgstr "Δεν είναι δυνατή η εκκίνηση του προγράμ
msgid "Cannot start browser configuration program."
msgstr "Δεν είναι δυνατή η εκκίνηση του προγράμματος ρυθμίσεων περιηγητή."
-msgid "ST_UN server:"
-msgstr "Εξυπηρετητής STUN:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">Παράδειγμα: stunserver.org</span>"
@@ -12452,6 +12619,10 @@ msgstr "_Θύρα εκκίνησης:"
msgid "_End port:"
msgstr "_Θύρα τέλους:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr ""
@@ -12480,6 +12651,10 @@ msgstr "Διαμεσολαβητής"
msgid "No proxy"
msgstr "Χωρίς διαμεσολαβητή"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "_Χρήστης:"
@@ -12638,12 +12813,12 @@ msgstr "Απών και ανενεργός"
msgid "Auto-away"
msgstr "Αυτόματη απουσία"
-msgid "Change status when _idle"
-msgstr "Αλλαγή κατάστασης όταν είμαι _ανενεργός"
-
msgid "_Minutes before becoming idle:"
msgstr "_Λεπτά πριν γίνω ανενεργός:"
+msgid "Change status when _idle"
+msgstr "Αλλαγή κατάστασης όταν είμαι _ανενεργός"
+
msgid "Change _status to:"
msgstr "Αλλαγή _κατάστασης σε:"
@@ -12799,6 +12974,12 @@ msgstr "_Αποθήκευση & Χρήση"
msgid "Status for %s"
msgstr "Κατάσταση %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
msgid "Custom Smiley"
msgstr "Προσαρμοσμένη φατσούλα"
@@ -12808,16 +12989,16 @@ msgstr "Χρειάζονται περισσότερα δεδομένα"
msgid "Please provide a shortcut to associate with the smiley."
msgstr "Παρακαλούμε εισάγετε μία συντόμευση για να συσχετιστεί με τη φατσούλα."
-msgid "Duplicate Shortcut"
-msgstr "Αντιγραφή συντόμευσης"
-
+#, fuzzy, c-format
msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
+"A custom smiley for '%s' already exists. Please use a different shortcut."
msgstr ""
"Υπάρχει ήδη μία προσπαρμοσμένη φατσούλα για την επιλεγμένη συντόμευση. "
"Παρακαλούμε εισάγετε μία διαφορετική συντόμευση."
+msgid "Duplicate Shortcut"
+msgstr "Αντιγραφή συντόμευσης"
+
msgid "Please select an image for the smiley."
msgstr "Παρακαλούμε επιλέξτε μία εικόνα για τη φατσούλα."
@@ -12827,16 +13008,22 @@ msgstr "Επεξεργασία φατσούλας"
msgid "Add Smiley"
msgstr "Προσθήκη φατσούλας"
-msgid "Smiley _Image"
-msgstr "Εικόνα _φατσούλας"
+#, fuzzy
+msgid "_Image:"
+msgstr "Ει_κόνα"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr "_Συντόμευση φατσούλας"
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "Συντόμευση"
msgid "Smiley"
msgstr "Φατσούλα"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "Συντόμευση"
+
msgid "Custom Smiley Manager"
msgstr "Διαχειριστής προσαρμοσμένων φατσουλών"
@@ -12965,6 +13152,16 @@ msgstr ""
"Αποτυχία κατά το φόρτωμα της εικόνας '%s': άγνωστη αιτία, πιθανώς ένα "
"κατεστραμμένο αρχείο εικόνας"
+#, fuzzy
+msgid "_Open Link"
+msgstr "_Άνοιγμα συνδέσμου σε:"
+
+msgid "_Copy Link Location"
+msgstr "_Αντιγραφή τοποθεσίας συνδέσμου"
+
+msgid "_Copy Email Address"
+msgstr "_Αντιγραφή διεύθυνσης email"
+
msgid "Save File"
msgstr "Αποθήκευση αρχείου"
@@ -13954,9 +14151,6 @@ msgstr "_Διατήρηση παραθύρου λίστας φίλων στην
msgid "Only when docked"
msgstr "Μόνο όταν είναι προσαρτημένο"
-msgid "_Flash window when chat messages are received"
-msgstr "Να ανα_βοσβήνει το παράθυρο όταν λαμβάνονται νέα μηνύματα συζήτησης"
-
msgid "Windows Pidgin Options"
msgstr "Επιλογές Windows Pidgin"
@@ -14008,6 +14202,194 @@ msgstr ""
"Αυτό το πρόσθετο είναι χρήσιμο για την αποσφαλμάτωση εξυπηρετητών και "
"πελατών XMPP."
+#~ msgid "Invite message"
+#~ msgstr "Μήνυμα πρόσκλησης"
+
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Παρακαλούμε εισάγετε το όνομα του χρήστη που επιθυμείτε να προσκαλέσετε,\n"
+#~ "μαζί με ένα προαιρετικό μήνυμα πρόσκλησης."
+
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "Αδύνατη η λήψη ενός βιβλίου διευθύνσεων του MSN"
+
+#~ msgid ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+#~ msgstr ""
+#~ "Αποσυνδεθήκατε πολύ γρήγορα. Ίσως να θέλετε να χρησιμοποιήσετε το TOC "
+#~ "μέχρι να διορθωθεί αυτό. Ελέγξτε το %s για αναβαθμίσεις."
+
+#~ msgid "Looking up %s"
+#~ msgstr "Εύρεση του %s"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "Αποτυχία σύνδεσης με %s"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Σύνδεση: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "Αδύνατη η εγγραφή του αρχείου %s."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "Αδύνατη η ανάγνωση του αρχείου %s."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "Πολύ μεγάλο μήνυμα, τα τελευταία %s bytes αποκόπηκαν."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s δεν είναι συνδεδεμένος."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "Η προειδοποίηση του %s δεν επιτρέπεται."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr ""
+#~ "Το μήνυμα απορρίφθηκε, ξεπεράσατε το όριο ταχύτητας του εξυπηρετητή."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "Η συζήτηση στο %s δεν είναι διαθέσιμη."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "Στέλνετε πολύ γρήγορα μηνύματα σε %s."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "Χάσατε ένα μήνυμα από %s επειδή ήταν πολύ μεγάλο."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr "Χάσατε ένα άμεσο μήνυμα από %s επειδή στάλθηκε πολύ γρήγορα."
+
+#~ msgid "Failure."
+#~ msgstr "Αποτυχία."
+
+#~ msgid "Too many matches."
+#~ msgstr "Πάρα πολλές αντιστοιχίες."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "Η υπηρεσία καταλόγου είναι προσωρινά μη διαθέσιμη."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "Απαγορεύεται η εύρεση email."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "Η λέξη-κλειδί αγνοήθηκε."
+
+#~ msgid "No keywords."
+#~ msgstr "Δεν υπάρχουν λέξεις κλειδιά."
+
+#~ msgid "User has no directory information."
+#~ msgstr "Ο χρήστης δεν έχει πληροφορίες καταλόγου."
+
+#~ msgid "Country not supported."
+#~ msgstr "Η χώρα δεν υποστηρίζεται."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Άγνωστη αποτυχία: %s."
+
+#~ msgid "Incorrect username or password."
+#~ msgstr "Λανθασμένο όνομα χρήστη ή κωδικός."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "Η υπηρεσία είναι προσωρινά μη διαθέσιμη."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "Έχετε πολύ υψηλό επίπεδο προειδοποίησης για να συνδεθείτε."
+
+#~ 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 ""
+#~ "Συνδεόσασταν και αποσυνδεόσασταν πολύ γρήγορα. Περιμένετε δέκα λεπτά και "
+#~ "προσπαθήστε ξανά. Αν συνεχίσετε να προσπαθείτε, θα χρειαστεί να "
+#~ "περιμένετε ακόμα περισσότερο."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "Ένα άγνωστο σφάλμα σύνδεσης συνέβη: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "Ένα άγνωστο σφάλμα, %d, συνέβη. Πληροφορίες: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "Μη έγκυρο όνομα ομάδας"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Η σύνδεση έκλεισε"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "Αναμονή απάντησης..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr ""
+#~ "Το TOC επέστρεψε από την παύση του. Τώρα μπορείτε να στείλετε μηνύματα "
+#~ "ξανά."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "Επιτυχής αλλαγή κωδικού"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Λήψη πληροφοριών καταλόγου"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Ορισμός πληροφοριών καταλόγου"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "Αδύνατο το άνοιγμα του %s για εγγραφή!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr ""
+#~ "Αποτυχία μεταφοράς αρχείου. Πιθανώς να ακυρώθηκε από την άλλη πλευρά."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "Δεν ήταν δυνατή η σύνδεση για τη μεταφορά."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr ""
+#~ "Δεν ήταν δυνατή η εγγραφή της κεφαλίδας του αρχείου. Το αρχείο δε θα "
+#~ "μεταφερθεί."
+
+#~ msgid "Save As..."
+#~ msgstr "Αποθήκευση ως..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s ζητά %s την αποδοχή %d αρχείου: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s ζητά %s την αποδοχή %d αρχείων: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s ζητά να του στείλετε ένα αρχείο"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "Πρόσθετο πρωτοκόλλου TOC"
+
+#~ msgid "%s Options"
+#~ msgstr "Επιλογές %s"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Επιλογές διαμεσολαβητή"
+
+#~ msgid "By log size"
+#~ msgstr "Ανά μέγεθος καταγραφής"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_Άνοιγμα στον περιηγητή"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "Εξυπηρετητής STUN:"
+
+#~ msgid "Smiley _Image"
+#~ msgstr "Εικόνα _φατσούλας"
+
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "_Συντόμευση φατσούλας"
+
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "Να ανα_βοσβήνει το παράθυρο όταν λαμβάνονται νέα μηνύματα συζήτησης"
+
#, fuzzy
#~ msgid "Connection to server lost (no data received within %d second)"
#~ msgid_plural ""
diff --git a/po/en_AU.po b/po/en_AU.po
index 902810b743..8374f2eb20 100644
--- a/po/en_AU.po
+++ b/po/en_AU.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin 1.0.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
+"POT-Creation-Date: 2009-04-30 10:37-0400\n"
"PO-Revision-Date: 2005-01-19 07:55+1100\n"
"Last-Translator: Peter (Bleeter) Lawler <trans@six-by-nine.com.au>\n"
"Language-Team: English/AU <trans@six-by-nine.com.au>\n"
@@ -33,7 +33,7 @@ msgid ""
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -637,21 +637,6 @@ msgid "Send To"
msgstr "_Send As"
#, fuzzy
-msgid "Invite message"
-msgstr "(1 message)"
-
-msgid "Invite"
-msgstr "Invite"
-
-#, fuzzy
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-
-#, fuzzy
msgid "Conversation"
msgstr "Conversations"
@@ -914,6 +899,42 @@ msgid "System Log"
msgstr "System Log"
#, fuzzy
+msgid "Calling ... "
+msgstr "Calculating..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "Accept"
+
+#, fuzzy
+msgid "Reject"
+msgstr "Reset"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "You have parted the channel%s%s"
+
+msgid "call: Make an audio call."
+msgstr ""
+
+#, fuzzy
msgid "Emails"
msgstr "Email"
@@ -951,6 +972,9 @@ msgstr "Connecting"
msgid "IM"
msgstr "IM"
+msgid "Invite"
+msgstr "Invite"
+
#, fuzzy
msgid "(none)"
msgstr "(no name)"
@@ -1174,7 +1198,6 @@ msgstr "%s has gone away. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s wants to send you %s (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "Unknown pounce event. Please report this!"
@@ -1230,7 +1253,6 @@ msgstr "_Minutes before setting away:"
msgid "Change status to"
msgstr "Change Address To:"
-#. Conversations
msgid "Conversations"
msgstr "Conversations"
@@ -1581,7 +1603,6 @@ msgstr ""
"When a new conversation is opened this plugin will insert the last "
"conversation into the current conversation."
-#, c-format
msgid "Online"
msgstr "Online"
@@ -1630,6 +1651,28 @@ msgstr ""
msgid "Lastlog plugin."
msgstr ""
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
#, fuzzy
msgid "accounts"
msgstr "Accounts"
@@ -1733,14 +1776,6 @@ msgstr "Accept chat invitation?"
msgid "SSL Certificate Verification"
msgstr ""
-#. Number of actions
-msgid "Accept"
-msgstr "Accept"
-
-#, fuzzy
-msgid "Reject"
-msgstr "Reset"
-
msgid "_View Certificate..."
msgstr ""
@@ -1878,6 +1913,18 @@ msgstr "%s left the room."
msgid "%s left the room (%s)."
msgstr "%s left the room (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Initiate Conference"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+
#, fuzzy, c-format
msgid "Failed to get connection: %s"
msgstr "Failed to set cmodes for %s"
@@ -2016,7 +2063,6 @@ msgstr "Accept file transfer request from %s?"
msgid "Transfer of file %s complete"
msgstr "Transfer of file %s complete"
-#, c-format
msgid "File transfer complete"
msgstr "File transfer complete"
@@ -2024,7 +2070,6 @@ msgstr "File transfer complete"
msgid "You canceled the transfer of %s"
msgstr "You canceled the transfer of %s"
-#, c-format
msgid "File transfer cancelled"
msgstr "File transfer cancelled"
@@ -2213,7 +2258,6 @@ msgstr "(%s) %s <AUTO-REPLY>: %s\n"
msgid "You are using %s, but this plugin requires %s."
msgstr ""
-#, c-format
msgid "This plugin has not defined an ID."
msgstr ""
@@ -2708,6 +2752,32 @@ msgstr ""
msgid "Do not ask. Always save in pounce."
msgstr ""
+#, fuzzy
+msgid "One Time Password"
+msgstr "Change Password"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2913,7 +2983,6 @@ msgid ""
"Unable to establish connection with the local mDNS server. Is it running?"
msgstr ""
-#. Creating the options for the protocol
#, fuzzy
msgid "First name"
msgstr "First name:"
@@ -2951,6 +3020,11 @@ msgstr "Yahoo Protocol Plugin"
msgid "Purple Person"
msgstr "New Person"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "Locality"
+
msgid "Bonjour"
msgstr ""
@@ -3139,13 +3213,13 @@ msgstr "Remove the chat from your buddy list"
msgid "Add to chat..."
msgstr "Add a C_hat"
+#. Global
msgid "Available"
msgstr "Available"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "Away"
@@ -3512,6 +3586,17 @@ msgid ""
"invalid characters."
msgstr ""
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "That file already exists"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Nickname"
+
msgid "Cannot change nick"
msgstr "Cannot change nick"
@@ -3792,6 +3877,37 @@ msgstr "Invalid challenge from server"
msgid "SASL error"
msgstr "Read error"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "No reason given."
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Unsupported Version"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr "Unable to make SSL connection to server."
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "Unable to create new connection."
+
+msgid "Unable to create socket"
+msgstr "Unable to create socket"
+
+msgid "Write error"
+msgstr "Write error"
+
msgid "Full Name"
msgstr "Full Name"
@@ -3860,6 +3976,10 @@ msgstr "City"
msgid "Operating System"
msgstr "Hide Operating System"
+#, fuzzy
+msgid "Local Time"
+msgstr "Local Users"
+
msgid "Last Activity"
msgstr ""
@@ -4097,7 +4217,6 @@ msgstr "Chatty"
msgid "Extended Away"
msgstr "Extended Away"
-#, c-format
msgid "Do Not Disturb"
msgstr "Do Not Disturb"
@@ -4227,9 +4346,6 @@ msgstr "Find Rooms"
msgid "You require encryption, but it is not available on this server."
msgstr ""
-msgid "Write error"
-msgstr "Write error"
-
#, fuzzy
msgid "Ping timeout"
msgstr "Plain text"
@@ -4239,19 +4355,20 @@ msgstr "Read Error"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-msgid "Unable to create socket"
-msgstr "Unable to create socket"
-
msgid "Invalid XMPP ID"
msgstr "Invalid XMPP ID"
msgid "Invalid XMPP ID. Domain must be set."
msgstr ""
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Unable to connect to server."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "Registration of %s@%s successful"
@@ -4344,9 +4461,18 @@ msgstr "Authenticating"
msgid "Re-initializing Stream"
msgstr "Re-initialising Stream"
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr "Not Authorised"
+msgid "Mood"
+msgstr "Mood"
+
+msgid "Now Listening"
+msgstr ""
+
msgid "Both"
msgstr "Both"
@@ -4368,12 +4494,6 @@ msgstr "None"
msgid "Subscription"
msgstr "Subscription"
-msgid "Mood"
-msgstr "Mood"
-
-msgid "Now Listening"
-msgstr ""
-
#, fuzzy
msgid "Mood Text"
msgstr "Mood"
@@ -4617,18 +4737,24 @@ msgstr "Unable to kick user %s"
msgid "Unable to ping user %s"
msgstr "Unable to ban user %s"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
+msgstr "Unable to play sound because the chosen file (%s) does not exist."
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
+msgstr "Unable to play sound because the chosen file (%s) does not exist."
#, fuzzy, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "Unable to play sound because the chosen file (%s) does not exist."
+#, c-format
+msgid "Buzzing %s..."
+msgstr ""
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
#, fuzzy
@@ -4639,9 +4765,36 @@ msgstr "Buzz!!"
msgid "%s has buzzed you!"
msgstr "The user has blocked you"
-#, c-format
-msgid "Buzzing %s..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "Unable to send message to %s:"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "Unable to send file to %s, user does not support file transfers"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr "Unable to send file to %s, user does not support file transfers"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "Registration Failed"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
msgstr ""
+"Please enter the screen name of the person whose info you would like to view."
+
+#, fuzzy
+msgid "Select a Resource"
+msgstr "Select a file"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "Initiate _Chat"
msgid "config: Configure a chat room."
msgstr "config: Configure a chat room."
@@ -4801,6 +4954,21 @@ msgstr "Error joining chat %s"
msgid "Error in chat %s"
msgstr "Error in chat %s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "An error occurred while opening the file."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "File transfer cancelled"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Failed to store image: %s\n"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr "Unable to send file to %s, user does not support file transfers"
@@ -4826,10 +4994,6 @@ msgstr ""
"Please enter the screen name of the person whose info you would like to view."
#, fuzzy
-msgid "Select a Resource"
-msgstr "Select a file"
-
-#, fuzzy
msgid "Edit User Mood"
msgstr "User Modes"
@@ -4869,9 +5033,20 @@ msgstr "Accounts"
msgid "Select an action"
msgstr "Select a file"
+#. 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
+#, fuzzy, c-format
+msgid "Unable to add \"%s\"."
+msgstr "Unable to read file %s."
+
#, fuzzy
-msgid "Unable to retrieve MSN Address Book"
-msgstr "Unable To Retrieve Buddy List"
+msgid "Buddy Add error"
+msgstr "Buddy List Error"
+
+#, fuzzy
+msgid "The username specified does not exist."
+msgstr "The SecurID key entered is invalid."
#, c-format
msgid "Buddy list synchronization issue in %s (%s)"
@@ -5101,7 +5276,7 @@ msgstr "Kids Passport without parental consent"
msgid "Passport account not yet verified"
msgstr "Passport account not yet verified"
-#, fuzzy, c-format
+#, fuzzy
msgid "Passport account suspended"
msgstr "Passport account not yet verified"
@@ -5195,6 +5370,13 @@ msgstr "Send a mobile message."
msgid "Page"
msgstr "Page"
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "Warn"
+
msgid "Has you"
msgstr "Has you"
@@ -5238,6 +5420,14 @@ msgid "Album"
msgstr ""
#, fuzzy
+msgid "Game Title"
+msgstr "Title"
+
+#, fuzzy
+msgid "Office Title"
+msgstr "Title"
+
+#, fuzzy
msgid "Set Friendly Name..."
msgstr "Set Friendly Name"
@@ -5458,8 +5648,9 @@ msgstr ""
"Pidgin could not find any information in the user's profile. The user most "
"likely does not exist."
-msgid "Profile URL"
-msgstr "Profile URL"
+#, fuzzy
+msgid "View web profile"
+msgstr "Not allowed when offline"
#. *< type
#. *< ui_requirement
@@ -5728,13 +5919,6 @@ msgstr "Add to Address Book"
msgid "Do you want to delete this buddy from your address book as well?"
msgstr "Do you want to add this buddy to your buddy list?"
-#. 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
-#, fuzzy, c-format
-msgid "Unable to add \"%s\"."
-msgstr "Unable to read file %s."
-
#, fuzzy
msgid "The username specified is invalid."
msgstr "The SecurID key entered is invalid."
@@ -5742,6 +5926,9 @@ msgstr "The SecurID key entered is invalid."
msgid "This Hotmail account may not be active."
msgstr ""
+msgid "Profile URL"
+msgstr "Profile URL"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5755,16 +5942,13 @@ msgstr ""
msgid "MSN Protocol Plugin"
msgstr "MSN Protocol Plugin"
-msgid "Missing Cipher"
-msgstr ""
-
-msgid "The RC4 cipher could not be found"
+#, c-format
+msgid "No such user: %s"
msgstr ""
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
-msgstr ""
+#, fuzzy
+msgid "User lookup"
+msgstr "User Rooms"
#, fuzzy
msgid "Reading challenge"
@@ -5778,11 +5962,19 @@ msgstr "Invalid challenge from server"
msgid "Logging in"
msgstr "Logging"
-#, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] ""
-msgstr[1] ""
+#, fuzzy
+msgid "MySpaceIM - No Username Set"
+msgstr "No screenname given."
+
+msgid "You appear to have no MySpace username."
+msgstr ""
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr ""
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr "You were disconnected from the server."
#. Can't write _()'d strings in array initializers. Workaround.
#, fuzzy
@@ -5805,14 +5997,22 @@ msgid "MySpace"
msgstr ""
#, fuzzy
-msgid "MySpaceIM - No Username Set"
-msgstr "No screenname given."
+msgid "IM Friends"
+msgstr "_IM windows"
-msgid "You appear to have no MySpace username."
-msgstr ""
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+msgstr[1] ""
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
-msgstr ""
+#, fuzzy
+msgid "Add contacts from server"
+msgstr "Invalid response from server."
#. The session is now set up, ready to be connected. This emits the
#. * signedOn signal, so clients can now do anything with msimprpl, and
@@ -5837,6 +6037,22 @@ msgid "MySpaceIM Error"
msgstr ""
#, fuzzy
+msgid "Invalid input condition"
+msgstr "Finalising connection"
+
+#, fuzzy
+msgid "Read buffer full (2)"
+msgstr "Queue full"
+
+#, fuzzy
+msgid "Unparseable message"
+msgstr "Unable to parse message"
+
+#, fuzzy, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr "Couldn't connect to host"
+
+#, fuzzy
msgid "Failed to add buddy"
msgstr "Failed to join buddy in chat"
@@ -5848,14 +6064,6 @@ msgstr "Import Buddy List from Server"
msgid "persist command failed"
msgstr "Switchboard failed"
-#, c-format
-msgid "No such user: %s"
-msgstr ""
-
-#, fuzzy
-msgid "User lookup"
-msgstr "User Rooms"
-
#, fuzzy
msgid "Failed to remove buddy"
msgstr "Failed to join buddy in chat"
@@ -5867,39 +6075,16 @@ msgstr ""
msgid "blocklist command failed"
msgstr "Switchboard failed"
-#, fuzzy
-msgid "Invalid input condition"
-msgstr "Finalising connection"
-
-#, fuzzy
-msgid "Read buffer full (2)"
-msgstr "Queue full"
-
-#, fuzzy
-msgid "Unparseable message"
-msgstr "Unable to parse message"
-
-#, fuzzy, c-format
-msgid "Couldn't connect to host: %s (%d)"
-msgstr "Couldn't connect to host"
+msgid "Missing Cipher"
+msgstr ""
-#, fuzzy
-msgid "IM Friends"
-msgstr "_IM windows"
+msgid "The RC4 cipher could not be found"
+msgstr ""
-#, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-msgstr[1] ""
-
-#, fuzzy
-msgid "Add contacts from server"
-msgstr "Invalid response from server."
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
msgid "Add friends from MySpace.com"
msgstr ""
@@ -5947,9 +6132,6 @@ msgstr "Larger font size"
msgid "User"
msgstr "Users"
-msgid "Profile"
-msgstr "Profile"
-
#, fuzzy
msgid "Headline"
msgstr "Decline"
@@ -5965,17 +6147,6 @@ msgstr ""
msgid "Client Version"
msgstr "Close conversation"
-#. Protocol won't log in now without a username set.. Disconnect
-#, fuzzy
-msgid "No username set"
-msgstr "No screenname given."
-
-msgid "MySpaceIM - Please Set a Username"
-msgstr ""
-
-msgid "Please enter a username to check its availability:"
-msgstr ""
-
#, fuzzy
msgid "MySpaceIM - Username Available"
msgstr "Service Unavailable"
@@ -5986,6 +6157,9 @@ msgstr ""
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr ""
+msgid "MySpaceIM - Please Set a Username"
+msgstr ""
+
#, fuzzy
msgid "This username is unavailable."
msgstr "This theme has no available smileys."
@@ -5994,6 +6168,14 @@ msgstr "This theme has no available smileys."
msgid "Please try another username:"
msgstr "Please enter a new name for the selected group."
+#. Protocol won't log in now without a username set.. Disconnect
+#, fuzzy
+msgid "No username set"
+msgstr "No screenname given."
+
+msgid "Please enter a username to check its availability:"
+msgstr ""
+
#. TODO: icons for each zap
#. Lots of comments for translators:
#. Zap means "to strike suddenly and forcefully as if with a
@@ -6388,7 +6570,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr "Error. SSL support is not installed."
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr "This conference has been closed. No more messages can be sent."
@@ -6655,23 +6836,18 @@ msgstr "Camera"
msgid "Screen Sharing"
msgstr "Screen Name"
-#, c-format
msgid "Free For Chat"
msgstr "Free For Chat"
-#, c-format
msgid "Not Available"
msgstr "Not Available"
-#, c-format
msgid "Occupied"
msgstr "Occupied"
-#, c-format
msgid "Web Aware"
msgstr "Web Aware"
-#, c-format
msgid "Invisible"
msgstr "Invisible"
@@ -6717,7 +6893,7 @@ msgstr ""
"invalid. Screen names must either start with a letter and contain only "
"letters, numbers and spaces, or contain only numbers."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
#, fuzzy
msgid "Invalid username."
@@ -6734,7 +6910,7 @@ msgstr "Your account is currently suspended."
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "The AOL Instant Messenger service is temporarily unavailable."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6769,10 +6945,8 @@ msgstr "Enter the 6 digit number from the digital display."
msgid "_OK"
msgstr "OK"
-#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
+#, fuzzy, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
msgstr ""
"You may be disconnected shortly. You may want to use TOC until this is "
"fixed. Check %s for updates."
@@ -6923,7 +7097,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] "You missed %hu message from %s for an unknown reason."
msgstr[1] "You missed %hu message from %s for an unknown reason."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "Unable to send message: %s"
@@ -6945,6 +7119,9 @@ msgstr "Online Since"
msgid "Member Since"
msgstr "Member Since"
+msgid "Profile"
+msgstr "Profile"
+
msgid "Your AIM connection may be lost."
msgstr "Your AIM connection may be lost."
@@ -7098,13 +7275,13 @@ msgid_plural ""
"The maximum profile length of %d bytes has been exceeded. It has been "
"truncated for you."
msgstr[0] ""
-"The maximum profile length of %d byte has been exceeded. Pidgin has truncated "
-"it for you.The maximum profile length of %d bytes has been exceeded. Pidgin "
-"has truncated it for you."
+"The maximum profile length of %d byte has been exceeded. Pidgin has "
+"truncated it for you.The maximum profile length of %d bytes has been "
+"exceeded. Pidgin has truncated it for you."
msgstr[1] ""
-"The maximum profile length of %d byte has been exceeded. Pidgin has truncated "
-"it for you.The maximum profile length of %d bytes has been exceeded. Pidgin "
-"has truncated it for you."
+"The maximum profile length of %d byte has been exceeded. Pidgin has "
+"truncated it for you.The maximum profile length of %d bytes has been "
+"exceeded. Pidgin has truncated it for you."
msgid "Profile too long."
msgstr "Profile too long."
@@ -7242,6 +7419,7 @@ msgstr "Connect"
msgid "Get AIM Info"
msgstr "Get Info"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "Edit Buddy Comment"
@@ -7357,7 +7535,7 @@ msgstr "Asking %s to connect to us at %s:%hu for Direct IM."
msgid "Attempting to connect to %s:%hu."
msgstr "Attempting to connect to %s at %s:%hu for Direct IM."
-#, fuzzy, c-format
+#, fuzzy
msgid "Attempting to connect via proxy server."
msgstr "Attempting to connect to %s at %s:%hu for Direct IM."
@@ -7467,7 +7645,7 @@ msgstr "Opera"
msgid "Visible"
msgstr "Invisible"
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
#, fuzzy
@@ -7563,17 +7741,51 @@ msgstr "Last Updated"
msgid "Could not change buddy information."
msgstr "Please enter a buddy to pounce."
-#, c-format
-msgid "%d needs Q&A"
+#, fuzzy
+msgid "Mobile"
+msgstr "Mobile Phone"
+
+msgid "Note"
+msgstr "Note"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "Buddy Icon"
+
+msgid "Change his/her memo as you like"
msgstr ""
#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "Add Buddy"
+msgid "_Modify"
+msgstr "_Modify"
-msgid "Input answer here"
+#, fuzzy
+msgid "Memo Modify"
+msgstr "_Modify"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "Server busy"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
msgstr ""
+#, fuzzy, c-format
+msgid "%u requires verification"
+msgstr "Request Authorisation"
+
+#, fuzzy
+msgid "Add buddy question"
+msgstr "Add buddy to your list?"
+
+#, fuzzy
+msgid "Enter answer here"
+msgstr "Cannot send a directory."
+
msgid "Send"
msgstr "Send"
@@ -7585,19 +7797,20 @@ msgstr "Invalid password"
msgid "Authorization denied message:"
msgstr "Authorisation Denied Message:"
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr ""
#, fuzzy, c-format
-msgid "%d needs authentication"
+msgid "%u needs authorization"
msgstr "Starting authentication"
#, fuzzy
msgid "Add buddy authorize"
msgstr "Add buddy to your list?"
-msgid "Input request here"
-msgstr ""
+#, fuzzy
+msgid "Enter request here"
+msgstr "Enter a Conference Server"
#, fuzzy
msgid "Would you be my friend?"
@@ -7620,7 +7833,7 @@ msgid "Failed sending authorize"
msgstr "Please authorise me!"
#, fuzzy, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr "Failed to join buddy in chat"
#, fuzzy, c-format
@@ -7666,6 +7879,10 @@ msgid "You can only search for permanent Qun\n"
msgstr ""
#, fuzzy
+msgid "(Invalid UTF-8 string)"
+msgstr "Invalid proxy settings"
+
+#, fuzzy
msgid "Not member"
msgstr "Member Since"
@@ -7710,15 +7927,18 @@ msgstr ""
msgid "Join QQ Qun"
msgstr "Join Chat"
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
+msgid "Input request here"
msgstr ""
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "Telephone Number"
+
msgid "Successfully joined Qun"
msgstr ""
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
#, fuzzy
@@ -7729,7 +7949,7 @@ msgstr "Sound Options"
msgid "Failed:"
msgstr "Failed"
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
#, fuzzy
@@ -7741,11 +7961,12 @@ msgid ""
"this operation will eventually remove this Qun."
msgstr ""
-msgid "Sorry, you are not our style ..."
-msgstr ""
+#, fuzzy
+msgid "Sorry, you are not our style"
+msgstr "Sorry, I ran out for a bit!"
#, fuzzy
-msgid "Successfully changed Qun member"
+msgid "Successfully changed Qun members"
msgstr "Telephone Number"
#, fuzzy
@@ -7756,7 +7977,7 @@ msgid "You have successfully created a Qun"
msgstr ""
#, fuzzy
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr "Would you like to join the conversation?"
#, fuzzy
@@ -7764,28 +7985,28 @@ msgid "Setup"
msgstr "_Set"
#, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr ""
#, c-format
-msgid "%d request to join Qun %d"
+msgid "%u request to join Qun %u"
msgstr ""
#, fuzzy, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr "Failed to join buddy in chat"
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr "Remove Buddy"
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "Remove Buddy"
#, fuzzy, c-format
msgid "Unknown-%d"
@@ -7905,6 +8126,13 @@ msgstr "<b>User:</b> %s<br>"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<b>Alias:</b> %s<br>"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<b>User:</b> %s<br>"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7912,7 +8140,7 @@ msgid "<i>Feel free to join us!</i> :)"
msgstr ""
#, fuzzy, c-format
-msgid "About OpenQ r%s"
+msgid "About OpenQ %s"
msgstr "About Pidgin"
#, fuzzy
@@ -7933,6 +8161,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "About Pidgin"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Home Address"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7964,7 +8196,6 @@ msgstr ""
msgid "QQ2008"
msgstr ""
-#. #endif
#, fuzzy
msgid "Connect by TCP"
msgstr "Connecting"
@@ -7977,6 +8208,9 @@ msgstr "Show fewer options"
msgid "Show server news"
msgstr "Show fewer options"
+msgid "Show chat room when msg comes"
+msgstr ""
+
#, fuzzy
msgid "Keep alive interval (seconds)"
msgstr "Reading error"
@@ -7986,11 +8220,7 @@ msgid "Update interval (seconds)"
msgstr "Reading error"
#, fuzzy
-msgid "Can not decrypt server reply"
-msgstr "Cannot get server information"
-
-#, fuzzy
-msgid "Can not decrypt get server reply"
+msgid "Cannot decrypt server reply"
msgstr "Cannot get server information"
#, c-format
@@ -8013,21 +8243,23 @@ msgid "Activation required"
msgstr "Registration Required"
#, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr ""
#, fuzzy
-msgid "Keep alive error"
-msgstr "Reading error"
+msgid "Could not decrypt server reply"
+msgstr "Cannot get server information"
-msgid "Requesting captcha ..."
-msgstr ""
+#, fuzzy
+msgid "Requesting captcha"
+msgstr "Request ambiguous"
-msgid "Checking code of captcha ..."
+msgid "Checking captcha"
msgstr ""
-msgid "Failed captcha verify"
-msgstr ""
+#, fuzzy
+msgid "Failed captcha verification"
+msgstr "Failed Yahoo! Authentication"
#, fuzzy
msgid "Captcha Image"
@@ -8037,7 +8269,7 @@ msgstr "Save Image"
msgid "Enter code"
msgstr "Change Password"
-msgid "QQ Captcha Verifing"
+msgid "QQ Captcha Verification"
msgstr ""
#, fuzzy
@@ -8045,16 +8277,15 @@ msgid "Enter the text from the image"
msgstr "Please enter the name of the group to be added."
#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
+msgid "Unknown reply when checking password (0x%02X)"
msgstr ""
#, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
msgstr ""
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "Unable to connect."
@@ -8062,12 +8293,6 @@ msgstr "Unable to connect."
msgid "Socket error"
msgstr "Unknown Error"
-#, fuzzy, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr "You were disconnected from the server."
-
#, fuzzy
msgid "Unable to read from socket"
msgstr "Unable to read socket"
@@ -8081,11 +8306,11 @@ msgid "Connection lost"
msgstr "Connection Closed"
#, fuzzy
-msgid "Get server ..."
+msgid "Getting server"
msgstr "Set User Info..."
#, fuzzy
-msgid "Request token"
+msgid "Requesting token"
msgstr "Request denied"
#, fuzzy
@@ -8097,17 +8322,13 @@ msgid "Invalid server or port"
msgstr "Invalid username or password"
#, fuzzy
-msgid "Connecting server ..."
-msgstr "Connect server"
+msgid "Connecting to server"
+msgstr "Connecting to SILC Server"
#, fuzzy
msgid "QQ Error"
msgstr "Read Error"
-#, fuzzy
-msgid "Failed to send IM."
-msgstr "Failed to join chat"
-
#, fuzzy, c-format
msgid ""
"Server News:\n"
@@ -8117,6 +8338,10 @@ msgid ""
msgstr "ICQ Server Relay"
#, fuzzy, c-format
+msgid "%s:%s"
+msgstr "%s on %s (%s)"
+
+#, fuzzy, c-format
msgid "From %s:"
msgstr "From"
@@ -8126,32 +8351,30 @@ msgid ""
"%s"
msgstr "Server Information"
-msgid "Unknow SERVER CMD"
-msgstr ""
+#, fuzzy
+msgid "Unknown SERVER CMD"
+msgstr "Unknown reason."
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
#, fuzzy
msgid "QQ Qun Command"
msgstr "Command"
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr ""
-
-msgid "Can not decrypt login reply"
-msgstr ""
+#, fuzzy
+msgid "Could not decrypt login reply"
+msgstr "Cannot get server information"
#, fuzzy
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr "Unknown reason."
#, fuzzy
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr "Unknown reason."
#, fuzzy, c-format
@@ -9003,9 +9226,6 @@ msgstr "Organisation"
msgid "Unit"
msgstr "Unit"
-msgid "Note"
-msgstr "Note"
-
msgid "Join Chat"
msgstr "Join Chat"
@@ -9683,6 +9903,10 @@ msgstr "Unable to resolve hostname."
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr "IRC nicks may not contain whitespace"
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "Show fewer options"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -9724,192 +9948,10 @@ msgid "Auth Domain"
msgstr "Automatic"
#, c-format
-msgid "Looking up %s"
-msgstr "Looking up %s"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Connect to %s failed"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Signon: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "Unable to write file %s."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "Unable to read file %s."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "Message too long, last %s bytes truncated."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s not currently logged in."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "Warning of %s not allowed."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "A message has been dropped, you are exceeding the server speed limit."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "Chat in %s is not available."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "You are sending messages too fast to %s."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "You missed an IM from %s because it was too big."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "You missed an IM from %s because it was sent too fast."
-
-#, c-format
-msgid "Failure."
-msgstr "Failure."
-
-#, c-format
-msgid "Too many matches."
-msgstr "Too many matches."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "Need more qualifiers."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "Dir service temporarily unavailable."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "Email lookup restricted."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "Keyword ignored."
-
-#, c-format
-msgid "No keywords."
-msgstr "No keywords."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "User has no directory information."
-
-#, c-format
-msgid "Country not supported."
-msgstr "Country not supported."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Failure unknown: %s."
-
-#, fuzzy, c-format
-msgid "Incorrect username or password."
-msgstr "Incorrect nickname or password."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "The service is temporarily unavailable."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "Your warning level is currently too high to log in."
-
-#, 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."
+msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
-"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."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "An unknown signon error has occurred: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "An unknown error, %d, has occurred. Info: %s"
-
-#, fuzzy
-msgid "Invalid Groupname"
-msgstr "Invalid group"
-
-msgid "Connection Closed"
-msgstr "Connection Closed"
-
-msgid "Waiting for reply..."
-msgstr "Waiting for reply..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "TOC has come back from its pause. You may now send messages again."
-
-msgid "Password Change Successful"
-msgstr "Password Change Successful"
-
-msgid "_Group:"
-msgstr "_Group:"
-
-msgid "Get Dir Info"
-msgstr "Get Dir Info"
-
-msgid "Set Dir Info"
-msgstr "Set Dir Info"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "Could not open %s for writing!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "File transfer failed; other side probably canceled."
-
-msgid "Could not connect for transfer."
-msgstr "Could not connect for transfer."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "Could not write file header. The file will not be transferred."
-
-#, fuzzy
-msgid "Save As..."
-msgstr "Save Icon As..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgstr[1] "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s requests you to send them a file"
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "TOC Protocol Plugin"
-
-#, c-format
-msgid "%s has sent you a webcam invite, which is not yet supported."
+msgid "Your SMS was not delivered"
msgstr ""
msgid "Your Yahoo! message did not get sent."
@@ -10195,14 +10237,9 @@ msgstr "Cool Link 3"
msgid "Last Update"
msgstr "Last Updated"
-#, c-format
-msgid "User information for %s unavailable"
-msgstr "User information for %s unavailable"
-
#, fuzzy
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr ""
"Sorry, this profile seems to be in a language that is not supported at this "
"time."
@@ -10543,10 +10580,6 @@ msgstr "Do Not Disturb"
msgid "Extended away"
msgstr "Extended Away"
-#, fuzzy
-msgid "Mobile"
-msgstr "Mobile Phone"
-
msgid "Listening to music"
msgstr ""
@@ -10588,20 +10621,6 @@ msgstr "%s became unidle"
msgid "%x %X"
msgstr ""
-#, fuzzy, c-format
-msgid "Error Reading %s"
-msgstr ""
-"Error reading %s: \n"
-"%s.\n"
-
-#, 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 ""
-"An error was encountered parsing your buddy list. It has not been loaded, "
-"and the old file has moved to blist.xml~."
-
msgid "Calculating..."
msgstr "Calculating..."
@@ -10680,6 +10699,12 @@ msgstr ""
msgid "Unable to connect to %s: %s"
msgstr "Unable to connect to server."
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr "Server requires TLS/SSL for login. No TLS/SSL support found."
+
#, c-format
msgid " - %s"
msgstr ""
@@ -10713,6 +10738,20 @@ msgstr "Connection Closed"
msgid "Address already in use."
msgstr "That file already exists"
+#, fuzzy, c-format
+msgid "Error Reading %s"
+msgstr ""
+"Error reading %s: \n"
+"%s.\n"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"An error was encountered parsing your buddy list. It has not been loaded, "
+"and the old file has moved to blist.xml~."
+
#, fuzzy
msgid "Internet Messenger"
msgstr "Instant Messagers"
@@ -10762,10 +10801,9 @@ msgstr "New mail notifications"
msgid "Use this buddy _icon for this account:"
msgstr ""
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s Options"
+#, fuzzy
+msgid "_Advanced"
+msgstr "_Cancel"
#, fuzzy
msgid "Use GNOME Proxy Settings"
@@ -10801,9 +10839,6 @@ msgstr "If you look real closely"
msgid "you can see the butterflies mating"
msgstr "you can see the butterflies mating"
-msgid "Proxy Options"
-msgstr "Proxy Options"
-
msgid "Proxy _type:"
msgstr "Proxy _type:"
@@ -10834,8 +10869,8 @@ msgid "Create _this new account on the server"
msgstr ""
#, fuzzy
-msgid "_Advanced"
-msgstr "_Cancel"
+msgid "_Proxy"
+msgstr "No Proxy"
#, fuzzy
msgid "Enabled"
@@ -10905,6 +10940,17 @@ msgid "I_M"
msgstr "I_M"
#, fuzzy
+msgid "_Audio Call"
+msgstr "Add Chat"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Video Chat"
+
+#, fuzzy
msgid "_Send File..."
msgstr "_Send File"
@@ -11062,6 +11108,10 @@ msgid "/Tools/_Certificates"
msgstr "/Tools/Pr_eferences"
#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Tools/_Away"
+
+#, fuzzy
msgid "/Tools/Plu_gins"
msgstr "/Tools/Plugin Actions"
@@ -11071,10 +11121,6 @@ msgstr "/Tools/Pr_eferences"
msgid "/Tools/Pr_ivacy"
msgstr "/Tools/Pr_ivacy"
-#, fuzzy
-msgid "/Tools/Smile_y"
-msgstr "/Tools/_Away"
-
msgid "/Tools/_File Transfers"
msgstr "/Tools/_File Transfers"
@@ -11207,8 +11253,8 @@ msgstr "Manual"
msgid "By status"
msgstr "By status"
-msgid "By log size"
-msgstr "By log size"
+msgid "By recent log activity"
+msgstr ""
#, fuzzy, c-format
msgid "%s disconnected"
@@ -11226,6 +11272,9 @@ msgstr "_Reconnect"
msgid "Re-enable"
msgstr "_Rename"
+msgid "SSL FAQs"
+msgstr ""
+
#, fuzzy
msgid "Welcome back!"
msgstr "%s came back"
@@ -11325,6 +11374,9 @@ msgstr ""
msgid "A_lias:"
msgstr "Alias:"
+msgid "_Group:"
+msgstr "_Group:"
+
msgid "Auto_join when account becomes online."
msgstr ""
@@ -11384,14 +11436,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr "Invite Buddy Into Chat Room"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-
msgid "_Buddy:"
msgstr "_Buddy:"
@@ -11471,6 +11515,22 @@ msgstr "/Conversation/_Save As..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Conversation/Clear"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Conversation/_Close"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Conversation/_Close"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Conversation/_Close"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Conversation/View _Log"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Conversation/Se_nd File..."
@@ -11551,6 +11611,18 @@ msgstr "/_Conversation"
msgid "/Conversation/View Log"
msgstr "/Conversation/View Log"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Conversation/_Close"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Conversation/View Log"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Conversation/_Close"
+
msgid "/Conversation/Send File..."
msgstr "/Conversation/Send File..."
@@ -11751,6 +11823,9 @@ msgstr "Address"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "support"
@@ -11904,6 +11979,10 @@ msgid "Ubuntu Georgian Translators"
msgstr "Current Translators"
#, fuzzy
+msgid "Khmer"
+msgstr "Opera"
+
+#, fuzzy
msgid "Kannada"
msgstr "Banned"
@@ -11927,6 +12006,10 @@ msgid "Macedonian"
msgstr "Macedonian"
#, fuzzy
+msgid "Mongolian"
+msgstr "Macedonian"
+
+#, fuzzy
msgid "Bokmål Norwegian"
msgstr "Norwegian"
@@ -12035,8 +12118,25 @@ msgid ""
"<BR><BR>"
msgstr ""
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, fuzzy, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"4\">IRC:</FONT> #Pidgin on irc.freenode.net<BR><BR>"
+
#, fuzzy, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"4\">IRC:</FONT> #Pidgin on irc.freenode.net<BR><BR>"
#, fuzzy
@@ -12379,15 +12479,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr "New mail notifications"
-msgid "_Copy Email Address"
-msgstr "_Copy Email Address"
-
-msgid "_Open Link in Browser"
-msgstr "_Open Link in Browser"
-
-msgid "_Copy Link Location"
-msgstr "_Copy Link Location"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12652,6 +12743,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12669,6 +12761,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12700,16 +12793,27 @@ msgstr ""
msgid "Pidgin"
msgstr "Paging"
-#, fuzzy
-msgid "Open All Messages"
-msgstr "Send Message"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
+
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
#, fuzzy
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgid "Calling..."
+msgstr "Calculating..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
msgstr ""
-"<span weight=\"bold\" size=\"larger\">You have mail!</span>\n"
-"\n"
-"%s"
#, c-format
msgid "%s has %d new message."
@@ -12739,6 +12843,35 @@ msgid ""
msgstr ""
"The 'Manual' browser command has been chosen, but no command has been set."
+#, fuzzy
+msgid "Open All Messages"
+msgstr "Send Message"
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr ""
+"<span weight=\"bold\" size=\"larger\">You have mail!</span>\n"
+"\n"
+"%s"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "New Buddy Pounce"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr ""
+"<span weight=\"bold\" size=\"larger\">You have mail!</span>\n"
+"\n"
+"%s"
+
+#, fuzzy
+msgid "No message"
+msgstr "(1 message)"
+
msgid "The following plugins will be unloaded."
msgstr ""
@@ -12792,6 +12925,10 @@ msgstr ""
msgid "Select a file"
msgstr "Select a file"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Edit Buddy Pounce"
+
#. Create the "Pounce on Whom" frame.
#, fuzzy
msgid "Pounce on Whom"
@@ -12877,6 +13014,50 @@ msgstr ""
msgid "Pounce Target"
msgstr "Pounce When"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "Buddy starts _typing"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "User is typing..."
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "Si_gn on"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "Retur_n from idle"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "_Return from away"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "Ping"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "Sign _off"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "%s became idle"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "When away"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Send a _message"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "Unknown pounce event. Please report this!"
+
msgid "Smiley theme failed to unpack."
msgstr ""
@@ -12901,6 +13082,12 @@ msgstr "Shortcuts"
msgid "Cl_ose conversations with the Escape key"
msgstr "Conversations with %s"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Buddy List"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "System Tray Icon"
@@ -13026,10 +13213,6 @@ msgstr ""
msgid "Cannot start browser configuration program."
msgstr "Cannot get user information"
-#, fuzzy
-msgid "ST_UN server:"
-msgstr "_Server:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr ""
@@ -13057,6 +13240,10 @@ msgstr "_Start Port:"
msgid "_End port:"
msgstr "_End Port:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
#, fuzzy
msgid "Proxy Server &amp; Browser"
msgstr "Proxy Server"
@@ -13086,6 +13273,10 @@ msgstr "Proxy Server"
msgid "No proxy"
msgstr "No proxy"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "_User:"
@@ -13256,14 +13447,14 @@ msgid "Auto-away"
msgstr "Auto-away"
#, fuzzy
-msgid "Change status when _idle"
-msgstr "Set away _when idle"
-
-#, fuzzy
msgid "_Minutes before becoming idle:"
msgstr "_Minutes before setting away:"
#, fuzzy
+msgid "Change status when _idle"
+msgstr "Set away _when idle"
+
+#, fuzzy
msgid "Change _status to:"
msgstr "Change Address To:"
@@ -13421,6 +13612,12 @@ msgstr "Sa_ve & Use"
msgid "Status for %s"
msgstr "Status: %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
#, fuzzy
msgid "Custom Smiley"
msgstr "Insert smiley"
@@ -13431,15 +13628,15 @@ msgstr ""
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
+msgstr ""
+
#, fuzzy
msgid "Duplicate Shortcut"
msgstr "Public key file"
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
-msgstr ""
-
#, fuzzy
msgid "Please select an image for the smiley."
msgstr "Please enter a new name for the selected group."
@@ -13453,18 +13650,22 @@ msgid "Add Smiley"
msgstr "Smile!"
#, fuzzy
-msgid "Smiley _Image"
+msgid "_Image:"
msgstr "Save Image"
-#. Smiley shortcut
+#. Shortcut text
#, fuzzy
-msgid "Smiley S_hortcut"
+msgid "S_hortcut text:"
msgstr "Shortcuts"
#, fuzzy
msgid "Smiley"
msgstr "Smile!"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "Shortcuts"
+
msgid "Custom Smiley Manager"
msgstr ""
@@ -13593,6 +13794,16 @@ msgid ""
msgstr ""
#, fuzzy
+msgid "_Open Link"
+msgstr "_Open link in:"
+
+msgid "_Copy Link Location"
+msgstr "_Copy Link Location"
+
+msgid "_Copy Email Address"
+msgstr "_Copy Email Address"
+
+#, fuzzy
msgid "Save File"
msgstr "Save File..."
@@ -14619,10 +14830,6 @@ msgid "Only when docked"
msgstr ""
#, fuzzy
-msgid "_Flash window when chat messages are received"
-msgstr "_Flash Window when messages are received"
-
-#, fuzzy
msgid "Windows Pidgin Options"
msgstr "Login Options"
@@ -14675,6 +14882,231 @@ msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr ""
#, fuzzy
+#~ msgid "Invite message"
+#~ msgstr "(1 message)"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Please enter the name of the user you wish to invite, along with an "
+#~ "optional invite message."
+
+#, fuzzy
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "Unable To Retrieve Buddy List"
+
+#~ msgid ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+#~ msgstr ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+
+#, fuzzy
+#~ msgid "Add buddy Q&A"
+#~ msgstr "Add Buddy"
+
+#, fuzzy
+#~ msgid "Can not decrypt get server reply"
+#~ msgstr "Cannot get server information"
+
+#, fuzzy
+#~ msgid "Keep alive error"
+#~ msgstr "Reading error"
+
+#, fuzzy
+#~ msgid ""
+#~ "Lost connection with server:\n"
+#~ "%d, %s"
+#~ msgstr "You were disconnected from the server."
+
+#, fuzzy
+#~ msgid "Connecting server ..."
+#~ msgstr "Connect server"
+
+#, fuzzy
+#~ msgid "Failed to send IM."
+#~ msgstr "Failed to join chat"
+
+#~ msgid "Looking up %s"
+#~ msgstr "Looking up %s"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "Connect to %s failed"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Signon: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "Unable to write file %s."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "Unable to read file %s."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "Message too long, last %s bytes truncated."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s not currently logged in."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "Warning of %s not allowed."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "Chat in %s is not available."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "You are sending messages too fast to %s."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "You missed an IM from %s because it was too big."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr "You missed an IM from %s because it was sent too fast."
+
+#~ msgid "Failure."
+#~ msgstr "Failure."
+
+#~ msgid "Too many matches."
+#~ msgstr "Too many matches."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "Need more qualifiers."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "Dir service temporarily unavailable."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "Email lookup restricted."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "Keyword ignored."
+
+#~ msgid "No keywords."
+#~ msgstr "No keywords."
+
+#~ msgid "User has no directory information."
+#~ msgstr "User has no directory information."
+
+#~ msgid "Country not supported."
+#~ msgstr "Country not supported."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Failure unknown: %s."
+
+#, fuzzy
+#~ msgid "Incorrect username or password."
+#~ msgstr "Incorrect nickname or password."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "The service is temporarily unavailable."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "Your warning level is currently too high to log in."
+
+#~ 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 ""
+#~ "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."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "An unknown signon error has occurred: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "An unknown error, %d, has occurred. Info: %s"
+
+#, fuzzy
+#~ msgid "Invalid Groupname"
+#~ msgstr "Invalid group"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Connection Closed"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "Waiting for reply..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "TOC has come back from its pause. You may now send messages again."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "Password Change Successful"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Get Dir Info"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Set Dir Info"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "Could not open %s for writing!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr "File transfer failed; other side probably canceled."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "Could not connect for transfer."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "Could not write file header. The file will not be transferred."
+
+#, fuzzy
+#~ msgid "Save As..."
+#~ msgstr "Save Icon As..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s requests you to send them a file"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "TOC Protocol Plugin"
+
+#~ msgid "User information for %s unavailable"
+#~ msgstr "User information for %s unavailable"
+
+#~ msgid "%s Options"
+#~ msgstr "%s Options"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Proxy Options"
+
+#~ msgid "By log size"
+#~ msgstr "By log size"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_Open Link in Browser"
+
+#, fuzzy
+#~ msgid "ST_UN server:"
+#~ msgstr "_Server:"
+
+#, fuzzy
+#~ msgid "Smiley _Image"
+#~ msgstr "Save Image"
+
+#, fuzzy
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "Shortcuts"
+
+#, fuzzy
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "_Flash Window when messages are received"
+
+#, fuzzy
#~ msgid "A group with the name already exists."
#~ msgstr "A folder with that name already exists"
@@ -14743,13 +15175,6 @@ msgstr ""
#~ msgstr "Are you sure you want to remove the away message \"%s\"?"
#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr "%s on %s (%s)"
-
-#, fuzzy
#~ msgid "System Message"
#~ msgstr "Send Message"
@@ -14890,9 +15315,6 @@ msgstr ""
#~ msgid "Invalid screen name"
#~ msgstr "Invalid Username"
-#~ msgid "Unable to make SSL connection to server."
-#~ msgstr "Unable to make SSL connection to server."
-
#~ msgid "Too evil (sender)"
#~ msgstr "Too evil (sender)"
@@ -15362,9 +15784,6 @@ msgstr ""
#~ msgid "_Idle"
#~ msgstr "_Idle"
-#~ msgid "Retur_n from idle"
-#~ msgstr "Retur_n from idle"
-
#~ msgid "Pounce Action"
#~ msgstr "Pounce Action"
@@ -15647,12 +16066,12 @@ msgstr ""
#~ msgid ""
#~ "When this happens, TOC ignores any messages sent to it, and may kick you "
-#~ "off if you send a message. Pidgin will prevent anything from going through. "
-#~ "This is only temporary, please be patient."
+#~ "off if you send a message. Pidgin will prevent anything from going "
+#~ "through. This is only temporary, please be patient."
#~ msgstr ""
#~ "When this happens, TOC ignores any messages sent to it, and may kick you "
-#~ "off if you send a message. Pidgin will prevent anything from going through. "
-#~ "This is only temporary, please be patient."
+#~ "off if you send a message. Pidgin will prevent anything from going "
+#~ "through. This is only temporary, please be patient."
#~ msgid "Pidgin - Save As..."
#~ msgstr "Pidgin - Save As..."
@@ -15666,13 +16085,13 @@ msgstr ""
#~ msgid ""
#~ "The normal authentication method has failed. This means either your "
#~ "password is incorrect, or Yahoo!'s authentication scheme has changed. "
-#~ "Pidgin will now attempt to log in using Web Messenger authentication, which "
-#~ "will result in reduced functionality and features."
+#~ "Pidgin will now attempt to log in using Web Messenger authentication, "
+#~ "which will result in reduced functionality and features."
#~ msgstr ""
#~ "The normal authentication method has failed. This means either your "
#~ "password is incorrect, or Yahoo!'s authentication scheme has changed. "
-#~ "Pidgin will now attempt to log in using Web Messenger authentication, which "
-#~ "will result in reduced functionality and features."
+#~ "Pidgin will now attempt to log in using Web Messenger authentication, "
+#~ "which will result in reduced functionality and features."
#~ msgid "Unable to read"
#~ msgstr "Unable to read"
@@ -15695,9 +16114,6 @@ msgstr ""
#~ msgstr[0] "(%d message)"
#~ msgstr[1] "(%d message)"
-#~ msgid "(1 message)"
-#~ msgstr "(1 message)"
-
#, fuzzy
#~ msgid "Default auto-away"
#~ msgstr "Auto-away"
@@ -15800,9 +16216,6 @@ msgstr ""
#~ msgid "Away title: "
#~ msgstr "Away title: "
-#~ msgid "Buddy List Error"
-#~ msgstr "Buddy List Error"
-
#~ msgid "Size of the expander arrow"
#~ msgstr "Size of the expander arrow"
@@ -16205,12 +16618,12 @@ msgstr ""
#~ msgstr "Unable to load preferences"
#~ msgid ""
-#~ "Pidgin was not able to load your preferences because they are stored in an "
-#~ "old format that is no longer used. Please reconfigure your settings "
+#~ "Pidgin 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 ""
-#~ "Pidgin was not able to load your preferences because they are stored in an "
-#~ "old format that is no longer used. Please reconfigure your settings "
+#~ "Pidgin 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."
#~ msgid "Slightly less boring default"
@@ -16316,18 +16729,18 @@ msgstr ""
#~ msgstr "Unable to access directory"
#~ msgid ""
-#~ "Pidgin was unable to search the Directory because it was unable to connect "
-#~ "to the directory server. Please try again later."
+#~ "Pidgin was unable to search the Directory because it was unable to "
+#~ "connect to the directory server. Please try again later."
#~ msgstr ""
-#~ "Pidgin was unable to search the Directory because it was unable to connect "
-#~ "to the directory server. Please try again later."
+#~ "Pidgin was unable to search the Directory because it was unable to "
+#~ "connect to the directory server. Please try again later."
#~ msgid ""
-#~ "Pidgin was unable to change your password due to an error connecting to the "
-#~ "Gadu-Gadu server. Please try again later."
+#~ "Pidgin was unable to change your password due to an error connecting to "
+#~ "the Gadu-Gadu server. Please try again later."
#~ msgstr ""
-#~ "Pidgin was unable to change your password due to an error connecting to the "
-#~ "Gadu-Gadu server. Please try again later."
+#~ "Pidgin was unable to change your password due to an error connecting to "
+#~ "the Gadu-Gadu server. Please try again later."
#~ msgid "Directory Search"
#~ msgstr "Directory Search"
@@ -16336,11 +16749,11 @@ msgstr ""
#~ msgstr "Unable to access user profile."
#~ msgid ""
-#~ "Pidgin was unable to access this user's profile due to an error connecting "
-#~ "to the directory server. Please try again later."
+#~ "Pidgin was unable to access this user's profile due to an error "
+#~ "connecting to the directory server. Please try again later."
#~ msgstr ""
-#~ "Pidgin was unable to access this user's profile due to an error connecting "
-#~ "to the directory server. Please try again later."
+#~ "Pidgin was unable to access this user's profile due to an error "
+#~ "connecting to the directory server. Please try again later."
#~ msgid "Pidgin encountered an error communicating with the ICQ server."
#~ msgstr "Pidgin encountered an error communicating with the ICQ server."
@@ -16479,9 +16892,6 @@ msgstr ""
#~ "%s has invited %s to the chat room %s:\n"
#~ "<b>%s</b>"
-#~ msgid "Sorry, I ran out for a bit!"
-#~ msgstr "Sorry, I ran out for a bit!"
-
#~ msgid ""
#~ "Unable to guess the image type based on the file extension supplied. "
#~ "Defaulting to PNG."
diff --git a/po/en_CA.po b/po/en_CA.po
index 80330c020a..500a52fb66 100644
--- a/po/en_CA.po
+++ b/po/en_CA.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
+"POT-Creation-Date: 2009-04-30 10:37-0400\n"
"PO-Revision-Date: 2005-03-17 19:45-0400\n"
"Last-Translator: Adam Weinberger <adamw@gnome.org>\n"
"Language-Team: Canadian English <adamw@gnome.org>\n"
@@ -33,7 +33,7 @@ msgid ""
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -637,21 +637,6 @@ msgid "Send To"
msgstr "_Send As"
#, fuzzy
-msgid "Invite message"
-msgstr "(1 message)"
-
-msgid "Invite"
-msgstr "Invite"
-
-#, fuzzy
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-
-#, fuzzy
msgid "Conversation"
msgstr "Conversations"
@@ -914,6 +899,42 @@ msgid "System Log"
msgstr "System Log"
#, fuzzy
+msgid "Calling ... "
+msgstr "Calculating..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "Accept"
+
+#, fuzzy
+msgid "Reject"
+msgstr "Reset"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "You have parted the channel%s%s"
+
+msgid "call: Make an audio call."
+msgstr ""
+
+#, fuzzy
msgid "Emails"
msgstr "Email"
@@ -951,6 +972,9 @@ msgstr "Connecting"
msgid "IM"
msgstr "IM"
+msgid "Invite"
+msgstr "Invite"
+
#, fuzzy
msgid "(none)"
msgstr "(no name)"
@@ -1174,7 +1198,6 @@ msgstr "%s has gone away. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s wants to send you %s (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "Unknown pounce event. Please report this!"
@@ -1230,7 +1253,6 @@ msgstr "_Minutes before setting away:"
msgid "Change status to"
msgstr "Change Address To:"
-#. Conversations
msgid "Conversations"
msgstr "Conversations"
@@ -1581,7 +1603,6 @@ msgstr ""
"When a new conversation is opened this plugin will insert the last "
"conversation into the current conversation."
-#, c-format
msgid "Online"
msgstr "Online"
@@ -1630,6 +1651,28 @@ msgstr ""
msgid "Lastlog plugin."
msgstr ""
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
#, fuzzy
msgid "accounts"
msgstr "Accounts"
@@ -1733,14 +1776,6 @@ msgstr "Accept chat invitation?"
msgid "SSL Certificate Verification"
msgstr ""
-#. Number of actions
-msgid "Accept"
-msgstr "Accept"
-
-#, fuzzy
-msgid "Reject"
-msgstr "Reset"
-
msgid "_View Certificate..."
msgstr ""
@@ -1878,6 +1913,18 @@ msgstr "%s left the room."
msgid "%s left the room (%s)."
msgstr "%s left the room (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Initiate Conference"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+
#, fuzzy, c-format
msgid "Failed to get connection: %s"
msgstr "Failed to set cmodes for %s"
@@ -2016,7 +2063,6 @@ msgstr "Accept file transfer request from %s?"
msgid "Transfer of file %s complete"
msgstr "Transfer of file %s complete"
-#, c-format
msgid "File transfer complete"
msgstr "File transfer complete"
@@ -2024,7 +2070,6 @@ msgstr "File transfer complete"
msgid "You canceled the transfer of %s"
msgstr "You cancelled the transfer of %s"
-#, c-format
msgid "File transfer cancelled"
msgstr "File transfer cancelled"
@@ -2213,7 +2258,6 @@ msgstr "(%s) %s <AUTO-REPLY>: %s\n"
msgid "You are using %s, but this plugin requires %s."
msgstr ""
-#, c-format
msgid "This plugin has not defined an ID."
msgstr ""
@@ -2708,6 +2752,32 @@ msgstr ""
msgid "Do not ask. Always save in pounce."
msgstr ""
+#, fuzzy
+msgid "One Time Password"
+msgstr "Change Password"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2913,7 +2983,6 @@ msgid ""
"Unable to establish connection with the local mDNS server. Is it running?"
msgstr ""
-#. Creating the options for the protocol
#, fuzzy
msgid "First name"
msgstr "First name:"
@@ -2951,6 +3020,11 @@ msgstr "Yahoo Protocol Plugin"
msgid "Purple Person"
msgstr "New Person"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "Locality"
+
msgid "Bonjour"
msgstr ""
@@ -3139,13 +3213,13 @@ msgstr "Remove the chat from your buddy list"
msgid "Add to chat..."
msgstr "Add a C_hat"
+#. Global
msgid "Available"
msgstr "Available"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "Away"
@@ -3516,6 +3590,17 @@ msgstr ""
"Your selected account name was rejected by the server. It probably contains "
"invalid characters."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "That file already exists"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Nickname"
+
msgid "Cannot change nick"
msgstr "Cannot change nick"
@@ -3794,6 +3879,37 @@ msgstr "Invalid challenge from server"
msgid "SASL error"
msgstr "Read error"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "No reason given."
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Unsupported Version"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr "Unable to make SSL connection to server."
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "Unable to create new connection."
+
+msgid "Unable to create socket"
+msgstr "Unable to create socket"
+
+msgid "Write error"
+msgstr "Write error"
+
msgid "Full Name"
msgstr "Full Name"
@@ -3862,6 +3978,10 @@ msgstr "City"
msgid "Operating System"
msgstr "Hide Operating System"
+#, fuzzy
+msgid "Local Time"
+msgstr "Local Users"
+
msgid "Last Activity"
msgstr ""
@@ -4099,7 +4219,6 @@ msgstr "Chatty"
msgid "Extended Away"
msgstr "Extended Away"
-#, c-format
msgid "Do Not Disturb"
msgstr "Do Not Disturb"
@@ -4229,9 +4348,6 @@ msgstr "Find Rooms"
msgid "You require encryption, but it is not available on this server."
msgstr ""
-msgid "Write error"
-msgstr "Write error"
-
#, fuzzy
msgid "Ping timeout"
msgstr "Plain text"
@@ -4241,19 +4357,20 @@ msgstr "Read Error"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-msgid "Unable to create socket"
-msgstr "Unable to create socket"
-
msgid "Invalid XMPP ID"
msgstr "Invalid XMPP ID"
msgid "Invalid XMPP ID. Domain must be set."
msgstr ""
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Failed to connect to server."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "Registration of %s@%s successful"
@@ -4346,9 +4463,18 @@ msgstr "Authenticating"
msgid "Re-initializing Stream"
msgstr "Re-initializing Stream"
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr "Not Authorized"
+msgid "Mood"
+msgstr "Mood"
+
+msgid "Now Listening"
+msgstr ""
+
msgid "Both"
msgstr "Both"
@@ -4370,12 +4496,6 @@ msgstr "None"
msgid "Subscription"
msgstr "Subscription"
-msgid "Mood"
-msgstr "Mood"
-
-msgid "Now Listening"
-msgstr ""
-
#, fuzzy
msgid "Mood Text"
msgstr "Mood"
@@ -4619,18 +4739,24 @@ msgstr "Unable to kick user %s"
msgid "Unable to ping user %s"
msgstr "Unable to ban user %s"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
+msgstr "Unable to play sound because the chosen file (%s) does not exist."
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
+msgstr "Unable to play sound because the chosen file (%s) does not exist."
#, fuzzy, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "Unable to play sound because the chosen file (%s) does not exist."
+#, c-format
+msgid "Buzzing %s..."
+msgstr ""
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
#, fuzzy
@@ -4641,9 +4767,36 @@ msgstr "Buzz!!"
msgid "%s has buzzed you!"
msgstr "The user has blocked you"
-#, c-format
-msgid "Buzzing %s..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "Unable to send message to %s:"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "Unable to send file to %s, user does not support file transfers"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr "Unable to send file to %s, user does not support file transfers"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "Registration Failed"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
msgstr ""
+"Please enter the screen name of the person whose info you would like to view."
+
+#, fuzzy
+msgid "Select a Resource"
+msgstr "Select a file"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "Initiate _Chat"
msgid "config: Configure a chat room."
msgstr "config: Configure a chat room."
@@ -4803,6 +4956,21 @@ msgstr "Error joining chat %s"
msgid "Error in chat %s"
msgstr "Error in chat %s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "An error occurred while opening the file."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "File transfer cancelled"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Failed to store image: %s\n"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr "Unable to send file to %s, user does not support file transfers"
@@ -4828,10 +4996,6 @@ msgstr ""
"Please enter the screen name of the person whose info you would like to view."
#, fuzzy
-msgid "Select a Resource"
-msgstr "Select a file"
-
-#, fuzzy
msgid "Edit User Mood"
msgstr "User Modes"
@@ -4871,9 +5035,20 @@ msgstr "Accounts"
msgid "Select an action"
msgstr "Select a file"
+#. 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
+#, fuzzy, c-format
+msgid "Unable to add \"%s\"."
+msgstr "Unable to read file %s."
+
#, fuzzy
-msgid "Unable to retrieve MSN Address Book"
-msgstr "Unable To Retrieve Buddy List"
+msgid "Buddy Add error"
+msgstr "Buddy List Error"
+
+#, fuzzy
+msgid "The username specified does not exist."
+msgstr "The SecurID key entered is invalid."
#, c-format
msgid "Buddy list synchronization issue in %s (%s)"
@@ -5103,7 +5278,7 @@ msgstr "Kids Passport without parental consent"
msgid "Passport account not yet verified"
msgstr "Passport account not yet verified"
-#, fuzzy, c-format
+#, fuzzy
msgid "Passport account suspended"
msgstr "Passport account not yet verified"
@@ -5197,6 +5372,13 @@ msgstr "Send a mobile message."
msgid "Page"
msgstr "Page"
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "Warn"
+
msgid "Has you"
msgstr "Has you"
@@ -5240,6 +5422,14 @@ msgid "Album"
msgstr ""
#, fuzzy
+msgid "Game Title"
+msgstr "Title"
+
+#, fuzzy
+msgid "Office Title"
+msgstr "Title"
+
+#, fuzzy
msgid "Set Friendly Name..."
msgstr "Set Friendly Name"
@@ -5459,8 +5649,9 @@ msgstr ""
"Pidgin could not find any information in the user's profile. The user most "
"likely does not exist."
-msgid "Profile URL"
-msgstr "Profile URL"
+#, fuzzy
+msgid "View web profile"
+msgstr "Not allowed when offline"
#. *< type
#. *< ui_requirement
@@ -5718,13 +5909,6 @@ msgstr "Add to Address Book"
msgid "Do you want to delete this buddy from your address book as well?"
msgstr "Do you want to add this buddy to your buddy list?"
-#. 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
-#, fuzzy, c-format
-msgid "Unable to add \"%s\"."
-msgstr "Unable to read file %s."
-
#, fuzzy
msgid "The username specified is invalid."
msgstr "The SecurID key entered is invalid."
@@ -5732,6 +5916,9 @@ msgstr "The SecurID key entered is invalid."
msgid "This Hotmail account may not be active."
msgstr ""
+msgid "Profile URL"
+msgstr "Profile URL"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5745,16 +5932,13 @@ msgstr ""
msgid "MSN Protocol Plugin"
msgstr "MSN Protocol Plugin"
-msgid "Missing Cipher"
-msgstr ""
-
-msgid "The RC4 cipher could not be found"
+#, c-format
+msgid "No such user: %s"
msgstr ""
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
-msgstr ""
+#, fuzzy
+msgid "User lookup"
+msgstr "User Rooms"
#, fuzzy
msgid "Reading challenge"
@@ -5768,11 +5952,19 @@ msgstr "Invalid challenge from server"
msgid "Logging in"
msgstr "Logging"
-#, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] ""
-msgstr[1] ""
+#, fuzzy
+msgid "MySpaceIM - No Username Set"
+msgstr "No screenname given."
+
+msgid "You appear to have no MySpace username."
+msgstr ""
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr ""
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr "You were disconnected from the server."
#. Can't write _()'d strings in array initializers. Workaround.
#, fuzzy
@@ -5795,14 +5987,22 @@ msgid "MySpace"
msgstr ""
#, fuzzy
-msgid "MySpaceIM - No Username Set"
-msgstr "No screenname given."
+msgid "IM Friends"
+msgstr "_IM windows"
-msgid "You appear to have no MySpace username."
-msgstr ""
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+msgstr[1] ""
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
-msgstr ""
+#, fuzzy
+msgid "Add contacts from server"
+msgstr "Invalid response from server."
#. The session is now set up, ready to be connected. This emits the
#. * signedOn signal, so clients can now do anything with msimprpl, and
@@ -5827,6 +6027,22 @@ msgid "MySpaceIM Error"
msgstr ""
#, fuzzy
+msgid "Invalid input condition"
+msgstr "Finalizing connection"
+
+#, fuzzy
+msgid "Read buffer full (2)"
+msgstr "Queue full"
+
+#, fuzzy
+msgid "Unparseable message"
+msgstr "Unable to parse message"
+
+#, fuzzy, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr "Couldn't connect to host"
+
+#, fuzzy
msgid "Failed to add buddy"
msgstr "Failed to join buddy in chat"
@@ -5838,14 +6054,6 @@ msgstr "Import Buddy List from Server"
msgid "persist command failed"
msgstr "Switchboard failed"
-#, c-format
-msgid "No such user: %s"
-msgstr ""
-
-#, fuzzy
-msgid "User lookup"
-msgstr "User Rooms"
-
#, fuzzy
msgid "Failed to remove buddy"
msgstr "Failed to join buddy in chat"
@@ -5857,39 +6065,16 @@ msgstr ""
msgid "blocklist command failed"
msgstr "Switchboard failed"
-#, fuzzy
-msgid "Invalid input condition"
-msgstr "Finalizing connection"
-
-#, fuzzy
-msgid "Read buffer full (2)"
-msgstr "Queue full"
-
-#, fuzzy
-msgid "Unparseable message"
-msgstr "Unable to parse message"
-
-#, fuzzy, c-format
-msgid "Couldn't connect to host: %s (%d)"
-msgstr "Couldn't connect to host"
+msgid "Missing Cipher"
+msgstr ""
-#, fuzzy
-msgid "IM Friends"
-msgstr "_IM windows"
+msgid "The RC4 cipher could not be found"
+msgstr ""
-#, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-msgstr[1] ""
-
-#, fuzzy
-msgid "Add contacts from server"
-msgstr "Invalid response from server."
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
msgid "Add friends from MySpace.com"
msgstr ""
@@ -5937,9 +6122,6 @@ msgstr "Larger font size"
msgid "User"
msgstr "Users"
-msgid "Profile"
-msgstr "Profile"
-
#, fuzzy
msgid "Headline"
msgstr "Decline"
@@ -5955,17 +6137,6 @@ msgstr ""
msgid "Client Version"
msgstr "Close conversation"
-#. Protocol won't log in now without a username set.. Disconnect
-#, fuzzy
-msgid "No username set"
-msgstr "No screenname given."
-
-msgid "MySpaceIM - Please Set a Username"
-msgstr ""
-
-msgid "Please enter a username to check its availability:"
-msgstr ""
-
#, fuzzy
msgid "MySpaceIM - Username Available"
msgstr "Service Unavailable"
@@ -5976,6 +6147,9 @@ msgstr ""
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr ""
+msgid "MySpaceIM - Please Set a Username"
+msgstr ""
+
#, fuzzy
msgid "This username is unavailable."
msgstr "This theme has no available smileys."
@@ -5984,6 +6158,14 @@ msgstr "This theme has no available smileys."
msgid "Please try another username:"
msgstr "Please enter a new name for the selected group."
+#. Protocol won't log in now without a username set.. Disconnect
+#, fuzzy
+msgid "No username set"
+msgstr "No screenname given."
+
+msgid "Please enter a username to check its availability:"
+msgstr ""
+
#. TODO: icons for each zap
#. Lots of comments for translators:
#. Zap means "to strike suddenly and forcefully as if with a
@@ -6378,7 +6560,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr "Error. SSL support is not installed."
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr "This conference has been closed. No more messages can be sent."
@@ -6645,23 +6826,18 @@ msgstr "Camera"
msgid "Screen Sharing"
msgstr "Screen Name"
-#, c-format
msgid "Free For Chat"
msgstr "Free For Chat"
-#, c-format
msgid "Not Available"
msgstr "Not Available"
-#, c-format
msgid "Occupied"
msgstr "Occupied"
-#, c-format
msgid "Web Aware"
msgstr "Web Aware"
-#, c-format
msgid "Invisible"
msgstr "Invisible"
@@ -6707,7 +6883,7 @@ msgstr ""
"invalid. Screen names must either start with a letter and contain only "
"letters, numbers and spaces, or contain only numbers."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
#, fuzzy
msgid "Invalid username."
@@ -6724,7 +6900,7 @@ msgstr "Your account is currently suspended."
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "The AOL Instant Messenger service is temporarily unavailable."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6759,10 +6935,8 @@ msgstr "Enter the 6-digit number from the digital display."
msgid "_OK"
msgstr "OK"
-#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
+#, fuzzy, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
msgstr ""
"You may be disconnected shortly. You may want to use TOC until this is "
"fixed. Check %s for updates."
@@ -6915,7 +7089,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] "You missed %hu message from %s for an unknown reason."
msgstr[1] "You missed %hu messages from %s for an unknown reason."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "Unable to send message: %s"
@@ -6937,6 +7111,9 @@ msgstr "Online Since"
msgid "Member Since"
msgstr "Member Since"
+msgid "Profile"
+msgstr "Profile"
+
msgid "Your AIM connection may be lost."
msgstr "Your AIM connection may be lost."
@@ -7090,8 +7267,8 @@ msgid_plural ""
"The maximum profile length of %d bytes has been exceeded. It has been "
"truncated for you."
msgstr[0] ""
-"The maximum profile length of %d byte has been exceeded. Pidgin has truncated "
-"it for you."
+"The maximum profile length of %d byte has been exceeded. Pidgin has "
+"truncated it for you."
msgstr[1] ""
"The maximum profile length of %d bytes has been exceeded. Pidgin has "
"truncated it for you."
@@ -7230,6 +7407,7 @@ msgstr "Connect"
msgid "Get AIM Info"
msgstr "Get Info"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "Edit Buddy Comment"
@@ -7345,7 +7523,7 @@ msgstr "Asking %s to connect to us at %s:%hu for Direct IM."
msgid "Attempting to connect to %s:%hu."
msgstr "Attempting to connect to %s at %s:%hu for Direct IM."
-#, fuzzy, c-format
+#, fuzzy
msgid "Attempting to connect via proxy server."
msgstr "Attempting to connect to %s at %s:%hu for Direct IM."
@@ -7455,7 +7633,7 @@ msgstr "Opera"
msgid "Visible"
msgstr "Invisible"
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
#, fuzzy
@@ -7551,17 +7729,51 @@ msgstr "Last Updated"
msgid "Could not change buddy information."
msgstr "Please enter a buddy to pounce."
-#, c-format
-msgid "%d needs Q&A"
+#, fuzzy
+msgid "Mobile"
+msgstr "Mobile Phone"
+
+msgid "Note"
+msgstr "Note"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "Buddy Icon"
+
+msgid "Change his/her memo as you like"
msgstr ""
#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "Add Buddy"
+msgid "_Modify"
+msgstr "_Modify"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "_Modify"
-msgid "Input answer here"
+#, fuzzy
+msgid "Server says:"
+msgstr "Server busy"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
msgstr ""
+#, fuzzy, c-format
+msgid "%u requires verification"
+msgstr "Request Authorization"
+
+#, fuzzy
+msgid "Add buddy question"
+msgstr "Add buddy to your list?"
+
+#, fuzzy
+msgid "Enter answer here"
+msgstr "Cannot send a directory."
+
msgid "Send"
msgstr "Send"
@@ -7573,19 +7785,20 @@ msgstr "Invalid password"
msgid "Authorization denied message:"
msgstr "Authorization Denied Message:"
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr ""
#, fuzzy, c-format
-msgid "%d needs authentication"
+msgid "%u needs authorization"
msgstr "Starting authentication"
#, fuzzy
msgid "Add buddy authorize"
msgstr "Add buddy to your list?"
-msgid "Input request here"
-msgstr ""
+#, fuzzy
+msgid "Enter request here"
+msgstr "Enter a Conference Server"
#, fuzzy
msgid "Would you be my friend?"
@@ -7608,7 +7821,7 @@ msgid "Failed sending authorize"
msgstr "Please authorize me!"
#, fuzzy, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr "Failed to join buddy in chat"
#, fuzzy, c-format
@@ -7654,6 +7867,10 @@ msgid "You can only search for permanent Qun\n"
msgstr ""
#, fuzzy
+msgid "(Invalid UTF-8 string)"
+msgstr "Invalid proxy settings"
+
+#, fuzzy
msgid "Not member"
msgstr "Member Since"
@@ -7698,15 +7915,18 @@ msgstr ""
msgid "Join QQ Qun"
msgstr "Join Chat"
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
+msgid "Input request here"
msgstr ""
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "Telephone Number"
+
msgid "Successfully joined Qun"
msgstr ""
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
#, fuzzy
@@ -7717,7 +7937,7 @@ msgstr "Sound Options"
msgid "Failed:"
msgstr "Failed"
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
#, fuzzy
@@ -7729,11 +7949,12 @@ msgid ""
"this operation will eventually remove this Qun."
msgstr ""
-msgid "Sorry, you are not our style ..."
-msgstr ""
+#, fuzzy
+msgid "Sorry, you are not our style"
+msgstr "Sorry, I ran out for a bit!"
#, fuzzy
-msgid "Successfully changed Qun member"
+msgid "Successfully changed Qun members"
msgstr "Telephone Number"
#, fuzzy
@@ -7744,7 +7965,7 @@ msgid "You have successfully created a Qun"
msgstr ""
#, fuzzy
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr "Would you like to join the conversation?"
#, fuzzy
@@ -7752,28 +7973,28 @@ msgid "Setup"
msgstr "_Set"
#, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr ""
#, c-format
-msgid "%d request to join Qun %d"
+msgid "%u request to join Qun %u"
msgstr ""
#, fuzzy, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr "Failed to join buddy in chat"
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr "Remove Buddy"
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "Remove Buddy"
#, fuzzy, c-format
msgid "Unknown-%d"
@@ -7893,6 +8114,13 @@ msgstr "<b>User:</b> %s<br>"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<b>Alias:</b> %s<br>"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<b>User:</b> %s<br>"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7900,7 +8128,7 @@ msgid "<i>Feel free to join us!</i> :)"
msgstr ""
#, fuzzy, c-format
-msgid "About OpenQ r%s"
+msgid "About OpenQ %s"
msgstr "About Pidgin"
#, fuzzy
@@ -7921,6 +8149,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "About Pidgin"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Home Address"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7952,7 +8184,6 @@ msgstr ""
msgid "QQ2008"
msgstr ""
-#. #endif
#, fuzzy
msgid "Connect by TCP"
msgstr "Connecting"
@@ -7965,6 +8196,9 @@ msgstr "Show fewer options"
msgid "Show server news"
msgstr "Show fewer options"
+msgid "Show chat room when msg comes"
+msgstr ""
+
#, fuzzy
msgid "Keep alive interval (seconds)"
msgstr "Reading error"
@@ -7974,11 +8208,7 @@ msgid "Update interval (seconds)"
msgstr "Reading error"
#, fuzzy
-msgid "Can not decrypt server reply"
-msgstr "Cannot get server information"
-
-#, fuzzy
-msgid "Can not decrypt get server reply"
+msgid "Cannot decrypt server reply"
msgstr "Cannot get server information"
#, c-format
@@ -8001,21 +8231,23 @@ msgid "Activation required"
msgstr "Registration Required"
#, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr ""
#, fuzzy
-msgid "Keep alive error"
-msgstr "Reading error"
+msgid "Could not decrypt server reply"
+msgstr "Cannot get server information"
-msgid "Requesting captcha ..."
-msgstr ""
+#, fuzzy
+msgid "Requesting captcha"
+msgstr "Request ambiguous"
-msgid "Checking code of captcha ..."
+msgid "Checking captcha"
msgstr ""
-msgid "Failed captcha verify"
-msgstr ""
+#, fuzzy
+msgid "Failed captcha verification"
+msgstr "Failed Yahoo! Authentication"
#, fuzzy
msgid "Captcha Image"
@@ -8025,7 +8257,7 @@ msgstr "Save Image"
msgid "Enter code"
msgstr "Change Password"
-msgid "QQ Captcha Verifing"
+msgid "QQ Captcha Verification"
msgstr ""
#, fuzzy
@@ -8033,16 +8265,15 @@ msgid "Enter the text from the image"
msgstr "Please enter the name of the group to be added."
#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
+msgid "Unknown reply when checking password (0x%02X)"
msgstr ""
#, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
msgstr ""
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "Unable to connect."
@@ -8050,12 +8281,6 @@ msgstr "Unable to connect."
msgid "Socket error"
msgstr "Unknown Error"
-#, fuzzy, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr "You were disconnected from the server."
-
#, fuzzy
msgid "Unable to read from socket"
msgstr "Unable to read socket"
@@ -8069,11 +8294,11 @@ msgid "Connection lost"
msgstr "Connection Closed"
#, fuzzy
-msgid "Get server ..."
+msgid "Getting server"
msgstr "Set User Info..."
#, fuzzy
-msgid "Request token"
+msgid "Requesting token"
msgstr "Request denied"
#, fuzzy
@@ -8085,17 +8310,13 @@ msgid "Invalid server or port"
msgstr "Invalid username or password"
#, fuzzy
-msgid "Connecting server ..."
-msgstr "Connect server"
+msgid "Connecting to server"
+msgstr "Connecting to SILC Server"
#, fuzzy
msgid "QQ Error"
msgstr "Read Error"
-#, fuzzy
-msgid "Failed to send IM."
-msgstr "Failed to join chat"
-
#, fuzzy, c-format
msgid ""
"Server News:\n"
@@ -8105,6 +8326,10 @@ msgid ""
msgstr "ICQ Server Relay"
#, fuzzy, c-format
+msgid "%s:%s"
+msgstr "%s on %s (%s)"
+
+#, fuzzy, c-format
msgid "From %s:"
msgstr "From"
@@ -8114,32 +8339,30 @@ msgid ""
"%s"
msgstr "Server Information"
-msgid "Unknow SERVER CMD"
-msgstr ""
+#, fuzzy
+msgid "Unknown SERVER CMD"
+msgstr "Unknown reason."
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
#, fuzzy
msgid "QQ Qun Command"
msgstr "Command"
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr ""
-
-msgid "Can not decrypt login reply"
-msgstr ""
+#, fuzzy
+msgid "Could not decrypt login reply"
+msgstr "Cannot get server information"
#, fuzzy
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr "Unknown reason."
#, fuzzy
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr "Unknown reason."
#, fuzzy, c-format
@@ -8991,9 +9214,6 @@ msgstr "Organization"
msgid "Unit"
msgstr "Unit"
-msgid "Note"
-msgstr "Note"
-
msgid "Join Chat"
msgstr "Join Chat"
@@ -9671,6 +9891,10 @@ msgstr "Unable to resolve hostname."
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr "IRC nicks may not contain whitespace"
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "Show fewer options"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -9712,192 +9936,10 @@ msgid "Auth Domain"
msgstr "Automatic"
#, c-format
-msgid "Looking up %s"
-msgstr "Looking up %s"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Connect to %s failed"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Signon: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "Unable to write file %s."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "Unable to read file %s."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "Message too long, last %s bytes truncated."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s not currently logged in."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "Warning of %s not allowed."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "A message has been dropped, you are exceeding the server speed limit."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "Chat in %s is not available."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "You are sending messages too fast to %s."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "You missed an IM from %s because it was too big."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "You missed an IM from %s because it was sent too fast."
-
-#, c-format
-msgid "Failure."
-msgstr "Failure."
-
-#, c-format
-msgid "Too many matches."
-msgstr "Too many matches."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "Need more qualifiers."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "Dir service temporarily unavailable."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "Email lookup restricted."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "Keyword ignored."
-
-#, c-format
-msgid "No keywords."
-msgstr "No keywords."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "User has no directory information."
-
-#, c-format
-msgid "Country not supported."
-msgstr "Country not supported."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Failure unknown: %s."
-
-#, fuzzy, c-format
-msgid "Incorrect username or password."
-msgstr "Incorrect nickname or password."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "The service is temporarily unavailable."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "Your warning level is currently too high to log in."
-
-#, 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."
+msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
-"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."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "An unknown signon error has occurred: %s."
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "An unknown error, %d, has occurred. Info: %s"
-
-#, fuzzy
-msgid "Invalid Groupname"
-msgstr "Invalid group"
-
-msgid "Connection Closed"
-msgstr "Connection Closed"
-
-msgid "Waiting for reply..."
-msgstr "Waiting for reply..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "TOC has come back from its pause. You may now send messages again."
-
-msgid "Password Change Successful"
-msgstr "Password Change Successful"
-
-msgid "_Group:"
-msgstr "_Group:"
-
-msgid "Get Dir Info"
-msgstr "Get Dir Info"
-
-msgid "Set Dir Info"
-msgstr "Set Dir Info"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "Could not open %s for writing!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "File transfer failed; other side probably cancelled."
-
-msgid "Could not connect for transfer."
-msgstr "Could not connect for transfer."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "Could not write file header. The file will not be transferred."
-
-#, fuzzy
-msgid "Save As..."
-msgstr "Save Icon As..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgstr[1] "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s requests you to send them a file"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "TOC Protocol Plugin"
-
-#, c-format
-msgid "%s has sent you a webcam invite, which is not yet supported."
+msgid "Your SMS was not delivered"
msgstr ""
msgid "Your Yahoo! message did not get sent."
@@ -10183,14 +10225,9 @@ msgstr "Cool Link 3"
msgid "Last Update"
msgstr "Last Updated"
-#, c-format
-msgid "User information for %s unavailable"
-msgstr "User information for %s unavailable"
-
#, fuzzy
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr ""
"Sorry, this profile seems to be in a language that is not supported at this "
"time."
@@ -10531,10 +10568,6 @@ msgstr "Do Not Disturb"
msgid "Extended away"
msgstr "Extended Away"
-#, fuzzy
-msgid "Mobile"
-msgstr "Mobile Phone"
-
msgid "Listening to music"
msgstr ""
@@ -10576,20 +10609,6 @@ msgstr "%s became unidle"
msgid "%x %X"
msgstr ""
-#, fuzzy, c-format
-msgid "Error Reading %s"
-msgstr ""
-"Error reading %s: \n"
-"%s.\n"
-
-#, 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 ""
-"An error was encountered parsing your buddy list. It has not been loaded, "
-"and the old file has moved to blist.xml~."
-
msgid "Calculating..."
msgstr "Calculating..."
@@ -10668,6 +10687,12 @@ msgstr ""
msgid "Unable to connect to %s: %s"
msgstr "Unable to connect to server."
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr "Server requires TLS/SSL for login. No TLS/SSL support found."
+
#, c-format
msgid " - %s"
msgstr ""
@@ -10701,6 +10726,20 @@ msgstr "Connection Closed"
msgid "Address already in use."
msgstr "That file already exists"
+#, fuzzy, c-format
+msgid "Error Reading %s"
+msgstr ""
+"Error reading %s: \n"
+"%s.\n"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"An error was encountered parsing your buddy list. It has not been loaded, "
+"and the old file has moved to blist.xml~."
+
#, fuzzy
msgid "Internet Messenger"
msgstr "Instant Messagers"
@@ -10750,10 +10789,9 @@ msgstr "New mail notifications"
msgid "Use this buddy _icon for this account:"
msgstr ""
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s Options"
+#, fuzzy
+msgid "_Advanced"
+msgstr "_Cancel"
#, fuzzy
msgid "Use GNOME Proxy Settings"
@@ -10789,9 +10827,6 @@ msgstr "If you look real closely"
msgid "you can see the butterflies mating"
msgstr "you can see the butterflies mating"
-msgid "Proxy Options"
-msgstr "Proxy Options"
-
msgid "Proxy _type:"
msgstr "Proxy _type:"
@@ -10822,8 +10857,8 @@ msgid "Create _this new account on the server"
msgstr ""
#, fuzzy
-msgid "_Advanced"
-msgstr "_Cancel"
+msgid "_Proxy"
+msgstr "No Proxy"
#, fuzzy
msgid "Enabled"
@@ -10893,6 +10928,17 @@ msgid "I_M"
msgstr "I_M"
#, fuzzy
+msgid "_Audio Call"
+msgstr "Add Chat"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Video Chat"
+
+#, fuzzy
msgid "_Send File..."
msgstr "_Send File"
@@ -11050,6 +11096,10 @@ msgid "/Tools/_Certificates"
msgstr "/Tools/Pr_eferences"
#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Tools/_Away"
+
+#, fuzzy
msgid "/Tools/Plu_gins"
msgstr "/Tools/Plugin Actions"
@@ -11059,10 +11109,6 @@ msgstr "/Tools/Pr_eferences"
msgid "/Tools/Pr_ivacy"
msgstr "/Tools/Pr_ivacy"
-#, fuzzy
-msgid "/Tools/Smile_y"
-msgstr "/Tools/_Away"
-
msgid "/Tools/_File Transfers"
msgstr "/Tools/_File Transfers"
@@ -11195,8 +11241,8 @@ msgstr "Manual"
msgid "By status"
msgstr "By status"
-msgid "By log size"
-msgstr "By log size"
+msgid "By recent log activity"
+msgstr ""
#, fuzzy, c-format
msgid "%s disconnected"
@@ -11214,6 +11260,9 @@ msgstr "_Reconnect"
msgid "Re-enable"
msgstr "_Rename"
+msgid "SSL FAQs"
+msgstr ""
+
#, fuzzy
msgid "Welcome back!"
msgstr "%s came back"
@@ -11313,6 +11362,9 @@ msgstr ""
msgid "A_lias:"
msgstr "Alias:"
+msgid "_Group:"
+msgstr "_Group:"
+
msgid "Auto_join when account becomes online."
msgstr ""
@@ -11372,14 +11424,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr "Invite Buddy Into Chat Room"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-
msgid "_Buddy:"
msgstr "_Buddy:"
@@ -11459,6 +11503,22 @@ msgstr "/Conversation/_Save As..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Conversation/Clear"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Conversation/_Close"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Conversation/_Close"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Conversation/_Close"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Conversation/View _Log"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Conversation/Se_nd File..."
@@ -11539,6 +11599,18 @@ msgstr "/_Conversation"
msgid "/Conversation/View Log"
msgstr "/Conversation/View Log"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Conversation/_Close"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Conversation/View Log"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Conversation/_Close"
+
msgid "/Conversation/Send File..."
msgstr "/Conversation/Send File..."
@@ -11739,6 +11811,9 @@ msgstr "Address"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "support"
@@ -11892,6 +11967,10 @@ msgid "Ubuntu Georgian Translators"
msgstr "Current Translators"
#, fuzzy
+msgid "Khmer"
+msgstr "Opera"
+
+#, fuzzy
msgid "Kannada"
msgstr "Banned"
@@ -11915,6 +11994,10 @@ msgid "Macedonian"
msgstr "Macedonian"
#, fuzzy
+msgid "Mongolian"
+msgstr "Macedonian"
+
+#, fuzzy
msgid "Bokmål Norwegian"
msgstr "Norwegian"
@@ -12023,8 +12106,25 @@ msgid ""
"<BR><BR>"
msgstr ""
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, fuzzy, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"4\">IRC:</FONT> #Pidgin on irc.freenode.net<BR><BR>"
+
#, fuzzy, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"4\">IRC:</FONT> #Pidgin on irc.freenode.net<BR><BR>"
#, fuzzy
@@ -12367,15 +12467,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr "New mail notifications"
-msgid "_Copy Email Address"
-msgstr "_Copy Email Address"
-
-msgid "_Open Link in Browser"
-msgstr "_Open Link in Browser"
-
-msgid "_Copy Link Location"
-msgstr "_Copy Link Location"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12640,6 +12731,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12657,6 +12749,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12688,16 +12781,27 @@ msgstr ""
msgid "Pidgin"
msgstr "Paging"
-#, fuzzy
-msgid "Open All Messages"
-msgstr "Send Message"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
+
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
#, fuzzy
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgid "Calling..."
+msgstr "Calculating..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
msgstr ""
-"<span weight=\"bold\" size=\"larger\">You have mail!</span>\n"
-"\n"
-"%s"
#, c-format
msgid "%s has %d new message."
@@ -12727,6 +12831,35 @@ msgid ""
msgstr ""
"The 'Manual' browser command has been chosen, but no command has been set."
+#, fuzzy
+msgid "Open All Messages"
+msgstr "Send Message"
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr ""
+"<span weight=\"bold\" size=\"larger\">You have mail!</span>\n"
+"\n"
+"%s"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "New Buddy Pounce"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr ""
+"<span weight=\"bold\" size=\"larger\">You have mail!</span>\n"
+"\n"
+"%s"
+
+#, fuzzy
+msgid "No message"
+msgstr "(1 message)"
+
msgid "The following plugins will be unloaded."
msgstr ""
@@ -12780,6 +12913,10 @@ msgstr ""
msgid "Select a file"
msgstr "Select a file"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Edit Buddy Pounce"
+
#. Create the "Pounce on Whom" frame.
#, fuzzy
msgid "Pounce on Whom"
@@ -12865,6 +13002,50 @@ msgstr ""
msgid "Pounce Target"
msgstr "Pounce When"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "Buddy starts _typing"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "User is typing..."
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "Si_gn on"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "Retur_n from idle"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "_Return from away"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "Ping"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "Sign _off"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "%s became idle"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "When away"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Send a _message"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "Unknown pounce event. Please report this!"
+
msgid "Smiley theme failed to unpack."
msgstr ""
@@ -12889,6 +13070,12 @@ msgstr "Shortcuts"
msgid "Cl_ose conversations with the Escape key"
msgstr "Conversations with %s"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Buddy List"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "System Tray Icon"
@@ -13014,10 +13201,6 @@ msgstr ""
msgid "Cannot start browser configuration program."
msgstr "Cannot get user information"
-#, fuzzy
-msgid "ST_UN server:"
-msgstr "_Server:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr ""
@@ -13045,6 +13228,10 @@ msgstr "_Start Port:"
msgid "_End port:"
msgstr "_End Port:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
#, fuzzy
msgid "Proxy Server &amp; Browser"
msgstr "Proxy Server"
@@ -13074,6 +13261,10 @@ msgstr "Proxy Server"
msgid "No proxy"
msgstr "No proxy"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "_User:"
@@ -13244,14 +13435,14 @@ msgid "Auto-away"
msgstr "Auto-away"
#, fuzzy
-msgid "Change status when _idle"
-msgstr "Set away _when idle"
-
-#, fuzzy
msgid "_Minutes before becoming idle:"
msgstr "_Minutes before setting away:"
#, fuzzy
+msgid "Change status when _idle"
+msgstr "Set away _when idle"
+
+#, fuzzy
msgid "Change _status to:"
msgstr "Change Address To:"
@@ -13409,6 +13600,12 @@ msgstr "Sa_ve & Use"
msgid "Status for %s"
msgstr "Status: %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
#, fuzzy
msgid "Custom Smiley"
msgstr "Insert smiley"
@@ -13419,15 +13616,15 @@ msgstr ""
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
+msgstr ""
+
#, fuzzy
msgid "Duplicate Shortcut"
msgstr "Public key file"
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
-msgstr ""
-
#, fuzzy
msgid "Please select an image for the smiley."
msgstr "Please enter a new name for the selected group."
@@ -13441,18 +13638,22 @@ msgid "Add Smiley"
msgstr "Smile!"
#, fuzzy
-msgid "Smiley _Image"
+msgid "_Image:"
msgstr "Save Image"
-#. Smiley shortcut
+#. Shortcut text
#, fuzzy
-msgid "Smiley S_hortcut"
+msgid "S_hortcut text:"
msgstr "Shortcuts"
#, fuzzy
msgid "Smiley"
msgstr "Smile!"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "Shortcuts"
+
msgid "Custom Smiley Manager"
msgstr ""
@@ -13581,6 +13782,16 @@ msgid ""
msgstr ""
#, fuzzy
+msgid "_Open Link"
+msgstr "_Open link in:"
+
+msgid "_Copy Link Location"
+msgstr "_Copy Link Location"
+
+msgid "_Copy Email Address"
+msgstr "_Copy Email Address"
+
+#, fuzzy
msgid "Save File"
msgstr "Save File..."
@@ -14607,10 +14818,6 @@ msgid "Only when docked"
msgstr ""
#, fuzzy
-msgid "_Flash window when chat messages are received"
-msgstr "_Flash Window when messages are received"
-
-#, fuzzy
msgid "Windows Pidgin Options"
msgstr "Login Options"
@@ -14663,6 +14870,231 @@ msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr ""
#, fuzzy
+#~ msgid "Invite message"
+#~ msgstr "(1 message)"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Please enter the name of the user you wish to invite, along with an "
+#~ "optional invite message."
+
+#, fuzzy
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "Unable To Retrieve Buddy List"
+
+#~ msgid ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+#~ msgstr ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+
+#, fuzzy
+#~ msgid "Add buddy Q&A"
+#~ msgstr "Add Buddy"
+
+#, fuzzy
+#~ msgid "Can not decrypt get server reply"
+#~ msgstr "Cannot get server information"
+
+#, fuzzy
+#~ msgid "Keep alive error"
+#~ msgstr "Reading error"
+
+#, fuzzy
+#~ msgid ""
+#~ "Lost connection with server:\n"
+#~ "%d, %s"
+#~ msgstr "You were disconnected from the server."
+
+#, fuzzy
+#~ msgid "Connecting server ..."
+#~ msgstr "Connect server"
+
+#, fuzzy
+#~ msgid "Failed to send IM."
+#~ msgstr "Failed to join chat"
+
+#~ msgid "Looking up %s"
+#~ msgstr "Looking up %s"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "Connect to %s failed"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Signon: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "Unable to write file %s."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "Unable to read file %s."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "Message too long, last %s bytes truncated."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s not currently logged in."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "Warning of %s not allowed."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "Chat in %s is not available."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "You are sending messages too fast to %s."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "You missed an IM from %s because it was too big."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr "You missed an IM from %s because it was sent too fast."
+
+#~ msgid "Failure."
+#~ msgstr "Failure."
+
+#~ msgid "Too many matches."
+#~ msgstr "Too many matches."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "Need more qualifiers."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "Dir service temporarily unavailable."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "Email lookup restricted."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "Keyword ignored."
+
+#~ msgid "No keywords."
+#~ msgstr "No keywords."
+
+#~ msgid "User has no directory information."
+#~ msgstr "User has no directory information."
+
+#~ msgid "Country not supported."
+#~ msgstr "Country not supported."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Failure unknown: %s."
+
+#, fuzzy
+#~ msgid "Incorrect username or password."
+#~ msgstr "Incorrect nickname or password."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "The service is temporarily unavailable."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "Your warning level is currently too high to log in."
+
+#~ 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 ""
+#~ "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."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "An unknown signon error has occurred: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "An unknown error, %d, has occurred. Info: %s"
+
+#, fuzzy
+#~ msgid "Invalid Groupname"
+#~ msgstr "Invalid group"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Connection Closed"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "Waiting for reply..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "TOC has come back from its pause. You may now send messages again."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "Password Change Successful"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Get Dir Info"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Set Dir Info"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "Could not open %s for writing!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr "File transfer failed; other side probably cancelled."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "Could not connect for transfer."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "Could not write file header. The file will not be transferred."
+
+#, fuzzy
+#~ msgid "Save As..."
+#~ msgstr "Save Icon As..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s requests you to send them a file"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "TOC Protocol Plugin"
+
+#~ msgid "User information for %s unavailable"
+#~ msgstr "User information for %s unavailable"
+
+#~ msgid "%s Options"
+#~ msgstr "%s Options"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Proxy Options"
+
+#~ msgid "By log size"
+#~ msgstr "By log size"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_Open Link in Browser"
+
+#, fuzzy
+#~ msgid "ST_UN server:"
+#~ msgstr "_Server:"
+
+#, fuzzy
+#~ msgid "Smiley _Image"
+#~ msgstr "Save Image"
+
+#, fuzzy
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "Shortcuts"
+
+#, fuzzy
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "_Flash Window when messages are received"
+
+#, fuzzy
#~ msgid "A group with the name already exists."
#~ msgstr "A folder with that name already exists"
@@ -14731,13 +15163,6 @@ msgstr ""
#~ msgstr "Are you sure you want to remove the away message \"%s\"?"
#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr "%s on %s (%s)"
-
-#, fuzzy
#~ msgid "System Message"
#~ msgstr "Send Message"
@@ -14878,9 +15303,6 @@ msgstr ""
#~ msgid "Invalid screen name"
#~ msgstr "Invalid Username"
-#~ msgid "Unable to make SSL connection to server."
-#~ msgstr "Unable to make SSL connection to server."
-
#~ msgid "Too evil (sender)"
#~ msgstr "Too evil (sender)"
@@ -15344,9 +15766,6 @@ msgstr ""
#~ msgid "_Idle"
#~ msgstr "_Idle"
-#~ msgid "Retur_n from idle"
-#~ msgstr "Retur_n from idle"
-
#~ msgid "Pounce Action"
#~ msgstr "Pounce Action"
@@ -15629,12 +16048,12 @@ msgstr ""
#~ msgid ""
#~ "When this happens, TOC ignores any messages sent to it, and may kick you "
-#~ "off if you send a message. Pidgin will prevent anything from going through. "
-#~ "This is only temporary, please be patient."
+#~ "off if you send a message. Pidgin will prevent anything from going "
+#~ "through. This is only temporary, please be patient."
#~ msgstr ""
#~ "When this happens, TOC ignores any messages sent to it, and may kick you "
-#~ "off if you send a message. Pidgin will prevent anything from going through. "
-#~ "This is only temporary, please be patient."
+#~ "off if you send a message. Pidgin will prevent anything from going "
+#~ "through. This is only temporary, please be patient."
#~ msgid "Pidgin - Save As..."
#~ msgstr "Pidgin - Save As..."
@@ -15648,13 +16067,13 @@ msgstr ""
#~ msgid ""
#~ "The normal authentication method has failed. This means either your "
#~ "password is incorrect, or Yahoo!'s authentication scheme has changed. "
-#~ "Pidgin will now attempt to log in using Web Messenger authentication, which "
-#~ "will result in reduced functionality and features."
+#~ "Pidgin will now attempt to log in using Web Messenger authentication, "
+#~ "which will result in reduced functionality and features."
#~ msgstr ""
#~ "The normal authentication method has failed. This means either your "
#~ "password is incorrect, or Yahoo!'s authentication scheme has changed. "
-#~ "Pidgin will now attempt to log in using Web Messenger authentication, which "
-#~ "will result in reduced functionality and features."
+#~ "Pidgin will now attempt to log in using Web Messenger authentication, "
+#~ "which will result in reduced functionality and features."
#~ msgid "Unable to read"
#~ msgstr "Unable to read"
@@ -15677,9 +16096,6 @@ msgstr ""
#~ msgstr[0] "(%d message)"
#~ msgstr[1] "(%d messages)"
-#~ msgid "(1 message)"
-#~ msgstr "(1 message)"
-
#, fuzzy
#~ msgid "Default auto-away"
#~ msgstr "Auto-away"
@@ -15782,9 +16198,6 @@ msgstr ""
#~ msgid "Away title: "
#~ msgstr "Away title: "
-#~ msgid "Buddy List Error"
-#~ msgstr "Buddy List Error"
-
#~ msgid "Size of the expander arrow"
#~ msgstr "Size of the expander arrow"
@@ -16187,12 +16600,12 @@ msgstr ""
#~ msgstr "Unable to load preferences"
#~ msgid ""
-#~ "Pidgin was not able to load your preferences because they are stored in an "
-#~ "old format that is no longer used. Please reconfigure your settings "
+#~ "Pidgin 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 ""
-#~ "Pidgin was not able to load your preferences because they are stored in an "
-#~ "old format that is no longer used. Please reconfigure your settings "
+#~ "Pidgin 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."
#~ msgid "Slightly less boring default"
@@ -16298,18 +16711,18 @@ msgstr ""
#~ msgstr "Unable to access directory"
#~ msgid ""
-#~ "Pidgin was unable to search the Directory because it was unable to connect "
-#~ "to the directory server. Please try again later."
+#~ "Pidgin was unable to search the Directory because it was unable to "
+#~ "connect to the directory server. Please try again later."
#~ msgstr ""
-#~ "Pidgin was unable to search the Directory because it was unable to connect "
-#~ "to the directory server. Please try again later."
+#~ "Pidgin was unable to search the Directory because it was unable to "
+#~ "connect to the directory server. Please try again later."
#~ msgid ""
-#~ "Pidgin was unable to change your password due to an error connecting to the "
-#~ "Gadu-Gadu server. Please try again later."
+#~ "Pidgin was unable to change your password due to an error connecting to "
+#~ "the Gadu-Gadu server. Please try again later."
#~ msgstr ""
-#~ "Pidgin was unable to change your password due to an error connecting to the "
-#~ "Gadu-Gadu server. Please try again later."
+#~ "Pidgin was unable to change your password due to an error connecting to "
+#~ "the Gadu-Gadu server. Please try again later."
#~ msgid "Directory Search"
#~ msgstr "Directory Search"
@@ -16318,11 +16731,11 @@ msgstr ""
#~ msgstr "Unable to access user profile."
#~ msgid ""
-#~ "Pidgin was unable to access this user's profile due to an error connecting "
-#~ "to the directory server. Please try again later."
+#~ "Pidgin was unable to access this user's profile due to an error "
+#~ "connecting to the directory server. Please try again later."
#~ msgstr ""
-#~ "Pidgin was unable to access this user's profile due to an error connecting "
-#~ "to the directory server. Please try again later."
+#~ "Pidgin was unable to access this user's profile due to an error "
+#~ "connecting to the directory server. Please try again later."
#~ msgid "Pidgin encountered an error communicating with the ICQ server."
#~ msgstr "Pidgin encountered an error communicating with the ICQ server."
@@ -16461,9 +16874,6 @@ msgstr ""
#~ "%s has invited %s to the chat room %s:\n"
#~ "<b>%s</b>"
-#~ msgid "Sorry, I ran out for a bit!"
-#~ msgstr "Sorry, I ran out for a bit!"
-
#~ msgid ""
#~ "Unable to guess the image type based on the file extension supplied. "
#~ "Defaulting to PNG."
diff --git a/po/en_GB.po b/po/en_GB.po
index de7c809f9b..715a703ddd 100644
--- a/po/en_GB.po
+++ b/po/en_GB.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin 2.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
+"POT-Creation-Date: 2009-04-30 10:37-0400\n"
"PO-Revision-Date: 2006-02-07 13:57+0000\n"
"Last-Translator: Luke Ross <luke@lukeross.name>\n"
"Language-Team: <en_GB@li.org>\n"
@@ -25,13 +25,13 @@ msgstr "Finch"
msgid "%s. Try `%s -h' for more information.\n"
msgstr "%s. Try `%s -h' for more information.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -604,21 +604,6 @@ msgstr ""
msgid "Send To"
msgstr "Send To"
-#, fuzzy
-msgid "Invite message"
-msgstr "Insert in message"
-
-msgid "Invite"
-msgstr "Invite"
-
-#, fuzzy
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-
msgid "Conversation"
msgstr "Conversation"
@@ -869,6 +854,41 @@ msgstr "Conversations"
msgid "System Log"
msgstr "System Log"
+#, fuzzy
+msgid "Calling ... "
+msgstr "Calculating..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "Accept"
+
+msgid "Reject"
+msgstr "Reject"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "You have parted the channel%s%s"
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "Emails"
@@ -903,6 +923,9 @@ msgstr "Continue"
msgid "IM"
msgstr "IM"
+msgid "Invite"
+msgstr "Invite"
+
msgid "(none)"
msgstr "(none)"
@@ -1105,7 +1128,6 @@ msgstr "%s has gone away. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s has sent you a message. (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "Unknown pounce event. Please report this!"
@@ -1151,7 +1173,6 @@ msgstr "Minutes before changing status"
msgid "Change status to"
msgstr "Change status to"
-#. Conversations
msgid "Conversations"
msgstr "Conversations"
@@ -1473,7 +1494,6 @@ msgstr ""
"When a new conversation is opened this plug-in will insert the last "
"conversation into the current conversation."
-#, c-format
msgid "Online"
msgstr "Online"
@@ -1517,6 +1537,28 @@ msgstr "GntLastlog"
msgid "Lastlog plugin."
msgstr "Lastlog plugin."
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "Tune URL"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "accounts"
@@ -1617,13 +1659,6 @@ msgstr "Accept certificate for %s?"
msgid "SSL Certificate Verification"
msgstr "SSL Certificate Verification"
-#. Number of actions
-msgid "Accept"
-msgstr "Accept"
-
-msgid "Reject"
-msgstr "Reject"
-
msgid "_View Certificate..."
msgstr "_View Certificate..."
@@ -1772,6 +1807,18 @@ msgstr "%s left the room."
msgid "%s left the room (%s)."
msgstr "%s left the room (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Invite to Conference"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "Failed to get connection: %s"
@@ -1906,7 +1953,6 @@ msgstr "Starting transfer of %s from %s"
msgid "Transfer of file %s complete"
msgstr "Transfer of file %s complete"
-#, c-format
msgid "File transfer complete"
msgstr "File transfer complete"
@@ -1914,7 +1960,6 @@ msgstr "File transfer complete"
msgid "You canceled the transfer of %s"
msgstr "You cancelled the transfer of %s"
-#, c-format
msgid "File transfer cancelled"
msgstr "File transfer cancelled"
@@ -2121,7 +2166,6 @@ msgstr "(%s) %s <AUTO-REPLY>: %s\n"
msgid "You are using %s, but this plugin requires %s."
msgstr "You are using %s, but this plugin requires %s."
-#, c-format
msgid "This plugin has not defined an ID."
msgstr "This plugin has not defined an ID."
@@ -2604,6 +2648,32 @@ msgstr "Save offline messages in pounce"
msgid "Do not ask. Always save in pounce."
msgstr "Do not ask. Always save in pounce."
+#, fuzzy
+msgid "One Time Password"
+msgstr "Enter Password"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2813,7 +2883,6 @@ msgid ""
msgstr ""
"Unable to establish connection with the local mDNS server - is it running?"
-#. Creating the options for the protocol
msgid "First name"
msgstr "Forename"
@@ -2845,6 +2914,11 @@ msgstr "Bonjour Protocol Plug-in"
msgid "Purple Person"
msgstr "Purple Person"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "Locality"
+
msgid "Bonjour"
msgstr "Bonjour"
@@ -3002,13 +3076,13 @@ msgstr "Select a chat for buddy: %s"
msgid "Add to chat..."
msgstr "Add to chat..."
+#. Global
msgid "Available"
msgstr "Available"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "Away"
@@ -3349,6 +3423,17 @@ msgstr ""
"Your selected account name was rejected by the server. It probably contains "
"invalid characters."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "This chat name is already in use"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Nickname"
+
msgid "Cannot change nick"
msgstr "Cannot change nick"
@@ -3616,6 +3701,41 @@ msgstr "Invalid challenge from server"
msgid "SASL error"
msgstr "SASL error"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "No reason given."
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Unsupported Version"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"Could not establish a connection with the server:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"Could not establish a connection with the server:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "Unable to initialise connection"
+
+msgid "Unable to create socket"
+msgstr "Unable to create socket"
+
+msgid "Write error"
+msgstr "Write error"
+
msgid "Full Name"
msgstr "Full Name"
@@ -3682,6 +3802,10 @@ msgstr "Client"
msgid "Operating System"
msgstr "Operating System"
+#, fuzzy
+msgid "Local Time"
+msgstr "Local File:"
+
msgid "Last Activity"
msgstr "Last Activity"
@@ -3887,7 +4011,6 @@ msgstr "Chatty"
msgid "Extended Away"
msgstr "Extended Away"
-#, c-format
msgid "Do Not Disturb"
msgstr "Do Not Disturb"
@@ -4011,9 +4134,6 @@ msgstr "Find Rooms"
msgid "You require encryption, but it is not available on this server."
msgstr "You require encryption, but it is not available on this server."
-msgid "Write error"
-msgstr "Write error"
-
msgid "Ping timeout"
msgstr "Ping timeout"
@@ -4022,14 +4142,9 @@ msgstr "Read Error"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"Could not establish a connection with the server:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "Unable to create socket"
msgid "Invalid XMPP ID"
msgstr "Invalid XMPP ID"
@@ -4037,6 +4152,10 @@ msgstr "Invalid XMPP ID"
msgid "Invalid XMPP ID. Domain must be set."
msgstr "Invalid XMPP ID. Domain must be set."
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Failed to connect to server."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "Registration of %s@%s successful"
@@ -4122,9 +4241,18 @@ msgstr "Authenticating"
msgid "Re-initializing Stream"
msgstr "Re-initialising Stream"
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr "Not Authorised"
+msgid "Mood"
+msgstr "Mood"
+
+msgid "Now Listening"
+msgstr "Now Listening"
+
msgid "Both"
msgstr "Both"
@@ -4146,12 +4274,6 @@ msgstr "None"
msgid "Subscription"
msgstr "Subscription"
-msgid "Mood"
-msgstr "Mood"
-
-msgid "Now Listening"
-msgstr "Now Listening"
-
msgid "Mood Text"
msgstr "Mood Text"
@@ -4389,18 +4511,24 @@ msgstr "Unable to kick user %s"
msgid "Unable to ping user %s"
msgstr "Unable to ping user %s"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr "Unable to buzz, because there is nothing known about user %s."
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr "Unable to buzz, because user %s might be offline."
-#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+#, fuzzy, c-format
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "Unable to buzz, because the user %s does not support it."
+#, c-format
+msgid "Buzzing %s..."
+msgstr "Buzzing %s..."
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
msgid "Buzz"
@@ -4410,9 +4538,35 @@ msgstr "Buzz"
msgid "%s has buzzed you!"
msgstr "%s has buzzed you!"
-#, c-format
-msgid "Buzzing %s..."
-msgstr "Buzzing %s..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "Unable to send file to %s, invalid JID"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "Unable to send file to %s, user is not online"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr "Unable to send file to %s, not subscribed to user presence"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "Registration Failed"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr ""
+"Please select the resource of %s to which you would like to send a file"
+
+msgid "Select a Resource"
+msgstr "Select a Resource"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "Initiate _Chat"
msgid "config: Configure a chat room."
msgstr "config: Configure a chat room."
@@ -4567,6 +4721,21 @@ msgstr "Error joining chat %s"
msgid "Error in chat %s"
msgstr "Error in chat %s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "An error occurred while opening the file."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "File Transfer Failed"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Failed to open file \"%s\": %s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr "Unable to send file to %s, user does not support file transfers"
@@ -4591,9 +4760,6 @@ msgid "Please select the resource of %s to which you would like to send a file"
msgstr ""
"Please select the resource of %s to which you would like to send a file"
-msgid "Select a Resource"
-msgstr "Select a Resource"
-
msgid "Edit User Mood"
msgstr "Edit User Mood"
@@ -4628,8 +4794,19 @@ msgstr "Actions"
msgid "Select an action"
msgstr "Select an action"
-msgid "Unable to retrieve MSN Address Book"
-msgstr "Unable to retrieve MSN Address Book"
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr "Unable to add \"%s\"."
+
+msgid "Buddy Add error"
+msgstr ""
+
+#, fuzzy
+msgid "The username specified does not exist."
+msgstr "The username specified is invalid."
#, c-format
msgid "Buddy list synchronization issue in %s (%s)"
@@ -4859,7 +5036,7 @@ msgstr "Kids Passport without parental consent"
msgid "Passport account not yet verified"
msgstr "Passport account not yet verified"
-#, fuzzy, c-format
+#, fuzzy
msgid "Passport account suspended"
msgstr "Passport account not yet verified"
@@ -4955,6 +5132,13 @@ msgstr "Send a mobile message."
msgid "Page"
msgstr "Page"
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "Work"
+
msgid "Has you"
msgstr "Has you"
@@ -4991,6 +5175,14 @@ msgstr "Artist"
msgid "Album"
msgstr "Album"
+#, fuzzy
+msgid "Game Title"
+msgstr "Tune Title"
+
+#, fuzzy
+msgid "Office Title"
+msgstr "Tune Title"
+
msgid "Set Friendly Name..."
msgstr "Set Friendly Name..."
@@ -5182,8 +5374,9 @@ msgstr ""
"Could not find any information in the user's profile. The user most likely "
"does not exist."
-msgid "Profile URL"
-msgstr "Profile URL"
+#, fuzzy
+msgid "View web profile"
+msgstr "Hide when offline"
#. *< type
#. *< ui_requirement
@@ -5438,19 +5631,15 @@ msgstr "Add to Address Book"
msgid "Do you want to delete this buddy from your address book as well?"
msgstr "Do you want to add this buddy to your buddy list?"
-#. only notify the user about problems adding to the friends list
-#. * maybe we should do something else for other lists, but it probably
-#. * won't cause too many problems if we just ignore it
-#, c-format
-msgid "Unable to add \"%s\"."
-msgstr "Unable to add \"%s\"."
-
msgid "The username specified is invalid."
msgstr "The username specified is invalid."
msgid "This Hotmail account may not be active."
msgstr "This Hotmail account may not be active."
+msgid "Profile URL"
+msgstr "Profile URL"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5464,18 +5653,12 @@ msgstr "This Hotmail account may not be active."
msgid "MSN Protocol Plugin"
msgstr "MSN Protocol Plug-in"
-msgid "Missing Cipher"
-msgstr "Missing Cipher"
-
-msgid "The RC4 cipher could not be found"
-msgstr "The RC4 cipher could not be found"
+#, c-format
+msgid "No such user: %s"
+msgstr "No such user: %s"
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
-msgstr ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
+msgid "User lookup"
+msgstr "User lookup"
msgid "Reading challenge"
msgstr "Reading challenge"
@@ -5486,11 +5669,20 @@ msgstr "Unexpected challenge length from server"
msgid "Logging in"
msgstr "Logging in"
-#, fuzzy, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] "Connection to server lost (no data received within %d seconds)"
-msgstr[1] "Connection to server lost (no data received within %d seconds)"
+msgid "MySpaceIM - No Username Set"
+msgstr "MySpaceIM - No Username Set"
+
+msgid "You appear to have no MySpace username."
+msgstr "You appear to have no MySpace username."
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr ""
+"Lost connection with server\n"
+"%s"
#. Can't write _()'d strings in array initializers. Workaround.
msgid "New mail messages"
@@ -5511,14 +5703,25 @@ msgstr "New picture comments"
msgid "MySpace"
msgstr "MySpace"
-msgid "MySpaceIM - No Username Set"
-msgstr "MySpaceIM - No Username Set"
+msgid "IM Friends"
+msgstr "IM Friends"
-msgid "You appear to have no MySpace username."
-msgstr "You appear to have no MySpace username."
+#, fuzzy, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[1] ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
-msgstr "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgid "Add contacts from server"
+msgstr "Add contacts from server"
#. The session is now set up, ready to be connected. This emits the
#. * signedOn signal, so clients can now do anything with msimprpl, and
@@ -5545,6 +5748,19 @@ msgstr ""
msgid "MySpaceIM Error"
msgstr "MySpaceIM Error"
+msgid "Invalid input condition"
+msgstr "Invalid input condition"
+
+msgid "Read buffer full (2)"
+msgstr "Read buffer full (2)"
+
+msgid "Unparseable message"
+msgstr "Unparseable message"
+
+#, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr "Couldn't connect to host: %s (%d)"
+
msgid "Failed to add buddy"
msgstr "Failed to add buddy"
@@ -5554,13 +5770,6 @@ msgstr "'addbuddy' command failed."
msgid "persist command failed"
msgstr "persist command failed"
-#, c-format
-msgid "No such user: %s"
-msgstr "No such user: %s"
-
-msgid "User lookup"
-msgstr "User lookup"
-
msgid "Failed to remove buddy"
msgstr "Failed to remove buddy"
@@ -5570,38 +5779,18 @@ msgstr "'delbuddy' command failed"
msgid "blocklist command failed"
msgstr "blocklist command failed"
-msgid "Invalid input condition"
-msgstr "Invalid input condition"
-
-msgid "Read buffer full (2)"
-msgstr "Read buffer full (2)"
-
-msgid "Unparseable message"
-msgstr "Unparseable message"
-
-#, c-format
-msgid "Couldn't connect to host: %s (%d)"
-msgstr "Couldn't connect to host: %s (%d)"
+msgid "Missing Cipher"
+msgstr "Missing Cipher"
-msgid "IM Friends"
-msgstr "IM Friends"
+msgid "The RC4 cipher could not be found"
+msgstr "The RC4 cipher could not be found"
-#, fuzzy, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[1] ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-
-msgid "Add contacts from server"
-msgstr "Add contacts from server"
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
msgid "Add friends from MySpace.com"
msgstr "Add friends from MySpace.com"
@@ -5643,9 +5832,6 @@ msgstr "Base font size (points)"
msgid "User"
msgstr "User"
-msgid "Profile"
-msgstr "Profile"
-
msgid "Headline"
msgstr "Headline"
@@ -5658,16 +5844,6 @@ msgstr "Total Friends"
msgid "Client Version"
msgstr "Client Version"
-#. Protocol won't log in now without a username set.. Disconnect
-msgid "No username set"
-msgstr "No username set"
-
-msgid "MySpaceIM - Please Set a Username"
-msgstr "MySpaceIM - Please Set a Username"
-
-msgid "Please enter a username to check its availability:"
-msgstr "Please enter a username to check its availability:"
-
msgid "MySpaceIM - Username Available"
msgstr "MySpaceIM - Username Available"
@@ -5677,12 +5853,22 @@ msgstr "This username is available. Would you like to set it?"
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr "ONCE SET, THIS CANNOT BE CHANGED!"
+msgid "MySpaceIM - Please Set a Username"
+msgstr "MySpaceIM - Please Set a Username"
+
msgid "This username is unavailable."
msgstr "This username is not available."
msgid "Please try another username:"
msgstr "Please try another username:"
+#. Protocol won't log in now without a username set.. Disconnect
+msgid "No username set"
+msgstr "No username set"
+
+msgid "Please enter a username to check its availability:"
+msgstr "Please enter a username to check its availability:"
+
#. TODO: icons for each zap
#. Lots of comments for translators:
#. Zap means "to strike suddenly and forcefully as if with a
@@ -6069,7 +6255,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr "Error: SSL support is not installed."
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr "This conference has been closed. No more messages can be sent."
@@ -6333,23 +6518,18 @@ msgstr "Camera"
msgid "Screen Sharing"
msgstr ""
-#, c-format
msgid "Free For Chat"
msgstr "Free For Chat"
-#, c-format
msgid "Not Available"
msgstr "Not Available"
-#, c-format
msgid "Occupied"
msgstr "Occupied"
-#, c-format
msgid "Web Aware"
msgstr "Web Aware"
-#, c-format
msgid "Invisible"
msgstr "Invisible"
@@ -6398,7 +6578,7 @@ msgstr ""
"Usernames must be a valid email address, or start with a letter and contain "
"only letters, numbers and spaces, or contain only numbers."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr "Invalid username."
@@ -6414,7 +6594,7 @@ msgstr "Your account is currently suspended."
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "The AOL Instant Messenger service is temporarily unavailable."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6448,13 +6628,9 @@ msgstr "Enter the 6 digit number from the digital display."
msgid "_OK"
msgstr "_OK"
-#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
-msgstr ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
+#, fuzzy, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
+msgstr "You may be disconnected shortly. Check %s for updates."
msgid "Unable to get a valid AIM login hash."
msgstr "Unable to get a valid AIM login hash."
@@ -6597,7 +6773,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] "You missed %hu message from %s for an unknown reason."
msgstr[1] "You missed %hu messages from %s for an unknown reason."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "Unable to send message: %s"
@@ -6619,6 +6795,9 @@ msgstr "Online Since"
msgid "Member Since"
msgstr "Member Since"
+msgid "Profile"
+msgstr "Profile"
+
msgid "Your AIM connection may be lost."
msgstr "Your AIM connection may be lost."
@@ -6905,6 +7084,7 @@ msgstr "C_onnect"
msgid "Get AIM Info"
msgstr "Get AIM Info"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "Edit Buddy Comment"
@@ -7012,7 +7192,6 @@ msgstr "Asking %s to connect to us at %s:%hu for Direct IM."
msgid "Attempting to connect to %s:%hu."
msgstr "Attempting to connect to %s:%hu."
-#, c-format
msgid "Attempting to connect via proxy server."
msgstr "Attempting to connect via proxy server."
@@ -7108,7 +7287,7 @@ msgstr "Other"
msgid "Visible"
msgstr "Invisible"
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
#, fuzzy
@@ -7199,16 +7378,48 @@ msgstr "Last Update"
msgid "Could not change buddy information."
msgstr "Please enter buddy information."
-#, c-format
-msgid "%d needs Q&A"
+msgid "Mobile"
+msgstr "Mobile"
+
+msgid "Note"
+msgstr "Note"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "Buddy Icon"
+
+msgid "Change his/her memo as you like"
msgstr ""
#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "Add Buddy"
+msgid "_Modify"
+msgstr "Modify"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "Modify"
#, fuzzy
-msgid "Input answer here"
+msgid "Server says:"
+msgstr "Server busy"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%u requires verification"
+msgstr "Require authorisation"
+
+#, fuzzy
+msgid "Add buddy question"
+msgstr "Add buddy to your list?"
+
+#, fuzzy
+msgid "Enter answer here"
msgstr "Enter request here"
msgid "Send"
@@ -7222,18 +7433,19 @@ msgid "Authorization denied message:"
msgstr "Authorisation denied message:"
#, fuzzy
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr "Sorry, you are not my type..."
#, fuzzy, c-format
-msgid "%d needs authentication"
+msgid "%u needs authorization"
msgstr "User %d needs authentication"
#, fuzzy
msgid "Add buddy authorize"
msgstr "Add buddy to your list?"
-msgid "Input request here"
+#, fuzzy
+msgid "Enter request here"
msgstr "Enter request here"
msgid "Would you be my friend?"
@@ -7256,7 +7468,7 @@ msgid "Failed sending authorize"
msgstr "Please authorise me!"
#, fuzzy, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr "Failed to remove buddy"
#, fuzzy, c-format
@@ -7301,6 +7513,10 @@ msgid "You can only search for permanent Qun\n"
msgstr "You can only search for permanent QQ groups\n"
#, fuzzy
+msgid "(Invalid UTF-8 string)"
+msgstr "Invalid proxy settings"
+
+#, fuzzy
msgid "Not member"
msgstr "I am not a member"
@@ -7343,16 +7559,19 @@ msgstr "This group does not allow others to join"
msgid "Join QQ Qun"
msgstr "Join Chat"
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
-msgstr ""
+msgid "Input request here"
+msgstr "Enter request here"
+
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "You have successfully modified Qun member"
#, fuzzy
msgid "Successfully joined Qun"
msgstr "You have successfully modified Qun member"
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
msgid "QQ Qun Operation"
@@ -7362,7 +7581,7 @@ msgstr "QQ Qun Operation"
msgid "Failed:"
msgstr "Failed"
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
#, fuzzy
@@ -7377,11 +7596,11 @@ msgstr ""
"this operation will eventually remove this Qun."
#, fuzzy
-msgid "Sorry, you are not our style ..."
+msgid "Sorry, you are not our style"
msgstr "Sorry, you are not my type..."
#, fuzzy
-msgid "Successfully changed Qun member"
+msgid "Successfully changed Qun members"
msgstr "You have successfully modified Qun member"
#, fuzzy
@@ -7392,35 +7611,35 @@ msgid "You have successfully created a Qun"
msgstr "You have successfully created a Qun"
#, fuzzy
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr "Would you like to set up the Qun details now?"
msgid "Setup"
msgstr "Setup"
#, fuzzy, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr "User %d requested to join group %d"
#, fuzzy, c-format
-msgid "%d request to join Qun %d"
+msgid "%u request to join Qun %u"
msgstr "User %d requested to join group %d"
#, fuzzy, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr "Failed to join buddy in chat"
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr "Remove Buddy"
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "Remove Buddy"
#, c-format
msgid "Unknown-%d"
@@ -7537,6 +7756,13 @@ msgstr "<b>Last Refreshed</b>: %s<br>\n"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<b>Currently Online</b>: %d<br>\n"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<b>Last Refreshed</b>: %s<br>\n"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7544,7 +7770,7 @@ msgid "<i>Feel free to join us!</i> :)"
msgstr ""
#, fuzzy, c-format
-msgid "About OpenQ r%s"
+msgid "About OpenQ %s"
msgstr "About %s"
#, fuzzy
@@ -7565,6 +7791,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "About %s"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Home Address"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7596,7 +7826,6 @@ msgstr ""
msgid "QQ2008"
msgstr ""
-#. #endif
#, fuzzy
msgid "Connect by TCP"
msgstr "Connect using TCP"
@@ -7609,6 +7838,9 @@ msgstr "Server port"
msgid "Show server news"
msgstr "Server address"
+msgid "Show chat room when msg comes"
+msgstr ""
+
#, fuzzy
msgid "Keep alive interval (seconds)"
msgstr "Keep alive error"
@@ -7618,11 +7850,7 @@ msgid "Update interval (seconds)"
msgstr "Keep alive error"
#, fuzzy
-msgid "Can not decrypt server reply"
-msgstr "Cannot get server information"
-
-#, fuzzy
-msgid "Can not decrypt get server reply"
+msgid "Cannot decrypt server reply"
msgstr "Cannot get server information"
#, c-format
@@ -7645,21 +7873,24 @@ msgid "Activation required"
msgstr "Registration Required"
#, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr ""
-msgid "Keep alive error"
-msgstr "Keep alive error"
+#, fuzzy
+msgid "Could not decrypt server reply"
+msgstr "Cannot get server information"
#, fuzzy
-msgid "Requesting captcha ..."
+msgid "Requesting captcha"
msgstr "Requesting %s's attention..."
-msgid "Checking code of captcha ..."
-msgstr ""
+#, fuzzy
+msgid "Checking captcha"
+msgstr "Requesting %s's attention..."
-msgid "Failed captcha verify"
-msgstr ""
+#, fuzzy
+msgid "Failed captcha verification"
+msgstr "Failed Yahoo! Authentication"
#, fuzzy
msgid "Captcha Image"
@@ -7669,38 +7900,30 @@ msgstr "Save Image"
msgid "Enter code"
msgstr "Enter Password"
-msgid "QQ Captcha Verifing"
-msgstr ""
+#, fuzzy
+msgid "QQ Captcha Verification"
+msgstr "SSL Certificate Verification"
#, fuzzy
msgid "Enter the text from the image"
msgstr "Enter the name of the group"
#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
+msgid "Unknown reply when checking password (0x%02X)"
msgstr ""
#, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
msgstr ""
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "Unable to connect."
msgid "Socket error"
msgstr "Socket error"
-#, fuzzy, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr ""
-"Lost connection with server:\n"
-"%s"
-
msgid "Unable to read from socket"
msgstr "Unable to read from socket"
@@ -7711,11 +7934,11 @@ msgid "Connection lost"
msgstr "Connection lost"
#, fuzzy
-msgid "Get server ..."
+msgid "Getting server"
msgstr "Set User Info..."
#, fuzzy
-msgid "Request token"
+msgid "Requesting token"
msgstr "Request denied"
msgid "Couldn't resolve host"
@@ -7726,16 +7949,13 @@ msgid "Invalid server or port"
msgstr "Invalid error"
#, fuzzy
-msgid "Connecting server ..."
-msgstr "Connect server"
+msgid "Connecting to server"
+msgstr "Connecting to SILC Server"
#, fuzzy
msgid "QQ Error"
msgstr "QQid Error"
-msgid "Failed to send IM."
-msgstr "Failed to send IM."
-
#, fuzzy, c-format
msgid ""
"Server News:\n"
@@ -7745,6 +7965,10 @@ msgid ""
msgstr "ICQ Server Relay"
#, fuzzy, c-format
+msgid "%s:%s"
+msgstr "%s (%s)"
+
+#, fuzzy, c-format
msgid "From %s:"
msgstr "From"
@@ -7754,32 +7978,30 @@ msgid ""
"%s"
msgstr "Server Instructions: %s"
-msgid "Unknow SERVER CMD"
-msgstr ""
+#, fuzzy
+msgid "Unknown SERVER CMD"
+msgstr "Unknown reason"
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
#, fuzzy
msgid "QQ Qun Command"
msgstr "Command"
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr ""
-
-msgid "Can not decrypt login reply"
-msgstr ""
+#, fuzzy
+msgid "Could not decrypt login reply"
+msgstr "Cannot get server information"
#, fuzzy
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr "Unknown reason"
#, fuzzy
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr "Unknown reason"
#, c-format
@@ -8599,9 +8821,6 @@ msgstr "Organisation"
msgid "Unit"
msgstr "Unit"
-msgid "Note"
-msgstr "Note"
-
msgid "Join Chat"
msgstr "Join Chat"
@@ -9249,6 +9468,10 @@ msgstr "Could not resolve hostname"
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr "SIP usernames may not contain whitespaces or @ symbols"
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "Server port"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -9283,192 +9506,12 @@ msgid "Auth Domain"
msgstr "Auth Domain"
#, c-format
-msgid "Looking up %s"
-msgstr "Looking up %s"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Connect to %s failed"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Signon: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "Unable to write file %s."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "Unable to read file %s."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "Message too long, last %s bytes truncated."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s not currently logged in."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "Warning of %s not allowed."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "A message has been dropped, you are exceeding the server speed limit."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "Chat in %s is not available."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "You are sending messages too fast to %s."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "You missed an IM from %s because it was too big."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "You missed an IM from %s because it was sent too fast."
-
-#, c-format
-msgid "Failure."
-msgstr "Failure."
-
-#, c-format
-msgid "Too many matches."
-msgstr "Too many matches."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "Need more qualifiers."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "Dir service temporarily unavailable."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "Email lookup restricted."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "Keyword ignored."
-
-#, c-format
-msgid "No keywords."
-msgstr "No keywords."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "User has no directory information."
-
-#, c-format
-msgid "Country not supported."
-msgstr "Country not supported."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Failure unknown: %s."
-
-#, c-format
-msgid "Incorrect username or password."
-msgstr "Incorrect username or password."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "The service is temporarily unavailable."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "Your warning level is currently too high to log in."
-
-#, 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 ""
-"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."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "An unknown signon error has occurred: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "An unknown error, %d, has occurred. Info: %s"
-
-msgid "Invalid Groupname"
-msgstr "Invalid Groupname"
-
-msgid "Connection Closed"
-msgstr "Connection Closed"
-
-msgid "Waiting for reply..."
-msgstr "Waiting for reply..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "TOC has come back from its pause. You may now send messages again."
-
-msgid "Password Change Successful"
-msgstr "Password Change Successful"
-
-msgid "_Group:"
-msgstr "_Group:"
-
-msgid "Get Dir Info"
-msgstr "Get Dir Info"
-
-msgid "Set Dir Info"
-msgstr "Set Dir Info"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "Could not open %s for writing!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "File transfer failed; other side probably cancelled."
-
-msgid "Could not connect for transfer."
-msgstr "Could not connect for transfer."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "Could not write file header. The file will not be transferred."
-
-msgid "Save As..."
-msgstr "Save As..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgstr[1] "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s requests you to send them a file"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "TOC Protocol Plug-in"
-
-#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr "%s has sent you a webcam invitation, which is not yet supported."
+msgid "Your SMS was not delivered"
+msgstr ""
+
msgid "Your Yahoo! message did not get sent."
msgstr "Your Yahoo! message did not get sent."
@@ -9734,13 +9777,9 @@ msgstr "Cool Link 3"
msgid "Last Update"
msgstr "Last Update"
-#, c-format
-msgid "User information for %s unavailable"
-msgstr "User information for %s unavailable"
-
+#, fuzzy
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr ""
"Sorry, this profile seems to be in a language or format that is not "
"supported at this time."
@@ -10069,9 +10108,6 @@ msgstr "Do not disturb"
msgid "Extended away"
msgstr "Extended away"
-msgid "Mobile"
-msgstr "Mobile"
-
msgid "Listening to music"
msgstr "Listening to music"
@@ -10113,18 +10149,6 @@ msgstr "+++ %s is no longer idle"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "Error reading %s"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-
msgid "Calculating..."
msgstr "Calculating..."
@@ -10199,6 +10223,12 @@ msgstr "Error writing to %s: %s"
msgid "Unable to connect to %s: %s"
msgstr "Unable to connect to %s: %s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr "Server requires TLS/SSL for login. No TLS/SSL support found."
+
#, c-format
msgid " - %s"
msgstr " - %s"
@@ -10232,6 +10262,18 @@ msgstr "Connection refused."
msgid "Address already in use."
msgstr "This chat name is already in use"
+#, c-format
+msgid "Error Reading %s"
+msgstr "Error reading %s"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"An error was encountered reading your %s. They have not been loaded, and "
+"the old file has been renamed to %s~."
+
msgid "Internet Messenger"
msgstr "Internet Messenger"
@@ -10274,10 +10316,8 @@ msgstr "New _mail notifications"
msgid "Use this buddy _icon for this account:"
msgstr "Use this buddy _icon for this account:"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s Options"
+msgid "_Advanced"
+msgstr "_Advanced"
msgid "Use GNOME Proxy Settings"
msgstr "Use GNOME Proxy Settings"
@@ -10312,9 +10352,6 @@ msgstr "If you look real closely"
msgid "you can see the butterflies mating"
msgstr "you can see the butterflies mating"
-msgid "Proxy Options"
-msgstr "Proxy Options"
-
msgid "Proxy _type:"
msgstr "Proxy _type:"
@@ -10343,8 +10380,9 @@ msgstr "_Basic"
msgid "Create _this new account on the server"
msgstr "Create this new account on the server"
-msgid "_Advanced"
-msgstr "_Advanced"
+#, fuzzy
+msgid "_Proxy"
+msgstr "Proxy"
msgid "Enabled"
msgstr "Enabled"
@@ -10422,6 +10460,17 @@ msgstr "Get _Info"
msgid "I_M"
msgstr "I_M"
+#, fuzzy
+msgid "_Audio Call"
+msgstr "_Add Chat"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Video Chat"
+
msgid "_Send File..."
msgstr "_Send File..."
@@ -10559,6 +10608,10 @@ msgstr "/Tools/Buddy _Pounces"
msgid "/Tools/_Certificates"
msgstr "/Tools/_Certificates"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Tools/Privacy"
+
msgid "/Tools/Plu_gins"
msgstr "/Tools/Plu_g-ins"
@@ -10568,10 +10621,6 @@ msgstr "/Tools/Pr_eferences"
msgid "/Tools/Pr_ivacy"
msgstr "/Tools/Pr_ivacy"
-#, fuzzy
-msgid "/Tools/Smile_y"
-msgstr "/Tools/Privacy"
-
msgid "/Tools/_File Transfers"
msgstr "/Tools/_File Transfers"
@@ -10689,8 +10738,8 @@ msgstr "Manually"
msgid "By status"
msgstr "By status"
-msgid "By log size"
-msgstr "By log size"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10706,6 +10755,9 @@ msgstr "Reconnect"
msgid "Re-enable"
msgstr "Re-enable"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr "Welcome back!"
@@ -10795,6 +10847,9 @@ msgstr ""
msgid "A_lias:"
msgstr "A_lias:"
+msgid "_Group:"
+msgstr "_Group:"
+
msgid "Auto_join when account becomes online."
msgstr "Auto_join when account becomes online."
@@ -10847,14 +10902,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr "Invite Buddy Into Chat Room"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-
msgid "_Buddy:"
msgstr "_Buddy:"
@@ -10929,6 +10976,22 @@ msgstr "/Conversation/_Save As..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Conversation/Clea_r Scrollback"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Conversation/M_ore"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Conversation/M_ore"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Conversation/M_ore"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Conversation/View _Log"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Conversation/Se_nd File..."
@@ -11001,6 +11064,18 @@ msgstr "/Conversation"
msgid "/Conversation/View Log"
msgstr "/Conversation/View Log"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Conversation/More"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Conversation/View Log"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Conversation/More"
+
msgid "/Conversation/Send File..."
msgstr "/Conversation/Send File..."
@@ -11184,6 +11259,9 @@ msgstr "Artist"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "support"
@@ -11325,6 +11403,10 @@ msgstr "Georgian"
msgid "Ubuntu Georgian Translators"
msgstr "Ubuntu Georgian Translators"
+#, fuzzy
+msgid "Khmer"
+msgstr "Other"
+
msgid "Kannada"
msgstr "Kannada"
@@ -11346,6 +11428,10 @@ msgstr "Lithuanian"
msgid "Macedonian"
msgstr "Macedonian"
+#, fuzzy
+msgid "Mongolian"
+msgstr "Macedonian"
+
msgid "Bokmål Norwegian"
msgstr "Bokmål Norwegian"
@@ -11460,7 +11546,24 @@ msgstr ""
"<BR><BR>"
#, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, fuzzy, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+
+#, fuzzy, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
msgid "Current Developers"
@@ -11782,15 +11885,6 @@ msgstr "The font to use for the typing notification"
msgid "Enable typing notification"
msgstr "Enable typing notification"
-msgid "_Copy Email Address"
-msgstr "_Copy Email Address"
-
-msgid "_Open Link in Browser"
-msgstr "_Open Link in Browser"
-
-msgid "_Copy Link Location"
-msgstr "_Copy Link Location"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12036,13 +12130,14 @@ msgstr "_Browse logs folder"
msgid "%s %s. Try `%s -h' for more information.\n"
msgstr "%s %s. Try `%s -h' for more information.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12066,13 +12161,14 @@ msgstr ""
" --display=DISPLAY X display to use\n"
" -v, --version display the current version and exit\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12132,11 +12228,27 @@ msgstr ""
msgid "Pidgin"
msgstr "Pidgin"
-msgid "Open All Messages"
-msgstr "Open All Messages"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "Calculating..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -12166,6 +12278,27 @@ msgid ""
msgstr ""
"The 'Manual' browser command has been chosen, but no command has been set."
+msgid "Open All Messages"
+msgstr "Open All Messages"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "New Buddy Pounce"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "Unknown message"
+
msgid "The following plugins will be unloaded."
msgstr "The following plug-ins will be unloaded."
@@ -12214,6 +12347,10 @@ msgstr "<b>Plug-in Details</b>"
msgid "Select a file"
msgstr "Select a file"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Edit Buddy Pounce"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "Pounce on Whom"
@@ -12284,6 +12421,50 @@ msgstr "_Recurring"
msgid "Pounce Target"
msgstr "Pounce Target"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "Starts typing"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "Pauses while typing"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "Signs on"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s has returned from being idle (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "Returns from away"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "Stopped Typing"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "Signs off"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "Becomes idle"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "When away"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Send a message"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "Unknown pounce event. Please report this!"
+
msgid "Smiley theme failed to unpack."
msgstr "Smiley theme failed to unpack."
@@ -12306,6 +12487,12 @@ msgstr "Keyboard Shortcuts"
msgid "Cl_ose conversations with the Escape key"
msgstr "Cl_ose conversations with the Escape key"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Buddy List"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "System Tray Icon"
@@ -12416,9 +12603,6 @@ msgstr "Cannot start proxy configuration program."
msgid "Cannot start browser configuration program."
msgstr "Cannot start browser configuration program."
-msgid "ST_UN server:"
-msgstr "ST_UN Server:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">Example: stunserver.org</span>"
@@ -12443,6 +12627,10 @@ msgstr "_Start port:"
msgid "_End port:"
msgstr "_End port:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr "Proxy Server &amp; Browser"
@@ -12471,6 +12659,10 @@ msgstr "Proxy Server"
msgid "No proxy"
msgstr "No proxy"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "_User:"
@@ -12634,12 +12826,12 @@ msgstr "When both away and idle"
msgid "Auto-away"
msgstr "Auto-away"
-msgid "Change status when _idle"
-msgstr "Change status when _idle"
-
msgid "_Minutes before becoming idle:"
msgstr "_Minutes before becoming idle:"
+msgid "Change status when _idle"
+msgstr "Change status when _idle"
+
msgid "Change _status to:"
msgstr "Change _status to:"
@@ -12787,6 +12979,12 @@ msgstr "Sa_ve & Use"
msgid "Status for %s"
msgstr "Status for %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
#, fuzzy
msgid "Custom Smiley"
msgstr "Insert Smiley"
@@ -12797,15 +12995,15 @@ msgstr ""
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
+msgstr ""
+
#, fuzzy
msgid "Duplicate Shortcut"
msgstr "Duplicate Correction"
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
-msgstr ""
-
#, fuzzy
msgid "Please select an image for the smiley."
msgstr "Please select your mood from the list."
@@ -12819,19 +13017,23 @@ msgid "Add Smiley"
msgstr "Smile!"
#, fuzzy
-msgid "Smiley _Image"
-msgstr "Save Image"
+msgid "_Image:"
+msgstr "_Image"
-#. Smiley shortcut
+#. Shortcut text
#, fuzzy
-msgid "Smiley S_hortcut"
-msgstr "Keyboard Shortcuts"
+msgid "S_hortcut text:"
+msgstr "Sort"
#, fuzzy
msgid "Smiley"
msgstr "Smile!"
#, fuzzy
+msgid "Shortcut Text"
+msgstr "Sort"
+
+#, fuzzy
msgid "Custom Smiley Manager"
msgstr "Certificate Manager"
@@ -12958,6 +13160,16 @@ msgid ""
msgstr ""
"Failed to load image \"%s\": reason not known; probably a corrupt image file"
+#, fuzzy
+msgid "_Open Link"
+msgstr "_Open Link in:"
+
+msgid "_Copy Link Location"
+msgstr "_Copy Link Location"
+
+msgid "_Copy Email Address"
+msgstr "_Copy Email Address"
+
msgid "Save File"
msgstr "Save File"
@@ -13928,9 +14140,6 @@ msgstr "_Keep Buddy List window on top:"
msgid "Only when docked"
msgstr "Only when docked"
-msgid "_Flash window when chat messages are received"
-msgstr "_Flash window when chat messages are received"
-
msgid "Windows Pidgin Options"
msgstr "Windows Pidgin Options"
@@ -13979,6 +14188,232 @@ msgstr "Send and receive raw XMPP stanzas."
msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr "This plugin is useful for debugging XMPP servers or clients."
+#, fuzzy
+#~ msgid "Invite message"
+#~ msgstr "Insert in message"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Please enter the name of the user you wish to invite, along with an "
+#~ "optional invite message."
+
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "Unable to retrieve MSN Address Book"
+
+#, fuzzy
+#~ msgid "Connection to server lost (no data received within %d second)"
+#~ msgid_plural ""
+#~ "Connection to server lost (no data received within %d seconds)"
+#~ msgstr[0] "Connection to server lost (no data received within %d seconds)"
+#~ msgstr[1] "Connection to server lost (no data received within %d seconds)"
+
+#~ msgid ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+#~ msgstr ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+
+#, fuzzy
+#~ msgid "Add buddy Q&A"
+#~ msgstr "Add Buddy"
+
+#, fuzzy
+#~ msgid "Can not decrypt get server reply"
+#~ msgstr "Cannot get server information"
+
+#~ msgid "Keep alive error"
+#~ msgstr "Keep alive error"
+
+#, fuzzy
+#~ msgid ""
+#~ "Lost connection with server:\n"
+#~ "%d, %s"
+#~ msgstr ""
+#~ "Lost connection with server:\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Connecting server ..."
+#~ msgstr "Connect server"
+
+#~ msgid "Failed to send IM."
+#~ msgstr "Failed to send IM."
+
+#~ msgid "Looking up %s"
+#~ msgstr "Looking up %s"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "Connect to %s failed"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Signon: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "Unable to write file %s."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "Unable to read file %s."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "Message too long, last %s bytes truncated."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s not currently logged in."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "Warning of %s not allowed."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "Chat in %s is not available."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "You are sending messages too fast to %s."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "You missed an IM from %s because it was too big."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr "You missed an IM from %s because it was sent too fast."
+
+#~ msgid "Failure."
+#~ msgstr "Failure."
+
+#~ msgid "Too many matches."
+#~ msgstr "Too many matches."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "Need more qualifiers."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "Dir service temporarily unavailable."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "Email lookup restricted."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "Keyword ignored."
+
+#~ msgid "No keywords."
+#~ msgstr "No keywords."
+
+#~ msgid "User has no directory information."
+#~ msgstr "User has no directory information."
+
+#~ msgid "Country not supported."
+#~ msgstr "Country not supported."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Failure unknown: %s."
+
+#~ msgid "Incorrect username or password."
+#~ msgstr "Incorrect username or password."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "The service is temporarily unavailable."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "Your warning level is currently too high to log in."
+
+#~ 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 ""
+#~ "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."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "An unknown signon error has occurred: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "An unknown error, %d, has occurred. Info: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "Invalid Groupname"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Connection Closed"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "Waiting for reply..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "TOC has come back from its pause. You may now send messages again."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "Password Change Successful"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Get Dir Info"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Set Dir Info"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "Could not open %s for writing!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr "File transfer failed; other side probably cancelled."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "Could not connect for transfer."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "Could not write file header. The file will not be transferred."
+
+#~ msgid "Save As..."
+#~ msgstr "Save As..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s requests you to send them a file"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "TOC Protocol Plug-in"
+
+#~ msgid "User information for %s unavailable"
+#~ msgstr "User information for %s unavailable"
+
+#~ msgid "%s Options"
+#~ msgstr "%s Options"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Proxy Options"
+
+#~ msgid "By log size"
+#~ msgstr "By log size"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_Open Link in Browser"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "ST_UN Server:"
+
+#, fuzzy
+#~ msgid "Smiley _Image"
+#~ msgstr "Save Image"
+
+#, fuzzy
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "Keyboard Shortcuts"
+
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "_Flash window when chat messages are received"
+
#~ msgid "A group with the name already exists."
#~ msgstr "A group with that name already exists."
@@ -14078,13 +14513,6 @@ msgstr "This plugin is useful for debugging XMPP servers or clients."
#~ msgid "Change Qun information"
#~ msgstr "Channel Information"
-#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr "%s (%s)"
-
#~ msgid "System Message"
#~ msgstr "System Message"
diff --git a/po/eo.po b/po/eo.po
index 28fda83c41..5973400e1c 100644
--- a/po/eo.po
+++ b/po/eo.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: eo\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
+"POT-Creation-Date: 2009-04-30 10:37-0400\n"
"PO-Revision-Date: 2008-03-02 13:39+0100\n"
"Last-Translator: Stéphane Fillod <f8cfe@free.fr>\n"
"Language-Team: Esperanto <kde-i18n-eo@kde.org>\n"
@@ -27,13 +27,13 @@ msgstr "Finch"
msgid "%s. Try `%s -h' for more information.\n"
msgstr "%s. Provu `%s -h' por plia informo.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -593,21 +593,6 @@ msgstr ""
msgid "Send To"
msgstr "Sendu Al"
-#, fuzzy
-msgid "Invite message"
-msgstr "Enmetu en mesaĝon"
-
-msgid "Invite"
-msgstr "Invitu"
-
-#, fuzzy
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Bonvolu enigi la nomon de uzanto kiun vi deziras inviti, kun fakultativan "
-"invitmesaĝon."
-
msgid "Conversation"
msgstr "Konversacio"
@@ -855,6 +840,41 @@ msgstr "Konversacioj"
msgid "System Log"
msgstr "Sistemo Protokolo"
+#, fuzzy
+msgid "Calling ... "
+msgstr "Kalkulante..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "Akceptu"
+
+msgid "Reject"
+msgstr "Malakceptu"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "Vi forlasis tiun babilejon."
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "Retadresoj"
@@ -889,6 +909,9 @@ msgstr "Daŭrigu"
msgid "IM"
msgstr "TM"
+msgid "Invite"
+msgstr "Invitu"
+
msgid "(none)"
msgstr "(neniu)"
@@ -1091,7 +1114,6 @@ msgstr "%s foriĝis. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s sendis mesaĝon al vi. (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr ""
@@ -1137,7 +1159,6 @@ msgstr "Minutoj antaŭe ŝanĝenda staton"
msgid "Change status to"
msgstr "Ŝanĝu staton al"
-#. Conversations
msgid "Conversations"
msgstr "Konversacioj"
@@ -1453,7 +1474,6 @@ msgstr ""
"Kiam nova konversacio estas malfermita, tiu kromaĵo enmetos la lastan "
"konversacion en la aktuala konversacio."
-#, c-format
msgid "Online"
msgstr "Enrete"
@@ -1497,6 +1517,28 @@ msgstr "GntLastlog"
msgid "Lastlog plugin."
msgstr "Lastaprotokolo kromaĵo."
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "kontoj"
@@ -1595,13 +1637,6 @@ msgstr "Akceptu astestilon por %s?"
msgid "SSL Certificate Verification"
msgstr ""
-#. Number of actions
-msgid "Accept"
-msgstr "Akceptu"
-
-msgid "Reject"
-msgstr "Malakceptu"
-
msgid "_View Certificate..."
msgstr "_Montru Atestilon..."
@@ -1734,6 +1769,18 @@ msgstr "%s forlasis la ĉambron."
msgid "%s left the room (%s)."
msgstr "%s forlasis la ĉambron (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Iniciatu _Babilon"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Bonvolu enigi la nomon de uzanto kiun vi deziras inviti, kun fakultativan "
+"invitmesaĝon."
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "Malsukcesis konekti: %s"
@@ -1855,7 +1902,6 @@ msgstr ""
msgid "Transfer of file %s complete"
msgstr ""
-#, c-format
msgid "File transfer complete"
msgstr "Dosiero alŝuto kompleta"
@@ -1863,7 +1909,6 @@ msgstr "Dosiero alŝuto kompleta"
msgid "You canceled the transfer of %s"
msgstr "Vi rezignis la alŝuton de %s"
-#, c-format
msgid "File transfer cancelled"
msgstr "Dosiero alŝuto rezignita"
@@ -2070,7 +2115,6 @@ msgstr "(%s) %s <AŬTO-RESPONDO>: %s\n"
msgid "You are using %s, but this plugin requires %s."
msgstr ""
-#, c-format
msgid "This plugin has not defined an ID."
msgstr ""
@@ -2528,6 +2572,32 @@ msgstr ""
msgid "Do not ask. Always save in pounce."
msgstr ""
+#, fuzzy
+msgid "One Time Password"
+msgstr "Enigu Pasvorton"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2730,7 +2800,6 @@ msgid ""
"Unable to establish connection with the local mDNS server. Is it running?"
msgstr ""
-#. Creating the options for the protocol
msgid "First name"
msgstr "Antaŭ nomo"
@@ -2762,6 +2831,11 @@ msgstr "Bonjour Protokol-Kromaĵo"
msgid "Purple Person"
msgstr "Purpura Persono"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "Loko"
+
msgid "Bonjour"
msgstr "Bonjour"
@@ -2917,13 +2991,13 @@ msgstr "Elektu babilejon por kunul: %s"
msgid "Add to chat..."
msgstr "Aldonu al babilejo..."
+#. Global
msgid "Available"
msgstr "Disponebla"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "Fora"
@@ -3265,6 +3339,17 @@ msgstr ""
"Via elektita kontonomo estas refuzita de la servilo. Ĝi verŝajne enhavas "
"malvalidajn signojn."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "Tiu babil nomo jam estas uzata"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Karesnomo"
+
msgid "Cannot change nick"
msgstr "Ne povas ŝanĝi karesnomon"
@@ -3495,6 +3580,38 @@ msgstr ""
msgid "SASL error"
msgstr "SASL eraro"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "Nenia kialo donita."
+
+msgid "Unsupported version of BOSH protocol"
+msgstr ""
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"Perdis konekto kun prokura servilo\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "Ne povas eki konekton"
+
+msgid "Unable to create socket"
+msgstr ""
+
+msgid "Write error"
+msgstr "Skriberaro"
+
msgid "Full Name"
msgstr "Plena Nomo"
@@ -3559,6 +3676,10 @@ msgstr "Kliento"
msgid "Operating System"
msgstr ""
+#, fuzzy
+msgid "Local Time"
+msgstr "Loka Doerisero:"
+
msgid "Last Activity"
msgstr ""
@@ -3764,7 +3885,6 @@ msgstr "Babilema"
msgid "Extended Away"
msgstr "Longfora"
-#, c-format
msgid "Do Not Disturb"
msgstr "Ne Ĝenu"
@@ -3886,9 +4006,6 @@ msgstr "Trovu Babilejojn"
msgid "You require encryption, but it is not available on this server."
msgstr ""
-msgid "Write error"
-msgstr "Skriberaro"
-
msgid "Ping timeout"
msgstr ""
@@ -3897,11 +4014,8 @@ msgstr "Legeraro"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
-msgstr ""
-
-msgid "Unable to create socket"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
msgid "Invalid XMPP ID"
@@ -3910,6 +4024,10 @@ msgstr "Malvalida XMPP ID"
msgid "Invalid XMPP ID. Domain must be set."
msgstr ""
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Malsukcesis konekti servilon."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "Registrado de %s@%s sukcesa"
@@ -3995,9 +4113,18 @@ msgstr "Aŭtentokontrolante"
msgid "Re-initializing Stream"
msgstr ""
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr "Malpermesita"
+msgid "Mood"
+msgstr "Etoso"
+
+msgid "Now Listening"
+msgstr ""
+
msgid "Both"
msgstr "Ambaŭ"
@@ -4019,12 +4146,6 @@ msgstr "Nenio"
msgid "Subscription"
msgstr "Abono"
-msgid "Mood"
-msgstr "Etoso"
-
-msgid "Now Listening"
-msgstr ""
-
msgid "Mood Text"
msgstr "Agorda Teksto"
@@ -4263,15 +4384,21 @@ msgid "Unable to ping user %s"
msgstr ""
#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr ""
#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+msgid "Unable to buzz, because %s might be offline."
msgstr ""
#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
+msgstr ""
+
+#, c-format
+msgid "Buzzing %s..."
msgstr ""
#. Yahoo only supports one attention command: the 'buzz'.
@@ -4283,10 +4410,35 @@ msgstr "Zum"
msgid "%s has buzzed you!"
msgstr ""
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "Ne eblas sendi dosieron al %s, malvalida JID"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "Ne eblis sendi dosieron al %s, uzanto ne estas konektita"
+
#, c-format
-msgid "Buzzing %s..."
+msgid "Unable to initiate media with %s: not subscribed to user presence"
msgstr ""
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "Registrado Malsukcesis"
+
+#, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr ""
+
+msgid "Select a Resource"
+msgstr ""
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "Iniciatu _Babilon"
+
msgid "config: Configure a chat room."
msgstr ""
@@ -4435,6 +4587,21 @@ msgstr "Eraro aliĝante babilejon %s"
msgid "Error in chat %s"
msgstr "Eraro en babilejo %s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "Eraro okazis malfermante la dosiero."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "Dosiero Transmeto Malsukcesis"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Malsukcesis malfermi dosieron '%s': %s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr "Ne eblis sendu dosieron al %s, uzanto ne subtenas dosiero-transmeton"
@@ -4458,9 +4625,6 @@ msgstr ""
msgid "Please select the resource of %s to which you would like to send a file"
msgstr ""
-msgid "Select a Resource"
-msgstr ""
-
msgid "Edit User Mood"
msgstr "Redaktu Uzantan Agordon"
@@ -4493,8 +4657,19 @@ msgstr "Agoj"
msgid "Select an action"
msgstr "Elektu agon"
-msgid "Unable to retrieve MSN Address Book"
-msgstr "Ne eblas ricevi MSN Adresaron"
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr "Malsukcesis aldoni \"%s\"."
+
+msgid "Buddy Add error"
+msgstr ""
+
+#, fuzzy
+msgid "The username specified does not exist."
+msgstr "La nova formatumo malvalidas."
#, c-format
msgid "Buddy list synchronization issue in %s (%s)"
@@ -4720,7 +4895,7 @@ msgstr "Infana Pasporto sen patra konsento"
msgid "Passport account not yet verified"
msgstr "Pasporta konto ne jam kontrolita"
-#, fuzzy, c-format
+#, fuzzy
msgid "Passport account suspended"
msgstr "Pasporta konto ne jam kontrolita"
@@ -4814,6 +4989,13 @@ msgstr ""
msgid "Page"
msgstr "Paĝo"
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "Laboro"
+
msgid "Has you"
msgstr "Havas vin"
@@ -4850,6 +5032,13 @@ msgstr "Artisto"
msgid "Album"
msgstr "Albumo"
+#, fuzzy
+msgid "Game Title"
+msgstr "Titolon"
+
+msgid "Office Title"
+msgstr ""
+
msgid "Set Friendly Name..."
msgstr "Difinu Amika Nomo..."
@@ -5036,8 +5225,9 @@ msgid ""
"does not exist."
msgstr ""
-msgid "Profile URL"
-msgstr "Profilo URL"
+#, fuzzy
+msgid "View web profile"
+msgstr "Kaŝu kiam senkonekta"
#. *< type
#. *< ui_requirement
@@ -5268,13 +5458,6 @@ msgstr "Aldonu al adresaro"
msgid "Do you want to delete this buddy from your address book as well?"
msgstr "Ĉu vi volas aldoni tiun kunul en via kunullisto?"
-#. only notify the user about problems adding to the friends list
-#. * maybe we should do something else for other lists, but it probably
-#. * won't cause too many problems if we just ignore it
-#, c-format
-msgid "Unable to add \"%s\"."
-msgstr "Malsukcesis aldoni \"%s\"."
-
#, fuzzy
msgid "The username specified is invalid."
msgstr "La nova formatumo malvalidas."
@@ -5282,6 +5465,9 @@ msgstr "La nova formatumo malvalidas."
msgid "This Hotmail account may not be active."
msgstr "Tiu Hotmail konto eble ne estas aktiva."
+msgid "Profile URL"
+msgstr "Profilo URL"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5295,15 +5481,11 @@ msgstr "Tiu Hotmail konto eble ne estas aktiva."
msgid "MSN Protocol Plugin"
msgstr "MSN Protokol-Kromaĵo"
-msgid "Missing Cipher"
-msgstr ""
-
-msgid "The RC4 cipher could not be found"
+#, c-format
+msgid "No such user: %s"
msgstr ""
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
+msgid "User lookup"
msgstr ""
msgid "Reading challenge"
@@ -5315,11 +5497,20 @@ msgstr ""
msgid "Logging in"
msgstr "Ensalutante"
-#, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] ""
-msgstr[1] ""
+msgid "MySpaceIM - No Username Set"
+msgstr "MySpaceIM - Neniu Uzantonomo Difinitia"
+
+msgid "You appear to have no MySpace username."
+msgstr ""
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr ""
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr ""
+"Perdis konekto kun prokura servilo\n"
+"%s"
#. Can't write _()'d strings in array initializers. Workaround.
msgid "New mail messages"
@@ -5340,14 +5531,21 @@ msgstr ""
msgid "MySpace"
msgstr ""
-msgid "MySpaceIM - No Username Set"
-msgstr "MySpaceIM - Neniu Uzantonomo Difinitia"
+msgid "IM Friends"
+msgstr "TM Amikoj"
-msgid "You appear to have no MySpace username."
-msgstr ""
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+msgstr[1] ""
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
-msgstr ""
+msgid "Add contacts from server"
+msgstr "Aldoni kontaktojn el servilo."
#. The session is now set up, ready to be connected. This emits the
#. * signedOn signal, so clients can now do anything with msimprpl, and
@@ -5370,20 +5568,26 @@ msgstr ""
msgid "MySpaceIM Error"
msgstr ""
-msgid "Failed to add buddy"
-msgstr "Malsukcesis aldoni kunulon"
+msgid "Invalid input condition"
+msgstr ""
-msgid "'addbuddy' command failed."
+msgid "Read buffer full (2)"
msgstr ""
-msgid "persist command failed"
+msgid "Unparseable message"
msgstr ""
#, c-format
-msgid "No such user: %s"
+msgid "Couldn't connect to host: %s (%d)"
+msgstr "Ne povis konekti al servilo: %s (%d)"
+
+msgid "Failed to add buddy"
+msgstr "Malsukcesis aldoni kunulon"
+
+msgid "'addbuddy' command failed."
msgstr ""
-msgid "User lookup"
+msgid "persist command failed"
msgstr ""
msgid "Failed to remove buddy"
@@ -5395,34 +5599,16 @@ msgstr ""
msgid "blocklist command failed"
msgstr ""
-msgid "Invalid input condition"
-msgstr ""
-
-msgid "Read buffer full (2)"
+msgid "Missing Cipher"
msgstr ""
-msgid "Unparseable message"
+msgid "The RC4 cipher could not be found"
msgstr ""
-#, c-format
-msgid "Couldn't connect to host: %s (%d)"
-msgstr "Ne povis konekti al servilo: %s (%d)"
-
-msgid "IM Friends"
-msgstr "TM Amikoj"
-
-#, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "Add contacts from server"
-msgstr "Aldoni kontaktojn el servilo."
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
msgid "Add friends from MySpace.com"
msgstr ""
@@ -5464,9 +5650,6 @@ msgstr "Baza tiparo grandeco (punktoj)"
msgid "User"
msgstr "Uzanto"
-msgid "Profile"
-msgstr "Profilo"
-
msgid "Headline"
msgstr ""
@@ -5479,16 +5662,6 @@ msgstr ""
msgid "Client Version"
msgstr "Klienta Version"
-#. Protocol won't log in now without a username set.. Disconnect
-msgid "No username set"
-msgstr "Neniu uzantonomo difinita"
-
-msgid "MySpaceIM - Please Set a Username"
-msgstr ""
-
-msgid "Please enter a username to check its availability:"
-msgstr ""
-
msgid "MySpaceIM - Username Available"
msgstr ""
@@ -5498,12 +5671,22 @@ msgstr ""
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr ""
+msgid "MySpaceIM - Please Set a Username"
+msgstr ""
+
msgid "This username is unavailable."
msgstr "Tiu uzantonomo ne disponeblas."
msgid "Please try another username:"
msgstr "Bonvolu provi alian uzantonomon:"
+#. Protocol won't log in now without a username set.. Disconnect
+msgid "No username set"
+msgstr "Neniu uzantonomo difinita"
+
+msgid "Please enter a username to check its availability:"
+msgstr ""
+
#. TODO: icons for each zap
#. Lots of comments for translators:
#. Zap means "to strike suddenly and forcefully as if with a
@@ -5880,7 +6063,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr ""
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr "Tiu konferenco fermiĝis. Ne pliaj mesaĝoj sendiĝeblas."
@@ -6137,23 +6319,18 @@ msgstr "Kamerao"
msgid "Screen Sharing"
msgstr "Ekrannomo"
-#, c-format
msgid "Free For Chat"
msgstr ""
-#, c-format
msgid "Not Available"
msgstr "Ne Disponebla"
-#, c-format
msgid "Occupied"
msgstr "Okupata"
-#, c-format
msgid "Web Aware"
msgstr ""
-#, c-format
msgid "Invisible"
msgstr "Nevidebla"
@@ -6200,7 +6377,7 @@ msgid ""
"only letters, numbers and spaces, or contain only numbers."
msgstr ""
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
#, fuzzy
msgid "Invalid username."
@@ -6217,7 +6394,7 @@ msgstr ""
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "La AOL Tujmesaĝilo servo estas provizore nedisponebla."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6250,9 +6427,7 @@ msgid "_OK"
msgstr "_Daŭrigu"
#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
+msgid "You may be disconnected shortly. If so, check %s for updates."
msgstr ""
msgid "Unable to get a valid AIM login hash."
@@ -6379,7 +6554,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] ""
msgstr[1] ""
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "Ne eblas sendi mesaĝon: %s"
@@ -6401,6 +6576,9 @@ msgstr "Enrete Ek De"
msgid "Member Since"
msgstr "Membro Ek De"
+msgid "Profile"
+msgstr "Profilo"
+
msgid "Your AIM connection may be lost."
msgstr "Via AIM konekto perdeblas."
@@ -6655,6 +6833,7 @@ msgstr "K_onektu"
msgid "Get AIM Info"
msgstr "Ricevu AIM Informon"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "Redaktu Kunul Komenton"
@@ -6765,7 +6944,6 @@ msgstr "Demandas %s konekti nin al %s:%hu por Rekta TM."
msgid "Attempting to connect to %s:%hu."
msgstr "Provas konekti al %s:%hu"
-#, c-format
msgid "Attempting to connect via proxy server."
msgstr "Provas konekti pere de prokurservilo."
@@ -6858,7 +7036,7 @@ msgstr "Alia"
msgid "Visible"
msgstr "Nevidebla"
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
#, fuzzy
@@ -6949,17 +7127,50 @@ msgstr "Lasta Aktualigo"
msgid "Could not change buddy information."
msgstr "Bonvolu enigi kunul informon."
-#, c-format
-msgid "%d needs Q&A"
+msgid "Mobile"
+msgstr "Movante"
+
+msgid "Note"
msgstr ""
+#. callback
#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "Aldonu Kunulon"
+msgid "Buddy Memo"
+msgstr "Kunul Piktogramo"
-msgid "Input answer here"
+msgid "Change his/her memo as you like"
msgstr ""
+#, fuzzy
+msgid "_Modify"
+msgstr "Ŝanĝu"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "Ŝanĝu"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "Servilo okupita"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%u requires verification"
+msgstr "Petu aŭtentigon"
+
+#, fuzzy
+msgid "Add buddy question"
+msgstr "Aldonu kunulon al via listo?"
+
+#, fuzzy
+msgid "Enter answer here"
+msgstr "Enigu Uzanto Adreslibro"
+
msgid "Send"
msgstr "Sendu"
@@ -6970,19 +7181,20 @@ msgstr "Malvalida Uzantonomo"
msgid "Authorization denied message:"
msgstr "Rifuzita permeso mesaĝo:"
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr ""
#, fuzzy, c-format
-msgid "%d needs authentication"
+msgid "%u needs authorization"
msgstr "Uzanto %d bezonas aŭtentokontrolon"
#, fuzzy
msgid "Add buddy authorize"
msgstr "Aldonu kunulon al via listo?"
-msgid "Input request here"
-msgstr ""
+#, fuzzy
+msgid "Enter request here"
+msgstr "Enigu Konferencan Servilon"
msgid "Would you be my friend?"
msgstr "Ĉu vi estus mia amiko?"
@@ -7004,7 +7216,7 @@ msgid "Failed sending authorize"
msgstr "Bonvolu permesu min!"
#, fuzzy, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr "Malsukcesis forigi kunulon"
#, fuzzy, c-format
@@ -7047,6 +7259,9 @@ msgstr "Bonvolu enigi la novan nomon por %s"
msgid "You can only search for permanent Qun\n"
msgstr ""
+msgid "(Invalid UTF-8 string)"
+msgstr ""
+
#, fuzzy
msgid "Not member"
msgstr "Mi ne estas membro"
@@ -7089,16 +7304,19 @@ msgstr ""
msgid "Join QQ Qun"
msgstr "QQ Qun"
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
+msgid "Input request here"
msgstr ""
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "Vi sukcese ŝanĝis Qun numeron"
+
#, fuzzy
msgid "Successfully joined Qun"
msgstr "Vi sukcese ŝanĝis Qun numeron"
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
msgid "QQ Qun Operation"
@@ -7108,7 +7326,7 @@ msgstr "QQ Qun Operacio"
msgid "Failed:"
msgstr "Malsukcesita"
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
#, fuzzy
@@ -7120,11 +7338,11 @@ msgid ""
"this operation will eventually remove this Qun."
msgstr ""
-msgid "Sorry, you are not our style ..."
+msgid "Sorry, you are not our style"
msgstr ""
#, fuzzy
-msgid "Successfully changed Qun member"
+msgid "Successfully changed Qun members"
msgstr "Vi sukcese ŝanĝis Qun numeron"
#, fuzzy
@@ -7135,35 +7353,35 @@ msgid "You have successfully created a Qun"
msgstr ""
#, fuzzy
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr "Ĉu vi deziras meti ĝin kiel la kunul piktogramo por tiu uzanto?"
msgid "Setup"
msgstr "Agordo"
#, fuzzy, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr "Uzanto %d petis aliĝon al grupo %d"
#, fuzzy, c-format
-msgid "%d request to join Qun %d"
+msgid "%u request to join Qun %u"
msgstr "Uzanto %d petis aliĝon al grupo %d"
#, fuzzy, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr "Malsukcesis kuniĝi kunulon en babilejo"
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr "Forigu Kunulon"
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "Forigu Kunulon"
#, c-format
msgid "Unknown-%d"
@@ -7278,6 +7496,13 @@ msgstr ""
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr ""
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<b>Grupo Titolo:</b> %s<br>"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7285,7 +7510,7 @@ msgid "<i>Feel free to join us!</i> :)"
msgstr ""
#, fuzzy, c-format
-msgid "About OpenQ r%s"
+msgid "About OpenQ %s"
msgstr "Pri %s"
#, fuzzy
@@ -7306,6 +7531,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "Pri %s"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Hejmo Adreso"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7337,7 +7566,6 @@ msgstr ""
msgid "QQ2008"
msgstr ""
-#. #endif
#, fuzzy
msgid "Connect by TCP"
msgstr "Konektu per TCP"
@@ -7350,6 +7578,9 @@ msgstr "Servilo pordo"
msgid "Show server news"
msgstr "Servilo adreso"
+msgid "Show chat room when msg comes"
+msgstr ""
+
msgid "Keep alive interval (seconds)"
msgstr ""
@@ -7358,12 +7589,9 @@ msgid "Update interval (seconds)"
msgstr "Aktualigi mian informon"
#, fuzzy
-msgid "Can not decrypt server reply"
+msgid "Cannot decrypt server reply"
msgstr "Konekto servilo"
-msgid "Can not decrypt get server reply"
-msgstr ""
-
#, c-format
msgid "Failed requesting token, 0x%02X"
msgstr ""
@@ -7384,20 +7612,23 @@ msgid "Activation required"
msgstr "Registrado Postulita"
#, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr ""
-msgid "Keep alive error"
-msgstr ""
+#, fuzzy
+msgid "Could not decrypt server reply"
+msgstr "Konekto servilo"
-msgid "Requesting captcha ..."
-msgstr ""
+#, fuzzy
+msgid "Requesting captcha"
+msgstr "Peto Dialogujo"
-msgid "Checking code of captcha ..."
+msgid "Checking captcha"
msgstr ""
-msgid "Failed captcha verify"
-msgstr ""
+#, fuzzy
+msgid "Failed captcha verification"
+msgstr "Malsukcesis Yahoo! Aŭtentokontrolo"
#, fuzzy
msgid "Captcha Image"
@@ -7407,7 +7638,7 @@ msgstr "Konservu Bildon"
msgid "Enter code"
msgstr "Enigu Pasvorton"
-msgid "QQ Captcha Verifing"
+msgid "QQ Captcha Verification"
msgstr ""
#, fuzzy
@@ -7415,30 +7646,21 @@ msgid "Enter the text from the image"
msgstr "Bonvolu enigi la nomon de la grupo"
#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
+msgid "Unknown reply when checking password (0x%02X)"
msgstr ""
#, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
msgstr ""
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "Ne konekteblas."
msgid "Socket error"
msgstr ""
-#, fuzzy, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr ""
-"Perdis konekton kun servilo:\n"
-"%s"
-
msgid "Unable to read from socket"
msgstr ""
@@ -7449,11 +7671,11 @@ msgid "Connection lost"
msgstr "Konekto perdita"
#, fuzzy
-msgid "Get server ..."
+msgid "Getting server"
msgstr "Difinu Uzanto-Informon..."
#, fuzzy
-msgid "Request token"
+msgid "Requesting token"
msgstr "Peto Dialogujo"
msgid "Couldn't resolve host"
@@ -7464,16 +7686,13 @@ msgid "Invalid server or port"
msgstr "Malvalida eraro"
#, fuzzy
-msgid "Connecting server ..."
+msgid "Connecting to server"
msgstr "Konekto servilo"
#, fuzzy
msgid "QQ Error"
msgstr "QQid Eraro"
-msgid "Failed to send IM."
-msgstr "Malsukcesis sendi tujmesaĝon."
-
#, fuzzy, c-format
msgid ""
"Server News:\n"
@@ -7483,6 +7702,10 @@ msgid ""
msgstr "ICQ Servilo Reludo"
#, fuzzy, c-format
+msgid "%s:%s"
+msgstr "%s (%s)"
+
+#, fuzzy, c-format
msgid "From %s:"
msgstr "De"
@@ -7492,32 +7715,30 @@ msgid ""
"%s"
msgstr "Servilo instrukcioj: %s"
-msgid "Unknow SERVER CMD"
-msgstr ""
+#, fuzzy
+msgid "Unknown SERVER CMD"
+msgstr "Nekonata kialo"
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
#, fuzzy
msgid "QQ Qun Command"
msgstr "Komando"
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr ""
-
-msgid "Can not decrypt login reply"
-msgstr ""
+#, fuzzy
+msgid "Could not decrypt login reply"
+msgstr "Konekto servilo"
#, fuzzy
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr "Nekonata kialo"
#, fuzzy
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr "Nekonata kialo"
#, c-format
@@ -8291,9 +8512,6 @@ msgstr ""
msgid "Unit"
msgstr ""
-msgid "Note"
-msgstr ""
-
msgid "Join Chat"
msgstr ""
@@ -8899,6 +9117,10 @@ msgstr ""
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr "SIP ekrannomoj ne enhaveblas blankan spacon aŭ @ simbolon"
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "Servilo pordo"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -8933,188 +9155,10 @@ msgid "Auth Domain"
msgstr ""
#, c-format
-msgid "Looking up %s"
-msgstr ""
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr ""
-
-#, c-format
-msgid "Signon: %s"
-msgstr ""
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr ""
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr ""
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr ""
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr ""
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr ""
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr ""
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr ""
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr ""
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr ""
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr ""
-
-#, c-format
-msgid "Failure."
-msgstr "Malsukceso."
-
-#, c-format
-msgid "Too many matches."
-msgstr ""
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr ""
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr ""
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr ""
-
-#, c-format
-msgid "Keyword ignored."
-msgstr ""
-
-#, c-format
-msgid "No keywords."
-msgstr ""
-
-#, c-format
-msgid "User has no directory information."
-msgstr ""
-
-#, c-format
-msgid "Country not supported."
-msgstr "Lando ne subtenita."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr ""
-
-#, fuzzy, c-format
-msgid "Incorrect username or password."
-msgstr "Misa ekrannomo aŭ pasvorto."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr ""
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr ""
-
-#, c-format
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
-msgstr ""
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "Nekonata ensaluteraro okazis: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "Nekonata eraro, %d, okazis. Informo: %s"
-
-msgid "Invalid Groupname"
-msgstr "Malvalida Gruponomo"
-
-msgid "Connection Closed"
-msgstr "Konekto Fermita"
-
-msgid "Waiting for reply..."
-msgstr "Atendante respondon..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "TOC revenis el sia paŭzo. Vi nun povas sendi mesaĝojn denove."
-
-msgid "Password Change Successful"
-msgstr "Pasvorto Ŝanĝita Sukcese"
-
-msgid "_Group:"
-msgstr "_Grupo:"
-
-msgid "Get Dir Info"
-msgstr "Ricevu Ujan Informon"
-
-msgid "Set Dir Info"
-msgstr "Difini Ujan Informon"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr ""
-
-msgid "File transfer failed; other side probably canceled."
-msgstr ""
-
-msgid "Could not connect for transfer."
-msgstr ""
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr ""
-
-msgid "Save As..."
-msgstr "Konservu Kiel..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%s requests you to send them a file"
+msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "TOC Protokol-Kromaĵo"
-
-#, c-format
-msgid "%s has sent you a webcam invite, which is not yet supported."
+msgid "Your SMS was not delivered"
msgstr ""
msgid "Your Yahoo! message did not get sent."
@@ -9369,13 +9413,8 @@ msgstr "Mojosa Ligilo 1"
msgid "Last Update"
msgstr "Lasta Aktualigo"
-#, c-format
-msgid "User information for %s unavailable"
-msgstr "Uzanto informo pri %s nedisponebla"
-
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr ""
msgid ""
@@ -9684,9 +9723,6 @@ msgstr "Ne ĝenu"
msgid "Extended away"
msgstr "Longfora"
-msgid "Mobile"
-msgstr "Movante"
-
msgid "Listening to music"
msgstr ""
@@ -9728,16 +9764,6 @@ msgstr "+++ %s iĝis senfara"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "Eraro dum legado %s"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-
msgid "Calculating..."
msgstr "Kalkulante..."
@@ -9811,6 +9837,12 @@ msgid "Unable to connect to %s: %s"
msgstr "Ne konekteblas al %s: %s"
#, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+
+#, c-format
msgid " - %s"
msgstr ""
@@ -9843,6 +9875,16 @@ msgstr "Konekto malakceptita."
msgid "Address already in use."
msgstr "Tiu babil nomo jam estas uzata"
+#, c-format
+msgid "Error Reading %s"
+msgstr "Eraro dum legado %s"
+
+#, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+
msgid "Internet Messenger"
msgstr "Interreta Mesaĝilo"
@@ -9885,10 +9927,8 @@ msgstr "Nova ret_poŝto avizoj"
msgid "Use this buddy _icon for this account:"
msgstr "Uzu tiun kunul p_iktogramon por tiu konto:"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s Opcioj"
+msgid "_Advanced"
+msgstr "_Kroma"
msgid "Use GNOME Proxy Settings"
msgstr "Uzu GNOME-ajn Prokurilo-Agordojn"
@@ -9923,9 +9963,6 @@ msgstr "Se vi rigardas sufiĉe proksime"
msgid "you can see the butterflies mating"
msgstr "vi povas vidi la Zamenhofan barbon kreski"
-msgid "Proxy Options"
-msgstr "Prokurilo Opcioj"
-
msgid "Proxy _type:"
msgstr "Prokurilo _tipo:"
@@ -9953,8 +9990,9 @@ msgstr "_Baza"
msgid "Create _this new account on the server"
msgstr ""
-msgid "_Advanced"
-msgstr "_Kroma"
+#, fuzzy
+msgid "_Proxy"
+msgstr "Prokurilo"
msgid "Enabled"
msgstr "Enŝaltita"
@@ -10019,6 +10057,17 @@ msgstr "Ricevu _Informon"
msgid "I_M"
msgstr "T_M"
+#, fuzzy
+msgid "_Audio Call"
+msgstr "_Aldonu Babilejon"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Video Babilado"
+
msgid "_Send File..."
msgstr "_Sendu Dosieron..."
@@ -10156,6 +10205,10 @@ msgstr "/Iloj/Kunul _Atentigoj"
msgid "/Tools/_Certificates"
msgstr "/Iloj/_Atestiloj"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Iloj/Privateco"
+
msgid "/Tools/Plu_gins"
msgstr "/Iloj/Kromaĵo_j"
@@ -10165,10 +10218,6 @@ msgstr "/Iloj/Agordoj"
msgid "/Tools/Pr_ivacy"
msgstr "/Iloj/Pr_ivateco"
-#, fuzzy
-msgid "/Tools/Smile_y"
-msgstr "/Iloj/Privateco"
-
msgid "/Tools/_File Transfers"
msgstr "/Iloj/_Dosiero-alŝutoj"
@@ -10284,8 +10333,8 @@ msgstr "Mane"
msgid "By status"
msgstr "Laŭ stato"
-msgid "By log size"
-msgstr "Laŭ protokolo grandeco"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10301,6 +10350,9 @@ msgstr "Rekontaktu"
msgid "Re-enable"
msgstr "Reŝaltu"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr "Rebonvenon!"
@@ -10390,6 +10442,9 @@ msgstr ""
msgid "A_lias:"
msgstr "A_linomo:"
+msgid "_Group:"
+msgstr "_Grupo:"
+
msgid "Auto_join when account becomes online."
msgstr ""
@@ -10440,14 +10495,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr "Invitu Kunul En Babilejo"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Bonvolu enigi la nomon de uzanto kiun vi deziras inviti, kun fakultativan "
-"invitmesaĝon."
-
msgid "_Buddy:"
msgstr "K_unul:"
@@ -10523,6 +10570,22 @@ msgstr "/Konversacio/_Konservu Kiel..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Konversacio/Fo_rviŝu Dialogon"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Konversacio/_Pli"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Konversacio/_Pli"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Konversacio/_Pli"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Konversacio/Montru _Protokolon"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Konversacio/Se_ndu Dosieron..."
@@ -10595,6 +10658,18 @@ msgstr "/Konversacio"
msgid "/Conversation/View Log"
msgstr "/Konversacio/Montru Protokoladon"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Konversacio/Pli"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Konversacio/Montru Protokoladon"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Konversacio/Pli"
+
msgid "/Conversation/Send File..."
msgstr "/Konversacio/Sendu Dosieron..."
@@ -10779,6 +10854,9 @@ msgstr "Artisto"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "subteno"
@@ -10920,6 +10998,10 @@ msgstr "Kartvela"
msgid "Ubuntu Georgian Translators"
msgstr "Ubuntaj Kartvelaj Tradukantoj"
+#, fuzzy
+msgid "Khmer"
+msgstr "Alia"
+
msgid "Kannada"
msgstr "Kanara"
@@ -10941,6 +11023,10 @@ msgstr "Litova"
msgid "Macedonian"
msgstr "Makedona"
+#, fuzzy
+msgid "Mongolian"
+msgstr "Makedona"
+
msgid "Bokmål Norwegian"
msgstr "Bokmål Norvega"
@@ -11055,7 +11141,24 @@ msgstr ""
"<BR><BR>"
#, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, fuzzy, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin ĉe irc.freenode.net<BR><BR>"
+
+#, fuzzy, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin ĉe irc.freenode.net<BR><BR>"
msgid "Current Developers"
@@ -11375,15 +11478,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr "Nova retpoŝt-avizoj"
-msgid "_Copy Email Address"
-msgstr "_Kopiu Retadreson"
-
-msgid "_Open Link in Browser"
-msgstr "_Malfermu Ligilon en Retumilo"
-
-msgid "_Copy Link Location"
-msgstr "_Kopiu Ligilo-Lokon"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -11632,6 +11726,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -11661,6 +11756,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -11703,11 +11799,27 @@ msgstr ""
msgid "Pidgin"
msgstr "Piĝin"
-msgid "Open All Messages"
-msgstr "Malfermu Ĉiujn Mesaĝojn"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Vi ricevis retmesaĝon!</span>"
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "Kalkulante..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -11737,6 +11849,27 @@ msgid ""
msgstr ""
"La 'Mana' foliumilo komando estis elektita, sed nenia komando estis difinita."
+msgid "Open All Messages"
+msgstr "Malfermu Ĉiujn Mesaĝojn"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Vi ricevis retmesaĝon!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "Nova Kunul Atentigo"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Vi ricevis retmesaĝon!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "Nekonata mesaĝo"
+
msgid "The following plugins will be unloaded."
msgstr "La jenajn kromaĵoj estos malŝarĝitaj."
@@ -11788,6 +11921,10 @@ msgstr "<b>Kromaĵo Detaloj</b>"
msgid "Select a file"
msgstr "Elektu dosieron"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Redaktu Kunul Atentigo"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "Atentigi Kiun"
@@ -11858,6 +11995,50 @@ msgstr "_Rikuranta"
msgid "Pounce Target"
msgstr ""
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "Ektajpas"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "Paŭzas tajpante"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "Ensalutas"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s revenis el senfarado (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "Ekmalforiĝas"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "Ekmaltajpas"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "Audiaŭas"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "Eksenfaras"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "Kiam fora"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Sendu mesaĝon"
+
+#, c-format
+msgid "Unknown.... Please report this!"
+msgstr ""
+
msgid "Smiley theme failed to unpack."
msgstr ""
@@ -11881,6 +12062,12 @@ msgstr ""
msgid "Cl_ose conversations with the Escape key"
msgstr "Konversacioj kun %s"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Kunullisto"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "Sistemlistela Piktogramo"
@@ -11991,9 +12178,6 @@ msgstr ""
msgid "Cannot start browser configuration program."
msgstr ""
-msgid "ST_UN server:"
-msgstr "ST_UN servilo:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">Ekzemplo: stunserver.org</span>"
@@ -12018,6 +12202,10 @@ msgstr "_Komenca pordo:"
msgid "_End port:"
msgstr "_Fina pordo:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr "Prokura Servilo &amp; Retumilo"
@@ -12044,6 +12232,10 @@ msgstr "Prokura Servilo"
msgid "No proxy"
msgstr "Sen prokurilo"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "_Uzanto:"
@@ -12207,12 +12399,12 @@ msgstr "Kiam ambaŭ fora kaj senfara"
msgid "Auto-away"
msgstr "Aŭto-fora"
-msgid "Change status when _idle"
-msgstr "Ŝanĝu staton kiam _senfara"
-
msgid "_Minutes before becoming idle:"
msgstr "_Minutoj antaŭe eksenfari:"
+msgid "Change status when _idle"
+msgstr "Ŝanĝu staton kiam _senfara"
+
msgid "Change _status to:"
msgstr "Ŝangû _staton al:"
@@ -12360,6 +12552,12 @@ msgstr "Konser_vu & Uzu"
msgid "Status for %s"
msgstr "Stato por %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
#, fuzzy
msgid "Custom Smiley"
msgstr "Enmetu Ridmienon"
@@ -12370,15 +12568,15 @@ msgstr ""
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
+msgstr ""
+
#, fuzzy
msgid "Duplicate Shortcut"
msgstr "Duobligo Korekto"
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
-msgstr ""
-
#, fuzzy
msgid "Please select an image for the smiley."
msgstr "Bonvolu enigi novan nomon por vi."
@@ -12392,17 +12590,22 @@ msgid "Add Smiley"
msgstr "Ridetu!"
#, fuzzy
-msgid "Smiley _Image"
-msgstr "Konservu Bildon"
+msgid "_Image:"
+msgstr "B_ildon"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr ""
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "Ordigi"
#, fuzzy
msgid "Smiley"
msgstr "Ridetu!"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "Ordigi"
+
msgid "Custom Smiley Manager"
msgstr ""
@@ -12521,6 +12724,16 @@ msgid ""
"Failed to load image '%s': reason not known, probably a corrupt image file"
msgstr ""
+#, fuzzy
+msgid "_Open Link"
+msgstr "_Malfermu ligilon per:"
+
+msgid "_Copy Link Location"
+msgstr "_Kopiu Ligilo-Lokon"
+
+msgid "_Copy Email Address"
+msgstr "_Kopiu Retadreson"
+
msgid "Save File"
msgstr "Konservu Dosieron"
@@ -13473,9 +13686,6 @@ msgstr ""
msgid "Only when docked"
msgstr ""
-msgid "_Flash window when chat messages are received"
-msgstr ""
-
msgid "Windows Pidgin Options"
msgstr "Vindozaj Piĝinaj Opcioj"
@@ -13523,6 +13733,101 @@ msgstr ""
msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr ""
+#, fuzzy
+#~ msgid "Invite message"
+#~ msgstr "Enmetu en mesaĝon"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Bonvolu enigi la nomon de uzanto kiun vi deziras inviti, kun fakultativan "
+#~ "invitmesaĝon."
+
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "Ne eblas ricevi MSN Adresaron"
+
+#, fuzzy
+#~ msgid "Add buddy Q&A"
+#~ msgstr "Aldonu Kunulon"
+
+#, fuzzy
+#~ msgid ""
+#~ "Lost connection with server:\n"
+#~ "%d, %s"
+#~ msgstr ""
+#~ "Perdis konekton kun servilo:\n"
+#~ "%s"
+
+#~ msgid "Failed to send IM."
+#~ msgstr "Malsukcesis sendi tujmesaĝon."
+
+#~ msgid "Failure."
+#~ msgstr "Malsukceso."
+
+#~ msgid "Country not supported."
+#~ msgstr "Lando ne subtenita."
+
+#, fuzzy
+#~ msgid "Incorrect username or password."
+#~ msgstr "Misa ekrannomo aŭ pasvorto."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "Nekonata ensaluteraro okazis: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "Nekonata eraro, %d, okazis. Informo: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "Malvalida Gruponomo"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Konekto Fermita"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "Atendante respondon..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "TOC revenis el sia paŭzo. Vi nun povas sendi mesaĝojn denove."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "Pasvorto Ŝanĝita Sukcese"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Ricevu Ujan Informon"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Difini Ujan Informon"
+
+#~ msgid "Save As..."
+#~ msgstr "Konservu Kiel..."
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "TOC Protokol-Kromaĵo"
+
+#~ msgid "User information for %s unavailable"
+#~ msgstr "Uzanto informo pri %s nedisponebla"
+
+#~ msgid "%s Options"
+#~ msgstr "%s Opcioj"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Prokurilo Opcioj"
+
+#~ msgid "By log size"
+#~ msgstr "Laŭ protokolo grandeco"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_Malfermu Ligilon en Retumilo"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "ST_UN servilo:"
+
+#, fuzzy
+#~ msgid "Smiley _Image"
+#~ msgstr "Konservu Bildon"
+
#~ msgid "A group with the name already exists."
#~ msgstr "Samnomita grupo jam ekzistas."
@@ -13580,13 +13885,6 @@ msgstr ""
#~ msgid "Change Qun information"
#~ msgstr "Ŝanĝu uzanto-informon de %s"
-#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr "%s (%s)"
-
#~ msgid "System Message"
#~ msgstr "Sistema Mesaĝo"
diff --git a/po/es.po b/po/es.po
index 634936d863..b6f5a8f6e5 100644
--- a/po/es.po
+++ b/po/es.po
@@ -52,7 +52,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-01-04 09:58-0500\n"
+"POT-Creation-Date: 2009-04-30 10:37-0400\n"
"PO-Revision-Date: 2009-01-05 00:05+0100\n"
"Last-Translator: Javier Fernández-Sanguino <jfs@debian.org>\n"
"Language-Team: Spanish team <es@li.org>\n"
@@ -70,13 +70,13 @@ msgstr "Finch"
msgid "%s. Try `%s -h' for more information.\n"
msgstr "%s. Intente `%s -h' para más información.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -659,19 +659,6 @@ msgstr ""
msgid "Send To"
msgstr "Enviar a"
-msgid "Invite message"
-msgstr "Mensaje de invitacio"
-
-msgid "Invite"
-msgstr "Invitar"
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Introduzca el nombre de usuario al que desea invitar,\\n\n"
-"junto con un mensaje de invitación opcional."
-
msgid "Conversation"
msgstr "Conversación"
@@ -720,8 +707,8 @@ msgid ""
"%s is not a valid message class. See '/help msgcolor' for valid message "
"classes."
msgstr ""
-"%s no es una clase de mensajes válida. Consulte «/help msgcolor» para ver "
-"las clases de mensaje válidas."
+"%s no es una clase de mensajes válida. Consulte «/help msgcolor» para ver las "
+"clases de mensaje válidas."
#, c-format
msgid "%s is not a valid color. See '/help msgcolor' for valid colors."
@@ -934,6 +921,41 @@ msgstr "Todas las conversaciones"
msgid "System Log"
msgstr "Registro del Sistema"
+#, fuzzy
+msgid "Calling ... "
+msgstr "Calculando..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "Aceptar"
+
+msgid "Reject"
+msgstr "Rechazar"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "Ha abandonado el canal %s%s"
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "Correos"
@@ -968,6 +990,9 @@ msgstr "Continuar"
msgid "IM"
msgstr "MI"
+msgid "Invite"
+msgstr "Invitar"
+
msgid "(none)"
msgstr "(ninguno)"
@@ -1216,7 +1241,6 @@ msgstr "Minutos antes de cambiar el estado"
msgid "Change status to"
msgstr "Cambiar estado a"
-#. Conversations
msgid "Conversations"
msgstr "Conversaciones"
@@ -1583,6 +1607,28 @@ msgstr "GntLastlog"
msgid "Lastlog plugin."
msgstr "Complemento «Lastlog»."
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL de música"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "cuentas"
@@ -1685,13 +1731,6 @@ msgstr "¿Desea aceptar el certificado para %s?"
msgid "SSL Certificate Verification"
msgstr "Verificación de certificado SSL"
-#. Number of actions
-msgid "Accept"
-msgstr "Aceptar"
-
-msgid "Reject"
-msgstr "Rechazar"
-
msgid "_View Certificate..."
msgstr "_Ver certificado..."
@@ -1841,6 +1880,18 @@ msgstr "%s ha salido de la sala."
msgid "%s left the room (%s)."
msgstr "%s ha salido de la sala (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Invitar a conferencia"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Introduzca el nombre de usuario al que desea invitar, junto con un mensaje "
+"de invitación opcional."
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "No se pudo obtener la conexión: %s"
@@ -1887,6 +1938,7 @@ msgstr ""
"Error al leer del proceso de resolución:\n"
"%s"
+#, c-format
msgid "Resolver process exited without answering our request"
msgstr "El proceso de resolución salió sin responder a su petición"
@@ -2687,6 +2739,32 @@ msgstr "Guardar los mensajes de desconexión como un aviso"
msgid "Do not ask. Always save in pounce."
msgstr "No preguntar. Siempre guardar como un aviso."
+#, fuzzy
+msgid "One Time Password"
+msgstr "Introduzca la contraseña"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2898,7 +2976,6 @@ msgstr ""
"No se pudo establecer una conexión con el servidor mDNS local. ¿Está "
"arrancado?"
-#. Creating the options for the protocol
msgid "First name"
msgstr "Nombre:"
@@ -2930,6 +3007,11 @@ msgstr "Complemento de protocolo Bonjour"
msgid "Purple Person"
msgstr "Persona morada"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "Localidad"
+
msgid "Bonjour"
msgstr "Bonjour"
@@ -3088,6 +3170,7 @@ msgstr "Seleccione un chat para el amigo: %s"
msgid "Add to chat..."
msgstr "Añadir al chat"
+#. Global
msgid "Available"
msgstr "Disponible"
@@ -3435,6 +3518,17 @@ msgstr ""
"El servidor rechazó el nombre que escogió para su cuenta. Es posible que "
"incluya caracteres inválidos."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "Ya existe un chat con ese nombre"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Apodo: %s\n"
+
msgid "Cannot change nick"
msgstr "No se puede cambiar el alias"
@@ -3708,6 +3802,41 @@ msgstr "Desafío inválido del servidor"
msgid "SASL error"
msgstr "Error de SASL"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "No se indicó una razón"
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Versión no soportada"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"No se pudo establecer una conexión con el servidor:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"No se pudo establecer una conexión con el servidor:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "No se pudo inicializar la conexión"
+
+msgid "Unable to create socket"
+msgstr "No se pudo crear el socket"
+
+msgid "Write error"
+msgstr "Error de escritura"
+
msgid "Full Name"
msgstr "Nombre completo"
@@ -3774,6 +3903,10 @@ msgstr "Cliente"
msgid "Operating System"
msgstr "Sistema operativo"
+#, fuzzy
+msgid "Local Time"
+msgstr "Archivo local:"
+
msgid "Last Activity"
msgstr "Última actividad"
@@ -4105,9 +4238,6 @@ msgstr "Buscar salas"
msgid "You require encryption, but it is not available on this server."
msgstr "Necesita cifrado, pero no está disponible esa opción en este servidor."
-msgid "Write error"
-msgstr "Error de escritura"
-
msgid "Ping timeout"
msgstr "Tiempo de expiración del ping"
@@ -4116,14 +4246,9 @@ msgstr "Error de lectura"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"No se pudo establecer una conexión con el servidor:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "No se pudo crear el socket"
msgid "Invalid XMPP ID"
msgstr "XMPP ID no válido"
@@ -4131,6 +4256,10 @@ msgstr "XMPP ID no válido"
msgid "Invalid XMPP ID. Domain must be set."
msgstr "XMPP ID inválido. Debe establecerse el dominio."
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "No se pudo conectar al servidor."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "Registro de %s@%s efectuado con éxito"
@@ -4225,6 +4354,12 @@ msgstr "El servidor no soporta bloqueos"
msgid "Not Authorized"
msgstr "No autorizado"
+msgid "Mood"
+msgstr "Estado de ánimo"
+
+msgid "Now Listening"
+msgstr "Escuchando ahora"
+
msgid "Both"
msgstr "Ambos"
@@ -4246,12 +4381,6 @@ msgstr "Ninguno"
msgid "Subscription"
msgstr "Subscripción"
-msgid "Mood"
-msgstr "Estado de ánimo"
-
-msgid "Now Listening"
-msgstr "Escuchando ahora"
-
msgid "Mood Text"
msgstr "Texto de estado de ánimo"
@@ -4489,20 +4618,26 @@ msgstr "No puede expulsar al usuario %s"
msgid "Unable to ping user %s"
msgstr "No puede hacer un ping al usuario %s"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr "No se pudo dar el codazo porque no se sabe nada del usuario %s."
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr ""
"No se pudo dar el codazo porque puede que el usuario %s esté desconectado."
-#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+#, fuzzy, c-format
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr ""
"No se pudo dar un codazo porque el usuario %s no tiene soporte para ello."
+#, c-format
+msgid "Buzzing %s..."
+msgstr "Dando un codazo a %s..."
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
msgid "Buzz"
@@ -4512,9 +4647,36 @@ msgstr "Codazo"
msgid "%s has buzzed you!"
msgstr "¡%s le ha dado un codazo!"
-#, c-format
-msgid "Buzzing %s..."
-msgstr "Dando un codazo a %s..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "No se pudo enviar el archivo a %s, JID inválido"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "No se pudo enviar el archivo a %s, el usuario no está conectado"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr ""
+"No se pudo enviar el archivo a %s, no está suscrito a la presencia del "
+"usuario"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "Falló el registro"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "Elija el recurso de %s al que quiera enviar un archivo"
+
+msgid "Select a Resource"
+msgstr "Seleccione un recurso"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "Iniciar _chat"
msgid "config: Configure a chat room."
msgstr "config: Configurar una sala de chat."
@@ -4670,6 +4832,21 @@ msgstr "Error al unirse al chat %s"
msgid "Error in chat %s"
msgstr "Error en el chat %s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "Se produjo un error al abrir el archivo."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "Falló la transferencia de archivos"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "No se pudo abrir el archivo «%s»: %s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4697,9 +4874,6 @@ msgstr ""
msgid "Please select the resource of %s to which you would like to send a file"
msgstr "Elija el recurso de %s al que quiera enviar un archivo"
-msgid "Select a Resource"
-msgstr "Seleccione un recurso"
-
msgid "Edit User Mood"
msgstr "Editar estados de ánimo del usuario"
@@ -4734,9 +4908,6 @@ msgstr "Acciones"
msgid "Select an action"
msgstr "Seleccione una acción"
-msgid "Unable to retrieve MSN Address Book"
-msgstr "No se pudo obtener el libro de direcciones de MSN"
-
#. only notify the user about problems adding to the friends list
#. * maybe we should do something else for other lists, but it probably
#. * won't cause too many problems if we just ignore it
@@ -4770,169 +4941,222 @@ msgstr ""
"%s está en la lista local pero no está en la lista del servidor. ¿Desea "
"añadir a este amigo?"
+#, c-format
msgid "Unable to parse message"
msgstr "No se pudo interpretar el mensaje"
+#, c-format
msgid "Syntax Error (probably a client bug)"
msgstr "Error de sintaxis (probablemente un error del cliente)"
+#, c-format
msgid "Invalid email address"
msgstr "Dirección de correo electrónico inválida"
+#, c-format
msgid "User does not exist"
msgstr "El usuario no existe"
+#, c-format
msgid "Fully qualified domain name missing"
msgstr "Falta un nombre de dominio totalmente cualificado"
+#, c-format
msgid "Already logged in"
msgstr "Ya está conectado"
+#, c-format
msgid "Invalid username"
msgstr "Nombre de usuario no válido"
+#, c-format
msgid "Invalid friendly name"
msgstr "Nombre de amigo no válido"
+#, c-format
msgid "List full"
msgstr "Lista llena"
+#, c-format
msgid "Already there"
msgstr "Ya está en lista"
+#, c-format
msgid "Not on list"
msgstr "No está en la lista"
+#, c-format
msgid "User is offline"
msgstr "El usuario no está conectado"
+#, c-format
msgid "Already in the mode"
msgstr "Ya está en ese modo"
+#, c-format
msgid "Already in opposite list"
msgstr "Ya está en la lista contraria"
+#, c-format
msgid "Too many groups"
msgstr "Demasiados grupos"
+#, c-format
msgid "Invalid group"
msgstr "Grupo inválido"
+#, c-format
msgid "User not in group"
msgstr "El usuario no está en el grupo"
+#, c-format
msgid "Group name too long"
msgstr "Nombre de grupo demasiado largo"
+#, c-format
msgid "Cannot remove group zero"
msgstr "No se puede eliminar el grupo cero"
+#, c-format
msgid "Tried to add a user to a group that doesn't exist"
msgstr "Intentó añadir un contacto a un grupo que no existe"
+#, c-format
msgid "Switchboard failed"
msgstr "Falló el servidor Switchboard"
+#, c-format
msgid "Notify transfer failed"
msgstr "Falló la notificación de la transferencia"
+#, c-format
msgid "Required fields missing"
msgstr "Faltan campos obligatorios"
+#, c-format
msgid "Too many hits to a FND"
msgstr "Demasiados resultados de un FND"
+#, c-format
msgid "Not logged in"
msgstr "No ha iniciado sesión"
+#, c-format
msgid "Service temporarily unavailable"
msgstr "Servicio no disponible temporalmente"
+#, c-format
msgid "Database server error"
msgstr "Error del servidor de base de datos"
+#, c-format
msgid "Command disabled"
msgstr "Orden deshabilitada"
+#, c-format
msgid "File operation error"
msgstr "Error de operación de archivos"
+#, c-format
msgid "Memory allocation error"
msgstr "Error al asignar memoria"
+#, c-format
msgid "Wrong CHL value sent to server"
msgstr "Valor CHL erróneo enviado al servidor"
+#, c-format
msgid "Server busy"
msgstr "Servidor ocupado"
+#, c-format
msgid "Server unavailable"
msgstr "Servidor no disponible"
# «Peer» no tiene una traducción fácil, he elegido 'pares' (de par, o igual)
# Acepto otras alternativas (pero no dejarlo igual) jfs.
+#, c-format
msgid "Peer notification server down"
msgstr "Servidor de notificación de pares caído"
+#, c-format
msgid "Database connect error"
msgstr "Error de conexión con la base de datos"
+#, c-format
msgid "Server is going down (abandon ship)"
msgstr "El servidor está apagándose (Sálvese quien pueda)"
+#, c-format
msgid "Error creating connection"
msgstr "Error al crear la conexión"
+#, c-format
msgid "CVR parameters are either unknown or not allowed"
msgstr "Los parámetros CVR no se conocen o no están permitidos"
+#, c-format
msgid "Unable to write"
msgstr "No se pudo escribir"
# En verdad traduje el error como figura en
# "http://www.hypothetic.org/docs/msn/basics.php" -NL.
+#, c-format
msgid "Session overload"
msgstr "Sobrecarga de sesión"
+#, c-format
msgid "User is too active"
msgstr "El usuario está demasiado activo"
+#, c-format
msgid "Too many sessions"
msgstr "Demasiadas sesiones"
+#, c-format
msgid "Passport not verified"
msgstr "Pasaporte no verificado"
+#, c-format
msgid "Bad friend file"
msgstr "Fichero de amigos incorrecto"
+#, c-format
msgid "Not expected"
msgstr "No se esperaba"
+#, c-format
msgid "Friendly name changes too rapidly"
msgstr "Los nombres de amigos cambian demasiado rápido"
+#, c-format
msgid "Server too busy"
msgstr "Servidor muy ocupado"
+#, c-format
msgid "Authentication failed"
msgstr "Falló la autenticación"
+#, c-format
msgid "Not allowed when offline"
msgstr "No puede mandar mensajes fuera de línea"
+#, c-format
msgid "Not accepting new users"
msgstr "No se aceptan usuarios nuevos"
+#, c-format
msgid "Kids Passport without parental consent"
msgstr "Pasaporte de menores sin consentimiento paterno"
+#, c-format
msgid "Passport account not yet verified"
msgstr "Cuenta Passport no verificada aún"
msgid "Passport account suspended"
msgstr "Cuenta Passport suspendida"
+#, c-format
msgid "Bad ticket"
msgstr "Ticket erróneo"
@@ -6475,7 +6699,7 @@ msgstr ""
"válidas, o empezar con una letra y sólo pueden contener letras, números y "
"espacios, o contener sólo números."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr "Nombre de usuario no válido."
@@ -6492,7 +6716,7 @@ msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr ""
"El servicio de Mensajería Instantáneo AOL está temporalmente no disponible."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6529,13 +6753,9 @@ msgstr "Introduzca el dígito de seis números que aparece en la pantalla."
msgid "_OK"
msgstr "_Aceptar"
-#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
-msgstr ""
-"Quizá sea desconectado en breve. Puede querer usar TOC hasta que esto se "
-"resuelva. Compruebe %s para novedades."
+#, fuzzy, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
+msgstr "Quizá sea desconectado en breve. Compruebe %s para novedades."
msgid "Unable to get a valid AIM login hash."
msgstr "No se pudo obtener un «hash» de conexión a AIM válido."
@@ -6684,7 +6904,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] "Se perdió %hu mensaje de %s por motivos desconocidos."
msgstr[1] "Se perdieron %hu mensajes de %s por motivos desconocidos."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "No se pudo enviar el mensaje: %s"
@@ -6999,6 +7219,7 @@ msgstr "C_onectar"
msgid "Get AIM Info"
msgstr "Info"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "Editar comentario de amigo"
@@ -7279,6 +7500,39 @@ msgstr "Actualizar"
msgid "Could not change buddy information."
msgstr "No se pudo cambiar la información del amigo."
+# El latinoamérica se prefiere 'Celular', creo, jfs
+msgid "Mobile"
+msgstr "Móvil"
+
+msgid "Note"
+msgstr "Nota"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "Icono de amigo"
+
+msgid "Change his/her memo as you like"
+msgstr ""
+
+#, fuzzy
+msgid "_Modify"
+msgstr "Modificar"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "Modificar"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "Servidor ocupado"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
#, c-format
msgid "%u requires verification"
msgstr "%u solicita verificación"
@@ -7588,6 +7842,13 @@ msgstr "<p><b>Encantadores escritores de parches</b>:<br>\n"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<p><b>Agradecimientos</b>:<br>\n"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<p><b>Autor original</b>:<br>\n"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr "<p><i>Y, todos los chicos entre bastidores...</i><br>\n"
@@ -7613,6 +7874,10 @@ msgstr "Actualizar todos los Quns QQ"
msgid "About OpenQ"
msgstr "Acerca de OpenQ"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Modiciar el domicilio"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7650,6 +7915,9 @@ msgstr "Mostrar notas del servidor"
msgid "Show server news"
msgstr "Mostrar noticas del servidor"
+msgid "Show chat room when msg comes"
+msgstr ""
+
msgid "Keep alive interval (seconds)"
msgstr "Intervalo de comprobación de conexión (segundos)"
@@ -7717,7 +7985,6 @@ msgstr ""
"Respuesta desconocida al conectarse (0x%02X):\n"
"%s"
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "No se pudo conectar."
@@ -7865,8 +8132,8 @@ msgstr "Arrancando servicios"
msgid ""
"A Sametime administrator has issued the following announcement on server %s"
msgstr ""
-"Un administrador de «Sametime» ha enviado el siguiente anuncio en el "
-"servidor %s"
+"Un administrador de «Sametime» ha enviado el siguiente anuncio en el servidor "
+"%s"
msgid "Sametime Administrator Announcement"
msgstr "Anuncio del administrador «Sametime»"
@@ -8075,9 +8342,9 @@ msgid ""
"Book groups. Please select the correct group from the list below to add it "
"to your buddy list."
msgstr ""
-"Es posible que el identificador «%s» se refiera a cualquiera de los grupos "
-"de la libreta de direcciones «Notes». Escoja el grupo más apropiado de la "
-"lista que se muestra abajo para añadirlo a su lista de amigos."
+"Es posible que el identificador «%s» se refiera a cualquiera de los grupos de "
+"la libreta de direcciones «Notes». Escoja el grupo más apropiado de la lista "
+"que se muestra abajo para añadirlo a su lista de amigos."
msgid "Select Notes Address Book"
msgstr "Seleccionar libro de direcciones «Notes»"
@@ -8127,8 +8394,8 @@ msgstr "No hubo coincidencias"
#, c-format
msgid "The identifier '%s' did not match any users in your Sametime community."
msgstr ""
-"El identificador «%s» no coincide con ninguno de los usuarios en su "
-"comunidad «Sametime»."
+"El identificador «%s» no coincide con ninguno de los usuarios en su comunidad "
+"«Sametime»."
msgid "No Matches"
msgstr "No hubo coincidencias"
@@ -8412,6 +8679,7 @@ msgstr "<br><b>HMAC de canal:</b> %s"
msgid "<br><b>Channel Topic:</b><br>%s"
msgstr "<br><b>Tema del canal:</b><br>%s"
+#, c-format
msgid "<br><b>Channel Modes:</b> "
msgstr "<br><b>Modos del canal:</b> "
@@ -8436,6 +8704,7 @@ msgstr "Contraseña del canal"
msgid "Channel Public Keys List"
msgstr "Lista de claves públicas del canal"
+#, c-format
msgid ""
"Channel authentication is used to secure the channel from unauthorized "
"access. The authentication may be based on passphrase and digital "
@@ -8628,9 +8897,6 @@ msgstr "Organización"
msgid "Unit"
msgstr "Unidad"
-msgid "Note"
-msgstr "Nota"
-
msgid "Join Chat"
msgstr "Unirse a un chat"
@@ -8838,6 +9104,7 @@ msgstr "Descarga %s: %s"
msgid "Your Current Mood"
msgstr "Su estado de ánimo actual"
+#, c-format
msgid "Normal"
msgstr "Normal"
@@ -9219,36 +9486,46 @@ msgstr "Pizarra"
msgid "No server statistics available"
msgstr "No se disponen de estadísticas del servidor"
+#, c-format
msgid "Failure: Version mismatch, upgrade your client"
msgstr ""
"Fallo: Existe una diferencia en las versiones, por favor, actualice su "
"cliente"
+#, c-format
msgid "Failure: Remote does not trust/support your public key"
msgstr "Fallo: El servidor remoto no soporta/confía en su clave pública"
+#, c-format
msgid "Failure: Remote does not support proposed KE group"
msgstr "Fallo: El servidor remoto no soporta el grupo de IC propuesto"
+#, c-format
msgid "Failure: Remote does not support proposed cipher"
msgstr ""
"Fallo: El servidor remoto no soporta los sistemas de cifrado propuestos"
+#, c-format
msgid "Failure: Remote does not support proposed PKCS"
msgstr "Fallo: El servidor remoto no soporta los PKCS propuestos"
+#, c-format
msgid "Failure: Remote does not support proposed hash function"
msgstr "Fallo: El servidor remoto no soporta la función de hash propuesta"
+#, c-format
msgid "Failure: Remote does not support proposed HMAC"
msgstr "Fallo: El servidor remoto no soporta el HMAC propuesto"
+#, c-format
msgid "Failure: Incorrect signature"
msgstr "Fallo: Firma incorrecta"
+#, c-format
msgid "Failure: Invalid cookie"
msgstr "Fallo: Cookie inválida"
+#, c-format
msgid "Failure: Authentication failed"
msgstr "Fallo: Falló la autenticación"
@@ -9318,186 +9595,14 @@ msgid "Auth Domain"
msgstr "Dominio de autenticación"
#, c-format
-msgid "Looking up %s"
-msgstr "Buscando %s"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Falló la conexión a %s"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Conectado: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "No se pudo escribir el archivo %s."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "No se pudo leer el archivo %s."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "Mensaje demasiado largo, los últimos %s bytes fueron borrados."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s no está conectado ahora."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "No se permiten advertencias de %s."
-
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr ""
-"El mensaje ha sido descartado, usted esta excediendo el límite de velocidad "
-"del servidor."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "No está disponible el chat en %s."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "Esta enviando mensajes demasiado rápido a %s."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "Usted perdió un MI de %s porque era demasiado largo."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "Usted perdió un MI de %s porque fue mandado demasiado rápido."
-
-msgid "Failure."
-msgstr "Fallo."
-
-msgid "Too many matches."
-msgstr "Demasiados resultados."
-
-msgid "Need more qualifiers."
-msgstr "Necesito más calificadores."
-
-msgid "Dir service temporarily unavailable."
-msgstr "Servicio de directorio temporalmente no disponible."
-
-msgid "Email lookup restricted."
-msgstr "Búsqueda de direcciones de correo electrónico restringida."
-
-msgid "Keyword ignored."
-msgstr "Palabra clave ignorada."
-
-msgid "No keywords."
-msgstr "Sin palabras clave."
-
-msgid "User has no directory information."
-msgstr "El usuario no tiene información en el directorio."
-
-msgid "Country not supported."
-msgstr "País no soportado."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Fallo desconocido: %s."
-
-msgid "Incorrect username or password."
-msgstr "Nombre de usuario o contraseña incorrecta."
-
-msgid "The service is temporarily unavailable."
-msgstr "Servicio temporalmente no disponible."
-
-msgid "Your warning level is currently too high to log in."
-msgstr "Su nivel de advertencias es demasiado alto para conectarse."
-
-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 ""
-"Se ha conectado y desconectado demasiadas veces. Espere diez minutos e "
-"inténtelo de nuevo. Si sigue intentándolo, necesitará esperar incluso más "
-"tiempo."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "Ha ocurrido un error desconocido al conectarse: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "Un error desconocido, %d, ha ocurrido. Info: %s"
-
-msgid "Invalid Groupname"
-msgstr "Nombre de grupo inválido"
-
-msgid "Connection Closed"
-msgstr "Conexión cerrada"
-
-msgid "Waiting for reply..."
-msgstr "Esperando respuesta..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "TOC ha terminado su pausa. Ya puede volver a mandar mensajes."
-
-msgid "Password Change Successful"
-msgstr "La contraseña se ha cambiado con éxito"
-
-msgid "_Group:"
-msgstr "_Grupo:"
-
-msgid "Get Dir Info"
-msgstr "Obtener información del directorio"
-
-msgid "Set Dir Info"
-msgstr "Guardar información del directorio"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "¡No se pudo abrir %s para escritura!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr ""
-"Se produjo un fallo en la transferencia del archivo; posiblemente fue "
-"cancelado por el otro extremo."
-
-msgid "Could not connect for transfer."
-msgstr "No se pudo conectar para realizar la transferencia."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr ""
-"No se pudo escribir la cabecera de archivo. El archivo no será transferido."
-
-msgid "Save As..."
-msgstr "Guardar como..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s solicita %s para aceptar %d archivo: %s (%.2f %s)%s%s"
-msgstr[1] "%s solicita %s para aceptar %d archivos: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s le solicita que le mande un archivo"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "Complemento de protocolo TOC"
-
-#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
"%s le ha enviado una invitación para utilizar la webcam, algo aún no "
"soportado."
+msgid "Your SMS was not delivered"
+msgstr ""
+
msgid "Your Yahoo! message did not get sent."
msgstr "Su mensaje Yahoo! no se envió."
@@ -10098,10 +10203,6 @@ msgstr "No molestar"
msgid "Extended away"
msgstr "Ausencia extendida"
-# El latinoamérica se prefiere 'Celular', creo, jfs
-msgid "Mobile"
-msgstr "Móvil"
-
msgid "Listening to music"
msgstr "Escuchando música"
@@ -10143,18 +10244,6 @@ msgstr "+++ %s ahora está activo"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "Error al leer %s"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"Se ha encontrado un error al leer su %s. No se ha cargado, y el archivo "
-"antiguo se ha renombrado a %s~."
-
msgid "Calculating..."
msgstr "Calculando..."
@@ -10230,6 +10319,13 @@ msgstr "Error al escribir a %s: %s"
msgid "Unable to connect to %s: %s"
msgstr "No se pudo conectar a %s: %s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+"El servidor requiere SSL para conectarse. No se dispone de soporte TLS/SSL."
+
#, c-format
msgid " - %s"
msgstr " - %s"
@@ -10239,25 +10335,42 @@ msgid " (%s)"
msgstr " (%s)"
#. 10053
+#, c-format
msgid "Connection interrupted by other software on your computer."
msgstr "Otro programa en su ordenador ha interrumpido la conexión."
#. 10054
+#, c-format
msgid "Remote host closed connection."
msgstr "El servidor remoto ha cerrado la conexión."
#. 10060
+#, c-format
msgid "Connection timed out."
msgstr "Expiró la conexión."
#. 10061
+#, c-format
msgid "Connection refused."
msgstr "Conexión rechazada."
#. 10048
+#, c-format
msgid "Address already in use."
msgstr "La dirección ya se está utilizando."
+#, c-format
+msgid "Error Reading %s"
+msgstr "Error al leer %s"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"Se ha encontrado un error al leer su %s. No se ha cargado, y el archivo "
+"antiguo se ha renombrado a %s~."
+
msgid "Internet Messenger"
msgstr "Cliente de mensajería de Internet"
@@ -10300,10 +10413,8 @@ msgstr "Notificaciones de _correo nuevo"
msgid "Use this buddy _icon for this account:"
msgstr "Utilizar este _icono de amigo para esta cuenta:"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "Opciones de %s"
+msgid "_Advanced"
+msgstr "_Avanzadas"
msgid "Use GNOME Proxy Settings"
msgstr "Usar configuración del proxy de GNOME"
@@ -10338,9 +10449,6 @@ msgstr "Si miras de cerca"
msgid "you can see the butterflies mating"
msgstr "puedes ver a las mariposas apareándose"
-msgid "Proxy Options"
-msgstr "Opciones del proxy"
-
msgid "Proxy _type:"
msgstr "_Tipo de proxy:"
@@ -10368,8 +10476,9 @@ msgstr "_Básica"
msgid "Create _this new account on the server"
msgstr "Crear es_ta nueva cuenta en el servidor"
-msgid "_Advanced"
-msgstr "_Avanzadas"
+#, fuzzy
+msgid "_Proxy"
+msgstr "Proxy"
msgid "Enabled"
msgstr "Habilitado"
@@ -10444,6 +10553,17 @@ msgstr "Obtener _información"
msgid "I_M"
msgstr "_MI"
+#, fuzzy
+msgid "_Audio Call"
+msgstr "Terminar llamada"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Video chat"
+
msgid "_Send File..."
msgstr "_Enviar archivo..."
@@ -10578,6 +10698,10 @@ msgstr "/Herramientas/_Aviso de amigo"
msgid "/Tools/_Certificates"
msgstr "/Herramientas/_Certificados"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Herramientas/_Emoticonos"
+
msgid "/Tools/Plu_gins"
msgstr "/Herramientas/Com_plementos"
@@ -10587,9 +10711,6 @@ msgstr "/Herramientas/_Preferencias"
msgid "/Tools/Pr_ivacy"
msgstr "/Herramientas/Pri_vacidad"
-msgid "/Tools/Smile_y"
-msgstr "/Herramientas/_Emoticonos"
-
msgid "/Tools/_File Transfers"
msgstr "/Herramientas/_Transferencias de archivos"
@@ -10707,8 +10828,8 @@ msgstr "Manualmente"
msgid "By status"
msgstr "Por estado"
-msgid "By log size"
-msgstr "Por tamaño de registro"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10724,6 +10845,9 @@ msgstr "Reconectar"
msgid "Re-enable"
msgstr "Reactivar"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr "¡Bienvenido!"
@@ -10814,6 +10938,9 @@ msgstr ""
msgid "A_lias:"
msgstr "_Apodo:"
+msgid "_Group:"
+msgstr "_Grupo:"
+
msgid "Auto_join when account becomes online."
msgstr "Reconec_tarse cuando la cuenta se pone en línea."
@@ -10865,14 +10992,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr "Invitar a un amigo a la sala de chat"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Introduzca el nombre de usuario al que desea invitar, junto con un mensaje "
-"de invitación opcional."
-
msgid "_Buddy:"
msgstr "_Amigo:"
@@ -10947,6 +11066,22 @@ msgstr "/Conversación/_Guardar como..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Conversación/Limpia_r deslizable"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Conversación/_Más"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Conversación/_Más"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Conversación/_Más"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Conversación/Ver _historial"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Conversación/_Enviar archivo..."
@@ -11019,6 +11154,18 @@ msgstr "/Conversación"
msgid "/Conversation/View Log"
msgstr "/Conversación/Ver registro"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Conversación/Más"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Conversación/Ver registro"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Conversación/Más"
+
msgid "/Conversation/Send File..."
msgstr "/Conversación/Enviar archivo..."
@@ -11201,6 +11348,9 @@ msgstr "artista"
msgid "Ka-Hing Cheung"
msgstr "Ka-Hing Cheung"
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "soporte"
@@ -11341,6 +11491,10 @@ msgstr "Georgiano"
msgid "Ubuntu Georgian Translators"
msgstr "Traductores al georgiano de Ubuntu"
+#, fuzzy
+msgid "Khmer"
+msgstr "Otro"
+
msgid "Kannada"
msgstr "Kannada"
@@ -11362,6 +11516,10 @@ msgstr "Lituano"
msgid "Macedonian"
msgstr "Macedonio"
+#, fuzzy
+msgid "Mongolian"
+msgstr "Macedonio"
+
msgid "Bokmål Norwegian"
msgstr "Noruego Bokmål"
@@ -11477,7 +11635,25 @@ msgstr ""
"completa de personas que han contribuido. Este programa se distribuye sin "
"ninguna garantía.<BR><BR>"
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, fuzzy, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"4\">IRC:</FONT> canal #pidgin en irc.freenode.net<BR><BR>"
+
+#, fuzzy, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"4\">IRC:</FONT> canal #pidgin en irc.freenode.net<BR><BR>"
msgid "Current Developers"
@@ -11786,15 +11962,6 @@ msgstr "Tipografía a utilizar para la notificación de tecleo"
msgid "Enable typing notification"
msgstr "Activar la notificación de tecleo"
-msgid "_Copy Email Address"
-msgstr "_Copiar dirección de correo electrónico"
-
-msgid "_Open Link in Browser"
-msgstr "_Abrir enlace en navegador"
-
-msgid "_Copy Link Location"
-msgstr "_Copiar destino del enlace"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -11837,9 +12004,11 @@ msgstr ""
msgid "Save Image"
msgstr "Guardar imagen"
+#, c-format
msgid "_Save Image..."
msgstr "_Guardar imagen..."
+#, c-format
msgid "_Add Custom Smiley..."
msgstr "_Añadir emoticonos a medida..."
@@ -12042,13 +12211,14 @@ msgstr "_Acceder a la carpeta de registros"
msgid "%s %s. Try `%s -h' for more information.\n"
msgstr "%s %s. Intente `%s -h' para más información.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12075,13 +12245,14 @@ msgstr ""
" --display=DISPLAY pantalla X que se debe utilizar\n"
" -v, --version mostrar la versión actual y salir\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12140,11 +12311,27 @@ msgstr ""
msgid "Pidgin"
msgstr "Pidgin"
-msgid "Open All Messages"
-msgstr "Abrir todos los mensajes"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">¡Tiene correo!</span>"
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "Calculando..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -12175,6 +12362,27 @@ msgstr ""
"Se ha definido un navegador «Manual», pero no se ha definido ningún comando "
"para ejecutarlo."
+msgid "Open All Messages"
+msgstr "Abrir todos los mensajes"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">¡Tiene correo!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "Nuevo aviso de amigo"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">¡Tiene correo!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "(1 mensaje)"
+
msgid "The following plugins will be unloaded."
msgstr "Se van a desactivar los siguientes complementos."
@@ -12223,6 +12431,10 @@ msgstr "<b>Detalles del complemento</b>"
msgid "Select a file"
msgstr "Seleccione un archivo"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Editar aviso de amigo"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "A quién avisar"
@@ -12295,6 +12507,50 @@ msgstr "_Recurrente"
msgid "Pounce Target"
msgstr "Objetivo a avisar"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "Empieza a escribir"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "Hace una pausa mientras escribe"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "Se conecta"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "Dejar de estar i_nactivo"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "Deja de estar ausente"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "Deja de escribi_r"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "Se desconecta"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "Está inactivo"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "Cuando estoy fuera"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Enviar un mensaje"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "Evento de aviso desconocido. ¡Por favor, informe de esto! "
+
msgid "Smiley theme failed to unpack."
msgstr "Falló el desempaque de tema de emoticonos"
@@ -12317,6 +12573,12 @@ msgstr "Atajos de teclado"
msgid "Cl_ose conversations with the Escape key"
msgstr "C_errrar las conversaciones con la tecla Esc"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Lista de amigos"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "Icono del área de notificación del sistema"
@@ -12427,9 +12689,6 @@ msgstr "No se pudo iniciar el programa de configuración de proxy."
msgid "Cannot start browser configuration program."
msgstr "No se pudo iniciar el programa de configuración del navegador."
-msgid "ST_UN server:"
-msgstr "Servidor ST_UN:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">Ejemplo: stunserver.org</span>"
@@ -12454,6 +12713,10 @@ msgstr "Puerto _inicial:"
msgid "_End port:"
msgstr "Puerto _final:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr "Servidor proxy y navegador"
@@ -12482,6 +12745,10 @@ msgstr "Servidor proxy"
msgid "No proxy"
msgstr "Sin proxy"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "_Usuario:"
@@ -12562,21 +12829,27 @@ msgstr "Registrar todos los cambios de _estado en el registro del sistema"
msgid "Sound Selection"
msgstr "Selección de sonido"
+#, c-format
msgid "Quietest"
msgstr "El más silencioso"
+#, c-format
msgid "Quieter"
msgstr "Más silencioso"
+#, c-format
msgid "Quiet"
msgstr "Silencio"
+#, c-format
msgid "Loud"
msgstr "Ruidoso"
+#, c-format
msgid "Louder"
msgstr "Más ruidoso"
+#, c-format
msgid "Loudest"
msgstr "El más ruidoso"
@@ -12635,12 +12908,12 @@ msgstr "Cuando está ausente e inactivo"
msgid "Auto-away"
msgstr "Auto-ausencia"
-msgid "Change status when _idle"
-msgstr "Cambiar el estado cuando esté _inactivo"
-
msgid "_Minutes before becoming idle:"
msgstr "_Minutos antes de pasar a inactivo:"
+msgid "Change status when _idle"
+msgstr "Cambiar el estado cuando esté _inactivo"
+
msgid "Change _status to:"
msgstr "Cambiar _estado a:"
@@ -12791,6 +13064,12 @@ msgid "Status for %s"
msgstr "Estado de %s"
# No estoy muy seguro de usar emoticono, quizás «smiley» sería más apropiado
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
msgid "Custom Smiley"
msgstr "Emoticono a medida"
@@ -12800,16 +13079,16 @@ msgstr "Son necesarios más datos"
msgid "Please provide a shortcut to associate with the smiley."
msgstr "Indique un atajo para asociarlo al emoticono."
-msgid "Duplicate Shortcut"
-msgstr "Atajo duplicado"
-
+#, fuzzy, c-format
msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
+"A custom smiley for '%s' already exists. Please use a different shortcut."
msgstr ""
"Ya existe un emoticono a medida para el atajo de teclado seleccionado. "
"Especifique un atajo distinto."
+msgid "Duplicate Shortcut"
+msgstr "Atajo duplicado"
+
msgid "Please select an image for the smiley."
msgstr "Escoja una imagen para el emoticono."
@@ -12820,16 +13099,22 @@ msgstr "Editar emoticono"
msgid "Add Smiley"
msgstr "Añadir emoticono"
-msgid "Smiley _Image"
-msgstr "Imagen de emoticono"
+#, fuzzy
+msgid "_Image:"
+msgstr "_Imagen"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr "Ata_jos de emoticonos"
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "Atajo de teclado"
msgid "Smiley"
msgstr "Emoticono"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "Atajo de teclado"
+
msgid "Custom Smiley Manager"
msgstr "Gestor de emoticonos a medida"
@@ -12954,8 +13239,18 @@ msgstr "No se pudo abrir el archivo «%s»: %s"
msgid ""
"Failed to load image '%s': reason not known, probably a corrupt image file"
msgstr ""
-"Se produjo un fallo al cargar la imagen «%s»: razón desconocida, "
-"posiblemente se trata de un archivo de imagen dañado"
+"Se produjo un fallo al cargar la imagen «%s»: razón desconocida, posiblemente "
+"se trata de un archivo de imagen dañado"
+
+#, fuzzy
+msgid "_Open Link"
+msgstr "_Abrir enlace en:"
+
+msgid "_Copy Link Location"
+msgstr "_Copiar destino del enlace"
+
+msgid "_Copy Email Address"
+msgstr "_Copiar dirección de correo electrónico"
msgid "Save File"
msgstr "Guardar archivo"
@@ -13595,6 +13890,7 @@ msgstr "Diálogo de notificación"
msgid "Select Color"
msgstr "Seleccionar el color"
+#, c-format
msgid "Select Interface Font"
msgstr "Seleccionar tipografía de la interfaz"
@@ -13824,6 +14120,7 @@ msgid "Timestamp Format Options"
msgstr "Opciones de formato de marca de tiempo"
# JFS: Is this complete? REVIEW
+#, c-format
msgid "_Force 24-hour time format"
msgstr "_Forzar formato de tiempo de 24 horas"
@@ -13945,9 +14242,6 @@ msgstr "_Mantener la ventana de lista de amigos por encima del resto"
msgid "Only when docked"
msgstr "Solamente cuando se apile"
-msgid "_Flash window when chat messages are received"
-msgstr "_Destello de ventana cuando se reciben mensajes de chat"
-
msgid "Windows Pidgin Options"
msgstr "Opciones de Pidgwin en Windows"
@@ -13997,6 +14291,197 @@ msgstr "Enviar y recibir entradas XMPP en crudo."
msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr "Este complemento es útil para depurar clientes o servidores XMPP."
+#~ msgid "Invite message"
+#~ msgstr "Mensaje de invitacio"
+
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Introduzca el nombre de usuario al que desea invitar,\\n\n"
+#~ "junto con un mensaje de invitación opcional."
+
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "No se pudo obtener el libro de direcciones de MSN"
+
+#~ msgid ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+#~ msgstr ""
+#~ "Quizá sea desconectado en breve. Puede querer usar TOC hasta que esto se "
+#~ "resuelva. Compruebe %s para novedades."
+
+#~ msgid "Looking up %s"
+#~ msgstr "Buscando %s"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "Falló la conexión a %s"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Conectado: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "No se pudo escribir el archivo %s."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "No se pudo leer el archivo %s."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "Mensaje demasiado largo, los últimos %s bytes fueron borrados."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s no está conectado ahora."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "No se permiten advertencias de %s."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr ""
+#~ "El mensaje ha sido descartado, usted esta excediendo el límite de "
+#~ "velocidad del servidor."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "No está disponible el chat en %s."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "Esta enviando mensajes demasiado rápido a %s."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "Usted perdió un MI de %s porque era demasiado largo."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr "Usted perdió un MI de %s porque fue mandado demasiado rápido."
+
+#~ msgid "Failure."
+#~ msgstr "Fallo."
+
+#~ msgid "Too many matches."
+#~ msgstr "Demasiados resultados."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "Necesito más calificadores."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "Servicio de directorio temporalmente no disponible."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "Búsqueda de direcciones de correo electrónico restringida."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "Palabra clave ignorada."
+
+#~ msgid "No keywords."
+#~ msgstr "Sin palabras clave."
+
+#~ msgid "User has no directory information."
+#~ msgstr "El usuario no tiene información en el directorio."
+
+#~ msgid "Country not supported."
+#~ msgstr "País no soportado."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Fallo desconocido: %s."
+
+#~ msgid "Incorrect username or password."
+#~ msgstr "Nombre de usuario o contraseña incorrecta."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "Servicio temporalmente no disponible."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "Su nivel de advertencias es demasiado alto para conectarse."
+
+#~ 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 ""
+#~ "Se ha conectado y desconectado demasiadas veces. Espere diez minutos e "
+#~ "inténtelo de nuevo. Si sigue intentándolo, necesitará esperar incluso más "
+#~ "tiempo."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "Ha ocurrido un error desconocido al conectarse: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "Un error desconocido, %d, ha ocurrido. Info: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "Nombre de grupo inválido"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Conexión cerrada"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "Esperando respuesta..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "TOC ha terminado su pausa. Ya puede volver a mandar mensajes."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "La contraseña se ha cambiado con éxito"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Obtener información del directorio"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Guardar información del directorio"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "¡No se pudo abrir %s para escritura!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr ""
+#~ "Se produjo un fallo en la transferencia del archivo; posiblemente fue "
+#~ "cancelado por el otro extremo."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "No se pudo conectar para realizar la transferencia."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr ""
+#~ "No se pudo escribir la cabecera de archivo. El archivo no será "
+#~ "transferido."
+
+#~ msgid "Save As..."
+#~ msgstr "Guardar como..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s solicita %s para aceptar %d archivo: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s solicita %s para aceptar %d archivos: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s le solicita que le mande un archivo"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "Complemento de protocolo TOC"
+
+#~ msgid "%s Options"
+#~ msgstr "Opciones de %s"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Opciones del proxy"
+
+#~ msgid "By log size"
+#~ msgstr "Por tamaño de registro"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_Abrir enlace en navegador"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "Servidor ST_UN:"
+
+#~ msgid "Smiley _Image"
+#~ msgstr "Imagen de emoticono"
+
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "Ata_jos de emoticonos"
+
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "_Destello de ventana cuando se reciben mensajes de chat"
+
#~ msgid "Connection to server lost (no data received within %d second)"
#~ msgid_plural ""
#~ "Connection to server lost (no data received within %d seconds)"
@@ -14739,9 +15224,9 @@ msgstr "Este complemento es útil para depurar clientes o servidores XMPP."
#~ "automática global en el diálogo de las opciones del complemento. Si "
#~ "quiere establecer mensajes de respuesta particulares para un amigo sólo "
#~ "tiene que pulsar con el botón derecho sobre el amigo en la ventana con la "
-#~ "lista de amigos. Vaya a la pestaña «Avanzadas» en el diálogo de edición "
-#~ "de cuentas si quiere configurar un mensaje de respuesta automática para "
-#~ "sólo alguna de sus cuentas."
+#~ "lista de amigos. Vaya a la pestaña «Avanzadas» en el diálogo de edición de "
+#~ "cuentas si quiere configurar un mensaje de respuesta automática para sólo "
+#~ "alguna de sus cuentas."
#~ msgid "Set autoreply message for %s"
#~ msgstr "Fijar el mensaje de respuesta automática para %s"
@@ -14908,12 +15393,12 @@ msgstr "Este complemento es útil para depurar clientes o servidores XMPP."
#~ msgid ""
#~ "When this happens, TOC ignores any messages sent to it, and may kick you "
-#~ "off if you send a message. Pidgin will prevent anything from going through. "
-#~ "This is only temporary, please be patient."
+#~ "off if you send a message. Pidgin will prevent anything from going "
+#~ "through. This is only temporary, please be patient."
#~ msgstr ""
#~ "Cuando esto ocurre, TOC ignora todos los mensajes que se le envían y "
-#~ "puede expulsarle si envía mensajes. Pidgin evitará que le llegue cualquier "
-#~ "cosa. Esto es sólo temporal, por favor, sea paciente."
+#~ "puede expulsarle si envía mensajes. Pidgin evitará que le llegue "
+#~ "cualquier cosa. Esto es sólo temporal, por favor, sea paciente."
#~ msgid "Pidgin - Save As..."
#~ msgstr "Pidgin - Guardar como..."
@@ -14921,8 +15406,8 @@ msgstr "Este complemento es útil para depurar clientes o servidores XMPP."
#~ msgid ""
#~ "The normal authentication method has failed. This means either your "
#~ "password is incorrect, or Yahoo!'s authentication scheme has changed. "
-#~ "Pidgin will now attempt to log in using Web Messenger authentication, which "
-#~ "will result in reduced functionality and features."
+#~ "Pidgin will now attempt to log in using Web Messenger authentication, "
+#~ "which will result in reduced functionality and features."
#~ msgstr ""
#~ "El método de autenticación habitual falló. Esto significa o bien que que "
#~ "su contraseña no es correcta o bien que el sistema de autenticación de "
@@ -14940,9 +15425,6 @@ msgstr "Este complemento es útil para depurar clientes o servidores XMPP."
#~ "\n"
#~ "Inactivo: %s"
-#~ msgid "Nickname: %s\n"
-#~ msgstr "Apodo: %s\n"
-
#~ msgid ""
#~ "\n"
#~ "<b>Nickname:</b> %s"
@@ -15224,7 +15706,8 @@ msgstr "Este complemento es útil para depurar clientes o servidores XMPP."
#~ msgstr "Ajuste de la función"
#~ msgid "Displays an icon for Pidgin in the system tray."
-#~ msgstr "Muestra un icono para Pidgin en el área de notificación del sistema."
+#~ msgstr ""
+#~ "Muestra un icono para Pidgin en el área de notificación del sistema."
#~ msgid ""
#~ "Displays a system tray icon (in GNOME, KDE, or Windows for example) to "
@@ -15325,9 +15808,6 @@ msgstr "Este complemento es útil para depurar clientes o servidores XMPP."
#~ msgid "Calling %s"
#~ msgstr "Llamando %s"
-#~ msgid "End Call"
-#~ msgstr "Terminar llamada"
-
#~ msgid "Receiving call from %s"
#~ msgstr "Recibiendo llamada de %s"
@@ -15769,9 +16249,6 @@ msgstr "Este complemento es útil para depurar clientes o servidores XMPP."
#~ msgid "_Idle"
#~ msgstr "_Inactivo"
-#~ msgid "Retur_n from idle"
-#~ msgstr "Dejar de estar i_nactivo"
-
# Examinar puede ser también válido, comprobar, jfs.
#~ msgid "Bro_wse..."
#~ msgstr "_Navegar..."
@@ -15836,9 +16313,6 @@ msgstr "Este complemento es útil para depurar clientes o servidores XMPP."
#~ msgstr[0] "(%d mensaje)"
#~ msgstr[1] "(%d mensajes)"
-#~ msgid "(1 message)"
-#~ msgstr "(1 mensaje)"
-
#~ msgid "Default auto-away"
#~ msgstr "Auto-ausencia por omisión"
@@ -15906,8 +16380,8 @@ msgstr "Este complemento es útil para depurar clientes o servidores XMPP."
#~ "Gives Pidgin the ability to be remote-controlled through third-party "
#~ "applications or through the Pidgin-remote tool."
#~ msgstr ""
-#~ "Permite que Pidgin sea controlado de forma remota a través de aplicaciones "
-#~ "de terceros o de la herramienta de control remoto de Pidgin."
+#~ "Permite que Pidgin sea controlado de forma remota a través de "
+#~ "aplicaciones de terceros o de la herramienta de control remoto de Pidgin."
#~ msgid "Docked _Buddy List is always on top"
#~ msgstr "La lista de _amigos apilada está siempre encima del resto"
@@ -16010,8 +16484,7 @@ msgstr "Este complemento es útil para depurar clientes o servidores XMPP."
#~ "Enviar un MI a un nombre de usuario:\n"
#~ "\tPidgin-remote uri 'aim:goim?screenname=Pingüino&message=hola+mundo'\n"
#~ "En este caso, «Pingüino» es el nombre de usuario al que se le quiere\n"
-#~ "enviar un MI, y «hola mundo» es el mensaje a enviar. Se debe utilizar "
-#~ "'+'\n"
+#~ "enviar un MI, y «hola mundo» es el mensaje a enviar. Se debe utilizar '+'\n"
#~ "en lugar de los espacios en blanco.\n"
#~ "Por favor, tenga en cuenta el entrecomillado utilizado arriba. Si "
#~ "ejecuta\n"
@@ -16361,8 +16834,8 @@ msgstr "Este complemento es útil para depurar clientes o servidores XMPP."
#~ msgstr "No se pudieron cargar las preferencias"
#~ msgid ""
-#~ "Pidgin was not able to load your preferences because they are stored in an "
-#~ "old format that is no longer used. Please reconfigure your settings "
+#~ "Pidgin 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 ""
#~ "Pidgin no pudo cargar sus preferencias porque están almacenadas en un "
@@ -16451,8 +16924,8 @@ msgstr "Este complemento es útil para depurar clientes o servidores XMPP."
#~ "Pidgin was unable to complete your request due to a problem communicating "
#~ "with the Gadu-Gadu HTTP server. Please try again later."
#~ msgstr ""
-#~ "Pidgin no pudo completar su petición debido a problemas al comunicarse con "
-#~ "el servidor HTTP de Gadu-Gadu. Vuelva a intentarlo más tarde."
+#~ "Pidgin no pudo completar su petición debido a problemas al comunicarse "
+#~ "con el servidor HTTP de Gadu-Gadu. Vuelva a intentarlo más tarde."
#~ msgid "Unable to import Gadu-Gadu buddy list"
#~ msgstr "No se pudo importar la lista de amigos de Gadu-Gadu"
@@ -16468,8 +16941,8 @@ msgstr "Este complemento es útil para depurar clientes o servidores XMPP."
#~ "Pidgin was unable to connect to the buddy list server. Please try again "
#~ "later."
#~ msgstr ""
-#~ "Pidgin no pudo conectarse con el servidor de listas de amigos. Por favor, "
-#~ "inténtelo más tarde."
+#~ "Pidgin no pudo conectarse con el servidor de listas de amigos. Por "
+#~ "favor, inténtelo más tarde."
#~ msgid "Unable to delete Gadu-Gadu buddy list"
#~ msgstr "No se pudo borrar la lista de amigos Gadu-Gadu"
@@ -16478,15 +16951,15 @@ msgstr "Este complemento es útil para depurar clientes o servidores XMPP."
#~ msgstr "No se pudo acceder al directorio"
#~ msgid ""
-#~ "Pidgin was unable to search the Directory because it was unable to connect "
-#~ "to the directory server. Please try again later."
+#~ "Pidgin was unable to search the Directory because it was unable to "
+#~ "connect to the directory server. Please try again later."
#~ msgstr ""
#~ "Pidgin no pudo buscar en el directorio porque no pudo conectarse con el "
#~ "servidor de directorio. Por favor, inténtelo más tarde."
#~ msgid ""
-#~ "Pidgin was unable to change your password due to an error connecting to the "
-#~ "Gadu-Gadu server. Please try again later."
+#~ "Pidgin was unable to change your password due to an error connecting to "
+#~ "the Gadu-Gadu server. Please try again later."
#~ msgstr ""
#~ "Pidgin no pudo cambiar su contraseña porque no pudo conectarse con el "
#~ "servidor Gadu-Gadu. Por favor, inténtelo más tarde."
@@ -16495,8 +16968,8 @@ msgstr "Este complemento es útil para depurar clientes o servidores XMPP."
#~ msgstr "No se pudo acceder al perfil del usuario."
#~ msgid ""
-#~ "Pidgin was unable to access this user's profile due to an error connecting "
-#~ "to the directory server. Please try again later."
+#~ "Pidgin was unable to access this user's profile due to an error "
+#~ "connecting to the directory server. Please try again later."
#~ msgstr ""
#~ "Pidgin no pudo acceder al perfil de este usuario debido a un error al "
#~ "intentar conectarse al servidor de directorio. Por favor, inténtelo de "
@@ -16643,8 +17116,8 @@ msgstr "Este complemento es útil para depurar clientes o servidores XMPP."
#~ "Unable to guess the image type based on the file extension supplied. "
#~ "Defaulting to PNG."
#~ msgstr ""
-#~ "Pidgin no ha podido deducir el tipo de imagen a partir de la extensión del "
-#~ "archivo. Tomando PNG por omisión."
+#~ "Pidgin no ha podido deducir el tipo de imagen a partir de la extensión "
+#~ "del archivo. Tomando PNG por omisión."
#~ msgid "SILC Public Key"
#~ msgstr "Clave pública SILC"
@@ -16676,11 +17149,11 @@ msgstr "Este complemento es útil para depurar clientes o servidores XMPP."
#~ msgstr "No se ha podido enviar el mensaje por motivos desconocidos."
#~ msgid ""
-#~ "Pidgin cannot send files over Yahoo! that are bigger than %d megabytes (%d "
-#~ "bytes)."
+#~ "Pidgin cannot send files over Yahoo! that are bigger than %d megabytes (%"
+#~ "d bytes)."
#~ msgstr ""
-#~ "Pidgin no puede enviar archivos más grandes que de %d megabytes (%d bytes) "
-#~ "a través de Yahoo!"
+#~ "Pidgin no puede enviar archivos más grandes que de %d megabytes (%d "
+#~ "bytes) a través de Yahoo!"
#~ msgid ""
#~ "(There was an error converting this message. Check the 'Encoding' option "
@@ -17535,8 +18008,8 @@ msgstr "Este complemento es útil para depurar clientes o servidores XMPP."
#~ "Pidgin is converting your old buddy lists to a new format, which will now "
#~ "be located at %s"
#~ msgstr ""
-#~ "Pidgin está convirtiendo la lista antigua de amigos a un nuevo formato, que "
-#~ "residirá en %s"
+#~ "Pidgin está convirtiendo la lista antigua de amigos a un nuevo formato, "
+#~ "que residirá en %s"
#~ msgid "Converting Buddy List"
#~ msgstr "Convirtiendo lista de amigos"
@@ -17612,8 +18085,8 @@ msgstr "Este complemento es útil para depurar clientes o servidores XMPP."
#~ msgstr "Pidgin no pudo enviar un mensaje MSN"
#~ msgid ""
-#~ "Pidgin encountered an error communicating with the MSN switchboard server. "
-#~ "Please try again later."
+#~ "Pidgin encountered an error communicating with the MSN switchboard "
+#~ "server. Please try again later."
#~ msgstr ""
#~ "Pidgin encontró un error mientras se comunicaba con el servidor MSN de "
#~ "'switchboard'. Por favor, vuelva a intentar más tarde."
diff --git a/po/et.po b/po/et.po
index addb9a11ad..c41ebbb05d 100644
--- a/po/et.po
+++ b/po/et.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pidgin 2.5.2\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
+"POT-Creation-Date: 2009-04-30 10:37-0400\n"
"PO-Revision-Date: 2008-09-30 08:10+0300\n"
"Last-Translator: Ivar Smolin <okul@linux.ee>\n"
"Language-Team: Estonian <et@li.org>\n"
@@ -26,13 +26,13 @@ msgstr "Finch"
msgid "%s. Try `%s -h' for more information.\n"
msgstr "%s. Täpsemate andmete saamiseks kasuta `%s -h'.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -608,20 +608,6 @@ msgstr ""
msgid "Send To"
msgstr "Kellele saata"
-msgid "Invite message"
-msgstr "Kutse sõnum"
-
-msgid "Invite"
-msgstr "Kutsu"
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Palun sisesta selle kasutaja nimi, keda sa soovid\n"
-"jututuppa kutsuda. Kui sisestad ka sõnumi, siis\n"
-"saadetakse see sõbrale koos kutsumisteatega."
-
msgid "Conversation"
msgstr "Vestlus"
@@ -873,6 +859,41 @@ msgstr "Kõik vestlused"
msgid "System Log"
msgstr "Süsteemne logi"
+#, fuzzy
+msgid "Calling ... "
+msgstr "Arvutamine..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "Nõustu"
+
+msgid "Reject"
+msgstr "Lükka tagasi"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "Sa lahkusid sellest vestlusest."
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "E-sõnumid"
@@ -907,6 +928,9 @@ msgstr "Jätka"
msgid "IM"
msgstr "Välksõnum"
+msgid "Invite"
+msgstr "Kutsu"
+
msgid "(none)"
msgstr "(puudub)"
@@ -1108,7 +1132,6 @@ msgstr "%s eemaldus. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s saatis sulle sõnumi. (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "Tundmatu teavitussündmus. Palun anna sellest teada!"
@@ -1154,7 +1177,6 @@ msgstr "Mitme minuti möödudes olekut muudetakse"
msgid "Change status to"
msgstr "Uueks olekuks saab"
-#. Conversations
msgid "Conversations"
msgstr "Vestlused"
@@ -1475,7 +1497,6 @@ msgstr ""
"Vestluse avamisel lisab see plugin avatava vestluse aknasse viimase vestluse "
"logi."
-#, c-format
msgid "Online"
msgstr "Ühendatud"
@@ -1519,6 +1540,28 @@ msgstr "GntViimaneLogi"
msgid "Lastlog plugin."
msgstr "Viimase logi plugin."
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "Loo URL"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "kontod"
@@ -1619,13 +1662,6 @@ msgstr "Kas nõustuda subjekti \"%s\" sertifikaadiga?"
msgid "SSL Certificate Verification"
msgstr "SSL-sertifikaadi verifitseerimine"
-#. Number of actions
-msgid "Accept"
-msgstr "Nõustu"
-
-msgid "Reject"
-msgstr "Lükka tagasi"
-
msgid "_View Certificate..."
msgstr "_Vaata sertifikaati..."
@@ -1768,6 +1804,18 @@ msgstr "%s väljus toast."
msgid "%s left the room (%s)."
msgstr "%s väljus toast (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Konverentsile kutsumine"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Palun sisesta selle kasutaja nimi, keda sa soovid jututuppa kutsuda. Kui "
+"sisestad ka sõnumi, siis saadetakse see sõbrale koos kutsumisteatega."
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "Tõrge ühenduse hankimisel: %s"
@@ -1902,7 +1950,6 @@ msgstr "Faili %s ülekandmise alustamine kasutajalt %s"
msgid "Transfer of file %s complete"
msgstr "Fail %s täielikult üle kantud"
-#, c-format
msgid "File transfer complete"
msgstr "Fail on täielikult üle kantud"
@@ -1910,7 +1957,6 @@ msgstr "Fail on täielikult üle kantud"
msgid "You canceled the transfer of %s"
msgstr "Sa katkestasid faili %s ülekandmise"
-#, c-format
msgid "File transfer cancelled"
msgstr "Faili ülekandmine katkestatud"
@@ -2113,7 +2159,6 @@ msgstr "(%s) %s <AUTOMAATVASTUS>: %s\n"
msgid "You are using %s, but this plugin requires %s."
msgstr "Sul on kasutusel %s kuid selle plugina jaoks on vajalik %s."
-#, c-format
msgid "This plugin has not defined an ID."
msgstr "See plugin pole ID-d defineerinud."
@@ -2258,7 +2303,7 @@ msgstr "Šifritest"
#. * summary
#. * description
msgid "Tests the ciphers that ship with libpurple."
-msgstr "Libpurple'ga kaasasolevate šifrite testimine."
+msgstr "libpurple'ga kaasasolevate šifrite testimine."
#. *< type
#. *< ui_requirement
@@ -2602,6 +2647,32 @@ msgstr "Võrguvabade sõnumite salvestamine märguannetena"
msgid "Do not ask. Always save in pounce."
msgstr "Küsimusi ei esitata, alati salvestatakse märguannetena."
+#, fuzzy
+msgid "One Time Password"
+msgstr "Sisesta parool"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2809,7 +2880,6 @@ msgid ""
msgstr ""
"Kohaliku mDNS-serveriga pole võimalik ühendust saada. Kas see üldse töötab?"
-#. Creating the options for the protocol
msgid "First name"
msgstr "Eesnimi"
@@ -2841,6 +2911,11 @@ msgstr "Bonjour protokolli plugin"
msgid "Purple Person"
msgstr ""
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "Paikkond"
+
msgid "Bonjour"
msgstr "Bonjour"
@@ -2997,13 +3072,13 @@ msgstr "Sõbra jaoks vestluse valimine: %s"
msgid "Add to chat..."
msgstr "Lisa vestlusesse..."
+#. Global
msgid "Available"
msgstr "Saadaval"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "Eemal"
@@ -3344,6 +3419,17 @@ msgstr ""
"Sinu valitud hüüdnimi lükati serveri poolt tagasi, arvatavasti sisaldab nimi "
"lubamatuid märke."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "Selline vestluse nimi on juba kasutusel"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Hüüdnimi"
+
msgid "Cannot change nick"
msgstr "Hüüdmine pole võimalik muuta"
@@ -3595,6 +3681,41 @@ msgstr ""
msgid "SASL error"
msgstr "SASL-i viga"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "Põhjendust pole määratud."
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Toetamata versioon"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"Selle serveriga pole võimalik ühendust luua:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"Selle serveriga pole võimalik ühendust luua:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "Ühendust pole võimalik lähtestada"
+
+msgid "Unable to create socket"
+msgstr "Soklit pole võimalik luua"
+
+msgid "Write error"
+msgstr "Kirjutamise viga"
+
msgid "Full Name"
msgstr "Täisnimi"
@@ -3661,6 +3782,10 @@ msgstr "Klient"
msgid "Operating System"
msgstr "Operatsioonisüsteem"
+#, fuzzy
+msgid "Local Time"
+msgstr "Kohalik fail:"
+
msgid "Last Activity"
msgstr "Viimati aktiivne"
@@ -3866,7 +3991,6 @@ msgstr "Lobisev"
msgid "Extended Away"
msgstr "Kaua eemal"
-#, c-format
msgid "Do Not Disturb"
msgstr "Mitte segada"
@@ -3988,9 +4112,6 @@ msgstr "Otsi jututube"
msgid "You require encryption, but it is not available on this server."
msgstr "Sa nõuad krüptimist aga selles serveris pole see toetatud."
-msgid "Write error"
-msgstr "Kirjutamise viga"
-
msgid "Ping timeout"
msgstr "Pingimine ületas ajapiirangu"
@@ -3999,14 +4120,9 @@ msgstr "Lugemise viga"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"Selle serveriga pole võimalik ühendust luua:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "Soklit pole võimalik luua"
msgid "Invalid XMPP ID"
msgstr "Vigane XMPP ID"
@@ -4014,6 +4130,10 @@ msgstr "Vigane XMPP ID"
msgid "Invalid XMPP ID. Domain must be set."
msgstr "Vigane XMPP ID. Domeen peab olema määratud."
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Tõrge serveriga ühendumisel."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "Kasutaja %s@%s registreerimine õnnestus"
@@ -4098,9 +4218,18 @@ msgstr "Autentimine"
msgid "Re-initializing Stream"
msgstr "Andmevaa taaslähtestamine"
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr "Autoriseerimata"
+msgid "Mood"
+msgstr "Meeleolu"
+
+msgid "Now Listening"
+msgstr "Hetkel kuulab"
+
msgid "Both"
msgstr "Mõlemad"
@@ -4122,12 +4251,6 @@ msgstr "Puudub"
msgid "Subscription"
msgstr "Tellimus"
-msgid "Mood"
-msgstr "Meeleolu"
-
-msgid "Now Listening"
-msgstr "Hetkel kuulab"
-
msgid "Mood Text"
msgstr "Tujutekst"
@@ -4366,15 +4489,21 @@ msgid "Unable to ping user %s"
msgstr "Kasutajat %s pole võimalik pingida"
#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr ""
#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+msgid "Unable to buzz, because %s might be offline."
msgstr ""
#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
+msgstr ""
+
+#, c-format
+msgid "Buzzing %s..."
msgstr ""
#. Yahoo only supports one attention command: the 'buzz'.
@@ -4386,10 +4515,35 @@ msgstr ""
msgid "%s has buzzed you!"
msgstr ""
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "Kasutajale %s pole võimalik faili saata, JID on vigane."
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "Kasutajale %s pole võimalik faili saata, kasutaja pole võrku ühendatud"
+
#, c-format
-msgid "Buzzing %s..."
+msgid "Unable to initiate media with %s: not subscribed to user presence"
msgstr ""
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "Tõrge registreerimisel"
+
+#, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr ""
+
+msgid "Select a Resource"
+msgstr "Vahendi valimine"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "Algata _jututuba"
+
msgid "config: Configure a chat room."
msgstr "config: Jututoa seadistamine."
@@ -4542,6 +4696,21 @@ msgstr "Viga vestlusega %s ühinemisel"
msgid "Error in chat %s"
msgstr "Viga vestluses %s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "Faili avamisel tekkis viga."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "Tõrge faili ülekandmisel"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Tõrge faili '%s' avamisel: %s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4567,9 +4736,6 @@ msgstr ""
msgid "Please select the resource of %s to which you would like to send a file"
msgstr ""
-msgid "Select a Resource"
-msgstr "Vahendi valimine"
-
msgid "Edit User Mood"
msgstr "Kasutaja meeleolu määramine"
@@ -4604,8 +4770,19 @@ msgstr "Tegevused"
msgid "Select an action"
msgstr "Tegevuse valimine"
-msgid "Unable to retrieve MSN Address Book"
-msgstr "MSN-i aadressiraamatut pole võimalik vastu võtta"
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr "\"%s\" pole võimalik lisada."
+
+msgid "Buddy Add error"
+msgstr ""
+
+#, fuzzy
+msgid "The username specified does not exist."
+msgstr "Määratud kasutajanimi on vigane."
#, c-format
msgid "Buddy list synchronization issue in %s (%s)"
@@ -4835,7 +5012,6 @@ msgstr ""
msgid "Passport account not yet verified"
msgstr "Passporti kontot pole veel üle vaadatud"
-#, c-format
msgid "Passport account suspended"
msgstr ""
@@ -4926,6 +5102,13 @@ msgstr "Mobiilisõnumi saatmine."
msgid "Page"
msgstr ""
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "Tööl"
+
msgid "Has you"
msgstr "Sina tema loendis"
@@ -4962,6 +5145,14 @@ msgstr "Esitaja"
msgid "Album"
msgstr "Album"
+#, fuzzy
+msgid "Game Title"
+msgstr "Loo pealkiri"
+
+#, fuzzy
+msgid "Office Title"
+msgstr "Loo pealkiri"
+
msgid "Set Friendly Name..."
msgstr "Määra sõbralik nimi..."
@@ -5150,8 +5341,9 @@ msgstr ""
"Kasutajaprofiili kohta pole võimalik mingeid andmeid leida. Kõige "
"tõenäolisemalt pole seda kasutajat olemas."
-msgid "Profile URL"
-msgstr "Profiili URL"
+#, fuzzy
+msgid "View web profile"
+msgstr "Peida, kui pole võrku ühendatud"
#. *< type
#. *< ui_requirement
@@ -5391,19 +5583,15 @@ msgstr "Lisa aadressiraamatusse"
msgid "Do you want to delete this buddy from your address book as well?"
msgstr ""
-#. only notify the user about problems adding to the friends list
-#. * maybe we should do something else for other lists, but it probably
-#. * won't cause too many problems if we just ignore it
-#, c-format
-msgid "Unable to add \"%s\"."
-msgstr "\"%s\" pole võimalik lisada."
-
msgid "The username specified is invalid."
msgstr "Määratud kasutajanimi on vigane."
msgid "This Hotmail account may not be active."
msgstr "See Hotmaili konto võib mitte aktiivne olla."
+msgid "Profile URL"
+msgstr "Profiili URL"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5417,18 +5605,12 @@ msgstr "See Hotmaili konto võib mitte aktiivne olla."
msgid "MSN Protocol Plugin"
msgstr "MSN protokolli plugin"
-msgid "Missing Cipher"
-msgstr "Šiffer on puudu"
-
-msgid "The RC4 cipher could not be found"
-msgstr "RC4 šifrit pole võimalik leida"
+#, c-format
+msgid "No such user: %s"
+msgstr "Sellist kasutajat pole: %s"
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
-msgstr ""
-"Uuenda oma libpurple teeki nii, et see toetakse RC4u šifrit (>= 2.0.1). "
-"MySpaceIM jäetakse laadimata."
+msgid "User lookup"
+msgstr "Kasutaja otsimine"
msgid "Reading challenge"
msgstr ""
@@ -5439,11 +5621,21 @@ msgstr ""
msgid "Logging in"
msgstr "Sisselogimine"
-#, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] ""
-msgstr[1] ""
+msgid "MySpaceIM - No Username Set"
+msgstr "MySpaceIM - Kasutajanimi on määramata"
+
+msgid "You appear to have no MySpace username."
+msgstr "Sul ei paista MySpace kasutajanime olevat."
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr ""
+"Kas sa soovid praegu ühe määrata? (Märkus: SEDA POLE VÕIMALIK HILJEM MUUTA!)"
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr ""
+"Ühendus serveriga katkes\n"
+"%s"
#. Can't write _()'d strings in array initializers. Workaround.
msgid "New mail messages"
@@ -5464,15 +5656,25 @@ msgstr "Uued pildikommentaarid"
msgid "MySpace"
msgstr "MySpace"
-msgid "MySpaceIM - No Username Set"
-msgstr "MySpaceIM - Kasutajanimi on määramata"
+msgid "IM Friends"
+msgstr "Välksõnumi-sõbrad"
-msgid "You appear to have no MySpace username."
-msgstr "Sul ei paista MySpace kasutajanime olevat."
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+"Serverist lisati või uuendati %d sõber (kaasa arvatud sõbrad, kes on juba "
+"serveripoolses nimekirjas)"
+msgstr[1] ""
+"Serverist lisati või uuendati %d sõpra (kaasa arvatud sõbrad, kes on juba "
+"serveripoolses nimekirjas)"
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
-msgstr ""
-"Kas sa soovid praegu ühe määrata? (Märkus: SEDA POLE VÕIMALIK HILJEM MUUTA!)"
+msgid "Add contacts from server"
+msgstr "Serverist kontaktide lisamine"
#. The session is now set up, ready to be connected. This emits the
#. * signedOn signal, so clients can now do anything with msimprpl, and
@@ -5495,6 +5697,19 @@ msgstr ""
msgid "MySpaceIM Error"
msgstr "MySpaceIM viga"
+msgid "Invalid input condition"
+msgstr ""
+
+msgid "Read buffer full (2)"
+msgstr "Lugemispuhver on täis (2)"
+
+msgid "Unparseable message"
+msgstr "Analüüsimatu sõnum"
+
+#, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr "Hostiga pole võimalik ühenduda: %s (%d)"
+
msgid "Failed to add buddy"
msgstr "Tõrge sõbra lisamisel"
@@ -5504,13 +5719,6 @@ msgstr "Tõrge 'addbuddy' käsu täitmisel."
msgid "persist command failed"
msgstr ""
-#, c-format
-msgid "No such user: %s"
-msgstr "Sellist kasutajat pole: %s"
-
-msgid "User lookup"
-msgstr "Kasutaja otsimine"
-
msgid "Failed to remove buddy"
msgstr "Tõrge sõbra eemaldamisel"
@@ -5520,38 +5728,18 @@ msgstr "Tõrge 'delbuddy' käsu täitmisel."
msgid "blocklist command failed"
msgstr ""
-msgid "Invalid input condition"
-msgstr ""
-
-msgid "Read buffer full (2)"
-msgstr "Lugemispuhver on täis (2)"
-
-msgid "Unparseable message"
-msgstr "Analüüsimatu sõnum"
-
-#, c-format
-msgid "Couldn't connect to host: %s (%d)"
-msgstr "Hostiga pole võimalik ühenduda: %s (%d)"
+msgid "Missing Cipher"
+msgstr "Šiffer on puudu"
-msgid "IM Friends"
-msgstr "Välksõnumi-sõbrad"
+msgid "The RC4 cipher could not be found"
+msgstr "RC4 šifrit pole võimalik leida"
-#, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-"Serverist lisati või uuendati %d sõber (kaasa arvatud sõbrad, kes on juba "
-"serveripoolses nimekirjas)"
-msgstr[1] ""
-"Serverist lisati või uuendati %d sõpra (kaasa arvatud sõbrad, kes on juba "
-"serveripoolses nimekirjas)"
-
-msgid "Add contacts from server"
-msgstr "Serverist kontaktide lisamine"
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
+"Uuenda oma libpurple teeki nii, et see toetakse RC4u šifrit (>= 2.0.1). "
+"MySpaceIM jäetakse laadimata."
msgid "Add friends from MySpace.com"
msgstr "Sõprade lisamine MySpace.com'ist"
@@ -5593,9 +5781,6 @@ msgstr "Aluskirjatüübi suurus (punktides)"
msgid "User"
msgstr "Kasutaja"
-msgid "Profile"
-msgstr "Profiil"
-
msgid "Headline"
msgstr ""
@@ -5608,17 +5793,6 @@ msgstr "Sõpru kokku"
msgid "Client Version"
msgstr "Kliendi versioon"
-#. Protocol won't log in now without a username set.. Disconnect
-msgid "No username set"
-msgstr "Kasutajanimi on määramata"
-
-msgid "MySpaceIM - Please Set a Username"
-msgstr "MySpaceIM - Palun määra kasutajanimi"
-
-msgid "Please enter a username to check its availability:"
-msgstr ""
-"Palun sisesta kasutajanimi, et kontrollida selle kasutamise võimalikkust:"
-
msgid "MySpaceIM - Username Available"
msgstr "MySpaceIM - Kasutajanimi on saadaval"
@@ -5628,12 +5802,23 @@ msgstr "Kasutajanimi on vaba. Kas sa soovid seda pruukida?"
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr "KUI SEE ON JUBA MÄÄRATUD, POLE SEDA ENAM VÕIMALIK MUUTA!"
+msgid "MySpaceIM - Please Set a Username"
+msgstr "MySpaceIM - Palun määra kasutajanimi"
+
msgid "This username is unavailable."
msgstr "See kasutajanimi pole saadaval."
msgid "Please try another username:"
msgstr "Palun proovi mõnda muud kasutajanime:"
+#. Protocol won't log in now without a username set.. Disconnect
+msgid "No username set"
+msgstr "Kasutajanimi on määramata"
+
+msgid "Please enter a username to check its availability:"
+msgstr ""
+"Palun sisesta kasutajanimi, et kontrollida selle kasutamise võimalikkust:"
+
#. TODO: icons for each zap
#. Lots of comments for translators:
#. Zap means "to strike suddenly and forcefully as if with a
@@ -6019,7 +6204,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr "Viga. SSL-i tugi pole paigaldatud."
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr "See konverents on suletud. Rohkem sõnumeid pole võimalik saata."
@@ -6282,23 +6466,18 @@ msgstr "Kaamera"
msgid "Screen Sharing"
msgstr ""
-#, c-format
msgid "Free For Chat"
msgstr "Vestluseks vaba"
-#, c-format
msgid "Not Available"
msgstr "Pole saadaval"
-#, c-format
msgid "Occupied"
msgstr "Hõivatud"
-#, c-format
msgid "Web Aware"
msgstr ""
-#, c-format
msgid "Invisible"
msgstr "Nähtamatu"
@@ -6344,7 +6523,7 @@ msgid ""
"only letters, numbers and spaces, or contain only numbers."
msgstr ""
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr "Vigane kasutajanimi."
@@ -6360,7 +6539,7 @@ msgstr ""
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "AOL'i välksõnumiserver pole ajutiselt saadaval."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6398,9 +6577,7 @@ msgid "_OK"
msgstr "_Olgu"
#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
+msgid "You may be disconnected shortly. If so, check %s for updates."
msgstr ""
msgid "Unable to get a valid AIM login hash."
@@ -6528,7 +6705,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] ""
msgstr[1] ""
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "Sõnumit pole võimalik saata: %s"
@@ -6550,6 +6727,9 @@ msgstr "Võrgus alates"
msgid "Member Since"
msgstr "Liige alates"
+msgid "Profile"
+msgstr "Profiil"
+
msgid "Your AIM connection may be lost."
msgstr "Sinu AIM-ühendus võib olla katkenud."
@@ -6817,6 +6997,7 @@ msgstr "Ü_hendu"
msgid "Get AIM Info"
msgstr "Hangi AIM-andmed"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "Redigeeri sõbrakommentaari"
@@ -6922,7 +7103,6 @@ msgstr ""
msgid "Attempting to connect to %s:%hu."
msgstr ""
-#, c-format
msgid "Attempting to connect via proxy server."
msgstr "Proovitakse ühenduda proksi serveri kaudu."
@@ -7015,7 +7195,7 @@ msgstr "Muu"
msgid "Visible"
msgstr "Nähtamatu"
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
#, fuzzy
@@ -7106,17 +7286,50 @@ msgstr "Viimane uuendus"
msgid "Could not change buddy information."
msgstr "Sõbra andmete muutmine."
-#, c-format
-msgid "%d needs Q&A"
+msgid "Mobile"
+msgstr "Mobiilne"
+
+msgid "Note"
+msgstr "Märkus"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "Sõbraikoon"
+
+msgid "Change his/her memo as you like"
msgstr ""
#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "Sõbra lisamine"
+msgid "_Modify"
+msgstr "Muuda"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "Muuda"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "Server on hõivatud"
-msgid "Input answer here"
+msgid "Your request was accepted."
msgstr ""
+msgid "Your request was rejected."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%u requires verification"
+msgstr "Ühinemine %s'ga on vaja kutset."
+
+#, fuzzy
+msgid "Add buddy question"
+msgstr "Kas lisada sõber sinu nimekirja?"
+
+#, fuzzy
+msgid "Enter answer here"
+msgstr "Kasutajate kataloogi sisestamine"
+
msgid "Send"
msgstr ""
@@ -7127,19 +7340,20 @@ msgstr "Vigane kasutajanimi."
msgid "Authorization denied message:"
msgstr "Volituste andmisest keeldumise sõnum:"
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr ""
-#, c-format
-msgid "%d needs authentication"
+#, fuzzy, c-format
+msgid "%u needs authorization"
msgstr "%d vajab autentimist"
#, fuzzy
msgid "Add buddy authorize"
msgstr "Kas lisada sõber sinu nimekirja?"
-msgid "Input request here"
-msgstr ""
+#, fuzzy
+msgid "Enter request here"
+msgstr "Jututoaserveri sisestamine"
msgid "Would you be my friend?"
msgstr "Kas sa võiks olla minu sõber?"
@@ -7160,7 +7374,7 @@ msgid "Failed sending authorize"
msgstr "Palun autoriseeri mind!"
#, fuzzy, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr "Tõrge sõbra eemaldamisel"
#, fuzzy, c-format
@@ -7204,6 +7418,10 @@ msgid "You can only search for permanent Qun\n"
msgstr ""
#, fuzzy
+msgid "(Invalid UTF-8 string)"
+msgstr "Vigased proksi sätted"
+
+#, fuzzy
msgid "Not member"
msgstr "Ma ei ole liige"
@@ -7243,15 +7461,18 @@ msgstr ""
msgid "Join QQ Qun"
msgstr ""
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
+msgid "Input request here"
msgstr ""
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "Telefoninumber"
+
msgid "Successfully joined Qun"
msgstr ""
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
msgid "QQ Qun Operation"
@@ -7261,7 +7482,7 @@ msgstr ""
msgid "Failed:"
msgstr "Nurjunud"
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
#, fuzzy
@@ -7273,11 +7494,11 @@ msgid ""
"this operation will eventually remove this Qun."
msgstr ""
-msgid "Sorry, you are not our style ..."
+msgid "Sorry, you are not our style"
msgstr ""
#, fuzzy
-msgid "Successfully changed Qun member"
+msgid "Successfully changed Qun members"
msgstr "Telefoninumber"
#, fuzzy
@@ -7288,35 +7509,35 @@ msgid "You have successfully created a Qun"
msgstr ""
#, fuzzy
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr "Kas sa soovid seda pilti määrata selle kasutaja sõbraikooniks?"
msgid "Setup"
msgstr ""
#, fuzzy, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr "Sinu päring grupiga %d liitumiseks lükati halduri %d poolt tagasi"
-#, c-format
-msgid "%d request to join Qun %d"
-msgstr ""
+#, fuzzy, c-format
+msgid "%u request to join Qun %u"
+msgstr "Sinu päring grupiga %d liitumiseks lükati halduri %d poolt tagasi"
#, fuzzy, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr "Tõrge sõbraga jututoas ühinemisel"
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr "Sõbra eemaldamine"
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "Sõbra eemaldamine"
#, c-format
msgid "Unknown-%d"
@@ -7429,6 +7650,13 @@ msgstr "<b>Viimane värskendus</b>: %s<br>\n"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<b>Saadetud</b>: %lu<br>\n"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<b>Viimane värskendus</b>: %s<br>\n"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7436,7 +7664,7 @@ msgid "<i>Feel free to join us!</i> :)"
msgstr ""
#, fuzzy, c-format
-msgid "About OpenQ r%s"
+msgid "About OpenQ %s"
msgstr "%s - lähem teave"
#, fuzzy
@@ -7456,6 +7684,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "%s - lähem teave"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Koduaadress"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7487,7 +7719,6 @@ msgstr ""
msgid "QQ2008"
msgstr ""
-#. #endif
msgid "Connect by TCP"
msgstr "Ühendumine TCP abil"
@@ -7499,6 +7730,9 @@ msgstr "Serveri port"
msgid "Show server news"
msgstr "Serveri aadress"
+msgid "Show chat room when msg comes"
+msgstr ""
+
#, fuzzy
msgid "Keep alive interval (seconds)"
msgstr "Ühenduse ülevalhoidmise sagedus(ed)"
@@ -7508,11 +7742,7 @@ msgid "Update interval (seconds)"
msgstr "Uuenduste sagedus(ed)"
#, fuzzy
-msgid "Can not decrypt server reply"
-msgstr "Sisselogimise vastust pole võimalik lahti krüptida"
-
-#, fuzzy
-msgid "Can not decrypt get server reply"
+msgid "Cannot decrypt server reply"
msgstr "Sisselogimise vastust pole võimalik lahti krüptida"
#, c-format
@@ -7535,20 +7765,23 @@ msgid "Activation required"
msgstr "Volituste andmine katkestati"
#, fuzzy, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr "Vigane tõendi vastusekood, 0x%02X"
-msgid "Keep alive error"
-msgstr "Ühenduse ülevalhoidmise viga"
+#, fuzzy
+msgid "Could not decrypt server reply"
+msgstr "Sisselogimise vastust pole võimalik lahti krüptida"
-msgid "Requesting captcha ..."
-msgstr ""
+#, fuzzy
+msgid "Requesting captcha"
+msgstr "Päringudialoog"
-msgid "Checking code of captcha ..."
+msgid "Checking captcha"
msgstr ""
-msgid "Failed captcha verify"
-msgstr ""
+#, fuzzy
+msgid "Failed captcha verification"
+msgstr "Tõrge Yahoo! autentimisel"
#, fuzzy
msgid "Captcha Image"
@@ -7558,38 +7791,30 @@ msgstr "Pildi salvestamine"
msgid "Enter code"
msgstr "Sisesta parool"
-msgid "QQ Captcha Verifing"
-msgstr ""
+#, fuzzy
+msgid "QQ Captcha Verification"
+msgstr "SSL-sertifikaadi verifitseerimine"
#, fuzzy
msgid "Enter the text from the image"
msgstr "Sisesta grupi nimi"
-#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
-msgstr ""
+#, fuzzy, c-format
+msgid "Unknown reply when checking password (0x%02X)"
+msgstr "Vigane tõendi vastusekood, 0x%02X"
-#, c-format
+#, fuzzy, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
-msgstr ""
+msgstr "Vigane tõendi vastusekood, 0x%02X"
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "Ühendumine pole võimalik."
msgid "Socket error"
msgstr "Sokli viga"
-#, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr ""
-"Ühendus serveriga katkes:\n"
-"%d, %s"
-
msgid "Unable to read from socket"
msgstr "Soklist pole võimalik lugeda"
@@ -7600,11 +7825,11 @@ msgid "Connection lost"
msgstr "Ühendus katkes"
#, fuzzy
-msgid "Get server ..."
+msgid "Getting server"
msgstr "Määra kasutajateave..."
#, fuzzy
-msgid "Request token"
+msgid "Requesting token"
msgstr "Päring on keelatud"
msgid "Couldn't resolve host"
@@ -7614,15 +7839,12 @@ msgid "Invalid server or port"
msgstr "Vigane server või port"
#, fuzzy
-msgid "Connecting server ..."
-msgstr "Ühendumisserver"
+msgid "Connecting to server"
+msgstr "Ühendumine SILC-serverisse"
msgid "QQ Error"
msgstr "QQ viga"
-msgid "Failed to send IM."
-msgstr "Tõrge välksõnumi saatmisel."
-
#, fuzzy, c-format
msgid ""
"Server News:\n"
@@ -7632,6 +7854,13 @@ msgid ""
msgstr "QQ serveri uudised"
#, fuzzy, c-format
+msgid "%s:%s"
+msgstr ""
+"%s\n"
+"\n"
+"%s"
+
+#, fuzzy, c-format
msgid "From %s:"
msgstr "Saatja"
@@ -7641,32 +7870,30 @@ msgid ""
"%s"
msgstr "Serveri juhised: %s"
-msgid "Unknow SERVER CMD"
-msgstr ""
+#, fuzzy
+msgid "Unknown SERVER CMD"
+msgstr "Tundmatu põhjus"
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
#, fuzzy
msgid "QQ Qun Command"
msgstr "Käsk"
-#, fuzzy, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr "Sa pole grupi \"%s\" liige\n"
-
-msgid "Can not decrypt login reply"
+#, fuzzy
+msgid "Could not decrypt login reply"
msgstr "Sisselogimise vastust pole võimalik lahti krüptida"
#, fuzzy
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr "Tundmatu põhjus"
#, fuzzy
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr "Tundmatu põhjus"
#, c-format
@@ -8449,9 +8676,6 @@ msgstr "Organisatsioon"
msgid "Unit"
msgstr "Üksus"
-msgid "Note"
-msgstr "Märkus"
-
msgid "Join Chat"
msgstr ""
@@ -9082,6 +9306,10 @@ msgstr "Hostinime pole võimalik lahendada"
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr "SIP-i kasutajanimed ei tohi sisaldada sõnavahe- ja @-märke"
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "Serveri port"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -9116,190 +9344,12 @@ msgid "Auth Domain"
msgstr "Autentimisdomeen"
#, c-format
-msgid "Looking up %s"
-msgstr "%s lahendamine"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr ""
-
-#, c-format
-msgid "Signon: %s"
-msgstr ""
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "Faili %s pole võimalik kirjutada."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "Faili %s pole võimalik lugeda."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr ""
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s pole hetkel sisse logitud."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr ""
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr ""
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr ""
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr ""
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr ""
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr ""
-
-#, c-format
-msgid "Failure."
-msgstr "Tõrge."
-
-#, c-format
-msgid "Too many matches."
-msgstr "Liiga palju vastavusi."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr ""
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "Kataloogiteenus pole ajutiselt saadaval."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr ""
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "Võtmesõna eirati."
-
-#, c-format
-msgid "No keywords."
-msgstr "Võtmesõnu ei ole."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "Kasutajal pole kataloogiandmeid."
-
-#, c-format
-msgid "Country not supported."
-msgstr "Riik pole toetatud."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Tundmatu tõrge: %s."
-
-#, c-format
-msgid "Incorrect username or password."
-msgstr "Vigane kasutajanimi või parool."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "See teenus pole ajutiselt saadaval."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr ""
-
-#, c-format
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
-msgstr ""
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr ""
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "Tekkis tundmatu viga %d. Andmed: %s"
-
-msgid "Invalid Groupname"
-msgstr "Vigane grupinimi"
-
-msgid "Connection Closed"
-msgstr "Ühendus sulgeti"
-
-msgid "Waiting for reply..."
-msgstr "Vastuse ootamine..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr ""
-
-msgid "Password Change Successful"
-msgstr "Paroolimuutmine õnnestus"
-
-msgid "_Group:"
-msgstr "_Grupp:"
-
-msgid "Get Dir Info"
-msgstr ""
-
-msgid "Set Dir Info"
-msgstr ""
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr ""
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "Tõrge ülekandmisel, ilmselt tühistas teine pool ülekande."
-
-msgid "Could not connect for transfer."
-msgstr "Ülekandmiseks pole võimalik ühendust luua."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "Failipäist pole võimalik kirjutada. Faili ei kanta üle."
-
-msgid "Save As..."
-msgstr "Salvesta kui..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s soovib, et sa saadaksid talle faili"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "TOC protokolli plugin"
-
-#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr "%s saatis sulle veebikaamera kutse, mis pole aga veel toetatud."
+msgid "Your SMS was not delivered"
+msgstr ""
+
msgid "Your Yahoo! message did not get sent."
msgstr ""
@@ -9554,13 +9604,9 @@ msgstr "Lahe viit nr 3"
msgid "Last Update"
msgstr "Viimane uuendus"
-#, c-format
-msgid "User information for %s unavailable"
-msgstr "Kasutaja %s andmed pole saadaval"
-
+#, fuzzy
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr ""
"Vabandust, see profiil paistab olevat hetkel toetamata keeles või vormingus."
@@ -9875,9 +9921,6 @@ msgstr "Mitte segada"
msgid "Extended away"
msgstr "Kaua eemal"
-msgid "Mobile"
-msgstr "Mobiilne"
-
msgid "Listening to music"
msgstr "Kuulan muusikat"
@@ -9919,16 +9962,6 @@ msgstr "+++ %s naases jõudeolekust"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "Viga %s lugemisel"
-
-#, 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 ""
-
msgid "Calculating..."
msgstr "Arvutamine..."
@@ -10001,6 +10034,12 @@ msgstr ""
msgid "Unable to connect to %s: %s"
msgstr "Hostiga %s pole võimalik ühenduda: %s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr "Server vajab sisselogimiseks TLS/SSL-i. TLS/SSL-i tuge ei leitud."
+
#, c-format
msgid " - %s"
msgstr " - %s"
@@ -10034,6 +10073,16 @@ msgstr "Ühendus lükati tagasi."
msgid "Address already in use."
msgstr "Aadress on juba kasutusel."
+#, c-format
+msgid "Error Reading %s"
+msgstr "Viga %s lugemisel"
+
+#, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+
msgid "Internet Messenger"
msgstr "Interneti sõnumivahetus"
@@ -10076,10 +10125,8 @@ msgstr "Teavitused e-posti _uute sõnumite kohta"
msgid "Use this buddy _icon for this account:"
msgstr "Selle konto jaoks kasutatakse seda sõbra_ikooni:"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s - valikud"
+msgid "_Advanced"
+msgstr "Laien_datud"
msgid "Use GNOME Proxy Settings"
msgstr "Kasutatakse GNOME proksi sätteid"
@@ -10114,9 +10161,6 @@ msgstr "Kui sa päris lähedalt vaatad, siis"
msgid "you can see the butterflies mating"
msgstr "võid sa näha paarituvaid liblikaid"
-msgid "Proxy Options"
-msgstr "Proksi valikud"
-
msgid "Proxy _type:"
msgstr "_Proksi liik:"
@@ -10144,8 +10188,9 @@ msgstr "_Põhiline"
msgid "Create _this new account on the server"
msgstr "See on _uus konto ja tuleb serverisse luua"
-msgid "_Advanced"
-msgstr "Laien_datud"
+#, fuzzy
+msgid "_Proxy"
+msgstr "Proksi"
msgid "Enabled"
msgstr "Lubatud"
@@ -10218,6 +10263,17 @@ msgstr "Hangi a_ndmed"
msgid "I_M"
msgstr "Vä_lksõnum"
+#, fuzzy
+msgid "_Audio Call"
+msgstr "_Lisa vestlus"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Videovestlus"
+
msgid "_Send File..."
msgstr "Saada _fail..."
@@ -10354,6 +10410,10 @@ msgstr "/Vahendid/Sõbra_märguanded"
msgid "/Tools/_Certificates"
msgstr "/Vahendid/_Sertifikaadid"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Vahendid/_Tujunäod"
+
msgid "/Tools/Plu_gins"
msgstr "/Vahendid/Plu_ginad"
@@ -10363,9 +10423,6 @@ msgstr "/Vahendid/_Eelistused"
msgid "/Tools/Pr_ivacy"
msgstr "/Vahendid/_Privaatsus"
-msgid "/Tools/Smile_y"
-msgstr "/Vahendid/_Tujunäod"
-
msgid "/Tools/_File Transfers"
msgstr "/Vahendid/_Failiülekanded"
@@ -10481,8 +10538,8 @@ msgstr "Käsitsi"
msgid "By status"
msgstr "Oleku järgi"
-msgid "By log size"
-msgstr "Logi suuruse järgi"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10498,6 +10555,9 @@ msgstr "Ühendu uuesti"
msgid "Re-enable"
msgstr "Luba uuesti"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr "Tere tulemast tagasi!"
@@ -10586,6 +10646,9 @@ msgstr ""
msgid "A_lias:"
msgstr "A_lias:"
+msgid "_Group:"
+msgstr "_Grupp:"
+
msgid "Auto_join when account becomes online."
msgstr ""
@@ -10636,14 +10699,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr "Sõbra kutsumine jututuppa"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Palun sisesta selle kasutaja nimi, keda sa soovid jututuppa kutsuda. Kui "
-"sisestad ka sõnumi, siis saadetakse see sõbrale koos kutsumisteatega."
-
msgid "_Buddy:"
msgstr "_Sõber:"
@@ -10718,6 +10773,22 @@ msgstr "/Vestlus/Salvesta _kui..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Vestlus/_Puhasta tagasikerimine"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Vestlus/_Veel"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Vestlus/_Veel"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Vestlus/_Veel"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Vestlus/Vaata _logi"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Vestlus/Saada _fail..."
@@ -10790,6 +10861,18 @@ msgstr "/Vestlus"
msgid "/Conversation/View Log"
msgstr "/Vestlus/Vaata logi"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Vestlus/Veel"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Vestlus/Vaata logi"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Vestlus/Veel"
+
msgid "/Conversation/Send File..."
msgstr "/Vestlus/Saada fail..."
@@ -10973,6 +11056,9 @@ msgstr "Esitaja"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "kasutajatugi"
@@ -11113,6 +11199,10 @@ msgstr "Gruusia"
msgid "Ubuntu Georgian Translators"
msgstr "Ubuntu Gruusia tõlkijad"
+#, fuzzy
+msgid "Khmer"
+msgstr "Muu"
+
msgid "Kannada"
msgstr "Kannada"
@@ -11134,6 +11224,10 @@ msgstr "Leedu"
msgid "Macedonian"
msgstr "Makedoonia"
+#, fuzzy
+msgid "Mongolian"
+msgstr "Makedoonia"
+
msgid "Bokmål Norwegian"
msgstr "Norra (bokmål)"
@@ -11250,7 +11344,24 @@ msgstr ""
"pole mitte mingisugust garantiid.<BR><BR>"
#, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, fuzzy, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin serveris irc.freenode.net<BR><BR>"
+
+#, fuzzy, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin serveris irc.freenode.net<BR><BR>"
msgid "Current Developers"
@@ -11554,15 +11665,6 @@ msgstr "Tippimismärguande kuvamiseks kasutatav kirjatüüp"
msgid "Enable typing notification"
msgstr "Tippimismärguande lubamine"
-msgid "_Copy Email Address"
-msgstr "_Kopeeri e-posti aadress"
-
-msgid "_Open Link in Browser"
-msgstr "_Ava viit veebisirvijas"
-
-msgid "_Copy Link Location"
-msgstr "_Kopeeri viida asukoht"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -11799,13 +11901,14 @@ msgstr "_Sirvi logide kausta"
msgid "%s %s. Try `%s -h' for more information.\n"
msgstr "%s %s. Lähema teabe saamiseks kasuta `%s -h'.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -11834,13 +11937,14 @@ msgstr ""
" -v, --version käesoleva versiooni kuvamine ja programmi töö\n"
" lõpetamine\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -11888,11 +11992,27 @@ msgstr ""
msgid "Pidgin"
msgstr "Pidgin"
-msgid "Open All Messages"
-msgstr "Ava kõik sõnumid"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Sulle on e-sõnum!</span>"
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "Arvutamine..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -11921,6 +12041,27 @@ msgid ""
"The 'Manual' browser command has been chosen, but no command has been set."
msgstr ""
+msgid "Open All Messages"
+msgstr "Ava kõik sõnumid"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Sulle on e-sõnum!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "Uus sõbramärguanne"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Sulle on e-sõnum!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "Tundmatu sõnum"
+
msgid "The following plugins will be unloaded."
msgstr "Järgnevad pluginad laaditakse mälust välja."
@@ -11967,6 +12108,10 @@ msgstr "<b>Plugina üksikasjad</b>"
msgid "Select a file"
msgstr "Faili valimine"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Sõbramärguande redigeerimine"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "Kellest märku antakse"
@@ -12037,6 +12182,50 @@ msgstr "_Korduv"
msgid "Pounce Target"
msgstr "Kelle kohta"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "Alustab tippimist"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "Teeb tippimisel pausi"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "Logib sisse"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s pole enam jõude (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "Pöördub eemalolekust tagasi"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "Tippimine lõpetatud"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "Logib välja"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "Jääb jõude"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "Kui olen eemal"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Saadetakse sõnum"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "Tundmatu teavitussündmus. Palun anna sellest teada!"
+
msgid "Smiley theme failed to unpack."
msgstr "Tõrge tujunägude teema lahtipakkimisel"
@@ -12059,6 +12248,12 @@ msgstr "Kiirklahvid"
msgid "Cl_ose conversations with the Escape key"
msgstr "Vestlused suletakse _Escape-klahvi vajutamisega"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Sõbranimekiri"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "Süsteemisalve ikoon"
@@ -12169,9 +12364,6 @@ msgstr "Proksi seadistusprogrammi pole võimalik käivitada."
msgid "Cannot start browser configuration program."
msgstr "Veebisirvija seadistusprogrammi pole võimalik käivitada."
-msgid "ST_UN server:"
-msgstr "ST_UN server:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">Näide: stunserver.org</span>"
@@ -12196,6 +12388,10 @@ msgstr "Al_gusport:"
msgid "_End port:"
msgstr "_Lõpuport:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr "Proksi server ja veebisirvija"
@@ -12224,6 +12420,10 @@ msgstr "Proksi server"
msgid "No proxy"
msgstr "Proksi puudub"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "Kasuta_ja:"
@@ -12382,12 +12582,12 @@ msgstr "Kui olen eemal ja jõude"
msgid "Auto-away"
msgstr "Automaatne eemaldumine"
-msgid "Change status when _idle"
-msgstr "Jõudeoleku puhul määratakse uus _olek"
-
msgid "_Minutes before becoming idle:"
msgstr "Mitme _minuti möödudes jõudeolek määratakse:"
+msgid "Change status when _idle"
+msgstr "Jõudeoleku puhul määratakse uus _olek"
+
msgid "Change _status to:"
msgstr "Uueks o_lekuks saab:"
@@ -12536,6 +12736,12 @@ msgstr "Sal_vesta ja kasuta"
msgid "Status for %s"
msgstr ""
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
msgid "Custom Smiley"
msgstr "Kohandatud tujunägu"
@@ -12545,14 +12751,14 @@ msgstr ""
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
-msgid "Duplicate Shortcut"
-msgstr "Dubleeriuv kiirklahv"
-
+#, c-format
msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
+"A custom smiley for '%s' already exists. Please use a different shortcut."
msgstr ""
+msgid "Duplicate Shortcut"
+msgstr "Dubleeriuv kiirklahv"
+
msgid "Please select an image for the smiley."
msgstr "Palun vali tujunäo jaoks pilt."
@@ -12562,16 +12768,22 @@ msgstr "Tujunäo muutmine"
msgid "Add Smiley"
msgstr "Tujunäo lisamine"
-msgid "Smiley _Image"
-msgstr "Tujunäo _pilt"
+#, fuzzy
+msgid "_Image:"
+msgstr "_Pilt"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr "Tujunäo _kiirklahv"
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "Kiirklahv"
msgid "Smiley"
msgstr "Tujunägu"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "Kiirklahv"
+
msgid "Custom Smiley Manager"
msgstr "Kohandatud tujunägude haldur"
@@ -12691,6 +12903,16 @@ msgid ""
msgstr ""
"Tõrge pildi '%s' laadimisel: põhjus on teadmata, ilmselt on pildifail rikutud"
+#, fuzzy
+msgid "_Open Link"
+msgstr "_Viidad avatakse:"
+
+msgid "_Copy Link Location"
+msgstr "_Kopeeri viida asukoht"
+
+msgid "_Copy Email Address"
+msgstr "_Kopeeri e-posti aadress"
+
msgid "Save File"
msgstr "Faili salvestamine"
@@ -13640,9 +13862,6 @@ msgstr "Sõbranimekirja _hoitakse pealmisena:"
msgid "Only when docked"
msgstr "Ainult dokitud olekus"
-msgid "_Flash window when chat messages are received"
-msgstr "_Akna vilgutamine vestlussõnumite vastuvõtmisel"
-
msgid "Windows Pidgin Options"
msgstr "Windowsi Pidgini valikud"
@@ -13692,6 +13911,151 @@ msgstr ""
msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr "See plugin sobib XMPP serverite ja klientide silumiseks"
+#~ msgid "Invite message"
+#~ msgstr "Kutse sõnum"
+
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Palun sisesta selle kasutaja nimi, keda sa soovid\n"
+#~ "jututuppa kutsuda. Kui sisestad ka sõnumi, siis\n"
+#~ "saadetakse see sõbrale koos kutsumisteatega."
+
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "MSN-i aadressiraamatut pole võimalik vastu võtta"
+
+#, fuzzy
+#~ msgid "Add buddy Q&A"
+#~ msgstr "Sõbra lisamine"
+
+#, fuzzy
+#~ msgid "Can not decrypt get server reply"
+#~ msgstr "Sisselogimise vastust pole võimalik lahti krüptida"
+
+#~ msgid "Keep alive error"
+#~ msgstr "Ühenduse ülevalhoidmise viga"
+
+#~ msgid ""
+#~ "Lost connection with server:\n"
+#~ "%d, %s"
+#~ msgstr ""
+#~ "Ühendus serveriga katkes:\n"
+#~ "%d, %s"
+
+#, fuzzy
+#~ msgid "Connecting server ..."
+#~ msgstr "Ühendumisserver"
+
+#~ msgid "Failed to send IM."
+#~ msgstr "Tõrge välksõnumi saatmisel."
+
+#, fuzzy
+#~ msgid "Not a member of room \"%s\"\n"
+#~ msgstr "Sa pole grupi \"%s\" liige\n"
+
+#~ msgid "Looking up %s"
+#~ msgstr "%s lahendamine"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "Faili %s pole võimalik kirjutada."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "Faili %s pole võimalik lugeda."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s pole hetkel sisse logitud."
+
+#~ msgid "Failure."
+#~ msgstr "Tõrge."
+
+#~ msgid "Too many matches."
+#~ msgstr "Liiga palju vastavusi."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "Kataloogiteenus pole ajutiselt saadaval."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "Võtmesõna eirati."
+
+#~ msgid "No keywords."
+#~ msgstr "Võtmesõnu ei ole."
+
+#~ msgid "User has no directory information."
+#~ msgstr "Kasutajal pole kataloogiandmeid."
+
+#~ msgid "Country not supported."
+#~ msgstr "Riik pole toetatud."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Tundmatu tõrge: %s."
+
+#~ msgid "Incorrect username or password."
+#~ msgstr "Vigane kasutajanimi või parool."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "See teenus pole ajutiselt saadaval."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "Tekkis tundmatu viga %d. Andmed: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "Vigane grupinimi"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Ühendus sulgeti"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "Vastuse ootamine..."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "Paroolimuutmine õnnestus"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr "Tõrge ülekandmisel, ilmselt tühistas teine pool ülekande."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "Ülekandmiseks pole võimalik ühendust luua."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "Failipäist pole võimalik kirjutada. Faili ei kanta üle."
+
+#~ msgid "Save As..."
+#~ msgstr "Salvesta kui..."
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s soovib, et sa saadaksid talle faili"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "TOC protokolli plugin"
+
+#~ msgid "User information for %s unavailable"
+#~ msgstr "Kasutaja %s andmed pole saadaval"
+
+#~ msgid "%s Options"
+#~ msgstr "%s - valikud"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Proksi valikud"
+
+#~ msgid "By log size"
+#~ msgstr "Logi suuruse järgi"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_Ava viit veebisirvijas"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "ST_UN server:"
+
+#~ msgid "Smiley _Image"
+#~ msgstr "Tujunäo _pilt"
+
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "Tujunäo _kiirklahv"
+
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "_Akna vilgutamine vestlussõnumite vastuvõtmisel"
+
#~ msgid "A group with the name already exists."
#~ msgstr "Selle nimega grupp on juba olemas."
@@ -13757,15 +14121,6 @@ msgstr "See plugin sobib XMPP serverite ja klientide silumiseks"
#~ msgid "Do you want to approve the request?"
#~ msgstr "Kas sa nõustud selle päringuga?"
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-
#~ msgid "System Message"
#~ msgstr "Süsteemne sõnum"
diff --git a/po/eu.po b/po/eu.po
index 9f06fcd849..52966690f9 100644
--- a/po/eu.po
+++ b/po/eu.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: eu\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
+"POT-Creation-Date: 2009-04-30 10:38-0400\n"
"PO-Revision-Date: 2006-05-25 23:48+0200\n"
"Last-Translator: tamax\n"
"Language-Team: <en@li.org>\n"
@@ -33,7 +33,7 @@ msgid ""
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -577,8 +577,8 @@ msgid ""
"and re-enable the account."
msgstr ""
"%s deskonektatua izan da errorea baten ondorioz: %s\n"
-" Pidgin ez da saiatuko kontua berriz konektatzen errorea konpondu eta kontua "
-"ahalbidetu arte."
+" Pidgin ez da saiatuko kontua berriz konektatzen errorea konpondu eta "
+"kontua ahalbidetu arte."
msgid "Re-enable Account"
msgstr "Ber ahalbidetu kontua"
@@ -645,21 +645,6 @@ msgid "Send To"
msgstr "_Bidali honi:"
#, fuzzy
-msgid "Invite message"
-msgstr "Txertatu irudia mezuan"
-
-msgid "Invite"
-msgstr "Gonbidatu"
-
-#, fuzzy
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Idatzi gonbidatu nahi duzun erabiltzailearen izena, gonbit-mezu batekin nahi "
-"baduzu."
-
-#, fuzzy
msgid "Conversation"
msgstr "Solasaldiak"
@@ -927,6 +912,43 @@ msgid "System Log"
msgstr "Sistemaren egunkaria"
#, fuzzy
+msgid "Calling ... "
+msgstr "Kalkulatzen..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+#, fuzzy
+msgid "Accept"
+msgstr "_Onartu"
+
+#, fuzzy
+msgid "Reject"
+msgstr "Berrezarri"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "%s%s kanaletik irten zara"
+
+msgid "call: Make an audio call."
+msgstr ""
+
+#, fuzzy
msgid "Emails"
msgstr "Helbide elektronikoa"
@@ -963,6 +985,9 @@ msgstr "Konektatu"
msgid "IM"
msgstr "BM"
+msgid "Invite"
+msgstr "Gonbidatu"
+
#, fuzzy
msgid "(none)"
msgstr "(ez dago izenik)"
@@ -1189,7 +1214,6 @@ msgstr "%s joan egin da (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s bidali mezu bat bidali dizu (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "Alerta emateko gertaera ezezaguna. Eman honen berri!"
@@ -1246,7 +1270,6 @@ msgstr "_Egoera aldatu aurreko minutuak:"
msgid "Change status to"
msgstr "_Egoera aldatu hona:"
-#. Conversations
msgid "Conversations"
msgstr "Solasaldiak"
@@ -1603,7 +1626,6 @@ msgstr ""
"Solasaldi berri bat irekitzean, plugin honek azken solasaldia uneko "
"solasaldian sartuko du."
-#, c-format
msgid "Online"
msgstr "Linean"
@@ -1652,6 +1674,28 @@ msgstr ""
msgid "Lastlog plugin."
msgstr ""
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URLa"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "Kontuak "
@@ -1750,15 +1794,6 @@ msgstr "Berriketarako gonbita onartu nahi duzu?"
msgid "SSL Certificate Verification"
msgstr ""
-#. Number of actions
-#, fuzzy
-msgid "Accept"
-msgstr "_Onartu"
-
-#, fuzzy
-msgid "Reject"
-msgstr "Berrezarri"
-
msgid "_View Certificate..."
msgstr ""
@@ -1897,6 +1932,18 @@ msgstr "%s gelatik irten da."
msgid "%s left the room (%s)."
msgstr "%s gelatik irten da (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Konferentziara gonbidatu"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Idatzi gonbidatu nahi duzun erabiltzailearen izena, gonbit-mezu batekin nahi "
+"baduzu."
+
#, fuzzy, c-format
msgid "Failed to get connection: %s"
msgstr "Ezin da konexio sortu."
@@ -2034,7 +2081,6 @@ msgstr "Transferentzia hasten hemendik %s hona %s"
msgid "Transfer of file %s complete"
msgstr "%s fitxategiaren transferentzia osatu da"
-#, c-format
msgid "File transfer complete"
msgstr "Fitxategi-transferentzien osatuta"
@@ -2042,7 +2088,6 @@ msgstr "Fitxategi-transferentzien osatuta"
msgid "You canceled the transfer of %s"
msgstr "%s(r)en transferentzia bertan behera utzi duzu"
-#, c-format
msgid "File transfer cancelled"
msgstr "Fitxategi-transferentzia bertan behera utzi da"
@@ -2232,7 +2277,6 @@ msgstr "(%s) %s <ERANTZUN AUTOMATIKOA>: %s\n"
msgid "You are using %s, but this plugin requires %s."
msgstr ""
-#, c-format
msgid "This plugin has not defined an ID."
msgstr ""
@@ -2728,6 +2772,32 @@ msgstr ""
msgid "Do not ask. Always save in pounce."
msgstr ""
+#, fuzzy
+msgid "One Time Password"
+msgstr "Sartu Pasahitza"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2935,7 +3005,6 @@ msgstr ""
"Ezinezkoa izan da konexioa ezatzea mDNS zerbitzari lokalarekin , martxan al "
"dago ?"
-#. Creating the options for the protocol
msgid "First name"
msgstr "Izena"
@@ -2970,6 +3039,11 @@ msgstr "Bonjour protokoloaren plugin-a"
msgid "Purple Person"
msgstr "Pertsona berria"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "Herria"
+
msgid "Bonjour"
msgstr "Bonjour"
@@ -3134,13 +3208,13 @@ msgstr "Aukeratu berriketak lagun batentzat:%s "
msgid "Add to chat..."
msgstr "Gehitu berriketara ..."
+#. Global
msgid "Available"
msgstr "Erabilgarri"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "Kanpoan"
@@ -3487,6 +3561,17 @@ msgstr ""
"Zerbitzariak hautatu dituzun kontu-izenak ezetsi ditu. Baliteke karaktere "
"baliogabeak edukitzea."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "Berriketa honen izena dagoeneko erabiltzen ari da"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Goitizena"
+
msgid "Cannot change nick"
msgstr "Ezin da goitizena aldatu"
@@ -3766,6 +3851,41 @@ msgstr "Erronka baliogabea zerbitzaritik"
msgid "SASL error"
msgstr "SASL error"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "Ez da arrazoirik eman."
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Bertsioa ez da onartzen"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"Ezinezkoa izan da konexioa ezatzea mDNS zerbitzari lokalarekin , martxan al "
+"dago ?"
+
+#, fuzzy, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"Ezinezkoa izan da konexioa ezatzea mDNS zerbitzari lokalarekin , martxan al "
+"dago ?"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "Ezin da konexio sortu."
+
+msgid "Unable to create socket"
+msgstr "Ezin da socket-a sortu"
+
+msgid "Write error"
+msgstr "Idazketa-errorea"
+
msgid "Full Name"
msgstr "Izen-deiturak"
@@ -3834,6 +3954,10 @@ msgstr "Herria"
msgid "Operating System"
msgstr ""
+#, fuzzy
+msgid "Local Time"
+msgstr "Fitxagei lokala:"
+
msgid "Last Activity"
msgstr ""
@@ -4070,7 +4194,6 @@ msgstr "Berritsu"
msgid "Extended Away"
msgstr "Kanpoan luzarorako"
-#, c-format
msgid "Do Not Disturb"
msgstr "Ez molestatu"
@@ -4198,9 +4321,6 @@ msgstr "Bilatu gelak"
msgid "You require encryption, but it is not available on this server."
msgstr ""
-msgid "Write error"
-msgstr "Idazketa-errorea"
-
#, fuzzy
msgid "Ping timeout"
msgstr "Testu arrunta"
@@ -4208,16 +4328,11 @@ msgstr "Testu arrunta"
msgid "Read Error"
msgstr "Irakurketa-errorea"
-#, fuzzy, c-format
+#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"Ezinezkoa izan da konexioa ezatzea mDNS zerbitzari lokalarekin , martxan al "
-"dago ?"
-
-msgid "Unable to create socket"
-msgstr "Ezin da socket-a sortu"
#, fuzzy
msgid "Invalid XMPP ID"
@@ -4226,6 +4341,10 @@ msgstr "IDa ez da baliozkoa"
msgid "Invalid XMPP ID. Domain must be set."
msgstr ""
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Huts egin du zerbitzariarekin konektatzean."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "%s@%s ondo erregistratu da"
@@ -4318,9 +4437,18 @@ msgstr "Autentifikatzen"
msgid "Re-initializing Stream"
msgstr "Korrontea berrasieratzen"
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr "Baimenik ez"
+msgid "Mood"
+msgstr "Umorea"
+
+msgid "Now Listening"
+msgstr ""
+
msgid "Both"
msgstr "Biak"
@@ -4342,12 +4470,6 @@ msgstr "Bat ere ez"
msgid "Subscription"
msgstr "Harpidetza"
-msgid "Mood"
-msgstr "Umorea"
-
-msgid "Now Listening"
-msgstr ""
-
#, fuzzy
msgid "Mood Text"
msgstr "Umorea"
@@ -4591,18 +4713,24 @@ msgstr "Ezin da %s erabiltzailea jaurti"
msgid "Unable to ping user %s"
msgstr "Ezin da %s erabiltzailea kanporatu"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
+msgstr "Ezin da soinua jo, aukeratutako fitxategia (%s) ez dagoelako."
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
+msgstr "Ezin da soinua jo, aukeratutako fitxategia (%s) ez dagoelako."
#, fuzzy, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "Ezin da soinua jo, aukeratutako fitxategia (%s) ez dagoelako."
+#, c-format
+msgid "Buzzing %s..."
+msgstr ""
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
#, fuzzy
@@ -4613,9 +4741,40 @@ msgstr "Buzz!!"
msgid "%s has buzzed you!"
msgstr "%s konektatu da bertan."
-#, c-format
-msgid "Buzzing %s..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "Ezin zaio mezua bidali %s(r)i."
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
msgstr ""
+"Ezin zaio fitxategia bidali %s erabiltzaileari, ez duelako fitxategi-"
+"transferentziarik onartzen"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr ""
+"Ezin zaio fitxategia bidali %s erabiltzaileari, ez duelako fitxategi-"
+"transferentziarik onartzen"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "Erregistratzeak huts egin du"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr ""
+"Idatzi informazioa ikusi nahi duzun pertsonaren pantaila-izena edo ezizena."
+
+#, fuzzy
+msgid "Select a Resource"
+msgstr "Hautatu fitxategia"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "Hasi _berriketa"
msgid "config: Configure a chat room."
msgstr "konfig.: konfiguratu berriketa-gela bat."
@@ -4782,6 +4941,21 @@ msgstr "Errorea %s berriketan sartzean"
msgid "Error in chat %s"
msgstr "Errorea %s berriketan"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "Errore bat gertatu da fitxategia irekitzean."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "Fitxategi-transferentzia huts egin du"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Huts egin du irudia gordetzean: %s\n"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4813,10 +4987,6 @@ msgstr ""
"Idatzi informazioa ikusi nahi duzun pertsonaren pantaila-izena edo ezizena."
#, fuzzy
-msgid "Select a Resource"
-msgstr "Hautatu fitxategia"
-
-#, fuzzy
msgid "Edit User Mood"
msgstr "Erabiltzaile-moduak"
@@ -4855,9 +5025,19 @@ msgstr "Akzioa"
msgid "Select an action"
msgstr "Hautatu fitxategia"
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr "Ezin da gehitu \"%s\"."
+
+msgid "Buddy Add error"
+msgstr ""
+
#, fuzzy
-msgid "Unable to retrieve MSN Address Book"
-msgstr "Gehitu helbide-liburuan oharretan"
+msgid "The username specified does not exist."
+msgstr "Zehastu duzun Pantaila-izena ez baliogarria."
#, c-format
msgid "Buddy list synchronization issue in %s (%s)"
@@ -5087,7 +5267,7 @@ msgstr "Ume-pasaportea gurasoen baimenik gabe"
msgid "Passport account not yet verified"
msgstr "Pasaporte-kontua ez da egiaztatu oraindik"
-#, fuzzy, c-format
+#, fuzzy
msgid "Passport account suspended"
msgstr "Pasaporte-kontua ez da egiaztatu oraindik"
@@ -5182,6 +5362,13 @@ msgstr "Bidali mezu bat mugikor batera."
msgid "Page"
msgstr "Orria"
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "Laneko IM"
+
msgid "Has you"
msgstr "Atzeman zaitu"
@@ -5222,6 +5409,14 @@ msgstr "Helbidea"
msgid "Album"
msgstr ""
+#, fuzzy
+msgid "Game Title"
+msgstr "Lanpostua"
+
+#, fuzzy
+msgid "Office Title"
+msgstr "Lanpostua"
+
msgid "Set Friendly Name..."
msgstr "Ezarri lagunarteko izena..."
@@ -5422,8 +5617,9 @@ msgstr ""
"Pidgin-ek ezin izan du erabiltzailearen profilean informaziorik aurkitu. "
"Erabiltzailea ez dela existitzen dirudi."
-msgid "Profile URL"
-msgstr "Profilaren URLa"
+#, fuzzy
+msgid "View web profile"
+msgstr "Ez da onartzen lineaz kanpo"
#. *< type
#. *< ui_requirement
@@ -5680,13 +5876,6 @@ msgstr "Gehitu helbide-liburuan"
msgid "Do you want to delete this buddy from your address book as well?"
msgstr "Lagun hori zure lagunen zerrendan gehitu nahi duzu?"
-#. only notify the user about problems adding to the friends list
-#. * maybe we should do something else for other lists, but it probably
-#. * won't cause too many problems if we just ignore it
-#, c-format
-msgid "Unable to add \"%s\"."
-msgstr "Ezin da gehitu \"%s\"."
-
#, fuzzy
msgid "The username specified is invalid."
msgstr "Zehastu duzun Pantaila-izena ez baliogarria."
@@ -5694,6 +5883,9 @@ msgstr "Zehastu duzun Pantaila-izena ez baliogarria."
msgid "This Hotmail account may not be active."
msgstr "Hotmail kontu hau behar bada ez dago aktibatua."
+msgid "Profile URL"
+msgstr "Profilaren URLa"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5708,17 +5900,13 @@ msgstr "Hotmail kontu hau behar bada ez dago aktibatua."
msgid "MSN Protocol Plugin"
msgstr "AIM/ICQ protokoloaren plugin-a"
-#, fuzzy
-msgid "Missing Cipher"
-msgstr "Zifra"
-
-msgid "The RC4 cipher could not be found"
+#, c-format
+msgid "No such user: %s"
msgstr ""
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
-msgstr ""
+#, fuzzy
+msgid "User lookup"
+msgstr "Erabiltzaile-gelak"
#, fuzzy
msgid "Reading challenge"
@@ -5732,11 +5920,19 @@ msgstr "Erronka baliogabea zerbitzaritik"
msgid "Logging in"
msgstr "Egunkaria"
-#, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] ""
-msgstr[1] ""
+#, fuzzy
+msgid "MySpaceIM - No Username Set"
+msgstr "Ez dago izenik"
+
+msgid "You appear to have no MySpace username."
+msgstr ""
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr ""
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr "Zerbitzaritik deskonektatuta zaude."
#. Can't write _()'d strings in array initializers. Workaround.
#, fuzzy
@@ -5759,14 +5955,22 @@ msgid "MySpace"
msgstr ""
#, fuzzy
-msgid "MySpaceIM - No Username Set"
-msgstr "Ez dago izenik"
+msgid "IM Friends"
+msgstr "_BM leihoak"
-msgid "You appear to have no MySpace username."
-msgstr ""
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+msgstr[1] ""
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
-msgstr ""
+#, fuzzy
+msgid "Add contacts from server"
+msgstr "Erantzun baliogabea zerbitzaritik."
#. The session is now set up, ready to be connected. This emits the
#. * signedOn signal, so clients can now do anything with msimprpl, and
@@ -5790,6 +5994,22 @@ msgid "MySpaceIM Error"
msgstr ""
#, fuzzy
+msgid "Invalid input condition"
+msgstr "Konexioa amaitzen"
+
+#, fuzzy
+msgid "Read buffer full (2)"
+msgstr "Ilara beteta dago"
+
+#, fuzzy
+msgid "Unparseable message"
+msgstr "Ezin da mezua analizatu"
+
+#, fuzzy, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr "Ezin izan da ostalariarekin konektatu"
+
+#, fuzzy
msgid "Failed to add buddy"
msgstr "Huts egin du berriketako lagunarekin elkartzean"
@@ -5801,14 +6021,6 @@ msgstr "Kargatu lagunen-zerrenda fitxategi batetik..."
msgid "persist command failed"
msgstr "Switchboard hutsegitea"
-#, c-format
-msgid "No such user: %s"
-msgstr ""
-
-#, fuzzy
-msgid "User lookup"
-msgstr "Erabiltzaile-gelak"
-
#, fuzzy
msgid "Failed to remove buddy"
msgstr "Huts egin du berriketako lagunarekin elkartzean"
@@ -5821,38 +6033,16 @@ msgid "blocklist command failed"
msgstr "Switchboard hutsegitea"
#, fuzzy
-msgid "Invalid input condition"
-msgstr "Konexioa amaitzen"
-
-#, fuzzy
-msgid "Read buffer full (2)"
-msgstr "Ilara beteta dago"
-
-#, fuzzy
-msgid "Unparseable message"
-msgstr "Ezin da mezua analizatu"
-
-#, fuzzy, c-format
-msgid "Couldn't connect to host: %s (%d)"
-msgstr "Ezin izan da ostalariarekin konektatu"
+msgid "Missing Cipher"
+msgstr "Zifra"
-#, fuzzy
-msgid "IM Friends"
-msgstr "_BM leihoak"
+msgid "The RC4 cipher could not be found"
+msgstr ""
-#, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-msgstr[1] ""
-
-#, fuzzy
-msgid "Add contacts from server"
-msgstr "Erantzun baliogabea zerbitzaritik."
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
msgid "Add friends from MySpace.com"
msgstr ""
@@ -5901,10 +6091,6 @@ msgid "User"
msgstr "Erabiltzaileak"
#, fuzzy
-msgid "Profile"
-msgstr "MSN profila"
-
-#, fuzzy
msgid "Headline"
msgstr "_Heldulekua:"
@@ -5919,17 +6105,6 @@ msgstr ""
msgid "Client Version"
msgstr "Itxi solasaldia"
-#. Protocol won't log in now without a username set.. Disconnect
-#, fuzzy
-msgid "No username set"
-msgstr "Ez dago izenik"
-
-msgid "MySpaceIM - Please Set a Username"
-msgstr ""
-
-msgid "Please enter a username to check its availability:"
-msgstr ""
-
#, fuzzy
msgid "MySpaceIM - Username Available"
msgstr "Zerbitzua ez dago erabilgarri"
@@ -5944,6 +6119,9 @@ msgstr ""
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr ""
+msgid "MySpaceIM - Please Set a Username"
+msgstr ""
+
#, fuzzy
msgid "This username is unavailable."
msgstr "Gai honek ez du aurpegiera erabilgarririk"
@@ -5952,6 +6130,14 @@ msgstr "Gai honek ez du aurpegiera erabilgarririk"
msgid "Please try another username:"
msgstr "Idatzi pasahitz berria"
+#. Protocol won't log in now without a username set.. Disconnect
+#, fuzzy
+msgid "No username set"
+msgstr "Ez dago izenik"
+
+msgid "Please enter a username to check its availability:"
+msgstr ""
+
#. TODO: icons for each zap
#. Lots of comments for translators:
#. Zap means "to strike suddenly and forcefully as if with a
@@ -6348,7 +6534,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr "Errorea. SSL euskarria ez dago instalatuta."
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr "Konferentzia hau itxi egin da, eta ezin da mezu gehiago bidali."
@@ -6617,23 +6802,18 @@ msgstr "Kamera"
msgid "Screen Sharing"
msgstr "Pantaila-izena"
-#, c-format
msgid "Free For Chat"
msgstr "Berriketarako libre"
-#, c-format
msgid "Not Available"
msgstr "Ez erabilgarri"
-#, c-format
msgid "Occupied"
msgstr "Okupatuta"
-#, c-format
msgid "Web Aware"
msgstr "Web-ean"
-#, c-format
msgid "Invisible"
msgstr "Ikusezin"
@@ -6680,7 +6860,7 @@ msgstr ""
"zenbakiak eta zuriuneak bakarrik eduki, edo bestela zenbakiak bakarrik eduki "
"behar dituzte."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
#, fuzzy
msgid "Invalid username."
@@ -6697,7 +6877,7 @@ msgstr "Zure kontua esekita dago une honetan."
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "AOL berehalako mezularitza-zerbitzua ez dago erabilgarri une honetan."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6733,10 +6913,8 @@ msgstr "Sartu pantailan agertzsen den 6 digitodun zenbakia "
msgid "_OK"
msgstr "Ados"
-#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
+#, fuzzy, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
msgstr ""
"Laster deskonektatuta greatzeko arriskua duzu. TOC erabil dezakezu arazoa "
"konpondu arte. Bilatu eguneratzeak %s gunean."
@@ -6901,7 +7079,7 @@ msgstr[0] ""
msgstr[1] ""
"%2$s erabiltzailearen %1$hu mezu ez zaizkizu heldu. Arrazoia ez da ezaguna."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "Ezin da mezua bidali: %s"
@@ -6923,6 +7101,10 @@ msgstr "Noiztik linean"
msgid "Member Since"
msgstr "Noiztik kidea"
+#, fuzzy
+msgid "Profile"
+msgstr "MSN profila"
+
msgid "Your AIM connection may be lost."
msgstr "Beharbada AIM konexioa galdu egingo zen."
@@ -7077,9 +7259,11 @@ msgid_plural ""
"The maximum profile length of %d bytes has been exceeded. It has been "
"truncated for you."
msgstr[0] ""
-"Profilaren gehienezko luzera (%d byte) gainditu da. Pidgin-ek trunkatu egin du."
+"Profilaren gehienezko luzera (%d byte) gainditu da. Pidgin-ek trunkatu egin "
+"du."
msgstr[1] ""
-"Profilaren gehienezko luzera (%d byte) gainditu da. Pidgin-ek trunkatu egin du."
+"Profilaren gehienezko luzera (%d byte) gainditu da. Pidgin-ek trunkatu egin "
+"du."
msgid "Profile too long."
msgstr "Profila luzeegia da."
@@ -7092,11 +7276,11 @@ msgid_plural ""
"The maximum away message length of %d bytes has been exceeded. It has been "
"truncated for you."
msgstr[0] ""
-"Kanpoan zaudeneko mezuaren gehienezko luzera (%d byte) gainditu da. Pidgin-ek "
-"trunkatu egin du."
+"Kanpoan zaudeneko mezuaren gehienezko luzera (%d byte) gainditu da. Pidgin-"
+"ek trunkatu egin du."
msgstr[1] ""
-"Kanpoan zaudeneko mezuaren gehienezko luzera (%d byte) gainditu da. Pidgin-ek "
-"trunkatu egin du."
+"Kanpoan zaudeneko mezuaren gehienezko luzera (%d byte) gainditu da. Pidgin-"
+"ek trunkatu egin du."
msgid "Away message too long."
msgstr "Kanpoan zaudeneko mezua luzeegia da."
@@ -7217,6 +7401,7 @@ msgstr "Konektatu"
msgid "Get AIM Info"
msgstr "Hartu informazioa"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "Editatu lagunaren iruzkina"
@@ -7332,7 +7517,7 @@ msgstr "%s(r)i galdetzen gurekin %s(e)n konektatzeko: %hu BM Zuzenerako."
msgid "Attempting to connect to %s:%hu."
msgstr "%s(e)ra (%s) konektatzen saiatzen: %hu BM Zuzenerako."
-#, fuzzy, c-format
+#, fuzzy
msgid "Attempting to connect via proxy server."
msgstr "Konexioa berbideratzen zailatzen..."
@@ -7442,7 +7627,7 @@ msgstr "Opera"
msgid "Visible"
msgstr "Ikusezin"
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
#, fuzzy
@@ -7538,17 +7723,50 @@ msgstr "Azken eguneratzea "
msgid "Could not change buddy information."
msgstr "Adierazi lagun bat alerta emateko."
-#, c-format
-msgid "%d needs Q&A"
+msgid "Mobile"
+msgstr "Mugikorra"
+
+msgid "Note"
+msgstr "Oharra"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "Lagunaren ikonoa"
+
+msgid "Change his/her memo as you like"
msgstr ""
#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "Gehitu laguna"
+msgid "_Modify"
+msgstr "_Aldatu"
-msgid "Input answer here"
+#, fuzzy
+msgid "Memo Modify"
+msgstr "_Aldatu"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "Zerbitzaria okupatuta dago"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
msgstr ""
+#, fuzzy, c-format
+msgid "%u requires verification"
+msgstr "Baimena beharrezkoa"
+
+#, fuzzy
+msgid "Add buddy question"
+msgstr "Laguna zerrendan gehitu nahi duzu?"
+
+#, fuzzy
+msgid "Enter answer here"
+msgstr "Sartu erabiltzailearen direktorioa"
+
#, fuzzy
msgid "Send"
msgstr "_Bidali"
@@ -7561,19 +7779,20 @@ msgstr "Pasahitz baliogabea"
msgid "Authorization denied message:"
msgstr "Baimena ezesteko mezua:"
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr ""
#, fuzzy, c-format
-msgid "%d needs authentication"
+msgid "%u needs authorization"
msgstr "Autentifikazioa haiseratzen"
#, fuzzy
msgid "Add buddy authorize"
msgstr "Laguna zerrendan gehitu nahi duzu?"
-msgid "Input request here"
-msgstr ""
+#, fuzzy
+msgid "Enter request here"
+msgstr "Sartu konferentzia-zerbitzari bat"
#, fuzzy
msgid "Would you be my friend?"
@@ -7596,7 +7815,7 @@ msgid "Failed sending authorize"
msgstr "Emadazu baimena!"
#, fuzzy, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr "Huts egin du berriketako lagunarekin elkartzean"
#, fuzzy, c-format
@@ -7642,6 +7861,10 @@ msgid "You can only search for permanent Qun\n"
msgstr ""
#, fuzzy
+msgid "(Invalid UTF-8 string)"
+msgstr "Proxy-ezarpenak ez dira baliozkoak"
+
+#, fuzzy
msgid "Not member"
msgstr "Noiztik kidea"
@@ -7686,15 +7909,18 @@ msgstr ""
msgid "Join QQ Qun"
msgstr "Sartu berriketa batean"
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
+msgid "Input request here"
msgstr ""
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "Telefono zenbakia"
+
msgid "Successfully joined Qun"
msgstr ""
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
#, fuzzy
@@ -7705,7 +7931,7 @@ msgstr "Soinu-aukerak"
msgid "Failed:"
msgstr "Huts egin du"
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
#, fuzzy
@@ -7717,11 +7943,11 @@ msgid ""
"this operation will eventually remove this Qun."
msgstr ""
-msgid "Sorry, you are not our style ..."
+msgid "Sorry, you are not our style"
msgstr ""
#, fuzzy
-msgid "Successfully changed Qun member"
+msgid "Successfully changed Qun members"
msgstr "Telefono zenbakia"
#, fuzzy
@@ -7732,7 +7958,7 @@ msgid "You have successfully created a Qun"
msgstr ""
#, fuzzy
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr "Ikono hau lagunaren ikono bezela ezartzea gustatuko litzaizuke ?"
#, fuzzy
@@ -7740,28 +7966,28 @@ msgid "Setup"
msgstr "_Ezarri"
#, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr ""
#, c-format
-msgid "%d request to join Qun %d"
+msgid "%u request to join Qun %u"
msgstr ""
#, fuzzy, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr "Huts egin du berriketako lagunarekin elkartzean"
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr "Kendu laguna"
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "Kendu laguna"
#, fuzzy, c-format
msgid "Unknown-%d"
@@ -7882,6 +8108,13 @@ msgstr "<b>Erabiltzailea:</b> %s<br>"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<b>Taldearen titulua:</b> %s<br>"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<b>Kanpoko Erabiltzailea:</b><br>"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7889,7 +8122,7 @@ msgid "<i>Feel free to join us!</i> :)"
msgstr ""
#, fuzzy, c-format
-msgid "About OpenQ r%s"
+msgid "About OpenQ %s"
msgstr "Pidgin-i buruz"
#, fuzzy
@@ -7910,6 +8143,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "Pidgin-i buruz"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Etxeko helbidea"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7941,7 +8178,6 @@ msgstr ""
msgid "QQ2008"
msgstr ""
-#. #endif
#, fuzzy
msgid "Connect by TCP"
msgstr "Konektatzen"
@@ -7954,6 +8190,9 @@ msgstr "Zerbitzariaren ataka"
msgid "Show server news"
msgstr "Zerbitzariaren helbidea"
+msgid "Show chat room when msg comes"
+msgstr ""
+
#, fuzzy
msgid "Keep alive interval (seconds)"
msgstr "Irakurketa-errorea"
@@ -7963,11 +8202,7 @@ msgid "Update interval (seconds)"
msgstr "Irakurketa-errorea"
#, fuzzy
-msgid "Can not decrypt server reply"
-msgstr "Ezin da zerbitzariaren informazioa hartu"
-
-#, fuzzy
-msgid "Can not decrypt get server reply"
+msgid "Cannot decrypt server reply"
msgstr "Ezin da zerbitzariaren informazioa hartu"
#, c-format
@@ -7990,21 +8225,23 @@ msgid "Activation required"
msgstr "Erregistratu egin behar da"
#, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr ""
#, fuzzy
-msgid "Keep alive error"
-msgstr "Irakurketa-errorea"
+msgid "Could not decrypt server reply"
+msgstr "Ezin da zerbitzariaren informazioa hartu"
-msgid "Requesting captcha ..."
-msgstr ""
+#, fuzzy
+msgid "Requesting captcha"
+msgstr "Eskaera Elkarrizketa"
-msgid "Checking code of captcha ..."
+msgid "Checking captcha"
msgstr ""
-msgid "Failed captcha verify"
-msgstr ""
+#, fuzzy
+msgid "Failed captcha verification"
+msgstr "Huts egin du Yahoo! autentifikazioak"
#, fuzzy
msgid "Captcha Image"
@@ -8014,7 +8251,7 @@ msgstr "Gorde irudia"
msgid "Enter code"
msgstr "Sartu Pasahitza"
-msgid "QQ Captcha Verifing"
+msgid "QQ Captcha Verification"
msgstr ""
#, fuzzy
@@ -8022,16 +8259,15 @@ msgid "Enter the text from the image"
msgstr "Idatzi gehitu nahi duzun taldearen izena."
#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
+msgid "Unknown reply when checking password (0x%02X)"
msgstr ""
#, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
msgstr ""
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "Ezin da konektatu."
@@ -8039,12 +8275,6 @@ msgstr "Ezin da konektatu."
msgid "Socket error"
msgstr "Testigu errorea"
-#, fuzzy, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr "Zerbitzaritik deskonektatuta zaude."
-
#, fuzzy
msgid "Unable to read from socket"
msgstr "Ezin da socket-a irakurri"
@@ -8057,11 +8287,11 @@ msgid "Connection lost"
msgstr "Konexioa itxi da"
#, fuzzy
-msgid "Get server ..."
+msgid "Getting server"
msgstr "Ezarri erabiltzailearen datuak..."
#, fuzzy
-msgid "Request token"
+msgid "Requesting token"
msgstr "Eskaera ukatu da"
# ,fuzzy
@@ -8073,17 +8303,13 @@ msgid "Invalid server or port"
msgstr "Erabiltzaile-izena edo pasahitza ez da baliozkoa."
#, fuzzy
-msgid "Connecting server ..."
-msgstr "Konektatu zerbitzariarekin"
+msgid "Connecting to server"
+msgstr "SILC zerbitzariarekin konektatzen"
#, fuzzy
msgid "QQ Error"
msgstr "Irakurketa-errorea"
-#, fuzzy
-msgid "Failed to send IM."
-msgstr "Huts egin du berriketan sartzean"
-
#, fuzzy, c-format
msgid ""
"Server News:\n"
@@ -8093,6 +8319,10 @@ msgid ""
msgstr "ICQ zerbitzariaren errelea"
#, fuzzy, c-format
+msgid "%s:%s"
+msgstr "%s: %s (%s)"
+
+#, fuzzy, c-format
msgid "From %s:"
msgstr "Nork"
@@ -8102,32 +8332,30 @@ msgid ""
"%s"
msgstr "Zerbitzariaren aginduak:%s"
-msgid "Unknow SERVER CMD"
-msgstr ""
+#, fuzzy
+msgid "Unknown SERVER CMD"
+msgstr "Arrazoi ezezaguna."
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
#, fuzzy
msgid "QQ Qun Command"
msgstr "Komandoa"
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr ""
-
-msgid "Can not decrypt login reply"
-msgstr ""
+#, fuzzy
+msgid "Could not decrypt login reply"
+msgstr "Ezin da zerbitzariaren informazioa hartu"
#, fuzzy
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr "Arrazoi ezezaguna."
#, fuzzy
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr "Arrazoi ezezaguna."
#, fuzzy, c-format
@@ -8967,9 +9195,6 @@ msgstr "Erakundea"
msgid "Unit"
msgstr "Saila"
-msgid "Note"
-msgstr "Oharra"
-
msgid "Join Chat"
msgstr "Sartu berriketa batean"
@@ -9643,6 +9868,10 @@ msgstr "Ezin izan da ostalaria"
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr "SIP goitizenek ezin dute zurigunerik izan edo @ ikurra"
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "Zerbitzariaren ataka"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -9679,199 +9908,10 @@ msgid "Auth Domain"
msgstr "Automatikoa"
#, c-format
-msgid "Looking up %s"
-msgstr "%s bilatzen"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Huts egin du %s konexioak"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Konektatuta: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "Ezin da %s fitxategian idatzi"
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "Ezin da %s fitxategia irakurri."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "Mezua luzeegia, azken %s byteak trunkatu egin dira."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s ez dago une honetan konektatuta."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "%s erabiltzailearen abisua ez da onartzen."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "Mezu bat jaregin da, zerbitzariaren abiadura-muga gainditu duzu."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "%s(e)ko berriketa ez dago erabilgarri."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "Mezuak bizkorregi bidaltzen ari zara -> %s."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "%s erabiltzailearen BM bat ez zaizu heldu, handiegia delako."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "%s erabiltzailearen BM bat ez zaizu heldu, bizkorregi bidali delako."
-
-#, c-format
-msgid "Failure."
-msgstr "Huts egin du."
-
-#, c-format
-msgid "Too many matches."
-msgstr "Emaitza gehiegi."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "Identifikatzaile gehiago behar dira."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "Dir zerbitzua ez dago erabilgarri une honetan."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "Helbide elektronikoaren bilaketa murriztu da. "
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "Gako-hitza ez ikusi egin da."
-
-#, c-format
-msgid "No keywords."
-msgstr "Gako-hitzik ez."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "Erabiltzaileak ez du direktorio-informaziorik."
-
-#, c-format
-msgid "Country not supported."
-msgstr "Estatua ez da onartzen."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Hutsegite ezezaguna: %s."
-
-#, fuzzy, c-format
-msgid "Incorrect username or password."
-msgstr "Goitizen edo pasahitz okerra."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "Zerbitzua ez dago erabilgarri une honetan."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "Zure abisu-maila altuegia da konektatu ahal izateko."
-
-#, 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 ""
-"Maizegi konektatzen eta deskonektatzen aritu zara. Itxaron hamar minutu eta "
-"saiatu berriro. Saiatzen jarraituz gero, agian gehiago ere itxaron beharko "
-"duzu."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "Sartzeko errore ezezagun bat gertatu da: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "Errore ezezagun bat (%d) gertatu da. Informazioa: %s."
-
-msgid "Invalid Groupname"
-msgstr "Talde-izena ez da baliozkoa"
-
-msgid "Connection Closed"
-msgstr "Konexioa itxi da"
-
-msgid "Waiting for reply..."
-msgstr "Erantzunaren zain..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "TOC itzuli da pausalditik. Mezuak bidal diezazkiokezu."
-
-msgid "Password Change Successful"
-msgstr "Pasahitza ondo aldatu da"
-
-msgid "_Group:"
-msgstr "_Taldea:"
-
-msgid "Get Dir Info"
-msgstr "Hartu Dir informazioa"
-
-msgid "Set Dir Info"
-msgstr "Ezarri Dir informazioa"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "Ezin izan da %s ireki idazteko!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr ""
-"Fitxategi-transferentziak huts egin du; beste aldekoak beharbada bertan "
-"behera utziko zuen."
-
-msgid "Could not connect for transfer."
-msgstr "Ezin izan da konektatu transferentzia egiteko."
-
-msgid "Could not write file header. The file will not be transferred."
+msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
-"Ezin izan da idatzi fitxategi-goiburua. Fitxategia ez da transferituko."
-
-#, fuzzy
-msgid "Save As..."
-msgstr "Gorde ikonoa honela..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] ""
-"%1$s(e)k fitxategi %3$d onartzea eskatu dio %2$s(r)i: %4$s (%5$.2f %6$s)%7$s%"
-"8$s"
-msgstr[1] ""
-"%1$s(e)k %3$d fitxategi onartzea eskatu dio %2$s(r)i: %4$s (%5$.2f %6$s)%7$s%"
-"8$s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s erabiltzaileak fitxategi bat bidaltzea eskatu dizu"
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "TOC protokoloaren plugin-a"
-
-#, c-format
-msgid "%s has sent you a webcam invite, which is not yet supported."
+msgid "Your SMS was not delivered"
msgstr ""
msgid "Your Yahoo! message did not get sent."
@@ -9905,8 +9945,8 @@ msgid ""
"Check %s for updates."
msgstr ""
"Yahoo zerbitzariak autentifikatzeko metodo ezezagun bat erabiltzea eskatu "
-"du. Pidgin-en bertsio hau ez da gai izango Yahoo-n ondo sartzeko. Eguneratzeak "
-"lortzeko, begiratu %s gunean."
+"du. Pidgin-en bertsio hau ez da gai izango Yahoo-n ondo sartzeko. "
+"Eguneratzeak lortzeko, begiratu %s gunean."
msgid "Failed Yahoo! Authentication"
msgstr "Huts egin du Yahoo! autentifikazioak"
@@ -10150,13 +10190,9 @@ msgstr "Esteka bikaina 3"
msgid "Last Update"
msgstr "Azken eguneratzea "
-#, c-format
-msgid "User information for %s unavailable"
-msgstr "%s erabiltzailearen datuak ez daude erabilgarri"
-
+#, fuzzy
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr ""
"Badirudi profila hau oraingoz onartzen ez den hizkuntza edo formatuan batean "
"dagoela dirudi."
@@ -10498,9 +10534,6 @@ msgstr "Ez molestatu"
msgid "Extended away"
msgstr "Kanpoan luzarorako"
-msgid "Mobile"
-msgstr "Mugikorra"
-
msgid "Listening to music"
msgstr ""
@@ -10542,18 +10575,6 @@ msgstr "+++ %s aktibo dago berriro"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "Errorea %s irakurtzean"
-
-#, 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 ""
-"Errore bat aurkitu da %s zerrenda analizatzean, eta ez da kargatu.Fitxategi "
-"zaharra %s~ izenarekin gorde da."
-
msgid "Calculating..."
msgstr "Kalkulatzen..."
@@ -10628,6 +10649,13 @@ msgstr ""
msgid "Unable to connect to %s: %s"
msgstr "Ezin da ostalariarekin konektatu"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+"Zerbitzariak TLS/SSL behar du konektatzeko. Ez da TLS/SSL euskarririk aurkitu"
+
#, c-format
msgid " - %s"
msgstr ""
@@ -10661,6 +10689,18 @@ msgstr "Konexioa berabierazten "
msgid "Address already in use."
msgstr "Berriketa honen izena dagoeneko erabiltzen ari da"
+#, c-format
+msgid "Error Reading %s"
+msgstr "Errorea %s irakurtzean"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"Errore bat aurkitu da %s zerrenda analizatzean, eta ez da kargatu.Fitxategi "
+"zaharra %s~ izenarekin gorde da."
+
msgid "Internet Messenger"
msgstr "Interneteko mezularitza"
@@ -10708,10 +10748,8 @@ msgstr "Mezu berrien jakinarazpenak"
msgid "Use this buddy _icon for this account:"
msgstr ""
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s - Aukerak"
+msgid "_Advanced"
+msgstr "_Aurreratua"
#, fuzzy
msgid "Use GNOME Proxy Settings"
@@ -10747,9 +10785,6 @@ msgstr "oso bertatik begiratzen baduzu"
msgid "you can see the butterflies mating"
msgstr "tximeletak elkarrenganatzen ikusiko dituzu"
-msgid "Proxy Options"
-msgstr "Proxy aukerak"
-
msgid "Proxy _type:"
msgstr "_Proxy-mota:"
@@ -10778,8 +10813,9 @@ msgstr "_OInarrizkoa"
msgid "Create _this new account on the server"
msgstr ""
-msgid "_Advanced"
-msgstr "_Aurreratua"
+#, fuzzy
+msgid "_Proxy"
+msgstr "Proxy-a"
msgid "Enabled"
msgstr "Ahalbidetua"
@@ -10845,6 +10881,17 @@ msgid "I_M"
msgstr "_BM"
#, fuzzy
+msgid "_Audio Call"
+msgstr "_Gehitu berriketa"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Bideo-berriketa"
+
+#, fuzzy
msgid "_Send File..."
msgstr "_Bidali fitxategia"
@@ -10997,6 +11044,10 @@ msgstr "/Tresnak/Gehitu lagun-_alerta"
msgid "/Tools/_Certificates"
msgstr "/Tresnak/_Hobespenak"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Tresnak/Pribatutasuna"
+
msgid "/Tools/Plu_gins"
msgstr "/Tresnak/Plu_gin-ak"
@@ -11006,10 +11057,6 @@ msgstr "/Tresnak/_Hobespenak"
msgid "/Tools/Pr_ivacy"
msgstr "/Tresnak/P_ribatutasuna"
-#, fuzzy
-msgid "/Tools/Smile_y"
-msgstr "/Tresnak/Pribatutasuna"
-
msgid "/Tools/_File Transfers"
msgstr "/Tresnak/_Fitxategi-transferentziak"
@@ -11134,8 +11181,8 @@ msgstr "Eskuz "
msgid "By status"
msgstr "Egoeraren arabera"
-msgid "By log size"
-msgstr "Egunkari-tamainaren arabera"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -11153,6 +11200,9 @@ msgstr "Konektatu"
msgid "Re-enable"
msgstr "Ber ahalbidetu kontua"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr ""
@@ -11246,6 +11296,9 @@ msgstr ""
msgid "A_lias:"
msgstr "Aliasa:"
+msgid "_Group:"
+msgstr "_Taldea:"
+
msgid "Auto_join when account becomes online."
msgstr ""
@@ -11298,14 +11351,6 @@ msgstr "Ez duzu sinatu kontu batekin lagun hori gonbidatzeko."
msgid "Invite Buddy Into Chat Room"
msgstr "Gonbidatu laguna berriketa-gelara"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Idatzi gonbidatu nahi duzun erabiltzailearen izena, gonbit-mezu batekin nahi "
-"baduzu."
-
msgid "_Buddy:"
msgstr "_Laguna:"
@@ -11382,6 +11427,22 @@ msgstr "/Solasaldia/_Gorde honela..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Solasaldia/Garb_itu Scrollback"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Solasaldia/It_xi"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Solasaldia/It_xi"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Solasaldia/It_xi"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Solasaldia/Ikusi _egunkaria"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Solasaldia/B_idali fitxategia..."
@@ -11459,6 +11520,18 @@ msgstr "/_Solasaldia"
msgid "/Conversation/View Log"
msgstr "/Solasaldia/Ikusi egunkaria"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Solasaldia/It_xi"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Solasaldia/Ikusi egunkaria"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Solasaldia/It_xi"
+
msgid "/Conversation/Send File..."
msgstr "/Solasaldia/Bidali fitxategia..."
@@ -11649,6 +11722,9 @@ msgstr "Helbidea"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "euskarria"
@@ -11797,6 +11873,10 @@ msgid "Ubuntu Georgian Translators"
msgstr "Itzultzaileak"
#, fuzzy
+msgid "Khmer"
+msgstr "Opera"
+
+#, fuzzy
msgid "Kannada"
msgstr "Debekatuta"
@@ -11819,6 +11899,10 @@ msgid "Macedonian"
msgstr "Mazedoniera"
#, fuzzy
+msgid "Mongolian"
+msgstr "Mazedoniera"
+
+#, fuzzy
msgid "Bokmål Norwegian"
msgstr "Norvegiera"
@@ -11937,8 +12021,25 @@ msgstr ""
"laguntzaileen eskutik. Ikusi ezazy COPYRIGHT fitxategia laguntzaileen "
"zerrenda osoa ikusteko. Ez dugu programa honen bermea zihurtatzen.<BR><BR>"
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, fuzzy, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"4\">IRC:</FONT> #Pidgin irc.freenode.net-en<BR><BR>"
+
#, fuzzy, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"4\">IRC:</FONT> #Pidgin irc.freenode.net-en<BR><BR>"
msgid "Current Developers"
@@ -12264,15 +12365,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr "Mezu berrien jakinarazpenak"
-msgid "_Copy Email Address"
-msgstr "_Kopiatu helbide elektronikoa"
-
-msgid "_Open Link in Browser"
-msgstr "Ire_ki esteka arakatzailean"
-
-msgid "_Copy Link Location"
-msgstr "_Kopiatu estekaren helbidea"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12547,6 +12639,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12575,6 +12668,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12617,11 +12711,27 @@ msgstr ""
msgid "Pidgin"
msgstr "Markatzea"
-msgid "Open All Messages"
-msgstr "Ireki mezu guztiak"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Posta-mezua daukazu!</span>"
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "Kalkulatzen..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -12652,6 +12762,27 @@ msgstr ""
"Arakatzailearen 'eskuzko' komandoa aukeratu da, baina ez da komandorik "
"ezarri."
+msgid "Open All Messages"
+msgstr "Ireki mezu guztiak"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Posta-mezua daukazu!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "Lagun-alerta berria"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Posta-mezua daukazu!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "Mezu ezezaguna"
+
msgid "The following plugins will be unloaded."
msgstr "Ondorengo plugin-ak memoriatik deskargatuko dira."
@@ -12704,6 +12835,10 @@ msgstr "<b>Plugin ezaugarriak</b>"
msgid "Select a file"
msgstr "Hautatu fitxategia"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Editatu lagun-alerta"
+
#. Create the "Pounce on Whom" frame.
#, fuzzy
msgid "Pounce on Whom"
@@ -12778,6 +12913,50 @@ msgstr "_Errepikatzean"
msgid "Pounce Target"
msgstr "Alerta noiz"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "_Idazten hastean"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "Erabiltzailea idazten ari da..."
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "_Konektatzean "
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s inaktibo egotetik itzuli da (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "J_oanda egoeratik itzuli"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "Gelditu idazteari"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "_Deskonektzean "
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "Bihurtu ez-aktibo"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "Kanpora joatean"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Bidali _mezua"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "Alerta emateko gertaera ezezaguna. Eman honen berri!"
+
msgid "Smiley theme failed to unpack."
msgstr "desenpetatzerakoan huts egin du."
@@ -12801,6 +12980,12 @@ msgstr ""
msgid "Cl_ose conversations with the Escape key"
msgstr "Solasaldiak %s(r)ekin"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Lagunen zerrenda"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "Sistema-erretiluaren ikonoa"
@@ -12923,9 +13108,6 @@ msgstr ""
msgid "Cannot start browser configuration program."
msgstr "Ezin da erabiltzailearen informazioa lortu"
-msgid "ST_UN server:"
-msgstr "ST_UN Zerbitzaria:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr ""
@@ -12950,6 +13132,10 @@ msgstr "_Hasierako ataka: "
msgid "_End port:"
msgstr "_Amaierako ataka: "
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
#, fuzzy
msgid "Proxy Server &amp; Browser"
msgstr "Proxy zerbitzaria"
@@ -12979,6 +13165,10 @@ msgstr "Proxy zerbitzaria"
msgid "No proxy"
msgstr "Proxy-rik ez"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "_Erabiltzailea:"
@@ -13143,13 +13333,13 @@ msgstr "Bai Kanpoan eta inaktibo dagoenean"
msgid "Auto-away"
msgstr "Kanpoan automatikoki ezartzea"
-msgid "Change status when _idle"
-msgstr "Egoera aldatu _ez-aktibo dagoenean"
-
#, fuzzy
msgid "_Minutes before becoming idle:"
msgstr "_Egoera aldatu aurreko minutuak:"
+msgid "Change status when _idle"
+msgstr "Egoera aldatu _ez-aktibo dagoenean"
+
msgid "Change _status to:"
msgstr "_Egoera aldatu hona:"
@@ -13303,6 +13493,12 @@ msgstr "G_orde eta erabili"
msgid "Status for %s"
msgstr "Egoera : %s rako."
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
#, fuzzy
msgid "Custom Smiley"
msgstr "Txertatu aurpegiera"
@@ -13313,15 +13509,15 @@ msgstr ""
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
+msgstr ""
+
#, fuzzy
msgid "Duplicate Shortcut"
msgstr "Bikoiztutako zuzenketa"
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
-msgstr ""
-
#, fuzzy
msgid "Please select an image for the smiley."
msgstr "Erabili egoera _ezbedinak kontu batzuentzat"
@@ -13335,17 +13531,22 @@ msgid "Add Smiley"
msgstr "Irri egin!"
#, fuzzy
-msgid "Smiley _Image"
+msgid "_Image:"
msgstr "Gorde irudia"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr ""
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "Ataka"
#, fuzzy
msgid "Smiley"
msgstr "Irri egin!"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "Ataka"
+
msgid "Custom Smiley Manager"
msgstr ""
@@ -13476,6 +13677,16 @@ msgid ""
"Failed to load image '%s': reason not known, probably a corrupt image file"
msgstr ""
+#, fuzzy
+msgid "_Open Link"
+msgstr "_Ireki esteka:"
+
+msgid "_Copy Link Location"
+msgstr "_Kopiatu estekaren helbidea"
+
+msgid "_Copy Email Address"
+msgstr "_Kopiatu helbide elektronikoa"
+
msgid "Save File"
msgstr "Gorde fitxategia"
@@ -14485,10 +14696,6 @@ msgid "Only when docked"
msgstr "Bakarrik geldiunean"
#, fuzzy
-msgid "_Flash window when chat messages are received"
-msgstr "_Erakutsi leihoa keinuka mezuak jasotzean"
-
-#, fuzzy
msgid "Windows Pidgin Options"
msgstr "Saioa hasteko aukerak"
@@ -14500,8 +14707,8 @@ msgstr "Windows Pidgin-i bakarrik dagozkion aukerak."
msgid ""
"Provides options specific to Pidgin for Windows , such as buddy list docking."
msgstr ""
-"Pidgin Windows-en ezarpenak zehazteko aukera eskeintzen du, hala nola lagunen-"
-"zerrenda gelditzea eta elkarrizketa kinuak."
+"Pidgin Windows-en ezarpenak zehazteko aukera eskeintzen du, hala nola "
+"lagunen-zerrenda gelditzea eta elkarrizketa kinuak."
msgid "<font color='#777777'>Logged out.</font>"
msgstr ""
@@ -14543,6 +14750,232 @@ msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr ""
#, fuzzy
+#~ msgid "Invite message"
+#~ msgstr "Txertatu irudia mezuan"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Idatzi gonbidatu nahi duzun erabiltzailearen izena, gonbit-mezu batekin "
+#~ "nahi baduzu."
+
+#, fuzzy
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "Gehitu helbide-liburuan oharretan"
+
+#~ msgid ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+#~ msgstr ""
+#~ "Laster deskonektatuta greatzeko arriskua duzu. TOC erabil dezakezu arazoa "
+#~ "konpondu arte. Bilatu eguneratzeak %s gunean."
+
+#, fuzzy
+#~ msgid "Add buddy Q&A"
+#~ msgstr "Gehitu laguna"
+
+#, fuzzy
+#~ msgid "Can not decrypt get server reply"
+#~ msgstr "Ezin da zerbitzariaren informazioa hartu"
+
+#, fuzzy
+#~ msgid "Keep alive error"
+#~ msgstr "Irakurketa-errorea"
+
+#, fuzzy
+#~ msgid ""
+#~ "Lost connection with server:\n"
+#~ "%d, %s"
+#~ msgstr "Zerbitzaritik deskonektatuta zaude."
+
+#, fuzzy
+#~ msgid "Connecting server ..."
+#~ msgstr "Konektatu zerbitzariarekin"
+
+#, fuzzy
+#~ msgid "Failed to send IM."
+#~ msgstr "Huts egin du berriketan sartzean"
+
+#~ msgid "Looking up %s"
+#~ msgstr "%s bilatzen"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "Huts egin du %s konexioak"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Konektatuta: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "Ezin da %s fitxategian idatzi"
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "Ezin da %s fitxategia irakurri."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "Mezua luzeegia, azken %s byteak trunkatu egin dira."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s ez dago une honetan konektatuta."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "%s erabiltzailearen abisua ez da onartzen."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr "Mezu bat jaregin da, zerbitzariaren abiadura-muga gainditu duzu."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "%s(e)ko berriketa ez dago erabilgarri."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "Mezuak bizkorregi bidaltzen ari zara -> %s."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "%s erabiltzailearen BM bat ez zaizu heldu, handiegia delako."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr ""
+#~ "%s erabiltzailearen BM bat ez zaizu heldu, bizkorregi bidali delako."
+
+#~ msgid "Failure."
+#~ msgstr "Huts egin du."
+
+#~ msgid "Too many matches."
+#~ msgstr "Emaitza gehiegi."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "Identifikatzaile gehiago behar dira."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "Dir zerbitzua ez dago erabilgarri une honetan."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "Helbide elektronikoaren bilaketa murriztu da. "
+
+#~ msgid "Keyword ignored."
+#~ msgstr "Gako-hitza ez ikusi egin da."
+
+#~ msgid "No keywords."
+#~ msgstr "Gako-hitzik ez."
+
+#~ msgid "User has no directory information."
+#~ msgstr "Erabiltzaileak ez du direktorio-informaziorik."
+
+#~ msgid "Country not supported."
+#~ msgstr "Estatua ez da onartzen."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Hutsegite ezezaguna: %s."
+
+#, fuzzy
+#~ msgid "Incorrect username or password."
+#~ msgstr "Goitizen edo pasahitz okerra."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "Zerbitzua ez dago erabilgarri une honetan."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "Zure abisu-maila altuegia da konektatu ahal izateko."
+
+#~ 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 ""
+#~ "Maizegi konektatzen eta deskonektatzen aritu zara. Itxaron hamar minutu "
+#~ "eta saiatu berriro. Saiatzen jarraituz gero, agian gehiago ere itxaron "
+#~ "beharko duzu."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "Sartzeko errore ezezagun bat gertatu da: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "Errore ezezagun bat (%d) gertatu da. Informazioa: %s."
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "Talde-izena ez da baliozkoa"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Konexioa itxi da"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "Erantzunaren zain..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "TOC itzuli da pausalditik. Mezuak bidal diezazkiokezu."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "Pasahitza ondo aldatu da"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Hartu Dir informazioa"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Ezarri Dir informazioa"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "Ezin izan da %s ireki idazteko!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr ""
+#~ "Fitxategi-transferentziak huts egin du; beste aldekoak beharbada bertan "
+#~ "behera utziko zuen."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "Ezin izan da konektatu transferentzia egiteko."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr ""
+#~ "Ezin izan da idatzi fitxategi-goiburua. Fitxategia ez da transferituko."
+
+#, fuzzy
+#~ msgid "Save As..."
+#~ msgstr "Gorde ikonoa honela..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] ""
+#~ "%1$s(e)k fitxategi %3$d onartzea eskatu dio %2$s(r)i: %4$s (%5$.2f %6$s)%7"
+#~ "$s%8$s"
+#~ msgstr[1] ""
+#~ "%1$s(e)k %3$d fitxategi onartzea eskatu dio %2$s(r)i: %4$s (%5$.2f %6$s)%7"
+#~ "$s%8$s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s erabiltzaileak fitxategi bat bidaltzea eskatu dizu"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "TOC protokoloaren plugin-a"
+
+#~ msgid "User information for %s unavailable"
+#~ msgstr "%s erabiltzailearen datuak ez daude erabilgarri"
+
+#~ msgid "%s Options"
+#~ msgstr "%s - Aukerak"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Proxy aukerak"
+
+#~ msgid "By log size"
+#~ msgstr "Egunkari-tamainaren arabera"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "Ire_ki esteka arakatzailean"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "ST_UN Zerbitzaria:"
+
+#, fuzzy
+#~ msgid "Smiley _Image"
+#~ msgstr "Gorde irudia"
+
+#, fuzzy
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "_Erakutsi leihoa keinuka mezuak jasotzean"
+
+#, fuzzy
#~ msgid "A group with the name already exists."
#~ msgstr "Direktorio hori badago"
@@ -14607,13 +15040,6 @@ msgstr ""
#~ msgstr "Ziur zaude %s ezabatu nahi duzula?"
#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr "%s: %s (%s)"
-
-#, fuzzy
#~ msgid "System Message"
#~ msgstr "Sistemaren egunkaria"
@@ -14690,7 +15116,8 @@ msgstr ""
#~ msgid ""
#~ "You are using %s version %s. The current version is %s. You can get it "
#~ "from <a href=\"%s\">%s</a><hr>"
-#~ msgstr "Pidgin-en %s bertsioa erabiltzen ari zara. Azken bertsioa %s da.<hr>"
+#~ msgstr ""
+#~ "Pidgin-en %s bertsioa erabiltzen ari zara. Azken bertsioa %s da.<hr>"
#, fuzzy
#~ msgid "<b>ChangeLog:</b><br>%s"
@@ -15005,8 +15432,8 @@ msgstr ""
#~ "You can get version %s from:<br><a href=\"http://Pidgin.sourceforge.net/"
#~ "\">http://Pidgin.sourceforge.net</a>."
#~ msgstr ""
-#~ "%s bertsioa lortzeko:<br><a href=\"http://Pidgin.sourceforge.net/\">http://"
-#~ "Pidgin.sourceforge.net</a>."
+#~ "%s bertsioa lortzeko:<br><a href=\"http://Pidgin.sourceforge.net/"
+#~ "\">http://Pidgin.sourceforge.net</a>."
#~ msgid "Delay"
#~ msgstr "Atzerapena"
@@ -15423,12 +15850,13 @@ msgstr ""
#~ msgid ""
#~ "When this happens, TOC ignores any messages sent to it, and may kick you "
-#~ "off if you send a message. Pidgin will prevent anything from going through. "
-#~ "This is only temporary, please be patient."
+#~ "off if you send a message. Pidgin will prevent anything from going "
+#~ "through. This is only temporary, please be patient."
#~ msgstr ""
#~ "Hori gertatzen denean, TOCek ez ikusi egiten die, bidalitako mezu guztiei "
-#~ "eta beharbada kanporatu egingo zaitu mezurik bidaliz gero. Pidgin-ek bidali "
-#~ "edo jasotzea eragotziko du. Aldi baterako bakarrik izango da, itxaron."
+#~ "eta beharbada kanporatu egingo zaitu mezurik bidaliz gero. Pidgin-ek "
+#~ "bidali edo jasotzea eragotziko du. Aldi baterako bakarrik izango da, "
+#~ "itxaron."
#~ msgid "Pidgin - Save As..."
#~ msgstr "Pidgin - Gorde honela..."
@@ -15442,13 +15870,13 @@ msgstr ""
#~ msgid ""
#~ "The normal authentication method has failed. This means either your "
#~ "password is incorrect, or Yahoo!'s authentication scheme has changed. "
-#~ "Pidgin will now attempt to log in using Web Messenger authentication, which "
-#~ "will result in reduced functionality and features."
+#~ "Pidgin will now attempt to log in using Web Messenger authentication, "
+#~ "which will result in reduced functionality and features."
#~ msgstr ""
#~ "Autentifikazio metodo normalak huts egin du. Zure pasahitza okerra izan "
-#~ "daiteke, edo Yahoo-ren autentifikazio eskema aldatu egin da. Pidgin-ek Web "
-#~ "Messenger erabiliz konektatzen saiatuko da, funtzionalitate eta ezaugarri "
-#~ "murrituagoak dituelarik."
+#~ "daiteke, edo Yahoo-ren autentifikazio eskema aldatu egin da. Pidgin-ek "
+#~ "Web Messenger erabiliz konektatzen saiatuko da, funtzionalitate eta "
+#~ "ezaugarri murrituagoak dituelarik."
#~ msgid "Unable to read"
#~ msgstr "Ezin da irakurri"
diff --git a/po/fa.po b/po/fa.po
index d25a930ca3..f1697a1086 100644
--- a/po/fa.po
+++ b/po/fa.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin 1.5.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
+"POT-Creation-Date: 2009-04-30 10:38-0400\n"
"PO-Revision-Date: 2007-04-10 20:37+0330\n"
"Last-Translator: Elnaz Sarbar <elnaz@farsiweb.info>\n"
"Language-Team: Persian\n"
@@ -27,13 +27,13 @@ msgstr "فرانسوی"
msgid "%s. Try `%s -h' for more information.\n"
msgstr "%s. Try `%s -h' for more information.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -620,21 +620,6 @@ msgid "Send To"
msgstr "_فرستادن به"
#, fuzzy
-msgid "Invite message"
-msgstr "پیغامِ تَرک"
-
-msgid "Invite"
-msgstr "دعوت"
-
-#, fuzzy
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"لطفاً نام کاربری را که مایلید از او دعوت کنید، در صورت تمایل همراه با پیغام "
-"دعوت‌نامه، وارد کنید."
-
-#, fuzzy
msgid "Conversation"
msgstr "گفتگوها"
@@ -892,6 +877,42 @@ msgstr "گفتگوها"
msgid "System Log"
msgstr "تاریخچهٔ سیستم"
+#, fuzzy
+msgid "Calling ... "
+msgstr "در حال محاسبه"
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+#, fuzzy
+msgid "Accept"
+msgstr "_پذیرش"
+
+msgid "Reject"
+msgstr "رد"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "شما کانال %s%s را ترک کردید"
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "پست‌ الکترونیکی"
@@ -925,6 +946,9 @@ msgstr "ادامه"
msgid "IM"
msgstr "پیغام اینترنتی"
+msgid "Invite"
+msgstr "دعوت"
+
msgid "(none)"
msgstr "(هیچکدام)"
@@ -1133,7 +1157,6 @@ msgstr "‏%s جایی رفته است. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "‏%s برای شما پیغامی فرستاده است. (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "رویداد کمین نامعلوم. لطفاً این را گزارش کنید!"
@@ -1184,7 +1207,6 @@ msgstr "_تعداد دقایق تا تغییر وضعیت:"
msgid "Change status to"
msgstr "تغییر _وضعیت به:"
-#. Conversations
msgid "Conversations"
msgstr "گفتگوها"
@@ -1522,7 +1544,6 @@ msgstr ""
"هر وقت گفتگوی جدیدی باز می‌شود این متصل شونده آخرین گفتگو را در پنجرهٔ گفتگوی "
"فعلی درج خواهد کرد."
-#, c-format
msgid "Online"
msgstr "برخط"
@@ -1571,6 +1592,28 @@ msgstr ""
msgid "Lastlog plugin."
msgstr ""
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "نشانی اینترنتی"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "حساب‌ها"
@@ -1669,14 +1712,6 @@ msgstr "دعوت گپ را قبول می‌کنید؟"
msgid "SSL Certificate Verification"
msgstr ""
-#. Number of actions
-#, fuzzy
-msgid "Accept"
-msgstr "_پذیرش"
-
-msgid "Reject"
-msgstr "رد"
-
msgid "_View Certificate..."
msgstr ""
@@ -1813,6 +1848,18 @@ msgstr "‏%s از اتاق خارج شد."
msgid "%s left the room (%s)."
msgstr "‏%s از اتاق خارج شد (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "دعوت به کنفرانس"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"لطفاً نام کاربری را که مایلید از او دعوت کنید، در صورت تمایل همراه با پیغام "
+"دعوت‌نامه، وارد کنید."
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "ایجاد اتصال شکست خورد: %s"
@@ -1948,7 +1995,6 @@ msgstr "در حال آغاز انتقال پروندهٔ %s از %s"
msgid "Transfer of file %s complete"
msgstr "انتقال پروندهٔ %s انجام شد"
-#, c-format
msgid "File transfer complete"
msgstr "انتقال پرونده انجام شد"
@@ -1956,7 +2002,6 @@ msgstr "انتقال پرونده انجام شد"
msgid "You canceled the transfer of %s"
msgstr "شما از انتقال %s صرف نظر کردید"
-#, c-format
msgid "File transfer cancelled"
msgstr "از انتقال پرونده صرف نظر شد"
@@ -2145,7 +2190,6 @@ msgstr "(%s) %s <پاسخ خودکار>: %s\n"
msgid "You are using %s, but this plugin requires %s."
msgstr "شما از %s استفاده می‌کنید، اما این متصل‌شونده به %s نیاز دارد."
-#, c-format
msgid "This plugin has not defined an ID."
msgstr ""
@@ -2628,6 +2672,32 @@ msgstr ""
msgid "Do not ask. Always save in pounce."
msgstr ""
+#, fuzzy
+msgid "One Time Password"
+msgstr "گذرواژه را وارد کنید"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2835,7 +2905,6 @@ msgid ""
"Unable to establish connection with the local mDNS server. Is it running?"
msgstr "برقرار اتصال با کارگزار محلی mDNS ممکن نیست. آیا در حال اجراست؟"
-#. Creating the options for the protocol
msgid "First name"
msgstr "نام"
@@ -2869,6 +2938,11 @@ msgstr "متصل شوندهٔ قرارداد Bonjour"
msgid "Purple Person"
msgstr "شخص جدید"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "محله"
+
msgid "Bonjour"
msgstr "Bonjour"
@@ -3026,13 +3100,13 @@ msgstr "یک گپ برای رفیق انتخاب کنید: %s"
msgid "Add to chat..."
msgstr "اضافه کردن به گپ..."
+#. Global
msgid "Available"
msgstr "در دسترس"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "رفته"
@@ -3374,6 +3448,17 @@ msgstr ""
"نام حسابی که انتخاب کرده‌اید توسط کارگزار رد شد. این نام احتمالاً حاوی "
"نویسه‌های نامعتبر است."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "این نام گپ از قبل وجود دارد"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "لقب"
+
msgid "Cannot change nick"
msgstr "نمی‌توان لقب را عوض کرد"
@@ -3647,6 +3732,41 @@ msgstr "تقاضای نامعتبر از سوی کارگزار"
msgid "SASL error"
msgstr "خطای SASL"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "دلیلی ارائه نشد."
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "نسخهٔ پشتیبانی نشده"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"برقراری اتصال با کارگزار ممکن نیست.\n"
+"‏%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"برقراری اتصال با کارگزار ممکن نیست.\n"
+"‏%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "نمی‌توان اتصال ایجاد کرد"
+
+msgid "Unable to create socket"
+msgstr "ایجاد سوکت ممکن نیست"
+
+msgid "Write error"
+msgstr "خطای نوشتن"
+
msgid "Full Name"
msgstr "نام و نام خانوادگی"
@@ -3712,6 +3832,10 @@ msgstr "کارگیر"
msgid "Operating System"
msgstr "سیستم عامل"
+#, fuzzy
+msgid "Local Time"
+msgstr "پروندهٔ محلی:"
+
msgid "Last Activity"
msgstr ""
@@ -3948,7 +4072,6 @@ msgstr "پرچونه"
msgid "Extended Away"
msgstr "رفتهٔ بیشتر"
-#, c-format
msgid "Do Not Disturb"
msgstr "مزاحم نشوید"
@@ -4076,9 +4199,6 @@ msgstr "پیدا کردن اتاق‌ها"
msgid "You require encryption, but it is not available on this server."
msgstr ""
-msgid "Write error"
-msgstr "خطای نوشتن"
-
#, fuzzy
msgid "Ping timeout"
msgstr "متن ساده"
@@ -4088,14 +4208,9 @@ msgstr "خطای خواندن"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"برقراری اتصال با کارگزار ممکن نیست.\n"
-"‏%s"
-
-msgid "Unable to create socket"
-msgstr "ایجاد سوکت ممکن نیست"
#, fuzzy
msgid "Invalid XMPP ID"
@@ -4104,6 +4219,10 @@ msgstr "شناسهٔ نامعتبر"
msgid "Invalid XMPP ID. Domain must be set."
msgstr ""
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "اتصال به کارگزار شکست خورد."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "ثبت نام %s@%s موفقیت‌آمیز بود"
@@ -4197,9 +4316,18 @@ msgstr "تأیید هویت"
msgid "Re-initializing Stream"
msgstr "راه‌اندازی مجدد جریان"
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr "اجازه ندارد"
+msgid "Mood"
+msgstr "حال"
+
+msgid "Now Listening"
+msgstr ""
+
msgid "Both"
msgstr "هر دو"
@@ -4221,12 +4349,6 @@ msgstr "هیچ‌کدام"
msgid "Subscription"
msgstr "اشتراک"
-msgid "Mood"
-msgstr "حال"
-
-msgid "Now Listening"
-msgstr ""
-
#, fuzzy
msgid "Mood Text"
msgstr "گروه خون"
@@ -4471,18 +4593,24 @@ msgstr "نمی‌توان کاربر %s را بیرون انداخت"
msgid "Unable to ping user %s"
msgstr "نمی‌توان ورود کاربر %s را ممنوع کرد"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
+msgstr "نمی‌توان صدا را بخش کرد چون پروندهٔ انتخاب شده (%s) وجود ندارد."
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
+msgstr "نمی‌توان صدا را بخش کرد چون پروندهٔ انتخاب شده (%s) وجود ندارد."
#, fuzzy, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "نمی‌توان صدا را بخش کرد چون پروندهٔ انتخاب شده (%s) وجود ندارد."
+#, c-format
+msgid "Buzzing %s..."
+msgstr ""
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
#, fuzzy
@@ -4493,9 +4621,35 @@ msgstr "اوهوی!!"
msgid "%s has buzzed you!"
msgstr "‏%s شما را اضافه کرده است [%s]"
-#, c-format
-msgid "Buzzing %s..."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "نمی‌توان به %s پیغام فرستاد."
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "فرستادن پرونده به %s ممکن نیست، کاربر از انتقال پرونده پشتیبانی نمی‌کند"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr "فرستادن پرونده به %s ممکن نیست، کاربر از انتقال پرونده پشتیبانی نمی‌کند"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "ثبت نام شکست خورد"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "لطفاً نام کاربری شخصی را که می‌خواهید اطلاعاتش را ببینید وارد کنید."
+
+#, fuzzy
+msgid "Select a Resource"
+msgstr "یک پرونده انتخاب کنید"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "راه‌اندازی _گپ"
msgid "config: Configure a chat room."
msgstr "‏config: پیکربندی اتاق گپ."
@@ -4657,6 +4811,21 @@ msgstr "خطا هنگام پیوستن به گپ %s"
msgid "Error in chat %s"
msgstr "خطا در گپ %s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "هنگام باز کردن پرونده خطایی رخ داد."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "انتقال پرونده شکست خورد"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "باز کردن پروندهٔ %s شکست خورد: %s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr "فرستادن پرونده به %s ممکن نیست، کاربر از انتقال پرونده پشتیبانی نمی‌کند"
@@ -4681,10 +4850,6 @@ msgid "Please select the resource of %s to which you would like to send a file"
msgstr "لطفاً نام کاربری شخصی را که می‌خواهید اطلاعاتش را ببینید وارد کنید."
#, fuzzy
-msgid "Select a Resource"
-msgstr "یک پرونده انتخاب کنید"
-
-#, fuzzy
msgid "Edit User Mood"
msgstr "حالت‌های کاربر"
@@ -4724,9 +4889,20 @@ msgstr "اقدام"
msgid "Select an action"
msgstr "یک پرونده انتخاب کنید"
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr "نمی‌توان «%s» را اضافه کرد."
+
#, fuzzy
-msgid "Unable to retrieve MSN Address Book"
-msgstr "انتخاب دفترچهٔ نشانی نوتز"
+msgid "Buddy Add error"
+msgstr "خطای فهرست رفقا"
+
+#, fuzzy
+msgid "The username specified does not exist."
+msgstr "نام کاربری مشخص شده نامعتبر است."
#, c-format
msgid "Buddy list synchronization issue in %s (%s)"
@@ -4956,7 +5132,7 @@ msgstr "بچه‌ها بدون رضایت والدینشان passport می‌ک
msgid "Passport account not yet verified"
msgstr "حساب passport هنوز تأیید نشده است"
-#, fuzzy, c-format
+#, fuzzy
msgid "Passport account suspended"
msgstr "حساب passport هنوز تأیید نشده است"
@@ -5051,6 +5227,13 @@ msgstr "فرستادن پیغام همراه."
msgid "Page"
msgstr "پی‌جویی"
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "کاری"
+
msgid "Has you"
msgstr "شما را دارد"
@@ -5092,6 +5275,14 @@ msgstr "هنرمندان"
msgid "Album"
msgstr "Adium"
+#, fuzzy
+msgid "Game Title"
+msgstr "عنوان"
+
+#, fuzzy
+msgid "Office Title"
+msgstr "عنوان"
+
msgid "Set Friendly Name..."
msgstr "تنظیم نام دوستانه..."
@@ -5283,8 +5474,9 @@ msgid ""
msgstr ""
"اطلاعاتی در شرح حال کاربر پیدا نشد. به احتمال زیاد این کاربر وجود ندارد."
-msgid "Profile URL"
-msgstr "نشانی اینترنتی شرح حال"
+#, fuzzy
+msgid "View web profile"
+msgstr "هنگام انفصال ممکن نیست"
#. *< type
#. *< ui_requirement
@@ -5533,13 +5725,6 @@ msgstr "اضافه کردن به دفترچهٔ نشانی"
msgid "Do you want to delete this buddy from your address book as well?"
msgstr "آیا می‌خواهید این رفیق را به فهرست رفقا‌یتان اضافه کنید؟"
-#. only notify the user about problems adding to the friends list
-#. * maybe we should do something else for other lists, but it probably
-#. * won't cause too many problems if we just ignore it
-#, c-format
-msgid "Unable to add \"%s\"."
-msgstr "نمی‌توان «%s» را اضافه کرد."
-
#, fuzzy
msgid "The username specified is invalid."
msgstr "نام کاربری مشخص شده نامعتبر است."
@@ -5547,6 +5732,9 @@ msgstr "نام کاربری مشخص شده نامعتبر است."
msgid "This Hotmail account may not be active."
msgstr "ممکن است این حساب هات‌مِیل فعال نباشد."
+msgid "Profile URL"
+msgstr "نشانی اینترنتی شرح حال"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5561,17 +5749,13 @@ msgstr "ممکن است این حساب هات‌مِیل فعال نباشد."
msgid "MSN Protocol Plugin"
msgstr "متصل شوندهٔ قرارداد AIM"
-#, fuzzy
-msgid "Missing Cipher"
-msgstr "کلید رمز"
-
-msgid "The RC4 cipher could not be found"
+#, c-format
+msgid "No such user: %s"
msgstr ""
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
-msgstr ""
+#, fuzzy
+msgid "User lookup"
+msgstr "اتاق‌های کاربر"
#, fuzzy
msgid "Reading challenge"
@@ -5585,10 +5769,21 @@ msgstr "تقاضای نامعتبر از سوی کارگزار"
msgid "Logging in"
msgstr "ثبت وقایع"
-#, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] ""
+#, fuzzy
+msgid "MySpaceIM - No Username Set"
+msgstr "بدون نام"
+
+msgid "You appear to have no MySpace username."
+msgstr ""
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr ""
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr ""
+"اتصال به کارگزار قطع شد\n"
+"‏%s"
#. Can't write _()'d strings in array initializers. Workaround.
#, fuzzy
@@ -5611,14 +5806,21 @@ msgid "MySpace"
msgstr ""
#, fuzzy
-msgid "MySpaceIM - No Username Set"
-msgstr "بدون نام"
+msgid "IM Friends"
+msgstr "پنجره‌های _پیغام اینترنتی"
-msgid "You appear to have no MySpace username."
-msgstr ""
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
-msgstr ""
+#, fuzzy
+msgid "Add contacts from server"
+msgstr "پاسخ نامعتبر از کارگزار."
#. The session is now set up, ready to be connected. This emits the
#. * signedOn signal, so clients can now do anything with msimprpl, and
@@ -5642,6 +5844,22 @@ msgid "MySpaceIM Error"
msgstr ""
#, fuzzy
+msgid "Invalid input condition"
+msgstr "در حال تکمیل کردن اتصال"
+
+#, fuzzy
+msgid "Read buffer full (2)"
+msgstr "صف پر است"
+
+#, fuzzy
+msgid "Unparseable message"
+msgstr "نمی‌توان پیغام را تجزیه کرد"
+
+#, fuzzy, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr "نمی‌توان به میزبان متصل شد"
+
+#, fuzzy
msgid "Failed to add buddy"
msgstr "پیوستن به رفیق در گپ شکست خورد"
@@ -5652,14 +5870,6 @@ msgstr "بار کردن فهرست رفقا از پرونده..."
msgid "persist command failed"
msgstr ""
-#, c-format
-msgid "No such user: %s"
-msgstr ""
-
-#, fuzzy
-msgid "User lookup"
-msgstr "اتاق‌های کاربر"
-
#, fuzzy
msgid "Failed to remove buddy"
msgstr "پیوستن به رفیق در گپ شکست خورد"
@@ -5671,37 +5881,16 @@ msgid "blocklist command failed"
msgstr ""
#, fuzzy
-msgid "Invalid input condition"
-msgstr "در حال تکمیل کردن اتصال"
-
-#, fuzzy
-msgid "Read buffer full (2)"
-msgstr "صف پر است"
-
-#, fuzzy
-msgid "Unparseable message"
-msgstr "نمی‌توان پیغام را تجزیه کرد"
-
-#, fuzzy, c-format
-msgid "Couldn't connect to host: %s (%d)"
-msgstr "نمی‌توان به میزبان متصل شد"
+msgid "Missing Cipher"
+msgstr "کلید رمز"
-#, fuzzy
-msgid "IM Friends"
-msgstr "پنجره‌های _پیغام اینترنتی"
+msgid "The RC4 cipher could not be found"
+msgstr ""
-#, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-
-#, fuzzy
-msgid "Add contacts from server"
-msgstr "پاسخ نامعتبر از کارگزار."
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
msgid "Add friends from MySpace.com"
msgstr ""
@@ -5749,9 +5938,6 @@ msgstr "قلم درشت‌تر"
msgid "User"
msgstr "کاربر"
-msgid "Profile"
-msgstr "مجموعه تنظیمات"
-
#, fuzzy
msgid "Headline"
msgstr "_دست‌گیره:"
@@ -5767,17 +5953,6 @@ msgstr ""
msgid "Client Version"
msgstr "بستن گفتگو"
-#. Protocol won't log in now without a username set.. Disconnect
-#, fuzzy
-msgid "No username set"
-msgstr "بدون نام"
-
-msgid "MySpaceIM - Please Set a Username"
-msgstr ""
-
-msgid "Please enter a username to check its availability:"
-msgstr ""
-
#, fuzzy
msgid "MySpaceIM - Username Available"
msgstr "کارگزار در دسترس نیست"
@@ -5789,6 +5964,9 @@ msgstr "‏%s پیغامی به تخته‌سفید فرستاد. آیا می‌
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr ""
+msgid "MySpaceIM - Please Set a Username"
+msgstr ""
+
#, fuzzy
msgid "This username is unavailable."
msgstr "این تم صورتک ندارد."
@@ -5797,6 +5975,14 @@ msgstr "این تم صورتک ندارد."
msgid "Please try another username:"
msgstr "لطفاً برای %s نام جدیدی وارد کنید"
+#. Protocol won't log in now without a username set.. Disconnect
+#, fuzzy
+msgid "No username set"
+msgstr "بدون نام"
+
+msgid "Please enter a username to check its availability:"
+msgstr ""
+
#. TODO: icons for each zap
#. Lots of comments for translators:
#. Zap means "to strike suddenly and forcefully as if with a
@@ -6187,7 +6373,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr "خطا. پشتیبانی SSL نصب نشده است."
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr "این کنفرانس بسته شده است. دیگر نمی‌توان پیغامی فرستاد."
@@ -6453,23 +6638,18 @@ msgstr "دوربین"
msgid "Screen Sharing"
msgstr "نام کاربری"
-#, c-format
msgid "Free For Chat"
msgstr "آزاد برای گپ"
-#, c-format
msgid "Not Available"
msgstr "در دسترس نیست"
-#, c-format
msgid "Occupied"
msgstr "مشغول"
-#, c-format
msgid "Web Aware"
msgstr ""
-#, c-format
msgid "Invisible"
msgstr "نامرئی"
@@ -6519,7 +6699,7 @@ msgstr ""
"است. نام کاربری باید یا با حرف شروع شود و شامل حروف، ارقام، و فاصله باشد یا "
"فقط از ارقام تشکیل شده باشد."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
#, fuzzy
msgid "Invalid username."
@@ -6536,7 +6716,7 @@ msgstr "حساب شما در حال حاضر به حالت تعلیق در آم
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "پیغام‌رسان اینترنتی AOL موقتاً قابل دسترسی نیست."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6571,13 +6751,10 @@ msgstr "عدد ۶ رقمی را از نمایش دیجیتالی وارد کنی
msgid "_OK"
msgstr "_تأیید"
-#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
+#, fuzzy, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
msgstr ""
-"ممکن است به‌زودی ارتباط شما قطع شود. شاید مایل باشید تا زمان تعمیر، از TOC "
-"استفاده کنید. برای به‌هنگام‌سازی %s را ببینید."
+"ممکن است به زودی ارتباط شما قطع شود. برای دیدن به‌هنگام‌سازی‌ها %s را ببینید."
#, fuzzy
msgid "Unable to get a valid AIM login hash."
@@ -6716,7 +6893,7 @@ msgid "You missed %hu message from %s for an unknown reason."
msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] "شما به دلیل نامعلومی %Ihu پیغام از %s را دریافت نکردید."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "نمی‌توان پیغام فرستاد: %s"
@@ -6738,6 +6915,9 @@ msgstr "برخط از"
msgid "Member Since"
msgstr "عضو از"
+msgid "Profile"
+msgstr "مجموعه تنظیمات"
+
msgid "Your AIM connection may be lost."
msgstr "ممکن است اتصال AIM شما از دست رفته باشد."
@@ -7018,6 +7198,7 @@ msgstr "_اتصال"
msgid "Get AIM Info"
msgstr "گرفتن اطلاعات AIM"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "ویرایش توضیح رفیق"
@@ -7130,7 +7311,6 @@ msgstr "درخواست از %s برای اتصال به ما در %s:%hu برا
msgid "Attempting to connect to %s:%hu."
msgstr "در حال تلاش برای اتصال به %s:%hu."
-#, c-format
msgid "Attempting to connect via proxy server."
msgstr "در حال تلاش برای اتصال از طریق کارگزار پیشکار."
@@ -7227,7 +7407,7 @@ msgstr "دیگر"
msgid "Visible"
msgstr "نامرئی"
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
#, fuzzy
@@ -7318,16 +7498,48 @@ msgstr "آخرین به هنگام‌رسانی"
msgid "Could not change buddy information."
msgstr "لطفاً اطلاعات رفیقی را وارد کنید."
-#, c-format
-msgid "%d needs Q&A"
+msgid "Mobile"
+msgstr "همراه"
+
+msgid "Note"
+msgstr "یادداشت"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "شمایل رفیق"
+
+msgid "Change his/her memo as you like"
msgstr ""
#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "اضافه کردن رفیق"
+msgid "_Modify"
+msgstr "تغییر"
#, fuzzy
-msgid "Input answer here"
+msgid "Memo Modify"
+msgstr "تغییر"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "کارگزار مشغول است"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%u requires verification"
+msgstr "اجازه لازم دارد"
+
+#, fuzzy
+msgid "Add buddy question"
+msgstr "این شخص به فهرست رفقایتان اضافه شود؟"
+
+#, fuzzy
+msgid "Enter answer here"
msgstr "درخواست را اینجا وارد کنید"
msgid "Send"
@@ -7341,18 +7553,19 @@ msgid "Authorization denied message:"
msgstr "پیغام رد اجازه:"
#, fuzzy
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr "ببخشید، تیپ شما به من نمی‌خورد..."
#, fuzzy, c-format
-msgid "%d needs authentication"
+msgid "%u needs authorization"
msgstr "کاربر %Id به تأیید هویت نیاز دارد"
#, fuzzy
msgid "Add buddy authorize"
msgstr "این شخص به فهرست رفقایتان اضافه شود؟"
-msgid "Input request here"
+#, fuzzy
+msgid "Enter request here"
msgstr "درخواست را اینجا وارد کنید"
msgid "Would you be my friend?"
@@ -7375,7 +7588,7 @@ msgid "Failed sending authorize"
msgstr "اگر می‌شود به من اجازه دهید!"
#, fuzzy, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr "پیوستن به رفیق در گپ شکست خورد"
#, fuzzy, c-format
@@ -7420,6 +7633,10 @@ msgid "You can only search for permanent Qun\n"
msgstr "شما فقط می‌توانید گروه‌های دایم QQ را جستجو کنید\n"
#, fuzzy
+msgid "(Invalid UTF-8 string)"
+msgstr "تنظیمات پیشکار نامعتبر"
+
+#, fuzzy
msgid "Not member"
msgstr "من عضو نیستم"
@@ -7462,16 +7679,19 @@ msgstr "این گروه به دیگران اجازهٔ پیوستن نمی‌د
msgid "Join QQ Qun"
msgstr "پیوستن به گپ"
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
-msgstr ""
+msgid "Input request here"
+msgstr "درخواست را اینجا وارد کنید"
+
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "شما با موفقیت عضو Qun را تغییر دادید"
#, fuzzy
msgid "Successfully joined Qun"
msgstr "شما با موفقیت عضو Qun را تغییر دادید"
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
msgid "QQ Qun Operation"
@@ -7481,7 +7701,7 @@ msgstr "عملیات QQ Qun"
msgid "Failed:"
msgstr "شکست خورد"
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
#, fuzzy
@@ -7496,11 +7716,11 @@ msgstr ""
"این عملیات برای همیشه Qun را حذف خواهد کرد."
#, fuzzy
-msgid "Sorry, you are not our style ..."
+msgid "Sorry, you are not our style"
msgstr "ببخشید، تیپ شما به من نمی‌خورد..."
#, fuzzy
-msgid "Successfully changed Qun member"
+msgid "Successfully changed Qun members"
msgstr "شما با موفقیت عضو Qun را تغییر دادید"
#, fuzzy
@@ -7511,35 +7731,35 @@ msgid "You have successfully created a Qun"
msgstr "شما با موفقیت Qun ایجاد کردید"
#, fuzzy
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr "آیا مایلید الان جزئیات Qun را تنظیم کنید؟"
msgid "Setup"
msgstr "راه‌اندازی"
#, fuzzy, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr "کاربر %Id خواستار پیوستن به گروه %Id است"
#, fuzzy, c-format
-msgid "%d request to join Qun %d"
+msgid "%u request to join Qun %u"
msgstr "کاربر %Id خواستار پیوستن به گروه %Id است"
#, fuzzy, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr "پیوستن به رفیق در گپ شکست خورد"
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr "حذف رفیق"
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "حذف رفیق"
#, c-format
msgid "Unknown-%d"
@@ -7657,6 +7877,13 @@ msgstr "<b>آخرین بازآوری</b>: %s<br>\n"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<b>فعلاً برخط</b>: %Id<br>\n"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<b>کاربر خارجی</b><br>"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7664,7 +7891,7 @@ msgid "<i>Feel free to join us!</i> :)"
msgstr ""
#, fuzzy, c-format
-msgid "About OpenQ r%s"
+msgid "About OpenQ %s"
msgstr "دربارهٔ %s"
#, fuzzy
@@ -7685,6 +7912,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "دربارهٔ %s"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "نشانی خانه"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7716,7 +7947,6 @@ msgstr ""
msgid "QQ2008"
msgstr ""
-#. #endif
#, fuzzy
msgid "Connect by TCP"
msgstr "در حال اتصال"
@@ -7729,6 +7959,9 @@ msgstr "نمایش گزینه‌های کمتر"
msgid "Show server news"
msgstr "نمایش گزینه‌های کمتر"
+msgid "Show chat room when msg comes"
+msgstr ""
+
#, fuzzy
msgid "Keep alive interval (seconds)"
msgstr "خطای خواندن"
@@ -7738,11 +7971,7 @@ msgid "Update interval (seconds)"
msgstr "خطای خواندن"
#, fuzzy
-msgid "Can not decrypt server reply"
-msgstr "نمی‌توان اطلاعات کارگزار را گرفت"
-
-#, fuzzy
-msgid "Can not decrypt get server reply"
+msgid "Cannot decrypt server reply"
msgstr "نمی‌توان اطلاعات کارگزار را گرفت"
#, c-format
@@ -7765,21 +7994,23 @@ msgid "Activation required"
msgstr "ثبت نام لازم است"
#, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr ""
#, fuzzy
-msgid "Keep alive error"
-msgstr "خطای خواندن"
+msgid "Could not decrypt server reply"
+msgstr "نمی‌توان اطلاعات کارگزار را گرفت"
-msgid "Requesting captcha ..."
-msgstr ""
+#, fuzzy
+msgid "Requesting captcha"
+msgstr "محاورهٔ درخواست"
-msgid "Checking code of captcha ..."
+msgid "Checking captcha"
msgstr ""
-msgid "Failed captcha verify"
-msgstr ""
+#, fuzzy
+msgid "Failed captcha verification"
+msgstr "تأیید هویت Yahoo!‎ شکست خورد"
#, fuzzy
msgid "Captcha Image"
@@ -7789,7 +8020,7 @@ msgstr "ذخیرهٔ تصویر"
msgid "Enter code"
msgstr "گذرواژه را وارد کنید"
-msgid "QQ Captcha Verifing"
+msgid "QQ Captcha Verification"
msgstr ""
#, fuzzy
@@ -7797,30 +8028,21 @@ msgid "Enter the text from the image"
msgstr "نام گروه را وارد کنید."
#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
+msgid "Unknown reply when checking password (0x%02X)"
msgstr ""
#, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
msgstr ""
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "نمی‌توان متصل شد"
msgid "Socket error"
msgstr "خطای سوکت"
-#, fuzzy, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr ""
-"اتصال به کارگزار قطع شد:\n"
-"‏%s"
-
msgid "Unable to read from socket"
msgstr "خواندن از سوکت ممکن نیست"
@@ -7831,11 +8053,11 @@ msgid "Connection lost"
msgstr "اتصال قطع شد"
#, fuzzy
-msgid "Get server ..."
+msgid "Getting server"
msgstr "تنظیم اطلاعات کاربر..."
#, fuzzy
-msgid "Request token"
+msgid "Requesting token"
msgstr "درخواست رد شد"
msgid "Couldn't resolve host"
@@ -7846,17 +8068,13 @@ msgid "Invalid server or port"
msgstr "نام کاربر یا گذرواژهٔ نامعتبر"
#, fuzzy
-msgid "Connecting server ..."
-msgstr "اتصال کارگزار"
+msgid "Connecting to server"
+msgstr "در حال اتصال به کارگزار SILC"
#, fuzzy
msgid "QQ Error"
msgstr "خطای شناسهٔ QQ"
-#, fuzzy
-msgid "Failed to send IM."
-msgstr "'گرفتن نام شکست خورد: %s"
-
#, fuzzy, c-format
msgid ""
"Server News:\n"
@@ -7866,6 +8084,10 @@ msgid ""
msgstr "نشانی کارگزار"
#, fuzzy, c-format
+msgid "%s:%s"
+msgstr "‏%s (%s)"
+
+#, fuzzy, c-format
msgid "From %s:"
msgstr "فرستنده"
@@ -7875,32 +8097,30 @@ msgid ""
"%s"
msgstr "راهنمایی‌های کارگزار: %s"
-msgid "Unknow SERVER CMD"
-msgstr ""
+#, fuzzy
+msgid "Unknown SERVER CMD"
+msgstr "دلیل نامعلوم"
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
#, fuzzy
msgid "QQ Qun Command"
msgstr "فرمان"
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr ""
-
-msgid "Can not decrypt login reply"
-msgstr ""
+#, fuzzy
+msgid "Could not decrypt login reply"
+msgstr "نمی‌توان اطلاعات کارگزار را گرفت"
#, fuzzy
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr "دلیل نامعلوم"
#, fuzzy
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr "دلیل نامعلوم"
#, c-format
@@ -8724,9 +8944,6 @@ msgstr "سازمان"
msgid "Unit"
msgstr "واحد"
-msgid "Note"
-msgstr "یادداشت"
-
msgid "Join Chat"
msgstr "پیوستن به گپ"
@@ -9375,6 +9592,10 @@ msgstr "تحویل نام میزبان ممکن نیست"
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr "نام‌های کاربری SIP نمی‌توانند حاوی فاصله یا نماد @ باشند"
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "نمایش گزینه‌های کمتر"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -9409,190 +9630,10 @@ msgid "Auth Domain"
msgstr "تأیید هویت دامنه"
#, c-format
-msgid "Looking up %s"
-msgstr "در حال جستجوی %s"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "اتصال به %s شکست خورد"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "ورود به سیستم: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "نوشتن پروندهٔ %s ممکن نیست."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "خواندن پروندهٔ %s ممکن نیست."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "پیغام خیلی طولانی است، %s بایت آخر قیچی شد."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s در حال حاضر وارد سیستم نشده است."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "اخطار %s مجاز نیست."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "یک پیغام جا افتاد، شما از محدودهٔ سرعت کارگزار فراتر رفته‌اید."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "گپ در %s موجود نیست."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "شما پیغام‌های را با سرعت خیلی زیادی به %s ارسال می‌کنید."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "یک پیغام اینترنتی از %s را دریافت نکردید چون خیلی بزرگ بود."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "یک پیغام اینترنتی از %s را دریافت نکردید چون خیلی سریع بود."
-
-#, c-format
-msgid "Failure."
-msgstr "شکست."
-
-#, c-format
-msgid "Too many matches."
-msgstr "تعداد مطابقت‌ها خیلی زیاد است."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "وصف‌کننده‌های بیشتری لازم است."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "سرویس دفترچهٔ راهنمای کاربران به طور موقت قابل دسترسی نیست."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "گشتن به دنبال نشانی پست الکترونیکی محدود شده است."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "کلیدواژه نادیده گرفته شد."
-
-#, c-format
-msgid "No keywords."
-msgstr "بدون کلیدواژه."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "کاربر اطلاعاتی در دفترچهٔ راهنمای کاربران ندارد."
-
-#, c-format
-msgid "Country not supported."
-msgstr "کشور پشتیبانی نمی‌شود."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "شکست نامعلوم: %s."
-
-#, fuzzy, c-format
-msgid "Incorrect username or password."
-msgstr "نام کاربری یا گذرواژهٔ نادرست."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "این سرویس موقتاً موجود نیست."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "سطح اخطار شما در حال حاضر بالاتر از آن است که بتوانید وارد سیستم شوید."
-
-#, c-format
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
+msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
-"شما دفعات خیلی زیادی متناوباً وارد سیستم شده و از آن خارج شده‌اید. ده دقیقه "
-"صبر کرده و بعد دوباره امتحان کنید. اگر به تلاش ادامه دهید، باید حتی بیش از "
-"این صبر کنید."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "خطای نامعلومی در ورود به سیستم رخ داد: %s"
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "خطای نامعلومی، %Id، رخ داد. اطلاعات: %s"
-msgid "Invalid Groupname"
-msgstr "نام گروه نامعتبر"
-
-msgid "Connection Closed"
-msgstr "اتصال بسته شد"
-
-msgid "Waiting for reply..."
-msgstr "در انتظار پاسخ..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "مکث TOC به پایان رسید.حالا می‌توانید دوباره پیغام بفرستید."
-
-msgid "Password Change Successful"
-msgstr "تغییر گذرواژه موفقیت‌آمیز بود"
-
-msgid "_Group:"
-msgstr "_گروه:"
-
-msgid "Get Dir Info"
-msgstr "گرفتن اطلاعات دفترچهٔ راهنمای کاربران"
-
-msgid "Set Dir Info"
-msgstr "تنظیم اطلاعات دفترچهٔ راهنمای کاربران"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "نمی‌توان %s را برای نوشتن باز کرد!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "انتقال پرونده شکست خورد؛ احتمالاً طرف دیگر انصراف داده است."
-
-msgid "Could not connect for transfer."
-msgstr "نمی‌توان برای انتقال متصل شد."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "نمی‌توان سرصفحهٔ پرونده را نوشت. پرونده انتقال نخواهد یافت."
-
-msgid "Save As..."
-msgstr "ذخیره به نام..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "‏%s از %s می‌خواهد %Id پرونده را بپذیرد: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "‏%s از شما درخواست کرده است برایش پرونده‌ای بفرستید"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "متصل شوندهٔ قرارداد TOC"
-
-#, c-format
-msgid "%s has sent you a webcam invite, which is not yet supported."
+msgid "Your SMS was not delivered"
msgstr ""
msgid "Your Yahoo! message did not get sent."
@@ -9865,13 +9906,9 @@ msgstr "پیوند باحال ۳"
msgid "Last Update"
msgstr "آخرین به هنگام‌رسانی"
-#, c-format
-msgid "User information for %s unavailable"
-msgstr "اطلاعات کاربر برای %s موجود نیست"
-
+#, fuzzy
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr ""
"ببخشید، به نظر می‌رسد این شرح حال به زبان یا قالبی است که در حال حاضر "
"پشتیبانی نمی‌شود."
@@ -10200,9 +10237,6 @@ msgstr "مزاحم نشوید"
msgid "Extended away"
msgstr "رفتهٔ بیشتر"
-msgid "Mobile"
-msgstr "همراه"
-
msgid "Listening to music"
msgstr ""
@@ -10244,17 +10278,6 @@ msgstr "+++ %s دیگر بی‌کار نیست"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "خطا هنگام خواندن %s"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"در خواندن %s شما خطایی پیش آمد و بار نشد. نام پروندهٔ قدیمی به %s~ تغییر کرد."
-
msgid "Calculating..."
msgstr "در حال محاسبه"
@@ -10321,6 +10344,13 @@ msgstr "خطا هنگام نوشتن در %s: %s"
msgid "Unable to connect to %s: %s"
msgstr "اتصال به %s ممکن نیست: %s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+"کارگزار برای ورود به سیستم TLS/SSL لازم دارد. پشتیبانی TLS/SSL پیدا نشد."
+
#, c-format
msgid " - %s"
msgstr ""
@@ -10354,6 +10384,17 @@ msgstr "اتصال رد شد"
msgid "Address already in use."
msgstr "این نام گپ از قبل وجود دارد"
+#, c-format
+msgid "Error Reading %s"
+msgstr "خطا هنگام خواندن %s"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"در خواندن %s شما خطایی پیش آمد و بار نشد. نام پروندهٔ قدیمی به %s~ تغییر کرد."
+
msgid "Internet Messenger"
msgstr "پیغام‌رسان اینترنتی"
@@ -10400,10 +10441,8 @@ msgstr "اطلاع‌های نامهٔ جدید"
msgid "Use this buddy _icon for this account:"
msgstr ""
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "گزینه‌های %s"
+msgid "_Advanced"
+msgstr "_پیشرفته"
msgid "Use GNOME Proxy Settings"
msgstr "استفاده از تنظیمات پیشکار گنوم"
@@ -10438,9 +10477,6 @@ msgstr "اگر خوب دقت کنید"
msgid "you can see the butterflies mating"
msgstr "می‌توانید جفت‌گیری پروانه‌ها را ببینید"
-msgid "Proxy Options"
-msgstr "گزینه‌های پیشکار"
-
msgid "Proxy _type:"
msgstr "_نوع پیشکار:"
@@ -10469,8 +10505,9 @@ msgstr "ا_صلی"
msgid "Create _this new account on the server"
msgstr ""
-msgid "_Advanced"
-msgstr "_پیشرفته"
+#, fuzzy
+msgid "_Proxy"
+msgstr "پیشکار"
msgid "Enabled"
msgstr "به کار انداخته شده"
@@ -10536,6 +10573,17 @@ msgid "I_M"
msgstr "_پیغام اینترنتی"
#, fuzzy
+msgid "_Audio Call"
+msgstr "_اضافه کردن گپ"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "گپ ویدیویی"
+
+#, fuzzy
msgid "_Send File..."
msgstr "_فرستادن پرونده"
@@ -10687,6 +10735,10 @@ msgstr "/ابزارها/_کمینِ رفیق"
msgid "/Tools/_Certificates"
msgstr "/ابزارها/تر_جیحات"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "ابزارها/_رفتن"
+
msgid "/Tools/Plu_gins"
msgstr "/ابزارها/_متصل شونده‌ها"
@@ -10696,10 +10748,6 @@ msgstr "/ابزارها/تر_جیحات"
msgid "/Tools/Pr_ivacy"
msgstr "/ابزارها/_حریم خصوصی"
-#, fuzzy
-msgid "/Tools/Smile_y"
-msgstr "ابزارها/_رفتن"
-
msgid "/Tools/_File Transfers"
msgstr "/ابزارها/انت_قال ‌پرونده"
@@ -10820,8 +10868,8 @@ msgstr "دستی"
msgid "By status"
msgstr "از روی وضعیت"
-msgid "By log size"
-msgstr "از روی اندازهٔ تاریخچه"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10839,6 +10887,9 @@ msgstr "اتصال م_جدد"
msgid "Re-enable"
msgstr "به کار انداختن مجدد حساب"
+msgid "SSL FAQs"
+msgstr ""
+
#, fuzzy
msgid "Welcome back!"
msgstr "‏%s برگشت"
@@ -10930,6 +10981,9 @@ msgstr ""
msgid "A_lias:"
msgstr "اسم مستعار:"
+msgid "_Group:"
+msgstr "_گروه:"
+
msgid "Auto_join when account becomes online."
msgstr ""
@@ -10983,14 +11037,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr "دعوت رفیق به اتاق گپ"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"لطفاً نام کاربری را که مایلید از او دعوت کنید، در صورت تمایل همراه با پیغام "
-"دعوت‌نامه، وارد کنید."
-
msgid "_Buddy:"
msgstr "_رفیق:"
@@ -11066,6 +11112,22 @@ msgstr "/گفتگو/_ذخیره با نام..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/گفتگو/پا_ک کردن پیغام‌های گذشته"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/گفتگو/_بیشتر"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/گفتگو/_بیشتر"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/گفتگو/_بیشتر"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/گفتگو/نمایش _تاریخچه"
+
msgid "/Conversation/Se_nd File..."
msgstr "/گفتگو/_فرستادن پرونده...."
@@ -11139,6 +11201,18 @@ msgstr "/گفتگو"
msgid "/Conversation/View Log"
msgstr "/گفتگو/نمایش تاریخچه"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/گفتگو/بیشتر"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/گفتگو/نمایش تاریخچه"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/گفتگو/بیشتر"
+
msgid "/Conversation/Send File..."
msgstr "/گفتگو/فرستادن پرونده..."
@@ -11322,6 +11396,9 @@ msgstr "هنرمندان"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "پشتیبانی"
@@ -11464,6 +11541,10 @@ msgstr "گرجی"
msgid "Ubuntu Georgian Translators"
msgstr "مترجمان فعلی"
+#, fuzzy
+msgid "Khmer"
+msgstr "دیگر"
+
msgid "Kannada"
msgstr "کناره‌ای"
@@ -11487,6 +11568,10 @@ msgid "Macedonian"
msgstr "مقدونی"
#, fuzzy
+msgid "Mongolian"
+msgstr "مقدونی"
+
+#, fuzzy
msgid "Bokmål Norwegian"
msgstr "نروژی"
@@ -11602,7 +11687,24 @@ msgstr ""
"ارائه نمی‌کنیم."
#, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, fuzzy, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin در irc.freenode.net<BR><BR"
+
+#, fuzzy, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin در irc.freenode.net<BR><BR"
msgid "Current Developers"
@@ -11923,15 +12025,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr "اطلاع‌های نامهٔ جدید"
-msgid "_Copy Email Address"
-msgstr "_نسخه‌برداری از نشانی پست الکترونیکی"
-
-msgid "_Open Link in Browser"
-msgstr "_باز کردن پیوند در مرورگر"
-
-msgid "_Copy Link Location"
-msgstr "_نسخه‌برداری از مکان پیوند"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12207,6 +12300,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12234,6 +12328,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12292,11 +12387,27 @@ msgstr ""
msgid "Pidgin"
msgstr "خوک"
-msgid "Open All Messages"
-msgstr "همهٔ پیغام‌ها باز شوند"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">نامه دارید!</span>"
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "در حال محاسبه"
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -12323,6 +12434,27 @@ msgid ""
"The 'Manual' browser command has been chosen, but no command has been set."
msgstr "فرمان مرورگر «دستی» انتخاب شده است، ولی فرمانی تنظیم نشده است."
+msgid "Open All Messages"
+msgstr "همهٔ پیغام‌ها باز شوند"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">نامه دارید!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "کمینِ رفیق جدید"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">نامه دارید!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "(۱ پیغام)"
+
msgid "The following plugins will be unloaded."
msgstr "متصل شونده‌های زیر از حافظه خارج خواهند شد."
@@ -12375,6 +12507,10 @@ msgstr "<b>جزئیات متصل شونده</b>"
msgid "Select a file"
msgstr "یک پرونده انتخاب کنید"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "ویرایش کمینِ رفیق"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "کمین برای"
@@ -12446,6 +12582,50 @@ msgstr "_تکراری"
msgid "Pounce Target"
msgstr "هدف حمله"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "شروع به تایپ کردن می‌کند"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "هنگام تایپ مکث می‌کند"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "وارد سیستم می‌شود"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "با_زگشت از بی‌کاری"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "بازمی‌گردد"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "تایپ کردن را متوقف کرد"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "از سیستم خارج می‌شود"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "بی‌کار می‌شود"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "وقتی نیستید"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "فرستادن پیغام"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "رویداد کمین نامعلوم. لطفاً این را گزارش کنید!"
+
msgid "Smiley theme failed to unpack."
msgstr "درآوردن تم صورتک‌ها از بسته شکست خورد."
@@ -12470,6 +12650,12 @@ msgstr "میانبرها"
msgid "Cl_ose conversations with the Escape key"
msgstr "گفتگوها با %s"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "فهرست رفقا"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "شمایل محوطهٔ اعلانات"
@@ -12587,9 +12773,6 @@ msgstr ""
msgid "Cannot start browser configuration program."
msgstr "نمی‌توان اطلاعات کاربر را گرفت"
-msgid "ST_UN server:"
-msgstr "_کارگزار STUN:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">مثال: stunserver.org</span>"
@@ -12614,6 +12797,10 @@ msgstr "درگاه _شروع:"
msgid "_End port:"
msgstr "درگاه _پایان:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
#, fuzzy
msgid "Proxy Server &amp; Browser"
msgstr "کارگزار پیشکار"
@@ -12643,6 +12830,10 @@ msgstr "کارگزار پیشکار"
msgid "No proxy"
msgstr "بدون پیشکار"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "_کاربر:"
@@ -12807,13 +12998,13 @@ msgstr "وقتی نیستید و بی‌کارید"
msgid "Auto-away"
msgstr "رفتن خودکار"
-msgid "Change status when _idle"
-msgstr "تغییر وضعیت _هنگام بی‌کار شدن"
-
#, fuzzy
msgid "_Minutes before becoming idle:"
msgstr "_تعداد دقایق تا تغییر وضعیت:"
+msgid "Change status when _idle"
+msgstr "تغییر وضعیت _هنگام بی‌کار شدن"
+
msgid "Change _status to:"
msgstr "تغییر _وضعیت به:"
@@ -12964,6 +13155,12 @@ msgstr "_ذخیره و استفاده"
msgid "Status for %s"
msgstr "وضعیت %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
#, fuzzy
msgid "Custom Smiley"
msgstr "درج صورتک"
@@ -12974,15 +13171,15 @@ msgstr ""
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
+msgstr ""
+
#, fuzzy
msgid "Duplicate Shortcut"
msgstr "تصحیح مقادیر تکراری"
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
-msgstr ""
-
#, fuzzy
msgid "Please select an image for the smiley."
msgstr "لطفاً برای %s نام جدیدی وارد کنید"
@@ -12996,18 +13193,22 @@ msgid "Add Smiley"
msgstr "لبخند!"
#, fuzzy
-msgid "Smiley _Image"
+msgid "_Image:"
msgstr "ذخیرهٔ تصویر"
-#. Smiley shortcut
+#. Shortcut text
#, fuzzy
-msgid "Smiley S_hortcut"
+msgid "S_hortcut text:"
msgstr "میانبرها"
#, fuzzy
msgid "Smiley"
msgstr "لبخند!"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "میانبرها"
+
msgid "Custom Smiley Manager"
msgstr ""
@@ -13135,6 +13336,16 @@ msgid ""
"Failed to load image '%s': reason not known, probably a corrupt image file"
msgstr ""
+#, fuzzy
+msgid "_Open Link"
+msgstr "_باز کردن پیوند در:"
+
+msgid "_Copy Link Location"
+msgstr "_نسخه‌برداری از مکان پیوند"
+
+msgid "_Copy Email Address"
+msgstr "_نسخه‌برداری از نشانی پست الکترونیکی"
+
msgid "Save File"
msgstr "ذخیرهٔ پرونده"
@@ -14123,9 +14334,6 @@ msgstr "رو نگه داشتن پنجرهٔ فهرست رفقا_:"
msgid "Only when docked"
msgstr "فقط وقتی جدا شده است"
-msgid "_Flash window when chat messages are received"
-msgstr "_چشمک زدن پنجره وقتی پیغام‌های گپ دریافت می‌شود"
-
#, fuzzy
msgid "Windows Pidgin Options"
msgstr "گزینه‌های پیجین"
@@ -14175,6 +14383,228 @@ msgstr ""
msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr "این متصل‌شونده‌ برای اشکال‌زدایی کارگیرها یا کارگزارهای XMPP مفید است."
+#, fuzzy
+#~ msgid "Invite message"
+#~ msgstr "پیغامِ تَرک"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "لطفاً نام کاربری را که مایلید از او دعوت کنید، در صورت تمایل همراه با "
+#~ "پیغام دعوت‌نامه، وارد کنید."
+
+#, fuzzy
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "انتخاب دفترچهٔ نشانی نوتز"
+
+#~ msgid ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+#~ msgstr ""
+#~ "ممکن است به‌زودی ارتباط شما قطع شود. شاید مایل باشید تا زمان تعمیر، از TOC "
+#~ "استفاده کنید. برای به‌هنگام‌سازی %s را ببینید."
+
+#, fuzzy
+#~ msgid "Add buddy Q&A"
+#~ msgstr "اضافه کردن رفیق"
+
+#, fuzzy
+#~ msgid "Can not decrypt get server reply"
+#~ msgstr "نمی‌توان اطلاعات کارگزار را گرفت"
+
+#, fuzzy
+#~ msgid "Keep alive error"
+#~ msgstr "خطای خواندن"
+
+#, fuzzy
+#~ msgid ""
+#~ "Lost connection with server:\n"
+#~ "%d, %s"
+#~ msgstr ""
+#~ "اتصال به کارگزار قطع شد:\n"
+#~ "‏%s"
+
+#, fuzzy
+#~ msgid "Connecting server ..."
+#~ msgstr "اتصال کارگزار"
+
+#, fuzzy
+#~ msgid "Failed to send IM."
+#~ msgstr "'گرفتن نام شکست خورد: %s"
+
+#~ msgid "Looking up %s"
+#~ msgstr "در حال جستجوی %s"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "اتصال به %s شکست خورد"
+
+#~ msgid "Signon: %s"
+#~ msgstr "ورود به سیستم: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "نوشتن پروندهٔ %s ممکن نیست."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "خواندن پروندهٔ %s ممکن نیست."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "پیغام خیلی طولانی است، %s بایت آخر قیچی شد."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s در حال حاضر وارد سیستم نشده است."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "اخطار %s مجاز نیست."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr "یک پیغام جا افتاد، شما از محدودهٔ سرعت کارگزار فراتر رفته‌اید."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "گپ در %s موجود نیست."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "شما پیغام‌های را با سرعت خیلی زیادی به %s ارسال می‌کنید."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "یک پیغام اینترنتی از %s را دریافت نکردید چون خیلی بزرگ بود."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr "یک پیغام اینترنتی از %s را دریافت نکردید چون خیلی سریع بود."
+
+#~ msgid "Failure."
+#~ msgstr "شکست."
+
+#~ msgid "Too many matches."
+#~ msgstr "تعداد مطابقت‌ها خیلی زیاد است."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "وصف‌کننده‌های بیشتری لازم است."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "سرویس دفترچهٔ راهنمای کاربران به طور موقت قابل دسترسی نیست."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "گشتن به دنبال نشانی پست الکترونیکی محدود شده است."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "کلیدواژه نادیده گرفته شد."
+
+#~ msgid "No keywords."
+#~ msgstr "بدون کلیدواژه."
+
+#~ msgid "User has no directory information."
+#~ msgstr "کاربر اطلاعاتی در دفترچهٔ راهنمای کاربران ندارد."
+
+#~ msgid "Country not supported."
+#~ msgstr "کشور پشتیبانی نمی‌شود."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "شکست نامعلوم: %s."
+
+#, fuzzy
+#~ msgid "Incorrect username or password."
+#~ msgstr "نام کاربری یا گذرواژهٔ نادرست."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "این سرویس موقتاً موجود نیست."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr ""
+#~ "سطح اخطار شما در حال حاضر بالاتر از آن است که بتوانید وارد سیستم شوید."
+
+#~ 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 ""
+#~ "شما دفعات خیلی زیادی متناوباً وارد سیستم شده و از آن خارج شده‌اید. ده دقیقه "
+#~ "صبر کرده و بعد دوباره امتحان کنید. اگر به تلاش ادامه دهید، باید حتی بیش "
+#~ "از این صبر کنید."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "خطای نامعلومی در ورود به سیستم رخ داد: %s"
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "خطای نامعلومی، %Id، رخ داد. اطلاعات: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "نام گروه نامعتبر"
+
+#~ msgid "Connection Closed"
+#~ msgstr "اتصال بسته شد"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "در انتظار پاسخ..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "مکث TOC به پایان رسید.حالا می‌توانید دوباره پیغام بفرستید."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "تغییر گذرواژه موفقیت‌آمیز بود"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "گرفتن اطلاعات دفترچهٔ راهنمای کاربران"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "تنظیم اطلاعات دفترچهٔ راهنمای کاربران"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "نمی‌توان %s را برای نوشتن باز کرد!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr "انتقال پرونده شکست خورد؛ احتمالاً طرف دیگر انصراف داده است."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "نمی‌توان برای انتقال متصل شد."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "نمی‌توان سرصفحهٔ پرونده را نوشت. پرونده انتقال نخواهد یافت."
+
+#~ msgid "Save As..."
+#~ msgstr "ذخیره به نام..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "‏%s از %s می‌خواهد %Id پرونده را بپذیرد: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "‏%s از شما درخواست کرده است برایش پرونده‌ای بفرستید"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "متصل شوندهٔ قرارداد TOC"
+
+#~ msgid "User information for %s unavailable"
+#~ msgstr "اطلاعات کاربر برای %s موجود نیست"
+
+#~ msgid "%s Options"
+#~ msgstr "گزینه‌های %s"
+
+#~ msgid "Proxy Options"
+#~ msgstr "گزینه‌های پیشکار"
+
+#~ msgid "By log size"
+#~ msgstr "از روی اندازهٔ تاریخچه"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_باز کردن پیوند در مرورگر"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "_کارگزار STUN:"
+
+#, fuzzy
+#~ msgid "Smiley _Image"
+#~ msgstr "ذخیرهٔ تصویر"
+
+#, fuzzy
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "میانبرها"
+
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "_چشمک زدن پنجره وقتی پیغام‌های گپ دریافت می‌شود"
+
#~ msgid "A group with the name already exists."
#~ msgstr "گروهی به این نام از قبل وجود دارد"
@@ -14271,13 +14701,6 @@ msgstr "این متصل‌شونده‌ برای اشکال‌زدایی کار
#~ msgid "Change Qun information"
#~ msgstr "اطلاعات کانال"
-#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr "‏%s (%s)"
-
#~ msgid "System Message"
#~ msgstr "پیغام سیستم"
@@ -15175,8 +15598,8 @@ msgstr "این متصل‌شونده‌ برای اشکال‌زدایی کار
#~ msgid ""
#~ "When this happens, TOC ignores any messages sent to it, and may kick you "
-#~ "off if you send a message. Pidgin will prevent anything from going through. "
-#~ "This is only temporary, please be patient."
+#~ "off if you send a message. Pidgin will prevent anything from going "
+#~ "through. This is only temporary, please be patient."
#~ msgstr ""
#~ "وقتی این اتفاق می‌افتد TOC همهٔ پیغام‌هایی را که به آن فرستاده می‌شود نادیده "
#~ "می‌گیرد، و اگر پیغامی ارسال کنید ممکن است شما را بیرون بیندازد. گیم جلوی "
@@ -15188,8 +15611,8 @@ msgstr "این متصل‌شونده‌ برای اشکال‌زدایی کار
#~ msgid ""
#~ "The normal authentication method has failed. This means either your "
#~ "password is incorrect, or Yahoo!'s authentication scheme has changed. "
-#~ "Pidgin will now attempt to log in using Web Messenger authentication, which "
-#~ "will result in reduced functionality and features."
+#~ "Pidgin will now attempt to log in using Web Messenger authentication, "
+#~ "which will result in reduced functionality and features."
#~ msgstr ""
#~ "روش تأیید هویت عادی شکست خورد. دلیل این مسئله یا غلط بودن گذرواژهٔ شما و "
#~ "یا تغییر شِمای تأیید هویت Yahoo!‎ است. گِیم تلاش خواهد کرد با استفاده از "
@@ -15419,9 +15842,6 @@ msgstr "این متصل‌شونده‌ برای اشکال‌زدایی کار
#~ msgid "Away title: "
#~ msgstr "عنوان رفته:"
-#~ msgid "Buddy List Error"
-#~ msgstr "خطای فهرست رفقا"
-
#~ msgid "(+%d more)"
#~ msgstr "(+%Id بیشتر)"
@@ -15723,9 +16143,6 @@ msgstr "این متصل‌شونده‌ برای اشکال‌زدایی کار
#~ msgid "_Idle"
#~ msgstr "_بی‌کار"
-#~ msgid "Retur_n from idle"
-#~ msgstr "با_زگشت از بی‌کاری"
-
#~ msgid "Pounce Action"
#~ msgstr "کنشِ حمله"
@@ -15911,8 +16328,8 @@ msgstr "این متصل‌شونده‌ برای اشکال‌زدایی کار
#~ msgstr "نمی‌توان ترجیحات را بار کرد"
#~ msgid ""
-#~ "Pidgin was not able to load your preferences because they are stored in an "
-#~ "old format that is no longer used. Please reconfigure your settings "
+#~ "Pidgin 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 ""
#~ "گیم نمی‌تواند ترجیحات شما را بار کند چون در قالب قدیمی‌ای که دیگر استفاده "
@@ -16017,15 +16434,15 @@ msgstr "این متصل‌شونده‌ برای اشکال‌زدایی کار
#~ msgstr "دسترسی به شاخه ممکن نیست"
#~ msgid ""
-#~ "Pidgin was unable to search the Directory because it was unable to connect "
-#~ "to the directory server. Please try again later."
+#~ "Pidgin was unable to search the Directory because it was unable to "
+#~ "connect to the directory server. Please try again later."
#~ msgstr ""
#~ "گیم نتوانست در دفترچهٔ راهنمای کاربران جستجو کند چون نمی‌توانست به کارگزار "
#~ "دفترچهٔ راهنمای کاربران متصل شود. لطفاً کمی بعد دوباره امتحان کنید."
#~ msgid ""
-#~ "Pidgin was unable to change your password due to an error connecting to the "
-#~ "Gadu-Gadu server. Please try again later."
+#~ "Pidgin was unable to change your password due to an error connecting to "
+#~ "the Gadu-Gadu server. Please try again later."
#~ msgstr ""
#~ "به دلیل اشکال در اتصال به کارگزار Gadu-Gadu گیم نتوانست گذرواژهٔ شما را "
#~ "تغییر دهد. لطفاً کمی بعد دوباره امتحان کنید."
@@ -16037,8 +16454,8 @@ msgstr "این متصل‌شونده‌ برای اشکال‌زدایی کار
#~ msgstr "دسترسی به مجموعه تنظیمات کاربر ممکن نیست."
#~ msgid ""
-#~ "Pidgin was unable to access this user's profile due to an error connecting "
-#~ "to the directory server. Please try again later."
+#~ "Pidgin was unable to access this user's profile due to an error "
+#~ "connecting to the directory server. Please try again later."
#~ msgstr ""
#~ "به علت وجود خطایی در اتصال به کارگزار دفترچهٔ راهنمای کاربران، گیم نتوانست "
#~ "به مجموعه تنظیمات این کاربر دسترسی پیدا کند. لطفاً کمی دیرتر دوباره تلاش "
@@ -16173,9 +16590,6 @@ msgstr "این متصل‌شونده‌ برای اشکال‌زدایی کار
#~ msgid_plural "(%d messages)"
#~ msgstr[0] "(%Id پیغام)"
-#~ msgid "(1 message)"
-#~ msgstr "(۱ پیغام)"
-
#~ msgid "%s logged in."
#~ msgstr "‏%s وارد سیستم شد."
diff --git a/po/fi.po b/po/fi.po
index 083cc974a6..5631e9f206 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -1,7 +1,7 @@
# Pidgin Finnish translation
# Copyright (C) 2002 Tero Kuusela <teroajk@subdimension.com>
# Copyright (C) 2003-2005 Arto Alakulju <arto@alakulju.net>
-# Copyright (C) 2005-2008 Timo Jyrinki <timo.jyrinki@iki.fi>
+# Copyright (C) 2005-2009 Timo Jyrinki <timo.jyrinki@iki.fi>
#
# This file is distributed under the same license as the Pidgin package.
#
@@ -10,8 +10,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-01-07 13:30+0200\n"
-"PO-Revision-Date: 2009-01-23 19:58+0200\n"
+"POT-Creation-Date: 2009-04-30 10:38-0400\n"
+"PO-Revision-Date: 2009-04-28 16:31+0300\n"
"Last-Translator: Timo Jyrinki <timo.jyrinki@iki.fi>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -34,7 +34,7 @@ msgid ""
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -43,7 +43,7 @@ msgstr ""
"Käyttö: %s [VALITSIN]...\n"
"\n"
" -c, --config=HAK käytä hakemistoa HAK asetustiedostoille\n"
-" -d, --debug kirjoita virheenjäljitysviestit putkeen stdout\n"
+" -d, --debug kirjoita virheenjäljitysviestit putkeen stderr\n"
" -h, --help näytä tämä ohje ja poistu\n"
" -n, --nologin älä kirjaudu automaattisesti\n"
" -v, --version näytä nykyinen versionumero ja poistu\n"
@@ -608,19 +608,6 @@ msgstr ""
msgid "Send To"
msgstr "Lähetä käyttäjälle"
-msgid "Invite message"
-msgstr "Kutsuviesti"
-
-msgid "Invite"
-msgstr "Kutsu"
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Anna kutsuttavan käyttäjän nimi sekä vapaaehtoinen \n"
-"kutsuviesti."
-
msgid "Conversation"
msgstr "Keskustelu"
@@ -880,6 +867,40 @@ msgstr "Kaikki keskustelut"
msgid "System Log"
msgstr "Järjestelmäloki"
+msgid "Calling ... "
+msgstr "Soitetaan..."
+
+msgid "Hangup"
+msgstr "Katkaise"
+
+#. Number of actions
+msgid "Accept"
+msgstr "Hyväksy"
+
+msgid "Reject"
+msgstr "Kieltäydy"
+
+msgid "Call in progress."
+msgstr "Puhelu käynnissä."
+
+msgid "The call has been terminated."
+msgstr "Puhelu on päättynyt."
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr "%s haluaa aloittaa ääni-istunnon kanssasi."
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+"%s yrittää aloittaa kanssasi mediaistuntoa, jonka tyyppi ei ole tuettu."
+
+msgid "You have rejected the call."
+msgstr "Olet hylännyt puhelun."
+
+msgid "call: Make an audio call."
+msgstr "call: Tee äänipuhelu."
+
msgid "Emails"
msgstr "Sähköpostit"
@@ -914,6 +935,9 @@ msgstr "Jatka"
msgid "IM"
msgstr "Pikaviesti"
+msgid "Invite"
+msgstr "Kutsu"
+
msgid "(none)"
msgstr "(ei mitään)"
@@ -1118,7 +1142,6 @@ msgstr "%s on poissa. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s on lähettämässä sinulle viestiä. (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "Tuntematon ilmoitinviesti. Raportoi tästä!"
@@ -1164,7 +1187,6 @@ msgstr "Minuutteja ennen tilan asetusta"
msgid "Change status to"
msgstr "Vaihda tila seuraavaksi"
-#. Conversations
msgid "Conversations"
msgstr "Keskustelut"
@@ -1529,6 +1551,31 @@ msgstr "GntLastLog"
msgid "Lastlog plugin."
msgstr "Lastlog-liitännäinen."
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+"\n"
+"Noudetaan TinyURL-osoitetta..."
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr "Luo TinyURL vain tämän pituisille tai pidemmille osoitteille"
+
+msgid "TinyURL (or other) address prefix"
+msgstr "TinyURL:n (tai muun) osoite-etuliite"
+
+msgid "TinyURL"
+msgstr "TinyURL"
+
+msgid "TinyURL plugin"
+msgstr "TinyURL-liitännäinen"
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+"Vastaanotettaessa viestiä jossa on URL-osoitteita, käytä TinyURL-palvelua "
+"helpompaa kopiomista varten"
+
msgid "accounts"
msgstr "käyttäjätilit"
@@ -1629,13 +1676,6 @@ msgstr "Hyväksy varmenne kohteelle %s?"
msgid "SSL Certificate Verification"
msgstr "SSL-varmenteen tarkistus"
-#. Number of actions
-msgid "Accept"
-msgstr "Hyväksy"
-
-msgid "Reject"
-msgstr "Kieltäydy"
-
msgid "_View Certificate..."
msgstr "_Näytä varmenne..."
@@ -1781,6 +1821,15 @@ msgstr "%s poistui huoneesta."
msgid "%s left the room (%s)."
msgstr "%s poistui huoneesta (%s)."
+msgid "Invite to chat"
+msgstr "Kutsu keskusteluun"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr "Anna kutsuttavan käyttäjän nimi sekä vapaaehtoinen viesti."
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "Yhteyden saaminen epäonnistui: %s"
@@ -2617,6 +2666,31 @@ msgstr "Tallenna yhteydettömät viestit ilmoittimeen"
msgid "Do not ask. Always save in pounce."
msgstr "Älä kysy. Tallenna aina ilmoittimeen."
+msgid "One Time Password"
+msgstr "Kertasalasana"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr "Kertasalasanan tuki"
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr "Pakota käyttöön salasanat, joita käytetään vain kerran."
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2826,7 +2900,6 @@ msgid ""
msgstr ""
"Paikalliseen mDNS-palvelimeen ei voi luoda yhteyttä. Onko se käynnissä?"
-#. Creating the options for the protocol
msgid "First name"
msgstr "Etunimi"
@@ -2858,6 +2931,10 @@ msgstr "Bonjour-yhteyskäytäntöliitännäinen"
msgid "Purple Person"
msgstr "Purple-henkilö"
+#. Creating the options for the protocol
+msgid "Local Port"
+msgstr "Paikallinen portti"
+
msgid "Bonjour"
msgstr "Bonjour"
@@ -3014,6 +3091,7 @@ msgstr "Valitse ryhmäkeskustelu tuttavalle: %s"
msgid "Add to chat..."
msgstr "Lisää ryhmäkeskusteluun..."
+#. Global
msgid "Available"
msgstr "Tavoitettavissa"
@@ -3360,6 +3438,16 @@ msgstr ""
"Palvelin hylkäsi valitsemasi tilinimen. Siinä on todennäköisesti kiellettyjä "
"merkkejä."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "Kutsumanimi ”%s” on jo käytössä."
+
+msgid "Nickname in use"
+msgstr "Kutsumanimi on käytössä"
+
msgid "Cannot change nick"
msgstr "Ei kyetty muuttamaan kutsumanimeä"
@@ -3629,6 +3717,41 @@ msgstr "Virheellinen tunnistushaaste palvelimelta"
msgid "SASL error"
msgstr "SASL-virhe"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "Syytä ei annettu"
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Versiota ei tueta"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"Yhteyttä palvelimeen ei voi muodostaa:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"Yhteyttä palvelimeen ei voi muodostaa:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "Yhteyden luominen epäonnistui"
+
+msgid "Unable to create socket"
+msgstr "Pistokkeen luonti epäonnistui"
+
+msgid "Write error"
+msgstr "Virhe kirjoituksessa"
+
msgid "Full Name"
msgstr "Koko nimi"
@@ -3695,6 +3818,9 @@ msgstr "Asiakasohjelma"
msgid "Operating System"
msgstr "Käyttöjärjestelmä"
+msgid "Local Time"
+msgstr "Paikallinen aika"
+
msgid "Last Activity"
msgstr "Viimeisin aktiivisena olo"
@@ -4023,9 +4149,6 @@ msgstr "Etsi huoneita"
msgid "You require encryption, but it is not available on this server."
msgstr "Salausta vaadittu, mutta sitä ei tueta tällä palvelimella."
-msgid "Write error"
-msgstr "Virhe kirjoituksessa"
-
msgid "Ping timeout"
msgstr "Pingin aikakatkaisu"
@@ -4034,14 +4157,9 @@ msgstr "Virhe luettaessa"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"Yhteyttä palvelimeen ei voi muodostaa:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "Pistokkeen luonti epäonnistui"
msgid "Invalid XMPP ID"
msgstr "Epäkelpo XMPP-ID"
@@ -4049,6 +4167,10 @@ msgstr "Epäkelpo XMPP-ID"
msgid "Invalid XMPP ID. Domain must be set."
msgstr "Epäkelpo XMPP-ID. Verkkoalue pitää olla asetettu."
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Palvelimeen ei saatu yhteyttä."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "%s@%s:n rekisteröinti onnistui"
@@ -4139,6 +4261,12 @@ msgstr "Palvelin ei tue estämistä"
msgid "Not Authorized"
msgstr "Ei valtuuksia"
+msgid "Mood"
+msgstr "Mieliala"
+
+msgid "Now Listening"
+msgstr "Kuuntelee nyt"
+
msgid "Both"
msgstr "molemmille"
@@ -4160,12 +4288,6 @@ msgstr "Ei mitään"
msgid "Subscription"
msgstr "Tilailmoitus"
-msgid "Mood"
-msgstr "Mieliala"
-
-msgid "Now Listening"
-msgstr "Kuuntelee nyt"
-
msgid "Mood Text"
msgstr "Mielialan teksti"
@@ -4404,17 +4526,25 @@ msgid "Unable to ping user %s"
msgstr "Käyttäjää %s ei voi pingata."
#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr "Äänimerkkiä ei voi lähettää, koska mitään ei tiedetä käyttäjästä %s."
#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+msgid "Unable to buzz, because %s might be offline."
msgstr ""
"Äänimerkkiä ei voi lähettää, koska käyttäjä %s voi olla poissa linjoilta."
#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
-msgstr "Äänimerkkiä ei voi lähettää, koska käyttäjä %s ei tue sitä."
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
+msgstr ""
+"Äänimerkkiä ei voi lähettää, koska käyttäjä %s ei tue sitä tai ei halua "
+"vastaanottaa äänimerkkejä tällä hetkellä."
+
+#, c-format
+msgid "Buzzing %s..."
+msgstr "Töötätään tuttavalle %s..."
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
@@ -4426,8 +4556,33 @@ msgid "%s has buzzed you!"
msgstr "%s on töötännyt sinulle."
#, c-format
-msgid "Buzzing %s..."
-msgstr "Töötätään tuttavalle %s..."
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "Mediaa ei voi alustaa käyttäjän %s kanssa: virheellinen JID."
+
+#, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "Mediaa ei voi alustaa käyttäjän %s kanssa: käyttäjä ei ole linjoilla"
+
+#, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr ""
+"Mediaa ei voi alustaa käyttäjän %s kanssa: käyttäjän läsnäolotilaa ei ole "
+"tilattu"
+
+msgid "Media Initiation Failed"
+msgstr "Median alustus epäonnistui"
+
+#, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "Valitse käyttäjän %s sijainti jonne haluat aloittaa mediaistunnon."
+
+msgid "Select a Resource"
+msgstr "Valitse sijainti"
+
+msgid "Initiate Media"
+msgstr "Aloita median käyttö"
msgid "config: Configure a chat room."
msgstr "config: Konfiguroi ryhmäkeskusteluhuone."
@@ -4582,6 +4737,18 @@ msgstr "Virhe liityttäessä ryhmäkeskusteluun %s"
msgid "Error in chat %s"
msgstr "Virhe ryhmäkeskustelussa: %s"
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "Kaistansisäisessä tavuvirtasiirrossa tapahtui virhe\n"
+
+msgid "Transfer was closed."
+msgstr "Siirto suljettiin."
+
+msgid "Failed to open the file"
+msgstr "Tiedoston avaaminen epäonnistui"
+
+msgid "Failed to open in-band bytestream"
+msgstr "Kaistansisäisen tavuvirran avaaminen epäonnistui"
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4607,9 +4774,6 @@ msgstr ""
msgid "Please select the resource of %s to which you would like to send a file"
msgstr "Valitse käyttäjän %s sijainti johon haluat lähettää tiedoston"
-msgid "Select a Resource"
-msgstr "Valitse sijainti"
-
msgid "Edit User Mood"
msgstr "Muuta käyttäjän mielialaa"
@@ -4644,9 +4808,6 @@ msgstr "Toiminnot"
msgid "Select an action"
msgstr "Valitse toiminto"
-msgid "Unable to retrieve MSN Address Book"
-msgstr "MSN-osoitekirjaa ei onnistuttu noutamaan"
-
#. 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
@@ -6415,7 +6576,7 @@ msgstr ""
"kirjaimella ja sisältää vain kirjaimia, numeroita ja välilyöntejä, tai "
"sisältää vain numeroita."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr "Epäkelpo käyttäjänimi."
@@ -6431,7 +6592,7 @@ msgstr "Käyttäjätilisi palvelu on parhaillaan keskeytetty."
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "AOL-pikaviestipalvelu ei tilapäisesti ole käytössä."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6611,7 +6772,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] "Et saanut %hu viestiä %s:lta tuntemattomasta syystä."
msgstr[1] "Et saanut %hu viestiä %s:lta tuntemattomasta syystä."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "Viestiä ei voi lähettää: %s"
@@ -6923,6 +7084,7 @@ msgstr "Y_hdistä"
msgid "Get AIM Info"
msgstr "Hae AIM-tiedot"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "Muokkaa kommenttia"
@@ -7203,6 +7365,34 @@ msgstr "Päivitä"
msgid "Could not change buddy information."
msgstr "Tuttavan tietojen muuttaminen ei onnistunut."
+msgid "Mobile"
+msgstr "Liikkeellä"
+
+msgid "Note"
+msgstr "Huomautus"
+
+#. callback
+msgid "Buddy Memo"
+msgstr "Tuttavamuistio"
+
+msgid "Change his/her memo as you like"
+msgstr "Muuta henkilön muistiota halutulla tavalla"
+
+msgid "_Modify"
+msgstr "_Muokkaa"
+
+msgid "Memo Modify"
+msgstr "Muistion muokkaaminen"
+
+msgid "Server says:"
+msgstr "Palvelin sanoo:"
+
+msgid "Your request was accepted."
+msgstr "Pyyntösi hyväksyttiin."
+
+msgid "Your request was rejected."
+msgstr "Pyyntösi hylättiin."
+
#, c-format
msgid "%u requires verification"
msgstr "%u pyytää valtuutusta"
@@ -7511,6 +7701,12 @@ msgstr "<p><b>Ihanat päivitysten kirjoittajat</b>:<br>\n"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<p><b>Tunnustus</b>:<br>\n"
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<p><b>Tunnolliset testaajat</b>:<br>\n"
+
+msgid "and more, please let me know... thank you!))"
+msgstr "ja muuta, kerro minulle... kiitos!))"
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr "<p><i>Ja, kaikki pojat takahuoneessa...</i><br>\n"
@@ -7536,6 +7732,9 @@ msgstr "Päivitä kaikki QQ Qunit"
msgid "About OpenQ"
msgstr "Tietoja OpenQ:sta"
+msgid "Modify Buddy Memo"
+msgstr "Muokkaa tuttavan muistiota"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7573,6 +7772,9 @@ msgstr "Näytä palvelinhuomautukset"
msgid "Show server news"
msgstr "Näytä palvelinuutiset"
+msgid "Show chat room when msg comes"
+msgstr "Näytä keskusteluhuone viestin tullessa"
+
msgid "Keep alive interval (seconds)"
msgstr "Jatkuvan yhteydenpidon aikaväli (sekunneissa)"
@@ -7640,7 +7842,6 @@ msgstr ""
"Tuntematon vastauskoosi kirjauduttaessa sisään (0x%02X):\n"
"%s"
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "Yhteyden muodostaminen epäonnistui."
@@ -8542,9 +8743,6 @@ msgstr "Organisaatio"
msgid "Unit"
msgstr "Yksikkö"
-msgid "Note"
-msgstr "Huomautus"
-
msgid "Join Chat"
msgstr "Liity ryhmäkeskusteluun"
@@ -9232,194 +9430,12 @@ msgid "Auth Domain"
msgstr "Todennus/verkkoalue"
#, c-format
-msgid "Looking up %s"
-msgstr "Etsitään %s"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "%s: yhteyden muodostaminen epäonnistui"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Kirjautuminen: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "Ei kyetty kirjoittamaan tiedostoa %s."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "Ei kyetty lukemaan tiedostoa %s."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "Viesti on liian pitkä, viimeiset %s tavua katkaistu."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s ei ole parhaillaan kirjautuneena sisään."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "%s:n varoittaminen ei ole sallittua."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "Viesti on hylätty, ylität palvelimen nopeusrajan."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "Ryhmäkeskustelu %s ei ole käytettävissä."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "Lähetät viestejä %s:lle liian nopeasti."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "Et saanut %s:n pikaviestiä koska se oli liian suuri."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "Et saanut %s:n pikaviestiä koska se lähetettiin liian nopeasti."
-
-#, c-format
-msgid "Failure."
-msgstr "Epäonnistuminen."
-
-#, c-format
-msgid "Too many matches."
-msgstr "Liian monta tulosta."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "Tarvitaan lisää määritteitä."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "Hakemistopalvelu ei tilapäisesti ole käytettävissä."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "Sähköpostin katsominen rajoitettu."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "Avainsanasta ei välitetty."
-
-#, c-format
-msgid "No keywords."
-msgstr "Ei avainsanoja."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "Käyttäjällä ei ole hakemistotietoja."
-
-#, c-format
-msgid "Country not supported."
-msgstr "Maa ei tuettu."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Tunnistamaton epäonnistuminen: %s."
-
-#, c-format
-msgid "Incorrect username or password."
-msgstr "Virheellinen käyttäjänimi tai salasana."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "Palvelu ei tilapäisesti ole käytössä."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "Varoitustasosi on parhaillaan liian korkea kirjautuaksesi sisään."
-
-#, 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 ""
-"Olet ottanut ja katkaissut yhteyden liian tiheään. Odota kymmenen minuuttia "
-"ja yritä uudestaan. Jos jatkat yrittämistä, joudut odottamaan vielä "
-"pidempään."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "Tuntematon sisäänkirjautumisvirhe esiintyi: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "Tuntematon virhe, %d, esiintyi. Tiedot: %s"
-
-msgid "Invalid Groupname"
-msgstr "Epäkelpo ryhmän nimi"
-
-msgid "Connection Closed"
-msgstr "Yhteys suljettu"
-
-msgid "Waiting for reply..."
-msgstr "Odotetaan vastausta..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "TOC on palannut tauoltaan. Voit lähettää viestejä jälleen."
-
-msgid "Password Change Successful"
-msgstr "Salasanan vaihto onnistui"
-
-msgid "_Group:"
-msgstr "_Ryhmä:"
-
-msgid "Get Dir Info"
-msgstr "Hae hakemistotiedot"
-
-msgid "Set Dir Info"
-msgstr "Aseta hakemistotiedot"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "%s:n avaaminen kirjoitusta varten epäonnistui!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr ""
-"Tiedostonsiirto epäonnistui. Toinen osapuoli luultavasti katkaisi siirron."
-
-msgid "Could not connect for transfer."
-msgstr "Yhteyttä siirtoa varten ei voi muodostaa."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "Tiedosto-otsikkoa ei voi kirjoittaa. Tiedostoa ei siirretä."
-
-msgid "Save As..."
-msgstr "Tallenna nimellä..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s pyytää %s hyväksymään %d tiedoston: %s (%.2f %s)%s%s"
-msgstr[1] "%s pyytää %s hyväksymään %d tiedostot: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s pyytää sinua lähettämään hänelle tiedoston"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "TOC-yhteyskäytäntöliitännäinen"
-
-#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr "%s on lähettänyt webkamera-kutsun, mikä ei ole vielä tuettuna."
+msgid "Your SMS was not delivered"
+msgstr "Tekstiviestiä (SMS) ei välitetty"
+
msgid "Your Yahoo! message did not get sent."
msgstr "Yahoo!-viestiäsi ei lähetetty."
@@ -10019,9 +10035,6 @@ msgstr "Älä häiritse"
msgid "Extended away"
msgstr "Pidennetty poissaolo"
-msgid "Mobile"
-msgstr "Liikkeellä"
-
msgid "Listening to music"
msgstr "Kuuntelee musiikkia"
@@ -10063,18 +10076,6 @@ msgstr "+++ %s on aktiivinen"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "Virhe luettaessa %s"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"%s:n lukemisessa tapahtui virhe. Niitä ei ladattu ja vanha tiedosto on "
-"nimetty uudelleen nimellä %s~."
-
msgid "Calculating..."
msgstr "Lasketaan..."
@@ -10150,6 +10151,14 @@ msgid "Unable to connect to %s: %s"
msgstr "Kohteeseen %s ei voi yhdistää: %s"
#, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+"Palvelimelle %s ei voi yhdistää: palvelin vaatii TSL/SSL-tuen, mutta TLS/SSL-"
+"tukea ei löydy."
+
+#, c-format
msgid " - %s"
msgstr " - %s"
@@ -10182,6 +10191,18 @@ msgstr "Yhteys torjuttu."
msgid "Address already in use."
msgstr "Osoite on jo käytössä."
+#, c-format
+msgid "Error Reading %s"
+msgstr "Virhe luettaessa %s"
+
+#, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"%s:n lukemisessa tapahtui virhe. Tiedostoa ei ladattu ja vanha tiedosto on "
+"nimetty uudelleen nimelle %s~."
+
msgid "Internet Messenger"
msgstr "Pikaviestin"
@@ -10224,10 +10245,8 @@ msgstr "Il_moita uudesta sähköpostista"
msgid "Use this buddy _icon for this account:"
msgstr "Käytä tätä tuttavakuvaketta tälle käyttäjät_ilille:"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s-valinnat"
+msgid "_Advanced"
+msgstr "_Lisäasetukset"
msgid "Use GNOME Proxy Settings"
msgstr "Käytä Gnomen välipalvelinasetuksia"
@@ -10262,9 +10281,6 @@ msgstr "Jos katsot todella tarkkaan"
msgid "you can see the butterflies mating"
msgstr "voit nähdä perhosten parittelevan"
-msgid "Proxy Options"
-msgstr "Välipalvelinvalinnat"
-
msgid "Proxy _type:"
msgstr "Välipalvelimen _tyyppi:"
@@ -10292,8 +10308,8 @@ msgstr "_Perus"
msgid "Create _this new account on the server"
msgstr "Luo _tämä uusi käyttäjätili palvelimelle"
-msgid "_Advanced"
-msgstr "_Lisäasetukset"
+msgid "_Proxy"
+msgstr "_Välipalvelin"
msgid "Enabled"
msgstr "Käytössä"
@@ -10368,6 +10384,15 @@ msgstr "Hae _tiedot"
msgid "I_M"
msgstr "_Pikaviesti"
+msgid "_Audio Call"
+msgstr "_Äänipuhelu"
+
+msgid "Audio/_Video Call"
+msgstr "Ääni/_videopuhelu"
+
+msgid "_Video Call"
+msgstr "_Videopuhelu"
+
msgid "_Send File..."
msgstr "_Lähetä tiedosto..."
@@ -10504,6 +10529,9 @@ msgstr "/Työkalut/Tuttava_ilmoittimet"
msgid "/Tools/_Certificates"
msgstr "/Työkalut/_Varmenteet"
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Työkalut/Omat h_ymiöt"
+
msgid "/Tools/Plu_gins"
msgstr "/Työkalut/_Liitännäiset"
@@ -10513,9 +10541,6 @@ msgstr "/Työkalut/A_setukset"
msgid "/Tools/Pr_ivacy"
msgstr "/Työkalut/Yks_ityisyys"
-msgid "/Tools/Smile_y"
-msgstr "/Työkalut/H_ymiö"
-
msgid "/Tools/_File Transfers"
msgstr "/Työkalut/_Tiedostonsiirrot..."
@@ -10633,8 +10658,8 @@ msgstr "Käsin"
msgid "By status"
msgstr "Tilan mukaan"
-msgid "By log size"
-msgstr "Lokin koon mukaan"
+msgid "By recent log activity"
+msgstr "Viimeisimpien lokikirjauksien mukaan"
#, c-format
msgid "%s disconnected"
@@ -10650,6 +10675,9 @@ msgstr "Yhdistä uudelleen"
msgid "Re-enable"
msgstr "Ota uudelleen käyttöön"
+msgid "SSL FAQs"
+msgstr "SSL-UKK:t"
+
msgid "Welcome back!"
msgstr "Tervetuloa takaisin."
@@ -10740,6 +10768,9 @@ msgstr ""
msgid "A_lias:"
msgstr "_Lempinimi:"
+msgid "_Group:"
+msgstr "_Ryhmä:"
+
msgid "Auto_join when account becomes online."
msgstr "Liity automaattisesti kun käyttä_jätili pääsee linjoille."
@@ -10792,12 +10823,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr "Kutsu tuttava keskusteluhuoneeseen"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr "Anna kutsuttavan käyttäjän nimi sekä vapaaehtoinen viesti."
-
msgid "_Buddy:"
msgstr "_Tuttava:"
@@ -10872,6 +10897,18 @@ msgstr "/Keskustelu/_Tallenna nimellä..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Keskustelu/T_yhjennä takaisinvieritys"
+msgid "/Conversation/M_edia"
+msgstr "/Keskustelu/M_edia"
+
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Keskustelu/Media/_Äänipuhelu"
+
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Keskustelu/Media/_Videopuhelu"
+
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Keskustelu/Media/Ääni\\/video_puhelu"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Keskustelu/_Lähetä tiedosto..."
@@ -10944,6 +10981,15 @@ msgstr "/Keskustelu"
msgid "/Conversation/View Log"
msgstr "/Keskustelu/Näytä loki..."
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Keskustelu/Media/Äänipuhelu"
+
+msgid "/Conversation/Media/Video Call"
+msgstr "/Keskustelu/Media/Videopuhelu"
+
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Keskustelu/Media/Ääni\\/videopuhelu"
+
msgid "/Conversation/Send File..."
msgstr "/Keskustelu/Lähetä tiedosto..."
@@ -11127,6 +11173,9 @@ msgstr "esittäjä"
msgid "Ka-Hing Cheung"
msgstr "Ka-Hing Cheung"
+msgid "voice and video"
+msgstr "ääni ja video"
+
msgid "support"
msgstr "tuki"
@@ -11266,6 +11315,9 @@ msgstr "georgia"
msgid "Ubuntu Georgian Translators"
msgstr "Ubuntun georgian kääntäjät"
+msgid "Khmer"
+msgstr "khmeeri"
+
msgid "Kannada"
msgstr "kannada"
@@ -11287,6 +11339,9 @@ msgstr "liettua"
msgid "Macedonian"
msgstr "makedonia"
+msgid "Mongolian"
+msgstr "mongolia"
+
msgid "Bokmål Norwegian"
msgstr "kirjanorja"
@@ -11402,9 +11457,32 @@ msgstr ""
"anna ohjelmalle minkäänlaista takuuta.<BR><BR>"
#, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+"<FONT SIZE=\"4\">UKK:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+"<FONT SIZE=\"4\">Apua sähköpostitse (engl.):</FONT> <A HREF=\"mailto:"
+"support@pidgin.im\">support@pidgin.im</A><BR/><BR/>"
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr ""
+"<FONT SIZE=\"4\">IRC-kanava:</FONT> #pidgin palvelimella irc.freenode."
+"net<BR><BR>"
+
+#, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr ""
-"<FONT SIZE=\"4\">IRC:</FONT> #pidgin palvelimella irc.freenode.net<BR><BR>"
+"<FONT SIZE=\"4\">XMPP-keskustelu:</FONT> devel@conference.pidgin.im<BR><BR>"
msgid "Current Developers"
msgstr "Nykyiset kehittäjät"
@@ -11704,15 +11782,6 @@ msgstr "Kirjoittamishuomautukseen käytettävä kirjasin"
msgid "Enable typing notification"
msgstr "Ota kirjoittamishuomautus käyttöön"
-msgid "_Copy Email Address"
-msgstr "_Kopioi sähköpostiosoite"
-
-msgid "_Open Link in Browser"
-msgstr "_Avaa linkki selaimessa"
-
-msgid "_Copy Link Location"
-msgstr "_Kopioi linkin osoite"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -11964,6 +12033,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -11978,6 +12048,7 @@ msgstr ""
"\n"
" -c, --config=HAK käytä hakemistoa HAK asetustiedostoille\n"
" -d, --debug kirjoita virheenjäljitysviestit putkeen stdout\n"
+" -f, --force-online pakota ”tavoitettavissa” riippumatta verkon tilasta\n"
" -h, --help näytä tämä ohje ja poistu\n"
" -m, --multiple älä pitäydy vain yhdessä instanssissa\n"
" -n, --nologin älä kirjaudu automaattisesti\n"
@@ -11994,6 +12065,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12007,6 +12079,7 @@ msgstr ""
"\n"
" -c, --config=HAK käytä hakemistoa HAK asetustiedostoille\n"
" -d, --debug kirjoita virheenjäljitysviestit putkeen stdout\n"
+" -f, --force-online pakota ”tavoitettavissa” riippumatta verkon tilasta\n"
" -h, --help näytä tämä ohje ja poistu\n"
" -m, --multiple älä pitäydy vain yhdessä instanssissa\n"
" -n, --nologin älä kirjaudu automaattisesti\n"
@@ -12048,11 +12121,26 @@ msgstr ""
msgid "Pidgin"
msgstr "Pidgin"
-msgid "Open All Messages"
-msgstr "Avaa kaikki viestit"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr "Poistutaan, koska toinen libpurple-asiakas on jo käynnissä.\n"
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Sinulle on postia!</span>"
+msgid "/_Media"
+msgstr "/_Media"
+
+msgid "/Media/_Hangup"
+msgstr "/Media/_Katkaise"
+
+msgid "Calling..."
+msgstr "Soitetaan..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr "%s haluaa aloittaa ääni/videoistunnon kanssasi."
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr "%s haluaa aloittaa videoistunnon kanssasi."
#, c-format
msgid "%s has %d new message."
@@ -12081,6 +12169,24 @@ msgid ""
"The 'Manual' browser command has been chosen, but no command has been set."
msgstr "Oma selainkomento -asetus valittu, mutta komentoa ei ole asetettu."
+msgid "Open All Messages"
+msgstr "Avaa kaikki viestit"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Sinulle on postia!</span>"
+
+msgid "New Pounces"
+msgstr "Uusi ilmoituksia"
+
+msgid "Dismiss"
+msgstr "Hylkää"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Uusi ilmoitus</span>"
+
+msgid "No message"
+msgstr "Ei viestiä"
+
msgid "The following plugins will be unloaded."
msgstr "Seuraavat liitännäiset otetaan pois käytöstä."
@@ -12129,6 +12235,9 @@ msgstr "<b>Liitännäisen yksityiskohdat</b>"
msgid "Select a file"
msgstr "Valitse tiedosto"
+msgid "Modify Buddy Pounce"
+msgstr "Muokkaa tuttavailmoitinta"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "Kenestä ilmoitetaan"
@@ -12199,6 +12308,50 @@ msgstr "_Toistuva"
msgid "Pounce Target"
msgstr "Ilmoituksen kohde"
+#, c-format
+msgid "Started typing"
+msgstr "alkoi kirjoittaa"
+
+#, c-format
+msgid "Paused while typing"
+msgstr "keskeytti kirjoittamisen"
+
+#, c-format
+msgid "Signed on"
+msgstr "kirjautui sisään"
+
+#, c-format
+msgid "Returned from being idle"
+msgstr "palasi oltuaan jouten"
+
+#, c-format
+msgid "Returned from being away"
+msgstr "palasi oltuaan poissa"
+
+#, c-format
+msgid "Stopped typing"
+msgstr "lopetti kirjoittamisen"
+
+#, c-format
+msgid "Signed off"
+msgstr "kirjautui ulos"
+
+#, c-format
+msgid "Became idle"
+msgstr "muuttui jouten olevaksi"
+
+#, c-format
+msgid "Went away"
+msgstr "muuttui poissa olevaksi"
+
+#, c-format
+msgid "Sent a message"
+msgstr "lähetti viestin"
+
+#, c-format
+msgid "Unknown.... Please report this!"
+msgstr "Tuntematon... Raportoi tästä!"
+
msgid "Smiley theme failed to unpack."
msgstr "Hymiöteeman purkaminen epäonnistui."
@@ -12221,6 +12374,11 @@ msgstr "Pikanäppäimet"
msgid "Cl_ose conversations with the Escape key"
msgstr "S_ulje keskustelut Escape-näppäimellä"
+#. Buddy List Themes
+msgid "Buddy List Theme"
+msgstr "Tuttavaluettelon teema"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "Ilmoitusalueen kuvake"
@@ -12331,9 +12489,6 @@ msgstr "Välipalvelimen asetusohjelmaa ei voi käynnistää."
msgid "Cannot start browser configuration program."
msgstr "Selaimen asetusohjelmaa ei voi käynnistää."
-msgid "ST_UN server:"
-msgstr "ST_UN-palvelin:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">Esimerkki: stunserver.org</span>"
@@ -12358,6 +12513,10 @@ msgstr "_Ensimmäinen portti:"
msgid "_End port:"
msgstr "Viimeinen _portti:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr "Edelleenvälityspalvelin (TURN)"
+
msgid "Proxy Server &amp; Browser"
msgstr "Välipalvelin &amp; selain"
@@ -12386,6 +12545,10 @@ msgstr "Välipalvelin"
msgid "No proxy"
msgstr "Ei välipalvelinta"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr "Käytä etä-DNS:ää SOCKS4-välipalvelimien kanssa"
+
msgid "_User:"
msgstr "_Käyttäjä:"
@@ -12544,12 +12707,12 @@ msgstr "Poissa ja jouten ollessa"
msgid "Auto-away"
msgstr "Automaattinen poissaoloasetus"
-msgid "Change status when _idle"
-msgstr "Vaihda tila, kun ollaan _jouten"
-
msgid "_Minutes before becoming idle:"
msgstr "_Minuutteja ennen jouten olevaksi asettamista:"
+msgid "Change status when _idle"
+msgstr "Vaihda tila, kun ollaan _jouten"
+
msgid "Change _status to:"
msgstr "Vaihda tila seuraavaksi:"
@@ -12697,6 +12860,12 @@ msgstr "Tallenna ja _käytä"
msgid "Status for %s"
msgstr "%s:n tila"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
msgid "Custom Smiley"
msgstr "Oma hymiö"
@@ -12706,14 +12875,14 @@ msgstr "Lisää tietoja tarvitaan"
msgid "Please provide a shortcut to associate with the smiley."
msgstr "Syötä hymiöön liitettävä oikotie."
-msgid "Duplicate Shortcut"
-msgstr "Monista oikotie"
-
+#, fuzzy, c-format
msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
+"A custom smiley for '%s' already exists. Please use a different shortcut."
msgstr "Valitulle oikotielle on jo oma hymiö. Valitse toisenlainen oikotie."
+msgid "Duplicate Shortcut"
+msgstr "Monista oikotie"
+
msgid "Please select an image for the smiley."
msgstr "Valitse hymiölle kuva."
@@ -12723,16 +12892,19 @@ msgstr "Muokkaa hymiötä"
msgid "Add Smiley"
msgstr "Lisää hymiö"
-msgid "Smiley _Image"
-msgstr "Hymiön kuva"
+msgid "_Image:"
+msgstr "Ku_va:"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr "Hymiön _oikotie"
+#. Shortcut text
+msgid "S_hortcut text:"
+msgstr "Oi_kotien teksti:"
msgid "Smiley"
msgstr "Hymiö"
+msgid "Shortcut Text"
+msgstr "Oikotien teksti"
+
msgid "Custom Smiley Manager"
msgstr "Omien hymiöiden hallinta"
@@ -12858,6 +13030,15 @@ msgstr ""
"Kuvaa \"%s\" ei voi ladata: syy ei ole tiedossa, mahdollisesti vioittunut "
"kuvatiedosto"
+msgid "_Open Link"
+msgstr "_Avaa linkki"
+
+msgid "_Copy Link Location"
+msgstr "_Kopioi linkin osoite"
+
+msgid "_Copy Email Address"
+msgstr "_Kopioi sähköpostiosoite"
+
msgid "Save File"
msgstr "Tallenna tiedosto"
@@ -13832,9 +14013,6 @@ msgstr "_Pidä tuttavat-ikkuna päällimmäisenä:"
msgid "Only when docked"
msgstr "Vain telakoituna"
-msgid "_Flash window when chat messages are received"
-msgstr "_Vilkuta ikkunaa ryhmäkeskusteluviestien saapuessa"
-
msgid "Windows Pidgin Options"
msgstr "Windows Pidgin -valinnat"
@@ -13886,6 +14064,185 @@ msgstr ""
"Tätä liitännäistä voidaan käyttää XMPP-palvelimien tai -asiakasohjelmien "
"virheenjäljitykseen."
+#~ msgid "Invite message"
+#~ msgstr "Kutsuviesti"
+
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Anna kutsuttavan käyttäjän nimi sekä vapaaehtoinen \n"
+#~ "kutsuviesti."
+
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "MSN-osoitekirjaa ei onnistuttu noutamaan"
+
+#~ msgid "Looking up %s"
+#~ msgstr "Etsitään %s"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "%s: yhteyden muodostaminen epäonnistui"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Kirjautuminen: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "Ei kyetty kirjoittamaan tiedostoa %s."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "Ei kyetty lukemaan tiedostoa %s."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "Viesti on liian pitkä, viimeiset %s tavua katkaistu."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s ei ole parhaillaan kirjautuneena sisään."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "%s:n varoittaminen ei ole sallittua."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr "Viesti on hylätty, ylität palvelimen nopeusrajan."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "Ryhmäkeskustelu %s ei ole käytettävissä."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "Lähetät viestejä %s:lle liian nopeasti."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "Et saanut %s:n pikaviestiä koska se oli liian suuri."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr "Et saanut %s:n pikaviestiä koska se lähetettiin liian nopeasti."
+
+#~ msgid "Failure."
+#~ msgstr "Epäonnistuminen."
+
+#~ msgid "Too many matches."
+#~ msgstr "Liian monta tulosta."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "Tarvitaan lisää määritteitä."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "Hakemistopalvelu ei tilapäisesti ole käytettävissä."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "Sähköpostin katsominen rajoitettu."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "Avainsanasta ei välitetty."
+
+#~ msgid "No keywords."
+#~ msgstr "Ei avainsanoja."
+
+#~ msgid "User has no directory information."
+#~ msgstr "Käyttäjällä ei ole hakemistotietoja."
+
+#~ msgid "Country not supported."
+#~ msgstr "Maa ei tuettu."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Tunnistamaton epäonnistuminen: %s."
+
+#~ msgid "Incorrect username or password."
+#~ msgstr "Virheellinen käyttäjänimi tai salasana."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "Palvelu ei tilapäisesti ole käytössä."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "Varoitustasosi on parhaillaan liian korkea kirjautuaksesi sisään."
+
+#~ msgid ""
+#~ "You have been connecting and disconnecting too frequently. Wait ten "
+#~ "minutes and try again. If you continue to try, you will need to wait "
+#~ "even longer."
+#~ msgstr ""
+#~ "Olet ottanut ja katkaissut yhteyden liian tiheään. Odota kymmenen "
+#~ "minuuttia ja yritä uudestaan. Jos jatkat yrittämistä, joudut odottamaan "
+#~ "vielä pidempään."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "Tuntematon sisäänkirjautumisvirhe esiintyi: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "Tuntematon virhe, %d, esiintyi. Tiedot: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "Epäkelpo ryhmän nimi"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Yhteys suljettu"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "Odotetaan vastausta..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "TOC on palannut tauoltaan. Voit lähettää viestejä jälleen."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "Salasanan vaihto onnistui"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Hae hakemistotiedot"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Aseta hakemistotiedot"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "%s:n avaaminen kirjoitusta varten epäonnistui!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr ""
+#~ "Tiedostonsiirto epäonnistui. Toinen osapuoli luultavasti katkaisi siirron."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "Yhteyttä siirtoa varten ei voi muodostaa."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "Tiedosto-otsikkoa ei voi kirjoittaa. Tiedostoa ei siirretä."
+
+#~ msgid "Save As..."
+#~ msgstr "Tallenna nimellä..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s pyytää %s hyväksymään %d tiedoston: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s pyytää %s hyväksymään %d tiedostot: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s pyytää sinua lähettämään hänelle tiedoston"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "TOC-yhteyskäytäntöliitännäinen"
+
+#~ msgid "%s Options"
+#~ msgstr "%s-valinnat"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Välipalvelinvalinnat"
+
+#~ msgid "By log size"
+#~ msgstr "Lokin koon mukaan"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_Avaa linkki selaimessa"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "ST_UN-palvelin:"
+
+#~ msgid "Smiley _Image"
+#~ msgstr "Hymiön kuva"
+
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "Hymiön _oikotie"
+
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "_Vilkuta ikkunaa ryhmäkeskusteluviestien saapuessa"
+
#~ msgid ""
#~ "You may be disconnected shortly. You may want to use TOC until this is "
#~ "fixed. Check %s for updates."
@@ -14834,9 +15191,6 @@ msgstr ""
#~ msgid "minutes."
#~ msgstr "minuuttia."
-#~ msgid "Nickname: %s\n"
-#~ msgstr "Kutsumanimi: %s\n"
-
#~ msgid ""
#~ "\n"
#~ "Idle: %s"
@@ -15350,9 +15704,6 @@ msgstr ""
#~ msgid "Calling %s"
#~ msgstr "Soitetaan %s"
-#~ msgid "End Call"
-#~ msgstr "Lopeta puhelu"
-
#~ msgid "Receiving call from %s"
#~ msgstr "Puhelu tulossa käyttäjältä %s"
@@ -15594,9 +15945,6 @@ msgstr ""
#~ msgid "_Idle"
#~ msgstr "_on jouten"
-#~ msgid "Retur_n from idle"
-#~ msgstr "palaa oltuaan _jouten"
-
#~ msgid "Bro_wse..."
#~ msgstr "_Selaa"
@@ -15632,9 +15980,6 @@ msgstr ""
#~ msgstr[0] "(%d viesti)"
#~ msgstr[1] "(%d viestiä)"
-#~ msgid "(1 message)"
-#~ msgstr "(1 viesti)"
-
#~ msgid "Hide Disconnect Errors"
#~ msgstr "Piilota yhteydenkatkaisuvirheilmoitukset"
diff --git a/po/fr.po b/po/fr.po
index 6522b81f05..abbb54d517 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -21,7 +21,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-23 01:27+0100\n"
+"POT-Creation-Date: 2009-04-30 10:38-0400\n"
"PO-Revision-Date: 2009-02-23 01:25+0100\n"
"Last-Translator: Éric Boumaour <zongo_fr@users.sourceforge.net>\n"
"Language-Team: fr <fr@li.org>\n"
@@ -622,19 +622,6 @@ msgstr ""
msgid "Send To"
msgstr "Envoyer vers"
-msgid "Invite message"
-msgstr "Message d'invitation"
-
-msgid "Invite"
-msgstr "Inviter"
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Saisissez le nom de l'utilisateur que vous voulez inviter,\n"
-"ainsi qu'un message d'invitation facultatif."
-
msgid "Conversation"
msgstr "Conversation"
@@ -897,6 +884,41 @@ msgstr "Toutes les conversations"
msgid "System Log"
msgstr "Archives des messages système"
+#, fuzzy
+msgid "Calling ... "
+msgstr "Calcul en cours"
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "Accepter"
+
+msgid "Reject"
+msgstr "Refuser"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "Vous avez quitté le salon %s%s"
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "Courriers électroniques"
@@ -931,6 +953,9 @@ msgstr "Continuer"
msgid "IM"
msgstr "Message"
+msgid "Invite"
+msgstr "Inviter"
+
msgid "(none)"
msgstr "(aucun)"
@@ -1134,7 +1159,6 @@ msgstr "%s est passé absent (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s vous a envoyé un message. (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "Événement d'alerte inconnu. Veuillez reporter cette erreur."
@@ -1544,6 +1568,28 @@ msgstr "Gnt Dernière occurrence"
msgid "Lastlog plugin."
msgstr "Dernière occurrence"
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL musicale"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "Comptes"
@@ -1644,13 +1690,6 @@ msgstr "Accepter le certificat pour %s ?"
msgid "SSL Certificate Verification"
msgstr "Vérification de certificat SSL"
-#. Number of actions
-msgid "Accept"
-msgstr "Accepter"
-
-msgid "Reject"
-msgstr "Refuser"
-
msgid "_View Certificate..."
msgstr "_Voir le certificat..."
@@ -1799,6 +1838,18 @@ msgstr "%s a quitté le salon"
msgid "%s left the room (%s)."
msgstr "%s a quitté le salon (%s)"
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Inviter à une conférence"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Saisissez le nom de l'utilisateur que vous voulez inviter dans la "
+"discussion, ainsi qu'un message d'invitation facultatif."
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "Impossible de récupérer une connexion : %s"
@@ -2646,6 +2697,32 @@ msgstr "Enregistrer les messages déconnectés dans une alerte."
msgid "Do not ask. Always save in pounce."
msgstr "Ne jamais demander. Toujours créer une alerte."
+#, fuzzy
+msgid "One Time Password"
+msgstr "Saisissez le mot de passe"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -3049,6 +3126,7 @@ msgstr "Choisissez un salon de discussions pour le contact : %s"
msgid "Add to chat..."
msgstr "Ajouter à la discussion..."
+#. Global
msgid "Available"
msgstr "Disponible"
@@ -3395,6 +3473,17 @@ msgstr ""
"Le nom de compte choisi a été rejeté par le serveur. Le nom contenait "
"probablement des caractères non valides."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "Ce nom de discussion est déjà utilisé."
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Pseudonyme"
+
msgid "Cannot change nick"
msgstr "Impossible de changer de surnom"
@@ -3675,6 +3764,41 @@ msgstr "Demande d'accès non valide du serveur"
msgid "SASL error"
msgstr "Erreur SASL"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "Pas de raison donnée"
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Version non supportée"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"Impossible de se connecter au serveur :\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"Impossible de se connecter au serveur :\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "Impossible de créer une connexion."
+
+msgid "Unable to create socket"
+msgstr "Impossible de créer le socket."
+
+msgid "Write error"
+msgstr "Erreur d'écriture"
+
msgid "Full Name"
msgstr "Nom complet"
@@ -3741,6 +3865,10 @@ msgstr "Client"
msgid "Operating System"
msgstr "Système d'exploitation"
+#, fuzzy
+msgid "Local Time"
+msgstr "Fichier local :"
+
msgid "Last Activity"
msgstr "Dernière activité"
@@ -4073,9 +4201,6 @@ msgid "You require encryption, but it is not available on this server."
msgstr ""
"Vous voulez un chiffrement, mais il n'est pas disponible sur ce serveur."
-msgid "Write error"
-msgstr "Erreur d'écriture"
-
msgid "Ping timeout"
msgstr "Pas de réponse au ping"
@@ -4084,14 +4209,9 @@ msgstr "Erreur de lecture"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"Impossible de se connecter au serveur :\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "Impossible de créer le socket."
msgid "Invalid XMPP ID"
msgstr "Identifiant XMPP non valide."
@@ -4099,6 +4219,10 @@ msgstr "Identifiant XMPP non valide."
msgid "Invalid XMPP ID. Domain must be set."
msgstr "Identifiant XMPP non valide. Le domaine doit être saisi."
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Impossible de se connecter au serveur."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "Enregistrement de %s@%s réussi"
@@ -4193,6 +4317,12 @@ msgstr "Le serveur ne supporte pas le blocage"
msgid "Not Authorized"
msgstr "Non autorisé"
+msgid "Mood"
+msgstr "Humeur"
+
+msgid "Now Listening"
+msgstr "Écoute maintenant"
+
msgid "Both"
msgstr "Bidirectionnelle"
@@ -4214,12 +4344,6 @@ msgstr "Aucun"
msgid "Subscription"
msgstr "Inscription"
-msgid "Mood"
-msgstr "Humeur"
-
-msgid "Now Listening"
-msgstr "Écoute maintenant"
-
msgid "Mood Text"
msgstr "Texte d'humeur"
@@ -4457,18 +4581,24 @@ msgstr "Impossible d'expulser l'utilisateur %s"
msgid "Unable to ping user %s"
msgstr "Impossible d'envoyer un ping à l'utilisateur %s"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr "Impossible de buzzer, rien n'est connu sur l'utilisateur %s."
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr "Impossible de buzzer, l'utilisateur %s est peut-être déconnecté."
-#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+#, fuzzy, c-format
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "Impossible de buzzer, l'utilisateur %s l'interdit."
+#, c-format
+msgid "Buzzing %s..."
+msgstr "Buzz %s..."
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
msgid "Buzz"
@@ -4478,9 +4608,38 @@ msgstr "Buzz"
msgid "%s has buzzed you!"
msgstr "%s vient de vous buzzer !"
-#, c-format
-msgid "Buzzing %s..."
-msgstr "Buzz %s..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "Impossible d'envoyer le fichier à %s, JID non valide"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "Impossible d'envoyer le fichier à %s, l'utilisateur n'est pas en ligne"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr ""
+"Impossible d'envoyer le fichier à %s, pas d'inscription à la présence de "
+"l'utilisateur"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "Erreur d'enregistrement"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr ""
+"Veuillez sélectionner parmi les ressources de %s, à laquelle vous voulez "
+"envoyer un fichier"
+
+msgid "Select a Resource"
+msgstr "Choisissez une ressource"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "Lancer une _discussion"
msgid "config: Configure a chat room."
msgstr "config : Configurer un salon de discussions"
@@ -4636,6 +4795,21 @@ msgstr "Erreur lors de l'arrivée dans la discussion %s"
msgid "Error in chat %s"
msgstr "Erreur dans la discussion %s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "Erreur lors de l'ouverture du fichier."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "Échec du transfert de fichier."
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Impossible d'ouvrir le fichier « %s » : %s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4665,9 +4839,6 @@ msgstr ""
"Veuillez sélectionner parmi les ressources de %s, à laquelle vous voulez "
"envoyer un fichier"
-msgid "Select a Resource"
-msgstr "Choisissez une ressource"
-
msgid "Edit User Mood"
msgstr "Modifier l'humeur"
@@ -6483,7 +6654,7 @@ msgstr ""
"une lettre et contenir uniquement des lettres, des chiffres et des espaces, "
"soit contenir uniquement des chiffres."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr "Nom d'utilisateur non valide."
@@ -6499,7 +6670,7 @@ msgstr "Votre compte est actuellement suspendu."
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "Le service est temporairement indisponible."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6695,7 +6866,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] "Vous avez raté %hu message de %s pour des raisons inconnues."
msgstr[1] "Vous avez raté %hu messages de %s pour des raisons inconnues."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "Impossible d'envoyer le message : %s"
@@ -7292,6 +7463,38 @@ msgstr "Mettre à jour"
msgid "Could not change buddy information."
msgstr "Impossible de changer les informations du contact."
+msgid "Mobile"
+msgstr "Téléphone portable"
+
+msgid "Note"
+msgstr "Commentaire"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "Icône du contact"
+
+msgid "Change his/her memo as you like"
+msgstr ""
+
+#, fuzzy
+msgid "_Modify"
+msgstr "Modifier"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "Modifier"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "Serveur occupé"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
#, c-format
msgid "%u requires verification"
msgstr "%u demande une vérification"
@@ -7600,6 +7803,13 @@ msgstr "<p><b>Charmants contributeurs de patchs :</b><br>\n"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<p><b>Remerciements :</b><br>\n"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<p><b>Auteur original :</b><br>\n"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr "<p><i>et tous les personnes dans les coulisses...</i><br>\n"
@@ -7625,6 +7835,10 @@ msgstr "Mettre à jour tous les Quns QQ"
msgid "About OpenQ"
msgstr "À propos de OpenQ"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Modifier l'adresse"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7732,7 +7946,6 @@ msgstr ""
"Réponse inconnue à la connexion (0x%02X) :\n"
"%s"
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "Impossible de se connecter"
@@ -8635,9 +8848,6 @@ msgstr "Organisation"
msgid "Unit"
msgstr "Groupe"
-msgid "Note"
-msgstr "Commentaire"
-
msgid "Join Chat"
msgstr "Rejoindre une discussion"
@@ -9337,199 +9547,13 @@ msgid "Auth Domain"
msgstr "Domaine d'authentification"
#, c-format
-msgid "Looking up %s"
-msgstr "Recherche de %s"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Connexion à %s échouée"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Connexion : %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "Impossible d'écrire dans le fichier %s"
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "Impossible de lire le fichier %s"
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "Message trop long, les %s derniers caractères sont perdus."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s n'est pas en ligne"
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "Les avertissements de %s ne sont pas autorisés."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "Un message a été perdu, vous dépassez la vitesse limite du serveur."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "La discussion %s est inaccessible."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "Vous envoyez vos messages trop vite à %s."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "Vous avez raté un message de %s parce que le message était trop gros,"
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "Vous avez raté un message de %s parce qu'il a été envoyé trop vite."
-
-#, c-format
-msgid "Failure."
-msgstr "Échec"
-
-#, c-format
-msgid "Too many matches."
-msgstr "Trop de réponses"
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "Besoin de plus de critères."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "L'annuaire est temporairement indisponible."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "La recherche par adresse électronique est restreinte."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "Mot clé ignoré"
-
-#, c-format
-msgid "No keywords."
-msgstr "Pas de mot-clé"
-
-#, c-format
-msgid "User has no directory information."
-msgstr "L'utilisateur n'a pas d'informations personnelles."
-
-#, c-format
-msgid "Country not supported."
-msgstr "Pays non supporté"
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Échec inconnu : %s"
-
-#, c-format
-msgid "Incorrect username or password."
-msgstr "Nom d'utilisateur ou mot de passe incorrect."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "Le service est temporairement indisponible."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr ""
-"Votre niveau d'avertissement est actuellement trop élevé pour que vous "
-"puissiez vous connecter."
-
-#, 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 ""
-"Vous vous êtes connecté et déconnecté trop rapidement. Attendez 10 minutes "
-"et réessayez. Si vous persistez maintenant, il vous faudra attendre encore "
-"plus longtemps."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "Une erreur inconnue est survenue à la connexion : %s"
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "Une erreur inconnue (%d) s'est produite : %s"
-
-msgid "Invalid Groupname"
-msgstr "Nom de groupe non valide."
-
-msgid "Connection Closed"
-msgstr "Connexion terminée"
-
-msgid "Waiting for reply..."
-msgstr "En attente de réponse..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr ""
-"TOC est revenu de sa pause. Vous pouvez désormais envoyer des messages à "
-"nouveau."
-
-msgid "Password Change Successful"
-msgstr "Changement de mot de passe effectué."
-
-msgid "_Group:"
-msgstr "_Groupe :"
-
-msgid "Get Dir Info"
-msgstr "Chercher dans l'annuaire"
-
-msgid "Set Dir Info"
-msgstr "Changer les informations"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "Impossible d'ouvrir %s pour l'écriture"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "Échec du transfert de fichier. Annulation probable du correspondant."
-
-msgid "Could not connect for transfer."
-msgstr "Impossible de se connecter pour le transfert"
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr ""
-"Impossible d'écrire l'entête de fichier. Le fichier n'est pas transmis."
-
-msgid "Save As..."
-msgstr "Enregistrer sous..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s demande à %s d'accepter %d fichier : %s (%.2f %s)%s%s"
-msgstr[1] "%s demande à %s d'accepter %d fichiers : %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s vous demande de leur envoyer un fichier"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "Plugin pour le protocole TOC"
-
-#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
"%s vous a envoyé une invitation webcam, ce qui n'est pas encore supporté."
+msgid "Your SMS was not delivered"
+msgstr ""
+
msgid "Your Yahoo! message did not get sent."
msgstr "Votre message Yahoo! n'a pas été envoyé"
@@ -10140,9 +10164,6 @@ msgstr "Ne pas déranger"
msgid "Extended away"
msgstr "Longue absence"
-msgid "Mobile"
-msgstr "Téléphone portable"
-
msgid "Listening to music"
msgstr "Écoute de la musique"
@@ -10184,18 +10205,6 @@ msgstr "+++ %s devient actif."
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "Erreur à la lecture de « %s »."
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"Une erreur est survenue à la lecture de « %s ». Il n'a pas été chargé et "
-"l'ancien fichier a été renommé « %s~ »."
-
msgid "Calculating..."
msgstr "Calcul en cours"
@@ -10270,6 +10279,14 @@ msgstr "Erreur à l'écriture vers %s : %s"
msgid "Unable to connect to %s: %s"
msgstr "Impossible de se connecter à %s : %s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+"TLS/SSL est nécessaire pour la connexion au serveur. Aucun support de TLS/"
+"SSL n'a pu être trouvé."
+
#, c-format
msgid " - %s"
msgstr " - %s"
@@ -10303,6 +10320,18 @@ msgstr "Connexion refusée."
msgid "Address already in use."
msgstr "Cette adresse est déjà utilisée."
+#, c-format
+msgid "Error Reading %s"
+msgstr "Erreur à la lecture de « %s »."
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"Une erreur est survenue à la lecture de « %s ». Il n'a pas été chargé et "
+"l'ancien fichier a été renommé « %s~ »."
+
msgid "Internet Messenger"
msgstr "Messagerie internet"
@@ -10345,10 +10374,8 @@ msgstr "Avertir des nouveaux _courriers"
msgid "Use this buddy _icon for this account:"
msgstr "Utiliser cette _icône pour ce compte :"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "Options de %s"
+msgid "_Advanced"
+msgstr "_Avancé"
msgid "Use GNOME Proxy Settings"
msgstr "Utiliser les paramètres mandataires de GNOME"
@@ -10383,9 +10410,6 @@ msgstr "Si on regarde de très près"
msgid "you can see the butterflies mating"
msgstr "on peut voir les papillons s'accoupler"
-msgid "Proxy Options"
-msgstr "Options du serveur mandataire"
-
msgid "Proxy _type:"
msgstr "_Type :"
@@ -10413,8 +10437,9 @@ msgstr "_Essentiel"
msgid "Create _this new account on the server"
msgstr "Créer ce _nouveau compte sur le serveur"
-msgid "_Advanced"
-msgstr "_Avancé"
+#, fuzzy
+msgid "_Proxy"
+msgstr "Serveur mandataire"
msgid "Enabled"
msgstr "Activé"
@@ -10493,6 +10518,17 @@ msgstr "_Infos"
msgid "I_M"
msgstr "_Message"
+#, fuzzy
+msgid "_Audio Call"
+msgstr "_Ajouter une discussion"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Visioconférence"
+
msgid "_Send File..."
msgstr "Envoyer un _fichier..."
@@ -10627,6 +10663,10 @@ msgstr "/Outils/_Alertes"
msgid "/Tools/_Certificates"
msgstr "/Outils/_Certificats"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Outils/Frim_ousses"
+
msgid "/Tools/Plu_gins"
msgstr "/Outils/Plu_gins"
@@ -10636,9 +10676,6 @@ msgstr "/Outils/_Préférences"
msgid "/Tools/Pr_ivacy"
msgstr "/Outils/_Filtres"
-msgid "/Tools/Smile_y"
-msgstr "/Outils/Frim_ousses"
-
msgid "/Tools/_File Transfers"
msgstr "/Outils/_Transferts de fichier"
@@ -10756,8 +10793,8 @@ msgstr "Manuel"
msgid "By status"
msgstr "Par état"
-msgid "By log size"
-msgstr "Par la taille des archives"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10773,6 +10810,9 @@ msgstr "Reconnecter"
msgid "Re-enable"
msgstr "Réactiver"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr "Content de vous revoir !"
@@ -10865,6 +10905,9 @@ msgstr ""
msgid "A_lias:"
msgstr "_Alias :"
+msgid "_Group:"
+msgstr "_Groupe :"
+
msgid "Auto_join when account becomes online."
msgstr "Rejoindre _automatiquement quand le compte est activé."
@@ -10916,14 +10959,6 @@ msgstr "Il n'y a aucun compte actif vous permettant d'inviter ce contact."
msgid "Invite Buddy Into Chat Room"
msgstr "Inviter le contact dans une discussion"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Saisissez le nom de l'utilisateur que vous voulez inviter dans la "
-"discussion, ainsi qu'un message d'invitation facultatif."
-
msgid "_Buddy:"
msgstr "_Contact :"
@@ -10998,6 +11033,22 @@ msgstr "/Conversation/Enregistrer _sous..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Conversation/_Effacer la conversation"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Conversation/_Plus"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Conversation/_Plus"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Conversation/_Plus"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Conversation/_Voir les archives"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Conversation/Envoyer un _fichier..."
@@ -11070,6 +11121,18 @@ msgstr "/Conversation"
msgid "/Conversation/View Log"
msgstr "/Conversation/Voir les archives"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Conversation/Plus"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Conversation/Voir les archives"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Conversation/Plus"
+
msgid "/Conversation/Send File..."
msgstr "/Conversation/Envoyer un fichier..."
@@ -11254,6 +11317,9 @@ msgstr "artiste"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "support"
@@ -11393,6 +11459,10 @@ msgstr "Géorgien"
msgid "Ubuntu Georgian Translators"
msgstr "Traducteurs géorgiens d'Ubuntu"
+#, fuzzy
+msgid "Khmer"
+msgstr "Autre"
+
msgid "Kannada"
msgstr "Kannara"
@@ -11864,15 +11934,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr "Activer la notification de saise"
-msgid "_Copy Email Address"
-msgstr "_Copier l'adresse électronique"
-
-msgid "_Open Link in Browser"
-msgstr "_Ouvrir le lien"
-
-msgid "_Copy Link Location"
-msgstr "_Copier l'adresse du lien"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12119,13 +12180,14 @@ msgstr "_Parcourir le dossier des archives"
msgid "%s %s. Try `%s -h' for more information.\n"
msgstr "%s %s. « %s -h » pour plus d'informations.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12152,13 +12214,14 @@ msgstr ""
" --display=DISPLAY affichage X à utiliser\n"
" -v, --version affiche le numéro de la version actuelle\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12221,11 +12284,23 @@ msgstr "Pidgin"
msgid "Exiting because another libpurple client is already running.\n"
msgstr "Arrêt à cause d'un autre client libpurple existant.\n"
-msgid "Open All Messages"
-msgstr "Ouvrir tous les messages"
+msgid "/_Media"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Vous avez du courrier !</span>"
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "Calcul en cours"
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -12256,6 +12331,27 @@ msgstr ""
"Un navigateur « Manuel » a été choisi choisi mais la ligne de commande est "
"vide."
+msgid "Open All Messages"
+msgstr "Ouvrir tous les messages"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Vous avez du courrier !</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "Nouvelle alerte"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Vous avez du courrier !</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "Message inconnu"
+
msgid "The following plugins will be unloaded."
msgstr "Les plugins suivants vont être déchargés."
@@ -12304,6 +12400,10 @@ msgstr "<b>Informations sur le plugin</b>"
msgid "Select a file"
msgstr "Choisissez un fichier"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Modifier une alerte"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "Alerte sur"
@@ -12374,6 +12474,50 @@ msgstr "_Récurrente"
msgid "Pounce Target"
msgstr "Cible de l'alerte"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "Commence à écrire"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "Pause pendant la saisie"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "Se connecte"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s n'est plus inactif (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "Revient d'absence"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "S'arrête d'écrire"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "Se déconnecte"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "Devient inactif"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "Lorsque absent"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Envoyer un message"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "Événement d'alerte inconnu. Veuillez reporter cette erreur."
+
msgid "Smiley theme failed to unpack."
msgstr "Le thème de frimousses n'a pas pu être déballé."
@@ -12397,6 +12541,12 @@ msgstr "Raccourcis clavier"
msgid "Cl_ose conversations with the Escape key"
msgstr "Fermer les conversations avec la touche _Echap"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Liste de contacts"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "Icône de notification"
@@ -12507,9 +12657,6 @@ msgstr "Impossible de lancer le programme de configuration de proxy."
msgid "Cannot start browser configuration program."
msgstr "Impossible de lancer le programme de configuration du navigateur."
-msgid "ST_UN server:"
-msgstr "Serveur ST_UN :"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">Exemple : stunserver.org</span>"
@@ -12534,6 +12681,10 @@ msgstr "_Premier port : "
msgid "_End port:"
msgstr "_Dernier port :"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr "Serveur mandataire &amp; navigateur"
@@ -12726,12 +12877,12 @@ msgstr "Lorsque absent et inactif"
msgid "Auto-away"
msgstr "Absence automatique"
-msgid "Change status when _idle"
-msgstr "Changer d'état lorsque _inactif"
-
msgid "_Minutes before becoming idle:"
msgstr "_Minutes avant de passer inactif :"
+msgid "Change status when _idle"
+msgstr "Changer d'état lorsque _inactif"
+
msgid "Change _status to:"
msgstr "_Changer l'état en :"
@@ -12879,6 +13030,12 @@ msgstr "Enregistrer _et utiliser"
msgid "Status for %s"
msgstr "État pour %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
msgid "Custom Smiley"
msgstr "Frimousse personnalisée"
@@ -12888,16 +13045,16 @@ msgstr "Données insuffisantes"
msgid "Please provide a shortcut to associate with the smiley."
msgstr "Veuillez fournir un raccourci correspondant à cette frimousse."
-msgid "Duplicate Shortcut"
-msgstr "Raccourci en double"
-
+#, fuzzy, c-format
msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
+"A custom smiley for '%s' already exists. Please use a different shortcut."
msgstr ""
"Une frimousse spécialisée pour ce raccourci existe déjà. Veuillez choisir un "
"autre raccourci."
+msgid "Duplicate Shortcut"
+msgstr "Raccourci en double"
+
msgid "Please select an image for the smiley."
msgstr "Veuillez choisir une image pour cette frimousse."
@@ -12907,16 +13064,22 @@ msgstr "Modifier la frimousse"
msgid "Add Smiley"
msgstr "Ajouter la frimousse"
-msgid "Smiley _Image"
-msgstr "_Image de la frimousse"
+#, fuzzy
+msgid "_Image:"
+msgstr "_Image"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr "_Raccourci de la frimousse"
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "Raccourci"
msgid "Smiley"
msgstr "Frimousse"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "Raccourci"
+
msgid "Custom Smiley Manager"
msgstr "Gestionnaire de frimousses personnalisée"
@@ -13044,6 +13207,16 @@ msgstr ""
"Impossible de charger l'image « %s » : la raison est inconnue, le fichier est "
"peut-être endommagé."
+#, fuzzy
+msgid "_Open Link"
+msgstr "_Ouvrir les liens :"
+
+msgid "_Copy Link Location"
+msgstr "_Copier l'adresse du lien"
+
+msgid "_Copy Email Address"
+msgstr "_Copier l'adresse électronique"
+
msgid "Save File"
msgstr "Sauver le fichier"
@@ -14077,6 +14250,185 @@ msgstr "Envoyer et recevoir des blocs XMPP."
msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr "Ce plugin est utile pour débugger les clients ou serveurs XMPP."
+#~ msgid "Invite message"
+#~ msgstr "Message d'invitation"
+
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Saisissez le nom de l'utilisateur que vous voulez inviter,\n"
+#~ "ainsi qu'un message d'invitation facultatif."
+
+#~ msgid "Looking up %s"
+#~ msgstr "Recherche de %s"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "Connexion à %s échouée"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Connexion : %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "Impossible d'écrire dans le fichier %s"
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "Impossible de lire le fichier %s"
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "Message trop long, les %s derniers caractères sont perdus."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s n'est pas en ligne"
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "Les avertissements de %s ne sont pas autorisés."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr "Un message a été perdu, vous dépassez la vitesse limite du serveur."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "La discussion %s est inaccessible."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "Vous envoyez vos messages trop vite à %s."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr ""
+#~ "Vous avez raté un message de %s parce que le message était trop gros,"
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr "Vous avez raté un message de %s parce qu'il a été envoyé trop vite."
+
+#~ msgid "Failure."
+#~ msgstr "Échec"
+
+#~ msgid "Too many matches."
+#~ msgstr "Trop de réponses"
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "Besoin de plus de critères."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "L'annuaire est temporairement indisponible."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "La recherche par adresse électronique est restreinte."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "Mot clé ignoré"
+
+#~ msgid "No keywords."
+#~ msgstr "Pas de mot-clé"
+
+#~ msgid "User has no directory information."
+#~ msgstr "L'utilisateur n'a pas d'informations personnelles."
+
+#~ msgid "Country not supported."
+#~ msgstr "Pays non supporté"
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Échec inconnu : %s"
+
+#~ msgid "Incorrect username or password."
+#~ msgstr "Nom d'utilisateur ou mot de passe incorrect."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "Le service est temporairement indisponible."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr ""
+#~ "Votre niveau d'avertissement est actuellement trop élevé pour que vous "
+#~ "puissiez vous connecter."
+
+#~ 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 ""
+#~ "Vous vous êtes connecté et déconnecté trop rapidement. Attendez 10 "
+#~ "minutes et réessayez. Si vous persistez maintenant, il vous faudra "
+#~ "attendre encore plus longtemps."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "Une erreur inconnue est survenue à la connexion : %s"
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "Une erreur inconnue (%d) s'est produite : %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "Nom de groupe non valide."
+
+#~ msgid "Connection Closed"
+#~ msgstr "Connexion terminée"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "En attente de réponse..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr ""
+#~ "TOC est revenu de sa pause. Vous pouvez désormais envoyer des messages à "
+#~ "nouveau."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "Changement de mot de passe effectué."
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Chercher dans l'annuaire"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Changer les informations"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "Impossible d'ouvrir %s pour l'écriture"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr ""
+#~ "Échec du transfert de fichier. Annulation probable du correspondant."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "Impossible de se connecter pour le transfert"
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr ""
+#~ "Impossible d'écrire l'entête de fichier. Le fichier n'est pas transmis."
+
+#~ msgid "Save As..."
+#~ msgstr "Enregistrer sous..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s demande à %s d'accepter %d fichier : %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s demande à %s d'accepter %d fichiers : %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s vous demande de leur envoyer un fichier"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "Plugin pour le protocole TOC"
+
+#~ msgid "%s Options"
+#~ msgstr "Options de %s"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Options du serveur mandataire"
+
+#~ msgid "By log size"
+#~ msgstr "Par la taille des archives"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_Ouvrir le lien"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "Serveur ST_UN :"
+
+#~ msgid "Smiley _Image"
+#~ msgstr "_Image de la frimousse"
+
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "_Raccourci de la frimousse"
+
#~ msgid "Unable to retrieve MSN Address Book"
#~ msgstr "Impossible de récupérer le carnet d'adresses MSN"
diff --git a/po/ga.po b/po/ga.po
index 8a35b5c56c..87d7443145 100644
--- a/po/ga.po
+++ b/po/ga.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
+"POT-Creation-Date: 2009-04-30 10:38-0400\n"
"PO-Revision-Date: 2008-08-27 16:26-0800\n"
"Last-Translator: Aaron Kearns <ajkearns6@gmail.com>\n"
"Language-Team: \n"
@@ -19,13 +19,13 @@ msgstr "Finch"
msgid "%s. Try `%s -h' for more information.\n"
msgstr "Bain triail as `%s %s' chun tuilleadh eolais a fháil.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -570,17 +570,6 @@ msgstr ""
msgid "Send To"
msgstr "Cuir Chuig"
-msgid "Invite message"
-msgstr ""
-
-msgid "Invite"
-msgstr ""
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-
msgid "Conversation"
msgstr ""
@@ -825,6 +814,39 @@ msgstr ""
msgid "System Log"
msgstr ""
+msgid "Calling ... "
+msgstr ""
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "Glac leis"
+
+msgid "Reject"
+msgstr ""
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+msgid "You have rejected the call."
+msgstr ""
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "Ríomhphoist"
@@ -859,6 +881,9 @@ msgstr ""
msgid "IM"
msgstr "IM"
+msgid "Invite"
+msgstr ""
+
msgid "(none)"
msgstr "(aon cheann)"
@@ -1060,7 +1085,6 @@ msgstr ""
msgid "%s has sent you a message. (%s)"
msgstr ""
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr ""
@@ -1106,7 +1130,6 @@ msgstr ""
msgid "Change status to"
msgstr ""
-#. Conversations
msgid "Conversations"
msgstr ""
@@ -1427,7 +1450,6 @@ msgid ""
"conversation into the current conversation."
msgstr ""
-#, c-format
msgid "Online"
msgstr ""
@@ -1471,6 +1493,28 @@ msgstr ""
msgid "Lastlog plugin."
msgstr ""
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "cuntais"
@@ -1571,13 +1615,6 @@ msgstr ""
msgid "SSL Certificate Verification"
msgstr ""
-#. Number of actions
-msgid "Accept"
-msgstr "Glac leis"
-
-msgid "Reject"
-msgstr ""
-
msgid "_View Certificate..."
msgstr ""
@@ -1711,6 +1748,16 @@ msgstr ""
msgid "%s left the room (%s)."
msgstr ""
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Cuir le comhrá"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+
#, c-format
msgid "Failed to get connection: %s"
msgstr ""
@@ -1835,7 +1882,6 @@ msgstr ""
msgid "Transfer of file %s complete"
msgstr ""
-#, c-format
msgid "File transfer complete"
msgstr ""
@@ -1843,7 +1889,6 @@ msgstr ""
msgid "You canceled the transfer of %s"
msgstr ""
-#, c-format
msgid "File transfer cancelled"
msgstr ""
@@ -2029,7 +2074,6 @@ msgstr ""
msgid "You are using %s, but this plugin requires %s."
msgstr ""
-#, c-format
msgid "This plugin has not defined an ID."
msgstr ""
@@ -2486,6 +2530,32 @@ msgstr ""
msgid "Do not ask. Always save in pounce."
msgstr ""
+#, fuzzy
+msgid "One Time Password"
+msgstr "Íontráil Pasfhocal"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2684,7 +2754,6 @@ msgid ""
"Unable to establish connection with the local mDNS server. Is it running?"
msgstr ""
-#. Creating the options for the protocol
msgid "First name"
msgstr "Ainm Baiste"
@@ -2716,6 +2785,11 @@ msgstr "Bonjour Prótacal Breiseán"
msgid "Purple Person"
msgstr ""
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "Ceantar"
+
msgid "Bonjour"
msgstr "Bonjour"
@@ -2872,13 +2946,13 @@ msgid "Add to chat..."
msgstr "Cuir le comhrá..."
# infhaighte???
+#. Global
msgid "Available"
msgstr "Ar fáil"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "Shiúl"
@@ -3218,6 +3292,17 @@ msgid ""
"invalid characters."
msgstr ""
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "Seoladh in úsáid cheana féin"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "_Leasainm:"
+
msgid "Cannot change nick"
msgstr ""
@@ -3448,6 +3533,34 @@ msgstr ""
msgid "SASL error"
msgstr ""
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+msgid "No session ID given"
+msgstr ""
+
+msgid "Unsupported version of BOSH protocol"
+msgstr ""
+
+msgid "Unable to establish a connection with the server"
+msgstr ""
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+
+msgid "Unable to establish SSL connection"
+msgstr ""
+
+msgid "Unable to create socket"
+msgstr ""
+
+#, fuzzy
+msgid "Write error"
+msgstr "Earráid sa scríobh"
+
msgid "Full Name"
msgstr "Ainm Iomlán"
@@ -3519,6 +3632,10 @@ msgstr "Cliant:"
msgid "Operating System"
msgstr "Córas Oibriúcháin"
+#, fuzzy
+msgid "Local Time"
+msgstr "Ceantar"
+
msgid "Last Activity"
msgstr ""
@@ -3728,7 +3845,6 @@ msgstr ""
msgid "Extended Away"
msgstr ""
-#, c-format
msgid "Do Not Disturb"
msgstr ""
@@ -3852,10 +3968,6 @@ msgstr ""
msgid "You require encryption, but it is not available on this server."
msgstr ""
-#, fuzzy
-msgid "Write error"
-msgstr "Earráid sa scríobh"
-
msgid "Ping timeout"
msgstr ""
@@ -3865,11 +3977,8 @@ msgstr "earráid ag léamh"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
-msgstr ""
-
-msgid "Unable to create socket"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
msgid "Invalid XMPP ID"
@@ -3878,6 +3987,9 @@ msgstr "XMPP ID Neamhbhailí "
msgid "Invalid XMPP ID. Domain must be set."
msgstr ""
+msgid "Malformed BOSH Connect Server"
+msgstr ""
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr ""
@@ -3964,9 +4076,19 @@ msgstr ""
msgid "Re-initializing Stream"
msgstr ""
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr "Níl údaraithe"
+#, fuzzy
+msgid "Mood"
+msgstr "fonn"
+
+msgid "Now Listening"
+msgstr ""
+
msgid "Both"
msgstr "Araon"
@@ -3991,13 +4113,6 @@ msgstr "Tada"
msgid "Subscription"
msgstr ""
-#, fuzzy
-msgid "Mood"
-msgstr "fonn"
-
-msgid "Now Listening"
-msgstr ""
-
msgid "Mood Text"
msgstr ""
@@ -4238,15 +4353,21 @@ msgid "Unable to ping user %s"
msgstr ""
#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr ""
#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+msgid "Unable to buzz, because %s might be offline."
msgstr ""
#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
+msgstr ""
+
+#, c-format
+msgid "Buzzing %s..."
msgstr ""
#. Yahoo only supports one attention command: the 'buzz'.
@@ -4259,7 +4380,30 @@ msgid "%s has buzzed you!"
msgstr ""
#, c-format
-msgid "Buzzing %s..."
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr ""
+
+#, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr ""
+
+#, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr ""
+
+msgid "Media Initiation Failed"
+msgstr ""
+
+#, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr ""
+
+msgid "Select a Resource"
+msgstr ""
+
+msgid "Initiate Media"
msgstr ""
msgid "config: Configure a chat room."
@@ -4407,6 +4551,19 @@ msgstr ""
msgid "Error in chat %s"
msgstr ""
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr ""
+
+msgid "Transfer was closed."
+msgstr ""
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Ní féidir an comhad a oscailt."
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4430,9 +4587,6 @@ msgstr ""
msgid "Please select the resource of %s to which you would like to send a file"
msgstr ""
-msgid "Select a Resource"
-msgstr ""
-
msgid "Edit User Mood"
msgstr ""
@@ -4466,9 +4620,20 @@ msgstr "Aicsin"
msgid "Select an action"
msgstr ""
-msgid "Unable to retrieve MSN Address Book"
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr ""
+
+msgid "Buddy Add error"
msgstr ""
+#, fuzzy
+msgid "The username specified does not exist."
+msgstr "Níl úsáideoir '%s' ar bith ann."
+
#, c-format
msgid "Buddy list synchronization issue in %s (%s)"
msgstr ""
@@ -4693,7 +4858,6 @@ msgstr ""
msgid "Passport account not yet verified"
msgstr ""
-#, c-format
msgid "Passport account suspended"
msgstr ""
@@ -4783,6 +4947,13 @@ msgstr ""
msgid "Page"
msgstr "Leathanach"
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "Obair"
+
msgid "Has you"
msgstr ""
@@ -4821,6 +4992,13 @@ msgstr "Ealaíontóir"
msgid "Album"
msgstr "Albam"
+#, fuzzy
+msgid "Game Title"
+msgstr "Teideal"
+
+msgid "Office Title"
+msgstr ""
+
msgid "Set Friendly Name..."
msgstr ""
@@ -5012,7 +5190,7 @@ msgid ""
"does not exist."
msgstr ""
-msgid "Profile URL"
+msgid "View web profile"
msgstr ""
#. *< type
@@ -5243,19 +5421,15 @@ msgstr ""
msgid "Do you want to delete this buddy from your address book as well?"
msgstr ""
-#. only notify the user about problems adding to the friends list
-#. * maybe we should do something else for other lists, but it probably
-#. * won't cause too many problems if we just ignore it
-#, c-format
-msgid "Unable to add \"%s\"."
-msgstr ""
-
msgid "The username specified is invalid."
msgstr ""
msgid "This Hotmail account may not be active."
msgstr ""
+msgid "Profile URL"
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5269,15 +5443,11 @@ msgstr ""
msgid "MSN Protocol Plugin"
msgstr "MSN Prótacal Breiseán"
-msgid "Missing Cipher"
-msgstr ""
-
-msgid "The RC4 cipher could not be found"
-msgstr ""
+#, fuzzy, c-format
+msgid "No such user: %s"
+msgstr "%s: Níl a leithéid d'úsáideoir ann"
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
+msgid "User lookup"
msgstr ""
msgid "Reading challenge"
@@ -5289,11 +5459,18 @@ msgstr ""
msgid "Logging in"
msgstr ""
-#, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] ""
-msgstr[1] ""
+msgid "MySpaceIM - No Username Set"
+msgstr ""
+
+msgid "You appear to have no MySpace username."
+msgstr ""
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr ""
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr "Cailleadh an nasc le \"%s\"."
#. Can't write _()'d strings in array initializers. Workaround.
msgid "New mail messages"
@@ -5314,13 +5491,20 @@ msgstr ""
msgid "MySpace"
msgstr "MySpace"
-msgid "MySpaceIM - No Username Set"
+msgid "IM Friends"
msgstr ""
-msgid "You appear to have no MySpace username."
-msgstr ""
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+msgstr[1] ""
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgid "Add contacts from server"
msgstr ""
#. The session is now set up, ready to be connected. This emits the
@@ -5344,58 +5528,46 @@ msgstr ""
msgid "MySpaceIM Error"
msgstr ""
-msgid "Failed to add buddy"
+msgid "Invalid input condition"
msgstr ""
-msgid "'addbuddy' command failed."
+msgid "Read buffer full (2)"
msgstr ""
-msgid "persist command failed"
+msgid "Unparseable message"
msgstr ""
-#, fuzzy, c-format
-msgid "No such user: %s"
-msgstr "%s: Níl a leithéid d'úsáideoir ann"
-
-msgid "User lookup"
+#, c-format
+msgid "Couldn't connect to host: %s (%d)"
msgstr ""
-msgid "Failed to remove buddy"
+msgid "Failed to add buddy"
msgstr ""
-msgid "'delbuddy' command failed"
+msgid "'addbuddy' command failed."
msgstr ""
-msgid "blocklist command failed"
+msgid "persist command failed"
msgstr ""
-msgid "Invalid input condition"
+msgid "Failed to remove buddy"
msgstr ""
-msgid "Read buffer full (2)"
+msgid "'delbuddy' command failed"
msgstr ""
-msgid "Unparseable message"
+msgid "blocklist command failed"
msgstr ""
-#, c-format
-msgid "Couldn't connect to host: %s (%d)"
+msgid "Missing Cipher"
msgstr ""
-msgid "IM Friends"
+msgid "The RC4 cipher could not be found"
msgstr ""
-#, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "Add contacts from server"
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
msgstr ""
msgid "Add friends from MySpace.com"
@@ -5438,9 +5610,6 @@ msgstr ""
msgid "User"
msgstr "Úsáideoir"
-msgid "Profile"
-msgstr "Próifíl"
-
msgid "Headline"
msgstr ""
@@ -5453,29 +5622,29 @@ msgstr ""
msgid "Client Version"
msgstr ""
-#. Protocol won't log in now without a username set.. Disconnect
-msgid "No username set"
+msgid "MySpaceIM - Username Available"
msgstr ""
-msgid "MySpaceIM - Please Set a Username"
+msgid "This username is available. Would you like to set it?"
msgstr ""
-msgid "Please enter a username to check its availability:"
+msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr ""
-msgid "MySpaceIM - Username Available"
+msgid "MySpaceIM - Please Set a Username"
msgstr ""
-msgid "This username is available. Would you like to set it?"
+msgid "This username is unavailable."
msgstr ""
-msgid "ONCE SET, THIS CANNOT BE CHANGED!"
+msgid "Please try another username:"
msgstr ""
-msgid "This username is unavailable."
+#. Protocol won't log in now without a username set.. Disconnect
+msgid "No username set"
msgstr ""
-msgid "Please try another username:"
+msgid "Please enter a username to check its availability:"
msgstr ""
#. TODO: icons for each zap
@@ -5850,7 +6019,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr ""
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr ""
@@ -6107,23 +6275,18 @@ msgstr ""
msgid "Screen Sharing"
msgstr ""
-#, c-format
msgid "Free For Chat"
msgstr ""
-#, c-format
msgid "Not Available"
msgstr "níl ar fáil"
-#, c-format
msgid "Occupied"
msgstr ""
-#, c-format
msgid "Web Aware"
msgstr ""
-#, c-format
msgid "Invisible"
msgstr ""
@@ -6165,7 +6328,7 @@ msgid ""
"only letters, numbers and spaces, or contain only numbers."
msgstr ""
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr ""
@@ -6182,7 +6345,7 @@ msgstr ""
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr ""
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6215,9 +6378,7 @@ msgid "_OK"
msgstr "_Ceart go Leor"
#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
+msgid "You may be disconnected shortly. If so, check %s for updates."
msgstr ""
msgid "Unable to get a valid AIM login hash."
@@ -6344,7 +6505,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] ""
msgstr[1] ""
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr ""
@@ -6367,6 +6528,9 @@ msgstr ""
msgid "Member Since"
msgstr ""
+msgid "Profile"
+msgstr "Próifíl"
+
msgid "Your AIM connection may be lost."
msgstr ""
@@ -6614,6 +6778,7 @@ msgstr ""
msgid "Get AIM Info"
msgstr ""
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr ""
@@ -6717,7 +6882,6 @@ msgstr ""
msgid "Attempting to connect to %s:%hu."
msgstr ""
-#, c-format
msgid "Attempting to connect via proxy server."
msgstr ""
@@ -6809,7 +6973,7 @@ msgstr "Eile"
msgid "Visible"
msgstr ""
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
#, fuzzy
@@ -6896,17 +7060,50 @@ msgstr "Dáta"
msgid "Could not change buddy information."
msgstr "Eolais Logann"
-#, c-format
-msgid "%d needs Q&A"
+msgid "Mobile"
msgstr ""
+msgid "Note"
+msgstr "Nóta"
+
+#. callback
#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "Cuir Cara"
+msgid "Buddy Memo"
+msgstr "Cara"
-msgid "Input answer here"
+msgid "Change his/her memo as you like"
msgstr ""
+#, fuzzy
+msgid "_Modify"
+msgstr "Modhnaigh"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "Modhnaigh"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "Freastalaí"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
+#, c-format
+msgid "%u requires verification"
+msgstr ""
+
+#, fuzzy
+msgid "Add buddy question"
+msgstr "Údaraigh"
+
+#, fuzzy
+msgid "Enter answer here"
+msgstr "Íontráil Pasfhocal"
+
msgid "Send"
msgstr "Seol"
@@ -6917,18 +7114,18 @@ msgstr "grúpa Neamhbhailí"
msgid "Authorization denied message:"
msgstr ""
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr ""
#, c-format
-msgid "%d needs authentication"
+msgid "%u needs authorization"
msgstr ""
#, fuzzy
msgid "Add buddy authorize"
msgstr "Údaraigh"
-msgid "Input request here"
+msgid "Enter request here"
msgstr ""
msgid "Would you be my friend?"
@@ -6950,7 +7147,7 @@ msgid "Failed sending authorize"
msgstr ""
#, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr ""
#, c-format
@@ -6991,6 +7188,9 @@ msgstr ""
msgid "You can only search for permanent Qun\n"
msgstr ""
+msgid "(Invalid UTF-8 string)"
+msgstr ""
+
msgid "Not member"
msgstr ""
@@ -7029,15 +7229,18 @@ msgstr ""
msgid "Join QQ Qun"
msgstr ""
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
+msgid "Input request here"
msgstr ""
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "Uimhir Guthán"
+
msgid "Successfully joined Qun"
msgstr ""
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
msgid "QQ Qun Operation"
@@ -7047,7 +7250,7 @@ msgstr ""
msgid "Failed:"
msgstr "Theip"
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
#, fuzzy
@@ -7059,11 +7262,11 @@ msgid ""
"this operation will eventually remove this Qun."
msgstr ""
-msgid "Sorry, you are not our style ..."
+msgid "Sorry, you are not our style"
msgstr ""
#, fuzzy
-msgid "Successfully changed Qun member"
+msgid "Successfully changed Qun members"
msgstr "Uimhir Guthán"
#, fuzzy
@@ -7073,36 +7276,37 @@ msgstr "Eolais Logann"
msgid "You have successfully created a Qun"
msgstr ""
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr ""
msgid "Setup"
msgstr "Cumraigh"
#, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr ""
#, c-format
-msgid "%d request to join Qun %d"
+msgid "%u request to join Qun %u"
msgstr ""
#, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr ""
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
# scrios???? scrud????
#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr "Scrios"
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+# scrios???? scrud????
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "Scrios"
#, fuzzy, c-format
msgid "Unknown-%d"
@@ -7216,6 +7420,12 @@ msgstr ""
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr ""
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr ""
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7223,7 +7433,7 @@ msgid "<i>Feel free to join us!</i> :)"
msgstr ""
#, fuzzy, c-format
-msgid "About OpenQ r%s"
+msgid "About OpenQ %s"
msgstr "Faoi %s"
#, fuzzy
@@ -7245,6 +7455,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "Faoi %s"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Seoladh"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7276,7 +7490,6 @@ msgstr ""
msgid "QQ2008"
msgstr ""
-#. #endif
#, fuzzy
msgid "Connect by TCP"
msgstr "Ceangal"
@@ -7287,6 +7500,9 @@ msgstr ""
msgid "Show server news"
msgstr ""
+msgid "Show chat room when msg comes"
+msgstr ""
+
msgid "Keep alive interval (seconds)"
msgstr ""
@@ -7294,10 +7510,7 @@ msgstr ""
msgid "Update interval (seconds)"
msgstr "Eolas Úsáideoir"
-msgid "Can not decrypt server reply"
-msgstr ""
-
-msgid "Can not decrypt get server reply"
+msgid "Cannot decrypt server reply"
msgstr ""
#, c-format
@@ -7319,19 +7532,19 @@ msgid "Activation required"
msgstr ""
#, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr ""
-msgid "Keep alive error"
+msgid "Could not decrypt server reply"
msgstr ""
-msgid "Requesting captcha ..."
+msgid "Requesting captcha"
msgstr ""
-msgid "Checking code of captcha ..."
+msgid "Checking captcha"
msgstr ""
-msgid "Failed captcha verify"
+msgid "Failed captcha verification"
msgstr ""
#, fuzzy
@@ -7342,35 +7555,28 @@ msgstr "Sábháil an Íomha"
msgid "Enter code"
msgstr "Íontráil Pasfhocal"
-msgid "QQ Captcha Verifing"
+msgid "QQ Captcha Verification"
msgstr ""
msgid "Enter the text from the image"
msgstr ""
#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
+msgid "Unknown reply when checking password (0x%02X)"
msgstr ""
#, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
msgstr ""
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr ""
msgid "Socket error"
msgstr ""
-#, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr ""
-
msgid "Unable to read from socket"
msgstr ""
@@ -7380,10 +7586,11 @@ msgstr "Earráid scríobh"
msgid "Connection lost"
msgstr ""
-msgid "Get server ..."
-msgstr ""
+#, fuzzy
+msgid "Getting server"
+msgstr "Nasc diúltaithe"
-msgid "Request token"
+msgid "Requesting token"
msgstr ""
msgid "Couldn't resolve host"
@@ -7394,16 +7601,13 @@ msgid "Invalid server or port"
msgstr "grúpa Neamhbhailí"
#, fuzzy
-msgid "Connecting server ..."
+msgid "Connecting to server"
msgstr "Nasc diúltaithe"
#, fuzzy
msgid "QQ Error"
msgstr "Earráid"
-msgid "Failed to send IM."
-msgstr ""
-
#, fuzzy, c-format
msgid ""
"Server News:\n"
@@ -7413,6 +7617,10 @@ msgid ""
msgstr "SSL Servers"
#, fuzzy, c-format
+msgid "%s:%s"
+msgstr "%s (%s)"
+
+#, fuzzy, c-format
msgid "From %s:"
msgstr "Ó"
@@ -7422,32 +7630,29 @@ msgid ""
"%s"
msgstr ""
-msgid "Unknow SERVER CMD"
-msgstr ""
+#, fuzzy
+msgid "Unknown SERVER CMD"
+msgstr "Ní fios cén fáth"
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
#, fuzzy
msgid "QQ Qun Command"
msgstr "Ordú"
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr ""
-
-msgid "Can not decrypt login reply"
+msgid "Could not decrypt login reply"
msgstr ""
#, fuzzy
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr "Ní fios cén fáth"
#, fuzzy
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr "Ní fios cén fáth"
#, c-format
@@ -8229,9 +8434,6 @@ msgstr "Eagrú"
msgid "Unit"
msgstr "Aonad"
-msgid "Note"
-msgstr "Nóta"
-
msgid "Join Chat"
msgstr ""
@@ -8841,6 +9043,9 @@ msgstr ""
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr ""
+msgid "SIP connect server not specified"
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -8875,189 +9080,10 @@ msgid "Auth Domain"
msgstr ""
#, c-format
-msgid "Looking up %s"
-msgstr ""
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr ""
-
-#, c-format
-msgid "Signon: %s"
-msgstr ""
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr ""
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr ""
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr ""
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr ""
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr ""
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr ""
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr ""
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr ""
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr ""
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr ""
-
-#, c-format
-msgid "Failure."
-msgstr ""
-
-#, c-format
-msgid "Too many matches."
-msgstr ""
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr ""
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr ""
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr ""
-
-#, c-format
-msgid "Keyword ignored."
-msgstr ""
-
-#, c-format
-msgid "No keywords."
-msgstr ""
-
-#, c-format
-msgid "User has no directory information."
-msgstr ""
-
-#, c-format
-msgid "Country not supported."
-msgstr ""
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr ""
-
-#, c-format
-msgid "Incorrect username or password."
-msgstr ""
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr ""
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr ""
-
-#, c-format
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
-msgstr ""
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr ""
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr ""
-
-msgid "Invalid Groupname"
-msgstr ""
-
-#, fuzzy
-msgid "Connection Closed"
-msgstr "Nasc dúnta"
-
-msgid "Waiting for reply..."
-msgstr ""
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr ""
-
-msgid "Password Change Successful"
-msgstr ""
-
-msgid "_Group:"
-msgstr "_Grúpa:"
-
-msgid "Get Dir Info"
-msgstr ""
-
-msgid "Set Dir Info"
-msgstr ""
-
-#, fuzzy, c-format
-msgid "Could not open %s for writing!"
-msgstr "Níorbh fhéidir `%s' a oscailt chun scríoch ann: %s"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr ""
-
-msgid "Could not connect for transfer."
+msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
-msgid "Could not write file header. The file will not be transferred."
-msgstr ""
-
-msgid "Save As..."
-msgstr "Sábháil le..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr ""
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "TOC Prótacal Breiseán"
-
-#, c-format
-msgid "%s has sent you a webcam invite, which is not yet supported."
+msgid "Your SMS was not delivered"
msgstr ""
msgid "Your Yahoo! message did not get sent."
@@ -9311,13 +9337,8 @@ msgstr ""
msgid "Last Update"
msgstr ""
-#, c-format
-msgid "User information for %s unavailable"
-msgstr ""
-
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr ""
msgid ""
@@ -9620,9 +9641,6 @@ msgstr ""
msgid "Extended away"
msgstr ""
-msgid "Mobile"
-msgstr ""
-
msgid "Listening to music"
msgstr ""
@@ -9664,16 +9682,6 @@ msgstr ""
msgid "%x %X"
msgstr "%x %X"
-#, fuzzy, c-format
-msgid "Error Reading %s"
-msgstr "earráid agus ag léamh %s"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-
msgid "Calculating..."
msgstr ""
@@ -9748,6 +9756,12 @@ msgid "Unable to connect to %s: %s"
msgstr ""
#, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+
+#, c-format
msgid " - %s"
msgstr " - %s"
@@ -9780,6 +9794,16 @@ msgstr "Nasc diúltaithe"
msgid "Address already in use."
msgstr "Seoladh in úsáid cheana féin"
+#, fuzzy, c-format
+msgid "Error Reading %s"
+msgstr "earráid agus ag léamh %s"
+
+#, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+
msgid "Internet Messenger"
msgstr ""
@@ -9824,10 +9848,9 @@ msgstr ""
msgid "Use this buddy _icon for this account:"
msgstr ""
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s Roghanna"
+#, fuzzy
+msgid "_Advanced"
+msgstr "_Ardmódh"
msgid "Use GNOME Proxy Settings"
msgstr ""
@@ -9862,9 +9885,6 @@ msgstr ""
msgid "you can see the butterflies mating"
msgstr ""
-msgid "Proxy Options"
-msgstr ""
-
msgid "Proxy _type:"
msgstr ""
@@ -9894,8 +9914,8 @@ msgid "Create _this new account on the server"
msgstr ""
#, fuzzy
-msgid "_Advanced"
-msgstr "_Ardmódh"
+msgid "_Proxy"
+msgstr "Seach"
msgid "Enabled"
msgstr "cumasaithe"
@@ -9958,6 +9978,16 @@ msgstr ""
msgid "I_M"
msgstr ""
+#, fuzzy
+msgid "_Audio Call"
+msgstr "_Cuir Comhrá"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+msgid "_Video Call"
+msgstr ""
+
msgid "_Send File..."
msgstr ""
@@ -10093,6 +10123,9 @@ msgstr ""
msgid "/Tools/_Certificates"
msgstr ""
+msgid "/Tools/Custom Smile_ys"
+msgstr ""
+
msgid "/Tools/Plu_gins"
msgstr ""
@@ -10102,9 +10135,6 @@ msgstr ""
msgid "/Tools/Pr_ivacy"
msgstr ""
-msgid "/Tools/Smile_y"
-msgstr ""
-
msgid "/Tools/_File Transfers"
msgstr ""
@@ -10219,7 +10249,7 @@ msgstr ""
msgid "By status"
msgstr ""
-msgid "By log size"
+msgid "By recent log activity"
msgstr ""
#, c-format
@@ -10236,6 +10266,9 @@ msgstr ""
msgid "Re-enable"
msgstr ""
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr ""
@@ -10315,6 +10348,9 @@ msgstr ""
msgid "A_lias:"
msgstr "A_ilias"
+msgid "_Group:"
+msgstr "_Grúpa:"
+
msgid "Auto_join when account becomes online."
msgstr ""
@@ -10366,12 +10402,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr ""
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-
msgid "_Buddy:"
msgstr "_Cara:"
@@ -10450,6 +10480,21 @@ msgstr ""
msgid "/Conversation/Clea_r Scrollback"
msgstr ""
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Comhrá"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Comhrá/_Cuir..."
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Comhrá/Cuir..."
+
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr ""
+
msgid "/Conversation/Se_nd File..."
msgstr ""
@@ -10522,6 +10567,17 @@ msgstr "/Comhrá"
msgid "/Conversation/View Log"
msgstr ""
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Comhrá/Cuir..."
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Comhrá/Cuir..."
+
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr ""
+
msgid "/Conversation/Send File..."
msgstr ""
@@ -10712,6 +10768,9 @@ msgstr "Ealaíontóir"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr ""
@@ -10855,6 +10914,10 @@ msgstr "Grúisis"
msgid "Ubuntu Georgian Translators"
msgstr ""
+#, fuzzy
+msgid "Khmer"
+msgstr "Eile"
+
msgid "Kannada"
msgstr "Cannadais"
@@ -10876,6 +10939,10 @@ msgstr "Liotuáinis"
msgid "Macedonian"
msgstr "Macadóinis"
+#, fuzzy
+msgid "Mongolian"
+msgstr "Macadóinis"
+
msgid "Bokmål Norwegian"
msgstr "Ioruais Bokmål"
@@ -10981,7 +11048,24 @@ msgid ""
msgstr ""
#, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr ""
+
+#, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr ""
msgid "Current Developers"
@@ -11275,15 +11359,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr ""
-msgid "_Copy Email Address"
-msgstr ""
-
-msgid "_Open Link in Browser"
-msgstr ""
-
-msgid "_Copy Link Location"
-msgstr ""
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -11515,13 +11590,14 @@ msgstr ""
msgid "%s %s. Try `%s -h' for more information.\n"
msgstr ""
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -11531,14 +11607,23 @@ msgid ""
" --display=DISPLAY X display to use\n"
" -v, --version display the current version and exit\n"
msgstr ""
+"%s\n"
+"Usage: %s [OPTION]...\n"
+"\n"
+" -c, --config=DIR use DIR for config files\n"
+" -d, --debug print debugging messages to stdout\n"
+" -h, --help display this help and exit\n"
+" -n, --nologin don't automatically login\n"
+" -v, --version display the current version and exit\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -11547,6 +11632,14 @@ msgid ""
" Without this only the first account will be enabled).\n"
" -v, --version display the current version and exit\n"
msgstr ""
+"%s\n"
+"Usage: %s [OPTION]...\n"
+"\n"
+" -c, --config=DIR use DIR for config files\n"
+" -d, --debug print debugging messages to stdout\n"
+" -h, --help display this help and exit\n"
+" -n, --nologin don't automatically login\n"
+" -v, --version display the current version and exit\n"
#, c-format
msgid ""
@@ -11569,10 +11662,25 @@ msgstr ""
msgid "Pidgin"
msgstr "Pidgin"
-msgid "Open All Messages"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+msgid "Calling..."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
msgstr ""
#, c-format
@@ -11602,6 +11710,26 @@ msgid ""
"The 'Manual' browser command has been chosen, but no command has been set."
msgstr ""
+msgid "Open All Messages"
+msgstr ""
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr ""
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "Cuntas Nua"
+
+msgid "Dismiss"
+msgstr ""
+
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr ""
+
+#, fuzzy
+msgid "No message"
+msgstr "Scéal"
+
msgid "The following plugins will be unloaded."
msgstr ""
@@ -11649,6 +11777,10 @@ msgstr ""
msgid "Select a file"
msgstr "Roghnaigh Comhad"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Eolais Logann"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr ""
@@ -11719,6 +11851,50 @@ msgstr ""
msgid "Pounce Target"
msgstr ""
+#, c-format
+msgid "Started typing"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr " Tá úsáideoir ag clóscríobh..."
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "Cuir Chuig"
+
+#, c-format
+msgid "Returned from being idle"
+msgstr ""
+
+#, c-format
+msgid "Returned from being away"
+msgstr ""
+
+#, c-format
+msgid "Stopped typing"
+msgstr ""
+
+#, c-format
+msgid "Signed off"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "Sábháil comhad..."
+
+#, c-format
+msgid "Went away"
+msgstr ""
+
+#, c-format
+msgid "Sent a message"
+msgstr ""
+
+#, c-format
+msgid "Unknown.... Please report this!"
+msgstr ""
+
msgid "Smiley theme failed to unpack."
msgstr ""
@@ -11739,6 +11915,12 @@ msgstr ""
msgid "Cl_ose conversations with the Escape key"
msgstr ""
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Liosta Cara"
+
+#. System Tray
msgid "System Tray Icon"
msgstr ""
@@ -11848,9 +12030,6 @@ msgstr ""
msgid "Cannot start browser configuration program."
msgstr ""
-msgid "ST_UN server:"
-msgstr ""
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr ""
@@ -11875,6 +12054,10 @@ msgstr ""
msgid "_End port:"
msgstr ""
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr ""
@@ -11901,6 +12084,10 @@ msgstr ""
msgid "No proxy"
msgstr ""
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "_Úsáideoir:"
@@ -12060,10 +12247,10 @@ msgstr ""
msgid "Auto-away"
msgstr ""
-msgid "Change status when _idle"
+msgid "_Minutes before becoming idle:"
msgstr ""
-msgid "_Minutes before becoming idle:"
+msgid "Change status when _idle"
msgstr ""
msgid "Change _status to:"
@@ -12217,6 +12404,12 @@ msgstr ""
msgid "Status for %s"
msgstr "Stádas le %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
msgid "Custom Smiley"
msgstr ""
@@ -12226,12 +12419,12 @@ msgstr ""
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
-msgid "Duplicate Shortcut"
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
msgstr ""
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
+msgid "Duplicate Shortcut"
msgstr ""
msgid "Please select an image for the smiley."
@@ -12243,16 +12436,20 @@ msgstr ""
msgid "Add Smiley"
msgstr "Cuir Straoiseog"
-msgid "Smiley _Image"
-msgstr ""
+#, fuzzy
+msgid "_Image:"
+msgstr "_Íomhá"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
+#. Shortcut text
+msgid "S_hortcut text:"
msgstr ""
msgid "Smiley"
msgstr "Straoiseog"
+msgid "Shortcut Text"
+msgstr ""
+
msgid "Custom Smiley Manager"
msgstr ""
@@ -12363,6 +12560,16 @@ msgid ""
"Failed to load image '%s': reason not known, probably a corrupt image file"
msgstr ""
+#, fuzzy
+msgid "_Open Link"
+msgstr "_Nasc"
+
+msgid "_Copy Link Location"
+msgstr ""
+
+msgid "_Copy Email Address"
+msgstr ""
+
msgid "Save File"
msgstr "Sábháil comhad..."
@@ -13296,9 +13503,6 @@ msgstr ""
msgid "Only when docked"
msgstr ""
-msgid "_Flash window when chat messages are received"
-msgstr ""
-
msgid "Windows Pidgin Options"
msgstr ""
@@ -13347,15 +13551,29 @@ msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr ""
#, fuzzy
-#~ msgid "Successed:"
-#~ msgstr "Luas:"
+#~ msgid "Add buddy Q&A"
+#~ msgstr "Cuir Cara"
+
+#, fuzzy
+#~ msgid "Connection Closed"
+#~ msgstr "Nasc dúnta"
+
+#, fuzzy
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "Níorbh fhéidir `%s' a oscailt chun scríoch ann: %s"
+
+#~ msgid "Save As..."
+#~ msgstr "Sábháil le..."
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "TOC Prótacal Breiseán"
+
+#~ msgid "%s Options"
+#~ msgstr "%s Roghanna"
#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr "%s (%s)"
+#~ msgid "Successed:"
+#~ msgstr "Luas:"
#, fuzzy
#~ msgid "Error password: %s"
diff --git a/po/gl.po b/po/gl.po
index e28eb7b12e..e4860f9de3 100644
--- a/po/gl.po
+++ b/po/gl.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gl\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-18 01:17-0800\n"
+"POT-Creation-Date: 2009-04-30 10:38-0400\n"
"PO-Revision-Date: 2008-12-15 13:44+0100\n"
"Last-Translator: Frco. Javier Rial Rodríguez <fjrial@cesga.es>\n"
"Language-Team: Galego <g11n@mancomun.org>\n"
@@ -28,13 +28,13 @@ msgstr "Pidgin"
msgid "%s. Try `%s -h' for more information.\n"
msgstr "%s. Tente `%s -h' para máis información.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -610,19 +610,6 @@ msgstr ""
msgid "Send To"
msgstr "Enviar a"
-msgid "Invite message"
-msgstr "Mensaxe de convite"
-
-msgid "Invite"
-msgstr "Convidar"
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Introduza o nome do usuario que desexa convidar,\n"
-"xunto cunha mensaxe de convite opcional."
-
msgid "Conversation"
msgstr "Conversa"
@@ -884,6 +871,41 @@ msgstr "Todas as conversas"
msgid "System Log"
msgstr "Rexistro do sistema"
+#, fuzzy
+msgid "Calling ... "
+msgstr "Calculando..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "Aceptar"
+
+msgid "Reject"
+msgstr "Rexeitar"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "Vostede saíu da canle %s%s"
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "Correos electrónicos"
@@ -918,6 +940,9 @@ msgstr "Continuar"
msgid "IM"
msgstr "MI"
+msgid "Invite"
+msgstr "Convidar"
+
msgid "(none)"
msgstr "(ningún)"
@@ -1120,7 +1145,6 @@ msgstr "%s marchou. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s envioulle unha mensaxe. (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "Evento de aviso descoñecido. Informe disto!"
@@ -1166,7 +1190,6 @@ msgstr "Minutos antes de cambiar o estado"
msgid "Change status to"
msgstr "Cambiar o estado a"
-#. Conversations
msgid "Conversations"
msgstr "Conversacións"
@@ -1489,7 +1512,6 @@ msgstr ""
"Cando se abra unha nova conversa este complemento introducirá a última "
"conversa na actual."
-#, c-format
msgid "Online"
msgstr "Conectado"
@@ -1533,6 +1555,28 @@ msgstr "GntLastlog"
msgid "Lastlog plugin."
msgstr "Complemento de Lastlog."
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL da canción"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "contas"
@@ -1633,13 +1677,6 @@ msgstr "Quere aceptar o certificado para %s?"
msgid "SSL Certificate Verification"
msgstr "Verificación de certificado SSL"
-#. Number of actions
-msgid "Accept"
-msgstr "Aceptar"
-
-msgid "Reject"
-msgstr "Rexeitar"
-
msgid "_View Certificate..."
msgstr "_Ver certificado..."
@@ -1789,6 +1826,18 @@ msgstr "%s saíu da sala."
msgid "%s left the room (%s)."
msgstr "%s saíu da sala (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Convidar a unha conferencia"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Introduza o nome do usuario que desexa convidar, xunto cunha mensaxe de "
+"convite opcional."
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "Fallou ao obter a conexión: %s"
@@ -1925,7 +1974,6 @@ msgstr "Iniciando transferencia de %s desde %s"
msgid "Transfer of file %s complete"
msgstr "Terminou a transferencia do ficheiro %s"
-#, c-format
msgid "File transfer complete"
msgstr "Transferencia de ficheiros terminada"
@@ -1933,7 +1981,6 @@ msgstr "Transferencia de ficheiros terminada"
msgid "You canceled the transfer of %s"
msgstr "Cancelou a transferencia de %s"
-#, c-format
msgid "File transfer cancelled"
msgstr "Transferencia de ficheiros cancelada"
@@ -2143,7 +2190,6 @@ msgstr "(%s) %s <RESPOSTA AUTOMÁTICA>: %s\n"
msgid "You are using %s, but this plugin requires %s."
msgstr "Esta a empregar %s, mais este complemento precisa %s."
-#, c-format
msgid "This plugin has not defined an ID."
msgstr "Este complemento non definiu un ID."
@@ -2637,6 +2683,32 @@ msgstr "Gardar as mensaxes sen conexión nun aviso"
msgid "Do not ask. Always save in pounce."
msgstr "Non preguntar. Gardar sempre nun aviso."
+#, fuzzy
+msgid "One Time Password"
+msgstr "Introducir o contrasinal"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2848,7 +2920,6 @@ msgstr ""
"Non é posíbel establecer a conexión co servidor local mDNS. Estase a "
"executar?"
-#. Creating the options for the protocol
msgid "First name"
msgstr "Nome"
@@ -2880,6 +2951,11 @@ msgstr "Complemento de protocolo Bonjour"
msgid "Purple Person"
msgstr "Persoa Purple"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "Localidade"
+
msgid "Bonjour"
msgstr "Bonjour"
@@ -3038,13 +3114,13 @@ msgstr "Seleccione unha conversa para o contacto: %s"
msgid "Add to chat..."
msgstr "Engadir á conversa..."
+#. Global
msgid "Available"
msgstr "Dispoñíbel"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "Ausente"
@@ -3385,6 +3461,17 @@ msgstr ""
"O servidor rexeitou o nome que escolleu para a súa conta. É probábel que "
"inclúa caracteres non válidos."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "O nome desta conversa xa está en uso"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Alcume"
+
msgid "Cannot change nick"
msgstr "Non se pode cambiar o alias"
@@ -3659,6 +3746,41 @@ msgstr "O desafío do servidor non é válido."
msgid "SASL error"
msgstr "Erro de SASL"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "Non se deu ningunha razón"
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Versión non soportada"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"Non se puido establecer unha conexión co servidor:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"Non se puido establecer unha conexión co servidor:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "Non é posíbel comezar a conexión"
+
+msgid "Unable to create socket"
+msgstr "Non é posíbel crear o conectador"
+
+msgid "Write error"
+msgstr "Erro de escritura"
+
msgid "Full Name"
msgstr "Nome completo:"
@@ -3725,6 +3847,10 @@ msgstr "Cliente"
msgid "Operating System"
msgstr "Sistema operativo"
+#, fuzzy
+msgid "Local Time"
+msgstr "Ficheiro local:"
+
msgid "Last Activity"
msgstr "Última actividade"
@@ -3930,7 +4056,6 @@ msgstr "Falador"
msgid "Extended Away"
msgstr "Ausencia estendida"
-#, c-format
msgid "Do Not Disturb"
msgstr "Non molestar"
@@ -4056,9 +4181,6 @@ msgid "You require encryption, but it is not available on this server."
msgstr ""
"Vostede solicitou a codificación, mais non está dispoñíbel neste servidor."
-msgid "Write error"
-msgstr "Erro de escritura"
-
msgid "Ping timeout"
msgstr "Excedeuse o tempo de espera do ping"
@@ -4067,14 +4189,9 @@ msgstr "Erro de lectura"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"Non se puido establecer unha conexión co servidor:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "Non é posíbel crear o conectador"
msgid "Invalid XMPP ID"
msgstr "ID de XMPP non válido"
@@ -4082,6 +4199,10 @@ msgstr "ID de XMPP non válido"
msgid "Invalid XMPP ID. Domain must be set."
msgstr "ID de XMPP non válido. Débese definir o dominio."
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Fallou ao conectar ao servidor."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "Rexistro de %s@%s efectuado con éxito"
@@ -4169,9 +4290,18 @@ msgstr "Autentificación"
msgid "Re-initializing Stream"
msgstr "Reinicializando o fluxo"
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr "Non autorizado"
+msgid "Mood"
+msgstr "Estado de ánimo"
+
+msgid "Now Listening"
+msgstr "Escoitando agora"
+
msgid "Both"
msgstr "Ambos"
@@ -4193,12 +4323,6 @@ msgstr "Ninguén"
msgid "Subscription"
msgstr "Subscrición"
-msgid "Mood"
-msgstr "Estado de ánimo"
-
-msgid "Now Listening"
-msgstr "Escoitando agora"
-
msgid "Mood Text"
msgstr "Texto de estado de ánimo"
@@ -4436,21 +4560,27 @@ msgstr "Non é posíbel expulsar o usuario %s"
msgid "Unable to ping user %s"
msgstr "Non é posíbel facer ping ao usuario %s"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr ""
"Non é posíbel enviar un zunido porque non se coñece nada do usuario %s."
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr ""
"Non é posíbel enviar un zunido porque pode que o usuario %s estea "
"desconectado."
-#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+#, fuzzy, c-format
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "Non é posíbel enviar un zunido porque o usuario %s non o soporta."
+#, c-format
+msgid "Buzzing %s..."
+msgstr "Enviando un zunido a %s..."
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
msgid "Buzz"
@@ -4460,9 +4590,35 @@ msgstr "Zunido"
msgid "%s has buzzed you!"
msgstr "%s envioulle un zunido!"
-#, c-format
-msgid "Buzzing %s..."
-msgstr "Enviando un zunido a %s..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "Non se puido enviar o ficheiro a %s, JID non válido"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "Non se puido enviar o ficheiro a %s, o usuario non está conectado"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr ""
+"Non se puido enviar o ficheiro a %s, non está subscrito á presenza do usuario"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "Fallou o rexistro"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "Seleccione o recurso de %s ao que quere enviar o ficheiro"
+
+msgid "Select a Resource"
+msgstr "Seleccione un recurso"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "Iniciar a _conversa"
msgid "config: Configure a chat room."
msgstr "config: Configurar unha sala de conversa."
@@ -4619,6 +4775,21 @@ msgstr "Erro ao unirse á conversa %s"
msgid "Error in chat %s"
msgstr "Erro na conversa %s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "Produciuse un erro ao abrir o ficheiro."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "Fallou a transferencia do ficheiro"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Fallo ao abrir o ficheiro '%s': %s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4645,9 +4816,6 @@ msgstr ""
msgid "Please select the resource of %s to which you would like to send a file"
msgstr "Seleccione o recurso de %s ao que quere enviar o ficheiro"
-msgid "Select a Resource"
-msgstr "Seleccione un recurso"
-
msgid "Edit User Mood"
msgstr "Editar o estado de ánimo de usuario"
@@ -4682,9 +4850,6 @@ msgstr "Accións"
msgid "Select an action"
msgstr "Seleccionar unha acción"
-msgid "Unable to retrieve MSN Address Book"
-msgstr "Non é posíbel obter a axenda de enderezos do MSN"
-
#. only notify the user about problems adding to the friends list
#. * maybe we should do something else for other lists, but it probably
#. * won't cause too many problems if we just ignore it
@@ -4926,7 +5091,6 @@ msgstr "Pasaporte de menores sen consentimento paterno"
msgid "Passport account not yet verified"
msgstr "Conta de pasaporte aínda non verificada"
-#, c-format
msgid "Passport account suspended"
msgstr "Conta de pasaporte suspendida"
@@ -6147,7 +6311,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr "Erro. O soporte SSL non está instalado."
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr "Pechouse esta conferencia. Non se poden enviar máis mensaxes."
@@ -6412,23 +6575,18 @@ msgstr "Cámara"
msgid "Screen Sharing"
msgstr "Pantalla compartida"
-#, c-format
msgid "Free For Chat"
msgstr "Dispoñíbel para conversar"
-#, c-format
msgid "Not Available"
msgstr "Non dispoñíbel"
-#, c-format
msgid "Occupied"
msgstr "Ocupado"
-#, c-format
msgid "Web Aware"
msgstr "Visibilidade na Web"
-#, c-format
msgid "Invisible"
msgstr "Invisíbel"
@@ -6478,7 +6636,7 @@ msgstr ""
"de correo electrónico válida ou comezar cunha letra e conter só letras, "
"números e espazos, ou conter só números."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr "Nome de usuario non válido."
@@ -6495,7 +6653,7 @@ msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr ""
"O servizo de mensaxería instantánea AOL non está dispoñíbel temporalmente."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6529,13 +6687,9 @@ msgstr "Introduza o díxito de seis números que aparece na pantalla."
msgid "_OK"
msgstr "_Aceptar"
-#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
-msgstr ""
-"Talvez sexa desconectado en breve. Pode querer usar TOC até que se resolva "
-"isto. Comprobe %s para as actualizacións."
+#, fuzzy, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
+msgstr "Talvez sexa desconectado en breve. Comprobe %s para actualizacións."
msgid "Unable to get a valid AIM login hash."
msgstr "Non se puido obter un hash de inicio de sesión AIM válido."
@@ -6682,7 +6836,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] "Perdeuse %hu mensaxe de %s por motivos descoñecidos."
msgstr[1] "Perdeuse %hu mensaxe de %s por motivos descoñecidos."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "Non se puido enviar a mensaxe: %s"
@@ -6998,6 +7152,7 @@ msgstr "C_onectar"
msgid "Get AIM Info"
msgstr "Obter información de AIM"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "Editar o comentario de contacto"
@@ -7107,7 +7262,6 @@ msgstr "Preguntándolle a %s para nos conectar a %s: %hu para MI Directa."
msgid "Attempting to connect to %s:%hu."
msgstr "Tentando conectarse a %s:%hu."
-#, c-format
msgid "Attempting to connect via proxy server."
msgstr "Tentando conectarse ao servidor por medio do proxy."
@@ -7280,6 +7434,38 @@ msgstr "Actualizar"
msgid "Could not change buddy information."
msgstr "Non se puido cambiar a información do contacto."
+msgid "Mobile"
+msgstr "Móbil"
+
+msgid "Note"
+msgstr "Nota"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "Icona de contacto"
+
+msgid "Change his/her memo as you like"
+msgstr ""
+
+#, fuzzy
+msgid "_Modify"
+msgstr "Modificar"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "Modificar"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "Servidor ocupado"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
#, c-format
msgid "%u requires verification"
msgstr "%u require verificación"
@@ -7592,6 +7778,13 @@ msgstr "<p><b>Queridos escritores de parches</b>:<br>\n"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<p><b>Recoñecemento</b>:<br>\n"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<p><b>Autor orixinal</b>:<br>\n"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr "<p><i>E ao resto da xente que está por detrás...</i><br>\n"
@@ -7617,6 +7810,10 @@ msgstr "Actualizar todos os QQ Quns"
msgid "About OpenQ"
msgstr "Sobre OpenQ"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Modificar enderezo"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7654,6 +7851,9 @@ msgstr "Amosar o aviso do servidor"
msgid "Show server news"
msgstr "Amosar as noticias do servidor"
+msgid "Show chat room when msg comes"
+msgstr ""
+
#, fuzzy
msgid "Keep alive interval (seconds)"
msgstr "Intervalo de keep alive (segundos)"
@@ -7723,7 +7923,6 @@ msgstr ""
"Código de resposta descoñecido ao iniciar sesión en (0x%02X):\n"
"%s"
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "Non é posíbel conectar."
@@ -8633,9 +8832,6 @@ msgstr "Organización"
msgid "Unit"
msgstr "Unidade"
-msgid "Note"
-msgstr "Nota"
-
msgid "Join Chat"
msgstr "Unirse a unha conversa"
@@ -9292,6 +9488,10 @@ msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr ""
"Os nomes de usuario SIP non poden conter espazos en branco nin o símbolo @"
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "Amosar o aviso do servidor"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -9326,200 +9526,12 @@ msgid "Auth Domain"
msgstr "Dominio de autenticación"
#, c-format
-msgid "Looking up %s"
-msgstr "Buscando %s"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Fallou a conexión a %s"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Conectado: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "Non se puido escribir o ficheiro %s."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "Non se puido ler o ficheiro %s."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "A mensaxe é demasiado longa; borrouse os últimos %s bytes."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s non está conectado agora."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "Non se permiten avisos de %s."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr ""
-"Descartouse a mensaxe; vostede está a exceder o límite de velocidade do "
-"servidor."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "Non está dispoñíbel a conversa en %s."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "Está a enviar mensaxes demasiado rápido a %s."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "Perdeu unha MI de %s porque era demasiado grande."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "Perdeu unha MI de %s porque se mandou demasiado rápido."
-
-#, c-format
-msgid "Failure."
-msgstr "Fallo."
-
-#, c-format
-msgid "Too many matches."
-msgstr "Demasiados resultados."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "Necesítanse máis cualificadores."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "Servizo de directorio non dispoñíbel temporalmente."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "Busca de enderezos de correo electrónico restrinxida."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "Palabra chave ignorada."
-
-#, c-format
-msgid "No keywords."
-msgstr "Sen palabras chave."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "O usuario non ten información de directorio."
-
-#, c-format
-msgid "Country not supported."
-msgstr "País non soportado."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Fallo descoñecido: %s."
-
-#, c-format
-msgid "Incorrect username or password."
-msgstr "O nome de usuario ou contrasinal non é correcto."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "O servizo non está dispoñíbel temporalmente."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr ""
-"O seu nivel de advertencias é actualmente demasiado alto para iniciar a "
-"sesión."
-
-#, 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 ""
-"Conectouse e desconectouse con demasida frecuencia. Agarde dez minutos e "
-"inténteo de novo. Se segue intentándoo, poida que precise agardar aínda máis "
-"tempo."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "Ocorreu un erro descoñecido ao conectarse: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "Ocorreu un erro (%d) descoñecido. Información: %s"
-
-msgid "Invalid Groupname"
-msgstr "Nome de grupo non válido"
-
-msgid "Connection Closed"
-msgstr "Conexión pechada"
-
-msgid "Waiting for reply..."
-msgstr "Agardando resposta..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "O TOC rematou a pausa. Xa pode volver a enviar mensaxes."
-
-msgid "Password Change Successful"
-msgstr "O contrasinal modificouse con éxito"
-
-msgid "_Group:"
-msgstr "_Grupo:"
-
-msgid "Get Dir Info"
-msgstr "Obter a información do directorio"
-
-msgid "Set Dir Info"
-msgstr "Establecer a información do directorio"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "Non se puido abrir %s para escritura!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr ""
-"Fallou a transferencia do ficheiro; posibelmente foi cancelado polo outro "
-"extremo."
-
-msgid "Could not connect for transfer."
-msgstr "Non se puido conectar para realizar a transferencia."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr ""
-"Non se puido escribir a cabeceira do ficheiro. O ficheiro non se transferirá."
-
-msgid "Save As..."
-msgstr "Gardar como..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s solicita a %s que acepte %d ficheiro: %s (%.2f %s)%s%s"
-msgstr[1] "%s solicita a %s que acepte %d ficheiro: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s solicita que lles envíe un ficheiro"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "Complemento de protocolo TOC"
-
-#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr "%s enviou unconvite de cámara web, mais aínda non está soportada."
+msgid "Your SMS was not delivered"
+msgstr ""
+
msgid "Your Yahoo! message did not get sent."
msgstr "A súa mensaxe Yahoo! non se enviou."
@@ -10125,9 +10137,6 @@ msgstr "Non molestar"
msgid "Extended away"
msgstr "Ausencia ampliada"
-msgid "Mobile"
-msgstr "Móbil"
-
msgid "Listening to music"
msgstr "Escoitando música"
@@ -10169,18 +10178,6 @@ msgstr "+++ %s agora está activo"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "Erro ao ler %s"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"Encontrouse un erro ao ler o seu %s. Non se cargaron e o ficheiro antigo "
-"renomeouse como %s~."
-
msgid "Calculating..."
msgstr "Calculando..."
@@ -10255,6 +10252,14 @@ msgstr "Error ao escribir en %s: %s"
msgid "Unable to connect to %s: %s"
msgstr "Non se pode conectar a %s: %s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+"O servidor require TLS/SSL para iniciar a sesión. Non se dispón de soporte "
+"TLS/SSL."
+
#, c-format
msgid " - %s"
msgstr " - %s"
@@ -10288,6 +10293,18 @@ msgstr "Conexión rexeitada."
msgid "Address already in use."
msgstr "O enderezo xa está en uso."
+#, c-format
+msgid "Error Reading %s"
+msgstr "Erro ao ler %s"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"Encontrouse un erro ao ler o seu %s. Non se cargaron e o ficheiro antigo "
+"renomeouse como %s~."
+
msgid "Internet Messenger"
msgstr "Mensaxería na Internet"
@@ -10330,10 +10347,8 @@ msgstr "Noti_ficacións de correo novo"
msgid "Use this buddy _icon for this account:"
msgstr "Usar esta icona de contacto para esta conta:"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "Opcións de %s"
+msgid "_Advanced"
+msgstr "_Avanzado"
msgid "Use GNOME Proxy Settings"
msgstr "Usar a configuración de proxy de GNOME"
@@ -10368,9 +10383,6 @@ msgstr "Se mira ben preto"
msgid "you can see the butterflies mating"
msgstr "pode ver as bolboretas apareándose"
-msgid "Proxy Options"
-msgstr "Opcións do proxy"
-
msgid "Proxy _type:"
msgstr "_Tipo de proxy:"
@@ -10398,8 +10410,9 @@ msgstr "_Básico"
msgid "Create _this new account on the server"
msgstr "Crear es_ta conta nova no servidor"
-msgid "_Advanced"
-msgstr "_Avanzado"
+#, fuzzy
+msgid "_Proxy"
+msgstr "Proxy"
msgid "Enabled"
msgstr "Activado"
@@ -10476,6 +10489,17 @@ msgstr "Obter _información"
msgid "I_M"
msgstr "M_I"
+#, fuzzy
+msgid "_Audio Call"
+msgstr "_Engadir conversa"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Videoconferencia"
+
msgid "_Send File..."
msgstr "E_nviar ficheiro..."
@@ -10612,6 +10636,10 @@ msgstr "/Ferramentas/_Avisos de contacto"
msgid "/Tools/_Certificates"
msgstr "/Ferramentas/_Certificados"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Ferramentas/E_moticona"
+
msgid "/Tools/Plu_gins"
msgstr "/Ferramentas/C_omplementos"
@@ -10621,9 +10649,6 @@ msgstr "/Ferramentas/Pr_eferencias"
msgid "/Tools/Pr_ivacy"
msgstr "/Ferramentas/Pr_ivacidade"
-msgid "/Tools/Smile_y"
-msgstr "/Ferramentas/E_moticona"
-
msgid "/Tools/_File Transfers"
msgstr "/Ferramentas/Transferencias de _ficheiros"
@@ -10741,8 +10766,8 @@ msgstr "Manualmente"
msgid "By status"
msgstr "Por estado"
-msgid "By log size"
-msgstr "Por tamaño de rexistro"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10758,6 +10783,9 @@ msgstr "Conectar de novo"
msgid "Re-enable"
msgstr "Activar de novo"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr "Benvida/o de novo!"
@@ -10848,6 +10876,9 @@ msgstr ""
msgid "A_lias:"
msgstr "A_lias:"
+msgid "_Group:"
+msgstr "_Grupo:"
+
msgid "Auto_join when account becomes online."
msgstr "_Unirse automatiamente cando unha conta se volve activa."
@@ -10900,14 +10931,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr "Convidar a un contacto á sala de conversa"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Introduza o nome do usuario que desexa convidar, xunto cunha mensaxe de "
-"convite opcional."
-
msgid "_Buddy:"
msgstr "_Contacto:"
@@ -10982,6 +11005,22 @@ msgstr "/Conversa/_Gardar como..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Conversa/Limpar _historial"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Conversa/Má_is"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Conversa/Má_is"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Conversa/Má_is"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Conversa/Ver _rexistro"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Conversa/E_nviar ficheiro..."
@@ -11054,6 +11093,18 @@ msgstr "/Conversa"
msgid "/Conversation/View Log"
msgstr "/Conversa/Ver o rexistro"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Conversa/Máis"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Conversa/Ver o rexistro"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Conversa/Máis"
+
msgid "/Conversation/Send File..."
msgstr "/Conversa/Enviar o ficheiro..."
@@ -11237,6 +11288,9 @@ msgstr "artista"
msgid "Ka-Hing Cheung"
msgstr "Ka-Hing Cheung"
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "soporte"
@@ -11377,6 +11431,10 @@ msgstr "Xeorxiano"
msgid "Ubuntu Georgian Translators"
msgstr "Tradutores xeorxianos de Ubuntu"
+#, fuzzy
+msgid "Khmer"
+msgstr "Outros"
+
msgid "Kannada"
msgstr "Kannada"
@@ -11398,6 +11456,10 @@ msgstr "Lituano"
msgid "Macedonian"
msgstr "Macedonio"
+#, fuzzy
+msgid "Mongolian"
+msgstr "Macedonio"
+
msgid "Bokmål Norwegian"
msgstr "Noruegués Bokmål"
@@ -11512,7 +11574,24 @@ msgstr ""
"tipo de garantía para este programa.<BR><BR>"
#, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, fuzzy, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin en irc.freenode.net<BR><BR>"
+
+#, fuzzy, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin en irc.freenode.net<BR><BR>"
msgid "Current Developers"
@@ -11821,15 +11900,6 @@ msgstr "A cor que se usará para a notificación de escritura"
msgid "Enable typing notification"
msgstr "Activar a notificación de escritura"
-msgid "_Copy Email Address"
-msgstr "_Copiar enderezo de correo"
-
-msgid "_Open Link in Browser"
-msgstr "_Abrir ligazón no navegador"
-
-msgid "_Copy Link Location"
-msgstr "_Copiar localización da ligazón"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12077,13 +12147,14 @@ msgstr "_Examinar o cartafol de rexistros"
msgid "%s %s. Try `%s -h' for more information.\n"
msgstr "%s %s. Probe `%s -h' para máis información.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12108,13 +12179,14 @@ msgstr ""
" Sen isto só se activará a primeira conta).\n"
" -v, --version mostra a versión actual e sae\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12169,11 +12241,27 @@ msgstr ""
msgid "Pidgin"
msgstr "Pidgin"
-msgid "Open All Messages"
-msgstr "Abrir todas as mensaxes"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Ten correo!</span>"
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "Calculando..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -12204,6 +12292,27 @@ msgstr ""
"Elixiuse o navegador 'Manual', mais non se definiu ningún comando para "
"executalo."
+msgid "Open All Messages"
+msgstr "Abrir todas as mensaxes"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Ten correo!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "Novo aviso de contacto"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Ten correo!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "Mensaxe descoñecida"
+
msgid "The following plugins will be unloaded."
msgstr "Desactivaranse os seguintes complementos."
@@ -12252,6 +12361,10 @@ msgstr "<b>Detalles do complemento</b>"
msgid "Select a file"
msgstr "Seleccione un ficheiro"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Editar aviso de contacto"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "A quen avisar"
@@ -12322,6 +12435,50 @@ msgstr "_Recorrente"
msgid "Pounce Target"
msgstr "Sobre quen avisar"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "Comeza a escribir"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "Fai unha pausa ao escribir"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "Se conecta"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s volveu da inactividade (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "Deixa de estar ausente"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "Deixou de escribir"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "Se desconecta"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "Se volve inactivo"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "Cando estea ausente"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Enviar unha mensaxe"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "Evento de aviso descoñecido. Informe disto!"
+
msgid "Smiley theme failed to unpack."
msgstr "Fallou o desempaquetado do tema de emoticonas."
@@ -12344,6 +12501,12 @@ msgstr "Atallos de teclado"
msgid "Cl_ose conversations with the Escape key"
msgstr "Pechar as c_onversas coa tecla Esc"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Lista de contactos"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "Icona da área de notificación do sistema"
@@ -12454,9 +12617,6 @@ msgstr "Non se pode iniciar o programa de configuración do proxy."
msgid "Cannot start browser configuration program."
msgstr "Non se pode iniciar o programa de configuración do navegador."
-msgid "ST_UN server:"
-msgstr "Servidor ST_UN:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">Exemplo: stunserver.org</span>"
@@ -12481,6 +12641,10 @@ msgstr "Porto _inicial:"
msgid "_End port:"
msgstr "Porto _final:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr "Servidor proxy &amp; Navegador"
@@ -12509,6 +12673,10 @@ msgstr "Servidor proxy"
msgid "No proxy"
msgstr "Sen proxy"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "_Usuario:"
@@ -12667,12 +12835,12 @@ msgstr "Cando estea ausente ou inactivo"
msgid "Auto-away"
msgstr "Ausencia automática"
-msgid "Change status when _idle"
-msgstr "Cambiar o estado cando estea _inactivo"
-
msgid "_Minutes before becoming idle:"
msgstr "_Minutos antes de volverse inactivo:"
+msgid "Change status when _idle"
+msgstr "Cambiar o estado cando estea _inactivo"
+
msgid "Change _status to:"
msgstr "Cambiar o e_stado a:"
@@ -12823,6 +12991,12 @@ msgstr "Ga_rdar e usar"
msgid "Status for %s"
msgstr "Estado para %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
msgid "Custom Smiley"
msgstr "Emoticona personalizada"
@@ -12832,16 +13006,16 @@ msgstr "Precísanse máis datos"
msgid "Please provide a shortcut to associate with the smiley."
msgstr "Proporcione un atallo para asociar á emoticona."
-msgid "Duplicate Shortcut"
-msgstr "Atallo duplicado"
-
+#, fuzzy, c-format
msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
+"A custom smiley for '%s' already exists. Please use a different shortcut."
msgstr ""
"Xa existe unha emoticona personalizada para o atallo seleccionado. "
"Especifique un atallo diferente."
+msgid "Duplicate Shortcut"
+msgstr "Atallo duplicado"
+
msgid "Please select an image for the smiley."
msgstr "Escolla unha imaxe para a emoticona."
@@ -12851,16 +13025,22 @@ msgstr "Editar emoticona"
msgid "Add Smiley"
msgstr "Engadir emoticona"
-msgid "Smiley _Image"
-msgstr "_Imaxe de emoticona"
+#, fuzzy
+msgid "_Image:"
+msgstr "_Imaxe"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr "A_tallo de emoticona"
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "Atallo"
msgid "Smiley"
msgstr "Emoticona"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "Atallo"
+
msgid "Custom Smiley Manager"
msgstr "Xestor de emoticonas personalizadas"
@@ -12987,6 +13167,16 @@ msgstr ""
"Fallo ao cargar a imaxe '%s': causa descoñecida, probablemente o ficheiro "
"está corrompido"
+#, fuzzy
+msgid "_Open Link"
+msgstr "_Abrir ligazón en:"
+
+msgid "_Copy Link Location"
+msgstr "_Copiar localización da ligazón"
+
+msgid "_Copy Email Address"
+msgstr "_Copiar enderezo de correo"
+
msgid "Save File"
msgstr "Gardar o ficheiro"
@@ -13962,9 +14152,6 @@ msgstr "_Manter a xanela da lista de contactos en primeiro plano:"
msgid "Only when docked"
msgstr "Só cando está ancorado"
-msgid "_Flash window when chat messages are received"
-msgstr "Facer escintilar a _xanela cando se reciben mensaxes de conversas"
-
msgid "Windows Pidgin Options"
msgstr "Opcións do Pidgin no Windows"
@@ -14013,3 +14200,196 @@ msgstr "Enviar e recibir entradas XMPP en bruto."
#. * description
msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr "Este complemento é útil para depurar servidores XMPP ou clientes."
+
+#~ msgid "Invite message"
+#~ msgstr "Mensaxe de convite"
+
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Introduza o nome do usuario que desexa convidar,\n"
+#~ "xunto cunha mensaxe de convite opcional."
+
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "Non é posíbel obter a axenda de enderezos do MSN"
+
+#~ msgid ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+#~ msgstr ""
+#~ "Talvez sexa desconectado en breve. Pode querer usar TOC até que se "
+#~ "resolva isto. Comprobe %s para as actualizacións."
+
+#~ msgid "Looking up %s"
+#~ msgstr "Buscando %s"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "Fallou a conexión a %s"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Conectado: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "Non se puido escribir o ficheiro %s."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "Non se puido ler o ficheiro %s."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "A mensaxe é demasiado longa; borrouse os últimos %s bytes."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s non está conectado agora."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "Non se permiten avisos de %s."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr ""
+#~ "Descartouse a mensaxe; vostede está a exceder o límite de velocidade do "
+#~ "servidor."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "Non está dispoñíbel a conversa en %s."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "Está a enviar mensaxes demasiado rápido a %s."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "Perdeu unha MI de %s porque era demasiado grande."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr "Perdeu unha MI de %s porque se mandou demasiado rápido."
+
+#~ msgid "Failure."
+#~ msgstr "Fallo."
+
+#~ msgid "Too many matches."
+#~ msgstr "Demasiados resultados."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "Necesítanse máis cualificadores."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "Servizo de directorio non dispoñíbel temporalmente."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "Busca de enderezos de correo electrónico restrinxida."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "Palabra chave ignorada."
+
+#~ msgid "No keywords."
+#~ msgstr "Sen palabras chave."
+
+#~ msgid "User has no directory information."
+#~ msgstr "O usuario non ten información de directorio."
+
+#~ msgid "Country not supported."
+#~ msgstr "País non soportado."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Fallo descoñecido: %s."
+
+#~ msgid "Incorrect username or password."
+#~ msgstr "O nome de usuario ou contrasinal non é correcto."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "O servizo non está dispoñíbel temporalmente."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr ""
+#~ "O seu nivel de advertencias é actualmente demasiado alto para iniciar a "
+#~ "sesión."
+
+#~ msgid ""
+#~ "You have been connecting and disconnecting too frequently. Wait ten "
+#~ "minutes and try again. If you continue to try, you will need to wait "
+#~ "even longer."
+#~ msgstr ""
+#~ "Conectouse e desconectouse con demasida frecuencia. Agarde dez minutos e "
+#~ "inténteo de novo. Se segue intentándoo, poida que precise agardar aínda "
+#~ "máis tempo."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "Ocorreu un erro descoñecido ao conectarse: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "Ocorreu un erro (%d) descoñecido. Información: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "Nome de grupo non válido"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Conexión pechada"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "Agardando resposta..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "O TOC rematou a pausa. Xa pode volver a enviar mensaxes."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "O contrasinal modificouse con éxito"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Obter a información do directorio"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Establecer a información do directorio"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "Non se puido abrir %s para escritura!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr ""
+#~ "Fallou a transferencia do ficheiro; posibelmente foi cancelado polo outro "
+#~ "extremo."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "Non se puido conectar para realizar a transferencia."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr ""
+#~ "Non se puido escribir a cabeceira do ficheiro. O ficheiro non se "
+#~ "transferirá."
+
+#~ msgid "Save As..."
+#~ msgstr "Gardar como..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s solicita a %s que acepte %d ficheiro: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s solicita a %s que acepte %d ficheiro: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s solicita que lles envíe un ficheiro"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "Complemento de protocolo TOC"
+
+#~ msgid "%s Options"
+#~ msgstr "Opcións de %s"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Opcións do proxy"
+
+#~ msgid "By log size"
+#~ msgstr "Por tamaño de rexistro"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_Abrir ligazón no navegador"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "Servidor ST_UN:"
+
+#~ msgid "Smiley _Image"
+#~ msgstr "_Imaxe de emoticona"
+
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "A_tallo de emoticona"
+
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "Facer escintilar a _xanela cando se reciben mensaxes de conversas"
diff --git a/po/gu.po b/po/gu.po
index b7f7d106b5..9ea2dfc211 100644
--- a/po/gu.po
+++ b/po/gu.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin_gu\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
+"POT-Creation-Date: 2009-04-30 10:38-0400\n"
"PO-Revision-Date: 2006-07-03 11:31+0530\n"
"Last-Translator: Ankit Patel <ankit644@yahoo.com>\n"
"Language-Team: Gujarati <indianoss-gujarati@lists.sourceforge.net>\n"
@@ -36,7 +36,7 @@ msgid ""
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -644,21 +644,6 @@ msgid "Send To"
msgstr "આને મોકલો (_S)"
#, fuzzy
-msgid "Invite message"
-msgstr "બહાર નીકળવાનો સંદેશો"
-
-msgid "Invite"
-msgstr "આમંત્રણ આપો"
-
-#, fuzzy
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"મહેરબાની કરીને તમે જે વપરાશકર્તાને આમંત્રિત કરવા માંગો તેનું નામ, વૈકલ્પિક આમંત્રણ સંદેશા સાથે "
-"દાખલ કરો."
-
-#, fuzzy
msgid "Conversation"
msgstr "વાર્તાલાપો"
@@ -923,6 +908,42 @@ msgid "System Log"
msgstr "સિસ્ટમ લૉગ"
#, fuzzy
+msgid "Calling ... "
+msgstr "ગણી રહ્યા છીએ..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "સ્વીકારો"
+
+#, fuzzy
+msgid "Reject"
+msgstr "પુનઃસુયોજન"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "તમે ચેનલ%s%s ને ભાગી નાંખી છે"
+
+msgid "call: Make an audio call."
+msgstr ""
+
+#, fuzzy
msgid "Emails"
msgstr "ઈમેઈલ"
@@ -960,6 +981,9 @@ msgstr "જોડાઈ રહ્યા છીએ"
msgid "IM"
msgstr "IM"
+msgid "Invite"
+msgstr "આમંત્રણ આપો"
+
#, fuzzy
msgid "(none)"
msgstr "(નામ વિનાનું)"
@@ -1183,7 +1207,6 @@ msgstr "%s એ દૂર જતો રહ્યો છે. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s તમને %s (%s) મોકલવા માંગે છે"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "અજ્ઞાત પાઉન્સ ઘટના. મહેરબાની કરીને આનો અહેવાલ આપો!"
@@ -1240,7 +1263,6 @@ msgstr "સુયોજિત કરવા પહેલાંની મિનિ
msgid "Change status to"
msgstr "સ્થિતિને આમાં બદલો (_s):"
-#. Conversations
msgid "Conversations"
msgstr "વાર્તાલાપો"
@@ -1593,7 +1615,6 @@ msgid ""
"conversation into the current conversation."
msgstr "જ્યારે નવો સંવાદ આ પ્લગઈન ખોલે તો તે છેલ્લો સંવાદ વર્તમાન સંવાદમાં દાખલ કરશે."
-#, c-format
msgid "Online"
msgstr "ઓનલાઈન"
@@ -1642,6 +1663,28 @@ msgstr ""
msgid "Lastlog plugin."
msgstr ""
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "ખાતાઓ"
@@ -1740,14 +1783,6 @@ msgstr "શું સંવાદ આમંત્રણ સ્વીકારવ
msgid "SSL Certificate Verification"
msgstr ""
-#. Number of actions
-msgid "Accept"
-msgstr "સ્વીકારો"
-
-#, fuzzy
-msgid "Reject"
-msgstr "પુનઃસુયોજન"
-
msgid "_View Certificate..."
msgstr ""
@@ -1884,6 +1919,18 @@ msgstr "%s એ કક્ષ છોડી દીધો."
msgid "%s left the room (%s)."
msgstr "%s એ કક્ષ (%s) છોડી દીધો."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "કોન્ફરન્સ આરંભ કરો"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"મહેરબાની કરીને તમે જે વપરાશકર્તાને આમંત્રિત કરવા માંગો તેનું નામ, વૈકલ્પિક આમંત્રણ સંદેશા સાથે "
+"દાખલ કરો."
+
#, fuzzy, c-format
msgid "Failed to get connection: %s"
msgstr "%s માટે cmodes સુયોજિત કરવામાં નિષ્ફળ"
@@ -2022,7 +2069,6 @@ msgstr "શું %s માંથી %sની ફાઈલ પરિવહન
msgid "Transfer of file %s complete"
msgstr "ફાઈલ %s નું પરિવહન પૂર્ણ"
-#, c-format
msgid "File transfer complete"
msgstr "ફાઈલ પરિવહન પૂર્ણ"
@@ -2030,7 +2076,6 @@ msgstr "ફાઈલ પરિવહન પૂર્ણ"
msgid "You canceled the transfer of %s"
msgstr "તમે %s નું પરિવહન રદ કર્યું"
-#, c-format
msgid "File transfer cancelled"
msgstr "ફાઈલ પરિવહન રદ થઈ ગયું"
@@ -2219,7 +2264,6 @@ msgstr "(%s) %s <AUTO-REPLY>: %s\n"
msgid "You are using %s, but this plugin requires %s."
msgstr ""
-#, c-format
msgid "This plugin has not defined an ID."
msgstr ""
@@ -2713,6 +2757,32 @@ msgstr ""
msgid "Do not ask. Always save in pounce."
msgstr ""
+#, fuzzy
+msgid "One Time Password"
+msgstr "પાસવર્ડ દાખલ કરો"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2916,7 +2986,6 @@ msgid ""
"Unable to establish connection with the local mDNS server. Is it running?"
msgstr ""
-#. Creating the options for the protocol
msgid "First name"
msgstr "પ્રથમ નામ"
@@ -2951,6 +3020,11 @@ msgstr "Bonjour પ્રોટોકોલ પ્લગઈન"
msgid "Purple Person"
msgstr "નવી વ્યક્તિ"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "સ્થાનિકત્વ"
+
msgid "Bonjour"
msgstr "બોનજોર"
@@ -3116,13 +3190,13 @@ msgstr "સંવાદ માટે વ્યક્તિ પસંદ કર
msgid "Add to chat..."
msgstr "સંવાદમાં ઉમેરો..."
+#. Global
msgid "Available"
msgstr "ઉપલબ્ધ"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "દૂર"
@@ -3475,6 +3549,17 @@ msgid ""
"invalid characters."
msgstr "તમારું પસંદિત ખાતા નામ સર્વર દ્વારા નકારાયું હતું. તે કદાચ અયોગ્ય અક્ષરો સમાવે છે."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "આ સંવાદ નામ પહેલાથી જ ઉપયોગમાં છે"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "લાડકું નામ"
+
msgid "Cannot change nick"
msgstr "નામ બદલી શકતા નથી"
@@ -3752,6 +3837,37 @@ msgstr "સર્વરમાંથી અયોગ્ય શરત"
msgid "SASL error"
msgstr "સંવાદ ક્ષતિ"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "કોઈ કારણ આપેલ નથી."
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "બિનઆધારભૂત આવૃત્તિ"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr "સર્વર સાથે SSL જોડાણ બનાવવામાં અસમર્થ."
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "નવું જોડાણ બનાવવામાં અસમર્થ."
+
+msgid "Unable to create socket"
+msgstr "સોકેટ બનાવવામાં અસમર્થ"
+
+msgid "Write error"
+msgstr "લખવામાં ક્ષતિ"
+
msgid "Full Name"
msgstr "પૂરું નામ"
@@ -3821,6 +3937,10 @@ msgstr "શહેર"
msgid "Operating System"
msgstr "ઓપરેટિંગ સિસ્ટમ છુપાવો"
+#, fuzzy
+msgid "Local Time"
+msgstr "સ્થાનિક ફાઈલ:"
+
msgid "Last Activity"
msgstr ""
@@ -4057,7 +4177,6 @@ msgstr "ચેટી"
msgid "Extended Away"
msgstr "વિસ્તૃત દૂર થયેલ"
-#, c-format
msgid "Do Not Disturb"
msgstr "ખલેલ પહોંચાડશો નહિં"
@@ -4183,9 +4302,6 @@ msgstr "કક્ષો શોધો"
msgid "You require encryption, but it is not available on this server."
msgstr ""
-msgid "Write error"
-msgstr "લખવામાં ક્ષતિ"
-
#, fuzzy
msgid "Ping timeout"
msgstr "સાદું લખાણ"
@@ -4195,13 +4311,10 @@ msgstr "વાંચવામાં ક્ષતિ"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-msgid "Unable to create socket"
-msgstr "સોકેટ બનાવવામાં અસમર્થ"
-
#, fuzzy
msgid "Invalid XMPP ID"
msgstr "અયોગ્ય ID"
@@ -4209,6 +4322,10 @@ msgstr "અયોગ્ય ID"
msgid "Invalid XMPP ID. Domain must be set."
msgstr ""
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "સર્વર સાથે જોડાવામાં નિષ્ફળ."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "%s@%s નું રજીસ્ટ્રેશન સફળ"
@@ -4302,9 +4419,18 @@ msgstr "સત્તાધિકરણ કરી રહ્યા છીએ"
msgid "Re-initializing Stream"
msgstr "સ્ટ્રીમ પુનઃ-પ્રારંભ કરી રહ્યા છીએ"
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr "સત્તાધિકારીત નથી"
+msgid "Mood"
+msgstr "સ્વભાવ"
+
+msgid "Now Listening"
+msgstr ""
+
msgid "Both"
msgstr "બંને"
@@ -4326,12 +4452,6 @@ msgstr "કંઇ નહી"
msgid "Subscription"
msgstr "ઉમેદવારી"
-msgid "Mood"
-msgstr "સ્વભાવ"
-
-msgid "Now Listening"
-msgstr ""
-
#, fuzzy
msgid "Mood Text"
msgstr "સ્વભાવ"
@@ -4577,18 +4697,24 @@ msgstr "વપરાશકર્તા %s ને કિક મારવામા
msgid "Unable to ping user %s"
msgstr "વપરાશકર્તા %s ને બેન કરવામાં અસમર્થ"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
+msgstr "ધ્વનિ વગાડવામાં અસમર્થ કારણ કે પસંદિત ફાઈલ (%s) અસ્તિત્વમાં નથી."
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
+msgstr "ધ્વનિ વગાડવામાં અસમર્થ કારણ કે પસંદિત ફાઈલ (%s) અસ્તિત્વમાં નથી."
#, fuzzy, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "ધ્વનિ વગાડવામાં અસમર્થ કારણ કે પસંદિત ફાઈલ (%s) અસ્તિત્વમાં નથી."
+#, c-format
+msgid "Buzzing %s..."
+msgstr ""
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
#, fuzzy
@@ -4599,9 +4725,37 @@ msgstr "જાગો!!"
msgid "%s has buzzed you!"
msgstr "વપરાશકર્તાએ તમને અટકાવેલ છે"
-#, c-format
-msgid "Buzzing %s..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "%s ને સંદેશો મોકલવામાં અસમર્થ."
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "%s ને ફાઈલ મોકલવામાં અસમર્થ, વપરાશકર્તા ફાઈલ પરિવહનોને આધાર આપતું નથી"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr "%s ને ફાઈલ મોકલવામાં અસમર્થ, વપરાશકર્તા ફાઈલ પરિવહનોને આધાર આપતું નથી"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "રજીસ્ટ્રેશન નિષ્ફળ"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
msgstr ""
+"મહેરબાની કરીને વ્યક્તિનું સ્ક્રીન નામ અથવા બીજું નામ દાખલ કરો કે જેની જાણકારી તમે જોવા "
+"માંગો છો."
+
+#, fuzzy
+msgid "Select a Resource"
+msgstr "ફાઈલ પસંદ કરો"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "સંવાદનો પ્રારંભ કરો (_C)"
msgid "config: Configure a chat room."
msgstr "config: સંવાદ કક્ષ રૂપરેખાંકિત કરો."
@@ -4766,6 +4920,21 @@ msgstr "સંવાદ %s માં જોડાવામાં ક્ષતિ
msgid "Error in chat %s"
msgstr "સંવાદ %s માં ક્ષતિ"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "ફાઈલ ખોલતી વખતે ક્ષતિ ઉદ્દભવી."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "ફાઈલ પરિવહન રદ થઈ ગયું"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "ચિત્ર સંગ્રહવામાં નિષ્ફળ: %s\n"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr "%s ને ફાઈલ મોકલવામાં અસમર્થ, વપરાશકર્તા ફાઈલ પરિવહનોને આધાર આપતું નથી"
@@ -4792,10 +4961,6 @@ msgstr ""
"માંગો છો."
#, fuzzy
-msgid "Select a Resource"
-msgstr "ફાઈલ પસંદ કરો"
-
-#, fuzzy
msgid "Edit User Mood"
msgstr "વપરાશકર્તા સ્થિતિઓ"
@@ -4835,9 +5000,20 @@ msgstr "ખાતાઓ"
msgid "Select an action"
msgstr "ફાઈલ પસંદ કરો"
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr "\"%s\" ને ઉમેરવામાં અસમર્થ."
+
#, fuzzy
-msgid "Unable to retrieve MSN Address Book"
-msgstr "વ્યક્તિ યાદી મેળવવામાં અસમર્થ"
+msgid "Buddy Add error"
+msgstr "વ્યક્તિ યાદી ક્ષતિ"
+
+#, fuzzy
+msgid "The username specified does not exist."
+msgstr "સ્પષ્ટ થયેલ સ્ક્રીન નામ અયોગ્ય છે."
#, c-format
msgid "Buddy list synchronization issue in %s (%s)"
@@ -5066,7 +5242,7 @@ msgstr "પિતૃની આડ વિના બાળકો પાસપો
msgid "Passport account not yet verified"
msgstr "પાસપોર્ટ ખાતું હજુ ચકાસાયેલ નથી"
-#, fuzzy, c-format
+#, fuzzy
msgid "Passport account suspended"
msgstr "પાસપોર્ટ ખાતું હજુ ચકાસાયેલ નથી"
@@ -5161,6 +5337,13 @@ msgstr "મોબાઈલ સંદેશો મોકલો."
msgid "Page"
msgstr "પાનું"
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "ચેતવો"
+
msgid "Has you"
msgstr "તમારી પાસે"
@@ -5204,6 +5387,14 @@ msgid "Album"
msgstr ""
#, fuzzy
+msgid "Game Title"
+msgstr "શીર્ષક"
+
+#, fuzzy
+msgid "Office Title"
+msgstr "શીર્ષક"
+
+#, fuzzy
msgid "Set Friendly Name..."
msgstr "મિત્ર નામ સુયોજિત કરો"
@@ -5423,8 +5614,9 @@ msgstr ""
"Pidgin વપરાશકર્તાની રૂપરેખામાં કોઈપણ જાણકારી શોધી શક્યું નહિં. વપરાશકર્તા મોટે ભાગે "
"અસ્તિત્વમાં નહિં હોય."
-msgid "Profile URL"
-msgstr "રૂપરેખા URL"
+#, fuzzy
+msgid "View web profile"
+msgstr "જ્યારે ઓફલાઈન હોય ત્યારે માન્ય નથી"
#. *< type
#. *< ui_requirement
@@ -5680,13 +5872,6 @@ msgstr "સરનામા પુસ્તિકામાં ઉમેરો"
msgid "Do you want to delete this buddy from your address book as well?"
msgstr "શું તમે આ વ્યક્તિને તમારી વ્યક્તિ યાદીમાં ઉમેરવા માંગો છો?"
-#. only notify the user about problems adding to the friends list
-#. * maybe we should do something else for other lists, but it probably
-#. * won't cause too many problems if we just ignore it
-#, c-format
-msgid "Unable to add \"%s\"."
-msgstr "\"%s\" ને ઉમેરવામાં અસમર્થ."
-
#, fuzzy
msgid "The username specified is invalid."
msgstr "સ્પષ્ટ થયેલ સ્ક્રીન નામ અયોગ્ય છે."
@@ -5694,6 +5879,9 @@ msgstr "સ્પષ્ટ થયેલ સ્ક્રીન નામ અય
msgid "This Hotmail account may not be active."
msgstr "આ હોટમેલ ખાતું કદાચ સક્રિય નથી."
+msgid "Profile URL"
+msgstr "રૂપરેખા URL"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5708,16 +5896,13 @@ msgstr "આ હોટમેલ ખાતું કદાચ સક્રિય
msgid "MSN Protocol Plugin"
msgstr "AIM/ICQ પ્રોટોકોલ પ્લગઈન"
-msgid "Missing Cipher"
-msgstr ""
-
-msgid "The RC4 cipher could not be found"
+#, c-format
+msgid "No such user: %s"
msgstr ""
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
-msgstr ""
+#, fuzzy
+msgid "User lookup"
+msgstr "વપરાશકર્તા કક્ષો"
#, fuzzy
msgid "Reading challenge"
@@ -5731,11 +5916,19 @@ msgstr "સર્વરમાંથી અયોગ્ય શરત"
msgid "Logging in"
msgstr "પ્રવેશી રહ્યા છીએ"
-#, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] ""
-msgstr[1] ""
+#, fuzzy
+msgid "MySpaceIM - No Username Set"
+msgstr "કોઈ સ્ક્રીનનામ આપેલ નથી."
+
+msgid "You appear to have no MySpace username."
+msgstr ""
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr ""
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr "સર્વર સાથે જોડાણથયેલ નથી."
#. Can't write _()'d strings in array initializers. Workaround.
#, fuzzy
@@ -5758,14 +5951,22 @@ msgid "MySpace"
msgstr ""
#, fuzzy
-msgid "MySpaceIM - No Username Set"
-msgstr "કોઈ સ્ક્રીનનામ આપેલ નથી."
+msgid "IM Friends"
+msgstr "_IM વિન્ડો"
-msgid "You appear to have no MySpace username."
-msgstr ""
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+msgstr[1] ""
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
-msgstr ""
+#, fuzzy
+msgid "Add contacts from server"
+msgstr "સર્વરમાંથી અયોગ્ય પ્રત્યુત્તર."
#. The session is now set up, ready to be connected. This emits the
#. * signedOn signal, so clients can now do anything with msimprpl, and
@@ -5790,6 +5991,22 @@ msgid "MySpaceIM Error"
msgstr ""
#, fuzzy
+msgid "Invalid input condition"
+msgstr "જોડાણ પરિપૂર્ણ કરી રહ્યા છીએ"
+
+#, fuzzy
+msgid "Read buffer full (2)"
+msgstr "કતાર ભરેલી છે"
+
+#, fuzzy
+msgid "Unparseable message"
+msgstr "સંદેશાનું પદચ્છેદન કરવામાં અસમર્થ"
+
+#, fuzzy, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr "યજમાન સાથે જોડાઈ શક્યા નહિં"
+
+#, fuzzy
msgid "Failed to add buddy"
msgstr "વ્યક્તિને સંવાદમાં જોડવામાં નિષ્ફળ"
@@ -5801,14 +6018,6 @@ msgstr "સર્વરમાંથી વ્યક્તિ યાદી આય
msgid "persist command failed"
msgstr "સ્વીચબોર્ડ નિષ્ફળ"
-#, c-format
-msgid "No such user: %s"
-msgstr ""
-
-#, fuzzy
-msgid "User lookup"
-msgstr "વપરાશકર્તા કક્ષો"
-
#, fuzzy
msgid "Failed to remove buddy"
msgstr "વ્યક્તિને સંવાદમાં જોડવામાં નિષ્ફળ"
@@ -5820,39 +6029,16 @@ msgstr ""
msgid "blocklist command failed"
msgstr "સ્વીચબોર્ડ નિષ્ફળ"
-#, fuzzy
-msgid "Invalid input condition"
-msgstr "જોડાણ પરિપૂર્ણ કરી રહ્યા છીએ"
-
-#, fuzzy
-msgid "Read buffer full (2)"
-msgstr "કતાર ભરેલી છે"
-
-#, fuzzy
-msgid "Unparseable message"
-msgstr "સંદેશાનું પદચ્છેદન કરવામાં અસમર્થ"
-
-#, fuzzy, c-format
-msgid "Couldn't connect to host: %s (%d)"
-msgstr "યજમાન સાથે જોડાઈ શક્યા નહિં"
+msgid "Missing Cipher"
+msgstr ""
-#, fuzzy
-msgid "IM Friends"
-msgstr "_IM વિન્ડો"
+msgid "The RC4 cipher could not be found"
+msgstr ""
-#, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-msgstr[1] ""
-
-#, fuzzy
-msgid "Add contacts from server"
-msgstr "સર્વરમાંથી અયોગ્ય પ્રત્યુત્તર."
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
msgid "Add friends from MySpace.com"
msgstr ""
@@ -5900,9 +6086,6 @@ msgstr "મોટું ફોન્ટ માપ"
msgid "User"
msgstr "વપરાશકર્તાઓ"
-msgid "Profile"
-msgstr "રુપરેખા"
-
#, fuzzy
msgid "Headline"
msgstr "અસ્વીકારો"
@@ -5918,17 +6101,6 @@ msgstr ""
msgid "Client Version"
msgstr "વાર્તાલાપ બંધ કરો"
-#. Protocol won't log in now without a username set.. Disconnect
-#, fuzzy
-msgid "No username set"
-msgstr "કોઈ સ્ક્રીનનામ આપેલ નથી."
-
-msgid "MySpaceIM - Please Set a Username"
-msgstr ""
-
-msgid "Please enter a username to check its availability:"
-msgstr ""
-
#, fuzzy
msgid "MySpaceIM - Username Available"
msgstr "સેવા ઉપલબ્ધ નથી"
@@ -5939,6 +6111,9 @@ msgstr ""
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr ""
+msgid "MySpaceIM - Please Set a Username"
+msgstr ""
+
#, fuzzy
msgid "This username is unavailable."
msgstr "આ થીમ પાસે કોઈ ઉપલબ્ધ હસતા ચહેરાઓ નથી."
@@ -5947,6 +6122,14 @@ msgstr "આ થીમ પાસે કોઈ ઉપલબ્ધ હસતા ચ
msgid "Please try another username:"
msgstr "મહેરબાની કરીને પસંદિત જૂથ માટે નવું નામ દાખલ કરો."
+#. Protocol won't log in now without a username set.. Disconnect
+#, fuzzy
+msgid "No username set"
+msgstr "કોઈ સ્ક્રીનનામ આપેલ નથી."
+
+msgid "Please enter a username to check its availability:"
+msgstr ""
+
#. TODO: icons for each zap
#. Lots of comments for translators:
#. Zap means "to strike suddenly and forcefully as if with a
@@ -6337,7 +6520,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr "ક્ષતિ. SSL આધાર સ્થાપિત થયેલ નથી."
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr "કોન્ફરન્સ બંધ થઈ ગયેલ છે. કોઈ વધુ સંદેશાઓ મોકલી શકાશે નહિં."
@@ -6604,23 +6786,18 @@ msgstr "કેમેરો"
msgid "Screen Sharing"
msgstr "સ્ક્રીન નામ"
-#, c-format
msgid "Free For Chat"
msgstr "સંવાદથી મુક્ત"
-#, c-format
msgid "Not Available"
msgstr "ઉપલબ્ધ નથી"
-#, c-format
msgid "Occupied"
msgstr "ફાળવેલ"
-#, c-format
msgid "Web Aware"
msgstr "વેબ પરિચિત"
-#, c-format
msgid "Invisible"
msgstr "અદૃશ્ય"
@@ -6666,7 +6843,7 @@ msgstr ""
"સ્ક્રીન નામો ક્યાં તો અક્ષરથી જ શરૂ થવા જોઈએ અને માત્ર અક્ષરો, નંબરો અને જગ્યાઓ, અથવા "
"માત્ર નંબરો જ સમાવતા હોવા જોઈએ."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
#, fuzzy
msgid "Invalid username."
@@ -6683,7 +6860,7 @@ msgstr "તમારું ખાતું વર્તમાનમાં અટ
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "AOL તુરંત સંદેશાવાહક સેવા ક્ષણવાર માટે ઉપલબ્ધ નથી."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6718,10 +6895,8 @@ msgstr "ડિજીટલ ડિસ્પ્લેમાંથી ૬ ડિજ
msgid "_OK"
msgstr "બરાબર"
-#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
+#, fuzzy, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
msgstr ""
"તમે ટુંકમાં જ જોડાણ છોજી દેશો. તમે TOC વાપરવાની ઈચ્છા રાખશો જ્યાં સુધી આ ચોક્કસ નહિં થઈ "
"જાય. સુધારાઓ માટે %s ને ચકાસો."
@@ -6873,7 +7048,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] "તમે %hu સંદેશો %s માંથી ચૂકી ગયેલ છો કોઈ અજ્ઞાત કારણોસર."
msgstr[1] "તમે %hu સંદેશાઓ %s માંથી ચૂકી ગયેલ છો કોઈ અજ્ઞાત કારણોસર."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "સંદેશો મોકલવામાં અસમર્થ: %s"
@@ -6895,6 +7070,9 @@ msgstr "ત્યારથી ઓનલાઈન"
msgid "Member Since"
msgstr "ત્યારથી સભ્ય"
+msgid "Profile"
+msgstr "રુપરેખા"
+
msgid "Your AIM connection may be lost."
msgstr "તમારું AIM જોડાણ ખોવાઈ જશે."
@@ -7091,8 +7269,8 @@ msgid ""
"The AIM servers were temporarily unable to send your buddy list. Your buddy "
"list is not lost, and will probably become available in a few minutes."
msgstr ""
-"Pidgin એ AIM સર્વરોમાંથી વ્યક્તિ યાદી મેળવવામાં થોડી વાર માટે અસમર્થ હતું. તમારી વ્યક્તિ "
-"યાદી એ ખોવાયેલ નથી, અને કદાચ થોડા કલાકોમાં ઉપલબ્ધ હશે."
+"Pidgin એ AIM સર્વરોમાંથી વ્યક્તિ યાદી મેળવવામાં થોડી વાર માટે અસમર્થ હતું. તમારી "
+"વ્યક્તિ યાદી એ ખોવાયેલ નથી, અને કદાચ થોડા કલાકોમાં ઉપલબ્ધ હશે."
msgid "Orphans"
msgstr "ઓરફાન"
@@ -7181,6 +7359,7 @@ msgstr "સાંકળો"
msgid "Get AIM Info"
msgstr "જાણ મેળવો"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "વ્યક્તિ ટિપ્પણીમાં ફેરફાર કરો"
@@ -7294,7 +7473,7 @@ msgstr "%s ને અમારી સાથે %s આગળ જોડાવા
msgid "Attempting to connect to %s:%hu."
msgstr "%s સાથે %s આગળ જોડાવાનું કરી રહ્યા છીએ:%hu એ સીધા IM માટે."
-#, fuzzy, c-format
+#, fuzzy
msgid "Attempting to connect via proxy server."
msgstr "જોડાણ પુનઃદિશામાન કરી રહ્યા છીએ..."
@@ -7403,7 +7582,7 @@ msgstr "ઓપેરા"
msgid "Visible"
msgstr "અદૃશ્ય"
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
#, fuzzy
@@ -7499,17 +7678,51 @@ msgstr "છેલ્લો સુધારો"
msgid "Could not change buddy information."
msgstr "મહેરબાની કરીને વ્યક્તિ દાખલ કરો."
-#, c-format
-msgid "%d needs Q&A"
+#, fuzzy
+msgid "Mobile"
+msgstr "મોબાઈલ ફોન"
+
+msgid "Note"
+msgstr "નોંધ"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "વ્યક્તિ ચિહ્ન"
+
+msgid "Change his/her memo as you like"
msgstr ""
#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "વ્યક્તિ ઉમેરો"
+msgid "_Modify"
+msgstr "સુધારો (_M)"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "સુધારો (_M)"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "સર્વર વ્યસ્ત છે"
-msgid "Input answer here"
+msgid "Your request was accepted."
msgstr ""
+msgid "Your request was rejected."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%u requires verification"
+msgstr "સત્તાધિકરણ જરૂરી"
+
+#, fuzzy
+msgid "Add buddy question"
+msgstr "શું તમારી યાદીમાં વ્યક્તિ ઉમેરવો છે?"
+
+#, fuzzy
+msgid "Enter answer here"
+msgstr "વપરાશકર્તા ડિરેક્ટરી દાખલ કરો."
+
msgid "Send"
msgstr "મોકલો"
@@ -7521,19 +7734,20 @@ msgstr "અયોગ્ય પાસવર્ડ"
msgid "Authorization denied message:"
msgstr "સત્તાધિકરણ નામંજૂરી સંદેશો:"
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr ""
#, fuzzy, c-format
-msgid "%d needs authentication"
+msgid "%u needs authorization"
msgstr "સત્તાધિકરણ શરૂ કરી રહ્યા છીએ"
#, fuzzy
msgid "Add buddy authorize"
msgstr "શું તમારી યાદીમાં વ્યક્તિ ઉમેરવો છે?"
-msgid "Input request here"
-msgstr ""
+#, fuzzy
+msgid "Enter request here"
+msgstr "કોન્ફરન્સ સર્વર દાખલ કરો"
#, fuzzy
msgid "Would you be my friend?"
@@ -7556,7 +7770,7 @@ msgid "Failed sending authorize"
msgstr "મહેરબાની કરીને મને સત્તાધિકારીત કરો!"
#, fuzzy, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr "વ્યક્તિને સંવાદમાં જોડવામાં નિષ્ફળ"
#, fuzzy, c-format
@@ -7602,6 +7816,10 @@ msgid "You can only search for permanent Qun\n"
msgstr ""
#, fuzzy
+msgid "(Invalid UTF-8 string)"
+msgstr "અયોગ્ય પ્રોક્સી સુયોજનો"
+
+#, fuzzy
msgid "Not member"
msgstr "ત્યારથી સભ્ય"
@@ -7646,15 +7864,18 @@ msgstr ""
msgid "Join QQ Qun"
msgstr "સંવાદમાં જોડાવ"
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
+msgid "Input request here"
msgstr ""
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "ટેલિફોન નંબર"
+
msgid "Successfully joined Qun"
msgstr ""
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
#, fuzzy
@@ -7665,7 +7886,7 @@ msgstr "ધ્વનિ વિકલ્પો"
msgid "Failed:"
msgstr "નિષ્ફળ"
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
#, fuzzy
@@ -7677,11 +7898,12 @@ msgid ""
"this operation will eventually remove this Qun."
msgstr ""
-msgid "Sorry, you are not our style ..."
-msgstr ""
+#, fuzzy
+msgid "Sorry, you are not our style"
+msgstr "માફ કરજો, હું થોડા સમય માટે ચાલી ગયો હતો!"
#, fuzzy
-msgid "Successfully changed Qun member"
+msgid "Successfully changed Qun members"
msgstr "ટેલિફોન નંબર"
#, fuzzy
@@ -7692,7 +7914,7 @@ msgid "You have successfully created a Qun"
msgstr ""
#, fuzzy
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr "શું તમે આ વપરાશકર્તા માટે વ્યક્તિ ચિહ્ન ગોઠવવા માંગો છો?"
#, fuzzy
@@ -7700,28 +7922,28 @@ msgid "Setup"
msgstr "સુયોજિત કરો (_S)"
#, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr ""
#, c-format
-msgid "%d request to join Qun %d"
+msgid "%u request to join Qun %u"
msgstr ""
#, fuzzy, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr "વ્યક્તિને સંવાદમાં જોડવામાં નિષ્ફળ"
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr "વ્યક્તિ દૂર કરો"
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "વ્યક્તિ દૂર કરો"
#, fuzzy, c-format
msgid "Unknown-%d"
@@ -7841,6 +8063,13 @@ msgstr "<b>વપરાશકર્તા:</b> %s<br>"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<b>ઉપનામ:</b> %s<br>"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<b>વપરાશકર્તા:</b> %s<br>"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7848,7 +8077,7 @@ msgid "<i>Feel free to join us!</i> :)"
msgstr ""
#, fuzzy, c-format
-msgid "About OpenQ r%s"
+msgid "About OpenQ %s"
msgstr "Pidgin વિશે"
#, fuzzy
@@ -7869,6 +8098,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "Pidgin વિશે"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "ઘરનું સરનામું"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7900,7 +8133,6 @@ msgstr ""
msgid "QQ2008"
msgstr ""
-#. #endif
#, fuzzy
msgid "Connect by TCP"
msgstr "જોડાઈ રહ્યા છીએ"
@@ -7913,6 +8145,9 @@ msgstr "થોડા વિકલ્પો બતાવો"
msgid "Show server news"
msgstr "થોડા વિકલ્પો બતાવો"
+msgid "Show chat room when msg comes"
+msgstr ""
+
#, fuzzy
msgid "Keep alive interval (seconds)"
msgstr "વાંચવામાં ક્ષતિ"
@@ -7922,11 +8157,7 @@ msgid "Update interval (seconds)"
msgstr "વાંચવામાં ક્ષતિ"
#, fuzzy
-msgid "Can not decrypt server reply"
-msgstr "સર્વર જાણકારી મેળવી શકતા નથી"
-
-#, fuzzy
-msgid "Can not decrypt get server reply"
+msgid "Cannot decrypt server reply"
msgstr "સર્વર જાણકારી મેળવી શકતા નથી"
#, c-format
@@ -7949,21 +8180,23 @@ msgid "Activation required"
msgstr "રજીસ્ટ્રેશન જરૂરી છે"
#, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr ""
#, fuzzy
-msgid "Keep alive error"
-msgstr "વાંચવામાં ક્ષતિ"
+msgid "Could not decrypt server reply"
+msgstr "સર્વર જાણકારી મેળવી શકતા નથી"
-msgid "Requesting captcha ..."
-msgstr ""
+#, fuzzy
+msgid "Requesting captcha"
+msgstr "વિનંતી સંવાદ"
-msgid "Checking code of captcha ..."
+msgid "Checking captcha"
msgstr ""
-msgid "Failed captcha verify"
-msgstr ""
+#, fuzzy
+msgid "Failed captcha verification"
+msgstr "Yahoo નિષ્ફળ! સત્તાધિકરણ"
#, fuzzy
msgid "Captcha Image"
@@ -7973,7 +8206,7 @@ msgstr "ચિત્ર સંગ્રહો"
msgid "Enter code"
msgstr "પાસવર્ડ દાખલ કરો"
-msgid "QQ Captcha Verifing"
+msgid "QQ Captcha Verification"
msgstr ""
#, fuzzy
@@ -7981,16 +8214,15 @@ msgid "Enter the text from the image"
msgstr "મહેરબાની કરીને ઉમેરવા માટેના જૂથનું નામ દાખલ કરો."
#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
+msgid "Unknown reply when checking password (0x%02X)"
msgstr ""
#, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
msgstr ""
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "જોડાવામાં અસમર્થ."
@@ -7998,12 +8230,6 @@ msgstr "જોડાવામાં અસમર્થ."
msgid "Socket error"
msgstr "ટોકન ક્ષતિ"
-#, fuzzy, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr "સર્વર સાથે જોડાણથયેલ નથી."
-
#, fuzzy
msgid "Unable to read from socket"
msgstr "સોકેટ વાંચવામાં અસમર્થ"
@@ -8017,11 +8243,11 @@ msgid "Connection lost"
msgstr "જોડાણ બંધ થઈ ગયું"
#, fuzzy
-msgid "Get server ..."
+msgid "Getting server"
msgstr "વપરાશકર્તા જાણ સુયોજિત કરો..."
#, fuzzy
-msgid "Request token"
+msgid "Requesting token"
msgstr "માંગણી રદ થઈ ગયેલ"
#, fuzzy
@@ -8033,17 +8259,13 @@ msgid "Invalid server or port"
msgstr "અયોગ્ય વપરાશકર્તા નામ અથવા પાસવર્ડ"
#, fuzzy
-msgid "Connecting server ..."
-msgstr "સર્વર જોડો"
+msgid "Connecting to server"
+msgstr "SILC સર્વર સાથે જોડાઈ રહ્યા છીએ"
#, fuzzy
msgid "QQ Error"
msgstr "વાંચવામાં ક્ષતિ"
-#, fuzzy
-msgid "Failed to send IM."
-msgstr "સંવાદમાં જોડાવામાં નિષ્ફળ"
-
#, fuzzy, c-format
msgid ""
"Server News:\n"
@@ -8053,6 +8275,10 @@ msgid ""
msgstr "ICQ સર્વર રીલે"
#, fuzzy, c-format
+msgid "%s:%s"
+msgstr "%s એ %s (%s) પર"
+
+#, fuzzy, c-format
msgid "From %s:"
msgstr "તરફથી"
@@ -8062,32 +8288,30 @@ msgid ""
"%s"
msgstr "સર્વર જાણકારી"
-msgid "Unknow SERVER CMD"
-msgstr ""
+#, fuzzy
+msgid "Unknown SERVER CMD"
+msgstr "અજ્ઞાત કારણ."
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
#, fuzzy
msgid "QQ Qun Command"
msgstr "આદેશ"
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr ""
-
-msgid "Can not decrypt login reply"
-msgstr ""
+#, fuzzy
+msgid "Could not decrypt login reply"
+msgstr "સર્વર જાણકારી મેળવી શકતા નથી"
#, fuzzy
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr "અજ્ઞાત કારણ."
#, fuzzy
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr "અજ્ઞાત કારણ."
#, fuzzy, c-format
@@ -8932,9 +9156,6 @@ msgstr "સંસ્થા"
msgid "Unit"
msgstr "એકમ"
-msgid "Note"
-msgstr "નોંધ"
-
msgid "Join Chat"
msgstr "સંવાદમાં જોડાવ"
@@ -9607,6 +9828,10 @@ msgstr "યજમાનનામો ઉકેલવામાં અસમર્
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr "SIP વપરાશકર્તાનામ ખાલી જગ્યાઓ અથવા @ ચિહ્નો ધરાવી શકે નહિં"
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "થોડા વિકલ્પો બતાવો"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -9645,191 +9870,10 @@ msgid "Auth Domain"
msgstr "આપમેળે"
#, c-format
-msgid "Looking up %s"
-msgstr "%s જોઈ રહ્યા છીએ"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "%s સાથે જોડાવામાં નિષ્ફળ"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "પ્રવેશ કરો: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "ફાઈલ %s લખવામાં અસમર્થ."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "ફાઈલ %s વાંચવામાં અસમર્થ."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "સંદેશો ખૂબ લાંબો છે, છેલ્લા %s બાઈટો બગડી ગયેલ છે."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s વર્તમાનમાં પ્રવેશેલ નથી."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "%s ની ચેતવણી માન્ય નથી."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "સંદેશો છોડી મૂકાયેલ છે, તમે સર્વર ઝડપ મર્યાદા ઓળંગી ગયા છે."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "%s માં સંવાદ ઉપલબ્ધ નથી."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "તમે સંદેશાઓ ખૂબ ઝડપથી %s ને મોકલી રહ્યા છો."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "તમે IM ને %s માંથી રહી ગયા કારણ કે તે ખૂબ મોટું હતું."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "તમે IM ને %s માંથી મેળવવામાં રહી ગયા કારણ કે તે ખૂબ ઝડપથી મોકલાયું હતું."
-
-#, c-format
-msgid "Failure."
-msgstr "નિષ્ફળતા."
-
-#, c-format
-msgid "Too many matches."
-msgstr "ઘણી બધી જોડણીઓ."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "વધુ ચકાસણીઓની જરૂર છે."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "ડિરેક્ટરી સેવા કામચલાઉ રીતે ઉપલબ્ધ નથી."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "ઈ-મેઈલ જોવાનું પ્રતિબંધિત છે."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "મુખ્ય શબ્દ અવગણાયેલ છે."
-
-#, c-format
-msgid "No keywords."
-msgstr "કોઈ મુખ્ય શબ્દો નથી."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "વપરાશકર્તા પાસે કોઈ ડિરેક્ટરી જાણકારી નથી."
-
-#, c-format
-msgid "Country not supported."
-msgstr "દેશ આધારભૂત નથી."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "નિષ્ફળતા અજ્ઞાત: %s."
-
-#, fuzzy, c-format
-msgid "Incorrect username or password."
-msgstr "અયોગ્ય નામ અથવા પાસવર્ડ."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "સેવા ક્ષણવાર માટે ઉપલબ્ધ નથી."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "તમારું ચેતવણી સ્તર વર્તમાનમાં પ્રવેશ માટે ખૂબ ઊંચું છે."
-
-#, c-format
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
+msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
-"તમે ખૂબ ઝડપથી જોડાણ કરી રહ્યા છો અને તોડી રહ્યા છો. દસ મિનિટો રાહ જુઓ અને ફરીથી "
-"પ્રયત્ન કરો. જો તમે પ્રયાસ કરવાનું ચાલુ રાખો, તો તમારે વધુ લાંબા સમય સુધી રાહ જોવી પડશે."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "એક અજ્ઞાત પ્રવેશ ક્ષતિ ઉદ્દભવી: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "એક અજ્ઞાત ક્ષતિ, %d, ઉદ્દભવી. જાણકારી: %s"
-
-msgid "Invalid Groupname"
-msgstr "અયોગ્ય જૂથનામ"
-
-msgid "Connection Closed"
-msgstr "જોડાણ બંધ થઈ ગયું"
-
-msgid "Waiting for reply..."
-msgstr "પ્રત્યુત્તર માટે રાહ જોઈ રહ્યા છીએ..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "TOC એ તેની અટકાવો સ્થિતિમાંથી પાછું આવી ગયું છે. તમે હવે ફરીથી સંદેશાઓ મોકલી શકશો."
-
-msgid "Password Change Successful"
-msgstr "પાસવર્ડ સફળતાપૂર્વક બદલાઈ ગયો"
-
-msgid "_Group:"
-msgstr "જૂથ (_G):"
-
-msgid "Get Dir Info"
-msgstr "ડિરેક્ટરી જાણ મેળવો"
-
-msgid "Set Dir Info"
-msgstr "ડિરેક્ટરી જાણકારી સુયોજિત કરો"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "%s ને લખવા માટે ખોલી શક્યા નહિં!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "ફાઈલ પરિવહન નિષ્ફળ; અન્ય બાજુ કદાચ રદ થઈ ગયેલ હશે."
-
-msgid "Could not connect for transfer."
-msgstr "પરિવહન માટે જોડાઈ શક્યા નહિં."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "ફાઈલ હેડરમાં લખી શક્યા નહિં. ફાઈલ પરિવહન થશે નહિં."
-
-#, fuzzy
-msgid "Save As..."
-msgstr "ચિહ્ન આ રીતે સંગ્રહો..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s એ %s ને %d ફાઈલ સ્વીકારવા માટે અરજી કરે છે: %s (%.2f %s)%s%s"
-msgstr[1] "%s એ %s ને %d ફાઈલો સ્વીકારવા માટે અરજી કરે છે: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s તમને તેમને ફાઈલ મોકલવા માટે અરજી કરે છે"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "TOC પ્રોટોકોલ પ્લગઈન"
-#, c-format
-msgid "%s has sent you a webcam invite, which is not yet supported."
+msgid "Your SMS was not delivered"
msgstr ""
msgid "Your Yahoo! message did not get sent."
@@ -9859,8 +9903,8 @@ msgid ""
"method. You will probably not be able to successfully sign on to Yahoo. "
"Check %s for updates."
msgstr ""
-"Yahoo સર્વરે નહિં ઓળખાયેલ સત્તાધિકરણ પદ્ધતિનો વપરાશ નામંજૂર કર્યો છે. Pidgin ની આ આવૃત્તિ "
-"Yahoo પર સફળતાપૂર્વક પ્રવેશ કરવામાં સમર્થ હશે નહિં. સુધારાઓ માટે %s ચકાસો."
+"Yahoo સર્વરે નહિં ઓળખાયેલ સત્તાધિકરણ પદ્ધતિનો વપરાશ નામંજૂર કર્યો છે. Pidgin ની આ "
+"આવૃત્તિ Yahoo પર સફળતાપૂર્વક પ્રવેશ કરવામાં સમર્થ હશે નહિં. સુધારાઓ માટે %s ચકાસો."
msgid "Failed Yahoo! Authentication"
msgstr "Yahoo નિષ્ફળ! સત્તાધિકરણ"
@@ -10108,14 +10152,9 @@ msgstr "સારી કડી ૩"
msgid "Last Update"
msgstr "છેલ્લો સુધારો"
-#, c-format
-msgid "User information for %s unavailable"
-msgstr "%s માટે વપરાશકર્તા જાણકારી ઉપલબ્ધ નથી"
-
#, fuzzy
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr "માફ કરજો, આ રૂપરેખા કોઈ એક ભાષામાં લાગે છે કે જે આ સમયે આધારભૂત નથી."
msgid ""
@@ -10450,10 +10489,6 @@ msgstr "ખલેલ પહોંચાડશો નહિં"
msgid "Extended away"
msgstr "વિસ્તૃત દૂર થયેલ"
-#, fuzzy
-msgid "Mobile"
-msgstr "મોબાઈલ ફોન"
-
msgid "Listening to music"
msgstr ""
@@ -10495,18 +10530,6 @@ msgstr "%s બિનનિષ્ક્રિય બની ગયો"
msgid "%x %X"
msgstr ""
-#, c-format
-msgid "Error Reading %s"
-msgstr "%s વાંચવામાં ક્ષતિ"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"તમારૂ %s વાંચવામાં ક્ષતિ ઉદ્દભવી હતી. તે હજુ લોડ થયેલ નથી, અને જૂની ફાઈલને %s તરીકે "
-"નામ આપવામાં આવ્યું છે."
-
msgid "Calculating..."
msgstr "ગણી રહ્યા છીએ..."
@@ -10585,6 +10608,12 @@ msgstr ""
msgid "Unable to connect to %s: %s"
msgstr "સર્વર સાથે જોડાવામાં અસમર્થ."
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr "પ્રવેશ માટે સર્વરને TLS/SSL જરૂરી છે. કોઈ TLS/SSL આધાર મળ્યો નહિં."
+
#, c-format
msgid " - %s"
msgstr ""
@@ -10618,6 +10647,18 @@ msgstr "જોડાણ બંધ થઈ ગયું"
msgid "Address already in use."
msgstr "આ સંવાદ નામ પહેલાથી જ ઉપયોગમાં છે"
+#, c-format
+msgid "Error Reading %s"
+msgstr "%s વાંચવામાં ક્ષતિ"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"તમારૂ %s વાંચવામાં ક્ષતિ ઉદ્દભવી હતી. તે હજુ લોડ થયેલ નથી, અને જૂની ફાઈલને %s તરીકે "
+"નામ આપવામાં આવ્યું છે."
+
#, fuzzy
msgid "Internet Messenger"
msgstr "તુરંત સંદેશા મોકલનારાઓ"
@@ -10666,10 +10707,9 @@ msgstr "નવા મેઈલ સૂચનો"
msgid "Use this buddy _icon for this account:"
msgstr ""
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s વિકલ્પો"
+#, fuzzy
+msgid "_Advanced"
+msgstr "નકારો (_C)"
#, fuzzy
msgid "Use GNOME Proxy Settings"
@@ -10705,9 +10745,6 @@ msgstr "જો તમે વાસ્તવમાં નજીકથી જુ
msgid "you can see the butterflies mating"
msgstr "તમે પતંગિયાઓ જોઈ શકો છો"
-msgid "Proxy Options"
-msgstr "પ્રોક્સી વિકલ્પો"
-
msgid "Proxy _type:"
msgstr "પ્રોક્સી પ્રકાર (_t):"
@@ -10738,8 +10775,8 @@ msgid "Create _this new account on the server"
msgstr ""
#, fuzzy
-msgid "_Advanced"
-msgstr "નકારો (_C)"
+msgid "_Proxy"
+msgstr "પ્રોક્સી"
msgid "Enabled"
msgstr "સક્રિય"
@@ -10806,6 +10843,17 @@ msgid "I_M"
msgstr "I_M"
#, fuzzy
+msgid "_Audio Call"
+msgstr "સંવાદ ઉમેરો"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "વીડિયો સંવાદ"
+
+#, fuzzy
msgid "_Send File..."
msgstr "ફાઈલ મોકલો (_S)"
@@ -10960,6 +11008,10 @@ msgstr "/સાધનો/વ્યક્તિ (_P)"
msgid "/Tools/_Certificates"
msgstr "/સાધનો/પસંદગીઓ (_e)"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/સાધનો/દૂર (_A)"
+
msgid "/Tools/Plu_gins"
msgstr "/સાધનો/પ્લગઈન (_g)"
@@ -10969,10 +11021,6 @@ msgstr "/સાધનો/પસંદગીઓ (_e)"
msgid "/Tools/Pr_ivacy"
msgstr "/સાધનો/ખાનગીપણું (_i)"
-#, fuzzy
-msgid "/Tools/Smile_y"
-msgstr "/સાધનો/દૂર (_A)"
-
msgid "/Tools/_File Transfers"
msgstr "/સાધનો/ફાઈલ પરિવહનો (_F)"
@@ -11098,8 +11146,8 @@ msgstr "જાતે"
msgid "By status"
msgstr "સ્થિતિ પ્રમાણે"
-msgid "By log size"
-msgstr "લૉગ માપ પ્રમાણે"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -11117,6 +11165,9 @@ msgstr "પુનઃ જોડાવ (_R)"
msgid "Re-enable"
msgstr "નવું Jabber ખાતું રજીસ્ટર કરો"
+msgid "SSL FAQs"
+msgstr ""
+
#, fuzzy
msgid "Welcome back!"
msgstr "%s પાછો આવ્યો"
@@ -11214,6 +11265,9 @@ msgstr ""
msgid "A_lias:"
msgstr "ઉપનામ:"
+msgid "_Group:"
+msgstr "જૂથ (_G):"
+
msgid "Auto_join when account becomes online."
msgstr ""
@@ -11269,14 +11323,6 @@ msgstr "તમે વર્તમાનમાં જે ખાતા સાથ
msgid "Invite Buddy Into Chat Room"
msgstr "વ્યક્તિને સંવાદ કક્ષમાં આમંત્રિત કરો"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"મહેરબાની કરીને તમે જે વપરાશકર્તાને આમંત્રિત કરવા માંગો તેનું નામ, વૈકલ્પિક આમંત્રણ સંદેશા સાથે "
-"દાખલ કરો."
-
msgid "_Buddy:"
msgstr "વ્યક્તિ (_B):"
@@ -11355,6 +11401,22 @@ msgstr "/વાર્તાલાપ/આ રીતે સંગ્રહો (_S)
msgid "/Conversation/Clea_r Scrollback"
msgstr "/વાર્તાલાપ/સાફ કરો"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/વાર્તાલાપ/બંધ કરો (_C)"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/વાર્તાલાપ/બંધ કરો (_C)"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/વાર્તાલાપ/બંધ કરો (_C)"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/વાર્તાલાપ/લૉગ જુઓ (_L)"
+
msgid "/Conversation/Se_nd File..."
msgstr "/વાર્તાલાપ/ફાઈલ મોકલો (_n)..."
@@ -11432,6 +11494,18 @@ msgstr "/વાર્તાલાપ (_C)"
msgid "/Conversation/View Log"
msgstr "/વાર્તાલાપ/લૉગ જુઓ"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/વાર્તાલાપ/બંધ કરો (_C)"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/વાર્તાલાપ/લૉગ જુઓ"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/વાર્તાલાપ/બંધ કરો (_C)"
+
msgid "/Conversation/Send File..."
msgstr "/વાર્તાલાપ/ફાઈલ મોકલો..."
@@ -11625,6 +11699,9 @@ msgstr "સરનામું"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "આધાર"
@@ -11773,6 +11850,10 @@ msgid "Ubuntu Georgian Translators"
msgstr "વર્તમાન અનુવાદકો"
#, fuzzy
+msgid "Khmer"
+msgstr "ઓપેરા"
+
+#, fuzzy
msgid "Kannada"
msgstr "બેન થયેલ"
@@ -11796,6 +11877,10 @@ msgid "Macedonian"
msgstr "મેકડોનિયન"
#, fuzzy
+msgid "Mongolian"
+msgstr "મેકડોનિયન"
+
+#, fuzzy
msgid "Bokmål Norwegian"
msgstr "નોર્વેઈન"
@@ -11903,8 +11988,25 @@ msgid ""
"<BR><BR>"
msgstr ""
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
#, fuzzy, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"4\">IRC:</FONT> #Pidgin on irc.freenode.net<BR><BR>"
+
+#, fuzzy, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"4\">IRC:</FONT> #Pidgin on irc.freenode.net<BR><BR>"
#, fuzzy
@@ -12239,15 +12341,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr "નવા મેઈલ સૂચનો"
-msgid "_Copy Email Address"
-msgstr "ઈ-મેઈલ સરનામાની નકલ કરો (_C)"
-
-msgid "_Open Link in Browser"
-msgstr "કડી બ્રાઉઝરમાં ખોલો (_O)"
-
-msgid "_Copy Link Location"
-msgstr "કડી સ્થાનની નકલ કરો (_C)"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12520,6 +12613,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12548,6 +12642,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12590,16 +12685,27 @@ msgstr ""
msgid "Pidgin"
msgstr "પેજીંગ"
-#, fuzzy
-msgid "Open All Messages"
-msgstr "સંદેશો મોકલો"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
+
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
#, fuzzy
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgid "Calling..."
+msgstr "ગણી રહ્યા છીએ..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
msgstr ""
-"<span weight=\"bold\" size=\"larger\">તમારી પાસે મેઈલ છે!</span>\n"
-"\n"
-"%s"
#, c-format
msgid "%s has %d new message."
@@ -12628,6 +12734,35 @@ msgid ""
"The 'Manual' browser command has been chosen, but no command has been set."
msgstr "'Manual' બ્રાઉઝર આદેશ પસંદ થયેલ છે, પરંતુ કોઈ આદેશ સુયોજિત થયેલ નથી."
+#, fuzzy
+msgid "Open All Messages"
+msgstr "સંદેશો મોકલો"
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr ""
+"<span weight=\"bold\" size=\"larger\">તમારી પાસે મેઈલ છે!</span>\n"
+"\n"
+"%s"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "નવી વ્યક્તિની જાણકારી"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr ""
+"<span weight=\"bold\" size=\"larger\">તમારી પાસે મેઈલ છે!</span>\n"
+"\n"
+"%s"
+
+#, fuzzy
+msgid "No message"
+msgstr "(૧ સંદેશો)"
+
msgid "The following plugins will be unloaded."
msgstr ""
@@ -12681,6 +12816,10 @@ msgstr ""
msgid "Select a file"
msgstr "ફાઈલ પસંદ કરો"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "વ્યક્તિમાં ફેરફાર કરો"
+
#. Create the "Pounce on Whom" frame.
#, fuzzy
msgid "Pounce on Whom"
@@ -12766,6 +12905,50 @@ msgstr ""
msgid "Pounce Target"
msgstr "પાઉન્સ જ્યારે"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "વ્યક્તિ લખવાનું શરુ કરે છે (_t)"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "વપરાશકર્તા એ લખી રહ્યું છે..."
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "પ્રવેશ કરો (_g)"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "નિષ્ક્રિયમાંથી પાછા આવો (_n)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "દૂરથી પાછા આવો (_R)"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "ટાઇપિંગ"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "પ્રવેશ બહાર નીકળો (_o)"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "%s નિષ્ક્રિય બની ગયો"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "જ્યારે દૂર જાવ"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "સંદેશો મોકલો (_m)"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "અજ્ઞાત પાઉન્સ ઘટના. મહેરબાની કરીને આનો અહેવાલ આપો!"
+
msgid "Smiley theme failed to unpack."
msgstr ""
@@ -12790,6 +12973,12 @@ msgstr "ટુંકાણો"
msgid "Cl_ose conversations with the Escape key"
msgstr "%s સાથે વાર્તાલાપ"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "વ્યક્તિ યાદી"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "સિસ્ટમ ટ્રે ચિહ્ન"
@@ -12911,10 +13100,6 @@ msgstr ""
msgid "Cannot start browser configuration program."
msgstr "વપરાશકર્તા જાણકારી મેળવી શકતા નથી"
-#, fuzzy
-msgid "ST_UN server:"
-msgstr "STUN સર્વર :"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr ""
@@ -12942,6 +13127,10 @@ msgstr "શરૂઆતનો પોર્ટ (_S):"
msgid "_End port:"
msgstr "અંતિમ પોર્ટ (_E):"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
#, fuzzy
msgid "Proxy Server &amp; Browser"
msgstr "પ્રોક્સી સર્વર"
@@ -12971,6 +13160,10 @@ msgstr "પ્રોક્સી સર્વર"
msgid "No proxy"
msgstr "કોઈ પ્રોક્સી નથી"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "વપરાશકર્તા (_U):"
@@ -13136,13 +13329,13 @@ msgstr "જ્યારે દૂર જાવ અને નિષ્ક્ર
msgid "Auto-away"
msgstr "આપોઆપ-દૂર"
-msgid "Change status when _idle"
-msgstr "જ્યારે નિષ્ક્રિય હોય ત્યારે દૂર સુયોજિત કરો (_i)"
-
#, fuzzy
msgid "_Minutes before becoming idle:"
msgstr "સુયોજિત કરવા પહેલાંની મિનિટો (_M):"
+msgid "Change status when _idle"
+msgstr "જ્યારે નિષ્ક્રિય હોય ત્યારે દૂર સુયોજિત કરો (_i)"
+
msgid "Change _status to:"
msgstr "સ્થિતિને આમાં બદલો (_s):"
@@ -13299,6 +13492,12 @@ msgstr "સંગ્રહો & વાપરો (_v)"
msgid "Status for %s"
msgstr "સ્થિતિ: %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
#, fuzzy
msgid "Custom Smiley"
msgstr "સ્મિત ઉમેરો"
@@ -13309,15 +13508,15 @@ msgstr ""
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
+msgstr ""
+
#, fuzzy
msgid "Duplicate Shortcut"
msgstr "નકલી ખરૂ"
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
-msgstr ""
-
#, fuzzy
msgid "Please select an image for the smiley."
msgstr "મહેરબાની કરીને પસંદિત જૂથ માટે નવું નામ દાખલ કરો."
@@ -13331,18 +13530,22 @@ msgid "Add Smiley"
msgstr "હસો!"
#, fuzzy
-msgid "Smiley _Image"
+msgid "_Image:"
msgstr "ચિત્ર સંગ્રહો"
-#. Smiley shortcut
+#. Shortcut text
#, fuzzy
-msgid "Smiley S_hortcut"
+msgid "S_hortcut text:"
msgstr "ટુંકાણો"
#, fuzzy
msgid "Smiley"
msgstr "હસો!"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "ટુંકાણો"
+
msgid "Custom Smiley Manager"
msgstr ""
@@ -13472,6 +13675,16 @@ msgid ""
msgstr ""
#, fuzzy
+msgid "_Open Link"
+msgstr "કડી આમાં ખોલો (_O):"
+
+msgid "_Copy Link Location"
+msgstr "કડી સ્થાનની નકલ કરો (_C)"
+
+msgid "_Copy Email Address"
+msgstr "ઈ-મેઈલ સરનામાની નકલ કરો (_C)"
+
+#, fuzzy
msgid "Save File"
msgstr "ફાઈલ સંગ્રહો..."
@@ -14476,10 +14689,6 @@ msgid "Only when docked"
msgstr "ફક્ત જ્યારે નીચું હોય"
#, fuzzy
-msgid "_Flash window when chat messages are received"
-msgstr "જ્યારે સંદેશાઓ મેળવાય ત્યારે વિન્ડો ફ્લેશ કરો (_F)"
-
-#, fuzzy
msgid "Windows Pidgin Options"
msgstr "પ્રવેશ વિકલ્પો"
@@ -14534,6 +14743,230 @@ msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr ""
#, fuzzy
+#~ msgid "Invite message"
+#~ msgstr "બહાર નીકળવાનો સંદેશો"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "મહેરબાની કરીને તમે જે વપરાશકર્તાને આમંત્રિત કરવા માંગો તેનું નામ, વૈકલ્પિક આમંત્રણ સંદેશા "
+#~ "સાથે દાખલ કરો."
+
+#, fuzzy
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "વ્યક્તિ યાદી મેળવવામાં અસમર્થ"
+
+#~ msgid ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+#~ msgstr ""
+#~ "તમે ટુંકમાં જ જોડાણ છોજી દેશો. તમે TOC વાપરવાની ઈચ્છા રાખશો જ્યાં સુધી આ ચોક્કસ નહિં "
+#~ "થઈ જાય. સુધારાઓ માટે %s ને ચકાસો."
+
+#, fuzzy
+#~ msgid "Add buddy Q&A"
+#~ msgstr "વ્યક્તિ ઉમેરો"
+
+#, fuzzy
+#~ msgid "Can not decrypt get server reply"
+#~ msgstr "સર્વર જાણકારી મેળવી શકતા નથી"
+
+#, fuzzy
+#~ msgid "Keep alive error"
+#~ msgstr "વાંચવામાં ક્ષતિ"
+
+#, fuzzy
+#~ msgid ""
+#~ "Lost connection with server:\n"
+#~ "%d, %s"
+#~ msgstr "સર્વર સાથે જોડાણથયેલ નથી."
+
+#, fuzzy
+#~ msgid "Connecting server ..."
+#~ msgstr "સર્વર જોડો"
+
+#, fuzzy
+#~ msgid "Failed to send IM."
+#~ msgstr "સંવાદમાં જોડાવામાં નિષ્ફળ"
+
+#~ msgid "Looking up %s"
+#~ msgstr "%s જોઈ રહ્યા છીએ"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "%s સાથે જોડાવામાં નિષ્ફળ"
+
+#~ msgid "Signon: %s"
+#~ msgstr "પ્રવેશ કરો: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "ફાઈલ %s લખવામાં અસમર્થ."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "ફાઈલ %s વાંચવામાં અસમર્થ."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "સંદેશો ખૂબ લાંબો છે, છેલ્લા %s બાઈટો બગડી ગયેલ છે."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s વર્તમાનમાં પ્રવેશેલ નથી."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "%s ની ચેતવણી માન્ય નથી."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr "સંદેશો છોડી મૂકાયેલ છે, તમે સર્વર ઝડપ મર્યાદા ઓળંગી ગયા છે."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "%s માં સંવાદ ઉપલબ્ધ નથી."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "તમે સંદેશાઓ ખૂબ ઝડપથી %s ને મોકલી રહ્યા છો."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "તમે IM ને %s માંથી રહી ગયા કારણ કે તે ખૂબ મોટું હતું."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr "તમે IM ને %s માંથી મેળવવામાં રહી ગયા કારણ કે તે ખૂબ ઝડપથી મોકલાયું હતું."
+
+#~ msgid "Failure."
+#~ msgstr "નિષ્ફળતા."
+
+#~ msgid "Too many matches."
+#~ msgstr "ઘણી બધી જોડણીઓ."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "વધુ ચકાસણીઓની જરૂર છે."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "ડિરેક્ટરી સેવા કામચલાઉ રીતે ઉપલબ્ધ નથી."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "ઈ-મેઈલ જોવાનું પ્રતિબંધિત છે."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "મુખ્ય શબ્દ અવગણાયેલ છે."
+
+#~ msgid "No keywords."
+#~ msgstr "કોઈ મુખ્ય શબ્દો નથી."
+
+#~ msgid "User has no directory information."
+#~ msgstr "વપરાશકર્તા પાસે કોઈ ડિરેક્ટરી જાણકારી નથી."
+
+#~ msgid "Country not supported."
+#~ msgstr "દેશ આધારભૂત નથી."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "નિષ્ફળતા અજ્ઞાત: %s."
+
+#, fuzzy
+#~ msgid "Incorrect username or password."
+#~ msgstr "અયોગ્ય નામ અથવા પાસવર્ડ."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "સેવા ક્ષણવાર માટે ઉપલબ્ધ નથી."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "તમારું ચેતવણી સ્તર વર્તમાનમાં પ્રવેશ માટે ખૂબ ઊંચું છે."
+
+#~ 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 ""
+#~ "તમે ખૂબ ઝડપથી જોડાણ કરી રહ્યા છો અને તોડી રહ્યા છો. દસ મિનિટો રાહ જુઓ અને ફરીથી "
+#~ "પ્રયત્ન કરો. જો તમે પ્રયાસ કરવાનું ચાલુ રાખો, તો તમારે વધુ લાંબા સમય સુધી રાહ જોવી "
+#~ "પડશે."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "એક અજ્ઞાત પ્રવેશ ક્ષતિ ઉદ્દભવી: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "એક અજ્ઞાત ક્ષતિ, %d, ઉદ્દભવી. જાણકારી: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "અયોગ્ય જૂથનામ"
+
+#~ msgid "Connection Closed"
+#~ msgstr "જોડાણ બંધ થઈ ગયું"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "પ્રત્યુત્તર માટે રાહ જોઈ રહ્યા છીએ..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr ""
+#~ "TOC એ તેની અટકાવો સ્થિતિમાંથી પાછું આવી ગયું છે. તમે હવે ફરીથી સંદેશાઓ મોકલી શકશો."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "પાસવર્ડ સફળતાપૂર્વક બદલાઈ ગયો"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "ડિરેક્ટરી જાણ મેળવો"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "ડિરેક્ટરી જાણકારી સુયોજિત કરો"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "%s ને લખવા માટે ખોલી શક્યા નહિં!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr "ફાઈલ પરિવહન નિષ્ફળ; અન્ય બાજુ કદાચ રદ થઈ ગયેલ હશે."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "પરિવહન માટે જોડાઈ શક્યા નહિં."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "ફાઈલ હેડરમાં લખી શક્યા નહિં. ફાઈલ પરિવહન થશે નહિં."
+
+#, fuzzy
+#~ msgid "Save As..."
+#~ msgstr "ચિહ્ન આ રીતે સંગ્રહો..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s એ %s ને %d ફાઈલ સ્વીકારવા માટે અરજી કરે છે: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s એ %s ને %d ફાઈલો સ્વીકારવા માટે અરજી કરે છે: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s તમને તેમને ફાઈલ મોકલવા માટે અરજી કરે છે"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "TOC પ્રોટોકોલ પ્લગઈન"
+
+#~ msgid "User information for %s unavailable"
+#~ msgstr "%s માટે વપરાશકર્તા જાણકારી ઉપલબ્ધ નથી"
+
+#~ msgid "%s Options"
+#~ msgstr "%s વિકલ્પો"
+
+#~ msgid "Proxy Options"
+#~ msgstr "પ્રોક્સી વિકલ્પો"
+
+#~ msgid "By log size"
+#~ msgstr "લૉગ માપ પ્રમાણે"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "કડી બ્રાઉઝરમાં ખોલો (_O)"
+
+#, fuzzy
+#~ msgid "ST_UN server:"
+#~ msgstr "STUN સર્વર :"
+
+#, fuzzy
+#~ msgid "Smiley _Image"
+#~ msgstr "ચિત્ર સંગ્રહો"
+
+#, fuzzy
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "ટુંકાણો"
+
+#, fuzzy
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "જ્યારે સંદેશાઓ મેળવાય ત્યારે વિન્ડો ફ્લેશ કરો (_F)"
+
+#, fuzzy
#~ msgid "A group with the name already exists."
#~ msgstr "આજ નામવાળું ફોલ્ડર પહેલાથી જ હાજર છે"
@@ -14602,13 +15035,6 @@ msgstr ""
#~ msgstr "શું તમે ખરેખર દૂર જવાનો સંદેશો \"%s\" દૂર કરવા માંગો છો?"
#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr "%s એ %s (%s) પર"
-
-#, fuzzy
#~ msgid "System Message"
#~ msgstr "સંદેશો મોકલો"
@@ -14748,9 +15174,6 @@ msgstr ""
#~ msgid "Invalid screen name"
#~ msgstr "અયોગ્ય વપરાશકર્તા નામ"
-#~ msgid "Unable to make SSL connection to server."
-#~ msgstr "સર્વર સાથે SSL જોડાણ બનાવવામાં અસમર્થ."
-
#~ msgid "Too evil (sender)"
#~ msgstr "ખૂબ ખરાબ (મોકલનાર)"
@@ -15003,10 +15426,11 @@ msgstr ""
#~ "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 ""
-#~ "Pidgin ની વર્તમાન પરિસ્થિતિ બતાવવા માટે સિસ્ટમ ટ્રે ચિહ્ન (ઉદાહરણ તરીકે GNOME, KDE "
-#~ "અથવા Windows માં) દર્શાવે છે, સામાન્ય રીતે વપરાતા વિધેયો વાપરવા માટે ઝડપી વપરાશની "
-#~ "પરવાનગી આપે છે, અને વ્યક્તિ યાદી અથવા પ્રવેશ વિન્ડોનું દ્રશ્ય બદલે છે. સંદેશાઓને જ્યાં સુધી "
-#~ "ચિહ્ન ક્લિક નહિં થાય ત્યાં સુધી કતારમાં રાખવા માટે પરવાનગી પણ આપે છે, ICQ ની જેમ જ."
+#~ "Pidgin ની વર્તમાન પરિસ્થિતિ બતાવવા માટે સિસ્ટમ ટ્રે ચિહ્ન (ઉદાહરણ તરીકે GNOME, "
+#~ "KDE અથવા Windows માં) દર્શાવે છે, સામાન્ય રીતે વપરાતા વિધેયો વાપરવા માટે ઝડપી "
+#~ "વપરાશની પરવાનગી આપે છે, અને વ્યક્તિ યાદી અથવા પ્રવેશ વિન્ડોનું દ્રશ્ય બદલે છે. સંદેશાઓને "
+#~ "જ્યાં સુધી ચિહ્ન ક્લિક નહિં થાય ત્યાં સુધી કતારમાં રાખવા માટે પરવાનગી પણ આપે છે, ICQ "
+#~ "ની જેમ જ."
#~ msgid "GtkTreeView Expander Size"
#~ msgstr "GtkTreeView વિસ્તારક માપ"
@@ -15226,9 +15650,6 @@ msgstr ""
#~ msgid "_Idle"
#~ msgstr "નિષ્ક્રિય (_I)"
-#~ msgid "Retur_n from idle"
-#~ msgstr "નિષ્ક્રિયમાંથી પાછા આવો (_n)"
-
#~ msgid "Pounce Action"
#~ msgstr "પાઉન્સ ક્રિયા"
@@ -15543,8 +15964,8 @@ msgstr ""
#~ msgid ""
#~ "When this happens, TOC ignores any messages sent to it, and may kick you "
-#~ "off if you send a message. Pidgin will prevent anything from going through. "
-#~ "This is only temporary, please be patient."
+#~ "off if you send a message. Pidgin will prevent anything from going "
+#~ "through. This is only temporary, please be patient."
#~ msgstr ""
#~ "જ્યારે આ થાય છે, ત્યારે TOC તેને મોકલાયેલ કોઈપણ સંદેશાઓ અવગણે છે, અને તે તમને લાત મારી "
#~ "દેશે જો તમે સંદેશો મોકલો. Pidgin કંઈમાં પણ જવાથી બચાવશે. આ માત્ર કામચલાઉ જ છે, "
@@ -15562,13 +15983,13 @@ msgstr ""
#~ msgid ""
#~ "The normal authentication method has failed. This means either your "
#~ "password is incorrect, or Yahoo!'s authentication scheme has changed. "
-#~ "Pidgin will now attempt to log in using Web Messenger authentication, which "
-#~ "will result in reduced functionality and features."
+#~ "Pidgin will now attempt to log in using Web Messenger authentication, "
+#~ "which will result in reduced functionality and features."
#~ msgstr ""
#~ "સામાન્ય સત્તાધિકરણ પદ્ધતિ નિષ્ફળ ગઈ છે. આનો અર્થ એ થાય કે ક્યાં તો તમારો પાસવર્ડ "
-#~ "અયોગ્ય છે, અથવા Yahoo! ની સત્તાધિકરણ પદ્ધતિ બદલાઈ ગયેલ છે. Pidgin હવે વેબ સંદેશાવાહક "
-#~ "સત્તાધિકરણ પદ્ધતિની મદદથી પ્રવેશ કરવાનું શરૂ કરશે, કે જે ઘટાડાયેલ વિધેયો અને લક્ષણોમાં "
-#~ "પરિણમશે."
+#~ "અયોગ્ય છે, અથવા Yahoo! ની સત્તાધિકરણ પદ્ધતિ બદલાઈ ગયેલ છે. Pidgin હવે વેબ "
+#~ "સંદેશાવાહક સત્તાધિકરણ પદ્ધતિની મદદથી પ્રવેશ કરવાનું શરૂ કરશે, કે જે ઘટાડાયેલ વિધેયો અને "
+#~ "લક્ષણોમાં પરિણમશે."
#~ msgid "Unable to read"
#~ msgstr "વાંચવામાં અસમર્થ"
@@ -15590,9 +16011,6 @@ msgstr ""
#~ msgstr[0] "(%d સંદેશો)"
#~ msgstr[1] "(%d સંદેશાઓ)"
-#~ msgid "(1 message)"
-#~ msgstr "(૧ સંદેશો)"
-
#~ msgid "Default auto-away"
#~ msgstr "મૂળભુત આપોઆપ-દૂર"
@@ -15697,9 +16115,6 @@ msgstr ""
#~ msgid "Away title: "
#~ msgstr "દૂર જવાનું શીર્ષક: "
-#~ msgid "Buddy List Error"
-#~ msgstr "વ્યક્તિ યાદી ક્ષતિ"
-
#~ msgid "Size of the expander arrow"
#~ msgstr "વિસ્તારક તીરનું માપ"
@@ -16094,12 +16509,12 @@ msgstr ""
#~ msgstr "પસંદગીઓ લાવવામાં અસમર્થ"
#~ msgid ""
-#~ "Pidgin was not able to load your preferences because they are stored in an "
-#~ "old format that is no longer used. Please reconfigure your settings "
+#~ "Pidgin 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 ""
-#~ "Pidgin તમારી પસંદગીઓ લાવવામાં સમર્થ હતું નહિં કારણ કે તેઓ જૂના બંધારણમાં સંગ્રહાયેલ હતા કે "
-#~ "જેઓ લાંબા સમય સુધી વાપરવાના નથી. મહેરબાની કરીને પસંદગીઓ વિન્ડોની મદદથી તમારા "
+#~ "Pidgin તમારી પસંદગીઓ લાવવામાં સમર્થ હતું નહિં કારણ કે તેઓ જૂના બંધારણમાં સંગ્રહાયેલ હતા "
+#~ "કે જેઓ લાંબા સમય સુધી વાપરવાના નથી. મહેરબાની કરીને પસંદગીઓ વિન્ડોની મદદથી તમારા "
#~ "સુયોજનો પુનઃરૂપરેખાંકિત કરો."
#~ msgid "Slightly less boring default"
@@ -16205,18 +16620,18 @@ msgstr ""
#~ msgstr "ડિરેક્ટરી વાપરવામાં અસમર્થ"
#~ msgid ""
-#~ "Pidgin was unable to search the Directory because it was unable to connect "
-#~ "to the directory server. Please try again later."
+#~ "Pidgin was unable to search the Directory because it was unable to "
+#~ "connect to the directory server. Please try again later."
#~ msgstr ""
#~ "Pidgin ડિરેક્ટરી શોધવા માટે અસમર્થ હતું કારણ કે તે ડિરેક્ટરી સર્વર સાથે જોડાવા માટે "
#~ "અસમર્થ હતું. મહેરબાની કરીને પછી ફરીથી પ્રયત્ન કરો."
#~ msgid ""
-#~ "Pidgin was unable to change your password due to an error connecting to the "
-#~ "Gadu-Gadu server. Please try again later."
+#~ "Pidgin was unable to change your password due to an error connecting to "
+#~ "the Gadu-Gadu server. Please try again later."
#~ msgstr ""
-#~ "Pidgin એ Gadu-Gadu સર્વર સાથે જોડાવામાં ક્ષતિને કારણે તમારો પાસવર્ડ બદલવામાં અસમર્થ "
-#~ "હતું. મહેરબાની કરીને પછી ફરીથી પ્રયત્ન કરો."
+#~ "Pidgin એ Gadu-Gadu સર્વર સાથે જોડાવામાં ક્ષતિને કારણે તમારો પાસવર્ડ બદલવામાં "
+#~ "અસમર્થ હતું. મહેરબાની કરીને પછી ફરીથી પ્રયત્ન કરો."
#~ msgid "Directory Search"
#~ msgstr "ડિરેક્ટરી શોધ"
@@ -16225,8 +16640,8 @@ msgstr ""
#~ msgstr "વપરાશકર્તા રૂપરેખા વાપરવામાં અસમર્થ."
#~ msgid ""
-#~ "Pidgin was unable to access this user's profile due to an error connecting "
-#~ "to the directory server. Please try again later."
+#~ "Pidgin was unable to access this user's profile due to an error "
+#~ "connecting to the directory server. Please try again later."
#~ msgstr ""
#~ "Pidgin ડિરેક્ટરી સર્વર સાથે જોડાવામાં ક્ષતિને કારણે વપરાશકર્તાની રૂપરેખા વાપરવામાં "
#~ "અસમર્થ હતું. મહેરબાની કરીને પછી ફરીથી પ્રયત્ન કરો."
@@ -16358,6 +16773,3 @@ msgstr ""
#~ msgstr ""
#~ "%s એ %s ને સંવાદ કક્ષ %s માં આમંત્રિત કર્યો છે:\n"
#~ "<b>%s</b>"
-
-#~ msgid "Sorry, I ran out for a bit!"
-#~ msgstr "માફ કરજો, હું થોડા સમય માટે ચાલી ગયો હતો!"
diff --git a/po/he.po b/po/he.po
index 312e10eddd..eb9b6ce61e 100644
--- a/po/he.po
+++ b/po/he.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: he\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
+"POT-Creation-Date: 2009-04-30 10:38-0400\n"
"PO-Revision-Date: 2008-08-27 21:03+0200\n"
"Last-Translator: Shalom Craimer <scraimer at g mail dot com>\n"
"Language-Team: Hebrew <he@li.org>\n"
@@ -26,13 +26,13 @@ msgstr "פינץ'"
msgid "%s. Try `%s -h' for more information.\n"
msgstr "%s. יש לנסות את '%s –h' למידע נוסף.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -597,19 +597,6 @@ msgstr "רישום הופסק. הודעות בשיחה זו לא יירשמו מ
msgid "Send To"
msgstr "שלח אל"
-msgid "Invite message"
-msgstr "הודעת הזמנה"
-
-msgid "Invite"
-msgstr "הזמן"
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"יש להזין את שם המשתמש שברצונך להזמין,\n"
-"יחד עם הודעת הזמנה אופציונלית."
-
msgid "Conversation"
msgstr "שיחה"
@@ -856,6 +843,41 @@ msgstr "כל השיחות"
msgid "System Log"
msgstr "דו\"ח מערכת"
+#, fuzzy
+msgid "Calling ... "
+msgstr "מחשב..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "אשר"
+
+msgid "Reject"
+msgstr "דחה"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "עזבת את הערוץ%s%s"
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "דוא\"ל"
@@ -890,6 +912,9 @@ msgstr "המשך"
msgid "IM"
msgstr "הודעה"
+msgid "Invite"
+msgstr "הזמן"
+
msgid "(none)"
msgstr "(ללא)"
@@ -1093,7 +1118,6 @@ msgstr "%s התרחק/ה מהמחשב. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s שלך לך הודעה. (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "אירעה פעילות לא מוכרת. אנא דווח על כך!"
@@ -1139,7 +1163,6 @@ msgstr "דקות לפני שינוי מצב"
msgid "Change status to"
msgstr "שנה מצב להיות"
-#. Conversations
msgid "Conversations"
msgstr "שיחות"
@@ -1455,7 +1478,6 @@ msgid ""
"conversation into the current conversation."
msgstr "כאשר חלון שיחה חדש נפתח, תוסף זה יכניס את השיחה האחרונה לראש החלון."
-#, c-format
msgid "Online"
msgstr "מחובר"
@@ -1499,6 +1521,28 @@ msgstr "GntLastlog"
msgid "Lastlog plugin."
msgstr "תוסף Lastlog."
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "כתובת השיר"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "חשבונות"
@@ -1599,13 +1643,6 @@ msgstr "לקבל תעודה עבור %s?"
msgid "SSL Certificate Verification"
msgstr "וידוא תעודת SSL"
-#. Number of actions
-msgid "Accept"
-msgstr "אשר"
-
-msgid "Reject"
-msgstr "דחה"
-
msgid "_View Certificate..."
msgstr "הצג תעודה..."
@@ -1749,6 +1786,16 @@ msgstr "%s עזב את החדר"
msgid "%s left the room (%s)."
msgstr "%s עזב את החדר (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "הזמן לועידה"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr "יש להזין את שם המשתמש שברצונך להזמין, יחד עם הודעת הזמנה אופציונלית."
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "כישלון בהשגת חיבור: %s"
@@ -1883,7 +1930,6 @@ msgstr "מתחיל את ההעברה של %s מ-%s"
msgid "Transfer of file %s complete"
msgstr "העברה של קובץ %s הושלמה"
-#, c-format
msgid "File transfer complete"
msgstr "הושלמה העברת הקובץ"
@@ -1891,7 +1937,6 @@ msgstr "הושלמה העברת הקובץ"
msgid "You canceled the transfer of %s"
msgstr "ביטלת את העברת %s"
-#, c-format
msgid "File transfer cancelled"
msgstr "העברת הקובץ בוטלה"
@@ -2080,7 +2125,6 @@ msgstr "(%s) %s <מענה-אוטומטי>: %s\n"
msgid "You are using %s, but this plugin requires %s."
msgstr "את/ה משתמש/ת ב- %s, אבל תוסף זה דורש %s."
-#, c-format
msgid "This plugin has not defined an ID."
msgstr "תוסף זה לא הגדיר מזהה."
@@ -2556,6 +2600,32 @@ msgstr "שמור הודעות לא-מקוונות בתגובת-פעילות"
msgid "Do not ask. Always save in pounce."
msgstr "אל תשאל. תמיד שמור בתגובת פעילות."
+#, fuzzy
+msgid "One Time Password"
+msgstr "הזן סיסמא"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2762,7 +2832,6 @@ msgid ""
"Unable to establish connection with the local mDNS server. Is it running?"
msgstr "לא מצליח לתקשר עם שרת ה-mDNS המקומי. האם הוא כבר רץ?"
-#. Creating the options for the protocol
msgid "First name"
msgstr "שם פרטי"
@@ -2794,6 +2863,11 @@ msgstr "תוסף פרוטוקול Bonjour"
msgid "Purple Person"
msgstr "אדם סגול"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "מיקום"
+
msgid "Bonjour"
msgstr "Bonjour"
@@ -2949,13 +3023,13 @@ msgstr "בחר צ'אט עבור איש הקשר: %s"
msgid "Add to chat..."
msgstr "הוסף לשיחה..."
+#. Global
msgid "Available"
msgstr "זמין"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "רחוק מהמחשב"
@@ -3292,6 +3366,17 @@ msgid ""
"invalid characters."
msgstr "שם החשבון שבחרת נדחה ע\"י השרת. כנראה הוא מכיל אותיות לא חוקיות."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "שם הצ'אט הזה כבר בשימוש"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "כינוי"
+
msgid "Cannot change nick"
msgstr "כשל בשינוי הכינוי"
@@ -3552,6 +3637,41 @@ msgstr "תשובת אימות לא תקפה מהשרת"
msgid "SASL error"
msgstr "שגיאת SASL"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "לא ניתנה סיבה."
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "גירסא ללא תמיכה"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"לא ניתן ליצור חיבור עם השרת:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"לא ניתן ליצור חיבור עם השרת:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "לא ניתן לאתחל חיבור"
+
+msgid "Unable to create socket"
+msgstr "אין אפשרות ליצור שקע"
+
+msgid "Write error"
+msgstr "שגיאה בכתיבה"
+
msgid "Full Name"
msgstr "שם מלא"
@@ -3616,6 +3736,10 @@ msgstr "לקוח"
msgid "Operating System"
msgstr "מערכת הפעלה"
+#, fuzzy
+msgid "Local Time"
+msgstr "קובץ מקומי:"
+
msgid "Last Activity"
msgstr "פעילות אחרונה"
@@ -3821,7 +3945,6 @@ msgstr "פטפטן"
msgid "Extended Away"
msgstr "העדרות ממושכת"
-#, c-format
msgid "Do Not Disturb"
msgstr "נא לא להפריע"
@@ -3945,9 +4068,6 @@ msgstr "חפש חדרים"
msgid "You require encryption, but it is not available on this server."
msgstr "נתת דרישה להצפנה, אבל השרת לא מספק זאת."
-msgid "Write error"
-msgstr "שגיאה בכתיבה"
-
msgid "Ping timeout"
msgstr "פינג לא חזר בזמן"
@@ -3956,14 +4076,9 @@ msgstr "שגיאה בקריאה"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"לא ניתן ליצור חיבור עם השרת:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "אין אפשרות ליצור שקע"
msgid "Invalid XMPP ID"
msgstr "מזהה XMPP לא תקין"
@@ -3971,6 +4086,10 @@ msgstr "מזהה XMPP לא תקין"
msgid "Invalid XMPP ID. Domain must be set."
msgstr "מזהה XMPP שגוי. יש להגדיר את הדומיין."
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "כשל בהתחברות לשרת"
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "הרישום של %s@%s בוצע בהצלחה"
@@ -4055,9 +4174,18 @@ msgstr "מאמת"
msgid "Re-initializing Stream"
msgstr "מאתחל את הזרם מחדש"
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr "לא מורשה"
+msgid "Mood"
+msgstr "מצב רוח"
+
+msgid "Now Listening"
+msgstr "מקשיב כעת"
+
msgid "Both"
msgstr "שניהם"
@@ -4079,12 +4207,6 @@ msgstr "ללא"
msgid "Subscription"
msgstr "מנוי"
-msgid "Mood"
-msgstr "מצב רוח"
-
-msgid "Now Listening"
-msgstr "מקשיב כעת"
-
msgid "Mood Text"
msgstr "טקסט מצב-רוח"
@@ -4322,18 +4444,24 @@ msgstr "לא ניתן לבעוט במשתמש %s"
msgid "Unable to ping user %s"
msgstr "לא ניתן לעשות פינג למשתמש %s"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr "לא ניתן לזמזם, מכיוון שלא ידוע כלום על המשתמש %s."
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr "לא ניתן לזמזם, מכיוון שייתכן והמשתמש %s לא מחובר."
-#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+#, fuzzy, c-format
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "לא ניתן לזמזם, כי המשתמש %s לא תומך בזה."
+#, c-format
+msgid "Buzzing %s..."
+msgstr "מזמם ל-%s..."
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
msgid "Buzz"
@@ -4343,9 +4471,34 @@ msgstr "זמזם"
msgid "%s has buzzed you!"
msgstr "%s זימזם אותך!"
-#, c-format
-msgid "Buzzing %s..."
-msgstr "מזמם ל-%s..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "לא ניתן לשלוח את הקובץ ל %s, JID לא-תקף"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "לא ניתן לשלוח את הקובץ אל %s, המשתמש לא מחובר"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr "לא ניתן לשלוח את הקובץ אל %s, אינך רשומ/ה להודעת קיום המשתמש"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "הרישום נכשל"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "יש לבחור את המשאב של %s אליו ברצונך לשלוח קובץ"
+
+msgid "Select a Resource"
+msgstr "יש לבחור משאב"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "יז_ום שיחה"
msgid "config: Configure a chat room."
msgstr "config: קבע הגדרות חדר צ'אט."
@@ -4498,6 +4651,21 @@ msgstr "שגיאה בהצטרפות לצ'אט %s"
msgid "Error in chat %s"
msgstr "שגיאה בשיחה %s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "ארעה שגיאה בעת פתיחת הקובץ."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "העברת הקובץ נכשלה"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "כישלון בעת פתיחת הקובץ '%s': %s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr "לא ניתן לשלוח את הקובץ אל %s, המשתמש לא תומך בהעברות קבצים"
@@ -4521,9 +4689,6 @@ msgstr "לא ניתן לשלוח את הקובץ אל %s, אינך רשומ/ה
msgid "Please select the resource of %s to which you would like to send a file"
msgstr "יש לבחור את המשאב של %s אליו ברצונך לשלוח קובץ"
-msgid "Select a Resource"
-msgstr "יש לבחור משאב"
-
msgid "Edit User Mood"
msgstr "קבע מצב-רוח משתמש"
@@ -4557,8 +4722,19 @@ msgstr "פעולות"
msgid "Select an action"
msgstr "בחר פעולה"
-msgid "Unable to retrieve MSN Address Book"
-msgstr "לא יכול לאחזר את רשימת הכתובות של MSN"
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr "אין אפשרות להוסיף \"%s\"."
+
+msgid "Buddy Add error"
+msgstr ""
+
+#, fuzzy
+msgid "The username specified does not exist."
+msgstr "שם המשתמש שהוזן אינו חוקי."
#, c-format
msgid "Buddy list synchronization issue in %s (%s)"
@@ -4786,7 +4962,7 @@ msgstr "פספורט ילדים ללא הסכמת הורים"
msgid "Passport account not yet verified"
msgstr "חשבון הפספורט לא אומת עדיין"
-#, fuzzy, c-format
+#, fuzzy
msgid "Passport account suspended"
msgstr "חשבון הפספורט לא אומת עדיין"
@@ -4879,6 +5055,13 @@ msgstr "שלח בתור הודעה לנייד."
msgid "Page"
msgstr "דף"
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "בעבודה"
+
msgid "Has you"
msgstr "יש אותך"
@@ -4915,6 +5098,14 @@ msgstr "אמן"
msgid "Album"
msgstr "אלבום"
+#, fuzzy
+msgid "Game Title"
+msgstr "שם השיר"
+
+#, fuzzy
+msgid "Office Title"
+msgstr "שם השיר"
+
msgid "Set Friendly Name..."
msgstr "קבע/י שם ידידותי..."
@@ -5103,8 +5294,9 @@ msgid ""
"does not exist."
msgstr "לא יכול למצוא מידע בתוך פרופיל המשתמש. ככל הנראה המשתמש לא קיים."
-msgid "Profile URL"
-msgstr "URL לפרופיל"
+#, fuzzy
+msgid "View web profile"
+msgstr "החבא כאשר לא-מקוון"
#. *< type
#. *< ui_requirement
@@ -5349,19 +5541,15 @@ msgstr "הוסף לפנקס הכתובות"
msgid "Do you want to delete this buddy from your address book as well?"
msgstr "האם ברצונך להוסיף את המשתמש הזה לרשימת אנשי הקשר שלך?"
-#. only notify the user about problems adding to the friends list
-#. * maybe we should do something else for other lists, but it probably
-#. * won't cause too many problems if we just ignore it
-#, c-format
-msgid "Unable to add \"%s\"."
-msgstr "אין אפשרות להוסיף \"%s\"."
-
msgid "The username specified is invalid."
msgstr "שם המשתמש שהוזן אינו חוקי."
msgid "This Hotmail account may not be active."
msgstr "ייתכן וחשבון ה-Hotmail הזה אינו פעיל."
+msgid "Profile URL"
+msgstr "URL לפרופיל"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5375,17 +5563,12 @@ msgstr "ייתכן וחשבון ה-Hotmail הזה אינו פעיל."
msgid "MSN Protocol Plugin"
msgstr "תוסף פרוטוקול MSN"
-msgid "Missing Cipher"
-msgstr "צופן חסר"
-
-msgid "The RC4 cipher could not be found"
-msgstr "צופן ה- RC4 לא נמצא"
+#, c-format
+msgid "No such user: %s"
+msgstr "אין משתמש כזה: %s"
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
-msgstr ""
-"יש לשדרג לגירסא של libpurple עם תמיכת RC4 (>= 2.0.1). תוסף MySpaceIM לא יטען."
+msgid "User lookup"
+msgstr "חיפוש משתמש"
msgid "Reading challenge"
msgstr "קורא תגובת-תיגר"
@@ -5396,11 +5579,20 @@ msgstr "אורך תגובת-תיגר לא צפוייה מהשרת"
msgid "Logging in"
msgstr "מתחבר"
-#, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] "אבד החיבור אל השרת (לא התקבל מידע תוך %d שניה)"
-msgstr[1] "אבד החיבור אל השרת (לא התקבל מידע תוך %d שניות)"
+msgid "MySpaceIM - No Username Set"
+msgstr "לא נקבע שם משתמש עבור MySpaceIM"
+
+msgid "You appear to have no MySpace username."
+msgstr "ככל הנראה אין לך משתמש של מייספייס."
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr "האם ברצונך לקבוע אחד כעת? (הערה: לא ניתן לשינוי!)"
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr ""
+"אבד החיבור עם השרת\n"
+"%s"
#. Can't write _()'d strings in array initializers. Workaround.
msgid "New mail messages"
@@ -5421,14 +5613,23 @@ msgstr "הערות-תמונה חדשות"
msgid "MySpace"
msgstr "מייספס"
-msgid "MySpaceIM - No Username Set"
-msgstr "לא נקבע שם משתמש עבור MySpaceIM"
+msgid "IM Friends"
+msgstr "חברי בהודעות מידיות"
-msgid "You appear to have no MySpace username."
-msgstr "ככל הנראה אין לך משתמש של מייספייס."
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+"%d איש-קשר נוסף או עודכן מהשרת (כולל אנשי-קשר שכבר היו על הרשימה בשרת)"
+msgstr[1] ""
+"%d אנשי-קשר נוספו או עודכנו מהשרת (כולל אנשי-קשר שכבר היו על הרשימה בשרת)"
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
-msgstr "האם ברצונך לקבוע אחד כעת? (הערה: לא ניתן לשינוי!)"
+msgid "Add contacts from server"
+msgstr "הוסף אנשי-קשר מהשרת"
#. The session is now set up, ready to be connected. This emits the
#. * signedOn signal, so clients can now do anything with msimprpl, and
@@ -5454,6 +5655,19 @@ msgstr ""
msgid "MySpaceIM Error"
msgstr "שגיאת MySpaceIM"
+msgid "Invalid input condition"
+msgstr "תנאי קליטה שגוי"
+
+msgid "Read buffer full (2)"
+msgstr "תור-הקריאה מלא (2)"
+
+msgid "Unparseable message"
+msgstr "הודעת שלא ניתנת לפיענוח"
+
+#, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr "לא ניתן להתחבר לשרת: %s (%d)"
+
msgid "Failed to add buddy"
msgstr "כשל בהוספת איש-קשר"
@@ -5463,13 +5677,6 @@ msgstr "כשל בפקודת 'addbuddy'."
msgid "persist command failed"
msgstr "כישלון בפקודת persist"
-#, c-format
-msgid "No such user: %s"
-msgstr "אין משתמש כזה: %s"
-
-msgid "User lookup"
-msgstr "חיפוש משתמש"
-
msgid "Failed to remove buddy"
msgstr "כשל בהסרת איש-קשר"
@@ -5479,36 +5686,17 @@ msgstr "פקודת 'delbuddy' נכשלה"
msgid "blocklist command failed"
msgstr "פקודת blocklist נכשלה"
-msgid "Invalid input condition"
-msgstr "תנאי קליטה שגוי"
-
-msgid "Read buffer full (2)"
-msgstr "תור-הקריאה מלא (2)"
-
-msgid "Unparseable message"
-msgstr "הודעת שלא ניתנת לפיענוח"
-
-#, c-format
-msgid "Couldn't connect to host: %s (%d)"
-msgstr "לא ניתן להתחבר לשרת: %s (%d)"
+msgid "Missing Cipher"
+msgstr "צופן חסר"
-msgid "IM Friends"
-msgstr "חברי בהודעות מידיות"
+msgid "The RC4 cipher could not be found"
+msgstr "צופן ה- RC4 לא נמצא"
-#, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-"%d איש-קשר נוסף או עודכן מהשרת (כולל אנשי-קשר שכבר היו על הרשימה בשרת)"
-msgstr[1] ""
-"%d אנשי-קשר נוספו או עודכנו מהשרת (כולל אנשי-קשר שכבר היו על הרשימה בשרת)"
-
-msgid "Add contacts from server"
-msgstr "הוסף אנשי-קשר מהשרת"
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
+"יש לשדרג לגירסא של libpurple עם תמיכת RC4 (>= 2.0.1). תוסף MySpaceIM לא יטען."
msgid "Add friends from MySpace.com"
msgstr "הוסף חברים מתוך MySpace.com"
@@ -5550,9 +5738,6 @@ msgstr "(גודל גופן בסיסי (בנקודות"
msgid "User"
msgstr "משתמש"
-msgid "Profile"
-msgstr "פרופיל"
-
msgid "Headline"
msgstr "כותרת"
@@ -5565,16 +5750,6 @@ msgstr "סה\"כ חברים"
msgid "Client Version"
msgstr "גירסת לקוח"
-#. Protocol won't log in now without a username set.. Disconnect
-msgid "No username set"
-msgstr "לא נקבע שם משתמש"
-
-msgid "MySpaceIM - Please Set a Username"
-msgstr "MySpaceIM - יש לקבוע סיסמה, בבקשה"
-
-msgid "Please enter a username to check its availability:"
-msgstr "יש להקליד שם משתמש לבדיקת זמינותו:"
-
msgid "MySpaceIM - Username Available"
msgstr "MySpaceIM - שם המשתמש זמין"
@@ -5584,12 +5759,22 @@ msgstr "שם המשתמש הינו זמין. האם ברצונך להשתמש ב
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr "אחרי שנקבע, זה לא ניתן לשינוי!"
+msgid "MySpaceIM - Please Set a Username"
+msgstr "MySpaceIM - יש לקבוע סיסמה, בבקשה"
+
msgid "This username is unavailable."
msgstr "שם משתמש זה אינו זמין."
msgid "Please try another username:"
msgstr "יש לנסות שם משתמש אחר:"
+#. Protocol won't log in now without a username set.. Disconnect
+msgid "No username set"
+msgstr "לא נקבע שם משתמש"
+
+msgid "Please enter a username to check its availability:"
+msgstr "יש להקליד שם משתמש לבדיקת זמינותו:"
+
#. TODO: icons for each zap
#. Lots of comments for translators:
#. Zap means "to strike suddenly and forcefully as if with a
@@ -5968,7 +6153,6 @@ msgstr "לא ניתן להתחבר לשרת. יש להזין את כתובת ה
msgid "Error. SSL support is not installed."
msgstr "שגיאה. לא מותקנת תמיכה ב-SSL."
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr "ועידה זו נסגרה. לא ניתן לשלוח עוד הודעות."
@@ -6231,23 +6415,18 @@ msgstr "מצלמה"
msgid "Screen Sharing"
msgstr "שיתוף מסך"
-#, c-format
msgid "Free For Chat"
msgstr "פנוי לשיחה"
-#, c-format
msgid "Not Available"
msgstr "לא זמין"
-#, c-format
msgid "Occupied"
msgstr "עסוק"
-#, c-format
msgid "Web Aware"
msgstr "מודע רשת"
-#, c-format
msgid "Invisible"
msgstr "בלתי נראה"
@@ -6296,7 +6475,7 @@ msgstr ""
"תצוגה חייבים להיות כתובות אימייל חוקיות, או להתחיל באות ולהכיל רק אותיות "
"מספרים ורווחים, או לחלופין להכיל אך ורק מספרים."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr "שם משתמש לא תקף."
@@ -6312,7 +6491,7 @@ msgstr "חשבונך מושעה כרגע."
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "שירות ההודעות של AOL לא זמין כרגע."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6346,13 +6525,9 @@ msgstr "יש להזין את קוד 6 הספרות מהתצוגה הדיגיטל
msgid "_OK"
msgstr "אישור"
-#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
-msgstr ""
-"ייתכן ותנותק/י בקרוב. אולי תרצ/י להיעזר ב-TOC עד אשר זה יתוקן. אפשר לבדוק ב%"
-"s לעידכונים."
+#, fuzzy, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
+msgstr "ייתכן ותנותק/י בקרוב. יש לבדוק את %s לעידכונים."
msgid "Unable to get a valid AIM login hash."
msgstr "לא מצליח להשיג קוד התחברות תקף של AIM."
@@ -6492,7 +6667,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] "פספסת %hu הודעה מאת %s מסיבה לא ידועה."
msgstr[1] "פספסת %hu הודעות מאת %s מסיבה לא ידועה."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "לא ניתן לשלוח הודעה: %s"
@@ -6514,6 +6689,9 @@ msgstr "מחובר מאז"
msgid "Member Since"
msgstr "חבר מאז"
+msgid "Profile"
+msgstr "פרופיל"
+
msgid "Your AIM connection may be lost."
msgstr "החיבור AIM שלך אולי יתנתק."
@@ -6781,6 +6959,7 @@ msgstr "התחבר"
msgid "Get AIM Info"
msgstr "הצג פרטי AIM"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "ערוך הערת איש קשר"
@@ -6889,7 +7068,6 @@ msgstr "מבקש מ-%s להתחבר אלינו אל %s:%hu לתקשורת ישי
msgid "Attempting to connect to %s:%hu."
msgstr "מנסה להתחבר אל %s:%hu."
-#, c-format
msgid "Attempting to connect via proxy server."
msgstr "מנסה להתחבר דרך שרת תיווך..."
@@ -6984,7 +7162,7 @@ msgstr "אחר"
msgid "Visible"
msgstr "בלתי נראה"
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
#, fuzzy
@@ -7075,16 +7253,48 @@ msgstr "עודכן לאחרונה"
msgid "Could not change buddy information."
msgstr "יש להזין מידע על איש הקשר."
-#, c-format
-msgid "%d needs Q&A"
+msgid "Mobile"
+msgstr "נייד"
+
+msgid "Note"
+msgstr "הערה"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "סמל איש הקשר"
+
+msgid "Change his/her memo as you like"
msgstr ""
#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "הוסף איש קשר"
+msgid "_Modify"
+msgstr "ערוך"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "ערוך"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "שרת עסוק"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%u requires verification"
+msgstr "דרוש הרשאה"
#, fuzzy
-msgid "Input answer here"
+msgid "Add buddy question"
+msgstr "להוסיף את איש הקשר לרשימה שלך?"
+
+#, fuzzy
+msgid "Enter answer here"
msgstr "יש להזין את הבקשה כאו"
msgid "Send"
@@ -7098,18 +7308,19 @@ msgid "Authorization denied message:"
msgstr "הודעת סירוב הרשאה:"
#, fuzzy
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr "סליחה, את/ה לא הטיפוס שלי..."
#, fuzzy, c-format
-msgid "%d needs authentication"
+msgid "%u needs authorization"
msgstr "משתמש %d דורש אימות"
#, fuzzy
msgid "Add buddy authorize"
msgstr "להוסיף את איש הקשר לרשימה שלך?"
-msgid "Input request here"
+#, fuzzy
+msgid "Enter request here"
msgstr "יש להזין את הבקשה כאו"
msgid "Would you be my friend?"
@@ -7132,7 +7343,7 @@ msgid "Failed sending authorize"
msgstr "בבקשה, אני רוצה הרשאה!"
#, fuzzy, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr "כשל בהסרת איש-קשר"
#, fuzzy, c-format
@@ -7177,6 +7388,10 @@ msgid "You can only search for permanent Qun\n"
msgstr "ניתן לחפש רק קבוצות QQ קבועות\n"
#, fuzzy
+msgid "(Invalid UTF-8 string)"
+msgstr "הגדרות לא תקפות של מתווכים"
+
+#, fuzzy
msgid "Not member"
msgstr "אני אינני חבר/ה"
@@ -7218,16 +7433,19 @@ msgstr "קבוצה זו לא מאשרת לאחרים להצטרף"
msgid "Join QQ Qun"
msgstr "הצטרף לצ'אט"
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
-msgstr ""
+msgid "Input request here"
+msgstr "יש להזין את הבקשה כאו"
+
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "שינית בהצלחה את החבר-Qun"
#, fuzzy
msgid "Successfully joined Qun"
msgstr "שינית בהצלחה את החבר-Qun"
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
msgid "QQ Qun Operation"
@@ -7237,7 +7455,7 @@ msgstr "פעולת QQ Qun"
msgid "Failed:"
msgstr "נכשל"
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
#, fuzzy
@@ -7252,11 +7470,11 @@ msgstr ""
"פעולה זו תביא בסופו של דבר להסרת ה-Qun."
#, fuzzy
-msgid "Sorry, you are not our style ..."
+msgid "Sorry, you are not our style"
msgstr "סליחה, את/ה לא הטיפוס שלי..."
#, fuzzy
-msgid "Successfully changed Qun member"
+msgid "Successfully changed Qun members"
msgstr "שינית בהצלחה את החבר-Qun"
#, fuzzy
@@ -7267,35 +7485,35 @@ msgid "You have successfully created a Qun"
msgstr "יצרת בהצלחה Qun"
#, fuzzy
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr "האם ברצונך לקבוע את פרטי ה-Qun כעת?"
msgid "Setup"
msgstr "הגדרות"
#, fuzzy, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr "המשתמש %d ביקש להצטרף לקבוצה %d"
#, fuzzy, c-format
-msgid "%d request to join Qun %d"
+msgid "%u request to join Qun %u"
msgstr "המשתמש %d ביקש להצטרף לקבוצה %d"
#, fuzzy, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr "כישלון בהצטרפות לאיש קשר בצ'אט"
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr "הסר איש קשר"
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "הסר איש קשר"
#, c-format
msgid "Unknown-%d"
@@ -7409,6 +7627,13 @@ msgstr "<b>עידכון אחרון</b>: %s<br>\n"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<b>שרת</b>: %s: %d<br>\n"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<b>עידכון אחרון</b>: %s<br>\n"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7416,7 +7641,7 @@ msgid "<i>Feel free to join us!</i> :)"
msgstr ""
#, fuzzy, c-format
-msgid "About OpenQ r%s"
+msgid "About OpenQ %s"
msgstr "אודות %s"
#, fuzzy
@@ -7437,6 +7662,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "אודות %s"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "כתובת בבית"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7468,7 +7697,6 @@ msgstr ""
msgid "QQ2008"
msgstr ""
-#. #endif
#, fuzzy
msgid "Connect by TCP"
msgstr "מתחבר בעזרת TCP"
@@ -7481,6 +7709,9 @@ msgstr "פורט השרת"
msgid "Show server news"
msgstr "כתובת שרת"
+msgid "Show chat room when msg comes"
+msgstr ""
+
#, fuzzy
msgid "Keep alive interval (seconds)"
msgstr "פרקי-זמן להודעות הישאר-בחיים"
@@ -7490,11 +7721,7 @@ msgid "Update interval (seconds)"
msgstr "פרק זמן בין עידכונים"
#, fuzzy
-msgid "Can not decrypt server reply"
-msgstr "אין אפשרות לפיענוח המשוב בעת אימות משתמש"
-
-#, fuzzy
-msgid "Can not decrypt get server reply"
+msgid "Cannot decrypt server reply"
msgstr "אין אפשרות לפיענוח המשוב בעת אימות משתמש"
#, c-format
@@ -7517,21 +7744,24 @@ msgid "Activation required"
msgstr "נדרשת הרשמה"
#, fuzzy, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr "קוד-תגובה שגוי, 0x%02X"
-msgid "Keep alive error"
-msgstr "שגיאה בהשאר-חי"
+#, fuzzy
+msgid "Could not decrypt server reply"
+msgstr "אין אפשרות לפיענוח המשוב בעת אימות משתמש"
#, fuzzy
-msgid "Requesting captcha ..."
+msgid "Requesting captcha"
msgstr "מבקש/ת את תשומת-הלב של %s..."
-msgid "Checking code of captcha ..."
-msgstr ""
+#, fuzzy
+msgid "Checking captcha"
+msgstr "מבקש/ת את תשומת-הלב של %s..."
-msgid "Failed captcha verify"
-msgstr ""
+#, fuzzy
+msgid "Failed captcha verification"
+msgstr "כישלון באימות מול Yahoo!"
#, fuzzy
msgid "Captcha Image"
@@ -7541,38 +7771,30 @@ msgstr "שמור תמונה"
msgid "Enter code"
msgstr "הזן סיסמא"
-msgid "QQ Captcha Verifing"
-msgstr ""
+#, fuzzy
+msgid "QQ Captcha Verification"
+msgstr "וידוא תעודת SSL"
#, fuzzy
msgid "Enter the text from the image"
msgstr "יש להזין את שם הקבוצה"
-#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
-msgstr ""
+#, fuzzy, c-format
+msgid "Unknown reply when checking password (0x%02X)"
+msgstr "קוד-תגובה שגוי, 0x%02X"
-#, c-format
+#, fuzzy, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
-msgstr ""
+msgstr "קוד-תגובה שגוי, 0x%02X"
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "לא ניתן להתחבר"
msgid "Socket error"
msgstr "שגיאת שקע"
-#, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr ""
-"אבדה התקשורת עם שרת:\n"
-"%d, %s"
-
msgid "Unable to read from socket"
msgstr "אין אפשרות לקרוא מן השקע"
@@ -7583,11 +7805,11 @@ msgid "Connection lost"
msgstr "החיבור אבד"
#, fuzzy
-msgid "Get server ..."
+msgid "Getting server"
msgstr "קבע את המידע על המשתמש..."
#, fuzzy
-msgid "Request token"
+msgid "Requesting token"
msgstr "הבקשה נדחית"
msgid "Couldn't resolve host"
@@ -7598,16 +7820,13 @@ msgid "Invalid server or port"
msgstr "מספר שגיאה לא תקף."
#, fuzzy
-msgid "Connecting server ..."
-msgstr "שרת ההתחברות"
+msgid "Connecting to server"
+msgstr "מתחבר לשרת ה-SILC"
#, fuzzy
msgid "QQ Error"
msgstr "שגיאת QQid"
-msgid "Failed to send IM."
-msgstr "כישלון בשליחת הודעה."
-
#, fuzzy, c-format
msgid ""
"Server News:\n"
@@ -7617,6 +7836,10 @@ msgid ""
msgstr "ניתוב שרת ICQ"
#, fuzzy, c-format
+msgid "%s:%s"
+msgstr "%s (%s)"
+
+#, fuzzy, c-format
msgid "From %s:"
msgstr "מאת"
@@ -7626,13 +7849,14 @@ msgid ""
"%s"
msgstr "הנחיות שרת: %s"
-msgid "Unknow SERVER CMD"
-msgstr ""
+#, fuzzy
+msgid "Unknown SERVER CMD"
+msgstr "סיבה לא ידועה"
#, fuzzy, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
"משוב %s(0x%02X )\n"
"נשלח %s(0x%02X )\n"
@@ -7643,19 +7867,16 @@ msgstr ""
msgid "QQ Qun Command"
msgstr "פקודה"
-#, fuzzy, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr "אינך חבר/ה בקבוצה \"%s\"\n"
-
-msgid "Can not decrypt login reply"
+#, fuzzy
+msgid "Could not decrypt login reply"
msgstr "אין אפשרות לפיענוח המשוב בעת אימות משתמש"
#, fuzzy
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr "סיבה לא ידועה"
#, fuzzy
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr "סיבה לא ידועה"
#, c-format
@@ -8463,9 +8684,6 @@ msgstr "אירגון"
msgid "Unit"
msgstr "יחידה"
-msgid "Note"
-msgstr "הערה"
-
msgid "Join Chat"
msgstr "הצטרף לצ'אט"
@@ -9106,6 +9324,10 @@ msgstr "לא ניתן למצוא כתובת שרת"
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr "אסור לשמות משתמשים של SIP להכיל רווחים או סמלי @"
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "פורט השרת"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -9140,192 +9362,12 @@ msgid "Auth Domain"
msgstr "דומיין לאימות"
#, c-format
-msgid "Looking up %s"
-msgstr "מחפש את %s..."
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "ההתחברות אל %s לא הצליחה."
-
-#, c-format
-msgid "Signon: %s"
-msgstr "מתחבר: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "אין אפשרות לכתוב אל הקובץ %s"
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "אין אפשרות לקרוא את הקובץ %s."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "הודעה ארוכה מדי, %s הבייטים האחרונים נקטמו."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s אינו מחובר כרגע."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "אזהרה של %s אינה מותרת."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "אבדה הודעה; אתה עובר על הגבלת המהירות של השרת."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "צ'אט ב-%s אינו זמין."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "אתה שולח הודעות אל %s מהר מדיי."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "פספסת הודעה מ-%s כיוון שהיא הייתה ארוכה מדי."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "פספסת הודעה מ-%s כיוון שהיא נשלחה מהר מדי."
-
-#, c-format
-msgid "Failure."
-msgstr "כישלון."
-
-#, c-format
-msgid "Too many matches."
-msgstr "יותר מידי תוצאות"
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "החיפוש זקוק ליותר מגדירים."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "שירות המדריך אינו זמין זמנית."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "חיפוש הדוא\"ל מוגבל."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "יתעלם ממילת המפתח."
-
-#, c-format
-msgid "No keywords."
-msgstr "אין מילות מפתח."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "אין מידע עבור משתמש זה"
-
-#, c-format
-msgid "Country not supported."
-msgstr "המדינה אינה נתמכת."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "כשל מוכר: %s"
-
-#, c-format
-msgid "Incorrect username or password."
-msgstr "שם משתמש או סיסמא שגויים."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "השירות אינו זמין זמנית."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "רמת האזהרה שלך גבוהה מדיי כרגע מכדי להיכנס למערכת."
-
-#, c-format
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
-msgstr ""
-"התחברת והתנתקת בתדירות גבוהה מדיי. המתן 10 דקות ונסה שנית. אם תמשיך לנסות, "
-"תיאלץ להמתין אפילו יותר."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "ארעה שגיאה לא ידועה בזמן ניסיון לפתיחת %s"
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "ארעה שגיאה לא מוכרת, %d, מידע: %s"
-
-msgid "Invalid Groupname"
-msgstr "שם הקבוצה שגוי"
-
-msgid "Connection Closed"
-msgstr "החיבור נסגר."
-
-msgid "Waiting for reply..."
-msgstr "ממתין לתשובה..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "TOC חזר מן ה-pause שלו. ניתן לשלוח הודעות שוב."
-
-msgid "Password Change Successful"
-msgstr "הסיסמה שלך שונתה בהצלחה."
-
-msgid "_Group:"
-msgstr "_קבוצה:"
-
-msgid "Get Dir Info"
-msgstr "השג מידע על המשתמש"
-
-msgid "Set Dir Info"
-msgstr "קבע מידע על המשתמש"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "לא ניתן לפתוח %s לכתיבה"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "כשל בהעברת הקובץ, כנראה צד שני ביטל"
-
-msgid "Could not connect for transfer."
-msgstr "לא ניתן לחבר את ההעברה."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "לא ניתן לכתוב את רישת הקובץ. הקובץ לא יועבר."
-
-msgid "Save As..."
-msgstr "שמור בשם..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s מבקש מ-%s לקבל %d קובץ: %s (%.2f %s)%s%s"
-msgstr[1] "%s מבקש מ-%s לקבל %d קבצים: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s מבקש/ת ממך לשלוח לו/לה קובץ"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "תוסף פרוטוקול TOC"
-
-#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr "%s שלח לך"
+msgid "Your SMS was not delivered"
+msgstr ""
+
msgid "Your Yahoo! message did not get sent."
msgstr "הודעת ה Yahoo שלך לא נשלחה."
@@ -9586,13 +9628,9 @@ msgstr "קישור מגניב 3"
msgid "Last Update"
msgstr "עודכן לאחרונה"
-#, c-format
-msgid "User information for %s unavailable"
-msgstr "פרטי המשתמש %s אינם זמינים"
-
+#, fuzzy
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr "סליחה, אך נראה כי פרופיל זה הוא בשפה או פורמט שלא נתמכים כרגע."
msgid ""
@@ -9912,9 +9950,6 @@ msgstr "נא לא להפריע"
msgid "Extended away"
msgstr "העדרות ממושכת"
-msgid "Mobile"
-msgstr "נייד"
-
msgid "Listening to music"
msgstr "מקשיב/ה למוזיקה"
@@ -9956,17 +9991,6 @@ msgstr "+++ %s החל בפעילות"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "שגיאה בקריאת %s"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"חלה שגיאה בעת קריאת ה-%s שלך. הם לא נטענו, ושם הקובץ הישן הוחלף ל-%s~."
-
msgid "Calculating..."
msgstr "מחשב..."
@@ -10041,6 +10065,12 @@ msgstr "שגיאה בכתיבה לתוך %s: %s"
msgid "Unable to connect to %s: %s"
msgstr "לא ניתן להתחבר אל %s: %s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr "השרת דורש TLS/SSL להתחברות. לא נמצאה תמיכה ל-TLS/SSL."
+
#, c-format
msgid " - %s"
msgstr " - %s"
@@ -10074,6 +10104,17 @@ msgstr "החיבור סורב."
msgid "Address already in use."
msgstr "כתובת כבר בשימוש."
+#, c-format
+msgid "Error Reading %s"
+msgstr "שגיאה בקריאת %s"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"חלה שגיאה בעת קריאת ה-%s שלך. הם לא נטענו, ושם הקובץ הישן הוחלף ל-%s~."
+
msgid "Internet Messenger"
msgstr "למסרים באינטרנט"
@@ -10116,10 +10157,8 @@ msgstr "הודעה על דואר חדש"
msgid "Use this buddy _icon for this account:"
msgstr "השתמש בתמונה זו לחשבון זה:"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s אפשרויות"
+msgid "_Advanced"
+msgstr "_מתקדם"
msgid "Use GNOME Proxy Settings"
msgstr "השתמש בהגדרות פרוקסי של GNOME"
@@ -10154,9 +10193,6 @@ msgstr "אם תביט ממש מקרוב"
msgid "you can see the butterflies mating"
msgstr "ניתן לראות פרפרים מזדווגים"
-msgid "Proxy Options"
-msgstr "אפשרויות פרוקסי"
-
msgid "Proxy _type:"
msgstr "סוג ה_פרוקסי"
@@ -10184,8 +10220,9 @@ msgstr "_בסיסי"
msgid "Create _this new account on the server"
msgstr "צור חשבון חדש זה על השרת"
-msgid "_Advanced"
-msgstr "_מתקדם"
+#, fuzzy
+msgid "_Proxy"
+msgstr "מתווך"
msgid "Enabled"
msgstr "פעיל"
@@ -10259,6 +10296,17 @@ msgstr "הצג _פרטים"
msgid "I_M"
msgstr "הודעה"
+#, fuzzy
+msgid "_Audio Call"
+msgstr "הוסף שיחה"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "שיחת וידאו"
+
msgid "_Send File..."
msgstr "שלח קובץ..."
@@ -10393,6 +10441,10 @@ msgstr "/כלים/ת_גובות פעילות אנשי קשר"
msgid "/Tools/_Certificates"
msgstr "/כלים/תעודות"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/כלים/_חייכן"
+
msgid "/Tools/Plu_gins"
msgstr "/כלים/תו_ספים"
@@ -10402,9 +10454,6 @@ msgstr "/כלים/_העדפות"
msgid "/Tools/Pr_ivacy"
msgstr "/כלים/_פרטיות"
-msgid "/Tools/Smile_y"
-msgstr "/כלים/_חייכן"
-
msgid "/Tools/_File Transfers"
msgstr "/כלים/העברת _קבצים..."
@@ -10522,8 +10571,8 @@ msgstr "ידנית"
msgid "By status"
msgstr "לפי מצב"
-msgid "By log size"
-msgstr "לפי גודל יומן השיחות"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10539,6 +10588,9 @@ msgstr "התחבר מחדש"
msgid "Re-enable"
msgstr "הפעל מחדש"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr "ברוך שובך!"
@@ -10623,6 +10675,9 @@ msgstr ""
msgid "A_lias:"
msgstr "שם:"
+msgid "_Group:"
+msgstr "_קבוצה:"
+
msgid "Auto_join when account becomes online."
msgstr "הצטרפות אוטומטית כאשר החשבון נעשה מקוון."
@@ -10674,12 +10729,6 @@ msgstr "אינך מחובר/ת בחשבון שיכול להזמין את איש
msgid "Invite Buddy Into Chat Room"
msgstr "הזמן איש קשר לתוך חדר צ'אט"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr "יש להזין את שם המשתמש שברצונך להזמין, יחד עם הודעת הזמנה אופציונלית."
-
msgid "_Buddy:"
msgstr "_איש הקשר:"
@@ -10754,6 +10803,22 @@ msgstr "/שיחה/_שמור בשם..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/שיחה/נ_קה גלילה לאחור"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/שיחה/_עוד"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/שיחה/_עוד"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/שיחה/_עוד"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/שיחה/ה_צג יומן שיחות"
+
msgid "/Conversation/Se_nd File..."
msgstr "/שיחה/ש_לח קובץ..."
@@ -10826,6 +10891,18 @@ msgstr "/שיחה"
msgid "/Conversation/View Log"
msgstr "/שיחה/הצג יומן שיחות"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/שיחה/עוד"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/שיחה/הצג יומן שיחות"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/שיחה/עוד"
+
msgid "/Conversation/Send File..."
msgstr "/שיחה/שלח קובץ..."
@@ -11009,6 +11086,9 @@ msgstr "אמן"
msgid "Ka-Hing Cheung"
msgstr "קא-הינג צ'אונג"
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "תמיכה"
@@ -11150,6 +11230,10 @@ msgstr "גאורגנית (גרוזינית)"
msgid "Ubuntu Georgian Translators"
msgstr "מתרגמי הגרוזינית של אובונטו"
+#, fuzzy
+msgid "Khmer"
+msgstr "אחר"
+
msgid "Kannada"
msgstr "קאנאדית"
@@ -11171,6 +11255,10 @@ msgstr "ליטואנית"
msgid "Macedonian"
msgstr "מקדונית"
+#, fuzzy
+msgid "Mongolian"
+msgstr "מקדונית"
+
msgid "Bokmål Norwegian"
msgstr "נורבגית ספרותית"
@@ -11284,7 +11372,24 @@ msgstr ""
"זו.<BR><BR>"
#, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, fuzzy, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin ב- irc.freenode.net<BR><BR>"
+
+#, fuzzy, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin ב- irc.freenode.net<BR><BR>"
msgid "Current Developers"
@@ -11584,15 +11689,6 @@ msgstr "הגופן בו תוצג התרעת ההקלדה"
msgid "Enable typing notification"
msgstr "הפעל התרעת הקלדה"
-msgid "_Copy Email Address"
-msgstr "העתק _כתובת הדוא\"ל"
-
-msgid "_Open Link in Browser"
-msgstr "_פתח את הקישור בדפדפן"
-
-msgid "_Copy Link Location"
-msgstr "ה_עתק מיקום הקישור"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -11831,13 +11927,14 @@ msgstr "עיין בספריית יומני-הרישום"
msgid "%s %s. Try `%s -h' for more information.\n"
msgstr "%s %s. יש לנסות את '%s –h' למידע נוסף.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -11860,13 +11957,14 @@ msgstr ""
" --display=DISPLAY מספר התצוגה להשתמש בו בחלונות X\n"
" -v, --version הצג את הגירסאשל התוכנה וצא\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -11923,11 +12021,27 @@ msgstr ""
msgid "Pidgin"
msgstr "פידג'ין"
-msgid "Open All Messages"
-msgstr "פתח את כל ההודעות"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">דואר חדש נכנס!</span>"
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "מחשב..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -11956,6 +12070,27 @@ msgid ""
"The 'Manual' browser command has been chosen, but no command has been set."
msgstr "נבחרה לביצוע הפקודה 'הידנית' של הדפדפן, אבל לא נקבעה הוראה לביצוע."
+msgid "Open All Messages"
+msgstr "פתח את כל ההודעות"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">דואר חדש נכנס!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "צור תגובת פעילות חדשה"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">דואר חדש נכנס!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "הודעת לא מוכרת"
+
msgid "The following plugins will be unloaded."
msgstr "התוספים שלהלן ייפרקו מן הזיכרון."
@@ -12002,6 +12137,10 @@ msgstr "<b>פרטי התוסף</b>"
msgid "Select a file"
msgstr "בחר קובץ"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "ערוך שינויים בתגובת פעילות"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "למי להגיב"
@@ -12072,6 +12211,50 @@ msgstr "חוזר"
msgid "Pounce Target"
msgstr "מטרת התגובה"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "מתחיל/ה להקליד"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "עוצר בעת הקלדה"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "מתחבר"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s חזר לפעילות (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "חוזר/ת למחשב"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "הפסיק/ה להקליד"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "מתנתק"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "חסר/ת פעילות"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "כאשר מרוחק"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "שלח הודעה"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "אירעה פעילות לא מוכרת. אנא דווח על כך!"
+
msgid "Smiley theme failed to unpack."
msgstr "כישלון בעת פתיחת ערכת סמייליים"
@@ -12094,6 +12277,12 @@ msgstr "קיצורי-מקלדת"
msgid "Cl_ose conversations with the Escape key"
msgstr "_סגור חלונות שיחה עם כפתור האסקייפ"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "רשימת אנשי קשר"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "סמל מגש המערכת"
@@ -12204,9 +12393,6 @@ msgstr "לא יכול להפעיל את תוכנת הגדרת שרת התיוו
msgid "Cannot start browser configuration program."
msgstr "לא יכול להפעיל את תוכנת הגדרות הדפדפן."
-msgid "ST_UN server:"
-msgstr "שרת STUN:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">לדוגמא: stunserver.org</span>"
@@ -12231,6 +12417,10 @@ msgstr "יציאה _ראשונה:"
msgid "_End port:"
msgstr "יציאה _אחרונה:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr "שרת תיווך ודפדפן"
@@ -12259,6 +12449,10 @@ msgstr "הגדרות המתווך"
msgid "No proxy"
msgstr "ללא מתווך"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "_משתמש:"
@@ -12420,12 +12614,12 @@ msgstr "כאשר מרוחק וגם חסר פעילות"
msgid "Auto-away"
msgstr "ריחוק אוטומטי"
-msgid "Change status when _idle"
-msgstr "קבע ריחוק בעת חוסר פעילות"
-
msgid "_Minutes before becoming idle:"
msgstr "_דקות לפני קביעת ריחוק:"
+msgid "Change status when _idle"
+msgstr "קבע ריחוק בעת חוסר פעילות"
+
msgid "Change _status to:"
msgstr "שנה ריחוק ל:"
@@ -12573,6 +12767,12 @@ msgstr "שמור והשתמש"
msgid "Status for %s"
msgstr "מצב עבור %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
msgid "Custom Smiley"
msgstr "חייכן שלך"
@@ -12582,14 +12782,14 @@ msgstr "נחוץ מידע נוסף"
msgid "Please provide a shortcut to associate with the smiley."
msgstr "נא להזין קיצור-דרך לקשר עם החייכן."
-msgid "Duplicate Shortcut"
-msgstr "כפילות בקיצורי-הדרך"
-
+#, fuzzy, c-format
msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
+"A custom smiley for '%s' already exists. Please use a different shortcut."
msgstr "חייכן שלך כבר קיים לקיצור-הדרך שנבחר. יש לבחור קיצור-דרך אחר."
+msgid "Duplicate Shortcut"
+msgstr "כפילות בקיצורי-הדרך"
+
msgid "Please select an image for the smiley."
msgstr "יש לבחור תמונה עבור החייכן."
@@ -12599,16 +12799,22 @@ msgstr "_ערוך חייכן"
msgid "Add Smiley"
msgstr "הוס_ף חייכן"
-msgid "Smiley _Image"
-msgstr "_תמונת חייכן"
+#, fuzzy
+msgid "_Image:"
+msgstr "תמונה"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr "קיצורים ל_חייכנים"
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "קיצור-דרך"
msgid "Smiley"
msgstr "חייכן"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "קיצור-דרך"
+
msgid "Custom Smiley Manager"
msgstr "מנהל החייכנים שלך"
@@ -12728,6 +12934,16 @@ msgid ""
"Failed to load image '%s': reason not known, probably a corrupt image file"
msgstr "כישלון בעת טעינת התמונה '%s': סיבה לא ידועה, כנראה קובץ תמונה פגום"
+#, fuzzy
+msgid "_Open Link"
+msgstr "_פתח את הקישור בדפדפן הבא:"
+
+msgid "_Copy Link Location"
+msgstr "ה_עתק מיקום הקישור"
+
+msgid "_Copy Email Address"
+msgstr "העתק _כתובת הדוא\"ל"
+
msgid "Save File"
msgstr "שמור קובץ"
@@ -13685,9 +13901,6 @@ msgstr "וודא שחלון רשימת אנשי הקשר תמיד עליו_ן:"
msgid "Only when docked"
msgstr "רק בעגינה"
-msgid "_Flash window when chat messages are received"
-msgstr "_הבהב את חלון השיחה בעת קבלת הודעות צ'אט"
-
msgid "Windows Pidgin Options"
msgstr "הגדרות פידג'ין לחלונות"
@@ -13737,6 +13950,228 @@ msgstr "שלח וקבל סטנזות XMPP גולמיות."
msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr "תוסף זה שימושי לניפוי באגים בשרתים ולקוחות של XMPP."
+#~ msgid "Invite message"
+#~ msgstr "הודעת הזמנה"
+
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "יש להזין את שם המשתמש שברצונך להזמין,\n"
+#~ "יחד עם הודעת הזמנה אופציונלית."
+
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "לא יכול לאחזר את רשימת הכתובות של MSN"
+
+#~ msgid "Connection to server lost (no data received within %d second)"
+#~ msgid_plural ""
+#~ "Connection to server lost (no data received within %d seconds)"
+#~ msgstr[0] "אבד החיבור אל השרת (לא התקבל מידע תוך %d שניה)"
+#~ msgstr[1] "אבד החיבור אל השרת (לא התקבל מידע תוך %d שניות)"
+
+#~ msgid ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+#~ msgstr ""
+#~ "ייתכן ותנותק/י בקרוב. אולי תרצ/י להיעזר ב-TOC עד אשר זה יתוקן. אפשר לבדוק "
+#~ "ב%s לעידכונים."
+
+#, fuzzy
+#~ msgid "Add buddy Q&A"
+#~ msgstr "הוסף איש קשר"
+
+#, fuzzy
+#~ msgid "Can not decrypt get server reply"
+#~ msgstr "אין אפשרות לפיענוח המשוב בעת אימות משתמש"
+
+#~ msgid "Keep alive error"
+#~ msgstr "שגיאה בהשאר-חי"
+
+#~ msgid ""
+#~ "Lost connection with server:\n"
+#~ "%d, %s"
+#~ msgstr ""
+#~ "אבדה התקשורת עם שרת:\n"
+#~ "%d, %s"
+
+#, fuzzy
+#~ msgid "Connecting server ..."
+#~ msgstr "שרת ההתחברות"
+
+#~ msgid "Failed to send IM."
+#~ msgstr "כישלון בשליחת הודעה."
+
+#, fuzzy
+#~ msgid "Not a member of room \"%s\"\n"
+#~ msgstr "אינך חבר/ה בקבוצה \"%s\"\n"
+
+#~ msgid "Looking up %s"
+#~ msgstr "מחפש את %s..."
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "ההתחברות אל %s לא הצליחה."
+
+#~ msgid "Signon: %s"
+#~ msgstr "מתחבר: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "אין אפשרות לכתוב אל הקובץ %s"
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "אין אפשרות לקרוא את הקובץ %s."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "הודעה ארוכה מדי, %s הבייטים האחרונים נקטמו."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s אינו מחובר כרגע."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "אזהרה של %s אינה מותרת."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr "אבדה הודעה; אתה עובר על הגבלת המהירות של השרת."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "צ'אט ב-%s אינו זמין."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "אתה שולח הודעות אל %s מהר מדיי."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "פספסת הודעה מ-%s כיוון שהיא הייתה ארוכה מדי."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr "פספסת הודעה מ-%s כיוון שהיא נשלחה מהר מדי."
+
+#~ msgid "Failure."
+#~ msgstr "כישלון."
+
+#~ msgid "Too many matches."
+#~ msgstr "יותר מידי תוצאות"
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "החיפוש זקוק ליותר מגדירים."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "שירות המדריך אינו זמין זמנית."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "חיפוש הדוא\"ל מוגבל."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "יתעלם ממילת המפתח."
+
+#~ msgid "No keywords."
+#~ msgstr "אין מילות מפתח."
+
+#~ msgid "User has no directory information."
+#~ msgstr "אין מידע עבור משתמש זה"
+
+#~ msgid "Country not supported."
+#~ msgstr "המדינה אינה נתמכת."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "כשל מוכר: %s"
+
+#~ msgid "Incorrect username or password."
+#~ msgstr "שם משתמש או סיסמא שגויים."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "השירות אינו זמין זמנית."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "רמת האזהרה שלך גבוהה מדיי כרגע מכדי להיכנס למערכת."
+
+#~ 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 ""
+#~ "התחברת והתנתקת בתדירות גבוהה מדיי. המתן 10 דקות ונסה שנית. אם תמשיך "
+#~ "לנסות, תיאלץ להמתין אפילו יותר."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "ארעה שגיאה לא ידועה בזמן ניסיון לפתיחת %s"
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "ארעה שגיאה לא מוכרת, %d, מידע: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "שם הקבוצה שגוי"
+
+#~ msgid "Connection Closed"
+#~ msgstr "החיבור נסגר."
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "ממתין לתשובה..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "TOC חזר מן ה-pause שלו. ניתן לשלוח הודעות שוב."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "הסיסמה שלך שונתה בהצלחה."
+
+#~ msgid "Get Dir Info"
+#~ msgstr "השג מידע על המשתמש"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "קבע מידע על המשתמש"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "לא ניתן לפתוח %s לכתיבה"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr "כשל בהעברת הקובץ, כנראה צד שני ביטל"
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "לא ניתן לחבר את ההעברה."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "לא ניתן לכתוב את רישת הקובץ. הקובץ לא יועבר."
+
+#~ msgid "Save As..."
+#~ msgstr "שמור בשם..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s מבקש מ-%s לקבל %d קובץ: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s מבקש מ-%s לקבל %d קבצים: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s מבקש/ת ממך לשלוח לו/לה קובץ"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "תוסף פרוטוקול TOC"
+
+#~ msgid "User information for %s unavailable"
+#~ msgstr "פרטי המשתמש %s אינם זמינים"
+
+#~ msgid "%s Options"
+#~ msgstr "%s אפשרויות"
+
+#~ msgid "Proxy Options"
+#~ msgstr "אפשרויות פרוקסי"
+
+#~ msgid "By log size"
+#~ msgstr "לפי גודל יומן השיחות"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_פתח את הקישור בדפדפן"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "שרת STUN:"
+
+#~ msgid "Smiley _Image"
+#~ msgstr "_תמונת חייכן"
+
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "קיצורים ל_חייכנים"
+
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "_הבהב את חלון השיחה בעת קבלת הודעות צ'אט"
+
#~ msgid "A group with the name already exists."
#~ msgstr "קבוצה בשם זה כבר קיימת."
@@ -13834,13 +14269,6 @@ msgstr "תוסף זה שימושי לניפוי באגים בשרתים ולקו
#~ msgid "Change Qun information"
#~ msgstr "מידע על הערוץ"
-#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr "%s (%s)"
-
#~ msgid "System Message"
#~ msgstr "הודעת מערכת"
diff --git a/po/hi.po b/po/hi.po
index 028a883b78..43c121a630 100644
--- a/po/hi.po
+++ b/po/hi.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
+"POT-Creation-Date: 2009-04-30 10:38-0400\n"
"PO-Revision-Date: 2005-05-29 20:43+0530\n"
"Last-Translator: Akash <akash@ncb.ernet.in>\n"
"Language-Team: Akash <matrubhasha@ncb.ernet.in>\n"
@@ -30,7 +30,7 @@ msgid ""
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -649,21 +649,6 @@ msgstr ""
msgid "Send To"
msgstr "ऐसे भेजें(_S)"
-#, fuzzy
-msgid "Invite message"
-msgstr "(1 सन्देश)"
-
-msgid "Invite"
-msgstr "आमंत्रण दें"
-
-#, fuzzy
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"कृपया उपयोगकर्ता का नाम डालिए जिन्हे आप आमंत्रित करना चाहते हैं। अगर आप चाहे तो आमंत्रण "
-"संदेश भी भेज सकते हैं।"
-
# Conversations
#, fuzzy
msgid "Conversation"
@@ -943,6 +928,42 @@ msgid "System Log"
msgstr "तंत्र लौग"
#, fuzzy
+msgid "Calling ... "
+msgstr "गणना जारी..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "स्वीकारें"
+
+#, fuzzy
+msgid "Reject"
+msgstr "पुनः स्थापित करो"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "आप चैनल छोड़ चुके हैं%s%s"
+
+msgid "call: Make an audio call."
+msgstr ""
+
+#, fuzzy
msgid "Emails"
msgstr "इमेल"
@@ -980,6 +1001,9 @@ msgstr "कनेक्ट कर रहा है"
msgid "IM"
msgstr "आईएम(IM)"
+msgid "Invite"
+msgstr "आमंत्रण दें"
+
#, fuzzy
msgid "(none)"
msgstr "(कोई नाम नहीं)"
@@ -1207,7 +1231,6 @@ msgstr "%s अनुपस्थित है। (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s आपको भेजना चाहता है %s (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "अज्ञात झपटा घटना। कृप्या इसकी रपट करें!"
@@ -1264,7 +1287,6 @@ msgid "Change status to"
msgstr "पता बदलें:"
# Conversations
-#. Conversations
msgid "Conversations"
msgstr "वार्तालाप"
@@ -1625,7 +1647,6 @@ msgstr ""
"जब नया वार्तालाप खोला जाता है तो यह प्लगइन पिछले वार्तालाप को वर्तमान वार्तालाप में "
"जोड़ देता है."
-#, c-format
msgid "Online"
msgstr "ऑनलाइन"
@@ -1674,6 +1695,28 @@ msgstr ""
msgid "Lastlog plugin."
msgstr ""
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "यू आर एल"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
# And now for the buttons
#, fuzzy
msgid "accounts"
@@ -1783,14 +1826,6 @@ msgstr "चैट आमंत्रण स्वीकारें?"
msgid "SSL Certificate Verification"
msgstr ""
-#. Number of actions
-msgid "Accept"
-msgstr "स्वीकारें"
-
-#, fuzzy
-msgid "Reject"
-msgstr "पुनः स्थापित करो"
-
msgid "_View Certificate..."
msgstr ""
@@ -1931,6 +1966,18 @@ msgstr "%s ने कक्ष से प्रस्थान किया ।"
msgid "%s left the room (%s)."
msgstr "%s ने कक्ष से प्रस्थान किया (%s)।"
+#, fuzzy
+msgid "Invite to chat"
+msgstr "सम्मेलन आरम्भ करें"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"कृपया उपयोगकर्ता का नाम डालिए जिन्हे आप आमंत्रित करना चाहते हैं। अगर आप चाहे तो आमंत्रण "
+"संदेश भी भेज सकते हैं।"
+
#, fuzzy, c-format
msgid "Failed to get connection: %s"
msgstr "%s के लिए सीमोड तय करने में असफल"
@@ -2073,7 +2120,6 @@ msgstr "%s से फाइल स्थानांतर प्रार्थ
msgid "Transfer of file %s complete"
msgstr "%s का हस्तांतरण पूरा हुआ"
-#, c-format
msgid "File transfer complete"
msgstr "फ़ाइल हस्तांतरण पूरा हुआ"
@@ -2081,7 +2127,6 @@ msgstr "फ़ाइल हस्तांतरण पूरा हुआ"
msgid "You canceled the transfer of %s"
msgstr "आपने %s के स्थानांतर को रद्द किया"
-#, c-format
msgid "File transfer cancelled"
msgstr "फ़ाइल हस्तांतरण रद्द"
@@ -2270,7 +2315,6 @@ msgstr "(%s) %s <स्वतः जवाब दें>: %s\n"
msgid "You are using %s, but this plugin requires %s."
msgstr ""
-#, c-format
msgid "This plugin has not defined an ID."
msgstr ""
@@ -2815,6 +2859,32 @@ msgstr ""
msgid "Do not ask. Always save in pounce."
msgstr ""
+#, fuzzy
+msgid "One Time Password"
+msgstr "पासवर्ड बदलें"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -3049,7 +3119,6 @@ msgid ""
"Unable to establish connection with the local mDNS server. Is it running?"
msgstr ""
-#. Creating the options for the protocol
#, fuzzy
msgid "First name"
msgstr "पहिला नाम"
@@ -3089,6 +3158,11 @@ msgstr "याहू प्रोटोकाल प्लगइन"
msgid "Purple Person"
msgstr "नया व्यक्ति"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "नगर"
+
msgid "Bonjour"
msgstr ""
@@ -3282,13 +3356,13 @@ msgstr "चैट को अपनी बड्डी सूची में स
msgid "Add to chat..."
msgstr "चैट जोड़ें(_h)"
+#. Global
msgid "Available"
msgstr "उपलब्ध"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "दूर"
@@ -3663,6 +3737,17 @@ msgid ""
"invalid characters."
msgstr "आपका चुना खाता नाम सवर्र द्वारा अस्वीकार हो गया। शायद उसमें अवैध अश्रर मोजूद हैं।"
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "फ़ाइल पहले से है"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "उपनाम"
+
msgid "Cannot change nick"
msgstr "उपनाम नहीं बदल सकता"
@@ -3946,6 +4031,37 @@ msgstr "सवर्र द्वारा अवैध चुनौती"
msgid "SASL error"
msgstr "पढ़ने में त्रुटि"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "कोई कारण नहीं दिया"
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "असमर्थित आवर्तन"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr "सवर्र से एस एस एल कनेक्शन बनाने में त्रुटी।"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "नया कनेक्शन बनाने में असमर्थ।"
+
+msgid "Unable to create socket"
+msgstr "सोकेट बनाने में असमर्थ"
+
+msgid "Write error"
+msgstr "लिखने में त्रुटी"
+
msgid "Full Name"
msgstr "पूरा नाम"
@@ -4013,6 +4129,10 @@ msgstr "नगर"
msgid "Operating System"
msgstr "ऑपरेटिंग सिस्टम छिपायें"
+#, fuzzy
+msgid "Local Time"
+msgstr "स्थानिय फा़इल"
+
msgid "Last Activity"
msgstr ""
@@ -4250,7 +4370,6 @@ msgstr "चैटी"
msgid "Extended Away"
msgstr "बहुत देर के लिए अनुपस्थित"
-#, c-format
msgid "Do Not Disturb"
msgstr "परेशान ना करें"
@@ -4387,9 +4506,6 @@ msgstr "कक्ष खोजें"
msgid "You require encryption, but it is not available on this server."
msgstr ""
-msgid "Write error"
-msgstr "लिखने में त्रुटी"
-
#, fuzzy
msgid "Ping timeout"
msgstr "सादा टेक्स्ट्"
@@ -4399,13 +4515,10 @@ msgstr "पढ़ने में त्रुटि"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-msgid "Unable to create socket"
-msgstr "सोकेट बनाने में असमर्थ"
-
#, fuzzy
msgid "Invalid XMPP ID"
msgstr "अमान्य आई डी"
@@ -4413,6 +4526,10 @@ msgstr "अमान्य आई डी"
msgid "Invalid XMPP ID. Domain must be set."
msgstr ""
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "सर्वर से कनेक्ट करने में असफल।"
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "%s@%s का रेजिस्ट्रेशन सफल"
@@ -4506,9 +4623,18 @@ msgstr "प्रमाणित कर रहा है"
msgid "Re-initializing Stream"
msgstr "धारा की पुनः शुरुआत"
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr "अप्रमाणित"
+msgid "Mood"
+msgstr "स्वभाव"
+
+msgid "Now Listening"
+msgstr ""
+
msgid "Both"
msgstr "दोनो"
@@ -4530,12 +4656,6 @@ msgstr "कोई नहीं"
msgid "Subscription"
msgstr "सबस्क्रिप्शन"
-msgid "Mood"
-msgstr "स्वभाव"
-
-msgid "Now Listening"
-msgstr ""
-
#, fuzzy
msgid "Mood Text"
msgstr "स्वभाव"
@@ -4799,18 +4919,24 @@ msgstr "%s उपयोगकर्ता को लात मारने म
msgid "Unable to ping user %s"
msgstr "%s उपयोगकर्ता को निषेध करने में असमर्थ"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
+msgstr "ध्वनी चलाने में असर्मथ क्योंकि चुनी हुइ फा़इल (%s) नहीं है।"
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
+msgstr "ध्वनी चलाने में असर्मथ क्योंकि चुनी हुइ फा़इल (%s) नहीं है।"
#, fuzzy, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "ध्वनी चलाने में असर्मथ क्योंकि चुनी हुइ फा़इल (%s) नहीं है।"
+#, c-format
+msgid "Buzzing %s..."
+msgstr ""
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
#, fuzzy
@@ -4821,9 +4947,37 @@ msgstr "बज़्ज़!!"
msgid "%s has buzzed you!"
msgstr "उपयोगकर्ता ने आपको अवरोधित किया है"
-#, c-format
-msgid "Buzzing %s..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "%s को संदेश भेजने में असमर्थ"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr ""
+"%s को फा़इल हसतांत्रण में असर्मथ क्योंकि उपयोगकर्ता फा़इल हसतांत्रण समर्थन नहीं है करता।"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
msgstr ""
+"%s को फा़इल हसतांत्रण में असर्मथ क्योंकि उपयोगकर्ता फा़इल हसतांत्रण समर्थन नहीं है करता।"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "रजिस्ट्रेशन असफल रहा"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "कृप्या उस व्यक्ति का स्क्रीन नाम भरें जिसके बारे में आप जानकारी देखना चाहतें हैं।"
+
+#, fuzzy
+msgid "Select a Resource"
+msgstr "फाइल को चुनो"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "चैट शुरू करें(_C)"
msgid "config: Configure a chat room."
msgstr "कंफिग: चैट कमरे की संरचना करें।"
@@ -4985,6 +5139,21 @@ msgstr "चैट में शामिल होने में त्रु
msgid "Error in chat %s"
msgstr "चैट में त्रुटि %s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "फ़ाइल को खोलने में त्रुटि '"
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "फ़ाइल हस्तांतरण रद्द"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "चित्र संचय करने में असफल: %s\n"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -5012,10 +5181,6 @@ msgid "Please select the resource of %s to which you would like to send a file"
msgstr "कृप्या उस व्यक्ति का स्क्रीन नाम भरें जिसके बारे में आप जानकारी देखना चाहतें हैं।"
#, fuzzy
-msgid "Select a Resource"
-msgstr "फाइल को चुनो"
-
-#, fuzzy
msgid "Edit User Mood"
msgstr "उपयोगकर्ता ढंग"
@@ -5056,9 +5221,20 @@ msgstr "खाता"
msgid "Select an action"
msgstr "फाइल को चुनो"
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, fuzzy, c-format
+msgid "Unable to add \"%s\"."
+msgstr "%s फा़इल पढ़ने में असमर्थ।"
+
#, fuzzy
-msgid "Unable to retrieve MSN Address Book"
-msgstr "बड्डी सूची नहीं ला पाया"
+msgid "Buddy Add error"
+msgstr "बड्डी सूची त्रुटि"
+
+#, fuzzy
+msgid "The username specified does not exist."
+msgstr "डाली गयी सेक्योर आई डी कुंजी अवैध है।"
#, c-format
msgid "Buddy list synchronization issue in %s (%s)"
@@ -5288,7 +5464,7 @@ msgstr "बच्चों का पासपोर्ट माता-पि
msgid "Passport account not yet verified"
msgstr "पासपोर्ट खाता अभी तक सिद्ध नहीं"
-#, fuzzy, c-format
+#, fuzzy
msgid "Passport account suspended"
msgstr "पासपोर्ट खाता अभी तक सिद्ध नहीं"
@@ -5396,6 +5572,13 @@ msgstr "मोबाइल संदेश भेजें।"
msgid "Page"
msgstr "पन्ना"
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "चेतावनी दें"
+
msgid "Has you"
msgstr "के पास आप हैं"
@@ -5439,6 +5622,14 @@ msgid "Album"
msgstr ""
#, fuzzy
+msgid "Game Title"
+msgstr "शीर्षक"
+
+#, fuzzy
+msgid "Office Title"
+msgstr "शीर्षक"
+
+#, fuzzy
msgid "Set Friendly Name..."
msgstr "सरल नाम दृढ़ करें"
@@ -5663,8 +5854,9 @@ msgstr ""
"गेम उपयोगकर्ता कि प्रोफा़ल में कोइ जानकारी खोज नहीं सका। शायद इस नाम का उपयोगकर्ता "
"नहीं है।"
-msgid "Profile URL"
-msgstr "प्रोफा़इल यू आर एल"
+#, fuzzy
+msgid "View web profile"
+msgstr "जब आप ऑफलाइन हैं तब आज्ञा नहीं"
#. *< type
#. *< ui_requirement
@@ -5930,13 +6122,6 @@ msgstr "पता पुस्तक में जोङे "
msgid "Do you want to delete this buddy from your address book as well?"
msgstr "क्या आप इस बड्डी को बड्डी सूची मे डालना चाहतें हैं?"
-#. only notify the user about problems adding to the friends list
-#. * maybe we should do something else for other lists, but it probably
-#. * won't cause too many problems if we just ignore it
-#, fuzzy, c-format
-msgid "Unable to add \"%s\"."
-msgstr "%s फा़इल पढ़ने में असमर्थ।"
-
#, fuzzy
msgid "The username specified is invalid."
msgstr "डाली गयी सेक्योर आई डी कुंजी अवैध है।"
@@ -5944,6 +6129,9 @@ msgstr "डाली गयी सेक्योर आई डी कुंज
msgid "This Hotmail account may not be active."
msgstr ""
+msgid "Profile URL"
+msgstr "प्रोफा़इल यू आर एल"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5958,16 +6146,13 @@ msgstr ""
msgid "MSN Protocol Plugin"
msgstr "ऐ आई एम/आई सी क्यू प्रोटॅकोल प्लगइन"
-msgid "Missing Cipher"
-msgstr ""
-
-msgid "The RC4 cipher could not be found"
+#, c-format
+msgid "No such user: %s"
msgstr ""
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
-msgstr ""
+#, fuzzy
+msgid "User lookup"
+msgstr "उपभोक्ता कक्ष"
#, fuzzy
msgid "Reading challenge"
@@ -5981,11 +6166,19 @@ msgstr "सवर्र द्वारा अवैध चुनौती"
msgid "Logging in"
msgstr "लोग कर रहा है"
-#, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] ""
-msgstr[1] ""
+#, fuzzy
+msgid "MySpaceIM - No Username Set"
+msgstr "कोई स्क्रीन-नाम नहीं दिया है."
+
+msgid "You appear to have no MySpace username."
+msgstr ""
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr ""
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr "आपको सवर्र से डिसकनेक्ट्ड कर दिया गया।"
#. Can't write _()'d strings in array initializers. Workaround.
#, fuzzy
@@ -6008,14 +6201,22 @@ msgid "MySpace"
msgstr ""
#, fuzzy
-msgid "MySpaceIM - No Username Set"
-msgstr "कोई स्क्रीन-नाम नहीं दिया है."
+msgid "IM Friends"
+msgstr "आईएम विंडोस (_I)"
-msgid "You appear to have no MySpace username."
-msgstr ""
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+msgstr[1] ""
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
-msgstr ""
+#, fuzzy
+msgid "Add contacts from server"
+msgstr "सवर्र ने अवैध उत्तर दिया।"
#. The session is now set up, ready to be connected. This emits the
#. * signedOn signal, so clients can now do anything with msimprpl, and
@@ -6040,6 +6241,22 @@ msgid "MySpaceIM Error"
msgstr ""
#, fuzzy
+msgid "Invalid input condition"
+msgstr "कनेक्शन को निर्णायक कर रहा है"
+
+#, fuzzy
+msgid "Read buffer full (2)"
+msgstr "कतार पूरी"
+
+#, fuzzy
+msgid "Unparseable message"
+msgstr "संदेश पदभंजन में असमर्थ"
+
+#, fuzzy, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr "होस्ट से कनेक्टेड नहीं कर पाया"
+
+#, fuzzy
msgid "Failed to add buddy"
msgstr "बड्डी के साथ चैट में जुड़ने में असफल"
@@ -6051,14 +6268,6 @@ msgstr "सर्वर से बड्डी सूची का आयात
msgid "persist command failed"
msgstr "स्विच्बोर्ड विफल"
-#, c-format
-msgid "No such user: %s"
-msgstr ""
-
-#, fuzzy
-msgid "User lookup"
-msgstr "उपभोक्ता कक्ष"
-
#, fuzzy
msgid "Failed to remove buddy"
msgstr "बड्डी के साथ चैट में जुड़ने में असफल"
@@ -6070,39 +6279,16 @@ msgstr ""
msgid "blocklist command failed"
msgstr "स्विच्बोर्ड विफल"
-#, fuzzy
-msgid "Invalid input condition"
-msgstr "कनेक्शन को निर्णायक कर रहा है"
-
-#, fuzzy
-msgid "Read buffer full (2)"
-msgstr "कतार पूरी"
-
-#, fuzzy
-msgid "Unparseable message"
-msgstr "संदेश पदभंजन में असमर्थ"
-
-#, fuzzy, c-format
-msgid "Couldn't connect to host: %s (%d)"
-msgstr "होस्ट से कनेक्टेड नहीं कर पाया"
+msgid "Missing Cipher"
+msgstr ""
-#, fuzzy
-msgid "IM Friends"
-msgstr "आईएम विंडोस (_I)"
+msgid "The RC4 cipher could not be found"
+msgstr ""
-#, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-msgstr[1] ""
-
-#, fuzzy
-msgid "Add contacts from server"
-msgstr "सवर्र ने अवैध उत्तर दिया।"
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
msgid "Add friends from MySpace.com"
msgstr ""
@@ -6150,9 +6336,6 @@ msgstr "बड़ा फॉन्ट आकार"
msgid "User"
msgstr "उपयोगकर्ता"
-msgid "Profile"
-msgstr "प्रोफ़ाइल"
-
#, fuzzy
msgid "Headline"
msgstr "मना करें"
@@ -6169,17 +6352,6 @@ msgstr ""
msgid "Client Version"
msgstr "वार्तालाप बंद करें"
-#. Protocol won't log in now without a username set.. Disconnect
-#, fuzzy
-msgid "No username set"
-msgstr "कोई स्क्रीन-नाम नहीं दिया है."
-
-msgid "MySpaceIM - Please Set a Username"
-msgstr ""
-
-msgid "Please enter a username to check its availability:"
-msgstr ""
-
#, fuzzy
msgid "MySpaceIM - Username Available"
msgstr "सेवा उपलब्ध नहीं है "
@@ -6190,6 +6362,9 @@ msgstr ""
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr ""
+msgid "MySpaceIM - Please Set a Username"
+msgstr ""
+
#, fuzzy
msgid "This username is unavailable."
msgstr "इस थीम के पास कोइ स्माइली उपलब्ध नहीं है।"
@@ -6198,6 +6373,14 @@ msgstr "इस थीम के पास कोइ स्माइली उप
msgid "Please try another username:"
msgstr "कृपया चुने हुए समूह के लिए नया नाम भरें।"
+#. Protocol won't log in now without a username set.. Disconnect
+#, fuzzy
+msgid "No username set"
+msgstr "कोई स्क्रीन-नाम नहीं दिया है."
+
+msgid "Please enter a username to check its availability:"
+msgstr ""
+
#. TODO: icons for each zap
#. Lots of comments for translators:
#. Zap means "to strike suddenly and forcefully as if with a
@@ -6590,7 +6773,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr "त्रुटी । एस एस एल समर्थन स्थापित नहीं है।"
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr "यह सम्मेलन बंद कर दिया गया है। और संदेश नहीं भेजे जा सकते।"
@@ -6859,23 +7041,18 @@ msgstr "कॉमेरा"
msgid "Screen Sharing"
msgstr "स्क्रीन-नाम:"
-#, c-format
msgid "Free For Chat"
msgstr "चैट के लिए समय है"
-#, c-format
msgid "Not Available"
msgstr "उपलब्ध नहीं"
-#, c-format
msgid "Occupied"
msgstr "व्यस्त"
-#, c-format
msgid "Web Aware"
msgstr "वैब अवगत"
-#, c-format
msgid "Invisible"
msgstr "अद्रश्य"
@@ -6921,7 +7098,7 @@ msgstr ""
"किसी अक्षर से शुरु होना चाहीए और उसमें केवल अक्षर, अंक और खाली जगह होने चाहीए, नहीं तो "
"केवल अंक होने चाहीए।"
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
#, fuzzy
msgid "Invalid username."
@@ -6938,7 +7115,7 @@ msgstr "आपका खाता अभी निलंबित है।"
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "ऐ औ एल इंसटेंट मैसंजर सेवा अस्थाई रुप से उपलब्ध नहीं है।"
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6975,10 +7152,8 @@ msgstr "डिजीटल डिसप्ले से 6 अंको का
msgid "_OK"
msgstr "ठीक"
-#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
+#, fuzzy, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
msgstr ""
"आप जल्दी डिसकनेक्ट हो जाएंगे। जब तक यह ठीक होगा आप टी औ सी का प्रयोग करना चाहेंगे। "
"अपडेट्स के लिए %s देखें।"
@@ -7129,7 +7304,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] "आपको अज्ञात कारनों से साइन-ऑफ करा गया है।"
msgstr[1] "आपको अज्ञात कारनों से साइन-ऑफ करा गया है।"
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "संदेश भेजने में असमर्थ: %s"
@@ -7155,6 +7330,9 @@ msgstr "से औनलाइन"
msgid "Member Since"
msgstr "से सदस्य"
+msgid "Profile"
+msgstr "प्रोफ़ाइल"
+
msgid "Your AIM connection may be lost."
msgstr "आपका ऐ आई एम कनेक्शन शायद टूट गया है।"
@@ -7433,6 +7611,7 @@ msgstr "कनेक्ट"
msgid "Get AIM Info"
msgstr "जानकारी लाऐं"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "बड्डी टिप्पणी का संपादन\" "
@@ -7549,7 +7728,7 @@ msgstr "%s को %s पर कनेक्ट करने के लिए प
msgid "Attempting to connect to %s:%hu."
msgstr "%s को %s पर कनेक्ट करने का प्रयास कर रहा है:%hu सीधे आई एम के लिए।"
-#, fuzzy, c-format
+#, fuzzy
msgid "Attempting to connect via proxy server."
msgstr "%s को %s पर कनेक्ट करने का प्रयास कर रहा है:%hu सीधे आई एम के लिए।"
@@ -7662,7 +7841,7 @@ msgstr "ओपेरा(Opera)"
msgid "Visible"
msgstr "अद्रश्य"
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
#, fuzzy
@@ -7759,17 +7938,51 @@ msgstr "पिछली बार कब अपडेट किया गया\
msgid "Could not change buddy information."
msgstr "कृप्या झपटा मारने के लिए बड्डी का नाम भरें।"
-#, c-format
-msgid "%d needs Q&A"
+#, fuzzy
+msgid "Mobile"
+msgstr "मोबाइल फोन"
+
+msgid "Note"
+msgstr "नोट"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "बड्डी आइकोन"
+
+msgid "Change his/her memo as you like"
msgstr ""
#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "बड्डी चुनिये"
+msgid "_Modify"
+msgstr "बदलें(_M)"
-msgid "Input answer here"
+#, fuzzy
+msgid "Memo Modify"
+msgstr "बदलें(_M)"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "सर्वर व्यस्त है"
+
+msgid "Your request was accepted."
msgstr ""
+msgid "Your request was rejected."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%u requires verification"
+msgstr "प्रमाणिकरन का अनुरोध करें"
+
+#, fuzzy
+msgid "Add buddy question"
+msgstr "उपयोगकर्ता को अपनी बड्डी सूची में जोड़ें।"
+
+#, fuzzy
+msgid "Enter answer here"
+msgstr "फ़ाइल नहीं भेज सकता।"
+
msgid "Send"
msgstr "भेजो"
@@ -7781,19 +7994,20 @@ msgstr "अवैध पासवर्ड"
msgid "Authorization denied message:"
msgstr "प्रमाणिकरन मनाही संदेश:"
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr ""
#, fuzzy, c-format
-msgid "%d needs authentication"
+msgid "%u needs authorization"
msgstr "प्रमाणिकरन शुरु कर रहा है"
#, fuzzy
msgid "Add buddy authorize"
msgstr "उपयोगकर्ता को अपनी बड्डी सूची में जोड़ें।"
-msgid "Input request here"
-msgstr ""
+#, fuzzy
+msgid "Enter request here"
+msgstr "सम्मेलन सवर्र में घुसें"
#, fuzzy
msgid "Would you be my friend?"
@@ -7816,7 +8030,7 @@ msgid "Failed sending authorize"
msgstr "कृपया मुझे प्रमाणित करें!"
#, fuzzy, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr "बड्डी के साथ चैट में जुड़ने में असफल"
#, fuzzy, c-format
@@ -7862,6 +8076,10 @@ msgid "You can only search for permanent Qun\n"
msgstr ""
#, fuzzy
+msgid "(Invalid UTF-8 string)"
+msgstr "अवैध प्रोक्सी निर्धारण"
+
+#, fuzzy
msgid "Not member"
msgstr "से सदस्य"
@@ -7904,15 +8122,18 @@ msgstr "इस आवर्तन में दस से ज़्यादा
msgid "Join QQ Qun"
msgstr "चैट में शामिल हों"
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
+msgid "Input request here"
msgstr ""
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "टैलीफोन नंबर"
+
msgid "Successfully joined Qun"
msgstr ""
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
#, fuzzy
@@ -7923,7 +8144,7 @@ msgstr "धव्नि विकल्प"
msgid "Failed:"
msgstr "असफल हुआ"
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
#, fuzzy
@@ -7935,11 +8156,12 @@ msgid ""
"this operation will eventually remove this Qun."
msgstr ""
-msgid "Sorry, you are not our style ..."
-msgstr ""
+#, fuzzy
+msgid "Sorry, you are not our style"
+msgstr "माफ कीजीएगा, कुछ देर के लिए में बाहर गया था!"
#, fuzzy
-msgid "Successfully changed Qun member"
+msgid "Successfully changed Qun members"
msgstr "टैलीफोन नंबर"
#, fuzzy
@@ -7950,7 +8172,7 @@ msgid "You have successfully created a Qun"
msgstr ""
#, fuzzy
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr "क्या आप संवाद में शामिल होना चाहेंगे?"
#, fuzzy
@@ -7958,28 +8180,28 @@ msgid "Setup"
msgstr "नियत करें (_S)"
#, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr ""
#, c-format
-msgid "%d request to join Qun %d"
+msgid "%u request to join Qun %u"
msgstr ""
#, fuzzy, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr "बड्डी के साथ चैट में जुड़ने में असफल"
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr "बड्डी निकालें"
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "बड्डी निकालें"
# #-#-#-#-# gnome-applets.gnome-2-2.hi.po (gnome-applets 2.x) #-#-#-#-#
# gnome-session/gsm-client-row.c:43
@@ -8103,6 +8325,13 @@ msgstr "<b>उपभोक्ता:</b> %s<br>"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<b>उपनाम:</b> %s<br>"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<b>उपभोक्ता:</b> %s<br>"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -8110,7 +8339,7 @@ msgid "<i>Feel free to join us!</i> :)"
msgstr ""
#, fuzzy, c-format
-msgid "About OpenQ r%s"
+msgid "About OpenQ %s"
msgstr "गेम के बारे में"
#, fuzzy
@@ -8131,6 +8360,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "गेम के बारे में"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "घर का पता"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -8162,7 +8395,6 @@ msgstr ""
msgid "QQ2008"
msgstr ""
-#. #endif
#, fuzzy
msgid "Connect by TCP"
msgstr "कनेक्ट कर रहा है"
@@ -8175,6 +8407,9 @@ msgstr "कुछ विकल्प दिखाओ"
msgid "Show server news"
msgstr "कुछ विकल्प दिखाओ"
+msgid "Show chat room when msg comes"
+msgstr ""
+
#, fuzzy
msgid "Keep alive interval (seconds)"
msgstr "पढ़ने में त्रुटि"
@@ -8184,11 +8419,7 @@ msgid "Update interval (seconds)"
msgstr "पढ़ने में त्रुटि"
#, fuzzy
-msgid "Can not decrypt server reply"
-msgstr "सर्वर की जानकारी नहीं मिली"
-
-#, fuzzy
-msgid "Can not decrypt get server reply"
+msgid "Cannot decrypt server reply"
msgstr "सर्वर की जानकारी नहीं मिली"
#, c-format
@@ -8211,21 +8442,23 @@ msgid "Activation required"
msgstr "रजिस्ट्रेशन आवशयक"
#, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr ""
#, fuzzy
-msgid "Keep alive error"
-msgstr "पढ़ने में त्रुटि"
+msgid "Could not decrypt server reply"
+msgstr "सर्वर की जानकारी नहीं मिली"
-msgid "Requesting captcha ..."
-msgstr ""
+#, fuzzy
+msgid "Requesting captcha"
+msgstr "अस्पष्ट अनुरोध"
-msgid "Checking code of captcha ..."
+msgid "Checking captcha"
msgstr ""
-msgid "Failed captcha verify"
-msgstr ""
+#, fuzzy
+msgid "Failed captcha verification"
+msgstr "याहू! प्रमाणीकरण असफल"
#, fuzzy
msgid "Captcha Image"
@@ -8235,7 +8468,7 @@ msgstr "चित्र संचित करें"
msgid "Enter code"
msgstr "पासवर्ड बदलें"
-msgid "QQ Captcha Verifing"
+msgid "QQ Captcha Verification"
msgstr ""
#, fuzzy
@@ -8243,16 +8476,15 @@ msgid "Enter the text from the image"
msgstr "कृपया उस समूह का नाम भरीये जिसे आप जोड़ना चाहतें हैं।"
#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
+msgid "Unknown reply when checking password (0x%02X)"
msgstr ""
#, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
msgstr ""
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "कनेक्ट करने में असमर्थ"
@@ -8264,12 +8496,6 @@ msgstr "कनेक्ट करने में असमर्थ"
msgid "Socket error"
msgstr "अज्ञात त्रुटि"
-#, fuzzy, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr "आपको सवर्र से डिसकनेक्ट्ड कर दिया गया।"
-
#, fuzzy
msgid "Unable to read from socket"
msgstr "सोकेट पढ़ने में असमर्थ"
@@ -8283,11 +8509,11 @@ msgid "Connection lost"
msgstr "कनेक्शन बंद हो गया"
#, fuzzy
-msgid "Get server ..."
+msgid "Getting server"
msgstr "उपयोगकर्ता की जानकारी दृढ़ करें..."
#, fuzzy
-msgid "Request token"
+msgid "Requesting token"
msgstr "अनुरोध निषेध"
#, fuzzy
@@ -8299,17 +8525,13 @@ msgid "Invalid server or port"
msgstr "अवैध उपयोगकर्ता-नाम या पासवर्ड"
#, fuzzy
-msgid "Connecting server ..."
-msgstr "सर्वर कनेक्ट करें"
+msgid "Connecting to server"
+msgstr "एस एल आइ सी सर्वर से कनेक्शन कर रहा है"
#, fuzzy
msgid "QQ Error"
msgstr "पढ़ने में त्रुटि"
-#, fuzzy
-msgid "Failed to send IM."
-msgstr "वार्तालाप में जुड़ने में असफल"
-
#, fuzzy, c-format
msgid ""
"Server News:\n"
@@ -8319,6 +8541,10 @@ msgid ""
msgstr "आइ सी क्यू सवर्र रीले"
#, fuzzy, c-format
+msgid "%s:%s"
+msgstr "%s पे %s (%s)"
+
+#, fuzzy, c-format
msgid "From %s:"
msgstr "से"
@@ -8328,32 +8554,34 @@ msgid ""
"%s"
msgstr "सर्वर की जानकारी"
-msgid "Unknow SERVER CMD"
-msgstr ""
+# #-#-#-#-# gnome-applets.gnome-2-2.hi.po (gnome-applets 2.x) #-#-#-#-#
+# gnome-session/gsm-client-row.c:43
+# #-#-#-#-# gnome-session.gnome-2-2.hi.po (gnome-session VERSION) #-#-#-#-#
+# gnome-session/gsm-client-row.c:43
+#, fuzzy
+msgid "Unknown SERVER CMD"
+msgstr "अज्ञात कारण"
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
#, fuzzy
msgid "QQ Qun Command"
msgstr "कमांड"
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr ""
-
-msgid "Can not decrypt login reply"
-msgstr ""
+#, fuzzy
+msgid "Could not decrypt login reply"
+msgstr "सर्वर की जानकारी नहीं मिली"
# #-#-#-#-# gnome-applets.gnome-2-2.hi.po (gnome-applets 2.x) #-#-#-#-#
# gnome-session/gsm-client-row.c:43
# #-#-#-#-# gnome-session.gnome-2-2.hi.po (gnome-session VERSION) #-#-#-#-#
# gnome-session/gsm-client-row.c:43
#, fuzzy
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr "अज्ञात कारण"
# #-#-#-#-# gnome-applets.gnome-2-2.hi.po (gnome-applets 2.x) #-#-#-#-#
@@ -8361,7 +8589,7 @@ msgstr "अज्ञात कारण"
# #-#-#-#-# gnome-session.gnome-2-2.hi.po (gnome-session VERSION) #-#-#-#-#
# gnome-session/gsm-client-row.c:43
#, fuzzy
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr "अज्ञात कारण"
#, fuzzy, c-format
@@ -9237,9 +9465,6 @@ msgstr "संस्था"
msgid "Unit"
msgstr "इकाई"
-msgid "Note"
-msgstr "नोट"
-
msgid "Join Chat"
msgstr "चैट में शामिल हों"
@@ -9914,6 +10139,10 @@ msgstr "होस्ट का नाम ढूंड नहीं पाया
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr "आइ आर सी उपनामों में वाइटस्पेस नहीं हो सकती"
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "कुछ विकल्प दिखाओ"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -9955,192 +10184,10 @@ msgid "Auth Domain"
msgstr "स्वचालित"
#, c-format
-msgid "Looking up %s"
-msgstr "%s को देख रहा है"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "%s को कनेक्ट असफल"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "साइन-औन: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "%s फा़इल लिखने में असमर्थ।"
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "%s फा़इल पढ़ने में असमर्थ।"
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "संदेश बहुत लम्बा है, आखिर के %s बाइट काटें गये हैं।"
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s ने अभी लॉग-इन किया है"
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "%s के लिए चेतावनी पर पाबंदी है।"
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "एक संदेश को फैंक दिया गया, आप सवर्र की गति सीमा का उलंघन कर रहें है।"
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "%s में चैट उपलब्ध नहीं है।"
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "आप %s को संदेश बहुत तेज़ी से भेज रहें हैं।"
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "आपने एक %s से एक आइ एम खो दिया क्योंकि वह बहुत बड़ा था।"
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "आपने एक %s से एक आइ एम खो दिया क्योंकि वह बहुत तेज़ भेजा गया था।"
-
-#, c-format
-msgid "Failure."
-msgstr "असफलता।"
-
-#, c-format
-msgid "Too many matches."
-msgstr "बहुत सारी उपयुक्तियां"
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "और अधिक क्वालीफायर्स की आवशयकता है।"
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "डिर सेवा अस्थाई रुप से उपलब्ध नहीं है।"
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "इमेल का देखना सीमाबद्ध किया गया।"
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "कुंजीशब्द कि अपेक्षा हुई"
-
-#, c-format
-msgid "No keywords."
-msgstr "कोइ कुंजीशब्द नहीं।"
-
-#, c-format
-msgid "User has no directory information."
-msgstr "उपयोगकर्ता के पास कोइ डायरक्ट्री की जानकारी नहीं है।"
-
-#, c-format
-msgid "Country not supported."
-msgstr "देश समर्थित नहीं है"
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "अज्ञात असफलता: %s."
-
-#, fuzzy, c-format
-msgid "Incorrect username or password."
-msgstr "अवैध उपनाम या पासवर्ड"
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "यह सेवा अस्थाई तोर से उपलब्ध नहीं है।"
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "आपका चेतावनी स्तर लॉग-इन करने के लिए बहुत ऊँचा है।"
-
-#, c-format
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
+msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
-"आप लगातार जल्दी-जल्दी कनेक्ट और डिसकनेक्ट हो रहें हैं। दस मिनट प्रतीक्षा करें और फिर प्रयास "
-"करें। अगर आप प्रयास जारी रखेंगे तो आपको और ज़्यादा प्रतीक्षा करनी पड़ेगी।"
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "एक अज्ञात साइन-औन त्रुटी हुइ: %s।"
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "एक अज्ञात त्रुटी, %d , हुआ है। जानकारी: %s"
-
-#, fuzzy
-msgid "Invalid Groupname"
-msgstr "अवैध समूह-नाम"
-
-msgid "Connection Closed"
-msgstr "कनेक्शन बंद हो गया"
-
-msgid "Waiting for reply..."
-msgstr "उत्तर कि प्रतीक्षा कर रहें हैं"
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "टी औ सी ठहर कर वापस आया। अब आप संदेश भेज सकतें हैं।"
-
-msgid "Password Change Successful"
-msgstr "पासवर्ड बदलने में सफल"
-msgid "_Group:"
-msgstr "समूह:(_G)"
-
-msgid "Get Dir Info"
-msgstr "डिर जानकारी लायें"
-
-msgid "Set Dir Info"
-msgstr "डिर जानकारी दृढ़ करें..."
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "%s को खोल नहीं पाया लिखने के लिए!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "फा़इल हसतांत्रण विफल; शायद दूसरी और से रद्द हुआ।"
-
-msgid "Could not connect for transfer."
-msgstr "हसतांतरण करने के लिए कनेक्ट नहीं कर पाया।"
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "फा़इल का हैडर लिख नहीं पाया। यह फा़इन हसतांत्रित नहीं होगी।"
-
-#, fuzzy
-msgid "Save As..."
-msgstr "अइकॉन इस तरह संचित करें..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s आपसे फा़इल भेजने का अनुरोध कर रहें हैं"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "टीऔसी प्रोटोकॉल प्लगइन"
-
-#, c-format
-msgid "%s has sent you a webcam invite, which is not yet supported."
+msgid "Your SMS was not delivered"
msgstr ""
msgid "Your Yahoo! message did not get sent."
@@ -10420,14 +10467,9 @@ msgstr "बढ़ीया कड़ी 3"
msgid "Last Update"
msgstr "पिछली बार कब अपडेट किया गया\" "
-#, c-format
-msgid "User information for %s unavailable"
-msgstr "उपयोगकर्ता %s हेतु जानकारी उपलब्ध नहीं"
-
#, fuzzy
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr "क्षमा करें, यह प्रोफाइल जिस भाषा में है वह अभी तक समर्थित नहीं है।"
msgid ""
@@ -10773,10 +10815,6 @@ msgstr "परेशान ना करें"
msgid "Extended away"
msgstr "बहुत देर के लिए अनुपस्थित"
-#, fuzzy
-msgid "Mobile"
-msgstr "मोबाइल फोन"
-
msgid "Listening to music"
msgstr ""
@@ -10818,20 +10856,6 @@ msgstr "%s सक्रिय हो गया है."
msgid "%x %X"
msgstr ""
-#, fuzzy, c-format
-msgid "Error Reading %s"
-msgstr ""
-"%s:पढ़ने में त्रुटि\n"
-"%s.\n"
-
-#, 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 ""
-"आपकी बड्डी सूची के विश्लेषण करने में त्रुटि हुई. यह लोड नहीं हुआ है और पिछली फा़इल का नाम "
-"blist.xml~ रख दिया गया है."
-
msgid "Calculating..."
msgstr "गणना जारी..."
@@ -10914,6 +10938,14 @@ msgstr ""
msgid "Unable to connect to %s: %s"
msgstr "सर्वर से कनेक्ट नहीं कर पाया।"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+"सवर्र पर लॉग इन करने के लिए टी एल एस / एस एस एल चाहिए. टी एल एस / एस एस एल "
+"समर्थन नहीं मिला।"
+
#, c-format
msgid " - %s"
msgstr ""
@@ -10947,6 +10979,20 @@ msgstr "कनेक्शन बंद हो गया"
msgid "Address already in use."
msgstr "फ़ाइल पहले से है"
+#, fuzzy, c-format
+msgid "Error Reading %s"
+msgstr ""
+"%s:पढ़ने में त्रुटि\n"
+"%s.\n"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"आपकी बड्डी सूची के विश्लेषण करने में त्रुटि हुई. यह लोड नहीं हुआ है और पिछली फा़इल का नाम "
+"blist.xml~ रख दिया गया है."
+
#, fuzzy
msgid "Internet Messenger"
msgstr "इन्सटन्ट मैसेजर्स"
@@ -10995,10 +11041,13 @@ msgstr "नयी डाक की सूचनाऐँ"
msgid "Use this buddy _icon for this account:"
msgstr ""
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s के विकल्प"
+# #-#-#-#-# anjuta.ANJUTA_1_2_0.hi.po (anjuta2 VERSION) #-#-#-#-#
+# #-#-#-#-# gnome-session.HEAD.hi.po (gnome-session VERSION) #-#-#-#-#
+# gnome-session/session-properties.c:179
+# Cancel button.
+#, fuzzy
+msgid "_Advanced"
+msgstr "रद्द(_C)"
#, fuzzy
msgid "Use GNOME Proxy Settings"
@@ -11034,9 +11083,6 @@ msgstr "अगर आप ध्यान से देखें"
msgid "you can see the butterflies mating"
msgstr "आप तितलीयों को मिलते देख सकतें हैं"
-msgid "Proxy Options"
-msgstr "प्रोक्सी विकल्प"
-
msgid "Proxy _type:"
msgstr "प्रोक्सी की प्रकार(_t):"
@@ -11067,13 +11113,9 @@ msgstr "पीछे"
msgid "Create _this new account on the server"
msgstr ""
-# #-#-#-#-# anjuta.ANJUTA_1_2_0.hi.po (anjuta2 VERSION) #-#-#-#-#
-# #-#-#-#-# gnome-session.HEAD.hi.po (gnome-session VERSION) #-#-#-#-#
-# gnome-session/session-properties.c:179
-# Cancel button.
#, fuzzy
-msgid "_Advanced"
-msgstr "रद्द(_C)"
+msgid "_Proxy"
+msgstr "कोई प्रॉक्सी नहीं"
#, fuzzy
msgid "Enabled"
@@ -11142,6 +11184,17 @@ msgid "I_M"
msgstr "आइ एम(_M)"
#, fuzzy
+msgid "_Audio Call"
+msgstr "चैट जोड़ें"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "विडीयो चैट"
+
+#, fuzzy
msgid "_Send File..."
msgstr "फ़ाइल भेजें(_S)"
@@ -11305,6 +11358,10 @@ msgstr "/औजार/बड्डी पर झपटा(_P)"
msgid "/Tools/_Certificates"
msgstr "/औज़ार/पसंदें(_e)"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/औजार/अनुपस्थित(_A)"
+
# And now for the buttons
#, fuzzy
msgid "/Tools/Plu_gins"
@@ -11316,10 +11373,6 @@ msgstr "/औज़ार/पसंदें(_e)"
msgid "/Tools/Pr_ivacy"
msgstr "/औजार/गुप्तता(_i)"
-#, fuzzy
-msgid "/Tools/Smile_y"
-msgstr "/औजार/अनुपस्थित(_A)"
-
msgid "/Tools/_File Transfers"
msgstr "/औज़ार/फा़इल हसतांत्रन(_F)"
@@ -11452,8 +11505,8 @@ msgstr "मान्युवल"
msgid "By status"
msgstr "वस्तुस्थिति द्वारा"
-msgid "By log size"
-msgstr "लॉग आकार द्वारा"
+msgid "By recent log activity"
+msgstr ""
#, fuzzy, c-format
msgid "%s disconnected"
@@ -11478,6 +11531,9 @@ msgstr "फिर कनेक्ट करें(_R)"
msgid "Re-enable"
msgstr "नया जैबर खाता रेजिस्टर करें"
+msgid "SSL FAQs"
+msgstr ""
+
#, fuzzy
msgid "Welcome back!"
msgstr "\"%s पीछे आया"
@@ -11576,6 +11632,9 @@ msgstr ""
msgid "A_lias:"
msgstr "उपनाम:"
+msgid "_Group:"
+msgstr "समूह:(_G)"
+
msgid "Auto_join when account becomes online."
msgstr ""
@@ -11640,14 +11699,6 @@ msgstr "आप अभी ऐसे किसी खाते के साथ
msgid "Invite Buddy Into Chat Room"
msgstr "बड्डी को चैट कक्ष में आमंत्रित करें"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"कृपया उपयोगकर्ता का नाम डालिए जिन्हे आप आमंत्रित करना चाहते हैं। अगर आप चाहे तो आमंत्रण "
-"संदेश भी भेज सकते हैं।"
-
msgid "_Buddy:"
msgstr "बड्डी(_B):"
@@ -11735,6 +11786,26 @@ msgid "/Conversation/Clea_r Scrollback"
msgstr "/वार्ता/साफ करें"
# Conversations
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/वार्ता/बंद(_C)"
+
+# Conversations
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/वार्ता/बंद(_C)"
+
+# Conversations
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/वार्ता/बंद(_C)"
+
+# Conversations
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/वार्ता/लॉग देखें(_L)"
+
+# Conversations
msgid "/Conversation/Se_nd File..."
msgstr "/वार्ता/फा़इल भेज़ें(_n)..."
@@ -11830,6 +11901,21 @@ msgid "/Conversation/View Log"
msgstr "/वार्ता/लॉग देखें"
# Conversations
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/वार्ता/बंद(_C)"
+
+# Conversations
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/वार्ता/लॉग देखें"
+
+# Conversations
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/वार्ता/बंद(_C)"
+
+# Conversations
msgid "/Conversation/Send File..."
msgstr "/वार्ता/फा़इल भेजें..."
@@ -12043,6 +12129,9 @@ msgstr "पता"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "समर्थन"
@@ -12194,6 +12283,10 @@ msgid "Ubuntu Georgian Translators"
msgstr "वर्तमान अनुवादक - रविशंकर श्रीवास्तव (raviratlami@yahoo.com)"
#, fuzzy
+msgid "Khmer"
+msgstr "ओपेरा(Opera)"
+
+#, fuzzy
msgid "Kannada"
msgstr "निषेधित"
@@ -12217,6 +12310,10 @@ msgid "Macedonian"
msgstr "मेसिडोनियन"
#, fuzzy
+msgid "Mongolian"
+msgstr "मेसिडोनियन"
+
+#, fuzzy
msgid "Bokmål Norwegian"
msgstr "नारवेजियन "
@@ -12325,8 +12422,25 @@ msgid ""
"<BR><BR>"
msgstr ""
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
#, fuzzy, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"3\">IRC:</FONT> #गेम irc.freenode.net पर<BR><BR>"
+
+#, fuzzy, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"3\">IRC:</FONT> #गेम irc.freenode.net पर<BR><BR>"
#, fuzzy
@@ -12720,15 +12834,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr "नयी डाक की सूचनाऐँ"
-msgid "_Copy Email Address"
-msgstr "इमेल पते की प्रतिलिपि बनायें(_C)"
-
-msgid "_Open Link in Browser"
-msgstr "कड़ी को ब्राउज़र में खोलें(_O)"
-
-msgid "_Copy Link Location"
-msgstr "कड़ी के स्थान की प्रतिलिपि बनायें(_C)"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12993,6 +13098,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -13010,6 +13116,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -13041,16 +13148,27 @@ msgstr ""
msgid "Pidgin"
msgstr "पेजिंग"
-#, fuzzy
-msgid "Open All Messages"
-msgstr "संदेश भेजें"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
+
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
#, fuzzy
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgid "Calling..."
+msgstr "गणना जारी..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
msgstr ""
-"<span weight=\"bold\" size=\"larger\">आपके लिए मेल है!</span>\n"
-"\n"
-"%s"
#, c-format
msgid "%s has %d new message."
@@ -13079,6 +13197,35 @@ msgid ""
"The 'Manual' browser command has been chosen, but no command has been set."
msgstr "'स्वयं' ब्राउज़र कमांड चुनी गयी है, परंतु कोइ कमांड को दृढ़ नहीं किया गया है।"
+#, fuzzy
+msgid "Open All Messages"
+msgstr "संदेश भेजें"
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr ""
+"<span weight=\"bold\" size=\"larger\">आपके लिए मेल है!</span>\n"
+"\n"
+"%s"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "नया बड्डी झपटा"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr ""
+"<span weight=\"bold\" size=\"larger\">आपके लिए मेल है!</span>\n"
+"\n"
+"%s"
+
+#, fuzzy
+msgid "No message"
+msgstr "(1 सन्देश)"
+
msgid "The following plugins will be unloaded."
msgstr ""
@@ -13132,6 +13279,10 @@ msgstr ""
msgid "Select a file"
msgstr "फाइल को चुनो"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "बड्डी झपटे का संपादन"
+
#. Create the "Pounce on Whom" frame.
#, fuzzy
msgid "Pounce on Whom"
@@ -13218,6 +13369,50 @@ msgstr ""
msgid "Pounce Target"
msgstr "कब झपटें"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "बड्डी ने टाईप करना चालू किया(_t)"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "उपयोगकर्ता टाईप कर रहा है"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "साइनऑन(_g)"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "बेकारी से वापस आयें(_n)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "अनुपस्थिति से वापस आयें(_R)"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "पिंग"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "साइनऑफ(_o)"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "%s निष्क्रिय हो गया है."
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "जब अनुपस्थित"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "सन्देश भेजो(_m)"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "अज्ञात झपटा घटना। कृप्या इसकी रपट करें!"
+
msgid "Smiley theme failed to unpack."
msgstr ""
@@ -13243,6 +13438,12 @@ msgstr "शोर्टकट"
msgid "Cl_ose conversations with the Escape key"
msgstr "%s के साथ वार्तालाप"
+# Buddy List
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "बड्डी सूची"
+
# *< api_version
# *< type
# *< ui_requirement
@@ -13250,6 +13451,7 @@ msgstr "%s के साथ वार्तालाप"
# *< dependencies
# *< priority
# *< id
+#. System Tray
msgid "System Tray Icon"
msgstr "तंत्र तश्तरी आइकन"
@@ -13387,10 +13589,6 @@ msgstr ""
msgid "Cannot start browser configuration program."
msgstr "उपयोगकर्ता की जानकारी नहीं मिली"
-#, fuzzy
-msgid "ST_UN server:"
-msgstr "सर्वर:(_S)"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr ""
@@ -13418,6 +13616,10 @@ msgstr "आरम्भ पोर्ट:(_S)"
msgid "_End port:"
msgstr "अंत पोर्ट:(_E)"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
#, fuzzy
msgid "Proxy Server &amp; Browser"
msgstr "प्रोक्सी सर्वर"
@@ -13447,6 +13649,10 @@ msgstr "प्रोक्सी सर्वर"
msgid "No proxy"
msgstr "कोई प्रॉक्सी नहीं"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "उपभोक्ता(_U):"
@@ -13625,14 +13831,14 @@ msgid "Auto-away"
msgstr "स्वतः अनुपस्थित"
#, fuzzy
-msgid "Change status when _idle"
-msgstr "जब बेकार हो तब अनुपस्थित दृढ़ करें(_w)"
-
-#, fuzzy
msgid "_Minutes before becoming idle:"
msgstr "अनुपस्थिति दृढ़ करें कितने मिनट में(_M)"
#, fuzzy
+msgid "Change status when _idle"
+msgstr "जब बेकार हो तब अनुपस्थित दृढ़ करें(_w)"
+
+#, fuzzy
msgid "Change _status to:"
msgstr "पता बदलें:"
@@ -13791,6 +13997,12 @@ msgstr "संचय करें और प्रयोग करें(_v)"
msgid "Status for %s"
msgstr "वस्तुस्थिति: %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
#, fuzzy
msgid "Custom Smiley"
msgstr "स्माइली डालें"
@@ -13801,15 +14013,15 @@ msgstr ""
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
+msgstr ""
+
#, fuzzy
msgid "Duplicate Shortcut"
msgstr "सार्वजनिक कुंजी फा़इल"
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
-msgstr ""
-
#, fuzzy
msgid "Please select an image for the smiley."
msgstr "कृपया चुने हुए समूह के लिए नया नाम भरें।"
@@ -13823,18 +14035,22 @@ msgid "Add Smiley"
msgstr "मुसकुरायैं!"
#, fuzzy
-msgid "Smiley _Image"
+msgid "_Image:"
msgstr "चित्र संचित करें"
-#. Smiley shortcut
+#. Shortcut text
#, fuzzy
-msgid "Smiley S_hortcut"
+msgid "S_hortcut text:"
msgstr "शोर्टकट"
#, fuzzy
msgid "Smiley"
msgstr "मुसकुरायैं!"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "शोर्टकट"
+
msgid "Custom Smiley Manager"
msgstr ""
@@ -13968,6 +14184,16 @@ msgid ""
msgstr ""
#, fuzzy
+msgid "_Open Link"
+msgstr "कड़ी को इस में खोलें:(_O)"
+
+msgid "_Copy Link Location"
+msgstr "कड़ी के स्थान की प्रतिलिपि बनायें(_C)"
+
+msgid "_Copy Email Address"
+msgstr "इमेल पते की प्रतिलिपि बनायें(_C)"
+
+#, fuzzy
msgid "Save File"
msgstr "फाइल को संचित करें..."
@@ -15097,10 +15323,6 @@ msgid "Only when docked"
msgstr ""
#, fuzzy
-msgid "_Flash window when chat messages are received"
-msgstr "जब संदेश मिलें तो विंडो चमकाएँ (_F)"
-
-#, fuzzy
msgid "Windows Pidgin Options"
msgstr "लॉगइन विकल्प"
@@ -15153,6 +15375,224 @@ msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr ""
#, fuzzy
+#~ msgid "Invite message"
+#~ msgstr "(1 सन्देश)"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "कृपया उपयोगकर्ता का नाम डालिए जिन्हे आप आमंत्रित करना चाहते हैं। अगर आप चाहे तो "
+#~ "आमंत्रण संदेश भी भेज सकते हैं।"
+
+#, fuzzy
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "बड्डी सूची नहीं ला पाया"
+
+#~ msgid ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+#~ msgstr ""
+#~ "आप जल्दी डिसकनेक्ट हो जाएंगे। जब तक यह ठीक होगा आप टी औ सी का प्रयोग करना चाहेंगे। "
+#~ "अपडेट्स के लिए %s देखें।"
+
+#, fuzzy
+#~ msgid "Add buddy Q&A"
+#~ msgstr "बड्डी चुनिये"
+
+#, fuzzy
+#~ msgid "Can not decrypt get server reply"
+#~ msgstr "सर्वर की जानकारी नहीं मिली"
+
+#, fuzzy
+#~ msgid "Keep alive error"
+#~ msgstr "पढ़ने में त्रुटि"
+
+#, fuzzy
+#~ msgid ""
+#~ "Lost connection with server:\n"
+#~ "%d, %s"
+#~ msgstr "आपको सवर्र से डिसकनेक्ट्ड कर दिया गया।"
+
+#, fuzzy
+#~ msgid "Connecting server ..."
+#~ msgstr "सर्वर कनेक्ट करें"
+
+#, fuzzy
+#~ msgid "Failed to send IM."
+#~ msgstr "वार्तालाप में जुड़ने में असफल"
+
+#~ msgid "Looking up %s"
+#~ msgstr "%s को देख रहा है"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "%s को कनेक्ट असफल"
+
+#~ msgid "Signon: %s"
+#~ msgstr "साइन-औन: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "%s फा़इल लिखने में असमर्थ।"
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "%s फा़इल पढ़ने में असमर्थ।"
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "संदेश बहुत लम्बा है, आखिर के %s बाइट काटें गये हैं।"
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s ने अभी लॉग-इन किया है"
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "%s के लिए चेतावनी पर पाबंदी है।"
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr "एक संदेश को फैंक दिया गया, आप सवर्र की गति सीमा का उलंघन कर रहें है।"
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "%s में चैट उपलब्ध नहीं है।"
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "आप %s को संदेश बहुत तेज़ी से भेज रहें हैं।"
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "आपने एक %s से एक आइ एम खो दिया क्योंकि वह बहुत बड़ा था।"
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr "आपने एक %s से एक आइ एम खो दिया क्योंकि वह बहुत तेज़ भेजा गया था।"
+
+#~ msgid "Failure."
+#~ msgstr "असफलता।"
+
+#~ msgid "Too many matches."
+#~ msgstr "बहुत सारी उपयुक्तियां"
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "और अधिक क्वालीफायर्स की आवशयकता है।"
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "डिर सेवा अस्थाई रुप से उपलब्ध नहीं है।"
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "इमेल का देखना सीमाबद्ध किया गया।"
+
+#~ msgid "Keyword ignored."
+#~ msgstr "कुंजीशब्द कि अपेक्षा हुई"
+
+#~ msgid "No keywords."
+#~ msgstr "कोइ कुंजीशब्द नहीं।"
+
+#~ msgid "User has no directory information."
+#~ msgstr "उपयोगकर्ता के पास कोइ डायरक्ट्री की जानकारी नहीं है।"
+
+#~ msgid "Country not supported."
+#~ msgstr "देश समर्थित नहीं है"
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "अज्ञात असफलता: %s."
+
+#, fuzzy
+#~ msgid "Incorrect username or password."
+#~ msgstr "अवैध उपनाम या पासवर्ड"
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "यह सेवा अस्थाई तोर से उपलब्ध नहीं है।"
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "आपका चेतावनी स्तर लॉग-इन करने के लिए बहुत ऊँचा है।"
+
+#~ 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 ""
+#~ "आप लगातार जल्दी-जल्दी कनेक्ट और डिसकनेक्ट हो रहें हैं। दस मिनट प्रतीक्षा करें और फिर "
+#~ "प्रयास करें। अगर आप प्रयास जारी रखेंगे तो आपको और ज़्यादा प्रतीक्षा करनी पड़ेगी।"
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "एक अज्ञात साइन-औन त्रुटी हुइ: %s।"
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "एक अज्ञात त्रुटी, %d , हुआ है। जानकारी: %s"
+
+#, fuzzy
+#~ msgid "Invalid Groupname"
+#~ msgstr "अवैध समूह-नाम"
+
+#~ msgid "Connection Closed"
+#~ msgstr "कनेक्शन बंद हो गया"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "उत्तर कि प्रतीक्षा कर रहें हैं"
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "टी औ सी ठहर कर वापस आया। अब आप संदेश भेज सकतें हैं।"
+
+#~ msgid "Password Change Successful"
+#~ msgstr "पासवर्ड बदलने में सफल"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "डिर जानकारी लायें"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "डिर जानकारी दृढ़ करें..."
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "%s को खोल नहीं पाया लिखने के लिए!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr "फा़इल हसतांत्रण विफल; शायद दूसरी और से रद्द हुआ।"
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "हसतांतरण करने के लिए कनेक्ट नहीं कर पाया।"
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "फा़इल का हैडर लिख नहीं पाया। यह फा़इन हसतांत्रित नहीं होगी।"
+
+#, fuzzy
+#~ msgid "Save As..."
+#~ msgstr "अइकॉन इस तरह संचित करें..."
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s आपसे फा़इल भेजने का अनुरोध कर रहें हैं"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "टीऔसी प्रोटोकॉल प्लगइन"
+
+#~ msgid "User information for %s unavailable"
+#~ msgstr "उपयोगकर्ता %s हेतु जानकारी उपलब्ध नहीं"
+
+#~ msgid "%s Options"
+#~ msgstr "%s के विकल्प"
+
+#~ msgid "Proxy Options"
+#~ msgstr "प्रोक्सी विकल्प"
+
+#~ msgid "By log size"
+#~ msgstr "लॉग आकार द्वारा"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "कड़ी को ब्राउज़र में खोलें(_O)"
+
+#, fuzzy
+#~ msgid "ST_UN server:"
+#~ msgstr "सर्वर:(_S)"
+
+#, fuzzy
+#~ msgid "Smiley _Image"
+#~ msgstr "चित्र संचित करें"
+
+#, fuzzy
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "शोर्टकट"
+
+#, fuzzy
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "जब संदेश मिलें तो विंडो चमकाएँ (_F)"
+
+#, fuzzy
#~ msgid "A group with the name already exists."
#~ msgstr "उसी नाम का एक फोल्डर पहले से मोजूद है"
@@ -15232,13 +15672,6 @@ msgstr ""
#~ msgstr "क्या आप निश्चिता से \"%s\" अनुपस्थित संदेश को मिटाना चाहते है?"
#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr "%s पे %s (%s)"
-
-#, fuzzy
#~ msgid "System Message"
#~ msgstr "संदेश भेजें"
@@ -15386,9 +15819,6 @@ msgstr ""
#~ msgid "Invalid screen name"
#~ msgstr "अवैध उपयोगकर्ता-नाम"
-#~ msgid "Unable to make SSL connection to server."
-#~ msgstr "सवर्र से एस एस एल कनेक्शन बनाने में त्रुटी।"
-
#~ msgid "Too evil (sender)"
#~ msgstr "बहुत बुरा (भेजने वाला)"
@@ -15865,9 +16295,6 @@ msgstr ""
#~ msgid "_Idle"
#~ msgstr "बेकार(_I)"
-#~ msgid "Retur_n from idle"
-#~ msgstr "बेकारी से वापस आयें(_n)"
-
#~ msgid "Pounce Action"
#~ msgstr "झपटे कि क्रिया"
@@ -16158,8 +16585,8 @@ msgstr ""
#~ msgid ""
#~ "When this happens, TOC ignores any messages sent to it, and may kick you "
-#~ "off if you send a message. Pidgin will prevent anything from going through. "
-#~ "This is only temporary, please be patient."
+#~ "off if you send a message. Pidgin will prevent anything from going "
+#~ "through. This is only temporary, please be patient."
#~ msgstr ""
#~ "जब ऐसा होता है तब टी औ सी किसी भी संदेश पर ध्यान नहीं देगा और आपके संदेश भेजने पर वह "
#~ "आपको लात भी मार सकता है। गेम कुछ भी जाने से रोक देगा। यह केवल अस्थाई है, कृपया संयम "
@@ -16177,8 +16604,8 @@ msgstr ""
#~ msgid ""
#~ "The normal authentication method has failed. This means either your "
#~ "password is incorrect, or Yahoo!'s authentication scheme has changed. "
-#~ "Pidgin will now attempt to log in using Web Messenger authentication, which "
-#~ "will result in reduced functionality and features."
+#~ "Pidgin will now attempt to log in using Web Messenger authentication, "
+#~ "which will result in reduced functionality and features."
#~ msgstr ""
#~ "समान्य प्रमाणिकरण असफल हो गया है। इसका मतलब है कि या तो आपका पासवर्ड गलत है या "
#~ "याहू! कि प्रमाणिकरण प्रणाली बदल गयी है। गेम अब वैब मेसंजर प्रमाणिकरण का प्रयोग करके "
@@ -16206,9 +16633,6 @@ msgstr ""
#~ msgstr[0] "(1 सन्देश)"
#~ msgstr[1] "(1 सन्देश)"
-#~ msgid "(1 message)"
-#~ msgstr "(1 सन्देश)"
-
#, fuzzy
#~ msgid "Default auto-away"
#~ msgstr "स्वतः अनुपस्थित"
@@ -16322,9 +16746,6 @@ msgstr ""
#~ msgid "Away title: "
#~ msgstr "अनुपस्थिति / शीर्षक:"
-#~ msgid "Buddy List Error"
-#~ msgstr "बड्डी सूची त्रुटि"
-
#~ msgid "Unable to send message. The message is too large."
#~ msgstr "संदेश भेजने में असफल। संदेश बहुत बढ़ा है।"
@@ -16755,8 +17176,8 @@ msgstr ""
#~ msgstr "पसंद लोड करने में असमर्थ"
#~ msgid ""
-#~ "Pidgin was not able to load your preferences because they are stored in an "
-#~ "old format that is no longer used. Please reconfigure your settings "
+#~ "Pidgin 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 ""
#~ "गेम आपकी पसंदों को लोड नहीं कर पाया क्योंकि वह पुरानी रचना में है जोकि अब प्रयोग में "
@@ -16862,15 +17283,15 @@ msgstr ""
#~ msgstr "डायरेक्टरी तक पहुंच नहीं पाया"
#~ msgid ""
-#~ "Pidgin was unable to search the Directory because it was unable to connect "
-#~ "to the directory server. Please try again later."
+#~ "Pidgin was unable to search the Directory because it was unable to "
+#~ "connect to the directory server. Please try again later."
#~ msgstr ""
#~ "गेम डायरेक्टरी को खोज नहीं सका क्योंकि वह डायरेक्टरी सवर्र से कनेक्ट नहीं कर पाया। "
#~ "कृप्या कुछ समय पशचात प्रयास करें।"
#~ msgid ""
-#~ "Pidgin was unable to change your password due to an error connecting to the "
-#~ "Gadu-Gadu server. Please try again later."
+#~ "Pidgin was unable to change your password due to an error connecting to "
+#~ "the Gadu-Gadu server. Please try again later."
#~ msgstr ""
#~ "गेम पासवर्ड बदलने में विफल रहा क्योंकि गाडू-गाडू सवर्र से कनेक्ट करते समय त्रुटी हुई। कृप्या "
#~ "कुछ समय पशचात प्रयास करें।"
@@ -16882,8 +17303,8 @@ msgstr ""
#~ msgstr "उपयोकर्ता प्रोफाइल लाने में असमर्थ।"
#~ msgid ""
-#~ "Pidgin was unable to access this user's profile due to an error connecting "
-#~ "to the directory server. Please try again later."
+#~ "Pidgin was unable to access this user's profile due to an error "
+#~ "connecting to the directory server. Please try again later."
#~ msgstr ""
#~ "गेम उपयोकर्ता प्रोफाइल लाने में असमर्थ रहा क्योंकि वह डायरेक्टरी सवर्र से कनेक्ट नहीं कर "
#~ "पाया। कृप्या कुछ समय पशचात प्रयास करें।"
@@ -17023,9 +17444,6 @@ msgstr ""
#~ "%s ने %s को %s चेट कक्ष में आमन्त्रित किया\n"
#~ "<b>%s</b>"
-#~ msgid "Sorry, I ran out for a bit!"
-#~ msgstr "माफ कीजीएगा, कुछ देर के लिए में बाहर गया था!"
-
#~ msgid ""
#~ "Unable to guess the image type based on the file extension supplied. "
#~ "Defaulting to PNG."
diff --git a/po/hu.po b/po/hu.po
index 63d3ba51ce..970c4d73d3 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pidgin 2.5\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-25 03:23+0100\n"
+"POT-Creation-Date: 2009-04-30 10:38-0400\n"
"PO-Revision-Date: 2009-02-25 03:21+0100\n"
"Last-Translator: Gabor Kelemen <kelemeng@gnome.hu>\n"
"Language-Team: Hungarian <gnome@fsf.hu>\n"
@@ -43,7 +43,8 @@ msgstr ""
"Használat: %s [KAPCSOLÓ]…\n"
"\n"
" -c, --config=KÖNYVTÁR A KÖNYVTÁR használata a beállítófájlokhoz\n"
-" -d, --debug hibakereső üzenetek kiírása a szabványos hibakimenetre\n"
+" -d, --debug hibakereső üzenetek kiírása a szabványos "
+"hibakimenetre\n"
" -h, --help ezen súgó megjelenítése és kilépés\n"
" -n, --nologin ne jelentkezzen be automatikusan\n"
" -v, --version az aktuális verzió megjelenítése és kilépés\n"
@@ -609,19 +610,6 @@ msgstr ""
msgid "Send To"
msgstr "Küldés ennek"
-msgid "Invite message"
-msgstr "Meghívóüzenet"
-
-msgid "Invite"
-msgstr "Meghívás"
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Adja meg a meghívandó partner nevét,\n"
-"egy elhagyható meghívóüzenettel együtt."
-
msgid "Conversation"
msgstr "Társalgás"
@@ -880,6 +868,41 @@ msgstr "Minden társalgás"
msgid "System Log"
msgstr "Rendszernapló"
+#, fuzzy
+msgid "Calling ... "
+msgstr "Számítás…"
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "Elfogadás"
+
+msgid "Reject"
+msgstr "Visszautasítás"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "Elhagyta a(z) %s%s csatornát"
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "E-mailek"
@@ -914,6 +937,9 @@ msgstr "Folytatás"
msgid "IM"
msgstr "Azonnali üzenet"
+msgid "Invite"
+msgstr "Meghívás"
+
msgid "(none)"
msgstr "(nincs)"
@@ -1117,7 +1143,6 @@ msgstr "%s távol van. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s egy üzenetet küldött. (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "Ismeretlen figyelmeztetési esemény. Kérjük jelentse ezt!"
@@ -1527,6 +1552,28 @@ msgstr "GntLastlog"
msgid "Lastlog plugin."
msgstr "Lastlog bővítmény."
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "Dal URL"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "fiókok"
@@ -1627,13 +1674,6 @@ msgstr "Elfogadja a következő tanúsítványát: %s?"
msgid "SSL Certificate Verification"
msgstr "SSL tanúsítvány-ellenőrzés"
-#. Number of actions
-msgid "Accept"
-msgstr "Elfogadás"
-
-msgid "Reject"
-msgstr "Visszautasítás"
-
msgid "_View Certificate..."
msgstr "_Tanúsítvány megjelenítése…"
@@ -1782,6 +1822,18 @@ msgstr "%s elhagyta a szobát."
msgid "%s left the room (%s)."
msgstr "%s elhagyta a szobát (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Meghívás konferenciára"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Adja meg annak a partnernek a nevét, akit meg szeretne hívni, egy "
+"tetszőleges meghívóüzenettel együtt."
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "Nem hozható létre kapcsolat: %s"
@@ -2619,6 +2671,32 @@ msgstr "Offline üzenetek mentése figyelmeztetésben"
msgid "Do not ask. Always save in pounce."
msgstr "Ne kérdezzen. Mindig mentsen figyelmeztetésben."
+#, fuzzy
+msgid "One Time Password"
+msgstr "Adja meg a jelszót"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -3019,6 +3097,7 @@ msgstr "Válasszon egy csevegést a következő partnerhez: %s"
msgid "Add to chat..."
msgstr "Felvétel csevegéshez…"
+#. Global
msgid "Available"
msgstr "Elérhető"
@@ -3365,6 +3444,17 @@ msgstr ""
"Az Ön által választott fióknevet a kiszolgáló visszautasította. Valószínűleg "
"érvénytelen karaktereket tartalmaz."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "Ez a csevegésnév már használatban van"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Becenév"
+
msgid "Cannot change nick"
msgstr "A becenév nem változtatható meg"
@@ -3644,6 +3734,41 @@ msgstr "Érvénytelen hívás a kiszolgálótól"
msgid "SASL error"
msgstr "SASL hiba"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "Nincs ok megadva"
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Nem támogatott verzió"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"Nem hozható létre kapcsolat a következő kiszolgálóval:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"Nem hozható létre kapcsolat a következő kiszolgálóval:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "A kapcsolat nem inicializálható"
+
+msgid "Unable to create socket"
+msgstr "Nem lehet létrehozni foglalatot"
+
+msgid "Write error"
+msgstr "Írási hiba"
+
msgid "Full Name"
msgstr "Teljes név"
@@ -3710,6 +3835,10 @@ msgstr "Kliens"
msgid "Operating System"
msgstr "Operációs rendszer"
+#, fuzzy
+msgid "Local Time"
+msgstr "Helyi fájl:"
+
# fixme: innentől egy jó darabon xmpp protokollkiegészítések nevei vannak, lásd: http://www.xmpp.org/extensions/
msgid "Last Activity"
msgstr "Utolsó művelet"
@@ -4042,9 +4171,6 @@ msgstr "Szobák keresése"
msgid "You require encryption, but it is not available on this server."
msgstr "Titkosítást igényel, de az nem áll rendelkezésre ezen a kiszolgálón."
-msgid "Write error"
-msgstr "Írási hiba"
-
msgid "Ping timeout"
msgstr "Ping időtúllépése"
@@ -4053,14 +4179,9 @@ msgstr "Olvasási hiba"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"Nem hozható létre kapcsolat a következő kiszolgálóval:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "Nem lehet létrehozni foglalatot"
msgid "Invalid XMPP ID"
msgstr "Érvénytelen XMPP azonosító"
@@ -4068,6 +4189,10 @@ msgstr "Érvénytelen XMPP azonosító"
msgid "Invalid XMPP ID. Domain must be set."
msgstr "Érvénytelen XMPP azonosító. A tartományt be kell állítani."
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Nem sikerült a kiszolgálóhoz kapcsolódni."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "%s@%s regisztrációja sikeres"
@@ -4158,6 +4283,12 @@ msgstr "A kiszolgáló nem támogatja a blokkolást"
msgid "Not Authorized"
msgstr "Nem engedélyezett"
+msgid "Mood"
+msgstr "Hangulat"
+
+msgid "Now Listening"
+msgstr "Most hallgatott"
+
msgid "Both"
msgstr "Mindkettő"
@@ -4179,12 +4310,6 @@ msgstr "Nincs"
msgid "Subscription"
msgstr "Feliratkozás"
-msgid "Mood"
-msgstr "Hangulat"
-
-msgid "Now Listening"
-msgstr "Most hallgatott"
-
msgid "Mood Text"
msgstr "Hangulatszöveg"
@@ -4422,18 +4547,24 @@ msgstr "Nem lehet kirúgni %s felhasználót"
msgid "Unable to ping user %s"
msgstr "%s felhasználó nem pingelhető"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr "Nem lehet csörgetni, mivel nem érhető el információ %s felhasználóról."
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr "Nem lehet csörgetni, mivel %s felhasználó kiléphetett."
-#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+#, fuzzy, c-format
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "Nem lehet csörgetni, mivel %s felhasználó nem támogatja azt."
+#, c-format
+msgid "Buzzing %s..."
+msgstr "%s csörgetése…"
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
msgid "Buzz"
@@ -4443,9 +4574,36 @@ msgstr "Csörgetés"
msgid "%s has buzzed you!"
msgstr "%s megcsörgette!"
-#, c-format
-msgid "Buzzing %s..."
-msgstr "%s csörgetése…"
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "Nem küldhető fájl a következőnek: %s, a JID érvénytelen"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "Nem küldhető fájl a következőnek: %s, a felhasználó nem érhető el"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr ""
+"Nem küldhető fájl a következőnek: %s, nincs feliratkozva a felhasználó "
+"jelenlétére"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "A regisztráció sikertelen"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "Válassza ki %s azon erőforrását, ahová fájlt kíván küldeni"
+
+msgid "Select a Resource"
+msgstr "Válasszon erőforrást"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "Csevegés ke_zdeményezése"
msgid "config: Configure a chat room."
msgstr "config: Csevegőszoba beállítása."
@@ -4600,6 +4758,21 @@ msgstr "Hiba a(z) %s csevegéshez csatlakozás közben"
msgid "Error in chat %s"
msgstr "Hiba a(z) %s csevegésben"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "Hiba történt a fájl megnyitása közben."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "A fájlátvitel meghiúsult"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Nem sikerült megnyitni a(z) „%s” fájlt: %s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4627,9 +4800,6 @@ msgstr ""
msgid "Please select the resource of %s to which you would like to send a file"
msgstr "Válassza ki %s azon erőforrását, ahová fájlt kíván küldeni"
-msgid "Select a Resource"
-msgstr "Válasszon erőforrást"
-
msgid "Edit User Mood"
msgstr "Felhasználói hangulat szerkesztése"
@@ -6441,7 +6611,7 @@ msgstr ""
"betűvel kell kezdődniük és betűket, számokat, szóközöket, vagy csak számokat "
"tartalmazhatnak."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr "Érvénytelen felhasználónév."
@@ -6457,7 +6627,7 @@ msgstr "A fiókja jelenleg fel van függesztve."
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "Az AOL azonnali üzenő szolgáltatás átmenetileg nem érhető el."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6660,7 +6830,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] "Nem kapott meg %hu üzenetet a következőtől: %s, ismeretlen okból."
msgstr[1] "Nem kapott meg %hu üzenetet a következőtől: %s, ismeretlen okból."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "Az üzenetet nem lehet elküldeni: %s"
@@ -7253,6 +7423,38 @@ msgstr "Frissítés"
msgid "Could not change buddy information."
msgstr "A partnerinformációk nem módosíthatók."
+msgid "Mobile"
+msgstr "Mobil"
+
+msgid "Note"
+msgstr "Megjegyzés"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "Partnerfeljegyzés módosítása"
+
+msgid "Change his/her memo as you like"
+msgstr ""
+
+#, fuzzy
+msgid "_Modify"
+msgstr "Módosítás"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "Módosítás"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "A kiszolgáló foglalt"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
#, c-format
msgid "%u requires verification"
msgstr "%u ellenőrzést igényel"
@@ -7564,6 +7766,9 @@ msgstr "<p><b>Köszönetnyilvánítás</b>:<br>\n"
msgid "<p><b>Scrupulous Testers</b>:<br>\n"
msgstr "<p><b>Lelkiismeretes tesztelők</b>:<br>\n"
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr "<p><i>és a háttéremberek...</i><br>\n"
@@ -7699,7 +7904,6 @@ msgstr ""
"Ismeretlen válaszkód bejelentkezéskor (0x%02X):\n"
"%s"
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "Nem lehet kapcsolódni."
@@ -8610,9 +8814,6 @@ msgstr "Szervezet"
msgid "Unit"
msgstr "Egység"
-msgid "Note"
-msgstr "Megjegyzés"
-
msgid "Join Chat"
msgstr "Csatlakozás csevegéshez"
@@ -9320,195 +9521,12 @@ msgid "Auth Domain"
msgstr "Tartomány hitelesítése"
#, c-format
-msgid "Looking up %s"
-msgstr "%s keresése"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Kapcsolódás sikertelen a következőhöz: %s"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Bejelentkezés: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "Nem lehet írni a(z) %s fájlba."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "Nem lehet olvasni a(z) %s fájlt."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "Az üzenet túl hosszú, az utolsó %s bájt csonkítva."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s jelenleg nincs bejelentkezve."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "%s figyelmeztetése nincs engedélyezve."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr ""
-"Egy üzenet el lett dobva, Ön túllépte a kiszolgáló átviteli sebességhatárát."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "Nem lehet csevegni a következőben: %s."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "Túl gyorsan küld üzeneteket a következőnek: %s."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "Nem kapott meg egy üzenetet a következőtől: %s, mert az túl nagy volt."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr ""
-"Nem kapott meg egy üzenetet a következőtől: %s, mert a feladó túl gyorsan "
-"küldte."
-
-#, c-format
-msgid "Failure."
-msgstr "Hiba."
-
-#, c-format
-msgid "Too many matches."
-msgstr "Túl sok találat."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "Több feltétel szükséges."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "Könyvtárszolgáltatás átmenetileg nem érhető el."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "E-mail keresés korlátozva."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "Kulcsszó figyelmen kívül hagyva."
-
-#, c-format
-msgid "No keywords."
-msgstr "Nincsenek kulcsszavak."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "A felhasználó nem rendelkezik címtár-információkkal."
-
-#, c-format
-msgid "Country not supported."
-msgstr "Nem támogatott ország."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Ismeretlen hiba: %s."
-
-#, c-format
-msgid "Incorrect username or password."
-msgstr "Helytelen felhasználónév vagy jelszó."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "A szolgáltatás átmenetileg nem érhető el."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "A figyelmeztetési szintje jelenleg túl magas a bejelentkezéshez."
-
-#, 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 ""
-"Túl gyakran jelentkezik be/ki. Várjon tíz percet, és próbálja meg újra. Ha "
-"tovább folytatja, akkor még tovább kell majd várnia."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "Ismeretlen bejelentkezési hiba történt: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "Ismeretlen hiba történt: %d. Információ: %s"
-
-msgid "Invalid Groupname"
-msgstr "Érvénytelen csoportnév"
-
-msgid "Connection Closed"
-msgstr "Kapcsolat lezárva"
-
-msgid "Waiting for reply..."
-msgstr "Várakozás válaszra…"
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "A TOC ismét működőképes. Mostantól újra küldhet üzeneteket."
-
-msgid "Password Change Successful"
-msgstr "Jelszó sikeresen megváltoztatva"
-
-msgid "_Group:"
-msgstr "_Csoport:"
-
-msgid "Get Dir Info"
-msgstr "Könyvtárinformációk lekérése"
-
-msgid "Set Dir Info"
-msgstr "Könyvtárinformációk beállítása"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "%s nem nyitható meg írásra!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "A fájlátvitel sikertelen; valószínűleg a másik oldal megszakította."
-
-msgid "Could not connect for transfer."
-msgstr "Az átvitelhez nem sikerült a kapcsolatot létrehozni."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "A fájl fejlécét nem sikerült kiírni. A fájl nem lesz elküldve."
-
-msgid "Save As..."
-msgstr "Mentés másként…"
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s kéri %s partnert %d fájl fogadására: %s (%.2f %s)%s%s"
-msgstr[1] "%s kéri %s partnert %d fájl fogadására: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s egy fájl elküldésére kéri"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "TOC protokollbővítmény"
-
-#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr "%s webkamera-meghívást küldött, ami még nem támogatott."
+msgid "Your SMS was not delivered"
+msgstr ""
+
msgid "Your Yahoo! message did not get sent."
msgstr "Az Ön Yahoo! üzenete nem lett elküldve."
@@ -10114,9 +10132,6 @@ msgstr "Ne zavarjanak"
msgid "Extended away"
msgstr "Bővített távollét"
-msgid "Mobile"
-msgstr "Mobil"
-
msgid "Listening to music"
msgstr "Zenét hallgat"
@@ -10158,18 +10173,6 @@ msgstr "+++ %s már nem inaktív"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "Hiba %s olvasásakor"
-
-#, 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 ""
-"Hiba lépett fel a(z) %s feldolgozása közben. Ezek nem lettek betöltve, a "
-"régi fájl %s~ néven lett elmentve."
-
msgid "Calculating..."
msgstr "Számítás…"
@@ -10244,6 +10247,14 @@ msgstr "Hiba %s írása közben: %s"
msgid "Unable to connect to %s: %s"
msgstr "Nem lehet a következőhöz kapcsolódni: %s: %s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+"A kiszolgáló megköveteli a TLS/SSL használatát a bejelentkezéshez, de ezek "
+"támogatása nem található."
+
#, c-format
msgid " - %s"
msgstr " – %s"
@@ -10277,6 +10288,18 @@ msgstr "Kapcsolat visszautasítva."
msgid "Address already in use."
msgstr "A cím már használatban van."
+#, c-format
+msgid "Error Reading %s"
+msgstr "Hiba %s olvasásakor"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"Hiba lépett fel a(z) %s feldolgozása közben. Ezek nem lettek betöltve, a "
+"régi fájl %s~ néven lett elmentve."
+
msgid "Internet Messenger"
msgstr "Azonnali üzenetküldés"
@@ -10319,10 +10342,8 @@ msgstr "Értesítések új le_vélre"
msgid "Use this buddy _icon for this account:"
msgstr "Ezen _partnerikon használata a fiókhoz:"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s beállításai"
+msgid "_Advanced"
+msgstr "_Haladó"
msgid "Use GNOME Proxy Settings"
msgstr "GNOME proxybeállítások használata"
@@ -10357,9 +10378,6 @@ msgstr "ha igazán közelről nézi"
msgid "you can see the butterflies mating"
msgstr "láthatja a pillangók nászát"
-msgid "Proxy Options"
-msgstr "Proxy beállításai"
-
msgid "Proxy _type:"
msgstr "Proxy _típusa:"
@@ -10387,8 +10405,9 @@ msgstr "_Alap"
msgid "Create _this new account on the server"
msgstr "Ezen új fió_k létrehozása a kiszolgálón"
-msgid "_Advanced"
-msgstr "_Haladó"
+#, fuzzy
+msgid "_Proxy"
+msgstr "Proxy"
msgid "Enabled"
msgstr "Engedélyezve"
@@ -10467,6 +10486,17 @@ msgstr "_Info"
msgid "I_M"
msgstr "Ü_zenet"
+#, fuzzy
+msgid "_Audio Call"
+msgstr "Cse_vegés hozzáadása"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Videócsevegés"
+
msgid "_Send File..."
msgstr "_Fájl küldése…"
@@ -10603,6 +10633,10 @@ msgstr "/Eszközök/_Partnerfigyelmeztetések"
msgid "/Tools/_Certificates"
msgstr "/Eszközök/_Tanúsítványok"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Eszközök/Mosol_y"
+
msgid "/Tools/Plu_gins"
msgstr "/Eszközök/Bő_vítmények"
@@ -10612,9 +10646,6 @@ msgstr "/Eszközök/_Beállítások"
msgid "/Tools/Pr_ivacy"
msgstr "/Eszközök/Ma_gánszféra"
-msgid "/Tools/Smile_y"
-msgstr "/Eszközök/Mosol_y"
-
msgid "/Tools/_File Transfers"
msgstr "/Eszközök/_Fájlátvitelek"
@@ -10732,8 +10763,8 @@ msgstr "Kézi"
msgid "By status"
msgstr "Állapot szerint"
-msgid "By log size"
-msgstr "Napló mérete szerint"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10749,6 +10780,9 @@ msgstr "Újracsatlakozás"
msgid "Re-enable"
msgstr "Újraengedélyezés"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr "Üdvözöljük újra!"
@@ -10837,6 +10871,9 @@ msgstr ""
msgid "A_lias:"
msgstr "Ál_név:"
+msgid "_Group:"
+msgstr "_Csoport:"
+
msgid "Auto_join when account becomes online."
msgstr "Automatikus _csatlakozás a fiók elérhetővé válásakor."
@@ -10889,14 +10926,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr "Partner meghívása a csevegőszobába"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Adja meg annak a partnernek a nevét, akit meg szeretne hívni, egy "
-"tetszőleges meghívóüzenettel együtt."
-
msgid "_Buddy:"
msgstr "_Partner:"
@@ -10971,6 +11000,22 @@ msgstr "/Társalgás/_Mentés másként…"
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Társalgás/Elő_zmények törlése"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Társalgás/_Több"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Társalgás/_Több"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Társalgás/_Több"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Társalgás/Nap_ló megtekintése"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Társalgás/Fájl kül_dése…"
@@ -11043,6 +11088,18 @@ msgstr "/Társalgás"
msgid "/Conversation/View Log"
msgstr "/Társalgás/Napló megtekintése"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Társalgás/Több"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Társalgás/Napló megtekintése"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Társalgás/Több"
+
msgid "/Conversation/Send File..."
msgstr "/Társalgás/Fájl küldése…"
@@ -11226,6 +11283,9 @@ msgstr "grafikus"
msgid "Ka-Hing Cheung"
msgstr "Ka-Hing Cheung"
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "támogató"
@@ -11365,6 +11425,10 @@ msgstr "grúz"
msgid "Ubuntu Georgian Translators"
msgstr "Grúz Ubuntu fordítók"
+#, fuzzy
+msgid "Khmer"
+msgstr "Egyéb"
+
msgid "Kannada"
msgstr "kannada"
@@ -11832,15 +11896,6 @@ msgstr "A gépelésértesítés betűkészlete"
msgid "Enable typing notification"
msgstr "Gépelésértesítés engedélyezése"
-msgid "_Copy Email Address"
-msgstr "E-mail cím _másolása"
-
-msgid "_Open Link in Browser"
-msgstr "Hivatk_ozás megnyitása böngészőben"
-
-msgid "_Copy Link Location"
-msgstr "_Hivatkozás helyének másolása"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12087,13 +12142,14 @@ msgstr "A _naplómappa böngészése"
msgid "%s %s. Try `%s -h' for more information.\n"
msgstr "%s %s. Próbálja a „%s -h” parancsot további információkért.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12116,13 +12172,14 @@ msgstr ""
" --display=KÉPERNYŐ a használandó X megjelenítő\n"
" -v, --version az aktuális verzió megjelenítése és kilépés\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12180,11 +12237,23 @@ msgstr "Pidgin"
msgid "Exiting because another libpurple client is already running.\n"
msgstr "Kilépés, mert már fut egy másik libpurple kliens.\n"
-msgid "Open All Messages"
-msgstr "Összes üzenet megnyitása"
+msgid "/_Media"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Levele érkezett!</span>"
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "Számítás…"
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -12213,6 +12282,27 @@ msgid ""
"The 'Manual' browser command has been chosen, but no command has been set."
msgstr "A „Kézi” böngészőparancsot választotta, de nem adott meg parancsot."
+msgid "Open All Messages"
+msgstr "Összes üzenet megnyitása"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Levele érkezett!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "Új partnerfigyelmeztetés"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Levele érkezett!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "Ismeretlen üzenet"
+
msgid "The following plugins will be unloaded."
msgstr "A következő bővítmények lesznek eltávolítva."
@@ -12261,6 +12351,10 @@ msgstr "<b>Bővítmény részletei</b>"
msgid "Select a file"
msgstr "Fájl kiválasztása"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Partnerfigyelmeztetés szerkesztése"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "Kinél figyelmeztet"
@@ -12331,6 +12425,50 @@ msgstr "_Ismétlődő"
msgid "Pounce Target"
msgstr "Figyelmeztetés címzettje"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "Elkezd gépelni"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "Felfüggeszti a gépelést"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "Bejelentkezik"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s inaktív állapota megszűnt (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "Visszatér távollétből"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "Abbahagyta a gépelést"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "Kijelentkezik"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "Inaktív lesz"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "Ha távol vagyok"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Üzenet küldése"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "Ismeretlen figyelmeztetési esemény. Kérjük jelentse ezt!"
+
msgid "Smiley theme failed to unpack."
msgstr "A hangulatjel-téma kicsomagolása meghiúsult."
@@ -12353,6 +12491,12 @@ msgstr "Gyorsbillentyűk"
msgid "Cl_ose conversations with the Escape key"
msgstr "Társalgások bezárása az _Escape billentyűvel"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Partnerlista"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "Rendszertálca-ikon"
@@ -12463,9 +12607,6 @@ msgstr "Nem indítható a proxykonfigurációs program."
msgid "Cannot start browser configuration program."
msgstr "Nem indítható a böngészőkonfigurációs program."
-msgid "ST_UN server:"
-msgstr "ST_UN kiszolgáló:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">Például: stunserver.org</span>"
@@ -12490,6 +12631,10 @@ msgstr "_Első port:"
msgid "_End port:"
msgstr "_Utolsó port:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr "Proxy-kiszolgáló és böngésző"
@@ -12680,12 +12825,12 @@ msgstr "Ha távol van és inaktív"
msgid "Auto-away"
msgstr "Automatikus távollét"
-msgid "Change status when _idle"
-msgstr "Állapot módosítása, _ha inaktív"
-
msgid "_Minutes before becoming idle:"
msgstr "Üresjárat ennyi _perc után:"
+msgid "Change status when _idle"
+msgstr "Állapot módosítása, _ha inaktív"
+
msgid "Change _status to:"
msgstr "Állap_ot módosítása a következőre:"
@@ -12835,6 +12980,12 @@ msgstr "Menté_s és használat"
msgid "Status for %s"
msgstr "%s állapota"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
msgid "Custom Smiley"
msgstr "Egyéni hangulatjel"
@@ -12844,16 +12995,16 @@ msgstr "További adatok szükségesek"
msgid "Please provide a shortcut to associate with the smiley."
msgstr "Adja meg a hangulatjelhez társítandó billentyűparancsot."
-msgid "Duplicate Shortcut"
-msgstr "Kettőzött billentyűparancs"
-
+#, fuzzy, c-format
msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
+"A custom smiley for '%s' already exists. Please use a different shortcut."
msgstr ""
"Már létezik egyéni hangulatjel a kiválasztott billentyűparancshoz. Adjon meg "
"másik billentyűparancsot."
+msgid "Duplicate Shortcut"
+msgstr "Kettőzött billentyűparancs"
+
msgid "Please select an image for the smiley."
msgstr "Válassza ki a képet a hangulatjelhez."
@@ -12863,16 +13014,22 @@ msgstr "Hangulatjel szerkesztése"
msgid "Add Smiley"
msgstr "Hangulatjel hozzáadása"
-msgid "Smiley _Image"
-msgstr "Hangulatjel _kép"
+#, fuzzy
+msgid "_Image:"
+msgstr "Ké_p"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr "_Hangulatjel billentyűparancsa"
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "Billentyűparancs"
msgid "Smiley"
msgstr "Hangulatjel"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "Billentyűparancs"
+
msgid "Custom Smiley Manager"
msgstr "Egyénihangulatjel-kezelő"
@@ -12999,6 +13156,16 @@ msgstr ""
"A(z) „%s” kép betöltése sikertelen: az ok nem ismert, valószínűleg sérült a "
"képfájl"
+#, fuzzy
+msgid "_Open Link"
+msgstr "Hivatk_ozás megnyitása:"
+
+msgid "_Copy Link Location"
+msgstr "_Hivatkozás helyének másolása"
+
+msgid "_Copy Email Address"
+msgstr "E-mail cím _másolása"
+
msgid "Save File"
msgstr "Fájl mentése"
@@ -14026,3 +14193,179 @@ msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr ""
"Ez a bővítmény XMPP kiszolgálókban vagy kliensekben végzett hibakereséshez "
"hasznos."
+
+#~ msgid "Invite message"
+#~ msgstr "Meghívóüzenet"
+
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Adja meg a meghívandó partner nevét,\n"
+#~ "egy elhagyható meghívóüzenettel együtt."
+
+#~ msgid "Looking up %s"
+#~ msgstr "%s keresése"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "Kapcsolódás sikertelen a következőhöz: %s"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Bejelentkezés: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "Nem lehet írni a(z) %s fájlba."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "Nem lehet olvasni a(z) %s fájlt."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "Az üzenet túl hosszú, az utolsó %s bájt csonkítva."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s jelenleg nincs bejelentkezve."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "%s figyelmeztetése nincs engedélyezve."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr ""
+#~ "Egy üzenet el lett dobva, Ön túllépte a kiszolgáló átviteli "
+#~ "sebességhatárát."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "Nem lehet csevegni a következőben: %s."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "Túl gyorsan küld üzeneteket a következőnek: %s."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr ""
+#~ "Nem kapott meg egy üzenetet a következőtől: %s, mert az túl nagy volt."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr ""
+#~ "Nem kapott meg egy üzenetet a következőtől: %s, mert a feladó túl gyorsan "
+#~ "küldte."
+
+#~ msgid "Failure."
+#~ msgstr "Hiba."
+
+#~ msgid "Too many matches."
+#~ msgstr "Túl sok találat."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "Több feltétel szükséges."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "Könyvtárszolgáltatás átmenetileg nem érhető el."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "E-mail keresés korlátozva."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "Kulcsszó figyelmen kívül hagyva."
+
+#~ msgid "No keywords."
+#~ msgstr "Nincsenek kulcsszavak."
+
+#~ msgid "User has no directory information."
+#~ msgstr "A felhasználó nem rendelkezik címtár-információkkal."
+
+#~ msgid "Country not supported."
+#~ msgstr "Nem támogatott ország."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Ismeretlen hiba: %s."
+
+#~ msgid "Incorrect username or password."
+#~ msgstr "Helytelen felhasználónév vagy jelszó."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "A szolgáltatás átmenetileg nem érhető el."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "A figyelmeztetési szintje jelenleg túl magas a bejelentkezéshez."
+
+#~ 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 ""
+#~ "Túl gyakran jelentkezik be/ki. Várjon tíz percet, és próbálja meg újra. "
+#~ "Ha tovább folytatja, akkor még tovább kell majd várnia."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "Ismeretlen bejelentkezési hiba történt: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "Ismeretlen hiba történt: %d. Információ: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "Érvénytelen csoportnév"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Kapcsolat lezárva"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "Várakozás válaszra…"
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "A TOC ismét működőképes. Mostantól újra küldhet üzeneteket."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "Jelszó sikeresen megváltoztatva"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Könyvtárinformációk lekérése"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Könyvtárinformációk beállítása"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "%s nem nyitható meg írásra!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr "A fájlátvitel sikertelen; valószínűleg a másik oldal megszakította."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "Az átvitelhez nem sikerült a kapcsolatot létrehozni."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "A fájl fejlécét nem sikerült kiírni. A fájl nem lesz elküldve."
+
+#~ msgid "Save As..."
+#~ msgstr "Mentés másként…"
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s kéri %s partnert %d fájl fogadására: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s kéri %s partnert %d fájl fogadására: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s egy fájl elküldésére kéri"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "TOC protokollbővítmény"
+
+#~ msgid "%s Options"
+#~ msgstr "%s beállításai"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Proxy beállításai"
+
+#~ msgid "By log size"
+#~ msgstr "Napló mérete szerint"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "Hivatk_ozás megnyitása böngészőben"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "ST_UN kiszolgáló:"
+
+#~ msgid "Smiley _Image"
+#~ msgstr "Hangulatjel _kép"
+
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "_Hangulatjel billentyűparancsa"
diff --git a/po/hy.po b/po/hy.po
new file mode 100644
index 0000000000..e8aeabe413
--- /dev/null
+++ b/po/hy.po
@@ -0,0 +1,13365 @@
+# translation of am.po to Armenian
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# David Avsharyan <avsharyan@gmail.com>, 2009.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: am\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-05-26 20:21-0700\n"
+"PO-Revision-Date: 2009-05-20 17:37+0400\n"
+"Last-Translator: David Avsharyan <avsharyan@gmail.com>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
+
+#. Translators may want to transliterate the name.
+#. It is not to be translated.
+msgid "Finch"
+msgstr "Սերինոս"
+
+#, c-format
+msgid "%s. Try `%s -h' for more information.\n"
+msgstr "%s. Ավելի շատ ինֆորմացիայի համար հավագեք `%s -h'.\n"
+
+#, c-format
+msgid ""
+"%s\n"
+"Usage: %s [OPTION]...\n"
+"\n"
+" -c, --config=DIR use DIR for config files\n"
+" -d, --debug print debugging messages to stderr\n"
+" -h, --help display this help and exit\n"
+" -n, --nologin don't automatically login\n"
+" -v, --version display the current version and exit\n"
+msgstr ""
+"%s\n"
+"Կիրառում: %s [OPTION]...\n"
+"\n"
+" -c, --config=DIR օգտագործել DIR կոնֆիգուրացիոն ֆայլերի համար\n"
+" -d, --debug կարգաբերվող հաղորդագրությունները տպել դեպի ստանդարտ "
+"սխալների հոսք\n"
+" -h, --help ցույց տալ այս օգնությունը և դուրս գալ\n"
+" -n, --nologin ոչ ինքնաբերաբար մուտք\n"
+" -v, --version ցույց տալ ընթացիկ տարբերակը և դուրս գալ\n"
+
+#, c-format
+msgid ""
+"%s encountered errors migrating your settings from %s to %s. Please "
+"investigate and complete the migration by hand. Please report this error at "
+"http://developer.pidgin.im"
+msgstr ""
+
+#, fuzzy
+msgid "Error"
+msgstr "Սխալներզ"
+
+msgid "Account was not added"
+msgstr ""
+
+msgid "Username of an account must be non-empty."
+msgstr "Օգտագործողի անունը ..."
+
+msgid "New mail notifications"
+msgstr "Նոր նամակի ծանուցումներ"
+
+msgid "Remember password"
+msgstr "Հիշել գաղտնաբառը"
+
+msgid "There are no protocol plugins installed."
+msgstr "Այնտեղ տեղադրված չէ պրոտոկոլի ավելացումներ․"
+
+msgid "(You probably forgot to 'make install'.)"
+msgstr "(Հավանաբար դուք մոռացել եք անեք 'make install'.)"
+
+msgid "Modify Account"
+msgstr "Ձևափոխել Հաշիվը"
+
+msgid "New Account"
+msgstr "Նոր Հաշիվ"
+
+msgid "Protocol:"
+msgstr "Արձանագրություն։"
+
+msgid "Username:"
+msgstr "Օգտագործողի անունը։"
+
+msgid "Password:"
+msgstr "Գաղտնաբառ։"
+
+msgid "Alias:"
+msgstr "Փոխանուն։"
+
+#. Register checkbox
+msgid "Create this account on the server"
+msgstr "Ստեղծել այս հաշիվը սերվերի վրա"
+
+#. Cancel button
+#. Cancel
+msgid "Cancel"
+msgstr "Չեղյալ համարել"
+
+#. Save button
+#. Save
+msgid "Save"
+msgstr "Պահպանել"
+
+#, c-format
+msgid "Are you sure you want to delete %s?"
+msgstr "Դուք համոզված եք, որ ցանկանում եք ջնջել %s?"
+
+msgid "Delete Account"
+msgstr "Ջնջել Հաշիվը"
+
+#. Delete button
+msgid "Delete"
+msgstr "Ջնջել"
+
+msgid "Accounts"
+msgstr "Հաշիվներ"
+
+msgid "You can enable/disable accounts from the following list."
+msgstr "Դուք կարող եք միացնել/անջատել հաշիվները հետևյալ ցանկից․"
+
+#. Add button
+msgid "Add"
+msgstr "Ավելացնել"
+
+#. Modify button
+msgid "Modify"
+msgstr "Փոփոխել"
+
+#, c-format
+msgid "%s%s%s%s has made %s his or her buddy%s%s"
+msgstr ""
+
+msgid "Add buddy to your list?"
+msgstr ""
+
+#, c-format
+msgid "%s%s%s%s wants to add %s to his or her buddy list%s%s"
+msgstr ""
+
+msgid "Authorize buddy?"
+msgstr ""
+
+msgid "Authorize"
+msgstr "Լիազորում"
+
+msgid "Deny"
+msgstr "Մերժել"
+
+#, c-format
+msgid ""
+"Online: %d\n"
+"Total: %d"
+msgstr ""
+"Կապի մեջ: %d\n"
+"Ընդհանուր: %d"
+
+#, c-format
+msgid "Account: %s (%s)"
+msgstr "Հաշիվ: %s (%s"
+
+#, c-format
+msgid ""
+"\n"
+"Last Seen: %s ago"
+msgstr ""
+"\n"
+"Last Seen: %s ago"
+
+msgid "Default"
+msgstr ""
+
+msgid "You must provide a username for the buddy."
+msgstr ""
+
+msgid "You must provide a group."
+msgstr ""
+
+msgid "You must select an account."
+msgstr ""
+
+msgid "The selected account is not online."
+msgstr ""
+
+msgid "Error adding buddy"
+msgstr ""
+
+msgid "Username"
+msgstr ""
+
+msgid "Alias (optional)"
+msgstr ""
+
+msgid "Add in group"
+msgstr ""
+
+msgid "Account"
+msgstr ""
+
+msgid "Add Buddy"
+msgstr ""
+
+msgid "Please enter buddy information."
+msgstr ""
+
+msgid "Chats"
+msgstr ""
+
+#. Extract their Name and put it in
+msgid "Name"
+msgstr ""
+
+msgid "Alias"
+msgstr ""
+
+msgid "Group"
+msgstr ""
+
+msgid "Auto-join"
+msgstr ""
+
+msgid "Add Chat"
+msgstr ""
+
+msgid "You can edit more information from the context menu later."
+msgstr ""
+
+msgid "Error adding group"
+msgstr ""
+
+msgid "You must give a name for the group to add."
+msgstr ""
+
+msgid "Add Group"
+msgstr ""
+
+msgid "Enter the name of the group"
+msgstr ""
+
+msgid "Edit Chat"
+msgstr ""
+
+msgid "Please Update the necessary fields."
+msgstr ""
+
+msgid "Edit"
+msgstr ""
+
+msgid "Edit Settings"
+msgstr ""
+
+msgid "Information"
+msgstr ""
+
+msgid "Retrieving..."
+msgstr ""
+
+msgid "Get Info"
+msgstr ""
+
+msgid "Add Buddy Pounce"
+msgstr ""
+
+msgid "Send File"
+msgstr ""
+
+msgid "Blocked"
+msgstr ""
+
+msgid "Show when offline"
+msgstr ""
+
+#, c-format
+msgid "Please enter the new name for %s"
+msgstr ""
+
+msgid "Rename"
+msgstr ""
+
+msgid "Set Alias"
+msgstr ""
+
+msgid "Enter empty string to reset the name."
+msgstr ""
+
+msgid "Removing this contact will also remove all the buddies in the contact"
+msgstr ""
+
+msgid "Removing this group will also remove all the buddies in the group"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to remove %s?"
+msgstr ""
+
+#. XXX: anything to do with the returned ui-handle?
+msgid "Confirm Remove"
+msgstr ""
+
+msgid "Remove"
+msgstr ""
+
+#. Buddy List
+msgid "Buddy List"
+msgstr ""
+
+msgid "Place tagged"
+msgstr ""
+
+msgid "Toggle Tag"
+msgstr ""
+
+msgid "View Log"
+msgstr ""
+
+#. General
+msgid "Nickname"
+msgstr ""
+
+#. Never know what those translations might end up like...
+#. Idle stuff
+msgid "Idle"
+msgstr ""
+
+msgid "On Mobile"
+msgstr ""
+
+msgid "New..."
+msgstr ""
+
+msgid "Saved..."
+msgstr ""
+
+msgid "Plugins"
+msgstr ""
+
+msgid "Block/Unblock"
+msgstr ""
+
+msgid "Block"
+msgstr ""
+
+msgid "Unblock"
+msgstr ""
+
+msgid ""
+"Please enter the username or alias of the person you would like to Block/"
+"Unblock."
+msgstr ""
+
+#. Not multiline
+#. Not masked?
+#. No hints?
+msgid "OK"
+msgstr "OK"
+
+msgid "New Instant Message"
+msgstr ""
+
+msgid "Please enter the username or alias of the person you would like to IM."
+msgstr ""
+
+msgid "Channel"
+msgstr "Ալիք"
+
+msgid "Join a Chat"
+msgstr "Միանալ զրույցին"
+
+msgid "Please enter the name of the chat you want to join."
+msgstr ""
+
+msgid "Join"
+msgstr "Միանալ"
+
+msgid ""
+"Please enter the username or alias of the person whose log you would like to "
+"view."
+msgstr ""
+
+#. Create the "Options" frame.
+msgid "Options"
+msgstr ""
+
+msgid "Send IM..."
+msgstr ""
+
+msgid "Block/Unblock..."
+msgstr "Փակել/Բացել"
+
+msgid "Join Chat..."
+msgstr "Միանալ զրույցին ... "
+
+msgid "View Log..."
+msgstr "Նայել գրառումները․․․"
+
+msgid "View All Logs"
+msgstr "Նայել մատյանի բոլոր գրառումները"
+
+msgid "Show"
+msgstr "Ցույց տալ"
+
+msgid "Empty groups"
+msgstr "Դատարկ խմբեր"
+
+msgid "Offline buddies"
+msgstr ""
+
+msgid "Sort"
+msgstr "Դասակարգել"
+
+msgid "By Status"
+msgstr "Ըստ "
+
+msgid "Alphabetically"
+msgstr ""
+
+msgid "By Log Size"
+msgstr ""
+
+msgid "Buddy"
+msgstr ""
+
+msgid "Chat"
+msgstr "Զրույց"
+
+msgid "Grouping"
+msgstr ""
+
+msgid "Certificate Import"
+msgstr ""
+
+msgid "Specify a hostname"
+msgstr ""
+
+msgid "Type the host name this certificate is for."
+msgstr ""
+
+#, c-format
+msgid ""
+"File %s could not be imported.\n"
+"Make sure that the file is readable and in PEM format.\n"
+msgstr ""
+
+msgid "Certificate Import Error"
+msgstr ""
+
+msgid "X.509 certificate import failed"
+msgstr ""
+
+msgid "Select a PEM certificate"
+msgstr ""
+
+#, c-format
+msgid ""
+"Export to file %s failed.\n"
+"Check that you have write permission to the target path\n"
+msgstr ""
+
+msgid "Certificate Export Error"
+msgstr ""
+
+msgid "X.509 certificate export failed"
+msgstr ""
+
+msgid "PEM X.509 Certificate Export"
+msgstr ""
+
+#, c-format
+msgid "Certificate for %s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Common name: %s\n"
+"\n"
+"SHA1 fingerprint:\n"
+"%s"
+msgstr ""
+
+msgid "SSL Host Certificate"
+msgstr ""
+
+#, c-format
+msgid "Really delete certificate for %s?"
+msgstr ""
+
+msgid "Confirm certificate delete"
+msgstr ""
+
+msgid "Certificate Manager"
+msgstr ""
+
+#. Creating the user splits
+msgid "Hostname"
+msgstr ""
+
+msgid "Info"
+msgstr ""
+
+#. Close button
+msgid "Close"
+msgstr ""
+
+#, c-format
+msgid "%s (%s)"
+msgstr ""
+
+#, c-format
+msgid "%s disconnected."
+msgstr ""
+
+#, 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 ""
+
+msgid "Re-enable Account"
+msgstr ""
+
+msgid ""
+"The account has disconnected and you are no longer in this chat. You will be "
+"automatically rejoined in the chat when the account reconnects."
+msgstr ""
+
+msgid "No such command."
+msgstr ""
+
+msgid "Syntax Error: You typed the wrong number of arguments to that command."
+msgstr ""
+
+msgid "Your command failed for an unknown reason."
+msgstr ""
+
+msgid "That command only works in chats, not IMs."
+msgstr ""
+
+msgid "That command only works in IMs, not chats."
+msgstr ""
+
+msgid "That command doesn't work on this protocol."
+msgstr ""
+
+msgid "Message was not sent, because you are not signed on."
+msgstr ""
+
+#, c-format
+msgid "%s (%s -- %s)"
+msgstr ""
+
+#, c-format
+msgid "%s [%s]"
+msgstr ""
+
+#, c-format
+msgid ""
+"\n"
+"%s is typing..."
+msgstr ""
+
+msgid "You have left this chat."
+msgstr ""
+
+msgid "Logging started. Future messages in this conversation will be logged."
+msgstr ""
+
+msgid ""
+"Logging stopped. Future messages in this conversation will not be logged."
+msgstr ""
+
+msgid "Send To"
+msgstr ""
+
+msgid "Conversation"
+msgstr ""
+
+msgid "Clear Scrollback"
+msgstr ""
+
+msgid "Show Timestamps"
+msgstr ""
+
+msgid "Add Buddy Pounce..."
+msgstr ""
+
+msgid "Invite..."
+msgstr ""
+
+msgid "Enable Logging"
+msgstr ""
+
+msgid "Enable Sounds"
+msgstr ""
+
+msgid "<AUTO-REPLY> "
+msgstr ""
+
+#, c-format
+msgid "List of %d user:\n"
+msgid_plural "List of %d users:\n"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Supported debug options are: version"
+msgstr ""
+
+msgid "No such command (in this context)."
+msgstr ""
+
+msgid ""
+"Use \"/help &lt;command&gt;\" for help on a specific command.\n"
+"The following commands are available in this context:\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s is not a valid message class. See '/help msgcolor' for valid message "
+"classes."
+msgstr ""
+
+#, c-format
+msgid "%s is not a valid color. See '/help msgcolor' for valid colors."
+msgstr ""
+
+msgid ""
+"say &lt;message&gt;: Send a message normally as if you weren't using a "
+"command."
+msgstr ""
+
+msgid "me &lt;action&gt;: Send an IRC style action to a buddy or chat."
+msgstr ""
+
+msgid ""
+"debug &lt;option&gt;: Send various debug information to the current "
+"conversation."
+msgstr ""
+
+msgid "clear: Clears the conversation scrollback."
+msgstr ""
+
+msgid "help &lt;command&gt;: Help on a specific command."
+msgstr ""
+
+msgid "users: Show the list of users in the chat."
+msgstr ""
+
+msgid "plugins: Show the plugins window."
+msgstr ""
+
+msgid "buddylist: Show the buddylist."
+msgstr ""
+
+msgid "accounts: Show the accounts window."
+msgstr ""
+
+msgid "debugwin: Show the debug window."
+msgstr ""
+
+msgid "prefs: Show the preference window."
+msgstr ""
+
+msgid "statuses: Show the savedstatuses window."
+msgstr ""
+
+msgid ""
+"msgcolor &lt;class&gt; &lt;foreground&gt; &lt;background&gt;: Set the color "
+"for different classes of messages in the conversation window.<br> &lt;"
+"class&gt;: receive, send, highlight, action, timestamp<br> &lt;foreground/"
+"background&gt;: black, red, green, blue, white, gray, darkgray, magenta, "
+"cyan, default<br><br>EXAMPLE:<br> msgcolor send cyan default"
+msgstr ""
+
+msgid "Unable to open file."
+msgstr ""
+
+msgid "Debug Window"
+msgstr ""
+
+#. XXX: Setting the GROW_Y for the following widgets don't make sense. But right now
+#. * it's necessary to make the width of the debug window resizable ... like I said,
+#. * it doesn't make sense. The bug is likely in the packing in gntbox.c.
+#.
+msgid "Clear"
+msgstr ""
+
+msgid "Filter:"
+msgstr ""
+
+msgid "Pause"
+msgstr ""
+
+#, c-format
+msgid "File Transfers - %d%% of %d file"
+msgid_plural "File Transfers - %d%% of %d files"
+msgstr[0] ""
+msgstr[1] ""
+
+#. Create the window.
+msgid "File Transfers"
+msgstr ""
+
+msgid "Progress"
+msgstr ""
+
+msgid "Filename"
+msgstr ""
+
+msgid "Size"
+msgstr ""
+
+msgid "Speed"
+msgstr ""
+
+msgid "Remaining"
+msgstr ""
+
+#. XXX: Use of ggp_str_to_uin() is an ugly hack!
+msgid "Status"
+msgstr ""
+
+msgid "Close this window when all transfers finish"
+msgstr ""
+
+msgid "Clear finished transfers"
+msgstr ""
+
+msgid "Stop"
+msgstr ""
+
+msgid "Waiting for transfer to begin"
+msgstr ""
+
+msgid "Canceled"
+msgstr ""
+
+msgid "Failed"
+msgstr ""
+
+#, c-format
+msgid "%.2f KiB/s"
+msgstr ""
+
+msgid "Sent"
+msgstr ""
+
+msgid "Received"
+msgstr ""
+
+msgid "Finished"
+msgstr ""
+
+#, c-format
+msgid "The file was saved as %s."
+msgstr ""
+
+msgid "Sending"
+msgstr ""
+
+msgid "Receiving"
+msgstr ""
+
+#, c-format
+msgid "Conversation in %s on %s"
+msgstr ""
+
+#, c-format
+msgid "Conversation with %s on %s"
+msgstr ""
+
+msgid "%B %Y"
+msgstr ""
+
+msgid ""
+"System events will only be logged if the \"Log all status changes to system "
+"log\" preference is enabled."
+msgstr ""
+
+msgid ""
+"Instant messages will only be logged if the \"Log all instant messages\" "
+"preference is enabled."
+msgstr ""
+
+msgid ""
+"Chats will only be logged if the \"Log all chats\" preference is enabled."
+msgstr ""
+
+msgid "No logs were found"
+msgstr ""
+
+msgid "Total log size:"
+msgstr ""
+
+#. Search box *********
+msgid "Scroll/Search: "
+msgstr ""
+
+#, c-format
+msgid "Conversations in %s"
+msgstr ""
+
+#, c-format
+msgid "Conversations with %s"
+msgstr ""
+
+msgid "All Conversations"
+msgstr ""
+
+msgid "System Log"
+msgstr ""
+
+msgid "Calling ... "
+msgstr ""
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr ""
+
+msgid "Reject"
+msgstr ""
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+msgid "You have rejected the call."
+msgstr ""
+
+msgid "call: Make an audio call."
+msgstr ""
+
+msgid "Emails"
+msgstr ""
+
+msgid "You have mail!"
+msgstr ""
+
+msgid "Sender"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+#, c-format
+msgid "%s (%s) has %d new message."
+msgid_plural "%s (%s) has %d new messages."
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "New Mail"
+msgstr ""
+
+#, c-format
+msgid "Info for %s"
+msgstr ""
+
+msgid "Buddy Information"
+msgstr ""
+
+msgid "Continue"
+msgstr ""
+
+msgid "IM"
+msgstr ""
+
+msgid "Invite"
+msgstr ""
+
+msgid "(none)"
+msgstr ""
+
+msgid "URI"
+msgstr ""
+
+msgid "ERROR"
+msgstr ""
+
+msgid "loading plugin failed"
+msgstr ""
+
+msgid "unloading plugin failed"
+msgstr ""
+
+#, c-format
+msgid ""
+"Name: %s\n"
+"Version: %s\n"
+"Description: %s\n"
+"Author: %s\n"
+"Website: %s\n"
+"Filename: %s\n"
+msgstr ""
+
+msgid "Plugin need to be loaded before you can configure it."
+msgstr ""
+
+msgid "No configuration options for this plugin."
+msgstr ""
+
+msgid "Error loading plugin"
+msgstr ""
+
+msgid "The selected file is not a valid plugin."
+msgstr ""
+
+msgid ""
+"Please open the debug window and try again to see the exact error message."
+msgstr ""
+
+msgid "Select plugin to install"
+msgstr ""
+
+msgid "You can (un)load plugins from the following list."
+msgstr ""
+
+msgid "Install Plugin..."
+msgstr ""
+
+msgid "Configure Plugin"
+msgstr ""
+
+#. copy the preferences to tmp values...
+#. * I liked "take affect immediately" Oh well :-(
+#. (that should have been "effect," right?)
+#. Back to instant-apply! I win! BU-HAHAHA!
+#. Create the window
+msgid "Preferences"
+msgstr ""
+
+msgid "Please enter a buddy to pounce."
+msgstr ""
+
+msgid "New Buddy Pounce"
+msgstr ""
+
+msgid "Edit Buddy Pounce"
+msgstr ""
+
+msgid "Pounce Who"
+msgstr ""
+
+#. Account:
+msgid "Account:"
+msgstr ""
+
+msgid "Buddy name:"
+msgstr ""
+
+#. Create the "Pounce When Buddy..." frame.
+msgid "Pounce When Buddy..."
+msgstr ""
+
+msgid "Signs on"
+msgstr ""
+
+msgid "Signs off"
+msgstr ""
+
+msgid "Goes away"
+msgstr ""
+
+msgid "Returns from away"
+msgstr ""
+
+msgid "Becomes idle"
+msgstr ""
+
+msgid "Is no longer idle"
+msgstr ""
+
+msgid "Starts typing"
+msgstr ""
+
+msgid "Pauses while typing"
+msgstr ""
+
+msgid "Stops typing"
+msgstr ""
+
+msgid "Sends a message"
+msgstr ""
+
+#. Create the "Action" frame.
+msgid "Action"
+msgstr ""
+
+msgid "Open an IM window"
+msgstr ""
+
+msgid "Pop up a notification"
+msgstr ""
+
+msgid "Send a message"
+msgstr ""
+
+msgid "Execute a command"
+msgstr ""
+
+msgid "Play a sound"
+msgstr ""
+
+msgid "Pounce only when my status is not Available"
+msgstr ""
+
+msgid "Recurring"
+msgstr ""
+
+msgid "Cannot create pounce"
+msgstr ""
+
+msgid "You do not have any accounts."
+msgstr ""
+
+msgid "You must create an account first before you can create a pounce."
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the pounce on %s for %s?"
+msgstr ""
+
+msgid "Buddy Pounces"
+msgstr ""
+
+#, c-format
+msgid "%s has started typing to you (%s)"
+msgstr ""
+
+#, c-format
+msgid "%s has paused while typing to you (%s)"
+msgstr ""
+
+#, c-format
+msgid "%s has signed on (%s)"
+msgstr ""
+
+#, c-format
+msgid "%s has returned from being idle (%s)"
+msgstr ""
+
+#, c-format
+msgid "%s has returned from being away (%s)"
+msgstr ""
+
+#, c-format
+msgid "%s has stopped typing to you (%s)"
+msgstr ""
+
+#, c-format
+msgid "%s has signed off (%s)"
+msgstr ""
+
+#, c-format
+msgid "%s has become idle (%s)"
+msgstr ""
+
+#, c-format
+msgid "%s has gone away. (%s)"
+msgstr ""
+
+#, c-format
+msgid "%s has sent you a message. (%s)"
+msgstr ""
+
+msgid "Unknown pounce event. Please report this!"
+msgstr ""
+
+msgid "Based on keyboard use"
+msgstr ""
+
+msgid "From last sent message"
+msgstr ""
+
+msgid "Never"
+msgstr ""
+
+msgid "Show Idle Time"
+msgstr ""
+
+msgid "Show Offline Buddies"
+msgstr ""
+
+msgid "Notify buddies when you are typing"
+msgstr ""
+
+msgid "Log format"
+msgstr ""
+
+msgid "Log IMs"
+msgstr ""
+
+msgid "Log chats"
+msgstr ""
+
+msgid "Log status change events"
+msgstr ""
+
+msgid "Report Idle time"
+msgstr ""
+
+msgid "Change status when idle"
+msgstr ""
+
+msgid "Minutes before changing status"
+msgstr ""
+
+msgid "Change status to"
+msgstr ""
+
+msgid "Conversations"
+msgstr ""
+
+msgid "Logging"
+msgstr ""
+
+msgid "You must fill all the required fields."
+msgstr ""
+
+msgid "The required fields are underlined."
+msgstr ""
+
+msgid "Not implemented yet."
+msgstr ""
+
+msgid "Save File..."
+msgstr ""
+
+msgid "Open File..."
+msgstr ""
+
+msgid "Choose Location..."
+msgstr ""
+
+msgid "Hit 'Enter' to find more rooms of this category."
+msgstr ""
+
+msgid "Get"
+msgstr ""
+
+#. Create the window.
+msgid "Room List"
+msgstr ""
+
+msgid "Buddy logs in"
+msgstr ""
+
+msgid "Buddy logs out"
+msgstr ""
+
+msgid "Message received"
+msgstr ""
+
+msgid "Message received begins conversation"
+msgstr ""
+
+msgid "Message sent"
+msgstr ""
+
+msgid "Person enters chat"
+msgstr ""
+
+msgid "Person leaves chat"
+msgstr ""
+
+msgid "You talk in chat"
+msgstr ""
+
+msgid "Others talk in chat"
+msgstr ""
+
+msgid "Someone says your username in chat"
+msgstr ""
+
+msgid "GStreamer Failure"
+msgstr ""
+
+msgid "GStreamer failed to initialize."
+msgstr ""
+
+msgid "(default)"
+msgstr ""
+
+msgid "Select Sound File ..."
+msgstr ""
+
+msgid "Sound Preferences"
+msgstr ""
+
+msgid "Profiles"
+msgstr ""
+
+msgid "Automatic"
+msgstr ""
+
+msgid "Console Beep"
+msgstr ""
+
+msgid "Command"
+msgstr ""
+
+msgid "No Sound"
+msgstr ""
+
+msgid "Sound Method"
+msgstr ""
+
+msgid "Method: "
+msgstr ""
+
+#, c-format
+msgid ""
+"Sound Command\n"
+"(%s for filename)"
+msgstr ""
+
+#. Sound options
+msgid "Sound Options"
+msgstr ""
+
+msgid "Sounds when conversation has focus"
+msgstr ""
+
+msgid "Always"
+msgstr ""
+
+msgid "Only when available"
+msgstr ""
+
+msgid "Only when not available"
+msgstr ""
+
+msgid "Volume(0-100):"
+msgstr ""
+
+#. Sound events
+msgid "Sound Events"
+msgstr ""
+
+msgid "Event"
+msgstr ""
+
+msgid "File"
+msgstr ""
+
+msgid "Test"
+msgstr ""
+
+msgid "Reset"
+msgstr ""
+
+msgid "Choose..."
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete \"%s\""
+msgstr ""
+
+msgid "Delete Status"
+msgstr ""
+
+msgid "Saved Statuses"
+msgstr ""
+
+msgid "Title"
+msgstr ""
+
+msgid "Type"
+msgstr ""
+
+#. Statuses are almost all the same. Define a macro to reduce code repetition.
+#. PurpleStatusPrimitive
+#. id - use default
+#. name - use default
+#. saveable
+#. user_settable
+#. not independent
+#. Attributes - each status can have a message.
+msgid "Message"
+msgstr ""
+
+#. Use
+msgid "Use"
+msgstr ""
+
+msgid "Invalid title"
+msgstr ""
+
+msgid "Please enter a non-empty title for the status."
+msgstr ""
+
+msgid "Duplicate title"
+msgstr ""
+
+msgid "Please enter a different title for the status."
+msgstr ""
+
+msgid "Substatus"
+msgstr ""
+
+msgid "Status:"
+msgstr ""
+
+msgid "Message:"
+msgstr ""
+
+msgid "Edit Status"
+msgstr ""
+
+msgid "Use different status for following accounts"
+msgstr ""
+
+#. Save & Use
+msgid "Save & Use"
+msgstr ""
+
+msgid "Certificates"
+msgstr ""
+
+msgid "Sounds"
+msgstr ""
+
+msgid "Statuses"
+msgstr ""
+
+msgid "Error loading the plugin."
+msgstr ""
+
+msgid "Couldn't find X display"
+msgstr ""
+
+msgid "Couldn't find window"
+msgstr ""
+
+msgid "This plugin cannot be loaded because it was not built with X11 support."
+msgstr ""
+
+msgid "GntClipboard"
+msgstr ""
+
+msgid "Clipboard plugin"
+msgstr ""
+
+msgid ""
+"When the gnt clipboard contents change, the contents are made available to "
+"X, if possible."
+msgstr ""
+
+#, c-format
+msgid "%s just signed on"
+msgstr ""
+
+#, c-format
+msgid "%s just signed off"
+msgstr ""
+
+#, c-format
+msgid "%s sent you a message"
+msgstr ""
+
+#, c-format
+msgid "%s said your nick in %s"
+msgstr ""
+
+#, c-format
+msgid "%s sent a message in %s"
+msgstr ""
+
+msgid "Buddy signs on/off"
+msgstr ""
+
+msgid "You receive an IM"
+msgstr ""
+
+msgid "Someone speaks in a chat"
+msgstr ""
+
+msgid "Someone says your name in a chat"
+msgstr ""
+
+msgid "Notify with a toaster when"
+msgstr ""
+
+msgid "Beep too!"
+msgstr ""
+
+msgid "Set URGENT for the terminal window."
+msgstr ""
+
+msgid "GntGf"
+msgstr ""
+
+msgid "Toaster plugin"
+msgstr ""
+
+#, c-format
+msgid "<b>Conversation with %s on %s:</b><br>"
+msgstr ""
+
+msgid "History Plugin Requires Logging"
+msgstr ""
+
+msgid ""
+"Logging can be enabled from Tools -> Preferences -> Logging.\n"
+"\n"
+"Enabling logs for instant messages and/or chats will activate history for "
+"the same conversation type(s)."
+msgstr ""
+
+msgid "GntHistory"
+msgstr ""
+
+msgid "Shows recently logged conversations in new conversations."
+msgstr ""
+
+msgid ""
+"When a new conversation is opened this plugin will insert the last "
+"conversation into the current conversation."
+msgstr ""
+
+msgid "Online"
+msgstr ""
+
+msgid "Offline"
+msgstr ""
+
+msgid "Online Buddies"
+msgstr ""
+
+msgid "Offline Buddies"
+msgstr ""
+
+msgid "Online/Offline"
+msgstr ""
+
+msgid "Meebo"
+msgstr ""
+
+msgid "No Grouping"
+msgstr ""
+
+msgid "Nested Subgroup"
+msgstr ""
+
+msgid "Nested Grouping (experimental)"
+msgstr ""
+
+msgid "Provides alternate buddylist grouping options."
+msgstr ""
+
+msgid "Lastlog"
+msgstr ""
+
+#. Translator Note: The "backlog" is the conversation buffer/history.
+msgid "lastlog: Searches for a substring in the backlog."
+msgstr ""
+
+msgid "GntLastlog"
+msgstr ""
+
+msgid "Lastlog plugin."
+msgstr ""
+
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+msgid "TinyURL"
+msgstr ""
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
+msgid "accounts"
+msgstr ""
+
+msgid "Password is required to sign on."
+msgstr ""
+
+#, c-format
+msgid "Enter password for %s (%s)"
+msgstr ""
+
+msgid "Enter Password"
+msgstr ""
+
+msgid "Save password"
+msgstr ""
+
+#, c-format
+msgid "Missing protocol plugin for %s"
+msgstr ""
+
+msgid "Connection Error"
+msgstr ""
+
+msgid "New passwords do not match."
+msgstr ""
+
+msgid "Fill out all fields completely."
+msgstr ""
+
+msgid "Original password"
+msgstr ""
+
+msgid "New password"
+msgstr ""
+
+msgid "New password (again)"
+msgstr ""
+
+#, c-format
+msgid "Change password for %s"
+msgstr ""
+
+msgid "Please enter your current password and your new password."
+msgstr ""
+
+#, c-format
+msgid "Change user information for %s"
+msgstr ""
+
+msgid "Set User Info"
+msgstr ""
+
+msgid "Unknown"
+msgstr ""
+
+msgid "Buddies"
+msgstr ""
+
+msgid "buddy list"
+msgstr ""
+
+msgid "(DOES NOT MATCH)"
+msgstr ""
+
+#. Make messages
+#, c-format
+msgid "%s has presented the following certificate for just-this-once use:"
+msgstr ""
+
+#, c-format
+msgid ""
+"Common name: %s %s\n"
+"Fingerprint (SHA1): %s"
+msgstr ""
+
+#. TODO: Find what the handle ought to be
+msgid "Single-use Certificate Verification"
+msgstr ""
+
+#. Scheme name
+#. Pool name
+msgid "Certificate Authorities"
+msgstr ""
+
+#. Scheme name
+#. Pool name
+msgid "SSL Peers Cache"
+msgstr ""
+
+#. Make messages
+#, c-format
+msgid "Accept certificate for %s?"
+msgstr ""
+
+#. TODO: Find what the handle ought to be
+msgid "SSL Certificate Verification"
+msgstr ""
+
+msgid "_View Certificate..."
+msgstr ""
+
+#. Prompt the user to authenticate the certificate
+#. vrq will be completed by user_auth
+#, c-format
+msgid ""
+"The certificate presented by \"%s\" is self-signed. It cannot be "
+"automatically checked."
+msgstr ""
+
+#, c-format
+msgid "The certificate chain presented for %s is not valid."
+msgstr ""
+
+#. TODO: Make this error either block the ensuing SSL
+#. connection error until the user dismisses this one, or
+#. stifle it.
+#. TODO: Probably wrong.
+#. TODO: Probably wrong
+msgid "SSL Certificate Error"
+msgstr ""
+
+msgid "Invalid certificate chain"
+msgstr ""
+
+#. vrq will be completed by user_auth
+msgid ""
+"You have no database of root certificates, so this certificate cannot be "
+"validated."
+msgstr ""
+
+#. vrq will be completed by user_auth
+msgid ""
+"The root certificate this one claims to be issued by is unknown to Pidgin."
+msgstr ""
+
+#, c-format
+msgid ""
+"The certificate chain presented by %s does not have a valid digital "
+"signature from the Certificate Authority from which it claims to have a "
+"signature."
+msgstr ""
+
+msgid "Invalid certificate authority signature"
+msgstr ""
+
+#. Prompt the user to authenticate the certificate
+#. TODO: Provide the user with more guidance about why he is
+#. being prompted
+#. vrq will be completed by user_auth
+#, c-format
+msgid ""
+"The certificate presented by \"%s\" claims to be from \"%s\" instead. This "
+"could mean that you are not connecting to the service you believe you are."
+msgstr ""
+
+#. Make messages
+#, c-format
+msgid ""
+"Common name: %s\n"
+"\n"
+"Fingerprint (SHA1): %s\n"
+"\n"
+"Activation date: %s\n"
+"Expiration date: %s\n"
+msgstr ""
+
+#. TODO: Find what the handle ought to be
+msgid "Certificate Information"
+msgstr ""
+
+msgid "Registration Error"
+msgstr ""
+
+msgid "Unregistration Error"
+msgstr ""
+
+#, c-format
+msgid "+++ %s signed on"
+msgstr ""
+
+#, c-format
+msgid "+++ %s signed off"
+msgstr ""
+
+#. Unknown error
+#. Unknown error!
+msgid "Unknown error"
+msgstr ""
+
+msgid "Unable to send message: The message is too large."
+msgstr ""
+
+#, c-format
+msgid "Unable to send message to %s."
+msgstr ""
+
+msgid "The message is too large."
+msgstr ""
+
+msgid "Unable to send message."
+msgstr ""
+
+msgid "Send Message"
+msgstr ""
+
+msgid "_Send Message"
+msgstr ""
+
+#, c-format
+msgid "%s entered the room."
+msgstr ""
+
+#, c-format
+msgid "%s [<I>%s</I>] entered the room."
+msgstr ""
+
+#, c-format
+msgid "You are now known as %s"
+msgstr ""
+
+#, c-format
+msgid "%s is now known as %s"
+msgstr ""
+
+#, c-format
+msgid "%s left the room."
+msgstr ""
+
+#, c-format
+msgid "%s left the room (%s)."
+msgstr ""
+
+msgid "Invite to chat"
+msgstr ""
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+
+#, c-format
+msgid "Failed to get connection: %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to get name: %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to get serv name: %s"
+msgstr ""
+
+msgid "Purple's D-BUS server is not running for the reason listed below"
+msgstr ""
+
+msgid "No name"
+msgstr ""
+
+msgid "Unable to create new resolver process\n"
+msgstr ""
+
+msgid "Unable to send request to resolver process\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"Error resolving %s:\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid "Error resolving %s: %d"
+msgstr ""
+
+#, c-format
+msgid ""
+"Error reading from resolver process:\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid "Resolver process exited without answering our request"
+msgstr ""
+
+#, c-format
+msgid "Thread creation failure: %s"
+msgstr ""
+
+msgid "Unknown reason"
+msgstr ""
+
+#, c-format
+msgid ""
+"Error reading %s: \n"
+"%s.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"Error writing %s: \n"
+"%s.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"Error accessing %s: \n"
+"%s.\n"
+msgstr ""
+
+msgid "Directory is not writable."
+msgstr ""
+
+msgid "Cannot send a file of 0 bytes."
+msgstr ""
+
+msgid "Cannot send a directory."
+msgstr ""
+
+#, c-format
+msgid "%s is not a regular file. Cowardly refusing to overwrite it.\n"
+msgstr ""
+
+#, c-format
+msgid "%s wants to send you %s (%s)"
+msgstr ""
+
+#, c-format
+msgid "%s wants to send you a file"
+msgstr ""
+
+#, c-format
+msgid "Accept file transfer request from %s?"
+msgstr ""
+
+#, c-format
+msgid ""
+"A file is available for download from:\n"
+"Remote host: %s\n"
+"Remote port: %d"
+msgstr ""
+
+#, c-format
+msgid "%s is offering to send file %s"
+msgstr ""
+
+#, c-format
+msgid "%s is not a valid filename.\n"
+msgstr ""
+
+#, c-format
+msgid "Offering to send %s to %s"
+msgstr ""
+
+#, c-format
+msgid "Starting transfer of %s from %s"
+msgstr ""
+
+#, c-format
+msgid "Transfer of file %s complete"
+msgstr ""
+
+msgid "File transfer complete"
+msgstr ""
+
+#, c-format
+msgid "You canceled the transfer of %s"
+msgstr ""
+
+msgid "File transfer cancelled"
+msgstr ""
+
+#, c-format
+msgid "%s canceled the transfer of %s"
+msgstr ""
+
+#, c-format
+msgid "%s canceled the file transfer"
+msgstr ""
+
+#, c-format
+msgid "File transfer to %s failed."
+msgstr ""
+
+#, c-format
+msgid "File transfer from %s failed."
+msgstr ""
+
+msgid "Run the command in a terminal"
+msgstr ""
+
+msgid "The command used to handle \"aim\" URLs, if enabled."
+msgstr ""
+
+msgid "The command used to handle \"gg\" URLs, if enabled."
+msgstr ""
+
+msgid "The command used to handle \"icq\" URLs, if enabled."
+msgstr ""
+
+msgid "The command used to handle \"irc\" URLs, if enabled."
+msgstr ""
+
+msgid "The command used to handle \"msnim\" URLs, if enabled."
+msgstr ""
+
+msgid "The command used to handle \"sip\" URLs, if enabled."
+msgstr ""
+
+msgid "The command used to handle \"xmpp\" URLs, if enabled."
+msgstr ""
+
+msgid "The command used to handle \"ymsgr\" URLs, if enabled."
+msgstr ""
+
+msgid "The handler for \"aim\" URLs"
+msgstr ""
+
+msgid "The handler for \"gg\" URLs"
+msgstr ""
+
+msgid "The handler for \"icq\" URLs"
+msgstr ""
+
+msgid "The handler for \"irc\" URLs"
+msgstr ""
+
+msgid "The handler for \"msnim\" URLs"
+msgstr ""
+
+msgid "The handler for \"sip\" URLs"
+msgstr ""
+
+msgid "The handler for \"xmpp\" URLs"
+msgstr ""
+
+msgid "The handler for \"ymsgr\" URLs"
+msgstr ""
+
+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 \"gg\" "
+"URLs."
+msgstr ""
+
+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 \"irc\" "
+"URLs."
+msgstr ""
+
+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 \"sip\" "
+"URLs."
+msgstr ""
+
+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 \"ymsgr\" "
+"URLs."
+msgstr ""
+
+msgid ""
+"True if the command used to handle this type of URL should be run in a "
+"terminal."
+msgstr ""
+
+msgid "Whether the specified command should handle \"aim\" URLs"
+msgstr ""
+
+msgid "Whether the specified command should handle \"gg\" URLs"
+msgstr ""
+
+msgid "Whether the specified command should handle \"icq\" URLs"
+msgstr ""
+
+msgid "Whether the specified command should handle \"irc\" URLs"
+msgstr ""
+
+msgid "Whether the specified command should handle \"msnim\" URLs"
+msgstr ""
+
+msgid "Whether the specified command should handle \"sip\" URLs"
+msgstr ""
+
+msgid "Whether the specified command should handle \"xmpp\" URLs"
+msgstr ""
+
+msgid "Whether the specified command should handle \"ymsgr\" URLs"
+msgstr ""
+
+msgid "<b><font color=\"red\">The logger has no read function</font></b>"
+msgstr ""
+
+msgid "HTML"
+msgstr ""
+
+msgid "Plain text"
+msgstr ""
+
+msgid "Old flat format"
+msgstr ""
+
+msgid "Logging of this conversation failed."
+msgstr ""
+
+msgid "XML"
+msgstr ""
+
+#, c-format
+msgid ""
+"<font color=\"#16569E\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-"
+"REPLY&gt;:</b></font> %s<br/>\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"<font color=\"#A82F2F\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-"
+"REPLY&gt;:</b></font> %s<br/>\n"
+msgstr ""
+
+msgid "<font color=\"red\"><b>Unable to find log path!</b></font>"
+msgstr ""
+
+#, c-format
+msgid "<font color=\"red\"><b>Could not read file: %s</b></font>"
+msgstr ""
+
+#, c-format
+msgid "(%s) %s <AUTO-REPLY>: %s\n"
+msgstr ""
+
+#, c-format
+msgid "You are using %s, but this plugin requires %s."
+msgstr ""
+
+msgid "This plugin has not defined an ID."
+msgstr ""
+
+#, c-format
+msgid "Plugin magic mismatch %d (need %d)"
+msgstr ""
+
+#, c-format
+msgid "ABI version mismatch %d.%d.x (need %d.%d.x)"
+msgstr ""
+
+msgid ""
+"Plugin does not implement all required functions (list_icon, login and close)"
+msgstr ""
+
+#, c-format
+msgid ""
+"The required plugin %s was not found. Please install this plugin and try "
+"again."
+msgstr ""
+
+msgid "Unable to load the plugin"
+msgstr ""
+
+#, c-format
+msgid "The required plugin %s was unable to load."
+msgstr ""
+
+msgid "Unable to load your plugin."
+msgstr ""
+
+#, c-format
+msgid "%s requires %s, but it failed to unload."
+msgstr ""
+
+msgid "Autoaccept"
+msgstr ""
+
+msgid "Auto-accept file transfer requests from selected users."
+msgstr ""
+
+#, c-format
+msgid "Autoaccepted file transfer of \"%s\" from \"%s\" completed."
+msgstr ""
+
+msgid "Autoaccept complete"
+msgstr ""
+
+#, c-format
+msgid "When a file-transfer request arrives from %s"
+msgstr ""
+
+msgid "Set Autoaccept Setting"
+msgstr ""
+
+msgid "_Save"
+msgstr ""
+
+msgid "_Cancel"
+msgstr ""
+
+msgid "Ask"
+msgstr ""
+
+msgid "Auto Accept"
+msgstr ""
+
+msgid "Auto Reject"
+msgstr ""
+
+msgid "Autoaccept File Transfers..."
+msgstr ""
+
+#. XXX: Is there a better way than this? There really should be.
+msgid ""
+"Path to save the files in\n"
+"(Please provide the full path)"
+msgstr ""
+
+msgid "Automatically reject from users not in buddy list"
+msgstr ""
+
+msgid ""
+"Notify with a popup when an autoaccepted file transfer is complete\n"
+"(only when there's no conversation with the sender)"
+msgstr ""
+
+msgid "Create a new directory for each user"
+msgstr ""
+
+msgid "Notes"
+msgstr ""
+
+msgid "Enter your notes below..."
+msgstr ""
+
+msgid "Edit Notes..."
+msgstr ""
+
+#. *< major version
+#. *< minor version
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Buddy Notes"
+msgstr ""
+
+#. *< name
+#. *< version
+msgid "Store notes on particular buddies."
+msgstr ""
+
+#. *< summary
+msgid "Adds the option to store notes for buddies on your buddy list."
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Cipher Test"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Tests the ciphers that ship with libpurple."
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "DBus Example"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "DBus Plugin Example"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "File Control"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Allows control by entering commands in a file."
+msgstr ""
+
+msgid "Minutes"
+msgstr ""
+
+#. This is a cultural reference. Dy'er Mak'er is a song by Led Zeppelin.
+#. If that doesn't translate well into your language, drop the 's before translating.
+msgid "I'dle Mak'er"
+msgstr ""
+
+msgid "Set Account Idle Time"
+msgstr ""
+
+msgid "_Set"
+msgstr ""
+
+msgid "None of your accounts are idle."
+msgstr ""
+
+msgid "Unset Account Idle Time"
+msgstr ""
+
+msgid "_Unset"
+msgstr ""
+
+msgid "Set Idle Time for All Accounts"
+msgstr ""
+
+msgid "Unset Idle Time for All Idled Accounts"
+msgstr ""
+
+msgid "Allows you to hand-configure how long you've been idle"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "IPC Test Client"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Test plugin IPC support, as a client."
+msgstr ""
+
+#. * description
+msgid ""
+"Test plugin IPC support, as a client. This locates the server plugin and "
+"calls the commands registered."
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "IPC Test Server"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Test plugin IPC support, as a server."
+msgstr ""
+
+#. * description
+msgid "Test plugin IPC support, as a server. This registers the IPC commands."
+msgstr ""
+
+msgid "Join/Part Hiding Configuration"
+msgstr ""
+
+msgid "Minimum Room Size"
+msgstr ""
+
+msgid "User Inactivity Timeout (in minutes)"
+msgstr ""
+
+msgid "Apply hiding rules to buddies"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Join/Part Hiding"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Hides extraneous join/part messages."
+msgstr ""
+
+#. * description
+msgid ""
+"This plugin hides join/part messages in large rooms, except for those users "
+"actively taking part in a conversation."
+msgstr ""
+
+#. This is used in the place of a timezone abbreviation if the
+#. * offset is way off. The user should never really see it, but
+#. * it's here just in case. The parens are to make it clear it's
+#. * not a real timezone.
+msgid "(UTC)"
+msgstr ""
+
+msgid "User is offline."
+msgstr ""
+
+msgid "Auto-response sent:"
+msgstr ""
+
+#, c-format
+msgid "%s has signed off."
+msgstr ""
+
+msgid "One or more messages may have been undeliverable."
+msgstr ""
+
+msgid "You were disconnected from the server."
+msgstr ""
+
+msgid ""
+"You are currently disconnected. Messages will not be received unless you are "
+"logged in."
+msgstr ""
+
+msgid "Message could not be sent because the maximum length was exceeded."
+msgstr ""
+
+msgid "Message could not be sent."
+msgstr ""
+
+#. The names of IM clients are marked for translation at the request of
+#. translators who wanted to transliterate them. Many translators
+#. choose to leave them alone. Choose what's best for your language.
+msgid "Adium"
+msgstr ""
+
+#. The names of IM clients are marked for translation at the request of
+#. translators who wanted to transliterate them. Many translators
+#. choose to leave them alone. Choose what's best for your language.
+msgid "Fire"
+msgstr ""
+
+#. The names of IM clients are marked for translation at the request of
+#. translators who wanted to transliterate them. Many translators
+#. choose to leave them alone. Choose what's best for your language.
+msgid "Messenger Plus!"
+msgstr ""
+
+#. The names of IM clients are marked for translation at the request of
+#. translators who wanted to transliterate them. Many translators
+#. choose to leave them alone. Choose what's best for your language.
+msgid "QIP"
+msgstr ""
+
+#. The names of IM clients are marked for translation at the request of
+#. translators who wanted to transliterate them. Many translators
+#. choose to leave them alone. Choose what's best for your language.
+msgid "MSN Messenger"
+msgstr ""
+
+#. The names of IM clients are marked for translation at the request of
+#. translators who wanted to transliterate them. Many translators
+#. choose to leave them alone. Choose what's best for your language.
+msgid "Trillian"
+msgstr ""
+
+#. The names of IM clients are marked for translation at the request of
+#. translators who wanted to transliterate them. Many translators
+#. choose to leave them alone. Choose what's best for your language.
+msgid "aMSN"
+msgstr ""
+
+#. Add general preferences.
+msgid "General Log Reading Configuration"
+msgstr ""
+
+msgid "Fast size calculations"
+msgstr ""
+
+msgid "Use name heuristics"
+msgstr ""
+
+#. Add Log Directory preferences.
+msgid "Log Directory"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Log Reader"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Includes other IM clients' logs in the log viewer."
+msgstr ""
+
+#. * description
+msgid ""
+"When viewing logs, this plugin will include logs from other IM clients. "
+"Currently, this includes Adium, MSN Messenger, and Trillian.\n"
+"\n"
+"WARNING: This plugin is still alpha code and may crash frequently. Use it "
+"at your own risk!"
+msgstr ""
+
+msgid "Mono Plugin Loader"
+msgstr ""
+
+msgid "Loads .NET plugins with Mono."
+msgstr ""
+
+msgid "Add new line in IMs"
+msgstr ""
+
+msgid "Add new line in Chats"
+msgstr ""
+
+#. *< magic
+#. *< major version
+#. *< minor version
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "New Line"
+msgstr ""
+
+#. *< name
+#. *< version
+msgid "Prepends a newline to displayed message."
+msgstr ""
+
+#. *< summary
+msgid ""
+"Prepends a newline to messages so that the rest of the message appears below "
+"the username in the conversation window."
+msgstr ""
+
+msgid "Offline Message Emulation"
+msgstr ""
+
+msgid "Save messages sent to an offline user as pounce."
+msgstr ""
+
+msgid ""
+"The rest of the messages will be saved as pounce. You can edit/delete the "
+"pounce from the `Buddy Pounce' dialog."
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\" is currently offline. Do you want to save the rest of the messages in "
+"a pounce and automatically send them when \"%s\" logs back in?"
+msgstr ""
+
+msgid "Offline Message"
+msgstr ""
+
+msgid "You can edit/delete the pounce from the `Buddy Pounces' dialog"
+msgstr ""
+
+msgid "Yes"
+msgstr ""
+
+msgid "No"
+msgstr ""
+
+msgid "Save offline messages in pounce"
+msgstr ""
+
+msgid "Do not ask. Always save in pounce."
+msgstr ""
+
+msgid "One Time Password"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Perl Plugin Loader"
+msgstr ""
+
+#. *< name
+#. *< version
+#. *< summary
+msgid "Provides support for loading perl plugins."
+msgstr ""
+
+msgid "Psychic Mode"
+msgstr ""
+
+msgid "Psychic mode for incoming conversation"
+msgstr ""
+
+msgid ""
+"Causes conversation windows to appear as other users begin to message you. "
+"This works for AIM, ICQ, XMPP, Sametime, and Yahoo!"
+msgstr ""
+
+msgid "You feel a disturbance in the force..."
+msgstr ""
+
+msgid "Only enable for users on the buddy list"
+msgstr ""
+
+msgid "Disable when away"
+msgstr ""
+
+msgid "Display notification message in conversations"
+msgstr ""
+
+msgid "Raise psychic conversations"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Signals Test"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Test to see that all signals are working properly."
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Simple Plugin"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Tests to see that most things are working."
+msgstr ""
+
+#. Scheme name
+msgid "X.509 Certificates"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "GNUTLS"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Provides SSL support through GNUTLS."
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "NSS"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Provides SSL support through Mozilla NSS."
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "SSL"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Provides a wrapper around SSL support libraries."
+msgstr ""
+
+#, c-format
+msgid "%s is no longer away."
+msgstr ""
+
+#, c-format
+msgid "%s has gone away."
+msgstr ""
+
+#, c-format
+msgid "%s has become idle."
+msgstr ""
+
+#, c-format
+msgid "%s is no longer idle."
+msgstr ""
+
+#, c-format
+msgid "%s has signed on."
+msgstr ""
+
+msgid "Notify When"
+msgstr ""
+
+msgid "Buddy Goes _Away"
+msgstr ""
+
+msgid "Buddy Goes _Idle"
+msgstr ""
+
+msgid "Buddy _Signs On/Off"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Buddy State Notification"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid ""
+"Notifies in a conversation window when a buddy goes or returns from away or "
+"idle."
+msgstr ""
+
+msgid "Tcl Plugin Loader"
+msgstr ""
+
+msgid "Provides support for loading Tcl plugins"
+msgstr ""
+
+msgid ""
+"Unable to detect ActiveTCL installation. If you wish to use TCL plugins, "
+"install ActiveTCL from http://www.activestate.com\n"
+msgstr ""
+
+msgid ""
+"The Apple Bonjour For Windows toolkit wasn't found, see the FAQ at: http://d."
+"pidgin.im/BonjourWindows for more information."
+msgstr ""
+
+msgid "Unable to listen for incoming IM connections\n"
+msgstr ""
+
+msgid ""
+"Unable to establish connection with the local mDNS server. Is it running?"
+msgstr ""
+
+msgid "First name"
+msgstr ""
+
+msgid "Last name"
+msgstr ""
+
+msgid "Email"
+msgstr ""
+
+msgid "AIM Account"
+msgstr ""
+
+msgid "XMPP Account"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Bonjour Protocol Plugin"
+msgstr ""
+
+msgid "Purple Person"
+msgstr ""
+
+#. Creating the options for the protocol
+msgid "Local Port"
+msgstr ""
+
+msgid "Bonjour"
+msgstr ""
+
+#, c-format
+msgid "%s has closed the conversation."
+msgstr ""
+
+msgid "Unable to send the message, the conversation couldn't be started."
+msgstr ""
+
+msgid "Cannot open socket"
+msgstr ""
+
+msgid "Could not bind socket to port"
+msgstr ""
+
+msgid "Could not listen on socket"
+msgstr ""
+
+msgid "Error communicating with local mDNSResponder."
+msgstr ""
+
+msgid "Invalid proxy settings"
+msgstr ""
+
+msgid ""
+"Either the host name or port number specified for your given proxy type is "
+"invalid."
+msgstr ""
+
+msgid "Token Error"
+msgstr ""
+
+msgid "Unable to fetch the token.\n"
+msgstr ""
+
+msgid "Save Buddylist..."
+msgstr ""
+
+msgid "Your buddylist is empty, nothing was written to the file."
+msgstr ""
+
+msgid "Buddylist saved successfully!"
+msgstr ""
+
+#, c-format
+msgid "Couldn't write buddy list for %s to %s"
+msgstr ""
+
+msgid "Couldn't load buddylist"
+msgstr ""
+
+msgid "Load Buddylist..."
+msgstr ""
+
+msgid "Buddylist loaded successfully!"
+msgstr ""
+
+msgid "Save buddylist..."
+msgstr ""
+
+msgid "Load buddylist from file..."
+msgstr ""
+
+msgid "Fill in the registration fields."
+msgstr ""
+
+msgid "Passwords do not match."
+msgstr ""
+
+msgid "Unable to register new account. Error occurred.\n"
+msgstr ""
+
+msgid "New Gadu-Gadu Account Registered"
+msgstr ""
+
+msgid "Registration completed successfully!"
+msgstr ""
+
+msgid "Password"
+msgstr ""
+
+msgid "Password (retype)"
+msgstr ""
+
+msgid "Enter current token"
+msgstr ""
+
+msgid "Current token"
+msgstr ""
+
+msgid "Register New Gadu-Gadu Account"
+msgstr ""
+
+msgid "Please, fill in the following fields"
+msgstr ""
+
+msgid "City"
+msgstr ""
+
+msgid "Year of birth"
+msgstr ""
+
+msgid "Gender"
+msgstr ""
+
+msgid "Male or female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Female"
+msgstr ""
+
+msgid "Only online"
+msgstr ""
+
+msgid "Find buddies"
+msgstr ""
+
+msgid "Please, enter your search criteria below"
+msgstr ""
+
+msgid "Fill in the fields."
+msgstr ""
+
+msgid "Your current password is different from the one that you specified."
+msgstr ""
+
+msgid "Unable to change password. Error occurred.\n"
+msgstr ""
+
+msgid "Change password for the Gadu-Gadu account"
+msgstr ""
+
+msgid "Password was changed successfully!"
+msgstr ""
+
+msgid "Current password"
+msgstr ""
+
+msgid "Please, enter your current password and your new password for UIN: "
+msgstr ""
+
+msgid "Change Gadu-Gadu Password"
+msgstr ""
+
+#, c-format
+msgid "Select a chat for buddy: %s"
+msgstr ""
+
+msgid "Add to chat..."
+msgstr ""
+
+#. Global
+msgid "Available"
+msgstr ""
+
+#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
+#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
+#. Away stuff
+msgid "Away"
+msgstr ""
+
+msgid "UIN"
+msgstr ""
+
+msgid "First Name"
+msgstr ""
+
+msgid "Birth Year"
+msgstr ""
+
+msgid "Unable to display the search results."
+msgstr ""
+
+msgid "Gadu-Gadu Public Directory"
+msgstr ""
+
+msgid "Search results"
+msgstr ""
+
+msgid "No matching users found"
+msgstr ""
+
+msgid "There are no users matching your search criteria."
+msgstr ""
+
+msgid "Unable to read socket"
+msgstr ""
+
+msgid "Buddy list downloaded"
+msgstr ""
+
+msgid "Your buddy list was downloaded from the server."
+msgstr ""
+
+msgid "Buddy list uploaded"
+msgstr ""
+
+msgid "Your buddy list was stored on the server."
+msgstr ""
+
+msgid "Connection failed."
+msgstr ""
+
+msgid "Add to chat"
+msgstr ""
+
+msgid "Chat _name:"
+msgstr ""
+
+msgid "Chat error"
+msgstr ""
+
+msgid "This chat name is already in use"
+msgstr ""
+
+msgid "Not connected to the server."
+msgstr ""
+
+msgid "Find buddies..."
+msgstr ""
+
+msgid "Change password..."
+msgstr ""
+
+msgid "Upload buddylist to Server"
+msgstr ""
+
+msgid "Download buddylist from Server"
+msgstr ""
+
+msgid "Delete buddylist from Server"
+msgstr ""
+
+msgid "Save buddylist to file..."
+msgstr ""
+
+#. magic
+#. major_version
+#. minor_version
+#. plugin type
+#. ui_requirement
+#. flags
+#. dependencies
+#. priority
+#. id
+#. name
+#. version
+msgid "Gadu-Gadu Protocol Plugin"
+msgstr ""
+
+#. summary
+msgid "Polish popular IM"
+msgstr ""
+
+msgid "Gadu-Gadu User"
+msgstr ""
+
+#, c-format
+msgid "Unknown command: %s"
+msgstr ""
+
+#, c-format
+msgid "current topic is: %s"
+msgstr ""
+
+msgid "No topic is set"
+msgstr ""
+
+msgid "File Transfer Failed"
+msgstr ""
+
+msgid "Could not open a listening port."
+msgstr ""
+
+msgid "Error displaying MOTD"
+msgstr ""
+
+msgid "No MOTD available"
+msgstr ""
+
+msgid "There is no MOTD associated with this connection."
+msgstr ""
+
+#, c-format
+msgid "MOTD for %s"
+msgstr ""
+
+msgid "Server has disconnected"
+msgstr ""
+
+msgid "View MOTD"
+msgstr ""
+
+msgid "_Channel:"
+msgstr ""
+
+msgid "_Password:"
+msgstr ""
+
+msgid "IRC nicks may not contain whitespace"
+msgstr ""
+
+#. 1. connect to server
+#. connect to the server
+msgid "Connecting"
+msgstr ""
+
+msgid "SSL support unavailable"
+msgstr ""
+
+msgid "Couldn't create socket"
+msgstr ""
+
+msgid "Couldn't connect to host"
+msgstr ""
+
+msgid "Read error"
+msgstr ""
+
+msgid "Users"
+msgstr ""
+
+msgid "Topic"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+msgid "IRC Protocol Plugin"
+msgstr ""
+
+#. * summary
+msgid "The IRC Protocol Plugin that Sucks Less"
+msgstr ""
+
+#. host to connect to
+msgid "Server"
+msgstr ""
+
+#. port to connect to
+msgid "Port"
+msgstr ""
+
+msgid "Encodings"
+msgstr ""
+
+msgid "Auto-detect incoming UTF-8"
+msgstr ""
+
+msgid "Real name"
+msgstr ""
+
+#.
+#. option = purple_account_option_string_new(_("Quit message"), "quitmsg", IRC_DEFAULT_QUIT);
+#. prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
+#.
+msgid "Use SSL"
+msgstr ""
+
+msgid "Bad mode"
+msgstr ""
+
+#, c-format
+msgid "Ban on %s by %s, set %s ago"
+msgstr ""
+
+#, c-format
+msgid "Ban on %s"
+msgstr ""
+
+msgid "End of ban list"
+msgstr ""
+
+#, c-format
+msgid "You are banned from %s."
+msgstr ""
+
+msgid "Banned"
+msgstr ""
+
+#, c-format
+msgid "Cannot ban %s: banlist is full"
+msgstr ""
+
+msgid " <i>(ircop)</i>"
+msgstr ""
+
+msgid " <i>(identified)</i>"
+msgstr ""
+
+msgid "Nick"
+msgstr ""
+
+msgid "Currently on"
+msgstr ""
+
+msgid "Idle for"
+msgstr ""
+
+msgid "Online since"
+msgstr ""
+
+msgid "<b>Defining adjective:</b>"
+msgstr ""
+
+msgid "Glorious"
+msgstr ""
+
+#, c-format
+msgid "%s has changed the topic to: %s"
+msgstr ""
+
+#, c-format
+msgid "%s has cleared the topic."
+msgstr ""
+
+#, c-format
+msgid "The topic for %s is: %s"
+msgstr ""
+
+#, c-format
+msgid "Unknown message '%s'"
+msgstr ""
+
+msgid "Unknown message"
+msgstr ""
+
+msgid "The IRC server received a message it did not understand."
+msgstr ""
+
+#, c-format
+msgid "Users on %s: %s"
+msgstr ""
+
+msgid "Time Response"
+msgstr ""
+
+msgid "The IRC server's local time is:"
+msgstr ""
+
+msgid "No such channel"
+msgstr ""
+
+#. does this happen?
+msgid "no such channel"
+msgstr ""
+
+msgid "User is not logged in"
+msgstr ""
+
+msgid "No such nick or channel"
+msgstr ""
+
+msgid "Could not send"
+msgstr ""
+
+#, c-format
+msgid "Joining %s requires an invitation."
+msgstr ""
+
+msgid "Invitation only"
+msgstr ""
+
+#, c-format
+msgid "You have been kicked by %s: (%s)"
+msgstr ""
+
+#. Remove user from channel
+#, c-format
+msgid "Kicked by %s (%s)"
+msgstr ""
+
+#, c-format
+msgid "mode (%s %s) by %s"
+msgstr ""
+
+msgid "Invalid nickname"
+msgstr ""
+
+msgid ""
+"Your selected nickname was rejected by the server. It probably contains "
+"invalid characters."
+msgstr ""
+
+msgid ""
+"Your selected account name was rejected by the server. It probably contains "
+"invalid characters."
+msgstr ""
+
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr ""
+
+msgid "Nickname in use"
+msgstr ""
+
+msgid "Cannot change nick"
+msgstr ""
+
+msgid "Could not change nick"
+msgstr ""
+
+#, c-format
+msgid "You have parted the channel%s%s"
+msgstr ""
+
+msgid "Error: invalid PONG from server"
+msgstr ""
+
+#, c-format
+msgid "PING reply -- Lag: %lu seconds"
+msgstr ""
+
+#, c-format
+msgid "Cannot join %s: Registration is required."
+msgstr ""
+
+msgid "Cannot join channel"
+msgstr ""
+
+msgid "Nick or channel is temporarily unavailable."
+msgstr ""
+
+#, c-format
+msgid "Wallops from %s"
+msgstr ""
+
+msgid "action &lt;action to perform&gt;: Perform an action."
+msgstr ""
+
+msgid ""
+"away [message]: Set an away message, or use no message to return from being "
+"away."
+msgstr ""
+
+msgid "ctcp <nick> <msg>: sends ctcp msg to nick."
+msgstr ""
+
+msgid "chanserv: Send a command to chanserv"
+msgstr ""
+
+msgid ""
+"deop &lt;nick1&gt; [nick2] ...: Remove channel operator status from "
+"someone. You must be a channel operator to do this."
+msgstr ""
+
+msgid ""
+"devoice &lt;nick1&gt; [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 ""
+
+msgid ""
+"invite &lt;nick&gt; [room]: Invite someone to join you in the specified "
+"channel, or the current channel."
+msgstr ""
+
+msgid ""
+"j &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]: Enter one or more "
+"channels, optionally providing a channel key for each if needed."
+msgstr ""
+
+msgid ""
+"join &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]: Enter one or more "
+"channels, optionally providing a channel key for each if needed."
+msgstr ""
+
+msgid ""
+"kick &lt;nick&gt; [message]: Remove someone from a channel. You must be a "
+"channel operator to do this."
+msgstr ""
+
+msgid ""
+"list: Display a list of chat rooms on the network. <i>Warning, some servers "
+"may disconnect you upon doing this.</i>"
+msgstr ""
+
+msgid "me &lt;action to perform&gt;: Perform an action."
+msgstr ""
+
+msgid "memoserv: Send a command to memoserv"
+msgstr ""
+
+msgid ""
+"mode &lt;+|-&gt;&lt;A-Za-z&gt; &lt;nick|channel&gt;: Set or unset a channel "
+"or user mode."
+msgstr ""
+
+msgid ""
+"msg &lt;nick&gt; &lt;message&gt;: Send a private message to a user (as "
+"opposed to a channel)."
+msgstr ""
+
+msgid "names [channel]: List the users currently in a channel."
+msgstr ""
+
+msgid "nick &lt;new nickname&gt;: Change your nickname."
+msgstr ""
+
+msgid "nickserv: Send a command to nickserv"
+msgstr ""
+
+msgid "notice &lt;target&lt;: Send a notice to a user or channel."
+msgstr ""
+
+msgid ""
+"op &lt;nick1&gt; [nick2] ...: Grant channel operator status to someone. You "
+"must be a channel operator to do this."
+msgstr ""
+
+msgid ""
+"operwall &lt;message&gt;: If you don't know what this is, you probably "
+"can't use it."
+msgstr ""
+
+msgid "operserv: Send a command to operserv"
+msgstr ""
+
+msgid ""
+"part [room] [message]: Leave the current channel, or a specified channel, "
+"with an optional message."
+msgstr ""
+
+msgid ""
+"ping [nick]: Asks how much lag a user (or the server if no user specified) "
+"has."
+msgstr ""
+
+msgid ""
+"query &lt;nick&gt; &lt;message&gt;: Send a private message to a user (as "
+"opposed to a channel)."
+msgstr ""
+
+msgid "quit [message]: Disconnect from the server, with an optional message."
+msgstr ""
+
+msgid "quote [...]: Send a raw command to the server."
+msgstr ""
+
+msgid ""
+"remove &lt;nick&gt; [message]: Remove someone from a room. You must be a "
+"channel operator to do this."
+msgstr ""
+
+msgid "time: Displays the current local time at the IRC server."
+msgstr ""
+
+msgid "topic [new topic]: View or change the channel topic."
+msgstr ""
+
+msgid "umode &lt;+|-&gt;&lt;A-Za-z&gt;: Set or unset a user mode."
+msgstr ""
+
+msgid "version [nick]: send CTCP VERSION request to a user"
+msgstr ""
+
+msgid ""
+"voice &lt;nick1&gt; [nick2] ...: Grant channel voice status to someone. You "
+"must be a channel operator to do this."
+msgstr ""
+
+msgid ""
+"wallops &lt;message&gt;: If you don't know what this is, you probably can't "
+"use it."
+msgstr ""
+
+msgid "whois [server] &lt;nick&gt;: Get information on a user."
+msgstr ""
+
+msgid "whowas &lt;nick&gt;: Get information on a user that has logged off."
+msgstr ""
+
+#, c-format
+msgid "Reply time from %s: %lu seconds"
+msgstr ""
+
+msgid "PONG"
+msgstr ""
+
+msgid "CTCP PING reply"
+msgstr ""
+
+msgid "Disconnected."
+msgstr ""
+
+msgid "Unknown Error"
+msgstr ""
+
+msgid "Ad-Hoc Command Failed"
+msgstr ""
+
+msgid "execute"
+msgstr ""
+
+msgid "Server requires TLS/SSL for login. No TLS/SSL support found."
+msgstr ""
+
+msgid "You require encryption, but no TLS/SSL support found."
+msgstr ""
+
+msgid "Server requires plaintext authentication over an unencrypted stream"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s requires plaintext authentication over an unencrypted connection. Allow "
+"this and continue authentication?"
+msgstr ""
+
+msgid "Plaintext Authentication"
+msgstr ""
+
+msgid "Invalid response from server."
+msgstr ""
+
+msgid "Server does not use any supported authentication method"
+msgstr ""
+
+msgid "You require encryption, but it is not available on this server."
+msgstr ""
+
+msgid "Invalid challenge from server"
+msgstr ""
+
+msgid "SASL error"
+msgstr ""
+
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+msgid "No session ID given"
+msgstr ""
+
+msgid "Unsupported version of BOSH protocol"
+msgstr ""
+
+msgid "Unable to establish a connection with the server"
+msgstr ""
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+
+msgid "Unable to establish SSL connection"
+msgstr ""
+
+msgid "Unable to create socket"
+msgstr ""
+
+msgid "Write error"
+msgstr ""
+
+msgid "Full Name"
+msgstr ""
+
+msgid "Family Name"
+msgstr ""
+
+msgid "Given Name"
+msgstr ""
+
+msgid "URL"
+msgstr ""
+
+msgid "Street Address"
+msgstr ""
+
+msgid "Extended Address"
+msgstr ""
+
+msgid "Locality"
+msgstr ""
+
+msgid "Region"
+msgstr ""
+
+msgid "Postal Code"
+msgstr ""
+
+msgid "Country"
+msgstr ""
+
+#. lots of clients (including purple) do this, but it's
+#. * out of spec
+msgid "Telephone"
+msgstr ""
+
+msgid "Organization Name"
+msgstr ""
+
+msgid "Organization Unit"
+msgstr ""
+
+msgid "Role"
+msgstr ""
+
+msgid "Birthday"
+msgstr ""
+
+msgid "Description"
+msgstr ""
+
+msgid "Edit XMPP vCard"
+msgstr ""
+
+msgid ""
+"All items below are optional. Enter only the information with which you feel "
+"comfortable."
+msgstr ""
+
+msgid "Client"
+msgstr ""
+
+msgid "Operating System"
+msgstr ""
+
+msgid "Local Time"
+msgstr ""
+
+msgid "Last Activity"
+msgstr ""
+
+msgid "Service Discovery Info"
+msgstr ""
+
+msgid "Service Discovery Items"
+msgstr ""
+
+msgid "Extended Stanza Addressing"
+msgstr ""
+
+msgid "Multi-User Chat"
+msgstr ""
+
+msgid "Multi-User Chat Extended Presence Information"
+msgstr ""
+
+msgid "In-Band Bytestreams"
+msgstr ""
+
+msgid "Ad-Hoc Commands"
+msgstr ""
+
+msgid "PubSub Service"
+msgstr ""
+
+msgid "SOCKS5 Bytestreams"
+msgstr ""
+
+msgid "Out of Band Data"
+msgstr ""
+
+msgid "XHTML-IM"
+msgstr ""
+
+msgid "In-Band Registration"
+msgstr ""
+
+msgid "User Location"
+msgstr ""
+
+msgid "User Avatar"
+msgstr ""
+
+msgid "Chat State Notifications"
+msgstr ""
+
+msgid "Software Version"
+msgstr ""
+
+msgid "Stream Initiation"
+msgstr ""
+
+msgid "File Transfer"
+msgstr ""
+
+msgid "User Mood"
+msgstr ""
+
+msgid "User Activity"
+msgstr ""
+
+msgid "Entity Capabilities"
+msgstr ""
+
+msgid "Encrypted Session Negotiations"
+msgstr ""
+
+msgid "User Tune"
+msgstr ""
+
+msgid "Roster Item Exchange"
+msgstr ""
+
+msgid "Reachability Address"
+msgstr ""
+
+msgid "User Profile"
+msgstr ""
+
+msgid "Jingle"
+msgstr ""
+
+msgid "Jingle Audio"
+msgstr ""
+
+msgid "User Nickname"
+msgstr ""
+
+msgid "Jingle ICE UDP"
+msgstr ""
+
+msgid "Jingle ICE TCP"
+msgstr ""
+
+msgid "Jingle Raw UDP"
+msgstr ""
+
+msgid "Jingle Video"
+msgstr ""
+
+msgid "Jingle DTMF"
+msgstr ""
+
+msgid "Message Receipts"
+msgstr ""
+
+msgid "Public Key Publishing"
+msgstr ""
+
+msgid "User Chatting"
+msgstr ""
+
+msgid "User Browsing"
+msgstr ""
+
+msgid "User Gaming"
+msgstr ""
+
+msgid "User Viewing"
+msgstr ""
+
+msgid "Ping"
+msgstr ""
+
+msgid "Stanza Encryption"
+msgstr ""
+
+msgid "Entity Time"
+msgstr ""
+
+msgid "Delayed Delivery"
+msgstr ""
+
+msgid "Collaborative Data Objects"
+msgstr ""
+
+msgid "File Repository and Sharing"
+msgstr ""
+
+msgid "STUN Service Discovery for Jingle"
+msgstr ""
+
+msgid "Simplified Encrypted Session Negotiation"
+msgstr ""
+
+msgid "Hop Check"
+msgstr ""
+
+msgid "Capabilities"
+msgstr ""
+
+msgid "Priority"
+msgstr ""
+
+msgid "Resource"
+msgstr ""
+
+#, c-format
+msgid "%s ago"
+msgstr ""
+
+msgid "Logged off"
+msgstr ""
+
+msgid "Middle Name"
+msgstr ""
+
+msgid "Address"
+msgstr ""
+
+msgid "P.O. Box"
+msgstr ""
+
+msgid "Photo"
+msgstr ""
+
+msgid "Logo"
+msgstr ""
+
+msgid "Un-hide From"
+msgstr ""
+
+msgid "Temporarily Hide From"
+msgstr ""
+
+#. && NOT ME
+msgid "Cancel Presence Notification"
+msgstr ""
+
+msgid "(Re-)Request authorization"
+msgstr ""
+
+#. if(NOT ME)
+#. shouldn't this just happen automatically when the buddy is
+#. removed?
+msgid "Unsubscribe"
+msgstr ""
+
+msgid "Log In"
+msgstr ""
+
+msgid "Log Out"
+msgstr ""
+
+msgid "Chatty"
+msgstr ""
+
+msgid "Extended Away"
+msgstr ""
+
+msgid "Do Not Disturb"
+msgstr ""
+
+msgid "JID"
+msgstr ""
+
+msgid "Last Name"
+msgstr ""
+
+msgid "The following are the results of your search"
+msgstr ""
+
+#. current comment from Jabber User Directory users.jabber.org
+msgid ""
+"Find a contact by entering the search criteria in the given fields. Note: "
+"Each field supports wild card searches (%)"
+msgstr ""
+
+msgid "Directory Query Failed"
+msgstr ""
+
+msgid "Could not query the directory server."
+msgstr ""
+
+#. Try to translate the message (see static message
+#. list in jabber_user_dir_comments[])
+#, c-format
+msgid "Server Instructions: %s"
+msgstr ""
+
+msgid "Fill in one or more fields to search for any matching XMPP users."
+msgstr ""
+
+msgid "Email Address"
+msgstr ""
+
+msgid "Search for XMPP users"
+msgstr ""
+
+#. "Search"
+msgid "Search"
+msgstr ""
+
+msgid "Invalid Directory"
+msgstr ""
+
+msgid "Enter a User Directory"
+msgstr ""
+
+msgid "Select a user directory to search"
+msgstr ""
+
+msgid "Search Directory"
+msgstr ""
+
+msgid "_Room:"
+msgstr ""
+
+msgid "_Server:"
+msgstr ""
+
+msgid "_Handle:"
+msgstr ""
+
+#, c-format
+msgid "%s is not a valid room name"
+msgstr ""
+
+msgid "Invalid Room Name"
+msgstr ""
+
+#, c-format
+msgid "%s is not a valid server name"
+msgstr ""
+
+msgid "Invalid Server Name"
+msgstr ""
+
+#, c-format
+msgid "%s is not a valid room handle"
+msgstr ""
+
+msgid "Invalid Room Handle"
+msgstr ""
+
+msgid "Configuration error"
+msgstr ""
+
+msgid "Unable to configure"
+msgstr ""
+
+msgid "Room Configuration Error"
+msgstr ""
+
+msgid "This room is not capable of being configured"
+msgstr ""
+
+msgid "Registration error"
+msgstr ""
+
+msgid "Nick changing not supported in non-MUC chatrooms"
+msgstr ""
+
+msgid "Error retrieving room list"
+msgstr ""
+
+msgid "Invalid Server"
+msgstr ""
+
+msgid "Enter a Conference Server"
+msgstr ""
+
+msgid "Select a conference server to query"
+msgstr ""
+
+msgid "Find Rooms"
+msgstr ""
+
+msgid "Affiliations:"
+msgstr ""
+
+msgid "No users found"
+msgstr ""
+
+msgid "Roles:"
+msgstr ""
+
+msgid "Ping timeout"
+msgstr ""
+
+msgid "Read Error"
+msgstr ""
+
+#, c-format
+msgid ""
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
+msgstr ""
+
+msgid "Invalid XMPP ID"
+msgstr ""
+
+msgid "Invalid XMPP ID. Domain must be set."
+msgstr ""
+
+msgid "Malformed BOSH Connect Server"
+msgstr ""
+
+#, c-format
+msgid "Registration of %s@%s successful"
+msgstr ""
+
+#, c-format
+msgid "Registration to %s successful"
+msgstr ""
+
+msgid "Registration Successful"
+msgstr ""
+
+msgid "Registration Failed"
+msgstr ""
+
+#, c-format
+msgid "Registration from %s successfully removed"
+msgstr ""
+
+msgid "Unregistration Successful"
+msgstr ""
+
+msgid "Unregistration Failed"
+msgstr ""
+
+msgid "Already Registered"
+msgstr ""
+
+msgid "State"
+msgstr ""
+
+msgid "Postal code"
+msgstr ""
+
+msgid "Phone"
+msgstr ""
+
+msgid "Date"
+msgstr ""
+
+msgid "Unregister"
+msgstr ""
+
+msgid ""
+"Please fill out the information below to change your account registration."
+msgstr ""
+
+msgid "Please fill out the information below to register your new account."
+msgstr ""
+
+msgid "Register New XMPP Account"
+msgstr ""
+
+msgid "Register"
+msgstr ""
+
+#, c-format
+msgid "Change Account Registration at %s"
+msgstr ""
+
+#, c-format
+msgid "Register New Account at %s"
+msgstr ""
+
+msgid "Change Registration"
+msgstr ""
+
+msgid "Error unregistering account"
+msgstr ""
+
+msgid "Account successfully unregistered"
+msgstr ""
+
+msgid "Initializing Stream"
+msgstr ""
+
+msgid "Initializing SSL/TLS"
+msgstr ""
+
+msgid "Authenticating"
+msgstr ""
+
+msgid "Re-initializing Stream"
+msgstr ""
+
+msgid "Server doesn't support blocking"
+msgstr ""
+
+msgid "Not Authorized"
+msgstr ""
+
+msgid "Mood"
+msgstr ""
+
+msgid "Now Listening"
+msgstr ""
+
+msgid "Both"
+msgstr ""
+
+msgid "From (To pending)"
+msgstr ""
+
+msgid "From"
+msgstr ""
+
+msgid "To"
+msgstr ""
+
+msgid "None (To pending)"
+msgstr ""
+
+msgid "None"
+msgstr ""
+
+msgid "Subscription"
+msgstr ""
+
+msgid "Mood Text"
+msgstr ""
+
+msgid "Allow Buzz"
+msgstr ""
+
+msgid "Tune Artist"
+msgstr ""
+
+msgid "Tune Title"
+msgstr ""
+
+msgid "Tune Album"
+msgstr ""
+
+msgid "Tune Genre"
+msgstr ""
+
+msgid "Tune Comment"
+msgstr ""
+
+msgid "Tune Track"
+msgstr ""
+
+msgid "Tune Time"
+msgstr ""
+
+msgid "Tune Year"
+msgstr ""
+
+msgid "Tune URL"
+msgstr ""
+
+msgid "Password Changed"
+msgstr ""
+
+msgid "Your password has been changed."
+msgstr ""
+
+msgid "Error changing password"
+msgstr ""
+
+msgid "Password (again)"
+msgstr ""
+
+msgid "Change XMPP Password"
+msgstr ""
+
+msgid "Please enter your new password"
+msgstr ""
+
+msgid "Set User Info..."
+msgstr ""
+
+#. if (js->protocol_options & CHANGE_PASSWORD) {
+msgid "Change Password..."
+msgstr ""
+
+#. }
+msgid "Search for Users..."
+msgstr ""
+
+msgid "Bad Request"
+msgstr ""
+
+msgid "Conflict"
+msgstr ""
+
+msgid "Feature Not Implemented"
+msgstr ""
+
+msgid "Forbidden"
+msgstr ""
+
+msgid "Gone"
+msgstr ""
+
+msgid "Internal Server Error"
+msgstr ""
+
+msgid "Item Not Found"
+msgstr ""
+
+msgid "Malformed XMPP ID"
+msgstr ""
+
+msgid "Not Acceptable"
+msgstr ""
+
+msgid "Not Allowed"
+msgstr ""
+
+msgid "Payment Required"
+msgstr ""
+
+msgid "Recipient Unavailable"
+msgstr ""
+
+msgid "Registration Required"
+msgstr ""
+
+msgid "Remote Server Not Found"
+msgstr ""
+
+msgid "Remote Server Timeout"
+msgstr ""
+
+msgid "Server Overloaded"
+msgstr ""
+
+msgid "Service Unavailable"
+msgstr ""
+
+msgid "Subscription Required"
+msgstr ""
+
+msgid "Unexpected Request"
+msgstr ""
+
+msgid "Authorization Aborted"
+msgstr ""
+
+msgid "Incorrect encoding in authorization"
+msgstr ""
+
+msgid "Invalid authzid"
+msgstr ""
+
+msgid "Invalid Authorization Mechanism"
+msgstr ""
+
+msgid "Authorization mechanism too weak"
+msgstr ""
+
+msgid "Temporary Authentication Failure"
+msgstr ""
+
+msgid "Authentication Failure"
+msgstr ""
+
+msgid "Bad Format"
+msgstr ""
+
+msgid "Bad Namespace Prefix"
+msgstr ""
+
+msgid "Resource Conflict"
+msgstr ""
+
+msgid "Connection Timeout"
+msgstr ""
+
+msgid "Host Gone"
+msgstr ""
+
+msgid "Host Unknown"
+msgstr ""
+
+msgid "Improper Addressing"
+msgstr ""
+
+msgid "Invalid ID"
+msgstr ""
+
+msgid "Invalid Namespace"
+msgstr ""
+
+msgid "Invalid XML"
+msgstr ""
+
+msgid "Non-matching Hosts"
+msgstr ""
+
+msgid "Policy Violation"
+msgstr ""
+
+msgid "Remote Connection Failed"
+msgstr ""
+
+msgid "Resource Constraint"
+msgstr ""
+
+msgid "Restricted XML"
+msgstr ""
+
+msgid "See Other Host"
+msgstr ""
+
+msgid "System Shutdown"
+msgstr ""
+
+msgid "Undefined Condition"
+msgstr ""
+
+msgid "Unsupported Encoding"
+msgstr ""
+
+msgid "Unsupported Stanza Type"
+msgstr ""
+
+msgid "Unsupported Version"
+msgstr ""
+
+msgid "XML Not Well Formed"
+msgstr ""
+
+msgid "Stream Error"
+msgstr ""
+
+#, c-format
+msgid "Unable to ban user %s"
+msgstr ""
+
+#, c-format
+msgid "Unknown affiliation: \"%s\""
+msgstr ""
+
+#, c-format
+msgid "Unable to affiliate user %s as \"%s\""
+msgstr ""
+
+#, c-format
+msgid "Unknown role: \"%s\""
+msgstr ""
+
+#, c-format
+msgid "Unable to set role \"%s\" for user: %s"
+msgstr ""
+
+#, c-format
+msgid "Unable to kick user %s"
+msgstr ""
+
+#, c-format
+msgid "Unable to ping user %s"
+msgstr ""
+
+#, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
+msgstr ""
+
+#, c-format
+msgid "Unable to buzz, because %s might be offline."
+msgstr ""
+
+#, c-format
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
+msgstr ""
+
+#, c-format
+msgid "Buzzing %s..."
+msgstr ""
+
+#. Yahoo only supports one attention command: the 'buzz'.
+#. This is index number YAHOO_BUZZ.
+msgid "Buzz"
+msgstr ""
+
+#, c-format
+msgid "%s has buzzed you!"
+msgstr ""
+
+#, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr ""
+
+#, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr ""
+
+#, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr ""
+
+msgid "Media Initiation Failed"
+msgstr ""
+
+#, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr ""
+
+msgid "Select a Resource"
+msgstr ""
+
+msgid "Initiate Media"
+msgstr ""
+
+msgid "config: Configure a chat room."
+msgstr ""
+
+msgid "configure: Configure a chat room."
+msgstr ""
+
+msgid "part [room]: Leave the room."
+msgstr ""
+
+msgid "register: Register with a chat room."
+msgstr ""
+
+msgid "topic [new topic]: View or change the topic."
+msgstr ""
+
+msgid "ban &lt;user&gt; [reason]: Ban a user from the room."
+msgstr ""
+
+msgid ""
+"affiliate &lt;owner|admin|member|outcast|none&gt; [nick1] [nick2] ...: Get "
+"the users with an affiliation or set users' affiliation with the room."
+msgstr ""
+
+msgid ""
+"role &lt;moderator|participant|visitor|none&gt; [nick1] [nick2] ...: Get the "
+"users with an role or set users' role with the room."
+msgstr ""
+
+msgid "invite &lt;user&gt; [message]: Invite a user to the room."
+msgstr ""
+
+msgid "join: &lt;room&gt; [password]: Join a chat on this server."
+msgstr ""
+
+msgid "kick &lt;user&gt; [reason]: Kick a user from the room."
+msgstr ""
+
+msgid ""
+"msg &lt;user&gt; &lt;message&gt;: Send a private message to another user."
+msgstr ""
+
+msgid "ping &lt;jid&gt;:\tPing a user/component/server."
+msgstr ""
+
+msgid "buzz: Buzz a user to get their attention"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "XMPP Protocol Plugin"
+msgstr ""
+
+#. Translators: 'domain' is used here in the context of Internet domains, e.g. pidgin.im
+msgid "Domain"
+msgstr ""
+
+msgid "Require SSL/TLS"
+msgstr ""
+
+msgid "Force old (port 5223) SSL"
+msgstr ""
+
+msgid "Allow plaintext auth over unencrypted streams"
+msgstr ""
+
+msgid "Connect port"
+msgstr ""
+
+#. TODO: default to automatically try different ports. Make the user be
+#. * able to set the first port to try (like LastConnectedPort in Windows client).
+#. Account options
+msgid "Connect server"
+msgstr ""
+
+msgid "File transfer proxies"
+msgstr ""
+
+#. this should probably be part of global smiley theme settings later on,
+#. shared with MSN
+msgid "Show Custom Smileys"
+msgstr ""
+
+#, c-format
+msgid "%s has left the conversation."
+msgstr ""
+
+#, c-format
+msgid "Message from %s"
+msgstr ""
+
+#, c-format
+msgid "%s has set the topic to: %s"
+msgstr ""
+
+#, c-format
+msgid "The topic is: %s"
+msgstr ""
+
+#, c-format
+msgid "Message delivery to %s failed: %s"
+msgstr ""
+
+msgid "XMPP Message Error"
+msgstr ""
+
+#, c-format
+msgid "(Code %s)"
+msgstr ""
+
+msgid "XML Parse error"
+msgstr ""
+
+msgid "Unknown Error in presence"
+msgstr ""
+
+msgid "Create New Room"
+msgstr ""
+
+msgid ""
+"You are creating a new room. Would you like to configure it, or accept the "
+"default settings?"
+msgstr ""
+
+msgid "_Configure Room"
+msgstr ""
+
+msgid "_Accept Defaults"
+msgstr ""
+
+#, c-format
+msgid "Error joining chat %s"
+msgstr ""
+
+#, c-format
+msgid "Error in chat %s"
+msgstr ""
+
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr ""
+
+msgid "Transfer was closed."
+msgstr ""
+
+msgid "Failed to open the file"
+msgstr ""
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
+#, c-format
+msgid "Unable to send file to %s, user does not support file transfers"
+msgstr ""
+
+msgid "File Send Failed"
+msgstr ""
+
+#, c-format
+msgid "Unable to send file to %s, invalid JID"
+msgstr ""
+
+#, c-format
+msgid "Unable to send file to %s, user is not online"
+msgstr ""
+
+#, c-format
+msgid "Unable to send file to %s, not subscribed to user presence"
+msgstr ""
+
+#, c-format
+msgid "Please select the resource of %s to which you would like to send a file"
+msgstr ""
+
+msgid "Edit User Mood"
+msgstr ""
+
+msgid "Please select your mood from the list."
+msgstr ""
+
+msgid "Set"
+msgstr ""
+
+msgid "Set Mood..."
+msgstr ""
+
+msgid "Set User Nickname"
+msgstr ""
+
+msgid "Please specify a new nickname for you."
+msgstr ""
+
+msgid ""
+"This information is visible to all contacts on your contact list, so choose "
+"something appropriate."
+msgstr ""
+
+msgid "Set Nickname..."
+msgstr ""
+
+msgid "Actions"
+msgstr ""
+
+msgid "Select an action"
+msgstr ""
+
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr ""
+
+msgid "Buddy Add error"
+msgstr ""
+
+msgid "The username specified does not exist."
+msgstr ""
+
+#, c-format
+msgid "Buddy list synchronization issue in %s (%s)"
+msgstr ""
+
+#, 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 ""
+
+#, c-format
+msgid ""
+"%s is on the local list but not on the server list. Do you want this buddy "
+"to be added?"
+msgstr ""
+
+#, c-format
+msgid "Unable to parse message"
+msgstr ""
+
+#, c-format
+msgid "Syntax Error (probably a client bug)"
+msgstr ""
+
+#, c-format
+msgid "Invalid email address"
+msgstr ""
+
+#, c-format
+msgid "User does not exist"
+msgstr ""
+
+#, c-format
+msgid "Fully qualified domain name missing"
+msgstr ""
+
+#, c-format
+msgid "Already logged in"
+msgstr ""
+
+#, c-format
+msgid "Invalid username"
+msgstr ""
+
+#, c-format
+msgid "Invalid friendly name"
+msgstr ""
+
+#, c-format
+msgid "List full"
+msgstr ""
+
+#, c-format
+msgid "Already there"
+msgstr ""
+
+#, c-format
+msgid "Not on list"
+msgstr ""
+
+#, c-format
+msgid "User is offline"
+msgstr ""
+
+#, c-format
+msgid "Already in the mode"
+msgstr ""
+
+#, c-format
+msgid "Already in opposite list"
+msgstr ""
+
+#, c-format
+msgid "Too many groups"
+msgstr ""
+
+#, c-format
+msgid "Invalid group"
+msgstr ""
+
+#, c-format
+msgid "User not in group"
+msgstr ""
+
+#, c-format
+msgid "Group name too long"
+msgstr ""
+
+#, c-format
+msgid "Cannot remove group zero"
+msgstr ""
+
+#, c-format
+msgid "Tried to add a user to a group that doesn't exist"
+msgstr ""
+
+#, c-format
+msgid "Switchboard failed"
+msgstr ""
+
+#, c-format
+msgid "Notify transfer failed"
+msgstr ""
+
+#, c-format
+msgid "Required fields missing"
+msgstr ""
+
+#, c-format
+msgid "Too many hits to a FND"
+msgstr ""
+
+#, c-format
+msgid "Not logged in"
+msgstr ""
+
+#, c-format
+msgid "Service temporarily unavailable"
+msgstr ""
+
+#, c-format
+msgid "Database server error"
+msgstr ""
+
+#, c-format
+msgid "Command disabled"
+msgstr ""
+
+#, c-format
+msgid "File operation error"
+msgstr ""
+
+#, c-format
+msgid "Memory allocation error"
+msgstr ""
+
+#, c-format
+msgid "Wrong CHL value sent to server"
+msgstr ""
+
+#, c-format
+msgid "Server busy"
+msgstr ""
+
+#, c-format
+msgid "Server unavailable"
+msgstr ""
+
+#, c-format
+msgid "Peer notification server down"
+msgstr ""
+
+#, c-format
+msgid "Database connect error"
+msgstr ""
+
+#, c-format
+msgid "Server is going down (abandon ship)"
+msgstr ""
+
+#, c-format
+msgid "Error creating connection"
+msgstr ""
+
+#, c-format
+msgid "CVR parameters are either unknown or not allowed"
+msgstr ""
+
+#, c-format
+msgid "Unable to write"
+msgstr ""
+
+#, c-format
+msgid "Session overload"
+msgstr ""
+
+#, c-format
+msgid "User is too active"
+msgstr ""
+
+#, c-format
+msgid "Too many sessions"
+msgstr ""
+
+#, c-format
+msgid "Passport not verified"
+msgstr ""
+
+#, c-format
+msgid "Bad friend file"
+msgstr ""
+
+#, c-format
+msgid "Not expected"
+msgstr ""
+
+#, c-format
+msgid "Friendly name changes too rapidly"
+msgstr ""
+
+#, c-format
+msgid "Server too busy"
+msgstr ""
+
+#, c-format
+msgid "Authentication failed"
+msgstr ""
+
+#, c-format
+msgid "Not allowed when offline"
+msgstr ""
+
+#, c-format
+msgid "Not accepting new users"
+msgstr ""
+
+#, c-format
+msgid "Kids Passport without parental consent"
+msgstr ""
+
+#, c-format
+msgid "Passport account not yet verified"
+msgstr ""
+
+msgid "Passport account suspended"
+msgstr ""
+
+#, c-format
+msgid "Bad ticket"
+msgstr ""
+
+#, c-format
+msgid "Unknown Error Code %d"
+msgstr ""
+
+#, c-format
+msgid "MSN Error: %s\n"
+msgstr ""
+
+msgid "Other Contacts"
+msgstr ""
+
+msgid "Non-IM Contacts"
+msgstr ""
+
+msgid "Nudge"
+msgstr ""
+
+#, c-format
+msgid "%s has nudged you!"
+msgstr ""
+
+#, c-format
+msgid "Nudging %s..."
+msgstr ""
+
+msgid "Email Address..."
+msgstr ""
+
+msgid "Your new MSN friendly name is too long."
+msgstr ""
+
+msgid "Set your friendly name."
+msgstr ""
+
+msgid "This is the name that other MSN buddies will see you as."
+msgstr ""
+
+msgid "Set your home phone number."
+msgstr ""
+
+msgid "Set your work phone number."
+msgstr ""
+
+msgid "Set your mobile phone number."
+msgstr ""
+
+msgid "Allow MSN Mobile pages?"
+msgstr ""
+
+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 ""
+
+msgid "Allow"
+msgstr ""
+
+msgid "Disallow"
+msgstr ""
+
+#, c-format
+msgid "Blocked Text for %s"
+msgstr ""
+
+msgid "No text is blocked for this account."
+msgstr ""
+
+#, c-format
+msgid ""
+"MSN servers are currently blocking the following regular expressions:<br/>%s"
+msgstr ""
+
+msgid "This account does not have email enabled."
+msgstr ""
+
+msgid "Send a mobile message."
+msgstr ""
+
+msgid "Page"
+msgstr ""
+
+msgid "Playing a game"
+msgstr ""
+
+msgid "Working"
+msgstr ""
+
+msgid "Has you"
+msgstr ""
+
+msgid "Home Phone Number"
+msgstr ""
+
+msgid "Work Phone Number"
+msgstr ""
+
+msgid "Mobile Phone Number"
+msgstr ""
+
+msgid "Be Right Back"
+msgstr ""
+
+msgid "Busy"
+msgstr ""
+
+msgid "On the Phone"
+msgstr ""
+
+msgid "Out to Lunch"
+msgstr ""
+
+#. primitive
+#. ID
+#. name - use default
+#. saveable
+#. should be user_settable some day
+#. independent
+msgid "Artist"
+msgstr ""
+
+msgid "Album"
+msgstr ""
+
+msgid "Game Title"
+msgstr ""
+
+msgid "Office Title"
+msgstr ""
+
+msgid "Set Friendly Name..."
+msgstr ""
+
+msgid "Set Home Phone Number..."
+msgstr ""
+
+msgid "Set Work Phone Number..."
+msgstr ""
+
+msgid "Set Mobile Phone Number..."
+msgstr ""
+
+msgid "Enable/Disable Mobile Devices..."
+msgstr ""
+
+msgid "Allow/Disallow Mobile Pages..."
+msgstr ""
+
+msgid "View Blocked Text..."
+msgstr ""
+
+msgid "Open Hotmail Inbox"
+msgstr ""
+
+msgid "Send to Mobile"
+msgstr ""
+
+msgid "Initiate _Chat"
+msgstr ""
+
+msgid "SSL support is needed for MSN. Please install a supported SSL library."
+msgstr ""
+
+msgid "Failed to connect to server."
+msgstr ""
+
+msgid "Error retrieving profile"
+msgstr ""
+
+msgid "General"
+msgstr ""
+
+msgid "Age"
+msgstr ""
+
+msgid "Occupation"
+msgstr ""
+
+msgid "Location"
+msgstr ""
+
+msgid "Hobbies and Interests"
+msgstr ""
+
+msgid "A Little About Me"
+msgstr ""
+
+msgid "Social"
+msgstr ""
+
+msgid "Marital Status"
+msgstr ""
+
+msgid "Interests"
+msgstr ""
+
+msgid "Pets"
+msgstr ""
+
+msgid "Hometown"
+msgstr ""
+
+msgid "Places Lived"
+msgstr ""
+
+msgid "Fashion"
+msgstr ""
+
+msgid "Humor"
+msgstr ""
+
+msgid "Music"
+msgstr ""
+
+msgid "Favorite Quote"
+msgstr ""
+
+msgid "Contact Info"
+msgstr ""
+
+msgid "Personal"
+msgstr ""
+
+msgid "Significant Other"
+msgstr ""
+
+msgid "Home Phone"
+msgstr ""
+
+msgid "Home Phone 2"
+msgstr ""
+
+msgid "Home Address"
+msgstr ""
+
+msgid "Personal Mobile"
+msgstr ""
+
+msgid "Home Fax"
+msgstr ""
+
+msgid "Personal Email"
+msgstr ""
+
+msgid "Personal IM"
+msgstr ""
+
+msgid "Anniversary"
+msgstr ""
+
+#. Business
+msgid "Work"
+msgstr ""
+
+msgid "Job Title"
+msgstr ""
+
+msgid "Company"
+msgstr ""
+
+msgid "Department"
+msgstr ""
+
+msgid "Profession"
+msgstr ""
+
+msgid "Work Phone"
+msgstr ""
+
+msgid "Work Phone 2"
+msgstr ""
+
+msgid "Work Address"
+msgstr ""
+
+msgid "Work Mobile"
+msgstr ""
+
+msgid "Work Pager"
+msgstr ""
+
+msgid "Work Fax"
+msgstr ""
+
+msgid "Work Email"
+msgstr ""
+
+msgid "Work IM"
+msgstr ""
+
+msgid "Start Date"
+msgstr ""
+
+msgid "Favorite Things"
+msgstr ""
+
+msgid "Last Updated"
+msgstr ""
+
+msgid "Homepage"
+msgstr ""
+
+msgid "The user has not created a public profile."
+msgstr ""
+
+msgid ""
+"MSN reported not being able to find the user's profile. This either means "
+"that the user does not exist, or that the user exists but has not created a "
+"public profile."
+msgstr ""
+
+msgid ""
+"Could not find any information in the user's profile. The user most likely "
+"does not exist."
+msgstr ""
+
+msgid "View web profile"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. *< summary
+msgid "Windows Live Messenger Protocol Plugin"
+msgstr ""
+
+msgid "Use HTTP Method"
+msgstr ""
+
+msgid "HTTP Method Server"
+msgstr ""
+
+msgid "Show custom smileys"
+msgstr ""
+
+msgid "nudge: nudge a user to get their attention"
+msgstr ""
+
+msgid "Windows Live ID authentication:Unable to connect"
+msgstr ""
+
+msgid "Windows Live ID authentication:Invalid response"
+msgstr ""
+
+#, c-format
+msgid "%s just sent you a Nudge!"
+msgstr ""
+
+#, c-format
+msgid "Unknown error (%d): %s"
+msgstr ""
+
+msgid "Unable to add user"
+msgstr ""
+
+#, c-format
+msgid "Unknown error (%d)"
+msgstr ""
+
+msgid "The following users are missing from your addressbook"
+msgstr ""
+
+#, c-format
+msgid "Unable to add user on %s (%s)"
+msgstr ""
+
+#, c-format
+msgid "Unable to block user on %s (%s)"
+msgstr ""
+
+#, c-format
+msgid "Unable to permit user on %s (%s)"
+msgstr ""
+
+#, c-format
+msgid "%s could not be added because your buddy list is full."
+msgstr ""
+
+#, c-format
+msgid "%s is not a valid passport account."
+msgstr ""
+
+msgid "Service Temporarily Unavailable."
+msgstr ""
+
+msgid "Unknown error."
+msgstr ""
+
+msgid "Mobile message was not sent because it was too long."
+msgstr ""
+
+#, c-format
+msgid ""
+"The MSN server will shut down for maintenance in %d minute. You will "
+"automatically be signed out at that time. Please finish any conversations "
+"in progress.\n"
+"\n"
+"After the maintenance has been completed, you will be able to successfully "
+"sign in."
+msgid_plural ""
+"The MSN server will shut down for maintenance in %d minutes. You will "
+"automatically be signed out at that time. Please finish any conversations "
+"in progress.\n"
+"\n"
+"After the maintenance has been completed, you will be able to successfully "
+"sign in."
+msgstr[0] ""
+msgstr[1] ""
+
+msgid ""
+"Message was not sent because the system is unavailable. This normally "
+"happens when the user is blocked or does not exist."
+msgstr ""
+
+msgid "Message was not sent because messages are being sent too quickly."
+msgstr ""
+
+msgid "Message was not sent because an unknown encoding error occurred."
+msgstr ""
+
+msgid "Message was not sent because an unknown error occurred."
+msgstr ""
+
+msgid "Unable to connect"
+msgstr ""
+
+msgid "Writing error"
+msgstr ""
+
+msgid "Reading error"
+msgstr ""
+
+#, c-format
+msgid ""
+"Connection error from %s server:\n"
+"%s"
+msgstr ""
+
+msgid "Our protocol is not supported by the server."
+msgstr ""
+
+msgid "Error parsing HTTP."
+msgstr ""
+
+msgid "You have signed on from another location."
+msgstr ""
+
+msgid "The MSN servers are temporarily unavailable. Please wait and try again."
+msgstr ""
+
+msgid "The MSN servers are going down temporarily."
+msgstr ""
+
+#, c-format
+msgid "Unable to authenticate: %s"
+msgstr ""
+
+msgid ""
+"Your MSN buddy list is temporarily unavailable. Please wait and try again."
+msgstr ""
+
+msgid "Handshaking"
+msgstr ""
+
+msgid "Transferring"
+msgstr ""
+
+msgid "Starting authentication"
+msgstr ""
+
+msgid "Getting cookie"
+msgstr ""
+
+msgid "Sending cookie"
+msgstr ""
+
+msgid "Retrieving buddy list"
+msgstr ""
+
+msgid "Away From Computer"
+msgstr ""
+
+msgid "On The Phone"
+msgstr ""
+
+msgid "Out To Lunch"
+msgstr ""
+
+msgid "Message may have not been sent because a timeout occurred:"
+msgstr ""
+
+msgid "Message could not be sent, not allowed while invisible:"
+msgstr ""
+
+msgid "Message could not be sent because the user is offline:"
+msgstr ""
+
+msgid "Message could not be sent because a connection error occurred:"
+msgstr ""
+
+msgid "Message could not be sent because we are sending too quickly:"
+msgstr ""
+
+msgid ""
+"Message could not be sent because we were unable to establish a session with "
+"the server. This is likely a server problem, try again in a few minutes:"
+msgstr ""
+
+msgid ""
+"Message could not be sent because an error with the switchboard occurred:"
+msgstr ""
+
+msgid "Message may have not been sent because an unknown error occurred:"
+msgstr ""
+
+msgid "Delete Buddy from Address Book?"
+msgstr ""
+
+msgid "Do you want to delete this buddy from your address book as well?"
+msgstr ""
+
+msgid "The username specified is invalid."
+msgstr ""
+
+msgid "This Hotmail account may not be active."
+msgstr ""
+
+msgid "Profile URL"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "MSN Protocol Plugin"
+msgstr ""
+
+#, c-format
+msgid "%s is not a valid group."
+msgstr ""
+
+#, c-format
+msgid "%s on %s (%s)"
+msgstr ""
+
+msgid "Unable to rename group"
+msgstr ""
+
+msgid "Unable to delete group"
+msgstr ""
+
+#, c-format
+msgid "%s has added you to his or her buddy list."
+msgstr ""
+
+#, c-format
+msgid "%s has removed you from his or her buddy list."
+msgstr ""
+
+#, c-format
+msgid "No such user: %s"
+msgstr ""
+
+msgid "User lookup"
+msgstr ""
+
+msgid "Reading challenge"
+msgstr ""
+
+msgid "Unexpected challenge length from server"
+msgstr ""
+
+msgid "Logging in"
+msgstr ""
+
+msgid "MySpaceIM - No Username Set"
+msgstr ""
+
+msgid "You appear to have no MySpace username."
+msgstr ""
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr ""
+
+msgid "Lost connection with server"
+msgstr ""
+
+#. Can't write _()'d strings in array initializers. Workaround.
+#. khc: then use N_() in the array initializer and use _() when they are
+#. used
+msgid "New mail messages"
+msgstr ""
+
+msgid "New blog comments"
+msgstr ""
+
+msgid "New profile comments"
+msgstr ""
+
+msgid "New friend requests!"
+msgstr ""
+
+msgid "New picture comments"
+msgstr ""
+
+msgid "MySpace"
+msgstr ""
+
+msgid "IM Friends"
+msgstr ""
+
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Add contacts from server"
+msgstr ""
+
+#. The session is now set up, ready to be connected. This emits the
+#. * signedOn signal, so clients can now do anything with msimprpl, and
+#. * we're ready for it (session key, userid, username all setup).
+msgid "Connected"
+msgstr ""
+
+#, c-format
+msgid "Protocol error, code %d: %s"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s Your password is %d characters, greater than the expected maximum length "
+"of %d for MySpaceIM. Please shorten your password at http://profileedit."
+"myspace.com/index.cfm?fuseaction=accountSettings.changePassword and try "
+"again."
+msgstr ""
+
+msgid "MySpaceIM Error"
+msgstr ""
+
+msgid "Invalid input condition"
+msgstr ""
+
+msgid "Read buffer full (2)"
+msgstr ""
+
+msgid "Unparseable message"
+msgstr ""
+
+#, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr ""
+
+msgid "Failed to add buddy"
+msgstr ""
+
+msgid "'addbuddy' command failed."
+msgstr ""
+
+msgid "persist command failed"
+msgstr ""
+
+msgid "Failed to remove buddy"
+msgstr ""
+
+msgid "'delbuddy' command failed"
+msgstr ""
+
+msgid "blocklist command failed"
+msgstr ""
+
+msgid "Missing Cipher"
+msgstr ""
+
+msgid "The RC4 cipher could not be found"
+msgstr ""
+
+msgid ""
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
+
+msgid "Add friends from MySpace.com"
+msgstr ""
+
+msgid "Importing friends failed"
+msgstr ""
+
+#. TODO: find out how
+msgid "Find people..."
+msgstr ""
+
+msgid "Change IM name..."
+msgstr ""
+
+msgid "myim URL handler"
+msgstr ""
+
+msgid "No suitable MySpaceIM account could be found to open this myim URL."
+msgstr ""
+
+msgid "Enable the proper MySpaceIM account and try again."
+msgstr ""
+
+msgid "Show display name in status text"
+msgstr ""
+
+msgid "Show headline in status text"
+msgstr ""
+
+msgid "Send emoticons"
+msgstr ""
+
+msgid "Screen resolution (dots per inch)"
+msgstr ""
+
+msgid "Base font size (points)"
+msgstr ""
+
+msgid "User"
+msgstr ""
+
+msgid "Headline"
+msgstr ""
+
+msgid "Song"
+msgstr ""
+
+msgid "Total Friends"
+msgstr ""
+
+msgid "Client Version"
+msgstr ""
+
+msgid "MySpaceIM - Username Available"
+msgstr ""
+
+msgid "This username is available. Would you like to set it?"
+msgstr ""
+
+msgid "ONCE SET, THIS CANNOT BE CHANGED!"
+msgstr ""
+
+msgid "MySpaceIM - Please Set a Username"
+msgstr ""
+
+msgid "This username is unavailable."
+msgstr ""
+
+msgid "Please try another username:"
+msgstr ""
+
+#. Protocol won't log in now without a username set.. Disconnect
+msgid "No username set"
+msgstr ""
+
+msgid "Please enter a username to check its availability:"
+msgstr ""
+
+#. TODO: icons for each zap
+#. Lots of comments for translators:
+#. Zap means "to strike suddenly and forcefully as if with a
+#. * projectile or weapon." This term often has an electrical
+#. * connotation, for example, "he was zapped by electricity when
+#. * he put a fork in the toaster."
+msgid "Zap"
+msgstr ""
+
+#, c-format
+msgid "%s has zapped you!"
+msgstr ""
+
+#, c-format
+msgid "Zapping %s..."
+msgstr ""
+
+#. Whack means "to hit or strike someone with a sharp blow"
+msgid "Whack"
+msgstr ""
+
+#, c-format
+msgid "%s has whacked you!"
+msgstr ""
+
+#, c-format
+msgid "Whacking %s..."
+msgstr ""
+
+#. Torch means "to set on fire." Don't worry, this doesn't
+#. * make a whole lot of sense in English, either. Feel free
+#. * to translate it literally.
+msgid "Torch"
+msgstr ""
+
+#, c-format
+msgid "%s has torched you!"
+msgstr ""
+
+#, c-format
+msgid "Torching %s..."
+msgstr ""
+
+#. Smooch means "to kiss someone, often enthusiastically"
+msgid "Smooch"
+msgstr ""
+
+#, c-format
+msgid "%s has smooched you!"
+msgstr ""
+
+#, c-format
+msgid "Smooching %s..."
+msgstr ""
+
+#. A hug is a display of affection; wrapping your arms around someone
+msgid "Hug"
+msgstr ""
+
+#, c-format
+msgid "%s has hugged you!"
+msgstr ""
+
+#, c-format
+msgid "Hugging %s..."
+msgstr ""
+
+#. Slap means "to hit someone with an open/flat hand"
+msgid "Slap"
+msgstr ""
+
+#, c-format
+msgid "%s has slapped you!"
+msgstr ""
+
+#, c-format
+msgid "Slapping %s..."
+msgstr ""
+
+#. Goose means "to pinch someone on their butt"
+msgid "Goose"
+msgstr ""
+
+#, c-format
+msgid "%s has goosed you!"
+msgstr ""
+
+#, c-format
+msgid "Goosing %s..."
+msgstr ""
+
+#. A high-five is when two people's hands slap each other
+#. * in the air above their heads. It is done to celebrate
+#. * something, often a victory, or to congratulate someone.
+msgid "High-five"
+msgstr ""
+
+#, c-format
+msgid "%s has high-fived you!"
+msgstr ""
+
+#, c-format
+msgid "High-fiving %s..."
+msgstr ""
+
+#. We're not entirely sure what the MySpace people mean by
+#. * this... but we think it's the equivalent of "prank." Or, for
+#. * someone to perform a mischievous trick or practical joke.
+msgid "Punk"
+msgstr ""
+
+#, c-format
+msgid "%s has punk'd you!"
+msgstr ""
+
+#, c-format
+msgid "Punking %s..."
+msgstr ""
+
+#. Raspberry is a slang term for the vibrating sound made
+#. * when you stick your tongue out of your mouth with your
+#. * lips closed and blow. It is typically done when
+#. * gloating or bragging. Nowadays it's a pretty silly
+#. * gesture, so it does not carry a harsh negative
+#. * connotation. It is generally used in a playful tone
+#. * with friends.
+msgid "Raspberry"
+msgstr ""
+
+#, c-format
+msgid "%s has raspberried you!"
+msgstr ""
+
+#, c-format
+msgid "Raspberrying %s..."
+msgstr ""
+
+msgid "Required parameters not passed in"
+msgstr ""
+
+msgid "Unable to write to network"
+msgstr ""
+
+msgid "Unable to read from network"
+msgstr ""
+
+msgid "Error communicating with server"
+msgstr ""
+
+msgid "Conference not found"
+msgstr ""
+
+msgid "Conference does not exist"
+msgstr ""
+
+msgid "A folder with that name already exists"
+msgstr ""
+
+msgid "Not supported"
+msgstr ""
+
+msgid "Password has expired"
+msgstr ""
+
+msgid "Incorrect password"
+msgstr ""
+
+msgid "User not found"
+msgstr ""
+
+msgid "Account has been disabled"
+msgstr ""
+
+msgid "The server could not access the directory"
+msgstr ""
+
+msgid "Your system administrator has disabled this operation"
+msgstr ""
+
+msgid "The server is unavailable; try again later"
+msgstr ""
+
+msgid "Cannot add a contact to the same folder twice"
+msgstr ""
+
+msgid "Cannot add yourself"
+msgstr ""
+
+msgid "Master archive is misconfigured"
+msgstr ""
+
+msgid "Incorrect username or password"
+msgstr ""
+
+msgid "Could not recognize the host of the username you entered"
+msgstr ""
+
+msgid ""
+"Your account has been disabled because too many incorrect passwords were "
+"entered"
+msgstr ""
+
+msgid "You cannot add the same person twice to a conversation"
+msgstr ""
+
+msgid "You have reached your limit for the number of contacts allowed"
+msgstr ""
+
+msgid "You have entered an incorrect username"
+msgstr ""
+
+msgid "An error occurred while updating the directory"
+msgstr ""
+
+msgid "Incompatible protocol version"
+msgstr ""
+
+msgid "The user has blocked you"
+msgstr ""
+
+msgid ""
+"This evaluation version does not allow more than ten users to log in at one "
+"time"
+msgstr ""
+
+msgid "The user is either offline or you are blocked"
+msgstr ""
+
+#, c-format
+msgid "Unknown error: 0x%X"
+msgstr ""
+
+#, c-format
+msgid "Login failed (%s)."
+msgstr ""
+
+#, c-format
+msgid "Unable to send message. Could not get details for user (%s)."
+msgstr ""
+
+#, c-format
+msgid "Unable to add %s to your buddy list (%s)."
+msgstr ""
+
+#. TODO: Improve this! message to who or for what conference?
+#, c-format
+msgid "Unable to send message (%s)."
+msgstr ""
+
+#, c-format
+msgid "Unable to invite user (%s)."
+msgstr ""
+
+#, c-format
+msgid "Unable to send message to %s. Could not create the conference (%s)."
+msgstr ""
+
+#, c-format
+msgid "Unable to send message. Could not create the conference (%s)."
+msgstr ""
+
+#, c-format
+msgid ""
+"Unable to move user %s to folder %s in the server side list. Error while "
+"creating folder (%s)."
+msgstr ""
+
+#, c-format
+msgid ""
+"Unable to add %s to your buddy list. Error creating folder in server side "
+"list (%s)."
+msgstr ""
+
+#, c-format
+msgid "Could not get details for user %s (%s)."
+msgstr ""
+
+#, c-format
+msgid "Unable to add user to privacy list (%s)."
+msgstr ""
+
+#, c-format
+msgid "Unable to add %s to deny list (%s)."
+msgstr ""
+
+#, c-format
+msgid "Unable to add %s to permit list (%s)."
+msgstr ""
+
+#, c-format
+msgid "Unable to remove %s from privacy list (%s)."
+msgstr ""
+
+#, c-format
+msgid "Unable to change server side privacy settings (%s)."
+msgstr ""
+
+#, c-format
+msgid "Unable to create conference (%s)."
+msgstr ""
+
+msgid "Error communicating with server. Closing connection."
+msgstr ""
+
+msgid "Telephone Number"
+msgstr ""
+
+msgid "Personal Title"
+msgstr ""
+
+msgid "Mailstop"
+msgstr ""
+
+msgid "User ID"
+msgstr ""
+
+#. tag = _("DN");
+#. value = nm_user_record_get_dn(user_record);
+#. if (value) {
+#. purple_notify_user_info_add_pair(user_info, tag, value);
+#. }
+#.
+msgid "Full name"
+msgstr ""
+
+#, c-format
+msgid "GroupWise Conference %d"
+msgstr ""
+
+msgid "Authenticating..."
+msgstr ""
+
+msgid "Unable to connect to server."
+msgstr ""
+
+msgid "Waiting for response..."
+msgstr ""
+
+#, c-format
+msgid "%s has been invited to this conversation."
+msgstr ""
+
+msgid "Invitation to Conversation"
+msgstr ""
+
+#, c-format
+msgid ""
+"Invitation from: %s\n"
+"\n"
+"Sent: %s"
+msgstr ""
+
+msgid "Would you like to join the conversation?"
+msgstr ""
+
+msgid "You have been logged out because you logged in at another workstation."
+msgstr ""
+
+#, c-format
+msgid ""
+"%s appears to be offline and did not receive the message that you just sent."
+msgstr ""
+
+msgid ""
+"Unable to connect to server. Please enter the address of the server you wish "
+"to connect to."
+msgstr ""
+
+msgid "Error. SSL support is not installed."
+msgstr ""
+
+msgid "This conference has been closed. No more messages can be sent."
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Novell GroupWise Messenger Protocol Plugin"
+msgstr ""
+
+msgid "Server address"
+msgstr ""
+
+msgid "Server port"
+msgstr ""
+
+msgid "Could not join chat room"
+msgstr ""
+
+msgid "Invalid chat room name"
+msgstr ""
+
+msgid "Server closed the connection."
+msgstr ""
+
+#, c-format
+msgid ""
+"Lost connection with server:\n"
+"%s"
+msgstr ""
+
+msgid "Received invalid data on connection with server."
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "AIM Protocol Plugin"
+msgstr ""
+
+msgid "ICQ UIN..."
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "ICQ Protocol Plugin"
+msgstr ""
+
+msgid "Encoding"
+msgstr ""
+
+msgid "The remote user has closed the connection."
+msgstr ""
+
+msgid "The remote user has declined your request."
+msgstr ""
+
+#, c-format
+msgid "Lost connection with the remote user:<br>%s"
+msgstr ""
+
+msgid "Received invalid data on connection with remote user."
+msgstr ""
+
+msgid "Could not establish a connection with the remote user."
+msgstr ""
+
+msgid "Direct IM established"
+msgstr ""
+
+#, 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 ""
+
+#, c-format
+msgid "File %s is %s, which is larger than the maximum size of %s."
+msgstr ""
+
+msgid "Invalid error"
+msgstr ""
+
+msgid "Invalid SNAC"
+msgstr ""
+
+msgid "Rate to host"
+msgstr ""
+
+msgid "Rate to client"
+msgstr ""
+
+msgid "Service unavailable"
+msgstr ""
+
+msgid "Service not defined"
+msgstr ""
+
+msgid "Obsolete SNAC"
+msgstr ""
+
+msgid "Not supported by host"
+msgstr ""
+
+msgid "Not supported by client"
+msgstr ""
+
+msgid "Refused by client"
+msgstr ""
+
+msgid "Reply too big"
+msgstr ""
+
+msgid "Responses lost"
+msgstr ""
+
+msgid "Request denied"
+msgstr ""
+
+msgid "Busted SNAC payload"
+msgstr ""
+
+msgid "Insufficient rights"
+msgstr ""
+
+msgid "In local permit/deny"
+msgstr ""
+
+msgid "Warning level too high (sender)"
+msgstr ""
+
+msgid "Warning level too high (receiver)"
+msgstr ""
+
+msgid "User temporarily unavailable"
+msgstr ""
+
+msgid "No match"
+msgstr ""
+
+msgid "List overflow"
+msgstr ""
+
+msgid "Request ambiguous"
+msgstr ""
+
+msgid "Queue full"
+msgstr ""
+
+msgid "Not while on AOL"
+msgstr ""
+
+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 ""
+
+#, 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 ""
+
+#. Label
+msgid "Buddy Icon"
+msgstr ""
+
+msgid "Voice"
+msgstr ""
+
+msgid "AIM Direct IM"
+msgstr ""
+
+msgid "Get File"
+msgstr ""
+
+msgid "Games"
+msgstr ""
+
+msgid "Add-Ins"
+msgstr ""
+
+msgid "Send Buddy List"
+msgstr ""
+
+msgid "ICQ Direct Connect"
+msgstr ""
+
+msgid "AP User"
+msgstr ""
+
+msgid "ICQ RTF"
+msgstr ""
+
+msgid "Nihilist"
+msgstr ""
+
+msgid "ICQ Server Relay"
+msgstr ""
+
+msgid "Old ICQ UTF8"
+msgstr ""
+
+msgid "Trillian Encryption"
+msgstr ""
+
+msgid "ICQ UTF8"
+msgstr ""
+
+msgid "Hiptop"
+msgstr ""
+
+msgid "Security Enabled"
+msgstr ""
+
+msgid "Video Chat"
+msgstr ""
+
+msgid "iChat AV"
+msgstr ""
+
+msgid "Live Video"
+msgstr ""
+
+msgid "Camera"
+msgstr ""
+
+msgid "Screen Sharing"
+msgstr ""
+
+msgid "Free For Chat"
+msgstr ""
+
+msgid "Not Available"
+msgstr ""
+
+msgid "Occupied"
+msgstr ""
+
+msgid "Web Aware"
+msgstr ""
+
+msgid "Invisible"
+msgstr ""
+
+msgid "IP Address"
+msgstr ""
+
+msgid "Warning Level"
+msgstr ""
+
+msgid "Buddy Comment"
+msgstr ""
+
+#, c-format
+msgid ""
+"Could not connect to authentication server:\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Could not connect to BOS server:\n"
+"%s"
+msgstr ""
+
+msgid "Username sent"
+msgstr ""
+
+msgid "Connection established, cookie sent"
+msgstr ""
+
+#. TODO: Don't call this with ssi
+msgid "Finalizing connection"
+msgstr ""
+
+#, c-format
+msgid ""
+"Unable to login: Could not sign on as %s because the username is invalid. "
+"Usernames must be a valid email address, or start with a letter and contain "
+"only letters, numbers and spaces, or contain only numbers."
+msgstr ""
+
+#. Unregistered username
+#. uid is not exist
+msgid "Invalid username."
+msgstr ""
+
+msgid "Incorrect password."
+msgstr ""
+
+#. Suspended account
+msgid "Your account is currently suspended."
+msgstr ""
+
+#. service temporarily unavailable
+msgid "The AOL Instant Messenger service is temporarily unavailable."
+msgstr ""
+
+#. username connecting too frequently
+#. IP address connecting too frequently
+msgid ""
+"You have been connecting and disconnecting too frequently. Wait ten minutes "
+"and try again. If you continue to try, you will need to wait even longer."
+msgstr ""
+
+#, c-format
+msgid "The client version you are using is too old. Please upgrade at %s"
+msgstr ""
+
+msgid "Could Not Connect"
+msgstr ""
+
+msgid "Received authorization"
+msgstr ""
+
+msgid "The SecurID key entered is invalid."
+msgstr ""
+
+msgid "Enter SecurID"
+msgstr ""
+
+msgid "Enter the 6 digit number from the digital display."
+msgstr ""
+
+#. *
+#. * A wrapper for purple_request_action() that uses @c OK and @c Cancel buttons.
+#.
+msgid "_OK"
+msgstr ""
+
+#, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
+msgstr ""
+
+msgid "Unable to get a valid AIM login hash."
+msgstr ""
+
+#, c-format
+msgid "You may be disconnected shortly. Check %s for updates."
+msgstr ""
+
+msgid "Unable to get a valid login hash."
+msgstr ""
+
+msgid "Password sent"
+msgstr ""
+
+msgid "Unable to initialize connection"
+msgstr ""
+
+msgid "Please authorize me so I can add you to my buddy list."
+msgstr ""
+
+msgid "Authorization Request Message:"
+msgstr ""
+
+msgid "Please authorize me!"
+msgstr ""
+
+msgid "No reason given."
+msgstr ""
+
+msgid "Authorization Denied Message:"
+msgstr ""
+
+#, c-format
+msgid ""
+"The user %u has denied your request to add them to your buddy list for the "
+"following reason:\n"
+"%s"
+msgstr ""
+
+msgid "ICQ authorization denied."
+msgstr ""
+
+#. Someone has granted you authorization
+#, c-format
+msgid "The user %u has granted your request to add them to your buddy list."
+msgstr ""
+
+#, c-format
+msgid ""
+"You have received a special message\n"
+"\n"
+"From: %s [%s]\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"You have received an ICQ page\n"
+"\n"
+"From: %s [%s]\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"You have received an ICQ email from %s [%s]\n"
+"\n"
+"Message is:\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid "ICQ user %u has sent you a buddy: %s (%s)"
+msgstr ""
+
+msgid "Do you want to add this buddy to your buddy list?"
+msgstr ""
+
+msgid "_Add"
+msgstr ""
+
+msgid "_Decline"
+msgstr ""
+
+#, c-format
+msgid "You missed %hu message from %s because it was invalid."
+msgid_plural "You missed %hu messages from %s because they were invalid."
+msgstr[0] ""
+msgstr[1] ""
+
+#, 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] ""
+msgstr[1] ""
+
+#, 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] ""
+msgstr[1] ""
+
+#, c-format
+msgid ""
+"You missed %hu message from %s because his/her warning level is too high."
+msgid_plural ""
+"You missed %hu messages from %s because his/her warning level is too high."
+msgstr[0] ""
+msgstr[1] ""
+
+#, c-format
+msgid "You missed %hu message from %s because your warning level is too high."
+msgid_plural ""
+"You missed %hu messages from %s because your warning level is too high."
+msgstr[0] ""
+msgstr[1] ""
+
+#, c-format
+msgid "You missed %hu message from %s for an unknown reason."
+msgid_plural "You missed %hu messages from %s for an unknown reason."
+msgstr[0] ""
+msgstr[1] ""
+
+#. Data is assumed to be the destination bn
+#, c-format
+msgid "Unable to send message: %s"
+msgstr ""
+
+msgid "Unknown reason."
+msgstr ""
+
+#, c-format
+msgid "Unable to send message to %s:"
+msgstr ""
+
+#, c-format
+msgid "User information not available: %s"
+msgstr ""
+
+msgid "Online Since"
+msgstr ""
+
+msgid "Member Since"
+msgstr ""
+
+msgid "Profile"
+msgstr ""
+
+msgid "Your AIM connection may be lost."
+msgstr ""
+
+#. The conversion failed!
+msgid ""
+"[Unable to display a message from this user because it contained invalid "
+"characters.]"
+msgstr ""
+
+msgid ""
+"The last action you attempted could not be performed because you are over "
+"the rate limit. Please wait 10 seconds and try again."
+msgstr ""
+
+#, c-format
+msgid "You have been disconnected from chat room %s."
+msgstr ""
+
+msgid "Mobile Phone"
+msgstr ""
+
+msgid "Personal Web Page"
+msgstr ""
+
+#. aim_userinfo_t
+#. strip_html_tags
+msgid "Additional Information"
+msgstr ""
+
+msgid "Zip Code"
+msgstr ""
+
+msgid "Work Information"
+msgstr ""
+
+msgid "Division"
+msgstr ""
+
+msgid "Position"
+msgstr ""
+
+msgid "Web Page"
+msgstr ""
+
+msgid "Pop-Up Message"
+msgstr ""
+
+#, c-format
+msgid "The following username is associated with %s"
+msgid_plural "The following usernames are associated with %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#, c-format
+msgid "No results found for email address %s"
+msgstr ""
+
+#, c-format
+msgid "You should receive an email asking to confirm %s."
+msgstr ""
+
+msgid "Account Confirmation Requested"
+msgstr ""
+
+#, c-format
+msgid ""
+"Error 0x%04x: Unable to format username because the requested name differs "
+"from the original."
+msgstr ""
+
+#, c-format
+msgid "Error 0x%04x: Unable to format username because it is invalid."
+msgstr ""
+
+#, c-format
+msgid ""
+"Error 0x%04x: Unable to format username because the requested name is too "
+"long."
+msgstr ""
+
+#, c-format
+msgid ""
+"Error 0x%04x: Unable to change email address because there is already a "
+"request pending for this username."
+msgstr ""
+
+#, c-format
+msgid ""
+"Error 0x%04x: Unable to change email address because the given address has "
+"too many usernames associated with it."
+msgstr ""
+
+#, c-format
+msgid ""
+"Error 0x%04x: Unable to change email address because the given address is "
+"invalid."
+msgstr ""
+
+#, c-format
+msgid "Error 0x%04x: Unknown error."
+msgstr ""
+
+msgid "Error Changing Account Info"
+msgstr ""
+
+#, c-format
+msgid "The email address for %s is %s"
+msgstr ""
+
+msgid "Account Info"
+msgstr ""
+
+msgid ""
+"Your IM Image was not sent. You must be Direct Connected to send IM Images."
+msgstr ""
+
+msgid "Unable to set AIM profile."
+msgstr ""
+
+msgid ""
+"You have probably requested to set your profile before the login procedure "
+"completed. Your profile remains unset; try setting it again when you are "
+"fully connected."
+msgstr ""
+
+#, c-format
+msgid ""
+"The maximum profile length of %d byte has been exceeded. It has been "
+"truncated for you."
+msgid_plural ""
+"The maximum profile length of %d bytes has been exceeded. It has been "
+"truncated for you."
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Profile too long."
+msgstr ""
+
+#, c-format
+msgid ""
+"The maximum away message length of %d byte has been exceeded. It has been "
+"truncated for you."
+msgid_plural ""
+"The maximum away message length of %d bytes has been exceeded. It has been "
+"truncated for you."
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Away message too long."
+msgstr ""
+
+#, c-format
+msgid ""
+"Could not add the buddy %s because the username is invalid. Usernames must "
+"be a valid email address, or start with a letter and contain only letters, "
+"numbers and spaces, or contain only numbers."
+msgstr ""
+
+msgid "Unable to Add"
+msgstr ""
+
+msgid "Unable to Retrieve Buddy List"
+msgstr ""
+
+msgid ""
+"The AIM servers were temporarily unable to send your buddy list. Your buddy "
+"list is not lost, and will probably become available in a few minutes."
+msgstr ""
+
+msgid "Orphans"
+msgstr ""
+
+#, c-format
+msgid ""
+"Could not add the buddy %s because you have too many buddies in your buddy "
+"list. Please remove one and try again."
+msgstr ""
+
+msgid "(no name)"
+msgstr ""
+
+#, c-format
+msgid "Could not add the buddy %s for an unknown reason."
+msgstr ""
+
+#, c-format
+msgid ""
+"The user %s has given you permission to add him or her to your buddy list. "
+"Do you want to add this user?"
+msgstr ""
+
+msgid "Authorization Given"
+msgstr ""
+
+#. Granted
+#, c-format
+msgid "The user %s has granted your request to add them to your buddy list."
+msgstr ""
+
+msgid "Authorization Granted"
+msgstr ""
+
+#. Denied
+#, c-format
+msgid ""
+"The user %s has denied your request to add them to your buddy list for the "
+"following reason:\n"
+"%s"
+msgstr ""
+
+msgid "Authorization Denied"
+msgstr ""
+
+msgid "_Exchange:"
+msgstr ""
+
+msgid "Your IM Image was not sent. You cannot send IM Images in AIM chats."
+msgstr ""
+
+msgid "iTunes Music Store Link"
+msgstr ""
+
+#, c-format
+msgid "Buddy Comment for %s"
+msgstr ""
+
+msgid "Buddy Comment:"
+msgstr ""
+
+#, c-format
+msgid "You have selected to open a Direct IM connection with %s."
+msgstr ""
+
+msgid ""
+"Because this reveals your IP address, it may be considered a security risk. "
+"Do you wish to continue?"
+msgstr ""
+
+msgid "C_onnect"
+msgstr ""
+
+msgid "Get AIM Info"
+msgstr ""
+
+#. We only do this if the user is in our buddy list
+msgid "Edit Buddy Comment"
+msgstr ""
+
+msgid "Get Status Msg"
+msgstr ""
+
+msgid "Direct IM"
+msgstr ""
+
+msgid "Re-request Authorization"
+msgstr ""
+
+msgid "Require authorization"
+msgstr ""
+
+msgid "Web aware (enabling this will cause you to receive SPAM!)"
+msgstr ""
+
+msgid "ICQ Privacy Options"
+msgstr ""
+
+msgid "The new formatting is invalid."
+msgstr ""
+
+msgid "Username formatting can change only capitalization and whitespace."
+msgstr ""
+
+msgid "Change Address To:"
+msgstr ""
+
+msgid "<i>you are not waiting for authorization</i>"
+msgstr ""
+
+msgid "You are awaiting authorization from the following buddies"
+msgstr ""
+
+msgid ""
+"You can re-request authorization from these buddies by right-clicking on "
+"them and selecting \"Re-request Authorization.\""
+msgstr ""
+
+msgid "Find Buddy by Email"
+msgstr ""
+
+msgid "Search for a buddy by email address"
+msgstr ""
+
+msgid "Type the email address of the buddy you are searching for."
+msgstr ""
+
+msgid "_Search"
+msgstr ""
+
+msgid "Set User Info (web)..."
+msgstr ""
+
+msgid "Change Password (web)"
+msgstr ""
+
+msgid "Configure IM Forwarding (web)"
+msgstr ""
+
+#. ICQ actions
+msgid "Set Privacy Options..."
+msgstr ""
+
+#. AIM actions
+msgid "Confirm Account"
+msgstr ""
+
+msgid "Display Currently Registered Email Address"
+msgstr ""
+
+msgid "Change Currently Registered Email Address..."
+msgstr ""
+
+msgid "Show Buddies Awaiting Authorization"
+msgstr ""
+
+msgid "Search for Buddy by Email Address..."
+msgstr ""
+
+msgid "Search for Buddy by Information"
+msgstr ""
+
+msgid ""
+"Always use AIM/ICQ proxy server for\n"
+"file transfers and direct IM (slower,\n"
+"but does not reveal your IP address)"
+msgstr ""
+
+msgid "Allow multiple simultaneous logins"
+msgstr ""
+
+#, c-format
+msgid "Asking %s to connect to us at %s:%hu for Direct IM."
+msgstr ""
+
+#, c-format
+msgid "Attempting to connect to %s:%hu."
+msgstr ""
+
+msgid "Attempting to connect via proxy server."
+msgstr ""
+
+#, c-format
+msgid "%s has just asked to directly connect to %s"
+msgstr ""
+
+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 ""
+
+msgid "Aquarius"
+msgstr ""
+
+msgid "Pisces"
+msgstr ""
+
+msgid "Aries"
+msgstr ""
+
+msgid "Taurus"
+msgstr ""
+
+msgid "Gemini"
+msgstr ""
+
+msgid "Cancer"
+msgstr ""
+
+msgid "Leo"
+msgstr ""
+
+msgid "Virgo"
+msgstr ""
+
+msgid "Libra"
+msgstr ""
+
+msgid "Scorpio"
+msgstr ""
+
+msgid "Sagittarius"
+msgstr ""
+
+msgid "Capricorn"
+msgstr ""
+
+msgid "Rat"
+msgstr ""
+
+msgid "Ox"
+msgstr ""
+
+msgid "Tiger"
+msgstr ""
+
+msgid "Rabbit"
+msgstr ""
+
+msgid "Dragon"
+msgstr ""
+
+msgid "Snake"
+msgstr ""
+
+msgid "Horse"
+msgstr ""
+
+msgid "Goat"
+msgstr ""
+
+msgid "Monkey"
+msgstr ""
+
+msgid "Rooster"
+msgstr ""
+
+msgid "Dog"
+msgstr ""
+
+msgid "Pig"
+msgstr ""
+
+msgid "Other"
+msgstr ""
+
+msgid "Visible"
+msgstr ""
+
+msgid "Friend Only"
+msgstr ""
+
+msgid "Private"
+msgstr ""
+
+msgid "QQ Number"
+msgstr ""
+
+msgid "Country/Region"
+msgstr ""
+
+msgid "Province/State"
+msgstr ""
+
+msgid "Zipcode"
+msgstr ""
+
+msgid "Phone Number"
+msgstr ""
+
+msgid "Authorize adding"
+msgstr ""
+
+msgid "Cellphone Number"
+msgstr ""
+
+msgid "Personal Introduction"
+msgstr ""
+
+msgid "City/Area"
+msgstr ""
+
+msgid "Publish Mobile"
+msgstr ""
+
+msgid "Publish Contact"
+msgstr ""
+
+msgid "College"
+msgstr ""
+
+msgid "Horoscope"
+msgstr ""
+
+msgid "Zodiac"
+msgstr ""
+
+msgid "Blood"
+msgstr ""
+
+msgid "True"
+msgstr ""
+
+msgid "False"
+msgstr ""
+
+msgid "Modify Contact"
+msgstr ""
+
+msgid "Modify Address"
+msgstr ""
+
+msgid "Modify Extended Information"
+msgstr ""
+
+msgid "Modify Information"
+msgstr ""
+
+msgid "Update"
+msgstr ""
+
+msgid "Could not change buddy information."
+msgstr ""
+
+msgid "Mobile"
+msgstr ""
+
+msgid "Note"
+msgstr ""
+
+#. callback
+msgid "Buddy Memo"
+msgstr ""
+
+msgid "Change his/her memo as you like"
+msgstr ""
+
+msgid "_Modify"
+msgstr ""
+
+msgid "Memo Modify"
+msgstr ""
+
+msgid "Server says:"
+msgstr ""
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
+#, c-format
+msgid "%u requires verification"
+msgstr ""
+
+msgid "Add buddy question"
+msgstr ""
+
+msgid "Enter answer here"
+msgstr ""
+
+msgid "Send"
+msgstr ""
+
+msgid "Invalid answer."
+msgstr ""
+
+msgid "Authorization denied message:"
+msgstr ""
+
+msgid "Sorry, you're not my style."
+msgstr ""
+
+#, c-format
+msgid "%u needs authorization"
+msgstr ""
+
+msgid "Add buddy authorize"
+msgstr ""
+
+msgid "Enter request here"
+msgstr ""
+
+msgid "Would you be my friend?"
+msgstr ""
+
+msgid "QQ Buddy"
+msgstr ""
+
+msgid "Add buddy"
+msgstr ""
+
+msgid "Invalid QQ Number"
+msgstr ""
+
+msgid "Failed sending authorize"
+msgstr ""
+
+#, c-format
+msgid "Failed removing buddy %u"
+msgstr ""
+
+#, c-format
+msgid "Failed removing me from %d's buddy list"
+msgstr ""
+
+msgid "No reason given"
+msgstr ""
+
+#. only need to get value
+#, c-format
+msgid "You have been added by %s"
+msgstr ""
+
+msgid "Would you like to add him?"
+msgstr ""
+
+#, c-format
+msgid "Rejected by %s"
+msgstr ""
+
+#, c-format
+msgid "Message: %s"
+msgstr ""
+
+msgid "ID: "
+msgstr ""
+
+msgid "Group ID"
+msgstr ""
+
+msgid "QQ Qun"
+msgstr ""
+
+msgid "Please enter Qun number"
+msgstr ""
+
+msgid "You can only search for permanent Qun\n"
+msgstr ""
+
+msgid "(Invalid UTF-8 string)"
+msgstr ""
+
+msgid "Not member"
+msgstr ""
+
+msgid "Member"
+msgstr ""
+
+msgid "Requesting"
+msgstr ""
+
+msgid "Admin"
+msgstr ""
+
+msgid "Notice"
+msgstr ""
+
+msgid "Detail"
+msgstr ""
+
+msgid "Creator"
+msgstr ""
+
+msgid "About me"
+msgstr ""
+
+msgid "Category"
+msgstr ""
+
+msgid "The Qun does not allow others to join"
+msgstr ""
+
+msgid "Join QQ Qun"
+msgstr ""
+
+msgid "Input request here"
+msgstr ""
+
+#, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr ""
+
+msgid "Successfully joined Qun"
+msgstr ""
+
+#, c-format
+msgid "Qun %u denied from joining"
+msgstr ""
+
+msgid "QQ Qun Operation"
+msgstr ""
+
+msgid "Failed:"
+msgstr ""
+
+msgid "Join Qun, Unknown Reply"
+msgstr ""
+
+msgid "Quit Qun"
+msgstr ""
+
+msgid ""
+"Note, if you are the creator, \n"
+"this operation will eventually remove this Qun."
+msgstr ""
+
+msgid "Sorry, you are not our style"
+msgstr ""
+
+msgid "Successfully changed Qun members"
+msgstr ""
+
+msgid "Successfully changed Qun information"
+msgstr ""
+
+msgid "You have successfully created a Qun"
+msgstr ""
+
+msgid "Would you like to set up detailed information now?"
+msgstr ""
+
+msgid "Setup"
+msgstr ""
+
+#, c-format
+msgid "%u requested to join Qun %u for %s"
+msgstr ""
+
+#, c-format
+msgid "%u request to join Qun %u"
+msgstr ""
+
+#, c-format
+msgid "Failed to join Qun %u, operated by admin %u"
+msgstr ""
+
+#, c-format
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
+msgstr ""
+
+#, c-format
+msgid "<b>Removed buddy %u.</b>"
+msgstr ""
+
+#, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr ""
+
+#, c-format
+msgid "Unknown-%d"
+msgstr ""
+
+msgid "Level"
+msgstr ""
+
+msgid " VIP"
+msgstr ""
+
+msgid " TCP"
+msgstr ""
+
+msgid " FromMobile"
+msgstr ""
+
+msgid " BindMobile"
+msgstr ""
+
+msgid " Video"
+msgstr ""
+
+msgid " Zone"
+msgstr ""
+
+msgid "Flag"
+msgstr ""
+
+msgid "Ver"
+msgstr ""
+
+msgid "Invalid name"
+msgstr ""
+
+msgid "Select icon..."
+msgstr ""
+
+#, c-format
+msgid "<b>Login time</b>: %d-%d-%d, %d:%d:%d<br>\n"
+msgstr ""
+
+#, c-format
+msgid "<b>Total Online Buddies</b>: %d<br>\n"
+msgstr ""
+
+#, c-format
+msgid "<b>Last Refresh</b>: %d-%d-%d, %d:%d:%d<br>\n"
+msgstr ""
+
+#, c-format
+msgid "<b>Server</b>: %s<br>\n"
+msgstr ""
+
+#, c-format
+msgid "<b>Client Tag</b>: %s<br>\n"
+msgstr ""
+
+#, c-format
+msgid "<b>Connection Mode</b>: %s<br>\n"
+msgstr ""
+
+#, c-format
+msgid "<b>My Internet IP</b>: %s:%d<br>\n"
+msgstr ""
+
+#, c-format
+msgid "<b>Sent</b>: %lu<br>\n"
+msgstr ""
+
+#, c-format
+msgid "<b>Resend</b>: %lu<br>\n"
+msgstr ""
+
+#, c-format
+msgid "<b>Lost</b>: %lu<br>\n"
+msgstr ""
+
+#, c-format
+msgid "<b>Received</b>: %lu<br>\n"
+msgstr ""
+
+#, c-format
+msgid "<b>Received Duplicate</b>: %lu<br>\n"
+msgstr ""
+
+#, c-format
+msgid "<b>Time</b>: %d-%d-%d, %d:%d:%d<br>\n"
+msgstr ""
+
+#, c-format
+msgid "<b>IP</b>: %s<br>\n"
+msgstr ""
+
+msgid "Login Information"
+msgstr ""
+
+msgid "<p><b>Original Author</b>:<br>\n"
+msgstr ""
+
+msgid "<p><b>Code Contributors</b>:<br>\n"
+msgstr ""
+
+msgid "<p><b>Lovely Patch Writers</b>:<br>\n"
+msgstr ""
+
+msgid "<p><b>Acknowledgement</b>:<br>\n"
+msgstr ""
+
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr ""
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
+msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
+msgstr ""
+
+msgid "<i>Feel free to join us!</i> :)"
+msgstr ""
+
+#, c-format
+msgid "About OpenQ %s"
+msgstr ""
+
+msgid "Change Icon"
+msgstr ""
+
+msgid "Change Password"
+msgstr ""
+
+msgid "Account Information"
+msgstr ""
+
+msgid "Update all QQ Quns"
+msgstr ""
+
+msgid "About OpenQ"
+msgstr ""
+
+msgid "Modify Buddy Memo"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "QQ Protocol Plugin"
+msgstr ""
+
+msgid "Auto"
+msgstr ""
+
+msgid "Select Server"
+msgstr ""
+
+msgid "QQ2005"
+msgstr ""
+
+msgid "QQ2007"
+msgstr ""
+
+msgid "QQ2008"
+msgstr ""
+
+msgid "Connect by TCP"
+msgstr ""
+
+msgid "Show server notice"
+msgstr ""
+
+msgid "Show server news"
+msgstr ""
+
+msgid "Show chat room when msg comes"
+msgstr ""
+
+msgid "Keep alive interval (seconds)"
+msgstr ""
+
+msgid "Update interval (seconds)"
+msgstr ""
+
+msgid "Cannot decrypt server reply"
+msgstr ""
+
+#, c-format
+msgid "Failed requesting token, 0x%02X"
+msgstr ""
+
+#, c-format
+msgid "Invalid token len, %d"
+msgstr ""
+
+#. extend redirect used in QQ2006
+msgid "Redirect_EX is not currently supported"
+msgstr ""
+
+#. need activation
+#. need activation
+#. need activation
+msgid "Activation required"
+msgstr ""
+
+#, c-format
+msgid "Unknown reply code when logging in (0x%02X)"
+msgstr ""
+
+msgid "Could not decrypt server reply"
+msgstr ""
+
+msgid "Requesting captcha"
+msgstr ""
+
+msgid "Checking captcha"
+msgstr ""
+
+msgid "Failed captcha verification"
+msgstr ""
+
+msgid "Captcha Image"
+msgstr ""
+
+msgid "Enter code"
+msgstr ""
+
+msgid "QQ Captcha Verification"
+msgstr ""
+
+msgid "Enter the text from the image"
+msgstr ""
+
+#, c-format
+msgid "Unknown reply when checking password (0x%02X)"
+msgstr ""
+
+#, c-format
+msgid ""
+"Unknown reply code when logging in (0x%02X):\n"
+"%s"
+msgstr ""
+
+msgid "Unable to connect."
+msgstr ""
+
+msgid "Socket error"
+msgstr ""
+
+msgid "Unable to read from socket"
+msgstr ""
+
+msgid "Write Error"
+msgstr ""
+
+msgid "Connection lost"
+msgstr ""
+
+msgid "Getting server"
+msgstr ""
+
+msgid "Requesting token"
+msgstr ""
+
+msgid "Couldn't resolve host"
+msgstr ""
+
+msgid "Invalid server or port"
+msgstr ""
+
+msgid "Connecting to server"
+msgstr ""
+
+msgid "QQ Error"
+msgstr ""
+
+#, c-format
+msgid ""
+"Server News:\n"
+"%s\n"
+"%s\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid "%s:%s"
+msgstr ""
+
+#, c-format
+msgid "From %s:"
+msgstr ""
+
+#, c-format
+msgid ""
+"Server notice From %s: \n"
+"%s"
+msgstr ""
+
+msgid "Unknown SERVER CMD"
+msgstr ""
+
+#, c-format
+msgid ""
+"Error reply of %s(0x%02X)\n"
+"Room %u, reply 0x%02X"
+msgstr ""
+
+msgid "QQ Qun Command"
+msgstr ""
+
+msgid "Could not decrypt login reply"
+msgstr ""
+
+msgid "Unknown LOGIN CMD"
+msgstr ""
+
+msgid "Unknown CLIENT CMD"
+msgstr ""
+
+#, c-format
+msgid "%d has declined the file %s"
+msgstr ""
+
+msgid "File Send"
+msgstr ""
+
+#, c-format
+msgid "%d canceled the transfer of %s"
+msgstr ""
+
+msgid "Connection closed (writing)"
+msgstr ""
+
+#, c-format
+msgid "<b>Group Title:</b> %s<br>"
+msgstr ""
+
+#, c-format
+msgid "<b>Notes Group ID:</b> %s<br>"
+msgstr ""
+
+#, c-format
+msgid "Info for Group %s"
+msgstr ""
+
+msgid "Notes Address Book Information"
+msgstr ""
+
+msgid "Invite Group to Conference..."
+msgstr ""
+
+msgid "Get Notes Address Book Info"
+msgstr ""
+
+msgid "Sending Handshake"
+msgstr ""
+
+msgid "Waiting for Handshake Acknowledgement"
+msgstr ""
+
+msgid "Handshake Acknowledged, Sending Login"
+msgstr ""
+
+msgid "Waiting for Login Acknowledgement"
+msgstr ""
+
+msgid "Login Redirected"
+msgstr ""
+
+msgid "Forcing Login"
+msgstr ""
+
+msgid "Login Acknowledged"
+msgstr ""
+
+msgid "Starting Services"
+msgstr ""
+
+#, c-format
+msgid ""
+"A Sametime administrator has issued the following announcement on server %s"
+msgstr ""
+
+msgid "Sametime Administrator Announcement"
+msgstr ""
+
+msgid "Connection reset"
+msgstr ""
+
+#, c-format
+msgid "Error reading from socket: %s"
+msgstr ""
+
+#. this is a regular connect, error out
+msgid "Unable to connect to host"
+msgstr ""
+
+#, c-format
+msgid "Announcement from %s"
+msgstr ""
+
+msgid "Conference Closed"
+msgstr ""
+
+msgid "Unable to send message: "
+msgstr ""
+
+msgid "Place Closed"
+msgstr ""
+
+msgid "Microphone"
+msgstr ""
+
+msgid "Speakers"
+msgstr ""
+
+msgid "Video Camera"
+msgstr ""
+
+msgid "Supports"
+msgstr ""
+
+msgid "External User"
+msgstr ""
+
+msgid "Create conference with user"
+msgstr ""
+
+#, c-format
+msgid ""
+"Please enter a topic for the new conference, and an invitation message to be "
+"sent to %s"
+msgstr ""
+
+msgid "New Conference"
+msgstr ""
+
+msgid "Create"
+msgstr ""
+
+msgid "Available Conferences"
+msgstr ""
+
+msgid "Create New Conference..."
+msgstr ""
+
+msgid "Invite user to a conference"
+msgstr ""
+
+#, c-format
+msgid ""
+"Select a conference from the list below to send an invite to user %s. Select "
+"\"Create New Conference\" if you'd like to create a new conference to invite "
+"this user to."
+msgstr ""
+
+msgid "Invite to Conference"
+msgstr ""
+
+msgid "Invite to Conference..."
+msgstr ""
+
+msgid "Send TEST Announcement"
+msgstr ""
+
+msgid "Topic:"
+msgstr ""
+
+msgid "No Sametime Community Server specified"
+msgstr ""
+
+#, c-format
+msgid ""
+"No host or IP address has been configured for the Meanwhile account %s. "
+"Please enter one below to continue logging in."
+msgstr ""
+
+msgid "Meanwhile Connection Setup"
+msgstr ""
+
+msgid "No Sametime Community Server Specified"
+msgstr ""
+
+msgid "Connect"
+msgstr ""
+
+#, c-format
+msgid "Unknown (0x%04x)<br>"
+msgstr ""
+
+msgid "Last Known Client"
+msgstr ""
+
+msgid "User Name"
+msgstr ""
+
+msgid "Sametime ID"
+msgstr ""
+
+msgid "An ambiguous user ID was entered"
+msgstr ""
+
+#, c-format
+msgid ""
+"The identifier '%s' may possibly refer to any of the following users. Please "
+"select the correct user from the list below to add them to your buddy list."
+msgstr ""
+
+msgid "Select User"
+msgstr ""
+
+msgid "Unable to add user: user not found"
+msgstr ""
+
+#, c-format
+msgid ""
+"The identifier '%s' did not match any users in your Sametime community. This "
+"entry has been removed from your buddy list."
+msgstr ""
+
+#, c-format
+msgid ""
+"Error reading file %s: \n"
+"%s\n"
+msgstr ""
+
+msgid "Remotely Stored Buddy List"
+msgstr ""
+
+msgid "Buddy List Storage Mode"
+msgstr ""
+
+msgid "Local Buddy List Only"
+msgstr ""
+
+msgid "Merge List from Server"
+msgstr ""
+
+msgid "Merge and Save List to Server"
+msgstr ""
+
+msgid "Synchronize List with Server"
+msgstr ""
+
+#, c-format
+msgid "Import Sametime List for Account %s"
+msgstr ""
+
+#, c-format
+msgid "Export Sametime List for Account %s"
+msgstr ""
+
+msgid "Unable to add group: group exists"
+msgstr ""
+
+#, c-format
+msgid "A group named '%s' already exists in your buddy list."
+msgstr ""
+
+msgid "Unable to add group"
+msgstr ""
+
+msgid "Possible Matches"
+msgstr ""
+
+msgid "Notes Address Book group results"
+msgstr ""
+
+#, c-format
+msgid ""
+"The identifier '%s' may possibly refer to any of the following Notes Address "
+"Book groups. Please select the correct group from the list below to add it "
+"to your buddy list."
+msgstr ""
+
+msgid "Select Notes Address Book"
+msgstr ""
+
+msgid "Unable to add group: group not found"
+msgstr ""
+
+#, c-format
+msgid ""
+"The identifier '%s' did not match any Notes Address Book groups in your "
+"Sametime community."
+msgstr ""
+
+msgid "Notes Address Book Group"
+msgstr ""
+
+msgid ""
+"Enter the name of a Notes Address Book group in the field below to add the "
+"group and its members to your buddy list."
+msgstr ""
+
+#, c-format
+msgid "Search results for '%s'"
+msgstr ""
+
+#, 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 ""
+
+msgid "Search Results"
+msgstr ""
+
+msgid "No matches"
+msgstr ""
+
+#, c-format
+msgid "The identifier '%s' did not match any users in your Sametime community."
+msgstr ""
+
+msgid "No Matches"
+msgstr ""
+
+msgid "Search for a user"
+msgstr ""
+
+msgid ""
+"Enter a name or partial ID in the field below to search for matching users "
+"in your Sametime community."
+msgstr ""
+
+msgid "User Search"
+msgstr ""
+
+msgid "Import Sametime List..."
+msgstr ""
+
+msgid "Export Sametime List..."
+msgstr ""
+
+msgid "Add Notes Address Book Group..."
+msgstr ""
+
+msgid "User Search..."
+msgstr ""
+
+msgid "Force login (ignore server redirects)"
+msgstr ""
+
+#. pretend to be Sametime Connect
+msgid "Hide client identity"
+msgstr ""
+
+#, c-format
+msgid "User %s is not present in the network"
+msgstr ""
+
+msgid "Key Agreement"
+msgstr ""
+
+msgid "Cannot perform the key agreement"
+msgstr ""
+
+msgid "Error occurred during key agreement"
+msgstr ""
+
+msgid "Key Agreement failed"
+msgstr ""
+
+msgid "Timeout during key agreement"
+msgstr ""
+
+msgid "Key agreement was aborted"
+msgstr ""
+
+msgid "Key agreement is already started"
+msgstr ""
+
+msgid "Key agreement cannot be started with yourself"
+msgstr ""
+
+msgid "The remote user is not present in the network any more"
+msgstr ""
+
+#, c-format
+msgid ""
+"Key agreement request received from %s. Would you like to perform the key "
+"agreement?"
+msgstr ""
+
+#, c-format
+msgid ""
+"The remote user is waiting key agreement on:\n"
+"Remote host: %s\n"
+"Remote port: %d"
+msgstr ""
+
+msgid "Key Agreement Request"
+msgstr ""
+
+msgid "IM With Password"
+msgstr ""
+
+msgid "Cannot set IM key"
+msgstr ""
+
+msgid "Set IM Password"
+msgstr ""
+
+msgid "Get Public Key"
+msgstr ""
+
+msgid "Cannot fetch the public key"
+msgstr ""
+
+msgid "Show Public Key"
+msgstr ""
+
+msgid "Could not load public key"
+msgstr ""
+
+msgid "User Information"
+msgstr ""
+
+msgid "Cannot get user information"
+msgstr ""
+
+#, c-format
+msgid "The %s buddy is not trusted"
+msgstr ""
+
+msgid ""
+"You cannot receive buddy notifications until you import his/her public key. "
+"You can use the Get Public Key command to get the public key."
+msgstr ""
+
+#. Open file selector to select the public key.
+msgid "Open..."
+msgstr ""
+
+#, c-format
+msgid "The %s buddy is not present in the network"
+msgstr ""
+
+msgid ""
+"To add the buddy you must import his/her public key. Press Import to import "
+"a public key."
+msgstr ""
+
+msgid "_Import..."
+msgstr ""
+
+msgid "Select correct user"
+msgstr ""
+
+msgid ""
+"More than one user was found with the same public key. Select the correct "
+"user from the list to add to the buddy list."
+msgstr ""
+
+msgid ""
+"More than one user was found with the same name. Select the correct user "
+"from the list to add to the buddy list."
+msgstr ""
+
+msgid "Detached"
+msgstr ""
+
+msgid "Indisposed"
+msgstr ""
+
+msgid "Wake Me Up"
+msgstr ""
+
+msgid "Hyper Active"
+msgstr ""
+
+msgid "Robot"
+msgstr ""
+
+msgid "Happy"
+msgstr ""
+
+msgid "Sad"
+msgstr ""
+
+msgid "Angry"
+msgstr ""
+
+msgid "Jealous"
+msgstr ""
+
+msgid "Ashamed"
+msgstr ""
+
+msgid "Invincible"
+msgstr ""
+
+msgid "In Love"
+msgstr ""
+
+msgid "Sleepy"
+msgstr ""
+
+msgid "Bored"
+msgstr ""
+
+msgid "Excited"
+msgstr ""
+
+msgid "Anxious"
+msgstr ""
+
+msgid "User Modes"
+msgstr ""
+
+msgid "Preferred Contact"
+msgstr ""
+
+msgid "Preferred Language"
+msgstr ""
+
+msgid "Device"
+msgstr ""
+
+msgid "Timezone"
+msgstr ""
+
+msgid "Geolocation"
+msgstr ""
+
+msgid "Reset IM Key"
+msgstr ""
+
+msgid "IM with Key Exchange"
+msgstr ""
+
+msgid "IM with Password"
+msgstr ""
+
+msgid "Get Public Key..."
+msgstr ""
+
+msgid "Kill User"
+msgstr ""
+
+msgid "Draw On Whiteboard"
+msgstr ""
+
+msgid "_Passphrase:"
+msgstr ""
+
+#, c-format
+msgid "Channel %s does not exist in the network"
+msgstr ""
+
+msgid "Channel Information"
+msgstr ""
+
+msgid "Cannot get channel information"
+msgstr ""
+
+#, c-format
+msgid "<b>Channel Name:</b> %s"
+msgstr ""
+
+#, c-format
+msgid "<br><b>User Count:</b> %d"
+msgstr ""
+
+#, c-format
+msgid "<br><b>Channel Founder:</b> %s"
+msgstr ""
+
+#, c-format
+msgid "<br><b>Channel Cipher:</b> %s"
+msgstr ""
+
+#. Definition of HMAC: http://en.wikipedia.org/wiki/HMAC
+#, c-format
+msgid "<br><b>Channel HMAC:</b> %s"
+msgstr ""
+
+#, c-format
+msgid "<br><b>Channel Topic:</b><br>%s"
+msgstr ""
+
+#, c-format
+msgid "<br><b>Channel Modes:</b> "
+msgstr ""
+
+#, c-format
+msgid "<br><b>Founder Key Fingerprint:</b><br>%s"
+msgstr ""
+
+#, c-format
+msgid "<br><b>Founder Key Babbleprint:</b><br>%s"
+msgstr ""
+
+msgid "Add Channel Public Key"
+msgstr ""
+
+#. Add new public key
+msgid "Open Public Key..."
+msgstr ""
+
+msgid "Channel Passphrase"
+msgstr ""
+
+msgid "Channel Public Keys List"
+msgstr ""
+
+#, c-format
+msgid ""
+"Channel authentication is used to secure the channel from unauthorized "
+"access. The authentication may be based on passphrase and digital "
+"signatures. If passphrase is set, it is required to be able to join. If "
+"channel public keys are set then only users whose public keys are listed are "
+"able to join."
+msgstr ""
+
+msgid "Channel Authentication"
+msgstr ""
+
+msgid "Add / Remove"
+msgstr ""
+
+msgid "Group Name"
+msgstr ""
+
+msgid "Passphrase"
+msgstr ""
+
+#, c-format
+msgid "Please enter the %s channel private group name and passphrase."
+msgstr ""
+
+msgid "Add Channel Private Group"
+msgstr ""
+
+msgid "User Limit"
+msgstr ""
+
+msgid "Set user limit on channel. Set to zero to reset user limit."
+msgstr ""
+
+msgid "Invite List"
+msgstr ""
+
+msgid "Ban List"
+msgstr ""
+
+msgid "Add Private Group"
+msgstr ""
+
+msgid "Reset Permanent"
+msgstr ""
+
+msgid "Set Permanent"
+msgstr ""
+
+msgid "Set User Limit"
+msgstr ""
+
+msgid "Reset Topic Restriction"
+msgstr ""
+
+msgid "Set Topic Restriction"
+msgstr ""
+
+msgid "Reset Private Channel"
+msgstr ""
+
+msgid "Set Private Channel"
+msgstr ""
+
+msgid "Reset Secret Channel"
+msgstr ""
+
+msgid "Set Secret Channel"
+msgstr ""
+
+#, c-format
+msgid ""
+"You have to join the %s channel before you are able to join the private group"
+msgstr ""
+
+msgid "Join Private Group"
+msgstr ""
+
+msgid "Cannot join private group"
+msgstr ""
+
+msgid "Call Command"
+msgstr ""
+
+msgid "Cannot call command"
+msgstr ""
+
+msgid "Unknown command"
+msgstr ""
+
+msgid "Secure File Transfer"
+msgstr ""
+
+msgid "Error during file transfer"
+msgstr ""
+
+msgid "Remote disconnected"
+msgstr ""
+
+msgid "Permission denied"
+msgstr ""
+
+msgid "Key agreement failed"
+msgstr ""
+
+msgid "Connection timed out"
+msgstr ""
+
+msgid "Creating connection failed"
+msgstr ""
+
+msgid "File transfer session does not exist"
+msgstr ""
+
+msgid "No file transfer session active"
+msgstr ""
+
+msgid "File transfer already started"
+msgstr ""
+
+msgid "Could not perform key agreement for file transfer"
+msgstr ""
+
+msgid "Could not start the file transfer"
+msgstr ""
+
+msgid "Cannot send file"
+msgstr ""
+
+msgid "Error occurred"
+msgstr ""
+
+#, c-format
+msgid "%s has changed the topic of <I>%s</I> to: %s"
+msgstr ""
+
+#, c-format
+msgid "<I>%s</I> set channel <I>%s</I> modes to: %s"
+msgstr ""
+
+#, c-format
+msgid "<I>%s</I> removed all channel <I>%s</I> modes"
+msgstr ""
+
+#, c-format
+msgid "<I>%s</I> set <I>%s's</I> modes to: %s"
+msgstr ""
+
+#, c-format
+msgid "<I>%s</I> removed all <I>%s's</I> modes"
+msgstr ""
+
+#, c-format
+msgid "You have been kicked off <I>%s</I> by <I>%s</I> (%s)"
+msgstr ""
+
+#, c-format
+msgid "You have been killed by %s (%s)"
+msgstr ""
+
+#, c-format
+msgid "Killed by %s (%s)"
+msgstr ""
+
+msgid "Server signoff"
+msgstr ""
+
+msgid "Personal Information"
+msgstr ""
+
+msgid "Birth Day"
+msgstr ""
+
+msgid "Job Role"
+msgstr ""
+
+msgid "Organization"
+msgstr ""
+
+msgid "Unit"
+msgstr ""
+
+msgid "Join Chat"
+msgstr ""
+
+#, c-format
+msgid "You are channel founder on <I>%s</I>"
+msgstr ""
+
+#, c-format
+msgid "Channel founder on <I>%s</I> is <I>%s</I>"
+msgstr ""
+
+msgid "Real Name"
+msgstr ""
+
+msgid "Status Text"
+msgstr ""
+
+msgid "Public Key Fingerprint"
+msgstr ""
+
+msgid "Public Key Babbleprint"
+msgstr ""
+
+msgid "_More..."
+msgstr ""
+
+msgid "Detach From Server"
+msgstr ""
+
+msgid "Cannot detach"
+msgstr ""
+
+msgid "Cannot set topic"
+msgstr ""
+
+msgid "Failed to change nickname"
+msgstr ""
+
+msgid "Roomlist"
+msgstr ""
+
+msgid "Cannot get room list"
+msgstr ""
+
+msgid "Network is empty"
+msgstr ""
+
+msgid "No public key was received"
+msgstr ""
+
+msgid "Server Information"
+msgstr ""
+
+msgid "Cannot get server information"
+msgstr ""
+
+msgid "Server Statistics"
+msgstr ""
+
+msgid "Cannot get server statistics"
+msgstr ""
+
+#, c-format
+msgid ""
+"Local server start time: %s\n"
+"Local server uptime: %s\n"
+"Local server clients: %d\n"
+"Local server channels: %d\n"
+"Local server operators: %d\n"
+"Local router operators: %d\n"
+"Local cell clients: %d\n"
+"Local cell channels: %d\n"
+"Local cell servers: %d\n"
+"Total clients: %d\n"
+"Total channels: %d\n"
+"Total servers: %d\n"
+"Total routers: %d\n"
+"Total server operators: %d\n"
+"Total router operators: %d\n"
+msgstr ""
+
+msgid "Network Statistics"
+msgstr ""
+
+msgid "Ping failed"
+msgstr ""
+
+msgid "Ping reply received from server"
+msgstr ""
+
+msgid "Could not kill user"
+msgstr ""
+
+msgid "WATCH"
+msgstr ""
+
+msgid "Cannot watch user"
+msgstr ""
+
+msgid "Resuming session"
+msgstr ""
+
+msgid "Authenticating connection"
+msgstr ""
+
+msgid "Verifying server public key"
+msgstr ""
+
+msgid "Passphrase required"
+msgstr ""
+
+#, c-format
+msgid ""
+"Received %s's public key. Your local copy does not match this key. Would you "
+"still like to accept this public key?"
+msgstr ""
+
+#, c-format
+msgid "Received %s's public key. Would you like to accept this public key?"
+msgstr ""
+
+#, c-format
+msgid ""
+"Fingerprint and babbleprint for the %s key are:\n"
+"\n"
+"%s\n"
+"%s\n"
+msgstr ""
+
+msgid "Verify Public Key"
+msgstr ""
+
+msgid "_View..."
+msgstr ""
+
+msgid "Unsupported public key type"
+msgstr ""
+
+msgid "Disconnected by server"
+msgstr ""
+
+msgid "Error during connecting to SILC Server"
+msgstr ""
+
+msgid "Key Exchange failed"
+msgstr ""
+
+msgid ""
+"Resuming detached session failed. Press Reconnect to create new connection."
+msgstr ""
+
+msgid "Connection failed"
+msgstr ""
+
+msgid "Performing key exchange"
+msgstr ""
+
+msgid "Unable to create connection"
+msgstr ""
+
+msgid "Could not load SILC key pair"
+msgstr ""
+
+#. Progress
+msgid "Connecting to SILC Server"
+msgstr ""
+
+msgid "Out of memory"
+msgstr ""
+
+msgid "Cannot initialize SILC protocol"
+msgstr ""
+
+msgid "Error loading SILC key pair"
+msgstr ""
+
+#, c-format
+msgid "Download %s: %s"
+msgstr ""
+
+msgid "Your Current Mood"
+msgstr ""
+
+#, c-format
+msgid "Normal"
+msgstr ""
+
+msgid "In love"
+msgstr ""
+
+msgid ""
+"\n"
+"Your Preferred Contact Methods"
+msgstr ""
+
+msgid "SMS"
+msgstr ""
+
+msgid "MMS"
+msgstr ""
+
+msgid "Video conferencing"
+msgstr ""
+
+msgid "Your Current Status"
+msgstr ""
+
+msgid "Online Services"
+msgstr ""
+
+msgid "Let others see what services you are using"
+msgstr ""
+
+msgid "Let others see what computer you are using"
+msgstr ""
+
+msgid "Your VCard File"
+msgstr ""
+
+msgid "Timezone (UTC)"
+msgstr ""
+
+msgid "User Online Status Attributes"
+msgstr ""
+
+msgid ""
+"You can let other users see your online status information and your personal "
+"information. Please fill the information you would like other users to see "
+"about yourself."
+msgstr ""
+
+msgid "Message of the Day"
+msgstr ""
+
+msgid "No Message of the Day available"
+msgstr ""
+
+msgid "There is no Message of the Day associated with this connection"
+msgstr ""
+
+msgid "Create New SILC Key Pair"
+msgstr ""
+
+msgid "Passphrases do not match"
+msgstr ""
+
+msgid "Key Pair Generation failed"
+msgstr ""
+
+msgid "Key length"
+msgstr ""
+
+msgid "Public key file"
+msgstr ""
+
+msgid "Private key file"
+msgstr ""
+
+msgid "Passphrase (retype)"
+msgstr ""
+
+msgid "Generate Key Pair"
+msgstr ""
+
+msgid "Online Status"
+msgstr ""
+
+msgid "View Message of the Day"
+msgstr ""
+
+msgid "Create SILC Key Pair..."
+msgstr ""
+
+#, c-format
+msgid "User <I>%s</I> is not present in the network"
+msgstr ""
+
+msgid "Topic too long"
+msgstr ""
+
+msgid "You must specify a nick"
+msgstr ""
+
+#, c-format
+msgid "channel %s not found"
+msgstr ""
+
+#, c-format
+msgid "channel modes for %s: %s"
+msgstr ""
+
+#, c-format
+msgid "no channel modes are set on %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to set cmodes for %s"
+msgstr ""
+
+#, c-format
+msgid "Unknown command: %s, (may be a client bug)"
+msgstr ""
+
+msgid "part [channel]: Leave the chat"
+msgstr ""
+
+msgid "leave [channel]: Leave the chat"
+msgstr ""
+
+msgid "topic [&lt;new topic&gt;]: View or change the topic"
+msgstr ""
+
+msgid "join &lt;channel&gt; [&lt;password&gt;]: Join a chat on this network"
+msgstr ""
+
+msgid "list: List channels on this network"
+msgstr ""
+
+msgid "whois &lt;nick&gt;: View nick's information"
+msgstr ""
+
+msgid "msg &lt;nick&gt; &lt;message&gt;: Send a private message to a user"
+msgstr ""
+
+msgid "query &lt;nick&gt; [&lt;message&gt;]: Send a private message to a user"
+msgstr ""
+
+msgid "motd: View the server's Message Of The Day"
+msgstr ""
+
+msgid "detach: Detach this session"
+msgstr ""
+
+msgid "quit [message]: Disconnect from the server, with an optional message"
+msgstr ""
+
+msgid "call &lt;command&gt;: Call any silc client command"
+msgstr ""
+
+msgid "kill &lt;nick&gt; [-pubkey|&lt;reason&gt;]: Kill nick"
+msgstr ""
+
+msgid "nick &lt;newnick&gt;: Change your nickname"
+msgstr ""
+
+msgid "whowas &lt;nick&gt;: View nick's information"
+msgstr ""
+
+msgid ""
+"cmode &lt;channel&gt; [+|-&lt;modes&gt;] [arguments]: Change or display "
+"channel modes"
+msgstr ""
+
+msgid ""
+"cumode &lt;channel&gt; +|-&lt;modes&gt; &lt;nick&gt;: Change nick's modes "
+"on channel"
+msgstr ""
+
+msgid "umode &lt;usermodes&gt;: Set your modes in the network"
+msgstr ""
+
+msgid "oper &lt;nick&gt; [-pubkey]: Get server operator privileges"
+msgstr ""
+
+msgid ""
+"invite &lt;channel&gt; [-|+]&lt;nick&gt;: invite nick or add/remove from "
+"channel invite list"
+msgstr ""
+
+msgid "kick &lt;channel&gt; &lt;nick&gt; [comment]: Kick client from channel"
+msgstr ""
+
+msgid "info [server]: View server administrative details"
+msgstr ""
+
+msgid "ban [&lt;channel&gt; +|-&lt;nick&gt;]: Ban client from channel"
+msgstr ""
+
+msgid "getkey &lt;nick|server&gt;: Retrieve client's or server's public key"
+msgstr ""
+
+msgid "stats: View server and network statistics"
+msgstr ""
+
+msgid "ping: Send PING to the connected server"
+msgstr ""
+
+msgid "users &lt;channel&gt;: List users in channel"
+msgstr ""
+
+msgid ""
+"names [-count|-ops|-halfops|-voices|-normal] &lt;channel(s)&gt;: List "
+"specific users in channel(s)"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. * summary
+msgid "SILC Protocol Plugin"
+msgstr ""
+
+#. * description
+msgid "Secure Internet Live Conferencing (SILC) Protocol"
+msgstr ""
+
+msgid "Network"
+msgstr ""
+
+msgid "Public Key file"
+msgstr ""
+
+msgid "Private Key file"
+msgstr ""
+
+msgid "Cipher"
+msgstr ""
+
+msgid "HMAC"
+msgstr ""
+
+msgid "Use Perfect Forward Secrecy"
+msgstr ""
+
+msgid "Public key authentication"
+msgstr ""
+
+msgid "Block IMs without Key Exchange"
+msgstr ""
+
+msgid "Block messages to whiteboard"
+msgstr ""
+
+msgid "Automatically open whiteboard"
+msgstr ""
+
+msgid "Digitally sign and verify all messages"
+msgstr ""
+
+msgid "Creating SILC key pair..."
+msgstr ""
+
+msgid "Cannot create SILC key pair\n"
+msgstr ""
+
+#. Hint for translators: Please check the tabulator width here and in
+#. the next strings (short strings: 2 tabs, longer strings 1 tab,
+#. sum: 3 tabs or 24 characters)
+#, c-format
+msgid "Real Name: \t%s\n"
+msgstr ""
+
+#, c-format
+msgid "User Name: \t%s\n"
+msgstr ""
+
+#, c-format
+msgid "Email: \t\t%s\n"
+msgstr ""
+
+#, c-format
+msgid "Host Name: \t%s\n"
+msgstr ""
+
+#, c-format
+msgid "Organization: \t%s\n"
+msgstr ""
+
+#, c-format
+msgid "Country: \t%s\n"
+msgstr ""
+
+#, c-format
+msgid "Algorithm: \t%s\n"
+msgstr ""
+
+#, c-format
+msgid "Key Length: \t%d bits\n"
+msgstr ""
+
+#, c-format
+msgid "Version: \t%s\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"Public Key Fingerprint:\n"
+"%s\n"
+"\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"Public Key Babbleprint:\n"
+"%s"
+msgstr ""
+
+msgid "Public Key Information"
+msgstr ""
+
+msgid "Paging"
+msgstr ""
+
+msgid "Video Conferencing"
+msgstr ""
+
+msgid "Computer"
+msgstr ""
+
+msgid "PDA"
+msgstr ""
+
+msgid "Terminal"
+msgstr ""
+
+#, c-format
+msgid "%s sent message to whiteboard. Would you like to open the whiteboard?"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s sent message to whiteboard on %s channel. Would you like to open the "
+"whiteboard?"
+msgstr ""
+
+msgid "Whiteboard"
+msgstr ""
+
+msgid "No server statistics available"
+msgstr ""
+
+#, c-format
+msgid "Failure: Version mismatch, upgrade your client"
+msgstr ""
+
+#, c-format
+msgid "Failure: Remote does not trust/support your public key"
+msgstr ""
+
+#, c-format
+msgid "Failure: Remote does not support proposed KE group"
+msgstr ""
+
+#, c-format
+msgid "Failure: Remote does not support proposed cipher"
+msgstr ""
+
+#, c-format
+msgid "Failure: Remote does not support proposed PKCS"
+msgstr ""
+
+#, c-format
+msgid "Failure: Remote does not support proposed hash function"
+msgstr ""
+
+#, c-format
+msgid "Failure: Remote does not support proposed HMAC"
+msgstr ""
+
+#, c-format
+msgid "Failure: Incorrect signature"
+msgstr ""
+
+#, c-format
+msgid "Failure: Invalid cookie"
+msgstr ""
+
+#, c-format
+msgid "Failure: Authentication failed"
+msgstr ""
+
+msgid "Cannot initialize SILC Client connection"
+msgstr ""
+
+msgid "John Noname"
+msgstr ""
+
+#, c-format
+msgid "Could not load SILC key pair: %s"
+msgstr ""
+
+msgid "Could not write"
+msgstr ""
+
+msgid "Could not connect"
+msgstr ""
+
+msgid "Unknown server response."
+msgstr ""
+
+msgid "Could not create listen socket"
+msgstr ""
+
+msgid "Could not resolve hostname"
+msgstr ""
+
+msgid "SIP usernames may not contain whitespaces or @ symbols"
+msgstr ""
+
+msgid "SIP connect server not specified"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+msgid "SIP/SIMPLE Protocol Plugin"
+msgstr ""
+
+#. * summary
+msgid "The SIP/SIMPLE Protocol Plugin"
+msgstr ""
+
+msgid "Publish status (note: everyone may watch you)"
+msgstr ""
+
+msgid "Use UDP"
+msgstr ""
+
+msgid "Use proxy"
+msgstr ""
+
+msgid "Proxy"
+msgstr ""
+
+msgid "Auth User"
+msgstr ""
+
+msgid "Auth Domain"
+msgstr ""
+
+#, c-format
+msgid "%s has sent you a webcam invite, which is not yet supported."
+msgstr ""
+
+msgid "Your SMS was not delivered"
+msgstr ""
+
+msgid "Your Yahoo! message did not get sent."
+msgstr ""
+
+#, c-format
+msgid "Yahoo! system message for %s:"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s has (retroactively) denied your request to add them to your list for the "
+"following reason: %s."
+msgstr ""
+
+#, c-format
+msgid "%s has (retroactively) denied your request to add them to your list."
+msgstr ""
+
+msgid "Add buddy rejected"
+msgstr ""
+
+#. Some error in the received stream
+msgid "Received invalid data"
+msgstr ""
+
+#. Password incorrect
+msgid "Incorrect Password"
+msgstr ""
+
+#. security lock from too many failed login attempts
+msgid "Account locked: Too many failed login attempts"
+msgstr ""
+
+#. the username does not exist
+msgid "Username does not exist"
+msgstr ""
+
+#. indicates a lock of some description
+msgid "Account locked: See the debug log"
+msgstr ""
+
+#. username or password missing
+msgid "Username or password missing"
+msgstr ""
+
+#, c-format
+msgid ""
+"The Yahoo server has requested the use of an unrecognized authentication "
+"method. You will probably not be able to successfully sign on to Yahoo. "
+"Check %s for updates."
+msgstr ""
+
+msgid "Failed Yahoo! Authentication"
+msgstr ""
+
+#, c-format
+msgid ""
+"You have tried to ignore %s, but the user is on your buddy list. Clicking "
+"\"Yes\" will remove and ignore the buddy."
+msgstr ""
+
+msgid "Ignore buddy?"
+msgstr ""
+
+msgid "Your account is locked, please log in to the Yahoo! website."
+msgstr ""
+
+#, c-format
+msgid "Unknown error number %d. Logging into the Yahoo! website may fix this."
+msgstr ""
+
+#, c-format
+msgid "Could not add buddy %s to group %s to the server list on account %s."
+msgstr ""
+
+msgid "Could not add buddy to server list"
+msgstr ""
+
+#, c-format
+msgid "[ Audible %s/%s/%s.swf ] %s"
+msgstr ""
+
+msgid "Received unexpected HTTP response from server."
+msgstr ""
+
+msgid "Connection problem"
+msgstr ""
+
+#, c-format
+msgid ""
+"Lost connection with %s:\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Could not establish a connection with %s:\n"
+"%s"
+msgstr ""
+
+msgid "Not at Home"
+msgstr ""
+
+msgid "Not at Desk"
+msgstr ""
+
+msgid "Not in Office"
+msgstr ""
+
+msgid "On Vacation"
+msgstr ""
+
+msgid "Stepped Out"
+msgstr ""
+
+msgid "Not on server list"
+msgstr ""
+
+msgid "Appear Online"
+msgstr ""
+
+msgid "Appear Permanently Offline"
+msgstr ""
+
+msgid "Presence"
+msgstr ""
+
+msgid "Appear Offline"
+msgstr ""
+
+msgid "Don't Appear Permanently Offline"
+msgstr ""
+
+msgid "Join in Chat"
+msgstr ""
+
+msgid "Initiate Conference"
+msgstr ""
+
+msgid "Presence Settings"
+msgstr ""
+
+msgid "Start Doodling"
+msgstr ""
+
+msgid "Activate which ID?"
+msgstr ""
+
+msgid "Join whom in chat?"
+msgstr ""
+
+msgid "Activate ID..."
+msgstr ""
+
+msgid "Join User in Chat..."
+msgstr ""
+
+msgid "Open Inbox"
+msgstr ""
+
+msgid "join &lt;room&gt;: Join a chat room on the Yahoo network"
+msgstr ""
+
+msgid "list: List rooms on the Yahoo network"
+msgstr ""
+
+msgid "doodle: Request user to start a Doodle session"
+msgstr ""
+
+msgid "Yahoo ID..."
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Yahoo Protocol Plugin"
+msgstr ""
+
+msgid "Yahoo Japan"
+msgstr ""
+
+msgid "Pager server"
+msgstr ""
+
+msgid "Japan Pager server"
+msgstr ""
+
+msgid "Pager port"
+msgstr ""
+
+msgid "File transfer server"
+msgstr ""
+
+msgid "Japan file transfer server"
+msgstr ""
+
+msgid "File transfer port"
+msgstr ""
+
+msgid "Chat room locale"
+msgstr ""
+
+msgid "Ignore conference and chatroom invitations"
+msgstr ""
+
+msgid "Chat room list URL"
+msgstr ""
+
+msgid "Yahoo Chat server"
+msgstr ""
+
+msgid "Yahoo Chat port"
+msgstr ""
+
+#. Write a local message to this conversation showing that a request for a
+#. * Doodle session has been made
+#.
+msgid "Sent Doodle request."
+msgstr ""
+
+msgid "Unable to establish file descriptor."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to send you a group of %d files.\n"
+msgstr ""
+
+msgid "Yahoo! Japan Profile"
+msgstr ""
+
+msgid "Yahoo! Profile"
+msgstr ""
+
+msgid ""
+"Sorry, profiles marked as containing adult content are not supported at this "
+"time."
+msgstr ""
+
+msgid ""
+"If you wish to view this profile, you will need to visit this link in your "
+"web browser:"
+msgstr ""
+
+msgid "Yahoo! ID"
+msgstr ""
+
+msgid "Hobbies"
+msgstr ""
+
+msgid "Latest News"
+msgstr ""
+
+msgid "Home Page"
+msgstr ""
+
+msgid "Cool Link 1"
+msgstr ""
+
+msgid "Cool Link 2"
+msgstr ""
+
+msgid "Cool Link 3"
+msgstr ""
+
+msgid "Last Update"
+msgstr ""
+
+msgid ""
+"This profile is in a language or format that is not supported at this time."
+msgstr ""
+
+msgid ""
+"Could not retrieve the user's profile. This most likely is a temporary "
+"server-side problem. Please try again later."
+msgstr ""
+
+msgid ""
+"Could not retrieve the user's profile. This most likely means that the user "
+"does not exist; however, Yahoo! sometimes does fail to find a user's "
+"profile. If you know that the user exists, please try again later."
+msgstr ""
+
+msgid "The user's profile is empty."
+msgstr ""
+
+#, c-format
+msgid "%s declined your conference invitation to room \"%s\" because \"%s\"."
+msgstr ""
+
+msgid "Invitation Rejected"
+msgstr ""
+
+msgid "Failed to join chat"
+msgstr ""
+
+#. -6
+msgid "Unknown room"
+msgstr ""
+
+#. -15
+msgid "Maybe the room is full"
+msgstr ""
+
+#. -35
+msgid "Not available"
+msgstr ""
+
+msgid ""
+"Unknown error. You may need to logout and wait five minutes before being "
+"able to rejoin a chatroom"
+msgstr ""
+
+#, c-format
+msgid "You are now chatting in %s."
+msgstr ""
+
+msgid "Failed to join buddy in chat"
+msgstr ""
+
+msgid "Maybe they're not in a chat?"
+msgstr ""
+
+msgid "Fetching the room list failed."
+msgstr ""
+
+msgid "Voices"
+msgstr ""
+
+msgid "Webcams"
+msgstr ""
+
+msgid "Unable to fetch room list."
+msgstr ""
+
+msgid "User Rooms"
+msgstr ""
+
+msgid "Connection problem with the YCHT server."
+msgstr ""
+
+#, c-format
+msgid ""
+"Lost connection with server\n"
+"%s"
+msgstr ""
+
+msgid ""
+"(There was an error converting this message.\t Check the 'Encoding' option "
+"in the Account Editor)"
+msgstr ""
+
+#, c-format
+msgid "Unable to send to chat %s,%s,%s"
+msgstr ""
+
+msgid "Hidden or not logged-in"
+msgstr ""
+
+#, c-format
+msgid "<br>At %s since %s"
+msgstr ""
+
+msgid "Anyone"
+msgstr ""
+
+msgid "_Class:"
+msgstr ""
+
+msgid "_Instance:"
+msgstr ""
+
+msgid "_Recipient:"
+msgstr ""
+
+#, c-format
+msgid "Attempt to subscribe to %s,%s,%s failed"
+msgstr ""
+
+msgid "zlocate &lt;nick&gt;: Locate user"
+msgstr ""
+
+msgid "zl &lt;nick&gt;: Locate user"
+msgstr ""
+
+msgid "instance &lt;instance&gt;: Set the instance to be used on this class"
+msgstr ""
+
+msgid "inst &lt;instance&gt;: Set the instance to be used on this class"
+msgstr ""
+
+msgid "topic &lt;instance&gt;: Set the instance to be used on this class"
+msgstr ""
+
+msgid "sub &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Join a new chat"
+msgstr ""
+
+msgid ""
+"zi &lt;instance&gt;: Send a message to &lt;message,<i>instance</i>,*&gt;"
+msgstr ""
+
+msgid ""
+"zci &lt;class&gt; &lt;instance&gt;: Send a message to &lt;<i>class</i>,"
+"<i>instance</i>,*&gt;"
+msgstr ""
+
+msgid ""
+"zcir &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Send a message to &lt;"
+"<i>class</i>,<i>instance</i>,<i>recipient</i>&gt;"
+msgstr ""
+
+msgid ""
+"zir &lt;instance&gt; &lt;recipient&gt;: Send a message to &lt;MESSAGE,"
+"<i>instance</i>,<i>recipient</i>&gt;"
+msgstr ""
+
+msgid "zc &lt;class&gt;: Send a message to &lt;<i>class</i>,PERSONAL,*&gt;"
+msgstr ""
+
+msgid "Resubscribe"
+msgstr ""
+
+msgid "Retrieve subscriptions from server"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Zephyr Protocol Plugin"
+msgstr ""
+
+msgid "Use tzc"
+msgstr ""
+
+msgid "tzc command"
+msgstr ""
+
+msgid "Export to .anyone"
+msgstr ""
+
+msgid "Export to .zephyr.subs"
+msgstr ""
+
+msgid "Import from .anyone"
+msgstr ""
+
+msgid "Import from .zephyr.subs"
+msgstr ""
+
+msgid "Realm"
+msgstr ""
+
+msgid "Exposure"
+msgstr ""
+
+#, c-format
+msgid ""
+"Unable to create socket:\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid "Unable to parse response from HTTP proxy: %s\n"
+msgstr ""
+
+#, c-format
+msgid "HTTP proxy connection error %d"
+msgstr ""
+
+#, c-format
+msgid "Access denied: HTTP proxy server forbids port %d tunneling."
+msgstr ""
+
+#, c-format
+msgid "Error resolving %s"
+msgstr ""
+
+msgid "Could not resolve host name"
+msgstr ""
+
+#, c-format
+msgid "Requesting %s's attention..."
+msgstr ""
+
+#, c-format
+msgid "%s has requested your attention!"
+msgstr ""
+
+#. *
+#. * A wrapper for purple_request_action() that uses @c Yes and @c No buttons.
+#.
+msgid "_Yes"
+msgstr ""
+
+msgid "_No"
+msgstr ""
+
+#. *
+#. * A wrapper for purple_request_action() that uses Accept and Cancel buttons.
+#.
+msgid "_Accept"
+msgstr ""
+
+#. *
+#. * The default message to use when the user becomes auto-away.
+#.
+msgid "I'm not here right now"
+msgstr ""
+
+msgid "saved statuses"
+msgstr ""
+
+#, c-format
+msgid "%s is now known as %s.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s has invited %s to the chat room %s:\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid "%s has invited %s to the chat room %s\n"
+msgstr ""
+
+msgid "Accept chat invitation?"
+msgstr ""
+
+#. Shortcut
+msgid "Shortcut"
+msgstr ""
+
+msgid "The text-shortcut for the smiley"
+msgstr ""
+
+#. Stored Image
+msgid "Stored Image"
+msgstr ""
+
+msgid "Stored Image. (that'll have to do for now)"
+msgstr ""
+
+msgid "SSL Connection Failed"
+msgstr ""
+
+msgid "SSL Handshake Failed"
+msgstr ""
+
+msgid "SSL peer presented an invalid certificate"
+msgstr ""
+
+msgid "Unknown SSL error"
+msgstr ""
+
+msgid "Unset"
+msgstr ""
+
+msgid "Do not disturb"
+msgstr ""
+
+msgid "Extended away"
+msgstr ""
+
+msgid "Listening to music"
+msgstr ""
+
+#, c-format
+msgid "%s (%s) changed status from %s to %s"
+msgstr ""
+
+#, c-format
+msgid "%s (%s) is now %s"
+msgstr ""
+
+#, c-format
+msgid "%s (%s) is no longer %s"
+msgstr ""
+
+#, c-format
+msgid "%s became idle"
+msgstr ""
+
+#, c-format
+msgid "%s became unidle"
+msgstr ""
+
+#, c-format
+msgid "+++ %s became idle"
+msgstr ""
+
+#, c-format
+msgid "+++ %s became unidle"
+msgstr ""
+
+#.
+#. * This string determines how some dates are displayed. The default
+#. * string "%x %X" shows the date then the time. Translators can
+#. * change this to "%X %x" if they want the time to be shown first,
+#. * followed by the date.
+#.
+#, c-format
+msgid "%x %X"
+msgstr ""
+
+msgid "Calculating..."
+msgstr ""
+
+msgid "Unknown."
+msgstr ""
+
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] ""
+msgstr[1] ""
+
+#, c-format
+msgid "%d day"
+msgid_plural "%d days"
+msgstr[0] ""
+msgstr[1] ""
+
+#, c-format
+msgid "%s, %d hour"
+msgid_plural "%s, %d hours"
+msgstr[0] ""
+msgstr[1] ""
+
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] ""
+msgstr[1] ""
+
+#, c-format
+msgid "%s, %d minute"
+msgid_plural "%s, %d minutes"
+msgstr[0] ""
+msgstr[1] ""
+
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] ""
+msgstr[1] ""
+
+#, c-format
+msgid "Could not open %s: Redirected too many times"
+msgstr ""
+
+#, c-format
+msgid "Unable to connect to %s"
+msgstr ""
+
+#, c-format
+msgid "Error reading from %s: response too long (%d bytes limit)"
+msgstr ""
+
+#, c-format
+msgid ""
+"Unable to allocate enough memory to hold the contents from %s. The web "
+"server may be trying something malicious."
+msgstr ""
+
+#, c-format
+msgid "Error reading from %s: %s"
+msgstr ""
+
+#, c-format
+msgid "Error writing to %s: %s"
+msgstr ""
+
+#, c-format
+msgid "Unable to connect to %s: %s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+
+#, c-format
+msgid " - %s"
+msgstr ""
+
+#, c-format
+msgid " (%s)"
+msgstr ""
+
+#. 10053
+#, c-format
+msgid "Connection interrupted by other software on your computer."
+msgstr ""
+
+#. 10054
+#, c-format
+msgid "Remote host closed connection."
+msgstr ""
+
+#. 10060
+#, c-format
+msgid "Connection timed out."
+msgstr ""
+
+#. 10061
+#, c-format
+msgid "Connection refused."
+msgstr ""
+
+#. 10048
+#, c-format
+msgid "Address already in use."
+msgstr ""
+
+#, c-format
+msgid "Error Reading %s"
+msgstr ""
+
+#, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+
+msgid "Internet Messenger"
+msgstr ""
+
+msgid "Pidgin Internet Messenger"
+msgstr ""
+
+msgid "Send instant messages over multiple protocols"
+msgstr ""
+
+msgid "Orientation"
+msgstr ""
+
+msgid "The orientation of the tray."
+msgstr ""
+
+#. Build the login options frame.
+msgid "Login Options"
+msgstr ""
+
+msgid "Pro_tocol:"
+msgstr ""
+
+msgid "_Username:"
+msgstr ""
+
+msgid "Remember pass_word"
+msgstr ""
+
+#. Build the user options frame.
+msgid "User Options"
+msgstr ""
+
+msgid "_Local alias:"
+msgstr ""
+
+msgid "New _mail notifications"
+msgstr ""
+
+#. Buddy icon
+msgid "Use this buddy _icon for this account:"
+msgstr ""
+
+msgid "_Advanced"
+msgstr ""
+
+msgid "Use GNOME Proxy Settings"
+msgstr ""
+
+msgid "Use Global Proxy Settings"
+msgstr ""
+
+msgid "No Proxy"
+msgstr ""
+
+msgid "HTTP"
+msgstr ""
+
+msgid "SOCKS 4"
+msgstr ""
+
+msgid "SOCKS 5"
+msgstr ""
+
+msgid "Use Environmental Settings"
+msgstr ""
+
+#. This is an easter egg.
+#. It means one of two things, both intended as humourus:
+#. A) your network is really slow and you have nothing better to do than
+#. look at butterflies.
+#. B)You are looking really closely at something that shouldn't matter.
+msgid "If you look real closely"
+msgstr ""
+
+#. This is an easter egg. See the comment on the previous line in the source.
+msgid "you can see the butterflies mating"
+msgstr ""
+
+msgid "Proxy _type:"
+msgstr ""
+
+msgid "_Host:"
+msgstr ""
+
+msgid "_Port:"
+msgstr ""
+
+msgid "Pa_ssword:"
+msgstr ""
+
+msgid "Unable to save new account"
+msgstr ""
+
+msgid "An account already exists with the specified criteria."
+msgstr ""
+
+msgid "Add Account"
+msgstr ""
+
+msgid "_Basic"
+msgstr ""
+
+msgid "Create _this new account on the server"
+msgstr ""
+
+msgid "_Proxy"
+msgstr ""
+
+msgid "Enabled"
+msgstr ""
+
+msgid "Protocol"
+msgstr ""
+
+#, c-format
+msgid ""
+"<span size='larger' weight='bold'>Welcome to %s!</span>\n"
+"\n"
+"You have no IM accounts configured. To start connecting with %s press the "
+"<b>Add...</b> button below and configure your first account. If you want %s "
+"to connect to multiple IM accounts, press <b>Add...</b> again to configure "
+"them all.\n"
+"\n"
+"You can come back to this window to add, edit, or remove accounts from "
+"<b>Accounts->Manage Accounts</b> in the Buddy List window"
+msgstr ""
+
+#, 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] ""
+
+msgid ""
+"Merging these contacts will cause them to share a single entry on the buddy "
+"list and use a single conversation window. You can separate them again by "
+"choosing 'Expand' from the contact's context menu"
+msgstr ""
+
+msgid "Please update the necessary fields."
+msgstr ""
+
+msgid "A_ccount"
+msgstr ""
+
+msgid ""
+"Please enter the appropriate information about the chat you would like to "
+"join.\n"
+msgstr ""
+
+msgid "Room _List"
+msgstr ""
+
+msgid "_Block"
+msgstr ""
+
+msgid "Un_block"
+msgstr ""
+
+msgid "Move to"
+msgstr ""
+
+msgid "Get _Info"
+msgstr ""
+
+msgid "I_M"
+msgstr ""
+
+msgid "_Audio Call"
+msgstr ""
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+msgid "_Video Call"
+msgstr ""
+
+msgid "_Send File..."
+msgstr ""
+
+msgid "Add Buddy _Pounce..."
+msgstr ""
+
+msgid "View _Log"
+msgstr ""
+
+msgid "Hide when offline"
+msgstr ""
+
+msgid "_Alias..."
+msgstr ""
+
+msgid "_Remove"
+msgstr ""
+
+msgid "Set Custom Icon"
+msgstr ""
+
+msgid "Remove Custom Icon"
+msgstr ""
+
+msgid "Add _Buddy..."
+msgstr ""
+
+msgid "Add C_hat..."
+msgstr ""
+
+msgid "_Delete Group"
+msgstr ""
+
+msgid "_Rename"
+msgstr ""
+
+#. join button
+msgid "_Join"
+msgstr ""
+
+msgid "Auto-Join"
+msgstr ""
+
+msgid "Persistent"
+msgstr ""
+
+msgid "_Edit Settings..."
+msgstr ""
+
+msgid "_Collapse"
+msgstr ""
+
+msgid "_Expand"
+msgstr ""
+
+msgid "/Tools/Mute Sounds"
+msgstr ""
+
+msgid ""
+"You are not currently signed on with an account that can add that buddy."
+msgstr ""
+
+#. I don't believe this can happen currently, I think
+#. * everything that calls this function checks for one of the
+#. * above node types first.
+msgid "Unknown node type"
+msgstr ""
+
+#. Buddies menu
+msgid "/_Buddies"
+msgstr ""
+
+msgid "/Buddies/New Instant _Message..."
+msgstr ""
+
+msgid "/Buddies/Join a _Chat..."
+msgstr ""
+
+msgid "/Buddies/Get User _Info..."
+msgstr ""
+
+msgid "/Buddies/View User _Log..."
+msgstr ""
+
+msgid "/Buddies/Sh_ow"
+msgstr ""
+
+msgid "/Buddies/Show/_Offline Buddies"
+msgstr ""
+
+msgid "/Buddies/Show/_Empty Groups"
+msgstr ""
+
+msgid "/Buddies/Show/Buddy _Details"
+msgstr ""
+
+msgid "/Buddies/Show/Idle _Times"
+msgstr ""
+
+msgid "/Buddies/Show/_Protocol Icons"
+msgstr ""
+
+msgid "/Buddies/_Sort Buddies"
+msgstr ""
+
+msgid "/Buddies/_Add Buddy..."
+msgstr ""
+
+msgid "/Buddies/Add C_hat..."
+msgstr ""
+
+msgid "/Buddies/Add _Group..."
+msgstr ""
+
+msgid "/Buddies/_Quit"
+msgstr ""
+
+#. Accounts menu
+msgid "/_Accounts"
+msgstr ""
+
+msgid "/Accounts/Manage Accounts"
+msgstr ""
+
+#. Tools
+msgid "/_Tools"
+msgstr ""
+
+msgid "/Tools/Buddy _Pounces"
+msgstr ""
+
+msgid "/Tools/_Certificates"
+msgstr ""
+
+msgid "/Tools/Custom Smile_ys"
+msgstr ""
+
+msgid "/Tools/Plu_gins"
+msgstr ""
+
+msgid "/Tools/Pr_eferences"
+msgstr ""
+
+msgid "/Tools/Pr_ivacy"
+msgstr ""
+
+msgid "/Tools/_File Transfers"
+msgstr ""
+
+msgid "/Tools/R_oom List"
+msgstr ""
+
+msgid "/Tools/System _Log"
+msgstr ""
+
+msgid "/Tools/Mute _Sounds"
+msgstr ""
+
+#. Help
+msgid "/_Help"
+msgstr ""
+
+msgid "/Help/Online _Help"
+msgstr ""
+
+msgid "/Help/_Debug Window"
+msgstr ""
+
+msgid "/Help/_About"
+msgstr ""
+
+#, c-format
+msgid "<b>Account:</b> %s"
+msgstr ""
+
+#, c-format
+msgid ""
+"\n"
+"<b>Occupants:</b> %d"
+msgstr ""
+
+#, c-format
+msgid ""
+"\n"
+"<b>Topic:</b> %s"
+msgstr ""
+
+msgid "(no topic set)"
+msgstr ""
+
+msgid "Buddy Alias"
+msgstr ""
+
+msgid "Logged In"
+msgstr ""
+
+msgid "Last Seen"
+msgstr ""
+
+msgid "Spooky"
+msgstr ""
+
+msgid "Awesome"
+msgstr ""
+
+msgid "Rockin'"
+msgstr ""
+
+msgid "Total Buddies"
+msgstr ""
+
+#, c-format
+msgid "Idle %dd %dh %02dm"
+msgstr ""
+
+#, c-format
+msgid "Idle %dh %02dm"
+msgstr ""
+
+#, c-format
+msgid "Idle %dm"
+msgstr ""
+
+msgid "/Buddies/New Instant Message..."
+msgstr ""
+
+msgid "/Buddies/Join a Chat..."
+msgstr ""
+
+msgid "/Buddies/Get User Info..."
+msgstr ""
+
+msgid "/Buddies/Add Buddy..."
+msgstr ""
+
+msgid "/Buddies/Add Chat..."
+msgstr ""
+
+msgid "/Buddies/Add Group..."
+msgstr ""
+
+msgid "/Tools/Privacy"
+msgstr ""
+
+msgid "/Tools/Room List"
+msgstr ""
+
+#, c-format
+msgid "%d unread message from %s\n"
+msgid_plural "%d unread messages from %s\n"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Manually"
+msgstr ""
+
+msgid "By status"
+msgstr ""
+
+msgid "By recent log activity"
+msgstr ""
+
+#, c-format
+msgid "%s disconnected"
+msgstr ""
+
+#, c-format
+msgid "%s disabled"
+msgstr ""
+
+msgid "Reconnect"
+msgstr ""
+
+msgid "Re-enable"
+msgstr ""
+
+msgid "SSL FAQs"
+msgstr ""
+
+msgid "Welcome back!"
+msgstr ""
+
+#, c-format
+msgid "%d account was disabled because you signed on from another location:"
+msgid_plural ""
+"%d accounts were disabled because you signed on from another location:"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "<b>Username:</b>"
+msgstr ""
+
+msgid "<b>Password:</b>"
+msgstr ""
+
+msgid "_Login"
+msgstr ""
+
+msgid "/Accounts"
+msgstr ""
+
+#. Translators: Please maintain the use of -> and <- to refer to menu heirarchy
+#, c-format
+msgid ""
+"<span weight='bold' size='larger'>Welcome to %s!</span>\n"
+"\n"
+"You have no accounts enabled. Enable your IM accounts from the <b>Accounts</"
+"b> window at <b>Accounts->Manage Accounts</b>. 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
+#.
+msgid "/Buddies/Show/Offline Buddies"
+msgstr ""
+
+msgid "/Buddies/Show/Empty Groups"
+msgstr ""
+
+msgid "/Buddies/Show/Buddy Details"
+msgstr ""
+
+msgid "/Buddies/Show/Idle Times"
+msgstr ""
+
+msgid "/Buddies/Show/Protocol Icons"
+msgstr ""
+
+msgid "Add a buddy.\n"
+msgstr ""
+
+msgid "Buddy's _username:"
+msgstr ""
+
+msgid "(Optional) A_lias:"
+msgstr ""
+
+msgid "Add buddy to _group:"
+msgstr ""
+
+msgid "This protocol does not support chat rooms."
+msgstr ""
+
+msgid ""
+"You are not currently signed on with any protocols that have the ability to "
+"chat."
+msgstr ""
+
+msgid ""
+"Please enter an alias, and the appropriate information about the chat you "
+"would like to add to your buddy list.\n"
+msgstr ""
+
+msgid "A_lias:"
+msgstr ""
+
+msgid "_Group:"
+msgstr ""
+
+msgid "Auto_join when account becomes online."
+msgstr ""
+
+msgid "_Remain in chat after window is closed."
+msgstr ""
+
+msgid "Please enter the name of the group to be added."
+msgstr ""
+
+msgid "Enable Account"
+msgstr ""
+
+msgid "<PurpleMain>/Accounts/Enable Account"
+msgstr ""
+
+msgid "<PurpleMain>/Accounts/"
+msgstr ""
+
+msgid "_Edit Account"
+msgstr ""
+
+msgid "No actions available"
+msgstr ""
+
+msgid "_Disable"
+msgstr ""
+
+msgid "/Tools"
+msgstr ""
+
+msgid "/Buddies/Sort Buddies"
+msgstr ""
+
+#. Widget creation function
+msgid "SSL Servers"
+msgstr ""
+
+msgid "Unknown command."
+msgstr ""
+
+msgid "That buddy is not on the same protocol as this chat."
+msgstr ""
+
+msgid ""
+"You are not currently signed on with an account that can invite that buddy."
+msgstr ""
+
+msgid "Invite Buddy Into Chat Room"
+msgstr ""
+
+msgid "_Buddy:"
+msgstr ""
+
+msgid "_Message:"
+msgstr ""
+
+#, c-format
+msgid "<h1>Conversation with %s</h1>\n"
+msgstr ""
+
+msgid "Save Conversation"
+msgstr ""
+
+msgid "Find"
+msgstr ""
+
+msgid "_Search for:"
+msgstr ""
+
+msgid "Un-Ignore"
+msgstr ""
+
+msgid "Ignore"
+msgstr ""
+
+msgid "Get Away Message"
+msgstr ""
+
+msgid "Last said"
+msgstr ""
+
+msgid "Unable to save icon file to disk."
+msgstr ""
+
+msgid "Save Icon"
+msgstr ""
+
+msgid "Animate"
+msgstr ""
+
+msgid "Hide Icon"
+msgstr ""
+
+msgid "Save Icon As..."
+msgstr ""
+
+msgid "Set Custom Icon..."
+msgstr ""
+
+msgid "Change Size"
+msgstr ""
+
+msgid "Show All"
+msgstr ""
+
+#. Conversation menu
+msgid "/_Conversation"
+msgstr ""
+
+msgid "/Conversation/New Instant _Message..."
+msgstr ""
+
+msgid "/Conversation/_Find..."
+msgstr ""
+
+msgid "/Conversation/View _Log"
+msgstr ""
+
+msgid "/Conversation/_Save As..."
+msgstr ""
+
+msgid "/Conversation/Clea_r Scrollback"
+msgstr ""
+
+msgid "/Conversation/M_edia"
+msgstr ""
+
+msgid "/Conversation/Media/_Audio Call"
+msgstr ""
+
+msgid "/Conversation/Media/_Video Call"
+msgstr ""
+
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr ""
+
+msgid "/Conversation/Se_nd File..."
+msgstr ""
+
+msgid "/Conversation/Add Buddy _Pounce..."
+msgstr ""
+
+msgid "/Conversation/_Get Info"
+msgstr ""
+
+msgid "/Conversation/In_vite..."
+msgstr ""
+
+msgid "/Conversation/M_ore"
+msgstr ""
+
+msgid "/Conversation/Al_ias..."
+msgstr ""
+
+msgid "/Conversation/_Block..."
+msgstr ""
+
+msgid "/Conversation/_Unblock..."
+msgstr ""
+
+msgid "/Conversation/_Add..."
+msgstr ""
+
+msgid "/Conversation/_Remove..."
+msgstr ""
+
+msgid "/Conversation/Insert Lin_k..."
+msgstr ""
+
+msgid "/Conversation/Insert Imag_e..."
+msgstr ""
+
+msgid "/Conversation/_Close"
+msgstr ""
+
+#. Options
+msgid "/_Options"
+msgstr ""
+
+msgid "/Options/Enable _Logging"
+msgstr ""
+
+msgid "/Options/Enable _Sounds"
+msgstr ""
+
+msgid "/Options/Show Formatting _Toolbars"
+msgstr ""
+
+msgid "/Options/Show Ti_mestamps"
+msgstr ""
+
+msgid "/Conversation/More"
+msgstr ""
+
+msgid "/Options"
+msgstr ""
+
+#. The menubar has been deactivated. Make sure the 'More' submenu is regenerated next time
+#. * the 'Conversation' menu pops up.
+#. Make sure the 'Conversation -> More' menuitems are regenerated whenever
+#. * the 'Conversation' menu pops up because the entries can change after the
+#. * conversation is created.
+msgid "/Conversation"
+msgstr ""
+
+msgid "/Conversation/View Log"
+msgstr ""
+
+msgid "/Conversation/Media/Audio Call"
+msgstr ""
+
+msgid "/Conversation/Media/Video Call"
+msgstr ""
+
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr ""
+
+msgid "/Conversation/Send File..."
+msgstr ""
+
+msgid "/Conversation/Add Buddy Pounce..."
+msgstr ""
+
+msgid "/Conversation/Get Info"
+msgstr ""
+
+msgid "/Conversation/Invite..."
+msgstr ""
+
+msgid "/Conversation/Alias..."
+msgstr ""
+
+msgid "/Conversation/Block..."
+msgstr ""
+
+msgid "/Conversation/Unblock..."
+msgstr ""
+
+msgid "/Conversation/Add..."
+msgstr ""
+
+msgid "/Conversation/Remove..."
+msgstr ""
+
+msgid "/Conversation/Insert Link..."
+msgstr ""
+
+msgid "/Conversation/Insert Image..."
+msgstr ""
+
+msgid "/Options/Enable Logging"
+msgstr ""
+
+msgid "/Options/Enable Sounds"
+msgstr ""
+
+msgid "/Options/Show Formatting Toolbars"
+msgstr ""
+
+msgid "/Options/Show Timestamps"
+msgstr ""
+
+msgid "User is typing..."
+msgstr ""
+
+#, c-format
+msgid ""
+"\n"
+"%s has stopped typing"
+msgstr ""
+
+#. Build the Send To menu
+msgid "S_end To"
+msgstr ""
+
+msgid "_Send"
+msgstr ""
+
+#. Setup the label telling how many people are in the room.
+msgid "0 people in room"
+msgstr ""
+
+#, c-format
+msgid "%d person in room"
+msgid_plural "%d people in room"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Typing"
+msgstr ""
+
+msgid "Stopped Typing"
+msgstr ""
+
+msgid "Nick Said"
+msgstr ""
+
+msgid "Unread Messages"
+msgstr ""
+
+msgid "New Event"
+msgstr ""
+
+msgid "clear: Clears all conversation scrollbacks."
+msgstr ""
+
+msgid "Confirm close"
+msgstr ""
+
+msgid "You have unread messages. Are you sure you want to close the window?"
+msgstr ""
+
+msgid "Close other tabs"
+msgstr ""
+
+msgid "Close all tabs"
+msgstr ""
+
+msgid "Detach this tab"
+msgstr ""
+
+msgid "Close this tab"
+msgstr ""
+
+msgid "Close conversation"
+msgstr ""
+
+msgid "Last created window"
+msgstr ""
+
+msgid "Separate IM and Chat windows"
+msgstr ""
+
+msgid "New window"
+msgstr ""
+
+msgid "By group"
+msgstr ""
+
+msgid "By account"
+msgstr ""
+
+msgid "Save Debug Log"
+msgstr ""
+
+msgid "Invert"
+msgstr ""
+
+msgid "Highlight matches"
+msgstr ""
+
+msgid "_Icon Only"
+msgstr ""
+
+msgid "_Text Only"
+msgstr ""
+
+msgid "_Both Icon & Text"
+msgstr ""
+
+msgid "Filter"
+msgstr ""
+
+msgid "Right click for more options."
+msgstr ""
+
+msgid "Level "
+msgstr ""
+
+msgid "Select the debug filter level."
+msgstr ""
+
+msgid "All"
+msgstr ""
+
+msgid "Misc"
+msgstr ""
+
+msgid "Warning"
+msgstr ""
+
+msgid "Error "
+msgstr ""
+
+msgid "Fatal Error"
+msgstr ""
+
+msgid "bug master"
+msgstr ""
+
+msgid "artist"
+msgstr ""
+
+#. feel free to not translate this
+msgid "Ka-Hing Cheung"
+msgstr ""
+
+msgid "voice and video"
+msgstr ""
+
+msgid "support"
+msgstr ""
+
+msgid "webmaster"
+msgstr ""
+
+msgid "Senior Contributor/QA"
+msgstr ""
+
+msgid "win32 port"
+msgstr ""
+
+msgid "maintainer"
+msgstr ""
+
+msgid "libfaim maintainer"
+msgstr ""
+
+#. If "lazy bum" translates literally into a serious insult, use something else or omit it.
+msgid "hacker and designated driver [lazy bum]"
+msgstr ""
+
+msgid "support/QA"
+msgstr ""
+
+msgid "XMPP"
+msgstr ""
+
+msgid "original author"
+msgstr ""
+
+msgid "lead developer"
+msgstr ""
+
+msgid "Afrikaans"
+msgstr ""
+
+msgid "Arabic"
+msgstr ""
+
+msgid "Belarusian Latin"
+msgstr ""
+
+msgid "Bulgarian"
+msgstr ""
+
+msgid "Bengali"
+msgstr ""
+
+msgid "Bosnian"
+msgstr ""
+
+msgid "Catalan"
+msgstr ""
+
+msgid "Valencian-Catalan"
+msgstr ""
+
+msgid "Czech"
+msgstr ""
+
+msgid "Danish"
+msgstr ""
+
+msgid "German"
+msgstr ""
+
+msgid "Dzongkha"
+msgstr ""
+
+msgid "Greek"
+msgstr ""
+
+msgid "Australian English"
+msgstr ""
+
+msgid "Canadian English"
+msgstr ""
+
+msgid "British English"
+msgstr ""
+
+msgid "Esperanto"
+msgstr ""
+
+msgid "Spanish"
+msgstr ""
+
+msgid "Estonian"
+msgstr ""
+
+msgid "Euskera(Basque)"
+msgstr ""
+
+msgid "Persian"
+msgstr ""
+
+msgid "Finnish"
+msgstr ""
+
+msgid "French"
+msgstr ""
+
+msgid "Irish"
+msgstr ""
+
+msgid "Galician"
+msgstr ""
+
+msgid "Gujarati"
+msgstr ""
+
+msgid "Gujarati Language Team"
+msgstr ""
+
+msgid "Hebrew"
+msgstr ""
+
+msgid "Hindi"
+msgstr ""
+
+msgid "Hungarian"
+msgstr ""
+
+msgid "Armenian"
+msgstr ""
+
+msgid "Indonesian"
+msgstr ""
+
+msgid "Italian"
+msgstr ""
+
+msgid "Japanese"
+msgstr ""
+
+msgid "Georgian"
+msgstr ""
+
+msgid "Ubuntu Georgian Translators"
+msgstr ""
+
+msgid "Khmer"
+msgstr ""
+
+msgid "Kannada"
+msgstr ""
+
+msgid "Kannada Translation team"
+msgstr ""
+
+msgid "Korean"
+msgstr ""
+
+msgid "Kurdish"
+msgstr ""
+
+msgid "Lao"
+msgstr ""
+
+msgid "Lithuanian"
+msgstr ""
+
+msgid "Macedonian"
+msgstr ""
+
+msgid "Mongolian"
+msgstr ""
+
+msgid "Bokmål Norwegian"
+msgstr ""
+
+msgid "Nepali"
+msgstr ""
+
+msgid "Dutch, Flemish"
+msgstr ""
+
+msgid "Norwegian Nynorsk"
+msgstr ""
+
+msgid "Occitan"
+msgstr ""
+
+msgid "Punjabi"
+msgstr ""
+
+msgid "Polish"
+msgstr ""
+
+msgid "Portuguese"
+msgstr ""
+
+msgid "Portuguese-Brazil"
+msgstr ""
+
+msgid "Pashto"
+msgstr ""
+
+msgid "Romanian"
+msgstr ""
+
+msgid "Russian"
+msgstr ""
+
+msgid "Slovak"
+msgstr ""
+
+msgid "Slovenian"
+msgstr ""
+
+msgid "Albanian"
+msgstr ""
+
+msgid "Serbian"
+msgstr ""
+
+msgid "Sinhala"
+msgstr ""
+
+msgid "Swedish"
+msgstr ""
+
+msgid "Swahili"
+msgstr ""
+
+msgid "Tamil"
+msgstr ""
+
+msgid "Telugu"
+msgstr ""
+
+msgid "Thai"
+msgstr ""
+
+msgid "Turkish"
+msgstr ""
+
+msgid "Urdu"
+msgstr ""
+
+msgid "Vietnamese"
+msgstr ""
+
+msgid "T.M.Thanh and the Gnome-Vi Team"
+msgstr ""
+
+msgid "Simplified Chinese"
+msgstr ""
+
+msgid "Hong Kong Chinese"
+msgstr ""
+
+msgid "Traditional Chinese"
+msgstr ""
+
+msgid "Amharic"
+msgstr ""
+
+#, c-format
+msgid "About %s"
+msgstr ""
+
+#, 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+.<BR><BR>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."
+"<BR><BR>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr ""
+
+#, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
+msgstr ""
+
+msgid "Current Developers"
+msgstr ""
+
+msgid "Crazy Patch Writers"
+msgstr ""
+
+msgid "Retired Developers"
+msgstr ""
+
+msgid "Retired Crazy Patch Writers"
+msgstr ""
+
+msgid "Current Translators"
+msgstr ""
+
+msgid "Past Translators"
+msgstr ""
+
+msgid "Debugging Information"
+msgstr ""
+
+msgid "_Name"
+msgstr ""
+
+msgid "_Account"
+msgstr ""
+
+msgid "Get User Info"
+msgstr ""
+
+msgid ""
+"Please enter the username or alias of the person whose info you would like "
+"to view."
+msgstr ""
+
+msgid "View User Log"
+msgstr ""
+
+msgid "Alias Contact"
+msgstr ""
+
+msgid "Enter an alias for this contact."
+msgstr ""
+
+#, c-format
+msgid "Enter an alias for %s."
+msgstr ""
+
+msgid "Alias Buddy"
+msgstr ""
+
+msgid "Alias Chat"
+msgstr ""
+
+msgid "Enter an alias for this chat."
+msgstr ""
+
+#, c-format
+msgid ""
+"You are about to remove the contact containing %s and %d other buddy from "
+"your buddy list. Do you want to continue?"
+msgid_plural ""
+"You are about to remove the contact containing %s and %d other buddies from "
+"your buddy list. Do you want to continue?"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove Contact"
+msgstr ""
+
+msgid "_Remove Contact"
+msgstr ""
+
+#, c-format
+msgid ""
+"You are about to merge the group called %s into the group called %s. Do you "
+"want to continue?"
+msgstr ""
+
+msgid "Merge Groups"
+msgstr ""
+
+msgid "_Merge Groups"
+msgstr ""
+
+#, c-format
+msgid ""
+"You are about to remove the group %s and all its members from your buddy "
+"list. Do you want to continue?"
+msgstr ""
+
+msgid "Remove Group"
+msgstr ""
+
+msgid "_Remove Group"
+msgstr ""
+
+#, c-format
+msgid ""
+"You are about to remove %s from your buddy list. Do you want to continue?"
+msgstr ""
+
+msgid "Remove Buddy"
+msgstr ""
+
+msgid "_Remove Buddy"
+msgstr ""
+
+#, c-format
+msgid ""
+"You are about to remove the chat %s from your buddy list. Do you want to "
+"continue?"
+msgstr ""
+
+msgid "Remove Chat"
+msgstr ""
+
+msgid "_Remove Chat"
+msgstr ""
+
+msgid "Right-click for more unread messages...\n"
+msgstr ""
+
+msgid "_Change Status"
+msgstr ""
+
+msgid "Show Buddy _List"
+msgstr ""
+
+msgid "_Unread Messages"
+msgstr ""
+
+msgid "New _Message..."
+msgstr ""
+
+msgid "_Accounts"
+msgstr ""
+
+msgid "Plu_gins"
+msgstr ""
+
+msgid "Pr_eferences"
+msgstr ""
+
+msgid "Mute _Sounds"
+msgstr ""
+
+msgid "_Blink on New Message"
+msgstr ""
+
+msgid "_Quit"
+msgstr ""
+
+msgid "Not started"
+msgstr ""
+
+msgid "<b>Receiving As:</b>"
+msgstr ""
+
+msgid "<b>Receiving From:</b>"
+msgstr ""
+
+msgid "<b>Sending To:</b>"
+msgstr ""
+
+msgid "<b>Sending As:</b>"
+msgstr ""
+
+msgid "There is no application configured to open this type of file."
+msgstr ""
+
+msgid "An error occurred while opening the file."
+msgstr ""
+
+#, c-format
+msgid "Error launching %s: %s"
+msgstr ""
+
+#, c-format
+msgid "Error running %s"
+msgstr ""
+
+#, c-format
+msgid "Process returned error code %d"
+msgstr ""
+
+msgid "Filename:"
+msgstr ""
+
+msgid "Local File:"
+msgstr ""
+
+msgid "Speed:"
+msgstr ""
+
+msgid "Time Elapsed:"
+msgstr ""
+
+msgid "Time Remaining:"
+msgstr ""
+
+msgid "Close this window when all transfers _finish"
+msgstr ""
+
+msgid "C_lear finished transfers"
+msgstr ""
+
+#. "Download Details" arrow
+msgid "File transfer _details"
+msgstr ""
+
+#. Pause button
+msgid "_Pause"
+msgstr ""
+
+#. Resume button
+msgid "_Resume"
+msgstr ""
+
+msgid "Paste as Plain _Text"
+msgstr ""
+
+msgid "_Reset formatting"
+msgstr ""
+
+msgid "Disable _smileys in selected text"
+msgstr ""
+
+msgid "Hyperlink color"
+msgstr ""
+
+msgid "Color to draw hyperlinks."
+msgstr ""
+
+msgid "Hyperlink visited color"
+msgstr ""
+
+msgid "Color to draw hyperlinks after it has been visited (or activated)."
+msgstr ""
+
+msgid "Hyperlink prelight color"
+msgstr ""
+
+msgid "Color to draw hyperlinks when mouse is over them."
+msgstr ""
+
+msgid "Sent Message Name Color"
+msgstr ""
+
+msgid "Color to draw the name of a message you sent."
+msgstr ""
+
+msgid "Received Message Name Color"
+msgstr ""
+
+msgid "Color to draw the name of a message you received."
+msgstr ""
+
+msgid "\"Attention\" Name Color"
+msgstr ""
+
+msgid "Color to draw the name of a message you received containing your name."
+msgstr ""
+
+msgid "Action Message Name Color"
+msgstr ""
+
+msgid "Color to draw the name of an action message."
+msgstr ""
+
+msgid "Action Message Name Color for Whispered Message"
+msgstr ""
+
+msgid "Whisper Message Name Color"
+msgstr ""
+
+msgid "Typing notification color"
+msgstr ""
+
+msgid "The color to use for the typing notification font"
+msgstr ""
+
+msgid "Typing notification font"
+msgstr ""
+
+msgid "The font to use for the typing notification"
+msgstr ""
+
+msgid "Enable typing notification"
+msgstr ""
+
+msgid ""
+"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
+"\n"
+"Defaulting to PNG."
+msgstr ""
+
+msgid ""
+"Unrecognized file type\n"
+"\n"
+"Defaulting to PNG."
+msgstr ""
+
+#, c-format
+msgid ""
+"<span size='larger' weight='bold'>Error saving image</span>\n"
+"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Error saving image\n"
+"\n"
+"%s"
+msgstr ""
+
+msgid "Save Image"
+msgstr ""
+
+msgid "_Save Image..."
+msgstr ""
+
+msgid "_Add Custom Smiley..."
+msgstr ""
+
+msgid "Select Font"
+msgstr ""
+
+msgid "Select Text Color"
+msgstr ""
+
+msgid "Select Background Color"
+msgstr ""
+
+msgid "_URL"
+msgstr ""
+
+msgid "_Description"
+msgstr ""
+
+msgid ""
+"Please enter the URL and description of the link that you want to insert. "
+"The description is optional."
+msgstr ""
+
+msgid "Please enter the URL of the link that you want to insert."
+msgstr ""
+
+msgid "Insert Link"
+msgstr ""
+
+msgid "_Insert"
+msgstr ""
+
+#, c-format
+msgid "Failed to store image: %s\n"
+msgstr ""
+
+msgid "Insert Image"
+msgstr ""
+
+#, c-format
+msgid ""
+"This smiley is disabled because a custom smiley exists for this shortcut:\n"
+" %s"
+msgstr ""
+
+msgid "Smile!"
+msgstr ""
+
+msgid "_Manage custom smileys"
+msgstr ""
+
+msgid "This theme has no available smileys."
+msgstr ""
+
+msgid "_Font"
+msgstr ""
+
+msgid "Group Items"
+msgstr ""
+
+msgid "Ungroup Items"
+msgstr ""
+
+msgid "Bold"
+msgstr ""
+
+msgid "Italic"
+msgstr ""
+
+msgid "Underline"
+msgstr ""
+
+msgid "Strikethrough"
+msgstr ""
+
+msgid "Increase Font Size"
+msgstr ""
+
+msgid "Decrease Font Size"
+msgstr ""
+
+msgid "Font Face"
+msgstr ""
+
+msgid "Background Color"
+msgstr ""
+
+msgid "Foreground Color"
+msgstr ""
+
+msgid "Reset Formatting"
+msgstr ""
+
+msgid "Insert IM Image"
+msgstr ""
+
+msgid "Insert Smiley"
+msgstr ""
+
+msgid "<b>_Bold</b>"
+msgstr ""
+
+msgid "<i>_Italic</i>"
+msgstr ""
+
+msgid "<u>_Underline</u>"
+msgstr ""
+
+msgid "<span strikethrough='true'>Strikethrough</span>"
+msgstr ""
+
+msgid "<span size='larger'>_Larger</span>"
+msgstr ""
+
+msgid "_Normal"
+msgstr ""
+
+msgid "<span size='smaller'>_Smaller</span>"
+msgstr ""
+
+#. If we want to show the formatting for the following items, we would
+#. * need to update them when formatting changes. The above items don't need
+#. * no updating nor nothin'
+msgid "_Font face"
+msgstr ""
+
+msgid "Foreground _color"
+msgstr ""
+
+msgid "Bac_kground color"
+msgstr ""
+
+msgid "_Image"
+msgstr ""
+
+msgid "_Link"
+msgstr ""
+
+msgid "_Horizontal rule"
+msgstr ""
+
+msgid "_Smile!"
+msgstr ""
+
+msgid "Log Deletion Failed"
+msgstr ""
+
+msgid "Check permissions and try again."
+msgstr ""
+
+#, c-format
+msgid ""
+"Are you sure you want to permanently delete the log of the conversation with "
+"%s which started at %s?"
+msgstr ""
+
+#, c-format
+msgid ""
+"Are you sure you want to permanently delete the log of the conversation in %"
+"s which started at %s?"
+msgstr ""
+
+#, c-format
+msgid ""
+"Are you sure you want to permanently delete the system log which started at %"
+"s?"
+msgstr ""
+
+msgid "Delete Log?"
+msgstr ""
+
+msgid "Delete Log..."
+msgstr ""
+
+#, c-format
+msgid "<span size='larger' weight='bold'>Conversation in %s on %s</span>"
+msgstr ""
+
+#, c-format
+msgid "<span size='larger' weight='bold'>Conversation with %s on %s</span>"
+msgstr ""
+
+#. Steal the "HELP" response and use it to trigger browsing to the logs folder
+msgid "_Browse logs folder"
+msgstr ""
+
+#, c-format
+msgid "%s %s. Try `%s -h' for more information.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s %s\n"
+"Usage: %s [OPTION]...\n"
+"\n"
+" -c, --config=DIR use DIR for config files\n"
+" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
+" -h, --help display this help and exit\n"
+" -m, --multiple do not ensure single instance\n"
+" -n, --nologin don't automatically login\n"
+" -l, --login[=NAME] enable specified account(s) (optional argument NAME\n"
+" specifies account(s) to use, separated by commas.\n"
+" Without this only the first account will be enabled).\n"
+" --display=DISPLAY X display to use\n"
+" -v, --version display the current version and exit\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s %s\n"
+"Usage: %s [OPTION]...\n"
+"\n"
+" -c, --config=DIR use DIR for config files\n"
+" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
+" -h, --help display this help and exit\n"
+" -m, --multiple do not ensure single instance\n"
+" -n, --nologin don't automatically login\n"
+" -l, --login[=NAME] enable specified account(s) (optional argument NAME\n"
+" specifies account(s) to use, separated by commas.\n"
+" Without this only the first account will be enabled).\n"
+" -v, --version display the current version and exit\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s %s has segfaulted and attempted to dump a core file.\n"
+"This is a bug in the software and has happened through\n"
+"no fault of your own.\n"
+"\n"
+"If you can reproduce the crash, please notify the developers\n"
+"by reporting a bug at:\n"
+"%ssimpleticket/\n"
+"\n"
+"Please make sure to specify what you were doing at the time\n"
+"and post the backtrace from the core file. If you do not know\n"
+"how to get the backtrace, please read the instructions at\n"
+"%swiki/GetABacktrace\n"
+msgstr ""
+
+#. Translators may want to transliterate the name.
+#. It is not to be translated.
+msgid "Pidgin"
+msgstr ""
+
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
+
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+msgid "Calling..."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s has %d new message."
+msgid_plural "%s has %d new messages."
+msgstr[0] ""
+msgstr[1] ""
+
+#, c-format
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
+msgstr[0] ""
+msgstr[1] ""
+
+#, c-format
+msgid "The browser command \"%s\" is invalid."
+msgstr ""
+
+msgid "Unable to open URL"
+msgstr ""
+
+#, c-format
+msgid "Error launching \"%s\": %s"
+msgstr ""
+
+msgid ""
+"The 'Manual' browser command has been chosen, but no command has been set."
+msgstr ""
+
+msgid "Open All Messages"
+msgstr ""
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr ""
+
+msgid "New Pounces"
+msgstr ""
+
+msgid "Dismiss"
+msgstr ""
+
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr ""
+
+msgid "No message"
+msgstr ""
+
+msgid "The following plugins will be unloaded."
+msgstr ""
+
+msgid "Multiple plugins will be unloaded."
+msgstr ""
+
+msgid "Unload Plugins"
+msgstr ""
+
+msgid "Could not unload plugin"
+msgstr ""
+
+msgid ""
+"The plugin could not be unloaded now, but will be disabled at the next "
+"startup."
+msgstr ""
+
+#, c-format
+msgid ""
+"<span foreground=\"red\" weight=\"bold\">Error: %s\n"
+"Check the plugin website for an update.</span>"
+msgstr ""
+
+msgid "Author"
+msgstr ""
+
+msgid "<b>Written by:</b>"
+msgstr ""
+
+msgid "<b>Web site:</b>"
+msgstr ""
+
+msgid "<b>Filename:</b>"
+msgstr ""
+
+msgid "Configure Pl_ugin"
+msgstr ""
+
+msgid "<b>Plugin Details</b>"
+msgstr ""
+
+msgid "Select a file"
+msgstr ""
+
+msgid "Modify Buddy Pounce"
+msgstr ""
+
+#. Create the "Pounce on Whom" frame.
+msgid "Pounce on Whom"
+msgstr ""
+
+msgid "_Account:"
+msgstr ""
+
+msgid "_Buddy name:"
+msgstr ""
+
+msgid "Si_gns on"
+msgstr ""
+
+msgid "Signs o_ff"
+msgstr ""
+
+msgid "Goes a_way"
+msgstr ""
+
+msgid "Ret_urns from away"
+msgstr ""
+
+msgid "Becomes _idle"
+msgstr ""
+
+msgid "Is no longer i_dle"
+msgstr ""
+
+msgid "Starts _typing"
+msgstr ""
+
+msgid "P_auses while typing"
+msgstr ""
+
+msgid "Stops t_yping"
+msgstr ""
+
+msgid "Sends a _message"
+msgstr ""
+
+msgid "Ope_n an IM window"
+msgstr ""
+
+msgid "_Pop up a notification"
+msgstr ""
+
+msgid "Send a _message"
+msgstr ""
+
+msgid "E_xecute a command"
+msgstr ""
+
+msgid "P_lay a sound"
+msgstr ""
+
+msgid "Brows_e..."
+msgstr ""
+
+msgid "Br_owse..."
+msgstr ""
+
+msgid "Pre_view"
+msgstr ""
+
+msgid "P_ounce only when my status is not Available"
+msgstr ""
+
+msgid "_Recurring"
+msgstr ""
+
+msgid "Pounce Target"
+msgstr ""
+
+#, c-format
+msgid "Started typing"
+msgstr ""
+
+#, c-format
+msgid "Paused while typing"
+msgstr ""
+
+#, c-format
+msgid "Signed on"
+msgstr ""
+
+#, c-format
+msgid "Returned from being idle"
+msgstr ""
+
+#, c-format
+msgid "Returned from being away"
+msgstr ""
+
+#, c-format
+msgid "Stopped typing"
+msgstr ""
+
+#, c-format
+msgid "Signed off"
+msgstr ""
+
+#, c-format
+msgid "Became idle"
+msgstr ""
+
+#, c-format
+msgid "Went away"
+msgstr ""
+
+#, c-format
+msgid "Sent a message"
+msgstr ""
+
+#, c-format
+msgid "Unknown.... Please report this!"
+msgstr ""
+
+msgid "Smiley theme failed to unpack."
+msgstr ""
+
+msgid "Install Theme"
+msgstr ""
+
+msgid ""
+"Select a smiley theme that you would like to use from the list below. New "
+"themes can be installed by dragging and dropping them onto the theme list."
+msgstr ""
+
+msgid "Icon"
+msgstr ""
+
+msgid "Keyboard Shortcuts"
+msgstr ""
+
+msgid "Cl_ose conversations with the Escape key"
+msgstr ""
+
+#. Buddy List Themes
+msgid "Buddy List Theme"
+msgstr ""
+
+#. System Tray
+msgid "System Tray Icon"
+msgstr ""
+
+msgid "_Show system tray icon:"
+msgstr ""
+
+msgid "On unread messages"
+msgstr ""
+
+msgid "Conversation Window Hiding"
+msgstr ""
+
+msgid "_Hide new IM conversations:"
+msgstr ""
+
+msgid "When away"
+msgstr ""
+
+#. All the tab options!
+msgid "Tabs"
+msgstr ""
+
+msgid "Show IMs and chats in _tabbed windows"
+msgstr ""
+
+msgid "Show close b_utton on tabs"
+msgstr ""
+
+msgid "_Placement:"
+msgstr ""
+
+msgid "Top"
+msgstr ""
+
+msgid "Bottom"
+msgstr ""
+
+msgid "Left"
+msgstr ""
+
+msgid "Right"
+msgstr ""
+
+msgid "Left Vertical"
+msgstr ""
+
+msgid "Right Vertical"
+msgstr ""
+
+msgid "N_ew conversations:"
+msgstr ""
+
+msgid "Show _formatting on incoming messages"
+msgstr ""
+
+msgid "Close IMs immediately when the tab is closed"
+msgstr ""
+
+msgid "Show _detailed information"
+msgstr ""
+
+msgid "Enable buddy ic_on animation"
+msgstr ""
+
+msgid "_Notify buddies that you are typing to them"
+msgstr ""
+
+msgid "Highlight _misspelled words"
+msgstr ""
+
+msgid "Use smooth-scrolling"
+msgstr ""
+
+msgid "F_lash window when IMs are received"
+msgstr ""
+
+msgid "Minimi_ze new conversation windows"
+msgstr ""
+
+msgid "Minimum input area height in lines:"
+msgstr ""
+
+msgid "Font"
+msgstr ""
+
+msgid "Use document font from _theme"
+msgstr ""
+
+msgid "Use font from _theme"
+msgstr ""
+
+msgid "Conversation _font:"
+msgstr ""
+
+msgid "Default Formatting"
+msgstr ""
+
+msgid ""
+"This is how your outgoing message text will appear when you use protocols "
+"that support formatting."
+msgstr ""
+
+msgid "Cannot start proxy configuration program."
+msgstr ""
+
+msgid "Cannot start browser configuration program."
+msgstr ""
+
+msgid "<span style=\"italic\">Example: stunserver.org</span>"
+msgstr ""
+
+msgid "_Autodetect IP address"
+msgstr ""
+
+msgid "Public _IP:"
+msgstr ""
+
+msgid "Ports"
+msgstr ""
+
+msgid "_Enable automatic router port forwarding"
+msgstr ""
+
+msgid "_Manually specify range of ports to listen on"
+msgstr ""
+
+msgid "_Start port:"
+msgstr ""
+
+msgid "_End port:"
+msgstr ""
+
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
+msgid "Proxy Server &amp; Browser"
+msgstr ""
+
+msgid "<b>Proxy configuration program was not found.</b>"
+msgstr ""
+
+msgid "<b>Browser configuration program was not found.</b>"
+msgstr ""
+
+msgid ""
+"Proxy & Browser preferences are configured\n"
+"in GNOME Preferences"
+msgstr ""
+
+msgid "Configure _Proxy"
+msgstr ""
+
+msgid "Configure _Browser"
+msgstr ""
+
+msgid "Proxy Server"
+msgstr ""
+
+msgid "No proxy"
+msgstr ""
+
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
+msgid "_User:"
+msgstr ""
+
+msgid "Seamonkey"
+msgstr ""
+
+msgid "Opera"
+msgstr ""
+
+msgid "Netscape"
+msgstr ""
+
+msgid "Mozilla"
+msgstr ""
+
+msgid "Konqueror"
+msgstr ""
+
+msgid "Desktop Default"
+msgstr ""
+
+msgid "GNOME Default"
+msgstr ""
+
+msgid "Galeon"
+msgstr ""
+
+msgid "Firefox"
+msgstr ""
+
+msgid "Firebird"
+msgstr ""
+
+msgid "Epiphany"
+msgstr ""
+
+msgid "Manual"
+msgstr ""
+
+msgid "Browser Selection"
+msgstr ""
+
+msgid "_Browser:"
+msgstr ""
+
+msgid "_Open link in:"
+msgstr ""
+
+msgid "Browser default"
+msgstr ""
+
+msgid "Existing window"
+msgstr ""
+
+msgid "New tab"
+msgstr ""
+
+#, c-format
+msgid ""
+"_Manual:\n"
+"(%s for URL)"
+msgstr ""
+
+msgid "Log _format:"
+msgstr ""
+
+msgid "Log all _instant messages"
+msgstr ""
+
+msgid "Log all c_hats"
+msgstr ""
+
+msgid "Log all _status changes to system log"
+msgstr ""
+
+msgid "Sound Selection"
+msgstr ""
+
+#, c-format
+msgid "Quietest"
+msgstr ""
+
+#, c-format
+msgid "Quieter"
+msgstr ""
+
+#, c-format
+msgid "Quiet"
+msgstr ""
+
+#, c-format
+msgid "Loud"
+msgstr ""
+
+#, c-format
+msgid "Louder"
+msgstr ""
+
+#, c-format
+msgid "Loudest"
+msgstr ""
+
+msgid "_Method:"
+msgstr ""
+
+msgid "Console beep"
+msgstr ""
+
+msgid "No sounds"
+msgstr ""
+
+#, c-format
+msgid ""
+"Sound c_ommand:\n"
+"(%s for filename)"
+msgstr ""
+
+msgid "M_ute sounds"
+msgstr ""
+
+msgid "Sounds when conversation has _focus"
+msgstr ""
+
+msgid "_Enable sounds:"
+msgstr ""
+
+msgid "V_olume:"
+msgstr ""
+
+msgid "Play"
+msgstr ""
+
+msgid "_Browse..."
+msgstr ""
+
+msgid "_Reset"
+msgstr ""
+
+msgid "_Report idle time:"
+msgstr ""
+
+msgid "Based on keyboard or mouse use"
+msgstr ""
+
+msgid "_Auto-reply:"
+msgstr ""
+
+msgid "When both away and idle"
+msgstr ""
+
+#. Auto-away stuff
+msgid "Auto-away"
+msgstr ""
+
+msgid "_Minutes before becoming idle:"
+msgstr ""
+
+msgid "Change status when _idle"
+msgstr ""
+
+msgid "Change _status to:"
+msgstr ""
+
+#. Signon status stuff
+msgid "Status at Startup"
+msgstr ""
+
+msgid "Use status from last _exit at startup"
+msgstr ""
+
+msgid "Status to a_pply at startup:"
+msgstr ""
+
+msgid "Interface"
+msgstr ""
+
+msgid "Smiley Themes"
+msgstr ""
+
+msgid "Browser"
+msgstr ""
+
+msgid "Status / Idle"
+msgstr ""
+
+msgid "Allow all users to contact me"
+msgstr ""
+
+msgid "Allow only the users on my buddy list"
+msgstr ""
+
+msgid "Allow only the users below"
+msgstr ""
+
+msgid "Block all users"
+msgstr ""
+
+msgid "Block only the users below"
+msgstr ""
+
+msgid "Privacy"
+msgstr ""
+
+msgid "Changes to privacy settings take effect immediately."
+msgstr ""
+
+msgid "Set privacy for:"
+msgstr ""
+
+#. Remove All button
+msgid "Remove Al_l"
+msgstr ""
+
+msgid "Permit User"
+msgstr ""
+
+msgid "Type a user you permit to contact you."
+msgstr ""
+
+msgid "Please enter the name of the user you wish to be able to contact you."
+msgstr ""
+
+msgid "_Permit"
+msgstr ""
+
+#, c-format
+msgid "Allow %s to contact you?"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you wish to allow %s to contact you?"
+msgstr ""
+
+msgid "Block User"
+msgstr ""
+
+msgid "Type a user to block."
+msgstr ""
+
+msgid "Please enter the name of the user you wish to block."
+msgstr ""
+
+#, c-format
+msgid "Block %s?"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to block %s?"
+msgstr ""
+
+msgid "Apply"
+msgstr ""
+
+msgid "That file already exists"
+msgstr ""
+
+msgid "Would you like to overwrite it?"
+msgstr ""
+
+msgid "Overwrite"
+msgstr ""
+
+msgid "Choose New Name"
+msgstr ""
+
+msgid "Select Folder..."
+msgstr ""
+
+#. list button
+msgid "_Get List"
+msgstr ""
+
+#. add button
+msgid "_Add Chat"
+msgstr ""
+
+msgid "Are you sure you want to delete the selected saved statuses?"
+msgstr ""
+
+#. Use button
+msgid "_Use"
+msgstr ""
+
+msgid "Title already in use. You must choose a unique title."
+msgstr ""
+
+msgid "Different"
+msgstr ""
+
+msgid "_Title:"
+msgstr ""
+
+msgid "_Status:"
+msgstr ""
+
+#. Different status message expander
+msgid "Use a _different status for some accounts"
+msgstr ""
+
+#. Save & Use button
+msgid "Sa_ve & Use"
+msgstr ""
+
+#, c-format
+msgid "Status for %s"
+msgstr ""
+
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
+msgid "Custom Smiley"
+msgstr ""
+
+msgid "More Data needed"
+msgstr ""
+
+msgid "Please provide a shortcut to associate with the smiley."
+msgstr ""
+
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
+msgstr ""
+
+msgid "Duplicate Shortcut"
+msgstr ""
+
+msgid "Please select an image for the smiley."
+msgstr ""
+
+msgid "Edit Smiley"
+msgstr ""
+
+msgid "Add Smiley"
+msgstr ""
+
+msgid "_Image:"
+msgstr ""
+
+#. Shortcut text
+msgid "S_hortcut text:"
+msgstr ""
+
+msgid "Smiley"
+msgstr ""
+
+msgid "Shortcut Text"
+msgstr ""
+
+msgid "Custom Smiley Manager"
+msgstr ""
+
+msgid "Select Buddy Icon"
+msgstr ""
+
+msgid "Click to change your buddyicon for this account."
+msgstr ""
+
+msgid "Click to change your buddyicon for all accounts."
+msgstr ""
+
+msgid "Waiting for network connection"
+msgstr ""
+
+msgid "New status..."
+msgstr ""
+
+msgid "Saved statuses..."
+msgstr ""
+
+msgid "Status Selector"
+msgstr ""
+
+msgid "Google Talk"
+msgstr ""
+
+#, c-format
+msgid "The following error has occurred loading %s: %s"
+msgstr ""
+
+msgid "Failed to load image"
+msgstr ""
+
+#, c-format
+msgid "Cannot send folder %s."
+msgstr ""
+
+#, c-format
+msgid ""
+"%s cannot transfer a folder. You will need to send the files within "
+"individually."
+msgstr ""
+
+msgid "You have dragged an image"
+msgstr ""
+
+msgid ""
+"You can send this image as a file transfer, embed it into this message, or "
+"use it as the buddy icon for this user."
+msgstr ""
+
+msgid "Set as buddy icon"
+msgstr ""
+
+msgid "Send image file"
+msgstr ""
+
+msgid "Insert in message"
+msgstr ""
+
+msgid "Would you like to set it as the buddy icon for this user?"
+msgstr ""
+
+msgid ""
+"You can send this image as a file transfer, or use it as the buddy icon for "
+"this user."
+msgstr ""
+
+msgid ""
+"You can insert this image into this message, or use it as the buddy icon for "
+"this user"
+msgstr ""
+
+#. I don't know if we really want to do anything here. Most of the desktop item types are crap like
+#. * "MIME Type" (I have no clue how that would be a desktop item) and "Comment"... nothing we can really
+#. * send. The only logical one is "Application," but do we really want to send a binary and nothing else?
+#. * Probably not. I'll just give an error and return.
+#. The original patch sent the icon used by the launcher. That's probably wrong
+msgid "Cannot send launcher"
+msgstr ""
+
+msgid ""
+"You dragged a desktop launcher. Most likely you wanted to send whatever this "
+"launcher points to instead of this launcher itself."
+msgstr ""
+
+#, c-format
+msgid ""
+"<b>File:</b> %s\n"
+"<b>File size:</b> %s\n"
+"<b>Image size:</b> %dx%d"
+msgstr ""
+
+#, c-format
+msgid "The file '%s' is too large for %s. Please try a smaller image.\n"
+msgstr ""
+
+msgid "Icon Error"
+msgstr ""
+
+msgid "Could not set icon"
+msgstr ""
+
+#, c-format
+msgid "Failed to open file '%s': %s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Failed to load image '%s': reason not known, probably a corrupt image file"
+msgstr ""
+
+msgid "_Open Link"
+msgstr ""
+
+msgid "_Copy Link Location"
+msgstr ""
+
+msgid "_Copy Email Address"
+msgstr ""
+
+msgid "Save File"
+msgstr ""
+
+msgid "Select color"
+msgstr ""
+
+msgid "_Alias"
+msgstr ""
+
+msgid "Close _tabs"
+msgstr ""
+
+msgid "_Get Info"
+msgstr ""
+
+msgid "_Invite"
+msgstr ""
+
+msgid "_Modify..."
+msgstr ""
+
+msgid "_Add..."
+msgstr ""
+
+msgid "_Open Mail"
+msgstr ""
+
+msgid "_Edit"
+msgstr ""
+
+msgid "Pidgin Tooltip"
+msgstr ""
+
+msgid "Pidgin smileys"
+msgstr ""
+
+msgid "Penguin Pimps"
+msgstr ""
+
+msgid "Selecting this disables graphical emoticons."
+msgstr ""
+
+msgid "none"
+msgstr ""
+
+msgid "Small"
+msgstr ""
+
+msgid "Smaller versions of the default smilies"
+msgstr ""
+
+msgid "Response Probability:"
+msgstr ""
+
+msgid "Statistics Configuration"
+msgstr ""
+
+#. msg_difference spinner
+msgid "Maximum response timeout:"
+msgstr ""
+
+msgid "minutes"
+msgstr ""
+
+#. last_seen spinner
+msgid "Maximum last-seen difference:"
+msgstr ""
+
+#. threshold spinner
+msgid "Threshold:"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Contact Availability Prediction"
+msgstr ""
+
+#. *< name
+#. *< version
+msgid "Contact Availability Prediction plugin."
+msgstr ""
+
+#. * summary
+msgid "Displays statistical information about your buddies' availability"
+msgstr ""
+
+msgid "Buddy is idle"
+msgstr ""
+
+msgid "Buddy is away"
+msgstr ""
+
+msgid "Buddy is \"extended\" away"
+msgstr ""
+
+#. Not used yet.
+msgid "Buddy is mobile"
+msgstr ""
+
+msgid "Buddy is offline"
+msgstr ""
+
+msgid "Point values to use when..."
+msgstr ""
+
+msgid ""
+"The buddy with the <i>largest score</i> is the buddy who will have priority "
+"in the contact.\n"
+msgstr ""
+
+msgid "Use last buddy when scores are equal"
+msgstr ""
+
+msgid "Point values to use for account..."
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Contact Priority"
+msgstr ""
+
+#. *< name
+#. *< version
+#. *< summary
+msgid ""
+"Allows for controlling the values associated with different buddy states."
+msgstr ""
+
+#. *< description
+msgid ""
+"Allows for changing the point values of idle/away/offline states for buddies "
+"in contact priority computations."
+msgstr ""
+
+msgid "Conversation Colors"
+msgstr ""
+
+msgid "Customize colors in the conversation window"
+msgstr ""
+
+msgid "Error Messages"
+msgstr ""
+
+msgid "Highlighted Messages"
+msgstr ""
+
+msgid "System Messages"
+msgstr ""
+
+msgid "Sent Messages"
+msgstr ""
+
+msgid "Received Messages"
+msgstr ""
+
+#, c-format
+msgid "Select Color for %s"
+msgstr ""
+
+msgid "Ignore incoming format"
+msgstr ""
+
+msgid "Apply in Chats"
+msgstr ""
+
+msgid "Apply in IMs"
+msgstr ""
+
+msgid "By conversation count"
+msgstr ""
+
+msgid "Conversation Placement"
+msgstr ""
+
+#. Translators: "New conversations" should match the text in the preferences dialog and "By conversation count" should be the same text used above
+msgid ""
+"Note: The preference for \"New conversations\" must be set to \"By "
+"conversation count\"."
+msgstr ""
+
+msgid "Number of conversations per window"
+msgstr ""
+
+msgid "Separate IM and Chat windows when placing by number"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "ExtPlacement"
+msgstr ""
+
+#. *< name
+#. *< version
+msgid "Extra conversation placement options."
+msgstr ""
+
+#. *< summary
+#. * description
+msgid ""
+"Restrict the number of conversations per windows, optionally separating IMs "
+"and Chats"
+msgstr ""
+
+#. Configuration frame
+msgid "Mouse Gestures Configuration"
+msgstr ""
+
+msgid "Middle mouse button"
+msgstr ""
+
+msgid "Right mouse button"
+msgstr ""
+
+#. "Visual gesture display" checkbox
+msgid "_Visual gesture display"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Mouse Gestures"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Provides support for mouse gestures"
+msgstr ""
+
+#. * description
+msgid ""
+"Allows support for mouse gestures in conversation windows. Drag the middle "
+"mouse button to perform certain actions:\n"
+" • Drag down and then to the right to close a conversation.\n"
+" • Drag up and then to the left to switch to the previous conversation.\n"
+" • Drag up and then to the right to switch to the next conversation."
+msgstr ""
+
+msgid "Instant Messaging"
+msgstr ""
+
+#. Add the label.
+msgid "Select a person from your address book below, or add a new person."
+msgstr ""
+
+msgid "Group:"
+msgstr ""
+
+#. "New Person" button
+msgid "New Person"
+msgstr ""
+
+#. "Select Buddy" button
+msgid "Select Buddy"
+msgstr ""
+
+#. Add the label.
+msgid ""
+"Select a person from your address book to add this buddy to, or create a new "
+"person."
+msgstr ""
+
+#. Add the expander
+msgid "User _details"
+msgstr ""
+
+#. "Associate Buddy" button
+msgid "_Associate Buddy"
+msgstr ""
+
+msgid "Unable to send email"
+msgstr ""
+
+msgid "The evolution executable was not found in the PATH."
+msgstr ""
+
+msgid "An email address was not found for this buddy."
+msgstr ""
+
+msgid "Add to Address Book"
+msgstr ""
+
+msgid "Send Email"
+msgstr ""
+
+#. Configuration frame
+msgid "Evolution Integration Configuration"
+msgstr ""
+
+#. Label
+msgid "Select all accounts that buddies should be auto-added to."
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Evolution Integration"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Provides integration with Evolution."
+msgstr ""
+
+msgid "Please enter the person's information below."
+msgstr ""
+
+msgid "Please enter the buddy's username and account type below."
+msgstr ""
+
+msgid "Account type:"
+msgstr ""
+
+#. Optional Information section
+msgid "Optional information:"
+msgstr ""
+
+msgid "First name:"
+msgstr ""
+
+msgid "Last name:"
+msgstr ""
+
+msgid "Email:"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "GTK Signals Test"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Test to see that all ui signals are working properly."
+msgstr ""
+
+#, c-format
+msgid ""
+"\n"
+"<b>Buddy Note</b>: %s"
+msgstr ""
+
+msgid "History"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Iconify on Away"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Iconifies the buddy list and your conversations when you go away."
+msgstr ""
+
+msgid "Mail Checker"
+msgstr ""
+
+msgid "Checks for new local mail."
+msgstr ""
+
+msgid "Adds a small box to the buddy list that shows if you have new mail."
+msgstr ""
+
+msgid "Markerline"
+msgstr ""
+
+msgid "Draw a line to indicate new messages in a conversation."
+msgstr ""
+
+msgid "Jump to markerline"
+msgstr ""
+
+msgid "Draw Markerline in "
+msgstr ""
+
+msgid "_IM windows"
+msgstr ""
+
+msgid "C_hat windows"
+msgstr ""
+
+msgid ""
+"A music messaging session has been requested. Please click the MM icon to "
+"accept."
+msgstr ""
+
+msgid "Music messaging session confirmed."
+msgstr ""
+
+msgid "Music Messaging"
+msgstr ""
+
+msgid "There was a conflict in running the command:"
+msgstr ""
+
+msgid "Error Running Editor"
+msgstr ""
+
+msgid "The following error has occurred:"
+msgstr ""
+
+#. Configuration frame
+msgid "Music Messaging Configuration"
+msgstr ""
+
+msgid "Score Editor Path"
+msgstr ""
+
+msgid "_Apply"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+msgid "Music Messaging Plugin for collaborative composition."
+msgstr ""
+
+#. * summary
+msgid ""
+"The Music Messaging Plugin allows a number of users to simultaneously work "
+"on a piece of music by editting a common score in real-time."
+msgstr ""
+
+#. ---------- "Notify For" ----------
+msgid "Notify For"
+msgstr ""
+
+msgid "\t_Only when someone says your username"
+msgstr ""
+
+msgid "_Focused windows"
+msgstr ""
+
+#. ---------- "Notification Methods" ----------
+msgid "Notification Methods"
+msgstr ""
+
+msgid "Prepend _string into window title:"
+msgstr ""
+
+#. Count method button
+msgid "Insert c_ount of new messages into window title"
+msgstr ""
+
+#. Count xprop method button
+msgid "Insert count of new message into _X property"
+msgstr ""
+
+#. Urgent method button
+msgid "Set window manager \"_URGENT\" hint"
+msgstr ""
+
+msgid "_Flash window"
+msgstr ""
+
+#. Raise window method button
+msgid "R_aise conversation window"
+msgstr ""
+
+#. Present conversation method button
+msgid "_Present conversation window"
+msgstr ""
+
+#. ---------- "Notification Removals" ----------
+msgid "Notification Removal"
+msgstr ""
+
+#. Remove on focus button
+msgid "Remove when conversation window _gains focus"
+msgstr ""
+
+#. Remove on click button
+msgid "Remove when conversation window _receives click"
+msgstr ""
+
+#. Remove on type button
+msgid "Remove when _typing in conversation window"
+msgstr ""
+
+#. Remove on message send button
+msgid "Remove when a _message gets sent"
+msgstr ""
+
+#. Remove on conversation switch button
+msgid "Remove on switch to conversation ta_b"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Message Notification"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Provides a variety of ways of notifying you of unread messages."
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Pidgin Demonstration Plugin"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "An example plugin that does stuff - see the description."
+msgstr ""
+
+#. * description
+msgid ""
+"This is a really cool plugin that does a lot of stuff:\n"
+"- It tells you who wrote the program when you log in\n"
+"- It reverses all incoming text\n"
+"- It sends a message to people on your list immediately when they sign on"
+msgstr ""
+
+msgid "Cursor Color"
+msgstr ""
+
+msgid "Secondary Cursor Color"
+msgstr ""
+
+msgid "Hyperlink Color"
+msgstr ""
+
+msgid "Visited Hyperlink Color"
+msgstr ""
+
+msgid "Highlighted Message Name Color"
+msgstr ""
+
+msgid "GtkTreeView Horizontal Separation"
+msgstr ""
+
+msgid "Conversation Entry"
+msgstr ""
+
+msgid "Request Dialog"
+msgstr ""
+
+msgid "Notify Dialog"
+msgstr ""
+
+msgid "Select Color"
+msgstr ""
+
+#, c-format
+msgid "Select Interface Font"
+msgstr ""
+
+#, c-format
+msgid "Select Font for %s"
+msgstr ""
+
+msgid "GTK+ Interface Font"
+msgstr ""
+
+msgid "GTK+ Text Shortcut Theme"
+msgstr ""
+
+#.
+#. for (i = 0; i < G_N_ELEMENTS(widget_bool_prefs); i++) {
+#. hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_CAT_SPACE);
+#. gtk_box_pack_start(GTK_BOX(frame), hbox, FALSE, FALSE, 0);
+#.
+#. check = pidgin_prefs_checkbox(_(widget_bool_names[i]),
+#. widget_bool_prefs_set[i], hbox);
+#. gtk_size_group_add_widget(labelsg, check);
+#.
+#. widget_bool_widgets[i] = pidgin_prefs_checkbox("", widget_bool_prefs[i], hbox);
+#. *
+#. gtk_size_group_add_widget(widgetsb, widget_bool_widgets[i]);
+#. *
+#. gtk_widget_set_sensitive(widget_bool_widgets[i],
+#. purple_prefs_get_bool(widget_bool_prefs_set[i]));
+#. g_signal_connect(G_OBJECT(check), "toggled",
+#. G_CALLBACK(pidgin_toggle_sensitive),
+#. widget_bool_widgets[i]);
+#. }
+#.
+msgid "Interface colors"
+msgstr ""
+
+msgid "Widget Sizes"
+msgstr ""
+
+msgid "Fonts"
+msgstr ""
+
+msgid "Gtkrc File Tools"
+msgstr ""
+
+#, c-format
+msgid "Write settings to %s%sgtkrc-2.0"
+msgstr ""
+
+msgid "Re-read gtkrc files"
+msgstr ""
+
+msgid "Pidgin GTK+ Theme Control"
+msgstr ""
+
+msgid "Provides access to commonly used gtkrc settings."
+msgstr ""
+
+msgid "Raw"
+msgstr ""
+
+msgid "Lets you send raw input to text-based protocols."
+msgstr ""
+
+msgid ""
+"Lets you send raw input to text-based protocols (XMPP, MSN, IRC, TOC). Hit "
+"'Enter' in the entry box to send. Watch the debug window."
+msgstr ""
+
+#, c-format
+msgid "You can upgrade to %s %s today."
+msgstr ""
+
+msgid "New Version Available"
+msgstr ""
+
+msgid "Later"
+msgstr ""
+
+msgid "Download Now"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Release Notification"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Checks periodically for new releases."
+msgstr ""
+
+#. * description
+msgid ""
+"Checks periodically for new releases and notifies the user with the "
+"ChangeLog."
+msgstr ""
+
+#. *< major version
+#. *< minor version
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Send Button"
+msgstr ""
+
+#. *< name
+#. *< version
+msgid "Conversation Window Send Button."
+msgstr ""
+
+#. *< summary
+msgid ""
+"Adds a Send button to the entry area of the conversation window. Intended "
+"for when no physical keyboard is present."
+msgstr ""
+
+msgid "Duplicate Correction"
+msgstr ""
+
+msgid "The specified word already exists in the correction list."
+msgstr ""
+
+msgid "Text Replacements"
+msgstr ""
+
+msgid "You type"
+msgstr ""
+
+msgid "You send"
+msgstr ""
+
+msgid "Whole words only"
+msgstr ""
+
+msgid "Case sensitive"
+msgstr ""
+
+msgid "Add a new text replacement"
+msgstr ""
+
+msgid "You _type:"
+msgstr ""
+
+msgid "You _send:"
+msgstr ""
+
+#. Created here so it can be passed to whole_words_button_toggled.
+msgid "_Exact case match (uncheck for automatic case handling)"
+msgstr ""
+
+msgid "Only replace _whole words"
+msgstr ""
+
+msgid "General Text Replacement Options"
+msgstr ""
+
+msgid "Enable replacement of last word on send"
+msgstr ""
+
+msgid "Text replacement"
+msgstr ""
+
+msgid "Replaces text in outgoing messages according to user-defined rules."
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Buddy Ticker"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "A horizontal scrolling version of the buddy list."
+msgstr ""
+
+msgid "Display Timestamps Every"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Timestamp"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Display iChat-style timestamps"
+msgstr ""
+
+#. * description
+msgid "Display iChat-style timestamps every N minutes."
+msgstr ""
+
+msgid "Timestamp Format Options"
+msgstr ""
+
+#, c-format
+msgid "_Force 24-hour time format"
+msgstr ""
+
+msgid "Show dates in..."
+msgstr ""
+
+msgid "Co_nversations:"
+msgstr ""
+
+msgid "For delayed messages"
+msgstr ""
+
+msgid "For delayed messages and in chats"
+msgstr ""
+
+msgid "_Message Logs:"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Message Timestamp Formats"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Customizes the message timestamp formats."
+msgstr ""
+
+#. * description
+msgid ""
+"This plugin allows the user to customize conversation and logging message "
+"timestamp formats."
+msgstr ""
+
+msgid "Opacity:"
+msgstr ""
+
+#. IM Convo trans options
+msgid "IM Conversation Windows"
+msgstr ""
+
+msgid "_IM window transparency"
+msgstr ""
+
+msgid "_Show slider bar in IM window"
+msgstr ""
+
+msgid "Remove IM window transparency on focus"
+msgstr ""
+
+msgid "Always on top"
+msgstr ""
+
+#. Buddy List trans options
+msgid "Buddy List Window"
+msgstr ""
+
+msgid "_Buddy List window transparency"
+msgstr ""
+
+msgid "Remove Buddy List window transparency on focus"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Transparency"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Variable Transparency for the buddy list and conversations."
+msgstr ""
+
+#. * description
+msgid ""
+"This plugin enables variable alpha transparency on conversation windows and "
+"the buddy list.\n"
+"\n"
+"* Note: This plugin requires Win2000 or greater."
+msgstr ""
+
+msgid "GTK+ Runtime Version"
+msgstr ""
+
+#. Autostart
+msgid "Startup"
+msgstr ""
+
+#, c-format
+msgid "_Start %s on Windows startup"
+msgstr ""
+
+msgid "_Dockable Buddy List"
+msgstr ""
+
+#. Blist On Top
+msgid "_Keep Buddy List window on top:"
+msgstr ""
+
+#. XXX: Did this ever work?
+msgid "Only when docked"
+msgstr ""
+
+msgid "Windows Pidgin Options"
+msgstr ""
+
+msgid "Options specific to Pidgin for Windows."
+msgstr ""
+
+msgid ""
+"Provides options specific to Pidgin for Windows , such as buddy list docking."
+msgstr ""
+
+msgid "<font color='#777777'>Logged out.</font>"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "XMPP Console"
+msgstr ""
+
+msgid "Account: "
+msgstr ""
+
+msgid "<font color='#777777'>Not connected to XMPP</font>"
+msgstr ""
+
+msgid "Insert an <iq/> stanza."
+msgstr ""
+
+msgid "Insert a <presence/> stanza."
+msgstr ""
+
+msgid "Insert a <message/> stanza."
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Send and receive raw XMPP stanzas."
+msgstr ""
+
+#. * description
+msgid "This plugin is useful for debbuging XMPP servers or clients."
+msgstr ""
diff --git a/po/id.po b/po/id.po
index 71201e49b9..48c648c84d 100644
--- a/po/id.po
+++ b/po/id.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin 2.2.2\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
+"POT-Creation-Date: 2009-04-30 10:38-0400\n"
"PO-Revision-Date: 2007-10-28 02:39+0800\n"
"Last-Translator: Rai S. Regawa <raireg@yahoo.com>\n"
"Language-Team: Rai S. Regawa <raireg@yahoo.com>\n"
@@ -28,13 +28,13 @@ msgstr "Finch"
msgid "%s. Try `%s -h' for more information.\n"
msgstr "%s. Coba `%s -h' untuk informasi lebih lanjut.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -628,21 +628,6 @@ msgstr ""
msgid "Send To"
msgstr "Kirim Kepada"
-#, fuzzy
-msgid "Invite message"
-msgstr "Masukkan dalam pesan"
-
-msgid "Invite"
-msgstr "Undang"
-
-#, fuzzy
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Mohon masukkan nama dari pengguna yang ingin anda undang, berikut dengan "
-"pesan undangan pilihan."
-
msgid "Conversation"
msgstr "Percakapan"
@@ -899,6 +884,41 @@ msgstr "Percakapan-percakapan"
msgid "System Log"
msgstr "Log Sistem"
+#, fuzzy
+msgid "Calling ... "
+msgstr "Menghitung..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "Terima"
+
+msgid "Reject"
+msgstr "Tolak"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "Anda telah meninggalkan saluran%s%s"
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "Email-email"
@@ -933,6 +953,9 @@ msgstr "Lanjutkan"
msgid "IM"
msgstr "PI"
+msgid "Invite"
+msgstr "Undang"
+
msgid "(none)"
msgstr "(tidak ada)"
@@ -1140,7 +1163,6 @@ msgstr "%s telah menjauh. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s telah mengirim sebuah pesan. (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "Peristiwa tos tak dikenal. Mohon laporkan ini!"
@@ -1186,7 +1208,6 @@ msgstr "Menit-menit ketika merubah status"
msgid "Change status to"
msgstr "Rubah status pada"
-#. Conversations
msgid "Conversations"
msgstr "Percakapan-percakapan"
@@ -1512,7 +1533,6 @@ msgstr ""
"Ketika percakapan baru dibuka plugin ini akan memasukkanpercakapan terakhir "
"ke dalam percakapan baru."
-#, c-format
msgid "Online"
msgstr "Online"
@@ -1561,6 +1581,28 @@ msgstr "GntLastlog"
msgid "Lastlog plugin."
msgstr "Plugin Logterakhir."
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL Nada"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "akun-akun"
@@ -1661,13 +1703,6 @@ msgstr "Terima sertifikat untuk %s?"
msgid "SSL Certificate Verification"
msgstr "Verfikasi Sertifikat SSL"
-#. Number of actions
-msgid "Accept"
-msgstr "Terima"
-
-msgid "Reject"
-msgstr "Tolak"
-
msgid "_View Certificate..."
msgstr "_Lihat Sertifikat..."
@@ -1817,6 +1852,18 @@ msgstr "%s meninggalkan kamar."
msgid "%s left the room (%s)."
msgstr "%s meninggalkan kamar (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Undang ke Konferensi"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Mohon masukkan nama dari pengguna yang ingin anda undang, berikut dengan "
+"pesan undangan pilihan."
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "Gagal mendapatkan sambungan: %s"
@@ -1951,7 +1998,6 @@ msgstr "Memulai transfer %s dari %s"
msgid "Transfer of file %s complete"
msgstr "Transfer file %s selesai"
-#, c-format
msgid "File transfer complete"
msgstr "Transfer file selesai"
@@ -1959,7 +2005,6 @@ msgstr "Transfer file selesai"
msgid "You canceled the transfer of %s"
msgstr "Anda membatalkan transfer %s"
-#, c-format
msgid "File transfer cancelled"
msgstr "Transfer file dibatalkan"
@@ -2169,7 +2214,6 @@ msgstr "(%s) %s <AUTO-REPLY>: %s\n"
msgid "You are using %s, but this plugin requires %s."
msgstr "Anda menggunakan %s, tetapi plugin ini memerlukan %s."
-#, c-format
msgid "This plugin has not defined an ID."
msgstr "Plugin ini tidak mendefinisikan ID."
@@ -2657,6 +2701,32 @@ msgstr "Simpan pesan offline dalam tos"
msgid "Do not ask. Always save in pounce."
msgstr "Jangan tanya. Selalu simpan dalam tos."
+#, fuzzy
+msgid "One Time Password"
+msgstr "Masukkan kata sandi"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2861,7 +2931,6 @@ msgid ""
"Unable to establish connection with the local mDNS server. Is it running?"
msgstr "Tidak dapat menjalin sambungan dengan sever mDNS lokal - apakah aktif?"
-#. Creating the options for the protocol
msgid "First name"
msgstr "Nama Depan"
@@ -2893,6 +2962,11 @@ msgstr "Protokol Plugin Bonjour"
msgid "Purple Person"
msgstr "Orang Ungu"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "Lokalitas"
+
msgid "Bonjour"
msgstr "Bonjour"
@@ -3052,13 +3126,13 @@ msgstr "Pilih percakapan untuk teman: %s"
msgid "Add to chat..."
msgstr "Tambahkan ke percakapan..."
+#. Global
msgid "Available"
msgstr "Tersedia"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "Menjauh"
@@ -3400,6 +3474,17 @@ msgstr ""
"Pilihan anda anda ditolak server. Kemungkinan mengandung karakter tidak "
"valid."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "Nama percakapan ini telah digunakan"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Nama Panggilan"
+
msgid "Cannot change nick"
msgstr "Tidak bisa mengganti nama panggilan"
@@ -3680,6 +3765,41 @@ msgstr "Tantangan tidak valid dari server"
msgid "SASL error"
msgstr "kesalahan SASL"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "Tidak diberikan alasan."
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Versi Tidak Didukung"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"Tidak dapat membuat sambungan dengan server:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"Tidak dapat membuat sambungan dengan server:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "Tidak dapat menginisialisasi sambungan"
+
+msgid "Unable to create socket"
+msgstr "Tidak dapat menciptakan soket"
+
+msgid "Write error"
+msgstr "Kesalahan penulisan"
+
msgid "Full Name"
msgstr "Nama Lengkap"
@@ -3746,6 +3866,10 @@ msgstr "Klien"
msgid "Operating System"
msgstr "Sistem Operasi"
+#, fuzzy
+msgid "Local Time"
+msgstr "File Lokal:"
+
msgid "Last Activity"
msgstr "Aktifitas Terakhir"
@@ -3951,7 +4075,6 @@ msgstr "Sedang Ingin Ngobrol"
msgid "Extended Away"
msgstr "Menjauh untuk Lama"
-#, c-format
msgid "Do Not Disturb"
msgstr "Jangan Diganggu"
@@ -4077,9 +4200,6 @@ msgstr "Cari Kamar"
msgid "You require encryption, but it is not available on this server."
msgstr "Anda memerlukan enkripsi, tetapi tidak tersedia pada server ini."
-msgid "Write error"
-msgstr "Kesalahan penulisan"
-
#, fuzzy
msgid "Ping timeout"
msgstr "Teks biasa"
@@ -4089,14 +4209,9 @@ msgstr "Kesalahan Baca"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"Tidak dapat membuat sambungan dengan server:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "Tidak dapat menciptakan soket"
msgid "Invalid XMPP ID"
msgstr "ID XMPP Tidak Valid"
@@ -4104,6 +4219,10 @@ msgstr "ID XMPP Tidak Valid"
msgid "Invalid XMPP ID. Domain must be set."
msgstr "ID XMPP Tidak Valid. Domain harus diset."
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Gagal tersambung ke server."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "Pendaftaran dari %s@%s sukses"
@@ -4190,9 +4309,18 @@ msgstr "Mengotentikasi"
msgid "Re-initializing Stream"
msgstr "Menginisialisasi Ulang Aliran"
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr "Tidak Diijinkan"
+msgid "Mood"
+msgstr "Mood"
+
+msgid "Now Listening"
+msgstr ""
+
msgid "Both"
msgstr "Keduanya"
@@ -4214,12 +4342,6 @@ msgstr "Tidak Ada"
msgid "Subscription"
msgstr "Langganan"
-msgid "Mood"
-msgstr "Mood"
-
-msgid "Now Listening"
-msgstr ""
-
msgid "Mood Text"
msgstr "Teks Mood"
@@ -4457,18 +4579,24 @@ msgstr "Tidak dapat menendang pengguna %s"
msgid "Unable to ping user %s"
msgstr "Tidak dapat mem-ping pengguna %s"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr "Tidak dapat mem-buzz, tidak ada yang diketahui tentang pengguna %s."
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr "Tidak dapat mem-buzz, karena pengguna %s sedang tidak ada."
-#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+#, fuzzy, c-format
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "Tidak dapat mem-buss, karena pengguna %s tidak mendukungnya."
+#, c-format
+msgid "Buzzing %s..."
+msgstr "Mem-buzz %s..."
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
msgid "Buzz"
@@ -4478,9 +4606,35 @@ msgstr "Buzz"
msgid "%s has buzzed you!"
msgstr "%s telah mem-buzz anda!"
-#, c-format
-msgid "Buzzing %s..."
-msgstr "Mem-buzz %s..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "Tidak dapat mengirim file kepada %s, JID tidak valid"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr ""
+"Tidak dapat mengirim file ke %s, pengguna tidak mendukung transfer file"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr "Tidak dapat mengirim file ke %s, tidak terdafatar pada daftar hadir"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "Pendaftaran Gagal"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "Tolong pilih ke sumber mana dari %s anda ingin mengirim file"
+
+msgid "Select a Resource"
+msgstr "Pilih sebuah sumber"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "Memulai _Percakapan"
msgid "config: Configure a chat room."
msgstr "konfig: Konfigurasi kamar percakapan."
@@ -4639,6 +4793,21 @@ msgstr "Kesalahan bergabung percakapan %s"
msgid "Error in chat %s"
msgstr "Kesalahan dalam percakapan %s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "Kesalahan terjadi ketika membuka file."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "Transfer File Gagal"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Gagal membuka file \"%s\": %s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4664,9 +4833,6 @@ msgstr "Tidak dapat mengirim file ke %s, tidak terdafatar pada daftar hadir"
msgid "Please select the resource of %s to which you would like to send a file"
msgstr "Tolong pilih ke sumber mana dari %s anda ingin mengirim file"
-msgid "Select a Resource"
-msgstr "Pilih sebuah sumber"
-
msgid "Edit User Mood"
msgstr "Rubah Mood Pengguna"
@@ -4701,8 +4867,19 @@ msgstr "Aksi-aksi"
msgid "Select an action"
msgstr "Pilih sebuah aksi"
-msgid "Unable to retrieve MSN Address Book"
-msgstr "Tidak dapat memanggil Buku Alamat MSN"
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr "Tidak dapat menambahkan \"%s\"."
+
+msgid "Buddy Add error"
+msgstr ""
+
+#, fuzzy
+msgid "The username specified does not exist."
+msgstr "Nama layar yang ditentukan tidak valid."
#, c-format
msgid "Buddy list synchronization issue in %s (%s)"
@@ -4932,7 +5109,7 @@ msgstr "Paspor Anak tanpa ijin orang tua"
msgid "Passport account not yet verified"
msgstr "Akun paspor belum diverifikasi"
-#, fuzzy, c-format
+#, fuzzy
msgid "Passport account suspended"
msgstr "Akun paspor belum diverifikasi"
@@ -5029,6 +5206,13 @@ msgstr "Simpan pesan mobile."
msgid "Page"
msgstr "Halaman"
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "Pekerjaan"
+
msgid "Has you"
msgstr "Memiliki anda"
@@ -5070,6 +5254,14 @@ msgstr "Artis-artis"
msgid "Album"
msgstr "Album Nada"
+#, fuzzy
+msgid "Game Title"
+msgstr "Judul Nada"
+
+#, fuzzy
+msgid "Office Title"
+msgstr "Judul Nada"
+
msgid "Set Friendly Name..."
msgstr "Atur Nama Bersahabat..."
@@ -5261,8 +5453,9 @@ msgstr ""
"Tidak dapat menemukan informasi dalam profil pengguna. Pengguna kemungkinan "
"besar tidak ada."
-msgid "Profile URL"
-msgstr "URL Profil"
+#, fuzzy
+msgid "View web profile"
+msgstr "Sembunyikan saat tidak tersambung"
#. *< type
#. *< ui_requirement
@@ -5514,13 +5707,6 @@ msgstr "Tambahkan ke Buku Alamat"
msgid "Do you want to delete this buddy from your address book as well?"
msgstr "Apakah anda ingin menambahkan teman ini ke daftar teman anda?"
-#. only notify the user about problems adding to the friends list
-#. * maybe we should do something else for other lists, but it probably
-#. * won't cause too many problems if we just ignore it
-#, c-format
-msgid "Unable to add \"%s\"."
-msgstr "Tidak dapat menambahkan \"%s\"."
-
#, fuzzy
msgid "The username specified is invalid."
msgstr "Nama layar yang ditentukan tidak valid."
@@ -5528,6 +5714,9 @@ msgstr "Nama layar yang ditentukan tidak valid."
msgid "This Hotmail account may not be active."
msgstr "Akun Hotmail ini mungkin tidak aktif."
+msgid "Profile URL"
+msgstr "URL Profil"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5542,18 +5731,12 @@ msgstr "Akun Hotmail ini mungkin tidak aktif."
msgid "MSN Protocol Plugin"
msgstr "Plugin Protokol AIM"
-msgid "Missing Cipher"
-msgstr "Cipher Kurang"
-
-msgid "The RC4 cipher could not be found"
-msgstr "Cipher RC$ tidak dapat ditemukan"
+#, c-format
+msgid "No such user: %s"
+msgstr "Tidak ada pengguna: %s"
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
-msgstr ""
-"Perbaharui ke libpurple dengan dukungan RC4 (>= 2.0.1). Plugin MySpaceIM "
-"tidak akan dimuat."
+msgid "User lookup"
+msgstr "Pencarian pengguna"
msgid "Reading challenge"
msgstr "Tantangan Pembacaan"
@@ -5564,11 +5747,21 @@ msgstr "Tantangan panjang tak terduga dari dari server"
msgid "Logging in"
msgstr "Logging masuk"
-#, fuzzy, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] "Sambungan ke server putus (tidak ada data diterima dalam %d detik)"
-msgstr[1] "Sambungan ke server putus (tidak ada data diterima dalam %d detik)"
+#, fuzzy
+msgid "MySpaceIM - No Username Set"
+msgstr "Nama pengguan tidak diatur"
+
+msgid "You appear to have no MySpace username."
+msgstr ""
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr ""
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr ""
+"Kehilangan sambungan dengan sever\n"
+"%s"
#. Can't write _()'d strings in array initializers. Workaround.
msgid "New mail messages"
@@ -5589,15 +5782,25 @@ msgstr "Komentar gambar baru"
msgid "MySpace"
msgstr "MySpace"
-#, fuzzy
-msgid "MySpaceIM - No Username Set"
-msgstr "Nama pengguan tidak diatur"
+msgid "IM Friends"
+msgstr "Teman-teman PI"
-msgid "You appear to have no MySpace username."
-msgstr ""
+#, fuzzy, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+"%d teman ditambahakan atau diperbaharui dari server (termasuk teman yang "
+"sudah berada pada daftar di sisi server)"
+msgstr[1] ""
+"%d teman ditambahakan atau diperbaharui dari server (termasuk teman yang "
+"sudah berada pada daftar di sisi server)"
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
-msgstr ""
+msgid "Add contacts from server"
+msgstr "Tambahkan kontak dari server"
#. The session is now set up, ready to be connected. This emits the
#. * signedOn signal, so clients can now do anything with msimprpl, and
@@ -5620,6 +5823,20 @@ msgstr ""
msgid "MySpaceIM Error"
msgstr "Kesalahan MySpaceIM"
+msgid "Invalid input condition"
+msgstr "Kondisi input tidak valid"
+
+#, fuzzy
+msgid "Read buffer full (2)"
+msgstr "Buffer baca penuh"
+
+msgid "Unparseable message"
+msgstr "Pesan yang tidak dapat dipecah"
+
+#, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr "Tidak dapat tersambung ke host: %s (%d)"
+
msgid "Failed to add buddy"
msgstr "Gagal menambahkan teman"
@@ -5629,13 +5846,6 @@ msgstr "Perintah addbuddy' gagal."
msgid "persist command failed"
msgstr "perintah bertahan gagal"
-#, c-format
-msgid "No such user: %s"
-msgstr "Tidak ada pengguna: %s"
-
-msgid "User lookup"
-msgstr "Pencarian pengguna"
-
msgid "Failed to remove buddy"
msgstr "Gagal menghapus teman"
@@ -5645,39 +5855,18 @@ msgstr "perintah delbuddy' gagal"
msgid "blocklist command failed"
msgstr "perintah blocklist gagal"
-msgid "Invalid input condition"
-msgstr "Kondisi input tidak valid"
-
-#, fuzzy
-msgid "Read buffer full (2)"
-msgstr "Buffer baca penuh"
-
-msgid "Unparseable message"
-msgstr "Pesan yang tidak dapat dipecah"
-
-#, c-format
-msgid "Couldn't connect to host: %s (%d)"
-msgstr "Tidak dapat tersambung ke host: %s (%d)"
+msgid "Missing Cipher"
+msgstr "Cipher Kurang"
-msgid "IM Friends"
-msgstr "Teman-teman PI"
+msgid "The RC4 cipher could not be found"
+msgstr "Cipher RC$ tidak dapat ditemukan"
-#, fuzzy, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-"%d teman ditambahakan atau diperbaharui dari server (termasuk teman yang "
-"sudah berada pada daftar di sisi server)"
-msgstr[1] ""
-"%d teman ditambahakan atau diperbaharui dari server (termasuk teman yang "
-"sudah berada pada daftar di sisi server)"
-
-msgid "Add contacts from server"
-msgstr "Tambahkan kontak dari server"
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
+"Perbaharui ke libpurple dengan dukungan RC4 (>= 2.0.1). Plugin MySpaceIM "
+"tidak akan dimuat."
msgid "Add friends from MySpace.com"
msgstr "Tambahkan teman dari MySpace.com"
@@ -5719,9 +5908,6 @@ msgstr "Ukuran huruf dasar (point)r"
msgid "User"
msgstr "Pengguna"
-msgid "Profile"
-msgstr "Profil"
-
msgid "Headline"
msgstr "Judul"
@@ -5734,16 +5920,6 @@ msgstr "Total Teman"
msgid "Client Version"
msgstr "Versi Klien"
-#. Protocol won't log in now without a username set.. Disconnect
-msgid "No username set"
-msgstr "Nama pengguan tidak diatur"
-
-msgid "MySpaceIM - Please Set a Username"
-msgstr ""
-
-msgid "Please enter a username to check its availability:"
-msgstr ""
-
#, fuzzy
msgid "MySpaceIM - Username Available"
msgstr "Layanan Tidak Tersedia"
@@ -5755,6 +5931,9 @@ msgstr "%s mengirim pesan ke papan tulis. Apakah anda ingin buka papan tulis?"
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr ""
+msgid "MySpaceIM - Please Set a Username"
+msgstr ""
+
#, fuzzy
msgid "This username is unavailable."
msgstr "Tema ini tidak memiliki kumpulan senyuman."
@@ -5763,6 +5942,13 @@ msgstr "Tema ini tidak memiliki kumpulan senyuman."
msgid "Please try another username:"
msgstr "Mohon masukkan nama baru untuk %s"
+#. Protocol won't log in now without a username set.. Disconnect
+msgid "No username set"
+msgstr "Nama pengguan tidak diatur"
+
+msgid "Please enter a username to check its availability:"
+msgstr ""
+
#. TODO: icons for each zap
#. Lots of comments for translators:
#. Zap means "to strike suddenly and forcefully as if with a
@@ -6154,7 +6340,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr "Kesalahan: dukungan SSL tidak terinstal."
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr "Konferensi ini ditutup. Tidak ada pesan yang dapat dikirim."
@@ -6419,23 +6604,18 @@ msgstr "Kamera"
msgid "Screen Sharing"
msgstr "Nama Layar"
-#, c-format
msgid "Free For Chat"
msgstr "Bebas Untuk Percakapan"
-#, c-format
msgid "Not Available"
msgstr "Tidak Bersedia"
-#, c-format
msgid "Occupied"
msgstr "Sibuk"
-#, c-format
msgid "Web Aware"
msgstr "Web Aware"
-#, c-format
msgid "Invisible"
msgstr "Tak Terlihat"
@@ -6486,7 +6666,7 @@ msgstr ""
"huruf dan mengandung hanya huruf, angka dan sepasi, atau mengandung hanya "
"nomor."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
#, fuzzy
msgid "Invalid username."
@@ -6503,7 +6683,7 @@ msgstr "Akun anda sementara ditahan."
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "Layanan AOL Instant Messenger sementara tidak tersedia."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6539,13 +6719,9 @@ msgstr "Masukkan nomor 6 digit dari tampilan digital."
msgid "_OK"
msgstr "_OK"
-#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
-msgstr ""
-"Anda dapat terputus sebentar lagi. Anda dapat menggunakan TOC sampai ini "
-"diperbaiki. Periksa %s untuk pembaharuan."
+#, fuzzy, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
+msgstr "Anda dapat terputus sebentar lagi. Periksa %s untuk pembaharuan."
msgid "Unable to get a valid AIM login hash."
msgstr "Tidak berhasil mendapatkan hash login AIM yang valid."
@@ -6692,7 +6868,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] "Anda melewatkan %hu pesan dari %s karena alasan tidak jelas."
msgstr[1] "Anda melewatkan %hu pesan-pesan dari %s karena alasan tidak jelas."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "Tidak dapat mengirim pesan: %s"
@@ -6714,6 +6890,9 @@ msgstr "Online Sejak"
msgid "Member Since"
msgstr "Anggota Sejak"
+msgid "Profile"
+msgstr "Profil"
+
msgid "Your AIM connection may be lost."
msgstr "Sambungan AIM anda mungkin hilang."
@@ -7006,6 +7185,7 @@ msgstr "S_ambung"
msgid "Get AIM Info"
msgstr "Dapatkan Info AIM"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "Rubah Komentar Teman"
@@ -7117,7 +7297,6 @@ msgstr "Meminta %s untuk bersambung ke kita pada %s:%hu untuk PI Langsung."
msgid "Attempting to connect to %s:%hu."
msgstr "Berusaha menyambung ke %s:%hu."
-#, c-format
msgid "Attempting to connect via proxy server."
msgstr "Berusaha menyambung via server proxy."
@@ -7213,7 +7392,7 @@ msgstr "Lain"
msgid "Visible"
msgstr "Tak Terlihat"
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
#, fuzzy
@@ -7304,16 +7483,48 @@ msgstr "Pembaharuan Terakhir"
msgid "Could not change buddy information."
msgstr "Mohon masukkan informasi teman."
-#, c-format
-msgid "%d needs Q&A"
+msgid "Mobile"
+msgstr "Mobile"
+
+msgid "Note"
+msgstr "Catatan"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "Ikon Teman"
+
+msgid "Change his/her memo as you like"
msgstr ""
#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "Tambahkan Teman"
+msgid "_Modify"
+msgstr "Modifikasi"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "Modifikasi"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "Server sibuk"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%u requires verification"
+msgstr "Memerlukan Otorisasi"
#, fuzzy
-msgid "Input answer here"
+msgid "Add buddy question"
+msgstr "Tambahkan teman kepada daftar anda?"
+
+#, fuzzy
+msgid "Enter answer here"
msgstr "Masukkan permohonan di sini"
msgid "Send"
@@ -7327,18 +7538,19 @@ msgid "Authorization denied message:"
msgstr "Otorisasi menolak pesan:"
#, fuzzy
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr "Maaf, anda bukan jenis saya..."
#, fuzzy, c-format
-msgid "%d needs authentication"
+msgid "%u needs authorization"
msgstr "Pengguna %d memerlukan otentikasi"
#, fuzzy
msgid "Add buddy authorize"
msgstr "Tambahkan teman kepada daftar anda?"
-msgid "Input request here"
+#, fuzzy
+msgid "Enter request here"
msgstr "Masukkan permohonan di sini"
msgid "Would you be my friend?"
@@ -7361,7 +7573,7 @@ msgid "Failed sending authorize"
msgstr "Mohon otorisasi saya!"
#, fuzzy, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr "Gagal menghapus teman"
#, fuzzy, c-format
@@ -7406,6 +7618,10 @@ msgid "You can only search for permanent Qun\n"
msgstr "Anda hanya dapat mencari kelompok QQ permanen\n"
#, fuzzy
+msgid "(Invalid UTF-8 string)"
+msgstr "Pengaturan proxy tidak valid"
+
+#, fuzzy
msgid "Not member"
msgstr "Saya bukan anggota"
@@ -7448,16 +7664,19 @@ msgstr "Kelompok ini tidak mengijinkan orang lain bergabung"
msgid "Join QQ Qun"
msgstr "Gabung Percakapan"
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
-msgstr ""
+msgid "Input request here"
+msgstr "Masukkan permohonan di sini"
+
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "Anda telah sukses memodifikasi anggota Qun"
#, fuzzy
msgid "Successfully joined Qun"
msgstr "Anda telah sukses memodifikasi anggota Qun"
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
msgid "QQ Qun Operation"
@@ -7467,7 +7686,7 @@ msgstr "Operasi QQ Qun"
msgid "Failed:"
msgstr "Gagal"
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
#, fuzzy
@@ -7482,11 +7701,11 @@ msgstr ""
"operasi ini pada akhirnya akan menghilangkan Qun ini."
#, fuzzy
-msgid "Sorry, you are not our style ..."
+msgid "Sorry, you are not our style"
msgstr "Maaf, anda bukan jenis saya..."
#, fuzzy
-msgid "Successfully changed Qun member"
+msgid "Successfully changed Qun members"
msgstr "Anda telah sukses memodifikasi anggota Qun"
#, fuzzy
@@ -7497,35 +7716,35 @@ msgid "You have successfully created a Qun"
msgstr "Anda telah sukses menciptakan sebuah Qun"
#, fuzzy
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr "Apakah anda ingin mengatur detail Qun sekarang?"
msgid "Setup"
msgstr "Atur"
#, fuzzy, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr "Pengguna %d mengajukan untuk bergabung ke kelompok %d"
#, fuzzy, c-format
-msgid "%d request to join Qun %d"
+msgid "%u request to join Qun %u"
msgstr "Pengguna %d mengajukan untuk bergabung ke kelompok %d"
#, fuzzy, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr "Gagal menggabungkan teman dlam percakapan"
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr "Hilangkan Teman"
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "Hilangkan Teman"
#, c-format
msgid "Unknown-%d"
@@ -7642,6 +7861,13 @@ msgstr "<b>Terakhir Diperkini</b>: %s<br>\n"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<b>Sedang Online</b>: %d<br>\n"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<b>Terakhir Diperkini</b>: %s<br>\n"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7649,7 +7875,7 @@ msgid "<i>Feel free to join us!</i> :)"
msgstr ""
#, fuzzy, c-format
-msgid "About OpenQ r%s"
+msgid "About OpenQ %s"
msgstr "Tentang %s"
#, fuzzy
@@ -7670,6 +7896,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "Tentang %s"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Alamat Rumah"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7701,7 +7931,6 @@ msgstr ""
msgid "QQ2008"
msgstr ""
-#. #endif
#, fuzzy
msgid "Connect by TCP"
msgstr "Menyambung menggunakan TCP"
@@ -7714,6 +7943,9 @@ msgstr "Port Server"
msgid "Show server news"
msgstr "Alamat Server"
+msgid "Show chat room when msg comes"
+msgstr ""
+
#, fuzzy
msgid "Keep alive interval (seconds)"
msgstr "Pertahankan kesalahan"
@@ -7723,11 +7955,7 @@ msgid "Update interval (seconds)"
msgstr "Pertahankan kesalahan"
#, fuzzy
-msgid "Can not decrypt server reply"
-msgstr "Tidak bisa mendapatkan informasi server"
-
-#, fuzzy
-msgid "Can not decrypt get server reply"
+msgid "Cannot decrypt server reply"
msgstr "Tidak bisa mendapatkan informasi server"
#, c-format
@@ -7750,21 +7978,24 @@ msgid "Activation required"
msgstr "Disyaratkan Pendaftaran"
#, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr ""
-msgid "Keep alive error"
-msgstr "Pertahankan kesalahan"
+#, fuzzy
+msgid "Could not decrypt server reply"
+msgstr "Tidak bisa mendapatkan informasi server"
#, fuzzy
-msgid "Requesting captcha ..."
+msgid "Requesting captcha"
msgstr "Memohon perhatian %s ..."
-msgid "Checking code of captcha ..."
-msgstr ""
+#, fuzzy
+msgid "Checking captcha"
+msgstr "Memohon perhatian %s ..."
-msgid "Failed captcha verify"
-msgstr ""
+#, fuzzy
+msgid "Failed captcha verification"
+msgstr "Otentikasi Yahoo! Gagal"
#, fuzzy
msgid "Captcha Image"
@@ -7774,38 +8005,30 @@ msgstr "Simpan Gambar"
msgid "Enter code"
msgstr "Masukkan kata sandi"
-msgid "QQ Captcha Verifing"
-msgstr ""
+#, fuzzy
+msgid "QQ Captcha Verification"
+msgstr "Verfikasi Sertifikat SSL"
#, fuzzy
msgid "Enter the text from the image"
msgstr "Masukan nama dari kelompok tersebut"
#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
+msgid "Unknown reply when checking password (0x%02X)"
msgstr ""
#, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
msgstr ""
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "Tidak dapat menyambung."
msgid "Socket error"
msgstr "Kesalahan Soket"
-#, fuzzy, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr ""
-"Kehilangan sambungan dengan server:\n"
-"%s"
-
msgid "Unable to read from socket"
msgstr "Tidak dapat membaca dari soket"
@@ -7816,11 +8039,11 @@ msgid "Connection lost"
msgstr "Sambungan putus"
#, fuzzy
-msgid "Get server ..."
+msgid "Getting server"
msgstr "Atur Info Pengguna..."
#, fuzzy
-msgid "Request token"
+msgid "Requesting token"
msgstr "Permintaan ditolak"
msgid "Couldn't resolve host"
@@ -7831,16 +8054,13 @@ msgid "Invalid server or port"
msgstr "Kesalahan tidak valid"
#, fuzzy
-msgid "Connecting server ..."
-msgstr "Sambungkan server"
+msgid "Connecting to server"
+msgstr "Menyambung ke Server SILC"
#, fuzzy
msgid "QQ Error"
msgstr "Kesalahan QQid"
-msgid "Failed to send IM."
-msgstr "Gagal mengirimkan PI."
-
#, fuzzy, c-format
msgid ""
"Server News:\n"
@@ -7850,6 +8070,10 @@ msgid ""
msgstr "Relay Server ICQ"
#, fuzzy, c-format
+msgid "%s:%s"
+msgstr "%s (%s)"
+
+#, fuzzy, c-format
msgid "From %s:"
msgstr "Dari"
@@ -7859,32 +8083,30 @@ msgid ""
"%s"
msgstr "Instruksi Server: %s"
-msgid "Unknow SERVER CMD"
-msgstr ""
+#, fuzzy
+msgid "Unknown SERVER CMD"
+msgstr "Alasan tidak jelas"
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
#, fuzzy
msgid "QQ Qun Command"
msgstr "Perintah"
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr ""
-
-msgid "Can not decrypt login reply"
-msgstr ""
+#, fuzzy
+msgid "Could not decrypt login reply"
+msgstr "Tidak bisa mendapatkan informasi server"
#, fuzzy
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr "Alasan tidak jelas"
#, fuzzy
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr "Alasan tidak jelas"
#, c-format
@@ -8708,9 +8930,6 @@ msgstr "Organisasi"
msgid "Unit"
msgstr "Unit"
-msgid "Note"
-msgstr "Catatan"
-
msgid "Join Chat"
msgstr "Gabung Percakapan"
@@ -9363,6 +9582,10 @@ msgstr "Tidak dapat me-resolve nama host"
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr "Nama layar SIP tidak dapat mengandung sepasi atau simbol @"
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "Port Server"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -9397,192 +9620,12 @@ msgid "Auth Domain"
msgstr "Otorisasi Domain"
#, c-format
-msgid "Looking up %s"
-msgstr "Melihat ke atas %s"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Sambungan ke %s gagal"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Signon: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "Tidak dapat menulis file %s."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "Tidak dapat membaca file %s."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "Pesan terlalu panjang, %s byte terakhir dibuang."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s sedang tidak ter-login."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "Peringatan %s tidak diijinkan."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "Pesan telah dijatuhkan, anda melebihi batas kecepatan server."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "Percakapan dalam %s tidak tersedia."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "Anda mengirim pesan terlalu cepat kepada %s."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "Anda kehilangan PI dari %s karena terlalu besar."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "Anda kehilangan PI dari %s karena dikirim terlalu cepat."
-
-#, c-format
-msgid "Failure."
-msgstr "Kegagalan."
-
-#, c-format
-msgid "Too many matches."
-msgstr "Terlalu banyak kecocokan."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "Perlu lebih banyak kulifikasi."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "Layanan dir sementara tidak tersedia."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "Pencarian Email dibatasi."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "Kata kunci diabaikan."
-
-#, c-format
-msgid "No keywords."
-msgstr "Tidak ada kata kunci."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "Pengguna tidak memiliki informasi direktori."
-
-#, c-format
-msgid "Country not supported."
-msgstr "Negara tidak didukung."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Kegagalan tidak dikenal: %s."
-
-#, fuzzy, c-format
-msgid "Incorrect username or password."
-msgstr "Nama layar atau kata sandi salah."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "Layanan sementara tidak tersedia."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "Tingkat peringatan anda sekarang terlalu tinggi untuk login."
-
-#, 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 ""
-"Anda telah menyambung dan terputus terlalu sering. Tunggu sepuluh menit dan "
-"coba lagi. Apabila terus mencoba, anda harus menunggu bahkan lebih lama."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "Kesalahan signon tidak dikenal terjadi: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "Kesalahan tidak dikenal, %d, telah terjadi. Info: %s"
-
-msgid "Invalid Groupname"
-msgstr "Nama Kelompok Tidak Valid"
-
-msgid "Connection Closed"
-msgstr "Sambungan Tertutup"
-
-msgid "Waiting for reply..."
-msgstr "Menunggu jawaban..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "TOC kembali dari perhentian. Anda dapat mengirim pesan lagi."
-
-msgid "Password Change Successful"
-msgstr "Kata Sandi Berubah dengan Sukses"
-
-msgid "_Group:"
-msgstr "_Kelompok:"
-
-msgid "Get Dir Info"
-msgstr "Dapatkan Info Dir"
-
-msgid "Set Dir Info"
-msgstr "Atur Info Dir"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "%s tidak dapat dibuka untuk penulisan!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "Transfer file gagal; sisi lainnya kemungkinan membatalkan."
-
-msgid "Could not connect for transfer."
-msgstr "Tidak dapat tersambung untuk transfer."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "Tidak dapat menulis kepala file. File tidak akan ditransfer."
-
-msgid "Save As..."
-msgstr "Simpan Sebagai..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s permohonan %s untuk menerima %d file: %s (%.2f %s)%s%s"
-msgstr[1] "%s permohonan %s untuk menerima %d file: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s minta anda mengirimnya file"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "Plugin Protokol TOC"
-
-#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr "%s telah mengirimkan anda undangan webcam yang belum didukung."
+msgid "Your SMS was not delivered"
+msgstr ""
+
msgid "Your Yahoo! message did not get sent."
msgstr "Pesan Yahoo! anda tidak terkirim."
@@ -9854,13 +9897,9 @@ msgstr "Link Keren 3"
msgid "Last Update"
msgstr "Pembaharuan Terakhir"
-#, c-format
-msgid "User information for %s unavailable"
-msgstr "Iformasi untuk pengguna %s tidak tersedia"
-
+#, fuzzy
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr ""
"Maaf, profil ini tampaknya dalam bahasa atau format yang tidak didukung pada "
"saat ini."
@@ -10189,9 +10228,6 @@ msgstr "Jangan menggangu"
msgid "Extended away"
msgstr "Menjauh untuk lama"
-msgid "Mobile"
-msgstr "Mobile"
-
msgid "Listening to music"
msgstr ""
@@ -10233,18 +10269,6 @@ msgstr "+++ %s tidak lagi diam"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "Kesalahan Membaca %s"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"Kesalahan ditemukan dalam membaca %s anda. File belum dimuat, dan file lama "
-"anda telah dirubah namanya menjadi %s~."
-
msgid "Calculating..."
msgstr "Menghitung..."
@@ -10319,6 +10343,13 @@ msgstr "Kesalahan menulis ke %s: %s"
msgid "Unable to connect to %s: %s"
msgstr "Tidak dapat menyambung ke %s: %s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+"Server memerlukan TLS/SSL untuk login. Dukungan TLS/SSL tidak ditemukan."
+
#, c-format
msgid " - %s"
msgstr ""
@@ -10352,6 +10383,18 @@ msgstr "Sambungan ditolak"
msgid "Address already in use."
msgstr "Nama percakapan ini telah digunakan"
+#, c-format
+msgid "Error Reading %s"
+msgstr "Kesalahan Membaca %s"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"Kesalahan ditemukan dalam membaca %s anda. File belum dimuat, dan file lama "
+"anda telah dirubah namanya menjadi %s~."
+
msgid "Internet Messenger"
msgstr "Pengirim Pesan Internet"
@@ -10394,10 +10437,8 @@ msgstr "Pemberitahuan e_mail baru"
msgid "Use this buddy _icon for this account:"
msgstr "Gunakan _ikon teman ini untuk akun ini:"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s Pilihan-pilihan"
+msgid "_Advanced"
+msgstr "_Lanjutan"
msgid "Use GNOME Proxy Settings"
msgstr "Gunakan Pengaturan Proxy GNOME"
@@ -10432,9 +10473,6 @@ msgstr "Jika anda perhatikan sangat dekat"
msgid "you can see the butterflies mating"
msgstr "anda dapat melihat kupu-kupu bersatu"
-msgid "Proxy Options"
-msgstr "Pilihan-pilihan Proxy"
-
msgid "Proxy _type:"
msgstr "_Jenis Proxy:"
@@ -10463,8 +10501,9 @@ msgstr "_Dasar"
msgid "Create _this new account on the server"
msgstr "Buat akun baru ini pada server."
-msgid "_Advanced"
-msgstr "_Lanjutan"
+#, fuzzy
+msgid "_Proxy"
+msgstr "Proxy"
msgid "Enabled"
msgstr "Diaktifkan"
@@ -10547,6 +10586,17 @@ msgstr "Dapatkan _Info"
msgid "I_M"
msgstr "P_I"
+#, fuzzy
+msgid "_Audio Call"
+msgstr "_Tambahkan Pecakapan"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Percakapan Video"
+
msgid "_Send File..."
msgstr "_Kirim File..."
@@ -10687,6 +10737,10 @@ msgstr "/Piranti/_Tos Teman"
msgid "/Tools/_Certificates"
msgstr "/Piranti/_Sertifikat"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Piranti/Privasi"
+
msgid "/Tools/Plu_gins"
msgstr "/Piranti/Plu_g-ins"
@@ -10696,10 +10750,6 @@ msgstr "/Piranti/Pr_eferensi"
msgid "/Tools/Pr_ivacy"
msgstr "/Piranti/Pr_ivasi"
-#, fuzzy
-msgid "/Tools/Smile_y"
-msgstr "/Piranti/Privasi"
-
msgid "/Tools/_File Transfers"
msgstr "/Piranti/Transfer _File"
@@ -10821,8 +10871,8 @@ msgstr "Secara Manual"
msgid "By status"
msgstr "Berdasarkan status"
-msgid "By log size"
-msgstr "Berdasarkan ukuran log"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10840,6 +10890,9 @@ msgstr "Sambung"
msgid "Re-enable"
msgstr "Aktifkan kembali Akun"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr ""
@@ -10932,6 +10985,9 @@ msgstr ""
msgid "A_lias:"
msgstr "Nama A_lias:"
+msgid "_Group:"
+msgstr "_Kelompok:"
+
#, fuzzy
msgid "Auto_join when account becomes online."
msgstr "Gabung otomatis ketika akun tersembung."
@@ -10986,14 +11042,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr "Undang Teman ke dalam Kamar Percakapan"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Mohon masukkan nama dari pengguna yang ingin anda undang, berikut dengan "
-"pesan undangan pilihan."
-
msgid "_Buddy:"
msgstr "_Teman:"
@@ -11069,6 +11117,22 @@ msgstr "/Percakapan/_Sipan Sebagai..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Percakapan/Bersihka_n RangkaianGulungan"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Percakapan/Le_bih"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Percakapan/Le_bih"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Percakapan/Le_bih"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Percakapan/Lihat _Log"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Percakapan/Kiri_m File..."
@@ -11141,6 +11205,18 @@ msgstr "/Percakapan"
msgid "/Conversation/View Log"
msgstr "/Percakapan/Lihat Log"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Percakapan/Lebih"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Percakapan/Lihat Log"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Percakapan/Lebih"
+
msgid "/Conversation/Send File..."
msgstr "/Percakapan/Kirim File..."
@@ -11324,6 +11400,9 @@ msgstr "Artis-artis"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "dukungan"
@@ -11465,6 +11544,10 @@ msgstr "Georgia"
msgid "Ubuntu Georgian Translators"
msgstr "Penerjemah Ubuntu Gregoria"
+#, fuzzy
+msgid "Khmer"
+msgstr "Lain"
+
msgid "Kannada"
msgstr "Kanada"
@@ -11486,6 +11569,10 @@ msgstr "Lithuania"
msgid "Macedonian"
msgstr "Makedonia"
+#, fuzzy
+msgid "Mongolian"
+msgstr "Makedonia"
+
msgid "Bokmål Norwegian"
msgstr "Norwegia Bokmål"
@@ -11601,7 +11688,24 @@ msgstr ""
"menyediakan jaminan apapun untuk program ini.<BR><BR>"
#, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, fuzzy, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin pada irc.freenode.net<BR><BR>"
+
+#, fuzzy, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin pada irc.freenode.net<BR><BR>"
msgid "Current Developers"
@@ -11926,15 +12030,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr "Pemberitahuan email baru"
-msgid "_Copy Email Address"
-msgstr "_Salin Alamat Email"
-
-msgid "_Open Link in Browser"
-msgstr "_Buka Link dalam Browser"
-
-msgid "_Copy Link Location"
-msgstr "_Salin Lokasi Link"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12189,6 +12284,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12217,6 +12313,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12275,11 +12372,27 @@ msgstr ""
msgid "Pidgin"
msgstr "Pidgin"
-msgid "Open All Messages"
-msgstr "Buka Semua Pesan"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Anda memiliki email!</span>"
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "Menghitung..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -12310,6 +12423,27 @@ msgstr ""
"Perintah 'Manual' browser telah dipilih, tapi tidak ada perintah yang "
"dipasang."
+msgid "Open All Messages"
+msgstr "Buka Semua Pesan"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Anda memiliki email!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "Tos Teman Baru"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Anda memiliki email!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "Pesan tidak dikenal"
+
msgid "The following plugins will be unloaded."
msgstr "Plugin-plugin ini akan dilepaskan."
@@ -12362,6 +12496,10 @@ msgstr "<b>Detail Plugin</b>"
msgid "Select a file"
msgstr "Pilih sebuah file"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Ubah Tos Teman"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "Tos pada Siapa"
@@ -12432,6 +12570,50 @@ msgstr "_Berulang-ulang"
msgid "Pounce Target"
msgstr "Sasaran Tos"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "Mulai mengetik"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "Berhenti saat mengetik"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "Bergabung"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s telah kembali dari berdiam (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "Kembali dari menjauh"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "Berhenti Mengetik"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "Keluar"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "Menjadi diam"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "Ketika menjauh"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Kirim sebuah pesan"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "Peristiwa tos tak dikenal. Mohon laporkan ini!"
+
msgid "Smiley theme failed to unpack."
msgstr "Tema senyuman gagal dibuka."
@@ -12455,6 +12637,12 @@ msgstr ""
msgid "Cl_ose conversations with the Escape key"
msgstr "Percakapan denganh %s"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Daftar Teman"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "Ikon Baki Sistem"
@@ -12566,9 +12754,6 @@ msgstr ""
msgid "Cannot start browser configuration program."
msgstr "Tidak dapat memperoleh informasi pengguna"
-msgid "ST_UN server:"
-msgstr "Server ST_UN:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">Contoh: stunserver.org</span>"
@@ -12593,6 +12778,10 @@ msgstr "_Mulai port:"
msgid "_End port:"
msgstr "_Akhiri port:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
#, fuzzy
msgid "Proxy Server &amp; Browser"
msgstr "Server Proxy"
@@ -12622,6 +12811,10 @@ msgstr "Server Proxy"
msgid "No proxy"
msgstr "Tanpa proxy"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "_Pengguna:"
@@ -12786,12 +12979,12 @@ msgstr "Saat baik menjauh dan diam"
msgid "Auto-away"
msgstr "Menjauh-otomatis"
-msgid "Change status when _idle"
-msgstr "Rubah staus ketika _diam"
-
msgid "_Minutes before becoming idle:"
msgstr "_Menit sebelum menjadi idle:"
+msgid "Change status when _idle"
+msgstr "Rubah staus ketika _diam"
+
msgid "Change _status to:"
msgstr "Rubah _status pada:"
@@ -12940,6 +13133,12 @@ msgstr "Si_mpan & Gunakan"
msgid "Status for %s"
msgstr "Status untuk %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
#, fuzzy
msgid "Custom Smiley"
msgstr "Masukkan Senyuman"
@@ -12950,15 +13149,15 @@ msgstr ""
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
+msgstr ""
+
#, fuzzy
msgid "Duplicate Shortcut"
msgstr "Gandakan Perbaikan"
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
-msgstr ""
-
#, fuzzy
msgid "Please select an image for the smiley."
msgstr "Mohon pilih mood anda dari daftar."
@@ -12972,18 +13171,23 @@ msgid "Add Smiley"
msgstr "Senyum!"
#, fuzzy
-msgid "Smiley _Image"
-msgstr "Simpan Gambar"
+msgid "_Image:"
+msgstr "_Gambar"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr ""
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "Urut"
#, fuzzy
msgid "Smiley"
msgstr "Senyum!"
#, fuzzy
+msgid "Shortcut Text"
+msgstr "Urut"
+
+#, fuzzy
msgid "Custom Smiley Manager"
msgstr "Manajer Sertifikat"
@@ -13115,6 +13319,16 @@ msgstr ""
"Gagal memuat gambar \"%s\": alasan tidak jelas; kemungkinan file gambar yang "
"korup"
+#, fuzzy
+msgid "_Open Link"
+msgstr "_Buka Link in:"
+
+msgid "_Copy Link Location"
+msgstr "_Salin Lokasi Link"
+
+msgid "_Copy Email Address"
+msgstr "_Salin Alamat Email"
+
msgid "Save File"
msgstr "Simpan File"
@@ -13502,7 +13716,8 @@ msgstr "Tes Signal GTK"
#. * summary
#. * description
msgid "Test to see that all ui signals are working properly."
-msgstr "Tes untuk melihat bahwa semua signal UI bekerja sebaPidginana mestinya."
+msgstr ""
+"Tes untuk melihat bahwa semua signal UI bekerja sebaPidginana mestinya."
#, c-format
msgid ""
@@ -14102,9 +14317,6 @@ msgstr "_Biarkan jendela Daftar Teman di atas:"
msgid "Only when docked"
msgstr "Hanya saat dilabuhkan"
-msgid "_Flash window when chat messages are received"
-msgstr "_Kedipkan jendela ketika pesan percakapan diterima"
-
msgid "Windows Pidgin Options"
msgstr "Pilihan-pilihan Pidgin Windows"
@@ -14154,6 +14366,230 @@ msgstr "Kirim dan terima bait-bait XMPP mentah."
msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr "Plugin ini berguna untuk debug server atau klien XMPP."
+#, fuzzy
+#~ msgid "Invite message"
+#~ msgstr "Masukkan dalam pesan"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Mohon masukkan nama dari pengguna yang ingin anda undang, berikut dengan "
+#~ "pesan undangan pilihan."
+
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "Tidak dapat memanggil Buku Alamat MSN"
+
+#, fuzzy
+#~ msgid "Connection to server lost (no data received within %d second)"
+#~ msgid_plural ""
+#~ "Connection to server lost (no data received within %d seconds)"
+#~ msgstr[0] ""
+#~ "Sambungan ke server putus (tidak ada data diterima dalam %d detik)"
+#~ msgstr[1] ""
+#~ "Sambungan ke server putus (tidak ada data diterima dalam %d detik)"
+
+#~ msgid ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+#~ msgstr ""
+#~ "Anda dapat terputus sebentar lagi. Anda dapat menggunakan TOC sampai ini "
+#~ "diperbaiki. Periksa %s untuk pembaharuan."
+
+#, fuzzy
+#~ msgid "Add buddy Q&A"
+#~ msgstr "Tambahkan Teman"
+
+#, fuzzy
+#~ msgid "Can not decrypt get server reply"
+#~ msgstr "Tidak bisa mendapatkan informasi server"
+
+#~ msgid "Keep alive error"
+#~ msgstr "Pertahankan kesalahan"
+
+#, fuzzy
+#~ msgid ""
+#~ "Lost connection with server:\n"
+#~ "%d, %s"
+#~ msgstr ""
+#~ "Kehilangan sambungan dengan server:\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Connecting server ..."
+#~ msgstr "Sambungkan server"
+
+#~ msgid "Failed to send IM."
+#~ msgstr "Gagal mengirimkan PI."
+
+#~ msgid "Looking up %s"
+#~ msgstr "Melihat ke atas %s"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "Sambungan ke %s gagal"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Signon: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "Tidak dapat menulis file %s."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "Tidak dapat membaca file %s."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "Pesan terlalu panjang, %s byte terakhir dibuang."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s sedang tidak ter-login."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "Peringatan %s tidak diijinkan."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr "Pesan telah dijatuhkan, anda melebihi batas kecepatan server."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "Percakapan dalam %s tidak tersedia."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "Anda mengirim pesan terlalu cepat kepada %s."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "Anda kehilangan PI dari %s karena terlalu besar."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr "Anda kehilangan PI dari %s karena dikirim terlalu cepat."
+
+#~ msgid "Failure."
+#~ msgstr "Kegagalan."
+
+#~ msgid "Too many matches."
+#~ msgstr "Terlalu banyak kecocokan."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "Perlu lebih banyak kulifikasi."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "Layanan dir sementara tidak tersedia."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "Pencarian Email dibatasi."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "Kata kunci diabaikan."
+
+#~ msgid "No keywords."
+#~ msgstr "Tidak ada kata kunci."
+
+#~ msgid "User has no directory information."
+#~ msgstr "Pengguna tidak memiliki informasi direktori."
+
+#~ msgid "Country not supported."
+#~ msgstr "Negara tidak didukung."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Kegagalan tidak dikenal: %s."
+
+#, fuzzy
+#~ msgid "Incorrect username or password."
+#~ msgstr "Nama layar atau kata sandi salah."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "Layanan sementara tidak tersedia."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "Tingkat peringatan anda sekarang terlalu tinggi untuk login."
+
+#~ 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 ""
+#~ "Anda telah menyambung dan terputus terlalu sering. Tunggu sepuluh menit "
+#~ "dan coba lagi. Apabila terus mencoba, anda harus menunggu bahkan lebih "
+#~ "lama."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "Kesalahan signon tidak dikenal terjadi: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "Kesalahan tidak dikenal, %d, telah terjadi. Info: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "Nama Kelompok Tidak Valid"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Sambungan Tertutup"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "Menunggu jawaban..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "TOC kembali dari perhentian. Anda dapat mengirim pesan lagi."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "Kata Sandi Berubah dengan Sukses"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Dapatkan Info Dir"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Atur Info Dir"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "%s tidak dapat dibuka untuk penulisan!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr "Transfer file gagal; sisi lainnya kemungkinan membatalkan."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "Tidak dapat tersambung untuk transfer."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "Tidak dapat menulis kepala file. File tidak akan ditransfer."
+
+#~ msgid "Save As..."
+#~ msgstr "Simpan Sebagai..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s permohonan %s untuk menerima %d file: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s permohonan %s untuk menerima %d file: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s minta anda mengirimnya file"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "Plugin Protokol TOC"
+
+#~ msgid "User information for %s unavailable"
+#~ msgstr "Iformasi untuk pengguna %s tidak tersedia"
+
+#~ msgid "%s Options"
+#~ msgstr "%s Pilihan-pilihan"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Pilihan-pilihan Proxy"
+
+#~ msgid "By log size"
+#~ msgstr "Berdasarkan ukuran log"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_Buka Link dalam Browser"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "Server ST_UN:"
+
+#, fuzzy
+#~ msgid "Smiley _Image"
+#~ msgstr "Simpan Gambar"
+
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "_Kedipkan jendela ketika pesan percakapan diterima"
+
#~ msgid "A group with the name already exists."
#~ msgstr "Kelompok dengan nama tersebut sudah ada."
@@ -14254,13 +14690,6 @@ msgstr "Plugin ini berguna untuk debug server atau klien XMPP."
#~ msgid "Change Qun information"
#~ msgstr "Informasi Saluran"
-#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr "%s (%s)"
-
#~ msgid "System Message"
#~ msgstr "Pesan Sistem"
@@ -14709,8 +15138,8 @@ msgstr "Plugin ini berguna untuk debug server atau klien XMPP."
#~ "You can get version %s from:<br><a href=\"http://Pidgin.sourceforge.net/"
#~ "\">http://Pidgin.sourceforge.net</a>."
#~ msgstr ""
-#~ "Anda bisa mendapatkan versi %s dari <br><a href=\"http://Pidgin.sourceforge."
-#~ "net/\">http://Pidgin.sourceforge.net</a>."
+#~ "Anda bisa mendapatkan versi %s dari <br><a href=\"http://Pidgin."
+#~ "sourceforge.net/\">http://Pidgin.sourceforge.net</a>."
#~ msgid "WinPidgin Options"
#~ msgstr "Pilihan WinPidgin"
@@ -14943,8 +15372,8 @@ msgstr "Plugin ini berguna untuk debug server atau klien XMPP."
#~ msgid ""
#~ "When this happens, TOC ignores any messages sent to it, and may kick you "
-#~ "off if you send a message. Pidgin will prevent anything from going through. "
-#~ "This is only temporary, please be patient."
+#~ "off if you send a message. Pidgin will prevent anything from going "
+#~ "through. This is only temporary, please be patient."
#~ msgstr ""
#~ "Ketika ini terjadi, TOC mengacuhkan pesan apapun yang dikirm kepadanya, "
#~ "dan dapat menendang anda bila mengirim pesan. Pidgin akan mencegah apapun "
@@ -14956,8 +15385,8 @@ msgstr "Plugin ini berguna untuk debug server atau klien XMPP."
#~ msgid ""
#~ "The normal authentication method has failed. This means either your "
#~ "password is incorrect, or Yahoo!'s authentication scheme has changed. "
-#~ "Pidgin will now attempt to log in using Web Messenger authentication, which "
-#~ "will result in reduced functionality and features."
+#~ "Pidgin will now attempt to log in using Web Messenger authentication, "
+#~ "which will result in reduced functionality and features."
#~ msgstr ""
#~ "Metode otentikasi normal gagal. Ini berarti kata sandi anda salah, atau "
#~ "skema otentikasi Yahoo! telah berubah. Pidgin sekarang akan mencoba untuk "
diff --git a/po/it.po b/po/it.po
index ae86a0da32..5f2e074fd0 100644
--- a/po/it.po
+++ b/po/it.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
+"POT-Creation-Date: 2009-04-30 10:38-0400\n"
"PO-Revision-Date: 2008-08-26 14:12+0100\n"
"Last-Translator: Claudio Satriano <satriano@na.infn.it>\n"
"Language-Team: Italian <tp@lists.linux.it>\n"
@@ -26,13 +26,13 @@ msgstr "Finch"
msgid "%s. Try `%s -h' for more information.\n"
msgstr "%s. Prova con `%s -h' per maggiori informazioni.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -614,19 +614,6 @@ msgstr ""
msgid "Send To"
msgstr "Invia a"
-msgid "Invite message"
-msgstr "Messaggio di invito"
-
-msgid "Invite"
-msgstr "Invita"
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Inserisci il nome del contatto che vuoi invitare,\n"
-"insieme a un messaggio di invito (opzionale)."
-
msgid "Conversation"
msgstr "Conversazione"
@@ -888,6 +875,41 @@ msgstr "Tutte le conversazioni"
msgid "System Log"
msgstr "Log di sistema"
+#, fuzzy
+msgid "Calling ... "
+msgstr "Calcolo in corso..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "Accetta"
+
+msgid "Reject"
+msgstr "Rifiuta"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "Hai abbandonato il canale%s%s"
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "Email"
@@ -922,6 +944,9 @@ msgstr "Continua"
msgid "IM"
msgstr "Messaggio"
+msgid "Invite"
+msgstr "Invita"
+
msgid "(none)"
msgstr "(nessuno)"
@@ -1124,7 +1149,6 @@ msgstr "%s è andato via. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s ti ha inviato un messaggio. (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "Evento sconosciuto. Per piacere riporta questo errore!"
@@ -1170,7 +1194,6 @@ msgstr "Minuti prima di modificare lo stato:"
msgid "Change status to"
msgstr "Cambia lo stato in"
-#. Conversations
msgid "Conversations"
msgstr "Conversazioni"
@@ -1499,7 +1522,6 @@ msgstr ""
"Quando viene aperta una nuova conversazione, questo plugin inserirà l'ultima "
"conversazione in quella corrente."
-#, c-format
msgid "Online"
msgstr "Online"
@@ -1545,6 +1567,28 @@ msgstr "Storico"
msgid "Lastlog plugin."
msgstr "Plugin Lastlog"
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL del brano"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "account"
@@ -1646,13 +1690,6 @@ msgstr "Accettare il certificato per %s?"
msgid "SSL Certificate Verification"
msgstr "Verifica certificato SSL"
-#. Number of actions
-msgid "Accept"
-msgstr "Accetta"
-
-msgid "Reject"
-msgstr "Rifiuta"
-
msgid "_View Certificate..."
msgstr "_Visualizza certificato..."
@@ -1802,6 +1839,18 @@ msgstr "%s ha abbandonato la stanza."
msgid "%s left the room (%s)."
msgstr "%s ha abbandonato la stanza (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Invita in conferenza"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Inserisci il nome del contatto che vuoi invitare, insieme a un messaggio di "
+"invito (opzionale)."
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "Impossibile creare la connessione: %s"
@@ -1939,7 +1988,6 @@ msgstr "Inizio del trasferimento di %s da %s"
msgid "Transfer of file %s complete"
msgstr "Trasferimento del file %s completato"
-#, c-format
msgid "File transfer complete"
msgstr "Trasferimento file completato"
@@ -1947,7 +1995,6 @@ msgstr "Trasferimento file completato"
msgid "You canceled the transfer of %s"
msgstr "Hai annullato il trasferimento di %s"
-#, c-format
msgid "File transfer cancelled"
msgstr "Trasferimento file annullato"
@@ -2158,7 +2205,6 @@ msgstr "(%s) %s <RISPOSTA AUTOMATICA>: %s\n"
msgid "You are using %s, but this plugin requires %s."
msgstr "Stai usando %s, ma questo plugin richiede %s."
-#, c-format
msgid "This plugin has not defined an ID."
msgstr "Questo plugin non ha definito alcun ID."
@@ -2653,6 +2699,32 @@ msgstr "Salva i messaggi non in linea come allarmi"
msgid "Do not ask. Always save in pounce."
msgstr "Non chiedere. Salva sempre come allarme."
+#, fuzzy
+msgid "One Time Password"
+msgstr "Inserisci la password"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2861,7 +2933,6 @@ msgstr ""
"Impossibile stabilire una connessione con il server mDNS locale. È in "
"funzione?"
-#. Creating the options for the protocol
msgid "First name"
msgstr "Nome"
@@ -2893,6 +2964,11 @@ msgstr "Plugin per il protocollo Bonjour"
msgid "Purple Person"
msgstr "Persona Purple"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "Località"
+
msgid "Bonjour"
msgstr "Bonjour"
@@ -3049,13 +3125,13 @@ msgstr "Scegli una chat per il contatto: %s"
msgid "Add to chat..."
msgstr "Aggiungi alla chat..."
+#. Global
msgid "Available"
msgstr "Presente"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "Assente"
@@ -3397,6 +3473,17 @@ msgstr ""
"Il nome per l'account selezionato è stato rifiutato dal server. "
"Probabilmente contiene caratteri non validi."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "Questo nome chat è già in uso"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Nickname"
+
msgid "Cannot change nick"
msgstr "Impossibile cambiare nick"
@@ -3672,6 +3759,41 @@ msgstr "Challenge non valido dal server"
msgid "SASL error"
msgstr "Errore SASL"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "Nessun motivo fornito."
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Versione non supportata"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"Impossibile stabilire una connessione con il server:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"Impossibile stabilire una connessione con il server:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "Impossibile inizializzare la connessione"
+
+msgid "Unable to create socket"
+msgstr "Impossibile creare il socket"
+
+msgid "Write error"
+msgstr "Errore di scrittura"
+
msgid "Full Name"
msgstr "Nome"
@@ -3738,6 +3860,10 @@ msgstr "Client"
msgid "Operating System"
msgstr "Sistema operativo"
+#, fuzzy
+msgid "Local Time"
+msgstr "File locale:"
+
msgid "Last Activity"
msgstr "Ultima attività"
@@ -3964,7 +4090,6 @@ msgstr "È in chat"
msgid "Extended Away"
msgstr "Ancora assente"
-#, c-format
msgid "Do Not Disturb"
msgstr "Non disturbare"
@@ -4088,9 +4213,6 @@ msgstr "Cerca stanze"
msgid "You require encryption, but it is not available on this server."
msgstr "Hai richiesto la criptatura, ma non è disponibile su questo server."
-msgid "Write error"
-msgstr "Errore di scrittura"
-
msgid "Ping timeout"
msgstr "Timeout per il ping"
@@ -4099,14 +4221,9 @@ msgstr "Errore di lettura"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"Impossibile stabilire una connessione con il server:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "Impossibile creare il socket"
msgid "Invalid XMPP ID"
msgstr "ID XMMP non valido"
@@ -4114,6 +4231,10 @@ msgstr "ID XMMP non valido"
msgid "Invalid XMPP ID. Domain must be set."
msgstr "ID XMPP invalido. Deve essere impostato il dominio."
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Impossibile connettersi al server."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "Registrazione di %s@%s avvenuta con successo"
@@ -4198,9 +4319,18 @@ msgstr "Autenticazione"
msgid "Re-initializing Stream"
msgstr "Reinizializzazione dello stream"
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr "Non autorizzato"
+msgid "Mood"
+msgstr "Umore"
+
+msgid "Now Listening"
+msgstr "In ascolto"
+
msgid "Both"
msgstr "Entrambi"
@@ -4222,12 +4352,6 @@ msgstr "Nessuno"
msgid "Subscription"
msgstr "Sottoscrizione"
-msgid "Mood"
-msgstr "Umore"
-
-msgid "Now Listening"
-msgstr "In ascolto"
-
#, fuzzy
msgid "Mood Text"
msgstr "Testo identificato"
@@ -4467,20 +4591,26 @@ msgstr "Impossibile espellere l'utente %s"
msgid "Unable to ping user %s"
msgstr "Impossibile fare ping sull'utente %s"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr "Impossibile richiamare %s con un buzz: non conosco nulla dell'utente."
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr ""
"Impossibile richiamare %s con un buzz: l'utente potrebbe non essere in "
"linea. "
-#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+#, fuzzy, c-format
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "Impossibile richiamare %s con un buzz: l'utente non lo supporta."
+#, c-format
+msgid "Buzzing %s..."
+msgstr "Sto richiamando l'attenzione di %s con un buzz..."
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
msgid "Buzz"
@@ -4490,9 +4620,34 @@ msgstr "Buzz"
msgid "%s has buzzed you!"
msgstr "%s ti ha richiamato con un buzz!"
-#, c-format
-msgid "Buzzing %s..."
-msgstr "Sto richiamando l'attenzione di %s con un buzz..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "Impossibile inviare il file a %s. JID non valido"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "Impossibile inviare il file a %s. L'utente non è in linea"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr "Impossibile inviare il file a %s. L'utente non è in linea"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "Registrazione fallita"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "Scegli a quale risorsa di %s vuoi inviare un file"
+
+msgid "Select a Resource"
+msgstr "Scegli una risorsa"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "Inizia una _chat"
msgid "config: Configure a chat room."
msgstr "config: Configura una chat room."
@@ -4650,6 +4805,21 @@ msgstr "Errore nell'ingresso nella chat %s"
msgid "Error in chat %s"
msgstr "Errore nella chat %s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "C'è stato un errore nell'apertura del file."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "Trasferimento file fallito"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Impossibile aprire il file '%s': %s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4674,9 +4844,6 @@ msgstr "Impossibile inviare il file a %s. L'utente non è in linea"
msgid "Please select the resource of %s to which you would like to send a file"
msgstr "Scegli a quale risorsa di %s vuoi inviare un file"
-msgid "Select a Resource"
-msgstr "Scegli una risorsa"
-
msgid "Edit User Mood"
msgstr "Modifica l'umore dell'utente"
@@ -4711,8 +4878,19 @@ msgstr "Azioni"
msgid "Select an action"
msgstr "Scegli un'azione"
-msgid "Unable to retrieve MSN Address Book"
-msgstr "Impossibile ottenere la rubrica MSN"
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr "Impossibile aggiungere \"%s\"."
+
+msgid "Buddy Add error"
+msgstr ""
+
+#, fuzzy
+msgid "The username specified does not exist."
+msgstr "Il nome utente specificato non è valido."
#, c-format
msgid "Buddy list synchronization issue in %s (%s)"
@@ -4942,7 +5120,7 @@ msgstr "Kids Passport senza il consenso parentale"
msgid "Passport account not yet verified"
msgstr "Profilo Passport non ancora verificato"
-#, fuzzy, c-format
+#, fuzzy
msgid "Passport account suspended"
msgstr "Profilo Passport non ancora verificato"
@@ -5037,6 +5215,13 @@ msgstr "Invia un messaggio ad un dispositivo portatile."
msgid "Page"
msgstr "Page"
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "Lavoro"
+
msgid "Has you"
msgstr "Sei nella sua lista"
@@ -5073,6 +5258,14 @@ msgstr "Artista"
msgid "Album"
msgstr "Album"
+#, fuzzy
+msgid "Game Title"
+msgstr "Titolo del brano"
+
+#, fuzzy
+msgid "Office Title"
+msgstr "Titolo del brano"
+
msgid "Set Friendly Name..."
msgstr "Imposta un alias..."
@@ -5265,8 +5458,9 @@ msgstr ""
"Nessuna informazione trovata nel profilo dell'utente. Molto probabilmente "
"l'utente non esiste."
-msgid "Profile URL"
-msgstr "URL del profilo"
+#, fuzzy
+msgid "View web profile"
+msgstr "Nascondi quando non sei in linea"
#. *< type
#. *< ui_requirement
@@ -5526,19 +5720,15 @@ msgstr "Aggiungi alla rubrica"
msgid "Do you want to delete this buddy from your address book as well?"
msgstr "Vuoi aggiungere questo contatto alla tua lista?"
-#. only notify the user about problems adding to the friends list
-#. * maybe we should do something else for other lists, but it probably
-#. * won't cause too many problems if we just ignore it
-#, c-format
-msgid "Unable to add \"%s\"."
-msgstr "Impossibile aggiungere \"%s\"."
-
msgid "The username specified is invalid."
msgstr "Il nome utente specificato non è valido."
msgid "This Hotmail account may not be active."
msgstr "Questo account Hotmail potrebbe essere non attivo."
+msgid "Profile URL"
+msgstr "URL del profilo"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5552,18 +5742,12 @@ msgstr "Questo account Hotmail potrebbe essere non attivo."
msgid "MSN Protocol Plugin"
msgstr "Plugin per il protocollo MSN"
-msgid "Missing Cipher"
-msgstr "Cifra mancante"
-
-msgid "The RC4 cipher could not be found"
-msgstr "Impossibile trovare la cifra RC4"
+#, c-format
+msgid "No such user: %s"
+msgstr "Utente inesistente: %s"
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
-msgstr ""
-"Aggiorna libpurple ad una versione che supporta RC4 (>= 2.0.1). Il plugin "
-"MySpaceIM non sarà caricato."
+msgid "User lookup"
+msgstr "Ricerca utente"
#, fuzzy
msgid "Reading challenge"
@@ -5578,11 +5762,20 @@ msgstr "È stata ricevuta da parte del server una risposta HTTP inattesa."
msgid "Logging in"
msgstr "Login in corso"
-#, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] "Connessione al server persa (nessun dato ricevuto in %d secondo)"
-msgstr[1] "Connessione al server persa (nessun dato ricevuto in %d secondi)"
+msgid "MySpaceIM - No Username Set"
+msgstr "MySpaceIM - Nessun nome utente impostato"
+
+msgid "You appear to have no MySpace username."
+msgstr "Sembra che tu non abbia nessun nome utente MySpace."
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr "Vuoi impostarne uno adesso? (Nota: NON PUO' ESSERE PIU' CAMBIATO!)"
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr ""
+"Connessione persa con il server\n"
+"%s"
#. Can't write _()'d strings in array initializers. Workaround.
msgid "New mail messages"
@@ -5603,14 +5796,25 @@ msgstr "Nuovi commenti sulle foto"
msgid "MySpace"
msgstr "MySpace"
-msgid "MySpaceIM - No Username Set"
-msgstr "MySpaceIM - Nessun nome utente impostato"
+msgid "IM Friends"
+msgstr "Amici MI"
-msgid "You appear to have no MySpace username."
-msgstr "Sembra che tu non abbia nessun nome utente MySpace."
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+"%d contatto è stato aggiunto o aggiornato dal server (inclusi i contatti già "
+"presenti sulla lista del server)"
+msgstr[1] ""
+"%d contatti sono stati aggiunti o aggiornati dal server (inclusi i contatti "
+"già presenti sulla lista del server)"
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
-msgstr "Vuoi impostarne uno adesso? (Nota: NON PUO' ESSERE PIU' CAMBIATO!)"
+msgid "Add contacts from server"
+msgstr "Aggiungi contatti dal server"
#. The session is now set up, ready to be connected. This emits the
#. * signedOn signal, so clients can now do anything with msimprpl, and
@@ -5637,6 +5841,19 @@ msgstr ""
msgid "MySpaceIM Error"
msgstr "Errore MySpaceIM"
+msgid "Invalid input condition"
+msgstr "Condizione di input non valida"
+
+msgid "Read buffer full (2)"
+msgstr "Buffer di lettura pieno (2)"
+
+msgid "Unparseable message"
+msgstr "Messaggio indecifrabile"
+
+#, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr "Impossibile connettersi all'host: %s (%d)"
+
msgid "Failed to add buddy"
msgstr "Impossibile aggiungere il contatto"
@@ -5647,13 +5864,6 @@ msgstr "Comando 'addbuddy' fallito."
msgid "persist command failed"
msgstr "Comando 'addbuddy' fallito."
-#, c-format
-msgid "No such user: %s"
-msgstr "Utente inesistente: %s"
-
-msgid "User lookup"
-msgstr "Ricerca utente"
-
msgid "Failed to remove buddy"
msgstr "Impossibile rimuovere il contatto"
@@ -5663,38 +5873,18 @@ msgstr "Comando 'delbuddy' fallito"
msgid "blocklist command failed"
msgstr "Comando blocklist fallito"
-msgid "Invalid input condition"
-msgstr "Condizione di input non valida"
-
-msgid "Read buffer full (2)"
-msgstr "Buffer di lettura pieno (2)"
-
-msgid "Unparseable message"
-msgstr "Messaggio indecifrabile"
-
-#, c-format
-msgid "Couldn't connect to host: %s (%d)"
-msgstr "Impossibile connettersi all'host: %s (%d)"
+msgid "Missing Cipher"
+msgstr "Cifra mancante"
-msgid "IM Friends"
-msgstr "Amici MI"
+msgid "The RC4 cipher could not be found"
+msgstr "Impossibile trovare la cifra RC4"
-#, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-"%d contatto è stato aggiunto o aggiornato dal server (inclusi i contatti già "
-"presenti sulla lista del server)"
-msgstr[1] ""
-"%d contatti sono stati aggiunti o aggiornati dal server (inclusi i contatti "
-"già presenti sulla lista del server)"
-
-msgid "Add contacts from server"
-msgstr "Aggiungi contatti dal server"
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
+"Aggiorna libpurple ad una versione che supporta RC4 (>= 2.0.1). Il plugin "
+"MySpaceIM non sarà caricato."
msgid "Add friends from MySpace.com"
msgstr "Aggiungi amici da MySpace.com"
@@ -5738,9 +5928,6 @@ msgstr "Dimensione del font di base (punti)"
msgid "User"
msgstr "Utente"
-msgid "Profile"
-msgstr "Profilo"
-
#, fuzzy
msgid "Headline"
msgstr "_Handle:"
@@ -5754,16 +5941,6 @@ msgstr "Numero di amici"
msgid "Client Version"
msgstr "Versione del client"
-#. Protocol won't log in now without a username set.. Disconnect
-msgid "No username set"
-msgstr "Nessun nome utente impostato"
-
-msgid "MySpaceIM - Please Set a Username"
-msgstr "MySpaceIM - Imposta un nome utente"
-
-msgid "Please enter a username to check its availability:"
-msgstr "Inserisci un nome utente per verificarne la disponibilità:"
-
msgid "MySpaceIM - Username Available"
msgstr "MySpaceIM - Nome utente disponibile"
@@ -5773,12 +5950,22 @@ msgstr "Il nome utente è disponibile. Vuoi impostare questo nome?"
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr "UNA VOLTA IMPOSTATO, NON PUO' ESSERE CAMBIATO!"
+msgid "MySpaceIM - Please Set a Username"
+msgstr "MySpaceIM - Imposta un nome utente"
+
msgid "This username is unavailable."
msgstr "Questo nome utente non è disponibile."
msgid "Please try another username:"
msgstr "Prova con un altro nome utente:"
+#. Protocol won't log in now without a username set.. Disconnect
+msgid "No username set"
+msgstr "Nessun nome utente impostato"
+
+msgid "Please enter a username to check its availability:"
+msgstr "Inserisci un nome utente per verificarne la disponibilità:"
+
#. TODO: icons for each zap
#. Lots of comments for translators:
#. Zap means "to strike suddenly and forcefully as if with a
@@ -6178,7 +6365,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr "Errore. Il supporto SSL non è installato."
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr ""
"Questa conferenza è stata chiusa. Non può essere più inviato nessun "
@@ -6448,23 +6634,18 @@ msgstr "Fotocamera"
msgid "Screen Sharing"
msgstr "Condivisone dello schermo"
-#, c-format
msgid "Free For Chat"
msgstr "Disponibile alla chat"
-#, c-format
msgid "Not Available"
msgstr "Non disponibile"
-#, c-format
msgid "Occupied"
msgstr "Occupato"
-#, c-format
msgid "Web Aware"
msgstr "Rendi visibile il tuo stato sul web"
-#, c-format
msgid "Invisible"
msgstr "Invisibile"
@@ -6514,7 +6695,7 @@ msgstr ""
"validi. In alternativa devono iniziare con una lettera e contenere solo "
"lettere, numeri e spazi; oppure devono contenere solo numeri."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr "Nome utente non valido."
@@ -6530,7 +6711,7 @@ msgstr "Il tuo account è attualmente sospeso."
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "Il servizio AOL Instant Messenger è temporaneamente non disponibile."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6565,13 +6746,9 @@ msgstr "Immettere il numero di 6 cifre del display digitale."
msgid "_OK"
msgstr "_OK"
-#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
-msgstr ""
-"Verrai disconnesso a breve. Potresti voler utilizzare TOC finché non è "
-"risolto il problema. Controlla %s per aggiornamenti."
+#, fuzzy, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
+msgstr "Potresti essere disconnesso a breve. Controlla %s per aggiornamenti."
msgid "Unable to get a valid AIM login hash."
msgstr "Impossibile ottenere un hash di login valido per AIM."
@@ -6726,7 +6903,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] "Non hai ricevuto %hu messaggio da %s per un motivo sconosciuto"
msgstr[1] "Non hai ricevuto %hu messaggi da %s per un motivo sconosciuto"
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "Impossibile inviare il messaggio: %s"
@@ -6748,6 +6925,9 @@ msgstr "Online da"
msgid "Member Since"
msgstr "Membro da"
+msgid "Profile"
+msgstr "Profilo"
+
msgid "Your AIM connection may be lost."
msgstr "La tua connessione ad AIM potrebbe essere perduta."
@@ -7042,6 +7222,7 @@ msgstr "C_onnetti"
msgid "Get AIM Info"
msgstr "Ottieni info AIM"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "Modifica il commento per il contatto"
@@ -7154,7 +7335,6 @@ msgstr ""
msgid "Attempting to connect to %s:%hu."
msgstr "Tentativo di connessione con %s: %hu."
-#, c-format
msgid "Attempting to connect via proxy server."
msgstr "Tentativo di connessione attraverso un server proxy."
@@ -7251,7 +7431,7 @@ msgstr "Altro"
msgid "Visible"
msgstr "Invisibile"
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
#, fuzzy
@@ -7342,16 +7522,48 @@ msgstr "Ultimo aggiornamento"
msgid "Could not change buddy information."
msgstr "Inserisci le informazioni sul contatto."
-#, c-format
-msgid "%d needs Q&A"
+msgid "Mobile"
+msgstr "Cellulare"
+
+msgid "Note"
+msgstr "Note"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "Icona per il contatto"
+
+msgid "Change his/her memo as you like"
msgstr ""
#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "Aggiungi un contatto"
+msgid "_Modify"
+msgstr "Modifica"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "Modifica"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "Server occupato"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%u requires verification"
+msgstr "Richiedi autorizzazione"
+
+#, fuzzy
+msgid "Add buddy question"
+msgstr "Vuoi aggiungere il contatto alla tua lista?"
#, fuzzy
-msgid "Input answer here"
+msgid "Enter answer here"
msgstr "Inserisci la tua richiesta qui"
msgid "Send"
@@ -7365,18 +7577,19 @@ msgid "Authorization denied message:"
msgstr "Messaggio di autorizzazione rifiutata:"
#, fuzzy
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr "Mi dispiace ma non sei il mio tipo..."
#, fuzzy, c-format
-msgid "%d needs authentication"
+msgid "%u needs authorization"
msgstr "L'utente %d necessita di autenticazione"
#, fuzzy
msgid "Add buddy authorize"
msgstr "Vuoi aggiungere il contatto alla tua lista?"
-msgid "Input request here"
+#, fuzzy
+msgid "Enter request here"
msgstr "Inserisci la tua richiesta qui"
msgid "Would you be my friend?"
@@ -7399,7 +7612,7 @@ msgid "Failed sending authorize"
msgstr "Mi autorizzi, per favore?"
#, fuzzy, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr "Impossibile rimuovere il contatto"
#, fuzzy, c-format
@@ -7444,6 +7657,10 @@ msgid "You can only search for permanent Qun\n"
msgstr "Puoi solamente cercare i gruppi QQ permanenti\n"
#, fuzzy
+msgid "(Invalid UTF-8 string)"
+msgstr "Impostazioni del proxy non valide"
+
+#, fuzzy
msgid "Not member"
msgstr "Non sono un membro"
@@ -7485,16 +7702,19 @@ msgstr "Questo gruppo non consente ad altri di entrare"
msgid "Join QQ Qun"
msgstr "Entra in chat"
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
-msgstr ""
+msgid "Input request here"
+msgstr "Inserisci la tua richiesta qui"
+
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "Membro Qun modificato con successo"
#, fuzzy
msgid "Successfully joined Qun"
msgstr "Membro Qun modificato con successo"
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
msgid "QQ Qun Operation"
@@ -7504,7 +7724,7 @@ msgstr "Operatore Qun QQ"
msgid "Failed:"
msgstr "Fallito"
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
#, fuzzy
@@ -7519,11 +7739,11 @@ msgstr ""
"questa operazione rimuoverà questo Qun."
#, fuzzy
-msgid "Sorry, you are not our style ..."
+msgid "Sorry, you are not our style"
msgstr "Mi dispiace ma non sei il mio tipo..."
#, fuzzy
-msgid "Successfully changed Qun member"
+msgid "Successfully changed Qun members"
msgstr "Membro Qun modificato con successo"
#, fuzzy
@@ -7534,35 +7754,35 @@ msgid "You have successfully created a Qun"
msgstr "Qun creato con successo"
#, fuzzy
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr "Vuoi impostare i dettagli Qun adesso?"
msgid "Setup"
msgstr "Impostazione"
#, fuzzy, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr "L'utente %d ha chiesto di entrare nel gruppo %d"
#, fuzzy, c-format
-msgid "%d request to join Qun %d"
+msgid "%u request to join Qun %u"
msgstr "L'utente %d ha chiesto di entrare nel gruppo %d"
#, fuzzy, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr "Impossibile unirsi al contatto in chat"
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr "Rimuovi il contatto"
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "Rimuovi il contatto"
#, c-format
msgid "Unknown-%d"
@@ -7679,6 +7899,13 @@ msgstr "<b>Ultimo aggiornamento</b>: %s<br>\n"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<b>Server</b>: %s: %d<br>\n"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<b>Ultimo aggiornamento</b>: %s<br>\n"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7686,7 +7913,7 @@ msgid "<i>Feel free to join us!</i> :)"
msgstr ""
#, fuzzy, c-format
-msgid "About OpenQ r%s"
+msgid "About OpenQ %s"
msgstr "Informazioni su %s"
#, fuzzy
@@ -7707,6 +7934,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "Informazioni su %s"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Indirizzo di casa"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7738,7 +7969,6 @@ msgstr ""
msgid "QQ2008"
msgstr ""
-#. #endif
#, fuzzy
msgid "Connect by TCP"
msgstr "Connetti utilizzando TCP"
@@ -7751,6 +7981,9 @@ msgstr "Porta del server"
msgid "Show server news"
msgstr "Indirizzo del server"
+msgid "Show chat room when msg comes"
+msgstr ""
+
#, fuzzy
msgid "Keep alive interval (seconds)"
msgstr "Errore nell'aggiunta del contatto"
@@ -7760,11 +7993,7 @@ msgid "Update interval (seconds)"
msgstr "Intervallo(i) per l'aggiornamento"
#, fuzzy
-msgid "Can not decrypt server reply"
-msgstr "Impossibile decrittare la risposta al login"
-
-#, fuzzy
-msgid "Can not decrypt get server reply"
+msgid "Cannot decrypt server reply"
msgstr "Impossibile decrittare la risposta al login"
#, c-format
@@ -7787,22 +8016,24 @@ msgid "Activation required"
msgstr "Richiesta registrazione"
#, fuzzy, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr "Token non valido nel codice di risposta, 0x%02X"
#, fuzzy
-msgid "Keep alive error"
-msgstr "Errore nell'aggiunta del contatto"
+msgid "Could not decrypt server reply"
+msgstr "Impossibile decrittare la risposta al login"
#, fuzzy
-msgid "Requesting captcha ..."
+msgid "Requesting captcha"
msgstr "Richiedi l'attenzione di %s..."
-msgid "Checking code of captcha ..."
-msgstr ""
+#, fuzzy
+msgid "Checking captcha"
+msgstr "Richiedi l'attenzione di %s..."
-msgid "Failed captcha verify"
-msgstr ""
+#, fuzzy
+msgid "Failed captcha verification"
+msgstr "Autenticazione Yahoo! fallita"
#, fuzzy
msgid "Captcha Image"
@@ -7812,38 +8043,30 @@ msgstr "Salva l'immagine"
msgid "Enter code"
msgstr "Inserisci la password"
-msgid "QQ Captcha Verifing"
-msgstr ""
+#, fuzzy
+msgid "QQ Captcha Verification"
+msgstr "Verifica certificato SSL"
#, fuzzy
msgid "Enter the text from the image"
msgstr "Inserisci il nome del gruppo"
-#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
-msgstr ""
+#, fuzzy, c-format
+msgid "Unknown reply when checking password (0x%02X)"
+msgstr "Token non valido nel codice di risposta, 0x%02X"
-#, c-format
+#, fuzzy, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
-msgstr ""
+msgstr "Token non valido nel codice di risposta, 0x%02X"
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "Impossibile connettersi."
msgid "Socket error"
msgstr "Errore socket"
-#, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr ""
-"Connessione persa col server:\n"
-"%d, %s"
-
msgid "Unable to read from socket"
msgstr "Impossibile leggere dal socket"
@@ -7854,11 +8077,11 @@ msgid "Connection lost"
msgstr "Connessione persa"
#, fuzzy
-msgid "Get server ..."
+msgid "Getting server"
msgstr "Imposta le informazioni utente..."
#, fuzzy
-msgid "Request token"
+msgid "Requesting token"
msgstr "Richiesta rifiutata"
msgid "Couldn't resolve host"
@@ -7869,16 +8092,13 @@ msgid "Invalid server or port"
msgstr "Errore non valido"
#, fuzzy
-msgid "Connecting server ..."
-msgstr "Server di connessione"
+msgid "Connecting to server"
+msgstr "Connessione al server SILC in corso"
#, fuzzy
msgid "QQ Error"
msgstr "Errore QQid"
-msgid "Failed to send IM."
-msgstr "Impossibile inviare il messaggio immediato"
-
#, fuzzy, c-format
msgid ""
"Server News:\n"
@@ -7888,6 +8108,10 @@ msgid ""
msgstr "Server relay ICQ"
#, fuzzy, c-format
+msgid "%s:%s"
+msgstr "%s (%s)"
+
+#, fuzzy, c-format
msgid "From %s:"
msgstr "Da"
@@ -7897,13 +8121,14 @@ msgid ""
"%s"
msgstr "Istruzioni per il server: %s"
-msgid "Unknow SERVER CMD"
-msgstr ""
+#, fuzzy
+msgid "Unknown SERVER CMD"
+msgstr "Motivo sconosciuto"
#, fuzzy, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
"Risposta %s(0x%02X )\n"
"Inviato %s(0x%02X )\n"
@@ -7914,19 +8139,16 @@ msgstr ""
msgid "QQ Qun Command"
msgstr "Comando"
-#, fuzzy, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr "Non sei un membro del gruppo \"%s\"\n"
-
-msgid "Can not decrypt login reply"
+#, fuzzy
+msgid "Could not decrypt login reply"
msgstr "Impossibile decrittare la risposta al login"
#, fuzzy
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr "Motivo sconosciuto"
#, fuzzy
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr "Motivo sconosciuto"
#, c-format
@@ -8752,9 +8974,6 @@ msgstr "Organizzazione"
msgid "Unit"
msgstr "Unità"
-msgid "Note"
-msgstr "Note"
-
msgid "Join Chat"
msgstr "Entra in chat"
@@ -9416,6 +9635,10 @@ msgstr "Impossibile risolvere il nome dell'host"
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr "I nomi utente SIP non devono contenere spazi bianchi o simboli @"
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "Porta del server"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -9452,200 +9675,14 @@ msgid "Auth Domain"
msgstr "Dominio Auth"
#, c-format
-msgid "Looking up %s"
-msgstr "Ricerca di %s in corso"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Connessione a %s fallita"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Connessione a: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "Impossibile scrivere il file %s."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "Impossibile leggere il file %s."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "Messaggio troppo lungo. Troncati gli ultimi %s byte."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s non è attualmente connesso."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "Richiamo a %s non consentito."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr ""
-"Un messaggio è stato rifiutato. Stai superando il limite di velocità del "
-"server."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "La chat in %s non è disponibile."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "Stai inviando troppo velocemente messaggi a %s."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "Non hai ricevuto un messaggio da %s poiché era troppo grande."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr ""
-"Non hai ricevuto un messaggio da %s poiché è stato spedito troppo "
-"velocemente."
-
-#, c-format
-msgid "Failure."
-msgstr "Fallimento."
-
-#, c-format
-msgid "Too many matches."
-msgstr "Troppe corrispondenze."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "Servono più qualificatori."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "Servizio di directory temporaneamente non disponibile."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "Ricerca email limitata."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "Parola chiave ignorata."
-
-#, c-format
-msgid "No keywords."
-msgstr "Nessuna parola chiave."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "Non c'è nessuna informazione sull'utente nella directory."
-
-#, c-format
-msgid "Country not supported."
-msgstr "Paese non supportato."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Errore sconosciuto: %s."
-
-#, c-format
-msgid "Incorrect username or password."
-msgstr "Nome utente o password non corretti."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "Il servizio è temporaneamente non disponibile."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr ""
-"Il tuo livello di richiamo è attualmente troppo alto per poterti connettere."
-
-#, 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 ""
-"Ti sei connesso e disconnesso troppo frequentemente. Attendi 10 minuti e "
-"riprova. Se continui a provare, avrai bisogno di aspettare ancora di più."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "Si è verificato un errore sconosciuto di connessione: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "Si è verificato un errore sconosciuto, %d. Info: %s"
-
-msgid "Invalid Groupname"
-msgstr "Nome gruppo non valido"
-
-msgid "Connection Closed"
-msgstr "Connessione chiusa"
-
-msgid "Waiting for reply..."
-msgstr "In attesa di risposta..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "TOC è ritornato dalla pausa. Puoi nuovamente inviare messaggi."
-
-msgid "Password Change Successful"
-msgstr "Password modificata con successo"
-
-msgid "_Group:"
-msgstr "_Gruppo:"
-
-msgid "Get Dir Info"
-msgstr "Ottieni informazioni dalla Directory"
-
-msgid "Set Dir Info"
-msgstr "Imposta le informazioni sulla Directory"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "Impossibile aprire %s in scrittura!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr ""
-"Trasferimento file fallito: probabilmente è stato annullato dall'altra parte."
-
-msgid "Could not connect for transfer."
-msgstr "Impossibile connettersi per il trasferimento."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "Impossibile scrivere l'header del file. Il file non verrà inviato."
-
-msgid "Save As..."
-msgstr "Salva con nome..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s chiede a %s di accettare %d file: %s (%.2f %s)%s%s"
-msgstr[1] "%s chiede a %s di accettare %d file: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s chiede che tu gli invii un file"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "Plugin per il protocollo TOC"
-
-#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
"%s ti ha inviato un invito alla videoconferenza. Questa caratteristica non è "
"ancora supportata."
+msgid "Your SMS was not delivered"
+msgstr ""
+
msgid "Your Yahoo! message did not get sent."
msgstr "Il tuo messaggio di Yahoo! non è stato inviato."
@@ -9920,13 +9957,9 @@ msgstr "Link preferito 3"
msgid "Last Update"
msgstr "Ultimo aggiornamento"
-#, c-format
-msgid "User information for %s unavailable"
-msgstr "Informazioni sull'utente %s non disponibili"
-
+#, fuzzy
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr ""
"Spiacente, questo profilo sembra essere in un linguaggio non supportato al "
"momento."
@@ -10261,9 +10294,6 @@ msgstr "Non disturbare"
msgid "Extended away"
msgstr "Ancora assente"
-msgid "Mobile"
-msgstr "Cellulare"
-
msgid "Listening to music"
msgstr "Sta ascoltando musica"
@@ -10305,18 +10335,6 @@ msgstr "+++ %s è ritornato attivo"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "Errore nella lettura di %s"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"Si è verificato un errore nella lettura dei tuoi %s. Non sono stati caricati "
-"e il vecchio file è stato rinominato in %s~."
-
msgid "Calculating..."
msgstr "Calcolo in corso..."
@@ -10391,6 +10409,13 @@ msgstr "Errore di scrittura su %s: %s"
msgid "Unable to connect to %s: %s"
msgstr "Impossibile connettersi a %s: %s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+"Il server richiede TLS/SSL per il login. Nessun supporto TLS/SSL trovato."
+
#, c-format
msgid " - %s"
msgstr ""
@@ -10424,6 +10449,18 @@ msgstr "Connessione rifiutata."
msgid "Address already in use."
msgstr "Indirizzo già in uso."
+#, c-format
+msgid "Error Reading %s"
+msgstr "Errore nella lettura di %s"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"Si è verificato un errore nella lettura dei tuoi %s. Non sono stati caricati "
+"e il vecchio file è stato rinominato in %s~."
+
msgid "Internet Messenger"
msgstr "Internet Messenger"
@@ -10466,10 +10503,8 @@ msgstr "Notifica i nuovi messaggi di _posta"
msgid "Use this buddy _icon for this account:"
msgstr "Utilizza per questo account la seguente _icona:"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "Opzioni %s"
+msgid "_Advanced"
+msgstr "_Avanzate"
msgid "Use GNOME Proxy Settings"
msgstr "Utilizza le opzioni del proxy di GNOME"
@@ -10504,9 +10539,6 @@ msgstr "Se guardi da vicino"
msgid "you can see the butterflies mating"
msgstr "puoi vedere le farfalle accoppiarsi"
-msgid "Proxy Options"
-msgstr "Opzioni del proxy"
-
msgid "Proxy _type:"
msgstr "_Tipo di proxy:"
@@ -10534,8 +10566,9 @@ msgstr "Di _base"
msgid "Create _this new account on the server"
msgstr "Crea _questo nuovo account sul server"
-msgid "_Advanced"
-msgstr "_Avanzate"
+#, fuzzy
+msgid "_Proxy"
+msgstr "Proxy"
msgid "Enabled"
msgstr "Abilitato"
@@ -10612,6 +10645,17 @@ msgstr "_Info"
msgid "I_M"
msgstr "_MI"
+#, fuzzy
+msgid "_Audio Call"
+msgstr "_Aggiungi una chat"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Video chat"
+
msgid "_Send File..."
msgstr "_Invia file..."
@@ -10749,6 +10793,10 @@ msgstr "/Strumenti/A_llarmi"
msgid "/Tools/_Certificates"
msgstr "/Strumenti/_Certificati"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Strumenti/Smile_y"
+
msgid "/Tools/Plu_gins"
msgstr "/Strumenti/Plu_gin"
@@ -10758,9 +10806,6 @@ msgstr "/Strumenti/Pr_eferenze"
msgid "/Tools/Pr_ivacy"
msgstr "/Strumenti/Pr_ivacy"
-msgid "/Tools/Smile_y"
-msgstr "/Strumenti/Smile_y"
-
msgid "/Tools/_File Transfers"
msgstr "/Strumenti/Trasferimento _file"
@@ -10878,8 +10923,8 @@ msgstr "Manualmente"
msgid "By status"
msgstr "Per stato"
-msgid "By log size"
-msgstr "Per dimensione del log"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10895,6 +10940,9 @@ msgstr "Riconnetti"
msgid "Re-enable"
msgstr "Riabilita"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr "Bentornato!"
@@ -10984,6 +11032,9 @@ msgstr ""
msgid "A_lias:"
msgstr "A_lias:"
+msgid "_Group:"
+msgstr "_Gruppo:"
+
msgid "Auto_join when account becomes online."
msgstr "Entra _automaticamente quando l'account si connette."
@@ -11038,14 +11089,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr "Invita un contatto nella chat room"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Inserisci il nome del contatto che vuoi invitare, insieme a un messaggio di "
-"invito (opzionale)."
-
msgid "_Buddy:"
msgstr "_Contatto:"
@@ -11120,6 +11163,22 @@ msgstr "/Conversazione/_Salva con nome..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Conversazione/Rimuovi lo _storico"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Conversazione/_Altro"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Conversazione/_Altro"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Conversazione/_Altro"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Conversazione/Mostra il _log"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Conversazione/_Invia file..."
@@ -11192,6 +11251,18 @@ msgstr "/Conversazione"
msgid "/Conversation/View Log"
msgstr "/Conversazione/Mostra il log"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Conversazione/Altro"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Conversazione/Mostra il log"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Conversazione/Altro"
+
msgid "/Conversation/Send File..."
msgstr "/Conversazione/Invia file..."
@@ -11376,6 +11447,9 @@ msgstr "Artista"
msgid "Ka-Hing Cheung"
msgstr "Ka-Hing Cheung"
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "supporto"
@@ -11517,6 +11591,10 @@ msgstr "Georgiano"
msgid "Ubuntu Georgian Translators"
msgstr "Traduttori georgiani di Ubuntu"
+#, fuzzy
+msgid "Khmer"
+msgstr "Altro"
+
msgid "Kannada"
msgstr "Kannada"
@@ -11538,6 +11616,10 @@ msgstr "Lituano"
msgid "Macedonian"
msgstr "Macedone"
+#, fuzzy
+msgid "Mongolian"
+msgstr "Macedone"
+
msgid "Bokmål Norwegian"
msgstr "Norvegese Bokmål"
@@ -11652,7 +11734,24 @@ msgstr ""
"programma è fornito senza nessuna garanzia.<BR><BR>"
#, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, fuzzy, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin su irc.freenode.net<BR><BR>"
+
+#, fuzzy, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin su irc.freenode.net<BR><BR>"
msgid "Current Developers"
@@ -11969,15 +12068,6 @@ msgstr "Il carattere da usare per la notifica di scrittura"
msgid "Enable typing notification"
msgstr "Abilita la notifica di scrittura"
-msgid "_Copy Email Address"
-msgstr "_Copia l'indirizzo email"
-
-msgid "_Open Link in Browser"
-msgstr "_Apri il collegamento nel browser"
-
-msgid "_Copy Link Location"
-msgstr "_Copia l'indirizzo del collegamento"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12224,13 +12314,14 @@ msgstr "_Sfoglia la cartella dei log"
msgid "%s %s. Try `%s -h' for more information.\n"
msgstr "%s %s. Prova con `%s -h' per maggiori informazioni.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12254,13 +12345,14 @@ msgstr ""
" --display=DISPLAY display X da utilizzare\n"
" -v, --version mostra la versione attuale ed esce\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12320,11 +12412,27 @@ msgstr ""
msgid "Pidgin"
msgstr "Pidgin"
-msgid "Open All Messages"
-msgstr "Apri tutti i messaggi"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Posta in arrivo!</span>"
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "Calcolo in corso..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -12355,6 +12463,27 @@ msgstr ""
"È stato scelto di impostare il browser manualmente, ma non è stato immesso "
"nessun comando."
+msgid "Open All Messages"
+msgstr "Apri tutti i messaggi"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Posta in arrivo!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "Nuovo allarme"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Posta in arrivo!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "Messaggio sconosciuto"
+
msgid "The following plugins will be unloaded."
msgstr "I seguenti plugin saranno rimossi."
@@ -12403,6 +12532,10 @@ msgstr "<b>Dettagli sul plugin</b>"
msgid "Select a file"
msgstr "Scegli un file"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Modifica l'allarme"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "Contatto da controllare"
@@ -12473,6 +12606,50 @@ msgstr "_Ricorrente"
msgid "Pounce Target"
msgstr "Contatto da controllare"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "Inizia a scrivere"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "Interrompe la scrittura"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "Si connette"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s è tornato attivo (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "Ritorna dall'assenza"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "Ha smesso di scrivere"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "Si disconnette"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "Diventa inattivo"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "Se assente"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Invia un messaggio"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "Evento sconosciuto. Per piacere riporta questo errore!"
+
msgid "Smiley theme failed to unpack."
msgstr "Impossibile spacchettare il tema degli smiley."
@@ -12495,6 +12672,12 @@ msgstr "Scorciatoie da tastiera"
msgid "Cl_ose conversations with the Escape key"
msgstr "Ch_iudi le conversazioni con il tasto Esc"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Lista contatti"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "Icona di notifica"
@@ -12605,9 +12788,6 @@ msgstr "Impossibile avviare il programma per la configurazione del proxy."
msgid "Cannot start browser configuration program."
msgstr "Impossibile avviare il programma di configurazione del browser."
-msgid "ST_UN server:"
-msgstr "Server ST_UN:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">Esempio: stunserver.org</span>"
@@ -12633,6 +12813,10 @@ msgstr "_Prima porta:"
msgid "_End port:"
msgstr "_Ultima porta:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr "Server proxy &amp; Browser"
@@ -12663,6 +12847,10 @@ msgstr "Server proxy"
msgid "No proxy"
msgstr "Nessun proxy"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "_Utente:"
@@ -12825,12 +13013,12 @@ msgstr "Se assente e inattivo"
msgid "Auto-away"
msgstr "Assente automatico"
-msgid "Change status when _idle"
-msgstr "Modifica lo stato quando sei _inattivo"
-
msgid "_Minutes before becoming idle:"
msgstr "_Minuti prima di diventare inattivo:"
+msgid "Change status when _idle"
+msgstr "Modifica lo stato quando sei _inattivo"
+
msgid "Change _status to:"
msgstr "Cambia lo _stato in:"
@@ -12978,6 +13166,12 @@ msgstr "Sa_lva e utilizza"
msgid "Status for %s"
msgstr "Stato per %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
msgid "Custom Smiley"
msgstr "Smiley personalizzato"
@@ -12987,16 +13181,16 @@ msgstr "C'è bisogno di più dati"
msgid "Please provide a shortcut to associate with the smiley."
msgstr "Scegli una scorciatoia da tastiera da associare con lo smiley."
-msgid "Duplicate Shortcut"
-msgstr "Scorciatoia già esistente"
-
+#, fuzzy, c-format
msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
+"A custom smiley for '%s' already exists. Please use a different shortcut."
msgstr ""
"Esiste già uno smiley personalizzato per la scorciatoia da tastiera "
"selezionata. Specifica una scorciatoia differente."
+msgid "Duplicate Shortcut"
+msgstr "Scorciatoia già esistente"
+
msgid "Please select an image for the smiley."
msgstr "Scegli un'immagine per lo smiley."
@@ -13006,16 +13200,22 @@ msgstr "Modifica lo smiley"
msgid "Add Smiley"
msgstr "Aggiungi uno smiley"
-msgid "Smiley _Image"
-msgstr "_Immagine per lo smiley"
+#, fuzzy
+msgid "_Image:"
+msgstr "_Immagine"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr "S_corciatoia per lo smiley"
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "Scorciatoia"
msgid "Smiley"
msgstr "Smiley"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "Scorciatoia"
+
msgid "Custom Smiley Manager"
msgstr "Gestione degli smiley personalizzati"
@@ -13144,6 +13344,16 @@ msgstr ""
"Impossibile caricare l'immagine '%s' per un motivo sconosciuto. "
"Probabilmente il file dell'immagine è danneggiato."
+#, fuzzy
+msgid "_Open Link"
+msgstr "_Apertura dei collegamenti:"
+
+msgid "_Copy Link Location"
+msgstr "_Copia l'indirizzo del collegamento"
+
+msgid "_Copy Email Address"
+msgstr "_Copia l'indirizzo email"
+
msgid "Save File"
msgstr "Salva il file"
@@ -14138,9 +14348,6 @@ msgstr "Mantieni la finestra della lista contatti in _primo piano:"
msgid "Only when docked"
msgstr "Solo in modalità dock"
-msgid "_Flash window when chat messages are received"
-msgstr "_Illumina la finestra quando arriva un messaggio di chat"
-
msgid "Windows Pidgin Options"
msgstr "Opzioni di Pidgin per Windows"
@@ -14191,6 +14398,237 @@ msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr ""
"Questo plugin è utile per effettuare il debug dei server o dei client XMPP."
+#~ msgid "Invite message"
+#~ msgstr "Messaggio di invito"
+
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Inserisci il nome del contatto che vuoi invitare,\n"
+#~ "insieme a un messaggio di invito (opzionale)."
+
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "Impossibile ottenere la rubrica MSN"
+
+#~ msgid "Connection to server lost (no data received within %d second)"
+#~ msgid_plural ""
+#~ "Connection to server lost (no data received within %d seconds)"
+#~ msgstr[0] "Connessione al server persa (nessun dato ricevuto in %d secondo)"
+#~ msgstr[1] "Connessione al server persa (nessun dato ricevuto in %d secondi)"
+
+#~ msgid ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+#~ msgstr ""
+#~ "Verrai disconnesso a breve. Potresti voler utilizzare TOC finché non è "
+#~ "risolto il problema. Controlla %s per aggiornamenti."
+
+#, fuzzy
+#~ msgid "Add buddy Q&A"
+#~ msgstr "Aggiungi un contatto"
+
+#, fuzzy
+#~ msgid "Can not decrypt get server reply"
+#~ msgstr "Impossibile decrittare la risposta al login"
+
+#, fuzzy
+#~ msgid "Keep alive error"
+#~ msgstr "Errore nell'aggiunta del contatto"
+
+#~ msgid ""
+#~ "Lost connection with server:\n"
+#~ "%d, %s"
+#~ msgstr ""
+#~ "Connessione persa col server:\n"
+#~ "%d, %s"
+
+#, fuzzy
+#~ msgid "Connecting server ..."
+#~ msgstr "Server di connessione"
+
+#~ msgid "Failed to send IM."
+#~ msgstr "Impossibile inviare il messaggio immediato"
+
+#, fuzzy
+#~ msgid "Not a member of room \"%s\"\n"
+#~ msgstr "Non sei un membro del gruppo \"%s\"\n"
+
+#~ msgid "Looking up %s"
+#~ msgstr "Ricerca di %s in corso"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "Connessione a %s fallita"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Connessione a: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "Impossibile scrivere il file %s."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "Impossibile leggere il file %s."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "Messaggio troppo lungo. Troncati gli ultimi %s byte."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s non è attualmente connesso."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "Richiamo a %s non consentito."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr ""
+#~ "Un messaggio è stato rifiutato. Stai superando il limite di velocità del "
+#~ "server."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "La chat in %s non è disponibile."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "Stai inviando troppo velocemente messaggi a %s."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "Non hai ricevuto un messaggio da %s poiché era troppo grande."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr ""
+#~ "Non hai ricevuto un messaggio da %s poiché è stato spedito troppo "
+#~ "velocemente."
+
+#~ msgid "Failure."
+#~ msgstr "Fallimento."
+
+#~ msgid "Too many matches."
+#~ msgstr "Troppe corrispondenze."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "Servono più qualificatori."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "Servizio di directory temporaneamente non disponibile."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "Ricerca email limitata."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "Parola chiave ignorata."
+
+#~ msgid "No keywords."
+#~ msgstr "Nessuna parola chiave."
+
+#~ msgid "User has no directory information."
+#~ msgstr "Non c'è nessuna informazione sull'utente nella directory."
+
+#~ msgid "Country not supported."
+#~ msgstr "Paese non supportato."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Errore sconosciuto: %s."
+
+#~ msgid "Incorrect username or password."
+#~ msgstr "Nome utente o password non corretti."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "Il servizio è temporaneamente non disponibile."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr ""
+#~ "Il tuo livello di richiamo è attualmente troppo alto per poterti "
+#~ "connettere."
+
+#~ 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 ""
+#~ "Ti sei connesso e disconnesso troppo frequentemente. Attendi 10 minuti e "
+#~ "riprova. Se continui a provare, avrai bisogno di aspettare ancora di più."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "Si è verificato un errore sconosciuto di connessione: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "Si è verificato un errore sconosciuto, %d. Info: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "Nome gruppo non valido"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Connessione chiusa"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "In attesa di risposta..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "TOC è ritornato dalla pausa. Puoi nuovamente inviare messaggi."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "Password modificata con successo"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Ottieni informazioni dalla Directory"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Imposta le informazioni sulla Directory"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "Impossibile aprire %s in scrittura!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr ""
+#~ "Trasferimento file fallito: probabilmente è stato annullato dall'altra "
+#~ "parte."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "Impossibile connettersi per il trasferimento."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "Impossibile scrivere l'header del file. Il file non verrà inviato."
+
+#~ msgid "Save As..."
+#~ msgstr "Salva con nome..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s chiede a %s di accettare %d file: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s chiede a %s di accettare %d file: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s chiede che tu gli invii un file"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "Plugin per il protocollo TOC"
+
+#~ msgid "User information for %s unavailable"
+#~ msgstr "Informazioni sull'utente %s non disponibili"
+
+#~ msgid "%s Options"
+#~ msgstr "Opzioni %s"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Opzioni del proxy"
+
+#~ msgid "By log size"
+#~ msgstr "Per dimensione del log"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_Apri il collegamento nel browser"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "Server ST_UN:"
+
+#~ msgid "Smiley _Image"
+#~ msgstr "_Immagine per lo smiley"
+
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "S_corciatoia per lo smiley"
+
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "_Illumina la finestra quando arriva un messaggio di chat"
+
#~ msgid "A group with the name already exists."
#~ msgstr "Esiste già una gruppo con questo nome."
@@ -14295,13 +14733,6 @@ msgstr ""
#~ msgid "Change Qun information"
#~ msgstr "Informazioni sul canale"
-#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr "%s (%s)"
-
#~ msgid "System Message"
#~ msgstr "Messaggio di sistema"
diff --git a/po/ja.po b/po/ja.po
index f0be5ea3fe..4d676d5699 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pidgin trunk\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
+"POT-Creation-Date: 2009-04-30 10:38-0400\n"
"PO-Revision-Date: 2007-06-30 14:57+0900\n"
"Last-Translator: Takeshi AIHANA <takeshi.aihana@gmail.com>\n"
"Language-Team: Japanese <gnome-translation@gnome.gr.jp>\n"
@@ -28,13 +28,13 @@ msgstr "Finch"
msgid "%s. Try `%s -h' for more information.\n"
msgstr "%s (詳しい情報は `%s -h' と入力して下さい)\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -616,19 +616,6 @@ msgstr "ログの記録を停止しました。これ以降の会話はログに
msgid "Send To"
msgstr "送信先"
-#, fuzzy
-msgid "Invite message"
-msgstr "メッセージの中に埋め込む"
-
-msgid "Invite"
-msgstr "招待する"
-
-#, fuzzy
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr "招待したい相手の名前と、オプションで招待メッセージを入力して下さい:"
-
msgid "Conversation"
msgstr "会話ウィンドウ"
@@ -890,6 +877,42 @@ msgstr "会話ウィンドウ"
msgid "System Log"
msgstr "システム・ログ"
+#, fuzzy
+msgid "Calling ... "
+msgstr "計算中..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+#, fuzzy
+msgid "Accept"
+msgstr "許可する(_A)"
+
+msgid "Reject"
+msgstr "拒否する"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "チャンネル %s%s から離脱しました"
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "E-メール"
@@ -924,6 +947,9 @@ msgstr "続行する"
msgid "IM"
msgstr "IM"
+msgid "Invite"
+msgstr "招待する"
+
msgid "(none)"
msgstr "(なし)"
@@ -1133,7 +1159,6 @@ msgstr "%s さんが離席しました (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s さんがあなたにメッセージを送信しました (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "不明な \"つかみ\" イベントです。ぜひバグ報告して下さい!"
@@ -1183,7 +1208,6 @@ msgstr "状態を変更するまでの時間(分)(_M):"
msgid "Change status to"
msgstr "次の状態に変更する(_S):"
-#. Conversations
msgid "Conversations"
msgstr "会話ウィンドウ"
@@ -1519,7 +1543,6 @@ msgid ""
"conversation into the current conversation."
msgstr "新しい会話を開始したら前回会話した最後のメッセージを先頭に追加します。"
-#, c-format
msgid "Online"
msgstr "オンライン"
@@ -1568,6 +1591,28 @@ msgstr "GntLastlog"
msgid "Lastlog plugin."
msgstr "Lastlog のプラグインです"
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "アカウント"
@@ -1666,14 +1711,6 @@ msgstr "チャットへの招待を受けますか?"
msgid "SSL Certificate Verification"
msgstr ""
-#. Number of actions
-#, fuzzy
-msgid "Accept"
-msgstr "許可する(_A)"
-
-msgid "Reject"
-msgstr "拒否する"
-
msgid "_View Certificate..."
msgstr ""
@@ -1810,6 +1847,16 @@ msgstr "%s さんがチャットルームから退室しました"
msgid "%s left the room (%s)."
msgstr "%s さんがチャットルーム (%s) から退室しました"
+#, fuzzy
+msgid "Invite to chat"
+msgstr "会議に招待する"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr "招待したい相手の名前と、オプションで招待メッセージを入力して下さい:"
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "新しい接続を開けません: %s"
@@ -1944,7 +1991,6 @@ msgstr "%s を %s から転送を開始しています"
msgid "Transfer of file %s complete"
msgstr "ファイル %s の転送が完了しました"
-#, c-format
msgid "File transfer complete"
msgstr "ファイルの転送が完了しました"
@@ -1952,7 +1998,6 @@ msgstr "ファイルの転送が完了しました"
msgid "You canceled the transfer of %s"
msgstr "%s の転送をキャンセルしました"
-#, c-format
msgid "File transfer cancelled"
msgstr "ファイルの転送がキャンセルされました"
@@ -2162,7 +2207,6 @@ msgstr "(%s) %s <AUTO-REPLY>: %s\n"
msgid "You are using %s, but this plugin requires %s."
msgstr "%s を使用していますが、このプラグインには %s が必要です。"
-#, c-format
msgid "This plugin has not defined an ID."
msgstr "このプラグインは ID を定義していません。"
@@ -2648,6 +2692,32 @@ msgstr "オフライン時のメッセージの保存"
msgid "Do not ask. Always save in pounce."
msgstr "常に保存しておく"
+#, fuzzy
+msgid "One Time Password"
+msgstr "パスワードの入力"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2855,7 +2925,6 @@ msgstr ""
"ローカルの mDNS サーバを使った接続は確立できませんでした。サーバは正しく起動"
"されていますか?"
-#. Creating the options for the protocol
msgid "First name"
msgstr "名"
@@ -2887,6 +2956,11 @@ msgstr "Bonjour プロトコルのプラグイン"
msgid "Purple Person"
msgstr "Purple な人物"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "区"
+
msgid "Bonjour"
msgstr "Bonjour"
@@ -3043,13 +3117,13 @@ msgstr "チャットの選択: %s"
msgid "Add to chat..."
msgstr "チャットの追加..."
+#. Global
msgid "Available"
msgstr "在席しています"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "離席中"
@@ -3391,6 +3465,17 @@ msgstr ""
"指定したアカウント名がサーバ側で拒否されました。おそらく不正な文字が含まれて"
"いると思われます。"
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "そのチャット名は既に使用されています。"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "ニックネーム"
+
msgid "Cannot change nick"
msgstr "ニックネームを変更できません"
@@ -3670,6 +3755,41 @@ msgstr "サーバからの不正な challenge です"
msgid "SASL error"
msgstr "SASL のエラー"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "理由はわかりません。"
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "サポートしていないバージョン"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"サーバとの接続を確立できませんでした:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"サーバとの接続を確立できませんでした:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "新しい接続を開けません"
+
+msgid "Unable to create socket"
+msgstr "ソケットを生成できません"
+
+msgid "Write error"
+msgstr "書き込みエラー"
+
msgid "Full Name"
msgstr "氏名"
@@ -3736,6 +3856,10 @@ msgstr "クライアント"
msgid "Operating System"
msgstr "オペレーティング・システム"
+#, fuzzy
+msgid "Local Time"
+msgstr "ローカル・ファイル:"
+
msgid "Last Activity"
msgstr ""
@@ -3972,7 +4096,6 @@ msgstr "チャッティー"
msgid "Extended Away"
msgstr "逃走中"
-#, c-format
msgid "Do Not Disturb"
msgstr "邪魔しないでね"
@@ -4096,9 +4219,6 @@ msgstr "部屋の検索"
msgid "You require encryption, but it is not available on this server."
msgstr ""
-msgid "Write error"
-msgstr "書き込みエラー"
-
#, fuzzy
msgid "Ping timeout"
msgstr "通常のテキスト"
@@ -4108,14 +4228,9 @@ msgstr "読み込みエラー"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"サーバとの接続を確立できませんでした:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "ソケットを生成できません"
msgid "Invalid XMPP ID"
msgstr "不正な XMPP ID"
@@ -4123,6 +4238,10 @@ msgstr "不正な XMPP ID"
msgid "Invalid XMPP ID. Domain must be set."
msgstr "XMPP ID が間違っています (ドメインを指定して下さい)"
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "サーバへの接続に失敗しました"
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "%s@%s の登録が完了しました"
@@ -4215,9 +4334,18 @@ msgstr "認証中"
msgid "Re-initializing Stream"
msgstr "ストリームの再初期化中"
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr "承認されていません"
+msgid "Mood"
+msgstr "不機嫌"
+
+msgid "Now Listening"
+msgstr ""
+
msgid "Both"
msgstr "両方"
@@ -4239,12 +4367,6 @@ msgstr "なし"
msgid "Subscription"
msgstr "購読"
-msgid "Mood"
-msgstr "不機嫌"
-
-msgid "Now Listening"
-msgstr ""
-
#, fuzzy
msgid "Mood Text"
msgstr "血液型"
@@ -4487,20 +4609,30 @@ msgstr "ユーザの %s さんをキックできません"
msgid "Unable to ping user %s"
msgstr "ユーザの %s さんを追い出せません"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr ""
+"%s さんへファイルを送信できません (ユーザはファイル転送をサポートしていませ"
+"ん)"
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr ""
+"%s さんへファイルを送信できません (ユーザはファイル転送をサポートしていませ"
+"ん)"
#, fuzzy, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr ""
"%s さんへファイルを送信できません (ユーザはファイル転送をサポートしていませ"
"ん)"
+#, c-format
+msgid "Buzzing %s..."
+msgstr ""
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
msgid "Buzz"
@@ -4510,9 +4642,35 @@ msgstr ""
msgid "%s has buzzed you!"
msgstr "%s さんがあなた [%s] を追加しました"
-#, c-format
-msgid "Buzzing %s..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "%s さんへファイルを送信できません (JID が間違っています)"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "%s さんへファイルを送信できません (ユーザはオフラインです)"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
msgstr ""
+"%s さんへファイルを送信できません (ユーザの在席情報が登録されていません)"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "登録の失敗"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "ファイルとして送信する %s のリソースを選択して下さい"
+
+msgid "Select a Resource"
+msgstr "リソースの選択"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "チャットの開始(_C)"
msgid "config: Configure a chat room."
msgstr "config: チャット・ルームを設定します"
@@ -4676,6 +4834,21 @@ msgstr "チャット %s に参加する際にエラー"
msgid "Error in chat %s"
msgstr "チャット %s でエラー"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "ファイルをオープンする際にエラーが発生しました。"
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "ファイルの転送が失敗しました"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "ファイル '%s' を開けませんでした: %s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4702,9 +4875,6 @@ msgstr ""
msgid "Please select the resource of %s to which you would like to send a file"
msgstr "ファイルとして送信する %s のリソースを選択して下さい"
-msgid "Select a Resource"
-msgstr "リソースの選択"
-
#, fuzzy
msgid "Edit User Mood"
msgstr "ユーザ・モード"
@@ -4745,9 +4915,19 @@ msgstr "つかんだら何をするか..."
msgid "Select an action"
msgstr "ファイルの選択"
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr "\"%s\" さんを追加できません"
+
+msgid "Buddy Add error"
+msgstr ""
+
#, fuzzy
-msgid "Unable to retrieve MSN Address Book"
-msgstr "Notes アドレス帳の選択"
+msgid "The username specified does not exist."
+msgstr "指定したスクリーン名が間違っています"
#, c-format
msgid "Buddy list synchronization issue in %s (%s)"
@@ -4978,7 +5158,7 @@ msgstr "親の承諾がない Kids パスポートです"
msgid "Passport account not yet verified"
msgstr "まだパスポートのアカウントは確認されていません"
-#, fuzzy, c-format
+#, fuzzy
msgid "Passport account suspended"
msgstr "まだパスポートのアカウントは確認されていません"
@@ -5074,6 +5254,13 @@ msgstr "モバイル・メッセージを送信します。"
msgid "Page"
msgstr "ページ"
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "職種"
+
msgid "Has you"
msgstr "あなたを仲間リストに登録しているか"
@@ -5115,6 +5302,14 @@ msgstr "アーティスト"
msgid "Album"
msgstr "Adium"
+#, fuzzy
+msgid "Game Title"
+msgstr "題名"
+
+#, fuzzy
+msgid "Office Title"
+msgstr "題名"
+
msgid "Set Friendly Name..."
msgstr "公開する名前の設定..."
@@ -5308,8 +5503,9 @@ msgstr ""
"ユーザのプロフィールから情報を取得できませんでした。そのユーザはおそらく存在"
"していないと思われます。"
-msgid "Profile URL"
-msgstr "プロフィールの URL"
+#, fuzzy
+msgid "View web profile"
+msgstr "オフラインの時は許可できません"
#. *< type
#. *< ui_requirement
@@ -5565,13 +5761,6 @@ msgstr "アドレス帳へ追加する"
msgid "Do you want to delete this buddy from your address book as well?"
msgstr "この相手を仲間リストに追加しますか?"
-#. only notify the user about problems adding to the friends list
-#. * maybe we should do something else for other lists, but it probably
-#. * won't cause too many problems if we just ignore it
-#, c-format
-msgid "Unable to add \"%s\"."
-msgstr "\"%s\" さんを追加できません"
-
#, fuzzy
msgid "The username specified is invalid."
msgstr "指定したスクリーン名が間違っています"
@@ -5579,6 +5768,9 @@ msgstr "指定したスクリーン名が間違っています"
msgid "This Hotmail account may not be active."
msgstr "この Hotmail のアカウントは有効でないようです。"
+msgid "Profile URL"
+msgstr "プロフィールの URL"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5592,17 +5784,13 @@ msgstr "この Hotmail のアカウントは有効でないようです。"
msgid "MSN Protocol Plugin"
msgstr "MSN プロトコルのプラグイン"
-#, fuzzy
-msgid "Missing Cipher"
-msgstr "暗号"
-
-msgid "The RC4 cipher could not be found"
+#, c-format
+msgid "No such user: %s"
msgstr ""
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
-msgstr ""
+#, fuzzy
+msgid "User lookup"
+msgstr "ユーザの部屋"
#, fuzzy
msgid "Reading challenge"
@@ -5616,11 +5804,21 @@ msgstr "サーバからの不正な challenge です"
msgid "Logging in"
msgstr "ログの記録"
-#, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] ""
-msgstr[1] ""
+#, fuzzy
+msgid "MySpaceIM - No Username Set"
+msgstr "名前なし"
+
+msgid "You appear to have no MySpace username."
+msgstr ""
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr ""
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr ""
+"サーバとの接続が切れました\n"
+"%s"
#. Can't write _()'d strings in array initializers. Workaround.
#, fuzzy
@@ -5643,14 +5841,22 @@ msgid "MySpace"
msgstr ""
#, fuzzy
-msgid "MySpaceIM - No Username Set"
-msgstr "名前なし"
+msgid "IM Friends"
+msgstr "IM ウィンドウ(_I)"
-msgid "You appear to have no MySpace username."
-msgstr ""
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+msgstr[1] ""
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
-msgstr ""
+#, fuzzy
+msgid "Add contacts from server"
+msgstr "サーバからの応答が不正です。"
#. The session is now set up, ready to be connected. This emits the
#. * signedOn signal, so clients can now do anything with msimprpl, and
@@ -5674,6 +5880,22 @@ msgid "MySpaceIM Error"
msgstr ""
#, fuzzy
+msgid "Invalid input condition"
+msgstr "接続の最終調整中"
+
+#, fuzzy
+msgid "Read buffer full (2)"
+msgstr "キューが一杯です"
+
+#, fuzzy
+msgid "Unparseable message"
+msgstr "メッセージを解読できません"
+
+#, fuzzy, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr "ホストへ接続できませんでした"
+
+#, fuzzy
msgid "Failed to add buddy"
msgstr "チャットの仲間に参加できません"
@@ -5685,14 +5907,6 @@ msgstr "仲間リストのインポート..."
msgid "persist command failed"
msgstr "スイッチボードに失敗しました"
-#, c-format
-msgid "No such user: %s"
-msgstr ""
-
-#, fuzzy
-msgid "User lookup"
-msgstr "ユーザの部屋"
-
#, fuzzy
msgid "Failed to remove buddy"
msgstr "チャットの仲間に参加できません"
@@ -5705,38 +5919,16 @@ msgid "blocklist command failed"
msgstr "スイッチボードに失敗しました"
#, fuzzy
-msgid "Invalid input condition"
-msgstr "接続の最終調整中"
-
-#, fuzzy
-msgid "Read buffer full (2)"
-msgstr "キューが一杯です"
-
-#, fuzzy
-msgid "Unparseable message"
-msgstr "メッセージを解読できません"
-
-#, fuzzy, c-format
-msgid "Couldn't connect to host: %s (%d)"
-msgstr "ホストへ接続できませんでした"
+msgid "Missing Cipher"
+msgstr "暗号"
-#, fuzzy
-msgid "IM Friends"
-msgstr "IM ウィンドウ(_I)"
+msgid "The RC4 cipher could not be found"
+msgstr ""
-#, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-msgstr[1] ""
-
-#, fuzzy
-msgid "Add contacts from server"
-msgstr "サーバからの応答が不正です。"
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
msgid "Add friends from MySpace.com"
msgstr ""
@@ -5783,9 +5975,6 @@ msgstr "フォントのサイズを大きくします"
msgid "User"
msgstr "ユーザ"
-msgid "Profile"
-msgstr "プロフィール"
-
#, fuzzy
msgid "Headline"
msgstr "ハンドル(_H):"
@@ -5801,17 +5990,6 @@ msgstr ""
msgid "Client Version"
msgstr "会話ウィンドウを閉じます"
-#. Protocol won't log in now without a username set.. Disconnect
-#, fuzzy
-msgid "No username set"
-msgstr "名前なし"
-
-msgid "MySpaceIM - Please Set a Username"
-msgstr ""
-
-msgid "Please enter a username to check its availability:"
-msgstr ""
-
#, fuzzy
msgid "MySpaceIM - Username Available"
msgstr "サービスは利用できません"
@@ -5825,6 +6003,9 @@ msgstr ""
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr ""
+msgid "MySpaceIM - Please Set a Username"
+msgstr ""
+
#, fuzzy
msgid "This username is unavailable."
msgstr "このテーマには利用可能なスマイリーがありません。"
@@ -5833,6 +6014,14 @@ msgstr "このテーマには利用可能なスマイリーがありません。
msgid "Please try another username:"
msgstr "%s さんの新しい名前を入力して下さい"
+#. Protocol won't log in now without a username set.. Disconnect
+#, fuzzy
+msgid "No username set"
+msgstr "名前なし"
+
+msgid "Please enter a username to check its availability:"
+msgstr ""
+
#. TODO: icons for each zap
#. Lots of comments for translators:
#. Zap means "to strike suddenly and forcefully as if with a
@@ -6222,7 +6411,6 @@ msgstr "サーバへ接続できません。接続するサーバのアドレス
msgid "Error. SSL support is not installed."
msgstr "エラーです。SSL サポートがインストールされていません。"
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr "この会議は閉会しています。メッセージを送信することはできません。"
@@ -6488,23 +6676,18 @@ msgstr "カメラ"
msgid "Screen Sharing"
msgstr "スクリーン名"
-#, c-format
msgid "Free For Chat"
msgstr "チャットできます"
-#, c-format
msgid "Not Available"
msgstr "不在です"
-#, c-format
msgid "Occupied"
msgstr "多忙です"
-#, c-format
msgid "Web Aware"
msgstr "ウェブは見てます"
-#, c-format
msgid "Invisible"
msgstr "隠れています"
@@ -6554,7 +6737,7 @@ msgstr ""
"ませんでした。スクリーン名の先頭は文字にし、文字と数字とスペースのみ、または"
"数字のみにして下さい。"
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
#, fuzzy
msgid "Invalid username."
@@ -6571,7 +6754,7 @@ msgstr "お使いのアカウントは現在停止中です"
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "AOL インスタント・メッセンジャー・サービスは一時的に利用不可です"
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6605,13 +6788,9 @@ msgstr "デジタル表示から6桁の数字を入力して下さい。"
msgid "_OK"
msgstr "OK(_O)"
-#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
-msgstr ""
-"まもなく切断されるでしょう。修正されたら TOC を利用してかまいません。更新のた"
-"めに、%s をチェックして下さい。"
+#, fuzzy, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
+msgstr "まもなく切断されるでしょう。更新のために、%s をチェックして下さい。"
msgid "Unable to get a valid AIM login hash."
msgstr "妥当な AIM ログインの hash 値を取得することができませんでした。"
@@ -6771,7 +6950,7 @@ msgstr[1] ""
"原因は不明ですが、%2$s さんからの %1$hu 個のメッセージを受け取れませんでし"
"た。"
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "メッセージを送信できません: %s"
@@ -6793,6 +6972,9 @@ msgstr "サイン・インした日時"
msgid "Member Since"
msgstr "メンバになった日時"
+msgid "Profile"
+msgstr "プロフィール"
+
msgid "Your AIM connection may be lost."
msgstr "AIM への接続が切れたようです"
@@ -7071,6 +7253,7 @@ msgstr "接続する(_O)"
msgid "Get AIM Info"
msgstr "AIM 情報の取得"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "仲間のコメントの編集"
@@ -7183,7 +7366,6 @@ msgstr "Direct IM で %s は %s:%hu で問い合わせがきています。"
msgid "Attempting to connect to %s:%hu."
msgstr "%s:%hu にコンタクトを試みています"
-#, c-format
msgid "Attempting to connect via proxy server."
msgstr "プロキシ・サーバを介してコンタクトを試みています..."
@@ -7279,7 +7461,7 @@ msgstr "その他"
msgid "Visible"
msgstr "隠れています"
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
#, fuzzy
@@ -7370,16 +7552,48 @@ msgstr "最終更新日"
msgid "Could not change buddy information."
msgstr "仲間の情報を入力して下さい:"
-#, c-format
-msgid "%d needs Q&A"
+msgid "Mobile"
+msgstr "移動中"
+
+msgid "Note"
+msgstr "備考"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "仲間アイコン"
+
+msgid "Change his/her memo as you like"
msgstr ""
#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "仲間の追加"
+msgid "_Modify"
+msgstr "変更する"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "変更する"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "サーバがビジーです"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%u requires verification"
+msgstr "承認が必要です"
#, fuzzy
-msgid "Input answer here"
+msgid "Add buddy question"
+msgstr "仲間をリストに追加しますか?"
+
+#, fuzzy
+msgid "Enter answer here"
msgstr "ここにリクエストをどうぞ"
msgid "Send"
@@ -7393,18 +7607,19 @@ msgid "Authorization denied message:"
msgstr "承認を拒否する旨のメッセージ:"
#, fuzzy
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr "すみませんが、私のタイプではありません..."
#, fuzzy, c-format
-msgid "%d needs authentication"
+msgid "%u needs authorization"
msgstr "ユーザ %d さんは承認が必要です"
#, fuzzy
msgid "Add buddy authorize"
msgstr "仲間をリストに追加しますか?"
-msgid "Input request here"
+#, fuzzy
+msgid "Enter request here"
msgstr "ここにリクエストをどうぞ"
msgid "Would you be my friend?"
@@ -7427,7 +7642,7 @@ msgid "Failed sending authorize"
msgstr "私を承認してください!"
#, fuzzy, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr "チャットの仲間に参加できません"
#, fuzzy, c-format
@@ -7472,6 +7687,10 @@ msgid "You can only search for permanent Qun\n"
msgstr "半永久的に使用できる QQ グループのみ検索できます\n"
#, fuzzy
+msgid "(Invalid UTF-8 string)"
+msgstr "不正なプロキシ設定"
+
+#, fuzzy
msgid "Not member"
msgstr "私はメンバではありません"
@@ -7514,16 +7733,19 @@ msgstr "このグループでは他の人たちの参加を許可していませ
msgid "Join QQ Qun"
msgstr "チャットに参加"
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
-msgstr ""
+msgid "Input request here"
+msgstr "ここにリクエストをどうぞ"
+
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "Qun メンバの変更が完了しました"
#, fuzzy
msgid "Successfully joined Qun"
msgstr "Qun メンバの変更が完了しました"
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
msgid "QQ Qun Operation"
@@ -7533,7 +7755,7 @@ msgstr "QQ Qun の操作"
msgid "Failed:"
msgstr "失敗しました"
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
#, fuzzy
@@ -7548,11 +7770,11 @@ msgstr ""
"この操作によって最終的に Qun が完全に削除されます。"
#, fuzzy
-msgid "Sorry, you are not our style ..."
+msgid "Sorry, you are not our style"
msgstr "すみませんが、私のタイプではありません..."
#, fuzzy
-msgid "Successfully changed Qun member"
+msgid "Successfully changed Qun members"
msgstr "Qun メンバの変更が完了しました"
#, fuzzy
@@ -7563,35 +7785,35 @@ msgid "You have successfully created a Qun"
msgstr "Qun の生成が完了しました"
#, fuzzy
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr "今すぐ Qun の詳細な情報を入力しますか?"
msgid "Setup"
msgstr "入力する"
#, fuzzy, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr "ユーザ %d さんがグループ %d に参加しました"
#, fuzzy, c-format
-msgid "%d request to join Qun %d"
+msgid "%u request to join Qun %u"
msgstr "ユーザ %d さんがグループ %d に参加しました"
#, fuzzy, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr "チャットの仲間に参加できません"
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr "仲間の削除"
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "仲間の削除"
#, c-format
msgid "Unknown-%d"
@@ -7708,6 +7930,13 @@ msgstr "<b>Last Refresh</b>: %s<br>\n"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<b>現在のオンライン</b>: %d<br>\n"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<b>Last Refresh</b>: %s<br>\n"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7715,7 +7944,7 @@ msgid "<i>Feel free to join us!</i> :)"
msgstr ""
#, fuzzy, c-format
-msgid "About OpenQ r%s"
+msgid "About OpenQ %s"
msgstr "%s について"
#, fuzzy
@@ -7736,6 +7965,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "%s について"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "自宅の住所"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7767,7 +8000,6 @@ msgstr ""
msgid "QQ2008"
msgstr ""
-#. #endif
#, fuzzy
msgid "Connect by TCP"
msgstr "接続中です"
@@ -7780,6 +8012,9 @@ msgstr "サーバのポート"
msgid "Show server news"
msgstr "サーバのアドレス"
+msgid "Show chat room when msg comes"
+msgstr ""
+
#, fuzzy
msgid "Keep alive interval (seconds)"
msgstr "読み込み時にエラー"
@@ -7789,11 +8024,7 @@ msgid "Update interval (seconds)"
msgstr "読み込み時にエラー"
#, fuzzy
-msgid "Can not decrypt server reply"
-msgstr "サーバの情報を取得できません"
-
-#, fuzzy
-msgid "Can not decrypt get server reply"
+msgid "Cannot decrypt server reply"
msgstr "サーバの情報を取得できません"
#, c-format
@@ -7816,21 +8047,23 @@ msgid "Activation required"
msgstr "登録が必要です"
#, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr ""
#, fuzzy
-msgid "Keep alive error"
-msgstr "読み込み時にエラー"
+msgid "Could not decrypt server reply"
+msgstr "サーバの情報を取得できません"
-msgid "Requesting captcha ..."
-msgstr ""
+#, fuzzy
+msgid "Requesting captcha"
+msgstr "質問ダイアログの文字"
-msgid "Checking code of captcha ..."
+msgid "Checking captcha"
msgstr ""
-msgid "Failed captcha verify"
-msgstr ""
+#, fuzzy
+msgid "Failed captcha verification"
+msgstr "Yahoo! 認証に失敗"
#, fuzzy
msgid "Captcha Image"
@@ -7840,7 +8073,7 @@ msgstr "画像の保存"
msgid "Enter code"
msgstr "パスワードの入力"
-msgid "QQ Captcha Verifing"
+msgid "QQ Captcha Verification"
msgstr ""
#, fuzzy
@@ -7848,30 +8081,21 @@ msgid "Enter the text from the image"
msgstr "追加するグループの名前を入力して下さい:"
#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
+msgid "Unknown reply when checking password (0x%02X)"
msgstr ""
#, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
msgstr ""
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "接続できません"
msgid "Socket error"
msgstr "ソケットのエラー"
-#, fuzzy, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr ""
-"サーバとの接続を失いました:\n"
-"%s"
-
msgid "Unable to read from socket"
msgstr "ソケットを読めません"
@@ -7882,11 +8106,11 @@ msgid "Connection lost"
msgstr "接続を閉じました"
#, fuzzy
-msgid "Get server ..."
+msgid "Getting server"
msgstr "ユーザ情報のセット..."
#, fuzzy
-msgid "Request token"
+msgid "Requesting token"
msgstr "リクエストが拒否されました"
msgid "Couldn't resolve host"
@@ -7897,17 +8121,13 @@ msgid "Invalid server or port"
msgstr "不正なエラー"
#, fuzzy
-msgid "Connecting server ..."
-msgstr "サーバへ接続"
+msgid "Connecting to server"
+msgstr "SILC サーバへ接続中"
#, fuzzy
msgid "QQ Error"
msgstr "QQid のエラー"
-#, fuzzy
-msgid "Failed to send IM."
-msgstr "名前の取得に失敗しました: %s"
-
#, fuzzy, c-format
msgid ""
"Server News:\n"
@@ -7917,6 +8137,10 @@ msgid ""
msgstr "ICQ サーバ中継"
#, fuzzy, c-format
+msgid "%s:%s"
+msgstr "%s (%s)"
+
+#, fuzzy, c-format
msgid "From %s:"
msgstr "差出人"
@@ -7926,32 +8150,30 @@ msgid ""
"%s"
msgstr "サーバの情報: %s"
-msgid "Unknow SERVER CMD"
-msgstr ""
+#, fuzzy
+msgid "Unknown SERVER CMD"
+msgstr "原因は不明です"
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
#, fuzzy
msgid "QQ Qun Command"
msgstr "コマンド指定"
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr ""
-
-msgid "Can not decrypt login reply"
-msgstr ""
+#, fuzzy
+msgid "Could not decrypt login reply"
+msgstr "サーバの情報を取得できません"
#, fuzzy
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr "原因は不明です"
#, fuzzy
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr "原因は不明です"
#, c-format
@@ -8767,9 +8989,6 @@ msgstr "担当部署"
msgid "Unit"
msgstr "グループ"
-msgid "Note"
-msgstr "備考"
-
msgid "Join Chat"
msgstr "チャットに参加"
@@ -9433,6 +9652,10 @@ msgstr "ホスト名を解決できませんでした"
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr "SIP のスクリーン名に空白または @ 記号が含まれていないようです"
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "サーバのポート"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -9467,191 +9690,10 @@ msgid "Auth Domain"
msgstr "ドメイン認証"
#, c-format
-msgid "Looking up %s"
-msgstr "%s の検索中"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "%s への接続に失敗しました"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "サイン・イン: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "ファイル %s を書き込めません"
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "ファイル %s を読み込めません"
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "メッセージが長過ぎるので最後の %s バイトを切りつめました"
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s さんは正しくログインしていません"
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "%s の警告は許されません"
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "サーバの速度制限を越えたためメッセージは落されました"
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "%s でのチャットはできません"
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "早すぎて %s へメッセージを送信できません"
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "大きすぎるため %s からの IM を無視しました"
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "早く送りすぎたので %s さんからの IM を無視しました"
-
-#, c-format
-msgid "Failure."
-msgstr "失敗しました"
-
-#, c-format
-msgid "Too many matches."
-msgstr "一致するものが多すぎます"
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "より多くの修飾語を必要とします"
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "一時的にディレクトリ・サービスが利用できません"
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "E-メール検索が拒否されました"
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "キーワードが無効です"
-
-#, c-format
-msgid "No keywords."
-msgstr "キーワードがありません"
-
-#, c-format
-msgid "User has no directory information."
-msgstr "フォルダ情報がありません"
-
-#, c-format
-msgid "Country not supported."
-msgstr "サポートされていない国です"
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "原因不明の失敗: %s"
-
-#, fuzzy, c-format
-msgid "Incorrect username or password."
-msgstr "スクリーン名またはパスワードが間違っています"
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "一時的にサービスが利用できません"
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "ログインする警告レベルが高すぎます"
-
-#, c-format
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
-msgstr ""
-"接続と切断を繰り返し行いました。10 分程待ってから再び試みてください。そのまま"
-"続行すると、さらに長く待たなければならなくなりますよ。"
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "原因不明のサイン・オン・エラーが起こりました: %s"
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "不明なエラー %d が発生しました (情報: %s)"
-
-msgid "Invalid Groupname"
-msgstr "グループ名が間違っています"
-
-msgid "Connection Closed"
-msgstr "接続を閉じました"
-
-msgid "Waiting for reply..."
-msgstr "返答待ちです..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "TOC は一時停止状態から戻りました。メッセージを再送できます。"
-
-msgid "Password Change Successful"
-msgstr "パスワードの変更が完了しました"
-
-msgid "_Group:"
-msgstr "グループ(_G):"
-
-msgid "Get Dir Info"
-msgstr "フォルダ情報の取得"
-
-msgid "Set Dir Info"
-msgstr "フォルダ情報の設定"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "書き込みモードで %s を開けません!"
-
-msgid "File transfer failed; other side probably canceled."
+msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
-"ファイル転送が失敗しました。おそらく向こう側がキャンセルしたのでしょう。"
-
-msgid "Could not connect for transfer."
-msgstr "転送できませんでした!"
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "ファイルヘッダを書けません。ファイルは送信されません。"
-
-msgid "Save As..."
-msgstr "別名で保存..."
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s さんから %s さんへの %d個のファイルの要求: %s (%.2f %s)%s%s"
-msgstr[1] "%s さんから %s さんへの %d個のファイルの要求: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s さんがファイルを送るよう要求しています"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "TOC プロトコル・プラグイン"
-
-#, c-format
-msgid "%s has sent you a webcam invite, which is not yet supported."
+msgid "Your SMS was not delivered"
msgstr ""
msgid "Your Yahoo! message did not get sent."
@@ -9928,13 +9970,9 @@ msgstr "クールなリンク3"
msgid "Last Update"
msgstr "最終更新日"
-#, c-format
-msgid "User information for %s unavailable"
-msgstr "%s のユーザ情報は有効ではありません"
-
+#, fuzzy
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr ""
"すみません、このプロファイルはこのバージョンではサポートされていない書式/言語"
"のようです。"
@@ -10277,9 +10315,6 @@ msgstr "邪魔しないでね"
msgid "Extended away"
msgstr "逃走中"
-msgid "Mobile"
-msgstr "移動中"
-
msgid "Listening to music"
msgstr ""
@@ -10321,18 +10356,6 @@ msgstr "+++ %s さんが待機中から復帰しました"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "%s を読み込む際にエラー"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"%s を読み込む際にエラーが発生しました。その情報は読み込まれません。また、古い"
-"ファイルの名前を \"%s~\" に変更しました。"
-
msgid "Calculating..."
msgstr "計算中..."
@@ -10407,6 +10430,14 @@ msgstr "%s へ書き込む際にエラー: %s"
msgid "Unable to connect to %s: %s"
msgstr "%s へ接続できません: %s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+"ログインするためにサーバが TLS/SSL を要求してきましたが、TLS/SSL はサポートし"
+"ていません。"
+
#, c-format
msgid " - %s"
msgstr ""
@@ -10440,6 +10471,18 @@ msgstr "接続が拒否されました"
msgid "Address already in use."
msgstr "そのチャット名は既に使用されています。"
+#, c-format
+msgid "Error Reading %s"
+msgstr "%s を読み込む際にエラー"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"%s を読み込む際にエラーが発生しました。その情報は読み込まれません。また、古い"
+"ファイルの名前を \"%s~\" に変更しました。"
+
msgid "Internet Messenger"
msgstr "インターネット・メッセンジャー"
@@ -10482,10 +10525,8 @@ msgstr "新着メールを通知する(_M)"
msgid "Use this buddy _icon for this account:"
msgstr "次の仲間アイコンを使用する(_I):"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s のオプション"
+msgid "_Advanced"
+msgstr "拡張(_A)"
msgid "Use GNOME Proxy Settings"
msgstr "GNOME のプロキシ設定を使う"
@@ -10520,9 +10561,6 @@ msgstr "近づいてよく見れば"
msgid "you can see the butterflies mating"
msgstr "蝶が仲間になっているのが分かります"
-msgid "Proxy Options"
-msgstr "プロキシのオプション"
-
msgid "Proxy _type:"
msgstr "プロキシの種類(_T):"
@@ -10551,8 +10589,9 @@ msgstr "基本(_B)"
msgid "Create _this new account on the server"
msgstr ""
-msgid "_Advanced"
-msgstr "拡張(_A)"
+#, fuzzy
+msgid "_Proxy"
+msgstr "プロキシ"
msgid "Enabled"
msgstr "有効"
@@ -10627,6 +10666,17 @@ msgid "I_M"
msgstr "IM(_M)"
#, fuzzy
+msgid "_Audio Call"
+msgstr "チャットの追加(_A)"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "ビデオ・チャット"
+
+#, fuzzy
msgid "_Send File..."
msgstr "ファイルの送信(_S)"
@@ -10777,6 +10827,10 @@ msgstr "/ツール/仲間をつかむ(_P)"
msgid "/Tools/_Certificates"
msgstr "/ツール/設定(_E)"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/ツール/個人情報"
+
msgid "/Tools/Plu_gins"
msgstr "/ツール/プラグイン(_G)"
@@ -10786,10 +10840,6 @@ msgstr "/ツール/設定(_E)"
msgid "/Tools/Pr_ivacy"
msgstr "/ツール/個人情報(_I)"
-#, fuzzy
-msgid "/Tools/Smile_y"
-msgstr "/ツール/個人情報"
-
msgid "/Tools/_File Transfers"
msgstr "/ツール/ファイルの転送(_F)"
@@ -10911,8 +10961,8 @@ msgstr "手動"
msgid "By status"
msgstr "状態順"
-msgid "By log size"
-msgstr "ログ・サイズ順"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10930,6 +10980,9 @@ msgstr "接続"
msgid "Re-enable"
msgstr "アカウントを再び有効にする"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr ""
@@ -11023,6 +11076,9 @@ msgstr ""
msgid "A_lias:"
msgstr "別名(_L):"
+msgid "_Group:"
+msgstr "グループ(_G):"
+
msgid "Auto_join when account becomes online."
msgstr ""
@@ -11075,12 +11131,6 @@ msgstr "現在、その仲間を招待できるアカウントでサイン・イ
msgid "Invite Buddy Into Chat Room"
msgstr "仲間をチャット・ルームへ招待"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr "招待したい相手の名前と、オプションで招待メッセージを入力して下さい:"
-
msgid "_Buddy:"
msgstr "仲間(_B):"
@@ -11156,6 +11206,22 @@ msgstr "/会話/別名で保存(_S)..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/会話/クリア(_R)"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/会話/その他(_O)"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/会話/その他(_O)"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/会話/その他(_O)"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/会話/ログの表示(_L)"
+
msgid "/Conversation/Se_nd File..."
msgstr "/会話/ファイルの送信(_N)..."
@@ -11229,6 +11295,18 @@ msgstr "/会話"
msgid "/Conversation/View Log"
msgstr "/会話/ログの表示"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/会話/その他(_O)"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/会話/ログの表示"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/会話/その他(_O)"
+
msgid "/Conversation/Send File..."
msgstr "/会話/ファイルの送信..."
@@ -11413,6 +11491,9 @@ msgstr "アーティスト"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "サポート"
@@ -11555,6 +11636,10 @@ msgstr "グルジア語"
msgid "Ubuntu Georgian Translators"
msgstr "Ubuntu グルジア語の翻訳者"
+#, fuzzy
+msgid "Khmer"
+msgstr "その他"
+
msgid "Kannada"
msgstr "カンナダ語"
@@ -11577,6 +11662,10 @@ msgstr "リトアニア語"
msgid "Macedonian"
msgstr "マケドニア語"
+#, fuzzy
+msgid "Mongolian"
+msgstr "マケドニア語"
+
msgid "Bokmål Norwegian"
msgstr "ボックマル・ノルウェー語"
@@ -11692,7 +11781,25 @@ msgstr ""
"ログラムは完全無保証です。<BR><BR>"
#, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, fuzzy, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr ""
+"<FONT SIZE=\"4\">IRC:</FONT> irc.freenode.net の #pidgin チャンネル<BR><BR>"
+
+#, fuzzy, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr ""
"<FONT SIZE=\"4\">IRC:</FONT> irc.freenode.net の #pidgin チャンネル<BR><BR>"
@@ -12018,15 +12125,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr "新着メールを通知する"
-msgid "_Copy Email Address"
-msgstr "E-メール・アドレスのコピー(_C)"
-
-msgid "_Open Link in Browser"
-msgstr "リンク先をブラウザで開く(_O)"
-
-msgid "_Copy Link Location"
-msgstr "リンク先のコピー(_C)"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12298,6 +12396,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12327,6 +12426,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12388,11 +12488,27 @@ msgstr ""
msgid "Pidgin"
msgstr "Pidgin"
-msgid "Open All Messages"
-msgstr "全てのメッセージを開く"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">新着メールがあります!</span>"
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "計算中..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -12423,6 +12539,27 @@ msgstr ""
"ブラウザのコマンドを '手動設定' したようですが、コマンドが指定されていませ"
"ん。"
+msgid "Open All Messages"
+msgstr "全てのメッセージを開く"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">新着メールがあります!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "新しい仲間をつかむ"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">新着メールがあります!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "不明なメッセージ"
+
msgid "The following plugins will be unloaded."
msgstr "次のプラグインを解放します。"
@@ -12475,6 +12612,10 @@ msgstr "<b>プラグインの詳細</b>"
msgid "Select a file"
msgstr "ファイルの選択"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "つかむ仲間の編集"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "どのアカウントで誰をつかむか..."
@@ -12545,6 +12686,50 @@ msgstr "繰り返す(_R)"
msgid "Pounce Target"
msgstr "つかむ相手"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "入力を開始した時"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "入力を一旦停止した時"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "サイン・インした時"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s さんが待機中から戻ってきました (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "離席中から戻った時"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "入力を止めたようです"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "サイン・アウトした時"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "待機中になった時"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "離席する時だけ"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "メッセージを送信する"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "不明な \"つかみ\" イベントです。ぜひバグ報告して下さい!"
+
msgid "Smiley theme failed to unpack."
msgstr "スマイリーのテーマを展開できませんでした"
@@ -12568,6 +12753,12 @@ msgstr ""
msgid "Cl_ose conversations with the Escape key"
msgstr "%s さんとの会話"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "仲間リスト"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "システム・トレイのアイコン"
@@ -12682,9 +12873,6 @@ msgstr ""
msgid "Cannot start browser configuration program."
msgstr "ユーザ情報を取得できません"
-msgid "ST_UN server:"
-msgstr "STUN サーバ(_U):"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">例: stunserver.org</span>"
@@ -12709,6 +12897,10 @@ msgstr "開始のポート番号(_S):"
msgid "_End port:"
msgstr "終了のポート番号(_E):"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
#, fuzzy
msgid "Proxy Server &amp; Browser"
msgstr "プロキシ・サーバ"
@@ -12738,6 +12930,10 @@ msgstr "プロキシ・サーバ"
msgid "No proxy"
msgstr "プロキシなし"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "ユーザ名(_U):"
@@ -12902,13 +13098,13 @@ msgstr "離席中で待機中の時"
msgid "Auto-away"
msgstr "自動離席"
-msgid "Change status when _idle"
-msgstr "待機中になったら状態を変更する(_I)"
-
#, fuzzy
msgid "_Minutes before becoming idle:"
msgstr "状態を変更するまでの時間(分)(_M):"
+msgid "Change status when _idle"
+msgstr "待機中になったら状態を変更する(_I)"
+
msgid "Change _status to:"
msgstr "次の状態に変更する(_S):"
@@ -13057,6 +13253,12 @@ msgstr "保存して使う(_V)"
msgid "Status for %s"
msgstr "%s の状態"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
#, fuzzy
msgid "Custom Smiley"
msgstr "スマイリー (顔文字) を挿入します"
@@ -13067,15 +13269,15 @@ msgstr ""
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
+msgstr ""
+
#, fuzzy
msgid "Duplicate Shortcut"
msgstr "文字列が重複しています"
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
-msgstr ""
-
#, fuzzy
msgid "Please select an image for the smiley."
msgstr "%s さんの新しい名前を入力して下さい"
@@ -13089,17 +13291,22 @@ msgid "Add Smiley"
msgstr "スマイリー (顔文字) !"
#, fuzzy
-msgid "Smiley _Image"
+msgid "_Image:"
msgstr "画像の保存"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr ""
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "ポート番号"
#, fuzzy
msgid "Smiley"
msgstr "スマイリー (顔文字) !"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "ポート番号"
+
msgid "Custom Smiley Manager"
msgstr ""
@@ -13231,6 +13438,16 @@ msgstr ""
"画像 '%s' の読み込みに失敗しました: 原因は不明ですが、おそらく画像ファイルが"
"壊れているようです"
+#, fuzzy
+msgid "_Open Link"
+msgstr "リンクを開く方法(_O):"
+
+msgid "_Copy Link Location"
+msgstr "リンク先のコピー(_C)"
+
+msgid "_Copy Email Address"
+msgstr "E-メール・アドレスのコピー(_C)"
+
msgid "Save File"
msgstr "ファイルの保存"
@@ -14202,9 +14419,6 @@ msgstr "仲間リストを前面に配置したままにする(_K):"
msgid "Only when docked"
msgstr "格納した時にだけ"
-msgid "_Flash window when chat messages are received"
-msgstr "チャットでメッセージを受け取ったらウィンドウを点滅させる(_F)"
-
msgid "Windows Pidgin Options"
msgstr "Windows 版 Pidgin のオプション"
@@ -14255,6 +14469,222 @@ msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr ""
"これは XMPP サービスやクライアントをデバッグする際に便利なプラグインです。"
+#, fuzzy
+#~ msgid "Invite message"
+#~ msgstr "メッセージの中に埋め込む"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr "招待したい相手の名前と、オプションで招待メッセージを入力して下さい:"
+
+#, fuzzy
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "Notes アドレス帳の選択"
+
+#~ msgid ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+#~ msgstr ""
+#~ "まもなく切断されるでしょう。修正されたら TOC を利用してかまいません。更新"
+#~ "のために、%s をチェックして下さい。"
+
+#, fuzzy
+#~ msgid "Add buddy Q&A"
+#~ msgstr "仲間の追加"
+
+#, fuzzy
+#~ msgid "Can not decrypt get server reply"
+#~ msgstr "サーバの情報を取得できません"
+
+#, fuzzy
+#~ msgid "Keep alive error"
+#~ msgstr "読み込み時にエラー"
+
+#, fuzzy
+#~ msgid ""
+#~ "Lost connection with server:\n"
+#~ "%d, %s"
+#~ msgstr ""
+#~ "サーバとの接続を失いました:\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Connecting server ..."
+#~ msgstr "サーバへ接続"
+
+#, fuzzy
+#~ msgid "Failed to send IM."
+#~ msgstr "名前の取得に失敗しました: %s"
+
+#~ msgid "Looking up %s"
+#~ msgstr "%s の検索中"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "%s への接続に失敗しました"
+
+#~ msgid "Signon: %s"
+#~ msgstr "サイン・イン: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "ファイル %s を書き込めません"
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "ファイル %s を読み込めません"
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "メッセージが長過ぎるので最後の %s バイトを切りつめました"
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s さんは正しくログインしていません"
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "%s の警告は許されません"
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr "サーバの速度制限を越えたためメッセージは落されました"
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "%s でのチャットはできません"
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "早すぎて %s へメッセージを送信できません"
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "大きすぎるため %s からの IM を無視しました"
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr "早く送りすぎたので %s さんからの IM を無視しました"
+
+#~ msgid "Failure."
+#~ msgstr "失敗しました"
+
+#~ msgid "Too many matches."
+#~ msgstr "一致するものが多すぎます"
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "より多くの修飾語を必要とします"
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "一時的にディレクトリ・サービスが利用できません"
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "E-メール検索が拒否されました"
+
+#~ msgid "Keyword ignored."
+#~ msgstr "キーワードが無効です"
+
+#~ msgid "No keywords."
+#~ msgstr "キーワードがありません"
+
+#~ msgid "User has no directory information."
+#~ msgstr "フォルダ情報がありません"
+
+#~ msgid "Country not supported."
+#~ msgstr "サポートされていない国です"
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "原因不明の失敗: %s"
+
+#, fuzzy
+#~ msgid "Incorrect username or password."
+#~ msgstr "スクリーン名またはパスワードが間違っています"
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "一時的にサービスが利用できません"
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "ログインする警告レベルが高すぎます"
+
+#~ 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 ""
+#~ "接続と切断を繰り返し行いました。10 分程待ってから再び試みてください。その"
+#~ "まま続行すると、さらに長く待たなければならなくなりますよ。"
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "原因不明のサイン・オン・エラーが起こりました: %s"
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "不明なエラー %d が発生しました (情報: %s)"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "グループ名が間違っています"
+
+#~ msgid "Connection Closed"
+#~ msgstr "接続を閉じました"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "返答待ちです..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "TOC は一時停止状態から戻りました。メッセージを再送できます。"
+
+#~ msgid "Password Change Successful"
+#~ msgstr "パスワードの変更が完了しました"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "フォルダ情報の取得"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "フォルダ情報の設定"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "書き込みモードで %s を開けません!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr ""
+#~ "ファイル転送が失敗しました。おそらく向こう側がキャンセルしたのでしょう。"
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "転送できませんでした!"
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "ファイルヘッダを書けません。ファイルは送信されません。"
+
+#~ msgid "Save As..."
+#~ msgstr "別名で保存..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s さんから %s さんへの %d個のファイルの要求: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s さんから %s さんへの %d個のファイルの要求: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s さんがファイルを送るよう要求しています"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "TOC プロトコル・プラグイン"
+
+#~ msgid "User information for %s unavailable"
+#~ msgstr "%s のユーザ情報は有効ではありません"
+
+#~ msgid "%s Options"
+#~ msgstr "%s のオプション"
+
+#~ msgid "Proxy Options"
+#~ msgstr "プロキシのオプション"
+
+#~ msgid "By log size"
+#~ msgstr "ログ・サイズ順"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "リンク先をブラウザで開く(_O)"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "STUN サーバ(_U):"
+
+#, fuzzy
+#~ msgid "Smiley _Image"
+#~ msgstr "画像の保存"
+
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "チャットでメッセージを受け取ったらウィンドウを点滅させる(_F)"
+
#~ msgid "A group with the name already exists."
#~ msgstr "その名前のグループは既に存在します"
@@ -14358,13 +14788,6 @@ msgstr ""
#~ msgid "Change Qun information"
#~ msgstr "チャンネル情報"
-#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr "%s (%s)"
-
#~ msgid "System Message"
#~ msgstr "システム・メッセージ"
diff --git a/po/ka.po b/po/ka.po
index 14d97f8d9d..a729bf0e0e 100644
--- a/po/ka.po
+++ b/po/ka.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin 2.0 CVS\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
+"POT-Creation-Date: 2009-04-30 10:38-0400\n"
"PO-Revision-Date: 2006-02-05 23:19+0100\n"
"Last-Translator: Ubuntu Georgian Translators <>\n"
"Language-Team: Georgian <ka@li.org>\n"
@@ -32,7 +32,7 @@ msgid ""
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -621,18 +621,6 @@ msgid "Send To"
msgstr "_გაგზავნა"
#, fuzzy
-msgid "Invite message"
-msgstr "გახსენი ყველა შეტყობინება"
-
-msgid "Invite"
-msgstr "დაპატიჟება"
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-
-#, fuzzy
msgid "Conversation"
msgstr "საუბრები"
@@ -885,6 +873,43 @@ msgid "System Log"
msgstr "სისტემის პროტოკოლი"
#, fuzzy
+msgid "Calling ... "
+msgstr "გაანგარიშება..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+#, fuzzy
+msgid "Accept"
+msgstr "_აქცეპტირება"
+
+#, fuzzy
+msgid "Reject"
+msgstr "განულება"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "თქვენ"
+
+msgid "call: Make an audio call."
+msgstr ""
+
+#, fuzzy
msgid "Emails"
msgstr "ელ.ფოსტა"
@@ -920,6 +945,9 @@ msgstr "დაკავშირება"
msgid "IM"
msgstr "მოკ-შე"
+msgid "Invite"
+msgstr "დაპატიჟება"
+
#, fuzzy
msgid "(none)"
msgstr "(უსახელო)"
@@ -1137,7 +1165,6 @@ msgstr "%s გავიდა. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr ""
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr ""
@@ -1191,7 +1218,6 @@ msgstr "_დრო სტატუსის შეცვლამდე(წუ
msgid "Change status to"
msgstr "სტატუსის შეცვლა"
-#. Conversations
msgid "Conversations"
msgstr "საუბრები"
@@ -1528,7 +1554,6 @@ msgid ""
msgstr ""
"პლაგინი, ახალი საუბრის ჩართვისას გიჩვენებთ ბოლო საუბრარს მოცემულ ფანჯარაში."
-#, c-format
msgid "Online"
msgstr "ხაზზე"
@@ -1577,6 +1602,28 @@ msgstr ""
msgid "Lastlog plugin."
msgstr ""
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "ანგარიშები"
@@ -1675,15 +1722,6 @@ msgstr ""
msgid "SSL Certificate Verification"
msgstr ""
-#. Number of actions
-#, fuzzy
-msgid "Accept"
-msgstr "_აქცეპტირება"
-
-#, fuzzy
-msgid "Reject"
-msgstr "განულება"
-
msgid "_View Certificate..."
msgstr ""
@@ -1821,6 +1859,16 @@ msgstr "%s გავიდა ოთახიდან."
msgid "%s left the room (%s)."
msgstr "%s გავიდა ოთახიდან (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "დაპატიჟება კონფერენციაზე"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+
#, fuzzy, c-format
msgid "Failed to get connection: %s"
msgstr "ახალი კავშირის დამყარება შეუძლებელია"
@@ -1956,7 +2004,6 @@ msgstr ""
msgid "Transfer of file %s complete"
msgstr "%s ფაილის გადატანა დასრულდა"
-#, c-format
msgid "File transfer complete"
msgstr "ფაილის გადაგზავნა შესრულდა"
@@ -1964,7 +2011,6 @@ msgstr "ფაილის გადაგზავნა შესრულდ
msgid "You canceled the transfer of %s"
msgstr "თქვენ შეწყვიტეთ %s ფაილის გადატანა"
-#, c-format
msgid "File transfer cancelled"
msgstr "ფაილის გადაგზავნა შეწყვეტილია"
@@ -2149,7 +2195,6 @@ msgstr "(%s) %s <ავტო-პასუხი>: %s\n"
msgid "You are using %s, but this plugin requires %s."
msgstr ""
-#, c-format
msgid "This plugin has not defined an ID."
msgstr ""
@@ -2625,6 +2670,32 @@ msgstr ""
msgid "Do not ask. Always save in pounce."
msgstr ""
+#, fuzzy
+msgid "One Time Password"
+msgstr "შეიყვანე პაროლი"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2826,7 +2897,6 @@ msgid ""
"Unable to establish connection with the local mDNS server. Is it running?"
msgstr ""
-#. Creating the options for the protocol
msgid "First name"
msgstr "სახელი"
@@ -2861,6 +2931,11 @@ msgstr "Bonjour პროტოკოლის პლაგინი"
msgid "Purple Person"
msgstr "ახალი პერსონა"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "მდებარეობა"
+
msgid "Bonjour"
msgstr ""
@@ -3021,13 +3096,13 @@ msgstr ""
msgid "Add to chat..."
msgstr "დაამატე ჩატს..."
+#. Global
msgid "Available"
msgstr "მისაწვდომია"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "გასული"
@@ -3374,6 +3449,17 @@ msgid ""
"invalid characters."
msgstr ""
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr ""
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "მეტსახელი"
+
msgid "Cannot change nick"
msgstr ""
@@ -3605,6 +3691,36 @@ msgstr ""
msgid "SASL error"
msgstr "SASL შეცდომა"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "მიზეზი მითითებული არაა"
+
+msgid "Unsupported version of BOSH protocol"
+msgstr ""
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr "შეუძლებელია სერვერთან დაკავშირება"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "ახალი კავშირის დამყარება შეუძლებელია"
+
+msgid "Unable to create socket"
+msgstr "ვერ ვქმნი სოკეტს"
+
+msgid "Write error"
+msgstr "წერის შეცდომა"
+
msgid "Full Name"
msgstr "სრული სახელი"
@@ -3671,6 +3787,10 @@ msgstr "ქალაქი"
msgid "Operating System"
msgstr ""
+#, fuzzy
+msgid "Local Time"
+msgstr "ლოკალური ფაილი:"
+
msgid "Last Activity"
msgstr ""
@@ -3904,7 +4024,6 @@ msgstr ""
msgid "Extended Away"
msgstr "გაფართოებული გასული"
-#, c-format
msgid "Do Not Disturb"
msgstr ""
@@ -4027,9 +4146,6 @@ msgstr "იპოვე ოთახები"
msgid "You require encryption, but it is not available on this server."
msgstr ""
-msgid "Write error"
-msgstr "წერის შეცდომა"
-
#, fuzzy
msgid "Ping timeout"
msgstr "ტექსტი"
@@ -4039,13 +4155,10 @@ msgstr "კითხვის შეცდომა"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-msgid "Unable to create socket"
-msgstr "ვერ ვქმნი სოკეტს"
-
#, fuzzy
msgid "Invalid XMPP ID"
msgstr "არასწორი ID"
@@ -4053,6 +4166,10 @@ msgstr "არასწორი ID"
msgid "Invalid XMPP ID. Domain must be set."
msgstr ""
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "შეუძლებელია სერვერთან დაკავშირება"
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr ""
@@ -4148,10 +4265,19 @@ msgstr "მიმდენარეობს აუტენტიფიკა
msgid "Re-initializing Stream"
msgstr "სტრიმი"
+msgid "Server doesn't support blocking"
+msgstr ""
+
#, fuzzy
msgid "Not Authorized"
msgstr "ავტორიზაცია"
+msgid "Mood"
+msgstr ""
+
+msgid "Now Listening"
+msgstr ""
+
msgid "Both"
msgstr "ორივე"
@@ -4175,12 +4301,6 @@ msgstr "არაფერი"
msgid "Subscription"
msgstr "აბონირება"
-msgid "Mood"
-msgstr ""
-
-msgid "Now Listening"
-msgstr ""
-
msgid "Mood Text"
msgstr ""
@@ -4426,19 +4546,27 @@ msgstr ""
msgid "Unable to ping user %s"
msgstr "შეუძლებელია შეტყობინების გაგზავნა: %s"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr ""
+"ვერ ვეგზავნი ფაილს %s -თან. მომხმარებლის პროგრამას არ შეუძლია ფაილების მიღება"
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr ""
+"ვერ ვეგზავნი ფაილს %s -თან. მომხმარებლის პროგრამას არ შეუძლია ფაილების მიღება"
#, fuzzy, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr ""
"ვერ ვეგზავნი ფაილს %s -თან. მომხმარებლის პროგრამას არ შეუძლია ფაილების მიღება"
+#, c-format
+msgid "Buzzing %s..."
+msgstr ""
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
msgid "Buzz"
@@ -4448,8 +4576,35 @@ msgstr ""
msgid "%s has buzzed you!"
msgstr "%s შემოვიდა ქსელში."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "შეუძლებელია შეტყობინების გაგზავნა %s -თან"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr ""
+"ვერ ვეგზავნი ფაილს %s -თან. მომხმარებლის პროგრამას არ შეუძლია ფაილების მიღება"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr ""
+"ვერ ვეგზავნი ფაილს %s -თან. მომხმარებლის პროგრამას არ შეუძლია ფაილების მიღება"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "რეგისტრაცია ვერ მოხერხდა"
+
#, c-format
-msgid "Buzzing %s..."
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr ""
+
+#, fuzzy
+msgid "Select a Resource"
+msgstr "ფაილის არჩევა"
+
+msgid "Initiate Media"
msgstr ""
msgid "config: Configure a chat room."
@@ -4603,6 +4758,20 @@ msgstr ""
msgid "Error in chat %s"
msgstr ""
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr ""
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "ფაილის გადაგზავნა ვერ მოხერხდა"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "ფაილის გახსნა შეუძლებელია."
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4629,10 +4798,6 @@ msgstr ""
msgid "Please select the resource of %s to which you would like to send a file"
msgstr ""
-#, fuzzy
-msgid "Select a Resource"
-msgstr "ფაილის არჩევა"
-
msgid "Edit User Mood"
msgstr ""
@@ -4671,9 +4836,19 @@ msgstr "მოქმედება"
msgid "Select an action"
msgstr "ფაილის არჩევა"
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr "ვერ ვამატებ \"%s\"-ს"
+
+msgid "Buddy Add error"
+msgstr ""
+
#, fuzzy
-msgid "Unable to retrieve MSN Address Book"
-msgstr "ვერ ვქმნი სოკეტს"
+msgid "The username specified does not exist."
+msgstr "მომხმარებელი არ არსებობს"
#, c-format
msgid "Buddy list synchronization issue in %s (%s)"
@@ -4899,7 +5074,6 @@ msgstr ""
msgid "Passport account not yet verified"
msgstr ""
-#, c-format
msgid "Passport account suspended"
msgstr ""
@@ -4991,6 +5165,13 @@ msgstr ""
msgid "Page"
msgstr "გვერდი"
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "შენშვნის დონე"
+
msgid "Has you"
msgstr "ხართ მის სიაში"
@@ -5031,6 +5212,14 @@ msgstr "მისამართი"
msgid "Album"
msgstr ""
+#, fuzzy
+msgid "Game Title"
+msgstr "სათაური"
+
+#, fuzzy
+msgid "Office Title"
+msgstr "სათაური"
+
msgid "Set Friendly Name..."
msgstr "შეიტანე მეტსახელი..."
@@ -5234,8 +5423,9 @@ msgid ""
"does not exist."
msgstr ""
-msgid "Profile URL"
-msgstr "პროფაილის URL"
+#, fuzzy
+msgid "View web profile"
+msgstr "მომხმარებელი გასულია ქსელიდან"
#. *< type
#. *< ui_requirement
@@ -5467,19 +5657,15 @@ msgstr "მისამართების წიგნში ჩამატ
msgid "Do you want to delete this buddy from your address book as well?"
msgstr ""
-#. only notify the user about problems adding to the friends list
-#. * maybe we should do something else for other lists, but it probably
-#. * won't cause too many problems if we just ignore it
-#, c-format
-msgid "Unable to add \"%s\"."
-msgstr "ვერ ვამატებ \"%s\"-ს"
-
msgid "The username specified is invalid."
msgstr ""
msgid "This Hotmail account may not be active."
msgstr ""
+msgid "Profile URL"
+msgstr "პროფაილის URL"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5494,16 +5680,13 @@ msgstr ""
msgid "MSN Protocol Plugin"
msgstr "AIM/ICQ პროტოკოლის პლაგინი"
-msgid "Missing Cipher"
-msgstr ""
-
-msgid "The RC4 cipher could not be found"
+#, c-format
+msgid "No such user: %s"
msgstr ""
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
-msgstr ""
+#, fuzzy
+msgid "User lookup"
+msgstr "მომხმარებლის ოთახები"
#, fuzzy
msgid "Reading challenge"
@@ -5517,10 +5700,19 @@ msgstr "ვერ ვკიტხულობ"
msgid "Logging in"
msgstr "პროტოკოლირება"
-#, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] ""
+#, fuzzy
+msgid "MySpaceIM - No Username Set"
+msgstr "უსახელო"
+
+msgid "You appear to have no MySpace username."
+msgstr ""
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr ""
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr "არ ვარ დაკავშირებული სერვერთან."
#. Can't write _()'d strings in array initializers. Workaround.
#, fuzzy
@@ -5543,14 +5735,21 @@ msgid "MySpace"
msgstr ""
#, fuzzy
-msgid "MySpaceIM - No Username Set"
-msgstr "უსახელო"
+msgid "IM Friends"
+msgstr "_მოკლე შეტყობინებების ფანჯრები"
-msgid "You appear to have no MySpace username."
-msgstr ""
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
-msgstr ""
+#, fuzzy
+msgid "Add contacts from server"
+msgstr "სერვერის არასწორი პასუხი"
#. The session is now set up, ready to be connected. This emits the
#. * signedOn signal, so clients can now do anything with msimprpl, and
@@ -5573,6 +5772,21 @@ msgstr ""
msgid "MySpaceIM Error"
msgstr ""
+#, fuzzy
+msgid "Invalid input condition"
+msgstr "კავშირის დასრულება"
+
+msgid "Read buffer full (2)"
+msgstr ""
+
+#, fuzzy
+msgid "Unparseable message"
+msgstr "შეტყობინების გაგზავნა"
+
+#, fuzzy, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr "შეუძლებელია ჰოსტთან დაკავშირება"
+
msgid "Failed to add buddy"
msgstr ""
@@ -5582,14 +5796,6 @@ msgstr ""
msgid "persist command failed"
msgstr ""
-#, c-format
-msgid "No such user: %s"
-msgstr ""
-
-#, fuzzy
-msgid "User lookup"
-msgstr "მომხმარებლის ოთახები"
-
msgid "Failed to remove buddy"
msgstr ""
@@ -5599,37 +5805,16 @@ msgstr ""
msgid "blocklist command failed"
msgstr ""
-#, fuzzy
-msgid "Invalid input condition"
-msgstr "კავშირის დასრულება"
-
-msgid "Read buffer full (2)"
+msgid "Missing Cipher"
msgstr ""
-#, fuzzy
-msgid "Unparseable message"
-msgstr "შეტყობინების გაგზავნა"
-
-#, fuzzy, c-format
-msgid "Couldn't connect to host: %s (%d)"
-msgstr "შეუძლებელია ჰოსტთან დაკავშირება"
-
-#, fuzzy
-msgid "IM Friends"
-msgstr "_მოკლე შეტყობინებების ფანჯრები"
+msgid "The RC4 cipher could not be found"
+msgstr ""
-#, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-
-#, fuzzy
-msgid "Add contacts from server"
-msgstr "სერვერის არასწორი პასუხი"
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
msgid "Add friends from MySpace.com"
msgstr ""
@@ -5677,10 +5862,6 @@ msgid "User"
msgstr "მომხმარებლები"
#, fuzzy
-msgid "Profile"
-msgstr "MSN პროფაილი"
-
-#, fuzzy
msgid "Headline"
msgstr "ნამდვილი სახელი"
@@ -5695,17 +5876,6 @@ msgstr ""
msgid "Client Version"
msgstr "დაასრულე საუბარი"
-#. Protocol won't log in now without a username set.. Disconnect
-#, fuzzy
-msgid "No username set"
-msgstr "უსახელო"
-
-msgid "MySpaceIM - Please Set a Username"
-msgstr ""
-
-msgid "Please enter a username to check its availability:"
-msgstr ""
-
#, fuzzy
msgid "MySpaceIM - Username Available"
msgstr "სერვისი მიუწვდომელია"
@@ -5716,6 +5886,9 @@ msgstr ""
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr ""
+msgid "MySpaceIM - Please Set a Username"
+msgstr ""
+
#, fuzzy
msgid "This username is unavailable."
msgstr "სერვერი მიუწვდომელია"
@@ -5724,6 +5897,14 @@ msgstr "სერვერი მიუწვდომელია"
msgid "Please try another username:"
msgstr "გთხოვთ შეიყვანოთ თქვენი ახალი პაროლი"
+#. Protocol won't log in now without a username set.. Disconnect
+#, fuzzy
+msgid "No username set"
+msgstr "უსახელო"
+
+msgid "Please enter a username to check its availability:"
+msgstr ""
+
#. TODO: icons for each zap
#. Lots of comments for translators:
#. Zap means "to strike suddenly and forcefully as if with a
@@ -6102,7 +6283,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr ""
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr ""
@@ -6363,23 +6543,19 @@ msgstr "კამერა"
msgid "Screen Sharing"
msgstr "მომხმარებელი"
-#, fuzzy, c-format
+#, fuzzy
msgid "Free For Chat"
msgstr "თავისუფალი Chat-ი"
-#, c-format
msgid "Not Available"
msgstr "ხელმიუწვდომელია"
-#, c-format
msgid "Occupied"
msgstr "დაკავებულია"
-#, c-format
msgid "Web Aware"
msgstr ""
-#, c-format
msgid "Invisible"
msgstr "უხილავია"
@@ -6422,7 +6598,7 @@ msgid ""
"only letters, numbers and spaces, or contain only numbers."
msgstr ""
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
#, fuzzy
msgid "Invalid username."
@@ -6439,7 +6615,7 @@ msgstr ""
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr ""
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6473,9 +6649,7 @@ msgid "_OK"
msgstr "OK"
#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
+msgid "You may be disconnected shortly. If so, check %s for updates."
msgstr ""
#, fuzzy
@@ -6599,7 +6773,7 @@ msgid "You missed %hu message from %s for an unknown reason."
msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] ""
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "შეუძლებელია შეტყობინების გაგზავნა: %s"
@@ -6621,6 +6795,10 @@ msgstr ""
msgid "Member Since"
msgstr ""
+#, fuzzy
+msgid "Profile"
+msgstr "MSN პროფაილი"
+
msgid "Your AIM connection may be lost."
msgstr ""
@@ -6870,6 +7048,7 @@ msgstr "დაკავშირება"
msgid "Get AIM Info"
msgstr "გამოიძახე ინფორმაცია"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr ""
@@ -6976,7 +7155,7 @@ msgstr ""
msgid "Attempting to connect to %s:%hu."
msgstr "შეუძლებელია სერვერთან დაკავშირება"
-#, fuzzy, c-format
+#, fuzzy
msgid "Attempting to connect via proxy server."
msgstr "შეუძლებელია სერვერთან დაკავშირება"
@@ -7082,7 +7261,7 @@ msgstr "Opera"
msgid "Visible"
msgstr "უხილავია"
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
#, fuzzy
@@ -7176,17 +7355,50 @@ msgstr "ბოლო განახლება"
msgid "Could not change buddy information."
msgstr "გთხოვთ ქვემოთ შეიტანოთ ინფორმაცია პერსონის შესახებ"
-#, c-format
-msgid "%d needs Q&A"
+msgid "Mobile"
msgstr ""
+msgid "Note"
+msgstr "შენიშვნა"
+
+#. callback
#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "დაამატე მეგობარი"
+msgid "Buddy Memo"
+msgstr "მეგობრის მინი-სურათი"
+
+msgid "Change his/her memo as you like"
+msgstr ""
+
+#, fuzzy
+msgid "_Modify"
+msgstr "შეცვლა"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "შეცვლა"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "სერვერი დაკავებულია"
-msgid "Input answer here"
+msgid "Your request was accepted."
msgstr ""
+msgid "Your request was rejected."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%u requires verification"
+msgstr "დადასტურების მოთხოვნა"
+
+#, fuzzy
+msgid "Add buddy question"
+msgstr "დავამატო მეგობარი შენ სიას?"
+
+#, fuzzy
+msgid "Enter answer here"
+msgstr "შეიყვანეთ კონფერენციების სერვერი"
+
#, fuzzy
msgid "Send"
msgstr "_გაგზავნა"
@@ -7199,19 +7411,20 @@ msgstr "არასწორი პაროლი"
msgid "Authorization denied message:"
msgstr "ავტორიზაციის უარყოფის შეტყობინება"
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr ""
#, fuzzy, c-format
-msgid "%d needs authentication"
+msgid "%u needs authorization"
msgstr "ვიწყებ ავთენტურობის დადგენას"
#, fuzzy
msgid "Add buddy authorize"
msgstr "დავამატო მეგობარი შენ სიას?"
-msgid "Input request here"
-msgstr ""
+#, fuzzy
+msgid "Enter request here"
+msgstr "შეიყვანეთ კონფერენციების სერვერი"
#, fuzzy
msgid "Would you be my friend?"
@@ -7234,7 +7447,7 @@ msgid "Failed sending authorize"
msgstr "გთხოვთ გამიკეთოთ ავტორიზაცია!"
#, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr ""
#, c-format
@@ -7279,6 +7492,9 @@ msgstr "გთხოვთ შეიყვანოთ თქვენი ახ
msgid "You can only search for permanent Qun\n"
msgstr ""
+msgid "(Invalid UTF-8 string)"
+msgstr ""
+
msgid "Not member"
msgstr ""
@@ -7319,15 +7535,18 @@ msgstr ""
msgid "Join QQ Qun"
msgstr "ჩაერთე საუბარში"
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
+msgid "Input request here"
msgstr ""
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "ტელეფონის ნომერი"
+
msgid "Successfully joined Qun"
msgstr ""
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
#, fuzzy
@@ -7338,7 +7557,7 @@ msgstr "ხმის პარამეტრები"
msgid "Failed:"
msgstr "ოპერაცია ვერ/არ ჩატარდა"
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
#, fuzzy
@@ -7350,11 +7569,11 @@ msgid ""
"this operation will eventually remove this Qun."
msgstr ""
-msgid "Sorry, you are not our style ..."
+msgid "Sorry, you are not our style"
msgstr ""
#, fuzzy
-msgid "Successfully changed Qun member"
+msgid "Successfully changed Qun members"
msgstr "ტელეფონის ნომერი"
#, fuzzy
@@ -7365,7 +7584,7 @@ msgid "You have successfully created a Qun"
msgstr ""
#, fuzzy
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr "გადავაწერო მას?"
#, fuzzy
@@ -7373,28 +7592,28 @@ msgid "Setup"
msgstr "შენახვა"
#, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr ""
#, c-format
-msgid "%d request to join Qun %d"
+msgid "%u request to join Qun %u"
msgstr ""
#, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr ""
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr "ამოშალე მეგობარი"
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "ამოშალე მეგობარი"
#, fuzzy, c-format
msgid "Unknown-%d"
@@ -7515,6 +7734,13 @@ msgstr "<b>მომხმარებელი:</b> %s<br>"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<b>ჯგუფის სათაური:</b> %s<br>"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<b>გარე მომხმარებელი</b><br>"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7522,7 +7748,7 @@ msgid "<i>Feel free to join us!</i> :)"
msgstr ""
#, fuzzy, c-format
-msgid "About OpenQ r%s"
+msgid "About OpenQ %s"
msgstr "Pidgin-ის შესახებ"
#, fuzzy
@@ -7543,6 +7769,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "Pidgin-ის შესახებ"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "სახლის მისამართი"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7574,7 +7804,6 @@ msgstr ""
msgid "QQ2008"
msgstr ""
-#. #endif
#, fuzzy
msgid "Connect by TCP"
msgstr "დაკავშირება"
@@ -7587,6 +7816,9 @@ msgstr "სერვერი-პორტი"
msgid "Show server news"
msgstr "სერვერის მისამართი"
+msgid "Show chat room when msg comes"
+msgstr ""
+
#, fuzzy
msgid "Keep alive interval (seconds)"
msgstr "კითხვის შეცდომა"
@@ -7596,12 +7828,9 @@ msgid "Update interval (seconds)"
msgstr "კითხვის შეცდომა"
#, fuzzy
-msgid "Can not decrypt server reply"
+msgid "Cannot decrypt server reply"
msgstr "კავშირის სერვერი"
-msgid "Can not decrypt get server reply"
-msgstr ""
-
#, c-format
msgid "Failed requesting token, 0x%02X"
msgstr ""
@@ -7622,20 +7851,21 @@ msgid "Activation required"
msgstr "საჭიროა რეგისტრაცია"
#, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr ""
#, fuzzy
-msgid "Keep alive error"
-msgstr "კითხვის შეცდომა"
+msgid "Could not decrypt server reply"
+msgstr "კავშირის სერვერი"
-msgid "Requesting captcha ..."
-msgstr ""
+#, fuzzy
+msgid "Requesting captcha"
+msgstr "პრივატი"
-msgid "Checking code of captcha ..."
+msgid "Checking captcha"
msgstr ""
-msgid "Failed captcha verify"
+msgid "Failed captcha verification"
msgstr ""
#, fuzzy
@@ -7646,7 +7876,7 @@ msgstr "სურათის შენახვა"
msgid "Enter code"
msgstr "შეიყვანე პაროლი"
-msgid "QQ Captcha Verifing"
+msgid "QQ Captcha Verification"
msgstr ""
#, fuzzy
@@ -7654,16 +7884,15 @@ msgid "Enter the text from the image"
msgstr "ჩასამატებელი ჯგუფის სახელი"
#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
+msgid "Unknown reply when checking password (0x%02X)"
msgstr ""
#, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
msgstr ""
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "დაკავშირება შეუძლებელია"
@@ -7671,12 +7900,6 @@ msgstr "დაკავშირება შეუძლებელია"
msgid "Socket error"
msgstr "ჩატის შეცდომა"
-#, fuzzy, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr "არ ვარ დაკავშირებული სერვერთან."
-
#, fuzzy
msgid "Unable to read from socket"
msgstr "ვერ ვკითხულობ სოკეტს"
@@ -7690,11 +7913,11 @@ msgid "Connection lost"
msgstr "კავშირის შეცდომა"
#, fuzzy
-msgid "Get server ..."
+msgid "Getting server"
msgstr "მომხმარებლის ინფორმაციის შეტანა..."
#, fuzzy
-msgid "Request token"
+msgid "Requesting token"
msgstr "პრივატი"
msgid "Couldn't resolve host"
@@ -7705,17 +7928,13 @@ msgid "Invalid server or port"
msgstr "არასწორია მომხმარებელი ან პაროლი"
#, fuzzy
-msgid "Connecting server ..."
+msgid "Connecting to server"
msgstr "კავშირის სერვერი"
#, fuzzy
msgid "QQ Error"
msgstr "კითხვის შეცდომა"
-#, fuzzy
-msgid "Failed to send IM."
-msgstr "შეუძლებელია შეტყობინების გაგზავნა."
-
#, fuzzy, c-format
msgid ""
"Server News:\n"
@@ -7724,6 +7943,10 @@ msgid ""
"%s"
msgstr "ICQ-ზე სერვერზე დაყრდნობა"
+#, c-format
+msgid "%s:%s"
+msgstr ""
+
#, fuzzy, c-format
msgid "From %s:"
msgstr "ვისგან"
@@ -7734,32 +7957,30 @@ msgid ""
"%s"
msgstr "ინფორმაცია სერვერის შესახებ"
-msgid "Unknow SERVER CMD"
-msgstr ""
+#, fuzzy
+msgid "Unknown SERVER CMD"
+msgstr "უცნობი მიზეზი."
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
#, fuzzy
msgid "QQ Qun Command"
msgstr "ბრძანება"
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr ""
-
-msgid "Can not decrypt login reply"
-msgstr ""
+#, fuzzy
+msgid "Could not decrypt login reply"
+msgstr "კავშირის სერვერი"
#, fuzzy
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr "უცნობი მიზეზი."
#, fuzzy
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr "უცნობი მიზეზი."
#, fuzzy, c-format
@@ -8547,9 +8768,6 @@ msgstr "ორგანიზაცია"
msgid "Unit"
msgstr "განყოფილება"
-msgid "Note"
-msgstr "შენიშვნა"
-
msgid "Join Chat"
msgstr "ჩაერთე საუბარში"
@@ -9166,6 +9384,10 @@ msgstr "ვერ ვაგზავნი"
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr ""
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "სერვერი-პორტი"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -9200,188 +9422,10 @@ msgid "Auth Domain"
msgstr ""
#, c-format
-msgid "Looking up %s"
-msgstr ""
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr ""
-
-#, c-format
-msgid "Signon: %s"
-msgstr ""
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr ""
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "ვერ ვკითხულობ ფაილს %s."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr ""
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr ""
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr ""
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr ""
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr ""
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr ""
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr ""
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr ""
-
-#, c-format
-msgid "Failure."
-msgstr "შეცდომა."
-
-#, c-format
-msgid "Too many matches."
-msgstr ""
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr ""
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr ""
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr ""
-
-#, c-format
-msgid "Keyword ignored."
-msgstr ""
-
-#, c-format
-msgid "No keywords."
-msgstr ""
-
-#, c-format
-msgid "User has no directory information."
-msgstr ""
-
-#, c-format
-msgid "Country not supported."
-msgstr ""
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr ""
-
-#, fuzzy, c-format
-msgid "Incorrect username or password."
-msgstr "არასწორია მეტსახელი ან პაროლი"
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr ""
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr ""
-
-#, c-format
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
-msgstr ""
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr ""
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr ""
-
-msgid "Invalid Groupname"
-msgstr ""
-
-msgid "Connection Closed"
-msgstr ""
-
-msgid "Waiting for reply..."
-msgstr "ველოდები პასუხს..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr ""
-
-msgid "Password Change Successful"
-msgstr "პაროლი შეიცვალა!"
-
-msgid "_Group:"
-msgstr "_ჯგუფი:"
-
-msgid "Get Dir Info"
-msgstr ""
-
-msgid "Set Dir Info"
-msgstr ""
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr ""
-
-msgid "File transfer failed; other side probably canceled."
-msgstr ""
-
-msgid "Could not connect for transfer."
-msgstr ""
-
-msgid "Could not write file header. The file will not be transferred."
+msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
-#, fuzzy
-msgid "Save As..."
-msgstr "შეინახე ხატულა როგორც..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] ""
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr ""
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "TOC პროტოკოლის პლაგინი"
-
-#, c-format
-msgid "%s has sent you a webcam invite, which is not yet supported."
+msgid "Your SMS was not delivered"
msgstr ""
msgid "Your Yahoo! message did not get sent."
@@ -9641,13 +9685,8 @@ msgstr "საინტერესო ლინკი 3"
msgid "Last Update"
msgstr "ბოლო განახლება"
-#, c-format
-msgid "User information for %s unavailable"
-msgstr ""
-
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr ""
msgid ""
@@ -9961,9 +10000,6 @@ msgstr ""
msgid "Extended away"
msgstr "გაფართოებული გასული"
-msgid "Mobile"
-msgstr ""
-
msgid "Listening to music"
msgstr ""
@@ -10005,16 +10041,6 @@ msgstr "%s გახდა უმოქმედო."
msgid "%x %X"
msgstr ""
-#, c-format
-msgid "Error Reading %s"
-msgstr ""
-
-#, 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 ""
-
msgid "Calculating..."
msgstr "გაანგარიშება..."
@@ -10088,6 +10114,12 @@ msgid "Unable to connect to %s: %s"
msgstr "შეუძლებელია სერვერთან დაკავშირება"
#, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+
+#, c-format
msgid " - %s"
msgstr ""
@@ -10120,6 +10152,16 @@ msgstr "კავშირი ვერ განხორციელდა."
msgid "Address already in use."
msgstr ""
+#, c-format
+msgid "Error Reading %s"
+msgstr ""
+
+#, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+
#, fuzzy
msgid "Internet Messenger"
msgstr "მოკლე-შეტყობინება"
@@ -10167,10 +10209,8 @@ msgstr "ახალი ელ.ფოსტის შეტყობინებ
msgid "Use this buddy _icon for this account:"
msgstr ""
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s პარამეტრები"
+msgid "_Advanced"
+msgstr "_დამატებითი"
#, fuzzy
msgid "Use GNOME Proxy Settings"
@@ -10206,9 +10246,6 @@ msgstr ""
msgid "you can see the butterflies mating"
msgstr ""
-msgid "Proxy Options"
-msgstr "პროქსის პარამეტრები"
-
msgid "Proxy _type:"
msgstr "პროქსის ტიპი"
@@ -10237,8 +10274,9 @@ msgstr "_ძირითადი"
msgid "Create _this new account on the server"
msgstr ""
-msgid "_Advanced"
-msgstr "_დამატებითი"
+#, fuzzy
+msgid "_Proxy"
+msgstr "პროქსი"
msgid "Enabled"
msgstr "აქტიური"
@@ -10303,6 +10341,17 @@ msgid "I_M"
msgstr "მოკ_შე"
#, fuzzy
+msgid "_Audio Call"
+msgstr "ჩატის _დამატება"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "ვიდეო ჩატი"
+
+#, fuzzy
msgid "_Send File..."
msgstr "ფაილის გაგზავნა"
@@ -10455,6 +10504,10 @@ msgstr "ხელსაწყო"
msgid "/Tools/_Certificates"
msgstr "/ხელსაწყოები/პარამ_ეტრები"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/ხელსაწყოები/პრივატობა"
+
msgid "/Tools/Plu_gins"
msgstr "/ხელსაწყოები/_პლაგინები"
@@ -10464,10 +10517,6 @@ msgstr "/ხელსაწყოები/პარამ_ეტრები"
msgid "/Tools/Pr_ivacy"
msgstr "/ხელსაწყოები/პრი_ვატობა"
-#, fuzzy
-msgid "/Tools/Smile_y"
-msgstr "/ხელსაწყოები/პრივატობა"
-
msgid "/Tools/_File Transfers"
msgstr "/ხელსაწყოები/_ფაილების გადაგზავნა"
@@ -10591,8 +10640,8 @@ msgstr "მანუალურად"
msgid "By status"
msgstr "სტატუსის მიხედვით"
-msgid "By log size"
-msgstr "პროტოკოლის ზომის მიხედვით"
+msgid "By recent log activity"
+msgstr ""
#, fuzzy, c-format
msgid "%s disconnected"
@@ -10610,6 +10659,9 @@ msgstr "დაკავშირება"
msgid "Re-enable"
msgstr "ანგარიშის გააქტიურება"
+msgid "SSL FAQs"
+msgstr ""
+
#, fuzzy
msgid "Welcome back!"
msgstr "%s დაბრუნდა"
@@ -10701,6 +10753,9 @@ msgstr ""
msgid "A_lias:"
msgstr "სინონიმი:"
+msgid "_Group:"
+msgstr "_ჯგუფი:"
+
msgid "Auto_join when account becomes online."
msgstr ""
@@ -10753,12 +10808,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr "მოიწვიე მეგობარი Chat-ოთახში"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-
msgid "_Buddy:"
msgstr "_მეგობარი:"
@@ -10837,6 +10886,22 @@ msgstr "/საუბარი/_შეინახე როგორც..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/საუბარი/გაწმინდე"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/საუბარი/_დახურვა"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/საუბარი/_დახურვა"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/საუბარი/_დახურვა"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/საუბარი/_მანახე ლოგი"
+
msgid "/Conversation/Se_nd File..."
msgstr "/საუბარი/გააგზავნე ფაილი..."
@@ -10916,6 +10981,18 @@ msgstr "/_საუბარი"
msgid "/Conversation/View Log"
msgstr "/საუბარი/მოჩვენე ლოგი"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/საუბარი/_დახურვა"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/საუბარი/მოჩვენე ლოგი"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/საუბარი/_დახურვა"
+
msgid "/Conversation/Send File..."
msgstr "/საუბარი/გააგზავნე ფაილი..."
@@ -11105,6 +11182,9 @@ msgstr "მისამართი"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "სუპორტი"
@@ -11251,6 +11331,10 @@ msgstr "ქართული"
msgid "Ubuntu Georgian Translators"
msgstr "მიმდინარე თარგმანები"
+#, fuzzy
+msgid "Khmer"
+msgstr "Opera"
+
msgid "Kannada"
msgstr ""
@@ -11273,6 +11357,10 @@ msgid "Macedonian"
msgstr "მაკედონიური"
#, fuzzy
+msgid "Mongolian"
+msgstr "მაკედონიური"
+
+#, fuzzy
msgid "Bokmål Norwegian"
msgstr "ნორვეგიული"
@@ -11386,8 +11474,25 @@ msgid ""
"<BR><BR>"
msgstr ""
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
#, fuzzy, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"4\">IRC:</FONT> #Pidgin on irc.freenode.net<BR><BR>"
+
+#, fuzzy, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"4\">IRC:</FONT> #Pidgin on irc.freenode.net<BR><BR>"
msgid "Current Developers"
@@ -11707,15 +11812,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr "ახალი ელ.ფოსტის შეტყობინებები"
-msgid "_Copy Email Address"
-msgstr "_Email მისამართის კოპირება"
-
-msgid "_Open Link in Browser"
-msgstr "_ლინკის ბრაუზერში გახსნა"
-
-msgid "_Copy Link Location"
-msgstr "_ლინკის კოპირება"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -11970,6 +12066,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -11987,6 +12084,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12018,10 +12116,26 @@ msgstr ""
msgid "Pidgin"
msgstr "პლაგინები"
-msgid "Open All Messages"
-msgstr "გახსენი ყველა შეტყობინება"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "გაანგარიშება..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
msgstr ""
#, c-format
@@ -12049,6 +12163,30 @@ msgid ""
"The 'Manual' browser command has been chosen, but no command has been set."
msgstr ""
+msgid "Open All Messages"
+msgstr "გახსენი ყველა შეტყობინება"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr ""
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "ახალი პერსონა"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr ""
+"<span weight=\"bold\" size=\"larger\">მოსულია ახალი წერილი!</span>\n"
+"\n"
+"%s"
+
+#, fuzzy
+msgid "No message"
+msgstr "უცნობი შეტყობინება"
+
msgid "The following plugins will be unloaded."
msgstr ""
@@ -12101,6 +12239,10 @@ msgstr "<b>პლაგინის დეტალები</b>"
msgid "Select a file"
msgstr "ფაილის არჩევა"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "დაამატე მეგობარი"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr ""
@@ -12171,6 +12313,50 @@ msgstr ""
msgid "Pounce Target"
msgstr ""
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "ჩართვის დროს"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "მომხმარებელი კრიფავს..."
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "სიგნალების ტესტი"
+
+#, c-format
+msgid "Returned from being idle"
+msgstr ""
+
+#, c-format
+msgid "Returned from being away"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "%s შემოვიდა ქსელში."
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "%s გავიდა ქსელიდან"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "%s გახდა უმოქმედო."
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "როდესაც გასულია"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "შეტყობინების გაგზავნა"
+
+#, c-format
+msgid "Unknown.... Please report this!"
+msgstr ""
+
msgid "Smiley theme failed to unpack."
msgstr ""
@@ -12192,6 +12378,12 @@ msgstr ""
msgid "Cl_ose conversations with the Escape key"
msgstr "საუბარი %s-თან"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "მეგობრების სია"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "სისტემური პანელის ნახატი"
@@ -12311,9 +12503,6 @@ msgstr ""
msgid "Cannot start browser configuration program."
msgstr ""
-msgid "ST_UN server:"
-msgstr "ST_UN სერვერი:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr ""
@@ -12338,6 +12527,10 @@ msgstr "_საწყისი პორტი:"
msgid "_End port:"
msgstr "სა_ბოლოო პორტი:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
#, fuzzy
msgid "Proxy Server &amp; Browser"
msgstr "პროქსი სერვერი"
@@ -12367,6 +12560,10 @@ msgstr "პროქსი სერვერი"
msgid "No proxy"
msgstr "უპროქსიოდ"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "_მომხმარებელი:"
@@ -12527,13 +12724,13 @@ msgstr ""
msgid "Auto-away"
msgstr "თვითგასვლა"
-msgid "Change status when _idle"
-msgstr ""
-
#, fuzzy
msgid "_Minutes before becoming idle:"
msgstr "_დრო სტატუსის შეცვლამდე(წუთებში):"
+msgid "Change status when _idle"
+msgstr ""
+
msgid "Change _status to:"
msgstr ""
@@ -12687,6 +12884,12 @@ msgstr "შენახვა და გამოყენება"
msgid "Status for %s"
msgstr ""
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
#, fuzzy
msgid "Custom Smiley"
msgstr "სიცილაკის ჩამატება"
@@ -12697,12 +12900,12 @@ msgstr ""
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
-msgid "Duplicate Shortcut"
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
msgstr ""
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
+msgid "Duplicate Shortcut"
msgstr ""
#, fuzzy
@@ -12718,17 +12921,22 @@ msgid "Add Smiley"
msgstr "სიცილაკი"
#, fuzzy
-msgid "Smiley _Image"
+msgid "_Image:"
msgstr "სურათის შენახვა"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr ""
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "პორტი"
#, fuzzy
msgid "Smiley"
msgstr "სიცილაკი"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "პორტი"
+
msgid "Custom Smiley Manager"
msgstr ""
@@ -12849,6 +13057,16 @@ msgid ""
msgstr ""
#, fuzzy
+msgid "_Open Link"
+msgstr "გახსნას მაჩვენებელი :"
+
+msgid "_Copy Link Location"
+msgstr "_ლინკის კოპირება"
+
+msgid "_Copy Email Address"
+msgstr "_Email მისამართის კოპირება"
+
+#, fuzzy
msgid "Save File"
msgstr "ფაილის შენახვა..."
@@ -13822,9 +14040,6 @@ msgstr "_დატოვე მეგობრების სიის ფა
msgid "Only when docked"
msgstr ""
-msgid "_Flash window when chat messages are received"
-msgstr ""
-
#, fuzzy
msgid "Windows Pidgin Options"
msgstr "შესვლის პარამეტრები"
@@ -13876,6 +14091,74 @@ msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr ""
#, fuzzy
+#~ msgid "Invite message"
+#~ msgstr "გახსენი ყველა შეტყობინება"
+
+#, fuzzy
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "ვერ ვქმნი სოკეტს"
+
+#, fuzzy
+#~ msgid "Add buddy Q&A"
+#~ msgstr "დაამატე მეგობარი"
+
+#, fuzzy
+#~ msgid "Keep alive error"
+#~ msgstr "კითხვის შეცდომა"
+
+#, fuzzy
+#~ msgid ""
+#~ "Lost connection with server:\n"
+#~ "%d, %s"
+#~ msgstr "არ ვარ დაკავშირებული სერვერთან."
+
+#, fuzzy
+#~ msgid "Failed to send IM."
+#~ msgstr "შეუძლებელია შეტყობინების გაგზავნა."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "ვერ ვკითხულობ ფაილს %s."
+
+#~ msgid "Failure."
+#~ msgstr "შეცდომა."
+
+#, fuzzy
+#~ msgid "Incorrect username or password."
+#~ msgstr "არასწორია მეტსახელი ან პაროლი"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "ველოდები პასუხს..."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "პაროლი შეიცვალა!"
+
+#, fuzzy
+#~ msgid "Save As..."
+#~ msgstr "შეინახე ხატულა როგორც..."
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "TOC პროტოკოლის პლაგინი"
+
+#~ msgid "%s Options"
+#~ msgstr "%s პარამეტრები"
+
+#~ msgid "Proxy Options"
+#~ msgstr "პროქსის პარამეტრები"
+
+#~ msgid "By log size"
+#~ msgstr "პროტოკოლის ზომის მიხედვით"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_ლინკის ბრაუზერში გახსნა"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "ST_UN სერვერი:"
+
+#, fuzzy
+#~ msgid "Smiley _Image"
+#~ msgstr "სურათის შენახვა"
+
+#, fuzzy
#~ msgid "A group with the name already exists."
#~ msgstr "ფალი უკვე არსებობს"
@@ -13940,10 +14223,6 @@ msgstr ""
#~ msgstr "შეცდომა პაროლის შეცვლისას"
#, fuzzy
-#~ msgid "Failed to connect all servers"
-#~ msgstr "შეუძლებელია სერვერთან დაკავშირება"
-
-#, fuzzy
#~ msgid "Connecting server %s, retries %d"
#~ msgstr "კავშირის სერვერი"
@@ -14264,15 +14543,6 @@ msgstr ""
#~ msgid "_Mute"
#~ msgstr "_გაჩუმება"
-#~ msgid ""
-#~ "<span weight=\"bold\" size=\"larger\">You have mail!</span>\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr ""
-#~ "<span weight=\"bold\" size=\"larger\">მოსულია ახალი წერილი!</span>\n"
-#~ "\n"
-#~ "%s"
-
#~ msgid "Send unknown \"_slash\" commands as messages"
#~ msgstr "გავაგზავნოთ უცნობი 'დახრილი ხაზი' ბრძანებები როგორც შეტყობინებები"
diff --git a/po/km.po b/po/km.po
index 771ca9250b..dd91918d36 100644
--- a/po/km.po
+++ b/po/km.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pidgin\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-27 16:37-0800\n"
+"POT-Creation-Date: 2009-04-30 10:38-0400\n"
"PO-Revision-Date: 2009-02-25 11:49+0700\n"
"Last-Translator: Khoem Sokhem <khoemsokhem@khmeros.info>\n"
"Language-Team: Khmer <support@khmeros.info>\n"
@@ -594,19 +594,6 @@ msgstr "បានបញ្ចប់​ការ​ចុះ​កំណត់ហ
msgid "Send To"
msgstr "ផ្ញើ​ទៅ"
-msgid "Invite message"
-msgstr "សារ​អញ្ជើញ"
-
-msgid "Invite"
-msgstr "អញ្ជើញ"
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"សូម​បញ្ចូល​ឈ្មោះ​អ្នកប្រើ​ដែល​អ្នកចង់​អញ្ជើញ\n"
-"រួម​ជា​មួយ​នឹង​សារ​អញ្ជើញ​ជា​ជម្រើស ។"
-
msgid "Conversation"
msgstr "ការ​សន្ទនា"
@@ -853,6 +840,41 @@ msgstr "កា​រសន្ទនា​ទាំង​អស់"
msgid "System Log"
msgstr "​កំណត់ហេតុ​ប្រព័ន្ធ"
+#, fuzzy
+msgid "Calling ... "
+msgstr "កំពុង​គណនា..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "ទទួលរម​"
+
+msgid "Reject"
+msgstr "ច្រានចោលល"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "អ្នកបាន​បោះបង់​ឆានែល %s%s"
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "អ៊ីមែល"
@@ -886,6 +908,9 @@ msgstr "បន្ត"
msgid "IM"
msgstr "IM"
+msgid "Invite"
+msgstr "អញ្ជើញ"
+
msgid "(none)"
msgstr "​(គ្មាន)​"
@@ -1087,7 +1112,6 @@ msgstr "%s មាន​ទៅ​ឆ្ងាយ ។ (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s បាន​ផ្ញើ​សារ​ឲ្យ​អ្នក ។ (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "មិនស្គាល់​ព្រឹត្តិការណ៍​ក្រុម ។ សូម​រាយការណ៍​វា !"
@@ -1494,6 +1518,28 @@ msgstr "GntLastlog"
msgid "Lastlog plugin."
msgstr "កម្មវិធី​ជំនួយ​កំណត់ហេតុ​ចុងក្រោយ ។"
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL Tune"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "គណនី"
@@ -1594,13 +1640,6 @@ msgstr "ទទួល​វិញ្ញាបនបត្រ​សម្រាប
msgid "SSL Certificate Verification"
msgstr "កា​រផ្ទៀងផ្ទាត់​វិញ្ញាបនបត្រ SSL"
-#. Number of actions
-msgid "Accept"
-msgstr "ទទួលរម​"
-
-msgid "Reject"
-msgstr "ច្រានចោលល"
-
msgid "_View Certificate..."
msgstr "មើល​វិញ្ញាបនបត្រ..."
@@ -1747,6 +1786,16 @@ msgstr "%s បាន​ចេញ​ពី​បន្ទប់ ។"
msgid "%s left the room (%s)."
msgstr "%s បាន​ចេញ​ពី​បន្ទប់ (%s) ។"
+#, fuzzy
+msgid "Invite to chat"
+msgstr "អញ្ជើញ​ឲ្យ​ចូលរួម​ក្នុង​សន្និសីទ"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr "សូម​បញ្ចូល​ឈ្មោះ​របស់​អ្នកប្រើ​ដែល​អ្នក​ចង់​អញ្ជើញ រួម​ជា​មួយ​នឹង​សារ​អញ្ជើញ​ជា​ជម្រើស ។"
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "បានបរាជ័យ​ក្នុងការ​តភ្ជាប់ ៖ %s"
@@ -2552,6 +2601,32 @@ msgstr "រក្សាទុក​សារ​ក្រៅ​បណ្ដាញ
msgid "Do not ask. Always save in pounce."
msgstr "កុំសួរ ។ រក្សាទុក​ជា​ក្រុម​ជា​និច្ច ។"
+#, fuzzy
+msgid "One Time Password"
+msgstr "បញ្ចូល​ពាក្យ​សម្ងាត់"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2946,6 +3021,7 @@ msgstr "ជ្រើស​ការ​ជជែក​សម្រាប់មិ
msgid "Add to chat..."
msgstr "បន្ថែម​ទៅ​កា​រជជែក..."
+#. Global
msgid "Available"
msgstr "ដែល​អាច​ប្រើបាន"
@@ -3290,6 +3366,17 @@ msgid ""
msgstr ""
"ឈ្មោះ​គណនី​ដែល​អ្នកបានជ្រើស​ត្រូវ​បានបដិសេធ​ដោយ​ម៉ាស៊ីនបម្រើ ។ វា​ប្រហែលជា​មាន​តួអក្សរ​មិនត្រឹមត្រូវ ។"
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "ឈ្មោះការ​ជជែក​នេះ​កំពុង​ប្រើ​រួច​ហើយ"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "សម្មតិនាម"
+
msgid "Cannot change nick"
msgstr "មិនអាច​ផ្លាស់ប្ដូរ​សម្មតិនាម​បានទេ"
@@ -3552,6 +3639,41 @@ msgstr "ការ​ប្រខិតខំ​មិនត្រឹមត្រ
msgid "SASL error"
msgstr "កំហុស SASL"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "គ្មាន​ហេតុផល​បាន​ផ្ដល់"
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "កំណែ​ដែល​មិនបានគាំទ្រ"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"មិនអាច​បង្កើត​ការ​តភ្ជាប់​ជា​មួយ​ម៉ាស៊ីនបម្រើ ៖\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"មិនអាច​បង្កើត​ការ​តភ្ជាប់​ជា​មួយ​ម៉ាស៊ីនបម្រើ ៖\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "មិនអាច​ចាប់ផ្ដើម​កា​រតភ្ជាប់​បានទេ"
+
+msgid "Unable to create socket"
+msgstr "មិន​អាច​បង្កើត​រន្ធ​បានទេ"
+
+msgid "Write error"
+msgstr "កំហុស​ក្នុងកា​រសរសេរ"
+
msgid "Full Name"
msgstr "ឈ្មោះ​ពេញ"
@@ -3616,6 +3738,10 @@ msgstr "ម៉ាស៊ីន​ភ្ញៀវ"
msgid "Operating System"
msgstr "ប្រព័ន្ធ​ប្រតិបត្តិការ"
+#, fuzzy
+msgid "Local Time"
+msgstr "ឯកសារ​មូលដ្ឋាន ៖"
+
msgid "Last Activity"
msgstr "សកម្មភាព​ចុងក្រោយ"
@@ -3944,9 +4070,6 @@ msgstr "រក​បន្ទប់"
msgid "You require encryption, but it is not available on this server."
msgstr "អ្នកត្រូវកា​រការ​អ៊ិនគ្រីប ប៉ុន្តែ​មិនអាច​ប្រើ​បាន​នៅ​លើ​​ម៉ាស៊ីន​បម្រើនេះ​ទេ ។"
-msgid "Write error"
-msgstr "កំហុស​ក្នុងកា​រសរសេរ"
-
msgid "Ping timeout"
msgstr "Ping អស់ពេល"
@@ -3955,14 +4078,9 @@ msgstr "កំហុស​ក្នុងការ​អាន"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"មិនអាច​បង្កើត​ការ​តភ្ជាប់​ជា​មួយ​ម៉ាស៊ីនបម្រើ ៖\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "មិន​អាច​បង្កើត​រន្ធ​បានទេ"
msgid "Invalid XMPP ID"
msgstr "លេខសម្គាល់ XMPP មិន​ត្រឹមត្រូវ"
@@ -3970,6 +4088,10 @@ msgstr "លេខសម្គាល់ XMPP មិន​ត្រឹមត្រ
msgid "Invalid XMPP ID. Domain must be set."
msgstr "លេខសម្គាល់ XMPP មិនត្រឹមត្រូវ ។ ដែន​ត្រូវ​តែ​បានកំណត់ ។"
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "បាន​បរាជ័យ​ក្នុងការ​តភ្ជាប់​ទៅ​ម៉ាស៊ីន​បម្រើ ។"
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "ការ​ចុះឈ្មោះ​ %s@%s ដោយ​ជោគជ័យ"
@@ -4060,6 +4182,12 @@ msgstr "ម៉ាស៊ីន​បម្រើ​មិន​គាំទ្រ
msgid "Not Authorized"
msgstr "មិន​បានផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ទេ"
+msgid "Mood"
+msgstr "អារម្មណ៍"
+
+msgid "Now Listening"
+msgstr "ឥឡូវ​កំពុង​ស្ដាប់"
+
msgid "Both"
msgstr "ទាំង​ពីរ​"
@@ -4081,12 +4209,6 @@ msgstr "គ្មាន"
msgid "Subscription"
msgstr "ការ​ជាវ"
-msgid "Mood"
-msgstr "អារម្មណ៍"
-
-msgid "Now Listening"
-msgstr "ឥឡូវ​កំពុង​ស្ដាប់"
-
msgid "Mood Text"
msgstr "អត្ថបទ​អារម្មណ៍"
@@ -4324,18 +4446,24 @@ msgstr "មិនអាច​ធាក់​អ្នកប្រើ %s បា
msgid "Unable to ping user %s"
msgstr "មិនអាច ping អ្នក​ប្រើ %s បានទេ"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr "មិនអាច​កេះកៀវ​បានទេ ពីព្រោះ​មិន​ស្គាល់​អំពី​អ្នកប្រើ %s ។"
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr "មិនអាចកេះកៀង​បានទេ ពីព្រើ​អ្នកប្រើ %s នៅ​ក្រៅ​បណ្ដាញ ។"
-#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+#, fuzzy, c-format
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "មិនអាច​កេះកៀវ​បានទេ ពីព្រោះ​អ្នក​ប្រើ %s មិន​គាំទ្រ​វា​ទេ ។"
+#, c-format
+msgid "Buzzing %s..."
+msgstr "កំពុងកេះកៀវ %s..."
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
msgid "Buzz"
@@ -4345,9 +4473,34 @@ msgstr "កេះកៀវ"
msgid "%s has buzzed you!"
msgstr "%s បានកេះកៀវ​អ្នក !"
-#, c-format
-msgid "Buzzing %s..."
-msgstr "កំពុងកេះកៀវ %s..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "មិនអាច​ផ្ញើ​ឯកសារ​ទៅ​កាន់ %s បានទេ ដោយសារ​តែ JID មិន​ត្រឹមត្រូវ"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "មិនអាច​ផ្ញើ​ឯកសារ %s បានទេ អ្នកប្រើ​មិន​នៅ​លើ​បណ្ដាញ​ទេ"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr "មិនអាច​ផ្ញើ​ឯកសារ %s បានទេ មិនបានជាវ​ទៅ​វត្តមាន​របស់​អ្នកប្រើ"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "បានបរាជ័យ​ក្នុងកា​រចុះឈ្មោះ"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "សូម​ជ្រើស​ធនធាន​របស់ %s ដែល​អ្នក​ចង់​ផ្ញើ​ឯកសារ"
+
+msgid "Select a Resource"
+msgstr "ជ្រើស​ធនធាន"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "ចាប់ផ្ដើមជជែក"
msgid "config: Configure a chat room."
msgstr "config ៖ កំណត់​រចនាសម្ព័ន្ធ​បន្ទប់​ជជែក ។"
@@ -4498,6 +4651,21 @@ msgstr "កំហុស​ក្នុងកា​រចូល​ក្នុង
msgid "Error in chat %s"
msgstr "កំហុស​​នៅ​ក្នុង​ការ​ជជែក %s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "កំហុស​មួយ​បានកើត​ឡើង​ខណៈពេល​បើក​ឯកសារ ។"
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "បាន​បរាជ័យ​ក្នុងកា​រផ្ទេរ​ឯកសារ"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "បានបរាជ័យ​ក្នុងការ​បើក​ឯកសារ '%s' ៖ %s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr "មិនអាច​ផ្ញើសារ​ទៅ​កាន់ %s អ្នក​ប្រើ​មិន​គាំទ្រ​កា​រផ្ទេរ​ឯកសារ​ទេ"
@@ -4521,9 +4689,6 @@ msgstr "មិនអាច​ផ្ញើ​ឯកសារ %s បានទេ
msgid "Please select the resource of %s to which you would like to send a file"
msgstr "សូម​ជ្រើស​ធនធាន​របស់ %s ដែល​អ្នក​ចង់​ផ្ញើ​ឯកសារ"
-msgid "Select a Resource"
-msgstr "ជ្រើស​ធនធាន"
-
msgid "Edit User Mood"
msgstr "កែសម្រួល​អារម្មណ៍​អ្នកប្រើ"
@@ -6289,7 +6454,7 @@ msgstr ""
"មិនអាច​ចូល​បានទេ ៖ មិនអាច​ចូល​ជា​ %s ពីព្រោះ​ឈ្មោះ​អ្នក​ប្រើ​មិន​ត្រឹមត្រូវ ។ អ្នក​ប្រើ​ត្រូវ​តែ​មានអាសយដ្ឋាន​"
"អ៊ីមែល ឬ​ចាប់ផ្ដើម​ដោយ​អក្សរ និង​មានតែ​អក្សរ លេខ និង​ចន្លោះ ឬ​មាន​តែ​លេខ ។"
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr "ឈ្មោះ​អ្នកប្រើ​មិន​ត្រឹមត្រូវ ។"
@@ -6305,7 +6470,7 @@ msgstr "គណនី​របស់​អ្នក​បច្ចុប្បន
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "សេវា​កម្មវិធី​ផ្ញើសារបន្ទាន់ AOL បច្ចុប្បន្ន​ប្រើ​មិនបានទេ ។"
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6477,7 +6642,7 @@ msgid "You missed %hu message from %s for an unknown reason."
msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] "អ្នកបាត់​សារ %hu ពី %s ដោយសារ​ហេតុផល​ដែល​មិនស្គាល់ ។"
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "មិនអាច​ផ្ញើ​សារ ៖ %s"
@@ -7043,6 +7208,38 @@ msgstr "ធ្វើ​​ឲ្យ​​ទាន់សម័យ\t"
msgid "Could not change buddy information."
msgstr "មិនអាច​ផ្លាស់ប្ដូរ​ព័ត៌មាន​មិត្តភក្ដិ​បានទេ ។"
+msgid "Mobile"
+msgstr "ចល័ត"
+
+msgid "Note"
+msgstr "ចំណាំ"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "កែប្រែ មិត្តភក្ដិ"
+
+msgid "Change his/her memo as you like"
+msgstr ""
+
+#, fuzzy
+msgid "_Modify"
+msgstr "កែប្រែ"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "កែប្រែ"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "ម៉ាស៊ីនបម្រើ​រវល់"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
#, c-format
msgid "%u requires verification"
msgstr "%u ត្រូវការ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ"
@@ -7352,6 +7549,9 @@ msgstr "<p><b>ទទួល​ស្គាល់</b> ៖<br>\n"
msgid "<p><b>Scrupulous Testers</b>:<br>\n"
msgstr "<p><b>អ្នក​សាកល្បង​ហ្មតចត់</b> ៖<br>\n"
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr "<p><i>ប្រុសៗ​ទាំង​អស់​នៅ​ក្នុង​បន្ទប់...</i><br>\n"
@@ -7487,7 +7687,6 @@ msgstr ""
"កូដ​ឆ្លើយតប​មិនស្គាល់ នៅពេល​ចូល (0x%02X) ៖\n"
"%s"
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "មិនអាច​តភ្ជាប់​បានទេ ។"
@@ -8377,9 +8576,6 @@ msgstr "អង្គការ"
msgid "Unit"
msgstr "ផ្នែក"
-msgid "Note"
-msgstr "ចំណាំ"
-
msgid "Join Chat"
msgstr "ចូលរួម​ជជែក"
@@ -9059,191 +9255,12 @@ msgid "Auth Domain"
msgstr "ផ្ទៀងផ្ទាត់​ដែន"
#, c-format
-msgid "Looking up %s"
-msgstr "រកមើល %s"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "បាន​បរាជ័យ​ក្នុងការ​តភ្ជាប់ %s"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "ចូល ៖ %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "មិនអាច​សរសេរ​ឯកសារ %s បាននោះទេ ។"
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "មិន​អាច​អាន​ឯកសារ %s បានទេ ។"
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "សារ​វែងពេក បានកាត់​ឲ្យ​ខ្លីចុងក្រោយ​ត្រឹម %s បៃ ។"
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s បច្ចុប្បន្នមិន​បានចូល​ទេ ។"
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "មិន​បានអនុញ្ញាត​ការ​ព្រមានរបស់ %s ទេ ។"
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "សារ​ត្រូវ​បានទម្លាក់ អ្នកបានលើស​ដែន​កំណត់ល្បឿន​របស់​ម៉ាស៊ីនបម្រើ ។"
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "មិនមានការ​​ជជែក​នៅ​ក្នុង %s ទេ ។"
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "អ្នកកំពុង​ផ្ញើសារ​យ៉ាង​លឿន​ទៅ %s ។"
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "អ្នកបាត់ IM ពី %s ពីព្រោះ​វា​ធំពេក ។"
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "អ្នកបានបាត់ IM ពី %s ពីព្រោះ​វា​លឿន​ពេក ។"
-
-#, c-format
-msgid "Failure."
-msgstr "បរាជ័យ ។"
-
-#, c-format
-msgid "Too many matches."
-msgstr "មានការ​ផ្គូផ្គង​ច្រើនពេក ។"
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "ត្រូវការ​ឧបករណ៍​បញ្ជាក់​បន្ថែមទៀត ។"
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "សេវា Dir មិន​អាច​ប្រើបាន​ជា​បណ្ដោះអាសន្ន ។"
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "បានដាក់កម្ងិរ​ការ​រកមើល​អ៊ីមែល ។"
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "បានមិនអើពើ​ពាក្យគន្លឹះ ។"
-
-#, c-format
-msgid "No keywords."
-msgstr "គ្មាន​ពាក្យ​គន្លឹះ ។"
-
-#, c-format
-msgid "User has no directory information."
-msgstr "អ្នកប្រើ​មិនមាន​​ព័ត៌មាន​ថត​ទៀតទេ ។"
-
-#, c-format
-msgid "Country not supported."
-msgstr "មិន​បានគាំទ្រ​ប្រទេស​ទេ ។"
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "មិនស្គាល់​ភាព​បរាជ័យ ៖ %s ។"
-
-#, c-format
-msgid "Incorrect username or password."
-msgstr "ឈ្មោះ​អ្នកប្រើ ឬ​ពាក្យសម្ងាត់​មិន​ត្រឹមត្រូវ ។"
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "សេវា​មិន​អាច​ប្រើបាន​ជា​បណ្ដោះអាសន្ន ។"
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "កម្រិត​ព្រមាន​របស់​អ្នកបច្ចុប្បន្ន​ខ្ពស់​ពេក​ត្រូវ​ចូល ។"
-
-#, c-format
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
-msgstr ""
-"អ្នក​បានតភ្ជាប់​ និង​ផ្ដាច់​ញឹកញាប់ពេក ។ រង់ចាំ​រយៈពេល​ ១០ នាទី ហើយ​ព្យាយាម​ម្ដង​ទៀត ។ ប្រសិន​បើ​អ្នកបន្ត​"
-"ព្យាយាម អ្នក​នឹង​ត្រូវ​រង់ចាំ​យូរ​ជាង​នេះ ។"
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "មិនស្គាល់​កំហុស​ក្នុងការ​ចូល​បានកើតឡើង ៖ %s ។"
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "មិនស្គាល់​កំហុស %d ដែល​បានកើត​ឡើង ។ ព័ត៌មាន ៖ %s"
-
-msgid "Invalid Groupname"
-msgstr "ឈ្មោះក្រុម​មិនត្រឹមត្រូវ"
-
-msgid "Connection Closed"
-msgstr "បានបិទ​ការ​តភ្ជាប់"
-
-msgid "Waiting for reply..."
-msgstr "កំពុង​រង់ចាំ​ការ​ឆ្លើយតប..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "TOC បាន​ត្រឡប់​ពី​ការ​ផ្អាក​របស់​វា ។ ឥឡូវ​អ្នក​ផ្ញើសារ​ម្ដង​ទៀត ។"
-
-msgid "Password Change Successful"
-msgstr "ផ្លាស់ប្ដូរ​ពាក្យ​សម្ងាត់​ដោយ​ជោគជ័យ"
-
-msgid "_Group:"
-msgstr " ក្រុម ៖"
-
-msgid "Get Dir Info"
-msgstr "យក​ព័ត៌មាន Dir"
-
-msgid "Set Dir Info"
-msgstr "កំណត់​ព័ត៌មាន Dir"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "មិន​អាច​បើក %s ដើម្បីសរសេរ​បានទេ !"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "បានបរាជ័យ​ក្នុងការ​ផ្ទេរ​ឯកសារ ផ្នែកផ្សេង​ប្រហែលជា​បានបោះបង់​ហើយ "
-
-msgid "Could not connect for transfer."
-msgstr "មិនអាច​តភ្ជាប់​ដើម្បី​ផ្ទេរ​បានទេ ។"
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "មិនអាច​សរសេរ​បឋមកថា​ឯកសារ​បានទេ ។ ឯកសារ​នឹង​មិន​ត្រូវ​បានផ្ទេរ​ទេ ។"
-
-msgid "Save As..."
-msgstr "រក្សាទុកជា..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s ស្នើ %s ឲ្យ​ទទួលឯកសារ %d ៖ %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s ស្នើ​អ្នក​ឲ្យ​ផ្ញើ​ឯកសារ​ឲ្យ​ពួកវា"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "កម្មវិធី​ពិធីការ TOC"
-
-#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr "%s បានផ្ញើ​ការ​អញ្ជើញ​អ្នក​ឲ្យ​បើក​ម៉ាស៊ីន​ថត​តាមបណ្ដាញ ដែល​មិន​ត្រូវ​បាន​គាំទ្រ​នៅ​ឡើយទេ ។"
+msgid "Your SMS was not delivered"
+msgstr ""
+
msgid "Your Yahoo! message did not get sent."
msgstr "យ៉ាហ៊ូ​របស់​អ្នក ! សារ​មិន​ត្រូវ​បានផ្ញើ​ទេ ។"
@@ -9824,9 +9841,6 @@ msgstr "កុំ​រំខាន"
msgid "Extended away"
msgstr "បាន​ពង្រីក​ការ​ចាកឆ្ងាយ"
-msgid "Mobile"
-msgstr "ចល័ត"
-
msgid "Listening to music"
msgstr "ស្ដាប់​តន្ត្រី"
@@ -9868,18 +9882,6 @@ msgstr "+++ %s ក្លាយ​ជា​មិន​ទំនេរ"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "កំហុស​ក្នុងការ​អាន %s"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"មាន​កំហុស​ក្នុងការ​អាន​ %s របស់​​អ្នក ។ ពួកវា​មិន​ត្រូវ​បានផ្ទុក​ទេ ហើយ​ឯកសារ​ចាស់​ត្រូវ​បាន​ប្ដូរ​ឈ្មោះ​ទៅជា %"
-"s~."
-
msgid "Calculating..."
msgstr "កំពុង​គណនា..."
@@ -9948,6 +9950,12 @@ msgstr "កំហុស​ក្នុងការ​សរសេរ​ទៅ​
msgid "Unable to connect to %s: %s"
msgstr "មិនអាច​តភ្ជាប់​ទៅកាន់ %s: %s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr "ម៉ាស៊ីន​បម្រើ​ត្រូវការ TLS/SSL ដើម្បី​ចូល ។ រក​មិនឃើញការគាំទ្រ TLS/SSL នោះ​ទេ ។"
+
#, c-format
msgid " - %s"
msgstr " - %s"
@@ -9981,6 +9989,18 @@ msgstr "បានបដិសេធ​កា​រតភ្ជាប់ ។"
msgid "Address already in use."
msgstr "អាសយដ្ឋាន​កំពុង​ប្រើ​ហើយ ។"
+#, c-format
+msgid "Error Reading %s"
+msgstr "កំហុស​ក្នុងការ​អាន %s"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"មាន​កំហុស​ក្នុងការ​អាន​ %s របស់​​អ្នក ។ ពួកវា​មិន​ត្រូវ​បានផ្ទុក​ទេ ហើយ​ឯកសារ​ចាស់​ត្រូវ​បាន​ប្ដូរ​ឈ្មោះ​ទៅជា %"
+"s~."
+
msgid "Internet Messenger"
msgstr "កម្មវិធី​ផ្ញើសារ​អ៊ីនធឺណិត"
@@ -10023,10 +10043,8 @@ msgstr "ការ​ជូនដំណឹង​សំបុត្រ​ថ្ម
msgid "Use this buddy _icon for this account:"
msgstr "ប្រើ​រូបតំណាង​មិត្តភក្ដិ​នេះ​សម្រាប់គណនី​នេះ ៖"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "ជម្រើស %s"
+msgid "_Advanced"
+msgstr "កម្រិត​ខ្ពស់"
msgid "Use GNOME Proxy Settings"
msgstr "ប្រើ​ការ​កំណត់​ប្រូកស៊ី​របស់ GNOME"
@@ -10061,9 +10079,6 @@ msgstr "ប្រសិនបើ​អ្នក​មើល​ទៅ​ពិត
msgid "you can see the butterflies mating"
msgstr "អ្នកអាច​មើល​ butterflies mating"
-msgid "Proxy Options"
-msgstr "ជម្រើសប្រូកស៊ី"
-
msgid "Proxy _type:"
msgstr "ប្រភេទ​ប្រូកស៊ី ៖"
@@ -10091,8 +10106,9 @@ msgstr "មូលដ្ឋាន"
msgid "Create _this new account on the server"
msgstr "បង្កើត​គណនី​ថ្មី​នៅ​លើ​ម៉ាស៊ីនបម្រើ"
-msgid "_Advanced"
-msgstr "កម្រិត​ខ្ពស់"
+#, fuzzy
+msgid "_Proxy"
+msgstr "ប្រូកស៊ី"
msgid "Enabled"
msgstr "បានបើក"
@@ -10164,6 +10180,17 @@ msgstr "យក​ព័ត៌មាន"
msgid "I_M"
msgstr "IM"
+#, fuzzy
+msgid "_Audio Call"
+msgstr "បន្ថែម​ការជជែក"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "ជជែក​តាម​វីដេអូ"
+
msgid "_Send File..."
msgstr "ផ្ញើ​ឯកសារ..."
@@ -10298,6 +10325,10 @@ msgstr "/ឧបករណ៍/ក្រុមមិត្តភក្ដិ"
msgid "/Tools/_Certificates"
msgstr "/ឧបករណ៍/វិញ្ញាបនបត្រ"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/ឧបករណ៍/សញ្ញាណ​អារម្មណ៍"
+
msgid "/Tools/Plu_gins"
msgstr "/ឧបករណ៍/កម្មវិធី​ជំនួយ"
@@ -10307,9 +10338,6 @@ msgstr "/ឧបករណ៍/ចំណូល​ចិត្ត"
msgid "/Tools/Pr_ivacy"
msgstr "/ឧបករណ៍/ភាព​ឯកជន"
-msgid "/Tools/Smile_y"
-msgstr "/ឧបករណ៍/សញ្ញាណ​អារម្មណ៍"
-
msgid "/Tools/_File Transfers"
msgstr "/ឧបករណ៍/ការ​ផ្ទេរ​ឯកសារ"
@@ -10426,8 +10454,8 @@ msgstr "ដោយដៃ"
msgid "By status"
msgstr "តាម​ស្ថានភាព"
-msgid "By log size"
-msgstr "តាម​ទំហំ​កំណត់ហេតុ"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10443,6 +10471,9 @@ msgstr "តភ្ជាប់​ឡើង​វិញ"
msgid "Re-enable"
msgstr "បើក​ឡើង​វិញ"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr "សូម​ស្វាគមន៍ការ​​ត្រឡប់​មក​វិញ !"
@@ -10526,6 +10557,9 @@ msgstr ""
msgid "A_lias:"
msgstr "ឈ្មោះ​ក្លែងក្លាយ ៖"
+msgid "_Group:"
+msgstr " ក្រុម ៖"
+
msgid "Auto_join when account becomes online."
msgstr "ចូល​ដោយ​ស្វ័យ​ប្រវត្តិ​ នៅពេល​គណនី​ក្លាយ​ជា​នៅ​លើ​បណ្ដាញ ។"
@@ -10576,12 +10610,6 @@ msgstr "អ្នកបច្ចុប្បន្នមិនបាន​ចូ
msgid "Invite Buddy Into Chat Room"
msgstr "អញ្ជើញ​មិត្តភក្ដិ​ទៅ​ក្នុង​បន្ទប់​ជជែក"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr "សូម​បញ្ចូល​ឈ្មោះ​របស់​អ្នកប្រើ​ដែល​អ្នក​ចង់​អញ្ជើញ រួម​ជា​មួយ​នឹង​សារ​អញ្ជើញ​ជា​ជម្រើស ។"
-
msgid "_Buddy:"
msgstr "មិត្តភក្ដិ ៖"
@@ -10656,6 +10684,22 @@ msgstr "/សន្ទនា/រក្សាទុកជា..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/សន្ទនា/ជំម្រះ"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/សន្ទនា/ផ្សេងៗ​ទៀត"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/សន្ទនា/ផ្សេងៗ​ទៀត"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/សន្ទនា/ផ្សេងៗ​ទៀត"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/សន្ទនា/មើល​កំណត់​ហេតុ"
+
msgid "/Conversation/Se_nd File..."
msgstr "/សន្ទនា/ផ្ញើ​ឯកសារ..."
@@ -10728,6 +10772,18 @@ msgstr "/សន្ទនា"
msgid "/Conversation/View Log"
msgstr "/សន្ទនា/មើល​កំណត់​ហេតុ"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/សន្ទនា/ផ្សេងៗ​ទៀត"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/សន្ទនា/មើល​កំណត់​ហេតុ"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/សន្ទនា/ផ្សេងៗ​ទៀត"
+
msgid "/Conversation/Send File..."
msgstr "/សន្ទនា/ផ្ញើ​ឯកសារ..."
@@ -10909,6 +10965,9 @@ msgstr "សិល្បករ"
msgid "Ka-Hing Cheung"
msgstr "Ka-Hing Cheung"
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "គាំទ្រ"
@@ -11048,6 +11107,10 @@ msgstr "ហ្សកហ្ស៊ី"
msgid "Ubuntu Georgian Translators"
msgstr "អ្នកប្រើ​ប្រែ​​ហ្សកហ្ស៊ី​របស់​អូប៊ុនទូ"
+#, fuzzy
+msgid "Khmer"
+msgstr "ផ្សេងៗទៀត"
+
msgid "Kannada"
msgstr "កិណាដា"
@@ -11501,15 +11564,6 @@ msgstr "ពុម្ពអក្សរ​ត្រូវ​ប្រើ​សម
msgid "Enable typing notification"
msgstr "អនុញ្ញាត​វាយ​ការជូនដំណឹង"
-msgid "_Copy Email Address"
-msgstr "ចម្លង​អាសយដ្ឋាន​អ៊ីមែល"
-
-msgid "_Open Link in Browser"
-msgstr "បើក​តំណ​នៅ​ក្នុង​កម្មវិធីរុករក"
-
-msgid "_Copy Link Location"
-msgstr "ចម្លង​ទីតាំង​តំណ"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -11748,13 +11802,14 @@ msgstr "រកមើល​ថត​កំណត់​ហេតុ"
msgid "%s %s. Try `%s -h' for more information.\n"
msgstr "%s %s ។ ព្យាយាម `%s -h' សម្រាប់​ព័ត៌មាន​បន្ថែម ។\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -11778,13 +11833,14 @@ msgstr ""
" --display=DISPLAY ការ​បង្ហាញ X ត្រូវ​ប្រើ\n"
" -v, --version បង្ហាញ​កំណែ​បច្ចុប្បន្ន ហើយ​ចេញ\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -11843,11 +11899,23 @@ msgstr "Pidgin"
msgid "Exiting because another libpurple client is already running.\n"
msgstr "ចេញ ដោយ​សារ​តែ​ម៉ាស៊ីន​ភ្ញើ libpurple ផ្សេង​ទៀត​កំពុង​រត់​រួច​ហើយ ។\n"
-msgid "Open All Messages"
-msgstr "បើក​សារ​ទាំងអស់"
+msgid "/_Media"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">អ្នក​មាន​សំបុត្រ !</span>"
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "កំពុង​គណនា..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -11874,6 +11942,27 @@ msgid ""
"The 'Manual' browser command has been chosen, but no command has been set."
msgstr "ពាក្យ​បញ្ជា​កម្មវិធី​រុករក 'ដោយដៃ' ត្រូវ​បាន​ជ្រើស ប៉ុន្តែ​គ្មាន​ពាក្យ​បញ្ជា​ត្រូវ​បាន​ជ្រើស​ទេ ។"
+msgid "Open All Messages"
+msgstr "បើក​សារ​ទាំងអស់"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">អ្នក​មាន​សំបុត្រ !</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "ក្រុមមិត្តភក្ដិ​ថ្មី"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">អ្នក​មាន​សំបុត្រ !</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "មិន​ស្គាល់​សារ"
+
msgid "The following plugins will be unloaded."
msgstr "កម្មវិធី​ជំនួយ​ដូច​ខាងក្រោម​នឹង​ត្រូវ​បានផ្ទុក​ឡើង ។"
@@ -11920,6 +12009,10 @@ msgstr "<b>សេចក្ដី​លម្អិត​កម្មវិធី
msgid "Select a file"
msgstr "ជ្រើស​ឯកសារ"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "កែសម្រួល​ក្រុម​មិត្តភក្ដិ"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "ក្រុម​នៅ​លើ​អ្នកណា"
@@ -11990,6 +12083,50 @@ msgstr "កើតឡើង​វិញ"
msgid "Pounce Target"
msgstr "ក្រុម​គោល​ដៅ​"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "ចាប់ផ្ដើម​វាយ"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "ផ្អាក​ខណៈពេល​វាយ"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "ចូល"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s បាន​ត្រឡប់​ពី​ស្ថានភាព​ទំនេរ (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "ត្រឡប់​ពី​ការ​ចាកឆ្ងាយ"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "ឈប់​វាយ"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "ចេញទ"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "ក្លាយ​ជា​ទំនេរ"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "នៅពេល​ចាកឆ្ងាយ"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "ផ្ញើសារ"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "មិនស្គាល់​ព្រឹត្តិការណ៍​ក្រុម ។ សូម​រាយការណ៍​វា !"
+
msgid "Smiley theme failed to unpack."
msgstr "ស្បែក​សញ្ញាណអារម្មណ៍​បានបរាជ័យ​ក្នុងការ​ស្រាយ ។"
@@ -12012,6 +12149,12 @@ msgstr "ផ្លូវ​កាត់​ក្តារចុច"
msgid "Cl_ose conversations with the Escape key"
msgstr "បិទ​ការ​សន្ទនា​ដោយ​ប្រើ​គ្រាប់ចុច​គេច (Escape)"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "បញ្ជី​មិត្តភក្ដិ"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "រូបតំណាង​ថាស​ប្រព័ន្ធ"
@@ -12121,9 +12264,6 @@ msgstr "មិនអាច​ចាប់ផ្ដើម​កម្មវិធ
msgid "Cannot start browser configuration program."
msgstr "មិនអាច​ចាប់ផ្ដើម​កម្មវិធី​កំណត់​រចនាសម្ព័ន្ធ​កម្មវិធី​រុករក​បានទេ ។"
-msgid "ST_UN server:"
-msgstr "ម៉ាស៊ីនបម្រើ STUN ៖"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">ឧទាហរណ៍ ៖ stunserver.org</span>"
@@ -12148,6 +12288,10 @@ msgstr "ច្រក​ចាប់ផ្ដើម ៖"
msgid "_End port:"
msgstr "ច្រក​បញ្ចប់ ៖"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr "ម៉ាស៊ីនបម្រើ​ប្រូកស៊ី &amp; កម្មវិធី​រុករក​"
@@ -12336,12 +12480,12 @@ msgstr "នៅពេល​អ្នកទាំង​ពីរ​ចាកឆ្
msgid "Auto-away"
msgstr "ចាកឆ្ងាយ​ស្វ័យ​ប្រវត្តិ"
-msgid "Change status when _idle"
-msgstr "ផ្លាស់ប្ដូរ​ស្ថានភាព​នៅពេល​ទំនេរ"
-
msgid "_Minutes before becoming idle:"
msgstr "ប៉ុន្មាន​នាទី​មុន​នឹង​ក្លាយជា​ទំនេរ ៖"
+msgid "Change status when _idle"
+msgstr "ផ្លាស់ប្ដូរ​ស្ថានភាព​នៅពេល​ទំនេរ"
+
msgid "Change _status to:"
msgstr "ផ្លាស់ប្ដូរ​ស្ថានភាព​ទៅជា ៖"
@@ -12489,6 +12633,12 @@ msgstr "រក្សាទុក​ការ​ប្រើ"
msgid "Status for %s"
msgstr "ស្ថានភាព​សម្រាប់ %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
msgid "Custom Smiley"
msgstr "សញ្ញា​អារម្មណ៍​ផ្ទាល់ខ្លួន"
@@ -12498,14 +12648,14 @@ msgstr "ត្រូវការ​ទិន្នន័យ​បន្ថែម
msgid "Please provide a shortcut to associate with the smiley."
msgstr "សូម​ផ្ដល់​នូវ​ផ្លូវកាត់​ដើម្បី​ភ្ជាប់​ជា​មួយ​នឹង​សញ្ញា​អារម្មណ៍ ។"
-msgid "Duplicate Shortcut"
-msgstr "ផ្លូវកាត់​ស្ទួន"
-
+#, fuzzy, c-format
msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
+"A custom smiley for '%s' already exists. Please use a different shortcut."
msgstr "សញ្ញា​អារម្មណ៍​ផ្ទាល់ខ្លួន​សម្រាប់​ផ្លូវកាត់​ដែល​បាន​ជ្រើស​មាន​រួច​ហើយ ។ សូម​បញ្ជី​ផ្លូវកាត់​ផ្សេង ។"
+msgid "Duplicate Shortcut"
+msgstr "ផ្លូវកាត់​ស្ទួន"
+
msgid "Please select an image for the smiley."
msgstr "សូម​ជ្រើស​រូបភាព​សម្រាប់​សញ្ញាអារម្មណ៍ ។"
@@ -12515,16 +12665,22 @@ msgstr "កែ​សម្រួល​សញ្ញាអារម្មណ៍"
msgid "Add Smiley"
msgstr "បន្ថែម​សញ្ញាអារម្មណ៍"
-msgid "Smiley _Image"
-msgstr "រូបភាព​សញ្ញាអារម្មណ៍"
+#, fuzzy
+msgid "_Image:"
+msgstr "រូបភាព"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr "ផ្លូវ​កាត់​សញ្ញាអារម្មណ៍"
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "ផ្លូវ​កាត់"
msgid "Smiley"
msgstr "សញ្ញាអារម្មណ៍"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "ផ្លូវ​កាត់"
+
msgid "Custom Smiley Manager"
msgstr "កម្មវិធី​គ្រប់គ្រង​សញ្ញាអារម្មណ៍​ផ្ទាល់ខ្លួន"
@@ -12642,6 +12798,16 @@ msgid ""
"Failed to load image '%s': reason not known, probably a corrupt image file"
msgstr "បានបរាជ័យ​ក្នុងការ​ផ្ទុក​រូបភាព '%s' ៖ មិនស្គាល់ហេតុផល ប្រហែលជា​ឯកសារ​រូបភាព​តូច"
+#, fuzzy
+msgid "_Open Link"
+msgstr "បើក​តំណ​នៅ​ក្នុង ៖"
+
+msgid "_Copy Link Location"
+msgstr "ចម្លង​ទីតាំង​តំណ"
+
+msgid "_Copy Email Address"
+msgstr "ចម្លង​អាសយដ្ឋាន​អ៊ីមែល"
+
msgid "Save File"
msgstr "រក្សា​​ទុក​​​ឯកសារ"
@@ -13634,3 +13800,173 @@ msgstr "ផ្ញើ​ និង​ទទួល​ XMPP stanzas ដើម ។"
#. * description
msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr "កម្មវិធី​ជំនួយ​នេះ​មានប្រយោជន៍​សម្រាប់បំបាត់​កំហុស​ម៉ាស៊ីនបម្រើ ឬ​ម៉ាស៊ីន​ភ្ញៀវ XMPP ។"
+
+#~ msgid "Invite message"
+#~ msgstr "សារ​អញ្ជើញ"
+
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "សូម​បញ្ចូល​ឈ្មោះ​អ្នកប្រើ​ដែល​អ្នកចង់​អញ្ជើញ\n"
+#~ "រួម​ជា​មួយ​នឹង​សារ​អញ្ជើញ​ជា​ជម្រើស ។"
+
+#~ msgid "Looking up %s"
+#~ msgstr "រកមើល %s"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "បាន​បរាជ័យ​ក្នុងការ​តភ្ជាប់ %s"
+
+#~ msgid "Signon: %s"
+#~ msgstr "ចូល ៖ %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "មិនអាច​សរសេរ​ឯកសារ %s បាននោះទេ ។"
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "មិន​អាច​អាន​ឯកសារ %s បានទេ ។"
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "សារ​វែងពេក បានកាត់​ឲ្យ​ខ្លីចុងក្រោយ​ត្រឹម %s បៃ ។"
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s បច្ចុប្បន្នមិន​បានចូល​ទេ ។"
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "មិន​បានអនុញ្ញាត​ការ​ព្រមានរបស់ %s ទេ ។"
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr "សារ​ត្រូវ​បានទម្លាក់ អ្នកបានលើស​ដែន​កំណត់ល្បឿន​របស់​ម៉ាស៊ីនបម្រើ ។"
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "មិនមានការ​​ជជែក​នៅ​ក្នុង %s ទេ ។"
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "អ្នកកំពុង​ផ្ញើសារ​យ៉ាង​លឿន​ទៅ %s ។"
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "អ្នកបាត់ IM ពី %s ពីព្រោះ​វា​ធំពេក ។"
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr "អ្នកបានបាត់ IM ពី %s ពីព្រោះ​វា​លឿន​ពេក ។"
+
+#~ msgid "Failure."
+#~ msgstr "បរាជ័យ ។"
+
+#~ msgid "Too many matches."
+#~ msgstr "មានការ​ផ្គូផ្គង​ច្រើនពេក ។"
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "ត្រូវការ​ឧបករណ៍​បញ្ជាក់​បន្ថែមទៀត ។"
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "សេវា Dir មិន​អាច​ប្រើបាន​ជា​បណ្ដោះអាសន្ន ។"
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "បានដាក់កម្ងិរ​ការ​រកមើល​អ៊ីមែល ។"
+
+#~ msgid "Keyword ignored."
+#~ msgstr "បានមិនអើពើ​ពាក្យគន្លឹះ ។"
+
+#~ msgid "No keywords."
+#~ msgstr "គ្មាន​ពាក្យ​គន្លឹះ ។"
+
+#~ msgid "User has no directory information."
+#~ msgstr "អ្នកប្រើ​មិនមាន​​ព័ត៌មាន​ថត​ទៀតទេ ។"
+
+#~ msgid "Country not supported."
+#~ msgstr "មិន​បានគាំទ្រ​ប្រទេស​ទេ ។"
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "មិនស្គាល់​ភាព​បរាជ័យ ៖ %s ។"
+
+#~ msgid "Incorrect username or password."
+#~ msgstr "ឈ្មោះ​អ្នកប្រើ ឬ​ពាក្យសម្ងាត់​មិន​ត្រឹមត្រូវ ។"
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "សេវា​មិន​អាច​ប្រើបាន​ជា​បណ្ដោះអាសន្ន ។"
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "កម្រិត​ព្រមាន​របស់​អ្នកបច្ចុប្បន្ន​ខ្ពស់​ពេក​ត្រូវ​ចូល ។"
+
+#~ 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 ""
+#~ "អ្នក​បានតភ្ជាប់​ និង​ផ្ដាច់​ញឹកញាប់ពេក ។ រង់ចាំ​រយៈពេល​ ១០ នាទី ហើយ​ព្យាយាម​ម្ដង​ទៀត ។ ប្រសិន​បើ​"
+#~ "អ្នកបន្ត​ព្យាយាម អ្នក​នឹង​ត្រូវ​រង់ចាំ​យូរ​ជាង​នេះ ។"
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "មិនស្គាល់​កំហុស​ក្នុងការ​ចូល​បានកើតឡើង ៖ %s ។"
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "មិនស្គាល់​កំហុស %d ដែល​បានកើត​ឡើង ។ ព័ត៌មាន ៖ %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "ឈ្មោះក្រុម​មិនត្រឹមត្រូវ"
+
+#~ msgid "Connection Closed"
+#~ msgstr "បានបិទ​ការ​តភ្ជាប់"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "កំពុង​រង់ចាំ​ការ​ឆ្លើយតប..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "TOC បាន​ត្រឡប់​ពី​ការ​ផ្អាក​របស់​វា ។ ឥឡូវ​អ្នក​ផ្ញើសារ​ម្ដង​ទៀត ។"
+
+#~ msgid "Password Change Successful"
+#~ msgstr "ផ្លាស់ប្ដូរ​ពាក្យ​សម្ងាត់​ដោយ​ជោគជ័យ"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "យក​ព័ត៌មាន Dir"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "កំណត់​ព័ត៌មាន Dir"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "មិន​អាច​បើក %s ដើម្បីសរសេរ​បានទេ !"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr "បានបរាជ័យ​ក្នុងការ​ផ្ទេរ​ឯកសារ ផ្នែកផ្សេង​ប្រហែលជា​បានបោះបង់​ហើយ "
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "មិនអាច​តភ្ជាប់​ដើម្បី​ផ្ទេរ​បានទេ ។"
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "មិនអាច​សរសេរ​បឋមកថា​ឯកសារ​បានទេ ។ ឯកសារ​នឹង​មិន​ត្រូវ​បានផ្ទេរ​ទេ ។"
+
+#~ msgid "Save As..."
+#~ msgstr "រក្សាទុកជា..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s ស្នើ %s ឲ្យ​ទទួលឯកសារ %d ៖ %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s ស្នើ​អ្នក​ឲ្យ​ផ្ញើ​ឯកសារ​ឲ្យ​ពួកវា"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "កម្មវិធី​ពិធីការ TOC"
+
+#~ msgid "%s Options"
+#~ msgstr "ជម្រើស %s"
+
+#~ msgid "Proxy Options"
+#~ msgstr "ជម្រើសប្រូកស៊ី"
+
+#~ msgid "By log size"
+#~ msgstr "តាម​ទំហំ​កំណត់ហេតុ"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "បើក​តំណ​នៅ​ក្នុង​កម្មវិធីរុករក"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "ម៉ាស៊ីនបម្រើ STUN ៖"
+
+#~ msgid "Smiley _Image"
+#~ msgstr "រូបភាព​សញ្ញាអារម្មណ៍"
+
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "ផ្លូវ​កាត់​សញ្ញាអារម្មណ៍"
diff --git a/po/kn.po b/po/kn.po
index 1676d5a8cb..ef5f7a0cdf 100644
--- a/po/kn.po
+++ b/po/kn.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: kn\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
+"POT-Creation-Date: 2009-04-30 10:38-0400\n"
"PO-Revision-Date: 2007-01-28 17:51+0530\n"
"Last-Translator: Kannada Localization Team <translation@sampada.info>\n"
"Language-Team: Kannada <translation@sampada.info>\n"
@@ -32,7 +32,7 @@ msgid ""
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -609,21 +609,6 @@ msgid "Send To"
msgstr "_ಇವರಿಗೆ ಕಳಿಸಿ"
#, fuzzy
-msgid "Invite message"
-msgstr "ಸಂದೇಶದಲ್ಲಿ ಸೇರಿಸಿ"
-
-msgid "Invite"
-msgstr "ಆಮಂತ್ರಿಸಿ"
-
-#, fuzzy
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"ನೀವು ಆಮಂತ್ರಿಸಬಯಸುವ ಬಳಕೆದಾರನ ಹೆಸರು ಬರೆಯಿರಿ (ಬೇಕೆಂದರೆ ನೀವು ಬಯಸುವ ಆಮಂತ್ರಣ "
-"ಸಂದೇಶದೊಂದಿಗೆ)"
-
-#, fuzzy
msgid "Conversation"
msgstr "ಮಾತುಕತೆಗಳು"
@@ -881,6 +866,43 @@ msgstr "ಮಾತುಕತೆಗಳು"
msgid "System Log"
msgstr "ಸಿಸ್ಟಂ ಲಾಗ್ "
+#, fuzzy
+msgid "Calling ... "
+msgstr "ಲೆಖ್ಕಹಾಕುತ್ತಿದೆ"
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+#, fuzzy
+msgid "Accept"
+msgstr "ಸ್ವೀಕರಿಸಿ(A)"
+
+# ತಿರಸ�ಕರಿಸ� ಸರಿಯಾದ ಶಬ�ದ . ನಿರಾಕರಿಸ� ಅಂದರೆ ಡಿನೈ ! .
+msgid "Reject"
+msgstr "ತಿರಸ್ಕರಿಸು"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "ನೀವು %s%s ವಾಹಿನಿಯನ್ನು ತೊರೆದಿದ್ದೀರಿ"
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "ಇ-ಮೇಯ್ಲುಗಳು"
@@ -916,6 +938,9 @@ msgstr "ಮುಂದುವರಿಸಿ"
msgid "IM"
msgstr "ತಕ್ಷಣ ದೂತ"
+msgid "Invite"
+msgstr "ಆಮಂತ್ರಿಸಿ"
+
msgid "(none)"
msgstr "(ಯಾವುದೂ ಇಲ್ಲ}"
@@ -1141,7 +1166,6 @@ msgstr " %s ಆಚೆ ಹೋಗಿದ್ದಾರೆ . (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s ನಿಮಗೆ ಒಂದು ಸಂದೇಶ ಕಳಿಸಿದ್ದಾರೆ. (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "ಗುರುತುಹಿಡಿಯಲಾಗದ ಪೌನ್ಸ್ ಈವೆಂಟ್; ಇದನ್ನು ವರದಿ ಮಾಡಿ!"
@@ -1191,7 +1215,6 @@ msgstr ""
msgid "Change status to"
msgstr "ಸ್ಥಿತಿಯನ್ನು ಹೀಗೆ ಬದಲಿಸಿ(s):"
-#. Conversations
msgid "Conversations"
msgstr "ಮಾತುಕತೆಗಳು"
@@ -1526,7 +1549,6 @@ msgstr ""
"ಈ ಪ್ಲಗ್ಗಿನ್, ಹೊಸ ಮಾತುಕತೆ ಶುರುವಾದಾಗ ಹಿಂದಿನ ಮಾತುಕತೆಯನ್ನು ಸದ್ಯದ ಮಾತುಕತೆಯೊಂದಿಗೆ "
"ಸೇರಿಸುವದು"
-#, c-format
msgid "Online"
msgstr "ಆನ್‍ಲೈನ್"
@@ -1574,6 +1596,28 @@ msgstr ""
msgid "Lastlog plugin."
msgstr ""
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "ಖಾತೆಗಳು"
@@ -1672,15 +1716,6 @@ msgstr "ಮಾತುಕತೆಗೆ ಆಮಂತ್ರಣ ಸ್ವೀಕರಿ
msgid "SSL Certificate Verification"
msgstr ""
-#. Number of actions
-#, fuzzy
-msgid "Accept"
-msgstr "ಸ್ವೀಕರಿಸಿ(A)"
-
-# ತಿರಸ�ಕರಿಸ� ಸರಿಯಾದ ಶಬ�ದ . ನಿರಾಕರಿಸ� ಅಂದರೆ ಡಿನೈ ! .
-msgid "Reject"
-msgstr "ತಿರಸ್ಕರಿಸು"
-
msgid "_View Certificate..."
msgstr ""
@@ -1819,6 +1854,18 @@ msgstr "%s ಕೋಣೆಯಿಂದ ಹೊರಹೋದರು."
msgid "%s left the room (%s)."
msgstr "%s ಇವರು (%s) ಕೋಣೆಯಿಂದ ಹೊರಹೋದರು."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "ಅಧಿವೇಶನಕ್ಕೆ ಆಮಂತ್ರಿಸಿ"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"ನೀವು ಆಮಂತ್ರಿಸಬಯಸುವ ಬಳಕೆದಾರನ ಹೆಸರು ಬರೆಯಿರಿ (ಬೇಕೆಂದರೆ ನೀವು ಬಯಸುವ ಆಮಂತ್ರಣ "
+"ಸಂದೇಶದೊಂದಿಗೆ)"
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "%s ಸಂಪರ್ಕ ಪಡೆಯಲು ವಿಫಲ."
@@ -1947,7 +1994,6 @@ msgstr " %s ಕಡತವನ್ನು %s ರಿಗೆ ವರ್ಗಾಯಿಸ
msgid "Transfer of file %s complete"
msgstr "%s ಕಡತದ ವರ್ಗಾವಣೆ ಸಂಪೂರ್ಣಗೊಂಡಿದೆ."
-#, c-format
msgid "File transfer complete"
msgstr "ಕಡತ ವರ್ಗಾವಣೆ ಪೂರ್ತಿ."
@@ -1955,7 +2001,6 @@ msgstr "ಕಡತ ವರ್ಗಾವಣೆ ಪೂರ್ತಿ."
msgid "You canceled the transfer of %s"
msgstr " %s ದ ವರ್ಗಾವಣೆಯನ್ನು ನೀವು ರದ್ದು ಮಾಡಿದಿರಿ"
-#, c-format
msgid "File transfer cancelled"
msgstr "ಕಡತದ ವರ್ಗಾವಣೆ ರದ್ದಾಗಿದೆ."
@@ -2144,7 +2189,6 @@ msgstr "(%s) %s <ತಂತಾನೇ-ಉತ್ತರ>: %s\n"
msgid "You are using %s, but this plugin requires %s."
msgstr ""
-#, c-format
msgid "This plugin has not defined an ID."
msgstr ""
@@ -2619,6 +2663,32 @@ msgstr ""
msgid "Do not ask. Always save in pounce."
msgstr ""
+#, fuzzy
+msgid "One Time Password"
+msgstr "ಪ್ರವೇಶಪದ ಬರೆಯಿರಿ"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2818,7 +2888,6 @@ msgid ""
"Unable to establish connection with the local mDNS server. Is it running?"
msgstr ""
-#. Creating the options for the protocol
msgid "First name"
msgstr "ಮೊದಲ ಹೆಸರು"
@@ -2852,6 +2921,11 @@ msgstr ""
msgid "Purple Person"
msgstr "ಹೊಸ ವ್ಯಕ್ತಿ"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "ಇರುವ ಸ್ಥಳ"
+
msgid "Bonjour"
msgstr ""
@@ -3008,13 +3082,13 @@ msgstr "ಗೆಳೆಯ %s ರಿಗಾಗಿ ಒಂದು ಮಾತುಕತ
msgid "Add to chat..."
msgstr "ಮಾತುಕತೆಗೆ ಸೇರಿಸಿ..."
+#. Global
msgid "Available"
msgstr "ಲಭ್ಯ"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "ಆಚೆ"
@@ -3356,6 +3430,17 @@ msgid ""
"invalid characters."
msgstr ""
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "ಈ ಮಾತುಕತೆ ಹೆಸರು ಆಗಲೇ ಬಳಕೆಯಲ್ಲಿದೆ"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "ಅಡ್ಡಹೆಸರು"
+
msgid "Cannot change nick"
msgstr "ಅಡ್ದ ಹೆಸರು ಬದಲಿಸಲಾಗದು "
@@ -3588,6 +3673,36 @@ msgstr ""
msgid "SASL error"
msgstr ""
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "ಕಾರಣ ಕೊಟ್ಟಿಲ್ಲ"
+
+msgid "Unsupported version of BOSH protocol"
+msgstr ""
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr "ಸಂಪರ್ಕ ಸಾಧ್ಯವಗಲಿಲ್ಲ"
+
+#, fuzzy, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr "ಸಂಪರ್ಕ ಸಾಧ್ಯವಗಲಿಲ್ಲ"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "ಸಂಪರ್ಕ ಸಾಧ್ಯವಗಲಿಲ್ಲ"
+
+msgid "Unable to create socket"
+msgstr ""
+
+msgid "Write error"
+msgstr "ಬರೆಯುವಲ್ಲಿ ದೋಷ"
+
msgid "Full Name"
msgstr "ಪೂರ್ಣ ಹೆಸರು"
@@ -3653,6 +3768,10 @@ msgstr "ಕಕ್ಷಿ"
msgid "Operating System"
msgstr "ಕಾರ್ಯಾಚರಣೆ ವ್ಯವಸ್ಥೆ"
+#, fuzzy
+msgid "Local Time"
+msgstr "ಸ್ಥಳೀಯ ಕಡತ:"
+
msgid "Last Activity"
msgstr ""
@@ -3884,7 +4003,6 @@ msgstr ""
msgid "Extended Away"
msgstr ""
-#, c-format
msgid "Do Not Disturb"
msgstr "ಡಿಸ್ಟರ್ಬ್ ಮಾಡ್ಬೇಡಿ"
@@ -4007,9 +4125,6 @@ msgstr "ಕೋಣೆಗಳನ್ನು ಹುಡುಕಿ"
msgid "You require encryption, but it is not available on this server."
msgstr ""
-msgid "Write error"
-msgstr "ಬರೆಯುವಲ್ಲಿ ದೋಷ"
-
#, fuzzy
msgid "Ping timeout"
msgstr "ಸಾದಾ ಪಠ್ಯ"
@@ -4017,13 +4132,10 @@ msgstr "ಸಾದಾ ಪಠ್ಯ"
msgid "Read Error"
msgstr "ಓದುವಲ್ಲಿ ದೋಷ"
-#, fuzzy, c-format
+#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
-msgstr "ಸಂಪರ್ಕ ಸಾಧ್ಯವಗಲಿಲ್ಲ"
-
-msgid "Unable to create socket"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
msgid "Invalid XMPP ID"
@@ -4032,6 +4144,10 @@ msgstr ""
msgid "Invalid XMPP ID. Domain must be set."
msgstr ""
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "ಸರ್ವರ್ ಅನ್ನು ಸಂಪರ್ಕಿಸಲು ಆಗಲಿಲ್ಲ"
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr " %s@%s ಯ ನೋಂದಣಿ ಯಶಸ್ವಿ"
@@ -4124,9 +4240,18 @@ msgstr "ಧೃಡೀಕರಿಸಲಾಗುತ್ತಿದೆ"
msgid "Re-initializing Stream"
msgstr ""
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr "ಅಧಿಕಾರ ಪಡೆದಿಲ್ಲ"
+msgid "Mood"
+msgstr "ಲಹರಿ"
+
+msgid "Now Listening"
+msgstr ""
+
msgid "Both"
msgstr ""
@@ -4148,12 +4273,6 @@ msgstr "ಏನೂ ಇಲ್ಲ"
msgid "Subscription"
msgstr "ಚಂದಾದಾರಿಕೆ"
-msgid "Mood"
-msgstr "ಲಹರಿ"
-
-msgid "Now Listening"
-msgstr ""
-
#, fuzzy
msgid "Mood Text"
msgstr "ರಕ್ತದ ಗುಂಪು"
@@ -4395,18 +4514,24 @@ msgstr "ಬಳಕೆದಾರ %s ರನ್ನು ಒದೆಯಲು ಆಗಲಿ
msgid "Unable to ping user %s"
msgstr "%s ಬಳಕೆದಾರರನ್ನು ನಿಷೇಧಿಸಲು ಆಗಲಿಲ್ಲ"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
+msgstr "ಕಡತವನ್ನು %s ರಿಗೆ ಕಳಿಸಲಗಲಿಲ್ಲ , ಬಳಕೆದಾರರು ಕಡತವರ್ಗಾವಣೆ ಬೆಂಬಲಿಸುವದಿಲ್ಲ "
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
+msgstr "ಕಡತವನ್ನು %s ರಿಗೆ ಕಳಿಸಲಗಲಿಲ್ಲ , ಬಳಕೆದಾರರು ಕಡತವರ್ಗಾವಣೆ ಬೆಂಬಲಿಸುವದಿಲ್ಲ "
#, fuzzy, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "ಕಡತವನ್ನು %s ರಿಗೆ ಕಳಿಸಲಗಲಿಲ್ಲ , ಬಳಕೆದಾರರು ಕಡತವರ್ಗಾವಣೆ ಬೆಂಬಲಿಸುವದಿಲ್ಲ "
+#, c-format
+msgid "Buzzing %s..."
+msgstr ""
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
msgid "Buzz"
@@ -4416,9 +4541,35 @@ msgstr ""
msgid "%s has buzzed you!"
msgstr "%s ರವರು ನಿಮ್ಮನ್ನು [%s] ಸೇರಿಸಿದ್ದಾರೆ"
-#, c-format
-msgid "Buzzing %s..."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "%s ರಿಗೆ ಸಂದೇಶವನ್ನು ಕಳಿಸಲಾಗಲಿಲ್ಲ."
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "ಕಡತವನ್ನು %s ರಿಗೆ ಕಳಿಸಲಗಲಿಲ್ಲ , ಬಳಕೆದಾರರು ಕಡತವರ್ಗಾವಣೆ ಬೆಂಬಲಿಸುವದಿಲ್ಲ "
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr "ಕಡತವನ್ನು %s ರಿಗೆ ಕಳಿಸಲಗಲಿಲ್ಲ , ಬಳಕೆದಾರರು ಕಡತವರ್ಗಾವಣೆ ಬೆಂಬಲಿಸುವದಿಲ್ಲ "
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "ನೋಂದಣಿ ವಿಫಲ"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "ನೀವು ಸೇರಬಯಸುವ ಮಾತುಕತೆ ಕುರಿತು ಮಾಹಿತಿ ಕೊಡಿ.\n"
+
+#, fuzzy
+msgid "Select a Resource"
+msgstr "ಒಂದು ಸಂಖ್ಯೆ ಆಯ್ದುಕೊಳ್ಳಿ"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "ಮಾತುಕತೆ ಆರಂಭಿಸಿ(C)"
msgid "config: Configure a chat room."
msgstr "config:ಮಾತುಕತೆ ಕೋಣೆಯನ್ನು ಸಂರಚಿಸಿ"
@@ -4569,6 +4720,21 @@ msgstr "%s ಮಾತುಕತೆ ಸೇರುವಲ್ಲಿ ದೋಷ"
msgid "Error in chat %s"
msgstr " %s ಮಾತುಕತೆಯಲ್ಲಿ ದೋಷ"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "ಕಡತವನ್ನು ತೆರೆಯುವಾಗ ದೋಷವುಂಟಾಯಿತು"
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "ಕಡತ ವರ್ಗಾವಣೆ ವಿಫಲ."
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr " '%s' ಕಡತ ತೆರೆಯಲು ಆಗಲಿಲ್ಲ: %s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr "ಕಡತವನ್ನು %s ರಿಗೆ ಕಳಿಸಲಗಲಿಲ್ಲ , ಬಳಕೆದಾರರು ಕಡತವರ್ಗಾವಣೆ ಬೆಂಬಲಿಸುವದಿಲ್ಲ "
@@ -4592,10 +4758,6 @@ msgstr "ಕಡತವನ್ನು %s ರಿಗೆ ಕಳಿಸಲಗಲಿಲ್
msgid "Please select the resource of %s to which you would like to send a file"
msgstr "ನೀವು ಸೇರಬಯಸುವ ಮಾತುಕತೆ ಕುರಿತು ಮಾಹಿತಿ ಕೊಡಿ.\n"
-#, fuzzy
-msgid "Select a Resource"
-msgstr "ಒಂದು ಸಂಖ್ಯೆ ಆಯ್ದುಕೊಳ್ಳಿ"
-
msgid "Edit User Mood"
msgstr ""
@@ -4635,9 +4797,20 @@ msgstr "ಕ್ರಿಯೆ"
msgid "Select an action"
msgstr "ಆಯ್ಕೆ"
-msgid "Unable to retrieve MSN Address Book"
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr "\"%s\" ಸೇರಿಸಲಾಗಲಿಲ್ಲ. "
+
+msgid "Buddy Add error"
msgstr ""
+#, fuzzy
+msgid "The username specified does not exist."
+msgstr "ಜಾಲವೀಕ್ಷಣಾ ಆದೇಶ \"%s\" ತಪ್ಪಾಗಿದೆ"
+
#, c-format
msgid "Buddy list synchronization issue in %s (%s)"
msgstr ""
@@ -4862,7 +5035,6 @@ msgstr ""
msgid "Passport account not yet verified"
msgstr ""
-#, c-format
msgid "Passport account suspended"
msgstr ""
@@ -4956,6 +5128,13 @@ msgstr "ಮೊಬೈಲ್ ಸಂದೇಶ ಕಳಿಸಿ"
msgid "Page"
msgstr "ಪುಟ"
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "ಕಛೇರಿ ಫ್ಯಾಕ್ಸ"
+
msgid "Has you"
msgstr ""
@@ -4996,6 +5175,14 @@ msgstr "ವಿಳಾಸ"
msgid "Album"
msgstr ""
+#, fuzzy
+msgid "Game Title"
+msgstr "ಶೀರ್ಷಿಕೆ"
+
+#, fuzzy
+msgid "Office Title"
+msgstr "ಶೀರ್ಷಿಕೆ"
+
msgid "Set Friendly Name..."
msgstr ""
@@ -5185,8 +5372,9 @@ msgid ""
"does not exist."
msgstr ""
-msgid "Profile URL"
-msgstr "ಕಿರುಪರಿಚಯದ ಜಾಲಕೊಂಡಿ"
+#, fuzzy
+msgid "View web profile"
+msgstr "ಗೆಳೆಯನು ಆಫ್ಲೈನ್ ಆಗಿದ್ದಾನೆ"
#. *< type
#. *< ui_requirement
@@ -5425,13 +5613,6 @@ msgstr "ವಿಳಾಸಪುಸ್ತಕಕ್ಕೆ ಸೇರಿಸಿ"
msgid "Do you want to delete this buddy from your address book as well?"
msgstr ""
-#. only notify the user about problems adding to the friends list
-#. * maybe we should do something else for other lists, but it probably
-#. * won't cause too many problems if we just ignore it
-#, c-format
-msgid "Unable to add \"%s\"."
-msgstr "\"%s\" ಸೇರಿಸಲಾಗಲಿಲ್ಲ. "
-
#, fuzzy
msgid "The username specified is invalid."
msgstr "ಜಾಲವೀಕ್ಷಣಾ ಆದೇಶ \"%s\" ತಪ್ಪಾಗಿದೆ"
@@ -5439,6 +5620,9 @@ msgstr "ಜಾಲವೀಕ್ಷಣಾ ಆದೇಶ \"%s\" ತಪ್ಪಾಗ
msgid "This Hotmail account may not be active."
msgstr "ಈ ಹಾಟ್‍ಮೇಲ್ ಖಾತೆಯು ಸಕ್ರಿಯವಾಗಿರಲಿಕ್ಕಿಲ್ಲ"
+msgid "Profile URL"
+msgstr "ಕಿರುಪರಿಚಯದ ಜಾಲಕೊಂಡಿ"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5453,16 +5637,13 @@ msgstr "ಈ ಹಾಟ್‍ಮೇಲ್ ಖಾತೆಯು ಸಕ್ರಿಯವ
msgid "MSN Protocol Plugin"
msgstr "ಯಾಹೂ ಪ್ರೋಟೋಕಾಲ್ ಪ್ಲಗ್ಗಿನ್ನು"
-msgid "Missing Cipher"
-msgstr ""
-
-msgid "The RC4 cipher could not be found"
+#, c-format
+msgid "No such user: %s"
msgstr ""
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
-msgstr ""
+#, fuzzy
+msgid "User lookup"
+msgstr "ಬಳಕೆದಾರ ಕೋಣೆಗಳು"
#, fuzzy
msgid "Reading challenge"
@@ -5475,11 +5656,19 @@ msgstr ""
msgid "Logging in"
msgstr "ದಾಖಲಾತಿ"
-#, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] ""
-msgstr[1] ""
+#, fuzzy
+msgid "MySpaceIM - No Username Set"
+msgstr "ಹೆಸರು ಇಲ್ಲ."
+
+msgid "You appear to have no MySpace username."
+msgstr ""
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr ""
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr "ಸರ್ವರ್‍ಗೆ ಸಂಪರ್ಕ ಹೊಂದಿಲ್ಲ"
#. Can't write _()'d strings in array initializers. Workaround.
#, fuzzy
@@ -5501,14 +5690,20 @@ msgstr ""
msgid "MySpace"
msgstr ""
-#, fuzzy
-msgid "MySpaceIM - No Username Set"
-msgstr "ಹೆಸರು ಇಲ್ಲ."
-
-msgid "You appear to have no MySpace username."
+msgid "IM Friends"
msgstr ""
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Add contacts from server"
msgstr ""
#. The session is now set up, ready to be connected. This emits the
@@ -5533,6 +5728,22 @@ msgid "MySpaceIM Error"
msgstr ""
#, fuzzy
+msgid "Invalid input condition"
+msgstr "ತಪ್ಪು ಶೀರ್ಷಿಕೆ"
+
+#, fuzzy
+msgid "Read buffer full (2)"
+msgstr "ಸರತಿಯಸಾಲು ಭರತಿಯಾಗಿದೆ"
+
+#, fuzzy
+msgid "Unparseable message"
+msgstr "ಓದಿರದ ಸಂದೇಶಗಳು"
+
+#, fuzzy, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr "%s ಗೆ ಸಂಪರ್ಕಿಸಲು ಆಗಲಿಲ್ಲ :%s"
+
+#, fuzzy
msgid "Failed to add buddy"
msgstr "ಮಾತುಕತೆಯಲ್ಲಿ ಗೆಳೆಯನನ್ನು ಸೇರಿಕೊಳ್ಳಲಾಗಲಿಲ್ಲ"
@@ -5543,14 +5754,6 @@ msgstr "ಗೆಳೆಯರ ಪಟ್ಟಿಯನ್ನು ಈ ಕಡತದಿಂ
msgid "persist command failed"
msgstr ""
-#, c-format
-msgid "No such user: %s"
-msgstr ""
-
-#, fuzzy
-msgid "User lookup"
-msgstr "ಬಳಕೆದಾರ ಕೋಣೆಗಳು"
-
#, fuzzy
msgid "Failed to remove buddy"
msgstr "ಮಾತುಕತೆಯಲ್ಲಿ ಗೆಳೆಯನನ್ನು ಸೇರಿಕೊಳ್ಳಲಾಗಲಿಲ್ಲ"
@@ -5561,36 +5764,15 @@ msgstr ""
msgid "blocklist command failed"
msgstr ""
-#, fuzzy
-msgid "Invalid input condition"
-msgstr "ತಪ್ಪು ಶೀರ್ಷಿಕೆ"
-
-#, fuzzy
-msgid "Read buffer full (2)"
-msgstr "ಸರತಿಯಸಾಲು ಭರತಿಯಾಗಿದೆ"
-
-#, fuzzy
-msgid "Unparseable message"
-msgstr "ಓದಿರದ ಸಂದೇಶಗಳು"
-
-#, fuzzy, c-format
-msgid "Couldn't connect to host: %s (%d)"
-msgstr "%s ಗೆ ಸಂಪರ್ಕಿಸಲು ಆಗಲಿಲ್ಲ :%s"
+msgid "Missing Cipher"
+msgstr ""
-msgid "IM Friends"
+msgid "The RC4 cipher could not be found"
msgstr ""
-#, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "Add contacts from server"
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
msgstr ""
msgid "Add friends from MySpace.com"
@@ -5638,10 +5820,6 @@ msgstr "ದೊಡ್ಡ ಅಕ್ಷರಗಾತ್ರ"
msgid "User"
msgstr "ಬಳಕೆದಾರರು"
-#, fuzzy
-msgid "Profile"
-msgstr "MSN ವ್ಯಕ್ತಿಪರಿಚಯ"
-
msgid "Headline"
msgstr ""
@@ -5656,17 +5834,6 @@ msgstr ""
msgid "Client Version"
msgstr "ಮಾತುಕತೆಯನ್ನು ಮುಗಿಸಿರಿ"
-#. Protocol won't log in now without a username set.. Disconnect
-#, fuzzy
-msgid "No username set"
-msgstr "ಹೆಸರು ಇಲ್ಲ."
-
-msgid "MySpaceIM - Please Set a Username"
-msgstr ""
-
-msgid "Please enter a username to check its availability:"
-msgstr ""
-
#, fuzzy
msgid "MySpaceIM - Username Available"
msgstr "ಸೇವೆ ಅಲಭ್ಯ"
@@ -5677,6 +5844,9 @@ msgstr ""
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr ""
+msgid "MySpaceIM - Please Set a Username"
+msgstr ""
+
#, fuzzy
msgid "This username is unavailable."
msgstr "ಸೇವೆಯು ತಾತ್ಪೂರ್ತಿಕವಾಗಿ ಲಭ್ಯವಿಲ್ಲ"
@@ -5685,6 +5855,14 @@ msgstr "ಸೇವೆಯು ತಾತ್ಪೂರ್ತಿಕವಾಗಿ ಲಭ
msgid "Please try another username:"
msgstr "%sಗಾಗಿ ಹೊಸ ಹೆಸರನ್ನು ದಾಖಲಿಸಿ"
+#. Protocol won't log in now without a username set.. Disconnect
+#, fuzzy
+msgid "No username set"
+msgstr "ಹೆಸರು ಇಲ್ಲ."
+
+msgid "Please enter a username to check its availability:"
+msgstr ""
+
#. TODO: icons for each zap
#. Lots of comments for translators:
#. Zap means "to strike suddenly and forcefully as if with a
@@ -6065,7 +6243,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr ""
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr "ಈ ಸಮ್ಮೇಳನ ಮುಗಿದಿದೆ . ಇನ್ನು ಸಂದೇಶಗಳನ್ನು ಕಳಿಸಲು ಆಗುವದಿಲ್ಲ"
@@ -6324,23 +6501,18 @@ msgstr ""
msgid "Screen Sharing"
msgstr "ಬಳಕೆಯ ಹೆಸರು"
-#, c-format
msgid "Free For Chat"
msgstr ""
-#, c-format
msgid "Not Available"
msgstr "ಲಭ್ಯವಿಲ್ಲ"
-#, c-format
msgid "Occupied"
msgstr ""
-#, c-format
msgid "Web Aware"
msgstr ""
-#, c-format
msgid "Invisible"
msgstr "ಅದೃಶ್ಯ"
@@ -6383,7 +6555,7 @@ msgid ""
"only letters, numbers and spaces, or contain only numbers."
msgstr ""
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
#, fuzzy
msgid "Invalid username."
@@ -6400,7 +6572,7 @@ msgstr ""
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr ""
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6434,9 +6606,7 @@ msgid "_OK"
msgstr "ಸರಿ"
#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
+msgid "You may be disconnected shortly. If so, check %s for updates."
msgstr ""
#, fuzzy
@@ -6566,7 +6736,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] ""
msgstr[1] ""
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "ಸಂದೇಶ: %s ಕಳಿಸಲಾಗಲಿಲ್ಲ"
@@ -6588,6 +6758,10 @@ msgstr ""
msgid "Member Since"
msgstr ""
+#, fuzzy
+msgid "Profile"
+msgstr "MSN ವ್ಯಕ್ತಿಪರಿಚಯ"
+
msgid "Your AIM connection may be lost."
msgstr ""
@@ -6837,6 +7011,7 @@ msgstr "ಕನೆಕ್ಟ್ ಆಗಿ"
msgid "Get AIM Info"
msgstr ""
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr ""
@@ -6942,7 +7117,6 @@ msgstr ""
msgid "Attempting to connect to %s:%hu."
msgstr ""
-#, c-format
msgid "Attempting to connect via proxy server."
msgstr ""
@@ -7049,7 +7223,7 @@ msgstr "ಇತರ"
msgid "Visible"
msgstr "ಅದೃಶ್ಯ"
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
#, fuzzy
@@ -7139,16 +7313,48 @@ msgstr "ಪರಿಷ್ಕರಿಸಿ"
msgid "Could not change buddy information."
msgstr "ದಯವಿಟ್ಟು ನಿಮ್ಮ ಸ್ನೇಹಿತರ ವಿವರಗಳನ್ನು ಸೇರಿಸಿ"
-#, c-format
-msgid "%d needs Q&A"
+msgid "Mobile"
+msgstr "ಸಂಚಾರಿ"
+
+msgid "Note"
+msgstr "ಟಿಪ್ಪಣಿ"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "_ಗೆಳೆಯ"
+
+msgid "Change his/her memo as you like"
msgstr ""
#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "ಸ್ನೇಹಿತರನ್ನು ಸೇರಿಸಿ"
+msgid "_Modify"
+msgstr "ಬದಲಾಯಿಸು"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "ಬದಲಾಯಿಸು"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "ಸರ್ವರ್ ಬಿಝಿ ಇದೆ"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%u requires verification"
+msgstr "%s ಸೇರಲು ಆಮಂತ್ರಣ ಅಗತ್ಯ"
+
+#, fuzzy
+msgid "Add buddy question"
+msgstr "ನಿಮ್ಮ ಸ್ನೇಹಿತರ ಪಟ್ಟಿಗೆ ಸೇರಿಸಬಹುದೇ?"
#, fuzzy
-msgid "Input answer here"
+msgid "Enter answer here"
msgstr "ಕೋರಿಕೆಯನ್ನು ಇಲ್ಲಿ ಸಲ್ಲಿಸಿ"
msgid "Send"
@@ -7163,18 +7369,19 @@ msgid "Authorization denied message:"
msgstr "ಅಧಿಕಾರ ಕೋರಿಕೆ"
#, fuzzy
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr "ಕ್ಷಮಿಸಿ , ನೀವು ನನ್ನ ತರಹದವರಲ್ಲ..."
#, fuzzy, c-format
-msgid "%d needs authentication"
+msgid "%u needs authorization"
msgstr "%d ಬಳಕೆದಾರರಿಗೆ ಧೃಡೀಕರಣ ಅಗತ್ಯವಿದೆ"
#, fuzzy
msgid "Add buddy authorize"
msgstr "ನಿಮ್ಮ ಸ್ನೇಹಿತರ ಪಟ್ಟಿಗೆ ಸೇರಿಸಬಹುದೇ?"
-msgid "Input request here"
+#, fuzzy
+msgid "Enter request here"
msgstr "ಕೋರಿಕೆಯನ್ನು ಇಲ್ಲಿ ಸಲ್ಲಿಸಿ"
msgid "Would you be my friend?"
@@ -7197,7 +7404,7 @@ msgid "Failed sending authorize"
msgstr "ದಯವಿಟ್ಟು ನನಗೆ ಅಧಿಕಾರ ನೀಡಿ!"
#, fuzzy, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr "ಮಾತುಕತೆಯಲ್ಲಿ ಗೆಳೆಯನನ್ನು ಸೇರಿಕೊಳ್ಳಲಾಗಲಿಲ್ಲ"
#, fuzzy, c-format
@@ -7241,6 +7448,9 @@ msgstr "%sಗಾಗಿ ಹೊಸ ಹೆಸರನ್ನು ದಾಖಲಿಸಿ"
msgid "You can only search for permanent Qun\n"
msgstr ""
+msgid "(Invalid UTF-8 string)"
+msgstr ""
+
#, fuzzy
msgid "Not member"
msgstr "ನಾನು ಸದಸ್ಯನಲ್ಲ"
@@ -7283,16 +7493,19 @@ msgstr "ಈ ಗುಂಪು ಇತರರನ್ನು ಸೇರಲು ಅನು
msgid "Join QQ Qun"
msgstr "ಮಾತುಕತೆ ಸೇರಿರಿ"
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
-msgstr ""
+msgid "Input request here"
+msgstr "ಕೋರಿಕೆಯನ್ನು ಇಲ್ಲಿ ಸಲ್ಲಿಸಿ"
+
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "ನೀವು ಒಬ್ಬ ಸ್ನೇಹಿತರನ್ನು ಯಶಸ್ವಿಯಾಗಿ ತೆಗೆದು ಹಾಕಿದ್ದೀರಿ."
#, fuzzy
msgid "Successfully joined Qun"
msgstr "ನೀವು ಒಬ್ಬ ಸ್ನೇಹಿತರನ್ನು ಯಶಸ್ವಿಯಾಗಿ ತೆಗೆದು ಹಾಕಿದ್ದೀರಿ."
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
msgid "QQ Qun Operation"
@@ -7302,7 +7515,7 @@ msgstr ""
msgid "Failed:"
msgstr "ವಿಫಲವಾಗಿದೆ"
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
#, fuzzy
@@ -7315,11 +7528,11 @@ msgid ""
msgstr ""
#, fuzzy
-msgid "Sorry, you are not our style ..."
+msgid "Sorry, you are not our style"
msgstr "ಕ್ಷಮಿಸಿ , ನೀವು ನನ್ನ ತರಹದವರಲ್ಲ..."
#, fuzzy
-msgid "Successfully changed Qun member"
+msgid "Successfully changed Qun members"
msgstr "ನೀವು ಒಬ್ಬ ಸ್ನೇಹಿತರನ್ನು ಯಶಸ್ವಿಯಾಗಿ ತೆಗೆದು ಹಾಕಿದ್ದೀರಿ."
#, fuzzy
@@ -7330,35 +7543,35 @@ msgid "You have successfully created a Qun"
msgstr ""
#, fuzzy
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr "ಈ ಮಾತುಕತೆಯಲ್ಲಿ ಸೇರಬಯಸುವಿರಾ?"
msgid "Setup"
msgstr "ಸಿದ್ಧತೆ"
#, fuzzy, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr " %d ಈ ಬಳಕೆದಾರರು %d ಗುಂಪನ್ನು ಸೇರಲು ಕೋರಿಕೆ ಸಲ್ಲಿಸಿದ್ದಾರೆ"
#, fuzzy, c-format
-msgid "%d request to join Qun %d"
+msgid "%u request to join Qun %u"
msgstr " %d ಈ ಬಳಕೆದಾರರು %d ಗುಂಪನ್ನು ಸೇರಲು ಕೋರಿಕೆ ಸಲ್ಲಿಸಿದ್ದಾರೆ"
#, fuzzy, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr "ಮಾತುಕತೆಯಲ್ಲಿ ಗೆಳೆಯನನ್ನು ಸೇರಿಕೊಳ್ಳಲಾಗಲಿಲ್ಲ"
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr "ಗೆಳೆಯನನ್ನು ತೆಗೆದುಹಾಕಿ"
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "ಗೆಳೆಯನನ್ನು ತೆಗೆದುಹಾಕಿ"
#, fuzzy, c-format
msgid "Unknown-%d"
@@ -7476,6 +7689,13 @@ msgstr ""
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr " <b>ಬಳಕೆದಾರ:</b> %s<br> "
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<b>ಬಾಹ್ಯ ಬಳಕೆದಾರ</b><br>"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7483,7 +7703,7 @@ msgid "<i>Feel free to join us!</i> :)"
msgstr ""
#, fuzzy, c-format
-msgid "About OpenQ r%s"
+msgid "About OpenQ %s"
msgstr "'ಗೈಮ್ ಕುರಿತು"
#, fuzzy
@@ -7504,6 +7724,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "'ಗೈಮ್ ಕುರಿತು"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "ಮನೆವಿಳಾಸ"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7535,7 +7759,6 @@ msgstr ""
msgid "QQ2008"
msgstr ""
-#. #endif
#, fuzzy
msgid "Connect by TCP"
msgstr "ಸಂಪರ್ಕಿಸುತ್ತಿದೆ"
@@ -7548,6 +7771,9 @@ msgstr "ಸರ್ವರ್ ಮಾಹಿತಿ"
msgid "Show server news"
msgstr "ಸರ್ವರ್ ವಿಳಾಸ"
+msgid "Show chat room when msg comes"
+msgstr ""
+
#, fuzzy
msgid "Keep alive interval (seconds)"
msgstr "ಓದುವಲ್ಲಿ ದೋಷ "
@@ -7557,11 +7783,7 @@ msgid "Update interval (seconds)"
msgstr "ಓದುವಲ್ಲಿ ದೋಷ "
#, fuzzy
-msgid "Can not decrypt server reply"
-msgstr "ಸರ್ವರ್ ಮಾಹಿತಿ ಪಡೆಯಲಾಗಲಿಲ್ಲ"
-
-#, fuzzy
-msgid "Can not decrypt get server reply"
+msgid "Cannot decrypt server reply"
msgstr "ಸರ್ವರ್ ಮಾಹಿತಿ ಪಡೆಯಲಾಗಲಿಲ್ಲ"
#, c-format
@@ -7584,21 +7806,23 @@ msgid "Activation required"
msgstr "ನೋಂದಣಿ ಅಗತ್ಯ"
#, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr ""
#, fuzzy
-msgid "Keep alive error"
-msgstr "ಓದುವಲ್ಲಿ ದೋಷ "
+msgid "Could not decrypt server reply"
+msgstr "ಸರ್ವರ್ ಮಾಹಿತಿ ಪಡೆಯಲಾಗಲಿಲ್ಲ"
-msgid "Requesting captcha ..."
-msgstr ""
+#, fuzzy
+msgid "Requesting captcha"
+msgstr "ಸಂವಾದ ಕೋರಿರಿ"
-msgid "Checking code of captcha ..."
+msgid "Checking captcha"
msgstr ""
-msgid "Failed captcha verify"
-msgstr ""
+#, fuzzy
+msgid "Failed captcha verification"
+msgstr "ಯಾಹೂ! ಧೃಡೀಕರಣ ವಿಫಲ"
#, fuzzy
msgid "Captcha Image"
@@ -7608,7 +7832,7 @@ msgstr "ಚಿತ್ರ ಉಳಿಸಿ"
msgid "Enter code"
msgstr "ಪ್ರವೇಶಪದ ಬರೆಯಿರಿ"
-msgid "QQ Captcha Verifing"
+msgid "QQ Captcha Verification"
msgstr ""
#, fuzzy
@@ -7616,28 +7840,21 @@ msgid "Enter the text from the image"
msgstr "ಗುಂಪಿನ ಹೆಸರನ್ನು ದಾಖಲಿಸಿ"
#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
+msgid "Unknown reply when checking password (0x%02X)"
msgstr ""
#, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
msgstr ""
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "ಸಂಪರ್ಕಿಸಲು ವಿಫಲ"
msgid "Socket error"
msgstr ""
-#, fuzzy, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr "ಸರ್ವರ್‍ಗೆ ಸಂಪರ್ಕ ಹೊಂದಿಲ್ಲ"
-
msgid "Unable to read from socket"
msgstr ""
@@ -7649,11 +7866,11 @@ msgid "Connection lost"
msgstr "ಸಂಪರ್ಕ ಕಳೆದಿದೆ"
#, fuzzy
-msgid "Get server ..."
+msgid "Getting server"
msgstr "ಬಳಕೆದಾರರ ಮಾಹಿತಿ ಕೊಡಿ.."
#, fuzzy
-msgid "Request token"
+msgid "Requesting token"
msgstr "ಕೋರಿಕೆ ನಿರಾಕರಿಸಲಾಗಿದೆ."
msgid "Couldn't resolve host"
@@ -7664,17 +7881,13 @@ msgid "Invalid server or port"
msgstr "ತಪ್ಪು ದೋಷ"
#, fuzzy
-msgid "Connecting server ..."
+msgid "Connecting to server"
msgstr "ಸರ್ವರ್ ಸಂಪರ್ಕಿಸಿ"
#, fuzzy
msgid "QQ Error"
msgstr "ದೋಷ"
-#, fuzzy
-msgid "Failed to send IM."
-msgstr "ಹೆಸರು ಪಡೆಯಲು ವಿಫಲ: %s"
-
#, fuzzy, c-format
msgid ""
"Server News:\n"
@@ -7684,6 +7897,10 @@ msgid ""
msgstr "ಸರ್ವರ್ ವಿಳಾಸ"
#, fuzzy, c-format
+msgid "%s:%s"
+msgstr "%s (%s)"
+
+#, fuzzy, c-format
msgid "From %s:"
msgstr "ಇವರಿಂದ"
@@ -7693,32 +7910,30 @@ msgid ""
"%s"
msgstr "ಸರ್ವರ್ ಸೂಚನೆಗಳು %s"
-msgid "Unknow SERVER CMD"
-msgstr ""
+#, fuzzy
+msgid "Unknown SERVER CMD"
+msgstr "ಗೊತ್ತಿಲ್ಲದ ಕಾರಣ."
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
#, fuzzy
msgid "QQ Qun Command"
msgstr "ಆದೇಶ"
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr ""
-
-msgid "Can not decrypt login reply"
-msgstr ""
+#, fuzzy
+msgid "Could not decrypt login reply"
+msgstr "ಸರ್ವರ್ ಮಾಹಿತಿ ಪಡೆಯಲಾಗಲಿಲ್ಲ"
#, fuzzy
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr "ಗೊತ್ತಿಲ್ಲದ ಕಾರಣ."
#, fuzzy
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr "ಗೊತ್ತಿಲ್ಲದ ಕಾರಣ."
#, fuzzy, c-format
@@ -8501,9 +8716,6 @@ msgstr "ಸಂಸ್ಠೆ"
msgid "Unit"
msgstr "ಘಟಕ"
-msgid "Note"
-msgstr "ಟಿಪ್ಪಣಿ"
-
msgid "Join Chat"
msgstr "ಮಾತುಕತೆ ಸೇರಿರಿ"
@@ -9113,6 +9325,10 @@ msgstr ""
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr ""
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "ಸರ್ವರ್ ಮಾಹಿತಿ"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -9147,191 +9363,10 @@ msgid "Auth Domain"
msgstr ""
#, c-format
-msgid "Looking up %s"
-msgstr ""
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "%s ಗೆ ಸಂಪರ್ಕ ವಿಫಲ"
-
-#, c-format
-msgid "Signon: %s"
-msgstr ""
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "%s ಕಡತ ಬರೆಯಲು ಆಗಲಿಲ್ಲ"
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "%s ಕಡತ ಓದಲು ಆಗಲಿಲ್ಲ"
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "ಸಂದೇಶ ಬಹಳ ಉದ್ದ . ಕೊನೆಯ %s ಬೈಟ್‍ಗಳನ್ನು ಕತ್ತರಿಸಿದೆ"
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr ""
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "%s ಎಚ್ಚರಿಕೆಗೆ ಅನುಮತಿಯಿಲ್ಲ"
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr ""
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "%s ನಲ್ಲಿ ಮಾತುಕತೆ ಲಭ್ಯವಿಲ್ಲ"
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr ""
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr ""
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr ""
-
-#, c-format
-msgid "Failure."
-msgstr "ವಿಫಲ."
-
-#, c-format
-msgid "Too many matches."
-msgstr ""
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr ""
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr ""
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr ""
-
-#, c-format
-msgid "Keyword ignored."
-msgstr ""
-
-#, c-format
-msgid "No keywords."
-msgstr ""
-
-#, c-format
-msgid "User has no directory information."
-msgstr "ಬಳಕೆದಾರನಿಗೆ ಕಡತಕೋಶದ ಮಾಹಿತಿಯಿಲ್ಲ"
-
-#, c-format
-msgid "Country not supported."
-msgstr "ಈ ದೇಶ ಬೆಂಬಲಿತವಲ್ಲ"
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "ಗೊತ್ತಿಲ್ಲದ ಸೋಲು: %s"
-
-#, fuzzy, c-format
-msgid "Incorrect username or password."
-msgstr "ತಪ್ಪು ಪ್ರವೇಶಪದ"
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "ಸೇವೆಯು ತಾತ್ಪೂರ್ತಿಕವಾಗಿ ಲಭ್ಯವಿಲ್ಲ"
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr ""
-
-#, c-format
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
-msgstr ""
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr ""
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "ಗೊತ್ತಿಲ್ಲದ ದೋಷ, %d, ಸಂಭವಿಸಿದೆ. ಮಾಹಿತಿ : %s"
-
-msgid "Invalid Groupname"
-msgstr "ಗುಂಪಿನ ಹೆಸರು ತಪ್ಪಾಗಿದೆ "
-
-msgid "Connection Closed"
-msgstr "ಸಂಪರ್ಕ ಮುಚ್ಚಿದೆ"
-
-msgid "Waiting for reply..."
-msgstr "ಉತ್ತರ ಪಡೆಯಲು ವಿಫಲ..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr ""
-
-msgid "Password Change Successful"
-msgstr "ಪ್ರವೇಶಪದ ಬದಲಾವಣೆ ಯಶಸ್ವಿ"
-
-msgid "_Group:"
-msgstr "ಗುಂಪು(G)"
-
-msgid "Get Dir Info"
-msgstr ""
-
-msgid "Set Dir Info"
-msgstr ""
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "ಬರೆಯುವದಕ್ಕಾಗಿ %s ತೆರೆಯಲು ಆಗಲಿಲ್ಲ"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "ಕಡತ ವರ್ಗಾವಣೆ ವಿಫಲ ; ಬಹುಶ: ಆಚೆಯವರು ರದ್ದು ಮಾಡಿದರು"
-
-msgid "Could not connect for transfer."
-msgstr "ವರ್ಗಾವಣೆಗಾಗಿ ಸಂಪರ್ಕಿಸಲು ಅಗಲಿಲ್ಲ"
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "ಕಡತದ ಶಿರೋಭಾಗವನ್ನು ಬರೆಯಲು ಆಗಲಿಲ್ಲ ; ಕಡತದ ವರ್ಗಾವಣೆ ಆಗುವದಿಲ್ಲ"
-
-#, fuzzy
-msgid "Save As..."
-msgstr "ಲಾಂಛನವನ್ನು ಈ ಹೆಸರಿನಲ್ಲಿ ಉಳಿಸಿ..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] ""
-"%s ರವರು %s ರನ್ನು %d ಕದತವನ್ನು ಸ್ವೀಕರಿಸುವಂತೆ ಕೋರುತ್ತಾರೆ : %s (%.2f %s)%s%s"
-msgstr[1] ""
-"%s ರು %sರನ್ನು %d files ಕದತಗಳನ್ನು ಸ್ವೀಕರಿಸುವಂತೆ ಕೋರುತ್ತಾರೆ : %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s ಕಡತವೊಂದನ್ನು ಕಳಿಸಲು ನಿಮ್ಮನ್ನು ಕೋರಿದ್ದಾರೆ"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
+msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
-#, c-format
-msgid "%s has sent you a webcam invite, which is not yet supported."
+msgid "Your SMS was not delivered"
msgstr ""
msgid "Your Yahoo! message did not get sent."
@@ -9585,13 +9620,8 @@ msgstr "ಒಳ್ಳೆಯ ಕೊಂಡಿ ೩"
msgid "Last Update"
msgstr "ಇತ್ತೀಚಿನ ಪರಿಷ್ಕರಣೆ"
-#, c-format
-msgid "User information for %s unavailable"
-msgstr "%s ಬಳಕೆದಾರರ ಮಹಿತಿ ಲಭ್ಯವಿಲ್ಲ"
-
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr ""
msgid ""
@@ -9907,9 +9937,6 @@ msgstr "ಡಿಸ್ಟರ್ಬ್ ಮಾಡ್ಬೇಡಿ"
msgid "Extended away"
msgstr "ಆಚೆ ಹೋಗಿರುವಾಗ"
-msgid "Mobile"
-msgstr "ಸಂಚಾರಿ"
-
msgid "Listening to music"
msgstr ""
@@ -9951,16 +9978,6 @@ msgstr "+++ %s ಈಗ ಸಕ್ರಿಯರಾಗಿದ್ದಾರೆ"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "%s ಓದುವಲ್ಲಿ ದೋಷ"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-
msgid "Calculating..."
msgstr "ಲೆಖ್ಕಹಾಕುತ್ತಿದೆ"
@@ -10036,6 +10053,12 @@ msgid "Unable to connect to %s: %s"
msgstr "%s ಗೆ ಸಂಪರ್ಕಿಸಲು ಆಗಲಿಲ್ಲ :%s"
#, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+
+#, c-format
msgid " - %s"
msgstr ""
@@ -10068,6 +10091,16 @@ msgstr "ಸಂಪರ್ಕ ನಿರಾಕರಿಸಲಾಗಿದೆ"
msgid "Address already in use."
msgstr "ಈ ಮಾತುಕತೆ ಹೆಸರು ಆಗಲೇ ಬಳಕೆಯಲ್ಲಿದೆ"
+#, c-format
+msgid "Error Reading %s"
+msgstr "%s ಓದುವಲ್ಲಿ ದೋಷ"
+
+#, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+
msgid "Internet Messenger"
msgstr "ಇಂಟರ್ನೆಟ್ ಮೆಸ್ಸೆಂಜರ್ "
@@ -10116,10 +10149,8 @@ msgstr "ಹೊಸ ಸಂದೇಶದ ಸೂಚನೆ"
msgid "Use this buddy _icon for this account:"
msgstr "ಈ ಗೆಳೆಯ ಚಿನ್ಹೆಯನ್ನು ಈ ಖಾತೆಗೆ ಬಳಸಿ"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s ಆಯ್ಕೆಗಳು"
+msgid "_Advanced"
+msgstr "_ಮುಂದುವರಿದ"
#, fuzzy
msgid "Use GNOME Proxy Settings"
@@ -10155,9 +10186,6 @@ msgstr "ನೀವು ಬಹಳ ಸಮೀಪದಿಂದ ನೋಡಿದರೆ"
msgid "you can see the butterflies mating"
msgstr "ನೀವು ಸಂಧಿಸುತ್ತಿರುವ ಚಿಟ್ಟೆಗಳನ್ನು ನೋಡಬಹುದು"
-msgid "Proxy Options"
-msgstr "ಪ್ರಾಕ್ಸಿ ಆಯ್ಕೆಗಳು"
-
msgid "Proxy _type:"
msgstr "ಪ್ರಾಕ್ಸಿ _ಬಗೆ"
@@ -10186,8 +10214,9 @@ msgstr "_ಸರಳ"
msgid "Create _this new account on the server"
msgstr ""
-msgid "_Advanced"
-msgstr "_ಮುಂದುವರಿದ"
+#, fuzzy
+msgid "_Proxy"
+msgstr "ಪ್ರಾಕ್ಸಿ "
msgid "Enabled"
msgstr "ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"
@@ -10254,6 +10283,17 @@ msgid "I_M"
msgstr "_ತ್ವರಿತ ಸಂದೇಶ"
#, fuzzy
+msgid "_Audio Call"
+msgstr "ಮಾತುಕತೆ ಸೇರಿಸಿ (A)"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "ವೀಡಿಯೋ ಕ್ಯಾಮೆರಾ"
+
+#, fuzzy
msgid "_Send File..."
msgstr "_ಕಡತವನ್ನು ಕಳುಹಿಸಿ"
@@ -10405,6 +10445,10 @@ msgstr "/ಸಾಧನಗಳು/ಗೆಳೆಯರ _ಪ್ರವೇಶ ತಿಳ
msgid "/Tools/_Certificates"
msgstr "/ಸಾಧನಗಳು/ಇಚ್ಛೆಗಳು"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/ಸಾಧನಗಳು/ಖಾಸಗಿ ಮಾಹಿತಿ"
+
msgid "/Tools/Plu_gins"
msgstr "/ಸಾಧನಗಳು/ಪ್ಲಗ್ಗಿನ್ನುಗಳು"
@@ -10414,10 +10458,6 @@ msgstr "/ಸಾಧನಗಳು/ಇಚ್ಛೆಗಳು"
msgid "/Tools/Pr_ivacy"
msgstr "/ಸಾಧನಗಳು/_ಖಾಸಗಿಮಾಹಿತಿ"
-#, fuzzy
-msgid "/Tools/Smile_y"
-msgstr "/ಸಾಧನಗಳು/ಖಾಸಗಿ ಮಾಹಿತಿ"
-
msgid "/Tools/_File Transfers"
msgstr "/ಸಾಧನಗಳು/_ಕಡತ ವರ್ಗಾವಣೆಗಳು"
@@ -10542,8 +10582,8 @@ msgstr "ಕೈಯಾರೆ "
msgid "By status"
msgstr "ಸ್ಥಿತಿವಾರು"
-msgid "By log size"
-msgstr "ಲಾಗ್ ಗಾತ್ರವಾರು"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10561,6 +10601,9 @@ msgstr "ಕನೆಕ್ಟ್ ಆಗಿ"
msgid "Re-enable"
msgstr "ಖಾತೆಯನ್ನು ಪುನ: ಸಕ್ರಿಯಗೊಳಿಸಿ"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr ""
@@ -10652,6 +10695,9 @@ msgstr ""
msgid "A_lias:"
msgstr "ಅಲಿಯಾಸ್:"
+msgid "_Group:"
+msgstr "ಗುಂಪು(G)"
+
msgid "Auto_join when account becomes online."
msgstr ""
@@ -10704,14 +10750,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr "ಗೆಳೆಯನನ್ನು ಮಾತುಕತೆಕೋಣೆಗೆ ಆಮಂತ್ರಿಸಿ"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"ನೀವು ಆಮಂತ್ರಿಸಬಯಸುವ ಬಳಕೆದಾರನ ಹೆಸರು ಬರೆಯಿರಿ (ಬೇಕೆಂದರೆ ನೀವು ಬಯಸುವ ಆಮಂತ್ರಣ "
-"ಸಂದೇಶದೊಂದಿಗೆ)"
-
msgid "_Buddy:"
msgstr "_ಗೆಳೆಯ"
@@ -10788,6 +10826,22 @@ msgstr "/ಮಾತುಕತೆ/ಉಳಿಸಿ ಈ ಹೆಸರಿನಲ್ಲ
msgid "/Conversation/Clea_r Scrollback"
msgstr ""
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/ಮಾತುಕತೆ/_ಇನ್ನಷ್ಟು"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/ಮಾತುಕತೆ/_ಇನ್ನಷ್ಟು"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/ಮಾತುಕತೆ/_ಇನ್ನಷ್ಟು"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/ಮಾತುಕತೆ/ಲಾಗ್ _ನೋಡಿ"
+
msgid "/Conversation/Se_nd File..."
msgstr "/ಮಾತುಕತೆ/ಕಡತ _ಕಳಿಸಿ"
@@ -10862,6 +10916,18 @@ msgstr "/ಮಾತುಕತೆ"
msgid "/Conversation/View Log"
msgstr "/ಮಾತುಕತೆ/ಲಾಗ್ ನೋಡಿ"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/ಮಾತುಕತೆ/ಇನ್ನಷ್ಟು"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/ಮಾತುಕತೆ/ಲಾಗ್ ನೋಡಿ"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/ಮಾತುಕತೆ/ಇನ್ನಷ್ಟು"
+
msgid "/Conversation/Send File..."
msgstr "/ಮಾತುಕತೆ/ಕಡತ ಕಳಿಸಿ..."
@@ -11051,6 +11117,9 @@ msgstr "ವಿಳಾಸ"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "ಬೆಂಬಲ"
@@ -11197,6 +11266,10 @@ msgid "Ubuntu Georgian Translators"
msgstr "ಹಾಲೀ ಅನುವಾದಕರು"
#, fuzzy
+msgid "Khmer"
+msgstr "ಇತರ"
+
+#, fuzzy
msgid "Kannada"
msgstr "ನಿಷೇಧಿಸಲಾಗಿದೆ"
@@ -11219,6 +11292,10 @@ msgid "Macedonian"
msgstr "ಮ್ಯಾಕೆಡೊನಿಯನ್"
#, fuzzy
+msgid "Mongolian"
+msgstr "ಮ್ಯಾಕೆಡೊನಿಯನ್"
+
+#, fuzzy
msgid "Bokmål Norwegian"
msgstr "ನಾರ್ವೇಜಿಯನ್"
@@ -11327,7 +11404,24 @@ msgid ""
msgstr ""
#, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr ""
+
+#, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr ""
msgid "Current Developers"
@@ -11647,15 +11741,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr "ಹೊಸ ಸಂದೇಶದ ಸೂಚನೆ"
-msgid "_Copy Email Address"
-msgstr "_ಇ-ಮೇಯ್ಲ್ ವಿಳಾಸವನ್ನು ನಕಲು ಮಾಡಿ"
-
-msgid "_Open Link in Browser"
-msgstr ""
-
-msgid "_Copy Link Location"
-msgstr ""
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -11913,6 +11998,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -11930,6 +12016,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -11961,11 +12048,27 @@ msgstr ""
msgid "Pidgin"
msgstr "ಪ್ಲಗಿನ್‍ಗಳು"
-msgid "Open All Messages"
-msgstr "ಎಲ್ಲ ಸಂದೇಶಗಳನ್ನು ತೆರೆಯಿರಿ"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">ನಿಮಗೆ ಸಂದೇಶ ಬಂದಿದೆ!</span>"
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "ಲೆಖ್ಕಹಾಕುತ್ತಿದೆ"
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -11994,6 +12097,27 @@ msgid ""
"The 'Manual' browser command has been chosen, but no command has been set."
msgstr ""
+msgid "Open All Messages"
+msgstr "ಎಲ್ಲ ಸಂದೇಶಗಳನ್ನು ತೆರೆಯಿರಿ"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">ನಿಮಗೆ ಸಂದೇಶ ಬಂದಿದೆ!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "ಹೊಸ ಗೆಳೆಯನ-ಮೇಲೆ-ಎರಗಪ್ಪ"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">ನಿಮಗೆ ಸಂದೇಶ ಬಂದಿದೆ!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "ಗೊತ್ತಿಲ್ಲದ ಸಂದೇಶ"
+
msgid "The following plugins will be unloaded."
msgstr "ಕೆಳಕಂಡ ಪ್ಲಗ್ಗಿನ್‍ಗಳನ್ನು ತೆಗೆದುಹಾಕಿ"
@@ -12043,6 +12167,10 @@ msgstr "<b>ಪ್ಲಗ್ಗಿನ್ ವಿವರಗಳು</b>"
msgid "Select a file"
msgstr "ಒಂದು ಕಡತವನ್ನು ಆಯ್ದುಕೊಳ್ಳಿ"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "ಬಡ್ಡಿ ಪೌನ್ಸ್ ತಿದ್ದಿ"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "ಯಾರ ಮೇಲೆ ನಿಗಾ ಇಡಬೇಕು"
@@ -12113,6 +12241,50 @@ msgstr "ಪುನರಾವರ್ತಿಸುವ (R)"
msgid "Pounce Target"
msgstr "ಗುರಿಯ ಮೇಲೆರಗಿ"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "ಟೈಪಿಸಲು ಆರಂಭಿಸಿದಾಗ(t)"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "ಟೈಪಿಸುತ್ತಿರುವಾಗ ತಡೆದಾಗ(a)"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "ಒಳಬಂದಾಗ(g)"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "ನಿಶ್ಚಲರಾಗಿದ್ದ %s ಮರಳಿದ್ದಾರೆ (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "ಈಚೆಬಂದಾಗ(u)"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "ಬರೆಯುವುದನ್ನು ನಿಲ್ಲಿಸಿದ್ದಾರೆ"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "ಹೊರಹೋದಾಗ(f)"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "ನಿಶ್ಚಲನಾದಾಗ(I)"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "ಆಚೆ ಹೋಗಿರುವಾಗ"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "ಒಂದು ಸಂದೇಶ ಕಳಿಸಿ(m)"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "ಗುರುತುಹಿಡಿಯಲಾಗದ ಪೌನ್ಸ್ ಈವೆಂಟ್; ಇದನ್ನು ವರದಿ ಮಾಡಿ!"
+
msgid "Smiley theme failed to unpack."
msgstr ""
@@ -12134,6 +12306,12 @@ msgstr ""
msgid "Cl_ose conversations with the Escape key"
msgstr "%s ಜತೆ ಮಾತುಕತೆ "
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "ಸ್ನೇಹಿತರ ಪಟ್ಟಿ"
+
+#. System Tray
msgid "System Tray Icon"
msgstr ""
@@ -12251,9 +12429,6 @@ msgstr ""
msgid "Cannot start browser configuration program."
msgstr "ಬಳಕೆದಾರನ ಮಾಹಿತಿ ಪಡೆಯಲಾಗಲಿಲ್ಲ"
-msgid "ST_UN server:"
-msgstr ""
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr ""
@@ -12278,6 +12453,10 @@ msgstr "ಆರಂಭ ಪೋರ್ಟ್(S):"
msgid "_End port:"
msgstr "ಅಂತ್ಯದ ಪೋರ್ಟ್(E):"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
#, fuzzy
msgid "Proxy Server &amp; Browser"
msgstr "ಪ್ರಾಕ್ಸಿ ದೋಷ"
@@ -12307,6 +12486,10 @@ msgstr "ಪ್ರಾಕ್ಸಿ ದೋಷ"
msgid "No proxy"
msgstr "ಪ್ರಾಕ್ಸಿ ಇಲ್ಲ"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "ಬಳಕೆದಾರ(U)"
@@ -12469,12 +12652,12 @@ msgstr ""
msgid "Auto-away"
msgstr "ಆಟೋಮ್ಯಾಟಿಕ್ಕಾಗಿ-ಆಚೆ"
-msgid "Change status when _idle"
-msgstr "ಉಪಯೋಸುತ್ತಿಲ್ಲದಾಗ ಸ್ಟೇಟಸ್ ಬದಲಾಯಿಸಿ"
-
msgid "_Minutes before becoming idle:"
msgstr ""
+msgid "Change status when _idle"
+msgstr "ಉಪಯೋಸುತ್ತಿಲ್ಲದಾಗ ಸ್ಟೇಟಸ್ ಬದಲಾಯಿಸಿ"
+
msgid "Change _status to:"
msgstr "ಸ್ಥಿತಿಯನ್ನು ಹೀಗೆ ಬದಲಿಸಿ(s):"
@@ -12626,6 +12809,12 @@ msgstr "ಉಳಿಸಿ ಹಾಗೂ ಬಳಸಿ"
msgid "Status for %s"
msgstr "%s ನ ಸ್ಥಿತಿ"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
#, fuzzy
msgid "Custom Smiley"
msgstr "ಸ್ಮೈಲಿ ಸೇರಿಸಿ"
@@ -12636,15 +12825,15 @@ msgstr ""
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
+msgstr ""
+
#, fuzzy
msgid "Duplicate Shortcut"
msgstr "ಡೂಪ್ಲಿಕೇಟ್ ತಿದ್ದುಪಡಿ"
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
-msgstr ""
-
#, fuzzy
msgid "Please select an image for the smiley."
msgstr "%sಗಾಗಿ ಹೊಸ ಹೆಸರನ್ನು ದಾಖಲಿಸಿ"
@@ -12658,17 +12847,22 @@ msgid "Add Smiley"
msgstr "ಮುಗುಳ್ನಗಿ!"
#, fuzzy
-msgid "Smiley _Image"
+msgid "_Image:"
msgstr "ಚಿತ್ರ ಉಳಿಸಿ"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr ""
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "ಪೋರ್ಟ್"
#, fuzzy
msgid "Smiley"
msgstr "ಮುಗುಳ್ನಗಿ!"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "ಪೋರ್ಟ್"
+
msgid "Custom Smiley Manager"
msgstr ""
@@ -12787,6 +12981,16 @@ msgid ""
"Failed to load image '%s': reason not known, probably a corrupt image file"
msgstr ""
+#, fuzzy
+msgid "_Open Link"
+msgstr "_ಕೊಂಡಿಯನ್ನು ಇದರಲ್ಲಿ ತೆರೆಯಿರಿ ->"
+
+msgid "_Copy Link Location"
+msgstr ""
+
+msgid "_Copy Email Address"
+msgstr "_ಇ-ಮೇಯ್ಲ್ ವಿಳಾಸವನ್ನು ನಕಲು ಮಾಡಿ"
+
msgid "Save File"
msgstr "ಕಡತ ಉಳಿಸಿ"
@@ -13745,9 +13949,6 @@ msgstr "ಗೆಳೆಯರ ಪಟ್ಟಿಯ ಕಿಟಕಿ ಮೇಲಿರಲ
msgid "Only when docked"
msgstr ""
-msgid "_Flash window when chat messages are received"
-msgstr "ಮಾತುಕತೆಸಂದೇಶಗಳು ಬಂದಾಗ ಕಿಟಕಿಯನ್ನು ಮಿಂಚಿಸಿ(F)"
-
#, fuzzy
msgid "Windows Pidgin Options"
msgstr "ಪ್ರವೇಶದ ಆಯ್ಕೆಗಳು"
@@ -13799,6 +14000,138 @@ msgstr ""
msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr ""
+#, fuzzy
+#~ msgid "Invite message"
+#~ msgstr "ಸಂದೇಶದಲ್ಲಿ ಸೇರಿಸಿ"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "ನೀವು ಆಮಂತ್ರಿಸಬಯಸುವ ಬಳಕೆದಾರನ ಹೆಸರು ಬರೆಯಿರಿ (ಬೇಕೆಂದರೆ ನೀವು ಬಯಸುವ ಆಮಂತ್ರಣ "
+#~ "ಸಂದೇಶದೊಂದಿಗೆ)"
+
+#, fuzzy
+#~ msgid "Add buddy Q&A"
+#~ msgstr "ಸ್ನೇಹಿತರನ್ನು ಸೇರಿಸಿ"
+
+#, fuzzy
+#~ msgid "Can not decrypt get server reply"
+#~ msgstr "ಸರ್ವರ್ ಮಾಹಿತಿ ಪಡೆಯಲಾಗಲಿಲ್ಲ"
+
+#, fuzzy
+#~ msgid "Keep alive error"
+#~ msgstr "ಓದುವಲ್ಲಿ ದೋಷ "
+
+#, fuzzy
+#~ msgid ""
+#~ "Lost connection with server:\n"
+#~ "%d, %s"
+#~ msgstr "ಸರ್ವರ್‍ಗೆ ಸಂಪರ್ಕ ಹೊಂದಿಲ್ಲ"
+
+#, fuzzy
+#~ msgid "Failed to send IM."
+#~ msgstr "ಹೆಸರು ಪಡೆಯಲು ವಿಫಲ: %s"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "%s ಗೆ ಸಂಪರ್ಕ ವಿಫಲ"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "%s ಕಡತ ಬರೆಯಲು ಆಗಲಿಲ್ಲ"
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "%s ಕಡತ ಓದಲು ಆಗಲಿಲ್ಲ"
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "ಸಂದೇಶ ಬಹಳ ಉದ್ದ . ಕೊನೆಯ %s ಬೈಟ್‍ಗಳನ್ನು ಕತ್ತರಿಸಿದೆ"
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "%s ಎಚ್ಚರಿಕೆಗೆ ಅನುಮತಿಯಿಲ್ಲ"
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "%s ನಲ್ಲಿ ಮಾತುಕತೆ ಲಭ್ಯವಿಲ್ಲ"
+
+#~ msgid "Failure."
+#~ msgstr "ವಿಫಲ."
+
+#~ msgid "User has no directory information."
+#~ msgstr "ಬಳಕೆದಾರನಿಗೆ ಕಡತಕೋಶದ ಮಾಹಿತಿಯಿಲ್ಲ"
+
+#~ msgid "Country not supported."
+#~ msgstr "ಈ ದೇಶ ಬೆಂಬಲಿತವಲ್ಲ"
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "ಗೊತ್ತಿಲ್ಲದ ಸೋಲು: %s"
+
+#, fuzzy
+#~ msgid "Incorrect username or password."
+#~ msgstr "ತಪ್ಪು ಪ್ರವೇಶಪದ"
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "ಸೇವೆಯು ತಾತ್ಪೂರ್ತಿಕವಾಗಿ ಲಭ್ಯವಿಲ್ಲ"
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "ಗೊತ್ತಿಲ್ಲದ ದೋಷ, %d, ಸಂಭವಿಸಿದೆ. ಮಾಹಿತಿ : %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "ಗುಂಪಿನ ಹೆಸರು ತಪ್ಪಾಗಿದೆ "
+
+#~ msgid "Connection Closed"
+#~ msgstr "ಸಂಪರ್ಕ ಮುಚ್ಚಿದೆ"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "ಉತ್ತರ ಪಡೆಯಲು ವಿಫಲ..."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "ಪ್ರವೇಶಪದ ಬದಲಾವಣೆ ಯಶಸ್ವಿ"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "ಬರೆಯುವದಕ್ಕಾಗಿ %s ತೆರೆಯಲು ಆಗಲಿಲ್ಲ"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr "ಕಡತ ವರ್ಗಾವಣೆ ವಿಫಲ ; ಬಹುಶ: ಆಚೆಯವರು ರದ್ದು ಮಾಡಿದರು"
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "ವರ್ಗಾವಣೆಗಾಗಿ ಸಂಪರ್ಕಿಸಲು ಅಗಲಿಲ್ಲ"
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "ಕಡತದ ಶಿರೋಭಾಗವನ್ನು ಬರೆಯಲು ಆಗಲಿಲ್ಲ ; ಕಡತದ ವರ್ಗಾವಣೆ ಆಗುವದಿಲ್ಲ"
+
+#, fuzzy
+#~ msgid "Save As..."
+#~ msgstr "ಲಾಂಛನವನ್ನು ಈ ಹೆಸರಿನಲ್ಲಿ ಉಳಿಸಿ..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] ""
+#~ "%s ರವರು %s ರನ್ನು %d ಕದತವನ್ನು ಸ್ವೀಕರಿಸುವಂತೆ ಕೋರುತ್ತಾರೆ : %s (%.2f %s)%s%s"
+#~ msgstr[1] ""
+#~ "%s ರು %sರನ್ನು %d files ಕದತಗಳನ್ನು ಸ್ವೀಕರಿಸುವಂತೆ ಕೋರುತ್ತಾರೆ : %s (%.2f %s)%s%"
+#~ "s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s ಕಡತವೊಂದನ್ನು ಕಳಿಸಲು ನಿಮ್ಮನ್ನು ಕೋರಿದ್ದಾರೆ"
+
+#~ msgid "User information for %s unavailable"
+#~ msgstr "%s ಬಳಕೆದಾರರ ಮಹಿತಿ ಲಭ್ಯವಿಲ್ಲ"
+
+#~ msgid "%s Options"
+#~ msgstr "%s ಆಯ್ಕೆಗಳು"
+
+#~ msgid "Proxy Options"
+#~ msgstr "ಪ್ರಾಕ್ಸಿ ಆಯ್ಕೆಗಳು"
+
+#~ msgid "By log size"
+#~ msgstr "ಲಾಗ್ ಗಾತ್ರವಾರು"
+
+#, fuzzy
+#~ msgid "Smiley _Image"
+#~ msgstr "ಚಿತ್ರ ಉಳಿಸಿ"
+
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "ಮಾತುಕತೆಸಂದೇಶಗಳು ಬಂದಾಗ ಕಿಟಕಿಯನ್ನು ಮಿಂಚಿಸಿ(F)"
+
#~ msgid "A group with the name already exists."
#~ msgstr "ಈ ಹೆಸರಿನ ಗುಂಪು ಈಗಾಗಲೇ ಉಂಟು"
@@ -13888,13 +14221,6 @@ msgstr ""
#~ msgid "Change Qun information"
#~ msgstr "ವಾಹಿನಿಯ ಮಾಹಿತಿ"
-#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr "%s (%s)"
-
#~ msgid "System Message"
#~ msgstr "ಗಣಕವ್ಯವಸ್ಥೆಯ ಸಂದೇಶ"
@@ -13914,10 +14240,6 @@ msgstr ""
#~ msgstr "ಪ್ರವೇಶಪದ ಬದಲಿಸುವಲ್ಲಿ ದೋಷ"
#, fuzzy
-#~ msgid "Failed to connect all servers"
-#~ msgstr "ಸರ್ವರ್ ಅನ್ನು ಸಂಪರ್ಕಿಸಲು ಆಗಲಿಲ್ಲ"
-
-#, fuzzy
#~ msgid "Connecting server %s, retries %d"
#~ msgstr "ಸರ್ವರ್ ಸಂಪರ್ಕಿಸಿ"
diff --git a/po/ko.po b/po/ko.po
index 32df2883ce..bf54fb0c63 100644
--- a/po/ko.po
+++ b/po/ko.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin 2.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
+"POT-Creation-Date: 2009-04-30 10:39-0400\n"
"PO-Revision-Date: 2007-10-01 16:15+0900\n"
"Last-Translator: sushizang <sushizang@empal.com>\n"
"Language-Team: GTP Korean <gnome-kr-translation@gnome.or.kr>\n"
@@ -31,13 +31,13 @@ msgstr "프랑스어"
msgid "%s. Try `%s -h' for more information.\n"
msgstr "%s 상세 정보는 `%s -h' 를 입력해 주십시오.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -623,20 +623,6 @@ msgid "Send To"
msgstr "받을 사람(_S)"
#, fuzzy
-msgid "Invite message"
-msgstr "메시지 안에 삽입"
-
-msgid "Invite"
-msgstr "초대"
-
-#, fuzzy
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"초대하고자 하는 상대의 이름과 초대 메시지(선택 사항)을 입력해 주십시오."
-
-#, fuzzy
msgid "Conversation"
msgstr "대화 창"
@@ -899,6 +885,42 @@ msgstr "대화 창"
msgid "System Log"
msgstr "시스템 로그"
+#, fuzzy
+msgid "Calling ... "
+msgstr "계산 중..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+#, fuzzy
+msgid "Accept"
+msgstr "허가(_A)"
+
+msgid "Reject"
+msgstr "거부"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "채널 %s%s (으)로부터 이탈했습니다."
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "이메일"
@@ -933,6 +955,9 @@ msgstr "계속"
msgid "IM"
msgstr "인스턴트 메시지"
+msgid "Invite"
+msgstr "초대"
+
msgid "(none)"
msgstr "(없음)"
@@ -1157,7 +1182,6 @@ msgstr "%s 님이 자리 비움 상태로 되었습니다. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s 님이 나에게 메시지를 보냈습니다. (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "알 수 없는 \"알림\" 이벤트입니다. 꼭 보고해 주십시오!"
@@ -1208,7 +1232,6 @@ msgstr "상태를 변경할 때까지의 시간(분)(_M):"
msgid "Change status to"
msgstr "다음 상태로 변경(_S):"
-#. Conversations
msgid "Conversations"
msgstr "대화 창"
@@ -1542,7 +1565,6 @@ msgid ""
msgstr ""
"새로운 대화가 시작되면 이전 대화의 맨 마지막 메시지를 앞 부분에 추가합니다."
-#, c-format
msgid "Online"
msgstr "온라인"
@@ -1592,6 +1614,28 @@ msgstr "GntLastlog"
msgid "Lastlog plugin."
msgstr "Lastlog 플러그인입니다."
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "계정"
@@ -1693,14 +1737,6 @@ msgstr "%s 인증"
msgid "SSL Certificate Verification"
msgstr "SSL 호스트 인증"
-#. Number of actions
-#, fuzzy
-msgid "Accept"
-msgstr "허가(_A)"
-
-msgid "Reject"
-msgstr "거부"
-
#, fuzzy
msgid "_View Certificate..."
msgstr "인증"
@@ -1838,6 +1874,17 @@ msgstr "%s 님이 대화실을 나갔습니다."
msgid "%s left the room (%s)."
msgstr "%s 님이 대화실 (%s) (으)로부터 나갔습니다."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "회의에 초대"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"초대하고자 하는 상대의 이름과 초대 메시지(선택 사항)을 입력해 주십시오."
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "새 접속을 열 수 없습니다: %s"
@@ -1972,7 +2019,6 @@ msgstr "%s 을(를) %s (으)로부터 전송을 시작하고 있습니다."
msgid "Transfer of file %s complete"
msgstr "파일 %s 의 전송이 완료되었습니다."
-#, c-format
msgid "File transfer complete"
msgstr "파일 전송이 완료되었습니다."
@@ -1980,7 +2026,6 @@ msgstr "파일 전송이 완료되었습니다."
msgid "You canceled the transfer of %s"
msgstr "%s 의 전송이 취소되었습니다."
-#, c-format
msgid "File transfer cancelled"
msgstr "파일 전송이 취소되었습니다."
@@ -2182,7 +2227,6 @@ msgstr "(%s) %s <AUTO-REPLY>: %s\n"
msgid "You are using %s, but this plugin requires %s."
msgstr "%s 을(를) 사용하고 있으나, 이 플러그인은 %s 이(가) 필요합니다."
-#, c-format
msgid "This plugin has not defined an ID."
msgstr ""
@@ -2669,6 +2713,32 @@ msgstr "오프라인 시의 메시지 저장"
msgid "Do not ask. Always save in pounce."
msgstr "항상 저장"
+#, fuzzy
+msgid "One Time Password"
+msgstr "비밀번호 입력"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2876,7 +2946,6 @@ msgstr ""
"로컬 mDNS 서버를 사용한 접속을 확립할 수 없었습니다. 서버가 올바르게 작동되"
"고 있습니까?"
-#. Creating the options for the protocol
msgid "First name"
msgstr "이름"
@@ -2910,6 +2979,11 @@ msgstr "Bonjour 프로토콜 플러그인"
msgid "Purple Person"
msgstr "새 친구"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "시/도"
+
msgid "Bonjour"
msgstr "Bonjour"
@@ -3066,13 +3140,13 @@ msgstr "대화 선택: %s"
msgid "Add to chat..."
msgstr "대화 추가..."
+#. Global
msgid "Available"
msgstr "사용 가능"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "자리 비움"
@@ -3414,6 +3488,17 @@ msgstr ""
"지정한 계정명이 서버로부터 거부되었습니다. 잘못된 문자가 포함되어 있을 수 있"
"습니다."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "이 대화명은 이미 사용 중입니다."
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "별명"
+
msgid "Cannot change nick"
msgstr "별명을 변경할 수 없습니다."
@@ -3689,6 +3774,41 @@ msgstr "서버로부터의 잘못된 challenge 입니다."
msgid "SASL error"
msgstr "SASL 오류"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "이유를 알 수 없습니다."
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "지원되지 않는 버전"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"서버와의 접속을 확립하지 못했습니다:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"서버와의 접속을 확립하지 못했습니다:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "새로운 접속을 열 수 없습니다."
+
+msgid "Unable to create socket"
+msgstr "소켓을 생성할 수 없습니다."
+
+msgid "Write error"
+msgstr "쓰기 오류"
+
msgid "Full Name"
msgstr "전체 이름"
@@ -3754,6 +3874,10 @@ msgstr "클라이언트"
msgid "Operating System"
msgstr "운영 체제"
+#, fuzzy
+msgid "Local Time"
+msgstr "로컬 파일:"
+
msgid "Last Activity"
msgstr ""
@@ -3990,7 +4114,6 @@ msgstr "Chatty"
msgid "Extended Away"
msgstr "장기 자리 비움"
-#, c-format
msgid "Do Not Disturb"
msgstr "다른 용무 중"
@@ -4116,9 +4239,6 @@ msgstr "대화실 찾기"
msgid "You require encryption, but it is not available on this server."
msgstr ""
-msgid "Write error"
-msgstr "쓰기 오류"
-
#, fuzzy
msgid "Ping timeout"
msgstr "일반 문자열"
@@ -4128,14 +4248,9 @@ msgstr "읽기 오류"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"서버와의 접속을 확립하지 못했습니다:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "소켓을 생성할 수 없습니다."
#, fuzzy
msgid "Invalid XMPP ID"
@@ -4144,6 +4259,10 @@ msgstr "잘못된 ID"
msgid "Invalid XMPP ID. Domain must be set."
msgstr ""
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "서버 접속에 실패했습니다."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "%s@%s 의 등록이 성공적으로 완료되었습니다."
@@ -4237,9 +4356,18 @@ msgstr "인증 중"
msgid "Re-initializing Stream"
msgstr "스트림 재초기화 중"
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr "인증되어 있지 않습니다."
+msgid "Mood"
+msgstr "기분"
+
+msgid "Now Listening"
+msgstr ""
+
msgid "Both"
msgstr "둘 다"
@@ -4261,12 +4389,6 @@ msgstr "없음"
msgid "Subscription"
msgstr "구독"
-msgid "Mood"
-msgstr "기분"
-
-msgid "Now Listening"
-msgstr ""
-
#, fuzzy
msgid "Mood Text"
msgstr "혈액형"
@@ -4510,19 +4632,27 @@ msgstr "사용자 %s 님을 차단할 수 없습니다."
msgid "Unable to ping user %s"
msgstr "사용자 %s 님을 차단할 수 없습니다."
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr ""
+"%s 님에게 파일을 전송하지 못했습니다. 사용자는 파일 전송을 지원하지 않습니다."
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr ""
+"%s 님에게 파일을 전송하지 못했습니다. 사용자는 파일 전송을 지원하지 않습니다."
#, fuzzy, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr ""
"%s 님에게 파일을 전송하지 못했습니다. 사용자는 파일 전송을 지원하지 않습니다."
+#, c-format
+msgid "Buzzing %s..."
+msgstr ""
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
#, fuzzy
@@ -4533,9 +4663,37 @@ msgstr "버저!!"
msgid "%s has buzzed you!"
msgstr "%s 님이 나 [%s] 을(를) 추가했습니다."
-#, c-format
-msgid "Buzzing %s..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "%s 님에게 메시지를 보낼 수 없습니다."
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr ""
+"%s 님에게 파일을 전송하지 못했습니다. 사용자는 파일 전송을 지원하지 않습니다."
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
msgstr ""
+"%s 님에게 파일을 전송하지 못했습니다. 사용자는 파일 전송을 지원하지 않습니다."
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "등록 실패"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "정보를 표시할 상대의 아이디 또는 별칭을 입력해 주십시오."
+
+#, fuzzy
+msgid "Select a Resource"
+msgstr "파일 선택"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "대화 시작(_C)"
msgid "config: Configure a chat room."
msgstr "config: 대화실을 설정합니다."
@@ -4698,6 +4856,21 @@ msgstr "대화 %s 에 참가하는 중 오류"
msgid "Error in chat %s"
msgstr "대화 %s 에서 오류"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "파일을 여는 중 오류가 발생했습니다."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "파일 전송이 실패했습니다."
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "파일 '%s' 을(를) 열 수 없었습니다: %s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4725,10 +4898,6 @@ msgid "Please select the resource of %s to which you would like to send a file"
msgstr "정보를 표시할 상대의 아이디 또는 별칭을 입력해 주십시오."
#, fuzzy
-msgid "Select a Resource"
-msgstr "파일 선택"
-
-#, fuzzy
msgid "Edit User Mood"
msgstr "사용자 모드"
@@ -4768,9 +4937,19 @@ msgstr "알림을 받은 후 동작"
msgid "Select an action"
msgstr "파일 선택"
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr "\"%s\" 님을 추가할 수 없습니다."
+
+msgid "Buddy Add error"
+msgstr ""
+
#, fuzzy
-msgid "Unable to retrieve MSN Address Book"
-msgstr "Notes 주소록 선택"
+msgid "The username specified does not exist."
+msgstr "지정한 아이디가 잘못되었습니다."
#, c-format
msgid "Buddy list synchronization issue in %s (%s)"
@@ -5001,7 +5180,7 @@ msgstr "부모의 승인이 없는 어린이 패스포트입니다."
msgid "Passport account not yet verified"
msgstr "아직 패스포트 계정은 확인되지 않았습니다."
-#, fuzzy, c-format
+#, fuzzy
msgid "Passport account suspended"
msgstr "아직 패스포트 계정은 확인되지 않았습니다."
@@ -5098,6 +5277,13 @@ msgstr "모바일 메시지를 전송합니다."
msgid "Page"
msgstr "호출"
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "직종"
+
msgid "Has you"
msgstr "내가 등록됨"
@@ -5139,6 +5325,14 @@ msgstr "양치기자리"
msgid "Album"
msgstr "Adium"
+#, fuzzy
+msgid "Game Title"
+msgstr "제목"
+
+#, fuzzy
+msgid "Office Title"
+msgstr "제목"
+
msgid "Set Friendly Name..."
msgstr "공개명 설정..."
@@ -5330,8 +5524,9 @@ msgstr ""
"사용자 프로파일로부터 정보를 가져오지 못했습니다. 그 사용자는 존재하지 않는 "
"것 같습니다."
-msgid "Profile URL"
-msgstr "프로파일 URL"
+#, fuzzy
+msgid "View web profile"
+msgstr "오프라인일 때에는 허가되지 않았습니다."
#. *< type
#. *< ui_requirement
@@ -5582,13 +5777,6 @@ msgstr "주소록에 추가"
msgid "Do you want to delete this buddy from your address book as well?"
msgstr "이 상대를 친구 목록에 추가하시겠습니까?"
-#. only notify the user about problems adding to the friends list
-#. * maybe we should do something else for other lists, but it probably
-#. * won't cause too many problems if we just ignore it
-#, c-format
-msgid "Unable to add \"%s\"."
-msgstr "\"%s\" 님을 추가할 수 없습니다."
-
#, fuzzy
msgid "The username specified is invalid."
msgstr "지정한 아이디가 잘못되었습니다."
@@ -5596,6 +5784,9 @@ msgstr "지정한 아이디가 잘못되었습니다."
msgid "This Hotmail account may not be active."
msgstr "이 Hotmail 계정은 사용 불가능한 것 같습니다."
+msgid "Profile URL"
+msgstr "프로파일 URL"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5609,17 +5800,13 @@ msgstr "이 Hotmail 계정은 사용 불가능한 것 같습니다."
msgid "MSN Protocol Plugin"
msgstr "MSN 프로토콜 플러그인"
-#, fuzzy
-msgid "Missing Cipher"
-msgstr "암호"
-
-msgid "The RC4 cipher could not be found"
+#, c-format
+msgid "No such user: %s"
msgstr ""
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
-msgstr ""
+#, fuzzy
+msgid "User lookup"
+msgstr "사용자실"
#, fuzzy
msgid "Reading challenge"
@@ -5633,10 +5820,20 @@ msgstr "서버로부터의 잘못된 challenge 입니다."
msgid "Logging in"
msgstr "로그 기록"
-#, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] ""
+msgid "MySpaceIM - No Username Set"
+msgstr ""
+
+msgid "You appear to have no MySpace username."
+msgstr ""
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr ""
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr ""
+"서버와의 접속이 끊어졌습니다.\n"
+"%s"
#. Can't write _()'d strings in array initializers. Workaround.
#, fuzzy
@@ -5658,14 +5855,22 @@ msgstr ""
msgid "MySpace"
msgstr ""
-msgid "MySpaceIM - No Username Set"
-msgstr ""
+#, fuzzy
+msgid "IM Friends"
+msgstr "메시지 창(_I)"
-msgid "You appear to have no MySpace username."
-msgstr ""
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
-msgstr ""
+#, fuzzy
+msgid "Add contacts from server"
+msgstr "서버로부터의 응답이 잘못되었습니다."
#. The session is now set up, ready to be connected. This emits the
#. * signedOn signal, so clients can now do anything with msimprpl, and
@@ -5689,6 +5894,21 @@ msgid "MySpaceIM Error"
msgstr ""
#, fuzzy
+msgid "Invalid input condition"
+msgstr "최종 접속 조정 중"
+
+msgid "Read buffer full (2)"
+msgstr ""
+
+#, fuzzy
+msgid "Unparseable message"
+msgstr "메시지를 해독할 수 없습니다."
+
+#, fuzzy, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr "호스트에 접속하지 못했습니다."
+
+#, fuzzy
msgid "Failed to add buddy"
msgstr "대화 중인 친구에게 참가할 수 없습니다."
@@ -5700,14 +5920,6 @@ msgstr "친구 목록 가져오기..."
msgid "persist command failed"
msgstr "Switchboard 에 실패했습니다."
-#, c-format
-msgid "No such user: %s"
-msgstr ""
-
-#, fuzzy
-msgid "User lookup"
-msgstr "사용자실"
-
#, fuzzy
msgid "Failed to remove buddy"
msgstr "대화 중인 친구에게 참가할 수 없습니다."
@@ -5720,36 +5932,16 @@ msgid "blocklist command failed"
msgstr "Switchboard 에 실패했습니다."
#, fuzzy
-msgid "Invalid input condition"
-msgstr "최종 접속 조정 중"
+msgid "Missing Cipher"
+msgstr "암호"
-msgid "Read buffer full (2)"
+msgid "The RC4 cipher could not be found"
msgstr ""
-#, fuzzy
-msgid "Unparseable message"
-msgstr "메시지를 해독할 수 없습니다."
-
-#, fuzzy, c-format
-msgid "Couldn't connect to host: %s (%d)"
-msgstr "호스트에 접속하지 못했습니다."
-
-#, fuzzy
-msgid "IM Friends"
-msgstr "메시지 창(_I)"
-
-#, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-
-#, fuzzy
-msgid "Add contacts from server"
-msgstr "서버로부터의 응답이 잘못되었습니다."
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
msgid "Add friends from MySpace.com"
msgstr ""
@@ -5795,9 +5987,6 @@ msgstr ""
msgid "User"
msgstr "사용자"
-msgid "Profile"
-msgstr "프로파일"
-
#, fuzzy
msgid "Headline"
msgstr "핸들(_H):"
@@ -5813,17 +6002,6 @@ msgstr ""
msgid "Client Version"
msgstr "대화 창을 닫습니다."
-#. Protocol won't log in now without a username set.. Disconnect
-#, fuzzy
-msgid "No username set"
-msgstr "이름 없음"
-
-msgid "MySpaceIM - Please Set a Username"
-msgstr ""
-
-msgid "Please enter a username to check its availability:"
-msgstr ""
-
#, fuzzy
msgid "MySpaceIM - Username Available"
msgstr "서비스를 이용할 수 없습니다."
@@ -5836,6 +6014,9 @@ msgstr ""
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr ""
+msgid "MySpaceIM - Please Set a Username"
+msgstr ""
+
#, fuzzy
msgid "This username is unavailable."
msgstr "이 테마에는 이용 가능한 이모티콘이 없습니다."
@@ -5844,6 +6025,14 @@ msgstr "이 테마에는 이용 가능한 이모티콘이 없습니다."
msgid "Please try another username:"
msgstr "%s 님의 새 이름을 입력해 주십시오."
+#. Protocol won't log in now without a username set.. Disconnect
+#, fuzzy
+msgid "No username set"
+msgstr "이름 없음"
+
+msgid "Please enter a username to check its availability:"
+msgstr ""
+
#. TODO: icons for each zap
#. Lots of comments for translators:
#. Zap means "to strike suddenly and forcefully as if with a
@@ -6232,7 +6421,6 @@ msgstr "서버에 접속할 수 없습니다. 접속할 서버의 주소를 입
msgid "Error. SSL support is not installed."
msgstr "오류입니다. SSL 지원이 설치되어 있지 않습니다."
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr "이 회의는 폐회되었습니다. 메시지를 전송할 수 없습니다."
@@ -6496,23 +6684,18 @@ msgstr "카메라"
msgid "Screen Sharing"
msgstr "아이디"
-#, c-format
msgid "Free For Chat"
msgstr "대화할 수 있습니다."
-#, c-format
msgid "Not Available"
msgstr "사용 불가"
-#, c-format
msgid "Occupied"
msgstr "사용 중입니다."
-#, c-format
msgid "Web Aware"
msgstr "Web Aware"
-#, c-format
msgid "Invisible"
msgstr "숨김 상태"
@@ -6561,7 +6744,7 @@ msgstr ""
"로그인 할 수 없습니다: 아이디가 틀렸기 때문에 %s (으)로서 접속할 수 없었습니"
"다. 아이디의 앞 부분은 문자, 문자와 숫자와 공백 또는 숫자만이 가능합니다."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
#, fuzzy
msgid "Invalid username."
@@ -6578,7 +6761,7 @@ msgstr "사용 중인 계정은 현재 정지 중입니다."
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "AOL 인스턴트 메신저 서비스는 일시적으로 이용할 수 없습니다."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6612,13 +6795,9 @@ msgstr "디지털 표시 방식으로 6자리의 숫자를 입력해 주십시
msgid "_OK"
msgstr "확인(_O)"
-#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
-msgstr ""
-"곧 접속이 끊깁니다. 이것이 수정되면 TOC 를 사용합니다. 갱신을 위해 %s 을(를) "
-"선택하십시오."
+#, fuzzy, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
+msgstr "곧 접속이 끊깁니다. 갱신을 위해 %s 을(를) 선택하십시오."
msgid "Unable to get a valid AIM login hash."
msgstr "올바른 AIM 로그인 hash를 가져올 수 없습니다."
@@ -6761,7 +6940,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] ""
"원인은 알 수 없지만, %2$s 님으로부터의 %1$hu개의 메시지를 못했습니다."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "메시지를 보낼 수 없습니다: %s"
@@ -6783,6 +6962,9 @@ msgstr "접속한 일시"
msgid "Member Since"
msgstr "멤버가 된 일시"
+msgid "Profile"
+msgstr "프로파일"
+
msgid "Your AIM connection may be lost."
msgstr "AIM 으로의 접속이 끊어진 것 같습니다."
@@ -7058,6 +7240,7 @@ msgstr "접속(_O)"
msgid "Get AIM Info"
msgstr "AIM 정보 가져오기"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "친구 코멘트 편집"
@@ -7169,7 +7352,6 @@ msgstr "Direct IM 으로 %s 은(는) %s:%hu 에게 질의가 들어와 있습니
msgid "Attempting to connect to %s:%hu."
msgstr "%s:%hu (으)로 연락처를 시험하고 있습니다."
-#, c-format
msgid "Attempting to connect via proxy server."
msgstr "프록시 서버를 통해 연락처를 시험하고 있습니다."
@@ -7265,7 +7447,7 @@ msgstr "기타"
msgid "Visible"
msgstr "숨김 상태"
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
#, fuzzy
@@ -7356,16 +7538,48 @@ msgstr "최종 갱신일"
msgid "Could not change buddy information."
msgstr "친구의 정보를 입력해 주십시오."
-#, c-format
-msgid "%d needs Q&A"
+msgid "Mobile"
+msgstr "휴대 기기"
+
+msgid "Note"
+msgstr "비고"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "친구 아이콘"
+
+msgid "Change his/her memo as you like"
msgstr ""
#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "친구 추가"
+msgid "_Modify"
+msgstr "변경"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "변경"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "서버 바쁨"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%u requires verification"
+msgstr "승인이 필요합니다."
+
+#, fuzzy
+msgid "Add buddy question"
+msgstr "친구 목록에 추가하시겠습니까?"
#, fuzzy
-msgid "Input answer here"
+msgid "Enter answer here"
msgstr "이곳에 요청 사항을 입력하십시오."
msgid "Send"
@@ -7379,18 +7593,19 @@ msgid "Authorization denied message:"
msgstr "인증 거부 메시지:"
#, fuzzy
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr "죄송합니다, 제 스타일이 아닙니다..."
#, fuzzy, c-format
-msgid "%d needs authentication"
+msgid "%u needs authorization"
msgstr "사용자 %d 님은 인증이 필요합니다."
#, fuzzy
msgid "Add buddy authorize"
msgstr "친구 목록에 추가하시겠습니까?"
-msgid "Input request here"
+#, fuzzy
+msgid "Enter request here"
msgstr "이곳에 요청 사항을 입력하십시오."
msgid "Would you be my friend?"
@@ -7413,7 +7628,7 @@ msgid "Failed sending authorize"
msgstr "저를 승인해 주세요!"
#, fuzzy, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr "대화 중인 친구에게 참가할 수 없습니다."
#, fuzzy, c-format
@@ -7458,6 +7673,10 @@ msgid "You can only search for permanent Qun\n"
msgstr "영구적으로 사용 가능한 QQ 그룹만을 검색할 수 있습니다.\n"
#, fuzzy
+msgid "(Invalid UTF-8 string)"
+msgstr "잘못된 프록시 설정"
+
+#, fuzzy
msgid "Not member"
msgstr "저는 멤버가 아닙니다."
@@ -7500,16 +7719,19 @@ msgstr "이 그룹에서는 다른 사람들의 참가를 허가하지 않고
msgid "Join QQ Qun"
msgstr "대화에 참가"
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
-msgstr ""
+msgid "Input request here"
+msgstr "이곳에 요청 사항을 입력하십시오."
+
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "Qun 생성이 성공적으로 완료했습니다."
#, fuzzy
msgid "Successfully joined Qun"
msgstr "Qun 생성이 성공적으로 완료했습니다."
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
msgid "QQ Qun Operation"
@@ -7519,7 +7741,7 @@ msgstr "QQ Qun 조작"
msgid "Failed:"
msgstr "실패했습니다."
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
#, fuzzy
@@ -7534,11 +7756,11 @@ msgstr ""
"이 조작에 의해 최종적으로 Qun 이 완전히 삭제됩니다."
#, fuzzy
-msgid "Sorry, you are not our style ..."
+msgid "Sorry, you are not our style"
msgstr "죄송합니다, 제 스타일이 아닙니다..."
#, fuzzy
-msgid "Successfully changed Qun member"
+msgid "Successfully changed Qun members"
msgstr "Qun 멤버 변경이 성공적으로 완료되었습니다."
#, fuzzy
@@ -7549,35 +7771,35 @@ msgid "You have successfully created a Qun"
msgstr "Qun 생성이 성공적으로 완료했습니다."
#, fuzzy
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr "지금 바로 Qun 의 상세 정보를 입력하시겠습니까?"
msgid "Setup"
msgstr "입력"
#, fuzzy, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr "그룹 %d 에의 내 참가 요구가 관리자 %d 에 의해 거부되었습니다."
-#, c-format
-msgid "%d request to join Qun %d"
-msgstr ""
+#, fuzzy, c-format
+msgid "%u request to join Qun %u"
+msgstr "그룹 %d 에의 내 참가 요구가 관리자 %d 에 의해 거부되었습니다."
#, fuzzy, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr "대화 중인 친구에게 참가할 수 없습니다."
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr "친구 삭제"
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "친구 삭제"
#, c-format
msgid "Unknown-%d"
@@ -7694,6 +7916,13 @@ msgstr "<b>마지막 갱신</b>: %s<br>\n"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<b>현재의 온라인</b>: %d<br>\n"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<b>마지막 갱신</b>: %s<br>\n"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7701,7 +7930,7 @@ msgid "<i>Feel free to join us!</i> :)"
msgstr ""
#, fuzzy, c-format
-msgid "About OpenQ r%s"
+msgid "About OpenQ %s"
msgstr "%s 정보"
#, fuzzy
@@ -7722,6 +7951,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "%s 정보"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "자택 주소"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7753,7 +7986,6 @@ msgstr ""
msgid "QQ2008"
msgstr ""
-#. #endif
#, fuzzy
msgid "Connect by TCP"
msgstr "접속"
@@ -7766,6 +7998,9 @@ msgstr "서버 포트"
msgid "Show server news"
msgstr "서버 주소"
+msgid "Show chat room when msg comes"
+msgstr ""
+
#, fuzzy
msgid "Keep alive interval (seconds)"
msgstr "읽는 중 오류"
@@ -7775,11 +8010,7 @@ msgid "Update interval (seconds)"
msgstr "정보 갱신"
#, fuzzy
-msgid "Can not decrypt server reply"
-msgstr "서버 정보를 가져올 수 없습니다."
-
-#, fuzzy
-msgid "Can not decrypt get server reply"
+msgid "Cannot decrypt server reply"
msgstr "서버 정보를 가져올 수 없습니다."
#, c-format
@@ -7802,21 +8033,23 @@ msgid "Activation required"
msgstr "등록이 필요합니다."
#, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr ""
#, fuzzy
-msgid "Keep alive error"
-msgstr "읽는 중 오류"
+msgid "Could not decrypt server reply"
+msgstr "서버 정보를 가져올 수 없습니다."
-msgid "Requesting captcha ..."
-msgstr ""
+#, fuzzy
+msgid "Requesting captcha"
+msgstr "질문 창의 글꼴"
-msgid "Checking code of captcha ..."
+msgid "Checking captcha"
msgstr ""
-msgid "Failed captcha verify"
-msgstr ""
+#, fuzzy
+msgid "Failed captcha verification"
+msgstr "Yahoo! 인증 실패"
#, fuzzy
msgid "Captcha Image"
@@ -7826,38 +8059,30 @@ msgstr "이미지 저장"
msgid "Enter code"
msgstr "비밀번호 입력"
-msgid "QQ Captcha Verifing"
-msgstr ""
+#, fuzzy
+msgid "QQ Captcha Verification"
+msgstr "SSL 호스트 인증"
#, fuzzy
msgid "Enter the text from the image"
msgstr "추가할 그룹의 이름을 입력해 주십시오."
#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
+msgid "Unknown reply when checking password (0x%02X)"
msgstr ""
#, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
msgstr ""
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "접속할 수 없습니다."
msgid "Socket error"
msgstr "소켓 오류"
-#, fuzzy, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr ""
-"서버와의 접속에 실패했습니다:\n"
-"%s"
-
msgid "Unable to read from socket"
msgstr "소켓으로부터 읽을 수 없습니다."
@@ -7868,11 +8093,11 @@ msgid "Connection lost"
msgstr "접속을 닫았습니다."
#, fuzzy
-msgid "Get server ..."
+msgid "Getting server"
msgstr "사용자 정보 설정..."
#, fuzzy
-msgid "Request token"
+msgid "Requesting token"
msgstr "요청이 거부되었습니다."
msgid "Couldn't resolve host"
@@ -7883,17 +8108,13 @@ msgid "Invalid server or port"
msgstr "잘못된 오류"
#, fuzzy
-msgid "Connecting server ..."
-msgstr "서버에 접속"
+msgid "Connecting to server"
+msgstr "SILC 서버에 접속 중"
#, fuzzy
msgid "QQ Error"
msgstr "QQid 오류"
-#, fuzzy
-msgid "Failed to send IM."
-msgstr "이름 가져오기에 실패했습니다: %s"
-
#, fuzzy, c-format
msgid ""
"Server News:\n"
@@ -7903,6 +8124,10 @@ msgid ""
msgstr "ICQ 서버 중계"
#, fuzzy, c-format
+msgid "%s:%s"
+msgstr "%s (%s)"
+
+#, fuzzy, c-format
msgid "From %s:"
msgstr "보낸 사람"
@@ -7912,32 +8137,30 @@ msgid ""
"%s"
msgstr "서버 정보: %s"
-msgid "Unknow SERVER CMD"
-msgstr ""
+#, fuzzy
+msgid "Unknown SERVER CMD"
+msgstr "이유를 알 수 없습니다."
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
#, fuzzy
msgid "QQ Qun Command"
msgstr "명령 지정"
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr ""
-
-msgid "Can not decrypt login reply"
-msgstr ""
+#, fuzzy
+msgid "Could not decrypt login reply"
+msgstr "서버 정보를 가져올 수 없습니다."
#, fuzzy
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr "이유를 알 수 없습니다."
#, fuzzy
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr "이유를 알 수 없습니다."
#, c-format
@@ -8755,9 +8978,6 @@ msgstr "조직"
msgid "Unit"
msgstr "그룹"
-msgid "Note"
-msgstr "비고"
-
msgid "Join Chat"
msgstr "대화에 참가"
@@ -9423,6 +9643,10 @@ msgstr "호스트명을 해석할 수 없었습니다."
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr "SIP 의 아이디에 공백 또는 @ 기호가 포함되어 있지 않은 것 같습니다."
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "서버 포트"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -9457,190 +9681,10 @@ msgid "Auth Domain"
msgstr "도메인 인증"
#, c-format
-msgid "Looking up %s"
-msgstr "%s 검색 중"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "%s (으)로의 접속에 실패했습니다."
-
-#, c-format
-msgid "Signon: %s"
-msgstr "접속: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "파일 %s 을(를) 쓸 수 없습니다."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "파일 %s 을(를) 읽을 수 없습니다."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "메시지가 너무 길어 마지막 %s 바이트가 잘렸습니다."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s 님은 현재 로그인 되어 있지 않습니다."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "%s 경고는 허가되어 있지 않습니다."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "사용자 속도 제한을 초과하였기 때문에, 메시지가 유실되었습니다."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "%s 에서의 대화는 가능하지 않습니다."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "너무 빨라 %s 메시지를 전송할 수 없습니다."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "너무 커서 %s (으)로부터의 IM 을 무시했습니다."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "너무 빨라 %s 님으로부터의 IM 을 무시했습니다."
-
-#, c-format
-msgid "Failure."
-msgstr "실패했습니다."
-
-#, c-format
-msgid "Too many matches."
-msgstr "너무 많이 일치합니다."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "더 많은 수식어가 필요합니다."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "일시적으로 디렉토리 서비스를 이용할 수 없습니다."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "이메일 검색이 거부되었습니다."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "검색어가 무시되었습니다."
-
-#, c-format
-msgid "No keywords."
-msgstr "검색어가 없습니다."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "디렉토리 정보가 없습니다."
-
-#, c-format
-msgid "Country not supported."
-msgstr "지원되지 않는 국가입니다."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "원인을 알 수 없는 실패: %s"
-
-#, fuzzy, c-format
-msgid "Incorrect username or password."
-msgstr "아이디 또는 비밀번호가 틀립니다."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "일시적으로 서비스를 이용할 수 없습니다."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "로그인 경고 수준이 너무 높습니다."
-
-#, c-format
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
+msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
-"접속과 해제를 반복 수행했습니다. 10분 정도 후에 재시도 하십시오. 이대로 계속"
-"하면 더 많이 시간을 기다려야 합니다."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "원인을 알 수 없는 접속 오류가 발생했습니다: %s"
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "알 수 없는 오류 %d 이(가) 발생했습니다 (정보: %s)."
-
-msgid "Invalid Groupname"
-msgstr "그룹명이 잘못되었습니다."
-
-msgid "Connection Closed"
-msgstr "접속을 닫았습니다."
-
-msgid "Waiting for reply..."
-msgstr "응답을 기다리는 중입니다..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "TOC 가 일시정지 상태에서 복귀했습니다. 메시지를 다시 보낼 수 있습니다."
-
-msgid "Password Change Successful"
-msgstr "비밀번호 변경이 성공적으로 완료되었습니다."
-
-msgid "_Group:"
-msgstr "그룹(_G):"
-msgid "Get Dir Info"
-msgstr "폴더 정보 가져오기"
-
-msgid "Set Dir Info"
-msgstr "폴더 정보 설정"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "쓰기 모드에서 %s 을(를) 열 수 없습니다!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "파일 전송에 실패했습니다. 아마도 상대측에서 취소한 것 같습니다."
-
-msgid "Could not connect for transfer."
-msgstr "전송할 수 없었습니다."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "파일 헤더를 기록할 수 없습니다. 파일은 전송되지 않습니다."
-
-msgid "Save As..."
-msgstr "다른 이름으로 저장..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s 님으로부터 %s 님에게 %d 개의 파일 요청: %s (%.2f %s)%s%s"
-
-# msgstr[1] "%s 님으로부터 %s 님에게 %d 개의 파일 요청: %s (%.2f %s)%s%s"
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s 님이 파일을 보내도록 요청하고 있습니다."
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "TOC 프로토콜 플러그인"
-
-#, c-format
-msgid "%s has sent you a webcam invite, which is not yet supported."
+msgid "Your SMS was not delivered"
msgstr ""
msgid "Your Yahoo! message did not get sent."
@@ -9917,13 +9961,9 @@ msgstr "추천 링크 3"
msgid "Last Update"
msgstr "최종 갱신일"
-#, c-format
-msgid "User information for %s unavailable"
-msgstr "%s 의 사용자 정보는 사용할 수 없습니다."
-
+#, fuzzy
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr ""
"죄송합니다. 이 프로파일은 이 버전에서는 지원하지 않는 서식 혹은 언어입니다."
@@ -10256,9 +10296,6 @@ msgstr "다른 용무 중"
msgid "Extended away"
msgstr "장기 자리 비움"
-msgid "Mobile"
-msgstr "휴대 기기"
-
msgid "Listening to music"
msgstr ""
@@ -10300,18 +10337,6 @@ msgstr "+++ %s 님이 대기 중으로부터 복귀했습니다."
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "%s 을(를) 읽는 중 오류"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"%s 을(를) 읽는 중 오류가 발생했습니다. 이 정보는 읽을 수 없습니다. 또한, 오래"
-"된 파일 이름을 \"%s~\" (으)로 변경했습니다."
-
msgid "Calculating..."
msgstr "계산 중..."
@@ -10386,6 +10411,14 @@ msgstr "%s (으)로 쓰는 중 오류: %s"
msgid "Unable to connect to %s: %s"
msgstr "%s (으)로 접속할 수 없습니다: %s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+"로그인하기 위해 서버가 TLS/SSL 을 요구해 왔지만, TLS/SSL 은 지원되지 않습니"
+"다."
+
#, c-format
msgid " - %s"
msgstr ""
@@ -10419,6 +10452,18 @@ msgstr "접속이 거부되었습니다."
msgid "Address already in use."
msgstr "이 대화명은 이미 사용 중입니다."
+#, c-format
+msgid "Error Reading %s"
+msgstr "%s 을(를) 읽는 중 오류"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"%s 을(를) 읽는 중 오류가 발생했습니다. 이 정보는 읽을 수 없습니다. 또한, 오래"
+"된 파일 이름을 \"%s~\" (으)로 변경했습니다."
+
msgid "Internet Messenger"
msgstr "인터넷 메신저"
@@ -10461,10 +10506,8 @@ msgstr "새 메일 알림"
msgid "Use this buddy _icon for this account:"
msgstr "다음 아이콘 사용:"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s 설정"
+msgid "_Advanced"
+msgstr "고급 설정(_A)"
msgid "Use GNOME Proxy Settings"
msgstr "GNOME 프록시 설정 사용"
@@ -10499,9 +10542,6 @@ msgstr "가까이 잘 보면"
msgid "you can see the butterflies mating"
msgstr "나비가 친구가 되어 있는 것을 알 수 있습니다."
-msgid "Proxy Options"
-msgstr "프록시 설정"
-
msgid "Proxy _type:"
msgstr "프록시 형식(_T):"
@@ -10530,8 +10570,9 @@ msgstr "기본 설정(_B)"
msgid "Create _this new account on the server"
msgstr ""
-msgid "_Advanced"
-msgstr "고급 설정(_A)"
+#, fuzzy
+msgid "_Proxy"
+msgstr "프록시"
msgid "Enabled"
msgstr "사용"
@@ -10605,6 +10646,17 @@ msgid "I_M"
msgstr "인스턴트 메시지(_M)"
#, fuzzy
+msgid "_Audio Call"
+msgstr "대화 추가(_A)"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "영상 대화"
+
+#, fuzzy
msgid "_Send File..."
msgstr "파일 전송(_S)"
@@ -10749,6 +10801,10 @@ msgstr "/도구/친구 알림(_P)"
msgid "/Tools/_Certificates"
msgstr "/도구/인증(_C)"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/도구/개인 정보"
+
msgid "/Tools/Plu_gins"
msgstr "/도구/플러그인(_G)"
@@ -10758,10 +10814,6 @@ msgstr "/도구/설정(_E)"
msgid "/Tools/Pr_ivacy"
msgstr "/도구/개인 정보(_I)"
-#, fuzzy
-msgid "/Tools/Smile_y"
-msgstr "/도구/개인 정보"
-
msgid "/Tools/_File Transfers"
msgstr "/도구/파일 전송(_F)"
@@ -10883,8 +10935,8 @@ msgstr "수동 정렬"
msgid "By status"
msgstr "상태순"
-msgid "By log size"
-msgstr "로그 크기순"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10902,6 +10954,9 @@ msgstr "접속"
msgid "Re-enable"
msgstr "계정 재사용"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr ""
@@ -10995,6 +11050,9 @@ msgstr ""
msgid "A_lias:"
msgstr "별칭:"
+msgid "_Group:"
+msgstr "그룹(_G):"
+
msgid "Auto_join when account becomes online."
msgstr ""
@@ -11048,13 +11106,6 @@ msgstr "지금 그 친구를 초대 가능한 계정으로 접속되어 있지
msgid "Invite Buddy Into Chat Room"
msgstr "친구를 대화실로 초대"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"초대하고자 하는 상대의 이름과 초대 메시지(선택 사항)을 입력해 주십시오."
-
msgid "_Buddy:"
msgstr "친구(_B):"
@@ -11130,6 +11181,22 @@ msgstr "/대화/다른 이름으로 저장(_S)..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/대화/화면 비우기(_R)"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/대화/자세히(_O)"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/대화/자세히(_O)"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/대화/자세히(_O)"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/대화/로그 보기(_L)"
+
msgid "/Conversation/Se_nd File..."
msgstr "/대화/파일 전송(_N)..."
@@ -11204,6 +11271,18 @@ msgstr "/대화"
msgid "/Conversation/View Log"
msgstr "/대화/로그 보기"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/대화/자세히(_O)"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/대화/로그 보기"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/대화/자세히(_O)"
+
msgid "/Conversation/Send File..."
msgstr "/대화/파일 전송..."
@@ -11388,6 +11467,9 @@ msgstr "양치기자리"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "지원"
@@ -11533,6 +11615,10 @@ msgid "Ubuntu Georgian Translators"
msgstr "현재 번역자"
#, fuzzy
+msgid "Khmer"
+msgstr "기타"
+
+#, fuzzy
msgid "Kannada"
msgstr "차단되었습니다."
@@ -11556,6 +11642,10 @@ msgid "Macedonian"
msgstr "마케도니아어"
#, fuzzy
+msgid "Mongolian"
+msgstr "마케도니아어"
+
+#, fuzzy
msgid "Bokmål Norwegian"
msgstr "노르웨이어"
@@ -11671,7 +11761,24 @@ msgstr ""
"를 참조해 주십시오. 본 프로그램은 어떠한 보증도 하지 않습니다.<BR><BR>"
#, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, fuzzy, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"4\">IRC:</FONT> irc.freenode.net의 #pidgin 채널<BR><BR>"
+
+#, fuzzy, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"4\">IRC:</FONT> irc.freenode.net의 #pidgin 채널<BR><BR>"
msgid "Current Developers"
@@ -11988,15 +12095,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr "새 메일 알림"
-msgid "_Copy Email Address"
-msgstr "이메일 주소 복사(_C)"
-
-msgid "_Open Link in Browser"
-msgstr "링크를 브라우저로 열기(_O)"
-
-msgid "_Copy Link Location"
-msgstr "링크 주소 복사(_C)"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12245,6 +12343,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12272,6 +12371,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12332,12 +12432,27 @@ msgstr ""
msgid "Pidgin"
msgstr "해(돼지)"
-msgid "Open All Messages"
-msgstr "모든 메시지 열기"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "계산 중..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
msgstr ""
-"<span weight=\"bold\" size=\"larger\">새로운 메일이 도착했습니다!</span>"
#, c-format
msgid "%s has %d new message."
@@ -12366,6 +12481,29 @@ msgid ""
msgstr ""
"브라우저 명령이 '수동설정'으로 되어 있지만, 명령이 지정되어 있지 않습니다."
+msgid "Open All Messages"
+msgstr "모든 메시지 열기"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr ""
+"<span weight=\"bold\" size=\"larger\">새로운 메일이 도착했습니다!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "새 친구 알림"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr ""
+"<span weight=\"bold\" size=\"larger\">새로운 메일이 도착했습니다!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "알 수 없는 메시지"
+
msgid "The following plugins will be unloaded."
msgstr "다음의 플러그인을 해제합니다."
@@ -12418,6 +12556,10 @@ msgstr "<b>플러그인 상세</b>"
msgid "Select a file"
msgstr "파일 선택"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "친구 알림 편집"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "알림을 받을 친구"
@@ -12489,6 +12631,50 @@ msgstr "반복(_R)"
msgid "Pounce Target"
msgstr "알림 받을 상대"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "입력 시작했을 때(_T)"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "입력을 일시 중지했을 때(_A)"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "접속했을 때(_G)"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s 대기로부터 복귀했습니다. (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "자리 비움으로부터 복귀했을 때(_U)"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "입력을 중지했습니다."
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "접속을 해제했을 때(_F)"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "대기 상태가 되었을 때(_I)"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "자리 비움일 때만"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "메시지 보내기(_M)"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "알 수 없는 \"알림\" 이벤트입니다. 꼭 보고해 주십시오!"
+
msgid "Smiley theme failed to unpack."
msgstr "이모티콘 테마를 풀 수 없습니다."
@@ -12512,6 +12698,12 @@ msgstr ""
msgid "Cl_ose conversations with the Escape key"
msgstr "%s 님과의 대화"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "친구 목록"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "시스템 트레이 아이콘"
@@ -12623,9 +12815,6 @@ msgstr ""
msgid "Cannot start browser configuration program."
msgstr "사용자 정보를 가져오지 못했습니다."
-msgid "ST_UN server:"
-msgstr "STUN 서버(_U):"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">예: stunserver.org</span>"
@@ -12650,6 +12839,10 @@ msgstr "시작 포트 번호(_S):"
msgid "_End port:"
msgstr "종료 포트 번호(_E):"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
#, fuzzy
msgid "Proxy Server &amp; Browser"
msgstr "프록시 서버"
@@ -12679,6 +12872,10 @@ msgstr "프록시 서버"
msgid "No proxy"
msgstr "프록시 없음"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "사용자명(_U):"
@@ -12843,12 +13040,12 @@ msgstr "자리 비움으로 대기 상태일 때"
msgid "Auto-away"
msgstr "자동 자리 비움"
-msgid "Change status when _idle"
-msgstr "대기 상태가 되면 상태 변경(_I)"
-
msgid "_Minutes before becoming idle:"
msgstr "대기 시간 간격(분)(_M)"
+msgid "Change status when _idle"
+msgstr "대기 상태가 되면 상태 변경(_I)"
+
msgid "Change _status to:"
msgstr "다음 상태로 변경(_S):"
@@ -12997,6 +13194,12 @@ msgstr "저장 후 사용(_V)"
msgid "Status for %s"
msgstr "%s 의 상태"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
#, fuzzy
msgid "Custom Smiley"
msgstr "이모티콘을 삽입합니다."
@@ -13007,15 +13210,15 @@ msgstr ""
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
+msgstr ""
+
#, fuzzy
msgid "Duplicate Shortcut"
msgstr "문자열이 중복되고 있습니다."
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
-msgstr ""
-
#, fuzzy
msgid "Please select an image for the smiley."
msgstr "상태 제목을 입력해 주십시오."
@@ -13029,11 +13232,11 @@ msgid "Add Smiley"
msgstr "이모티콘(_S)"
#, fuzzy
-msgid "Smiley _Image"
-msgstr "이미지 저장"
+msgid "_Image:"
+msgstr "이미지(_I)"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
+#. Shortcut text
+msgid "S_hortcut text:"
msgstr ""
#, fuzzy
@@ -13041,6 +13244,10 @@ msgid "Smiley"
msgstr "이모티콘(_S)"
#, fuzzy
+msgid "Shortcut Text"
+msgstr "상태 문자"
+
+#, fuzzy
msgid "Custom Smiley Manager"
msgstr "인증 관리자"
@@ -13173,6 +13380,16 @@ msgstr ""
"이미지 '%s' 의 불러오기에 실패했습니다: 원인은 알 수 없으나, 아마도 잘못된 이"
"미지 파일인 것 같습니다."
+#, fuzzy
+msgid "_Open Link"
+msgstr "링크를 여는 방식(_O):"
+
+msgid "_Copy Link Location"
+msgstr "링크 주소 복사(_C)"
+
+msgid "_Copy Email Address"
+msgstr "이메일 주소 복사(_C)"
+
msgid "Save File"
msgstr "파일 저장"
@@ -14145,9 +14362,6 @@ msgstr "친구 목록을 맨 위로 배치한 상태 유지(_K):"
msgid "Only when docked"
msgstr "결합했을 때만"
-msgid "_Flash window when chat messages are received"
-msgstr "대화에서 메시지를 받으면 창을 깜박거림(_F)"
-
msgid "Windows Pidgin Options"
msgstr "Windows Pidgin 설정"
@@ -14196,6 +14410,223 @@ msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr ""
"이것은 XMPP 서버 또는 클라이언트를 디버그 할 때에 편리한 플러그인입니다."
+#, fuzzy
+#~ msgid "Invite message"
+#~ msgstr "메시지 안에 삽입"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "초대하고자 하는 상대의 이름과 초대 메시지(선택 사항)을 입력해 주십시오."
+
+#, fuzzy
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "Notes 주소록 선택"
+
+#~ msgid ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+#~ msgstr ""
+#~ "곧 접속이 끊깁니다. 이것이 수정되면 TOC 를 사용합니다. 갱신을 위해 %s 을"
+#~ "(를) 선택하십시오."
+
+#, fuzzy
+#~ msgid "Add buddy Q&A"
+#~ msgstr "친구 추가"
+
+#, fuzzy
+#~ msgid "Can not decrypt get server reply"
+#~ msgstr "서버 정보를 가져올 수 없습니다."
+
+#, fuzzy
+#~ msgid "Keep alive error"
+#~ msgstr "읽는 중 오류"
+
+#, fuzzy
+#~ msgid ""
+#~ "Lost connection with server:\n"
+#~ "%d, %s"
+#~ msgstr ""
+#~ "서버와의 접속에 실패했습니다:\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Connecting server ..."
+#~ msgstr "서버에 접속"
+
+#, fuzzy
+#~ msgid "Failed to send IM."
+#~ msgstr "이름 가져오기에 실패했습니다: %s"
+
+#~ msgid "Looking up %s"
+#~ msgstr "%s 검색 중"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "%s (으)로의 접속에 실패했습니다."
+
+#~ msgid "Signon: %s"
+#~ msgstr "접속: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "파일 %s 을(를) 쓸 수 없습니다."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "파일 %s 을(를) 읽을 수 없습니다."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "메시지가 너무 길어 마지막 %s 바이트가 잘렸습니다."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s 님은 현재 로그인 되어 있지 않습니다."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "%s 경고는 허가되어 있지 않습니다."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr "사용자 속도 제한을 초과하였기 때문에, 메시지가 유실되었습니다."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "%s 에서의 대화는 가능하지 않습니다."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "너무 빨라 %s 메시지를 전송할 수 없습니다."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "너무 커서 %s (으)로부터의 IM 을 무시했습니다."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr "너무 빨라 %s 님으로부터의 IM 을 무시했습니다."
+
+#~ msgid "Failure."
+#~ msgstr "실패했습니다."
+
+#~ msgid "Too many matches."
+#~ msgstr "너무 많이 일치합니다."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "더 많은 수식어가 필요합니다."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "일시적으로 디렉토리 서비스를 이용할 수 없습니다."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "이메일 검색이 거부되었습니다."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "검색어가 무시되었습니다."
+
+#~ msgid "No keywords."
+#~ msgstr "검색어가 없습니다."
+
+#~ msgid "User has no directory information."
+#~ msgstr "디렉토리 정보가 없습니다."
+
+#~ msgid "Country not supported."
+#~ msgstr "지원되지 않는 국가입니다."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "원인을 알 수 없는 실패: %s"
+
+#, fuzzy
+#~ msgid "Incorrect username or password."
+#~ msgstr "아이디 또는 비밀번호가 틀립니다."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "일시적으로 서비스를 이용할 수 없습니다."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "로그인 경고 수준이 너무 높습니다."
+
+#~ 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 ""
+#~ "접속과 해제를 반복 수행했습니다. 10분 정도 후에 재시도 하십시오. 이대로 계"
+#~ "속하면 더 많이 시간을 기다려야 합니다."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "원인을 알 수 없는 접속 오류가 발생했습니다: %s"
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "알 수 없는 오류 %d 이(가) 발생했습니다 (정보: %s)."
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "그룹명이 잘못되었습니다."
+
+#~ msgid "Connection Closed"
+#~ msgstr "접속을 닫았습니다."
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "응답을 기다리는 중입니다..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr ""
+#~ "TOC 가 일시정지 상태에서 복귀했습니다. 메시지를 다시 보낼 수 있습니다."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "비밀번호 변경이 성공적으로 완료되었습니다."
+
+#~ msgid "Get Dir Info"
+#~ msgstr "폴더 정보 가져오기"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "폴더 정보 설정"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "쓰기 모드에서 %s 을(를) 열 수 없습니다!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr "파일 전송에 실패했습니다. 아마도 상대측에서 취소한 것 같습니다."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "전송할 수 없었습니다."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "파일 헤더를 기록할 수 없습니다. 파일은 전송되지 않습니다."
+
+#~ msgid "Save As..."
+#~ msgstr "다른 이름으로 저장..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s 님으로부터 %s 님에게 %d 개의 파일 요청: %s (%.2f %s)%s%s"
+
+# msgstr[1] "%s 님으로부터 %s 님에게 %d 개의 파일 요청: %s (%.2f %s)%s%s"
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s 님이 파일을 보내도록 요청하고 있습니다."
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "TOC 프로토콜 플러그인"
+
+#~ msgid "User information for %s unavailable"
+#~ msgstr "%s 의 사용자 정보는 사용할 수 없습니다."
+
+#~ msgid "%s Options"
+#~ msgstr "%s 설정"
+
+#~ msgid "Proxy Options"
+#~ msgstr "프록시 설정"
+
+#~ msgid "By log size"
+#~ msgstr "로그 크기순"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "링크를 브라우저로 열기(_O)"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "STUN 서버(_U):"
+
+#, fuzzy
+#~ msgid "Smiley _Image"
+#~ msgstr "이미지 저장"
+
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "대화에서 메시지를 받으면 창을 깜박거림(_F)"
+
#~ msgid "A group with the name already exists."
#~ msgstr "같은 이름의 그룹이 이미 존재합니다."
@@ -14287,13 +14718,6 @@ msgstr ""
#~ msgid "Change Qun information"
#~ msgstr "채널 정보"
-#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr "%s (%s)"
-
#~ msgid "System Message"
#~ msgstr "시스템 메시지"
@@ -14896,8 +15320,8 @@ msgstr ""
#~ msgid ""
#~ "When this happens, TOC ignores any messages sent to it, and may kick you "
-#~ "off if you send a message. Pidgin will prevent anything from going through. "
-#~ "This is only temporary, please be patient."
+#~ "off if you send a message. Pidgin will prevent anything from going "
+#~ "through. This is only temporary, please be patient."
#~ msgstr ""
#~ "이것이 발생한 경우, TOC 는 메시지 송신을 무시하기 때문에 메시지를 보낼 수 "
#~ "없습니다. Pidgin은 모든 송신 데이터를 차단합니다. 일시적인 현상이므로 잠시"
@@ -14909,8 +15333,8 @@ msgstr ""
#~ msgid ""
#~ "The normal authentication method has failed. This means either your "
#~ "password is incorrect, or Yahoo!'s authentication scheme has changed. "
-#~ "Pidgin will now attempt to log in using Web Messenger authentication, which "
-#~ "will result in reduced functionality and features."
+#~ "Pidgin will now attempt to log in using Web Messenger authentication, "
+#~ "which will result in reduced functionality and features."
#~ msgstr ""
#~ "표준 인증 방식으로 실패했습니다. 이것은 사용 중인 비밀번호가 틀리거나 혹"
#~ "은 Yahoo! 의 인증 절차가 변경된 경우입니다. Pidgin은 웹 메신저 인증 방식"
diff --git a/po/ku.po b/po/ku.po
index 8eaf885314..1b01a73652 100644
--- a/po/ku.po
+++ b/po/ku.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
+"POT-Creation-Date: 2009-04-30 10:39-0400\n"
"PO-Revision-Date: 2007-02-26 09:48+0000\n"
"Last-Translator: Erdal Ronahi <erdal.ronahi@gmail.com>\n"
"Language-Team: Kurdish <gnu-ku-wergerandin@lists.sourceforge.net>\n"
@@ -36,7 +36,7 @@ msgid ""
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -634,20 +634,6 @@ msgid "Send To"
msgstr "_Bişîne"
#, fuzzy
-msgid "Invite message"
-msgstr "Peyam berde"
-
-msgid "Invite"
-msgstr "Vexwîne"
-
-#, fuzzy
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Heke bixwazî bi peyameke vewxendinê navê kesê ku dixwazî vexwînî jî têkevê."
-
-#, fuzzy
msgid "Conversation"
msgstr "Nivîsandin"
@@ -910,6 +896,42 @@ msgid "System Log"
msgstr "Tomarên Pergalê"
#, fuzzy
+msgid "Calling ... "
+msgstr "Tê hesibandin..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "Bipejirîne"
+
+#, fuzzy
+msgid "Reject"
+msgstr "Vala Bike"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "Te kanal da patkirin%s%s"
+
+msgid "call: Make an audio call."
+msgstr ""
+
+#, fuzzy
msgid "Emails"
msgstr "E-peyam"
@@ -946,6 +968,9 @@ msgstr "Girêde"
msgid "IM"
msgstr "IM"
+msgid "Invite"
+msgstr "Vexwîne"
+
#, fuzzy
msgid "(none)"
msgstr "(nav tune)"
@@ -1166,7 +1191,6 @@ msgstr "%s li derve. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s peyam ji te re şandiye. (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "Çalakiya hişyarkar a nayê zanîn. Ji kerema xwe re ragihîne!"
@@ -1221,7 +1245,6 @@ msgstr "_Xulke berê neamade bê diyar kirin:"
msgid "Change status to"
msgstr "_Rewşê biguherîne:"
-#. Conversations
msgid "Conversations"
msgstr "Nivîsandin"
@@ -1578,7 +1601,6 @@ msgstr ""
"Dema ku axaftineke nû vebe, ev pêvek dê axaftina dawî li axaftina derbasdar "
"zê de bike."
-#, c-format
msgid "Online"
msgstr "Girêdayî"
@@ -1627,6 +1649,28 @@ msgstr ""
msgid "Lastlog plugin."
msgstr ""
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "Hesab"
@@ -1725,14 +1769,6 @@ msgstr "Tu vexwendina axaftinê qebûl dikî?"
msgid "SSL Certificate Verification"
msgstr ""
-#. Number of actions
-msgid "Accept"
-msgstr "Bipejirîne"
-
-#, fuzzy
-msgid "Reject"
-msgstr "Vala Bike"
-
msgid "_View Certificate..."
msgstr ""
@@ -1870,6 +1906,17 @@ msgstr "%s ji odê derket."
msgid "%s left the room (%s)."
msgstr "%s ji odê derket (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Dest Bi Sohbetê Bike"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Heke bixwazî bi peyameke vewxendinê navê kesê ku dixwazî vexwînî jî têkevê."
+
#, fuzzy, c-format
msgid "Failed to get connection: %s"
msgstr "Li makekompîturê nehate girêdan."
@@ -2007,7 +2054,6 @@ msgstr "Veguhastina %s ji aliyê %s tê destpêkirin."
msgid "Transfer of file %s complete"
msgstr "Veguhêztina %s qediya"
-#, c-format
msgid "File transfer complete"
msgstr "Derbaskirina pelan temam e"
@@ -2015,7 +2061,6 @@ msgstr "Derbaskirina pelan temam e"
msgid "You canceled the transfer of %s"
msgstr "Te şandina %s'yê betal kir"
-#, c-format
msgid "File transfer cancelled"
msgstr "Şandina pelî hat betalkirin"
@@ -2204,7 +2249,6 @@ msgstr "(%s) %s <Bersiva-Bixweber>: %s↵\n"
msgid "You are using %s, but this plugin requires %s."
msgstr ""
-#, c-format
msgid "This plugin has not defined an ID."
msgstr ""
@@ -2696,6 +2740,32 @@ msgstr ""
msgid "Do not ask. Always save in pounce."
msgstr ""
+#, fuzzy
+msgid "One Time Password"
+msgstr "Şîfreyê Binivîse"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2900,7 +2970,6 @@ msgid ""
"Unable to establish connection with the local mDNS server. Is it running?"
msgstr ""
-#. Creating the options for the protocol
msgid "First name"
msgstr "Nav"
@@ -2935,6 +3004,11 @@ msgstr "Pêveka Protokla Yahooyê"
msgid "Purple Person"
msgstr "Kesê/a nû"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "Herêm"
+
msgid "Bonjour"
msgstr "Rojbaş"
@@ -3094,13 +3168,13 @@ msgstr "Ji bo kes sohbetekê hilbijêr: %s"
msgid "Add to chat..."
msgstr "Sohbetekê lê zêde bike..."
+#. Global
msgid "Available"
msgstr "Amade"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "Li derve"
@@ -3444,6 +3518,17 @@ msgstr ""
"Navê hesabê te yê hilbijartî ji alî pêşkêşker ve hate redkirin. Dibe ku "
"sembolên çewt hewandibe."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "Vî navê sohbetê vêga dixebite"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Leqeb"
+
msgid "Cannot change nick"
msgstr "Navê bikarhêner nayê guherandin"
@@ -3716,6 +3801,37 @@ msgstr "Xeletî: Ji pêşkêşkar bersiva nederbasdar"
msgid "SASL error"
msgstr "Çewtiya SASL"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "Navê xuya dibe tune."
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Guhertoya Nederbasdar"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr "Girêdana SSL li pêşkêşkerê nayê kirin."
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "Girêdana nû nehat çêkirin."
+
+msgid "Unable to create socket"
+msgstr "Girêdan venabe"
+
+msgid "Write error"
+msgstr "Xeletiya Nivîsandinê"
+
msgid "Full Name"
msgstr "Nav û paşnav"
@@ -3784,6 +3900,10 @@ msgstr "Bajar"
msgid "Operating System"
msgstr "Pergala Xebatê Veşêre"
+#, fuzzy
+msgid "Local Time"
+msgstr "Bikarhênera Herêmî"
+
msgid "Last Activity"
msgstr ""
@@ -4018,7 +4138,6 @@ msgstr "Amadeyê sohbetê"
msgid "Extended Away"
msgstr "Demeke Dirêj e Li Derve ye"
-#, c-format
msgid "Do Not Disturb"
msgstr "Mijûl Nekin"
@@ -4144,9 +4263,6 @@ msgstr "Li Odeyan Bigere"
msgid "You require encryption, but it is not available on this server."
msgstr ""
-msgid "Write error"
-msgstr "Xeletiya Nivîsandinê"
-
#, fuzzy
msgid "Ping timeout"
msgstr "Deqa rast"
@@ -4156,13 +4272,10 @@ msgstr "Çewtiya Xwendinê"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-msgid "Unable to create socket"
-msgstr "Girêdan venabe"
-
#, fuzzy
msgid "Invalid XMPP ID"
msgstr "ID'a nederbasdar"
@@ -4170,6 +4283,10 @@ msgstr "ID'a nederbasdar"
msgid "Invalid XMPP ID. Domain must be set."
msgstr ""
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Li makekompîturê nehate girêdan."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "Tomarkirina %s@%s qediya"
@@ -4262,9 +4379,18 @@ msgstr "Belgekirin"
msgid "Re-initializing Stream"
msgstr "Ji nû destpêkirina herikandinê"
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr "Destûr Nehat Dayîn"
+msgid "Mood"
+msgstr "Baş"
+
+msgid "Now Listening"
+msgstr ""
+
msgid "Both"
msgstr "Her du"
@@ -4286,12 +4412,6 @@ msgstr "Ne yek jî"
msgid "Subscription"
msgstr "Abone"
-msgid "Mood"
-msgstr "Baş"
-
-msgid "Now Listening"
-msgstr ""
-
#, fuzzy
msgid "Mood Text"
msgstr "Baş"
@@ -4536,18 +4656,24 @@ msgstr "%s nehat şandin"
msgid "Unable to ping user %s"
msgstr "%s nehat qedexekirin"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
+msgstr "Nikare deng bixebitîne (%s) ji ber ku pelê hilbijartî ne li gorê ye"
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
+msgstr "Nikare deng bixebitîne (%s) ji ber ku pelê hilbijartî ne li gorê ye"
#, fuzzy, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "Nikare deng bixebitîne (%s) ji ber ku pelê hilbijartî ne li gorê ye"
+#, c-format
+msgid "Buzzing %s..."
+msgstr ""
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
#, fuzzy
@@ -4558,9 +4684,39 @@ msgstr "Gurimm!!"
msgid "%s has buzzed you!"
msgstr "%s têketin pêk aniye."
-#, c-format
-msgid "Buzzing %s..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "Peyam ji %s re nehate şandin."
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
msgstr ""
+"Ji %s re pel nayê şandin, bikarhêner ji bo verêkirina pelan destûrê nade"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr ""
+"Ji %s re pel nayê şandin, bikarhêner ji bo verêkirina pelan destûrê nade"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "Tomarkirin Neqediya"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr ""
+"Ji kerema xwe re navê ekrayê yê bikarhênera/ê ku dixwazî agahiyên wê/î "
+"bibînî."
+
+#, fuzzy
+msgid "Select a Resource"
+msgstr "Pelekî hilbijêre"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "Dest Bi Sohbetê Bike"
msgid "config: Configure a chat room."
msgstr "config: Odeyeke sohbetê serast bike"
@@ -4719,6 +4875,21 @@ msgstr "Di tevlibûna sohbeta %s de xeletî"
msgid "Error in chat %s"
msgstr "Di sohbeta %s de xeletî"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "Di vekirina pelî de xeletiyek çêbû."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "Guheztina Pelgehê Bi Ser Neket"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Wêne nehat tomarkirin: %s\n"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4748,10 +4919,6 @@ msgstr ""
"bibînî."
#, fuzzy
-msgid "Select a Resource"
-msgstr "Pelekî hilbijêre"
-
-#, fuzzy
msgid "Edit User Mood"
msgstr "Modên Bikarhêner"
@@ -4791,9 +4958,20 @@ msgstr "Çalakî"
msgid "Select an action"
msgstr "Pelekî hilbijêre"
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr "Nikare \"%s\" lê zêde bike."
+
#, fuzzy
-msgid "Unable to retrieve MSN Address Book"
-msgstr "Girêdan venabe"
+msgid "Buddy Add error"
+msgstr "Şaşîtiya Lîsteya Kesan"
+
+#, fuzzy
+msgid "The username specified does not exist."
+msgstr "Navê dîmenê yê hatiye diyarkirin ne derbasdar e."
#, c-format
msgid "Buddy list synchronization issue in %s (%s)"
@@ -5023,7 +5201,7 @@ msgstr ""
msgid "Passport account not yet verified"
msgstr "Hesabê passport hê nehatiye piştrastkirin"
-#, fuzzy, c-format
+#, fuzzy
msgid "Passport account suspended"
msgstr "Hesabê passport hê nehatiye piştrastkirin"
@@ -5118,6 +5296,13 @@ msgstr "SMS bişîne."
msgid "Page"
msgstr "Rûpel"
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "Faqsa Kar"
+
msgid "Has you"
msgstr "Dixwazî"
@@ -5158,6 +5343,14 @@ msgstr "Navnîşan"
msgid "Album"
msgstr ""
+#, fuzzy
+msgid "Game Title"
+msgstr "Sernivîs"
+
+#, fuzzy
+msgid "Office Title"
+msgstr "Sernivîs"
+
msgid "Set Friendly Name..."
msgstr ""
@@ -5369,8 +5562,9 @@ msgid ""
msgstr ""
"Profîla bikarhêner a Pidgin venabe, dibe ku bikarhênereke/î wisa tune be."
-msgid "Profile URL"
-msgstr "URL'a Profîlê"
+#, fuzzy
+msgid "View web profile"
+msgstr "Dema negirêdayî be destûrê nade"
#. *< type
#. *< ui_requirement
@@ -5624,13 +5818,6 @@ msgstr "Têxe Deftera Navnîşanan"
msgid "Do you want to delete this buddy from your address book as well?"
msgstr "Tu dixwazî vî/ê li lîsteya xwe ya hevalan zêde bikî?"
-#. only notify the user about problems adding to the friends list
-#. * maybe we should do something else for other lists, but it probably
-#. * won't cause too many problems if we just ignore it
-#, c-format
-msgid "Unable to add \"%s\"."
-msgstr "Nikare \"%s\" lê zêde bike."
-
#, fuzzy
msgid "The username specified is invalid."
msgstr "Navê dîmenê yê hatiye diyarkirin ne derbasdar e."
@@ -5638,6 +5825,9 @@ msgstr "Navê dîmenê yê hatiye diyarkirin ne derbasdar e."
msgid "This Hotmail account may not be active."
msgstr "Dibe ku vî hesabê Hotmaîlê ne çalak be"
+msgid "Profile URL"
+msgstr "URL'a Profîlê"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5652,16 +5842,13 @@ msgstr "Dibe ku vî hesabê Hotmaîlê ne çalak be"
msgid "MSN Protocol Plugin"
msgstr "Pêveka Protokola IRC"
-msgid "Missing Cipher"
-msgstr ""
-
-msgid "The RC4 cipher could not be found"
+#, c-format
+msgid "No such user: %s"
msgstr ""
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
-msgstr ""
+#, fuzzy
+msgid "User lookup"
+msgstr "Jûrên Bikarhêneran"
#, fuzzy
msgid "Reading challenge"
@@ -5675,11 +5862,19 @@ msgstr "Xeletî: Ji pêşkêşkar bersiva nederbasdar"
msgid "Logging in"
msgstr "Tomar"
-#, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] ""
-msgstr[1] ""
+#, fuzzy
+msgid "MySpaceIM - No Username Set"
+msgstr "Nav tune"
+
+msgid "You appear to have no MySpace username."
+msgstr ""
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr ""
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr "Li pêşkêşkerê nehate girêdan."
#. Can't write _()'d strings in array initializers. Workaround.
#, fuzzy
@@ -5702,14 +5897,22 @@ msgid "MySpace"
msgstr ""
#, fuzzy
-msgid "MySpaceIM - No Username Set"
-msgstr "Nav tune"
+msgid "IM Friends"
+msgstr "_Paceya peyaman"
-msgid "You appear to have no MySpace username."
-msgstr ""
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+msgstr[1] ""
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
-msgstr ""
+#, fuzzy
+msgid "Add contacts from server"
+msgstr "Ji pêşkêşkarê bersiva xeletiyê"
#. The session is now set up, ready to be connected. This emits the
#. * signedOn signal, so clients can now do anything with msimprpl, and
@@ -5733,6 +5936,22 @@ msgid "MySpaceIM Error"
msgstr ""
#, fuzzy
+msgid "Invalid input condition"
+msgstr "GirÊdan qut bû."
+
+#, fuzzy
+msgid "Read buffer full (2)"
+msgstr "Lîste tije ye"
+
+#, fuzzy
+msgid "Unparseable message"
+msgstr "Peyam ji hev nayê veqetandin"
+
+#, fuzzy, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr "Bi pêşkêşkar re têkilî nehat danîn"
+
+#, fuzzy
msgid "Failed to add buddy"
msgstr "Bi kes re beşdarî sohbetê nebû"
@@ -5744,14 +5963,6 @@ msgstr "Lîsteya hevalan ji pelî bar bike..."
msgid "persist command failed"
msgstr "Tabloya mifteyan biserneket"
-#, c-format
-msgid "No such user: %s"
-msgstr ""
-
-#, fuzzy
-msgid "User lookup"
-msgstr "Jûrên Bikarhêneran"
-
#, fuzzy
msgid "Failed to remove buddy"
msgstr "Bi kes re beşdarî sohbetê nebû"
@@ -5763,39 +5974,16 @@ msgstr ""
msgid "blocklist command failed"
msgstr "Tabloya mifteyan biserneket"
-#, fuzzy
-msgid "Invalid input condition"
-msgstr "GirÊdan qut bû."
-
-#, fuzzy
-msgid "Read buffer full (2)"
-msgstr "Lîste tije ye"
-
-#, fuzzy
-msgid "Unparseable message"
-msgstr "Peyam ji hev nayê veqetandin"
-
-#, fuzzy, c-format
-msgid "Couldn't connect to host: %s (%d)"
-msgstr "Bi pêşkêşkar re têkilî nehat danîn"
+msgid "Missing Cipher"
+msgstr ""
-#, fuzzy
-msgid "IM Friends"
-msgstr "_Paceya peyaman"
+msgid "The RC4 cipher could not be found"
+msgstr ""
-#, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-msgstr[1] ""
-
-#, fuzzy
-msgid "Add contacts from server"
-msgstr "Ji pêşkêşkarê bersiva xeletiyê"
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
msgid "Add friends from MySpace.com"
msgstr ""
@@ -5844,9 +6032,6 @@ msgstr "Mezinahiya Fontê ya mezintirîn"
msgid "User"
msgstr "Bikarhêner"
-msgid "Profile"
-msgstr "Profîl"
-
#, fuzzy
msgid "Headline"
msgstr "Red Bike"
@@ -5862,17 +6047,6 @@ msgstr ""
msgid "Client Version"
msgstr "Axaftinê dade"
-#. Protocol won't log in now without a username set.. Disconnect
-#, fuzzy
-msgid "No username set"
-msgstr "Nav tune"
-
-msgid "MySpaceIM - Please Set a Username"
-msgstr ""
-
-msgid "Please enter a username to check its availability:"
-msgstr ""
-
#, fuzzy
msgid "MySpaceIM - Username Available"
msgstr "Servîs tune"
@@ -5883,6 +6057,9 @@ msgstr ""
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr ""
+msgid "MySpaceIM - Please Set a Username"
+msgstr ""
+
#, fuzzy
msgid "This username is unavailable."
msgstr "Di vê temayê de smiley nîn in."
@@ -5891,6 +6068,14 @@ msgstr "Di vê temayê de smiley nîn in."
msgid "Please try another username:"
msgstr "Ji kerema xwe re ji bo gruba ku hatiye hilbijartin navekî din bibîne."
+#. Protocol won't log in now without a username set.. Disconnect
+#, fuzzy
+msgid "No username set"
+msgstr "Nav tune"
+
+msgid "Please enter a username to check its availability:"
+msgstr ""
+
#. TODO: icons for each zap
#. Lots of comments for translators:
#. Zap means "to strike suddenly and forcefully as if with a
@@ -6280,7 +6465,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr "Xeletî. Desteka SSL nehatiye sazkirin."
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr "Ev konferans hat girtin. Êdî peyam nayên şandin."
@@ -6545,23 +6729,18 @@ msgstr "Kamera"
msgid "Screen Sharing"
msgstr "Navê Ekranê"
-#, c-format
msgid "Free For Chat"
msgstr "Li Benda Sohbetê ye"
-#, c-format
msgid "Not Available"
msgstr "Tune"
-#, c-format
msgid "Occupied"
msgstr "Mijûl"
-#, c-format
msgid "Web Aware"
msgstr ""
-#, c-format
msgid "Invisible"
msgstr "Nexuya"
@@ -6604,7 +6783,7 @@ msgid ""
"only letters, numbers and spaces, or contain only numbers."
msgstr ""
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
#, fuzzy
msgid "Invalid username."
@@ -6621,7 +6800,7 @@ msgstr "Hesabê ye ji bo niha hatiye rawestandin."
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr ""
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6657,11 +6836,9 @@ msgstr ""
msgid "_OK"
msgstr "Temam"
-#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
-msgstr ""
+#, fuzzy, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
+msgstr "Girêdana te ya bi pêşkêşkerê re qut bû."
#, fuzzy
msgid "Unable to get a valid AIM login hash."
@@ -6804,7 +6981,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] "Peyama %hu a ji %s ji ber sedemeke nayê zanîn, nehat ber destê te."
msgstr[1] "Peyama %hu a ji %s ji ber sedemeke nayê zanîn, nehat ber destê te."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "Peyam nehat şandin: %s"
@@ -6827,6 +7004,9 @@ msgstr "Maweya ku girêdayî mayî"
msgid "Member Since"
msgstr "Maweyê Girêdanê:"
+msgid "Profile"
+msgstr "Profîl"
+
msgid "Your AIM connection may be lost."
msgstr "Dibe ku girêdana te ya AIM winda bûbe."
@@ -7085,6 +7265,7 @@ msgstr "Girêde"
msgid "Get AIM Info"
msgstr "agahiyan bistîne"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr ""
@@ -7196,7 +7377,7 @@ msgstr ""
msgid "Attempting to connect to %s:%hu."
msgstr "Beralîkirina girêdanê tê ceribandin."
-#, fuzzy, c-format
+#, fuzzy
msgid "Attempting to connect via proxy server."
msgstr "Beralîkirina girêdanê tê ceribandin."
@@ -7303,7 +7484,7 @@ msgstr "Opera"
msgid "Visible"
msgstr "Nexuya"
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
#, fuzzy
@@ -7399,17 +7580,50 @@ msgstr "Rojanekirina dawî"
msgid "Could not change buddy information."
msgstr "Ji bo hişyarkirinê kesekê/î têkevê."
-#, c-format
-msgid "%d needs Q&A"
+msgid "Mobile"
+msgstr "Telefona Destan"
+
+msgid "Note"
+msgstr "Not"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "Wêne"
+
+msgid "Change his/her memo as you like"
msgstr ""
#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "Kesekê/î lê zêde bike"
+msgid "_Modify"
+msgstr "_Biguherîne"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "_Biguherîne"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "Pêşkêşkar mijûl e"
+
+msgid "Your request was accepted."
+msgstr ""
-msgid "Input answer here"
+msgid "Your request was rejected."
msgstr ""
+#, fuzzy, c-format
+msgid "%u requires verification"
+msgstr "Ji bo têketina %s 'ê vexwendin divê."
+
+#, fuzzy
+msgid "Add buddy question"
+msgstr "Vê/î kesê/î li lîsteya xwe ya kesan zêde bike"
+
+#, fuzzy
+msgid "Enter answer here"
+msgstr "Peldankeke Bikarhêner Hilbijêre"
+
msgid "Send"
msgstr "Bişîne"
@@ -7421,19 +7635,20 @@ msgstr "Şîfreya nederbasdar"
msgid "Authorization denied message:"
msgstr "Mezinahiya Peyamê ya Xelet:"
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr ""
#, fuzzy, c-format
-msgid "%d needs authentication"
+msgid "%u needs authorization"
msgstr "Nasname tê kontrolkirin"
#, fuzzy
msgid "Add buddy authorize"
msgstr "Vê/î kesê/î li lîsteya xwe ya kesan zêde bike"
-msgid "Input request here"
-msgstr ""
+#, fuzzy
+msgid "Enter request here"
+msgstr "Têkeve Pêşkêşkara Konferansekê"
#, fuzzy
msgid "Would you be my friend?"
@@ -7456,7 +7671,7 @@ msgid "Failed sending authorize"
msgstr "Ji kerema xwe re hesabekî çêbikin."
#, fuzzy, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr "Bi kes re beşdarî sohbetê nebû"
#, fuzzy, c-format
@@ -7502,6 +7717,10 @@ msgid "You can only search for permanent Qun\n"
msgstr ""
#, fuzzy
+msgid "(Invalid UTF-8 string)"
+msgstr "Mîhengên nederbasdar yên proxyê"
+
+#, fuzzy
msgid "Not member"
msgstr "Maweyê Girêdanê:"
@@ -7546,15 +7765,18 @@ msgstr ""
msgid "Join QQ Qun"
msgstr "Têkeve Sohbetê"
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
+msgid "Input request here"
msgstr ""
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "Hejmara Telefonê"
+
msgid "Successfully joined Qun"
msgstr ""
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
#, fuzzy
@@ -7565,7 +7787,7 @@ msgstr "Vebijartokên Deng"
msgid "Failed:"
msgstr "Serneket"
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
#, fuzzy
@@ -7577,11 +7799,11 @@ msgid ""
"this operation will eventually remove this Qun."
msgstr ""
-msgid "Sorry, you are not our style ..."
+msgid "Sorry, you are not our style"
msgstr ""
#, fuzzy
-msgid "Successfully changed Qun member"
+msgid "Successfully changed Qun members"
msgstr "Hejmara Telefonê"
#, fuzzy
@@ -7592,7 +7814,7 @@ msgid "You have successfully created a Qun"
msgstr ""
#, fuzzy
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr "Tu dixwazî ku vê wekî îkona heval mîheng bikî?"
#, fuzzy
@@ -7600,28 +7822,28 @@ msgid "Setup"
msgstr "_Mîheng bike"
#, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr ""
#, c-format
-msgid "%d request to join Qun %d"
+msgid "%u request to join Qun %u"
msgstr ""
#, fuzzy, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr "Bi kes re beşdarî sohbetê nebû"
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr "Jê bibe"
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "Jê bibe"
#, fuzzy, c-format
msgid "Unknown-%d"
@@ -7742,6 +7964,13 @@ msgstr "<b>Bikarhêner:</b> %s<br>"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<b>Maxlas:</b> %s<br>"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<br><b>Şexsî</b><br>%s"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7749,7 +7978,7 @@ msgid "<i>Feel free to join us!</i> :)"
msgstr ""
#, fuzzy, c-format
-msgid "About OpenQ r%s"
+msgid "About OpenQ %s"
msgstr "Derbarê Pidginê de"
#, fuzzy
@@ -7770,6 +7999,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "Derbarê Pidginê de"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Navnîşana malê"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7801,7 +8034,6 @@ msgstr ""
msgid "QQ2008"
msgstr ""
-#. #endif
#, fuzzy
msgid "Connect by TCP"
msgstr "Girêdide"
@@ -7814,6 +8046,9 @@ msgstr "hindik vebijartok nîşan bide"
msgid "Show server news"
msgstr "Hûragahiyên bikarhêneran nîşan bide"
+msgid "Show chat room when msg comes"
+msgstr ""
+
#, fuzzy
msgid "Keep alive interval (seconds)"
msgstr "Xeletiya xwendinê"
@@ -7823,11 +8058,7 @@ msgid "Update interval (seconds)"
msgstr "Xeletiya xwendinê"
#, fuzzy
-msgid "Can not decrypt server reply"
-msgstr "Agahiyên pêşkêşkerê nayên wergirtin"
-
-#, fuzzy
-msgid "Can not decrypt get server reply"
+msgid "Cannot decrypt server reply"
msgstr "Agahiyên pêşkêşkerê nayên wergirtin"
#, c-format
@@ -7850,20 +8081,21 @@ msgid "Activation required"
msgstr "Tomarbûn Divê"
#, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr ""
#, fuzzy
-msgid "Keep alive error"
-msgstr "Xeletiya xwendinê"
+msgid "Could not decrypt server reply"
+msgstr "Agahiyên pêşkêşkerê nayên wergirtin"
-msgid "Requesting captcha ..."
-msgstr ""
+#, fuzzy
+msgid "Requesting captcha"
+msgstr "Diyaloga Daxwazan"
-msgid "Checking code of captcha ..."
+msgid "Checking captcha"
msgstr ""
-msgid "Failed captcha verify"
+msgid "Failed captcha verification"
msgstr ""
#, fuzzy
@@ -7874,7 +8106,7 @@ msgstr "Wêneyê Tomar Bike"
msgid "Enter code"
msgstr "Şîfreyê Binivîse"
-msgid "QQ Captcha Verifing"
+msgid "QQ Captcha Verification"
msgstr ""
#, fuzzy
@@ -7882,16 +8114,15 @@ msgid "Enter the text from the image"
msgstr "Ji kerema xwe re navê gruba ku dixwazî bikeviyê, bikevê"
#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
+msgid "Unknown reply when checking password (0x%02X)"
msgstr ""
#, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
msgstr ""
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "Girêdan serneket."
@@ -7899,12 +8130,6 @@ msgstr "Girêdan serneket."
msgid "Socket error"
msgstr "Çewtiya Diyarkirinê"
-#, fuzzy, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr "Li pêşkêşkerê nehate girêdan."
-
#, fuzzy
msgid "Unable to read from socket"
msgstr "Xwendina socket serneket"
@@ -7917,11 +8142,11 @@ msgid "Connection lost"
msgstr "Girêdan Hate Qutkirin"
#, fuzzy
-msgid "Get server ..."
+msgid "Getting server"
msgstr "Agahiya Bikarhêner Biguherîne..."
#, fuzzy
-msgid "Request token"
+msgid "Requesting token"
msgstr "Daxwaz hat redkirin"
msgid "Couldn't resolve host"
@@ -7932,17 +8157,13 @@ msgid "Invalid server or port"
msgstr "Nav an jî şîfre çewt e"
#, fuzzy
-msgid "Connecting server ..."
-msgstr "Digel pêşkêşkar girêdan çêke"
+msgid "Connecting to server"
+msgstr "Li Pêşkêşkera SILC tê Girêdan"
#, fuzzy
msgid "QQ Error"
msgstr "Çewtiya Xwendinê"
-#, fuzzy
-msgid "Failed to send IM."
-msgstr "Peyam nehat şandin."
-
#, fuzzy, c-format
msgid ""
"Server News:\n"
@@ -7952,6 +8173,10 @@ msgid ""
msgstr "Navnîşana pêşkêşkar"
#, fuzzy, c-format
+msgid "%s:%s"
+msgstr "%s - %s (%s)"
+
+#, fuzzy, c-format
msgid "From %s:"
msgstr "Ji"
@@ -7961,32 +8186,30 @@ msgid ""
"%s"
msgstr "Avakerên pêşkêşker: %s"
-msgid "Unknow SERVER CMD"
-msgstr ""
+#, fuzzy
+msgid "Unknown SERVER CMD"
+msgstr "Sedema nenas."
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
#, fuzzy
msgid "QQ Qun Command"
msgstr "Ferman"
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr ""
-
-msgid "Can not decrypt login reply"
-msgstr ""
+#, fuzzy
+msgid "Could not decrypt login reply"
+msgstr "Agahiyên pêşkêşkerê nayên wergirtin"
#, fuzzy
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr "Sedema nenas."
#, fuzzy
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr "Sedema nenas."
#, fuzzy, c-format
@@ -8776,9 +8999,6 @@ msgstr "Rêxistin"
msgid "Unit"
msgstr "Yekitî"
-msgid "Note"
-msgstr "Not"
-
msgid "Join Chat"
msgstr "Têkeve Sohbetê"
@@ -9409,6 +9629,10 @@ msgstr "Girêdan venabe."
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr "Navên IRC'ê bi valahî çênabin"
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "hindik vebijartok nîşan bide"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -9443,192 +9667,10 @@ msgid "Auth Domain"
msgstr ""
#, c-format
-msgid "Looking up %s"
-msgstr ""
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Girêdan serneket (%s)"
-
-#, c-format
-msgid "Signon: %s"
-msgstr ""
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "Pelgeh nayê nivîsîn %s."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "Pelgeh nayê vekirin %s."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr ""
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "Bikarhêner %s danişîn venekiriye."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "Destûrê nade hişyariya %s."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr ""
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "Di %s de sohbet ne gengaz e."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "Tu pir zû peyaman ji bikarhênerê %s re dişîne."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr ""
-"Peyama ku ji aliyê %s hate şandin ji ber ku pir dirêj bû nehate xwendin."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr ""
-"Peyama ku ji aliyê %s hate şandin ji ber ku pir zû dihate şandin nehate "
-"stendin."
-
-#, c-format
-msgid "Failure."
-msgstr "Neserkeftî."
-
-#, c-format
-msgid "Too many matches."
-msgstr "Gelek encam heye."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr ""
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr ""
-
-#, fuzzy, c-format
-msgid "Email lookup restricted."
-msgstr "Lêgerîna e-peyaman hate qedexekirin."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr ""
-
-#, c-format
-msgid "No keywords."
-msgstr ""
-
-#, c-format
-msgid "User has no directory information."
-msgstr ""
-
-#, c-format
-msgid "Country not supported."
-msgstr "Welat nayê destekkirin."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Çewtiya nenas: %s."
-
-#, fuzzy, c-format
-msgid "Incorrect username or password."
-msgstr "Bernavê şaş yan jî şîfre"
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr ""
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "Asta te ya hişyariyan ji bo vekirina danişînê pir berz e."
-
-#, c-format
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
-msgstr ""
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "Çewtiyeke nenas ya girêdanê çêbû. %s"
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "Çewtiya nenas, %d, çêbû. Agahî: %s"
-
-msgid "Invalid Groupname"
-msgstr "Navê Komê Nederbasdar e."
-
-msgid "Connection Closed"
-msgstr "Girêdan Hate Qutkirin"
-
-msgid "Waiting for reply..."
-msgstr "Ji bo bersivê radiweste..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr ""
-
-msgid "Password Change Successful"
-msgstr "Şîfreya Te bi Awayekî Serkeftî Hate Guhertin."
-
-msgid "_Group:"
-msgstr "_Kom:"
-
-msgid "Get Dir Info"
-msgstr ""
-
-msgid "Set Dir Info"
-msgstr ""
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr ""
-
-msgid "File transfer failed; other side probably canceled."
-msgstr ""
-
-msgid "Could not connect for transfer."
-msgstr ""
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr ""
-
-#, fuzzy
-msgid "Save As..."
-msgstr "Îkonê Veşêre, Wekî..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%s requests you to send them a file"
+msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "Pêveka Protokola TOC"
-
-#, c-format
-msgid "%s has sent you a webcam invite, which is not yet supported."
+msgid "Your SMS was not delivered"
msgstr ""
msgid "Your Yahoo! message did not get sent."
@@ -9891,13 +9933,8 @@ msgstr "Girêdana sar 3"
msgid "Last Update"
msgstr "Rojanekirina dawî"
-#, c-format
-msgid "User information for %s unavailable"
-msgstr "Agahiyên bikarhiner ji bo %s tune"
-
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr ""
msgid ""
@@ -10213,9 +10250,6 @@ msgstr "Mijûl Nekin"
msgid "Extended away"
msgstr "Demeke Dirêj e Li Derve ye"
-msgid "Mobile"
-msgstr "Telefona Destan"
-
msgid "Listening to music"
msgstr ""
@@ -10257,16 +10291,6 @@ msgstr ""
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "Dema %s Dihate Xwendin Çewtî"
-
-#, 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 ""
-
msgid "Calculating..."
msgstr "Tê hesibandin..."
@@ -10345,6 +10369,14 @@ msgstr ""
msgid "Unable to connect to %s: %s"
msgstr "Bi pêşkêşkarê re girêdan pêk nehat."
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+"Daxwaza TLS/SSL a pêşkêşkar ji bo têketinê. Tu piştgiriyeke TLS/SSL nehat "
+"dîtin."
+
#, c-format
msgid " - %s"
msgstr ""
@@ -10378,6 +10410,16 @@ msgstr "Girêdan pêk nehat."
msgid "Address already in use."
msgstr "Vî navê sohbetê vêga dixebite"
+#, c-format
+msgid "Error Reading %s"
+msgstr "Dema %s Dihate Xwendin Çewtî"
+
+#, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+
msgid "Internet Messenger"
msgstr "Peyamnêra înternetê"
@@ -10425,10 +10467,8 @@ msgstr "Danezankarê peyamên nû"
msgid "Use this buddy _icon for this account:"
msgstr ""
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "Vebijartokên %s'yê"
+msgid "_Advanced"
+msgstr "_Pêşketî"
#, fuzzy
msgid "Use GNOME Proxy Settings"
@@ -10464,9 +10504,6 @@ msgstr "Heke tu bi rastî girtî xuyabikî"
msgid "you can see the butterflies mating"
msgstr "cotbûna perperîkan dibînî"
-msgid "Proxy Options"
-msgstr "Mîhengên Proxyê"
-
msgid "Proxy _type:"
msgstr "Cureyê_Proxyê:"
@@ -10495,8 +10532,9 @@ msgstr "_Bingehîn"
msgid "Create _this new account on the server"
msgstr ""
-msgid "_Advanced"
-msgstr "_Pêşketî"
+#, fuzzy
+msgid "_Proxy"
+msgstr "Pêşkêşkera cîgir (Proxy)"
msgid "Enabled"
msgstr "Çalak"
@@ -10564,6 +10602,17 @@ msgid "I_M"
msgstr "Peyam"
#, fuzzy
+msgid "_Audio Call"
+msgstr "_Sohbetekê lê zêde bike"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Sohbeta Bi Dîmen"
+
+#, fuzzy
msgid "_Send File..."
msgstr "Pelî _Bişîne"
@@ -10716,6 +10765,10 @@ msgstr ""
msgid "/Tools/_Certificates"
msgstr "/_Amûr/_Vebijêrk"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Amûr/_Li derve"
+
msgid "/Tools/Plu_gins"
msgstr "/Amûr/Pê_vek"
@@ -10725,10 +10778,6 @@ msgstr "/_Amûr/_Vebijêrk"
msgid "/Tools/Pr_ivacy"
msgstr "/Amûr/Ew_lekarî"
-#, fuzzy
-msgid "/Tools/Smile_y"
-msgstr "/Amûr/_Li derve"
-
msgid "/Tools/_File Transfers"
msgstr "/Amûr/_Şandina Pelan"
@@ -10853,8 +10902,8 @@ msgstr "Bi destan"
msgid "By status"
msgstr "Li Gorî rewşê"
-msgid "By log size"
-msgstr "Li gorî mezinahiya tomarbûnê"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10872,6 +10921,9 @@ msgstr "_Dîsa xwe girê bide"
msgid "Re-enable"
msgstr "Hesabeke Nû ya Jabber Biafirîne"
+msgid "SSL FAQs"
+msgstr ""
+
#, fuzzy
msgid "Welcome back!"
msgstr "%s dîsa hat"
@@ -10968,6 +11020,9 @@ msgstr ""
msgid "A_lias:"
msgstr "Navê ku xuya dibe"
+msgid "_Group:"
+msgstr "_Kom:"
+
msgid "Auto_join when account becomes online."
msgstr ""
@@ -11021,13 +11076,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr "Kesan Vexwîne Odeya Axaftinê"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Heke bixwazî bi peyameke vewxendinê navê kesê ku dixwazî vexwînî jî têkevê."
-
msgid "_Buddy:"
msgstr "_Kes:"
@@ -11104,6 +11152,22 @@ msgstr "/Ligelhevaxaftin/_Tomar Bike, Wekî..."
msgid "/Conversation/Clea_r Scrollback"
msgstr ""
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Ligelhevaxaftin/_Dade"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Ligelhevaxaftin/_Dade"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Ligelhevaxaftin/_Dade"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Nivîsandin/Tomarbûnan Nîşan Bide"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Nivîsandin/_Pelî Bişîne..."
@@ -11181,6 +11245,18 @@ msgstr "/_Ligelhevaxaftin"
msgid "/Conversation/View Log"
msgstr "/Nivîsandin/Tomaran Nîşan Bide"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Ligelhevaxaftin/_Dade"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Nivîsandin/Tomaran Nîşan Bide"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Ligelhevaxaftin/_Dade"
+
msgid "/Conversation/Send File..."
msgstr "/Ligelhevaxaftin/Pelî Bişîne..."
@@ -11371,6 +11447,9 @@ msgstr "Navnîşan"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "piştgirî"
@@ -11517,6 +11596,10 @@ msgid "Ubuntu Georgian Translators"
msgstr "Wergêrên Niha"
#, fuzzy
+msgid "Khmer"
+msgstr "Opera"
+
+#, fuzzy
msgid "Kannada"
msgstr "Qedexe"
@@ -11539,6 +11622,10 @@ msgid "Macedonian"
msgstr "Makedonî"
#, fuzzy
+msgid "Mongolian"
+msgstr "Makedonî"
+
+#, fuzzy
msgid "Bokmål Norwegian"
msgstr "Norwecî"
@@ -11647,8 +11734,25 @@ msgid ""
"<BR><BR>"
msgstr ""
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, fuzzy, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"4\">IRC:</FONT> #Pidgin on irc.freenode.net<BR><BR>"
+
#, fuzzy, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"4\">IRC:</FONT> #Pidgin on irc.freenode.net<BR><BR>"
msgid "Current Developers"
@@ -11974,16 +12078,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr "Danezankarê peyamên nû"
-#, fuzzy
-msgid "_Copy Email Address"
-msgstr "E-Peyamê _Ji Ber Bigire"
-
-msgid "_Open Link in Browser"
-msgstr "Girêdanê Di Gerokê de Veke"
-
-msgid "_Copy Link Location"
-msgstr "Girêdanê _Ji Ber Bigire"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12248,6 +12342,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12265,6 +12360,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12296,10 +12392,26 @@ msgstr ""
msgid "Pidgin"
msgstr "Rûpelkirin"
-msgid "Open All Messages"
-msgstr "Hemû peyaman veke"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "Tê hesibandin..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
msgstr ""
#, c-format
@@ -12331,6 +12443,30 @@ msgstr ""
"Fermana gerok a \"Bi destan mîheng bike\" hat hilbijartin lê tu ferman nehat "
"nivîsandin."
+msgid "Open All Messages"
+msgstr "Hemû peyaman veke"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr ""
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "Hişyarkara Nû"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr ""
+"<span weight=\"bold\" size=\"larger\">Peyam heye!</span>\n"
+"\n"
+"%s"
+
+#, fuzzy
+msgid "No message"
+msgstr "(peyamek)"
+
msgid "The following plugins will be unloaded."
msgstr ""
@@ -12385,6 +12521,10 @@ msgstr "<b>Hûragahiyên têketanê</b>"
msgid "Select a file"
msgstr "Pelekî hilbijêre"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Hişyarkarê Mîheng Bike"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr ""
@@ -12457,6 +12597,50 @@ msgstr "_Cardin xuyakirin"
msgid "Pounce Target"
msgstr ""
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "Destpêkên_nivisandinê"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "Bikarhêner dinivîse..."
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "Têketin"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "Ji rewşa betal _vegere"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "Ji derve vegriya"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "Dev Ji Nivîsandinê Berda"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "Derketin"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "%s neçalak bû"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "Dema Li derve be"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Peyamekê bişîne"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "Çalakiya hişyarkar a nayê zanîn. Ji kerema xwe re ragihîne!"
+
msgid "Smiley theme failed to unpack."
msgstr ""
@@ -12481,6 +12665,12 @@ msgstr "Kurterê"
msgid "Cl_ose conversations with the Escape key"
msgstr "Bi %s 'ê re axaftin"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Lîsteya Hevalan"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "Îkona negihiştî ya Pergalê"
@@ -12603,9 +12793,6 @@ msgstr ""
msgid "Cannot start browser configuration program."
msgstr "Agahiya bikarhêner nayê stendin"
-msgid "ST_UN server:"
-msgstr ""
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr ""
@@ -12630,6 +12817,10 @@ msgstr "_Destpêka bendergehê"
msgid "_End port:"
msgstr "_Dawiya Bêndergehê"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
#, fuzzy
msgid "Proxy Server &amp; Browser"
msgstr "Pêşkêşkara Proxyê"
@@ -12659,6 +12850,10 @@ msgstr "Pêşkêşkara Proxyê"
msgid "No proxy"
msgstr "Proxy tune"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "_Bikarhêner:"
@@ -12823,13 +13018,13 @@ msgstr ""
msgid "Auto-away"
msgstr "Li derveya bixweber"
-msgid "Change status when _idle"
-msgstr "Dema _vala be rewşê biguherîne"
-
#, fuzzy
msgid "_Minutes before becoming idle:"
msgstr "_Xulke berê neamade bê diyar kirin:"
+msgid "Change status when _idle"
+msgstr "Dema _vala be rewşê biguherîne"
+
msgid "Change _status to:"
msgstr "_Rewşê biguherîne:"
@@ -12984,6 +13179,12 @@ msgstr "_Tomar bike & Bikar bîne"
msgid "Status for %s"
msgstr "Rewşa %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
#, fuzzy
msgid "Custom Smiley"
msgstr "Smily têxê"
@@ -12994,15 +13195,15 @@ msgstr ""
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
+msgstr ""
+
#, fuzzy
msgid "Duplicate Shortcut"
msgstr "Pelgeha Mifteyên Giştî"
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
-msgstr ""
-
#, fuzzy
msgid "Please select an image for the smiley."
msgstr "Ji kerema xwe re ji bo gruba ku hatiye hilbijartin navekî din bibîne."
@@ -13016,18 +13217,22 @@ msgid "Add Smiley"
msgstr "Smile!"
#, fuzzy
-msgid "Smiley _Image"
+msgid "_Image:"
msgstr "Wêneyê Tomar Bike"
-#. Smiley shortcut
+#. Shortcut text
#, fuzzy
-msgid "Smiley S_hortcut"
+msgid "S_hortcut text:"
msgstr "Kurterê"
#, fuzzy
msgid "Smiley"
msgstr "Smile!"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "Kurterê"
+
msgid "Custom Smiley Manager"
msgstr ""
@@ -13152,6 +13357,17 @@ msgid ""
"Failed to load image '%s': reason not known, probably a corrupt image file"
msgstr ""
+#, fuzzy
+msgid "_Open Link"
+msgstr "Girêdanê veke:"
+
+msgid "_Copy Link Location"
+msgstr "Girêdanê _Ji Ber Bigire"
+
+#, fuzzy
+msgid "_Copy Email Address"
+msgstr "E-Peyamê _Ji Ber Bigire"
+
msgid "Save File"
msgstr "Pelgehê Tomar Bike"
@@ -14152,10 +14368,6 @@ msgid "Only when docked"
msgstr ""
#, fuzzy
-msgid "_Flash window when chat messages are received"
-msgstr "_Dema ku peyam bighîjin paceyê hişyar bike"
-
-#, fuzzy
msgid "Windows Pidgin Options"
msgstr "Vebijartokên Têketinê"
@@ -14207,6 +14419,153 @@ msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr ""
#, fuzzy
+#~ msgid "Invite message"
+#~ msgstr "Peyam berde"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Heke bixwazî bi peyameke vewxendinê navê kesê ku dixwazî vexwînî jî "
+#~ "têkevê."
+
+#, fuzzy
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "Girêdan venabe"
+
+#, fuzzy
+#~ msgid "Add buddy Q&A"
+#~ msgstr "Kesekê/î lê zêde bike"
+
+#, fuzzy
+#~ msgid "Can not decrypt get server reply"
+#~ msgstr "Agahiyên pêşkêşkerê nayên wergirtin"
+
+#, fuzzy
+#~ msgid "Keep alive error"
+#~ msgstr "Xeletiya xwendinê"
+
+#, fuzzy
+#~ msgid ""
+#~ "Lost connection with server:\n"
+#~ "%d, %s"
+#~ msgstr "Li pêşkêşkerê nehate girêdan."
+
+#, fuzzy
+#~ msgid "Connecting server ..."
+#~ msgstr "Digel pêşkêşkar girêdan çêke"
+
+#, fuzzy
+#~ msgid "Failed to send IM."
+#~ msgstr "Peyam nehat şandin."
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "Girêdan serneket (%s)"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "Pelgeh nayê nivîsîn %s."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "Pelgeh nayê vekirin %s."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "Bikarhêner %s danişîn venekiriye."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "Destûrê nade hişyariya %s."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "Di %s de sohbet ne gengaz e."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "Tu pir zû peyaman ji bikarhênerê %s re dişîne."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr ""
+#~ "Peyama ku ji aliyê %s hate şandin ji ber ku pir dirêj bû nehate xwendin."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr ""
+#~ "Peyama ku ji aliyê %s hate şandin ji ber ku pir zû dihate şandin nehate "
+#~ "stendin."
+
+#~ msgid "Failure."
+#~ msgstr "Neserkeftî."
+
+#~ msgid "Too many matches."
+#~ msgstr "Gelek encam heye."
+
+#, fuzzy
+#~ msgid "Email lookup restricted."
+#~ msgstr "Lêgerîna e-peyaman hate qedexekirin."
+
+#~ msgid "Country not supported."
+#~ msgstr "Welat nayê destekkirin."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Çewtiya nenas: %s."
+
+#, fuzzy
+#~ msgid "Incorrect username or password."
+#~ msgstr "Bernavê şaş yan jî şîfre"
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "Asta te ya hişyariyan ji bo vekirina danişînê pir berz e."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "Çewtiyeke nenas ya girêdanê çêbû. %s"
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "Çewtiya nenas, %d, çêbû. Agahî: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "Navê Komê Nederbasdar e."
+
+#~ msgid "Connection Closed"
+#~ msgstr "Girêdan Hate Qutkirin"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "Ji bo bersivê radiweste..."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "Şîfreya Te bi Awayekî Serkeftî Hate Guhertin."
+
+#, fuzzy
+#~ msgid "Save As..."
+#~ msgstr "Îkonê Veşêre, Wekî..."
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "Pêveka Protokola TOC"
+
+#~ msgid "User information for %s unavailable"
+#~ msgstr "Agahiyên bikarhiner ji bo %s tune"
+
+#~ msgid "%s Options"
+#~ msgstr "Vebijartokên %s'yê"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Mîhengên Proxyê"
+
+#~ msgid "By log size"
+#~ msgstr "Li gorî mezinahiya tomarbûnê"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "Girêdanê Di Gerokê de Veke"
+
+#, fuzzy
+#~ msgid "Smiley _Image"
+#~ msgstr "Wêneyê Tomar Bike"
+
+#, fuzzy
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "Kurterê"
+
+#, fuzzy
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "_Dema ku peyam bighîjin paceyê hişyar bike"
+
+#, fuzzy
#~ msgid "A group with the name already exists."
#~ msgstr "Peldankeke bi vî navê jixwe heye"
@@ -14275,13 +14634,6 @@ msgstr ""
#~ msgstr "Tu li xwe bawer î ku tu dixwazî peyama li derve \"%s\" rakî?"
#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr "%s - %s (%s)"
-
-#, fuzzy
#~ msgid "System Message"
#~ msgstr "Peyamê Bişîne"
@@ -14422,9 +14774,6 @@ msgstr ""
#~ msgid "Invalid screen name"
#~ msgstr "Navê Bikarhêner Nederbasdar e"
-#~ msgid "Unable to make SSL connection to server."
-#~ msgstr "Girêdana SSL li pêşkêşkerê nayê kirin."
-
#~ msgid "Too evil (sender)"
#~ msgstr "Gelek şandekên ne baş"
@@ -14720,15 +15069,6 @@ msgstr ""
#~ msgid "Insert image"
#~ msgstr "Wêne têxê"
-#~ msgid ""
-#~ "<span weight=\"bold\" size=\"larger\">You have mail!</span>\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr ""
-#~ "<span weight=\"bold\" size=\"larger\">Peyam heye!</span>\n"
-#~ "\n"
-#~ "%s"
-
#~ msgid "Send unknown \"_slash\" commands as messages"
#~ msgstr "Peyameke nenas \"_slash\" wekî ferman dişîne"
@@ -15046,7 +15386,8 @@ msgstr ""
#~ "Gives Pidgin the ability to be remote-controlled through third-party "
#~ "applications or through the Pidgin-remote tool."
#~ msgstr ""
-#~ "Pidgin bi sepanên guhertoya sêyem an jî bi Pidgin-remoteyê tê kontrolkirin."
+#~ "Pidgin bi sepanên guhertoya sêyem an jî bi Pidgin-remoteyê tê "
+#~ "kontrolkirin."
#~ msgid "Hide user details"
#~ msgstr "Hûragahiyên bikarhêneran veşêre"
@@ -15104,9 +15445,6 @@ msgstr ""
#~ msgid "Away title: "
#~ msgstr "Sernava li derve: "
-#~ msgid "Buddy List Error"
-#~ msgstr "Şaşîtiya Lîsteya Kesan"
-
#~ msgid "Unable to send message. The message is too large."
#~ msgstr "Ji ber ku peyama te zêde dirêj e, nehate şandin."
@@ -15459,9 +15797,6 @@ msgstr ""
#~ msgid "_Idle"
#~ msgstr "_Amadeyê de"
-#~ msgid "Retur_n from idle"
-#~ msgstr "Ji rewşa betal _vegere"
-
#~ msgid "Buddy starts _typing"
#~ msgstr "Destpêkirina nivîsandinê de"
@@ -15746,8 +16081,8 @@ msgstr ""
#~ "Pidgin was unable to connect to the buddy list server. Please try again "
#~ "later."
#~ msgstr ""
-#~ "Pidginê bi lîsteya te ya hevalan re têkilî daneynî. Ji kerema xwe re dû re "
-#~ "dîsa biceribîne."
+#~ "Pidginê bi lîsteya te ya hevalan re têkilî daneynî. Ji kerema xwe re dû "
+#~ "re dîsa biceribîne."
#~ msgid "Unable to access directory"
#~ msgstr "Negihîşt peldankê"
@@ -15875,9 +16210,6 @@ msgstr ""
#~ msgstr[0] "(%d peyam)"
#~ msgstr[1] "(peyamên %d )"
-#~ msgid "(1 message)"
-#~ msgstr "(peyamek)"
-
#~ msgid "second"
#~ msgid_plural "seconds"
#~ msgstr[0] "çirke"
diff --git a/po/lo.po b/po/lo.po
index 48a7a8b3be..c362e010c6 100644
--- a/po/lo.po
+++ b/po/lo.po
@@ -1,25 +1,26 @@
-# SOME DESCRIPTIVE TITLE.
+# translation of lo.po to Lao
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
+# Anousak Souphavanh <anousak@gmail.com>, 2007, 2009.
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: lo\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
-"PO-Revision-Date: 2007-09-28 09:52+0700\n"
+"POT-Creation-Date: 2009-05-26 22:29-0700\n"
+"PO-Revision-Date: 2009-04-29 09:28+0700\n"
"Last-Translator: Anousak Souphavanh <anousak@gmail.com>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language-Team: Lao <lo@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
# "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
#. Translators may want to transliterate the name.
#. It is not to be translated.
msgid "Finch"
-msgstr ""
+msgstr "ຟີນຊ໌"
#, c-format
msgid "%s. Try `%s -h' for more information.\n"
@@ -31,7 +32,7 @@ msgid ""
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -48,40 +49,40 @@ msgid "Error"
msgstr "ຜິດພາດ"
msgid "Account was not added"
-msgstr ""
+msgstr "ບໍ່ໃດ້ເພີ້ມບັນຊີ "
msgid "Username of an account must be non-empty."
-msgstr ""
+msgstr "ລະຫັດຜູ້ໃຊ້ຕ້ອງໃຫ້ມີຂໍ້ມູນ"
msgid "New mail notifications"
-msgstr ""
+msgstr "ອີເເມວລ໌ໃຫ່ມເຕືອນ"
msgid "Remember password"
-msgstr ""
+msgstr "ຈື່ລະຫັດພານ"
msgid "There are no protocol plugins installed."
msgstr ""
msgid "(You probably forgot to 'make install'.)"
-msgstr ""
+msgstr "ຄິດວ່າທ່ານລືມຂຽນ 'make install'"
msgid "Modify Account"
-msgstr ""
+msgstr "ປັບບັນຊີ"
msgid "New Account"
-msgstr ""
+msgstr "ບັນຊີໃຫມ່"
msgid "Protocol:"
-msgstr ""
+msgstr "ໂປໂຕໂກນ:"
msgid "Username:"
-msgstr ""
+msgstr "ຊື່ຜູ້ໃຊ້:"
msgid "Password:"
-msgstr ""
+msgstr "ລະຫັດພ່ານ:"
msgid "Alias:"
-msgstr ""
+msgstr "ຊື່ຫລີ້ນ:"
#. Register checkbox
msgid "Create this account on the server"
@@ -90,37 +91,37 @@ msgstr ""
#. Cancel button
#. Cancel
msgid "Cancel"
-msgstr ""
+msgstr "ຍົກເລີອກ"
#. Save button
#. Save
msgid "Save"
-msgstr ""
+msgstr "ບັນທຶກ"
#, c-format
msgid "Are you sure you want to delete %s?"
-msgstr ""
+msgstr "ເເນ່ທີ່ຈະລຶບ %s?"
msgid "Delete Account"
-msgstr ""
+msgstr "ລຶບບັນຊີ"
#. Delete button
msgid "Delete"
-msgstr ""
+msgstr "ລຶບ"
msgid "Accounts"
-msgstr ""
+msgstr "ບັນຊີທົວໄປ"
msgid "You can enable/disable accounts from the following list."
msgstr ""
#. Add button
msgid "Add"
-msgstr ""
+msgstr "ເພີ້ມ"
#. Modify button
msgid "Modify"
-msgstr ""
+msgstr "ປັບ"
#, c-format
msgid "%s%s%s%s has made %s his or her buddy%s%s"
@@ -137,20 +138,22 @@ msgid "Authorize buddy?"
msgstr ""
msgid "Authorize"
-msgstr ""
+msgstr "ອະນຸມັດ"
msgid "Deny"
-msgstr ""
+msgstr "ປະຕິເສດ"
#, c-format
msgid ""
"Online: %d\n"
"Total: %d"
msgstr ""
+"ອອນລາຍ: %d\n"
+"ຈໍານວນລວມ: %d"
#, c-format
msgid "Account: %s (%s)"
-msgstr ""
+msgstr "ບັນຊີ: %s (%s)"
#, c-format
msgid ""
@@ -564,17 +567,6 @@ msgstr ""
msgid "Send To"
msgstr ""
-msgid "Invite message"
-msgstr ""
-
-msgid "Invite"
-msgstr ""
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-
msgid "Conversation"
msgstr ""
@@ -812,6 +804,39 @@ msgstr ""
msgid "System Log"
msgstr ""
+msgid "Calling ... "
+msgstr ""
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr ""
+
+msgid "Reject"
+msgstr ""
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+msgid "You have rejected the call."
+msgstr ""
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr ""
@@ -846,6 +871,9 @@ msgstr ""
msgid "IM"
msgstr ""
+msgid "Invite"
+msgstr ""
+
msgid "(none)"
msgstr ""
@@ -1041,7 +1069,6 @@ msgstr ""
msgid "%s has sent you a message. (%s)"
msgstr ""
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr ""
@@ -1087,7 +1114,6 @@ msgstr ""
msgid "Change status to"
msgstr ""
-#. Conversations
msgid "Conversations"
msgstr ""
@@ -1398,7 +1424,6 @@ msgid ""
"conversation into the current conversation."
msgstr ""
-#, c-format
msgid "Online"
msgstr ""
@@ -1442,6 +1467,27 @@ msgstr ""
msgid "Lastlog plugin."
msgstr ""
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+msgid "TinyURL"
+msgstr ""
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr ""
@@ -1540,13 +1586,6 @@ msgstr ""
msgid "SSL Certificate Verification"
msgstr ""
-#. Number of actions
-msgid "Accept"
-msgstr ""
-
-msgid "Reject"
-msgstr ""
-
msgid "_View Certificate..."
msgstr ""
@@ -1633,6 +1672,8 @@ msgstr ""
msgid "+++ %s signed off"
msgstr ""
+#. Unknown error
+#. Unknown error!
msgid "Unknown error"
msgstr ""
@@ -1679,6 +1720,15 @@ msgstr ""
msgid "%s left the room (%s)."
msgstr ""
+msgid "Invite to chat"
+msgstr ""
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+
#, c-format
msgid "Failed to get connection: %s"
msgstr ""
@@ -1800,7 +1850,6 @@ msgstr ""
msgid "Transfer of file %s complete"
msgstr ""
-#, c-format
msgid "File transfer complete"
msgstr ""
@@ -1808,7 +1857,6 @@ msgstr ""
msgid "You canceled the transfer of %s"
msgstr ""
-#, c-format
msgid "File transfer cancelled"
msgstr ""
@@ -1993,7 +2041,6 @@ msgstr ""
msgid "You are using %s, but this plugin requires %s."
msgstr ""
-#, c-format
msgid "This plugin has not defined an ID."
msgstr ""
@@ -2450,6 +2497,31 @@ msgstr ""
msgid "Do not ask. Always save in pounce."
msgstr ""
+msgid "One Time Password"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2648,7 +2720,6 @@ msgid ""
"Unable to establish connection with the local mDNS server. Is it running?"
msgstr ""
-#. Creating the options for the protocol
msgid "First name"
msgstr ""
@@ -2680,6 +2751,10 @@ msgstr ""
msgid "Purple Person"
msgstr ""
+#. Creating the options for the protocol
+msgid "Local Port"
+msgstr ""
+
msgid "Bonjour"
msgstr ""
@@ -2835,13 +2910,13 @@ msgstr ""
msgid "Add to chat..."
msgstr ""
+#. Global
msgid "Available"
msgstr ""
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr ""
@@ -3178,6 +3253,16 @@ msgid ""
"invalid characters."
msgstr ""
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr ""
+
+msgid "Nickname in use"
+msgstr ""
+
msgid "Cannot change nick"
msgstr ""
@@ -3400,12 +3485,42 @@ msgstr ""
msgid "Server does not use any supported authentication method"
msgstr ""
+msgid "You require encryption, but it is not available on this server."
+msgstr ""
+
msgid "Invalid challenge from server"
msgstr ""
msgid "SASL error"
msgstr ""
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+msgid "No session ID given"
+msgstr ""
+
+msgid "Unsupported version of BOSH protocol"
+msgstr ""
+
+msgid "Unable to establish a connection with the server"
+msgstr ""
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+
+msgid "Unable to establish SSL connection"
+msgstr ""
+
+msgid "Unable to create socket"
+msgstr ""
+
+msgid "Write error"
+msgstr ""
+
msgid "Full Name"
msgstr ""
@@ -3470,6 +3585,9 @@ msgstr ""
msgid "Operating System"
msgstr ""
+msgid "Local Time"
+msgstr ""
+
msgid "Last Activity"
msgstr ""
@@ -3629,6 +3747,13 @@ msgstr ""
msgid "Resource"
msgstr ""
+#, c-format
+msgid "%s ago"
+msgstr ""
+
+msgid "Logged off"
+msgstr ""
+
msgid "Middle Name"
msgstr ""
@@ -3675,7 +3800,6 @@ msgstr ""
msgid "Extended Away"
msgstr ""
-#, c-format
msgid "Do Not Disturb"
msgstr ""
@@ -3794,10 +3918,14 @@ msgstr ""
msgid "Find Rooms"
msgstr ""
-msgid "You require encryption, but it is not available on this server."
+#, fuzzy
+msgid "Affiliations:"
+msgstr "ຊື່ຫລີ້ນ:"
+
+msgid "No users found"
msgstr ""
-msgid "Write error"
+msgid "Roles:"
msgstr ""
msgid "Ping timeout"
@@ -3808,11 +3936,8 @@ msgstr ""
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
-msgstr ""
-
-msgid "Unable to create socket"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
msgid "Invalid XMPP ID"
@@ -3821,6 +3946,9 @@ msgstr ""
msgid "Invalid XMPP ID. Domain must be set."
msgstr ""
+msgid "Malformed BOSH Connect Server"
+msgstr ""
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr ""
@@ -3905,9 +4033,18 @@ msgstr ""
msgid "Re-initializing Stream"
msgstr ""
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr ""
+msgid "Mood"
+msgstr ""
+
+msgid "Now Listening"
+msgstr ""
+
msgid "Both"
msgstr ""
@@ -3929,12 +4066,6 @@ msgstr ""
msgid "Subscription"
msgstr ""
-msgid "Mood"
-msgstr ""
-
-msgid "Now Listening"
-msgstr ""
-
msgid "Mood Text"
msgstr ""
@@ -4173,15 +4304,21 @@ msgid "Unable to ping user %s"
msgstr ""
#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+msgid "Unable to buzz, because there is nothing known about %s."
+msgstr ""
+
+#, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr ""
#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr ""
#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+msgid "Buzzing %s..."
msgstr ""
#. Yahoo only supports one attention command: the 'buzz'.
@@ -4194,7 +4331,30 @@ msgid "%s has buzzed you!"
msgstr ""
#, c-format
-msgid "Buzzing %s..."
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr ""
+
+#, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr ""
+
+#, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr ""
+
+msgid "Media Initiation Failed"
+msgstr ""
+
+#, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr ""
+
+msgid "Select a Resource"
+msgstr ""
+
+msgid "Initiate Media"
msgstr ""
msgid "config: Configure a chat room."
@@ -4216,13 +4376,13 @@ msgid "ban &lt;user&gt; [reason]: Ban a user from the room."
msgstr ""
msgid ""
-"affiliate &lt;user&gt; &lt;owner|admin|member|outcast|none&gt;: Set a user's "
-"affiliation with the room."
+"affiliate &lt;owner|admin|member|outcast|none&gt; [nick1] [nick2] ...: Get "
+"the users with an affiliation or set users' affiliation with the room."
msgstr ""
msgid ""
-"role &lt;user&gt; &lt;moderator|participant|visitor|none&gt;: Set a user's "
-"role in the room."
+"role &lt;moderator|participant|visitor|none&gt; [nick1] [nick2] ...: Get the "
+"users with an role or set users' role with the room."
msgstr ""
msgid "invite &lt;user&gt; [message]: Invite a user to the room."
@@ -4342,6 +4502,18 @@ msgstr ""
msgid "Error in chat %s"
msgstr ""
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr ""
+
+msgid "Transfer was closed."
+msgstr ""
+
+msgid "Failed to open the file"
+msgstr ""
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4365,9 +4537,6 @@ msgstr ""
msgid "Please select the resource of %s to which you would like to send a file"
msgstr ""
-msgid "Select a Resource"
-msgstr ""
-
msgid "Edit User Mood"
msgstr ""
@@ -4400,7 +4569,17 @@ msgstr ""
msgid "Select an action"
msgstr ""
-msgid "Unable to retrieve MSN Address Book"
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr ""
+
+msgid "Buddy Add error"
+msgstr ""
+
+msgid "The username specified does not exist."
msgstr ""
#, c-format
@@ -4627,7 +4806,6 @@ msgstr ""
msgid "Passport account not yet verified"
msgstr ""
-#, c-format
msgid "Passport account suspended"
msgstr ""
@@ -4716,6 +4894,12 @@ msgstr ""
msgid "Page"
msgstr ""
+msgid "Playing a game"
+msgstr ""
+
+msgid "Working"
+msgstr ""
+
msgid "Has you"
msgstr ""
@@ -4752,6 +4936,12 @@ msgstr ""
msgid "Album"
msgstr ""
+msgid "Game Title"
+msgstr ""
+
+msgid "Office Title"
+msgstr ""
+
msgid "Set Friendly Name..."
msgstr ""
@@ -4938,7 +5128,7 @@ msgid ""
"does not exist."
msgstr ""
-msgid "Profile URL"
+msgid "View web profile"
msgstr ""
#. *< type
@@ -4972,28 +5162,20 @@ msgid "Windows Live ID authentication:Invalid response"
msgstr ""
#, c-format
-msgid "%s is not a valid group."
-msgstr ""
-
-msgid "Unknown error."
+msgid "%s just sent you a Nudge!"
msgstr ""
#, c-format
-msgid "%s on %s (%s)"
+msgid "Unknown error (%d): %s"
msgstr ""
-#, c-format
-msgid "%s just sent you a Nudge!"
+msgid "Unable to add user"
msgstr ""
-#. char *adl = g_strndup(payload, len);
#, c-format
msgid "Unknown error (%d)"
msgstr ""
-msgid "Unable to add user"
-msgstr ""
-
msgid "The following users are missing from your addressbook"
msgstr ""
@@ -5020,13 +5202,10 @@ msgstr ""
msgid "Service Temporarily Unavailable."
msgstr ""
-msgid "Mobile message was not sent because it was too long."
-msgstr ""
-
-msgid "Unable to rename group"
+msgid "Unknown error."
msgstr ""
-msgid "Unable to delete group"
+msgid "Mobile message was not sent because it was too long."
msgstr ""
#, c-format
@@ -5153,33 +5332,21 @@ msgstr ""
msgid "Message may have not been sent because an unknown error occurred:"
msgstr ""
-#, c-format
-msgid "%s has added you to his or her buddy list."
-msgstr ""
-
-#, c-format
-msgid "%s has removed you from his or her buddy list."
-msgstr ""
-
msgid "Delete Buddy from Address Book?"
msgstr ""
msgid "Do you want to delete this buddy from your address book as well?"
msgstr ""
-#. only notify the user about problems adding to the friends list
-#. * maybe we should do something else for other lists, but it probably
-#. * won't cause too many problems if we just ignore it
-#, c-format
-msgid "Unable to add \"%s\"."
-msgstr ""
-
msgid "The username specified is invalid."
msgstr ""
msgid "This Hotmail account may not be active."
msgstr ""
+msgid "Profile URL"
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5193,15 +5360,33 @@ msgstr ""
msgid "MSN Protocol Plugin"
msgstr ""
-msgid "Missing Cipher"
+#, c-format
+msgid "%s is not a valid group."
msgstr ""
-msgid "The RC4 cipher could not be found"
+#, c-format
+msgid "%s on %s (%s)"
msgstr ""
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
+msgid "Unable to rename group"
+msgstr ""
+
+msgid "Unable to delete group"
+msgstr ""
+
+#, c-format
+msgid "%s has added you to his or her buddy list."
+msgstr ""
+
+#, c-format
+msgid "%s has removed you from his or her buddy list."
+msgstr ""
+
+#, c-format
+msgid "No such user: %s"
+msgstr ""
+
+msgid "User lookup"
msgstr ""
msgid "Reading challenge"
@@ -5213,13 +5398,21 @@ msgstr ""
msgid "Logging in"
msgstr ""
-#, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] ""
-msgstr[1] ""
+msgid "MySpaceIM - No Username Set"
+msgstr ""
+
+msgid "You appear to have no MySpace username."
+msgstr ""
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr ""
+
+msgid "Lost connection with server"
+msgstr ""
#. Can't write _()'d strings in array initializers. Workaround.
+#. khc: then use N_() in the array initializer and use _() when they are
+#. used
msgid "New mail messages"
msgstr ""
@@ -5238,13 +5431,20 @@ msgstr ""
msgid "MySpace"
msgstr ""
-msgid "MySpaceIM - No Username Set"
+msgid "IM Friends"
msgstr ""
-msgid "You appear to have no MySpace username."
-msgstr ""
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+msgstr[1] ""
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgid "Add contacts from server"
msgstr ""
#. The session is now set up, ready to be connected. This emits the
@@ -5268,58 +5468,46 @@ msgstr ""
msgid "MySpaceIM Error"
msgstr ""
-msgid "Failed to add buddy"
+msgid "Invalid input condition"
msgstr ""
-msgid "'addbuddy' command failed."
+msgid "Read buffer full (2)"
msgstr ""
-msgid "persist command failed"
+msgid "Unparseable message"
msgstr ""
#, c-format
-msgid "No such user: %s"
-msgstr ""
-
-msgid "User lookup"
+msgid "Couldn't connect to host: %s (%d)"
msgstr ""
-msgid "Failed to remove buddy"
+msgid "Failed to add buddy"
msgstr ""
-msgid "'delbuddy' command failed"
+msgid "'addbuddy' command failed."
msgstr ""
-msgid "blocklist command failed"
+msgid "persist command failed"
msgstr ""
-msgid "Invalid input condition"
+msgid "Failed to remove buddy"
msgstr ""
-msgid "Read buffer full (2)"
+msgid "'delbuddy' command failed"
msgstr ""
-msgid "Unparseable message"
+msgid "blocklist command failed"
msgstr ""
-#, c-format
-msgid "Couldn't connect to host: %s (%d)"
+msgid "Missing Cipher"
msgstr ""
-msgid "IM Friends"
+msgid "The RC4 cipher could not be found"
msgstr ""
-#, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "Add contacts from server"
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
msgstr ""
msgid "Add friends from MySpace.com"
@@ -5362,9 +5550,6 @@ msgstr ""
msgid "User"
msgstr ""
-msgid "Profile"
-msgstr ""
-
msgid "Headline"
msgstr ""
@@ -5377,29 +5562,29 @@ msgstr ""
msgid "Client Version"
msgstr ""
-#. Protocol won't log in now without a username set.. Disconnect
-msgid "No username set"
+msgid "MySpaceIM - Username Available"
msgstr ""
-msgid "MySpaceIM - Please Set a Username"
+msgid "This username is available. Would you like to set it?"
msgstr ""
-msgid "Please enter a username to check its availability:"
+msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr ""
-msgid "MySpaceIM - Username Available"
+msgid "MySpaceIM - Please Set a Username"
msgstr ""
-msgid "This username is available. Would you like to set it?"
+msgid "This username is unavailable."
msgstr ""
-msgid "ONCE SET, THIS CANNOT BE CHANGED!"
+msgid "Please try another username:"
msgstr ""
-msgid "This username is unavailable."
+#. Protocol won't log in now without a username set.. Disconnect
+msgid "No username set"
msgstr ""
-msgid "Please try another username:"
+msgid "Please enter a username to check its availability:"
msgstr ""
#. TODO: icons for each zap
@@ -5773,7 +5958,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr ""
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr ""
@@ -6027,23 +6211,18 @@ msgstr ""
msgid "Screen Sharing"
msgstr ""
-#, c-format
msgid "Free For Chat"
msgstr ""
-#, c-format
msgid "Not Available"
msgstr ""
-#, c-format
msgid "Occupied"
msgstr ""
-#, c-format
msgid "Web Aware"
msgstr ""
-#, c-format
msgid "Invisible"
msgstr ""
@@ -6085,7 +6264,7 @@ msgid ""
"only letters, numbers and spaces, or contain only numbers."
msgstr ""
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr ""
@@ -6101,7 +6280,7 @@ msgstr ""
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr ""
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6134,9 +6313,7 @@ msgid "_OK"
msgstr ""
#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
+msgid "You may be disconnected shortly. If so, check %s for updates."
msgstr ""
msgid "Unable to get a valid AIM login hash."
@@ -6263,7 +6440,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] ""
msgstr[1] ""
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr ""
@@ -6285,6 +6462,9 @@ msgstr ""
msgid "Member Since"
msgstr ""
+msgid "Profile"
+msgstr ""
+
msgid "Your AIM connection may be lost."
msgstr ""
@@ -6529,6 +6709,7 @@ msgstr ""
msgid "Get AIM Info"
msgstr ""
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr ""
@@ -6631,7 +6812,6 @@ msgstr ""
msgid "Attempting to connect to %s:%hu."
msgstr ""
-#, c-format
msgid "Attempting to connect via proxy server."
msgstr ""
@@ -6723,7 +6903,7 @@ msgstr ""
msgid "Visible"
msgstr ""
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
msgid "Private"
@@ -6798,14 +6978,42 @@ msgstr ""
msgid "Could not change buddy information."
msgstr ""
+msgid "Mobile"
+msgstr ""
+
+msgid "Note"
+msgstr ""
+
+#. callback
+msgid "Buddy Memo"
+msgstr ""
+
+msgid "Change his/her memo as you like"
+msgstr ""
+
+msgid "_Modify"
+msgstr ""
+
+msgid "Memo Modify"
+msgstr ""
+
+msgid "Server says:"
+msgstr ""
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
#, c-format
-msgid "%d needs Q&A"
+msgid "%u requires verification"
msgstr ""
-msgid "Add buddy Q&A"
+msgid "Add buddy question"
msgstr ""
-msgid "Input answer here"
+msgid "Enter answer here"
msgstr ""
msgid "Send"
@@ -6817,17 +7025,17 @@ msgstr ""
msgid "Authorization denied message:"
msgstr ""
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr ""
#, c-format
-msgid "%d needs authentication"
+msgid "%u needs authorization"
msgstr ""
msgid "Add buddy authorize"
msgstr ""
-msgid "Input request here"
+msgid "Enter request here"
msgstr ""
msgid "Would you be my friend?"
@@ -6846,7 +7054,7 @@ msgid "Failed sending authorize"
msgstr ""
#, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr ""
#, c-format
@@ -6887,6 +7095,9 @@ msgstr ""
msgid "You can only search for permanent Qun\n"
msgstr ""
+msgid "(Invalid UTF-8 string)"
+msgstr ""
+
msgid "Not member"
msgstr ""
@@ -6920,15 +7131,18 @@ msgstr ""
msgid "Join QQ Qun"
msgstr ""
+msgid "Input request here"
+msgstr ""
+
#, c-format
-msgid "Successfully joined Qun %s (%d)"
+msgid "Successfully joined Qun %s (%u)"
msgstr ""
msgid "Successfully joined Qun"
msgstr ""
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
msgid "QQ Qun Operation"
@@ -6937,7 +7151,7 @@ msgstr ""
msgid "Failed:"
msgstr ""
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
msgid "Quit Qun"
@@ -6948,10 +7162,10 @@ msgid ""
"this operation will eventually remove this Qun."
msgstr ""
-msgid "Sorry, you are not our style ..."
+msgid "Sorry, you are not our style"
msgstr ""
-msgid "Successfully changed Qun member"
+msgid "Successfully changed Qun members"
msgstr ""
msgid "Successfully changed Qun information"
@@ -6960,34 +7174,34 @@ msgstr ""
msgid "You have successfully created a Qun"
msgstr ""
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr ""
msgid "Setup"
msgstr ""
#, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr ""
#, c-format
-msgid "%d request to join Qun %d"
+msgid "%u request to join Qun %u"
msgstr ""
#, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr ""
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
#, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr ""
#, c-format
-msgid "<b>New buddy %d joined.</b>"
+msgid "<b>New buddy %u joined.</b>"
msgstr ""
#, c-format
@@ -7098,6 +7312,12 @@ msgstr ""
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr ""
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr ""
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7105,7 +7325,7 @@ msgid "<i>Feel free to join us!</i> :)"
msgstr ""
#, c-format
-msgid "About OpenQ r%s"
+msgid "About OpenQ %s"
msgstr ""
msgid "Change Icon"
@@ -7123,6 +7343,9 @@ msgstr ""
msgid "About OpenQ"
msgstr ""
+msgid "Modify Buddy Memo"
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7151,7 +7374,6 @@ msgstr ""
msgid "QQ2008"
msgstr ""
-#. #endif
msgid "Connect by TCP"
msgstr ""
@@ -7161,16 +7383,16 @@ msgstr ""
msgid "Show server news"
msgstr ""
-msgid "Keep alive interval (seconds)"
+msgid "Show chat room when msg comes"
msgstr ""
-msgid "Update interval (seconds)"
+msgid "Keep alive interval (seconds)"
msgstr ""
-msgid "Can not decrypt server reply"
+msgid "Update interval (seconds)"
msgstr ""
-msgid "Can not decrypt get server reply"
+msgid "Cannot decrypt server reply"
msgstr ""
#, c-format
@@ -7192,19 +7414,19 @@ msgid "Activation required"
msgstr ""
#, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr ""
-msgid "Keep alive error"
+msgid "Could not decrypt server reply"
msgstr ""
-msgid "Requesting captcha ..."
+msgid "Requesting captcha"
msgstr ""
-msgid "Checking code of captcha ..."
+msgid "Checking captcha"
msgstr ""
-msgid "Failed captcha verify"
+msgid "Failed captcha verification"
msgstr ""
msgid "Captcha Image"
@@ -7213,35 +7435,28 @@ msgstr ""
msgid "Enter code"
msgstr ""
-msgid "QQ Captcha Verifing"
+msgid "QQ Captcha Verification"
msgstr ""
msgid "Enter the text from the image"
msgstr ""
#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
+msgid "Unknown reply when checking password (0x%02X)"
msgstr ""
#, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
msgstr ""
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr ""
msgid "Socket error"
msgstr ""
-#, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr ""
-
msgid "Unable to read from socket"
msgstr ""
@@ -7251,10 +7466,10 @@ msgstr ""
msgid "Connection lost"
msgstr ""
-msgid "Get server ..."
+msgid "Getting server"
msgstr ""
-msgid "Request token"
+msgid "Requesting token"
msgstr ""
msgid "Couldn't resolve host"
@@ -7263,16 +7478,13 @@ msgstr ""
msgid "Invalid server or port"
msgstr ""
-msgid "Connecting server ..."
+msgid "Connecting to server"
msgstr ""
#, fuzzy
msgid "QQ Error"
msgstr "ຜິດພາດ"
-msgid "Failed to send IM."
-msgstr ""
-
#, c-format
msgid ""
"Server News:\n"
@@ -7282,6 +7494,10 @@ msgid ""
msgstr ""
#, c-format
+msgid "%s:%s"
+msgstr ""
+
+#, c-format
msgid "From %s:"
msgstr ""
@@ -7291,29 +7507,25 @@ msgid ""
"%s"
msgstr ""
-msgid "Unknow SERVER CMD"
+msgid "Unknown SERVER CMD"
msgstr ""
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
msgid "QQ Qun Command"
msgstr ""
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr ""
-
-msgid "Can not decrypt login reply"
+msgid "Could not decrypt login reply"
msgstr ""
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr ""
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr ""
#, c-format
@@ -8087,9 +8299,6 @@ msgstr ""
msgid "Unit"
msgstr ""
-msgid "Note"
-msgstr ""
-
msgid "Join Chat"
msgstr ""
@@ -8694,6 +8903,9 @@ msgstr ""
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr ""
+msgid "SIP connect server not specified"
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -8728,208 +8940,54 @@ msgid "Auth Domain"
msgstr ""
#, c-format
-msgid "Looking up %s"
-msgstr ""
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr ""
-
-#, c-format
-msgid "Signon: %s"
-msgstr ""
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr ""
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr ""
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr ""
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr ""
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr ""
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr ""
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr ""
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr ""
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr ""
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr ""
-
-#, c-format
-msgid "Failure."
-msgstr ""
-
-#, c-format
-msgid "Too many matches."
-msgstr ""
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr ""
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr ""
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr ""
-
-#, c-format
-msgid "Keyword ignored."
-msgstr ""
-
-#, c-format
-msgid "No keywords."
-msgstr ""
-
-#, c-format
-msgid "User has no directory information."
-msgstr ""
-
-#, c-format
-msgid "Country not supported."
-msgstr ""
-
-#, c-format
-msgid "Failure unknown: %s."
+msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
-#, c-format
-msgid "Incorrect username or password."
+msgid "Your SMS was not delivered"
msgstr ""
-#, c-format
-msgid "The service is temporarily unavailable."
+msgid "Your Yahoo! message did not get sent."
msgstr ""
#, c-format
-msgid "Your warning level is currently too high to log in."
+msgid "Yahoo! system message for %s:"
msgstr ""
#, c-format
msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
-msgstr ""
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr ""
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr ""
-
-msgid "Invalid Groupname"
-msgstr ""
-
-msgid "Connection Closed"
-msgstr ""
-
-msgid "Waiting for reply..."
-msgstr ""
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr ""
-
-msgid "Password Change Successful"
-msgstr ""
-
-msgid "_Group:"
-msgstr ""
-
-msgid "Get Dir Info"
-msgstr ""
-
-msgid "Set Dir Info"
-msgstr ""
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr ""
-
-msgid "File transfer failed; other side probably canceled."
-msgstr ""
-
-msgid "Could not connect for transfer."
-msgstr ""
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr ""
-
-msgid "Save As..."
+"%s has (retroactively) denied your request to add them to your list for the "
+"following reason: %s."
msgstr ""
#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%s requests you to send them a file"
+msgid "%s has (retroactively) denied your request to add them to your list."
msgstr ""
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
+msgid "Add buddy rejected"
msgstr ""
-#, c-format
-msgid "%s has sent you a webcam invite, which is not yet supported."
+#. Some error in the received stream
+msgid "Received invalid data"
msgstr ""
-msgid "Your Yahoo! message did not get sent."
+#. Password incorrect
+msgid "Incorrect Password"
msgstr ""
-#, c-format
-msgid "Yahoo! system message for %s:"
+#. security lock from too many failed login attempts
+msgid "Account locked: Too many failed login attempts"
msgstr ""
-#, c-format
-msgid ""
-"%s has (retroactively) denied your request to add them to your list for the "
-"following reason: %s."
+#. the username does not exist
+msgid "Username does not exist"
msgstr ""
-#, c-format
-msgid "%s has (retroactively) denied your request to add them to your list."
+#. indicates a lock of some description
+msgid "Account locked: See the debug log"
msgstr ""
-msgid "Add buddy rejected"
+#. username or password missing
+msgid "Username or password missing"
msgstr ""
#, c-format
@@ -9161,13 +9219,8 @@ msgstr ""
msgid "Last Update"
msgstr ""
-#, c-format
-msgid "User information for %s unavailable"
-msgstr ""
-
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr ""
msgid ""
@@ -9469,9 +9522,6 @@ msgstr ""
msgid "Extended away"
msgstr ""
-msgid "Mobile"
-msgstr ""
-
msgid "Listening to music"
msgstr ""
@@ -9513,16 +9563,6 @@ msgstr ""
msgid "%x %X"
msgstr ""
-#, c-format
-msgid "Error Reading %s"
-msgstr ""
-
-#, 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 ""
-
msgid "Calculating..."
msgstr ""
@@ -9596,6 +9636,12 @@ msgid "Unable to connect to %s: %s"
msgstr ""
#, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+
+#, c-format
msgid " - %s"
msgstr ""
@@ -9628,6 +9674,16 @@ msgstr ""
msgid "Address already in use."
msgstr ""
+#, c-format
+msgid "Error Reading %s"
+msgstr ""
+
+#, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+
msgid "Internet Messenger"
msgstr ""
@@ -9670,9 +9726,7 @@ msgstr ""
msgid "Use this buddy _icon for this account:"
msgstr ""
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
+msgid "_Advanced"
msgstr ""
msgid "Use GNOME Proxy Settings"
@@ -9708,9 +9762,6 @@ msgstr ""
msgid "you can see the butterflies mating"
msgstr ""
-msgid "Proxy Options"
-msgstr ""
-
msgid "Proxy _type:"
msgstr ""
@@ -9738,7 +9789,7 @@ msgstr ""
msgid "Create _this new account on the server"
msgstr ""
-msgid "_Advanced"
+msgid "_Proxy"
msgstr ""
msgid "Enabled"
@@ -9776,15 +9827,16 @@ msgstr ""
msgid "Please update the necessary fields."
msgstr ""
-msgid "Room _List"
-msgstr ""
+#, fuzzy
+msgid "A_ccount"
+msgstr "ບັນຊີທົວໄປ"
msgid ""
"Please enter the appropriate information about the chat you would like to "
"join.\n"
msgstr ""
-msgid "_Account:"
+msgid "Room _List"
msgstr ""
msgid "_Block"
@@ -9802,6 +9854,15 @@ msgstr ""
msgid "I_M"
msgstr ""
+msgid "_Audio Call"
+msgstr ""
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+msgid "_Video Call"
+msgstr ""
+
msgid "_Send File..."
msgstr ""
@@ -9936,6 +9997,9 @@ msgstr ""
msgid "/Tools/_Certificates"
msgstr ""
+msgid "/Tools/Custom Smile_ys"
+msgstr ""
+
msgid "/Tools/Plu_gins"
msgstr ""
@@ -9945,9 +10009,6 @@ msgstr ""
msgid "/Tools/Pr_ivacy"
msgstr ""
-msgid "/Tools/Smile_y"
-msgstr ""
-
msgid "/Tools/_File Transfers"
msgstr ""
@@ -10061,7 +10122,7 @@ msgstr ""
msgid "By status"
msgstr ""
-msgid "By log size"
+msgid "By recent log activity"
msgstr ""
#, c-format
@@ -10078,6 +10139,9 @@ msgstr ""
msgid "Re-enable"
msgstr ""
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr ""
@@ -10156,6 +10220,9 @@ msgstr ""
msgid "A_lias:"
msgstr ""
+msgid "_Group:"
+msgstr ""
+
msgid "Auto_join when account becomes online."
msgstr ""
@@ -10206,12 +10273,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr ""
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-
msgid "_Buddy:"
msgstr ""
@@ -10286,6 +10347,18 @@ msgstr ""
msgid "/Conversation/Clea_r Scrollback"
msgstr ""
+msgid "/Conversation/M_edia"
+msgstr ""
+
+msgid "/Conversation/Media/_Audio Call"
+msgstr ""
+
+msgid "/Conversation/Media/_Video Call"
+msgstr ""
+
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr ""
+
msgid "/Conversation/Se_nd File..."
msgstr ""
@@ -10358,6 +10431,15 @@ msgstr ""
msgid "/Conversation/View Log"
msgstr ""
+msgid "/Conversation/Media/Audio Call"
+msgstr ""
+
+msgid "/Conversation/Media/Video Call"
+msgstr ""
+
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr ""
+
msgid "/Conversation/Send File..."
msgstr ""
@@ -10538,6 +10620,9 @@ msgstr ""
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr ""
@@ -10662,6 +10747,9 @@ msgstr ""
msgid "Hungarian"
msgstr ""
+msgid "Armenian"
+msgstr ""
+
msgid "Indonesian"
msgstr ""
@@ -10677,6 +10765,9 @@ msgstr ""
msgid "Ubuntu Georgian Translators"
msgstr ""
+msgid "Khmer"
+msgstr ""
+
msgid "Kannada"
msgstr ""
@@ -10698,6 +10789,9 @@ msgstr ""
msgid "Macedonian"
msgstr ""
+msgid "Mongolian"
+msgstr ""
+
msgid "Bokmål Norwegian"
msgstr ""
@@ -10752,6 +10846,9 @@ msgstr ""
msgid "Swedish"
msgstr ""
+msgid "Swahili"
+msgstr ""
+
msgid "Tamil"
msgstr ""
@@ -10803,7 +10900,24 @@ msgid ""
msgstr ""
#, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr ""
+
+#, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr ""
msgid "Current Developers"
@@ -11098,15 +11212,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr ""
-msgid "_Copy Email Address"
-msgstr ""
-
-msgid "_Open Link in Browser"
-msgstr ""
-
-msgid "_Copy Link Location"
-msgstr ""
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -11136,11 +11241,9 @@ msgstr ""
msgid "Save Image"
msgstr ""
-#, c-format
msgid "_Save Image..."
msgstr ""
-#, c-format
msgid "_Add Custom Smiley..."
msgstr ""
@@ -11338,6 +11441,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -11355,6 +11459,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -11385,10 +11490,25 @@ msgstr ""
msgid "Pidgin"
msgstr ""
-msgid "Open All Messages"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+msgid "Calling..."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
msgstr ""
#, c-format
@@ -11418,6 +11538,24 @@ msgid ""
"The 'Manual' browser command has been chosen, but no command has been set."
msgstr ""
+msgid "Open All Messages"
+msgstr ""
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr ""
+
+msgid "New Pounces"
+msgstr ""
+
+msgid "Dismiss"
+msgstr ""
+
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr ""
+
+msgid "No message"
+msgstr ""
+
msgid "The following plugins will be unloaded."
msgstr ""
@@ -11462,10 +11600,16 @@ msgstr ""
msgid "Select a file"
msgstr ""
+msgid "Modify Buddy Pounce"
+msgstr ""
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr ""
+msgid "_Account:"
+msgstr ""
+
msgid "_Buddy name:"
msgstr ""
@@ -11532,6 +11676,50 @@ msgstr ""
msgid "Pounce Target"
msgstr ""
+#, c-format
+msgid "Started typing"
+msgstr ""
+
+#, c-format
+msgid "Paused while typing"
+msgstr ""
+
+#, c-format
+msgid "Signed on"
+msgstr ""
+
+#, c-format
+msgid "Returned from being idle"
+msgstr ""
+
+#, c-format
+msgid "Returned from being away"
+msgstr ""
+
+#, c-format
+msgid "Stopped typing"
+msgstr ""
+
+#, c-format
+msgid "Signed off"
+msgstr ""
+
+#, c-format
+msgid "Became idle"
+msgstr ""
+
+#, c-format
+msgid "Went away"
+msgstr ""
+
+#, c-format
+msgid "Sent a message"
+msgstr ""
+
+#, c-format
+msgid "Unknown.... Please report this!"
+msgstr ""
+
msgid "Smiley theme failed to unpack."
msgstr ""
@@ -11552,6 +11740,11 @@ msgstr ""
msgid "Cl_ose conversations with the Escape key"
msgstr ""
+#. Buddy List Themes
+msgid "Buddy List Theme"
+msgstr ""
+
+#. System Tray
msgid "System Tray Icon"
msgstr ""
@@ -11660,9 +11853,6 @@ msgstr ""
msgid "Cannot start browser configuration program."
msgstr ""
-msgid "ST_UN server:"
-msgstr ""
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr ""
@@ -11687,6 +11877,10 @@ msgstr ""
msgid "_End port:"
msgstr ""
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr ""
@@ -11713,6 +11907,10 @@ msgstr ""
msgid "No proxy"
msgstr ""
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr ""
@@ -11867,10 +12065,10 @@ msgstr ""
msgid "Auto-away"
msgstr ""
-msgid "Change status when _idle"
+msgid "_Minutes before becoming idle:"
msgstr ""
-msgid "_Minutes before becoming idle:"
+msgid "Change status when _idle"
msgstr ""
msgid "Change _status to:"
@@ -12020,6 +12218,12 @@ msgstr ""
msgid "Status for %s"
msgstr ""
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
msgid "Custom Smiley"
msgstr ""
@@ -12029,12 +12233,12 @@ msgstr ""
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
-msgid "Duplicate Shortcut"
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
msgstr ""
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
+msgid "Duplicate Shortcut"
msgstr ""
msgid "Please select an image for the smiley."
@@ -12046,19 +12250,25 @@ msgstr ""
msgid "Add Smiley"
msgstr ""
-msgid "Smiley _Image"
+msgid "_Image:"
msgstr ""
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
+#. Shortcut text
+msgid "S_hortcut text:"
msgstr ""
msgid "Smiley"
msgstr ""
+msgid "Shortcut Text"
+msgstr ""
+
msgid "Custom Smiley Manager"
msgstr ""
+msgid "Select Buddy Icon"
+msgstr ""
+
msgid "Click to change your buddyicon for this account."
msgstr ""
@@ -12166,6 +12376,15 @@ msgid ""
"Failed to load image '%s': reason not known, probably a corrupt image file"
msgstr ""
+msgid "_Open Link"
+msgstr ""
+
+msgid "_Copy Link Location"
+msgstr ""
+
+msgid "_Copy Email Address"
+msgstr ""
+
msgid "Save File"
msgstr ""
@@ -13090,9 +13309,6 @@ msgstr ""
msgid "Only when docked"
msgstr ""
-msgid "_Flash window when chat messages are received"
-msgstr ""
-
msgid "Windows Pidgin Options"
msgstr "ຈໍ ພິດຈິນ ໂຕເລືກ "
diff --git a/po/lt.po b/po/lt.po
index 2557c9fc7d..5b6032f3b2 100644
--- a/po/lt.po
+++ b/po/lt.po
@@ -4,2334 +4,2385 @@
# Laurynas Biveinis <laurynas.biveinis@gmail.com>, 2005, 2006, 2007, 2008, 2009.
# Marius Karnauskas <marius@akl.lt>, 2005.
# Gediminas Čičinskas. <gediminas@parok.lt>, 2004, 2005.
-#
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Pidgin\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-24 09:03+0100\n"
-"PO-Revision-Date: 2009-02-24 09:02+0100\n"
-"Last-Translator: Laurynas Biveinis <laurynas.biveinis@gmail.com>\n"
-"Language-Team:\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%"
-"10>=2 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-
-#. Translators may want to transliterate the name.
-#. It is not to be translated.
-msgid "Finch"
-msgstr "Finch"
-
-#, c-format
-msgid "%s. Try `%s -h' for more information.\n"
-msgstr "%s. Daugiau informacijos suteikia `%s -h'.\n"
-
-#, c-format
-msgid ""
-"%s\n"
-"Usage: %s [OPTION]...\n"
-"\n"
-" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stderr\n"
-" -h, --help display this help and exit\n"
-" -n, --nologin don't automatically login\n"
-" -v, --version display the current version and exit\n"
-msgstr ""
-"%s\n"
-"Vartojimas: %s [PARINKTIS] ...\n"
-"\n"
-" -c, --config=KATALOGAS naudoti KATALOGAS konfigūracinių failų paieškai\n"
-" -d, --debug išvesti derinimo pranešimus į standartinę išvestį\n"
-" -h, --help parodyti šią pagalbą ir baigti\n"
-" -n, --nologin automatiškai neprisijungti\n"
-" -v, --version parodyti šios programos versiją ir baigti\n"
-
-#, c-format
-msgid ""
-"%s encountered errors migrating your settings from %s to %s. Please "
-"investigate and complete the migration by hand. Please report this error at "
-"http://developer.pidgin.im"
-msgstr ""
-"%s aptiko klaidų Jūsų nustatymų perkėlimo iš %s į %s metu. Jums teks "
-"surasti klaidų priežastis ir pabaigti perkėlimą pačiam. Praneškite apie šią "
-"klaidą adresu http://developer.pidgin.im"
-
-msgid "Error"
-msgstr "Klaida"
-
-msgid "Account was not added"
-msgstr "Paskyra nebuvo sukurta"
-
-msgid "Username of an account must be non-empty."
-msgstr "Paskyros vardas negali būti tuščias"
-
-msgid "New mail notifications"
-msgstr "Pranešimai apie naujus laiškus"
-
-msgid "Remember password"
-msgstr "Prisiminti slaptažodį"
-
-msgid "There are no protocol plugins installed."
-msgstr "Neįdiegtas nė vienas protokolo papildinys."
-
-msgid "(You probably forgot to 'make install'.)"
-msgstr "(Turbūt pamiršote paleisti „make install“.)"
-
-msgid "Modify Account"
-msgstr "Redaguoti paskyrą"
-
-msgid "New Account"
-msgstr "Nauja paskyra"
-
-msgid "Protocol:"
-msgstr "Protokolas:"
-
-msgid "Username:"
-msgstr "Naudotojo vardas:"
-
-msgid "Password:"
-msgstr "Slaptažodis:"
-
-msgid "Alias:"
-msgstr "Alternatyvusis vardas:"
-
-#. Register checkbox
-msgid "Create this account on the server"
-msgstr "Sukurti šią paskyrą serveryje"
-
-#. Cancel button
-#. Cancel
-msgid "Cancel"
-msgstr "A_tšaukti"
-
-#. Save button
-#. Save
-msgid "Save"
-msgstr "Įrašyti"
-
-#, c-format
-msgid "Are you sure you want to delete %s?"
-msgstr "Ar Jūs tikrai norite šalinti %s?"
-
-msgid "Delete Account"
-msgstr "Pašalinti paskyrą"
-
-#. Delete button
-msgid "Delete"
-msgstr "Šalinti"
-
-msgid "Accounts"
-msgstr "Paskyros"
-
-msgid "You can enable/disable accounts from the following list."
-msgstr "Jūs galite aktyvuoti ir deaktyvuoti paskyras iš šio sąrašo."
-
-#. Add button
-msgid "Add"
-msgstr "Pridėti"
-
-#. Modify button
-msgid "Modify"
-msgstr "Keisti"
-
-#, c-format
-msgid "%s%s%s%s has made %s his or her buddy%s%s"
-msgstr "%s%s%s%s padarė %s savo bičiuliu%s%s"
-
-msgid "Add buddy to your list?"
-msgstr "Pridėti bičiulį į Jūsų sąrašą?"
-
-#, c-format
-msgid "%s%s%s%s wants to add %s to his or her buddy list%s%s"
-msgstr "Vartotojas %s%s%s%s nori pridėti %s į savo bičiulių sąrašą%s%s."
-
-msgid "Authorize buddy?"
-msgstr "Ar leisti?"
-
-msgid "Authorize"
-msgstr "Leisti"
-
-msgid "Deny"
-msgstr "Drausti"
-
-#, c-format
-msgid ""
-"Online: %d\n"
-"Total: %d"
-msgstr ""
-"Prisijungusių: %d\n"
-"Iš viso: %d"
-
-#, c-format
-msgid "Account: %s (%s)"
-msgstr "Paskyra: %s (%s)"
-
-#, c-format
-msgid ""
-"\n"
-"Last Seen: %s ago"
-msgstr ""
-"\n"
-"Paskutinį kartą matytas prieš: %s"
-
-msgid "Default"
-msgstr "Numatytosios"
-
-msgid "You must provide a username for the buddy."
-msgstr "Turite duoti bičiuliui vardą."
-
-msgid "You must provide a group."
-msgstr "Turite nurodyti grupę."
-
-msgid "You must select an account."
-msgstr "Jūs privalote pasirinkti paskyrą"
-
-msgid "The selected account is not online."
-msgstr "Pasirinktoji paskyra nėra prisijungusi."
-
-msgid "Error adding buddy"
-msgstr "Bičiulio pridėjimo klaida"
-
-msgid "Username"
-msgstr "Vartotojo vardas"
-
-msgid "Alias (optional)"
-msgstr "Alternatyvusis vardas (neprivalomas)"
-
-msgid "Add in group"
-msgstr "Pridėti grupėje"
-
-msgid "Account"
-msgstr "Paskyra"
-
-msgid "Add Buddy"
-msgstr "Pridėti bičiulį"
-
-msgid "Please enter buddy information."
-msgstr "Įveskite bičiulio informaciją."
-
-msgid "Chats"
-msgstr "Pokalbiai"
-
-#. Extract their Name and put it in
-msgid "Name"
-msgstr "Vardas"
-
-msgid "Alias"
-msgstr "Sukurti alternatyvųjį vardą"
-
-msgid "Group"
-msgstr "Grupė"
-
-msgid "Auto-join"
-msgstr "Automatiškai prisijungti"
-
-msgid "Add Chat"
-msgstr "Pridėti pokalbių kambarį"
-
-msgid "You can edit more information from the context menu later."
-msgstr ""
-"Daugiau informacijos galite keisti vėliau naudodamiesi kontekstiniu meniu."
-
-msgid "Error adding group"
-msgstr "Grupės sukūrimo klaida"
-
-msgid "You must give a name for the group to add."
-msgstr "Jūs turite kuriamai grupei suteikti pavadinimą."
-
-msgid "Add Group"
-msgstr "Pridėti grupę"
-
-msgid "Enter the name of the group"
-msgstr "Įveskite grupės pavadinimą"
-
-msgid "Edit Chat"
-msgstr "Keisti pokalbių kambarį"
-
-msgid "Please Update the necessary fields."
-msgstr "Pataisykite būtinus laukus."
-
-msgid "Edit"
-msgstr "Keisti"
-
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Pidgin\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-04-30 10:39-0400\n"
+"PO-Revision-Date: 2009-02-24 09:02+0100\n"
+"Last-Translator: Laurynas Biveinis <laurynas.biveinis@gmail.com>\n"
+"Language-Team:\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%"
+"10>=2 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+
+#. Translators may want to transliterate the name.
+#. It is not to be translated.
+msgid "Finch"
+msgstr "Finch"
+
+#, c-format
+msgid "%s. Try `%s -h' for more information.\n"
+msgstr "%s. Daugiau informacijos suteikia `%s -h'.\n"
+
+#, c-format
+msgid ""
+"%s\n"
+"Usage: %s [OPTION]...\n"
+"\n"
+" -c, --config=DIR use DIR for config files\n"
+" -d, --debug print debugging messages to stderr\n"
+" -h, --help display this help and exit\n"
+" -n, --nologin don't automatically login\n"
+" -v, --version display the current version and exit\n"
+msgstr ""
+"%s\n"
+"Vartojimas: %s [PARINKTIS] ...\n"
+"\n"
+" -c, --config=KATALOGAS naudoti KATALOGAS konfigūracinių failų paieškai\n"
+" -d, --debug išvesti derinimo pranešimus į standartinę išvestį\n"
+" -h, --help parodyti šią pagalbą ir baigti\n"
+" -n, --nologin automatiškai neprisijungti\n"
+" -v, --version parodyti šios programos versiją ir baigti\n"
+
+#, c-format
+msgid ""
+"%s encountered errors migrating your settings from %s to %s. Please "
+"investigate and complete the migration by hand. Please report this error at "
+"http://developer.pidgin.im"
+msgstr ""
+"%s aptiko klaidų Jūsų nustatymų perkėlimo iš %s į %s metu. Jums teks "
+"surasti klaidų priežastis ir pabaigti perkėlimą pačiam. Praneškite apie šią "
+"klaidą adresu http://developer.pidgin.im"
+
+msgid "Error"
+msgstr "Klaida"
+
+msgid "Account was not added"
+msgstr "Paskyra nebuvo sukurta"
+
+msgid "Username of an account must be non-empty."
+msgstr "Paskyros vardas negali būti tuščias"
+
+msgid "New mail notifications"
+msgstr "Pranešimai apie naujus laiškus"
+
+msgid "Remember password"
+msgstr "Prisiminti slaptažodį"
+
+msgid "There are no protocol plugins installed."
+msgstr "Neįdiegtas nė vienas protokolo papildinys."
+
+msgid "(You probably forgot to 'make install'.)"
+msgstr "(Turbūt pamiršote paleisti „make install“.)"
+
+msgid "Modify Account"
+msgstr "Redaguoti paskyrą"
+
+msgid "New Account"
+msgstr "Nauja paskyra"
+
+msgid "Protocol:"
+msgstr "Protokolas:"
+
+msgid "Username:"
+msgstr "Naudotojo vardas:"
+
+msgid "Password:"
+msgstr "Slaptažodis:"
+
+msgid "Alias:"
+msgstr "Alternatyvusis vardas:"
+
+#. Register checkbox
+msgid "Create this account on the server"
+msgstr "Sukurti šią paskyrą serveryje"
+
+#. Cancel button
+#. Cancel
+msgid "Cancel"
+msgstr "A_tšaukti"
+
+#. Save button
+#. Save
+msgid "Save"
+msgstr "Įrašyti"
+
+#, c-format
+msgid "Are you sure you want to delete %s?"
+msgstr "Ar Jūs tikrai norite šalinti %s?"
+
+msgid "Delete Account"
+msgstr "Pašalinti paskyrą"
+
+#. Delete button
+msgid "Delete"
+msgstr "Šalinti"
+
+msgid "Accounts"
+msgstr "Paskyros"
+
+msgid "You can enable/disable accounts from the following list."
+msgstr "Jūs galite aktyvuoti ir deaktyvuoti paskyras iš šio sąrašo."
+
+#. Add button
+msgid "Add"
+msgstr "Pridėti"
+
+#. Modify button
+msgid "Modify"
+msgstr "Keisti"
+
+#, c-format
+msgid "%s%s%s%s has made %s his or her buddy%s%s"
+msgstr "%s%s%s%s padarė %s savo bičiuliu%s%s"
+
+msgid "Add buddy to your list?"
+msgstr "Pridėti bičiulį į Jūsų sąrašą?"
+
+#, c-format
+msgid "%s%s%s%s wants to add %s to his or her buddy list%s%s"
+msgstr "Vartotojas %s%s%s%s nori pridėti %s į savo bičiulių sąrašą%s%s."
+
+msgid "Authorize buddy?"
+msgstr "Ar leisti?"
+
+msgid "Authorize"
+msgstr "Leisti"
+
+msgid "Deny"
+msgstr "Drausti"
+
+#, c-format
+msgid ""
+"Online: %d\n"
+"Total: %d"
+msgstr ""
+"Prisijungusių: %d\n"
+"Iš viso: %d"
+
+#, c-format
+msgid "Account: %s (%s)"
+msgstr "Paskyra: %s (%s)"
+
+#, c-format
+msgid ""
+"\n"
+"Last Seen: %s ago"
+msgstr ""
+"\n"
+"Paskutinį kartą matytas prieš: %s"
+
+msgid "Default"
+msgstr "Numatytosios"
+
+msgid "You must provide a username for the buddy."
+msgstr "Turite duoti bičiuliui vardą."
+
+msgid "You must provide a group."
+msgstr "Turite nurodyti grupę."
+
+msgid "You must select an account."
+msgstr "Jūs privalote pasirinkti paskyrą"
+
+msgid "The selected account is not online."
+msgstr "Pasirinktoji paskyra nėra prisijungusi."
+
+msgid "Error adding buddy"
+msgstr "Bičiulio pridėjimo klaida"
+
+msgid "Username"
+msgstr "Vartotojo vardas"
+
+msgid "Alias (optional)"
+msgstr "Alternatyvusis vardas (neprivalomas)"
+
+msgid "Add in group"
+msgstr "Pridėti grupėje"
+
+msgid "Account"
+msgstr "Paskyra"
+
+msgid "Add Buddy"
+msgstr "Pridėti bičiulį"
+
+msgid "Please enter buddy information."
+msgstr "Įveskite bičiulio informaciją."
+
+msgid "Chats"
+msgstr "Pokalbiai"
+
+#. Extract their Name and put it in
+msgid "Name"
+msgstr "Vardas"
+
+msgid "Alias"
+msgstr "Sukurti alternatyvųjį vardą"
+
+msgid "Group"
+msgstr "Grupė"
+
+msgid "Auto-join"
+msgstr "Automatiškai prisijungti"
+
+msgid "Add Chat"
+msgstr "Pridėti pokalbių kambarį"
+
+msgid "You can edit more information from the context menu later."
+msgstr ""
+"Daugiau informacijos galite keisti vėliau naudodamiesi kontekstiniu meniu."
+
+msgid "Error adding group"
+msgstr "Grupės sukūrimo klaida"
+
+msgid "You must give a name for the group to add."
+msgstr "Jūs turite kuriamai grupei suteikti pavadinimą."
+
+msgid "Add Group"
+msgstr "Pridėti grupę"
+
+msgid "Enter the name of the group"
+msgstr "Įveskite grupės pavadinimą"
+
+msgid "Edit Chat"
+msgstr "Keisti pokalbių kambarį"
+
+msgid "Please Update the necessary fields."
+msgstr "Pataisykite būtinus laukus."
+
+msgid "Edit"
+msgstr "Keisti"
+
# Use Environmental Settings
-msgid "Edit Settings"
-msgstr "Keisti nuostatas"
-
-msgid "Information"
-msgstr "Informacija"
-
-msgid "Retrieving..."
-msgstr "Išrenkama..."
-
-msgid "Get Info"
-msgstr "Gauti informaciją"
-
-msgid "Add Buddy Pounce"
-msgstr "Sukurti reakciją į bičiulį"
-
+msgid "Edit Settings"
+msgstr "Keisti nuostatas"
+
+msgid "Information"
+msgstr "Informacija"
+
+msgid "Retrieving..."
+msgstr "Išrenkama..."
+
+msgid "Get Info"
+msgstr "Gauti informaciją"
+
+msgid "Add Buddy Pounce"
+msgstr "Sukurti reakciją į bičiulį"
+
# Send File button
-msgid "Send File"
-msgstr "Siųsti failą"
-
+msgid "Send File"
+msgstr "Siųsti failą"
+
# Block button
-msgid "Blocked"
-msgstr "Blokuotas"
-
-msgid "Show when offline"
-msgstr "Rodyti, kai neprisijungęs"
-
-#, c-format
-msgid "Please enter the new name for %s"
-msgstr "Įveskite naują „%s“ vardą"
-
-msgid "Rename"
-msgstr "Pervadinti"
-
-msgid "Set Alias"
-msgstr "Nustatyti alternatyvųjį vardą"
-
-msgid "Enter empty string to reset the name."
-msgstr "Įveskite tuščią eilutę, jei norite atstatyti vardą."
-
-msgid "Removing this contact will also remove all the buddies in the contact"
-msgstr "Šio kontakto pašalinimas taip pat pašalins ir visus bičiulius jame"
-
-msgid "Removing this group will also remove all the buddies in the group"
-msgstr "Šios grupės pašalinimas taip pat pašalins ir visus bičiulius joje"
-
-#, c-format
-msgid "Are you sure you want to remove %s?"
-msgstr "Ar tikrai norite pašalinti %s?"
-
-#. XXX: anything to do with the returned ui-handle?
-msgid "Confirm Remove"
-msgstr "Patvirtinkite pašalinimą"
-
-msgid "Remove"
-msgstr "Pašalinti"
-
-#. Buddy List
-msgid "Buddy List"
-msgstr "Bičiulių sąrašas"
-
-msgid "Place tagged"
-msgstr "Vieta pažymėta"
-
-msgid "Toggle Tag"
-msgstr "Perjungti žymę"
-
-msgid "View Log"
-msgstr "Žiūrėti žurnalą"
-
-#. General
-msgid "Nickname"
-msgstr "Vardas"
-
-#. Never know what those translations might end up like...
-#. Idle stuff
-msgid "Idle"
-msgstr "Neveiklus"
-
-msgid "On Mobile"
-msgstr "Pasiekiamas mobiliuoju telefonu"
-
-msgid "New..."
-msgstr "Nauja..."
-
-msgid "Saved..."
-msgstr "Įrašyta..."
-
-msgid "Plugins"
-msgstr "Papildiniai"
-
+msgid "Blocked"
+msgstr "Blokuotas"
+
+msgid "Show when offline"
+msgstr "Rodyti, kai neprisijungęs"
+
+#, c-format
+msgid "Please enter the new name for %s"
+msgstr "Įveskite naują „%s“ vardą"
+
+msgid "Rename"
+msgstr "Pervadinti"
+
+msgid "Set Alias"
+msgstr "Nustatyti alternatyvųjį vardą"
+
+msgid "Enter empty string to reset the name."
+msgstr "Įveskite tuščią eilutę, jei norite atstatyti vardą."
+
+msgid "Removing this contact will also remove all the buddies in the contact"
+msgstr "Šio kontakto pašalinimas taip pat pašalins ir visus bičiulius jame"
+
+msgid "Removing this group will also remove all the buddies in the group"
+msgstr "Šios grupės pašalinimas taip pat pašalins ir visus bičiulius joje"
+
+#, c-format
+msgid "Are you sure you want to remove %s?"
+msgstr "Ar tikrai norite pašalinti %s?"
+
+#. XXX: anything to do with the returned ui-handle?
+msgid "Confirm Remove"
+msgstr "Patvirtinkite pašalinimą"
+
+msgid "Remove"
+msgstr "Pašalinti"
+
+#. Buddy List
+msgid "Buddy List"
+msgstr "Bičiulių sąrašas"
+
+msgid "Place tagged"
+msgstr "Vieta pažymėta"
+
+msgid "Toggle Tag"
+msgstr "Perjungti žymę"
+
+msgid "View Log"
+msgstr "Žiūrėti žurnalą"
+
+#. General
+msgid "Nickname"
+msgstr "Vardas"
+
+#. Never know what those translations might end up like...
+#. Idle stuff
+msgid "Idle"
+msgstr "Neveiklus"
+
+msgid "On Mobile"
+msgstr "Pasiekiamas mobiliuoju telefonu"
+
+msgid "New..."
+msgstr "Nauja..."
+
+msgid "Saved..."
+msgstr "Įrašyta..."
+
+msgid "Plugins"
+msgstr "Papildiniai"
+
# Block button
-msgid "Block/Unblock"
-msgstr "Blokuoti/nebeblokuoti"
-
+msgid "Block/Unblock"
+msgstr "Blokuoti/nebeblokuoti"
+
# Block button
-msgid "Block"
-msgstr "Blokuoti"
-
+msgid "Block"
+msgstr "Blokuoti"
+
# Block button
-msgid "Unblock"
-msgstr "Nebeblokuoti"
-
-msgid ""
-"Please enter the username or alias of the person you would like to Block/"
-"Unblock."
-msgstr ""
-"Įveskite vardą arba alternatyvųjį vardą asmens, kurį norite užblokuoti arba "
-"nebeblokuoti."
-
-#. Not multiline
-#. Not masked?
-#. No hints?
-msgid "OK"
-msgstr "Gerai"
-
-msgid "New Instant Message"
-msgstr "Nauja greitoji žinutė"
-
-msgid "Please enter the username or alias of the person you would like to IM."
-msgstr ""
-"Įveskite vardą arba alternatyvųjį vardą asmens, su kuriuo norite bendrauti."
-
-msgid "Channel"
-msgstr "Kanalas"
-
-msgid "Join a Chat"
-msgstr "Prisijungti prie pokalbio"
-
-msgid "Please enter the name of the chat you want to join."
-msgstr "Prašome įvesti vardą pokalbių kambario, prie kurio norite prisijungti."
-
+msgid "Unblock"
+msgstr "Nebeblokuoti"
+
+msgid ""
+"Please enter the username or alias of the person you would like to Block/"
+"Unblock."
+msgstr ""
+"Įveskite vardą arba alternatyvųjį vardą asmens, kurį norite užblokuoti arba "
+"nebeblokuoti."
+
+#. Not multiline
+#. Not masked?
+#. No hints?
+msgid "OK"
+msgstr "Gerai"
+
+msgid "New Instant Message"
+msgstr "Nauja greitoji žinutė"
+
+msgid "Please enter the username or alias of the person you would like to IM."
+msgstr ""
+"Įveskite vardą arba alternatyvųjį vardą asmens, su kuriuo norite bendrauti."
+
+msgid "Channel"
+msgstr "Kanalas"
+
+msgid "Join a Chat"
+msgstr "Prisijungti prie pokalbio"
+
+msgid "Please enter the name of the chat you want to join."
+msgstr "Prašome įvesti vardą pokalbių kambario, prie kurio norite prisijungti."
+
# join button
-msgid "Join"
-msgstr "Prisijungti"
-
-msgid ""
-"Please enter the username or alias of the person whose log you would like to "
-"view."
-msgstr ""
-"Įveskite vardą arba alternatyvųjį vardą asmens, kurio pokalbių žurnalą "
-"norite peržiūrėti."
-
+msgid "Join"
+msgstr "Prisijungti"
+
+msgid ""
+"Please enter the username or alias of the person whose log you would like to "
+"view."
+msgstr ""
+"Įveskite vardą arba alternatyvųjį vardą asmens, kurio pokalbių žurnalą "
+"norite peržiūrėti."
+
# Options
-#. Create the "Options" frame.
-msgid "Options"
-msgstr "Parinktys"
-
-msgid "Send IM..."
-msgstr "Rašyti žinutę..."
-
+#. Create the "Options" frame.
+msgid "Options"
+msgstr "Parinktys"
+
+msgid "Send IM..."
+msgstr "Rašyti žinutę..."
+
# Block button
-msgid "Block/Unblock..."
-msgstr "Blokuoti/nebeblokuoti..."
-
-msgid "Join Chat..."
-msgstr "Prisijungti prie pokalbio..."
-
-msgid "View Log..."
-msgstr "Žiūrėti žurnalą..."
-
-msgid "View All Logs"
-msgstr "Žiūrėti visus žurnalus"
-
-msgid "Show"
-msgstr "Rodyti"
-
-msgid "Empty groups"
-msgstr "tuščias grupes"
-
+msgid "Block/Unblock..."
+msgstr "Blokuoti/nebeblokuoti..."
+
+msgid "Join Chat..."
+msgstr "Prisijungti prie pokalbio..."
+
+msgid "View Log..."
+msgstr "Žiūrėti žurnalą..."
+
+msgid "View All Logs"
+msgstr "Žiūrėti visus žurnalus"
+
+msgid "Show"
+msgstr "Rodyti"
+
+msgid "Empty groups"
+msgstr "tuščias grupes"
+
# set the Show Offline Buddies option. must be done
# * after the treeview or faceprint gets mad. -Robot101
-msgid "Offline buddies"
-msgstr "neprisijungusius bičiulius"
-
-msgid "Sort"
-msgstr "Rikiuoti"
-
-msgid "By Status"
-msgstr "pagal statusą"
-
-msgid "Alphabetically"
-msgstr "pagal abėcėlę"
-
-msgid "By Log Size"
-msgstr "pagal žurnalo dydį"
-
-msgid "Buddy"
-msgstr "bičiulį"
-
-msgid "Chat"
-msgstr "Pokalbis"
-
-msgid "Grouping"
-msgstr "Grupavimas"
-
-msgid "Certificate Import"
-msgstr "Liudijimo importavimas"
-
-msgid "Specify a hostname"
-msgstr "Įveskite mazgo vardą"
-
-msgid "Type the host name this certificate is for."
-msgstr "Įveskite mazgo, kuriam skirtas šis liudijimas, vardą"
-
-#, c-format
-msgid ""
-"File %s could not be imported.\n"
-"Make sure that the file is readable and in PEM format.\n"
-msgstr ""
-"Nepavyko importuoti failo %s.\n"
-"Įsitikinte, kad failą galima perskaityti ir jis yra PEM formato.\n"
-
-msgid "Certificate Import Error"
-msgstr "Liudijimo importavimo klaida"
-
-msgid "X.509 certificate import failed"
-msgstr "Nepavyko importuoti X.509 liudijimo "
-
-msgid "Select a PEM certificate"
-msgstr "Pasirinkite PEM liudijimą"
-
-#, c-format
-msgid ""
-"Export to file %s failed.\n"
-"Check that you have write permission to the target path\n"
-msgstr ""
-"Nepavyko eksportavimas į failą %s.\n"
-"Patikrinkite, ar turite rašymo prieigos teisę šiuo keliu\n"
-
-msgid "Certificate Export Error"
-msgstr "Liudijimo eksporto klaida"
-
-msgid "X.509 certificate export failed"
-msgstr "Nepavyko eksportuoti X.509 liudijimo"
-
-msgid "PEM X.509 Certificate Export"
-msgstr "PEM X.509 liudijimo eksportas"
-
-#, c-format
-msgid "Certificate for %s"
-msgstr "Liudijimas, skirtas %s"
-
-#, c-format
-msgid ""
-"Common name: %s\n"
-"\n"
-"SHA1 fingerprint:\n"
-"%s"
-msgstr ""
-"Įprastas vardas: %s\n"
-"\n"
-"SHA1 kontrolinis kodas:\n"
-"%s"
-
-msgid "SSL Host Certificate"
-msgstr "SSL mazgo liudijimas"
-
-#, c-format
-msgid "Really delete certificate for %s?"
-msgstr "Ar tikrai pašalinti %s liudijimą?"
-
-msgid "Confirm certificate delete"
-msgstr "Patvirtinkite liudijimo pašalinimą"
-
-msgid "Certificate Manager"
-msgstr "Liudijimų tvarkytuvė"
-
-#. Creating the user splits
-msgid "Hostname"
-msgstr "Mazgo vardas"
-
+msgid "Offline buddies"
+msgstr "neprisijungusius bičiulius"
+
+msgid "Sort"
+msgstr "Rikiuoti"
+
+msgid "By Status"
+msgstr "pagal statusą"
+
+msgid "Alphabetically"
+msgstr "pagal abėcėlę"
+
+msgid "By Log Size"
+msgstr "pagal žurnalo dydį"
+
+msgid "Buddy"
+msgstr "bičiulį"
+
+msgid "Chat"
+msgstr "Pokalbis"
+
+msgid "Grouping"
+msgstr "Grupavimas"
+
+msgid "Certificate Import"
+msgstr "Liudijimo importavimas"
+
+msgid "Specify a hostname"
+msgstr "Įveskite mazgo vardą"
+
+msgid "Type the host name this certificate is for."
+msgstr "Įveskite mazgo, kuriam skirtas šis liudijimas, vardą"
+
+#, c-format
+msgid ""
+"File %s could not be imported.\n"
+"Make sure that the file is readable and in PEM format.\n"
+msgstr ""
+"Nepavyko importuoti failo %s.\n"
+"Įsitikinte, kad failą galima perskaityti ir jis yra PEM formato.\n"
+
+msgid "Certificate Import Error"
+msgstr "Liudijimo importavimo klaida"
+
+msgid "X.509 certificate import failed"
+msgstr "Nepavyko importuoti X.509 liudijimo "
+
+msgid "Select a PEM certificate"
+msgstr "Pasirinkite PEM liudijimą"
+
+#, c-format
+msgid ""
+"Export to file %s failed.\n"
+"Check that you have write permission to the target path\n"
+msgstr ""
+"Nepavyko eksportavimas į failą %s.\n"
+"Patikrinkite, ar turite rašymo prieigos teisę šiuo keliu\n"
+
+msgid "Certificate Export Error"
+msgstr "Liudijimo eksporto klaida"
+
+msgid "X.509 certificate export failed"
+msgstr "Nepavyko eksportuoti X.509 liudijimo"
+
+msgid "PEM X.509 Certificate Export"
+msgstr "PEM X.509 liudijimo eksportas"
+
+#, c-format
+msgid "Certificate for %s"
+msgstr "Liudijimas, skirtas %s"
+
+#, c-format
+msgid ""
+"Common name: %s\n"
+"\n"
+"SHA1 fingerprint:\n"
+"%s"
+msgstr ""
+"Įprastas vardas: %s\n"
+"\n"
+"SHA1 kontrolinis kodas:\n"
+"%s"
+
+msgid "SSL Host Certificate"
+msgstr "SSL mazgo liudijimas"
+
+#, c-format
+msgid "Really delete certificate for %s?"
+msgstr "Ar tikrai pašalinti %s liudijimą?"
+
+msgid "Confirm certificate delete"
+msgstr "Patvirtinkite liudijimo pašalinimą"
+
+msgid "Certificate Manager"
+msgstr "Liudijimų tvarkytuvė"
+
+#. Creating the user splits
+msgid "Hostname"
+msgstr "Mazgo vardas"
+
# Info button
-msgid "Info"
-msgstr "Informacija"
-
-#. Close button
-msgid "Close"
-msgstr "Užverti"
-
-#, c-format
-msgid "%s (%s)"
-msgstr "%s (%s)"
-
-#, c-format
-msgid "%s disconnected."
-msgstr "%s atsijungė."
-
-#, c-format
-msgid ""
-"%s\n"
-"\n"
-"Finch will not attempt to reconnect the account until you correct the error "
-"and re-enable the account."
-msgstr ""
-"%s\n"
-"\n"
-"Finch nebebandys prisijungti su šia paskyra, kol nepataisysite klaidos ir "
-"paskyros neaktyvuosite iš naujo."
-
-msgid "Re-enable Account"
-msgstr "Iš naujo aktyvuoti paskyrą"
-
-msgid ""
-"The account has disconnected and you are no longer in this chat. You will be "
-"automatically rejoined in the chat when the account reconnects."
-msgstr ""
-"Paskyra atsijungė, todėl jūs nebedalyvaujate šiame pokalbyje. Kai bus "
-"prisijungta su šia paskyra iš naujo, jūs automatiškai grįšite į šį pokalbį."
-
-msgid "No such command."
-msgstr "Tokios komandos nėra."
-
-msgid "Syntax Error: You typed the wrong number of arguments to that command."
-msgstr ""
-"Sintaksės klaida: Jūs įvedėte neteisingą argumentų skaičių tai komandai."
-
-msgid "Your command failed for an unknown reason."
-msgstr "Jūsų komanda nepavyko dėl nežinomos priežasties."
-
-msgid "That command only works in chats, not IMs."
-msgstr ""
-"Ta komanda veikia tik pokalbių kambariuose, o ne asmeniniuose pokalbiuose."
-
-msgid "That command only works in IMs, not chats."
-msgstr ""
-"Ta komanda veikia tik asmeniniuose pokalbiuose, o ne pokalbių kambariuose."
-
-msgid "That command doesn't work on this protocol."
-msgstr "Ta komanda neveikia šiame protokole."
-
-msgid "Message was not sent, because you are not signed on."
-msgstr "Žinutė neišsiųsta, nes nesate prisijungęs."
-
-#, c-format
-msgid "%s (%s -- %s)"
-msgstr "%s (%s -- %s)"
-
-#, c-format
-msgid "%s [%s]"
-msgstr "%s [%s]"
-
-#, c-format
-msgid ""
-"\n"
-"%s is typing..."
-msgstr ""
-"\n"
-"%s rašo..."
-
-msgid "You have left this chat."
-msgstr "Jūs palikote šį pokalbį."
-
-msgid "Logging started. Future messages in this conversation will be logged."
-msgstr ""
-"Žurnalų vedimas įjungtas. Būsimos šio pokalbio žinutės bus įvestos į žurnalą."
-
-msgid ""
-"Logging stopped. Future messages in this conversation will not be logged."
-msgstr ""
-"Žurnalų vedimas išjungtas. Būsimos šio pokalbio žinutės nebus įvestos į "
-"žurnalą."
-
+msgid "Info"
+msgstr "Informacija"
+
+#. Close button
+msgid "Close"
+msgstr "Užverti"
+
+#, c-format
+msgid "%s (%s)"
+msgstr "%s (%s)"
+
+#, c-format
+msgid "%s disconnected."
+msgstr "%s atsijungė."
+
+#, c-format
+msgid ""
+"%s\n"
+"\n"
+"Finch will not attempt to reconnect the account until you correct the error "
+"and re-enable the account."
+msgstr ""
+"%s\n"
+"\n"
+"Finch nebebandys prisijungti su šia paskyra, kol nepataisysite klaidos ir "
+"paskyros neaktyvuosite iš naujo."
+
+msgid "Re-enable Account"
+msgstr "Iš naujo aktyvuoti paskyrą"
+
+msgid ""
+"The account has disconnected and you are no longer in this chat. You will be "
+"automatically rejoined in the chat when the account reconnects."
+msgstr ""
+"Paskyra atsijungė, todėl jūs nebedalyvaujate šiame pokalbyje. Kai bus "
+"prisijungta su šia paskyra iš naujo, jūs automatiškai grįšite į šį pokalbį."
+
+msgid "No such command."
+msgstr "Tokios komandos nėra."
+
+msgid "Syntax Error: You typed the wrong number of arguments to that command."
+msgstr ""
+"Sintaksės klaida: Jūs įvedėte neteisingą argumentų skaičių tai komandai."
+
+msgid "Your command failed for an unknown reason."
+msgstr "Jūsų komanda nepavyko dėl nežinomos priežasties."
+
+msgid "That command only works in chats, not IMs."
+msgstr ""
+"Ta komanda veikia tik pokalbių kambariuose, o ne asmeniniuose pokalbiuose."
+
+msgid "That command only works in IMs, not chats."
+msgstr ""
+"Ta komanda veikia tik asmeniniuose pokalbiuose, o ne pokalbių kambariuose."
+
+msgid "That command doesn't work on this protocol."
+msgstr "Ta komanda neveikia šiame protokole."
+
+msgid "Message was not sent, because you are not signed on."
+msgstr "Žinutė neišsiųsta, nes nesate prisijungęs."
+
+#, c-format
+msgid "%s (%s -- %s)"
+msgstr "%s (%s -- %s)"
+
+#, c-format
+msgid "%s [%s]"
+msgstr "%s [%s]"
+
+#, c-format
+msgid ""
+"\n"
+"%s is typing..."
+msgstr ""
+"\n"
+"%s rašo..."
+
+msgid "You have left this chat."
+msgstr "Jūs palikote šį pokalbį."
+
+msgid "Logging started. Future messages in this conversation will be logged."
+msgstr ""
+"Žurnalų vedimas įjungtas. Būsimos šio pokalbio žinutės bus įvestos į žurnalą."
+
+msgid ""
+"Logging stopped. Future messages in this conversation will not be logged."
+msgstr ""
+"Žurnalų vedimas išjungtas. Būsimos šio pokalbio žinutės nebus įvestos į "
+"žurnalą."
+
# Build the Send As menu
-msgid "Send To"
-msgstr "Siųsti kam"
-
-msgid "Invite message"
-msgstr "Pakvietimo žinutė"
-
+msgid "Send To"
+msgstr "Siųsti kam"
+
+msgid "Conversation"
+msgstr "Pokalbis"
+
+msgid "Clear Scrollback"
+msgstr "Išvalyti langą"
+
+msgid "Show Timestamps"
+msgstr "Rodyti laiko žymas"
+
+msgid "Add Buddy Pounce..."
+msgstr "Sukurti reakciją į bičiulį..."
+
# Invite
-msgid "Invite"
-msgstr "Pakviesti"
-
-# Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Prašom įvesti vartotojo, kurį norite pakviesti, vardą kartu su neprivaloma "
-"pakvietimo žinute."
-
-msgid "Conversation"
-msgstr "Pokalbis"
-
-msgid "Clear Scrollback"
-msgstr "Išvalyti langą"
-
-msgid "Show Timestamps"
-msgstr "Rodyti laiko žymas"
-
-msgid "Add Buddy Pounce..."
-msgstr "Sukurti reakciją į bičiulį..."
-
-# Invite
-msgid "Invite..."
-msgstr "Pakviesti..."
-
-msgid "Enable Logging"
-msgstr "Įjungti žurnalų vedimą"
-
-msgid "Enable Sounds"
-msgstr "Įjungti garsus"
-
-msgid "<AUTO-REPLY> "
-msgstr "<AUTOMATINIS-ATSAKYMAS> "
-
-#, c-format
-msgid "List of %d user:\n"
-msgid_plural "List of %d users:\n"
-msgstr[0] "Sąrašas su %d vartotoju:\n"
-msgstr[1] "Sąrašas su %d vartotojais:\n"
-msgstr[2] "Sąrašas su %d vartotojų:\n"
-
-msgid "Supported debug options are: version"
-msgstr "Palaikomi derinimo parametrai yra: version"
-
-msgid "No such command (in this context)."
-msgstr "Šiame kontekste tokios komandos nėra."
-
-msgid ""
-"Use \"/help &lt;command&gt;\" for help on a specific command.\n"
-"The following commands are available in this context:\n"
-msgstr ""
-"Naudokite \"/help &lt;komanda&gt;\" pagalbai apie konkrečią komandą.\n"
-"Tolimesnės komandos yra prieinamos šiame kontekste:\n"
-
-#, c-format
-msgid ""
-"%s is not a valid message class. See '/help msgcolor' for valid message "
-"classes."
-msgstr ""
-"„%s“ nėra teisingas žinutės tipas. Teisingus tipus galite pažiūrėti „/help "
-"msgcolor“."
-
-#, c-format
-msgid "%s is not a valid color. See '/help msgcolor' for valid colors."
-msgstr ""
-"„%s“ nėra teisinga spalva. Teisingas spalvas galite pažiūrėti „/help "
-"msgcolor“."
-
-msgid ""
-"say &lt;message&gt;: Send a message normally as if you weren't using a "
-"command."
-msgstr ""
-"say &lt;žinutė&gt;: nusiųsti žinutę įprastai, kaip ir nenaudojant šios "
-"komandos."
-
-msgid "me &lt;action&gt;: Send an IRC style action to a buddy or chat."
-msgstr ""
-"me &lt;veiksmas&gt;: nusiųsti IRC stiliaus veiksmą bičiuliui ar pokalbių "
-"kambariui."
-
-msgid ""
-"debug &lt;option&gt;: Send various debug information to the current "
-"conversation."
-msgstr ""
-"debug &lt;parametras&gt;: nusiųsti įvairią derinimo informaciją į šį "
-"pokalbį."
-
-msgid "clear: Clears the conversation scrollback."
-msgstr "clear: išvalo pokalbių žinučių langą."
-
-msgid "help &lt;command&gt;: Help on a specific command."
-msgstr "help &lt;komanda&gt;: suteikia pagalbą apie konkrečią komanda."
-
-msgid "users: Show the list of users in the chat."
-msgstr "users: parodo pokalbio dalyvių sąrašą."
-
-msgid "plugins: Show the plugins window."
-msgstr "plugins: parodo papildinių langą."
-
-msgid "buddylist: Show the buddylist."
-msgstr "buddylist: parodo bičiulių sąrašą."
-
-msgid "accounts: Show the accounts window."
-msgstr "accounts: parodo paskyrų langą."
-
-msgid "debugwin: Show the debug window."
-msgstr "debugwin: parodo derinimo langą."
-
-msgid "prefs: Show the preference window."
-msgstr "prefs: parodo nuostatų langą."
-
-msgid "statuses: Show the savedstatuses window."
-msgstr "statuses: parodo išsaugotų būsenų langą."
-
-msgid ""
-"msgcolor &lt;class&gt; &lt;foreground&gt; &lt;background&gt;: Set the color "
-"for different classes of messages in the conversation window.<br> &lt;"
-"class&gt;: receive, send, highlight, action, timestamp<br> &lt;foreground/"
-"background&gt;: black, red, green, blue, white, gray, darkgray, magenta, "
-"cyan, default<br><br>EXAMPLE:<br> msgcolor send cyan default"
-msgstr ""
-"msgcolor &lt;tipas&gt; &lt;tekstospalva&gt; &lt;fonospalva&gt;: nustatyti "
-"spalvas įvairiems žinučių tipams pokalbių lange.<br>\n"
-"&lt;tipas&gt;: receive, send, highlight, action, timestamp<br>\n"
-"&lt;tekstospalva/fonospalva&gt;: black, red, green, blue, white, gray, "
-"darkgray, magenta, cyan, default<br>\n"
-"<br>\n"
-"PAVYZDYS:<br>\n"
-"msgcolor send cyan default"
-
-msgid "Unable to open file."
-msgstr "Negalima atidaryti failo."
-
-msgid "Debug Window"
-msgstr "Derinimo langas"
-
-#. XXX: Setting the GROW_Y for the following widgets don't make sense. But right now
-#. * it's necessary to make the width of the debug window resizable ... like I said,
-#. * it doesn't make sense. The bug is likely in the packing in gntbox.c.
-#.
-msgid "Clear"
-msgstr "Išvalyti"
-
-msgid "Filter:"
-msgstr "Filtras: "
-
-msgid "Pause"
-msgstr "Pristabdyti"
-
-#, c-format
-msgid "File Transfers - %d%% of %d file"
-msgid_plural "File Transfers - %d%% of %d files"
-msgstr[0] "Failų perdavimai – %d%% iš %d failo"
-msgstr[1] "Failų perdavimai – %d%% iš %d failų"
-msgstr[2] "Failų perdavimai – %d%% iš %d failų"
-
-#. Create the window.
-msgid "File Transfers"
-msgstr "Failų perdavimai"
-
-msgid "Progress"
-msgstr "Eiga"
-
-msgid "Filename"
-msgstr "Failo pavadinimas"
-
-msgid "Size"
-msgstr "Dydis"
-
-msgid "Speed"
-msgstr "Greitis"
-
-msgid "Remaining"
-msgstr "Liko"
-
-#. XXX: Use of ggp_str_to_uin() is an ugly hack!
-msgid "Status"
-msgstr "Būsena"
-
-msgid "Close this window when all transfers finish"
-msgstr "Uždaryti ši langą pasibaigus visiems failų perdavimams"
-
-msgid "Clear finished transfers"
-msgstr "Pašalinti pabaigtus perdavimus"
-
-msgid "Stop"
-msgstr "Sustabdyti"
-
-msgid "Waiting for transfer to begin"
-msgstr "Laukiama perdavimo pradžios"
-
-msgid "Canceled"
-msgstr "Atšaukta"
-
-msgid "Failed"
-msgstr "Nepavyko"
-
-#, c-format
-msgid "%.2f KiB/s"
-msgstr "%.2f KB/s"
-
-msgid "Sent"
-msgstr "Išsiųstas"
-
-msgid "Received"
-msgstr "Gautas"
-
-msgid "Finished"
-msgstr "Baigta"
-
-#, c-format
-msgid "The file was saved as %s."
-msgstr "Failas įrašytas vardu %s."
-
+msgid "Invite..."
+msgstr "Pakviesti..."
+
+msgid "Enable Logging"
+msgstr "Įjungti žurnalų vedimą"
+
+msgid "Enable Sounds"
+msgstr "Įjungti garsus"
+
+msgid "<AUTO-REPLY> "
+msgstr "<AUTOMATINIS-ATSAKYMAS> "
+
+#, c-format
+msgid "List of %d user:\n"
+msgid_plural "List of %d users:\n"
+msgstr[0] "Sąrašas su %d vartotoju:\n"
+msgstr[1] "Sąrašas su %d vartotojais:\n"
+msgstr[2] "Sąrašas su %d vartotojų:\n"
+
+msgid "Supported debug options are: version"
+msgstr "Palaikomi derinimo parametrai yra: version"
+
+msgid "No such command (in this context)."
+msgstr "Šiame kontekste tokios komandos nėra."
+
+msgid ""
+"Use \"/help &lt;command&gt;\" for help on a specific command.\n"
+"The following commands are available in this context:\n"
+msgstr ""
+"Naudokite \"/help &lt;komanda&gt;\" pagalbai apie konkrečią komandą.\n"
+"Tolimesnės komandos yra prieinamos šiame kontekste:\n"
+
+#, c-format
+msgid ""
+"%s is not a valid message class. See '/help msgcolor' for valid message "
+"classes."
+msgstr ""
+"„%s“ nėra teisingas žinutės tipas. Teisingus tipus galite pažiūrėti „/help "
+"msgcolor“."
+
+#, c-format
+msgid "%s is not a valid color. See '/help msgcolor' for valid colors."
+msgstr ""
+"„%s“ nėra teisinga spalva. Teisingas spalvas galite pažiūrėti „/help "
+"msgcolor“."
+
+msgid ""
+"say &lt;message&gt;: Send a message normally as if you weren't using a "
+"command."
+msgstr ""
+"say &lt;žinutė&gt;: nusiųsti žinutę įprastai, kaip ir nenaudojant šios "
+"komandos."
+
+msgid "me &lt;action&gt;: Send an IRC style action to a buddy or chat."
+msgstr ""
+"me &lt;veiksmas&gt;: nusiųsti IRC stiliaus veiksmą bičiuliui ar pokalbių "
+"kambariui."
+
+msgid ""
+"debug &lt;option&gt;: Send various debug information to the current "
+"conversation."
+msgstr ""
+"debug &lt;parametras&gt;: nusiųsti įvairią derinimo informaciją į šį "
+"pokalbį."
+
+msgid "clear: Clears the conversation scrollback."
+msgstr "clear: išvalo pokalbių žinučių langą."
+
+msgid "help &lt;command&gt;: Help on a specific command."
+msgstr "help &lt;komanda&gt;: suteikia pagalbą apie konkrečią komanda."
+
+msgid "users: Show the list of users in the chat."
+msgstr "users: parodo pokalbio dalyvių sąrašą."
+
+msgid "plugins: Show the plugins window."
+msgstr "plugins: parodo papildinių langą."
+
+msgid "buddylist: Show the buddylist."
+msgstr "buddylist: parodo bičiulių sąrašą."
+
+msgid "accounts: Show the accounts window."
+msgstr "accounts: parodo paskyrų langą."
+
+msgid "debugwin: Show the debug window."
+msgstr "debugwin: parodo derinimo langą."
+
+msgid "prefs: Show the preference window."
+msgstr "prefs: parodo nuostatų langą."
+
+msgid "statuses: Show the savedstatuses window."
+msgstr "statuses: parodo išsaugotų būsenų langą."
+
+msgid ""
+"msgcolor &lt;class&gt; &lt;foreground&gt; &lt;background&gt;: Set the color "
+"for different classes of messages in the conversation window.<br> &lt;"
+"class&gt;: receive, send, highlight, action, timestamp<br> &lt;foreground/"
+"background&gt;: black, red, green, blue, white, gray, darkgray, magenta, "
+"cyan, default<br><br>EXAMPLE:<br> msgcolor send cyan default"
+msgstr ""
+"msgcolor &lt;tipas&gt; &lt;tekstospalva&gt; &lt;fonospalva&gt;: nustatyti "
+"spalvas įvairiems žinučių tipams pokalbių lange.<br>\n"
+"&lt;tipas&gt;: receive, send, highlight, action, timestamp<br>\n"
+"&lt;tekstospalva/fonospalva&gt;: black, red, green, blue, white, gray, "
+"darkgray, magenta, cyan, default<br>\n"
+"<br>\n"
+"PAVYZDYS:<br>\n"
+"msgcolor send cyan default"
+
+msgid "Unable to open file."
+msgstr "Negalima atidaryti failo."
+
+msgid "Debug Window"
+msgstr "Derinimo langas"
+
+#. XXX: Setting the GROW_Y for the following widgets don't make sense. But right now
+#. * it's necessary to make the width of the debug window resizable ... like I said,
+#. * it doesn't make sense. The bug is likely in the packing in gntbox.c.
+#.
+msgid "Clear"
+msgstr "Išvalyti"
+
+msgid "Filter:"
+msgstr "Filtras: "
+
+msgid "Pause"
+msgstr "Pristabdyti"
+
+#, c-format
+msgid "File Transfers - %d%% of %d file"
+msgid_plural "File Transfers - %d%% of %d files"
+msgstr[0] "Failų perdavimai – %d%% iš %d failo"
+msgstr[1] "Failų perdavimai – %d%% iš %d failų"
+msgstr[2] "Failų perdavimai – %d%% iš %d failų"
+
+#. Create the window.
+msgid "File Transfers"
+msgstr "Failų perdavimai"
+
+msgid "Progress"
+msgstr "Eiga"
+
+msgid "Filename"
+msgstr "Failo pavadinimas"
+
+msgid "Size"
+msgstr "Dydis"
+
+msgid "Speed"
+msgstr "Greitis"
+
+msgid "Remaining"
+msgstr "Liko"
+
+#. XXX: Use of ggp_str_to_uin() is an ugly hack!
+msgid "Status"
+msgstr "Būsena"
+
+msgid "Close this window when all transfers finish"
+msgstr "Uždaryti ši langą pasibaigus visiems failų perdavimams"
+
+msgid "Clear finished transfers"
+msgstr "Pašalinti pabaigtus perdavimus"
+
+msgid "Stop"
+msgstr "Sustabdyti"
+
+msgid "Waiting for transfer to begin"
+msgstr "Laukiama perdavimo pradžios"
+
+msgid "Canceled"
+msgstr "Atšaukta"
+
+msgid "Failed"
+msgstr "Nepavyko"
+
+#, c-format
+msgid "%.2f KiB/s"
+msgstr "%.2f KB/s"
+
+msgid "Sent"
+msgstr "Išsiųstas"
+
+msgid "Received"
+msgstr "Gautas"
+
+msgid "Finished"
+msgstr "Baigta"
+
+#, c-format
+msgid "The file was saved as %s."
+msgstr "Failas įrašytas vardu %s."
+
# Build the Send As menu
-msgid "Sending"
-msgstr "Siunčiama"
-
-msgid "Receiving"
-msgstr "Gaunama"
-
-#, c-format
-msgid "Conversation in %s on %s"
-msgstr "Pokalbiai kambaryje %s, %s"
-
-#, c-format
-msgid "Conversation with %s on %s"
-msgstr "Pokalbiai su %s, %s"
-
-msgid "%B %Y"
-msgstr "%Y %B"
-
-msgid ""
-"System events will only be logged if the \"Log all status changes to system "
-"log\" preference is enabled."
-msgstr ""
-"Sisteminiai įvykiai įrašomi į žurnalą, jei įjungta nuostata „Rašyti visus "
-"būsenos pasikeitimus į sistemos žurnalą“."
-
-msgid ""
-"Instant messages will only be logged if the \"Log all instant messages\" "
-"preference is enabled."
-msgstr ""
-"Skubiosios žinutės įrašomos į žurnalą, jei įjungta nuostata „Rašyti visas "
-"skubiąsias žinutes į žurnalą“."
-
-msgid ""
-"Chats will only be logged if the \"Log all chats\" preference is enabled."
-msgstr ""
-"Pokalbiai kambariuose įrašomi į žurnalą, jei įjungta nuostata „Rašyti visus "
-"pokalbius kambariuoe į žurnalą“.\""
-
-msgid "No logs were found"
-msgstr "Žurnalų nerasta"
-
-msgid "Total log size:"
-msgstr "Viso žurnalo dydis:"
-
-#. Search box *********
-msgid "Scroll/Search: "
-msgstr "Slinkti/ieškoti: "
-
-#, c-format
-msgid "Conversations in %s"
-msgstr "Pokalbiai kambaryje %s"
-
-#, c-format
-msgid "Conversations with %s"
-msgstr "Pokalbiai su %s"
-
-msgid "All Conversations"
-msgstr "Visi pokalbiai"
-
+msgid "Sending"
+msgstr "Siunčiama"
+
+msgid "Receiving"
+msgstr "Gaunama"
+
+#, c-format
+msgid "Conversation in %s on %s"
+msgstr "Pokalbiai kambaryje %s, %s"
+
+#, c-format
+msgid "Conversation with %s on %s"
+msgstr "Pokalbiai su %s, %s"
+
+msgid "%B %Y"
+msgstr "%Y %B"
+
+msgid ""
+"System events will only be logged if the \"Log all status changes to system "
+"log\" preference is enabled."
+msgstr ""
+"Sisteminiai įvykiai įrašomi į žurnalą, jei įjungta nuostata „Rašyti visus "
+"būsenos pasikeitimus į sistemos žurnalą“."
+
+msgid ""
+"Instant messages will only be logged if the \"Log all instant messages\" "
+"preference is enabled."
+msgstr ""
+"Skubiosios žinutės įrašomos į žurnalą, jei įjungta nuostata „Rašyti visas "
+"skubiąsias žinutes į žurnalą“."
+
+msgid ""
+"Chats will only be logged if the \"Log all chats\" preference is enabled."
+msgstr ""
+"Pokalbiai kambariuose įrašomi į žurnalą, jei įjungta nuostata „Rašyti visus "
+"pokalbius kambariuoe į žurnalą“.\""
+
+msgid "No logs were found"
+msgstr "Žurnalų nerasta"
+
+msgid "Total log size:"
+msgstr "Viso žurnalo dydis:"
+
+#. Search box *********
+msgid "Scroll/Search: "
+msgstr "Slinkti/ieškoti: "
+
+#, c-format
+msgid "Conversations in %s"
+msgstr "Pokalbiai kambaryje %s"
+
+#, c-format
+msgid "Conversations with %s"
+msgstr "Pokalbiai su %s"
+
+msgid "All Conversations"
+msgstr "Visi pokalbiai"
+
# Window **********
-msgid "System Log"
-msgstr "Sistemos žurnalas"
-
-msgid "Emails"
-msgstr "El. laiškai"
-
-msgid "You have mail!"
-msgstr "Jūs turite pašto!"
-
-msgid "Sender"
-msgstr "Siuntėjas"
-
-msgid "Subject"
-msgstr "Tema"
-
-#, c-format
-msgid "%s (%s) has %d new message."
-msgid_plural "%s (%s) has %d new messages."
-msgstr[0] "%s (%s) turi %d naują pranešimą."
-msgstr[1] "%s (%s) turi %d naujus pranešimus."
-msgstr[2] "%s (%s) turi %d naujų pranešimų."
-
-msgid "New Mail"
-msgstr "Naujas paštas"
-
-#, c-format
-msgid "Info for %s"
-msgstr "Informacija apie %s"
-
-msgid "Buddy Information"
-msgstr "Informacija apie bičiulį"
-
-msgid "Continue"
-msgstr "Tęsti"
-
-msgid "IM"
-msgstr "Kalbėtis"
-
-msgid "(none)"
-msgstr "(nieko)"
-
-msgid "URI"
-msgstr "URI"
-
-msgid "ERROR"
-msgstr "KLAIDA"
-
-msgid "loading plugin failed"
-msgstr "nepavyko įkelti papildinio"
-
-msgid "unloading plugin failed"
-msgstr "nepavyko iškelti papildinio"
-
-#, c-format
-msgid ""
-"Name: %s\n"
-"Version: %s\n"
-"Description: %s\n"
-"Author: %s\n"
-"Website: %s\n"
-"Filename: %s\n"
-msgstr ""
-"Pavadinimas: %s\n"
-"Versija: %s\n"
-"Aprašymas: %s\n"
-"Autorius: %s\n"
-"Svetainė: %s\n"
-"Failo vardas: %s\n"
-
-msgid "Plugin need to be loaded before you can configure it."
-msgstr "Prieš konfigūruojant papildinį, jį reikia įkelti."
-
-msgid "No configuration options for this plugin."
-msgstr "Šis papildinys neturi konfigūruojamų parinkčių."
-
-msgid "Error loading plugin"
-msgstr "Papildinio įkėlimo klaida"
-
-msgid "The selected file is not a valid plugin."
-msgstr "Pasirinktasis failas nėra tikras papildinys."
-
-msgid ""
-"Please open the debug window and try again to see the exact error message."
-msgstr ""
-"Prašau atidaryti derinimo langą ir pabandyti vėl, kad pamatytumėte tikslų "
-"klaidos pranešimą."
-
-msgid "Select plugin to install"
-msgstr "Pasirinkite papildinį įdiegimui"
-
-msgid "You can (un)load plugins from the following list."
-msgstr "Jūs galite įkelti ar iškelti papildinius iš šio sąrašo."
-
-msgid "Install Plugin..."
-msgstr "Įdiegti papildinį..."
-
-msgid "Configure Plugin"
-msgstr "Konfigūruoti papildinį"
-
-#. copy the preferences to tmp values...
-#. * I liked "take affect immediately" Oh well :-(
-#. (that should have been "effect," right?)
-#. Back to instant-apply! I win! BU-HAHAHA!
-#. Create the window
-msgid "Preferences"
-msgstr "Nuostatos"
-
-msgid "Please enter a buddy to pounce."
-msgstr "Įveskite bičiulį, į kurį reaguoti"
-
+msgid "System Log"
+msgstr "Sistemos žurnalas"
+
+#, fuzzy
+msgid "Calling ... "
+msgstr "Skaičiuojama..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "Priimti"
+
+msgid "Reject"
+msgstr "Atmesti"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "Jūs palikote kanalą%s%s"
+
+msgid "call: Make an audio call."
+msgstr ""
+
+msgid "Emails"
+msgstr "El. laiškai"
+
+msgid "You have mail!"
+msgstr "Jūs turite pašto!"
+
+msgid "Sender"
+msgstr "Siuntėjas"
+
+msgid "Subject"
+msgstr "Tema"
+
+#, c-format
+msgid "%s (%s) has %d new message."
+msgid_plural "%s (%s) has %d new messages."
+msgstr[0] "%s (%s) turi %d naują pranešimą."
+msgstr[1] "%s (%s) turi %d naujus pranešimus."
+msgstr[2] "%s (%s) turi %d naujų pranešimų."
+
+msgid "New Mail"
+msgstr "Naujas paštas"
+
+#, c-format
+msgid "Info for %s"
+msgstr "Informacija apie %s"
+
+msgid "Buddy Information"
+msgstr "Informacija apie bičiulį"
+
+msgid "Continue"
+msgstr "Tęsti"
+
+msgid "IM"
+msgstr "Kalbėtis"
+
+# Invite
+msgid "Invite"
+msgstr "Pakviesti"
+
+msgid "(none)"
+msgstr "(nieko)"
+
+msgid "URI"
+msgstr "URI"
+
+msgid "ERROR"
+msgstr "KLAIDA"
+
+msgid "loading plugin failed"
+msgstr "nepavyko įkelti papildinio"
+
+msgid "unloading plugin failed"
+msgstr "nepavyko iškelti papildinio"
+
+#, c-format
+msgid ""
+"Name: %s\n"
+"Version: %s\n"
+"Description: %s\n"
+"Author: %s\n"
+"Website: %s\n"
+"Filename: %s\n"
+msgstr ""
+"Pavadinimas: %s\n"
+"Versija: %s\n"
+"Aprašymas: %s\n"
+"Autorius: %s\n"
+"Svetainė: %s\n"
+"Failo vardas: %s\n"
+
+msgid "Plugin need to be loaded before you can configure it."
+msgstr "Prieš konfigūruojant papildinį, jį reikia įkelti."
+
+msgid "No configuration options for this plugin."
+msgstr "Šis papildinys neturi konfigūruojamų parinkčių."
+
+msgid "Error loading plugin"
+msgstr "Papildinio įkėlimo klaida"
+
+msgid "The selected file is not a valid plugin."
+msgstr "Pasirinktasis failas nėra tikras papildinys."
+
+msgid ""
+"Please open the debug window and try again to see the exact error message."
+msgstr ""
+"Prašau atidaryti derinimo langą ir pabandyti vėl, kad pamatytumėte tikslų "
+"klaidos pranešimą."
+
+msgid "Select plugin to install"
+msgstr "Pasirinkite papildinį įdiegimui"
+
+msgid "You can (un)load plugins from the following list."
+msgstr "Jūs galite įkelti ar iškelti papildinius iš šio sąrašo."
+
+msgid "Install Plugin..."
+msgstr "Įdiegti papildinį..."
+
+msgid "Configure Plugin"
+msgstr "Konfigūruoti papildinį"
+
+#. copy the preferences to tmp values...
+#. * I liked "take affect immediately" Oh well :-(
+#. (that should have been "effect," right?)
+#. Back to instant-apply! I win! BU-HAHAHA!
+#. Create the window
+msgid "Preferences"
+msgstr "Nuostatos"
+
+msgid "Please enter a buddy to pounce."
+msgstr "Įveskite bičiulį, į kurį reaguoti"
+
# "New Buddy Pounce"
-msgid "New Buddy Pounce"
-msgstr "Nauja reakcija į bičiulį"
-
-msgid "Edit Buddy Pounce"
-msgstr "Redaguoti reakciją į bičiulį"
-
+msgid "New Buddy Pounce"
+msgstr "Nauja reakcija į bičiulį"
+
+msgid "Edit Buddy Pounce"
+msgstr "Redaguoti reakciją į bičiulį"
+
# Create the "Pounce Who" frame.
-msgid "Pounce Who"
-msgstr "Į kokį bičiulį reaguoti"
-
+msgid "Pounce Who"
+msgstr "Į kokį bičiulį reaguoti"
+
# Set up stuff for the account box
-#. Account:
-msgid "Account:"
-msgstr "Paskyra:"
-
-msgid "Buddy name:"
-msgstr "Bičiulio vardas:"
-
+#. Account:
+msgid "Account:"
+msgstr "Paskyra:"
+
+msgid "Buddy name:"
+msgstr "Bičiulio vardas:"
+
# Create the "Pounce When" frame.
-#. Create the "Pounce When Buddy..." frame.
-msgid "Pounce When Buddy..."
-msgstr "Reaguoti, kai bičiulis..."
-
-msgid "Signs on"
-msgstr "prisijungia"
-
-msgid "Signs off"
-msgstr "atsijungia"
-
-msgid "Goes away"
-msgstr "pasitraukia"
-
-msgid "Returns from away"
-msgstr "sugrįžta"
-
-msgid "Becomes idle"
-msgstr "tampa neveiklus"
-
-msgid "Is no longer idle"
-msgstr "tampa veiklus"
-
-msgid "Starts typing"
-msgstr "pradeda rašyti"
-
-msgid "Pauses while typing"
-msgstr "trumpam nustoja rašyti"
-
-msgid "Stops typing"
-msgstr "nustoja rašyti"
-
-msgid "Sends a message"
-msgstr "išsiunčia žinutę"
-
-#. Create the "Action" frame.
-msgid "Action"
-msgstr "Veiksmas"
-
-msgid "Open an IM window"
-msgstr "Atidaryti pokalbių langą"
-
-msgid "Pop up a notification"
-msgstr "Parodyti pranešimo langą"
-
-msgid "Send a message"
-msgstr "Nusiųsti žinutę"
-
-msgid "Execute a command"
-msgstr "Įvykdyti komandą"
-
-msgid "Play a sound"
-msgstr "Groti garsą"
-
-msgid "Pounce only when my status is not Available"
-msgstr "Reaguoti tik tada, kai esu neprieinamoje būsenoje"
-
-msgid "Recurring"
-msgstr "Pasikartojanti reakcija"
-
-msgid "Cannot create pounce"
-msgstr "Negalima sukurti reakcijos"
-
-msgid "You do not have any accounts."
-msgstr "Neturite jokių paskyrų."
-
-msgid "You must create an account first before you can create a pounce."
-msgstr "Prieš kurdamas reakciją privalote pirma sukurti paskyrą."
-
-#, c-format
-msgid "Are you sure you want to delete the pounce on %s for %s?"
-msgstr "Ar tikrai norite pašalinti reakciją į %s nuo %s?"
-
+#. Create the "Pounce When Buddy..." frame.
+msgid "Pounce When Buddy..."
+msgstr "Reaguoti, kai bičiulis..."
+
+msgid "Signs on"
+msgstr "prisijungia"
+
+msgid "Signs off"
+msgstr "atsijungia"
+
+msgid "Goes away"
+msgstr "pasitraukia"
+
+msgid "Returns from away"
+msgstr "sugrįžta"
+
+msgid "Becomes idle"
+msgstr "tampa neveiklus"
+
+msgid "Is no longer idle"
+msgstr "tampa veiklus"
+
+msgid "Starts typing"
+msgstr "pradeda rašyti"
+
+msgid "Pauses while typing"
+msgstr "trumpam nustoja rašyti"
+
+msgid "Stops typing"
+msgstr "nustoja rašyti"
+
+msgid "Sends a message"
+msgstr "išsiunčia žinutę"
+
+#. Create the "Action" frame.
+msgid "Action"
+msgstr "Veiksmas"
+
+msgid "Open an IM window"
+msgstr "Atidaryti pokalbių langą"
+
+msgid "Pop up a notification"
+msgstr "Parodyti pranešimo langą"
+
+msgid "Send a message"
+msgstr "Nusiųsti žinutę"
+
+msgid "Execute a command"
+msgstr "Įvykdyti komandą"
+
+msgid "Play a sound"
+msgstr "Groti garsą"
+
+msgid "Pounce only when my status is not Available"
+msgstr "Reaguoti tik tada, kai esu neprieinamoje būsenoje"
+
+msgid "Recurring"
+msgstr "Pasikartojanti reakcija"
+
+msgid "Cannot create pounce"
+msgstr "Negalima sukurti reakcijos"
+
+msgid "You do not have any accounts."
+msgstr "Neturite jokių paskyrų."
+
+msgid "You must create an account first before you can create a pounce."
+msgstr "Prieš kurdamas reakciją privalote pirma sukurti paskyrą."
+
+#, c-format
+msgid "Are you sure you want to delete the pounce on %s for %s?"
+msgstr "Ar tikrai norite pašalinti reakciją į %s nuo %s?"
+
# "New Buddy Pounce"
-msgid "Buddy Pounces"
-msgstr "Reakcijos į bičiulius"
-
-#, c-format
-msgid "%s has started typing to you (%s)"
-msgstr "%s pradėjo Jums rašyti (%s)"
-
-#, c-format
-msgid "%s has paused while typing to you (%s)"
-msgstr "Pradėjęs Jums rašyti %s sustojo (%s)"
-
-#, c-format
-msgid "%s has signed on (%s)"
-msgstr "%s prisijungė (%s)"
-
-#, c-format
-msgid "%s has returned from being idle (%s)"
-msgstr "%s tapo veiklus (%s)"
-
-#, c-format
-msgid "%s has returned from being away (%s)"
-msgstr "%s sugrįžo (%s)"
-
-#, c-format
-msgid "%s has stopped typing to you (%s)"
-msgstr "%s nustojo Jums rašyti (%s)"
-
-#, c-format
-msgid "%s has signed off (%s)"
-msgstr "%s atsijungė (%s)"
-
-#, c-format
-msgid "%s has become idle (%s)"
-msgstr "%s tapo neveiklus (%s)"
-
-#, c-format
-msgid "%s has gone away. (%s)"
-msgstr "%s pasitraukė. (%s)"
-
-#, c-format
-msgid "%s has sent you a message. (%s)"
-msgstr "%s atsiuntė Jums žinutę. (%s)"
-
-#, c-format
-msgid "Unknown pounce event. Please report this!"
-msgstr "Nežinomas reakcijos veiksmas. Prašome apie tai pranešti!"
-
-msgid "Based on keyboard use"
-msgstr "pagal klaviatūros naudojimą"
-
-msgid "From last sent message"
-msgstr "nuo paskutinės išsiųstos žinutės"
-
-msgid "Never"
-msgstr "niekada"
-
+msgid "Buddy Pounces"
+msgstr "Reakcijos į bičiulius"
+
+#, c-format
+msgid "%s has started typing to you (%s)"
+msgstr "%s pradėjo Jums rašyti (%s)"
+
+#, c-format
+msgid "%s has paused while typing to you (%s)"
+msgstr "Pradėjęs Jums rašyti %s sustojo (%s)"
+
+#, c-format
+msgid "%s has signed on (%s)"
+msgstr "%s prisijungė (%s)"
+
+#, c-format
+msgid "%s has returned from being idle (%s)"
+msgstr "%s tapo veiklus (%s)"
+
+#, c-format
+msgid "%s has returned from being away (%s)"
+msgstr "%s sugrįžo (%s)"
+
+#, c-format
+msgid "%s has stopped typing to you (%s)"
+msgstr "%s nustojo Jums rašyti (%s)"
+
+#, c-format
+msgid "%s has signed off (%s)"
+msgstr "%s atsijungė (%s)"
+
+#, c-format
+msgid "%s has become idle (%s)"
+msgstr "%s tapo neveiklus (%s)"
+
+#, c-format
+msgid "%s has gone away. (%s)"
+msgstr "%s pasitraukė. (%s)"
+
+#, c-format
+msgid "%s has sent you a message. (%s)"
+msgstr "%s atsiuntė Jums žinutę. (%s)"
+
+msgid "Unknown pounce event. Please report this!"
+msgstr "Nežinomas reakcijos veiksmas. Prašome apie tai pranešti!"
+
+msgid "Based on keyboard use"
+msgstr "pagal klaviatūros naudojimą"
+
+msgid "From last sent message"
+msgstr "nuo paskutinės išsiųstos žinutės"
+
+msgid "Never"
+msgstr "niekada"
+
# set the Show Offline Buddies option. must be done
# * after the treeview or faceprint gets mad. -Robot101
-msgid "Show Idle Time"
-msgstr "Rodyti neveiklumo laikus"
-
+msgid "Show Idle Time"
+msgstr "Rodyti neveiklumo laikus"
+
# set the Show Offline Buddies option. must be done
# * after the treeview or faceprint gets mad. -Robot101
-msgid "Show Offline Buddies"
-msgstr "Rodyti neprisijungusius bičiulius"
-
-msgid "Notify buddies when you are typing"
-msgstr "Informuoti bičiulius, kai jiems rašote"
-
-msgid "Log format"
-msgstr "Žurnalo formatas"
-
-msgid "Log IMs"
-msgstr "Į žurnalą rašyti asmeninius pokalbius"
-
-msgid "Log chats"
-msgstr "Į žurnalą rašyti pokalbius kambariuose"
-
-msgid "Log status change events"
-msgstr "Į žurnalą rašyti būsenos pasikeitimus"
-
-msgid "Report Idle time"
-msgstr "Rodyti neveiklumo laiką"
-
-msgid "Change status when idle"
-msgstr "Pakeisti būseną tapus neveikliu"
-
-msgid "Minutes before changing status"
-msgstr "Kiek minučių turi praeiti iki būsenos pakeitimo"
-
-msgid "Change status to"
-msgstr "Pakeisti būseną į"
-
-msgid "Conversations"
-msgstr "Pokalbiai"
-
-msgid "Logging"
-msgstr "Žurnalų vedimas"
-
-msgid "You must fill all the required fields."
-msgstr "Turite užpildyti visus privalomus laukus."
-
-msgid "The required fields are underlined."
-msgstr "Privalomi laukai yra pabraukti."
-
-msgid "Not implemented yet."
-msgstr "Funkcija dar nerealizuota."
-
-msgid "Save File..."
-msgstr "Įrašyti failą..."
-
-msgid "Open File..."
-msgstr "Atverti failą..."
-
-msgid "Choose Location..."
-msgstr "Parinkite kelią..."
-
-msgid "Hit 'Enter' to find more rooms of this category."
-msgstr ""
-"Paspauskite įvedimo klavišą, kad rastumėte daugiau šios kategorijos kambarių."
-
-msgid "Get"
-msgstr "Gauti"
-
-#. Create the window.
-msgid "Room List"
-msgstr "Kambarių sąrašas"
-
-msgid "Buddy logs in"
-msgstr "Bičiulis prisijungia"
-
-msgid "Buddy logs out"
-msgstr "Bičiulis atsijungia"
-
-msgid "Message received"
-msgstr "Gauta žinutė"
-
-msgid "Message received begins conversation"
-msgstr "Gauta žinutė, pradedanti pokalbį"
-
-msgid "Message sent"
-msgstr "Išsiųsta žinutė"
-
-msgid "Person enters chat"
-msgstr "Asmuo ateina į pokalbių kambarį"
-
-msgid "Person leaves chat"
-msgstr "Asmuo palieka pokalbių kambarį"
-
-msgid "You talk in chat"
-msgstr "Jūs kalbate pokalbių kambaryje"
-
-msgid "Others talk in chat"
-msgstr "Kiti kalba pokalbių kambaryje"
-
-msgid "Someone says your username in chat"
-msgstr "Kas nors pokalbyje pasako Jūsų vardą"
-
-msgid "GStreamer Failure"
-msgstr "GStreamer klaida"
-
-msgid "GStreamer failed to initialize."
-msgstr "Nepavyko paleisti GStreamer."
-
-msgid "(default)"
-msgstr "(numatytasis)"
-
-msgid "Select Sound File ..."
-msgstr "Pasirinkite garso failą..."
-
-msgid "Sound Preferences"
-msgstr "Garsų nuostatos"
-
-msgid "Profiles"
-msgstr "Profiliai"
-
-msgid "Automatic"
-msgstr "automatinis"
-
-msgid "Console Beep"
-msgstr "pyptelėjimai"
-
-msgid "Command"
-msgstr "komanda"
-
-msgid "No Sound"
-msgstr "be garsų"
-
-msgid "Sound Method"
-msgstr "Garso grojimo būdas:"
-
-msgid "Method: "
-msgstr "Būdas:"
-
-#, c-format
-msgid ""
-"Sound Command\n"
-"(%s for filename)"
-msgstr ""
-"Garso komanda:\n"
-"(%s reiškia failo vardą)"
-
-#. Sound options
-msgid "Sound Options"
-msgstr "Garso parinktys"
-
-msgid "Sounds when conversation has focus"
-msgstr "Groti garsus, kai pokalbio langas yra veikiamasis"
-
-msgid "Always"
-msgstr "visada"
-
-msgid "Only when available"
-msgstr "tik kai esu pasiekiamas"
-
-msgid "Only when not available"
-msgstr "tik kai esu nepasiekiamas"
-
-msgid "Volume(0-100):"
-msgstr "Garsumas (0--100):"
-
-#. Sound events
-msgid "Sound Events"
-msgstr "Garsai ir veiksmai"
-
-msgid "Event"
-msgstr "Įvykis"
-
-msgid "File"
-msgstr "Failas"
-
-msgid "Test"
-msgstr "Testuoti"
-
-msgid "Reset"
-msgstr "Atstatyti"
-
-msgid "Choose..."
-msgstr "Pasirinkti..."
-
-#, c-format
-msgid "Are you sure you want to delete \"%s\""
-msgstr "Ar Jūs tikrai norite šalinti „%s“?"
-
-msgid "Delete Status"
-msgstr "Pašalinti būseną"
-
-msgid "Saved Statuses"
-msgstr "Išsaugotos būsenos"
-
-msgid "Title"
-msgstr "Pavadinimas"
-
-msgid "Type"
-msgstr "Rūšis"
-
-#. Statuses are almost all the same. Define a macro to reduce code repetition.
-#. PurpleStatusPrimitive
-#. id - use default
-#. name - use default
-#. saveable
-#. user_settable
-#. not independent
-#. Attributes - each status can have a message.
-msgid "Message"
-msgstr "Žinutė"
-
-#. Use
-msgid "Use"
-msgstr "Naudoti"
-
-msgid "Invalid title"
-msgstr "Neteisingas pavadinimas"
-
-msgid "Please enter a non-empty title for the status."
-msgstr "Įveskite netuščią būsenos pavadinimą."
-
-msgid "Duplicate title"
-msgstr "Pasikartojantis pavadinimas"
-
-msgid "Please enter a different title for the status."
-msgstr "Prašome įvesti skirtingą pavadinimą šiai būsenai."
-
-msgid "Substatus"
-msgstr "Smulkesnė būsena"
-
-msgid "Status:"
-msgstr "Būsena:"
-
-msgid "Message:"
-msgstr "Žinutė:"
-
-msgid "Edit Status"
-msgstr "Redaguoti būseną"
-
-msgid "Use different status for following accounts"
-msgstr "Šioms paskyroms naudoti kitą būseną"
-
-#. Save & Use
-msgid "Save & Use"
-msgstr "Išsaugoti ir naudoti"
-
-msgid "Certificates"
-msgstr "Liudijimai"
-
-msgid "Sounds"
-msgstr "Garsai"
-
-msgid "Statuses"
-msgstr "Būsenos"
-
-msgid "Error loading the plugin."
-msgstr "Papildinio įkėlimo klaida."
-
-msgid "Couldn't find X display"
-msgstr "Nepavyko surasti X ekrano"
-
-msgid "Couldn't find window"
-msgstr "Nepavyko surasti lango"
-
-msgid "This plugin cannot be loaded because it was not built with X11 support."
-msgstr ""
-"Nepavyko įkelti šio papildinio, nes jis sukonstruotas be X11 palaikymo."
-
-msgid "GntClipboard"
-msgstr "„Gnt“ iškarpinė"
-
-msgid "Clipboard plugin"
-msgstr "Iškarpinės papildinys"
-
-msgid ""
-"When the gnt clipboard contents change, the contents are made available to "
-"X, if possible."
-msgstr "Kai „Gnt“ iškarpinės turinys pasikeičia, jis perduodamas X iškarpinei"
-
-#, c-format
-msgid "%s just signed on"
-msgstr "%s ką tik prisijungė"
-
-#, c-format
-msgid "%s just signed off"
-msgstr "%s atsijungė"
-
-#, c-format
-msgid "%s sent you a message"
-msgstr "%s atsiuntė žinutę"
-
-#, c-format
-msgid "%s said your nick in %s"
-msgstr "%s pasakė Jūsų vardą pokalbyje %s"
-
-#, c-format
-msgid "%s sent a message in %s"
-msgstr "%s parašė žinutę pokalbyje %s"
-
-msgid "Buddy signs on/off"
-msgstr "Bičiulis pradeda arba baigia seansą"
-
-msgid "You receive an IM"
-msgstr "Gaunate žinutę"
-
-msgid "Someone speaks in a chat"
-msgstr "Kas nors parašo į pokalbį"
-
-msgid "Someone says your name in a chat"
-msgstr "Kas nors pokalbyje pasako Jūsų vardą"
-
-msgid "Notify with a toaster when"
-msgstr "Informuoti iššokančiu langeliu, kai:"
-
-msgid "Beep too!"
-msgstr "Taip pat ir pyptelėti!"
-
-msgid "Set URGENT for the terminal window."
-msgstr "Nustatyti „URGENT“ požymį terminalo langui."
-
-msgid "GntGf"
-msgstr "GntGf"
-
-msgid "Toaster plugin"
-msgstr "Iššokančių langelių papildinys"
-
-#, c-format
-msgid "<b>Conversation with %s on %s:</b><br>"
-msgstr "<b>Pokalbis su %s, įvykęs %s:</b><br>"
-
-msgid "History Plugin Requires Logging"
-msgstr "Istorijos papildinys reikalauja žurnalų vedimo"
-
-msgid ""
-"Logging can be enabled from Tools -> Preferences -> Logging.\n"
-"\n"
-"Enabling logs for instant messages and/or chats will activate history for "
-"the same conversation type(s)."
-msgstr ""
-"Žurnalų vedimas gali būti įjungtas iš meniu pasirinkus Įrankiai -> Nuostatos "
-"-> Žurnalų vedimas.\n"
-"\n"
-"Žurnalų vedimo įjungimas greitosioms žinutėms ar pokalbiams kambariuose "
-"aktyvuos ir jų istoriją."
-
-msgid "GntHistory"
-msgstr "GntHistory"
-
-msgid "Shows recently logged conversations in new conversations."
-msgstr "Parodo neseniai įrašytus pokalbius naujuose pokalbiuose."
-
-msgid ""
-"When a new conversation is opened this plugin will insert the last "
-"conversation into the current conversation."
-msgstr ""
-"Kai pradedamas naujas pokalbis, šis papildinys įterps paskutinio pokalbio "
-"tekstą su tuo pačiu pašnekovu į pokalbių langą."
-
-msgid "Online"
-msgstr "Prisijungęs"
-
-msgid "Offline"
-msgstr "Atsijungęs"
-
+msgid "Show Offline Buddies"
+msgstr "Rodyti neprisijungusius bičiulius"
+
+msgid "Notify buddies when you are typing"
+msgstr "Informuoti bičiulius, kai jiems rašote"
+
+msgid "Log format"
+msgstr "Žurnalo formatas"
+
+msgid "Log IMs"
+msgstr "Į žurnalą rašyti asmeninius pokalbius"
+
+msgid "Log chats"
+msgstr "Į žurnalą rašyti pokalbius kambariuose"
+
+msgid "Log status change events"
+msgstr "Į žurnalą rašyti būsenos pasikeitimus"
+
+msgid "Report Idle time"
+msgstr "Rodyti neveiklumo laiką"
+
+msgid "Change status when idle"
+msgstr "Pakeisti būseną tapus neveikliu"
+
+msgid "Minutes before changing status"
+msgstr "Kiek minučių turi praeiti iki būsenos pakeitimo"
+
+msgid "Change status to"
+msgstr "Pakeisti būseną į"
+
+msgid "Conversations"
+msgstr "Pokalbiai"
+
+msgid "Logging"
+msgstr "Žurnalų vedimas"
+
+msgid "You must fill all the required fields."
+msgstr "Turite užpildyti visus privalomus laukus."
+
+msgid "The required fields are underlined."
+msgstr "Privalomi laukai yra pabraukti."
+
+msgid "Not implemented yet."
+msgstr "Funkcija dar nerealizuota."
+
+msgid "Save File..."
+msgstr "Įrašyti failą..."
+
+msgid "Open File..."
+msgstr "Atverti failą..."
+
+msgid "Choose Location..."
+msgstr "Parinkite kelią..."
+
+msgid "Hit 'Enter' to find more rooms of this category."
+msgstr ""
+"Paspauskite įvedimo klavišą, kad rastumėte daugiau šios kategorijos kambarių."
+
+msgid "Get"
+msgstr "Gauti"
+
+#. Create the window.
+msgid "Room List"
+msgstr "Kambarių sąrašas"
+
+msgid "Buddy logs in"
+msgstr "Bičiulis prisijungia"
+
+msgid "Buddy logs out"
+msgstr "Bičiulis atsijungia"
+
+msgid "Message received"
+msgstr "Gauta žinutė"
+
+msgid "Message received begins conversation"
+msgstr "Gauta žinutė, pradedanti pokalbį"
+
+msgid "Message sent"
+msgstr "Išsiųsta žinutė"
+
+msgid "Person enters chat"
+msgstr "Asmuo ateina į pokalbių kambarį"
+
+msgid "Person leaves chat"
+msgstr "Asmuo palieka pokalbių kambarį"
+
+msgid "You talk in chat"
+msgstr "Jūs kalbate pokalbių kambaryje"
+
+msgid "Others talk in chat"
+msgstr "Kiti kalba pokalbių kambaryje"
+
+msgid "Someone says your username in chat"
+msgstr "Kas nors pokalbyje pasako Jūsų vardą"
+
+msgid "GStreamer Failure"
+msgstr "GStreamer klaida"
+
+msgid "GStreamer failed to initialize."
+msgstr "Nepavyko paleisti GStreamer."
+
+msgid "(default)"
+msgstr "(numatytasis)"
+
+msgid "Select Sound File ..."
+msgstr "Pasirinkite garso failą..."
+
+msgid "Sound Preferences"
+msgstr "Garsų nuostatos"
+
+msgid "Profiles"
+msgstr "Profiliai"
+
+msgid "Automatic"
+msgstr "automatinis"
+
+msgid "Console Beep"
+msgstr "pyptelėjimai"
+
+msgid "Command"
+msgstr "komanda"
+
+msgid "No Sound"
+msgstr "be garsų"
+
+msgid "Sound Method"
+msgstr "Garso grojimo būdas:"
+
+msgid "Method: "
+msgstr "Būdas:"
+
+#, c-format
+msgid ""
+"Sound Command\n"
+"(%s for filename)"
+msgstr ""
+"Garso komanda:\n"
+"(%s reiškia failo vardą)"
+
+#. Sound options
+msgid "Sound Options"
+msgstr "Garso parinktys"
+
+msgid "Sounds when conversation has focus"
+msgstr "Groti garsus, kai pokalbio langas yra veikiamasis"
+
+msgid "Always"
+msgstr "visada"
+
+msgid "Only when available"
+msgstr "tik kai esu pasiekiamas"
+
+msgid "Only when not available"
+msgstr "tik kai esu nepasiekiamas"
+
+msgid "Volume(0-100):"
+msgstr "Garsumas (0--100):"
+
+#. Sound events
+msgid "Sound Events"
+msgstr "Garsai ir veiksmai"
+
+msgid "Event"
+msgstr "Įvykis"
+
+msgid "File"
+msgstr "Failas"
+
+msgid "Test"
+msgstr "Testuoti"
+
+msgid "Reset"
+msgstr "Atstatyti"
+
+msgid "Choose..."
+msgstr "Pasirinkti..."
+
+#, c-format
+msgid "Are you sure you want to delete \"%s\""
+msgstr "Ar Jūs tikrai norite šalinti „%s“?"
+
+msgid "Delete Status"
+msgstr "Pašalinti būseną"
+
+msgid "Saved Statuses"
+msgstr "Išsaugotos būsenos"
+
+msgid "Title"
+msgstr "Pavadinimas"
+
+msgid "Type"
+msgstr "Rūšis"
+
+#. Statuses are almost all the same. Define a macro to reduce code repetition.
+#. PurpleStatusPrimitive
+#. id - use default
+#. name - use default
+#. saveable
+#. user_settable
+#. not independent
+#. Attributes - each status can have a message.
+msgid "Message"
+msgstr "Žinutė"
+
+#. Use
+msgid "Use"
+msgstr "Naudoti"
+
+msgid "Invalid title"
+msgstr "Neteisingas pavadinimas"
+
+msgid "Please enter a non-empty title for the status."
+msgstr "Įveskite netuščią būsenos pavadinimą."
+
+msgid "Duplicate title"
+msgstr "Pasikartojantis pavadinimas"
+
+msgid "Please enter a different title for the status."
+msgstr "Prašome įvesti skirtingą pavadinimą šiai būsenai."
+
+msgid "Substatus"
+msgstr "Smulkesnė būsena"
+
+msgid "Status:"
+msgstr "Būsena:"
+
+msgid "Message:"
+msgstr "Žinutė:"
+
+msgid "Edit Status"
+msgstr "Redaguoti būseną"
+
+msgid "Use different status for following accounts"
+msgstr "Šioms paskyroms naudoti kitą būseną"
+
+#. Save & Use
+msgid "Save & Use"
+msgstr "Išsaugoti ir naudoti"
+
+msgid "Certificates"
+msgstr "Liudijimai"
+
+msgid "Sounds"
+msgstr "Garsai"
+
+msgid "Statuses"
+msgstr "Būsenos"
+
+msgid "Error loading the plugin."
+msgstr "Papildinio įkėlimo klaida."
+
+msgid "Couldn't find X display"
+msgstr "Nepavyko surasti X ekrano"
+
+msgid "Couldn't find window"
+msgstr "Nepavyko surasti lango"
+
+msgid "This plugin cannot be loaded because it was not built with X11 support."
+msgstr ""
+"Nepavyko įkelti šio papildinio, nes jis sukonstruotas be X11 palaikymo."
+
+msgid "GntClipboard"
+msgstr "„Gnt“ iškarpinė"
+
+msgid "Clipboard plugin"
+msgstr "Iškarpinės papildinys"
+
+msgid ""
+"When the gnt clipboard contents change, the contents are made available to "
+"X, if possible."
+msgstr "Kai „Gnt“ iškarpinės turinys pasikeičia, jis perduodamas X iškarpinei"
+
+#, c-format
+msgid "%s just signed on"
+msgstr "%s ką tik prisijungė"
+
+#, c-format
+msgid "%s just signed off"
+msgstr "%s atsijungė"
+
+#, c-format
+msgid "%s sent you a message"
+msgstr "%s atsiuntė žinutę"
+
+#, c-format
+msgid "%s said your nick in %s"
+msgstr "%s pasakė Jūsų vardą pokalbyje %s"
+
+#, c-format
+msgid "%s sent a message in %s"
+msgstr "%s parašė žinutę pokalbyje %s"
+
+msgid "Buddy signs on/off"
+msgstr "Bičiulis pradeda arba baigia seansą"
+
+msgid "You receive an IM"
+msgstr "Gaunate žinutę"
+
+msgid "Someone speaks in a chat"
+msgstr "Kas nors parašo į pokalbį"
+
+msgid "Someone says your name in a chat"
+msgstr "Kas nors pokalbyje pasako Jūsų vardą"
+
+msgid "Notify with a toaster when"
+msgstr "Informuoti iššokančiu langeliu, kai:"
+
+msgid "Beep too!"
+msgstr "Taip pat ir pyptelėti!"
+
+msgid "Set URGENT for the terminal window."
+msgstr "Nustatyti „URGENT“ požymį terminalo langui."
+
+msgid "GntGf"
+msgstr "GntGf"
+
+msgid "Toaster plugin"
+msgstr "Iššokančių langelių papildinys"
+
+#, c-format
+msgid "<b>Conversation with %s on %s:</b><br>"
+msgstr "<b>Pokalbis su %s, įvykęs %s:</b><br>"
+
+msgid "History Plugin Requires Logging"
+msgstr "Istorijos papildinys reikalauja žurnalų vedimo"
+
+msgid ""
+"Logging can be enabled from Tools -> Preferences -> Logging.\n"
+"\n"
+"Enabling logs for instant messages and/or chats will activate history for "
+"the same conversation type(s)."
+msgstr ""
+"Žurnalų vedimas gali būti įjungtas iš meniu pasirinkus Įrankiai -> Nuostatos "
+"-> Žurnalų vedimas.\n"
+"\n"
+"Žurnalų vedimo įjungimas greitosioms žinutėms ar pokalbiams kambariuose "
+"aktyvuos ir jų istoriją."
+
+msgid "GntHistory"
+msgstr "GntHistory"
+
+msgid "Shows recently logged conversations in new conversations."
+msgstr "Parodo neseniai įrašytus pokalbius naujuose pokalbiuose."
+
+msgid ""
+"When a new conversation is opened this plugin will insert the last "
+"conversation into the current conversation."
+msgstr ""
+"Kai pradedamas naujas pokalbis, šis papildinys įterps paskutinio pokalbio "
+"tekstą su tuo pačiu pašnekovu į pokalbių langą."
+
+msgid "Online"
+msgstr "Prisijungęs"
+
+msgid "Offline"
+msgstr "Atsijungęs"
+
# set the Show Offline Buddies option. must be done
# * after the treeview or faceprint gets mad. -Robot101
-msgid "Online Buddies"
-msgstr "Prisijungusių bičiulių"
-
+msgid "Online Buddies"
+msgstr "Prisijungusių bičiulių"
+
# set the Show Offline Buddies option. must be done
# * after the treeview or faceprint gets mad. -Robot101
-msgid "Offline Buddies"
-msgstr "Neprisijungusių bičiulių"
-
-msgid "Online/Offline"
-msgstr "Prisijungęs/neprisijungęs"
-
-msgid "Meebo"
-msgstr "Meebo"
-
-msgid "No Grouping"
-msgstr "Be grupavimo"
-
-msgid "Nested Subgroup"
-msgstr "Įdėtas pogrupis"
-
-msgid "Nested Grouping (experimental)"
-msgstr "Įdėtinis grupavimas (eksperimentinis)"
-
-msgid "Provides alternate buddylist grouping options."
-msgstr "Siūlo papildomus bičiulių sąrašo grupavimo būdus."
-
-msgid "Lastlog"
-msgstr "Lastlog"
-
-#. Translator Note: The "backlog" is the conversation buffer/history.
-msgid "lastlog: Searches for a substring in the backlog."
-msgstr "lastlog: ieško eilutės žurnaluose."
-
-msgid "GntLastlog"
-msgstr "GntLastLog"
-
-msgid "Lastlog plugin."
-msgstr "„Lastlog“ papildinys."
-
-msgid "accounts"
-msgstr "paskyros"
-
-msgid "Password is required to sign on."
-msgstr "Prisijungimui būtinas slaptažoidis."
-
-#, c-format
-msgid "Enter password for %s (%s)"
-msgstr "Įveskite %s (%s) slaptažodį"
-
-msgid "Enter Password"
-msgstr "Įveskite slaptažodį"
-
-msgid "Save password"
-msgstr "Išsaugoti slaptažodį"
-
-#, c-format
-msgid "Missing protocol plugin for %s"
-msgstr "Trūksta %s protokolo papildinio"
-
-msgid "Connection Error"
-msgstr "Sujungimo klaida"
-
-msgid "New passwords do not match."
-msgstr "Nauji slaptažodžiai nesutampa."
-
-msgid "Fill out all fields completely."
-msgstr "Pilnai užpildykite visus laukus."
-
-msgid "Original password"
-msgstr "Pradinis slaptažodis"
-
-msgid "New password"
-msgstr "Naujas slaptažodis"
-
-msgid "New password (again)"
-msgstr "Naujas slaptažodis (vėl)"
-
-#, c-format
-msgid "Change password for %s"
-msgstr "Keisti %s slaptažodį"
-
-msgid "Please enter your current password and your new password."
-msgstr "Prašome įvesti Jūsų pradinį slaptažodį ir Jūsų naują slaptažodį."
-
-#, c-format
-msgid "Change user information for %s"
-msgstr "Pakeisti vartotojo %s informaciją"
-
-msgid "Set User Info"
-msgstr "Nustatyti vartotojo informaciją"
-
-msgid "Unknown"
-msgstr "Nežinoma"
-
-msgid "Buddies"
-msgstr "Bičiuliai"
-
-msgid "buddy list"
-msgstr "bičiulių sąrašas"
-
-msgid "(DOES NOT MATCH)"
-msgstr "(NESUTAMPA)"
-
-#. Make messages
-#, c-format
-msgid "%s has presented the following certificate for just-this-once use:"
-msgstr "%s pateikė šį liudijimą vienkartiniam naudojimui:"
-
-#, c-format
-msgid ""
-"Common name: %s %s\n"
-"Fingerprint (SHA1): %s"
-msgstr ""
-"Įprastas vardas: %s %s\n"
-"SHA1 liudijimo kodas: %s"
-
-#. TODO: Find what the handle ought to be
-msgid "Single-use Certificate Verification"
-msgstr "Vienkartinio liudijimo patikra"
-
-#. Scheme name
-#. Pool name
-msgid "Certificate Authorities"
-msgstr "Liudijimų įstaigos"
-
-#. Scheme name
-#. Pool name
-msgid "SSL Peers Cache"
-msgstr "SSL partnerių podėlis"
-
-#. Make messages
-#, c-format
-msgid "Accept certificate for %s?"
-msgstr "Ar priimti liudijimą iš %s?"
-
-#. TODO: Find what the handle ought to be
-msgid "SSL Certificate Verification"
-msgstr "SSL liudijimo patikra"
-
-#. Number of actions
-msgid "Accept"
-msgstr "Priimti"
-
-msgid "Reject"
-msgstr "Atmesti"
-
-msgid "_View Certificate..."
-msgstr "_Rodyti liudijimą..."
-
-#. Prompt the user to authenticate the certificate
-#. vrq will be completed by user_auth
-#, c-format
-msgid ""
-"The certificate presented by \"%s\" is self-signed. It cannot be "
-"automatically checked."
-msgstr ""
-"Liudijimas, kurį pateikė „%s“, yra paties pasirašytas. Jis negali būti "
-"automatiškai patikrintas."
-
-#, c-format
-msgid "The certificate chain presented for %s is not valid."
-msgstr "Liudijimų grandinė, pateikta %s, yra neteisinga."
-
-#. TODO: Make this error either block the ensuing SSL
-#. connection error until the user dismisses this one, or
-#. stifle it.
-#. TODO: Probably wrong.
-#. TODO: Probably wrong
-msgid "SSL Certificate Error"
-msgstr "SSL liudijimo klaida"
-
-msgid "Invalid certificate chain"
-msgstr "Neteisinga liudijimų grandinė"
-
-#. vrq will be completed by user_auth
-msgid ""
-"You have no database of root certificates, so this certificate cannot be "
-"validated."
-msgstr ""
-"Neturite pagrindinių liudijimų duomenų bazės, todėl šis liudijimas negali "
-"būti patikrintas."
-
-#. vrq will be completed by user_auth
-msgid ""
-"The root certificate this one claims to be issued by is unknown to Pidgin."
-msgstr ""
-"Šis liudijimas nurodo jį išleidusį pagrindinį liudijimą, kurio Pidgin nežino."
-
-#, c-format
-msgid ""
-"The certificate chain presented by %s does not have a valid digital "
-"signature from the Certificate Authority from which it claims to have a "
-"signature."
-msgstr ""
-"Liudijimų grandinė, kurią pateikė %s, neturi galiojančio skaitmeninio parašo "
-"iš liudijimų įstaigos, iš kurios ji teigia gavusi parašą."
-
-msgid "Invalid certificate authority signature"
-msgstr "Neteisingas liudijimų įstaigos parašas"
-
-#. Prompt the user to authenticate the certificate
-#. TODO: Provide the user with more guidance about why he is
-#. being prompted
-#. vrq will be completed by user_auth
-#, c-format
-msgid ""
-"The certificate presented by \"%s\" claims to be from \"%s\" instead. This "
-"could mean that you are not connecting to the service you believe you are."
-msgstr ""
-"Liudijimas, pateiktas „%s“, tvirtina, kad iš tikrųjų priklauso „%s“. Galbūt "
-"jūs jungiatės ne prie tos paslaugos, prie kurios manote, kad jungiatės."
-
-#. Make messages
-#, c-format
-msgid ""
-"Common name: %s\n"
-"\n"
-"Fingerprint (SHA1): %s\n"
-"\n"
-"Activation date: %s\n"
-"Expiration date: %s\n"
-msgstr ""
-"Įprastas vardas: %s\n"
-"\n"
-"SHA1 kontrolinis kodas: %s\n"
-"\n"
-"Galiojimo pradžia: %s\n"
-"Galiojimo pabaiga: %s\n"
-
-#. TODO: Find what the handle ought to be
-msgid "Certificate Information"
-msgstr "Liudijimo informacija"
-
-msgid "Registration Error"
-msgstr "Registravimo klaida"
-
-msgid "Unregistration Error"
-msgstr "Išregistravimo klaida"
-
-#, c-format
-msgid "+++ %s signed on"
-msgstr "+++ %s prisijungė"
-
-#, c-format
-msgid "+++ %s signed off"
-msgstr "+++ %s atsijungė"
-
-msgid "Unknown error"
-msgstr "Nežinoma klaida"
-
-msgid "Unable to send message: The message is too large."
-msgstr "Negalima išsiųsti žinutės: ji per ilga."
-
-#, c-format
-msgid "Unable to send message to %s."
-msgstr "Negalima išsiųsti žinutės vartotojui %s."
-
-msgid "The message is too large."
-msgstr "Žinutė per ilga."
-
-msgid "Unable to send message."
-msgstr "Negalima išsiųsti žinutės."
-
-msgid "Send Message"
-msgstr "Nusiųsti žinutę"
-
-msgid "_Send Message"
-msgstr "Nu_siųsti žinutę"
-
-#, c-format
-msgid "%s entered the room."
-msgstr "%s atėjo į kambarį."
-
-#, c-format
-msgid "%s [<I>%s</I>] entered the room."
-msgstr "%s [<I>%s</I>] atėjo į kambarį."
-
-#, c-format
-msgid "You are now known as %s"
-msgstr "Dabar esate žinomas kaip %s"
-
-#, c-format
-msgid "%s is now known as %s"
-msgstr "%s dabar yra žinomas kaip %s"
-
-#, c-format
-msgid "%s left the room."
-msgstr "%s paliko kambarį."
-
-#, c-format
-msgid "%s left the room (%s)."
-msgstr "%s paliko kambarį (%s)."
-
-#, c-format
-msgid "Failed to get connection: %s"
-msgstr "Nepavyko gauti jungties: %s"
-
-#, c-format
-msgid "Failed to get name: %s"
-msgstr "Nepavyko gauti vardo: %s"
-
-#, c-format
-msgid "Failed to get serv name: %s"
-msgstr "Nepavyko gauti serverio pavadinimo: %s"
-
-msgid "Purple's D-BUS server is not running for the reason listed below"
-msgstr "Purple D-BUS serveris nėra paleistas dėl žemiau pateiktos priežasties"
-
-msgid "No name"
-msgstr "Be vardo"
-
-msgid "Unable to create new resolver process\n"
-msgstr "Negalima sukurti naujo DNS adresų keitiklio proceso\n"
-
-msgid "Unable to send request to resolver process\n"
-msgstr "Nepavyko išsiųsti užklausos DNS adresų keitiklio procesui\n"
-
-#, c-format
-msgid ""
-"Error resolving %s:\n"
-"%s"
-msgstr ""
-"Klaida verčiant DNS adresą %s:\n"
-"%s"
-
-#, c-format
-msgid "Error resolving %s: %d"
-msgstr "Klaida keičiant DNS adresą %s: %d"
-
-#, c-format
-msgid ""
-"Error reading from resolver process:\n"
-"%s"
-msgstr ""
-"Skaitymo iš DNS adresų keitiklio proceso klaida:\n"
-"%s"
-
-#, c-format
-msgid "Resolver process exited without answering our request"
-msgstr "Adresų keitiklio procesas baigė darbą neatsakęs į mūsų užklausą"
-
-#, c-format
-msgid "Thread creation failure: %s"
-msgstr "Nepavyko sukurti gijos: %s"
-
-msgid "Unknown reason"
-msgstr "Nežinoma priežastis"
-
-#, c-format
-msgid ""
-"Error reading %s: \n"
-"%s.\n"
-msgstr ""
-"%s skaitymo klaida:\n"
-"%s.\n"
-
-#, c-format
-msgid ""
-"Error writing %s: \n"
-"%s.\n"
-msgstr ""
-"%s rašymo klaida:\n"
-"%s.\n"
-
-#, c-format
-msgid ""
-"Error accessing %s: \n"
-"%s.\n"
-msgstr ""
-"%s prieigos klaida:\n"
-"%s.\n"
-
-msgid "Directory is not writable."
-msgstr "Į katalogą negalima rašyti."
-
-msgid "Cannot send a file of 0 bytes."
-msgstr "Negalima siųsti 0 baitų dydžio failo."
-
-msgid "Cannot send a directory."
-msgstr "Negalima siųsti katalogo."
-
-#, c-format
-msgid "%s is not a regular file. Cowardly refusing to overwrite it.\n"
-msgstr "%s nėra paprastas failas, todėl nebuvo pakeistas.\n"
-
-#, c-format
-msgid "%s wants to send you %s (%s)"
-msgstr "%s nori Jums atsiųsti %s (%s)"
-
-#, c-format
-msgid "%s wants to send you a file"
-msgstr "%s nori Jums atsiųsti failą"
-
-#, c-format
-msgid "Accept file transfer request from %s?"
-msgstr "Ar priimti perduodamą failą iš %s?"
-
-#, c-format
-msgid ""
-"A file is available for download from:\n"
-"Remote host: %s\n"
-"Remote port: %d"
-msgstr ""
-"Failas yra prieinamas parsisiuntimui iš:\n"
-"Nutolęs mazgas: %s\n"
-"Nutolęs prievadas: %d"
-
-#, c-format
-msgid "%s is offering to send file %s"
-msgstr "%s siūlo atsiųsti failą %s"
-
-#, c-format
-msgid "%s is not a valid filename.\n"
-msgstr "%s nėra teisingas failo vardas.\n"
-
-#, c-format
-msgid "Offering to send %s to %s"
-msgstr "Siūloma nusiųsti %s bičiuliui %s"
-
-#, c-format
-msgid "Starting transfer of %s from %s"
-msgstr "Pradedamas %s gavimas iš %s"
-
-#, c-format
-msgid "Transfer of file %s complete"
-msgstr "Failo %s perdavimas baigtas"
-
-msgid "File transfer complete"
-msgstr "Failo perdavimas baigtas"
-
-#, c-format
-msgid "You canceled the transfer of %s"
-msgstr "Jūs nutraukėte %s perdavimą"
-
-msgid "File transfer cancelled"
-msgstr "Failo perdavimas nutrauktas"
-
-#, c-format
-msgid "%s canceled the transfer of %s"
-msgstr "%s nutraukė %s perdavimą"
-
-#, c-format
-msgid "%s canceled the file transfer"
-msgstr "%s nutraukė failo perdavimą"
-
-#, c-format
-msgid "File transfer to %s failed."
-msgstr "Įvyko failo perdavimo bičiuliui %s klaida."
-
-#, c-format
-msgid "File transfer from %s failed."
-msgstr "Įvyko failo gavimo iš %s klaida."
-
-msgid "Run the command in a terminal"
-msgstr "Vykdyti komandą terminale"
-
-msgid "The command used to handle \"aim\" URLs, if enabled."
-msgstr "Komanda „aim“ universaliųjų adresų apdorojimui, jei aktyvuota."
-
-msgid "The command used to handle \"gg\" URLs, if enabled."
-msgstr "Komanda „gg“ universaliųjų adresų apdorojimui, jei aktyvuota."
-
-msgid "The command used to handle \"icq\" URLs, if enabled."
-msgstr "Komanda „icq“ universaliųjų adresų apdorojimui, jei aktyvuota."
-
-msgid "The command used to handle \"irc\" URLs, if enabled."
-msgstr "Komanda „irc“ universaliųjų adresų apdorojimui, jei aktyvuota."
-
-msgid "The command used to handle \"msnim\" URLs, if enabled."
-msgstr "Komanda „msnim“ universaliųjų adresų apdorojimui, jei aktyvuota."
-
-msgid "The command used to handle \"sip\" URLs, if enabled."
-msgstr "Komanda „sip“ universaliųjų adresų apdorojimui, jei aktyvuota."
-
-msgid "The command used to handle \"xmpp\" URLs, if enabled."
-msgstr "Komanda „xmpp“ universaliųjų adresų apdorojimui, jei aktyvuota."
-
-msgid "The command used to handle \"ymsgr\" URLs, if enabled."
-msgstr "Komanda „ysmgr“ universaliųjų adresų apdorojimui, jei aktyvuota."
-
-msgid "The handler for \"aim\" URLs"
-msgstr "Komanda „aim“ universaliųjų adresų apdorojimui"
-
-msgid "The handler for \"gg\" URLs"
-msgstr "Komanda „aim“ universaliųjų adresų apdorojimui"
-
-msgid "The handler for \"icq\" URLs"
-msgstr "Komanda „icq“ universaliųjų adresų apdorojimui"
-
-msgid "The handler for \"irc\" URLs"
-msgstr "Komanda „irc“ universaliųjų adresų apdorojimui"
-
-msgid "The handler for \"msnim\" URLs"
-msgstr "Komanda „msnim“ universaliųjų adresų apdorojimui"
-
-msgid "The handler for \"sip\" URLs"
-msgstr "Komanda „sip“ universaliųjų adresų apdorojimui"
-
-msgid "The handler for \"xmpp\" URLs"
-msgstr "Komanda „xmpp“ universaliųjų adresų apdorojimui"
-
-msgid "The handler for \"ymsgr\" URLs"
-msgstr "Komanda „ysmgr“ universaliųjų adresų apdorojimui"
-
-msgid ""
-"True if the command specified in the \"command\" key should handle \"aim\" "
-"URLs."
-msgstr ""
-"„True“, jeigu komanda, nurodyta „command“ rakte, turi apdoroti „aim“ "
-"universaliuosius adresus."
-
-msgid ""
-"True if the command specified in the \"command\" key should handle \"gg\" "
-"URLs."
-msgstr ""
-"„True“, jeigu komanda, nurodyta „command“ rakte, turi apdoroti „gg“ "
-"universaliuosius adresus."
-
-msgid ""
-"True if the command specified in the \"command\" key should handle \"icq\" "
-"URLs."
-msgstr ""
-"„True“, jeigu komanda, nurodyta „command“ rakte, turi apdoroti „icq“ "
-"universaliuosius adresus."
-
-msgid ""
-"True if the command specified in the \"command\" key should handle \"irc\" "
-"URLs."
-msgstr ""
-"„True“, jeigu komanda, nurodyta „command“ rakte, turi apdoroti „irc“ "
-"universaliuosius adresus."
-
-msgid ""
-"True if the command specified in the \"command\" key should handle \"msnim\" "
-"URLs."
-msgstr ""
-"„True“, jeigu komanda, nurodyta „command“ rakte, turi apdoroti „msnim“ "
-"universaliuosius adresus."
-
-msgid ""
-"True if the command specified in the \"command\" key should handle \"sip\" "
-"URLs."
-msgstr ""
-"„True“, jeigu komanda, nurodyta „command“ rakte, turi apdoroti „sip“ "
-"universaliuosius adresus."
-
-msgid ""
-"True if the command specified in the \"command\" key should handle \"xmpp\" "
-"URLs."
-msgstr ""
-"„True“, jeigu komanda, nurodyta „command“ rakte, turi apdoroti „xmpp“ "
-"universaliuosius adresus."
-
-msgid ""
-"True if the command specified in the \"command\" key should handle \"ymsgr\" "
-"URLs."
-msgstr ""
-"„True“, jeigu komanda, nurodyta „command“ rakte, turi apdoroti „ysmgr“ "
-"universaliuosius adresus."
-
-msgid ""
-"True if the command used to handle this type of URL should be run in a "
-"terminal."
-msgstr ""
-"„True“, jeigu komanda, turinti apdoroti šio tipo universaliuosius adresus, "
-"turi būti leidžiama terminale."
-
-msgid "Whether the specified command should handle \"aim\" URLs"
-msgstr "Ar nurodytoji komanda turėtų apdoroti „aim“ universaliuosius adresus"
-
-msgid "Whether the specified command should handle \"gg\" URLs"
-msgstr "Ar nurodytoji komanda turėtų apdoroti „gg“ universaliuosius adresus"
-
-msgid "Whether the specified command should handle \"icq\" URLs"
-msgstr "Ar nurodytoji komanda turėtų apdoroti „icq“ universaliuosius adresus"
-
-msgid "Whether the specified command should handle \"irc\" URLs"
-msgstr "Ar nurodytoji komanda turėtų apdoroti „irc“ universaliuosius adresus"
-
-msgid "Whether the specified command should handle \"msnim\" URLs"
-msgstr "Ar nurodytoji komanda turėtų apdoroti „msnim“ universaliuosius adresus"
-
-msgid "Whether the specified command should handle \"sip\" URLs"
-msgstr "Ar nurodytoji komanda turėtų apdoroti „sip“ universaliuosius adresus"
-
-msgid "Whether the specified command should handle \"xmpp\" URLs"
-msgstr "Ar nurodytoji komanda turėtų apdoroti „xmpp“ universaliuosius adresus"
-
-msgid "Whether the specified command should handle \"ymsgr\" URLs"
-msgstr "Ar nurodytoji komanda turėtų apdoroti „ysmgr“ universaliuosius adresus"
-
-msgid "<b><font color=\"red\">The logger has no read function</font></b>"
-msgstr ""
-"<b><font color=\"red\">Žurnalų tvarkytuvė neturi skaitymo funkcijos</font></"
-"b>"
-
-msgid "HTML"
-msgstr "HTML"
-
-msgid "Plain text"
-msgstr "Grynasis tekstas"
-
-msgid "Old flat format"
-msgstr "Senasis plokščias formatas"
-
-msgid "Logging of this conversation failed."
-msgstr "Nepavyko šio pokalbio įrašyti į žurnalą."
-
-msgid "XML"
-msgstr "XML"
-
-#, c-format
-msgid ""
-"<font color=\"#16569E\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-"
-"REPLY&gt;:</b></font> %s<br/>\n"
-msgstr ""
-"<font color=\"#16569E\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTOMATINIS "
-"ATSAKYMAS&gt;:</b></font> %s<br/>\n"
-
-#, c-format
-msgid ""
-"<font color=\"#A82F2F\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-"
-"REPLY&gt;:</b></font> %s<br/>\n"
-msgstr ""
-"<font color=\"#A82F2F\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTOMATINIS "
-"ATSAKYMAS&gt;:</b></font> %s<br/>\n"
-
-msgid "<font color=\"red\"><b>Unable to find log path!</b></font>"
-msgstr "<font color=\"red\"><b>Negalima rasti žurnalų kelio!</b></font>"
-
-#, c-format
-msgid "<font color=\"red\"><b>Could not read file: %s</b></font>"
-msgstr "<font color=\"red\"><b>Negalima perskaityti failo: %s</b></font>"
-
-#, c-format
-msgid "(%s) %s <AUTO-REPLY>: %s\n"
-msgstr "(%s) %s <AUTOMATINIS-ATSAKYMAS>: %s\n"
-
-#, c-format
-msgid "You are using %s, but this plugin requires %s."
-msgstr "Jūs naudojatės %s, bet šiam papildiniui reikia %s."
-
-msgid "This plugin has not defined an ID."
-msgstr "Šis papildinys nenustatė ID"
-
-#, c-format
-msgid "Plugin magic mismatch %d (need %d)"
-msgstr "Neatitinka papildinio kontrolinis skaičius %d (turėtų būti %d)"
-
-#, c-format
-msgid "ABI version mismatch %d.%d.x (need %d.%d.x)"
-msgstr "ABI versija %d.%d.x neatitinka (turėtų būti %d.%d.x)"
-
-msgid ""
-"Plugin does not implement all required functions (list_icon, login and close)"
-msgstr ""
-"Papildinys nerealizuoja visų reikallingų funkcijų (list_icon, login ir close)"
-
-#, c-format
-msgid ""
-"The required plugin %s was not found. Please install this plugin and try "
-"again."
-msgstr ""
-"Reikalautas papildinys %s nerastas. Prašome įdiegti šį papildinį ir bandyti "
-"iš naujo."
-
-msgid "Unable to load the plugin"
-msgstr "Papildinio įkelti nepavyko"
-
-#, c-format
-msgid "The required plugin %s was unable to load."
-msgstr "Reikalauto papildinio %s nepavyko įkelti."
-
-msgid "Unable to load your plugin."
-msgstr "Nepavyko įkelti Jūsų nurodyto papildinio."
-
-#, c-format
-msgid "%s requires %s, but it failed to unload."
-msgstr "%s reikalauja %s, bet pastarojo papildinio iškelti nepavyko."
-
-msgid "Autoaccept"
-msgstr "Automatinis priėmimas"
-
-msgid "Auto-accept file transfer requests from selected users."
-msgstr "Automatiškai priima failų siuntimus iš pasirinktų vartotojų."
-
-#, c-format
-msgid "Autoaccepted file transfer of \"%s\" from \"%s\" completed."
-msgstr "Automatiškai priimtas failo „%s“ siuntimas iš „%s“ baigtas."
-
-msgid "Autoaccept complete"
-msgstr "Automatinis priėmimas baigtas"
-
-#, c-format
-msgid "When a file-transfer request arrives from %s"
-msgstr "Kai gaunamas failo perdavimo prašymas iš %s"
-
-msgid "Set Autoaccept Setting"
-msgstr "Nustatyti automatinį prėmimą"
-
-msgid "_Save"
-msgstr "_Įrašyti"
-
-msgid "_Cancel"
-msgstr "_Atsisakyti"
-
-msgid "Ask"
-msgstr "Paklausti"
-
-msgid "Auto Accept"
-msgstr "Automatiškai priimti"
-
-msgid "Auto Reject"
-msgstr "Automatiškai atmesti"
-
-msgid "Autoaccept File Transfers..."
-msgstr "Automatiškai priimti failų perdavimus..."
-
-#. XXX: Is there a better way than this? There really should be.
-msgid ""
-"Path to save the files in\n"
-"(Please provide the full path)"
-msgstr ""
-"Kelias, kuriame išsaugoti failus\n"
-"(Nurodykite pilną kelią)"
-
-msgid "Automatically reject from users not in buddy list"
-msgstr "Automatiškai atmesti iš vartotojų, nesančių bičiulių sąraše"
-
-msgid ""
-"Notify with a popup when an autoaccepted file transfer is complete\n"
-"(only when there's no conversation with the sender)"
-msgstr ""
-"Pranešti iššokančiu langu, kai baigtas automatiškai priimtas failo "
-"perdavimas\n"
-"(tik jei nevyko pokalbis su siuntėju)"
-
-msgid "Create a new directory for each user"
-msgstr "Sukurti po naują katalogą kiekvienam naudotojui"
-
-msgid "Notes"
-msgstr "Pastabos"
-
-msgid "Enter your notes below..."
-msgstr "Įveskite savo pastabas žemiau..."
-
-msgid "Edit Notes..."
-msgstr "Redaguoti pastabas..."
-
+msgid "Offline Buddies"
+msgstr "Neprisijungusių bičiulių"
+
+msgid "Online/Offline"
+msgstr "Prisijungęs/neprisijungęs"
+
+msgid "Meebo"
+msgstr "Meebo"
+
+msgid "No Grouping"
+msgstr "Be grupavimo"
+
+msgid "Nested Subgroup"
+msgstr "Įdėtas pogrupis"
+
+msgid "Nested Grouping (experimental)"
+msgstr "Įdėtinis grupavimas (eksperimentinis)"
+
+msgid "Provides alternate buddylist grouping options."
+msgstr "Siūlo papildomus bičiulių sąrašo grupavimo būdus."
+
+msgid "Lastlog"
+msgstr "Lastlog"
+
+#. Translator Note: The "backlog" is the conversation buffer/history.
+msgid "lastlog: Searches for a substring in the backlog."
+msgstr "lastlog: ieško eilutės žurnaluose."
+
+msgid "GntLastlog"
+msgstr "GntLastLog"
+
+msgid "Lastlog plugin."
+msgstr "„Lastlog“ papildinys."
+
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "Dainos URL"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
+msgid "accounts"
+msgstr "paskyros"
+
+msgid "Password is required to sign on."
+msgstr "Prisijungimui būtinas slaptažoidis."
+
+#, c-format
+msgid "Enter password for %s (%s)"
+msgstr "Įveskite %s (%s) slaptažodį"
+
+msgid "Enter Password"
+msgstr "Įveskite slaptažodį"
+
+msgid "Save password"
+msgstr "Išsaugoti slaptažodį"
+
+#, c-format
+msgid "Missing protocol plugin for %s"
+msgstr "Trūksta %s protokolo papildinio"
+
+msgid "Connection Error"
+msgstr "Sujungimo klaida"
+
+msgid "New passwords do not match."
+msgstr "Nauji slaptažodžiai nesutampa."
+
+msgid "Fill out all fields completely."
+msgstr "Pilnai užpildykite visus laukus."
+
+msgid "Original password"
+msgstr "Pradinis slaptažodis"
+
+msgid "New password"
+msgstr "Naujas slaptažodis"
+
+msgid "New password (again)"
+msgstr "Naujas slaptažodis (vėl)"
+
+#, c-format
+msgid "Change password for %s"
+msgstr "Keisti %s slaptažodį"
+
+msgid "Please enter your current password and your new password."
+msgstr "Prašome įvesti Jūsų pradinį slaptažodį ir Jūsų naują slaptažodį."
+
+#, c-format
+msgid "Change user information for %s"
+msgstr "Pakeisti vartotojo %s informaciją"
+
+msgid "Set User Info"
+msgstr "Nustatyti vartotojo informaciją"
+
+msgid "Unknown"
+msgstr "Nežinoma"
+
+msgid "Buddies"
+msgstr "Bičiuliai"
+
+msgid "buddy list"
+msgstr "bičiulių sąrašas"
+
+msgid "(DOES NOT MATCH)"
+msgstr "(NESUTAMPA)"
+
+#. Make messages
+#, c-format
+msgid "%s has presented the following certificate for just-this-once use:"
+msgstr "%s pateikė šį liudijimą vienkartiniam naudojimui:"
+
+#, c-format
+msgid ""
+"Common name: %s %s\n"
+"Fingerprint (SHA1): %s"
+msgstr ""
+"Įprastas vardas: %s %s\n"
+"SHA1 liudijimo kodas: %s"
+
+#. TODO: Find what the handle ought to be
+msgid "Single-use Certificate Verification"
+msgstr "Vienkartinio liudijimo patikra"
+
+#. Scheme name
+#. Pool name
+msgid "Certificate Authorities"
+msgstr "Liudijimų įstaigos"
+
+#. Scheme name
+#. Pool name
+msgid "SSL Peers Cache"
+msgstr "SSL partnerių podėlis"
+
+#. Make messages
+#, c-format
+msgid "Accept certificate for %s?"
+msgstr "Ar priimti liudijimą iš %s?"
+
+#. TODO: Find what the handle ought to be
+msgid "SSL Certificate Verification"
+msgstr "SSL liudijimo patikra"
+
+msgid "_View Certificate..."
+msgstr "_Rodyti liudijimą..."
+
+#. Prompt the user to authenticate the certificate
+#. vrq will be completed by user_auth
+#, c-format
+msgid ""
+"The certificate presented by \"%s\" is self-signed. It cannot be "
+"automatically checked."
+msgstr ""
+"Liudijimas, kurį pateikė „%s“, yra paties pasirašytas. Jis negali būti "
+"automatiškai patikrintas."
+
+#, c-format
+msgid "The certificate chain presented for %s is not valid."
+msgstr "Liudijimų grandinė, pateikta %s, yra neteisinga."
+
+#. TODO: Make this error either block the ensuing SSL
+#. connection error until the user dismisses this one, or
+#. stifle it.
+#. TODO: Probably wrong.
+#. TODO: Probably wrong
+msgid "SSL Certificate Error"
+msgstr "SSL liudijimo klaida"
+
+msgid "Invalid certificate chain"
+msgstr "Neteisinga liudijimų grandinė"
+
+#. vrq will be completed by user_auth
+msgid ""
+"You have no database of root certificates, so this certificate cannot be "
+"validated."
+msgstr ""
+"Neturite pagrindinių liudijimų duomenų bazės, todėl šis liudijimas negali "
+"būti patikrintas."
+
+#. vrq will be completed by user_auth
+msgid ""
+"The root certificate this one claims to be issued by is unknown to Pidgin."
+msgstr ""
+"Šis liudijimas nurodo jį išleidusį pagrindinį liudijimą, kurio Pidgin nežino."
+
+#, c-format
+msgid ""
+"The certificate chain presented by %s does not have a valid digital "
+"signature from the Certificate Authority from which it claims to have a "
+"signature."
+msgstr ""
+"Liudijimų grandinė, kurią pateikė %s, neturi galiojančio skaitmeninio parašo "
+"iš liudijimų įstaigos, iš kurios ji teigia gavusi parašą."
+
+msgid "Invalid certificate authority signature"
+msgstr "Neteisingas liudijimų įstaigos parašas"
+
+#. Prompt the user to authenticate the certificate
+#. TODO: Provide the user with more guidance about why he is
+#. being prompted
+#. vrq will be completed by user_auth
+#, c-format
+msgid ""
+"The certificate presented by \"%s\" claims to be from \"%s\" instead. This "
+"could mean that you are not connecting to the service you believe you are."
+msgstr ""
+"Liudijimas, pateiktas „%s“, tvirtina, kad iš tikrųjų priklauso „%s“. Galbūt "
+"jūs jungiatės ne prie tos paslaugos, prie kurios manote, kad jungiatės."
+
+#. Make messages
+#, c-format
+msgid ""
+"Common name: %s\n"
+"\n"
+"Fingerprint (SHA1): %s\n"
+"\n"
+"Activation date: %s\n"
+"Expiration date: %s\n"
+msgstr ""
+"Įprastas vardas: %s\n"
+"\n"
+"SHA1 kontrolinis kodas: %s\n"
+"\n"
+"Galiojimo pradžia: %s\n"
+"Galiojimo pabaiga: %s\n"
+
+#. TODO: Find what the handle ought to be
+msgid "Certificate Information"
+msgstr "Liudijimo informacija"
+
+msgid "Registration Error"
+msgstr "Registravimo klaida"
+
+msgid "Unregistration Error"
+msgstr "Išregistravimo klaida"
+
+#, c-format
+msgid "+++ %s signed on"
+msgstr "+++ %s prisijungė"
+
+#, c-format
+msgid "+++ %s signed off"
+msgstr "+++ %s atsijungė"
+
+msgid "Unknown error"
+msgstr "Nežinoma klaida"
+
+msgid "Unable to send message: The message is too large."
+msgstr "Negalima išsiųsti žinutės: ji per ilga."
+
+#, c-format
+msgid "Unable to send message to %s."
+msgstr "Negalima išsiųsti žinutės vartotojui %s."
+
+msgid "The message is too large."
+msgstr "Žinutė per ilga."
+
+msgid "Unable to send message."
+msgstr "Negalima išsiųsti žinutės."
+
+msgid "Send Message"
+msgstr "Nusiųsti žinutę"
+
+msgid "_Send Message"
+msgstr "Nu_siųsti žinutę"
+
+#, c-format
+msgid "%s entered the room."
+msgstr "%s atėjo į kambarį."
+
+#, c-format
+msgid "%s [<I>%s</I>] entered the room."
+msgstr "%s [<I>%s</I>] atėjo į kambarį."
+
+#, c-format
+msgid "You are now known as %s"
+msgstr "Dabar esate žinomas kaip %s"
+
+#, c-format
+msgid "%s is now known as %s"
+msgstr "%s dabar yra žinomas kaip %s"
+
+#, c-format
+msgid "%s left the room."
+msgstr "%s paliko kambarį."
+
+#, c-format
+msgid "%s left the room (%s)."
+msgstr "%s paliko kambarį (%s)."
+
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Pakviesti į konferenciją"
+
+# Put our happy label in it.
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Prašom įvesti vartotojo, kurį norite pakviesti, vardą, kartu su neprivaloma "
+"pakvietimo žinute."
+
+#, c-format
+msgid "Failed to get connection: %s"
+msgstr "Nepavyko gauti jungties: %s"
+
+#, c-format
+msgid "Failed to get name: %s"
+msgstr "Nepavyko gauti vardo: %s"
+
+#, c-format
+msgid "Failed to get serv name: %s"
+msgstr "Nepavyko gauti serverio pavadinimo: %s"
+
+msgid "Purple's D-BUS server is not running for the reason listed below"
+msgstr "Purple D-BUS serveris nėra paleistas dėl žemiau pateiktos priežasties"
+
+msgid "No name"
+msgstr "Be vardo"
+
+msgid "Unable to create new resolver process\n"
+msgstr "Negalima sukurti naujo DNS adresų keitiklio proceso\n"
+
+msgid "Unable to send request to resolver process\n"
+msgstr "Nepavyko išsiųsti užklausos DNS adresų keitiklio procesui\n"
+
+#, c-format
+msgid ""
+"Error resolving %s:\n"
+"%s"
+msgstr ""
+"Klaida verčiant DNS adresą %s:\n"
+"%s"
+
+#, c-format
+msgid "Error resolving %s: %d"
+msgstr "Klaida keičiant DNS adresą %s: %d"
+
+#, c-format
+msgid ""
+"Error reading from resolver process:\n"
+"%s"
+msgstr ""
+"Skaitymo iš DNS adresų keitiklio proceso klaida:\n"
+"%s"
+
+#, c-format
+msgid "Resolver process exited without answering our request"
+msgstr "Adresų keitiklio procesas baigė darbą neatsakęs į mūsų užklausą"
+
+#, c-format
+msgid "Thread creation failure: %s"
+msgstr "Nepavyko sukurti gijos: %s"
+
+msgid "Unknown reason"
+msgstr "Nežinoma priežastis"
+
+#, c-format
+msgid ""
+"Error reading %s: \n"
+"%s.\n"
+msgstr ""
+"%s skaitymo klaida:\n"
+"%s.\n"
+
+#, c-format
+msgid ""
+"Error writing %s: \n"
+"%s.\n"
+msgstr ""
+"%s rašymo klaida:\n"
+"%s.\n"
+
+#, c-format
+msgid ""
+"Error accessing %s: \n"
+"%s.\n"
+msgstr ""
+"%s prieigos klaida:\n"
+"%s.\n"
+
+msgid "Directory is not writable."
+msgstr "Į katalogą negalima rašyti."
+
+msgid "Cannot send a file of 0 bytes."
+msgstr "Negalima siųsti 0 baitų dydžio failo."
+
+msgid "Cannot send a directory."
+msgstr "Negalima siųsti katalogo."
+
+#, c-format
+msgid "%s is not a regular file. Cowardly refusing to overwrite it.\n"
+msgstr "%s nėra paprastas failas, todėl nebuvo pakeistas.\n"
+
+#, c-format
+msgid "%s wants to send you %s (%s)"
+msgstr "%s nori Jums atsiųsti %s (%s)"
+
+#, c-format
+msgid "%s wants to send you a file"
+msgstr "%s nori Jums atsiųsti failą"
+
+#, c-format
+msgid "Accept file transfer request from %s?"
+msgstr "Ar priimti perduodamą failą iš %s?"
+
+#, c-format
+msgid ""
+"A file is available for download from:\n"
+"Remote host: %s\n"
+"Remote port: %d"
+msgstr ""
+"Failas yra prieinamas parsisiuntimui iš:\n"
+"Nutolęs mazgas: %s\n"
+"Nutolęs prievadas: %d"
+
+#, c-format
+msgid "%s is offering to send file %s"
+msgstr "%s siūlo atsiųsti failą %s"
+
+#, c-format
+msgid "%s is not a valid filename.\n"
+msgstr "%s nėra teisingas failo vardas.\n"
+
+#, c-format
+msgid "Offering to send %s to %s"
+msgstr "Siūloma nusiųsti %s bičiuliui %s"
+
+#, c-format
+msgid "Starting transfer of %s from %s"
+msgstr "Pradedamas %s gavimas iš %s"
+
+#, c-format
+msgid "Transfer of file %s complete"
+msgstr "Failo %s perdavimas baigtas"
+
+msgid "File transfer complete"
+msgstr "Failo perdavimas baigtas"
+
+#, c-format
+msgid "You canceled the transfer of %s"
+msgstr "Jūs nutraukėte %s perdavimą"
+
+msgid "File transfer cancelled"
+msgstr "Failo perdavimas nutrauktas"
+
+#, c-format
+msgid "%s canceled the transfer of %s"
+msgstr "%s nutraukė %s perdavimą"
+
+#, c-format
+msgid "%s canceled the file transfer"
+msgstr "%s nutraukė failo perdavimą"
+
+#, c-format
+msgid "File transfer to %s failed."
+msgstr "Įvyko failo perdavimo bičiuliui %s klaida."
+
+#, c-format
+msgid "File transfer from %s failed."
+msgstr "Įvyko failo gavimo iš %s klaida."
+
+msgid "Run the command in a terminal"
+msgstr "Vykdyti komandą terminale"
+
+msgid "The command used to handle \"aim\" URLs, if enabled."
+msgstr "Komanda „aim“ universaliųjų adresų apdorojimui, jei aktyvuota."
+
+msgid "The command used to handle \"gg\" URLs, if enabled."
+msgstr "Komanda „gg“ universaliųjų adresų apdorojimui, jei aktyvuota."
+
+msgid "The command used to handle \"icq\" URLs, if enabled."
+msgstr "Komanda „icq“ universaliųjų adresų apdorojimui, jei aktyvuota."
+
+msgid "The command used to handle \"irc\" URLs, if enabled."
+msgstr "Komanda „irc“ universaliųjų adresų apdorojimui, jei aktyvuota."
+
+msgid "The command used to handle \"msnim\" URLs, if enabled."
+msgstr "Komanda „msnim“ universaliųjų adresų apdorojimui, jei aktyvuota."
+
+msgid "The command used to handle \"sip\" URLs, if enabled."
+msgstr "Komanda „sip“ universaliųjų adresų apdorojimui, jei aktyvuota."
+
+msgid "The command used to handle \"xmpp\" URLs, if enabled."
+msgstr "Komanda „xmpp“ universaliųjų adresų apdorojimui, jei aktyvuota."
+
+msgid "The command used to handle \"ymsgr\" URLs, if enabled."
+msgstr "Komanda „ysmgr“ universaliųjų adresų apdorojimui, jei aktyvuota."
+
+msgid "The handler for \"aim\" URLs"
+msgstr "Komanda „aim“ universaliųjų adresų apdorojimui"
+
+msgid "The handler for \"gg\" URLs"
+msgstr "Komanda „aim“ universaliųjų adresų apdorojimui"
+
+msgid "The handler for \"icq\" URLs"
+msgstr "Komanda „icq“ universaliųjų adresų apdorojimui"
+
+msgid "The handler for \"irc\" URLs"
+msgstr "Komanda „irc“ universaliųjų adresų apdorojimui"
+
+msgid "The handler for \"msnim\" URLs"
+msgstr "Komanda „msnim“ universaliųjų adresų apdorojimui"
+
+msgid "The handler for \"sip\" URLs"
+msgstr "Komanda „sip“ universaliųjų adresų apdorojimui"
+
+msgid "The handler for \"xmpp\" URLs"
+msgstr "Komanda „xmpp“ universaliųjų adresų apdorojimui"
+
+msgid "The handler for \"ymsgr\" URLs"
+msgstr "Komanda „ysmgr“ universaliųjų adresų apdorojimui"
+
+msgid ""
+"True if the command specified in the \"command\" key should handle \"aim\" "
+"URLs."
+msgstr ""
+"„True“, jeigu komanda, nurodyta „command“ rakte, turi apdoroti „aim“ "
+"universaliuosius adresus."
+
+msgid ""
+"True if the command specified in the \"command\" key should handle \"gg\" "
+"URLs."
+msgstr ""
+"„True“, jeigu komanda, nurodyta „command“ rakte, turi apdoroti „gg“ "
+"universaliuosius adresus."
+
+msgid ""
+"True if the command specified in the \"command\" key should handle \"icq\" "
+"URLs."
+msgstr ""
+"„True“, jeigu komanda, nurodyta „command“ rakte, turi apdoroti „icq“ "
+"universaliuosius adresus."
+
+msgid ""
+"True if the command specified in the \"command\" key should handle \"irc\" "
+"URLs."
+msgstr ""
+"„True“, jeigu komanda, nurodyta „command“ rakte, turi apdoroti „irc“ "
+"universaliuosius adresus."
+
+msgid ""
+"True if the command specified in the \"command\" key should handle \"msnim\" "
+"URLs."
+msgstr ""
+"„True“, jeigu komanda, nurodyta „command“ rakte, turi apdoroti „msnim“ "
+"universaliuosius adresus."
+
+msgid ""
+"True if the command specified in the \"command\" key should handle \"sip\" "
+"URLs."
+msgstr ""
+"„True“, jeigu komanda, nurodyta „command“ rakte, turi apdoroti „sip“ "
+"universaliuosius adresus."
+
+msgid ""
+"True if the command specified in the \"command\" key should handle \"xmpp\" "
+"URLs."
+msgstr ""
+"„True“, jeigu komanda, nurodyta „command“ rakte, turi apdoroti „xmpp“ "
+"universaliuosius adresus."
+
+msgid ""
+"True if the command specified in the \"command\" key should handle \"ymsgr\" "
+"URLs."
+msgstr ""
+"„True“, jeigu komanda, nurodyta „command“ rakte, turi apdoroti „ysmgr“ "
+"universaliuosius adresus."
+
+msgid ""
+"True if the command used to handle this type of URL should be run in a "
+"terminal."
+msgstr ""
+"„True“, jeigu komanda, turinti apdoroti šio tipo universaliuosius adresus, "
+"turi būti leidžiama terminale."
+
+msgid "Whether the specified command should handle \"aim\" URLs"
+msgstr "Ar nurodytoji komanda turėtų apdoroti „aim“ universaliuosius adresus"
+
+msgid "Whether the specified command should handle \"gg\" URLs"
+msgstr "Ar nurodytoji komanda turėtų apdoroti „gg“ universaliuosius adresus"
+
+msgid "Whether the specified command should handle \"icq\" URLs"
+msgstr "Ar nurodytoji komanda turėtų apdoroti „icq“ universaliuosius adresus"
+
+msgid "Whether the specified command should handle \"irc\" URLs"
+msgstr "Ar nurodytoji komanda turėtų apdoroti „irc“ universaliuosius adresus"
+
+msgid "Whether the specified command should handle \"msnim\" URLs"
+msgstr "Ar nurodytoji komanda turėtų apdoroti „msnim“ universaliuosius adresus"
+
+msgid "Whether the specified command should handle \"sip\" URLs"
+msgstr "Ar nurodytoji komanda turėtų apdoroti „sip“ universaliuosius adresus"
+
+msgid "Whether the specified command should handle \"xmpp\" URLs"
+msgstr "Ar nurodytoji komanda turėtų apdoroti „xmpp“ universaliuosius adresus"
+
+msgid "Whether the specified command should handle \"ymsgr\" URLs"
+msgstr "Ar nurodytoji komanda turėtų apdoroti „ysmgr“ universaliuosius adresus"
+
+msgid "<b><font color=\"red\">The logger has no read function</font></b>"
+msgstr ""
+"<b><font color=\"red\">Žurnalų tvarkytuvė neturi skaitymo funkcijos</font></"
+"b>"
+
+msgid "HTML"
+msgstr "HTML"
+
+msgid "Plain text"
+msgstr "Grynasis tekstas"
+
+msgid "Old flat format"
+msgstr "Senasis plokščias formatas"
+
+msgid "Logging of this conversation failed."
+msgstr "Nepavyko šio pokalbio įrašyti į žurnalą."
+
+msgid "XML"
+msgstr "XML"
+
+#, c-format
+msgid ""
+"<font color=\"#16569E\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-"
+"REPLY&gt;:</b></font> %s<br/>\n"
+msgstr ""
+"<font color=\"#16569E\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTOMATINIS "
+"ATSAKYMAS&gt;:</b></font> %s<br/>\n"
+
+#, c-format
+msgid ""
+"<font color=\"#A82F2F\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-"
+"REPLY&gt;:</b></font> %s<br/>\n"
+msgstr ""
+"<font color=\"#A82F2F\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTOMATINIS "
+"ATSAKYMAS&gt;:</b></font> %s<br/>\n"
+
+msgid "<font color=\"red\"><b>Unable to find log path!</b></font>"
+msgstr "<font color=\"red\"><b>Negalima rasti žurnalų kelio!</b></font>"
+
+#, c-format
+msgid "<font color=\"red\"><b>Could not read file: %s</b></font>"
+msgstr "<font color=\"red\"><b>Negalima perskaityti failo: %s</b></font>"
+
+#, c-format
+msgid "(%s) %s <AUTO-REPLY>: %s\n"
+msgstr "(%s) %s <AUTOMATINIS-ATSAKYMAS>: %s\n"
+
+#, c-format
+msgid "You are using %s, but this plugin requires %s."
+msgstr "Jūs naudojatės %s, bet šiam papildiniui reikia %s."
+
+msgid "This plugin has not defined an ID."
+msgstr "Šis papildinys nenustatė ID"
+
+#, c-format
+msgid "Plugin magic mismatch %d (need %d)"
+msgstr "Neatitinka papildinio kontrolinis skaičius %d (turėtų būti %d)"
+
+#, c-format
+msgid "ABI version mismatch %d.%d.x (need %d.%d.x)"
+msgstr "ABI versija %d.%d.x neatitinka (turėtų būti %d.%d.x)"
+
+msgid ""
+"Plugin does not implement all required functions (list_icon, login and close)"
+msgstr ""
+"Papildinys nerealizuoja visų reikallingų funkcijų (list_icon, login ir close)"
+
+#, c-format
+msgid ""
+"The required plugin %s was not found. Please install this plugin and try "
+"again."
+msgstr ""
+"Reikalautas papildinys %s nerastas. Prašome įdiegti šį papildinį ir bandyti "
+"iš naujo."
+
+msgid "Unable to load the plugin"
+msgstr "Papildinio įkelti nepavyko"
+
+#, c-format
+msgid "The required plugin %s was unable to load."
+msgstr "Reikalauto papildinio %s nepavyko įkelti."
+
+msgid "Unable to load your plugin."
+msgstr "Nepavyko įkelti Jūsų nurodyto papildinio."
+
+#, c-format
+msgid "%s requires %s, but it failed to unload."
+msgstr "%s reikalauja %s, bet pastarojo papildinio iškelti nepavyko."
+
+msgid "Autoaccept"
+msgstr "Automatinis priėmimas"
+
+msgid "Auto-accept file transfer requests from selected users."
+msgstr "Automatiškai priima failų siuntimus iš pasirinktų vartotojų."
+
+#, c-format
+msgid "Autoaccepted file transfer of \"%s\" from \"%s\" completed."
+msgstr "Automatiškai priimtas failo „%s“ siuntimas iš „%s“ baigtas."
+
+msgid "Autoaccept complete"
+msgstr "Automatinis priėmimas baigtas"
+
+#, c-format
+msgid "When a file-transfer request arrives from %s"
+msgstr "Kai gaunamas failo perdavimo prašymas iš %s"
+
+msgid "Set Autoaccept Setting"
+msgstr "Nustatyti automatinį prėmimą"
+
+msgid "_Save"
+msgstr "_Įrašyti"
+
+msgid "_Cancel"
+msgstr "_Atsisakyti"
+
+msgid "Ask"
+msgstr "Paklausti"
+
+msgid "Auto Accept"
+msgstr "Automatiškai priimti"
+
+msgid "Auto Reject"
+msgstr "Automatiškai atmesti"
+
+msgid "Autoaccept File Transfers..."
+msgstr "Automatiškai priimti failų perdavimus..."
+
+#. XXX: Is there a better way than this? There really should be.
+msgid ""
+"Path to save the files in\n"
+"(Please provide the full path)"
+msgstr ""
+"Kelias, kuriame išsaugoti failus\n"
+"(Nurodykite pilną kelią)"
+
+msgid "Automatically reject from users not in buddy list"
+msgstr "Automatiškai atmesti iš vartotojų, nesančių bičiulių sąraše"
+
+msgid ""
+"Notify with a popup when an autoaccepted file transfer is complete\n"
+"(only when there's no conversation with the sender)"
+msgstr ""
+"Pranešti iššokančiu langu, kai baigtas automatiškai priimtas failo "
+"perdavimas\n"
+"(tik jei nevyko pokalbis su siuntėju)"
+
+msgid "Create a new directory for each user"
+msgstr "Sukurti po naują katalogą kiekvienam naudotojui"
+
+msgid "Notes"
+msgstr "Pastabos"
+
+msgid "Enter your notes below..."
+msgstr "Įveskite savo pastabas žemiau..."
+
+msgid "Edit Notes..."
+msgstr "Redaguoti pastabas..."
+
# "New Buddy Pounce"
-#. *< major version
-#. *< minor version
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-msgid "Buddy Notes"
-msgstr "Pastabos apie bičiulius"
-
-#. *< name
-#. *< version
-msgid "Store notes on particular buddies."
-msgstr "Saugo pastabas apie konkrečius bičiulius."
-
-#. *< summary
-msgid "Adds the option to store notes for buddies on your buddy list."
-msgstr ""
-"Siūlo galimybę saugoti pastabas apie bičiulius iš Jūsų bičiulių sąrašo."
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-msgid "Cipher Test"
-msgstr "Šifrų testas"
-
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "Tests the ciphers that ship with libpurple."
-msgstr "Testuoja su „libpurple“ pateikiamus šifrus."
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-msgid "DBus Example"
-msgstr "DBus papildinio pavyzdys"
-
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "DBus Plugin Example"
-msgstr "DBus papildinio pavyzdys"
-
+#. *< major version
+#. *< minor version
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Buddy Notes"
+msgstr "Pastabos apie bičiulius"
+
+#. *< name
+#. *< version
+msgid "Store notes on particular buddies."
+msgstr "Saugo pastabas apie konkrečius bičiulius."
+
+#. *< summary
+msgid "Adds the option to store notes for buddies on your buddy list."
+msgstr ""
+"Siūlo galimybę saugoti pastabas apie bičiulius iš Jūsų bičiulių sąrašo."
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Cipher Test"
+msgstr "Šifrų testas"
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Tests the ciphers that ship with libpurple."
+msgstr "Testuoja su „libpurple“ pateikiamus šifrus."
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "DBus Example"
+msgstr "DBus papildinio pavyzdys"
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "DBus Plugin Example"
+msgstr "DBus papildinio pavyzdys"
+
# *< api_version
# *< type
# *< ui_requirement
@@ -2339,15 +2390,15 @@ msgstr "DBus papildinio pavyzdys"
# *< dependencies
# *< priority
# *< id
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-msgid "File Control"
-msgstr "Valdymas failu"
-
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "File Control"
+msgstr "Valdymas failu"
+
# *< name
# *< version
# * summary
@@ -2356,365 +2407,391 @@ msgstr "Valdymas failu"
# *< version
# * summary
# * description
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "Allows control by entering commands in a file."
-msgstr "Leidžia valdyti programą faile surašytomis komandomis."
-
-msgid "Minutes"
-msgstr "Minutės"
-
-#. This is a cultural reference. Dy'er Mak'er is a song by Led Zeppelin.
-#. If that doesn't translate well into your language, drop the 's before translating.
-msgid "I'dle Mak'er"
-msgstr "Neveiklumo meistras"
-
-msgid "Set Account Idle Time"
-msgstr "Nustatyti abonento neveiklumo laiką"
-
-msgid "_Set"
-msgstr "_Nustatyti"
-
-msgid "None of your accounts are idle."
-msgstr "Nėra neveiklių paskyrų."
-
-msgid "Unset Account Idle Time"
-msgstr "Panaikinti abonento neveiklumo laiko nustatymą"
-
-msgid "_Unset"
-msgstr "_Panaikinti"
-
-msgid "Set Idle Time for All Accounts"
-msgstr "Nustatyti neveiklumo laiką visoms paskyroms"
-
-msgid "Unset Idle Time for All Idled Accounts"
-msgstr "Panaikinti neveiklumo laiko nustatymą visoms paskyroms"
-
-msgid "Allows you to hand-configure how long you've been idle"
-msgstr "Leidžia Jums rankiniu būdu nustatyti Jūsų neveiklumo laiką"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-msgid "IPC Test Client"
-msgstr "Testinis IPC klientas"
-
-#. *< name
-#. *< version
-#. * summary
-msgid "Test plugin IPC support, as a client."
-msgstr "Patikrina papildinių IPC palaikymą klientams."
-
-#. * description
-msgid ""
-"Test plugin IPC support, as a client. This locates the server plugin and "
-"calls the commands registered."
-msgstr ""
-"Patikrina papildinių IPC palaikymą klientams. Suranda IPC serverio "
-"papildinį ir iškviečia registruotas komandas."
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-msgid "IPC Test Server"
-msgstr "Testinis IPC serveris"
-
-#. *< name
-#. *< version
-#. * summary
-msgid "Test plugin IPC support, as a server."
-msgstr "Patikrina papildinių IPC palaikymą serveriams."
-
-#. * description
-msgid "Test plugin IPC support, as a server. This registers the IPC commands."
-msgstr ""
-"Patikrina papildinių IPC palaikymą serveriams. Priregistruoja IPC komandas."
-
-msgid "Join/Part Hiding Configuration"
-msgstr "Prisijungimų ir atsijungimų slėpimo parinktys"
-
-msgid "Minimum Room Size"
-msgstr "Mažiausias kambario dydis"
-
-msgid "User Inactivity Timeout (in minutes)"
-msgstr "Vartotojo neveiklumo laukimo laikas (minutėmis)"
-
-msgid "Apply hiding rules to buddies"
-msgstr "Pritaikyti bičiuliams slėpimo taisykles"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-msgid "Join/Part Hiding"
-msgstr "Prisijungimų ir atsijungimų slėpimas"
-
-#. *< name
-#. *< version
-#. * summary
-msgid "Hides extraneous join/part messages."
-msgstr "Slepia šalutines prisijungimų ir atsijungimų žinutes."
-
-#. * description
-msgid ""
-"This plugin hides join/part messages in large rooms, except for those users "
-"actively taking part in a conversation."
-msgstr ""
-"Šis papildinys paslepia prisijungimų ir atsijungimų žinutes dideliuose "
-"kambariuose, išskyrus tų naudotojų, kurie aktyviai dalyvauja pokalbyje."
-
-#. This is used in the place of a timezone abbreviation if the
-#. * offset is way off. The user should never really see it, but
-#. * it's here just in case. The parens are to make it clear it's
-#. * not a real timezone.
-msgid "(UTC)"
-msgstr "(UTC)"
-
-msgid "User is offline."
-msgstr "Vartotojas atsijungęs."
-
-msgid "Auto-response sent:"
-msgstr "Nusiųstas automatinis atsakymas:"
-
-#, c-format
-msgid "%s has signed off."
-msgstr "%s atsijungė."
-
-msgid "One or more messages may have been undeliverable."
-msgstr "Viena ar daugiau žinučių galėjo būti nepristatytos gavėjui."
-
-msgid "You were disconnected from the server."
-msgstr "Jūs buvote atjungtas nuo serverio."
-
-msgid ""
-"You are currently disconnected. Messages will not be received unless you are "
-"logged in."
-msgstr ""
-"Šiuo metu esate atsijungęs, todėl negausite žinučių, kol neprisijungsite."
-
-msgid "Message could not be sent because the maximum length was exceeded."
-msgstr "Žinutė neišsiųsta, nes viršytas jos didžiausias leistinas ilgis"
-
-msgid "Message could not be sent."
-msgstr "Žinutė nebuvo išsiųsta."
-
-#. The names of IM clients are marked for translation at the request of
-#. translators who wanted to transliterate them. Many translators
-#. choose to leave them alone. Choose what's best for your language.
-msgid "Adium"
-msgstr "Adium"
-
-#. The names of IM clients are marked for translation at the request of
-#. translators who wanted to transliterate them. Many translators
-#. choose to leave them alone. Choose what's best for your language.
-msgid "Fire"
-msgstr "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.
-msgid "Messenger Plus!"
-msgstr "Messenger Plus!"
-
-#. The names of IM clients are marked for translation at the request of
-#. translators who wanted to transliterate them. Many translators
-#. choose to leave them alone. Choose what's best for your language.
-msgid "QIP"
-msgstr "QIP"
-
-#. The names of IM clients are marked for translation at the request of
-#. translators who wanted to transliterate them. Many translators
-#. choose to leave them alone. Choose what's best for your language.
-msgid "MSN Messenger"
-msgstr "MSN Messenger"
-
-#. The names of IM clients are marked for translation at the request of
-#. translators who wanted to transliterate them. Many translators
-#. choose to leave them alone. Choose what's best for your language.
-msgid "Trillian"
-msgstr "Trillian"
-
-#. The names of IM clients are marked for translation at the request of
-#. translators who wanted to transliterate them. Many translators
-#. choose to leave them alone. Choose what's best for your language.
-msgid "aMSN"
-msgstr "aMSN"
-
-#. Add general preferences.
-msgid "General Log Reading Configuration"
-msgstr "Bendros žurnalų skaitymo parinktys"
-
-msgid "Fast size calculations"
-msgstr "Greitas dydžio apskaičiavimas"
-
-msgid "Use name heuristics"
-msgstr "Naudoti vardų euristiką"
-
-#. Add Log Directory preferences.
-msgid "Log Directory"
-msgstr "Žurnalų katalogas"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-msgid "Log Reader"
-msgstr "Žurnalų skaityklė"
-
-#. *< name
-#. *< version
-#. * summary
-msgid "Includes other IM clients' logs in the log viewer."
-msgstr "Žurnalų žiūryklėje parodo ir kitų pokalbių programų žurnalus."
-
-#. * description
-msgid ""
-"When viewing logs, this plugin will include logs from other IM clients. "
-"Currently, this includes Adium, MSN Messenger, and Trillian.\n"
-"\n"
-"WARNING: This plugin is still alpha code and may crash frequently. Use it "
-"at your own risk!"
-msgstr ""
-"Į žurnalų žiūryklę papildomai įtraukia žurnalus iš kitų pokalbių programų. "
-"Šiuo metu yra galimybė rodyti Adium, MSN Messenger ir Trillian programų "
-"žurnalus.<\n"
-"\n"
-"PERSPĖJIMAS: šis papildinys yra vis dar bandomasis ir gali dažnai lūžti. "
-"Naudokite jį savo rizika!"
-
-msgid "Mono Plugin Loader"
-msgstr "Mono papildinių paleidyklė"
-
-msgid "Loads .NET plugins with Mono."
-msgstr "Su Mono įkelia .NET papildinius."
-
-msgid "Add new line in IMs"
-msgstr "Pridėti naują eilutę asmeninėse žinutėse"
-
-msgid "Add new line in Chats"
-msgstr "Pridėti naują eilutę pokalbių kambariuose"
-
-#. *< magic
-#. *< major version
-#. *< minor version
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-msgid "New Line"
-msgstr "Nauja eilutė"
-
-#. *< name
-#. *< version
-msgid "Prepends a newline to displayed message."
-msgstr "Prieš rodomą žinutę įterpia naują eilutę"
-
-#. *< summary
-msgid ""
-"Prepends a newline to messages so that the rest of the message appears below "
-"the username in the conversation window."
-msgstr ""
-"Įterpia naują eilutę pokalbių lange tarp žinutės autoriaus ir žinutės teksto."
-
-msgid "Offline Message Emulation"
-msgstr "Atjungtų žinučių imitavimas"
-
-msgid "Save messages sent to an offline user as pounce."
-msgstr ""
-"Išsaugo žinutes, išsiųstas atsijungusiems bičiuliams, kaip reakcijas į juos."
-
-msgid ""
-"The rest of the messages will be saved as pounce. You can edit/delete the "
-"pounce from the `Buddy Pounce' dialog."
-msgstr ""
-"Likusios žinutės bus išsaugotos kaip reakcija į bičiulį. Galite keisti arba "
-"ištrinti šią reakciją dialoge „Reakcijos į bičiulius“."
-
-#, c-format
-msgid ""
-"\"%s\" is currently offline. Do you want to save the rest of the messages in "
-"a pounce and automatically send them when \"%s\" logs back in?"
-msgstr ""
-"„%s“ šiuo metu yra atsijungęs. Ar norite išsaugoti likusias žinutes kaip "
-"reakciją į bičiulį ir automatiškai jas išsiųsti, kai „%s“ vėl prisijungs?"
-
-msgid "Offline Message"
-msgstr "Atjungta žinutė"
-
-msgid "You can edit/delete the pounce from the `Buddy Pounces' dialog"
-msgstr "Galite keisti arba ištrinti reakciją dialoge „Reakcijos į bičiulius“."
-
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Allows control by entering commands in a file."
+msgstr "Leidžia valdyti programą faile surašytomis komandomis."
+
+msgid "Minutes"
+msgstr "Minutės"
+
+#. This is a cultural reference. Dy'er Mak'er is a song by Led Zeppelin.
+#. If that doesn't translate well into your language, drop the 's before translating.
+msgid "I'dle Mak'er"
+msgstr "Neveiklumo meistras"
+
+msgid "Set Account Idle Time"
+msgstr "Nustatyti abonento neveiklumo laiką"
+
+msgid "_Set"
+msgstr "_Nustatyti"
+
+msgid "None of your accounts are idle."
+msgstr "Nėra neveiklių paskyrų."
+
+msgid "Unset Account Idle Time"
+msgstr "Panaikinti abonento neveiklumo laiko nustatymą"
+
+msgid "_Unset"
+msgstr "_Panaikinti"
+
+msgid "Set Idle Time for All Accounts"
+msgstr "Nustatyti neveiklumo laiką visoms paskyroms"
+
+msgid "Unset Idle Time for All Idled Accounts"
+msgstr "Panaikinti neveiklumo laiko nustatymą visoms paskyroms"
+
+msgid "Allows you to hand-configure how long you've been idle"
+msgstr "Leidžia Jums rankiniu būdu nustatyti Jūsų neveiklumo laiką"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "IPC Test Client"
+msgstr "Testinis IPC klientas"
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Test plugin IPC support, as a client."
+msgstr "Patikrina papildinių IPC palaikymą klientams."
+
+#. * description
+msgid ""
+"Test plugin IPC support, as a client. This locates the server plugin and "
+"calls the commands registered."
+msgstr ""
+"Patikrina papildinių IPC palaikymą klientams. Suranda IPC serverio "
+"papildinį ir iškviečia registruotas komandas."
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "IPC Test Server"
+msgstr "Testinis IPC serveris"
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Test plugin IPC support, as a server."
+msgstr "Patikrina papildinių IPC palaikymą serveriams."
+
+#. * description
+msgid "Test plugin IPC support, as a server. This registers the IPC commands."
+msgstr ""
+"Patikrina papildinių IPC palaikymą serveriams. Priregistruoja IPC komandas."
+
+msgid "Join/Part Hiding Configuration"
+msgstr "Prisijungimų ir atsijungimų slėpimo parinktys"
+
+msgid "Minimum Room Size"
+msgstr "Mažiausias kambario dydis"
+
+msgid "User Inactivity Timeout (in minutes)"
+msgstr "Vartotojo neveiklumo laukimo laikas (minutėmis)"
+
+msgid "Apply hiding rules to buddies"
+msgstr "Pritaikyti bičiuliams slėpimo taisykles"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Join/Part Hiding"
+msgstr "Prisijungimų ir atsijungimų slėpimas"
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Hides extraneous join/part messages."
+msgstr "Slepia šalutines prisijungimų ir atsijungimų žinutes."
+
+#. * description
+msgid ""
+"This plugin hides join/part messages in large rooms, except for those users "
+"actively taking part in a conversation."
+msgstr ""
+"Šis papildinys paslepia prisijungimų ir atsijungimų žinutes dideliuose "
+"kambariuose, išskyrus tų naudotojų, kurie aktyviai dalyvauja pokalbyje."
+
+#. This is used in the place of a timezone abbreviation if the
+#. * offset is way off. The user should never really see it, but
+#. * it's here just in case. The parens are to make it clear it's
+#. * not a real timezone.
+msgid "(UTC)"
+msgstr "(UTC)"
+
+msgid "User is offline."
+msgstr "Vartotojas atsijungęs."
+
+msgid "Auto-response sent:"
+msgstr "Nusiųstas automatinis atsakymas:"
+
+#, c-format
+msgid "%s has signed off."
+msgstr "%s atsijungė."
+
+msgid "One or more messages may have been undeliverable."
+msgstr "Viena ar daugiau žinučių galėjo būti nepristatytos gavėjui."
+
+msgid "You were disconnected from the server."
+msgstr "Jūs buvote atjungtas nuo serverio."
+
+msgid ""
+"You are currently disconnected. Messages will not be received unless you are "
+"logged in."
+msgstr ""
+"Šiuo metu esate atsijungęs, todėl negausite žinučių, kol neprisijungsite."
+
+msgid "Message could not be sent because the maximum length was exceeded."
+msgstr "Žinutė neišsiųsta, nes viršytas jos didžiausias leistinas ilgis"
+
+msgid "Message could not be sent."
+msgstr "Žinutė nebuvo išsiųsta."
+
+#. The names of IM clients are marked for translation at the request of
+#. translators who wanted to transliterate them. Many translators
+#. choose to leave them alone. Choose what's best for your language.
+msgid "Adium"
+msgstr "Adium"
+
+#. The names of IM clients are marked for translation at the request of
+#. translators who wanted to transliterate them. Many translators
+#. choose to leave them alone. Choose what's best for your language.
+msgid "Fire"
+msgstr "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.
+msgid "Messenger Plus!"
+msgstr "Messenger Plus!"
+
+#. The names of IM clients are marked for translation at the request of
+#. translators who wanted to transliterate them. Many translators
+#. choose to leave them alone. Choose what's best for your language.
+msgid "QIP"
+msgstr "QIP"
+
+#. The names of IM clients are marked for translation at the request of
+#. translators who wanted to transliterate them. Many translators
+#. choose to leave them alone. Choose what's best for your language.
+msgid "MSN Messenger"
+msgstr "MSN Messenger"
+
+#. The names of IM clients are marked for translation at the request of
+#. translators who wanted to transliterate them. Many translators
+#. choose to leave them alone. Choose what's best for your language.
+msgid "Trillian"
+msgstr "Trillian"
+
+#. The names of IM clients are marked for translation at the request of
+#. translators who wanted to transliterate them. Many translators
+#. choose to leave them alone. Choose what's best for your language.
+msgid "aMSN"
+msgstr "aMSN"
+
+#. Add general preferences.
+msgid "General Log Reading Configuration"
+msgstr "Bendros žurnalų skaitymo parinktys"
+
+msgid "Fast size calculations"
+msgstr "Greitas dydžio apskaičiavimas"
+
+msgid "Use name heuristics"
+msgstr "Naudoti vardų euristiką"
+
+#. Add Log Directory preferences.
+msgid "Log Directory"
+msgstr "Žurnalų katalogas"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Log Reader"
+msgstr "Žurnalų skaityklė"
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Includes other IM clients' logs in the log viewer."
+msgstr "Žurnalų žiūryklėje parodo ir kitų pokalbių programų žurnalus."
+
+#. * description
+msgid ""
+"When viewing logs, this plugin will include logs from other IM clients. "
+"Currently, this includes Adium, MSN Messenger, and Trillian.\n"
+"\n"
+"WARNING: This plugin is still alpha code and may crash frequently. Use it "
+"at your own risk!"
+msgstr ""
+"Į žurnalų žiūryklę papildomai įtraukia žurnalus iš kitų pokalbių programų. "
+"Šiuo metu yra galimybė rodyti Adium, MSN Messenger ir Trillian programų "
+"žurnalus.<\n"
+"\n"
+"PERSPĖJIMAS: šis papildinys yra vis dar bandomasis ir gali dažnai lūžti. "
+"Naudokite jį savo rizika!"
+
+msgid "Mono Plugin Loader"
+msgstr "Mono papildinių paleidyklė"
+
+msgid "Loads .NET plugins with Mono."
+msgstr "Su Mono įkelia .NET papildinius."
+
+msgid "Add new line in IMs"
+msgstr "Pridėti naują eilutę asmeninėse žinutėse"
+
+msgid "Add new line in Chats"
+msgstr "Pridėti naują eilutę pokalbių kambariuose"
+
+#. *< magic
+#. *< major version
+#. *< minor version
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "New Line"
+msgstr "Nauja eilutė"
+
+#. *< name
+#. *< version
+msgid "Prepends a newline to displayed message."
+msgstr "Prieš rodomą žinutę įterpia naują eilutę"
+
+#. *< summary
+msgid ""
+"Prepends a newline to messages so that the rest of the message appears below "
+"the username in the conversation window."
+msgstr ""
+"Įterpia naują eilutę pokalbių lange tarp žinutės autoriaus ir žinutės teksto."
+
+msgid "Offline Message Emulation"
+msgstr "Atjungtų žinučių imitavimas"
+
+msgid "Save messages sent to an offline user as pounce."
+msgstr ""
+"Išsaugo žinutes, išsiųstas atsijungusiems bičiuliams, kaip reakcijas į juos."
+
+msgid ""
+"The rest of the messages will be saved as pounce. You can edit/delete the "
+"pounce from the `Buddy Pounce' dialog."
+msgstr ""
+"Likusios žinutės bus išsaugotos kaip reakcija į bičiulį. Galite keisti arba "
+"ištrinti šią reakciją dialoge „Reakcijos į bičiulius“."
+
+#, c-format
+msgid ""
+"\"%s\" is currently offline. Do you want to save the rest of the messages in "
+"a pounce and automatically send them when \"%s\" logs back in?"
+msgstr ""
+"„%s“ šiuo metu yra atsijungęs. Ar norite išsaugoti likusias žinutes kaip "
+"reakciją į bičiulį ir automatiškai jas išsiųsti, kai „%s“ vėl prisijungs?"
+
+msgid "Offline Message"
+msgstr "Atjungta žinutė"
+
+msgid "You can edit/delete the pounce from the `Buddy Pounces' dialog"
+msgstr "Galite keisti arba ištrinti reakciją dialoge „Reakcijos į bičiulius“."
+
# *
# * A wrapper for Pidgin_request_action() that uses Yes and No buttons.
-msgid "Yes"
-msgstr "Taip"
-
-msgid "No"
-msgstr "Ne"
-
-msgid "Save offline messages in pounce"
-msgstr "Išsaugoti atjungtas žinutes reakcijoje"
-
-msgid "Do not ask. Always save in pounce."
-msgstr "Neklausti. Visada išsaugoti reakcijoje."
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-msgid "Perl Plugin Loader"
-msgstr "Perl papildinių paleidyklė"
-
-#. *< name
-#. *< version
-#. *< summary
-msgid "Provides support for loading perl plugins."
-msgstr "Suteikia galimybę įkelti Perl papildinius."
-
-msgid "Psychic Mode"
-msgstr "Aiškiaregystė"
-
-msgid "Psychic mode for incoming conversation"
-msgstr "Išankstinis įeinančių žinučių numatymas"
-
-msgid ""
-"Causes conversation windows to appear as other users begin to message you. "
-"This works for AIM, ICQ, XMPP, Sametime, and Yahoo!"
-msgstr ""
-"Atidaro pokalbių langą iškart, kai kitas vartotojas pradeda rašyti Jums "
-"žinutę. Ši funkcija veikia AIM, ICQ, XMPP, Sametime ir Yahoo! protokoluose."
-
-msgid "You feel a disturbance in the force..."
-msgstr "Jaučiate sutrikdymą jėgoje..."
-
-msgid "Only enable for users on the buddy list"
-msgstr "Įjungti tik vartotojams iš bičiulių sąrašo"
-
-msgid "Disable when away"
-msgstr "Išjungti, kai aš pasitraukęs"
-
-msgid "Display notification message in conversations"
-msgstr "Rodyti informacinį pranešimą pokalbyje"
-
-msgid "Raise psychic conversations"
-msgstr "Pakelti nujaučiamų pokalbių langus"
-
+msgid "Yes"
+msgstr "Taip"
+
+msgid "No"
+msgstr "Ne"
+
+msgid "Save offline messages in pounce"
+msgstr "Išsaugoti atjungtas žinutes reakcijoje"
+
+msgid "Do not ask. Always save in pounce."
+msgstr "Neklausti. Visada išsaugoti reakcijoje."
+
+#, fuzzy
+msgid "One Time Password"
+msgstr "Įveskite slaptažodį"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Perl Plugin Loader"
+msgstr "Perl papildinių paleidyklė"
+
+#. *< name
+#. *< version
+#. *< summary
+msgid "Provides support for loading perl plugins."
+msgstr "Suteikia galimybę įkelti Perl papildinius."
+
+msgid "Psychic Mode"
+msgstr "Aiškiaregystė"
+
+msgid "Psychic mode for incoming conversation"
+msgstr "Išankstinis įeinančių žinučių numatymas"
+
+msgid ""
+"Causes conversation windows to appear as other users begin to message you. "
+"This works for AIM, ICQ, XMPP, Sametime, and Yahoo!"
+msgstr ""
+"Atidaro pokalbių langą iškart, kai kitas vartotojas pradeda rašyti Jums "
+"žinutę. Ši funkcija veikia AIM, ICQ, XMPP, Sametime ir Yahoo! protokoluose."
+
+msgid "You feel a disturbance in the force..."
+msgstr "Jaučiate sutrikdymą jėgoje..."
+
+msgid "Only enable for users on the buddy list"
+msgstr "Įjungti tik vartotojams iš bičiulių sąrašo"
+
+msgid "Disable when away"
+msgstr "Išjungti, kai aš pasitraukęs"
+
+msgid "Display notification message in conversations"
+msgstr "Rodyti informacinį pranešimą pokalbyje"
+
+msgid "Raise psychic conversations"
+msgstr "Pakelti nujaučiamų pokalbių langus"
+
# *< api_version
# *< type
# *< ui_requirement
@@ -2722,26 +2799,26 @@ msgstr "Pakelti nujaučiamų pokalbių langus"
# *< dependencies
# *< priority
# *< id
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-msgid "Signals Test"
-msgstr "Signalų testas"
-
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Signals Test"
+msgstr "Signalų testas"
+
# *< name
# *< version
# * summary
# * description
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "Test to see that all signals are working properly."
-msgstr "Testas, skirtas nustatyti, ar visi signalai veikia teisingai."
-
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Test to see that all signals are working properly."
+msgstr "Testas, skirtas nustatyti, ar visi signalai veikia teisingai."
+
# *< api_version
# *< type
# *< ui_requirement
@@ -2749,114 +2826,114 @@ msgstr "Testas, skirtas nustatyti, ar visi signalai veikia teisingai."
# *< dependencies
# *< priority
# *< id
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-msgid "Simple Plugin"
-msgstr "Paprastas papildinys"
-
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Simple Plugin"
+msgstr "Paprastas papildinys"
+
# *< name
# *< version
# * summary
# * description
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "Tests to see that most things are working."
-msgstr "Patikrina, ar dauguma dalykų veikia"
-
-#. Scheme name
-msgid "X.509 Certificates"
-msgstr "X.509 liudijimai"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-msgid "GNUTLS"
-msgstr "GNUTLS biblioteka"
-
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Tests to see that most things are working."
+msgstr "Patikrina, ar dauguma dalykų veikia"
+
+#. Scheme name
+msgid "X.509 Certificates"
+msgstr "X.509 liudijimai"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "GNUTLS"
+msgstr "GNUTLS biblioteka"
+
# *< name
# *< version
# * summary
# * description
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "Provides SSL support through GNUTLS."
-msgstr "GNUTLS pagalba suteikia SSL palaikymą."
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-msgid "NSS"
-msgstr "NSS"
-
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "Provides SSL support through Mozilla NSS."
-msgstr "Mozilla NSS pagalba suteikia SSL palaikymą."
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-msgid "SSL"
-msgstr "SSL protokolo palaikymas"
-
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "Provides a wrapper around SSL support libraries."
-msgstr "Suteikia apvalkalą SSL palaikymo bibliotekoms"
-
-#, c-format
-msgid "%s is no longer away."
-msgstr "%s sugrįžo."
-
-#, c-format
-msgid "%s has gone away."
-msgstr "%s pasitraukė."
-
-#, c-format
-msgid "%s has become idle."
-msgstr "%s tapo neveiklus."
-
-#, c-format
-msgid "%s is no longer idle."
-msgstr "%s tapo veiklus."
-
-#, c-format
-msgid "%s has signed on."
-msgstr "%s prisijungė."
-
-msgid "Notify When"
-msgstr "Informuoti, kai"
-
-msgid "Buddy Goes _Away"
-msgstr "bičiulis išein_a"
-
-msgid "Buddy Goes _Idle"
-msgstr "b_ičiulis tampa neveiklus"
-
-msgid "Buddy _Signs On/Off"
-msgstr "Bičiulis pradeda arba baigia seansą"
-
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Provides SSL support through GNUTLS."
+msgstr "GNUTLS pagalba suteikia SSL palaikymą."
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "NSS"
+msgstr "NSS"
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Provides SSL support through Mozilla NSS."
+msgstr "Mozilla NSS pagalba suteikia SSL palaikymą."
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "SSL"
+msgstr "SSL protokolo palaikymas"
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Provides a wrapper around SSL support libraries."
+msgstr "Suteikia apvalkalą SSL palaikymo bibliotekoms"
+
+#, c-format
+msgid "%s is no longer away."
+msgstr "%s sugrįžo."
+
+#, c-format
+msgid "%s has gone away."
+msgstr "%s pasitraukė."
+
+#, c-format
+msgid "%s has become idle."
+msgstr "%s tapo neveiklus."
+
+#, c-format
+msgid "%s is no longer idle."
+msgstr "%s tapo veiklus."
+
+#, c-format
+msgid "%s has signed on."
+msgstr "%s prisijungė."
+
+msgid "Notify When"
+msgstr "Informuoti, kai"
+
+msgid "Buddy Goes _Away"
+msgstr "bičiulis išein_a"
+
+msgid "Buddy Goes _Idle"
+msgstr "b_ičiulis tampa neveiklus"
+
+msgid "Buddy _Signs On/Off"
+msgstr "Bičiulis pradeda arba baigia seansą"
+
# *< api_version
# *< type
# *< ui_requirement
@@ -2864,424 +2941,425 @@ msgstr "Bičiulis pradeda arba baigia seansą"
# *< dependencies
# *< priority
# *< id
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-msgid "Buddy State Notification"
-msgstr "Pranešimai apie bičiulių būsenas"
-
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Buddy State Notification"
+msgstr "Pranešimai apie bičiulių būsenas"
+
# *< name
# *< version
# * summary
# * description
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid ""
-"Notifies in a conversation window when a buddy goes or returns from away or "
-"idle."
-msgstr ""
-"Pokalbių lange praneša apie bičiulio pasitraukimą, grįžimą, tapimą veikliu "
-"ar neveikliu."
-
-msgid "Tcl Plugin Loader"
-msgstr "Tcl papildinių paleidyklė"
-
-msgid "Provides support for loading Tcl plugins"
-msgstr "Suteikia galimybę įkelti Tcl papildinius"
-
-msgid ""
-"Unable to detect ActiveTCL installation. If you wish to use TCL plugins, "
-"install ActiveTCL from http://www.activestate.com\n"
-msgstr ""
-"Nepavyko rasti įdiegto „ActiveTCL“. Jei norite naudoti TCL papildinius, "
-"įdiekite „ActiveTCL“ iš http://www.activestate.com\n"
-
-msgid ""
-"The Apple Bonjour For Windows toolkit wasn't found, see the FAQ at: http://d."
-"pidgin.im/BonjourWindows for more information."
-msgstr ""
-"Apple Bonjour Windows priemonių rinkinys nerastas. Adresu http://d.pidgin."
-"im/BonjourWindow rasite daugiau informacijos."
-
-msgid "Unable to listen for incoming IM connections\n"
-msgstr ""
-"Nepavyko sukurti klausymo prievado įeinančioms greitųjų žinučių jungtims\n"
-
-msgid ""
-"Unable to establish connection with the local mDNS server. Is it running?"
-msgstr "Nepavyko prisijungti su vietiniu mDNS serveriu. Ar jis paleistas?"
-
-msgid "First name"
-msgstr "Tikrasis vardas"
-
-msgid "Last name"
-msgstr "Pavardė"
-
-msgid "Email"
-msgstr "El. paštas"
-
-msgid "AIM Account"
-msgstr "AIM paskyra"
-
-msgid "XMPP Account"
-msgstr "XMPP paskyra"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "Bonjour Protocol Plugin"
-msgstr "Bonjour protokolo papildinys"
-
-msgid "Purple Person"
-msgstr "(nežinomas vardas)"
-
-#. Creating the options for the protocol
-msgid "Local Port"
-msgstr "Vietinis prievadas"
-
-msgid "Bonjour"
-msgstr "Bonjour"
-
-#, c-format
-msgid "%s has closed the conversation."
-msgstr "%s uždarė pokalbio langą."
-
-msgid "Unable to send the message, the conversation couldn't be started."
-msgstr "Negalima išsiųsti žinutės ir pradėti pokalbio."
-
-msgid "Cannot open socket"
-msgstr "Nepavyko atidaryti prievado"
-
-msgid "Could not bind socket to port"
-msgstr "Nepavyko susieti jungties su prievadu"
-
-msgid "Could not listen on socket"
-msgstr "Nepavyko nustatyti jungties klausymuisi"
-
-msgid "Error communicating with local mDNSResponder."
-msgstr "Komunikacijos su vietiniu mDNSResponder klaida"
-
-msgid "Invalid proxy settings"
-msgstr "Neteisingi tarpininko nustatymai"
-
-msgid ""
-"Either the host name or port number specified for your given proxy type is "
-"invalid."
-msgstr ""
-"Jūsų pasirinktam tarpininko tipui neteisingai nurodytas mazgo vardas arba "
-"prievado numeris."
-
-msgid "Token Error"
-msgstr "Žymės klaida"
-
-msgid "Unable to fetch the token.\n"
-msgstr "Nepavyko gauti žymės.\n"
-
-msgid "Save Buddylist..."
-msgstr "Išsaugoti bičiulių sąrašą..."
-
-msgid "Your buddylist is empty, nothing was written to the file."
-msgstr "Jūsų bičiulių sąrašas tuščias, todėl į failą nieko nebuvo įrašyta."
-
-msgid "Buddylist saved successfully!"
-msgstr "Bičiulių sąrašas sėkmingai išsaugotas!"
-
-#, c-format
-msgid "Couldn't write buddy list for %s to %s"
-msgstr "Paskyros %s bičiulių sąrašo nepavyko įrašyti į %s"
-
-msgid "Couldn't load buddylist"
-msgstr "Nepavyko įkelti bičiulių sąrašo"
-
-msgid "Load Buddylist..."
-msgstr "Įkelti bičiulių sąrašą..."
-
-msgid "Buddylist loaded successfully!"
-msgstr "Bičiulių sąrašas sėkmingai įkeltas!"
-
-msgid "Save buddylist..."
-msgstr "Išsaugoti bičiulių sąrašą..."
-
-msgid "Load buddylist from file..."
-msgstr "Įkelti bičiulių sąrašą iš failo..."
-
-msgid "Fill in the registration fields."
-msgstr "Užpildykite registracijos formos laukus."
-
-msgid "Passwords do not match."
-msgstr "Slaptažodžiai nesutampa."
-
-msgid "Unable to register new account. Error occurred.\n"
-msgstr "Nepavyko registruoti naujos paskyros, nes įvyko klaida.\n"
-
-msgid "New Gadu-Gadu Account Registered"
-msgstr "Užregistruotas naujas Gadu-Gadu abonentas"
-
-msgid "Registration completed successfully!"
-msgstr "Registracija sėkmingai užbaigta!"
-
-msgid "Password"
-msgstr "Slaptažodis"
-
-msgid "Password (retype)"
-msgstr "Pakartotas slaptažodis"
-
-msgid "Enter current token"
-msgstr "Įveskite dabartinę žymę"
-
-msgid "Current token"
-msgstr "Dabartinė žymė"
-
-msgid "Register New Gadu-Gadu Account"
-msgstr "Registruoti naują Gadu-Gadu abonentą"
-
-msgid "Please, fill in the following fields"
-msgstr "Prašome užpildyti tolimesnius laukus"
-
-msgid "City"
-msgstr "Miestas"
-
-msgid "Year of birth"
-msgstr "Gimimo metai"
-
-msgid "Gender"
-msgstr "Lytis"
-
-msgid "Male or female"
-msgstr "Vyras ar moteris"
-
-msgid "Male"
-msgstr "Vyras"
-
-msgid "Female"
-msgstr "Moteris"
-
-msgid "Only online"
-msgstr "Šiuo metu prisijungęs"
-
-msgid "Find buddies"
-msgstr "Ieškoti bičiulių"
-
-msgid "Please, enter your search criteria below"
-msgstr "Prašome žemiau įvesti, pagal ką ieškosite"
-
-msgid "Fill in the fields."
-msgstr "Užpildykite laukus."
-
-msgid "Your current password is different from the one that you specified."
-msgstr "Jūsų dabartinis slaptažodis skiriasi nuo nurodytojo."
-
-msgid "Unable to change password. Error occurred.\n"
-msgstr "Slaptažodis nepakeistas, įvyko klaida.\n"
-
-msgid "Change password for the Gadu-Gadu account"
-msgstr "Pakeisti Gadu-Gadu paskyros slaptažodį"
-
-msgid "Password was changed successfully!"
-msgstr "Slaptažodis buvo sėkmingai pakeistas!"
-
-msgid "Current password"
-msgstr "Dabartinis slaptažodis"
-
-msgid "Please, enter your current password and your new password for UIN: "
-msgstr "Prašome įvesti Jūsų dabartinį slaptažodį ir Jūsų naują UIN slaptažodį:"
-
-msgid "Change Gadu-Gadu Password"
-msgstr "Pakeisti Gadu-Gadu slaptažodį"
-
-#, c-format
-msgid "Select a chat for buddy: %s"
-msgstr "Pasirinkite pokalbių kambarį bičiuliui %s"
-
-msgid "Add to chat..."
-msgstr "Įtraukti į pokalbių kambarį..."
-
-msgid "Available"
-msgstr "Pasiekiamas"
-
-#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
-#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
-#. Away stuff
-msgid "Away"
-msgstr "Pasitraukęs"
-
-msgid "UIN"
-msgstr "UIN"
-
-msgid "First Name"
-msgstr "Vardas"
-
-msgid "Birth Year"
-msgstr "Gimimo metai"
-
-msgid "Unable to display the search results."
-msgstr "Negalima parodyti paieškos rezultatų."
-
-msgid "Gadu-Gadu Public Directory"
-msgstr "Viešasis Gadu-Gadu katalogas"
-
-msgid "Search results"
-msgstr "Paieškos rezultatai"
-
-msgid "No matching users found"
-msgstr "Ieškotų vartotojų nerasta"
-
-msgid "There are no users matching your search criteria."
-msgstr "Vartotojų, tenkinančių paieškos kriterijus, nėra."
-
-msgid "Unable to read socket"
-msgstr "Nepavyko skaityti iš jungties"
-
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid ""
+"Notifies in a conversation window when a buddy goes or returns from away or "
+"idle."
+msgstr ""
+"Pokalbių lange praneša apie bičiulio pasitraukimą, grįžimą, tapimą veikliu "
+"ar neveikliu."
+
+msgid "Tcl Plugin Loader"
+msgstr "Tcl papildinių paleidyklė"
+
+msgid "Provides support for loading Tcl plugins"
+msgstr "Suteikia galimybę įkelti Tcl papildinius"
+
+msgid ""
+"Unable to detect ActiveTCL installation. If you wish to use TCL plugins, "
+"install ActiveTCL from http://www.activestate.com\n"
+msgstr ""
+"Nepavyko rasti įdiegto „ActiveTCL“. Jei norite naudoti TCL papildinius, "
+"įdiekite „ActiveTCL“ iš http://www.activestate.com\n"
+
+msgid ""
+"The Apple Bonjour For Windows toolkit wasn't found, see the FAQ at: http://d."
+"pidgin.im/BonjourWindows for more information."
+msgstr ""
+"Apple Bonjour Windows priemonių rinkinys nerastas. Adresu http://d.pidgin."
+"im/BonjourWindow rasite daugiau informacijos."
+
+msgid "Unable to listen for incoming IM connections\n"
+msgstr ""
+"Nepavyko sukurti klausymo prievado įeinančioms greitųjų žinučių jungtims\n"
+
+msgid ""
+"Unable to establish connection with the local mDNS server. Is it running?"
+msgstr "Nepavyko prisijungti su vietiniu mDNS serveriu. Ar jis paleistas?"
+
+msgid "First name"
+msgstr "Tikrasis vardas"
+
+msgid "Last name"
+msgstr "Pavardė"
+
+msgid "Email"
+msgstr "El. paštas"
+
+msgid "AIM Account"
+msgstr "AIM paskyra"
+
+msgid "XMPP Account"
+msgstr "XMPP paskyra"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Bonjour Protocol Plugin"
+msgstr "Bonjour protokolo papildinys"
+
+msgid "Purple Person"
+msgstr "(nežinomas vardas)"
+
+#. Creating the options for the protocol
+msgid "Local Port"
+msgstr "Vietinis prievadas"
+
+msgid "Bonjour"
+msgstr "Bonjour"
+
+#, c-format
+msgid "%s has closed the conversation."
+msgstr "%s uždarė pokalbio langą."
+
+msgid "Unable to send the message, the conversation couldn't be started."
+msgstr "Negalima išsiųsti žinutės ir pradėti pokalbio."
+
+msgid "Cannot open socket"
+msgstr "Nepavyko atidaryti prievado"
+
+msgid "Could not bind socket to port"
+msgstr "Nepavyko susieti jungties su prievadu"
+
+msgid "Could not listen on socket"
+msgstr "Nepavyko nustatyti jungties klausymuisi"
+
+msgid "Error communicating with local mDNSResponder."
+msgstr "Komunikacijos su vietiniu mDNSResponder klaida"
+
+msgid "Invalid proxy settings"
+msgstr "Neteisingi tarpininko nustatymai"
+
+msgid ""
+"Either the host name or port number specified for your given proxy type is "
+"invalid."
+msgstr ""
+"Jūsų pasirinktam tarpininko tipui neteisingai nurodytas mazgo vardas arba "
+"prievado numeris."
+
+msgid "Token Error"
+msgstr "Žymės klaida"
+
+msgid "Unable to fetch the token.\n"
+msgstr "Nepavyko gauti žymės.\n"
+
+msgid "Save Buddylist..."
+msgstr "Išsaugoti bičiulių sąrašą..."
+
+msgid "Your buddylist is empty, nothing was written to the file."
+msgstr "Jūsų bičiulių sąrašas tuščias, todėl į failą nieko nebuvo įrašyta."
+
+msgid "Buddylist saved successfully!"
+msgstr "Bičiulių sąrašas sėkmingai išsaugotas!"
+
+#, c-format
+msgid "Couldn't write buddy list for %s to %s"
+msgstr "Paskyros %s bičiulių sąrašo nepavyko įrašyti į %s"
+
+msgid "Couldn't load buddylist"
+msgstr "Nepavyko įkelti bičiulių sąrašo"
+
+msgid "Load Buddylist..."
+msgstr "Įkelti bičiulių sąrašą..."
+
+msgid "Buddylist loaded successfully!"
+msgstr "Bičiulių sąrašas sėkmingai įkeltas!"
+
+msgid "Save buddylist..."
+msgstr "Išsaugoti bičiulių sąrašą..."
+
+msgid "Load buddylist from file..."
+msgstr "Įkelti bičiulių sąrašą iš failo..."
+
+msgid "Fill in the registration fields."
+msgstr "Užpildykite registracijos formos laukus."
+
+msgid "Passwords do not match."
+msgstr "Slaptažodžiai nesutampa."
+
+msgid "Unable to register new account. Error occurred.\n"
+msgstr "Nepavyko registruoti naujos paskyros, nes įvyko klaida.\n"
+
+msgid "New Gadu-Gadu Account Registered"
+msgstr "Užregistruotas naujas Gadu-Gadu abonentas"
+
+msgid "Registration completed successfully!"
+msgstr "Registracija sėkmingai užbaigta!"
+
+msgid "Password"
+msgstr "Slaptažodis"
+
+msgid "Password (retype)"
+msgstr "Pakartotas slaptažodis"
+
+msgid "Enter current token"
+msgstr "Įveskite dabartinę žymę"
+
+msgid "Current token"
+msgstr "Dabartinė žymė"
+
+msgid "Register New Gadu-Gadu Account"
+msgstr "Registruoti naują Gadu-Gadu abonentą"
+
+msgid "Please, fill in the following fields"
+msgstr "Prašome užpildyti tolimesnius laukus"
+
+msgid "City"
+msgstr "Miestas"
+
+msgid "Year of birth"
+msgstr "Gimimo metai"
+
+msgid "Gender"
+msgstr "Lytis"
+
+msgid "Male or female"
+msgstr "Vyras ar moteris"
+
+msgid "Male"
+msgstr "Vyras"
+
+msgid "Female"
+msgstr "Moteris"
+
+msgid "Only online"
+msgstr "Šiuo metu prisijungęs"
+
+msgid "Find buddies"
+msgstr "Ieškoti bičiulių"
+
+msgid "Please, enter your search criteria below"
+msgstr "Prašome žemiau įvesti, pagal ką ieškosite"
+
+msgid "Fill in the fields."
+msgstr "Užpildykite laukus."
+
+msgid "Your current password is different from the one that you specified."
+msgstr "Jūsų dabartinis slaptažodis skiriasi nuo nurodytojo."
+
+msgid "Unable to change password. Error occurred.\n"
+msgstr "Slaptažodis nepakeistas, įvyko klaida.\n"
+
+msgid "Change password for the Gadu-Gadu account"
+msgstr "Pakeisti Gadu-Gadu paskyros slaptažodį"
+
+msgid "Password was changed successfully!"
+msgstr "Slaptažodis buvo sėkmingai pakeistas!"
+
+msgid "Current password"
+msgstr "Dabartinis slaptažodis"
+
+msgid "Please, enter your current password and your new password for UIN: "
+msgstr "Prašome įvesti Jūsų dabartinį slaptažodį ir Jūsų naują UIN slaptažodį:"
+
+msgid "Change Gadu-Gadu Password"
+msgstr "Pakeisti Gadu-Gadu slaptažodį"
+
+#, c-format
+msgid "Select a chat for buddy: %s"
+msgstr "Pasirinkite pokalbių kambarį bičiuliui %s"
+
+msgid "Add to chat..."
+msgstr "Įtraukti į pokalbių kambarį..."
+
+#. Global
+msgid "Available"
+msgstr "Pasiekiamas"
+
+#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
+#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
+#. Away stuff
+msgid "Away"
+msgstr "Pasitraukęs"
+
+msgid "UIN"
+msgstr "UIN"
+
+msgid "First Name"
+msgstr "Vardas"
+
+msgid "Birth Year"
+msgstr "Gimimo metai"
+
+msgid "Unable to display the search results."
+msgstr "Negalima parodyti paieškos rezultatų."
+
+msgid "Gadu-Gadu Public Directory"
+msgstr "Viešasis Gadu-Gadu katalogas"
+
+msgid "Search results"
+msgstr "Paieškos rezultatai"
+
+msgid "No matching users found"
+msgstr "Ieškotų vartotojų nerasta"
+
+msgid "There are no users matching your search criteria."
+msgstr "Vartotojų, tenkinančių paieškos kriterijus, nėra."
+
+msgid "Unable to read socket"
+msgstr "Nepavyko skaityti iš jungties"
+
# Buddy List trans options
-msgid "Buddy list downloaded"
-msgstr "Bičiulių sąrašas atsisiųstas"
-
-msgid "Your buddy list was downloaded from the server."
-msgstr "Jūsų bičiulių sąrašas atsisiųstas iš serverio."
-
-msgid "Buddy list uploaded"
-msgstr "Bičiulių sąrašas nusiųstas į serverį"
-
-msgid "Your buddy list was stored on the server."
-msgstr "Jūsų bičiulių sąrašas išsaugotas serveryje."
-
-msgid "Connection failed."
-msgstr "Nepavyko prisijungti."
-
-msgid "Add to chat"
-msgstr "Įtraukti į pokalbių kambarį"
-
-msgid "Chat _name:"
-msgstr "Ka_nalo pavadinimas:"
-
-msgid "Chat error"
-msgstr "Pokalbių kambario klaida"
-
-msgid "This chat name is already in use"
-msgstr "Toks pokalbių kambario vardas jau yra vartojamas"
-
-msgid "Not connected to the server."
-msgstr "Neprisijungta prie serverio."
-
-msgid "Find buddies..."
-msgstr "Ieškoti bičiulių..."
-
-msgid "Change password..."
-msgstr "Pakeisti slaptažodį..."
-
-msgid "Upload buddylist to Server"
-msgstr "Nusiųsti bičiulių sąrašą į serverį"
-
-msgid "Download buddylist from Server"
-msgstr "Atsisiųsti bičiulių sąrašą iš serverio"
-
-msgid "Delete buddylist from Server"
-msgstr "Ištrinti bičiulių sąrašą iš serverio"
-
-msgid "Save buddylist to file..."
-msgstr "Įšsaugoti bičiulių sąrašą faile..."
-
-#. magic
-#. major_version
-#. minor_version
-#. plugin type
-#. ui_requirement
-#. flags
-#. dependencies
-#. priority
-#. id
-#. name
-#. version
-msgid "Gadu-Gadu Protocol Plugin"
-msgstr "Gadu-Gadu protokolo papildinys"
-
-#. summary
-msgid "Polish popular IM"
-msgstr "Populiarus lenkiškas bendravimo tinklas"
-
-msgid "Gadu-Gadu User"
-msgstr "Gadu-Gadu vartotojas"
-
-#, c-format
-msgid "Unknown command: %s"
-msgstr "Nežinoma komanda: %s"
-
-#, c-format
-msgid "current topic is: %s"
-msgstr "dabartinė tema yra: %s"
-
-msgid "No topic is set"
-msgstr "Temos nėra"
-
-msgid "File Transfer Failed"
-msgstr "Failo perdavimas nepavyko"
-
-msgid "Could not open a listening port."
-msgstr "Nepavyko atverti prievado klausymui."
-
-msgid "Error displaying MOTD"
-msgstr "MOTD pavaizdavimo klaida"
-
-msgid "No MOTD available"
-msgstr "Nėra MOTD"
-
-msgid "There is no MOTD associated with this connection."
-msgstr "Nėra su šia jungtimi susieto MOTD."
-
-#, c-format
-msgid "MOTD for %s"
-msgstr "%s MOTD"
-
-msgid "Server has disconnected"
-msgstr "Serveris atsijungė"
-
-msgid "View MOTD"
-msgstr "Žiūrėti MOTD"
-
-msgid "_Channel:"
-msgstr "_Kanalas:"
-
-msgid "_Password:"
-msgstr "Sla_ptažodis:"
-
-msgid "IRC nicks may not contain whitespace"
-msgstr "IRC vardai negali turėti matomų tarpų"
-
-#. 1. connect to server
-#. connect to the server
-msgid "Connecting"
-msgstr "Jungiamasi"
-
-msgid "SSL support unavailable"
-msgstr "Nėra SSL palaikymo"
-
-msgid "Couldn't create socket"
-msgstr "Nepavyko sukurti jungties"
-
-msgid "Couldn't connect to host"
-msgstr "Nepavyko prisijungti prie mazgo"
-
-msgid "Read error"
-msgstr "Skaitymo klaida"
-
-msgid "Users"
-msgstr "Vartotojai"
-
-msgid "Topic"
-msgstr "Tema"
-
+msgid "Buddy list downloaded"
+msgstr "Bičiulių sąrašas atsisiųstas"
+
+msgid "Your buddy list was downloaded from the server."
+msgstr "Jūsų bičiulių sąrašas atsisiųstas iš serverio."
+
+msgid "Buddy list uploaded"
+msgstr "Bičiulių sąrašas nusiųstas į serverį"
+
+msgid "Your buddy list was stored on the server."
+msgstr "Jūsų bičiulių sąrašas išsaugotas serveryje."
+
+msgid "Connection failed."
+msgstr "Nepavyko prisijungti."
+
+msgid "Add to chat"
+msgstr "Įtraukti į pokalbių kambarį"
+
+msgid "Chat _name:"
+msgstr "Ka_nalo pavadinimas:"
+
+msgid "Chat error"
+msgstr "Pokalbių kambario klaida"
+
+msgid "This chat name is already in use"
+msgstr "Toks pokalbių kambario vardas jau yra vartojamas"
+
+msgid "Not connected to the server."
+msgstr "Neprisijungta prie serverio."
+
+msgid "Find buddies..."
+msgstr "Ieškoti bičiulių..."
+
+msgid "Change password..."
+msgstr "Pakeisti slaptažodį..."
+
+msgid "Upload buddylist to Server"
+msgstr "Nusiųsti bičiulių sąrašą į serverį"
+
+msgid "Download buddylist from Server"
+msgstr "Atsisiųsti bičiulių sąrašą iš serverio"
+
+msgid "Delete buddylist from Server"
+msgstr "Ištrinti bičiulių sąrašą iš serverio"
+
+msgid "Save buddylist to file..."
+msgstr "Įšsaugoti bičiulių sąrašą faile..."
+
+#. magic
+#. major_version
+#. minor_version
+#. plugin type
+#. ui_requirement
+#. flags
+#. dependencies
+#. priority
+#. id
+#. name
+#. version
+msgid "Gadu-Gadu Protocol Plugin"
+msgstr "Gadu-Gadu protokolo papildinys"
+
+#. summary
+msgid "Polish popular IM"
+msgstr "Populiarus lenkiškas bendravimo tinklas"
+
+msgid "Gadu-Gadu User"
+msgstr "Gadu-Gadu vartotojas"
+
+#, c-format
+msgid "Unknown command: %s"
+msgstr "Nežinoma komanda: %s"
+
+#, c-format
+msgid "current topic is: %s"
+msgstr "dabartinė tema yra: %s"
+
+msgid "No topic is set"
+msgstr "Temos nėra"
+
+msgid "File Transfer Failed"
+msgstr "Failo perdavimas nepavyko"
+
+msgid "Could not open a listening port."
+msgstr "Nepavyko atverti prievado klausymui."
+
+msgid "Error displaying MOTD"
+msgstr "MOTD pavaizdavimo klaida"
+
+msgid "No MOTD available"
+msgstr "Nėra MOTD"
+
+msgid "There is no MOTD associated with this connection."
+msgstr "Nėra su šia jungtimi susieto MOTD."
+
+#, c-format
+msgid "MOTD for %s"
+msgstr "%s MOTD"
+
+msgid "Server has disconnected"
+msgstr "Serveris atsijungė"
+
+msgid "View MOTD"
+msgstr "Žiūrėti MOTD"
+
+msgid "_Channel:"
+msgstr "_Kanalas:"
+
+msgid "_Password:"
+msgstr "Sla_ptažodis:"
+
+msgid "IRC nicks may not contain whitespace"
+msgstr "IRC vardai negali turėti matomų tarpų"
+
+#. 1. connect to server
+#. connect to the server
+msgid "Connecting"
+msgstr "Jungiamasi"
+
+msgid "SSL support unavailable"
+msgstr "Nėra SSL palaikymo"
+
+msgid "Couldn't create socket"
+msgstr "Nepavyko sukurti jungties"
+
+msgid "Couldn't connect to host"
+msgstr "Nepavyko prisijungti prie mazgo"
+
+msgid "Read error"
+msgstr "Skaitymo klaida"
+
+msgid "Users"
+msgstr "Vartotojai"
+
+msgid "Topic"
+msgstr "Tema"
+
# *< api_version
# *< type
# *< ui_requirement
@@ -3291,569 +3369,619 @@ msgstr "Tema"
# *< id
# *< name
# *< version
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-msgid "IRC Protocol Plugin"
-msgstr "IRC protokolo papildinys"
-
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+msgid "IRC Protocol Plugin"
+msgstr "IRC protokolo papildinys"
+
# * summary
-#. * summary
-msgid "The IRC Protocol Plugin that Sucks Less"
-msgstr "Mažiau knisantis IRC protokolo papildinys"
-
-#. host to connect to
-msgid "Server"
-msgstr "Serveris"
-
-#. port to connect to
-msgid "Port"
-msgstr "Prievadas"
-
-msgid "Encodings"
-msgstr "Koduotės"
-
-msgid "Auto-detect incoming UTF-8"
-msgstr "Automatiškai nustatyti gaunamą UTF-8"
-
-msgid "Real name"
-msgstr "Tikras vardas"
-
-#.
-#. option = purple_account_option_string_new(_("Quit message"), "quitmsg", IRC_DEFAULT_QUIT);
-#. prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
-#.
-msgid "Use SSL"
-msgstr "Naudoti SSL"
-
-msgid "Bad mode"
-msgstr "Bloga būsena"
-
-#, c-format
-msgid "Ban on %s by %s, set %s ago"
-msgstr "Vartotojui %s uždraudė prisijungti %s prieš %s sekundžių"
-
-#, c-format
-msgid "Ban on %s"
-msgstr "Vartotojui %s uždrausta prisijungti"
-
-msgid "End of ban list"
-msgstr "Draudimų sąrašo pabaiga"
-
-#, c-format
-msgid "You are banned from %s."
-msgstr "Jums uždrausta prisijungti prie kanalo %s."
-
-msgid "Banned"
-msgstr "Uždrausta prisijungti prie kanalo"
-
-#, c-format
-msgid "Cannot ban %s: banlist is full"
-msgstr ""
-"Negalima uždrausti %s prisijungti prie kanalo, nes draudimų sąrašas pilnas"
-
-msgid " <i>(ircop)</i>"
-msgstr "<i>(IRC operatorius)</i>"
-
-msgid " <i>(identified)</i>"
-msgstr "<i>(identifikavęsis)</i>"
-
-msgid "Nick"
-msgstr "Vardas"
-
-msgid "Currently on"
-msgstr "Kanaluose"
-
-msgid "Idle for"
-msgstr "Neveiklus jau"
-
-msgid "Online since"
-msgstr "Prisijungęs nuo"
-
-msgid "<b>Defining adjective:</b>"
-msgstr "<b>Aprašantis būdvardis:</b>"
-
-msgid "Glorious"
-msgstr "Šlovingas"
-
-#, c-format
-msgid "%s has changed the topic to: %s"
-msgstr "%s pakeitė temą į: %s"
-
-#, c-format
-msgid "%s has cleared the topic."
-msgstr "%s ištrynė temą."
-
-#, c-format
-msgid "The topic for %s is: %s"
-msgstr "Kanalo %s tema: %s"
-
-#, c-format
-msgid "Unknown message '%s'"
-msgstr "Nežinomas pranešimas „%s“"
-
-msgid "Unknown message"
-msgstr "Nežinoma pranešimas"
-
-msgid "The IRC server received a message it did not understand."
-msgstr "IRC serveris gavo nesuprantamą pranešimą."
-
-#, c-format
-msgid "Users on %s: %s"
-msgstr "Vartotojai, esantys %s: %s"
-
-msgid "Time Response"
-msgstr "Laiko atsakas"
-
-msgid "The IRC server's local time is:"
-msgstr "IRC serverio vietinis laikas yra:"
-
-msgid "No such channel"
-msgstr "Tokio kanalo nėra"
-
+#. * summary
+msgid "The IRC Protocol Plugin that Sucks Less"
+msgstr "Mažiau knisantis IRC protokolo papildinys"
+
+#. host to connect to
+msgid "Server"
+msgstr "Serveris"
+
+#. port to connect to
+msgid "Port"
+msgstr "Prievadas"
+
+msgid "Encodings"
+msgstr "Koduotės"
+
+msgid "Auto-detect incoming UTF-8"
+msgstr "Automatiškai nustatyti gaunamą UTF-8"
+
+msgid "Real name"
+msgstr "Tikras vardas"
+
+#.
+#. option = purple_account_option_string_new(_("Quit message"), "quitmsg", IRC_DEFAULT_QUIT);
+#. prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
+#.
+msgid "Use SSL"
+msgstr "Naudoti SSL"
+
+msgid "Bad mode"
+msgstr "Bloga būsena"
+
+#, c-format
+msgid "Ban on %s by %s, set %s ago"
+msgstr "Vartotojui %s uždraudė prisijungti %s prieš %s sekundžių"
+
+#, c-format
+msgid "Ban on %s"
+msgstr "Vartotojui %s uždrausta prisijungti"
+
+msgid "End of ban list"
+msgstr "Draudimų sąrašo pabaiga"
+
+#, c-format
+msgid "You are banned from %s."
+msgstr "Jums uždrausta prisijungti prie kanalo %s."
+
+msgid "Banned"
+msgstr "Uždrausta prisijungti prie kanalo"
+
+#, c-format
+msgid "Cannot ban %s: banlist is full"
+msgstr ""
+"Negalima uždrausti %s prisijungti prie kanalo, nes draudimų sąrašas pilnas"
+
+msgid " <i>(ircop)</i>"
+msgstr "<i>(IRC operatorius)</i>"
+
+msgid " <i>(identified)</i>"
+msgstr "<i>(identifikavęsis)</i>"
+
+msgid "Nick"
+msgstr "Vardas"
+
+msgid "Currently on"
+msgstr "Kanaluose"
+
+msgid "Idle for"
+msgstr "Neveiklus jau"
+
+msgid "Online since"
+msgstr "Prisijungęs nuo"
+
+msgid "<b>Defining adjective:</b>"
+msgstr "<b>Aprašantis būdvardis:</b>"
+
+msgid "Glorious"
+msgstr "Šlovingas"
+
+#, c-format
+msgid "%s has changed the topic to: %s"
+msgstr "%s pakeitė temą į: %s"
+
+#, c-format
+msgid "%s has cleared the topic."
+msgstr "%s ištrynė temą."
+
+#, c-format
+msgid "The topic for %s is: %s"
+msgstr "Kanalo %s tema: %s"
+
+#, c-format
+msgid "Unknown message '%s'"
+msgstr "Nežinomas pranešimas „%s“"
+
+msgid "Unknown message"
+msgstr "Nežinoma pranešimas"
+
+msgid "The IRC server received a message it did not understand."
+msgstr "IRC serveris gavo nesuprantamą pranešimą."
+
+#, c-format
+msgid "Users on %s: %s"
+msgstr "Vartotojai, esantys %s: %s"
+
+msgid "Time Response"
+msgstr "Laiko atsakas"
+
+msgid "The IRC server's local time is:"
+msgstr "IRC serverio vietinis laikas yra:"
+
+msgid "No such channel"
+msgstr "Tokio kanalo nėra"
+
# does this happen?
-#. does this happen?
-msgid "no such channel"
-msgstr "tokio kanalo nėra"
-
-msgid "User is not logged in"
-msgstr "Vartotojas neprisijungęs"
-
-msgid "No such nick or channel"
-msgstr "Nėra tokio vardo ar kanalo"
-
-msgid "Could not send"
-msgstr "Nepavyko išsiųsti"
-
-#, c-format
-msgid "Joining %s requires an invitation."
-msgstr "Prisijungimui prie %s būtinas pakvietimas."
-
-msgid "Invitation only"
-msgstr "Tik su pakvietimais"
-
-#, c-format
-msgid "You have been kicked by %s: (%s)"
-msgstr "Tave išspyrė %s: %s"
-
-#. Remove user from channel
-#, c-format
-msgid "Kicked by %s (%s)"
-msgstr "Išspyrė %s (%s)"
-
-#, c-format
-msgid "mode (%s %s) by %s"
-msgstr "Būseną (%s %s) nustatė %s"
-
-msgid "Invalid nickname"
-msgstr "Neteisingas vardas"
-
-msgid ""
-"Your selected nickname was rejected by the server. It probably contains "
-"invalid characters."
-msgstr ""
-"Serveris atmetė Jūsų pasirinktą vardą. Greičiausiai jame yra neleistinų "
-"simbolių."
-
-msgid ""
-"Your selected account name was rejected by the server. It probably contains "
-"invalid characters."
-msgstr ""
-"Serveris atmetė Jūsų pasirinktą abonento vardą. Greičiausiai jame yra "
-"neleistinų simbolių."
-
-msgid "Cannot change nick"
-msgstr "Negalima pakeisti vardo"
-
-msgid "Could not change nick"
-msgstr "Vardo pakeisti nepavyko"
-
-#, c-format
-msgid "You have parted the channel%s%s"
-msgstr "Jūs palikote kanalą%s%s"
-
-msgid "Error: invalid PONG from server"
-msgstr "Klaida: neteisingas PONG iš serverio"
-
-#, c-format
-msgid "PING reply -- Lag: %lu seconds"
-msgstr "Atsakymas į skimbtelėjimą -- delsa: %lu sek."
-
-#, c-format
-msgid "Cannot join %s: Registration is required."
-msgstr "Nepavyko prisijungti prie %s, nes reikalinga registracija."
-
-msgid "Cannot join channel"
-msgstr "Nepavyko prisijungti prie kanalo"
-
-msgid "Nick or channel is temporarily unavailable."
-msgstr "Vardas ar kanalas yra laikinai neprieinamas."
-
-#, c-format
-msgid "Wallops from %s"
-msgstr "Žinutė (wallops) iš %s"
-
-msgid "action &lt;action to perform&gt;: Perform an action."
-msgstr "action &lt;veiksmas&gt;: atlieka veiksmą."
-
-msgid ""
-"away [message]: Set an away message, or use no message to return from being "
-"away."
-msgstr ""
-"away [žinutė]: nustato pasitraukimp žinutę. Jei žinutė nenurodyta, grįžta "
-"iš pasitraukimo."
-
-msgid "ctcp <nick> <msg>: sends ctcp msg to nick."
-msgstr "ctcp <vardas> <žinutė>: nusiunčia CTCP žinutę nurodytu vardu."
-
-msgid "chanserv: Send a command to chanserv"
-msgstr "chanserv: nusiunčia chanserv komandą"
-
-msgid ""
-"deop &lt;nick1&gt; [nick2] ...: Remove channel operator status from "
-"someone. You must be a channel operator to do this."
-msgstr ""
-"deop &lt;vardas1&gt; [vardas2] ...: pašalina nurodyto vardo(-ų) "
-"operatoriaus statusą. Tam Jūs turite būti kanalo operatorius."
-
-msgid ""
-"devoice &lt;nick1&gt; [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 &lt;vardas1&gt; [vardas2] ...: pašalina nurodyto vardo(-ų) "
-"kalbėjimo teisę, taip užkertant kelią jam kalbėti, jei kanalas yra "
-"prižiūrimas (+m). Tam Jūs turite būti kanalo operatorius."
-
-msgid ""
-"invite &lt;nick&gt; [room]: Invite someone to join you in the specified "
-"channel, or the current channel."
-msgstr ""
-"invite &lt;vardas&gt; [room]: pakviesti vartotoją su nurodytu vardu į "
-"nurodytą arba dabartinį kanalą."
-
-msgid ""
-"j &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]: Enter one or more "
-"channels, optionally providing a channel key for each if needed."
-msgstr ""
-"j &lt;kanalas1&gt;[,kanalas2][,...] [raktas1[,raktas2][,...]]: prisijungti "
-"prie vieno ar daugiau kanalų, papildomai kiekvienam iš jų nurodant po raktą, "
-"jei reikia."
-
-msgid ""
-"join &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]: Enter one or more "
-"channels, optionally providing a channel key for each if needed."
-msgstr ""
-"join &lt;kanalas1&gt;[,kanalas2][,...] [raktas1[,raktas2][,...]]: "
-"prisijungti prie vieno ar daugiau kanalų, papildomai kiekvienam iš jų "
-"nurodant po raktą, jei reikia."
-
-msgid ""
-"kick &lt;nick&gt; [message]: Remove someone from a channel. You must be a "
-"channel operator to do this."
-msgstr ""
-"kick &lt;vardas&gt; [pranešimas]: išspirti vartotoją su nurodytu vardu iš "
-"kanalo. Tam Jūs turite būti kanalo operatorius."
-
-msgid ""
-"list: Display a list of chat rooms on the network. <i>Warning, some servers "
-"may disconnect you upon doing this.</i>"
-msgstr ""
-"list: parodyti tinklo kanalų sąrašą. <i>Dėmesio, kai kurie serveriai gali "
-"Jus už tai atjungti.</i>"
-
-msgid "me &lt;action to perform&gt;: Perform an action."
-msgstr "me &lt;veiksmas&gt;: įvykdyti veiksmą."
-
-msgid "memoserv: Send a command to memoserv"
-msgstr "memoserv: nusiunčia memoserv komandą"
-
-msgid ""
-"mode &lt;+|-&gt;&lt;A-Za-z&gt; &lt;nick|channel&gt;: Set or unset a channel "
-"or user mode."
-msgstr ""
-"mode &lt;+|-&gt;&lt;A-Za-z&gt; &lt;vardas|kanalas&gt;: nustatyti arba "
-"atšaukti kanalo arba vartotojo būseną."
-
-msgid ""
-"msg &lt;nick&gt; &lt;message&gt;: Send a private message to a user (as "
-"opposed to a channel)."
-msgstr ""
-"msg &lt;vardas&gt; &lt;žinutė&gt;: siunčia privačią žinutę vartotojui su "
-"nurodytu vardu. Rašyti į kanalą su šia komanda negalima."
-
-msgid "names [channel]: List the users currently in a channel."
-msgstr "names [kanalas]: parodo šiuo metu kanale esančių vartotojų sąrašą."
-
-msgid "nick &lt;new nickname&gt;: Change your nickname."
-msgstr "nick &lt;naujas slapyvardis&gt;: pakeičia Jūsų vardą"
-
-msgid "nickserv: Send a command to nickserv"
-msgstr "nickserv: nusiunčia nickserv komandą"
-
-msgid "notice &lt;target&lt;: Send a notice to a user or channel."
-msgstr "notice &lt;gavėjas&gt;: nusiųsti pranešimą naudotojui ar kanalui."
-
-msgid ""
-"op &lt;nick1&gt; [nick2] ...: Grant channel operator status to someone. You "
-"must be a channel operator to do this."
-msgstr ""
-"op &lt;vardas1&gt; [vardas2] ...: suteikia kanalo operatoriaus statusą "
-"nurodytam vardui(-ams). Tam Jūs turite būti kanalo operatorius."
-
-msgid ""
-"operwall &lt;message&gt;: If you don't know what this is, you probably "
-"can't use it."
-msgstr ""
-"operwall &lt;žinutė&gt;: jei nežinote, kas tai yra, tai greičiausiai ir "
-"negalite šios komandos naudoti."
-
-msgid "operserv: Send a command to operserv"
-msgstr "operserv: nusiunčia operserv komandą"
-
-msgid ""
-"part [room] [message]: Leave the current channel, or a specified channel, "
-"with an optional message."
-msgstr ""
-"part [kanalas] [žinutė]: išeiti iš dabartinio ar nurodyto kanalo, "
-"neprivalomai nurodant išėjimo žinutę."
-
-msgid ""
-"ping [nick]: Asks how much lag a user (or the server if no user specified) "
-"has."
-msgstr ""
-"ping [vardas]: nustato, kokia yra vartotojo (arba serverio, jei slapyvardis "
-"nenurodytas) delsa."
-
-msgid ""
-"query &lt;nick&gt; &lt;message&gt;: Send a private message to a user (as "
-"opposed to a channel)."
-msgstr ""
-"query &lt;vardas&gt; &lt;žinutė&gt;: siunčia privačią žinutę vartotojui su "
-"nurodytu vardu. Rašyti į kanalą su šia komanda negalima."
-
-msgid "quit [message]: Disconnect from the server, with an optional message."
-msgstr ""
-"quit [žinutė]: atsijungia nuo serverio su papildoma neprivaloma žinute."
-
-msgid "quote [...]: Send a raw command to the server."
-msgstr "quote [...]: siunčia komandą serveriui be papildomo apdorojimo."
-
-msgid ""
-"remove &lt;nick&gt; [message]: Remove someone from a room. You must be a "
-"channel operator to do this."
-msgstr ""
-"remove &lt;vardas&gt; [žinutė]: pašalinti vartotoją su nurodytu vardu iš "
-"kanalo. Tam Jūs turite būti kanalo operatorius."
-
-msgid "time: Displays the current local time at the IRC server."
-msgstr "time: parodyti dabartinį vietinį IRC serverio laiko."
-
-msgid "topic [new topic]: View or change the channel topic."
-msgstr "topic [nauja tema]: pažiurėti arba pakeisti kanalo antraštę."
-
-msgid "umode &lt;+|-&gt;&lt;A-Za-z&gt;: Set or unset a user mode."
-msgstr ""
-"umode &lt;+|-&gt;&lt;A-Za-z&gt;: keisti arba atstatyti vartotojo būseną."
-
-msgid "version [nick]: send CTCP VERSION request to a user"
-msgstr "version [vardas]: nusiųsti vartotojui CTCP VERSION užklausą"
-
-msgid ""
-"voice &lt;nick1&gt; [nick2] ...: Grant channel voice status to someone. You "
-"must be a channel operator to do this."
-msgstr ""
-"voice &lt;vardas1&gt; [vardas2] ...: suteikti vartotojui(-ams) kalbėjimo "
-"teisę. Tam Jūs turite būti kanalo operatorius."
-
-msgid ""
-"wallops &lt;message&gt;: If you don't know what this is, you probably can't "
-"use it."
-msgstr ""
-"wallops &lt;žinutė&gt;: jei nežinote, kas tai yra, tai greičiausiai ir "
-"negalite šios komandos naudoti."
-
-msgid "whois [server] &lt;nick&gt;: Get information on a user."
-msgstr "whois [serveris] &lt;vardas&gt;: gauti informaciją apie vartotoją."
-
-msgid "whowas &lt;nick&gt;: Get information on a user that has logged off."
-msgstr "whowas &lt;vardas&gt;: gauti informaciją apie atsijungusį vartotoją."
-
-#, c-format
-msgid "Reply time from %s: %lu seconds"
-msgstr "Atsakymo laikas iš %s: %lu sek."
-
+#. does this happen?
+msgid "no such channel"
+msgstr "tokio kanalo nėra"
+
+msgid "User is not logged in"
+msgstr "Vartotojas neprisijungęs"
+
+msgid "No such nick or channel"
+msgstr "Nėra tokio vardo ar kanalo"
+
+msgid "Could not send"
+msgstr "Nepavyko išsiųsti"
+
+#, c-format
+msgid "Joining %s requires an invitation."
+msgstr "Prisijungimui prie %s būtinas pakvietimas."
+
+msgid "Invitation only"
+msgstr "Tik su pakvietimais"
+
+#, c-format
+msgid "You have been kicked by %s: (%s)"
+msgstr "Tave išspyrė %s: %s"
+
+#. Remove user from channel
+#, c-format
+msgid "Kicked by %s (%s)"
+msgstr "Išspyrė %s (%s)"
+
+#, c-format
+msgid "mode (%s %s) by %s"
+msgstr "Būseną (%s %s) nustatė %s"
+
+msgid "Invalid nickname"
+msgstr "Neteisingas vardas"
+
+msgid ""
+"Your selected nickname was rejected by the server. It probably contains "
+"invalid characters."
+msgstr ""
+"Serveris atmetė Jūsų pasirinktą vardą. Greičiausiai jame yra neleistinų "
+"simbolių."
+
+msgid ""
+"Your selected account name was rejected by the server. It probably contains "
+"invalid characters."
+msgstr ""
+"Serveris atmetė Jūsų pasirinktą abonento vardą. Greičiausiai jame yra "
+"neleistinų simbolių."
+
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "Toks pokalbių kambario vardas jau yra vartojamas"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Vardas"
+
+msgid "Cannot change nick"
+msgstr "Negalima pakeisti vardo"
+
+msgid "Could not change nick"
+msgstr "Vardo pakeisti nepavyko"
+
+#, c-format
+msgid "You have parted the channel%s%s"
+msgstr "Jūs palikote kanalą%s%s"
+
+msgid "Error: invalid PONG from server"
+msgstr "Klaida: neteisingas PONG iš serverio"
+
+#, c-format
+msgid "PING reply -- Lag: %lu seconds"
+msgstr "Atsakymas į skimbtelėjimą -- delsa: %lu sek."
+
+#, c-format
+msgid "Cannot join %s: Registration is required."
+msgstr "Nepavyko prisijungti prie %s, nes reikalinga registracija."
+
+msgid "Cannot join channel"
+msgstr "Nepavyko prisijungti prie kanalo"
+
+msgid "Nick or channel is temporarily unavailable."
+msgstr "Vardas ar kanalas yra laikinai neprieinamas."
+
+#, c-format
+msgid "Wallops from %s"
+msgstr "Žinutė (wallops) iš %s"
+
+msgid "action &lt;action to perform&gt;: Perform an action."
+msgstr "action &lt;veiksmas&gt;: atlieka veiksmą."
+
+msgid ""
+"away [message]: Set an away message, or use no message to return from being "
+"away."
+msgstr ""
+"away [žinutė]: nustato pasitraukimp žinutę. Jei žinutė nenurodyta, grįžta "
+"iš pasitraukimo."
+
+msgid "ctcp <nick> <msg>: sends ctcp msg to nick."
+msgstr "ctcp <vardas> <žinutė>: nusiunčia CTCP žinutę nurodytu vardu."
+
+msgid "chanserv: Send a command to chanserv"
+msgstr "chanserv: nusiunčia chanserv komandą"
+
+msgid ""
+"deop &lt;nick1&gt; [nick2] ...: Remove channel operator status from "
+"someone. You must be a channel operator to do this."
+msgstr ""
+"deop &lt;vardas1&gt; [vardas2] ...: pašalina nurodyto vardo(-ų) "
+"operatoriaus statusą. Tam Jūs turite būti kanalo operatorius."
+
+msgid ""
+"devoice &lt;nick1&gt; [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 &lt;vardas1&gt; [vardas2] ...: pašalina nurodyto vardo(-ų) "
+"kalbėjimo teisę, taip užkertant kelią jam kalbėti, jei kanalas yra "
+"prižiūrimas (+m). Tam Jūs turite būti kanalo operatorius."
+
+msgid ""
+"invite &lt;nick&gt; [room]: Invite someone to join you in the specified "
+"channel, or the current channel."
+msgstr ""
+"invite &lt;vardas&gt; [room]: pakviesti vartotoją su nurodytu vardu į "
+"nurodytą arba dabartinį kanalą."
+
+msgid ""
+"j &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]: Enter one or more "
+"channels, optionally providing a channel key for each if needed."
+msgstr ""
+"j &lt;kanalas1&gt;[,kanalas2][,...] [raktas1[,raktas2][,...]]: prisijungti "
+"prie vieno ar daugiau kanalų, papildomai kiekvienam iš jų nurodant po raktą, "
+"jei reikia."
+
+msgid ""
+"join &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]: Enter one or more "
+"channels, optionally providing a channel key for each if needed."
+msgstr ""
+"join &lt;kanalas1&gt;[,kanalas2][,...] [raktas1[,raktas2][,...]]: "
+"prisijungti prie vieno ar daugiau kanalų, papildomai kiekvienam iš jų "
+"nurodant po raktą, jei reikia."
+
+msgid ""
+"kick &lt;nick&gt; [message]: Remove someone from a channel. You must be a "
+"channel operator to do this."
+msgstr ""
+"kick &lt;vardas&gt; [pranešimas]: išspirti vartotoją su nurodytu vardu iš "
+"kanalo. Tam Jūs turite būti kanalo operatorius."
+
+msgid ""
+"list: Display a list of chat rooms on the network. <i>Warning, some servers "
+"may disconnect you upon doing this.</i>"
+msgstr ""
+"list: parodyti tinklo kanalų sąrašą. <i>Dėmesio, kai kurie serveriai gali "
+"Jus už tai atjungti.</i>"
+
+msgid "me &lt;action to perform&gt;: Perform an action."
+msgstr "me &lt;veiksmas&gt;: įvykdyti veiksmą."
+
+msgid "memoserv: Send a command to memoserv"
+msgstr "memoserv: nusiunčia memoserv komandą"
+
+msgid ""
+"mode &lt;+|-&gt;&lt;A-Za-z&gt; &lt;nick|channel&gt;: Set or unset a channel "
+"or user mode."
+msgstr ""
+"mode &lt;+|-&gt;&lt;A-Za-z&gt; &lt;vardas|kanalas&gt;: nustatyti arba "
+"atšaukti kanalo arba vartotojo būseną."
+
+msgid ""
+"msg &lt;nick&gt; &lt;message&gt;: Send a private message to a user (as "
+"opposed to a channel)."
+msgstr ""
+"msg &lt;vardas&gt; &lt;žinutė&gt;: siunčia privačią žinutę vartotojui su "
+"nurodytu vardu. Rašyti į kanalą su šia komanda negalima."
+
+msgid "names [channel]: List the users currently in a channel."
+msgstr "names [kanalas]: parodo šiuo metu kanale esančių vartotojų sąrašą."
+
+msgid "nick &lt;new nickname&gt;: Change your nickname."
+msgstr "nick &lt;naujas slapyvardis&gt;: pakeičia Jūsų vardą"
+
+msgid "nickserv: Send a command to nickserv"
+msgstr "nickserv: nusiunčia nickserv komandą"
+
+msgid "notice &lt;target&lt;: Send a notice to a user or channel."
+msgstr "notice &lt;gavėjas&gt;: nusiųsti pranešimą naudotojui ar kanalui."
+
+msgid ""
+"op &lt;nick1&gt; [nick2] ...: Grant channel operator status to someone. You "
+"must be a channel operator to do this."
+msgstr ""
+"op &lt;vardas1&gt; [vardas2] ...: suteikia kanalo operatoriaus statusą "
+"nurodytam vardui(-ams). Tam Jūs turite būti kanalo operatorius."
+
+msgid ""
+"operwall &lt;message&gt;: If you don't know what this is, you probably "
+"can't use it."
+msgstr ""
+"operwall &lt;žinutė&gt;: jei nežinote, kas tai yra, tai greičiausiai ir "
+"negalite šios komandos naudoti."
+
+msgid "operserv: Send a command to operserv"
+msgstr "operserv: nusiunčia operserv komandą"
+
+msgid ""
+"part [room] [message]: Leave the current channel, or a specified channel, "
+"with an optional message."
+msgstr ""
+"part [kanalas] [žinutė]: išeiti iš dabartinio ar nurodyto kanalo, "
+"neprivalomai nurodant išėjimo žinutę."
+
+msgid ""
+"ping [nick]: Asks how much lag a user (or the server if no user specified) "
+"has."
+msgstr ""
+"ping [vardas]: nustato, kokia yra vartotojo (arba serverio, jei slapyvardis "
+"nenurodytas) delsa."
+
+msgid ""
+"query &lt;nick&gt; &lt;message&gt;: Send a private message to a user (as "
+"opposed to a channel)."
+msgstr ""
+"query &lt;vardas&gt; &lt;žinutė&gt;: siunčia privačią žinutę vartotojui su "
+"nurodytu vardu. Rašyti į kanalą su šia komanda negalima."
+
+msgid "quit [message]: Disconnect from the server, with an optional message."
+msgstr ""
+"quit [žinutė]: atsijungia nuo serverio su papildoma neprivaloma žinute."
+
+msgid "quote [...]: Send a raw command to the server."
+msgstr "quote [...]: siunčia komandą serveriui be papildomo apdorojimo."
+
+msgid ""
+"remove &lt;nick&gt; [message]: Remove someone from a room. You must be a "
+"channel operator to do this."
+msgstr ""
+"remove &lt;vardas&gt; [žinutė]: pašalinti vartotoją su nurodytu vardu iš "
+"kanalo. Tam Jūs turite būti kanalo operatorius."
+
+msgid "time: Displays the current local time at the IRC server."
+msgstr "time: parodyti dabartinį vietinį IRC serverio laiko."
+
+msgid "topic [new topic]: View or change the channel topic."
+msgstr "topic [nauja tema]: pažiurėti arba pakeisti kanalo antraštę."
+
+msgid "umode &lt;+|-&gt;&lt;A-Za-z&gt;: Set or unset a user mode."
+msgstr ""
+"umode &lt;+|-&gt;&lt;A-Za-z&gt;: keisti arba atstatyti vartotojo būseną."
+
+msgid "version [nick]: send CTCP VERSION request to a user"
+msgstr "version [vardas]: nusiųsti vartotojui CTCP VERSION užklausą"
+
+msgid ""
+"voice &lt;nick1&gt; [nick2] ...: Grant channel voice status to someone. You "
+"must be a channel operator to do this."
+msgstr ""
+"voice &lt;vardas1&gt; [vardas2] ...: suteikti vartotojui(-ams) kalbėjimo "
+"teisę. Tam Jūs turite būti kanalo operatorius."
+
+msgid ""
+"wallops &lt;message&gt;: If you don't know what this is, you probably can't "
+"use it."
+msgstr ""
+"wallops &lt;žinutė&gt;: jei nežinote, kas tai yra, tai greičiausiai ir "
+"negalite šios komandos naudoti."
+
+msgid "whois [server] &lt;nick&gt;: Get information on a user."
+msgstr "whois [serveris] &lt;vardas&gt;: gauti informaciją apie vartotoją."
+
+msgid "whowas &lt;nick&gt;: Get information on a user that has logged off."
+msgstr "whowas &lt;vardas&gt;: gauti informaciją apie atsijungusį vartotoją."
+
+#, c-format
+msgid "Reply time from %s: %lu seconds"
+msgstr "Atsakymo laikas iš %s: %lu sek."
+
# Būna poroje su „PING“. Nelabai aišku, kaip versti
-msgid "PONG"
-msgstr "PONG"
-
+msgid "PONG"
+msgstr "PONG"
+
# CTCP yra akronimas, PING neišversta.
-msgid "CTCP PING reply"
-msgstr "CTCP PING atsakas"
-
-msgid "Disconnected."
-msgstr "Atjungta."
-
-msgid "Unknown Error"
-msgstr "Nežinoma klaida"
-
-msgid "Ad-Hoc Command Failed"
-msgstr "Specialios (ad hoc) komandos klaida"
-
-msgid "execute"
-msgstr "vykdyti"
-
-msgid "Server requires TLS/SSL for login. No TLS/SSL support found."
-msgstr "Serveris reikalauja TLS/SSL prisijungimui. Nėra TLS/SSL palaikymo."
-
-msgid "You require encryption, but no TLS/SSL support found."
-msgstr "Jūs reikalaujate šifravimo, bet TLS/SSL palaikymas nerastas."
-
-msgid "Server requires plaintext authentication over an unencrypted stream"
-msgstr ""
-"Serveris reikalauja tapatybės nustatymo grynu tekstu nekoduojamame duomenų "
-"sraute"
-
-#, c-format
-msgid ""
-"%s requires plaintext authentication over an unencrypted connection. Allow "
-"this and continue authentication?"
-msgstr ""
-"%s reikalauja tapatybės nustatymo grynu tekstu nekoduojamame duomenu "
-"kanale. Ar leisti tai ir tęsti tapatybės nustatymą?"
-
-msgid "Plaintext Authentication"
-msgstr "Tapatybės nustatymas grynu tekstu"
-
-msgid "Invalid response from server."
-msgstr "Neteisingas atsakas iš serverio."
-
-msgid "Server does not use any supported authentication method"
-msgstr "Serveris nenaudoja jokio Pidgin palaikomo tapatybės nustatymo metodo"
-
-msgid "Invalid challenge from server"
-msgstr "Neteisingas serverio iššūkis"
-
-msgid "SASL error"
-msgstr "SASL klaida"
-
-msgid "Full Name"
-msgstr "Pilnas vardas"
-
-msgid "Family Name"
-msgstr "Pavardė"
-
-msgid "Given Name"
-msgstr "Vardas"
-
-msgid "URL"
-msgstr "URL"
-
-msgid "Street Address"
-msgstr "Adresas"
-
-msgid "Extended Address"
-msgstr "Išplėstas adresas"
-
-msgid "Locality"
-msgstr "Vietovė"
-
-msgid "Region"
-msgstr "Regionas"
-
-msgid "Postal Code"
-msgstr "Pašto indeksas"
-
+msgid "CTCP PING reply"
+msgstr "CTCP PING atsakas"
+
+msgid "Disconnected."
+msgstr "Atjungta."
+
+msgid "Unknown Error"
+msgstr "Nežinoma klaida"
+
+msgid "Ad-Hoc Command Failed"
+msgstr "Specialios (ad hoc) komandos klaida"
+
+msgid "execute"
+msgstr "vykdyti"
+
+msgid "Server requires TLS/SSL for login. No TLS/SSL support found."
+msgstr "Serveris reikalauja TLS/SSL prisijungimui. Nėra TLS/SSL palaikymo."
+
+msgid "You require encryption, but no TLS/SSL support found."
+msgstr "Jūs reikalaujate šifravimo, bet TLS/SSL palaikymas nerastas."
+
+msgid "Server requires plaintext authentication over an unencrypted stream"
+msgstr ""
+"Serveris reikalauja tapatybės nustatymo grynu tekstu nekoduojamame duomenų "
+"sraute"
+
+#, c-format
+msgid ""
+"%s requires plaintext authentication over an unencrypted connection. Allow "
+"this and continue authentication?"
+msgstr ""
+"%s reikalauja tapatybės nustatymo grynu tekstu nekoduojamame duomenu "
+"kanale. Ar leisti tai ir tęsti tapatybės nustatymą?"
+
+msgid "Plaintext Authentication"
+msgstr "Tapatybės nustatymas grynu tekstu"
+
+msgid "Invalid response from server."
+msgstr "Neteisingas atsakas iš serverio."
+
+msgid "Server does not use any supported authentication method"
+msgstr "Serveris nenaudoja jokio Pidgin palaikomo tapatybės nustatymo metodo"
+
+msgid "Invalid challenge from server"
+msgstr "Neteisingas serverio iššūkis"
+
+msgid "SASL error"
+msgstr "SASL klaida"
+
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "Priežastis nenurodyta"
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Nepalaikoma versija"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"Nepavyko prisijungti prie serverio:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"Nepavyko prisijungti prie serverio:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "Nepavyko sukurti jungties"
+
+msgid "Unable to create socket"
+msgstr "Negalima sukurti jungties"
+
+msgid "Write error"
+msgstr "Rašymo klaida"
+
+msgid "Full Name"
+msgstr "Pilnas vardas"
+
+msgid "Family Name"
+msgstr "Pavardė"
+
+msgid "Given Name"
+msgstr "Vardas"
+
+msgid "URL"
+msgstr "URL"
+
+msgid "Street Address"
+msgstr "Adresas"
+
+msgid "Extended Address"
+msgstr "Išplėstas adresas"
+
+msgid "Locality"
+msgstr "Vietovė"
+
+msgid "Region"
+msgstr "Regionas"
+
+msgid "Postal Code"
+msgstr "Pašto indeksas"
+
# Country
-msgid "Country"
-msgstr "Šalis"
-
-#. lots of clients (including purple) do this, but it's
-#. * out of spec
-msgid "Telephone"
-msgstr "Telefonas"
-
-msgid "Organization Name"
-msgstr "Organizacijos pavadinimas"
-
-msgid "Organization Unit"
-msgstr "Organizacijos padalinys"
-
-msgid "Role"
-msgstr "Pareigos"
-
-msgid "Birthday"
-msgstr "Gimtadienis"
-
-msgid "Description"
-msgstr "Aprašymas"
-
-msgid "Edit XMPP vCard"
-msgstr "Redaguoti XMPP vCard vizitinę kortelę"
-
-msgid ""
-"All items below are optional. Enter only the information with which you feel "
-"comfortable."
-msgstr ""
-"Visi tolimesni įrašai yra neprivalomi. Įveskite tik tą informaciją, kurią "
-"norite viešinti."
-
-msgid "Client"
-msgstr "Klientas"
-
-msgid "Operating System"
-msgstr "Operacinė sistema"
-
-msgid "Last Activity"
-msgstr "Paskutinis veiksmas"
-
-msgid "Service Discovery Info"
-msgstr "Paslaugų paieškos informacija"
-
-msgid "Service Discovery Items"
-msgstr "Paslaugų paieškos elementai"
-
-msgid "Extended Stanza Addressing"
-msgstr "Išplėstinių strofų adresavimas"
-
-msgid "Multi-User Chat"
-msgstr "Pokalbis su keliais vartotojais"
-
-msgid "Multi-User Chat Extended Presence Information"
-msgstr "Išplėstinė buvimo informacija pokalbiuose su keliais vartotojais"
-
-msgid "In-Band Bytestreams"
-msgstr "Kanalo vidaus baitų srautai"
-
-msgid "Ad-Hoc Commands"
-msgstr "Specialios (ad hoc) komandos"
-
-msgid "PubSub Service"
-msgstr "PubSub paslauga"
-
-msgid "SOCKS5 Bytestreams"
-msgstr "SOCKS5 baitų srautai"
-
-msgid "Out of Band Data"
-msgstr "Užkanaliniai duomenys"
-
-msgid "XHTML-IM"
-msgstr "XHTML-IM"
-
-msgid "In-Band Registration"
-msgstr "Registracija kanalo viduje"
-
-msgid "User Location"
-msgstr "Naudotojo vietovė"
-
-msgid "User Avatar"
-msgstr "Naudotojo avataras"
-
+msgid "Country"
+msgstr "Šalis"
+
+#. lots of clients (including purple) do this, but it's
+#. * out of spec
+msgid "Telephone"
+msgstr "Telefonas"
+
+msgid "Organization Name"
+msgstr "Organizacijos pavadinimas"
+
+msgid "Organization Unit"
+msgstr "Organizacijos padalinys"
+
+msgid "Role"
+msgstr "Pareigos"
+
+msgid "Birthday"
+msgstr "Gimtadienis"
+
+msgid "Description"
+msgstr "Aprašymas"
+
+msgid "Edit XMPP vCard"
+msgstr "Redaguoti XMPP vCard vizitinę kortelę"
+
+msgid ""
+"All items below are optional. Enter only the information with which you feel "
+"comfortable."
+msgstr ""
+"Visi tolimesni įrašai yra neprivalomi. Įveskite tik tą informaciją, kurią "
+"norite viešinti."
+
+msgid "Client"
+msgstr "Klientas"
+
+msgid "Operating System"
+msgstr "Operacinė sistema"
+
+#, fuzzy
+msgid "Local Time"
+msgstr "Vietinis failas:"
+
+msgid "Last Activity"
+msgstr "Paskutinis veiksmas"
+
+msgid "Service Discovery Info"
+msgstr "Paslaugų paieškos informacija"
+
+msgid "Service Discovery Items"
+msgstr "Paslaugų paieškos elementai"
+
+msgid "Extended Stanza Addressing"
+msgstr "Išplėstinių strofų adresavimas"
+
+msgid "Multi-User Chat"
+msgstr "Pokalbis su keliais vartotojais"
+
+msgid "Multi-User Chat Extended Presence Information"
+msgstr "Išplėstinė buvimo informacija pokalbiuose su keliais vartotojais"
+
+msgid "In-Band Bytestreams"
+msgstr "Kanalo vidaus baitų srautai"
+
+msgid "Ad-Hoc Commands"
+msgstr "Specialios (ad hoc) komandos"
+
+msgid "PubSub Service"
+msgstr "PubSub paslauga"
+
+msgid "SOCKS5 Bytestreams"
+msgstr "SOCKS5 baitų srautai"
+
+msgid "Out of Band Data"
+msgstr "Užkanaliniai duomenys"
+
+msgid "XHTML-IM"
+msgstr "XHTML-IM"
+
+msgid "In-Band Registration"
+msgstr "Registracija kanalo viduje"
+
+msgid "User Location"
+msgstr "Naudotojo vietovė"
+
+msgid "User Avatar"
+msgstr "Naudotojo avataras"
+
# *< api_version
# *< type
# *< ui_requirement
@@ -3861,2418 +3989,2458 @@ msgstr "Naudotojo avataras"
# *< dependencies
# *< priority
# *< id
-msgid "Chat State Notifications"
-msgstr "Pranešimai apie pokalbio būseną"
-
-msgid "Software Version"
-msgstr "Programinės įrangos versija"
-
-msgid "Stream Initiation"
-msgstr "Kanalo inicijavimas"
-
-msgid "File Transfer"
-msgstr "Failų perdavimas"
-
-msgid "User Mood"
-msgstr "Naudotojo nuotaika"
-
-msgid "User Activity"
-msgstr "Naudotojo aktyvumas"
-
-msgid "Entity Capabilities"
-msgstr "Objektų gebos"
-
-msgid "Encrypted Session Negotiations"
-msgstr "Šifruoti seansų susitarimai"
-
-msgid "User Tune"
-msgstr "Naudotojo daina"
-
-msgid "Roster Item Exchange"
-msgstr "Sąrašo objektų apsikeitimas"
-
-msgid "Reachability Address"
-msgstr "Pasiekiamumo adresas"
-
-msgid "User Profile"
-msgstr "Naudotojo profilis"
-
+msgid "Chat State Notifications"
+msgstr "Pranešimai apie pokalbio būseną"
+
+msgid "Software Version"
+msgstr "Programinės įrangos versija"
+
+msgid "Stream Initiation"
+msgstr "Kanalo inicijavimas"
+
+msgid "File Transfer"
+msgstr "Failų perdavimas"
+
+msgid "User Mood"
+msgstr "Naudotojo nuotaika"
+
+msgid "User Activity"
+msgstr "Naudotojo aktyvumas"
+
+msgid "Entity Capabilities"
+msgstr "Objektų gebos"
+
+msgid "Encrypted Session Negotiations"
+msgstr "Šifruoti seansų susitarimai"
+
+msgid "User Tune"
+msgstr "Naudotojo daina"
+
+msgid "Roster Item Exchange"
+msgstr "Sąrašo objektų apsikeitimas"
+
+msgid "Reachability Address"
+msgstr "Pasiekiamumo adresas"
+
+msgid "User Profile"
+msgstr "Naudotojo profilis"
+
# join button
-msgid "Jingle"
-msgstr "Jingle"
-
-msgid "Jingle Audio"
-msgstr "Jingle Audio"
-
-msgid "User Nickname"
-msgstr "Naudotojo vardas"
-
-msgid "Jingle ICE UDP"
-msgstr "Jingle ICE UDP"
-
-msgid "Jingle ICE TCP"
-msgstr "Jingle ICE TCP"
-
-msgid "Jingle Raw UDP"
-msgstr "Jingle grynu UDP"
-
-msgid "Jingle Video"
-msgstr "Jingle Video"
-
-msgid "Jingle DTMF"
-msgstr "Jingle DTMF"
-
-msgid "Message Receipts"
-msgstr "Pranešimai apie žinučių pristatymą"
-
-msgid "Public Key Publishing"
-msgstr "Viešojo rakto skelbimas"
-
-msgid "User Chatting"
-msgstr "Naudotojas šnekasi"
-
-msgid "User Browsing"
-msgstr "Naudotojas naršo"
-
-msgid "User Gaming"
-msgstr "Naudotojas žaidžia"
-
-msgid "User Viewing"
-msgstr "Naudotojas žiūri"
-
-msgid "Ping"
-msgstr "Skimbtelėti"
-
-msgid "Stanza Encryption"
-msgstr "Strofų šifravimas"
-
-msgid "Entity Time"
-msgstr "Objekto laikas"
-
-msgid "Delayed Delivery"
-msgstr "Uždelstinis pristatymas"
-
-msgid "Collaborative Data Objects"
-msgstr "Bendradarbiavimo duomenų objektai"
-
-msgid "File Repository and Sharing"
-msgstr "Failų saugykla ir dalinimasis"
-
-msgid "STUN Service Discovery for Jingle"
-msgstr "STUN paslaugos paieška, skirta Jingle"
-
-msgid "Simplified Encrypted Session Negotiation"
-msgstr "Supaprastintas susitarimas dėl šifruoto seanso"
-
-msgid "Hop Check"
-msgstr "Šuolių patikrinimas"
-
-msgid "Capabilities"
-msgstr "Sugebėjimai"
-
-msgid "Priority"
-msgstr "Prioritetas"
-
-msgid "Resource"
-msgstr "Išteklius"
-
-msgid "Middle Name"
-msgstr "Antras vardas"
-
-msgid "Address"
-msgstr "Adresas"
-
-msgid "P.O. Box"
-msgstr "Abonentinė pašto dėžutė"
-
-msgid "Photo"
-msgstr "Nuotrauka"
-
-msgid "Logo"
-msgstr "Logotipas"
-
-msgid "Un-hide From"
-msgstr "Nustoti slėpti nuo"
-
-msgid "Temporarily Hide From"
-msgstr "Laikinai paslėpti nuo"
-
-#. && NOT ME
-msgid "Cancel Presence Notification"
-msgstr "Nutraukti informavimą apie buvimą"
-
-msgid "(Re-)Request authorization"
-msgstr "Pareikalauti (iš naujo) prieigos teisės"
-
+msgid "Jingle"
+msgstr "Jingle"
+
+msgid "Jingle Audio"
+msgstr "Jingle Audio"
+
+msgid "User Nickname"
+msgstr "Naudotojo vardas"
+
+msgid "Jingle ICE UDP"
+msgstr "Jingle ICE UDP"
+
+msgid "Jingle ICE TCP"
+msgstr "Jingle ICE TCP"
+
+msgid "Jingle Raw UDP"
+msgstr "Jingle grynu UDP"
+
+msgid "Jingle Video"
+msgstr "Jingle Video"
+
+msgid "Jingle DTMF"
+msgstr "Jingle DTMF"
+
+msgid "Message Receipts"
+msgstr "Pranešimai apie žinučių pristatymą"
+
+msgid "Public Key Publishing"
+msgstr "Viešojo rakto skelbimas"
+
+msgid "User Chatting"
+msgstr "Naudotojas šnekasi"
+
+msgid "User Browsing"
+msgstr "Naudotojas naršo"
+
+msgid "User Gaming"
+msgstr "Naudotojas žaidžia"
+
+msgid "User Viewing"
+msgstr "Naudotojas žiūri"
+
+msgid "Ping"
+msgstr "Skimbtelėti"
+
+msgid "Stanza Encryption"
+msgstr "Strofų šifravimas"
+
+msgid "Entity Time"
+msgstr "Objekto laikas"
+
+msgid "Delayed Delivery"
+msgstr "Uždelstinis pristatymas"
+
+msgid "Collaborative Data Objects"
+msgstr "Bendradarbiavimo duomenų objektai"
+
+msgid "File Repository and Sharing"
+msgstr "Failų saugykla ir dalinimasis"
+
+msgid "STUN Service Discovery for Jingle"
+msgstr "STUN paslaugos paieška, skirta Jingle"
+
+msgid "Simplified Encrypted Session Negotiation"
+msgstr "Supaprastintas susitarimas dėl šifruoto seanso"
+
+msgid "Hop Check"
+msgstr "Šuolių patikrinimas"
+
+msgid "Capabilities"
+msgstr "Sugebėjimai"
+
+msgid "Priority"
+msgstr "Prioritetas"
+
+msgid "Resource"
+msgstr "Išteklius"
+
+msgid "Middle Name"
+msgstr "Antras vardas"
+
+msgid "Address"
+msgstr "Adresas"
+
+msgid "P.O. Box"
+msgstr "Abonentinė pašto dėžutė"
+
+msgid "Photo"
+msgstr "Nuotrauka"
+
+msgid "Logo"
+msgstr "Logotipas"
+
+msgid "Un-hide From"
+msgstr "Nustoti slėpti nuo"
+
+msgid "Temporarily Hide From"
+msgstr "Laikinai paslėpti nuo"
+
+#. && NOT ME
+msgid "Cancel Presence Notification"
+msgstr "Nutraukti informavimą apie buvimą"
+
+msgid "(Re-)Request authorization"
+msgstr "Pareikalauti (iš naujo) prieigos teisės"
+
# if(NOT ME)
# shouldn't this just happen automatically when the buddy is
# removed?
-#. if(NOT ME)
-#. shouldn't this just happen automatically when the buddy is
-#. removed?
-msgid "Unsubscribe"
-msgstr "Išsiregistruoti"
-
-msgid "Log In"
-msgstr "Prisijungti"
-
-msgid "Log Out"
-msgstr "Atsijungti"
-
-msgid "Chatty"
-msgstr "Plepiai nusiteikęs"
-
-msgid "Extended Away"
-msgstr "Ilgam pasitraukęs"
-
-msgid "Do Not Disturb"
-msgstr "Netrukdyti"
-
-msgid "JID"
-msgstr "JID"
-
-msgid "Last Name"
-msgstr "Pavardė"
-
-msgid "The following are the results of your search"
-msgstr "Toliau yra Jūsų paieškos rezultatai"
-
-#. current comment from Jabber User Directory users.jabber.org
-msgid ""
-"Find a contact by entering the search criteria in the given fields. Note: "
-"Each field supports wild card searches (%)"
-msgstr ""
-"Ieškokite kontakto įvesdami paieškos požymius pateiktuose laukuose. "
-"Pastaba: kiekvienas laukas palaiko pakaitos simbolius (%)"
-
-msgid "Directory Query Failed"
-msgstr "Katalogo užklausa nepavyko"
-
-msgid "Could not query the directory server."
-msgstr "Nepavyko užklausti katalogo serverio."
-
-#. Try to translate the message (see static message
-#. list in jabber_user_dir_comments[])
-#, c-format
-msgid "Server Instructions: %s"
-msgstr "Serverio instrukcijos: %s"
-
-msgid "Fill in one or more fields to search for any matching XMPP users."
-msgstr "Užpildykite vieną ar daugiau laukų XMPP vartotojų paieškai."
-
-msgid "Email Address"
-msgstr "El. pašto adresas"
-
-msgid "Search for XMPP users"
-msgstr "Ieškoti XMPP vartotojų"
-
-#. "Search"
-msgid "Search"
-msgstr "Ieškoti"
-
-msgid "Invalid Directory"
-msgstr "Neteisingas katalogas"
-
-msgid "Enter a User Directory"
-msgstr "Įveskite vartotojų katalogą"
-
-msgid "Select a user directory to search"
-msgstr "Pasirinkite vartotojų katalogą paieškai"
-
-msgid "Search Directory"
-msgstr "Paieškos katalogas"
-
-msgid "_Room:"
-msgstr "Kamba_rys:"
-
-msgid "_Server:"
-msgstr "_Serveris:"
-
-msgid "_Handle:"
-msgstr "Ra_nkenėlė:"
-
-#, c-format
-msgid "%s is not a valid room name"
-msgstr "%s yra neteisingas kambario pavadinimas"
-
-msgid "Invalid Room Name"
-msgstr "Neteisingas kambario pavadinimas"
-
-#, c-format
-msgid "%s is not a valid server name"
-msgstr "%s yra neteisingas serverio pavadinimas"
-
-msgid "Invalid Server Name"
-msgstr "Neteisingas serverio pavadinimas"
-
-#, c-format
-msgid "%s is not a valid room handle"
-msgstr "%s yra neteisinga kambario rankenėlė"
-
-msgid "Invalid Room Handle"
-msgstr "Neteisinga kambario rankenėlė"
-
-msgid "Configuration error"
-msgstr "Konfigūracijos klaida"
-
-msgid "Unable to configure"
-msgstr "Negalima konfigūruoti"
-
-msgid "Room Configuration Error"
-msgstr "Kambario konfigūracijos klaida"
-
-msgid "This room is not capable of being configured"
-msgstr "Šis kambarys neturi konfigūravimo galimybės"
-
-msgid "Registration error"
-msgstr "Registracijos klaida"
-
-msgid "Nick changing not supported in non-MUC chatrooms"
-msgstr "Ne MUC kambariuose vardo keitimas nėra palaikomas"
-
-msgid "Error retrieving room list"
-msgstr "Kambarių sąrašo gavimo klaida"
-
-msgid "Invalid Server"
-msgstr "Neteisingas serveris"
-
-msgid "Enter a Conference Server"
-msgstr "Įveskite konferencijų serverį"
-
-msgid "Select a conference server to query"
-msgstr "Pasirinkite konferencijų serverį užklausai"
-
-msgid "Find Rooms"
-msgstr "Rasti kambarius"
-
-msgid "You require encryption, but it is not available on this server."
-msgstr "Jūs reikalaujate šifravimo, bet jo šis serveris nesiūlo."
-
-msgid "Write error"
-msgstr "Rašymo klaida"
-
-msgid "Ping timeout"
-msgstr "Baigėsi skimbtelėjimo laukimo laikas"
-
-msgid "Read Error"
-msgstr "Skaitymo klaida"
-
-#, c-format
-msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
-msgstr ""
-"Nepavyko prisijungti prie serverio:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "Negalima sukurti jungties"
-
-msgid "Invalid XMPP ID"
-msgstr "Neteisingas XMPP ID"
-
-msgid "Invalid XMPP ID. Domain must be set."
-msgstr "Neteisingas XMPP ID. Sritis privalo būti nustatyta."
-
-#, c-format
-msgid "Registration of %s@%s successful"
-msgstr "%s@%s registracija sėkminga"
-
-#, c-format
-msgid "Registration to %s successful"
-msgstr "Registracija prie %s sėkminga"
-
-msgid "Registration Successful"
-msgstr "Sėkminga registracija"
-
-msgid "Registration Failed"
-msgstr "Registracija nepavyko"
-
-#, c-format
-msgid "Registration from %s successfully removed"
-msgstr "Sėkmingai išsiregistruota iš %s"
-
-msgid "Unregistration Successful"
-msgstr "Sėkmingas išsiregistravimas"
-
-msgid "Unregistration Failed"
-msgstr "Išsiregistravimas nepavyko"
-
-msgid "Already Registered"
-msgstr "Jau registruota"
-
-msgid "State"
-msgstr "Valstija"
-
-msgid "Postal code"
-msgstr "Pašto indeksas"
-
-msgid "Phone"
-msgstr "Telefonas"
-
-msgid "Date"
-msgstr "Data"
-
-msgid "Unregister"
-msgstr "Išsiregistruoti"
-
-msgid ""
-"Please fill out the information below to change your account registration."
-msgstr ""
-"Jūsų paskyros registracijos keitimui prašome įvesti informaciją žemiau."
-
-msgid "Please fill out the information below to register your new account."
-msgstr "Jūsų naujo abonento registravimui prašome įvesti informaciją žemiau."
-
-msgid "Register New XMPP Account"
-msgstr "Registruoti naują XMPP abonentą"
-
-msgid "Register"
-msgstr "Registruotis"
-
-#, c-format
-msgid "Change Account Registration at %s"
-msgstr "Pakeisti paskyros %s registraciją"
-
-#, c-format
-msgid "Register New Account at %s"
-msgstr "Registruoti naują paskyrą %s"
-
-msgid "Change Registration"
-msgstr "Pakeisti registraciją"
-
-msgid "Error unregistering account"
-msgstr "Paskyros išregistravimo klaida"
-
-msgid "Account successfully unregistered"
-msgstr "Paskyra sėkmingai išregistruota"
-
-msgid "Initializing Stream"
-msgstr "Inicializuojamas duomenų srautas"
-
-msgid "Initializing SSL/TLS"
-msgstr "Inicializuojama SSL/TLS"
-
-msgid "Authenticating"
-msgstr "Nustatoma tapatybė"
-
-msgid "Re-initializing Stream"
-msgstr "Iš naujo inicializuojamas duomenų srautas"
-
-msgid "Server doesn't support blocking"
-msgstr "Serveris nepalaiko blokavimo"
-
-msgid "Not Authorized"
-msgstr "Prieiga nesuteikta"
-
-msgid "Both"
-msgstr "abipusė"
-
-msgid "From (To pending)"
-msgstr "patvirtinta Jūsų, laukiama bičiulio patvirtinimo"
-
-msgid "From"
-msgstr "Iš"
-
-msgid "To"
-msgstr "bičiulio patvirtinta"
-
-msgid "None (To pending)"
-msgstr "Jokia (laukiama patvirtinimo iš bičiulio)"
-
-msgid "None"
-msgstr "niekaip"
-
-msgid "Subscription"
-msgstr "Registracija"
-
-msgid "Mood"
-msgstr "Nuotaika"
-
-msgid "Now Listening"
-msgstr "Dabar klausosi"
-
-msgid "Mood Text"
-msgstr "Nuotaikos tekstas"
-
-msgid "Allow Buzz"
-msgstr "Leisti zyzimus"
-
-msgid "Tune Artist"
-msgstr "Dainos atlikėjas"
-
-msgid "Tune Title"
-msgstr "Dainos pavadinimas"
-
-msgid "Tune Album"
-msgstr "Dainos albumas"
-
-msgid "Tune Genre"
-msgstr "Dainos žanras"
-
-msgid "Tune Comment"
-msgstr "Dainos komentaras"
-
-msgid "Tune Track"
-msgstr "Dainos takelis"
-
-msgid "Tune Time"
-msgstr "Dainos laikas"
-
-msgid "Tune Year"
-msgstr "Dainos metai"
-
-msgid "Tune URL"
-msgstr "Dainos URL"
-
-msgid "Password Changed"
-msgstr "Slaptažodis pakeistas"
-
-msgid "Your password has been changed."
-msgstr "Jūsų slaptažodis pakeistas."
-
-msgid "Error changing password"
-msgstr "Slaptažodžio keitimo klaida"
-
-msgid "Password (again)"
-msgstr "Pakartotas slaptažodis"
-
-msgid "Change XMPP Password"
-msgstr "Pakeiskite XMPP slaptažodį"
-
-msgid "Please enter your new password"
-msgstr "Prašome įvesti Jūsų naują slaptažodį"
-
-msgid "Set User Info..."
-msgstr "Nustatyti vartotojo informaciją..."
-
-#. if (js->protocol_options & CHANGE_PASSWORD) {
-msgid "Change Password..."
-msgstr "Pakeisti slaptažodį..."
-
-#. }
-msgid "Search for Users..."
-msgstr "Ieškoti vartotojų..."
-
-msgid "Bad Request"
-msgstr "Bloga užklausa"
-
-msgid "Conflict"
-msgstr "Konfliktas"
-
-msgid "Feature Not Implemented"
-msgstr "Funkcija neįgyvendinta"
-
-msgid "Forbidden"
-msgstr "Uždrausta"
-
-msgid "Gone"
-msgstr "Dingo"
-
-msgid "Internal Server Error"
-msgstr "Vidinė serverio klaida"
-
-msgid "Item Not Found"
-msgstr "Nerastas elementas"
-
-msgid "Malformed XMPP ID"
-msgstr "Neteisingai suformuotas XMPP ID"
-
-msgid "Not Acceptable"
-msgstr "Nepriimtina"
-
-msgid "Not Allowed"
-msgstr "Neleistina"
-
-msgid "Payment Required"
-msgstr "Reikalingas apmokėjimas"
-
-msgid "Recipient Unavailable"
-msgstr "Gavėjas neprieinamas"
-
-msgid "Registration Required"
-msgstr "Rekalinga registracija"
-
-msgid "Remote Server Not Found"
-msgstr "Nuotolinis serveris nerastas"
-
-msgid "Remote Server Timeout"
-msgstr "Nuotolinio serverio laukimo laikas baigėsi"
-
-msgid "Server Overloaded"
-msgstr "Serveris perkrautas"
-
-msgid "Service Unavailable"
-msgstr "Paslauga neteikiama"
-
-msgid "Subscription Required"
-msgstr "Reikalinga registracija"
-
-msgid "Unexpected Request"
-msgstr "Nelaukta užklausa"
-
-msgid "Authorization Aborted"
-msgstr "Prieigos suteikimas nutrauktas"
-
-msgid "Incorrect encoding in authorization"
-msgstr "Neteisinga koduotė prieigos suteikime"
-
-msgid "Invalid authzid"
-msgstr "Neteisingas prieigos suteikimo identifikatorius"
-
-msgid "Invalid Authorization Mechanism"
-msgstr "Neteisingas prieigos suteikimo mechanizmas"
-
-msgid "Authorization mechanism too weak"
-msgstr "Prieigos suteikimo mechanizmas per silpnas"
-
-msgid "Temporary Authentication Failure"
-msgstr "Laikina prieigos suteikimo nesekmė"
-
-msgid "Authentication Failure"
-msgstr "Prieigos suteikimo nesekmė"
-
-msgid "Bad Format"
-msgstr "Blogas formatas"
-
-msgid "Bad Namespace Prefix"
-msgstr "Blogas vardų erdvės priešdėlis"
-
-msgid "Resource Conflict"
-msgstr "Išteklių konfliktas"
-
-msgid "Connection Timeout"
-msgstr "Jungties laukimo laikas baigėsi"
-
-msgid "Host Gone"
-msgstr "Dingo mazgas"
-
-msgid "Host Unknown"
-msgstr "Nežinomas mazgas"
-
-msgid "Improper Addressing"
-msgstr "Neteisingas adresavimas"
-
-msgid "Invalid ID"
-msgstr "Neteisingas ID"
-
-msgid "Invalid Namespace"
-msgstr "Neteisinga vardų erdvė"
-
-msgid "Invalid XML"
-msgstr "Neteisingas XML"
-
-msgid "Non-matching Hosts"
-msgstr "Neatitinkantys mazgai"
-
-msgid "Policy Violation"
-msgstr "Taisyklių pažeidimas"
-
-msgid "Remote Connection Failed"
-msgstr "Nuotolinė jungtis nepavyko"
-
-msgid "Resource Constraint"
-msgstr "Išteklių apribojimas"
-
-msgid "Restricted XML"
-msgstr "Apribotas XML"
-
-msgid "See Other Host"
-msgstr "Aplankykite kitą mazgą"
-
-msgid "System Shutdown"
-msgstr "Sistemos sustabdymas"
-
-msgid "Undefined Condition"
-msgstr "Neapibrėžta salyga"
-
-msgid "Unsupported Encoding"
-msgstr "Nepalaikoma koduotė"
-
-msgid "Unsupported Stanza Type"
-msgstr "Nepalaikomas strofos tipas"
-
-msgid "Unsupported Version"
-msgstr "Nepalaikoma versija"
-
-msgid "XML Not Well Formed"
-msgstr "Neteisingai suformuotas XML"
-
-msgid "Stream Error"
-msgstr "Duomenų srauto klaida"
-
-#, c-format
-msgid "Unable to ban user %s"
-msgstr "Negalima uždrausti vartotojui %s prisijungti prie kanalo"
-
-#, c-format
-msgid "Unknown affiliation: \"%s\""
-msgstr "Nežinomas statusas: „%s“"
-
-#, c-format
-msgid "Unable to affiliate user %s as \"%s\""
-msgstr "Vartotojui %s negalima priskirti statuso „%s“"
-
-#, c-format
-msgid "Unknown role: \"%s\""
-msgstr "Nežinomas vaidmuo: „%s“"
-
+#. if(NOT ME)
+#. shouldn't this just happen automatically when the buddy is
+#. removed?
+msgid "Unsubscribe"
+msgstr "Išsiregistruoti"
+
+msgid "Log In"
+msgstr "Prisijungti"
+
+msgid "Log Out"
+msgstr "Atsijungti"
+
+msgid "Chatty"
+msgstr "Plepiai nusiteikęs"
+
+msgid "Extended Away"
+msgstr "Ilgam pasitraukęs"
+
+msgid "Do Not Disturb"
+msgstr "Netrukdyti"
+
+msgid "JID"
+msgstr "JID"
+
+msgid "Last Name"
+msgstr "Pavardė"
+
+msgid "The following are the results of your search"
+msgstr "Toliau yra Jūsų paieškos rezultatai"
+
+#. current comment from Jabber User Directory users.jabber.org
+msgid ""
+"Find a contact by entering the search criteria in the given fields. Note: "
+"Each field supports wild card searches (%)"
+msgstr ""
+"Ieškokite kontakto įvesdami paieškos požymius pateiktuose laukuose. "
+"Pastaba: kiekvienas laukas palaiko pakaitos simbolius (%)"
+
+msgid "Directory Query Failed"
+msgstr "Katalogo užklausa nepavyko"
+
+msgid "Could not query the directory server."
+msgstr "Nepavyko užklausti katalogo serverio."
+
+#. Try to translate the message (see static message
+#. list in jabber_user_dir_comments[])
+#, c-format
+msgid "Server Instructions: %s"
+msgstr "Serverio instrukcijos: %s"
+
+msgid "Fill in one or more fields to search for any matching XMPP users."
+msgstr "Užpildykite vieną ar daugiau laukų XMPP vartotojų paieškai."
+
+msgid "Email Address"
+msgstr "El. pašto adresas"
+
+msgid "Search for XMPP users"
+msgstr "Ieškoti XMPP vartotojų"
+
+#. "Search"
+msgid "Search"
+msgstr "Ieškoti"
+
+msgid "Invalid Directory"
+msgstr "Neteisingas katalogas"
+
+msgid "Enter a User Directory"
+msgstr "Įveskite vartotojų katalogą"
+
+msgid "Select a user directory to search"
+msgstr "Pasirinkite vartotojų katalogą paieškai"
+
+msgid "Search Directory"
+msgstr "Paieškos katalogas"
+
+msgid "_Room:"
+msgstr "Kamba_rys:"
+
+msgid "_Server:"
+msgstr "_Serveris:"
+
+msgid "_Handle:"
+msgstr "Ra_nkenėlė:"
+
+#, c-format
+msgid "%s is not a valid room name"
+msgstr "%s yra neteisingas kambario pavadinimas"
+
+msgid "Invalid Room Name"
+msgstr "Neteisingas kambario pavadinimas"
+
+#, c-format
+msgid "%s is not a valid server name"
+msgstr "%s yra neteisingas serverio pavadinimas"
+
+msgid "Invalid Server Name"
+msgstr "Neteisingas serverio pavadinimas"
+
+#, c-format
+msgid "%s is not a valid room handle"
+msgstr "%s yra neteisinga kambario rankenėlė"
+
+msgid "Invalid Room Handle"
+msgstr "Neteisinga kambario rankenėlė"
+
+msgid "Configuration error"
+msgstr "Konfigūracijos klaida"
+
+msgid "Unable to configure"
+msgstr "Negalima konfigūruoti"
+
+msgid "Room Configuration Error"
+msgstr "Kambario konfigūracijos klaida"
+
+msgid "This room is not capable of being configured"
+msgstr "Šis kambarys neturi konfigūravimo galimybės"
+
+msgid "Registration error"
+msgstr "Registracijos klaida"
+
+msgid "Nick changing not supported in non-MUC chatrooms"
+msgstr "Ne MUC kambariuose vardo keitimas nėra palaikomas"
+
+msgid "Error retrieving room list"
+msgstr "Kambarių sąrašo gavimo klaida"
+
+msgid "Invalid Server"
+msgstr "Neteisingas serveris"
+
+msgid "Enter a Conference Server"
+msgstr "Įveskite konferencijų serverį"
+
+msgid "Select a conference server to query"
+msgstr "Pasirinkite konferencijų serverį užklausai"
+
+msgid "Find Rooms"
+msgstr "Rasti kambarius"
+
+msgid "You require encryption, but it is not available on this server."
+msgstr "Jūs reikalaujate šifravimo, bet jo šis serveris nesiūlo."
+
+msgid "Ping timeout"
+msgstr "Baigėsi skimbtelėjimo laukimo laikas"
+
+msgid "Read Error"
+msgstr "Skaitymo klaida"
+
+#, c-format
+msgid ""
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
+msgstr ""
+
+msgid "Invalid XMPP ID"
+msgstr "Neteisingas XMPP ID"
+
+msgid "Invalid XMPP ID. Domain must be set."
+msgstr "Neteisingas XMPP ID. Sritis privalo būti nustatyta."
+
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Nepavyko prisijungti prie serverio."
+
+#, c-format
+msgid "Registration of %s@%s successful"
+msgstr "%s@%s registracija sėkminga"
+
+#, c-format
+msgid "Registration to %s successful"
+msgstr "Registracija prie %s sėkminga"
+
+msgid "Registration Successful"
+msgstr "Sėkminga registracija"
+
+msgid "Registration Failed"
+msgstr "Registracija nepavyko"
+
+#, c-format
+msgid "Registration from %s successfully removed"
+msgstr "Sėkmingai išsiregistruota iš %s"
+
+msgid "Unregistration Successful"
+msgstr "Sėkmingas išsiregistravimas"
+
+msgid "Unregistration Failed"
+msgstr "Išsiregistravimas nepavyko"
+
+msgid "Already Registered"
+msgstr "Jau registruota"
+
+msgid "State"
+msgstr "Valstija"
+
+msgid "Postal code"
+msgstr "Pašto indeksas"
+
+msgid "Phone"
+msgstr "Telefonas"
+
+msgid "Date"
+msgstr "Data"
+
+msgid "Unregister"
+msgstr "Išsiregistruoti"
+
+msgid ""
+"Please fill out the information below to change your account registration."
+msgstr ""
+"Jūsų paskyros registracijos keitimui prašome įvesti informaciją žemiau."
+
+msgid "Please fill out the information below to register your new account."
+msgstr "Jūsų naujo abonento registravimui prašome įvesti informaciją žemiau."
+
+msgid "Register New XMPP Account"
+msgstr "Registruoti naują XMPP abonentą"
+
+msgid "Register"
+msgstr "Registruotis"
+
+#, c-format
+msgid "Change Account Registration at %s"
+msgstr "Pakeisti paskyros %s registraciją"
+
+#, c-format
+msgid "Register New Account at %s"
+msgstr "Registruoti naują paskyrą %s"
+
+msgid "Change Registration"
+msgstr "Pakeisti registraciją"
+
+msgid "Error unregistering account"
+msgstr "Paskyros išregistravimo klaida"
+
+msgid "Account successfully unregistered"
+msgstr "Paskyra sėkmingai išregistruota"
+
+msgid "Initializing Stream"
+msgstr "Inicializuojamas duomenų srautas"
+
+msgid "Initializing SSL/TLS"
+msgstr "Inicializuojama SSL/TLS"
+
+msgid "Authenticating"
+msgstr "Nustatoma tapatybė"
+
+msgid "Re-initializing Stream"
+msgstr "Iš naujo inicializuojamas duomenų srautas"
+
+msgid "Server doesn't support blocking"
+msgstr "Serveris nepalaiko blokavimo"
+
+msgid "Not Authorized"
+msgstr "Prieiga nesuteikta"
+
+msgid "Mood"
+msgstr "Nuotaika"
+
+msgid "Now Listening"
+msgstr "Dabar klausosi"
+
+msgid "Both"
+msgstr "abipusė"
+
+msgid "From (To pending)"
+msgstr "patvirtinta Jūsų, laukiama bičiulio patvirtinimo"
+
+msgid "From"
+msgstr "Iš"
+
+msgid "To"
+msgstr "bičiulio patvirtinta"
+
+msgid "None (To pending)"
+msgstr "Jokia (laukiama patvirtinimo iš bičiulio)"
+
+msgid "None"
+msgstr "niekaip"
+
+msgid "Subscription"
+msgstr "Registracija"
+
+msgid "Mood Text"
+msgstr "Nuotaikos tekstas"
+
+msgid "Allow Buzz"
+msgstr "Leisti zyzimus"
+
+msgid "Tune Artist"
+msgstr "Dainos atlikėjas"
+
+msgid "Tune Title"
+msgstr "Dainos pavadinimas"
+
+msgid "Tune Album"
+msgstr "Dainos albumas"
+
+msgid "Tune Genre"
+msgstr "Dainos žanras"
+
+msgid "Tune Comment"
+msgstr "Dainos komentaras"
+
+msgid "Tune Track"
+msgstr "Dainos takelis"
+
+msgid "Tune Time"
+msgstr "Dainos laikas"
+
+msgid "Tune Year"
+msgstr "Dainos metai"
+
+msgid "Tune URL"
+msgstr "Dainos URL"
+
+msgid "Password Changed"
+msgstr "Slaptažodis pakeistas"
+
+msgid "Your password has been changed."
+msgstr "Jūsų slaptažodis pakeistas."
+
+msgid "Error changing password"
+msgstr "Slaptažodžio keitimo klaida"
+
+msgid "Password (again)"
+msgstr "Pakartotas slaptažodis"
+
+msgid "Change XMPP Password"
+msgstr "Pakeiskite XMPP slaptažodį"
+
+msgid "Please enter your new password"
+msgstr "Prašome įvesti Jūsų naują slaptažodį"
+
+msgid "Set User Info..."
+msgstr "Nustatyti vartotojo informaciją..."
+
+#. if (js->protocol_options & CHANGE_PASSWORD) {
+msgid "Change Password..."
+msgstr "Pakeisti slaptažodį..."
+
+#. }
+msgid "Search for Users..."
+msgstr "Ieškoti vartotojų..."
+
+msgid "Bad Request"
+msgstr "Bloga užklausa"
+
+msgid "Conflict"
+msgstr "Konfliktas"
+
+msgid "Feature Not Implemented"
+msgstr "Funkcija neįgyvendinta"
+
+msgid "Forbidden"
+msgstr "Uždrausta"
+
+msgid "Gone"
+msgstr "Dingo"
+
+msgid "Internal Server Error"
+msgstr "Vidinė serverio klaida"
+
+msgid "Item Not Found"
+msgstr "Nerastas elementas"
+
+msgid "Malformed XMPP ID"
+msgstr "Neteisingai suformuotas XMPP ID"
+
+msgid "Not Acceptable"
+msgstr "Nepriimtina"
+
+msgid "Not Allowed"
+msgstr "Neleistina"
+
+msgid "Payment Required"
+msgstr "Reikalingas apmokėjimas"
+
+msgid "Recipient Unavailable"
+msgstr "Gavėjas neprieinamas"
+
+msgid "Registration Required"
+msgstr "Rekalinga registracija"
+
+msgid "Remote Server Not Found"
+msgstr "Nuotolinis serveris nerastas"
+
+msgid "Remote Server Timeout"
+msgstr "Nuotolinio serverio laukimo laikas baigėsi"
+
+msgid "Server Overloaded"
+msgstr "Serveris perkrautas"
+
+msgid "Service Unavailable"
+msgstr "Paslauga neteikiama"
+
+msgid "Subscription Required"
+msgstr "Reikalinga registracija"
+
+msgid "Unexpected Request"
+msgstr "Nelaukta užklausa"
+
+msgid "Authorization Aborted"
+msgstr "Prieigos suteikimas nutrauktas"
+
+msgid "Incorrect encoding in authorization"
+msgstr "Neteisinga koduotė prieigos suteikime"
+
+msgid "Invalid authzid"
+msgstr "Neteisingas prieigos suteikimo identifikatorius"
+
+msgid "Invalid Authorization Mechanism"
+msgstr "Neteisingas prieigos suteikimo mechanizmas"
+
+msgid "Authorization mechanism too weak"
+msgstr "Prieigos suteikimo mechanizmas per silpnas"
+
+msgid "Temporary Authentication Failure"
+msgstr "Laikina prieigos suteikimo nesekmė"
+
+msgid "Authentication Failure"
+msgstr "Prieigos suteikimo nesekmė"
+
+msgid "Bad Format"
+msgstr "Blogas formatas"
+
+msgid "Bad Namespace Prefix"
+msgstr "Blogas vardų erdvės priešdėlis"
+
+msgid "Resource Conflict"
+msgstr "Išteklių konfliktas"
+
+msgid "Connection Timeout"
+msgstr "Jungties laukimo laikas baigėsi"
+
+msgid "Host Gone"
+msgstr "Dingo mazgas"
+
+msgid "Host Unknown"
+msgstr "Nežinomas mazgas"
+
+msgid "Improper Addressing"
+msgstr "Neteisingas adresavimas"
+
+msgid "Invalid ID"
+msgstr "Neteisingas ID"
+
+msgid "Invalid Namespace"
+msgstr "Neteisinga vardų erdvė"
+
+msgid "Invalid XML"
+msgstr "Neteisingas XML"
+
+msgid "Non-matching Hosts"
+msgstr "Neatitinkantys mazgai"
+
+msgid "Policy Violation"
+msgstr "Taisyklių pažeidimas"
+
+msgid "Remote Connection Failed"
+msgstr "Nuotolinė jungtis nepavyko"
+
+msgid "Resource Constraint"
+msgstr "Išteklių apribojimas"
+
+msgid "Restricted XML"
+msgstr "Apribotas XML"
+
+msgid "See Other Host"
+msgstr "Aplankykite kitą mazgą"
+
+msgid "System Shutdown"
+msgstr "Sistemos sustabdymas"
+
+msgid "Undefined Condition"
+msgstr "Neapibrėžta salyga"
+
+msgid "Unsupported Encoding"
+msgstr "Nepalaikoma koduotė"
+
+msgid "Unsupported Stanza Type"
+msgstr "Nepalaikomas strofos tipas"
+
+msgid "Unsupported Version"
+msgstr "Nepalaikoma versija"
+
+msgid "XML Not Well Formed"
+msgstr "Neteisingai suformuotas XML"
+
+msgid "Stream Error"
+msgstr "Duomenų srauto klaida"
+
+#, c-format
+msgid "Unable to ban user %s"
+msgstr "Negalima uždrausti vartotojui %s prisijungti prie kanalo"
+
+#, c-format
+msgid "Unknown affiliation: \"%s\""
+msgstr "Nežinomas statusas: „%s“"
+
+#, c-format
+msgid "Unable to affiliate user %s as \"%s\""
+msgstr "Vartotojui %s negalima priskirti statuso „%s“"
+
+#, c-format
+msgid "Unknown role: \"%s\""
+msgstr "Nežinomas vaidmuo: „%s“"
+
# Data is assumed to be the destination sn
-#, c-format
-msgid "Unable to set role \"%s\" for user: %s"
-msgstr "Nepavyko nustatyti vaidmens „%s“ vartotojui: %s"
-
-#, c-format
-msgid "Unable to kick user %s"
-msgstr "Negalima išspirti vartotojo %s"
-
-#, c-format
-msgid "Unable to ping user %s"
-msgstr "Nepavyko skimbtelėti naudotojui %s"
-
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
-msgstr "Negalima pazyzti, nes nieko nežinoma apie naudotoją %s."
-
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
-msgstr "Negalima pazyzti, nes naudotojas %s gali būti neprisijungęs."
-
-#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
-msgstr "Nepavyko pazyzti, nes naudotojas %s to nepalaiko."
-
-#. Yahoo only supports one attention command: the 'buzz'.
-#. This is index number YAHOO_BUZZ.
-msgid "Buzz"
-msgstr "Zvimbt"
-
-#, c-format
-msgid "%s has buzzed you!"
-msgstr "%s jums pazyzė!"
-
-#, c-format
-msgid "Buzzing %s..."
-msgstr "Zyziama %s..."
-
-msgid "config: Configure a chat room."
-msgstr "config: konfigūruoti pokalbių kambarį."
-
-msgid "configure: Configure a chat room."
-msgstr "configure: konfigūruoti pokalbių kambarį."
-
-msgid "part [room]: Leave the room."
-msgstr "part [kambarys]: palikti kambarį."
-
-msgid "register: Register with a chat room."
-msgstr "register: prisiregistruoti pokalbių kambaryje."
-
-msgid "topic [new topic]: View or change the topic."
-msgstr "topic [nauja tema]: žiūrėti arba pakeisti temą."
-
-msgid "ban &lt;user&gt; [reason]: Ban a user from the room."
-msgstr ""
-"ban &lt;vartotojas&gt; [priežastis]: uždrausti vartotojui ateiti į kambarį."
-
-msgid ""
-"affiliate &lt;user&gt; &lt;owner|admin|member|outcast|none&gt;: Set a user's "
-"affiliation with the room."
-msgstr ""
-"affilliate &lt;vartotojas;&gt; &lt;owner|admin|member|outcast|none&gt;: "
-"nustatyti vartotojo statusą kambaryje."
-
-msgid ""
-"role &lt;user&gt; &lt;moderator|participant|visitor|none&gt;: Set a user's "
-"role in the room."
-msgstr ""
-"role &lt;vartotojas&gt; &lt;moderator|participant|visitor|none&gt;: "
-"nustatyti vartotojo vaidmenį kambaryje."
-
-msgid "invite &lt;user&gt; [message]: Invite a user to the room."
-msgstr "invite &lt;vartotojas&gt; [žinutė]: pakviesti vartotoją į kambarį."
-
-msgid "join: &lt;room&gt; [password]: Join a chat on this server."
-msgstr ""
-"join: &lt;kambarys&gt; [slaptažodis]: prisijungti prie pokalbių kambario "
-"šiame serveryje."
-
-msgid "kick &lt;user&gt; [reason]: Kick a user from the room."
-msgstr "kick &lt;vartotojas&gt; [priežastis]: išspirti vartotoją iš kambario."
-
-msgid ""
-"msg &lt;user&gt; &lt;message&gt;: Send a private message to another user."
-msgstr ""
-"msg &lt;vartotojas&gt; &lt;žinutė&gt;: nusiųsti asmeninę žinutę kitam "
-"vartotojui."
-
-msgid "ping &lt;jid&gt;:\tPing a user/component/server."
-msgstr ""
-"ping &lt;jid&gt;: pasignalizuoti naudotojui, komponentui arba "
-"serveriui."
-
-msgid "buzz: Buzz a user to get their attention"
-msgstr "buzz: pazyzti kontaktui, kad atkreipti jo dėmesį"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "XMPP Protocol Plugin"
-msgstr "XMPP protokolo papildinys"
-
-#. Translators: 'domain' is used here in the context of Internet domains, e.g. pidgin.im
-msgid "Domain"
-msgstr "Sritis"
-
-msgid "Require SSL/TLS"
-msgstr "Reikalauti SSL/TLS"
-
-msgid "Force old (port 5223) SSL"
-msgstr "Priverstinai naudoti seną 5223 prievado SSL"
-
-msgid "Allow plaintext auth over unencrypted streams"
-msgstr "Leisti tapatybės nustatymą grynu tekstu nekoduojamame duomenų sraute"
-
-msgid "Connect port"
-msgstr "Jungties prievadas"
-
-#. TODO: default to automatically try different ports. Make the user be
-#. * able to set the first port to try (like LastConnectedPort in Windows client).
-#. Account options
-msgid "Connect server"
-msgstr "Prisijungimo serveris"
-
-msgid "File transfer proxies"
-msgstr "Failų perdavimo tarpininkaujantys serveriai"
-
-#. this should probably be part of global smiley theme settings later on,
-#. shared with MSN
-msgid "Show Custom Smileys"
-msgstr "Rodyti nestandartines šypsenėles"
-
-#, c-format
-msgid "%s has left the conversation."
-msgstr "%s paliko pokalbį."
-
-#, c-format
-msgid "Message from %s"
-msgstr "Žinutė nuo %s"
-
-#, c-format
-msgid "%s has set the topic to: %s"
-msgstr "%s pakeitė temą į: %s"
-
-#, c-format
-msgid "The topic is: %s"
-msgstr "Tema: %s"
-
-#, c-format
-msgid "Message delivery to %s failed: %s"
-msgstr "Žinutės pristatymas gavėjui %s nepavyko: %s"
-
-msgid "XMPP Message Error"
-msgstr "XMPP pranešimo klaida"
-
-#, c-format
-msgid "(Code %s)"
-msgstr "(Kodas %s)"
-
-msgid "XML Parse error"
-msgstr "XML sintaksinės analizės klaida"
-
-msgid "Unknown Error in presence"
-msgstr "Nežinoma būsenos klaida"
-
-msgid "Create New Room"
-msgstr "Sukurti naują kambarį"
-
-msgid ""
-"You are creating a new room. Would you like to configure it, or accept the "
-"default settings?"
-msgstr ""
-"Jūs kuriate naują kambarį. Ar norėtumėte jį sukonfigūruoti, ar priimti "
-"numatytąsias nuostatas?"
-
-msgid "_Configure Room"
-msgstr "_Konfigūruoti kambarį"
-
-msgid "_Accept Defaults"
-msgstr "_Priimti numatytąsias nuostatas"
-
-#, c-format
-msgid "Error joining chat %s"
-msgstr "Prisijungimo prie pokalbio %s klaida"
-
-#, c-format
-msgid "Error in chat %s"
-msgstr "Klaida pokalbyje %s"
-
-#, c-format
-msgid "Unable to send file to %s, user does not support file transfers"
-msgstr ""
-"Negalima siųsti failo vartotojui %s, nes jo kliento programa nepalaiko failų "
-"perdavimo"
-
-msgid "File Send Failed"
-msgstr "Failo siuntimas nepavyko"
-
-#, c-format
-msgid "Unable to send file to %s, invalid JID"
-msgstr "Negalima nusiųsti failo vartotojui %s, nes neteisingas JID"
-
-#, c-format
-msgid "Unable to send file to %s, user is not online"
-msgstr "Negalima nusiųsti failo vartotojui %s, nes jis neprisijungęs"
-
-#, c-format
-msgid "Unable to send file to %s, not subscribed to user presence"
-msgstr ""
-"Negalima siųsti failo vartotojui %s, nes jis neįtrauktas į bičiulių sąrašą"
-
-#, c-format
-msgid "Please select the resource of %s to which you would like to send a file"
-msgstr "Parinkite %s išteklių, į kurį norite nusiųsti failą"
-
-msgid "Select a Resource"
-msgstr "Parinkite išteklių"
-
-msgid "Edit User Mood"
-msgstr "Nustatyti vartotojo nuotaiką"
-
-msgid "Please select your mood from the list."
-msgstr "Pasirinkite savo nuotaiką iš sąrašo."
-
-msgid "Set"
-msgstr "Nustatyti"
-
-msgid "Set Mood..."
-msgstr "Nustatyti nuotaiką..."
-
-msgid "Set User Nickname"
-msgstr "Nustatyti naudotojo vardą"
-
-msgid "Please specify a new nickname for you."
-msgstr "Prašau įvesti naują savo vardą."
-
-msgid ""
-"This information is visible to all contacts on your contact list, so choose "
-"something appropriate."
-msgstr ""
-"Ši informacija matoma visiems naudotojams jūsų kontaktų sąraše, todėl "
-"pasirinkite ką nors tinkamo."
-
-msgid "Set Nickname..."
-msgstr "Nustatyti vardą..."
-
-msgid "Actions"
-msgstr "Veiksmai"
-
-msgid "Select an action"
-msgstr "Pasirinkite veiksmą"
-
-#. only notify the user about problems adding to the friends list
-#. * maybe we should do something else for other lists, but it probably
-#. * won't cause too many problems if we just ignore it
-#, c-format
-msgid "Unable to add \"%s\"."
-msgstr "Negalima pridėti \"%s\"."
-
-msgid "Buddy Add error"
-msgstr "Bičiulio pridėjimo klaida"
-
-msgid "The username specified does not exist."
-msgstr "Nurodyto naudotojo vardo nėra."
-
-#, c-format
-msgid "Buddy list synchronization issue in %s (%s)"
-msgstr "Bičiulių sąrašo suvienodinimo klaida vartotojui %s (%s)"
-
-#, c-format
-msgid ""
-"%s on the local list is inside the group \"%s\" but not on the server list. "
-"Do you want this buddy to be added?"
-msgstr ""
-"Vietiniame sąraše bičiulis %s yra \"%s\" grupėje, bet serverio sąraše jo "
-"nėra. Ar norite įtraukti šį bičiulį į serverio sąrašą?"
-
-#, c-format
-msgid ""
-"%s is on the local list but not on the server list. Do you want this buddy "
-"to be added?"
-msgstr ""
-"Bičiulis %s yra vietiniame sąraše, tačiau jo nėra serverio sąraše. Ar "
-"norite įtraukti šį bičiulį į serverio sąrašą?"
-
-#, c-format
-msgid "Unable to parse message"
-msgstr "Negalima išanalizuoti pranešimo"
-
-#, c-format
-msgid "Syntax Error (probably a client bug)"
-msgstr "Sintaksės klaida (greičiausiai Pidgin riktas)"
-
-#, c-format
-msgid "Invalid email address"
-msgstr "Neteisingas el. pašto adresas"
-
-#, c-format
-msgid "User does not exist"
-msgstr "Vartotojas neegzistuoja"
-
-#, c-format
-msgid "Fully qualified domain name missing"
-msgstr "Trūksta viso srities vardo"
-
-#, c-format
-msgid "Already logged in"
-msgstr "Jau prisijungęs"
-
-#, c-format
-msgid "Invalid username"
-msgstr "Neteisingas vardas"
-
-#, c-format
-msgid "Invalid friendly name"
-msgstr "Neteisingas patogusis vardas"
-
-#, c-format
-msgid "List full"
-msgstr "Sąrašas pilnas"
-
-#, c-format
-msgid "Already there"
-msgstr "Jau yra ten"
-
-#, c-format
-msgid "Not on list"
-msgstr "Sąraše nėra"
-
-#, c-format
-msgid "User is offline"
-msgstr "Vartotojas atsijungęs"
-
-#, c-format
-msgid "Already in the mode"
-msgstr "Jau yra būsenoje"
-
-#, c-format
-msgid "Already in opposite list"
-msgstr "Jau yra priešingame sąraše"
-
-#, c-format
-msgid "Too many groups"
-msgstr "Per daug grupių"
-
-#, c-format
-msgid "Invalid group"
-msgstr "Neteisinga grupė"
-
-#, c-format
-msgid "User not in group"
-msgstr "Vartotojo nėra grupėje"
-
-#, c-format
-msgid "Group name too long"
-msgstr "Grupės pavadinimas per ilgas"
-
-#, c-format
-msgid "Cannot remove group zero"
-msgstr "Negalima pašalinti nulinės grupės"
-
-#, c-format
-msgid "Tried to add a user to a group that doesn't exist"
-msgstr "Bandyta įtraukti vartotoją į neegzistuojančią grupę"
-
-#, c-format
-msgid "Switchboard failed"
-msgstr "Komutatoriaus klaida"
-
-#, c-format
-msgid "Notify transfer failed"
-msgstr "Nepavyko perduoti informavimo"
-
-#, c-format
-msgid "Required fields missing"
-msgstr "Trūksta reikalingų laukų"
-
-#, c-format
-msgid "Too many hits to a FND"
-msgstr "Per daug pataikymų į FND"
-
-#, c-format
-msgid "Not logged in"
-msgstr "Neprisijungęs"
-
-#, c-format
-msgid "Service temporarily unavailable"
-msgstr "Tarnyba laikinai neprieinama"
-
-#, c-format
-msgid "Database server error"
-msgstr "Duomenų bazės serverio klaida"
-
-#, c-format
-msgid "Command disabled"
-msgstr "Komanda išjungta"
-
-#, c-format
-msgid "File operation error"
-msgstr "Failo operacijos klaida"
-
-#, c-format
-msgid "Memory allocation error"
-msgstr "Atminties paskyrimo klaida"
-
-#, c-format
-msgid "Wrong CHL value sent to server"
-msgstr "Serveriui nusiųsta bloga CHL reikšmė"
-
-#, c-format
-msgid "Server busy"
-msgstr "Serveris užimtas"
-
-#, c-format
-msgid "Server unavailable"
-msgstr "Serveris neprieinamas"
-
+#, c-format
+msgid "Unable to set role \"%s\" for user: %s"
+msgstr "Nepavyko nustatyti vaidmens „%s“ vartotojui: %s"
+
+#, c-format
+msgid "Unable to kick user %s"
+msgstr "Negalima išspirti vartotojo %s"
+
+#, c-format
+msgid "Unable to ping user %s"
+msgstr "Nepavyko skimbtelėti naudotojui %s"
+
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
+msgstr "Negalima pazyzti, nes nieko nežinoma apie naudotoją %s."
+
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
+msgstr "Negalima pazyzti, nes naudotojas %s gali būti neprisijungęs."
+
+#, fuzzy, c-format
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
+msgstr "Nepavyko pazyzti, nes naudotojas %s to nepalaiko."
+
+#, c-format
+msgid "Buzzing %s..."
+msgstr "Zyziama %s..."
+
+#. Yahoo only supports one attention command: the 'buzz'.
+#. This is index number YAHOO_BUZZ.
+msgid "Buzz"
+msgstr "Zvimbt"
+
+#, c-format
+msgid "%s has buzzed you!"
+msgstr "%s jums pazyzė!"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "Negalima nusiųsti failo vartotojui %s, nes neteisingas JID"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "Negalima nusiųsti failo vartotojui %s, nes jis neprisijungęs"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr ""
+"Negalima siųsti failo vartotojui %s, nes jis neįtrauktas į bičiulių sąrašą"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "Registracija nepavyko"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "Parinkite %s išteklių, į kurį norite nusiųsti failą"
+
+msgid "Select a Resource"
+msgstr "Parinkite išteklių"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "_Pradėti pokalbį"
+
+msgid "config: Configure a chat room."
+msgstr "config: konfigūruoti pokalbių kambarį."
+
+msgid "configure: Configure a chat room."
+msgstr "configure: konfigūruoti pokalbių kambarį."
+
+msgid "part [room]: Leave the room."
+msgstr "part [kambarys]: palikti kambarį."
+
+msgid "register: Register with a chat room."
+msgstr "register: prisiregistruoti pokalbių kambaryje."
+
+msgid "topic [new topic]: View or change the topic."
+msgstr "topic [nauja tema]: žiūrėti arba pakeisti temą."
+
+msgid "ban &lt;user&gt; [reason]: Ban a user from the room."
+msgstr ""
+"ban &lt;vartotojas&gt; [priežastis]: uždrausti vartotojui ateiti į kambarį."
+
+msgid ""
+"affiliate &lt;user&gt; &lt;owner|admin|member|outcast|none&gt;: Set a user's "
+"affiliation with the room."
+msgstr ""
+"affilliate &lt;vartotojas;&gt; &lt;owner|admin|member|outcast|none&gt;: "
+"nustatyti vartotojo statusą kambaryje."
+
+msgid ""
+"role &lt;user&gt; &lt;moderator|participant|visitor|none&gt;: Set a user's "
+"role in the room."
+msgstr ""
+"role &lt;vartotojas&gt; &lt;moderator|participant|visitor|none&gt;: "
+"nustatyti vartotojo vaidmenį kambaryje."
+
+msgid "invite &lt;user&gt; [message]: Invite a user to the room."
+msgstr "invite &lt;vartotojas&gt; [žinutė]: pakviesti vartotoją į kambarį."
+
+msgid "join: &lt;room&gt; [password]: Join a chat on this server."
+msgstr ""
+"join: &lt;kambarys&gt; [slaptažodis]: prisijungti prie pokalbių kambario "
+"šiame serveryje."
+
+msgid "kick &lt;user&gt; [reason]: Kick a user from the room."
+msgstr "kick &lt;vartotojas&gt; [priežastis]: išspirti vartotoją iš kambario."
+
+msgid ""
+"msg &lt;user&gt; &lt;message&gt;: Send a private message to another user."
+msgstr ""
+"msg &lt;vartotojas&gt; &lt;žinutė&gt;: nusiųsti asmeninę žinutę kitam "
+"vartotojui."
+
+msgid "ping &lt;jid&gt;:\tPing a user/component/server."
+msgstr ""
+"ping &lt;jid&gt;: pasignalizuoti naudotojui, komponentui arba "
+"serveriui."
+
+msgid "buzz: Buzz a user to get their attention"
+msgstr "buzz: pazyzti kontaktui, kad atkreipti jo dėmesį"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "XMPP Protocol Plugin"
+msgstr "XMPP protokolo papildinys"
+
+#. Translators: 'domain' is used here in the context of Internet domains, e.g. pidgin.im
+msgid "Domain"
+msgstr "Sritis"
+
+msgid "Require SSL/TLS"
+msgstr "Reikalauti SSL/TLS"
+
+msgid "Force old (port 5223) SSL"
+msgstr "Priverstinai naudoti seną 5223 prievado SSL"
+
+msgid "Allow plaintext auth over unencrypted streams"
+msgstr "Leisti tapatybės nustatymą grynu tekstu nekoduojamame duomenų sraute"
+
+msgid "Connect port"
+msgstr "Jungties prievadas"
+
+#. TODO: default to automatically try different ports. Make the user be
+#. * able to set the first port to try (like LastConnectedPort in Windows client).
+#. Account options
+msgid "Connect server"
+msgstr "Prisijungimo serveris"
+
+msgid "File transfer proxies"
+msgstr "Failų perdavimo tarpininkaujantys serveriai"
+
+#. this should probably be part of global smiley theme settings later on,
+#. shared with MSN
+msgid "Show Custom Smileys"
+msgstr "Rodyti nestandartines šypsenėles"
+
+#, c-format
+msgid "%s has left the conversation."
+msgstr "%s paliko pokalbį."
+
+#, c-format
+msgid "Message from %s"
+msgstr "Žinutė nuo %s"
+
+#, c-format
+msgid "%s has set the topic to: %s"
+msgstr "%s pakeitė temą į: %s"
+
+#, c-format
+msgid "The topic is: %s"
+msgstr "Tema: %s"
+
+#, c-format
+msgid "Message delivery to %s failed: %s"
+msgstr "Žinutės pristatymas gavėjui %s nepavyko: %s"
+
+msgid "XMPP Message Error"
+msgstr "XMPP pranešimo klaida"
+
+#, c-format
+msgid "(Code %s)"
+msgstr "(Kodas %s)"
+
+msgid "XML Parse error"
+msgstr "XML sintaksinės analizės klaida"
+
+msgid "Unknown Error in presence"
+msgstr "Nežinoma būsenos klaida"
+
+msgid "Create New Room"
+msgstr "Sukurti naują kambarį"
+
+msgid ""
+"You are creating a new room. Would you like to configure it, or accept the "
+"default settings?"
+msgstr ""
+"Jūs kuriate naują kambarį. Ar norėtumėte jį sukonfigūruoti, ar priimti "
+"numatytąsias nuostatas?"
+
+msgid "_Configure Room"
+msgstr "_Konfigūruoti kambarį"
+
+msgid "_Accept Defaults"
+msgstr "_Priimti numatytąsias nuostatas"
+
+#, c-format
+msgid "Error joining chat %s"
+msgstr "Prisijungimo prie pokalbio %s klaida"
+
+#, c-format
+msgid "Error in chat %s"
+msgstr "Klaida pokalbyje %s"
+
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "Failo atvėrimo metu įvyko klaida."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "Failo perdavimas nepavyko"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Nepavyko atverti failo „%s“: %s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
+#, c-format
+msgid "Unable to send file to %s, user does not support file transfers"
+msgstr ""
+"Negalima siųsti failo vartotojui %s, nes jo kliento programa nepalaiko failų "
+"perdavimo"
+
+msgid "File Send Failed"
+msgstr "Failo siuntimas nepavyko"
+
+#, c-format
+msgid "Unable to send file to %s, invalid JID"
+msgstr "Negalima nusiųsti failo vartotojui %s, nes neteisingas JID"
+
+#, c-format
+msgid "Unable to send file to %s, user is not online"
+msgstr "Negalima nusiųsti failo vartotojui %s, nes jis neprisijungęs"
+
+#, c-format
+msgid "Unable to send file to %s, not subscribed to user presence"
+msgstr ""
+"Negalima siųsti failo vartotojui %s, nes jis neįtrauktas į bičiulių sąrašą"
+
+#, c-format
+msgid "Please select the resource of %s to which you would like to send a file"
+msgstr "Parinkite %s išteklių, į kurį norite nusiųsti failą"
+
+msgid "Edit User Mood"
+msgstr "Nustatyti vartotojo nuotaiką"
+
+msgid "Please select your mood from the list."
+msgstr "Pasirinkite savo nuotaiką iš sąrašo."
+
+msgid "Set"
+msgstr "Nustatyti"
+
+msgid "Set Mood..."
+msgstr "Nustatyti nuotaiką..."
+
+msgid "Set User Nickname"
+msgstr "Nustatyti naudotojo vardą"
+
+msgid "Please specify a new nickname for you."
+msgstr "Prašau įvesti naują savo vardą."
+
+msgid ""
+"This information is visible to all contacts on your contact list, so choose "
+"something appropriate."
+msgstr ""
+"Ši informacija matoma visiems naudotojams jūsų kontaktų sąraše, todėl "
+"pasirinkite ką nors tinkamo."
+
+msgid "Set Nickname..."
+msgstr "Nustatyti vardą..."
+
+msgid "Actions"
+msgstr "Veiksmai"
+
+msgid "Select an action"
+msgstr "Pasirinkite veiksmą"
+
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr "Negalima pridėti \"%s\"."
+
+msgid "Buddy Add error"
+msgstr "Bičiulio pridėjimo klaida"
+
+msgid "The username specified does not exist."
+msgstr "Nurodyto naudotojo vardo nėra."
+
+#, c-format
+msgid "Buddy list synchronization issue in %s (%s)"
+msgstr "Bičiulių sąrašo suvienodinimo klaida vartotojui %s (%s)"
+
+#, c-format
+msgid ""
+"%s on the local list is inside the group \"%s\" but not on the server list. "
+"Do you want this buddy to be added?"
+msgstr ""
+"Vietiniame sąraše bičiulis %s yra \"%s\" grupėje, bet serverio sąraše jo "
+"nėra. Ar norite įtraukti šį bičiulį į serverio sąrašą?"
+
+#, c-format
+msgid ""
+"%s is on the local list but not on the server list. Do you want this buddy "
+"to be added?"
+msgstr ""
+"Bičiulis %s yra vietiniame sąraše, tačiau jo nėra serverio sąraše. Ar "
+"norite įtraukti šį bičiulį į serverio sąrašą?"
+
+#, c-format
+msgid "Unable to parse message"
+msgstr "Negalima išanalizuoti pranešimo"
+
+#, c-format
+msgid "Syntax Error (probably a client bug)"
+msgstr "Sintaksės klaida (greičiausiai Pidgin riktas)"
+
+#, c-format
+msgid "Invalid email address"
+msgstr "Neteisingas el. pašto adresas"
+
+#, c-format
+msgid "User does not exist"
+msgstr "Vartotojas neegzistuoja"
+
+#, c-format
+msgid "Fully qualified domain name missing"
+msgstr "Trūksta viso srities vardo"
+
+#, c-format
+msgid "Already logged in"
+msgstr "Jau prisijungęs"
+
+#, c-format
+msgid "Invalid username"
+msgstr "Neteisingas vardas"
+
+#, c-format
+msgid "Invalid friendly name"
+msgstr "Neteisingas patogusis vardas"
+
+#, c-format
+msgid "List full"
+msgstr "Sąrašas pilnas"
+
+#, c-format
+msgid "Already there"
+msgstr "Jau yra ten"
+
+#, c-format
+msgid "Not on list"
+msgstr "Sąraše nėra"
+
+#, c-format
+msgid "User is offline"
+msgstr "Vartotojas atsijungęs"
+
+#, c-format
+msgid "Already in the mode"
+msgstr "Jau yra būsenoje"
+
+#, c-format
+msgid "Already in opposite list"
+msgstr "Jau yra priešingame sąraše"
+
+#, c-format
+msgid "Too many groups"
+msgstr "Per daug grupių"
+
+#, c-format
+msgid "Invalid group"
+msgstr "Neteisinga grupė"
+
+#, c-format
+msgid "User not in group"
+msgstr "Vartotojo nėra grupėje"
+
+#, c-format
+msgid "Group name too long"
+msgstr "Grupės pavadinimas per ilgas"
+
+#, c-format
+msgid "Cannot remove group zero"
+msgstr "Negalima pašalinti nulinės grupės"
+
+#, c-format
+msgid "Tried to add a user to a group that doesn't exist"
+msgstr "Bandyta įtraukti vartotoją į neegzistuojančią grupę"
+
+#, c-format
+msgid "Switchboard failed"
+msgstr "Komutatoriaus klaida"
+
+#, c-format
+msgid "Notify transfer failed"
+msgstr "Nepavyko perduoti informavimo"
+
+#, c-format
+msgid "Required fields missing"
+msgstr "Trūksta reikalingų laukų"
+
+#, c-format
+msgid "Too many hits to a FND"
+msgstr "Per daug pataikymų į FND"
+
+#, c-format
+msgid "Not logged in"
+msgstr "Neprisijungęs"
+
+#, c-format
+msgid "Service temporarily unavailable"
+msgstr "Tarnyba laikinai neprieinama"
+
+#, c-format
+msgid "Database server error"
+msgstr "Duomenų bazės serverio klaida"
+
+#, c-format
+msgid "Command disabled"
+msgstr "Komanda išjungta"
+
+#, c-format
+msgid "File operation error"
+msgstr "Failo operacijos klaida"
+
+#, c-format
+msgid "Memory allocation error"
+msgstr "Atminties paskyrimo klaida"
+
+#, c-format
+msgid "Wrong CHL value sent to server"
+msgstr "Serveriui nusiųsta bloga CHL reikšmė"
+
+#, c-format
+msgid "Server busy"
+msgstr "Serveris užimtas"
+
+#, c-format
+msgid "Server unavailable"
+msgstr "Serveris neprieinamas"
+
# Kaip išversti „peer“?
-#, c-format
-msgid "Peer notification server down"
-msgstr "Kitų vartotojų informavimo serveris neprieinamas"
-
-#, c-format
-msgid "Database connect error"
-msgstr "Prisijungimo prie duomenų bazės klaida"
-
-#, c-format
-msgid "Server is going down (abandon ship)"
-msgstr "Serveris išjungiamas (palikite laivą)"
-
-#, c-format
-msgid "Error creating connection"
-msgstr "Jungties kūrimo klaida"
-
-#, c-format
-msgid "CVR parameters are either unknown or not allowed"
-msgstr "CVR parametrai yra nežinomi arba neleistini"
-
-#, c-format
-msgid "Unable to write"
-msgstr "Negalima rašyti"
-
-#, c-format
-msgid "Session overload"
-msgstr "Seanso perkrova"
-
-#, c-format
-msgid "User is too active"
-msgstr "Vartotojas yra per daug aktyvus"
-
-#, c-format
-msgid "Too many sessions"
-msgstr "Per daug seansų"
-
-#, c-format
-msgid "Passport not verified"
-msgstr "Microsoft .NET pasas nepatikrintas"
-
-#, c-format
-msgid "Bad friend file"
-msgstr "Blogas draugų failas"
-
-#, c-format
-msgid "Not expected"
-msgstr "Netikėta"
-
-#, c-format
-msgid "Friendly name changes too rapidly"
-msgstr "Patogusis vardas keičiasi per dažnai"
-
-#, c-format
-msgid "Server too busy"
-msgstr "Serveris per daug užimtas"
-
-#, c-format
-msgid "Authentication failed"
-msgstr "Nepavyko nustatyti tapatybę"
-
-#, c-format
-msgid "Not allowed when offline"
-msgstr "Atsijungus neleidžiama"
-
-#, c-format
-msgid "Not accepting new users"
-msgstr "Nauji vartotojai nepriimami"
-
-#, c-format
-msgid "Kids Passport without parental consent"
-msgstr "Vaikiškas Microsoft .NET pasas be tėvų sutikimo"
-
-#, c-format
-msgid "Passport account not yet verified"
-msgstr "Microsoft .NET paso paskyra dar nepatikrinta"
-
-msgid "Passport account suspended"
-msgstr "Microsoft .NET paso paskyra suspenduota"
-
-#, c-format
-msgid "Bad ticket"
-msgstr "Blogas bilietas"
-
-#, c-format
-msgid "Unknown Error Code %d"
-msgstr "Nežinomas klaidos kodas %d"
-
-#, c-format
-msgid "MSN Error: %s\n"
-msgstr "MSN klaida: %s\n"
-
-msgid "Other Contacts"
-msgstr "Kiti kontaktai"
-
-msgid "Non-IM Contacts"
-msgstr "Kontaktai ne iš greitųjų žinučių tinklų"
-
-msgid "Nudge"
-msgstr "Bakstelėjimas"
-
-#, c-format
-msgid "%s has nudged you!"
-msgstr "%s bakstelėjo jums!"
-
-#, c-format
-msgid "Nudging %s..."
-msgstr "Bakstelėju %s..."
-
-msgid "Email Address..."
-msgstr "El. pašto adresas..."
-
-msgid "Your new MSN friendly name is too long."
-msgstr "Jūsų naujas patogusis MSN vardas yra per ilgas"
-
-msgid "Set your friendly name."
-msgstr "Nustatyti Jūsų patogųjį vardą."
-
-msgid "This is the name that other MSN buddies will see you as."
-msgstr "Tai yra vardas, kuriuo Jus matys kiti MSN bičiuliai."
-
-msgid "Set your home phone number."
-msgstr "Nustatyti Jūsų namų telefono numerį."
-
-msgid "Set your work phone number."
-msgstr "Nustatyti Jūsų darbo telefono numerį."
-
-msgid "Set your mobile phone number."
-msgstr "Nustatyti Jūsų mobilaus telefono numerį."
-
-msgid "Allow MSN Mobile pages?"
-msgstr "Ar leisti mobiliąsias MSN žinutes?"
-
-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 ""
-"Ar Jūs norite leisti ar neleisti asmenims Jūsų bičiulių sąraše siųsti Jums "
-"mobiliąsias MSN žinutes į Jūsų mobilųjį telefoną ar kitą mobilųjį įrenginį?"
-
-msgid "Allow"
-msgstr "Leisti"
-
-msgid "Disallow"
-msgstr "Neleisti"
-
-#, c-format
-msgid "Blocked Text for %s"
-msgstr "Blokuotas tekstas iš %s"
-
-msgid "No text is blocked for this account."
-msgstr "Šiai paskyrai blokuoto teksto nėra."
-
-#, c-format
-msgid ""
-"MSN servers are currently blocking the following regular expressions:<br/>%s"
-msgstr ""
-"MSN serveriai šiuo metu blokuojas šias reguliariuosius reiškinius:<br/>%s"
-
-msgid "This account does not have email enabled."
-msgstr "Ši paskyra neturi aktyvaus el. pašto adreso."
-
-msgid "Send a mobile message."
-msgstr "Nusiųsti mobiliąją žinutę"
-
-msgid "Page"
-msgstr "Siųsti"
-
-msgid "Playing a game"
-msgstr "Žaidžia žaidimą"
-
-msgid "Working"
-msgstr "Dirba"
-
-msgid "Has you"
-msgstr "Turi Jus"
-
-msgid "Home Phone Number"
-msgstr "Namų telefono numeris"
-
-msgid "Work Phone Number"
-msgstr "Darbo telefono numeris"
-
-msgid "Mobile Phone Number"
-msgstr "Mobilaus telefono numeris"
-
-msgid "Be Right Back"
-msgstr "tuoj pat grįš"
-
-msgid "Busy"
-msgstr "užimtas"
-
-msgid "On the Phone"
-msgstr "kalba telefonu"
-
-msgid "Out to Lunch"
-msgstr "išėjęs papietauti"
-
-#. primitive
-#. ID
-#. name - use default
-#. saveable
-#. should be user_settable some day
-#. independent
-msgid "Artist"
-msgstr "Dailininkas"
-
-msgid "Album"
-msgstr "Albumas"
-
-msgid "Game Title"
-msgstr "Žaidimo pavadinimas"
-
-msgid "Office Title"
-msgstr "Ofiso pavadinimas"
-
-msgid "Set Friendly Name..."
-msgstr "Nustatyti patogųjį vardą..."
-
-msgid "Set Home Phone Number..."
-msgstr "Nustatyti namų telefono numerį..."
-
-msgid "Set Work Phone Number..."
-msgstr "Nustatyti darbo telefono numerį..."
-
-msgid "Set Mobile Phone Number..."
-msgstr "Nustatyti mobilaus telefono numerį..."
-
-msgid "Enable/Disable Mobile Devices..."
-msgstr "Leisti arba neleisti mobiliuosius įrenginius..."
-
-msgid "Allow/Disallow Mobile Pages..."
-msgstr "Leisti arba neleisti mobiliąsias žinutes..."
-
-msgid "View Blocked Text..."
-msgstr "Žiūrėti užblokuotą tekstą..."
-
-msgid "Open Hotmail Inbox"
-msgstr "Atidaryti Hotmail pašto dėžutę"
-
-msgid "Send to Mobile"
-msgstr "Siųsti į mobilų įrenginį"
-
-msgid "Initiate _Chat"
-msgstr "_Pradėti pokalbį"
-
-msgid "SSL support is needed for MSN. Please install a supported SSL library."
-msgstr ""
-"MSN protokolui SSL palaikymas yra būtinas. Prašome įdiegti palaikomą SSL "
-"biblioteką."
-
-msgid "Failed to connect to server."
-msgstr "Nepavyko prisijungti prie serverio."
-
-msgid "Error retrieving profile"
-msgstr "Profilio gavimo klaida"
-
-msgid "General"
-msgstr "Bendros parinktys"
-
-msgid "Age"
-msgstr "Amžius"
-
-msgid "Occupation"
-msgstr "Profesija"
-
-msgid "Location"
-msgstr "Vietovė"
-
-msgid "Hobbies and Interests"
-msgstr "Hobi ir interesai"
-
-msgid "A Little About Me"
-msgstr "Truputį apie mane"
-
-msgid "Social"
-msgstr "Draugijai"
-
-msgid "Marital Status"
-msgstr "Šeimyninė padėtis"
-
-msgid "Interests"
-msgstr "Pomėgiai"
-
-msgid "Pets"
-msgstr "Naminiai gyvūnai"
-
-msgid "Hometown"
-msgstr "Gimtasis miestas"
-
-msgid "Places Lived"
-msgstr "Kur gyveno"
-
-msgid "Fashion"
-msgstr "Mada"
-
-msgid "Humor"
-msgstr "Humoras"
-
-msgid "Music"
-msgstr "Muzika"
-
-msgid "Favorite Quote"
-msgstr "Mėgstamiausia citata"
-
-msgid "Contact Info"
-msgstr "Kontaktinė informacija"
-
-msgid "Personal"
-msgstr "Asmeninė"
-
-msgid "Significant Other"
-msgstr "Antra pusė"
-
-msgid "Home Phone"
-msgstr "Namų telefonas"
-
-msgid "Home Phone 2"
-msgstr "Antras namų telefonas"
-
-msgid "Home Address"
-msgstr "Namų adresas"
-
+#, c-format
+msgid "Peer notification server down"
+msgstr "Kitų vartotojų informavimo serveris neprieinamas"
+
+#, c-format
+msgid "Database connect error"
+msgstr "Prisijungimo prie duomenų bazės klaida"
+
+#, c-format
+msgid "Server is going down (abandon ship)"
+msgstr "Serveris išjungiamas (palikite laivą)"
+
+#, c-format
+msgid "Error creating connection"
+msgstr "Jungties kūrimo klaida"
+
+#, c-format
+msgid "CVR parameters are either unknown or not allowed"
+msgstr "CVR parametrai yra nežinomi arba neleistini"
+
+#, c-format
+msgid "Unable to write"
+msgstr "Negalima rašyti"
+
+#, c-format
+msgid "Session overload"
+msgstr "Seanso perkrova"
+
+#, c-format
+msgid "User is too active"
+msgstr "Vartotojas yra per daug aktyvus"
+
+#, c-format
+msgid "Too many sessions"
+msgstr "Per daug seansų"
+
+#, c-format
+msgid "Passport not verified"
+msgstr "Microsoft .NET pasas nepatikrintas"
+
+#, c-format
+msgid "Bad friend file"
+msgstr "Blogas draugų failas"
+
+#, c-format
+msgid "Not expected"
+msgstr "Netikėta"
+
+#, c-format
+msgid "Friendly name changes too rapidly"
+msgstr "Patogusis vardas keičiasi per dažnai"
+
+#, c-format
+msgid "Server too busy"
+msgstr "Serveris per daug užimtas"
+
+#, c-format
+msgid "Authentication failed"
+msgstr "Nepavyko nustatyti tapatybę"
+
+#, c-format
+msgid "Not allowed when offline"
+msgstr "Atsijungus neleidžiama"
+
+#, c-format
+msgid "Not accepting new users"
+msgstr "Nauji vartotojai nepriimami"
+
+#, c-format
+msgid "Kids Passport without parental consent"
+msgstr "Vaikiškas Microsoft .NET pasas be tėvų sutikimo"
+
+#, c-format
+msgid "Passport account not yet verified"
+msgstr "Microsoft .NET paso paskyra dar nepatikrinta"
+
+msgid "Passport account suspended"
+msgstr "Microsoft .NET paso paskyra suspenduota"
+
+#, c-format
+msgid "Bad ticket"
+msgstr "Blogas bilietas"
+
+#, c-format
+msgid "Unknown Error Code %d"
+msgstr "Nežinomas klaidos kodas %d"
+
+#, c-format
+msgid "MSN Error: %s\n"
+msgstr "MSN klaida: %s\n"
+
+msgid "Other Contacts"
+msgstr "Kiti kontaktai"
+
+msgid "Non-IM Contacts"
+msgstr "Kontaktai ne iš greitųjų žinučių tinklų"
+
+msgid "Nudge"
+msgstr "Bakstelėjimas"
+
+#, c-format
+msgid "%s has nudged you!"
+msgstr "%s bakstelėjo jums!"
+
+#, c-format
+msgid "Nudging %s..."
+msgstr "Bakstelėju %s..."
+
+msgid "Email Address..."
+msgstr "El. pašto adresas..."
+
+msgid "Your new MSN friendly name is too long."
+msgstr "Jūsų naujas patogusis MSN vardas yra per ilgas"
+
+msgid "Set your friendly name."
+msgstr "Nustatyti Jūsų patogųjį vardą."
+
+msgid "This is the name that other MSN buddies will see you as."
+msgstr "Tai yra vardas, kuriuo Jus matys kiti MSN bičiuliai."
+
+msgid "Set your home phone number."
+msgstr "Nustatyti Jūsų namų telefono numerį."
+
+msgid "Set your work phone number."
+msgstr "Nustatyti Jūsų darbo telefono numerį."
+
+msgid "Set your mobile phone number."
+msgstr "Nustatyti Jūsų mobilaus telefono numerį."
+
+msgid "Allow MSN Mobile pages?"
+msgstr "Ar leisti mobiliąsias MSN žinutes?"
+
+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 ""
+"Ar Jūs norite leisti ar neleisti asmenims Jūsų bičiulių sąraše siųsti Jums "
+"mobiliąsias MSN žinutes į Jūsų mobilųjį telefoną ar kitą mobilųjį įrenginį?"
+
+msgid "Allow"
+msgstr "Leisti"
+
+msgid "Disallow"
+msgstr "Neleisti"
+
+#, c-format
+msgid "Blocked Text for %s"
+msgstr "Blokuotas tekstas iš %s"
+
+msgid "No text is blocked for this account."
+msgstr "Šiai paskyrai blokuoto teksto nėra."
+
+#, c-format
+msgid ""
+"MSN servers are currently blocking the following regular expressions:<br/>%s"
+msgstr ""
+"MSN serveriai šiuo metu blokuojas šias reguliariuosius reiškinius:<br/>%s"
+
+msgid "This account does not have email enabled."
+msgstr "Ši paskyra neturi aktyvaus el. pašto adreso."
+
+msgid "Send a mobile message."
+msgstr "Nusiųsti mobiliąją žinutę"
+
+msgid "Page"
+msgstr "Siųsti"
+
+msgid "Playing a game"
+msgstr "Žaidžia žaidimą"
+
+msgid "Working"
+msgstr "Dirba"
+
+msgid "Has you"
+msgstr "Turi Jus"
+
+msgid "Home Phone Number"
+msgstr "Namų telefono numeris"
+
+msgid "Work Phone Number"
+msgstr "Darbo telefono numeris"
+
+msgid "Mobile Phone Number"
+msgstr "Mobilaus telefono numeris"
+
+msgid "Be Right Back"
+msgstr "tuoj pat grįš"
+
+msgid "Busy"
+msgstr "užimtas"
+
+msgid "On the Phone"
+msgstr "kalba telefonu"
+
+msgid "Out to Lunch"
+msgstr "išėjęs papietauti"
+
+#. primitive
+#. ID
+#. name - use default
+#. saveable
+#. should be user_settable some day
+#. independent
+msgid "Artist"
+msgstr "Dailininkas"
+
+msgid "Album"
+msgstr "Albumas"
+
+msgid "Game Title"
+msgstr "Žaidimo pavadinimas"
+
+msgid "Office Title"
+msgstr "Ofiso pavadinimas"
+
+msgid "Set Friendly Name..."
+msgstr "Nustatyti patogųjį vardą..."
+
+msgid "Set Home Phone Number..."
+msgstr "Nustatyti namų telefono numerį..."
+
+msgid "Set Work Phone Number..."
+msgstr "Nustatyti darbo telefono numerį..."
+
+msgid "Set Mobile Phone Number..."
+msgstr "Nustatyti mobilaus telefono numerį..."
+
+msgid "Enable/Disable Mobile Devices..."
+msgstr "Leisti arba neleisti mobiliuosius įrenginius..."
+
+msgid "Allow/Disallow Mobile Pages..."
+msgstr "Leisti arba neleisti mobiliąsias žinutes..."
+
+msgid "View Blocked Text..."
+msgstr "Žiūrėti užblokuotą tekstą..."
+
+msgid "Open Hotmail Inbox"
+msgstr "Atidaryti Hotmail pašto dėžutę"
+
+msgid "Send to Mobile"
+msgstr "Siųsti į mobilų įrenginį"
+
+msgid "Initiate _Chat"
+msgstr "_Pradėti pokalbį"
+
+msgid "SSL support is needed for MSN. Please install a supported SSL library."
+msgstr ""
+"MSN protokolui SSL palaikymas yra būtinas. Prašome įdiegti palaikomą SSL "
+"biblioteką."
+
+msgid "Failed to connect to server."
+msgstr "Nepavyko prisijungti prie serverio."
+
+msgid "Error retrieving profile"
+msgstr "Profilio gavimo klaida"
+
+msgid "General"
+msgstr "Bendros parinktys"
+
+msgid "Age"
+msgstr "Amžius"
+
+msgid "Occupation"
+msgstr "Profesija"
+
+msgid "Location"
+msgstr "Vietovė"
+
+msgid "Hobbies and Interests"
+msgstr "Hobi ir interesai"
+
+msgid "A Little About Me"
+msgstr "Truputį apie mane"
+
+msgid "Social"
+msgstr "Draugijai"
+
+msgid "Marital Status"
+msgstr "Šeimyninė padėtis"
+
+msgid "Interests"
+msgstr "Pomėgiai"
+
+msgid "Pets"
+msgstr "Naminiai gyvūnai"
+
+msgid "Hometown"
+msgstr "Gimtasis miestas"
+
+msgid "Places Lived"
+msgstr "Kur gyveno"
+
+msgid "Fashion"
+msgstr "Mada"
+
+msgid "Humor"
+msgstr "Humoras"
+
+msgid "Music"
+msgstr "Muzika"
+
+msgid "Favorite Quote"
+msgstr "Mėgstamiausia citata"
+
+msgid "Contact Info"
+msgstr "Kontaktinė informacija"
+
+msgid "Personal"
+msgstr "Asmeninė"
+
+msgid "Significant Other"
+msgstr "Antra pusė"
+
+msgid "Home Phone"
+msgstr "Namų telefonas"
+
+msgid "Home Phone 2"
+msgstr "Antras namų telefonas"
+
+msgid "Home Address"
+msgstr "Namų adresas"
+
# Ar čia turima omeny „Mr.“, „Ms.“, „Dr.“ ???
-msgid "Personal Mobile"
-msgstr "Asmeninis mobilusis telefonas"
-
-msgid "Home Fax"
-msgstr "Namų faksas"
-
+msgid "Personal Mobile"
+msgstr "Asmeninis mobilusis telefonas"
+
+msgid "Home Fax"
+msgstr "Namų faksas"
+
# Ar čia turima omeny „Mr.“, „Ms.“, „Dr.“ ???
-msgid "Personal Email"
-msgstr "Asmeninis el. pašto adresas"
-
+msgid "Personal Email"
+msgstr "Asmeninis el. pašto adresas"
+
# Ar čia turima omeny „Mr.“, „Ms.“, „Dr.“ ???
-msgid "Personal IM"
-msgstr "Asmeninis skubiųjų žinučių kontaktas"
-
-msgid "Anniversary"
-msgstr "Sukaktis"
-
-#. Business
-msgid "Work"
-msgstr "Darbas"
-
-msgid "Job Title"
-msgstr "Pareigos"
-
-msgid "Company"
-msgstr "Kompanija"
-
-msgid "Department"
-msgstr "Skyrius"
-
-msgid "Profession"
-msgstr "Profesija"
-
-msgid "Work Phone"
-msgstr "Darbo telefonas"
-
-msgid "Work Phone 2"
-msgstr "Antras darbo telefonas"
-
-msgid "Work Address"
-msgstr "Darbo adresas"
-
-msgid "Work Mobile"
-msgstr "Darbo mobilusis telefonas"
-
-msgid "Work Pager"
-msgstr "Darbo pranešimų gaviklis"
-
-msgid "Work Fax"
-msgstr "Darbo faksas"
-
-msgid "Work Email"
-msgstr "Darbo el. pašto adresas"
-
-msgid "Work IM"
-msgstr "Darbo skubiųjų žinučių kontaktas"
-
-msgid "Start Date"
-msgstr "Pradžios data"
-
-msgid "Favorite Things"
-msgstr "Mėgstu"
-
-msgid "Last Updated"
-msgstr "Paskutinį kartą atnaujinta"
-
-msgid "Homepage"
-msgstr "Namų puslapis"
-
-msgid "The user has not created a public profile."
-msgstr "Šis vartotojas nesukūrė viešo profilio."
-
-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 nerado vartotojo profilio. Tai reiškia, kad arba tokio vartotojo nėra, "
-"arba kad vartotojas yra, bet neturi sukūręs viešo profilio."
-
-msgid ""
-"Could not find any information in the user's profile. The user most likely "
-"does not exist."
-msgstr ""
-"Nepavyko rasti jokios informacijos vartotojo profilyje. Greičiausiai toks "
-"vartotojas neegzistuoja."
-
-msgid "View web profile"
-msgstr "Žiūrėti profilį žiniatinklyje"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. *< summary
-msgid "Windows Live Messenger Protocol Plugin"
-msgstr "Windows Live Messenger protokolo papildinys"
-
-msgid "Use HTTP Method"
-msgstr "Naudoti HTTP metodą"
-
-msgid "HTTP Method Server"
-msgstr "HTTP metodo serveris"
-
-msgid "Show custom smileys"
-msgstr "Rodyti nestandartines šypsenėles"
-
-msgid "nudge: nudge a user to get their attention"
-msgstr "nudge: bakstelėti vartotojui, kad atkreipti jo dėmesį"
-
-msgid "Windows Live ID authentication:Unable to connect"
-msgstr "Nepavyko prisijungti prie Windows Live ID tapatybės nustatymo serverio"
-
-msgid "Windows Live ID authentication:Invalid response"
-msgstr "Windows Live ID tapatybės nustatymas: neteisingas atsakas"
-
-#, c-format
-msgid "%s is not a valid group."
-msgstr "%s nėra teisinga grupė"
-
-msgid "Unknown error."
-msgstr "Nežinoma klaida."
-
-#, c-format
-msgid "%s on %s (%s)"
-msgstr "%s. Vartotojas %s (%s)."
-
-#, c-format
-msgid "%s just sent you a Nudge!"
-msgstr "%s nori bakstelėjo Jums!"
-
-#. char *adl = g_strndup(payload, len);
-#, c-format
-msgid "Unknown error (%d)"
-msgstr "Nežinoma klaida (%d)"
-
-msgid "Unable to add user"
-msgstr "Nepavyko pridėti vartotojo"
-
-msgid "The following users are missing from your addressbook"
-msgstr "Tolesnių vartotojų nėra Jūsų adresų knygoje"
-
-#, c-format
-msgid "Unable to add user on %s (%s)"
-msgstr "Negalima pridėti vartotojo paskyroje %s (%s)"
-
+msgid "Personal IM"
+msgstr "Asmeninis skubiųjų žinučių kontaktas"
+
+msgid "Anniversary"
+msgstr "Sukaktis"
+
+#. Business
+msgid "Work"
+msgstr "Darbas"
+
+msgid "Job Title"
+msgstr "Pareigos"
+
+msgid "Company"
+msgstr "Kompanija"
+
+msgid "Department"
+msgstr "Skyrius"
+
+msgid "Profession"
+msgstr "Profesija"
+
+msgid "Work Phone"
+msgstr "Darbo telefonas"
+
+msgid "Work Phone 2"
+msgstr "Antras darbo telefonas"
+
+msgid "Work Address"
+msgstr "Darbo adresas"
+
+msgid "Work Mobile"
+msgstr "Darbo mobilusis telefonas"
+
+msgid "Work Pager"
+msgstr "Darbo pranešimų gaviklis"
+
+msgid "Work Fax"
+msgstr "Darbo faksas"
+
+msgid "Work Email"
+msgstr "Darbo el. pašto adresas"
+
+msgid "Work IM"
+msgstr "Darbo skubiųjų žinučių kontaktas"
+
+msgid "Start Date"
+msgstr "Pradžios data"
+
+msgid "Favorite Things"
+msgstr "Mėgstu"
+
+msgid "Last Updated"
+msgstr "Paskutinį kartą atnaujinta"
+
+msgid "Homepage"
+msgstr "Namų puslapis"
+
+msgid "The user has not created a public profile."
+msgstr "Šis vartotojas nesukūrė viešo profilio."
+
+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 nerado vartotojo profilio. Tai reiškia, kad arba tokio vartotojo nėra, "
+"arba kad vartotojas yra, bet neturi sukūręs viešo profilio."
+
+msgid ""
+"Could not find any information in the user's profile. The user most likely "
+"does not exist."
+msgstr ""
+"Nepavyko rasti jokios informacijos vartotojo profilyje. Greičiausiai toks "
+"vartotojas neegzistuoja."
+
+msgid "View web profile"
+msgstr "Žiūrėti profilį žiniatinklyje"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. *< summary
+msgid "Windows Live Messenger Protocol Plugin"
+msgstr "Windows Live Messenger protokolo papildinys"
+
+msgid "Use HTTP Method"
+msgstr "Naudoti HTTP metodą"
+
+msgid "HTTP Method Server"
+msgstr "HTTP metodo serveris"
+
+msgid "Show custom smileys"
+msgstr "Rodyti nestandartines šypsenėles"
+
+msgid "nudge: nudge a user to get their attention"
+msgstr "nudge: bakstelėti vartotojui, kad atkreipti jo dėmesį"
+
+msgid "Windows Live ID authentication:Unable to connect"
+msgstr "Nepavyko prisijungti prie Windows Live ID tapatybės nustatymo serverio"
+
+msgid "Windows Live ID authentication:Invalid response"
+msgstr "Windows Live ID tapatybės nustatymas: neteisingas atsakas"
+
+#, c-format
+msgid "%s is not a valid group."
+msgstr "%s nėra teisinga grupė"
+
+msgid "Unknown error."
+msgstr "Nežinoma klaida."
+
+#, c-format
+msgid "%s on %s (%s)"
+msgstr "%s. Vartotojas %s (%s)."
+
+#, c-format
+msgid "%s just sent you a Nudge!"
+msgstr "%s nori bakstelėjo Jums!"
+
+#. char *adl = g_strndup(payload, len);
+#, c-format
+msgid "Unknown error (%d)"
+msgstr "Nežinoma klaida (%d)"
+
+msgid "Unable to add user"
+msgstr "Nepavyko pridėti vartotojo"
+
+msgid "The following users are missing from your addressbook"
+msgstr "Tolesnių vartotojų nėra Jūsų adresų knygoje"
+
+#, c-format
+msgid "Unable to add user on %s (%s)"
+msgstr "Negalima pridėti vartotojo paskyroje %s (%s)"
+
# Data is assumed to be the destination sn
-#, c-format
-msgid "Unable to block user on %s (%s)"
-msgstr "Negalima blokuoti vartotojo paskyroje %s (%s)"
-
-#, c-format
-msgid "Unable to permit user on %s (%s)"
-msgstr "Negalima leisti vartotojo paskyroje %s (%s)"
-
-#, c-format
-msgid "%s could not be added because your buddy list is full."
-msgstr "Negalima pridėti %s, nes Jūsų bičiulių sąrašas pilnas."
-
-#, c-format
-msgid "%s is not a valid passport account."
-msgstr "%s nėra teisinga Microsoft .NET paso paskyra"
-
-msgid "Service Temporarily Unavailable."
-msgstr "Tarnyba laikinai neprieinama"
-
-msgid "Mobile message was not sent because it was too long."
-msgstr "Mobilioji žinutė nebuvo išsiųsta, nes ji per ilga."
-
-msgid "Unable to rename group"
-msgstr "Negalima pervadinti grupės"
-
-msgid "Unable to delete group"
-msgstr "Negalima pašalinti grupės"
-
-#, 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 serveris bus išjungtas priežiūrai už %d minutės. Tada Jūs būsite "
-"automatiškai atjungtas. Prašome pabaigti visus vykstančius pokalbius.\n"
-"\n"
-"Kai serverio priežiūra bus baigta, Jūs galėsite sėkmingai prisijungti."
-msgstr[1] ""
-"MSN serveris bus išjungtas priežiūrai už %d minučių. Tada Jūs būsite "
-"automatiškai atjungtas. Prašome pabaigti visus vykstančius pokalbius.\n"
-"\n"
-"Kai serverio priežiūra bus baigta, Jūs galėsite sėkmingai prisijungti."
-msgstr[2] ""
-"MSN serveris bus išjungtas priežiūrai už %d minučių. Tada Jūs būsite "
-"automatiškai atjungtas. Prašome pabaigti visus vykstančius pokalbius.\n"
-"\n"
-"Kai serverio priežiūra bus baigta, Jūs galėsite sėkmingai prisijungti."
-
-msgid ""
-"Message was not sent because the system is unavailable. This normally "
-"happens when the user is blocked or does not exist."
-msgstr ""
-"Žinutė nebuvo nusiųsta, nes sistema neprieinama. Paprastai taip atsitinka, "
-"kai naudotojas yra užblokuotas arba iš viso neegzistuoja."
-
-msgid "Message was not sent because messages are being sent too quickly."
-msgstr "Žinutė nebuvo išsiųsta nes žinutės yra išsiuntinėjamos per greitai."
-
-msgid "Message was not sent because an unknown encoding error occurred."
-msgstr "Žinutė nebuvo išsiųsta, nes įvyko nežinoma užkodavimo klaida."
-
-msgid "Message was not sent because an unknown error occurred."
-msgstr "Žinutė nebuvo išsiųsta, nes įvyko nežinoma klaida."
-
-msgid "Unable to connect"
-msgstr "Negalima prisijungti"
-
-msgid "Writing error"
-msgstr "Rašymo klaida"
-
-msgid "Reading error"
-msgstr "Skaitymo klaida"
-
-#, c-format
-msgid ""
-"Connection error from %s server:\n"
-"%s"
-msgstr ""
-"Jungties klaida su severiu %s:\n"
-"%s"
-
-msgid "Our protocol is not supported by the server."
-msgstr "Mūsų protokolo serveris nepalaiko."
-
-msgid "Error parsing HTTP."
-msgstr "HTTP sintaksinės analizės klaida."
-
-msgid "You have signed on from another location."
-msgstr "Jūs prisijungėte iš kitur."
-
-msgid "The MSN servers are temporarily unavailable. Please wait and try again."
-msgstr ""
-"MSN serveriai yra laikinai neprieinami. Prašome palaukti ir pabandyti iš "
-"naujo."
-
-msgid "The MSN servers are going down temporarily."
-msgstr "MSN serveriai yra laikinai išjungiami."
-
+#, c-format
+msgid "Unable to block user on %s (%s)"
+msgstr "Negalima blokuoti vartotojo paskyroje %s (%s)"
+
+#, c-format
+msgid "Unable to permit user on %s (%s)"
+msgstr "Negalima leisti vartotojo paskyroje %s (%s)"
+
+#, c-format
+msgid "%s could not be added because your buddy list is full."
+msgstr "Negalima pridėti %s, nes Jūsų bičiulių sąrašas pilnas."
+
+#, c-format
+msgid "%s is not a valid passport account."
+msgstr "%s nėra teisinga Microsoft .NET paso paskyra"
+
+msgid "Service Temporarily Unavailable."
+msgstr "Tarnyba laikinai neprieinama"
+
+msgid "Mobile message was not sent because it was too long."
+msgstr "Mobilioji žinutė nebuvo išsiųsta, nes ji per ilga."
+
+msgid "Unable to rename group"
+msgstr "Negalima pervadinti grupės"
+
+msgid "Unable to delete group"
+msgstr "Negalima pašalinti grupės"
+
+#, 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 serveris bus išjungtas priežiūrai už %d minutės. Tada Jūs būsite "
+"automatiškai atjungtas. Prašome pabaigti visus vykstančius pokalbius.\n"
+"\n"
+"Kai serverio priežiūra bus baigta, Jūs galėsite sėkmingai prisijungti."
+msgstr[1] ""
+"MSN serveris bus išjungtas priežiūrai už %d minučių. Tada Jūs būsite "
+"automatiškai atjungtas. Prašome pabaigti visus vykstančius pokalbius.\n"
+"\n"
+"Kai serverio priežiūra bus baigta, Jūs galėsite sėkmingai prisijungti."
+msgstr[2] ""
+"MSN serveris bus išjungtas priežiūrai už %d minučių. Tada Jūs būsite "
+"automatiškai atjungtas. Prašome pabaigti visus vykstančius pokalbius.\n"
+"\n"
+"Kai serverio priežiūra bus baigta, Jūs galėsite sėkmingai prisijungti."
+
+msgid ""
+"Message was not sent because the system is unavailable. This normally "
+"happens when the user is blocked or does not exist."
+msgstr ""
+"Žinutė nebuvo nusiųsta, nes sistema neprieinama. Paprastai taip atsitinka, "
+"kai naudotojas yra užblokuotas arba iš viso neegzistuoja."
+
+msgid "Message was not sent because messages are being sent too quickly."
+msgstr "Žinutė nebuvo išsiųsta nes žinutės yra išsiuntinėjamos per greitai."
+
+msgid "Message was not sent because an unknown encoding error occurred."
+msgstr "Žinutė nebuvo išsiųsta, nes įvyko nežinoma užkodavimo klaida."
+
+msgid "Message was not sent because an unknown error occurred."
+msgstr "Žinutė nebuvo išsiųsta, nes įvyko nežinoma klaida."
+
+msgid "Unable to connect"
+msgstr "Negalima prisijungti"
+
+msgid "Writing error"
+msgstr "Rašymo klaida"
+
+msgid "Reading error"
+msgstr "Skaitymo klaida"
+
+#, c-format
+msgid ""
+"Connection error from %s server:\n"
+"%s"
+msgstr ""
+"Jungties klaida su severiu %s:\n"
+"%s"
+
+msgid "Our protocol is not supported by the server."
+msgstr "Mūsų protokolo serveris nepalaiko."
+
+msgid "Error parsing HTTP."
+msgstr "HTTP sintaksinės analizės klaida."
+
+msgid "You have signed on from another location."
+msgstr "Jūs prisijungėte iš kitur."
+
+msgid "The MSN servers are temporarily unavailable. Please wait and try again."
+msgstr ""
+"MSN serveriai yra laikinai neprieinami. Prašome palaukti ir pabandyti iš "
+"naujo."
+
+msgid "The MSN servers are going down temporarily."
+msgstr "MSN serveriai yra laikinai išjungiami."
+
# Data is assumed to be the destination sn
-#, c-format
-msgid "Unable to authenticate: %s"
-msgstr "Negalima patikrinti tapatybės: %s"
-
-msgid ""
-"Your MSN buddy list is temporarily unavailable. Please wait and try again."
-msgstr ""
-"Jūsų MSN bičiulių sąrašas yra laikinai neprieinamas. Prašome palaukti ir "
-"pabandyti iš naujo."
-
-msgid "Handshaking"
-msgstr "Pasisveikinimas"
-
-msgid "Transferring"
-msgstr "Perdavimas"
-
-msgid "Starting authentication"
-msgstr "Pradedamas tapatybės nustatymas"
-
-msgid "Getting cookie"
-msgstr "Gaunamas slapukas"
-
-msgid "Sending cookie"
-msgstr "Siunčiamas slapukas"
-
-msgid "Retrieving buddy list"
-msgstr "Gaunamas bičiulių sąrašas"
-
-msgid "Away From Computer"
-msgstr "Pasitraukęs nuo kompiuterio"
-
-msgid "On The Phone"
-msgstr "Kalba telefonu"
-
-msgid "Out To Lunch"
-msgstr "Išėjęs papietauti"
-
-msgid "Message may have not been sent because a timeout occurred:"
-msgstr "Žinutė galėjo būti neišsiųsta, nes baigėsi laukimo laikas:"
-
-msgid "Message could not be sent, not allowed while invisible:"
-msgstr "Žinutės negalima išsiųsti esant nematomu:"
-
-msgid "Message could not be sent because the user is offline:"
-msgstr "Žinutė neišsiųsta, nes vartotojas atsijungęs:"
-
-msgid "Message could not be sent because a connection error occurred:"
-msgstr "Žinutė neišsiųsta, nes įvyko jungties klaida:"
-
-msgid "Message could not be sent because we are sending too quickly:"
-msgstr "Žinutė neišsiųsta, nes bandyta išsiųsti per greitai:"
-
-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 ""
-"Žinutės išsiųsti nepavyko, nes nepavyko sukurti seanso su serveriu. "
-"Greičiausiai tai serverio problema, pabandykite vėl po kelių minučių:"
-
-msgid ""
-"Message could not be sent because an error with the switchboard occurred:"
-msgstr "Žinutė neišsiųsta, nes įvyko komutatoriaus klaida:"
-
-msgid "Message may have not been sent because an unknown error occurred:"
-msgstr "Žinutė neišsiųsta, nes įvyko nežinoma klaida:"
-
-#, c-format
-msgid "%s has added you to his or her buddy list."
-msgstr "Vartotojas %s įtraukė Jus į savo bičiulių sąrašo."
-
-#, c-format
-msgid "%s has removed you from his or her buddy list."
-msgstr "Vartotojas %s pašalino Jus iš savo bičiulių sąrašo."
-
-msgid "Delete Buddy from Address Book?"
-msgstr "Ar pašalinti bičiulį iš adresų knygos?"
-
-msgid "Do you want to delete this buddy from your address book as well?"
-msgstr "Ar norite pašalinti šį bičiulį taip pat ir iš adresų knygos?"
-
-msgid "The username specified is invalid."
-msgstr "Nurodytas neteisingas vardas."
-
-msgid "This Hotmail account may not be active."
-msgstr "Ši Hotmail paskyra gali būti neaktyvi."
-
-msgid "Profile URL"
-msgstr "Profilio URL"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "MSN Protocol Plugin"
-msgstr "MSN protokolo papildinys"
-
-#, c-format
-msgid "No such user: %s"
-msgstr "Naudotojas nerastas: %s"
-
-msgid "User lookup"
-msgstr "Naudotojo paieška"
-
-msgid "Reading challenge"
-msgstr "Skaitomas serverio iššūkis"
-
-msgid "Unexpected challenge length from server"
-msgstr "Neteisingas serverio iššūkio ilgis"
-
-msgid "Logging in"
-msgstr "Prisijungiama"
-
-msgid "MySpaceIM - No Username Set"
-msgstr "MySpaceIM – nenustatytas naudotojo vardas"
-
-msgid "You appear to have no MySpace username."
-msgstr "Atrodo, kad neturite MySpace naudojo vardo."
-
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
-msgstr "Ar norite dabar jį nustatyti? (Pastaba: jis negalės būti keičiamas!)"
-
-msgid "Lost connection with server"
-msgstr "Prarastas prisijungimas prie serverio"
-
-#. Can't write _()'d strings in array initializers. Workaround.
-msgid "New mail messages"
-msgstr "Nauji laiškai"
-
-msgid "New blog comments"
-msgstr "Nauji tinklaraščio komentarai"
-
-msgid "New profile comments"
-msgstr "Nauji profilio komentarai"
-
-msgid "New friend requests!"
-msgstr "Nauji pasiūlymai draugauti!"
-
-msgid "New picture comments"
-msgstr "Nauji nuotraukų komentarai"
-
-msgid "MySpace"
-msgstr "MySpace"
-
-msgid "IM Friends"
-msgstr "IM draugai"
-
-#, c-format
-msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-"%d bičiulis buvo pridėtas ar atnaujintas iš serverio (įskaitant ir "
-"bičiulius, jau esančius serverio sąraše)"
-msgstr[1] ""
-"%d bičiuliai buvo pridėti ar atnaujinti iš serverio (įskaitant ir bičiulius, "
-"jau esančius serverio sąraše)"
-msgstr[2] ""
-"%d bičiulių buvo pridėta ar atnaujinta iš serverio (įskaitant ir bičiulius, "
-"jau esančius serverio sąraše)"
-
-msgid "Add contacts from server"
-msgstr "Pridėti kontaktus iš serverio"
-
-#. The session is now set up, ready to be connected. This emits the
-#. * signedOn signal, so clients can now do anything with msimprpl, and
-#. * we're ready for it (session key, userid, username all setup).
-msgid "Connected"
-msgstr "Prisijungta"
-
-#, c-format
-msgid "Protocol error, code %d: %s"
-msgstr "Protokolo klaida, kodas %d: %s"
-
-#, c-format
-msgid ""
-"%s Your password is %d characters, greater than the expected maximum length "
-"of %d for MySpaceIM. Please shorten your password at http://profileedit."
-"myspace.com/index.cfm?fuseaction=accountSettings.changePassword and try "
-"again."
-msgstr ""
-"%s Jūsų slaptažodis yra %d simbolių, daugiau negu didžiausias MySpaceIM "
-"leidžiamas ilgis %d. Sutrumpinkite savo slaptažodį adresu http://"
-"profileedit.myspace.com/index.cfm?fuseaction=accountSettings.changePassword "
-"ir pabandykite iš naujo."
-
-msgid "MySpaceIM Error"
-msgstr "MySpaceIM klaida"
-
-msgid "Invalid input condition"
-msgstr "Neteisinga įvesties sąlyga"
-
-msgid "Read buffer full (2)"
-msgstr "Skaitymo buferis pripildytas (2)"
-
-msgid "Unparseable message"
-msgstr "Nepavyko išanalizuoti pranešimo"
-
-#, c-format
-msgid "Couldn't connect to host: %s (%d)"
-msgstr "Nepavyko prisijungti prie mazgo: %s (%d)"
-
-msgid "Failed to add buddy"
-msgstr "Nepavyko pridėti bičiulio"
-
-msgid "'addbuddy' command failed."
-msgstr "Komanda „addbuddy“ nepavyko."
-
-msgid "persist command failed"
-msgstr "Komanda „persist“ nepavyko."
-
-msgid "Failed to remove buddy"
-msgstr "Nepavyko pašalinti bičiulio"
-
-msgid "'delbuddy' command failed"
-msgstr "Komanda „delbuddy“ nepavyko"
-
-msgid "blocklist command failed"
-msgstr "Komanda „blocklist“ nepavyko"
-
-msgid "Missing Cipher"
-msgstr "Šifras nerastas"
-
-msgid "The RC4 cipher could not be found"
-msgstr "RC4 šifras nerastas"
-
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
-msgstr ""
-"Atnaujinkite libpurple į versiją su RC4 palaikymu (>= 2.0.1). MySpaceIM "
-"papildinys nebus įkeltas."
-
-msgid "Add friends from MySpace.com"
-msgstr "Pridėti draugus iš MySpace.com"
-
-msgid "Importing friends failed"
-msgstr "Nepavyko importuoti draugų"
-
-#. TODO: find out how
-msgid "Find people..."
-msgstr "Ieškoti žmonių..."
-
-msgid "Change IM name..."
-msgstr "Pakeisti vardą skubiosioms žinutėms..."
-
-msgid "myim URL handler"
-msgstr "myim URL doroklė"
-
-msgid "No suitable MySpaceIM account could be found to open this myim URL."
-msgstr "Nerasta tinkama MySpaceIM paskyra šio myim URL atidarymui."
-
-msgid "Enable the proper MySpaceIM account and try again."
-msgstr "Įjunkite tinkamą MySpaceIM paskyrą ir bandykite iš naujo."
-
-msgid "Show display name in status text"
-msgstr "Rodyti vardą būsenos tekste"
-
-msgid "Show headline in status text"
-msgstr "Rodyti antraštę būsenos tekste"
-
-msgid "Send emoticons"
-msgstr "Siųsti jaustukus"
-
-msgid "Screen resolution (dots per inch)"
-msgstr "Ekrano skiriamoji geba (taškais colyje)"
-
-msgid "Base font size (points)"
-msgstr "Numatytojo šrifto dydis (punktais)"
-
-msgid "User"
-msgstr "Vartotojas"
-
-msgid "Headline"
-msgstr "Antraštė"
-
-msgid "Song"
-msgstr "Daina"
-
-msgid "Total Friends"
-msgstr "Iš viso draugų"
-
-msgid "Client Version"
-msgstr "Kliento programos versija"
-
-msgid "MySpaceIM - Username Available"
-msgstr "MySpaceIM – naudotojo vardas laisvas"
-
-msgid "This username is available. Would you like to set it?"
-msgstr "Šis naudotojo vardas laisvas. Ar norite juo pasivadinti?"
-
-msgid "ONCE SET, THIS CANNOT BE CHANGED!"
-msgstr "KARTĄ NUSTATYTAS, JIS NEGALI BŪTI PAKEISTAS!"
-
-msgid "MySpaceIM - Please Set a Username"
-msgstr "MySpaceIM – nustatykite naudotojo vardą"
-
-msgid "This username is unavailable."
-msgstr "Šis naudotojo vardas užimtas."
-
-msgid "Please try another username:"
-msgstr "Pabandykite kitokį naudotojo vardą:"
-
-#. Protocol won't log in now without a username set.. Disconnect
-msgid "No username set"
-msgstr "Nenustatytas naudotojo vardas"
-
-msgid "Please enter a username to check its availability:"
-msgstr "Įveskite naudotojo vardą, kad patikrintumėte, ar jis laisvas:"
-
-#. TODO: icons for each zap
-#. Lots of comments for translators:
-#. Zap means "to strike suddenly and forcefully as if with a
-#. * projectile or weapon." This term often has an electrical
-#. * connotation, for example, "he was zapped by electricity when
-#. * he put a fork in the toaster."
-msgid "Zap"
-msgstr "Pykšt"
-
-#, c-format
-msgid "%s has zapped you!"
-msgstr "%s pykštelėjo jums!"
-
-#, c-format
-msgid "Zapping %s..."
-msgstr "Pykšteliu į %s..."
-
-#. Whack means "to hit or strike someone with a sharp blow"
-msgid "Whack"
-msgstr "Bumpt"
-
-#, c-format
-msgid "%s has whacked you!"
-msgstr "%s bumptelėjo jums!"
-
-#, c-format
-msgid "Whacking %s..."
-msgstr "Bumpteliu į %s..."
-
-#. Torch means "to set on fire." Don't worry, this doesn't
-#. * make a whole lot of sense in English, either. Feel free
-#. * to translate it literally.
-msgid "Torch"
-msgstr "Padegimas"
-
-#, c-format
-msgid "%s has torched you!"
-msgstr "%s jus padegė!"
-
-#, c-format
-msgid "Torching %s..."
-msgstr "Padegu %s..."
-
-#. Smooch means "to kiss someone, often enthusiastically"
-msgid "Smooch"
-msgstr "Bučkis"
-
-#, c-format
-msgid "%s has smooched you!"
-msgstr "%s pabučiavo jus!"
-
-#, c-format
-msgid "Smooching %s..."
-msgstr "Bučiuoju %s..."
-
-#. A hug is a display of affection; wrapping your arms around someone
-msgid "Hug"
-msgstr "Apkabinimas"
-
-#, c-format
-msgid "%s has hugged you!"
-msgstr "%s apkabino jus!"
-
-#, c-format
-msgid "Hugging %s..."
-msgstr "Apkabinu %s..."
-
-#. Slap means "to hit someone with an open/flat hand"
-msgid "Slap"
-msgstr "Pliaukšt"
-
-#, c-format
-msgid "%s has slapped you!"
-msgstr "%s pliaukštelėjo jums!"
-
-#, c-format
-msgid "Slapping %s..."
-msgstr "Pliaukšteliu %s..."
-
-#. Goose means "to pinch someone on their butt"
-msgid "Goose"
-msgstr "Žnybt"
-
-#, c-format
-msgid "%s has goosed you!"
-msgstr "%s jums įžnybo!"
-
-#, c-format
-msgid "Goosing %s..."
-msgstr "Įžnybiu %s..."
-
-#. A high-five is when two people's hands slap each other
-#. * in the air above their heads. It is done to celebrate
-#. * something, often a victory, or to congratulate someone.
-msgid "High-five"
-msgstr "Duodam penkis"
-
-#, c-format
-msgid "%s has high-fived you!"
-msgstr "%s davė jums penkis!"
-
-#, c-format
-msgid "High-fiving %s..."
-msgstr "Duodu penkis %s..."
-
-#. We're not entirely sure what the MySpace people mean by
-#. * this... but we think it's the equivalent of "prank." Or, for
-#. * someone to perform a mischievous trick or practical joke.
-msgid "Punk"
-msgstr "Punkt"
-
-#, c-format
-msgid "%s has punk'd you!"
-msgstr "%s punktelėjo jums!"
-
-#, c-format
-msgid "Punking %s..."
-msgstr "Punkteliu %s..."
-
-#. Raspberry is a slang term for the vibrating sound made
-#. * when you stick your tongue out of your mouth with your
-#. * lips closed and blow. It is typically done when
-#. * gloating or bragging. Nowadays it's a pretty silly
-#. * gesture, so it does not carry a harsh negative
-#. * connotation. It is generally used in a playful tone
-#. * with friends.
-msgid "Raspberry"
-msgstr "Parodyti liežuvį"
-
-#, c-format
-msgid "%s has raspberried you!"
-msgstr "%s parodė jums liežuvį!"
-
-#, c-format
-msgid "Raspberrying %s..."
-msgstr "Rodau liežuvį %s..."
-
-msgid "Required parameters not passed in"
-msgstr "Neperduoti reikalingi parametrai"
-
-msgid "Unable to write to network"
-msgstr "Negalima rašyti į tinklą"
-
-msgid "Unable to read from network"
-msgstr "Negalima skaityti iš tinklo"
-
-msgid "Error communicating with server"
-msgstr "Komunikacijos su serveriu klaida"
-
-msgid "Conference not found"
-msgstr "Konferencija nerasta"
-
-msgid "Conference does not exist"
-msgstr "Konferencija neegzistuoja"
-
-msgid "A folder with that name already exists"
-msgstr "Aplankas su tokiu vardu jau yra"
-
-msgid "Not supported"
-msgstr "Nepalaikoma"
-
-msgid "Password has expired"
-msgstr "Slaptažodžio galiojimo laikas pasibaigė"
-
-msgid "Incorrect password"
-msgstr "Neteisingas slaptažodis"
-
-msgid "User not found"
-msgstr "Vartotojas nerastas"
-
-msgid "Account has been disabled"
-msgstr "Neveiksni paskyra"
-
-msgid "The server could not access the directory"
-msgstr "Serveris negalėjo kreiptis į katalogą"
-
-msgid "Your system administrator has disabled this operation"
-msgstr "Jūsų sistemos administratorius išjungė šią operaciją"
-
-msgid "The server is unavailable; try again later"
-msgstr "Serveris neprieinamas; pabandykite vėliau vėl"
-
-msgid "Cannot add a contact to the same folder twice"
-msgstr "Negalima pridėti kontakto į tą patį katalogą du kartus"
-
-msgid "Cannot add yourself"
-msgstr "Negalima pridėti savęs"
-
-msgid "Master archive is misconfigured"
-msgstr "Pagrindinis archyvas yra blogai sukonfigūruotas"
-
-msgid "Incorrect username or password"
-msgstr "Neteisingas naudotojo vardas ar slaptažodis"
-
-msgid "Could not recognize the host of the username you entered"
-msgstr "Nepavyko atpažinti mazgo, priklausančio šiam naudotojo vardui"
-
-msgid ""
-"Your account has been disabled because too many incorrect passwords were "
-"entered"
-msgstr ""
-"Jūsų paskyra padaryta neveiksnia dėl per daug kartų neteisingai įvesto "
-"slaptažodžio"
-
-msgid "You cannot add the same person twice to a conversation"
-msgstr "Negalite du kartus įtraukti to paties asmens į pokalbį"
-
-msgid "You have reached your limit for the number of contacts allowed"
-msgstr "Jūs pasiekėte savo leistinų kontaktų skaičiaus ribą."
-
-msgid "You have entered an incorrect username"
-msgstr "Jūs įvedėte neteisingą naudotojo vardą"
-
-msgid "An error occurred while updating the directory"
-msgstr "Katalogo atnaujinimo metu įvyko klaida"
-
-msgid "Incompatible protocol version"
-msgstr "Nesuderinama protokolo versija"
-
-msgid "The user has blocked you"
-msgstr "Vartotojas Jus užblokavo"
-
-msgid ""
-"This evaluation version does not allow more than ten users to log in at one "
-"time"
-msgstr ""
-"Ši laikinoji versija neleidžia daugiau kaip dešimčiai vartotojų prisijungti "
-"tuo pačiu metu"
-
-msgid "The user is either offline or you are blocked"
-msgstr "Vartotojas yra atsijungęs arba Jūs esate užblokuotas"
-
-#, c-format
-msgid "Unknown error: 0x%X"
-msgstr "Nežinoma klaida: 0x%X"
-
-#, c-format
-msgid "Login failed (%s)."
-msgstr "Prisijungimas nepavyko (%s)."
-
-#, c-format
-msgid "Unable to send message. Could not get details for user (%s)."
-msgstr "Neįmanoma išsiųsti pranešimo. Nepavyko gauti vartotojo detalių (%s)."
-
-#, c-format
-msgid "Unable to add %s to your buddy list (%s)."
-msgstr "Negalima pridėti %s į Jūsų bičiulių sąrašą (%s)."
-
-#. TODO: Improve this! message to who or for what conference?
-#, c-format
-msgid "Unable to send message (%s)."
-msgstr "Negalima išsiųsti žinutės (%s)."
-
-#, c-format
-msgid "Unable to invite user (%s)."
-msgstr "Negalima pakviesti vartotojo (%s)."
-
-#, c-format
-msgid "Unable to send message to %s. Could not create the conference (%s)."
-msgstr ""
-"Negalima išsiųsti žinutės vartotojui %s. Nepavyko sukurti konferencijos (%s)."
-
-#, c-format
-msgid "Unable to send message. Could not create the conference (%s)."
-msgstr "Nepavyko išsiųsti žinutės. Nepavyko sukurti konferencijos (%s)."
-
-#, c-format
-msgid ""
-"Unable to move user %s to folder %s in the server side list. Error while "
-"creating folder (%s)."
-msgstr ""
-"Nepavyko perkelti vartotojo %s į aplanką %s serverio sąraše. Aplanko kūrimo "
-"klaida (%s)."
-
-#, c-format
-msgid ""
-"Unable to add %s to your buddy list. Error creating folder in server side "
-"list (%s)."
-msgstr ""
-"Nepavyko įtraukti vartotojo %s į Jūsų bičiulių sąrašą. Aplanko kūrimo "
-"serverio sąraše klaida (%s)."
-
-#, c-format
-msgid "Could not get details for user %s (%s)."
-msgstr "Nepavyko gauti detalių apie vartotoją %s (%s)."
-
-#, c-format
-msgid "Unable to add user to privacy list (%s)."
-msgstr "Nepavyko įtraukti vartotojo į privatumo sąrašą (%s)."
-
-#, c-format
-msgid "Unable to add %s to deny list (%s)."
-msgstr "Nepavyko įtraukti %s į draudimo sąrašą (%s)."
-
-#, c-format
-msgid "Unable to add %s to permit list (%s)."
-msgstr "Nepavyko įtraukti %s į leidimo sąrašą (%s)."
-
-#, c-format
-msgid "Unable to remove %s from privacy list (%s)."
-msgstr "Nepavyko pašalinti %s iš privatumo sąrašo (%s)."
-
-#, c-format
-msgid "Unable to change server side privacy settings (%s)."
-msgstr "Nepavyko pakeisti privatumo nuostatų serveryje (%s)."
-
-#, c-format
-msgid "Unable to create conference (%s)."
-msgstr "Nepavyko sukurti konferencijos (%s)."
-
-msgid "Error communicating with server. Closing connection."
-msgstr "Komunikacijos su serveriu klaida. Jungtis uždaroma."
-
-msgid "Telephone Number"
-msgstr "Telefonas"
-
+#, c-format
+msgid "Unable to authenticate: %s"
+msgstr "Negalima patikrinti tapatybės: %s"
+
+msgid ""
+"Your MSN buddy list is temporarily unavailable. Please wait and try again."
+msgstr ""
+"Jūsų MSN bičiulių sąrašas yra laikinai neprieinamas. Prašome palaukti ir "
+"pabandyti iš naujo."
+
+msgid "Handshaking"
+msgstr "Pasisveikinimas"
+
+msgid "Transferring"
+msgstr "Perdavimas"
+
+msgid "Starting authentication"
+msgstr "Pradedamas tapatybės nustatymas"
+
+msgid "Getting cookie"
+msgstr "Gaunamas slapukas"
+
+msgid "Sending cookie"
+msgstr "Siunčiamas slapukas"
+
+msgid "Retrieving buddy list"
+msgstr "Gaunamas bičiulių sąrašas"
+
+msgid "Away From Computer"
+msgstr "Pasitraukęs nuo kompiuterio"
+
+msgid "On The Phone"
+msgstr "Kalba telefonu"
+
+msgid "Out To Lunch"
+msgstr "Išėjęs papietauti"
+
+msgid "Message may have not been sent because a timeout occurred:"
+msgstr "Žinutė galėjo būti neišsiųsta, nes baigėsi laukimo laikas:"
+
+msgid "Message could not be sent, not allowed while invisible:"
+msgstr "Žinutės negalima išsiųsti esant nematomu:"
+
+msgid "Message could not be sent because the user is offline:"
+msgstr "Žinutė neišsiųsta, nes vartotojas atsijungęs:"
+
+msgid "Message could not be sent because a connection error occurred:"
+msgstr "Žinutė neišsiųsta, nes įvyko jungties klaida:"
+
+msgid "Message could not be sent because we are sending too quickly:"
+msgstr "Žinutė neišsiųsta, nes bandyta išsiųsti per greitai:"
+
+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 ""
+"Žinutės išsiųsti nepavyko, nes nepavyko sukurti seanso su serveriu. "
+"Greičiausiai tai serverio problema, pabandykite vėl po kelių minučių:"
+
+msgid ""
+"Message could not be sent because an error with the switchboard occurred:"
+msgstr "Žinutė neišsiųsta, nes įvyko komutatoriaus klaida:"
+
+msgid "Message may have not been sent because an unknown error occurred:"
+msgstr "Žinutė neišsiųsta, nes įvyko nežinoma klaida:"
+
+#, c-format
+msgid "%s has added you to his or her buddy list."
+msgstr "Vartotojas %s įtraukė Jus į savo bičiulių sąrašo."
+
+#, c-format
+msgid "%s has removed you from his or her buddy list."
+msgstr "Vartotojas %s pašalino Jus iš savo bičiulių sąrašo."
+
+msgid "Delete Buddy from Address Book?"
+msgstr "Ar pašalinti bičiulį iš adresų knygos?"
+
+msgid "Do you want to delete this buddy from your address book as well?"
+msgstr "Ar norite pašalinti šį bičiulį taip pat ir iš adresų knygos?"
+
+msgid "The username specified is invalid."
+msgstr "Nurodytas neteisingas vardas."
+
+msgid "This Hotmail account may not be active."
+msgstr "Ši Hotmail paskyra gali būti neaktyvi."
+
+msgid "Profile URL"
+msgstr "Profilio URL"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "MSN Protocol Plugin"
+msgstr "MSN protokolo papildinys"
+
+#, c-format
+msgid "No such user: %s"
+msgstr "Naudotojas nerastas: %s"
+
+msgid "User lookup"
+msgstr "Naudotojo paieška"
+
+msgid "Reading challenge"
+msgstr "Skaitomas serverio iššūkis"
+
+msgid "Unexpected challenge length from server"
+msgstr "Neteisingas serverio iššūkio ilgis"
+
+msgid "Logging in"
+msgstr "Prisijungiama"
+
+msgid "MySpaceIM - No Username Set"
+msgstr "MySpaceIM – nenustatytas naudotojo vardas"
+
+msgid "You appear to have no MySpace username."
+msgstr "Atrodo, kad neturite MySpace naudojo vardo."
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr "Ar norite dabar jį nustatyti? (Pastaba: jis negalės būti keičiamas!)"
+
+msgid "Lost connection with server"
+msgstr "Prarastas prisijungimas prie serverio"
+
+#. Can't write _()'d strings in array initializers. Workaround.
+msgid "New mail messages"
+msgstr "Nauji laiškai"
+
+msgid "New blog comments"
+msgstr "Nauji tinklaraščio komentarai"
+
+msgid "New profile comments"
+msgstr "Nauji profilio komentarai"
+
+msgid "New friend requests!"
+msgstr "Nauji pasiūlymai draugauti!"
+
+msgid "New picture comments"
+msgstr "Nauji nuotraukų komentarai"
+
+msgid "MySpace"
+msgstr "MySpace"
+
+msgid "IM Friends"
+msgstr "IM draugai"
+
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+"%d bičiulis buvo pridėtas ar atnaujintas iš serverio (įskaitant ir "
+"bičiulius, jau esančius serverio sąraše)"
+msgstr[1] ""
+"%d bičiuliai buvo pridėti ar atnaujinti iš serverio (įskaitant ir bičiulius, "
+"jau esančius serverio sąraše)"
+msgstr[2] ""
+"%d bičiulių buvo pridėta ar atnaujinta iš serverio (įskaitant ir bičiulius, "
+"jau esančius serverio sąraše)"
+
+msgid "Add contacts from server"
+msgstr "Pridėti kontaktus iš serverio"
+
+#. The session is now set up, ready to be connected. This emits the
+#. * signedOn signal, so clients can now do anything with msimprpl, and
+#. * we're ready for it (session key, userid, username all setup).
+msgid "Connected"
+msgstr "Prisijungta"
+
+#, c-format
+msgid "Protocol error, code %d: %s"
+msgstr "Protokolo klaida, kodas %d: %s"
+
+#, c-format
+msgid ""
+"%s Your password is %d characters, greater than the expected maximum length "
+"of %d for MySpaceIM. Please shorten your password at http://profileedit."
+"myspace.com/index.cfm?fuseaction=accountSettings.changePassword and try "
+"again."
+msgstr ""
+"%s Jūsų slaptažodis yra %d simbolių, daugiau negu didžiausias MySpaceIM "
+"leidžiamas ilgis %d. Sutrumpinkite savo slaptažodį adresu http://"
+"profileedit.myspace.com/index.cfm?fuseaction=accountSettings.changePassword "
+"ir pabandykite iš naujo."
+
+msgid "MySpaceIM Error"
+msgstr "MySpaceIM klaida"
+
+msgid "Invalid input condition"
+msgstr "Neteisinga įvesties sąlyga"
+
+msgid "Read buffer full (2)"
+msgstr "Skaitymo buferis pripildytas (2)"
+
+msgid "Unparseable message"
+msgstr "Nepavyko išanalizuoti pranešimo"
+
+#, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr "Nepavyko prisijungti prie mazgo: %s (%d)"
+
+msgid "Failed to add buddy"
+msgstr "Nepavyko pridėti bičiulio"
+
+msgid "'addbuddy' command failed."
+msgstr "Komanda „addbuddy“ nepavyko."
+
+msgid "persist command failed"
+msgstr "Komanda „persist“ nepavyko."
+
+msgid "Failed to remove buddy"
+msgstr "Nepavyko pašalinti bičiulio"
+
+msgid "'delbuddy' command failed"
+msgstr "Komanda „delbuddy“ nepavyko"
+
+msgid "blocklist command failed"
+msgstr "Komanda „blocklist“ nepavyko"
+
+msgid "Missing Cipher"
+msgstr "Šifras nerastas"
+
+msgid "The RC4 cipher could not be found"
+msgstr "RC4 šifras nerastas"
+
+msgid ""
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
+"Atnaujinkite libpurple į versiją su RC4 palaikymu (>= 2.0.1). MySpaceIM "
+"papildinys nebus įkeltas."
+
+msgid "Add friends from MySpace.com"
+msgstr "Pridėti draugus iš MySpace.com"
+
+msgid "Importing friends failed"
+msgstr "Nepavyko importuoti draugų"
+
+#. TODO: find out how
+msgid "Find people..."
+msgstr "Ieškoti žmonių..."
+
+msgid "Change IM name..."
+msgstr "Pakeisti vardą skubiosioms žinutėms..."
+
+msgid "myim URL handler"
+msgstr "myim URL doroklė"
+
+msgid "No suitable MySpaceIM account could be found to open this myim URL."
+msgstr "Nerasta tinkama MySpaceIM paskyra šio myim URL atidarymui."
+
+msgid "Enable the proper MySpaceIM account and try again."
+msgstr "Įjunkite tinkamą MySpaceIM paskyrą ir bandykite iš naujo."
+
+msgid "Show display name in status text"
+msgstr "Rodyti vardą būsenos tekste"
+
+msgid "Show headline in status text"
+msgstr "Rodyti antraštę būsenos tekste"
+
+msgid "Send emoticons"
+msgstr "Siųsti jaustukus"
+
+msgid "Screen resolution (dots per inch)"
+msgstr "Ekrano skiriamoji geba (taškais colyje)"
+
+msgid "Base font size (points)"
+msgstr "Numatytojo šrifto dydis (punktais)"
+
+msgid "User"
+msgstr "Vartotojas"
+
+msgid "Headline"
+msgstr "Antraštė"
+
+msgid "Song"
+msgstr "Daina"
+
+msgid "Total Friends"
+msgstr "Iš viso draugų"
+
+msgid "Client Version"
+msgstr "Kliento programos versija"
+
+msgid "MySpaceIM - Username Available"
+msgstr "MySpaceIM – naudotojo vardas laisvas"
+
+msgid "This username is available. Would you like to set it?"
+msgstr "Šis naudotojo vardas laisvas. Ar norite juo pasivadinti?"
+
+msgid "ONCE SET, THIS CANNOT BE CHANGED!"
+msgstr "KARTĄ NUSTATYTAS, JIS NEGALI BŪTI PAKEISTAS!"
+
+msgid "MySpaceIM - Please Set a Username"
+msgstr "MySpaceIM – nustatykite naudotojo vardą"
+
+msgid "This username is unavailable."
+msgstr "Šis naudotojo vardas užimtas."
+
+msgid "Please try another username:"
+msgstr "Pabandykite kitokį naudotojo vardą:"
+
+#. Protocol won't log in now without a username set.. Disconnect
+msgid "No username set"
+msgstr "Nenustatytas naudotojo vardas"
+
+msgid "Please enter a username to check its availability:"
+msgstr "Įveskite naudotojo vardą, kad patikrintumėte, ar jis laisvas:"
+
+#. TODO: icons for each zap
+#. Lots of comments for translators:
+#. Zap means "to strike suddenly and forcefully as if with a
+#. * projectile or weapon." This term often has an electrical
+#. * connotation, for example, "he was zapped by electricity when
+#. * he put a fork in the toaster."
+msgid "Zap"
+msgstr "Pykšt"
+
+#, c-format
+msgid "%s has zapped you!"
+msgstr "%s pykštelėjo jums!"
+
+#, c-format
+msgid "Zapping %s..."
+msgstr "Pykšteliu į %s..."
+
+#. Whack means "to hit or strike someone with a sharp blow"
+msgid "Whack"
+msgstr "Bumpt"
+
+#, c-format
+msgid "%s has whacked you!"
+msgstr "%s bumptelėjo jums!"
+
+#, c-format
+msgid "Whacking %s..."
+msgstr "Bumpteliu į %s..."
+
+#. Torch means "to set on fire." Don't worry, this doesn't
+#. * make a whole lot of sense in English, either. Feel free
+#. * to translate it literally.
+msgid "Torch"
+msgstr "Padegimas"
+
+#, c-format
+msgid "%s has torched you!"
+msgstr "%s jus padegė!"
+
+#, c-format
+msgid "Torching %s..."
+msgstr "Padegu %s..."
+
+#. Smooch means "to kiss someone, often enthusiastically"
+msgid "Smooch"
+msgstr "Bučkis"
+
+#, c-format
+msgid "%s has smooched you!"
+msgstr "%s pabučiavo jus!"
+
+#, c-format
+msgid "Smooching %s..."
+msgstr "Bučiuoju %s..."
+
+#. A hug is a display of affection; wrapping your arms around someone
+msgid "Hug"
+msgstr "Apkabinimas"
+
+#, c-format
+msgid "%s has hugged you!"
+msgstr "%s apkabino jus!"
+
+#, c-format
+msgid "Hugging %s..."
+msgstr "Apkabinu %s..."
+
+#. Slap means "to hit someone with an open/flat hand"
+msgid "Slap"
+msgstr "Pliaukšt"
+
+#, c-format
+msgid "%s has slapped you!"
+msgstr "%s pliaukštelėjo jums!"
+
+#, c-format
+msgid "Slapping %s..."
+msgstr "Pliaukšteliu %s..."
+
+#. Goose means "to pinch someone on their butt"
+msgid "Goose"
+msgstr "Žnybt"
+
+#, c-format
+msgid "%s has goosed you!"
+msgstr "%s jums įžnybo!"
+
+#, c-format
+msgid "Goosing %s..."
+msgstr "Įžnybiu %s..."
+
+#. A high-five is when two people's hands slap each other
+#. * in the air above their heads. It is done to celebrate
+#. * something, often a victory, or to congratulate someone.
+msgid "High-five"
+msgstr "Duodam penkis"
+
+#, c-format
+msgid "%s has high-fived you!"
+msgstr "%s davė jums penkis!"
+
+#, c-format
+msgid "High-fiving %s..."
+msgstr "Duodu penkis %s..."
+
+#. We're not entirely sure what the MySpace people mean by
+#. * this... but we think it's the equivalent of "prank." Or, for
+#. * someone to perform a mischievous trick or practical joke.
+msgid "Punk"
+msgstr "Punkt"
+
+#, c-format
+msgid "%s has punk'd you!"
+msgstr "%s punktelėjo jums!"
+
+#, c-format
+msgid "Punking %s..."
+msgstr "Punkteliu %s..."
+
+#. Raspberry is a slang term for the vibrating sound made
+#. * when you stick your tongue out of your mouth with your
+#. * lips closed and blow. It is typically done when
+#. * gloating or bragging. Nowadays it's a pretty silly
+#. * gesture, so it does not carry a harsh negative
+#. * connotation. It is generally used in a playful tone
+#. * with friends.
+msgid "Raspberry"
+msgstr "Parodyti liežuvį"
+
+#, c-format
+msgid "%s has raspberried you!"
+msgstr "%s parodė jums liežuvį!"
+
+#, c-format
+msgid "Raspberrying %s..."
+msgstr "Rodau liežuvį %s..."
+
+msgid "Required parameters not passed in"
+msgstr "Neperduoti reikalingi parametrai"
+
+msgid "Unable to write to network"
+msgstr "Negalima rašyti į tinklą"
+
+msgid "Unable to read from network"
+msgstr "Negalima skaityti iš tinklo"
+
+msgid "Error communicating with server"
+msgstr "Komunikacijos su serveriu klaida"
+
+msgid "Conference not found"
+msgstr "Konferencija nerasta"
+
+msgid "Conference does not exist"
+msgstr "Konferencija neegzistuoja"
+
+msgid "A folder with that name already exists"
+msgstr "Aplankas su tokiu vardu jau yra"
+
+msgid "Not supported"
+msgstr "Nepalaikoma"
+
+msgid "Password has expired"
+msgstr "Slaptažodžio galiojimo laikas pasibaigė"
+
+msgid "Incorrect password"
+msgstr "Neteisingas slaptažodis"
+
+msgid "User not found"
+msgstr "Vartotojas nerastas"
+
+msgid "Account has been disabled"
+msgstr "Neveiksni paskyra"
+
+msgid "The server could not access the directory"
+msgstr "Serveris negalėjo kreiptis į katalogą"
+
+msgid "Your system administrator has disabled this operation"
+msgstr "Jūsų sistemos administratorius išjungė šią operaciją"
+
+msgid "The server is unavailable; try again later"
+msgstr "Serveris neprieinamas; pabandykite vėliau vėl"
+
+msgid "Cannot add a contact to the same folder twice"
+msgstr "Negalima pridėti kontakto į tą patį katalogą du kartus"
+
+msgid "Cannot add yourself"
+msgstr "Negalima pridėti savęs"
+
+msgid "Master archive is misconfigured"
+msgstr "Pagrindinis archyvas yra blogai sukonfigūruotas"
+
+msgid "Incorrect username or password"
+msgstr "Neteisingas naudotojo vardas ar slaptažodis"
+
+msgid "Could not recognize the host of the username you entered"
+msgstr "Nepavyko atpažinti mazgo, priklausančio šiam naudotojo vardui"
+
+msgid ""
+"Your account has been disabled because too many incorrect passwords were "
+"entered"
+msgstr ""
+"Jūsų paskyra padaryta neveiksnia dėl per daug kartų neteisingai įvesto "
+"slaptažodžio"
+
+msgid "You cannot add the same person twice to a conversation"
+msgstr "Negalite du kartus įtraukti to paties asmens į pokalbį"
+
+msgid "You have reached your limit for the number of contacts allowed"
+msgstr "Jūs pasiekėte savo leistinų kontaktų skaičiaus ribą."
+
+msgid "You have entered an incorrect username"
+msgstr "Jūs įvedėte neteisingą naudotojo vardą"
+
+msgid "An error occurred while updating the directory"
+msgstr "Katalogo atnaujinimo metu įvyko klaida"
+
+msgid "Incompatible protocol version"
+msgstr "Nesuderinama protokolo versija"
+
+msgid "The user has blocked you"
+msgstr "Vartotojas Jus užblokavo"
+
+msgid ""
+"This evaluation version does not allow more than ten users to log in at one "
+"time"
+msgstr ""
+"Ši laikinoji versija neleidžia daugiau kaip dešimčiai vartotojų prisijungti "
+"tuo pačiu metu"
+
+msgid "The user is either offline or you are blocked"
+msgstr "Vartotojas yra atsijungęs arba Jūs esate užblokuotas"
+
+#, c-format
+msgid "Unknown error: 0x%X"
+msgstr "Nežinoma klaida: 0x%X"
+
+#, c-format
+msgid "Login failed (%s)."
+msgstr "Prisijungimas nepavyko (%s)."
+
+#, c-format
+msgid "Unable to send message. Could not get details for user (%s)."
+msgstr "Neįmanoma išsiųsti pranešimo. Nepavyko gauti vartotojo detalių (%s)."
+
+#, c-format
+msgid "Unable to add %s to your buddy list (%s)."
+msgstr "Negalima pridėti %s į Jūsų bičiulių sąrašą (%s)."
+
+#. TODO: Improve this! message to who or for what conference?
+#, c-format
+msgid "Unable to send message (%s)."
+msgstr "Negalima išsiųsti žinutės (%s)."
+
+#, c-format
+msgid "Unable to invite user (%s)."
+msgstr "Negalima pakviesti vartotojo (%s)."
+
+#, c-format
+msgid "Unable to send message to %s. Could not create the conference (%s)."
+msgstr ""
+"Negalima išsiųsti žinutės vartotojui %s. Nepavyko sukurti konferencijos (%s)."
+
+#, c-format
+msgid "Unable to send message. Could not create the conference (%s)."
+msgstr "Nepavyko išsiųsti žinutės. Nepavyko sukurti konferencijos (%s)."
+
+#, c-format
+msgid ""
+"Unable to move user %s to folder %s in the server side list. Error while "
+"creating folder (%s)."
+msgstr ""
+"Nepavyko perkelti vartotojo %s į aplanką %s serverio sąraše. Aplanko kūrimo "
+"klaida (%s)."
+
+#, c-format
+msgid ""
+"Unable to add %s to your buddy list. Error creating folder in server side "
+"list (%s)."
+msgstr ""
+"Nepavyko įtraukti vartotojo %s į Jūsų bičiulių sąrašą. Aplanko kūrimo "
+"serverio sąraše klaida (%s)."
+
+#, c-format
+msgid "Could not get details for user %s (%s)."
+msgstr "Nepavyko gauti detalių apie vartotoją %s (%s)."
+
+#, c-format
+msgid "Unable to add user to privacy list (%s)."
+msgstr "Nepavyko įtraukti vartotojo į privatumo sąrašą (%s)."
+
+#, c-format
+msgid "Unable to add %s to deny list (%s)."
+msgstr "Nepavyko įtraukti %s į draudimo sąrašą (%s)."
+
+#, c-format
+msgid "Unable to add %s to permit list (%s)."
+msgstr "Nepavyko įtraukti %s į leidimo sąrašą (%s)."
+
+#, c-format
+msgid "Unable to remove %s from privacy list (%s)."
+msgstr "Nepavyko pašalinti %s iš privatumo sąrašo (%s)."
+
+#, c-format
+msgid "Unable to change server side privacy settings (%s)."
+msgstr "Nepavyko pakeisti privatumo nuostatų serveryje (%s)."
+
+#, c-format
+msgid "Unable to create conference (%s)."
+msgstr "Nepavyko sukurti konferencijos (%s)."
+
+msgid "Error communicating with server. Closing connection."
+msgstr "Komunikacijos su serveriu klaida. Jungtis uždaroma."
+
+msgid "Telephone Number"
+msgstr "Telefonas"
+
# Ar čia turima omeny „Mr.“, „Ms.“, „Dr.“ ???
-msgid "Personal Title"
-msgstr "Asmens pavadinimas"
-
-msgid "Mailstop"
-msgstr "Mailstop"
-
-msgid "User ID"
-msgstr "Vartotojo ID"
-
-#. tag = _("DN");
-#. value = nm_user_record_get_dn(user_record);
-#. if (value) {
-#. purple_notify_user_info_add_pair(user_info, tag, value);
-#. }
-#.
-msgid "Full name"
-msgstr "Pilnas vardas"
-
-#, c-format
-msgid "GroupWise Conference %d"
-msgstr "GroupWise konferencija %d"
-
-msgid "Authenticating..."
-msgstr "Nustatoma tapatybė..."
-
-msgid "Unable to connect to server."
-msgstr "Nepavyko prisijungti prie serverio."
-
-msgid "Waiting for response..."
-msgstr "Laukiama atsako..."
-
-#, c-format
-msgid "%s has been invited to this conversation."
-msgstr "%s pakviestas į šį pokalbį"
-
-msgid "Invitation to Conversation"
-msgstr "Kvietimas į pokalbį"
-
-#, c-format
-msgid ""
-"Invitation from: %s\n"
-"\n"
-"Sent: %s"
-msgstr ""
-"Kvietimas nuo: %s\n"
-"\n"
-"Išsiųstas: %s"
-
-msgid "Would you like to join the conversation?"
-msgstr "Ar norite prisijungti prie pokalbio?"
-
-msgid "You have been logged out because you logged in at another workstation."
-msgstr "Jūs buvote atjungtas, kadangi prisijungėte kitoje darbo vietoje."
-
-#, c-format
-msgid ""
-"%s appears to be offline and did not receive the message that you just sent."
-msgstr ""
-"Atrodo, kad %s yra atsijungęs ir negavo žinutės, kurią ką tik išsiuntėte."
-
-msgid ""
-"Unable to connect to server. Please enter the address of the server you wish "
-"to connect to."
-msgstr ""
-"Negalima prisijungti prie servrio. Prašome įvesti serverio, prie kurio "
-"norite prisijungti, adresą."
-
-msgid "Error. SSL support is not installed."
-msgstr "Klaida. SSL palaikymas neįdiegtas."
-
-msgid "This conference has been closed. No more messages can be sent."
-msgstr "Ši konferencija uždaryta. Daugiau žinučių siųsti negalima."
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "Novell GroupWise Messenger Protocol Plugin"
-msgstr "Novell GroupWise Messenger protokolo papildinys"
-
-msgid "Server address"
-msgstr "Serverio adresas"
-
-msgid "Server port"
-msgstr "Serverio prievadas"
-
-msgid "Could not join chat room"
-msgstr "Nepavyko prisijungti prie pokalbių kambario"
-
-msgid "Invalid chat room name"
-msgstr "Neteisingas pokalbių kambario pavadinimas"
-
-msgid "Server closed the connection."
-msgstr "Serveris uždarė jungtį."
-
-#, c-format
-msgid ""
-"Lost connection with server:\n"
-"%s"
-msgstr ""
-"Dingo jungtis su serveriu:\n"
-"%s"
-
-msgid "Received invalid data on connection with server."
-msgstr "Jungtimi su serveriu gauti neteisingi duomenys."
-
+msgid "Personal Title"
+msgstr "Asmens pavadinimas"
+
+msgid "Mailstop"
+msgstr "Mailstop"
+
+msgid "User ID"
+msgstr "Vartotojo ID"
+
+#. tag = _("DN");
+#. value = nm_user_record_get_dn(user_record);
+#. if (value) {
+#. purple_notify_user_info_add_pair(user_info, tag, value);
+#. }
+#.
+msgid "Full name"
+msgstr "Pilnas vardas"
+
+#, c-format
+msgid "GroupWise Conference %d"
+msgstr "GroupWise konferencija %d"
+
+msgid "Authenticating..."
+msgstr "Nustatoma tapatybė..."
+
+msgid "Unable to connect to server."
+msgstr "Nepavyko prisijungti prie serverio."
+
+msgid "Waiting for response..."
+msgstr "Laukiama atsako..."
+
+#, c-format
+msgid "%s has been invited to this conversation."
+msgstr "%s pakviestas į šį pokalbį"
+
+msgid "Invitation to Conversation"
+msgstr "Kvietimas į pokalbį"
+
+#, c-format
+msgid ""
+"Invitation from: %s\n"
+"\n"
+"Sent: %s"
+msgstr ""
+"Kvietimas nuo: %s\n"
+"\n"
+"Išsiųstas: %s"
+
+msgid "Would you like to join the conversation?"
+msgstr "Ar norite prisijungti prie pokalbio?"
+
+msgid "You have been logged out because you logged in at another workstation."
+msgstr "Jūs buvote atjungtas, kadangi prisijungėte kitoje darbo vietoje."
+
+#, c-format
+msgid ""
+"%s appears to be offline and did not receive the message that you just sent."
+msgstr ""
+"Atrodo, kad %s yra atsijungęs ir negavo žinutės, kurią ką tik išsiuntėte."
+
+msgid ""
+"Unable to connect to server. Please enter the address of the server you wish "
+"to connect to."
+msgstr ""
+"Negalima prisijungti prie servrio. Prašome įvesti serverio, prie kurio "
+"norite prisijungti, adresą."
+
+msgid "Error. SSL support is not installed."
+msgstr "Klaida. SSL palaikymas neįdiegtas."
+
+msgid "This conference has been closed. No more messages can be sent."
+msgstr "Ši konferencija uždaryta. Daugiau žinučių siųsti negalima."
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Novell GroupWise Messenger Protocol Plugin"
+msgstr "Novell GroupWise Messenger protokolo papildinys"
+
+msgid "Server address"
+msgstr "Serverio adresas"
+
+msgid "Server port"
+msgstr "Serverio prievadas"
+
+msgid "Could not join chat room"
+msgstr "Nepavyko prisijungti prie pokalbių kambario"
+
+msgid "Invalid chat room name"
+msgstr "Neteisingas pokalbių kambario pavadinimas"
+
+msgid "Server closed the connection."
+msgstr "Serveris uždarė jungtį."
+
+#, c-format
+msgid ""
+"Lost connection with server:\n"
+"%s"
+msgstr ""
+"Dingo jungtis su serveriu:\n"
+"%s"
+
+msgid "Received invalid data on connection with server."
+msgstr "Jungtimi su serveriu gauti neteisingi duomenys."
+
# *< api_version
# *< type
# *< ui_requirement
@@ -6284,22 +6452,22 @@ msgstr "Jungtimi su serveriu gauti neteisingi duomenys."
# *< version
# * summary
# * description
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "AIM Protocol Plugin"
-msgstr "AIM protokolo papildinys"
-
-msgid "ICQ UIN..."
-msgstr "ICQ UIN..."
-
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "AIM Protocol Plugin"
+msgstr "AIM protokolo papildinys"
+
+msgid "ICQ UIN..."
+msgstr "ICQ UIN..."
+
# *< api_version
# *< type
# *< ui_requirement
@@ -6309,1444 +6477,1488 @@ msgstr "ICQ UIN..."
# *< id
# *< name
# *< version
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "ICQ Protocol Plugin"
-msgstr "ICQ protokolo papildinys"
-
-msgid "Encoding"
-msgstr "Koduotė"
-
-msgid "The remote user has closed the connection."
-msgstr "Nutolęs vartotojas uždarė jungtį."
-
-msgid "The remote user has declined your request."
-msgstr "Nutolęs vartotojas atmetė Jūsų prašymą."
-
-#, c-format
-msgid "Lost connection with the remote user:<br>%s"
-msgstr "Prarastas ryšys su nutolusiu vartotoju:<br>%s"
-
-msgid "Received invalid data on connection with remote user."
-msgstr "Gauti neteisingi duomenys ryšiu su nutolusiu vartotoju."
-
-msgid "Could not establish a connection with the remote user."
-msgstr "Nepavyko sukurti jungties su nutolusiu vartotoju."
-
-msgid "Direct IM established"
-msgstr "Sukurtas tiesioginis pokalbių ryšis"
-
-#, c-format
-msgid ""
-"%s tried to send you a %s file, but we only allow files up to %s over Direct "
-"IM. Try using file transfer instead.\n"
-msgstr ""
-"%s bandė jums atsiųsti failą %s, tačiau tiesioginiu ryšiu failai leidžiami "
-"tik iki %s. Pabandykite naudoti failų perdavimą vietoje tiesioginio ryšio.\n"
-
-#, c-format
-msgid "File %s is %s, which is larger than the maximum size of %s."
-msgstr ""
-"Failas „%s“ yra %s dydžio – didesnis nei maksimalus leidžiamas dydis %s."
-
-msgid "Invalid error"
-msgstr "Neteisinga klaida"
-
-msgid "Invalid SNAC"
-msgstr "Neteisingas SNAC"
-
-msgid "Rate to host"
-msgstr "Sparta į mazgą"
-
-msgid "Rate to client"
-msgstr "Sparta į klientą"
-
-msgid "Service unavailable"
-msgstr "Tarnyba neprieinama"
-
-msgid "Service not defined"
-msgstr "Tarnyba neaprašyta"
-
-msgid "Obsolete SNAC"
-msgstr "SNAC pasenęs"
-
-msgid "Not supported by host"
-msgstr "Nepalaikoma mazgo"
-
-msgid "Not supported by client"
-msgstr "Nepalaikoma kliento"
-
-msgid "Refused by client"
-msgstr "Atsisakyta kliento"
-
-msgid "Reply too big"
-msgstr "Atsakas per didelis"
-
-msgid "Responses lost"
-msgstr "Prarasti atsakai"
-
-msgid "Request denied"
-msgstr "Užklausa negalima"
-
-msgid "Busted SNAC payload"
-msgstr "Neteisingas SNAC turinys"
-
-msgid "Insufficient rights"
-msgstr "Nepakankamos teisės"
-
-msgid "In local permit/deny"
-msgstr "Yra vietiniame leidimo ar draudimo sąraše"
-
-msgid "Warning level too high (sender)"
-msgstr "Per aukštas siuntėjo perspėjimo lygis"
-
-msgid "Warning level too high (receiver)"
-msgstr "Per aukštas gavėjo perspėjimo lygis"
-
-msgid "User temporarily unavailable"
-msgstr "Vartotojas laikinai neprieinamas"
-
-msgid "No match"
-msgstr "Nėra atitikmens"
-
-msgid "List overflow"
-msgstr "Sąrašo perpildymas"
-
-msgid "Request ambiguous"
-msgstr "Nevienareikšmė užklausa"
-
-msgid "Queue full"
-msgstr "Eilė pilna"
-
-msgid "Not while on AOL"
-msgstr "Negalima prisijungus per AOL"
-
-msgid ""
-"(There was an error receiving this message. The buddy you are speaking with "
-"is probably using a different encoding than expected. If you know what "
-"encoding he is using, you can specify it in the advanced account options for "
-"your AIM/ICQ account.)"
-msgstr ""
-"(Priimant šią žinutę įvyko klaida. Greičiausiai bičiulis su kuriuo "
-"bendraujate naudoja kitokią koduotę nei buvo numatyta. Jei žinote, kokią "
-"koduotę jis naudoja, galite ją nurodyti papildomose AIM/ICQ paskyros "
-"nuostatose."
-
-#, 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 ""
-"(Šio pranešimo gavimo metu įvyko klaida. Arba Jūs ir %s esate pasirinkę "
-"skirtingas koduotes, arba %s naudoja kliento programą su riktais.)"
-
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "ICQ Protocol Plugin"
+msgstr "ICQ protokolo papildinys"
+
+msgid "Encoding"
+msgstr "Koduotė"
+
+msgid "The remote user has closed the connection."
+msgstr "Nutolęs vartotojas uždarė jungtį."
+
+msgid "The remote user has declined your request."
+msgstr "Nutolęs vartotojas atmetė Jūsų prašymą."
+
+#, c-format
+msgid "Lost connection with the remote user:<br>%s"
+msgstr "Prarastas ryšys su nutolusiu vartotoju:<br>%s"
+
+msgid "Received invalid data on connection with remote user."
+msgstr "Gauti neteisingi duomenys ryšiu su nutolusiu vartotoju."
+
+msgid "Could not establish a connection with the remote user."
+msgstr "Nepavyko sukurti jungties su nutolusiu vartotoju."
+
+msgid "Direct IM established"
+msgstr "Sukurtas tiesioginis pokalbių ryšis"
+
+#, c-format
+msgid ""
+"%s tried to send you a %s file, but we only allow files up to %s over Direct "
+"IM. Try using file transfer instead.\n"
+msgstr ""
+"%s bandė jums atsiųsti failą %s, tačiau tiesioginiu ryšiu failai leidžiami "
+"tik iki %s. Pabandykite naudoti failų perdavimą vietoje tiesioginio ryšio.\n"
+
+#, c-format
+msgid "File %s is %s, which is larger than the maximum size of %s."
+msgstr ""
+"Failas „%s“ yra %s dydžio – didesnis nei maksimalus leidžiamas dydis %s."
+
+msgid "Invalid error"
+msgstr "Neteisinga klaida"
+
+msgid "Invalid SNAC"
+msgstr "Neteisingas SNAC"
+
+msgid "Rate to host"
+msgstr "Sparta į mazgą"
+
+msgid "Rate to client"
+msgstr "Sparta į klientą"
+
+msgid "Service unavailable"
+msgstr "Tarnyba neprieinama"
+
+msgid "Service not defined"
+msgstr "Tarnyba neaprašyta"
+
+msgid "Obsolete SNAC"
+msgstr "SNAC pasenęs"
+
+msgid "Not supported by host"
+msgstr "Nepalaikoma mazgo"
+
+msgid "Not supported by client"
+msgstr "Nepalaikoma kliento"
+
+msgid "Refused by client"
+msgstr "Atsisakyta kliento"
+
+msgid "Reply too big"
+msgstr "Atsakas per didelis"
+
+msgid "Responses lost"
+msgstr "Prarasti atsakai"
+
+msgid "Request denied"
+msgstr "Užklausa negalima"
+
+msgid "Busted SNAC payload"
+msgstr "Neteisingas SNAC turinys"
+
+msgid "Insufficient rights"
+msgstr "Nepakankamos teisės"
+
+msgid "In local permit/deny"
+msgstr "Yra vietiniame leidimo ar draudimo sąraše"
+
+msgid "Warning level too high (sender)"
+msgstr "Per aukštas siuntėjo perspėjimo lygis"
+
+msgid "Warning level too high (receiver)"
+msgstr "Per aukštas gavėjo perspėjimo lygis"
+
+msgid "User temporarily unavailable"
+msgstr "Vartotojas laikinai neprieinamas"
+
+msgid "No match"
+msgstr "Nėra atitikmens"
+
+msgid "List overflow"
+msgstr "Sąrašo perpildymas"
+
+msgid "Request ambiguous"
+msgstr "Nevienareikšmė užklausa"
+
+msgid "Queue full"
+msgstr "Eilė pilna"
+
+msgid "Not while on AOL"
+msgstr "Negalima prisijungus per AOL"
+
+msgid ""
+"(There was an error receiving this message. The buddy you are speaking with "
+"is probably using a different encoding than expected. If you know what "
+"encoding he is using, you can specify it in the advanced account options for "
+"your AIM/ICQ account.)"
+msgstr ""
+"(Priimant šią žinutę įvyko klaida. Greičiausiai bičiulis su kuriuo "
+"bendraujate naudoja kitokią koduotę nei buvo numatyta. Jei žinote, kokią "
+"koduotę jis naudoja, galite ją nurodyti papildomose AIM/ICQ paskyros "
+"nuostatose."
+
+#, 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 ""
+"(Šio pranešimo gavimo metu įvyko klaida. Arba Jūs ir %s esate pasirinkę "
+"skirtingas koduotes, arba %s naudoja kliento programą su riktais.)"
+
# Label
-#. Label
-msgid "Buddy Icon"
-msgstr "Vartotojo paveiksliukas"
-
-msgid "Voice"
-msgstr "Balsas"
-
-msgid "AIM Direct IM"
-msgstr "AIM tiesioginės greitosios žinutės"
-
-msgid "Get File"
-msgstr "Gauti failai"
-
-msgid "Games"
-msgstr "Žaidimai"
-
-msgid "Add-Ins"
-msgstr "Papildiniai"
-
-msgid "Send Buddy List"
-msgstr "Nusiųsti bičiulių sąrašą"
-
-msgid "ICQ Direct Connect"
-msgstr "ICQ tiesioginė jungtis"
-
-msgid "AP User"
-msgstr "AP vartotojas"
-
-msgid "ICQ RTF"
-msgstr "ICQ RTF"
-
-msgid "Nihilist"
-msgstr "Nihilistas"
-
-msgid "ICQ Server Relay"
-msgstr "Perdavimas per ICQ serverį"
-
-msgid "Old ICQ UTF8"
-msgstr "Senas ICQ UTF8"
-
-msgid "Trillian Encryption"
-msgstr "Trillian užkodavimas"
-
-msgid "ICQ UTF8"
-msgstr "ICQ UTF8"
-
-msgid "Hiptop"
-msgstr "Hiptop"
-
-msgid "Security Enabled"
-msgstr "Su saugumu"
-
-msgid "Video Chat"
-msgstr "Vaizdinis pokalbis"
-
-msgid "iChat AV"
-msgstr "iChat AV"
-
-msgid "Live Video"
-msgstr "Tiesioginis vaizdas"
-
-msgid "Camera"
-msgstr "Kamera"
-
-msgid "Screen Sharing"
-msgstr "Ekrano dalinimasis"
-
-msgid "Free For Chat"
-msgstr "Prieinamas pokalbiui"
-
-msgid "Not Available"
-msgstr "Neprieinamas"
-
-msgid "Occupied"
-msgstr "Užimtas"
-
-msgid "Web Aware"
-msgstr "Žinantis apie žiniatinklį"
-
-msgid "Invisible"
-msgstr "Nematomas"
-
-msgid "IP Address"
-msgstr "IP adresas"
-
-msgid "Warning Level"
-msgstr "Perspėjimo lygis"
-
-msgid "Buddy Comment"
-msgstr "Bičiulio komentaras"
-
-#, c-format
-msgid ""
-"Could not connect to authentication server:\n"
-"%s"
-msgstr ""
-"Nepavyko prisijungti prie tapatybės nustatymo serverio:\n"
-"%s"
-
-#, c-format
-msgid ""
-"Could not connect to BOS server:\n"
-"%s"
-msgstr ""
-"Nepavyko prisijungti prie BOS serverio:\n"
-"%s"
-
-msgid "Username sent"
-msgstr "Vartotojo vardas nusiųstas"
-
-msgid "Connection established, cookie sent"
-msgstr "Jungtis nustatyta, nusiųstas slapukas"
-
-#. TODO: Don't call this with ssi
-msgid "Finalizing connection"
-msgstr "Pabaigiama jungtis"
-
-#, c-format
-msgid ""
-"Unable to login: Could not sign on as %s because the username is invalid. "
-"Usernames must be a valid email address, or start with a letter and contain "
-"only letters, numbers and spaces, or contain only numbers."
-msgstr ""
-"Negalima prisijungti: vardu %s prisijungti nepavyko, nes naudotojo vardas "
-"neteisingas. Naudotojo vardas turi būti arba teisingas el. pašto adresas, "
-"arba prasidėti raide ir turėti tik raides, skaitmenis ir tarpus, arba turėti "
-"tik skaitmenis."
-
-#. Unregistered screen name
-#. uid is not exist
-msgid "Invalid username."
-msgstr "Neteisingas naudotojo vardas"
-
-msgid "Incorrect password."
-msgstr "Neteisingas slaptažodis."
-
-#. Suspended account
-msgid "Your account is currently suspended."
-msgstr "Jūsų abonentas šiuo metu suspenduotas."
-
-#. service temporarily unavailable
-msgid "The AOL Instant Messenger service is temporarily unavailable."
-msgstr "AOL IM tarnyba laikinai neprieinama"
-
-#. screen name connecting too frequently
-#. IP address connecting too frequently
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
-msgstr ""
-"Jūs per dažnai prisijunginėjote ir atsijunginėjote. Palaukite dešimt minučių "
-"ir bandykite vėl. Jei vis tiek bandysite jungtis, Jums reikės laukti dar "
-"ilgiau."
-
-#, c-format
-msgid "The client version you are using is too old. Please upgrade at %s"
-msgstr ""
-"Jūsų naudojama kliento programos versija yra per sena. Prašome atnaujinti "
-"svetainėje %s"
-
-msgid "Could Not Connect"
-msgstr "Nepavyko prisijungti"
-
-msgid "Received authorization"
-msgstr "Gauta prieigos teisė"
-
-msgid "The SecurID key entered is invalid."
-msgstr "Įvestas SecurID raktas yra neteisingas."
-
-msgid "Enter SecurID"
-msgstr "Įveskite SecurID"
-
-msgid "Enter the 6 digit number from the digital display."
-msgstr "Įveskite 6 skaitmenų skaičių iš skaitmeninio displėjaus."
-
-#. *
-#. * A wrapper for purple_request_action() that uses @c OK and @c Cancel buttons.
-#.
-msgid "_OK"
-msgstr "_Gerai"
-
-#, c-format
-msgid "You may be disconnected shortly. If so, check %s for updates."
-msgstr ""
-"Jus netrukus gali atjungti. Jei taip atsitiks, patikrinkite %s, ar nėra "
-"atnaujinimų."
-
-msgid "Unable to get a valid AIM login hash."
-msgstr "Nepavyko gauti teisingos AIM prisijungimo maišos."
-
-#, c-format
-msgid "You may be disconnected shortly. Check %s for updates."
-msgstr "Jus netrukus gali atjungti. Patikrinkite %s, ar nėra atnaujinimų."
-
-msgid "Unable to get a valid login hash."
-msgstr "Nepavyko gauti teisingos prisijungimo maišos."
-
-msgid "Password sent"
-msgstr "Išsiųstas slaptažodis"
-
-msgid "Unable to initialize connection"
-msgstr "Nepavyko sukurti jungties"
-
-msgid "Please authorize me so I can add you to my buddy list."
-msgstr ""
-"Prašau suteikti man prieigos teisę, kad aš galėčiau įtraukti Jus į savo "
-"bičiulių sąrašą."
-
-msgid "Authorization Request Message:"
-msgstr "Prieigos teisės prašymo žinutė:"
-
-msgid "Please authorize me!"
-msgstr "Prašau suteikti man prieigos teisę!"
-
-msgid "No reason given."
-msgstr "Nenurodyta priežastis."
-
-msgid "Authorization Denied Message:"
-msgstr "Prieigos teisės nesuteikimo žinutė:"
-
-#, c-format
-msgid ""
-"The user %u has denied your request to add them to your buddy list for the "
-"following reason:\n"
-"%s"
-msgstr ""
-"Vartotojas %u atmetė Jūsų prašymą įtraukti jį į Jūsų bičiulių sąrašą dėl "
-"šios priežasties:\n"
-"%s"
-
-msgid "ICQ authorization denied."
-msgstr "ICQ prieigos teisė nesuteikta."
-
-#. Someone has granted you authorization
-#, c-format
-msgid "The user %u has granted your request to add them to your buddy list."
-msgstr "Vartotojas %u suteikė Jums teisę įtraukti jį į Jūsų bičiulių sąrašą."
-
-#, c-format
-msgid ""
-"You have received a special message\n"
-"\n"
-"From: %s [%s]\n"
-"%s"
-msgstr ""
-"Jūs gavote ypatingą žinutę\n"
-"\n"
-"Nuo: %s [%s]\n"
-"%s"
-
-#, c-format
-msgid ""
-"You have received an ICQ page\n"
-"\n"
-"From: %s [%s]\n"
-"%s"
-msgstr ""
-"Jūs gavote ICQ mobiliąją žinutę\n"
-"\n"
-"Nuo: %s [%s]\n"
-"%s"
-
-#, c-format
-msgid ""
-"You have received an ICQ email from %s [%s]\n"
-"\n"
-"Message is:\n"
-"%s"
-msgstr ""
-"Jūs gavote ICQ el. pašto laišką nuo %s [%s]\n"
-"\n"
-"Laiškas yra:\n"
-"%s"
-
-#, c-format
-msgid "ICQ user %u has sent you a buddy: %s (%s)"
-msgstr "ICQ vartotojas %u atsiuntė bičiulio adresą: %s (%s)"
-
-msgid "Do you want to add this buddy to your buddy list?"
-msgstr "Ar norite įtraukti šį bičiulį į Jūsų bičiulių sąrašą?"
-
-msgid "_Add"
-msgstr "_Pridėti"
-
-msgid "_Decline"
-msgstr "_Atsisakyti"
-
-#, 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] "Jūs praleidote %hu neteisingą pranešimą nuo vartotojo %s."
-msgstr[1] "Jūs praleidote %hu neteisingus pranešimus nuo vartotojo %s."
-msgstr[2] "Jūs praleidote %hu neteisingų pranešimų nuo vartotojo %s."
-
-#, c-format
-msgid "You missed %hu message from %s because it was too large."
-msgid_plural "You missed %hu messages from %s because they were too large."
-msgstr[0] "Jūs praleidote %hu per ilgą pranešimą nuo vartotojo %s."
-msgstr[1] "Jūs praleidote %hu per ilgus pranešimus nuo vartotojo %s."
-msgstr[2] "Jūs praleidote %hu per ilgų pranešimų nuo vartotojo %s."
-
-#, c-format
-msgid ""
-"You missed %hu message from %s because the rate limit has been exceeded."
-msgid_plural ""
-"You missed %hu messages from %s because the rate limit has been exceeded."
-msgstr[0] ""
-"Jūs praleidote %hu pranešimą nuo vartotojo %s, kadangi viršyta spartos riba."
-msgstr[1] ""
-"Jūs praleidote %hu pranešimus nuo vartotojo %s, kadangi viršyta spartos riba."
-msgstr[2] ""
-"Jūs praleidote %hu pranešimų nuo vartotojo %s, kadangi viršyta spartos riba."
-
-#, c-format
-msgid ""
-"You missed %hu message from %s because his/her warning level is too high."
-msgid_plural ""
-"You missed %hu messages from %s because his/her warning level is too high."
-msgstr[0] ""
-"Jūs praleidote %hu žinutę nuo vartotojo %s, kadangi jo/jos perspėjimo lygis "
-"yra per aukštas."
-msgstr[1] ""
-"Jūs praleidote %hu žinutes nuo vartotojo %s, kadangi jo/jos perspėjimo lygis "
-"yra per aukštas."
-msgstr[2] ""
-"Jūs praleidote %hu žinučių nuo vartotojo %s, kadangi jo/jos perspėjimo lygis "
-"yra yra per aukštas."
-
-#, c-format
-msgid "You missed %hu message from %s because your warning level is too high."
-msgid_plural ""
-"You missed %hu messages from %s because your warning level is too high."
-msgstr[0] ""
-"Jūs praleidote %hu žinutę nuo vartotojo %s, kadangi Jūsų perspėjimo lygis "
-"yra per aukštas."
-msgstr[1] ""
-"Jūs praleidote %hu žinutes nuo vartotojo %s, kadangi Jūsų perspėjimo lygis "
-"yra per aukštas."
-msgstr[2] ""
-"Jūs praleidote %hu žinučių nuo vartotojo %s, kadangi Jūsų perspėjimo lygis "
-"yra per aukštas."
-
-#, c-format
-msgid "You missed %hu message from %s for an unknown reason."
-msgid_plural "You missed %hu messages from %s for an unknown reason."
-msgstr[0] ""
-"Jūs praleidote %hu pranešimą nuo vartotojo %s dėl nežinomos priežasties."
-msgstr[1] ""
-"Jūs praleidote %hu pranešimus nuo vartotojo %s dėl nežinomos priežasties."
-msgstr[2] ""
-"Jūs praleidote %hu pranešimų nuo vartotojo %s dėl nežinomos priežasties."
-
+#. Label
+msgid "Buddy Icon"
+msgstr "Vartotojo paveiksliukas"
+
+msgid "Voice"
+msgstr "Balsas"
+
+msgid "AIM Direct IM"
+msgstr "AIM tiesioginės greitosios žinutės"
+
+msgid "Get File"
+msgstr "Gauti failai"
+
+msgid "Games"
+msgstr "Žaidimai"
+
+msgid "Add-Ins"
+msgstr "Papildiniai"
+
+msgid "Send Buddy List"
+msgstr "Nusiųsti bičiulių sąrašą"
+
+msgid "ICQ Direct Connect"
+msgstr "ICQ tiesioginė jungtis"
+
+msgid "AP User"
+msgstr "AP vartotojas"
+
+msgid "ICQ RTF"
+msgstr "ICQ RTF"
+
+msgid "Nihilist"
+msgstr "Nihilistas"
+
+msgid "ICQ Server Relay"
+msgstr "Perdavimas per ICQ serverį"
+
+msgid "Old ICQ UTF8"
+msgstr "Senas ICQ UTF8"
+
+msgid "Trillian Encryption"
+msgstr "Trillian užkodavimas"
+
+msgid "ICQ UTF8"
+msgstr "ICQ UTF8"
+
+msgid "Hiptop"
+msgstr "Hiptop"
+
+msgid "Security Enabled"
+msgstr "Su saugumu"
+
+msgid "Video Chat"
+msgstr "Vaizdinis pokalbis"
+
+msgid "iChat AV"
+msgstr "iChat AV"
+
+msgid "Live Video"
+msgstr "Tiesioginis vaizdas"
+
+msgid "Camera"
+msgstr "Kamera"
+
+msgid "Screen Sharing"
+msgstr "Ekrano dalinimasis"
+
+msgid "Free For Chat"
+msgstr "Prieinamas pokalbiui"
+
+msgid "Not Available"
+msgstr "Neprieinamas"
+
+msgid "Occupied"
+msgstr "Užimtas"
+
+msgid "Web Aware"
+msgstr "Žinantis apie žiniatinklį"
+
+msgid "Invisible"
+msgstr "Nematomas"
+
+msgid "IP Address"
+msgstr "IP adresas"
+
+msgid "Warning Level"
+msgstr "Perspėjimo lygis"
+
+msgid "Buddy Comment"
+msgstr "Bičiulio komentaras"
+
+#, c-format
+msgid ""
+"Could not connect to authentication server:\n"
+"%s"
+msgstr ""
+"Nepavyko prisijungti prie tapatybės nustatymo serverio:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not connect to BOS server:\n"
+"%s"
+msgstr ""
+"Nepavyko prisijungti prie BOS serverio:\n"
+"%s"
+
+msgid "Username sent"
+msgstr "Vartotojo vardas nusiųstas"
+
+msgid "Connection established, cookie sent"
+msgstr "Jungtis nustatyta, nusiųstas slapukas"
+
+#. TODO: Don't call this with ssi
+msgid "Finalizing connection"
+msgstr "Pabaigiama jungtis"
+
+#, c-format
+msgid ""
+"Unable to login: Could not sign on as %s because the username is invalid. "
+"Usernames must be a valid email address, or start with a letter and contain "
+"only letters, numbers and spaces, or contain only numbers."
+msgstr ""
+"Negalima prisijungti: vardu %s prisijungti nepavyko, nes naudotojo vardas "
+"neteisingas. Naudotojo vardas turi būti arba teisingas el. pašto adresas, "
+"arba prasidėti raide ir turėti tik raides, skaitmenis ir tarpus, arba turėti "
+"tik skaitmenis."
+
+#. Unregistered username
+#. uid is not exist
+msgid "Invalid username."
+msgstr "Neteisingas naudotojo vardas"
+
+msgid "Incorrect password."
+msgstr "Neteisingas slaptažodis."
+
+#. Suspended account
+msgid "Your account is currently suspended."
+msgstr "Jūsų abonentas šiuo metu suspenduotas."
+
+#. service temporarily unavailable
+msgid "The AOL Instant Messenger service is temporarily unavailable."
+msgstr "AOL IM tarnyba laikinai neprieinama"
+
+#. username connecting too frequently
+#. IP address connecting too frequently
+msgid ""
+"You have been connecting and disconnecting too frequently. Wait ten minutes "
+"and try again. If you continue to try, you will need to wait even longer."
+msgstr ""
+"Jūs per dažnai prisijunginėjote ir atsijunginėjote. Palaukite dešimt minučių "
+"ir bandykite vėl. Jei vis tiek bandysite jungtis, Jums reikės laukti dar "
+"ilgiau."
+
+#, c-format
+msgid "The client version you are using is too old. Please upgrade at %s"
+msgstr ""
+"Jūsų naudojama kliento programos versija yra per sena. Prašome atnaujinti "
+"svetainėje %s"
+
+msgid "Could Not Connect"
+msgstr "Nepavyko prisijungti"
+
+msgid "Received authorization"
+msgstr "Gauta prieigos teisė"
+
+msgid "The SecurID key entered is invalid."
+msgstr "Įvestas SecurID raktas yra neteisingas."
+
+msgid "Enter SecurID"
+msgstr "Įveskite SecurID"
+
+msgid "Enter the 6 digit number from the digital display."
+msgstr "Įveskite 6 skaitmenų skaičių iš skaitmeninio displėjaus."
+
+#. *
+#. * A wrapper for purple_request_action() that uses @c OK and @c Cancel buttons.
+#.
+msgid "_OK"
+msgstr "_Gerai"
+
+#, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
+msgstr ""
+"Jus netrukus gali atjungti. Jei taip atsitiks, patikrinkite %s, ar nėra "
+"atnaujinimų."
+
+msgid "Unable to get a valid AIM login hash."
+msgstr "Nepavyko gauti teisingos AIM prisijungimo maišos."
+
+#, c-format
+msgid "You may be disconnected shortly. Check %s for updates."
+msgstr "Jus netrukus gali atjungti. Patikrinkite %s, ar nėra atnaujinimų."
+
+msgid "Unable to get a valid login hash."
+msgstr "Nepavyko gauti teisingos prisijungimo maišos."
+
+msgid "Password sent"
+msgstr "Išsiųstas slaptažodis"
+
+msgid "Unable to initialize connection"
+msgstr "Nepavyko sukurti jungties"
+
+msgid "Please authorize me so I can add you to my buddy list."
+msgstr ""
+"Prašau suteikti man prieigos teisę, kad aš galėčiau įtraukti Jus į savo "
+"bičiulių sąrašą."
+
+msgid "Authorization Request Message:"
+msgstr "Prieigos teisės prašymo žinutė:"
+
+msgid "Please authorize me!"
+msgstr "Prašau suteikti man prieigos teisę!"
+
+msgid "No reason given."
+msgstr "Nenurodyta priežastis."
+
+msgid "Authorization Denied Message:"
+msgstr "Prieigos teisės nesuteikimo žinutė:"
+
+#, c-format
+msgid ""
+"The user %u has denied your request to add them to your buddy list for the "
+"following reason:\n"
+"%s"
+msgstr ""
+"Vartotojas %u atmetė Jūsų prašymą įtraukti jį į Jūsų bičiulių sąrašą dėl "
+"šios priežasties:\n"
+"%s"
+
+msgid "ICQ authorization denied."
+msgstr "ICQ prieigos teisė nesuteikta."
+
+#. Someone has granted you authorization
+#, c-format
+msgid "The user %u has granted your request to add them to your buddy list."
+msgstr "Vartotojas %u suteikė Jums teisę įtraukti jį į Jūsų bičiulių sąrašą."
+
+#, c-format
+msgid ""
+"You have received a special message\n"
+"\n"
+"From: %s [%s]\n"
+"%s"
+msgstr ""
+"Jūs gavote ypatingą žinutę\n"
+"\n"
+"Nuo: %s [%s]\n"
+"%s"
+
+#, c-format
+msgid ""
+"You have received an ICQ page\n"
+"\n"
+"From: %s [%s]\n"
+"%s"
+msgstr ""
+"Jūs gavote ICQ mobiliąją žinutę\n"
+"\n"
+"Nuo: %s [%s]\n"
+"%s"
+
+#, c-format
+msgid ""
+"You have received an ICQ email from %s [%s]\n"
+"\n"
+"Message is:\n"
+"%s"
+msgstr ""
+"Jūs gavote ICQ el. pašto laišką nuo %s [%s]\n"
+"\n"
+"Laiškas yra:\n"
+"%s"
+
+#, c-format
+msgid "ICQ user %u has sent you a buddy: %s (%s)"
+msgstr "ICQ vartotojas %u atsiuntė bičiulio adresą: %s (%s)"
+
+msgid "Do you want to add this buddy to your buddy list?"
+msgstr "Ar norite įtraukti šį bičiulį į Jūsų bičiulių sąrašą?"
+
+msgid "_Add"
+msgstr "_Pridėti"
+
+msgid "_Decline"
+msgstr "_Atsisakyti"
+
+#, 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] "Jūs praleidote %hu neteisingą pranešimą nuo vartotojo %s."
+msgstr[1] "Jūs praleidote %hu neteisingus pranešimus nuo vartotojo %s."
+msgstr[2] "Jūs praleidote %hu neteisingų pranešimų nuo vartotojo %s."
+
+#, c-format
+msgid "You missed %hu message from %s because it was too large."
+msgid_plural "You missed %hu messages from %s because they were too large."
+msgstr[0] "Jūs praleidote %hu per ilgą pranešimą nuo vartotojo %s."
+msgstr[1] "Jūs praleidote %hu per ilgus pranešimus nuo vartotojo %s."
+msgstr[2] "Jūs praleidote %hu per ilgų pranešimų nuo vartotojo %s."
+
+#, c-format
+msgid ""
+"You missed %hu message from %s because the rate limit has been exceeded."
+msgid_plural ""
+"You missed %hu messages from %s because the rate limit has been exceeded."
+msgstr[0] ""
+"Jūs praleidote %hu pranešimą nuo vartotojo %s, kadangi viršyta spartos riba."
+msgstr[1] ""
+"Jūs praleidote %hu pranešimus nuo vartotojo %s, kadangi viršyta spartos riba."
+msgstr[2] ""
+"Jūs praleidote %hu pranešimų nuo vartotojo %s, kadangi viršyta spartos riba."
+
+#, c-format
+msgid ""
+"You missed %hu message from %s because his/her warning level is too high."
+msgid_plural ""
+"You missed %hu messages from %s because his/her warning level is too high."
+msgstr[0] ""
+"Jūs praleidote %hu žinutę nuo vartotojo %s, kadangi jo/jos perspėjimo lygis "
+"yra per aukštas."
+msgstr[1] ""
+"Jūs praleidote %hu žinutes nuo vartotojo %s, kadangi jo/jos perspėjimo lygis "
+"yra per aukštas."
+msgstr[2] ""
+"Jūs praleidote %hu žinučių nuo vartotojo %s, kadangi jo/jos perspėjimo lygis "
+"yra yra per aukštas."
+
+#, c-format
+msgid "You missed %hu message from %s because your warning level is too high."
+msgid_plural ""
+"You missed %hu messages from %s because your warning level is too high."
+msgstr[0] ""
+"Jūs praleidote %hu žinutę nuo vartotojo %s, kadangi Jūsų perspėjimo lygis "
+"yra per aukštas."
+msgstr[1] ""
+"Jūs praleidote %hu žinutes nuo vartotojo %s, kadangi Jūsų perspėjimo lygis "
+"yra per aukštas."
+msgstr[2] ""
+"Jūs praleidote %hu žinučių nuo vartotojo %s, kadangi Jūsų perspėjimo lygis "
+"yra per aukštas."
+
+#, c-format
+msgid "You missed %hu message from %s for an unknown reason."
+msgid_plural "You missed %hu messages from %s for an unknown reason."
+msgstr[0] ""
+"Jūs praleidote %hu pranešimą nuo vartotojo %s dėl nežinomos priežasties."
+msgstr[1] ""
+"Jūs praleidote %hu pranešimus nuo vartotojo %s dėl nežinomos priežasties."
+msgstr[2] ""
+"Jūs praleidote %hu pranešimų nuo vartotojo %s dėl nežinomos priežasties."
+
# Data is assumed to be the destination sn
-#. Data is assumed to be the destination sn
-#, c-format
-msgid "Unable to send message: %s"
-msgstr "Negalima išsiųsti žinutės: %s"
-
-msgid "Unknown reason."
-msgstr "Nežinoma priežastis."
-
-#, c-format
-msgid "Unable to send message to %s:"
-msgstr "Negalima išsiųsti žinutės vartotojui %s:"
-
-#, c-format
-msgid "User information not available: %s"
-msgstr "Vartotojo informacija neprieinama: %s"
-
-msgid "Online Since"
-msgstr "Prisijungęs nuo"
-
-msgid "Member Since"
-msgstr "Narys nuo"
-
-msgid "Profile"
-msgstr "Profilis"
-
-msgid "Your AIM connection may be lost."
-msgstr "Jūsų AIM jungtis gali būti prarasta."
-
+#. Data is assumed to be the destination bn
+#, c-format
+msgid "Unable to send message: %s"
+msgstr "Negalima išsiųsti žinutės: %s"
+
+msgid "Unknown reason."
+msgstr "Nežinoma priežastis."
+
+#, c-format
+msgid "Unable to send message to %s:"
+msgstr "Negalima išsiųsti žinutės vartotojui %s:"
+
+#, c-format
+msgid "User information not available: %s"
+msgstr "Vartotojo informacija neprieinama: %s"
+
+msgid "Online Since"
+msgstr "Prisijungęs nuo"
+
+msgid "Member Since"
+msgstr "Narys nuo"
+
+msgid "Profile"
+msgstr "Profilis"
+
+msgid "Your AIM connection may be lost."
+msgstr "Jūsų AIM jungtis gali būti prarasta."
+
# The conversion failed!
-#. The conversion failed!
-msgid ""
-"[Unable to display a message from this user because it contained invalid "
-"characters.]"
-msgstr ""
-"[Negalima pavaizduoti žinutės nuo šio vartotojo, kadangi joje yra neteisingų "
-"simbolių.]"
-
-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 ""
-"Paskutinis Jūsų bandytas veiksmas negalėjo būti įvykdytas, nes Jūs viršyjate "
-"spartos ribą. Prašome palaukti 10 sekundžių ir bandyti iš naujo."
-
-#, c-format
-msgid "You have been disconnected from chat room %s."
-msgstr "Jūs buvote atjungtas nuo pokalbių kambario %s."
-
-msgid "Mobile Phone"
-msgstr "Mobilus telefonas"
-
-msgid "Personal Web Page"
-msgstr "Asmeninė svetainė"
-
-#. aim_userinfo_t
-#. strip_html_tags
-msgid "Additional Information"
-msgstr "Papildoma informacija"
-
-msgid "Zip Code"
-msgstr "Pašto kodas"
-
-msgid "Work Information"
-msgstr "Darbovietės informacija"
-
-msgid "Division"
-msgstr "Skyrius"
-
-msgid "Position"
-msgstr "Pareigos"
-
-msgid "Web Page"
-msgstr "Svetainė"
-
-msgid "Pop-Up Message"
-msgstr "Iššokanti žinutė"
-
-#, c-format
-msgid "The following username is associated with %s"
-msgid_plural "The following usernames are associated with %s"
-msgstr[0] "Tolesni naudotojų vardai yra susieti su %s"
-msgstr[1] "Tolesni naudotojų vardai yra susieti su %s"
-msgstr[2] "Tolesni naudotojų vardai yra susieti su %s"
-
-#, c-format
-msgid "No results found for email address %s"
-msgstr "Pagal el. pašto adresą %s jokių rezultatų nerasta"
-
-#, c-format
-msgid "You should receive an email asking to confirm %s."
-msgstr "Jūs turėtumėte gauti el. laišką, prašantį patvirtinti %s."
-
-msgid "Account Confirmation Requested"
-msgstr "Paprašyta abonento patvirtinimo"
-
-#, c-format
-msgid ""
-"Error 0x%04x: Unable to format username because the requested name differs "
-"from the original."
-msgstr ""
-"Klaida 0x%04x: neįmanoma taikyti formato naudotojo vardui, nes paprašytasis "
-"vardas skiriasi nuo pradinio vardo."
-
-#, c-format
-msgid "Error 0x%04x: Unable to format username because it is invalid."
-msgstr ""
-"Klaida 0x%04x: neįmanoma taikyti formato naudotojo vardui, nes paprašytasis "
-"vardas yra neteisingas."
-
-#, c-format
-msgid ""
-"Error 0x%04x: Unable to format username because the requested name is too "
-"long."
-msgstr ""
-"Klaida 0x%04x: neįmanoma taikyti formato naudotojo vardui, nes paprašytasis "
-"vardas yra per ilgas."
-
-#, c-format
-msgid ""
-"Error 0x%04x: Unable to change email address because there is already a "
-"request pending for this username."
-msgstr ""
-"Klaida 0x%04x: neįmanoma pakeisti el. pašto adreso, kadangi šiuo metu laukia "
-"užklausa šiam naudotojo vardui."
-
-#, c-format
-msgid ""
-"Error 0x%04x: Unable to change email address because the given address has "
-"too many usernames associated with it."
-msgstr ""
-"Klaida 0x%04x: neįmanoma pakeisti el. pašto adreso, kadangi duotas adresas "
-"turi per daug su juo susietų naudotojų vardų."
-
-#, c-format
-msgid ""
-"Error 0x%04x: Unable to change email address because the given address is "
-"invalid."
-msgstr ""
-"Klaida 0x%04x: neįmanoma pakeisti el. pašto adreso, kadangi duotas adresas "
-"yra neteisingas."
-
-#, c-format
-msgid "Error 0x%04x: Unknown error."
-msgstr "Klaida 0x%04x: nežinoma klaida."
-
-msgid "Error Changing Account Info"
-msgstr "Abonento informacijos keitimo klaida"
-
-#, c-format
-msgid "The email address for %s is %s"
-msgstr "Vartotojo %s el. pašto adresas yra %s"
-
-msgid "Account Info"
-msgstr "Abonento informacija"
-
-msgid ""
-"Your IM Image was not sent. You must be Direct Connected to send IM Images."
-msgstr ""
-"Jūsų IM vaizdas negalėjo būti išsiųstas. IM vaizdų siuntimui jūs turite būti "
-"tiesiogiai prisijungęs."
-
-msgid "Unable to set AIM profile."
-msgstr "Negalima nustatyti AIM profilio."
-
-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 ""
-"Turbūt Jūs pabandėte nustatyti profilį dar nepasibaigus seanso pradžios "
-"procedūrai. Jūsų profilis lieka nenustatytas. Pabandykite jį nustatyti dar "
-"kartą, kai būsite galutinai prisijungęs."
-
-#, 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] ""
-"Viršytas maksimalus %d baito profilio ilgis, todėl profilis buvo "
-"sutrumpintas."
-msgstr[1] ""
-"Viršytas maksimalus %d baitų profilio ilgis, todėl profilis buvo "
-"sutrumpintas."
-msgstr[2] ""
-"Viršytas maksimalus %d baitų profilio ilgis, todėl profilis buvo "
-"sutrumpintas."
-
-msgid "Profile too long."
-msgstr "Profilis per ilgas."
-
-#, 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] ""
-"Viršytas maksimalus %d baito pasitraukimo žinutės ilgis, todėl žinutė buvo "
-"sutrumpinta."
-msgstr[1] ""
-"Viršytas maksimalus %d baitų pasitraukimo žinutės ilgis, todėl žinutė buvo "
-"sutrumpinta."
-msgstr[2] ""
-"Viršytas maksimalus %d baitų pasitraukimo žinutės ilgis, todėl žinutė buvo "
-"sutrumpinta."
-
-msgid "Away message too long."
-msgstr "Pasitraukimo žinutė per ilga."
-
-#, c-format
-msgid ""
-"Could not add the buddy %s because the username is invalid. Usernames must "
-"be a valid email address, or start with a letter and contain only letters, "
-"numbers and spaces, or contain only numbers."
-msgstr ""
-"Nepavyko pridėti bičiulio %s, nes šis naudotojo vardas neteisingas. Vardai "
-"turi būti arba teisingi el. pašto adresai, arba turi prasidėti raide ir "
-"turėti tik raides, skaitmenis ir tarpus, arba turėti tik skaitmenis."
-
-msgid "Unable to Add"
-msgstr "Negalima pridėti"
-
-msgid "Unable to Retrieve Buddy List"
-msgstr "Negalima gauti bičiulių sąrašo"
-
-msgid ""
-"The AIM servers were temporarily unable to send your buddy list. Your buddy "
-"list is not lost, and will probably become available in a few minutes."
-msgstr ""
-"AIM serveriai laikinai negalėjo išsiųsti Jūsų bičiulių sąrašo. Jis nėra "
-"prarastas ir greičiausiai taps prieinamas už kelių minučių."
-
-msgid "Orphans"
-msgstr "Našlaičiai"
-
-#, 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 ""
-"Nepavyko pridėti bičiulio %s, nes Jūs turite per daug bičiulių savo bičiulių "
-"sąraše. Prašome vieną pašalinti ir bandyti iš naujo."
-
-msgid "(no name)"
-msgstr "(nėra vardo)"
-
-#, c-format
-msgid "Could not add the buddy %s for an unknown reason."
-msgstr "Bičiulio %s pridėti nepavyko dėl nežinamos priežasties."
-
-#, c-format
-msgid ""
-"The user %s has given you permission to add him or her to your buddy list. "
-"Do you want to add this user?"
-msgstr ""
-"Naudotojas %s suteikė Jums teisę pridėti jį į savo bičiulių sąrašą. Ar "
-"norite tai padaryti?"
-
-msgid "Authorization Given"
-msgstr "Suteikta prieigos teisė"
-
-#. Granted
-#, c-format
-msgid "The user %s has granted your request to add them to your buddy list."
-msgstr ""
-"Vartotojas %s patenkino Jūsų prašymą įtrauktį jį į Jūsų bičiulių sarašą."
-
-msgid "Authorization Granted"
-msgstr "Suteikta prieigos teisė"
-
-#. Denied
-#, c-format
-msgid ""
-"The user %s has denied your request to add them to your buddy list for the "
-"following reason:\n"
-"%s"
-msgstr ""
-"Vartotojas %s atmetė Jūsų prašymą įtraukti jį į Jūsų bičiulių sąrašą dėl "
-"šios priežasties:\n"
-"%s"
-
-msgid "Authorization Denied"
-msgstr "Nesuteikta prieigos teisė"
-
-msgid "_Exchange:"
-msgstr "Kom_utatorius:"
-
-msgid "Your IM Image was not sent. You cannot send IM Images in AIM chats."
-msgstr ""
-"Jūsų IM vaizdas nebuvo nusiųstas. Jūs negalite siųsti IM vaizdų AIM "
-"pokalbiuose."
-
-msgid "iTunes Music Store Link"
-msgstr "Muzikos parduotuvės „iTunes“ nuoroda"
-
-#, c-format
-msgid "Buddy Comment for %s"
-msgstr "Bičiulio komentaras apie %s"
-
-msgid "Buddy Comment:"
-msgstr "Bičiulio komentaras:"
-
-#, c-format
-msgid "You have selected to open a Direct IM connection with %s."
-msgstr "Jūs pasirinkote sukurti tiesioginį ryšį su %s."
-
-msgid ""
-"Because this reveals your IP address, it may be considered a security risk. "
-"Do you wish to continue?"
-msgstr ""
-"Kadangi tai atskleidžia Jūsų IP adresą, tai gali būti pavojus saugumui. Ar "
-"norite tęsti?"
-
-msgid "C_onnect"
-msgstr "_Jungtis"
-
-msgid "Get AIM Info"
-msgstr "Gauti AIM informaciją"
-
-#. We only do this if the user is in our buddy list
-msgid "Edit Buddy Comment"
-msgstr "Redaguoti bičiulio komentarą"
-
-msgid "Get Status Msg"
-msgstr "Gauti būsenos pranešimą"
-
-msgid "Direct IM"
-msgstr "Tiesioginis ryšys"
-
-msgid "Re-request Authorization"
-msgstr "Iš naujo paprašyti prieigos teisės"
-
-msgid "Require authorization"
-msgstr "Būtina prieigos teisė"
-
-msgid "Web aware (enabling this will cause you to receive SPAM!)"
-msgstr ""
-"Pasiekiamas per žiniatinklį (angl. web aware). Parinkties aktyvavimas gali "
-"tapti šlamšto gavimo priežastimi!"
-
-msgid "ICQ Privacy Options"
-msgstr "ICQ privatumo parinktys"
-
-msgid "The new formatting is invalid."
-msgstr "Nauja formato informacija yra neteisinga."
-
-msgid "Username formatting can change only capitalization and whitespace."
-msgstr ""
-"Naudotojo vardo formatavimas gali pakeisti tik keitimą didžiosiomis raidėmis "
-"ir matomus tarpus."
-
-msgid "Change Address To:"
-msgstr "Pakeisti adresą į:"
-
-msgid "<i>you are not waiting for authorization</i>"
-msgstr "<i>jūs nelaukiate prieigos suteikimo</i>"
-
-msgid "You are awaiting authorization from the following buddies"
-msgstr "Jūs laukiate prieigos suteikimo iš šių bičiulių"
-
-msgid ""
-"You can re-request authorization from these buddies by right-clicking on "
-"them and selecting \"Re-request Authorization.\""
-msgstr ""
-"Jūs galite iš naujo paprašyti prieigos suteikimo iš šių bičiulių "
-"spragtelėdamas dešiniuoju klavišu ant jų ir pasirinkdamas „Iš naujo "
-"paprašyti prieigos teisės“."
-
-msgid "Find Buddy by Email"
-msgstr "Surasti bičiulį pagal el. pašto adresą"
-
-msgid "Search for a buddy by email address"
-msgstr "Ieškoti bičiulio pagal el. pašto adresą"
-
-msgid "Type the email address of the buddy you are searching for."
-msgstr "Įveskite bičiulio, kurio ieškote, el. pašto adresą."
-
-msgid "_Search"
-msgstr "_Ieškoti"
-
-msgid "Set User Info (web)..."
-msgstr "Nustatyti naudotojo informaciją (žiniatinklis)..."
-
-msgid "Change Password (web)"
-msgstr "Pakeisti slaptažodį (žiniatinklis)..."
-
-msgid "Configure IM Forwarding (web)"
-msgstr "Konfigūruoti žinučių persiuntimą (žiniatinklis)..."
-
-#. ICQ actions
-msgid "Set Privacy Options..."
-msgstr "Nustatyti privatumo parinktis..."
-
-#. AIM actions
-msgid "Confirm Account"
-msgstr "Patvirtinti abonentą"
-
-msgid "Display Currently Registered Email Address"
-msgstr "Parodyti šiuo metu registruotą el. pašto adresą"
-
-msgid "Change Currently Registered Email Address..."
-msgstr "Pakeisti šiuo metu registruotą el. pašto adresą..."
-
-msgid "Show Buddies Awaiting Authorization"
-msgstr "Parodyti bičiulius, laukiančius prieigos suteikimo"
-
-msgid "Search for Buddy by Email Address..."
-msgstr "Ieškoti bičiulio pagal el. pašto adresą..."
-
-msgid "Search for Buddy by Information"
-msgstr "Ieškoti bičiulio pagal informaciją"
-
-msgid ""
-"Always use AIM/ICQ proxy server for\n"
-"file transfers and direct IM (slower,\n"
-"but does not reveal your IP address)"
-msgstr ""
-"Visada naudoti ICQ tarpininkaujantį serverį failų perdavimams ir "
-"tiesioginiam bendravimui (lėčiau, bet neatskleidžia Jūsų IP adreso.)"
-
-msgid "Allow multiple simultaneous logins"
-msgstr "Leisti kelis prisijungimus vienu metu"
-
-#, c-format
-msgid "Asking %s to connect to us at %s:%hu for Direct IM."
-msgstr "Prašoma %s prisijungti prie mūsų tiesioginiu ryšiu adresu %s:%hu."
-
-#, c-format
-msgid "Attempting to connect to %s:%hu."
-msgstr "Bandoma prisijungti prie %s:%hu."
-
-msgid "Attempting to connect via proxy server."
-msgstr "Bandoma jungtis per tarpininką serverį."
-
-#, c-format
-msgid "%s has just asked to directly connect to %s"
-msgstr "%s ką tik paprašė tiesiogiai prisijungti prie %s"
-
-msgid ""
-"This requires a direct connection between the two computers and is necessary "
-"for IM Images. Because your IP address will be revealed, this may be "
-"considered a privacy risk."
-msgstr ""
-"Tai reikalauja tiesioginės jungties tarp dviejų kompiuterių ir yra būtina IM "
-"vaizdams. Kadangi Jūsų IP adresas bus atskleistas, tai gali būti privatumo "
-"rizika."
-
-msgid "Aquarius"
-msgstr "Vandenis"
-
-msgid "Pisces"
-msgstr "Žuvys"
-
-msgid "Aries"
-msgstr "Avinas"
-
-msgid "Taurus"
-msgstr "Jautis"
-
-msgid "Gemini"
-msgstr "Dvyniai"
-
-msgid "Cancer"
-msgstr "Vėžys"
-
-msgid "Leo"
-msgstr "Liūtas"
-
-msgid "Virgo"
-msgstr "Mergelė"
-
-msgid "Libra"
-msgstr "Svarstyklės"
-
-msgid "Scorpio"
-msgstr "Skorpionas"
-
-msgid "Sagittarius"
-msgstr "Šaulys"
-
-msgid "Capricorn"
-msgstr "Ožiaragis"
-
-msgid "Rat"
-msgstr "Žiurkė"
-
-msgid "Ox"
-msgstr "Jautis"
-
-msgid "Tiger"
-msgstr "Tigras"
-
-msgid "Rabbit"
-msgstr "Triušis"
-
-msgid "Dragon"
-msgstr "Drakonas"
-
-msgid "Snake"
-msgstr "Gyvatė"
-
-msgid "Horse"
-msgstr "Arklys"
-
-msgid "Goat"
-msgstr "Ožys"
-
-msgid "Monkey"
-msgstr "Beždžionė"
-
-msgid "Rooster"
-msgstr "Gaidys"
-
-msgid "Dog"
-msgstr "Šuo"
-
-msgid "Pig"
-msgstr "Kiaulė"
-
-msgid "Other"
-msgstr "Kitas"
-
-msgid "Visible"
-msgstr "Matomas"
-
-msgid "Friend Only"
-msgstr "Tik draugams"
-
-msgid "Private"
-msgstr "Privatus"
-
-msgid "QQ Number"
-msgstr "QQ numeris"
-
+#. The conversion failed!
+msgid ""
+"[Unable to display a message from this user because it contained invalid "
+"characters.]"
+msgstr ""
+"[Negalima pavaizduoti žinutės nuo šio vartotojo, kadangi joje yra neteisingų "
+"simbolių.]"
+
+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 ""
+"Paskutinis Jūsų bandytas veiksmas negalėjo būti įvykdytas, nes Jūs viršyjate "
+"spartos ribą. Prašome palaukti 10 sekundžių ir bandyti iš naujo."
+
+#, c-format
+msgid "You have been disconnected from chat room %s."
+msgstr "Jūs buvote atjungtas nuo pokalbių kambario %s."
+
+msgid "Mobile Phone"
+msgstr "Mobilus telefonas"
+
+msgid "Personal Web Page"
+msgstr "Asmeninė svetainė"
+
+#. aim_userinfo_t
+#. strip_html_tags
+msgid "Additional Information"
+msgstr "Papildoma informacija"
+
+msgid "Zip Code"
+msgstr "Pašto kodas"
+
+msgid "Work Information"
+msgstr "Darbovietės informacija"
+
+msgid "Division"
+msgstr "Skyrius"
+
+msgid "Position"
+msgstr "Pareigos"
+
+msgid "Web Page"
+msgstr "Svetainė"
+
+msgid "Pop-Up Message"
+msgstr "Iššokanti žinutė"
+
+#, c-format
+msgid "The following username is associated with %s"
+msgid_plural "The following usernames are associated with %s"
+msgstr[0] "Tolesni naudotojų vardai yra susieti su %s"
+msgstr[1] "Tolesni naudotojų vardai yra susieti su %s"
+msgstr[2] "Tolesni naudotojų vardai yra susieti su %s"
+
+#, c-format
+msgid "No results found for email address %s"
+msgstr "Pagal el. pašto adresą %s jokių rezultatų nerasta"
+
+#, c-format
+msgid "You should receive an email asking to confirm %s."
+msgstr "Jūs turėtumėte gauti el. laišką, prašantį patvirtinti %s."
+
+msgid "Account Confirmation Requested"
+msgstr "Paprašyta abonento patvirtinimo"
+
+#, c-format
+msgid ""
+"Error 0x%04x: Unable to format username because the requested name differs "
+"from the original."
+msgstr ""
+"Klaida 0x%04x: neįmanoma taikyti formato naudotojo vardui, nes paprašytasis "
+"vardas skiriasi nuo pradinio vardo."
+
+#, c-format
+msgid "Error 0x%04x: Unable to format username because it is invalid."
+msgstr ""
+"Klaida 0x%04x: neįmanoma taikyti formato naudotojo vardui, nes paprašytasis "
+"vardas yra neteisingas."
+
+#, c-format
+msgid ""
+"Error 0x%04x: Unable to format username because the requested name is too "
+"long."
+msgstr ""
+"Klaida 0x%04x: neįmanoma taikyti formato naudotojo vardui, nes paprašytasis "
+"vardas yra per ilgas."
+
+#, c-format
+msgid ""
+"Error 0x%04x: Unable to change email address because there is already a "
+"request pending for this username."
+msgstr ""
+"Klaida 0x%04x: neįmanoma pakeisti el. pašto adreso, kadangi šiuo metu laukia "
+"užklausa šiam naudotojo vardui."
+
+#, c-format
+msgid ""
+"Error 0x%04x: Unable to change email address because the given address has "
+"too many usernames associated with it."
+msgstr ""
+"Klaida 0x%04x: neįmanoma pakeisti el. pašto adreso, kadangi duotas adresas "
+"turi per daug su juo susietų naudotojų vardų."
+
+#, c-format
+msgid ""
+"Error 0x%04x: Unable to change email address because the given address is "
+"invalid."
+msgstr ""
+"Klaida 0x%04x: neįmanoma pakeisti el. pašto adreso, kadangi duotas adresas "
+"yra neteisingas."
+
+#, c-format
+msgid "Error 0x%04x: Unknown error."
+msgstr "Klaida 0x%04x: nežinoma klaida."
+
+msgid "Error Changing Account Info"
+msgstr "Abonento informacijos keitimo klaida"
+
+#, c-format
+msgid "The email address for %s is %s"
+msgstr "Vartotojo %s el. pašto adresas yra %s"
+
+msgid "Account Info"
+msgstr "Abonento informacija"
+
+msgid ""
+"Your IM Image was not sent. You must be Direct Connected to send IM Images."
+msgstr ""
+"Jūsų IM vaizdas negalėjo būti išsiųstas. IM vaizdų siuntimui jūs turite būti "
+"tiesiogiai prisijungęs."
+
+msgid "Unable to set AIM profile."
+msgstr "Negalima nustatyti AIM profilio."
+
+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 ""
+"Turbūt Jūs pabandėte nustatyti profilį dar nepasibaigus seanso pradžios "
+"procedūrai. Jūsų profilis lieka nenustatytas. Pabandykite jį nustatyti dar "
+"kartą, kai būsite galutinai prisijungęs."
+
+#, 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] ""
+"Viršytas maksimalus %d baito profilio ilgis, todėl profilis buvo "
+"sutrumpintas."
+msgstr[1] ""
+"Viršytas maksimalus %d baitų profilio ilgis, todėl profilis buvo "
+"sutrumpintas."
+msgstr[2] ""
+"Viršytas maksimalus %d baitų profilio ilgis, todėl profilis buvo "
+"sutrumpintas."
+
+msgid "Profile too long."
+msgstr "Profilis per ilgas."
+
+#, 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] ""
+"Viršytas maksimalus %d baito pasitraukimo žinutės ilgis, todėl žinutė buvo "
+"sutrumpinta."
+msgstr[1] ""
+"Viršytas maksimalus %d baitų pasitraukimo žinutės ilgis, todėl žinutė buvo "
+"sutrumpinta."
+msgstr[2] ""
+"Viršytas maksimalus %d baitų pasitraukimo žinutės ilgis, todėl žinutė buvo "
+"sutrumpinta."
+
+msgid "Away message too long."
+msgstr "Pasitraukimo žinutė per ilga."
+
+#, c-format
+msgid ""
+"Could not add the buddy %s because the username is invalid. Usernames must "
+"be a valid email address, or start with a letter and contain only letters, "
+"numbers and spaces, or contain only numbers."
+msgstr ""
+"Nepavyko pridėti bičiulio %s, nes šis naudotojo vardas neteisingas. Vardai "
+"turi būti arba teisingi el. pašto adresai, arba turi prasidėti raide ir "
+"turėti tik raides, skaitmenis ir tarpus, arba turėti tik skaitmenis."
+
+msgid "Unable to Add"
+msgstr "Negalima pridėti"
+
+msgid "Unable to Retrieve Buddy List"
+msgstr "Negalima gauti bičiulių sąrašo"
+
+msgid ""
+"The AIM servers were temporarily unable to send your buddy list. Your buddy "
+"list is not lost, and will probably become available in a few minutes."
+msgstr ""
+"AIM serveriai laikinai negalėjo išsiųsti Jūsų bičiulių sąrašo. Jis nėra "
+"prarastas ir greičiausiai taps prieinamas už kelių minučių."
+
+msgid "Orphans"
+msgstr "Našlaičiai"
+
+#, 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 ""
+"Nepavyko pridėti bičiulio %s, nes Jūs turite per daug bičiulių savo bičiulių "
+"sąraše. Prašome vieną pašalinti ir bandyti iš naujo."
+
+msgid "(no name)"
+msgstr "(nėra vardo)"
+
+#, c-format
+msgid "Could not add the buddy %s for an unknown reason."
+msgstr "Bičiulio %s pridėti nepavyko dėl nežinamos priežasties."
+
+#, c-format
+msgid ""
+"The user %s has given you permission to add him or her to your buddy list. "
+"Do you want to add this user?"
+msgstr ""
+"Naudotojas %s suteikė Jums teisę pridėti jį į savo bičiulių sąrašą. Ar "
+"norite tai padaryti?"
+
+msgid "Authorization Given"
+msgstr "Suteikta prieigos teisė"
+
+#. Granted
+#, c-format
+msgid "The user %s has granted your request to add them to your buddy list."
+msgstr ""
+"Vartotojas %s patenkino Jūsų prašymą įtrauktį jį į Jūsų bičiulių sarašą."
+
+msgid "Authorization Granted"
+msgstr "Suteikta prieigos teisė"
+
+#. Denied
+#, c-format
+msgid ""
+"The user %s has denied your request to add them to your buddy list for the "
+"following reason:\n"
+"%s"
+msgstr ""
+"Vartotojas %s atmetė Jūsų prašymą įtraukti jį į Jūsų bičiulių sąrašą dėl "
+"šios priežasties:\n"
+"%s"
+
+msgid "Authorization Denied"
+msgstr "Nesuteikta prieigos teisė"
+
+msgid "_Exchange:"
+msgstr "Kom_utatorius:"
+
+msgid "Your IM Image was not sent. You cannot send IM Images in AIM chats."
+msgstr ""
+"Jūsų IM vaizdas nebuvo nusiųstas. Jūs negalite siųsti IM vaizdų AIM "
+"pokalbiuose."
+
+msgid "iTunes Music Store Link"
+msgstr "Muzikos parduotuvės „iTunes“ nuoroda"
+
+#, c-format
+msgid "Buddy Comment for %s"
+msgstr "Bičiulio komentaras apie %s"
+
+msgid "Buddy Comment:"
+msgstr "Bičiulio komentaras:"
+
+#, c-format
+msgid "You have selected to open a Direct IM connection with %s."
+msgstr "Jūs pasirinkote sukurti tiesioginį ryšį su %s."
+
+msgid ""
+"Because this reveals your IP address, it may be considered a security risk. "
+"Do you wish to continue?"
+msgstr ""
+"Kadangi tai atskleidžia Jūsų IP adresą, tai gali būti pavojus saugumui. Ar "
+"norite tęsti?"
+
+msgid "C_onnect"
+msgstr "_Jungtis"
+
+msgid "Get AIM Info"
+msgstr "Gauti AIM informaciją"
+
+#. We only do this if the user is in our buddy list
+msgid "Edit Buddy Comment"
+msgstr "Redaguoti bičiulio komentarą"
+
+msgid "Get Status Msg"
+msgstr "Gauti būsenos pranešimą"
+
+msgid "Direct IM"
+msgstr "Tiesioginis ryšys"
+
+msgid "Re-request Authorization"
+msgstr "Iš naujo paprašyti prieigos teisės"
+
+msgid "Require authorization"
+msgstr "Būtina prieigos teisė"
+
+msgid "Web aware (enabling this will cause you to receive SPAM!)"
+msgstr ""
+"Pasiekiamas per žiniatinklį (angl. web aware). Parinkties aktyvavimas gali "
+"tapti šlamšto gavimo priežastimi!"
+
+msgid "ICQ Privacy Options"
+msgstr "ICQ privatumo parinktys"
+
+msgid "The new formatting is invalid."
+msgstr "Nauja formato informacija yra neteisinga."
+
+msgid "Username formatting can change only capitalization and whitespace."
+msgstr ""
+"Naudotojo vardo formatavimas gali pakeisti tik keitimą didžiosiomis raidėmis "
+"ir matomus tarpus."
+
+msgid "Change Address To:"
+msgstr "Pakeisti adresą į:"
+
+msgid "<i>you are not waiting for authorization</i>"
+msgstr "<i>jūs nelaukiate prieigos suteikimo</i>"
+
+msgid "You are awaiting authorization from the following buddies"
+msgstr "Jūs laukiate prieigos suteikimo iš šių bičiulių"
+
+msgid ""
+"You can re-request authorization from these buddies by right-clicking on "
+"them and selecting \"Re-request Authorization.\""
+msgstr ""
+"Jūs galite iš naujo paprašyti prieigos suteikimo iš šių bičiulių "
+"spragtelėdamas dešiniuoju klavišu ant jų ir pasirinkdamas „Iš naujo "
+"paprašyti prieigos teisės“."
+
+msgid "Find Buddy by Email"
+msgstr "Surasti bičiulį pagal el. pašto adresą"
+
+msgid "Search for a buddy by email address"
+msgstr "Ieškoti bičiulio pagal el. pašto adresą"
+
+msgid "Type the email address of the buddy you are searching for."
+msgstr "Įveskite bičiulio, kurio ieškote, el. pašto adresą."
+
+msgid "_Search"
+msgstr "_Ieškoti"
+
+msgid "Set User Info (web)..."
+msgstr "Nustatyti naudotojo informaciją (žiniatinklis)..."
+
+msgid "Change Password (web)"
+msgstr "Pakeisti slaptažodį (žiniatinklis)..."
+
+msgid "Configure IM Forwarding (web)"
+msgstr "Konfigūruoti žinučių persiuntimą (žiniatinklis)..."
+
+#. ICQ actions
+msgid "Set Privacy Options..."
+msgstr "Nustatyti privatumo parinktis..."
+
+#. AIM actions
+msgid "Confirm Account"
+msgstr "Patvirtinti abonentą"
+
+msgid "Display Currently Registered Email Address"
+msgstr "Parodyti šiuo metu registruotą el. pašto adresą"
+
+msgid "Change Currently Registered Email Address..."
+msgstr "Pakeisti šiuo metu registruotą el. pašto adresą..."
+
+msgid "Show Buddies Awaiting Authorization"
+msgstr "Parodyti bičiulius, laukiančius prieigos suteikimo"
+
+msgid "Search for Buddy by Email Address..."
+msgstr "Ieškoti bičiulio pagal el. pašto adresą..."
+
+msgid "Search for Buddy by Information"
+msgstr "Ieškoti bičiulio pagal informaciją"
+
+msgid ""
+"Always use AIM/ICQ proxy server for\n"
+"file transfers and direct IM (slower,\n"
+"but does not reveal your IP address)"
+msgstr ""
+"Visada naudoti ICQ tarpininkaujantį serverį failų perdavimams ir "
+"tiesioginiam bendravimui (lėčiau, bet neatskleidžia Jūsų IP adreso.)"
+
+msgid "Allow multiple simultaneous logins"
+msgstr "Leisti kelis prisijungimus vienu metu"
+
+#, c-format
+msgid "Asking %s to connect to us at %s:%hu for Direct IM."
+msgstr "Prašoma %s prisijungti prie mūsų tiesioginiu ryšiu adresu %s:%hu."
+
+#, c-format
+msgid "Attempting to connect to %s:%hu."
+msgstr "Bandoma prisijungti prie %s:%hu."
+
+msgid "Attempting to connect via proxy server."
+msgstr "Bandoma jungtis per tarpininką serverį."
+
+#, c-format
+msgid "%s has just asked to directly connect to %s"
+msgstr "%s ką tik paprašė tiesiogiai prisijungti prie %s"
+
+msgid ""
+"This requires a direct connection between the two computers and is necessary "
+"for IM Images. Because your IP address will be revealed, this may be "
+"considered a privacy risk."
+msgstr ""
+"Tai reikalauja tiesioginės jungties tarp dviejų kompiuterių ir yra būtina IM "
+"vaizdams. Kadangi Jūsų IP adresas bus atskleistas, tai gali būti privatumo "
+"rizika."
+
+msgid "Aquarius"
+msgstr "Vandenis"
+
+msgid "Pisces"
+msgstr "Žuvys"
+
+msgid "Aries"
+msgstr "Avinas"
+
+msgid "Taurus"
+msgstr "Jautis"
+
+msgid "Gemini"
+msgstr "Dvyniai"
+
+msgid "Cancer"
+msgstr "Vėžys"
+
+msgid "Leo"
+msgstr "Liūtas"
+
+msgid "Virgo"
+msgstr "Mergelė"
+
+msgid "Libra"
+msgstr "Svarstyklės"
+
+msgid "Scorpio"
+msgstr "Skorpionas"
+
+msgid "Sagittarius"
+msgstr "Šaulys"
+
+msgid "Capricorn"
+msgstr "Ožiaragis"
+
+msgid "Rat"
+msgstr "Žiurkė"
+
+msgid "Ox"
+msgstr "Jautis"
+
+msgid "Tiger"
+msgstr "Tigras"
+
+msgid "Rabbit"
+msgstr "Triušis"
+
+msgid "Dragon"
+msgstr "Drakonas"
+
+msgid "Snake"
+msgstr "Gyvatė"
+
+msgid "Horse"
+msgstr "Arklys"
+
+msgid "Goat"
+msgstr "Ožys"
+
+msgid "Monkey"
+msgstr "Beždžionė"
+
+msgid "Rooster"
+msgstr "Gaidys"
+
+msgid "Dog"
+msgstr "Šuo"
+
+msgid "Pig"
+msgstr "Kiaulė"
+
+msgid "Other"
+msgstr "Kitas"
+
+msgid "Visible"
+msgstr "Matomas"
+
+msgid "Friend Only"
+msgstr "Tik draugams"
+
+msgid "Private"
+msgstr "Privatus"
+
+msgid "QQ Number"
+msgstr "QQ numeris"
+
# Country
-msgid "Country/Region"
-msgstr "Šalis ar regionas"
-
-msgid "Province/State"
-msgstr "Provincija ar valstija"
-
-msgid "Zipcode"
-msgstr "Pašto kodas"
-
-msgid "Phone Number"
-msgstr "Telefonas"
-
-msgid "Authorize adding"
-msgstr "Leisti pridėjimą"
-
-msgid "Cellphone Number"
-msgstr "Mobilus telefonas"
-
-msgid "Personal Introduction"
-msgstr "Asmeninis prisistatymas"
-
-msgid "City/Area"
-msgstr "Miestas/vietovė"
-
-msgid "Publish Mobile"
-msgstr "Skelbti mobilaus telefono numerį"
-
-msgid "Publish Contact"
-msgstr "Skelbti kontaktą"
-
-msgid "College"
-msgstr "Koledžas"
-
-msgid "Horoscope"
-msgstr "Horoskopas"
-
-msgid "Zodiac"
-msgstr "Zodiako ženklas"
-
+msgid "Country/Region"
+msgstr "Šalis ar regionas"
+
+msgid "Province/State"
+msgstr "Provincija ar valstija"
+
+msgid "Zipcode"
+msgstr "Pašto kodas"
+
+msgid "Phone Number"
+msgstr "Telefonas"
+
+msgid "Authorize adding"
+msgstr "Leisti pridėjimą"
+
+msgid "Cellphone Number"
+msgstr "Mobilus telefonas"
+
+msgid "Personal Introduction"
+msgstr "Asmeninis prisistatymas"
+
+msgid "City/Area"
+msgstr "Miestas/vietovė"
+
+msgid "Publish Mobile"
+msgstr "Skelbti mobilaus telefono numerį"
+
+msgid "Publish Contact"
+msgstr "Skelbti kontaktą"
+
+msgid "College"
+msgstr "Koledžas"
+
+msgid "Horoscope"
+msgstr "Horoskopas"
+
+msgid "Zodiac"
+msgstr "Zodiako ženklas"
+
# Block button
-msgid "Blood"
-msgstr "Kraujas"
-
+msgid "Blood"
+msgstr "Kraujas"
+
# True ir False išversti buddy_info kontekste
-msgid "True"
-msgstr "Taip"
-
-msgid "False"
-msgstr "Ne"
-
-msgid "Modify Contact"
-msgstr "Redaguoti kontaktą"
-
-msgid "Modify Address"
-msgstr "Redaguoti adresą"
-
-msgid "Modify Extended Information"
-msgstr "Redaguoti išplėstinę informaciją"
-
-msgid "Modify Information"
-msgstr "Keisti informaciją"
-
-msgid "Update"
-msgstr "Atnaujinti"
-
-msgid "Could not change buddy information."
-msgstr "Nepavyko pakeisti bičiulio informacijos."
-
-#, c-format
-msgid "%u requires verification"
-msgstr "%u reikalauja patikrinimo"
-
-msgid "Add buddy question"
-msgstr "Pridėti klausimą bičiuliui"
-
-msgid "Enter answer here"
-msgstr "Čia įveskite atsakymą"
-
+msgid "True"
+msgstr "Taip"
+
+msgid "False"
+msgstr "Ne"
+
+msgid "Modify Contact"
+msgstr "Redaguoti kontaktą"
+
+msgid "Modify Address"
+msgstr "Redaguoti adresą"
+
+msgid "Modify Extended Information"
+msgstr "Redaguoti išplėstinę informaciją"
+
+msgid "Modify Information"
+msgstr "Keisti informaciją"
+
+msgid "Update"
+msgstr "Atnaujinti"
+
+msgid "Could not change buddy information."
+msgstr "Nepavyko pakeisti bičiulio informacijos."
+
+msgid "Mobile"
+msgstr "Mobilus"
+
+msgid "Note"
+msgstr "Pastabos"
+
+# Label
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "Vartotojo paveiksliukas"
+
+msgid "Change his/her memo as you like"
+msgstr ""
+
+#, fuzzy
+msgid "_Modify"
+msgstr "Keisti"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "Keisti"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "Serveris užimtas"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
+#, c-format
+msgid "%u requires verification"
+msgstr "%u reikalauja patikrinimo"
+
+msgid "Add buddy question"
+msgstr "Pridėti klausimą bičiuliui"
+
+msgid "Enter answer here"
+msgstr "Čia įveskite atsakymą"
+
# Build the Send As menu
-msgid "Send"
-msgstr "Siųsti"
-
-msgid "Invalid answer."
-msgstr "Atsakymas neteisingas."
-
-msgid "Authorization denied message:"
-msgstr "Prieigos teisės nesuteikimo žinutė:"
-
-msgid "Sorry, you're not my style."
-msgstr "Atleisk, tu ne mano tipo."
-
-#, c-format
-msgid "%u needs authorization"
-msgstr "%u reikia leidimo pridėti"
-
-msgid "Add buddy authorize"
-msgstr "Leidimas pridėti bičiulį"
-
-msgid "Enter request here"
-msgstr "Čia įveskite prašymą"
-
-msgid "Would you be my friend?"
-msgstr "Ar draugausi su manimi?"
-
-msgid "QQ Buddy"
-msgstr "QQ bičiulis"
-
-msgid "Add buddy"
-msgstr "Pridėti bičiulį"
-
-msgid "Invalid QQ Number"
-msgstr "Neteisingas QQ numeris"
-
-msgid "Failed sending authorize"
-msgstr "Nepavyko išsiųsti leidimo prašymo"
-
-#, c-format
-msgid "Failed removing buddy %u"
-msgstr "Nepavyko pašalinti bičiulio %u"
-
-#, c-format
-msgid "Failed removing me from %d's buddy list"
-msgstr "Nepavyko pašalinti savęs iš %d bičiulių sąrašo"
-
-msgid "No reason given"
-msgstr "Priežastis nenurodyta"
-
-#. only need to get value
-#, c-format
-msgid "You have been added by %s"
-msgstr "Jus prisidėjo %s"
-
-msgid "Would you like to add him?"
-msgstr "Ar norite jį prisidėti?"
-
-#, c-format
-msgid "Rejected by %s"
-msgstr "Atmesta %s"
-
-#, c-format
-msgid "Message: %s"
-msgstr "Žinutė: %s"
-
-msgid "ID: "
-msgstr "ID: "
-
-msgid "Group ID"
-msgstr "Grupės ID"
-
-msgid "QQ Qun"
-msgstr "QQ Qun"
-
-msgid "Please enter Qun number"
-msgstr "Įveskite QQ pokalbių kambario numerį"
-
-msgid "You can only search for permanent Qun\n"
-msgstr "Galite ieškoti tik pastovių QQ kambarių\n"
-
-msgid "(Invalid UTF-8 string)"
-msgstr "(Neteisinga UTF-8 eilutė)"
-
-msgid "Not member"
-msgstr "Ne narys"
-
-msgid "Member"
-msgstr "Narys"
-
-msgid "Requesting"
-msgstr "Prašoma"
-
-msgid "Admin"
-msgstr "Administratorius"
-
-msgid "Notice"
-msgstr "Pastaba"
-
-msgid "Detail"
-msgstr "Išsamiau"
-
-msgid "Creator"
-msgstr "Kūrėjas"
-
-msgid "About me"
-msgstr "Apie mane"
-
-msgid "Category"
-msgstr "Kategorija"
-
-msgid "The Qun does not allow others to join"
-msgstr "Šis QQ pokalbių kambarys neleidžia prisijungti pašaliniams"
-
-msgid "Join QQ Qun"
-msgstr "Prisijungti prie QQ pokalbių kambario"
-
-msgid "Input request here"
-msgstr "Įveskite prašymą čia"
-
-#, c-format
-msgid "Successfully joined Qun %s (%u)"
-msgstr "Sėkmingai prisijungta prie QQ pokalbių kambario %s (%u)"
-
-msgid "Successfully joined Qun"
-msgstr "Sėkmingai prisijungta prie QQ pokalbių kambario"
-
-#, c-format
-msgid "Qun %u denied from joining"
-msgstr "QQ pokalbių kambarys %u neleido prisijungti"
-
-msgid "QQ Qun Operation"
-msgstr "Operacija su QQ pokalbių kambariu"
-
-msgid "Failed:"
-msgstr "Nepavyko:"
-
-msgid "Join Qun, Unknown Reply"
-msgstr "Prisijungimas prie QQ pokalbių kambario, atsakymas nežinomas"
-
-msgid "Quit Qun"
-msgstr "Palikti QQ pokalbių kambarį"
-
-msgid ""
-"Note, if you are the creator, \n"
-"this operation will eventually remove this Qun."
-msgstr ""
-"Jeigu esate grupės sukūrėjas, ši operacija galiausiai pašalins šį pokalbių "
-"kambarį."
-
-msgid "Sorry, you are not our style"
-msgstr "Atleisk, tu ne mano tipo"
-
-msgid "Successfully changed Qun members"
-msgstr "Sėkmingai pakoregavote QQ pokalbių kambario narius"
-
-msgid "Successfully changed Qun information"
-msgstr "Sėkmingai pakeitėte QQ pokalbių kambario informaciją"
-
-msgid "You have successfully created a Qun"
-msgstr "Jūs sėkmingai sukūrėte pokalbių kambarį"
-
-msgid "Would you like to set up detailed information now?"
-msgstr "Ar norėtumėte nustatyti išsamesnę informaciją dabar?"
-
-msgid "Setup"
-msgstr "Nustatyti"
-
-#, c-format
-msgid "%u requested to join Qun %u for %s"
-msgstr "%u paprašė būti įleistas į QQ pokalbių kambarį %u dėl %s"
-
-#, c-format
-msgid "%u request to join Qun %u"
-msgstr "%u paprašė būti įleistas į QQ pokalbių kambarį %u"
-
-#, c-format
-msgid "Failed to join Qun %u, operated by admin %u"
-msgstr ""
-"Nepavyko prisijungti prie QQ pokalbių kambario %u, kurį administruoja %u"
-
-#, c-format
-msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
-msgstr ""
-"<b>Prisijungimas prie QQ pokalbių kambario %u patvirtintas administratoriaus "
-"%u vartotojui %s</b>"
-
-#, c-format
-msgid "<b>Removed buddy %u.</b>"
-msgstr "<b>Pašalintas bičiulis %u.</b>"
-
-#, c-format
-msgid "<b>New buddy %u joined.</b>"
-msgstr "<b>Naujas bičiulis %u prisijungė.</b>"
-
-#, c-format
-msgid "Unknown-%d"
-msgstr "Nežinomas: %d"
-
-msgid "Level"
-msgstr "Lygis"
-
-msgid " VIP"
-msgstr " VIP"
-
-msgid " TCP"
-msgstr " TCP"
-
-msgid " FromMobile"
-msgstr " „FromMobile“"
-
-msgid " BindMobile"
-msgstr " „BindMobile“"
-
-msgid " Video"
-msgstr " Vaizdas"
-
-msgid " Zone"
-msgstr " Zona"
-
-msgid "Flag"
-msgstr "Vėliava"
-
-msgid "Ver"
-msgstr "Versija"
-
-msgid "Invalid name"
-msgstr "Neteisingas vardas"
-
-msgid "Select icon..."
-msgstr "Pasirinkite piktogramą..."
-
-#, c-format
-msgid "<b>Login time</b>: %d-%d-%d, %d:%d:%d<br>\n"
-msgstr "<b>Prisijungimo laikas</b>: %d-%d-%d, %d:%d:%d<br>\n"
-
-#, c-format
-msgid "<b>Total Online Buddies</b>: %d<br>\n"
-msgstr "<b>Iš viso prisijungusių bičiulių</b>: %d<br>\n"
-
-#, c-format
-msgid "<b>Last Refresh</b>: %d-%d-%d, %d:%d:%d<br>\n"
-msgstr "<b>Paskutinis atnaujinimas</b>: %d-%d-%d, %d:%d:%d<br>\n"
-
-#, c-format
-msgid "<b>Server</b>: %s<br>\n"
-msgstr "<b>Serveris</b>: %s<br>\n"
-
-#, c-format
-msgid "<b>Client Tag</b>: %s<br>\n"
-msgstr "<b>Kliento žymė</b>: %s<br>\n"
-
-#, c-format
-msgid "<b>Connection Mode</b>: %s<br>\n"
-msgstr "<b>Jungties režimas</b>: %s<br>\n"
-
-#, c-format
-msgid "<b>My Internet IP</b>: %s:%d<br>\n"
-msgstr "<b>Mano internetinis adresas</b>: %s:%d<br>\n"
-
-#, c-format
-msgid "<b>Sent</b>: %lu<br>\n"
-msgstr "<b>Išsiųsta</b>: %lu<br>\n"
-
-#, c-format
-msgid "<b>Resend</b>: %lu<br>\n"
-msgstr "<b>Persiųsta</b>: %lu<br>\n"
-
-#, c-format
-msgid "<b>Lost</b>: %lu<br>\n"
-msgstr "<b>Prarasta</b>: %lu<br>\n"
-
-#, c-format
-msgid "<b>Received</b>: %lu<br>\n"
-msgstr "<b>Gauta</b>: %lu<br>\n"
-
-#, c-format
-msgid "<b>Received Duplicate</b>: %lu<br>\n"
-msgstr "<b>Gauta po kelis kartus</b>: %lu<br>\n"
-
-#, c-format
-msgid "<b>Time</b>: %d-%d-%d, %d:%d:%d<br>\n"
-msgstr "<b>Laikas</b>: %d-%d-%d, %d:%d:%d<br>\n"
-
-#, c-format
-msgid "<b>IP</b>: %s<br>\n"
-msgstr "<b>IP</b>: %s<br>\n"
-
-msgid "Login Information"
-msgstr "Prisijungimo informacija"
-
-msgid "<p><b>Original Author</b>:<br>\n"
-msgstr "<p><b>Pirmasis autorius</b>:<br>\n"
-
-msgid "<p><b>Code Contributors</b>:<br>\n"
-msgstr "<p><b>Prie programavimo prisidėjo</b>:<br>\n"
-
-msgid "<p><b>Lovely Patch Writers</b>:<br>\n"
-msgstr "<p><b>Mieli pataisų rašytojai</b>:<br>\n"
-
-msgid "<p><b>Acknowledgement</b>:<br>\n"
-msgstr "<p><b>Padėkos</b>:<br>\n"
-
-msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
-msgstr ""
-"<p><i>Ir visi kiti mažiau žinomi, bet ne mažiau svarbūs vaikinai...</i><br>\n"
-
-msgid "<i>Feel free to join us!</i> :)"
-msgstr "<i>Prašom prisijungti prie mūsų!</i> :)"
-
-#, c-format
-msgid "About OpenQ %s"
-msgstr "Apie OpenQ %s"
-
-msgid "Change Icon"
-msgstr "Pakeisti paveiksliuką"
-
-msgid "Change Password"
-msgstr "Pakeisti slaptažodį"
-
-msgid "Account Information"
-msgstr "Paskyro informacija"
-
-msgid "Update all QQ Quns"
-msgstr "Atnaujinti visus QQ pokalbių kambarius"
-
-msgid "About OpenQ"
-msgstr "Apie OpenQ"
-
+msgid "Send"
+msgstr "Siųsti"
+
+msgid "Invalid answer."
+msgstr "Atsakymas neteisingas."
+
+msgid "Authorization denied message:"
+msgstr "Prieigos teisės nesuteikimo žinutė:"
+
+msgid "Sorry, you're not my style."
+msgstr "Atleisk, tu ne mano tipo."
+
+#, c-format
+msgid "%u needs authorization"
+msgstr "%u reikia leidimo pridėti"
+
+msgid "Add buddy authorize"
+msgstr "Leidimas pridėti bičiulį"
+
+msgid "Enter request here"
+msgstr "Čia įveskite prašymą"
+
+msgid "Would you be my friend?"
+msgstr "Ar draugausi su manimi?"
+
+msgid "QQ Buddy"
+msgstr "QQ bičiulis"
+
+msgid "Add buddy"
+msgstr "Pridėti bičiulį"
+
+msgid "Invalid QQ Number"
+msgstr "Neteisingas QQ numeris"
+
+msgid "Failed sending authorize"
+msgstr "Nepavyko išsiųsti leidimo prašymo"
+
+#, c-format
+msgid "Failed removing buddy %u"
+msgstr "Nepavyko pašalinti bičiulio %u"
+
+#, c-format
+msgid "Failed removing me from %d's buddy list"
+msgstr "Nepavyko pašalinti savęs iš %d bičiulių sąrašo"
+
+msgid "No reason given"
+msgstr "Priežastis nenurodyta"
+
+#. only need to get value
+#, c-format
+msgid "You have been added by %s"
+msgstr "Jus prisidėjo %s"
+
+msgid "Would you like to add him?"
+msgstr "Ar norite jį prisidėti?"
+
+#, c-format
+msgid "Rejected by %s"
+msgstr "Atmesta %s"
+
+#, c-format
+msgid "Message: %s"
+msgstr "Žinutė: %s"
+
+msgid "ID: "
+msgstr "ID: "
+
+msgid "Group ID"
+msgstr "Grupės ID"
+
+msgid "QQ Qun"
+msgstr "QQ Qun"
+
+msgid "Please enter Qun number"
+msgstr "Įveskite QQ pokalbių kambario numerį"
+
+msgid "You can only search for permanent Qun\n"
+msgstr "Galite ieškoti tik pastovių QQ kambarių\n"
+
+msgid "(Invalid UTF-8 string)"
+msgstr "(Neteisinga UTF-8 eilutė)"
+
+msgid "Not member"
+msgstr "Ne narys"
+
+msgid "Member"
+msgstr "Narys"
+
+msgid "Requesting"
+msgstr "Prašoma"
+
+msgid "Admin"
+msgstr "Administratorius"
+
+msgid "Notice"
+msgstr "Pastaba"
+
+msgid "Detail"
+msgstr "Išsamiau"
+
+msgid "Creator"
+msgstr "Kūrėjas"
+
+msgid "About me"
+msgstr "Apie mane"
+
+msgid "Category"
+msgstr "Kategorija"
+
+msgid "The Qun does not allow others to join"
+msgstr "Šis QQ pokalbių kambarys neleidžia prisijungti pašaliniams"
+
+msgid "Join QQ Qun"
+msgstr "Prisijungti prie QQ pokalbių kambario"
+
+msgid "Input request here"
+msgstr "Įveskite prašymą čia"
+
+#, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "Sėkmingai prisijungta prie QQ pokalbių kambario %s (%u)"
+
+msgid "Successfully joined Qun"
+msgstr "Sėkmingai prisijungta prie QQ pokalbių kambario"
+
+#, c-format
+msgid "Qun %u denied from joining"
+msgstr "QQ pokalbių kambarys %u neleido prisijungti"
+
+msgid "QQ Qun Operation"
+msgstr "Operacija su QQ pokalbių kambariu"
+
+msgid "Failed:"
+msgstr "Nepavyko:"
+
+msgid "Join Qun, Unknown Reply"
+msgstr "Prisijungimas prie QQ pokalbių kambario, atsakymas nežinomas"
+
+msgid "Quit Qun"
+msgstr "Palikti QQ pokalbių kambarį"
+
+msgid ""
+"Note, if you are the creator, \n"
+"this operation will eventually remove this Qun."
+msgstr ""
+"Jeigu esate grupės sukūrėjas, ši operacija galiausiai pašalins šį pokalbių "
+"kambarį."
+
+msgid "Sorry, you are not our style"
+msgstr "Atleisk, tu ne mano tipo"
+
+msgid "Successfully changed Qun members"
+msgstr "Sėkmingai pakoregavote QQ pokalbių kambario narius"
+
+msgid "Successfully changed Qun information"
+msgstr "Sėkmingai pakeitėte QQ pokalbių kambario informaciją"
+
+msgid "You have successfully created a Qun"
+msgstr "Jūs sėkmingai sukūrėte pokalbių kambarį"
+
+msgid "Would you like to set up detailed information now?"
+msgstr "Ar norėtumėte nustatyti išsamesnę informaciją dabar?"
+
+msgid "Setup"
+msgstr "Nustatyti"
+
+#, c-format
+msgid "%u requested to join Qun %u for %s"
+msgstr "%u paprašė būti įleistas į QQ pokalbių kambarį %u dėl %s"
+
+#, c-format
+msgid "%u request to join Qun %u"
+msgstr "%u paprašė būti įleistas į QQ pokalbių kambarį %u"
+
+#, c-format
+msgid "Failed to join Qun %u, operated by admin %u"
+msgstr ""
+"Nepavyko prisijungti prie QQ pokalbių kambario %u, kurį administruoja %u"
+
+#, c-format
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
+msgstr ""
+"<b>Prisijungimas prie QQ pokalbių kambario %u patvirtintas administratoriaus "
+"%u vartotojui %s</b>"
+
+#, c-format
+msgid "<b>Removed buddy %u.</b>"
+msgstr "<b>Pašalintas bičiulis %u.</b>"
+
+#, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "<b>Naujas bičiulis %u prisijungė.</b>"
+
+#, c-format
+msgid "Unknown-%d"
+msgstr "Nežinomas: %d"
+
+msgid "Level"
+msgstr "Lygis"
+
+msgid " VIP"
+msgstr " VIP"
+
+msgid " TCP"
+msgstr " TCP"
+
+msgid " FromMobile"
+msgstr " „FromMobile“"
+
+msgid " BindMobile"
+msgstr " „BindMobile“"
+
+msgid " Video"
+msgstr " Vaizdas"
+
+msgid " Zone"
+msgstr " Zona"
+
+msgid "Flag"
+msgstr "Vėliava"
+
+msgid "Ver"
+msgstr "Versija"
+
+msgid "Invalid name"
+msgstr "Neteisingas vardas"
+
+msgid "Select icon..."
+msgstr "Pasirinkite piktogramą..."
+
+#, c-format
+msgid "<b>Login time</b>: %d-%d-%d, %d:%d:%d<br>\n"
+msgstr "<b>Prisijungimo laikas</b>: %d-%d-%d, %d:%d:%d<br>\n"
+
+#, c-format
+msgid "<b>Total Online Buddies</b>: %d<br>\n"
+msgstr "<b>Iš viso prisijungusių bičiulių</b>: %d<br>\n"
+
+#, c-format
+msgid "<b>Last Refresh</b>: %d-%d-%d, %d:%d:%d<br>\n"
+msgstr "<b>Paskutinis atnaujinimas</b>: %d-%d-%d, %d:%d:%d<br>\n"
+
+#, c-format
+msgid "<b>Server</b>: %s<br>\n"
+msgstr "<b>Serveris</b>: %s<br>\n"
+
+#, c-format
+msgid "<b>Client Tag</b>: %s<br>\n"
+msgstr "<b>Kliento žymė</b>: %s<br>\n"
+
+#, c-format
+msgid "<b>Connection Mode</b>: %s<br>\n"
+msgstr "<b>Jungties režimas</b>: %s<br>\n"
+
+#, c-format
+msgid "<b>My Internet IP</b>: %s:%d<br>\n"
+msgstr "<b>Mano internetinis adresas</b>: %s:%d<br>\n"
+
+#, c-format
+msgid "<b>Sent</b>: %lu<br>\n"
+msgstr "<b>Išsiųsta</b>: %lu<br>\n"
+
+#, c-format
+msgid "<b>Resend</b>: %lu<br>\n"
+msgstr "<b>Persiųsta</b>: %lu<br>\n"
+
+#, c-format
+msgid "<b>Lost</b>: %lu<br>\n"
+msgstr "<b>Prarasta</b>: %lu<br>\n"
+
+#, c-format
+msgid "<b>Received</b>: %lu<br>\n"
+msgstr "<b>Gauta</b>: %lu<br>\n"
+
+#, c-format
+msgid "<b>Received Duplicate</b>: %lu<br>\n"
+msgstr "<b>Gauta po kelis kartus</b>: %lu<br>\n"
+
+#, c-format
+msgid "<b>Time</b>: %d-%d-%d, %d:%d:%d<br>\n"
+msgstr "<b>Laikas</b>: %d-%d-%d, %d:%d:%d<br>\n"
+
+#, c-format
+msgid "<b>IP</b>: %s<br>\n"
+msgstr "<b>IP</b>: %s<br>\n"
+
+msgid "Login Information"
+msgstr "Prisijungimo informacija"
+
+msgid "<p><b>Original Author</b>:<br>\n"
+msgstr "<p><b>Pirmasis autorius</b>:<br>\n"
+
+msgid "<p><b>Code Contributors</b>:<br>\n"
+msgstr "<p><b>Prie programavimo prisidėjo</b>:<br>\n"
+
+msgid "<p><b>Lovely Patch Writers</b>:<br>\n"
+msgstr "<p><b>Mieli pataisų rašytojai</b>:<br>\n"
+
+msgid "<p><b>Acknowledgement</b>:<br>\n"
+msgstr "<p><b>Padėkos</b>:<br>\n"
+
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<p><b>Pirmasis autorius</b>:<br>\n"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
+msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
+msgstr ""
+"<p><i>Ir visi kiti mažiau žinomi, bet ne mažiau svarbūs vaikinai...</i><br>\n"
+
+msgid "<i>Feel free to join us!</i> :)"
+msgstr "<i>Prašom prisijungti prie mūsų!</i> :)"
+
+#, c-format
+msgid "About OpenQ %s"
+msgstr "Apie OpenQ %s"
+
+msgid "Change Icon"
+msgstr "Pakeisti paveiksliuką"
+
+msgid "Change Password"
+msgstr "Pakeisti slaptažodį"
+
+msgid "Account Information"
+msgstr "Paskyro informacija"
+
+msgid "Update all QQ Quns"
+msgstr "Atnaujinti visus QQ pokalbių kambarius"
+
+msgid "About OpenQ"
+msgstr "Apie OpenQ"
+
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Redaguoti adresą"
+
# *< api_version
# *< type
# *< ui_requirement
@@ -7756,1465 +7968,1461 @@ msgstr "Apie OpenQ"
# *< id
# *< name
# *< version
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "QQ Protocol Plugin"
-msgstr "QQ protokolo papildinys"
-
-msgid "Auto"
-msgstr "Automatiškai"
-
-msgid "Select Server"
-msgstr "Pasirinkite serverį"
-
-msgid "QQ2005"
-msgstr "QQ2005"
-
-msgid "QQ2007"
-msgstr "QQ2007"
-
-msgid "QQ2008"
-msgstr "QQ2008"
-
-msgid "Connect by TCP"
-msgstr "Prisijungti naudojant TCP"
-
-msgid "Show server notice"
-msgstr "Rodyti serverio žinutę"
-
-msgid "Show server news"
-msgstr "Rodyti serverio naujienas"
-
-msgid "Show chat room when msg comes"
-msgstr "Atėjus žinutei parodyti pokalbių kambarį"
-
-msgid "Keep alive interval (seconds)"
-msgstr "Jungties palaikymo intervalas (sekundėmis)"
-
-msgid "Update interval (seconds)"
-msgstr "Atnaujinimo intervalas (sekundėmis)"
-
-msgid "Cannot decrypt server reply"
-msgstr "Nepavyko iššifruoti serverio atsakymo"
-
-#, c-format
-msgid "Failed requesting token, 0x%02X"
-msgstr "Nepavyko gauti žetono, 0x%02X"
-
-#, c-format
-msgid "Invalid token len, %d"
-msgstr "Neteisingas žymės ilgis %d"
-
-#. extend redirect used in QQ2006
-msgid "Redirect_EX is not currently supported"
-msgstr "„Redirect_EX“ šiuo metu nepalaikoma"
-
-#. need activation
-#. need activation
-#. need activation
-msgid "Activation required"
-msgstr "Būtinas aktyvavimas"
-
-#, c-format
-msgid "Unknown reply code when logging in (0x%02X)"
-msgstr "Nežinomas atsakymo kodas prisijungimo metu (0x%02X)"
-
-msgid "Could not decrypt server reply"
-msgstr "Nepavyko iššifruoti serverio atsakymo"
-
-msgid "Requesting captcha"
-msgstr "Prašoma „captcha“"
-
-msgid "Checking captcha"
-msgstr "Tikrinama „captcha“"
-
-msgid "Failed captcha verification"
-msgstr "Nepavyko „captcha“ patikrinimas"
-
-msgid "Captcha Image"
-msgstr "„Captcha“ paveiksliukas"
-
-msgid "Enter code"
-msgstr "Įveskite kodą"
-
-msgid "QQ Captcha Verification"
-msgstr "QQ „captcha“ patikrinimas"
-
-msgid "Enter the text from the image"
-msgstr "Įveskite tekstą iš paveiksliuko"
-
-#, c-format
-msgid "Unknown reply when checking password (0x%02X)"
-msgstr "Nežinomas atsakymas tikrinant slaptažodį (0x%02X)"
-
-#, c-format
-msgid ""
-"Unknown reply code when logging in (0x%02X):\n"
-"%s"
-msgstr ""
-"Neteisingas atsakymo kodas prisijungimo metu (0x%02X):\n"
-"%s"
-
-#. we didn't successfully connect. tdt->toc_fd is valid here
-msgid "Unable to connect."
-msgstr "Nepavyko prisijungti."
-
-msgid "Socket error"
-msgstr "Jungties klaida"
-
-msgid "Unable to read from socket"
-msgstr "Nepavyko skaityti iš jungties"
-
-msgid "Write Error"
-msgstr "Rašymo klaida"
-
-msgid "Connection lost"
-msgstr "Prisijungimas prarastas"
-
-msgid "Getting server"
-msgstr "Gaunamas serveris"
-
-msgid "Requesting token"
-msgstr "Prašoma žymės"
-
-msgid "Couldn't resolve host"
-msgstr "Nepavyko nustatyti mazgo IP adreso"
-
-msgid "Invalid server or port"
-msgstr "Neteisingas serveris ar prievadas"
-
-msgid "Connecting to server"
-msgstr "Jungiamasi prie serverio"
-
-msgid "QQ Error"
-msgstr "QQ klaida"
-
-#, c-format
-msgid ""
-"Server News:\n"
-"%s\n"
-"%s\n"
-"%s"
-msgstr ""
-"Serverio naujienos:\n"
-"%s\n"
-"%s\n"
-"%s"
-
-#, c-format
-msgid "%s:%s"
-msgstr "%s:%s"
-
-#, c-format
-msgid "From %s:"
-msgstr "Nuo %s:"
-
-#, c-format
-msgid ""
-"Server notice From %s: \n"
-"%s"
-msgstr ""
-"Serverio žinutė iš %s: \n"
-"%s"
-
-msgid "Unknown SERVER CMD"
-msgstr "Nežinoma „SERVER CMD“"
-
-#, c-format
-msgid ""
-"Error reply of %s(0x%02X)\n"
-"Room %u, reply 0x%02X"
-msgstr ""
-"Klaidos atsakymas iš %s(0x%02X)\n"
-"Kambarys %u, atsakymas 0x%02X"
-
-msgid "QQ Qun Command"
-msgstr "QQ pokalbių kambario komanda"
-
-msgid "Could not decrypt login reply"
-msgstr "Nepavyko iššifruoti prisijungimo atsakymo"
-
-msgid "Unknown LOGIN CMD"
-msgstr "Nežinoma „LOGIN CMD“"
-
-msgid "Unknown CLIENT CMD"
-msgstr "Nežinoma „CLIENT CMD“"
-
-#, c-format
-msgid "%d has declined the file %s"
-msgstr "%d atmetė failą %s"
-
-msgid "File Send"
-msgstr "Failo siuntimas"
-
-#, c-format
-msgid "%d canceled the transfer of %s"
-msgstr "%d nutraukė %s perdavimą"
-
-msgid "Connection closed (writing)"
-msgstr "Jungtis uždaryta (rašoma)"
-
-#, c-format
-msgid "<b>Group Title:</b> %s<br>"
-msgstr "<b>Grupės pavadinimas:</b> %s<br>"
-
-#, c-format
-msgid "<b>Notes Group ID:</b> %s<br>"
-msgstr "<b>„Notes“ grupės identifikatorius:</b> %s<br>"
-
-#, c-format
-msgid "Info for Group %s"
-msgstr "Informacija apie grupę %s"
-
-msgid "Notes Address Book Information"
-msgstr "„Notes“ adresų knygos informacija"
-
-msgid "Invite Group to Conference..."
-msgstr "Pakviesti grupę į konferenciją..."
-
-msgid "Get Notes Address Book Info"
-msgstr "Gauti „Notes“ adresų knygos informaciją"
-
-msgid "Sending Handshake"
-msgstr "Siunčiamas pasisveikinimas"
-
-msgid "Waiting for Handshake Acknowledgement"
-msgstr "Laukiama pasisveikinimo patvirtinimo"
-
-msgid "Handshake Acknowledged, Sending Login"
-msgstr "Pasisveikinimas patvirtintas, siunčiama prisijungimo informacija"
-
-msgid "Waiting for Login Acknowledgement"
-msgstr "Laukiama prisijungimo patvirtinimo"
-
-msgid "Login Redirected"
-msgstr "Prisijungimas nukreiptas kitur"
-
-msgid "Forcing Login"
-msgstr "Jungiamasi"
-
-msgid "Login Acknowledged"
-msgstr "Prisijungimas patvirtintas"
-
-msgid "Starting Services"
-msgstr "Paleidžiami servisai"
-
-#, c-format
-msgid ""
-"A Sametime administrator has issued the following announcement on server %s"
-msgstr "„Sametime“ administratoriaus skelbimas serveryje %s"
-
-msgid "Sametime Administrator Announcement"
-msgstr "„Sametime“ administratoriaus skelbimas"
-
-msgid "Connection reset"
-msgstr "Jungtis atidaryta iš naujo"
-
-#, c-format
-msgid "Error reading from socket: %s"
-msgstr "Skaitymo iš jungties klaida: %s"
-
-#. this is a regular connect, error out
-msgid "Unable to connect to host"
-msgstr "Nepavyko prisijungti prie mazgo"
-
-#, c-format
-msgid "Announcement from %s"
-msgstr "Abonento %s skelbimas"
-
-msgid "Conference Closed"
-msgstr "Konferencija uždaryta"
-
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "QQ Protocol Plugin"
+msgstr "QQ protokolo papildinys"
+
+msgid "Auto"
+msgstr "Automatiškai"
+
+msgid "Select Server"
+msgstr "Pasirinkite serverį"
+
+msgid "QQ2005"
+msgstr "QQ2005"
+
+msgid "QQ2007"
+msgstr "QQ2007"
+
+msgid "QQ2008"
+msgstr "QQ2008"
+
+msgid "Connect by TCP"
+msgstr "Prisijungti naudojant TCP"
+
+msgid "Show server notice"
+msgstr "Rodyti serverio žinutę"
+
+msgid "Show server news"
+msgstr "Rodyti serverio naujienas"
+
+msgid "Show chat room when msg comes"
+msgstr "Atėjus žinutei parodyti pokalbių kambarį"
+
+msgid "Keep alive interval (seconds)"
+msgstr "Jungties palaikymo intervalas (sekundėmis)"
+
+msgid "Update interval (seconds)"
+msgstr "Atnaujinimo intervalas (sekundėmis)"
+
+msgid "Cannot decrypt server reply"
+msgstr "Nepavyko iššifruoti serverio atsakymo"
+
+#, c-format
+msgid "Failed requesting token, 0x%02X"
+msgstr "Nepavyko gauti žetono, 0x%02X"
+
+#, c-format
+msgid "Invalid token len, %d"
+msgstr "Neteisingas žymės ilgis %d"
+
+#. extend redirect used in QQ2006
+msgid "Redirect_EX is not currently supported"
+msgstr "„Redirect_EX“ šiuo metu nepalaikoma"
+
+#. need activation
+#. need activation
+#. need activation
+msgid "Activation required"
+msgstr "Būtinas aktyvavimas"
+
+#, c-format
+msgid "Unknown reply code when logging in (0x%02X)"
+msgstr "Nežinomas atsakymo kodas prisijungimo metu (0x%02X)"
+
+msgid "Could not decrypt server reply"
+msgstr "Nepavyko iššifruoti serverio atsakymo"
+
+msgid "Requesting captcha"
+msgstr "Prašoma „captcha“"
+
+msgid "Checking captcha"
+msgstr "Tikrinama „captcha“"
+
+msgid "Failed captcha verification"
+msgstr "Nepavyko „captcha“ patikrinimas"
+
+msgid "Captcha Image"
+msgstr "„Captcha“ paveiksliukas"
+
+msgid "Enter code"
+msgstr "Įveskite kodą"
+
+msgid "QQ Captcha Verification"
+msgstr "QQ „captcha“ patikrinimas"
+
+msgid "Enter the text from the image"
+msgstr "Įveskite tekstą iš paveiksliuko"
+
+#, c-format
+msgid "Unknown reply when checking password (0x%02X)"
+msgstr "Nežinomas atsakymas tikrinant slaptažodį (0x%02X)"
+
+#, c-format
+msgid ""
+"Unknown reply code when logging in (0x%02X):\n"
+"%s"
+msgstr ""
+"Neteisingas atsakymo kodas prisijungimo metu (0x%02X):\n"
+"%s"
+
+msgid "Unable to connect."
+msgstr "Nepavyko prisijungti."
+
+msgid "Socket error"
+msgstr "Jungties klaida"
+
+msgid "Unable to read from socket"
+msgstr "Nepavyko skaityti iš jungties"
+
+msgid "Write Error"
+msgstr "Rašymo klaida"
+
+msgid "Connection lost"
+msgstr "Prisijungimas prarastas"
+
+msgid "Getting server"
+msgstr "Gaunamas serveris"
+
+msgid "Requesting token"
+msgstr "Prašoma žymės"
+
+msgid "Couldn't resolve host"
+msgstr "Nepavyko nustatyti mazgo IP adreso"
+
+msgid "Invalid server or port"
+msgstr "Neteisingas serveris ar prievadas"
+
+msgid "Connecting to server"
+msgstr "Jungiamasi prie serverio"
+
+msgid "QQ Error"
+msgstr "QQ klaida"
+
+#, c-format
+msgid ""
+"Server News:\n"
+"%s\n"
+"%s\n"
+"%s"
+msgstr ""
+"Serverio naujienos:\n"
+"%s\n"
+"%s\n"
+"%s"
+
+#, c-format
+msgid "%s:%s"
+msgstr "%s:%s"
+
+#, c-format
+msgid "From %s:"
+msgstr "Nuo %s:"
+
+#, c-format
+msgid ""
+"Server notice From %s: \n"
+"%s"
+msgstr ""
+"Serverio žinutė iš %s: \n"
+"%s"
+
+msgid "Unknown SERVER CMD"
+msgstr "Nežinoma „SERVER CMD“"
+
+#, c-format
+msgid ""
+"Error reply of %s(0x%02X)\n"
+"Room %u, reply 0x%02X"
+msgstr ""
+"Klaidos atsakymas iš %s(0x%02X)\n"
+"Kambarys %u, atsakymas 0x%02X"
+
+msgid "QQ Qun Command"
+msgstr "QQ pokalbių kambario komanda"
+
+msgid "Could not decrypt login reply"
+msgstr "Nepavyko iššifruoti prisijungimo atsakymo"
+
+msgid "Unknown LOGIN CMD"
+msgstr "Nežinoma „LOGIN CMD“"
+
+msgid "Unknown CLIENT CMD"
+msgstr "Nežinoma „CLIENT CMD“"
+
+#, c-format
+msgid "%d has declined the file %s"
+msgstr "%d atmetė failą %s"
+
+msgid "File Send"
+msgstr "Failo siuntimas"
+
+#, c-format
+msgid "%d canceled the transfer of %s"
+msgstr "%d nutraukė %s perdavimą"
+
+msgid "Connection closed (writing)"
+msgstr "Jungtis uždaryta (rašoma)"
+
+#, c-format
+msgid "<b>Group Title:</b> %s<br>"
+msgstr "<b>Grupės pavadinimas:</b> %s<br>"
+
+#, c-format
+msgid "<b>Notes Group ID:</b> %s<br>"
+msgstr "<b>„Notes“ grupės identifikatorius:</b> %s<br>"
+
+#, c-format
+msgid "Info for Group %s"
+msgstr "Informacija apie grupę %s"
+
+msgid "Notes Address Book Information"
+msgstr "„Notes“ adresų knygos informacija"
+
+msgid "Invite Group to Conference..."
+msgstr "Pakviesti grupę į konferenciją..."
+
+msgid "Get Notes Address Book Info"
+msgstr "Gauti „Notes“ adresų knygos informaciją"
+
+msgid "Sending Handshake"
+msgstr "Siunčiamas pasisveikinimas"
+
+msgid "Waiting for Handshake Acknowledgement"
+msgstr "Laukiama pasisveikinimo patvirtinimo"
+
+msgid "Handshake Acknowledged, Sending Login"
+msgstr "Pasisveikinimas patvirtintas, siunčiama prisijungimo informacija"
+
+msgid "Waiting for Login Acknowledgement"
+msgstr "Laukiama prisijungimo patvirtinimo"
+
+msgid "Login Redirected"
+msgstr "Prisijungimas nukreiptas kitur"
+
+msgid "Forcing Login"
+msgstr "Jungiamasi"
+
+msgid "Login Acknowledged"
+msgstr "Prisijungimas patvirtintas"
+
+msgid "Starting Services"
+msgstr "Paleidžiami servisai"
+
+#, c-format
+msgid ""
+"A Sametime administrator has issued the following announcement on server %s"
+msgstr "„Sametime“ administratoriaus skelbimas serveryje %s"
+
+msgid "Sametime Administrator Announcement"
+msgstr "„Sametime“ administratoriaus skelbimas"
+
+msgid "Connection reset"
+msgstr "Jungtis atidaryta iš naujo"
+
+#, c-format
+msgid "Error reading from socket: %s"
+msgstr "Skaitymo iš jungties klaida: %s"
+
+#. this is a regular connect, error out
+msgid "Unable to connect to host"
+msgstr "Nepavyko prisijungti prie mazgo"
+
+#, c-format
+msgid "Announcement from %s"
+msgstr "Abonento %s skelbimas"
+
+msgid "Conference Closed"
+msgstr "Konferencija uždaryta"
+
# Data is assumed to be the destination sn
-msgid "Unable to send message: "
-msgstr "Negalima išsiųsti žinutės: "
-
-msgid "Place Closed"
-msgstr "Vieta uždaryta"
-
-msgid "Microphone"
-msgstr "Mikrofonas"
-
-msgid "Speakers"
-msgstr "Garsiakalbiai"
-
-msgid "Video Camera"
-msgstr "Videokamera"
-
-msgid "Supports"
-msgstr "Palaiko"
-
-msgid "External User"
-msgstr "Išorinis vartotoajs"
-
-msgid "Create conference with user"
-msgstr "Sukurti konferenciją su vartotoju"
-
-#, c-format
-msgid ""
-"Please enter a topic for the new conference, and an invitation message to be "
-"sent to %s"
-msgstr "Įveskite naujos konferencijos temą ir pakvietimo žinutę vartotojui %s"
-
-msgid "New Conference"
-msgstr "Nauja konferencija"
-
-msgid "Create"
-msgstr "Sukurti"
-
-msgid "Available Conferences"
-msgstr "Esamos konferencijos"
-
-msgid "Create New Conference..."
-msgstr "Sukurti naują konferenciją..."
-
-msgid "Invite user to a conference"
-msgstr "Pakviesti vartotoją į konferenciją"
-
-#, c-format
-msgid ""
-"Select a conference from the list below to send an invite to user %s. Select "
-"\"Create New Conference\" if you'd like to create a new conference to invite "
-"this user to."
-msgstr ""
-"Pasirinkite konferenciją iš sąrašo žemiau, į kurią kviesite vartotoją %s. "
-"Pasirinkite „Sukurti naują konferenciją“, jei norite sukurti naują "
-"konfereciją ir į ją pakviesti šį vartotoją."
-
-msgid "Invite to Conference"
-msgstr "Pakviesti į konferenciją"
-
-msgid "Invite to Conference..."
-msgstr "Pakviesti į konferenciją..."
-
-msgid "Send TEST Announcement"
-msgstr "Nusiųsti „TEST“ skelbimą"
-
-msgid "Topic:"
-msgstr "Tema:"
-
-msgid "No Sametime Community Server specified"
-msgstr "Nenurodytas „Sametime“ bendruomenės serveris"
-
-#, c-format
-msgid ""
-"No host or IP address has been configured for the Meanwhile account %s. "
-"Please enter one below to continue logging in."
-msgstr ""
-"Nenustatytas mazgo vardas ar IP adresas „Meanwhile“ paskyrai %s. Įveskite "
-"vieną iš jų žemiau, jei norite pradėti seansą."
-
-msgid "Meanwhile Connection Setup"
-msgstr "„Meanwhile“ jungties sąranka"
-
-msgid "No Sametime Community Server Specified"
-msgstr "Nenurodytas „Sametime“ bendruomenės serveris"
-
-msgid "Connect"
-msgstr "Jungtis"
-
-#, c-format
-msgid "Unknown (0x%04x)<br>"
-msgstr "Nežinomas (0x%04x)<br>"
-
-msgid "Last Known Client"
-msgstr "Paskutinis žinomas klientas"
-
-msgid "User Name"
-msgstr "Vartotojo vardas"
-
-msgid "Sametime ID"
-msgstr "„Sametime“ identifikatorius"
-
-msgid "An ambiguous user ID was entered"
-msgstr "Įvestas nevienareikšmiškas vartotojo identifikatorius"
-
-#, 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 ""
-"Rastas daugiau nei vienas vartotojas su tokiu pačiu identifikatoriumi „%s“. "
-"Pasirinkite norimą vartotoją iš žemiau esančio sąrašo, kuris bus įtrauktas į "
-"bičiulių sąrašą."
-
-msgid "Select User"
-msgstr "Pasirinkite vartotoją"
-
-msgid "Unable to add user: user not found"
-msgstr "Negalima pridėti vartotojo: jis nerastas"
-
-#, 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 ""
-"Identifikatorius „%s“ neatitiko jokių vartotojų Jūsų „Sametime“ "
-"bendruomenėje. Šis įrašas pašalintas iš Jūsų bičiulių sąrašo."
-
-#, c-format
-msgid ""
-"Error reading file %s: \n"
-"%s\n"
-msgstr ""
-"Failo %s skaitymo klaida:\n"
-"%s\n"
-
-msgid "Remotely Stored Buddy List"
-msgstr "Nutolusiai saugomas bičiulių sąrašas"
-
-msgid "Buddy List Storage Mode"
-msgstr "Bičiulių sąrašo saugojimo būdas"
-
-msgid "Local Buddy List Only"
-msgstr "Tik vietinis bičiulių sąrašas"
-
-msgid "Merge List from Server"
-msgstr "Prijungti sąrašą iš serverio"
-
-msgid "Merge and Save List to Server"
-msgstr "Prijungti ir išsaugoti sąrašą serveryje"
-
-msgid "Synchronize List with Server"
-msgstr "Suvienodinti sąrašą su serveriu"
-
-#, c-format
-msgid "Import Sametime List for Account %s"
-msgstr "Importuoti „Sametime“ sąrašą paskyrai %s"
-
-#, c-format
-msgid "Export Sametime List for Account %s"
-msgstr "Eksportuoti „Sametime“ sąrašą paskyrai %s"
-
-msgid "Unable to add group: group exists"
-msgstr "Nepavyko pridėti grupės: ji jau yra"
-
-#, c-format
-msgid "A group named '%s' already exists in your buddy list."
-msgstr "Grupė pavadinimu „%s“ jau yra Jūsų bičiulių sąraše."
-
-msgid "Unable to add group"
-msgstr "Nepavyko pridėti grupės"
-
-msgid "Possible Matches"
-msgstr "Galimi variantai"
-
-msgid "Notes Address Book group results"
-msgstr "Grupės iš „Notes“ adresų knygos"
-
-#, c-format
-msgid ""
-"The identifier '%s' may possibly refer to any of the following Notes Address "
-"Book groups. Please select the correct group from the list below to add it "
-"to your buddy list."
-msgstr ""
-"Identifikatorius „%s“ gali nurodyti bet kurią iš žemiau esančių „Notes“ "
-"adresų knygos grupių. Pasirinkite iš žemiau esančio sąrašo grupę, kurią "
-"norite įtraukti į savo bičiulių sąrašą."
-
-msgid "Select Notes Address Book"
-msgstr "Pasirinkite „Notes“ adresų knygos grupę"
-
-msgid "Unable to add group: group not found"
-msgstr "Negalima pridėti grupės: ji nerasta"
-
-#, c-format
-msgid ""
-"The identifier '%s' did not match any Notes Address Book groups in your "
-"Sametime community."
-msgstr ""
-"Identifikatorius „%s“ neatitiko jokių „Notes“ adresų knygos grupių Jūsų "
-"„Sametime“ bendruomenėje."
-
-msgid "Notes Address Book Group"
-msgstr "„Notes“ adresų knygos grupė"
-
-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 ""
-"Įveskite „Notes“ adresų knygos grupės pavadinimą žemiau esančiame lauke, kad "
-"pridėtumėte grupę ir jos narius į savo bičiulių sąrašą."
-
-#, c-format
-msgid "Search results for '%s'"
-msgstr "„%s“ paieškos rezultatai"
-
-#, 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 ""
-"Identifikatorius „%s“ gali nurodyti bet kurį iš žemiau esančių vartotojų. "
-"Galite įtraukti šiuos vartotojus į savo bičiulių sąrašą arba nusiųsti jiems "
-"žinutes žemiau esančių mygtukų pagalba."
-
-msgid "Search Results"
-msgstr "Paieškos rezultatai"
-
-msgid "No matches"
-msgstr "Nėra atitikimų"
-
-#, c-format
-msgid "The identifier '%s' did not match any users in your Sametime community."
-msgstr ""
-"Identifikatorius „%s“ neatitiko jokių vartotojų Jūsų „Sametime“ "
-"bendruomenėje."
-
-msgid "No Matches"
-msgstr "Nėra atitikimų"
-
-msgid "Search for a user"
-msgstr "Ieškoti vartotojo"
-
-msgid ""
-"Enter a name or partial ID in the field below to search for matching users "
-"in your Sametime community."
-msgstr ""
-"Įveskite vardą ar identifikatoriaus dalį žemiau esančiame lauke, kad "
-"ieškotumėte atitinkančių vartotojų Jūsų „Sametime“ bendruomenėje."
-
-msgid "User Search"
-msgstr "Vartotojų paieška"
-
-msgid "Import Sametime List..."
-msgstr "Importuoti „Sametime“ sąrašą..."
-
-msgid "Export Sametime List..."
-msgstr "Eksportuoti „Sametime“ sąrašą..."
-
-msgid "Add Notes Address Book Group..."
-msgstr "Pridėti „Notes“ adresų knygos grupę..."
-
-msgid "User Search..."
-msgstr "Ieškoti vartotojų..."
-
-msgid "Force login (ignore server redirects)"
-msgstr "Jungtis priverstinai (ignoruoti serverio nukreipimus kitur)"
-
-#. pretend to be Sametime Connect
-msgid "Hide client identity"
-msgstr "Slėpti kliento tapatybę"
-
-#, c-format
-msgid "User %s is not present in the network"
-msgstr "Vartotojo %s nėra tinkle"
-
-msgid "Key Agreement"
-msgstr "Susitarimas dėl raktų"
-
-msgid "Cannot perform the key agreement"
-msgstr "Nepavyko susitarti dėl raktų"
-
-msgid "Error occurred during key agreement"
-msgstr "Susitarimo dėl raktų metu įvyko klaida"
-
-msgid "Key Agreement failed"
-msgstr "Susitarimas dėl raktų nepavyko"
-
-msgid "Timeout during key agreement"
-msgstr "Baigėsi susitarimo dėl raktų laukimo laikas"
-
-msgid "Key agreement was aborted"
-msgstr "Susitarimas dėl raktų buvo nutrauktas"
-
-msgid "Key agreement is already started"
-msgstr "Susitarimas dėl raktų jau pradėtas"
-
-msgid "Key agreement cannot be started with yourself"
-msgstr "Negalima susitarti dėl raktų su savimi pačiu"
-
-msgid "The remote user is not present in the network any more"
-msgstr "Nuotolinio vartotojo nebėra tinkle"
-
-#, c-format
-msgid ""
-"Key agreement request received from %s. Would you like to perform the key "
-"agreement?"
-msgstr ""
-"Susitarimo dėl raktų prašymas gautas iš vartotojo %s. Ar norite susitarti?"
-
-#, c-format
-msgid ""
-"The remote user is waiting key agreement on:\n"
-"Remote host: %s\n"
-"Remote port: %d"
-msgstr ""
-"Nuotolinis vartotojas laukia susitarimo dėl raktų\n"
-"nuotoliniame mazge: %s\n"
-"nuotoliniame prievade: %d"
-
-msgid "Key Agreement Request"
-msgstr "Susitarymo dėl raktų prašymas"
-
-msgid "IM With Password"
-msgstr "IM su slaptažodžiu"
-
-msgid "Cannot set IM key"
-msgstr "Negalima nustatyti IM rakto"
-
-msgid "Set IM Password"
-msgstr "Nustatyti IM slaptažodį"
-
-msgid "Get Public Key"
-msgstr "Gauti viešąjį raktą"
-
-msgid "Cannot fetch the public key"
-msgstr "Negalima gauti viešojo rakto"
-
-msgid "Show Public Key"
-msgstr "Rodyti viešąjį raktą"
-
-msgid "Could not load public key"
-msgstr "Nepavyko įkelti viešojo rakto"
-
-msgid "User Information"
-msgstr "Vartotojo informacija"
-
-msgid "Cannot get user information"
-msgstr "Nepavyko gauti vartotojo informacijos"
-
-#, c-format
-msgid "The %s buddy is not trusted"
-msgstr "Bičiulis %s nėra patikimas"
-
-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 ""
-"Jūs negalite gauti informavimo apie bičiulį, kol neimportavote jo viešojo "
-"rakto. Tam jūs galite naudoti „Gauti viešąjį raktą\"."
-
-#. Open file selector to select the public key.
-msgid "Open..."
-msgstr "Atverti..."
-
-#, c-format
-msgid "The %s buddy is not present in the network"
-msgstr "Bičiulio %s nėra tinkle"
-
-msgid ""
-"To add the buddy you must import his/her public key. Press Import to import "
-"a public key."
-msgstr ""
-"Norėdami pridėti bičiulį, privalote importuoti jo viešąjį raktą. Tam "
-"paspauskite „Importuoti...“."
-
-msgid "_Import..."
-msgstr "_Importuoti..."
-
-msgid "Select correct user"
-msgstr "Pasirinkite teisingą vartotoją"
-
-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 ""
-"Rastas daugiau nei vienas vartotojas su tokiu pačiu viešuoju raktu. "
-"Pasirinkite teisingą vartotoją iš sąrašo, kuris bus įtrauktas į bičiulių "
-"sąrašą."
-
-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 ""
-"Rastas daugiau nei vienas vartotojas su tokiu pačiu vardu. Pasirinkite "
-"teisingą vartotoją iš sąrašo, kuris bus įtrauktas į bičiulių sąrašą."
-
-msgid "Detached"
-msgstr "Atskirtas"
-
-msgid "Indisposed"
-msgstr "Nelinkęs"
-
-msgid "Wake Me Up"
-msgstr "Pažadink mane"
-
-msgid "Hyper Active"
-msgstr "Hiperaktyvus"
-
-msgid "Robot"
-msgstr "Robotas"
-
-msgid "Happy"
-msgstr "Laimingas"
-
-msgid "Sad"
-msgstr "Liūdnas"
-
-msgid "Angry"
-msgstr "Piktas"
-
-msgid "Jealous"
-msgstr "Pavydus"
-
-msgid "Ashamed"
-msgstr "Susigėdęs"
-
-msgid "Invincible"
-msgstr "Nenugalimas"
-
-msgid "In Love"
-msgstr "Įsimylėjęs"
-
-msgid "Sleepy"
-msgstr "Mieguistas"
-
-msgid "Bored"
-msgstr "Nuobuodžiaujantis"
-
-msgid "Excited"
-msgstr "Susijaudinęs"
-
-msgid "Anxious"
-msgstr "Neramus"
-
-msgid "User Modes"
-msgstr "Vartotojo būsenos"
-
-msgid "Preferred Contact"
-msgstr "Labiausiai mėgstamas kontaktas"
-
-msgid "Preferred Language"
-msgstr "Labiausiai mėgstama kalba"
-
-msgid "Device"
-msgstr "Įrenginys"
-
-msgid "Timezone"
-msgstr "Laiko juosta"
-
-msgid "Geolocation"
-msgstr "Geografinė vietovė"
-
-msgid "Reset IM Key"
-msgstr "Atstatyti IM raktą"
-
-msgid "IM with Key Exchange"
-msgstr "Pokalbiai su raktų apsikeitimu"
-
-msgid "IM with Password"
-msgstr "Pokalbiai su slaptažodžiu"
-
-msgid "Get Public Key..."
-msgstr "Gauti viešąjį raktą..."
-
-msgid "Kill User"
-msgstr "Išmesti vartotoją"
-
-msgid "Draw On Whiteboard"
-msgstr "Piešti ant lentos"
-
-msgid "_Passphrase:"
-msgstr "Sla_ptafrazė:"
-
-#, c-format
-msgid "Channel %s does not exist in the network"
-msgstr "Kanalas %s tinkle neegzistuoja"
-
-msgid "Channel Information"
-msgstr "Kanalo informacija"
-
-msgid "Cannot get channel information"
-msgstr "Nepavyko gauti kanalo informacijos"
-
-#, c-format
-msgid "<b>Channel Name:</b> %s"
-msgstr "<b>Kanalo pavadinimas:</b> %s"
-
-#, c-format
-msgid "<br><b>User Count:</b> %d"
-msgstr "<br><b>Vartotojų skaičius:</b> %d"
-
-#, c-format
-msgid "<br><b>Channel Founder:</b> %s"
-msgstr "<br><b>Kanalo įkūrėjas:</b> %s"
-
-#, c-format
-msgid "<br><b>Channel Cipher:</b> %s"
-msgstr "<br><b>Kanalo šifras:</b> %s"
-
-#. Definition of HMAC: http://en.wikipedia.org/wiki/HMAC
-#, c-format
-msgid "<br><b>Channel HMAC:</b> %s"
-msgstr "<br><b>Kanalo HMAC:</b> %s"
-
-#, c-format
-msgid "<br><b>Channel Topic:</b><br>%s"
-msgstr "<br><b>Kanalo tema:</b><br>%s"
-
-#, c-format
-msgid "<br><b>Channel Modes:</b> "
-msgstr "<br><b>Kanalo būsenos:</b> "
-
-#, c-format
-msgid "<br><b>Founder Key Fingerprint:</b><br>%s"
-msgstr "<br><b>Įkūrėjo rakto kontrolinis kodas:</b><br>%s"
-
-#, c-format
-msgid "<br><b>Founder Key Babbleprint:</b><br>%s"
-msgstr "<br><b>Įkūrėjo rakto žodinis kontrolinis kodas:</b><br>%s"
-
-msgid "Add Channel Public Key"
-msgstr "Pridėti kanalo viešąjį raktą"
-
-#. Add new public key
-msgid "Open Public Key..."
-msgstr "Atverti viešąjį raktą..."
-
-msgid "Channel Passphrase"
-msgstr "Kanalo slaptafrazė"
-
-msgid "Channel Public Keys List"
-msgstr "Kanalo viešųjų raktų sąrašas"
-
-#, 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 ""
-"Tapatybės nustatymas kanale skirtas apsaugoti kanalą nuo nesankcionuotos "
-"prieigos. Tapatybės nustatymas gali būti pagrįstas slaptafraze ir "
-"skaitmeniniais parašais. Jei yra nustatyta slaptafrazė, ji yra reikalinga "
-"norint prisijungti prie kanalo. Jei kanalo viešieji raktai yra nustatyti, "
-"gali prisijungti tik vartotojai, kurių viešieji raktai yra priskirti."
-
-msgid "Channel Authentication"
-msgstr "Tapatybės nustatymas kanale"
-
-msgid "Add / Remove"
-msgstr "Įdėti / Pašalinti"
-
-msgid "Group Name"
-msgstr "Grupės pavadinimas"
-
-msgid "Passphrase"
-msgstr "Slaptafrazė"
-
-#, c-format
-msgid "Please enter the %s channel private group name and passphrase."
-msgstr "Prašom įvesti kanalo %s privačios grupės pavadinimą ir slaptafrazę."
-
-msgid "Add Channel Private Group"
-msgstr "Pridėti kanalo privačią grupę"
-
-msgid "User Limit"
-msgstr "Vartotojų skaičiaus riba"
-
-msgid "Set user limit on channel. Set to zero to reset user limit."
-msgstr ""
-"Nustatyti kanalo vartotojų skaičiaus ribą. Nulio reikšmė pašalina ribą."
-
-msgid "Invite List"
-msgstr "Pakvietimų sąrašas"
-
-msgid "Ban List"
-msgstr "Draudimų sąrašas"
-
-msgid "Add Private Group"
-msgstr "Pridėti privačią grupę"
-
-msgid "Reset Permanent"
-msgstr "Atšaukti pastovumą"
-
-msgid "Set Permanent"
-msgstr "Nustatyti pastovumą"
-
-msgid "Set User Limit"
-msgstr "Nustatyti vartotojų skaičiaus ribą"
-
-msgid "Reset Topic Restriction"
-msgstr "Atšaukti temos apribojimą"
-
-msgid "Set Topic Restriction"
-msgstr "Nustatyti temos apribojimą"
-
-msgid "Reset Private Channel"
-msgstr "Atšaukti kanalo privatumą"
-
-msgid "Set Private Channel"
-msgstr "Nustatyti kanalo privatumą"
-
-msgid "Reset Secret Channel"
-msgstr "Atšaukti kanalo slaptumą"
-
-msgid "Set Secret Channel"
-msgstr "Nustatyti kanalo slaptumą"
-
-#, c-format
-msgid ""
-"You have to join the %s channel before you are able to join the private group"
-msgstr ""
-"Jūs turite prisijungti prie kanalo %s, kad galėtumėte prisijungti prie "
-"privačios grupės"
-
-msgid "Join Private Group"
-msgstr "Prisijungti prie privačios grupės"
-
-msgid "Cannot join private group"
-msgstr "Negalima prisijungti prie privačios grupės"
-
-msgid "Call Command"
-msgstr "Komandos iškvietimas"
-
-msgid "Cannot call command"
-msgstr "Negalima iškviesti komandos"
-
-msgid "Unknown command"
-msgstr "Nežinoma komanda"
-
-msgid "Secure File Transfer"
-msgstr "Saugus failų perdavimas"
-
-msgid "Error during file transfer"
-msgstr "Failų perdavimo klaida"
-
-msgid "Remote disconnected"
-msgstr "Kitas vartotojas atsijungė"
-
-msgid "Permission denied"
-msgstr "Neduotas leidimas"
-
-msgid "Key agreement failed"
-msgstr "Raktų sutikimas nepavyko"
-
-msgid "Connection timed out"
-msgstr "Jungties laukimo laikas baigėsi"
-
-msgid "Creating connection failed"
-msgstr "Jungties sukūrimo klaida"
-
-msgid "File transfer session does not exist"
-msgstr "Failų perdavimo seansas neegzistuoja"
-
-msgid "No file transfer session active"
-msgstr "Nėra aktyvaus failų perdavimo seanso"
-
-msgid "File transfer already started"
-msgstr "Failo perdavimas jau pradėtas"
-
-msgid "Could not perform key agreement for file transfer"
-msgstr "Nepavyko atlikti raktų sutarimo failų perdavimui"
-
-msgid "Could not start the file transfer"
-msgstr "Nepavyko pradėti failų perdavimo"
-
-msgid "Cannot send file"
-msgstr "Negalima išsiųsti failo"
-
-msgid "Error occurred"
-msgstr "Įvyko klaida"
-
-#, c-format
-msgid "%s has changed the topic of <I>%s</I> to: %s"
-msgstr "%s pakeitė kanalo <I>%s</I> temą į: %s"
-
-#, c-format
-msgid "<I>%s</I> set channel <I>%s</I> modes to: %s"
-msgstr "<I>%s</I> pakeitė kanalo <I>%s</I> būsenas į: %s"
-
-#, c-format
-msgid "<I>%s</I> removed all channel <I>%s</I> modes"
-msgstr "<I>%s</s> pašalino visus kanalo <i>%s</i> būsenas"
-
-#, c-format
-msgid "<I>%s</I> set <I>%s's</I> modes to: %s"
-msgstr "<I>%s</I> pakeitė vartotojo <I>%s</I> būsenas į: %s"
-
-#, c-format
-msgid "<I>%s</I> removed all <I>%s's</I> modes"
-msgstr "<i>%s</i> pašalino visas vartotojo <i>%s</i> būsenas"
-
-#, c-format
-msgid "You have been kicked off <I>%s</I> by <I>%s</I> (%s)"
-msgstr "Iš <i>%s</i> Jus išspyrė <i>%s</i> (%s)"
-
-#, c-format
-msgid "You have been killed by %s (%s)"
-msgstr "Jus išmetė %s (%s)"
-
-#, c-format
-msgid "Killed by %s (%s)"
-msgstr "Išmestas vartotojo %s (%s)"
-
-msgid "Server signoff"
-msgstr "Serverio atjungimas"
-
-msgid "Personal Information"
-msgstr "Asmeninė informacija"
-
-msgid "Birth Day"
-msgstr "Gimtadienis"
-
-msgid "Job Role"
-msgstr "Vaidmuo darbe"
-
-msgid "Organization"
-msgstr "Organizacija"
-
-msgid "Unit"
-msgstr "Padalinys"
-
-msgid "Note"
-msgstr "Pastabos"
-
-msgid "Join Chat"
-msgstr "Prisijungti prie pokalbių kambario"
-
-#, c-format
-msgid "You are channel founder on <I>%s</I>"
-msgstr "Jūs esate <i>%s</i> kanalo įkūrėjas"
-
-#, c-format
-msgid "Channel founder on <I>%s</I> is <I>%s</I>"
-msgstr "Kanalo <i>%s</i> įkūrėjas yra <i>%s</i>"
-
-msgid "Real Name"
-msgstr "Tikras vardas"
-
-msgid "Status Text"
-msgstr "Būsenos tekstas"
-
-msgid "Public Key Fingerprint"
-msgstr "Viešojo rakto kontrolinis kodas"
-
-msgid "Public Key Babbleprint"
-msgstr "Viešojo rakto žodinis kontrolinis kodas"
-
-msgid "_More..."
-msgstr "_Daugiau..."
-
-msgid "Detach From Server"
-msgstr "Atsiskirti nuo serverio"
-
-msgid "Cannot detach"
-msgstr "Atsiskirti negalima"
-
-msgid "Cannot set topic"
-msgstr "Negalima nustatyti temos"
-
-msgid "Failed to change nickname"
-msgstr "Vardo pakeisti nepavyko"
-
-msgid "Roomlist"
-msgstr "Kambarių sąrašas"
-
-msgid "Cannot get room list"
-msgstr "Nepavyko gauti kambarių sąrašo"
-
-msgid "Network is empty"
-msgstr "Tinklas yra tuščias"
-
-msgid "No public key was received"
-msgstr "Joks viešasis raktas nebuvo gautas"
-
-msgid "Server Information"
-msgstr "Serverio informacija"
-
-msgid "Cannot get server information"
-msgstr "Nepavyko gauti informacijos apie serverį"
-
-msgid "Server Statistics"
-msgstr "Serverio statistika"
-
-msgid "Cannot get server statistics"
-msgstr "Nepavyko gauti serverio statistikos"
-
-#, c-format
-msgid ""
-"Local server start time: %s\n"
-"Local server uptime: %s\n"
-"Local server clients: %d\n"
-"Local server channels: %d\n"
-"Local server operators: %d\n"
-"Local router operators: %d\n"
-"Local cell clients: %d\n"
-"Local cell channels: %d\n"
-"Local cell servers: %d\n"
-"Total clients: %d\n"
-"Total channels: %d\n"
-"Total servers: %d\n"
-"Total routers: %d\n"
-"Total server operators: %d\n"
-"Total router operators: %d\n"
-msgstr ""
-"Vietinio serverio paleidimo laikas: %s\n"
-"Vietinio serverio veikimo laikas: %s\n"
-"Vietinio serverio klientai: %d\n"
-"Vietinio serverio kanalai: %d\n"
-"Vietinio serverio operatoriai: %d\n"
-"Vietinio maršruto parinktuvo operatoriai: %d\n"
-"Vietinio narvelio klientai: %d\n"
-"Vietinio narvelio kanalai: %d\n"
-"Vietinio narvelio serveriai: %d\n"
-"Iš viso klientų: %d\n"
-"Iš viso kanalų: %d\n"
-"Iš viso serverių: %d\n"
-"Iš viso maršruto parinktuvų: %d\n"
-"Iš viso serverio operatorių: %d\n"
-"Iš viso maršruto parinktuvų operatorių: %d\n"
-
-msgid "Network Statistics"
-msgstr "Tinklo statistika"
-
-msgid "Ping failed"
-msgstr "Nepavyko skimbtelėti"
-
-msgid "Ping reply received from server"
-msgstr "Atsakas į skimbtelėjimą gautas iš serverio"
-
-msgid "Could not kill user"
-msgstr "Nepavyko išmesti vartotojo"
-
-msgid "WATCH"
-msgstr "STEBĖTI"
-
-msgid "Cannot watch user"
-msgstr "Negalima stebėti vartotojo"
-
-msgid "Resuming session"
-msgstr "Pratęsiamas seansas"
-
-msgid "Authenticating connection"
-msgstr "Jungties tapatybės nustatymas"
-
-msgid "Verifying server public key"
-msgstr "Tikrinamas serverio viešasis raktas"
-
-msgid "Passphrase required"
-msgstr "Reikalinga slaptafrazė"
-
-#, 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 ""
-"Gautas vartotojo %s viešasis raktas. Jūsų vietinė kopija nesutampa su šiuo "
-"raktu. Ar vis tiek norite priimti šį viešąjį raktą?"
-
-#, c-format
-msgid "Received %s's public key. Would you like to accept this public key?"
-msgstr ""
-"Gautas vartotojo %s viešasis raktas. Ar norite priimti šį viešąjį raktą?"
-
-#, c-format
-msgid ""
-"Fingerprint and babbleprint for the %s key are:\n"
-"\n"
-"%s\n"
-"%s\n"
-msgstr ""
-"Kontrolinis ir žodinis kontrolinis vartotojo %s rakto kodas yra:\n"
-"\n"
-"%s\n"
-"%s\n"
-
-msgid "Verify Public Key"
-msgstr "Patikrinti viešąjį raktą"
-
-msgid "_View..."
-msgstr "_Peržiūrėti..."
-
-msgid "Unsupported public key type"
-msgstr "Nepalaikomas viešojo rakto tipas"
-
-msgid "Disconnected by server"
-msgstr "Atjungtas serverio"
-
-msgid "Error during connecting to SILC Server"
-msgstr "Jungimosi į SILC serverį klaida"
-
-msgid "Key Exchange failed"
-msgstr "Apsikeitimas raktais nepavyko"
-
-msgid ""
-"Resuming detached session failed. Press Reconnect to create new connection."
-msgstr ""
-"Atskirto seanso pratęsimas nepavyko. Paspauskite „Jungtis iš naujo\", kad "
-"sukurtumėtę naują jungtį."
-
-msgid "Connection failed"
-msgstr "Jungties klaida"
-
-msgid "Performing key exchange"
-msgstr "Apsikeičiama raktais"
-
-msgid "Unable to create connection"
-msgstr "Nepavyko sukurti jungties."
-
-msgid "Could not load SILC key pair"
-msgstr "Nepavyko įkelti SILC raktų poros"
-
-#. Progress
-msgid "Connecting to SILC Server"
-msgstr "Jungiamasi prie SILC serverio"
-
-msgid "Out of memory"
-msgstr "Trūksta atminties"
-
-msgid "Cannot initialize SILC protocol"
-msgstr "Nepavyko inicijuoti SILC protokolo"
-
-msgid "Error loading SILC key pair"
-msgstr "SILC raktų poros įkėlimo klaida"
-
-#, c-format
-msgid "Download %s: %s"
-msgstr "Atsisiųsk %s: %s"
-
-msgid "Your Current Mood"
-msgstr "Jūsų dabartinė nuotaika"
-
-#, c-format
-msgid "Normal"
-msgstr "Normaliai"
-
-msgid "In love"
-msgstr "Įsimylėjęs"
-
-msgid ""
-"\n"
-"Your Preferred Contact Methods"
-msgstr ""
-"\n"
-"Jūsų labiausiai mėgstami kontaktavimo būdai"
-
-msgid "SMS"
-msgstr "SMS"
-
-msgid "MMS"
-msgstr "MMS"
-
-msgid "Video conferencing"
-msgstr "Kontaktas vaizdo konferencijoms"
-
-msgid "Your Current Status"
-msgstr "Jūsų dabartinė būsena"
-
-msgid "Online Services"
-msgstr "Tiesioginės tarnybos"
-
-msgid "Let others see what services you are using"
-msgstr "Leisti kitiems pamatyti, kokiomis tarnybomis Jūs naudojatės"
-
-msgid "Let others see what computer you are using"
-msgstr "Leisti kitiems pamatyti, kokiu kompiuteriu Jūs naudojatės"
-
+msgid "Unable to send message: "
+msgstr "Negalima išsiųsti žinutės: "
+
+msgid "Place Closed"
+msgstr "Vieta uždaryta"
+
+msgid "Microphone"
+msgstr "Mikrofonas"
+
+msgid "Speakers"
+msgstr "Garsiakalbiai"
+
+msgid "Video Camera"
+msgstr "Videokamera"
+
+msgid "Supports"
+msgstr "Palaiko"
+
+msgid "External User"
+msgstr "Išorinis vartotoajs"
+
+msgid "Create conference with user"
+msgstr "Sukurti konferenciją su vartotoju"
+
+#, c-format
+msgid ""
+"Please enter a topic for the new conference, and an invitation message to be "
+"sent to %s"
+msgstr "Įveskite naujos konferencijos temą ir pakvietimo žinutę vartotojui %s"
+
+msgid "New Conference"
+msgstr "Nauja konferencija"
+
+msgid "Create"
+msgstr "Sukurti"
+
+msgid "Available Conferences"
+msgstr "Esamos konferencijos"
+
+msgid "Create New Conference..."
+msgstr "Sukurti naują konferenciją..."
+
+msgid "Invite user to a conference"
+msgstr "Pakviesti vartotoją į konferenciją"
+
+#, c-format
+msgid ""
+"Select a conference from the list below to send an invite to user %s. Select "
+"\"Create New Conference\" if you'd like to create a new conference to invite "
+"this user to."
+msgstr ""
+"Pasirinkite konferenciją iš sąrašo žemiau, į kurią kviesite vartotoją %s. "
+"Pasirinkite „Sukurti naują konferenciją“, jei norite sukurti naują "
+"konfereciją ir į ją pakviesti šį vartotoją."
+
+msgid "Invite to Conference"
+msgstr "Pakviesti į konferenciją"
+
+msgid "Invite to Conference..."
+msgstr "Pakviesti į konferenciją..."
+
+msgid "Send TEST Announcement"
+msgstr "Nusiųsti „TEST“ skelbimą"
+
+msgid "Topic:"
+msgstr "Tema:"
+
+msgid "No Sametime Community Server specified"
+msgstr "Nenurodytas „Sametime“ bendruomenės serveris"
+
+#, c-format
+msgid ""
+"No host or IP address has been configured for the Meanwhile account %s. "
+"Please enter one below to continue logging in."
+msgstr ""
+"Nenustatytas mazgo vardas ar IP adresas „Meanwhile“ paskyrai %s. Įveskite "
+"vieną iš jų žemiau, jei norite pradėti seansą."
+
+msgid "Meanwhile Connection Setup"
+msgstr "„Meanwhile“ jungties sąranka"
+
+msgid "No Sametime Community Server Specified"
+msgstr "Nenurodytas „Sametime“ bendruomenės serveris"
+
+msgid "Connect"
+msgstr "Jungtis"
+
+#, c-format
+msgid "Unknown (0x%04x)<br>"
+msgstr "Nežinomas (0x%04x)<br>"
+
+msgid "Last Known Client"
+msgstr "Paskutinis žinomas klientas"
+
+msgid "User Name"
+msgstr "Vartotojo vardas"
+
+msgid "Sametime ID"
+msgstr "„Sametime“ identifikatorius"
+
+msgid "An ambiguous user ID was entered"
+msgstr "Įvestas nevienareikšmiškas vartotojo identifikatorius"
+
+#, 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 ""
+"Rastas daugiau nei vienas vartotojas su tokiu pačiu identifikatoriumi „%s“. "
+"Pasirinkite norimą vartotoją iš žemiau esančio sąrašo, kuris bus įtrauktas į "
+"bičiulių sąrašą."
+
+msgid "Select User"
+msgstr "Pasirinkite vartotoją"
+
+msgid "Unable to add user: user not found"
+msgstr "Negalima pridėti vartotojo: jis nerastas"
+
+#, 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 ""
+"Identifikatorius „%s“ neatitiko jokių vartotojų Jūsų „Sametime“ "
+"bendruomenėje. Šis įrašas pašalintas iš Jūsų bičiulių sąrašo."
+
+#, c-format
+msgid ""
+"Error reading file %s: \n"
+"%s\n"
+msgstr ""
+"Failo %s skaitymo klaida:\n"
+"%s\n"
+
+msgid "Remotely Stored Buddy List"
+msgstr "Nutolusiai saugomas bičiulių sąrašas"
+
+msgid "Buddy List Storage Mode"
+msgstr "Bičiulių sąrašo saugojimo būdas"
+
+msgid "Local Buddy List Only"
+msgstr "Tik vietinis bičiulių sąrašas"
+
+msgid "Merge List from Server"
+msgstr "Prijungti sąrašą iš serverio"
+
+msgid "Merge and Save List to Server"
+msgstr "Prijungti ir išsaugoti sąrašą serveryje"
+
+msgid "Synchronize List with Server"
+msgstr "Suvienodinti sąrašą su serveriu"
+
+#, c-format
+msgid "Import Sametime List for Account %s"
+msgstr "Importuoti „Sametime“ sąrašą paskyrai %s"
+
+#, c-format
+msgid "Export Sametime List for Account %s"
+msgstr "Eksportuoti „Sametime“ sąrašą paskyrai %s"
+
+msgid "Unable to add group: group exists"
+msgstr "Nepavyko pridėti grupės: ji jau yra"
+
+#, c-format
+msgid "A group named '%s' already exists in your buddy list."
+msgstr "Grupė pavadinimu „%s“ jau yra Jūsų bičiulių sąraše."
+
+msgid "Unable to add group"
+msgstr "Nepavyko pridėti grupės"
+
+msgid "Possible Matches"
+msgstr "Galimi variantai"
+
+msgid "Notes Address Book group results"
+msgstr "Grupės iš „Notes“ adresų knygos"
+
+#, c-format
+msgid ""
+"The identifier '%s' may possibly refer to any of the following Notes Address "
+"Book groups. Please select the correct group from the list below to add it "
+"to your buddy list."
+msgstr ""
+"Identifikatorius „%s“ gali nurodyti bet kurią iš žemiau esančių „Notes“ "
+"adresų knygos grupių. Pasirinkite iš žemiau esančio sąrašo grupę, kurią "
+"norite įtraukti į savo bičiulių sąrašą."
+
+msgid "Select Notes Address Book"
+msgstr "Pasirinkite „Notes“ adresų knygos grupę"
+
+msgid "Unable to add group: group not found"
+msgstr "Negalima pridėti grupės: ji nerasta"
+
+#, c-format
+msgid ""
+"The identifier '%s' did not match any Notes Address Book groups in your "
+"Sametime community."
+msgstr ""
+"Identifikatorius „%s“ neatitiko jokių „Notes“ adresų knygos grupių Jūsų "
+"„Sametime“ bendruomenėje."
+
+msgid "Notes Address Book Group"
+msgstr "„Notes“ adresų knygos grupė"
+
+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 ""
+"Įveskite „Notes“ adresų knygos grupės pavadinimą žemiau esančiame lauke, kad "
+"pridėtumėte grupę ir jos narius į savo bičiulių sąrašą."
+
+#, c-format
+msgid "Search results for '%s'"
+msgstr "„%s“ paieškos rezultatai"
+
+#, 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 ""
+"Identifikatorius „%s“ gali nurodyti bet kurį iš žemiau esančių vartotojų. "
+"Galite įtraukti šiuos vartotojus į savo bičiulių sąrašą arba nusiųsti jiems "
+"žinutes žemiau esančių mygtukų pagalba."
+
+msgid "Search Results"
+msgstr "Paieškos rezultatai"
+
+msgid "No matches"
+msgstr "Nėra atitikimų"
+
+#, c-format
+msgid "The identifier '%s' did not match any users in your Sametime community."
+msgstr ""
+"Identifikatorius „%s“ neatitiko jokių vartotojų Jūsų „Sametime“ "
+"bendruomenėje."
+
+msgid "No Matches"
+msgstr "Nėra atitikimų"
+
+msgid "Search for a user"
+msgstr "Ieškoti vartotojo"
+
+msgid ""
+"Enter a name or partial ID in the field below to search for matching users "
+"in your Sametime community."
+msgstr ""
+"Įveskite vardą ar identifikatoriaus dalį žemiau esančiame lauke, kad "
+"ieškotumėte atitinkančių vartotojų Jūsų „Sametime“ bendruomenėje."
+
+msgid "User Search"
+msgstr "Vartotojų paieška"
+
+msgid "Import Sametime List..."
+msgstr "Importuoti „Sametime“ sąrašą..."
+
+msgid "Export Sametime List..."
+msgstr "Eksportuoti „Sametime“ sąrašą..."
+
+msgid "Add Notes Address Book Group..."
+msgstr "Pridėti „Notes“ adresų knygos grupę..."
+
+msgid "User Search..."
+msgstr "Ieškoti vartotojų..."
+
+msgid "Force login (ignore server redirects)"
+msgstr "Jungtis priverstinai (ignoruoti serverio nukreipimus kitur)"
+
+#. pretend to be Sametime Connect
+msgid "Hide client identity"
+msgstr "Slėpti kliento tapatybę"
+
+#, c-format
+msgid "User %s is not present in the network"
+msgstr "Vartotojo %s nėra tinkle"
+
+msgid "Key Agreement"
+msgstr "Susitarimas dėl raktų"
+
+msgid "Cannot perform the key agreement"
+msgstr "Nepavyko susitarti dėl raktų"
+
+msgid "Error occurred during key agreement"
+msgstr "Susitarimo dėl raktų metu įvyko klaida"
+
+msgid "Key Agreement failed"
+msgstr "Susitarimas dėl raktų nepavyko"
+
+msgid "Timeout during key agreement"
+msgstr "Baigėsi susitarimo dėl raktų laukimo laikas"
+
+msgid "Key agreement was aborted"
+msgstr "Susitarimas dėl raktų buvo nutrauktas"
+
+msgid "Key agreement is already started"
+msgstr "Susitarimas dėl raktų jau pradėtas"
+
+msgid "Key agreement cannot be started with yourself"
+msgstr "Negalima susitarti dėl raktų su savimi pačiu"
+
+msgid "The remote user is not present in the network any more"
+msgstr "Nuotolinio vartotojo nebėra tinkle"
+
+#, c-format
+msgid ""
+"Key agreement request received from %s. Would you like to perform the key "
+"agreement?"
+msgstr ""
+"Susitarimo dėl raktų prašymas gautas iš vartotojo %s. Ar norite susitarti?"
+
+#, c-format
+msgid ""
+"The remote user is waiting key agreement on:\n"
+"Remote host: %s\n"
+"Remote port: %d"
+msgstr ""
+"Nuotolinis vartotojas laukia susitarimo dėl raktų\n"
+"nuotoliniame mazge: %s\n"
+"nuotoliniame prievade: %d"
+
+msgid "Key Agreement Request"
+msgstr "Susitarymo dėl raktų prašymas"
+
+msgid "IM With Password"
+msgstr "IM su slaptažodžiu"
+
+msgid "Cannot set IM key"
+msgstr "Negalima nustatyti IM rakto"
+
+msgid "Set IM Password"
+msgstr "Nustatyti IM slaptažodį"
+
+msgid "Get Public Key"
+msgstr "Gauti viešąjį raktą"
+
+msgid "Cannot fetch the public key"
+msgstr "Negalima gauti viešojo rakto"
+
+msgid "Show Public Key"
+msgstr "Rodyti viešąjį raktą"
+
+msgid "Could not load public key"
+msgstr "Nepavyko įkelti viešojo rakto"
+
+msgid "User Information"
+msgstr "Vartotojo informacija"
+
+msgid "Cannot get user information"
+msgstr "Nepavyko gauti vartotojo informacijos"
+
+#, c-format
+msgid "The %s buddy is not trusted"
+msgstr "Bičiulis %s nėra patikimas"
+
+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 ""
+"Jūs negalite gauti informavimo apie bičiulį, kol neimportavote jo viešojo "
+"rakto. Tam jūs galite naudoti „Gauti viešąjį raktą\"."
+
+#. Open file selector to select the public key.
+msgid "Open..."
+msgstr "Atverti..."
+
+#, c-format
+msgid "The %s buddy is not present in the network"
+msgstr "Bičiulio %s nėra tinkle"
+
+msgid ""
+"To add the buddy you must import his/her public key. Press Import to import "
+"a public key."
+msgstr ""
+"Norėdami pridėti bičiulį, privalote importuoti jo viešąjį raktą. Tam "
+"paspauskite „Importuoti...“."
+
+msgid "_Import..."
+msgstr "_Importuoti..."
+
+msgid "Select correct user"
+msgstr "Pasirinkite teisingą vartotoją"
+
+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 ""
+"Rastas daugiau nei vienas vartotojas su tokiu pačiu viešuoju raktu. "
+"Pasirinkite teisingą vartotoją iš sąrašo, kuris bus įtrauktas į bičiulių "
+"sąrašą."
+
+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 ""
+"Rastas daugiau nei vienas vartotojas su tokiu pačiu vardu. Pasirinkite "
+"teisingą vartotoją iš sąrašo, kuris bus įtrauktas į bičiulių sąrašą."
+
+msgid "Detached"
+msgstr "Atskirtas"
+
+msgid "Indisposed"
+msgstr "Nelinkęs"
+
+msgid "Wake Me Up"
+msgstr "Pažadink mane"
+
+msgid "Hyper Active"
+msgstr "Hiperaktyvus"
+
+msgid "Robot"
+msgstr "Robotas"
+
+msgid "Happy"
+msgstr "Laimingas"
+
+msgid "Sad"
+msgstr "Liūdnas"
+
+msgid "Angry"
+msgstr "Piktas"
+
+msgid "Jealous"
+msgstr "Pavydus"
+
+msgid "Ashamed"
+msgstr "Susigėdęs"
+
+msgid "Invincible"
+msgstr "Nenugalimas"
+
+msgid "In Love"
+msgstr "Įsimylėjęs"
+
+msgid "Sleepy"
+msgstr "Mieguistas"
+
+msgid "Bored"
+msgstr "Nuobuodžiaujantis"
+
+msgid "Excited"
+msgstr "Susijaudinęs"
+
+msgid "Anxious"
+msgstr "Neramus"
+
+msgid "User Modes"
+msgstr "Vartotojo būsenos"
+
+msgid "Preferred Contact"
+msgstr "Labiausiai mėgstamas kontaktas"
+
+msgid "Preferred Language"
+msgstr "Labiausiai mėgstama kalba"
+
+msgid "Device"
+msgstr "Įrenginys"
+
+msgid "Timezone"
+msgstr "Laiko juosta"
+
+msgid "Geolocation"
+msgstr "Geografinė vietovė"
+
+msgid "Reset IM Key"
+msgstr "Atstatyti IM raktą"
+
+msgid "IM with Key Exchange"
+msgstr "Pokalbiai su raktų apsikeitimu"
+
+msgid "IM with Password"
+msgstr "Pokalbiai su slaptažodžiu"
+
+msgid "Get Public Key..."
+msgstr "Gauti viešąjį raktą..."
+
+msgid "Kill User"
+msgstr "Išmesti vartotoją"
+
+msgid "Draw On Whiteboard"
+msgstr "Piešti ant lentos"
+
+msgid "_Passphrase:"
+msgstr "Sla_ptafrazė:"
+
+#, c-format
+msgid "Channel %s does not exist in the network"
+msgstr "Kanalas %s tinkle neegzistuoja"
+
+msgid "Channel Information"
+msgstr "Kanalo informacija"
+
+msgid "Cannot get channel information"
+msgstr "Nepavyko gauti kanalo informacijos"
+
+#, c-format
+msgid "<b>Channel Name:</b> %s"
+msgstr "<b>Kanalo pavadinimas:</b> %s"
+
+#, c-format
+msgid "<br><b>User Count:</b> %d"
+msgstr "<br><b>Vartotojų skaičius:</b> %d"
+
+#, c-format
+msgid "<br><b>Channel Founder:</b> %s"
+msgstr "<br><b>Kanalo įkūrėjas:</b> %s"
+
+#, c-format
+msgid "<br><b>Channel Cipher:</b> %s"
+msgstr "<br><b>Kanalo šifras:</b> %s"
+
+#. Definition of HMAC: http://en.wikipedia.org/wiki/HMAC
+#, c-format
+msgid "<br><b>Channel HMAC:</b> %s"
+msgstr "<br><b>Kanalo HMAC:</b> %s"
+
+#, c-format
+msgid "<br><b>Channel Topic:</b><br>%s"
+msgstr "<br><b>Kanalo tema:</b><br>%s"
+
+#, c-format
+msgid "<br><b>Channel Modes:</b> "
+msgstr "<br><b>Kanalo būsenos:</b> "
+
+#, c-format
+msgid "<br><b>Founder Key Fingerprint:</b><br>%s"
+msgstr "<br><b>Įkūrėjo rakto kontrolinis kodas:</b><br>%s"
+
+#, c-format
+msgid "<br><b>Founder Key Babbleprint:</b><br>%s"
+msgstr "<br><b>Įkūrėjo rakto žodinis kontrolinis kodas:</b><br>%s"
+
+msgid "Add Channel Public Key"
+msgstr "Pridėti kanalo viešąjį raktą"
+
+#. Add new public key
+msgid "Open Public Key..."
+msgstr "Atverti viešąjį raktą..."
+
+msgid "Channel Passphrase"
+msgstr "Kanalo slaptafrazė"
+
+msgid "Channel Public Keys List"
+msgstr "Kanalo viešųjų raktų sąrašas"
+
+#, 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 ""
+"Tapatybės nustatymas kanale skirtas apsaugoti kanalą nuo nesankcionuotos "
+"prieigos. Tapatybės nustatymas gali būti pagrįstas slaptafraze ir "
+"skaitmeniniais parašais. Jei yra nustatyta slaptafrazė, ji yra reikalinga "
+"norint prisijungti prie kanalo. Jei kanalo viešieji raktai yra nustatyti, "
+"gali prisijungti tik vartotojai, kurių viešieji raktai yra priskirti."
+
+msgid "Channel Authentication"
+msgstr "Tapatybės nustatymas kanale"
+
+msgid "Add / Remove"
+msgstr "Įdėti / Pašalinti"
+
+msgid "Group Name"
+msgstr "Grupės pavadinimas"
+
+msgid "Passphrase"
+msgstr "Slaptafrazė"
+
+#, c-format
+msgid "Please enter the %s channel private group name and passphrase."
+msgstr "Prašom įvesti kanalo %s privačios grupės pavadinimą ir slaptafrazę."
+
+msgid "Add Channel Private Group"
+msgstr "Pridėti kanalo privačią grupę"
+
+msgid "User Limit"
+msgstr "Vartotojų skaičiaus riba"
+
+msgid "Set user limit on channel. Set to zero to reset user limit."
+msgstr ""
+"Nustatyti kanalo vartotojų skaičiaus ribą. Nulio reikšmė pašalina ribą."
+
+msgid "Invite List"
+msgstr "Pakvietimų sąrašas"
+
+msgid "Ban List"
+msgstr "Draudimų sąrašas"
+
+msgid "Add Private Group"
+msgstr "Pridėti privačią grupę"
+
+msgid "Reset Permanent"
+msgstr "Atšaukti pastovumą"
+
+msgid "Set Permanent"
+msgstr "Nustatyti pastovumą"
+
+msgid "Set User Limit"
+msgstr "Nustatyti vartotojų skaičiaus ribą"
+
+msgid "Reset Topic Restriction"
+msgstr "Atšaukti temos apribojimą"
+
+msgid "Set Topic Restriction"
+msgstr "Nustatyti temos apribojimą"
+
+msgid "Reset Private Channel"
+msgstr "Atšaukti kanalo privatumą"
+
+msgid "Set Private Channel"
+msgstr "Nustatyti kanalo privatumą"
+
+msgid "Reset Secret Channel"
+msgstr "Atšaukti kanalo slaptumą"
+
+msgid "Set Secret Channel"
+msgstr "Nustatyti kanalo slaptumą"
+
+#, c-format
+msgid ""
+"You have to join the %s channel before you are able to join the private group"
+msgstr ""
+"Jūs turite prisijungti prie kanalo %s, kad galėtumėte prisijungti prie "
+"privačios grupės"
+
+msgid "Join Private Group"
+msgstr "Prisijungti prie privačios grupės"
+
+msgid "Cannot join private group"
+msgstr "Negalima prisijungti prie privačios grupės"
+
+msgid "Call Command"
+msgstr "Komandos iškvietimas"
+
+msgid "Cannot call command"
+msgstr "Negalima iškviesti komandos"
+
+msgid "Unknown command"
+msgstr "Nežinoma komanda"
+
+msgid "Secure File Transfer"
+msgstr "Saugus failų perdavimas"
+
+msgid "Error during file transfer"
+msgstr "Failų perdavimo klaida"
+
+msgid "Remote disconnected"
+msgstr "Kitas vartotojas atsijungė"
+
+msgid "Permission denied"
+msgstr "Neduotas leidimas"
+
+msgid "Key agreement failed"
+msgstr "Raktų sutikimas nepavyko"
+
+msgid "Connection timed out"
+msgstr "Jungties laukimo laikas baigėsi"
+
+msgid "Creating connection failed"
+msgstr "Jungties sukūrimo klaida"
+
+msgid "File transfer session does not exist"
+msgstr "Failų perdavimo seansas neegzistuoja"
+
+msgid "No file transfer session active"
+msgstr "Nėra aktyvaus failų perdavimo seanso"
+
+msgid "File transfer already started"
+msgstr "Failo perdavimas jau pradėtas"
+
+msgid "Could not perform key agreement for file transfer"
+msgstr "Nepavyko atlikti raktų sutarimo failų perdavimui"
+
+msgid "Could not start the file transfer"
+msgstr "Nepavyko pradėti failų perdavimo"
+
+msgid "Cannot send file"
+msgstr "Negalima išsiųsti failo"
+
+msgid "Error occurred"
+msgstr "Įvyko klaida"
+
+#, c-format
+msgid "%s has changed the topic of <I>%s</I> to: %s"
+msgstr "%s pakeitė kanalo <I>%s</I> temą į: %s"
+
+#, c-format
+msgid "<I>%s</I> set channel <I>%s</I> modes to: %s"
+msgstr "<I>%s</I> pakeitė kanalo <I>%s</I> būsenas į: %s"
+
+#, c-format
+msgid "<I>%s</I> removed all channel <I>%s</I> modes"
+msgstr "<I>%s</s> pašalino visus kanalo <i>%s</i> būsenas"
+
+#, c-format
+msgid "<I>%s</I> set <I>%s's</I> modes to: %s"
+msgstr "<I>%s</I> pakeitė vartotojo <I>%s</I> būsenas į: %s"
+
+#, c-format
+msgid "<I>%s</I> removed all <I>%s's</I> modes"
+msgstr "<i>%s</i> pašalino visas vartotojo <i>%s</i> būsenas"
+
+#, c-format
+msgid "You have been kicked off <I>%s</I> by <I>%s</I> (%s)"
+msgstr "Iš <i>%s</i> Jus išspyrė <i>%s</i> (%s)"
+
+#, c-format
+msgid "You have been killed by %s (%s)"
+msgstr "Jus išmetė %s (%s)"
+
+#, c-format
+msgid "Killed by %s (%s)"
+msgstr "Išmestas vartotojo %s (%s)"
+
+msgid "Server signoff"
+msgstr "Serverio atjungimas"
+
+msgid "Personal Information"
+msgstr "Asmeninė informacija"
+
+msgid "Birth Day"
+msgstr "Gimtadienis"
+
+msgid "Job Role"
+msgstr "Vaidmuo darbe"
+
+msgid "Organization"
+msgstr "Organizacija"
+
+msgid "Unit"
+msgstr "Padalinys"
+
+msgid "Join Chat"
+msgstr "Prisijungti prie pokalbių kambario"
+
+#, c-format
+msgid "You are channel founder on <I>%s</I>"
+msgstr "Jūs esate <i>%s</i> kanalo įkūrėjas"
+
+#, c-format
+msgid "Channel founder on <I>%s</I> is <I>%s</I>"
+msgstr "Kanalo <i>%s</i> įkūrėjas yra <i>%s</i>"
+
+msgid "Real Name"
+msgstr "Tikras vardas"
+
+msgid "Status Text"
+msgstr "Būsenos tekstas"
+
+msgid "Public Key Fingerprint"
+msgstr "Viešojo rakto kontrolinis kodas"
+
+msgid "Public Key Babbleprint"
+msgstr "Viešojo rakto žodinis kontrolinis kodas"
+
+msgid "_More..."
+msgstr "_Daugiau..."
+
+msgid "Detach From Server"
+msgstr "Atsiskirti nuo serverio"
+
+msgid "Cannot detach"
+msgstr "Atsiskirti negalima"
+
+msgid "Cannot set topic"
+msgstr "Negalima nustatyti temos"
+
+msgid "Failed to change nickname"
+msgstr "Vardo pakeisti nepavyko"
+
+msgid "Roomlist"
+msgstr "Kambarių sąrašas"
+
+msgid "Cannot get room list"
+msgstr "Nepavyko gauti kambarių sąrašo"
+
+msgid "Network is empty"
+msgstr "Tinklas yra tuščias"
+
+msgid "No public key was received"
+msgstr "Joks viešasis raktas nebuvo gautas"
+
+msgid "Server Information"
+msgstr "Serverio informacija"
+
+msgid "Cannot get server information"
+msgstr "Nepavyko gauti informacijos apie serverį"
+
+msgid "Server Statistics"
+msgstr "Serverio statistika"
+
+msgid "Cannot get server statistics"
+msgstr "Nepavyko gauti serverio statistikos"
+
+#, c-format
+msgid ""
+"Local server start time: %s\n"
+"Local server uptime: %s\n"
+"Local server clients: %d\n"
+"Local server channels: %d\n"
+"Local server operators: %d\n"
+"Local router operators: %d\n"
+"Local cell clients: %d\n"
+"Local cell channels: %d\n"
+"Local cell servers: %d\n"
+"Total clients: %d\n"
+"Total channels: %d\n"
+"Total servers: %d\n"
+"Total routers: %d\n"
+"Total server operators: %d\n"
+"Total router operators: %d\n"
+msgstr ""
+"Vietinio serverio paleidimo laikas: %s\n"
+"Vietinio serverio veikimo laikas: %s\n"
+"Vietinio serverio klientai: %d\n"
+"Vietinio serverio kanalai: %d\n"
+"Vietinio serverio operatoriai: %d\n"
+"Vietinio maršruto parinktuvo operatoriai: %d\n"
+"Vietinio narvelio klientai: %d\n"
+"Vietinio narvelio kanalai: %d\n"
+"Vietinio narvelio serveriai: %d\n"
+"Iš viso klientų: %d\n"
+"Iš viso kanalų: %d\n"
+"Iš viso serverių: %d\n"
+"Iš viso maršruto parinktuvų: %d\n"
+"Iš viso serverio operatorių: %d\n"
+"Iš viso maršruto parinktuvų operatorių: %d\n"
+
+msgid "Network Statistics"
+msgstr "Tinklo statistika"
+
+msgid "Ping failed"
+msgstr "Nepavyko skimbtelėti"
+
+msgid "Ping reply received from server"
+msgstr "Atsakas į skimbtelėjimą gautas iš serverio"
+
+msgid "Could not kill user"
+msgstr "Nepavyko išmesti vartotojo"
+
+msgid "WATCH"
+msgstr "STEBĖTI"
+
+msgid "Cannot watch user"
+msgstr "Negalima stebėti vartotojo"
+
+msgid "Resuming session"
+msgstr "Pratęsiamas seansas"
+
+msgid "Authenticating connection"
+msgstr "Jungties tapatybės nustatymas"
+
+msgid "Verifying server public key"
+msgstr "Tikrinamas serverio viešasis raktas"
+
+msgid "Passphrase required"
+msgstr "Reikalinga slaptafrazė"
+
+#, 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 ""
+"Gautas vartotojo %s viešasis raktas. Jūsų vietinė kopija nesutampa su šiuo "
+"raktu. Ar vis tiek norite priimti šį viešąjį raktą?"
+
+#, c-format
+msgid "Received %s's public key. Would you like to accept this public key?"
+msgstr ""
+"Gautas vartotojo %s viešasis raktas. Ar norite priimti šį viešąjį raktą?"
+
+#, c-format
+msgid ""
+"Fingerprint and babbleprint for the %s key are:\n"
+"\n"
+"%s\n"
+"%s\n"
+msgstr ""
+"Kontrolinis ir žodinis kontrolinis vartotojo %s rakto kodas yra:\n"
+"\n"
+"%s\n"
+"%s\n"
+
+msgid "Verify Public Key"
+msgstr "Patikrinti viešąjį raktą"
+
+msgid "_View..."
+msgstr "_Peržiūrėti..."
+
+msgid "Unsupported public key type"
+msgstr "Nepalaikomas viešojo rakto tipas"
+
+msgid "Disconnected by server"
+msgstr "Atjungtas serverio"
+
+msgid "Error during connecting to SILC Server"
+msgstr "Jungimosi į SILC serverį klaida"
+
+msgid "Key Exchange failed"
+msgstr "Apsikeitimas raktais nepavyko"
+
+msgid ""
+"Resuming detached session failed. Press Reconnect to create new connection."
+msgstr ""
+"Atskirto seanso pratęsimas nepavyko. Paspauskite „Jungtis iš naujo\", kad "
+"sukurtumėtę naują jungtį."
+
+msgid "Connection failed"
+msgstr "Jungties klaida"
+
+msgid "Performing key exchange"
+msgstr "Apsikeičiama raktais"
+
+msgid "Unable to create connection"
+msgstr "Nepavyko sukurti jungties."
+
+msgid "Could not load SILC key pair"
+msgstr "Nepavyko įkelti SILC raktų poros"
+
+#. Progress
+msgid "Connecting to SILC Server"
+msgstr "Jungiamasi prie SILC serverio"
+
+msgid "Out of memory"
+msgstr "Trūksta atminties"
+
+msgid "Cannot initialize SILC protocol"
+msgstr "Nepavyko inicijuoti SILC protokolo"
+
+msgid "Error loading SILC key pair"
+msgstr "SILC raktų poros įkėlimo klaida"
+
+#, c-format
+msgid "Download %s: %s"
+msgstr "Atsisiųsk %s: %s"
+
+msgid "Your Current Mood"
+msgstr "Jūsų dabartinė nuotaika"
+
+#, c-format
+msgid "Normal"
+msgstr "Normaliai"
+
+msgid "In love"
+msgstr "Įsimylėjęs"
+
+msgid ""
+"\n"
+"Your Preferred Contact Methods"
+msgstr ""
+"\n"
+"Jūsų labiausiai mėgstami kontaktavimo būdai"
+
+msgid "SMS"
+msgstr "SMS"
+
+msgid "MMS"
+msgstr "MMS"
+
+msgid "Video conferencing"
+msgstr "Kontaktas vaizdo konferencijoms"
+
+msgid "Your Current Status"
+msgstr "Jūsų dabartinė būsena"
+
+msgid "Online Services"
+msgstr "Tiesioginės tarnybos"
+
+msgid "Let others see what services you are using"
+msgstr "Leisti kitiems pamatyti, kokiomis tarnybomis Jūs naudojatės"
+
+msgid "Let others see what computer you are using"
+msgstr "Leisti kitiems pamatyti, kokiu kompiuteriu Jūs naudojatės"
+
# „vCard“ yra tikrinis žodis
-msgid "Your VCard File"
-msgstr "Jūsų vCard failas"
-
-msgid "Timezone (UTC)"
-msgstr "Laiko juosta (UTC)"
-
-msgid "User Online Status Attributes"
-msgstr "Vartotojo prisijungimo būsenos atributai"
-
-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 ""
-"Jūs galite leisti kitiems vartotojams matyti Jūsų prisijungimo būsenos "
-"informaciją ir Jūsų asmeninę informaciją. Prašome užpildyti informaciją, "
-"kurią matys kiti vartotojai apie Jus."
-
-msgid "Message of the Day"
-msgstr "Dienos žinutė"
-
-msgid "No Message of the Day available"
-msgstr "Dienos žinutės nėra"
-
-msgid "There is no Message of the Day associated with this connection"
-msgstr "Nėra susietos su šia jungtimi dienos žinutės"
-
-msgid "Create New SILC Key Pair"
-msgstr "Kuriama nauja SILC raktų pora..."
-
-msgid "Passphrases do not match"
-msgstr "Slaptafrazės nesutampa"
-
-msgid "Key Pair Generation failed"
-msgstr "Raktų poros sukūrimas nepavyko"
-
-msgid "Key length"
-msgstr "Rakto ilgis"
-
-msgid "Public key file"
-msgstr "Viešojo rakto failas"
-
-msgid "Private key file"
-msgstr "Privataus rakto failas"
-
-msgid "Passphrase (retype)"
-msgstr "Slaptafrazė (pakartoti)"
-
-msgid "Generate Key Pair"
-msgstr "Sukurti raktų porą"
-
-msgid "Online Status"
-msgstr "Prisijungimo būsena"
-
-msgid "View Message of the Day"
-msgstr "Žiūrėti dienos žinutę"
-
-msgid "Create SILC Key Pair..."
-msgstr "Sukurti SILC raktų porą..."
-
-#, c-format
-msgid "User <I>%s</I> is not present in the network"
-msgstr "Vartotojo <i>%s</i> nėra tinkle"
-
-msgid "Topic too long"
-msgstr "Tema per ilga"
-
-msgid "You must specify a nick"
-msgstr "Jūs privalote nurodyti vardą"
-
-#, c-format
-msgid "channel %s not found"
-msgstr "kanalas %s nerastas"
-
-#, c-format
-msgid "channel modes for %s: %s"
-msgstr "Kanalo %s būsenos: %s"
-
-#, c-format
-msgid "no channel modes are set on %s"
-msgstr "kanalas %s neturi būsenų"
-
-#, c-format
-msgid "Failed to set cmodes for %s"
-msgstr "Nepavyko nustatyti %s kanalo būsenų"
-
-#, c-format
-msgid "Unknown command: %s, (may be a client bug)"
-msgstr "Nežinoma komanda: %s, (gali būti programos riktas)"
-
-msgid "part [channel]: Leave the chat"
-msgstr "part [kanalas]: palikti kanalą"
-
-msgid "leave [channel]: Leave the chat"
-msgstr "leave [channel] palikti kanalą"
-
-msgid "topic [&lt;new topic&gt;]: View or change the topic"
-msgstr "topic [nauja tema]: rodyti arba pakeisti temą"
-
-msgid "join &lt;channel&gt; [&lt;password&gt;]: Join a chat on this network"
-msgstr ""
-"join &lt;kanalas&gt; [slaptažodis]: prisijungti prie pokalbių kanalo šiame "
-"tinkle"
-
-msgid "list: List channels on this network"
-msgstr "list: parodyti šio tinklo kanalų sąrašą"
-
-msgid "whois &lt;nick&gt;: View nick's information"
-msgstr "whois &lt;vardas&gt; rodyti informaciją apie vartotoją"
-
-msgid "msg &lt;nick&gt; &lt;message&gt;: Send a private message to a user"
-msgstr ""
-"msg &lt;vardas&gt; &lt;žinutė&gt;: vartotojui nusiųsti privačią žinutę"
-
-msgid "query &lt;nick&gt; [&lt;message&gt;]: Send a private message to a user"
-msgstr "query &lt;vardas&gt; [žinutė]: vartotojui nusiųsti privačią žinutę"
-
-msgid "motd: View the server's Message Of The Day"
-msgstr "motd: rodyti serverio dienos žinutę"
-
-msgid "detach: Detach this session"
-msgstr "detach: atskirti šią sesiją"
-
-msgid "quit [message]: Disconnect from the server, with an optional message"
-msgstr ""
-"quit [žinutė]: atsijungti nuo serverio su papildoma neprivaloma žinute"
-
-msgid "call &lt;command&gt;: Call any silc client command"
-msgstr "call &lt;komanda&gt; iškviesti bet kokią SILC kliento komandą"
-
-msgid "kill &lt;nick&gt; [-pubkey|&lt;reason&gt;]: Kill nick"
-msgstr ""
-"kill &lt;vardas&gt; [-viešasis raktas|&lt;priežastis&gt;]: išmesti vartotoją"
-
-msgid "nick &lt;newnick&gt;: Change your nickname"
-msgstr "nick &lt;naujas-vardas&gt;: pakeisti Jūsų vardą"
-
-msgid "whowas &lt;nick&gt;: View nick's information"
-msgstr "whowas &lt;slapyvardis&gt;: rodyti informaciją apie vartotoją"
-
-msgid ""
-"cmode &lt;channel&gt; [+|-&lt;modes&gt;] [arguments]: Change or display "
-"channel modes"
-msgstr ""
-"cmode &lt;kanalas&gt; [+|-&lt;būsenos&gt;] [argumentai]: keisti arba rodyti "
-"kanalo būsenas"
-
-msgid ""
-"cumode &lt;channel&gt; +|-&lt;modes&gt; &lt;nick&gt;: Change nick's modes "
-"on channel"
-msgstr ""
-"cumode &lt;kanalas&gt; +|-&lt;būsenos&gr; &lt;slapyvardis&gt;: keisti "
-"vartotojo būsenas kanale"
-
-msgid "umode &lt;usermodes&gt;: Set your modes in the network"
-msgstr "umode &lt;vartotojo-būsenos&gt;: nustatyti Jūsų būsenas tinkle"
-
-msgid "oper &lt;nick&gt; [-pubkey]: Get server operator privileges"
-msgstr ""
-"oper &lt;slapyvardis&gt; [-viešasis raktas]: gauti serverio operatoriaus "
-"privilegijas"
-
-msgid ""
-"invite &lt;channel&gt; [-|+]&lt;nick&gt;: invite nick or add/remove from "
-"channel invite list"
-msgstr ""
-"invite &lt;kanalas&gt; [-|+]&lt;slapyvardis&gt;: pakviesti vartotoją arba "
-"įterpti/pašalinti iš kanalo pakvietimų sąrašo"
-
-msgid "kick &lt;channel&gt; &lt;nick&gt; [comment]: Kick client from channel"
-msgstr ""
-"kick &lt;kanalas&gt; &lt;slapyvardis&gt; [komentaras]: išspirti vartotoją "
-"iš kanalog"
-
-msgid "info [server]: View server administrative details"
-msgstr "info [serveris]: rodyti serverio administracines detales"
-
-msgid "ban [&lt;channel&gt; +|-&lt;nick&gt;]: Ban client from channel"
-msgstr ""
-"ban [&lt;kanalas&gt; +|-&lt;slapyvardis&gt;]: uždrausti vartotojui "
-"prisijungti prie kanalo"
-
-msgid "getkey &lt;nick|server&gt;: Retrieve client's or server's public key"
-msgstr ""
-"getkey &lt;nick|server&gt;: gauti vartotojo arba serverio viešąjį raktą"
-
-msgid "stats: View server and network statistics"
-msgstr "stats: rodyti serverio ir tinklo statistiką"
-
-msgid "ping: Send PING to the connected server"
-msgstr "ping: skimbtelėti serveriui"
-
-msgid "users &lt;channel&gt;: List users in channel"
-msgstr "users &lt;kanalas&gt;: rodyti vartotojus kanale"
-
-msgid ""
-"names [-count|-ops|-halfops|-voices|-normal] &lt;channel(s)&gt;: List "
-"specific users in channel(s)"
-msgstr ""
-"names [-count|-ops|-halfops|-voices|-normal] &lt;kanalas(-ai)&gt;: rodyti "
-"tam tikrus vartotojus kanale(-uose)"
-
+msgid "Your VCard File"
+msgstr "Jūsų vCard failas"
+
+msgid "Timezone (UTC)"
+msgstr "Laiko juosta (UTC)"
+
+msgid "User Online Status Attributes"
+msgstr "Vartotojo prisijungimo būsenos atributai"
+
+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 ""
+"Jūs galite leisti kitiems vartotojams matyti Jūsų prisijungimo būsenos "
+"informaciją ir Jūsų asmeninę informaciją. Prašome užpildyti informaciją, "
+"kurią matys kiti vartotojai apie Jus."
+
+msgid "Message of the Day"
+msgstr "Dienos žinutė"
+
+msgid "No Message of the Day available"
+msgstr "Dienos žinutės nėra"
+
+msgid "There is no Message of the Day associated with this connection"
+msgstr "Nėra susietos su šia jungtimi dienos žinutės"
+
+msgid "Create New SILC Key Pair"
+msgstr "Kuriama nauja SILC raktų pora..."
+
+msgid "Passphrases do not match"
+msgstr "Slaptafrazės nesutampa"
+
+msgid "Key Pair Generation failed"
+msgstr "Raktų poros sukūrimas nepavyko"
+
+msgid "Key length"
+msgstr "Rakto ilgis"
+
+msgid "Public key file"
+msgstr "Viešojo rakto failas"
+
+msgid "Private key file"
+msgstr "Privataus rakto failas"
+
+msgid "Passphrase (retype)"
+msgstr "Slaptafrazė (pakartoti)"
+
+msgid "Generate Key Pair"
+msgstr "Sukurti raktų porą"
+
+msgid "Online Status"
+msgstr "Prisijungimo būsena"
+
+msgid "View Message of the Day"
+msgstr "Žiūrėti dienos žinutę"
+
+msgid "Create SILC Key Pair..."
+msgstr "Sukurti SILC raktų porą..."
+
+#, c-format
+msgid "User <I>%s</I> is not present in the network"
+msgstr "Vartotojo <i>%s</i> nėra tinkle"
+
+msgid "Topic too long"
+msgstr "Tema per ilga"
+
+msgid "You must specify a nick"
+msgstr "Jūs privalote nurodyti vardą"
+
+#, c-format
+msgid "channel %s not found"
+msgstr "kanalas %s nerastas"
+
+#, c-format
+msgid "channel modes for %s: %s"
+msgstr "Kanalo %s būsenos: %s"
+
+#, c-format
+msgid "no channel modes are set on %s"
+msgstr "kanalas %s neturi būsenų"
+
+#, c-format
+msgid "Failed to set cmodes for %s"
+msgstr "Nepavyko nustatyti %s kanalo būsenų"
+
+#, c-format
+msgid "Unknown command: %s, (may be a client bug)"
+msgstr "Nežinoma komanda: %s, (gali būti programos riktas)"
+
+msgid "part [channel]: Leave the chat"
+msgstr "part [kanalas]: palikti kanalą"
+
+msgid "leave [channel]: Leave the chat"
+msgstr "leave [channel] palikti kanalą"
+
+msgid "topic [&lt;new topic&gt;]: View or change the topic"
+msgstr "topic [nauja tema]: rodyti arba pakeisti temą"
+
+msgid "join &lt;channel&gt; [&lt;password&gt;]: Join a chat on this network"
+msgstr ""
+"join &lt;kanalas&gt; [slaptažodis]: prisijungti prie pokalbių kanalo šiame "
+"tinkle"
+
+msgid "list: List channels on this network"
+msgstr "list: parodyti šio tinklo kanalų sąrašą"
+
+msgid "whois &lt;nick&gt;: View nick's information"
+msgstr "whois &lt;vardas&gt; rodyti informaciją apie vartotoją"
+
+msgid "msg &lt;nick&gt; &lt;message&gt;: Send a private message to a user"
+msgstr ""
+"msg &lt;vardas&gt; &lt;žinutė&gt;: vartotojui nusiųsti privačią žinutę"
+
+msgid "query &lt;nick&gt; [&lt;message&gt;]: Send a private message to a user"
+msgstr "query &lt;vardas&gt; [žinutė]: vartotojui nusiųsti privačią žinutę"
+
+msgid "motd: View the server's Message Of The Day"
+msgstr "motd: rodyti serverio dienos žinutę"
+
+msgid "detach: Detach this session"
+msgstr "detach: atskirti šią sesiją"
+
+msgid "quit [message]: Disconnect from the server, with an optional message"
+msgstr ""
+"quit [žinutė]: atsijungti nuo serverio su papildoma neprivaloma žinute"
+
+msgid "call &lt;command&gt;: Call any silc client command"
+msgstr "call &lt;komanda&gt; iškviesti bet kokią SILC kliento komandą"
+
+msgid "kill &lt;nick&gt; [-pubkey|&lt;reason&gt;]: Kill nick"
+msgstr ""
+"kill &lt;vardas&gt; [-viešasis raktas|&lt;priežastis&gt;]: išmesti vartotoją"
+
+msgid "nick &lt;newnick&gt;: Change your nickname"
+msgstr "nick &lt;naujas-vardas&gt;: pakeisti Jūsų vardą"
+
+msgid "whowas &lt;nick&gt;: View nick's information"
+msgstr "whowas &lt;slapyvardis&gt;: rodyti informaciją apie vartotoją"
+
+msgid ""
+"cmode &lt;channel&gt; [+|-&lt;modes&gt;] [arguments]: Change or display "
+"channel modes"
+msgstr ""
+"cmode &lt;kanalas&gt; [+|-&lt;būsenos&gt;] [argumentai]: keisti arba rodyti "
+"kanalo būsenas"
+
+msgid ""
+"cumode &lt;channel&gt; +|-&lt;modes&gt; &lt;nick&gt;: Change nick's modes "
+"on channel"
+msgstr ""
+"cumode &lt;kanalas&gt; +|-&lt;būsenos&gr; &lt;slapyvardis&gt;: keisti "
+"vartotojo būsenas kanale"
+
+msgid "umode &lt;usermodes&gt;: Set your modes in the network"
+msgstr "umode &lt;vartotojo-būsenos&gt;: nustatyti Jūsų būsenas tinkle"
+
+msgid "oper &lt;nick&gt; [-pubkey]: Get server operator privileges"
+msgstr ""
+"oper &lt;slapyvardis&gt; [-viešasis raktas]: gauti serverio operatoriaus "
+"privilegijas"
+
+msgid ""
+"invite &lt;channel&gt; [-|+]&lt;nick&gt;: invite nick or add/remove from "
+"channel invite list"
+msgstr ""
+"invite &lt;kanalas&gt; [-|+]&lt;slapyvardis&gt;: pakviesti vartotoją arba "
+"įterpti/pašalinti iš kanalo pakvietimų sąrašo"
+
+msgid "kick &lt;channel&gt; &lt;nick&gt; [comment]: Kick client from channel"
+msgstr ""
+"kick &lt;kanalas&gt; &lt;slapyvardis&gt; [komentaras]: išspirti vartotoją "
+"iš kanalog"
+
+msgid "info [server]: View server administrative details"
+msgstr "info [serveris]: rodyti serverio administracines detales"
+
+msgid "ban [&lt;channel&gt; +|-&lt;nick&gt;]: Ban client from channel"
+msgstr ""
+"ban [&lt;kanalas&gt; +|-&lt;slapyvardis&gt;]: uždrausti vartotojui "
+"prisijungti prie kanalo"
+
+msgid "getkey &lt;nick|server&gt;: Retrieve client's or server's public key"
+msgstr ""
+"getkey &lt;nick|server&gt;: gauti vartotojo arba serverio viešąjį raktą"
+
+msgid "stats: View server and network statistics"
+msgstr "stats: rodyti serverio ir tinklo statistiką"
+
+msgid "ping: Send PING to the connected server"
+msgstr "ping: skimbtelėti serveriui"
+
+msgid "users &lt;channel&gt;: List users in channel"
+msgstr "users &lt;kanalas&gt;: rodyti vartotojus kanale"
+
+msgid ""
+"names [-count|-ops|-halfops|-voices|-normal] &lt;channel(s)&gt;: List "
+"specific users in channel(s)"
+msgstr ""
+"names [-count|-ops|-halfops|-voices|-normal] &lt;kanalas(-ai)&gt;: rodyti "
+"tam tikrus vartotojus kanale(-uose)"
+
# *< api_version
# *< type
# *< ui_requirement
@@ -9225,226 +9433,226 @@ msgstr ""
# *< name
# *< version
# * summary
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-msgid "SILC Protocol Plugin"
-msgstr "SILC protokolo papildinys"
-
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. * summary
+msgid "SILC Protocol Plugin"
+msgstr "SILC protokolo papildinys"
+
# * description
-#. * description
-msgid "Secure Internet Live Conferencing (SILC) Protocol"
-msgstr "SILC papildinys"
-
-msgid "Network"
-msgstr "Tinklas"
-
-msgid "Public Key file"
-msgstr "Viešojo rakto failas"
-
-msgid "Private Key file"
-msgstr "Privataus rakto failas"
-
-msgid "Cipher"
-msgstr "Šifras"
-
-msgid "HMAC"
-msgstr "HMAC"
-
-msgid "Use Perfect Forward Secrecy"
-msgstr "Naudoti „Perfect Forward Secrecy“ (PFC)"
-
-msgid "Public key authentication"
-msgstr "Tapatybės nustatymas viešuoju raktu"
-
-msgid "Block IMs without Key Exchange"
-msgstr "Blokuoti greitąsias žinutes be raktų apsikeitimo"
-
-msgid "Block messages to whiteboard"
-msgstr "Blokuoti rašymo ant lentos žinutes"
-
-msgid "Automatically open whiteboard"
-msgstr "Automatiškai atidaryti rašymo lentą"
-
-msgid "Digitally sign and verify all messages"
-msgstr "Skaitmeniškai pasirašyti ir patikrinti visas greitąsias žinutes"
-
-msgid "Creating SILC key pair..."
-msgstr "Kuriama SILC raktų pora..."
-
-msgid "Cannot create SILC key pair\n"
-msgstr "Negalima sukurti SILC raktų poros\n"
-
-#. Hint for translators: Please check the tabulator width here and in
-#. the next strings (short strings: 2 tabs, longer strings 1 tab,
-#. sum: 3 tabs or 24 characters)
-#, c-format
-msgid "Real Name: \t%s\n"
-msgstr "Asmenvardis: \t%s\n"
-
-#, c-format
-msgid "User Name: \t%s\n"
-msgstr "Vartotojo vardas: \t%s\n"
-
-#, c-format
-msgid "Email: \t\t%s\n"
-msgstr "El. paštas: \t\t%s\n"
-
-#, c-format
-msgid "Host Name: \t%s\n"
-msgstr "Mazgo vardas: %s\n"
-
-#, c-format
-msgid "Organization: \t%s\n"
-msgstr "Organizacija: \t%s\n"
-
-#, c-format
-msgid "Country: \t%s\n"
-msgstr "Šalis: \t%s\n"
-
-#, c-format
-msgid "Algorithm: \t%s\n"
-msgstr "Algoritmas: \t%s\n"
-
-#, c-format
-msgid "Key Length: \t%d bits\n"
-msgstr "Rakto ilgis, bitais: \t%d\n"
-
-#, c-format
-msgid "Version: \t%s\n"
-msgstr "Versija: %s\n"
-
-#, c-format
-msgid ""
-"Public Key Fingerprint:\n"
-"%s\n"
-"\n"
-msgstr ""
-"Viešojo rakto kontrolinė suma:\n"
-"%s\n"
-
-#, c-format
-msgid ""
-"Public Key Babbleprint:\n"
-"%s"
-msgstr ""
-"Viešojo rakto žodinė kontrolinė suma:\n"
-"%s"
-
-msgid "Public Key Information"
-msgstr "Viešojo rakto informacija"
-
-msgid "Paging"
-msgstr "Žinutės į pranešimų gaviklį"
-
-msgid "Video Conferencing"
-msgstr "Vaizdo konferencija"
-
-msgid "Computer"
-msgstr "Kompiuteris"
-
-msgid "PDA"
-msgstr "PDA"
-
-msgid "Terminal"
-msgstr "Terminalas"
-
-#, c-format
-msgid "%s sent message to whiteboard. Would you like to open the whiteboard?"
-msgstr "„%s“ atsiuntė rašymo ant lentos žinutę. Ar norite atidaryti lentą?"
-
-#, c-format
-msgid ""
-"%s sent message to whiteboard on %s channel. Would you like to open the "
-"whiteboard?"
-msgstr ""
-"„%s“ atsiuntė rašymo ant lentos žinutę kanale „%s“. Ar norite atidaryti "
-"lentą?"
-
-msgid "Whiteboard"
-msgstr "Lenta"
-
-msgid "No server statistics available"
-msgstr "Nėra prieinamos serverio statistikos"
-
-#, c-format
-msgid "Failure: Version mismatch, upgrade your client"
-msgstr "Nesėkmė: versijų neatitikimas, atnaujinkite savo klientą"
-
-#, c-format
-msgid "Failure: Remote does not trust/support your public key"
-msgstr ""
-"Nesekmė: nuotolinis mazgas nepasitiki arba nepalaiko Jūsų viešojo rakto"
-
-#, c-format
-msgid "Failure: Remote does not support proposed KE group"
-msgstr "Nesekmė: nuotolinis mazgas nepalaiko siūlomos KE grupės"
-
-#, c-format
-msgid "Failure: Remote does not support proposed cipher"
-msgstr "Nesekmė: nuotolinis mazgas nepalaiko siūlomo šifro"
-
-#, c-format
-msgid "Failure: Remote does not support proposed PKCS"
-msgstr "Nesekmė: nuotolinis mazgas nepalaiko siūlomo PKCS"
-
-#, c-format
-msgid "Failure: Remote does not support proposed hash function"
-msgstr "Nesekmė: nuotolinis mazgas nepalaiko siūlomos maišos funkcijos"
-
-#, c-format
-msgid "Failure: Remote does not support proposed HMAC"
-msgstr "Nesekmė: nuotolinis mazgas nepalaiko siūlomo HMAC"
-
-#, c-format
-msgid "Failure: Incorrect signature"
-msgstr "Nesekmė: neteisingas parašas"
-
-#, c-format
-msgid "Failure: Invalid cookie"
-msgstr "Nesekmė: neteisingas slapukas"
-
-#, c-format
-msgid "Failure: Authentication failed"
-msgstr "Nesekmė: tapatybės nustatymas nepavyko"
-
-msgid "Cannot initialize SILC Client connection"
-msgstr "Nepavyko inicijuoti SILC kliento jungties"
-
-msgid "John Noname"
-msgstr "Vardenis Pavardenis"
-
-#, c-format
-msgid "Could not load SILC key pair: %s"
-msgstr "Nepavyko įkelti SILC raktų poros: %s"
-
-msgid "Could not write"
-msgstr "Nepavyko rašyti"
-
-msgid "Could not connect"
-msgstr "Nepavyko prisijungti"
-
-msgid "Unknown server response."
-msgstr "Nežinomas serverio atsakymas."
-
-msgid "Could not create listen socket"
-msgstr "Nepavyko sukurti jungties klausymuisi"
-
-msgid "Could not resolve hostname"
-msgstr "Nepavyko nustatyti mazgo IP adreso"
-
-msgid "SIP usernames may not contain whitespaces or @ symbols"
-msgstr "SIP naudotojų vardai negali turėti matomų tarpų arba „@“ simbolių"
-
-msgid "SIP connect server not specified"
-msgstr "Nenurodytas SIP prisijungimo serveris"
-
+#. * description
+msgid "Secure Internet Live Conferencing (SILC) Protocol"
+msgstr "SILC papildinys"
+
+msgid "Network"
+msgstr "Tinklas"
+
+msgid "Public Key file"
+msgstr "Viešojo rakto failas"
+
+msgid "Private Key file"
+msgstr "Privataus rakto failas"
+
+msgid "Cipher"
+msgstr "Šifras"
+
+msgid "HMAC"
+msgstr "HMAC"
+
+msgid "Use Perfect Forward Secrecy"
+msgstr "Naudoti „Perfect Forward Secrecy“ (PFC)"
+
+msgid "Public key authentication"
+msgstr "Tapatybės nustatymas viešuoju raktu"
+
+msgid "Block IMs without Key Exchange"
+msgstr "Blokuoti greitąsias žinutes be raktų apsikeitimo"
+
+msgid "Block messages to whiteboard"
+msgstr "Blokuoti rašymo ant lentos žinutes"
+
+msgid "Automatically open whiteboard"
+msgstr "Automatiškai atidaryti rašymo lentą"
+
+msgid "Digitally sign and verify all messages"
+msgstr "Skaitmeniškai pasirašyti ir patikrinti visas greitąsias žinutes"
+
+msgid "Creating SILC key pair..."
+msgstr "Kuriama SILC raktų pora..."
+
+msgid "Cannot create SILC key pair\n"
+msgstr "Negalima sukurti SILC raktų poros\n"
+
+#. Hint for translators: Please check the tabulator width here and in
+#. the next strings (short strings: 2 tabs, longer strings 1 tab,
+#. sum: 3 tabs or 24 characters)
+#, c-format
+msgid "Real Name: \t%s\n"
+msgstr "Asmenvardis: \t%s\n"
+
+#, c-format
+msgid "User Name: \t%s\n"
+msgstr "Vartotojo vardas: \t%s\n"
+
+#, c-format
+msgid "Email: \t\t%s\n"
+msgstr "El. paštas: \t\t%s\n"
+
+#, c-format
+msgid "Host Name: \t%s\n"
+msgstr "Mazgo vardas: %s\n"
+
+#, c-format
+msgid "Organization: \t%s\n"
+msgstr "Organizacija: \t%s\n"
+
+#, c-format
+msgid "Country: \t%s\n"
+msgstr "Šalis: \t%s\n"
+
+#, c-format
+msgid "Algorithm: \t%s\n"
+msgstr "Algoritmas: \t%s\n"
+
+#, c-format
+msgid "Key Length: \t%d bits\n"
+msgstr "Rakto ilgis, bitais: \t%d\n"
+
+#, c-format
+msgid "Version: \t%s\n"
+msgstr "Versija: %s\n"
+
+#, c-format
+msgid ""
+"Public Key Fingerprint:\n"
+"%s\n"
+"\n"
+msgstr ""
+"Viešojo rakto kontrolinė suma:\n"
+"%s\n"
+
+#, c-format
+msgid ""
+"Public Key Babbleprint:\n"
+"%s"
+msgstr ""
+"Viešojo rakto žodinė kontrolinė suma:\n"
+"%s"
+
+msgid "Public Key Information"
+msgstr "Viešojo rakto informacija"
+
+msgid "Paging"
+msgstr "Žinutės į pranešimų gaviklį"
+
+msgid "Video Conferencing"
+msgstr "Vaizdo konferencija"
+
+msgid "Computer"
+msgstr "Kompiuteris"
+
+msgid "PDA"
+msgstr "PDA"
+
+msgid "Terminal"
+msgstr "Terminalas"
+
+#, c-format
+msgid "%s sent message to whiteboard. Would you like to open the whiteboard?"
+msgstr "„%s“ atsiuntė rašymo ant lentos žinutę. Ar norite atidaryti lentą?"
+
+#, c-format
+msgid ""
+"%s sent message to whiteboard on %s channel. Would you like to open the "
+"whiteboard?"
+msgstr ""
+"„%s“ atsiuntė rašymo ant lentos žinutę kanale „%s“. Ar norite atidaryti "
+"lentą?"
+
+msgid "Whiteboard"
+msgstr "Lenta"
+
+msgid "No server statistics available"
+msgstr "Nėra prieinamos serverio statistikos"
+
+#, c-format
+msgid "Failure: Version mismatch, upgrade your client"
+msgstr "Nesėkmė: versijų neatitikimas, atnaujinkite savo klientą"
+
+#, c-format
+msgid "Failure: Remote does not trust/support your public key"
+msgstr ""
+"Nesekmė: nuotolinis mazgas nepasitiki arba nepalaiko Jūsų viešojo rakto"
+
+#, c-format
+msgid "Failure: Remote does not support proposed KE group"
+msgstr "Nesekmė: nuotolinis mazgas nepalaiko siūlomos KE grupės"
+
+#, c-format
+msgid "Failure: Remote does not support proposed cipher"
+msgstr "Nesekmė: nuotolinis mazgas nepalaiko siūlomo šifro"
+
+#, c-format
+msgid "Failure: Remote does not support proposed PKCS"
+msgstr "Nesekmė: nuotolinis mazgas nepalaiko siūlomo PKCS"
+
+#, c-format
+msgid "Failure: Remote does not support proposed hash function"
+msgstr "Nesekmė: nuotolinis mazgas nepalaiko siūlomos maišos funkcijos"
+
+#, c-format
+msgid "Failure: Remote does not support proposed HMAC"
+msgstr "Nesekmė: nuotolinis mazgas nepalaiko siūlomo HMAC"
+
+#, c-format
+msgid "Failure: Incorrect signature"
+msgstr "Nesekmė: neteisingas parašas"
+
+#, c-format
+msgid "Failure: Invalid cookie"
+msgstr "Nesekmė: neteisingas slapukas"
+
+#, c-format
+msgid "Failure: Authentication failed"
+msgstr "Nesekmė: tapatybės nustatymas nepavyko"
+
+msgid "Cannot initialize SILC Client connection"
+msgstr "Nepavyko inicijuoti SILC kliento jungties"
+
+msgid "John Noname"
+msgstr "Vardenis Pavardenis"
+
+#, c-format
+msgid "Could not load SILC key pair: %s"
+msgstr "Nepavyko įkelti SILC raktų poros: %s"
+
+msgid "Could not write"
+msgstr "Nepavyko rašyti"
+
+msgid "Could not connect"
+msgstr "Nepavyko prisijungti"
+
+msgid "Unknown server response."
+msgstr "Nežinomas serverio atsakymas."
+
+msgid "Could not create listen socket"
+msgstr "Nepavyko sukurti jungties klausymuisi"
+
+msgid "Could not resolve hostname"
+msgstr "Nepavyko nustatyti mazgo IP adreso"
+
+msgid "SIP usernames may not contain whitespaces or @ symbols"
+msgstr "SIP naudotojų vardai negali turėti matomų tarpų arba „@“ simbolių"
+
+msgid "SIP connect server not specified"
+msgstr "Nenurodytas SIP prisijungimo serveris"
+
# *< api_version
# *< type
# *< ui_requirement
@@ -9455,17 +9663,17 @@ msgstr "Nenurodytas SIP prisijungimo serveris"
# *< name
# *< version
# * summary
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-msgid "SIP/SIMPLE Protocol Plugin"
-msgstr "SIP/SIMPLE protokolo papildinys"
-
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+msgid "SIP/SIMPLE Protocol Plugin"
+msgstr "SIP/SIMPLE protokolo papildinys"
+
# *< api_version
# *< type
# *< ui_requirement
@@ -9476,3125 +9684,3065 @@ msgstr "SIP/SIMPLE protokolo papildinys"
# *< name
# *< version
# * summary
-#. * summary
-msgid "The SIP/SIMPLE Protocol Plugin"
-msgstr "SIP/SIMPLE protokolo papildinys"
-
-msgid "Publish status (note: everyone may watch you)"
-msgstr "Skelbti būseną (pastaba: bet kas galės Jus stebėti)"
-
-msgid "Use UDP"
-msgstr "Naudoti UDP"
-
-msgid "Use proxy"
-msgstr "Be tarpininko"
-
-msgid "Proxy"
-msgstr "Tarpininkas"
-
-msgid "Auth User"
-msgstr "Vartotojas prieigos teisės tikrinimui"
-
-msgid "Auth Domain"
-msgstr "Sritis prieigos teisės tikrinimui"
-
-#, c-format
-msgid "Looking up %s"
-msgstr "Ieškoma %s"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Prisijungimas prie %s nepavyko"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Prisijungiama: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "Negalima rašyti failo %s."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "Negalima skaityti failo %s."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "Žinutė per ilga, paskutiniai %s bitai nukąsti."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s nėra šiuo metu prisijungęs"
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "Vartotojo %s perspėjimas neleidžiamas"
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "Žinutė prarasta, Jūs viršijote maksimalią serverio greičio ribą"
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "Pokalbis %s nepasiekiamas"
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "Žinutes gavėjui %s Jūs siunčiate per greitai."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "Jūs praleidote žinutę iš %s, nes ji buvo išsiųsta per didelė"
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "Jūs praleidote žinutę iš %s, nes ji buvo išsiųsta per greitai."
-
-#, c-format
-msgid "Failure."
-msgstr "Nesekmė."
-
-#, c-format
-msgid "Too many matches."
-msgstr "Per daug atitikimų."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "Reikia labiau apibrėžti."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "Katalogo tarnyba laikinai neprieinama."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "El. pašto adresų paieška apribota."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "Ignoruotas bazinis žodis"
-
-#, c-format
-msgid "No keywords."
-msgstr "Nėra bazinių žodžių"
-
-#, c-format
-msgid "User has no directory information."
-msgstr "Vartotojas neturi katalogo informacijos"
-
-#, c-format
-msgid "Country not supported."
-msgstr "Nepalaikoma šalis."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Nežinoma nesekmė: %s."
-
-#, c-format
-msgid "Incorrect username or password."
-msgstr "Neteisingas naudotojo vardas arba slaptažodis"
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "Paslauga laikinai nepasiekiama"
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr ""
-"Jūsų perspėjimo lygis šiuo metu yra per aukštas, kad galėtumėte prisijungti."
-
-#, 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 ""
-"Jūs prisijunginėjote ir atsijunginėjote per dažnai. Palaukite dešimt "
-"minučių ir pabandykite iš naujo. Jei ir toliau bandysite, Jums reikės "
-"laukti dar ilgiau."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "Įvyko nežinoma prisijungimo klaida: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "Įvyko nežinoma klaida %d. Informacija: %s"
-
-msgid "Invalid Groupname"
-msgstr "Neteisingas grupės pavadinimas"
-
-msgid "Connection Closed"
-msgstr "Jungtis uždaryta"
-
-msgid "Waiting for reply..."
-msgstr "Laukiama atsako..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "TOC protokolo užlaikymas baigėsi. Dabar Jūs vėl galite siųsti žinutes."
-
-msgid "Password Change Successful"
-msgstr "Slaptažodis pakeistas sėkmingai"
-
-msgid "_Group:"
-msgstr "_Grupė:"
-
-msgid "Get Dir Info"
-msgstr "Gauti katalogo informaciją"
-
-msgid "Set Dir Info"
-msgstr "Nustatyti katalogo informaciją"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "Nepavyko atverti %s rašymui!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "Failų perdavimas nepavyko; greičiausiai kita pusė jį nutraukė."
-
-msgid "Could not connect for transfer."
-msgstr "Nepavyko prisijungti perdavimui."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "Nepavyko rašyti failo antraštės. Failas nebus perduotas."
-
-msgid "Save As..."
-msgstr "Įrašyti kaip..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s prašo %s priimti %d failą: %s (%.2f %s)%s%s"
-msgstr[1] "%s prašo %s priimti %d failus: %s (%.2f %s)%s%s"
-msgstr[2] "%s prašo %s priimti %d failų: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s prašo nusiųsti jam failą"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "TOC protokolo papildinys"
-
-#, c-format
-msgid "%s has sent you a webcam invite, which is not yet supported."
-msgstr ""
-"%s atsiuntė kvietimą internetinės vaizdo kameros pokalbiui, ko Pidgin dar "
-"nepalaiko."
-
-msgid "Your Yahoo! message did not get sent."
-msgstr "Jūsų Yahoo! žinutė nebuvo išsiųsta."
-
-#, c-format
-msgid "Yahoo! system message for %s:"
-msgstr "Yahoo! sisteminis pranešimas vartotojui %s:"
-
-#, c-format
-msgid ""
-"%s has (retroactively) denied your request to add them to your list for the "
-"following reason: %s."
-msgstr ""
-"%s atmeteė (atgaline data) Jūsų prašymą įtraukti jį į Jūsų bičiulių sąrašą "
-"dėl šios priežasties: %s."
-
-#, c-format
-msgid "%s has (retroactively) denied your request to add them to your list."
-msgstr ""
-"%s atmetė (atgaline data) Jūsų prašymą įtraukti jį į Jūsų bičiulių sąrašą."
-
-msgid "Add buddy rejected"
-msgstr "Bičiulio pridėjimas atmestas"
-
-#, 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 serveris pareikalavo nežinomo tapatybės nustatymo metodo. Jums "
-"turbūt nepavyks sėkmingai prisijungti prie Yahoo. Paieškokite atnaujinimų "
-"adresu %s."
-
-msgid "Failed Yahoo! Authentication"
-msgstr "Yahoo! tapatybės nustatymas nepavyko"
-
-#, 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 ""
-"Jūs bandėte ignoruoti vartotoją %s, bet jis yra Jūsų bičiulių sąraše. "
-"Paspauskite „Taip“, jei norite pašalinti ir ignoruoti bičiulį."
-
-msgid "Ignore buddy?"
-msgstr "Ar ignoruoti bičiulį?"
-
-msgid "Your account is locked, please log in to the Yahoo! website."
-msgstr "Jūsų abonentas užblokuotas, prisijunkite prie Yahoo! svetainės."
-
-#, c-format
-msgid "Unknown error number %d. Logging into the Yahoo! website may fix this."
-msgstr ""
-"Nežinomas klaidos numeris %d. Prisijungimas prie Yahoo! svetainės galbūt "
-"tai pataisys."
-
-#, c-format
-msgid "Could not add buddy %s to group %s to the server list on account %s."
-msgstr "Nepavyko pridėti bičiulio %s į grupę %s serverio sąraše paskyroje %s."
-
-msgid "Could not add buddy to server list"
-msgstr "Nepavyko pridėti bičiulio į serverio sarašą"
-
-#, c-format
-msgid "[ Audible %s/%s/%s.swf ] %s"
-msgstr "[ Garsinė žinutė %s/%s/%s.swf ] %s"
-
-msgid "Received unexpected HTTP response from server."
-msgstr "Gautas nelauktas HTTP atsakymas iš serverio."
-
-msgid "Connection problem"
-msgstr "Jungties klaida"
-
-#, c-format
-msgid ""
-"Lost connection with %s:\n"
-"%s"
-msgstr ""
-"Prarasta jungtis su %s:\n"
-"%s"
-
-#, c-format
-msgid ""
-"Could not establish a connection with %s:\n"
-"%s"
-msgstr ""
-"Nepavyko sukurti jungties su %s:\n"
-"%s"
-
-msgid "Not at Home"
-msgstr "Ne namie"
-
-msgid "Not at Desk"
-msgstr "Ne darbo vietoje"
-
-msgid "Not in Office"
-msgstr "Ne biure"
-
-msgid "On Vacation"
-msgstr "Atostogose"
-
-msgid "Stepped Out"
-msgstr "Trumpam išėjęs"
-
-msgid "Not on server list"
-msgstr "Nėra serverio sąraše"
-
-msgid "Appear Online"
-msgstr "Atrodyti prisijungusiu"
-
-msgid "Appear Permanently Offline"
-msgstr "Atrodyti atsijungusiu"
-
-msgid "Presence"
-msgstr "Būsena"
-
-msgid "Appear Offline"
-msgstr "Atrodyti atsijungusiu"
-
-msgid "Don't Appear Permanently Offline"
-msgstr "Neatrodyti atsijungusiu"
-
-msgid "Join in Chat"
-msgstr "Prisijungti prie pokalbio"
-
-msgid "Initiate Conference"
-msgstr "Inicijuoti konferenciją"
-
+#. * summary
+msgid "The SIP/SIMPLE Protocol Plugin"
+msgstr "SIP/SIMPLE protokolo papildinys"
+
+msgid "Publish status (note: everyone may watch you)"
+msgstr "Skelbti būseną (pastaba: bet kas galės Jus stebėti)"
+
+msgid "Use UDP"
+msgstr "Naudoti UDP"
+
+msgid "Use proxy"
+msgstr "Be tarpininko"
+
+msgid "Proxy"
+msgstr "Tarpininkas"
+
+msgid "Auth User"
+msgstr "Vartotojas prieigos teisės tikrinimui"
+
+msgid "Auth Domain"
+msgstr "Sritis prieigos teisės tikrinimui"
+
+#, c-format
+msgid "%s has sent you a webcam invite, which is not yet supported."
+msgstr ""
+"%s atsiuntė kvietimą internetinės vaizdo kameros pokalbiui, ko Pidgin dar "
+"nepalaiko."
+
+msgid "Your SMS was not delivered"
+msgstr ""
+
+msgid "Your Yahoo! message did not get sent."
+msgstr "Jūsų Yahoo! žinutė nebuvo išsiųsta."
+
+#, c-format
+msgid "Yahoo! system message for %s:"
+msgstr "Yahoo! sisteminis pranešimas vartotojui %s:"
+
+#, c-format
+msgid ""
+"%s has (retroactively) denied your request to add them to your list for the "
+"following reason: %s."
+msgstr ""
+"%s atmeteė (atgaline data) Jūsų prašymą įtraukti jį į Jūsų bičiulių sąrašą "
+"dėl šios priežasties: %s."
+
+#, c-format
+msgid "%s has (retroactively) denied your request to add them to your list."
+msgstr ""
+"%s atmetė (atgaline data) Jūsų prašymą įtraukti jį į Jūsų bičiulių sąrašą."
+
+msgid "Add buddy rejected"
+msgstr "Bičiulio pridėjimas atmestas"
+
+#, 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 serveris pareikalavo nežinomo tapatybės nustatymo metodo. Jums "
+"turbūt nepavyks sėkmingai prisijungti prie Yahoo. Paieškokite atnaujinimų "
+"adresu %s."
+
+msgid "Failed Yahoo! Authentication"
+msgstr "Yahoo! tapatybės nustatymas nepavyko"
+
+#, 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 ""
+"Jūs bandėte ignoruoti vartotoją %s, bet jis yra Jūsų bičiulių sąraše. "
+"Paspauskite „Taip“, jei norite pašalinti ir ignoruoti bičiulį."
+
+msgid "Ignore buddy?"
+msgstr "Ar ignoruoti bičiulį?"
+
+msgid "Your account is locked, please log in to the Yahoo! website."
+msgstr "Jūsų abonentas užblokuotas, prisijunkite prie Yahoo! svetainės."
+
+#, c-format
+msgid "Unknown error number %d. Logging into the Yahoo! website may fix this."
+msgstr ""
+"Nežinomas klaidos numeris %d. Prisijungimas prie Yahoo! svetainės galbūt "
+"tai pataisys."
+
+#, c-format
+msgid "Could not add buddy %s to group %s to the server list on account %s."
+msgstr "Nepavyko pridėti bičiulio %s į grupę %s serverio sąraše paskyroje %s."
+
+msgid "Could not add buddy to server list"
+msgstr "Nepavyko pridėti bičiulio į serverio sarašą"
+
+#, c-format
+msgid "[ Audible %s/%s/%s.swf ] %s"
+msgstr "[ Garsinė žinutė %s/%s/%s.swf ] %s"
+
+msgid "Received unexpected HTTP response from server."
+msgstr "Gautas nelauktas HTTP atsakymas iš serverio."
+
+msgid "Connection problem"
+msgstr "Jungties klaida"
+
+#, c-format
+msgid ""
+"Lost connection with %s:\n"
+"%s"
+msgstr ""
+"Prarasta jungtis su %s:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with %s:\n"
+"%s"
+msgstr ""
+"Nepavyko sukurti jungties su %s:\n"
+"%s"
+
+msgid "Not at Home"
+msgstr "Ne namie"
+
+msgid "Not at Desk"
+msgstr "Ne darbo vietoje"
+
+msgid "Not in Office"
+msgstr "Ne biure"
+
+msgid "On Vacation"
+msgstr "Atostogose"
+
+msgid "Stepped Out"
+msgstr "Trumpam išėjęs"
+
+msgid "Not on server list"
+msgstr "Nėra serverio sąraše"
+
+msgid "Appear Online"
+msgstr "Atrodyti prisijungusiu"
+
+msgid "Appear Permanently Offline"
+msgstr "Atrodyti atsijungusiu"
+
+msgid "Presence"
+msgstr "Būsena"
+
+msgid "Appear Offline"
+msgstr "Atrodyti atsijungusiu"
+
+msgid "Don't Appear Permanently Offline"
+msgstr "Neatrodyti atsijungusiu"
+
+msgid "Join in Chat"
+msgstr "Prisijungti prie pokalbio"
+
+msgid "Initiate Conference"
+msgstr "Inicijuoti konferenciją"
+
# Use Environmental Settings
-msgid "Presence Settings"
-msgstr "Būsenos nuostatos"
-
-msgid "Start Doodling"
-msgstr "Pradėti paišinėjimą"
-
-msgid "Activate which ID?"
-msgstr "Kurį ID aktyvuoti?"
-
-msgid "Join whom in chat?"
-msgstr "Prisijungti prie ko į pokalbį?"
-
-msgid "Activate ID..."
-msgstr "Aktyvuoti ID..."
-
-msgid "Join User in Chat..."
-msgstr "Prisijungti prie vartotojo pokalbyje..."
-
-msgid "Open Inbox"
-msgstr "Atidaryti pašto dėžutę"
-
-msgid "join &lt;room&gt;: Join a chat room on the Yahoo network"
-msgstr ""
-"join &lt;kambarys&gt;: prisijungti prie pokalbių kambario Yahoo tinkle"
-
-msgid "list: List rooms on the Yahoo network"
-msgstr "list: parodyti šio Yahoo tinklo kanalų sąrašą"
-
-msgid "doodle: Request user to start a Doodle session"
-msgstr "doodle: paprašyti kontakto pradėti su juo paišymo seansą"
-
-msgid "Yahoo ID..."
-msgstr "Yahoo ID..."
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "Yahoo Protocol Plugin"
-msgstr "Yahoo protokolo papildinys"
-
-msgid "Yahoo Japan"
-msgstr "Yahoo Japonija"
-
-msgid "Pager server"
-msgstr "Pranešimų gaviklio serveris"
-
-msgid "Japan Pager server"
-msgstr "Japonijos pranešimų gaviklio serveris"
-
-msgid "Pager port"
-msgstr "Pranešimų gaviklio prievadas"
-
-msgid "File transfer server"
-msgstr "Failų perdavimo serveris"
-
-msgid "Japan file transfer server"
-msgstr "Japonijos failų perdavimo serveris"
-
-msgid "File transfer port"
-msgstr "Failų perdavimo prievadas"
-
-msgid "Chat room locale"
-msgstr "Pokalbių kambario lokalė"
-
-msgid "Ignore conference and chatroom invitations"
-msgstr "Ignoruoti kvietimus į konferencijas ir pokalbių kambarius"
-
-msgid "Chat room list URL"
-msgstr "Pokalbių kambarių sąrašo URL"
-
-msgid "Yahoo Chat server"
-msgstr "Yahoo pokalbių serveris"
-
-msgid "Yahoo Chat port"
-msgstr "Yahoo pokalbių serverio prievadas"
-
-#. Write a local message to this conversation showing that a request for a
-#. * Doodle session has been made
-#.
-msgid "Sent Doodle request."
-msgstr "Nusiųsta Doodle užklausa."
-
-msgid "Unable to establish file descriptor."
-msgstr "Negalima nustatyti failo deskriptoriaus."
-
-#, c-format
-msgid "%s is trying to send you a group of %d files.\n"
-msgstr "%s siūlo atsiųsti %d failo(-ų) grupę\n"
-
-msgid "Yahoo! Japan Profile"
-msgstr "Yahoo! Japonija profilis"
-
-msgid "Yahoo! Profile"
-msgstr "Yahoo! profilis"
-
-msgid ""
-"Sorry, profiles marked as containing adult content are not supported at this "
-"time."
-msgstr ""
-"Atsiprašome, profiliai, pažymėti kaip tik suaugusiems, nėra palaikomi šiuo "
-"metu."
-
-msgid ""
-"If you wish to view this profile, you will need to visit this link in your "
-"web browser:"
-msgstr "Jeigu norite pamatyti šį profilį, turite šį saitą atverti naršyklėje:"
-
-msgid "Yahoo! ID"
-msgstr "Yahoo! ID"
-
-msgid "Hobbies"
-msgstr "Hobiai"
-
-msgid "Latest News"
-msgstr "Naujienos"
-
-msgid "Home Page"
-msgstr "Namų puslapis"
-
-msgid "Cool Link 1"
-msgstr "Puiki nuoroda 1"
-
-msgid "Cool Link 2"
-msgstr "Puiki nuoroda 2"
-
-msgid "Cool Link 3"
-msgstr "Puiki nuoroda 3"
-
-msgid "Last Update"
-msgstr "Paskutinis atnaujinimas"
-
-msgid ""
-"This profile is in a language or format that is not supported at this time."
-msgstr "Šis profilis parašytas šiuo metu nepalaikoma kalba ar formatu."
-
-msgid ""
-"Could not retrieve the user's profile. This most likely is a temporary "
-"server-side problem. Please try again later."
-msgstr ""
-"Nepavyko gauti vartotojo profilio. Greičiausiai tai yra laikina serverio "
-"problema. Prašome pabandyti vėliau iš naujo."
-
-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 ""
-"Nepavyko gauti vartotojo profilio. Greičiausiai tai reiškia, kad toks "
-"vartuotojas neegzistuoja. Tačiau kartais Yahoo! nepavyksta surasti "
-"egzistuojančio vartotojo profilio, todėl jei žinote, kad toks vartotojas "
-"egzistuoja, pabandykite vėliau iš naujo."
-
-msgid "The user's profile is empty."
-msgstr "Tuščias vartotojo profilis."
-
-#, c-format
-msgid "%s declined your conference invitation to room \"%s\" because \"%s\"."
-msgstr ""
-"Vartotojas %s atmetė Jūsų konferencijos pakvietimą į kambarį „%s“ dėl "
-"priežasties „%s“."
-
-msgid "Invitation Rejected"
-msgstr "Pakvietimas atmestas"
-
-msgid "Failed to join chat"
-msgstr "Nepavyko prisijungti prie pokalbio"
-
-#. -6
-msgid "Unknown room"
-msgstr "Nežinomas kambarys"
-
-#. -15
-msgid "Maybe the room is full"
-msgstr "Galbūt kambarys yra pilnas"
-
-#. -35
-msgid "Not available"
-msgstr "Neprieinamas"
-
-msgid ""
-"Unknown error. You may need to logout and wait five minutes before being "
-"able to rejoin a chatroom"
-msgstr ""
-"Nežinoma klaida. Jums gali tektis atsijungti ir palaukti penkias minutės "
-"prieš atgaunant galimybę prisijungti prie pokalbių kambario"
-
-#, c-format
-msgid "You are now chatting in %s."
-msgstr "Jūs dabar kalbate %s."
-
-msgid "Failed to join buddy in chat"
-msgstr "Nepavyko prisijungti prie bičiulio pokalbių kambaryje"
-
-msgid "Maybe they're not in a chat?"
-msgstr "Galbūt jie nėra pokalbių kambaryje?"
-
-msgid "Fetching the room list failed."
-msgstr "Nepavyko gauti kambarių sąrašo."
-
-msgid "Voices"
-msgstr "Balsai"
-
-msgid "Webcams"
-msgstr "Internetinės kameros"
-
-msgid "Unable to fetch room list."
-msgstr "Nepavyko gauti kambarių sąrašo."
-
-msgid "User Rooms"
-msgstr "Vartotojų kambariai"
-
-msgid "Connection problem with the YCHT server."
-msgstr "Jungties su YCHT serveriu problemos."
-
-#, c-format
-msgid ""
-"Lost connection with server\n"
-"%s"
-msgstr ""
-"Prarastas prisijungimas prie serverio\n"
-"%s"
-
-msgid ""
-"(There was an error converting this message.\t Check the 'Encoding' option "
-"in the Account Editor)"
-msgstr ""
-"(Įvyko pranešimo konvertavimo klaida. Patikrinkite parinktį „Koduotė“ "
-"paskyrų redaktoriuje)"
-
-#, c-format
-msgid "Unable to send to chat %s,%s,%s"
-msgstr "Nepavyko išsiųsti žinutės į pokalbių kambarį %s,%s,%s"
-
-msgid "Hidden or not logged-in"
-msgstr "Pasislėpęs arba neprisijungęs"
-
-#, c-format
-msgid "<br>At %s since %s"
-msgstr "<br>Prisijungęs prie %s nuo %s"
-
-msgid "Anyone"
-msgstr "Bet kas"
-
-msgid "_Class:"
-msgstr "_Klasė"
-
-msgid "_Instance:"
-msgstr "_Instancija"
-
-msgid "_Recipient:"
-msgstr "_Gavėjas:"
-
-#, c-format
-msgid "Attempt to subscribe to %s,%s,%s failed"
-msgstr "Bandymas užsirašyti į %s,%s,%s nepavyko"
-
-msgid "zlocate &lt;nick&gt;: Locate user"
-msgstr "zlocate &lt;slapyvardis&gt;: surasti vartotoją"
-
-msgid "zl &lt;nick&gt;: Locate user"
-msgstr "zl &lt;slapyvardis&gt;: surasti vartotoją"
-
-msgid "instance &lt;instance&gt;: Set the instance to be used on this class"
-msgstr ""
-"instance &lt;instancija&gt;: nustatyti šioje klasėje vartojamą instanciją"
-
-msgid "inst &lt;instance&gt;: Set the instance to be used on this class"
-msgstr "inst &lt;instancija&gt;: nustatyti šioje klasėje vartojamą instanciją"
-
-msgid "topic &lt;instance&gt;: Set the instance to be used on this class"
-msgstr ""
-"topic &lt;instancija&gt;: nustatyti šioje klasėje vartojamą instanciją"
-
-msgid "sub &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Join a new chat"
-msgstr ""
-"sub &lt;klasė&gt; &lt;instancija&gt; &lt;gavėjas&gt;: prisijungti prie "
-"naujo pokalbio"
-
-msgid ""
-"zi &lt;instance&gt;: Send a message to &lt;message,<i>instance</i>,*&gt;"
-msgstr ""
-"zi &lt;instancija&gt;: siųsti žinutę adresu &lt;ŽINUTĖ,<i>instancija</i>,"
-"*&gt;"
-
-msgid ""
-"zci &lt;class&gt; &lt;instance&gt;: Send a message to &lt;<i>class</i>,"
-"<i>instance</i>,*&gt;"
-msgstr ""
-"zci &lt;klasė&gt; &lt;instancija&gt;: siųsti žinutę adresu &lt;<i>klasė</"
-"i>, <i>instancija</i>,*&gt;"
-
-msgid ""
-"zcir &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Send a message to &lt;"
-"<i>class</i>,<i>instance</i>,<i>recipient</i>&gt;"
-msgstr ""
-"zcir &lt;klasė&gt; &lt;instancija&gt; &lt;gavėjas&gt;: siųsti žinutę adresu "
-"&lt;<i>klasė</i>,<i>instancija</i>,<i>gavėjas</i>&gt;"
-
-msgid ""
-"zir &lt;instance&gt; &lt;recipient&gt;: Send a message to &lt;MESSAGE,"
-"<i>instance</i>,<i>recipient</i>&gt;"
-msgstr ""
-"zir &lt;instancija&gt; &lt;gavėjas&gt;: siųsti žinutę adresu &lt;ŽINUTĖ,"
-"<i>instancija</i>,<i>gavėjas</i>&gt;"
-
-msgid "zc &lt;class&gt;: Send a message to &lt;<i>class</i>,PERSONAL,*&gt;"
-msgstr ""
-"zc &lt;klasė&gt;: siųsti žinutę adresu &lt;<i>klasė</i>,ASMENINĖ,*&gt;"
-
-msgid "Resubscribe"
-msgstr "Prisiregistruoti iš naujo"
-
-msgid "Retrieve subscriptions from server"
-msgstr "Gauti registracijas iš serverio"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "Zephyr Protocol Plugin"
-msgstr "Zephyr protokolo papildinys"
-
-msgid "Use tzc"
-msgstr "Naudoti „tzc“"
-
-msgid "tzc command"
-msgstr "„tzc“ komanda"
-
-msgid "Export to .anyone"
-msgstr "Eksportuoti į .anyone"
-
-msgid "Export to .zephyr.subs"
-msgstr "Eksportuoti į .zephyr.subs"
-
-msgid "Import from .anyone"
-msgstr "Importuoti iš .anyone"
-
-msgid "Import from .zephyr.subs"
-msgstr "Importuoti iš .zephyr.subs"
-
-msgid "Realm"
-msgstr "Sritis"
-
-msgid "Exposure"
-msgstr "Atskleidimas"
-
-#, c-format
-msgid ""
-"Unable to create socket:\n"
-"%s"
-msgstr ""
-"Nepavyko sukurti jungties:\n"
-"%s"
-
+msgid "Presence Settings"
+msgstr "Būsenos nuostatos"
+
+msgid "Start Doodling"
+msgstr "Pradėti paišinėjimą"
+
+msgid "Activate which ID?"
+msgstr "Kurį ID aktyvuoti?"
+
+msgid "Join whom in chat?"
+msgstr "Prisijungti prie ko į pokalbį?"
+
+msgid "Activate ID..."
+msgstr "Aktyvuoti ID..."
+
+msgid "Join User in Chat..."
+msgstr "Prisijungti prie vartotojo pokalbyje..."
+
+msgid "Open Inbox"
+msgstr "Atidaryti pašto dėžutę"
+
+msgid "join &lt;room&gt;: Join a chat room on the Yahoo network"
+msgstr ""
+"join &lt;kambarys&gt;: prisijungti prie pokalbių kambario Yahoo tinkle"
+
+msgid "list: List rooms on the Yahoo network"
+msgstr "list: parodyti šio Yahoo tinklo kanalų sąrašą"
+
+msgid "doodle: Request user to start a Doodle session"
+msgstr "doodle: paprašyti kontakto pradėti su juo paišymo seansą"
+
+msgid "Yahoo ID..."
+msgstr "Yahoo ID..."
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Yahoo Protocol Plugin"
+msgstr "Yahoo protokolo papildinys"
+
+msgid "Yahoo Japan"
+msgstr "Yahoo Japonija"
+
+msgid "Pager server"
+msgstr "Pranešimų gaviklio serveris"
+
+msgid "Japan Pager server"
+msgstr "Japonijos pranešimų gaviklio serveris"
+
+msgid "Pager port"
+msgstr "Pranešimų gaviklio prievadas"
+
+msgid "File transfer server"
+msgstr "Failų perdavimo serveris"
+
+msgid "Japan file transfer server"
+msgstr "Japonijos failų perdavimo serveris"
+
+msgid "File transfer port"
+msgstr "Failų perdavimo prievadas"
+
+msgid "Chat room locale"
+msgstr "Pokalbių kambario lokalė"
+
+msgid "Ignore conference and chatroom invitations"
+msgstr "Ignoruoti kvietimus į konferencijas ir pokalbių kambarius"
+
+msgid "Chat room list URL"
+msgstr "Pokalbių kambarių sąrašo URL"
+
+msgid "Yahoo Chat server"
+msgstr "Yahoo pokalbių serveris"
+
+msgid "Yahoo Chat port"
+msgstr "Yahoo pokalbių serverio prievadas"
+
+#. Write a local message to this conversation showing that a request for a
+#. * Doodle session has been made
+#.
+msgid "Sent Doodle request."
+msgstr "Nusiųsta Doodle užklausa."
+
+msgid "Unable to establish file descriptor."
+msgstr "Negalima nustatyti failo deskriptoriaus."
+
+#, c-format
+msgid "%s is trying to send you a group of %d files.\n"
+msgstr "%s siūlo atsiųsti %d failo(-ų) grupę\n"
+
+msgid "Yahoo! Japan Profile"
+msgstr "Yahoo! Japonija profilis"
+
+msgid "Yahoo! Profile"
+msgstr "Yahoo! profilis"
+
+msgid ""
+"Sorry, profiles marked as containing adult content are not supported at this "
+"time."
+msgstr ""
+"Atsiprašome, profiliai, pažymėti kaip tik suaugusiems, nėra palaikomi šiuo "
+"metu."
+
+msgid ""
+"If you wish to view this profile, you will need to visit this link in your "
+"web browser:"
+msgstr "Jeigu norite pamatyti šį profilį, turite šį saitą atverti naršyklėje:"
+
+msgid "Yahoo! ID"
+msgstr "Yahoo! ID"
+
+msgid "Hobbies"
+msgstr "Hobiai"
+
+msgid "Latest News"
+msgstr "Naujienos"
+
+msgid "Home Page"
+msgstr "Namų puslapis"
+
+msgid "Cool Link 1"
+msgstr "Puiki nuoroda 1"
+
+msgid "Cool Link 2"
+msgstr "Puiki nuoroda 2"
+
+msgid "Cool Link 3"
+msgstr "Puiki nuoroda 3"
+
+msgid "Last Update"
+msgstr "Paskutinis atnaujinimas"
+
+msgid ""
+"This profile is in a language or format that is not supported at this time."
+msgstr "Šis profilis parašytas šiuo metu nepalaikoma kalba ar formatu."
+
+msgid ""
+"Could not retrieve the user's profile. This most likely is a temporary "
+"server-side problem. Please try again later."
+msgstr ""
+"Nepavyko gauti vartotojo profilio. Greičiausiai tai yra laikina serverio "
+"problema. Prašome pabandyti vėliau iš naujo."
+
+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 ""
+"Nepavyko gauti vartotojo profilio. Greičiausiai tai reiškia, kad toks "
+"vartuotojas neegzistuoja. Tačiau kartais Yahoo! nepavyksta surasti "
+"egzistuojančio vartotojo profilio, todėl jei žinote, kad toks vartotojas "
+"egzistuoja, pabandykite vėliau iš naujo."
+
+msgid "The user's profile is empty."
+msgstr "Tuščias vartotojo profilis."
+
+#, c-format
+msgid "%s declined your conference invitation to room \"%s\" because \"%s\"."
+msgstr ""
+"Vartotojas %s atmetė Jūsų konferencijos pakvietimą į kambarį „%s“ dėl "
+"priežasties „%s“."
+
+msgid "Invitation Rejected"
+msgstr "Pakvietimas atmestas"
+
+msgid "Failed to join chat"
+msgstr "Nepavyko prisijungti prie pokalbio"
+
+#. -6
+msgid "Unknown room"
+msgstr "Nežinomas kambarys"
+
+#. -15
+msgid "Maybe the room is full"
+msgstr "Galbūt kambarys yra pilnas"
+
+#. -35
+msgid "Not available"
+msgstr "Neprieinamas"
+
+msgid ""
+"Unknown error. You may need to logout and wait five minutes before being "
+"able to rejoin a chatroom"
+msgstr ""
+"Nežinoma klaida. Jums gali tektis atsijungti ir palaukti penkias minutės "
+"prieš atgaunant galimybę prisijungti prie pokalbių kambario"
+
+#, c-format
+msgid "You are now chatting in %s."
+msgstr "Jūs dabar kalbate %s."
+
+msgid "Failed to join buddy in chat"
+msgstr "Nepavyko prisijungti prie bičiulio pokalbių kambaryje"
+
+msgid "Maybe they're not in a chat?"
+msgstr "Galbūt jie nėra pokalbių kambaryje?"
+
+msgid "Fetching the room list failed."
+msgstr "Nepavyko gauti kambarių sąrašo."
+
+msgid "Voices"
+msgstr "Balsai"
+
+msgid "Webcams"
+msgstr "Internetinės kameros"
+
+msgid "Unable to fetch room list."
+msgstr "Nepavyko gauti kambarių sąrašo."
+
+msgid "User Rooms"
+msgstr "Vartotojų kambariai"
+
+msgid "Connection problem with the YCHT server."
+msgstr "Jungties su YCHT serveriu problemos."
+
+#, c-format
+msgid ""
+"Lost connection with server\n"
+"%s"
+msgstr ""
+"Prarastas prisijungimas prie serverio\n"
+"%s"
+
+msgid ""
+"(There was an error converting this message.\t Check the 'Encoding' option "
+"in the Account Editor)"
+msgstr ""
+"(Įvyko pranešimo konvertavimo klaida. Patikrinkite parinktį „Koduotė“ "
+"paskyrų redaktoriuje)"
+
+#, c-format
+msgid "Unable to send to chat %s,%s,%s"
+msgstr "Nepavyko išsiųsti žinutės į pokalbių kambarį %s,%s,%s"
+
+msgid "Hidden or not logged-in"
+msgstr "Pasislėpęs arba neprisijungęs"
+
+#, c-format
+msgid "<br>At %s since %s"
+msgstr "<br>Prisijungęs prie %s nuo %s"
+
+msgid "Anyone"
+msgstr "Bet kas"
+
+msgid "_Class:"
+msgstr "_Klasė"
+
+msgid "_Instance:"
+msgstr "_Instancija"
+
+msgid "_Recipient:"
+msgstr "_Gavėjas:"
+
+#, c-format
+msgid "Attempt to subscribe to %s,%s,%s failed"
+msgstr "Bandymas užsirašyti į %s,%s,%s nepavyko"
+
+msgid "zlocate &lt;nick&gt;: Locate user"
+msgstr "zlocate &lt;slapyvardis&gt;: surasti vartotoją"
+
+msgid "zl &lt;nick&gt;: Locate user"
+msgstr "zl &lt;slapyvardis&gt;: surasti vartotoją"
+
+msgid "instance &lt;instance&gt;: Set the instance to be used on this class"
+msgstr ""
+"instance &lt;instancija&gt;: nustatyti šioje klasėje vartojamą instanciją"
+
+msgid "inst &lt;instance&gt;: Set the instance to be used on this class"
+msgstr "inst &lt;instancija&gt;: nustatyti šioje klasėje vartojamą instanciją"
+
+msgid "topic &lt;instance&gt;: Set the instance to be used on this class"
+msgstr ""
+"topic &lt;instancija&gt;: nustatyti šioje klasėje vartojamą instanciją"
+
+msgid "sub &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Join a new chat"
+msgstr ""
+"sub &lt;klasė&gt; &lt;instancija&gt; &lt;gavėjas&gt;: prisijungti prie "
+"naujo pokalbio"
+
+msgid ""
+"zi &lt;instance&gt;: Send a message to &lt;message,<i>instance</i>,*&gt;"
+msgstr ""
+"zi &lt;instancija&gt;: siųsti žinutę adresu &lt;ŽINUTĖ,<i>instancija</i>,"
+"*&gt;"
+
+msgid ""
+"zci &lt;class&gt; &lt;instance&gt;: Send a message to &lt;<i>class</i>,"
+"<i>instance</i>,*&gt;"
+msgstr ""
+"zci &lt;klasė&gt; &lt;instancija&gt;: siųsti žinutę adresu &lt;<i>klasė</"
+"i>, <i>instancija</i>,*&gt;"
+
+msgid ""
+"zcir &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Send a message to &lt;"
+"<i>class</i>,<i>instance</i>,<i>recipient</i>&gt;"
+msgstr ""
+"zcir &lt;klasė&gt; &lt;instancija&gt; &lt;gavėjas&gt;: siųsti žinutę adresu "
+"&lt;<i>klasė</i>,<i>instancija</i>,<i>gavėjas</i>&gt;"
+
+msgid ""
+"zir &lt;instance&gt; &lt;recipient&gt;: Send a message to &lt;MESSAGE,"
+"<i>instance</i>,<i>recipient</i>&gt;"
+msgstr ""
+"zir &lt;instancija&gt; &lt;gavėjas&gt;: siųsti žinutę adresu &lt;ŽINUTĖ,"
+"<i>instancija</i>,<i>gavėjas</i>&gt;"
+
+msgid "zc &lt;class&gt;: Send a message to &lt;<i>class</i>,PERSONAL,*&gt;"
+msgstr ""
+"zc &lt;klasė&gt;: siųsti žinutę adresu &lt;<i>klasė</i>,ASMENINĖ,*&gt;"
+
+msgid "Resubscribe"
+msgstr "Prisiregistruoti iš naujo"
+
+msgid "Retrieve subscriptions from server"
+msgstr "Gauti registracijas iš serverio"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Zephyr Protocol Plugin"
+msgstr "Zephyr protokolo papildinys"
+
+msgid "Use tzc"
+msgstr "Naudoti „tzc“"
+
+msgid "tzc command"
+msgstr "„tzc“ komanda"
+
+msgid "Export to .anyone"
+msgstr "Eksportuoti į .anyone"
+
+msgid "Export to .zephyr.subs"
+msgstr "Eksportuoti į .zephyr.subs"
+
+msgid "Import from .anyone"
+msgstr "Importuoti iš .anyone"
+
+msgid "Import from .zephyr.subs"
+msgstr "Importuoti iš .zephyr.subs"
+
+msgid "Realm"
+msgstr "Sritis"
+
+msgid "Exposure"
+msgstr "Atskleidimas"
+
+#, c-format
+msgid ""
+"Unable to create socket:\n"
+"%s"
+msgstr ""
+"Nepavyko sukurti jungties:\n"
+"%s"
+
# Data is assumed to be the destination sn
-#, c-format
-msgid "Unable to parse response from HTTP proxy: %s\n"
-msgstr "Nepavyko suprasti HTTP tarpininko serverio atsakymo: %s\n"
-
-#, c-format
-msgid "HTTP proxy connection error %d"
-msgstr "HTTP tarpininko serverio jungties klaida %d"
-
-#, c-format
-msgid "Access denied: HTTP proxy server forbids port %d tunneling."
-msgstr ""
-"Kreiptis atmesta: tarpininkaujantis serveris draudžia prievado %d "
-"tuneliavimą."
-
-#, c-format
-msgid "Error resolving %s"
-msgstr "Klaida nustatant %s"
-
-msgid "Could not resolve host name"
-msgstr "Nepavyko nustatyti mazgo IP adreso"
-
-#, c-format
-msgid "Requesting %s's attention..."
-msgstr "Prašoma %s dėmesio..."
-
-#, c-format
-msgid "%s has requested your attention!"
-msgstr "%s paprašė jūsų dėmesio!"
-
+#, c-format
+msgid "Unable to parse response from HTTP proxy: %s\n"
+msgstr "Nepavyko suprasti HTTP tarpininko serverio atsakymo: %s\n"
+
+#, c-format
+msgid "HTTP proxy connection error %d"
+msgstr "HTTP tarpininko serverio jungties klaida %d"
+
+#, c-format
+msgid "Access denied: HTTP proxy server forbids port %d tunneling."
+msgstr ""
+"Kreiptis atmesta: tarpininkaujantis serveris draudžia prievado %d "
+"tuneliavimą."
+
+#, c-format
+msgid "Error resolving %s"
+msgstr "Klaida nustatant %s"
+
+msgid "Could not resolve host name"
+msgstr "Nepavyko nustatyti mazgo IP adreso"
+
+#, c-format
+msgid "Requesting %s's attention..."
+msgstr "Prašoma %s dėmesio..."
+
+#, c-format
+msgid "%s has requested your attention!"
+msgstr "%s paprašė jūsų dėmesio!"
+
# *
# * A wrapper for Pidgin_request_action() that uses Yes and No buttons.
-#. *
-#. * A wrapper for purple_request_action() that uses @c Yes and @c No buttons.
-#.
-msgid "_Yes"
-msgstr "_Taip"
-
-msgid "_No"
-msgstr "_Ne"
-
-#. *
-#. * A wrapper for purple_request_action() that uses Accept and Cancel buttons.
-#.
-msgid "_Accept"
-msgstr "_Priimti"
-
-#. *
-#. * The default message to use when the user becomes auto-away.
-#.
-msgid "I'm not here right now"
-msgstr "Manęs čia nėra šiuo metu"
-
-msgid "saved statuses"
-msgstr "išsaugotos būsenos"
-
-#, c-format
-msgid "%s is now known as %s.\n"
-msgstr "%s dabar žinomas kaip %s.\n"
-
-#, c-format
-msgid ""
-"%s has invited %s to the chat room %s:\n"
-"%s"
-msgstr ""
-"Vartotojas %s pakvietė bičiulį %s į pokalbių kambarį %s:\n"
-"%s"
-
-#, c-format
-msgid "%s has invited %s to the chat room %s\n"
-msgstr "Vartotojas %s pakvietė bičiulį %s į pokalbių kambarį %s\n"
-
-msgid "Accept chat invitation?"
-msgstr "Ar priimti pakvietimą į pokalbių kambarį?"
-
-#. Shortcut
-msgid "Shortcut"
-msgstr "Klavišų seka"
-
-msgid "The text-shortcut for the smiley"
-msgstr "Šypsenėlės klavišų seka"
-
-#. Stored Image
-msgid "Stored Image"
-msgstr "Įrašytas vaizdas"
-
-msgid "Stored Image. (that'll have to do for now)"
-msgstr "Įrašytas paveiksliukas. (kol kas reikia tenkintis tuo)"
-
-msgid "SSL Connection Failed"
-msgstr "SSL prisijungimas nepavyko"
-
-msgid "SSL Handshake Failed"
-msgstr "SSL pasisveikinimas nepavyko"
-
-msgid "SSL peer presented an invalid certificate"
-msgstr "SSL partneris pristatė neteisingą liudijimą"
-
-msgid "Unknown SSL error"
-msgstr "Nežinoma SSL klaida"
-
-msgid "Unset"
-msgstr "Atstatyti"
-
-msgid "Do not disturb"
-msgstr "Netrukdyti"
-
-msgid "Extended away"
-msgstr "Ilgam pasitraukęs"
-
-msgid "Mobile"
-msgstr "Mobilus"
-
-msgid "Listening to music"
-msgstr "Klausausi muzikos"
-
-#, c-format
-msgid "%s (%s) changed status from %s to %s"
-msgstr "%s (%s) pakeitė būseną iš %s į %s"
-
-#, c-format
-msgid "%s (%s) is now %s"
-msgstr "%s (%s) dabar %s"
-
-#, c-format
-msgid "%s (%s) is no longer %s"
-msgstr "%s (%s) nebe %s"
-
-#, c-format
-msgid "%s became idle"
-msgstr "%s tapo neveiklus"
-
-#, c-format
-msgid "%s became unidle"
-msgstr "%s tapo veiklus"
-
-#, c-format
-msgid "+++ %s became idle"
-msgstr "+++ %s tapo neveiklus"
-
-#, c-format
-msgid "+++ %s became unidle"
-msgstr "+++ %s tapo veiklus"
-
-#.
-#. * This string determines how some dates are displayed. The default
-#. * string "%x %X" shows the date then the time. Translators can
-#. * change this to "%X %x" if they want the time to be shown first,
-#. * followed by the date.
-#.
-#, c-format
-msgid "%x %X"
-msgstr "%x %X"
-
-#, c-format
-msgid "Error Reading %s"
-msgstr "%s skaitymo klaida"
-
-#, 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 ""
-"Failo %s skaitymo metu įvyko klaida. Failas įkeltas nebuvo, o senasis "
-"failas pervadintas į %s~."
-
-msgid "Calculating..."
-msgstr "Skaičiuojama..."
-
-msgid "Unknown."
-msgstr "Nežinoma."
-
-#, c-format
-msgid "%d second"
-msgid_plural "%d seconds"
-msgstr[0] "%d sekundė"
-msgstr[1] "%d sekundės"
-msgstr[2] "%d sekundžių"
-
-#, c-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "%d diena"
-msgstr[1] "%d dienos"
-msgstr[2] "%d dienų"
-
-#, c-format
-msgid "%s, %d hour"
-msgid_plural "%s, %d hours"
-msgstr[0] "%s, %d valanda"
-msgstr[1] "%s, %d valandos"
-msgstr[2] "%s, %d valandų"
-
-#, c-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d valanda"
-msgstr[1] "%d valandos"
-msgstr[2] "%d valandų"
-
-#, c-format
-msgid "%s, %d minute"
-msgid_plural "%s, %d minutes"
-msgstr[0] "%s, %d minutė"
-msgstr[1] "%s, %d minutės"
-msgstr[2] "%s, %d minučių"
-
-#, c-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "%d minutė"
-msgstr[1] "%d minutės"
-msgstr[2] "%d minučių"
-
-#, c-format
-msgid "Could not open %s: Redirected too many times"
-msgstr "Nepavyko atverti %s: per daug peradresavimų"
-
-#, c-format
-msgid "Unable to connect to %s"
-msgstr "Nepavyko prisijungti prie %s"
-
-#, c-format
-msgid "Error reading from %s: response too long (%d bytes limit)"
-msgstr ""
-"Skaitymo iš %s klaida: atsakymas per ilgas (maksimalus ilgis baitais: %d)"
-
-#, c-format
-msgid ""
-"Unable to allocate enough memory to hold the contents from %s. The web "
-"server may be trying something malicious."
-msgstr ""
-"Negalima išskirti pakankamai atminties %s turinio saugojimui. Galbūt\n"
-"žiniatinklio serveris tyčia bando padaryti kažką blogo."
-
-#, c-format
-msgid "Error reading from %s: %s"
-msgstr "Skaitymo iš %s klaida: %s"
-
-#, c-format
-msgid "Error writing to %s: %s"
-msgstr "Rašymo į %s klaida: %s"
-
-#, c-format
-msgid "Unable to connect to %s: %s"
-msgstr "Nepavyko prisijungti prie %s: %s"
-
-#, c-format
-msgid " - %s"
-msgstr " – %s"
-
-#, c-format
-msgid " (%s)"
-msgstr " (%s)"
-
-#. 10053
-#, c-format
-msgid "Connection interrupted by other software on your computer."
-msgstr "Jungtis nutraukta kitos programos jūsų kompiuteryje."
-
-#. 10054
-#, c-format
-msgid "Remote host closed connection."
-msgstr "Nutolęs mazgas uždarė jungtį."
-
-#. 10060
-#, c-format
-msgid "Connection timed out."
-msgstr "Jungties laukimo laikas baigėsi."
-
-#. 10061
-#, c-format
-msgid "Connection refused."
-msgstr "Jungtis atmesta."
-
-#. 10048
-#, c-format
-msgid "Address already in use."
-msgstr "Adresas jau užimtas"
-
-msgid "Internet Messenger"
-msgstr "Pokalbiai internete"
-
-msgid "Pidgin Internet Messenger"
-msgstr "Pidgin pokalbiai internete"
-
-msgid "Send instant messages over multiple protocols"
-msgstr "Bendrauti keliais interneto pokalbių protokolais"
-
-msgid "Orientation"
-msgstr "Orientacija"
-
-msgid "The orientation of the tray."
-msgstr "Juostelės orientacija"
-
-#. Build the login options frame.
-msgid "Login Options"
-msgstr "Seanso pradžios parinktys"
-
-msgid "Pro_tocol:"
-msgstr "Pro_tokolas:"
-
-msgid "_Username:"
-msgstr "_Vartotojo vardas:"
-
-msgid "Remember pass_word"
-msgstr "P_risiminti slaptažodį"
-
-#. Build the user options frame.
-msgid "User Options"
-msgstr "Vartotojo parinktys"
-
-msgid "_Local alias:"
-msgstr "Vietinis a_lternatyvusis vardas:"
-
-msgid "New _mail notifications"
-msgstr "Praneši_mai apie naujus laiškus"
-
-#. Buddy icon
-msgid "Use this buddy _icon for this account:"
-msgstr "Naudot_i tokį vartotojo paveiksliuką šiai paskyrai:"
-
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s parinktys"
-
+#. *
+#. * A wrapper for purple_request_action() that uses @c Yes and @c No buttons.
+#.
+msgid "_Yes"
+msgstr "_Taip"
+
+msgid "_No"
+msgstr "_Ne"
+
+#. *
+#. * A wrapper for purple_request_action() that uses Accept and Cancel buttons.
+#.
+msgid "_Accept"
+msgstr "_Priimti"
+
+#. *
+#. * The default message to use when the user becomes auto-away.
+#.
+msgid "I'm not here right now"
+msgstr "Manęs čia nėra šiuo metu"
+
+msgid "saved statuses"
+msgstr "išsaugotos būsenos"
+
+#, c-format
+msgid "%s is now known as %s.\n"
+msgstr "%s dabar žinomas kaip %s.\n"
+
+#, c-format
+msgid ""
+"%s has invited %s to the chat room %s:\n"
+"%s"
+msgstr ""
+"Vartotojas %s pakvietė bičiulį %s į pokalbių kambarį %s:\n"
+"%s"
+
+#, c-format
+msgid "%s has invited %s to the chat room %s\n"
+msgstr "Vartotojas %s pakvietė bičiulį %s į pokalbių kambarį %s\n"
+
+msgid "Accept chat invitation?"
+msgstr "Ar priimti pakvietimą į pokalbių kambarį?"
+
+#. Shortcut
+msgid "Shortcut"
+msgstr "Klavišų seka"
+
+msgid "The text-shortcut for the smiley"
+msgstr "Šypsenėlės klavišų seka"
+
+#. Stored Image
+msgid "Stored Image"
+msgstr "Įrašytas vaizdas"
+
+msgid "Stored Image. (that'll have to do for now)"
+msgstr "Įrašytas paveiksliukas. (kol kas reikia tenkintis tuo)"
+
+msgid "SSL Connection Failed"
+msgstr "SSL prisijungimas nepavyko"
+
+msgid "SSL Handshake Failed"
+msgstr "SSL pasisveikinimas nepavyko"
+
+msgid "SSL peer presented an invalid certificate"
+msgstr "SSL partneris pristatė neteisingą liudijimą"
+
+msgid "Unknown SSL error"
+msgstr "Nežinoma SSL klaida"
+
+msgid "Unset"
+msgstr "Atstatyti"
+
+msgid "Do not disturb"
+msgstr "Netrukdyti"
+
+msgid "Extended away"
+msgstr "Ilgam pasitraukęs"
+
+msgid "Listening to music"
+msgstr "Klausausi muzikos"
+
+#, c-format
+msgid "%s (%s) changed status from %s to %s"
+msgstr "%s (%s) pakeitė būseną iš %s į %s"
+
+#, c-format
+msgid "%s (%s) is now %s"
+msgstr "%s (%s) dabar %s"
+
+#, c-format
+msgid "%s (%s) is no longer %s"
+msgstr "%s (%s) nebe %s"
+
+#, c-format
+msgid "%s became idle"
+msgstr "%s tapo neveiklus"
+
+#, c-format
+msgid "%s became unidle"
+msgstr "%s tapo veiklus"
+
+#, c-format
+msgid "+++ %s became idle"
+msgstr "+++ %s tapo neveiklus"
+
+#, c-format
+msgid "+++ %s became unidle"
+msgstr "+++ %s tapo veiklus"
+
+#.
+#. * This string determines how some dates are displayed. The default
+#. * string "%x %X" shows the date then the time. Translators can
+#. * change this to "%X %x" if they want the time to be shown first,
+#. * followed by the date.
+#.
+#, c-format
+msgid "%x %X"
+msgstr "%x %X"
+
+msgid "Calculating..."
+msgstr "Skaičiuojama..."
+
+msgid "Unknown."
+msgstr "Nežinoma."
+
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d sekundė"
+msgstr[1] "%d sekundės"
+msgstr[2] "%d sekundžių"
+
+#, c-format
+msgid "%d day"
+msgid_plural "%d days"
+msgstr[0] "%d diena"
+msgstr[1] "%d dienos"
+msgstr[2] "%d dienų"
+
+#, c-format
+msgid "%s, %d hour"
+msgid_plural "%s, %d hours"
+msgstr[0] "%s, %d valanda"
+msgstr[1] "%s, %d valandos"
+msgstr[2] "%s, %d valandų"
+
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d valanda"
+msgstr[1] "%d valandos"
+msgstr[2] "%d valandų"
+
+#, c-format
+msgid "%s, %d minute"
+msgid_plural "%s, %d minutes"
+msgstr[0] "%s, %d minutė"
+msgstr[1] "%s, %d minutės"
+msgstr[2] "%s, %d minučių"
+
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d minutė"
+msgstr[1] "%d minutės"
+msgstr[2] "%d minučių"
+
+#, c-format
+msgid "Could not open %s: Redirected too many times"
+msgstr "Nepavyko atverti %s: per daug peradresavimų"
+
+#, c-format
+msgid "Unable to connect to %s"
+msgstr "Nepavyko prisijungti prie %s"
+
+#, c-format
+msgid "Error reading from %s: response too long (%d bytes limit)"
+msgstr ""
+"Skaitymo iš %s klaida: atsakymas per ilgas (maksimalus ilgis baitais: %d)"
+
+#, c-format
+msgid ""
+"Unable to allocate enough memory to hold the contents from %s. The web "
+"server may be trying something malicious."
+msgstr ""
+"Negalima išskirti pakankamai atminties %s turinio saugojimui. Galbūt\n"
+"žiniatinklio serveris tyčia bando padaryti kažką blogo."
+
+#, c-format
+msgid "Error reading from %s: %s"
+msgstr "Skaitymo iš %s klaida: %s"
+
+#, c-format
+msgid "Error writing to %s: %s"
+msgstr "Rašymo į %s klaida: %s"
+
+#, c-format
+msgid "Unable to connect to %s: %s"
+msgstr "Nepavyko prisijungti prie %s: %s"
+
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr "Serveris reikalauja TLS/SSL prisijungimui. Nėra TLS/SSL palaikymo."
+
+#, c-format
+msgid " - %s"
+msgstr " – %s"
+
+#, c-format
+msgid " (%s)"
+msgstr " (%s)"
+
+#. 10053
+#, c-format
+msgid "Connection interrupted by other software on your computer."
+msgstr "Jungtis nutraukta kitos programos jūsų kompiuteryje."
+
+#. 10054
+#, c-format
+msgid "Remote host closed connection."
+msgstr "Nutolęs mazgas uždarė jungtį."
+
+#. 10060
+#, c-format
+msgid "Connection timed out."
+msgstr "Jungties laukimo laikas baigėsi."
+
+#. 10061
+#, c-format
+msgid "Connection refused."
+msgstr "Jungtis atmesta."
+
+#. 10048
+#, c-format
+msgid "Address already in use."
+msgstr "Adresas jau užimtas"
+
+#, c-format
+msgid "Error Reading %s"
+msgstr "%s skaitymo klaida"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"Failo %s skaitymo metu įvyko klaida. Failas įkeltas nebuvo, o senasis "
+"failas pervadintas į %s~."
+
+msgid "Internet Messenger"
+msgstr "Pokalbiai internete"
+
+msgid "Pidgin Internet Messenger"
+msgstr "Pidgin pokalbiai internete"
+
+msgid "Send instant messages over multiple protocols"
+msgstr "Bendrauti keliais interneto pokalbių protokolais"
+
+msgid "Orientation"
+msgstr "Orientacija"
+
+msgid "The orientation of the tray."
+msgstr "Juostelės orientacija"
+
+#. Build the login options frame.
+msgid "Login Options"
+msgstr "Seanso pradžios parinktys"
+
+msgid "Pro_tocol:"
+msgstr "Pro_tokolas:"
+
+msgid "_Username:"
+msgstr "_Vartotojo vardas:"
+
+msgid "Remember pass_word"
+msgstr "P_risiminti slaptažodį"
+
+#. Build the user options frame.
+msgid "User Options"
+msgstr "Vartotojo parinktys"
+
+msgid "_Local alias:"
+msgstr "Vietinis a_lternatyvusis vardas:"
+
+msgid "New _mail notifications"
+msgstr "Praneši_mai apie naujus laiškus"
+
+#. Buddy icon
+msgid "Use this buddy _icon for this account:"
+msgstr "Naudot_i tokį vartotojo paveiksliuką šiai paskyrai:"
+
+msgid "_Advanced"
+msgstr "Papildomos _nuostatos"
+
# Use Global Proxy Settings
# Use Global Proxy Settings
-msgid "Use GNOME Proxy Settings"
-msgstr "naudoti GNOME tarpininkų nuostatas"
-
+msgid "Use GNOME Proxy Settings"
+msgstr "naudoti GNOME tarpininkų nuostatas"
+
# Use Global Proxy Settings
# Use Global Proxy Settings
-msgid "Use Global Proxy Settings"
-msgstr "naudoti visuotines tarpininkų nuostatas"
-
-msgid "No Proxy"
-msgstr "be tarpininkų"
-
-msgid "HTTP"
-msgstr "HTTP"
-
-msgid "SOCKS 4"
-msgstr "SOCKS 4"
-
-msgid "SOCKS 5"
-msgstr "SOCKS 5"
-
+msgid "Use Global Proxy Settings"
+msgstr "naudoti visuotines tarpininkų nuostatas"
+
+msgid "No Proxy"
+msgstr "be tarpininkų"
+
+msgid "HTTP"
+msgstr "HTTP"
+
+msgid "SOCKS 4"
+msgstr "SOCKS 4"
+
+msgid "SOCKS 5"
+msgstr "SOCKS 5"
+
# Use Environmental Settings
-msgid "Use Environmental Settings"
-msgstr "naudoti aplinkos nuostatas"
-
-#. This is an easter egg.
-#. It means one of two things, both intended as humourus:
-#. A) your network is really slow and you have nothing better to do than
-#. look at butterflies.
-#. B)You are looking really closely at something that shouldn't matter.
-msgid "If you look real closely"
-msgstr "Jei pažiūrėtumėte tikrai iš arti,"
-
-#. This is an easter egg. See the comment on the previous line in the source.
-msgid "you can see the butterflies mating"
-msgstr "galėtumėte matyti besiporuojancius drugelius"
-
-msgid "Proxy Options"
-msgstr "Tarpininko parinktys"
-
-msgid "Proxy _type:"
-msgstr "Tarpininko _tipas:"
-
-msgid "_Host:"
-msgstr "_Mazgas:"
-
-msgid "_Port:"
-msgstr "_Prievadas:"
-
-msgid "Pa_ssword:"
-msgstr "_Slaptažodis:"
-
-msgid "Unable to save new account"
-msgstr "Nepavyko įrašyti naujos paskyros"
-
-msgid "An account already exists with the specified criteria."
-msgstr "Paskyra su tokiais požymiais jau yra."
-
-msgid "Add Account"
-msgstr "Pridėti paskyrą"
-
-msgid "_Basic"
-msgstr "_Pagrindinės nuostatos"
-
-msgid "Create _this new account on the server"
-msgstr "Sukur_ti šią naują paskyrą serveryje"
-
-msgid "_Advanced"
-msgstr "Papildomos _nuostatos"
-
-msgid "Enabled"
-msgstr "Įjungta"
-
-msgid "Protocol"
-msgstr "Protokolas"
-
-#, c-format
-msgid ""
-"<span size='larger' weight='bold'>Welcome to %s!</span>\n"
-"\n"
-"You have no IM accounts configured. To start connecting with %s press the "
-"<b>Add...</b> button below and configure your first account. If you want %s "
-"to connect to multiple IM accounts, press <b>Add...</b> again to configure "
-"them all.\n"
-"\n"
-"You can come back to this window to add, edit, or remove accounts from "
-"<b>Accounts->Manage Accounts</b> in the Buddy List window"
-msgstr ""
-"<span size='larger' weight='bold'>Sveikiname pradėjus naudoti %s!</span>\n"
-"\n"
-"Jūs neturite nustatytų paskyrų. Norėdami su %s prisijungti, paspauskite "
-"<b>Pridėti...</b> mygtuką žemiau ir sukonfigūruokite pirmąją savo paskyrą. "
-"Jei norite, kad %s prisijungtų prie daugiau paskyrų, paspauskite "
-"<b>Pridėti...</b> daugiau kartų ir sukonfigūruokite visas paskyras.\n"
-"\n"
-"Vėliau galite sugrįžti į šį langą sukurti, keisti, ar pašalinti paskyrų per "
-"<b>Paskyros->Tvarkyti paskyras</b> meniu bičiulių sąrašo lange."
-
-#, 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] "Šiuo metu turite %d kontaktą vardu %s. Ar norite juos sujungti?"
-msgstr[1] "Šiuo metu turite %d kontaktus vardu %s. Ar norite juos sujungti?"
-msgstr[2] "Šiuo metu turite %d kontaktų vardu %s. Ar norite juos sujungti?"
-
-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 šių kontaktų suliejimo jie dalinsis bendrą įrašą bičiulių sąraše ir "
-"naudos brendrą pokalbių langą. Galite juos vėl atskirti pasirinkdami "
-"„Išskleisti“ kontakto kontekstiniame meniu."
-
-msgid "Please update the necessary fields."
-msgstr "Pataisykite būtinus laukus."
-
-msgid "Room _List"
-msgstr "Ka_mbarių sąrašas"
-
-msgid ""
-"Please enter the appropriate information about the chat you would like to "
-"join.\n"
-msgstr ""
-"Prašome įvesti atitinkamą informaciją apie pokalbį, prie kurio norite "
-"prisijungti\n"
-
-msgid "_Account:"
-msgstr "P_askyra:"
-
+msgid "Use Environmental Settings"
+msgstr "naudoti aplinkos nuostatas"
+
+#. This is an easter egg.
+#. It means one of two things, both intended as humourus:
+#. A) your network is really slow and you have nothing better to do than
+#. look at butterflies.
+#. B)You are looking really closely at something that shouldn't matter.
+msgid "If you look real closely"
+msgstr "Jei pažiūrėtumėte tikrai iš arti,"
+
+#. This is an easter egg. See the comment on the previous line in the source.
+msgid "you can see the butterflies mating"
+msgstr "galėtumėte matyti besiporuojancius drugelius"
+
+msgid "Proxy _type:"
+msgstr "Tarpininko _tipas:"
+
+msgid "_Host:"
+msgstr "_Mazgas:"
+
+msgid "_Port:"
+msgstr "_Prievadas:"
+
+msgid "Pa_ssword:"
+msgstr "_Slaptažodis:"
+
+msgid "Unable to save new account"
+msgstr "Nepavyko įrašyti naujos paskyros"
+
+msgid "An account already exists with the specified criteria."
+msgstr "Paskyra su tokiais požymiais jau yra."
+
+msgid "Add Account"
+msgstr "Pridėti paskyrą"
+
+msgid "_Basic"
+msgstr "_Pagrindinės nuostatos"
+
+msgid "Create _this new account on the server"
+msgstr "Sukur_ti šią naują paskyrą serveryje"
+
+#, fuzzy
+msgid "_Proxy"
+msgstr "Tarpininkas"
+
+msgid "Enabled"
+msgstr "Įjungta"
+
+msgid "Protocol"
+msgstr "Protokolas"
+
+#, c-format
+msgid ""
+"<span size='larger' weight='bold'>Welcome to %s!</span>\n"
+"\n"
+"You have no IM accounts configured. To start connecting with %s press the "
+"<b>Add...</b> button below and configure your first account. If you want %s "
+"to connect to multiple IM accounts, press <b>Add...</b> again to configure "
+"them all.\n"
+"\n"
+"You can come back to this window to add, edit, or remove accounts from "
+"<b>Accounts->Manage Accounts</b> in the Buddy List window"
+msgstr ""
+"<span size='larger' weight='bold'>Sveikiname pradėjus naudoti %s!</span>\n"
+"\n"
+"Jūs neturite nustatytų paskyrų. Norėdami su %s prisijungti, paspauskite "
+"<b>Pridėti...</b> mygtuką žemiau ir sukonfigūruokite pirmąją savo paskyrą. "
+"Jei norite, kad %s prisijungtų prie daugiau paskyrų, paspauskite "
+"<b>Pridėti...</b> daugiau kartų ir sukonfigūruokite visas paskyras.\n"
+"\n"
+"Vėliau galite sugrįžti į šį langą sukurti, keisti, ar pašalinti paskyrų per "
+"<b>Paskyros->Tvarkyti paskyras</b> meniu bičiulių sąrašo lange."
+
+#, 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] "Šiuo metu turite %d kontaktą vardu %s. Ar norite juos sujungti?"
+msgstr[1] "Šiuo metu turite %d kontaktus vardu %s. Ar norite juos sujungti?"
+msgstr[2] "Šiuo metu turite %d kontaktų vardu %s. Ar norite juos sujungti?"
+
+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 šių kontaktų suliejimo jie dalinsis bendrą įrašą bičiulių sąraše ir "
+"naudos brendrą pokalbių langą. Galite juos vėl atskirti pasirinkdami "
+"„Išskleisti“ kontakto kontekstiniame meniu."
+
+msgid "Please update the necessary fields."
+msgstr "Pataisykite būtinus laukus."
+
+msgid "Room _List"
+msgstr "Ka_mbarių sąrašas"
+
+msgid ""
+"Please enter the appropriate information about the chat you would like to "
+"join.\n"
+msgstr ""
+"Prašome įvesti atitinkamą informaciją apie pokalbį, prie kurio norite "
+"prisijungti\n"
+
+msgid "_Account:"
+msgstr "P_askyra:"
+
# Block button
-msgid "_Block"
-msgstr "_Blokuoti"
-
+msgid "_Block"
+msgstr "_Blokuoti"
+
# Block button
-msgid "Un_block"
-msgstr "_Nebeblokuoti"
-
-msgid "Move to"
-msgstr "Perkelti į"
-
-msgid "Get _Info"
-msgstr "Gauti _informaciją"
-
-msgid "I_M"
-msgstr "_Kalbėtis"
-
-msgid "_Send File..."
-msgstr "_Siųsti failą..."
-
-msgid "Add Buddy _Pounce..."
-msgstr "Sukurti #reakciją į bičiulį..."
-
-msgid "View _Log"
-msgstr "Žiūrėti žurna_lą"
-
-msgid "Hide when offline"
-msgstr "Paslėpti, kai neprisijungęs"
-
-msgid "_Alias..."
-msgstr "N_aujas alternatyvusis vardas..."
-
-msgid "_Remove"
-msgstr "_Pašalinti"
-
-msgid "Set Custom Icon"
-msgstr "Nustatyti specialų paveiksliuką"
-
-msgid "Remove Custom Icon"
-msgstr "Pašalinti specialų vartotojo paveiksliuką"
-
-msgid "Add _Buddy..."
-msgstr "Pridėti _bičiulį..."
-
-msgid "Add C_hat..."
-msgstr "Pridėti pokalbių _kambarį..."
-
-msgid "_Delete Group"
-msgstr "_Pašalinti grupę"
-
-msgid "_Rename"
-msgstr "P_ervadinti"
-
+msgid "Un_block"
+msgstr "_Nebeblokuoti"
+
+msgid "Move to"
+msgstr "Perkelti į"
+
+msgid "Get _Info"
+msgstr "Gauti _informaciją"
+
+msgid "I_M"
+msgstr "_Kalbėtis"
+
+#, fuzzy
+msgid "_Audio Call"
+msgstr "_Pridėti pokalbių kambarį"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Vaizdinis pokalbis"
+
+msgid "_Send File..."
+msgstr "_Siųsti failą..."
+
+msgid "Add Buddy _Pounce..."
+msgstr "Sukurti #reakciją į bičiulį..."
+
+msgid "View _Log"
+msgstr "Žiūrėti žurna_lą"
+
+msgid "Hide when offline"
+msgstr "Paslėpti, kai neprisijungęs"
+
+msgid "_Alias..."
+msgstr "N_aujas alternatyvusis vardas..."
+
+msgid "_Remove"
+msgstr "_Pašalinti"
+
+msgid "Set Custom Icon"
+msgstr "Nustatyti specialų paveiksliuką"
+
+msgid "Remove Custom Icon"
+msgstr "Pašalinti specialų vartotojo paveiksliuką"
+
+msgid "Add _Buddy..."
+msgstr "Pridėti _bičiulį..."
+
+msgid "Add C_hat..."
+msgstr "Pridėti pokalbių _kambarį..."
+
+msgid "_Delete Group"
+msgstr "_Pašalinti grupę"
+
+msgid "_Rename"
+msgstr "P_ervadinti"
+
# join button
-#. join button
-msgid "_Join"
-msgstr "Prisi_jungti"
-
-msgid "Auto-Join"
-msgstr "Automatiškai prisijungti"
-
-msgid "Persistent"
-msgstr "Pastovus"
-
+#. join button
+msgid "_Join"
+msgstr "Prisi_jungti"
+
+msgid "Auto-Join"
+msgstr "Automatiškai prisijungti"
+
+msgid "Persistent"
+msgstr "Pastovus"
+
# Use Environmental Settings
-msgid "_Edit Settings..."
-msgstr "K_eisti nuostatas..."
-
-msgid "_Collapse"
-msgstr "_Suskleisti"
-
-msgid "_Expand"
-msgstr "Išskl_eisti"
-
-msgid "/Tools/Mute Sounds"
-msgstr "/Įrankiai/Išjungti garsus"
-
-msgid ""
-"You are not currently signed on with an account that can add that buddy."
-msgstr ""
-"Šiuo metu Jūs nesate prisijungęs su paskyra, kuri leistų įtraukti šį bičiulį."
-
-#. I don't believe this can happen currently, I think
-#. * everything that calls this function checks for one of the
-#. * above node types first.
-msgid "Unknown node type"
-msgstr "Nežinomas mazgo tipas"
-
+msgid "_Edit Settings..."
+msgstr "K_eisti nuostatas..."
+
+msgid "_Collapse"
+msgstr "_Suskleisti"
+
+msgid "_Expand"
+msgstr "Išskl_eisti"
+
+msgid "/Tools/Mute Sounds"
+msgstr "/Įrankiai/Išjungti garsus"
+
+msgid ""
+"You are not currently signed on with an account that can add that buddy."
+msgstr ""
+"Šiuo metu Jūs nesate prisijungęs su paskyra, kuri leistų įtraukti šį bičiulį."
+
+#. I don't believe this can happen currently, I think
+#. * everything that calls this function checks for one of the
+#. * above node types first.
+msgid "Unknown node type"
+msgstr "Nežinomas mazgo tipas"
+
# Buddies menu
-#. Buddies menu
-msgid "/_Buddies"
-msgstr "/_Bičiuliai"
-
-msgid "/Buddies/New Instant _Message..."
-msgstr "/Bičiuliai/_Nauja žinutė..."
-
-msgid "/Buddies/Join a _Chat..."
-msgstr "/Bičiuliai/Prisijungti prie _pokalbio..."
-
-msgid "/Buddies/Get User _Info..."
-msgstr "/Bičiuliai/Ga_uti vartotojo informaciją..."
-
-msgid "/Buddies/View User _Log..."
-msgstr "/Buddies/_Rodyti vartotojo žurnalus..."
-
+#. Buddies menu
+msgid "/_Buddies"
+msgstr "/_Bičiuliai"
+
+msgid "/Buddies/New Instant _Message..."
+msgstr "/Bičiuliai/_Nauja žinutė..."
+
+msgid "/Buddies/Join a _Chat..."
+msgstr "/Bičiuliai/Prisijungti prie _pokalbio..."
+
+msgid "/Buddies/Get User _Info..."
+msgstr "/Bičiuliai/Ga_uti vartotojo informaciją..."
+
+msgid "/Buddies/View User _Log..."
+msgstr "/Buddies/_Rodyti vartotojo žurnalus..."
+
# Buddies menu
-msgid "/Buddies/Sh_ow"
-msgstr "/Bičiuliai/R_odyti"
-
-msgid "/Buddies/Show/_Offline Buddies"
-msgstr "/Bičiuliai/Rodyti/_atsijungusius bičiulius"
-
-msgid "/Buddies/Show/_Empty Groups"
-msgstr "/Bičiuliai/Rodyti/_tuščias grupes"
-
+msgid "/Buddies/Sh_ow"
+msgstr "/Bičiuliai/R_odyti"
+
+msgid "/Buddies/Show/_Offline Buddies"
+msgstr "/Bičiuliai/Rodyti/_atsijungusius bičiulius"
+
+msgid "/Buddies/Show/_Empty Groups"
+msgstr "/Bičiuliai/Rodyti/_tuščias grupes"
+
# set the Show Offline Buddies option. must be done
# * after the treeview or faceprint gets mad. -Robot101
-msgid "/Buddies/Show/Buddy _Details"
-msgstr "/Bičiuliai/Rodyti/_informaciją apie bičiulius"
-
+msgid "/Buddies/Show/Buddy _Details"
+msgstr "/Bičiuliai/Rodyti/_informaciją apie bičiulius"
+
# set the Show Offline Buddies option. must be done
# * after the treeview or faceprint gets mad. -Robot101
-msgid "/Buddies/Show/Idle _Times"
-msgstr "/Bičiuliai/Rodyti/n_eveiklumo laikus"
-
-msgid "/Buddies/Show/_Protocol Icons"
-msgstr "/Bičiuliai/Rodyti/_protokolų piktogramas"
-
+msgid "/Buddies/Show/Idle _Times"
+msgstr "/Bičiuliai/Rodyti/n_eveiklumo laikus"
+
+msgid "/Buddies/Show/_Protocol Icons"
+msgstr "/Bičiuliai/Rodyti/_protokolų piktogramas"
+
# set the Show Offline Buddies option. must be done
# * after the treeview or faceprint gets mad. -Robot101
-msgid "/Buddies/_Sort Buddies"
-msgstr "/Bičiuliai/_Surikiuoti bičiulius"
-
-msgid "/Buddies/_Add Buddy..."
-msgstr "/Bičiuliai/Pri_dėti bičiulį..."
-
-msgid "/Buddies/Add C_hat..."
-msgstr "/Bičiuliai/Pridėti pokalbių _kambarį..."
-
-msgid "/Buddies/Add _Group..."
-msgstr "/Bičiuliai/Prid_ėti grupę..."
-
-msgid "/Buddies/_Quit"
-msgstr "/Bičiuliai/Bai_gti"
-
-#. Accounts menu
-msgid "/_Accounts"
-msgstr "/_Paskyros"
-
-msgid "/Accounts/Manage Accounts"
-msgstr "/Paskyros/Tvarkyti paskyras"
-
+msgid "/Buddies/_Sort Buddies"
+msgstr "/Bičiuliai/_Surikiuoti bičiulius"
+
+msgid "/Buddies/_Add Buddy..."
+msgstr "/Bičiuliai/Pri_dėti bičiulį..."
+
+msgid "/Buddies/Add C_hat..."
+msgstr "/Bičiuliai/Pridėti pokalbių _kambarį..."
+
+msgid "/Buddies/Add _Group..."
+msgstr "/Bičiuliai/Prid_ėti grupę..."
+
+msgid "/Buddies/_Quit"
+msgstr "/Bičiuliai/Bai_gti"
+
+#. Accounts menu
+msgid "/_Accounts"
+msgstr "/_Paskyros"
+
+msgid "/Accounts/Manage Accounts"
+msgstr "/Paskyros/Tvarkyti paskyras"
+
# Tools
-#. Tools
-msgid "/_Tools"
-msgstr "/_Įrankiai"
-
-msgid "/Tools/Buddy _Pounces"
-msgstr "/Įrankiai/_Reakcijos į bičiulius"
-
-msgid "/Tools/_Certificates"
-msgstr "/Įrankiai/_Liudijimai"
-
-msgid "/Tools/Plu_gins"
-msgstr "/Įrankiai/_Papildiniai"
-
-msgid "/Tools/Pr_eferences"
-msgstr "/Įrankiai/_Nuostatos"
-
-msgid "/Tools/Pr_ivacy"
-msgstr "/Įrankiai/Pr_ivatumas"
-
-msgid "/Tools/Smile_y"
-msgstr "/Įrankiai/_Šypsenėlės"
-
-msgid "/Tools/_File Transfers"
-msgstr "/Įrankiai/_Failų perdavimas"
-
-msgid "/Tools/R_oom List"
-msgstr "/Įrankiai/_Kambarių sąrašas"
-
-msgid "/Tools/System _Log"
-msgstr "/Įrankiai/_Sistemos žurnalas"
-
-msgid "/Tools/Mute _Sounds"
-msgstr "/Tools/Išjungti _garsus"
-
+#. Tools
+msgid "/_Tools"
+msgstr "/_Įrankiai"
+
+msgid "/Tools/Buddy _Pounces"
+msgstr "/Įrankiai/_Reakcijos į bičiulius"
+
+msgid "/Tools/_Certificates"
+msgstr "/Įrankiai/_Liudijimai"
+
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Įrankiai/_Šypsenėlės"
+
+msgid "/Tools/Plu_gins"
+msgstr "/Įrankiai/_Papildiniai"
+
+msgid "/Tools/Pr_eferences"
+msgstr "/Įrankiai/_Nuostatos"
+
+msgid "/Tools/Pr_ivacy"
+msgstr "/Įrankiai/Pr_ivatumas"
+
+msgid "/Tools/_File Transfers"
+msgstr "/Įrankiai/_Failų perdavimas"
+
+msgid "/Tools/R_oom List"
+msgstr "/Įrankiai/_Kambarių sąrašas"
+
+msgid "/Tools/System _Log"
+msgstr "/Įrankiai/_Sistemos žurnalas"
+
+msgid "/Tools/Mute _Sounds"
+msgstr "/Tools/Išjungti _garsus"
+
# Help
-#. Help
-msgid "/_Help"
-msgstr "/Pa_galba"
-
-msgid "/Help/Online _Help"
-msgstr "/Pagalba/_Žinynas internete"
-
-msgid "/Help/_Debug Window"
-msgstr "/Pagalba/_Derinimo langas"
-
-msgid "/Help/_About"
-msgstr "/Pagalba/_Apie"
-
-#, c-format
-msgid "<b>Account:</b> %s"
-msgstr "<b>Paskyra:</b> %s"
-
-#, c-format
-msgid ""
-"\n"
-"<b>Occupants:</b> %d"
-msgstr ""
-"\n"
-"<b>Dalyvių:</b> %d"
-
-#, c-format
-msgid ""
-"\n"
-"<b>Topic:</b> %s"
-msgstr ""
-"\n"
-"<b>Tema:</b> %s"
-
-msgid "(no topic set)"
-msgstr "(temos nėra)"
-
-msgid "Buddy Alias"
-msgstr "Alternatyvusis bičiulio vardas"
-
-msgid "Logged In"
-msgstr "Prisijungęs"
-
-msgid "Last Seen"
-msgstr "Paskutinį kartą matytas"
-
-msgid "Spooky"
-msgstr "Vaiduokliškas"
-
-msgid "Awesome"
-msgstr "Stulbinantis"
-
-msgid "Rockin'"
-msgstr "Pavarantis"
-
-msgid "Total Buddies"
-msgstr "Iš viso bičiulių"
-
-#, c-format
-msgid "Idle %dd %dh %02dm"
-msgstr "Neveiklus %d d. %d val. %02d min. "
-
-#, c-format
-msgid "Idle %dh %02dm"
-msgstr "Neveiklus %d val. %02d min. "
-
-#, c-format
-msgid "Idle %dm"
-msgstr "Neveiklus %d min. "
-
-msgid "/Buddies/New Instant Message..."
-msgstr "/Bičiuliai/Nauja žinutė..."
-
+#. Help
+msgid "/_Help"
+msgstr "/Pa_galba"
+
+msgid "/Help/Online _Help"
+msgstr "/Pagalba/_Žinynas internete"
+
+msgid "/Help/_Debug Window"
+msgstr "/Pagalba/_Derinimo langas"
+
+msgid "/Help/_About"
+msgstr "/Pagalba/_Apie"
+
+#, c-format
+msgid "<b>Account:</b> %s"
+msgstr "<b>Paskyra:</b> %s"
+
+#, c-format
+msgid ""
+"\n"
+"<b>Occupants:</b> %d"
+msgstr ""
+"\n"
+"<b>Dalyvių:</b> %d"
+
+#, c-format
+msgid ""
+"\n"
+"<b>Topic:</b> %s"
+msgstr ""
+"\n"
+"<b>Tema:</b> %s"
+
+msgid "(no topic set)"
+msgstr "(temos nėra)"
+
+msgid "Buddy Alias"
+msgstr "Alternatyvusis bičiulio vardas"
+
+msgid "Logged In"
+msgstr "Prisijungęs"
+
+msgid "Last Seen"
+msgstr "Paskutinį kartą matytas"
+
+msgid "Spooky"
+msgstr "Vaiduokliškas"
+
+msgid "Awesome"
+msgstr "Stulbinantis"
+
+msgid "Rockin'"
+msgstr "Pavarantis"
+
+msgid "Total Buddies"
+msgstr "Iš viso bičiulių"
+
+#, c-format
+msgid "Idle %dd %dh %02dm"
+msgstr "Neveiklus %d d. %d val. %02d min. "
+
+#, c-format
+msgid "Idle %dh %02dm"
+msgstr "Neveiklus %d val. %02d min. "
+
+#, c-format
+msgid "Idle %dm"
+msgstr "Neveiklus %d min. "
+
+msgid "/Buddies/New Instant Message..."
+msgstr "/Bičiuliai/Nauja žinutė..."
+
# Make menu items sensitive/insensitive where appropriate
-msgid "/Buddies/Join a Chat..."
-msgstr "/Bičiuliai/Prisijungti prie pokalbio..."
-
-msgid "/Buddies/Get User Info..."
-msgstr "/Bičiuliai/Gauti vartotojo informaciją..."
-
-msgid "/Buddies/Add Buddy..."
-msgstr "/Bičiuliai/Pridėti bičiulį..."
-
-msgid "/Buddies/Add Chat..."
-msgstr "/Bičiuliai/Pridėti pokalbių kambarį..."
-
-msgid "/Buddies/Add Group..."
-msgstr "/Bičiuliai/Pridėti grupę..."
-
-msgid "/Tools/Privacy"
-msgstr "/Įrankiai/Privatumas"
-
-msgid "/Tools/Room List"
-msgstr "/Įrankiai/Kambarių sąrašas"
-
-#, c-format
-msgid "%d unread message from %s\n"
-msgid_plural "%d unread messages from %s\n"
-msgstr[0] "%d neperskaityta žinutė iš %s\n"
-msgstr[1] "%d neperskaitytos žinutės iš %s\n"
-msgstr[2] "%d neperskaitytų žinučių iš %s\n"
-
-msgid "Manually"
-msgstr "rankiniu būdu"
-
-msgid "By status"
-msgstr "pagal statusą"
-
-msgid "By log size"
-msgstr "pagal žurnalo dydį"
-
-#, c-format
-msgid "%s disconnected"
-msgstr "%s atsijungė"
-
-#, c-format
-msgid "%s disabled"
-msgstr "%s išjungtas"
-
-msgid "Reconnect"
-msgstr "Jungtis iš naujo"
-
-msgid "Re-enable"
-msgstr "Aktyvuoti vėl"
-
-msgid "Welcome back!"
-msgstr "Sveiki sugrįžę!"
-
-#, c-format
-msgid "%d account was disabled because you signed on from another location:"
-msgid_plural ""
-"%d accounts were disabled because you signed on from another location:"
-msgstr[0] "%d paskyra buvo išjungta, nes prisijungėte iš kitur:"
-msgstr[1] "%d paskyros buvo išjungtos, nes prisijungėte iš kitur:"
-msgstr[2] "%d paskyrų buvo išjungta, nes prisijungėte iš kitur:"
-
-msgid "<b>Username:</b>"
-msgstr "<b>Vartotojo vardas:</b>"
-
-msgid "<b>Password:</b>"
-msgstr "<b>Slaptažodis:</b>"
-
-msgid "_Login"
-msgstr "_Prisijungti"
-
-msgid "/Accounts"
-msgstr "/Paskyros"
-
-#. Translators: Please maintain the use of -> and <- to refer to menu heirarchy
-#, c-format
-msgid ""
-"<span weight='bold' size='larger'>Welcome to %s!</span>\n"
-"\n"
-"You have no accounts enabled. Enable your IM accounts from the <b>Accounts</"
-"b> window at <b>Accounts->Manage Accounts</b>. Once you enable accounts, "
-"you'll be able to sign on, set your status, and talk to your friends."
-msgstr ""
-"<span weight='bold' size='larger'>Sveikiname pradėjus naudoti %s!</span>\n"
-"\n"
-"Jūs neturite aktyvuotų paskyrų. Aktyvuokite jas lange <b>„Paskyros“</b>, "
-"pasiekiamame per <b>Paskyros->Tvarkyti paskyras</b> meniu bičiulių sąrašo "
-"lange. Aktyvavę paskyras, galėsite prisijungti, nustatyti savo būseną ir "
-"šnekėtis su draugais."
-
+msgid "/Buddies/Join a Chat..."
+msgstr "/Bičiuliai/Prisijungti prie pokalbio..."
+
+msgid "/Buddies/Get User Info..."
+msgstr "/Bičiuliai/Gauti vartotojo informaciją..."
+
+msgid "/Buddies/Add Buddy..."
+msgstr "/Bičiuliai/Pridėti bičiulį..."
+
+msgid "/Buddies/Add Chat..."
+msgstr "/Bičiuliai/Pridėti pokalbių kambarį..."
+
+msgid "/Buddies/Add Group..."
+msgstr "/Bičiuliai/Pridėti grupę..."
+
+msgid "/Tools/Privacy"
+msgstr "/Įrankiai/Privatumas"
+
+msgid "/Tools/Room List"
+msgstr "/Įrankiai/Kambarių sąrašas"
+
+#, c-format
+msgid "%d unread message from %s\n"
+msgid_plural "%d unread messages from %s\n"
+msgstr[0] "%d neperskaityta žinutė iš %s\n"
+msgstr[1] "%d neperskaitytos žinutės iš %s\n"
+msgstr[2] "%d neperskaitytų žinučių iš %s\n"
+
+msgid "Manually"
+msgstr "rankiniu būdu"
+
+msgid "By status"
+msgstr "pagal statusą"
+
+msgid "By recent log activity"
+msgstr ""
+
+#, c-format
+msgid "%s disconnected"
+msgstr "%s atsijungė"
+
+#, c-format
+msgid "%s disabled"
+msgstr "%s išjungtas"
+
+msgid "Reconnect"
+msgstr "Jungtis iš naujo"
+
+msgid "Re-enable"
+msgstr "Aktyvuoti vėl"
+
+msgid "SSL FAQs"
+msgstr ""
+
+msgid "Welcome back!"
+msgstr "Sveiki sugrįžę!"
+
+#, c-format
+msgid "%d account was disabled because you signed on from another location:"
+msgid_plural ""
+"%d accounts were disabled because you signed on from another location:"
+msgstr[0] "%d paskyra buvo išjungta, nes prisijungėte iš kitur:"
+msgstr[1] "%d paskyros buvo išjungtos, nes prisijungėte iš kitur:"
+msgstr[2] "%d paskyrų buvo išjungta, nes prisijungėte iš kitur:"
+
+msgid "<b>Username:</b>"
+msgstr "<b>Vartotojo vardas:</b>"
+
+msgid "<b>Password:</b>"
+msgstr "<b>Slaptažodis:</b>"
+
+msgid "_Login"
+msgstr "_Prisijungti"
+
+msgid "/Accounts"
+msgstr "/Paskyros"
+
+#. Translators: Please maintain the use of -> and <- to refer to menu heirarchy
+#, c-format
+msgid ""
+"<span weight='bold' size='larger'>Welcome to %s!</span>\n"
+"\n"
+"You have no accounts enabled. Enable your IM accounts from the <b>Accounts</"
+"b> window at <b>Accounts->Manage Accounts</b>. Once you enable accounts, "
+"you'll be able to sign on, set your status, and talk to your friends."
+msgstr ""
+"<span weight='bold' size='larger'>Sveikiname pradėjus naudoti %s!</span>\n"
+"\n"
+"Jūs neturite aktyvuotų paskyrų. Aktyvuokite jas lange <b>„Paskyros“</b>, "
+"pasiekiamame per <b>Paskyros->Tvarkyti paskyras</b> meniu bičiulių sąrašo "
+"lange. Aktyvavę paskyras, galėsite prisijungti, nustatyti savo būseną ir "
+"šnekėtis su draugais."
+
# set the Show Offline Buddies option. must be done
# * after the treeview or faceprint gets mad. -Robot101
-#. set the Show Offline Buddies option. must be done
-#. * after the treeview or faceprint gets mad. -Robot101
-#.
-msgid "/Buddies/Show/Offline Buddies"
-msgstr "/Bičiuliai/Rodyti/atsijungusius bičiulius"
-
-msgid "/Buddies/Show/Empty Groups"
-msgstr "/Bičiuliai/Rodyti/tuščias grupes"
-
+#. set the Show Offline Buddies option. must be done
+#. * after the treeview or faceprint gets mad. -Robot101
+#.
+msgid "/Buddies/Show/Offline Buddies"
+msgstr "/Bičiuliai/Rodyti/atsijungusius bičiulius"
+
+msgid "/Buddies/Show/Empty Groups"
+msgstr "/Bičiuliai/Rodyti/tuščias grupes"
+
# set the Show Offline Buddies option. must be done
# * after the treeview or faceprint gets mad. -Robot101
-msgid "/Buddies/Show/Buddy Details"
-msgstr "/Bičiuliai/Rodyti/informaciją apie bičiulius"
-
+msgid "/Buddies/Show/Buddy Details"
+msgstr "/Bičiuliai/Rodyti/informaciją apie bičiulius"
+
# set the Show Offline Buddies option. must be done
# * after the treeview or faceprint gets mad. -Robot101
-msgid "/Buddies/Show/Idle Times"
-msgstr "/Bičiuliai/Rodyti/neveiklumo laikus"
-
-msgid "/Buddies/Show/Protocol Icons"
-msgstr "/Bičiuliai/Rodyti/protokolų piktogramas"
-
-msgid "Add a buddy.\n"
-msgstr "Pridėti bičiulį.\n"
-
-msgid "Buddy's _username:"
-msgstr "_Bičiulio naudotojo vardas:"
-
+msgid "/Buddies/Show/Idle Times"
+msgstr "/Bičiuliai/Rodyti/neveiklumo laikus"
+
+msgid "/Buddies/Show/Protocol Icons"
+msgstr "/Bičiuliai/Rodyti/protokolų piktogramas"
+
+msgid "Add a buddy.\n"
+msgstr "Pridėti bičiulį.\n"
+
+msgid "Buddy's _username:"
+msgstr "_Bičiulio naudotojo vardas:"
+
# Optional Information section
-msgid "(Optional) A_lias:"
-msgstr "(Neprivaloma) A_lternatyvus vardas:"
-
-msgid "Add buddy to _group:"
-msgstr "Bičiulį pridėti į _grupę:"
-
-msgid "This protocol does not support chat rooms."
-msgstr "Šis protokolas nepalaiko pokalbių kambarių."
-
-msgid ""
-"You are not currently signed on with any protocols that have the ability to "
-"chat."
-msgstr ""
-"Šiuo metu nesate prisijungęs su jokiu pokalbių kambarius palaikančiu "
-"protokolu."
-
-msgid ""
-"Please enter an alias, and the appropriate information about the chat you "
-"would like to add to your buddy list.\n"
-msgstr ""
-"Prašome įvesti alternatyvųjį vardą ir kitą informaciją apie pokalbių "
-"kambarį, kurį norite įtraukti į bičiulių sąrašą.\n"
-
-msgid "A_lias:"
-msgstr "A_lternatyvusis vardas:"
-
-msgid "Auto_join when account becomes online."
-msgstr "Automatiškai prisi_jungti, kai paskyra aktyvuojama."
-
-msgid "_Remain in chat after window is closed."
-msgstr "_Pasilikti pokalbyje ir uždarius langą."
-
-msgid "Please enter the name of the group to be added."
-msgstr "Prašome įvesti pridedamos grupės pavadinimą."
-
-msgid "Enable Account"
-msgstr "Aktyvuoti paskyrą"
-
-msgid "<PurpleMain>/Accounts/Enable Account"
-msgstr "<PurpleMain>/Paskyros/Aktyvuoti paskyrą"
-
-msgid "<PurpleMain>/Accounts/"
-msgstr "<PurpleMain>/Paskyros/"
-
-msgid "_Edit Account"
-msgstr "K_eisti paskyrą..."
-
-msgid "No actions available"
-msgstr "Veiksmų nėra"
-
-msgid "_Disable"
-msgstr "_Deaktyvuoti"
-
+msgid "(Optional) A_lias:"
+msgstr "(Neprivaloma) A_lternatyvus vardas:"
+
+msgid "Add buddy to _group:"
+msgstr "Bičiulį pridėti į _grupę:"
+
+msgid "This protocol does not support chat rooms."
+msgstr "Šis protokolas nepalaiko pokalbių kambarių."
+
+msgid ""
+"You are not currently signed on with any protocols that have the ability to "
+"chat."
+msgstr ""
+"Šiuo metu nesate prisijungęs su jokiu pokalbių kambarius palaikančiu "
+"protokolu."
+
+msgid ""
+"Please enter an alias, and the appropriate information about the chat you "
+"would like to add to your buddy list.\n"
+msgstr ""
+"Prašome įvesti alternatyvųjį vardą ir kitą informaciją apie pokalbių "
+"kambarį, kurį norite įtraukti į bičiulių sąrašą.\n"
+
+msgid "A_lias:"
+msgstr "A_lternatyvusis vardas:"
+
+msgid "_Group:"
+msgstr "_Grupė:"
+
+msgid "Auto_join when account becomes online."
+msgstr "Automatiškai prisi_jungti, kai paskyra aktyvuojama."
+
+msgid "_Remain in chat after window is closed."
+msgstr "_Pasilikti pokalbyje ir uždarius langą."
+
+msgid "Please enter the name of the group to be added."
+msgstr "Prašome įvesti pridedamos grupės pavadinimą."
+
+msgid "Enable Account"
+msgstr "Aktyvuoti paskyrą"
+
+msgid "<PurpleMain>/Accounts/Enable Account"
+msgstr "<PurpleMain>/Paskyros/Aktyvuoti paskyrą"
+
+msgid "<PurpleMain>/Accounts/"
+msgstr "<PurpleMain>/Paskyros/"
+
+msgid "_Edit Account"
+msgstr "K_eisti paskyrą..."
+
+msgid "No actions available"
+msgstr "Veiksmų nėra"
+
+msgid "_Disable"
+msgstr "_Deaktyvuoti"
+
# Tools
-msgid "/Tools"
-msgstr "/Įrankiai"
-
+msgid "/Tools"
+msgstr "/Įrankiai"
+
# set the Show Offline Buddies option. must be done
# * after the treeview or faceprint gets mad. -Robot101
-msgid "/Buddies/Sort Buddies"
-msgstr "/Bičiuliai/Surikiuoti bičiulius"
-
-#. Widget creation function
-msgid "SSL Servers"
-msgstr "SSL serveriai"
-
-msgid "Unknown command."
-msgstr "Nežinoma komanda."
-
-msgid "That buddy is not on the same protocol as this chat."
-msgstr "Tas bičiulis nenaudoja to paties protokolo kaip šis pokalbių kambarys."
-
-msgid ""
-"You are not currently signed on with an account that can invite that buddy."
-msgstr ""
-"Šiuo metu Jūs nesate prisijungęs su jokia paskyra, kuri leistų pakviesti tą "
-"bičiulį."
-
-msgid "Invite Buddy Into Chat Room"
-msgstr "Pakviesti bičiulį į pokalbių kambarį"
-
-# Put our happy label in it.
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Prašom įvesti vartotojo, kurį norite pakviesti, vardą, kartu su neprivaloma "
-"pakvietimo žinute."
-
-msgid "_Buddy:"
-msgstr "_Bičiulis:"
-
-msgid "_Message:"
-msgstr "Ž_inutė:"
-
-#, c-format
-msgid "<h1>Conversation with %s</h1>\n"
-msgstr "<h1>Pokalbis su %s</h1>\n"
-
-msgid "Save Conversation"
-msgstr "Įrašyti pokalbį"
-
-msgid "Find"
-msgstr "Paieška"
-
-msgid "_Search for:"
-msgstr "_Ieškoti:"
-
-msgid "Un-Ignore"
-msgstr "Nebeignoruoti"
-
-msgid "Ignore"
-msgstr "Ignoruoti"
-
-msgid "Get Away Message"
-msgstr "Gauti pasitraukimo žinutę"
-
-msgid "Last said"
-msgstr "Paskutinė žinutė"
-
-msgid "Unable to save icon file to disk."
-msgstr "Negalima įrašyti vartotojo paveiksliuko failo į diską."
-
-msgid "Save Icon"
-msgstr "Įrašyti vartotojo paveiksliuką"
-
-msgid "Animate"
-msgstr "Animuoti"
-
-msgid "Hide Icon"
-msgstr "Paslėpti vartotojo paveiksliuką"
-
-msgid "Save Icon As..."
-msgstr "Įrasyti vartotojo paveiksliuką kaip..."
-
-msgid "Set Custom Icon..."
-msgstr "Nustatyti specialų vartotojo paveiksliuką..."
-
-msgid "Change Size"
-msgstr "Keisti dydį"
-
-msgid "Show All"
-msgstr "Viską rodyti"
-
+msgid "/Buddies/Sort Buddies"
+msgstr "/Bičiuliai/Surikiuoti bičiulius"
+
+#. Widget creation function
+msgid "SSL Servers"
+msgstr "SSL serveriai"
+
+msgid "Unknown command."
+msgstr "Nežinoma komanda."
+
+msgid "That buddy is not on the same protocol as this chat."
+msgstr "Tas bičiulis nenaudoja to paties protokolo kaip šis pokalbių kambarys."
+
+msgid ""
+"You are not currently signed on with an account that can invite that buddy."
+msgstr ""
+"Šiuo metu Jūs nesate prisijungęs su jokia paskyra, kuri leistų pakviesti tą "
+"bičiulį."
+
+msgid "Invite Buddy Into Chat Room"
+msgstr "Pakviesti bičiulį į pokalbių kambarį"
+
+msgid "_Buddy:"
+msgstr "_Bičiulis:"
+
+msgid "_Message:"
+msgstr "Ž_inutė:"
+
+#, c-format
+msgid "<h1>Conversation with %s</h1>\n"
+msgstr "<h1>Pokalbis su %s</h1>\n"
+
+msgid "Save Conversation"
+msgstr "Įrašyti pokalbį"
+
+msgid "Find"
+msgstr "Paieška"
+
+msgid "_Search for:"
+msgstr "_Ieškoti:"
+
+msgid "Un-Ignore"
+msgstr "Nebeignoruoti"
+
+msgid "Ignore"
+msgstr "Ignoruoti"
+
+msgid "Get Away Message"
+msgstr "Gauti pasitraukimo žinutę"
+
+msgid "Last said"
+msgstr "Paskutinė žinutė"
+
+msgid "Unable to save icon file to disk."
+msgstr "Negalima įrašyti vartotojo paveiksliuko failo į diską."
+
+msgid "Save Icon"
+msgstr "Įrašyti vartotojo paveiksliuką"
+
+msgid "Animate"
+msgstr "Animuoti"
+
+msgid "Hide Icon"
+msgstr "Paslėpti vartotojo paveiksliuką"
+
+msgid "Save Icon As..."
+msgstr "Įrasyti vartotojo paveiksliuką kaip..."
+
+msgid "Set Custom Icon..."
+msgstr "Nustatyti specialų vartotojo paveiksliuką..."
+
+msgid "Change Size"
+msgstr "Keisti dydį"
+
+msgid "Show All"
+msgstr "Viską rodyti"
+
# Conversation menu
-#. Conversation menu
-msgid "/_Conversation"
-msgstr "/_Pokalbis"
-
-msgid "/Conversation/New Instant _Message..."
-msgstr "/Pokalbis/_Nauja žinutė..."
-
-msgid "/Conversation/_Find..."
-msgstr "/Pokalbis/_Ieškoti..."
-
-msgid "/Conversation/View _Log"
-msgstr "/Pokalbis/Žiūrėti žurna_lą"
-
-msgid "/Conversation/_Save As..."
-msgstr "/Pokalbis/Įrašyti _kaip..."
-
-msgid "/Conversation/Clea_r Scrollback"
-msgstr "/Pokalbis/Iš_valyti langą"
-
-msgid "/Conversation/Se_nd File..."
-msgstr "/Pokalbis/Nusiųsti _failą..."
-
-msgid "/Conversation/Add Buddy _Pounce..."
-msgstr "/Pokalbis/_Pridėti reakciją į bičiulį..."
-
-msgid "/Conversation/_Get Info"
-msgstr "/Pokalbis/_Gauti informaciją"
-
-msgid "/Conversation/In_vite..."
-msgstr "/Pokalbis/_Pakviesti..."
-
-msgid "/Conversation/M_ore"
-msgstr "/Pokalbis/_Daugiau"
-
-msgid "/Conversation/Al_ias..."
-msgstr "/Pokalbis/Al_ternatyvusis vardas..."
-
-msgid "/Conversation/_Block..."
-msgstr "/Pokalbis/_Blokuoti..."
-
-msgid "/Conversation/_Unblock..."
-msgstr "/Pokalbis/Atbl_okuoti..."
-
-msgid "/Conversation/_Add..."
-msgstr "/Pokalbis/P_ridėti..."
-
-msgid "/Conversation/_Remove..."
-msgstr "/Pokalbis/P_ašalinti..."
-
-msgid "/Conversation/Insert Lin_k..."
-msgstr "/Pokalbis/_Įterpti nuorodą..."
-
-msgid "/Conversation/Insert Imag_e..."
-msgstr "/Pokalbis/Įt_erpti paveiksliuką..."
-
-msgid "/Conversation/_Close"
-msgstr "/Pokalbis/U_žverti"
-
+#. Conversation menu
+msgid "/_Conversation"
+msgstr "/_Pokalbis"
+
+msgid "/Conversation/New Instant _Message..."
+msgstr "/Pokalbis/_Nauja žinutė..."
+
+msgid "/Conversation/_Find..."
+msgstr "/Pokalbis/_Ieškoti..."
+
+msgid "/Conversation/View _Log"
+msgstr "/Pokalbis/Žiūrėti žurna_lą"
+
+msgid "/Conversation/_Save As..."
+msgstr "/Pokalbis/Įrašyti _kaip..."
+
+msgid "/Conversation/Clea_r Scrollback"
+msgstr "/Pokalbis/Iš_valyti langą"
+
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Pokalbis/_Daugiau"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Pokalbis/_Daugiau"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Pokalbis/_Daugiau"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Pokalbis/Žiūrėti žurna_lą"
+
+msgid "/Conversation/Se_nd File..."
+msgstr "/Pokalbis/Nusiųsti _failą..."
+
+msgid "/Conversation/Add Buddy _Pounce..."
+msgstr "/Pokalbis/_Pridėti reakciją į bičiulį..."
+
+msgid "/Conversation/_Get Info"
+msgstr "/Pokalbis/_Gauti informaciją"
+
+msgid "/Conversation/In_vite..."
+msgstr "/Pokalbis/_Pakviesti..."
+
+msgid "/Conversation/M_ore"
+msgstr "/Pokalbis/_Daugiau"
+
+msgid "/Conversation/Al_ias..."
+msgstr "/Pokalbis/Al_ternatyvusis vardas..."
+
+msgid "/Conversation/_Block..."
+msgstr "/Pokalbis/_Blokuoti..."
+
+msgid "/Conversation/_Unblock..."
+msgstr "/Pokalbis/Atbl_okuoti..."
+
+msgid "/Conversation/_Add..."
+msgstr "/Pokalbis/P_ridėti..."
+
+msgid "/Conversation/_Remove..."
+msgstr "/Pokalbis/P_ašalinti..."
+
+msgid "/Conversation/Insert Lin_k..."
+msgstr "/Pokalbis/_Įterpti nuorodą..."
+
+msgid "/Conversation/Insert Imag_e..."
+msgstr "/Pokalbis/Įt_erpti paveiksliuką..."
+
+msgid "/Conversation/_Close"
+msgstr "/Pokalbis/U_žverti"
+
# Options
-#. Options
-msgid "/_Options"
-msgstr "/P_arinktys"
-
-msgid "/Options/Enable _Logging"
-msgstr "/Parinktys/Įjungti ž_urnalų vedimą"
-
-msgid "/Options/Enable _Sounds"
-msgstr "/Parinktys/Įjungti gar_sus"
-
-msgid "/Options/Show Formatting _Toolbars"
-msgstr "/Parinktys/Rodyti forma_to taikymo priemonių juostas"
-
-msgid "/Options/Show Ti_mestamps"
-msgstr "/Parinktys/Rodyti laiko žy_mas"
-
-msgid "/Conversation/More"
-msgstr "/Pokalbis/Daugiau"
-
+#. Options
+msgid "/_Options"
+msgstr "/P_arinktys"
+
+msgid "/Options/Enable _Logging"
+msgstr "/Parinktys/Įjungti ž_urnalų vedimą"
+
+msgid "/Options/Enable _Sounds"
+msgstr "/Parinktys/Įjungti gar_sus"
+
+msgid "/Options/Show Formatting _Toolbars"
+msgstr "/Parinktys/Rodyti forma_to taikymo priemonių juostas"
+
+msgid "/Options/Show Ti_mestamps"
+msgstr "/Parinktys/Rodyti laiko žy_mas"
+
+msgid "/Conversation/More"
+msgstr "/Pokalbis/Daugiau"
+
# Options
-msgid "/Options"
-msgstr "/Parinktys"
-
+msgid "/Options"
+msgstr "/Parinktys"
+
# Conversation menu
-#. The menubar has been deactivated. Make sure the 'More' submenu is regenerated next time
-#. * the 'Conversation' menu pops up.
-#. Make sure the 'Conversation -> More' menuitems are regenerated whenever
-#. * the 'Conversation' menu pops up because the entries can change after the
-#. * conversation is created.
-msgid "/Conversation"
-msgstr "/Pokalbis"
-
-msgid "/Conversation/View Log"
-msgstr "/Pokalbis/Rodyti žurnalą"
-
-msgid "/Conversation/Send File..."
-msgstr "/Pokalbis/Siųsti failą..."
-
-msgid "/Conversation/Add Buddy Pounce..."
-msgstr "/Pokalbis/Pridėti reakciją į bičiulį..."
-
-msgid "/Conversation/Get Info"
-msgstr "/Pokalbis/Gauti informaciją"
-
-msgid "/Conversation/Invite..."
-msgstr "/Pokalbis/Pakviesti..."
-
-msgid "/Conversation/Alias..."
-msgstr "/Pokalbis/Alternatyvusis vardas..."
-
-msgid "/Conversation/Block..."
-msgstr "/Pokalbis/Blokuoti..."
-
-msgid "/Conversation/Unblock..."
-msgstr "/Pokalbis/Atblokuoti..."
-
-msgid "/Conversation/Add..."
-msgstr "/Pokalbis/Pridėti..."
-
-msgid "/Conversation/Remove..."
-msgstr "/Pokalbis/Pašalinti..."
-
-msgid "/Conversation/Insert Link..."
-msgstr "/Pokalbis/Įterpti nuorodą..."
-
-msgid "/Conversation/Insert Image..."
-msgstr "/Pokalbis/Įterpti paveiksliuką..."
-
-msgid "/Options/Enable Logging"
-msgstr "/Parinktys/Įjungti žurnalų vedimą"
-
-msgid "/Options/Enable Sounds"
-msgstr "/Parinktys/Įjungti garsus"
-
-msgid "/Options/Show Formatting Toolbars"
-msgstr "/Parinktys/Rodyti formato taikymo priemonių juostas"
-
-msgid "/Options/Show Timestamps"
-msgstr "/Parinktys/Rodyti laiko žymas"
-
-msgid "User is typing..."
-msgstr "Vartotojas rašo..."
-
-#, c-format
-msgid ""
-"\n"
-"%s has stopped typing"
-msgstr ""
-"\n"
-"%s nustojo rašyti"
-
+#. The menubar has been deactivated. Make sure the 'More' submenu is regenerated next time
+#. * the 'Conversation' menu pops up.
+#. Make sure the 'Conversation -> More' menuitems are regenerated whenever
+#. * the 'Conversation' menu pops up because the entries can change after the
+#. * conversation is created.
+msgid "/Conversation"
+msgstr "/Pokalbis"
+
+msgid "/Conversation/View Log"
+msgstr "/Pokalbis/Rodyti žurnalą"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Pokalbis/Daugiau"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Pokalbis/Rodyti žurnalą"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Pokalbis/Daugiau"
+
+msgid "/Conversation/Send File..."
+msgstr "/Pokalbis/Siųsti failą..."
+
+msgid "/Conversation/Add Buddy Pounce..."
+msgstr "/Pokalbis/Pridėti reakciją į bičiulį..."
+
+msgid "/Conversation/Get Info"
+msgstr "/Pokalbis/Gauti informaciją"
+
+msgid "/Conversation/Invite..."
+msgstr "/Pokalbis/Pakviesti..."
+
+msgid "/Conversation/Alias..."
+msgstr "/Pokalbis/Alternatyvusis vardas..."
+
+msgid "/Conversation/Block..."
+msgstr "/Pokalbis/Blokuoti..."
+
+msgid "/Conversation/Unblock..."
+msgstr "/Pokalbis/Atblokuoti..."
+
+msgid "/Conversation/Add..."
+msgstr "/Pokalbis/Pridėti..."
+
+msgid "/Conversation/Remove..."
+msgstr "/Pokalbis/Pašalinti..."
+
+msgid "/Conversation/Insert Link..."
+msgstr "/Pokalbis/Įterpti nuorodą..."
+
+msgid "/Conversation/Insert Image..."
+msgstr "/Pokalbis/Įterpti paveiksliuką..."
+
+msgid "/Options/Enable Logging"
+msgstr "/Parinktys/Įjungti žurnalų vedimą"
+
+msgid "/Options/Enable Sounds"
+msgstr "/Parinktys/Įjungti garsus"
+
+msgid "/Options/Show Formatting Toolbars"
+msgstr "/Parinktys/Rodyti formato taikymo priemonių juostas"
+
+msgid "/Options/Show Timestamps"
+msgstr "/Parinktys/Rodyti laiko žymas"
+
+msgid "User is typing..."
+msgstr "Vartotojas rašo..."
+
+#, c-format
+msgid ""
+"\n"
+"%s has stopped typing"
+msgstr ""
+"\n"
+"%s nustojo rašyti"
+
# Build the Send As menu
-#. Build the Send To menu
-msgid "S_end To"
-msgstr "_Siųsti paskyrai"
-
+#. Build the Send To menu
+msgid "S_end To"
+msgstr "_Siųsti paskyrai"
+
# Build the Send As menu
-msgid "_Send"
-msgstr "_Siųsti"
-
+msgid "_Send"
+msgstr "_Siųsti"
+
# Setup the label telling how many people are in the room.
-#. Setup the label telling how many people are in the room.
-msgid "0 people in room"
-msgstr "0 žmonių kambaryje"
-
+#. Setup the label telling how many people are in the room.
+msgid "0 people in room"
+msgstr "0 žmonių kambaryje"
+
# Setup the label telling how many people are in the room.
-#, c-format
-msgid "%d person in room"
-msgid_plural "%d people in room"
-msgstr[0] "%d asmuo kambaryje"
-msgstr[1] "%d asmenys kambaryje"
-msgstr[2] "%d asmenų kambaryje"
-
-msgid "Typing"
-msgstr "Renkamas tekstas"
-
-msgid "Stopped Typing"
-msgstr "Nustota rinkti tekstą"
-
-msgid "Nick Said"
-msgstr "Pasakytas vardas"
-
-msgid "Unread Messages"
-msgstr "Neperskaitytos žinutės"
-
-msgid "New Event"
-msgstr "Naujas įvykis"
-
-msgid "clear: Clears all conversation scrollbacks."
-msgstr "clear: išvalo visus pokalbių žinučių langus."
-
-msgid "Confirm close"
-msgstr "Patvirtinkite uždarymą"
-
-msgid "You have unread messages. Are you sure you want to close the window?"
-msgstr "Turite neperskaitytų žinučių. Ar tikrai norite uždaryti langą?"
-
-msgid "Close other tabs"
-msgstr "Uždaryti kitas korteles"
-
-msgid "Close all tabs"
-msgstr "Uždaryti visas korteles"
-
-msgid "Detach this tab"
-msgstr "Atskirti šią kortelę"
-
-msgid "Close this tab"
-msgstr "Uždaryti šią kortelę"
-
-msgid "Close conversation"
-msgstr "Uždaryti pokalbį"
-
-msgid "Last created window"
-msgstr "Paskutiniame sukurtame lange"
-
-msgid "Separate IM and Chat windows"
-msgstr "Atskiruose asmeninių pokalbių ir pokalbių kambarių languose"
-
-msgid "New window"
-msgstr "Naujame lange"
-
-msgid "By group"
-msgstr "Grupuoti pagal grupę"
-
-msgid "By account"
-msgstr "Grupuoti pagal paskyrą"
-
-msgid "Save Debug Log"
-msgstr "Įrašyti derinimo žurnalą"
-
-msgid "Invert"
-msgstr "Priešingai"
-
-msgid "Highlight matches"
-msgstr "Paryškinti rastus rezultatus"
-
-msgid "_Icon Only"
-msgstr "T_ik piktogramos"
-
-msgid "_Text Only"
-msgstr "_Tik tekstai"
-
-msgid "_Both Icon & Text"
-msgstr "_Piktogramos ir tekstai"
-
-msgid "Filter"
-msgstr "Filtras"
-
-msgid "Right click for more options."
-msgstr "Spustelėkite dešinįjį pelės mygtuką kitų parinkčių rodymui."
-
-msgid "Level "
-msgstr "Lygis "
-
-msgid "Select the debug filter level."
-msgstr "Pasirinkite derinimo informacijos filtravimo lygį."
-
-msgid "All"
-msgstr "Viskas"
-
-msgid "Misc"
-msgstr "Kiti"
-
-msgid "Warning"
-msgstr "Perspėjimai"
-
-msgid "Error "
-msgstr "Klaidos "
-
-msgid "Fatal Error"
-msgstr "Lemtingos klaidos"
-
-msgid "bug master"
-msgstr "Riktų šeimininkas"
-
-msgid "artist"
-msgstr "dailininkas"
-
-#. feel free to not translate this
-msgid "Ka-Hing Cheung"
-msgstr "Ka-Hing Cheung"
-
-msgid "support"
-msgstr "palaikymas"
-
-msgid "webmaster"
-msgstr "svetainės administratorius"
-
-msgid "Senior Contributor/QA"
-msgstr "Vyresnysis bendradarbis/kokybės kontrolė"
-
-msgid "win32 port"
-msgstr "perkėlimas į win32"
-
-msgid "maintainer"
-msgstr "prižiūrėtojas"
-
-msgid "libfaim maintainer"
-msgstr "libfaim prižiūrėtojas"
-
-#. If "lazy bum" translates literally into a serious insult, use something else or omit it.
-msgid "hacker and designated driver [lazy bum]"
-msgstr "hakeris ir negeriantis, nes prie vairo [tingus bastūnas]"
-
-msgid "support/QA"
-msgstr "priežiūra ir kokybės kontrolė"
-
-msgid "XMPP"
-msgstr "XMPP"
-
-msgid "original author"
-msgstr "pradinis autorius"
-
-msgid "lead developer"
-msgstr "pagrindinis kūrėjas"
-
-msgid "Afrikaans"
-msgstr "Būrų kalba"
-
-msgid "Arabic"
-msgstr "Arabų kalba"
-
-msgid "Belarusian Latin"
-msgstr "Baltarusų kalba lotynu abėcėle"
-
-msgid "Bulgarian"
-msgstr "Bulgarų kalba"
-
-msgid "Bengali"
-msgstr "Bengalų kalba"
-
-msgid "Bosnian"
-msgstr "Bosnių kalba"
-
-msgid "Catalan"
-msgstr "Katalonų kalba"
-
-msgid "Valencian-Catalan"
-msgstr "Valenciečių-katalonų kalba"
-
-msgid "Czech"
-msgstr "Čekų kalba"
-
-msgid "Danish"
-msgstr "Danų kalba"
-
-msgid "German"
-msgstr "Vokiečių kalba"
-
-msgid "Dzongkha"
-msgstr "Botijų kalba"
-
-msgid "Greek"
-msgstr "Graikų kalba"
-
-msgid "Australian English"
-msgstr "Australų anglų kalba"
-
-msgid "Canadian English"
-msgstr "Kanadiečių anglų kalba"
-
-msgid "British English"
-msgstr "Britų anglų kalba"
-
-msgid "Esperanto"
-msgstr "Esperanto"
-
-msgid "Spanish"
-msgstr "Ispanų kalba"
-
-msgid "Estonian"
-msgstr "Estų kalba"
-
-msgid "Euskera(Basque)"
-msgstr "Baskų kalba"
-
-msgid "Persian"
-msgstr "Persų kalba"
-
-msgid "Finnish"
-msgstr "Suomių kalba"
-
-msgid "French"
-msgstr "Prancūzų kalba"
-
-msgid "Irish"
-msgstr "Airių kalba"
-
-msgid "Galician"
-msgstr "Galeganų kalba"
-
-msgid "Gujarati"
-msgstr "Gudžaratų kalba"
-
-msgid "Gujarati Language Team"
-msgstr "Gudžarati kalbos komanda"
-
-msgid "Hebrew"
-msgstr "Hebrajų kalba"
-
-msgid "Hindi"
-msgstr "Hindi kalba"
-
-msgid "Hungarian"
-msgstr "Vengrų kalba"
-
-msgid "Indonesian"
-msgstr "Indoneziečių kalba"
-
-msgid "Italian"
-msgstr "Italų kalba"
-
-msgid "Japanese"
-msgstr "Japonų kalba"
-
-msgid "Georgian"
-msgstr "Gruzinų kalba"
-
-msgid "Ubuntu Georgian Translators"
-msgstr "Ubuntu vertėjai į gruzinų kalbą"
-
-msgid "Kannada"
-msgstr "Kanadų kalba"
-
-msgid "Kannada Translation team"
-msgstr "Kanadų kalbos vertimo komanda"
-
-msgid "Korean"
-msgstr "Korėjiečių kalba"
-
-msgid "Kurdish"
-msgstr "Kurdų kalba"
-
-msgid "Lao"
-msgstr "Laosiečių kalba"
-
-msgid "Lithuanian"
-msgstr "Lietuvių kalba"
-
-msgid "Macedonian"
-msgstr "Makedoniečių kalba"
-
-msgid "Mongolian"
-msgstr "Mongolų kalba"
-
-msgid "Bokmål Norwegian"
-msgstr "Norvegų kalba (Bokmål)"
-
-msgid "Nepali"
-msgstr "Nepalų kalba"
-
-msgid "Dutch, Flemish"
-msgstr "Olandų, flamandų kalba"
-
-msgid "Norwegian Nynorsk"
-msgstr "Norvegų kalba (nynorsk)"
-
-msgid "Occitan"
-msgstr "Oksitanų kalba"
-
-msgid "Punjabi"
-msgstr "Pandžabų kalba"
-
-msgid "Polish"
-msgstr "Lenkų kalba"
-
-msgid "Portuguese"
-msgstr "Portugalų kalba"
-
-msgid "Portuguese-Brazil"
-msgstr "Brazilų portugalų kalba"
-
-msgid "Pashto"
-msgstr "Puštūnų kalba"
-
-msgid "Romanian"
-msgstr "Rumunų kalba"
-
-msgid "Russian"
-msgstr "Rusų kalba"
-
-msgid "Slovak"
-msgstr "Slovakų kalba"
-
-msgid "Slovenian"
-msgstr "Slovėnų kalba"
-
-msgid "Albanian"
-msgstr "Albanų kalba"
-
-msgid "Serbian"
-msgstr "Serbų kalba"
-
-msgid "Sinhala"
-msgstr "Sinhalų kalba"
-
-msgid "Swedish"
-msgstr "Švedų kalba"
-
-msgid "Tamil"
-msgstr "Tamilų kalba"
-
-msgid "Telugu"
-msgstr "Telugu kalba"
-
-msgid "Thai"
-msgstr "Tajų kalba"
-
-msgid "Turkish"
-msgstr "Turkų kalba"
-
-msgid "Urdu"
-msgstr "Urdu kalba"
-
-msgid "Vietnamese"
-msgstr "Vietnamiečių kalba"
-
-msgid "T.M.Thanh and the Gnome-Vi Team"
-msgstr "T.M. Thanh ir Gnome-Vi komanda"
-
-msgid "Simplified Chinese"
-msgstr "Supaprastinta kinų kalba"
-
-msgid "Hong Kong Chinese"
-msgstr "Hongkongo kinų kalba"
-
-msgid "Traditional Chinese"
-msgstr "Tradicinė kinų kalba"
-
-msgid "Amharic"
-msgstr "Amharų kalba"
-
-#, c-format
-msgid "About %s"
-msgstr "Apie %s"
-
-#, c-format
-msgid ""
-"%s is a graphical modular messaging client based on libpurple which is "
-"capable of connecting to AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC, SIP/SIMPLE, "
-"Novell GroupWise, Lotus Sametime, Bonjour, Zephyr, MySpaceIM, Gadu-Gadu, and "
-"QQ all at once. It is written using GTK+.<BR><BR>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."
-"<BR><BR>"
-msgstr ""
-"%s yra grafine modulinė pokalbių programa libpurple pagrindu, su kuria "
-"galima bendrauti AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC, SIP/SIMPLE, Novell "
-"GroupWise, Lotus Sametime, Bonjour, Zephyr, MySpaceIM, Gadu-Gadu ir QQ "
-"tinkluose – visuose vienu metu. Programa parašyta naudojant GTK+."
-"<br><br>Jūs galite keisti ir platinti šią programą GPL (2-os ar vėlesnės "
-"versijos) sąlygomis. GPL kopija yra faile „COPYING“, platinamame kartu su %"
-"s. %s autorinės teisės priklauso programos autoriams. Faile „COPYRIGHT“ "
-"pateiktas pilnas autorių sąrašas. Mes neteikiame jokios garantijos šiai "
-"programai.<br><br>"
-
-#, c-format
-msgid ""
-"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
-"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
-msgstr ""
-"<FONT SIZE=\"4\">DUK:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
-"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
-
-#, c-format
-msgid ""
-"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
-"\">support@pidgin.im</A><BR/><BR/>"
-msgstr ""
-"<FONT SIZE=\"4\">Pagalba el. paštu:</FONT> <A HREF=\"mailto:support@pidgin.im"
-"\">support@pidgin.im</A><BR/><BR/>"
-
-#, c-format
-msgid ""
-"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
-msgstr ""
-"<FONT SIZE=\"4\">IRC kanalas:</FONT> #pidgin serveryje irc.freenode."
-"net<BR><BR>"
-
-#, c-format
-msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
-msgstr "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
-
-msgid "Current Developers"
-msgstr "Dabartiniai kūrėjai"
-
-msgid "Crazy Patch Writers"
-msgstr "Pakvaišę pataisų rašytojai"
-
-msgid "Retired Developers"
-msgstr "Buvę kūrėjai"
-
-msgid "Retired Crazy Patch Writers"
-msgstr "Atsistadydinę pakvaišę pataisų rašytojai"
-
-msgid "Current Translators"
-msgstr "Dabartiniai vertėjai"
-
-msgid "Past Translators"
-msgstr "Buvę vertėjai"
-
-msgid "Debugging Information"
-msgstr "Derinimo informacija"
-
-msgid "_Name"
-msgstr "_Vardas"
-
-msgid "_Account"
-msgstr "_Paskyra"
-
-msgid "Get User Info"
-msgstr "Gauti vartotojo informaciją"
-
-msgid ""
-"Please enter the username or alias of the person whose info you would like "
-"to view."
-msgstr ""
-"Įveskite naudotojo vardą arba alternatyvųjį vardą asmens, kurio informaciją "
-"Jūs norite pažiūrėti."
-
-msgid "View User Log"
-msgstr "Žiūrėti vartotojo žurnalą"
-
-msgid "Alias Contact"
-msgstr "Alternatyvusis kontakto vardas"
-
-msgid "Enter an alias for this contact."
-msgstr "Įveskite alternatyvųjį vardą šiam kontaktui."
-
-#, c-format
-msgid "Enter an alias for %s."
-msgstr "Įveskite alternatyvųjį vardą vartotojui %s."
-
-msgid "Alias Buddy"
-msgstr "Alternatyvusis bičiulio vardas"
-
-msgid "Alias Chat"
-msgstr "Alternatyvusis pokalbių kambario vardas"
-
-msgid "Enter an alias for this chat."
-msgstr "Įveskite alternatyvųjį vardą šiam pokalbių kambariui."
-
-#, 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] ""
-"Jūs ruošiates pašalinti konktaktą su %s ir turintį dar %d kitą šio bičiulio "
-"paskyrą iš Jūsų bičiulių sąrašo. Ar norite tęsti?"
-msgstr[1] ""
-"Jūs ruošiates pašalinti konktaktą su %s ir turintį dar %d kitas bičiulio "
-"paskyras iš Jūsų bičiulių sąrašo. Ar norite tęsti?"
-msgstr[2] ""
-"Jūs ruošiatės pašalinti kontaktą su %s ir turintį dar %d kitų bičiulio "
-"paskyrų iš Jūsų bičiulių sąrašo. Ar norite tęsti?"
-
-msgid "Remove Contact"
-msgstr "Pašalinti kontaktą"
-
-msgid "_Remove Contact"
-msgstr "_Pašalinti kontaktą"
-
-#, c-format
-msgid ""
-"You are about to merge the group called %s into the group called %s. Do you "
-"want to continue?"
-msgstr "Jūs ruošiates grupę %s prijungti prie grupės %s. Ar norite tęsti?"
-
-msgid "Merge Groups"
-msgstr "Sujungti grupes"
-
-msgid "_Merge Groups"
-msgstr "_Sujungti grupes"
-
-#, 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 ""
-"Jūs ruošiates pašalinti grupę %s ir visus jos narius iš Jūsų bičiulių "
-"sąrašo. Ar norite tęsti?"
-
-msgid "Remove Group"
-msgstr "Pašalinti grupę"
-
-msgid "_Remove Group"
-msgstr "_Pašalinti grupę"
-
-#, c-format
-msgid ""
-"You are about to remove %s from your buddy list. Do you want to continue?"
-msgstr "Jūs ruošiates pašalinti %s iš Jūsų bičiulių sąrašo. Ar norite tęsti?"
-
-msgid "Remove Buddy"
-msgstr "Pašalinti bičiulį"
-
-msgid "_Remove Buddy"
-msgstr "_Pašalinti bičiulį"
-
-#, c-format
-msgid ""
-"You are about to remove the chat %s from your buddy list. Do you want to "
-"continue?"
-msgstr ""
-"Jūs ruošiates pašalinti pokalbių kambarį %s iš Jūsų bičiulių sąrašo. Ar "
-"norite tęsti?"
-
-msgid "Remove Chat"
-msgstr "Pašalinti pokalbių kambarį"
-
-msgid "_Remove Chat"
-msgstr "_Pašalinti pokalbių kambarį"
-
-msgid "Right-click for more unread messages...\n"
-msgstr ""
-"Spustelėkite dešinį pelės mygtuką, kad pamatytumėte kitas neperskaitytas "
-"žinutes...\n"
-
-msgid "_Change Status"
-msgstr "_Keisti būseną"
-
-msgid "Show Buddy _List"
-msgstr "_Rodyti bičiulių sąrašą"
-
-msgid "_Unread Messages"
-msgstr "_Neperskaitytos žinutės"
-
-msgid "New _Message..."
-msgstr "Nauja _žinutė..."
-
-msgid "_Accounts"
-msgstr "_Paskyros"
-
-msgid "Plu_gins"
-msgstr "P_apildiniai"
-
-msgid "Pr_eferences"
-msgstr "N_uostatos"
-
-msgid "Mute _Sounds"
-msgstr "_Išjungti garsus"
-
-msgid "_Blink on New Message"
-msgstr "_Mirksėti gavus naują žinutę"
-
-msgid "_Quit"
-msgstr "I_šeiti"
-
-msgid "Not started"
-msgstr "Nepradėta"
-
-msgid "<b>Receiving As:</b>"
-msgstr "<b>Gaunama kaip:</b>"
-
-msgid "<b>Receiving From:</b>"
-msgstr "<b>Gaunama iš:</b>"
-
-msgid "<b>Sending To:</b>"
-msgstr "<b>Siunčiama kam:</b>"
-
-msgid "<b>Sending As:</b>"
-msgstr "<b>Siunčiama kaip:</b>"
-
-msgid "There is no application configured to open this type of file."
-msgstr "Jokia programa nėra sukonfigūruota atverti šio tipo failą."
-
-msgid "An error occurred while opening the file."
-msgstr "Failo atvėrimo metu įvyko klaida."
-
-#, c-format
-msgid "Error launching %s: %s"
-msgstr "Programos %s paleidimo klaida: %s"
-
-#, c-format
-msgid "Error running %s"
-msgstr "Programos %s vykdymo klaida"
-
-#, c-format
-msgid "Process returned error code %d"
-msgstr "Procesas grąžino klaidos kodą %d"
-
-msgid "Filename:"
-msgstr "Failo pavadinimas:"
-
-msgid "Local File:"
-msgstr "Vietinis failas:"
-
-msgid "Speed:"
-msgstr "Greitis:"
-
-msgid "Time Elapsed:"
-msgstr "Praėjo laiko:"
-
-msgid "Time Remaining:"
-msgstr "Liko laiko:"
-
-msgid "Close this window when all transfers _finish"
-msgstr "_Uždaryti ši langą pasibaigus visiems failų perdavimams"
-
-msgid "C_lear finished transfers"
-msgstr "_Pašalinti pabaigtus perdavimus"
-
-#. "Download Details" arrow
-msgid "File transfer _details"
-msgstr "_Informacija apie perdavimą"
-
+#, c-format
+msgid "%d person in room"
+msgid_plural "%d people in room"
+msgstr[0] "%d asmuo kambaryje"
+msgstr[1] "%d asmenys kambaryje"
+msgstr[2] "%d asmenų kambaryje"
+
+msgid "Typing"
+msgstr "Renkamas tekstas"
+
+msgid "Stopped Typing"
+msgstr "Nustota rinkti tekstą"
+
+msgid "Nick Said"
+msgstr "Pasakytas vardas"
+
+msgid "Unread Messages"
+msgstr "Neperskaitytos žinutės"
+
+msgid "New Event"
+msgstr "Naujas įvykis"
+
+msgid "clear: Clears all conversation scrollbacks."
+msgstr "clear: išvalo visus pokalbių žinučių langus."
+
+msgid "Confirm close"
+msgstr "Patvirtinkite uždarymą"
+
+msgid "You have unread messages. Are you sure you want to close the window?"
+msgstr "Turite neperskaitytų žinučių. Ar tikrai norite uždaryti langą?"
+
+msgid "Close other tabs"
+msgstr "Uždaryti kitas korteles"
+
+msgid "Close all tabs"
+msgstr "Uždaryti visas korteles"
+
+msgid "Detach this tab"
+msgstr "Atskirti šią kortelę"
+
+msgid "Close this tab"
+msgstr "Uždaryti šią kortelę"
+
+msgid "Close conversation"
+msgstr "Uždaryti pokalbį"
+
+msgid "Last created window"
+msgstr "Paskutiniame sukurtame lange"
+
+msgid "Separate IM and Chat windows"
+msgstr "Atskiruose asmeninių pokalbių ir pokalbių kambarių languose"
+
+msgid "New window"
+msgstr "Naujame lange"
+
+msgid "By group"
+msgstr "Grupuoti pagal grupę"
+
+msgid "By account"
+msgstr "Grupuoti pagal paskyrą"
+
+msgid "Save Debug Log"
+msgstr "Įrašyti derinimo žurnalą"
+
+msgid "Invert"
+msgstr "Priešingai"
+
+msgid "Highlight matches"
+msgstr "Paryškinti rastus rezultatus"
+
+msgid "_Icon Only"
+msgstr "T_ik piktogramos"
+
+msgid "_Text Only"
+msgstr "_Tik tekstai"
+
+msgid "_Both Icon & Text"
+msgstr "_Piktogramos ir tekstai"
+
+msgid "Filter"
+msgstr "Filtras"
+
+msgid "Right click for more options."
+msgstr "Spustelėkite dešinįjį pelės mygtuką kitų parinkčių rodymui."
+
+msgid "Level "
+msgstr "Lygis "
+
+msgid "Select the debug filter level."
+msgstr "Pasirinkite derinimo informacijos filtravimo lygį."
+
+msgid "All"
+msgstr "Viskas"
+
+msgid "Misc"
+msgstr "Kiti"
+
+msgid "Warning"
+msgstr "Perspėjimai"
+
+msgid "Error "
+msgstr "Klaidos "
+
+msgid "Fatal Error"
+msgstr "Lemtingos klaidos"
+
+msgid "bug master"
+msgstr "Riktų šeimininkas"
+
+msgid "artist"
+msgstr "dailininkas"
+
+#. feel free to not translate this
+msgid "Ka-Hing Cheung"
+msgstr "Ka-Hing Cheung"
+
+msgid "voice and video"
+msgstr ""
+
+msgid "support"
+msgstr "palaikymas"
+
+msgid "webmaster"
+msgstr "svetainės administratorius"
+
+msgid "Senior Contributor/QA"
+msgstr "Vyresnysis bendradarbis/kokybės kontrolė"
+
+msgid "win32 port"
+msgstr "perkėlimas į win32"
+
+msgid "maintainer"
+msgstr "prižiūrėtojas"
+
+msgid "libfaim maintainer"
+msgstr "libfaim prižiūrėtojas"
+
+#. If "lazy bum" translates literally into a serious insult, use something else or omit it.
+msgid "hacker and designated driver [lazy bum]"
+msgstr "hakeris ir negeriantis, nes prie vairo [tingus bastūnas]"
+
+msgid "support/QA"
+msgstr "priežiūra ir kokybės kontrolė"
+
+msgid "XMPP"
+msgstr "XMPP"
+
+msgid "original author"
+msgstr "pradinis autorius"
+
+msgid "lead developer"
+msgstr "pagrindinis kūrėjas"
+
+msgid "Afrikaans"
+msgstr "Būrų kalba"
+
+msgid "Arabic"
+msgstr "Arabų kalba"
+
+msgid "Belarusian Latin"
+msgstr "Baltarusų kalba lotynu abėcėle"
+
+msgid "Bulgarian"
+msgstr "Bulgarų kalba"
+
+msgid "Bengali"
+msgstr "Bengalų kalba"
+
+msgid "Bosnian"
+msgstr "Bosnių kalba"
+
+msgid "Catalan"
+msgstr "Katalonų kalba"
+
+msgid "Valencian-Catalan"
+msgstr "Valenciečių-katalonų kalba"
+
+msgid "Czech"
+msgstr "Čekų kalba"
+
+msgid "Danish"
+msgstr "Danų kalba"
+
+msgid "German"
+msgstr "Vokiečių kalba"
+
+msgid "Dzongkha"
+msgstr "Botijų kalba"
+
+msgid "Greek"
+msgstr "Graikų kalba"
+
+msgid "Australian English"
+msgstr "Australų anglų kalba"
+
+msgid "Canadian English"
+msgstr "Kanadiečių anglų kalba"
+
+msgid "British English"
+msgstr "Britų anglų kalba"
+
+msgid "Esperanto"
+msgstr "Esperanto"
+
+msgid "Spanish"
+msgstr "Ispanų kalba"
+
+msgid "Estonian"
+msgstr "Estų kalba"
+
+msgid "Euskera(Basque)"
+msgstr "Baskų kalba"
+
+msgid "Persian"
+msgstr "Persų kalba"
+
+msgid "Finnish"
+msgstr "Suomių kalba"
+
+msgid "French"
+msgstr "Prancūzų kalba"
+
+msgid "Irish"
+msgstr "Airių kalba"
+
+msgid "Galician"
+msgstr "Galeganų kalba"
+
+msgid "Gujarati"
+msgstr "Gudžaratų kalba"
+
+msgid "Gujarati Language Team"
+msgstr "Gudžarati kalbos komanda"
+
+msgid "Hebrew"
+msgstr "Hebrajų kalba"
+
+msgid "Hindi"
+msgstr "Hindi kalba"
+
+msgid "Hungarian"
+msgstr "Vengrų kalba"
+
+msgid "Indonesian"
+msgstr "Indoneziečių kalba"
+
+msgid "Italian"
+msgstr "Italų kalba"
+
+msgid "Japanese"
+msgstr "Japonų kalba"
+
+msgid "Georgian"
+msgstr "Gruzinų kalba"
+
+msgid "Ubuntu Georgian Translators"
+msgstr "Ubuntu vertėjai į gruzinų kalbą"
+
+#, fuzzy
+msgid "Khmer"
+msgstr "Kitas"
+
+msgid "Kannada"
+msgstr "Kanadų kalba"
+
+msgid "Kannada Translation team"
+msgstr "Kanadų kalbos vertimo komanda"
+
+msgid "Korean"
+msgstr "Korėjiečių kalba"
+
+msgid "Kurdish"
+msgstr "Kurdų kalba"
+
+msgid "Lao"
+msgstr "Laosiečių kalba"
+
+msgid "Lithuanian"
+msgstr "Lietuvių kalba"
+
+msgid "Macedonian"
+msgstr "Makedoniečių kalba"
+
+msgid "Mongolian"
+msgstr "Mongolų kalba"
+
+msgid "Bokmål Norwegian"
+msgstr "Norvegų kalba (Bokmål)"
+
+msgid "Nepali"
+msgstr "Nepalų kalba"
+
+msgid "Dutch, Flemish"
+msgstr "Olandų, flamandų kalba"
+
+msgid "Norwegian Nynorsk"
+msgstr "Norvegų kalba (nynorsk)"
+
+msgid "Occitan"
+msgstr "Oksitanų kalba"
+
+msgid "Punjabi"
+msgstr "Pandžabų kalba"
+
+msgid "Polish"
+msgstr "Lenkų kalba"
+
+msgid "Portuguese"
+msgstr "Portugalų kalba"
+
+msgid "Portuguese-Brazil"
+msgstr "Brazilų portugalų kalba"
+
+msgid "Pashto"
+msgstr "Puštūnų kalba"
+
+msgid "Romanian"
+msgstr "Rumunų kalba"
+
+msgid "Russian"
+msgstr "Rusų kalba"
+
+msgid "Slovak"
+msgstr "Slovakų kalba"
+
+msgid "Slovenian"
+msgstr "Slovėnų kalba"
+
+msgid "Albanian"
+msgstr "Albanų kalba"
+
+msgid "Serbian"
+msgstr "Serbų kalba"
+
+msgid "Sinhala"
+msgstr "Sinhalų kalba"
+
+msgid "Swedish"
+msgstr "Švedų kalba"
+
+msgid "Tamil"
+msgstr "Tamilų kalba"
+
+msgid "Telugu"
+msgstr "Telugu kalba"
+
+msgid "Thai"
+msgstr "Tajų kalba"
+
+msgid "Turkish"
+msgstr "Turkų kalba"
+
+msgid "Urdu"
+msgstr "Urdu kalba"
+
+msgid "Vietnamese"
+msgstr "Vietnamiečių kalba"
+
+msgid "T.M.Thanh and the Gnome-Vi Team"
+msgstr "T.M. Thanh ir Gnome-Vi komanda"
+
+msgid "Simplified Chinese"
+msgstr "Supaprastinta kinų kalba"
+
+msgid "Hong Kong Chinese"
+msgstr "Hongkongo kinų kalba"
+
+msgid "Traditional Chinese"
+msgstr "Tradicinė kinų kalba"
+
+msgid "Amharic"
+msgstr "Amharų kalba"
+
+#, c-format
+msgid "About %s"
+msgstr "Apie %s"
+
+#, c-format
+msgid ""
+"%s is a graphical modular messaging client based on libpurple which is "
+"capable of connecting to AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC, SIP/SIMPLE, "
+"Novell GroupWise, Lotus Sametime, Bonjour, Zephyr, MySpaceIM, Gadu-Gadu, and "
+"QQ all at once. It is written using GTK+.<BR><BR>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."
+"<BR><BR>"
+msgstr ""
+"%s yra grafine modulinė pokalbių programa libpurple pagrindu, su kuria "
+"galima bendrauti AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC, SIP/SIMPLE, Novell "
+"GroupWise, Lotus Sametime, Bonjour, Zephyr, MySpaceIM, Gadu-Gadu ir QQ "
+"tinkluose – visuose vienu metu. Programa parašyta naudojant GTK+."
+"<br><br>Jūs galite keisti ir platinti šią programą GPL (2-os ar vėlesnės "
+"versijos) sąlygomis. GPL kopija yra faile „COPYING“, platinamame kartu su %"
+"s. %s autorinės teisės priklauso programos autoriams. Faile „COPYRIGHT“ "
+"pateiktas pilnas autorių sąrašas. Mes neteikiame jokios garantijos šiai "
+"programai.<br><br>"
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+"<FONT SIZE=\"4\">DUK:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+"<FONT SIZE=\"4\">Pagalba el. paštu:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr ""
+"<FONT SIZE=\"4\">IRC kanalas:</FONT> #pidgin serveryje irc.freenode."
+"net<BR><BR>"
+
+#, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
+msgstr "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
+
+msgid "Current Developers"
+msgstr "Dabartiniai kūrėjai"
+
+msgid "Crazy Patch Writers"
+msgstr "Pakvaišę pataisų rašytojai"
+
+msgid "Retired Developers"
+msgstr "Buvę kūrėjai"
+
+msgid "Retired Crazy Patch Writers"
+msgstr "Atsistadydinę pakvaišę pataisų rašytojai"
+
+msgid "Current Translators"
+msgstr "Dabartiniai vertėjai"
+
+msgid "Past Translators"
+msgstr "Buvę vertėjai"
+
+msgid "Debugging Information"
+msgstr "Derinimo informacija"
+
+msgid "_Name"
+msgstr "_Vardas"
+
+msgid "_Account"
+msgstr "_Paskyra"
+
+msgid "Get User Info"
+msgstr "Gauti vartotojo informaciją"
+
+msgid ""
+"Please enter the username or alias of the person whose info you would like "
+"to view."
+msgstr ""
+"Įveskite naudotojo vardą arba alternatyvųjį vardą asmens, kurio informaciją "
+"Jūs norite pažiūrėti."
+
+msgid "View User Log"
+msgstr "Žiūrėti vartotojo žurnalą"
+
+msgid "Alias Contact"
+msgstr "Alternatyvusis kontakto vardas"
+
+msgid "Enter an alias for this contact."
+msgstr "Įveskite alternatyvųjį vardą šiam kontaktui."
+
+#, c-format
+msgid "Enter an alias for %s."
+msgstr "Įveskite alternatyvųjį vardą vartotojui %s."
+
+msgid "Alias Buddy"
+msgstr "Alternatyvusis bičiulio vardas"
+
+msgid "Alias Chat"
+msgstr "Alternatyvusis pokalbių kambario vardas"
+
+msgid "Enter an alias for this chat."
+msgstr "Įveskite alternatyvųjį vardą šiam pokalbių kambariui."
+
+#, 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] ""
+"Jūs ruošiates pašalinti konktaktą su %s ir turintį dar %d kitą šio bičiulio "
+"paskyrą iš Jūsų bičiulių sąrašo. Ar norite tęsti?"
+msgstr[1] ""
+"Jūs ruošiates pašalinti konktaktą su %s ir turintį dar %d kitas bičiulio "
+"paskyras iš Jūsų bičiulių sąrašo. Ar norite tęsti?"
+msgstr[2] ""
+"Jūs ruošiatės pašalinti kontaktą su %s ir turintį dar %d kitų bičiulio "
+"paskyrų iš Jūsų bičiulių sąrašo. Ar norite tęsti?"
+
+msgid "Remove Contact"
+msgstr "Pašalinti kontaktą"
+
+msgid "_Remove Contact"
+msgstr "_Pašalinti kontaktą"
+
+#, c-format
+msgid ""
+"You are about to merge the group called %s into the group called %s. Do you "
+"want to continue?"
+msgstr "Jūs ruošiates grupę %s prijungti prie grupės %s. Ar norite tęsti?"
+
+msgid "Merge Groups"
+msgstr "Sujungti grupes"
+
+msgid "_Merge Groups"
+msgstr "_Sujungti grupes"
+
+#, 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 ""
+"Jūs ruošiates pašalinti grupę %s ir visus jos narius iš Jūsų bičiulių "
+"sąrašo. Ar norite tęsti?"
+
+msgid "Remove Group"
+msgstr "Pašalinti grupę"
+
+msgid "_Remove Group"
+msgstr "_Pašalinti grupę"
+
+#, c-format
+msgid ""
+"You are about to remove %s from your buddy list. Do you want to continue?"
+msgstr "Jūs ruošiates pašalinti %s iš Jūsų bičiulių sąrašo. Ar norite tęsti?"
+
+msgid "Remove Buddy"
+msgstr "Pašalinti bičiulį"
+
+msgid "_Remove Buddy"
+msgstr "_Pašalinti bičiulį"
+
+#, c-format
+msgid ""
+"You are about to remove the chat %s from your buddy list. Do you want to "
+"continue?"
+msgstr ""
+"Jūs ruošiates pašalinti pokalbių kambarį %s iš Jūsų bičiulių sąrašo. Ar "
+"norite tęsti?"
+
+msgid "Remove Chat"
+msgstr "Pašalinti pokalbių kambarį"
+
+msgid "_Remove Chat"
+msgstr "_Pašalinti pokalbių kambarį"
+
+msgid "Right-click for more unread messages...\n"
+msgstr ""
+"Spustelėkite dešinį pelės mygtuką, kad pamatytumėte kitas neperskaitytas "
+"žinutes...\n"
+
+msgid "_Change Status"
+msgstr "_Keisti būseną"
+
+msgid "Show Buddy _List"
+msgstr "_Rodyti bičiulių sąrašą"
+
+msgid "_Unread Messages"
+msgstr "_Neperskaitytos žinutės"
+
+msgid "New _Message..."
+msgstr "Nauja _žinutė..."
+
+msgid "_Accounts"
+msgstr "_Paskyros"
+
+msgid "Plu_gins"
+msgstr "P_apildiniai"
+
+msgid "Pr_eferences"
+msgstr "N_uostatos"
+
+msgid "Mute _Sounds"
+msgstr "_Išjungti garsus"
+
+msgid "_Blink on New Message"
+msgstr "_Mirksėti gavus naują žinutę"
+
+msgid "_Quit"
+msgstr "I_šeiti"
+
+msgid "Not started"
+msgstr "Nepradėta"
+
+msgid "<b>Receiving As:</b>"
+msgstr "<b>Gaunama kaip:</b>"
+
+msgid "<b>Receiving From:</b>"
+msgstr "<b>Gaunama iš:</b>"
+
+msgid "<b>Sending To:</b>"
+msgstr "<b>Siunčiama kam:</b>"
+
+msgid "<b>Sending As:</b>"
+msgstr "<b>Siunčiama kaip:</b>"
+
+msgid "There is no application configured to open this type of file."
+msgstr "Jokia programa nėra sukonfigūruota atverti šio tipo failą."
+
+msgid "An error occurred while opening the file."
+msgstr "Failo atvėrimo metu įvyko klaida."
+
+#, c-format
+msgid "Error launching %s: %s"
+msgstr "Programos %s paleidimo klaida: %s"
+
+#, c-format
+msgid "Error running %s"
+msgstr "Programos %s vykdymo klaida"
+
+#, c-format
+msgid "Process returned error code %d"
+msgstr "Procesas grąžino klaidos kodą %d"
+
+msgid "Filename:"
+msgstr "Failo pavadinimas:"
+
+msgid "Local File:"
+msgstr "Vietinis failas:"
+
+msgid "Speed:"
+msgstr "Greitis:"
+
+msgid "Time Elapsed:"
+msgstr "Praėjo laiko:"
+
+msgid "Time Remaining:"
+msgstr "Liko laiko:"
+
+msgid "Close this window when all transfers _finish"
+msgstr "_Uždaryti ši langą pasibaigus visiems failų perdavimams"
+
+msgid "C_lear finished transfers"
+msgstr "_Pašalinti pabaigtus perdavimus"
+
+#. "Download Details" arrow
+msgid "File transfer _details"
+msgstr "_Informacija apie perdavimą"
+
# Pause button
-#. Pause button
-msgid "_Pause"
-msgstr "_Sustabdyti"
-
+#. Pause button
+msgid "_Pause"
+msgstr "_Sustabdyti"
+
# Resume button
-#. Resume button
-msgid "_Resume"
-msgstr "_Tęsti"
-
-msgid "Paste as Plain _Text"
-msgstr "Įdėti kaip gryną _tekstą"
-
-msgid "_Reset formatting"
-msgstr "Atstatyti fo_rmato taikymą"
-
-msgid "Disable _smileys in selected text"
-msgstr "Pa_sirinktame tekste išjungti šypsenėles"
-
-msgid "Hyperlink color"
-msgstr "Hipersaito spalva"
-
-msgid "Color to draw hyperlinks."
-msgstr "Spalva hipersaitų vaizdavimui."
-
-msgid "Hyperlink visited color"
-msgstr "Aplankyto hipersaito spalva"
-
-msgid "Color to draw hyperlinks after it has been visited (or activated)."
-msgstr "Aplankyto ar aktyvuoto hipersaito spalva."
-
-msgid "Hyperlink prelight color"
-msgstr "Hipersaito paryškinimo spalva"
-
-msgid "Color to draw hyperlinks when mouse is over them."
-msgstr "Hipersaito spalva, kai virš jo yra pelės žymeklis."
-
-msgid "Sent Message Name Color"
-msgstr "Vardo spalva išsiunčiamose žinutėse"
-
-msgid "Color to draw the name of a message you sent."
-msgstr "Spalva vardui išsiunčiamoje žinutėje."
-
-msgid "Received Message Name Color"
-msgstr "Vardo spalva gaunamose žinutėse"
-
-msgid "Color to draw the name of a message you received."
-msgstr "Spalva vardui gaunamoje žinutėje."
-
-msgid "\"Attention\" Name Color"
-msgstr "Vardo spalva „dėmesio“ žinutėse"
-
-msgid "Color to draw the name of a message you received containing your name."
-msgstr "Spalva vardui gaunamoje žinutėje, kurioje minimas jūsų vardas."
-
-msgid "Action Message Name Color"
-msgstr "Vardo spalva veiksmo žinutėse"
-
-msgid "Color to draw the name of an action message."
-msgstr "Spalva vardui veiksmo žinutėje."
-
-msgid "Action Message Name Color for Whispered Message"
-msgstr "Veiksmo žinutės vardo spalva pašnibždėtoms žinutėms"
-
-msgid "Whisper Message Name Color"
-msgstr "Vardo spalva pašnibždėtose žinutėse"
-
+#. Resume button
+msgid "_Resume"
+msgstr "_Tęsti"
+
+msgid "Paste as Plain _Text"
+msgstr "Įdėti kaip gryną _tekstą"
+
+msgid "_Reset formatting"
+msgstr "Atstatyti fo_rmato taikymą"
+
+msgid "Disable _smileys in selected text"
+msgstr "Pa_sirinktame tekste išjungti šypsenėles"
+
+msgid "Hyperlink color"
+msgstr "Hipersaito spalva"
+
+msgid "Color to draw hyperlinks."
+msgstr "Spalva hipersaitų vaizdavimui."
+
+msgid "Hyperlink visited color"
+msgstr "Aplankyto hipersaito spalva"
+
+msgid "Color to draw hyperlinks after it has been visited (or activated)."
+msgstr "Aplankyto ar aktyvuoto hipersaito spalva."
+
+msgid "Hyperlink prelight color"
+msgstr "Hipersaito paryškinimo spalva"
+
+msgid "Color to draw hyperlinks when mouse is over them."
+msgstr "Hipersaito spalva, kai virš jo yra pelės žymeklis."
+
+msgid "Sent Message Name Color"
+msgstr "Vardo spalva išsiunčiamose žinutėse"
+
+msgid "Color to draw the name of a message you sent."
+msgstr "Spalva vardui išsiunčiamoje žinutėje."
+
+msgid "Received Message Name Color"
+msgstr "Vardo spalva gaunamose žinutėse"
+
+msgid "Color to draw the name of a message you received."
+msgstr "Spalva vardui gaunamoje žinutėje."
+
+msgid "\"Attention\" Name Color"
+msgstr "Vardo spalva „dėmesio“ žinutėse"
+
+msgid "Color to draw the name of a message you received containing your name."
+msgstr "Spalva vardui gaunamoje žinutėje, kurioje minimas jūsų vardas."
+
+msgid "Action Message Name Color"
+msgstr "Vardo spalva veiksmo žinutėse"
+
+msgid "Color to draw the name of an action message."
+msgstr "Spalva vardui veiksmo žinutėje."
+
+msgid "Action Message Name Color for Whispered Message"
+msgstr "Veiksmo žinutės vardo spalva pašnibždėtoms žinutėms"
+
+msgid "Whisper Message Name Color"
+msgstr "Vardo spalva pašnibždėtose žinutėse"
+
# ---------- "Notification Removals" ----------
-msgid "Typing notification color"
-msgstr "Pranešimo apie pašnekovo renkamą žinutę spalva"
-
-msgid "The color to use for the typing notification font"
-msgstr "Spalva pranešimui apie pašnekovo renkamą žinutę"
-
-msgid "Typing notification font"
-msgstr "Pranešimo apie pašnekovo renkamą žinutę šriftas"
-
-msgid "The font to use for the typing notification"
-msgstr "Šriftas pranešimui apie pašnekovo renkamą žinutę"
-
-msgid "Enable typing notification"
-msgstr "Rodyti pranešimus apie pašnekovų renkamas žinutes"
-
-msgid "_Copy Email Address"
-msgstr "Kopijuoti _el. pašto adresą"
-
-msgid "_Open Link in Browser"
-msgstr "_Atverti saitą naršyklėje"
-
-msgid "_Copy Link Location"
-msgstr "Kopijuoti _saito adresą"
-
-msgid ""
-"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
-"\n"
-"Defaulting to PNG."
-msgstr ""
-"<span size='larger' weigth='bold'>Neatpažintas failo tipas</span>\n"
-"\n"
-"Laikyti, kad failas yra PNG tipo."
-
-msgid ""
-"Unrecognized file type\n"
-"\n"
-"Defaulting to PNG."
-msgstr ""
-"Neatpažintas failo tipas\n"
-"\n"
-"Naudojamas numatytasis tipas PNG."
-
-#, c-format
-msgid ""
-"<span size='larger' weight='bold'>Error saving image</span>\n"
-"\n"
-"%s"
-msgstr ""
-"<span size='larger' weight='bold'>Vaizdo įrašymo klaida</span>\n"
-"\n"
-"%s"
-
-#, c-format
-msgid ""
-"Error saving image\n"
-"\n"
-"%s"
-msgstr ""
-"Vaizdo įrašymo klaida\n"
-"\n"
-"%s"
-
-msgid "Save Image"
-msgstr "Įrašyti vaizdą"
-
-#, c-format
-msgid "_Save Image..."
-msgstr "Įrašyti vai_zdą..."
-
-#, c-format
-msgid "_Add Custom Smiley..."
-msgstr "_Pridėti tinkintą šypsenėlę"
-
-msgid "Select Font"
-msgstr "Pasirinkti šriftą"
-
-msgid "Select Text Color"
-msgstr "Pasirinkti teksto spalvą"
-
-msgid "Select Background Color"
-msgstr "Pasirinkti fono spalvą"
-
-msgid "_URL"
-msgstr "_URL"
-
-msgid "_Description"
-msgstr "_Aprašymas"
-
-msgid ""
-"Please enter the URL and description of the link that you want to insert. "
-"The description is optional."
-msgstr ""
-"Prašome įvesti norimo įterpti saito URL ir aprašymą. Aprašymas nėra būtinas."
-
-msgid "Please enter the URL of the link that you want to insert."
-msgstr "Prašome įvesti norimo įterpti saito URL."
-
-msgid "Insert Link"
-msgstr "Įterpti saitą"
-
-msgid "_Insert"
-msgstr "_Įterpti"
-
-#, c-format
-msgid "Failed to store image: %s\n"
-msgstr "Nepavyko išsaugoti vaizdo: %s\n"
-
-msgid "Insert Image"
-msgstr "Įterpti vaizdą"
-
-#, c-format
-msgid ""
-"This smiley is disabled because a custom smiley exists for this shortcut:\n"
-" %s"
-msgstr ""
-"Ši šypsenėlė yra išjungta, nes šiai klavišų sekai jau yra tinkinta "
-"šypsenelė:\n"
-"%s"
-
+msgid "Typing notification color"
+msgstr "Pranešimo apie pašnekovo renkamą žinutę spalva"
+
+msgid "The color to use for the typing notification font"
+msgstr "Spalva pranešimui apie pašnekovo renkamą žinutę"
+
+msgid "Typing notification font"
+msgstr "Pranešimo apie pašnekovo renkamą žinutę šriftas"
+
+msgid "The font to use for the typing notification"
+msgstr "Šriftas pranešimui apie pašnekovo renkamą žinutę"
+
+msgid "Enable typing notification"
+msgstr "Rodyti pranešimus apie pašnekovų renkamas žinutes"
+
+msgid ""
+"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
+"\n"
+"Defaulting to PNG."
+msgstr ""
+"<span size='larger' weigth='bold'>Neatpažintas failo tipas</span>\n"
+"\n"
+"Laikyti, kad failas yra PNG tipo."
+
+msgid ""
+"Unrecognized file type\n"
+"\n"
+"Defaulting to PNG."
+msgstr ""
+"Neatpažintas failo tipas\n"
+"\n"
+"Naudojamas numatytasis tipas PNG."
+
+#, c-format
+msgid ""
+"<span size='larger' weight='bold'>Error saving image</span>\n"
+"\n"
+"%s"
+msgstr ""
+"<span size='larger' weight='bold'>Vaizdo įrašymo klaida</span>\n"
+"\n"
+"%s"
+
+#, c-format
+msgid ""
+"Error saving image\n"
+"\n"
+"%s"
+msgstr ""
+"Vaizdo įrašymo klaida\n"
+"\n"
+"%s"
+
+msgid "Save Image"
+msgstr "Įrašyti vaizdą"
+
+#, c-format
+msgid "_Save Image..."
+msgstr "Įrašyti vai_zdą..."
+
+#, c-format
+msgid "_Add Custom Smiley..."
+msgstr "_Pridėti tinkintą šypsenėlę"
+
+msgid "Select Font"
+msgstr "Pasirinkti šriftą"
+
+msgid "Select Text Color"
+msgstr "Pasirinkti teksto spalvą"
+
+msgid "Select Background Color"
+msgstr "Pasirinkti fono spalvą"
+
+msgid "_URL"
+msgstr "_URL"
+
+msgid "_Description"
+msgstr "_Aprašymas"
+
+msgid ""
+"Please enter the URL and description of the link that you want to insert. "
+"The description is optional."
+msgstr ""
+"Prašome įvesti norimo įterpti saito URL ir aprašymą. Aprašymas nėra būtinas."
+
+msgid "Please enter the URL of the link that you want to insert."
+msgstr "Prašome įvesti norimo įterpti saito URL."
+
+msgid "Insert Link"
+msgstr "Įterpti saitą"
+
+msgid "_Insert"
+msgstr "_Įterpti"
+
+#, c-format
+msgid "Failed to store image: %s\n"
+msgstr "Nepavyko išsaugoti vaizdo: %s\n"
+
+msgid "Insert Image"
+msgstr "Įterpti vaizdą"
+
+#, c-format
+msgid ""
+"This smiley is disabled because a custom smiley exists for this shortcut:\n"
+" %s"
+msgstr ""
+"Ši šypsenėlė yra išjungta, nes šiai klavišų sekai jau yra tinkinta "
+"šypsenelė:\n"
+"%s"
+
# show everything
-msgid "Smile!"
-msgstr "Šypsokis!"
-
-msgid "_Manage custom smileys"
-msgstr "_Tvarkyti tinkintas šypsenėles"
-
-msgid "This theme has no available smileys."
-msgstr "Šis apipavidalinimas neturi šypsenėlių."
-
-msgid "_Font"
-msgstr "_Šriftas"
-
-msgid "Group Items"
-msgstr "Grupuoti elementus"
-
-msgid "Ungroup Items"
-msgstr "Negrupuoti elementų"
-
-msgid "Bold"
-msgstr "Pusjuodis"
-
-msgid "Italic"
-msgstr "Kursyvas"
-
-msgid "Underline"
-msgstr "Pabraukimas"
-
-msgid "Strikethrough"
-msgstr "Perbraukimas"
-
-msgid "Increase Font Size"
-msgstr "Padidinti šriftą"
-
-msgid "Decrease Font Size"
-msgstr "Sumažinti šriftą"
-
-msgid "Font Face"
-msgstr "Šrifto garnitūras"
-
-msgid "Background Color"
-msgstr "Fono spalva"
-
-msgid "Foreground Color"
-msgstr "Šrifto spalva"
-
-msgid "Reset Formatting"
-msgstr "Atstatyti formato taikymą"
-
-msgid "Insert IM Image"
-msgstr "Įterpti vaizdą"
-
-msgid "Insert Smiley"
-msgstr "Įterpti šypsenėlę"
-
-msgid "<b>_Bold</b>"
-msgstr "<b>_Pusjuodis</b>"
-
-msgid "<i>_Italic</i>"
-msgstr "<i>_Kursyvas</i>"
-
-msgid "<u>_Underline</u>"
-msgstr "<u>P_abraukimas</u>"
-
-msgid "<span strikethrough='true'>Strikethrough</span>"
-msgstr "<span strikethrough='true'>Perbraukimas</span>"
-
-msgid "<span size='larger'>_Larger</span>"
-msgstr "<span size='larger'>_Didesnis</span>"
-
-msgid "_Normal"
-msgstr "_Normalus"
-
-msgid "<span size='smaller'>_Smaller</span>"
-msgstr "<span size='smaller'>_Mažesnis</span>"
-
-#. If we want to show the formatting for the following items, we would
-#. * need to update them when formatting changes. The above items don't need
-#. * no updating nor nothin'
-msgid "_Font face"
-msgstr "_Šrifto garnitūras"
-
-msgid "Foreground _color"
-msgstr "Š_rifto spalva"
-
-msgid "Bac_kground color"
-msgstr "_Fono spalva"
-
-msgid "_Image"
-msgstr "_paveiksliuką"
-
-msgid "_Link"
-msgstr "_nuorodą"
-
-msgid "_Horizontal rule"
-msgstr "_Horizontali linija"
-
+msgid "Smile!"
+msgstr "Šypsokis!"
+
+msgid "_Manage custom smileys"
+msgstr "_Tvarkyti tinkintas šypsenėles"
+
+msgid "This theme has no available smileys."
+msgstr "Šis apipavidalinimas neturi šypsenėlių."
+
+msgid "_Font"
+msgstr "_Šriftas"
+
+msgid "Group Items"
+msgstr "Grupuoti elementus"
+
+msgid "Ungroup Items"
+msgstr "Negrupuoti elementų"
+
+msgid "Bold"
+msgstr "Pusjuodis"
+
+msgid "Italic"
+msgstr "Kursyvas"
+
+msgid "Underline"
+msgstr "Pabraukimas"
+
+msgid "Strikethrough"
+msgstr "Perbraukimas"
+
+msgid "Increase Font Size"
+msgstr "Padidinti šriftą"
+
+msgid "Decrease Font Size"
+msgstr "Sumažinti šriftą"
+
+msgid "Font Face"
+msgstr "Šrifto garnitūras"
+
+msgid "Background Color"
+msgstr "Fono spalva"
+
+msgid "Foreground Color"
+msgstr "Šrifto spalva"
+
+msgid "Reset Formatting"
+msgstr "Atstatyti formato taikymą"
+
+msgid "Insert IM Image"
+msgstr "Įterpti vaizdą"
+
+msgid "Insert Smiley"
+msgstr "Įterpti šypsenėlę"
+
+msgid "<b>_Bold</b>"
+msgstr "<b>_Pusjuodis</b>"
+
+msgid "<i>_Italic</i>"
+msgstr "<i>_Kursyvas</i>"
+
+msgid "<u>_Underline</u>"
+msgstr "<u>P_abraukimas</u>"
+
+msgid "<span strikethrough='true'>Strikethrough</span>"
+msgstr "<span strikethrough='true'>Perbraukimas</span>"
+
+msgid "<span size='larger'>_Larger</span>"
+msgstr "<span size='larger'>_Didesnis</span>"
+
+msgid "_Normal"
+msgstr "_Normalus"
+
+msgid "<span size='smaller'>_Smaller</span>"
+msgstr "<span size='smaller'>_Mažesnis</span>"
+
+#. If we want to show the formatting for the following items, we would
+#. * need to update them when formatting changes. The above items don't need
+#. * no updating nor nothin'
+msgid "_Font face"
+msgstr "_Šrifto garnitūras"
+
+msgid "Foreground _color"
+msgstr "Š_rifto spalva"
+
+msgid "Bac_kground color"
+msgstr "_Fono spalva"
+
+msgid "_Image"
+msgstr "_paveiksliuką"
+
+msgid "_Link"
+msgstr "_nuorodą"
+
+msgid "_Horizontal rule"
+msgstr "_Horizontali linija"
+
# show everything
-msgid "_Smile!"
-msgstr "_Šypsokitės!"
-
-msgid "Log Deletion Failed"
-msgstr "Žurnalo pašalinimas nepavyko"
-
-msgid "Check permissions and try again."
-msgstr "Patikrinkite teises ir bandykite iš naujo."
-
-#, c-format
-msgid ""
-"Are you sure you want to permanently delete the log of the conversation with "
-"%s which started at %s?"
-msgstr ""
-"Ar tikrai norite negrįžtamai ištrinti pokalbių su %s žurnalą, pradėtą %s?"
-
-#, c-format
-msgid ""
-"Are you sure you want to permanently delete the log of the conversation in %"
-"s which started at %s?"
-msgstr "Ar tikrai norite negrįžtamai ištrinti pokalbių %s žurnalą, pradėtą %s?"
-
-#, c-format
-msgid ""
-"Are you sure you want to permanently delete the system log which started at %"
-"s?"
-msgstr "Ar tikrai norite negrįžtamai ištrinti sistemos žurnalą, pradėtą %s?"
-
-msgid "Delete Log?"
-msgstr "Ar pašalinti žurnalą?"
-
-msgid "Delete Log..."
-msgstr "Pašalinti žurnalą..."
-
-#, c-format
-msgid "<span size='larger' weight='bold'>Conversation in %s on %s</span>"
-msgstr "<span size='larger' weight='bold'>Pokalbis kambaryje %s (%s)</span>"
-
-#, c-format
-msgid "<span size='larger' weight='bold'>Conversation with %s on %s</span>"
-msgstr "<span size='larger' weight='bold'>Pokalbis su %s (%s)</span>"
-
-#. Steal the "HELP" response and use it to trigger browsing to the logs folder
-msgid "_Browse logs folder"
-msgstr "_Naršyti žurnalų aplanką"
-
-#, c-format
-msgid "%s %s. Try `%s -h' for more information.\n"
-msgstr "%s %s. Daugiau informacijos suteikia komanda „%s -h“.\n"
-
-#, c-format
-msgid ""
-"%s %s\n"
-"Usage: %s [OPTION]...\n"
-"\n"
-" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
-" -h, --help display this help and exit\n"
-" -m, --multiple do not ensure single instance\n"
-" -n, --nologin don't automatically login\n"
-" -l, --login[=NAME] enable specified account(s) (optional argument NAME\n"
-" specifies account(s) to use, separated by commas.\n"
-" Without this only the first account will be enabled).\n"
-" --display=DISPLAY X display to use\n"
-" -v, --version display the current version and exit\n"
-msgstr ""
-"%s %s\n"
-"Vartojimas: %s [PARINKTIS]...\n"
-"\n"
-" -c, --config=KATALOGAS naudoti „KATALOGAS“ konfigūracinių failų paieškai\n"
-" -d, --debug išvesti derinimo pranešimus į standartinę išvestį\n"
-" -h, --help parodyti šią pagalbą ir baigti\n"
-" -m, --multiple netikrinti, ar vienu metu paleista tik viena "
-"kopija\n"
-" -n, --nologin neprisijungti automatiškai\n"
-" -l, --login[=VARDAS] prisijungti automatiškai (neprivalomas argumentas\n"
-" „VARDAS“ nurodo paskyrą ar kableliais atskirtas \n"
-" paskyras)\n"
-" --display=DISPLAY X displėjus naudojimui\n"
-" -v, --version parodyti šios programos versiją ir baigti\n"
-
-#, c-format
-msgid ""
-"%s %s\n"
-"Usage: %s [OPTION]...\n"
-"\n"
-" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
-" -h, --help display this help and exit\n"
-" -m, --multiple do not ensure single instance\n"
-" -n, --nologin don't automatically login\n"
-" -l, --login[=NAME] enable specified account(s) (optional argument NAME\n"
-" specifies account(s) to use, separated by commas.\n"
-" Without this only the first account will be enabled).\n"
-" -v, --version display the current version and exit\n"
-msgstr ""
-"%s %s\n"
-"Vartojimas: %s [PARINKTIS]...\n"
-"\n"
-" -c, --config=KATALOGAS naudoti „KATALOGAS“ konfigūracinių failų paieškai\n"
-" -d, --debug išvesti derinimo pranešimus į standartinę išvestį\n"
-" -h, --help parodyti šią pagalbą ir baigti\n"
-" -m, --multiple netikrinti, ar vienu metu paleista tik viena "
-"kopija\n"
-" -n, --nologin neprisijungti automatiškai\n"
-" -l, --login[=VARDAS] prisijungti automatiškai (neprivalomas argumentas\n"
-" „VARDAS“ nurodo paskyrą ar kableliais atskirtas \n"
-" paskyras.) Be šio argumento bus įjungta tik "
-"pirmoji\n"
-" paskyra.\n"
-" -v, --version parodyti šios programos versiją ir baigti\n"
-
-#, c-format
-msgid ""
-"%s %s has segfaulted and attempted to dump a core file.\n"
-"This is a bug in the software and has happened through\n"
-"no fault of your own.\n"
-"\n"
-"If you can reproduce the crash, please notify the developers\n"
-"by reporting a bug at:\n"
-"%ssimpleticket/\n"
-"\n"
-"Please make sure to specify what you were doing at the time\n"
-"and post the backtrace from the core file. If you do not know\n"
-"how to get the backtrace, please read the instructions at\n"
-"%swiki/GetABacktrace\n"
-msgstr ""
-"%s %s padarė segmentacijos klaidą ir pabandė išvesti atminties išklotinę.\n"
-"Tai yra programos riktas ir atsitiko be jokios Jūsų kaltės.\n"
-"\n"
-"Jeigu Jūs galite atkartoti šią klaidą, prašome informuoti kūrėjus apie "
-"klaidą\n"
-"adresu:\n"
-"%ssimpleticket/\n"
-"\n"
-"Įsitikinkite, kad nurodote, ką darėte, kai įvyko klaida, ir pridėkite \n"
-"programos steko išklotinę (angl. „backtrace“) iš atminties išklotinės \n"
-"failo. Jeigu nežinote, kaip gauti programos steko išklotinę, perskaitykite\n"
-"instrukcijas adresu %swiki/GetABacktrace\n"
-
-#. Translators may want to transliterate the name.
-#. It is not to be translated.
-msgid "Pidgin"
-msgstr "Pidgin"
-
-#, c-format
-msgid "Exiting because another libpurple client is already running.\n"
-msgstr "Programa uždaroma, nes jau yra paleistas kitas libpurple klientas.\n"
-
-msgid "Open All Messages"
-msgstr "Atidaryti visas žinutes"
-
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Jūs gavote laišką!</span>"
-
-#, c-format
-msgid "%s has %d new message."
-msgid_plural "%s has %d new messages."
-msgstr[0] "%s turi %d naują pranešimą."
-msgstr[1] "%s turi %d naujus pranešimus."
-msgstr[2] "%s turi %d naujų pranešimų."
-
-#, c-format
-msgid "<b>%d new email.</b>"
-msgid_plural "<b>%d new emails.</b>"
-msgstr[0] "<b>%d naujas laiškas.</b>"
-msgstr[1] "<b>%d nauji laiškai.</b>"
-msgstr[2] "<b>%d naujų laiškų.</b>"
-
-#, c-format
-msgid "The browser command \"%s\" is invalid."
-msgstr "Neteisinga naršyklės komanda „%s“."
-
-msgid "Unable to open URL"
-msgstr "Negalima atverti URL"
-
-#, c-format
-msgid "Error launching \"%s\": %s"
-msgstr "Programos „%s“ paleidimo klaida: %s"
-
-msgid ""
-"The 'Manual' browser command has been chosen, but no command has been set."
-msgstr "Pasirinkta 'Rankinė' naršyklės komanda, tačiau komanda nenustatyta."
-
-msgid "The following plugins will be unloaded."
-msgstr "Šie papildiniai bus iškelti."
-
-msgid "Multiple plugins will be unloaded."
-msgstr "Keletas papildinių bus iškelta."
-
-msgid "Unload Plugins"
-msgstr "Iškelti papildinius"
-
-msgid "Could not unload plugin"
-msgstr "Nepavyko iškelti papildinio"
-
-msgid ""
-"The plugin could not be unloaded now, but will be disabled at the next "
-"startup."
-msgstr ""
-"Šiuo metu papildinio iškelti nepavyko, bet jis bus išjungtas sekančio Pidgin "
-"paleidimo metu."
-
-#, c-format
-msgid ""
-"<span foreground=\"red\" weight=\"bold\">Error: %s\n"
-"Check the plugin website for an update.</span>"
-msgstr ""
-"<span foreground=\"red\" weight=\"bold\">Klaida: %s\n"
-"Patikrinkite, ar papildinio internetinėje svetainėje nėra atnaujinimo.</span>"
-
-msgid "Author"
-msgstr "Autorius"
-
-msgid "<b>Written by:</b>"
-msgstr "<b>Parašė:</b>"
-
-msgid "<b>Web site:</b>"
-msgstr "<b>Internetinis puslapis:</b>"
-
-msgid "<b>Filename:</b>"
-msgstr "<b>Failo vardas:</b>"
-
-msgid "Configure Pl_ugin"
-msgstr "Konfigūr_uoti papildinį"
-
-msgid "<b>Plugin Details</b>"
-msgstr "<b>Informacija apie papildinį</b>"
-
-msgid "Select a file"
-msgstr "Pasirinkite failą"
-
+msgid "_Smile!"
+msgstr "_Šypsokitės!"
+
+msgid "Log Deletion Failed"
+msgstr "Žurnalo pašalinimas nepavyko"
+
+msgid "Check permissions and try again."
+msgstr "Patikrinkite teises ir bandykite iš naujo."
+
+#, c-format
+msgid ""
+"Are you sure you want to permanently delete the log of the conversation with "
+"%s which started at %s?"
+msgstr ""
+"Ar tikrai norite negrįžtamai ištrinti pokalbių su %s žurnalą, pradėtą %s?"
+
+#, c-format
+msgid ""
+"Are you sure you want to permanently delete the log of the conversation in %"
+"s which started at %s?"
+msgstr "Ar tikrai norite negrįžtamai ištrinti pokalbių %s žurnalą, pradėtą %s?"
+
+#, c-format
+msgid ""
+"Are you sure you want to permanently delete the system log which started at %"
+"s?"
+msgstr "Ar tikrai norite negrįžtamai ištrinti sistemos žurnalą, pradėtą %s?"
+
+msgid "Delete Log?"
+msgstr "Ar pašalinti žurnalą?"
+
+msgid "Delete Log..."
+msgstr "Pašalinti žurnalą..."
+
+#, c-format
+msgid "<span size='larger' weight='bold'>Conversation in %s on %s</span>"
+msgstr "<span size='larger' weight='bold'>Pokalbis kambaryje %s (%s)</span>"
+
+#, c-format
+msgid "<span size='larger' weight='bold'>Conversation with %s on %s</span>"
+msgstr "<span size='larger' weight='bold'>Pokalbis su %s (%s)</span>"
+
+#. Steal the "HELP" response and use it to trigger browsing to the logs folder
+msgid "_Browse logs folder"
+msgstr "_Naršyti žurnalų aplanką"
+
+#, c-format
+msgid "%s %s. Try `%s -h' for more information.\n"
+msgstr "%s %s. Daugiau informacijos suteikia komanda „%s -h“.\n"
+
+#, fuzzy, c-format
+msgid ""
+"%s %s\n"
+"Usage: %s [OPTION]...\n"
+"\n"
+" -c, --config=DIR use DIR for config files\n"
+" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
+" -h, --help display this help and exit\n"
+" -m, --multiple do not ensure single instance\n"
+" -n, --nologin don't automatically login\n"
+" -l, --login[=NAME] enable specified account(s) (optional argument NAME\n"
+" specifies account(s) to use, separated by commas.\n"
+" Without this only the first account will be enabled).\n"
+" --display=DISPLAY X display to use\n"
+" -v, --version display the current version and exit\n"
+msgstr ""
+"%s %s\n"
+"Vartojimas: %s [PARINKTIS]...\n"
+"\n"
+" -c, --config=KATALOGAS naudoti „KATALOGAS“ konfigūracinių failų paieškai\n"
+" -d, --debug išvesti derinimo pranešimus į standartinę išvestį\n"
+" -h, --help parodyti šią pagalbą ir baigti\n"
+" -m, --multiple netikrinti, ar vienu metu paleista tik viena "
+"kopija\n"
+" -n, --nologin neprisijungti automatiškai\n"
+" -l, --login[=VARDAS] prisijungti automatiškai (neprivalomas argumentas\n"
+" „VARDAS“ nurodo paskyrą ar kableliais atskirtas \n"
+" paskyras)\n"
+" --display=DISPLAY X displėjus naudojimui\n"
+" -v, --version parodyti šios programos versiją ir baigti\n"
+
+#, fuzzy, c-format
+msgid ""
+"%s %s\n"
+"Usage: %s [OPTION]...\n"
+"\n"
+" -c, --config=DIR use DIR for config files\n"
+" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
+" -h, --help display this help and exit\n"
+" -m, --multiple do not ensure single instance\n"
+" -n, --nologin don't automatically login\n"
+" -l, --login[=NAME] enable specified account(s) (optional argument NAME\n"
+" specifies account(s) to use, separated by commas.\n"
+" Without this only the first account will be enabled).\n"
+" -v, --version display the current version and exit\n"
+msgstr ""
+"%s %s\n"
+"Vartojimas: %s [PARINKTIS]...\n"
+"\n"
+" -c, --config=KATALOGAS naudoti „KATALOGAS“ konfigūracinių failų paieškai\n"
+" -d, --debug išvesti derinimo pranešimus į standartinę išvestį\n"
+" -h, --help parodyti šią pagalbą ir baigti\n"
+" -m, --multiple netikrinti, ar vienu metu paleista tik viena "
+"kopija\n"
+" -n, --nologin neprisijungti automatiškai\n"
+" -l, --login[=VARDAS] prisijungti automatiškai (neprivalomas argumentas\n"
+" „VARDAS“ nurodo paskyrą ar kableliais atskirtas \n"
+" paskyras.) Be šio argumento bus įjungta tik "
+"pirmoji\n"
+" paskyra.\n"
+" -v, --version parodyti šios programos versiją ir baigti\n"
+
+#, c-format
+msgid ""
+"%s %s has segfaulted and attempted to dump a core file.\n"
+"This is a bug in the software and has happened through\n"
+"no fault of your own.\n"
+"\n"
+"If you can reproduce the crash, please notify the developers\n"
+"by reporting a bug at:\n"
+"%ssimpleticket/\n"
+"\n"
+"Please make sure to specify what you were doing at the time\n"
+"and post the backtrace from the core file. If you do not know\n"
+"how to get the backtrace, please read the instructions at\n"
+"%swiki/GetABacktrace\n"
+msgstr ""
+"%s %s padarė segmentacijos klaidą ir pabandė išvesti atminties išklotinę.\n"
+"Tai yra programos riktas ir atsitiko be jokios Jūsų kaltės.\n"
+"\n"
+"Jeigu Jūs galite atkartoti šią klaidą, prašome informuoti kūrėjus apie "
+"klaidą\n"
+"adresu:\n"
+"%ssimpleticket/\n"
+"\n"
+"Įsitikinkite, kad nurodote, ką darėte, kai įvyko klaida, ir pridėkite \n"
+"programos steko išklotinę (angl. „backtrace“) iš atminties išklotinės \n"
+"failo. Jeigu nežinote, kaip gauti programos steko išklotinę, perskaitykite\n"
+"instrukcijas adresu %swiki/GetABacktrace\n"
+
+#. Translators may want to transliterate the name.
+#. It is not to be translated.
+msgid "Pidgin"
+msgstr "Pidgin"
+
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr "Programa uždaroma, nes jau yra paleistas kitas libpurple klientas.\n"
+
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "Skaičiuojama..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s has %d new message."
+msgid_plural "%s has %d new messages."
+msgstr[0] "%s turi %d naują pranešimą."
+msgstr[1] "%s turi %d naujus pranešimus."
+msgstr[2] "%s turi %d naujų pranešimų."
+
+#, c-format
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
+msgstr[0] "<b>%d naujas laiškas.</b>"
+msgstr[1] "<b>%d nauji laiškai.</b>"
+msgstr[2] "<b>%d naujų laiškų.</b>"
+
+#, c-format
+msgid "The browser command \"%s\" is invalid."
+msgstr "Neteisinga naršyklės komanda „%s“."
+
+msgid "Unable to open URL"
+msgstr "Negalima atverti URL"
+
+#, c-format
+msgid "Error launching \"%s\": %s"
+msgstr "Programos „%s“ paleidimo klaida: %s"
+
+msgid ""
+"The 'Manual' browser command has been chosen, but no command has been set."
+msgstr "Pasirinkta 'Rankinė' naršyklės komanda, tačiau komanda nenustatyta."
+
+msgid "Open All Messages"
+msgstr "Atidaryti visas žinutes"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Jūs gavote laišką!</span>"
+
+# "New Buddy Pounce"
+#, fuzzy
+msgid "New Pounces"
+msgstr "Nauja reakcija į bičiulį"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Jūs gavote laišką!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "Nežinoma pranešimas"
+
+msgid "The following plugins will be unloaded."
+msgstr "Šie papildiniai bus iškelti."
+
+msgid "Multiple plugins will be unloaded."
+msgstr "Keletas papildinių bus iškelta."
+
+msgid "Unload Plugins"
+msgstr "Iškelti papildinius"
+
+msgid "Could not unload plugin"
+msgstr "Nepavyko iškelti papildinio"
+
+msgid ""
+"The plugin could not be unloaded now, but will be disabled at the next "
+"startup."
+msgstr ""
+"Šiuo metu papildinio iškelti nepavyko, bet jis bus išjungtas sekančio Pidgin "
+"paleidimo metu."
+
+#, c-format
+msgid ""
+"<span foreground=\"red\" weight=\"bold\">Error: %s\n"
+"Check the plugin website for an update.</span>"
+msgstr ""
+"<span foreground=\"red\" weight=\"bold\">Klaida: %s\n"
+"Patikrinkite, ar papildinio internetinėje svetainėje nėra atnaujinimo.</span>"
+
+msgid "Author"
+msgstr "Autorius"
+
+msgid "<b>Written by:</b>"
+msgstr "<b>Parašė:</b>"
+
+msgid "<b>Web site:</b>"
+msgstr "<b>Internetinis puslapis:</b>"
+
+msgid "<b>Filename:</b>"
+msgstr "<b>Failo vardas:</b>"
+
+msgid "Configure Pl_ugin"
+msgstr "Konfigūr_uoti papildinį"
+
+msgid "<b>Plugin Details</b>"
+msgstr "<b>Informacija apie papildinį</b>"
+
+msgid "Select a file"
+msgstr "Pasirinkite failą"
+
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Redaguoti reakciją į bičiulį"
+
# Create the "Pounce Who" frame.
-#. Create the "Pounce on Whom" frame.
-msgid "Pounce on Whom"
-msgstr "Į ką reaguoti"
-
-msgid "_Buddy name:"
-msgstr "_Bičiulio vardas:"
-
-msgid "Si_gns on"
-msgstr "pr_isijungia"
-
-msgid "Signs o_ff"
-msgstr "atsi_jungia"
-
-msgid "Goes a_way"
-msgstr "_pasitraukia"
-
-msgid "Ret_urns from away"
-msgstr "su_grįžta"
-
-msgid "Becomes _idle"
-msgstr "tampa neve_iklus"
-
-msgid "Is no longer i_dle"
-msgstr "ta_mpa veiklus"
-
-msgid "Starts _typing"
-msgstr "pradeda rašy_ti"
-
-msgid "P_auses while typing"
-msgstr "trumpam nustoja raš_yti"
-
-msgid "Stops t_yping"
-msgstr "nustoja raš_yti"
-
-msgid "Sends a _message"
-msgstr "i_šsiunčia žinutę"
-
-msgid "Ope_n an IM window"
-msgstr "Atidaryti pokalbių la_ngą"
-
-msgid "_Pop up a notification"
-msgstr "_Parodyti pranešimo langą"
-
-msgid "Send a _message"
-msgstr "Nusiųsti _žinutę"
-
-msgid "E_xecute a command"
-msgstr "_Įvykdyti komandą"
-
-msgid "P_lay a sound"
-msgstr "_Groti garsą"
-
-msgid "Brows_e..."
-msgstr "Nar_šyti...."
-
-msgid "Br_owse..."
-msgstr "_Naršyti...."
-
-msgid "Pre_view"
-msgstr "Pa_klausyti"
-
-msgid "P_ounce only when my status is not Available"
-msgstr "Reaguoti tik tada, kai aš es_u neprieinamoje būsenoje"
-
-msgid "_Recurring"
-msgstr "_Reakcija yra pasikartojanti"
-
+#. Create the "Pounce on Whom" frame.
+msgid "Pounce on Whom"
+msgstr "Į ką reaguoti"
+
+msgid "_Buddy name:"
+msgstr "_Bičiulio vardas:"
+
+msgid "Si_gns on"
+msgstr "pr_isijungia"
+
+msgid "Signs o_ff"
+msgstr "atsi_jungia"
+
+msgid "Goes a_way"
+msgstr "_pasitraukia"
+
+msgid "Ret_urns from away"
+msgstr "su_grįžta"
+
+msgid "Becomes _idle"
+msgstr "tampa neve_iklus"
+
+msgid "Is no longer i_dle"
+msgstr "ta_mpa veiklus"
+
+msgid "Starts _typing"
+msgstr "pradeda rašy_ti"
+
+msgid "P_auses while typing"
+msgstr "trumpam nustoja raš_yti"
+
+msgid "Stops t_yping"
+msgstr "nustoja raš_yti"
+
+msgid "Sends a _message"
+msgstr "i_šsiunčia žinutę"
+
+msgid "Ope_n an IM window"
+msgstr "Atidaryti pokalbių la_ngą"
+
+msgid "_Pop up a notification"
+msgstr "_Parodyti pranešimo langą"
+
+msgid "Send a _message"
+msgstr "Nusiųsti _žinutę"
+
+msgid "E_xecute a command"
+msgstr "_Įvykdyti komandą"
+
+msgid "P_lay a sound"
+msgstr "_Groti garsą"
+
+msgid "Brows_e..."
+msgstr "Nar_šyti...."
+
+msgid "Br_owse..."
+msgstr "_Naršyti...."
+
+msgid "Pre_view"
+msgstr "Pa_klausyti"
+
+msgid "P_ounce only when my status is not Available"
+msgstr "Reaguoti tik tada, kai aš es_u neprieinamoje būsenoje"
+
+msgid "_Recurring"
+msgstr "_Reakcija yra pasikartojanti"
+
# Create the "Pounce When" frame.
-msgid "Pounce Target"
-msgstr "Reakcija į"
-
-msgid "Smiley theme failed to unpack."
-msgstr "Nepavyko išpakuoti šypsenėlių apipavidalinimo failo."
-
-msgid "Install Theme"
-msgstr "Įdiegti apipavidalinimą"
-
-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 ""
-"Pasirinkite norimą naudoti šypsenėlių apipavidalinimą iš sąrašo žemiau. "
-"Nauji apipavidalinimai gali būti įdiegti nutempiant juos pele į "
-"apipavidalinimų sąrašą."
-
-msgid "Icon"
-msgstr "Piktograma"
-
-msgid "Keyboard Shortcuts"
-msgstr "Spartieji klavišai"
-
-msgid "Cl_ose conversations with the Escape key"
-msgstr "Uždaryti p_okalbius grįžimo („Escape“) klavišu"
-
+msgid "Pounce Target"
+msgstr "Reakcija į"
+
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "pradeda rašyti"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "trumpam nustoja rašyti"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "prisijungia"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s tapo veiklus (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "sugrįžta"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "Nustota rinkti tekstą"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "atsijungia"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "tampa neveiklus"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "kai pasitraukęs"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Nusiųsti žinutę"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "Nežinomas reakcijos veiksmas. Prašome apie tai pranešti!"
+
+msgid "Smiley theme failed to unpack."
+msgstr "Nepavyko išpakuoti šypsenėlių apipavidalinimo failo."
+
+msgid "Install Theme"
+msgstr "Įdiegti apipavidalinimą"
+
+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 ""
+"Pasirinkite norimą naudoti šypsenėlių apipavidalinimą iš sąrašo žemiau. "
+"Nauji apipavidalinimai gali būti įdiegti nutempiant juos pele į "
+"apipavidalinimų sąrašą."
+
+msgid "Icon"
+msgstr "Piktograma"
+
+msgid "Keyboard Shortcuts"
+msgstr "Spartieji klavišai"
+
+msgid "Cl_ose conversations with the Escape key"
+msgstr "Uždaryti p_okalbius grįžimo („Escape“) klavišu"
+
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Bičiulių sąrašas"
+
# *< api_version
# *< type
# *< ui_requirement
@@ -12602,9 +12750,10 @@ msgstr "Uždaryti p_okalbius grįžimo („Escape“) klavišu"
# *< dependencies
# *< priority
# *< id
-msgid "System Tray Icon"
-msgstr "Piktograma sistemos juostelėje"
-
+#. System Tray
+msgid "System Tray Icon"
+msgstr "Piktograma sistemos juostelėje"
+
# *< api_version
# *< type
# *< ui_requirement
@@ -12612,32 +12761,32 @@ msgstr "Piktograma sistemos juostelėje"
# *< dependencies
# *< priority
# *< id
-msgid "_Show system tray icon:"
-msgstr "_Rodyti piktogramą sistemos juostelėje:"
-
-msgid "On unread messages"
-msgstr "kai yra neperskaitytų žinučių"
-
+msgid "_Show system tray icon:"
+msgstr "_Rodyti piktogramą sistemos juostelėje:"
+
+msgid "On unread messages"
+msgstr "kai yra neperskaitytų žinučių"
+
# IM Convo trans options
-msgid "Conversation Window Hiding"
-msgstr "Pokalbių langų slėpimas"
-
-msgid "_Hide new IM conversations:"
-msgstr "_Slėpti naujus pokalbius"
-
-msgid "When away"
-msgstr "kai pasitraukęs"
-
-#. All the tab options!
-msgid "Tabs"
-msgstr "Kortelės"
-
-msgid "Show IMs and chats in _tabbed windows"
-msgstr "Rodyti pokalbius ir kambarius languose su kor_telėmis"
-
-msgid "Show close b_utton on tabs"
-msgstr "Rodyti _uždarymo mygtuką ant kortelių"
-
+msgid "Conversation Window Hiding"
+msgstr "Pokalbių langų slėpimas"
+
+msgid "_Hide new IM conversations:"
+msgstr "_Slėpti naujus pokalbius"
+
+msgid "When away"
+msgstr "kai pasitraukęs"
+
+#. All the tab options!
+msgid "Tabs"
+msgstr "Kortelės"
+
+msgid "Show IMs and chats in _tabbed windows"
+msgstr "Rodyti pokalbius ir kambarius languose su kor_telėmis"
+
+msgid "Show close b_utton on tabs"
+msgstr "Rodyti _uždarymo mygtuką ant kortelių"
+
# *< api_version
# *< type
# *< ui_requirement
@@ -12646,829 +12795,852 @@ msgstr "Rodyti _uždarymo mygtuką ant kortelių"
# *< priority
# *< id
# <„ExtPlacement“ yra tikrinis žodis, todėl neverstinas?
-msgid "_Placement:"
-msgstr "Tal_pinimas:"
-
-msgid "Top"
-msgstr "viršuje"
-
-msgid "Bottom"
-msgstr "apačioje"
-
-msgid "Left"
-msgstr "kairėje"
-
-msgid "Right"
-msgstr "dešinėje"
-
-msgid "Left Vertical"
-msgstr "vertikalus kairėje"
-
-msgid "Right Vertical"
-msgstr "vertikalus dešinėje"
-
-msgid "N_ew conversations:"
-msgstr "Nau_ji pokalbiai:"
-
-msgid "Show _formatting on incoming messages"
-msgstr "Gaunamas žinutes rodyti su _formatavimu"
-
-msgid "Close IMs immediately when the tab is closed"
-msgstr "Uždaryti pokalbius iškart po kortelės uždarymo"
-
-msgid "Show _detailed information"
-msgstr "Ro_dyti smulkią informaciją"
-
-msgid "Enable buddy ic_on animation"
-msgstr "Leisti bičiulių pikt_ogramų animaciją"
-
-msgid "_Notify buddies that you are typing to them"
-msgstr "I_nformuoti bičiulius, kai jiems rašote"
-
-msgid "Highlight _misspelled words"
-msgstr "_Paryškinti neteisingai parašytus žodžius"
-
-msgid "Use smooth-scrolling"
-msgstr "Naudoti _tolygią slinktį"
-
-msgid "F_lash window when IMs are received"
-msgstr "Mirginti _langą, kai gaunamos žinutės"
-
+msgid "_Placement:"
+msgstr "Tal_pinimas:"
+
+msgid "Top"
+msgstr "viršuje"
+
+msgid "Bottom"
+msgstr "apačioje"
+
+msgid "Left"
+msgstr "kairėje"
+
+msgid "Right"
+msgstr "dešinėje"
+
+msgid "Left Vertical"
+msgstr "vertikalus kairėje"
+
+msgid "Right Vertical"
+msgstr "vertikalus dešinėje"
+
+msgid "N_ew conversations:"
+msgstr "Nau_ji pokalbiai:"
+
+msgid "Show _formatting on incoming messages"
+msgstr "Gaunamas žinutes rodyti su _formatavimu"
+
+msgid "Close IMs immediately when the tab is closed"
+msgstr "Uždaryti pokalbius iškart po kortelės uždarymo"
+
+msgid "Show _detailed information"
+msgstr "Ro_dyti smulkią informaciją"
+
+msgid "Enable buddy ic_on animation"
+msgstr "Leisti bičiulių pikt_ogramų animaciją"
+
+msgid "_Notify buddies that you are typing to them"
+msgstr "I_nformuoti bičiulius, kai jiems rašote"
+
+msgid "Highlight _misspelled words"
+msgstr "_Paryškinti neteisingai parašytus žodžius"
+
+msgid "Use smooth-scrolling"
+msgstr "Naudoti _tolygią slinktį"
+
+msgid "F_lash window when IMs are received"
+msgstr "Mirginti _langą, kai gaunamos žinutės"
+
# IM Convo trans options
-msgid "Minimi_ze new conversation windows"
-msgstr "_Suskleisti naujus pokalbių langus"
-
-msgid "Minimum input area height in lines:"
-msgstr "Mažiausias įvedimo srities aukštis linijomis:"
-
-msgid "Font"
-msgstr "Šriftas"
-
-msgid "Use document font from _theme"
-msgstr "Naudo_ti dokumento šriftą iš apipavidalinimo"
-
-msgid "Use font from _theme"
-msgstr "Naudo_ti šriftą iš apipavidalinimo"
-
-msgid "Conversation _font:"
-msgstr "P_okalbio šriftas:"
-
-msgid "Default Formatting"
-msgstr "Numatytasis formato taikymas"
-
+msgid "Minimi_ze new conversation windows"
+msgstr "_Suskleisti naujus pokalbių langus"
+
+msgid "Minimum input area height in lines:"
+msgstr "Mažiausias įvedimo srities aukštis linijomis:"
+
+msgid "Font"
+msgstr "Šriftas"
+
+msgid "Use document font from _theme"
+msgstr "Naudo_ti dokumento šriftą iš apipavidalinimo"
+
+msgid "Use font from _theme"
+msgstr "Naudo_ti šriftą iš apipavidalinimo"
+
+msgid "Conversation _font:"
+msgstr "P_okalbio šriftas:"
+
+msgid "Default Formatting"
+msgstr "Numatytasis formato taikymas"
+
# Šitaip atrodys Jūsų išsiunčiamų žinučių tekstas su protokolais kurie palaiko formato taikymą. :)
-msgid ""
-"This is how your outgoing message text will appear when you use protocols "
-"that support formatting."
-msgstr ""
-"Šitaip atrodys Jūsų išsiunčiamų žinučių tekstas protokoluose, palaikančiuose "
-"formato taikymą."
-
-msgid "Cannot start proxy configuration program."
-msgstr "Nepavyko paleisti tinklo tarpininko nustatymų programos."
-
-msgid "Cannot start browser configuration program."
-msgstr "Nepavyko paleisti naršyklės nustatymų programos."
-
-msgid "ST_UN server:"
-msgstr "ST_UN Serveris:"
-
-msgid "<span style=\"italic\">Example: stunserver.org</span>"
-msgstr "<span style=\\\"italic\\\">Pavyzdžiui: stunserver.org</span>"
-
-msgid "_Autodetect IP address"
-msgstr "_Automatiškai aptikti IP adresą"
-
-msgid "Public _IP:"
-msgstr "Viešas _IP:"
-
-msgid "Ports"
-msgstr "Prievadai"
-
-msgid "_Enable automatic router port forwarding"
-msgstr "_Įjungti automatinį maršruto parinktuvo prievadų persiuntimą"
-
-msgid "_Manually specify range of ports to listen on"
-msgstr "Rankiniu būdu nurodyti klauso_mų prievadų režį"
-
-msgid "_Start port:"
-msgstr "Pirmas prievada_s:"
-
-msgid "_End port:"
-msgstr "Paskutinis pri_evadas:"
-
-msgid "Proxy Server &amp; Browser"
-msgstr "Tarpininkaujantis serveris ir naršyklė"
-
-msgid "<b>Proxy configuration program was not found.</b>"
-msgstr "<b>Nerasta tinklo tarpininko nustatymų programa.</b>"
-
-msgid "<b>Browser configuration program was not found.</b>"
-msgstr "<b>Nerasta naršyklės nustatymų programa.</b>"
-
-msgid ""
-"Proxy & Browser preferences are configured\n"
-"in GNOME Preferences"
-msgstr ""
-"Tinklo tarpininko ir naršyklės nustatymai yra tvarkomi GNOME parinktyse"
-
-msgid "Configure _Proxy"
-msgstr "_Konfigūruoti tarpininkaujantį serverį"
-
-msgid "Configure _Browser"
-msgstr "Konfigūruoti _naršyklę"
-
-msgid "Proxy Server"
-msgstr "Tarpininkaujantis serveris"
-
-msgid "No proxy"
-msgstr "be tarpininko"
-
-#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
-msgid "Use remote DNS with SOCKS4 proxies"
-msgstr "Naudoti nutolusį DNS su SOCKS4 tarpininku"
-
-msgid "_User:"
-msgstr "_Vartotojas:"
-
-msgid "Seamonkey"
-msgstr "SeaMonkey"
-
-msgid "Opera"
-msgstr "Opera"
-
-msgid "Netscape"
-msgstr "Netscape"
-
-msgid "Mozilla"
-msgstr "Mozilla"
-
-msgid "Konqueror"
-msgstr "Konqueror"
-
-msgid "Desktop Default"
-msgstr "Darbalaukio numatytasis"
-
-msgid "GNOME Default"
-msgstr "GNOME numatytasis"
-
-msgid "Galeon"
-msgstr "Galeon"
-
-msgid "Firefox"
-msgstr "Firefox"
-
-msgid "Firebird"
-msgstr "Firebird"
-
-msgid "Epiphany"
-msgstr "Epiphany"
-
-msgid "Manual"
-msgstr "Rankinis"
-
-msgid "Browser Selection"
-msgstr "Naršyklės išrinkimas"
-
-msgid "_Browser:"
-msgstr "_Naršyklė:"
-
-msgid "_Open link in:"
-msgstr "_Atverti saitą kame:"
-
-msgid "Browser default"
-msgstr "pagal naršyklės nustatymą"
-
-msgid "Existing window"
-msgstr "esamame lange"
-
-msgid "New tab"
-msgstr "naujoje kortelėje"
-
-#, c-format
-msgid ""
-"_Manual:\n"
-"(%s for URL)"
-msgstr ""
-"_Rankinis:\n"
-"(%s žymi URL)"
-
-msgid "Log _format:"
-msgstr "Žurnalo _formatas:"
-
-msgid "Log all _instant messages"
-msgstr "Rašyti visus asmeninius pokalbius į žurna_lą"
-
-msgid "Log all c_hats"
-msgstr "Raš_yti visus pokalbius kambariuose į žurnalą"
-
-msgid "Log all _status changes to system log"
-msgstr "Ra_šyti visus būsenos pasikeitimus į sistemos žurnalą"
-
-msgid "Sound Selection"
-msgstr "Garso išrinkimas"
-
-#, c-format
-msgid "Quietest"
-msgstr "Tyliausiai"
-
-#, c-format
-msgid "Quieter"
-msgstr "Tyliau"
-
-#, c-format
-msgid "Quiet"
-msgstr "Tyliai"
-
-#, c-format
-msgid "Loud"
-msgstr "Garsiai"
-
-#, c-format
-msgid "Louder"
-msgstr "Garsiau"
-
-#, c-format
-msgid "Loudest"
-msgstr "Garsiausiai"
-
-msgid "_Method:"
-msgstr "_Būdas:"
-
-msgid "Console beep"
-msgstr "pyptelėjimai"
-
-msgid "No sounds"
-msgstr "be garsų"
-
-#, c-format
-msgid ""
-"Sound c_ommand:\n"
-"(%s for filename)"
-msgstr ""
-"Garso k_omanda:\n"
-"(%s reiškia failo vardą)"
-
-msgid "M_ute sounds"
-msgstr "Išj_ungti garsus"
-
-msgid "Sounds when conversation has _focus"
-msgstr "Groti _garsus, kai pokalbio langas yra veikiamasis"
-
-msgid "_Enable sounds:"
-msgstr "_Įjungti garsus:"
-
-msgid "V_olume:"
-msgstr "_Garsumas:"
-
-msgid "Play"
-msgstr "Groti"
-
-msgid "_Browse..."
-msgstr "_Naršyti...."
-
-msgid "_Reset"
-msgstr "_Atstatyti"
-
-msgid "_Report idle time:"
-msgstr "_Rodyti neveiklumo laiką:"
-
-msgid "Based on keyboard or mouse use"
-msgstr "pagal klaviatūros ir pelės naudojimą"
-
-msgid "_Auto-reply:"
-msgstr "_Automatinis atsakymas:"
-
-msgid "When both away and idle"
-msgstr "ir kai pasitraukęs, ir kai neveiklus"
-
-#. Auto-away stuff
-msgid "Auto-away"
-msgstr "Automatinis pasitraukimas"
-
-msgid "Change status when _idle"
-msgstr "Pake_isti būseną, kai neveiklus"
-
-msgid "_Minutes before becoming idle:"
-msgstr "Kiek minučių turi praeiti iki tapimo neveikliu:"
-
-msgid "Change _status to:"
-msgstr "Pakei_sti būseną į:"
-
-#. Signon status stuff
-msgid "Status at Startup"
-msgstr "Būsena programos paleidimo metu"
-
-msgid "Use status from last _exit at startup"
-msgstr "Programos paleidimo metu nustatyti paskutinę prieš tai naudotą būseną"
-
-msgid "Status to a_pply at startup:"
-msgstr "Programos paleidimo metu nustatyti būseną:"
-
-msgid "Interface"
-msgstr "Sąsaja"
-
-msgid "Smiley Themes"
-msgstr "Šypsenėlių apipavidalinimai"
-
+msgid ""
+"This is how your outgoing message text will appear when you use protocols "
+"that support formatting."
+msgstr ""
+"Šitaip atrodys Jūsų išsiunčiamų žinučių tekstas protokoluose, palaikančiuose "
+"formato taikymą."
+
+msgid "Cannot start proxy configuration program."
+msgstr "Nepavyko paleisti tinklo tarpininko nustatymų programos."
+
+msgid "Cannot start browser configuration program."
+msgstr "Nepavyko paleisti naršyklės nustatymų programos."
+
+msgid "<span style=\"italic\">Example: stunserver.org</span>"
+msgstr "<span style=\\\"italic\\\">Pavyzdžiui: stunserver.org</span>"
+
+msgid "_Autodetect IP address"
+msgstr "_Automatiškai aptikti IP adresą"
+
+msgid "Public _IP:"
+msgstr "Viešas _IP:"
+
+msgid "Ports"
+msgstr "Prievadai"
+
+msgid "_Enable automatic router port forwarding"
+msgstr "_Įjungti automatinį maršruto parinktuvo prievadų persiuntimą"
+
+msgid "_Manually specify range of ports to listen on"
+msgstr "Rankiniu būdu nurodyti klauso_mų prievadų režį"
+
+msgid "_Start port:"
+msgstr "Pirmas prievada_s:"
+
+msgid "_End port:"
+msgstr "Paskutinis pri_evadas:"
+
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
+msgid "Proxy Server &amp; Browser"
+msgstr "Tarpininkaujantis serveris ir naršyklė"
+
+msgid "<b>Proxy configuration program was not found.</b>"
+msgstr "<b>Nerasta tinklo tarpininko nustatymų programa.</b>"
+
+msgid "<b>Browser configuration program was not found.</b>"
+msgstr "<b>Nerasta naršyklės nustatymų programa.</b>"
+
+msgid ""
+"Proxy & Browser preferences are configured\n"
+"in GNOME Preferences"
+msgstr ""
+"Tinklo tarpininko ir naršyklės nustatymai yra tvarkomi GNOME parinktyse"
+
+msgid "Configure _Proxy"
+msgstr "_Konfigūruoti tarpininkaujantį serverį"
+
+msgid "Configure _Browser"
+msgstr "Konfigūruoti _naršyklę"
+
+msgid "Proxy Server"
+msgstr "Tarpininkaujantis serveris"
+
+msgid "No proxy"
+msgstr "be tarpininko"
+
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr "Naudoti nutolusį DNS su SOCKS4 tarpininku"
+
+msgid "_User:"
+msgstr "_Vartotojas:"
+
+msgid "Seamonkey"
+msgstr "SeaMonkey"
+
+msgid "Opera"
+msgstr "Opera"
+
+msgid "Netscape"
+msgstr "Netscape"
+
+msgid "Mozilla"
+msgstr "Mozilla"
+
+msgid "Konqueror"
+msgstr "Konqueror"
+
+msgid "Desktop Default"
+msgstr "Darbalaukio numatytasis"
+
+msgid "GNOME Default"
+msgstr "GNOME numatytasis"
+
+msgid "Galeon"
+msgstr "Galeon"
+
+msgid "Firefox"
+msgstr "Firefox"
+
+msgid "Firebird"
+msgstr "Firebird"
+
+msgid "Epiphany"
+msgstr "Epiphany"
+
+msgid "Manual"
+msgstr "Rankinis"
+
+msgid "Browser Selection"
+msgstr "Naršyklės išrinkimas"
+
+msgid "_Browser:"
+msgstr "_Naršyklė:"
+
+msgid "_Open link in:"
+msgstr "_Atverti saitą kame:"
+
+msgid "Browser default"
+msgstr "pagal naršyklės nustatymą"
+
+msgid "Existing window"
+msgstr "esamame lange"
+
+msgid "New tab"
+msgstr "naujoje kortelėje"
+
+#, c-format
+msgid ""
+"_Manual:\n"
+"(%s for URL)"
+msgstr ""
+"_Rankinis:\n"
+"(%s žymi URL)"
+
+msgid "Log _format:"
+msgstr "Žurnalo _formatas:"
+
+msgid "Log all _instant messages"
+msgstr "Rašyti visus asmeninius pokalbius į žurna_lą"
+
+msgid "Log all c_hats"
+msgstr "Raš_yti visus pokalbius kambariuose į žurnalą"
+
+msgid "Log all _status changes to system log"
+msgstr "Ra_šyti visus būsenos pasikeitimus į sistemos žurnalą"
+
+msgid "Sound Selection"
+msgstr "Garso išrinkimas"
+
+#, c-format
+msgid "Quietest"
+msgstr "Tyliausiai"
+
+#, c-format
+msgid "Quieter"
+msgstr "Tyliau"
+
+#, c-format
+msgid "Quiet"
+msgstr "Tyliai"
+
+#, c-format
+msgid "Loud"
+msgstr "Garsiai"
+
+#, c-format
+msgid "Louder"
+msgstr "Garsiau"
+
+#, c-format
+msgid "Loudest"
+msgstr "Garsiausiai"
+
+msgid "_Method:"
+msgstr "_Būdas:"
+
+msgid "Console beep"
+msgstr "pyptelėjimai"
+
+msgid "No sounds"
+msgstr "be garsų"
+
+#, c-format
+msgid ""
+"Sound c_ommand:\n"
+"(%s for filename)"
+msgstr ""
+"Garso k_omanda:\n"
+"(%s reiškia failo vardą)"
+
+msgid "M_ute sounds"
+msgstr "Išj_ungti garsus"
+
+msgid "Sounds when conversation has _focus"
+msgstr "Groti _garsus, kai pokalbio langas yra veikiamasis"
+
+msgid "_Enable sounds:"
+msgstr "_Įjungti garsus:"
+
+msgid "V_olume:"
+msgstr "_Garsumas:"
+
+msgid "Play"
+msgstr "Groti"
+
+msgid "_Browse..."
+msgstr "_Naršyti...."
+
+msgid "_Reset"
+msgstr "_Atstatyti"
+
+msgid "_Report idle time:"
+msgstr "_Rodyti neveiklumo laiką:"
+
+msgid "Based on keyboard or mouse use"
+msgstr "pagal klaviatūros ir pelės naudojimą"
+
+msgid "_Auto-reply:"
+msgstr "_Automatinis atsakymas:"
+
+msgid "When both away and idle"
+msgstr "ir kai pasitraukęs, ir kai neveiklus"
+
+#. Auto-away stuff
+msgid "Auto-away"
+msgstr "Automatinis pasitraukimas"
+
+msgid "_Minutes before becoming idle:"
+msgstr "Kiek minučių turi praeiti iki tapimo neveikliu:"
+
+msgid "Change status when _idle"
+msgstr "Pake_isti būseną, kai neveiklus"
+
+msgid "Change _status to:"
+msgstr "Pakei_sti būseną į:"
+
+#. Signon status stuff
+msgid "Status at Startup"
+msgstr "Būsena programos paleidimo metu"
+
+msgid "Use status from last _exit at startup"
+msgstr "Programos paleidimo metu nustatyti paskutinę prieš tai naudotą būseną"
+
+msgid "Status to a_pply at startup:"
+msgstr "Programos paleidimo metu nustatyti būseną:"
+
+msgid "Interface"
+msgstr "Sąsaja"
+
+msgid "Smiley Themes"
+msgstr "Šypsenėlių apipavidalinimai"
+
# We use the registered default browser in windows
-msgid "Browser"
-msgstr "Naršyklė"
-
-msgid "Status / Idle"
-msgstr "Būsenos ir neveiklumas"
-
-msgid "Allow all users to contact me"
-msgstr "Leisti visiems vartotojams susisiekti su manimi"
-
-msgid "Allow only the users on my buddy list"
-msgstr "Leisti tik vartotojus iš mano bičiulių sąrašo"
-
-msgid "Allow only the users below"
-msgstr "Leisti žemiau išvardintus vartotojus"
-
-msgid "Block all users"
-msgstr "Blokuoti visus vartotojus"
-
-msgid "Block only the users below"
-msgstr "Blokuoti žemiau išvardintus vartotojus"
-
-msgid "Privacy"
-msgstr "Privatumas"
-
-msgid "Changes to privacy settings take effect immediately."
-msgstr "Privatumo nuostatų pakeitimai iš karto tampa aktyvūs"
-
-msgid "Set privacy for:"
-msgstr "Nustatyti privatumo parinktis vartotojui:"
-
-#. Remove All button
-msgid "Remove Al_l"
-msgstr "Paša_linti visus"
-
-msgid "Permit User"
-msgstr "Leisti vartotoją"
-
-msgid "Type a user you permit to contact you."
-msgstr "Įveskite vartotojo, kuriam leidžiate su jumis susisiekti, vardą"
-
-msgid "Please enter the name of the user you wish to be able to contact you."
-msgstr ""
-"Prašau įvesti vartotojo, kuriam norite leisti su jumis susisiekti, vardą"
-
-msgid "_Permit"
-msgstr "_Leisti"
-
-#, c-format
-msgid "Allow %s to contact you?"
-msgstr "Ar leisti vartotojui %s susisiekti su Jumis?"
-
-#, c-format
-msgid "Are you sure you wish to allow %s to contact you?"
-msgstr "Ar esate tikras, kad norite leisti vartotojui %s susisiekti su Jumis?"
-
-msgid "Block User"
-msgstr "Blokuoti vartotoją"
-
-msgid "Type a user to block."
-msgstr "Įveskite vartotoją, kurį blokuojate, vardą."
-
-msgid "Please enter the name of the user you wish to block."
-msgstr "Prašau įvesti vartotojo, kurį norite blokuoti, vardą."
-
-#, c-format
-msgid "Block %s?"
-msgstr "Ar blokuoti vartotoją %s?"
-
-#, c-format
-msgid "Are you sure you want to block %s?"
-msgstr "Ar esate tikras, kad norite blokuoti vartotoją %s?"
-
-msgid "Apply"
-msgstr "Vykdyti"
-
-msgid "That file already exists"
-msgstr "Toks failas jau yra"
-
-msgid "Would you like to overwrite it?"
-msgstr "Ar norite jį perrašyti?"
-
-msgid "Overwrite"
-msgstr "Perrašyti"
-
-msgid "Choose New Name"
-msgstr "Parinkti kitą vardą"
-
-msgid "Select Folder..."
-msgstr "Pasirinkite aplanką..."
-
-#. list button
-msgid "_Get List"
-msgstr "_Gauti sąrašą"
-
-#. add button
-msgid "_Add Chat"
-msgstr "_Pridėti pokalbių kambarį"
-
-msgid "Are you sure you want to delete the selected saved statuses?"
-msgstr "Ar tikrai norite pašalinti pasirinktas įrašytas būsenas?"
-
-#. Use button
-msgid "_Use"
-msgstr "Pasi_šalinti"
-
-msgid "Title already in use. You must choose a unique title."
-msgstr "Toks pavadinimas jau yra. Privalote pasirinkti unikalų pavadinimą."
-
-msgid "Different"
-msgstr "Skirtinga"
-
-msgid "_Title:"
-msgstr "_Pavadinimas:"
-
-msgid "_Status:"
-msgstr "_Būsena:"
-
-#. Different status message expander
-msgid "Use a _different status for some accounts"
-msgstr "Kai kurioms paskyroms naudoti kitokią būseną"
-
-#. Save & Use button
-msgid "Sa_ve & Use"
-msgstr "I_šsaugoti ir pasišalinti"
-
-#, c-format
-msgid "Status for %s"
-msgstr "Paskyros %s būsena"
-
-msgid "Custom Smiley"
-msgstr "Tinkinta šypsenėlė"
-
-msgid "More Data needed"
-msgstr "Reikia daugiau duomenų"
-
-msgid "Please provide a shortcut to associate with the smiley."
-msgstr "Nurodykite klavišų seką susiejimui su šypsenėle."
-
-msgid "Duplicate Shortcut"
-msgstr "Klavišų seka jau priskirta"
-
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
-msgstr ""
-"Šiai klavišų sekai jau priskirta tinkinta šypsenelė. Pasirinkite kitokią "
-"kombinaciją."
-
-msgid "Please select an image for the smiley."
-msgstr "Parinkite šypsenėlei paveiksliuką."
-
-msgid "Edit Smiley"
-msgstr "Keisti šypsenėlę"
-
+msgid "Browser"
+msgstr "Naršyklė"
+
+msgid "Status / Idle"
+msgstr "Būsenos ir neveiklumas"
+
+msgid "Allow all users to contact me"
+msgstr "Leisti visiems vartotojams susisiekti su manimi"
+
+msgid "Allow only the users on my buddy list"
+msgstr "Leisti tik vartotojus iš mano bičiulių sąrašo"
+
+msgid "Allow only the users below"
+msgstr "Leisti žemiau išvardintus vartotojus"
+
+msgid "Block all users"
+msgstr "Blokuoti visus vartotojus"
+
+msgid "Block only the users below"
+msgstr "Blokuoti žemiau išvardintus vartotojus"
+
+msgid "Privacy"
+msgstr "Privatumas"
+
+msgid "Changes to privacy settings take effect immediately."
+msgstr "Privatumo nuostatų pakeitimai iš karto tampa aktyvūs"
+
+msgid "Set privacy for:"
+msgstr "Nustatyti privatumo parinktis vartotojui:"
+
+#. Remove All button
+msgid "Remove Al_l"
+msgstr "Paša_linti visus"
+
+msgid "Permit User"
+msgstr "Leisti vartotoją"
+
+msgid "Type a user you permit to contact you."
+msgstr "Įveskite vartotojo, kuriam leidžiate su jumis susisiekti, vardą"
+
+msgid "Please enter the name of the user you wish to be able to contact you."
+msgstr ""
+"Prašau įvesti vartotojo, kuriam norite leisti su jumis susisiekti, vardą"
+
+msgid "_Permit"
+msgstr "_Leisti"
+
+#, c-format
+msgid "Allow %s to contact you?"
+msgstr "Ar leisti vartotojui %s susisiekti su Jumis?"
+
+#, c-format
+msgid "Are you sure you wish to allow %s to contact you?"
+msgstr "Ar esate tikras, kad norite leisti vartotojui %s susisiekti su Jumis?"
+
+msgid "Block User"
+msgstr "Blokuoti vartotoją"
+
+msgid "Type a user to block."
+msgstr "Įveskite vartotoją, kurį blokuojate, vardą."
+
+msgid "Please enter the name of the user you wish to block."
+msgstr "Prašau įvesti vartotojo, kurį norite blokuoti, vardą."
+
+#, c-format
+msgid "Block %s?"
+msgstr "Ar blokuoti vartotoją %s?"
+
+#, c-format
+msgid "Are you sure you want to block %s?"
+msgstr "Ar esate tikras, kad norite blokuoti vartotoją %s?"
+
+msgid "Apply"
+msgstr "Vykdyti"
+
+msgid "That file already exists"
+msgstr "Toks failas jau yra"
+
+msgid "Would you like to overwrite it?"
+msgstr "Ar norite jį perrašyti?"
+
+msgid "Overwrite"
+msgstr "Perrašyti"
+
+msgid "Choose New Name"
+msgstr "Parinkti kitą vardą"
+
+msgid "Select Folder..."
+msgstr "Pasirinkite aplanką..."
+
+#. list button
+msgid "_Get List"
+msgstr "_Gauti sąrašą"
+
+#. add button
+msgid "_Add Chat"
+msgstr "_Pridėti pokalbių kambarį"
+
+msgid "Are you sure you want to delete the selected saved statuses?"
+msgstr "Ar tikrai norite pašalinti pasirinktas įrašytas būsenas?"
+
+#. Use button
+msgid "_Use"
+msgstr "Pasi_šalinti"
+
+msgid "Title already in use. You must choose a unique title."
+msgstr "Toks pavadinimas jau yra. Privalote pasirinkti unikalų pavadinimą."
+
+msgid "Different"
+msgstr "Skirtinga"
+
+msgid "_Title:"
+msgstr "_Pavadinimas:"
+
+msgid "_Status:"
+msgstr "_Būsena:"
+
+#. Different status message expander
+msgid "Use a _different status for some accounts"
+msgstr "Kai kurioms paskyroms naudoti kitokią būseną"
+
+#. Save & Use button
+msgid "Sa_ve & Use"
+msgstr "I_šsaugoti ir pasišalinti"
+
+#, c-format
+msgid "Status for %s"
+msgstr "Paskyros %s būsena"
+
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
+msgid "Custom Smiley"
+msgstr "Tinkinta šypsenėlė"
+
+msgid "More Data needed"
+msgstr "Reikia daugiau duomenų"
+
+msgid "Please provide a shortcut to associate with the smiley."
+msgstr "Nurodykite klavišų seką susiejimui su šypsenėle."
+
+#, fuzzy, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
+msgstr ""
+"Šiai klavišų sekai jau priskirta tinkinta šypsenelė. Pasirinkite kitokią "
+"kombinaciją."
+
+msgid "Duplicate Shortcut"
+msgstr "Klavišų seka jau priskirta"
+
+msgid "Please select an image for the smiley."
+msgstr "Parinkite šypsenėlei paveiksliuką."
+
+msgid "Edit Smiley"
+msgstr "Keisti šypsenėlę"
+
# show everything
-msgid "Add Smiley"
-msgstr "Pridėti šypsenėlę"
-
-msgid "Smiley _Image"
-msgstr "_Šypsenėlės paveiksliukas"
-
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr "_Šypsenėlės klavišų seka"
-
+msgid "Add Smiley"
+msgstr "Pridėti šypsenėlę"
+
+#, fuzzy
+msgid "_Image:"
+msgstr "_paveiksliuką"
+
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "Klavišų seka"
+
# show everything
-msgid "Smiley"
-msgstr "Šypsenėlė"
-
-msgid "Custom Smiley Manager"
-msgstr "Tinkintų šypsenėlių tvarkytuvė"
-
-msgid "Click to change your buddyicon for this account."
-msgstr "Paspauskite, kad pakeistumėte savo paveiksliuką šiai paskyrai."
-
-msgid "Click to change your buddyicon for all accounts."
-msgstr "Paspauskite, kad pakeistumėte savo paveiksliuką visoms paskyroms."
-
-msgid "Waiting for network connection"
-msgstr "Laukiama tinklo jungties"
-
-msgid "New status..."
-msgstr "Nauja būsena..."
-
-msgid "Saved statuses..."
-msgstr "Išsaugotos būsenos..."
-
-msgid "Status Selector"
-msgstr "Būsenos rinkiklis"
-
-msgid "Google Talk"
-msgstr "Google Talk"
-
-#, c-format
-msgid "The following error has occurred loading %s: %s"
-msgstr "Įkeliant %s įvyko klaida: %s"
-
-msgid "Failed to load image"
-msgstr "Nepavyko įkelti vaizdo"
-
-#, c-format
-msgid "Cannot send folder %s."
-msgstr "Negalima išsiųsti katalogo %s."
-
-#, c-format
-msgid ""
-"%s cannot transfer a folder. You will need to send the files within "
-"individually."
-msgstr ""
-"%s negali perduoti katalogo. Jums reikia perduoti jame esančius failus po "
-"vieną."
-
-msgid "You have dragged an image"
-msgstr "Jūs atitempėte pele paveiksliuką"
-
-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 ""
-"Galite šį paveiksliuką nusiųsti kaip failą, įterpti į šią žinutę, arba "
-"naudoti kaip paveiksliuką šiam vartotojui."
-
-msgid "Set as buddy icon"
-msgstr "Naudoti kaip vartotojo paveiksliuką"
-
-msgid "Send image file"
-msgstr "Nusiųsti kaip failą"
-
-msgid "Insert in message"
-msgstr "Įterpti į žinutę"
-
-msgid "Would you like to set it as the buddy icon for this user?"
-msgstr "Ar norite paveiksliuką naudoti kaip šio vartotojo paveiksliuką?"
-
-msgid ""
-"You can send this image as a file transfer, or use it as the buddy icon for "
-"this user."
-msgstr ""
-"Galite šį paveiksliuką nusiųsti kaip failą arba nustatyti kaip šio vartotojo "
-"paveiksliuką."
-
-msgid ""
-"You can insert this image into this message, or use it as the buddy icon for "
-"this user"
-msgstr ""
-"Galite šį paveiksliuką įterpti į žinutę arba naudoti kaip šio vartotojo "
-"paveiksliuką."
-
-#. I don't know if we really want to do anything here. Most of the desktop item types are crap like
-#. * "MIME Type" (I have no clue how that would be a desktop item) and "Comment"... nothing we can really
-#. * send. The only logical one is "Application," but do we really want to send a binary and nothing else?
-#. * Probably not. I'll just give an error and return.
-#. The original patch sent the icon used by the launcher. That's probably wrong
-msgid "Cannot send launcher"
-msgstr "Negalima išsiųsti paleidyklės"
-
-msgid ""
-"You dragged a desktop launcher. Most likely you wanted to send whatever this "
-"launcher points to instead of this launcher itself."
-msgstr ""
-"Jūs atitempėte pele darbastalio paleidyklę. Greičiausiai norite siųsti ne "
-"pačią paleidyklę, o jos paleidžiamą objektą."
-
-#, c-format
-msgid ""
-"<b>File:</b> %s\n"
-"<b>File size:</b> %s\n"
-"<b>Image size:</b> %dx%d"
-msgstr ""
-"<b>Failas:</b> %s\n"
-"<b>Failo dydis:</b> %s\n"
-"<b>Vaizdo dydis:</b> %dx%d"
-
-#, c-format
-msgid "The file '%s' is too large for %s. Please try a smaller image.\n"
-msgstr ""
-"Failas „%s“ yra per didelis %s. Pabandykite su mažesniu paveiksliuku.\n"
-
-msgid "Icon Error"
-msgstr "Paveiksliuko klaida"
-
-msgid "Could not set icon"
-msgstr "Nepavyko nustatyti paveiksliuko"
-
-#, c-format
-msgid "Failed to open file '%s': %s"
-msgstr "Nepavyko atverti failo „%s“: %s"
-
-#, c-format
-msgid ""
-"Failed to load image '%s': reason not known, probably a corrupt image file"
-msgstr ""
-"Paveiksliuko „%s“ nepavyko įkelti dėl nežinomos priežasties, turbūt tai yra "
-"sugadintas paveiksliuko failas"
-
-msgid "Save File"
-msgstr "Įrašyti failą"
-
-msgid "Select color"
-msgstr "Pasirinkite spalvą"
-
-msgid "_Alias"
-msgstr "_Alternatyvusis vardas"
-
-msgid "Close _tabs"
-msgstr "Uždaryti kor_teles"
-
-msgid "_Get Info"
-msgstr "_Gauti informaciją"
-
+msgid "Smiley"
+msgstr "Šypsenėlė"
+
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "Klavišų seka"
+
+msgid "Custom Smiley Manager"
+msgstr "Tinkintų šypsenėlių tvarkytuvė"
+
+msgid "Click to change your buddyicon for this account."
+msgstr "Paspauskite, kad pakeistumėte savo paveiksliuką šiai paskyrai."
+
+msgid "Click to change your buddyicon for all accounts."
+msgstr "Paspauskite, kad pakeistumėte savo paveiksliuką visoms paskyroms."
+
+msgid "Waiting for network connection"
+msgstr "Laukiama tinklo jungties"
+
+msgid "New status..."
+msgstr "Nauja būsena..."
+
+msgid "Saved statuses..."
+msgstr "Išsaugotos būsenos..."
+
+msgid "Status Selector"
+msgstr "Būsenos rinkiklis"
+
+msgid "Google Talk"
+msgstr "Google Talk"
+
+#, c-format
+msgid "The following error has occurred loading %s: %s"
+msgstr "Įkeliant %s įvyko klaida: %s"
+
+msgid "Failed to load image"
+msgstr "Nepavyko įkelti vaizdo"
+
+#, c-format
+msgid "Cannot send folder %s."
+msgstr "Negalima išsiųsti katalogo %s."
+
+#, c-format
+msgid ""
+"%s cannot transfer a folder. You will need to send the files within "
+"individually."
+msgstr ""
+"%s negali perduoti katalogo. Jums reikia perduoti jame esančius failus po "
+"vieną."
+
+msgid "You have dragged an image"
+msgstr "Jūs atitempėte pele paveiksliuką"
+
+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 ""
+"Galite šį paveiksliuką nusiųsti kaip failą, įterpti į šią žinutę, arba "
+"naudoti kaip paveiksliuką šiam vartotojui."
+
+msgid "Set as buddy icon"
+msgstr "Naudoti kaip vartotojo paveiksliuką"
+
+msgid "Send image file"
+msgstr "Nusiųsti kaip failą"
+
+msgid "Insert in message"
+msgstr "Įterpti į žinutę"
+
+msgid "Would you like to set it as the buddy icon for this user?"
+msgstr "Ar norite paveiksliuką naudoti kaip šio vartotojo paveiksliuką?"
+
+msgid ""
+"You can send this image as a file transfer, or use it as the buddy icon for "
+"this user."
+msgstr ""
+"Galite šį paveiksliuką nusiųsti kaip failą arba nustatyti kaip šio vartotojo "
+"paveiksliuką."
+
+msgid ""
+"You can insert this image into this message, or use it as the buddy icon for "
+"this user"
+msgstr ""
+"Galite šį paveiksliuką įterpti į žinutę arba naudoti kaip šio vartotojo "
+"paveiksliuką."
+
+#. I don't know if we really want to do anything here. Most of the desktop item types are crap like
+#. * "MIME Type" (I have no clue how that would be a desktop item) and "Comment"... nothing we can really
+#. * send. The only logical one is "Application," but do we really want to send a binary and nothing else?
+#. * Probably not. I'll just give an error and return.
+#. The original patch sent the icon used by the launcher. That's probably wrong
+msgid "Cannot send launcher"
+msgstr "Negalima išsiųsti paleidyklės"
+
+msgid ""
+"You dragged a desktop launcher. Most likely you wanted to send whatever this "
+"launcher points to instead of this launcher itself."
+msgstr ""
+"Jūs atitempėte pele darbastalio paleidyklę. Greičiausiai norite siųsti ne "
+"pačią paleidyklę, o jos paleidžiamą objektą."
+
+#, c-format
+msgid ""
+"<b>File:</b> %s\n"
+"<b>File size:</b> %s\n"
+"<b>Image size:</b> %dx%d"
+msgstr ""
+"<b>Failas:</b> %s\n"
+"<b>Failo dydis:</b> %s\n"
+"<b>Vaizdo dydis:</b> %dx%d"
+
+#, c-format
+msgid "The file '%s' is too large for %s. Please try a smaller image.\n"
+msgstr ""
+"Failas „%s“ yra per didelis %s. Pabandykite su mažesniu paveiksliuku.\n"
+
+msgid "Icon Error"
+msgstr "Paveiksliuko klaida"
+
+msgid "Could not set icon"
+msgstr "Nepavyko nustatyti paveiksliuko"
+
+#, c-format
+msgid "Failed to open file '%s': %s"
+msgstr "Nepavyko atverti failo „%s“: %s"
+
+#, c-format
+msgid ""
+"Failed to load image '%s': reason not known, probably a corrupt image file"
+msgstr ""
+"Paveiksliuko „%s“ nepavyko įkelti dėl nežinomos priežasties, turbūt tai yra "
+"sugadintas paveiksliuko failas"
+
+#, fuzzy
+msgid "_Open Link"
+msgstr "_Atverti saitą kame:"
+
+msgid "_Copy Link Location"
+msgstr "Kopijuoti _saito adresą"
+
+msgid "_Copy Email Address"
+msgstr "Kopijuoti _el. pašto adresą"
+
+msgid "Save File"
+msgstr "Įrašyti failą"
+
+msgid "Select color"
+msgstr "Pasirinkite spalvą"
+
+msgid "_Alias"
+msgstr "_Alternatyvusis vardas"
+
+msgid "Close _tabs"
+msgstr "Uždaryti kor_teles"
+
+msgid "_Get Info"
+msgstr "_Gauti informaciją"
+
# Invite
-msgid "_Invite"
-msgstr "Pakv_iesti"
-
-msgid "_Modify..."
-msgstr "_Keisti..."
-
-msgid "_Add..."
-msgstr "_Pridėti..."
-
-msgid "_Open Mail"
-msgstr "_Atverti paštą"
-
-msgid "_Edit"
-msgstr "K_eisti"
-
-msgid "Pidgin Tooltip"
-msgstr "Pidgin mygtukų etiketės"
-
-msgid "Pidgin smileys"
-msgstr "Pidgin šypsenėlės"
-
-msgid "Penguin Pimps"
-msgstr "Pingvinai sąvadautojai"
-
-msgid "Selecting this disables graphical emoticons."
-msgstr "Išjungia grafines šypsenėles"
-
-msgid "none"
-msgstr "Jokių šypsenėlių"
-
-msgid "Small"
-msgstr "Mažas"
-
-msgid "Smaller versions of the default smilies"
-msgstr "Mažesni numatytųjų šypsenėlių variantai"
-
-msgid "Response Probability:"
-msgstr "Atsakymo tikimybė:"
-
-msgid "Statistics Configuration"
-msgstr "Statistikos parinktys"
-
-#. msg_difference spinner
-msgid "Maximum response timeout:"
-msgstr "Didžiausias atsakymo laukimo laikas:"
-
-msgid "minutes"
-msgstr "minutės"
-
-#. last_seen spinner
-msgid "Maximum last-seen difference:"
-msgstr "Didžiausias paskutinio pamatymo laiko skirtumas:"
-
-#. threshold spinner
-msgid "Threshold:"
-msgstr "Slenkstis:"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-msgid "Contact Availability Prediction"
-msgstr "Kontaktų prieinamumo nuspėjimas"
-
-#. *< name
-#. *< version
-msgid "Contact Availability Prediction plugin."
-msgstr "Kontaktų prieinamumo nuspėjimo papildinys."
-
-#. * summary
-msgid "Displays statistical information about your buddies' availability"
-msgstr "Rodo statistiką apie bičiulių prieinamumą"
-
-msgid "Buddy is idle"
-msgstr "bičiulis yra neveiklus"
-
-msgid "Buddy is away"
-msgstr "bičiulis yra pasitraukęs"
-
-msgid "Buddy is \"extended\" away"
-msgstr "bičiulis yra ilgam pasitraukęs"
-
-#. Not used yet.
-msgid "Buddy is mobile"
-msgstr "bičiulis yra mobilus"
-
-msgid "Buddy is offline"
-msgstr "bičiulis yra atsijungęs"
-
-msgid "Point values to use when..."
-msgstr "Kiek taškų skiriama, kai..."
-
-msgid ""
-"The buddy with the <i>largest score</i> is the buddy who will have priority "
-"in the contact.\n"
-msgstr "Bičiulis su <i>daugiausia taškų</i> turės kontakto pirmenybę.\n"
-
-msgid "Use last buddy when scores are equal"
-msgstr "Jeigu keli bičiuliai surinko vienodai taškų, pasirinkti paskutinį"
-
-msgid "Point values to use for account..."
-msgstr "Kiek taškų skiriama paskyrai..."
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-msgid "Contact Priority"
-msgstr "Kontakto pirmenybė"
-
-#. *< name
-#. *< version
-#. *< summary
-msgid ""
-"Allows for controlling the values associated with different buddy states."
-msgstr "Leidžia keisti reikšmes, susietas su skirtingomis bičiulių būsenomis."
-
-#. *< description
-msgid ""
-"Allows for changing the point values of idle/away/offline states for buddies "
-"in contact priority computations."
-msgstr ""
-"Leidžia keisti reikšmes, susietas su įvairiomis bičiulių būsenomis, "
-"naudojamas kontakto pirmenybės skaičiavimuose."
-
-msgid "Conversation Colors"
-msgstr "Pokalbių spalvos"
-
+msgid "_Invite"
+msgstr "Pakv_iesti"
+
+msgid "_Modify..."
+msgstr "_Keisti..."
+
+msgid "_Add..."
+msgstr "_Pridėti..."
+
+msgid "_Open Mail"
+msgstr "_Atverti paštą"
+
+msgid "_Edit"
+msgstr "K_eisti"
+
+msgid "Pidgin Tooltip"
+msgstr "Pidgin mygtukų etiketės"
+
+msgid "Pidgin smileys"
+msgstr "Pidgin šypsenėlės"
+
+msgid "Penguin Pimps"
+msgstr "Pingvinai sąvadautojai"
+
+msgid "Selecting this disables graphical emoticons."
+msgstr "Išjungia grafines šypsenėles"
+
+msgid "none"
+msgstr "Jokių šypsenėlių"
+
+msgid "Small"
+msgstr "Mažas"
+
+msgid "Smaller versions of the default smilies"
+msgstr "Mažesni numatytųjų šypsenėlių variantai"
+
+msgid "Response Probability:"
+msgstr "Atsakymo tikimybė:"
+
+msgid "Statistics Configuration"
+msgstr "Statistikos parinktys"
+
+#. msg_difference spinner
+msgid "Maximum response timeout:"
+msgstr "Didžiausias atsakymo laukimo laikas:"
+
+msgid "minutes"
+msgstr "minutės"
+
+#. last_seen spinner
+msgid "Maximum last-seen difference:"
+msgstr "Didžiausias paskutinio pamatymo laiko skirtumas:"
+
+#. threshold spinner
+msgid "Threshold:"
+msgstr "Slenkstis:"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Contact Availability Prediction"
+msgstr "Kontaktų prieinamumo nuspėjimas"
+
+#. *< name
+#. *< version
+msgid "Contact Availability Prediction plugin."
+msgstr "Kontaktų prieinamumo nuspėjimo papildinys."
+
+#. * summary
+msgid "Displays statistical information about your buddies' availability"
+msgstr "Rodo statistiką apie bičiulių prieinamumą"
+
+msgid "Buddy is idle"
+msgstr "bičiulis yra neveiklus"
+
+msgid "Buddy is away"
+msgstr "bičiulis yra pasitraukęs"
+
+msgid "Buddy is \"extended\" away"
+msgstr "bičiulis yra ilgam pasitraukęs"
+
+#. Not used yet.
+msgid "Buddy is mobile"
+msgstr "bičiulis yra mobilus"
+
+msgid "Buddy is offline"
+msgstr "bičiulis yra atsijungęs"
+
+msgid "Point values to use when..."
+msgstr "Kiek taškų skiriama, kai..."
+
+msgid ""
+"The buddy with the <i>largest score</i> is the buddy who will have priority "
+"in the contact.\n"
+msgstr "Bičiulis su <i>daugiausia taškų</i> turės kontakto pirmenybę.\n"
+
+msgid "Use last buddy when scores are equal"
+msgstr "Jeigu keli bičiuliai surinko vienodai taškų, pasirinkti paskutinį"
+
+msgid "Point values to use for account..."
+msgstr "Kiek taškų skiriama paskyrai..."
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Contact Priority"
+msgstr "Kontakto pirmenybė"
+
+#. *< name
+#. *< version
+#. *< summary
+msgid ""
+"Allows for controlling the values associated with different buddy states."
+msgstr "Leidžia keisti reikšmes, susietas su skirtingomis bičiulių būsenomis."
+
+#. *< description
+msgid ""
+"Allows for changing the point values of idle/away/offline states for buddies "
+"in contact priority computations."
+msgstr ""
+"Leidžia keisti reikšmes, susietas su įvairiomis bičiulių būsenomis, "
+"naudojamas kontakto pirmenybės skaičiavimuose."
+
+msgid "Conversation Colors"
+msgstr "Pokalbių spalvos"
+
# IM Convo trans options
-msgid "Customize colors in the conversation window"
-msgstr "Nustatyti pokalbių lango spalvas"
-
-msgid "Error Messages"
-msgstr "Klaidų pranešimai"
-
-msgid "Highlighted Messages"
-msgstr "Paryškintos žinutės"
-
-msgid "System Messages"
-msgstr "Sisteminės žinutės"
-
-msgid "Sent Messages"
-msgstr "Išsiųstos žinutės"
-
-msgid "Received Messages"
-msgstr "Gautos žinutės"
-
-#, c-format
-msgid "Select Color for %s"
-msgstr "Pasirinkite sąsajos elemento „%s“ spalvą"
-
-msgid "Ignore incoming format"
-msgstr "Ignoruoti gaunamų žinučių formato taikymą"
-
-msgid "Apply in Chats"
-msgstr "Taikyti pokalbių kambariuose"
-
-msgid "Apply in IMs"
-msgstr "Taikyti asmeniniams pokalbiams"
-
-msgid "By conversation count"
-msgstr "Pagal pokalbių skaičių"
-
-msgid "Conversation Placement"
-msgstr "Pokalbių patalpinimas"
-
-#. Translators: "New conversations" should match the text in the preferences dialog and "By conversation count" should be the same text used above
-msgid ""
-"Note: The preference for \"New conversations\" must be set to \"By "
-"conversation count\"."
-msgstr ""
-"Pastaba: parinktis „Nauji pokalbiai“ turi būti nustatyta kaip „Pagal "
-"pokalbių skaičių.“"
-
-msgid "Number of conversations per window"
-msgstr "Pokalbių skaičius langui"
-
-msgid "Separate IM and Chat windows when placing by number"
-msgstr ""
-"Talpinant pagal skaičių atskirti asmeninių pokalbių ir pokalbių kambarių "
-"langus"
-
+msgid "Customize colors in the conversation window"
+msgstr "Nustatyti pokalbių lango spalvas"
+
+msgid "Error Messages"
+msgstr "Klaidų pranešimai"
+
+msgid "Highlighted Messages"
+msgstr "Paryškintos žinutės"
+
+msgid "System Messages"
+msgstr "Sisteminės žinutės"
+
+msgid "Sent Messages"
+msgstr "Išsiųstos žinutės"
+
+msgid "Received Messages"
+msgstr "Gautos žinutės"
+
+#, c-format
+msgid "Select Color for %s"
+msgstr "Pasirinkite sąsajos elemento „%s“ spalvą"
+
+msgid "Ignore incoming format"
+msgstr "Ignoruoti gaunamų žinučių formato taikymą"
+
+msgid "Apply in Chats"
+msgstr "Taikyti pokalbių kambariuose"
+
+msgid "Apply in IMs"
+msgstr "Taikyti asmeniniams pokalbiams"
+
+msgid "By conversation count"
+msgstr "Pagal pokalbių skaičių"
+
+msgid "Conversation Placement"
+msgstr "Pokalbių patalpinimas"
+
+#. Translators: "New conversations" should match the text in the preferences dialog and "By conversation count" should be the same text used above
+msgid ""
+"Note: The preference for \"New conversations\" must be set to \"By "
+"conversation count\"."
+msgstr ""
+"Pastaba: parinktis „Nauji pokalbiai“ turi būti nustatyta kaip „Pagal "
+"pokalbių skaičių.“"
+
+msgid "Number of conversations per window"
+msgstr "Pokalbių skaičius langui"
+
+msgid "Separate IM and Chat windows when placing by number"
+msgstr ""
+"Talpinant pagal skaičių atskirti asmeninių pokalbių ir pokalbių kambarių "
+"langus"
+
# *< api_version
# *< type
# *< ui_requirement
@@ -13477,146 +13649,146 @@ msgstr ""
# *< priority
# *< id
# <„ExtPlacement“ yra tikrinis žodis, todėl neverstinas?
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-msgid "ExtPlacement"
-msgstr "ExtPlacement"
-
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "ExtPlacement"
+msgstr "ExtPlacement"
+
# *< name
# *< version
-#. *< name
-#. *< version
-msgid "Extra conversation placement options."
-msgstr "Papildomi pokalbių talpinimo į langus nustatymai"
-
+#. *< name
+#. *< version
+msgid "Extra conversation placement options."
+msgstr "Papildomi pokalbių talpinimo į langus nustatymai"
+
# *< summary
# * description
-#. *< summary
-#. * description
-msgid ""
-"Restrict the number of conversations per windows, optionally separating IMs "
-"and Chats"
-msgstr ""
-"Apriboja pokalbių skaičių viename lange ir gali suskirstyti asmeninius "
-"pokalbius ir pokalbius kambariuose į atskirus langus"
-
-#. Configuration frame
-msgid "Mouse Gestures Configuration"
-msgstr "Pelės gestų konfigūracija"
-
-msgid "Middle mouse button"
-msgstr "Vidurinis pelės klavišas"
-
-msgid "Right mouse button"
-msgstr "Dešinysis pelės klavišas"
-
+#. *< summary
+#. * description
+msgid ""
+"Restrict the number of conversations per windows, optionally separating IMs "
+"and Chats"
+msgstr ""
+"Apriboja pokalbių skaičių viename lange ir gali suskirstyti asmeninius "
+"pokalbius ir pokalbius kambariuose į atskirus langus"
+
+#. Configuration frame
+msgid "Mouse Gestures Configuration"
+msgstr "Pelės gestų konfigūracija"
+
+msgid "Middle mouse button"
+msgstr "Vidurinis pelės klavišas"
+
+msgid "Right mouse button"
+msgstr "Dešinysis pelės klavišas"
+
# "Visual gesture display" checkbox
-#. "Visual gesture display" checkbox
-msgid "_Visual gesture display"
-msgstr "_Vizualus gesto pavaizdavimas"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-msgid "Mouse Gestures"
-msgstr "Pelės gestai"
-
+#. "Visual gesture display" checkbox
+msgid "_Visual gesture display"
+msgstr "_Vizualus gesto pavaizdavimas"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Mouse Gestures"
+msgstr "Pelės gestai"
+
# *< name
# *< version
# * summary
-#. *< name
-#. *< version
-#. * summary
-msgid "Provides support for mouse gestures"
-msgstr "Leidžia naudoti pelės gestus"
-
+#. *< name
+#. *< version
+#. * summary
+msgid "Provides support for mouse gestures"
+msgstr "Leidžia naudoti pelės gestus"
+
# * description
-#. * description
-msgid ""
-"Allows support for mouse gestures in conversation windows. Drag the middle "
-"mouse button to perform certain actions:\n"
-" • Drag down and then to the right to close a conversation.\n"
-" • Drag up and then to the left to switch to the previous conversation.\n"
-" • Drag up and then to the right to switch to the next conversation."
-msgstr ""
-"Suteikia galimybę naudoti pelės gestus pokalbių kambariuose.\n"
-"Tempdami vidurinį klavišą galite atlikti tokius veiksmus:\n"
-"\n"
-" • Tempkite žemyn ir į dešinę pokalbio užvėrimui.\n"
-" • Tempkite aukštyn ir į kairę persijungimui į prieš tai buvusį pokalbį.\n"
-" • Tempkite aukštyn ir į dešinę persijungimui į kitą pokalbį."
-
-msgid "Instant Messaging"
-msgstr "Greitasis bendravimas"
-
-#. Add the label.
-msgid "Select a person from your address book below, or add a new person."
-msgstr ""
-"Pasirinkite asmenį iš Jūsų adresų knygos arba sukurkite naują asmens įrašą."
-
-msgid "Group:"
-msgstr "Grupė:"
-
-#. "New Person" button
-msgid "New Person"
-msgstr "Naujas asmuo"
-
-#. "Select Buddy" button
-msgid "Select Buddy"
-msgstr "Pasirinkti bičiulį"
-
+#. * description
+msgid ""
+"Allows support for mouse gestures in conversation windows. Drag the middle "
+"mouse button to perform certain actions:\n"
+" • Drag down and then to the right to close a conversation.\n"
+" • Drag up and then to the left to switch to the previous conversation.\n"
+" • Drag up and then to the right to switch to the next conversation."
+msgstr ""
+"Suteikia galimybę naudoti pelės gestus pokalbių kambariuose.\n"
+"Tempdami vidurinį klavišą galite atlikti tokius veiksmus:\n"
+"\n"
+" • Tempkite žemyn ir į dešinę pokalbio užvėrimui.\n"
+" • Tempkite aukštyn ir į kairę persijungimui į prieš tai buvusį pokalbį.\n"
+" • Tempkite aukštyn ir į dešinę persijungimui į kitą pokalbį."
+
+msgid "Instant Messaging"
+msgstr "Greitasis bendravimas"
+
+#. Add the label.
+msgid "Select a person from your address book below, or add a new person."
+msgstr ""
+"Pasirinkite asmenį iš Jūsų adresų knygos arba sukurkite naują asmens įrašą."
+
+msgid "Group:"
+msgstr "Grupė:"
+
+#. "New Person" button
+msgid "New Person"
+msgstr "Naujas asmuo"
+
+#. "Select Buddy" button
+msgid "Select Buddy"
+msgstr "Pasirinkti bičiulį"
+
# Add the label.
-#. Add the label.
-msgid ""
-"Select a person from your address book to add this buddy to, or create a new "
-"person."
-msgstr ""
-"Pasirinkti asmenį iš Jūsų adresų knygos, prie kurio pridėti šį bičiulį, arba "
-"sukurti naują asmenį."
-
-#. Add the expander
-msgid "User _details"
-msgstr "Vartotojo _duomenys"
-
+#. Add the label.
+msgid ""
+"Select a person from your address book to add this buddy to, or create a new "
+"person."
+msgstr ""
+"Pasirinkti asmenį iš Jūsų adresų knygos, prie kurio pridėti šį bičiulį, arba "
+"sukurti naują asmenį."
+
+#. Add the expander
+msgid "User _details"
+msgstr "Vartotojo _duomenys"
+
# "Associate Buddy" button
-#. "Associate Buddy" button
-msgid "_Associate Buddy"
-msgstr "_Susieti bičiulį"
-
-msgid "Unable to send email"
-msgstr "Negalima išsiųsti el. laiško"
-
-msgid "The evolution executable was not found in the PATH."
-msgstr "Vykdomasis Evolution failas nerastas PATH kintamajame."
-
-msgid "An email address was not found for this buddy."
-msgstr "Nerastas šio bičiulio el. pašto adresas."
-
-msgid "Add to Address Book"
-msgstr "Įtraukti į adresų knygą"
-
-msgid "Send Email"
-msgstr "Nusiųsti el. laišką"
-
+#. "Associate Buddy" button
+msgid "_Associate Buddy"
+msgstr "_Susieti bičiulį"
+
+msgid "Unable to send email"
+msgstr "Negalima išsiųsti el. laiško"
+
+msgid "The evolution executable was not found in the PATH."
+msgstr "Vykdomasis Evolution failas nerastas PATH kintamajame."
+
+msgid "An email address was not found for this buddy."
+msgstr "Nerastas šio bičiulio el. pašto adresas."
+
+msgid "Add to Address Book"
+msgstr "Įtraukti į adresų knygą"
+
+msgid "Send Email"
+msgstr "Nusiųsti el. laišką"
+
# Configuration frame
-#. Configuration frame
-msgid "Evolution Integration Configuration"
-msgstr "Evolution integracijos konfigūravimas"
-
+#. Configuration frame
+msgid "Evolution Integration Configuration"
+msgstr "Evolution integracijos konfigūravimas"
+
# Label
-#. Label
-msgid "Select all accounts that buddies should be auto-added to."
-msgstr ""
-"Pasirinkite visas paskyras, į kurias bičiuliai turėtų būti pridedami "
-"automatiškai."
-
+#. Label
+msgid "Select all accounts that buddies should be auto-added to."
+msgstr ""
+"Pasirinkite visas paskyras, į kurias bičiuliai turėtų būti pridedami "
+"automatiškai."
+
# *< api_version
# *< type
# *< ui_requirement
@@ -13624,45 +13796,45 @@ msgstr ""
# *< dependencies
# *< priority
# *< id
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-msgid "Evolution Integration"
-msgstr "Evolution integracija"
-
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "Provides integration with Evolution."
-msgstr "Suteikia integraciją su Evolution"
-
-msgid "Please enter the person's information below."
-msgstr "Prašau žemiau įvesti asmens informaciją."
-
-msgid "Please enter the buddy's username and account type below."
-msgstr "Prašau žemiau įvesti bičiulio naudotojo vardą ir paskyros tipą."
-
-msgid "Account type:"
-msgstr "Paskyros tipas:"
-
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Evolution Integration"
+msgstr "Evolution integracija"
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Provides integration with Evolution."
+msgstr "Suteikia integraciją su Evolution"
+
+msgid "Please enter the person's information below."
+msgstr "Prašau žemiau įvesti asmens informaciją."
+
+msgid "Please enter the buddy's username and account type below."
+msgstr "Prašau žemiau įvesti bičiulio naudotojo vardą ir paskyros tipą."
+
+msgid "Account type:"
+msgstr "Paskyros tipas:"
+
# Optional Information section
-#. Optional Information section
-msgid "Optional information:"
-msgstr "Nebūtina informacija:"
-
-msgid "First name:"
-msgstr "Vardas:"
-
-msgid "Last name:"
-msgstr "Pavardė:"
-
-msgid "Email:"
-msgstr "El. pašto adresas:"
-
+#. Optional Information section
+msgid "Optional information:"
+msgstr "Nebūtina informacija:"
+
+msgid "First name:"
+msgstr "Vardas:"
+
+msgid "Last name:"
+msgstr "Pavardė:"
+
+msgid "Email:"
+msgstr "El. pašto adresas:"
+
# *< api_version
# *< type
# *< ui_requirement
@@ -13670,38 +13842,38 @@ msgstr "El. pašto adresas:"
# *< dependencies
# *< priority
# *< id
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-msgid "GTK Signals Test"
-msgstr "GTK signalų testas"
-
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "GTK Signals Test"
+msgstr "GTK signalų testas"
+
# *< name
# *< version
# * summary
# * description
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "Test to see that all ui signals are working properly."
-msgstr "Testas, skirtas nustatyti, ar visi sąsajos signalai veikia teisingai."
-
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Test to see that all ui signals are working properly."
+msgstr "Testas, skirtas nustatyti, ar visi sąsajos signalai veikia teisingai."
+
# "New Buddy Pounce"
-#, c-format
-msgid ""
-"\n"
-"<b>Buddy Note</b>: %s"
-msgstr ""
-"\n"
-"<b>Bičiulio pastaba</b>: %s"
-
-msgid "History"
-msgstr "Istorija"
-
+#, c-format
+msgid ""
+"\n"
+"<b>Buddy Note</b>: %s"
+msgstr ""
+"\n"
+"<b>Bičiulio pastaba</b>: %s"
+
+msgid "History"
+msgstr "Istorija"
+
# *< api_version
# *< type
# *< ui_requirement
@@ -13709,184 +13881,184 @@ msgstr "Istorija"
# *< dependencies
# *< priority
# *< id
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-msgid "Iconify on Away"
-msgstr "Suskleisti pasitraukiant"
-
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Iconify on Away"
+msgstr "Suskleisti pasitraukiant"
+
# *< name
# *< version
# * summary
# * description
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "Iconifies the buddy list and your conversations when you go away."
-msgstr "Suskleidžia bičiulių sąrašą ir Jūsų pokalbius, kai Jūs pasitraukiate."
-
-msgid "Mail Checker"
-msgstr "Pašto tikrinimas"
-
-msgid "Checks for new local mail."
-msgstr "Patikrina, ar negautas naujas vietinis paštas."
-
-msgid "Adds a small box to the buddy list that shows if you have new mail."
-msgstr ""
-"Įdeda mažą langelį į bičiulių sąrašą, kuris parodo, ar turite naujo pašto."
-
-msgid "Markerline"
-msgstr "Skirtukas"
-
-msgid "Draw a line to indicate new messages in a conversation."
-msgstr "Pokalbių lange nubrėžia naujas žinutes atskiriančią liniją"
-
-msgid "Jump to markerline"
-msgstr "Peršokti prie skirtuko"
-
-msgid "Draw Markerline in "
-msgstr "Skirtuką piešti "
-
-msgid "_IM windows"
-msgstr "_asmeninių pokalbių languose"
-
-msgid "C_hat windows"
-msgstr "_pokalbių kambarių languose"
-
-msgid ""
-"A music messaging session has been requested. Please click the MM icon to "
-"accept."
-msgstr ""
-"Prašoma pradėti muzikinių žinučių seansą. Spustelėkite MM piktogramą seanso "
-"pradėjimui."
-
-msgid "Music messaging session confirmed."
-msgstr "Muzikinių žinučių seansas patvirtintas."
-
-msgid "Music Messaging"
-msgstr "Muzikinės žinutės"
-
-msgid "There was a conflict in running the command:"
-msgstr "Komandos vykdymo metu įvyko konfliktas"
-
-msgid "Error Running Editor"
-msgstr "Redaktoriaus vykdymo klaida"
-
-msgid "The following error has occurred:"
-msgstr "Įvyko klaida:"
-
-#. Configuration frame
-msgid "Music Messaging Configuration"
-msgstr "Muzikinių žinučių parinktys"
-
-msgid "Score Editor Path"
-msgstr "Partitūrų redaktoriaus kelias"
-
-msgid "_Apply"
-msgstr "_Vykdyti"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-msgid "Music Messaging Plugin for collaborative composition."
-msgstr "Muzikinių žinučių papildinys kolektyviniam muzikos kūrimui."
-
-#. * summary
-msgid ""
-"The Music Messaging Plugin allows a number of users to simultaneously work "
-"on a piece of music by editting a common score in real-time."
-msgstr ""
-"Muzikinių žinučių papildinys leidžia keliems vartotojams vienu metu kurti tą "
-"patį muzikinį kūrinį."
-
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Iconifies the buddy list and your conversations when you go away."
+msgstr "Suskleidžia bičiulių sąrašą ir Jūsų pokalbius, kai Jūs pasitraukiate."
+
+msgid "Mail Checker"
+msgstr "Pašto tikrinimas"
+
+msgid "Checks for new local mail."
+msgstr "Patikrina, ar negautas naujas vietinis paštas."
+
+msgid "Adds a small box to the buddy list that shows if you have new mail."
+msgstr ""
+"Įdeda mažą langelį į bičiulių sąrašą, kuris parodo, ar turite naujo pašto."
+
+msgid "Markerline"
+msgstr "Skirtukas"
+
+msgid "Draw a line to indicate new messages in a conversation."
+msgstr "Pokalbių lange nubrėžia naujas žinutes atskiriančią liniją"
+
+msgid "Jump to markerline"
+msgstr "Peršokti prie skirtuko"
+
+msgid "Draw Markerline in "
+msgstr "Skirtuką piešti "
+
+msgid "_IM windows"
+msgstr "_asmeninių pokalbių languose"
+
+msgid "C_hat windows"
+msgstr "_pokalbių kambarių languose"
+
+msgid ""
+"A music messaging session has been requested. Please click the MM icon to "
+"accept."
+msgstr ""
+"Prašoma pradėti muzikinių žinučių seansą. Spustelėkite MM piktogramą seanso "
+"pradėjimui."
+
+msgid "Music messaging session confirmed."
+msgstr "Muzikinių žinučių seansas patvirtintas."
+
+msgid "Music Messaging"
+msgstr "Muzikinės žinutės"
+
+msgid "There was a conflict in running the command:"
+msgstr "Komandos vykdymo metu įvyko konfliktas"
+
+msgid "Error Running Editor"
+msgstr "Redaktoriaus vykdymo klaida"
+
+msgid "The following error has occurred:"
+msgstr "Įvyko klaida:"
+
+#. Configuration frame
+msgid "Music Messaging Configuration"
+msgstr "Muzikinių žinučių parinktys"
+
+msgid "Score Editor Path"
+msgstr "Partitūrų redaktoriaus kelias"
+
+msgid "_Apply"
+msgstr "_Vykdyti"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+msgid "Music Messaging Plugin for collaborative composition."
+msgstr "Muzikinių žinučių papildinys kolektyviniam muzikos kūrimui."
+
+#. * summary
+msgid ""
+"The Music Messaging Plugin allows a number of users to simultaneously work "
+"on a piece of music by editting a common score in real-time."
+msgstr ""
+"Muzikinių žinučių papildinys leidžia keliems vartotojams vienu metu kurti tą "
+"patį muzikinį kūrinį."
+
# ---------- "Notify For" ----------
-#. ---------- "Notify For" ----------
-msgid "Notify For"
-msgstr "Pranešti apie:"
-
-msgid "\t_Only when someone says your username"
-msgstr " tik kai kas n_ors pasako Jūsų naudotojo vardą"
-
-msgid "_Focused windows"
-msgstr "_veikiamuosius langus"
-
+#. ---------- "Notify For" ----------
+msgid "Notify For"
+msgstr "Pranešti apie:"
+
+msgid "\t_Only when someone says your username"
+msgstr " tik kai kas n_ors pasako Jūsų naudotojo vardą"
+
+msgid "_Focused windows"
+msgstr "_veikiamuosius langus"
+
# ---------- "Notification Methods" ----------
-#. ---------- "Notification Methods" ----------
-msgid "Notification Methods"
-msgstr "Pranešimo būdai:"
-
-msgid "Prepend _string into window title:"
-msgstr "p_ridėti eilutę prieš lango pavadinimą:"
-
+#. ---------- "Notification Methods" ----------
+msgid "Notification Methods"
+msgstr "Pranešimo būdai:"
+
+msgid "Prepend _string into window title:"
+msgstr "p_ridėti eilutę prieš lango pavadinimą:"
+
# Count method button
-#. Count method button
-msgid "Insert c_ount of new messages into window title"
-msgstr "į_terpti naujų žinučių skaičių į lango pavadinimą"
-
+#. Count method button
+msgid "Insert c_ount of new messages into window title"
+msgstr "į_terpti naujų žinučių skaičių į lango pavadinimą"
+
# Count method button
-#. Count xprop method button
-msgid "Insert count of new message into _X property"
-msgstr "įterpti naujų žinučių skaičių į _X sąvybę"
-
+#. Count xprop method button
+msgid "Insert count of new message into _X property"
+msgstr "įterpti naujų žinučių skaičių į _X sąvybę"
+
# Urgent method button
-#. Urgent method button
-msgid "Set window manager \"_URGENT\" hint"
-msgstr "nustatyti langų tvarkytuvės „_URGENT“ patarimą"
-
-msgid "_Flash window"
-msgstr "_Mirginti langą"
-
+#. Urgent method button
+msgid "Set window manager \"_URGENT\" hint"
+msgstr "nustatyti langų tvarkytuvės „_URGENT“ patarimą"
+
+msgid "_Flash window"
+msgstr "_Mirginti langą"
+
# IM Convo trans options
-#. Raise window method button
-msgid "R_aise conversation window"
-msgstr "P_akelti pokalbių langą"
-
+#. Raise window method button
+msgid "R_aise conversation window"
+msgstr "P_akelti pokalbių langą"
+
# IM Convo trans options
-#. Present conversation method button
-msgid "_Present conversation window"
-msgstr "_Pristatyti pokalbių langą"
-
+#. Present conversation method button
+msgid "_Present conversation window"
+msgstr "_Pristatyti pokalbių langą"
+
# ---------- "Notification Removals" ----------
-#. ---------- "Notification Removals" ----------
-msgid "Notification Removal"
-msgstr "Baigti pranešimą, kai:"
-
+#. ---------- "Notification Removals" ----------
+msgid "Notification Removal"
+msgstr "Baigti pranešimą, kai:"
+
# Remove on focus button
-#. Remove on focus button
-msgid "Remove when conversation window _gains focus"
-msgstr "pokalbių _langas tampa veikiamasis"
-
+#. Remove on focus button
+msgid "Remove when conversation window _gains focus"
+msgstr "pokalbių _langas tampa veikiamasis"
+
# Remove on click button
-#. Remove on click button
-msgid "Remove when conversation window _receives click"
-msgstr "spragtelėjama ant pokalbių la_ngo"
-
+#. Remove on click button
+msgid "Remove when conversation window _receives click"
+msgstr "spragtelėjama ant pokalbių la_ngo"
+
# Remove on type button
-#. Remove on type button
-msgid "Remove when _typing in conversation window"
-msgstr "rašo_ma į pokalbių langą"
-
+#. Remove on type button
+msgid "Remove when _typing in conversation window"
+msgstr "rašo_ma į pokalbių langą"
+
# Remove on message send button
# Remove on message send button
-#. Remove on message send button
-msgid "Remove when a _message gets sent"
-msgstr "iš_siunčiama žinutė"
-
+#. Remove on message send button
+msgid "Remove when a _message gets sent"
+msgstr "iš_siunčiama žinutė"
+
# Remove on conversation switch button
# Remove on conversation switch button
-#. Remove on conversation switch button
-msgid "Remove on switch to conversation ta_b"
-msgstr "kai pers_ijungiama į pokalbio kortelę"
-
+#. Remove on conversation switch button
+msgid "Remove on switch to conversation ta_b"
+msgstr "kai pers_ijungiama į pokalbio kortelę"
+
# *< api_version
# *< type
# *< ui_requirement
@@ -13894,137 +14066,137 @@ msgstr "kai pers_ijungiama į pokalbio kortelę"
# *< dependencies
# *< priority
# *< id
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-msgid "Message Notification"
-msgstr "Pranešimai apie žinutes"
-
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Message Notification"
+msgstr "Pranešimai apie žinutes"
+
# *< name
# *< version
# * summary
# * description
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "Provides a variety of ways of notifying you of unread messages."
-msgstr "Siūlo keletą būdų, kaip Jums pranešti apie neperskaitytas žinutes"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-msgid "Pidgin Demonstration Plugin"
-msgstr "Demonstracinis Pidgin papildinys"
-
-#. *< name
-#. *< version
-#. * summary
-msgid "An example plugin that does stuff - see the description."
-msgstr "Pavyzdinis papildinis, kuris daro šį bei tą – skaitykite jo aprašymą."
-
-#. * description
-msgid ""
-"This is a really cool plugin that does a lot of stuff:\n"
-"- It tells you who wrote the program when you log in\n"
-"- It reverses all incoming text\n"
-"- It sends a message to people on your list immediately when they sign on"
-msgstr ""
-"Tai yra tikrai kietas papildinys, mokantis daug ką daryti:\n"
-"- jis Jums pasako, kas parašė programą, kai prisijungiate;\n"
-"- jis apsuka visą gaunamą tekstą\n"
-"- jis nusiunčia žinutę Jūsų bičiuliams iškart, kai jie prisijungia."
-
-msgid "Cursor Color"
-msgstr "Žymeklio spalva"
-
-msgid "Secondary Cursor Color"
-msgstr "Antrinė žymeklio spalva"
-
-msgid "Hyperlink Color"
-msgstr "Hipersaito spalva"
-
-msgid "Visited Hyperlink Color"
-msgstr "Aplankyhto hipersaito spalva"
-
-msgid "Highlighted Message Name Color"
-msgstr "Vardo paryškintoje žinutėje spalva"
-
-msgid "GtkTreeView Horizontal Separation"
-msgstr "GtkTreeView horizontalus atskyrimo tarpas"
-
-msgid "Conversation Entry"
-msgstr "Pokalbio įrašas"
-
-msgid "Request Dialog"
-msgstr "Užklausos dialogas"
-
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Provides a variety of ways of notifying you of unread messages."
+msgstr "Siūlo keletą būdų, kaip Jums pranešti apie neperskaitytas žinutes"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Pidgin Demonstration Plugin"
+msgstr "Demonstracinis Pidgin papildinys"
+
+#. *< name
+#. *< version
+#. * summary
+msgid "An example plugin that does stuff - see the description."
+msgstr "Pavyzdinis papildinis, kuris daro šį bei tą – skaitykite jo aprašymą."
+
+#. * description
+msgid ""
+"This is a really cool plugin that does a lot of stuff:\n"
+"- It tells you who wrote the program when you log in\n"
+"- It reverses all incoming text\n"
+"- It sends a message to people on your list immediately when they sign on"
+msgstr ""
+"Tai yra tikrai kietas papildinys, mokantis daug ką daryti:\n"
+"- jis Jums pasako, kas parašė programą, kai prisijungiate;\n"
+"- jis apsuka visą gaunamą tekstą\n"
+"- jis nusiunčia žinutę Jūsų bičiuliams iškart, kai jie prisijungia."
+
+msgid "Cursor Color"
+msgstr "Žymeklio spalva"
+
+msgid "Secondary Cursor Color"
+msgstr "Antrinė žymeklio spalva"
+
+msgid "Hyperlink Color"
+msgstr "Hipersaito spalva"
+
+msgid "Visited Hyperlink Color"
+msgstr "Aplankyhto hipersaito spalva"
+
+msgid "Highlighted Message Name Color"
+msgstr "Vardo paryškintoje žinutėje spalva"
+
+msgid "GtkTreeView Horizontal Separation"
+msgstr "GtkTreeView horizontalus atskyrimo tarpas"
+
+msgid "Conversation Entry"
+msgstr "Pokalbio įrašas"
+
+msgid "Request Dialog"
+msgstr "Užklausos dialogas"
+
# ---------- "Notify For" ----------
-msgid "Notify Dialog"
-msgstr "Informacinis dialogas"
-
-msgid "Select Color"
-msgstr "Pasirinkite spalvą"
-
-#, c-format
-msgid "Select Interface Font"
-msgstr "Pasirinkite sąsajos šriftą"
-
-#, c-format
-msgid "Select Font for %s"
-msgstr "Pasirinkite sąsajos elemento „%s“ šriftą"
-
-msgid "GTK+ Interface Font"
-msgstr "GTK+ sąsajos šriftas"
-
-msgid "GTK+ Text Shortcut Theme"
-msgstr "GTK+ prieigos klavišų parinktis"
-
-#.
-#. for (i = 0; i < G_N_ELEMENTS(widget_bool_prefs); i++) {
-#. hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_CAT_SPACE);
-#. gtk_box_pack_start(GTK_BOX(frame), hbox, FALSE, FALSE, 0);
-#.
-#. check = pidgin_prefs_checkbox(_(widget_bool_names[i]),
-#. widget_bool_prefs_set[i], hbox);
-#. gtk_size_group_add_widget(labelsg, check);
-#.
-#. widget_bool_widgets[i] = pidgin_prefs_checkbox("", widget_bool_prefs[i], hbox);
-#. *
-#. gtk_size_group_add_widget(widgetsb, widget_bool_widgets[i]);
-#. *
-#. gtk_widget_set_sensitive(widget_bool_widgets[i],
-#. purple_prefs_get_bool(widget_bool_prefs_set[i]));
-#. g_signal_connect(G_OBJECT(check), "toggled",
-#. G_CALLBACK(pidgin_toggle_sensitive),
-#. widget_bool_widgets[i]);
-#. }
-#.
-msgid "Interface colors"
-msgstr "Sąsajos spalvos"
-
-msgid "Widget Sizes"
-msgstr "Sąsajos elementų dydžiai"
-
-msgid "Fonts"
-msgstr "Šriftai"
-
-msgid "Gtkrc File Tools"
-msgstr "Gtkrc failų įrankiai"
-
-#, c-format
-msgid "Write settings to %s%sgtkrc-2.0"
-msgstr "Įrašyti nuostatas į %s%sgtkrc-2.0"
-
-msgid "Re-read gtkrc files"
-msgstr "Iš naujo įkelti gtkrc failus"
-
+msgid "Notify Dialog"
+msgstr "Informacinis dialogas"
+
+msgid "Select Color"
+msgstr "Pasirinkite spalvą"
+
+#, c-format
+msgid "Select Interface Font"
+msgstr "Pasirinkite sąsajos šriftą"
+
+#, c-format
+msgid "Select Font for %s"
+msgstr "Pasirinkite sąsajos elemento „%s“ šriftą"
+
+msgid "GTK+ Interface Font"
+msgstr "GTK+ sąsajos šriftas"
+
+msgid "GTK+ Text Shortcut Theme"
+msgstr "GTK+ prieigos klavišų parinktis"
+
+#.
+#. for (i = 0; i < G_N_ELEMENTS(widget_bool_prefs); i++) {
+#. hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_CAT_SPACE);
+#. gtk_box_pack_start(GTK_BOX(frame), hbox, FALSE, FALSE, 0);
+#.
+#. check = pidgin_prefs_checkbox(_(widget_bool_names[i]),
+#. widget_bool_prefs_set[i], hbox);
+#. gtk_size_group_add_widget(labelsg, check);
+#.
+#. widget_bool_widgets[i] = pidgin_prefs_checkbox("", widget_bool_prefs[i], hbox);
+#. *
+#. gtk_size_group_add_widget(widgetsb, widget_bool_widgets[i]);
+#. *
+#. gtk_widget_set_sensitive(widget_bool_widgets[i],
+#. purple_prefs_get_bool(widget_bool_prefs_set[i]));
+#. g_signal_connect(G_OBJECT(check), "toggled",
+#. G_CALLBACK(pidgin_toggle_sensitive),
+#. widget_bool_widgets[i]);
+#. }
+#.
+msgid "Interface colors"
+msgstr "Sąsajos spalvos"
+
+msgid "Widget Sizes"
+msgstr "Sąsajos elementų dydžiai"
+
+msgid "Fonts"
+msgstr "Šriftai"
+
+msgid "Gtkrc File Tools"
+msgstr "Gtkrc failų įrankiai"
+
+#, c-format
+msgid "Write settings to %s%sgtkrc-2.0"
+msgstr "Įrašyti nuostatas į %s%sgtkrc-2.0"
+
+msgid "Re-read gtkrc files"
+msgstr "Iš naujo įkelti gtkrc failus"
+
# *< api_version
# *< type
# *< ui_requirement
@@ -14032,39 +14204,39 @@ msgstr "Iš naujo įkelti gtkrc failus"
# *< dependencies
# *< priority
# *< id
-msgid "Pidgin GTK+ Theme Control"
-msgstr "Pidgin GTK+ apipavidalinimo parinktys"
-
-msgid "Provides access to commonly used gtkrc settings."
-msgstr "Leidžia keisti dažnai naudojamas gtkrc parinktis."
-
-msgid "Raw"
-msgstr "Neapdorota įvestis"
-
-msgid "Lets you send raw input to text-based protocols."
-msgstr "Leidžia Jums tiesiogiai įvesti tekstinių protokolų komandas."
-
-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 ""
-"Leidžia Jums siųsti neapdorotą įvestį tekstiniams protokolams (Jabber, MSN, "
-"IRC, TOC). Paspauskite „Enter“ įvedimo langelyje išsiuntimui. Stebėkite "
-"derinimo langą."
-
-#, c-format
-msgid "You can upgrade to %s %s today."
-msgstr "Šiandien jau galite atnaujinti į %s %s."
-
-msgid "New Version Available"
-msgstr "Pasirodė nauja versija"
-
-msgid "Later"
-msgstr "Vėliau"
-
-msgid "Download Now"
-msgstr "Atsisiųsti dabar"
-
+msgid "Pidgin GTK+ Theme Control"
+msgstr "Pidgin GTK+ apipavidalinimo parinktys"
+
+msgid "Provides access to commonly used gtkrc settings."
+msgstr "Leidžia keisti dažnai naudojamas gtkrc parinktis."
+
+msgid "Raw"
+msgstr "Neapdorota įvestis"
+
+msgid "Lets you send raw input to text-based protocols."
+msgstr "Leidžia Jums tiesiogiai įvesti tekstinių protokolų komandas."
+
+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 ""
+"Leidžia Jums siųsti neapdorotą įvestį tekstiniams protokolams (Jabber, MSN, "
+"IRC, TOC). Paspauskite „Enter“ įvedimo langelyje išsiuntimui. Stebėkite "
+"derinimo langą."
+
+#, c-format
+msgid "You can upgrade to %s %s today."
+msgstr "Šiandien jau galite atnaujinti į %s %s."
+
+msgid "New Version Available"
+msgstr "Pasirodė nauja versija"
+
+msgid "Later"
+msgstr "Vėliau"
+
+msgid "Download Now"
+msgstr "Atsisiųsti dabar"
+
# *< api_version
# *< type
# *< ui_requirement
@@ -14072,327 +14244,504 @@ msgstr "Atsisiųsti dabar"
# *< dependencies
# *< priority
# *< id
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-msgid "Release Notification"
-msgstr "Pranešimas apie laidą"
-
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Release Notification"
+msgstr "Pranešimas apie laidą"
+
# *< name
# *< version
# * summary
-#. *< name
-#. *< version
-#. * summary
-msgid "Checks periodically for new releases."
-msgstr "Periodiškai patikrina, ar neišleistos naujos versijos"
-
+#. *< name
+#. *< version
+#. * summary
+msgid "Checks periodically for new releases."
+msgstr "Periodiškai patikrina, ar neišleistos naujos versijos"
+
# * description
-#. * description
-msgid ""
-"Checks periodically for new releases and notifies the user with the "
-"ChangeLog."
-msgstr ""
-"Periodiškai patikrina, ar neišleistos naujos versijos ir praneša apie tai "
-"vartotojui kartu su pakeitimų sąrašu."
-
+#. * description
+msgid ""
+"Checks periodically for new releases and notifies the user with the "
+"ChangeLog."
+msgstr ""
+"Periodiškai patikrina, ar neišleistos naujos versijos ir praneša apie tai "
+"vartotojui kartu su pakeitimų sąrašu."
+
# Build the Send As menu
-#. *< major version
-#. *< minor version
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-msgid "Send Button"
-msgstr "Siuntimo mygtukas"
-
+#. *< major version
+#. *< minor version
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Send Button"
+msgstr "Siuntimo mygtukas"
+
# IM Convo trans options
-#. *< name
-#. *< version
-msgid "Conversation Window Send Button."
-msgstr "Mygtukas „Siųsti“ pokalbių languose"
-
-#. *< summary
-msgid ""
-"Adds a Send button to the entry area of the conversation window. Intended "
-"for when no physical keyboard is present."
-msgstr ""
-"Prideda mygtuką „Siųsti“ į pokalbių lango įvedimo sritį. Skirta naudojimui, "
-"kai nėra realios klaviatūros."
-
-msgid "Duplicate Correction"
-msgstr "Pakartoto žodžio pataisymas"
-
-msgid "The specified word already exists in the correction list."
-msgstr "Toks žodis jau yra pataisymų sąraše."
-
-msgid "Text Replacements"
-msgstr "Teksto pakeitimai"
-
-msgid "You type"
-msgstr "Jūs parašote"
-
-msgid "You send"
-msgstr "Jūs išsiunčiate"
-
-msgid "Whole words only"
-msgstr "Tik ištisi žodžiai"
-
-msgid "Case sensitive"
-msgstr "Skirti mažąsias ir didžiąsias raides"
-
-msgid "Add a new text replacement"
-msgstr "Sukurti naują teksto pakeitimą"
-
-msgid "You _type:"
-msgstr "Jūs parašo_te:"
-
-msgid "You _send:"
-msgstr "Jūs iš_siunčiate:"
-
-#. Created here so it can be passed to whole_words_button_toggled.
-msgid "_Exact case match (uncheck for automatic case handling)"
-msgstr ""
-"Tikslus didžiųjų ir mažųjų raidžių sutapimas (panaikinkite žymėjimą "
-"automatiniam apdorojimui)"
-
-msgid "Only replace _whole words"
-msgstr "Keisti tik _ištisus žodžius"
-
-msgid "General Text Replacement Options"
-msgstr "Bendrosios teksto pakeitimo parinktys"
-
-msgid "Enable replacement of last word on send"
-msgstr "Leisti paskutinio žodžio pakeitimą išsiuntimo metu"
-
-msgid "Text replacement"
-msgstr "Teksto pakeitimas"
-
-msgid "Replaces text in outgoing messages according to user-defined rules."
-msgstr ""
-"Pakeičia tekstą išsiunčiamose žinutėse pagal vartotojo sukurtas taisykles."
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-msgid "Buddy Ticker"
-msgstr "Bičiulių juosta"
-
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "A horizontal scrolling version of the buddy list."
-msgstr "Horizontalus slenkantis bičiulių sąrašo variantas."
-
-msgid "Display Timestamps Every"
-msgstr "Rodyti laiko žymes kas"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-msgid "Timestamp"
-msgstr "Laiko žymos"
-
-#. *< name
-#. *< version
-#. * summary
-msgid "Display iChat-style timestamps"
-msgstr "Rodo iChat stiliaus laiko žymas"
-
-#. * description
-msgid "Display iChat-style timestamps every N minutes."
-msgstr "Kas N minučių rodo iChat stiliaus laiko žymes"
-
-msgid "Timestamp Format Options"
-msgstr "Laiko žymių formato parinktys"
-
-#, c-format
-msgid "_Force 24-hour time format"
-msgstr "_Būtinai naudoti 24 valandų laiko formatą"
-
-msgid "Show dates in..."
-msgstr "Rodyti datas..."
-
-msgid "Co_nversations:"
-msgstr "pokalbiuose:"
-
-msgid "For delayed messages"
-msgstr "uždelstoms žinutėms"
-
-msgid "For delayed messages and in chats"
-msgstr "uždelstoms žinutėms ir pokalbių kambariams"
-
-msgid "_Message Logs:"
-msgstr "Ž_urnaluose:"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-msgid "Message Timestamp Formats"
-msgstr "Žinučių laiko žymių formatai"
-
-#. *< name
-#. *< version
-#. * summary
-msgid "Customizes the message timestamp formats."
-msgstr "Parenka žinučių laiko žymių formatus."
-
-#. * description
-msgid ""
-"This plugin allows the user to customize conversation and logging message "
-"timestamp formats."
-msgstr ""
-"Šis papildinys leidžia vartotojui pasirinkti pokalbių ir žurnalų žinučių "
-"laiko žymių formatus."
-
-msgid "Opacity:"
-msgstr "Nepermatomumas:"
-
+#. *< name
+#. *< version
+msgid "Conversation Window Send Button."
+msgstr "Mygtukas „Siųsti“ pokalbių languose"
+
+#. *< summary
+msgid ""
+"Adds a Send button to the entry area of the conversation window. Intended "
+"for when no physical keyboard is present."
+msgstr ""
+"Prideda mygtuką „Siųsti“ į pokalbių lango įvedimo sritį. Skirta naudojimui, "
+"kai nėra realios klaviatūros."
+
+msgid "Duplicate Correction"
+msgstr "Pakartoto žodžio pataisymas"
+
+msgid "The specified word already exists in the correction list."
+msgstr "Toks žodis jau yra pataisymų sąraše."
+
+msgid "Text Replacements"
+msgstr "Teksto pakeitimai"
+
+msgid "You type"
+msgstr "Jūs parašote"
+
+msgid "You send"
+msgstr "Jūs išsiunčiate"
+
+msgid "Whole words only"
+msgstr "Tik ištisi žodžiai"
+
+msgid "Case sensitive"
+msgstr "Skirti mažąsias ir didžiąsias raides"
+
+msgid "Add a new text replacement"
+msgstr "Sukurti naują teksto pakeitimą"
+
+msgid "You _type:"
+msgstr "Jūs parašo_te:"
+
+msgid "You _send:"
+msgstr "Jūs iš_siunčiate:"
+
+#. Created here so it can be passed to whole_words_button_toggled.
+msgid "_Exact case match (uncheck for automatic case handling)"
+msgstr ""
+"Tikslus didžiųjų ir mažųjų raidžių sutapimas (panaikinkite žymėjimą "
+"automatiniam apdorojimui)"
+
+msgid "Only replace _whole words"
+msgstr "Keisti tik _ištisus žodžius"
+
+msgid "General Text Replacement Options"
+msgstr "Bendrosios teksto pakeitimo parinktys"
+
+msgid "Enable replacement of last word on send"
+msgstr "Leisti paskutinio žodžio pakeitimą išsiuntimo metu"
+
+msgid "Text replacement"
+msgstr "Teksto pakeitimas"
+
+msgid "Replaces text in outgoing messages according to user-defined rules."
+msgstr ""
+"Pakeičia tekstą išsiunčiamose žinutėse pagal vartotojo sukurtas taisykles."
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Buddy Ticker"
+msgstr "Bičiulių juosta"
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "A horizontal scrolling version of the buddy list."
+msgstr "Horizontalus slenkantis bičiulių sąrašo variantas."
+
+msgid "Display Timestamps Every"
+msgstr "Rodyti laiko žymes kas"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Timestamp"
+msgstr "Laiko žymos"
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Display iChat-style timestamps"
+msgstr "Rodo iChat stiliaus laiko žymas"
+
+#. * description
+msgid "Display iChat-style timestamps every N minutes."
+msgstr "Kas N minučių rodo iChat stiliaus laiko žymes"
+
+msgid "Timestamp Format Options"
+msgstr "Laiko žymių formato parinktys"
+
+#, c-format
+msgid "_Force 24-hour time format"
+msgstr "_Būtinai naudoti 24 valandų laiko formatą"
+
+msgid "Show dates in..."
+msgstr "Rodyti datas..."
+
+msgid "Co_nversations:"
+msgstr "pokalbiuose:"
+
+msgid "For delayed messages"
+msgstr "uždelstoms žinutėms"
+
+msgid "For delayed messages and in chats"
+msgstr "uždelstoms žinutėms ir pokalbių kambariams"
+
+msgid "_Message Logs:"
+msgstr "Ž_urnaluose:"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Message Timestamp Formats"
+msgstr "Žinučių laiko žymių formatai"
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Customizes the message timestamp formats."
+msgstr "Parenka žinučių laiko žymių formatus."
+
+#. * description
+msgid ""
+"This plugin allows the user to customize conversation and logging message "
+"timestamp formats."
+msgstr ""
+"Šis papildinys leidžia vartotojui pasirinkti pokalbių ir žurnalų žinučių "
+"laiko žymių formatus."
+
+msgid "Opacity:"
+msgstr "Nepermatomumas:"
+
# IM Convo trans options
-#. IM Convo trans options
-msgid "IM Conversation Windows"
-msgstr "Pokalbių langai"
-
-msgid "_IM window transparency"
-msgstr "Pokalb_ių langų permatotumas"
-
-msgid "_Show slider bar in IM window"
-msgstr "Rodyti šliaužiklio juo_stą pokalbių lange"
-
-msgid "Remove IM window transparency on focus"
-msgstr "Aktyvavus pokalbių langą pašalinti jo permatomumą"
-
-msgid "Always on top"
-msgstr "Visada viršuje"
-
+#. IM Convo trans options
+msgid "IM Conversation Windows"
+msgstr "Pokalbių langai"
+
+msgid "_IM window transparency"
+msgstr "Pokalb_ių langų permatotumas"
+
+msgid "_Show slider bar in IM window"
+msgstr "Rodyti šliaužiklio juo_stą pokalbių lange"
+
+msgid "Remove IM window transparency on focus"
+msgstr "Aktyvavus pokalbių langą pašalinti jo permatomumą"
+
+msgid "Always on top"
+msgstr "Visada viršuje"
+
# Buddy List trans options
-#. Buddy List trans options
-msgid "Buddy List Window"
-msgstr "Bičiulių sąrašo langas"
-
-msgid "_Buddy List window transparency"
-msgstr "_Bičiulių sąrašo lango permatomumas"
-
-msgid "Remove Buddy List window transparency on focus"
-msgstr "Aktyvavus bičiulių sąrašo langą pašalinti jo permatomumą"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-msgid "Transparency"
-msgstr "Permatomumas"
-
+#. Buddy List trans options
+msgid "Buddy List Window"
+msgstr "Bičiulių sąrašo langas"
+
+msgid "_Buddy List window transparency"
+msgstr "_Bičiulių sąrašo lango permatomumas"
+
+msgid "Remove Buddy List window transparency on focus"
+msgstr "Aktyvavus bičiulių sąrašo langą pašalinti jo permatomumą"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Transparency"
+msgstr "Permatomumas"
+
# *< name
# *< version
# * summary
-#. *< name
-#. *< version
-#. * summary
-msgid "Variable Transparency for the buddy list and conversations."
-msgstr "Kintamas permatumomas bičiulių sąrašo ir pokalbių langams."
-
+#. *< name
+#. *< version
+#. * summary
+msgid "Variable Transparency for the buddy list and conversations."
+msgstr "Kintamas permatumomas bičiulių sąrašo ir pokalbių langams."
+
# * description
-#. * description
-msgid ""
-"This plugin enables variable alpha transparency on conversation windows and "
-"the buddy list.\n"
-"\n"
-"* Note: This plugin requires Win2000 or greater."
-msgstr ""
-"Šis papildinys suteikia reguliuojamą alfa permatomumą pokalbių ir bičiulių "
-"sąrašo langams.\n"
-"\n"
-"* Pastaba: šis papildinys reikalauja Windows 2000 arba vėlesnės versijos."
-
-msgid "GTK+ Runtime Version"
-msgstr "GTK+ vykdymo laiko bibliotekos versija"
-
+#. * description
+msgid ""
+"This plugin enables variable alpha transparency on conversation windows and "
+"the buddy list.\n"
+"\n"
+"* Note: This plugin requires Win2000 or greater."
+msgstr ""
+"Šis papildinys suteikia reguliuojamą alfa permatomumą pokalbių ir bičiulių "
+"sąrašo langams.\n"
+"\n"
+"* Pastaba: šis papildinys reikalauja Windows 2000 arba vėlesnės versijos."
+
+msgid "GTK+ Runtime Version"
+msgstr "GTK+ vykdymo laiko bibliotekos versija"
+
# Autostart
# Autostart
-#. Autostart
-msgid "Startup"
-msgstr "Paleidimas"
-
-#, c-format
-msgid "_Start %s on Windows startup"
-msgstr "Paleisti %s Window_s paleidimo metu"
-
-msgid "_Dockable Buddy List"
-msgstr "_Pritvirtinamas bičiulių langas"
-
+#. Autostart
+msgid "Startup"
+msgstr "Paleidimas"
+
+#, c-format
+msgid "_Start %s on Windows startup"
+msgstr "Paleisti %s Window_s paleidimo metu"
+
+msgid "_Dockable Buddy List"
+msgstr "_Pritvirtinamas bičiulių langas"
+
# Blist On Top
-#. Blist On Top
-msgid "_Keep Buddy List window on top:"
-msgstr "Lai_kyti bičiulių sąrašo langą viršuje:"
-
-#. XXX: Did this ever work?
-msgid "Only when docked"
-msgstr "tik kai pritvirtintas"
-
-msgid "Windows Pidgin Options"
-msgstr "Windows Pidgin parinktys"
-
-msgid "Options specific to Pidgin for Windows."
-msgstr "Specifinės Pidgin parinktys Windows operacinei sistemai."
-
-msgid ""
-"Provides options specific to Pidgin for Windows , such as buddy list docking."
-msgstr ""
-"Leidžia keisti Pidgin parinktis, kurios yra specifinės Windows operacinėje "
-"sistemoje, pavyzdžiui, bičiulių sąrašo lango pritvirtinimą."
-
-msgid "<font color='#777777'>Logged out.</font>"
-msgstr "<font color='#777777'>Atsijungė.</font>"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-msgid "XMPP Console"
-msgstr "XMPP pultas"
-
+#. Blist On Top
+msgid "_Keep Buddy List window on top:"
+msgstr "Lai_kyti bičiulių sąrašo langą viršuje:"
+
+#. XXX: Did this ever work?
+msgid "Only when docked"
+msgstr "tik kai pritvirtintas"
+
+msgid "Windows Pidgin Options"
+msgstr "Windows Pidgin parinktys"
+
+msgid "Options specific to Pidgin for Windows."
+msgstr "Specifinės Pidgin parinktys Windows operacinei sistemai."
+
+msgid ""
+"Provides options specific to Pidgin for Windows , such as buddy list docking."
+msgstr ""
+"Leidžia keisti Pidgin parinktis, kurios yra specifinės Windows operacinėje "
+"sistemoje, pavyzdžiui, bičiulių sąrašo lango pritvirtinimą."
+
+msgid "<font color='#777777'>Logged out.</font>"
+msgstr "<font color='#777777'>Atsijungė.</font>"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "XMPP Console"
+msgstr "XMPP pultas"
+
# Set up stuff for the account box
-msgid "Account: "
-msgstr "Paskyra:"
-
-msgid "<font color='#777777'>Not connected to XMPP</font>"
-msgstr "<font color='#777777'>Neprisijungta prie XMPP</font>"
-
-msgid "Insert an <iq/> stanza."
-msgstr "Įterpti <iq/> strofą."
-
-msgid "Insert a <presence/> stanza."
-msgstr "Įterpti <presence/> strofą."
-
-msgid "Insert a <message/> stanza."
-msgstr "Įterpti <message/> strofą."
-
-#. *< name
-#. *< version
-#. * summary
-msgid "Send and receive raw XMPP stanzas."
-msgstr "Siųsti ir gauti neapdorotas XMPP strofas."
-
-#. * description
-msgid "This plugin is useful for debbuging XMPP servers or clients."
-msgstr "Šis papildinys naudingas XMPP serverių ir klientų derinimui."
+msgid "Account: "
+msgstr "Paskyra:"
+
+msgid "<font color='#777777'>Not connected to XMPP</font>"
+msgstr "<font color='#777777'>Neprisijungta prie XMPP</font>"
+
+msgid "Insert an <iq/> stanza."
+msgstr "Įterpti <iq/> strofą."
+
+msgid "Insert a <presence/> stanza."
+msgstr "Įterpti <presence/> strofą."
+
+msgid "Insert a <message/> stanza."
+msgstr "Įterpti <message/> strofą."
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Send and receive raw XMPP stanzas."
+msgstr "Siųsti ir gauti neapdorotas XMPP strofas."
+
+#. * description
+msgid "This plugin is useful for debbuging XMPP servers or clients."
+msgstr "Šis papildinys naudingas XMPP serverių ir klientų derinimui."
+
+#~ msgid "Invite message"
+#~ msgstr "Pakvietimo žinutė"
+
+# Put our happy label in it.
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Prašom įvesti vartotojo, kurį norite pakviesti, vardą kartu su "
+#~ "neprivaloma pakvietimo žinute."
+
+#~ msgid "Looking up %s"
+#~ msgstr "Ieškoma %s"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "Prisijungimas prie %s nepavyko"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Prisijungiama: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "Negalima rašyti failo %s."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "Negalima skaityti failo %s."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "Žinutė per ilga, paskutiniai %s bitai nukąsti."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s nėra šiuo metu prisijungęs"
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "Vartotojo %s perspėjimas neleidžiamas"
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr "Žinutė prarasta, Jūs viršijote maksimalią serverio greičio ribą"
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "Pokalbis %s nepasiekiamas"
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "Žinutes gavėjui %s Jūs siunčiate per greitai."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "Jūs praleidote žinutę iš %s, nes ji buvo išsiųsta per didelė"
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr "Jūs praleidote žinutę iš %s, nes ji buvo išsiųsta per greitai."
+
+#~ msgid "Failure."
+#~ msgstr "Nesekmė."
+
+#~ msgid "Too many matches."
+#~ msgstr "Per daug atitikimų."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "Reikia labiau apibrėžti."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "Katalogo tarnyba laikinai neprieinama."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "El. pašto adresų paieška apribota."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "Ignoruotas bazinis žodis"
+
+#~ msgid "No keywords."
+#~ msgstr "Nėra bazinių žodžių"
+
+#~ msgid "User has no directory information."
+#~ msgstr "Vartotojas neturi katalogo informacijos"
+
+#~ msgid "Country not supported."
+#~ msgstr "Nepalaikoma šalis."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Nežinoma nesekmė: %s."
+
+#~ msgid "Incorrect username or password."
+#~ msgstr "Neteisingas naudotojo vardas arba slaptažodis"
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "Paslauga laikinai nepasiekiama"
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr ""
+#~ "Jūsų perspėjimo lygis šiuo metu yra per aukštas, kad galėtumėte "
+#~ "prisijungti."
+
+#~ 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 ""
+#~ "Jūs prisijunginėjote ir atsijunginėjote per dažnai. Palaukite dešimt "
+#~ "minučių ir pabandykite iš naujo. Jei ir toliau bandysite, Jums reikės "
+#~ "laukti dar ilgiau."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "Įvyko nežinoma prisijungimo klaida: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "Įvyko nežinoma klaida %d. Informacija: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "Neteisingas grupės pavadinimas"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Jungtis uždaryta"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "Laukiama atsako..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr ""
+#~ "TOC protokolo užlaikymas baigėsi. Dabar Jūs vėl galite siųsti žinutes."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "Slaptažodis pakeistas sėkmingai"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Gauti katalogo informaciją"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Nustatyti katalogo informaciją"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "Nepavyko atverti %s rašymui!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr "Failų perdavimas nepavyko; greičiausiai kita pusė jį nutraukė."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "Nepavyko prisijungti perdavimui."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "Nepavyko rašyti failo antraštės. Failas nebus perduotas."
+
+#~ msgid "Save As..."
+#~ msgstr "Įrašyti kaip..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s prašo %s priimti %d failą: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s prašo %s priimti %d failus: %s (%.2f %s)%s%s"
+#~ msgstr[2] "%s prašo %s priimti %d failų: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s prašo nusiųsti jam failą"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "TOC protokolo papildinys"
+
+#~ msgid "%s Options"
+#~ msgstr "%s parinktys"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Tarpininko parinktys"
+
+#~ msgid "By log size"
+#~ msgstr "pagal žurnalo dydį"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_Atverti saitą naršyklėje"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "ST_UN Serveris:"
+
+#~ msgid "Smiley _Image"
+#~ msgstr "_Šypsenėlės paveiksliukas"
+
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "_Šypsenėlės klavišų seka"
diff --git a/po/mk.po b/po/mk.po
index ca87e842be..efb00dae7d 100644
--- a/po/mk.po
+++ b/po/mk.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: mk\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
+"POT-Creation-Date: 2009-04-30 10:39-0400\n"
"PO-Revision-Date: 2008-05-07 12:24+0200\n"
"Last-Translator: Arangel Angov <ufo@linux.net.mk>\n"
"Language-Team: Macedonian <ossm-members@hedona.on.net.mk>\n"
@@ -30,13 +30,13 @@ msgstr "Finch"
msgid "%s. Try `%s -h' for more information.\n"
msgstr "%s. Пробајте `%s -h' за повеќе информации.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -615,21 +615,6 @@ msgstr ""
msgid "Send To"
msgstr "Испрати на"
-#, fuzzy
-msgid "Invite message"
-msgstr "Внеси во пораката"
-
-msgid "Invite"
-msgstr "Покани"
-
-#, fuzzy
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Внесете го името на пријателот што сакате да го поканите, заедно со пораката "
-"за покана."
-
msgid "Conversation"
msgstr "Разговор"
@@ -886,6 +871,41 @@ msgstr "Разговори"
msgid "System Log"
msgstr "Системски лог"
+#, fuzzy
+msgid "Calling ... "
+msgstr "_Пресметувам..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "Прифати"
+
+msgid "Reject"
+msgstr "Одбиј"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "Го разделивте каналот%s%s"
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "Е-пошти"
@@ -921,6 +941,9 @@ msgstr "Продолжи"
msgid "IM"
msgstr "Порака"
+msgid "Invite"
+msgstr "Покани"
+
msgid "(none)"
msgstr "(ништо)"
@@ -1124,7 +1147,6 @@ msgstr "%s стана отсутен. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s Ви испрати порака. (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "Непознат настан за дејство. Ве молам пријавете го ова!"
@@ -1170,7 +1192,6 @@ msgstr "Минути пред промена на статусот"
msgid "Change status to"
msgstr "Смени го статусот во"
-#. Conversations
msgid "Conversations"
msgstr "Разговори"
@@ -1492,7 +1513,6 @@ msgstr ""
"Кога се отвора нов разговор, овој приклучок ќе го вметнe последниот во "
"тековниот разговор."
-#, c-format
msgid "Online"
msgstr "Поврзано"
@@ -1536,6 +1556,28 @@ msgstr "GntLastlog"
msgid "Lastlog plugin."
msgstr "Додаток за последен лог."
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL за песната"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "сметки"
@@ -1636,13 +1678,6 @@ msgstr "Прифати сертификат за %s?"
msgid "SSL Certificate Verification"
msgstr "Проверка на SSL сертификат"
-#. Number of actions
-msgid "Accept"
-msgstr "Прифати"
-
-msgid "Reject"
-msgstr "Одбиј"
-
msgid "_View Certificate..."
msgstr "_Види сертификат..."
@@ -1779,6 +1814,18 @@ msgstr "%s ја напушти собата."
msgid "%s left the room (%s)."
msgstr "%s ја напушти собата (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Покани на конференција"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Внесете го името на пријателот што сакате да го поканите, заедно со пораката "
+"за покана."
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "Не успеав да добијам врска: %s"
@@ -1914,7 +1961,6 @@ msgstr "Започнувам пренос на %s од %s"
msgid "Transfer of file %s complete"
msgstr "Преносот на %s е завршен"
-#, c-format
msgid "File transfer complete"
msgstr "Преносот на датотеки е завршен"
@@ -1922,7 +1968,6 @@ msgstr "Преносот на датотеки е завршен"
msgid "You canceled the transfer of %s"
msgstr "Ја прекинавте размената на %s"
-#, c-format
msgid "File transfer cancelled"
msgstr "Преносот на датотеки е откажан"
@@ -2137,7 +2182,6 @@ msgstr "(%s) %s <АВТОМАТСКИ ОДГОВОР>: %s\n"
msgid "You are using %s, but this plugin requires %s."
msgstr "Вие користите %s, но овој приклучок бара %s."
-#, c-format
msgid "This plugin has not defined an ID."
msgstr "Овој приклучок нема дефинирано Ид."
@@ -2631,6 +2675,32 @@ msgstr "Зачувај ја офлајн пораката како дејств
msgid "Do not ask. Always save in pounce."
msgstr "Не прашувај. Секогаш зачувувај во дејство."
+#, fuzzy
+msgid "One Time Password"
+msgstr "Внесете лозинка:"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2836,7 +2906,6 @@ msgid ""
msgstr ""
"Не можам да воспоставам врска со локалниот mDNS сервер. Дали се извршува?"
-#. Creating the options for the protocol
msgid "First name"
msgstr "Име"
@@ -2868,6 +2937,11 @@ msgstr "Приклучок за Bonjour протоколот"
msgid "Purple Person"
msgstr "Лилакова личност"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "Локалитет"
+
msgid "Bonjour"
msgstr "Bonjour"
@@ -3026,13 +3100,13 @@ msgstr "Одберете разговор за пријателот: %s"
msgid "Add to chat..."
msgstr "Додај во разговорот..."
+#. Global
msgid "Available"
msgstr "Достапен"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "Отсутен"
@@ -3373,6 +3447,17 @@ msgstr ""
"Избравте име на сметка кое беше одбиено од серверот. Најверојатно содржи "
"невалидни знаци."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "Ова име на разговор веќе постои"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Прекар"
+
msgid "Cannot change nick"
msgstr "Не можам да го променам прекарот"
@@ -3643,6 +3728,41 @@ msgstr "Невалиден предизвик од серверот"
msgid "SASL error"
msgstr "SASL грешка"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "Не е дадена причина."
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Неподдржана верзија"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"Не можам да воспоставам врска со серверот:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"Не можам да воспоставам врска со серверот:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "Не можам да иницијализирам врска"
+
+msgid "Unable to create socket"
+msgstr "Не можам да креирам сокет"
+
+msgid "Write error"
+msgstr "Грешка во запишувањето"
+
msgid "Full Name"
msgstr "Целосно име"
@@ -3709,6 +3829,10 @@ msgstr "Клиент"
msgid "Operating System"
msgstr "Оперативен систем"
+#, fuzzy
+msgid "Local Time"
+msgstr "Локална датотека:"
+
msgid "Last Activity"
msgstr "Последна активност"
@@ -3914,7 +4038,6 @@ msgstr "Ми се прави муабет"
msgid "Extended Away"
msgstr "Не сум тука подолго време"
-#, c-format
msgid "Do Not Disturb"
msgstr "Не вознемирувај"
@@ -4040,9 +4163,6 @@ msgstr "Пронајди соби"
msgid "You require encryption, but it is not available on this server."
msgstr "Барате енкрипција, но не е достапна на овој сервер."
-msgid "Write error"
-msgstr "Грешка во запишувањето"
-
msgid "Ping timeout"
msgstr "Времето за ping истече"
@@ -4051,14 +4171,9 @@ msgstr "Грешка во читањето"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"Не можам да воспоставам врска со серверот:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "Не можам да креирам сокет"
msgid "Invalid XMPP ID"
msgstr "Невалидно XMPP ID."
@@ -4066,6 +4181,10 @@ msgstr "Невалидно XMPP ID."
msgid "Invalid XMPP ID. Domain must be set."
msgstr "Невалиден XMPP ид. Мора да поставите домен."
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Не можам да се поврзам со серверот."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "Регистрирањето на %s@%s е успешно"
@@ -4154,9 +4273,18 @@ msgstr "Авторизирање"
msgid "Re-initializing Stream"
msgstr "Го реиницијализирам протокот"
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr "Не сте авторизирани"
+msgid "Mood"
+msgstr "Расположение"
+
+msgid "Now Listening"
+msgstr "Слушам"
+
msgid "Both"
msgstr "Двете"
@@ -4178,12 +4306,6 @@ msgstr "Ништо"
msgid "Subscription"
msgstr "Претплата"
-msgid "Mood"
-msgstr "Расположение"
-
-msgid "Now Listening"
-msgstr "Слушам"
-
msgid "Mood Text"
msgstr "Текст за расположение"
@@ -4421,18 +4543,24 @@ msgstr "Не успеав да го исфрлам корисникот %s"
msgid "Unable to ping user %s"
msgstr "Не можам да го пингнам корисникот %s"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
+msgstr "Не успеав да испратам buzz, бидејќи корисникот %s тоа не го дозволува."
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr "Не успеав да испратам buzz, бидејќи корисникот %s не е на интернет."
-#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+#, fuzzy, c-format
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "Не успеав да испратам buzz, бидејќи корисникот %s тоа не го дозволува."
+#, c-format
+msgid "Buzzing %s..."
+msgstr "Испраќам buzz на %s..."
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
msgid "Buzz"
@@ -4442,9 +4570,35 @@ msgstr ""
msgid "%s has buzzed you!"
msgstr "%s Ви испрати buzz!"
-#, c-format
-msgid "Buzzing %s..."
-msgstr "Испраќам buzz на %s..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "Не успеав да испратам датотека до %s, невалиден JID"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "Не може да испратите датотека дo %s, корисникот не онлајн"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr "Не може да испратите датотека дo %s, не се авторизирани од корисникот"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "Регистрирањето не успеа"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr ""
+"Ве молам изберете на кој ресурс од %s сакате да му ја испратите датотеката"
+
+msgid "Select a Resource"
+msgstr "Изберете ресурс"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "Иницирај _разговор"
msgid "config: Configure a chat room."
msgstr "config: Конфигурирај соба за разговор"
@@ -4601,6 +4755,21 @@ msgstr "Грешка при приклучување во разговорот %
msgid "Error in chat %s"
msgstr "Грешка во разговорот %s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "Се случи грешка при отворање на датотеката."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "Преносот на датотеки не успеа"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Не успеав да ја отворам датотеката '%s': %s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr "Не може да испратите датотека дo %s, корисникот не поддржува пренос"
@@ -4625,9 +4794,6 @@ msgid "Please select the resource of %s to which you would like to send a file"
msgstr ""
"Ве молам изберете на кој ресурс од %s сакате да му ја испратите датотеката"
-msgid "Select a Resource"
-msgstr "Изберете ресурс"
-
msgid "Edit User Mood"
msgstr "Уреди располо жение"
@@ -4662,8 +4828,19 @@ msgstr "Дејства"
msgid "Select an action"
msgstr "Изберете дејство"
-msgid "Unable to retrieve MSN Address Book"
-msgstr "Не успеав да го добијам адресарот за MSN"
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr "Не можам да додадам \"%s\"."
+
+msgid "Buddy Add error"
+msgstr ""
+
+#, fuzzy
+msgid "The username specified does not exist."
+msgstr "Името за екранот е невалидно."
#, c-format
msgid "Buddy list synchronization issue in %s (%s)"
@@ -4893,7 +5070,7 @@ msgstr "Passport за деца без родителска согласност"
msgid "Passport account not yet verified"
msgstr "Сметката за пасошот сеуште не е проверена"
-#, fuzzy, c-format
+#, fuzzy
msgid "Passport account suspended"
msgstr "Сметката за пасошот сеуште не е проверена"
@@ -4989,6 +5166,13 @@ msgstr "Испрати порака за мобилен"
msgid "Page"
msgstr "Страница"
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "Работа"
+
msgid "Has you"
msgstr "Ве има"
@@ -5025,6 +5209,14 @@ msgstr "Артист"
msgid "Album"
msgstr "Албум"
+#, fuzzy
+msgid "Game Title"
+msgstr "Наслов на песната"
+
+#, fuzzy
+msgid "Office Title"
+msgstr "Наслов на песната"
+
msgid "Set Friendly Name..."
msgstr "Постави пријателско име..."
@@ -5218,8 +5410,9 @@ msgstr ""
"Не успеав да најдам информации за корисничкиот профил. Корисникот "
"најверојатно не постои."
-msgid "Profile URL"
-msgstr "URL на профил"
+#, fuzzy
+msgid "View web profile"
+msgstr "Скриј кога не сум на интернет"
#. *< type
#. *< ui_requirement
@@ -5481,19 +5674,15 @@ msgstr "Додај во адресар"
msgid "Do you want to delete this buddy from your address book as well?"
msgstr "Дали сакате да го додадете овој пријател во Вашата листа со пријатели?"
-#. only notify the user about problems adding to the friends list
-#. * maybe we should do something else for other lists, but it probably
-#. * won't cause too many problems if we just ignore it
-#, c-format
-msgid "Unable to add \"%s\"."
-msgstr "Не можам да додадам \"%s\"."
-
msgid "The username specified is invalid."
msgstr "Името за екранот е невалидно."
msgid "This Hotmail account may not be active."
msgstr "Оваа Hotmail сметка можеби не е активна."
+msgid "Profile URL"
+msgstr "URL на профил"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5507,16 +5696,12 @@ msgstr "Оваа Hotmail сметка можеби не е активна."
msgid "MSN Protocol Plugin"
msgstr "Приклучок за MSN протоколот"
-msgid "Missing Cipher"
-msgstr "Недостасува cipher"
-
-msgid "The RC4 cipher could not be found"
-msgstr ""
+#, c-format
+msgid "No such user: %s"
+msgstr "Нема таков корисник: %s"
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
-msgstr ""
+msgid "User lookup"
+msgstr "Проверка на корисникот"
msgid "Reading challenge"
msgstr ""
@@ -5527,12 +5712,20 @@ msgstr "Невалиден должина на предизвик од серв
msgid "Logging in"
msgstr "Се најавувам"
-#, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgid "MySpaceIM - No Username Set"
+msgstr "MySpaceIM - Не е поставено корисничко име"
+
+msgid "You appear to have no MySpace username."
+msgstr ""
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr ""
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr ""
+"Врската со серверот е изгубена\n"
+"%s"
#. Can't write _()'d strings in array initializers. Workaround.
msgid "New mail messages"
@@ -5553,14 +5746,22 @@ msgstr "Нови коментари на слика"
msgid "MySpace"
msgstr "MySpace"
-msgid "MySpaceIM - No Username Set"
-msgstr "MySpaceIM - Не е поставено корисничко име"
+msgid "IM Friends"
+msgstr "IM пријатели"
-msgid "You appear to have no MySpace username."
-msgstr ""
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
-msgstr ""
+msgid "Add contacts from server"
+msgstr "Додај контакти од серверот"
#. The session is now set up, ready to be connected. This emits the
#. * signedOn signal, so clients can now do anything with msimprpl, and
@@ -5583,6 +5784,19 @@ msgstr ""
msgid "MySpaceIM Error"
msgstr "Грешка со MySpaceIM"
+msgid "Invalid input condition"
+msgstr "Невалиден влезен услов"
+
+msgid "Read buffer full (2)"
+msgstr "Баферот за читање е полн (2)"
+
+msgid "Unparseable message"
+msgstr "Порака што не може да се парсира"
+
+#, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr "Не можам да се поврзам со хостот: %s (%d)"
+
msgid "Failed to add buddy"
msgstr "Не успеав да го додадам пријателот"
@@ -5592,13 +5806,6 @@ msgstr "командата 'addbuddy' не успеа."
msgid "persist command failed"
msgstr "командата persist не успеа"
-#, c-format
-msgid "No such user: %s"
-msgstr "Нема таков корисник: %s"
-
-msgid "User lookup"
-msgstr "Проверка на корисникот"
-
msgid "Failed to remove buddy"
msgstr "Не успеав да го отстранам пријателот"
@@ -5608,35 +5815,16 @@ msgstr ""
msgid "blocklist command failed"
msgstr "командата blocklist не успеа"
-msgid "Invalid input condition"
-msgstr "Невалиден влезен услов"
-
-msgid "Read buffer full (2)"
-msgstr "Баферот за читање е полн (2)"
-
-msgid "Unparseable message"
-msgstr "Порака што не може да се парсира"
-
-#, c-format
-msgid "Couldn't connect to host: %s (%d)"
-msgstr "Не можам да се поврзам со хостот: %s (%d)"
+msgid "Missing Cipher"
+msgstr "Недостасува cipher"
-msgid "IM Friends"
-msgstr "IM пријатели"
+msgid "The RC4 cipher could not be found"
+msgstr ""
-#, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-msgid "Add contacts from server"
-msgstr "Додај контакти од серверот"
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
msgid "Add friends from MySpace.com"
msgstr "Додај пријатели од MySpace.com"
@@ -5678,9 +5866,6 @@ msgstr "Основна големина на фонт (points)"
msgid "User"
msgstr "Корисник"
-msgid "Profile"
-msgstr "Профил"
-
msgid "Headline"
msgstr "Наслов"
@@ -5693,16 +5878,6 @@ msgstr "Вкупно пријатели"
msgid "Client Version"
msgstr "Верзија на клиентот"
-#. Protocol won't log in now without a username set.. Disconnect
-msgid "No username set"
-msgstr "Не е поставено корисничко име"
-
-msgid "MySpaceIM - Please Set a Username"
-msgstr ""
-
-msgid "Please enter a username to check its availability:"
-msgstr "Ве молам внесете корисничко име за проверка на достапноста:"
-
msgid "MySpaceIM - Username Available"
msgstr "MySpaceIM - Корисничкото име е достапно"
@@ -5712,12 +5887,22 @@ msgstr "Ова корисничко име е достапно. Дали сак
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr "ЕДНАШ ПОСТАВЕНО, ОВА НЕ МОЖЕ ДА СЕ СМЕНИ!"
+msgid "MySpaceIM - Please Set a Username"
+msgstr ""
+
msgid "This username is unavailable."
msgstr "Ова корисничко име не е достапно."
msgid "Please try another username:"
msgstr "Ве молам обидете се со друго корисничко име:"
+#. Protocol won't log in now without a username set.. Disconnect
+msgid "No username set"
+msgstr "Не е поставено корисничко име"
+
+msgid "Please enter a username to check its availability:"
+msgstr "Ве молам внесете корисничко име за проверка на достапноста:"
+
#. TODO: icons for each zap
#. Lots of comments for translators:
#. Zap means "to strike suddenly and forcefully as if with a
@@ -6108,7 +6293,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr "Грешка. SSL поддршката не е инсталирана."
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr "Оваа конференција е затворена. Не може да се испраќаат пораки."
@@ -6370,23 +6554,18 @@ msgstr "Камера"
msgid "Screen Sharing"
msgstr ""
-#, c-format
msgid "Free For Chat"
msgstr "Слободен/на за разговор"
-#, c-format
msgid "Not Available"
msgstr "Не е достапно"
-#, c-format
msgid "Occupied"
msgstr "Зафатен"
-#, c-format
msgid "Web Aware"
msgstr "Свесен за веб"
-#, c-format
msgid "Invisible"
msgstr "Невидлив"
@@ -6435,7 +6614,7 @@ msgstr ""
"именајава е невалидно. Имињата за најава мора да започнуваат со буква и да "
"содржат само букви, бројки и празни места или пак да содржат само бројки."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr "Невалидно корисничко име."
@@ -6451,7 +6630,7 @@ msgstr "Вашата сметка е моментално суспендиран
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "AOL сервисот за инстант пораки е привремено недостапен."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6486,13 +6665,9 @@ msgstr "Внесете го 6 цифрениот број од дигиталн
msgid "_OK"
msgstr "_Во ред"
-#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
-msgstr ""
-"Може да Ве исклучат за кратко. Можете да ја користете табелата со содржини "
-"додека ова не се поправи. Проверете на %s за ажурирања."
+#, fuzzy, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
+msgstr "Може да бидете накратко исклучени. Проверете %s за надградби.."
msgid "Unable to get a valid AIM login hash."
msgstr "Не можам да добијам валиден AIM хеш за најава."
@@ -6648,7 +6823,7 @@ msgstr[0] "Пропуштивте %hu порака од %s поради непо
msgstr[1] "Пропуштивте %hu пораки од %s поради непозната причина."
msgstr[2] "Пропуштивте %hu пораки од %s поради непозната причина."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "Не можам да ја испратам пораката: %s"
@@ -6670,6 +6845,9 @@ msgstr "Поврзан од"
msgid "Member Since"
msgstr "Член од"
+msgid "Profile"
+msgstr "Профил"
+
msgid "Your AIM connection may be lost."
msgstr "Вашата AIM врска можеби е прекината."
@@ -6973,6 +7151,7 @@ msgstr "П_оврзи се"
msgid "Get AIM Info"
msgstr "Собери инфо за AIM"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "Уреди коментар за пријател"
@@ -7082,7 +7261,6 @@ msgstr "Барам %s да се поврзи со нас на %s:%hu за дир
msgid "Attempting to connect to %s:%hu."
msgstr "Се обидувам да се поврзам со %s:%hu."
-#, c-format
msgid "Attempting to connect via proxy server."
msgstr "Пробувам да се поврзам преку proxy сервер."
@@ -7178,7 +7356,7 @@ msgstr "Друго"
msgid "Visible"
msgstr "Невидлив"
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
#, fuzzy
@@ -7269,16 +7447,48 @@ msgstr "Последно ажурирање"
msgid "Could not change buddy information."
msgstr "Ве молам внесетете информации за пријателот."
-#, c-format
-msgid "%d needs Q&A"
+msgid "Mobile"
+msgstr "Мобилен"
+
+msgid "Note"
+msgstr "Белешка"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "Икона на пријател:"
+
+msgid "Change his/her memo as you like"
msgstr ""
#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "Додај пријател"
+msgid "_Modify"
+msgstr "Измени"
#, fuzzy
-msgid "Input answer here"
+msgid "Memo Modify"
+msgstr "Измени"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "Серверот е зафатен"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%u requires verification"
+msgstr "Барај авторизација"
+
+#, fuzzy
+msgid "Add buddy question"
+msgstr "Да го додадам пријателот во листата?"
+
+#, fuzzy
+msgid "Enter answer here"
msgstr "Внесете го барањето овде"
msgid "Send"
@@ -7292,18 +7502,19 @@ msgid "Authorization denied message:"
msgstr "Порака за одбиена авторизација:"
#, fuzzy
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr "Жалам, не си мој тип..."
#, fuzzy, c-format
-msgid "%d needs authentication"
+msgid "%u needs authorization"
msgstr "Корисникот %d бара автентикација"
#, fuzzy
msgid "Add buddy authorize"
msgstr "Да го додадам пријателот во листата?"
-msgid "Input request here"
+#, fuzzy
+msgid "Enter request here"
msgstr "Внесете го барањето овде"
msgid "Would you be my friend?"
@@ -7326,7 +7537,7 @@ msgid "Failed sending authorize"
msgstr "Те молам, авторизирај ме!"
#, fuzzy, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr "Не успеав да го отстранам пријателот"
#, fuzzy, c-format
@@ -7371,6 +7582,10 @@ msgid "You can only search for permanent Qun\n"
msgstr "Можете да пребарувате само за трајни QQ групи\n"
#, fuzzy
+msgid "(Invalid UTF-8 string)"
+msgstr "Невалидни поставувања за proxy"
+
+#, fuzzy
msgid "Not member"
msgstr "Не сум член"
@@ -7413,16 +7628,19 @@ msgstr "Во групата не е дозволено зачленување н
msgid "Join QQ Qun"
msgstr "Приклучи се на разговор"
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
-msgstr ""
+msgid "Input request here"
+msgstr "Внесете го барањето овде"
+
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "Успешно изменивте член на Qun"
#, fuzzy
msgid "Successfully joined Qun"
msgstr "Успешно изменивте член на Qun"
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
msgid "QQ Qun Operation"
@@ -7432,7 +7650,7 @@ msgstr "QQ Qun операција"
msgid "Failed:"
msgstr "Неуспешно"
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
#, fuzzy
@@ -7447,11 +7665,11 @@ msgstr ""
"овој оператор најверојатно ќе го отстрани овој Qun."
#, fuzzy
-msgid "Sorry, you are not our style ..."
+msgid "Sorry, you are not our style"
msgstr "Жалам, не си мој тип..."
#, fuzzy
-msgid "Successfully changed Qun member"
+msgid "Successfully changed Qun members"
msgstr "Успешно изменивте член на Qun"
#, fuzzy
@@ -7462,35 +7680,35 @@ msgid "You have successfully created a Qun"
msgstr "Успешно креиравте Qun"
#, fuzzy
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr "Дали сакате да поставите детали за Qun веднаш?"
msgid "Setup"
msgstr "Постави"
#, fuzzy, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr "Корисникот %d се пријави да се приклучи во групата %d"
#, fuzzy, c-format
-msgid "%d request to join Qun %d"
+msgid "%u request to join Qun %u"
msgstr "Корисникот %d се пријави да се приклучи во групата %d"
#, fuzzy, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr "Не можам да приклучам пријател во разговорот"
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr "Отстрани пријател"
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "Отстрани пријател"
#, c-format
msgid "Unknown-%d"
@@ -7607,6 +7825,13 @@ msgstr "<b>Послден пат освежено</b>: %s<br>\n"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<b>Моментално онлајн</b>: %d<br>\n"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<b>Послден пат освежено</b>: %s<br>\n"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7614,7 +7839,7 @@ msgid "<i>Feel free to join us!</i> :)"
msgstr ""
#, fuzzy, c-format
-msgid "About OpenQ r%s"
+msgid "About OpenQ %s"
msgstr "За %s"
#, fuzzy
@@ -7635,6 +7860,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "За %s"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Домашна адреса"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7666,7 +7895,6 @@ msgstr ""
msgid "QQ2008"
msgstr ""
-#. #endif
#, fuzzy
msgid "Connect by TCP"
msgstr "Се поврзувам преку TCP"
@@ -7679,6 +7907,9 @@ msgstr "Порта на серверот"
msgid "Show server news"
msgstr "Адреса на серверот"
+msgid "Show chat room when msg comes"
+msgstr ""
+
#, fuzzy
msgid "Keep alive interval (seconds)"
msgstr "Грешка"
@@ -7688,11 +7919,7 @@ msgid "Update interval (seconds)"
msgstr "Грешка"
#, fuzzy
-msgid "Can not decrypt server reply"
-msgstr "Не можам да добијам информации за серверот"
-
-#, fuzzy
-msgid "Can not decrypt get server reply"
+msgid "Cannot decrypt server reply"
msgstr "Не можам да добијам информации за серверот"
#, c-format
@@ -7715,21 +7942,24 @@ msgid "Activation required"
msgstr "Потребна е регистрација"
#, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr ""
-msgid "Keep alive error"
-msgstr "Грешка"
+#, fuzzy
+msgid "Could not decrypt server reply"
+msgstr "Не можам да добијам информации за серверот"
#, fuzzy
-msgid "Requesting captcha ..."
+msgid "Requesting captcha"
msgstr "Го барам вниманието на %s..."
-msgid "Checking code of captcha ..."
-msgstr ""
+#, fuzzy
+msgid "Checking captcha"
+msgstr "Го барам вниманието на %s..."
-msgid "Failed captcha verify"
-msgstr ""
+#, fuzzy
+msgid "Failed captcha verification"
+msgstr "Авторизирањето на Yahoo! не успеа"
#, fuzzy
msgid "Captcha Image"
@@ -7739,38 +7969,30 @@ msgstr "Зачувај ја сликата"
msgid "Enter code"
msgstr "Внесете лозинка:"
-msgid "QQ Captcha Verifing"
-msgstr ""
+#, fuzzy
+msgid "QQ Captcha Verification"
+msgstr "Проверка на SSL сертификат"
#, fuzzy
msgid "Enter the text from the image"
msgstr "Внесете го името на групата"
#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
+msgid "Unknown reply when checking password (0x%02X)"
msgstr ""
#, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
msgstr ""
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "Не можам да се поврзам."
msgid "Socket error"
msgstr "Грешка во сокетот"
-#, fuzzy, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr ""
-"Изгубив врска со серверот:\n"
-"%s"
-
msgid "Unable to read from socket"
msgstr "Не можам да го прочитам сокетот"
@@ -7781,11 +8003,11 @@ msgid "Connection lost"
msgstr "Врската е изгубена"
#, fuzzy
-msgid "Get server ..."
+msgid "Getting server"
msgstr "Постави ги информациите за корисникот..."
#, fuzzy
-msgid "Request token"
+msgid "Requesting token"
msgstr "Барањето е одбиено"
msgid "Couldn't resolve host"
@@ -7796,16 +8018,13 @@ msgid "Invalid server or port"
msgstr "Невалидна грешка"
#, fuzzy
-msgid "Connecting server ..."
-msgstr "Сервер за врзување"
+msgid "Connecting to server"
+msgstr "Се поврзувам на SILC сервер"
#, fuzzy
msgid "QQ Error"
msgstr "QQid грешка"
-msgid "Failed to send IM."
-msgstr "Не успеав да испратам ИП."
-
#, fuzzy, c-format
msgid ""
"Server News:\n"
@@ -7815,6 +8034,10 @@ msgid ""
msgstr "Пренесување на ICQ сервер"
#, fuzzy, c-format
+msgid "%s:%s"
+msgstr "%s (%s)"
+
+#, fuzzy, c-format
msgid "From %s:"
msgstr "Од"
@@ -7824,32 +8047,30 @@ msgid ""
"%s"
msgstr "Инструкции за серверот: %s"
-msgid "Unknow SERVER CMD"
-msgstr ""
+#, fuzzy
+msgid "Unknown SERVER CMD"
+msgstr "Непозната причина"
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
#, fuzzy
msgid "QQ Qun Command"
msgstr "Команда"
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr ""
-
-msgid "Can not decrypt login reply"
-msgstr ""
+#, fuzzy
+msgid "Could not decrypt login reply"
+msgstr "Не можам да добијам информации за серверот"
#, fuzzy
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr "Непозната причина"
#, fuzzy
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr "Непозната причина"
#, c-format
@@ -8675,9 +8896,6 @@ msgstr "Организација"
msgid "Unit"
msgstr "Единица"
-msgid "Note"
-msgstr "Белешка"
-
msgid "Join Chat"
msgstr "Приклучи се на разговор"
@@ -9333,6 +9551,10 @@ msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr ""
"SIP имињата на корисници не смеат да содржат празни места или симболот @"
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "Порта на серверот"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -9367,196 +9589,12 @@ msgid "Auth Domain"
msgstr "Домен за проверка"
#, c-format
-msgid "Looking up %s"
-msgstr "Го барам %s"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Поврзувањето со %s не успеа"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Најавување: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "Не можам да ја запишам датотеката %s."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "Не можам да ја прочитам датотеката %s."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "Пораката е предолга. Последните %s бајти се скратени."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s не е најавен/а."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "Предупредувањето за %s не е дозволено."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "Беше испуштена порака, бидејќи ја надминувате брзината на серверот."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "Разговорот во %s не е достапен."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "Пребрзо испраќате пораки до %s."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "Пропуштивте инстант порака од %s бидејќи беше преголема."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "Пропуштивте инстант порака од %s бидејќи беше испратена пребрзо."
-
-#, c-format
-msgid "Failure."
-msgstr "Неуспех."
-
-#, c-format
-msgid "Too many matches."
-msgstr "Премногу совпаѓања."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "Требаат повеќе квалификатори."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "Сервисот за директориуми е привремено недостапен."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "Барањето на е-пошта е ограничено."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "Клучниот збор е игнориран."
-
-#, c-format
-msgid "No keywords."
-msgstr "Нема клучни зборови."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "Корисникот нема информации за директориумот."
-
-#, c-format
-msgid "Country not supported."
-msgstr "Државата не е поддржана."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Причината за неуспех е непозната: %s."
-
-#, c-format
-msgid "Incorrect username or password."
-msgstr "Неточно корисничко име или лозинка."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "Сервисот е привремено недостапен."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "Вашето ниво за предупредување е превисоко за да се најавите."
-
-#, c-format
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
-msgstr ""
-"Се поврзувавте и се исклучувавте пречесто. Почекајте десет минути и "
-"пробајте повторно. Ако продолжете со обидeте сега, ќе треба да чекате уште "
-"подолго."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "Непозната грешка при најавување: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "Се случи непозната грешка %d. Информации: %s"
-
-msgid "Invalid Groupname"
-msgstr "Невалидно име на група"
-
-msgid "Connection Closed"
-msgstr "Врската се затвори"
-
-msgid "Waiting for reply..."
-msgstr "Чекам одговор..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "TOC се врати од паузата. Сега можете повторно да испраќате пораки."
-
-msgid "Password Change Successful"
-msgstr "Лозинката успешно е промената."
-
-msgid "_Group:"
-msgstr "_Група:"
-
-msgid "Get Dir Info"
-msgstr "Собери информации за директориумот"
-
-msgid "Set Dir Info"
-msgstr "Постави информации за директориумот"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "Не можам да ја отворам %s за запишување!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "Размената на датотека не успеа. Другата страна веројатно откажа."
-
-msgid "Could not connect for transfer."
-msgstr "Не можам да се поврзам за размена."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr ""
-"Не можам да го запишам заглавјето на датотеката. Датотеката не може да се "
-"размени."
-
-msgid "Save As..."
-msgstr "Зачувај како..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s бара %s да ја прифатите %d датотеката: %s (%.2f %s)%s%s"
-msgstr[1] "%s бара %s да ги прифатите %d датотеките: %s (%.2f %s)%s%s"
-msgstr[2] "%s бара %s да ги прифатите %d датотеките: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s бара да му/ѝ испратите датотека"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "Приклучок за TOC протоколот"
-
-#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr "%s Ви испрати покана за webcam но ова сеуште не е поддржано."
+msgid "Your SMS was not delivered"
+msgstr ""
+
msgid "Your Yahoo! message did not get sent."
msgstr "Вашата Yahoo! порака не се испрати."
@@ -9827,13 +9865,9 @@ msgstr "Cool Link 3"
msgid "Last Update"
msgstr "Последно ажурирање"
-#, c-format
-msgid "User information for %s unavailable"
-msgstr "Информациите за корисникот %s не се достапни"
-
+#, fuzzy
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr ""
"Извинете но овој профил изгледа е на јазик кој не е поддржан моментално."
@@ -10169,9 +10203,6 @@ msgstr "Не вознемирувај"
msgid "Extended away"
msgstr "Не сум тука подолго време"
-msgid "Mobile"
-msgstr "Мобилен"
-
msgid "Listening to music"
msgstr "Слушам музика"
@@ -10213,18 +10244,6 @@ msgstr "+++ %s стана активен"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "Грешка при читањето на %s"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"Произлезе грешка при читањето на Вашите %s. Тие не се вчитани и "
-"старатадатотека беше преименувана во %s~."
-
msgid "Calculating..."
msgstr "_Пресметувам..."
@@ -10305,6 +10324,12 @@ msgstr "Грешка при запишување на %s: %s"
msgid "Unable to connect to %s: %s"
msgstr "Не можам да се поврзам со %s: %s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr "Серверот бара TLS/SSL за најавување. Не пронајдов TLS/SSL поддршка."
+
#, c-format
msgid " - %s"
msgstr " - %s"
@@ -10338,6 +10363,18 @@ msgstr "Врската е одбиена."
msgid "Address already in use."
msgstr "Ова име на разговор веќе постои"
+#, c-format
+msgid "Error Reading %s"
+msgstr "Грешка при читањето на %s"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"Произлезе грешка при читањето на Вашите %s. Тие не се вчитани и "
+"старатадатотека беше преименувана во %s~."
+
msgid "Internet Messenger"
msgstr "Инстант пораки"
@@ -10380,10 +10417,8 @@ msgstr "Известувања_ за пошта"
msgid "Use this buddy _icon for this account:"
msgstr "Користи ја оваа _икона за оваа сметка:"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s Опции"
+msgid "_Advanced"
+msgstr "_Напредно"
msgid "Use GNOME Proxy Settings"
msgstr "Користи поставувања од GNOME за proxy"
@@ -10418,9 +10453,6 @@ msgstr "Ако погледнеш од блиску"
msgid "you can see the butterflies mating"
msgstr "можеш да ги видиш пеперутките кај што се парат"
-msgid "Proxy Options"
-msgstr "Proxy Опции"
-
msgid "Proxy _type:"
msgstr "_Тип на proxy:"
@@ -10449,8 +10481,9 @@ msgstr "_Основно"
msgid "Create _this new account on the server"
msgstr "Креирај ја оваа нова сметка на серверот"
-msgid "_Advanced"
-msgstr "_Напредно"
+#, fuzzy
+msgid "_Proxy"
+msgstr "Прокси"
msgid "Enabled"
msgstr "Вклучено"
@@ -10526,6 +10559,17 @@ msgstr "Инфо"
msgid "I_M"
msgstr "Порака"
+#, fuzzy
+msgid "_Audio Call"
+msgstr "_Додај разговор"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Видео разговор"
+
msgid "_Send File..."
msgstr "_Испрати датотека..."
@@ -10663,6 +10707,10 @@ msgstr "/Алатки/Дејства за _пријател"
msgid "/Tools/_Certificates"
msgstr "/Алатки/_Сертификати"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Алатки/Приватност"
+
msgid "/Tools/Plu_gins"
msgstr "/Алатки/Дод_атоци"
@@ -10672,10 +10720,6 @@ msgstr "/Алатки/Пр_еференци"
msgid "/Tools/Pr_ivacy"
msgstr "/Алатки/При_ватност"
-#, fuzzy
-msgid "/Tools/Smile_y"
-msgstr "/Алатки/Приватност"
-
msgid "/Tools/_File Transfers"
msgstr "/Алатки/_Пренос на датотеки"
@@ -10794,8 +10838,8 @@ msgstr "Рачно"
msgid "By status"
msgstr "По статус"
-msgid "By log size"
-msgstr "По големина на лог"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10811,6 +10855,9 @@ msgstr "Поврзи се повторно"
msgid "Re-enable"
msgstr "Повторно овозможи сметка"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr "Добредојде пак!"
@@ -10898,6 +10945,9 @@ msgstr ""
msgid "A_lias:"
msgstr "А_лијас:"
+msgid "_Group:"
+msgstr "_Група:"
+
msgid "Auto_join when account becomes online."
msgstr "Автоматски _вклучи се по врзувањето."
@@ -10950,14 +11000,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr "Покани пријател во соба за разговор"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Внесете го името на пријателот што сакате да го поканите, заедно со пораката "
-"за покана."
-
msgid "_Buddy:"
msgstr "_Пријател:"
@@ -11032,6 +11074,22 @@ msgstr "/Разговор/_Зачувај како..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Разговор/Исчист_и стар разговор"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Разговор/П_овеќе"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Разговор/П_овеќе"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Разговор/П_овеќе"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Разговор/Преглед на _лог"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Разговор/Исп_рати датотека..."
@@ -11104,6 +11162,18 @@ msgstr "/Разговор"
msgid "/Conversation/View Log"
msgstr "/Разговор/Види лог"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Разговор/Повеќе"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Разговор/Види лог"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Разговор/Повеќе"
+
msgid "/Conversation/Send File..."
msgstr "/Разговор/Испрати датотека..."
@@ -11290,6 +11360,9 @@ msgstr "Артист"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "поддршка"
@@ -11431,6 +11504,10 @@ msgstr "Georgian"
msgid "Ubuntu Georgian Translators"
msgstr "Ubuntu Georgian Translators"
+#, fuzzy
+msgid "Khmer"
+msgstr "Друго"
+
msgid "Kannada"
msgstr "Kannada"
@@ -11452,6 +11529,10 @@ msgstr "Lithuanian"
msgid "Macedonian"
msgstr "Македонски"
+#, fuzzy
+msgid "Mongolian"
+msgstr "Македонски"
+
msgid "Bokmål Norwegian"
msgstr "Bokmål Norwegian"
@@ -11566,7 +11647,24 @@ msgstr ""
"придонесували. Не нудиме никаква гаранција за оваа програма.<BR><BR>"
#, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, fuzzy, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin на irc.freenode.net<BR><BR>"
+
+#, fuzzy, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin на irc.freenode.net<BR><BR>"
msgid "Current Developers"
@@ -11891,15 +11989,6 @@ msgstr "Фонтот кој што ќе се користи за известу
msgid "Enable typing notification"
msgstr "Вклучи известување при куцање"
-msgid "_Copy Email Address"
-msgstr "_Копирај е-пошта"
-
-msgid "_Open Link in Browser"
-msgstr "_Отвори ја врската во прелистувач"
-
-msgid "_Copy Link Location"
-msgstr "_Копирај ја локацијата на врската"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12145,13 +12234,14 @@ msgstr "_Разгледај ја папката со логови"
msgid "%s %s. Try `%s -h' for more information.\n"
msgstr "%s %s. Пробајте `%s -h' за повеќе информации.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12175,13 +12265,14 @@ msgstr ""
" --display=DISPLAY X display to use\n"
" -v, --version display the current version and exit\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12241,11 +12332,27 @@ msgstr ""
msgid "Pidgin"
msgstr "Pidgin"
-msgid "Open All Messages"
-msgstr "Отвори ги сите пораки"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Имате пошта!</span>"
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "_Пресметувам..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -12276,6 +12383,27 @@ msgid ""
"The 'Manual' browser command has been chosen, but no command has been set."
msgstr "Избрана е рачната команда на прелистувачот, но не е поставена команда."
+msgid "Open All Messages"
+msgstr "Отвори ги сите пораки"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Имате пошта!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "Ново дејство за пријател"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Имате пошта!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "Непозната порака"
+
msgid "The following plugins will be unloaded."
msgstr "Следниве додатоци ќе бидат извадени."
@@ -12324,6 +12452,10 @@ msgstr "<b>Детали за додатоците</b>"
msgid "Select a file"
msgstr "Изберете датотека"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Уреди дејство за пријател"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "Дејство за кој"
@@ -12394,6 +12526,50 @@ msgstr "_Од време на време"
msgid "Pounce Target"
msgstr "Изврши дејство кога"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "Почнува да куца"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "Паузира кога куца"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "Се најавува"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s се врати од неактивност (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "Се враќа"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "Прекина да пишува"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "Се одјавува"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "Станува неактивен"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "Кога сум отсутен"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Испрати порака"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "Непознат настан за дејство. Ве молам пријавете го ова!"
+
msgid "Smiley theme failed to unpack."
msgstr "Темата со емоции не успеа да се отпакува."
@@ -12416,6 +12592,12 @@ msgstr "Кратенки на тастатурата"
msgid "Cl_ose conversations with the Escape key"
msgstr "Затворај ги разговорите со копчето Escape"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Листа на пријатели"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "Системска икона во фиока"
@@ -12526,9 +12708,6 @@ msgstr "Не можам да ја подигнам програмата за к
msgid "Cannot start browser configuration program."
msgstr "Не можам да ја подигнам програмата за конфигурација на прелистувачот."
-msgid "ST_UN server:"
-msgstr "ST_UN сервер:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">Пример: stunserver.org</span>"
@@ -12553,6 +12732,10 @@ msgstr "_Почетна порта:"
msgid "_End port:"
msgstr "_Крајна порта:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr "Proxy сервер &amp; Прелистувач"
@@ -12581,6 +12764,10 @@ msgstr "Proxy сервер"
msgid "No proxy"
msgstr "Без proxy"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "_Корисник:"
@@ -12744,12 +12931,12 @@ msgstr "При отсуство и неактивност"
msgid "Auto-away"
msgstr "Автомаско отсуство"
-msgid "Change status when _idle"
-msgstr "Промени го статусот при _неактивност"
-
msgid "_Minutes before becoming idle:"
msgstr "_Минути пред промена на статусот:"
+msgid "Change status when _idle"
+msgstr "Промени го статусот при _неактивност"
+
msgid "Change _status to:"
msgstr "Смени го _статусот во:"
@@ -12899,6 +13086,12 @@ msgstr "Зач_увај и користи"
msgid "Status for %s"
msgstr "Статус за %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
#, fuzzy
msgid "Custom Smiley"
msgstr "Внеси смајли"
@@ -12909,15 +13102,15 @@ msgstr ""
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
+msgstr ""
+
#, fuzzy
msgid "Duplicate Shortcut"
msgstr "Корекција на дупликати"
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
-msgstr ""
-
#, fuzzy
msgid "Please select an image for the smiley."
msgstr "Ве молам изберете го расположението од листата."
@@ -12931,19 +13124,23 @@ msgid "Add Smiley"
msgstr "Смајли!"
#, fuzzy
-msgid "Smiley _Image"
-msgstr "Зачувај ја сликата"
+msgid "_Image:"
+msgstr "_Зачувај ја сликата"
-#. Smiley shortcut
+#. Shortcut text
#, fuzzy
-msgid "Smiley S_hortcut"
-msgstr "Кратенки на тастатурата"
+msgid "S_hortcut text:"
+msgstr "Подреди"
#, fuzzy
msgid "Smiley"
msgstr "Смајли!"
#, fuzzy
+msgid "Shortcut Text"
+msgstr "Подреди"
+
+#, fuzzy
msgid "Custom Smiley Manager"
msgstr "Менаџер за сертификати"
@@ -13072,6 +13269,16 @@ msgstr ""
"Не успеав да ја вчитам сликата „%s“: причините не се познати, најверојатно "
"сликата е оштетена"
+#, fuzzy
+msgid "_Open Link"
+msgstr "_Отворај врски во:"
+
+msgid "_Copy Link Location"
+msgstr "_Копирај ја локацијата на врската"
+
+msgid "_Copy Email Address"
+msgstr "_Копирај е-пошта"
+
msgid "Save File"
msgstr "Зачувај датотека"
@@ -14051,9 +14258,6 @@ msgstr "_Задржи го прозорецот со листа на прија
msgid "Only when docked"
msgstr "Само кога е спуштена"
-msgid "_Flash window when chat messages are received"
-msgstr "_Трепкање на прозорецот кога е примена порака"
-
msgid "Windows Pidgin Options"
msgstr "Опции за Pidgin за Windows"
@@ -14103,6 +14307,227 @@ msgstr "Испрати и прими чисти XMPP делови."
msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr "Овој приклучок е корисен за дебагирање на XMPP сервери или клиенти."
+#, fuzzy
+#~ msgid "Invite message"
+#~ msgstr "Внеси во пораката"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Внесете го името на пријателот што сакате да го поканите, заедно со "
+#~ "пораката за покана."
+
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "Не успеав да го добијам адресарот за MSN"
+
+#~ msgid ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+#~ msgstr ""
+#~ "Може да Ве исклучат за кратко. Можете да ја користете табелата со "
+#~ "содржини додека ова не се поправи. Проверете на %s за ажурирања."
+
+#, fuzzy
+#~ msgid "Add buddy Q&A"
+#~ msgstr "Додај пријател"
+
+#, fuzzy
+#~ msgid "Can not decrypt get server reply"
+#~ msgstr "Не можам да добијам информации за серверот"
+
+#~ msgid "Keep alive error"
+#~ msgstr "Грешка"
+
+#, fuzzy
+#~ msgid ""
+#~ "Lost connection with server:\n"
+#~ "%d, %s"
+#~ msgstr ""
+#~ "Изгубив врска со серверот:\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Connecting server ..."
+#~ msgstr "Сервер за врзување"
+
+#~ msgid "Failed to send IM."
+#~ msgstr "Не успеав да испратам ИП."
+
+#~ msgid "Looking up %s"
+#~ msgstr "Го барам %s"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "Поврзувањето со %s не успеа"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Најавување: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "Не можам да ја запишам датотеката %s."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "Не можам да ја прочитам датотеката %s."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "Пораката е предолга. Последните %s бајти се скратени."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s не е најавен/а."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "Предупредувањето за %s не е дозволено."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr "Беше испуштена порака, бидејќи ја надминувате брзината на серверот."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "Разговорот во %s не е достапен."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "Пребрзо испраќате пораки до %s."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "Пропуштивте инстант порака од %s бидејќи беше преголема."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr "Пропуштивте инстант порака од %s бидејќи беше испратена пребрзо."
+
+#~ msgid "Failure."
+#~ msgstr "Неуспех."
+
+#~ msgid "Too many matches."
+#~ msgstr "Премногу совпаѓања."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "Требаат повеќе квалификатори."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "Сервисот за директориуми е привремено недостапен."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "Барањето на е-пошта е ограничено."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "Клучниот збор е игнориран."
+
+#~ msgid "No keywords."
+#~ msgstr "Нема клучни зборови."
+
+#~ msgid "User has no directory information."
+#~ msgstr "Корисникот нема информации за директориумот."
+
+#~ msgid "Country not supported."
+#~ msgstr "Државата не е поддржана."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Причината за неуспех е непозната: %s."
+
+#~ msgid "Incorrect username or password."
+#~ msgstr "Неточно корисничко име или лозинка."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "Сервисот е привремено недостапен."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "Вашето ниво за предупредување е превисоко за да се најавите."
+
+#~ 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 ""
+#~ "Се поврзувавте и се исклучувавте пречесто. Почекајте десет минути и "
+#~ "пробајте повторно. Ако продолжете со обидeте сега, ќе треба да чекате "
+#~ "уште подолго."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "Непозната грешка при најавување: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "Се случи непозната грешка %d. Информации: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "Невалидно име на група"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Врската се затвори"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "Чекам одговор..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "TOC се врати од паузата. Сега можете повторно да испраќате пораки."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "Лозинката успешно е промената."
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Собери информации за директориумот"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Постави информации за директориумот"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "Не можам да ја отворам %s за запишување!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr "Размената на датотека не успеа. Другата страна веројатно откажа."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "Не можам да се поврзам за размена."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr ""
+#~ "Не можам да го запишам заглавјето на датотеката. Датотеката не може да "
+#~ "се размени."
+
+#~ msgid "Save As..."
+#~ msgstr "Зачувај како..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s бара %s да ја прифатите %d датотеката: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s бара %s да ги прифатите %d датотеките: %s (%.2f %s)%s%s"
+#~ msgstr[2] "%s бара %s да ги прифатите %d датотеките: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s бара да му/ѝ испратите датотека"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "Приклучок за TOC протоколот"
+
+#~ msgid "User information for %s unavailable"
+#~ msgstr "Информациите за корисникот %s не се достапни"
+
+#~ msgid "%s Options"
+#~ msgstr "%s Опции"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Proxy Опции"
+
+#~ msgid "By log size"
+#~ msgstr "По големина на лог"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_Отвори ја врската во прелистувач"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "ST_UN сервер:"
+
+#, fuzzy
+#~ msgid "Smiley _Image"
+#~ msgstr "Зачувај ја сликата"
+
+#, fuzzy
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "Кратенки на тастатурата"
+
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "_Трепкање на прозорецот кога е примена порака"
+
#~ msgid "A group with the name already exists."
#~ msgstr "Папка со тоа име веќе постои."
@@ -14204,13 +14629,6 @@ msgstr "Овој приклучок е корисен за дебагирање
#~ msgid "Change Qun information"
#~ msgstr "Информации за каналот"
-#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr "%s (%s)"
-
#~ msgid "System Message"
#~ msgstr "Системска порака"
diff --git a/po/mn.po b/po/mn.po
index ce9ae45342..9f22ce55d9 100644
--- a/po/mn.po
+++ b/po/mn.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
+"POT-Creation-Date: 2009-04-30 10:39-0400\n"
"PO-Revision-Date: 2005-06-17 23:22-0800\n"
"Last-Translator: \n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -25,13 +25,13 @@ msgstr "Финч"
msgid "%s. Try `%s -h' for more information.\n"
msgstr "%s. Дэлгэрэнгүй мэдээллийг авахыг хүсвэл `%s -h' үз нүү.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -596,17 +596,6 @@ msgstr ""
msgid "Send To"
msgstr "Илгээх"
-msgid "Invite message"
-msgstr ""
-
-msgid "Invite"
-msgstr ""
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-
msgid "Conversation"
msgstr "Харилцаа"
@@ -849,6 +838,41 @@ msgstr "Харилцаа"
msgid "System Log"
msgstr "Системийн архив"
+#, fuzzy
+msgid "Calling ... "
+msgstr "Тооцоолж байна..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "Зөвшөөрөх"
+
+msgid "Reject"
+msgstr "Татгалзах"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "Та чатаас гарсан."
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "Мэйл"
@@ -883,6 +907,9 @@ msgstr "Үргэлжлүүлэх"
msgid "IM"
msgstr "Мессеж"
+msgid "Invite"
+msgstr ""
+
msgid "(none)"
msgstr "(байхгүй)"
@@ -1084,7 +1111,6 @@ msgstr "%s гарсан. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s мессеж илгээсэн."
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr ""
@@ -1130,7 +1156,6 @@ msgstr "Төлөв өөрчлөхийн өмнөх минут"
msgid "Change status to"
msgstr "Төлөв өөрчлөх"
-#. Conversations
msgid "Conversations"
msgstr "Харилцаа"
@@ -1443,7 +1468,6 @@ msgid ""
"conversation into the current conversation."
msgstr ""
-#, c-format
msgid "Online"
msgstr "Онлайн"
@@ -1487,6 +1511,28 @@ msgstr ""
msgid "Lastlog plugin."
msgstr ""
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "Вэбийн нөөц заагч"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "бүртгэлүүд"
@@ -1587,13 +1633,6 @@ msgstr "%s ийн сертификатыг зөвшөөрөх үү?"
msgid "SSL Certificate Verification"
msgstr ""
-#. Number of actions
-msgid "Accept"
-msgstr "Зөвшөөрөх"
-
-msgid "Reject"
-msgstr "Татгалзах"
-
msgid "_View Certificate..."
msgstr "Сертификатыг Харах..."
@@ -1732,6 +1771,16 @@ msgstr "%s өрөөнөөс гарсан."
msgid "%s left the room (%s)."
msgstr "%s (%s) өрөөнөөс гарсан."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Зөвлөгөөнд урих"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "Холболт үүсгэхэд алдаа гарлаа: %s"
@@ -1862,7 +1911,6 @@ msgstr "%s ээс файл шилжүүлэлтийг эхлүүлж байна"
msgid "Transfer of file %s complete"
msgstr "%s файл шилжүүлэлт дууслаа"
-#, c-format
msgid "File transfer complete"
msgstr "Файл шилжүүлэлт дууссан"
@@ -1870,7 +1918,6 @@ msgstr "Файл шилжүүлэлт дууссан"
msgid "You canceled the transfer of %s"
msgstr "Та %s ийн шилжүүлэлтийг цуцалсан"
-#, c-format
msgid "File transfer cancelled"
msgstr "Файл шилжүүлэлтийг цуцалсан"
@@ -2059,7 +2106,6 @@ msgstr "(%s) %s <AUTO-REPLY>: %s\n"
msgid "You are using %s, but this plugin requires %s."
msgstr "Та %s г ашиглаж байна,гэхдээ энэ нэмэлт програмд %s шаардлагатай ."
-#, c-format
msgid "This plugin has not defined an ID."
msgstr ""
@@ -2519,6 +2565,32 @@ msgstr "Сануулаганд оффлайн мессеж хадгалах"
msgid "Do not ask. Always save in pounce."
msgstr "Битгий асуу. Үргэлж сануулаганд хадгалана."
+#, fuzzy
+msgid "One Time Password"
+msgstr "Нууц үг оруул"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2717,7 +2789,6 @@ msgid ""
"Unable to establish connection with the local mDNS server. Is it running?"
msgstr ""
-#. Creating the options for the protocol
msgid "First name"
msgstr "Өөрийн нэр"
@@ -2749,6 +2820,11 @@ msgstr "Bonjour Протоколын Нэмэлт Програм"
msgid "Purple Person"
msgstr ""
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "Байршил"
+
msgid "Bonjour"
msgstr "Bonjour"
@@ -2904,13 +2980,13 @@ msgstr "Харилцагчийн чатыг сонгох: %s"
msgid "Add to chat..."
msgstr "Чатад нэмэх..."
+#. Global
msgid "Available"
msgstr "Онлайн"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "Хол байна"
@@ -3251,6 +3327,17 @@ msgstr ""
"Таны бүртгэлийн нэрийг сервер зөвшөөрөхгүй байна. Энэ нь буруу тэмдэгт "
"агуулсан байж магадгүй."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "Энэ чатын нэрийг ашиглаж байна"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Хоч нэр"
+
msgid "Cannot change nick"
msgstr ""
@@ -3481,6 +3568,40 @@ msgstr ""
msgid "SASL error"
msgstr "SASL алдаа"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+msgid "No session ID given"
+msgstr ""
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Дэмжигдэхгүй хувилбар"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"Сервертэй холбогдож чадсангүй:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"Сервертэй холбогдож чадсангүй:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "Холболтыг эхлүүлэх боломжгүй байна"
+
+msgid "Unable to create socket"
+msgstr "Сокет үүсгэх боломжгүй"
+
+msgid "Write error"
+msgstr "Бичих алдаа"
+
msgid "Full Name"
msgstr "Бүтэн нэр"
@@ -3545,6 +3666,10 @@ msgstr "Клиент"
msgid "Operating System"
msgstr "Үйлдлийн систем"
+#, fuzzy
+msgid "Local Time"
+msgstr "Локал Файл:"
+
msgid "Last Activity"
msgstr ""
@@ -3750,7 +3875,6 @@ msgstr ""
msgid "Extended Away"
msgstr ""
-#, c-format
msgid "Do Not Disturb"
msgstr ""
@@ -3872,9 +3996,6 @@ msgstr "Өрөөг хайх"
msgid "You require encryption, but it is not available on this server."
msgstr ""
-msgid "Write error"
-msgstr "Бичих алдаа"
-
msgid "Ping timeout"
msgstr ""
@@ -3883,14 +4004,9 @@ msgstr "Унших алдаа"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"Сервертэй холбогдож чадсангүй:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "Сокет үүсгэх боломжгүй"
msgid "Invalid XMPP ID"
msgstr "Буруу XMPP ID"
@@ -3898,6 +4014,10 @@ msgstr "Буруу XMPP ID"
msgid "Invalid XMPP ID. Domain must be set."
msgstr "Буруу XMPP ID. Домэйныг тохируулах хэрэгтэй."
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Сервертэй холбогдох боломжгүй."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr ""
@@ -3982,9 +4102,18 @@ msgstr ""
msgid "Re-initializing Stream"
msgstr ""
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr ""
+msgid "Mood"
+msgstr ""
+
+msgid "Now Listening"
+msgstr ""
+
msgid "Both"
msgstr ""
@@ -4006,12 +4135,6 @@ msgstr ""
msgid "Subscription"
msgstr ""
-msgid "Mood"
-msgstr ""
-
-msgid "Now Listening"
-msgstr ""
-
msgid "Mood Text"
msgstr ""
@@ -4250,15 +4373,21 @@ msgid "Unable to ping user %s"
msgstr ""
#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr ""
#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+msgid "Unable to buzz, because %s might be offline."
msgstr ""
#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
+msgstr ""
+
+#, c-format
+msgid "Buzzing %s..."
msgstr ""
#. Yahoo only supports one attention command: the 'buzz'.
@@ -4270,10 +4399,34 @@ msgstr ""
msgid "%s has buzzed you!"
msgstr ""
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr " %s рүү файл илгээх боломжгүй, буруу JID"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "%s рүү файл илгээх боломжгүй, онлайнд байхгүй байна"
+
#, c-format
-msgid "Buzzing %s..."
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr ""
+
+msgid "Media Initiation Failed"
+msgstr ""
+
+#, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
msgstr ""
+msgid "Select a Resource"
+msgstr "Нөөц Сонгох"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "Чатыг эхлүүлэх"
+
msgid "config: Configure a chat room."
msgstr "config: Чат өрөөг тохируулах."
@@ -4424,6 +4577,21 @@ msgstr "Чат %s д холбогдоход алдаа гарлаа"
msgid "Error in chat %s"
msgstr "Чат %s алдаа "
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "Файл нээхэд алдаа гарлаа"
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "Файл шилжүүлэлтийг цуцалсан"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Файл нээх боломжгүй."
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4449,9 +4617,6 @@ msgstr ""
msgid "Please select the resource of %s to which you would like to send a file"
msgstr ""
-msgid "Select a Resource"
-msgstr "Нөөц Сонгох"
-
msgid "Edit User Mood"
msgstr ""
@@ -4484,9 +4649,20 @@ msgstr "Үйлдэл"
msgid "Select an action"
msgstr "Үйлдэл сонгох"
-msgid "Unable to retrieve MSN Address Book"
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr "\"%s\" нэмэх боломжгүй."
+
+msgid "Buddy Add error"
msgstr ""
+#, fuzzy
+msgid "The username specified does not exist."
+msgstr "Зөвлөгөөн байхгүй байна"
+
#, c-format
msgid "Buddy list synchronization issue in %s (%s)"
msgstr ""
@@ -4713,7 +4889,7 @@ msgstr ""
msgid "Passport account not yet verified"
msgstr ""
-#, fuzzy, c-format
+#, fuzzy
msgid "Passport account suspended"
msgstr "Таны бүртгэлийг одоогоор түр зогссон байна."
@@ -4804,6 +4980,13 @@ msgstr "Гар утасны мессежийг илгээх."
msgid "Page"
msgstr "Хуудас"
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "Ажил"
+
msgid "Has you"
msgstr ""
@@ -4840,6 +5023,14 @@ msgstr "Уран бүтээлч"
msgid "Album"
msgstr "Цомог"
+#, fuzzy
+msgid "Game Title"
+msgstr "Аяны нэр"
+
+#, fuzzy
+msgid "Office Title"
+msgstr "Аяны нэр"
+
msgid "Set Friendly Name..."
msgstr "Нөхөрсөг нэрээ оруул..."
@@ -5026,8 +5217,9 @@ msgid ""
"does not exist."
msgstr ""
-msgid "Profile URL"
-msgstr ""
+#, fuzzy
+msgid "View web profile"
+msgstr "Оффлайн байхад нуух"
#. *< type
#. *< ui_requirement
@@ -5265,19 +5457,15 @@ msgstr "Хаягийн Бүртгэлд Нэмэх"
msgid "Do you want to delete this buddy from your address book as well?"
msgstr "Харилцагчийн жагсаалтанд энэ харилцагчийг нэмэхийг хүсэж байн уу?"
-#. only notify the user about problems adding to the friends list
-#. * maybe we should do something else for other lists, but it probably
-#. * won't cause too many problems if we just ignore it
-#, c-format
-msgid "Unable to add \"%s\"."
-msgstr "\"%s\" нэмэх боломжгүй."
-
msgid "The username specified is invalid."
msgstr ""
msgid "This Hotmail account may not be active."
msgstr ""
+msgid "Profile URL"
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5291,15 +5479,11 @@ msgstr ""
msgid "MSN Protocol Plugin"
msgstr ""
-msgid "Missing Cipher"
-msgstr ""
-
-msgid "The RC4 cipher could not be found"
+#, c-format
+msgid "No such user: %s"
msgstr ""
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
+msgid "User lookup"
msgstr ""
msgid "Reading challenge"
@@ -5311,11 +5495,20 @@ msgstr ""
msgid "Logging in"
msgstr ""
-#, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] ""
-msgstr[1] ""
+msgid "MySpaceIM - No Username Set"
+msgstr ""
+
+msgid "You appear to have no MySpace username."
+msgstr ""
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr "Одоо тохируулах уу? (Анхааруулга: Энэ өөрчилөгдөхгүй!)"
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr ""
+"Сервертэй холболт тасарсан:\n"
+"%s"
#. Can't write _()'d strings in array initializers. Workaround.
msgid "New mail messages"
@@ -5336,14 +5529,21 @@ msgstr "Шинэ зургийн тайлбар"
msgid "MySpace"
msgstr "Миний зай"
-msgid "MySpaceIM - No Username Set"
+msgid "IM Friends"
msgstr ""
-msgid "You appear to have no MySpace username."
-msgstr ""
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+msgstr[1] ""
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
-msgstr "Одоо тохируулах уу? (Анхааруулга: Энэ өөрчилөгдөхгүй!)"
+msgid "Add contacts from server"
+msgstr ""
#. The session is now set up, ready to be connected. This emits the
#. * signedOn signal, so clients can now do anything with msimprpl, and
@@ -5366,58 +5566,46 @@ msgstr ""
msgid "MySpaceIM Error"
msgstr ""
-msgid "Failed to add buddy"
+msgid "Invalid input condition"
msgstr ""
-msgid "'addbuddy' command failed."
+msgid "Read buffer full (2)"
msgstr ""
-msgid "persist command failed"
+msgid "Unparseable message"
msgstr ""
#, c-format
-msgid "No such user: %s"
-msgstr ""
-
-msgid "User lookup"
+msgid "Couldn't connect to host: %s (%d)"
msgstr ""
-msgid "Failed to remove buddy"
+msgid "Failed to add buddy"
msgstr ""
-msgid "'delbuddy' command failed"
+msgid "'addbuddy' command failed."
msgstr ""
-msgid "blocklist command failed"
+msgid "persist command failed"
msgstr ""
-msgid "Invalid input condition"
+msgid "Failed to remove buddy"
msgstr ""
-msgid "Read buffer full (2)"
+msgid "'delbuddy' command failed"
msgstr ""
-msgid "Unparseable message"
+msgid "blocklist command failed"
msgstr ""
-#, c-format
-msgid "Couldn't connect to host: %s (%d)"
+msgid "Missing Cipher"
msgstr ""
-msgid "IM Friends"
+msgid "The RC4 cipher could not be found"
msgstr ""
-#, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "Add contacts from server"
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
msgstr ""
msgid "Add friends from MySpace.com"
@@ -5460,9 +5648,6 @@ msgstr ""
msgid "User"
msgstr "Хэрэглэгч"
-msgid "Profile"
-msgstr "Товч мэдээлэл"
-
msgid "Headline"
msgstr ""
@@ -5475,16 +5660,6 @@ msgstr "Нийт найзууд"
msgid "Client Version"
msgstr "Клиентын хувилбар"
-#. Protocol won't log in now without a username set.. Disconnect
-msgid "No username set"
-msgstr "Ямар ч хэрэглэгчийн нэрийг тохируулаагүй"
-
-msgid "MySpaceIM - Please Set a Username"
-msgstr "MySpaceIM - Хэрэглэгчийн нэрээ тохируул"
-
-msgid "Please enter a username to check its availability:"
-msgstr ""
-
msgid "MySpaceIM - Username Available"
msgstr ""
@@ -5494,12 +5669,22 @@ msgstr ""
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr ""
+msgid "MySpaceIM - Please Set a Username"
+msgstr "MySpaceIM - Хэрэглэгчийн нэрээ тохируул"
+
msgid "This username is unavailable."
msgstr ""
msgid "Please try another username:"
msgstr ""
+#. Protocol won't log in now without a username set.. Disconnect
+msgid "No username set"
+msgstr "Ямар ч хэрэглэгчийн нэрийг тохируулаагүй"
+
+msgid "Please enter a username to check its availability:"
+msgstr ""
+
#. TODO: icons for each zap
#. Lots of comments for translators:
#. Zap means "to strike suddenly and forcefully as if with a
@@ -5875,7 +6060,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr "Алдаа. SSL дэмжлэгийг суулгаагүй байна."
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr "Энэ зөвлөгөөнийг хаасан. Ямар ч мессеж илгээгдээгүй."
@@ -6136,23 +6320,18 @@ msgstr "Камер"
msgid "Screen Sharing"
msgstr ""
-#, c-format
msgid "Free For Chat"
msgstr "Чатад үнэгүй"
-#, c-format
msgid "Not Available"
msgstr "Боломжгүй"
-#, c-format
msgid "Occupied"
msgstr "Эзэнтэй"
-#, c-format
msgid "Web Aware"
msgstr ""
-#, c-format
msgid "Invisible"
msgstr "Харагдахгүй"
@@ -6200,7 +6379,7 @@ msgstr ""
"Холбогдох боломжгүй: Хэрэглэгчийн нэр буруу учраас холбогдож чадсангүй. "
"Хэрэглэгчийн нэр нь мэйлийн хаяг байх ёстой."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr "Хэрэглэгчийн нэр буруу."
@@ -6216,7 +6395,7 @@ msgstr "Таны бүртгэлийг одоогоор түр зогссон б
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "AOL Мессенжерийн үйлчилгээ түр хугацаагаар ажиллахгүй байна."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6248,10 +6427,8 @@ msgstr "6 оронтой тоо оруул."
msgid "_OK"
msgstr ""
-#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
+#, fuzzy, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
msgstr ""
"You may be disconnected shortly. You may want to use TOC until this is "
"fixed. Check %s for updates."
@@ -6392,7 +6569,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] ""
msgstr[1] ""
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "Мессеж илгээх боломжгүй: %s"
@@ -6414,6 +6591,9 @@ msgstr "Онлайн болсоноос хойш"
msgid "Member Since"
msgstr "Гишүүн болсоноос хойш"
+msgid "Profile"
+msgstr "Товч мэдээлэл"
+
msgid "Your AIM connection may be lost."
msgstr "Таны AIM -ын холболт тасарсан байж магадгүй."
@@ -6664,6 +6844,7 @@ msgstr "Холбогдох"
msgid "Get AIM Info"
msgstr "AIM мэдээлэл авах"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "Харилцагчийн Тайлбарыг Засварлах"
@@ -6766,7 +6947,6 @@ msgstr ""
msgid "Attempting to connect to %s:%hu."
msgstr ""
-#, c-format
msgid "Attempting to connect via proxy server."
msgstr ""
@@ -6859,7 +7039,7 @@ msgstr ""
msgid "Visible"
msgstr "Харагдахгүй"
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
#, fuzzy
@@ -6947,17 +7127,50 @@ msgstr "Сүүлийн Шинэчлэл"
msgid "Could not change buddy information."
msgstr "Харилцагчийн мэдээллийг оруулна уу."
-#, c-format
-msgid "%d needs Q&A"
+msgid "Mobile"
+msgstr "Гар утас"
+
+msgid "Note"
+msgstr "Тэмдэглэл"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "Харилцагчийн Зураг"
+
+msgid "Change his/her memo as you like"
msgstr ""
#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "Харилцагч нэмэх"
+msgid "_Modify"
+msgstr "Өөрчлөх"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "Өөрчлөх"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "Сервер ачаалалтай байна"
+
+msgid "Your request was accepted."
+msgstr ""
-msgid "Input answer here"
+msgid "Your request was rejected."
+msgstr ""
+
+#, c-format
+msgid "%u requires verification"
msgstr ""
+#, fuzzy
+msgid "Add buddy question"
+msgstr "Жагсаалтандаа харилцагч нэмэх үү ?"
+
+#, fuzzy
+msgid "Enter answer here"
+msgstr "Хэрэглэгчийн хавтасыг оруулах"
+
msgid "Send"
msgstr "Илгээх"
@@ -6969,18 +7182,18 @@ msgid "Authorization denied message:"
msgstr ""
#, fuzzy
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr "Уучилаарай, та миний төрөлд хамаарахгүй байна..."
#, fuzzy, c-format
-msgid "%d needs authentication"
+msgid "%u needs authorization"
msgstr "Хүлээж авсан зөвшөөрөл"
#, fuzzy
msgid "Add buddy authorize"
msgstr "Жагсаалтандаа харилцагч нэмэх үү ?"
-msgid "Input request here"
+msgid "Enter request here"
msgstr ""
msgid "Would you be my friend?"
@@ -7003,7 +7216,7 @@ msgid "Failed sending authorize"
msgstr "Намайг зөвшөөрнө үү!"
#, fuzzy, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr "Харилцагчийн жагсаалтыг хайж байна"
#, fuzzy, c-format
@@ -7046,6 +7259,10 @@ msgid "You can only search for permanent Qun\n"
msgstr ""
#, fuzzy
+msgid "(Invalid UTF-8 string)"
+msgstr "Прокси тохиргоо буруу"
+
+#, fuzzy
msgid "Not member"
msgstr "Би гишүүн биш"
@@ -7086,16 +7303,19 @@ msgstr ""
msgid "Join QQ Qun"
msgstr "Чатад холбогдох"
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
+msgid "Input request here"
msgstr ""
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "Qun гишүүнийг амжилттай шинэчлэлээ."
+
#, fuzzy
msgid "Successfully joined Qun"
msgstr "Qun гишүүнийг амжилттай шинэчлэлээ."
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
msgid "QQ Qun Operation"
@@ -7105,7 +7325,7 @@ msgstr ""
msgid "Failed:"
msgstr "Амжилтгүй болсон"
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
#, fuzzy
@@ -7118,11 +7338,11 @@ msgid ""
msgstr ""
#, fuzzy
-msgid "Sorry, you are not our style ..."
+msgid "Sorry, you are not our style"
msgstr "Уучилаарай, та миний төрөлд хамаарахгүй байна..."
#, fuzzy
-msgid "Successfully changed Qun member"
+msgid "Successfully changed Qun members"
msgstr "Qun гишүүнийг амжилттай шинэчлэлээ."
#, fuzzy
@@ -7133,35 +7353,35 @@ msgid "You have successfully created a Qun"
msgstr ""
#, fuzzy
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr "Үүнийг энэ харилцагчийн дүрс зураг болгож тохируулахыг хүсэж байна уу?"
msgid "Setup"
msgstr ""
#, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr ""
#, c-format
-msgid "%d request to join Qun %d"
+msgid "%u request to join Qun %u"
msgstr ""
#, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr ""
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr "Харилцагч Устгах"
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "Харилцагч Устгах"
#, c-format
msgid "Unknown-%d"
@@ -7278,6 +7498,13 @@ msgstr "<b>Сүүлийн шинэчлэлт</b>: %s<br>\n"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<b>Одоо онлайн байгаа</b>: %d<br>\n"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<b>Сүүлийн шинэчлэлт</b>: %s<br>\n"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7285,7 +7512,7 @@ msgid "<i>Feel free to join us!</i> :)"
msgstr ""
#, fuzzy, c-format
-msgid "About OpenQ r%s"
+msgid "About OpenQ %s"
msgstr "%s ийн талаар"
#, fuzzy
@@ -7306,6 +7533,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "%s ийн талаар"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Гэрийн хаяг"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7337,7 +7568,6 @@ msgstr ""
msgid "QQ2008"
msgstr ""
-#. #endif
#, fuzzy
msgid "Connect by TCP"
msgstr "TCP ашиглан холбох"
@@ -7350,6 +7580,9 @@ msgstr "Серверийн порт"
msgid "Show server news"
msgstr "Серверийн хаяг"
+msgid "Show chat room when msg comes"
+msgstr ""
+
msgid "Keep alive interval (seconds)"
msgstr ""
@@ -7358,11 +7591,7 @@ msgid "Update interval (seconds)"
msgstr "Миний мэдээллийг шинчлэх"
#, fuzzy
-msgid "Can not decrypt server reply"
-msgstr "Серверийн мэдээллийг авам боложгүй"
-
-#, fuzzy
-msgid "Can not decrypt get server reply"
+msgid "Cannot decrypt server reply"
msgstr "Серверийн мэдээллийг авам боложгүй"
#, c-format
@@ -7384,19 +7613,21 @@ msgid "Activation required"
msgstr ""
#, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr ""
-msgid "Keep alive error"
-msgstr ""
+#, fuzzy
+msgid "Could not decrypt server reply"
+msgstr "Серверийн мэдээллийг авам боложгүй"
-msgid "Requesting captcha ..."
-msgstr ""
+#, fuzzy
+msgid "Requesting captcha"
+msgstr "Буруу хүсэлт"
-msgid "Checking code of captcha ..."
+msgid "Checking captcha"
msgstr ""
-msgid "Failed captcha verify"
+msgid "Failed captcha verification"
msgstr ""
#, fuzzy
@@ -7407,7 +7638,7 @@ msgstr "Зургийг Хадгалах"
msgid "Enter code"
msgstr "Нууц үг оруул"
-msgid "QQ Captcha Verifing"
+msgid "QQ Captcha Verification"
msgstr ""
#, fuzzy
@@ -7415,30 +7646,21 @@ msgid "Enter the text from the image"
msgstr "Бүлгийн нэр оруул"
#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
+msgid "Unknown reply when checking password (0x%02X)"
msgstr ""
#, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
msgstr ""
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "Холбогдох боломжгүй байна."
msgid "Socket error"
msgstr "Сокетын алдаа"
-#, fuzzy, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr ""
-"Сервертэй холболт тасарсан:\n"
-"%s"
-
msgid "Unable to read from socket"
msgstr "Сокетоос унших боломжгүй"
@@ -7449,11 +7671,11 @@ msgid "Connection lost"
msgstr "Холболтыг тасалсан"
#, fuzzy
-msgid "Get server ..."
+msgid "Getting server"
msgstr "Харилцагчийн мэдээллийг тохируулах..."
#, fuzzy
-msgid "Request token"
+msgid "Requesting token"
msgstr "Хүсэлтийг татгалзсан"
msgid "Couldn't resolve host"
@@ -7464,16 +7686,13 @@ msgid "Invalid server or port"
msgstr "Хүчингүй алдаа"
#, fuzzy
-msgid "Connecting server ..."
-msgstr "Серверт холбогдох"
+msgid "Connecting to server"
+msgstr "SILC сервертэй холбогдож байна"
#, fuzzy
msgid "QQ Error"
msgstr "QQid Алдаа"
-msgid "Failed to send IM."
-msgstr ""
-
#, fuzzy, c-format
msgid ""
"Server News:\n"
@@ -7483,6 +7702,10 @@ msgid ""
msgstr "ICQ Серверийн Хариу"
#, fuzzy, c-format
+msgid "%s:%s"
+msgstr "%s (%s)"
+
+#, fuzzy, c-format
msgid "From %s:"
msgstr "Аас"
@@ -7492,32 +7715,30 @@ msgid ""
"%s"
msgstr "Серверийн зааварчилгаа: %s"
-msgid "Unknow SERVER CMD"
-msgstr ""
+#, fuzzy
+msgid "Unknown SERVER CMD"
+msgstr "Үл мэдэгдэх шалтгаан"
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
#, fuzzy
msgid "QQ Qun Command"
msgstr "Команд"
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr ""
-
-msgid "Can not decrypt login reply"
-msgstr ""
+#, fuzzy
+msgid "Could not decrypt login reply"
+msgstr "Серверийн мэдээллийг авам боложгүй"
#, fuzzy
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr "Үл мэдэгдэх шалтгаан"
#, fuzzy
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr "Үл мэдэгдэх шалтгаан"
#, c-format
@@ -8304,9 +8525,6 @@ msgstr "Байгууллага"
msgid "Unit"
msgstr "Нэгж"
-msgid "Note"
-msgstr "Тэмдэглэл"
-
msgid "Join Chat"
msgstr "Чатад холбогдох"
@@ -8912,6 +9130,10 @@ msgstr ""
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr ""
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "Серверийн порт"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -8946,188 +9168,10 @@ msgid "Auth Domain"
msgstr ""
#, c-format
-msgid "Looking up %s"
-msgstr "%s ийг хайж байна"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "%s рүү холбогдоход алдаа гарлаа"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Эхлэл: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr " %s файлд бичих боломжгүй."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "%s файлыг унших боломжгүй."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "Мессеж хэтэрхий урт байна, сүүлийн %s байтыг хассан."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr ""
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr ""
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr ""
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr ""
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr ""
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr ""
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr ""
-
-#, c-format
-msgid "Failure."
-msgstr ""
-
-#, c-format
-msgid "Too many matches."
-msgstr ""
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr ""
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr ""
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr ""
-
-#, c-format
-msgid "Keyword ignored."
-msgstr ""
-
-#, c-format
-msgid "No keywords."
-msgstr ""
-
-#, c-format
-msgid "User has no directory information."
-msgstr ""
-
-#, c-format
-msgid "Country not supported."
-msgstr ""
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr ""
-
-#, c-format
-msgid "Incorrect username or password."
-msgstr "Хэрэглэгчийн нэр эсвэл нууц үг буруу."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "Энэ үйлчилгээ одоогоор бэлэн биш байна."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr ""
-
-#, c-format
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
-msgstr ""
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr ""
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr ""
-
-msgid "Invalid Groupname"
-msgstr "Буруу бүлгийн нэр"
-
-msgid "Connection Closed"
-msgstr "Холболтыг тасалсан"
-
-msgid "Waiting for reply..."
-msgstr "Хариу хүлээж байна..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr ""
-
-msgid "Password Change Successful"
-msgstr "Нууц үг амжилттай өөрчлөгдлөө"
-
-msgid "_Group:"
-msgstr "Бүлэг:"
-
-msgid "Get Dir Info"
-msgstr "Хавтасны талаархи мэдээлэл авах"
-
-msgid "Set Dir Info"
-msgstr "Хавтасны мэдэээллийг тохируулах"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "Завсар хийхээр %sийг нээж чадсангүй!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "Файл дамжуулалт амжилттгүй боллоо."
-
-msgid "Could not connect for transfer."
-msgstr "Дамжуулахаар холбогдож чадсангүй."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "Файлын толгойд бичих боломжгүй. Файл дамжигдахгүй."
-
-msgid "Save As..."
-msgstr "Нэр өөрчилж хадгалах..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr ""
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
+msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
-#, c-format
-msgid "%s has sent you a webcam invite, which is not yet supported."
+msgid "Your SMS was not delivered"
msgstr ""
msgid "Your Yahoo! message did not get sent."
@@ -9384,13 +9428,8 @@ msgstr ""
msgid "Last Update"
msgstr "Сүүлийн Шинэчлэл"
-#, c-format
-msgid "User information for %s unavailable"
-msgstr ""
-
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr ""
msgid ""
@@ -9706,9 +9745,6 @@ msgstr "Битгий саад бол"
msgid "Extended away"
msgstr ""
-msgid "Mobile"
-msgstr "Гар утас"
-
msgid "Listening to music"
msgstr "Хөгжим сонсох"
@@ -9750,16 +9786,6 @@ msgstr "+++ %s идэвхтэй болсон"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "%s г унших алдаа"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-
msgid "Calculating..."
msgstr "Тооцоолж байна..."
@@ -9832,6 +9858,12 @@ msgstr "%s рүү бичихэд алдаа гарлаа: %s"
msgid "Unable to connect to %s: %s"
msgstr "%s рүү холбогдоход алдаа гарлаа: %s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr "Кодчилол шаардлагатай, гэхдээ ямар ч TLS/SSL дэмжлэг олдсонгүй."
+
#, c-format
msgid " - %s"
msgstr " - %s"
@@ -9865,6 +9897,16 @@ msgstr "Холболтыг зөвшөөрөөгүй"
msgid "Address already in use."
msgstr "Энэ чатын нэрийг ашиглаж байна"
+#, c-format
+msgid "Error Reading %s"
+msgstr "%s г унших алдаа"
+
+#, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+
msgid "Internet Messenger"
msgstr "Интернет Мессенжер"
@@ -9907,10 +9949,8 @@ msgstr "Шинэ мэйлийн мэдэгдэл"
msgid "Use this buddy _icon for this account:"
msgstr "Энэ бүртгэлд харилцагчийн энэ дүрс зургийг ашиглах"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s сонголт"
+msgid "_Advanced"
+msgstr ""
msgid "Use GNOME Proxy Settings"
msgstr "ГНОМЕ-ийн прокси тохиргоог ашиглах"
@@ -9945,9 +9985,6 @@ msgstr ""
msgid "you can see the butterflies mating"
msgstr ""
-msgid "Proxy Options"
-msgstr "Прокси сонгох"
-
msgid "Proxy _type:"
msgstr "Проксийн төрөл:"
@@ -9975,8 +10012,9 @@ msgstr "Үндсэн"
msgid "Create _this new account on the server"
msgstr "Сервер дээр шинэ бүртгэл үүсгэх"
-msgid "_Advanced"
-msgstr ""
+#, fuzzy
+msgid "_Proxy"
+msgstr "Прокси"
msgid "Enabled"
msgstr "Идэвхжүүлэх"
@@ -10047,6 +10085,17 @@ msgstr "Мэдээлэл Авах"
msgid "I_M"
msgstr ""
+#, fuzzy
+msgid "_Audio Call"
+msgstr "Чат Нэмэх "
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Видео Чат"
+
msgid "_Send File..."
msgstr "Файл илгээх..."
@@ -10182,6 +10231,10 @@ msgstr "/Хэрэгсэл/Харилцагчийн _Сануулга"
msgid "/Tools/_Certificates"
msgstr "/Хэрэгсэл/_Сертификат"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Хэрэгсэл/Өрөөний Жагсаалт"
+
msgid "/Tools/Plu_gins"
msgstr "/Хэрэгсэл/Нэмэлт програмууд"
@@ -10191,9 +10244,6 @@ msgstr "/Хэрэгсэл/Тохиргоо"
msgid "/Tools/Pr_ivacy"
msgstr "/Хэрэгсэл/Эрх"
-msgid "/Tools/Smile_y"
-msgstr ""
-
msgid "/Tools/_File Transfers"
msgstr "/Хэрэгсэл/Файл Шилжүүлэлт"
@@ -10309,8 +10359,8 @@ msgstr "Гар аргаар"
msgid "By status"
msgstr "Төлөвөөр"
-msgid "By log size"
-msgstr "Архивын хэмжээгээр"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10326,6 +10376,9 @@ msgstr "Дахин холбогдох"
msgid "Re-enable"
msgstr "Дахин идэвхжүүлэх"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr "Дахин тавтай морилно уу!"
@@ -10411,6 +10464,9 @@ msgstr ""
msgid "A_lias:"
msgstr "Өөр нэр:"
+msgid "_Group:"
+msgstr "Бүлэг:"
+
msgid "Auto_join when account becomes online."
msgstr "Бүртгэл онлайн болоход шууд холбогдох"
@@ -10462,12 +10518,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr ""
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-
msgid "_Buddy:"
msgstr "Харилцагч:"
@@ -10542,6 +10592,22 @@ msgstr "/Харилцаа/Нэр өөрчилж хадгалах..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Харилцаа/Дэлгэцийг цэвэрлэх"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Харилцаа/Дэлгэрэнгүй"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Харилцаа/Дэлгэрэнгүй"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Харилцаа/Дэлгэрэнгүй"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Харилцаа/Архив Үзэх"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Харилцаа/Файл Илгээх..."
@@ -10614,6 +10680,18 @@ msgstr "/Харилцаа"
msgid "/Conversation/View Log"
msgstr "/Харилцаа/Архив үзэх"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Харилцаа/Дэлгэрэнгүй"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Харилцаа/Архив үзэх"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Харилцаа/Дэлгэрэнгүй"
+
msgid "/Conversation/Send File..."
msgstr "/Харилцаа/Файл илгээх..."
@@ -10797,6 +10875,9 @@ msgstr "Уран бүтээлч"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "дэмжлэг"
@@ -10938,6 +11019,9 @@ msgstr "Гүрж хэл"
msgid "Ubuntu Georgian Translators"
msgstr "Убунту Линукс үйлдлийн системийн Гүрж хэлний Орчуулагчид"
+msgid "Khmer"
+msgstr ""
+
msgid "Kannada"
msgstr "Каннада хэл"
@@ -10959,6 +11043,10 @@ msgstr "Литви хэл"
msgid "Macedonian"
msgstr "Македони хэл"
+#, fuzzy
+msgid "Mongolian"
+msgstr "Македони хэл"
+
msgid "Bokmål Norwegian"
msgstr "Норвеги хэл"
@@ -11064,7 +11152,24 @@ msgid ""
msgstr ""
#, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, fuzzy, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+
+#, fuzzy, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
msgid "Current Developers"
@@ -11363,15 +11468,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr ""
-msgid "_Copy Email Address"
-msgstr "Мэйл Хаягийг Хуулах"
-
-msgid "_Open Link in Browser"
-msgstr "Холбоосыг браузер дээр нээх"
-
-msgid "_Copy Link Location"
-msgstr "Холбоосын байрлалыг хуулах"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -11610,13 +11706,14 @@ msgstr "Архивын хавтасыг харах"
msgid "%s %s. Try `%s -h' for more information.\n"
msgstr "%s %s. Дэлгэрэнгүй мэдээллийг авахдаа`%s -h' үз.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -11626,14 +11723,23 @@ msgid ""
" --display=DISPLAY X display to use\n"
" -v, --version display the current version and exit\n"
msgstr ""
+"%s\n"
+"Хэрэглэгээ: %s [OPTION]...\n"
+"\n"
+" -c, --config=DIR файлд DIR ийг ашиглах\n"
+" -d, --debug print debugging messages to stdout\n"
+" -h, --help Тусламжийг харуулах\n"
+" -n, --nologin Автоматаар холбогдохгүй \n"
+" -v, --version Хувилбарыг харуулах\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -11642,6 +11748,14 @@ msgid ""
" Without this only the first account will be enabled).\n"
" -v, --version display the current version and exit\n"
msgstr ""
+"%s\n"
+"Хэрэглэгээ: %s [OPTION]...\n"
+"\n"
+" -c, --config=DIR файлд DIR ийг ашиглах\n"
+" -d, --debug print debugging messages to stdout\n"
+" -h, --help Тусламжийг харуулах\n"
+" -n, --nologin Автоматаар холбогдохгүй \n"
+" -v, --version Хувилбарыг харуулах\n"
#, c-format
msgid ""
@@ -11664,11 +11778,27 @@ msgstr ""
msgid "Pidgin"
msgstr "Пизин"
-msgid "Open All Messages"
-msgstr "Бүх мессежийг нээх"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Танд мэйл ирсэн байна!</span>"
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "Тооцоолж байна..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -11697,6 +11827,27 @@ msgid ""
"The 'Manual' browser command has been chosen, but no command has been set."
msgstr ""
+msgid "Open All Messages"
+msgstr "Бүх мессежийг нээх"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Танд мэйл ирсэн байна!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "Шинэ харилцагчийн сануулга"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Танд мэйл ирсэн байна!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "Мессеж"
+
msgid "The following plugins will be unloaded."
msgstr ""
@@ -11743,6 +11894,10 @@ msgstr "<b>Нэмэлт програмын мэдээлэл</b>"
msgid "Select a file"
msgstr "Файл сонгох"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Харилцагчийн сануулгыг засварлах"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "Хэнд сануулах"
@@ -11813,6 +11968,50 @@ msgstr "Давтах"
msgid "Pounce Target"
msgstr ""
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "Бичиж эхлэх"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "Бичиж байгаад түр зогссон"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "Мессенжерт нэвтрэх"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s (%s) идэвхгүй байж байгаад эргэж ирсэн"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "Эргэж ирэх"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "Бичихээ больсон"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "Мессенжерээс гарах"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "Идэвхгүй болох"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "Гарахад"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Мессеж илгээх"
+
+#, c-format
+msgid "Unknown.... Please report this!"
+msgstr ""
+
msgid "Smiley theme failed to unpack."
msgstr ""
@@ -11833,6 +12032,12 @@ msgstr "Товчны хослол"
msgid "Cl_ose conversations with the Escape key"
msgstr "Esc товчоор харилцааг хаах"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Харилцагчийн жагсаалт"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "Системийн сануулах дүрс"
@@ -11943,9 +12148,6 @@ msgstr "Прокси тохируулах програмыг эхлүүлж ча
msgid "Cannot start browser configuration program."
msgstr "Браузер тохируулах програмыг тохируулах"
-msgid "ST_UN server:"
-msgstr "ST_UN сервер:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">Жишээ нь: stunserver.org</span>"
@@ -11970,6 +12172,10 @@ msgstr "Эхлэх порт:"
msgid "_End port:"
msgstr "Төгсгөх порт:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr "Proxy Server &amp; Браузер"
@@ -11996,6 +12202,10 @@ msgstr "Прокси Сервер"
msgid "No proxy"
msgstr "Ямар ч прокси байхгүй"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "Хэрэглэгч:"
@@ -12157,12 +12367,12 @@ msgstr "Гарах болон идэвхгүй болоход"
msgid "Auto-away"
msgstr ""
-msgid "Change status when _idle"
-msgstr "Идэвхгүй болоход төлөвийг өөрчлөх"
-
msgid "_Minutes before becoming idle:"
msgstr "Идэвхгүй болохын өмнөх минут:"
+msgid "Change status when _idle"
+msgstr "Идэвхгүй болоход төлөвийг өөрчлөх"
+
msgid "Change _status to:"
msgstr "Төлөв өөрчлөх:"
@@ -12310,6 +12520,12 @@ msgstr "Хадгалах & Ашиглах"
msgid "Status for %s"
msgstr "%s ийн төлөв"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
msgid "Custom Smiley"
msgstr ""
@@ -12319,12 +12535,12 @@ msgstr ""
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
-msgid "Duplicate Shortcut"
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
msgstr ""
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
+msgid "Duplicate Shortcut"
msgstr ""
msgid "Please select an image for the smiley."
@@ -12336,16 +12552,22 @@ msgstr ""
msgid "Add Smiley"
msgstr ""
-msgid "Smiley _Image"
-msgstr ""
+#, fuzzy
+msgid "_Image:"
+msgstr "Зураг"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr ""
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "Товчны хослол"
msgid "Smiley"
msgstr ""
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "Товчны хослол"
+
msgid "Custom Smiley Manager"
msgstr ""
@@ -12461,6 +12683,16 @@ msgid ""
"Failed to load image '%s': reason not known, probably a corrupt image file"
msgstr ""
+#, fuzzy
+msgid "_Open Link"
+msgstr "Холбоосыг Нээх:"
+
+msgid "_Copy Link Location"
+msgstr "Холбоосын байрлалыг хуулах"
+
+msgid "_Copy Email Address"
+msgstr "Мэйл Хаягийг Хуулах"
+
msgid "Save File"
msgstr "Файлыг Хадгалах"
@@ -13394,9 +13626,6 @@ msgstr ""
msgid "Only when docked"
msgstr ""
-msgid "_Flash window when chat messages are received"
-msgstr ""
-
msgid "Windows Pidgin Options"
msgstr ""
@@ -13444,6 +13673,98 @@ msgstr ""
msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr ""
+#, fuzzy
+#~ msgid "Add buddy Q&A"
+#~ msgstr "Харилцагч нэмэх"
+
+#, fuzzy
+#~ msgid "Can not decrypt get server reply"
+#~ msgstr "Серверийн мэдээллийг авам боложгүй"
+
+#, fuzzy
+#~ msgid ""
+#~ "Lost connection with server:\n"
+#~ "%d, %s"
+#~ msgstr ""
+#~ "Сервертэй холболт тасарсан:\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Connecting server ..."
+#~ msgstr "Серверт холбогдох"
+
+#~ msgid "Looking up %s"
+#~ msgstr "%s ийг хайж байна"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "%s рүү холбогдоход алдаа гарлаа"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Эхлэл: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr " %s файлд бичих боломжгүй."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "%s файлыг унших боломжгүй."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "Мессеж хэтэрхий урт байна, сүүлийн %s байтыг хассан."
+
+#~ msgid "Incorrect username or password."
+#~ msgstr "Хэрэглэгчийн нэр эсвэл нууц үг буруу."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "Энэ үйлчилгээ одоогоор бэлэн биш байна."
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "Буруу бүлгийн нэр"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Холболтыг тасалсан"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "Хариу хүлээж байна..."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "Нууц үг амжилттай өөрчлөгдлөө"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Хавтасны талаархи мэдээлэл авах"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Хавтасны мэдэээллийг тохируулах"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "Завсар хийхээр %sийг нээж чадсангүй!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr "Файл дамжуулалт амжилттгүй боллоо."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "Дамжуулахаар холбогдож чадсангүй."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "Файлын толгойд бичих боломжгүй. Файл дамжигдахгүй."
+
+#~ msgid "Save As..."
+#~ msgstr "Нэр өөрчилж хадгалах..."
+
+#~ msgid "%s Options"
+#~ msgstr "%s сонголт"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Прокси сонгох"
+
+#~ msgid "By log size"
+#~ msgstr "Архивын хэмжээгээр"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "Холбоосыг браузер дээр нээх"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "ST_UN сервер:"
+
#~ msgid "Primary Information"
#~ msgstr "Үндсэн мэдээлэл"
@@ -13494,13 +13815,6 @@ msgstr ""
#~ msgid "Change Qun information"
#~ msgstr "Харилцагчийн мэдээллийг авах боломжгүй"
-#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr "%s (%s)"
-
#~ msgid "System Message"
#~ msgstr "Системийн Мессеж"
@@ -13518,10 +13832,6 @@ msgstr ""
#~ msgstr "Нууц үг өөрчлөхөд алдаа гарлаа"
#, fuzzy
-#~ msgid "Failed to connect all servers"
-#~ msgstr "Сервертэй холбогдох боломжгүй."
-
-#, fuzzy
#~ msgid "Connecting server %s, retries %d"
#~ msgstr ""
#~ "%s сервертэй холбогдох алдаа:\n"
diff --git a/po/my_MM.po b/po/my_MM.po
index 7e604d8fe9..aca15a0518 100644
--- a/po/my_MM.po
+++ b/po/my_MM.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin 1.1.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
+"POT-Creation-Date: 2009-04-30 10:39-0400\n"
"PO-Revision-Date: 2004-01-14 12:26+0000\n"
"Last-Translator: Minn Myat Soe <mmyatsoe@gmail.com>\n"
"Language-Team: \n"
@@ -32,7 +32,7 @@ msgid ""
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -637,21 +637,6 @@ msgid "Send To"
msgstr "_Send As"
#, fuzzy
-msgid "Invite message"
-msgstr "(1 message)"
-
-msgid "Invite"
-msgstr "Invite"
-
-#, fuzzy
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-
-#, fuzzy
msgid "Conversation"
msgstr "စကားမ္ယား"
@@ -914,6 +899,42 @@ msgid "System Log"
msgstr "System Log"
#, fuzzy
+msgid "Calling ... "
+msgstr "Calculating..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "Accept"
+
+#, fuzzy
+msgid "Reject"
+msgstr "Reset"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "You have parted the channel%s%s"
+
+msgid "call: Make an audio call."
+msgstr ""
+
+#, fuzzy
msgid "Emails"
msgstr "Email"
@@ -951,6 +972,9 @@ msgstr "Connecting"
msgid "IM"
msgstr "IM"
+msgid "Invite"
+msgstr "Invite"
+
#, fuzzy
msgid "(none)"
msgstr "(no name)"
@@ -1174,7 +1198,6 @@ msgstr "%s has gone away. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s က %s (%s) ကို ပို့ခ္ယင္ေနတယ္"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "Unknown pounce event. Please report this!"
@@ -1230,7 +1253,6 @@ msgstr "_Minutes before setting away:"
msgid "Change status to"
msgstr "Change Address To:"
-#. Conversations
msgid "Conversations"
msgstr "စကားမ္ယား"
@@ -1581,7 +1603,6 @@ msgstr ""
"When a new conversation is opened this plugin will insert the last "
"conversation into the current conversation."
-#, c-format
msgid "Online"
msgstr "Online"
@@ -1630,6 +1651,28 @@ msgstr ""
msgid "Lastlog plugin."
msgstr ""
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
#, fuzzy
msgid "accounts"
msgstr "Accounts"
@@ -1733,14 +1776,6 @@ msgstr "Accept chat invitation?"
msgid "SSL Certificate Verification"
msgstr ""
-#. Number of actions
-msgid "Accept"
-msgstr "Accept"
-
-#, fuzzy
-msgid "Reject"
-msgstr "Reset"
-
msgid "_View Certificate..."
msgstr ""
@@ -1879,6 +1914,18 @@ msgstr "%s အခန္းထဲမ္ဟ ထ္ဝက္‌သ္ဝားပ
msgid "%s left the room (%s)."
msgstr "%s (%s) အခန္းထဲမ္ဟ ထ္ဝက္‌သ္ဝားပ္ရီ။"
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Initiate Chat"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+
#, fuzzy, c-format
msgid "Failed to get connection: %s"
msgstr "Failed to set cmodes for %s"
@@ -2017,7 +2064,7 @@ msgstr "%s ဆီက ဖိုင္‌ အရ္ဝေ့အပ္ရောင
msgid "Transfer of file %s complete"
msgstr "%s ကို ကူးပ္ရောင္းတာ ပ္ရီးသ္ဝားပ္ရီ"
-#, fuzzy, c-format
+#, fuzzy
msgid "File transfer complete"
msgstr "File transfer host"
@@ -2025,7 +2072,7 @@ msgstr "File transfer host"
msgid "You canceled the transfer of %s"
msgstr "%s ကို ကူးပ္ရောင္းတာ ဆက္‌မလုပ္‌ေတာ့ပာ"
-#, fuzzy, c-format
+#, fuzzy
msgid "File transfer cancelled"
msgstr "File transfer already started"
@@ -2214,7 +2261,6 @@ msgstr "(%s) %s <AUTO-REPLY>: %s\n"
msgid "You are using %s, but this plugin requires %s."
msgstr ""
-#, c-format
msgid "This plugin has not defined an ID."
msgstr ""
@@ -2708,6 +2754,32 @@ msgstr ""
msgid "Do not ask. Always save in pounce."
msgstr ""
+#, fuzzy
+msgid "One Time Password"
+msgstr "Change Password"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2913,7 +2985,6 @@ msgid ""
"Unable to establish connection with the local mDNS server. Is it running?"
msgstr ""
-#. Creating the options for the protocol
#, fuzzy
msgid "First name"
msgstr "First name:"
@@ -2951,6 +3022,11 @@ msgstr "Yahoo Protocol Plugin"
msgid "Purple Person"
msgstr "လူသစ္‌"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "Locality"
+
msgid "Bonjour"
msgstr ""
@@ -3139,13 +3215,13 @@ msgstr "Remove the chat from your buddy list"
msgid "Add to chat..."
msgstr "(_h) chat ထပ္‌ထည့္မယ္‌"
+#. Global
msgid "Available"
msgstr "Available"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "Away"
@@ -3513,6 +3589,17 @@ msgid ""
"invalid characters."
msgstr ""
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "That file already exists"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Nickname"
+
msgid "Cannot change nick"
msgstr "Cannot change nick"
@@ -3794,6 +3881,37 @@ msgstr "Invalid challenge from server"
msgid "SASL error"
msgstr "Read error"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "No reason given."
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Unsupported Version"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr "Unable to make SSL connection to server."
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "Unable to create new connection."
+
+msgid "Unable to create socket"
+msgstr "Unable to create socket"
+
+msgid "Write error"
+msgstr "Write error"
+
msgid "Full Name"
msgstr "Full Name"
@@ -3863,6 +3981,10 @@ msgstr "City"
msgid "Operating System"
msgstr "Hide Operating System"
+#, fuzzy
+msgid "Local Time"
+msgstr "Local Users"
+
msgid "Last Activity"
msgstr ""
@@ -4100,7 +4222,6 @@ msgstr "Chatty"
msgid "Extended Away"
msgstr "Extended Away"
-#, c-format
msgid "Do Not Disturb"
msgstr "Do Not Disturb"
@@ -4230,9 +4351,6 @@ msgstr "Find Rooms"
msgid "You require encryption, but it is not available on this server."
msgstr ""
-msgid "Write error"
-msgstr "Write error"
-
#, fuzzy
msgid "Ping timeout"
msgstr "Plain text"
@@ -4242,13 +4360,10 @@ msgstr "Read Error"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-msgid "Unable to create socket"
-msgstr "Unable to create socket"
-
#, fuzzy
msgid "Invalid XMPP ID"
msgstr "Invalid ID"
@@ -4256,6 +4371,10 @@ msgstr "Invalid ID"
msgid "Invalid XMPP ID. Domain must be set."
msgstr ""
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Unable to connect to server."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "Registration of %s@%s successful"
@@ -4349,9 +4468,18 @@ msgstr "Authenticating"
msgid "Re-initializing Stream"
msgstr "Re-initialising Stream"
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr "Not Authorised"
+msgid "Mood"
+msgstr "Mood"
+
+msgid "Now Listening"
+msgstr ""
+
msgid "Both"
msgstr "Both"
@@ -4373,12 +4501,6 @@ msgstr "မရ္ဟိပာ"
msgid "Subscription"
msgstr "Subscription"
-msgid "Mood"
-msgstr "Mood"
-
-msgid "Now Listening"
-msgstr ""
-
#, fuzzy
msgid "Mood Text"
msgstr "Mood"
@@ -4624,18 +4746,24 @@ msgstr "Unable to kick user %s"
msgid "Unable to ping user %s"
msgstr "Unable to ban user %s"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
+msgstr "Unable to play sound because the chosen file (%s) does not exist."
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
+msgstr "Unable to play sound because the chosen file (%s) does not exist."
#, fuzzy, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "Unable to play sound because the chosen file (%s) does not exist."
+#, c-format
+msgid "Buzzing %s..."
+msgstr ""
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
#, fuzzy
@@ -4646,9 +4774,36 @@ msgstr "Buzz!!"
msgid "%s has buzzed you!"
msgstr "The user has blocked you"
-#, c-format
-msgid "Buzzing %s..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "Unable to send message to %s:"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "Unable to send file to %s, user does not support file transfers"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr "Unable to send file to %s, user does not support file transfers"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "Registration Failed"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
msgstr ""
+"Please enter the screen name of the person whose info you would like to view."
+
+#, fuzzy
+msgid "Select a Resource"
+msgstr "Select a file"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "Initiate Chat"
msgid "config: Configure a chat room."
msgstr "config: Configure a chat room."
@@ -4810,6 +4965,21 @@ msgstr "Error joining chat %s"
msgid "Error in chat %s"
msgstr "Error in chat %s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "An error occurred while opening the file."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "File transfer already started"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Failed to store image: %s\n"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr "Unable to send file to %s, user does not support file transfers"
@@ -4835,10 +5005,6 @@ msgstr ""
"Please enter the screen name of the person whose info you would like to view."
#, fuzzy
-msgid "Select a Resource"
-msgstr "Select a file"
-
-#, fuzzy
msgid "Edit User Mood"
msgstr "User Modes"
@@ -4878,9 +5044,20 @@ msgstr "Accounts"
msgid "Select an action"
msgstr "Select a file"
+#. 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
+#, fuzzy, c-format
+msgid "Unable to add \"%s\"."
+msgstr "Unable to read file %s."
+
#, fuzzy
-msgid "Unable to retrieve MSN Address Book"
-msgstr "Unable To Retrieve Buddy List"
+msgid "Buddy Add error"
+msgstr "Buddy List Error"
+
+#, fuzzy
+msgid "The username specified does not exist."
+msgstr "The new formatting is invalid."
#, fuzzy, c-format
msgid "Buddy list synchronization issue in %s (%s)"
@@ -5110,7 +5287,7 @@ msgstr "Kids Passport without parental consent"
msgid "Passport account not yet verified"
msgstr "Passport account not yet verified"
-#, fuzzy, c-format
+#, fuzzy
msgid "Passport account suspended"
msgstr "Passport account not yet verified"
@@ -5204,6 +5381,13 @@ msgstr "Send a mobile message."
msgid "Page"
msgstr "Page"
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "Warn"
+
msgid "Has you"
msgstr "Has you"
@@ -5247,6 +5431,14 @@ msgid "Album"
msgstr ""
#, fuzzy
+msgid "Game Title"
+msgstr "Title"
+
+#, fuzzy
+msgid "Office Title"
+msgstr "Title"
+
+#, fuzzy
msgid "Set Friendly Name..."
msgstr "Set Friendly Name"
@@ -5467,8 +5659,9 @@ msgstr ""
"Pidgin could not find any information in the user's profile. The user most "
"likely does not exist."
-msgid "Profile URL"
-msgstr "Profile URL"
+#, fuzzy
+msgid "View web profile"
+msgstr "Not allowed when offline"
#. *< type
#. *< ui_requirement
@@ -5728,13 +5921,6 @@ msgstr "Address Book ထဲ ထည့္လိုက္‌မယ္‌"
msgid "Do you want to delete this buddy from your address book as well?"
msgstr "Do you want to add this buddy to your buddy list?"
-#. 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
-#, fuzzy, c-format
-msgid "Unable to add \"%s\"."
-msgstr "Unable to read file %s."
-
#, fuzzy
msgid "The username specified is invalid."
msgstr "The new formatting is invalid."
@@ -5742,6 +5928,9 @@ msgstr "The new formatting is invalid."
msgid "This Hotmail account may not be active."
msgstr ""
+msgid "Profile URL"
+msgstr "Profile URL"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5756,16 +5945,13 @@ msgstr ""
msgid "MSN Protocol Plugin"
msgstr "AIM/ICQ Protocol Plugin"
-msgid "Missing Cipher"
-msgstr ""
-
-msgid "The RC4 cipher could not be found"
+#, c-format
+msgid "No such user: %s"
msgstr ""
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
-msgstr ""
+#, fuzzy
+msgid "User lookup"
+msgstr "User Rooms"
#, fuzzy
msgid "Reading challenge"
@@ -5779,11 +5965,19 @@ msgstr "Invalid challenge from server"
msgid "Logging in"
msgstr "Logging"
-#, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] ""
-msgstr[1] ""
+#, fuzzy
+msgid "MySpaceIM - No Username Set"
+msgstr "screenname မပေးရသေးပာ"
+
+msgid "You appear to have no MySpace username."
+msgstr ""
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr ""
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr "You were disconnected from the server."
#. Can't write _()'d strings in array initializers. Workaround.
#, fuzzy
@@ -5806,14 +6000,22 @@ msgid "MySpace"
msgstr ""
#, fuzzy
-msgid "MySpaceIM - No Username Set"
-msgstr "screenname မပေးရသေးပာ"
+msgid "IM Friends"
+msgstr "_IM windows"
-msgid "You appear to have no MySpace username."
-msgstr ""
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+msgstr[1] ""
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
-msgstr ""
+#, fuzzy
+msgid "Add contacts from server"
+msgstr "Invalid response from server."
#. The session is now set up, ready to be connected. This emits the
#. * signedOn signal, so clients can now do anything with msimprpl, and
@@ -5838,6 +6040,22 @@ msgid "MySpaceIM Error"
msgstr ""
#, fuzzy
+msgid "Invalid input condition"
+msgstr "Finalizing connection"
+
+#, fuzzy
+msgid "Read buffer full (2)"
+msgstr "Queue full"
+
+#, fuzzy
+msgid "Unparseable message"
+msgstr "Unable to parse message"
+
+#, fuzzy, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr "Couldn't connect to host"
+
+#, fuzzy
msgid "Failed to add buddy"
msgstr "Failed to join buddy in chat"
@@ -5849,14 +6067,6 @@ msgstr "Import Buddy List from Server"
msgid "persist command failed"
msgstr "Switchboard failed"
-#, c-format
-msgid "No such user: %s"
-msgstr ""
-
-#, fuzzy
-msgid "User lookup"
-msgstr "User Rooms"
-
#, fuzzy
msgid "Failed to remove buddy"
msgstr "Failed to join buddy in chat"
@@ -5868,39 +6078,16 @@ msgstr ""
msgid "blocklist command failed"
msgstr "Switchboard failed"
-#, fuzzy
-msgid "Invalid input condition"
-msgstr "Finalizing connection"
-
-#, fuzzy
-msgid "Read buffer full (2)"
-msgstr "Queue full"
-
-#, fuzzy
-msgid "Unparseable message"
-msgstr "Unable to parse message"
-
-#, fuzzy, c-format
-msgid "Couldn't connect to host: %s (%d)"
-msgstr "Couldn't connect to host"
+msgid "Missing Cipher"
+msgstr ""
-#, fuzzy
-msgid "IM Friends"
-msgstr "_IM windows"
+msgid "The RC4 cipher could not be found"
+msgstr ""
-#, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-msgstr[1] ""
-
-#, fuzzy
-msgid "Add contacts from server"
-msgstr "Invalid response from server."
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
msgid "Add friends from MySpace.com"
msgstr ""
@@ -5948,9 +6135,6 @@ msgstr "Larger font size"
msgid "User"
msgstr "Users"
-msgid "Profile"
-msgstr "Profile"
-
#, fuzzy
msgid "Headline"
msgstr "Decline"
@@ -5966,17 +6150,6 @@ msgstr ""
msgid "Client Version"
msgstr "Close conversation"
-#. Protocol won't log in now without a username set.. Disconnect
-#, fuzzy
-msgid "No username set"
-msgstr "screenname မပေးရသေးပာ"
-
-msgid "MySpaceIM - Please Set a Username"
-msgstr ""
-
-msgid "Please enter a username to check its availability:"
-msgstr ""
-
#, fuzzy
msgid "MySpaceIM - Username Available"
msgstr "Service Unavailable"
@@ -5987,6 +6160,9 @@ msgstr ""
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr ""
+msgid "MySpaceIM - Please Set a Username"
+msgstr ""
+
#, fuzzy
msgid "This username is unavailable."
msgstr "This theme has no available smileys."
@@ -5995,6 +6171,14 @@ msgstr "This theme has no available smileys."
msgid "Please try another username:"
msgstr "Please enter a new name for the selected group."
+#. Protocol won't log in now without a username set.. Disconnect
+#, fuzzy
+msgid "No username set"
+msgstr "screenname မပေးရသေးပာ"
+
+msgid "Please enter a username to check its availability:"
+msgstr ""
+
#. TODO: icons for each zap
#. Lots of comments for translators:
#. Zap means "to strike suddenly and forcefully as if with a
@@ -6390,7 +6574,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr "Error: SSL support is not installed."
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr "This conference has been closed. No more messages can be sent."
@@ -6657,23 +6840,18 @@ msgstr "Camera"
msgid "Screen Sharing"
msgstr "Screen Name"
-#, c-format
msgid "Free For Chat"
msgstr "Free For Chat"
-#, c-format
msgid "Not Available"
msgstr "Not Available"
-#, c-format
msgid "Occupied"
msgstr "Occupied"
-#, c-format
msgid "Web Aware"
msgstr "Web Aware"
-#, c-format
msgid "Invisible"
msgstr "Invisible"
@@ -6719,7 +6897,7 @@ msgstr ""
"invalid. Screen names must either start with a letter and contain only "
"letters, numbers and spaces, or contain only numbers."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
#, fuzzy
msgid "Invalid username."
@@ -6736,7 +6914,7 @@ msgstr "Your account is currently suspended."
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "The AOL Instant Messenger service is temporarily unavailable."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6771,10 +6949,8 @@ msgstr ""
msgid "_OK"
msgstr "ကောင္းပာပ္ရီ"
-#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
+#, fuzzy, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
msgstr ""
"You may be disconnected shortly. You may want to use TOC until this is "
"fixed. Check %s for updates."
@@ -6927,7 +7103,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] "You missed %hu message from %s for an unknown reason."
msgstr[1] "You missed %hu messages from %s for an unknown reason."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "Unable to send message: %s"
@@ -6949,6 +7125,9 @@ msgstr "Online Since"
msgid "Member Since"
msgstr "Member Since"
+msgid "Profile"
+msgstr "Profile"
+
msgid "Your AIM connection may be lost."
msgstr "Your AIM connection may be lost."
@@ -7102,8 +7281,8 @@ msgid_plural ""
"The maximum profile length of %d bytes has been exceeded. It has been "
"truncated for you."
msgstr[0] ""
-"The maximum profile length of %d byte has been exceeded. Pidgin has truncated "
-"it for you."
+"The maximum profile length of %d byte has been exceeded. Pidgin has "
+"truncated it for you."
msgstr[1] ""
"The maximum profile length of %d bytes has been exceeded. Pidgin has "
"truncated it for you."
@@ -7242,6 +7421,7 @@ msgstr "Connect"
msgid "Get AIM Info"
msgstr "Get Info"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "Edit Buddy Comment"
@@ -7357,7 +7537,7 @@ msgstr "Asking %s to connect to us at %s:%hu for Direct IM."
msgid "Attempting to connect to %s:%hu."
msgstr "Attempting to connect to %s at %s:%hu for Direct IM."
-#, fuzzy, c-format
+#, fuzzy
msgid "Attempting to connect via proxy server."
msgstr "Attempting to connect to %s at %s:%hu for Direct IM."
@@ -7466,7 +7646,7 @@ msgstr "Opera"
msgid "Visible"
msgstr "Invisible"
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
#, fuzzy
@@ -7561,17 +7741,51 @@ msgstr "Last Updated"
msgid "Could not change buddy information."
msgstr "Please enter a buddy to pounce."
-#, c-format
-msgid "%d needs Q&A"
+#, fuzzy
+msgid "Mobile"
+msgstr "Mobile Phone"
+
+msgid "Note"
+msgstr "Note"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "ေဘာ္‌ဒာ Icon"
+
+msgid "Change his/her memo as you like"
msgstr ""
#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "Add Buddy"
+msgid "_Modify"
+msgstr "_Modify"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "_Modify"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "Server busy"
-msgid "Input answer here"
+msgid "Your request was accepted."
msgstr ""
+msgid "Your request was rejected."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%u requires verification"
+msgstr "Request Authorisation"
+
+#, fuzzy
+msgid "Add buddy question"
+msgstr "စာရင္းထဲကို ေဘာ္ဒာထည့္မလား"
+
+#, fuzzy
+msgid "Enter answer here"
+msgstr "Directory လိုက္‌က္ရီး ပို့လို့ မရပာ။"
+
msgid "Send"
msgstr "Send"
@@ -7583,19 +7797,20 @@ msgstr "Invalid password"
msgid "Authorization denied message:"
msgstr "Authorisation Denied Message:"
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr ""
#, fuzzy, c-format
-msgid "%d needs authentication"
+msgid "%u needs authorization"
msgstr "Plaintext Authentication"
#, fuzzy
msgid "Add buddy authorize"
msgstr "စာရင္းထဲကို ေဘာ္ဒာထည့္မလား"
-msgid "Input request here"
-msgstr ""
+#, fuzzy
+msgid "Enter request here"
+msgstr "Enter a Conference Server"
#, fuzzy
msgid "Would you be my friend?"
@@ -7618,7 +7833,7 @@ msgid "Failed sending authorize"
msgstr "Please authorise me!"
#, fuzzy, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr "Failed to join buddy in chat"
#, fuzzy, c-format
@@ -7664,6 +7879,10 @@ msgid "You can only search for permanent Qun\n"
msgstr ""
#, fuzzy
+msgid "(Invalid UTF-8 string)"
+msgstr "Invalid proxy settings"
+
+#, fuzzy
msgid "Not member"
msgstr "Member Since"
@@ -7708,15 +7927,18 @@ msgstr ""
msgid "Join QQ Qun"
msgstr "Join Chat"
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
+msgid "Input request here"
msgstr ""
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "Telephone Number"
+
msgid "Successfully joined Qun"
msgstr ""
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
#, fuzzy
@@ -7727,7 +7949,7 @@ msgstr "Sound Options"
msgid "Failed:"
msgstr "Failed"
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
#, fuzzy
@@ -7739,11 +7961,12 @@ msgid ""
"this operation will eventually remove this Qun."
msgstr ""
-msgid "Sorry, you are not our style ..."
-msgstr ""
+#, fuzzy
+msgid "Sorry, you are not our style"
+msgstr "Sorry, I ran out for a bit!"
#, fuzzy
-msgid "Successfully changed Qun member"
+msgid "Successfully changed Qun members"
msgstr "Telephone Number"
#, fuzzy
@@ -7754,7 +7977,7 @@ msgid "You have successfully created a Qun"
msgstr ""
#, fuzzy
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr "Would you like to join the conversation?"
#, fuzzy
@@ -7762,28 +7985,28 @@ msgid "Setup"
msgstr "(_S) လုပ္‌လိုက္‌ေတာ့"
#, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr ""
#, c-format
-msgid "%d request to join Qun %d"
+msgid "%u request to join Qun %u"
msgstr ""
#, fuzzy, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr "Failed to join buddy in chat"
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr "Remove Buddy"
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "Remove Buddy"
#, fuzzy, c-format
msgid "Unknown-%d"
@@ -7903,6 +8126,13 @@ msgstr "<b>User:</b> %s<br>"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<b>Alias:</b> %s<br>"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<b>User:</b> %s<br>"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7910,7 +8140,7 @@ msgid "<i>Feel free to join us!</i> :)"
msgstr ""
#, fuzzy, c-format
-msgid "About OpenQ r%s"
+msgid "About OpenQ %s"
msgstr "About Pidgin"
#, fuzzy
@@ -7931,6 +8161,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "About Pidgin"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Home Address"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7962,7 +8196,6 @@ msgstr ""
msgid "QQ2008"
msgstr ""
-#. #endif
#, fuzzy
msgid "Connect by TCP"
msgstr "Connecting"
@@ -7975,6 +8208,9 @@ msgstr "Option နည္းနည္းပဲ ပ္ရပာ"
msgid "Show server news"
msgstr "Option နည္းနည္းပဲ ပ္ရပာ"
+msgid "Show chat room when msg comes"
+msgstr ""
+
#, fuzzy
msgid "Keep alive interval (seconds)"
msgstr "Read error"
@@ -7984,11 +8220,7 @@ msgid "Update interval (seconds)"
msgstr "Read error"
#, fuzzy
-msgid "Can not decrypt server reply"
-msgstr "Cannot get server information"
-
-#, fuzzy
-msgid "Can not decrypt get server reply"
+msgid "Cannot decrypt server reply"
msgstr "Cannot get server information"
#, c-format
@@ -8011,21 +8243,23 @@ msgid "Activation required"
msgstr "Registration Required"
#, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr ""
#, fuzzy
-msgid "Keep alive error"
-msgstr "Read error"
+msgid "Could not decrypt server reply"
+msgstr "Cannot get server information"
-msgid "Requesting captcha ..."
-msgstr ""
+#, fuzzy
+msgid "Requesting captcha"
+msgstr "Request ambiguous"
-msgid "Checking code of captcha ..."
+msgid "Checking captcha"
msgstr ""
-msgid "Failed captcha verify"
-msgstr ""
+#, fuzzy
+msgid "Failed captcha verification"
+msgstr "Failed Yahoo! Authentication"
#, fuzzy
msgid "Captcha Image"
@@ -8035,7 +8269,7 @@ msgstr "Save Image"
msgid "Enter code"
msgstr "Change Password"
-msgid "QQ Captcha Verifing"
+msgid "QQ Captcha Verification"
msgstr ""
#, fuzzy
@@ -8043,16 +8277,15 @@ msgid "Enter the text from the image"
msgstr "Please enter the name of the group to be added."
#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
+msgid "Unknown reply when checking password (0x%02X)"
msgstr ""
#, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
msgstr ""
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "Unable to connect."
@@ -8060,12 +8293,6 @@ msgstr "Unable to connect."
msgid "Socket error"
msgstr "Unknown Error"
-#, fuzzy, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr "You were disconnected from the server."
-
#, fuzzy
msgid "Unable to read from socket"
msgstr "Unable to read socket"
@@ -8079,11 +8306,11 @@ msgid "Connection lost"
msgstr "Connection Closed"
#, fuzzy
-msgid "Get server ..."
+msgid "Getting server"
msgstr "Set User Info..."
#, fuzzy
-msgid "Request token"
+msgid "Requesting token"
msgstr "Request denied"
#, fuzzy
@@ -8095,17 +8322,13 @@ msgid "Invalid server or port"
msgstr "Invalid username or password"
#, fuzzy
-msgid "Connecting server ..."
-msgstr "Connect server"
+msgid "Connecting to server"
+msgstr "Connecting to SILC Server"
#, fuzzy
msgid "QQ Error"
msgstr "Read Error"
-#, fuzzy
-msgid "Failed to send IM."
-msgstr "Failed to join chat"
-
#, fuzzy, c-format
msgid ""
"Server News:\n"
@@ -8115,6 +8338,10 @@ msgid ""
msgstr "ICQ Server Relay"
#, fuzzy, c-format
+msgid "%s:%s"
+msgstr "Users on %s: %s"
+
+#, fuzzy, c-format
msgid "From %s:"
msgstr "From"
@@ -8124,32 +8351,30 @@ msgid ""
"%s"
msgstr "Server Information"
-msgid "Unknow SERVER CMD"
-msgstr ""
+#, fuzzy
+msgid "Unknown SERVER CMD"
+msgstr "Unknown reason."
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
#, fuzzy
msgid "QQ Qun Command"
msgstr "Command"
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr ""
-
-msgid "Can not decrypt login reply"
-msgstr ""
+#, fuzzy
+msgid "Could not decrypt login reply"
+msgstr "Cannot get server information"
#, fuzzy
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr "Unknown reason."
#, fuzzy
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr "Unknown reason."
#, fuzzy, c-format
@@ -9002,9 +9227,6 @@ msgstr "Organisation"
msgid "Unit"
msgstr "Unit"
-msgid "Note"
-msgstr "Note"
-
msgid "Join Chat"
msgstr "Join Chat"
@@ -9682,6 +9904,10 @@ msgstr "Unable to resolve hostname."
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr "IRC nicks may not contain whitespace"
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "Option နည္းနည္းပဲ ပ္ရပာ"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -9723,192 +9949,10 @@ msgid "Auth Domain"
msgstr "Automatic"
#, c-format
-msgid "Looking up %s"
-msgstr "Looking up %s"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Connect to %s failed"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Signon: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "Unable to write file %s."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "Unable to read file %s."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "Message too long, last %s bytes truncated."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s not currently logged in."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "Warning of %s not allowed."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "A message has been dropped, you are exceeding the server speed limit."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "Chat in %s is not available."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "You are sending messages too fast to %s."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "You missed an IM from %s because it was too big."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "You missed an IM from %s because it was sent too fast."
-
-#, c-format
-msgid "Failure."
-msgstr "Failure."
-
-#, c-format
-msgid "Too many matches."
-msgstr "Too many matches."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "Need more qualifiers."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "Dir service temporarily unavailable."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "Email lookup restricted."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "Keyword ignored."
-
-#, c-format
-msgid "No keywords."
-msgstr "No keywords."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "User has no directory information."
-
-#, c-format
-msgid "Country not supported."
-msgstr "Country not supported."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Failure unknown: %s."
-
-#, fuzzy, c-format
-msgid "Incorrect username or password."
-msgstr "Incorrect nickname or password."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "The service is temporarily unavailable."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "Your warning level is currently too high to log in."
-
-#, 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."
+msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
-"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."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "An unknown signon error has occurred: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "An unknown error, %d, has occurred. Info: %s"
-
-#, fuzzy
-msgid "Invalid Groupname"
-msgstr "Invalid group"
-
-msgid "Connection Closed"
-msgstr "Connection Closed"
-
-msgid "Waiting for reply..."
-msgstr "Waiting for reply..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "TOC has come back from its pause. You may now send messages again."
-
-msgid "Password Change Successful"
-msgstr "Password Change Successful"
-
-msgid "_Group:"
-msgstr "_Group:"
-
-msgid "Get Dir Info"
-msgstr "Get Dir Info"
-
-msgid "Set Dir Info"
-msgstr "Set Dir Info"
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "Could not open %s for writing!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "File transfer failed; other side probably cancelled."
-
-msgid "Could not connect for transfer."
-msgstr "Could not connect for transfer."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "Could not write file header. The file will not be transferred."
-
-#, fuzzy
-msgid "Save As..."
-msgstr "Save Icon As..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgstr[1] "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s requests you to send them a file"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "TOC Protocol Plugin"
-
-#, c-format
-msgid "%s has sent you a webcam invite, which is not yet supported."
+msgid "Your SMS was not delivered"
msgstr ""
msgid "Your Yahoo! message did not get sent."
@@ -10194,14 +10238,9 @@ msgstr "Cool Link 3"
msgid "Last Update"
msgstr "Last Updated"
-#, c-format
-msgid "User information for %s unavailable"
-msgstr "User information for %s unavailable"
-
#, fuzzy
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr ""
"Sorry, this profile seems to be in a language that is not supported at this "
"time."
@@ -10542,10 +10581,6 @@ msgstr "Do Not Disturb"
msgid "Extended away"
msgstr "Extended Away"
-#, fuzzy
-msgid "Mobile"
-msgstr "Mobile Phone"
-
msgid "Listening to music"
msgstr ""
@@ -10587,20 +10622,6 @@ msgstr "%s is no longer idle"
msgid "%x %X"
msgstr ""
-#, fuzzy, c-format
-msgid "Error Reading %s"
-msgstr ""
-"Error reading %s: \n"
-"%s.\n"
-
-#, 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 ""
-"An error was encountered parsing your buddy list. It has not been loaded, "
-"and the old file has been moved to blist.xml~."
-
msgid "Calculating..."
msgstr "Calculating..."
@@ -10675,6 +10696,12 @@ msgstr ""
msgid "Unable to connect to %s: %s"
msgstr "Unable to connect to %s server"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr "Server requires SSL for login"
+
#, c-format
msgid " - %s"
msgstr ""
@@ -10708,6 +10735,20 @@ msgstr "Connection Closed"
msgid "Address already in use."
msgstr "That file already exists"
+#, fuzzy, c-format
+msgid "Error Reading %s"
+msgstr ""
+"Error reading %s: \n"
+"%s.\n"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"An error was encountered parsing your buddy list. It has not been loaded, "
+"and the old file has been moved to blist.xml~."
+
#, fuzzy
msgid "Internet Messenger"
msgstr "Instant Messagers"
@@ -10757,10 +10798,9 @@ msgstr "Mail အသစ္‌ အခ္ယက္‌ေပးခ္ရင္း"
msgid "Use this buddy _icon for this account:"
msgstr ""
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s Options"
+#, fuzzy
+msgid "_Advanced"
+msgstr "(_C) မလုပ္‌ေတာ့ဘူး"
#, fuzzy
msgid "Use GNOME Proxy Settings"
@@ -10796,9 +10836,6 @@ msgstr "ေသသေခ္ယာခ္ယာ အနီးကပ္‌က္ရ
msgid "you can see the butterflies mating"
msgstr "လိပ္‌ပ္ရာမ္ယား မိတ္‌လိုက္‌ေနသည္‌ကို ေတ္ဝ့နိုင္‌ပာတယ္‌"
-msgid "Proxy Options"
-msgstr "Proxy Options"
-
msgid "Proxy _type:"
msgstr "(_t) Proxy အမ္ယိုးအစား :"
@@ -10829,8 +10866,8 @@ msgid "Create _this new account on the server"
msgstr ""
#, fuzzy
-msgid "_Advanced"
-msgstr "(_C) မလုပ္‌ေတာ့ဘူး"
+msgid "_Proxy"
+msgstr "Proxy မသံုးပာ"
#, fuzzy
msgid "Enabled"
@@ -10898,6 +10935,17 @@ msgid "I_M"
msgstr "I_M"
#, fuzzy
+msgid "_Audio Call"
+msgstr "Chat ထပ္‌ထည့္မယ္‌"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Video Chat"
+
+#, fuzzy
msgid "_Send File..."
msgstr "(_S) ဖိုင္‌ပို့မယ္‌"
@@ -11055,6 +11103,10 @@ msgid "/Tools/_Certificates"
msgstr "/Tools/(_e) စိတ္‌က္ရိုက္‌မ္ယား"
#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Tools/(_A) အဝေး"
+
+#, fuzzy
msgid "/Tools/Plu_gins"
msgstr "/Tools/Plugin Actions"
@@ -11064,10 +11116,6 @@ msgstr "/Tools/(_e) စိတ္‌က္ရိုက္‌မ္ယား"
msgid "/Tools/Pr_ivacy"
msgstr "/Tools/Pr_ivacy"
-#, fuzzy
-msgid "/Tools/Smile_y"
-msgstr "/Tools/(_A) အဝေး"
-
msgid "/Tools/_File Transfers"
msgstr "/Tools/(_F) ဖိုင္‌ အဝင္‌အထ္ဝက္‌"
@@ -11200,8 +11248,8 @@ msgstr "Manual"
msgid "By status"
msgstr "By status"
-msgid "By log size"
-msgstr "By log size"
+msgid "By recent log activity"
+msgstr ""
#, fuzzy, c-format
msgid "%s disconnected"
@@ -11219,6 +11267,9 @@ msgstr "(_R) ပ္ရန္‌လည္‌ ဆက္‌သ္ဝယ္‌မယ
msgid "Re-enable"
msgstr "Register New Jabber Account"
+msgid "SSL FAQs"
+msgstr ""
+
#, fuzzy
msgid "Welcome back!"
msgstr "%s came back"
@@ -11318,6 +11369,9 @@ msgstr ""
msgid "A_lias:"
msgstr "Alias:"
+msgid "_Group:"
+msgstr "_Group:"
+
msgid "Auto_join when account becomes online."
msgstr ""
@@ -11377,14 +11431,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr "Invite Buddy Into Chat Room"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-
msgid "_Buddy:"
msgstr "_Buddy:"
@@ -11464,6 +11510,22 @@ msgstr "/Conversation/_Save As..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Conversation/Clear"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Conversation/_Close"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Conversation/_Close"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Conversation/_Close"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Conversation/View _Log"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Conversation/Se_nd File..."
@@ -11544,6 +11606,18 @@ msgstr "/_Conversation"
msgid "/Conversation/View Log"
msgstr "/Conversation/View Log"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Conversation/_Close"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Conversation/View Log"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Conversation/_Close"
+
msgid "/Conversation/Send File..."
msgstr "/Conversation/Send File..."
@@ -11744,6 +11818,9 @@ msgstr "Address"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "support"
@@ -11897,6 +11974,10 @@ msgid "Ubuntu Georgian Translators"
msgstr "Current Translators"
#, fuzzy
+msgid "Khmer"
+msgstr "Opera"
+
+#, fuzzy
msgid "Kannada"
msgstr "Banned"
@@ -11919,6 +12000,10 @@ msgid "Macedonian"
msgstr "Macedonian"
#, fuzzy
+msgid "Mongolian"
+msgstr "Macedonian"
+
+#, fuzzy
msgid "Bokmål Norwegian"
msgstr "Norwegian"
@@ -12028,8 +12113,25 @@ msgid ""
"<BR><BR>"
msgstr ""
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, fuzzy, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"4\">IRC:</FONT> #Pidgin on irc.freenode.net<BR><BR>"
+
#, fuzzy, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"4\">IRC:</FONT> #Pidgin on irc.freenode.net<BR><BR>"
#, fuzzy
@@ -12372,15 +12474,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr "Mail အသစ္‌ အခ္ယက္‌ေပးခ္ရင္း"
-msgid "_Copy Email Address"
-msgstr "_Copy Email Address"
-
-msgid "_Open Link in Browser"
-msgstr "_Open Link in Browser"
-
-msgid "_Copy Link Location"
-msgstr "_Copy Link Location"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12645,6 +12738,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12662,6 +12756,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12693,16 +12788,27 @@ msgstr ""
msgid "Pidgin"
msgstr "Paging"
-#, fuzzy
-msgid "Open All Messages"
-msgstr "Send Message"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
+
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
#, fuzzy
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgid "Calling..."
+msgstr "Calculating..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
msgstr ""
-"<span weight=\"bold\" size=\"larger\">You have mail!</span>\n"
-"\n"
-"%s"
#, c-format
msgid "%s has %d new message."
@@ -12732,6 +12838,35 @@ msgid ""
msgstr ""
"The 'Manual' browser command has been chosen, but no command has been set."
+#, fuzzy
+msgid "Open All Messages"
+msgstr "Send Message"
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr ""
+"<span weight=\"bold\" size=\"larger\">You have mail!</span>\n"
+"\n"
+"%s"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "New Buddy Pounce"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr ""
+"<span weight=\"bold\" size=\"larger\">You have mail!</span>\n"
+"\n"
+"%s"
+
+#, fuzzy
+msgid "No message"
+msgstr "(1 message)"
+
msgid "The following plugins will be unloaded."
msgstr ""
@@ -12785,6 +12920,10 @@ msgstr ""
msgid "Select a file"
msgstr "Select a file"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Edit Buddy Pounce"
+
#. Create the "Pounce on Whom" frame.
#, fuzzy
msgid "Pounce on Whom"
@@ -12870,6 +13009,50 @@ msgstr ""
msgid "Pounce Target"
msgstr "Pounce When"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "Buddy starts _typing"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "User is typing..."
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "Si_gn on"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "Retur_n from idle"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "_Return from away"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "Ping"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "Sign _off"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "%s became idle"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "When away"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Send a _message"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "Unknown pounce event. Please report this!"
+
msgid "Smiley theme failed to unpack."
msgstr ""
@@ -12894,6 +13077,12 @@ msgstr "Shortcuts"
msgid "Cl_ose conversations with the Escape key"
msgstr "Conversations with %s"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "ဘော္ဒာ စာရင္း"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "System Tray Icon"
@@ -13019,10 +13208,6 @@ msgstr ""
msgid "Cannot start browser configuration program."
msgstr "Cannot get user information"
-#, fuzzy
-msgid "ST_UN server:"
-msgstr "_Server:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr ""
@@ -13050,6 +13235,10 @@ msgstr "_Start Port:"
msgid "_End port:"
msgstr "_End Port:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
#, fuzzy
msgid "Proxy Server &amp; Browser"
msgstr "Proxy Server"
@@ -13079,6 +13268,10 @@ msgstr "Proxy Server"
msgid "No proxy"
msgstr "No proxy"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "_User:"
@@ -13249,14 +13442,14 @@ msgid "Auto-away"
msgstr "Auto-away"
#, fuzzy
-msgid "Change status when _idle"
-msgstr "Set away _when idle"
-
-#, fuzzy
msgid "_Minutes before becoming idle:"
msgstr "_Minutes before setting away:"
#, fuzzy
+msgid "Change status when _idle"
+msgstr "Set away _when idle"
+
+#, fuzzy
msgid "Change _status to:"
msgstr "Change Address To:"
@@ -13414,6 +13607,12 @@ msgstr "(_v) သိမ္းမယ္။ ပ္ရီးရင္‌ သံု
msgid "Status for %s"
msgstr "Status: %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
#, fuzzy
msgid "Custom Smiley"
msgstr "Insert smiley"
@@ -13424,15 +13623,15 @@ msgstr ""
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
+msgstr ""
+
#, fuzzy
msgid "Duplicate Shortcut"
msgstr "Public key file"
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
-msgstr ""
-
#, fuzzy
msgid "Please select an image for the smiley."
msgstr "Please enter a new name for the selected group."
@@ -13446,18 +13645,22 @@ msgid "Add Smiley"
msgstr "Smile!"
#, fuzzy
-msgid "Smiley _Image"
+msgid "_Image:"
msgstr "Save Image"
-#. Smiley shortcut
+#. Shortcut text
#, fuzzy
-msgid "Smiley S_hortcut"
+msgid "S_hortcut text:"
msgstr "Shortcuts"
#, fuzzy
msgid "Smiley"
msgstr "Smile!"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "Shortcuts"
+
msgid "Custom Smiley Manager"
msgstr ""
@@ -13586,6 +13789,16 @@ msgid ""
msgstr ""
#, fuzzy
+msgid "_Open Link"
+msgstr "_Open Link in:"
+
+msgid "_Copy Link Location"
+msgstr "_Copy Link Location"
+
+msgid "_Copy Email Address"
+msgstr "_Copy Email Address"
+
+#, fuzzy
msgid "Save File"
msgstr "Save File..."
@@ -14613,10 +14826,6 @@ msgid "Only when docked"
msgstr ""
#, fuzzy
-msgid "_Flash window when chat messages are received"
-msgstr "(_F) messages ရောက္‌လာက windows ကို‌ flash လုပ္‌ပ္ရပာ"
-
-#, fuzzy
msgid "Windows Pidgin Options"
msgstr "Login Options"
@@ -14668,6 +14877,231 @@ msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr ""
#, fuzzy
+#~ msgid "Invite message"
+#~ msgstr "(1 message)"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Please enter the name of the user you wish to invite, along with an "
+#~ "optional invite message."
+
+#, fuzzy
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "Unable To Retrieve Buddy List"
+
+#~ msgid ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+#~ msgstr ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+
+#, fuzzy
+#~ msgid "Add buddy Q&A"
+#~ msgstr "Add Buddy"
+
+#, fuzzy
+#~ msgid "Can not decrypt get server reply"
+#~ msgstr "Cannot get server information"
+
+#, fuzzy
+#~ msgid "Keep alive error"
+#~ msgstr "Read error"
+
+#, fuzzy
+#~ msgid ""
+#~ "Lost connection with server:\n"
+#~ "%d, %s"
+#~ msgstr "You were disconnected from the server."
+
+#, fuzzy
+#~ msgid "Connecting server ..."
+#~ msgstr "Connect server"
+
+#, fuzzy
+#~ msgid "Failed to send IM."
+#~ msgstr "Failed to join chat"
+
+#~ msgid "Looking up %s"
+#~ msgstr "Looking up %s"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "Connect to %s failed"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Signon: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "Unable to write file %s."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "Unable to read file %s."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "Message too long, last %s bytes truncated."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s not currently logged in."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "Warning of %s not allowed."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "Chat in %s is not available."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "You are sending messages too fast to %s."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "You missed an IM from %s because it was too big."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr "You missed an IM from %s because it was sent too fast."
+
+#~ msgid "Failure."
+#~ msgstr "Failure."
+
+#~ msgid "Too many matches."
+#~ msgstr "Too many matches."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "Need more qualifiers."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "Dir service temporarily unavailable."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "Email lookup restricted."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "Keyword ignored."
+
+#~ msgid "No keywords."
+#~ msgstr "No keywords."
+
+#~ msgid "User has no directory information."
+#~ msgstr "User has no directory information."
+
+#~ msgid "Country not supported."
+#~ msgstr "Country not supported."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Failure unknown: %s."
+
+#, fuzzy
+#~ msgid "Incorrect username or password."
+#~ msgstr "Incorrect nickname or password."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "The service is temporarily unavailable."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "Your warning level is currently too high to log in."
+
+#~ 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 ""
+#~ "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."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "An unknown signon error has occurred: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "An unknown error, %d, has occurred. Info: %s"
+
+#, fuzzy
+#~ msgid "Invalid Groupname"
+#~ msgstr "Invalid group"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Connection Closed"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "Waiting for reply..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "TOC has come back from its pause. You may now send messages again."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "Password Change Successful"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Get Dir Info"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Set Dir Info"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "Could not open %s for writing!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr "File transfer failed; other side probably cancelled."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "Could not connect for transfer."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "Could not write file header. The file will not be transferred."
+
+#, fuzzy
+#~ msgid "Save As..."
+#~ msgstr "Save Icon As..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s requests you to send them a file"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "TOC Protocol Plugin"
+
+#~ msgid "User information for %s unavailable"
+#~ msgstr "User information for %s unavailable"
+
+#~ msgid "%s Options"
+#~ msgstr "%s Options"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Proxy Options"
+
+#~ msgid "By log size"
+#~ msgstr "By log size"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_Open Link in Browser"
+
+#, fuzzy
+#~ msgid "ST_UN server:"
+#~ msgstr "_Server:"
+
+#, fuzzy
+#~ msgid "Smiley _Image"
+#~ msgstr "Save Image"
+
+#, fuzzy
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "Shortcuts"
+
+#, fuzzy
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "(_F) messages ရောက္‌လာက windows ကို‌ flash လုပ္‌ပ္ရပာ"
+
+#, fuzzy
#~ msgid "A group with the name already exists."
#~ msgstr "A folder with that name already exists"
@@ -14736,13 +15170,6 @@ msgstr ""
#~ msgstr "ဒီ \"%s\" message ကို ဖယ္‌လိုက္‌ရတော့မ္ဟာလား"
#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr "Users on %s: %s"
-
-#, fuzzy
#~ msgid "System Message"
#~ msgstr "Send Message"
@@ -14881,9 +15308,6 @@ msgstr ""
#~ msgid "Invalid screen name"
#~ msgstr "Invalid Username"
-#~ msgid "Unable to make SSL connection to server."
-#~ msgstr "Unable to make SSL connection to server."
-
#~ msgid "Too evil (sender)"
#~ msgstr "Too evil (sender)"
@@ -15352,9 +15776,6 @@ msgstr ""
#~ msgid "_Idle"
#~ msgstr "_Idle"
-#~ msgid "Retur_n from idle"
-#~ msgstr "Retur_n from idle"
-
#~ msgid "Pounce Action"
#~ msgstr "Pounce Action"
@@ -15646,12 +16067,12 @@ msgstr ""
#~ msgid ""
#~ "When this happens, TOC ignores any messages sent to it, and may kick you "
-#~ "off if you send a message. Pidgin will prevent anything from going through. "
-#~ "This is only temporary, please be patient."
+#~ "off if you send a message. Pidgin will prevent anything from going "
+#~ "through. This is only temporary, please be patient."
#~ msgstr ""
#~ "When this happens, TOC ignores any messages sent to it, and may kick you "
-#~ "off if you send a message. Pidgin will prevent anything from going through. "
-#~ "This is only temporary, please be patient."
+#~ "off if you send a message. Pidgin will prevent anything from going "
+#~ "through. This is only temporary, please be patient."
#~ msgid "Pidgin - Save As..."
#~ msgstr "Pidgin - Save As..."
@@ -15665,13 +16086,13 @@ msgstr ""
#~ msgid ""
#~ "The normal authentication method has failed. This means either your "
#~ "password is incorrect, or Yahoo!'s authentication scheme has changed. "
-#~ "Pidgin will now attempt to log in using Web Messenger authentication, which "
-#~ "will result in reduced functionality and features."
+#~ "Pidgin will now attempt to log in using Web Messenger authentication, "
+#~ "which will result in reduced functionality and features."
#~ msgstr ""
#~ "The normal authentication method has failed. This means either your "
#~ "password is incorrect, or Yahoo!'s authentication scheme has changed. "
-#~ "Pidgin will now attempt to log in using Web Messenger authentication, will "
-#~ "which result in reduced functionality and features."
+#~ "Pidgin will now attempt to log in using Web Messenger authentication, "
+#~ "will which result in reduced functionality and features."
#~ msgid "Unable to read"
#~ msgstr "Unable to read"
@@ -15694,9 +16115,6 @@ msgstr ""
#~ msgstr[0] "(%d message)"
#~ msgstr[1] "(%d messages)"
-#~ msgid "(1 message)"
-#~ msgstr "(1 message)"
-
#, fuzzy
#~ msgid "Default auto-away"
#~ msgstr "Auto-away"
@@ -15799,9 +16217,6 @@ msgstr ""
#~ msgid "Away title: "
#~ msgstr "Away title: "
-#~ msgid "Buddy List Error"
-#~ msgstr "Buddy List Error"
-
#~ msgid "Size of the expander arrow"
#~ msgstr "Size of the expander arrow"
@@ -16198,12 +16613,12 @@ msgstr ""
#~ msgstr "Unable to load preferences"
#~ msgid ""
-#~ "Pidgin was not able to load your preferences because they are stored in an "
-#~ "old format that is no longer used. Please reconfigure your settings "
+#~ "Pidgin 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 ""
-#~ "Pidgin was not able to load your preferences because they are stored in an "
-#~ "old format that is no longer used. Please reconfigure your settings "
+#~ "Pidgin 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."
#~ msgid "Slightly less boring default"
@@ -16309,18 +16724,18 @@ msgstr ""
#~ msgstr "Unable to access directory"
#~ msgid ""
-#~ "Pidgin was unable to search the Directory because it was unable to connect "
-#~ "to the directory server. Please try again later."
+#~ "Pidgin was unable to search the Directory because it was unable to "
+#~ "connect to the directory server. Please try again later."
#~ msgstr ""
-#~ "Pidgin was unable to search the Directory because it was unable to connect "
-#~ "to the directory server. Please try again later."
+#~ "Pidgin was unable to search the Directory because it was unable to "
+#~ "connect to the directory server. Please try again later."
#~ msgid ""
-#~ "Pidgin was unable to change your password due to an error connecting to the "
-#~ "Gadu-Gadu server. Please try again later."
+#~ "Pidgin was unable to change your password due to an error connecting to "
+#~ "the Gadu-Gadu server. Please try again later."
#~ msgstr ""
-#~ "Pidgin was unable to change your password due to an error connecting to the "
-#~ "Gadu-Gadu server. Please try again later."
+#~ "Pidgin was unable to change your password due to an error connecting to "
+#~ "the Gadu-Gadu server. Please try again later."
#~ msgid "Directory Search"
#~ msgstr "Directory Search"
@@ -16329,11 +16744,11 @@ msgstr ""
#~ msgstr "Unable to access user profile."
#~ msgid ""
-#~ "Pidgin was unable to access this user's profile due to an error connecting "
-#~ "to the directory server. Please try again later."
+#~ "Pidgin was unable to access this user's profile due to an error "
+#~ "connecting to the directory server. Please try again later."
#~ msgstr ""
-#~ "Pidgin was unable to access this user's profile due to an error connecting "
-#~ "to the directory server. Please try again later."
+#~ "Pidgin was unable to access this user's profile due to an error "
+#~ "connecting to the directory server. Please try again later."
#~ msgid "Pidgin encountered an error communicating with the ICQ server."
#~ msgstr "Pidgin encountered an error communicating with the ICQ server."
@@ -16475,9 +16890,6 @@ msgstr ""
#~ "%s has invited %s to the chat room %s:\n"
#~ "<b>%s</b>"
-#~ msgid "Sorry, I ran out for a bit!"
-#~ msgstr "Sorry, I ran out for a bit!"
-
#~ msgid ""
#~ "Unable to guess the image type based on the file extension supplied. "
#~ "Defaulting to PNG."
@@ -16504,9 +16916,6 @@ msgstr ""
#~ msgid "Miscellaneous error"
#~ msgstr "Miscellaneous error"
-#~ msgid "Initiate Chat"
-#~ msgstr "Initiate Chat"
-
#~ msgid "Unknown error when attempting to authorize with MSN login server."
#~ msgstr "Unknown error when attempting to authorise with MSN login server."
diff --git a/po/nb.po b/po/nb.po
index 7b222bc182..e33a3fe1b5 100644
--- a/po/nb.po
+++ b/po/nb.po
@@ -14,7 +14,7 @@ msgid ""
msgstr ""
"Project-Id-Version: nb\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-24 09:57-0500\n"
+"POT-Creation-Date: 2009-04-30 10:39-0400\n"
"PO-Revision-Date: 2009-02-24 18:47+0100\n"
"Last-Translator: Hans Fredrik Nordhaug <hans@nordhaug.priv.no>\n"
"Language-Team: Norwegian Bokmål <i18n-nb@lister.ping.ui.no>\n"
@@ -378,8 +378,8 @@ msgstr "Ny lynmelding"
msgid "Please enter the username or alias of the person you would like to IM."
msgstr ""
-"Skriv inn brukernavnet eller aliaset på den personen du vil sende "
-"lynmelding til."
+"Skriv inn brukernavnet eller aliaset på den personen du vil sende lynmelding "
+"til."
msgid "Channel"
msgstr "Kanal"
@@ -613,19 +613,6 @@ msgstr ""
msgid "Send To"
msgstr "Send til"
-msgid "Invite message"
-msgstr "Invitasjonsbeskjed"
-
-msgid "Invite"
-msgstr "Inviter"
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Skriv inn navnet på brukeren som du vil invitere, \n"
-"og en eventuell invitasjonsbeskjed."
-
msgid "Conversation"
msgstr "Samtale"
@@ -850,8 +837,8 @@ msgid ""
"Instant messages will only be logged if the \"Log all instant messages\" "
"preference is enabled."
msgstr ""
-"Lynmeldinger vil bare bli logget om \"Logg alle lynmeldinger\" har "
-"blitt slått på."
+"Lynmeldinger vil bare bli logget om \"Logg alle lynmeldinger\" har blitt "
+"slått på."
msgid ""
"Chats will only be logged if the \"Log all chats\" preference is enabled."
@@ -882,6 +869,41 @@ msgstr "Alle samtaler"
msgid "System Log"
msgstr "Systemlogg"
+#, fuzzy
+msgid "Calling ... "
+msgstr "Beregner..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "Godta"
+
+msgid "Reject"
+msgstr "Avslå"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "Du har forlatt kanalen%s%s"
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "E-poster"
@@ -916,6 +938,9 @@ msgstr "Fortsett"
msgid "IM"
msgstr "Lynmelding"
+msgid "Invite"
+msgstr "Inviter"
+
msgid "(none)"
msgstr "(uten navn)"
@@ -1118,7 +1143,6 @@ msgstr "%s er borte. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s har sendt deg en beskjed. (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "Ukjent varslingshendelse. Vennligst rapporter dette!"
@@ -1528,6 +1552,28 @@ msgstr "GntLastlog"
msgid "Lastlog plugin."
msgstr "Lastlog tillegg."
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "Melodiens nettadresse"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "kontoer"
@@ -1629,13 +1675,6 @@ msgstr "Aksepter sertifikat for %s?"
msgid "SSL Certificate Verification"
msgstr "SSL Sertifikat Verifisering"
-#. Number of actions
-msgid "Accept"
-msgstr "Godta"
-
-msgid "Reject"
-msgstr "Avslå"
-
msgid "_View Certificate..."
msgstr "_Se på sertfikat..."
@@ -1783,6 +1822,18 @@ msgstr "%s forlot rommet."
msgid "%s left the room (%s)."
msgstr "%s forlot rommet (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Innviter til Konferanse"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Skriv inn navnet på brukeren som du vil invitere, og en eventuell "
+"invitasjonsbeskjed."
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "Feilet i å få tilkobling: %s"
@@ -2619,6 +2670,32 @@ msgstr "Lagre avloggede beskjeder som varsling"
msgid "Do not ask. Always save in pounce."
msgstr "Ikke spør. Alltid lagre som varsling."
+#, fuzzy
+msgid "One Time Password"
+msgstr "Oppgi passord"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -3021,6 +3098,7 @@ msgstr "Velg en samtale for kontakt: %s"
msgid "Add to chat..."
msgstr "Legg til samtale..."
+#. Global
msgid "Available"
msgstr "Tilgjengelig"
@@ -3367,6 +3445,17 @@ msgstr ""
"Ditt valgte kontonavn ble avvist av tjeneren. Sannsynligvis inneholder det "
"ugyldige tegn."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "Dette samtalenavnet er allerede i bruk"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Kallenavn"
+
msgid "Cannot change nick"
msgstr "Kan ikke endre kallenavn"
@@ -3636,6 +3725,41 @@ msgstr "Ugyldig utfordring fra tjener"
msgid "SASL error"
msgstr "SASL-feil"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "Ingen grunn spesifisert"
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Denne versjonen er ikke støttet"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"Klarte ikke etablere kontakt med serveren:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"Klarte ikke etablere kontakt med serveren:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "Klarte ikke lage ny tilkobling"
+
+msgid "Unable to create socket"
+msgstr "Klarte ikke opprette endepunkt"
+
+msgid "Write error"
+msgstr "Feil ved skriving"
+
msgid "Full Name"
msgstr "Fullt navn"
@@ -3702,6 +3826,10 @@ msgstr "Klient"
msgid "Operating System"
msgstr "Operativsystem"
+#, fuzzy
+msgid "Local Time"
+msgstr "Lokal fil:"
+
msgid "Last Activity"
msgstr "Siste aktivitet"
@@ -4038,9 +4166,6 @@ msgid "You require encryption, but it is not available on this server."
msgstr ""
"Du krever kryptering, men det er ikke støtte for det på denne serveren."
-msgid "Write error"
-msgstr "Feil ved skriving"
-
msgid "Ping timeout"
msgstr "Tidsavbrudd for ping"
@@ -4049,14 +4174,9 @@ msgstr "Lesefeil"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"Klarte ikke etablere kontakt med serveren:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "Klarte ikke opprette endepunkt"
msgid "Invalid XMPP ID"
msgstr "Ugyldig XMPP ID"
@@ -4064,6 +4184,10 @@ msgstr "Ugyldig XMPP ID"
msgid "Invalid XMPP ID. Domain must be set."
msgstr "Ugyldig XMPP ID. Domenet må være satt."
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Klarte ikke koble til tjener."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "Registrering av %s@%s vellykket"
@@ -4155,6 +4279,12 @@ msgstr "Tjener støtter ikke blokkering"
msgid "Not Authorized"
msgstr "Ikke godkjent"
+msgid "Mood"
+msgstr "Sinnsstemning"
+
+msgid "Now Listening"
+msgstr "Lytter nå"
+
msgid "Both"
msgstr "Begge"
@@ -4177,12 +4307,6 @@ msgstr "Ingen"
msgid "Subscription"
msgstr "Abonnement"
-msgid "Mood"
-msgstr "Sinnsstemning"
-
-msgid "Now Listening"
-msgstr "Lytter nå"
-
msgid "Mood Text"
msgstr "Sinnsstemningstekst"
@@ -4422,18 +4546,24 @@ msgstr "Klarte ikke sparke brukeren %s"
msgid "Unable to ping user %s"
msgstr "Klarte ikke pinge brukeren %s"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr "Klarte ikke alarmere, fordi det er ingenting kjent med bruker %s."
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr "Klarte ikke alarmere, fordi bruker %s kan være avlogget."
-#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+#, fuzzy, c-format
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "Klarer ikke alarmere fordi brukeren %s ikke støtter dette."
+#, c-format
+msgid "Buzzing %s..."
+msgstr "Alarmerer %s ..."
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
msgid "Buzz"
@@ -4443,9 +4573,34 @@ msgstr "Alarm"
msgid "%s has buzzed you!"
msgstr "%s har alarmert deg!"
-#, c-format
-msgid "Buzzing %s..."
-msgstr "Alarmerer %s ..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "Klarte ikke sende fil til %s, ugyldig JID"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "Klarte ikke sende fil til %s - brukeren er ikke pålogget"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr "Klarte ikke sende fila til %s. Abonnerer ikke på brukernærvær"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "Registrering feilet"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "Velg hvilken ressurs av %s du ønskjer å senda fila til"
+
+msgid "Select a Resource"
+msgstr "Velg en ressurs"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "Start gruppesamtale"
msgid "config: Configure a chat room."
msgstr "config: Endre innstillingene for et samtalerom."
@@ -4601,6 +4756,21 @@ msgstr "Klarte ikke bli med i gruppesamtale %s"
msgid "Error in chat %s"
msgstr "Feil i gruppesamtale %s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "En feil oppsto under åpningen av filen."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "Filoverføring feilet"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Klarte ikke å åpne fil '%s': %s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr "Klarte ikke sende fil til %s - brukeren støtter ikke filoverføringer"
@@ -4624,9 +4794,6 @@ msgstr "Klarte ikke sende fila til %s. Abonnerer ikke på brukernærvær"
msgid "Please select the resource of %s to which you would like to send a file"
msgstr "Velg hvilken ressurs av %s du ønskjer å senda fila til"
-msgid "Select a Resource"
-msgstr "Velg en ressurs"
-
msgid "Edit User Mood"
msgstr "Rediger brukertilstander"
@@ -6427,7 +6594,7 @@ msgstr ""
"bokstav og bare inneholde bokstaver, tall og mellomrom, eller bare inneholde "
"tall."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr "Ugyldig brukernavn."
@@ -6443,7 +6610,7 @@ msgstr "Kontoen din er frosset."
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "AOL Instant Messenger-tjenesten er midlertidig utilgjengelig."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6635,7 +6802,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] "Du har gått glipp av %hu beskjed fra %s, ingen grunn oppgitt."
msgstr[1] "Du har gått glipp av %hu beskjeder fra %s, ingen grunn oppgitt."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "Klarte ikke sende beskjed: %s"
@@ -6919,8 +7086,8 @@ msgstr "_Utveksling:"
msgid "Your IM Image was not sent. You cannot send IM Images in AIM chats."
msgstr ""
-"Ditt lynmeldingsbilde ble ikke sendt. Du kan ikke sende "
-"lynmeldingsbilder i AIM-samtalegrupper."
+"Ditt lynmeldingsbilde ble ikke sendt. Du kan ikke sende lynmeldingsbilder i "
+"AIM-samtalegrupper."
msgid "iTunes Music Store Link"
msgstr "iTunes Music Store Link"
@@ -7228,6 +7395,38 @@ msgstr "Oppdater"
msgid "Could not change buddy information."
msgstr "Klarte ikke endre kontaktinformasjon."
+msgid "Mobile"
+msgstr "Mobil"
+
+msgid "Note"
+msgstr "Merknad"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "Endre kontaktmemo"
+
+msgid "Change his/her memo as you like"
+msgstr ""
+
+#, fuzzy
+msgid "_Modify"
+msgstr "Endre"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "Endre"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "Tjeneren er opptatt"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
#, c-format
msgid "%u requires verification"
msgstr "%u krever godkjenning"
@@ -7539,6 +7738,9 @@ msgstr "<p><b>Takk til</b>:<br>\n"
msgid "<p><b>Scrupulous Testers</b>:<br>\n"
msgstr "<p><b>Nøyaktige testere</b>:<br>\n"
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr "<p><i>Og, alle guttene på bakrommet ...</i><br>\n"
@@ -7675,7 +7877,6 @@ msgstr ""
"Ukjent feilkode under innlogging (0x%02X):\n"
"%s"
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "Klarte ikke koble til."
@@ -8582,9 +8783,6 @@ msgstr "Organisasjon"
msgid "Unit"
msgstr "Enhet"
-msgid "Note"
-msgstr "Merknad"
-
msgid "Join Chat"
msgstr "Bli med i samtalegruppe"
@@ -9277,192 +9475,12 @@ msgid "Auth Domain"
msgstr "Autentiseringsdomene"
#, c-format
-msgid "Looking up %s"
-msgstr "Slår opp %s"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Tilkobling til %s feilet"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Pålogget: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "Klarte ikke skrive fil %s."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "Klarte ikke lese fil %s."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "Beskjeden er for lang, siste %s bytes kom ikke med."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s er ikke pålogget."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "Advarsel %s er ikke tillatt."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "En beskjed ble forkastet. Du overskrider tjenerens fartsgrense."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "Snakkerom i %s er ikke tilgjengelig."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "Du sender beskjeder for raskt til %s."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "Du gikk glipp av en beskjed fra %s fordi den var for stor."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "Du gikk glipp av en beskjed fra %s fordi den ble sendt for raskt."
-
-#, c-format
-msgid "Failure."
-msgstr "Feil."
-
-#, c-format
-msgid "Too many matches."
-msgstr "For mange treff."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "Trenger flere parametre."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "Katalogtjenesten er midlertidig utilgjengelig."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "E-postoppslag er begrenset."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "Nøkkelord ignorert."
-
-#, c-format
-msgid "No keywords."
-msgstr "Ingen nøkkelord."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "Brukeren har ingen kataloginformasjon."
-
-#, c-format
-msgid "Country not supported."
-msgstr "Land ikke støttet."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Ukjent feil: %s."
-
-#, c-format
-msgid "Incorrect username or password."
-msgstr "Feil brukernavn eller passord."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "Tjenesten er midlertidig utilgjengelig."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "Advarselsnivået ditt er satt for høyt for å logge inn."
-
-#, c-format
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
-msgstr ""
-"Du har koblet til og koblet fra for hurtig. Vent ti minutter og prøv igjen. "
-"Hvis du fortsetter å prøve nå, vil du måtte vente enda lenger."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "En ukjent påloggingsfeil har inntruffet: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "En ukjent feil, %d, har inntruffet. Info: %s"
-
-msgid "Invalid Groupname"
-msgstr "Ugyldig gruppenavn"
-
-msgid "Connection Closed"
-msgstr "Tilkoblingen lukket"
-
-msgid "Waiting for reply..."
-msgstr "Venter på svar..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "TOC har kommet tilbake fra pausen. Du kan nå sende beskjeder igjen."
-
-msgid "Password Change Successful"
-msgstr "Passordet er endret"
-
-msgid "_Group:"
-msgstr "_Gruppe:"
-
-msgid "Get Dir Info"
-msgstr "Hent kataloginfo"
-
-msgid "Set Dir Info"
-msgstr "Lagre kataloginfo"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "Klarte ikke åpne %s for skriving!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "Filoverføringen mislyktes - sannsynligvis avbrutt på den andre siden."
-
-msgid "Could not connect for transfer."
-msgstr "Klarte ikke koble til for dataoverføring."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "Klarte ikke skrive filhode. Filen vil ikke bli overført."
-
-msgid "Save As..."
-msgstr "Lagre som..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s forespør %s om å ta imot %d fil: %s (%.2f %s)%s%s"
-msgstr[1] "%s forespør %s om å ta imot %d filer: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s venter på at du skal sende dem en fil"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "TOC-protokolltillegg"
-
-#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr "%s har sendt deg en webcam invitasjon som enda ikke er støttet."
+msgid "Your SMS was not delivered"
+msgstr ""
+
msgid "Your Yahoo! message did not get sent."
msgstr "Din Yahoo!-beskjed ble ikke sendt."
@@ -10060,9 +10078,6 @@ msgstr "Ikke forstyrr"
msgid "Extended away"
msgstr "Utvidet borte"
-msgid "Mobile"
-msgstr "Mobil"
-
msgid "Listening to music"
msgstr "Lytter til musikk"
@@ -10104,18 +10119,6 @@ msgstr "%s har blitt aktiv"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "Feil ved lesing av %s"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"Det oppstod en feil under lesing av %s. Den har ikke blitt lastet, og den "
-"gamle filen ble flyttet til %s~."
-
msgid "Calculating..."
msgstr "Beregner..."
@@ -10190,6 +10193,14 @@ msgstr "Feil ved skriving til %s: %s"
msgid "Unable to connect to %s: %s"
msgstr "Kan ikke koble til %s: %s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+"Tjeneren krever TLS/SSL for å logge inn, men støtte for dette ble ikke "
+"funnet."
+
#, c-format
msgid " - %s"
msgstr " - %s"
@@ -10223,6 +10234,18 @@ msgstr "Tilkoblingen avvist."
msgid "Address already in use."
msgstr "Adressen er allerede i bruk"
+#, c-format
+msgid "Error Reading %s"
+msgstr "Feil ved lesing av %s"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"Det oppstod en feil under lesing av %s. Den har ikke blitt lastet, og den "
+"gamle filen ble flyttet til %s~."
+
msgid "Internet Messenger"
msgstr "Lynmeldingsklient"
@@ -10265,10 +10288,8 @@ msgstr "_Varsling om ny e-post"
msgid "Use this buddy _icon for this account:"
msgstr "Bruk dette kontakt _ikon for denne kontoen:"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s brukervalg"
+msgid "_Advanced"
+msgstr "_Avansert"
msgid "Use GNOME Proxy Settings"
msgstr "Bruk GNOMEs proxyinnstilinger"
@@ -10303,9 +10324,6 @@ msgstr "hvis du ser virkelig godt etter"
msgid "you can see the butterflies mating"
msgstr "sommerfugler svermer"
-msgid "Proxy Options"
-msgstr "Proxyinnstillinger"
-
msgid "Proxy _type:"
msgstr "Proxy_type:"
@@ -10333,8 +10351,9 @@ msgstr "_Generell"
msgid "Create _this new account on the server"
msgstr "Opprett denne _nye kontoen på tjeneren"
-msgid "_Advanced"
-msgstr "_Avansert"
+#, fuzzy
+msgid "_Proxy"
+msgstr "Proxy"
msgid "Enabled"
msgstr "Aktivert"
@@ -10409,6 +10428,17 @@ msgstr "Hent _informasjon"
msgid "I_M"
msgstr "Direkte_melding"
+#, fuzzy
+msgid "_Audio Call"
+msgstr "_Legg til samtale"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Videosamtale"
+
msgid "_Send File..."
msgstr "_Send fil..."
@@ -10543,6 +10573,10 @@ msgstr "/Verktøy/_Kontaktvarsling"
msgid "/Tools/_Certificates"
msgstr "/Verktøy/S_ertifikater"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Verktøy/S_milefjes"
+
msgid "/Tools/Plu_gins"
msgstr "/Verktøy/ _Tillegg"
@@ -10552,9 +10586,6 @@ msgstr "/Verktøy/_Innstillinger"
msgid "/Tools/Pr_ivacy"
msgstr "/Verktøy/_Sikkerhet"
-msgid "/Tools/Smile_y"
-msgstr "/Verktøy/S_milefjes"
-
msgid "/Tools/_File Transfers"
msgstr "/Verktøy/_Filoverføringer"
@@ -10672,8 +10703,8 @@ msgstr "Manuelt"
msgid "By status"
msgstr "Etter status"
-msgid "By log size"
-msgstr "Etter loggstørrelse"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10689,6 +10720,9 @@ msgstr "Koble til på nytt"
msgid "Re-enable"
msgstr "Reaktiver"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr "Velkommen tilbake!"
@@ -10773,6 +10807,9 @@ msgstr "Skriv inn et aliasnavn og annen informasjon for samtalegruppen.\n"
msgid "A_lias:"
msgstr "A_lias:"
+msgid "_Group:"
+msgstr "_Gruppe:"
+
msgid "Auto_join when account becomes online."
msgstr "Bli med automatisk når kontoen er pålogget."
@@ -10825,14 +10862,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr "Inviter kontakten inn i samtalerom"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Skriv inn navnet på brukeren som du vil invitere, og en eventuell "
-"invitasjonsbeskjed."
-
msgid "_Buddy:"
msgstr "_Kontakt:"
@@ -10907,6 +10936,22 @@ msgstr "/Samtale/_Lagre som..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Samtale/Tø_m tilbakeblikk"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Samtale/M_ere"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Samtale/M_ere"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Samtale/M_ere"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Samtale/_Vis logg"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Samtale/Se_nd fil..."
@@ -10980,6 +11025,19 @@ msgstr "/Samtale"
msgid "/Conversation/View Log"
msgstr "/Samtale/Vis logg"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Samtale/Mere"
+
+#
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Samtale/Vis logg"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Samtale/Mere"
+
msgid "/Conversation/Send File..."
msgstr "/Samtale/Send fil..."
@@ -11162,6 +11220,9 @@ msgstr "artist"
msgid "Ka-Hing Cheung"
msgstr "Ka-Hing Cheung"
+msgid "voice and video"
+msgstr ""
+
#
msgid "support"
msgstr "støtte"
@@ -11302,6 +11363,10 @@ msgstr "Georgisk"
msgid "Ubuntu Georgian Translators"
msgstr "Ubuntu georgisk-oversettere"
+#, fuzzy
+msgid "Khmer"
+msgstr "Andre"
+
msgid "Kannada"
msgstr "Kannada"
@@ -11767,15 +11832,6 @@ msgstr "Skrifttypen som skal brukes ved skrivevarsling"
msgid "Enable typing notification"
msgstr "Aktiver varsling om skriving"
-msgid "_Copy Email Address"
-msgstr "_Kopier e-postadresse"
-
-msgid "_Open Link in Browser"
-msgstr "_Åpne lenke i nettleser"
-
-msgid "_Copy Link Location"
-msgstr "_Kopier lenkemål"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12024,13 +12080,14 @@ msgstr "_Let gjennom loggmappe"
msgid "%s %s. Try `%s -h' for more information.\n"
msgstr "%s %s. Prøv '%s -h' for mer informasjon.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12055,13 +12112,14 @@ msgstr ""
" --display=DISPLAY X display for bruk\n"
" -v, --version Vis den nårværende versjon og avslutt\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12121,11 +12179,23 @@ msgstr "Pidgin"
msgid "Exiting because another libpurple client is already running.\n"
msgstr "Avslutter fordi en annen libpurple-klient allerede kjører.\n"
-msgid "Open All Messages"
-msgstr "Åpne alle beskjeder"
+msgid "/_Media"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Du har fått e-post!</span>"
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "Beregner..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -12156,6 +12226,27 @@ msgstr ""
"Klarte ikke å starte en nettleser fordi 'Manuell' nettleserkommando er "
"valgt, men ingen kommando for denne har blitt satt."
+msgid "Open All Messages"
+msgstr "Åpne alle beskjeder"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Du har fått e-post!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "Legg til kontaktvarsling"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Du har fått e-post!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "Ukjent beskjed"
+
msgid "The following plugins will be unloaded."
msgstr "Følgende tillegg kunne ikke losses."
@@ -12202,6 +12293,10 @@ msgstr "<b>Tillegget Detaljer</b>"
msgid "Select a file"
msgstr "Velg fil"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Rediger kontaktvarsling"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "Varsling for hvem"
@@ -12272,6 +12367,50 @@ msgstr "_Gjentar"
msgid "Pounce Target"
msgstr "Pounce mål"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "Starter å skrive"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "Brukeren skriver en melding"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "Logger på"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s har blitt aktiv igjen (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "Returnerer fra fravær"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "Stoppet å skrive"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "Logger av"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "Blir inaktiv"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "Når fraværende"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Send en beskjed"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "Ukjent varslingshendelse. Vennligst rapporter dette!"
+
msgid "Smiley theme failed to unpack."
msgstr "Smiley tema feilet å pakke ut."
@@ -12294,6 +12433,12 @@ msgstr "Tastatursnarveier"
msgid "Cl_ose conversations with the Escape key"
msgstr "_Lukk samtaler med Esc-tasten"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Kontaktliste"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "System-trayikon"
@@ -12404,9 +12549,6 @@ msgstr "Klarte ikke starte innstillingsprogrammet for mellomlageret."
msgid "Cannot start browser configuration program."
msgstr "Klarte ikke starte oppsettsprogram for nettleser."
-msgid "ST_UN server:"
-msgstr "ST_UN-tjener:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">Eksempel: stunserver.org</span>"
@@ -12431,6 +12573,10 @@ msgstr "_Startport:"
msgid "_End port:"
msgstr "_Sluttport:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr "Proxytjener &amp; nettleser"
@@ -12621,12 +12767,12 @@ msgstr "Når både fraværende og inaktiv"
msgid "Auto-away"
msgstr "Automatisk fraværsmarkering"
-msgid "Change status when _idle"
-msgstr "Endre status hvis _inaktiv"
-
msgid "_Minutes before becoming idle:"
msgstr "Antall _minutter før man regnes som inaktiv:"
+msgid "Change status when _idle"
+msgstr "Endre status hvis _inaktiv"
+
msgid "Change _status to:"
msgstr "Endre _status til:"
@@ -12667,8 +12813,9 @@ msgstr "Blokker alle brukere"
msgid "Block only the users below"
msgstr "Blokker kun brukerne vist nedenfor"
-msgid "Personvern"
-msgstr "Sikkerhet"
+#, fuzzy
+msgid "Privacy"
+msgstr "Privat"
msgid "Changes to privacy settings take effect immediately."
msgstr "Endringer i sikkerhetsinnstillingene skjer umiddelbart."
@@ -12774,6 +12921,12 @@ msgstr "Lagre & bruk"
msgid "Status for %s"
msgstr "Status for %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
msgid "Custom Smiley"
msgstr "Tilpassede smilefjes"
@@ -12783,16 +12936,16 @@ msgstr "Mer data trengs"
msgid "Please provide a shortcut to associate with the smiley."
msgstr "Oppgi en snarvei som skal forbindes med smilefjeset."
-msgid "Duplicate Shortcut"
-msgstr "Duplikat snarvei"
-
+#, fuzzy, c-format
msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
+"A custom smiley for '%s' already exists. Please use a different shortcut."
msgstr ""
"Et tilpasset smilefjes finnes allerede for den valgte snarveien. Oppgi en "
"annen snarvei."
+msgid "Duplicate Shortcut"
+msgstr "Duplikat snarvei"
+
msgid "Please select an image for the smiley."
msgstr "Velg et bilde for smilefjeset."
@@ -12802,16 +12955,22 @@ msgstr "Endre smilefjes"
msgid "Add Smiley"
msgstr "Legg til smilefjes"
-msgid "Smiley _Image"
-msgstr "Smilefjesbilde"
+#, fuzzy
+msgid "_Image:"
+msgstr "_Bilde"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr "Snar_vei for smilefjes"
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "Snarvei"
msgid "Smiley"
msgstr "Smilefjes"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "Snarvei"
+
msgid "Custom Smiley Manager"
msgstr "Tilpassede smilefjes"
@@ -12934,6 +13093,16 @@ msgid ""
msgstr ""
"Feilet å laste bilde '%s': grunn ukjent, sannsynligvis en korrupt bilde fil"
+#, fuzzy
+msgid "_Open Link"
+msgstr "_Åpne lenke i:"
+
+msgid "_Copy Link Location"
+msgstr "_Kopier lenkemål"
+
+msgid "_Copy Email Address"
+msgstr "_Kopier e-postadresse"
+
msgid "Save File"
msgstr "Lagre fil"
@@ -13134,8 +13303,7 @@ msgstr "Antall samtaler per vindu"
msgid "Separate IM and Chat windows when placing by number"
msgstr ""
-"Separere lynmeldings- og chattevinduer når programet plasserer etter "
-"nummer"
+"Separere lynmeldings- og chattevinduer når programet plasserer etter nummer"
#. *< type
#. *< ui_requirement
@@ -13958,6 +14126,181 @@ msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr ""
"Dette tillegget er kjekt å ha for debugging av XMPP servere og klienter."
+#~ msgid "Invite message"
+#~ msgstr "Invitasjonsbeskjed"
+
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Skriv inn navnet på brukeren som du vil invitere, \n"
+#~ "og en eventuell invitasjonsbeskjed."
+
+#~ msgid "Looking up %s"
+#~ msgstr "Slår opp %s"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "Tilkobling til %s feilet"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Pålogget: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "Klarte ikke skrive fil %s."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "Klarte ikke lese fil %s."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "Beskjeden er for lang, siste %s bytes kom ikke med."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s er ikke pålogget."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "Advarsel %s er ikke tillatt."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr "En beskjed ble forkastet. Du overskrider tjenerens fartsgrense."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "Snakkerom i %s er ikke tilgjengelig."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "Du sender beskjeder for raskt til %s."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "Du gikk glipp av en beskjed fra %s fordi den var for stor."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr "Du gikk glipp av en beskjed fra %s fordi den ble sendt for raskt."
+
+#~ msgid "Failure."
+#~ msgstr "Feil."
+
+#~ msgid "Too many matches."
+#~ msgstr "For mange treff."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "Trenger flere parametre."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "Katalogtjenesten er midlertidig utilgjengelig."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "E-postoppslag er begrenset."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "Nøkkelord ignorert."
+
+#~ msgid "No keywords."
+#~ msgstr "Ingen nøkkelord."
+
+#~ msgid "User has no directory information."
+#~ msgstr "Brukeren har ingen kataloginformasjon."
+
+#~ msgid "Country not supported."
+#~ msgstr "Land ikke støttet."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Ukjent feil: %s."
+
+#~ msgid "Incorrect username or password."
+#~ msgstr "Feil brukernavn eller passord."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "Tjenesten er midlertidig utilgjengelig."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "Advarselsnivået ditt er satt for høyt for å logge inn."
+
+#~ msgid ""
+#~ "You have been connecting and disconnecting too frequently. Wait ten "
+#~ "minutes and try again. If you continue to try, you will need to wait "
+#~ "even longer."
+#~ msgstr ""
+#~ "Du har koblet til og koblet fra for hurtig. Vent ti minutter og prøv "
+#~ "igjen. Hvis du fortsetter å prøve nå, vil du måtte vente enda lenger."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "En ukjent påloggingsfeil har inntruffet: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "En ukjent feil, %d, har inntruffet. Info: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "Ugyldig gruppenavn"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Tilkoblingen lukket"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "Venter på svar..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "TOC har kommet tilbake fra pausen. Du kan nå sende beskjeder igjen."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "Passordet er endret"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Hent kataloginfo"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Lagre kataloginfo"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "Klarte ikke åpne %s for skriving!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr ""
+#~ "Filoverføringen mislyktes - sannsynligvis avbrutt på den andre siden."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "Klarte ikke koble til for dataoverføring."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "Klarte ikke skrive filhode. Filen vil ikke bli overført."
+
+#~ msgid "Save As..."
+#~ msgstr "Lagre som..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s forespør %s om å ta imot %d fil: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s forespør %s om å ta imot %d filer: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s venter på at du skal sende dem en fil"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "TOC-protokolltillegg"
+
+#~ msgid "%s Options"
+#~ msgstr "%s brukervalg"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Proxyinnstillinger"
+
+#~ msgid "By log size"
+#~ msgstr "Etter loggstørrelse"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_Åpne lenke i nettleser"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "ST_UN-tjener:"
+
+#~ msgid "Personvern"
+#~ msgstr "Sikkerhet"
+
+#~ msgid "Smiley _Image"
+#~ msgstr "Smilefjesbilde"
+
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "Snar_vei for smilefjes"
+
#~ msgid "Unable to retrieve MSN Address Book"
#~ msgstr "Klarte ikke hente MSN-adressebok"
diff --git a/po/ne.po b/po/ne.po
index 3c673906f3..49a48dec6a 100644
--- a/po/ne.po
+++ b/po/ne.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin.ne\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
+"POT-Creation-Date: 2009-04-30 10:39-0400\n"
"PO-Revision-Date: 2006-06-27 21:08+0545\n"
"Last-Translator: Shyam Krishna Bal <shyamkrishna_bal@yahoo.com>\n"
"Language-Team: Nepali <info@mpp.org.np>\n"
@@ -35,7 +35,7 @@ msgid ""
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -630,21 +630,6 @@ msgid "Send To"
msgstr "पठाउनुहोस्"
#, fuzzy
-msgid "Invite message"
-msgstr "सन्देश अन्त्य गर्नुहोस्"
-
-msgid "Invite"
-msgstr "आमन्त्रण गर्नुहोस्"
-
-#, fuzzy
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"कृपया तपाईँले निमन्त्रणा गर्न चाहेको प्रयोगकर्ताको नाम प्रविष्टि गर्नुहोस्,एच्छिक निमन्त्रणा "
-"सन्देश बराबर हुन्छ ।"
-
-#, fuzzy
msgid "Conversation"
msgstr "वार्तालापहरू"
@@ -904,6 +889,42 @@ msgid "System Log"
msgstr "प्रणाली लग"
#, fuzzy
+msgid "Calling ... "
+msgstr "गणना गर्दैछ..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "स्वीकार गर्नुहोस्"
+
+#, fuzzy
+msgid "Reject"
+msgstr "रिसेट गर्नुहोस्"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "तपाईँले च्यानल %s%s विभाजन गर्नुभयो"
+
+msgid "call: Make an audio call."
+msgstr ""
+
+#, fuzzy
msgid "Emails"
msgstr "इमेल"
@@ -941,6 +962,9 @@ msgstr "जडान"
msgid "IM"
msgstr "IM"
+msgid "Invite"
+msgstr "आमन्त्रण गर्नुहोस्"
+
#, fuzzy
msgid "(none)"
msgstr "(नाम छैन)"
@@ -1164,7 +1188,6 @@ msgstr "%s टाढा गइसकेको छ । (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s ले तपाईँलाई %s पठाउन चाहन्छ (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "अज्ञात घटना पाउन्स गर्नुहोस् । कृपया यो प्रतिवेदन गर्नुहोस्!"
@@ -1220,7 +1243,6 @@ msgstr " 'टाढा सेट' गर्नु अघि मिनेटह
msgid "Change status to"
msgstr "ठेगाना परिवर्तन गर्नुहोस्:"
-#. Conversations
msgid "Conversations"
msgstr "वार्तालापहरू"
@@ -1566,7 +1588,6 @@ msgid ""
"conversation into the current conversation."
msgstr "जब नयाँ वार्तालाप खोल्छ यो प्लगइनले हालको वार्तालापमा अन्तिम वार्तालाप घुसाउछ ।"
-#, c-format
msgid "Online"
msgstr "अनलाइन"
@@ -1615,6 +1636,28 @@ msgstr ""
msgid "Lastlog plugin."
msgstr ""
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
#, fuzzy
msgid "accounts"
msgstr "खाताहरू"
@@ -1718,14 +1761,6 @@ msgstr "कुराकानी निमन्त्रणा स्विक
msgid "SSL Certificate Verification"
msgstr ""
-#. Number of actions
-msgid "Accept"
-msgstr "स्वीकार गर्नुहोस्"
-
-#, fuzzy
-msgid "Reject"
-msgstr "रिसेट गर्नुहोस्"
-
msgid "_View Certificate..."
msgstr ""
@@ -1863,6 +1898,18 @@ msgstr "%s कोठा बाट बाहिरियो ।"
msgid "%s left the room (%s)."
msgstr "%s कोठा (%s) बाट बाहिरियो ।"
+#, fuzzy
+msgid "Invite to chat"
+msgstr "सम्मेलन थालनी गर्नुहोस्"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"कृपया तपाईँले निमन्त्रणा गर्न चाहेको प्रयोगकर्ताको नाम प्रविष्टि गर्नुहोस्,एच्छिक निमन्त्रणा "
+"सन्देश बराबर हुन्छ ।"
+
#, fuzzy, c-format
msgid "Failed to get connection: %s"
msgstr "%s का लागि सिमोडहरू सेट गर्न असफल"
@@ -2001,7 +2048,6 @@ msgstr "%s को फाइल स्थानान्तरण अनुरो
msgid "Transfer of file %s complete"
msgstr "%s फाइलको स्थानान्तरण पूरा भयो"
-#, c-format
msgid "File transfer complete"
msgstr "फाइल स्थानान्तरण पूरा भयो ।"
@@ -2009,7 +2055,6 @@ msgstr "फाइल स्थानान्तरण पूरा भयो
msgid "You canceled the transfer of %s"
msgstr "तपाईँले %s को स्थानान्तण रद्द गर्नुभयो"
-#, c-format
msgid "File transfer cancelled"
msgstr "फाइल स्थानान्तरण रद्द भयो"
@@ -2198,7 +2243,6 @@ msgstr "(%s) %s <AUTO-REPLY>: %s\n"
msgid "You are using %s, but this plugin requires %s."
msgstr ""
-#, c-format
msgid "This plugin has not defined an ID."
msgstr ""
@@ -2693,6 +2737,32 @@ msgstr ""
msgid "Do not ask. Always save in pounce."
msgstr ""
+#, fuzzy
+msgid "One Time Password"
+msgstr "पासवर्ड परिवर्तन गर्नुहोस्"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2897,7 +2967,6 @@ msgid ""
"Unable to establish connection with the local mDNS server. Is it running?"
msgstr ""
-#. Creating the options for the protocol
#, fuzzy
msgid "First name"
msgstr "पहिलो नाम:"
@@ -2935,6 +3004,11 @@ msgstr "याहू प्रोटोकल प्लगइन"
msgid "Purple Person"
msgstr "नयाँ व्यक्ति"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "स्थानीयता"
+
msgid "Bonjour"
msgstr ""
@@ -3121,13 +3195,13 @@ msgstr "तपाईँको साथी सूचीबाट कुराक
msgid "Add to chat..."
msgstr "कुराकानी थप्नुहोस्"
+#. Global
msgid "Available"
msgstr "उपलब्ध छ"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "टाढा"
@@ -3495,6 +3569,17 @@ msgstr ""
"तपाईँले सर्भरद्वारा अस्विकार गरिएको खाता मान चयन गर्नु भएको छ । यसमा सम्भवत अवैध "
"क्यारेक्टरहरू समावेश छन् ।"
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "त्यो फाइल पहिलेनै अवस्थित छ"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "उपनाम"
+
msgid "Cannot change nick"
msgstr "उपनाम परिवर्तन गर्न सकिदैन"
@@ -3774,6 +3859,37 @@ msgstr "सर्भर बाट अवैध चुनौती"
msgid "SASL error"
msgstr "त्रुटि पढ्नुहोस्"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "कारण दिइएको छैन ।"
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "असमर्थित संस्करण"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr "सर्भरमा SSL जडान बनाउन अक्षम छ ।"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "नयाँ जडान सिर्जना गर्न अक्षम ।"
+
+msgid "Unable to create socket"
+msgstr "सकेट सिर्जना गर्न अक्षम भयो"
+
+msgid "Write error"
+msgstr "त्रुटि लेख्नुहोस्"
+
msgid "Full Name"
msgstr "पूरा नाम"
@@ -3843,6 +3959,10 @@ msgstr "शहर"
msgid "Operating System"
msgstr "सञ्चालन प्रणाली लुकाउनुहोस्"
+#, fuzzy
+msgid "Local Time"
+msgstr "स्थानीय फाइल:"
+
msgid "Last Activity"
msgstr ""
@@ -4080,7 +4200,6 @@ msgstr "कुरौटे"
msgid "Extended Away"
msgstr "टाढा फैल्याउनुहोस्"
-#, c-format
msgid "Do Not Disturb"
msgstr "कृपया अवरोध नगर्नुहोस्"
@@ -4210,9 +4329,6 @@ msgstr "कोठाहरू फेला पार्नुहोस्"
msgid "You require encryption, but it is not available on this server."
msgstr ""
-msgid "Write error"
-msgstr "त्रुटि लेख्नुहोस्"
-
#, fuzzy
msgid "Ping timeout"
msgstr "सादा पाठ"
@@ -4222,13 +4338,10 @@ msgstr "त्रुटि पढ्नुहोस्"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-msgid "Unable to create socket"
-msgstr "सकेट सिर्जना गर्न अक्षम भयो"
-
#, fuzzy
msgid "Invalid XMPP ID"
msgstr "अवैध ID"
@@ -4236,6 +4349,10 @@ msgstr "अवैध ID"
msgid "Invalid XMPP ID. Domain must be set."
msgstr ""
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "सर्भरमा जडान गर्न असफल भयो ।"
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "%s@%s को दर्ता सफल भयो"
@@ -4329,9 +4446,18 @@ msgstr "प्रमाणित गर्दा"
msgid "Re-initializing Stream"
msgstr "स्ट्रीम पुन: सुरू गर्दा"
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr "अधिकार प्राप्त छैन"
+msgid "Mood"
+msgstr "मुड"
+
+msgid "Now Listening"
+msgstr ""
+
msgid "Both"
msgstr "दुवै"
@@ -4353,12 +4479,6 @@ msgstr "कुनै पनि होइन"
msgid "Subscription"
msgstr "सदस्यता"
-msgid "Mood"
-msgstr "मुड"
-
-msgid "Now Listening"
-msgstr ""
-
#, fuzzy
msgid "Mood Text"
msgstr "पाठ"
@@ -4604,18 +4724,24 @@ msgstr "%s प्रयोगकर्ता हुत्याउन असफ
msgid "Unable to ping user %s"
msgstr "%s प्रयोगकर्तालाई रोक्न अक्षम भयो"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
+msgstr "ध्वनि प्ले गर्न अक्षम भयो किनभने रोजेको फाइल (%s)अवस्थित छैन ।"
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
+msgstr "ध्वनि प्ले गर्न अक्षम भयो किनभने रोजेको फाइल (%s)अवस्थित छैन ।"
#, fuzzy, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "ध्वनि प्ले गर्न अक्षम भयो किनभने रोजेको फाइल (%s)अवस्थित छैन ।"
+#, c-format
+msgid "Buzzing %s..."
+msgstr ""
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
#, fuzzy
@@ -4626,9 +4752,35 @@ msgstr "बज्!!"
msgid "%s has buzzed you!"
msgstr "प्रयोगकर्ताले तपाईँलाई रोकेको छ"
-#, c-format
-msgid "Buzzing %s..."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "%s मा सन्देश पठाउन अक्षम:"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "%s मा फाइल पठाउन अक्षम भयो,प्रयोगकर्ताले फाइल स्थानान्तरणहरू समर्थन गर्दैन"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr "%s मा फाइल पठाउन अक्षम भयो,प्रयोगकर्ताले फाइल स्थानान्तरणहरू समर्थन गर्दैन"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "दर्ता असफल भयो"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "कृपया तपाईँले जानकारी प्राप्त गर्न चाहेको व्यक्तिको पर्दा नाम प्रविष्टि गर्नुहोस् ।"
+
+#, fuzzy
+msgid "Select a Resource"
+msgstr "एउटा फाइल चयन गर्नुहोस् "
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "कुराकानी सुरू गर्नुहोस्"
msgid "config: Configure a chat room."
msgstr "कन्फिग:कुराकानी कोठा कन्फिगर गर्नुहोस् ।"
@@ -4797,6 +4949,21 @@ msgstr "%s कुराकानी जडान गर्दा त्रुट
msgid "Error in chat %s"
msgstr "%s कुराकानीमा त्रुटि"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "फाइल खोलिरहेको बेलामा त्रुटि उत्पन्न भयो ।"
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "फाइल स्थानान्तरण रद्द भयो"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "छवि भण्डारण गर्न असफल भयो: %s\n"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr "%s मा फाइल पठाउन अक्षम भयो,प्रयोगकर्ताले फाइल स्थानान्तरणहरू समर्थन गर्दैन"
@@ -4821,10 +4988,6 @@ msgid "Please select the resource of %s to which you would like to send a file"
msgstr "कृपया तपाईँले जानकारी प्राप्त गर्न चाहेको व्यक्तिको पर्दा नाम प्रविष्टि गर्नुहोस् ।"
#, fuzzy
-msgid "Select a Resource"
-msgstr "एउटा फाइल चयन गर्नुहोस् "
-
-#, fuzzy
msgid "Edit User Mood"
msgstr "प्रयोगकर्ता मोडहरू"
@@ -4863,9 +5026,20 @@ msgstr "खाताहरू"
msgid "Select an action"
msgstr "एउटा फाइल चयन गर्नुहोस् "
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr "\"%s\" लाई थप गर्न अक्षम छ ।"
+
#, fuzzy
-msgid "Unable to retrieve MSN Address Book"
-msgstr "साथी सूची पुन:प्राप्त गर्न अक्षम भयो"
+msgid "Buddy Add error"
+msgstr "साथी सूची त्रुटि"
+
+#, fuzzy
+msgid "The username specified does not exist."
+msgstr "निर्दिष्ट गरिएको पर्दा नाम अवैध हो।"
#, c-format
msgid "Buddy list synchronization issue in %s (%s)"
@@ -5093,7 +5267,7 @@ msgstr "पैत्रिक सहमति बिनाका किड्क
msgid "Passport account not yet verified"
msgstr "पासवर्ड खाता अहिले सम्म प्रमाणीत भएको छैन"
-#, fuzzy, c-format
+#, fuzzy
msgid "Passport account suspended"
msgstr "पासवर्ड खाता अहिले सम्म प्रमाणीत भएको छैन"
@@ -5187,6 +5361,13 @@ msgstr "मोवाइल सन्देश पठाउनुहोस् ।
msgid "Page"
msgstr "पृष्ठ"
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "चेतावनी दिनुहोस्"
+
msgid "Has you"
msgstr "तपाईँ सँग छ"
@@ -5230,6 +5411,14 @@ msgid "Album"
msgstr ""
#, fuzzy
+msgid "Game Title"
+msgstr "शीर्षक"
+
+#, fuzzy
+msgid "Office Title"
+msgstr "शीर्षक"
+
+#, fuzzy
msgid "Set Friendly Name..."
msgstr "सहज नाम सेट गर्नुहोस्"
@@ -5449,8 +5638,9 @@ msgstr ""
"गाइमले प्रयोगकर्ताको प्रोफाइलमा कुनैपनि जानकारी फेला पार्न सकेन । प्रयोगकर्ता जरुर "
"अवस्थित नहुनै पर्छ ।"
-msgid "Profile URL"
-msgstr "प्रोफाइल URL"
+#, fuzzy
+msgid "View web profile"
+msgstr "जब अफ लाइन मा हुन्छ अनुमति दिइदैन"
#. *< type
#. *< ui_requirement
@@ -5706,13 +5896,6 @@ msgstr "ठेगाना पुस्तकमा थप्नुहोस्"
msgid "Do you want to delete this buddy from your address book as well?"
msgstr "के तपाईँं आफ्नो साथी सूचीमा यो साथी थप्न चाहानुहुन्छ?"
-#. only notify the user about problems adding to the friends list
-#. * maybe we should do something else for other lists, but it probably
-#. * won't cause too many problems if we just ignore it
-#, c-format
-msgid "Unable to add \"%s\"."
-msgstr "\"%s\" लाई थप गर्न अक्षम छ ।"
-
#, fuzzy
msgid "The username specified is invalid."
msgstr "निर्दिष्ट गरिएको पर्दा नाम अवैध हो।"
@@ -5720,6 +5903,9 @@ msgstr "निर्दिष्ट गरिएको पर्दा नाम
msgid "This Hotmail account may not be active."
msgstr ""
+msgid "Profile URL"
+msgstr "प्रोफाइल URL"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5734,16 +5920,13 @@ msgstr ""
msgid "MSN Protocol Plugin"
msgstr "AIM/ICQ प्रोटोकल प्लगइन"
-msgid "Missing Cipher"
-msgstr ""
-
-msgid "The RC4 cipher could not be found"
+#, c-format
+msgid "No such user: %s"
msgstr ""
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
-msgstr ""
+#, fuzzy
+msgid "User lookup"
+msgstr "प्रयोगकर्ता कोठाहरू"
#, fuzzy
msgid "Reading challenge"
@@ -5756,11 +5939,19 @@ msgstr "सर्भर बाट अवैध चुनौती"
msgid "Logging in"
msgstr "लगइन प्रक्रिया"
-#, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] ""
-msgstr[1] ""
+#, fuzzy
+msgid "MySpaceIM - No Username Set"
+msgstr "कुनै पर्दानाम दिइएको छैन ।"
+
+msgid "You appear to have no MySpace username."
+msgstr ""
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr ""
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr "सर्भर सँग संचार आदान प्रदानमा त्रुटि"
#. Can't write _()'d strings in array initializers. Workaround.
#, fuzzy
@@ -5783,14 +5974,22 @@ msgid "MySpace"
msgstr ""
#, fuzzy
-msgid "MySpaceIM - No Username Set"
-msgstr "कुनै पर्दानाम दिइएको छैन ।"
+msgid "IM Friends"
+msgstr "IM सञ्झ्यालहरू"
-msgid "You appear to have no MySpace username."
-msgstr ""
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+msgstr[1] ""
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
-msgstr ""
+#, fuzzy
+msgid "Add contacts from server"
+msgstr "सर्भरबाट अवैध जवाफ ।"
#. The session is now set up, ready to be connected. This emits the
#. * signedOn signal, so clients can now do anything with msimprpl, and
@@ -5815,6 +6014,22 @@ msgid "MySpaceIM Error"
msgstr ""
#, fuzzy
+msgid "Invalid input condition"
+msgstr "जडानलाई अन्तिम रुप दिँदै"
+
+#, fuzzy
+msgid "Read buffer full (2)"
+msgstr "भरिएको लाम"
+
+#, fuzzy
+msgid "Unparseable message"
+msgstr "यो सन्देश पद वर्णन गर्न अक्षम छ"
+
+#, fuzzy, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr "होस्टमा जडान गर्न सकिएन"
+
+#, fuzzy
msgid "Failed to add buddy"
msgstr "कुराकानीमा साथी जडान गर्न असफल"
@@ -5825,14 +6040,6 @@ msgstr ""
msgid "persist command failed"
msgstr "स्विच बोर्ड असफल भयो"
-#, c-format
-msgid "No such user: %s"
-msgstr ""
-
-#, fuzzy
-msgid "User lookup"
-msgstr "प्रयोगकर्ता कोठाहरू"
-
#, fuzzy
msgid "Failed to remove buddy"
msgstr "कुराकानीमा साथी जडान गर्न असफल"
@@ -5844,39 +6051,16 @@ msgstr ""
msgid "blocklist command failed"
msgstr "स्विच बोर्ड असफल भयो"
-#, fuzzy
-msgid "Invalid input condition"
-msgstr "जडानलाई अन्तिम रुप दिँदै"
-
-#, fuzzy
-msgid "Read buffer full (2)"
-msgstr "भरिएको लाम"
-
-#, fuzzy
-msgid "Unparseable message"
-msgstr "यो सन्देश पद वर्णन गर्न अक्षम छ"
-
-#, fuzzy, c-format
-msgid "Couldn't connect to host: %s (%d)"
-msgstr "होस्टमा जडान गर्न सकिएन"
+msgid "Missing Cipher"
+msgstr ""
-#, fuzzy
-msgid "IM Friends"
-msgstr "IM सञ्झ्यालहरू"
+msgid "The RC4 cipher could not be found"
+msgstr ""
-#, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-msgstr[1] ""
-
-#, fuzzy
-msgid "Add contacts from server"
-msgstr "सर्भरबाट अवैध जवाफ ।"
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
msgid "Add friends from MySpace.com"
msgstr ""
@@ -5924,9 +6108,6 @@ msgstr "फन्ट साइज ठूलो पार्नुहोस्"
msgid "User"
msgstr "प्रयोगकर्ताहरू"
-msgid "Profile"
-msgstr "प्रोफाइल"
-
#, fuzzy
msgid "Headline"
msgstr "घटाउनुहोस्"
@@ -5942,17 +6123,6 @@ msgstr ""
msgid "Client Version"
msgstr "वार्तालाप बन्द गर्नुहोस्"
-#. Protocol won't log in now without a username set.. Disconnect
-#, fuzzy
-msgid "No username set"
-msgstr "कुनै पर्दानाम दिइएको छैन ।"
-
-msgid "MySpaceIM - Please Set a Username"
-msgstr ""
-
-msgid "Please enter a username to check its availability:"
-msgstr ""
-
#, fuzzy
msgid "MySpaceIM - Username Available"
msgstr "सेवा उपलब्ध छैन"
@@ -5963,6 +6133,9 @@ msgstr ""
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr ""
+msgid "MySpaceIM - Please Set a Username"
+msgstr ""
+
#, fuzzy
msgid "This username is unavailable."
msgstr "यो विषयवस्तुसँग कुनै उपलब्ध स्माइली छैनन् ।"
@@ -5971,6 +6144,14 @@ msgstr "यो विषयवस्तुसँग कुनै उपलब
msgid "Please try another username:"
msgstr "चयन गरिएको समूहका लागि एउटा नयाँ नाम प्रविष्टि गर्नुहोस् ।"
+#. Protocol won't log in now without a username set.. Disconnect
+#, fuzzy
+msgid "No username set"
+msgstr "कुनै पर्दानाम दिइएको छैन ।"
+
+msgid "Please enter a username to check its availability:"
+msgstr ""
+
#. TODO: icons for each zap
#. Lots of comments for translators:
#. Zap means "to strike suddenly and forcefully as if with a
@@ -6361,7 +6542,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr "त्रुटि. SSL समर्थन स्थापित छैन ।"
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr "यो सम्मेलन बन्द भयो । कुनै सन्देशहरू पठाउन सकिदैन ।"
@@ -6628,23 +6808,18 @@ msgstr "क्यामेरा"
msgid "Screen Sharing"
msgstr "पर्दा नाम"
-#, c-format
msgid "Free For Chat"
msgstr "कुराकानी गर्न स्वतन्त्र"
-#, c-format
msgid "Not Available"
msgstr "उपलब्ध छैन"
-#, c-format
msgid "Occupied"
msgstr "आविष्ट"
-#, c-format
msgid "Web Aware"
msgstr "वेब सावधान"
-#, c-format
msgid "Invisible"
msgstr "अदृश्य"
@@ -6690,7 +6865,7 @@ msgstr ""
"एउटा अक्षरबाट सुरू हुनुपर्दछ र अक्षरहरू, संख्याहरू र खाली स्थानहरू समाहित गर्न सक्दछ, वा "
"केवल संख्याहरू मात्र समाहित गर्न सक्दछ ।"
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
#, fuzzy
msgid "Invalid username."
@@ -6707,7 +6882,7 @@ msgstr "तपाईँको खाता हाल बन्द गरिए
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "AOL तयारी मेसेन्जर सेवा अस्थायी रुपमा उपलब्ध छैन ।"
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6744,10 +6919,8 @@ msgstr "डिजिटल प्रदर्शन बाट ६ अङ्क
msgid "_OK"
msgstr "ठीक छ"
-#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
+#, fuzzy, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
msgstr ""
"तपाईँले क्रमबद्धरूपले जडान विच्छेद गर्न सक्नुहुन्छ । तपाईँं यो स्थिर TOC इकाइ प्रयोग गर्न "
"चाहानुहुन्छ । अद्यावधिकका लागि %s जाँच गर्नुहोस् ।"
@@ -6900,7 +7073,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] "तपाईँले एउटा अज्ञात कारणका लागि %hu सन्देश %s बाट हराउनु भयो ।"
msgstr[1] "तपाईँले एउटा अज्ञात कारणका लागि %hu सन्देश %s बाट हराउनु भयो ।"
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "सन्देश पठाउन अक्षम: %s"
@@ -6922,6 +7095,9 @@ msgstr "अनलाइन अवधि"
msgid "Member Since"
msgstr "सदस्य अवधि"
+msgid "Profile"
+msgstr "प्रोफाइल"
+
msgid "Your AIM connection may be lost."
msgstr "तपाईँंको AIM जडान हराएको हुनुपर्छ ।"
@@ -7208,6 +7384,7 @@ msgstr "जडान गर्नुहोस्"
msgid "Get AIM Info"
msgstr "जानकारी प्राप्त गर्नुहोस्"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "साथी टिप्पणी सम्पादन गर्नुहोस्"
@@ -7324,7 +7501,7 @@ msgstr "प्रत्यक्ष IM का लागि %s सँग %s:%hu
msgid "Attempting to connect to %s:%hu."
msgstr "प्रत्यक्ष IM का लागि %s सँग %s:%hu मा जडान गर्न प्रयास गर्दैछ।"
-#, fuzzy, c-format
+#, fuzzy
msgid "Attempting to connect via proxy server."
msgstr "जडान पुनर्निर्देशित गर्न प्रयत्न गरिदैछ..."
@@ -7433,7 +7610,7 @@ msgstr "ओपेरा"
msgid "Visible"
msgstr "अदृश्य"
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
#, fuzzy
@@ -7529,17 +7706,51 @@ msgstr "अन्तिम अद्यावधिक"
msgid "Could not change buddy information."
msgstr "पाउन्स गर्न साथी प्रविष्टि गर्नुहोस्"
-#, c-format
-msgid "%d needs Q&A"
+#, fuzzy
+msgid "Mobile"
+msgstr "मोबाइल फोन"
+
+msgid "Note"
+msgstr "द्रष्टव्य"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "साथी प्रतिमा"
+
+msgid "Change his/her memo as you like"
msgstr ""
#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "साथी थप्नुहोस्"
+msgid "_Modify"
+msgstr "परिमार्जन गर्नुहोस्"
-msgid "Input answer here"
+#, fuzzy
+msgid "Memo Modify"
+msgstr "परिमार्जन गर्नुहोस्"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "सर्भर ब्यस्त छ"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
msgstr ""
+#, fuzzy, c-format
+msgid "%u requires verification"
+msgstr "प्रमाणीकरण अनुरोध गर्नुहोस्"
+
+#, fuzzy
+msgid "Add buddy question"
+msgstr "तपाईँको सूचीमा साथी थप्नुहुन्छ?"
+
+#, fuzzy
+msgid "Enter answer here"
+msgstr "डाइरेक्टरी पठाउन सकिदैन ।"
+
msgid "Send"
msgstr "पठाउनुहोस्"
@@ -7551,19 +7762,20 @@ msgstr "अवैध पासवर्ड"
msgid "Authorization denied message:"
msgstr "प्रमाणीकरण अस्विकृत सन्देश:"
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr ""
#, fuzzy, c-format
-msgid "%d needs authentication"
+msgid "%u needs authorization"
msgstr "प्रमाणीकरण सुरू हुँदैछ"
#, fuzzy
msgid "Add buddy authorize"
msgstr "तपाईँको सूचीमा साथी थप्नुहुन्छ?"
-msgid "Input request here"
-msgstr ""
+#, fuzzy
+msgid "Enter request here"
+msgstr "एउटा सम्मेलन सर्भर प्रविष्ट गर्नुहोस्"
#, fuzzy
msgid "Would you be my friend?"
@@ -7586,7 +7798,7 @@ msgid "Failed sending authorize"
msgstr "कृपया मलाई अधिकार दिनुहोस्!"
#, fuzzy, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr "कुराकानीमा साथी जडान गर्न असफल"
#, fuzzy, c-format
@@ -7632,6 +7844,10 @@ msgid "You can only search for permanent Qun\n"
msgstr ""
#, fuzzy
+msgid "(Invalid UTF-8 string)"
+msgstr "अवैध प्रोक्सी सेटिङ्हरू"
+
+#, fuzzy
msgid "Not member"
msgstr "सदस्य अवधि"
@@ -7674,15 +7890,18 @@ msgstr ""
msgid "Join QQ Qun"
msgstr "कुराकानीमा जडान गर्नुहोस्"
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
+msgid "Input request here"
msgstr ""
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "टेलिफोन नम्बर"
+
msgid "Successfully joined Qun"
msgstr ""
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
#, fuzzy
@@ -7693,7 +7912,7 @@ msgstr "ध्वन विकल्पहरू"
msgid "Failed:"
msgstr "असफल भयो"
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
#, fuzzy
@@ -7705,11 +7924,12 @@ msgid ""
"this operation will eventually remove this Qun."
msgstr ""
-msgid "Sorry, you are not our style ..."
-msgstr ""
+#, fuzzy
+msgid "Sorry, you are not our style"
+msgstr "माफ गर्नुहोस्, म केहिबेरका लागि बाहिर हिडेँ!"
#, fuzzy
-msgid "Successfully changed Qun member"
+msgid "Successfully changed Qun members"
msgstr "टेलिफोन नम्बर"
#, fuzzy
@@ -7720,7 +7940,7 @@ msgid "You have successfully created a Qun"
msgstr ""
#, fuzzy
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr "के तपाईँ वार्तालाप जडान गर्न चाहानुहुन्छ ?"
#, fuzzy
@@ -7728,28 +7948,28 @@ msgid "Setup"
msgstr "सेट गर्नुहोस्"
#, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr ""
#, c-format
-msgid "%d request to join Qun %d"
+msgid "%u request to join Qun %u"
msgstr ""
#, fuzzy, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr "कुराकानीमा साथी जडान गर्न असफल"
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr "साथी हटाउनुहोस्"
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "साथी हटाउनुहोस्"
#, fuzzy, c-format
msgid "Unknown-%d"
@@ -7869,6 +8089,13 @@ msgstr "<b>प्रयोगकर्ता:</b> %s<br>"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<b>उपनामहरू:</b> %s<br>"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<b>प्रयोगकर्ता:</b> %s<br>"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7876,7 +8103,7 @@ msgid "<i>Feel free to join us!</i> :)"
msgstr ""
#, fuzzy, c-format
-msgid "About OpenQ r%s"
+msgid "About OpenQ %s"
msgstr "गाइमको बारेमा"
#, fuzzy
@@ -7897,6 +8124,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "गाइमको बारेमा"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "गृह ठेगाना"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7928,7 +8159,6 @@ msgstr ""
msgid "QQ2008"
msgstr ""
-#. #endif
#, fuzzy
msgid "Connect by TCP"
msgstr "जडान"
@@ -7941,6 +8171,9 @@ msgstr "कम विकल्पहरू देखाउनुहोस्"
msgid "Show server news"
msgstr "कम विकल्पहरू देखाउनुहोस्"
+msgid "Show chat room when msg comes"
+msgstr ""
+
#, fuzzy
msgid "Keep alive interval (seconds)"
msgstr "पढाइ त्रुटि"
@@ -7950,11 +8183,7 @@ msgid "Update interval (seconds)"
msgstr "पढाइ त्रुटि"
#, fuzzy
-msgid "Can not decrypt server reply"
-msgstr "सर्भर सूचना प्राप्त गर्न सक्दैन"
-
-#, fuzzy
-msgid "Can not decrypt get server reply"
+msgid "Cannot decrypt server reply"
msgstr "सर्भर सूचना प्राप्त गर्न सक्दैन"
#, c-format
@@ -7977,21 +8206,23 @@ msgid "Activation required"
msgstr "आवश्यक दर्ता "
#, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr ""
#, fuzzy
-msgid "Keep alive error"
-msgstr "पढाइ त्रुटि"
+msgid "Could not decrypt server reply"
+msgstr "सर्भर सूचना प्राप्त गर्न सक्दैन"
-msgid "Requesting captcha ..."
-msgstr ""
+#, fuzzy
+msgid "Requesting captcha"
+msgstr "अनुरोध अस्पष्ट"
-msgid "Checking code of captcha ..."
+msgid "Checking captcha"
msgstr ""
-msgid "Failed captcha verify"
-msgstr ""
+#, fuzzy
+msgid "Failed captcha verification"
+msgstr "याहू! प्रमाणीकरण असफल"
#, fuzzy
msgid "Captcha Image"
@@ -8001,7 +8232,7 @@ msgstr "छवि बचत गर्नुहोस्"
msgid "Enter code"
msgstr "पासवर्ड परिवर्तन गर्नुहोस्"
-msgid "QQ Captcha Verifing"
+msgid "QQ Captcha Verification"
msgstr ""
#, fuzzy
@@ -8009,16 +8240,15 @@ msgid "Enter the text from the image"
msgstr "कृपया थप्नुपर्ने समूहको नाम प्रविष्टि गर्नुहोस् ।"
#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
+msgid "Unknown reply when checking password (0x%02X)"
msgstr ""
#, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
msgstr ""
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "जडान गर्न अक्षम ।"
@@ -8026,12 +8256,6 @@ msgstr "जडान गर्न अक्षम ।"
msgid "Socket error"
msgstr "त्रुटि पढ्नुहोस्"
-#, fuzzy, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr "सर्भर सँग संचार आदान प्रदानमा त्रुटि"
-
#, fuzzy
msgid "Unable to read from socket"
msgstr "सकेट पढ्न अक्षम भयो"
@@ -8045,11 +8269,11 @@ msgid "Connection lost"
msgstr "जडान बन्द भयो"
#, fuzzy
-msgid "Get server ..."
+msgid "Getting server"
msgstr "प्रयोगकर्ता सूचना सेट गर्नुहोस्..."
#, fuzzy
-msgid "Request token"
+msgid "Requesting token"
msgstr "अनुरोध अस्वीकृत गरियो"
#, fuzzy
@@ -8061,17 +8285,13 @@ msgid "Invalid server or port"
msgstr "अवैध प्रयोगकर्तानाम वा पासवर्ड"
#, fuzzy
-msgid "Connecting server ..."
-msgstr "सर्भर जडान गर्नुहोस्"
+msgid "Connecting to server"
+msgstr "SILC सर्भरमा जडान हुँदैछ"
#, fuzzy
msgid "QQ Error"
msgstr "त्रुटि पढ्नुहोस्"
-#, fuzzy
-msgid "Failed to send IM."
-msgstr "कुराकानी जडान गर्न असफल"
-
#, fuzzy, c-format
msgid ""
"Server News:\n"
@@ -8081,6 +8301,10 @@ msgid ""
msgstr "ICQ सर्भर रिले"
#, fuzzy, c-format
+msgid "%s:%s"
+msgstr "%s (%s)मा%s"
+
+#, fuzzy, c-format
msgid "From %s:"
msgstr "बाट"
@@ -8090,32 +8314,30 @@ msgid ""
"%s"
msgstr "सर्भर सूचना "
-msgid "Unknow SERVER CMD"
-msgstr ""
+#, fuzzy
+msgid "Unknown SERVER CMD"
+msgstr "अज्ञात कारण ।"
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
#, fuzzy
msgid "QQ Qun Command"
msgstr "आदेश"
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr ""
-
-msgid "Can not decrypt login reply"
-msgstr ""
+#, fuzzy
+msgid "Could not decrypt login reply"
+msgstr "सर्भर सूचना प्राप्त गर्न सक्दैन"
#, fuzzy
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr "अज्ञात कारण ।"
#, fuzzy
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr "अज्ञात कारण ।"
#, fuzzy, c-format
@@ -8965,9 +9187,6 @@ msgstr "संस्था"
msgid "Unit"
msgstr "एकाइ"
-msgid "Note"
-msgstr "द्रष्टव्य"
-
msgid "Join Chat"
msgstr "कुराकानीमा जडान गर्नुहोस्"
@@ -9649,6 +9868,10 @@ msgstr "होस्टनाम निश्चय गर्न अक्षम
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr "IRC उपनामहरुले सेतो खाली ठाउँ समाविष्ट नगर्न सक्छ"
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "कम विकल्पहरू देखाउनुहोस्"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -9690,193 +9913,10 @@ msgid "Auth Domain"
msgstr "स्वचालित"
#, c-format
-msgid "Looking up %s"
-msgstr "%s को खोजी"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "%s जडान गर्न असफल"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "साइनअन: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "फाइल %s लेख्नका लागि अक्षम ।"
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "फाइल %s पढ्नका लागि अक्षम ।"
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "सन्देश धेरै लामो भयो, अन्तिम %s बाइटहरू पतन भयो ।"
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s अहिले लगइन छैन ।"
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "%s को चेतावनी अनुमति छैन ।"
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "एउटा सन्देश छोडिएको छ, तपाईँ सर्भरलाई सिमित गतिमा बढाई रहनुभएको छ ।"
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "%s मा कुराकानी उपलब्ध छैन ।"
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "तपाईँले %s मा सन्देशहरू धेरै छिटो पठाई रहनु भएको छ ।"
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "तपाईँले %s बाट IM हराउनु भयो किनभने यो धेरै ठूलो थियो ।"
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "तपाईँले %s बाट IM हराउनु भयो किनभने यो पठउने कार्य धेरै छिटो भयो ।"
-
-#, c-format
-msgid "Failure."
-msgstr "असफलता ।"
-
-#, c-format
-msgid "Too many matches."
-msgstr "अति धेरै जोडीहरू ।"
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "अरू धेरै क्वालिफायरहरुको आवश्यकता ।"
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "डाइरेक्टरी सेवा अस्थायी रुपमा उपलब्ध छैन ।"
-
-#, fuzzy, c-format
-msgid "Email lookup restricted."
-msgstr "इमेल खोजी प्रतिबन्धित भयो ।"
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "कुञ्जीशब्द बेवास्ता गरियो।"
-
-#, c-format
-msgid "No keywords."
-msgstr "कुञ्जीशब्द्वहरू छैनन् ।"
-
-#, c-format
-msgid "User has no directory information."
-msgstr "प्रयोगकर्ता सँग डाइरेक्टरी सूचना छैन ।"
-
-#, c-format
-msgid "Country not supported."
-msgstr "देश समर्थन गरिदैन "
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "अज्ञात असफलता: %s ।"
-
-#, fuzzy, c-format
-msgid "Incorrect username or password."
-msgstr "गलत उपनाम वा पासवर्ड ।"
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "सेवा अस्थायी रुपमा उपलब्ध छैन ।"
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "लगइन गर्न तपाईँको चेतावनी स्तर एकदमै उच्च छ ।"
-
-#, c-format
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
+msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
-"तपाईँ लगातार जडान गर्दै र बिच्छेदन गर्दै हुनुहुन्छ । दस मिनेट प्रतिक्षा गर्नुहोस् र फेरि प्रयास "
-"गर्नुहोस् । यदि तपाईँले प्रयास गर्न निरन्तरता दिनु भयो भने, तपाईँले लामो समय सम्म प्रतिक्ष "
-"गर्नु पर्नेछ ।"
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "एउटा अज्ञात साइनअन त्रुटि देखा पर्यो: %s ।"
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "एउटा अज्ञात त्रुटि, %d, देखापर्यो । सूचना: %s"
-
-#, fuzzy
-msgid "Invalid Groupname"
-msgstr "अवैध समूह"
-
-msgid "Connection Closed"
-msgstr "जडान बन्द भयो"
-
-msgid "Waiting for reply..."
-msgstr "जवाफका लागि प्रतिक्षा गर्दैछ..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "TOC यसको पजबाट फर्कियो । तपाईँ अब फेरि सन्देश पठाउन सक्नुहुन्छ ।"
-
-msgid "Password Change Successful"
-msgstr "पासवर्ड सफलतापूर्वक परिवर्तन भयो"
-
-msgid "_Group:"
-msgstr "समूह:"
-msgid "Get Dir Info"
-msgstr "डाइरेक्टरी सूचना प्राप्त गर्नुहोस्"
-
-msgid "Set Dir Info"
-msgstr "डाइरेक्टरी सूचना सेट गर्नुहोस्"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "लेख्नका लागि %s खोल्न सकिदैन!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "फाइल स्थान्तरणमा असफल; अन्य साइड सम्भवत: रद्द गरियो ।"
-
-msgid "Could not connect for transfer."
-msgstr "स्थान्तरणका लागि जडान गर्न सकिएन"
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "फाइल हेडर लेख्न सकिएन । फाइल स्थान्तरण हुँदैन ।"
-
-#, fuzzy
-msgid "Save As..."
-msgstr "प्रतिमा यस रुपमा बचत गर्नुहोस्..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s ले %s लाई %d फाइल स्विकार गर्न अनुरोध गर्यो: %s (%.2f %s)%s%s"
-msgstr[1] "%s ले %s लाई %d फाइल स्विकार गर्न अनुरोध गर्यो: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s ले तपाईँलाई तिनीहरुलाई फाइल पठाउन अनुरोध गर्दछ"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "TOC प्रोटोकल प्लगइन"
-
-#, c-format
-msgid "%s has sent you a webcam invite, which is not yet supported."
+msgid "Your SMS was not delivered"
msgstr ""
msgid "Your Yahoo! message did not get sent."
@@ -10160,14 +10200,9 @@ msgstr "कूल लिङ्क ३"
msgid "Last Update"
msgstr "अन्तिम अद्यावधिक"
-#, c-format
-msgid "User information for %s unavailable"
-msgstr "%s का लागि प्रयोगकर्ता सूचना उपलब्ध छैन"
-
#, fuzzy
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr "माफ गर्नुहोला, यो प्रोफाइल हाल समर्थन प्राप्त नभएको भाषामा देखिन्छ ।"
msgid ""
@@ -10509,10 +10544,6 @@ msgstr "कृपया अवरोध नगर्नुहोस्"
msgid "Extended away"
msgstr "टाढा फैल्याउनुहोस्"
-#, fuzzy
-msgid "Mobile"
-msgstr "मोबाइल फोन"
-
msgid "Listening to music"
msgstr ""
@@ -10554,20 +10585,6 @@ msgstr "%s निष्क्रिय भएन"
msgid "%x %X"
msgstr ""
-#, fuzzy, c-format
-msgid "Error Reading %s"
-msgstr ""
-"%s पढ्दा त्रुटि: \n"
-"%s.\n"
-
-#, 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 ""
-"एउटा त्रुटि तपाईँको साथी सूची पद वर्णन गरेर देखा पर्यो । यो लोड भएको छैन, र पुरानो "
-"फाइल blist.xml~ मा सर्यो ।"
-
msgid "Calculating..."
msgstr "गणना गर्दैछ..."
@@ -10646,6 +10663,12 @@ msgstr ""
msgid "Unable to connect to %s: %s"
msgstr "सर्भरमा जडान गर्न अक्षम ।"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr "सर्भर लगइनका लागि TLS/SSL आवश्यकता पर्दछ । TLS/SSL समर्थन फेला परेन ।"
+
#, c-format
msgid " - %s"
msgstr ""
@@ -10679,6 +10702,20 @@ msgstr "जडान बन्द भयो"
msgid "Address already in use."
msgstr "त्यो फाइल पहिलेनै अवस्थित छ"
+#, fuzzy, c-format
+msgid "Error Reading %s"
+msgstr ""
+"%s पढ्दा त्रुटि: \n"
+"%s.\n"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"एउटा त्रुटि तपाईँको साथी सूची पद वर्णन गरेर देखा पर्यो । यो लोड भएको छैन, र पुरानो "
+"फाइल blist.xml~ मा सर्यो ।"
+
#, fuzzy
msgid "Internet Messenger"
msgstr "तात्कालिक मेसेन्जरहरू"
@@ -10727,10 +10764,9 @@ msgstr "नयाँ प्रत्र सूचनाहरू"
msgid "Use this buddy _icon for this account:"
msgstr ""
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s विकल्पहरू"
+#, fuzzy
+msgid "_Advanced"
+msgstr "रद्द गर्नुहोस्"
#, fuzzy
msgid "Use GNOME Proxy Settings"
@@ -10766,9 +10802,6 @@ msgstr "यदि तपाईँ वास्तविकता नजिकब
msgid "you can see the butterflies mating"
msgstr "तपाईँले पुतलीहरू जोडिएको हेर्नु सक्नुहुन्छ"
-msgid "Proxy Options"
-msgstr "प्रोक्सि विकल्पहरू "
-
msgid "Proxy _type:"
msgstr "प्रोक्सि प्रकार:"
@@ -10799,8 +10832,8 @@ msgid "Create _this new account on the server"
msgstr ""
#, fuzzy
-msgid "_Advanced"
-msgstr "रद्द गर्नुहोस्"
+msgid "_Proxy"
+msgstr "प्रोक्सि छैन"
#, fuzzy
msgid "Enabled"
@@ -10869,6 +10902,17 @@ msgid "I_M"
msgstr "IM "
#, fuzzy
+msgid "_Audio Call"
+msgstr "कुराकानी थप्नुहोस्"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "भिडियो कुराकानी"
+
+#, fuzzy
msgid "_Send File..."
msgstr "फाइल पठाउनुहोस्"
@@ -11025,6 +11069,10 @@ msgid "/Tools/_Certificates"
msgstr "/उपकरणहरू/प्रथमिकताहरू"
#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/उपकरणहरू/ टाढा"
+
+#, fuzzy
msgid "/Tools/Plu_gins"
msgstr "/उपकरणहरू/प्लगइन कार्यहरू"
@@ -11034,10 +11082,6 @@ msgstr "/उपकरणहरू/प्रथमिकताहरू"
msgid "/Tools/Pr_ivacy"
msgstr "/उपकरणहरू/गोपनीयता"
-#, fuzzy
-msgid "/Tools/Smile_y"
-msgstr "/उपकरणहरू/ टाढा"
-
msgid "/Tools/_File Transfers"
msgstr "/उपकरणहरू/फाइल स्थानान्तरणहरू"
@@ -11170,8 +11214,8 @@ msgstr "म्यानुअल"
msgid "By status"
msgstr "वस्तुस्थिति द्वारा"
-msgid "By log size"
-msgstr "लग साइज द्वारा"
+msgid "By recent log activity"
+msgstr ""
#, fuzzy, c-format
msgid "%s disconnected"
@@ -11189,6 +11233,9 @@ msgstr "पुन:जडान गर्नुहोस्"
msgid "Re-enable"
msgstr "नयाँ ज्याबर खाता रजिष्टार गर्नुहोस्"
+msgid "SSL FAQs"
+msgstr ""
+
#, fuzzy
msgid "Welcome back!"
msgstr "%s फर्कियो"
@@ -11288,6 +11335,9 @@ msgstr ""
msgid "A_lias:"
msgstr "उपनाम:"
+msgid "_Group:"
+msgstr "समूह:"
+
msgid "Auto_join when account becomes online."
msgstr ""
@@ -11347,14 +11397,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr "कुराकानी कोठा भित्र साथीलाई निमन्त्रणा गर्नुहोस्"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"कृपया तपाईँले निमन्त्रणा गर्न चाहेको प्रयोगकर्ताको नाम प्रविष्टि गर्नुहोस्,एच्छिक निमन्त्रणा "
-"सन्देश बराबर हुन्छ ।"
-
msgid "_Buddy:"
msgstr "साथी:"
@@ -11434,6 +11476,22 @@ msgstr "/वार्तालाप/यस रुपमा बचत गर्
msgid "/Conversation/Clea_r Scrollback"
msgstr "/वार्तालाप/सफा गर्नुहोस्"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/वार्तालाप/बन्द गर्नुहोस्"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/वार्तालाप/बन्द गर्नुहोस्"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/वार्तालाप/बन्द गर्नुहोस्"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/वार्तालाप/दृश्य लग"
+
msgid "/Conversation/Se_nd File..."
msgstr "/वार्तालाप/फाइल पठाउनुहोस्..."
@@ -11512,6 +11570,18 @@ msgstr "/वार्तालाप"
msgid "/Conversation/View Log"
msgstr "/वार्तालाप/लग हेर्नुहोस्"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/वार्तालाप/बन्द गर्नुहोस्"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/वार्तालाप/लग हेर्नुहोस्"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/वार्तालाप/बन्द गर्नुहोस्"
+
msgid "/Conversation/Send File..."
msgstr "/वार्तालाप/फाइल पठाउनुहोस्..."
@@ -11711,6 +11781,9 @@ msgstr "ठेगाना"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "समर्थन"
@@ -11860,6 +11933,10 @@ msgid "Ubuntu Georgian Translators"
msgstr "हालका अनुवादकहरू"
#, fuzzy
+msgid "Khmer"
+msgstr "ओपेरा"
+
+#, fuzzy
msgid "Kannada"
msgstr "निषेधित गरियो"
@@ -11883,6 +11960,10 @@ msgid "Macedonian"
msgstr "म्यासिडोनियन"
#, fuzzy
+msgid "Mongolian"
+msgstr "म्यासिडोनियन"
+
+#, fuzzy
msgid "Bokmål Norwegian"
msgstr "नर्वेयीयन"
@@ -11991,8 +12072,25 @@ msgid ""
"<BR><BR>"
msgstr ""
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
#, fuzzy, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"4\">IRC:</FONT> #Pidgin on irc.freenode.net<BR><BR>"
+
+#, fuzzy, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"4\">IRC:</FONT> #Pidgin on irc.freenode.net<BR><BR>"
#, fuzzy
@@ -12330,15 +12428,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr "नयाँ प्रत्र सूचनाहरू"
-msgid "_Copy Email Address"
-msgstr "इ-मेल ठेगाना प्रतिलिपि गर्नुहोस्"
-
-msgid "_Open Link in Browser"
-msgstr "ब्राउजरमा लिङ्क खोल्नुहोस्"
-
-msgid "_Copy Link Location"
-msgstr "लिङ्क स्थान प्रतिलिपि बनाउनुहोस्"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12613,6 +12702,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12630,6 +12720,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12661,16 +12752,27 @@ msgstr ""
msgid "Pidgin"
msgstr "पेगिङ्ग"
-#, fuzzy
-msgid "Open All Messages"
-msgstr "सन्देश पठाउनुहोस्"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
+
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
#, fuzzy
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgid "Calling..."
+msgstr "गणना गर्दैछ..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
msgstr ""
-"<span weight=\"bold\" size=\"larger\">तपाईँको मेल छ!</span>\n"
-"\n"
-"%s"
#, c-format
msgid "%s has %d new message."
@@ -12703,6 +12805,35 @@ msgid ""
"The 'Manual' browser command has been chosen, but no command has been set."
msgstr "'म्यानुअल' ब्राउजर आदेश रोजिएको छ, तर कुनै आदेश सेट गरिएको छैन ।"
+#, fuzzy
+msgid "Open All Messages"
+msgstr "सन्देश पठाउनुहोस्"
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr ""
+"<span weight=\"bold\" size=\"larger\">तपाईँको मेल छ!</span>\n"
+"\n"
+"%s"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "नयाँ साथी पाउन्स"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr ""
+"<span weight=\"bold\" size=\"larger\">तपाईँको मेल छ!</span>\n"
+"\n"
+"%s"
+
+#, fuzzy
+msgid "No message"
+msgstr "(१ सन्देश)"
+
msgid "The following plugins will be unloaded."
msgstr ""
@@ -12761,6 +12892,10 @@ msgstr ""
msgid "Select a file"
msgstr "एउटा फाइल चयन गर्नुहोस् "
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "साथी पाउन्स सम्पादन गर्नुहोस्"
+
#. Create the "Pounce on Whom" frame.
#, fuzzy
msgid "Pounce on Whom"
@@ -12846,6 +12981,50 @@ msgstr ""
msgid "Pounce Target"
msgstr "कहिले पाउन्स गर्नुहुन्छ"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "साथीले टाइप गर्न सुरू गर्दै हुनुहुन्छ"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "प्रयोगकर्ता टाइप गर्दै हुनुहुन्छ..."
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "साइनअन"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "निष्क्रिय बाट फर्कनुहोस्"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "टाढा बाट फर्कनुहोस्"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "साथीले टाइप गर्न रोक्नुभयो"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "साइनअफ"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "%s निष्क्रिय भयो"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "टाढा गएको बेला"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "सन्देश पठाउनुहोस्"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "अज्ञात घटना पाउन्स गर्नुहोस् । कृपया यो प्रतिवेदन गर्नुहोस्!"
+
msgid "Smiley theme failed to unpack."
msgstr ""
@@ -12870,6 +13049,12 @@ msgstr "सर्टकटहरू"
msgid "Cl_ose conversations with the Escape key"
msgstr "%s सँग वार्तालाप"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "साथी सूची"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "प्रणाली ट्रे प्रतिमा"
@@ -12995,10 +13180,6 @@ msgstr ""
msgid "Cannot start browser configuration program."
msgstr "प्रयोगकर्ता जानकारी प्राप्त गर्न सक्दैन"
-#, fuzzy
-msgid "ST_UN server:"
-msgstr "सर्भर:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr ""
@@ -13026,6 +13207,10 @@ msgstr "पोर्ट सुरू गर्नुहोस्:"
msgid "_End port:"
msgstr "पोर्ट अन्त्य गर्नुहोस्:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
#, fuzzy
msgid "Proxy Server &amp; Browser"
msgstr "प्रोक्सि सर्भर"
@@ -13055,6 +13240,10 @@ msgstr "प्रोक्सि सर्भर"
msgid "No proxy"
msgstr "प्रोक्सि छैन"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "प्रयोगकर्ता:"
@@ -13225,14 +13414,14 @@ msgid "Auto-away"
msgstr "स्वत: टाढा"
#, fuzzy
-msgid "Change status when _idle"
-msgstr "निस्क्रिय बस्दा 'टाढा' सेट गर्नुहोस्"
-
-#, fuzzy
msgid "_Minutes before becoming idle:"
msgstr " 'टाढा सेट' गर्नु अघि मिनेटहरू:"
#, fuzzy
+msgid "Change status when _idle"
+msgstr "निस्क्रिय बस्दा 'टाढा' सेट गर्नुहोस्"
+
+#, fuzzy
msgid "Change _status to:"
msgstr "ठेगाना परिवर्तन गर्नुहोस्:"
@@ -13389,6 +13578,12 @@ msgstr "बचत गर्नुहोस् र प्रयोग गर्
msgid "Status for %s"
msgstr "वस्तुस्थिति: %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
#, fuzzy
msgid "Custom Smiley"
msgstr "स्माइली घुसाउनुहोस्"
@@ -13399,15 +13594,15 @@ msgstr ""
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
+msgstr ""
+
#, fuzzy
msgid "Duplicate Shortcut"
msgstr "सार्वजनिक कुञ्जी फाइल"
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
-msgstr ""
-
#, fuzzy
msgid "Please select an image for the smiley."
msgstr "चयन गरिएको समूहका लागि एउटा नयाँ नाम प्रविष्टि गर्नुहोस् ।"
@@ -13421,18 +13616,22 @@ msgid "Add Smiley"
msgstr "मुस्कान!"
#, fuzzy
-msgid "Smiley _Image"
+msgid "_Image:"
msgstr "छवि बचत गर्नुहोस्"
-#. Smiley shortcut
+#. Shortcut text
#, fuzzy
-msgid "Smiley S_hortcut"
+msgid "S_hortcut text:"
msgstr "सर्टकटहरू"
#, fuzzy
msgid "Smiley"
msgstr "मुस्कान!"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "सर्टकटहरू"
+
msgid "Custom Smiley Manager"
msgstr ""
@@ -13560,6 +13759,16 @@ msgid ""
msgstr ""
#, fuzzy
+msgid "_Open Link"
+msgstr "लिङ्क यसमा खोल्नुहोस्:"
+
+msgid "_Copy Link Location"
+msgstr "लिङ्क स्थान प्रतिलिपि बनाउनुहोस्"
+
+msgid "_Copy Email Address"
+msgstr "इ-मेल ठेगाना प्रतिलिपि गर्नुहोस्"
+
+#, fuzzy
msgid "Save File"
msgstr "फाइल बचत गर्नुहोस्..."
@@ -14584,10 +14793,6 @@ msgid "Only when docked"
msgstr ""
#, fuzzy
-msgid "_Flash window when chat messages are received"
-msgstr "सन्देशहरू प्राप्त गरिसके पछि सञ्झ्याल फ्ल्यास गर्नुहोस्"
-
-#, fuzzy
msgid "Windows Pidgin Options"
msgstr "लगइन विकल्पहरू"
@@ -14639,6 +14844,231 @@ msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr ""
#, fuzzy
+#~ msgid "Invite message"
+#~ msgstr "सन्देश अन्त्य गर्नुहोस्"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "कृपया तपाईँले निमन्त्रणा गर्न चाहेको प्रयोगकर्ताको नाम प्रविष्टि गर्नुहोस्,एच्छिक "
+#~ "निमन्त्रणा सन्देश बराबर हुन्छ ।"
+
+#, fuzzy
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "साथी सूची पुन:प्राप्त गर्न अक्षम भयो"
+
+#~ msgid ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+#~ msgstr ""
+#~ "तपाईँले क्रमबद्धरूपले जडान विच्छेद गर्न सक्नुहुन्छ । तपाईँं यो स्थिर TOC इकाइ प्रयोग गर्न "
+#~ "चाहानुहुन्छ । अद्यावधिकका लागि %s जाँच गर्नुहोस् ।"
+
+#, fuzzy
+#~ msgid "Add buddy Q&A"
+#~ msgstr "साथी थप्नुहोस्"
+
+#, fuzzy
+#~ msgid "Can not decrypt get server reply"
+#~ msgstr "सर्भर सूचना प्राप्त गर्न सक्दैन"
+
+#, fuzzy
+#~ msgid "Keep alive error"
+#~ msgstr "पढाइ त्रुटि"
+
+#, fuzzy
+#~ msgid ""
+#~ "Lost connection with server:\n"
+#~ "%d, %s"
+#~ msgstr "सर्भर सँग संचार आदान प्रदानमा त्रुटि"
+
+#, fuzzy
+#~ msgid "Connecting server ..."
+#~ msgstr "सर्भर जडान गर्नुहोस्"
+
+#, fuzzy
+#~ msgid "Failed to send IM."
+#~ msgstr "कुराकानी जडान गर्न असफल"
+
+#~ msgid "Looking up %s"
+#~ msgstr "%s को खोजी"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "%s जडान गर्न असफल"
+
+#~ msgid "Signon: %s"
+#~ msgstr "साइनअन: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "फाइल %s लेख्नका लागि अक्षम ।"
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "फाइल %s पढ्नका लागि अक्षम ।"
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "सन्देश धेरै लामो भयो, अन्तिम %s बाइटहरू पतन भयो ।"
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s अहिले लगइन छैन ।"
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "%s को चेतावनी अनुमति छैन ।"
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr "एउटा सन्देश छोडिएको छ, तपाईँ सर्भरलाई सिमित गतिमा बढाई रहनुभएको छ ।"
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "%s मा कुराकानी उपलब्ध छैन ।"
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "तपाईँले %s मा सन्देशहरू धेरै छिटो पठाई रहनु भएको छ ।"
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "तपाईँले %s बाट IM हराउनु भयो किनभने यो धेरै ठूलो थियो ।"
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr "तपाईँले %s बाट IM हराउनु भयो किनभने यो पठउने कार्य धेरै छिटो भयो ।"
+
+#~ msgid "Failure."
+#~ msgstr "असफलता ।"
+
+#~ msgid "Too many matches."
+#~ msgstr "अति धेरै जोडीहरू ।"
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "अरू धेरै क्वालिफायरहरुको आवश्यकता ।"
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "डाइरेक्टरी सेवा अस्थायी रुपमा उपलब्ध छैन ।"
+
+#, fuzzy
+#~ msgid "Email lookup restricted."
+#~ msgstr "इमेल खोजी प्रतिबन्धित भयो ।"
+
+#~ msgid "Keyword ignored."
+#~ msgstr "कुञ्जीशब्द बेवास्ता गरियो।"
+
+#~ msgid "No keywords."
+#~ msgstr "कुञ्जीशब्द्वहरू छैनन् ।"
+
+#~ msgid "User has no directory information."
+#~ msgstr "प्रयोगकर्ता सँग डाइरेक्टरी सूचना छैन ।"
+
+#~ msgid "Country not supported."
+#~ msgstr "देश समर्थन गरिदैन "
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "अज्ञात असफलता: %s ।"
+
+#, fuzzy
+#~ msgid "Incorrect username or password."
+#~ msgstr "गलत उपनाम वा पासवर्ड ।"
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "सेवा अस्थायी रुपमा उपलब्ध छैन ।"
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "लगइन गर्न तपाईँको चेतावनी स्तर एकदमै उच्च छ ।"
+
+#~ 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 ""
+#~ "तपाईँ लगातार जडान गर्दै र बिच्छेदन गर्दै हुनुहुन्छ । दस मिनेट प्रतिक्षा गर्नुहोस् र फेरि "
+#~ "प्रयास गर्नुहोस् । यदि तपाईँले प्रयास गर्न निरन्तरता दिनु भयो भने, तपाईँले लामो समय "
+#~ "सम्म प्रतिक्ष गर्नु पर्नेछ ।"
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "एउटा अज्ञात साइनअन त्रुटि देखा पर्यो: %s ।"
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "एउटा अज्ञात त्रुटि, %d, देखापर्यो । सूचना: %s"
+
+#, fuzzy
+#~ msgid "Invalid Groupname"
+#~ msgstr "अवैध समूह"
+
+#~ msgid "Connection Closed"
+#~ msgstr "जडान बन्द भयो"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "जवाफका लागि प्रतिक्षा गर्दैछ..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "TOC यसको पजबाट फर्कियो । तपाईँ अब फेरि सन्देश पठाउन सक्नुहुन्छ ।"
+
+#~ msgid "Password Change Successful"
+#~ msgstr "पासवर्ड सफलतापूर्वक परिवर्तन भयो"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "डाइरेक्टरी सूचना प्राप्त गर्नुहोस्"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "डाइरेक्टरी सूचना सेट गर्नुहोस्"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "लेख्नका लागि %s खोल्न सकिदैन!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr "फाइल स्थान्तरणमा असफल; अन्य साइड सम्भवत: रद्द गरियो ।"
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "स्थान्तरणका लागि जडान गर्न सकिएन"
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "फाइल हेडर लेख्न सकिएन । फाइल स्थान्तरण हुँदैन ।"
+
+#, fuzzy
+#~ msgid "Save As..."
+#~ msgstr "प्रतिमा यस रुपमा बचत गर्नुहोस्..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s ले %s लाई %d फाइल स्विकार गर्न अनुरोध गर्यो: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s ले %s लाई %d फाइल स्विकार गर्न अनुरोध गर्यो: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s ले तपाईँलाई तिनीहरुलाई फाइल पठाउन अनुरोध गर्दछ"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "TOC प्रोटोकल प्लगइन"
+
+#~ msgid "User information for %s unavailable"
+#~ msgstr "%s का लागि प्रयोगकर्ता सूचना उपलब्ध छैन"
+
+#~ msgid "%s Options"
+#~ msgstr "%s विकल्पहरू"
+
+#~ msgid "Proxy Options"
+#~ msgstr "प्रोक्सि विकल्पहरू "
+
+#~ msgid "By log size"
+#~ msgstr "लग साइज द्वारा"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "ब्राउजरमा लिङ्क खोल्नुहोस्"
+
+#, fuzzy
+#~ msgid "ST_UN server:"
+#~ msgstr "सर्भर:"
+
+#, fuzzy
+#~ msgid "Smiley _Image"
+#~ msgstr "छवि बचत गर्नुहोस्"
+
+#, fuzzy
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "सर्टकटहरू"
+
+#, fuzzy
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "सन्देशहरू प्राप्त गरिसके पछि सञ्झ्याल फ्ल्यास गर्नुहोस्"
+
+#, fuzzy
#~ msgid "A group with the name already exists."
#~ msgstr "त्यो नाम सहितको फोल्डर पहिल्यै अवस्थित छ"
@@ -14707,13 +15137,6 @@ msgstr ""
#~ msgstr "के तपाईँ टाढा सन्देश हटाउने कुरामा निश्चिन्त हुनुहुन्छ \"%s\"?"
#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr "%s (%s)मा%s"
-
-#, fuzzy
#~ msgid "System Message"
#~ msgstr "सन्देश पठाउनुहोस्"
@@ -14852,9 +15275,6 @@ msgstr ""
#~ msgid "Invalid screen name"
#~ msgstr "अवैध प्रयोगकर्तानाम"
-#~ msgid "Unable to make SSL connection to server."
-#~ msgstr "सर्भरमा SSL जडान बनाउन अक्षम छ ।"
-
#~ msgid "Too evil (sender)"
#~ msgstr "अति दुष्ट (प्रेसक)"
@@ -15157,8 +15577,8 @@ msgstr ""
#~ "You can get version %s from:<br><a href=\"http://Pidgin.sourceforge.net/"
#~ "\">http://Pidgin.sourceforge.net</a>."
#~ msgstr ""
-#~ "%s बाट तपाईँले संस्करण पाउन सक्नुहुन्छ :<br><a href=\"http://Pidgin.sourceforge.net/"
-#~ "\">http://Pidgin.sourceforge.net</a> ।"
+#~ "%s बाट तपाईँले संस्करण पाउन सक्नुहुन्छ :<br><a href=\"http://Pidgin.sourceforge."
+#~ "net/\">http://Pidgin.sourceforge.net</a> ।"
#~ msgid "Delay"
#~ msgstr "ढिला"
@@ -15214,9 +15634,6 @@ msgstr ""
#~ msgid "Group not removed"
#~ msgstr "समूह हटेको छैन"
-#~ msgid "Buddy List Error"
-#~ msgstr "साथी सूची त्रुटि"
-
#~ msgid "(+%d more)"
#~ msgstr "(+%d धेरै)"
@@ -15589,9 +16006,6 @@ msgstr ""
#~ msgid "_Idle"
#~ msgstr "निष्क्रिय"
-#~ msgid "Retur_n from idle"
-#~ msgstr "निष्क्रिय बाट फर्कनुहोस्"
-
#~ msgid "Pounce Action"
#~ msgstr "कार्य पाउन्स गर्नुहोस्"
@@ -15799,8 +16213,8 @@ msgstr ""
#~ msgstr "प्राथमिकताहरुलाई लोड गर्न अक्षम"
#~ msgid ""
-#~ "Pidgin was not able to load your preferences because they are stored in an "
-#~ "old format that is no longer used. Please reconfigure your settings "
+#~ "Pidgin 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 ""
#~ "गाइम तपाईँको प्राथमिकताहरू लोड गर्न सक्षम भएन किनभने तिनीहरू पुरानो ढाँचामा भण्डारण "
@@ -15914,15 +16328,15 @@ msgstr ""
#~ msgstr "डाइरेक्टरी पहुँच गर्न अक्षम भयो"
#~ msgid ""
-#~ "Pidgin was unable to search the Directory because it was unable to connect "
-#~ "to the directory server. Please try again later."
+#~ "Pidgin was unable to search the Directory because it was unable to "
+#~ "connect to the directory server. Please try again later."
#~ msgstr ""
#~ "गाइम डाइरेक्टरी खोजी गर्न अक्षम थियो किनभने यो डाइरेक्टरी सर्भरमा जडान हुन सकेको "
#~ "थिएन । कृपया फेरी प्रयास गर्नुहोस् ।"
#~ msgid ""
-#~ "Pidgin was unable to change your password due to an error connecting to the "
-#~ "Gadu-Gadu server. Please try again later."
+#~ "Pidgin was unable to change your password due to an error connecting to "
+#~ "the Gadu-Gadu server. Please try again later."
#~ msgstr ""
#~ "गाइम Gadu-Gadu सर्भरमा एउटा त्रुटि जडान भएको कारणले गर्दा तपाईँको पासवर्ड "
#~ "परिवर्तन गर्न सक्षम भएन । कृपया पछि फेरी प्रयास गर्नुहोस् ।"
@@ -15934,8 +16348,8 @@ msgstr ""
#~ msgstr "प्रयोगकर्ता प्रोफाइल पहुँच गर्न अक्षम भयो ।"
#~ msgid ""
-#~ "Pidgin was unable to access this user's profile due to an error connecting "
-#~ "to the directory server. Please try again later."
+#~ "Pidgin was unable to access this user's profile due to an error "
+#~ "connecting to the directory server. Please try again later."
#~ msgstr ""
#~ "डाइरेक्टरी सर्भरमा एउटा त्रुटि जडान भएको कारणले गर्दा यो प्रयोगकर्ताको फाइल गाइमले "
#~ "पहुँच गर्न सकेन । कृपया पछि फेरी प्रयास गर्नुहोस् । "
@@ -16205,8 +16619,8 @@ msgstr ""
#~ msgid ""
#~ "When this happens, TOC ignores any messages sent to it, and may kick you "
-#~ "off if you send a message. Pidgin will prevent anything from going through. "
-#~ "This is only temporary, please be patient."
+#~ "off if you send a message. Pidgin will prevent anything from going "
+#~ "through. This is only temporary, please be patient."
#~ msgstr ""
#~ "जब यो हुन्छ, TOC ले यसमा पठाइएको कुनै सन्देशहरुलाई उपेक्षा गर्दछ, र तपाईँले सन्देश पठाउनु "
#~ "भयो भने फालिदिन्छ ।गाइमले कुनै पनि मार्फत गएकोलाई रोक्छ । यो मात्र अस्थायी हो, "
@@ -16253,8 +16667,8 @@ msgstr ""
#~ msgid ""
#~ "The normal authentication method has failed. This means either your "
#~ "password is incorrect, or Yahoo!'s authentication scheme has changed. "
-#~ "Pidgin will now attempt to log in using Web Messenger authentication, which "
-#~ "will result in reduced functionality and features."
+#~ "Pidgin will now attempt to log in using Web Messenger authentication, "
+#~ "which will result in reduced functionality and features."
#~ msgstr ""
#~ "सामान्य प्रमाणीकरण विधि असफल भयो । यसको मतलब कि त तपाईँको पासवर्ड गलत छ, वा "
#~ "याहूको प्रमाणीकरण योजना परिवर्तन भयो । वेब मेसेन्जर प्रमाणीकरण प्रयोग गरेर गाइमले "
@@ -16284,9 +16698,6 @@ msgstr ""
#~ msgstr[0] "(%d सन्देश)"
#~ msgstr[1] "(%d सन्देशहरू)"
-#~ msgid "(1 message)"
-#~ msgstr "(१ सन्देश)"
-
#~ msgid "%s logged in."
#~ msgstr "%s लग भयो ।"
@@ -16310,9 +16721,6 @@ msgstr ""
#~ "%s ले %s लाई कुराकानी कोठा %s मा निमन्त्रणा गर्यो:\n"
#~ "<b>%s</b>"
-#~ msgid "Sorry, I ran out for a bit!"
-#~ msgstr "माफ गर्नुहोस्, म केहिबेरका लागि बाहिर हिडेँ!"
-
#~ msgid "_Warn"
#~ msgstr "चेतावनि दिनुहोस्"
diff --git a/po/nl.po b/po/nl.po
index 5910a4d587..3e9c4d087d 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pidgin\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-01-08 22:34-0500\n"
+"POT-Creation-Date: 2009-04-30 10:39-0400\n"
"PO-Revision-Date: 2009-01-06 17:27+0100\n"
"Last-Translator: Daniël Heres <danielheres@gmail.com>\n"
"Language-Team: Dutch <nl@li.org>\n"
@@ -29,13 +29,13 @@ msgstr "Finch"
msgid "%s. Try `%s -h' for more information.\n"
msgstr "%s. Probeer '%s -h' voor meer informatie.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -610,19 +610,6 @@ msgstr "Logboek wordt vanaf nu niet meer bijgehouden."
msgid "Send To"
msgstr "Verzenden aan"
-msgid "Invite message"
-msgstr "Uitnodiging"
-
-msgid "Invite"
-msgstr "Uitnodigen"
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Geef de naam van de persoon die u wilt uitnodigen,\n"
-"eventueel met een uitnodigende tekst."
-
msgid "Conversation"
msgstr "Gesprek"
@@ -878,6 +865,41 @@ msgstr "Alle gesprekken"
msgid "System Log"
msgstr "Systeemlogboek"
+#, fuzzy
+msgid "Calling ... "
+msgstr "Berekenen..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "Accepteren"
+
+msgid "Reject"
+msgstr "Weigeren"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "Je hebt het kanaal%s%s verlaten"
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "E-mails"
@@ -912,6 +934,9 @@ msgstr "Doorgaan"
msgid "IM"
msgstr "Bericht"
+msgid "Invite"
+msgstr "Uitnodigen"
+
msgid "(none)"
msgstr "(geen)"
@@ -1115,7 +1140,6 @@ msgstr "%s is weggegaan. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s heeft u een bericht toegestuurd. (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "Onbekend contactalarm. Rapporteer dit alstublieft!"
@@ -1161,7 +1185,6 @@ msgstr "Minuten voor wijzigen van status"
msgid "Change status to"
msgstr "Status veranderen in "
-#. Conversations
msgid "Conversations"
msgstr "Gesprekken"
@@ -1531,6 +1554,28 @@ msgstr "GntGeschiedenis"
msgid "Lastlog plugin."
msgstr "Geschiedenis-plug-in."
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "accounts"
@@ -1634,13 +1679,6 @@ msgstr "Certificaat voor %s accepteren?"
msgid "SSL Certificate Verification"
msgstr "SSL-certificaat-controle"
-#. Number of actions
-msgid "Accept"
-msgstr "Accepteren"
-
-msgid "Reject"
-msgstr "Weigeren"
-
msgid "_View Certificate..."
msgstr "_Bekijk certificaat..."
@@ -1789,6 +1827,18 @@ msgstr "%s is weggegaan."
msgid "%s left the room (%s)."
msgstr "%s is weggegaan (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Uitnodigen voor bijeenkomst"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Geef de bijnaam van de persoon die u wilt uitnodigen, eventueel met een "
+"uitnodigende tekst"
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "Kan geen nieuwe verbinding maken: %s"
@@ -2662,6 +2712,33 @@ msgstr "Offline berichten in alarm opslaan."
msgid "Do not ask. Always save in pounce."
msgstr "Vraag niet. Altijd in alarm opslaan."
+# wachtwoord invoeren
+#, fuzzy
+msgid "One Time Password"
+msgstr "Voer wachtwoord in"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2871,7 +2948,6 @@ msgid ""
msgstr ""
"Kan geen verbinding maken met de lokale mDNS server. Is deze wel gestart?"
-#. Creating the options for the protocol
msgid "First name"
msgstr "Voornaam"
@@ -2903,6 +2979,11 @@ msgstr "Bonjour-protocol plug-in"
msgid "Purple Person"
msgstr "Purple mens"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "Localiteit"
+
msgid "Bonjour"
msgstr "Bonjour"
@@ -3058,6 +3139,7 @@ msgstr "Kies een chatgesprek voor het contact: %s"
msgid "Add to chat..."
msgstr "Toevoegen aan chatgesprek..."
+#. Global
msgid "Available"
msgstr "Beschikbaar"
@@ -3405,6 +3487,17 @@ msgstr ""
"Uw gekozen accountnaam is geweigerd door de server. Het bevat waarschijnlijk "
"onacceptabele tekens."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "De naam bestaat reeds"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Bijnaam"
+
msgid "Cannot change nick"
msgstr "Kan bijnaam niet veranderen"
@@ -3684,6 +3777,41 @@ msgstr "Ongeldige vraag van server"
msgid "SASL error"
msgstr "SASL-fout"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "Geen reden gegeven"
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Versie niet ondersteund"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"Kan geen verbinding maken met de server:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"Kan geen verbinding maken met de server:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "Kan verbinding niet initialiseren"
+
+msgid "Unable to create socket"
+msgstr "Kan geen socket aanmaken"
+
+msgid "Write error"
+msgstr "Schrijffout"
+
msgid "Full Name"
msgstr "Volledige naam"
@@ -3750,6 +3878,10 @@ msgstr "Client"
msgid "Operating System"
msgstr "Besturingssysteem"
+#, fuzzy
+msgid "Local Time"
+msgstr "Lokaal bestand:"
+
msgid "Last Activity"
msgstr "Laatste activiteit"
@@ -4082,9 +4214,6 @@ msgstr "Ruimtes zoeken"
msgid "You require encryption, but it is not available on this server."
msgstr "Je hebt encryptie nodig, maar het is niet mogelijk op deze server."
-msgid "Write error"
-msgstr "Schrijffout"
-
msgid "Ping timeout"
msgstr "Ping Verlopen"
@@ -4093,14 +4222,9 @@ msgstr "Leesfout"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"Kan geen verbinding maken met de server:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "Kan geen socket aanmaken"
msgid "Invalid XMPP ID"
msgstr "Ongeldig XMPP-ID"
@@ -4108,6 +4232,10 @@ msgstr "Ongeldig XMPP-ID"
msgid "Invalid XMPP ID. Domain must be set."
msgstr "Ongeldige XMPP ID. Domein moet ingesteld worden"
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Kan geen verbinding maken met de server."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "Registratie van %s@%s voltooid"
@@ -4198,6 +4326,12 @@ msgstr ""
msgid "Not Authorized"
msgstr "Geen toestemming"
+msgid "Mood"
+msgstr "Stemming"
+
+msgid "Now Listening"
+msgstr "Luistert nu"
+
msgid "Both"
msgstr "Beide"
@@ -4219,12 +4353,6 @@ msgstr "Niet"
msgid "Subscription"
msgstr "Abonnement"
-msgid "Mood"
-msgstr "Stemming"
-
-msgid "Now Listening"
-msgstr "Luistert nu"
-
msgid "Mood Text"
msgstr "Humeur-tekst"
@@ -4462,18 +4590,24 @@ msgstr "Kan gebruiker %s niet schoppen"
msgid "Unable to ping user %s"
msgstr "Kan gebruiker %s niet pingen"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr "Trillen niet mogelijk, omdat er niets bekend is over gebruiker %s."
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr "Trillen niet mogelijk, omdar gebruiker %s offline zou kunnen zijn."
-#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+#, fuzzy, c-format
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "Trillen niet mogelijk, omdat de gebruiker %s het niet ondersteund."
+#, c-format
+msgid "Buzzing %s..."
+msgstr "%s trillen..."
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
msgid "Buzz"
@@ -4483,9 +4617,36 @@ msgstr "Trill"
msgid "%s has buzzed you!"
msgstr "%s heeft je laten trillen!"
-#, c-format
-msgid "Buzzing %s..."
-msgstr "%s trillen..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "Kan bestand niet verzenden naar %s, ongeldige JID"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "Kan bestand niet verzenden naar %s, gebruiker is niet online"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr ""
+"Kan bestand niet verzenden naar %s, niet aangemeld bij gebruikers-"
+"aanwezigheid."
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "Registratie mislukt"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "Geef de bron van %s naar degene wie je een bestand wil sturen"
+
+msgid "Select a Resource"
+msgstr "Kies een bron"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "_Chat starten"
msgid "config: Configure a chat room."
msgstr "config: Chatruimte instellen"
@@ -4644,6 +4805,21 @@ msgstr "Fout bij meedoen aan chat: %s"
msgid "Error in chat %s"
msgstr "Fout in chat: %s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "Er is een fout opgetreden bij het openen van het bestand."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "Bestandsoverdracht mislukt"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Kan bestand '%s' niet openen: %s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4671,9 +4847,6 @@ msgstr ""
msgid "Please select the resource of %s to which you would like to send a file"
msgstr "Geef de bron van %s naar degene wie je een bestand wil sturen"
-msgid "Select a Resource"
-msgstr "Kies een bron"
-
msgid "Edit User Mood"
msgstr "Humeur instellen"
@@ -4708,9 +4881,6 @@ msgstr "Acties"
msgid "Select an action"
msgstr "Selecteer een actie"
-msgid "Unable to retrieve MSN Address Book"
-msgstr "Ophalen MSN Adressenlijst niet mogelijk"
-
#. 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
@@ -6499,7 +6669,7 @@ msgstr ""
"met een letter en slechts cijfers, letters en spaties bevatten, of slechts "
"nummers bevatten."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr "Ongeldige gebruikersnaam."
@@ -6515,7 +6685,7 @@ msgstr "Uw Account is momenteel afgesloten"
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "De AOL service is momenteel niet bereikbaar."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6709,7 +6879,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] "%hu bericht van %s is niet overgekomen om een onbekende reden."
msgstr[1] "%hu berichten van %s zijn niet overgekomen om een onbekende reden."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "Kan het bericht niet verzenden: %s"
@@ -7022,6 +7192,7 @@ msgstr "_Verbinden"
msgid "Get AIM Info"
msgstr "AIM-info ophalen"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "Opmerking bewerken"
@@ -7306,6 +7477,42 @@ msgstr "Bijwerken"
msgid "Could not change buddy information."
msgstr "Contactinformatie veranderen."
+msgid "Mobile"
+msgstr "Mobiel"
+
+msgid "Note"
+msgstr "Opmerking"
+
+# msgstr ""
+# "(Er is een fout opgetreden bij het ontvangen van het bericht. Of jij en %s "
+# "hebben verschillende coderingen geselecteerd of de andere persoon gebruikt "
+# "een chatprogramma met fouten.)"
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "pictogram"
+
+msgid "Change his/her memo as you like"
+msgstr ""
+
+#, fuzzy
+msgid "_Modify"
+msgstr "Bewerken"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "Bewerken"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "Server bezig"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
#, c-format
msgid "%u requires verification"
msgstr "%u vereist identificatie"
@@ -7621,6 +7828,13 @@ msgstr "<p><b>Geweldige patchschrijvers</b>:<br>\n"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<b>Verzonden</b>: %lu<br>\n"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<p><b>Oorspronkelijke auteur</b>:<br>\n"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr "<p><i>En, alle jongens in de achterkamer...</i><br>\n"
@@ -7646,6 +7860,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "Over OpenQ"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Adres bewerken"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7683,6 +7901,9 @@ msgstr "Server-notificatie weergeven"
msgid "Show server news"
msgstr "Server-nieuwe weergeven"
+msgid "Show chat room when msg comes"
+msgstr ""
+
msgid "Keep alive interval (seconds)"
msgstr "Behoud-interval (in seconden)"
@@ -7751,7 +7972,6 @@ msgid ""
"%s"
msgstr "Ongeldig antwoord-code, 0x%02X"
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "Kan geen verbinding maken."
@@ -8656,9 +8876,6 @@ msgstr "Organisatie"
msgid "Unit"
msgstr "Afdeling"
-msgid "Note"
-msgstr "Opmerking"
-
msgid "Join Chat"
msgstr "Chat openen"
@@ -9363,199 +9580,14 @@ msgid "Auth Domain"
msgstr "Domein"
#, c-format
-msgid "Looking up %s"
-msgstr "%s wordt opgezocht"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Verbinding met %s verbroken"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Aanmelding: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "Kan niet naar bestand %s schrijven."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "Kan het bestand %s niet lezen."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "Bericht te lang, laatste %s Bytes afgekort."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s is niet aangemeld."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "Waarschuwing van %s is niet toegestaan."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr ""
-"Een bericht is verloren gegaan. U overschreidt de snelheid van de server."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "Chatruimte in %s is niet beschikbaar."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "U verzend te snel berichten naar %s."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "Een Bericht van %s is niet overgekomen omdat het te groot was."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr ""
-"Een Bericht van %s is niet overgekomen omdat het te snel verzonden werd."
-
-#, c-format
-msgid "Failure."
-msgstr "Fout."
-
-#, c-format
-msgid "Too many matches."
-msgstr "Te veel overeenkomsten."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "Meer gegevens nodig."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "Profielen service is momenteel niet toegankelijk."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "Zoekfunctie e-mail beperkt."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "Sleutelwoord genegeerd."
-
-#, c-format
-msgid "No keywords."
-msgstr "Geen sleutelwoorden."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "Deze gebruiker heeft geen profiel."
-
-#, c-format
-msgid "Country not supported."
-msgstr "Land wordt niet ondersteund."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Onbekende Fout: %s."
-
-#, c-format
-msgid "Incorrect username or password."
-msgstr "Ongeldige gebruikersnaam of wachtwoord."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "De service is momenteel niet bereikbaar."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "Uw waarschuwingsniveau is momenteel te hoog om in te loggen."
-
-#, 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 ""
-"U hebt zich te snel aan en afgemeld. Wacht 10 Minuten en probeer het nog een "
-"keer."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "Onbekende aanmeldingsfout: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "Onbekende fout %d opgetreden. Info: %s"
-
-msgid "Invalid Groupname"
-msgstr "Ongeldige groep"
-
-msgid "Connection Closed"
-msgstr "Verbinding verbroken"
-
-msgid "Waiting for reply..."
-msgstr "Wacht op antwoord..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "TOC werkt weer. U kunt nu weer berichten versturen."
-
-msgid "Password Change Successful"
-msgstr "Wachtwoord succesvol veranderd"
-
-msgid "_Group:"
-msgstr "_Groep:"
-
-msgid "Get Dir Info"
-msgstr "Directory info ophalen"
-
-msgid "Set Dir Info"
-msgstr "Directory info instellen"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "Kon %s niet openen om naar te schrijven!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr ""
-"Bestandsoverdracht mislukt; de andere kant heeft waarschijnl;ijk afgebroken."
-
-msgid "Could not connect for transfer."
-msgstr "Kan niet verbinden voor overdracht."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr ""
-"Kon koptekst van bestand niet instellen. Het bestand zal niet verzonden "
-"worden."
-
-msgid "Save As..."
-msgstr "Opslaan als..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s vraagt aan %s om %d bestand te accepteren: %s (%.2f %s)%s%s"
-msgstr[1] "%s vraagt aan %s om %d bestanden te accepteren: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s vraagt u om een bestand te verzenden"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "TOC-protocol plug-in"
-
-#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
"%s verzond je een uitnodiging voor een webcam, wat nog niet wordt "
"ondersteund."
+msgid "Your SMS was not delivered"
+msgstr ""
+
msgid "Your Yahoo! message did not get sent."
msgstr "Uw Yahoo! bericht is niet verzonden."
@@ -10158,9 +10190,6 @@ msgstr "Niet storen"
msgid "Extended away"
msgstr "Uitgebreide weg"
-msgid "Mobile"
-msgstr "Mobiel"
-
msgid "Listening to music"
msgstr "Luisteren naar muziek"
@@ -10202,18 +10231,6 @@ msgstr "+++ %s is actief"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "Fout bij lezen van %s"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"Er is een fout opgetreden bij lezen van uw %s. Deze is niet geladen. Het "
-"oude bestand is verplaatst naar %s~."
-
msgid "Calculating..."
msgstr "Berekenen..."
@@ -10288,6 +10305,14 @@ msgstr "Fout bij schrijven naar %s: %s"
msgid "Unable to connect to %s: %s"
msgstr "Kan geen verbinding maken met %s: %s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+"Server vereist TLS/SSL voor aanmelding. Geen ondersteuning voor TLS/SSL "
+"gevonden."
+
#, c-format
msgid " - %s"
msgstr " - %s"
@@ -10321,6 +10346,18 @@ msgstr "Verbinding geweigerd."
msgid "Address already in use."
msgstr "Adres al in gebruik."
+#, c-format
+msgid "Error Reading %s"
+msgstr "Fout bij lezen van %s"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"Er is een fout opgetreden bij lezen van uw %s. Deze is niet geladen. Het "
+"oude bestand is verplaatst naar %s~."
+
msgid "Internet Messenger"
msgstr "Expresberichten"
@@ -10363,10 +10400,8 @@ msgstr "Nieuwe e-_mail-meldingen"
msgid "Use this buddy _icon for this account:"
msgstr "Dit contact_plaatje gebruiken voor dit account:"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s Opties"
+msgid "_Advanced"
+msgstr "_Geavanceerd"
msgid "Use GNOME Proxy Settings"
msgstr "Gebruik GNOME Proxy-instellingen"
@@ -10401,9 +10436,6 @@ msgstr "Als je zeer aandachtig kijkt"
msgid "you can see the butterflies mating"
msgstr "kun je de vlinders zien paren"
-msgid "Proxy Options"
-msgstr "Proxy-opties"
-
msgid "Proxy _type:"
msgstr "Proxy_type:"
@@ -10431,8 +10463,9 @@ msgstr "_Simpel"
msgid "Create _this new account on the server"
msgstr "_Dit account op de server aanmaken"
-msgid "_Advanced"
-msgstr "_Geavanceerd"
+#, fuzzy
+msgid "_Proxy"
+msgstr "Proxy"
msgid "Enabled"
msgstr "Ingeschakeld"
@@ -10508,6 +10541,17 @@ msgstr "_Info opzoeken"
msgid "I_M"
msgstr "_Bericht sturen"
+#, fuzzy
+msgid "_Audio Call"
+msgstr "_Chat toevoegen"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Video-chat"
+
msgid "_Send File..."
msgstr "Bestand _sturen"
@@ -10644,6 +10688,10 @@ msgstr "/Extra/_Contactalarm"
msgid "/Tools/_Certificates"
msgstr "/Extra/_Certificaten"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Extra/Smile_y"
+
msgid "/Tools/Plu_gins"
msgstr "/Extra/_Plug-ins"
@@ -10653,9 +10701,6 @@ msgstr "/Extra/_Voorkeuren"
msgid "/Tools/Pr_ivacy"
msgstr "/Extra/Pr_ivacy"
-msgid "/Tools/Smile_y"
-msgstr "/Extra/Smile_y"
-
msgid "/Tools/_File Transfers"
msgstr "/Extra/_Bestandsoverdrachten"
@@ -10773,8 +10818,8 @@ msgstr "Handmatig"
msgid "By status"
msgstr "Op status"
-msgid "By log size"
-msgstr "Op logboekgrootte"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10790,6 +10835,9 @@ msgstr "Verbinding herstellen"
msgid "Re-enable"
msgstr "Weer aanzetten"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr "Welkom terug!"
@@ -10880,6 +10928,9 @@ msgstr ""
msgid "A_lias:"
msgstr "A_lias:"
+msgid "_Group:"
+msgstr "_Groep:"
+
msgid "Auto_join when account becomes online."
msgstr "Automatisch deelnemen wanneer account online komt."
@@ -10934,14 +10985,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr "Contact uitnodigen in chatruimte"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Geef de bijnaam van de persoon die u wilt uitnodigen, eventueel met een "
-"uitnodigende tekst"
-
msgid "_Buddy:"
msgstr "_Contact:"
@@ -11016,6 +11059,22 @@ msgstr "/Gesprek/Opslaan _als..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Gesprek/_Opschonen"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Gesprek/_Meer"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Gesprek/_Meer"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Gesprek/_Meer"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Gesprek/Logboek _weergeven"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Gesprek/Bestand ver_zenden..."
@@ -11088,6 +11147,18 @@ msgstr "/Gesprek"
msgid "/Conversation/View Log"
msgstr "/Gesprek/Logboek weergeven"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Gesprek/Meer"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Gesprek/Logboek weergeven"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Gesprek/Meer"
+
msgid "/Conversation/Send File..."
msgstr "/Gesprek/Bestand verzenden..."
@@ -11274,6 +11345,9 @@ msgstr "artiest"
msgid "Ka-Hing Cheung"
msgstr "Ka-Hing Cheung"
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "ondersteuning"
@@ -11413,6 +11487,10 @@ msgstr "Georgisch"
msgid "Ubuntu Georgian Translators"
msgstr "Georgische vertalers van Ubuntu"
+#, fuzzy
+msgid "Khmer"
+msgstr "Anders"
+
msgid "Kannada"
msgstr "Kannada"
@@ -11434,6 +11512,10 @@ msgstr "Litouws"
msgid "Macedonian"
msgstr "Macedonisch"
+#, fuzzy
+msgid "Mongolian"
+msgstr "Macedonisch"
+
msgid "Bokmål Norwegian"
msgstr "Noors"
@@ -11551,7 +11633,24 @@ msgstr ""
"enige garantie.<BR><BR>"
#, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, fuzzy, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin op irc.freenode.net<BR><BR>"
+
+#, fuzzy, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin op irc.freenode.net<BR><BR>"
msgid "Current Developers"
@@ -11861,15 +11960,6 @@ msgstr "Het lettertype dat gebruikt wordt bij het typmelding."
msgid "Enable typing notification"
msgstr "Schakel typmelding in"
-msgid "_Copy Email Address"
-msgstr "E-mailadres _kopiëren"
-
-msgid "_Open Link in Browser"
-msgstr "Verwijzing _openen met webbrowser"
-
-msgid "_Copy Link Location"
-msgstr "Verwijzing _kopiëren"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12117,13 +12207,14 @@ msgstr "_Bekijk logboek-folder"
msgid "%s %s. Try `%s -h' for more information.\n"
msgstr "%s %s. Probeer '%s -h' voor meer informatie.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12145,13 +12236,14 @@ msgstr ""
" (kommagescheiden)te gebruiken account(s) aan)\n"
" -v, --version versie-info weergeven\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12210,11 +12302,27 @@ msgstr ""
msgid "Pidgin"
msgstr "Pidgin"
-msgid "Open All Messages"
-msgstr "Alle berichten openen"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Je hebt postl!</span>"
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "Berekenen..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -12245,6 +12353,27 @@ msgstr ""
"Kan handmatige browser niet starten omdat er geen correcte opdracht is "
"ingesteld."
+msgid "Open All Messages"
+msgstr "Alle berichten openen"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Je hebt postl!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "Nieuw contactalarm"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Je hebt postl!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "Onbekend bericht"
+
msgid "The following plugins will be unloaded."
msgstr "De volgende plug-ins zullen uitgeschakeld worden"
@@ -12293,6 +12422,10 @@ msgstr "<b>Details plug-in</b>"
msgid "Select a file"
msgstr "Kies een bestand"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Contactalarm bewerken"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "Wie alarmeren"
@@ -12363,6 +12496,50 @@ msgstr "_Herhalend"
msgid "Pounce Target"
msgstr "Alarmdoel"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "...start met typen"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "...pauzeert tijdens het typen"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "...zich aanmeldt"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s is weer actief (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "...van afwezigheid terugkeert "
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "Gestopt met typen"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "...zich afmeldt"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "...inactief wordt"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "Bij afwezigheid"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Een bericht versturen"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "Onbekend contactalarm. Rapporteer dit alstublieft!"
+
msgid "Smiley theme failed to unpack."
msgstr "Kan smileythema niet uitpakken."
@@ -12385,6 +12562,12 @@ msgstr "Sneltoetsen"
msgid "Cl_ose conversations with the Escape key"
msgstr "_Sluit gesprekken af met de Escape toets"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Contactenlijst"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "Systeemvakpictogram"
@@ -12495,9 +12678,6 @@ msgstr "Kan het programma voor proxy-instellingen niet starten."
msgid "Cannot start browser configuration program."
msgstr "Kan het programma voor browser-instellingen niet starten."
-msgid "ST_UN server:"
-msgstr "ST_UN-server:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">Bijvoorbeeld: stunserver.org</span>"
@@ -12522,6 +12702,10 @@ msgstr "_Beginpoort:"
msgid "_End port:"
msgstr "_Eindpoort:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr "Proxy-server &amp; browser"
@@ -12550,6 +12734,10 @@ msgstr "Proxy-server"
msgid "No proxy"
msgstr "Geen proxy"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "_Gebruiker:"
@@ -12708,12 +12896,12 @@ msgstr "Bij afwezigheid en inactiviteit"
msgid "Auto-away"
msgstr "Automatisch afwezig"
-msgid "Change status when _idle"
-msgstr "Status op afwezig zetten _wanneer ik inactief ben"
-
msgid "_Minutes before becoming idle:"
msgstr "_Minuten voor inactief worden:"
+msgid "Change status when _idle"
+msgstr "Status op afwezig zetten _wanneer ik inactief ben"
+
msgid "Change _status to:"
msgstr "_Status veranderen in: "
@@ -12863,6 +13051,12 @@ msgstr "Op_slaan & gebruiken"
msgid "Status for %s"
msgstr "Status van %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
msgid "Custom Smiley"
msgstr "Eigen smiley"
@@ -12872,16 +13066,16 @@ msgstr "Meer gegevens vereist"
msgid "Please provide a shortcut to associate with the smiley."
msgstr "Geef een snelkoppeling om te associëren met de smiley."
-msgid "Duplicate Shortcut"
-msgstr "Dubbele snelkoppeling"
-
+#, fuzzy, c-format
msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
+"A custom smiley for '%s' already exists. Please use a different shortcut."
msgstr ""
"Een eigen smiley voor de geselecteerde snelkoppeling bestaat al reeds. Geef "
"alsjeblieft een andere snelkoppeling."
+msgid "Duplicate Shortcut"
+msgstr "Dubbele snelkoppeling"
+
msgid "Please select an image for the smiley."
msgstr "Selecteer een afbeelding uit de lijst voor de smiley"
@@ -12891,16 +13085,22 @@ msgstr "Smiley bewerken"
msgid "Add Smiley"
msgstr "Smiley toevoegen"
-msgid "Smiley _Image"
-msgstr "_Smiley-afbeelding"
+#, fuzzy
+msgid "_Image:"
+msgstr "_Afbeelding"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr "Sneltoets smiley"
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "Snelkoppeling"
msgid "Smiley"
msgstr "Eigen smileys"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "Snelkoppeling"
+
msgid "Custom Smiley Manager"
msgstr "Eigen smileys beheren"
@@ -13027,6 +13227,16 @@ msgstr ""
"kan afbeelding '%s' niet laden: reden onbekend, waarschijnlijk een kapotte "
"afbeelding"
+#, fuzzy
+msgid "_Open Link"
+msgstr "Verwijzing _openen met:"
+
+msgid "_Copy Link Location"
+msgstr "Verwijzing _kopiëren"
+
+msgid "_Copy Email Address"
+msgstr "E-mailadres _kopiëren"
+
msgid "Save File"
msgstr "Bestand opslaan"
@@ -14028,9 +14238,6 @@ msgstr "Contactenlijst bovenop _houden:"
msgid "Only when docked"
msgstr "Alleen wanneer aangekoppeld"
-msgid "_Flash window when chat messages are received"
-msgstr "Venster laten _knipperen wanneer chatberichten worden ontvangen"
-
msgid "Windows Pidgin Options"
msgstr "Windows pidgin opties"
@@ -14078,6 +14285,189 @@ msgstr "Verstuur en ontvang ruwe XMPP stanza's."
msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr "Deze plug-in is handig voor het debuggen van XMPP servers of clienten."
+#~ msgid "Invite message"
+#~ msgstr "Uitnodiging"
+
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Geef de naam van de persoon die u wilt uitnodigen,\n"
+#~ "eventueel met een uitnodigende tekst."
+
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "Ophalen MSN Adressenlijst niet mogelijk"
+
+#~ msgid "Looking up %s"
+#~ msgstr "%s wordt opgezocht"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "Verbinding met %s verbroken"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Aanmelding: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "Kan niet naar bestand %s schrijven."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "Kan het bestand %s niet lezen."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "Bericht te lang, laatste %s Bytes afgekort."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s is niet aangemeld."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "Waarschuwing van %s is niet toegestaan."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr ""
+#~ "Een bericht is verloren gegaan. U overschreidt de snelheid van de server."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "Chatruimte in %s is niet beschikbaar."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "U verzend te snel berichten naar %s."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "Een Bericht van %s is niet overgekomen omdat het te groot was."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr ""
+#~ "Een Bericht van %s is niet overgekomen omdat het te snel verzonden werd."
+
+#~ msgid "Failure."
+#~ msgstr "Fout."
+
+#~ msgid "Too many matches."
+#~ msgstr "Te veel overeenkomsten."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "Meer gegevens nodig."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "Profielen service is momenteel niet toegankelijk."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "Zoekfunctie e-mail beperkt."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "Sleutelwoord genegeerd."
+
+#~ msgid "No keywords."
+#~ msgstr "Geen sleutelwoorden."
+
+#~ msgid "User has no directory information."
+#~ msgstr "Deze gebruiker heeft geen profiel."
+
+#~ msgid "Country not supported."
+#~ msgstr "Land wordt niet ondersteund."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Onbekende Fout: %s."
+
+#~ msgid "Incorrect username or password."
+#~ msgstr "Ongeldige gebruikersnaam of wachtwoord."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "De service is momenteel niet bereikbaar."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "Uw waarschuwingsniveau is momenteel te hoog om in te loggen."
+
+#~ 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 ""
+#~ "U hebt zich te snel aan en afgemeld. Wacht 10 Minuten en probeer het nog "
+#~ "een keer."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "Onbekende aanmeldingsfout: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "Onbekende fout %d opgetreden. Info: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "Ongeldige groep"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Verbinding verbroken"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "Wacht op antwoord..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "TOC werkt weer. U kunt nu weer berichten versturen."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "Wachtwoord succesvol veranderd"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Directory info ophalen"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Directory info instellen"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "Kon %s niet openen om naar te schrijven!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr ""
+#~ "Bestandsoverdracht mislukt; de andere kant heeft waarschijnl;ijk "
+#~ "afgebroken."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "Kan niet verbinden voor overdracht."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr ""
+#~ "Kon koptekst van bestand niet instellen. Het bestand zal niet verzonden "
+#~ "worden."
+
+#~ msgid "Save As..."
+#~ msgstr "Opslaan als..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s vraagt aan %s om %d bestand te accepteren: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s vraagt aan %s om %d bestanden te accepteren: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s vraagt u om een bestand te verzenden"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "TOC-protocol plug-in"
+
+#~ msgid "%s Options"
+#~ msgstr "%s Opties"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Proxy-opties"
+
+#~ msgid "By log size"
+#~ msgstr "Op logboekgrootte"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "Verwijzing _openen met webbrowser"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "ST_UN-server:"
+
+#~ msgid "Smiley _Image"
+#~ msgstr "_Smiley-afbeelding"
+
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "Sneltoets smiley"
+
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "Venster laten _knipperen wanneer chatberichten worden ontvangen"
+
#~ msgid ""
#~ "You may be disconnected shortly. You may want to use TOC until this is "
#~ "fixed. Check %s for updates."
diff --git a/po/nn.po b/po/nn.po
index 2436d13bb2..def06d21eb 100644
--- a/po/nn.po
+++ b/po/nn.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-22 11:04-0500\n"
+"POT-Creation-Date: 2009-04-30 10:39-0400\n"
"PO-Revision-Date: 2009-02-20 23:45+0100\n"
"Last-Translator: YS Landro <nynorsk@strilen.net>\n"
"Language-Team: \n"
@@ -596,19 +596,6 @@ msgstr ""
msgid "Send To"
msgstr "Send til"
-msgid "Invite message"
-msgstr "Invitasjonsmelding"
-
-msgid "Invite"
-msgstr "Inviter"
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Skriv inn namnet på brukaren du ønskjer å invitera.\n"
-"Du kan velja om du vil ha med ei invitasjonsmelding."
-
msgid "Conversation"
msgstr "Samtale"
@@ -867,6 +854,41 @@ msgstr "Alle samtaler"
msgid "System Log"
msgstr "Systemlogg"
+#, fuzzy
+msgid "Calling ... "
+msgstr "Reknar…"
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "Godta"
+
+msgid "Reject"
+msgstr "Avvis"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "Du har forlate kanalen %s%s"
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "E-postmeldingar"
@@ -901,6 +923,9 @@ msgstr "Hald fram"
msgid "IM"
msgstr "Lynmeldingar"
+msgid "Invite"
+msgstr "Inviter"
+
msgid "(none)"
msgstr "(ingen)"
@@ -1105,7 +1130,6 @@ msgstr "%s har gått vekk . (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s har sendt deg ei melding. (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "Ukjend varselhending. Rapporter feilen."
@@ -1516,6 +1540,28 @@ msgstr "GntLastlog"
msgid "Lastlog plugin."
msgstr "Lastlog-programtillegg."
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "Låtadresse"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "kontoar"
@@ -1616,13 +1662,6 @@ msgstr "Godtek du sertifikatet til %s?"
msgid "SSL Certificate Verification"
msgstr "SSL-sertifikatstadfesting"
-#. Number of actions
-msgid "Accept"
-msgstr "Godta"
-
-msgid "Reject"
-msgstr "Avvis"
-
msgid "_View Certificate..."
msgstr "Vis _sertifikat…"
@@ -1770,6 +1809,18 @@ msgstr "%s har gått ut av rommet."
msgid "%s left the room (%s)."
msgstr "%s har gått ut av rommet (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Inviter til konferanse"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Skriv inn namnet på brukaren du ønskjer å invitera. Du kan ta med ei valfri "
+"velkomstmelding."
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "Klarte ikkje å oppnå samband: %s"
@@ -2600,6 +2651,32 @@ msgstr "Lagra fråkopla meldingar som eit varsel"
msgid "Do not ask. Always save in pounce."
msgstr "Spør ikkje. Lagra alltid som eit varsel."
+#, fuzzy
+msgid "One Time Password"
+msgstr "Skriv inn passord"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2998,6 +3075,7 @@ msgstr "Vel eit praterom for vennen: %s"
msgid "Add to chat..."
msgstr "Legg til praterom…"
+#. Global
msgid "Available"
msgstr "Tilgjengeleg"
@@ -3344,6 +3422,17 @@ msgstr ""
"Tenaren avviste kontonamnet du valde. Det kan vera at det inneheld ugyldige "
"teikn."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "Prateromsnamnet er allereie i bruk"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Kallenamn"
+
msgid "Cannot change nick"
msgstr "Kan ikkje endra kallenamn"
@@ -3613,6 +3702,41 @@ msgstr "Ugyldig utfordring frå tenaren"
msgid "SASL error"
msgstr "SASL-feil"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "Gav ingen årsak"
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Versjonen er ikkje støtta"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"Klarte ikkje å laga eit samband til tenaren:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"Klarte ikkje å laga eit samband til tenaren:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "Klarte ikkje å setja i gang sambandet"
+
+msgid "Unable to create socket"
+msgstr "Klarte ikkje å laga endepunkt"
+
+msgid "Write error"
+msgstr "Skrivefeil"
+
msgid "Full Name"
msgstr "Fullt namn"
@@ -3679,6 +3803,10 @@ msgstr "Klient"
msgid "Operating System"
msgstr "Operativsystem"
+#, fuzzy
+msgid "Local Time"
+msgstr "Lokalfil:"
+
msgid "Last Activity"
msgstr "Siste aktivitet"
@@ -4010,9 +4138,6 @@ msgstr "Finn rom"
msgid "You require encryption, but it is not available on this server."
msgstr "Du krev kryptering som ikkje er tilgjengeleg på denne tenaren."
-msgid "Write error"
-msgstr "Skrivefeil"
-
msgid "Ping timeout"
msgstr "Tidsavbrot ping"
@@ -4021,14 +4146,9 @@ msgstr "Lesefeil"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"Klarte ikkje å laga eit samband til tenaren:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "Klarte ikkje å laga endepunkt"
msgid "Invalid XMPP ID"
msgstr "Ugyldig XMPP-id"
@@ -4036,6 +4156,10 @@ msgstr "Ugyldig XMPP-id"
msgid "Invalid XMPP ID. Domain must be set."
msgstr "Ulovleg XMPP-id. Domene må vera vald."
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Klarte ikkje å kopla til tenaren."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "Registreringa av %s@%s blei gjennomført"
@@ -4126,6 +4250,12 @@ msgstr "Tenaren støttar ikkje blokkering"
msgid "Not Authorized"
msgstr "Ikkje godkjent"
+msgid "Mood"
+msgstr "Sinnsstemning"
+
+msgid "Now Listening"
+msgstr "Lyttar"
+
msgid "Both"
msgstr "Begge"
@@ -4147,12 +4277,6 @@ msgstr "Ingen"
msgid "Subscription"
msgstr "Abonnement"
-msgid "Mood"
-msgstr "Sinnsstemning"
-
-msgid "Now Listening"
-msgstr "Lyttar"
-
msgid "Mood Text"
msgstr "Sinnsstemningstekst"
@@ -4390,18 +4514,24 @@ msgstr "Klarte ikkje å sparka ut brukaren %s"
msgid "Unable to ping user %s"
msgstr "Klarer ikkje å pinga brukaren %s"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr "Klarer ikkje å alarmera sidan ein ikkje veit noko om brukaren %s."
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr "Klarer ikkje å alarmera sidan brukaren %s kan vera fråkopla."
-#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+#, fuzzy, c-format
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "Klarer ikkje å alarmera fordi brukaren %s støttar ikkje dette."
+#, c-format
+msgid "Buzzing %s..."
+msgstr "Alarmerer %s…"
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
msgid "Buzz"
@@ -4411,9 +4541,34 @@ msgstr "Alarm"
msgid "%s has buzzed you!"
msgstr "%s har alarmert deg!"
-#, c-format
-msgid "Buzzing %s..."
-msgstr "Alarmerer %s…"
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "Klarte ikkje å senda fila til %s: ugyldig JID"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "Klarte ikkje å senda fila til %s: brukaren er ikkje tilkopla"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr "Klarte ikkje å senda fila til %s. Abonnerer ikkje på brukarnærvær"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "Registreringa feila"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "Vel kva for ressurs av %s du ønskjer å senda fila til"
+
+msgid "Select a Resource"
+msgstr "Vel ein ressurs"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "Start ein _prat"
msgid "config: Configure a chat room."
msgstr "config: Endra prateromsinnstillingane."
@@ -4568,6 +4723,21 @@ msgstr "Klarte ikkje å kopla til praterommet %s"
msgid "Error in chat %s"
msgstr "Feil i praterommet %s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "Fekk ikkje opna fila grunna feil."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "Filoverføringa feila"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Klarte ikkje å opna fila '%s': %s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4592,9 +4762,6 @@ msgstr "Klarte ikkje å senda fila til %s. Abonnerer ikkje på brukarnærvær"
msgid "Please select the resource of %s to which you would like to send a file"
msgstr "Vel kva for ressurs av %s du ønskjer å senda fila til"
-msgid "Select a Resource"
-msgstr "Vel ein ressurs"
-
msgid "Edit User Mood"
msgstr "Endra brukarsinnsstemning"
@@ -6383,7 +6550,7 @@ msgstr ""
"ein bokstav og berre innehalda bokstavar. tal og mellomrom, eller berre "
"innehalda tal."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr "Ugyldig rukarnamn."
@@ -6399,7 +6566,7 @@ msgstr "Kontoen din er for tida sperra for bruk."
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "AOL si lynmeldingsteneste er mellombels utilgjengeleg."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6584,7 +6751,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] "Du fekk ikkje %hu melding frå %s av uviss årsak."
msgstr[1] "Du fekk ikkje %hu meldingar frå %s av uviss årsak."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "Klarer ikkje å senda melding: %s"
@@ -7174,6 +7341,38 @@ msgstr "Oppdater"
msgid "Could not change buddy information."
msgstr "Klarte ikkje å endra venneopplysningane."
+msgid "Mobile"
+msgstr "Mobil"
+
+msgid "Note"
+msgstr "Notat"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "Venneikon"
+
+msgid "Change his/her memo as you like"
+msgstr ""
+
+#, fuzzy
+msgid "_Modify"
+msgstr "Endra"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "Endra"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "Tenaren er oppteken"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
#, c-format
msgid "%u requires verification"
msgstr "%u krev stadfesting"
@@ -7483,6 +7682,13 @@ msgstr "<p><b>Herlege lappeskrivarar</b>:<br>\n"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<b>Hyllest</b>: %lu<br>\n"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<p><b>Original forfattar</b>:<br>\n"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr "<p><i>Og alle gutane på bakrommet…</i><br>\n"
@@ -7508,6 +7714,10 @@ msgstr "Oppdater alle QQ Qun-romma"
msgid "About OpenQ"
msgstr "Om OpenQ"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Endra adressa"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7616,7 +7826,6 @@ msgstr ""
"Pålogginga gav ukjend feilkode (0x%02X):\n"
"%s"
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "Klarte ikkje å kopla til."
@@ -8519,9 +8728,6 @@ msgstr "Organisasjon"
msgid "Unit"
msgstr "Eining"
-msgid "Note"
-msgstr "Notat"
-
msgid "Join Chat"
msgstr "Bli med i praterom"
@@ -9222,194 +9428,14 @@ msgid "Auth Domain"
msgstr "Autentiseringsdomene"
#, c-format
-msgid "Looking up %s"
-msgstr "Slår opp %s"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Tilkoplinga mot %s feila"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Pålogging: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "Klarer ikkje å lagra fila %s."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "Klarer ikkje å lesa fila %s."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "Meldinga er for lang - dei siste %s bytane er klipte vekk."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s er ikkje pålogga no."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "Det er ikkje tillate å åtvara mot %s."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "Ei melding er blitt vraka - du går ut over tenaren si fartsgrense."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "Prat i %s er ikkje tilgjengeleg."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "Du sender meldingane for fort til %s."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "%s sendte deg ei melding som ikkje kom fram: ho var for stor."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "%s sendte deg ei melding som ikkje kom fram: ho var sendt for fort."
-
-#, c-format
-msgid "Failure."
-msgstr "Svikt."
-
-#, c-format
-msgid "Too many matches."
-msgstr "For mange treff."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "Treng fleire parametrar."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "Katalogtenesta er mellombels utilgjengeleg."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "E-postoppslag er avgrensa."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "Nøkkelord er ignorert."
-
-#, c-format
-msgid "No keywords."
-msgstr "Ingen nøkkelord."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "Brukaren har ingen katalogopplysningar."
-
-#, c-format
-msgid "Country not supported."
-msgstr "Land er ikkje støtta."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Ukjent svikt: %s."
-
-#, c-format
-msgid "Incorrect username or password."
-msgstr "Feil brukarnamn eller passord."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "Tenesta er mellombels utilgjengeleg."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "Åtvaringsnivået ditt er for tida for høgt til at du kan logga på."
-
-#, 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 kopla til og frå for ofte i løpet av kort tid. Vent i ti minutt og "
-"prøv igjen. Held du fram med å prøva, vil du måtta venta endå lenger."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "Det oppstod ein ukjent påloggingsfeil: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "Det oppstod ein ukjent feil, %d. Info: %s"
-
-msgid "Invalid Groupname"
-msgstr "Ugyldig gruppenamn"
-
-msgid "Connection Closed"
-msgstr "Sambandet er lukka"
-
-msgid "Waiting for reply..."
-msgstr "Ventar på svar…"
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "TOC er attende frå pausen sin. Du kan no senda meldingar igjen."
-
-msgid "Password Change Successful"
-msgstr "Passordet er endra"
-
-msgid "_Group:"
-msgstr "_Gruppe:"
-
-msgid "Get Dir Info"
-msgstr "Hent kataloginformasjon"
-
-msgid "Set Dir Info"
-msgstr "Vel kataloginformasjon"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "Fekk ikkje opna %s for skriving"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "Filoverføringa feila. Truleg avbroten av den andre parten."
-
-msgid "Could not connect for transfer."
-msgstr "Fekk ikkje kopla til for overføring."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "Klarte ikkje å skriva filhovudet. Fila vil ikkje bli overført."
-
-msgid "Save As..."
-msgstr "Lagra som…"
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s spør %s om å godta %d fil: %s (%.2f %s)%s%s"
-msgstr[1] "%s spør %s om å godta %d filer: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s spør deg om å senda dei ei fil"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "TOC-protokolltillegg"
-
-#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
"%s har sendt deg ein nettkamerainvitasjon. Denne funksjonen er enno ikkje "
"støtta."
+msgid "Your SMS was not delivered"
+msgstr ""
+
msgid "Your Yahoo! message did not get sent."
msgstr "Yahoo!-meldinga di blei ikkje sendt."
@@ -10008,9 +10034,6 @@ msgstr "Ikkje forstyrr meg"
msgid "Extended away"
msgstr "Utvida vekke"
-msgid "Mobile"
-msgstr "Mobil"
-
msgid "Listening to music"
msgstr "Lyttar til musikk"
@@ -10052,18 +10075,6 @@ msgstr "%s vart verksam igjen"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "Klarte ikkje å lesa %s"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"Ein feil oppstod under lesinga av %s. Dei er ikkje blitt lasta, og den gamle "
-"fila har fått namnet %s~."
-
msgid "Calculating..."
msgstr "Reknar…"
@@ -10138,6 +10149,12 @@ msgstr "Klarte ikkje å skriva frå %s: %s"
msgid "Unable to connect to %s: %s"
msgstr "Klarte ikkje å kopla til %s: %s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr "Tenaren krev TLS/SSL for pålogging. Fann inga TLS/SSL-støtte."
+
#, c-format
msgid " - %s"
msgstr " - %s"
@@ -10171,6 +10188,18 @@ msgstr "Tilkoplinga blei avvist."
msgid "Address already in use."
msgstr "Adressa er allereie i bruk."
+#, c-format
+msgid "Error Reading %s"
+msgstr "Klarte ikkje å lesa %s"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"Ein feil oppstod under lesinga av %s. Dei er ikkje blitt lasta, og den gamle "
+"fila har fått namnet %s~."
+
msgid "Internet Messenger"
msgstr "Lynmeldingsklient"
@@ -10213,10 +10242,8 @@ msgstr "Varsling av ny _e-post"
msgid "Use this buddy _icon for this account:"
msgstr "Bruk dette venne-_ikonet for denne kontoen:"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s-val"
+msgid "_Advanced"
+msgstr "A_vansert"
msgid "Use GNOME Proxy Settings"
msgstr "Bruk GNOME mellomlagerinnstillingar"
@@ -10251,9 +10278,6 @@ msgstr "Om du verkeleg ser godt etter"
msgid "you can see the butterflies mating"
msgstr "kan du sjå sommarfuglane kurtisera"
-msgid "Proxy Options"
-msgstr "Mellomtenarval"
-
msgid "Proxy _type:"
msgstr "_Mellomtenartype:"
@@ -10281,8 +10305,9 @@ msgstr "_Grunnleggjande"
msgid "Create _this new account on the server"
msgstr "Opprett denne _nye kontoen på tenaren"
-msgid "_Advanced"
-msgstr "A_vansert"
+#, fuzzy
+msgid "_Proxy"
+msgstr "Mellomlager"
msgid "Enabled"
msgstr "I bruk"
@@ -10359,6 +10384,17 @@ msgstr "Hent _info"
msgid "I_M"
msgstr "_Lynmelding"
+#, fuzzy
+msgid "_Audio Call"
+msgstr "Legg til _praterom"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Videoprat"
+
msgid "_Send File..."
msgstr "_Send fil…"
@@ -10493,6 +10529,10 @@ msgstr "/Verktøy/Venne_varsling"
msgid "/Tools/_Certificates"
msgstr "/Verktøy/_Sertifikat"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Verktøy/Smile_fjes"
+
msgid "/Tools/Plu_gins"
msgstr "/Verktøy/Program_tillegg"
@@ -10502,9 +10542,6 @@ msgstr "/Verktøy/_Innstillingar"
msgid "/Tools/Pr_ivacy"
msgstr "/Verktøy/_Personvern"
-msgid "/Tools/Smile_y"
-msgstr "/Verktøy/Smile_fjes"
-
msgid "/Tools/_File Transfers"
msgstr "/Verktøy/_Filoverføringar"
@@ -10622,8 +10659,8 @@ msgstr "Manuelt"
msgid "By status"
msgstr "Etter status"
-msgid "By log size"
-msgstr "Etter loggstorleiken"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10639,6 +10676,9 @@ msgstr "Kopla til att"
msgid "Re-enable"
msgstr "Slå på att "
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr "Velkomen tilbake"
@@ -10725,6 +10765,9 @@ msgstr ""
msgid "A_lias:"
msgstr "Al_ias:"
+msgid "_Group:"
+msgstr "_Gruppe:"
+
msgid "Auto_join when account becomes online."
msgstr "Bli automatisk _med når kontoen koplar seg til att."
@@ -10776,14 +10819,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr "Inviter venn til praterommet"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Skriv inn namnet på brukaren du ønskjer å invitera. Du kan ta med ei valfri "
-"velkomstmelding."
-
msgid "_Buddy:"
msgstr "_Venn:"
@@ -10858,6 +10893,22 @@ msgstr "/Samtale/Lagra _som…"
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Samtale/T_øm skjermen"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Samtale/_Meir"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Samtale/_Meir"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Samtale/_Meir"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Samtale/Vis l_ogg"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Samtale/S_end fil…"
@@ -10930,6 +10981,18 @@ msgstr "/Samtale"
msgid "/Conversation/View Log"
msgstr "/Samtale/Vis logg"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Samtale/Meir"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Samtale/Vis logg"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Samtale/Meir"
+
msgid "/Conversation/Send File..."
msgstr "/Samtale/Send fil…"
@@ -11112,6 +11175,9 @@ msgstr "kunstnar"
msgid "Ka-Hing Cheung"
msgstr "Ka-Hing Cheung"
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "brukarstøtte"
@@ -11252,6 +11318,10 @@ msgstr "Georgisk"
msgid "Ubuntu Georgian Translators"
msgstr "Ubuntu georgisk-omsetjarar"
+#, fuzzy
+msgid "Khmer"
+msgstr "Anna"
+
msgid "Kannada"
msgstr "Kannada"
@@ -11718,15 +11788,6 @@ msgstr "Skrifttypen som skal nyttast ved skrivevarsel"
msgid "Enable typing notification"
msgstr "Slå på skrivevarsel"
-msgid "_Copy Email Address"
-msgstr "_Kopier e-postadressa"
-
-msgid "_Open Link in Browser"
-msgstr "_Opna lenkja i nettlesar"
-
-msgid "_Copy Link Location"
-msgstr "_Kopier lenkje"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -11973,13 +12034,14 @@ msgstr "_Bla i loggmappa"
msgid "%s %s. Try `%s -h' for more information.\n"
msgstr "%s %s. Prøv `%s -h' for meir informasjon.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12003,13 +12065,14 @@ msgstr ""
" Utan denne vil berre den første kontoen bli teken i "
"bruk). -v, --version vis noverande versjon og avslutt\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12069,12 +12132,23 @@ msgstr "Pidgin"
msgid "Exiting because another libpurple client is already running.\n"
msgstr "Avsluttar sidan en annan libpurple-klient allereie kjører.\n"
-msgid "Open All Messages"
-msgstr "Opna alle meldingar"
+msgid "/_Media"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "Reknar…"
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
msgstr ""
-"<span weight=\"bold\" size=\"larger\">Du har fått e-postmeldingar</span>"
#, c-format
msgid "%s has %d new message."
@@ -12103,6 +12177,29 @@ msgid ""
"The 'Manual' browser command has been chosen, but no command has been set."
msgstr "'Manuell' nettlesarkommando er vald, men ingen kommando er brukt."
+msgid "Open All Messages"
+msgstr "Opna alle meldingar"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr ""
+"<span weight=\"bold\" size=\"larger\">Du har fått e-postmeldingar</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "Nytt vennevarsel"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr ""
+"<span weight=\"bold\" size=\"larger\">Du har fått e-postmeldingar</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "Ukjend melding"
+
msgid "The following plugins will be unloaded."
msgstr "Dei følgjande programtillegga vil bli lasta ut."
@@ -12151,6 +12248,10 @@ msgstr "<b>Programtilleggsdetaljar</b>"
msgid "Select a file"
msgstr "Vel ei fil"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Endra vennevarsel"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "Varsling for"
@@ -12221,6 +12322,50 @@ msgstr "_Gjentakande"
msgid "Pounce Target"
msgstr "Varslingsmål"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "Begynner å skriva"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "Tek pause frå skrivinga"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "Loggar på"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s er ikkje uverksam lenger (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "Kjem attende"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "Stoppa å skriva"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "Loggar av"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "Blir uverksam"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "Når vekke"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Send ei melding"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "Ukjend varselhending. Rapporter feilen."
+
msgid "Smiley theme failed to unpack."
msgstr "Feil under utpakkinga av smilefjestemaet."
@@ -12243,6 +12388,12 @@ msgstr "Tastatursnarvegar"
msgid "Cl_ose conversations with the Escape key"
msgstr "L_ukk samtaler med Escape-tasten"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Venneliste"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "Systempanelikon"
@@ -12353,9 +12504,6 @@ msgstr "Klarte ikkje å starta innstillingsprogrammet til mellomlageret."
msgid "Cannot start browser configuration program."
msgstr "Klarer ikkje å starta nettlesaren sitt innstillingsprogram."
-msgid "ST_UN server:"
-msgstr "ST_UN-tenar:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">Døme: stunserver.org</span>"
@@ -12380,6 +12528,10 @@ msgstr "_Startport:"
msgid "_End port:"
msgstr "Sluttp_ort:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr "Mellomtenar &amp; nettlesar"
@@ -12570,12 +12722,12 @@ msgstr "Både når vekke og uverksam"
msgid "Auto-away"
msgstr "Automatisk vekke"
-msgid "Change status when _idle"
-msgstr "_Endra tilstand når uverksam"
-
msgid "_Minutes before becoming idle:"
msgstr "_Minutt før ein blir uverksam:"
+msgid "Change status when _idle"
+msgstr "_Endra tilstand når uverksam"
+
msgid "Change _status to:"
msgstr "Endra _tilstand til:"
@@ -12723,6 +12875,12 @@ msgstr "L_agra og bruk"
msgid "Status for %s"
msgstr "Status for %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
msgid "Custom Smiley"
msgstr "Tilpassa smilefjes"
@@ -12732,16 +12890,16 @@ msgstr "Treng fleire opplysningar"
msgid "Please provide a shortcut to associate with the smiley."
msgstr "Før opp ein snarveg knytt til smilefjeset."
-msgid "Duplicate Shortcut"
-msgstr "Duplisert snarveg"
-
+#, fuzzy, c-format
msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
+"A custom smiley for '%s' already exists. Please use a different shortcut."
msgstr ""
"Det finst allereie eit tilpassa smilefjes til denne snarvegen. Vel ein annan "
"snarveg."
+msgid "Duplicate Shortcut"
+msgstr "Duplisert snarveg"
+
msgid "Please select an image for the smiley."
msgstr "Vel eit bilete til smilefjeset."
@@ -12751,16 +12909,22 @@ msgstr "Endra smilefjes"
msgid "Add Smiley"
msgstr "Legg til smilefjes"
-msgid "Smiley _Image"
-msgstr "Smilefjesbilete"
+#, fuzzy
+msgid "_Image:"
+msgstr "_Bilete"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr "_Smilefjessnarveg"
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "Snarveg"
msgid "Smiley"
msgstr "Smilefjes"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "Snarveg"
+
msgid "Custom Smiley Manager"
msgstr "Tilpassa smilefjesbehandling"
@@ -12885,6 +13049,16 @@ msgstr ""
"Klarte ikkje å lasta biletet '%s': grunnen er ikkje kjend, men er truleg "
"grunna ei øydelagt biletfil"
+#, fuzzy
+msgid "_Open Link"
+msgstr "Opna _lenkje i:"
+
+msgid "_Copy Link Location"
+msgstr "_Kopier lenkje"
+
+msgid "_Copy Email Address"
+msgstr "_Kopier e-postadressa"
+
msgid "Save File"
msgstr "Lagra fil"
@@ -13900,6 +14074,177 @@ msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr ""
"Dette programtillegget er nyttig ved feilsøking av XMPP-tenarar og -klientar."
+#~ msgid "Invite message"
+#~ msgstr "Invitasjonsmelding"
+
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Skriv inn namnet på brukaren du ønskjer å invitera.\n"
+#~ "Du kan velja om du vil ha med ei invitasjonsmelding."
+
+#~ msgid "Looking up %s"
+#~ msgstr "Slår opp %s"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "Tilkoplinga mot %s feila"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Pålogging: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "Klarer ikkje å lagra fila %s."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "Klarer ikkje å lesa fila %s."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "Meldinga er for lang - dei siste %s bytane er klipte vekk."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s er ikkje pålogga no."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "Det er ikkje tillate å åtvara mot %s."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr "Ei melding er blitt vraka - du går ut over tenaren si fartsgrense."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "Prat i %s er ikkje tilgjengeleg."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "Du sender meldingane for fort til %s."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "%s sendte deg ei melding som ikkje kom fram: ho var for stor."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr "%s sendte deg ei melding som ikkje kom fram: ho var sendt for fort."
+
+#~ msgid "Failure."
+#~ msgstr "Svikt."
+
+#~ msgid "Too many matches."
+#~ msgstr "For mange treff."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "Treng fleire parametrar."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "Katalogtenesta er mellombels utilgjengeleg."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "E-postoppslag er avgrensa."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "Nøkkelord er ignorert."
+
+#~ msgid "No keywords."
+#~ msgstr "Ingen nøkkelord."
+
+#~ msgid "User has no directory information."
+#~ msgstr "Brukaren har ingen katalogopplysningar."
+
+#~ msgid "Country not supported."
+#~ msgstr "Land er ikkje støtta."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Ukjent svikt: %s."
+
+#~ msgid "Incorrect username or password."
+#~ msgstr "Feil brukarnamn eller passord."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "Tenesta er mellombels utilgjengeleg."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "Åtvaringsnivået ditt er for tida for høgt til at du kan logga på."
+
+#~ 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 kopla til og frå for ofte i løpet av kort tid. Vent i ti minutt og "
+#~ "prøv igjen. Held du fram med å prøva, vil du måtta venta endå lenger."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "Det oppstod ein ukjent påloggingsfeil: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "Det oppstod ein ukjent feil, %d. Info: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "Ugyldig gruppenamn"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Sambandet er lukka"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "Ventar på svar…"
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "TOC er attende frå pausen sin. Du kan no senda meldingar igjen."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "Passordet er endra"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Hent kataloginformasjon"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Vel kataloginformasjon"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "Fekk ikkje opna %s for skriving"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr "Filoverføringa feila. Truleg avbroten av den andre parten."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "Fekk ikkje kopla til for overføring."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "Klarte ikkje å skriva filhovudet. Fila vil ikkje bli overført."
+
+#~ msgid "Save As..."
+#~ msgstr "Lagra som…"
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s spør %s om å godta %d fil: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s spør %s om å godta %d filer: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s spør deg om å senda dei ei fil"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "TOC-protokolltillegg"
+
+#~ msgid "%s Options"
+#~ msgstr "%s-val"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Mellomtenarval"
+
+#~ msgid "By log size"
+#~ msgstr "Etter loggstorleiken"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_Opna lenkja i nettlesar"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "ST_UN-tenar:"
+
+#~ msgid "Smiley _Image"
+#~ msgstr "Smilefjesbilete"
+
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "_Smilefjessnarveg"
+
#~ msgid "Unable to retrieve MSN Address Book"
#~ msgstr "Klarer ikkje å hente MSN-adresseboka"
diff --git a/po/oc.po b/po/oc.po
index 0667d1505e..9912e9dea2 100644
--- a/po/oc.po
+++ b/po/oc.po
@@ -17,7 +17,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
+"POT-Creation-Date: 2009-04-30 10:39-0400\n"
"PO-Revision-Date: 2008-05-09 01:31+0200\n"
"Last-Translator: Éric Boumaour <zongo_fr@users.sourceforge.net>\n"
"Language-Team: fr <fr@li.org>\n"
@@ -41,7 +41,7 @@ msgid ""
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -577,18 +577,6 @@ msgstr ""
msgid "Send To"
msgstr ""
-#, fuzzy
-msgid "Invite message"
-msgstr "Messatges enviats"
-
-msgid "Invite"
-msgstr "Convidar"
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-
msgid "Conversation"
msgstr ""
@@ -829,6 +817,40 @@ msgstr ""
msgid "System Log"
msgstr ""
+#, fuzzy
+msgid "Calling ... "
+msgstr "A calcular..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "Acceptar"
+
+msgid "Reject"
+msgstr ""
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+msgid "You have rejected the call."
+msgstr ""
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "Messatges electronics"
@@ -863,6 +885,9 @@ msgstr "Contunhar"
msgid "IM"
msgstr ""
+msgid "Invite"
+msgstr "Convidar"
+
msgid "(none)"
msgstr "(pas cap)"
@@ -1059,7 +1084,6 @@ msgstr ""
msgid "%s has sent you a message. (%s)"
msgstr ""
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr ""
@@ -1105,7 +1129,6 @@ msgstr ""
msgid "Change status to"
msgstr ""
-#. Conversations
msgid "Conversations"
msgstr ""
@@ -1416,7 +1439,6 @@ msgid ""
"conversation into the current conversation."
msgstr ""
-#, c-format
msgid "Online"
msgstr "En linha"
@@ -1460,6 +1482,28 @@ msgstr ""
msgid "Lastlog plugin."
msgstr ""
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "comptes"
@@ -1558,13 +1602,6 @@ msgstr ""
msgid "SSL Certificate Verification"
msgstr ""
-#. Number of actions
-msgid "Accept"
-msgstr "Acceptar"
-
-msgid "Reject"
-msgstr ""
-
msgid "_View Certificate..."
msgstr ""
@@ -1697,6 +1734,16 @@ msgstr ""
msgid "%s left the room (%s)."
msgstr ""
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Convidar"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+
#, c-format
msgid "Failed to get connection: %s"
msgstr ""
@@ -1818,7 +1865,6 @@ msgstr ""
msgid "Transfer of file %s complete"
msgstr ""
-#, c-format
msgid "File transfer complete"
msgstr ""
@@ -1826,7 +1872,6 @@ msgstr ""
msgid "You canceled the transfer of %s"
msgstr ""
-#, c-format
msgid "File transfer cancelled"
msgstr ""
@@ -2011,7 +2056,6 @@ msgstr ""
msgid "You are using %s, but this plugin requires %s."
msgstr ""
-#, c-format
msgid "This plugin has not defined an ID."
msgstr ""
@@ -2468,6 +2512,32 @@ msgstr ""
msgid "Do not ask. Always save in pounce."
msgstr ""
+#, fuzzy
+msgid "One Time Password"
+msgstr "Picatz lo mot de pas"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2666,7 +2736,6 @@ msgid ""
"Unable to establish connection with the local mDNS server. Is it running?"
msgstr ""
-#. Creating the options for the protocol
msgid "First name"
msgstr "Pichon nom"
@@ -2698,6 +2767,10 @@ msgstr ""
msgid "Purple Person"
msgstr ""
+#. Creating the options for the protocol
+msgid "Local Port"
+msgstr ""
+
msgid "Bonjour"
msgstr ""
@@ -2853,13 +2926,13 @@ msgstr ""
msgid "Add to chat..."
msgstr ""
+#. Global
msgid "Available"
msgstr "Disponible"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "Absent(a)"
@@ -3196,6 +3269,17 @@ msgid ""
"invalid characters."
msgstr ""
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr ""
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Escais"
+
msgid "Cannot change nick"
msgstr ""
@@ -3424,6 +3508,33 @@ msgstr ""
msgid "SASL error"
msgstr ""
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+msgid "No session ID given"
+msgstr ""
+
+msgid "Unsupported version of BOSH protocol"
+msgstr ""
+
+msgid "Unable to establish a connection with the server"
+msgstr ""
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+
+msgid "Unable to establish SSL connection"
+msgstr ""
+
+msgid "Unable to create socket"
+msgstr ""
+
+msgid "Write error"
+msgstr ""
+
msgid "Full Name"
msgstr "Nom complet"
@@ -3488,6 +3599,10 @@ msgstr ""
msgid "Operating System"
msgstr "Sistèma d'explotacion"
+#, fuzzy
+msgid "Local Time"
+msgstr "Fichièr local :"
+
msgid "Last Activity"
msgstr ""
@@ -3694,7 +3809,6 @@ msgstr ""
msgid "Extended Away"
msgstr ""
-#, c-format
msgid "Do Not Disturb"
msgstr ""
@@ -3816,9 +3930,6 @@ msgstr ""
msgid "You require encryption, but it is not available on this server."
msgstr ""
-msgid "Write error"
-msgstr ""
-
msgid "Ping timeout"
msgstr ""
@@ -3827,11 +3938,8 @@ msgstr ""
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
-msgstr ""
-
-msgid "Unable to create socket"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
msgid "Invalid XMPP ID"
@@ -3840,6 +3948,9 @@ msgstr ""
msgid "Invalid XMPP ID. Domain must be set."
msgstr ""
+msgid "Malformed BOSH Connect Server"
+msgstr ""
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr ""
@@ -3924,9 +4035,18 @@ msgstr ""
msgid "Re-initializing Stream"
msgstr ""
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr ""
+msgid "Mood"
+msgstr ""
+
+msgid "Now Listening"
+msgstr ""
+
msgid "Both"
msgstr "Los dos"
@@ -3948,12 +4068,6 @@ msgstr "Pas cap"
msgid "Subscription"
msgstr ""
-msgid "Mood"
-msgstr ""
-
-msgid "Now Listening"
-msgstr ""
-
msgid "Mood Text"
msgstr ""
@@ -4192,15 +4306,21 @@ msgid "Unable to ping user %s"
msgstr ""
#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+msgid "Unable to buzz, because there is nothing known about %s."
+msgstr ""
+
+#, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr ""
#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr ""
#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+msgid "Buzzing %s..."
msgstr ""
#. Yahoo only supports one attention command: the 'buzz'.
@@ -4213,7 +4333,31 @@ msgid "%s has buzzed you!"
msgstr ""
#, c-format
-msgid "Buzzing %s..."
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr ""
+
+#, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr ""
+
+#, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr ""
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "L'autentificacion a abocat"
+
+#, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr ""
+
+msgid "Select a Resource"
+msgstr ""
+
+msgid "Initiate Media"
msgstr ""
msgid "config: Configure a chat room."
@@ -4361,6 +4505,19 @@ msgstr ""
msgid "Error in chat %s"
msgstr ""
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr ""
+
+msgid "Transfer was closed."
+msgstr ""
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Impossible de dobrir le fichièr '%s' : %s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4384,9 +4541,6 @@ msgstr ""
msgid "Please select the resource of %s to which you would like to send a file"
msgstr ""
-msgid "Select a Resource"
-msgstr ""
-
msgid "Edit User Mood"
msgstr ""
@@ -4419,7 +4573,17 @@ msgstr "Accions"
msgid "Select an action"
msgstr ""
-msgid "Unable to retrieve MSN Address Book"
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr ""
+
+msgid "Buddy Add error"
+msgstr ""
+
+msgid "The username specified does not exist."
msgstr ""
#, c-format
@@ -4646,7 +4810,6 @@ msgstr ""
msgid "Passport account not yet verified"
msgstr ""
-#, c-format
msgid "Passport account suspended"
msgstr ""
@@ -4736,6 +4899,13 @@ msgstr ""
msgid "Page"
msgstr "Pagina"
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "Professional"
+
msgid "Has you"
msgstr ""
@@ -4772,6 +4942,13 @@ msgstr "Artista"
msgid "Album"
msgstr "Albom"
+#, fuzzy
+msgid "Game Title"
+msgstr "Títol"
+
+msgid "Office Title"
+msgstr ""
+
msgid "Set Friendly Name..."
msgstr ""
@@ -4958,7 +5135,7 @@ msgid ""
"does not exist."
msgstr ""
-msgid "Profile URL"
+msgid "View web profile"
msgstr ""
#. *< type
@@ -5187,19 +5364,15 @@ msgstr ""
msgid "Do you want to delete this buddy from your address book as well?"
msgstr ""
-#. only notify the user about problems adding to the friends list
-#. * maybe we should do something else for other lists, but it probably
-#. * won't cause too many problems if we just ignore it
-#, c-format
-msgid "Unable to add \"%s\"."
-msgstr ""
-
msgid "The username specified is invalid."
msgstr ""
msgid "This Hotmail account may not be active."
msgstr ""
+msgid "Profile URL"
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5213,15 +5386,11 @@ msgstr ""
msgid "MSN Protocol Plugin"
msgstr ""
-msgid "Missing Cipher"
-msgstr ""
-
-msgid "The RC4 cipher could not be found"
+#, c-format
+msgid "No such user: %s"
msgstr ""
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
+msgid "User lookup"
msgstr ""
msgid "Reading challenge"
@@ -5233,11 +5402,18 @@ msgstr ""
msgid "Logging in"
msgstr ""
-#, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] ""
-msgstr[1] ""
+msgid "MySpaceIM - No Username Set"
+msgstr ""
+
+msgid "You appear to have no MySpace username."
+msgstr ""
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr ""
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr "Connectat"
#. Can't write _()'d strings in array initializers. Workaround.
msgid "New mail messages"
@@ -5258,13 +5434,20 @@ msgstr ""
msgid "MySpace"
msgstr ""
-msgid "MySpaceIM - No Username Set"
+msgid "IM Friends"
msgstr ""
-msgid "You appear to have no MySpace username."
-msgstr ""
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+msgstr[1] ""
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgid "Add contacts from server"
msgstr ""
#. The session is now set up, ready to be connected. This emits the
@@ -5288,58 +5471,46 @@ msgstr ""
msgid "MySpaceIM Error"
msgstr ""
-msgid "Failed to add buddy"
+msgid "Invalid input condition"
msgstr ""
-msgid "'addbuddy' command failed."
+msgid "Read buffer full (2)"
msgstr ""
-msgid "persist command failed"
+msgid "Unparseable message"
msgstr ""
#, c-format
-msgid "No such user: %s"
-msgstr ""
-
-msgid "User lookup"
+msgid "Couldn't connect to host: %s (%d)"
msgstr ""
-msgid "Failed to remove buddy"
+msgid "Failed to add buddy"
msgstr ""
-msgid "'delbuddy' command failed"
+msgid "'addbuddy' command failed."
msgstr ""
-msgid "blocklist command failed"
+msgid "persist command failed"
msgstr ""
-msgid "Invalid input condition"
+msgid "Failed to remove buddy"
msgstr ""
-msgid "Read buffer full (2)"
+msgid "'delbuddy' command failed"
msgstr ""
-msgid "Unparseable message"
+msgid "blocklist command failed"
msgstr ""
-#, c-format
-msgid "Couldn't connect to host: %s (%d)"
+msgid "Missing Cipher"
msgstr ""
-msgid "IM Friends"
+msgid "The RC4 cipher could not be found"
msgstr ""
-#, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "Add contacts from server"
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
msgstr ""
msgid "Add friends from MySpace.com"
@@ -5382,9 +5553,6 @@ msgstr ""
msgid "User"
msgstr "Utilizaire"
-msgid "Profile"
-msgstr "Perfil"
-
msgid "Headline"
msgstr ""
@@ -5397,29 +5565,29 @@ msgstr ""
msgid "Client Version"
msgstr ""
-#. Protocol won't log in now without a username set.. Disconnect
-msgid "No username set"
+msgid "MySpaceIM - Username Available"
msgstr ""
-msgid "MySpaceIM - Please Set a Username"
+msgid "This username is available. Would you like to set it?"
msgstr ""
-msgid "Please enter a username to check its availability:"
+msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr ""
-msgid "MySpaceIM - Username Available"
+msgid "MySpaceIM - Please Set a Username"
msgstr ""
-msgid "This username is available. Would you like to set it?"
+msgid "This username is unavailable."
msgstr ""
-msgid "ONCE SET, THIS CANNOT BE CHANGED!"
+msgid "Please try another username:"
msgstr ""
-msgid "This username is unavailable."
+#. Protocol won't log in now without a username set.. Disconnect
+msgid "No username set"
msgstr ""
-msgid "Please try another username:"
+msgid "Please enter a username to check its availability:"
msgstr ""
#. TODO: icons for each zap
@@ -5793,7 +5961,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr ""
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr ""
@@ -6048,23 +6215,18 @@ msgstr "Aparelh de fotografiar"
msgid "Screen Sharing"
msgstr "Nom d'utilisateur"
-#, c-format
msgid "Free For Chat"
msgstr ""
-#, c-format
msgid "Not Available"
msgstr "Pas disponible"
-#, c-format
msgid "Occupied"
msgstr ""
-#, c-format
msgid "Web Aware"
msgstr ""
-#, c-format
msgid "Invisible"
msgstr "Invisible"
@@ -6106,7 +6268,7 @@ msgid ""
"only letters, numbers and spaces, or contain only numbers."
msgstr ""
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr ""
@@ -6122,7 +6284,7 @@ msgstr ""
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr ""
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6155,9 +6317,7 @@ msgid "_OK"
msgstr "_Validar"
#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
+msgid "You may be disconnected shortly. If so, check %s for updates."
msgstr ""
msgid "Unable to get a valid AIM login hash."
@@ -6284,7 +6444,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] ""
msgstr[1] ""
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr ""
@@ -6306,6 +6466,9 @@ msgstr ""
msgid "Member Since"
msgstr ""
+msgid "Profile"
+msgstr "Perfil"
+
msgid "Your AIM connection may be lost."
msgstr ""
@@ -6551,6 +6714,7 @@ msgstr "Se _connectar"
msgid "Get AIM Info"
msgstr ""
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr ""
@@ -6653,7 +6817,6 @@ msgstr ""
msgid "Attempting to connect to %s:%hu."
msgstr ""
-#, c-format
msgid "Attempting to connect via proxy server."
msgstr ""
@@ -6746,7 +6909,7 @@ msgstr "Autre"
msgid "Visible"
msgstr "Invisible"
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
#, fuzzy
@@ -6833,17 +6996,50 @@ msgstr "Data"
msgid "Could not change buddy information."
msgstr "Entresenhas sus l'utilizaire"
-#, c-format
-msgid "%d needs Q&A"
+msgid "Mobile"
msgstr ""
+msgid "Note"
+msgstr "Nòta"
+
+#. callback
#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "Apondre lo contacte"
+msgid "Buddy Memo"
+msgstr "Tièra de contactes"
+
+msgid "Change his/her memo as you like"
+msgstr ""
+
+#, fuzzy
+msgid "_Modify"
+msgstr "Modificar"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "Modificar"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "_Servidor :"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
-msgid "Input answer here"
+#, c-format
+msgid "%u requires verification"
msgstr ""
+#, fuzzy
+msgid "Add buddy question"
+msgstr "Autorizar"
+
+#, fuzzy
+msgid "Enter answer here"
+msgstr "Picatz lo mot de pas"
+
msgid "Send"
msgstr "Segondas"
@@ -6854,18 +7050,18 @@ msgstr "L'expression es pas valida"
msgid "Authorization denied message:"
msgstr ""
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr ""
#, c-format
-msgid "%d needs authentication"
+msgid "%u needs authorization"
msgstr ""
#, fuzzy
msgid "Add buddy authorize"
msgstr "Autorizar"
-msgid "Input request here"
+msgid "Enter request here"
msgstr ""
msgid "Would you be my friend?"
@@ -6887,7 +7083,7 @@ msgid "Failed sending authorize"
msgstr ""
#, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr ""
#, c-format
@@ -6928,6 +7124,9 @@ msgstr ""
msgid "You can only search for permanent Qun\n"
msgstr ""
+msgid "(Invalid UTF-8 string)"
+msgstr ""
+
msgid "Not member"
msgstr ""
@@ -6965,15 +7164,18 @@ msgstr ""
msgid "Join QQ Qun"
msgstr ""
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
+msgid "Input request here"
msgstr ""
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "Entresenhas sus l'utilizaire"
+
msgid "Successfully joined Qun"
msgstr ""
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
msgid "QQ Qun Operation"
@@ -6983,7 +7185,7 @@ msgstr ""
msgid "Failed:"
msgstr "Error"
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
#, fuzzy
@@ -6995,11 +7197,12 @@ msgid ""
"this operation will eventually remove this Qun."
msgstr ""
-msgid "Sorry, you are not our style ..."
+msgid "Sorry, you are not our style"
msgstr ""
-msgid "Successfully changed Qun member"
-msgstr ""
+#, fuzzy
+msgid "Successfully changed Qun members"
+msgstr "Entresenhas sus l'utilizaire"
#, fuzzy
msgid "Successfully changed Qun information"
@@ -7008,35 +7211,35 @@ msgstr "Entresenhas sus l'utilizaire"
msgid "You have successfully created a Qun"
msgstr ""
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr ""
msgid "Setup"
msgstr "Configuracion"
#, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr ""
#, c-format
-msgid "%d request to join Qun %d"
+msgid "%u request to join Qun %u"
msgstr ""
#, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr ""
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr "Suprimir un contacte"
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "Suprimir un contacte"
#, c-format
msgid "Unknown-%d"
@@ -7148,6 +7351,12 @@ msgstr ""
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr ""
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr ""
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7155,7 +7364,7 @@ msgid "<i>Feel free to join us!</i> :)"
msgstr ""
#, fuzzy, c-format
-msgid "About OpenQ r%s"
+msgid "About OpenQ %s"
msgstr "A prepaus de %s"
#, fuzzy
@@ -7176,6 +7385,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "A prepaus de %s"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Adreça personala"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7207,7 +7420,6 @@ msgstr ""
msgid "QQ2008"
msgstr ""
-#. #endif
#, fuzzy
msgid "Connect by TCP"
msgstr "Se connectar"
@@ -7219,6 +7431,9 @@ msgstr "Entresenhas sul servidor"
msgid "Show server news"
msgstr ""
+msgid "Show chat room when msg comes"
+msgstr ""
+
msgid "Keep alive interval (seconds)"
msgstr ""
@@ -7226,10 +7441,7 @@ msgstr ""
msgid "Update interval (seconds)"
msgstr "Entresenhas sus l'utilizaire"
-msgid "Can not decrypt server reply"
-msgstr ""
-
-msgid "Can not decrypt get server reply"
+msgid "Cannot decrypt server reply"
msgstr ""
#, c-format
@@ -7252,19 +7464,19 @@ msgid "Activation required"
msgstr "L'autentificacion a abocat"
#, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr ""
-msgid "Keep alive error"
+msgid "Could not decrypt server reply"
msgstr ""
-msgid "Requesting captcha ..."
+msgid "Requesting captcha"
msgstr ""
-msgid "Checking code of captcha ..."
+msgid "Checking captcha"
msgstr ""
-msgid "Failed captcha verify"
+msgid "Failed captcha verification"
msgstr ""
#, fuzzy
@@ -7275,35 +7487,28 @@ msgstr "Enregistrar l'imatge"
msgid "Enter code"
msgstr "Picatz lo mot de pas"
-msgid "QQ Captcha Verifing"
+msgid "QQ Captcha Verification"
msgstr ""
msgid "Enter the text from the image"
msgstr ""
#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
+msgid "Unknown reply when checking password (0x%02X)"
msgstr ""
#, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
msgstr ""
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr ""
msgid "Socket error"
msgstr ""
-#, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr ""
-
msgid "Unable to read from socket"
msgstr ""
@@ -7313,10 +7518,11 @@ msgstr ""
msgid "Connection lost"
msgstr "Connexion perduda"
-msgid "Get server ..."
-msgstr ""
+#, fuzzy
+msgid "Getting server"
+msgstr "Connectat"
-msgid "Request token"
+msgid "Requesting token"
msgstr ""
msgid "Couldn't resolve host"
@@ -7327,16 +7533,13 @@ msgid "Invalid server or port"
msgstr "L'expression es pas valida"
#, fuzzy
-msgid "Connecting server ..."
+msgid "Connecting to server"
msgstr "Connectat"
#, fuzzy
msgid "QQ Error"
msgstr "Error"
-msgid "Failed to send IM."
-msgstr ""
-
#, fuzzy, c-format
msgid ""
"Server News:\n"
@@ -7346,6 +7549,10 @@ msgid ""
msgstr "Servidor"
#, fuzzy, c-format
+msgid "%s:%s"
+msgstr "%s (%s)"
+
+#, fuzzy, c-format
msgid "From %s:"
msgstr "De"
@@ -7355,32 +7562,29 @@ msgid ""
"%s"
msgstr ""
-msgid "Unknow SERVER CMD"
-msgstr ""
+#, fuzzy
+msgid "Unknown SERVER CMD"
+msgstr "Rason desconeguda"
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
#, fuzzy
msgid "QQ Qun Command"
msgstr "Comanda"
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr ""
-
-msgid "Can not decrypt login reply"
+msgid "Could not decrypt login reply"
msgstr ""
#, fuzzy
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr "Rason desconeguda"
#, fuzzy
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr "Rason desconeguda"
#, c-format
@@ -8155,9 +8359,6 @@ msgstr "Organizacion"
msgid "Unit"
msgstr "Unitat"
-msgid "Note"
-msgstr "Nòta"
-
msgid "Join Chat"
msgstr ""
@@ -8762,6 +8963,10 @@ msgstr ""
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr ""
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "Entresenhas sul servidor"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -8796,188 +9001,10 @@ msgid "Auth Domain"
msgstr ""
#, c-format
-msgid "Looking up %s"
-msgstr ""
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr ""
-
-#, c-format
-msgid "Signon: %s"
-msgstr ""
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr ""
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr ""
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr ""
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr ""
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr ""
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr ""
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr ""
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr ""
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr ""
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr ""
-
-#, c-format
-msgid "Failure."
-msgstr ""
-
-#, c-format
-msgid "Too many matches."
-msgstr ""
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr ""
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr ""
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr ""
-
-#, c-format
-msgid "Keyword ignored."
-msgstr ""
-
-#, c-format
-msgid "No keywords."
-msgstr ""
-
-#, c-format
-msgid "User has no directory information."
-msgstr ""
-
-#, c-format
-msgid "Country not supported."
-msgstr ""
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr ""
-
-#, c-format
-msgid "Incorrect username or password."
-msgstr ""
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr ""
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr ""
-
-#, c-format
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
-msgstr ""
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr ""
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr ""
-
-msgid "Invalid Groupname"
-msgstr ""
-
-msgid "Connection Closed"
-msgstr ""
-
-msgid "Waiting for reply..."
-msgstr ""
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr ""
-
-msgid "Password Change Successful"
-msgstr ""
-
-msgid "_Group:"
-msgstr "_Grop :"
-
-msgid "Get Dir Info"
-msgstr ""
-
-msgid "Set Dir Info"
-msgstr ""
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr ""
-
-msgid "File transfer failed; other side probably canceled."
-msgstr ""
-
-msgid "Could not connect for transfer."
-msgstr ""
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr ""
-
-msgid "Save As..."
-msgstr "Enregistrar coma..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr ""
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
+msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
-#, c-format
-msgid "%s has sent you a webcam invite, which is not yet supported."
+msgid "Your SMS was not delivered"
msgstr ""
msgid "Your Yahoo! message did not get sent."
@@ -9229,13 +9256,8 @@ msgstr ""
msgid "Last Update"
msgstr ""
-#, c-format
-msgid "User information for %s unavailable"
-msgstr ""
-
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr ""
msgid ""
@@ -9539,9 +9561,6 @@ msgstr ""
msgid "Extended away"
msgstr ""
-msgid "Mobile"
-msgstr ""
-
msgid "Listening to music"
msgstr ""
@@ -9583,16 +9602,6 @@ msgstr ""
msgid "%x %X"
msgstr ""
-#, c-format
-msgid "Error Reading %s"
-msgstr ""
-
-#, 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 ""
-
msgid "Calculating..."
msgstr "A calcular..."
@@ -9666,6 +9675,12 @@ msgid "Unable to connect to %s: %s"
msgstr ""
#, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+
+#, c-format
msgid " - %s"
msgstr ""
@@ -9698,6 +9713,16 @@ msgstr "Connectat"
msgid "Address already in use."
msgstr ""
+#, c-format
+msgid "Error Reading %s"
+msgstr ""
+
+#, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+
msgid "Internet Messenger"
msgstr ""
@@ -9740,10 +9765,8 @@ msgstr ""
msgid "Use this buddy _icon for this account:"
msgstr ""
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr ""
+msgid "_Advanced"
+msgstr "_Avançat"
msgid "Use GNOME Proxy Settings"
msgstr ""
@@ -9778,9 +9801,6 @@ msgstr ""
msgid "you can see the butterflies mating"
msgstr ""
-msgid "Proxy Options"
-msgstr ""
-
msgid "Proxy _type:"
msgstr ""
@@ -9808,8 +9828,9 @@ msgstr "_Basic"
msgid "Create _this new account on the server"
msgstr ""
-msgid "_Advanced"
-msgstr "_Avançat"
+#, fuzzy
+msgid "_Proxy"
+msgstr "Proxy"
msgid "Enabled"
msgstr "Activat"
@@ -9872,6 +9893,15 @@ msgstr ""
msgid "I_M"
msgstr ""
+msgid "_Audio Call"
+msgstr ""
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+msgid "_Video Call"
+msgstr ""
+
msgid "_Send File..."
msgstr "_Enviar lo fichièr..."
@@ -10007,6 +10037,9 @@ msgstr ""
msgid "/Tools/_Certificates"
msgstr ""
+msgid "/Tools/Custom Smile_ys"
+msgstr ""
+
msgid "/Tools/Plu_gins"
msgstr ""
@@ -10016,9 +10049,6 @@ msgstr ""
msgid "/Tools/Pr_ivacy"
msgstr ""
-msgid "/Tools/Smile_y"
-msgstr ""
-
msgid "/Tools/_File Transfers"
msgstr ""
@@ -10132,7 +10162,7 @@ msgstr "Manualament"
msgid "By status"
msgstr ""
-msgid "By log size"
+msgid "By recent log activity"
msgstr ""
#, c-format
@@ -10149,6 +10179,9 @@ msgstr ""
msgid "Re-enable"
msgstr ""
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr ""
@@ -10228,6 +10261,9 @@ msgstr ""
msgid "A_lias:"
msgstr ""
+msgid "_Group:"
+msgstr "_Grop :"
+
msgid "Auto_join when account becomes online."
msgstr ""
@@ -10278,12 +10314,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr ""
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-
msgid "_Buddy:"
msgstr ""
@@ -10358,6 +10388,18 @@ msgstr ""
msgid "/Conversation/Clea_r Scrollback"
msgstr ""
+msgid "/Conversation/M_edia"
+msgstr ""
+
+msgid "/Conversation/Media/_Audio Call"
+msgstr ""
+
+msgid "/Conversation/Media/_Video Call"
+msgstr ""
+
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr ""
+
msgid "/Conversation/Se_nd File..."
msgstr ""
@@ -10430,6 +10472,15 @@ msgstr ""
msgid "/Conversation/View Log"
msgstr ""
+msgid "/Conversation/Media/Audio Call"
+msgstr ""
+
+msgid "/Conversation/Media/Video Call"
+msgstr ""
+
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr ""
+
msgid "/Conversation/Send File..."
msgstr ""
@@ -10611,6 +10662,9 @@ msgstr "Artista"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr ""
@@ -10751,6 +10805,10 @@ msgstr "Georgian"
msgid "Ubuntu Georgian Translators"
msgstr ""
+#, fuzzy
+msgid "Khmer"
+msgstr "Autre"
+
msgid "Kannada"
msgstr "Kannadà"
@@ -10772,6 +10830,10 @@ msgstr "Lituanian"
msgid "Macedonian"
msgstr "Macedonian"
+#, fuzzy
+msgid "Mongolian"
+msgstr "Macedonian"
+
msgid "Bokmål Norwegian"
msgstr ""
@@ -10877,7 +10939,24 @@ msgid ""
msgstr ""
#, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr ""
+
+#, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr ""
msgid "Current Developers"
@@ -11180,15 +11259,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr ""
-msgid "_Copy Email Address"
-msgstr ""
-
-msgid "_Open Link in Browser"
-msgstr "_Dobrir lo ligam dins lo navegaire"
-
-msgid "_Copy Link Location"
-msgstr "_Copiar l'emplaçament del ligam"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -11420,6 +11490,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -11437,6 +11508,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -11467,10 +11539,26 @@ msgstr ""
msgid "Pidgin"
msgstr "Pidgin"
-msgid "Open All Messages"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "A calcular..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
msgstr ""
#, c-format
@@ -11500,6 +11588,25 @@ msgid ""
"The 'Manual' browser command has been chosen, but no command has been set."
msgstr ""
+msgid "Open All Messages"
+msgstr ""
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr ""
+
+msgid "New Pounces"
+msgstr ""
+
+msgid "Dismiss"
+msgstr ""
+
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr ""
+
+#, fuzzy
+msgid "No message"
+msgstr "Messatge"
+
msgid "The following plugins will be unloaded."
msgstr ""
@@ -11545,6 +11652,10 @@ msgstr ""
msgid "Select a file"
msgstr "Seleccionar un fichièr"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Entresenhas"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr ""
@@ -11615,6 +11726,50 @@ msgstr ""
msgid "Pounce Target"
msgstr ""
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "Comença a picar"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "L'utilizaire es a picar..."
+
+#, c-format
+msgid "Signed on"
+msgstr ""
+
+#, c-format
+msgid "Returned from being idle"
+msgstr ""
+
+#, c-format
+msgid "Returned from being away"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "S'arrèsta de picar"
+
+#, c-format
+msgid "Signed off"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "Enregistrar lo fichièr"
+
+#, c-format
+msgid "Went away"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Messatges enviats"
+
+#, c-format
+msgid "Unknown.... Please report this!"
+msgstr ""
+
msgid "Smiley theme failed to unpack."
msgstr ""
@@ -11635,6 +11790,12 @@ msgstr ""
msgid "Cl_ose conversations with the Escape key"
msgstr ""
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Tièra de contactes"
+
+#. System Tray
msgid "System Tray Icon"
msgstr ""
@@ -11743,9 +11904,6 @@ msgstr ""
msgid "Cannot start browser configuration program."
msgstr ""
-msgid "ST_UN server:"
-msgstr ""
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr ""
@@ -11770,6 +11928,10 @@ msgstr ""
msgid "_End port:"
msgstr ""
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr ""
@@ -11796,6 +11958,10 @@ msgstr ""
msgid "No proxy"
msgstr ""
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "_Utilizaire :"
@@ -11954,10 +12120,10 @@ msgstr ""
msgid "Auto-away"
msgstr ""
-msgid "Change status when _idle"
+msgid "_Minutes before becoming idle:"
msgstr ""
-msgid "_Minutes before becoming idle:"
+msgid "Change status when _idle"
msgstr ""
msgid "Change _status to:"
@@ -12107,6 +12273,12 @@ msgstr ""
msgid "Status for %s"
msgstr ""
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
msgid "Custom Smiley"
msgstr ""
@@ -12116,12 +12288,12 @@ msgstr ""
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
-msgid "Duplicate Shortcut"
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
msgstr ""
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
+msgid "Duplicate Shortcut"
msgstr ""
msgid "Please select an image for the smiley."
@@ -12134,17 +12306,22 @@ msgid "Add Smiley"
msgstr ""
#, fuzzy
-msgid "Smiley _Image"
-msgstr "Enregistrar l'imatge"
+msgid "_Image:"
+msgstr "_Imatge"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr ""
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "Ordenar"
#, fuzzy
msgid "Smiley"
msgstr "Talha"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "Ordenar"
+
msgid "Custom Smiley Manager"
msgstr ""
@@ -12257,6 +12434,16 @@ msgstr ""
"Impossible de cargar l'imatge '%s' : rason desconeguda, probable que siá "
"corromput"
+#, fuzzy
+msgid "_Open Link"
+msgstr "_Dobrir lo ligam dins lo navegaire"
+
+msgid "_Copy Link Location"
+msgstr "_Copiar l'emplaçament del ligam"
+
+msgid "_Copy Email Address"
+msgstr ""
+
msgid "Save File"
msgstr "Enregistrar lo fichièr"
@@ -13187,9 +13374,6 @@ msgstr ""
msgid "Only when docked"
msgstr ""
-msgid "_Flash window when chat messages are received"
-msgstr ""
-
msgid "Windows Pidgin Options"
msgstr ""
@@ -13238,15 +13422,23 @@ msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr ""
#, fuzzy
-#~ msgid "Successed:"
-#~ msgstr "Velocitat :"
+#~ msgid "Invite message"
+#~ msgstr "Messatges enviats"
#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr "%s (%s)"
+#~ msgid "Add buddy Q&A"
+#~ msgstr "Apondre lo contacte"
+
+#~ msgid "Save As..."
+#~ msgstr "Enregistrar coma..."
+
+#, fuzzy
+#~ msgid "Smiley _Image"
+#~ msgstr "Enregistrar l'imatge"
+
+#, fuzzy
+#~ msgid "Successed:"
+#~ msgstr "Velocitat :"
#, fuzzy
#~ msgid "Error password: %s"
diff --git a/po/pa.po b/po/pa.po
index 39efb4b4ae..dd8292c477 100644
--- a/po/pa.po
+++ b/po/pa.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pa\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-22 09:57-0500\n"
+"POT-Creation-Date: 2009-04-30 10:39-0400\n"
"PO-Revision-Date: 2009-02-26 22:23+0530\n"
"Last-Translator: Amanpreet Singh Alam <aalam@users.sf.net>\n"
"Language-Team: Punjabi <punjabi-users@lists.sf.net>\n"
@@ -356,7 +356,8 @@ msgstr "ਪਾਬੰਦੀ ਹਟਾਓ"
msgid ""
"Please enter the username or alias of the person you would like to Block/"
"Unblock."
-msgstr "ਵਿਅਕਤੀ ਦਾ ਯੂਜ਼ਰ ਨਾਂ ਜਾਂ ਏਲੀਆਸ ਦਿਓ ਜੀ, ਜਿਸ ਲਈ ਤੁਸੀਂ ਪਾਬੰਦੀ ਲਗਾਉਣੀ/ਹਟਾਉਣੀ ਚਾਹੁੰਦੇ ਹੋ।"
+msgstr ""
+"ਵਿਅਕਤੀ ਦਾ ਯੂਜ਼ਰ ਨਾਂ ਜਾਂ ਏਲੀਆਸ ਦਿਓ ਜੀ, ਜਿਸ ਲਈ ਤੁਸੀਂ ਪਾਬੰਦੀ ਲਗਾਉਣੀ/ਹਟਾਉਣੀ ਚਾਹੁੰਦੇ ਹੋ।"
#. Not multiline
#. Not masked?
@@ -545,7 +546,9 @@ msgstr "ਅਕਾਊਂਟ ਮੁੜ-ਯੋਗ"
msgid ""
"The account has disconnected and you are no longer in this chat. You will be "
"automatically rejoined in the chat when the account reconnects."
-msgstr "ਅਕਾਊਂਟ ਡਿਸ-ਕੁਨੈਕਟ ਹੋ ਗਿਆ ਹੈ ਅਤੇ ਤੁਸੀਂ ਇਹ ਗੱਲਬਾਤ ਨਹੀਂ ਕਰ ਸਕਦੇ ਹੋ। ਤੁਸੀਂ ਅਕਾਊਂਟ ਮੁੜ-ਕੁਨੈਕਟ ਹੋਣ ਨਾਲ ਆਟੋਮੈਟਿਕ ਹੀ ਮੁੜ-ਕੁਨੈਕਟ ਹੋ ਜਾਉਗੇ।"
+msgstr ""
+"ਅਕਾਊਂਟ ਡਿਸ-ਕੁਨੈਕਟ ਹੋ ਗਿਆ ਹੈ ਅਤੇ ਤੁਸੀਂ ਇਹ ਗੱਲਬਾਤ ਨਹੀਂ ਕਰ ਸਕਦੇ ਹੋ। ਤੁਸੀਂ ਅਕਾਊਂਟ ਮੁੜ-ਕੁਨੈਕਟ ਹੋਣ "
+"ਨਾਲ ਆਟੋਮੈਟਿਕ ਹੀ ਮੁੜ-ਕੁਨੈਕਟ ਹੋ ਜਾਉਗੇ।"
msgid "No such command."
msgstr "ਕੋਈ ਕਮਾਂਡ ਨਹੀਂ ਹੈ।"
@@ -590,25 +593,13 @@ msgstr "ਤੁਸੀਂ ਇਹ ਗੱਲਬਾਤ ਛੱਡੀ।"
msgid "Logging started. Future messages in this conversation will be logged."
msgstr "ਲਾਗ ਕਰਨਾ ਸ਼ੁਰੂ ਕੀਤਾ ਹੈ। ਇਨ੍ਹਾਂ ਗੱਲਾਂ ਲਈ ਅਗਲੇ ਸੁਨੇਹੇ ਲਾਗ ਕੀਤੇ ਜਾਣਗੇ।"
-msgid "Logging stopped. Future messages in this conversation will not be logged."
+msgid ""
+"Logging stopped. Future messages in this conversation will not be logged."
msgstr "ਲਾਗ ਕਰਨਾ ਬੰਦ ਕੀਤਾ। ਇਨ੍ਹਾਂ ਗੱਲਾਂ ਲਈ ਅਗਲੇ ਸੁਨੇਹੇ ਲਾਗ ਨਹੀਂ ਕੀਤੇ ਜਾਣਗੇ।"
msgid "Send To"
msgstr "ਭੇਜੋ"
-msgid "Invite message"
-msgstr "ਸੱਦਾ ਸੁਨੇਹਾ"
-
-msgid "Invite"
-msgstr "ਸੱਦਾ"
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"ਸੱਦਾ ਭੇਜਣ ਲਈ ਯੂਜ਼ਰ ਦਾ ਨਾਂ ਦਿਓ, ਜਿਸ ਨੂੰ ਤੁਸੀਂ ਸੱਦਾ ਭੇਜਣਾ ਚਾਹੁੰਦੇ ਹੋ,\n"
-"ਚੋਣਵੇਂ ਰੂਪ ਵਿੱਚ ਸੱਦਾ ਸੁਨੇਹਾ ਵੀ ਦਿੱਤਾ ਜਾ ਸਕਦਾ ਹੈ।"
-
msgid "Conversation"
msgstr "ਗੱਲਾਂਬਾਤਾਂ"
@@ -709,9 +700,11 @@ msgid ""
"background&gt;: black, red, green, blue, white, gray, darkgray, magenta, "
"cyan, default<br><br>EXAMPLE:<br> msgcolor send cyan default"
msgstr ""
-"msgcolor &lt;class&gt; &lt;foreground&gt; &lt;background&gt;: ਗੱਲਬਾਤ ਵਿੰਡੋ ਵਿੱਚ ਸੁਨੇਹਿਆਂ ਦੀਆਂ ਵੱਖ ਵੱਖ ਕਲਾਸਾਂ ਲਈ ਰੰਗ ਸੈੱਟ ਕਰੋ। <br> &lt;"
-"class&gt;: receive, send, highlight, action, timestamp<br> &lt;foreground/"
-"background&gt;: ਕਾਲਾ, ਲਾਲ, ਹਰਾ, ਨੀਲਾ, ਚਿੱਟਾ, ਗਰੇ, ਗੂੜਾ-ਗਰੇ, ਮੈਗਨਿਟਾ, ਕਿਰਮਚੀ, ਡਿਫਾਲਟ<br><br>ਜਿਵੇਂ:<br> msgcolor send cyan default"
+"msgcolor &lt;class&gt; &lt;foreground&gt; &lt;background&gt;: ਗੱਲਬਾਤ ਵਿੰਡੋ ਵਿੱਚ "
+"ਸੁਨੇਹਿਆਂ ਦੀਆਂ ਵੱਖ ਵੱਖ ਕਲਾਸਾਂ ਲਈ ਰੰਗ ਸੈੱਟ ਕਰੋ। <br> &lt;class&gt;: receive, send, "
+"highlight, action, timestamp<br> &lt;foreground/background&gt;: ਕਾਲਾ, "
+"ਲਾਲ, ਹਰਾ, ਨੀਲਾ, ਚਿੱਟਾ, ਗਰੇ, ਗੂੜਾ-ਗਰੇ, ਮੈਗਨਿਟਾ, ਕਿਰਮਚੀ, ਡਿਫਾਲਟ<br><br>ਜਿਵੇਂ:<br> "
+"msgcolor send cyan default"
msgid "Unable to open file."
msgstr "ਫਾਇਲ ਖੋਲਣ ਲਈ ਅਸਫਲ ਹੈ।"
@@ -733,6 +726,7 @@ msgid "Pause"
msgstr "ਵਿਰਾਮ"
# , c-format
+#, c-format
msgid "File Transfers - %d%% of %d file"
msgid_plural "File Transfers - %d%% of %d files"
msgstr[0] "ਫਾਇਲ ਟਰਾਂਸਫਰ - %2$d ਵਿੱਚੋਂ %1$d%% ਫਾਇਲ"
@@ -803,6 +797,7 @@ msgid "Receiving"
msgstr "ਮਿਲਿਆ"
# , c-format
+#, c-format
msgid "Conversation in %s on %s"
msgstr "%2$s ਉੱਤੇ %1$s ਗੱਲਬਾਤ"
@@ -827,7 +822,8 @@ msgstr ""
"ਤੁਰੰਤ ਸੁਨੇਹੇ (IM) ਕੇਵਲ ਤਾਂ ਹੀ ਲਾਗ ਕੀਤੇ ਜਾਣਗੇ, ਜੇ \"ਸਭ ਤੁਰੰਤ ਸੁਨੇਹੇ ਲਾਗ ਕਰੋ\" ਪਸੰਦ ਨੂੰ ਯੋਗ ਕੀਤਾ "
"ਹੋਵੇਗਾ।"
-msgid "Chats will only be logged if the \"Log all chats\" preference is enabled."
+msgid ""
+"Chats will only be logged if the \"Log all chats\" preference is enabled."
msgstr "ਗੱਲਾਂ ਦੀ ਲਾਗ ਤਾਂ ਹੀ ਰੱਖਿਆ ਜਾਵੇਗਾ, ਜੇ \"ਸਭ ਗੱਲਾਂ ਦਾ ਲਾਗ ਰੱਖੋ\" ਪਸੰਦ ਯੋਗ ਕੀਤੀ ਹੋਵੇਗੀ।"
msgid "No logs were found"
@@ -854,6 +850,41 @@ msgstr "ਸਭ ਗੱਲਾਂ-ਬਾਤਾਂ"
msgid "System Log"
msgstr "ਸਿਸਟਮ ਲਾਗ"
+#, fuzzy
+msgid "Calling ... "
+msgstr "ਗਿਣਤੀ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "ਮਨਜ਼ੂਰ"
+
+msgid "Reject"
+msgstr "ਰੱਦ ਕਰੋ"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "ਤੁਸੀਂ %s%s ਚੈਨਲ ਛੱਡਿਆ"
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "ਈ-ਮੇਲ"
@@ -888,6 +919,9 @@ msgstr "ਜਾਰੀ ਰੱਖੋ"
msgid "IM"
msgstr "IM"
+msgid "Invite"
+msgstr "ਸੱਦਾ"
+
msgid "(none)"
msgstr "(ਕੋਈ ਨਹੀਂ)"
@@ -931,7 +965,8 @@ msgstr "ਪਲੱਗਇਨ ਲੋਡ ਕਰਨ ਦੌਰਾਨ ਗਲਤੀ"
msgid "The selected file is not a valid plugin."
msgstr "ਚੁਣੀ ਫਾਇਲ ਇੱਕ ਠੀਕ ਪਲੱਗਇਨ ਨਹੀਂ ਹੈ।"
-msgid "Please open the debug window and try again to see the exact error message."
+msgid ""
+"Please open the debug window and try again to see the exact error message."
msgstr "ਡੀਬੱਗ ਵਿੰਡੋ ਖੋਲ੍ਹੋ ਅਤੇ ਠੀਕ ਗਲਤੀ ਸੁਨੇਹਾ ਵੇਖਣ ਦੀ ਮੁੜ-ਟਰਾਈ ਕਰੋ।"
msgid "Select plugin to install"
@@ -1448,7 +1483,8 @@ msgstr "ਨਵੀਂ ਗੱਲਬਾਤ ਵਿੱਚ ਤਾਜ਼ੀ ਗੱਲ
msgid ""
"When a new conversation is opened this plugin will insert the last "
"conversation into the current conversation."
-msgstr "ਜਦੋਂ ਇੱਕ ਨਵੀਂ ਗੱਲਬਾਤ ਖੁੱਲ੍ਹਦੀ ਹੈ ਤਾਂ ਇਹ ਪਲੱਗਇਨ ਮੌਜੂਦਾ ਗੱਲਬਾਤ ਵਿੱਚ ਆਖਰੀ ਗੱਲਬਾਤ ਨੂੰ ਸ਼ਾਮਲ ਕਰਦੀ ਹੈ।"
+msgstr ""
+"ਜਦੋਂ ਇੱਕ ਨਵੀਂ ਗੱਲਬਾਤ ਖੁੱਲ੍ਹਦੀ ਹੈ ਤਾਂ ਇਹ ਪਲੱਗਇਨ ਮੌਜੂਦਾ ਗੱਲਬਾਤ ਵਿੱਚ ਆਖਰੀ ਗੱਲਬਾਤ ਨੂੰ ਸ਼ਾਮਲ ਕਰਦੀ ਹੈ।"
msgid "Online"
msgstr "ਆਨਲਾਈਨ"
@@ -1493,6 +1529,28 @@ msgstr "GntLastlog"
msgid "Lastlog plugin."
msgstr "ਆਖਰੀ-ਲਾਗ ਪਲੱਗਇਨ"
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "ਟਿਊਨ URL"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "ਅਕਾਊਂਟ"
@@ -1593,13 +1651,6 @@ msgstr "ਕੀ %s ਲਈ ਸਰਟੀਫਿਕੇਟ ਮਨਜ਼ੂਰ ਹੈ?"
msgid "SSL Certificate Verification"
msgstr "SSL ਸਰਟੀਫਿਕੇਟ ਜਾਂਚ"
-#. Number of actions
-msgid "Accept"
-msgstr "ਮਨਜ਼ੂਰ"
-
-msgid "Reject"
-msgstr "ਰੱਦ ਕਰੋ"
-
msgid "_View Certificate..."
msgstr "ਸਰਟੀਫਿਕੇਟ ਵੇਖੋ(_V)..."
@@ -1609,7 +1660,8 @@ msgstr "ਸਰਟੀਫਿਕੇਟ ਵੇਖੋ(_V)..."
msgid ""
"The certificate presented by \"%s\" is self-signed. It cannot be "
"automatically checked."
-msgstr "ਸਰਟੀਫਿਕੇਟ \"%s\" ਨੂੰ ਖੁਦ-ਸਾਇਨ ਨਾਲ ਪੇਸ਼ ਕੀਤਾ ਗਿਆ ਹੈ। ਇਹ ਆਟੋਮੈਟਿਕ ਚੈੱਕ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।"
+msgstr ""
+"ਸਰਟੀਫਿਕੇਟ \"%s\" ਨੂੰ ਖੁਦ-ਸਾਇਨ ਨਾਲ ਪੇਸ਼ ਕੀਤਾ ਗਿਆ ਹੈ। ਇਹ ਆਟੋਮੈਟਿਕ ਚੈੱਕ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।"
#, c-format
msgid "The certificate chain presented for %s is not valid."
@@ -1630,10 +1682,12 @@ msgstr "ਗਲਤ ਸਰਟੀਫਿਕੇਟ ਚੇਨ"
msgid ""
"You have no database of root certificates, so this certificate cannot be "
"validated."
-msgstr "ਤੁਹਾਡੇ ਕੋਲ root ਸਰਟੀਫਿਕੇਟ ਲਈ ਕੋਈ ਡਾਟਾਬੇਸ ਨਹੀਂ ਹੈ, ਇਸਕਰਕੇ ਇਹ ਸਰਟੀਫਿਕੇਟ ਵੈਧ ਨਹੀਂ ਹੋ ਸਕਦਾ ਹੈ।"
+msgstr ""
+"ਤੁਹਾਡੇ ਕੋਲ root ਸਰਟੀਫਿਕੇਟ ਲਈ ਕੋਈ ਡਾਟਾਬੇਸ ਨਹੀਂ ਹੈ, ਇਸਕਰਕੇ ਇਹ ਸਰਟੀਫਿਕੇਟ ਵੈਧ ਨਹੀਂ ਹੋ ਸਕਦਾ ਹੈ।"
#. vrq will be completed by user_auth
-msgid "The root certificate this one claims to be issued by is unknown to Pidgin."
+msgid ""
+"The root certificate this one claims to be issued by is unknown to Pidgin."
msgstr "ਇਹ root ਸਰਟੀਫਿਕੇਟ ਇੱਕ ਅਣਜਾਣ ਵਲੋਂ ਪਿਡਗਿਨ ਨੂੰ ਦਿੱਤਾ ਗਿਆ ਜਾਪਦਾ ਹੈ।"
#, c-format
@@ -1741,6 +1795,16 @@ msgstr "%s ਨੇ ਰੂਮ ਛੱਡਿਆ ਹੈ।"
msgid "%s left the room (%s)."
msgstr "%s ਨੇ ਰੂਮ (%s) ਛੱਡਿਆ ਹੈ।"
+#, fuzzy
+msgid "Invite to chat"
+msgstr "ਕਾਨਫਰੰਸ ਲਈ ਸੱਦਾ"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr "ਸੱਦਾ ਭੇਜਣ ਲਈ ਯੂਜ਼ਰ ਦਾ ਨਾਂ ਦਿਓ, ਚੋਣਵੇਂ ਰੂਪ ਵਿੱਚ ਸੱਦਾ ਸੁਨੇਹਾ ਵੀ ਦਿੱਤਾ ਜਾ ਸਕਦਾ ਹੈ।"
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "ਕੁਨੈਕਸ਼ਨ ਲੈਣ ਲਈ ਫੇਲ੍ਹ: %s"
@@ -1785,6 +1849,7 @@ msgstr ""
"ਰਿਜ਼ੋਲਵਰ ਪਰੋਸੈੱਸ ਤੋਂ ਪੜ੍ਹਨ ਦੌਰਾਨ ਗਲਤੀ:\n"
"%s"
+#, c-format
msgid "Resolver process exited without answering our request"
msgstr "ਸਾਡੀ ਮੰਗ ਦਾ ਜਵਾਬ ਦਿੱਤੇ ਬਿਨਾਂ ਰਿਜ਼ਾਲਵਰ ਕਾਰਵਾਈ ਬੰਦ ਹੋ ਗਈ ਹੈ।"
@@ -2080,7 +2145,8 @@ msgstr "ਪਲੱਗਇਨ ਮੈਜ਼ਿਕ %d ਨਹੀਂ ਮਿਲਦੀ (%
msgid "ABI version mismatch %d.%d.x (need %d.%d.x)"
msgstr "ABI ਵਰਜਨ %d.%d.x ਮਿਲਦਾ ਨਹੀਂ (%d.%d.x ਦੀ ਲੋੜ)"
-msgid "Plugin does not implement all required functions (list_icon, login and close)"
+msgid ""
+"Plugin does not implement all required functions (list_icon, login and close)"
msgstr "ਪਲੱਗਇਨ ਨੇ ਸਭ ਲੋੜੀਦੇ ਫੰਕਸ਼ਨ ਸਥਾਪਿਤ ਨਹੀਂ ਕੀਤੇ ਹਨ (list_icon, login ਅਤੇ close)"
#, c-format
@@ -2100,6 +2166,7 @@ msgid "Unable to load your plugin."
msgstr "ਤੁਹਾਡੀ ਪਲੱਗਇਨ ਲੋਡ ਕਰਨ ਲਈ ਅਸਮਰੱਥ"
# , c-format
+#, c-format
msgid "%s requires %s, but it failed to unload."
msgstr "%s ਨੂੰ %s ਚਾਹੀਦਾ ਸੀ, ਪਰ ਇਹ ਲੋਡ ਕਰਨ ਲਈ ਫੇਲ੍ਹ ਹੈ"
@@ -2374,7 +2441,8 @@ msgstr "ਤੁਹਾਡਾ ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਟ
msgid ""
"You are currently disconnected. Messages will not be received unless you are "
"logged in."
-msgstr "ਇਸ ਸਮੇਂ ਤੁਸੀਂ ਡਿਸ-ਕੁਨੈਕਟ ਹੋ। ਸੁਨੇਹੇ ਉਦੋਂ ਤੱਕ ਨਹੀਂ ਮਿਲਣਗੇ, ਜਦੋਂ ਤੱਕ ਕਿ ਤੁਸੀਂ ਲਾਗਇਨ ਨਹੀਂ ਕਰਦੇ ਹੋ।"
+msgstr ""
+"ਇਸ ਸਮੇਂ ਤੁਸੀਂ ਡਿਸ-ਕੁਨੈਕਟ ਹੋ। ਸੁਨੇਹੇ ਉਦੋਂ ਤੱਕ ਨਹੀਂ ਮਿਲਣਗੇ, ਜਦੋਂ ਤੱਕ ਕਿ ਤੁਸੀਂ ਲਾਗਇਨ ਨਹੀਂ ਕਰਦੇ ਹੋ।"
msgid "Message could not be sent because the maximum length was exceeded."
msgstr "ਲੰਬਾਈ ਵੱਧ ਹੋਣ ਕਰਕੇ ਸੁਨੇਹਾ ਭੇਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ।"
@@ -2500,8 +2568,7 @@ msgid ""
"Prepends a newline to messages so that the rest of the message appears below "
"the username in the conversation window."
msgstr ""
-"ਸੁਨੇਹਿਆਂ ਵਿੱਚ ਇੱਕ ਨਵੀਂ-ਲਾਈਨ ਜੋੜਦੀ ਹੈ, ਤਾਂ ਕਿ ਨਵੇਂ ਸੁਨੇਹੇ ਗੱਲਬਾਤ ਵਿੰਡੋ ਵਿੱਚ ਯੂਜ਼ਰ ਨਾਂ ਦੇ ਹੇਠ ਵੇਖਾਈ "
-"ਦੇਣ।"
+"ਸੁਨੇਹਿਆਂ ਵਿੱਚ ਇੱਕ ਨਵੀਂ-ਲਾਈਨ ਜੋੜਦੀ ਹੈ, ਤਾਂ ਕਿ ਨਵੇਂ ਸੁਨੇਹੇ ਗੱਲਬਾਤ ਵਿੰਡੋ ਵਿੱਚ ਯੂਜ਼ਰ ਨਾਂ ਦੇ ਹੇਠ ਵੇਖਾਈ ਦੇਣ।"
msgid "Offline Message Emulation"
msgstr "ਆਫਲਾਈਨ ਸੁਨੇਹਾ ਸਮਰੂਪ"
@@ -2540,6 +2607,32 @@ msgstr "ਪਉਨਸ ਵਿੱਚ ਆਫਲਾਈਨ ਸੁਨੇਹੇ ਸੰ
msgid "Do not ask. Always save in pounce."
msgstr "ਪੁੱਛੋ ਨਾ। ਹਮੇਸ਼ਾਂ ਪਉਨਸ ਵਿੱਚ ਸੰਭਾਲੋ।"
+#, fuzzy
+msgid "One Time Password"
+msgstr "ਪਾਸਵਰਡ ਦਿਓ"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2740,7 +2833,8 @@ msgstr ""
msgid "Unable to listen for incoming IM connections\n"
msgstr "ਆ ਰਹੇ IM ਕੁਨੈਕਸ਼ਨ ਸੁਣਨ ਤੋਂ ਅਸਮੱਰਥ ਹੈ\n"
-msgid "Unable to establish connection with the local mDNS server. Is it running?"
+msgid ""
+"Unable to establish connection with the local mDNS server. Is it running?"
msgstr "ਇੱਕ ਲੋਕਲ mDNS ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਬਣਾਉਣ ਲਈ ਅਸਮਰੱਥ ਹੈ। ਕੀ ਇਹ ਚੱਲਦਾ ਹੈ?"
msgid "First name"
@@ -2824,6 +2918,7 @@ msgid "Buddylist saved successfully!"
msgstr "ਬੱਡੀ-ਲਿਸਟ ਠੀਕ ਤਰ੍ਹਾਂ ਸੰਭਾਲੀ ਗਈ!"
# , c-format
+#, c-format
msgid "Couldn't write buddy list for %s to %s"
msgstr "%s ਲਈ %s ਉੱਤੇ ਬੱਡੀ ਲਿਸਟ ਲਿਖਣ ਲਈ ਅਸਮਰੱਥ"
@@ -2933,6 +3028,7 @@ msgstr "ਗੱਲਾਂ ਲਈ ਸੁਨੇਹੀ ਚੁਣੋ: %s"
msgid "Add to chat..."
msgstr "ਗੱਲਾਂ 'ਚ ਸ਼ਾਮਿਲ..."
+#. Global
msgid "Available"
msgstr "ਉਪਲੱਬਧ"
@@ -3275,6 +3371,17 @@ msgid ""
"invalid characters."
msgstr "ਤੁਹਾਡੇ ਚੁਣੇ ਅਕਾਊਂਟ ਨਾਂ ਨੂੰ ਸਰਵਰ ਨੇ ਰੱਦ ਕਰ ਦਿੱਤਾ ਹੈ। ਇਹ ਗਲਤ ਅੱਖਰਾਂ ਕਰਕੇ ਹੋ ਸਕਦਾ ਹੈ।"
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "ਇਹ ਗੱਲ ਨਾਂ ਪਹਿਲਾਂ ਹੀ ਵਰਤੋਂ 'ਚ ਹੈ"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "ਆਮ ਨਾਂ"
+
msgid "Cannot change nick"
msgstr "ਨਾਂ ਤਬਦੀਲ ਨਹੀਂ ਹੋ ਸਕਦਾ"
@@ -3542,6 +3649,41 @@ msgstr "ਸਰਵਰ ਤੋਂ ਗਲਤ ਚੈਲੰਜ਼"
msgid "SASL error"
msgstr "SASL ਗਲਤੀ"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "ਕੋਈ ਕਾਰਨ ਨਹੀਂ ਦਿੱਤਾ ਹੈ।"
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "ਨਾਸਹਾਇਕ ਵਰਜਨ"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"ਸਰਵਰ ਨਾਲ ਇੱਕ ਕੁਨੈਕਸ਼ਨ ਬਣਾਇਆ ਨਹੀਂ ਜਾ ਸਕਿਆ:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"ਸਰਵਰ ਨਾਲ ਇੱਕ ਕੁਨੈਕਸ਼ਨ ਬਣਾਇਆ ਨਹੀਂ ਜਾ ਸਕਿਆ:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "ਕੁਨੈਕਸ਼ਨ ਸ਼ੁਰੂ ਲਈ ਅਸਫ਼ਲ।"
+
+msgid "Unable to create socket"
+msgstr "ਸਾਕਟ ਬਣਾਉਣ ਲਈ ਅਸਫਲ"
+
+msgid "Write error"
+msgstr "ਲਿਖਣ ਵਿੱਚ ਗਲਤੀ"
+
msgid "Full Name"
msgstr "ਪੂਰਾ ਨਾਂ"
@@ -3606,6 +3748,10 @@ msgstr "ਕਲਾਇਟ"
msgid "Operating System"
msgstr "ਓਪਰੇਟਿੰਗ ਸਿਸਟਮ"
+#, fuzzy
+msgid "Local Time"
+msgstr "ਲੋਕਲ ਫਾਇਲ:"
+
msgid "Last Activity"
msgstr "ਆਖਰੀ ਐਕਟੀਵਿਟੀ"
@@ -3934,9 +4080,6 @@ msgstr "ਰੂਮ ਖੋਜ"
msgid "You require encryption, but it is not available on this server."
msgstr "ਤੁਹਾਨੂੰ ਇੰਕ੍ਰਿਪਸ਼ਨ ਦੀ ਲੋੜ ਹੈ, ਪਰ ਇਹ ਸਰਵਰ ਲਈ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ।"
-msgid "Write error"
-msgstr "ਲਿਖਣ ਵਿੱਚ ਗਲਤੀ"
-
msgid "Ping timeout"
msgstr "ਪਿੰਗ ਟਾਈਮ-ਆਉਟ"
@@ -3945,14 +4088,9 @@ msgstr "ਪੜ੍ਹਨ ਗਲਤੀ"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"ਸਰਵਰ ਨਾਲ ਇੱਕ ਕੁਨੈਕਸ਼ਨ ਬਣਾਇਆ ਨਹੀਂ ਜਾ ਸਕਿਆ:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "ਸਾਕਟ ਬਣਾਉਣ ਲਈ ਅਸਫਲ"
msgid "Invalid XMPP ID"
msgstr "ਗਲਤ XMPP ID"
@@ -3960,6 +4098,10 @@ msgstr "ਗਲਤ XMPP ID"
msgid "Invalid XMPP ID. Domain must be set."
msgstr "ਗਲਤ XMPP ID ਹੈ। ਡੋਮੇਨ ਸੈੱਟ ਕਰਨੀ ਲਾਜ਼ਮੀ ਹੈ।"
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਦੌਰਨ ਗਲਤੀ"
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "%s@%s ਦੀ ਰਜਿਸਟਰੇਸ਼ਨ ਸਫਲ"
@@ -4002,7 +4144,8 @@ msgstr "ਮਿਤੀ"
msgid "Unregister"
msgstr "ਅਣ-ਰਜਿਸਟਰ"
-msgid "Please fill out the information below to change your account registration."
+msgid ""
+"Please fill out the information below to change your account registration."
msgstr "ਆਪਣੀ ਅਕਾਊਂਟ ਰਜਿਸਟਰੇਸ਼ਨ ਬਦਲਣ ਵਾਸਤੇ ਹੇਠਾਂ ਜਾਣਕਾਰੀ ਭਰੋ ਜੀ।"
msgid "Please fill out the information below to register your new account."
@@ -4049,6 +4192,12 @@ msgstr "ਸਰਵਰ ਪਾਬੰਦੀ ਲਈ ਸਹਾਇਕ ਨਹੀਂ ਹ
msgid "Not Authorized"
msgstr "ਪਰਮਾਣਤ ਨਹੀਂ"
+msgid "Mood"
+msgstr "ਮੂਡ"
+
+msgid "Now Listening"
+msgstr "ਹੁਣ ਸੁਣ ਰਿਹਾ ਹੈ"
+
msgid "Both"
msgstr "ਦੋਨੋਂ"
@@ -4070,12 +4219,6 @@ msgstr "ਕੋਈ ਨਹੀਂ"
msgid "Subscription"
msgstr "ਮੈਂਬਰੀ"
-msgid "Mood"
-msgstr "ਮੂਡ"
-
-msgid "Now Listening"
-msgstr "ਹੁਣ ਸੁਣ ਰਿਹਾ ਹੈ"
-
msgid "Mood Text"
msgstr "ਮੂਡ ਟੈਕਸਟ"
@@ -4313,18 +4456,24 @@ msgstr "ਯੂਜ਼ਰ %s ਨੂੰ ਕਿੱਕ ਕਰਨ ਬਾਰੇ ਅਸ
msgid "Unable to ping user %s"
msgstr "ਯੂਜ਼ਰ %s ਪਿੰਗ ਕਰਨ ਲਈ ਅਸਮਰੱਥ"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr "ਬੱਜ਼ ਕਰਨ ਲਈ ਅਸਮਰੱਥ ਹੈ, ਕਿਉਂਕਿ ਯੂਜ਼ਰ %s ਬਾਰੇ ਕੁਝ ਵੀ ਪਤਾ ਨਹੀਂ ਹੈ।"
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr "ਬੱਜ਼ ਕਰਨ ਲਈ ਅਸਮਰੱਥ ਹੈ, ਕਿਉਂਕਿ ਯੂਜ਼ਰ %s ਸ਼ਾਇਦ ਆਫ਼ਲਾਈਨ ਹੈ।"
-#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+#, fuzzy, c-format
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "ਬੱਜ਼ ਕਰਨ ਲਈ ਅਸਮਰੱਥ ਹੈ, ਕਿਉਂਕਿ ਯੂਜ਼ਰ %s ਇਸ ਲਈ ਸਹਾਇਕ ਨਹੀਂ ਹੈ।"
+#, c-format
+msgid "Buzzing %s..."
+msgstr "%s ਨੂੰ ਬੱਜ਼..."
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
msgid "Buzz"
@@ -4334,9 +4483,35 @@ msgstr "ਬੱਜ਼"
msgid "%s has buzzed you!"
msgstr "%s ਨੇ ਤੁਹਾਨੂੰ ਬੱਜ਼ ਭੇਜਿਆ ਹੈ!"
-#, c-format
-msgid "Buzzing %s..."
-msgstr "%s ਨੂੰ ਬੱਜ਼..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "%s ਨੂੰ ਫਾਇਲ ਭੇਜਣ ਲਈ ਅਸਮਰੱਥ, ਗਲਤ JID"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "%s ਨੂੰ ਫਾਇਲ ਭੇਜਣ ਲਈ ਅਸਮਰੱਥ, ਯੂਜ਼ਰ ਆਨਲਾਈਨ ਨਹੀਂ ਹੈ"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr "%s ਨੂੰ ਫਾਇਲ ਭੇਜਣ ਲਈ ਅਸਮਰੱਥ ਹੈ, ਯੂਜ਼ਰ ਮੌਜੂਦਗੀ ਲਈ ਮੈਂਬਰ ਨਹੀਂ"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "ਰਜਿਸਟਰੇਸ਼ਨ ਅਸਫਲ"
+
+# , c-format
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "ਚੁਣੋ ਕਿ ਕਿਹੜੇ %s ਦੇ ਸਰੋਤ ਤੁਸੀਂ ਇੱਕ ਫਾਇਲ ਤੋਂ ਤੁਸੀਂ ਭੇਜਣੇ ਚਾਹੁੰਦੇ ਹੋ"
+
+msgid "Select a Resource"
+msgstr "ਇੱਕ ਸਰੋਤ ਚੁਣੋ"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "ਗੱਲਬਾਤ ਚਾਲੂ(_C)"
msgid "config: Configure a chat room."
msgstr "config: Configure a chat room."
@@ -4379,8 +4554,10 @@ msgstr "join: &lt;room&gt; [password]: Join a chat on this server."
msgid "kick &lt;user&gt; [reason]: Kick a user from the room."
msgstr "kick &lt;user&gt; [reason]: Kick a user from the room."
-msgid "msg &lt;user&gt; &lt;message&gt;: Send a private message to another user."
-msgstr "msg &lt;user&gt; &lt;message&gt;: Send a private message to another user."
+msgid ""
+"msg &lt;user&gt; &lt;message&gt;: Send a private message to another user."
+msgstr ""
+"msg &lt;user&gt; &lt;message&gt;: Send a private message to another user."
msgid "ping &lt;jid&gt;:\tPing a user/component/server."
msgstr "ping &lt;jid&gt;:\tਇੱਕ ਯੂਜ਼ਰ/ਭਾਗ/ਸਰਵਰ ਪਿੰਗ ਕਰੋ।"
@@ -4488,6 +4665,21 @@ msgstr "ਗੱਲ %s 'ਚ ਦਾਖਲ ਹੋਣ ਲਈ ਗਲਤੀ"
msgid "Error in chat %s"
msgstr "ਗੱਲ %s 'ਚ ਗਲਤੀ"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "ਫਾਇਲ ਖੋਲਣ ਲਈ ਗਲਤੀ ਆਈ ਹੈ।"
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "ਫਾਇਲ ਟਰਾਂਸਫਰ ਫੇਲ੍ਹ"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "ਫਾਇਲ '%s' ਖੋਲ੍ਹਣ ਲਈ ਫੇਲ੍ਹ: %s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr "ਫਾਇਲ %s ਨੂੰ ਭੇਜਣ ਲਈ ਅਸਮਰੱਥ ਹੈ, ਫਾਇਲ ਟਰਾਂਸਫਰ ਲਈ ਸਹਿਯੋਗੀ ਨਹੀਂ"
@@ -4508,12 +4700,10 @@ msgid "Unable to send file to %s, not subscribed to user presence"
msgstr "%s ਨੂੰ ਫਾਇਲ ਭੇਜਣ ਲਈ ਅਸਮਰੱਥ ਹੈ, ਯੂਜ਼ਰ ਮੌਜੂਦਗੀ ਲਈ ਮੈਂਬਰ ਨਹੀਂ"
# , c-format
+#, c-format
msgid "Please select the resource of %s to which you would like to send a file"
msgstr "ਚੁਣੋ ਕਿ ਕਿਹੜੇ %s ਦੇ ਸਰੋਤ ਤੁਸੀਂ ਇੱਕ ਫਾਇਲ ਤੋਂ ਤੁਸੀਂ ਭੇਜਣੇ ਚਾਹੁੰਦੇ ਹੋ"
-msgid "Select a Resource"
-msgstr "ਇੱਕ ਸਰੋਤ ਚੁਣੋ"
-
msgid "Edit User Mood"
msgstr "ਯੂਜ਼ਰ ਮੋਡ ਸੋਧ"
@@ -4577,167 +4767,221 @@ msgstr ""
msgid ""
"%s is on the local list but not on the server list. Do you want this buddy "
"to be added?"
-msgstr "%s ਲੋਕਲ ਲਿਸਟ ਉੱਤੇ ਹੈ, ਪਰ ਸਰਵਰ ਲਿਸਟ ਉੱਤੇ ਨਹੀਂ। ਕੀ ਤੁਸੀਂ ਇਹ ਬੱਡੀ ਨੂੰ ਸ਼ਾਮਲ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?"
+msgstr ""
+"%s ਲੋਕਲ ਲਿਸਟ ਉੱਤੇ ਹੈ, ਪਰ ਸਰਵਰ ਲਿਸਟ ਉੱਤੇ ਨਹੀਂ। ਕੀ ਤੁਸੀਂ ਇਹ ਬੱਡੀ ਨੂੰ ਸ਼ਾਮਲ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?"
+#, c-format
msgid "Unable to parse message"
msgstr "ਸੁਨੇਹਾ ਪਾਰਸ ਕਰਨ ਲਈ ਅਸਫ਼ਲ"
+#, c-format
msgid "Syntax Error (probably a client bug)"
msgstr "ਸੰਟੈਕਸ ਗਤੀ (ਇੱਕ ਕਲਾਇਟ ਬੱਗ ਹੈ)"
+#, c-format
msgid "Invalid email address"
msgstr "ਗਲਤ ਈਮੇਲ ਐਡਰੈੱਸ"
+#, c-format
msgid "User does not exist"
msgstr "ਯੂਜ਼ਰ ਮੌਜੂਦ ਨਹੀਂ ਹੈ"
+#, c-format
msgid "Fully qualified domain name missing"
msgstr "ਫੂਲ ਕੁਆਲੀਫਾਇਡ ਡੋਮੇਨ ਨਾਂ (FQDN) ਗੁੰਮ ਹੈ"
+#, c-format
msgid "Already logged in"
msgstr "ਪਹਿਲਾਂ ਹੀ ਲਾਗਇਨ ਹੈ"
+#, c-format
msgid "Invalid username"
msgstr "ਗਲਤ ਯੂਜ਼ਰ ਨਾਂ"
+#, c-format
msgid "Invalid friendly name"
msgstr "ਗਲਤ ਦੋਸਤਾਨਾ ਨਾਂ"
+#, c-format
msgid "List full"
msgstr "ਲਿਸਟ ਭਰ ਗਈ"
+#, c-format
msgid "Already there"
msgstr "ਪਹਿਲਾਂ ਹੀ ਉਥੇ ਹੈ"
+#, c-format
msgid "Not on list"
msgstr "ਲਿਸਟ ਉੱਤੇ ਨਹੀਂ"
+#, c-format
msgid "User is offline"
msgstr "ਯੂਜ਼ਰ ਆਫਲਾਇਨ ਹੈ"
+#, c-format
msgid "Already in the mode"
msgstr "ਪਹਿਲਾਂ ਹੀ ਮੋਡ 'ਚ ਹੈ"
+#, c-format
msgid "Already in opposite list"
msgstr "ਪਹਿਲਾਂ ਹੀ ਉਲਟ ਲਿਸਟ ਵਿੱਚ ਹੈ"
+#, c-format
msgid "Too many groups"
msgstr "ਕਈ ਗਰੁੱਪ ਹਨ"
+#, c-format
msgid "Invalid group"
msgstr "ਗਲਤ ਗਰੁੱਪ"
+#, c-format
msgid "User not in group"
msgstr "ਯੂਜ਼ਰ ਗਰੁੱਪ 'ਚ ਨਹੀਂ ਹੈ"
+#, c-format
msgid "Group name too long"
msgstr "ਗਰੁੱਪ ਨਾਂ ਬਹੁਤ ਵੱਡਾ ਹੈ"
+#, c-format
msgid "Cannot remove group zero"
msgstr "ਗਰੁੱਪ ਜ਼ੀਰੋ ਹਟਾਇਆ ਨਹੀਂ ਜਾ ਸਕਦਾ ਹੈ"
+#, c-format
msgid "Tried to add a user to a group that doesn't exist"
msgstr "ਇੱਕ ਯੂਜ਼ਰ ਨੂੰ ਇੱਕ ਗਰੁੱਪ ਵਿੱਚ ਜੋੜਨ ਦੀ ਕੋਸ਼ਿਸ਼, ਜੋ ਕਿ ਮੌਜੂਦ ਹੀ ਨਹੀ ਹੈ।"
+#, c-format
msgid "Switchboard failed"
msgstr "ਸਵਿੱਚਬੋਰਡ ਫੇਲ੍ਹ ਹੋਇਆ"
+#, c-format
msgid "Notify transfer failed"
msgstr "ਨੋਟੀਫਾਈ ਟਰਾਂਸਫਰ ਫੇਲ੍ਹ"
+#, c-format
msgid "Required fields missing"
msgstr "ਲੋੜੀਦੇ ਖੇਤਰ ਗੁੰਮ ਹਨ"
+#, c-format
msgid "Too many hits to a FND"
msgstr "ਇੱਕ FND ਲਈ ਬਹੁਤੀਆਂ ਹਿੱਟਾਂ"
+#, c-format
msgid "Not logged in"
msgstr "ਲਾਗਇਨ ਨਹੀਂ ਹੈ"
+#, c-format
msgid "Service temporarily unavailable"
msgstr "ਸਰਵਿਸ ਆਰਜ਼ੀ ਰੂਪ 'ਚ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ"
+#, c-format
msgid "Database server error"
msgstr "ਡਾਟਾਬੇਸ ਸਰਵਰ ਗਲਤੀ"
+#, c-format
msgid "Command disabled"
msgstr "ਕਮਾਂਡ ਆਯੋਗ"
+#, c-format
msgid "File operation error"
msgstr "ਫਾਇਲ ਕਾਰਵਾਈ ਗਲਤੀ"
+#, c-format
msgid "Memory allocation error"
msgstr "ਮੈਮੋਰੀ ਜਾਰੀ ਗਲਤੀ"
+#, c-format
msgid "Wrong CHL value sent to server"
msgstr "ਗਲਤ CHL ਮੁੱਲ ਸਰਵਰ ਨੂੰ ਭੇਜਿਆ"
+#, c-format
msgid "Server busy"
msgstr "ਸਰਵਰ ਰੁੱਝਿਆ ਹੈ"
+#, c-format
msgid "Server unavailable"
msgstr "ਸਰਵਰ ਉਪਲੱਬਧ ਨਹੀਂ"
+#, c-format
msgid "Peer notification server down"
msgstr "ਪੀਰੀਅਰ ਨੋਟੀਫਿਕੇਸ਼ਨ ਸਰਵਰ ਬੰਦ ਹੈ"
+#, c-format
msgid "Database connect error"
msgstr "ਡਾਟਾਬੇਸ ਕੁਨੈਕਸ਼ਨ ਗਲਤੀ"
+#, c-format
msgid "Server is going down (abandon ship)"
msgstr "ਸਰਵਰ ਬੰਦ ਹੋ ਰਿਹਾ ਹੈ (ਡੁੱਬਦਾ ਜਹਾਜ਼)"
+#, c-format
msgid "Error creating connection"
msgstr "ਕੁਨੈਕਸ਼ਨ ਬਣਾਉਣ ਦੌਰਾਨ ਗਲਤੀ"
+#, c-format
msgid "CVR parameters are either unknown or not allowed"
msgstr "CVR ਪੈਰਾਮੀਟਰ ਜਾਂ ਤਾਂ ਅਣਜਾਣ ਹੈ ਜਾਂ ਮਨਜ਼ੂਰ ਨਹੀਂ ਹੈ।"
+#, c-format
msgid "Unable to write"
msgstr "ਲਿਖਣ ਲਈ ਅਸਫਲ"
+#, c-format
msgid "Session overload"
msgstr "ਸ਼ੈਸ਼ਨ ਓਵਰ-ਲੋਡ ਹੋ ਗਿਆ"
+#, c-format
msgid "User is too active"
msgstr "ਯੂਜ਼ਰ ਬਹੁਤ ਛੋਟਾ ਹੈ"
+#, c-format
msgid "Too many sessions"
msgstr "ਕਈ ਸ਼ੈਸ਼ਨ ਹਨ"
+#, c-format
msgid "Passport not verified"
msgstr "ਪਾਸਪੋਰਟ ਜਾਂਚਿਆ ਨਹੀਂ ਹੈ"
+#, c-format
msgid "Bad friend file"
msgstr "ਗਲਤ ਮਿੱਤਰ ਫਾਇਲ"
+#, c-format
msgid "Not expected"
msgstr "ਲੋੜ ਨਹੀਂ ਸੀ"
+#, c-format
msgid "Friendly name changes too rapidly"
msgstr "ਦੋਸਤਾਨਾ ਨਾਂ ਬਹੁਤ ਤੇਜ਼ੀ ਨਾਲ ਬਦਲਿਆ"
+#, c-format
msgid "Server too busy"
msgstr "ਸਰਵਰ ਰੁਝਿਆ"
+#, c-format
msgid "Authentication failed"
msgstr "ਪ੍ਰਮਾਣਿਕਤਾ ਅਸਫਲ"
+#, c-format
msgid "Not allowed when offline"
msgstr "ਜਦੋਂ ਆਫਲਾਇਨ ਹੋਵੇ ਤਾਂ ਮਨਜ਼ੂਰ ਨਹੀਂ"
+#, c-format
msgid "Not accepting new users"
msgstr "ਨਵੇਂ ਯੂਜ਼ਰ ਮਨਜ਼ੂਰ ਨਹੀਂ ਹਨ"
+#, c-format
msgid "Kids Passport without parental consent"
msgstr "ਬੱਚਾ ਪਾਸਪੋਰਟ ਬਿਨਾਂ ਮਾਪਿਆਂ ਦੀ ਸਹਿਮਤੀ ਦੇ"
+#, c-format
msgid "Passport account not yet verified"
msgstr "ਪਾਸਪੋਰਟ ਅਕਾਊਂਟ ਹਾਲੇ ਜਾਂਚਿਆ ਨਹੀਂ ਗਿਆ"
msgid "Passport account suspended"
msgstr "ਪਾਸਪੋਰਟ ਅਕਾਊਂਟ ਸਸਪੈਂਡ ਕੀਤਾ"
+#, c-format
msgid "Bad ticket"
msgstr "ਗਲਤ ਟਿਕਟ"
@@ -4811,7 +5055,8 @@ msgid "No text is blocked for this account."
msgstr "ਇਸ ਅਕਾਊਂਟ ਲਈ ਕੋਈ ਟੈਕਸਟ ਬਲਾਕ ਨਹੀਂ ਹੈ।"
#, c-format
-msgid "MSN servers are currently blocking the following regular expressions:<br/>%s"
+msgid ""
+"MSN servers are currently blocking the following regular expressions:<br/>%s"
msgstr "MSN ਸਰਵਰਾਂ ਉੱਤੇ ਹੇਠ ਦਿੱਤੇ ਨਿਯਮਤ ਸਮੀਕਰਨ ਪਾਬੰਦੀ ਲਗਾਏ ਗਏ ਹਨ: <br/>%s"
msgid "This account does not have email enabled."
@@ -5180,8 +5425,8 @@ msgid ""
"Message was not sent because the system is unavailable. This normally "
"happens when the user is blocked or does not exist."
msgstr ""
-"ਸੁਨੇਹਾ ਭੇਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ, ਕਿਉਂਕਿ ਸਿਸਟਮ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ। ਇਹ ਅਕਸਰ ਤਾਂ ਹੁੰਦਾ ਹੈ, ਜਦੋਂ "
-"ਯੂਜ਼ਰ ਉੱਤੇ ਪਾਬੰਦੀ ਹੋਵੇ ਜਾਂ ਮੌਜੂਦ ਨਾ ਹੋਵੇ।"
+"ਸੁਨੇਹਾ ਭੇਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ, ਕਿਉਂਕਿ ਸਿਸਟਮ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ। ਇਹ ਅਕਸਰ ਤਾਂ ਹੁੰਦਾ ਹੈ, ਜਦੋਂ ਯੂਜ਼ਰ ਉੱਤੇ "
+"ਪਾਬੰਦੀ ਹੋਵੇ ਜਾਂ ਮੌਜੂਦ ਨਾ ਹੋਵੇ।"
msgid "Message was not sent because messages are being sent too quickly."
msgstr "ਸੁਨੇਹਾ ਭੇਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ, ਕਿਉਂਕਿ ਸੁਨੇਹੇ ਬਹੁਤ ਤੇਜ਼ੀ ਨਾਲ ਭੇਜੇ ਜਾ ਰਹੇ ਹਨ।"
@@ -5228,7 +5473,8 @@ msgstr "MSN ਸਰਵਰ ਆਰਜ਼ੀ ਤੌਰ ਤੇ ਬੰਦ ਹੋ ਰ
msgid "Unable to authenticate: %s"
msgstr "ਪ੍ਰਮਾਣਿਕਤਾ ਲਈ ਅਸਫਲ: %s"
-msgid "Your MSN buddy list is temporarily unavailable. Please wait and try again."
+msgid ""
+"Your MSN buddy list is temporarily unavailable. Please wait and try again."
msgstr "ਤੁਹਾਡਾ MSN ਬੱਡੀ ਆਰਜ਼ੀ ਤੌਰ ਉੱਤੇ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ। ਉਡੀਕ ਕਰਕੇ ਮੁੜ ਕੋਸ਼ਿਸ ਕਰੋ ਜੀ।"
msgid "Handshaking"
@@ -5280,7 +5526,8 @@ msgstr ""
"ਸੁਨੇਹਾ ਭੇਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ, ਕਿਉਂਕਿ ਅਸੀਂ ਸਰਵਰ ਨਾਲ ਸ਼ੈਸ਼ਨ ਬਣਾਉਣ ਲਈ ਅਸਮਰੱਥ ਹਾਂ। ਇਹ ਇੱਕ ਸਮੱਸਿਆ "
"ਜਾਪਦੀ ਹੈ, ਕੁਝ ਮਿੰਟ ਬਾਅਦ ਟਰਾਈ ਕਰੋ ਜੀ:"
-msgid "Message could not be sent because an error with the switchboard occurred:"
+msgid ""
+"Message could not be sent because an error with the switchboard occurred:"
msgstr "ਸਵਿੱਚਬੋਰਡ ਗਲਤੀ ਆਉਣ ਕਰਕੇ ਸੁਨੇਹਾ ਭੇਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ:"
msgid "Message may have not been sent because an unknown error occurred:"
@@ -5406,8 +5653,9 @@ msgid ""
"myspace.com/index.cfm?fuseaction=accountSettings.changePassword and try "
"again."
msgstr ""
-"%s ਤੁਹਾਡਾ ਪਾਸਵਰਡ %d ਅੱਖਰਾਂ ਦਾ ਹੈ, ਜੋ ਕਿ MySpaceIM ਲਈ %d ਦੀ ਲੰਬਾਈ ਤੋਂ ਵੱਧ ਗਿਆ ਹੈ। ਆਪਣਾ ਪਾਸਵਰਡ http://profileedit."
-"myspace.com/index.cfm?fuseaction=accountSettings.changePassword ਉੱਤੇ ਛੋਟਾ ਕਰਕੇ ਮੁੜ-ਟਰਾਈ ਕਰੋ ਜੀ।"
+"%s ਤੁਹਾਡਾ ਪਾਸਵਰਡ %d ਅੱਖਰਾਂ ਦਾ ਹੈ, ਜੋ ਕਿ MySpaceIM ਲਈ %d ਦੀ ਲੰਬਾਈ ਤੋਂ ਵੱਧ ਗਿਆ ਹੈ। ਆਪਣਾ "
+"ਪਾਸਵਰਡ http://profileedit.myspace.com/index.cfm?fuseaction=accountSettings."
+"changePassword ਉੱਤੇ ਛੋਟਾ ਕਰਕੇ ਮੁੜ-ਟਰਾਈ ਕਰੋ ਜੀ।"
msgid "MySpaceIM Error"
msgstr "MySpaceIM ਗਲਤੀ"
@@ -5899,7 +6147,8 @@ msgid "You have been logged out because you logged in at another workstation."
msgstr "ਤੁਸੀਂ ਲਾਗ ਆਉਟ ਹੋ ਗਏ ਹੋ, ਕਿਉਕਿ ਤੁਸੀਂ ਕਿਸੇ ਹੋਰ ਵਰਕਸਟੇਸ਼ਨ ਉੱਤੇ ਲਾਗਇਨ ਹੋ ਗਏ ਹੋ।"
#, c-format
-msgid "%s appears to be offline and did not receive the message that you just sent."
+msgid ""
+"%s appears to be offline and did not receive the message that you just sent."
msgstr "%s ਮੌਜੂਦ ਨਹੀਂ (ਆਫਲਾਇਨ) ਹੈ ਅਤੇ ਤੁਹਾਡੇ ਰਾਹੀਂ ਭੇਜੇ ਸੁਨੇਹੇ ਪ੍ਰਾਪਤ ਨਹੀਂ ਕਰ ਸਕੇਗਾ।"
msgid ""
@@ -6228,11 +6477,11 @@ msgid ""
"Usernames must be a valid email address, or start with a letter and contain "
"only letters, numbers and spaces, or contain only numbers."
msgstr ""
-"ਲਾਗਇਨ ਕਰਨ ਲਈ ਅਸਮਰੱਥ: %s ਵਾਂਗ ਲਾਗਇਨ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ, ਕਿਉਂਕਿ ਯੂਜ਼ਰ-ਨਾਂ ਗਲਤ ਹੈ। "
-"ਯੂਜ਼ਰ ਨਾਂ ਇੱਕ ਵੈਧ ਈਮੇਲ ਐਡਰੈੱਸ ਚਾਹੀਦਾ ਹੈ, ਜਾਂ ਇੱਕ ਅੱਖਰ ਨਾਲ ਸ਼ੁਰੂ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ ਕੇਵਲ "
-"ਅੱਖਰ, ਨੰਬਰ, ਖਾਲੀ ਥਾਂ ਜਾਂ ਕੁਝ ਨੰਬਰ ਹੀ ਹੋ ਸਕਦੇ ਹਨ।"
+"ਲਾਗਇਨ ਕਰਨ ਲਈ ਅਸਮਰੱਥ: %s ਵਾਂਗ ਲਾਗਇਨ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ, ਕਿਉਂਕਿ ਯੂਜ਼ਰ-ਨਾਂ ਗਲਤ ਹੈ। ਯੂਜ਼ਰ "
+"ਨਾਂ ਇੱਕ ਵੈਧ ਈਮੇਲ ਐਡਰੈੱਸ ਚਾਹੀਦਾ ਹੈ, ਜਾਂ ਇੱਕ ਅੱਖਰ ਨਾਲ ਸ਼ੁਰੂ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ ਕੇਵਲ ਅੱਖਰ, "
+"ਨੰਬਰ, ਖਾਲੀ ਥਾਂ ਜਾਂ ਕੁਝ ਨੰਬਰ ਹੀ ਹੋ ਸਕਦੇ ਹਨ।"
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr "ਗਲਤ ਯੂਜ਼ਰ-ਨਾਂ ਹੈ।"
@@ -6248,7 +6497,7 @@ msgstr "ਤੁਹਾਡਾ ਅਕਾਊਂਟ ਇਸ ਸਮੇਂ ਮੁਅੱ
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "AOL Instant Messenger ਸਰਵਿਸ ਆਰਜ਼ੀ ਤੌਰ ਉੱਤੇ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ।"
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6396,20 +6645,25 @@ msgstr[0] "ਤੁਸੀਂ %hu ਸੁਨੇਹਾ %s ਵਲੋਂ ਗੁਆ ਲ
msgstr[1] "ਤੁਸੀਂ %hu ਸੁਨੇਹਿਆਂ %s ਵਲੋਂ ਨੂੰ ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਕਿ ਇਹ ਬਹੁਤ ਵੱਡੇ ਹਨ।"
#, c-format
-msgid "You missed %hu message from %s because the rate limit has been exceeded."
-msgid_plural "You missed %hu messages from %s because the rate limit has been exceeded."
+msgid ""
+"You missed %hu message from %s because the rate limit has been exceeded."
+msgid_plural ""
+"You missed %hu messages from %s because the rate limit has been exceeded."
msgstr[0] "ਤੁਸੀਂ %hu ਸੁਨੇਹਾ %s ਵਲੋਂ ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਕਿ ਦਰ ਸੀਮਾ ਹੱਦ ਟੱਪ ਗਈ ਹੈ।"
msgstr[1] "ਤੁਸੀਂ %hu ਸੁਨੇਹਿਆਂ %s ਵਲੋਂ ਨੂੰ ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਕਿ ਦਰ ਸੀਮਾ ਹੱਦ ਟੱਪ ਗਈ ਹੈ।"
#, c-format
-msgid "You missed %hu message from %s because his/her warning level is too high."
-msgid_plural "You missed %hu messages from %s because his/her warning level is too high."
+msgid ""
+"You missed %hu message from %s because his/her warning level is too high."
+msgid_plural ""
+"You missed %hu messages from %s because his/her warning level is too high."
msgstr[0] "ਤੁਸੀਂ %hu ਸੁਨੇਹਾ %s ਵਲੋਂ ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਂਕਿ ਉਸ ਦਾ ਚੇਤਾਵਨੀ ਲੈਵਲ ਵੱਧ ਹੈ।"
msgstr[1] "ਤੁਸੀਂ %hu ਸੁਨੇਹਿਆਂ %s ਵਲੋਂ ਨੂੰ ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਂਕਿ ਉਸ ਦਾ ਚੇਤਾਵਨੀ ਲੈਵਲ ਵੱਧ ਹੈ।"
#, c-format
msgid "You missed %hu message from %s because your warning level is too high."
-msgid_plural "You missed %hu messages from %s because your warning level is too high."
+msgid_plural ""
+"You missed %hu messages from %s because your warning level is too high."
msgstr[0] "ਤੁਸੀਂ %hu ਸੁਨੇਹਾ %s ਵਲੋਂ ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਂਕਿ ਤੁਹਾਡਾ ਚੇਤਾਵਨੀ ਲੈਵਲ ਵੱਧ ਹੈ।"
msgstr[1] "ਤੁਸੀਂ %hu ਸੁਨੇਹਿਆਂ %s ਵਲੋਂ ਨੂੰ ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਂਕਿ ਤੁਹਾਡਾ ਚੇਤਾਵਨੀ ਲੈਵਲ ਵੱਧ ਹੈ"
@@ -6419,7 +6673,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] "ਤੁਸੀਂ %hu ਸੁਨੇਹਾ %s ਵਲੋਂ ਨੂੰ ਅਣਜਾਣੇ ਕਾਰਨ ਕਰਕੇ ਗੁਆ ਲਿਆ ਹੈ।"
msgstr[1] "ਤੁਸੀਂ %hu ਸੁਨੇਹਿਆਂ %s ਵਲੋਂ ਨੂੰ ਅਣਜਾਣੇ ਕਾਰਨ ਕਰਕੇ ਗੁਆ ਲਿਆ ਹੈ।"
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "ਸੁਨੇਹਾ ਭੇਜਣ ਲਈ ਅਸਫਲ ਹੈ: %s"
@@ -6514,7 +6768,8 @@ msgstr "ਅਕਾਊਂਟ ਪੁਸ਼ਟੀ ਮੰਗ"
msgid ""
"Error 0x%04x: Unable to format username because the requested name differs "
"from the original."
-msgstr "ਗਲਤੀ 0x%04x: ਯੂਜ਼ਰ-ਨਾਂ ਫਾਰਮੈਟ ਲਈ ਅਸਮਰੱਥ ਹੈ, ਕਿਉਕਿ ਦਿੱਤਾ ਯੂਜ਼ਰ ਨਾਂ ਅਸਲੀ ਨਾਲੋਂ ਵੱਖਰਾ ਹੈ।"
+msgstr ""
+"ਗਲਤੀ 0x%04x: ਯੂਜ਼ਰ-ਨਾਂ ਫਾਰਮੈਟ ਲਈ ਅਸਮਰੱਥ ਹੈ, ਕਿਉਕਿ ਦਿੱਤਾ ਯੂਜ਼ਰ ਨਾਂ ਅਸਲੀ ਨਾਲੋਂ ਵੱਖਰਾ ਹੈ।"
#, c-format
msgid "Error 0x%04x: Unable to format username because it is invalid."
@@ -6531,14 +6786,16 @@ msgid ""
"Error 0x%04x: Unable to change email address because there is already a "
"request pending for this username."
msgstr ""
-"ਗਲਤੀ 0x%04x: ਈਮੇਲ ਐਡਰੈੱਸ ਬਦਲਣ ਲਈ ਅਸਫਲ ਹੈ, ਕਿਉਕਿ ਇਸ ਯੂਜ਼ਰ-ਨਾਂ ਲਈ ਪਹਿਲਾਂ ਹੀ ਇੱਕ "
-"ਬੇਨਤੀ ਬਕਾਇਆ ਪਈ ਹੈ।"
+"ਗਲਤੀ 0x%04x: ਈਮੇਲ ਐਡਰੈੱਸ ਬਦਲਣ ਲਈ ਅਸਫਲ ਹੈ, ਕਿਉਕਿ ਇਸ ਯੂਜ਼ਰ-ਨਾਂ ਲਈ ਪਹਿਲਾਂ ਹੀ ਇੱਕ ਬੇਨਤੀ "
+"ਬਕਾਇਆ ਪਈ ਹੈ।"
#, c-format
msgid ""
"Error 0x%04x: Unable to change email address because the given address has "
"too many usernames associated with it."
-msgstr "ਗਲਤੀ 0x%04x: ਈਮੇਲ ਐਡਰੈੱਸ ਬਦਲਣ ਲਈ ਅਸਫਲ ਹੈ, ਕਿਉਕਿ ਦਿੱਤੇ ਐਡਰੈੱਸ ਨਾਲ ਬਹੁਤ ਸਾਰੇ ਯੂਜ਼ਰ-ਨਾਂ ਸਬੰਧਤ ਹਨ।"
+msgstr ""
+"ਗਲਤੀ 0x%04x: ਈਮੇਲ ਐਡਰੈੱਸ ਬਦਲਣ ਲਈ ਅਸਫਲ ਹੈ, ਕਿਉਕਿ ਦਿੱਤੇ ਐਡਰੈੱਸ ਨਾਲ ਬਹੁਤ ਸਾਰੇ ਯੂਜ਼ਰ-ਨਾਂ ਸਬੰਧਤ "
+"ਹਨ।"
#, c-format
msgid ""
@@ -6560,7 +6817,8 @@ msgstr "%s ਦਾ ਈਮੇਲ ਐਡਰੈੱਸ %s ਹੈ"
msgid "Account Info"
msgstr "ਅਕਾਊਂਟ ਜਾਣਕਾਰੀ"
-msgid "Your IM Image was not sent. You must be Direct Connected to send IM Images."
+msgid ""
+"Your IM Image was not sent. You must be Direct Connected to send IM Images."
msgstr "ਤੁਹਾਡਾ IM ਭੇਜਿਆ ਨਹੀਂ ਸੀ ਗਿਆ। ਤੁਹਾਨੂੰ IM ਚਿੱਤਰ ਭੇਜਣ ਲਈ ਸਿੱਧਾ ਜੁੜਨਾ ਚਾਹੀਦਾ ਹੈ।"
msgid "Unable to set AIM profile."
@@ -6583,11 +6841,9 @@ msgid_plural ""
"The maximum profile length of %d bytes has been exceeded. It has been "
"truncated for you."
msgstr[0] ""
-"ਪਰੋਫਾਇਲ ਦੀ ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟ ਤੋਂ ਵੱਧ ਗਈ ਹੈ। ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) ਦਿੱਤਾ "
-"ਹੈ।"
+"ਪਰੋਫਾਇਲ ਦੀ ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟ ਤੋਂ ਵੱਧ ਗਈ ਹੈ। ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) ਦਿੱਤਾ ਹੈ।"
msgstr[1] ""
-"ਪਰੋਫਾਇਲ ਦੀ ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟਾਂ ਤੋਂ ਵੱਧ ਗਈ ਹੈ।ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) "
-"ਦਿੱਤਾ ਹੈ।"
+"ਪਰੋਫਾਇਲ ਦੀ ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟਾਂ ਤੋਂ ਵੱਧ ਗਈ ਹੈ।ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) ਦਿੱਤਾ ਹੈ।"
msgid "Profile too long."
msgstr "ਪਰੋਫਾਇਲ ਬਹੁਤ ਲੰਮਾ ਹੈ।"
@@ -6599,8 +6855,10 @@ msgid ""
msgid_plural ""
"The maximum away message length of %d bytes has been exceeded. It has been "
"truncated for you."
-msgstr[0] "ਸੁਨੇਹੇ ਦੀ ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟ ਤੋਂ ਵੱਧ ਗਈ ਹੈ। ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) ਦਿੱਤਾ ਹੈ।"
-msgstr[1] "ਸੁਨੇਹੇ ਦੀ ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟਾਂ ਤੋਂ ਵੱਧ ਗਈ ਹੈ। ਗੇਮ ਨੇ ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) ਦਿੱਤਾ ਹੈ।"
+msgstr[0] ""
+"ਸੁਨੇਹੇ ਦੀ ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟ ਤੋਂ ਵੱਧ ਗਈ ਹੈ। ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) ਦਿੱਤਾ ਹੈ।"
+msgstr[1] ""
+"ਸੁਨੇਹੇ ਦੀ ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟਾਂ ਤੋਂ ਵੱਧ ਗਈ ਹੈ। ਗੇਮ ਨੇ ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) ਦਿੱਤਾ ਹੈ।"
msgid "Away message too long."
msgstr "ਦੂਰ ਸੁਨੇਹਾ ਬਹੁਤ ਲੰਮਾ ਹੈ।"
@@ -6672,7 +6930,8 @@ msgid ""
"following reason:\n"
"%s"
msgstr ""
-"ਯੂਜ਼ਰ %s ਨੇ ਤੁਹਾਨੂੰ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਿਲ ਕਰਨ ਦੀ ਬੇਨਤੀ ਹੇਠ ਦਿੱਤੇ ਕਾਰਨ ਕਰਕੇ ਠੁਕਰਾ ਦਿੱਤੀ ਹੈ:\n"
+"ਯੂਜ਼ਰ %s ਨੇ ਤੁਹਾਨੂੰ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਿਲ ਕਰਨ ਦੀ ਬੇਨਤੀ ਹੇਠ ਦਿੱਤੇ ਕਾਰਨ ਕਰਕੇ ਠੁਕਰਾ ਦਿੱਤੀ "
+"ਹੈ:\n"
"%s"
msgid "Authorization Denied"
@@ -6986,6 +7245,38 @@ msgstr "ਅੱਪਡੇਟ"
msgid "Could not change buddy information."
msgstr "ਬੱਡੀ ਜਾਣਕਾਰੀ ਬਦਲੀ ਨਹੀਂ ਜਾ ਸਕੀ"
+msgid "Mobile"
+msgstr "ਮੋਬਾਇਲ"
+
+msgid "Note"
+msgstr "ਨੋਟ"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "ਬੱਡੀ ਆਈਕਾਨ"
+
+msgid "Change his/her memo as you like"
+msgstr ""
+
+#, fuzzy
+msgid "_Modify"
+msgstr "ਸੋਧ"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "ਸੋਧ"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "ਸਰਵਰ ਰੁੱਝਿਆ ਹੈ"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
#, c-format
msgid "%u requires verification"
msgstr "%u ਲਈ ਪਰਮਾਣਿਕਤਾ ਦੀ ਲੋੜ"
@@ -7294,6 +7585,13 @@ msgstr "<p><b>ਪਿਆਰੇ ਪੈਚ ਲੇਖਕ</b>:<br>\n"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<p><b>ਰਸੀਦ</b>:<br>\n"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<p><b>ਅਸਲੀ ਲੇਖਕ</b>:<br>\n"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr "<p><i>ਅਤੇ ਸਾਰੇ ਮੁੰਡੇ ਪਿਛਲੇ ਕਮਰੇ ਵਿੱਚ ਹਨ...</i><br>\n"
@@ -7319,6 +7617,10 @@ msgstr "ਸਭ QQ ਕਉਨ ਅੱਪਡੇਟ ਕਰੋ"
msgid "About OpenQ"
msgstr "OpenQ ਬਾਰੇ"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "ਐਡਰੈੱਸ ਸੋਧ"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7426,7 +7728,6 @@ msgstr ""
"ਲਾਗਇਨ ਕਰਨ ਦੌਰਾਨ ਅਣਜਾਣ ਜਵਾਬ ਕੋਡ (0x%02X):\n"
"%s"
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "ਕੁਨੈਕਟ ਕਰਨ ਲਈ ਅਸਮਰੱਥ ਹੈ।"
@@ -7571,7 +7872,8 @@ msgid "Starting Services"
msgstr "ਸਰਵਿਸਾਂ ਸ਼ੁਰੂ ਕਰੋ"
#, c-format
-msgid "A Sametime administrator has issued the following announcement on server %s"
+msgid ""
+"A Sametime administrator has issued the following announcement on server %s"
msgstr "ਇੱਕ ਸੇਮ-ਟਾਈਮ ਐਡਮਿਨਸਟੇਟਰ ਨੇ %s ਸਰਵਰ ਉੱਤੇ ਅੱਗੇ ਦਿੱਤੇ ਐਲਾਨ ਕੀਤਾ ਹੈ"
msgid "Sametime Administrator Announcement"
@@ -7668,7 +7970,8 @@ msgstr "ਕੋਈ ਸੇਮਟਾਈਮ ਕਮਿਊਨਟੀ ਸਰਵਰ ਦ
msgid ""
"No host or IP address has been configured for the Meanwhile account %s. "
"Please enter one below to continue logging in."
-msgstr "ਮੀਨਵਾਇਲ ਅਕਾਊਂਟ %s ਲਈ ਕੋਈ ਹੋਸਟ ਜਾਂ IP ਐਡਰੈੱਸ ਸੰਰਚਿਤ ਨਹੀਂ ਹੈ। ਲਾਗਇਨ ਕਰਨ ਵਾਸਤੇ ਹੇਠਾਂ ਇੱਕ ਦਿਓ।"
+msgstr ""
+"ਮੀਨਵਾਇਲ ਅਕਾਊਂਟ %s ਲਈ ਕੋਈ ਹੋਸਟ ਜਾਂ IP ਐਡਰੈੱਸ ਸੰਰਚਿਤ ਨਹੀਂ ਹੈ। ਲਾਗਇਨ ਕਰਨ ਵਾਸਤੇ ਹੇਠਾਂ ਇੱਕ ਦਿਓ।"
msgid "Meanwhile Connection Setup"
msgstr "ਮੀਨਵਾਇਲ ਕੁਨੈਕਸ਼ਨ ਸੈੱਟਅੱਪ"
@@ -7786,7 +8089,8 @@ msgstr "ਗਰੁੱਪ ਸ਼ਾਮਲ ਕਰਨ ਲਈ ਅਸਮਰੱਥ: ਗ
msgid ""
"The identifier '%s' did not match any Notes Address Book groups in your "
"Sametime community."
-msgstr "ਪਛਾਣਕਰਤਾ '%s' ਤੁਹਾਡੀ ਸੇਮ-ਟਾਈਮ ਕਮਿਊਨਟੀ ਵਿੱਚ ਕਿਸੇ ਨੋਟ ਐਡਰੈੱਸ ਬੁੱਕ ਗਰੁੱਪ ਨਾਲ ਮੇਲ ਨਹੀਂ ਖਾਂਦਾ ਹੈ।"
+msgstr ""
+"ਪਛਾਣਕਰਤਾ '%s' ਤੁਹਾਡੀ ਸੇਮ-ਟਾਈਮ ਕਮਿਊਨਟੀ ਵਿੱਚ ਕਿਸੇ ਨੋਟ ਐਡਰੈੱਸ ਬੁੱਕ ਗਰੁੱਪ ਨਾਲ ਮੇਲ ਨਹੀਂ ਖਾਂਦਾ ਹੈ।"
msgid "Notes Address Book Group"
msgstr "ਨੋਟ ਐਡਰੈੱਸ ਕਿਤਾਬ ਗਰੁੱਪ"
@@ -7830,7 +8134,8 @@ msgstr "ਇੱਕ ਯੂਜ਼ਰ ਲਈ ਖੋਜ"
msgid ""
"Enter a name or partial ID in the field below to search for matching users "
"in your Sametime community."
-msgstr "ਆਪਣੀ ਸੇਮ-ਟਾਈਮ ਕਮਿਊਨਟੀ ਵਿੱਚ ਰਲਦੇ ਯੂਜ਼ਰ ਖੋਜਣ ਵਾਸਤੇ ਅੱਗੇ ਖੇਤਰ ਵਿੱਚ ਨਾਂ ਜਾਂ ਅਧੂਰਾ ID ਦਿਓ।"
+msgstr ""
+"ਆਪਣੀ ਸੇਮ-ਟਾਈਮ ਕਮਿਊਨਟੀ ਵਿੱਚ ਰਲਦੇ ਯੂਜ਼ਰ ਖੋਜਣ ਵਾਸਤੇ ਅੱਗੇ ਖੇਤਰ ਵਿੱਚ ਨਾਂ ਜਾਂ ਅਧੂਰਾ ID ਦਿਓ।"
msgid "User Search"
msgstr "ਯੂਜ਼ਰ ਖੋਜ"
@@ -7966,12 +8271,14 @@ msgstr "ਠੀਕ ਯੂਜ਼ਰ ਚੁਣੋ"
msgid ""
"More than one user was found with the same public key. Select the correct "
"user from the list to add to the buddy list."
-msgstr "ਇੱਕ ਤੋਂ ਵਧੇਰੇ ਯੂਜ਼ਰ ਇੱਕ ਪਬਲਿਕ ਕੁੰਜੀ ਨਾਲ ਮਿਲੇ ਹਨ। ਲਿਸਟ ਵਿੱਚ ਬੱਡੀ ਨੂੰ ਸ਼ਾਮਿਲ ਕਰਨ ਲਈ ਠੀਕ ਯੂਜ਼ਰ ਚੁਣੋ।"
+msgstr ""
+"ਇੱਕ ਤੋਂ ਵਧੇਰੇ ਯੂਜ਼ਰ ਇੱਕ ਪਬਲਿਕ ਕੁੰਜੀ ਨਾਲ ਮਿਲੇ ਹਨ। ਲਿਸਟ ਵਿੱਚ ਬੱਡੀ ਨੂੰ ਸ਼ਾਮਿਲ ਕਰਨ ਲਈ ਠੀਕ ਯੂਜ਼ਰ ਚੁਣੋ।"
msgid ""
"More than one user was found with the same name. Select the correct user "
"from the list to add to the buddy list."
-msgstr "ਇੱਕ ਤੋਂ ਵਧੇਰੇ ਯੂਜ਼ਰ ਇਸੇ ਨਾਂ ਨਾਲ ਹੀ ਲੱਭੇ ਹਨ। ਲਿਸਟ ਵਿੱਚ ਬੱਡੀ ਨੂੰ ਸ਼ਾਮਿਲ ਕਰਨ ਲਈ ਠੀਕ ਯੂਜ਼ਰ ਚੁਣੋ।"
+msgstr ""
+"ਇੱਕ ਤੋਂ ਵਧੇਰੇ ਯੂਜ਼ਰ ਇਸੇ ਨਾਂ ਨਾਲ ਹੀ ਲੱਭੇ ਹਨ। ਲਿਸਟ ਵਿੱਚ ਬੱਡੀ ਨੂੰ ਸ਼ਾਮਿਲ ਕਰਨ ਲਈ ਠੀਕ ਯੂਜ਼ਰ ਚੁਣੋ।"
msgid "Detached"
msgstr "ਅੱਡ"
@@ -8095,6 +8402,7 @@ msgstr "<br><b>ਚੈਨਲ HMAC:</b> %s"
msgid "<br><b>Channel Topic:</b><br>%s"
msgstr "<br><b>ਚੈਨਲ ਵਿਸ਼ਾ:</b><br>%s"
+#, c-format
msgid "<br><b>Channel Modes:</b> "
msgstr "<br><b>ਚੈਨਲ ਮੋਡ:</b> "
@@ -8119,6 +8427,7 @@ msgstr "ਚੈਨਲ ਪ੍ਹੈਰਾ"
msgid "Channel Public Keys List"
msgstr "ਚੈਨਲ ਪਬਲਿਕ ਕੁੰਜੀ ਲਿਸਟ"
+#, c-format
msgid ""
"Channel authentication is used to secure the channel from unauthorized "
"access. The authentication may be based on passphrase and digital "
@@ -8193,7 +8502,8 @@ msgid "Set Secret Channel"
msgstr "ਗੁਪਤ ਚੈਨਲ ਸੈੱਟ ਕਰੋ"
#, c-format
-msgid "You have to join the %s channel before you are able to join the private group"
+msgid ""
+"You have to join the %s channel before you are able to join the private group"
msgstr "ਤੁਹਾਨੂੰ ਪ੍ਰਾਈਵੇਟ ਗਰੁੱਪ ਵਿੱਚ ਦਾਖਲ ਹੋਣ ਤੋਂ ਪਹਿਲਾਂ %s ਚੈਨਲ ਵਿੱਚ ਦਾਖਲ ਹੋਣਾ ਪਵੇਗਾ"
msgid "Join Private Group"
@@ -8303,9 +8613,6 @@ msgstr "ਸੰਗਠਨ"
msgid "Unit"
msgstr "ਯੂਨਿਟ"
-msgid "Note"
-msgstr "ਨੋਟ"
-
msgid "Join Chat"
msgstr "ਚੈਟ ਜੁਆਇੰਨ"
@@ -8474,7 +8781,8 @@ msgstr "SILC ਸਰਵਰ ਨਾਲ ਜੁੜਨ ਲਈ ਸਮੱਸਿਆ ਹ
msgid "Key Exchange failed"
msgstr "ਕੁੰਜੀ ਤਬਾਦਲਾ ਅਸਫਲ"
-msgid "Resuming detached session failed. Press Reconnect to create new connection."
+msgid ""
+"Resuming detached session failed. Press Reconnect to create new connection."
msgstr "ਮੁੜ-ਜੁੜਨ ਸਮੇਂ ਸ਼ੈਸ਼ਨ ਅਸਫਲ ਹੈ। ਨਵਾਂ ਕੁਨੈਕਸ਼ਨ ਬਣਾਉਣ ਲਈ ਮੁੜ-ਜੁੜੋ ਨੂੰ ਦਬਾਓ।"
msgid "Connection failed"
@@ -8509,6 +8817,7 @@ msgstr "%s ਡਾਊਨਲੋਡ: %s"
msgid "Your Current Mood"
msgstr "ਤੁਹਾਡਾ ਮੌਜੂਦਾ ਚਿੱਤ"
+#, c-format
msgid "Normal"
msgstr "ਸਧਾਰਨ"
@@ -8654,7 +8963,8 @@ msgid "msg &lt;nick&gt; &lt;message&gt;: Send a private message to a user"
msgstr "msg &lt;nick&gt; &lt;message&gt;: Send a private message to a user"
msgid "query &lt;nick&gt; [&lt;message&gt;]: Send a private message to a user"
-msgstr "query &lt;nick&gt; [&lt;message&gt;]: Send a private message to a user"
+msgstr ""
+"query &lt;nick&gt; [&lt;message&gt;]: Send a private message to a user"
msgid "motd: View the server's Message Of The Day"
msgstr "motd: ਸਰਵਰ ਦਾ ਦਿਨ ਦਾ ਸੁਨੇਹਾ ਵੇਖੋ"
@@ -8878,33 +9188,43 @@ msgstr "ਵਾਇਟਬੋਰਡ"
msgid "No server statistics available"
msgstr "ਕੋਈ ਸਰਵਰ ਅੰਕੜੇ ਉਪਲੱਬਧ ਨਹੀਂ"
+#, c-format
msgid "Failure: Version mismatch, upgrade your client"
msgstr "ਅਸਫਲ: ਵਰਜਨ ਮੇਲ ਨਹੀਂ ਖਾਂਦਾ ਹੈ, ਤੁਹਾਨੂੰ ਨਵੇਂ ਕਲਾਇਟ ਦੀ ਲੋੜ ਹੈ"
+#, c-format
msgid "Failure: Remote does not trust/support your public key"
msgstr "ਅਸਫਲ: ਰਿਮੋਟ ਤੁਹਾਡੀ ਪਬਲਿਕ ਕੁੰਜੀ ਉੱਤੇ ਭਰੋਸਾ/ਸਹਾਇਕ ਨਹੀਂ ਹੈ"
+#, c-format
msgid "Failure: Remote does not support proposed KE group"
msgstr "ਅਸਫਲ: ਰਿਮੋਟ ਦਿੱਤੇ KE ਗਰੁੱਪ ਲਈ ਸਹਾਇਕ ਨਹੀਂ ਹੈ"
+#, c-format
msgid "Failure: Remote does not support proposed cipher"
msgstr "ਅਸਫਲ: ਰਿਮੋਟ ਦਿੱਤੇ ਸੀਫ਼ਰ ਲਈ ਸਹਾਇਕ ਨਹੀਂ ਹੈ"
+#, c-format
msgid "Failure: Remote does not support proposed PKCS"
msgstr "ਅਸਫਲ: ਰਿਮੋਟ ਦਿੱਤੇ PKCS ਲਈ ਸਹਾਇਕ ਨਹੀਂ ਹੈ"
+#, c-format
msgid "Failure: Remote does not support proposed hash function"
msgstr "ਅਸਫਲ: ਰਿਮੋਟ ਦਿੱਤੇ ਹੈਂਸ ਲਈ ਸਹਾਇਕ ਨਹੀਂ ਹੈ"
+#, c-format
msgid "Failure: Remote does not support proposed HMAC"
msgstr "ਅਸਫਲ: ਰਿਮੋਟ ਦਿੱਤੇ HMAC ਲਈ ਸਹਾਇਕ ਨਹੀਂ ਹੈ"
+#, c-format
msgid "Failure: Incorrect signature"
msgstr "ਗਲਸ: ਗਲਤ ਦਸਤਖਤ"
+#, c-format
msgid "Failure: Invalid cookie"
msgstr "ਅਸਫਲ: ਗਲਤ ਕੂਕੀ"
+#, c-format
msgid "Failure: Authentication failed"
msgstr "ਅਸਫ਼ਲ: ਪ੍ਰਮਾਣਕਿਤਾ ਅਸਫ਼ਲ"
@@ -8973,178 +9293,12 @@ msgid "Auth Domain"
msgstr "ਪਰਮਾਣਿਤ ਡੋਮੇਨ"
#, c-format
-msgid "Looking up %s"
-msgstr "%s ਦੀ ਖੋਜ ਜਾਰੀ ਹੈ"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "%s ਨਾਲ ਜੁੜਨ ਲਈ ਅਸਫਲ"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "ਦਾਖਲ: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "ਫਾਇਲ %s ਲਿਖਣ ਲਈ ਅਸਫ਼ਲ ਹੈ।"
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "ਫਾਇਲ %s ਪੜਨ ਲਈ ਅਸਫ਼ਲ ਹੈ।"
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "ਸੁਨੇਹਾ ਬਹੁਤ ਲੰਮਾ ਹੈ, ਆਖਰੀ %s ਬਾਈਟ ਹਟਾਏ ਗਏ ਹਨ।"
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s ਇਸ ਸਮੇਂ ਲਾਗਇਨ ਨਹੀਂ ਹੈ।"
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "%s ਲਈ ਉਡੀਕ ਸਵੀਕਾਰ ਨਹੀਂ ਹੈ।"
-
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "ਇੱਕ ਸੁਨੇਹਾ ਗੁਆ ਦਿੱਤਾ ਗਿਆ ਹੈ, ਤੁਸੀਂ ਸਰਵਰ ਗਤੀ ਸੀਮਾ ਤੋਂ ਵੱਧ ਗਏ ਹੋ।"
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "%s ਵਿੱਚ ਗੱਲਬਾਤ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ।"
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "ਤੁਸੀਂ %s ਨੂੰ ਸੁਨੇਹੇ ਬਹੁਤ ਤੇਜ਼ੀ ਨਾਲ ਭੇਜ ਰਹੇ ਹੋ।"
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "ਤੁਸੀਂ %s ਤੋਂ ਇੱਕ IM ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਕਿ ਇਹ ਵੱਡਾ ਸੀ"
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "ਤੁਸੀਂ %s ਤੋਂ ਇੱਕ IM ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਕਿ ਇਹ ਬਹੁਤ ਤੇਜ਼ੀ ਨਾਲ ਭੇਜਿਆ ਗਿਆ ਹੈ।"
-
-msgid "Failure."
-msgstr "ਅਸਫਲ ਹੈ।"
-
-msgid "Too many matches."
-msgstr "ਬਹੁਤ ਮੇਲ ਹਨ।"
-
-msgid "Need more qualifiers."
-msgstr "ਹੋਰ ਯੋਗਤਾ ਦੀ ਲੋੜ ਹੈ।"
-
-msgid "Dir service temporarily unavailable."
-msgstr "ਡਾਈ ਸਰਵਿਸ ਆਰਜ਼ੀ ਤੌਰ ਤੇ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ।"
-
-msgid "Email lookup restricted."
-msgstr "ਈਮੇਲ ਖੋਜ ਪਾਬੰਦੀ ਹੈ।"
-
-msgid "Keyword ignored."
-msgstr "ਸ਼ਬਦ ਅਣਡਿੱਠਾ"
-
-msgid "No keywords."
-msgstr "ਕੋਈ ਸ਼ਬਦ ਨਹੀਂ ਹੈ।"
-
-msgid "User has no directory information."
-msgstr "ਯੂਜ਼ਰ ਦੀ ਕੋਈ ਡਾਇਰੈਕਟਰੀ ਜਾਣਕਾਰੀ ਨਹੀਂ ਹੈ।"
-
-msgid "Country not supported."
-msgstr "ਦੇਸ਼ ਸਹਾਇਕ ਨਹੀਂ ਹੈ।"
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "ਅਣਜਾਣੀ ਅਸਫਲਤਾ: %s"
-
-msgid "Incorrect username or password."
-msgstr "ਗਲਤ ਯੂਜ਼ਰ-ਨਾਂ ਜਾਂ ਪਾਸਵਰਡ।"
-
-msgid "The service is temporarily unavailable."
-msgstr "ਸਰਵਿਸ ਆਰਜ਼ੀ ਤੌਰ ਉੱਤੇ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ।"
-
-msgid "Your warning level is currently too high to log in."
-msgstr "ਤੁਹਾਡਾ ਚੇਤਾਵਨੀ ਲੈਵਲ ਇੰਨਾ ਜ਼ਿਆਦਾ ਹੈ ਕਿ ਲਾਗਇਨ ਨਹੀਂ ਹੋਇਆ ਜਾਂਦਾ ਹੈ।"
-
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
-msgstr ""
-"ਤੁਸੀਂ ਲਗਾਤਾਰ ਜੁੜ ਅਤੇ ਟੁੱਟ ਰਹੇ ਹੋ। ਦਸ ਮਿੰਟ ਦੀ ਉਡੀਕ ਕਰਕੇ ਮੁੜ ਕੋਸ਼ਿਸ ਕਰੋ। ਜੇਕਰ ਜੁੜਨ ਦੀ ਕੋਸ਼ਿਸ "
-"ਕੀਤੀ ਤਾਂ ਹੋਰ ਵੀ ਵਧੇਰੇ ਉਡੀਕ ਕਰਨੀ ਪਵੇਗੀ।"
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "ਇੱਕ ਅਣਜਾਣੀ ਦਾਖਲਾ ਗਲਤੀ ਆਈ ਹੈ: %s"
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "ਅਣਜਾਣੀ ਗਲਤੀ, %d,ਆਈ ਹੈ। ਜਾਣਕਾਰੀ: %s"
-
-msgid "Invalid Groupname"
-msgstr "ਗਲਤ ਗਰੁੱਪ-ਨਾਂ"
-
-msgid "Connection Closed"
-msgstr "ਕੁਨੈਕਸ਼ਨ ਬੰਦ ਹੋਇਆ"
-
-msgid "Waiting for reply..."
-msgstr "ਜਵਾਬ ਦੀ ਉਡੀਕ ਜਾਰੀ ਹੈ..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "TOC ਆਪਣੀ ਵਿਰਾਮ ਸਥਿਤੀ ਤੋਂ ਵਾਪਿਸ ਹੋਇਆ। ਹੁਣ ਤੁਸੀਂ ਸੁਨੇਹੇ ਭੇਜ ਸਕਦੇ ਹੋ।"
-
-msgid "Password Change Successful"
-msgstr "ਪਾਸਵਰਡ ਸਫਲਤਾਪੂਰਕ ਤਬਦੀਲ ਕੀਤਾ ਗਿਆ"
-
-msgid "_Group:"
-msgstr "ਗਰੁੱਪ(_G):"
-
-msgid "Get Dir Info"
-msgstr "ਡਾਇ ਜਾਣਕਾਰੀ ਲਵੋ"
-
-msgid "Set Dir Info"
-msgstr "ਡਾਇ ਜਾਣਕਾਰੀ ਦਿਓ"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "%s ਨੂੰ ਲਿਖਣ ਲਈ ਖੋਲਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "ਫਾਇਲ ਸੰਚਾਰ ਅਸਫਲ ਹੈ; ਦੂਜੇ ਪਾਸੇ ਤੋਂ ਰੱਦ ਕੀਤਾ ਗਿਆ ਹੈ।"
-
-msgid "Could not connect for transfer."
-msgstr "ਭੇਜਣ ਲਈ ਜੁੜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ।"
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "ਫਾਇਲ ਸਿਰਲੇਖ ਲਿਖਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ। ਇਹ ਫਾਇਲ ਭੇਜੀ ਨਹੀਂ ਜਾ ਸਕੇਗੀ।"
-
-msgid "Save As..."
-msgstr "ਇੰਝ ਸੰਭਾਲੋ..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s ਨੇ %s ਨੂੰ %d ਫਾਇਲ ਸਵੀਕਾਰ ਕਰਨ ਦੀ ਬੇਨਤੀ ਕੀਤੀ ਹੈ: %s (%.2f %s)%s%s"
-msgstr[1] "%s ਨੇ %s ਨੂੰ %d ਫਾਇਲਾਂ ਸਵੀਕਾਰ ਕਰਨ ਦੀ ਬੇਨਤੀ ਕੀਤੀ ਹੈ: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s ਨੇ ਤੁਹਾਨੂੰ ਫਾਇਲ ਭੇਜਣ ਦੀ ਬੇਨਤੀ ਕੀਤੀ ਹੈ"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "TOC ਪਰੋਟੋਕਾਲ ਪਲੱਗਇਨ"
-
-#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr "%s ਨੇ ਇੱਕ ਵੈੱਬ-ਕੈਮ ਸੱਦਾ ਭੇਜਿਆ ਹੈ, ਜੋ ਕਿ ਹਾਲੇ ਸਹਿਯੋਗੀ ਨਹੀਂ ਹੈ।"
+msgid "Your SMS was not delivered"
+msgstr ""
+
msgid "Your Yahoo! message did not get sent."
msgstr "ਤੁਹਾਡਾ Yahoo! ਸੁਨੇਹਾ ਭੇਜਿਆ ਨਹੀਂ ਗਿਆ ਹੈ।"
@@ -9195,11 +9349,13 @@ msgstr "ਤੁਹਾਡਾ ਅਕਾਊਂਟ ਤਾਲਾਬੰਦ ਹੈ, Yaho
#, c-format
msgid "Unknown error number %d. Logging into the Yahoo! website may fix this."
-msgstr "ਅਣਜਾਣੀ ਗਲਤੀ ਨੰਬਰ %d ਹੈ। Yahoo! ਵੈਬਸਾਇਟ ਉੱਤੇ ਲਾਗਇਨ ਕਰਨ ਨਾਲ ਸਮੱਸਿਆ ਹੱਲ ਹੋ ਸਕਦੀ ਹੈ।"
+msgstr ""
+"ਅਣਜਾਣੀ ਗਲਤੀ ਨੰਬਰ %d ਹੈ। Yahoo! ਵੈਬਸਾਇਟ ਉੱਤੇ ਲਾਗਇਨ ਕਰਨ ਨਾਲ ਸਮੱਸਿਆ ਹੱਲ ਹੋ ਸਕਦੀ ਹੈ।"
#, c-format
msgid "Could not add buddy %s to group %s to the server list on account %s."
-msgstr "ਸੁਨੇਹੀ %s ਨੂੰ ਗਰੁੱਪ %s ਵਿੱਚ ਸਰਵਰ ਲਿਸਟ ਉੱਤੇ ਅਕਾਊਂਟ %s ਲਈ ਸ਼ਾਮਿਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ ਹੈ।"
+msgstr ""
+"ਸੁਨੇਹੀ %s ਨੂੰ ਗਰੁੱਪ %s ਵਿੱਚ ਸਰਵਰ ਲਿਸਟ ਉੱਤੇ ਅਕਾਊਂਟ %s ਲਈ ਸ਼ਾਮਿਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ ਹੈ।"
msgid "Could not add buddy to server list"
msgstr "ਸਰਵਰ ਲਿਸਟ ਵਿੱਚ ਬੱਡੀ ਸ਼ਾਮਿਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ"
@@ -9406,7 +9562,8 @@ msgstr "ਵਧੀਆ ਲਿੰਕ 3"
msgid "Last Update"
msgstr "ਆਖਰੀ ਅੱਪਡੇਟ"
-msgid "This profile is in a language or format that is not supported at this time."
+msgid ""
+"This profile is in a language or format that is not supported at this time."
msgstr "ਇਹ ਪ੍ਰੋਫਾਇਲ ਉਸ ਭਾਸ਼ਾ ਜਾਂ ਫਾਰਮੈਟ ਵਿੱਚ ਹੈ, ਜੋ ਕਿ ਅਜੇ ਸਹਾਇਕ ਨਹੀਂ ਹੈ।"
msgid ""
@@ -9541,9 +9698,11 @@ msgid "topic &lt;instance&gt;: Set the instance to be used on this class"
msgstr "topic &lt;instance&gt;: Set the instance to be used on this class"
msgid "sub &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Join a new chat"
-msgstr "sub &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: ਗੱਲਬਾਤ ਵਿੱਚ ਦਾਖਲ ਹੋਇਆ"
+msgstr ""
+"sub &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: ਗੱਲਬਾਤ ਵਿੱਚ ਦਾਖਲ ਹੋਇਆ"
-msgid "zi &lt;instance&gt;: Send a message to &lt;message,<i>instance</i>,*&gt;"
+msgid ""
+"zi &lt;instance&gt;: Send a message to &lt;message,<i>instance</i>,*&gt;"
msgstr "zi &lt;instance&gt;: &lt;message,<i>instance</i>,* ਨੂੰ ਸੁਨੇਹਾ ਭੇਜਿਆ ਹੈ&gt;"
msgid ""
@@ -9726,9 +9885,6 @@ msgstr "ਤੰਗ ਨਾ ਕਰੋ"
msgid "Extended away"
msgstr "ਪਹੁੰਚ ਤੋਂ ਦੂਰ"
-msgid "Mobile"
-msgstr "ਮੋਬਾਇਲ"
-
msgid "Listening to music"
msgstr "ਸੰਗੀਤ ਸੁਣ ਰਿਹਾ/ਰਹੀ ਹਾਂ"
@@ -9770,18 +9926,6 @@ msgstr "++ %s ਨਾ-ਵੇਹਲਾ ਹੋਇਆ"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "%s ਪੜਨ ਦੌਰਾਨ ਗਲਤੀ"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"ਤੁਹਾਡੀ %s ਪੜ੍ਹਨ ਦੌਰਾਨ ਗਲਤੀ ਆਈ ਹੈ। ਉਨ੍ਹਾਂ ਨੂੰ ਲੋਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ ਹੈ, ਅਤੇ ਪੁਰਾਣੀ ਫਾਇਲ ਦਾ "
-"ਨਾਂ %s~ ਬਦਲਿਆ ਗਿਆ ਹੈ।"
-
msgid "Calculating..."
msgstr "ਗਿਣਤੀ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ..."
@@ -9856,6 +10000,12 @@ msgstr "%s ਲਈ ਲਿਖਣ ਦੌਰਾਨ ਗਲਤੀ: %s"
msgid "Unable to connect to %s: %s"
msgstr "%s ਨਾਲ ਜੁੜਨ ਲਈ ਅਸਮਰੱਥ: %s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr "ਲਾਗਇਨ ਲਈ ਸਰਵਰ ਨੂੰ TLS/SSL ਲੋੜੀਦਾ ਹੈ। ਕੋਈ TLS/SSL ਸਹਿਯੋਗ ਨਹੀਂ ਹੈ।"
+
#, c-format
msgid " - %s"
msgstr " - %s"
@@ -9865,25 +10015,42 @@ msgid " (%s)"
msgstr " (%s)"
#. 10053
+#, c-format
msgid "Connection interrupted by other software on your computer."
msgstr "ਤੁਹਾਡੇ ਕੰਪਿਊਟਰ ਉੱਤੇ ਕੁਨੈਕਸ਼ਨ ਨੂੰ ਹੋਰ ਸਾਫਟਵੇਅਰਾਂ ਵਲੋਂ ਰੋਕਿਆ।"
#. 10054
+#, c-format
msgid "Remote host closed connection."
msgstr "ਰਿਮੋਟ ਹੋਸਟ ਨੇ ਕੁਨੈਕਸ਼ਨ ਬੰਦ ਕਰ ਦਿੱਤਾ ਹੈ।"
#. 10060
+#, c-format
msgid "Connection timed out."
msgstr "ਕੁਨੈਕਸ਼ਨ ਟਾਈਮ-ਆਉਟ ਹੋਇਆ।"
#. 10061
+#, c-format
msgid "Connection refused."
msgstr "ਕੁਨੈਕਸ਼ਨ ਤੋਂ ਇਨਕਾਰ ਕੀਤਾ।"
#. 10048
+#, c-format
msgid "Address already in use."
msgstr "ਐਡਰੈੱਸ ਪਹਿਲਾਂ ਹੀ ਵਰਤੋਂ ਅਧੀਨ ਹੈ।"
+#, c-format
+msgid "Error Reading %s"
+msgstr "%s ਪੜਨ ਦੌਰਾਨ ਗਲਤੀ"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"ਤੁਹਾਡੀ %s ਪੜ੍ਹਨ ਦੌਰਾਨ ਗਲਤੀ ਆਈ ਹੈ। ਉਨ੍ਹਾਂ ਨੂੰ ਲੋਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ ਹੈ, ਅਤੇ ਪੁਰਾਣੀ ਫਾਇਲ ਦਾ "
+"ਨਾਂ %s~ ਬਦਲਿਆ ਗਿਆ ਹੈ।"
+
msgid "Internet Messenger"
msgstr "ਇੰਟਰਨੈਟ ਮੈਸੰਜ਼ਰ"
@@ -9926,10 +10093,8 @@ msgstr "ਨਵੀਂ ਮੇਲ ਨੋਟੀਫਿਕੇਸ਼ਨ(_m)"
msgid "Use this buddy _icon for this account:"
msgstr "ਇਹ ਅਕਾਊਂਟ ਲਈ ਇਹ ਬੱਡੀ ਆਈਕਾਨ ਵਰਤੋਂ(_i):"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s ਚੋਣ"
+msgid "_Advanced"
+msgstr "ਤਕਨੀਕੀ(_A)"
msgid "Use GNOME Proxy Settings"
msgstr "ਗਨੋਮ ਪਰਾਕਸੀ ਸੈਟਿੰਗ ਵਰਤੋਂ"
@@ -9964,9 +10129,6 @@ msgstr "ਜੇਕਰ ਤੁਸੀਂ ਧਿਆਨ ਨਾਲ ਵੇਖੋ"
msgid "you can see the butterflies mating"
msgstr "ਤੁਸੀਂ ਤਿੱਤਲੀ ਮੇਲ ਵੇਖ ਸਕਦੇ ਹੋ"
-msgid "Proxy Options"
-msgstr "ਪਰਾਕਸੀ ਚੋਣ"
-
msgid "Proxy _type:"
msgstr "ਪਰਾਕਸੀ ਕਿਸਮ(_t):"
@@ -9994,8 +10156,9 @@ msgstr "ਬੇਸਿਕ(_B)"
msgid "Create _this new account on the server"
msgstr "ਸਰਵਰ ਉੱਤੇ ਇਹ ਨਵਾਂ ਅਕਾਊਂਟ ਬਣਾਓ(_t)"
-msgid "_Advanced"
-msgstr "ਤਕਨੀਕੀ(_A)"
+#, fuzzy
+msgid "_Proxy"
+msgstr "ਪਰਾਕਸੀ"
msgid "Enabled"
msgstr "ਯੋਗ ਕੀਤਾ"
@@ -10017,16 +10180,17 @@ msgid ""
msgstr ""
"<span size='larger' weight='bold'>%s ਵਲੋਂ ਜੀ ਆਇਆਂ ਨੂੰ!</span>\n"
"\n"
-"ਤੁਹਾਡੇ ਕੋਲ ਕੋਈ ਵੀ IM ਅਕਾਊਂਟ ਸੰਰਚਿਤ ਨਹੀਂ ਹੈ। %s ਨਾਲ ਕੁਨੈਕਟ ਕਰਨ ਵਾਸਤੇ ਹੇਠਾਂ <b>ਸ਼ਾਮਲ...</b> ਬਟਨ "
-"ਦੱਬੋ ਅਤੇ ਆਪਣਾ ਪਹਿਲਾਂ ਅਕਾਊਂਟ ਸੰਰਚਿਤ ਕਰੋ। ਜੇ ਤੁਸੀਂ %s ਨੂੰ ਕਈ IM ਅਕਾਊਂਟਾਂ ਨਾਲ ਕੁਨੈਕਟ ਕਰਨਾ ਚਾਹੁੰਦੇ "
-"ਹੋ ਤਾਂ ਸਭ ਦੀ ਸੰਰਚਨਾ ਲਈ <b>ਸ਼ਾਮਲ...</b> ਨੂੰ ਫੇਰ ਦੱਬੋ।\n"
+"ਤੁਹਾਡੇ ਕੋਲ ਕੋਈ ਵੀ IM ਅਕਾਊਂਟ ਸੰਰਚਿਤ ਨਹੀਂ ਹੈ। %s ਨਾਲ ਕੁਨੈਕਟ ਕਰਨ ਵਾਸਤੇ ਹੇਠਾਂ <b>ਸ਼ਾਮਲ...</b> "
+"ਬਟਨ ਦੱਬੋ ਅਤੇ ਆਪਣਾ ਪਹਿਲਾਂ ਅਕਾਊਂਟ ਸੰਰਚਿਤ ਕਰੋ। ਜੇ ਤੁਸੀਂ %s ਨੂੰ ਕਈ IM ਅਕਾਊਂਟਾਂ ਨਾਲ ਕੁਨੈਕਟ ਕਰਨਾ "
+"ਚਾਹੁੰਦੇ ਹੋ ਤਾਂ ਸਭ ਦੀ ਸੰਰਚਨਾ ਲਈ <b>ਸ਼ਾਮਲ...</b> ਨੂੰ ਫੇਰ ਦੱਬੋ।\n"
"\n"
-"ਤੁਸੀਂ ਇਹ ਵਿੰਡੋ ਉੱਤੇ ਬੇਲੀ (ਬੱਡੀ) ਲਿਸਟ ਵਿੰਡੋ ਵਿੱਚ <b>ਅਕਾਊਂਟ->ਅਕਾਊਂਟ ਪਰਬੰਧ</b> ਰਾਹੀਂ ਅਕਾਊਂਟ ਸ਼ਾਮਲ, ਸੋਧਣ ਜਾਂ "
-"ਹਟਾਉਣ ਵਾਸਤੇ ਆ ਸਕਦੇ ਹੋ।"
+"ਤੁਸੀਂ ਇਹ ਵਿੰਡੋ ਉੱਤੇ ਬੇਲੀ (ਬੱਡੀ) ਲਿਸਟ ਵਿੰਡੋ ਵਿੱਚ <b>ਅਕਾਊਂਟ->ਅਕਾਊਂਟ ਪਰਬੰਧ</b> ਰਾਹੀਂ ਅਕਾਊਂਟ "
+"ਸ਼ਾਮਲ, ਸੋਧਣ ਜਾਂ ਹਟਾਉਣ ਵਾਸਤੇ ਆ ਸਕਦੇ ਹੋ।"
#, c-format
msgid "You have %d contact named %s. Would you like to merge them?"
-msgid_plural "You currently have %d contacts named %s. Would you like to merge them?"
+msgid_plural ""
+"You currently have %d contacts named %s. Would you like to merge them?"
msgstr[0] "ਤੁਹਾਡੇ ਕੋਲ %d ਸੰਪਰਕ %s ਨਾਂ ਨਾਲ ਹਨ। ਕੀ ਤੁਸੀਂ ਮਿਲਾਉਣੇ ਚਾਹੁੰਦੇ ਹੋ?"
msgstr[1] "ਤੁਹਾਡੇ ਕੋਲ ਇਸ ਸਮੇਂ %d ਸੰਪਰਕ %s ਨਾਂ ਨਾਲ ਹਨ। ਕੀ ਤੁਸੀਂ ਮਿਲਾਉਣੇ ਚਾਹੁੰਦੇ ਹੋ?"
@@ -10068,6 +10232,17 @@ msgstr "ਜਾਣਕਾਰੀ ਲਵੋ(_I)"
msgid "I_M"
msgstr "I_M"
+#, fuzzy
+msgid "_Audio Call"
+msgstr "ਗੱਲਬਾਤ ਸ਼ਾਮਲ(_A)"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "ਵੀਡਿਓ ਗੱਲਬਾਤ"
+
msgid "_Send File..."
msgstr "ਫਾਇਲ ਭੇਜੋ(_S)..."
@@ -10126,7 +10301,8 @@ msgstr "ਫੈਲਾਓ(_E)"
msgid "/Tools/Mute Sounds"
msgstr "/ਟੂਲ/ਆਵਾਜ਼ ਚੁੱਪ ਰੱਖੋ"
-msgid "You are not currently signed on with an account that can add that buddy."
+msgid ""
+"You are not currently signed on with an account that can add that buddy."
msgstr "ਤੁਸੀਂ ਇਸ ਸਮੇਂ ਇੱਕ ਅਕਾਊਂਟ ਨਾਲ ਲਾਗਇਨ ਨਹੀਂ ਹੋ, ਤਾਂ ਕਿ ਬੱਡੀ ਨੂੰ ਸ਼ਾਮਿਲ ਕੀਤਾ ਜਾ ਸਕੇ।"
#. I don't believe this can happen currently, I think
@@ -10201,6 +10377,10 @@ msgstr "/ਟੂਲ/ਬੱਡੀ ਪਉਨਸ(_P)"
msgid "/Tools/_Certificates"
msgstr "/ਟੂਲ/ਸਰਟੀਫਿਕੇਟ(_C)"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/ਟੂਲ/ਸਮਾਈਲੀ(_y)"
+
msgid "/Tools/Plu_gins"
msgstr "/ਟੂਲ/ਪਲੱਗਇਨ(_G)"
@@ -10210,9 +10390,6 @@ msgstr "/ਟੂਲ/ਮੇਰੀ ਪਸੰਦ(_e)"
msgid "/Tools/Pr_ivacy"
msgstr "/ਟੂਲ/ਪਰਾਈਵੇਸੀ(_i)"
-msgid "/Tools/Smile_y"
-msgstr "/ਟੂਲ/ਸਮਾਈਲੀ(_y)"
-
msgid "/Tools/_File Transfers"
msgstr "/ਟੂਲ/ਫਾਇਲ ਟਰਾਂਸਫਰ(_F)"
@@ -10330,8 +10507,8 @@ msgstr "ਖੁਦ"
msgid "By status"
msgstr "ਅਕਾਰ"
-msgid "By log size"
-msgstr "ਲਾਗ ਅਕਾਰ"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10347,12 +10524,16 @@ msgstr "ਮੁੜ-ਕੁਨੈਕਟ ਕਰੋ"
msgid "Re-enable"
msgstr "ਮੁੜ-ਚਾਲੂ"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr "ਫੇਰ ਜੀ ਆਇਆਂ ਨੂੰ!"
#, c-format
msgid "%d account was disabled because you signed on from another location:"
-msgid_plural "%d accounts were disabled because you signed on from another location:"
+msgid_plural ""
+"%d accounts were disabled because you signed on from another location:"
msgstr[0] "%d ਅਕਾਊਂਟ ਆਯੋਗ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ, ਕਿਉਂਕਿ ਤੁਸੀਂ ਹੋਰ ਟਿਕਾਣੇ ਤੋਂ ਸਾਇਨ ਹੋ ਗਏ ਹੋ:"
msgstr[1] "%d ਅਕਾਊਂਟ ਆਯੋਗ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ, ਕਿਉਂਕਿ ਤੁਸੀਂ ਹੋਰ ਟਿਕਾਣੇ ਤੋਂ ਸਾਇਨ ਹੋ ਗਏ ਹੋ:"
@@ -10379,9 +10560,9 @@ msgid ""
msgstr ""
"<span weight='bold' size='larger'>%s ਵਲੋਂ ਜੀ ਆਇਆਂ ਨੂੰ!</span>\n"
"\n"
-"ਤੁਹਾਡੇ ਕੋਲ ਕੋਈ ਅਕਾਊਂਟ ਯੋਗ ਨਹੀਂ ਹੈ। ਆਪਣੇ IM ਅਕਾਊਂਟ <b>ਅਕਾਊਂਟ->ਅਕਾਊਂਟ ਪਰਬੰਧ</b> ਰਾਹੀਂ <b>ਅਕਾਊਂਟ</b> "
-"ਤੋਂ ਯੋਗ ਕਰੋ। ਜਦੋਂ ਤੁਸੀਂ ਅਕਾਊਂਟ ਯੋਗ ਕੀਤੇ ਤਾਂ ਤੁਸੀਂ ਸਾਇਨ-ਆਨ ਕਰ ਸਕਦੇ ਹੋ, ਆਪਣਾ ਸਟੇਟਸ ਸੈੱਟ ਕਰ ਸਕਦੇ ਹੋ "
-"ਅਤੇ ਆਪਣੇ ਦੋਸਤਾਂ-ਮਿੱਤਰਾਂ ਨਾਲ ਗੱਲਾਂ ਮਾਰ ਸਕਦੇ ਹੋ।"
+"ਤੁਹਾਡੇ ਕੋਲ ਕੋਈ ਅਕਾਊਂਟ ਯੋਗ ਨਹੀਂ ਹੈ। ਆਪਣੇ IM ਅਕਾਊਂਟ <b>ਅਕਾਊਂਟ->ਅਕਾਊਂਟ ਪਰਬੰਧ</b> ਰਾਹੀਂ "
+"<b>ਅਕਾਊਂਟ</b> ਤੋਂ ਯੋਗ ਕਰੋ। ਜਦੋਂ ਤੁਸੀਂ ਅਕਾਊਂਟ ਯੋਗ ਕੀਤੇ ਤਾਂ ਤੁਸੀਂ ਸਾਇਨ-ਆਨ ਕਰ ਸਕਦੇ ਹੋ, ਆਪਣਾ ਸਟੇਟਸ "
+"ਸੈੱਟ ਕਰ ਸਕਦੇ ਹੋ ਅਤੇ ਆਪਣੇ ਦੋਸਤਾਂ-ਮਿੱਤਰਾਂ ਨਾਲ ਗੱਲਾਂ ਮਾਰ ਸਕਦੇ ਹੋ।"
#. set the Show Offline Buddies option. must be done
#. * after the treeview or faceprint gets mad. -Robot101
@@ -10424,11 +10605,15 @@ msgstr "ਤੁਸੀਂ ਇਸ ਸਮੇਂ ਕਿਸੇ ਪ੍ਰੋਟੋਕ
msgid ""
"Please enter an alias, and the appropriate information about the chat you "
"would like to add to your buddy list.\n"
-msgstr "ਇੱਕ ਏਲੀਆਸ ਅਤੇ ਗੱਲਬਾਤ ਲਈ ਠੀਕ ਨਾਂ ਦਿਓ ਜੀ, ਜਿਸ ਲਈ ਤੁਸੀਂ ਬੱਡੀ ਲਿਸਟ ਸ਼ਾਮਿਲ ਕਰਨੀ ਚਾਹੁੰਦੇ ਹੋ।\n"
+msgstr ""
+"ਇੱਕ ਏਲੀਆਸ ਅਤੇ ਗੱਲਬਾਤ ਲਈ ਠੀਕ ਨਾਂ ਦਿਓ ਜੀ, ਜਿਸ ਲਈ ਤੁਸੀਂ ਬੱਡੀ ਲਿਸਟ ਸ਼ਾਮਿਲ ਕਰਨੀ ਚਾਹੁੰਦੇ ਹੋ।\n"
msgid "A_lias:"
msgstr "ਏਲੀਆਸ(_l):"
+msgid "_Group:"
+msgstr "ਗਰੁੱਪ(_G):"
+
msgid "Auto_join when account becomes online."
msgstr "ਜਦੋਂ ਅਕਾਊਂਟ ਆਨਲਾਈਨ ਹੋਵੇ ਤਾਂ ਆਟੋ-ਜੁਆਇੰਨ ਕਰੋ(_j)।"
@@ -10472,18 +10657,13 @@ msgstr "ਅਣਜਾਣ ਕਮਾਂਡ ਹੈ।"
msgid "That buddy is not on the same protocol as this chat."
msgstr "ਉਸ ਬੱਡੀ ਕੋਈ ਉਹ ਪ੍ਰੋਟੋਕਾਲ ਨਹੀਂ ਹੈ, ਜੋ ਕਿ ਇਸ ਗੱਲਬਾਤ ਦਾ"
-msgid "You are not currently signed on with an account that can invite that buddy."
+msgid ""
+"You are not currently signed on with an account that can invite that buddy."
msgstr "ਤੁਸੀਂ ਇਸ ਸਮੇਂ ਇਸ ਅਕਾਊਂਟ ਨਾਲ ਲਾਗਇਨ ਨਹੀਂ ਹੋ, ਜਿਸ ਨਾਲ ਬੱਡੀ ਨੂੰ ਸੱਦਿਆ ਜਾ ਸਕੇ।"
msgid "Invite Buddy Into Chat Room"
msgstr "ਬੱਡੀ ਨੂੰ ਗੱਲਬਾਤ ਰੂਮ ਵਿੱਚ ਸੱਦੋ"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr "ਸੱਦਾ ਭੇਜਣ ਲਈ ਯੂਜ਼ਰ ਦਾ ਨਾਂ ਦਿਓ, ਚੋਣਵੇਂ ਰੂਪ ਵਿੱਚ ਸੱਦਾ ਸੁਨੇਹਾ ਵੀ ਦਿੱਤਾ ਜਾ ਸਕਦਾ ਹੈ।"
-
msgid "_Buddy:"
msgstr "ਬੱਡੀ(_B):"
@@ -10558,6 +10738,22 @@ msgstr "/ਗੱਲਬਾਤ/ਇੰਝ ਸੰਭਾਲੋ(_S)..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/ਗੱਲਬਾਤ/ਸਕਰੋਲ-ਬੈਕ ਸਾਫ਼ ਕਰੋ(_r)"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/ਗੱਲਬਾਤ/ਹੋਰ(_o)"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/ਗੱਲਬਾਤ/ਹੋਰ(_o)"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/ਗੱਲਬਾਤ/ਹੋਰ(_o)"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/ਗੱਲਬਾਤ/ਲਾਗ ਵੇਖੋ(_L)"
+
msgid "/Conversation/Se_nd File..."
msgstr "/ਗੱਲਬਾਤ/ਫਾਇਲ ਭੇਜੋ(_n)..."
@@ -10630,6 +10826,18 @@ msgstr "/ਗੱਲਬਾਤ"
msgid "/Conversation/View Log"
msgstr "/ਗੱਲਬਾਤ/ਲਾਗ ਵੇਖੋ"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/ਗੱਲਬਾਤ/ਹੋਰ"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/ਗੱਲਬਾਤ/ਲਾਗ ਵੇਖੋ"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/ਗੱਲਬਾਤ/ਹੋਰ"
+
msgid "/Conversation/Send File..."
msgstr "/ਗੱਲਬਾਤ/ਫਾਇਲ ਭੇਜੋ..."
@@ -10812,6 +11020,9 @@ msgstr "ਕਲਾਕਾਰ"
msgid "Ka-Hing Cheung"
msgstr "ਕਾ-ਹਿੰਗ ਚੀਉਂਗ"
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "ਸਹਿਯੋਗ"
@@ -10951,6 +11162,10 @@ msgstr "ਜਾਰਜੀਆਈ"
msgid "Ubuntu Georgian Translators"
msgstr "ਉਬਤੂੰ ਜਾਰਜੀਆਈ ਅਨੁਵਾਦਕ"
+#, fuzzy
+msgid "Khmer"
+msgstr "ਹੋਰ"
+
msgid "Kannada"
msgstr "ਕੰਨੜ"
@@ -11086,13 +11301,15 @@ msgstr ""
"ਇਸ ਦੇ ਯੋਗਦਾਨੀਆਂ ਕੋਲ ਕਾਪੀ-ਰਾਈਟ ਹੈ। ਯੋਗਦਾਨੀਆਂ ਦੀ ਲਿਸਟ ਵੇਖਣ ਵਾਸਤੇ 'COPYRIGHT' ਫਾਇਲ ਵੇਖੋ। "
"ਇਸ ਪਰੋਗਰਾਮ ਬਾਰੇ ਤੁਹਾਨੂੰ ਅਸੀਂ ਕੋਈ ਵਾਰੰਟੀ ਨਹੀਂ ਦਿੰਦੇ ਹਾਂ।<BR><BR>"
+#, c-format
msgid ""
"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
msgstr ""
-"<FONT SIZE=\"4\">ਸਵਾਲ-ਜਵਾਬ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
-"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+"<FONT SIZE=\"4\">ਸਵਾਲ-ਜਵਾਬ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/"
+"FAQ\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+#, c-format
msgid ""
"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
"\">support@pidgin.im</A><BR/><BR/>"
@@ -11100,9 +11317,12 @@ msgstr ""
"<FONT SIZE=\"4\">ਈਮੇਲ ਰਾਹੀਂ ਮੱਦਦ:</FONT> <A HREF=\"mailto:support@pidgin.im"
"\">support@pidgin.im</A><BR/><BR/>"
-msgid "<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
msgstr "<FONT SIZE=\"4\">IRC ਚੈਨਲ:</FONT>irc.freenode.net ਉੱਤੇ #pidgin<BR><BR>"
+#, c-format
msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
@@ -11170,8 +11390,12 @@ msgid ""
msgid_plural ""
"You are about to remove the contact containing %s and %d other buddies from "
"your buddy list. Do you want to continue?"
-msgstr[0] "ਤੁਸੀਂ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚੋਂ %s ਰੱਖਣ ਵਾਲਾ ਸੰਪਰਕ ਅਤੇ %d ਹੋਰ ਬੱਡੀ ਹਟਾਉਣ ਜਾ ਰਹੇ ਹੋ। ਕੀ ਤੁਸੀਂ ਜਾਰੀ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ?"
-msgstr[1] "ਤੁਸੀਂ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚੋਂ %s ਰੱਖਣ ਵਾਲਾ ਸੰਪਰਕ ਅਤੇ %d ਹੋਰ ਬੱਡੀ ਹਟਾਉਣ ਜਾ ਰਹੇ ਹੋ। ਕੀ ਤੁਸੀਂ ਜਾਰੀ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ?"
+msgstr[0] ""
+"ਤੁਸੀਂ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚੋਂ %s ਰੱਖਣ ਵਾਲਾ ਸੰਪਰਕ ਅਤੇ %d ਹੋਰ ਬੱਡੀ ਹਟਾਉਣ ਜਾ ਰਹੇ ਹੋ। ਕੀ ਤੁਸੀਂ "
+"ਜਾਰੀ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ?"
+msgstr[1] ""
+"ਤੁਸੀਂ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚੋਂ %s ਰੱਖਣ ਵਾਲਾ ਸੰਪਰਕ ਅਤੇ %d ਹੋਰ ਬੱਡੀ ਹਟਾਉਣ ਜਾ ਰਹੇ ਹੋ। ਕੀ ਤੁਸੀਂ "
+"ਜਾਰੀ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ?"
msgid "Remove Contact"
msgstr "ਸੰਪਰਕ ਹਟਾਓ"
@@ -11206,7 +11430,8 @@ msgid "_Remove Group"
msgstr "ਗਰੁੱਪ ਹਟਾਓ(_R)"
#, c-format
-msgid "You are about to remove %s from your buddy list. Do you want to continue?"
+msgid ""
+"You are about to remove %s from your buddy list. Do you want to continue?"
msgstr "ਤੁਸੀਂ %s ਨੂੰ ਆਪਣੀ ਸੁਨੇਹੀ ਲਿਸਟ ਵਿੱਚੋਂ ਹਟਾਉਣ ਜਾ ਰਹੇ ਹੋ। ਕੀ ਤੁਸੀਂ ਜਾਰੀ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ?"
msgid "Remove Buddy"
@@ -11398,15 +11623,6 @@ msgstr "ਟਾਈਪ ਕਰਨ ਦੀ ਸੂਚਨਾ ਲਈ ਵਰਤਣ ਵਾ
msgid "Enable typing notification"
msgstr "ਟਾਈਪ ਕਰਨ ਦੀ ਸੂਚਨਾ ਚਾਲੂ"
-msgid "_Copy Email Address"
-msgstr "ਈਮੇਲ ਐਡਰੈੱਸ ਨਕਲ(_C)"
-
-msgid "_Open Link in Browser"
-msgstr "ਝਲਾਕਾਰੇ ਵਿੱਚ ਖੋਲੋ(_O)"
-
-msgid "_Copy Link Location"
-msgstr "ਸੰਬੰਧ ਸਥਿਤੀ ਦੀ ਨਕਲ(_C)"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -11448,9 +11664,11 @@ msgstr ""
msgid "Save Image"
msgstr "ਚਿੱਤਰ ਸੰਭਾਲੋ"
+#, c-format
msgid "_Save Image..."
msgstr "ਚਿੱਤਰ ਸੰਭਾਲੋ(_S)..."
+#, c-format
msgid "_Add Custom Smiley..."
msgstr "ਕਸਟਮ ਸਮਾਇਲੀ ਸ਼ਾਮਲ(_A)..."
@@ -11643,13 +11861,14 @@ msgstr "ਲਾਗ ਫੋਲਡਰ ਝਲਕ(_B)"
msgid "%s %s. Try `%s -h' for more information.\n"
msgstr "%s %s। ਹੋਰ ਜਾਣਕਾਰੀ ਲਈ `%s -h' ਵੇਖੋ।\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -11673,13 +11892,14 @@ msgstr ""
" --display=DISPLAY X display to use\n"
" -v, --version display the current version and exit\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -11734,14 +11954,27 @@ msgstr ""
msgid "Pidgin"
msgstr "ਪਿਡਗਿਨ"
+#, c-format
msgid "Exiting because another libpurple client is already running.\n"
msgstr "ਬੰਦ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ, ਕਿਉਂਕਿ ਇੱਕ ਹੋਰ libpurple ਕਲਾਇਟ ਪਹਿਲਾਂ ਹੀ ਚੱਲ ਰਿਹਾ ਹੈ।\n"
-msgid "Open All Messages"
-msgstr "ਸਭ ਸੁਨੇਹੇ ਖੋਲ੍ਹੋ"
+msgid "/_Media"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">ਤੁਹਾਨੂੰ ਚਿੱਠੀ ਆਈ ਹੈ!</span>"
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "ਗਿਣਤੀ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -11766,9 +11999,31 @@ msgstr "URL ਖੋਲਣ ਲਈ ਅਸਫਲ ਹੈ"
msgid "Error launching \"%s\": %s"
msgstr "\"%s\" ਚਲਾਉਣ ਦੌਰਾਨ ਗਲਤੀ: %s"
-msgid "The 'Manual' browser command has been chosen, but no command has been set."
+msgid ""
+"The 'Manual' browser command has been chosen, but no command has been set."
msgstr "'ਦਸਤੀ' ਝਲਕਾਰਾ ਕਮਾਂਡ ਚੁਣੀ ਗਈ ਹੈ, ਪਰ ਕੋਈ ਕਮਾਂਡ ਨਹੀਂ ਦਿੱਤੀ ਗਈ ਹੈ।"
+msgid "Open All Messages"
+msgstr "ਸਭ ਸੁਨੇਹੇ ਖੋਲ੍ਹੋ"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">ਤੁਹਾਨੂੰ ਚਿੱਠੀ ਆਈ ਹੈ!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "ਨਵਾਂ ਪਉਨਸ ਬੱਡੀ"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">ਤੁਹਾਨੂੰ ਚਿੱਠੀ ਆਈ ਹੈ!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "ਅਣਜਾਣ ਸੁਨੇਹਾ"
+
msgid "The following plugins will be unloaded."
msgstr "ਹੇਠ ਦਿੱਤੀਆਂ ਪਲੱਗਇਨਾਂ ਨੂੰ ਅਣ-ਲੋਡ ਕੀਤਾ ਜਾਵੇਗਾ।"
@@ -11784,7 +12039,8 @@ msgstr "ਪਲੱਗਇਨ ਅਣਲੋਡ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸ
msgid ""
"The plugin could not be unloaded now, but will be disabled at the next "
"startup."
-msgstr "ਪਲੱਗਇਨ ਨੂੰ ਅਨ-ਲੋਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ, ਪਰ ਇਸ ਨੂੰ ਅਗਲੀ ਵਾਰ ਚਾਲੂ ਹੋਣ ਸਮੇਂ ਬੰਦ ਕਰ ਦਿੱਤਾ ਜਾਵੇਗਾ।"
+msgstr ""
+"ਪਲੱਗਇਨ ਨੂੰ ਅਨ-ਲੋਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ, ਪਰ ਇਸ ਨੂੰ ਅਗਲੀ ਵਾਰ ਚਾਲੂ ਹੋਣ ਸਮੇਂ ਬੰਦ ਕਰ ਦਿੱਤਾ ਜਾਵੇਗਾ।"
#, c-format
msgid ""
@@ -11815,6 +12071,10 @@ msgstr "<b>ਪਲੱਗਇਨ ਵੇਰਵਾ</b>"
msgid "Select a file"
msgstr "ਇੱਕ ਫਾਇਲ ਚੁਣੋ"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "ਬੱਡੀ ਪਉਨਸ ਸੋਧ"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "ਕਿਸ ਉੱਤੇ ਝੱਪਟਣਾ ਹੈ"
@@ -11885,6 +12145,50 @@ msgstr "ਆਵਰਤੀ(_R)"
msgid "Pounce Target"
msgstr "ਪਉਨਸ ਟਾਰਗੇਟ"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "ਲਿਖਣਾ ਸ਼ੁਰੂ ਕਰੇ"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "ਲਿਖਣ ਦੌਰਾਨ ਵਿਰਾਮ"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "ਸਾਇਨ ਆਨ"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s ਵੇਹਲਾ (%s) ਤੋਂ ਵਾਪਸ ਆਇਆ ਹੈ"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "ਦੂਰੋਂ ਵਾਪਸ ਆਏ"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "ਲਿਖਣ ਤੋਂ ਰੁਕਿਆ/ਰੁਕੀ"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "ਸਾਇਨ ਆਫ਼"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "ਵੇਹਲੇ ਬਣੇ"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "ਜਦੋਂ ਦੂਰ"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "ਇੱਕ ਸੁਨੇਹਾ ਭੇਜੋ"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "ਅਣਜਾਣ ਪਉਨਸ ਘਟਨਾ ਹੈ। ਸੂਚਨਾ ਦਿਓ ਜੀ!"
+
msgid "Smiley theme failed to unpack."
msgstr "ਸਮਾਇਲੀ ਥੀਮ ਅਣ-ਪੈਕ ਕਰਨ ਲਈ ਫੇਲ੍ਹ ਹੈ।"
@@ -11907,6 +12211,12 @@ msgstr "ਕੀਬੋਰਡ ਸ਼ਾਰਟਕੱਟ"
msgid "Cl_ose conversations with the Escape key"
msgstr "ਈਸਕੇਸ (Esc) ਸਵਿੱਚ ਨਾਲ ਗੱਲਾਬਾਤਾਂ ਬੰਦ ਕਰੋ(_o)"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "ਬੱਡੀ ਲਿਸਟ"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "ਸਿਸਟਮ ਟਰੇ ਆਈਕਾਨ"
@@ -12017,9 +12327,6 @@ msgstr "ਪਰਾਕਸੀ ਸੰਰਚਨਾ ਪਰੋਗਰਾਮ ਸਟਾਰ
msgid "Cannot start browser configuration program."
msgstr "ਬਰਾਊਜ਼ਰ ਸੰਰਚਨਾ ਪਰੋਗਾਰਮ ਸਟਾਰਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।"
-msgid "ST_UN server:"
-msgstr "ST_UN ਸਰਵਰ:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">ਜਿਵੇਂ: stunserver.org</span>"
@@ -12044,6 +12351,10 @@ msgstr "ਸ਼ੁਰੂ ਪੋਰਟ(_S):"
msgid "_End port:"
msgstr "ਅੰਤ ਪੋਰਟ(_E):"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr "ਪਰਾਕਸੀ ਸਰਵਰ &amp; ਬਰਾਊਜ਼ਰ"
@@ -12156,21 +12467,27 @@ msgstr "ਸਭ ਹਾਲਤ ਤਬਦੀਲੀਆਂ ਸਿਸਟਮ ਲਾਗ '
msgid "Sound Selection"
msgstr "ਆਵਾਜ਼ ਚੋਣ"
+#, c-format
msgid "Quietest"
msgstr "ਸਭ ਤੋਂ ਖਾਮੋਸ਼"
+#, c-format
msgid "Quieter"
msgstr "ਬਹੁਤ ਖਾਮੋਸ਼"
+#, c-format
msgid "Quiet"
msgstr "ਖਾਮੋਸ਼"
+#, c-format
msgid "Loud"
msgstr "ਉੱਚੀ"
+#, c-format
msgid "Louder"
msgstr "ਹੋਰ ਉੱਚੀ"
+#, c-format
msgid "Loudest"
msgstr "ਸਭ ਤੋਂ ਉੱਚੀ"
@@ -12228,12 +12545,12 @@ msgstr "ਜਦੋਂ ਦੂਰ ਅਤੇ ਵੇਹਲਾ ਹੋਵਾਂ"
msgid "Auto-away"
msgstr "ਸਵੈ-ਦੂਰ"
-msgid "Change status when _idle"
-msgstr "ਜਦੋਂ ਵੇਹਲਾ ਹੋਵਾਂ ਤਾਂ ਹਾਲਤ ਬਦਲੋ(_i)"
-
msgid "_Minutes before becoming idle:"
msgstr "ਵੇਹਲਾ ਬਣਾਉਣ ਤੋਂ ਪਹਿਲਾਂ ਮਿੰਟ(_M):"
+msgid "Change status when _idle"
+msgstr "ਜਦੋਂ ਵੇਹਲਾ ਹੋਵਾਂ ਤਾਂ ਹਾਲਤ ਬਦਲੋ(_i)"
+
msgid "Change _status to:"
msgstr "ਹਾਲਤ ਬਦਲੋ(_s):"
@@ -12381,6 +12698,12 @@ msgstr "ਸੰਭਾਲੋ ਅਤੇ ਵਰਤੋਂ(_v)"
msgid "Status for %s"
msgstr "%s ਲਈ ਹਾਲਤ"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
msgid "Custom Smiley"
msgstr "ਪਸੰਦੀਦਾ ਸਮਾਈਲੀ"
@@ -12390,14 +12713,14 @@ msgstr "ਹੋਰ ਡਾਟਾ ਚਾਹੀਦਾ ਹੈ"
msgid "Please provide a shortcut to associate with the smiley."
msgstr "ਸਮਾਈਲੀ ਨਾਲ ਸਬੰਧਿਤ ਸ਼ਾਰਟਕੱਟ ਦਿਓ ਜੀ।"
-msgid "Duplicate Shortcut"
-msgstr "ਡੁਪਲੀਕੇਟ ਸ਼ਾਰਟਕੱਟ"
-
+#, fuzzy, c-format
msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
+"A custom smiley for '%s' already exists. Please use a different shortcut."
msgstr "ਚੁਣੇ ਸ਼ਾਰਟਕੱਟ ਲਈ ਪਹਿਲਾਂ ਹੀ ਇੱਕ ਕਸਟਮ ਸਮਾਈਲੀ ਮੌਜੂਦ ਹੈ। ਵੱਖਰੇ ਸ਼ਾਰਟਕੱਟ ਨਾਲ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜੀ।"
+msgid "Duplicate Shortcut"
+msgstr "ਡੁਪਲੀਕੇਟ ਸ਼ਾਰਟਕੱਟ"
+
msgid "Please select an image for the smiley."
msgstr "ਸਮਾਈਲੀ ਲਈ ਚਿੱਤਰ ਚੁਣੋ ਜੀ।"
@@ -12407,16 +12730,22 @@ msgstr "ਸਮਾਈਲੀ ਸੋਧ"
msgid "Add Smiley"
msgstr "ਸਮਾਈਲੀ ਸ਼ਾਮਲ"
-msgid "Smiley _Image"
-msgstr "ਸਮਾਈਲੀ ਚਿੱਤਰ(_I)"
+#, fuzzy
+msgid "_Image:"
+msgstr "ਚਿੱਤਰ(_I)"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr "ਸਮਾਈਲੀ ਸ਼ਾਰਟਕੱਟ(_h)"
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "ਸ਼ਾਰਟਕੱਟ"
msgid "Smiley"
msgstr "ਸਮਾਈਲੀ"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "ਸ਼ਾਰਟਕੱਟ"
+
msgid "Custom Smiley Manager"
msgstr "ਪਸੰਦੀਦਾ ਸਮਾਈਲੀ ਮੈਨੇਜਰ"
@@ -12490,7 +12819,8 @@ msgstr ""
msgid ""
"You can insert this image into this message, or use it as the buddy icon for "
"this user"
-msgstr "ਤੁਸੀਂ ਇਹ ਚਿੱਤਰ ਨੂੰ ਇਹ ਸੁਨੇਹੇ 'ਚ ਸ਼ਾਮਿਲ ਕਰਨ ਸਕਦੇ ਹੋ ਜਾਂ ਇਸ ਯੂਜ਼ਰ ਲਈ ਬੱਡੀ ਆਈਕਾਨ ਵਾਂਗ ਵਰਤ ਸਕਦੇ ਹੋ।"
+msgstr ""
+"ਤੁਸੀਂ ਇਹ ਚਿੱਤਰ ਨੂੰ ਇਹ ਸੁਨੇਹੇ 'ਚ ਸ਼ਾਮਿਲ ਕਰਨ ਸਕਦੇ ਹੋ ਜਾਂ ਇਸ ਯੂਜ਼ਰ ਲਈ ਬੱਡੀ ਆਈਕਾਨ ਵਾਂਗ ਵਰਤ ਸਕਦੇ ਹੋ।"
#. I don't know if we really want to do anything here. Most of the desktop item types are crap like
#. * "MIME Type" (I have no clue how that would be a desktop item) and "Comment"... nothing we can really
@@ -12532,8 +12862,20 @@ msgid "Failed to open file '%s': %s"
msgstr "ਫਾਇਲ '%s' ਖੋਲ੍ਹਣ ਲਈ ਫੇਲ੍ਹ: %s"
#, c-format
-msgid "Failed to load image '%s': reason not known, probably a corrupt image file"
-msgstr "ਚਿੱਤਰ '%s' ਲੋਡ ਕਰਨ ਵਿੱਚ ਅਸਫਲ: ਕਾਰਨ ਜਾਣਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ, ਸੰਭਵ ਤੌਰ ਤੇ ਫਾਇਲ ਨਿਕਾਰਾ ਹੈ"
+msgid ""
+"Failed to load image '%s': reason not known, probably a corrupt image file"
+msgstr ""
+"ਚਿੱਤਰ '%s' ਲੋਡ ਕਰਨ ਵਿੱਚ ਅਸਫਲ: ਕਾਰਨ ਜਾਣਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ, ਸੰਭਵ ਤੌਰ ਤੇ ਫਾਇਲ ਨਿਕਾਰਾ ਹੈ"
+
+#, fuzzy
+msgid "_Open Link"
+msgstr "ਸਬੰਧ ਖੋਲੋ(_O):"
+
+msgid "_Copy Link Location"
+msgstr "ਸੰਬੰਧ ਸਥਿਤੀ ਦੀ ਨਕਲ(_C)"
+
+msgid "_Copy Email Address"
+msgstr "ਈਮੇਲ ਐਡਰੈੱਸ ਨਕਲ(_C)"
msgid "Save File"
msgstr "ਫਾਇਲ ਸੰਭਾਲੋ"
@@ -12667,14 +13009,16 @@ msgstr "ਸੰਪਰਕ ਤਰਜੀਹ"
#. *< name
#. *< version
#. *< summary
-msgid "Allows for controlling the values associated with different buddy states."
+msgid ""
+"Allows for controlling the values associated with different buddy states."
msgstr "ਵੱਖਰੀ ਬੱਡੀ ਸਥਿਤੀ ਨਾਲ ਸਬੰਧਿਤ ਮੁੱਲਾਂ ਨੂੰ ਕੰਟਰੋਲ ਕਰਨ ਦਿਓ।"
#. *< description
msgid ""
"Allows for changing the point values of idle/away/offline states for buddies "
"in contact priority computations."
-msgstr "ਸੰਪਰਕ ਵਿੱਚ ਦਰਜੇ ਦੇ ਆਧਾਰ ਉੱਤੇ ਬੱਡੀ ਲਈ ਵੇਹਲਾ/ਦੂਰ/ਆਫਲਾਇਨ ਸਥਿਤੀ ਦਾ ਮੁੱਲ ਤਬਦੀਲ ਕਰਨਾ ਸਵੀਕਾਰ ਹੈ।"
+msgstr ""
+"ਸੰਪਰਕ ਵਿੱਚ ਦਰਜੇ ਦੇ ਆਧਾਰ ਉੱਤੇ ਬੱਡੀ ਲਈ ਵੇਹਲਾ/ਦੂਰ/ਆਫਲਾਇਨ ਸਥਿਤੀ ਦਾ ਮੁੱਲ ਤਬਦੀਲ ਕਰਨਾ ਸਵੀਕਾਰ ਹੈ।"
msgid "Conversation Colors"
msgstr "ਗੱਲਬਾਤ ਰੰਗ"
@@ -13142,6 +13486,7 @@ msgstr "ਨੋਟੀਫਾਈ ਡਾਈਲਾਗ"
msgid "Select Color"
msgstr "ਰੰਗ ਚੁਣੋ"
+#, c-format
msgid "Select Interface Font"
msgstr "ਇੰਟਰਫੇਸ ਰੰਗ ਚੁਣੋ"
@@ -13268,8 +13613,7 @@ msgid ""
"Adds a Send button to the entry area of the conversation window. Intended "
"for when no physical keyboard is present."
msgstr ""
-"ਗੱਲਬਾਤ ਵਿੰਡੋ ਦੇ ਲਿਖਣ ਖੇਤਰ ਵਿੱਚ ਭੇਜੋ ਬਟਨ ਸ਼ਾਮਲ ਕਰੋ। ਇਹ ਕੋਈ ਅਸਲ ਕੀਬੋਰਡ ਨਾ ਹੋਣ ਦੀ "
-"ਹਾਲਤ ਲਈ ਹੈ।"
+"ਗੱਲਬਾਤ ਵਿੰਡੋ ਦੇ ਲਿਖਣ ਖੇਤਰ ਵਿੱਚ ਭੇਜੋ ਬਟਨ ਸ਼ਾਮਲ ਕਰੋ। ਇਹ ਕੋਈ ਅਸਲ ਕੀਬੋਰਡ ਨਾ ਹੋਣ ਦੀ ਹਾਲਤ ਲਈ ਹੈ।"
msgid "Duplicate Correction"
msgstr "ਡੁਪਲੀਕੇਟ ਸੋਧ"
@@ -13361,6 +13705,7 @@ msgstr "ਹਰੇਕ N ਮਿੰਟ ਬਾਅਦ iChat-ਸਟਾਇਲ ਮੁਤ
msgid "Timestamp Format Options"
msgstr "ਟਾਈਮ-ਸਟੈਂਪ ਫਾਰਮੈਟ ਚੋਣ"
+#, c-format
msgid "_Force 24-hour time format"
msgstr "24-ਘੰਟੇ ਸਮਾਂ ਫਾਰਮੈਟ ਲਈ ਮਜ੍ਬੂਰ(_F)"
@@ -13483,7 +13828,8 @@ msgstr "ਵਿੰਡੋ ਪਿਡਗਿਨ ਚੋਣਾਂ"
msgid "Options specific to Pidgin for Windows."
msgstr "ਵਿੰਡੋ ਲਈ ਪਿਡਗਿਨ ਖਾਸ ਚੋਣਾਂ"
-msgid "Provides options specific to Pidgin for Windows , such as buddy list docking."
+msgid ""
+"Provides options specific to Pidgin for Windows , such as buddy list docking."
msgstr "ਵਿੰਡੋ ਲਈ ਪਿਡਗਿਨ ਲਈ ਖਾਸ ਚੋਣ ਹੈ, ਜਿਵੇਂ ਕਿ ਬੱਡੀ ਲਿਸਟ ਡੌਕਿੰਗ।"
msgid "<font color='#777777'>Logged out.</font>"
@@ -13523,3 +13869,173 @@ msgstr "ਰਾਅ XMPP ਪ੍ਹੈਰਾ ਭੇਜੋ ਅਤੇ ਲਵੋ"
msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr "ਇਹ ਪਲੱਗਇਨ XMPP ਸਰਵਰ ਜਾਂ ਕਲਾਇਟ ਡੀਬੱਗ ਲਈ ਫਾਇਦੇਮੰਦ ਹੈ।"
+#~ msgid "Invite message"
+#~ msgstr "ਸੱਦਾ ਸੁਨੇਹਾ"
+
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "ਸੱਦਾ ਭੇਜਣ ਲਈ ਯੂਜ਼ਰ ਦਾ ਨਾਂ ਦਿਓ, ਜਿਸ ਨੂੰ ਤੁਸੀਂ ਸੱਦਾ ਭੇਜਣਾ ਚਾਹੁੰਦੇ ਹੋ,\n"
+#~ "ਚੋਣਵੇਂ ਰੂਪ ਵਿੱਚ ਸੱਦਾ ਸੁਨੇਹਾ ਵੀ ਦਿੱਤਾ ਜਾ ਸਕਦਾ ਹੈ।"
+
+#~ msgid "Looking up %s"
+#~ msgstr "%s ਦੀ ਖੋਜ ਜਾਰੀ ਹੈ"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "%s ਨਾਲ ਜੁੜਨ ਲਈ ਅਸਫਲ"
+
+#~ msgid "Signon: %s"
+#~ msgstr "ਦਾਖਲ: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "ਫਾਇਲ %s ਲਿਖਣ ਲਈ ਅਸਫ਼ਲ ਹੈ।"
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "ਫਾਇਲ %s ਪੜਨ ਲਈ ਅਸਫ਼ਲ ਹੈ।"
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "ਸੁਨੇਹਾ ਬਹੁਤ ਲੰਮਾ ਹੈ, ਆਖਰੀ %s ਬਾਈਟ ਹਟਾਏ ਗਏ ਹਨ।"
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s ਇਸ ਸਮੇਂ ਲਾਗਇਨ ਨਹੀਂ ਹੈ।"
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "%s ਲਈ ਉਡੀਕ ਸਵੀਕਾਰ ਨਹੀਂ ਹੈ।"
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr "ਇੱਕ ਸੁਨੇਹਾ ਗੁਆ ਦਿੱਤਾ ਗਿਆ ਹੈ, ਤੁਸੀਂ ਸਰਵਰ ਗਤੀ ਸੀਮਾ ਤੋਂ ਵੱਧ ਗਏ ਹੋ।"
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "%s ਵਿੱਚ ਗੱਲਬਾਤ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ।"
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "ਤੁਸੀਂ %s ਨੂੰ ਸੁਨੇਹੇ ਬਹੁਤ ਤੇਜ਼ੀ ਨਾਲ ਭੇਜ ਰਹੇ ਹੋ।"
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "ਤੁਸੀਂ %s ਤੋਂ ਇੱਕ IM ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਕਿ ਇਹ ਵੱਡਾ ਸੀ"
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr "ਤੁਸੀਂ %s ਤੋਂ ਇੱਕ IM ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਕਿ ਇਹ ਬਹੁਤ ਤੇਜ਼ੀ ਨਾਲ ਭੇਜਿਆ ਗਿਆ ਹੈ।"
+
+#~ msgid "Failure."
+#~ msgstr "ਅਸਫਲ ਹੈ।"
+
+#~ msgid "Too many matches."
+#~ msgstr "ਬਹੁਤ ਮੇਲ ਹਨ।"
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "ਹੋਰ ਯੋਗਤਾ ਦੀ ਲੋੜ ਹੈ।"
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "ਡਾਈ ਸਰਵਿਸ ਆਰਜ਼ੀ ਤੌਰ ਤੇ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ।"
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "ਈਮੇਲ ਖੋਜ ਪਾਬੰਦੀ ਹੈ।"
+
+#~ msgid "Keyword ignored."
+#~ msgstr "ਸ਼ਬਦ ਅਣਡਿੱਠਾ"
+
+#~ msgid "No keywords."
+#~ msgstr "ਕੋਈ ਸ਼ਬਦ ਨਹੀਂ ਹੈ।"
+
+#~ msgid "User has no directory information."
+#~ msgstr "ਯੂਜ਼ਰ ਦੀ ਕੋਈ ਡਾਇਰੈਕਟਰੀ ਜਾਣਕਾਰੀ ਨਹੀਂ ਹੈ।"
+
+#~ msgid "Country not supported."
+#~ msgstr "ਦੇਸ਼ ਸਹਾਇਕ ਨਹੀਂ ਹੈ।"
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "ਅਣਜਾਣੀ ਅਸਫਲਤਾ: %s"
+
+#~ msgid "Incorrect username or password."
+#~ msgstr "ਗਲਤ ਯੂਜ਼ਰ-ਨਾਂ ਜਾਂ ਪਾਸਵਰਡ।"
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "ਸਰਵਿਸ ਆਰਜ਼ੀ ਤੌਰ ਉੱਤੇ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ।"
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "ਤੁਹਾਡਾ ਚੇਤਾਵਨੀ ਲੈਵਲ ਇੰਨਾ ਜ਼ਿਆਦਾ ਹੈ ਕਿ ਲਾਗਇਨ ਨਹੀਂ ਹੋਇਆ ਜਾਂਦਾ ਹੈ।"
+
+#~ 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 ""
+#~ "ਤੁਸੀਂ ਲਗਾਤਾਰ ਜੁੜ ਅਤੇ ਟੁੱਟ ਰਹੇ ਹੋ। ਦਸ ਮਿੰਟ ਦੀ ਉਡੀਕ ਕਰਕੇ ਮੁੜ ਕੋਸ਼ਿਸ ਕਰੋ। ਜੇਕਰ ਜੁੜਨ ਦੀ ਕੋਸ਼ਿਸ "
+#~ "ਕੀਤੀ ਤਾਂ ਹੋਰ ਵੀ ਵਧੇਰੇ ਉਡੀਕ ਕਰਨੀ ਪਵੇਗੀ।"
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "ਇੱਕ ਅਣਜਾਣੀ ਦਾਖਲਾ ਗਲਤੀ ਆਈ ਹੈ: %s"
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "ਅਣਜਾਣੀ ਗਲਤੀ, %d,ਆਈ ਹੈ। ਜਾਣਕਾਰੀ: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "ਗਲਤ ਗਰੁੱਪ-ਨਾਂ"
+
+#~ msgid "Connection Closed"
+#~ msgstr "ਕੁਨੈਕਸ਼ਨ ਬੰਦ ਹੋਇਆ"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "ਜਵਾਬ ਦੀ ਉਡੀਕ ਜਾਰੀ ਹੈ..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "TOC ਆਪਣੀ ਵਿਰਾਮ ਸਥਿਤੀ ਤੋਂ ਵਾਪਿਸ ਹੋਇਆ। ਹੁਣ ਤੁਸੀਂ ਸੁਨੇਹੇ ਭੇਜ ਸਕਦੇ ਹੋ।"
+
+#~ msgid "Password Change Successful"
+#~ msgstr "ਪਾਸਵਰਡ ਸਫਲਤਾਪੂਰਕ ਤਬਦੀਲ ਕੀਤਾ ਗਿਆ"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "ਡਾਇ ਜਾਣਕਾਰੀ ਲਵੋ"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "ਡਾਇ ਜਾਣਕਾਰੀ ਦਿਓ"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "%s ਨੂੰ ਲਿਖਣ ਲਈ ਖੋਲਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr "ਫਾਇਲ ਸੰਚਾਰ ਅਸਫਲ ਹੈ; ਦੂਜੇ ਪਾਸੇ ਤੋਂ ਰੱਦ ਕੀਤਾ ਗਿਆ ਹੈ।"
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "ਭੇਜਣ ਲਈ ਜੁੜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ।"
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "ਫਾਇਲ ਸਿਰਲੇਖ ਲਿਖਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ। ਇਹ ਫਾਇਲ ਭੇਜੀ ਨਹੀਂ ਜਾ ਸਕੇਗੀ।"
+
+#~ msgid "Save As..."
+#~ msgstr "ਇੰਝ ਸੰਭਾਲੋ..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s ਨੇ %s ਨੂੰ %d ਫਾਇਲ ਸਵੀਕਾਰ ਕਰਨ ਦੀ ਬੇਨਤੀ ਕੀਤੀ ਹੈ: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s ਨੇ %s ਨੂੰ %d ਫਾਇਲਾਂ ਸਵੀਕਾਰ ਕਰਨ ਦੀ ਬੇਨਤੀ ਕੀਤੀ ਹੈ: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s ਨੇ ਤੁਹਾਨੂੰ ਫਾਇਲ ਭੇਜਣ ਦੀ ਬੇਨਤੀ ਕੀਤੀ ਹੈ"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "TOC ਪਰੋਟੋਕਾਲ ਪਲੱਗਇਨ"
+
+#~ msgid "%s Options"
+#~ msgstr "%s ਚੋਣ"
+
+#~ msgid "Proxy Options"
+#~ msgstr "ਪਰਾਕਸੀ ਚੋਣ"
+
+#~ msgid "By log size"
+#~ msgstr "ਲਾਗ ਅਕਾਰ"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "ਝਲਾਕਾਰੇ ਵਿੱਚ ਖੋਲੋ(_O)"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "ST_UN ਸਰਵਰ:"
+
+#~ msgid "Smiley _Image"
+#~ msgstr "ਸਮਾਈਲੀ ਚਿੱਤਰ(_I)"
+
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "ਸਮਾਈਲੀ ਸ਼ਾਰਟਕੱਟ(_h)"
diff --git a/po/pl.po b/po/pl.po
index b2706e6b43..b2a2f1cf71 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -12,7 +12,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin polish translation\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-01-11 12:36-0500\n"
+"POT-Creation-Date: 2009-04-30 10:39-0400\n"
"PO-Revision-Date: 2008-12-29 17:50+0100\n"
"Last-Translator: Piotr Makowski (Aviary.pl) <pmakowski@aviary.pl>\n"
"Language-Team: Piotr Makowski (Aviary.pl) <pmakowski@aviary.pl>\n"
@@ -35,13 +35,13 @@ msgstr "Finch"
msgid "%s. Try `%s -h' for more information.\n"
msgstr "%s. Napisz \"%s -h\" aby uzyskać więcej informacji.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -634,19 +634,6 @@ msgstr ""
msgid "Send To"
msgstr "_Wyślij do"
-#, fuzzy
-msgid "Invite message"
-msgstr "Wstaw do rozmowy"
-
-msgid "Invite"
-msgstr "Zaproś"
-
-#, fuzzy
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr "Wpisz kogo chcesz zaprosić, dodatkowo można podać tekst zaproszenia."
-
msgid "Conversation"
msgstr "Rozmowa"
@@ -906,6 +893,41 @@ msgstr "Rozmowy"
msgid "System Log"
msgstr "Dziennik systemowy"
+#, fuzzy
+msgid "Calling ... "
+msgstr "Obliczanie..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "Akceptuj"
+
+msgid "Reject"
+msgstr "Odrzuć"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "Opuszczono kanał%s%s"
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "Emaile"
@@ -941,6 +963,9 @@ msgstr "Kontynuuj"
msgid "IM"
msgstr "Wiadomość"
+msgid "Invite"
+msgstr "Zaproś"
+
msgid "(none)"
msgstr "(brak)"
@@ -1151,7 +1176,6 @@ msgstr "%s zmieniła/zmienił stus na zajęty. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s wysłał do Ciebie wiadomość. (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr ""
"Przechwycono nieznane zdarzenie. Proszę zawiadomić autorów programu Pidgin!"
@@ -1206,7 +1230,6 @@ msgstr "_Czas (w minutach) do zmiany statusu:"
msgid "Change status to"
msgstr "Zmiana _statusu na:"
-#. Conversations
msgid "Conversations"
msgstr "Rozmowy"
@@ -1609,6 +1632,28 @@ msgstr ""
msgid "Lastlog plugin."
msgstr "Instaluj wtyczkę..."
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "konta"
@@ -1714,13 +1759,6 @@ msgstr "Certyfikat dla %s"
msgid "SSL Certificate Verification"
msgstr "Weryfikacja Certyfikatu SSL"
-#. Number of actions
-msgid "Accept"
-msgstr "Akceptuj"
-
-msgid "Reject"
-msgstr "Odrzuć"
-
#, fuzzy
msgid "_View Certificate..."
msgstr "/Narzędzia/_Certyfikaty"
@@ -1858,6 +1896,16 @@ msgstr "użytkownik %s wyszedł z pokoju."
msgid "%s left the room (%s)."
msgstr "użytkownik %s wyszedł z pokoju (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Zaproś do konferencji"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr "Wpisz kogo chcesz zaprosić, dodatkowo można podać tekst zaproszenia."
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "Nie można utworzyć połączenia: %s"
@@ -2679,6 +2727,32 @@ msgstr "Zapisuj wiadomości offline jako zdarzenie"
msgid "Do not ask. Always save in pounce."
msgstr "Nie pytaj. Zawsze zapisuj jako zdarzenie."
+#, fuzzy
+msgid "One Time Password"
+msgstr "Wprowadź hasło"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2884,7 +2958,6 @@ msgstr ""
"Nie można nawiązać połączenia z lokalnym serwerem mDNS. Sprawdź czy jest on "
"uruchomiony."
-#. Creating the options for the protocol
msgid "First name"
msgstr "Imię"
@@ -2917,6 +2990,11 @@ msgstr "Wtyczka protokołu Bonjour"
msgid "Purple Person"
msgstr "Nowa osoba"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "Miejscowość"
+
msgid "Bonjour"
msgstr "Bonjour"
@@ -3076,6 +3154,7 @@ msgstr "Wybierz konferencję dla: %s"
msgid "Add to chat..."
msgstr "Dodaj do konferencji..."
+#. Global
msgid "Available"
msgstr "Dostępny"
@@ -3424,6 +3503,17 @@ msgstr ""
"Wybrana przez Ciebie nazwa konta została odrzucona przez serwer. "
"Prawdopodobnie dlatego, że zawierała niedozwolone znaki."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "Nazwa konferencji jest aktualnie używana"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Identyfikator"
+
msgid "Cannot change nick"
msgstr "Nie można zmienić ksywki"
@@ -3709,6 +3799,41 @@ msgstr "Nieprawidłowe żądanie od serwera"
msgid "SASL error"
msgstr "Błąd SASL"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "Nie podano powodu."
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Nieobsługiwana wersja"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"Nie można nawiązać połączenia z serwerem:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"Nie można nawiązać połączenia z serwerem:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "Nie można zainicjować połączenia"
+
+msgid "Unable to create socket"
+msgstr "Nie można utworzyć gniazda"
+
+msgid "Write error"
+msgstr "Błąd zapisu"
+
msgid "Full Name"
msgstr "Imię i nazwisko"
@@ -3775,6 +3900,10 @@ msgstr "Klient"
msgid "Operating System"
msgstr "System operacyjny"
+#, fuzzy
+msgid "Local Time"
+msgstr "Lokalna nazwa pliku:"
+
msgid "Last Activity"
msgstr ""
@@ -4131,9 +4260,6 @@ msgstr "Szukanie pokoju"
msgid "You require encryption, but it is not available on this server."
msgstr ""
-msgid "Write error"
-msgstr "Błąd zapisu"
-
#, fuzzy
msgid "Ping timeout"
msgstr "Zwykły tekst"
@@ -4143,14 +4269,9 @@ msgstr "Błąd oczytu"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"Nie można nawiązać połączenia z serwerem:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "Nie można utworzyć gniazda"
msgid "Invalid XMPP ID"
msgstr "Nieprawidłowy identyfikator XMPP"
@@ -4158,6 +4279,10 @@ msgstr "Nieprawidłowy identyfikator XMPP"
msgid "Invalid XMPP ID. Domain must be set."
msgstr ""
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Nie udało się połączyć z serwerem."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "Pomyślnie zarejestrowano nowy identyfikator %s@%s "
@@ -4254,6 +4379,12 @@ msgstr ""
msgid "Not Authorized"
msgstr "Brak autoryzacji"
+msgid "Mood"
+msgstr "Nastrój"
+
+msgid "Now Listening"
+msgstr ""
+
msgid "Both"
msgstr "Obustronna"
@@ -4275,12 +4406,6 @@ msgstr "Brak"
msgid "Subscription"
msgstr "Subskrypcja"
-msgid "Mood"
-msgstr "Nastrój"
-
-msgid "Now Listening"
-msgstr ""
-
#, fuzzy
msgid "Mood Text"
msgstr "Grupa krwi"
@@ -4524,20 +4649,30 @@ msgstr "Nie można wykopać użytkownika %s"
msgid "Unable to ping user %s"
msgstr "Nie można zbanować użytkownika %s"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr ""
+"Nie można przesłać pliku do %s, użytkownik nie ma włączonej obsługi "
+"przesyłania plików"
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr ""
+"Nie można przesłać pliku do %s, użytkownik nie ma włączonej obsługi "
+"przesyłania plików"
#, fuzzy, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr ""
"Nie można przesłać pliku do %s, użytkownik nie ma włączonej obsługi "
"przesyłania plików"
+#, c-format
+msgid "Buzzing %s..."
+msgstr ""
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
msgid "Buzz"
@@ -4547,9 +4682,34 @@ msgstr ""
msgid "%s has buzzed you!"
msgstr "%s zalogował się."
-#, c-format
-msgid "Buzzing %s..."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "Nie można wysłać wiadomości do %s - niewłaściwy JID"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "Nie można przesłać pliku do %s: użytkownik nie jest połączony z siecią"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr "Nie można przesłać pliku do %s: użytkownik nie jest połączony z siecią"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "Błąd podczas rejestracji"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "Wybierz zasób kontaktu %s na który chcesz wysłać plik"
+
+msgid "Select a Resource"
+msgstr "Wybór Zasobu"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "Rozpocznij _konferencję"
msgid "config: Configure a chat room."
msgstr "config: Konfiguruje pokój konferencyjny."
@@ -4714,6 +4874,21 @@ msgstr "Błąd przyłączania się do konferencji %s"
msgid "Error in chat %s"
msgstr "Błąd w konferencji %s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "Wystąpił błąd podczas otwierania pliku."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "Przesyłanie plików zakończyło się niepowowdzeniem"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Nie można odczytać pliku '%s': %s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4739,9 +4914,6 @@ msgstr "Nie można przesłać pliku do %s: użytkownik nie jest połączony z si
msgid "Please select the resource of %s to which you would like to send a file"
msgstr "Wybierz zasób kontaktu %s na który chcesz wysłać plik"
-msgid "Select a Resource"
-msgstr "Wybór Zasobu"
-
msgid "Edit User Mood"
msgstr "Modyfikuj nastrój użytkownika"
@@ -4775,10 +4947,6 @@ msgstr "Działania"
msgid "Select an action"
msgstr "Wybór działania"
-#, fuzzy
-msgid "Unable to retrieve MSN Address Book"
-msgstr "Nie można pobrać listy znajomych"
-
#. 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
@@ -6599,7 +6767,7 @@ msgid ""
"only letters, numbers and spaces, or contain only numbers."
msgstr ""
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
#, fuzzy
msgid "Invalid username."
@@ -6616,7 +6784,7 @@ msgstr "Twoje konto jest w tej chwili zawieszone."
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "Usługa AOL Instant Messenger jest tymczasowo niedostępna."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6810,7 +6978,7 @@ msgstr[0] "Pominięto %hu wiadomość od %s z nieznanych powodów."
msgstr[1] "Pominięto %hu wiadomości od %s z nieznanych powodów."
msgstr[2] "Pominięto %hu wiadomości od %s z nieznanych powodów."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "Nie można wysłać wiadomości: %s"
@@ -7429,6 +7597,38 @@ msgstr "Ostatnia aktualizacja"
msgid "Could not change buddy information."
msgstr "Proszę podać informacje o znajomym."
+msgid "Mobile"
+msgstr "Dostępny pod telefonem komórkowym"
+
+msgid "Note"
+msgstr "Uwagi"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "Ikona użytkownika"
+
+msgid "Change his/her memo as you like"
+msgstr ""
+
+#, fuzzy
+msgid "_Modify"
+msgstr "Modyfikuj"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "Modyfikuj"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "Serwer zajęty"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
#, fuzzy, c-format
msgid "%u requires verification"
msgstr "Wymaga autoryzacji"
@@ -7780,6 +7980,13 @@ msgstr ""
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<b>Tytuł grupy:</b> %s<br>"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<b>Tytuł grupy:</b> %s<br>"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7808,6 +8015,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "O programie %s"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Adres domowy"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7851,6 +8062,9 @@ msgstr "Port serwera"
msgid "Show server news"
msgstr "Adres serwera"
+msgid "Show chat room when msg comes"
+msgstr ""
+
#, fuzzy
msgid "Keep alive interval (seconds)"
msgstr "Niepoprawny błąd"
@@ -7928,7 +8142,6 @@ msgid ""
"%s"
msgstr ""
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "Nie można się połączyć."
@@ -8834,9 +9047,6 @@ msgstr "Organizacja"
msgid "Unit"
msgstr "Jednostka"
-msgid "Note"
-msgstr "Uwagi"
-
msgid "Join Chat"
msgstr "Przyłącz do konferencji"
@@ -9546,194 +9756,10 @@ msgid "Auth Domain"
msgstr "Domena do autoryzacji"
#, c-format
-msgid "Looking up %s"
-msgstr "Wyszukiwanie %s"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Połączenie z %s nie powiodło się"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Logowanie: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "Nie można zapisać pliku %s."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "Nie można odczytać pliku %s."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "Wiadomość zbyt długa, odcięto ostatnie %s bajtów."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s nie jest w tej chwili zalogowany."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "Ostrzeżenie %s jest niedozwolone."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr ""
-"Wiadomość została odrzucona, przekroczono ograniczenie prędkości serwera."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "Konferencja w %s jest niedostępna."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "Zbyt szybkie wysyłanie wiadomości do %s."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "Pominięto wiadomość od %s ponieważ była zbyt duża."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "Pominięto wiadomość od %s ponieważ była wysłana zbyt szybko."
-
-#, c-format
-msgid "Failure."
-msgstr "Awaria."
-
-#, c-format
-msgid "Too many matches."
-msgstr "Zbyt wiele dopasowań."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "Potrzeba więcej kwalifikatorów."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "Usługa katalogu tymczasowo niedostępna."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "Zastrzeżone wyszukiwanie email."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "Zignorowano słowo kluczowe."
-
-#, c-format
-msgid "No keywords."
-msgstr "Brak słów kluczowych."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "Użytkownik nie posiada informacji w katalogu."
-
-#, c-format
-msgid "Country not supported."
-msgstr "Kraj nie jest obsługiwany."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Nieznana awaria: %s."
-
-#, fuzzy, c-format
-msgid "Incorrect username or password."
-msgstr "Niepoprawny identyfikator lub hasło."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "Usługa jest tymczasowo niedostępna."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "Twój poziom ostrzeżeń jest zbyt wysoki aby można się było zalogować."
-
-#, 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 ""
-"Zbyt często się łączono i rozłączano. Zaczekaj dziesięć minut i spróbuj "
-"ponownie. W razie podejmowania dalszych prób, okres oczekiwania się wydłuży."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "Wystąpił nieznany błąd logowania: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "Wystąpił nieznany błąd, %d. Informacja: %s"
-
-msgid "Invalid Groupname"
-msgstr "Niewłaściwa nazwa grupy"
-
-msgid "Connection Closed"
-msgstr "Połączenie zamknięte"
-
-msgid "Waiting for reply..."
-msgstr "Oczekiwanie na odpowiedź..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "TOC jest dostępny. Można ponownie wysłać wiadomości."
-
-msgid "Password Change Successful"
-msgstr "Pomyślnie zmieniono hasło"
-
-msgid "_Group:"
-msgstr "_Grupa:"
-
-msgid "Get Dir Info"
-msgstr "Pobierz informację katalogu"
-
-msgid "Set Dir Info"
-msgstr "Ustaw informację katalogu"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "Nie można otworzyć %s do zapisu!"
-
-msgid "File transfer failed; other side probably canceled."
+msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
-"Przesyłanie pliku zakończyło się niepowodzeniem, prawdopodobnie druga strona "
-"anulowała transmisję."
-
-msgid "Could not connect for transfer."
-msgstr "Nie można nawiązać połączenia do przesyłania."
-msgid "Could not write file header. The file will not be transferred."
-msgstr "Nie udało się zapisać nagłówka pliku. Plik nie zostanie przesłany."
-
-msgid "Save As..."
-msgstr "Zapisz jako..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s prosi %s o akceptację %d pliku: %s (%.2f %s)%s%s"
-msgstr[1] "%s prosi %s o akceptację %d plików: %s (%.2f %s)%s%s"
-msgstr[2] "%s prosi %s o akceptację %d plików: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s prosi o wysłanie pliku"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "Wtyczka protokołu TOC"
-
-#, c-format
-msgid "%s has sent you a webcam invite, which is not yet supported."
+msgid "Your SMS was not delivered"
msgstr ""
msgid "Your Yahoo! message did not get sent."
@@ -10356,9 +10382,6 @@ msgstr "Nie przeszkadzać"
msgid "Extended away"
msgstr "Wrócę później"
-msgid "Mobile"
-msgstr "Dostępny pod telefonem komórkowym"
-
msgid "Listening to music"
msgstr ""
@@ -10400,18 +10423,6 @@ msgstr "+++ %s powrócił z ze stanu bezczynności"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "Błąd odczytu %s"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"Wystąpił błąd podczas odczytu Twojego %s. Dane nie zostały wczytane, a "
-"stary plik został zmieniony na %s~."
-
msgid "Calculating..."
msgstr "Obliczanie..."
@@ -10493,6 +10504,14 @@ msgstr "Błąd zapisu do %s: %s"
msgid "Unable to connect to %s: %s"
msgstr "Nie można połączyć się z %s: %s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+"Serwer wymaga TLS/SSL do zalogowania. Jednak Twój Pidgin nie posiada obsługi "
+"TLS/SSL."
+
#, c-format
msgid " - %s"
msgstr ""
@@ -10526,6 +10545,18 @@ msgstr "Reset połączenia"
msgid "Address already in use."
msgstr "Nazwa konferencji jest aktualnie używana"
+#, c-format
+msgid "Error Reading %s"
+msgstr "Błąd odczytu %s"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"Wystąpił błąd podczas odczytu Twojego %s. Dane nie zostały wczytane, a "
+"stary plik został zmieniony na %s~."
+
msgid "Internet Messenger"
msgstr "Komunikator Internetowy"
@@ -10568,10 +10599,8 @@ msgstr "Powiadamianie o nowej _poczcie"
msgid "Use this buddy _icon for this account:"
msgstr "Używanie poniższej ikony użytkownika dla tego konta:"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "Opcje %s"
+msgid "_Advanced"
+msgstr "_Zaawansowane"
msgid "Use GNOME Proxy Settings"
msgstr "Ustawienia pośrednika sieciowego z GNOME"
@@ -10606,9 +10635,6 @@ msgstr "Jeśli spojrzysz naprawdę blisko"
msgid "you can see the butterflies mating"
msgstr "ujrzysz łączące się w pary motyle"
-msgid "Proxy Options"
-msgstr "Opcje pośrednika sieciowego"
-
msgid "Proxy _type:"
msgstr "_Rodzaj pośrednika:"
@@ -10637,8 +10663,9 @@ msgstr "_Podstawowe"
msgid "Create _this new account on the server"
msgstr "Utwórz _nowe konto na serwerze"
-msgid "_Advanced"
-msgstr "_Zaawansowane"
+#, fuzzy
+msgid "_Proxy"
+msgstr "Pośrednik (proxy)"
msgid "Enabled"
msgstr "Włączone"
@@ -10714,6 +10741,17 @@ msgstr "_Informacje"
msgid "I_M"
msgstr "_Wiadomość"
+#, fuzzy
+msgid "_Audio Call"
+msgstr "_Dodaj konferencję"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Konferencja wideo"
+
msgid "_Send File..."
msgstr "Wyślij _plik"
@@ -10853,6 +10891,10 @@ msgstr "/Narzędzia/Przechwytywanie _zdarzeń"
msgid "/Tools/_Certificates"
msgstr "/Narzędzia/_Certyfikaty"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Narzędzia/Prywatność"
+
msgid "/Tools/Plu_gins"
msgstr "/Narzędzia/W_tyczki"
@@ -10862,10 +10904,6 @@ msgstr "/Narzędzia/_Ustawienia"
msgid "/Tools/Pr_ivacy"
msgstr "/Narzędzia/P_rywatność"
-#, fuzzy
-msgid "/Tools/Smile_y"
-msgstr "/Narzędzia/Prywatność"
-
msgid "/Tools/_File Transfers"
msgstr "/Narzędzia/Przesyłanie _plików"
@@ -10988,8 +11026,8 @@ msgstr "Ręcznie"
msgid "By status"
msgstr "Według statusu"
-msgid "By log size"
-msgstr "Według rozmiaru dziennika"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -11006,6 +11044,9 @@ msgstr "Połącz"
msgid "Re-enable"
msgstr "Włącz ponownie"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr ""
@@ -11098,6 +11139,9 @@ msgstr ""
msgid "A_lias:"
msgstr "A_lias:"
+msgid "_Group:"
+msgstr "_Grupa:"
+
#, fuzzy
msgid "Auto_join when account becomes online."
msgstr "Automatycznie dołącz podczas połączenia konta."
@@ -11152,12 +11196,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr "Zaproszenie użytkownika do pokoju konferencyjnego"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr "Wpisz kogo chcesz zaprosić, dodatkowo można podać tekst zaproszenia."
-
msgid "_Buddy:"
msgstr "_Użytkownik:"
@@ -11235,6 +11273,22 @@ msgstr "/Rozmowa/Z_apisz jako..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Rozmowa/Wyczyść okno"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Rozmowa/Więcej"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Rozmowa/Więcej"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Rozmowa/Więcej"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Rozmowa/Wyświetl _dziennik rozmów"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Rozmowa/_Wyślij plik..."
@@ -11307,6 +11361,18 @@ msgstr "/Rozmowa"
msgid "/Conversation/View Log"
msgstr "/Rozmowa/Wyświetl dziennik rozmów"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Rozmowa/_Więcej"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Rozmowa/Wyświetl dziennik rozmów"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Rozmowa/_Więcej"
+
msgid "/Conversation/Send File..."
msgstr "/Rozmowa/Wyślij plik..."
@@ -11493,6 +11559,9 @@ msgstr "Artyści"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "wsparcie"
@@ -11638,6 +11707,10 @@ msgstr "Gruziński"
msgid "Ubuntu Georgian Translators"
msgstr "Aktualni tłumacze"
+#, fuzzy
+msgid "Khmer"
+msgstr "Inny"
+
msgid "Kannada"
msgstr "Kannada"
@@ -11660,6 +11733,10 @@ msgstr "Litewski"
msgid "Macedonian"
msgstr "Macedoński"
+#, fuzzy
+msgid "Mongolian"
+msgstr "Macedoński"
+
msgid "Bokmål Norwegian"
msgstr "Norweski Bokmål"
@@ -11766,7 +11843,24 @@ msgid ""
msgstr ""
#, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, fuzzy, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin na irc.freenode.net<BR><BR>"
+
+#, fuzzy, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin na irc.freenode.net<BR><BR>"
msgid "Current Developers"
@@ -12091,15 +12185,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr "Powiadamianie o nowej poczcie"
-msgid "_Copy Email Address"
-msgstr "Skopiuj a_dres email"
-
-msgid "_Open Link in Browser"
-msgstr "_Otwórz odnośnik w przeglądarce"
-
-msgid "_Copy Link Location"
-msgstr "_Skopiuj adres odnośnika"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12351,6 +12436,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12377,6 +12463,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12416,11 +12503,27 @@ msgstr ""
msgid "Pidgin"
msgstr "Pidgin"
-msgid "Open All Messages"
-msgstr "Otwórz wszystkie wiadomości"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Masz wiadomość email!</span>"
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "Obliczanie..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -12452,6 +12555,27 @@ msgid ""
msgstr ""
"Wybrano \"ręczne\" polecenie przeglądarki, lecz nie ustawiono polecenia."
+msgid "Open All Messages"
+msgstr "Otwórz wszystkie wiadomości"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Masz wiadomość email!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "Nowe przechwytywanie zdarzeń"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Masz wiadomość email!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "Nieznany komunikat"
+
msgid "The following plugins will be unloaded."
msgstr "Następujące wtyczki zostaną wyłączone."
@@ -12504,6 +12628,10 @@ msgstr "<b>Szczegółowe informacje o wtyczce</b>"
msgid "Select a file"
msgstr "Wybierz plik"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Modyfikacja zdarzenia"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "Źródło zdarzeń"
@@ -12574,6 +12702,51 @@ msgstr "_Powtarzanie"
msgid "Pounce Target"
msgstr "Źródło zdarzeń"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "Rozpoczyna pisanie"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "Wstrzymuje pisanie"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "loguje się"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s przestał być bezczynny (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "wraca"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "Zakończył(a) pisanie"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "wylogowuje się"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "przechodzi w stan bezczynności"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "Podczas nieobecności"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Wysłanie wiado_mości"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr ""
+"Przechwycono nieznane zdarzenie. Proszę zawiadomić autorów programu Pidgin!"
+
msgid "Smiley theme failed to unpack."
msgstr "Nie udało się rozpakować zestawu emotikon."
@@ -12596,6 +12769,12 @@ msgstr "Skróty klawiaturowe"
msgid "Cl_ose conversations with the Escape key"
msgstr "Zamykanie r_ozmów za pomocą klawisza Escape"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Lista znajomych"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "Ikona obszaru powiadamiania"
@@ -12709,9 +12888,6 @@ msgstr "Nie można uruchomić aplikacji konfigurującej proxy."
msgid "Cannot start browser configuration program."
msgstr "Nie można uruchomić aplikacji konfigurującej proxy."
-msgid "ST_UN server:"
-msgstr "Serwer _STUN:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">Przykład: stunserver.org</span>"
@@ -12736,6 +12912,10 @@ msgstr "Początkowy zakres portów:"
msgid "_End port:"
msgstr "Końcowy zakres portów:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr "Serwer pośredniczący i przeglądarka"
@@ -12764,6 +12944,10 @@ msgstr "Serwer pośredniczący"
msgid "No proxy"
msgstr "Bez pośrednika"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "_Użytkownik:"
@@ -12923,12 +13107,12 @@ msgstr "Podczas nieobecności z powodu bezczynności"
msgid "Auto-away"
msgstr "Automatyczny status \"Zaraz wracam\""
-msgid "Change status when _idle"
-msgstr "Zmiana Statusu po wykryciu bezczynności"
-
msgid "_Minutes before becoming idle:"
msgstr "_Czas (w minutach) do zmiany statusu:"
+msgid "Change status when _idle"
+msgstr "Zmiana Statusu po wykryciu bezczynności"
+
msgid "Change _status to:"
msgstr "Zmiana _statusu na:"
@@ -13079,6 +13263,12 @@ msgstr "Z_apisz i użyj"
msgid "Status for %s"
msgstr "Status dla %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
msgid "Custom Smiley"
msgstr "Niestandardowa emotikona"
@@ -13088,15 +13278,15 @@ msgstr ""
msgid "Please provide a shortcut to associate with the smiley."
msgstr "Proszę wprowadzić dowiązanie do emotikony."
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
+msgstr ""
+
#, fuzzy
msgid "Duplicate Shortcut"
msgstr "Poprawianie duplikatów"
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
-msgstr ""
-
msgid "Please select an image for the smiley."
msgstr "Proszę wybrać obraz emotikony."
@@ -13106,16 +13296,22 @@ msgstr "Modyfikuj emotikonę"
msgid "Add Smiley"
msgstr "Dodaj emotikonę"
-msgid "Smiley _Image"
-msgstr "Obraz emotikony"
+#, fuzzy
+msgid "_Image:"
+msgstr "_Obrazek"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr "Skrót emotikony"
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "Sortuj"
msgid "Smiley"
msgstr "Emotikona"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "Sortuj"
+
msgid "Custom Smiley Manager"
msgstr "Menadżer niestandardowych emotikon"
@@ -13243,6 +13439,16 @@ msgstr ""
"Nie można odczytać obrazka '%s': przyczyna nieznana, prawdopodobnie "
"uszkodzony plik"
+#, fuzzy
+msgid "_Open Link"
+msgstr "_Otwarcie odnośnika w:"
+
+msgid "_Copy Link Location"
+msgstr "_Skopiuj adres odnośnika"
+
+msgid "_Copy Email Address"
+msgstr "Skopiuj a_dres email"
+
msgid "Save File"
msgstr "Zapisz plik"
@@ -14224,9 +14430,6 @@ msgstr "O_kno listy znajomych zawsze na wierzchu"
msgid "Only when docked"
msgstr "Tylko gdy jest zadokowane"
-msgid "_Flash window when chat messages are received"
-msgstr "_Migotanie okna po odebraniu wiadomości"
-
msgid "Windows Pidgin Options"
msgstr "Pidgwin - Opcje "
@@ -14277,6 +14480,192 @@ msgstr "Wysyłaj i odbieraj surowe stanzy XMPP"
msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr "Ta wtyczka jest przydatna do debugowania klientów i serwerów XMPP."
+#, fuzzy
+#~ msgid "Invite message"
+#~ msgstr "Wstaw do rozmowy"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Wpisz kogo chcesz zaprosić, dodatkowo można podać tekst zaproszenia."
+
+#, fuzzy
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "Nie można pobrać listy znajomych"
+
+#~ msgid "Looking up %s"
+#~ msgstr "Wyszukiwanie %s"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "Połączenie z %s nie powiodło się"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Logowanie: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "Nie można zapisać pliku %s."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "Nie można odczytać pliku %s."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "Wiadomość zbyt długa, odcięto ostatnie %s bajtów."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s nie jest w tej chwili zalogowany."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "Ostrzeżenie %s jest niedozwolone."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr ""
+#~ "Wiadomość została odrzucona, przekroczono ograniczenie prędkości serwera."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "Konferencja w %s jest niedostępna."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "Zbyt szybkie wysyłanie wiadomości do %s."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "Pominięto wiadomość od %s ponieważ była zbyt duża."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr "Pominięto wiadomość od %s ponieważ była wysłana zbyt szybko."
+
+#~ msgid "Failure."
+#~ msgstr "Awaria."
+
+#~ msgid "Too many matches."
+#~ msgstr "Zbyt wiele dopasowań."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "Potrzeba więcej kwalifikatorów."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "Usługa katalogu tymczasowo niedostępna."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "Zastrzeżone wyszukiwanie email."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "Zignorowano słowo kluczowe."
+
+#~ msgid "No keywords."
+#~ msgstr "Brak słów kluczowych."
+
+#~ msgid "User has no directory information."
+#~ msgstr "Użytkownik nie posiada informacji w katalogu."
+
+#~ msgid "Country not supported."
+#~ msgstr "Kraj nie jest obsługiwany."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Nieznana awaria: %s."
+
+#, fuzzy
+#~ msgid "Incorrect username or password."
+#~ msgstr "Niepoprawny identyfikator lub hasło."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "Usługa jest tymczasowo niedostępna."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr ""
+#~ "Twój poziom ostrzeżeń jest zbyt wysoki aby można się było zalogować."
+
+#~ 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 ""
+#~ "Zbyt często się łączono i rozłączano. Zaczekaj dziesięć minut i spróbuj "
+#~ "ponownie. W razie podejmowania dalszych prób, okres oczekiwania się "
+#~ "wydłuży."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "Wystąpił nieznany błąd logowania: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "Wystąpił nieznany błąd, %d. Informacja: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "Niewłaściwa nazwa grupy"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Połączenie zamknięte"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "Oczekiwanie na odpowiedź..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "TOC jest dostępny. Można ponownie wysłać wiadomości."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "Pomyślnie zmieniono hasło"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Pobierz informację katalogu"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Ustaw informację katalogu"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "Nie można otworzyć %s do zapisu!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr ""
+#~ "Przesyłanie pliku zakończyło się niepowodzeniem, prawdopodobnie druga "
+#~ "strona anulowała transmisję."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "Nie można nawiązać połączenia do przesyłania."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "Nie udało się zapisać nagłówka pliku. Plik nie zostanie przesłany."
+
+#~ msgid "Save As..."
+#~ msgstr "Zapisz jako..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s prosi %s o akceptację %d pliku: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s prosi %s o akceptację %d plików: %s (%.2f %s)%s%s"
+#~ msgstr[2] "%s prosi %s o akceptację %d plików: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s prosi o wysłanie pliku"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "Wtyczka protokołu TOC"
+
+#~ msgid "%s Options"
+#~ msgstr "Opcje %s"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Opcje pośrednika sieciowego"
+
+#~ msgid "By log size"
+#~ msgstr "Według rozmiaru dziennika"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_Otwórz odnośnik w przeglądarce"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "Serwer _STUN:"
+
+#~ msgid "Smiley _Image"
+#~ msgstr "Obraz emotikony"
+
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "Skrót emotikony"
+
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "_Migotanie okna po odebraniu wiadomości"
+
#~ msgid ""
#~ "You may be disconnected shortly. You may want to use TOC until this is "
#~ "fixed. Check %s for updates."
diff --git a/po/ps.po b/po/ps.po
index 964bbac092..24489162d5 100644
--- a/po/ps.po
+++ b/po/ps.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin 2.0beta6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
+"POT-Creation-Date: 2009-04-30 10:39-0400\n"
"PO-Revision-Date: 2007-03-14 13:08+0500\n"
"Last-Translator: Kashif Masood <masudmails@yahoo.com>\n"
"Language-Team: Pashto\n"
@@ -33,7 +33,7 @@ msgid ""
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -594,18 +594,6 @@ msgid "Send To"
msgstr "و استوه"
#, fuzzy
-msgid "Invite message"
-msgstr "استولي پیغامونه"
-
-msgid "Invite"
-msgstr "بلل"
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-
-#, fuzzy
msgid "Conversation"
msgstr "مرکې"
@@ -855,6 +843,41 @@ msgstr "مرکې"
msgid "System Log"
msgstr "د سیستم یاداشت لیک"
+#, fuzzy
+msgid "Calling ... "
+msgstr "شمېره و..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+#, fuzzy
+msgid "Accept"
+msgstr "قبلول"
+
+msgid "Reject"
+msgstr "ردول"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+msgid "You have rejected the call."
+msgstr ""
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "برېښنالیک"
@@ -889,6 +912,9 @@ msgstr "دوام ورکول"
msgid "IM"
msgstr "فوري زيری"
+msgid "Invite"
+msgstr "بلل"
+
msgid "(none)"
msgstr "(هیڅ نه)"
@@ -1109,7 +1135,6 @@ msgstr "‫%s ليرې لاړی. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr ""
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr ""
@@ -1158,7 +1183,6 @@ msgstr ""
msgid "Change status to"
msgstr "موقعيت بدلول"
-#. Conversations
msgid "Conversations"
msgstr "مرکې"
@@ -1477,7 +1501,6 @@ msgid ""
"conversation into the current conversation."
msgstr ""
-#, c-format
msgid "Online"
msgstr "په ليکه"
@@ -1525,6 +1548,28 @@ msgstr ""
msgid "Lastlog plugin."
msgstr ""
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "ارل"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "شمېرل"
@@ -1623,14 +1668,6 @@ msgstr ""
msgid "SSL Certificate Verification"
msgstr ""
-#. Number of actions
-#, fuzzy
-msgid "Accept"
-msgstr "قبلول"
-
-msgid "Reject"
-msgstr "ردول"
-
msgid "_View Certificate..."
msgstr ""
@@ -1766,6 +1803,16 @@ msgstr ""
msgid "%s left the room (%s)."
msgstr ""
+#, fuzzy
+msgid "Invite to chat"
+msgstr "مجلس ته بلل"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+
#, c-format
msgid "Failed to get connection: %s"
msgstr ""
@@ -1887,7 +1934,6 @@ msgstr ""
msgid "Transfer of file %s complete"
msgstr ""
-#, c-format
msgid "File transfer complete"
msgstr "دوسیه بدلونه پای"
@@ -1895,7 +1941,6 @@ msgstr "دوسیه بدلونه پای"
msgid "You canceled the transfer of %s"
msgstr ""
-#, c-format
msgid "File transfer cancelled"
msgstr "دوسیه بدلونه فسخ شو"
@@ -2080,7 +2125,6 @@ msgstr ""
msgid "You are using %s, but this plugin requires %s."
msgstr ""
-#, c-format
msgid "This plugin has not defined an ID."
msgstr ""
@@ -2541,6 +2585,32 @@ msgstr ""
msgid "Do not ask. Always save in pounce."
msgstr ""
+#, fuzzy
+msgid "One Time Password"
+msgstr "پټ ټکی بدلول"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2739,7 +2809,6 @@ msgid ""
"Unable to establish connection with the local mDNS server. Is it running?"
msgstr ""
-#. Creating the options for the protocol
msgid "First name"
msgstr "لومړی نوم"
@@ -2773,6 +2842,10 @@ msgstr "د بانجوړ نښلولي"
msgid "Purple Person"
msgstr "نوی کاس"
+#. Creating the options for the protocol
+msgid "Local Port"
+msgstr ""
+
msgid "Bonjour"
msgstr "بانجوړ"
@@ -2929,13 +3002,13 @@ msgstr ""
msgid "Add to chat..."
msgstr "ګپ شپ ته جمع که..."
+#. Global
msgid "Available"
msgstr "دلته يم"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "ليرې"
@@ -3272,6 +3345,17 @@ msgid ""
"invalid characters."
msgstr ""
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr ""
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "کمکی نوم"
+
msgid "Cannot change nick"
msgstr ""
@@ -3501,6 +3585,39 @@ msgstr ""
msgid "SASL error"
msgstr ""
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+msgid "No session ID given"
+msgstr ""
+
+msgid "Unsupported version of BOSH protocol"
+msgstr ""
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"د خادم سره رابطه نه و شوه:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"د خادم سره رابطه نه و شوه:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "رابطه نه و شوه"
+
+msgid "Unable to create socket"
+msgstr ""
+
+msgid "Write error"
+msgstr ""
+
msgid "Full Name"
msgstr ""
@@ -3565,6 +3682,10 @@ msgstr ""
msgid "Operating System"
msgstr ""
+#, fuzzy
+msgid "Local Time"
+msgstr "دلتنی دوسیه:"
+
msgid "Last Activity"
msgstr ""
@@ -3794,7 +3915,6 @@ msgstr "ګپ شپي"
msgid "Extended Away"
msgstr "اوژد ليرې"
-#, c-format
msgid "Do Not Disturb"
msgstr ""
@@ -3917,9 +4037,6 @@ msgstr ""
msgid "You require encryption, but it is not available on this server."
msgstr ""
-msgid "Write error"
-msgstr ""
-
#, fuzzy
msgid "Ping timeout"
msgstr "رابطه ناکامه شوه"
@@ -3929,13 +4046,8 @@ msgstr ""
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
-msgstr ""
-"د خادم سره رابطه نه و شوه:\n"
-"%s"
-
-msgid "Unable to create socket"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
#, fuzzy
@@ -3945,6 +4057,10 @@ msgstr "باطل هویت"
msgid "Invalid XMPP ID. Domain must be set."
msgstr ""
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "د خادم سره رابطه کول ناکامه شوه."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr ""
@@ -4034,9 +4150,18 @@ msgstr ""
msgid "Re-initializing Stream"
msgstr ""
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr ""
+msgid "Mood"
+msgstr "طبیعت"
+
+msgid "Now Listening"
+msgstr ""
+
msgid "Both"
msgstr ""
@@ -4058,12 +4183,6 @@ msgstr "هیڅ نه"
msgid "Subscription"
msgstr ""
-msgid "Mood"
-msgstr "طبیعت"
-
-msgid "Now Listening"
-msgstr ""
-
#, fuzzy
msgid "Mood Text"
msgstr "طبیعت"
@@ -4307,15 +4426,21 @@ msgid "Unable to ping user %s"
msgstr "کاروونکی نه شه شامل"
#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+msgid "Unable to buzz, because there is nothing known about %s."
+msgstr ""
+
+#, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr ""
#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr ""
#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+msgid "Buzzing %s..."
msgstr ""
#. Yahoo only supports one attention command: the 'buzz'.
@@ -4328,10 +4453,36 @@ msgstr "بڼیدل!!"
msgid "%s has buzzed you!"
msgstr "‫%s راننوتلو."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "د دوسیه %s ویل نه و شول."
+
#, c-format
-msgid "Buzzing %s..."
+msgid "Unable to initiate media with %s: user is not online"
+msgstr ""
+
+#, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
msgstr ""
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "رابطه ناکامه شوه"
+
+#, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr ""
+
+#, fuzzy
+msgid "Select a Resource"
+msgstr "کاروونکی خواښول"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "ګپ شپ پیل کول"
+
msgid "config: Configure a chat room."
msgstr ""
@@ -4480,6 +4631,20 @@ msgstr ""
msgid "Error in chat %s"
msgstr ""
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr ""
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "دوسیه بدلونه ناکام شوه"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "ګپ شپ نښلول ناکام شو"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4504,10 +4669,6 @@ msgid "Please select the resource of %s to which you would like to send a file"
msgstr ""
#, fuzzy
-msgid "Select a Resource"
-msgstr "کاروونکی خواښول"
-
-#, fuzzy
msgid "Edit User Mood"
msgstr "د کاروونکی حالتونه"
@@ -4546,7 +4707,17 @@ msgstr "عمل"
msgid "Select an action"
msgstr "ليکبڼه خواښه"
-msgid "Unable to retrieve MSN Address Book"
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr ""
+
+msgid "Buddy Add error"
+msgstr ""
+
+msgid "The username specified does not exist."
msgstr ""
#, c-format
@@ -4773,7 +4944,6 @@ msgstr ""
msgid "Passport account not yet verified"
msgstr ""
-#, c-format
msgid "Passport account suspended"
msgstr ""
@@ -4866,6 +5036,13 @@ msgstr ""
msgid "Page"
msgstr ""
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "کار"
+
msgid "Has you"
msgstr "ته رلو"
@@ -4907,6 +5084,14 @@ msgstr "حمل"
msgid "Album"
msgstr "اډیام"
+#, fuzzy
+msgid "Game Title"
+msgstr "دنده عنوان"
+
+#, fuzzy
+msgid "Office Title"
+msgstr "دنده عنوان"
+
msgid "Set Friendly Name..."
msgstr "دوستانه نوم مقررول..."
@@ -5093,8 +5278,9 @@ msgid ""
"does not exist."
msgstr ""
-msgid "Profile URL"
-msgstr "د پېزندنې څېره ارل"
+#, fuzzy
+msgid "View web profile"
+msgstr "ملګری ليکه نه لرې دی"
#. *< type
#. *< ui_requirement
@@ -5328,19 +5514,15 @@ msgstr ""
msgid "Do you want to delete this buddy from your address book as well?"
msgstr ""
-#. only notify the user about problems adding to the friends list
-#. * maybe we should do something else for other lists, but it probably
-#. * won't cause too many problems if we just ignore it
-#, c-format
-msgid "Unable to add \"%s\"."
-msgstr ""
-
msgid "The username specified is invalid."
msgstr ""
msgid "This Hotmail account may not be active."
msgstr ""
+msgid "Profile URL"
+msgstr "د پېزندنې څېره ارل"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5355,17 +5537,13 @@ msgstr ""
msgid "MSN Protocol Plugin"
msgstr "د أېم پروتوکول نښلولی"
-#, fuzzy
-msgid "Missing Cipher"
-msgstr "شفر"
-
-msgid "The RC4 cipher could not be found"
+#, c-format
+msgid "No such user: %s"
msgstr ""
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
-msgstr ""
+#, fuzzy
+msgid "User lookup"
+msgstr "کاروونکی کوټی"
msgid "Reading challenge"
msgstr ""
@@ -5377,11 +5555,21 @@ msgstr ""
msgid "Logging in"
msgstr "یاداشت لیک"
-#, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] ""
-msgstr[1] ""
+#, fuzzy
+msgid "MySpaceIM - No Username Set"
+msgstr "بې نوم"
+
+msgid "You appear to have no MySpace username."
+msgstr ""
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr ""
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr ""
+"د خادم سره رابطه قطع شوه:\n"
+"%s"
#. Can't write _()'d strings in array initializers. Workaround.
#, fuzzy
@@ -5404,14 +5592,22 @@ msgid "MySpace"
msgstr ""
#, fuzzy
-msgid "MySpaceIM - No Username Set"
-msgstr "بې نوم"
+msgid "IM Friends"
+msgstr "فوری زیری کړکی"
-msgid "You appear to have no MySpace username."
-msgstr ""
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+msgstr[1] ""
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
-msgstr ""
+#, fuzzy
+msgid "Add contacts from server"
+msgstr "د خادم سره رابطه کول ناکامه شوه."
#. The session is now set up, ready to be connected. This emits the
#. * signedOn signal, so clients can now do anything with msimprpl, and
@@ -5434,6 +5630,22 @@ msgstr ""
msgid "MySpaceIM Error"
msgstr ""
+msgid "Invalid input condition"
+msgstr ""
+
+msgid "Read buffer full (2)"
+msgstr ""
+
+#, fuzzy
+msgid "Unparseable message"
+msgstr "نه وېللي پېغامونه"
+
+#, fuzzy, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr ""
+"د بیوس خادم سره رابطه نه و شوه:\n"
+"%s"
+
#, fuzzy
msgid "Failed to add buddy"
msgstr "کاروونکی نه شه شامل"
@@ -5444,14 +5656,6 @@ msgstr ""
msgid "persist command failed"
msgstr ""
-#, c-format
-msgid "No such user: %s"
-msgstr ""
-
-#, fuzzy
-msgid "User lookup"
-msgstr "کاروونکی کوټی"
-
msgid "Failed to remove buddy"
msgstr ""
@@ -5461,39 +5665,17 @@ msgstr ""
msgid "blocklist command failed"
msgstr ""
-msgid "Invalid input condition"
-msgstr ""
-
-msgid "Read buffer full (2)"
-msgstr ""
-
#, fuzzy
-msgid "Unparseable message"
-msgstr "نه وېللي پېغامونه"
+msgid "Missing Cipher"
+msgstr "شفر"
-#, fuzzy, c-format
-msgid "Couldn't connect to host: %s (%d)"
+msgid "The RC4 cipher could not be found"
msgstr ""
-"د بیوس خادم سره رابطه نه و شوه:\n"
-"%s"
-#, fuzzy
-msgid "IM Friends"
-msgstr "فوری زیری کړکی"
-
-#, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-msgstr[1] ""
-
-#, fuzzy
-msgid "Add contacts from server"
-msgstr "د خادم سره رابطه کول ناکامه شوه."
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
msgid "Add friends from MySpace.com"
msgstr ""
@@ -5538,9 +5720,6 @@ msgstr ""
msgid "User"
msgstr ""
-msgid "Profile"
-msgstr "د پېزندنې څېره"
-
#, fuzzy
msgid "Headline"
msgstr "انکار"
@@ -5555,17 +5734,6 @@ msgstr ""
msgid "Client Version"
msgstr ""
-#. Protocol won't log in now without a username set.. Disconnect
-#, fuzzy
-msgid "No username set"
-msgstr "بې نوم"
-
-msgid "MySpaceIM - Please Set a Username"
-msgstr ""
-
-msgid "Please enter a username to check its availability:"
-msgstr ""
-
msgid "MySpaceIM - Username Available"
msgstr ""
@@ -5575,6 +5743,9 @@ msgstr ""
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr ""
+msgid "MySpaceIM - Please Set a Username"
+msgstr ""
+
#, fuzzy
msgid "This username is unavailable."
msgstr "په %s کی ګپ شپ نشی کولی."
@@ -5582,6 +5753,14 @@ msgstr "په %s کی ګپ شپ نشی کولی."
msgid "Please try another username:"
msgstr ""
+#. Protocol won't log in now without a username set.. Disconnect
+#, fuzzy
+msgid "No username set"
+msgstr "بې نوم"
+
+msgid "Please enter a username to check its availability:"
+msgstr ""
+
#. TODO: icons for each zap
#. Lots of comments for translators:
#. Zap means "to strike suddenly and forcefully as if with a
@@ -5956,7 +6135,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr ""
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr ""
@@ -6214,23 +6392,18 @@ msgstr ""
msgid "Screen Sharing"
msgstr ""
-#, c-format
msgid "Free For Chat"
msgstr ""
-#, c-format
msgid "Not Available"
msgstr ""
-#, c-format
msgid "Occupied"
msgstr ""
-#, c-format
msgid "Web Aware"
msgstr "ویبپوه"
-#, c-format
msgid "Invisible"
msgstr "ناڅرګند"
@@ -6277,7 +6450,7 @@ msgid ""
"only letters, numbers and spaces, or contain only numbers."
msgstr ""
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
#, fuzzy
msgid "Invalid username."
@@ -6294,7 +6467,7 @@ msgstr ""
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr ""
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6327,9 +6500,7 @@ msgid "_OK"
msgstr "ټیک"
#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
+msgid "You may be disconnected shortly. If so, check %s for updates."
msgstr ""
#, fuzzy
@@ -6458,7 +6629,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] ""
msgstr[1] ""
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr ""
@@ -6480,6 +6651,9 @@ msgstr "په ليکه د"
msgid "Member Since"
msgstr ""
+msgid "Profile"
+msgstr "د پېزندنې څېره"
+
msgid "Your AIM connection may be lost."
msgstr "ښایی چه د تا د أېم رابطه به ورانه شي."
@@ -6726,6 +6900,7 @@ msgstr "رابطه"
msgid "Get AIM Info"
msgstr "د أېم معلومات اخله"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "د ملګری تبصره شی بدلون"
@@ -6831,7 +7006,6 @@ msgstr ""
msgid "Attempting to connect to %s:%hu."
msgstr ""
-#, c-format
msgid "Attempting to connect via proxy server."
msgstr ""
@@ -6924,7 +7098,7 @@ msgstr "بل"
msgid "Visible"
msgstr "ناڅرګند"
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
#, fuzzy
@@ -7013,15 +7187,47 @@ msgstr ""
msgid "Could not change buddy information."
msgstr "په مهرباني سره د ملګری معلومات را که."
+msgid "Mobile"
+msgstr "ګرځنده"
+
+msgid "Note"
+msgstr "یادونه"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "ملګری تمثال"
+
+msgid "Change his/her memo as you like"
+msgstr ""
+
+#, fuzzy
+msgid "_Modify"
+msgstr "بدلول"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "بدلول"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "خادم:"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
#, c-format
-msgid "%d needs Q&A"
+msgid "%u requires verification"
msgstr ""
#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "ملګری زيات که"
+msgid "Add buddy question"
+msgstr "ملګری فهرست ته شامل کړه؟"
-msgid "Input answer here"
+msgid "Enter answer here"
msgstr ""
msgid "Send"
@@ -7034,18 +7240,18 @@ msgstr "باطل نوم"
msgid "Authorization denied message:"
msgstr ""
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr ""
#, fuzzy, c-format
-msgid "%d needs authentication"
+msgid "%u needs authorization"
msgstr "د یاهو کره کول ناکام شول"
#, fuzzy
msgid "Add buddy authorize"
msgstr "ملګری فهرست ته شامل کړه؟"
-msgid "Input request here"
+msgid "Enter request here"
msgstr ""
msgid "Would you be my friend?"
@@ -7067,7 +7273,7 @@ msgid "Failed sending authorize"
msgstr ""
#, fuzzy, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr "کاروونکی نه شه شامل"
#, fuzzy, c-format
@@ -7109,6 +7315,9 @@ msgstr "په مهرباني سره د ملګری معلومات را که."
msgid "You can only search for permanent Qun\n"
msgstr ""
+msgid "(Invalid UTF-8 string)"
+msgstr ""
+
#, fuzzy
msgid "Not member"
msgstr "ز غړی نه یم"
@@ -7150,15 +7359,18 @@ msgstr ""
msgid "Join QQ Qun"
msgstr "په ګپ شپ نښلول"
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
+msgid "Input request here"
msgstr ""
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "ز غړی یم"
+
msgid "Successfully joined Qun"
msgstr ""
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
msgid "QQ Qun Operation"
@@ -7168,7 +7380,7 @@ msgstr "د کوکو کون عمل"
msgid "Failed:"
msgstr "ناکام شه"
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
#, fuzzy
@@ -7180,11 +7392,11 @@ msgid ""
"this operation will eventually remove this Qun."
msgstr ""
-msgid "Sorry, you are not our style ..."
+msgid "Sorry, you are not our style"
msgstr ""
#, fuzzy
-msgid "Successfully changed Qun member"
+msgid "Successfully changed Qun members"
msgstr "ز غړی یم"
#, fuzzy
@@ -7195,35 +7407,35 @@ msgid "You have successfully created a Qun"
msgstr ""
#, fuzzy
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr "زما معلومات کی بدلون"
msgid "Setup"
msgstr ""
#, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr ""
#, c-format
-msgid "%d request to join Qun %d"
+msgid "%u request to join Qun %u"
msgstr ""
#, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr ""
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr "ملګری خوځول"
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "ملګری خوځول"
#, c-format
msgid "Unknown-%d"
@@ -7337,6 +7549,12 @@ msgstr ""
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr ""
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr ""
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7344,7 +7562,7 @@ msgid "<i>Feel free to join us!</i> :)"
msgstr ""
#, fuzzy, c-format
-msgid "About OpenQ r%s"
+msgid "About OpenQ %s"
msgstr "ګېم باره کې"
#, fuzzy
@@ -7365,6 +7583,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "ګېم باره کې"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "کور پته"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7396,7 +7618,6 @@ msgstr ""
msgid "QQ2008"
msgstr ""
-#. #endif
#, fuzzy
msgid "Connect by TCP"
msgstr "رابطه قطع شوه"
@@ -7409,6 +7630,9 @@ msgstr "د خادم معلومات"
msgid "Show server news"
msgstr "خادم پته"
+msgid "Show chat room when msg comes"
+msgstr ""
+
msgid "Keep alive interval (seconds)"
msgstr ""
@@ -7417,12 +7641,9 @@ msgid "Update interval (seconds)"
msgstr "کاروونکی معلومات"
#, fuzzy
-msgid "Can not decrypt server reply"
+msgid "Cannot decrypt server reply"
msgstr "د رابطه خادم"
-msgid "Can not decrypt get server reply"
-msgstr ""
-
#, c-format
msgid "Failed requesting token, 0x%02X"
msgstr ""
@@ -7443,20 +7664,23 @@ msgid "Activation required"
msgstr "کره کول ناکام شو"
#, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr ""
-msgid "Keep alive error"
-msgstr ""
+#, fuzzy
+msgid "Could not decrypt server reply"
+msgstr "د رابطه خادم"
-msgid "Requesting captcha ..."
-msgstr ""
+#, fuzzy
+msgid "Requesting captcha"
+msgstr "پاتی دی"
-msgid "Checking code of captcha ..."
+msgid "Checking captcha"
msgstr ""
-msgid "Failed captcha verify"
-msgstr ""
+#, fuzzy
+msgid "Failed captcha verification"
+msgstr "د یاهو کره کول ناکام شول"
#, fuzzy
msgid "Captcha Image"
@@ -7466,37 +7690,28 @@ msgstr "انځور و ساته"
msgid "Enter code"
msgstr "مخ"
-msgid "QQ Captcha Verifing"
+msgid "QQ Captcha Verification"
msgstr ""
msgid "Enter the text from the image"
msgstr ""
#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
+msgid "Unknown reply when checking password (0x%02X)"
msgstr ""
#, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
msgstr ""
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "رابطه نه و شوه."
msgid "Socket error"
msgstr ""
-#, fuzzy, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr ""
-"د خادم سره رابطه قطع شوه:\n"
-"%s"
-
msgid "Unable to read from socket"
msgstr ""
@@ -7507,11 +7722,12 @@ msgid "Connection lost"
msgstr "رابطه قطع شوه"
#, fuzzy
-msgid "Get server ..."
+msgid "Getting server"
msgstr "کاروونکی معلومات ورکه..."
-msgid "Request token"
-msgstr ""
+#, fuzzy
+msgid "Requesting token"
+msgstr "پاتی دی"
msgid "Couldn't resolve host"
msgstr ""
@@ -7520,17 +7736,13 @@ msgid "Invalid server or port"
msgstr ""
#, fuzzy
-msgid "Connecting server ..."
+msgid "Connecting to server"
msgstr "د رابطه خادم"
#, fuzzy
msgid "QQ Error"
msgstr "د کوکو هویت خطا"
-#, fuzzy
-msgid "Failed to send IM."
-msgstr "ګپ شپ نښلول ناکام شو"
-
#, fuzzy, c-format
msgid ""
"Server News:\n"
@@ -7540,6 +7752,10 @@ msgid ""
msgstr "خادم پته"
#, fuzzy, c-format
+msgid "%s:%s"
+msgstr "‫%s (%s)"
+
+#, fuzzy, c-format
msgid "From %s:"
msgstr "له"
@@ -7549,30 +7765,27 @@ msgid ""
"%s"
msgstr ""
-msgid "Unknow SERVER CMD"
+msgid "Unknown SERVER CMD"
msgstr ""
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
#, fuzzy
msgid "QQ Qun Command"
msgstr "د ملګری تبصره:"
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr ""
-
-msgid "Can not decrypt login reply"
-msgstr ""
+#, fuzzy
+msgid "Could not decrypt login reply"
+msgstr "د رابطه خادم"
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr ""
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr ""
#, c-format
@@ -8352,9 +8565,6 @@ msgstr "اداره"
msgid "Unit"
msgstr ""
-msgid "Note"
-msgstr "یادونه"
-
msgid "Join Chat"
msgstr "په ګپ شپ نښلول"
@@ -8961,6 +9171,10 @@ msgstr ""
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr ""
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "د خادم معلومات"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -8995,189 +9209,10 @@ msgid "Auth Domain"
msgstr ""
#, c-format
-msgid "Looking up %s"
-msgstr ""
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr ""
-
-#, c-format
-msgid "Signon: %s"
-msgstr ""
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "په دوسیه %s باندی لیک نه و شول."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "د دوسیه %s ویل نه و شول."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr ""
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr ""
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr ""
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr ""
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "په %s کی ګپ شپ نشی کولی."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr ""
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr ""
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr ""
-
-#, c-format
-msgid "Failure."
-msgstr "ناکامي."
-
-#, c-format
-msgid "Too many matches."
-msgstr ""
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr ""
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr ""
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr ""
-
-#, c-format
-msgid "Keyword ignored."
-msgstr ""
-
-#, c-format
-msgid "No keywords."
-msgstr ""
-
-#, c-format
-msgid "User has no directory information."
-msgstr "د کاروونکی په ياداشت کتابچه کی معلومات نشته."
-
-#, c-format
-msgid "Country not supported."
-msgstr ""
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr ""
-
-#, c-format
-msgid "Incorrect username or password."
-msgstr ""
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr ""
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr ""
-
-#, c-format
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
-msgstr ""
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr ""
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "نااشنا خطا %d و شوه. معلومات: %s"
-
-msgid "Invalid Groupname"
-msgstr ""
-
-msgid "Connection Closed"
-msgstr ""
-
-msgid "Waiting for reply..."
-msgstr ""
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr ""
-
-msgid "Password Change Successful"
-msgstr ""
-
-msgid "_Group:"
-msgstr "ډاله:"
-
-msgid "Get Dir Info"
-msgstr "د ياداشت کتابچه څخه معلومات اخله"
-
-msgid "Set Dir Info"
-msgstr "په ياداشت کتابچه ته معلومات ورکه"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr ""
-
-msgid "File transfer failed; other side probably canceled."
-msgstr ""
-
-msgid "Could not connect for transfer."
-msgstr ""
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr ""
-
-#, fuzzy
-msgid "Save As..."
-msgstr "تمثال و ساته..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%s requests you to send them a file"
+msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr ""
-
-#, c-format
-msgid "%s has sent you a webcam invite, which is not yet supported."
+msgid "Your SMS was not delivered"
msgstr ""
msgid "Your Yahoo! message did not get sent."
@@ -9437,13 +9472,8 @@ msgstr ""
msgid "Last Update"
msgstr ""
-#, c-format
-msgid "User information for %s unavailable"
-msgstr "د %s د کاروونکی معلومات نشته"
-
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr ""
msgid ""
@@ -9750,9 +9780,6 @@ msgstr ""
msgid "Extended away"
msgstr "اوژد ليرې"
-msgid "Mobile"
-msgstr "ګرځنده"
-
msgid "Listening to music"
msgstr ""
@@ -9794,16 +9821,6 @@ msgstr "‫+++ %s اوس بې کارنه دی"
msgid "%x %X"
msgstr "‫%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "ویل شی خطا %s"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-
msgid "Calculating..."
msgstr "شمېره و..."
@@ -9877,6 +9894,12 @@ msgid "Unable to connect to %s: %s"
msgstr "د %s سره رابطه نه و شوه: %s"
#, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+
+#, c-format
msgid " - %s"
msgstr ""
@@ -9909,6 +9932,16 @@ msgstr "رابطه ناکامه شوه."
msgid "Address already in use."
msgstr ""
+#, c-format
+msgid "Error Reading %s"
+msgstr "ویل شی خطا %s"
+
+#, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+
msgid "Internet Messenger"
msgstr "د انترنت زری"
@@ -9957,10 +9990,8 @@ msgstr "د نوی برېشناليک خبرتيا"
msgid "Use this buddy _icon for this account:"
msgstr "د دی شمېرل لپاره دغه ملګری تمثال په کار که:"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "د %s ټاکل"
+msgid "_Advanced"
+msgstr "مترقي"
msgid "Use GNOME Proxy Settings"
msgstr ""
@@ -9995,9 +10026,6 @@ msgstr ""
msgid "you can see the butterflies mating"
msgstr ""
-msgid "Proxy Options"
-msgstr "د وکیل ټاکل"
-
msgid "Proxy _type:"
msgstr "د وکیل نمونه:"
@@ -10026,8 +10054,9 @@ msgstr "اساسي"
msgid "Create _this new account on the server"
msgstr ""
-msgid "_Advanced"
-msgstr "مترقي"
+#, fuzzy
+msgid "_Proxy"
+msgstr "وکیل"
msgid "Enabled"
msgstr ""
@@ -10092,6 +10121,16 @@ msgid "I_M"
msgstr "فوري زيری"
#, fuzzy
+msgid "_Audio Call"
+msgstr "ګپ شپ زياتول"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+msgid "_Video Call"
+msgstr ""
+
+#, fuzzy
msgid "_Send File..."
msgstr "دوسیه و استوه..."
@@ -10242,6 +10281,10 @@ msgstr "ملګری اونيسه"
msgid "/Tools/_Certificates"
msgstr "رجحانات"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "پرده"
+
msgid "/Tools/Plu_gins"
msgstr "نښلولي"
@@ -10251,10 +10294,6 @@ msgstr "رجحانات"
msgid "/Tools/Pr_ivacy"
msgstr "پرده"
-#, fuzzy
-msgid "/Tools/Smile_y"
-msgstr "پرده"
-
msgid "/Tools/_File Transfers"
msgstr "دوسیه بدلونه..."
@@ -10370,8 +10409,8 @@ msgstr "زما په خواښه"
msgid "By status"
msgstr "په موقعيت"
-msgid "By log size"
-msgstr "د یاداشت لیک په لویوالی"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10389,6 +10428,9 @@ msgstr "رابطه"
msgid "Re-enable"
msgstr "بيا و شمېره"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr ""
@@ -10476,6 +10518,9 @@ msgstr ""
msgid "A_lias:"
msgstr "بل نوم:"
+msgid "_Group:"
+msgstr "ډاله:"
+
msgid "Auto_join when account becomes online."
msgstr ""
@@ -10530,12 +10575,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr "ماګری ګپ شپ کوټه ته بلل"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-
msgid "_Buddy:"
msgstr "ملګری:"
@@ -10611,6 +10650,22 @@ msgstr "و ساته لکه..."
msgid "/Conversation/Clea_r Scrollback"
msgstr ""
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "نور"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "نور"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "نور"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "د یاداشت لیک لیدل"
+
msgid "/Conversation/Se_nd File..."
msgstr "دوسیه استول..."
@@ -10685,6 +10740,18 @@ msgstr "مرکه"
msgid "/Conversation/View Log"
msgstr ""
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "نور"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "د یاداشت لیک لیدل"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "نور"
+
msgid "/Conversation/Send File..."
msgstr "دوسیه استول..."
@@ -10868,6 +10935,9 @@ msgstr "حمل"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr ""
@@ -11009,6 +11079,10 @@ msgstr ""
msgid "Ubuntu Georgian Translators"
msgstr ""
+#, fuzzy
+msgid "Khmer"
+msgstr "بل"
+
msgid "Kannada"
msgstr ""
@@ -11031,6 +11105,9 @@ msgstr ""
msgid "Macedonian"
msgstr ""
+msgid "Mongolian"
+msgstr ""
+
msgid "Bokmål Norwegian"
msgstr ""
@@ -11137,7 +11214,24 @@ msgid ""
msgstr ""
#, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr ""
+
+#, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr ""
msgid "Current Developers"
@@ -11446,15 +11540,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr "د نوی برېشناليک خبرتيا"
-msgid "_Copy Email Address"
-msgstr ""
-
-msgid "_Open Link in Browser"
-msgstr ""
-
-msgid "_Copy Link Location"
-msgstr "تړنه ځای نقل کول"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -11703,6 +11788,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -11720,6 +11806,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -11751,11 +11838,27 @@ msgstr ""
msgid "Pidgin"
msgstr "خنځیر"
-msgid "Open All Messages"
-msgstr "ټول پیغامونه ښکاره که"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "تا ته برېښناليک راغلی دي!"
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "شمېره و..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, fuzzy, c-format
msgid "%s has %d new message."
@@ -11784,6 +11887,27 @@ msgid ""
"The 'Manual' browser command has been chosen, but no command has been set."
msgstr ""
+msgid "Open All Messages"
+msgstr "ټول پیغامونه ښکاره که"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "تا ته برېښناليک راغلی دي!"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "ملګری اونيسه"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "تا ته برېښناليک راغلی دي!"
+
+#, fuzzy
+msgid "No message"
+msgstr "پیغام"
+
msgid "The following plugins will be unloaded."
msgstr ""
@@ -11833,6 +11957,10 @@ msgstr "نښلولي تفصيل"
msgid "Select a file"
msgstr ""
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "ملګری نيول شې بدلون"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "څوک نیسی"
@@ -11904,6 +12032,50 @@ msgstr "بيا بيا"
msgid "Pounce Target"
msgstr "د نیولو کس"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "بې فکره خاکه جوړول"
+
+#, c-format
+msgid "Paused while typing"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "را ننوځي"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "‫%s د ليرېتوب څخه ګرځيدلو (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "د ليرېتوب څخه ګرځيدل"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "‫%s راننوتلو."
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "ووځي"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "بې کار شي"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "چه کله لیرې وی"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "پیغام و استوه"
+
+#, c-format
+msgid "Unknown.... Please report this!"
+msgstr ""
+
msgid "Smiley theme failed to unpack."
msgstr ""
@@ -11925,6 +12097,12 @@ msgstr ""
msgid "Cl_ose conversations with the Escape key"
msgstr "د %s سره مرکه"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "ملګری فهرست"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "د سیستم مجمی تمثال"
@@ -12037,9 +12215,6 @@ msgstr ""
msgid "Cannot start browser configuration program."
msgstr ""
-msgid "ST_UN server:"
-msgstr "د سټن خادم:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">مثال ‫: stunserver.org</span>"
@@ -12064,6 +12239,10 @@ msgstr ""
msgid "_End port:"
msgstr ""
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
#, fuzzy
msgid "Proxy Server &amp; Browser"
msgstr "وکیل خادم"
@@ -12092,6 +12271,10 @@ msgstr "وکیل خادم"
msgid "No proxy"
msgstr "بې وکیل"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "کاروونکی"
@@ -12251,12 +12434,12 @@ msgstr "چه کله لیرې او بې کار دواړه وی"
msgid "Auto-away"
msgstr "پخپله ليرې تلل"
-msgid "Change status when _idle"
-msgstr "موقعیت بدلوه چه کله بې کار کېږی"
-
msgid "_Minutes before becoming idle:"
msgstr ""
+msgid "Change status when _idle"
+msgstr "موقعیت بدلوه چه کله بې کار کېږی"
+
msgid "Change _status to:"
msgstr ""
@@ -12405,6 +12588,12 @@ msgstr "و ساته او په کار که"
msgid "Status for %s"
msgstr "د %s موقعیت"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
#, fuzzy
msgid "Custom Smiley"
msgstr "انځور وراچول"
@@ -12415,12 +12604,12 @@ msgstr ""
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
-msgid "Duplicate Shortcut"
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
msgstr ""
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
+msgid "Duplicate Shortcut"
msgstr ""
msgid "Please select an image for the smiley."
@@ -12435,17 +12624,22 @@ msgid "Add Smiley"
msgstr "موسکا!"
#, fuzzy
-msgid "Smiley _Image"
+msgid "_Image:"
msgstr "انځور و ساته"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr ""
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "ملاتړلی"
#, fuzzy
msgid "Smiley"
msgstr "موسکا!"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "ملاتړلی"
+
msgid "Custom Smiley Manager"
msgstr ""
@@ -12561,6 +12755,16 @@ msgid ""
"Failed to load image '%s': reason not known, probably a corrupt image file"
msgstr ""
+#, fuzzy
+msgid "_Open Link"
+msgstr "تړنه خلاصول په:"
+
+msgid "_Copy Link Location"
+msgstr "تړنه ځای نقل کول"
+
+msgid "_Copy Email Address"
+msgstr ""
+
msgid "Save File"
msgstr "دوسیه ساتل"
@@ -13496,9 +13700,6 @@ msgstr ""
msgid "Only when docked"
msgstr ""
-msgid "_Flash window when chat messages are received"
-msgstr ""
-
#, fuzzy
msgid "Windows Pidgin Options"
msgstr "ننوتو ټاکل"
@@ -13547,6 +13748,73 @@ msgstr ""
msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr ""
+#, fuzzy
+#~ msgid "Invite message"
+#~ msgstr "استولي پیغامونه"
+
+#, fuzzy
+#~ msgid "Add buddy Q&A"
+#~ msgstr "ملګری زيات که"
+
+#, fuzzy
+#~ msgid ""
+#~ "Lost connection with server:\n"
+#~ "%d, %s"
+#~ msgstr ""
+#~ "د خادم سره رابطه قطع شوه:\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Failed to send IM."
+#~ msgstr "ګپ شپ نښلول ناکام شو"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "په دوسیه %s باندی لیک نه و شول."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "د دوسیه %s ویل نه و شول."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "په %s کی ګپ شپ نشی کولی."
+
+#~ msgid "Failure."
+#~ msgstr "ناکامي."
+
+#~ msgid "User has no directory information."
+#~ msgstr "د کاروونکی په ياداشت کتابچه کی معلومات نشته."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "نااشنا خطا %d و شوه. معلومات: %s"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "د ياداشت کتابچه څخه معلومات اخله"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "په ياداشت کتابچه ته معلومات ورکه"
+
+#, fuzzy
+#~ msgid "Save As..."
+#~ msgstr "تمثال و ساته..."
+
+#~ msgid "User information for %s unavailable"
+#~ msgstr "د %s د کاروونکی معلومات نشته"
+
+#~ msgid "%s Options"
+#~ msgstr "د %s ټاکل"
+
+#~ msgid "Proxy Options"
+#~ msgstr "د وکیل ټاکل"
+
+#~ msgid "By log size"
+#~ msgstr "د یاداشت لیک په لویوالی"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "د سټن خادم:"
+
+#, fuzzy
+#~ msgid "Smiley _Image"
+#~ msgstr "انځور و ساته"
+
#~ msgid "Primary Information"
#~ msgstr "لومړنی معلومات"
@@ -13584,13 +13852,6 @@ msgstr ""
#~ msgid "Remove from Qun"
#~ msgstr "ډاله خوځول"
-#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr "‫%s (%s)"
-
#~ msgid "System Message"
#~ msgstr "سیستم پیغام"
diff --git a/po/pt.po b/po/pt.po
index 6508b3d50a..da2ea8c7e0 100644
--- a/po/pt.po
+++ b/po/pt.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
+"POT-Creation-Date: 2009-04-30 10:39-0400\n"
"PO-Revision-Date: 2005-03-14 17:23+0000\n"
"Last-Translator: Duarte Henriques <duarte.henriques@gmail.com>\n"
"Language-Team: \n"
@@ -31,7 +31,7 @@ msgid ""
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -646,21 +646,6 @@ msgid "Send To"
msgstr "_Enviar Para"
#, fuzzy
-msgid "Invite message"
-msgstr "Inserir na mensagem"
-
-msgid "Invite"
-msgstr "Convidar"
-
-#, fuzzy
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Por favor introduza o nome do utilizador que gostaria de convidar, e uma "
-"mensagem de convite opcional."
-
-#, fuzzy
msgid "Conversation"
msgstr "Conversações"
@@ -928,6 +913,43 @@ msgid "System Log"
msgstr "Registo do Sistema"
#, fuzzy
+msgid "Calling ... "
+msgstr "Calculando..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+#, fuzzy
+msgid "Accept"
+msgstr "Conta"
+
+#, fuzzy
+msgid "Reject"
+msgstr "Redefinir"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "Saiu do canal%s%s"
+
+msgid "call: Make an audio call."
+msgstr ""
+
+#, fuzzy
msgid "Emails"
msgstr "Email"
@@ -964,6 +986,9 @@ msgstr "Ligar"
msgid "IM"
msgstr "MI"
+msgid "Invite"
+msgstr "Convidar"
+
#, fuzzy
msgid "(none)"
msgstr "(sem nome)"
@@ -1185,7 +1210,6 @@ msgstr "%s está ausente. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s enviou-lhe uma mensagem. (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "Acontecimento de notificação desconhecido. Por favor reporte isto!"
@@ -1242,7 +1266,6 @@ msgstr "_Minutos antes de mudar de estado:"
msgid "Change status to"
msgstr "Mudar _estado para:"
-#. Conversations
msgid "Conversations"
msgstr "Conversações"
@@ -1598,7 +1621,6 @@ msgstr ""
"Quando uma nova conversa é aberta este plugin irá inserir a última conversa "
"na conversa actual."
-#, c-format
msgid "Online"
msgstr "Ligado"
@@ -1647,6 +1669,28 @@ msgstr ""
msgid "Lastlog plugin."
msgstr ""
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "contas"
@@ -1745,15 +1789,6 @@ msgstr "Aceitar convite para chat?"
msgid "SSL Certificate Verification"
msgstr ""
-#. Number of actions
-#, fuzzy
-msgid "Accept"
-msgstr "Conta"
-
-#, fuzzy
-msgid "Reject"
-msgstr "Redefinir"
-
msgid "_View Certificate..."
msgstr ""
@@ -1892,6 +1927,18 @@ msgstr "%s saiu da sala."
msgid "%s left the room (%s)."
msgstr "%s saiu da sala (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Convidar para Conferência"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Por favor introduza o nome do utilizador que gostaria de convidar, e uma "
+"mensagem de convite opcional."
+
#, fuzzy, c-format
msgid "Failed to get connection: %s"
msgstr "Impossível criar ligação"
@@ -2030,7 +2077,6 @@ msgstr "Iniciando a transferência de %s vindo de %s"
msgid "Transfer of file %s complete"
msgstr "Transferência do ficheiro %s completa"
-#, c-format
msgid "File transfer complete"
msgstr "Transferência de ficheiro completa"
@@ -2038,7 +2084,6 @@ msgstr "Transferência de ficheiro completa"
msgid "You canceled the transfer of %s"
msgstr "Cancelou a transferência de %s"
-#, c-format
msgid "File transfer cancelled"
msgstr "Transferência de ficheiro cancelada"
@@ -2229,7 +2274,6 @@ msgstr "(%s) %s <RESPOSTA-AUTOMATICA>: %s\n"
msgid "You are using %s, but this plugin requires %s."
msgstr ""
-#, c-format
msgid "This plugin has not defined an ID."
msgstr ""
@@ -2721,6 +2765,32 @@ msgstr ""
msgid "Do not ask. Always save in pounce."
msgstr ""
+#, fuzzy
+msgid "One Time Password"
+msgstr "Introduza a Senha"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2927,7 +2997,6 @@ msgid ""
msgstr ""
"Impossível estabelecer ligação com o servidor mDNS local. Está a correr?"
-#. Creating the options for the protocol
msgid "First name"
msgstr "Primeiro nome"
@@ -2962,6 +3031,11 @@ msgstr "Plugin do Protocolo Bonjour"
msgid "Purple Person"
msgstr "Nova Pessoa"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "Localidade"
+
msgid "Bonjour"
msgstr ""
@@ -3123,13 +3197,13 @@ msgstr "Escolher um chat para o contacto: %s"
msgid "Add to chat..."
msgstr "Adicionar ao chat..."
+#. Global
msgid "Available"
msgstr "Disponível"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "Ausente"
@@ -3411,7 +3485,8 @@ msgstr "Mensagem desconhecida"
#, fuzzy
msgid "The IRC server received a message it did not understand."
-msgstr "O Pidgin enviou uma mensagem que não foi entendida pelo servidor de IRC."
+msgstr ""
+"O Pidgin enviou uma mensagem que não foi entendida pelo servidor de IRC."
#, c-format
msgid "Users on %s: %s"
@@ -3476,6 +3551,17 @@ msgstr ""
"O nome de utilizador que escolheu foi rejeitado pelo servidor. "
"Provavelmente porque contém caracters inválidos."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "Este nome de chat já está a ser utilizado"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Nome remoto"
+
msgid "Cannot change nick"
msgstr "Impossível mudar o nome"
@@ -3757,6 +3843,39 @@ msgstr "Pedido de acesso do servidor inválido"
msgid "SASL error"
msgstr "Erro SASL"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "Nenhum motivo foi dado."
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Versão Não Suportada"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"Impossível estabelecer ligação com o servidor mDNS local. Está a correr?"
+
+#, fuzzy, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"Impossível estabelecer ligação com o servidor mDNS local. Está a correr?"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "Impossível criar ligação"
+
+msgid "Unable to create socket"
+msgstr "Impossível criar socket"
+
+msgid "Write error"
+msgstr "Erro ao enviar"
+
msgid "Full Name"
msgstr "Nome completo"
@@ -3825,6 +3944,10 @@ msgstr "Cidade"
msgid "Operating System"
msgstr ""
+#, fuzzy
+msgid "Local Time"
+msgstr "Ficheiro Local:"
+
msgid "Last Activity"
msgstr ""
@@ -4061,7 +4184,6 @@ msgstr "Disponível para chat"
msgid "Extended Away"
msgstr "Ausente (estendido)"
-#, c-format
msgid "Do Not Disturb"
msgstr "Não perturbar"
@@ -4189,9 +4311,6 @@ msgstr "Encontrar Salas"
msgid "You require encryption, but it is not available on this server."
msgstr ""
-msgid "Write error"
-msgstr "Erro ao enviar"
-
#, fuzzy
msgid "Ping timeout"
msgstr "Texto simples"
@@ -4199,15 +4318,11 @@ msgstr "Texto simples"
msgid "Read Error"
msgstr "Erro de Leitura"
-#, fuzzy, c-format
+#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"Impossível estabelecer ligação com o servidor mDNS local. Está a correr?"
-
-msgid "Unable to create socket"
-msgstr "Impossível criar socket"
#, fuzzy
msgid "Invalid XMPP ID"
@@ -4216,6 +4331,10 @@ msgstr "Identificador Inválido"
msgid "Invalid XMPP ID. Domain must be set."
msgstr ""
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Impossível ligar ao servidor."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "Registo de %s@%s efectuado com sucesso"
@@ -4311,9 +4430,18 @@ msgstr "Autenticando"
msgid "Re-initializing Stream"
msgstr "Reiniciando Stream"
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr "Não autorizado"
+msgid "Mood"
+msgstr "Disposição"
+
+msgid "Now Listening"
+msgstr ""
+
msgid "Both"
msgstr "Ambos"
@@ -4335,12 +4463,6 @@ msgstr "Nenhuma"
msgid "Subscription"
msgstr "Subscrição"
-msgid "Mood"
-msgstr "Disposição"
-
-msgid "Now Listening"
-msgstr ""
-
#, fuzzy
msgid "Mood Text"
msgstr "Disposição"
@@ -4584,18 +4706,24 @@ msgstr "Incapaz de expulsar utilizador %s"
msgid "Unable to ping user %s"
msgstr "Incapaz de banir utilizador %s"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
+msgstr "Impossível tocar o som porque o ficheiro escolhido (%s) não existe."
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
+msgstr "Impossível tocar o som porque o ficheiro escolhido (%s) não existe."
#, fuzzy, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "Impossível tocar o som porque o ficheiro escolhido (%s) não existe."
+#, c-format
+msgid "Buzzing %s..."
+msgstr ""
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
#, fuzzy
@@ -4606,9 +4734,41 @@ msgstr "Buzz!!"
msgid "%s has buzzed you!"
msgstr "%s ligou-se."
-#, c-format
-msgid "Buzzing %s..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "Impossível enviar mensagem para %s."
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
msgstr ""
+"Incapaz de enviar ficheiro a %s, o utilizador não suporta transferências de "
+"ficheiros"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr ""
+"Incapaz de enviar ficheiro a %s, o utilizador não suporta transferências de "
+"ficheiros"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "Erro ao Registar"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr ""
+"Por favor introduza o nome ou nome local da pessoa cuja informação gostaria "
+"de ver."
+
+#, fuzzy
+msgid "Select a Resource"
+msgstr "Seleccione um ficheiro"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "Iniciar _Chat"
msgid "config: Configure a chat room."
msgstr "config: Configurar uma sala de chat."
@@ -4773,6 +4933,21 @@ msgstr "Erro ao entrar no chat %s"
msgid "Error in chat %s"
msgstr "Erro no chat %s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "Ocorreu um erro ao abrir o ficheiro."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "Transferência de Ficheiro Falhou"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Impossível guardar imagem: %s\n"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4805,10 +4980,6 @@ msgstr ""
"de ver."
#, fuzzy
-msgid "Select a Resource"
-msgstr "Seleccione um ficheiro"
-
-#, fuzzy
msgid "Edit User Mood"
msgstr "Modos de Utilizador"
@@ -4847,9 +5018,19 @@ msgstr "Acção"
msgid "Select an action"
msgstr "Seleccione um ficheiro"
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr "Impossível adicionar \"%s\"."
+
+msgid "Buddy Add error"
+msgstr ""
+
#, fuzzy
-msgid "Unable to retrieve MSN Address Book"
-msgstr "Escolher Caderno de Moradas Notes"
+msgid "The username specified does not exist."
+msgstr "O nome de utilizador especificado é inválido."
#, c-format
msgid "Buddy list synchronization issue in %s (%s)"
@@ -5079,7 +5260,7 @@ msgstr "Passport de Criança sem autorização paternal"
msgid "Passport account not yet verified"
msgstr "Conta do Passport ainda não foi verificada"
-#, fuzzy, c-format
+#, fuzzy
msgid "Passport account suspended"
msgstr "Conta do Passport ainda não foi verificada"
@@ -5174,6 +5355,13 @@ msgstr "Enviar uma mensagem para dispositivo móvel."
msgid "Page"
msgstr "Enviar"
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "Nível de Alerta"
+
msgid "Has you"
msgstr "Tem-no"
@@ -5215,6 +5403,14 @@ msgstr "Endereço"
msgid "Album"
msgstr "Adium"
+#, fuzzy
+msgid "Game Title"
+msgstr "Título"
+
+#, fuzzy
+msgid "Office Title"
+msgstr "Título"
+
msgid "Set Friendly Name..."
msgstr "Definir Nome..."
@@ -5429,8 +5625,9 @@ msgstr ""
"O Pidgin não encontrou informação no perfil do utilizador. O utilizador "
"provavelmente não existe."
-msgid "Profile URL"
-msgstr "URL do perfil"
+#, fuzzy
+msgid "View web profile"
+msgstr "Não permitido enquanto desligado"
#. *< type
#. *< ui_requirement
@@ -5694,13 +5891,6 @@ msgstr "Adicionar ao Livro de Endereços"
msgid "Do you want to delete this buddy from your address book as well?"
msgstr "Quer adicionar este contacto à sua lista de contactos?"
-#. only notify the user about problems adding to the friends list
-#. * maybe we should do something else for other lists, but it probably
-#. * won't cause too many problems if we just ignore it
-#, c-format
-msgid "Unable to add \"%s\"."
-msgstr "Impossível adicionar \"%s\"."
-
#, fuzzy
msgid "The username specified is invalid."
msgstr "O nome de utilizador especificado é inválido."
@@ -5708,6 +5898,9 @@ msgstr "O nome de utilizador especificado é inválido."
msgid "This Hotmail account may not be active."
msgstr "Esta conta Hotmail pode não estar activa"
+msgid "Profile URL"
+msgstr "URL do perfil"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5722,17 +5915,13 @@ msgstr "Esta conta Hotmail pode não estar activa"
msgid "MSN Protocol Plugin"
msgstr "Plugin do Protocolo AIM/ICQ"
-#, fuzzy
-msgid "Missing Cipher"
-msgstr "Cifra"
-
-msgid "The RC4 cipher could not be found"
+#, c-format
+msgid "No such user: %s"
msgstr ""
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
-msgstr ""
+#, fuzzy
+msgid "User lookup"
+msgstr "Salas do Utilizador"
#, fuzzy
msgid "Reading challenge"
@@ -5746,11 +5935,19 @@ msgstr "Pedido de acesso do servidor inválido"
msgid "Logging in"
msgstr "Registo"
-#, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] ""
-msgstr[1] ""
+#, fuzzy
+msgid "MySpaceIM - No Username Set"
+msgstr "Sem nome"
+
+msgid "You appear to have no MySpace username."
+msgstr ""
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr ""
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr "Não está ligado ao servidor."
#. Can't write _()'d strings in array initializers. Workaround.
#, fuzzy
@@ -5773,14 +5970,22 @@ msgid "MySpace"
msgstr ""
#, fuzzy
-msgid "MySpaceIM - No Username Set"
-msgstr "Sem nome"
+msgid "IM Friends"
+msgstr "Janelas de M_I"
-msgid "You appear to have no MySpace username."
-msgstr ""
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+msgstr[1] ""
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
-msgstr ""
+#, fuzzy
+msgid "Add contacts from server"
+msgstr "O servidor retornou uma resposta inválida."
#. The session is now set up, ready to be connected. This emits the
#. * signedOn signal, so clients can now do anything with msimprpl, and
@@ -5804,6 +6009,22 @@ msgid "MySpaceIM Error"
msgstr ""
#, fuzzy
+msgid "Invalid input condition"
+msgstr "Terminando ligação"
+
+#, fuzzy
+msgid "Read buffer full (2)"
+msgstr "Fila cheia"
+
+#, fuzzy
+msgid "Unparseable message"
+msgstr "Impossível processar mensagem"
+
+#, fuzzy, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr "Não foi possível ligar ao host"
+
+#, fuzzy
msgid "Failed to add buddy"
msgstr "Impossível entrar na conversa do contacto"
@@ -5815,14 +6036,6 @@ msgstr "Importar lista de contactos de um ficheiro..."
msgid "persist command failed"
msgstr "O quadro de comunicações falhou"
-#, c-format
-msgid "No such user: %s"
-msgstr ""
-
-#, fuzzy
-msgid "User lookup"
-msgstr "Salas do Utilizador"
-
#, fuzzy
msgid "Failed to remove buddy"
msgstr "Impossível entrar na conversa do contacto"
@@ -5835,38 +6048,16 @@ msgid "blocklist command failed"
msgstr "O quadro de comunicações falhou"
#, fuzzy
-msgid "Invalid input condition"
-msgstr "Terminando ligação"
-
-#, fuzzy
-msgid "Read buffer full (2)"
-msgstr "Fila cheia"
-
-#, fuzzy
-msgid "Unparseable message"
-msgstr "Impossível processar mensagem"
-
-#, fuzzy, c-format
-msgid "Couldn't connect to host: %s (%d)"
-msgstr "Não foi possível ligar ao host"
+msgid "Missing Cipher"
+msgstr "Cifra"
-#, fuzzy
-msgid "IM Friends"
-msgstr "Janelas de M_I"
+msgid "The RC4 cipher could not be found"
+msgstr ""
-#, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-msgstr[1] ""
-
-#, fuzzy
-msgid "Add contacts from server"
-msgstr "O servidor retornou uma resposta inválida."
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
msgid "Add friends from MySpace.com"
msgstr ""
@@ -5915,10 +6106,6 @@ msgid "User"
msgstr "Utilizadores"
#, fuzzy
-msgid "Profile"
-msgstr "Perfil MSN"
-
-#, fuzzy
msgid "Headline"
msgstr "Nome real"
@@ -5933,17 +6120,6 @@ msgstr ""
msgid "Client Version"
msgstr "Fechar conversa"
-#. Protocol won't log in now without a username set.. Disconnect
-#, fuzzy
-msgid "No username set"
-msgstr "Sem nome"
-
-msgid "MySpaceIM - Please Set a Username"
-msgstr ""
-
-msgid "Please enter a username to check its availability:"
-msgstr ""
-
#, fuzzy
msgid "MySpaceIM - Username Available"
msgstr "Serviço Indisponível"
@@ -5955,6 +6131,9 @@ msgstr "%s enviou mensagem para o quadro. Gostaria de abrir o quadro?"
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr ""
+msgid "MySpaceIM - Please Set a Username"
+msgstr ""
+
#, fuzzy
msgid "This username is unavailable."
msgstr "Este tema não tem smileys disponíveis."
@@ -5963,6 +6142,14 @@ msgstr "Este tema não tem smileys disponíveis."
msgid "Please try another username:"
msgstr "Por favor introduza a sua nova senha"
+#. Protocol won't log in now without a username set.. Disconnect
+#, fuzzy
+msgid "No username set"
+msgstr "Sem nome"
+
+msgid "Please enter a username to check its availability:"
+msgstr ""
+
#. TODO: icons for each zap
#. Lots of comments for translators:
#. Zap means "to strike suddenly and forcefully as if with a
@@ -6358,7 +6545,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr "Erro. Suporte SSL não está instalado."
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr "Esta conferência foi fechada. Não podem ser enviadas mais mensagens."
@@ -6626,23 +6812,18 @@ msgstr "Camâra"
msgid "Screen Sharing"
msgstr "Nome de utilizador"
-#, c-format
msgid "Free For Chat"
msgstr "Livre Para Conversa"
-#, c-format
msgid "Not Available"
msgstr "Não Disponível"
-#, c-format
msgid "Occupied"
msgstr "Ocupado"
-#, c-format
msgid "Web Aware"
msgstr "Permitir que outros vejam o seu estado pela Web"
-#, c-format
msgid "Invisible"
msgstr "Invisível"
@@ -6688,7 +6869,7 @@ msgstr ""
"utilizador é inválido. Nomes de utilizador têem que começar com uma letra e "
"conter apenas letras, números e espaços, ou conter apenas números."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
#, fuzzy
msgid "Invalid username."
@@ -6705,7 +6886,7 @@ msgstr "A sua conta está suspensa neste momento."
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "O serviço AOL Instant Messenger está temporariamente indisponível."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6741,10 +6922,8 @@ msgstr "Introduza o número de 6 dígitos do mostrador digital."
msgid "_OK"
msgstr "OK"
-#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
+#, fuzzy, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
msgstr ""
"Pode ser desligado num curto período de tempo. Pode querer usar o TOC até "
"que isso esteja corrigido. Verifique por actualizações em %s."
@@ -6898,7 +7077,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] "Perdeu %hu mensagem de %s por um motivo desconhecido."
msgstr[1] "Perdeu %hu mensagens de %s por um motivo desconhecido."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "Impossível enviar mensagem: %s"
@@ -6920,6 +7099,10 @@ msgstr "Desligado Desde"
msgid "Member Since"
msgstr "Membro Desde"
+#, fuzzy
+msgid "Profile"
+msgstr "Perfil MSN"
+
msgid "Your AIM connection may be lost."
msgstr "A sua ligação AIM pode ter sido perdida."
@@ -7071,8 +7254,8 @@ msgid_plural ""
"The maximum profile length of %d bytes has been exceeded. It has been "
"truncated for you."
msgstr[0] ""
-"O tamanho máximo de %d byte do seu perfil foi excedido. O Pidgin truncou-o por "
-"si."
+"O tamanho máximo de %d byte do seu perfil foi excedido. O Pidgin truncou-o "
+"por si."
msgstr[1] ""
"O tamanho máximo de %d bytes do seu perfil foi excedido. O Pidgin truncou-o "
"por si."
@@ -7214,6 +7397,7 @@ msgstr "Ligar"
msgid "Get AIM Info"
msgstr "Ver info"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "Editar Comentário de Contacto"
@@ -7328,7 +7512,7 @@ msgstr "Pedindo a %s para se ligar a nós em %s:%hu para MI Directa."
msgid "Attempting to connect to %s:%hu."
msgstr "Tentando ligar a %s em %s:%hu para MI Directa."
-#, fuzzy, c-format
+#, fuzzy
msgid "Attempting to connect via proxy server."
msgstr "Tentando redireccionar a ligação..."
@@ -7438,7 +7622,7 @@ msgstr "Opera"
msgid "Visible"
msgstr "Invisível"
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
#, fuzzy
@@ -7534,17 +7718,50 @@ msgstr "Última Actualização"
msgid "Could not change buddy information."
msgstr "Por favor introduza o contacto que terá a notificação."
-#, c-format
-msgid "%d needs Q&A"
+msgid "Mobile"
+msgstr "Móvel"
+
+msgid "Note"
+msgstr "Nota"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "Ícone do contacto"
+
+msgid "Change his/her memo as you like"
msgstr ""
#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "Adicionar Contacto"
+msgid "_Modify"
+msgstr "_Modificar"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "_Modificar"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "Servidor ocupado"
+
+msgid "Your request was accepted."
+msgstr ""
-msgid "Input answer here"
+msgid "Your request was rejected."
msgstr ""
+#, fuzzy, c-format
+msgid "%u requires verification"
+msgstr "Mandatar autorização"
+
+#, fuzzy
+msgid "Add buddy question"
+msgstr "Adicionar contacto à sua lista?"
+
+#, fuzzy
+msgid "Enter answer here"
+msgstr "Introduza um Directório de Utilizador"
+
#, fuzzy
msgid "Send"
msgstr "_Enviar"
@@ -7557,19 +7774,20 @@ msgstr "Senha inválida"
msgid "Authorization denied message:"
msgstr "Mensagem de recusa de autorização:"
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr ""
#, fuzzy, c-format
-msgid "%d needs authentication"
+msgid "%u needs authorization"
msgstr "Iniciando autenticação"
#, fuzzy
msgid "Add buddy authorize"
msgstr "Adicionar contacto à sua lista?"
-msgid "Input request here"
-msgstr ""
+#, fuzzy
+msgid "Enter request here"
+msgstr "Introduza um Servidor de Conferência"
#, fuzzy
msgid "Would you be my friend?"
@@ -7592,7 +7810,7 @@ msgid "Failed sending authorize"
msgstr "Por favor autorize-me!"
#, fuzzy, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr "Impossível entrar na conversa do contacto"
#, fuzzy, c-format
@@ -7638,6 +7856,10 @@ msgid "You can only search for permanent Qun\n"
msgstr ""
#, fuzzy
+msgid "(Invalid UTF-8 string)"
+msgstr "Configurações de proxy inválidas"
+
+#, fuzzy
msgid "Not member"
msgstr "Membro Desde"
@@ -7683,15 +7905,18 @@ msgstr ""
msgid "Join QQ Qun"
msgstr "Entrar no Chat"
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
+msgid "Input request here"
msgstr ""
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "Número de Telefone"
+
msgid "Successfully joined Qun"
msgstr ""
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
#, fuzzy
@@ -7702,7 +7927,7 @@ msgstr "Opções de Som"
msgid "Failed:"
msgstr "Falhou"
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
#, fuzzy
@@ -7714,11 +7939,11 @@ msgid ""
"this operation will eventually remove this Qun."
msgstr ""
-msgid "Sorry, you are not our style ..."
+msgid "Sorry, you are not our style"
msgstr ""
#, fuzzy
-msgid "Successfully changed Qun member"
+msgid "Successfully changed Qun members"
msgstr "Número de Telefone"
#, fuzzy
@@ -7729,7 +7954,7 @@ msgid "You have successfully created a Qun"
msgstr ""
#, fuzzy
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr "Gostaria de defini-la como ícone de contacto para este utilizador?"
#, fuzzy
@@ -7737,28 +7962,28 @@ msgid "Setup"
msgstr "_Definir"
#, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr ""
#, c-format
-msgid "%d request to join Qun %d"
+msgid "%u request to join Qun %u"
msgstr ""
#, fuzzy, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr "Impossível entrar na conversa do contacto"
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr "Remover contacto"
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "Remover contacto"
#, fuzzy, c-format
msgid "Unknown-%d"
@@ -7879,6 +8104,13 @@ msgstr "<b>Utilizador:</b> %s<br>"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<b>Título de Grupo:</b> %s<br>"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<b>Utilizador Externo</b><br>"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7886,7 +8118,7 @@ msgid "<i>Feel free to join us!</i> :)"
msgstr ""
#, fuzzy, c-format
-msgid "About OpenQ r%s"
+msgid "About OpenQ %s"
msgstr "Sobre o Pidgin"
#, fuzzy
@@ -7907,6 +8139,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "Sobre o Pidgin"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Endereço de casa"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7938,7 +8174,6 @@ msgstr ""
msgid "QQ2008"
msgstr ""
-#. #endif
#, fuzzy
msgid "Connect by TCP"
msgstr "Ligando"
@@ -7951,6 +8186,9 @@ msgstr "Porto do servidor"
msgid "Show server news"
msgstr "Endereço do servidor"
+msgid "Show chat room when msg comes"
+msgstr ""
+
#, fuzzy
msgid "Keep alive interval (seconds)"
msgstr "Erro de leitura"
@@ -7960,11 +8198,7 @@ msgid "Update interval (seconds)"
msgstr "Erro de leitura"
#, fuzzy
-msgid "Can not decrypt server reply"
-msgstr "Incapaz de obter informação do servidor"
-
-#, fuzzy
-msgid "Can not decrypt get server reply"
+msgid "Cannot decrypt server reply"
msgstr "Incapaz de obter informação do servidor"
#, c-format
@@ -7987,21 +8221,23 @@ msgid "Activation required"
msgstr "Registar Obrigatório"
#, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr ""
#, fuzzy
-msgid "Keep alive error"
-msgstr "Erro de leitura"
+msgid "Could not decrypt server reply"
+msgstr "Incapaz de obter informação do servidor"
-msgid "Requesting captcha ..."
-msgstr ""
+#, fuzzy
+msgid "Requesting captcha"
+msgstr "Diálogo De Pedido"
-msgid "Checking code of captcha ..."
+msgid "Checking captcha"
msgstr ""
-msgid "Failed captcha verify"
-msgstr ""
+#, fuzzy
+msgid "Failed captcha verification"
+msgstr "Autenticação no Yahoo! Falhou"
#, fuzzy
msgid "Captcha Image"
@@ -8011,7 +8247,7 @@ msgstr "Guardar imagem"
msgid "Enter code"
msgstr "Introduza a Senha"
-msgid "QQ Captcha Verifing"
+msgid "QQ Captcha Verification"
msgstr ""
#, fuzzy
@@ -8019,16 +8255,15 @@ msgid "Enter the text from the image"
msgstr "Por favor introduza o nome do grupo a ser criado."
#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
+msgid "Unknown reply when checking password (0x%02X)"
msgstr ""
#, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
msgstr ""
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "Impossível ligar."
@@ -8036,12 +8271,6 @@ msgstr "Impossível ligar."
msgid "Socket error"
msgstr "Erro de Token"
-#, fuzzy, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr "Não está ligado ao servidor."
-
#, fuzzy
msgid "Unable to read from socket"
msgstr "Impossível ler do socket"
@@ -8054,11 +8283,11 @@ msgid "Connection lost"
msgstr "Ligação fechada"
#, fuzzy
-msgid "Get server ..."
+msgid "Getting server"
msgstr "Definir Informações de Utilizador..."
#, fuzzy
-msgid "Request token"
+msgid "Requesting token"
msgstr "Requisição negada"
msgid "Couldn't resolve host"
@@ -8069,17 +8298,13 @@ msgid "Invalid server or port"
msgstr "Nome de utilizador ou senha inválidos"
#, fuzzy
-msgid "Connecting server ..."
-msgstr "Ligar ao servidor"
+msgid "Connecting to server"
+msgstr "Ligando ao Servidor SILC"
#, fuzzy
msgid "QQ Error"
msgstr "Erro de Leitura"
-#, fuzzy
-msgid "Failed to send IM."
-msgstr "Impossível entrar no chat"
-
#, fuzzy, c-format
msgid ""
"Server News:\n"
@@ -8089,6 +8314,10 @@ msgid ""
msgstr "Relay do servidor ICQ"
#, fuzzy, c-format
+msgid "%s:%s"
+msgstr "%s em %s (%s)"
+
+#, fuzzy, c-format
msgid "From %s:"
msgstr "De"
@@ -8098,32 +8327,30 @@ msgid ""
"%s"
msgstr "Informação do servidor"
-msgid "Unknow SERVER CMD"
-msgstr ""
+#, fuzzy
+msgid "Unknown SERVER CMD"
+msgstr "Razão desconhecida."
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
#, fuzzy
msgid "QQ Qun Command"
msgstr "Comando"
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr ""
-
-msgid "Can not decrypt login reply"
-msgstr ""
+#, fuzzy
+msgid "Could not decrypt login reply"
+msgstr "Incapaz de obter informação do servidor"
#, fuzzy
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr "Razão desconhecida."
#, fuzzy
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr "Razão desconhecida."
#, fuzzy, c-format
@@ -8956,9 +9183,6 @@ msgstr "Organização"
msgid "Unit"
msgstr "unidade"
-msgid "Note"
-msgstr "Nota"
-
msgid "Join Chat"
msgstr "Entrar no Chat"
@@ -9626,6 +9850,10 @@ msgstr "Impossível resolver o host"
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr "Nomes de utilizador SIP não podem conter espaços ou símbolos @"
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "Porto do servidor"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -9660,196 +9888,10 @@ msgid "Auth Domain"
msgstr "Domínio Auth"
#, c-format
-msgid "Looking up %s"
-msgstr "Procurando %s"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Ligação para %s falhou"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Ligando: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "Impossível escrever ficheiro %s."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "Impossível ler ficheiro %s."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "Mensagem muito extensa, últimos %s bytes truncados."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s não está ligado no momento."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "Alertar %s não é permitido."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr ""
-"Uma mensagem foi descartada, está a exceder o limite de velocidade do "
-"servidor."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "Chat não disponível em %s."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "Está a mandar mensagens muito rapidamente para %s."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "Perdeu uma MI de %s porque era muito extensa."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "Perdeu uma MI de %s porque foi enviada muito rapidamente."
-
-#, c-format
-msgid "Failure."
-msgstr "Falha."
-
-#, c-format
-msgid "Too many matches."
-msgstr "Muitos resultados."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "Necessários mais qualificadores."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "Serviço de diretorio temporariamente indisponível."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "Pesquisa por email restrita."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "Palavra-chave ignorada."
-
-#, c-format
-msgid "No keywords."
-msgstr "Nenhuma palavra-chave."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "Utilizador não tem informação de directório."
-
-#, c-format
-msgid "Country not supported."
-msgstr "País não suportado."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Falha desconhecida: %s."
-
-#, fuzzy, c-format
-msgid "Incorrect username or password."
-msgstr "Nome ou senha incorrectos."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "O serviço está temporariamente indisponível."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "O seu nível de alerta é alto demais para que possa ligar-se."
-
-#, 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 ""
-"Esteve a ligar e desligar com muita frequência. Espere dez minutos e tente "
-"novamente. Se continuar a tentar, vai ter que esperar ainda mais."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "Um erro desconhecido ocorreu ao ligar: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "Um erro desconhecido, %d, ocorreu. Informações: %s"
-
-msgid "Invalid Groupname"
-msgstr "Nome de grupo inválido"
-
-msgid "Connection Closed"
-msgstr "Ligação fechada"
-
-msgid "Waiting for reply..."
-msgstr "Esperando resposta..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "O TOC voltou de sua pausa. Agora pode mandar mensagens novamente."
-
-msgid "Password Change Successful"
-msgstr "Mudança de senha efetuada com sucesso"
-
-msgid "_Group:"
-msgstr "_Grupo:"
-
-msgid "Get Dir Info"
-msgstr "Ver informações de directório"
-
-msgid "Set Dir Info"
-msgstr "Definir informações de directório"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "Não foi possível abrir %s para escrita!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr ""
-"Tranferência de ficheiro falhou; o outro lado provavelmente cancelou-a."
-
-msgid "Could not connect for transfer."
-msgstr "Não foi possível ligar para transferência."
-
-msgid "Could not write file header. The file will not be transferred."
+msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
-"Não foi possível escrever cabeçalho de ficheiro. O ficheiro não será "
-"transferido."
-
-#, fuzzy
-msgid "Save As..."
-msgstr "Guardar Ícone Como..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s pede a %s para aceitar %d ficheiro: %s (%.2f %s)%s%s"
-msgstr[1] "%s pede a %s para aceitar %d ficheiros: %s (%.2f %s)%s%s"
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s pede para lhe enviar um ficheiro"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "Plugin do protocolo TOC"
-
-#, c-format
-msgid "%s has sent you a webcam invite, which is not yet supported."
+msgid "Your SMS was not delivered"
msgstr ""
msgid "Your Yahoo! message did not get sent."
@@ -10125,13 +10167,9 @@ msgstr "Elo Fixe 3"
msgid "Last Update"
msgstr "Última Actualização"
-#, c-format
-msgid "User information for %s unavailable"
-msgstr "Informação do utilizador %s indisponível"
-
+#, fuzzy
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr ""
"Lamentamos, este perfil parece estar numa língua ou formato que não é "
"suportado de momento."
@@ -10473,9 +10511,6 @@ msgstr "Não perturbar"
msgid "Extended away"
msgstr "Ausente (estendido)"
-msgid "Mobile"
-msgstr "Móvel"
-
msgid "Listening to music"
msgstr ""
@@ -10517,18 +10552,6 @@ msgstr "+++ %s tornou-se activo"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "Erro Ao Ler %s"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"Foi encontrado um erro ao ler %s. A informação não foi carregada, e o "
-"ficheiro antigo foi movido para %s~."
-
msgid "Calculating..."
msgstr "Calculando..."
@@ -10603,6 +10626,14 @@ msgstr ""
msgid "Unable to connect to %s: %s"
msgstr "Impossível ligar ao servidor"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+"O servidor precisa de TLS/SSL para o login. Suporte TLS/SSL não foi "
+"encontrado."
+
#, c-format
msgid " - %s"
msgstr ""
@@ -10636,6 +10667,18 @@ msgstr "Ligação fechada"
msgid "Address already in use."
msgstr "Este nome de chat já está a ser utilizado"
+#, c-format
+msgid "Error Reading %s"
+msgstr "Erro Ao Ler %s"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"Foi encontrado um erro ao ler %s. A informação não foi carregada, e o "
+"ficheiro antigo foi movido para %s~."
+
msgid "Internet Messenger"
msgstr "Mensageiro Internet"
@@ -10683,10 +10726,8 @@ msgstr "Novas notificações de email"
msgid "Use this buddy _icon for this account:"
msgstr ""
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "Opções de %s"
+msgid "_Advanced"
+msgstr "_Avançado"
#, fuzzy
msgid "Use GNOME Proxy Settings"
@@ -10722,9 +10763,6 @@ msgstr "Se olhar bem de perto"
msgid "you can see the butterflies mating"
msgstr "Pode ver as borboletas a acasalar"
-msgid "Proxy Options"
-msgstr "Opções de proxy"
-
msgid "Proxy _type:"
msgstr "_Tipo de proxy:"
@@ -10753,8 +10791,9 @@ msgstr "_Básico"
msgid "Create _this new account on the server"
msgstr ""
-msgid "_Advanced"
-msgstr "_Avançado"
+#, fuzzy
+msgid "_Proxy"
+msgstr "Proxy"
msgid "Enabled"
msgstr "Activado"
@@ -10822,6 +10861,17 @@ msgid "I_M"
msgstr "_MI"
#, fuzzy
+msgid "_Audio Call"
+msgstr "_Adicionar Chat"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Chat Video"
+
+#, fuzzy
msgid "_Send File..."
msgstr "_Enviar Ficheiro"
@@ -10973,6 +11023,10 @@ msgstr "/Ferramentas/_Notificações de Contactos"
msgid "/Tools/_Certificates"
msgstr "/Ferramentas/Pr_eferências"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Ferramentas/Privacidade"
+
msgid "/Tools/Plu_gins"
msgstr "/Ferramentas/Plu_gins"
@@ -10982,10 +11036,6 @@ msgstr "/Ferramentas/Pr_eferências"
msgid "/Tools/Pr_ivacy"
msgstr "/Ferramentas/Pr_ivacidade"
-#, fuzzy
-msgid "/Tools/Smile_y"
-msgstr "/Ferramentas/Privacidade"
-
msgid "/Tools/_File Transfers"
msgstr "/Ferramentas/Transferências de _Ficheiros"
@@ -11110,8 +11160,8 @@ msgstr "Manualmente"
msgid "By status"
msgstr "Por estado"
-msgid "By log size"
-msgstr "Por tamanho do log"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -11129,6 +11179,9 @@ msgstr "Ligar"
msgid "Re-enable"
msgstr "Activar Conta"
+msgid "SSL FAQs"
+msgstr ""
+
#, fuzzy
msgid "Welcome back!"
msgstr "%s voltou"
@@ -11225,6 +11278,9 @@ msgstr ""
msgid "A_lias:"
msgstr "Nome:"
+msgid "_Group:"
+msgstr "_Grupo:"
+
msgid "Auto_join when account becomes online."
msgstr ""
@@ -11277,14 +11333,6 @@ msgstr "Não está ligado a nenhuma conta que possa convidar esse contacto."
msgid "Invite Buddy Into Chat Room"
msgstr "Convidar Contacto Para Sala de Chat"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Por favor introduza o nome do utilizador que gostaria de convidar, e uma "
-"mensagem de convite opcional."
-
msgid "_Buddy:"
msgstr "_Contacto:"
@@ -11361,6 +11409,22 @@ msgstr "/Conversa/_Guardar como..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Conversa/Limpa_r Scrollback"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Conversa/_Fechar"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Conversa/_Fechar"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Conversa/_Fechar"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Conversa/Ver _Registo..."
+
msgid "/Conversation/Se_nd File..."
msgstr "/Conversa/Enviar _Ficheiro..."
@@ -11438,6 +11502,18 @@ msgstr "/_Conversa"
msgid "/Conversation/View Log"
msgstr "/Conversa/Ver Registo"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Conversa/_Fechar"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Conversa/Ver Registo"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Conversa/_Fechar"
+
msgid "/Conversation/Send File..."
msgstr "/Conversa/Enviar Ficheiro..."
@@ -11629,6 +11705,9 @@ msgstr "Endereço"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "suporte"
@@ -11777,6 +11856,10 @@ msgid "Ubuntu Georgian Translators"
msgstr "Actuais Tradutores"
#, fuzzy
+msgid "Khmer"
+msgstr "Opera"
+
+#, fuzzy
msgid "Kannada"
msgstr "Banido"
@@ -11799,6 +11882,10 @@ msgid "Macedonian"
msgstr "Macedónio"
#, fuzzy
+msgid "Mongolian"
+msgstr "Macedónio"
+
+#, fuzzy
msgid "Bokmål Norwegian"
msgstr "Norueguês"
@@ -11912,12 +11999,29 @@ msgstr ""
"Gadu-Gadu todos ao mesmo tempo. Está escrito usando GTK+.<BR><BR>Pode "
"modificar e redistribuir o programa sob os termos da GPL (versão 2 ou "
"posterior). Uma cópia da GPL está contida no ficheiro 'COPYING' distribuído "
-"com o Pidgin. Pidgin é copyrighted pelos seus contribuidores. Veja o ficheiro "
-"'COPYRIGHT' para a lista completa de contribuidores. Não oferecemos "
-"garantia para este programa.<BR><BR>"
+"com o Pidgin. Pidgin é copyrighted pelos seus contribuidores. Veja o "
+"ficheiro 'COPYRIGHT' para a lista completa de contribuidores. Não "
+"oferecemos garantia para este programa.<BR><BR>"
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
#, fuzzy, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"4\">IRC:</FONT> #Pidgin no irc.freenode.net<BR><BR>"
+
+#, fuzzy, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"4\">IRC:</FONT> #Pidgin no irc.freenode.net<BR><BR>"
msgid "Current Developers"
@@ -12246,15 +12350,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr "Novas notificações de email"
-msgid "_Copy Email Address"
-msgstr "_Copiar Endereço de Email"
-
-msgid "_Open Link in Browser"
-msgstr "_Abrir Elo no Navegador"
-
-msgid "_Copy Link Location"
-msgstr "_Copiar Endereço do Elo"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12525,6 +12620,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12553,6 +12649,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12612,11 +12709,27 @@ msgstr ""
msgid "Pidgin"
msgstr "Paging"
-msgid "Open All Messages"
-msgstr "Abrir Todas as Mensagens"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Tem Correio!</span>"
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "Calculando..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -12647,6 +12760,27 @@ msgstr ""
"Foi escolhido o comando 'Manual' do navegador, mas nenhum comando foi "
"definido."
+msgid "Open All Messages"
+msgstr "Abrir Todas as Mensagens"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Tem Correio!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "Nova Notificação de Contacto"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Tem Correio!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "Mensagem desconhecida"
+
msgid "The following plugins will be unloaded."
msgstr "Os pluins seguintes serão descarregados."
@@ -12699,6 +12833,10 @@ msgstr "<b>Detalhes do Plugin</b>"
msgid "Select a file"
msgstr "Seleccione um ficheiro"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Editar Notificação de Contacto"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "Notificar em Quem"
@@ -12770,6 +12908,50 @@ msgstr "_Recorrente"
msgid "Pounce Target"
msgstr "Alvo da Notificação"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "Começar a digi_tar"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "O utilizador está digitando..."
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "Se _Ligar"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s saiu do estado 'Inactivo' (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "_Retornar"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "_Parar de digitar"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "Se _Desligar"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "Se tornar _inactivo"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "Quando ausente"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Enviar uma _mensagem"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "Acontecimento de notificação desconhecido. Por favor reporte isto!"
+
msgid "Smiley theme failed to unpack."
msgstr "Tema de smileys falhou a instalar."
@@ -12793,6 +12975,12 @@ msgstr ""
msgid "Cl_ose conversations with the Escape key"
msgstr "Conversações com %s"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Lista de contactos"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "Ícone de Notificação"
@@ -12915,9 +13103,6 @@ msgstr ""
msgid "Cannot start browser configuration program."
msgstr "Incapaz de obter informação do utilizador"
-msgid "ST_UN server:"
-msgstr "Servidor ST_UN:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr ""
@@ -12942,6 +13127,10 @@ msgstr "Porto _inicial:"
msgid "_End port:"
msgstr "Porto _final:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
#, fuzzy
msgid "Proxy Server &amp; Browser"
msgstr "Servidor proxy"
@@ -12971,6 +13160,10 @@ msgstr "Servidor proxy"
msgid "No proxy"
msgstr "Nenhum proxy"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "_Utilizador:"
@@ -13135,13 +13328,13 @@ msgstr "Quando ausente e inactivo"
msgid "Auto-away"
msgstr "Ausência Automática"
-msgid "Change status when _idle"
-msgstr "Mudar de estado quando _inactivo"
-
#, fuzzy
msgid "_Minutes before becoming idle:"
msgstr "_Minutos antes de mudar de estado:"
+msgid "Change status when _idle"
+msgstr "Mudar de estado quando _inactivo"
+
msgid "Change _status to:"
msgstr "Mudar _estado para:"
@@ -13299,6 +13492,12 @@ msgstr "Guar_dar e Usar"
msgid "Status for %s"
msgstr "Estado para %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
#, fuzzy
msgid "Custom Smiley"
msgstr "Inserir smiley"
@@ -13309,15 +13508,15 @@ msgstr ""
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
+msgstr ""
+
#, fuzzy
msgid "Duplicate Shortcut"
msgstr "Correcção Duplicada"
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
-msgstr ""
-
#, fuzzy
msgid "Please select an image for the smiley."
msgstr "Usar um estado _diferente para algumas contas"
@@ -13331,17 +13530,22 @@ msgid "Add Smiley"
msgstr "Sorria!"
#, fuzzy
-msgid "Smiley _Image"
+msgid "_Image:"
msgstr "Guardar imagem"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr ""
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "Porta"
#, fuzzy
msgid "Smiley"
msgstr "Sorria!"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "Porta"
+
msgid "Custom Smiley Manager"
msgstr ""
@@ -13473,6 +13677,16 @@ msgid ""
msgstr ""
#, fuzzy
+msgid "_Open Link"
+msgstr "_Abrir elo em:"
+
+msgid "_Copy Link Location"
+msgstr "_Copiar Endereço do Elo"
+
+msgid "_Copy Email Address"
+msgstr "_Copiar Endereço de Email"
+
+#, fuzzy
msgid "Save File"
msgstr "Guardar Ficheiro..."
@@ -14492,10 +14706,6 @@ msgid "Only when docked"
msgstr "Apenas quando na área de sistema"
#, fuzzy
-msgid "_Flash window when chat messages are received"
-msgstr "_Piscar a janela quando forem recebidas mensagens"
-
-#, fuzzy
msgid "Windows Pidgin Options"
msgstr "Opções de ligação"
@@ -14550,6 +14760,228 @@ msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr ""
#, fuzzy
+#~ msgid "Invite message"
+#~ msgstr "Inserir na mensagem"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Por favor introduza o nome do utilizador que gostaria de convidar, e uma "
+#~ "mensagem de convite opcional."
+
+#, fuzzy
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "Escolher Caderno de Moradas Notes"
+
+#~ msgid ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+#~ msgstr ""
+#~ "Pode ser desligado num curto período de tempo. Pode querer usar o TOC até "
+#~ "que isso esteja corrigido. Verifique por actualizações em %s."
+
+#, fuzzy
+#~ msgid "Add buddy Q&A"
+#~ msgstr "Adicionar Contacto"
+
+#, fuzzy
+#~ msgid "Can not decrypt get server reply"
+#~ msgstr "Incapaz de obter informação do servidor"
+
+#, fuzzy
+#~ msgid "Keep alive error"
+#~ msgstr "Erro de leitura"
+
+#, fuzzy
+#~ msgid ""
+#~ "Lost connection with server:\n"
+#~ "%d, %s"
+#~ msgstr "Não está ligado ao servidor."
+
+#, fuzzy
+#~ msgid "Connecting server ..."
+#~ msgstr "Ligar ao servidor"
+
+#, fuzzy
+#~ msgid "Failed to send IM."
+#~ msgstr "Impossível entrar no chat"
+
+#~ msgid "Looking up %s"
+#~ msgstr "Procurando %s"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "Ligação para %s falhou"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Ligando: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "Impossível escrever ficheiro %s."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "Impossível ler ficheiro %s."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "Mensagem muito extensa, últimos %s bytes truncados."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s não está ligado no momento."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "Alertar %s não é permitido."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr ""
+#~ "Uma mensagem foi descartada, está a exceder o limite de velocidade do "
+#~ "servidor."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "Chat não disponível em %s."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "Está a mandar mensagens muito rapidamente para %s."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "Perdeu uma MI de %s porque era muito extensa."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr "Perdeu uma MI de %s porque foi enviada muito rapidamente."
+
+#~ msgid "Failure."
+#~ msgstr "Falha."
+
+#~ msgid "Too many matches."
+#~ msgstr "Muitos resultados."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "Necessários mais qualificadores."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "Serviço de diretorio temporariamente indisponível."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "Pesquisa por email restrita."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "Palavra-chave ignorada."
+
+#~ msgid "No keywords."
+#~ msgstr "Nenhuma palavra-chave."
+
+#~ msgid "User has no directory information."
+#~ msgstr "Utilizador não tem informação de directório."
+
+#~ msgid "Country not supported."
+#~ msgstr "País não suportado."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Falha desconhecida: %s."
+
+#, fuzzy
+#~ msgid "Incorrect username or password."
+#~ msgstr "Nome ou senha incorrectos."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "O serviço está temporariamente indisponível."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "O seu nível de alerta é alto demais para que possa ligar-se."
+
+#~ 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 ""
+#~ "Esteve a ligar e desligar com muita frequência. Espere dez minutos e "
+#~ "tente novamente. Se continuar a tentar, vai ter que esperar ainda mais."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "Um erro desconhecido ocorreu ao ligar: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "Um erro desconhecido, %d, ocorreu. Informações: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "Nome de grupo inválido"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Ligação fechada"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "Esperando resposta..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "O TOC voltou de sua pausa. Agora pode mandar mensagens novamente."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "Mudança de senha efetuada com sucesso"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Ver informações de directório"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Definir informações de directório"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "Não foi possível abrir %s para escrita!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr ""
+#~ "Tranferência de ficheiro falhou; o outro lado provavelmente cancelou-a."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "Não foi possível ligar para transferência."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr ""
+#~ "Não foi possível escrever cabeçalho de ficheiro. O ficheiro não será "
+#~ "transferido."
+
+#, fuzzy
+#~ msgid "Save As..."
+#~ msgstr "Guardar Ícone Como..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s pede a %s para aceitar %d ficheiro: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s pede a %s para aceitar %d ficheiros: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s pede para lhe enviar um ficheiro"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "Plugin do protocolo TOC"
+
+#~ msgid "User information for %s unavailable"
+#~ msgstr "Informação do utilizador %s indisponível"
+
+#~ msgid "%s Options"
+#~ msgstr "Opções de %s"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Opções de proxy"
+
+#~ msgid "By log size"
+#~ msgstr "Por tamanho do log"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_Abrir Elo no Navegador"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "Servidor ST_UN:"
+
+#, fuzzy
+#~ msgid "Smiley _Image"
+#~ msgstr "Guardar imagem"
+
+#, fuzzy
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "_Piscar a janela quando forem recebidas mensagens"
+
+#, fuzzy
#~ msgid "A group with the name already exists."
#~ msgstr "Já existe uma pasta com esse nome"
@@ -14614,13 +15046,6 @@ msgstr ""
#~ msgstr "Tem a certeza que deseja apagar %s?"
#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr "%s em %s (%s)"
-
-#, fuzzy
#~ msgid "System Message"
#~ msgstr "Registo do Sistema"
@@ -15012,9 +15437,9 @@ msgstr ""
#~ "to blink for unread messages."
#~ msgstr ""
#~ "Mostra um ícone de notificação (no GNOME, KDE ou Windows, por exemplo) "
-#~ "para mostrar o estado actual do Pidgin, permitir acesso rápido para funções "
-#~ "comumente utilizadas, e para mostrar ou ocultar a lista de contactos. "
-#~ "Fornece também opções para piscar quando há mensagens por ler."
+#~ "para mostrar o estado actual do Pidgin, permitir acesso rápido para "
+#~ "funções comumente utilizadas, e para mostrar ou ocultar a lista de "
+#~ "contactos. Fornece também opções para piscar quando há mensagens por ler."
#~ msgid "GtkTreeView Expander Size"
#~ msgstr "Tamanho do Expansor de GtkTreeView"
@@ -15448,8 +15873,8 @@ msgstr ""
#~ msgid ""
#~ "When this happens, TOC ignores any messages sent to it, and may kick you "
-#~ "off if you send a message. Pidgin will prevent anything from going through. "
-#~ "This is only temporary, please be patient."
+#~ "off if you send a message. Pidgin will prevent anything from going "
+#~ "through. This is only temporary, please be patient."
#~ msgstr ""
#~ "Quando isto acontece, o TOC ignora quaisquer mesagens enviadas para ele, "
#~ "e poderá te chutar caso envie uma mensagem. O Pidgin irá evitar que "
@@ -15468,13 +15893,13 @@ msgstr ""
#~ msgid ""
#~ "The normal authentication method has failed. This means either your "
#~ "password is incorrect, or Yahoo!'s authentication scheme has changed. "
-#~ "Pidgin will now attempt to log in using Web Messenger authentication, which "
-#~ "will result in reduced functionality and features."
+#~ "Pidgin will now attempt to log in using Web Messenger authentication, "
+#~ "which will result in reduced functionality and features."
#~ msgstr ""
#~ "O método de autenticação normal falhou. Isto significa que a sua senha "
-#~ "está incorrecta, ou o que esquema de autenticação da Yahoo! mudou. O Pidgin "
-#~ "vai tentar ligar-se usando a autenticação Web Messenger, o que resultará "
-#~ "em funcionalidade e características reduzidas."
+#~ "está incorrecta, ou o que esquema de autenticação da Yahoo! mudou. O "
+#~ "Pidgin vai tentar ligar-se usando a autenticação Web Messenger, o que "
+#~ "resultará em funcionalidade e características reduzidas."
#~ msgid "Unable to read"
#~ msgstr "Inpossível ler"
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 045eb3dfc4..f455e4fae1 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-27 10:14-0800\n"
+"POT-Creation-Date: 2009-04-30 10:39-0400\n"
"PO-Revision-Date: 2009-02-24 22:11-0300\n"
"Last-Translator: Rodrigo Luiz Marques Flores <mail@rodrigoflores.org>\n"
"Language-Team: Rodrigo Luiz Marques Flores <mail@rodrigoflores.org>\n"
@@ -610,19 +610,6 @@ msgstr ""
msgid "Send To"
msgstr "Enviar para"
-msgid "Invite message"
-msgstr "Mensagem de convite"
-
-msgid "Invite"
-msgstr "Convidar"
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Por favor, digite o nome do usuário que você gostaria de\n"
-" convidar, junto com uma mensagem de convite opcional."
-
msgid "Conversation"
msgstr "Conversa"
@@ -881,6 +868,41 @@ msgstr "Todas as Conversas"
msgid "System Log"
msgstr "Histórico do sistema"
+#, fuzzy
+msgid "Calling ... "
+msgstr "Calculando..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "Aceitar"
+
+msgid "Reject"
+msgstr "Rejeitar"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "Você saiu do canal%s%s"
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "Emails"
@@ -915,6 +937,9 @@ msgstr "Continuar"
msgid "IM"
msgstr "MI"
+msgid "Invite"
+msgstr "Convidar"
+
msgid "(none)"
msgstr "(nome)"
@@ -1118,7 +1143,6 @@ msgstr "%s se tornou ausente. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s te enviou uma mensagem. (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "Evento de ação desconhecido. Por favor reporte isso!"
@@ -1530,6 +1554,28 @@ msgstr "GntLastLog"
msgid "Lastlog plugin."
msgstr "Plug-in de busca de mensagens"
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL da música"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "contas"
@@ -1630,13 +1676,6 @@ msgstr "Aceitar certificado de %s?"
msgid "SSL Certificate Verification"
msgstr "Verificação do certificado SSL"
-#. Number of actions
-msgid "Accept"
-msgstr "Aceitar"
-
-msgid "Reject"
-msgstr "Rejeitar"
-
msgid "_View Certificate..."
msgstr "_Ver certificado..."
@@ -1785,6 +1824,18 @@ msgstr "%s saiu da sala."
msgid "%s left the room (%s)."
msgstr "%s saiu da sala (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Convidar para uma conferência"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Favor digitar o nome do usuário que você gostaria de convidar, junto com uma "
+"mensagem de convite opcional."
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "Falha ao obter conexão: %s"
@@ -2634,6 +2685,32 @@ msgstr "Salvar mensagens offline como ações"
msgid "Do not ask. Always save in pounce."
msgstr "Não perguntar. Sempre salvar como ações."
+#, fuzzy
+msgid "One Time Password"
+msgstr "Digite a senha"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -3035,6 +3112,7 @@ msgstr "Selecione o bate-papo para o amigo: %s"
msgid "Add to chat..."
msgstr "Adicionar ao bate-papo..."
+#. Global
msgid "Available"
msgstr "Disponível"
@@ -3381,6 +3459,17 @@ msgstr ""
"O nome de conta selecionado foi rejeitado pelo servidor. Provavelmente, ele "
"contém caracteres inválidos."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "Este nome de bate-papo já está sendo utilizado"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Apelido"
+
msgid "Cannot change nick"
msgstr "Não foi possível mudar apelido"
@@ -3655,6 +3744,41 @@ msgstr "O servidor retornou uma identificação inválida"
msgid "SASL error"
msgstr "Erro de SASL"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "Nenhum motivo foi dado."
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Versão não suportada"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"Não foi possível estabelecer conexão com o servidor:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"Não foi possível estabelecer conexão com o servidor:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "Não foi possível inicializar conexão"
+
+msgid "Unable to create socket"
+msgstr "Não foi possível criar socket"
+
+msgid "Write error"
+msgstr "Erro ao enviar"
+
msgid "Full Name"
msgstr "Nome completo"
@@ -3721,6 +3845,10 @@ msgstr "Cliente"
msgid "Operating System"
msgstr "Sistema operacional"
+#, fuzzy
+msgid "Local Time"
+msgstr "Arquivo local:"
+
msgid "Last Activity"
msgstr "Última atividade"
@@ -4051,9 +4179,6 @@ msgstr "Encontrar salas"
msgid "You require encryption, but it is not available on this server."
msgstr "Você requereu criptografia, mas este servidor não a suporta."
-msgid "Write error"
-msgstr "Erro ao enviar"
-
msgid "Ping timeout"
msgstr "Tempo limite de ping excedido"
@@ -4062,14 +4187,9 @@ msgstr "Erro de leitura"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"Não foi possível estabelecer conexão com o servidor:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "Não foi possível criar socket"
msgid "Invalid XMPP ID"
msgstr "ID do XMPP inválido"
@@ -4077,6 +4197,10 @@ msgstr "ID do XMPP inválido"
msgid "Invalid XMPP ID. Domain must be set."
msgstr "ID do XMPP inválido. O domínio precisa ser especificado."
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Não foi possível conectar ao servidor."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "Registro de %s@%s foi efetuado com sucesso"
@@ -4169,6 +4293,12 @@ msgstr "O servidor não tem suporte a bloqueio"
msgid "Not Authorized"
msgstr "Não autorizado"
+msgid "Mood"
+msgstr "Humor"
+
+msgid "Now Listening"
+msgstr "Ouvindo agora"
+
msgid "Both"
msgstr "Ambas"
@@ -4190,12 +4320,6 @@ msgstr "Nenhuma"
msgid "Subscription"
msgstr "Inscrição"
-msgid "Mood"
-msgstr "Humor"
-
-msgid "Now Listening"
-msgstr "Ouvindo agora"
-
msgid "Mood Text"
msgstr "Humor (texto)"
@@ -4433,22 +4557,28 @@ msgstr "Não foi possível convidar usuário (%s)."
msgid "Unable to ping user %s"
msgstr "Não foi possível verificar presença de usuário %s"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr ""
"Não foi possível chamar a atenção de %s, pois nada é conhecido sobre ele(a)."
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr ""
"Não foi possível chamar a atenção de %s, pois este(a) pode estar "
"desconectado."
-#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+#, fuzzy, c-format
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr ""
"Não foi possível chamar a atenção de %s, pois este não suporta tal recurso."
+#, c-format
+msgid "Buzzing %s..."
+msgstr "Chamando a atenção de %s..."
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
msgid "Buzz"
@@ -4458,9 +4588,39 @@ msgstr "Chamar a atenção"
msgid "%s has buzzed you!"
msgstr "%s chamou sua atenção!"
-#, c-format
-msgid "Buzzing %s..."
-msgstr "Chamando a atenção de %s..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "Não foi possível enviar o arquivo para %s, ID do Jabber inválido"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr ""
+"Não foi possível enviar arquivo para %s, pois o usuário não está conectado"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr ""
+"Não foi possível enviar arquivo para %s, pois você não está recebendo "
+"informações de presença deste usuário"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "Registro falhou"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr ""
+"Favor selecionar o recurso de %s para o qual você gostaria de mandar um "
+"arquivo"
+
+msgid "Select a Resource"
+msgstr "Selecione um recurso"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "Iniciar _bate-papo"
msgid "config: Configure a chat room."
msgstr "config: Configura uma sala de bate-papo."
@@ -4617,6 +4777,21 @@ msgstr "Erro ao entrar no bate-papo %s"
msgid "Error in chat %s"
msgstr "Erro no bate-papo %s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "Ocorreu um erro na abertura do arquivo."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "Transferência de arquivo falhou"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Falha ao abrir arquivo '%s': %s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4647,9 +4822,6 @@ msgstr ""
"Favor selecionar o recurso de %s para o qual você gostaria de mandar um "
"arquivo"
-msgid "Select a Resource"
-msgstr "Selecione um recurso"
-
msgid "Edit User Mood"
msgstr "Editar humor do usuário"
@@ -6464,7 +6636,7 @@ msgstr ""
"válido, ou têm que começar com uma letra e conter apenas letras, números e "
"espaços, ou conter apenas números."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr "Nome de usuário inválido."
@@ -6480,7 +6652,7 @@ msgstr "Atualmente, sua conta está suspensa."
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "O serviço AOL Instant Messenger está temporariamente indisponível."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6674,7 +6846,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] "Você perdeu %hu mensagem de %s por um motivo desconhecido."
msgstr[1] "Você perdeu %hu mensagens de %s por um motivo desconhecido."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "Não foi possível enviar mensagem: %s"
@@ -7268,6 +7440,38 @@ msgstr "Atualizar"
msgid "Could not change buddy information."
msgstr "Não foi possível alterar informação do amigo."
+msgid "Mobile"
+msgstr "Móvel"
+
+msgid "Note"
+msgstr "Nota"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "Modificar Lembrete do Amigo"
+
+msgid "Change his/her memo as you like"
+msgstr ""
+
+#, fuzzy
+msgid "_Modify"
+msgstr "Modificar"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "Modificar"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "Servidor ocupado"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
#, c-format
msgid "%u requires verification"
msgstr "%u requer verificação"
@@ -7579,6 +7783,9 @@ msgstr "<p><b>Agradecimento</b>:<br>\n"
msgid "<p><b>Scrupulous Testers</b>:<br>\n"
msgstr "<p><b>Testadores Escrupulosos</b>:<br>\n"
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr "<p><i>E, todos os garotos nos bastidores...</i><br>\n"
@@ -7714,7 +7921,6 @@ msgstr ""
"Código de resposta desconhecido ao fazer login em (0x%02X):\n"
"%s"
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "Não foi possível conectar."
@@ -8620,9 +8826,6 @@ msgstr "Organização"
msgid "Unit"
msgstr "Unidade"
-msgid "Note"
-msgstr "Nota"
-
msgid "Join Chat"
msgstr "Entrar em um bate-papo"
@@ -9318,203 +9521,13 @@ msgid "Auth Domain"
msgstr "Domínio de autenticação"
#, c-format
-msgid "Looking up %s"
-msgstr "Procurando por %s"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Conexão para %s falhou"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Conectando: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "Não foi possível escrever arquivo %s."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "Não foi possível ler arquivo %s."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "Mensagem muito extensa, últimos %s bytes truncados."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s não está conectado no momento."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "Alertar %s não é permitido."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr ""
-"Uma mensagem foi descartada, você está excedendo o limite de velocidade do "
-"servidor."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "Bate-papo não disponível em %s."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "Você está mandando mensagens muito rapidamente para %s."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr ""
-"Você perdeu uma mensagem instantânea de %s porque ela era muito extensa."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr ""
-"Você perdeu uma mensagem de mensagem instantânea de %s porque ela foi "
-"enviada muito rapidamente."
-
-#, c-format
-msgid "Failure."
-msgstr "Falha."
-
-#, c-format
-msgid "Too many matches."
-msgstr "Excesso de resultados."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "Necessários mais qualificadores."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "Serviço de diretório temporariamente indisponível."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "Pesquisa por email restrita."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "Palavra-chave ignorada."
-
-#, c-format
-msgid "No keywords."
-msgstr "Nenhuma palavra-chave."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "Usuário não tem informação de diretório."
-
-#, c-format
-msgid "Country not supported."
-msgstr "País não suportado."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Falha desconhecida: %s."
-
-#, c-format
-msgid "Incorrect username or password."
-msgstr "Nome de usuário ou senha incorreto(a)."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "O serviço está temporariamente indisponível."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr ""
-"Seu nível de alerta é alto demais para que você possa se conectar no momento."
-
-#, c-format
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
-msgstr ""
-"Você esteve conectando e desconectando com muita freqüência. Espere dez "
-"minutos e tente novamente. Se você continuar tentando, vai ter que esperar "
-"ainda mais."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "Um erro desconhecido ocorreu ao conectar: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "Um erro desconhecido, %d, ocorreu. Informações: %s"
-
-msgid "Invalid Groupname"
-msgstr "Nome de grupo inválido"
-
-msgid "Connection Closed"
-msgstr "Conexão fechada"
-
-msgid "Waiting for reply..."
-msgstr "Esperando resposta..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "O TOC voltou de sua pausa. Agora você pode mandar mensagens novamente."
-
-msgid "Password Change Successful"
-msgstr "Mudança de senha efetuada com sucesso"
-
-msgid "_Group:"
-msgstr "_Grupo:"
-
-msgid "Get Dir Info"
-msgstr "Ver informações de diretório"
-
-msgid "Set Dir Info"
-msgstr "Definir informações de diretório"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "Não foi possível abrir %s para escrita!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr ""
-"Transferência de arquivo falhou; o outro lado provavelmente cancelou-a."
-
-msgid "Could not connect for transfer."
-msgstr "Não foi possível conectar para transferência."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr ""
-"Não foi possível escrever cabeçalho de arquivo. O arquivo não será "
-"transferido."
-
-msgid "Save As..."
-msgstr "Salvar como..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s pede a %s para aceitar %d arquivo: %s (%.2f %s)%s%s"
-msgstr[1] "%s pede a %s para aceitar %d arquivos: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s pede a você para enviar um arquivo a ele"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "Plug-in do protocolo TOC"
-
-#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
"%s te enviou um convite para ver webcam, que é um recurso não suportado."
+msgid "Your SMS was not delivered"
+msgstr ""
+
msgid "Your Yahoo! message did not get sent."
msgstr "Sua mensagem do Yahoo! não foi enviada."
@@ -10118,9 +10131,6 @@ msgstr "Não perturbe"
msgid "Extended away"
msgstr "Ausente (estendido)"
-msgid "Mobile"
-msgstr "Móvel"
-
msgid "Listening to music"
msgstr "Escutando música"
@@ -10162,18 +10172,6 @@ msgstr "+++ %s voltou da inatividade"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "Erro ao ler %s"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"Um erro foi encontrado ao processar sua %s. Eles(as) não foram carregados"
-"(as), e o antigo arquivo foi movido para %s~."
-
msgid "Calculating..."
msgstr "Calculando..."
@@ -10248,6 +10246,14 @@ msgstr "Erro ao gravar em %s: %s"
msgid "Unable to connect to %s: %s"
msgstr "Não foi possível conectar a %s: %s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+"O servidor requer TLS/SSL para conexão. Nenhum suporte a TLS/SSL foi "
+"encontrado."
+
#, c-format
msgid " - %s"
msgstr "- %s"
@@ -10281,6 +10287,18 @@ msgstr "Conexão rejeitada."
msgid "Address already in use."
msgstr "O endereço já está em uso"
+#, c-format
+msgid "Error Reading %s"
+msgstr "Erro ao ler %s"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"Um erro foi encontrado ao processar sua %s. Eles(as) não foram carregados"
+"(as), e o antigo arquivo foi movido para %s~."
+
msgid "Internet Messenger"
msgstr "Mensageiro da Internet"
@@ -10323,10 +10341,8 @@ msgstr "Notificar ao receber novos e_mails"
msgid "Use this buddy _icon for this account:"
msgstr "Usar este _ícone de exibição para esta conta:"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "Opções de %s"
+msgid "_Advanced"
+msgstr "_Avançado"
msgid "Use GNOME Proxy Settings"
msgstr "Usar configurações de proxy do GNOME"
@@ -10361,9 +10377,6 @@ msgstr "Se você olhar bem de perto"
msgid "you can see the butterflies mating"
msgstr "você pode ver as borboletas acasalando-se"
-msgid "Proxy Options"
-msgstr "Opções de proxy"
-
msgid "Proxy _type:"
msgstr "_Tipo de proxy:"
@@ -10391,8 +10404,9 @@ msgstr "_Básico"
msgid "Create _this new account on the server"
msgstr "Criar es_ta nova conta no servidor"
-msgid "_Advanced"
-msgstr "_Avançado"
+#, fuzzy
+msgid "_Proxy"
+msgstr "Proxy"
msgid "Enabled"
msgstr "Ativado"
@@ -10470,6 +10484,17 @@ msgstr "Ver _info"
msgid "I_M"
msgstr "_MI"
+#, fuzzy
+msgid "_Audio Call"
+msgstr "_Adicionar bate-papo"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Bate-papo com vídeo"
+
msgid "_Send File..."
msgstr "_Enviar arquivo..."
@@ -10605,6 +10630,10 @@ msgstr "/Ferramentas/Ações de _usuário"
msgid "/Tools/_Certificates"
msgstr "/Ferramentas/_Certificados"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Ferramentas/Smile_y"
+
msgid "/Tools/Plu_gins"
msgstr "/Ferramentas/Plu_gins"
@@ -10614,9 +10643,6 @@ msgstr "/Ferramentas/Pr_eferências"
msgid "/Tools/Pr_ivacy"
msgstr "/Ferramentas/Pr_ivacidade"
-msgid "/Tools/Smile_y"
-msgstr "/Ferramentas/Smile_y"
-
msgid "/Tools/_File Transfers"
msgstr "/Ferramentas/Transferências de arquivo"
@@ -10734,8 +10760,8 @@ msgstr "Manualmente"
msgid "By status"
msgstr "Por status"
-msgid "By log size"
-msgstr "Por tamanho do histórico"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10751,6 +10777,9 @@ msgstr "Reconectar"
msgid "Re-enable"
msgstr "Re-ativar"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr "Bem vindo de volta!"
@@ -10842,6 +10871,9 @@ msgstr ""
msgid "A_lias:"
msgstr "Ape_lido:"
+msgid "_Group:"
+msgstr "_Grupo:"
+
msgid "Auto_join when account becomes online."
msgstr "Entrar automaticamente ao conectar."
@@ -10892,14 +10924,6 @@ msgstr "Você não está conectado com uma conta que permita convidar este amigo
msgid "Invite Buddy Into Chat Room"
msgstr "Convidar amigo para sala de bate-papo"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Favor digitar o nome do usuário que você gostaria de convidar, junto com uma "
-"mensagem de convite opcional."
-
msgid "_Buddy:"
msgstr "_Amigo:"
@@ -10974,6 +10998,22 @@ msgstr "/Conversa/_Salvar como..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Conversa/Limpa_r"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Conversa/M_ais"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Conversa/M_ais"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Conversa/M_ais"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Conversa/Ver _histórico"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Conversa/E_nviar arquivo..."
@@ -11046,6 +11086,18 @@ msgstr "/Conversa"
msgid "/Conversation/View Log"
msgstr "/Conversa/Ver histórico"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Conversa/Mais"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Conversa/Ver histórico"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Conversa/Mais"
+
msgid "/Conversation/Send File..."
msgstr "/Conversa/Enviar arquivo..."
@@ -11229,6 +11281,9 @@ msgstr "Artista"
msgid "Ka-Hing Cheung"
msgstr "Ka-Hing Cheung"
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "suporte"
@@ -11368,6 +11423,10 @@ msgstr "Geórgio"
msgid "Ubuntu Georgian Translators"
msgstr "Tradutores do Ubuntu do idioma Geórgio"
+#, fuzzy
+msgid "Khmer"
+msgstr "Outro"
+
msgid "Kannada"
msgstr "Canarês"
@@ -11840,15 +11899,6 @@ msgstr "Fonte para se utilizar na notificação de digitação"
msgid "Enable typing notification"
msgstr "Habilitar notificação de digitação"
-msgid "_Copy Email Address"
-msgstr "_Copiar endereço de email"
-
-msgid "_Open Link in Browser"
-msgstr "_Abrir link no navegador"
-
-msgid "_Copy Link Location"
-msgstr "_Copiar endereço do link"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12096,13 +12146,14 @@ msgstr "_Navegar na pasta de históricos"
msgid "%s %s. Try `%s -h' for more information.\n"
msgstr "%s %s. Tente `%s -h' para mais informações.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12126,13 +12177,14 @@ msgstr ""
" --display=DISPLAY seleciona o display X a usar\n"
" -v, --version exiba a versão atual e saia\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12192,11 +12244,23 @@ msgstr "Pidgin"
msgid "Exiting because another libpurple client is already running.\n"
msgstr "Saindo porque outro cliente libpurple já está sendo executado.\n"
-msgid "Open All Messages"
-msgstr "Abrir todas as mensagens"
+msgid "/_Media"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Você tem email!</span>"
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "Calculando..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -12227,6 +12291,27 @@ msgstr ""
"A opção de comando do navegador 'Manual' foi escolhida, mas nenhum comando "
"foi definido."
+msgid "Open All Messages"
+msgstr "Abrir todas as mensagens"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Você tem email!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "Nova ação de usuário"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Você tem email!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "Mensagem desconhecida"
+
msgid "The following plugins will be unloaded."
msgstr "Os plug-ins a seguir serão descarregados."
@@ -12275,6 +12360,10 @@ msgstr "<b>Detalhes do plug-in</b>"
msgid "Select a file"
msgstr "Selecione um arquivo"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Editar ação de usuário"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "Quem terá a ação"
@@ -12345,6 +12434,50 @@ msgstr "_Recorrente"
msgid "Pounce Target"
msgstr "Alvo da ação"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "Começar a digitar"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "Pausar ao digitar"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "Conectar"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s voltou do estado 'Inativo' (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "Voltar da ausência"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "Parou de digitar"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "Desconectar"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "Tornar-se inativo"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "Quando ausente"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Enviar uma mensagem"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "Evento de ação desconhecido. Por favor reporte isso!"
+
msgid "Smiley theme failed to unpack."
msgstr "O tema de emoticons não pôde ser descompactado."
@@ -12367,6 +12500,12 @@ msgstr "Atalhos de Teclado"
msgid "Cl_ose conversations with the Escape key"
msgstr "Fechar C_onversas com a Tecla Esc"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Lista de amigos"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "Ícone da bandeja"
@@ -12477,9 +12616,6 @@ msgstr "Não foi possível iniciar o programa de configuração do proxy."
msgid "Cannot start browser configuration program."
msgstr "Não foi possível iniciar o programa de configuração do navegador."
-msgid "ST_UN server:"
-msgstr "_Servidor ST_UN:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">Exemplo: stunserver.org</span>"
@@ -12504,6 +12640,10 @@ msgstr "Porta _inicial:"
msgid "_End port:"
msgstr "Porta _final:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr "Servidor proxy &amp; navegador"
@@ -12694,12 +12834,12 @@ msgstr "Quando ausente e inativo"
msgid "Auto-away"
msgstr "Auto-ausente"
-msgid "Change status when _idle"
-msgstr "Mudar status após _inatividade"
-
msgid "_Minutes before becoming idle:"
msgstr "_Minutos antes de tornar inativo:"
+msgid "Change status when _idle"
+msgstr "Mudar status após _inatividade"
+
msgid "Change _status to:"
msgstr "Mudar status para:"
@@ -12851,6 +12991,12 @@ msgstr "Sal_var e usar"
msgid "Status for %s"
msgstr "Status de %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
msgid "Custom Smiley"
msgstr "Emoticon personalizado"
@@ -12860,16 +13006,16 @@ msgstr "Mais dados necessários"
msgid "Please provide a shortcut to associate with the smiley."
msgstr "Por favor, defina um atalho para associar com o emoticon."
-msgid "Duplicate Shortcut"
-msgstr "Atalho duplicado"
-
+#, fuzzy, c-format
msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
+"A custom smiley for '%s' already exists. Please use a different shortcut."
msgstr ""
"Um emoticon personalizado para o atalho selecionado já existe. Por favor, "
"forneça um atalho diferente."
+msgid "Duplicate Shortcut"
+msgstr "Atalho duplicado"
+
msgid "Please select an image for the smiley."
msgstr "Por favor, favor selecione uma imagem para o emoticon."
@@ -12879,16 +13025,22 @@ msgstr "Editar Emoticon"
msgid "Add Smiley"
msgstr "Adicionar Emoticon"
-msgid "Smiley _Image"
-msgstr "_Imagem do Emoticon"
+#, fuzzy
+msgid "_Image:"
+msgstr "Ima_gem"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr "Atalhos de Emoticon"
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "Atalho"
msgid "Smiley"
msgstr "Emoticon"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "Atalho"
+
msgid "Custom Smiley Manager"
msgstr "Gerenciador de emoticons personalizados"
@@ -13014,6 +13166,16 @@ msgstr ""
"Falha ao carregar imagem '%s': motivo desconhecido, provavelmente o arquivo "
"de imagem está corrompido"
+#, fuzzy
+msgid "_Open Link"
+msgstr "_Abrir link no:"
+
+msgid "_Copy Link Location"
+msgstr "_Copiar endereço do link"
+
+msgid "_Copy Email Address"
+msgstr "_Copiar endereço de email"
+
msgid "Save File"
msgstr "Salvar arquivo"
@@ -14046,6 +14208,189 @@ msgstr "Envia e recebe comandos (stanzas) do XMPP puros."
msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr "Este plug-in é útil para depurar servidores ou clientes XMPP."
+#~ msgid "Invite message"
+#~ msgstr "Mensagem de convite"
+
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Por favor, digite o nome do usuário que você gostaria de\n"
+#~ " convidar, junto com uma mensagem de convite opcional."
+
+#~ msgid "Looking up %s"
+#~ msgstr "Procurando por %s"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "Conexão para %s falhou"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Conectando: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "Não foi possível escrever arquivo %s."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "Não foi possível ler arquivo %s."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "Mensagem muito extensa, últimos %s bytes truncados."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s não está conectado no momento."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "Alertar %s não é permitido."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr ""
+#~ "Uma mensagem foi descartada, você está excedendo o limite de velocidade "
+#~ "do servidor."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "Bate-papo não disponível em %s."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "Você está mandando mensagens muito rapidamente para %s."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr ""
+#~ "Você perdeu uma mensagem instantânea de %s porque ela era muito extensa."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr ""
+#~ "Você perdeu uma mensagem de mensagem instantânea de %s porque ela foi "
+#~ "enviada muito rapidamente."
+
+#~ msgid "Failure."
+#~ msgstr "Falha."
+
+#~ msgid "Too many matches."
+#~ msgstr "Excesso de resultados."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "Necessários mais qualificadores."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "Serviço de diretório temporariamente indisponível."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "Pesquisa por email restrita."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "Palavra-chave ignorada."
+
+#~ msgid "No keywords."
+#~ msgstr "Nenhuma palavra-chave."
+
+#~ msgid "User has no directory information."
+#~ msgstr "Usuário não tem informação de diretório."
+
+#~ msgid "Country not supported."
+#~ msgstr "País não suportado."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Falha desconhecida: %s."
+
+#~ msgid "Incorrect username or password."
+#~ msgstr "Nome de usuário ou senha incorreto(a)."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "O serviço está temporariamente indisponível."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr ""
+#~ "Seu nível de alerta é alto demais para que você possa se conectar no "
+#~ "momento."
+
+#~ 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 ""
+#~ "Você esteve conectando e desconectando com muita freqüência. Espere dez "
+#~ "minutos e tente novamente. Se você continuar tentando, vai ter que "
+#~ "esperar ainda mais."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "Um erro desconhecido ocorreu ao conectar: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "Um erro desconhecido, %d, ocorreu. Informações: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "Nome de grupo inválido"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Conexão fechada"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "Esperando resposta..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr ""
+#~ "O TOC voltou de sua pausa. Agora você pode mandar mensagens novamente."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "Mudança de senha efetuada com sucesso"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Ver informações de diretório"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Definir informações de diretório"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "Não foi possível abrir %s para escrita!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr ""
+#~ "Transferência de arquivo falhou; o outro lado provavelmente cancelou-a."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "Não foi possível conectar para transferência."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr ""
+#~ "Não foi possível escrever cabeçalho de arquivo. O arquivo não será "
+#~ "transferido."
+
+#~ msgid "Save As..."
+#~ msgstr "Salvar como..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s pede a %s para aceitar %d arquivo: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s pede a %s para aceitar %d arquivos: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s pede a você para enviar um arquivo a ele"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "Plug-in do protocolo TOC"
+
+#~ msgid "%s Options"
+#~ msgstr "Opções de %s"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Opções de proxy"
+
+#~ msgid "By log size"
+#~ msgstr "Por tamanho do histórico"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_Abrir link no navegador"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "_Servidor ST_UN:"
+
+#~ msgid "Smiley _Image"
+#~ msgstr "_Imagem do Emoticon"
+
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "Atalhos de Emoticon"
+
#~ msgid "Unable to retrieve MSN Address Book"
#~ msgstr "Falha ao obter catálogo de endereços do MSN"
diff --git a/po/ro.po b/po/ro.po
index 7b6fb20ccb..d645109544 100644
--- a/po/ro.po
+++ b/po/ro.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pidgin-2.5.3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-01-06 09:58-0500\n"
+"POT-Creation-Date: 2009-04-30 10:40-0400\n"
"PO-Revision-Date: 2009-01-07 00:42+0200\n"
"Last-Translator: Mișu Moldovan <dumol@gnome.ro>\n"
"Language-Team: Romanian <gnomero-list@lists.sourceforge.net>\n"
@@ -26,13 +26,13 @@ msgstr "Finch"
msgid "%s. Try `%s -h' for more information.\n"
msgstr "%s. Încercați „%s -h” pentru mai multe informații.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -610,19 +610,6 @@ msgstr ""
msgid "Send To"
msgstr "Trimite către"
-msgid "Invite message"
-msgstr "Mesaj de invitare"
-
-msgid "Invite"
-msgstr "Invită"
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Introduceți numele utilizatorului pe care doriți să-l invitați.\n"
-"Puteți adăuga un mesaj de invitare opțional."
-
msgid "Conversation"
msgstr "Discuție"
@@ -884,6 +871,41 @@ msgstr "Toate discuțiile"
msgid "System Log"
msgstr "Înregistrări de sistem"
+#, fuzzy
+msgid "Calling ... "
+msgstr "Se calculează..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "Acceptare"
+
+msgid "Reject"
+msgstr "Respingere"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "Ați părăsit chat-ul%s%s"
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "Mailuri"
@@ -919,6 +941,9 @@ msgstr "Continuă"
msgid "IM"
msgstr "Mesaj"
+msgid "Invite"
+msgstr "Invită"
+
msgid "(none)"
msgstr "(nimic)"
@@ -1167,7 +1192,6 @@ msgstr "Minute înaintea schimbării statusului:"
msgid "Change status to"
msgstr "Schimbă statusul în:"
-#. Conversations
msgid "Conversations"
msgstr "Discuții"
@@ -1533,6 +1557,28 @@ msgstr "GntLastLog"
msgid "Lastlog plugin."
msgstr "Modul Lastlog."
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL piesă curentă"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "conturi"
@@ -1633,13 +1679,6 @@ msgstr "Acceptați certificatul pentru %s?"
msgid "SSL Certificate Verification"
msgstr "Verificare certificat SSL"
-#. Number of actions
-msgid "Accept"
-msgstr "Acceptare"
-
-msgid "Reject"
-msgstr "Respingere"
-
msgid "_View Certificate..."
msgstr "_Vizualizare certificat..."
@@ -1789,6 +1828,18 @@ msgstr "%s a ieșit din chat."
msgid "%s left the room (%s)."
msgstr "%s a ieșit din chat (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Invită într-o conferință"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Introduceți numele utilizatorului pe care doriți să-l invitați. Puteți "
+"adăuga un mesaj de invitare opțional."
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "Conectare eșuată: %s"
@@ -1833,6 +1884,7 @@ msgstr ""
"Eroare la citirea de la procesul „resolver”:\n"
"%s"
+#, c-format
msgid "Resolver process exited without answering our request"
msgstr "Rezoluția de nume s-a terminat fără a se răspunde cererii"
@@ -2632,6 +2684,32 @@ msgstr "Salvează mesajele offline într-o întâmpinare"
msgid "Do not ask. Always save in pounce."
msgstr "Nu întreba. Salvează într-o întâmpinare întotdeauna."
+#, fuzzy
+msgid "One Time Password"
+msgstr "Introduceți parola"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2838,7 +2916,6 @@ msgid ""
"Unable to establish connection with the local mDNS server. Is it running?"
msgstr "Nu se poate deschide o conexiune cu serverul local mDNS. E pornit?"
-#. Creating the options for the protocol
msgid "First name"
msgstr "Prenume"
@@ -2870,6 +2947,11 @@ msgstr "Modul de protocol Bonjour"
msgid "Purple Person"
msgstr "Persoană Purple"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "Localitate"
+
msgid "Bonjour"
msgstr "Bonjour"
@@ -3026,6 +3108,7 @@ msgstr "Selectați un chat pentru contactul: %s"
msgid "Add to chat..."
msgstr "Adăugare în chat..."
+#. Global
msgid "Available"
msgstr "Disponibil"
@@ -3372,6 +3455,17 @@ msgstr ""
"Numele de cont ales a fost respins de către server. Probabil conține "
"caractere invalide."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "Există deja un chat cu acest nume"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Pseudonim"
+
msgid "Cannot change nick"
msgstr "Nu se reușește schimbarea pseudonimului"
@@ -3648,6 +3742,41 @@ msgstr "Cerere invalidă de la server"
msgid "SASL error"
msgstr "Eroare SASL"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "Fără motiv."
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Versiune nesuportată"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"Nu s-a putut face o conexiune cu serverul:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"Nu s-a putut face o conexiune cu serverul:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "Nu se poate inițializa o nouă conexiune"
+
+msgid "Unable to create socket"
+msgstr "Nu se poate crea un socket"
+
+msgid "Write error"
+msgstr "Eroare la scriere"
+
msgid "Full Name"
msgstr "Nume complet"
@@ -3714,6 +3843,10 @@ msgstr "Client"
msgid "Operating System"
msgstr "Sistem de operare"
+#, fuzzy
+msgid "Local Time"
+msgstr "Fișier local:"
+
msgid "Last Activity"
msgstr "Ultima activitate"
@@ -4056,9 +4189,6 @@ msgstr "Caută camere de chat"
msgid "You require encryption, but it is not available on this server."
msgstr "Ați cerut criptare, dar serverul nu suportă criptare"
-msgid "Write error"
-msgstr "Eroare la scriere"
-
msgid "Ping timeout"
msgstr "Expirare ping"
@@ -4067,14 +4197,9 @@ msgstr "Eroare la citire"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"Nu s-a putut face o conexiune cu serverul:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "Nu se poate crea un socket"
msgid "Invalid XMPP ID"
msgstr "ID XMPP invalid"
@@ -4082,6 +4207,10 @@ msgstr "ID XMPP invalid"
msgid "Invalid XMPP ID. Domain must be set."
msgstr "ID XMPP invalid. Trebuie precizat domeniul."
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Conectarea la server a eșuat."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "Înregistrarea %s@%s a reușit"
@@ -4173,6 +4302,12 @@ msgstr "Serverul nu permite blocarea"
msgid "Not Authorized"
msgstr "Neautorizat"
+msgid "Mood"
+msgstr "Dispoziție"
+
+msgid "Now Listening"
+msgstr "Acum în audiție"
+
msgid "Both"
msgstr "Ambele"
@@ -4194,12 +4329,6 @@ msgstr "Fără"
msgid "Subscription"
msgstr "Subscriere"
-msgid "Mood"
-msgstr "Dispoziție"
-
-msgid "Now Listening"
-msgstr "Acum în audiție"
-
msgid "Mood Text"
msgstr "Text dispoziție"
@@ -4437,22 +4566,28 @@ msgstr "Nu se poate da afară utilizatorul %s"
msgid "Unable to ping user %s"
msgstr "Nu se poate da „ping” către utilizatorul %s"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr ""
"Nu se poate da „buzz” pentru că nu se știe nimic despre utilizatorul %s."
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr ""
"Nu se poate da „buzz” pentru că utilizatorul %s ar putea fi deconectat."
-#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+#, fuzzy, c-format
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr ""
"Nu se poate da „buzz” pentru că aplicația utilizatorului „%s” nu suportă "
"acest lucru."
+#, c-format
+msgid "Buzzing %s..."
+msgstr "„Buzz” la %s..."
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
msgid "Buzz"
@@ -4462,9 +4597,35 @@ msgstr "Buzz!"
msgid "%s has buzzed you!"
msgstr "%s v-a dat „buzz”!"
-#, c-format
-msgid "Buzzing %s..."
-msgstr "„Buzz” la %s..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "Nu se poate trimite fișierul către %s, JID invalid"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "Nu se poate trimite fișierul către %s, contactul nu este conectat"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr "Nu se poate trimite fișierul către %s, nu e subscris pentru prezență"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "Înregistrare eșuată"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr ""
+"Precizați cărei resurse a contactului %s doriți să-i trimiteți fișierul"
+
+msgid "Select a Resource"
+msgstr "Selectați o resursă"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "Inițiază o _discuție"
msgid "config: Configure a chat room."
msgstr "config: Configurați o cameră de chat."
@@ -4620,6 +4781,21 @@ msgstr "Eroare la intrarea în camera de chat %s"
msgid "Error in chat %s"
msgstr "Eroare în camera de chat %s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "A apărut o eroare la deschiderea fișierului."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "Transferul fișierului a eșuat"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Nu s-a putut deschide fișierul „%s”: %s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4645,9 +4821,6 @@ msgid "Please select the resource of %s to which you would like to send a file"
msgstr ""
"Precizați cărei resurse a contactului %s doriți să-i trimiteți fișierul"
-msgid "Select a Resource"
-msgstr "Selectați o resursă"
-
msgid "Edit User Mood"
msgstr "Editare dispoziție utilizator"
@@ -4682,9 +4855,6 @@ msgstr "Acțiune"
msgid "Select an action"
msgstr "Selectați o acțiune"
-msgid "Unable to retrieve MSN Address Book"
-msgstr "Nu s-a putut descărca cartea de adrese MSN"
-
#. only notify the user about problems adding to the friends list
#. * maybe we should do something else for other lists, but it probably
#. * won't cause too many problems if we just ignore it
@@ -4718,165 +4888,218 @@ msgstr ""
"%s este în lista contactelor, dar nu și în lista de pe server. Doriți să "
"adăugați acest contact?"
+#, c-format
msgid "Unable to parse message"
msgstr "Nu se poate prelucra mesajul"
+#, c-format
msgid "Syntax Error (probably a client bug)"
msgstr "Eroare de sintaxă (probabil o eroare de client)"
+#, c-format
msgid "Invalid email address"
msgstr "Adresă de mail invalidă"
+#, c-format
msgid "User does not exist"
msgstr "Utilizator inexistent"
+#, c-format
msgid "Fully qualified domain name missing"
msgstr "Lipsește numele complet al domeniului"
+#, c-format
msgid "Already logged in"
msgstr "Deja autentificat"
+#, c-format
msgid "Invalid username"
msgstr "Nume invalid de utilizator"
+#, c-format
msgid "Invalid friendly name"
msgstr "Pseudonimul propriu este invalid"
+#, c-format
msgid "List full"
msgstr "Listă plină"
+#, c-format
msgid "Already there"
msgstr "Există deja"
+#, c-format
msgid "Not on list"
msgstr "Nu este în listă"
+#, c-format
msgid "User is offline"
msgstr "Utilizatorul este deconectat"
+#, c-format
msgid "Already in the mode"
msgstr "Sunteți deja în respectiva stare"
+#, c-format
msgid "Already in opposite list"
msgstr "Există deja în cealaltă listă"
+#, c-format
msgid "Too many groups"
msgstr "Prea multe grupuri"
+#, c-format
msgid "Invalid group"
msgstr "Grup invalid"
+#, c-format
msgid "User not in group"
msgstr "Utilizatorul nu este în grup"
+#, c-format
msgid "Group name too long"
msgstr "Nume de grup prea lung"
+#, c-format
msgid "Cannot remove group zero"
msgstr "Nu se poate șterge grupul zero"
+#, c-format
msgid "Tried to add a user to a group that doesn't exist"
msgstr "S-a încercat adăugarea unui contact într-un grup inexistent"
+#, c-format
msgid "Switchboard failed"
msgstr "Comutare eșuată"
+#, c-format
msgid "Notify transfer failed"
msgstr "Notificarea transferului a eșuat"
+#, c-format
msgid "Required fields missing"
msgstr "Lipsesc unele câmpuri cerute"
+#, c-format
msgid "Too many hits to a FND"
msgstr "Prea multe solicitări către FND"
+#, c-format
msgid "Not logged in"
msgstr "Neautentificat"
+#, c-format
msgid "Service temporarily unavailable"
msgstr "Serviciu temporar indisponibil"
+#, c-format
msgid "Database server error"
msgstr "Eroare a serverului bazei de date"
+#, c-format
msgid "Command disabled"
msgstr "Comandă dezactivată"
+#, c-format
msgid "File operation error"
msgstr "Eroare la manipularea fișierului"
+#, c-format
msgid "Memory allocation error"
msgstr "Eroare la alocarea memoriei"
+#, c-format
msgid "Wrong CHL value sent to server"
msgstr "O valoare CHL greșită a fost trimisă către server"
+#, c-format
msgid "Server busy"
msgstr "Server ocupat"
+#, c-format
msgid "Server unavailable"
msgstr "Server indisponibil"
+#, c-format
msgid "Peer notification server down"
msgstr "Serverul de notificare a contactelor este indisponibil"
+#, c-format
msgid "Database connect error"
msgstr "Eroare la conectarea la baza de date"
+#, c-format
msgid "Server is going down (abandon ship)"
msgstr "Serverul va fi în curând indisponibil"
+#, c-format
msgid "Error creating connection"
msgstr "Eroare la stabilirea conexiunii"
+#, c-format
msgid "CVR parameters are either unknown or not allowed"
msgstr "Parametrii CVR sunt necunoscuți sau nu sunt permiși"
+#, c-format
msgid "Unable to write"
msgstr "Nu se poate scrie"
+#, c-format
msgid "Session overload"
msgstr "Sesiune supraîncărcată"
+#, c-format
msgid "User is too active"
msgstr "Utilizatorul este prea activ"
+#, c-format
msgid "Too many sessions"
msgstr "Prea multe sesiuni"
+#, c-format
msgid "Passport not verified"
msgstr "Cont „Passport” neverificat"
+#, c-format
msgid "Bad friend file"
msgstr "Fișier invalid"
+#, c-format
msgid "Not expected"
msgstr "Neașteptat"
+#, c-format
msgid "Friendly name changes too rapidly"
msgstr "Pseudonimul a fost schimbat prea rapid"
+#, c-format
msgid "Server too busy"
msgstr "Server prea încărcat"
+#, c-format
msgid "Authentication failed"
msgstr "Autentificare eșuată"
+#, c-format
msgid "Not allowed when offline"
msgstr "Permis doar la autentificare"
+#, c-format
msgid "Not accepting new users"
msgstr "Nu acceptă utilizatori noi"
+#, c-format
msgid "Kids Passport without parental consent"
msgstr "Cont „Kids Passport” fără aprobare de la părinți"
+#, c-format
msgid "Passport account not yet verified"
msgstr "Cont „Passport” neverificat încă"
msgid "Passport account suspended"
msgstr "Cont „Passport” suspendat"
+#, c-format
msgid "Bad ticket"
msgstr "Bilet (ticket) greșit"
@@ -5647,7 +5870,6 @@ msgstr ""
msgid "Show headline in status text"
msgstr ""
-#, fuzzy
msgid "Send emoticons"
msgstr ""
@@ -6421,7 +6643,7 @@ msgstr ""
"validă sau să înceapă cu o literă și să conțină doar litere, numere și "
"spații sau să conțină doar numere."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr "Nume invalid de utilizator"
@@ -6437,7 +6659,7 @@ msgstr "Contul dumneavoastră este momentan suspendat."
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "Serviciul de mesagerie instant AOL este temporar indisponibil."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6473,8 +6695,9 @@ msgstr "_OK"
#, c-format
msgid "You may be disconnected shortly. If so, check %s for updates."
-msgstr "S-ar putea să intervină în scurt timp deconectarea de la server. "
-"Dacă se întâmplă, vizitați %s pentru actualizări."
+msgstr ""
+"S-ar putea să intervină în scurt timp deconectarea de la server. Dacă se "
+"întâmplă, vizitați %s pentru actualizări."
msgid "Unable to get a valid AIM login hash."
msgstr "Nu s-a putut obține un hash valid pentru autentificarea AIM."
@@ -6639,7 +6862,7 @@ msgstr[0] "Ați pierdut %hu mesaj de la %s din motive necunoscute."
msgstr[1] "Ați pierdut %hu mesaje de la %s din motive necunoscute."
msgstr[2] "Ați pierdut %hu de mesaje de la %s din motive necunoscute."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "Mesajul nu poate fi trimis: %s"
@@ -6961,6 +7184,7 @@ msgstr "C_onectare"
msgid "Get AIM Info"
msgstr "Detalii AIM"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "Editare comentariu"
@@ -7239,6 +7463,38 @@ msgstr "Actualizare"
msgid "Could not change buddy information."
msgstr "Nu s-ar putut schimbat datele contactului."
+msgid "Mobile"
+msgstr "Mobil"
+
+msgid "Note"
+msgstr "Notă"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "Avatar"
+
+msgid "Change his/her memo as you like"
+msgstr ""
+
+#, fuzzy
+msgid "_Modify"
+msgstr "Modificare"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "Modificare"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "Server ocupat"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
#, c-format
msgid "%u requires verification"
msgstr "%u solicită autorizare"
@@ -7581,6 +7837,13 @@ msgstr "<b>Contribuții de tip patch:</b> %s<br>\n"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<p><b>Mulțumiri</b>:<br>\n"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<p><b>Prim autor</b>:<br>\n"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr "<p><i>Și pentru toți băieții din ultimele rânduri...</i><br>\n"
@@ -7609,6 +7872,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "Despre %s"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Editare adresă"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7652,6 +7919,9 @@ msgstr "Port server"
msgid "Show server news"
msgstr "Adresă server"
+msgid "Show chat room when msg comes"
+msgstr ""
+
#, fuzzy
msgid "Keep alive interval (seconds)"
msgstr "Eroare „keep alive”"
@@ -7729,7 +7999,6 @@ msgid ""
"%s"
msgstr ""
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "Nu se poate deschide o conexiune."
@@ -8420,6 +8689,7 @@ msgstr "<br><b>Chat HMAC:</b> %s"
msgid "<br><b>Channel Topic:</b><br>%s"
msgstr "<br><b>Topic chat:</b><br>%s"
+#, c-format
msgid "<br><b>Channel Modes:</b> "
msgstr "<br><b>Moduri chat:</b> "
@@ -8444,6 +8714,7 @@ msgstr "Frază secretă pentru chat"
msgid "Channel Public Keys List"
msgstr "Listă chei publice chat"
+#, c-format
msgid ""
"Channel authentication is used to secure the channel from unauthorized "
"access. The authentication may be based on passphrase and digital "
@@ -8633,9 +8904,6 @@ msgstr "Organizație"
msgid "Unit"
msgstr "Unitate"
-msgid "Note"
-msgstr "Notă"
-
msgid "Join Chat"
msgstr "Intră într-un chat"
@@ -8843,6 +9111,7 @@ msgstr "Descărcare %s: %s"
msgid "Your Current Mood"
msgstr "Propria dispoziție"
+#, c-format
msgid "Normal"
msgstr "Normal"
@@ -9227,36 +9496,46 @@ msgstr "„Whiteboard”"
msgid "No server statistics available"
msgstr "Nici o statistică nu e disponibilă pentru server"
+#, c-format
msgid "Failure: Version mismatch, upgrade your client"
msgstr ""
"Eroare: Nepotrivire de versiune, încercați o versiune mai nouă de client"
+#, c-format
msgid "Failure: Remote does not trust/support your public key"
msgstr ""
"Eroare: Partenerul nu vă suportă tipul de cheie publică sau nu are încredere "
"în ea."
+#, c-format
msgid "Failure: Remote does not support proposed KE group"
msgstr "Eroare: Partenerul nu suportă grupul KE propus"
+#, c-format
msgid "Failure: Remote does not support proposed cipher"
msgstr "Eroare: Partenerul nu suportă cifrul propus"
+#, c-format
msgid "Failure: Remote does not support proposed PKCS"
msgstr "Eroare: Partenerul nu suport PKCS-ul propus"
+#, c-format
msgid "Failure: Remote does not support proposed hash function"
msgstr "Eroare: Partenerul nu suportă funcția hash propusă"
+#, c-format
msgid "Failure: Remote does not support proposed HMAC"
msgstr "Eroare: Partenerul nu suporta HMAC-ul propus"
+#, c-format
msgid "Failure: Incorrect signature"
msgstr "Eroare: Semnătură incorectă"
+#, c-format
msgid "Failure: Invalid cookie"
msgstr "Eroare: Cookie invalid"
+#, c-format
msgid "Failure: Authentication failed"
msgstr "Eroare: Autentificare eșuată"
@@ -9325,185 +9604,14 @@ msgid "Auth Domain"
msgstr "Autentificare domeniu"
#, c-format
-msgid "Looking up %s"
-msgstr "Caut %s"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Conectarea la %s a eșuat"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Autentificare: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "Nu se poate scrie fișierul %s."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "Nu se poate citi fișierul %s."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "Mesaj prea lung, ultimii %s octeți au fost trunchiați."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s nu este autentificat momentan."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "Atenționarea lui %s nu este permisă."
-
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "Un mesaj s-a pierdut, ați depășit limita de viteză fixată de server."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "Chat-ul în %s nu este disponibil."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "Trimiteți mesajele prea rapid pentru %s."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "Ați pierdut un mesaj de la %s pentru că era prea mare."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "Ați pierdut un mesaj de la %s pentru că a fost trimis prea repede."
-
-msgid "Failure."
-msgstr "Eșec."
-
-msgid "Too many matches."
-msgstr "Prea multe potriviri."
-
-msgid "Need more qualifiers."
-msgstr "E nevoie de mai multe atribute."
-
-msgid "Dir service temporarily unavailable."
-msgstr "Serviciul „Dir” este temporar indisponibil."
-
-msgid "Email lookup restricted."
-msgstr "Căutarea după adresa de mail este restricționată."
-
-msgid "Keyword ignored."
-msgstr "Cuvântul-cheie a fost ignorat."
-
-msgid "No keywords."
-msgstr "Fără cuvinte-cheie."
-
-msgid "User has no directory information."
-msgstr "Nu există informații detaliate în director."
-
-msgid "Country not supported."
-msgstr "Nu există suport de țară."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Eșec necunoscut: %s."
-
-msgid "Incorrect username or password."
-msgstr "Nume de utilizator sau parolă incorecte."
-
-msgid "The service is temporarily unavailable."
-msgstr "Serviciul este temporar indisponibil."
-
-msgid "Your warning level is currently too high to log in."
-msgstr ""
-"Nivelul propriu de avertizare este prea ridicat pentru a vă putea "
-"autentifica."
-
-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 ""
-"V-ați conectat și deconectat de prea multe ori. Așteptați zece minute și "
-"încercați din nou. Dacă veți continua să încercați, va trebui să așteptați "
-"chiar mai mult."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "Eroare necunoscută la autentificare: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "Eroare necunoscută: %d. Detalii: %s"
-
-msgid "Invalid Groupname"
-msgstr "Grup invalid"
-
-msgid "Connection Closed"
-msgstr "Conectare terminată"
-
-msgid "Waiting for reply..."
-msgstr "Aștept răspunsul..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "TOC a revenit din așteptare. Puteți trimite mesaje din nou."
-
-msgid "Password Change Successful"
-msgstr "Parola a fost schimbată cu succes"
-
-msgid "_Group:"
-msgstr "_Grup:"
-
-msgid "Get Dir Info"
-msgstr "Descărcare detalii „Dir”"
-
-msgid "Set Dir Info"
-msgstr "Introducere detalii „Dir”"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "Nu s-a putut deschide %s pentru scriere!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr ""
-"Transferul fișierului a eșuat, celălalt utilizator probabil l-a anulat."
-
-msgid "Could not connect for transfer."
-msgstr "Conectarea pentru transfer a eșuat."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "Nu s-a putut scrie antetul fișierului. Fișierul nu va fi transferat."
-
-msgid "Save As..."
-msgstr "Salvare ca..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s cere lui %s să accepte %d fișier: %s (%.2f %s)%s%s"
-msgstr[1] "%s cere lui %s să accepte %d fișiere: %s (%.2f %s)%s%s"
-msgstr[2] "%s cere lui %s să accepte %d de fișiere: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s vă cere să-i trimiteți un fișier"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "Modul de protocol TOC"
-
-#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
"%s v-a trimis o invitație de a-i vedea webcam-ul, invitație ce nu este încă "
"suportată"
+msgid "Your SMS was not delivered"
+msgstr ""
+
msgid "Your Yahoo! message did not get sent."
msgstr "Mesajul dumneavoastră Yahoo! nu a fost trimis."
@@ -10108,9 +10216,6 @@ msgstr "Nu deranjați"
msgid "Extended away"
msgstr "Absență prelungită"
-msgid "Mobile"
-msgstr "Mobil"
-
msgid "Listening to music"
msgstr "Audiție muzicală"
@@ -10152,18 +10257,6 @@ msgstr "+++ %s a revenit din inactivitate"
msgid "%x %X"
msgstr "%x la %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "Eroare la citirea %s"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"A apărut o eroare la citirea fișierului %s. Încărcarea datelor a eșuat și "
-"vechiul fișier a fost redenumit „%s~”."
-
msgid "Calculating..."
msgstr "Se calculează..."
@@ -10245,6 +10338,14 @@ msgstr "Eroare la scrierea %s: %s"
msgid "Unable to connect to %s: %s"
msgstr "Nu s-a reușit conectarea la %s: %s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+"Serverul necesită TLS/SSL pentru autentificare. Nu s-a găsit nici un fel de "
+"suport TLS/SSL."
+
#, c-format
msgid " - %s"
msgstr " - %s"
@@ -10254,25 +10355,42 @@ msgid " (%s)"
msgstr " (%s)"
#. 10053
+#, c-format
msgid "Connection interrupted by other software on your computer."
msgstr "Conexiunea a fost întreruptă de un alt program pornit."
#. 10054
+#, c-format
msgid "Remote host closed connection."
msgstr "Conexiunea a fost închisă la distanță."
#. 10060
+#, c-format
msgid "Connection timed out."
msgstr "Conexiunea a expirat."
#. 10061
+#, c-format
msgid "Connection refused."
msgstr "Conexiune resetată."
#. 10048
+#, c-format
msgid "Address already in use."
msgstr "Adresa este deja utilizată."
+#, c-format
+msgid "Error Reading %s"
+msgstr "Eroare la citirea %s"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"A apărut o eroare la citirea fișierului %s. Încărcarea datelor a eșuat și "
+"vechiul fișier a fost redenumit „%s~”."
+
msgid "Internet Messenger"
msgstr "Mesagerie instant"
@@ -10315,10 +10433,8 @@ msgstr "Notificare la _mail nou"
msgid "Use this buddy _icon for this account:"
msgstr "Utilizează această _iconiță pentru acest cont:"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "Opțiuni %s"
+msgid "_Advanced"
+msgstr "_Avansat"
msgid "Use GNOME Proxy Settings"
msgstr "Utilizează opțiunile GNOME"
@@ -10353,9 +10469,6 @@ msgstr "Dacă vă uitați cu atenție"
msgid "you can see the butterflies mating"
msgstr "veți puteți vedea cum se scurg secundele..."
-msgid "Proxy Options"
-msgstr "Opțiuni proxy"
-
msgid "Proxy _type:"
msgstr "_Tip proxy:"
@@ -10383,8 +10496,9 @@ msgstr "S_tandard"
msgid "Create _this new account on the server"
msgstr "Creează acest _nou cont pe server"
-msgid "_Advanced"
-msgstr "_Avansat"
+#, fuzzy
+msgid "_Proxy"
+msgstr "Proxy"
msgid "Enabled"
msgstr "Activare"
@@ -10461,6 +10575,17 @@ msgstr "_Detalii"
msgid "I_M"
msgstr "_Mesaj"
+#, fuzzy
+msgid "_Audio Call"
+msgstr "_Adaugă un chat"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Videochat"
+
msgid "_Send File..."
msgstr "_Trimitere fișier..."
@@ -10597,6 +10722,10 @@ msgstr "/Unelte/Î_ntâmpinări contacte"
msgid "/Tools/_Certificates"
msgstr "/Unelte/_Certificate"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Unelte/_Iconițe simbolice"
+
msgid "/Tools/Plu_gins"
msgstr "/Unelte/_Module"
@@ -10606,9 +10735,6 @@ msgstr "/Unelte/_Preferințe"
msgid "/Tools/Pr_ivacy"
msgstr "/Unelte/S_ecuritate"
-msgid "/Tools/Smile_y"
-msgstr "/Unelte/_Iconițe simbolice"
-
msgid "/Tools/_File Transfers"
msgstr "/Unelte/_Transfer de fișiere"
@@ -10727,8 +10853,8 @@ msgstr "Manual"
msgid "By status"
msgstr "După status"
-msgid "By log size"
-msgstr "După mărimea înregistrărilor"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10744,6 +10870,9 @@ msgstr "Reconectare"
msgid "Re-enable"
msgstr "Reactivare"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr "Bine ați revenit!"
@@ -10836,6 +10965,9 @@ msgstr ""
msgid "A_lias:"
msgstr "A_lias:"
+msgid "_Group:"
+msgstr "_Grup:"
+
msgid "Auto_join when account becomes online."
msgstr "Intră a_utomat când contul e online."
@@ -10888,14 +11020,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr "Invită contactul în camera de chat"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Introduceți numele utilizatorului pe care doriți să-l invitați. Puteți "
-"adăuga un mesaj de invitare opțional."
-
msgid "_Buddy:"
msgstr "_Contact:"
@@ -10970,6 +11094,22 @@ msgstr "/Discuție/_Salvează ca..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Discuție/G_olește fereastra"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Discuție/Mai m_ult"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Discuție/Mai m_ult"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Discuție/Mai m_ult"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Discuție/Arată în_registrările"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Discuție/_Trimite un fișier..."
@@ -11042,6 +11182,18 @@ msgstr "/Discuție"
msgid "/Conversation/View Log"
msgstr "/Discuție/Arată înregistrările"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Discuție/Mai mult"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Discuție/Arată înregistrările"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Discuție/Mai mult"
+
msgid "/Conversation/Send File..."
msgstr "/Discuție/Trimite un fișier..."
@@ -11225,6 +11377,9 @@ msgstr "artist"
msgid "Ka-Hing Cheung"
msgstr "Ka-Hing Cheung"
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "suport"
@@ -11364,6 +11519,10 @@ msgstr "Georgiană"
msgid "Ubuntu Georgian Translators"
msgstr "Traducătorii Ubuntu din Georgia"
+#, fuzzy
+msgid "Khmer"
+msgstr "Altceva"
+
msgid "Kannada"
msgstr "Kannada"
@@ -11385,6 +11544,10 @@ msgstr "Lituaniană"
msgid "Macedonian"
msgstr "Macedoneană"
+#, fuzzy
+msgid "Mongolian"
+msgstr "Macedoneană"
+
msgid "Bokmål Norwegian"
msgstr "Norvegiană Bokmål"
@@ -11498,7 +11661,25 @@ msgstr ""
"„COPYRIGHT” pentru o listă completă a celor ce au contribuit. Nu se oferă "
"nici un fel de garanție pentru acest program.<BR><BR>"
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, fuzzy, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin pe irc.freenode.net<BR><BR>"
+
+#, fuzzy, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin pe irc.freenode.net<BR><BR>"
msgid "Current Developers"
@@ -11809,15 +11990,6 @@ msgstr "Font de utilizat pentru mesajele de notificare"
msgid "Enable typing notification"
msgstr "Activează mesajele de notificare"
-msgid "_Copy Email Address"
-msgstr "C_opiază adresa de mail"
-
-msgid "_Open Link in Browser"
-msgstr "_Deschide adresa în navigator"
-
-msgid "_Copy Link Location"
-msgstr "_Copiază adresa"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -11859,9 +12031,11 @@ msgstr ""
msgid "Save Image"
msgstr "Salvează imaginea"
+#, c-format
msgid "_Save Image..."
msgstr "_Salvează imaginea..."
+#, c-format
msgid "_Add Custom Smiley..."
msgstr "_Adaugă iconiță simbolică..."
@@ -12063,13 +12237,14 @@ msgstr "_Navigare director înregistrări"
msgid "%s %s. Try `%s -h' for more information.\n"
msgstr "%s %s. Încercați „%s -h” pentru mai multe informații.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12093,13 +12268,14 @@ msgstr ""
" --display=ECRAN ecran X de utilizat\n"
" -v, --version arată versiunea curentă\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12155,11 +12331,27 @@ msgstr ""
msgid "Pidgin"
msgstr "Pidgin"
-msgid "Open All Messages"
-msgstr "Deschide toate mesajele"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Aveți mail nou!</span>"
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "Se calculează..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -12192,6 +12384,27 @@ msgstr ""
"Ați ales să precizați o comandă pentru deschiderea unui navigator, dar nu "
"ați introdus-o în preferințe."
+msgid "Open All Messages"
+msgstr "Deschide toate mesajele"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Aveți mail nou!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "Întâmpinare nouă"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Aveți mail nou!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "Mesaj necunoscut"
+
msgid "The following plugins will be unloaded."
msgstr "Următoarele module vor fi dezactivate."
@@ -12240,6 +12453,10 @@ msgstr "<b>Detalii modul</b>"
msgid "Select a file"
msgstr "Selectați un fișier"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Editare întâmpinare"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "Întâmpinare pentru"
@@ -12310,6 +12527,50 @@ msgstr "Re_curentă"
msgid "Pounce Target"
msgstr "Țintă întâmpinare"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "Tastarea unui mesaj nou"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "Pauză în timpul tastării"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "Autentificare"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s s-a întors din inactivitate (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "Întoarcerea din absență"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "M-am oprit din scris"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "Deconectare"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "Intrarea în inactivitate"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "În absență"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Trimite un mesaj"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "Eveniment necunoscut în întâmpinare. Raportați această eroare."
+
msgid "Smiley theme failed to unpack."
msgstr "Tema de iconițe simbolice nu a putut fi dezarhivată."
@@ -12333,6 +12594,12 @@ msgstr "Combinații de taste"
msgid "Cl_ose conversations with the Escape key"
msgstr "Închide _fereastra de discuții cu tasta Esc"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Listă de contacte"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "Iconiță în zona de notificare"
@@ -12443,9 +12710,6 @@ msgstr "Nu s-a putut porni programul de configurare a unui proxy."
msgid "Cannot start browser configuration program."
msgstr "Nu s-a putut porni programul de configurare a unui navigator."
-msgid "ST_UN server:"
-msgstr "Server ST_UN:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">Exemplu: stunserver.org</span>"
@@ -12470,6 +12734,10 @@ msgstr "_De la:"
msgid "_End port:"
msgstr "_Până la:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr "Server proxy &amp; navigator"
@@ -12498,6 +12766,10 @@ msgstr "Server proxy"
msgid "No proxy"
msgstr "Fără proxy"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "Utili_zator:"
@@ -12578,21 +12850,27 @@ msgstr "Înregistrează toate schimbările de _status în înregistrările de si
msgid "Sound Selection"
msgstr "Selectați un sunet"
+#, c-format
msgid "Quietest"
msgstr "Foarte încet"
+#, c-format
msgid "Quieter"
msgstr "Mai încet"
+#, c-format
msgid "Quiet"
msgstr "Încet"
+#, c-format
msgid "Loud"
msgstr "Tare"
+#, c-format
msgid "Louder"
msgstr "Mai tare"
+#, c-format
msgid "Loudest"
msgstr "Foarte tare"
@@ -12650,12 +12928,12 @@ msgstr "În absență și inactivitate"
msgid "Auto-away"
msgstr "Absențe automate"
-msgid "Change status when _idle"
-msgstr "Schimbă statusul în _inactivitate"
-
msgid "_Minutes before becoming idle:"
msgstr "_Minute înaintea intrării în inactivitate:"
+msgid "Change status when _idle"
+msgstr "Schimbă statusul în _inactivitate"
+
msgid "Change _status to:"
msgstr "Schimbă _statusul în:"
@@ -12803,6 +13081,12 @@ msgstr "Sal_vează și utilizează"
msgid "Status for %s"
msgstr "Status pentru %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
msgid "Custom Smiley"
msgstr "Iconiță simbolică personalizată"
@@ -12812,16 +13096,16 @@ msgstr "E nevoie de mai multe date"
msgid "Please provide a shortcut to associate with the smiley."
msgstr "Alegeți o combinație de semne de asociat acestei iconițe."
-msgid "Duplicate Shortcut"
-msgstr "Combinație duplicată de semne"
-
+#, fuzzy, c-format
msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
+"A custom smiley for '%s' already exists. Please use a different shortcut."
msgstr ""
"O iconiță simbolică personalizată există deja pentru combinația de semne "
"selectată. Alegeți o altă combinație de semne."
+msgid "Duplicate Shortcut"
+msgstr "Combinație duplicată de semne"
+
msgid "Please select an image for the smiley."
msgstr "Selectați o imagine pentru această iconiță."
@@ -12831,16 +13115,22 @@ msgstr "Editare iconiță simbolică"
msgid "Add Smiley"
msgstr "Adăugare iconiță simbolică"
-msgid "Smiley _Image"
-msgstr "_Imagine iconiță simbolică"
+#, fuzzy
+msgid "_Image:"
+msgstr "_Imagine"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr "Combinație de _taste asociată"
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "Combinație de semne"
msgid "Smiley"
msgstr "Iconiță simbolice"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "Combinație de semne"
+
msgid "Custom Smiley Manager"
msgstr "Administrator de iconițe personalizate"
@@ -12966,6 +13256,16 @@ msgstr ""
"Dintr-un motiv necunoscut nu s-a putut încărca imaginea „%s”, probabil este "
"un fișier imagine corupt"
+#, fuzzy
+msgid "_Open Link"
+msgstr "_Deschide adresa:"
+
+msgid "_Copy Link Location"
+msgstr "_Copiază adresa"
+
+msgid "_Copy Email Address"
+msgstr "C_opiază adresa de mail"
+
msgid "Save File"
msgstr "Salvare fișier"
@@ -13590,6 +13890,7 @@ msgstr "Dialog notificare"
msgid "Select Color"
msgstr "Alegeți o culoare"
+#, c-format
msgid "Select Interface Font"
msgstr "Alegeți fontul interfeței"
@@ -13810,6 +14111,7 @@ msgstr "Adaugă marcaje de timp în stil iChat la fiecare N minute."
msgid "Timestamp Format Options"
msgstr "Opțiuni de formatare a marcajelor de timp"
+#, c-format
msgid "_Force 24-hour time format"
msgstr "_Marcaje de timp tip „24 de ore”"
@@ -13929,9 +14231,6 @@ msgstr "_Păstrează fereastra listei de contacte deasupra:"
msgid "Only when docked"
msgstr "Doar când e atașată"
-msgid "_Flash window when chat messages are received"
-msgstr "_Evidențiază fereastra la primirea de mesaje noi"
-
msgid "Windows Pidgin Options"
msgstr "Opțiuni Pidgin în Windows"
@@ -13982,6 +14281,190 @@ msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr ""
"Acest modul poate fi utilizat pentru depanarea serverelor și clienților XMPP."
+#~ msgid "Invite message"
+#~ msgstr "Mesaj de invitare"
+
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Introduceți numele utilizatorului pe care doriți să-l invitați.\n"
+#~ "Puteți adăuga un mesaj de invitare opțional."
+
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "Nu s-a putut descărca cartea de adrese MSN"
+
+#~ msgid "Looking up %s"
+#~ msgstr "Caut %s"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "Conectarea la %s a eșuat"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Autentificare: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "Nu se poate scrie fișierul %s."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "Nu se poate citi fișierul %s."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "Mesaj prea lung, ultimii %s octeți au fost trunchiați."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s nu este autentificat momentan."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "Atenționarea lui %s nu este permisă."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr ""
+#~ "Un mesaj s-a pierdut, ați depășit limita de viteză fixată de server."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "Chat-ul în %s nu este disponibil."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "Trimiteți mesajele prea rapid pentru %s."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "Ați pierdut un mesaj de la %s pentru că era prea mare."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr "Ați pierdut un mesaj de la %s pentru că a fost trimis prea repede."
+
+#~ msgid "Failure."
+#~ msgstr "Eșec."
+
+#~ msgid "Too many matches."
+#~ msgstr "Prea multe potriviri."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "E nevoie de mai multe atribute."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "Serviciul „Dir” este temporar indisponibil."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "Căutarea după adresa de mail este restricționată."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "Cuvântul-cheie a fost ignorat."
+
+#~ msgid "No keywords."
+#~ msgstr "Fără cuvinte-cheie."
+
+#~ msgid "User has no directory information."
+#~ msgstr "Nu există informații detaliate în director."
+
+#~ msgid "Country not supported."
+#~ msgstr "Nu există suport de țară."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Eșec necunoscut: %s."
+
+#~ msgid "Incorrect username or password."
+#~ msgstr "Nume de utilizator sau parolă incorecte."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "Serviciul este temporar indisponibil."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr ""
+#~ "Nivelul propriu de avertizare este prea ridicat pentru a vă putea "
+#~ "autentifica."
+
+#~ 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 ""
+#~ "V-ați conectat și deconectat de prea multe ori. Așteptați zece minute și "
+#~ "încercați din nou. Dacă veți continua să încercați, va trebui să "
+#~ "așteptați chiar mai mult."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "Eroare necunoscută la autentificare: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "Eroare necunoscută: %d. Detalii: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "Grup invalid"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Conectare terminată"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "Aștept răspunsul..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "TOC a revenit din așteptare. Puteți trimite mesaje din nou."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "Parola a fost schimbată cu succes"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Descărcare detalii „Dir”"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Introducere detalii „Dir”"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "Nu s-a putut deschide %s pentru scriere!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr ""
+#~ "Transferul fișierului a eșuat, celălalt utilizator probabil l-a anulat."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "Conectarea pentru transfer a eșuat."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr ""
+#~ "Nu s-a putut scrie antetul fișierului. Fișierul nu va fi transferat."
+
+#~ msgid "Save As..."
+#~ msgstr "Salvare ca..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s cere lui %s să accepte %d fișier: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s cere lui %s să accepte %d fișiere: %s (%.2f %s)%s%s"
+#~ msgstr[2] "%s cere lui %s să accepte %d de fișiere: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s vă cere să-i trimiteți un fișier"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "Modul de protocol TOC"
+
+#~ msgid "%s Options"
+#~ msgstr "Opțiuni %s"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Opțiuni proxy"
+
+#~ msgid "By log size"
+#~ msgstr "După mărimea înregistrărilor"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_Deschide adresa în navigator"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "Server ST_UN:"
+
+#~ msgid "Smiley _Image"
+#~ msgstr "_Imagine iconiță simbolică"
+
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "Combinație de _taste asociată"
+
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "_Evidențiază fereastra la primirea de mesaje noi"
+
#~ msgid ""
#~ "You may be disconnected shortly. You may want to use TOC until this is "
#~ "fixed. Check %s for updates."
diff --git a/po/ru.po b/po/ru.po
index f5a8c53b2d..50e16a7e92 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ru\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-03-01 19:00-0500\n"
+"POT-Creation-Date: 2009-04-30 10:40-0400\n"
"PO-Revision-Date: 2008-05-14 15:00+0400\n"
"Last-Translator: Антон Самохвалов <samant.ua@mail.ru>\n"
"Language-Team: \n"
@@ -616,21 +616,6 @@ msgstr ""
msgid "Send To"
msgstr "Адресат"
-#, fuzzy
-msgid "Invite message"
-msgstr "Пригласительное сообщение"
-
-msgid "Invite"
-msgstr "Пригласить"
-
-#, fuzzy
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Введите имя пользователя, которого вы хотите пригласить,\n"
-"а также, по желанию, пригласительное сообщение."
-
msgid "Conversation"
msgstr "Беседа"
@@ -893,6 +878,41 @@ msgstr "Все беседы"
msgid "System Log"
msgstr "Системный журнал"
+#, fuzzy
+msgid "Calling ... "
+msgstr "Подсчёт..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "Принять"
+
+msgid "Reject"
+msgstr "Отвергнуть"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "Вы покинули канал%s%s"
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "Адреса e-mail"
@@ -928,6 +948,9 @@ msgstr "Продолжить"
msgid "IM"
msgstr "Мгновенное сообщение"
+msgid "Invite"
+msgstr "Пригласить"
+
msgid "(none)"
msgstr "(нет)"
@@ -1132,7 +1155,6 @@ msgstr "%s отошёл (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s отправил вам сообщение (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "Неизвестное событие слежения. Сообщите об этом!"
@@ -1542,6 +1564,28 @@ msgstr "Последняя отметка Gnt"
msgid "Lastlog plugin."
msgstr "Вставка для последней отметки."
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "Настроить интернет-адрес"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "учётные записи"
@@ -1642,13 +1686,6 @@ msgstr "Принять сертификат для %s?"
msgid "SSL Certificate Verification"
msgstr "Проверка SSL-сертификата"
-#. Number of actions
-msgid "Accept"
-msgstr "Принять"
-
-msgid "Reject"
-msgstr "Отвергнуть"
-
msgid "_View Certificate..."
msgstr "_Просмотреть сертификат..."
@@ -1797,6 +1834,18 @@ msgstr "%s вышел из комнаты."
msgid "%s left the room (%s)."
msgstr "%s вышел из комнаты (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Пригласить в конференцию"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Введите имя пользователя, которого вы хотите пригласить, вместе с "
+"необязательным текстом приглашения."
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "Не удалось получить соединение: %s"
@@ -2639,6 +2688,32 @@ msgstr "Сохранить сообщения \"не в сети\" в прави
msgid "Do not ask. Always save in pounce."
msgstr "Не спрашивать. Всегда сохранять в правило."
+#, fuzzy
+msgid "One Time Password"
+msgstr "Введите пароль"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -3038,6 +3113,7 @@ msgstr "Выберите чат для собеседника: %s"
msgid "Add to chat..."
msgstr "Добавить к чату..."
+#. Global
msgid "Available"
msgstr "Доступен"
@@ -3385,6 +3461,17 @@ msgstr ""
"Выбранное вами имя учётной записи было отвергнуто сервером. Вероятно, оно "
"содержит недопустимые символы."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "Это имя чата уже используется"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Псевдоним"
+
msgid "Cannot change nick"
msgstr "Не удаётся изменить псевдоним"
@@ -3661,6 +3748,41 @@ msgstr "Неверный запрос с сервера"
msgid "SASL error"
msgstr "Ошибка SASL"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "Причина не указана"
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Неподдерживаемая версия"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"Не удалось установить соединение с сервером:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"Не удалось установить соединение с сервером:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "Не удаётся инициализировать соединение"
+
+msgid "Unable to create socket"
+msgstr "Не удаётся создать сокет"
+
+msgid "Write error"
+msgstr "Ошибка записи"
+
msgid "Full Name"
msgstr "Полное имя"
@@ -3726,6 +3848,10 @@ msgstr "Клиент"
msgid "Operating System"
msgstr "Операционная система"
+#, fuzzy
+msgid "Local Time"
+msgstr "Локальный файл:"
+
msgid "Last Activity"
msgstr "Последняя активность"
@@ -4062,9 +4188,6 @@ msgstr "Искать комнаты"
msgid "You require encryption, but it is not available on this server."
msgstr "Вы запросили шифрование, но оно недоступно на сервере."
-msgid "Write error"
-msgstr "Ошибка записи"
-
msgid "Ping timeout"
msgstr "Время ожидания при прозвоне истекло"
@@ -4073,14 +4196,9 @@ msgstr "Ошибка чтения"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"Не удалось установить соединение с сервером:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "Не удаётся создать сокет"
msgid "Invalid XMPP ID"
msgstr "Неверный XMPP ID"
@@ -4088,6 +4206,10 @@ msgstr "Неверный XMPP ID"
msgid "Invalid XMPP ID. Domain must be set."
msgstr "Неверный XMPP ID. Должен быть задан домен."
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Не удалось соединиться с сервером."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "Регистрация %s@%s завершена успешно"
@@ -4179,6 +4301,12 @@ msgstr "Сервер не поддерживает блокировку"
msgid "Not Authorized"
msgstr "Не авторизован"
+msgid "Mood"
+msgstr "Настроение"
+
+msgid "Now Listening"
+msgstr "Сейчас слушается"
+
msgid "Both"
msgstr "Обе"
@@ -4200,12 +4328,6 @@ msgstr "Нет"
msgid "Subscription"
msgstr "Подписка"
-msgid "Mood"
-msgstr "Настроение"
-
-msgid "Now Listening"
-msgstr "Сейчас слушается"
-
msgid "Mood Text"
msgstr "Текст настроения"
@@ -4443,18 +4565,24 @@ msgstr "Не удаётся удалить пользователя %s"
msgid "Unable to ping user %s"
msgstr "Не могу прозвонить пользователя %s"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr "Не могу сплетничать, потому что ничего неизвестно о пользователе %s."
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr "Не могу сплетничать, потому что пользователь %s, похоже, не в сети."
-#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+#, fuzzy, c-format
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "Не могу сплетничать, потому что пользователь %s не поддерживает это."
+#, c-format
+msgid "Buzzing %s..."
+msgstr "Треплю про %s..."
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
msgid "Buzz"
@@ -4464,9 +4592,35 @@ msgstr "Сплетни"
msgid "%s has buzzed you!"
msgstr "%s натрепал про вас!"
-#, c-format
-msgid "Buzzing %s..."
-msgstr "Треплю про %s..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "Не удаётся отправить файл для %s, неверный JID"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "Не удаётся отправить файл для %s, пользователь не в сети"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr ""
+"Не удаётся отправить файл для %s, нет подписки на присутствие пользователя"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "Не удалось выполнить регистрацию"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "Выберите ресурс %s, которому вы хотели бы отправить файл"
+
+msgid "Select a Resource"
+msgstr "Выбрать ресурс"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "Создать _чат"
msgid "config: Configure a chat room."
msgstr "config: Настроить комнату."
@@ -4623,6 +4777,21 @@ msgstr "Ошибка присоединения к чату %s"
msgid "Error in chat %s"
msgstr "Ошибка в чате %s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "Произошла ошибка при открытии файла."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "Не удалось произвести передачу файлов"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Не удалось открыть файл '%s': %s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4648,9 +4817,6 @@ msgstr ""
msgid "Please select the resource of %s to which you would like to send a file"
msgstr "Выберите ресурс %s, которому вы хотели бы отправить файл"
-msgid "Select a Resource"
-msgstr "Выбрать ресурс"
-
msgid "Edit User Mood"
msgstr "Изменить настроение пользователя"
@@ -6498,7 +6664,7 @@ msgstr ""
"Именем пользователя должен быть правильный адрес эл.почты или начинаться с "
"буквы и содержать только буквы, цифры и пробелы, или содержать только цифры."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr "Неверное имя пользователя."
@@ -6514,7 +6680,7 @@ msgstr "Ваша учётная запись сейчас заблокирова
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "Служба AOL Instant Messenger временно недоступна."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6721,7 +6887,7 @@ msgstr[0] "Вы не получили %hu сообщение от %s по неи
msgstr[1] "Вы не получили %hu сообщения от %s по неизвестной причине."
msgstr[2] "Вы не получили %hu сообщений от %s по неизвестной причине."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "Не удаётся отправить сообщение: %s"
@@ -7715,6 +7881,9 @@ msgstr "<p><b>Подтверждение</b>:<br>\n"
msgid "<p><b>Scrupulous Testers</b>:<br>\n"
msgstr "<p><b>Исходный автор</b>:<br>\n"
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr "<p><i>И все мальчики в задней комнате...</i><br>\n"
@@ -7870,7 +8039,6 @@ msgstr ""
"Неизвестный код ответа при входе (0x%02X):\n"
"%s"
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "Не удаётся установить соединение."
@@ -9484,195 +9652,12 @@ msgid "Auth Domain"
msgstr "Домен авторизации"
#, c-format
-msgid "Looking up %s"
-msgstr "Поиск %s"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Не удалось установить соединение с %s"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Подключение: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "Не удаётся записать файл %s."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "Не удаётся прочитать файл %s."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "Сообщение слишком велико, последние %s байт обрезаны."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s сейчас не в сети."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "Предупреждение %s не разрешено."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "Сообщение было отброшено, вы превышаете предел скорости сервера."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "Чат в %s недоступен."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "Вы отправляете сообщения к %s слишком часто."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "Вы не получили сообщение от %s, так как оно было слишком велико."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr ""
-"Вы не получили сообщение от %s, так как оно отправлялось слишком часто."
-
-#, c-format
-msgid "Failure."
-msgstr "Ошибка."
-
-#, c-format
-msgid "Too many matches."
-msgstr "Слишком много совпадений."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "Необходима большая точность."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "Служба каталогов временно недоступна."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "Поиск email запрещён."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "Ключевое слово проигнорировано."
-
-#, c-format
-msgid "No keywords."
-msgstr "Нет ключевых слов."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "Пользователь не имеет информации каталога."
-
-#, c-format
-msgid "Country not supported."
-msgstr "Страна не поддерживается."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Неизвестная ошибка: %s."
-
-#, c-format
-msgid "Incorrect username or password."
-msgstr "Неправильное имя пользователя или пароль."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "Служба временно недоступна."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "Ваш уровень предупреждения сейчас слишком велик для входа."
-
-#, c-format
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
-msgstr ""
-"Вы соединялись и отсоединялись слишком часто. Подождите 10 минут и "
-"попытайтесь снова. Если вы продолжите попытки, вам придётся ждать ещё дольше."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "Произошла неизвестная ошибка подключения: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "Произошла неизвестная ошибка %d. Информация: %s"
-
-msgid "Invalid Groupname"
-msgstr "Неверное имя группы"
-
-msgid "Connection Closed"
-msgstr "Соединение разорвано"
-
-msgid "Waiting for reply..."
-msgstr "Ожидание ответа..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "TOC вышел из своей паузы. Вы снова можете отправлять сообщения."
-
-msgid "Password Change Successful"
-msgstr "Пароль изменён успешно"
-
-msgid "_Group:"
-msgstr "_Группа:"
-
-msgid "Get Dir Info"
-msgstr "Получить информацию каталога"
-
-msgid "Set Dir Info"
-msgstr "Установить информацию каталога"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "Не удалось открыть %s для записи!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr ""
-"Не удалось произвести передачу файлов; вероятно, отменили на той стороне."
-
-msgid "Could not connect for transfer."
-msgstr "Не удалось установить соединение для передачи."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "Не удалось записать заголовок файла. Файл не будет передан."
-
-msgid "Save As..."
-msgstr "Сохранить как..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s запросов %s на принятие %d файла: %s (%.2f %s)%s%s"
-msgstr[1] "%s запросов %s на принятие %d файлов: %s (%.2f %s)%s%s"
-msgstr[2] "%s запросов %s на принятие %d файла: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s запрашивает передачу файла ему"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "Модуль протокола TOC"
-
-#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr "%s послал вам приглашение к веб-камере, которое ещё не поддерживается."
+msgid "Your SMS was not delivered"
+msgstr ""
+
msgid "Your Yahoo! message did not get sent."
msgstr "Ваше сообщение Yahoo! не отправлено."
@@ -10320,18 +10305,6 @@ msgstr "+++ %s перестал бездействовать"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "Ошибка чтения %s"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"Произошла ошибка при чтении %s. Файл не был загружен, а старый файл был "
-"переименован в %s~."
-
msgid "Calculating..."
msgstr "Подсчёт..."
@@ -10412,6 +10385,12 @@ msgstr "Ошибка записи в %s: %s"
msgid "Unable to connect to %s: %s"
msgstr "Не удаётся соединиться с %s: %s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr "Сервер требует TLS/SSL для входа. Поддержка TLS/SSL не найдена."
+
#, c-format
msgid " - %s"
msgstr " - %s"
@@ -10445,6 +10424,18 @@ msgstr "Соединение отвергнуто."
msgid "Address already in use."
msgstr "Адрес уже используется"
+#, c-format
+msgid "Error Reading %s"
+msgstr "Ошибка чтения %s"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"Произошла ошибка при чтении %s. Файл не был загружен, а старый файл был "
+"переименован в %s~."
+
msgid "Internet Messenger"
msgstr "Клиент обмена мгновенными сообщениями"
@@ -10487,10 +10478,8 @@ msgstr "Уведомления о новой по_чте"
msgid "Use this buddy _icon for this account:"
msgstr "Использовать этот _значок собеседника для этой учётной записи:"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "Параметры %s"
+msgid "_Advanced"
+msgstr "_Дополнительно"
msgid "Use GNOME Proxy Settings"
msgstr "Использовать настройки прокси GNOME"
@@ -10525,9 +10514,6 @@ msgstr "Если приглядитесь"
msgid "you can see the butterflies mating"
msgstr "вы можете увидеть спаривающихся бабочек"
-msgid "Proxy Options"
-msgstr "Параметры прокси"
-
msgid "Proxy _type:"
msgstr "Т_ип прокси:"
@@ -10556,8 +10542,9 @@ msgstr "_Основные"
msgid "Create _this new account on the server"
msgstr "Создать _эту новую учётную запись на сервере"
-msgid "_Advanced"
-msgstr "_Дополнительно"
+#, fuzzy
+msgid "_Proxy"
+msgstr "Прокси"
msgid "Enabled"
msgstr "Включено"
@@ -10636,6 +10623,17 @@ msgstr "_Информация"
msgid "I_M"
msgstr "Мгновенное сооб_щение"
+#, fuzzy
+msgid "_Audio Call"
+msgstr "_Добавить чат"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Видеочат"
+
msgid "_Send File..."
msgstr "_Отправить файл..."
@@ -10774,6 +10772,10 @@ msgstr "/Инструменты/_Слежение за собеседникам
msgid "/Tools/_Certificates"
msgstr "/Инструменты/С_ертификаты"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Инструменты/Ро_жицы"
+
msgid "/Tools/Plu_gins"
msgstr "/Инструменты/_Модули"
@@ -10783,10 +10785,6 @@ msgstr "/Инструменты/_Настройки"
msgid "/Tools/Pr_ivacy"
msgstr "/Инструменты/К_онфиденциальность"
-#, fuzzy
-msgid "/Tools/Smile_y"
-msgstr "/Инструменты/Ро_жицы"
-
msgid "/Tools/_File Transfers"
msgstr "/Инструменты/Передача _файлов"
@@ -10905,8 +10903,8 @@ msgstr "Вручную"
msgid "By status"
msgstr "По статусу"
-msgid "By log size"
-msgstr "По размеру журнала"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10922,6 +10920,9 @@ msgstr "Переустановить соединение"
msgid "Re-enable"
msgstr "Включить повторно"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr "Добро пожаловать назад!"
@@ -11012,6 +11013,9 @@ msgstr ""
msgid "A_lias:"
msgstr "_Псевдоним:"
+msgid "_Group:"
+msgstr "_Группа:"
+
msgid "Auto_join when account becomes online."
msgstr "Автоматически _подключиться, когда учётная запись станет в сети."
@@ -11063,14 +11067,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr "Пригласить собеседника в чат"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Введите имя пользователя, которого вы хотите пригласить, вместе с "
-"необязательным текстом приглашения."
-
msgid "_Buddy:"
msgstr "_Собеседник:"
@@ -11145,6 +11141,22 @@ msgstr "/Беседа/Со_хранить как..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Беседа/О_чистить"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Беседа/_Ещё"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Беседа/_Ещё"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Беседа/_Ещё"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Беседа/Просмотреть _журнал"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Беседа/Отправить _файл..."
@@ -11217,6 +11229,18 @@ msgstr "/Беседа"
msgid "/Conversation/View Log"
msgstr "/Беседа/Просмотреть журнал"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Беседа/Ещё"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Беседа/Просмотреть журнал"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Беседа/Ещё"
+
msgid "/Conversation/Send File..."
msgstr "/Беседа/Отправить файл..."
@@ -11401,6 +11425,9 @@ msgstr "исполнитель"
msgid "Ka-Hing Cheung"
msgstr "Ка-Хин Чон"
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "поддержка"
@@ -11542,6 +11569,10 @@ msgstr "Грузинский"
msgid "Ubuntu Georgian Translators"
msgstr "Переводчики Ubuntu на грузинский"
+#, fuzzy
+msgid "Khmer"
+msgstr "Другое"
+
msgid "Kannada"
msgstr "Каннада"
@@ -12027,15 +12058,6 @@ msgstr "Шрифт, использующийся для набора уведо
msgid "Enable typing notification"
msgstr "Включить набор уведомления"
-msgid "_Copy Email Address"
-msgstr "_Скопировать адрес email"
-
-msgid "_Open Link in Browser"
-msgstr "_Открыть ссылку в браузере"
-
-msgid "_Copy Link Location"
-msgstr "_Скопировать ссылку"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12289,6 +12311,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12320,6 +12343,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12378,11 +12402,23 @@ msgstr "Пиджин"
msgid "Exiting because another libpurple client is already running.\n"
msgstr "Выхожу, потому что уже запущен другой клиент libpurple.\n"
-msgid "Open All Messages"
-msgstr "Открыть все сообщения"
+msgid "/_Media"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Вам пришла почта!</span>"
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "Подсчёт..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -12413,6 +12449,27 @@ msgid ""
"The 'Manual' browser command has been chosen, but no command has been set."
msgstr "Был выбран браузер \"Другой\", но команда не была задана."
+msgid "Open All Messages"
+msgstr "Открыть все сообщения"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Вам пришла почта!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "Новое правило для собеседника"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Вам пришла почта!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "Неизвестное сообщение"
+
msgid "The following plugins will be unloaded."
msgstr "Следующие модули будут выгружены."
@@ -12461,6 +12518,10 @@ msgstr "<b>Подробности о модуле</b>"
msgid "Select a file"
msgstr "Выбрать файл"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Изменить правило для собеседника"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "За кем следить"
@@ -12531,6 +12592,50 @@ msgstr "_Повторение"
msgid "Pounce Target"
msgstr "Объект слежения"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "Начинает набор сообщения"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "Приостанавливает набор сообщения"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "Входит"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s перестал бездействовать (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "Возвращается"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "Прекратил набор сообщения"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "Выходит"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "Начинает бездействовать"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "Во время отсутствия"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Отправить сообщение"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "Неизвестное событие слежения. Сообщите об этом!"
+
msgid "Smiley theme failed to unpack."
msgstr "Не удалось распаковать тему смайликов."
@@ -12553,6 +12658,12 @@ msgstr "Горячие клавиши"
msgid "Cl_ose conversations with the Escape key"
msgstr "З_акрывать беседы клавишей Escape"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Список собеседников"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "Значок системного лотка"
@@ -12664,9 +12775,6 @@ msgstr "Не могу запустить программу настройки
msgid "Cannot start browser configuration program."
msgstr "Не могу запустить программу настройки веб-проводника"
-msgid "ST_UN server:"
-msgstr "ST_UN-сервер:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">Пример: stunserver.org</span>"
@@ -12691,6 +12799,10 @@ msgstr "_Начальный порт:"
msgid "_End port:"
msgstr "_Конечный порт:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr "Прокси-сервер &amp; браузер"
@@ -12886,12 +12998,12 @@ msgstr "Во время отсутствия и бездействия"
msgid "Auto-away"
msgstr "Авто-\"Отошёл\""
-msgid "Change status when _idle"
-msgstr "Менять статус при _бездействии"
-
msgid "_Minutes before becoming idle:"
msgstr "_Минут до начала бездействия:"
+msgid "Change status when _idle"
+msgstr "Менять статус при _бездействии"
+
msgid "Change _status to:"
msgstr "Менять _статус на:"
@@ -13040,6 +13152,12 @@ msgstr "Сохранить _и применить"
msgid "Status for %s"
msgstr "Статус для %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
#, fuzzy
msgid "Custom Smiley"
msgstr "Своя рожица"
@@ -13050,18 +13168,18 @@ msgstr "Требуется больше данных"
msgid "Please provide a shortcut to associate with the smiley."
msgstr "Пожалуйста, создайте ярлычок для сопоставления с рожицей."
-#, fuzzy
-msgid "Duplicate Shortcut"
-msgstr "Сделать копию ярлычка"
-
+#, fuzzy, c-format
msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
+"A custom smiley for '%s' already exists. Please use a different shortcut."
msgstr ""
"Своя рожица для текущего ярлычка уже существует. Пожалуйста, укажите другой "
"ярлычок."
#, fuzzy
+msgid "Duplicate Shortcut"
+msgstr "Сделать копию ярлычка"
+
+#, fuzzy
msgid "Please select an image for the smiley."
msgstr "Пожалуйста, выберите картинку для рожицы."
@@ -13074,19 +13192,23 @@ msgid "Add Smiley"
msgstr "Добавить рожицу"
#, fuzzy
-msgid "Smiley _Image"
-msgstr "_Изображение рожицы"
+msgid "_Image:"
+msgstr "_Изображение"
-#. Smiley shortcut
+#. Shortcut text
#, fuzzy
-msgid "Smiley S_hortcut"
-msgstr "_Ярлычок рожицы"
+msgid "S_hortcut text:"
+msgstr "Ярлык"
#, fuzzy
msgid "Smiley"
msgstr "Рожица"
#, fuzzy
+msgid "Shortcut Text"
+msgstr "Ярлык"
+
+#, fuzzy
msgid "Custom Smiley Manager"
msgstr "Управление своими рожицами"
@@ -13216,6 +13338,16 @@ msgstr ""
"Не удалось загрузить картинку '%s': причина не ясна, возможна порча файла "
"картинки"
+#, fuzzy
+msgid "_Open Link"
+msgstr "_Открывать ссылку в:"
+
+msgid "_Copy Link Location"
+msgstr "_Скопировать ссылку"
+
+msgid "_Copy Email Address"
+msgstr "_Скопировать адрес email"
+
msgid "Save File"
msgstr "Сохранить файл"
@@ -14252,6 +14384,185 @@ msgstr "Отправлять и получать прямые XMPP строфы.
msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr "Этот модуль полезен для отладки XMPP серверов или клиентов."
+#, fuzzy
+#~ msgid "Invite message"
+#~ msgstr "Пригласительное сообщение"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Введите имя пользователя, которого вы хотите пригласить,\n"
+#~ "а также, по желанию, пригласительное сообщение."
+
+#~ msgid "Looking up %s"
+#~ msgstr "Поиск %s"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "Не удалось установить соединение с %s"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Подключение: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "Не удаётся записать файл %s."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "Не удаётся прочитать файл %s."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "Сообщение слишком велико, последние %s байт обрезаны."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s сейчас не в сети."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "Предупреждение %s не разрешено."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr "Сообщение было отброшено, вы превышаете предел скорости сервера."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "Чат в %s недоступен."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "Вы отправляете сообщения к %s слишком часто."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "Вы не получили сообщение от %s, так как оно было слишком велико."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr ""
+#~ "Вы не получили сообщение от %s, так как оно отправлялось слишком часто."
+
+#~ msgid "Failure."
+#~ msgstr "Ошибка."
+
+#~ msgid "Too many matches."
+#~ msgstr "Слишком много совпадений."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "Необходима большая точность."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "Служба каталогов временно недоступна."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "Поиск email запрещён."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "Ключевое слово проигнорировано."
+
+#~ msgid "No keywords."
+#~ msgstr "Нет ключевых слов."
+
+#~ msgid "User has no directory information."
+#~ msgstr "Пользователь не имеет информации каталога."
+
+#~ msgid "Country not supported."
+#~ msgstr "Страна не поддерживается."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Неизвестная ошибка: %s."
+
+#~ msgid "Incorrect username or password."
+#~ msgstr "Неправильное имя пользователя или пароль."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "Служба временно недоступна."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "Ваш уровень предупреждения сейчас слишком велик для входа."
+
+#~ 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 ""
+#~ "Вы соединялись и отсоединялись слишком часто. Подождите 10 минут и "
+#~ "попытайтесь снова. Если вы продолжите попытки, вам придётся ждать ещё "
+#~ "дольше."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "Произошла неизвестная ошибка подключения: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "Произошла неизвестная ошибка %d. Информация: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "Неверное имя группы"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Соединение разорвано"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "Ожидание ответа..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "TOC вышел из своей паузы. Вы снова можете отправлять сообщения."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "Пароль изменён успешно"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Получить информацию каталога"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Установить информацию каталога"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "Не удалось открыть %s для записи!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr ""
+#~ "Не удалось произвести передачу файлов; вероятно, отменили на той стороне."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "Не удалось установить соединение для передачи."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "Не удалось записать заголовок файла. Файл не будет передан."
+
+#~ msgid "Save As..."
+#~ msgstr "Сохранить как..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s запросов %s на принятие %d файла: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s запросов %s на принятие %d файлов: %s (%.2f %s)%s%s"
+#~ msgstr[2] "%s запросов %s на принятие %d файла: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s запрашивает передачу файла ему"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "Модуль протокола TOC"
+
+#~ msgid "%s Options"
+#~ msgstr "Параметры %s"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Параметры прокси"
+
+#~ msgid "By log size"
+#~ msgstr "По размеру журнала"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_Открыть ссылку в браузере"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "ST_UN-сервер:"
+
+#, fuzzy
+#~ msgid "Smiley _Image"
+#~ msgstr "_Изображение рожицы"
+
+#, fuzzy
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "_Ярлычок рожицы"
+
#~ msgid "Unable to retrieve MSN Address Book"
#~ msgstr "Не удаётся загрузить адресную книгу MSN"
diff --git a/po/si.po b/po/si.po
index 107d829db9..6ae4a6e63a 100644
--- a/po/si.po
+++ b/po/si.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: si\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
+"POT-Creation-Date: 2009-04-30 10:40-0400\n"
"PO-Revision-Date: 2008-05-17 11:08+0530\n"
"Last-Translator: Yajith Ajantha Dayarathna <yajith@gmail.com>\n"
"Language-Team: Sinhala <sinhala@linux.lk>\n"
@@ -33,7 +33,7 @@ msgid ""
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -579,18 +579,6 @@ msgstr ""
msgid "Send To"
msgstr "වෙතට යවන්න"
-#, fuzzy
-msgid "Invite message"
-msgstr "අන්තර්ජාල පණිවිඩකරු"
-
-msgid "Invite"
-msgstr "ඇරයුම"
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-
msgid "Conversation"
msgstr ""
@@ -833,6 +821,41 @@ msgstr "සංවාද"
msgid "System Log"
msgstr "පද්ධති සටහන"
+#, fuzzy
+msgid "Calling ... "
+msgstr "ගණනය කරමින්..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "අනුමත කරන්න"
+
+msgid "Reject"
+msgstr "අනුමත නොකරන්න"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "ඔබ මෙම පිළිසඳරෙන් ඉවත් වී ඇත."
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "විද්‍යත් තැපෑල්"
@@ -867,6 +890,9 @@ msgstr "දිගටම කරගෙන යන්න"
msgid "IM"
msgstr "IM"
+msgid "Invite"
+msgstr "ඇරයුම"
+
msgid "(none)"
msgstr "(කිසිවක් නැත)"
@@ -1069,7 +1095,6 @@ msgstr "%s ඉවතට ගොස් ඇත. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s ඔබට පණිවිඩයක් එවන ලදි. (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr ""
@@ -1115,7 +1140,6 @@ msgstr ""
msgid "Change status to"
msgstr ""
-#. Conversations
msgid "Conversations"
msgstr "සංවාද"
@@ -1427,7 +1451,6 @@ msgid ""
"conversation into the current conversation."
msgstr ""
-#, c-format
msgid "Online"
msgstr ""
@@ -1475,6 +1498,28 @@ msgstr "GntLastlog"
msgid "Lastlog plugin."
msgstr ""
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr ""
@@ -1573,13 +1618,6 @@ msgstr ""
msgid "SSL Certificate Verification"
msgstr ""
-#. Number of actions
-msgid "Accept"
-msgstr "අනුමත කරන්න"
-
-msgid "Reject"
-msgstr "අනුමත නොකරන්න"
-
msgid "_View Certificate..."
msgstr "සහතික දසුන... (_V)"
@@ -1712,6 +1750,16 @@ msgstr ""
msgid "%s left the room (%s)."
msgstr ""
+#, fuzzy
+msgid "Invite to chat"
+msgstr "ඇරයුම"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+
#, c-format
msgid "Failed to get connection: %s"
msgstr ""
@@ -1833,7 +1881,6 @@ msgstr ""
msgid "Transfer of file %s complete"
msgstr ""
-#, c-format
msgid "File transfer complete"
msgstr ""
@@ -1841,7 +1888,6 @@ msgstr ""
msgid "You canceled the transfer of %s"
msgstr ""
-#, c-format
msgid "File transfer cancelled"
msgstr ""
@@ -2026,7 +2072,6 @@ msgstr ""
msgid "You are using %s, but this plugin requires %s."
msgstr ""
-#, c-format
msgid "This plugin has not defined an ID."
msgstr ""
@@ -2483,6 +2528,32 @@ msgstr ""
msgid "Do not ask. Always save in pounce."
msgstr ""
+#, fuzzy
+msgid "One Time Password"
+msgstr "රහස්පදය ඇතුළත් කරන්න"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2681,7 +2752,6 @@ msgid ""
"Unable to establish connection with the local mDNS server. Is it running?"
msgstr ""
-#. Creating the options for the protocol
msgid "First name"
msgstr "මුල් නම"
@@ -2713,6 +2783,10 @@ msgstr ""
msgid "Purple Person"
msgstr ""
+#. Creating the options for the protocol
+msgid "Local Port"
+msgstr ""
+
msgid "Bonjour"
msgstr ""
@@ -2868,13 +2942,13 @@ msgstr ""
msgid "Add to chat..."
msgstr "පිළිසඳරට එක් කරන්න..."
+#. Global
msgid "Available"
msgstr "භාවිතයට ඇති"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "පිටතට ගොස්"
@@ -3211,6 +3285,17 @@ msgid ""
"invalid characters."
msgstr ""
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr ""
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "අනුර්ත නම"
+
msgid "Cannot change nick"
msgstr ""
@@ -3439,6 +3524,33 @@ msgstr ""
msgid "SASL error"
msgstr ""
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+msgid "No session ID given"
+msgstr ""
+
+msgid "Unsupported version of BOSH protocol"
+msgstr ""
+
+msgid "Unable to establish a connection with the server"
+msgstr ""
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+
+msgid "Unable to establish SSL connection"
+msgstr ""
+
+msgid "Unable to create socket"
+msgstr "කෙවෙනියට සම්බන්ධවිය නොහැක"
+
+msgid "Write error"
+msgstr ""
+
msgid "Full Name"
msgstr "සම්පූර්ණ නම"
@@ -3503,6 +3615,9 @@ msgstr "සේවාලාභියා"
msgid "Operating System"
msgstr "මෙහෙයුම් පද්ධතිය"
+msgid "Local Time"
+msgstr ""
+
msgid "Last Activity"
msgstr "අවසන් ක්‍රියාව"
@@ -3708,7 +3823,6 @@ msgstr ""
msgid "Extended Away"
msgstr ""
-#, c-format
msgid "Do Not Disturb"
msgstr ""
@@ -3831,9 +3945,6 @@ msgstr ""
msgid "You require encryption, but it is not available on this server."
msgstr ""
-msgid "Write error"
-msgstr ""
-
msgid "Ping timeout"
msgstr ""
@@ -3842,19 +3953,19 @@ msgstr ""
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-msgid "Unable to create socket"
-msgstr "කෙවෙනියට සම්බන්ධවිය නොහැක"
-
msgid "Invalid XMPP ID"
msgstr ""
msgid "Invalid XMPP ID. Domain must be set."
msgstr ""
+msgid "Malformed BOSH Connect Server"
+msgstr ""
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr ""
@@ -3939,9 +4050,18 @@ msgstr ""
msgid "Re-initializing Stream"
msgstr ""
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr ""
+msgid "Mood"
+msgstr ""
+
+msgid "Now Listening"
+msgstr ""
+
msgid "Both"
msgstr ""
@@ -3963,12 +4083,6 @@ msgstr "කිසිවක් නැත"
msgid "Subscription"
msgstr ""
-msgid "Mood"
-msgstr ""
-
-msgid "Now Listening"
-msgstr ""
-
msgid "Mood Text"
msgstr ""
@@ -4207,15 +4321,21 @@ msgid "Unable to ping user %s"
msgstr ""
#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+msgid "Unable to buzz, because there is nothing known about %s."
+msgstr ""
+
+#, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr ""
#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr ""
#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+msgid "Buzzing %s..."
msgstr ""
#. Yahoo only supports one attention command: the 'buzz'.
@@ -4228,7 +4348,31 @@ msgid "%s has buzzed you!"
msgstr ""
#, c-format
-msgid "Buzzing %s..."
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr ""
+
+#, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr ""
+
+#, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr ""
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "සත්‍යාපනය අසමත් විය"
+
+#, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr ""
+
+msgid "Select a Resource"
+msgstr ""
+
+msgid "Initiate Media"
msgstr ""
msgid "config: Configure a chat room."
@@ -4376,6 +4520,20 @@ msgstr ""
msgid "Error in chat %s"
msgstr ""
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "ගොනුව විවෘත කිරීමේදී දෝශයක් ඇතිවිය."
+
+msgid "Transfer was closed."
+msgstr ""
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "'%s' ගොනුව විවෘත කිරීම අපහසුවිය: %s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4399,9 +4557,6 @@ msgstr ""
msgid "Please select the resource of %s to which you would like to send a file"
msgstr ""
-msgid "Select a Resource"
-msgstr ""
-
msgid "Edit User Mood"
msgstr ""
@@ -4434,7 +4589,17 @@ msgstr "ක්‍රියා"
msgid "Select an action"
msgstr ""
-msgid "Unable to retrieve MSN Address Book"
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr ""
+
+msgid "Buddy Add error"
+msgstr ""
+
+msgid "The username specified does not exist."
msgstr ""
#, c-format
@@ -4661,7 +4826,6 @@ msgstr ""
msgid "Passport account not yet verified"
msgstr ""
-#, c-format
msgid "Passport account suspended"
msgstr ""
@@ -4753,6 +4917,13 @@ msgstr ""
msgid "Page"
msgstr "පිටුව"
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "වැඩ"
+
msgid "Has you"
msgstr ""
@@ -4791,6 +4962,13 @@ msgstr "ශිල්පියා"
msgid "Album"
msgstr ""
+#, fuzzy
+msgid "Game Title"
+msgstr "සිරස්තලය"
+
+msgid "Office Title"
+msgstr ""
+
msgid "Set Friendly Name..."
msgstr ""
@@ -4979,7 +5157,7 @@ msgid ""
"does not exist."
msgstr ""
-msgid "Profile URL"
+msgid "View web profile"
msgstr ""
#. *< type
@@ -5209,19 +5387,15 @@ msgstr "ලිපින පොතට ඇතුලත් කරන්න"
msgid "Do you want to delete this buddy from your address book as well?"
msgstr ""
-#. only notify the user about problems adding to the friends list
-#. * maybe we should do something else for other lists, but it probably
-#. * won't cause too many problems if we just ignore it
-#, c-format
-msgid "Unable to add \"%s\"."
-msgstr ""
-
msgid "The username specified is invalid."
msgstr ""
msgid "This Hotmail account may not be active."
msgstr ""
+msgid "Profile URL"
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5235,15 +5409,11 @@ msgstr ""
msgid "MSN Protocol Plugin"
msgstr ""
-msgid "Missing Cipher"
-msgstr ""
-
-msgid "The RC4 cipher could not be found"
+#, c-format
+msgid "No such user: %s"
msgstr ""
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
+msgid "User lookup"
msgstr ""
msgid "Reading challenge"
@@ -5255,11 +5425,18 @@ msgstr ""
msgid "Logging in"
msgstr ""
-#, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] ""
-msgstr[1] ""
+msgid "MySpaceIM - No Username Set"
+msgstr ""
+
+msgid "You appear to have no MySpace username."
+msgstr ""
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr ""
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr "SILC සේවාදායක සමඟ සම්බන්ධ වෙමින් පවතී"
#. Can't write _()'d strings in array initializers. Workaround.
msgid "New mail messages"
@@ -5280,13 +5457,20 @@ msgstr ""
msgid "MySpace"
msgstr ""
-msgid "MySpaceIM - No Username Set"
+msgid "IM Friends"
msgstr ""
-msgid "You appear to have no MySpace username."
-msgstr ""
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+msgstr[1] ""
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgid "Add contacts from server"
msgstr ""
#. The session is now set up, ready to be connected. This emits the
@@ -5310,58 +5494,46 @@ msgstr ""
msgid "MySpaceIM Error"
msgstr ""
-msgid "Failed to add buddy"
+msgid "Invalid input condition"
msgstr ""
-msgid "'addbuddy' command failed."
+msgid "Read buffer full (2)"
msgstr ""
-msgid "persist command failed"
+msgid "Unparseable message"
msgstr ""
#, c-format
-msgid "No such user: %s"
-msgstr ""
-
-msgid "User lookup"
+msgid "Couldn't connect to host: %s (%d)"
msgstr ""
-msgid "Failed to remove buddy"
+msgid "Failed to add buddy"
msgstr ""
-msgid "'delbuddy' command failed"
+msgid "'addbuddy' command failed."
msgstr ""
-msgid "blocklist command failed"
+msgid "persist command failed"
msgstr ""
-msgid "Invalid input condition"
+msgid "Failed to remove buddy"
msgstr ""
-msgid "Read buffer full (2)"
+msgid "'delbuddy' command failed"
msgstr ""
-msgid "Unparseable message"
+msgid "blocklist command failed"
msgstr ""
-#, c-format
-msgid "Couldn't connect to host: %s (%d)"
+msgid "Missing Cipher"
msgstr ""
-msgid "IM Friends"
+msgid "The RC4 cipher could not be found"
msgstr ""
-#, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "Add contacts from server"
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
msgstr ""
msgid "Add friends from MySpace.com"
@@ -5404,9 +5576,6 @@ msgstr ""
msgid "User"
msgstr "පරිශිලක"
-msgid "Profile"
-msgstr ""
-
msgid "Headline"
msgstr ""
@@ -5419,29 +5588,29 @@ msgstr ""
msgid "Client Version"
msgstr ""
-#. Protocol won't log in now without a username set.. Disconnect
-msgid "No username set"
+msgid "MySpaceIM - Username Available"
msgstr ""
-msgid "MySpaceIM - Please Set a Username"
+msgid "This username is available. Would you like to set it?"
msgstr ""
-msgid "Please enter a username to check its availability:"
+msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr ""
-msgid "MySpaceIM - Username Available"
+msgid "MySpaceIM - Please Set a Username"
msgstr ""
-msgid "This username is available. Would you like to set it?"
+msgid "This username is unavailable."
msgstr ""
-msgid "ONCE SET, THIS CANNOT BE CHANGED!"
+msgid "Please try another username:"
msgstr ""
-msgid "This username is unavailable."
+#. Protocol won't log in now without a username set.. Disconnect
+msgid "No username set"
msgstr ""
-msgid "Please try another username:"
+msgid "Please enter a username to check its availability:"
msgstr ""
#. TODO: icons for each zap
@@ -5816,7 +5985,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr ""
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr ""
@@ -6070,23 +6238,18 @@ msgstr "කැමරාව"
msgid "Screen Sharing"
msgstr ""
-#, c-format
msgid "Free For Chat"
msgstr ""
-#, c-format
msgid "Not Available"
msgstr ""
-#, c-format
msgid "Occupied"
msgstr "දරාසිටී"
-#, c-format
msgid "Web Aware"
msgstr ""
-#, c-format
msgid "Invisible"
msgstr ""
@@ -6129,7 +6292,7 @@ msgid ""
"only letters, numbers and spaces, or contain only numbers."
msgstr ""
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr ""
@@ -6145,7 +6308,7 @@ msgstr ""
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr ""
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6178,9 +6341,7 @@ msgid "_OK"
msgstr "හරි (_O)"
#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
+msgid "You may be disconnected shortly. If so, check %s for updates."
msgstr ""
msgid "Unable to get a valid AIM login hash."
@@ -6307,7 +6468,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] ""
msgstr[1] ""
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr ""
@@ -6329,6 +6490,9 @@ msgstr ""
msgid "Member Since"
msgstr ""
+msgid "Profile"
+msgstr ""
+
msgid "Your AIM connection may be lost."
msgstr ""
@@ -6575,6 +6739,7 @@ msgstr "සම්බන්ධ (_o)"
msgid "Get AIM Info"
msgstr ""
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr ""
@@ -6679,7 +6844,6 @@ msgstr ""
msgid "Attempting to connect to %s:%hu."
msgstr ""
-#, c-format
msgid "Attempting to connect via proxy server."
msgstr ""
@@ -6772,7 +6936,7 @@ msgstr "වෙනත්"
msgid "Visible"
msgstr "අක්‍රීය (_D)"
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
#, fuzzy
@@ -6860,17 +7024,50 @@ msgstr "දිනය"
msgid "Could not change buddy information."
msgstr "මිතුරාගේ තොරතුරු ඇතුළත් කරන්න."
-#, c-format
-msgid "%d needs Q&A"
-msgstr ""
+msgid "Mobile"
+msgstr "ජංගම"
+msgid "Note"
+msgstr "සටහන"
+
+#. callback
#, fuzzy
-msgid "Add buddy Q&A"
+msgid "Buddy Memo"
msgstr "මිතුරකු එක් කරන්න"
-msgid "Input answer here"
+msgid "Change his/her memo as you like"
+msgstr ""
+
+#, fuzzy
+msgid "_Modify"
+msgstr "සකසන්න"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "සකසන්න"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "සේවාදායකය (_S):"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
+#, c-format
+msgid "%u requires verification"
msgstr ""
+#, fuzzy
+msgid "Add buddy question"
+msgstr "මබගේ ලැයිස්තුවට මිතුරා එක් කළ යුතුද?"
+
+#, fuzzy
+msgid "Enter answer here"
+msgstr "රහස්පදය ඇතුළත් කරන්න"
+
msgid "Send"
msgstr "යවන්න"
@@ -6880,18 +7077,18 @@ msgstr ""
msgid "Authorization denied message:"
msgstr ""
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr ""
#, c-format
-msgid "%d needs authentication"
+msgid "%u needs authorization"
msgstr ""
#, fuzzy
msgid "Add buddy authorize"
msgstr "මබගේ ලැයිස්තුවට මිතුරා එක් කළ යුතුද?"
-msgid "Input request here"
+msgid "Enter request here"
msgstr ""
msgid "Would you be my friend?"
@@ -6912,7 +7109,7 @@ msgid "Failed sending authorize"
msgstr ""
#, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr ""
#, c-format
@@ -6954,6 +7151,9 @@ msgstr "මිතුරාගේ තොරතුරු ඇතුළත් කර
msgid "You can only search for permanent Qun\n"
msgstr ""
+msgid "(Invalid UTF-8 string)"
+msgstr ""
+
msgid "Not member"
msgstr ""
@@ -6992,15 +7192,18 @@ msgstr ""
msgid "Join QQ Qun"
msgstr ""
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
+msgid "Input request here"
msgstr ""
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "පිවිසුම් තොරතුරු"
+
msgid "Successfully joined Qun"
msgstr ""
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
msgid "QQ Qun Operation"
@@ -7010,7 +7213,7 @@ msgstr ""
msgid "Failed:"
msgstr "අසමත් විය"
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
#, fuzzy
@@ -7022,11 +7225,12 @@ msgid ""
"this operation will eventually remove this Qun."
msgstr ""
-msgid "Sorry, you are not our style ..."
+msgid "Sorry, you are not our style"
msgstr ""
-msgid "Successfully changed Qun member"
-msgstr ""
+#, fuzzy
+msgid "Successfully changed Qun members"
+msgstr "පිවිසුම් තොරතුරු"
#, fuzzy
msgid "Successfully changed Qun information"
@@ -7035,35 +7239,35 @@ msgstr "පිවිසුම් තොරතුරු"
msgid "You have successfully created a Qun"
msgstr ""
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr ""
msgid "Setup"
msgstr ""
#, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr ""
#, c-format
-msgid "%d request to join Qun %d"
+msgid "%u request to join Qun %u"
msgstr ""
#, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr ""
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr "මිතුරා ඉවත්කරන්න"
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "මිතුරා ඉවත්කරන්න"
#, c-format
msgid "Unknown-%d"
@@ -7177,6 +7381,12 @@ msgstr ""
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr ""
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr ""
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7184,7 +7394,7 @@ msgid "<i>Feel free to join us!</i> :)"
msgstr ""
#, fuzzy, c-format
-msgid "About OpenQ r%s"
+msgid "About OpenQ %s"
msgstr "%s සම්බන්ධව"
#, fuzzy
@@ -7205,6 +7415,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "%s සම්බන්ධව"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "ලිපිනය"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7236,7 +7450,6 @@ msgstr ""
msgid "QQ2008"
msgstr ""
-#. #endif
#, fuzzy
msgid "Connect by TCP"
msgstr "සම්බන්ධ (_o)"
@@ -7248,6 +7461,9 @@ msgstr "සේවාදායකයේ තොරතුරු"
msgid "Show server news"
msgstr ""
+msgid "Show chat room when msg comes"
+msgstr ""
+
msgid "Keep alive interval (seconds)"
msgstr ""
@@ -7255,10 +7471,7 @@ msgstr ""
msgid "Update interval (seconds)"
msgstr "පරිශීලක තොරතුරු"
-msgid "Can not decrypt server reply"
-msgstr ""
-
-msgid "Can not decrypt get server reply"
+msgid "Cannot decrypt server reply"
msgstr ""
#, c-format
@@ -7281,19 +7494,20 @@ msgid "Activation required"
msgstr "සත්‍යාපනය අසමත් විය"
#, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr ""
-msgid "Keep alive error"
+msgid "Could not decrypt server reply"
msgstr ""
-msgid "Requesting captcha ..."
-msgstr ""
+#, fuzzy
+msgid "Requesting captcha"
+msgstr "ඉතිරිය"
-msgid "Checking code of captcha ..."
+msgid "Checking captcha"
msgstr ""
-msgid "Failed captcha verify"
+msgid "Failed captcha verification"
msgstr ""
#, fuzzy
@@ -7304,35 +7518,28 @@ msgstr "පිළිඹිබුව සුරකින්න"
msgid "Enter code"
msgstr "රහස්පදය ඇතුළත් කරන්න"
-msgid "QQ Captcha Verifing"
+msgid "QQ Captcha Verification"
msgstr ""
msgid "Enter the text from the image"
msgstr ""
#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
+msgid "Unknown reply when checking password (0x%02X)"
msgstr ""
#, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
msgstr ""
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr ""
msgid "Socket error"
msgstr ""
-#, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr ""
-
msgid "Unable to read from socket"
msgstr ""
@@ -7342,11 +7549,13 @@ msgstr ""
msgid "Connection lost"
msgstr ""
-msgid "Get server ..."
-msgstr ""
+#, fuzzy
+msgid "Getting server"
+msgstr "SILC සේවාදායක සමඟ සම්බන්ධ වෙමින් පවතී"
-msgid "Request token"
-msgstr ""
+#, fuzzy
+msgid "Requesting token"
+msgstr "ඉතිරිය"
msgid "Couldn't resolve host"
msgstr ""
@@ -7355,16 +7564,13 @@ msgid "Invalid server or port"
msgstr ""
#, fuzzy
-msgid "Connecting server ..."
+msgid "Connecting to server"
msgstr "SILC සේවාදායක සමඟ සම්බන්ධ වෙමින් පවතී"
#, fuzzy
msgid "QQ Error"
msgstr "දෝෂය"
-msgid "Failed to send IM."
-msgstr ""
-
#, fuzzy, c-format
msgid ""
"Server News:\n"
@@ -7374,6 +7580,10 @@ msgid ""
msgstr "සේවා දායකය"
#, fuzzy, c-format
+msgid "%s:%s"
+msgstr "%s (%s)"
+
+#, fuzzy, c-format
msgid "From %s:"
msgstr "වෙතින්"
@@ -7383,32 +7593,29 @@ msgid ""
"%s"
msgstr "%s සඳහා සහතිකය"
-msgid "Unknow SERVER CMD"
-msgstr ""
+#, fuzzy
+msgid "Unknown SERVER CMD"
+msgstr "නොදන්නා හේතුවක්"
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
#, fuzzy
msgid "QQ Qun Command"
msgstr "විධානය"
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr ""
-
-msgid "Can not decrypt login reply"
+msgid "Could not decrypt login reply"
msgstr ""
#, fuzzy
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr "නොදන්නා හේතුවක්"
#, fuzzy
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr "නොදන්නා හේතුවක්"
#, c-format
@@ -8182,9 +8389,6 @@ msgstr ""
msgid "Unit"
msgstr "ඒකකය"
-msgid "Note"
-msgstr "සටහන"
-
msgid "Join Chat"
msgstr ""
@@ -8789,6 +8993,10 @@ msgstr ""
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr ""
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "සේවාදායකයේ තොරතුරු"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -8823,188 +9031,10 @@ msgid "Auth Domain"
msgstr ""
#, c-format
-msgid "Looking up %s"
-msgstr ""
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr ""
-
-#, c-format
-msgid "Signon: %s"
-msgstr ""
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr ""
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr ""
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr ""
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr ""
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr ""
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr ""
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr ""
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr ""
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr ""
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr ""
-
-#, c-format
-msgid "Failure."
-msgstr ""
-
-#, c-format
-msgid "Too many matches."
-msgstr ""
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr ""
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr ""
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr ""
-
-#, c-format
-msgid "Keyword ignored."
-msgstr ""
-
-#, c-format
-msgid "No keywords."
-msgstr ""
-
-#, c-format
-msgid "User has no directory information."
-msgstr ""
-
-#, c-format
-msgid "Country not supported."
-msgstr ""
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr ""
-
-#, fuzzy, c-format
-msgid "Incorrect username or password."
-msgstr "සාවද්‍ය රහස්පදයකී."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr ""
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr ""
-
-#, c-format
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
-msgstr ""
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr ""
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr ""
-
-msgid "Invalid Groupname"
-msgstr ""
-
-msgid "Connection Closed"
-msgstr ""
-
-msgid "Waiting for reply..."
-msgstr ""
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr ""
-
-msgid "Password Change Successful"
-msgstr ""
-
-msgid "_Group:"
-msgstr "සමූහය (_G):"
-
-msgid "Get Dir Info"
-msgstr ""
-
-msgid "Set Dir Info"
-msgstr ""
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr ""
-
-msgid "File transfer failed; other side probably canceled."
-msgstr ""
-
-msgid "Could not connect for transfer."
-msgstr ""
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr ""
-
-msgid "Save As..."
-msgstr "සුරකින අයුර..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr ""
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
+msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
-#, c-format
-msgid "%s has sent you a webcam invite, which is not yet supported."
+msgid "Your SMS was not delivered"
msgstr ""
msgid "Your Yahoo! message did not get sent."
@@ -9257,13 +9287,8 @@ msgstr ""
msgid "Last Update"
msgstr ""
-#, c-format
-msgid "User information for %s unavailable"
-msgstr ""
-
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr ""
msgid ""
@@ -9567,9 +9592,6 @@ msgstr ""
msgid "Extended away"
msgstr ""
-msgid "Mobile"
-msgstr "ජංගම"
-
msgid "Listening to music"
msgstr ""
@@ -9611,16 +9633,6 @@ msgstr ""
msgid "%x %X"
msgstr ""
-#, c-format
-msgid "Error Reading %s"
-msgstr ""
-
-#, 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 ""
-
msgid "Calculating..."
msgstr "ගණනය කරමින්..."
@@ -9694,6 +9706,12 @@ msgid "Unable to connect to %s: %s"
msgstr ""
#, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+
+#, c-format
msgid " - %s"
msgstr ""
@@ -9726,6 +9744,16 @@ msgstr ""
msgid "Address already in use."
msgstr ""
+#, c-format
+msgid "Error Reading %s"
+msgstr ""
+
+#, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+
msgid "Internet Messenger"
msgstr "අන්තර්ජාල පණිවිඩකරු"
@@ -9768,10 +9796,8 @@ msgstr ""
msgid "Use this buddy _icon for this account:"
msgstr ""
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr ""
+msgid "_Advanced"
+msgstr "සංකීර්ණ (_A)"
msgid "Use GNOME Proxy Settings"
msgstr ""
@@ -9806,9 +9832,6 @@ msgstr ""
msgid "you can see the butterflies mating"
msgstr ""
-msgid "Proxy Options"
-msgstr ""
-
msgid "Proxy _type:"
msgstr ""
@@ -9836,8 +9859,8 @@ msgstr "මූලික (_B)"
msgid "Create _this new account on the server"
msgstr ""
-msgid "_Advanced"
-msgstr "සංකීර්ණ (_A)"
+msgid "_Proxy"
+msgstr ""
msgid "Enabled"
msgstr "සක්‍රීය කළා"
@@ -9901,6 +9924,15 @@ msgstr ""
msgid "I_M"
msgstr ""
+msgid "_Audio Call"
+msgstr ""
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+msgid "_Video Call"
+msgstr ""
+
msgid "_Send File..."
msgstr ""
@@ -10037,6 +10069,9 @@ msgstr ""
msgid "/Tools/_Certificates"
msgstr ""
+msgid "/Tools/Custom Smile_ys"
+msgstr ""
+
msgid "/Tools/Plu_gins"
msgstr ""
@@ -10046,9 +10081,6 @@ msgstr ""
msgid "/Tools/Pr_ivacy"
msgstr ""
-msgid "/Tools/Smile_y"
-msgstr ""
-
msgid "/Tools/_File Transfers"
msgstr ""
@@ -10163,7 +10195,7 @@ msgstr ""
msgid "By status"
msgstr ""
-msgid "By log size"
+msgid "By recent log activity"
msgstr ""
#, c-format
@@ -10180,6 +10212,9 @@ msgstr ""
msgid "Re-enable"
msgstr ""
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr ""
@@ -10262,6 +10297,9 @@ msgstr ""
msgid "A_lias:"
msgstr ""
+msgid "_Group:"
+msgstr "සමූහය (_G):"
+
msgid "Auto_join when account becomes online."
msgstr ""
@@ -10312,12 +10350,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr ""
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-
msgid "_Buddy:"
msgstr ""
@@ -10392,6 +10424,19 @@ msgstr ""
msgid "/Conversation/Clea_r Scrollback"
msgstr ""
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "සංවාද"
+
+msgid "/Conversation/Media/_Audio Call"
+msgstr ""
+
+msgid "/Conversation/Media/_Video Call"
+msgstr ""
+
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr ""
+
msgid "/Conversation/Se_nd File..."
msgstr ""
@@ -10464,6 +10509,15 @@ msgstr ""
msgid "/Conversation/View Log"
msgstr ""
+msgid "/Conversation/Media/Audio Call"
+msgstr ""
+
+msgid "/Conversation/Media/Video Call"
+msgstr ""
+
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr ""
+
msgid "/Conversation/Send File..."
msgstr ""
@@ -10645,6 +10699,9 @@ msgstr "ශිල්පියා"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "සහාය"
@@ -10785,6 +10842,10 @@ msgstr "ජොර්ජියානු"
msgid "Ubuntu Georgian Translators"
msgstr ""
+#, fuzzy
+msgid "Khmer"
+msgstr "වෙනත්"
+
msgid "Kannada"
msgstr "කන්නාඩ"
@@ -10806,6 +10867,10 @@ msgstr "ලිතුවේනියානු"
msgid "Macedonian"
msgstr "මැසඩෝනියානු"
+#, fuzzy
+msgid "Mongolian"
+msgstr "මැසඩෝනියානු"
+
msgid "Bokmål Norwegian"
msgstr ""
@@ -10911,7 +10976,24 @@ msgid ""
msgstr ""
#, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, fuzzy, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin irc.freenode.net මත<BR><BR>"
+
+#, fuzzy, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin irc.freenode.net මත<BR><BR>"
msgid "Current Developers"
@@ -11229,16 +11311,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr "නව තැපැල් දැන්වීම"
-#, fuzzy
-msgid "_Copy Email Address"
-msgstr "විද්‍යුත් තැපැල් ලිපිනය"
-
-msgid "_Open Link in Browser"
-msgstr ""
-
-msgid "_Copy Link Location"
-msgstr ""
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -11472,6 +11544,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -11489,6 +11562,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -11519,10 +11593,26 @@ msgstr ""
msgid "Pidgin"
msgstr ""
-msgid "Open All Messages"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "ගණනය කරමින්..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
msgstr ""
#, c-format
@@ -11552,6 +11642,26 @@ msgid ""
"The 'Manual' browser command has been chosen, but no command has been set."
msgstr ""
+msgid "Open All Messages"
+msgstr ""
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr ""
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "මිතුරකු අල්ලාගන්න"
+
+msgid "Dismiss"
+msgstr ""
+
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr ""
+
+#, fuzzy
+msgid "No message"
+msgstr "පණිවිඩ"
+
msgid "The following plugins will be unloaded."
msgstr ""
@@ -11598,6 +11708,10 @@ msgstr ""
msgid "Select a file"
msgstr "ගොනුවක් තෝරන්න"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "මිතුරකු අල්ලාගන්න"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr ""
@@ -11668,6 +11782,50 @@ msgstr ""
msgid "Pounce Target"
msgstr ""
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "ලිවීම අරඹමින්"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "ලිවීම සඳහා විරාමයක්"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "ඇතුළත් වීම"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s අභාවිතවව සිට යළි ක්‍රියාත්මකයි (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "නැවත පැමිණියා"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "ලිවීම අවසන්"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "පිට වීම"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "අභාවිත වී"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "ඉවත්ව ඇත"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "පණිවිඩයක් යවන ලදි"
+
+#, c-format
+msgid "Unknown.... Please report this!"
+msgstr ""
+
msgid "Smiley theme failed to unpack."
msgstr ""
@@ -11688,6 +11846,12 @@ msgstr ""
msgid "Cl_ose conversations with the Escape key"
msgstr ""
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "මිතුරු ලැයිස්තුව"
+
+#. System Tray
msgid "System Tray Icon"
msgstr ""
@@ -11796,9 +11960,6 @@ msgstr ""
msgid "Cannot start browser configuration program."
msgstr ""
-msgid "ST_UN server:"
-msgstr ""
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr ""
@@ -11823,6 +11984,10 @@ msgstr ""
msgid "_End port:"
msgstr ""
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr ""
@@ -11849,6 +12014,10 @@ msgstr ""
msgid "No proxy"
msgstr ""
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "පරිශීලක (_U):"
@@ -12009,10 +12178,10 @@ msgstr ""
msgid "Auto-away"
msgstr ""
-msgid "Change status when _idle"
+msgid "_Minutes before becoming idle:"
msgstr ""
-msgid "_Minutes before becoming idle:"
+msgid "Change status when _idle"
msgstr ""
msgid "Change _status to:"
@@ -12163,6 +12332,12 @@ msgstr ""
msgid "Status for %s"
msgstr ""
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
msgid "Custom Smiley"
msgstr ""
@@ -12172,12 +12347,12 @@ msgstr ""
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
-msgid "Duplicate Shortcut"
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
msgstr ""
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
+msgid "Duplicate Shortcut"
msgstr ""
msgid "Please select an image for the smiley."
@@ -12190,17 +12365,22 @@ msgid "Add Smiley"
msgstr ""
#, fuzzy
-msgid "Smiley _Image"
-msgstr "පිළිඹිබුව සුරකින්න"
+msgid "_Image:"
+msgstr "පිළිඹිබුව (_I)"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr ""
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "වර්‍ග කිරීම"
#, fuzzy
msgid "Smiley"
msgstr "ප්‍රමාණය"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "වර්‍ග කිරීම"
+
msgid "Custom Smiley Manager"
msgstr ""
@@ -12311,6 +12491,16 @@ msgid ""
"Failed to load image '%s': reason not known, probably a corrupt image file"
msgstr "'%s'පිළිඹිබුව පූරණය දෝෂසහිතයි: හේතුව නොදන්නා අතර සමහරවිට දූෂිත පිළිඹිබු ගොනුවක් විය හැක"
+msgid "_Open Link"
+msgstr ""
+
+msgid "_Copy Link Location"
+msgstr ""
+
+#, fuzzy
+msgid "_Copy Email Address"
+msgstr "විද්‍යුත් තැපැල් ලිපිනය"
+
msgid "Save File"
msgstr ""
@@ -13252,9 +13442,6 @@ msgstr "මිතුරු ලැයිස්තුව_ සියල්ලටම
msgid "Only when docked"
msgstr "යාකර ඇති විටදී පමණක්"
-msgid "_Flash window when chat messages are received"
-msgstr "සංවාද_ පණිවුඩ ලැබීමේදී _කවුළුව දීප්තිමත් කරන්න"
-
msgid "Windows Pidgin Options"
msgstr "වින්ඩෝස් Pidgin වෛකල්පිත"
@@ -13303,6 +13490,28 @@ msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr "මෙම ඈඳුතුව XMPP සේවා දායකයන්හි නිරවද්‍යකරනයන් කිරීමට ප්‍රයෝජනවත් වේ."
#, fuzzy
+#~ msgid "Invite message"
+#~ msgstr "අන්තර්ජාල පණිවිඩකරු"
+
+#, fuzzy
+#~ msgid "Add buddy Q&A"
+#~ msgstr "මිතුරකු එක් කරන්න"
+
+#, fuzzy
+#~ msgid "Incorrect username or password."
+#~ msgstr "සාවද්‍ය රහස්පදයකී."
+
+#~ msgid "Save As..."
+#~ msgstr "සුරකින අයුර..."
+
+#, fuzzy
+#~ msgid "Smiley _Image"
+#~ msgstr "පිළිඹිබුව සුරකින්න"
+
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "සංවාද_ පණිවුඩ ලැබීමේදී _කවුළුව දීප්තිමත් කරන්න"
+
+#, fuzzy
#~ msgid "Successed:"
#~ msgstr "වේගය:"
@@ -13311,13 +13520,6 @@ msgstr "මෙම ඈඳුතුව XMPP සේවා දායකයන්හ
#~ msgstr "සමූහය ඉවත් කරන්න"
#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr "%s (%s)"
-
-#, fuzzy
#~ msgid "Error password: %s"
#~ msgstr "රහස්පදය ඇතුළත් කරන්න"
diff --git a/po/sk.po b/po/sk.po
index 7d3cbb83f0..5c5f58e4fb 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin 2.5.5\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-22 16:18-0500\n"
+"POT-Creation-Date: 2009-04-30 10:40-0400\n"
"PO-Revision-Date: 2009-02-22 21:22+0100\n"
"Last-Translator: loptosko <loptosko@gmail.com>\n"
"Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
@@ -613,19 +613,6 @@ msgstr ""
msgid "Send To"
msgstr "Odoslať do"
-msgid "Invite message"
-msgstr "Správa pozvánky"
-
-msgid "Invite"
-msgstr "Pozvať"
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Zadajte, prosím, meno používateľa, ktorého chcete pozvať,\n"
-"spolu s nepovinným textom pozvánky."
-
msgid "Conversation"
msgstr "Rozhovor"
@@ -882,6 +869,41 @@ msgstr "Všetky rozhovory"
msgid "System Log"
msgstr "Systémový záznam"
+#, fuzzy
+msgid "Calling ... "
+msgstr "Počíta sa..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "Prijať"
+
+msgid "Reject"
+msgstr "Odmietnuť"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "Opustili ste kanál %s%s"
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "E-maily"
@@ -917,6 +939,9 @@ msgstr "Pokračovať"
msgid "IM"
msgstr "Napísať správu"
+msgid "Invite"
+msgstr "Pozvať"
+
msgid "(none)"
msgstr "(žiadne)"
@@ -1120,7 +1145,6 @@ msgstr "používateľ %s sa stal neprítomným (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "používateľ %s vám poslal správu. (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "Neznáma udalosť sledovania. Oznámte to, prosím!"
@@ -1528,6 +1552,28 @@ msgstr "GntLastlog"
msgid "Lastlog plugin."
msgstr "Modul Lastlog."
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "Tune URL"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "účty"
@@ -1628,13 +1674,6 @@ msgstr "Prijať certifikát pre %s?"
msgid "SSL Certificate Verification"
msgstr "Overenie SSL certifikátu"
-#. Number of actions
-msgid "Accept"
-msgstr "Prijať"
-
-msgid "Reject"
-msgstr "Odmietnuť"
-
msgid "_View Certificate..."
msgstr "_Prezrieť certifikát..."
@@ -1781,6 +1820,18 @@ msgstr "používateľ %s opustil miestnosť."
msgid "%s left the room (%s)."
msgstr "používateľ %s opustil miestnosť (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Pozvať na konferenciu"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Zadajte, prosím, meno používateľa, ktorého chcete pozvať, spolu s nepovinnou "
+"pozývacou správou."
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "Nepodarilo sa nadviazať spojenie: %s"
@@ -2603,6 +2654,32 @@ msgstr "Uložiť offline správy do sledovania"
msgid "Do not ask. Always save in pounce."
msgstr "Nepýtať sa. Vždy uložiť do sledovania."
+#, fuzzy
+msgid "One Time Password"
+msgstr "Zadajte heslo"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2999,6 +3076,7 @@ msgstr "Vyberte chat pre priateľa: %s"
msgid "Add to chat..."
msgstr "Pridať na chat..."
+#. Global
msgid "Available"
msgstr "Pripojený"
@@ -3343,6 +3421,17 @@ msgid ""
msgstr ""
"Server neuznal vami vybraný názov účtu. Zrejme obsahuje nedovolené znaky."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "Toto meno už používa niekto iný"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Prezývka"
+
msgid "Cannot change nick"
msgstr "Nepodarilo sa zmeniť prezývku"
@@ -3618,6 +3707,41 @@ msgstr "Chybná výzva zo servera"
msgid "SASL error"
msgstr "Chyba SASL"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "Nebol uvedený dôvod"
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Verzia nepodporovaná"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"Nepodarilo sa založiť spojenie so serverom:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"Nepodarilo sa založiť spojenie so serverom:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "Spojenie sa nedá inicializovať"
+
+msgid "Unable to create socket"
+msgstr "Nepodarilo sa vytvoriť socket"
+
+msgid "Write error"
+msgstr "Chyba zápisu"
+
msgid "Full Name"
msgstr "Celé meno"
@@ -3684,6 +3808,10 @@ msgstr "Klient"
msgid "Operating System"
msgstr "Operačný systém"
+#, fuzzy
+msgid "Local Time"
+msgstr "Lokálny súbor:"
+
msgid "Last Activity"
msgstr "Posledná aktivita"
@@ -4013,9 +4141,6 @@ msgstr "Hľadať miestnosti"
msgid "You require encryption, but it is not available on this server."
msgstr "Požadovali ste šifrovanie, ale na tomto serveri nie je dostupné."
-msgid "Write error"
-msgstr "Chyba zápisu"
-
msgid "Ping timeout"
msgstr "Interval ping"
@@ -4024,14 +4149,9 @@ msgstr "Chyba čítania"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"Nepodarilo sa založiť spojenie so serverom:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "Nepodarilo sa vytvoriť socket"
msgid "Invalid XMPP ID"
msgstr "Chybné XMPP ID"
@@ -4039,6 +4159,10 @@ msgstr "Chybné XMPP ID"
msgid "Invalid XMPP ID. Domain must be set."
msgstr "XMPP ID je chybné. Musíte zadať doménu."
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Nepodarilo sa spojiť so serverom."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "Registrácia %s@%s bola úspešná"
@@ -4132,6 +4256,12 @@ msgstr "Server nepodporuje blokovanie"
msgid "Not Authorized"
msgstr "Neautorizovaný"
+msgid "Mood"
+msgstr "Nálada"
+
+msgid "Now Listening"
+msgstr "Práve počúva"
+
msgid "Both"
msgstr "Obe"
@@ -4153,12 +4283,6 @@ msgstr "Žiadne"
msgid "Subscription"
msgstr "Prihlásenie"
-msgid "Mood"
-msgstr "Nálada"
-
-msgid "Now Listening"
-msgstr "Práve počúva"
-
msgid "Mood Text"
msgstr "Popis nálady"
@@ -4396,18 +4520,24 @@ msgstr "Nepodarilo sa vykopnúť používateľa %s"
msgid "Unable to ping user %s"
msgstr "Nepodarilo sa poslať ping používateľovi %s"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr "Nepodarilo sa poslať bzzz, pretože o používateľovi %s nič nevieme."
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr "Nepodarilo sa poslať bzzz, pretože používateľ %s môže byť odpojený."
-#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+#, fuzzy, c-format
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "Nepodarilo sa poslať bzzz, pretože používateľ %s to nepodporuje."
+#, c-format
+msgid "Buzzing %s..."
+msgstr "Posielam bzzz používateľovi %s..."
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
msgid "Buzz"
@@ -4417,9 +4547,36 @@ msgstr "Bzzz"
msgid "%s has buzzed you!"
msgstr "Používateľ %s vám poslal bzzz!"
-#, c-format
-msgid "Buzzing %s..."
-msgstr "Posielam bzzz používateľovi %s..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "Nepodarilo sa odoslať súbor používateľovi %s, chybné JID"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "Používateľovi %s nie je možné odoslať súbor, práve je odpojený"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr ""
+"Používateľovi %s nie je možné odoslať súbor, nie je zapísaný v prítomných "
+"používateľoch"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "Registrácia zlyhala"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "Vyberte, prosím, zdroj používateľa %s, na ktorý chcete odoslať súbor"
+
+msgid "Select a Resource"
+msgstr "Vyberte zdroj"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "Začať _chat"
msgid "config: Configure a chat room."
msgstr "config: Nastavenie miestnosti chatu."
@@ -4574,6 +4731,21 @@ msgstr "Chyba pripojenia na chat %s"
msgid "Error in chat %s"
msgstr "Chyba v chate %s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "Pri otváraní súboru sa vyskytla chyba."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "Prenos súboru zlyhal"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Nepodarilo sa otvoriť súbor „%s“: %s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr "Nedá sa odoslať súbor používateľovi %s, nepodporuje prenosy súborov"
@@ -4599,9 +4771,6 @@ msgstr ""
msgid "Please select the resource of %s to which you would like to send a file"
msgstr "Vyberte, prosím, zdroj používateľa %s, na ktorý chcete odoslať súbor"
-msgid "Select a Resource"
-msgstr "Vyberte zdroj"
-
msgid "Edit User Mood"
msgstr "Zmeniť náladu používateľa"
@@ -6408,7 +6577,7 @@ msgstr ""
"mailová adresa, alebo musí byť prvý znak písmeno a musí obsahovať len "
"písmená, číslice a medzery, alebo len číslice."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr "Nesprávne používateľské meno."
@@ -6424,7 +6593,7 @@ msgstr "Váš účet je momentálne pozastavený"
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "Služba AOL je dočasne nedostupná."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6618,7 +6787,7 @@ msgstr[0] "Z neznámeho dôvodu ste prišli o %hu správ od používateľa %s."
msgstr[1] "Z neznámeho dôvodu ste prišli o %hu správu od používateľa %s."
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
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "Nemôžem odoslať správu: %s"
@@ -7216,6 +7385,38 @@ msgstr "Obnoviť"
msgid "Could not change buddy information."
msgstr "Nebolo možné zmeniť informácie o priateľovi."
+msgid "Mobile"
+msgstr "Mobilný"
+
+msgid "Note"
+msgstr "Poznámka"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "Ikona priateľa"
+
+msgid "Change his/her memo as you like"
+msgstr ""
+
+#, fuzzy
+msgid "_Modify"
+msgstr "Upraviť"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "Upraviť"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "Server zaneprázdnený"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
#, c-format
msgid "%u requires verification"
msgstr "%u vyžaduje overenie"
@@ -7524,6 +7725,13 @@ msgstr "<p><b>Písači krásnych patchov</b>:<br>\n"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<p><b>Uznanie</b>:<br>\n"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<p><b>Pôvodný autor</b>:<br>\n"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr "<p><i>A všetci chalani zo zákulisia...</i><br>\n"
@@ -7549,6 +7757,10 @@ msgstr "Obnoviť všetky QQ Quny"
msgid "About OpenQ"
msgstr "O OpenQ"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Upraviť adresu"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7656,7 +7868,6 @@ msgstr ""
"Neznámy kód odpovede pri prihlasovaní (0x%02X):\n"
"%s"
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "Nepodarilo sa pripojiť."
@@ -8560,9 +8771,6 @@ msgstr "Organizácia"
msgid "Unit"
msgstr "Jednotka"
-msgid "Note"
-msgstr "Poznámka"
-
msgid "Join Chat"
msgstr "Pripojiť sa k rozhovoru"
@@ -9252,202 +9460,12 @@ msgid "Auth Domain"
msgstr "Autentifikačná doména"
#, c-format
-msgid "Looking up %s"
-msgstr "Vyhľadáva sa %s"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Spojenie s %s zlyhalo"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Odhlásenie: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "Nepodarilo sa zapísať do súboru %s."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "Nepodarilo sa čítať zo súboru %s."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "Správa je príliš dlhá, z konca bolo odstránených %s bajtov."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s nie je práve prihlásený."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "Varovanie na %s nie je dovolené."
-
-#, 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"
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "Chat v %s nie je dostupný."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "Používateľovi %s posielate správy príliš rýchlo."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "Prišli ste o správu od používateľa %s, pretože bola príliš veľká."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr ""
-"Prišli ste o správu od používateľa %s, pretože bola odoslaná príliš rýchlo."
-
-#, c-format
-msgid "Failure."
-msgstr "Zlyhanie."
-
-#, c-format
-msgid "Too many matches."
-msgstr "Príliš veľa výskytov."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "Vyžaduje viac parametrov."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "Služba dir je dočasne nedostupná"
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "Vyhľadávanie e-mailu obmedzené."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "Kľúčové slovo bolo ignorované."
-
-#, c-format
-msgid "No keywords."
-msgstr "Žiadne kľúče."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "Používateľ nemá žiadne podrobnosti v adresári."
-
-#, c-format
-msgid "Country not supported."
-msgstr "Krajina nie je podporovaná."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Neznáme zlyhanie: %s."
-
-#, c-format
-msgid "Incorrect username or password."
-msgstr "Nesprávne používateľské meno alebo heslo."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "Služba je dočasne nedostupná."
-
-#, 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ť."
-
-#, 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 ""
-"Odhlasovali a prihlasovali ste sa príliš často. Počkajte 10 minút a skúste "
-"to znovu. Ak sa budete ďalej pokúšať, budete musieť čakať ešte dlhšie."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "Pri prihlasovaní sa vyskytla neznáma chyba: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "Vyskytla sa neznáma chyba %d. Informácie: %s"
-
-msgid "Invalid Groupname"
-msgstr "Chybný názov skupiny"
-
-msgid "Connection Closed"
-msgstr "Spojenie ukončené"
-
-msgid "Waiting for reply..."
-msgstr "Čaká sa na odpoveď..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "TOC sa vrátil z prestávky. Môžete znovu posielať správy."
-
-msgid "Password Change Successful"
-msgstr "Heslo bolo úspešne zmenené"
-
-msgid "_Group:"
-msgstr "_Skupina:"
-
-msgid "Get Dir Info"
-msgstr "Získať informácie o priečinku"
-
-msgid "Set Dir Info"
-msgstr "Nastaviť informácie o priečinku"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "Nepodarilo sa otvoriť %s pre zápis!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "Prenos súboru zlyhal; druhá strana ho asi zrušila."
-
-msgid "Could not connect for transfer."
-msgstr "Nepodarilo sa spojiť na prenos."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "Nebolo možné zapísať hlavičku súboru. Súbor sa nebude posielať"
-
-msgid "Save As..."
-msgstr "Uložiť ako..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] ""
-"Používateľ %s vyžaduje od používateľa %s potvrdenie %d súborov: %s (%.2f %s)%"
-"s%s"
-msgstr[1] ""
-"Používateľ %s vyžaduje od používateľa %s potvrdenie %d súboru: %s (%.2f %s)%s"
-"%s"
-msgstr[2] ""
-"Používateľ %s vyžaduje od používateľa %s potvrdenie %d súborov: %s (%.2f %s)%"
-"s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s od vás požaduje súbor"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "Modul protokolu TOC"
-
-#, 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á."
+msgid "Your SMS was not delivered"
+msgstr ""
+
msgid "Your Yahoo! message did not get sent."
msgstr "Vaša Yahoo! správa nebola odoslaná."
@@ -10053,9 +10071,6 @@ msgstr "Nerušiť"
msgid "Extended away"
msgstr "Dlhšie neprítomný"
-msgid "Mobile"
-msgstr "Mobilný"
-
msgid "Listening to music"
msgstr "Počúva hudbu"
@@ -10097,18 +10112,6 @@ msgstr "+++ Používateľ %s prestal byť nečinný"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "Chyba počas čítania %s"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"Počas načítavania vášho %s sa vyskytla chyba. Zoznam nebol načítaný a starý "
-"súbor bol premenovaný na %s~."
-
msgid "Calculating..."
msgstr "Počíta sa..."
@@ -10189,6 +10192,14 @@ msgstr "Chyba pri zápise do %s: %s"
msgid "Unable to connect to %s: %s"
msgstr "Nepodarilo sa pripojiť ku %s: %s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+"Server vyžaduje na prihlásenie TLS/SSL, ale podpora pre TLS/SSL nebola "
+"nájdená."
+
#, c-format
msgid " - %s"
msgstr " - %s"
@@ -10222,6 +10233,18 @@ msgstr "Pripojenie odmietnuté."
msgid "Address already in use."
msgstr "Adresu už používa niekto iný"
+#, c-format
+msgid "Error Reading %s"
+msgstr "Chyba počas čítania %s"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"Počas načítavania vášho %s sa vyskytla chyba. Zoznam nebol načítaný a starý "
+"súbor bol premenovaný na %s~."
+
msgid "Internet Messenger"
msgstr "Internetový komunikátor"
@@ -10265,10 +10288,8 @@ msgstr "Upozornenia na nové správy"
msgid "Use this buddy _icon for this account:"
msgstr "Používať túto ikonu priateľa pre účet:"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "Možnosti %s"
+msgid "_Advanced"
+msgstr "_Pokročilé"
msgid "Use GNOME Proxy Settings"
msgstr "Použiť nastavenie proxy prostredia Gnome"
@@ -10303,9 +10324,6 @@ msgstr "Ak sa pozriete úplne zblízka"
msgid "you can see the butterflies mating"
msgstr "uvidíte ako sa motýle pária"
-msgid "Proxy Options"
-msgstr "Možnosti proxy"
-
msgid "Proxy _type:"
msgstr "_Typ proxy:"
@@ -10333,8 +10351,9 @@ msgstr "_Základné"
msgid "Create _this new account on the server"
msgstr "Vytvoriť _takýto účet na serveri"
-msgid "_Advanced"
-msgstr "_Pokročilé"
+#, fuzzy
+msgid "_Proxy"
+msgstr "Proxy"
msgid "Enabled"
msgstr "Povolený"
@@ -10414,6 +10433,17 @@ msgstr "Zobraziť podrobnosti"
msgid "I_M"
msgstr "I_M"
+#, fuzzy
+msgid "_Audio Call"
+msgstr "Pridať chat"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Video chat"
+
msgid "_Send File..."
msgstr "Poslať _súbor..."
@@ -10550,6 +10580,10 @@ msgstr "/Nástroje/_Sledovanie priateľov"
msgid "/Tools/_Certificates"
msgstr "/Nástroje/_Certifikáty"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Nástroje/_Smajlík"
+
msgid "/Tools/Plu_gins"
msgstr "/Nástroje/_Moduly"
@@ -10559,9 +10593,6 @@ msgstr "/Nástroje/_Nastavenia"
msgid "/Tools/Pr_ivacy"
msgstr "/Nástroje/_Súkromie"
-msgid "/Tools/Smile_y"
-msgstr "/Nástroje/_Smajlík"
-
msgid "/Tools/_File Transfers"
msgstr "/Nástroje/_Prenosy súborov"
@@ -10680,8 +10711,8 @@ msgstr "Ručne"
msgid "By status"
msgstr "Podľa stavu"
-msgid "By log size"
-msgstr "Podľa veľkosti záznamu"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10697,6 +10728,9 @@ msgstr "Pripojiť"
msgid "Re-enable"
msgstr "Povoliť účet"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr "Vitajte späť!"
@@ -10784,6 +10818,9 @@ msgstr ""
msgid "A_lias:"
msgstr "P_rezývka:"
+msgid "_Group:"
+msgstr "_Skupina:"
+
msgid "Auto_join when account becomes online."
msgstr "Znovu_pripojiť keď sa prihlásite."
@@ -10835,14 +10872,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr "Pozvať priateľa do miestnosti chatu"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Zadajte, prosím, meno používateľa, ktorého chcete pozvať, spolu s nepovinnou "
-"pozývacou správou."
-
msgid "_Buddy:"
msgstr "_Priateľ:"
@@ -10917,6 +10946,22 @@ msgstr "/Rozhovor/_Uložiť ako..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Rozhovor/Vymazať"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Rozhovor/Via_c"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Rozhovor/Via_c"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Rozhovor/_Skryť"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Rozhovor/Zobraziť _záznam"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Rozhovor/Odos_lať súbor..."
@@ -10989,6 +11034,18 @@ msgstr "/Rozhovor"
msgid "/Conversation/View Log"
msgstr "/Rozhovor/Zobraziť _záznam"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Rozhovor/Viac"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Rozhovor/_Skryť"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Rozhovor/Viac"
+
msgid "/Conversation/Send File..."
msgstr "/Rozhovor/Odos_lať súbor..."
@@ -11172,6 +11229,9 @@ msgstr "umelec"
msgid "Ka-Hing Cheung"
msgstr "Ka-Hing Cheung"
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "podpora"
@@ -11311,6 +11371,10 @@ msgstr "gruzínčina"
msgid "Ubuntu Georgian Translators"
msgstr "Ubuntu gruzínski prekladatelia"
+#, fuzzy
+msgid "Khmer"
+msgstr "Iné"
+
msgid "Kannada"
msgstr "kannadčina"
@@ -11779,15 +11843,6 @@ msgstr "Písmo, ktoré použiť pre upozornenie na písanie"
msgid "Enable typing notification"
msgstr "Zapnúť upozornenie na písanie"
-msgid "_Copy Email Address"
-msgstr "_Kopírovať e-mailovu adresu"
-
-msgid "_Open Link in Browser"
-msgstr "_Otvoriť odkaz v prehliadači"
-
-msgid "_Copy Link Location"
-msgstr "_Kopírovať adresu odkazu"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12030,13 +12085,14 @@ msgstr "Otvoriť priečinok záznamov"
msgid "%s %s. Try `%s -h' for more information.\n"
msgstr "%s %s. „%s -h“ zobrazí viac informácií.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12060,13 +12116,14 @@ msgstr ""
" --display=DISPLAY X obrazovka, ktorú použiť\n"
" -v, --version zobrazí verziu programu a skončí\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12125,11 +12182,23 @@ msgstr "Pidgin"
msgid "Exiting because another libpurple client is already running.\n"
msgstr "Je spustený iný klient libpurple, ukončuje sa.\n"
-msgid "Open All Messages"
-msgstr "Otvoriť všetky správy"
+msgid "/_Media"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Máte poštu!</span>"
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "Počíta sa..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -12160,6 +12229,27 @@ 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."
+msgid "Open All Messages"
+msgstr "Otvoriť všetky správy"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Máte poštu!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "Nové sledovanie priateľa"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Máte poštu!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "Neznáma správa"
+
msgid "The following plugins will be unloaded."
msgstr "Nasledujúce moduly budú zastavené."
@@ -12206,6 +12296,10 @@ msgstr "<b>Podrobnosti o module</b>"
msgid "Select a file"
msgstr "Vyberte súbor"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Upraviť sledovanie priateľa"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "Koho sledovať"
@@ -12276,6 +12370,50 @@ msgstr "_Opakujúce sa"
msgid "Pounce Target"
msgstr "Cieľ sledovania"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "Začne písať"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "Preruší písanie"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "Prihlási sa"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "používateľ %s prestal byť nečinný (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "Prestane byť neprítomný"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "Prestal písať"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "Odhlási sa"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "Stane sa nečinný"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "Pri neprítomnosti"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Odoslať správu"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "Neznáma udalosť sledovania. Oznámte to, prosím!"
+
msgid "Smiley theme failed to unpack."
msgstr "Nepodarilo sa rozbaliť tému smajlíkov."
@@ -12299,6 +12437,12 @@ msgstr "Klávesové skratky"
msgid "Cl_ose conversations with the Escape key"
msgstr "Z_avrieť rozhovory klávesom Esc"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Zoznam priateľov"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "Ikona v oznamovacej oblasti"
@@ -12409,9 +12553,6 @@ msgstr "Nebolo možné spustiť program na nastavenie proxy."
msgid "Cannot start browser configuration program."
msgstr "Nebolo možné spustiť program na nastavenie prehliadača."
-msgid "ST_UN server:"
-msgstr "ST_UN server:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">Príklad: stunserver.org</span>"
@@ -12436,6 +12577,10 @@ msgstr "_Počiatočný port:"
msgid "_End port:"
msgstr "_Koncový port:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr "Proxy server a prehliadač"
@@ -12626,12 +12771,12 @@ msgstr "Pri neprítomnosti a nečinnosti"
msgid "Auto-away"
msgstr "Automatická neprítomnosť"
-msgid "Change status when _idle"
-msgstr "Zmeniť stav pri _nečinnosti"
-
msgid "_Minutes before becoming idle:"
msgstr "_Počet minút pred nečinnosťou:"
+msgid "Change status when _idle"
+msgstr "Zmeniť stav pri _nečinnosti"
+
msgid "Change _status to:"
msgstr "Zmeniť _stav na:"
@@ -12780,6 +12925,12 @@ msgstr "Ul_ožiť a Použiť"
msgid "Status for %s"
msgstr "Stav pre %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
msgid "Custom Smiley"
msgstr "Vlastný smajlík"
@@ -12789,15 +12940,15 @@ msgstr "Je treba viac dát"
msgid "Please provide a shortcut to associate with the smiley."
msgstr "Zadajte, prosím, skratku pre tohoto smajlíka."
-msgid "Duplicate Shortcut"
-msgstr "Duplicitná skratka"
-
+#, fuzzy, c-format
msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
+"A custom smiley for '%s' already exists. Please use a different shortcut."
msgstr ""
"Vlastný smajlík pre vybranú skratku už existuje. Prosím vyberte inú skratku."
+msgid "Duplicate Shortcut"
+msgstr "Duplicitná skratka"
+
msgid "Please select an image for the smiley."
msgstr "Prosím, vyberte obrázok pre smajlíka."
@@ -12807,16 +12958,22 @@ msgstr "Upraviť smajlíka"
msgid "Add Smiley"
msgstr "Pridať smajlíka"
-msgid "Smiley _Image"
-msgstr "_Obrázok smajlíka"
+#, fuzzy
+msgid "_Image:"
+msgstr "O_brázok"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr "S_kratka smajlíka"
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "Skratka"
msgid "Smiley"
msgstr "Smajlík"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "Skratka"
+
msgid "Custom Smiley Manager"
msgstr "Správca vlastných smajlíkov"
@@ -12942,6 +13099,16 @@ msgstr ""
"Nepodarilo sa načítať obrázok „%s“: dôvod je neznámy, pravdepodobne je "
"poškodený súbor"
+#, fuzzy
+msgid "_Open Link"
+msgstr "_Otvoriť odkaz:"
+
+msgid "_Copy Link Location"
+msgstr "_Kopírovať adresu odkazu"
+
+msgid "_Copy Email Address"
+msgstr "_Kopírovať e-mailovu adresu"
+
msgid "Save File"
msgstr "Uložiť súbor"
@@ -13960,6 +14127,189 @@ msgstr "Odosielanie a prijímanie nespracovaných XMPP slôh."
msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr "Tento modul je vhodný pre ladenie XMPP serverov alebo klientov."
+#~ msgid "Invite message"
+#~ msgstr "Správa pozvánky"
+
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Zadajte, prosím, meno používateľa, ktorého chcete pozvať,\n"
+#~ "spolu s nepovinným textom pozvánky."
+
+#~ msgid "Looking up %s"
+#~ msgstr "Vyhľadáva sa %s"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "Spojenie s %s zlyhalo"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Odhlásenie: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "Nepodarilo sa zapísať do súboru %s."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "Nepodarilo sa čítať zo súboru %s."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "Správa je príliš dlhá, z konca bolo odstránených %s bajtov."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s nie je práve prihlásený."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "Varovanie na %s nie je dovolené."
+
+#~ 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"
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "Chat v %s nie je dostupný."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "Používateľovi %s posielate správy príliš rýchlo."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "Prišli ste o správu od používateľa %s, pretože bola príliš veľká."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr ""
+#~ "Prišli ste o správu od používateľa %s, pretože bola odoslaná príliš "
+#~ "rýchlo."
+
+#~ msgid "Failure."
+#~ msgstr "Zlyhanie."
+
+#~ msgid "Too many matches."
+#~ msgstr "Príliš veľa výskytov."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "Vyžaduje viac parametrov."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "Služba dir je dočasne nedostupná"
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "Vyhľadávanie e-mailu obmedzené."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "Kľúčové slovo bolo ignorované."
+
+#~ msgid "No keywords."
+#~ msgstr "Žiadne kľúče."
+
+#~ msgid "User has no directory information."
+#~ msgstr "Používateľ nemá žiadne podrobnosti v adresári."
+
+#~ msgid "Country not supported."
+#~ msgstr "Krajina nie je podporovaná."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Neznáme zlyhanie: %s."
+
+#~ msgid "Incorrect username or password."
+#~ msgstr "Nesprávne používateľské meno alebo heslo."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "Služba je dočasne nedostupná."
+
+#~ 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ť."
+
+#~ 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 ""
+#~ "Odhlasovali a prihlasovali ste sa príliš často. Počkajte 10 minút a "
+#~ "skúste to znovu. Ak sa budete ďalej pokúšať, budete musieť čakať ešte "
+#~ "dlhšie."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "Pri prihlasovaní sa vyskytla neznáma chyba: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "Vyskytla sa neznáma chyba %d. Informácie: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "Chybný názov skupiny"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Spojenie ukončené"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "Čaká sa na odpoveď..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "TOC sa vrátil z prestávky. Môžete znovu posielať správy."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "Heslo bolo úspešne zmenené"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Získať informácie o priečinku"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Nastaviť informácie o priečinku"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "Nepodarilo sa otvoriť %s pre zápis!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr "Prenos súboru zlyhal; druhá strana ho asi zrušila."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "Nepodarilo sa spojiť na prenos."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "Nebolo možné zapísať hlavičku súboru. Súbor sa nebude posielať"
+
+#~ msgid "Save As..."
+#~ msgstr "Uložiť ako..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] ""
+#~ "Používateľ %s vyžaduje od používateľa %s potvrdenie %d súborov: %s (%.2f %"
+#~ "s)%s%s"
+#~ msgstr[1] ""
+#~ "Používateľ %s vyžaduje od používateľa %s potvrdenie %d súboru: %s (%.2f %"
+#~ "s)%s%s"
+#~ msgstr[2] ""
+#~ "Používateľ %s vyžaduje od používateľa %s potvrdenie %d súborov: %s (%.2f %"
+#~ "s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s od vás požaduje súbor"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "Modul protokolu TOC"
+
+#~ msgid "%s Options"
+#~ msgstr "Možnosti %s"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Možnosti proxy"
+
+#~ msgid "By log size"
+#~ msgstr "Podľa veľkosti záznamu"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_Otvoriť odkaz v prehliadači"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "ST_UN server:"
+
+#~ msgid "Smiley _Image"
+#~ msgstr "_Obrázok smajlíka"
+
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "S_kratka smajlíka"
+
#~ msgid "Unable to retrieve MSN Address Book"
#~ msgstr "Nebolo možné prevziať zoznam adries MSN"
@@ -14603,8 +14953,5 @@ msgstr "Tento modul je vhodný pre ladenie XMPP serverov alebo klientov."
#~ msgid "/Buddies/Show/Show Idle Times"
#~ msgstr "/Priatelia/Zobraziť/Časy nečinnosti"
-#~ msgid "/Conversation/_Hide"
-#~ msgstr "/Rozhovor/_Skryť"
-
#~ msgid "Norwegian"
#~ msgstr "nórčina"
diff --git a/po/sl.po b/po/sl.po
index 87f7ecc774..abff8dd82b 100644
--- a/po/sl.po
+++ b/po/sl.po
@@ -6,11 +6,11 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Pidgin 2.5.5\n"
+"Project-Id-Version: Pidgin 2.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-22 11:03-0500\n"
-"PO-Revision-Date: 2009-02-22 10:26+0100\n"
-"Last-Translator: Martin Srebotnjak <miles@filmsi.net>\n"
+"POT-Creation-Date: 2009-05-26 22:19-0700\n"
+"PO-Revision-Date: 2009-05-02 16:54+0100\n"
+"Last-Translator: Martin Srebotnjak <miles@filmsi.net>\n"
"Language-Team: Martin Srebotnjak <miles@filmsi.net>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -613,19 +613,6 @@ msgstr ""
msgid "Send To"
msgstr "Pošlji k"
-msgid "Invite message"
-msgstr "Sporočilo povabila"
-
-msgid "Invite"
-msgstr "Povabi"
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Vnesite ime uporabnika, ki ga želite povabiti,\n"
-"dodate lahko tudi sporočilo - povabilo."
-
msgid "Conversation"
msgstr "Pogovor"
@@ -889,6 +876,39 @@ msgstr "Vsi pogovori"
msgid "System Log"
msgstr "Sistemski dnevnik"
+msgid "Calling ... "
+msgstr "Klicanje ..."
+
+msgid "Hangup"
+msgstr "Odloži"
+
+#. Number of actions
+msgid "Accept"
+msgstr "Sprejmi"
+
+msgid "Reject"
+msgstr "Zavrni"
+
+msgid "Call in progress."
+msgstr "Klic je v teku."
+
+msgid "The call has been terminated."
+msgstr "Klic je bil končan."
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr "%s želi z vami začeti zvočno sejo."
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr "%s poskuša z vami začeti sejo v nepodprtem mediju."
+
+msgid "You have rejected the call."
+msgstr "Zavrnili ste klic."
+
+msgid "call: Make an audio call."
+msgstr "call: Opravite zvočni klic."
+
msgid "Emails"
msgstr "E-naslovi"
@@ -925,6 +945,9 @@ msgstr "Nadaljuj"
msgid "IM"
msgstr "Sporoči"
+msgid "Invite"
+msgstr "Povabi"
+
msgid "(none)"
msgstr "(brez)"
@@ -1128,7 +1151,6 @@ msgstr "%s je postal odsoten. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "Uporabnik %s vam je poslal sporočilo. (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "Neznan dogodek opozorila. Poročajte o tem!"
@@ -1537,6 +1559,29 @@ msgstr "GntLastlog"
msgid "Lastlog plugin."
msgstr "Vtičnik Lastlog."
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+"\n"
+"Pridobivanje TinyURL ..."
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr "Ustvari TinyURL le za naslove URL te dolžina ali daljše"
+
+msgid "TinyURL (or other) address prefix"
+msgstr "Predpona naslova TinyURL (ali drugega)"
+
+msgid "TinyURL"
+msgstr "TinyURL"
+
+msgid "TinyURL plugin"
+msgstr "Vtičnik TinyURL"
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr "Ob prejemu sporočil z URL-ji uporabi TinyURL za enostavnejše kopiranje"
+
msgid "accounts"
msgstr "Računi"
@@ -1637,13 +1682,6 @@ msgstr "Želite sprejeti digitalno potrdilo za %s?"
msgid "SSL Certificate Verification"
msgstr "Preverjanje verodostojnosti digitalnega potrdila SSL"
-#. Number of actions
-msgid "Accept"
-msgstr "Sprejmi"
-
-msgid "Reject"
-msgstr "Zavrni"
-
msgid "_View Certificate..."
msgstr "_Pokaži digitalno potrdilo ..."
@@ -1746,6 +1784,8 @@ msgstr "+++ %s se je prijavil(a)"
msgid "+++ %s signed off"
msgstr "+++ %s se je odjavil(a)"
+#. Unknown error
+#. Unknown error!
msgid "Unknown error"
msgstr "Neznana napaka"
@@ -1792,6 +1832,17 @@ msgstr "%s nas je zapustil."
msgid "%s left the room (%s)."
msgstr "%s nas je zapustil (%s)."
+msgid "Invite to chat"
+msgstr "Povabi na klepet"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Prosim vnesite ime uporabnika, ki ga želite povabiti, dodate pa lahko še "
+"povabilo."
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "Povezave ni mogoče vzpostaviti: %s"
@@ -2646,6 +2697,34 @@ msgstr "Shrani brezpovezavna sporočila v opozorilo"
msgid "Do not ask. Always save in pounce."
msgstr "Ne sprašuj. Vedno shrani v opozorilo."
+msgid "One Time Password"
+msgstr "Enkratno geslo"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr "Podpora za enkratno geslo"
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr "Vsilite, da se gesla uporabijo le enkrat."
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+"Omogoča, da vsilite (posebej za vsak račun), da so neshranjena gesla "
+"uporabljena le za posamezno uspešno povezavo.\n"
+"Opomba: Geslo računa ni potrebno shraniti, da bi to delovalo."
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2885,9 +2964,8 @@ msgid "Purple Person"
msgstr "Vijolična oseba"
#. Creating the options for the protocol
-#, fuzzy
msgid "Local Port"
-msgstr "Okraj"
+msgstr "Krajevna vrata"
msgid "Bonjour"
msgstr "Bonjour"
@@ -3046,6 +3124,7 @@ msgstr "Izberite klepet za prijatelja: %s"
msgid "Add to chat..."
msgstr "Dodaj k pomenku ..."
+#. Global
msgid "Available"
msgstr "Na voljo"
@@ -3392,6 +3471,16 @@ msgstr ""
"Vaše izbrano ime računa je strežnik zavrnil. Najverjetneje vsebuje "
"neveljavne znake."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "Vzdevek \"%s\" že obstaja."
+
+msgid "Nickname in use"
+msgstr "Vzdevek je zaseden"
+
msgid "Cannot change nick"
msgstr "Vzdevka ne morem spremeniti"
@@ -3658,12 +3747,44 @@ msgstr "Neveljaven odgovor strežnika."
msgid "Server does not use any supported authentication method"
msgstr "Strežnik ne uporablja nobene podprte metode overovitve"
+msgid "You require encryption, but it is not available on this server."
+msgstr "Zahtevate šifriranje, vendar to na tem strežniku ni na voljo."
+
msgid "Invalid challenge from server"
msgstr "Neveljaven poziv strežnika"
msgid "SASL error"
msgstr "Napaka SASL"
+msgid "The BOSH connection manager terminated your session."
+msgstr "Upravitelj povezave BOSH je zaključil vašo sejo."
+
+msgid "No session ID given"
+msgstr "ID seje ni podan"
+
+msgid "Unsupported version of BOSH protocol"
+msgstr "Nepodprta različica protokola BOSH"
+
+msgid "Unable to establish a connection with the server"
+msgstr "Povezave s strežnikom ni mogoče vzpostaviti"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"Povezave s strežnikom ni mogoče vzpostaviti:\n"
+"%s"
+
+msgid "Unable to establish SSL connection"
+msgstr "Povezave SSL ni mogoče vzpostaviti"
+
+msgid "Unable to create socket"
+msgstr "Ni mogoče ustvariti vtičnice"
+
+msgid "Write error"
+msgstr "Napaka pri pisanju"
+
msgid "Full Name"
msgstr "Polno ime"
@@ -3728,6 +3849,9 @@ msgstr "Odjemalec"
msgid "Operating System"
msgstr "Operacijski sistem"
+msgid "Local Time"
+msgstr "Krajevni čas"
+
msgid "Last Activity"
msgstr "Zadnja dejavnost"
@@ -3887,6 +4011,14 @@ msgstr "Prednost stika"
msgid "Resource"
msgstr "Vir"
+#, c-format
+msgid "%s ago"
+msgstr ""
+
+#, fuzzy
+msgid "Logged off"
+msgstr "Prijavljeni"
+
msgid "Middle Name"
msgstr "Drugo ime"
@@ -4053,11 +4185,17 @@ msgstr "Izberite konferenčni strežnik za pogovor"
msgid "Find Rooms"
msgstr "Najdi sobe"
-msgid "You require encryption, but it is not available on this server."
-msgstr "Zahtevate šifriranje, vendar to na tem strežniku ni na voljo."
+#, fuzzy
+msgid "Affiliations:"
+msgstr "Psevdonim:"
-msgid "Write error"
-msgstr "Napaka pri pisanju"
+#, fuzzy
+msgid "No users found"
+msgstr "Ni najdenih uporabnikov"
+
+#, fuzzy
+msgid "Roles:"
+msgstr "Funkcija"
msgid "Ping timeout"
msgstr "Časovna prekoračitev pinga"
@@ -4067,14 +4205,11 @@ msgstr "Napaka pri branju"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"Povezave s strežnikom ni mogoče vzpostaviti:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "Ni mogoče ustvariti vtičnice"
+"Po neuspehu neposredne povezave ni bilo mogoče najti drugih povezovalnih "
+"metod XMPP.\n"
msgid "Invalid XMPP ID"
msgstr "Neveljaven ID za XMPP"
@@ -4082,6 +4217,9 @@ msgstr "Neveljaven ID za XMPP"
msgid "Invalid XMPP ID. Domain must be set."
msgstr "Neveljaven ID za XMPP. Domena mora biti določena."
+msgid "Malformed BOSH Connect Server"
+msgstr "Nepravilno oblikovan povezovalni strežnik BOSH"
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "Registracija %s@%s uspela!"
@@ -4173,6 +4311,12 @@ msgstr "Strežnik ne podpira blokiranja"
msgid "Not Authorized"
msgstr "Nepooblaščeno"
+msgid "Mood"
+msgstr "Razpoloženje"
+
+msgid "Now Listening"
+msgstr "Zdaj posluša"
+
msgid "Both"
msgstr "Oboje"
@@ -4194,12 +4338,6 @@ msgstr "brez"
msgid "Subscription"
msgstr "Naročilo"
-msgid "Mood"
-msgstr "Razpoloženje"
-
-msgid "Now Listening"
-msgstr "Zdaj posluša"
-
msgid "Mood Text"
msgstr "Besedilo razpoloženja"
@@ -4439,16 +4577,24 @@ msgid "Unable to ping user %s"
msgstr "Uporabnika %s ni mogoče pingniti"
#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
-msgstr "Ni mogoče stresti, saj o uporabniku %s ni ničesar znanega."
+msgid "Unable to buzz, because there is nothing known about %s."
+msgstr "Ni mogoče stresti, saj o osebi %s ni ničesar znanega."
+
+#, c-format
+msgid "Unable to buzz, because %s might be offline."
+msgstr "Ni mogoče stresti, saj je oseba %s morda nepovezana."
#, c-format
-msgid "Unable to buzz, because user %s might be offline."
-msgstr "Ni mogoče stresti, saj je uporabnik %s morda nepovezan."
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
+msgstr ""
+"Osebe %s ni mogoče stresti, ker tega dejanja ne podpira ali zdaj ne želi "
+"prejemati tresenja."
#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
-msgstr "Uporabnika %s ni mogoče stresti, ker tega dejanja ne podpira."
+msgid "Buzzing %s..."
+msgstr "Stresanje uporabnika %s ..."
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
@@ -4460,8 +4606,32 @@ msgid "%s has buzzed you!"
msgstr "Uporabnik %s vas je stresel."
#, c-format
-msgid "Buzzing %s..."
-msgstr "Stresanje uporabnika %s ..."
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "Medija z %s ni mogoče iniciirati: neveljaven JID"
+
+#, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "Medija z %s ni mogoče iniciirati: uporabnik ni povezan"
+
+#, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr ""
+"Medija %s ni mogoče iniciirati: niste naročeni na stanja prisotnosti osebe"
+
+msgid "Media Initiation Failed"
+msgstr "Iniciacija medija ni uspela"
+
+#, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "Izberite vir %s, s katerim bi radi začeli medijsko sejo."
+
+msgid "Select a Resource"
+msgstr "Izberite vir"
+
+msgid "Initiate Media"
+msgstr "Iniciiraj medij"
msgid "config: Configure a chat room."
msgstr "config: Nastavi pogovorno sobo."
@@ -4481,16 +4651,18 @@ msgstr "topic [nova tema]: Oglej si ali spremeni temo."
msgid "ban &lt;user&gt; [reason]: Ban a user from the room."
msgstr "ban &lt;uporabnik&gt; [razlog]: Prepovej uporabnika v sobi."
+#, fuzzy
msgid ""
-"affiliate &lt;user&gt; &lt;owner|admin|member|outcast|none&gt;: Set a user's "
-"affiliation with the room."
+"affiliate &lt;owner|admin|member|outcast|none&gt; [nick1] [nick2] ...: Get "
+"the users with an affiliation or set users' affiliation with the room."
msgstr ""
"affiliate &lt;uporabnik&gt; &lt;lastnik|skrbnik|član|izločenec|nihče&gt;: "
"Nastavitev uporabnikovega statusa v sobi."
+#, fuzzy
msgid ""
-"role &lt;user&gt; &lt;moderator|participant|visitor|none&gt;: Set a user's "
-"role in the room."
+"role &lt;moderator|participant|visitor|none&gt; [nick1] [nick2] ...: Get the "
+"users with an role or set users' role with the room."
msgstr ""
"role &lt;uporabnik&gt; &lt;moderator|participant|visitor|none&gt;: "
"Nastavitev uporabnikove vloge v sobi."
@@ -4616,6 +4788,18 @@ msgstr "Napaka pri pridruževanju pomenku %s"
msgid "Error in chat %s"
msgstr "Napaka v pomenku %s"
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "V notranje pasovnem zlogovnem pretoku je prišlo do napake\n"
+
+msgid "Transfer was closed."
+msgstr "Prenos je bil zaprt."
+
+msgid "Failed to open the file"
+msgstr "Datoteke ni mogoče odpreti"
+
+msgid "Failed to open in-band bytestream"
+msgstr "Znotraj pasovnega zlogovnega pretoka ni uspelo odpreti"
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4642,9 +4826,6 @@ msgstr ""
msgid "Please select the resource of %s to which you would like to send a file"
msgstr "Izberite, kateremu viru %s bi radi poslali datoteko"
-msgid "Select a Resource"
-msgstr "Izberite vir"
-
msgid "Edit User Mood"
msgstr "Uredi razpoloženje uporabnika"
@@ -5290,28 +5471,20 @@ msgid "Windows Live ID authentication:Invalid response"
msgstr "Overjanje Windows Live ID: Neveljaven odziv"
#, c-format
-msgid "%s is not a valid group."
-msgstr "%s ni veljavna skupina."
-
-msgid "Unknown error."
-msgstr "Neznana napaka."
-
-#, c-format
-msgid "%s on %s (%s)"
-msgstr "%s na %s (%s)"
-
-#, c-format
msgid "%s just sent you a Nudge!"
msgstr "Uporabnik %s vam je ravnokar pomežiknil!"
-#. char *adl = g_strndup(payload, len);
-#, c-format
-msgid "Unknown error (%d)"
+#, fuzzy, c-format
+msgid "Unknown error (%d): %s"
msgstr "Neznana napaka (%d)"
msgid "Unable to add user"
msgstr "Ni mogoče dodati uporabnika"
+#, c-format
+msgid "Unknown error (%d)"
+msgstr "Neznana napaka (%d)"
+
msgid "The following users are missing from your addressbook"
msgstr "Naslednji uporabniki manjkajo v vašem adresarju"
@@ -5338,15 +5511,12 @@ msgstr "%s ni veljaven račun potnega lista."
msgid "Service Temporarily Unavailable."
msgstr "Storitev je trenutno nedosegljiva."
+msgid "Unknown error."
+msgstr "Neznana napaka."
+
msgid "Mobile message was not sent because it was too long."
msgstr "Mobilnega sporočila ni mogoče poslati, ker je predolgo."
-msgid "Unable to rename group"
-msgstr "Skupine ni mogoče preimenovati"
-
-msgid "Unable to delete group"
-msgstr "Skupine ni mogoče izbrisati"
-
#, c-format
msgid ""
"The MSN server will shut down for maintenance in %d minute. You will "
@@ -5501,14 +5671,6 @@ msgstr "Sporočila ni bilo poslano, ker je prišlo do napake v stikalni plošči
msgid "Message may have not been sent because an unknown error occurred:"
msgstr "Sporočila morda ni bilo poslano, ker je prišlo do neznane napake:"
-#, c-format
-msgid "%s has added you to his or her buddy list."
-msgstr "%s vas je dodal(a) na svoj seznam prijateljev."
-
-#, c-format
-msgid "%s has removed you from his or her buddy list."
-msgstr "%s vas je odstranil(a) s svojega seznama prijateljev."
-
msgid "Delete Buddy from Address Book?"
msgstr "Želite izbrisati prijatelja iz adresarja?"
@@ -5538,6 +5700,28 @@ msgid "MSN Protocol Plugin"
msgstr "Vtičnik za protokol MSN"
#, c-format
+msgid "%s is not a valid group."
+msgstr "%s ni veljavna skupina."
+
+#, c-format
+msgid "%s on %s (%s)"
+msgstr "%s na %s (%s)"
+
+msgid "Unable to rename group"
+msgstr "Skupine ni mogoče preimenovati"
+
+msgid "Unable to delete group"
+msgstr "Skupine ni mogoče izbrisati"
+
+#, c-format
+msgid "%s has added you to his or her buddy list."
+msgstr "%s vas je dodal(a) na svoj seznam prijateljev."
+
+#, c-format
+msgid "%s has removed you from his or her buddy list."
+msgstr "%s vas je odstranil(a) s svojega seznama prijateljev."
+
+#, c-format
msgid "No such user: %s"
msgstr "Uporabnik ne obstaja: %s"
@@ -5566,6 +5750,8 @@ msgid "Lost connection with server"
msgstr "Izgubljena povezava s strežnikom"
#. Can't write _()'d strings in array initializers. Workaround.
+#. khc: then use N_() in the array initializer and use _() when they are
+#. used
msgid "New mail messages"
msgstr "Nova prejeta sporočila"
@@ -6464,7 +6650,7 @@ msgstr ""
"s črko in lahko vsebujejo le črke, številke in presledke ali pa so "
"sestavljena zgolj iz števil."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr "Neveljavno uporabniško ime."
@@ -6480,7 +6666,7 @@ msgstr "Vaš račun je trenutno zamrznjen."
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "Storitev AOL neposrednih sporočil je trenuno nedosegljiva."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6686,7 +6872,7 @@ msgstr[2] "Spregledali ste %hu sporočili od %s, ker sta bili neveljavni."
msgstr[3] "Spregledali ste %hu sporočila od %s, ker so bila neveljavna."
# Data is assumed to be the destination sn
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "Ni moč poslati sporočila: %s"
@@ -7291,6 +7477,34 @@ msgstr "Posodobi"
msgid "Could not change buddy information."
msgstr "Podatkov o prijatelju ni mogoče spremeniti."
+msgid "Mobile"
+msgstr "Mobilec"
+
+msgid "Note"
+msgstr "Opomba"
+
+#. callback
+msgid "Buddy Memo"
+msgstr "Zapisek prijatelja"
+
+msgid "Change his/her memo as you like"
+msgstr "Spremenite njegov/njen zapisek, kakor vam je drago"
+
+msgid "_Modify"
+msgstr "_Spremeni"
+
+msgid "Memo Modify"
+msgstr "Spremeni zapisek"
+
+msgid "Server says:"
+msgstr "Strežnik pravi:"
+
+msgid "Your request was accepted."
+msgstr "Vaša zahteva je bila sprejeta."
+
+msgid "Your request was rejected."
+msgstr "Vaša zahteva je bila zavrnjena."
+
#, c-format
msgid "%u requires verification"
msgstr "%u zahteva preverjanje"
@@ -7597,7 +7811,13 @@ msgid "<p><b>Lovely Patch Writers</b>:<br>\n"
msgstr "<p><b>Nori razvijalci obližev</b>:<br>\n"
msgid "<p><b>Acknowledgement</b>:<br>\n"
-msgstr "<b>Zahvala</b>:<br>\n"
+msgstr "<b>Zahvale</b>:<br>\n"
+
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<p><b>Tankovestni preizkuševalci</b>:<br>\n"
+
+msgid "and more, please let me know... thank you!))"
+msgstr "in drugi, prosim, javite se ... hvala!))"
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr "<p><i>In vsi fantje iz ozadja ...</i><br>\n"
@@ -7624,6 +7844,9 @@ msgstr "Posodobi vse QQ Qune"
msgid "About OpenQ"
msgstr "O OpenQ"
+msgid "Modify Buddy Memo"
+msgstr "Spremeni zapisek prijatelja"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7731,7 +7954,6 @@ msgstr ""
"Neznana koda odgovora pri prijavljanju (0x%02X):\n"
"%s"
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "Ni se bilo mogoče povezati."
@@ -8628,9 +8850,6 @@ msgstr "Organizacija"
msgid "Unit"
msgstr "Enota"
-msgid "Note"
-msgstr "Opomba"
-
msgid "Join Chat"
msgstr "Pridruži se klepetu"
@@ -9320,196 +9539,12 @@ msgid "Auth Domain"
msgstr "Avtoriziraj domeno"
#, c-format
-msgid "Looking up %s"
-msgstr "Poizvedujem za %s"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Povezovanje na %s ni uspelo"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Prijavljanje: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "Datoteke %s ni bilo mogoče zapisati."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "Datoteke %s ni bilo mogoče prebrati."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "Sporočilo je predolgo, zato je bilo skrajšano za %s znakov."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s trenutno ni prijavljen."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "Opozarjanje %s ni dovoljeno."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr ""
-"Sporočilo je bilo izpuščeno, ker presegate omejitev hitrosti strežnika."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "Pomenek v %s ni dostopen."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "Prehitro pošiljate sporočila %s."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "Ker je bilo preveliko, ste zgrešili sporočilo, ki vam ga je poslal %s."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "Zgrešili ste sporočilo od %s, ker je bilo poslano prehitro."
-
-#, c-format
-msgid "Failure."
-msgstr "Neuspeh."
-
-#, c-format
-msgid "Too many matches."
-msgstr "Preveč zadetkov."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "Potrebujem več selekcije."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "Imeniška storitev je trenutno nedosegljiva."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "Poizvedba po e-poštnem naslovu je omejena."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "Ključna beseda zanemarjena."
-
-#, c-format
-msgid "No keywords."
-msgstr "Brez ključnih besed."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "Uporabnik nima imeniških informacij."
-
-#, c-format
-msgid "Country not supported."
-msgstr "Država ni podprta."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Neznan vzrok neuspeha: %s."
-
-#, c-format
-msgid "Incorrect username or password."
-msgstr "Neveljavno uporabniško ime ali geslo."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "Storitev je trenutno nedostopna."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "Vaša raven opozoril je trenutno previsoka, da bi se lahko prijavili."
-
-#, 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 ""
-"Prijavljali in odjavljali ste se prepogosto. Počakajte deset minut in "
-"poskusite ponovno. Če tega ne boste upoštevali, bo trajalo še dlje."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "Pri prijavljanju je prišlo do neznane napake: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "Prišlo je do neznane napake %d. Info: %s"
-
-msgid "Invalid Groupname"
-msgstr "Neveljavno ime skupine"
-
-msgid "Connection Closed"
-msgstr "Povezava zaprta"
-
-msgid "Waiting for reply..."
-msgstr "Čakanje odgovora ..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "TOC je nazaj z odmora. Sedaj lahko spet pošiljate sporočila."
-
-msgid "Password Change Successful"
-msgstr "Sprememba gesla uspešna"
-
-msgid "_Group:"
-msgstr "_Skupina:"
-
-msgid "Get Dir Info"
-msgstr "Prikaži imeniške podatke"
-
-msgid "Set Dir Info"
-msgstr "Nastavi imeniške podatke"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "Ne morem odpreti %s za pisanje!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr ""
-"Prenos datoteke ni bil uspešen; verjetno je prijatelj preklical prenos."
-
-msgid "Could not connect for transfer."
-msgstr "Ni se bilo mogoče povezati za prenos."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "Ni bilo mogoče zapisati glave datoteke. Datoteka ne bo prenešena."
-
-msgid "Save As..."
-msgstr "Shrani kot ..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s zahteva od %s, da sprejme %d datotek: %s (%.2f %s)%s%s"
-msgstr[1] "%s zahteva od %s, da sprejme %d datoteko: %s (%.2f %s)%s%s"
-msgstr[2] "%s zahteva od %s, da sprejme %d datoteki: %s (%.2f %s)%s%s"
-msgstr[3] "%s zahteva od %s, da sprejme %d datoteke: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s zahteva, da jim pošljete datoteko"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "Vtičnik za protokol TOC"
-
-#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr "%s vam je poslal povabilo s spletno kamero, kar še ni podprto."
+msgid "Your SMS was not delivered"
+msgstr "Vaš SMS ni bil dostavljen"
+
msgid "Your Yahoo! message did not get sent."
msgstr "Vaše sporočilo za Yahoo! ni bilo poslano."
@@ -9533,6 +9568,34 @@ msgstr ""
msgid "Add buddy rejected"
msgstr "Dodajanje prijatelja zavrnjeno"
+#. Some error in the received stream
+#, fuzzy
+msgid "Received invalid data"
+msgstr "Na povezavi s strežnikom prejeti neveljavni podatki."
+
+#. Password incorrect
+#, fuzzy
+msgid "Incorrect Password"
+msgstr "Neveljavno geslo"
+
+#. security lock from too many failed login attempts
+msgid "Account locked: Too many failed login attempts"
+msgstr ""
+
+#. the username does not exist
+#, fuzzy
+msgid "Username does not exist"
+msgstr "Uporabnik ne obstaja"
+
+#. indicates a lock of some description
+msgid "Account locked: See the debug log"
+msgstr ""
+
+#. username or password missing
+#, fuzzy
+msgid "Username or password missing"
+msgstr "Neveljavno uporabniško ime ali geslo"
+
#, c-format
msgid ""
"The Yahoo server has requested the use of an unrecognized authentication "
@@ -10114,9 +10177,6 @@ msgstr "Ne moti"
msgid "Extended away"
msgstr "Obsežneje odsoten"
-msgid "Mobile"
-msgstr "Mobilec"
-
msgid "Listening to music"
msgstr "Posluša glasbo"
@@ -10158,18 +10218,6 @@ msgstr "+++ %s je postal dejaven"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "Napaka pri branju %s"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"Pri branju vašega %s je prišlo do napake, zato ni bil naložen. Stara "
-"datoteka se je preimenovala v %s~."
-
msgid "Calculating..."
msgstr "Preračunavanje ..."
@@ -10257,6 +10305,14 @@ msgid "Unable to connect to %s: %s"
msgstr "Napaka pri povezovanju z %s: %s"
#, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+"Povezava z %s ni uspela: strežnik zahteva TLS/SSL za prijavo, vendar podpore "
+"za TLS/SSL ni mogoče najti."
+
+#, c-format
msgid " - %s"
msgstr " - %s"
@@ -10289,6 +10345,18 @@ msgstr "Povezava zavrnjena."
msgid "Address already in use."
msgstr "Naslov je že uporabljen."
+#, c-format
+msgid "Error Reading %s"
+msgstr "Napaka pri branju %s"
+
+#, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"Pri branju vašega %s je prišlo do napake. Datoteka ni bial naložena, stara "
+"datoteka pa je bila preimenovana v %s~."
+
msgid "Internet Messenger"
msgstr "Spletni sel"
@@ -10331,10 +10399,8 @@ msgstr "_Obveščanje o prispeli pošti"
msgid "Use this buddy _icon for this account:"
msgstr "Za ta račun uporabi to _ikono prijatelja:"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s Možnosti"
+msgid "_Advanced"
+msgstr "N_apredno"
msgid "Use GNOME Proxy Settings"
msgstr "Uporabi nastavitve posredovalnih strežnikov GNOME"
@@ -10369,9 +10435,6 @@ msgstr "Če pogledate zelo pozorno,"
msgid "you can see the butterflies mating"
msgstr "lahko opazite metulje, ki se parijo"
-msgid "Proxy Options"
-msgstr "Možnosti posredovalnega strežnika"
-
msgid "Proxy _type:"
msgstr "Vrsta posredovalnega s_trežnika:"
@@ -10399,8 +10462,8 @@ msgstr "_Osnovno"
msgid "Create _this new account on the server"
msgstr "_Ustvari ta nov račun na strežniku"
-msgid "_Advanced"
-msgstr "N_apredno"
+msgid "_Proxy"
+msgstr "_Posredovalni strežnik"
msgid "Enabled"
msgstr "Omogočen"
@@ -10451,16 +10514,17 @@ msgstr ""
msgid "Please update the necessary fields."
msgstr "Prosimo, posodobite potrebna polja."
-msgid "Room _List"
-msgstr "Se_znam sob"
+#, fuzzy
+msgid "A_ccount"
+msgstr "Ra_čun:"
msgid ""
"Please enter the appropriate information about the chat you would like to "
"join.\n"
msgstr "Vnesite ustrezne informacije o pomenku, ki se mu želite pridružiti.\n"
-msgid "_Account:"
-msgstr "_Račun:"
+msgid "Room _List"
+msgstr "Se_znam sob"
msgid "_Block"
msgstr "_Zavrni"
@@ -10477,6 +10541,15 @@ msgstr "_Informacije"
msgid "I_M"
msgstr "_Sporoči"
+msgid "_Audio Call"
+msgstr "_Zvočni klic"
+
+msgid "Audio/_Video Call"
+msgstr "Zvočni/_video klic"
+
+msgid "_Video Call"
+msgstr "_Video klic"
+
msgid "_Send File..."
msgstr "_Pošlji datoteko ..."
@@ -10612,6 +10685,9 @@ msgstr "/Orodja/_Opozorila prijateljev"
msgid "/Tools/_Certificates"
msgstr "/Orodja/_Digitalna potrdila"
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Orodja/Smejč_ki po meri"
+
msgid "/Tools/Plu_gins"
msgstr "/Orodja/Vtični_ki"
@@ -10621,9 +10697,6 @@ msgstr "/Orodja/_Nastavitve"
msgid "/Tools/Pr_ivacy"
msgstr "/Orodja/_Zasebnost"
-msgid "/Tools/Smile_y"
-msgstr "/Orodja/Smej_ček"
-
msgid "/Tools/_File Transfers"
msgstr "/Orodja/_Prenosi datotek"
@@ -10743,8 +10816,8 @@ msgstr "ročno"
msgid "By status"
msgstr "po stanju"
-msgid "By log size"
-msgstr "po obsegu dnevnika"
+msgid "By recent log activity"
+msgstr "po zadnji dejavnosti"
#, c-format
msgid "%s disconnected"
@@ -10760,6 +10833,9 @@ msgstr "Ponovno poveži"
msgid "Re-enable"
msgstr "Ponovno omogoči"
+msgid "SSL FAQs"
+msgstr "Pogosta vprašanja o SSL"
+
msgid "Welcome back!"
msgstr "Dobrodošli nazaj!"
@@ -10852,6 +10928,9 @@ msgstr ""
msgid "A_lias:"
msgstr "Psev_donim:"
+msgid "_Group:"
+msgstr "_Skupina:"
+
msgid "Auto_join when account becomes online."
msgstr "Samo_dejno se pridruži, ko račun postane povezan."
@@ -10903,14 +10982,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr "Povabi prijatelja v pogovorno sobo"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Prosim vnesite ime uporabnika, ki ga želite povabiti, dodate pa lahko še "
-"povabilo."
-
msgid "_Buddy:"
msgstr "_Prijatelj:"
@@ -10985,6 +11056,18 @@ msgstr "/Pogovor/_Shrani kot ..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Pogovor/Po_čisti pogovor"
+msgid "/Conversation/M_edia"
+msgstr "/Pogovor/M_ediji"
+
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Pogovor/Mediji/_Zvočni klic"
+
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Pogovor/Mediji/_Video klic"
+
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Pogovor/Mediji/Zvočni\\/Video _klic"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Pogovor/_Pošlji datoteko ..."
@@ -11057,6 +11140,15 @@ msgstr "/Pogovor"
msgid "/Conversation/View Log"
msgstr "/Pogovor/Pokaži dnevnik"
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Pogovor/Mediji/Zvočni klic"
+
+msgid "/Conversation/Media/Video Call"
+msgstr "/Pogovor/Mediji/Video klic"
+
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Pogovor/Mediji/Zvočni\\/Video klic"
+
msgid "/Conversation/Send File..."
msgstr "/Pogovor/Pošlji datoteko ..."
@@ -11241,6 +11333,9 @@ msgstr "oblikovalec"
msgid "Ka-Hing Cheung"
msgstr "Ka-Hing Čung"
+msgid "voice and video"
+msgstr "glas in video"
+
msgid "support"
msgstr "podpora"
@@ -11380,6 +11475,9 @@ msgstr "gruzijsko"
msgid "Ubuntu Georgian Translators"
msgstr "gruzijski prevajalci za Ubuntu"
+msgid "Khmer"
+msgstr "kmersko"
+
msgid "Kannada"
msgstr "kannadsko"
@@ -11849,15 +11947,6 @@ msgstr "Pisava za obvestilo o tipkanju"
msgid "Enable typing notification"
msgstr "Omogoči obveščanje o tipkanju"
-msgid "_Copy Email Address"
-msgstr "_Kopiraj naslov e-pošte"
-
-msgid "_Open Link in Browser"
-msgstr "_Odpri povezavo v brskalniku"
-
-msgid "_Copy Link Location"
-msgstr "_Kopiraj lokacijo povezave"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -11899,11 +11988,9 @@ msgstr ""
msgid "Save Image"
msgstr "Shrani sliko"
-#, c-format
msgid "_Save Image..."
msgstr "_Shrani sliko ..."
-#, c-format
msgid "_Add Custom Smiley..."
msgstr "_Dodaj smejčka po meri ..."
@@ -12110,6 +12197,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12124,6 +12212,7 @@ msgstr ""
"\n"
" -c, --config=DIR uporabi DIR za nastavitvene datoteke\n"
" -d, --debug izpiši sporočila za razhroščevanje na stdout\n"
+" -f, --force-online vsili povezanost ne glede na stanje omrežja\n"
" -h, --help izpiši to pomoč in končaj program\n"
" -m, --multiple ne dovoljuj le enega zagnanega programa\n"
" -n, --nologin brez samodejne prijave\n"
@@ -12140,6 +12229,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12153,6 +12243,7 @@ msgstr ""
"\n"
" -c, --config=DIR uporabi DIR za nastavitvene datoteke\n"
" -d, --debug izpiši sporočila za razhroščevanje na stdout\n"
+" -f, --force-online vsili povezanost ne glede na stanje omrežja\n"
" -h, --help izpiši to pomoč in končaj program\n"
" -m, --multiple ne dovoljuj le enega zagnanega programa\n"
" -n, --nologin brez samodejne prijave\n"
@@ -12197,11 +12288,22 @@ msgstr "Pidgin"
msgid "Exiting because another libpurple client is already running.\n"
msgstr "Program se bo zaprl, ker je že zagnan drug odjemalec libpurple.\n"
-msgid "Open All Messages"
-msgstr "Odpri vsa sporočila"
+msgid "/_Media"
+msgstr "/_Mediji"
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Dobili ste pošto!</span>"
+msgid "/Media/_Hangup"
+msgstr "/Mediji/_Odloži"
+
+msgid "Calling..."
+msgstr "Klicanje ..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr "%s želi z vami začeti zvočno/video sejo."
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr "%s želi z vami začeti video sejo."
#, c-format
msgid "%s has %d new message."
@@ -12236,6 +12338,25 @@ msgstr ""
"Vašega brskalnika ni bilo mogoče zagnati, ker ste v nastavitvah izbrali "
"poljuben brskalnik, a niste nastavili ukaza."
+msgid "Open All Messages"
+msgstr "Odpri vsa sporočila"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Dobili ste pošto!</span>"
+
+msgid "New Pounces"
+msgstr "Nova opozorila prijatelja"
+
+msgid "Dismiss"
+msgstr "Opusti"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr ""
+"<span weight=\"bold\" size=\"larger\">Dobili ste opozorilo prijatelja!</span>"
+
+msgid "No message"
+msgstr "Ni sporočil"
+
msgid "The following plugins will be unloaded."
msgstr "Odloženi bodo naslednji vtičniki."
@@ -12284,10 +12405,16 @@ msgstr "<b>Podrobnosti o vtičniku</b>"
msgid "Select a file"
msgstr "Izberi datoteko"
+msgid "Modify Buddy Pounce"
+msgstr "Spremeni opozorilo prijatelja"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "Opozori koga"
+msgid "_Account:"
+msgstr "_Račun:"
+
msgid "_Buddy name:"
msgstr "_Ime prijatelja:"
@@ -12354,6 +12481,50 @@ msgstr "Ponavl_jajoč"
msgid "Pounce Target"
msgstr "Tarča opozorila"
+#, c-format
+msgid "Started typing"
+msgstr "Začel je tipkati"
+
+#, c-format
+msgid "Paused while typing"
+msgstr "Postal je med tipkanjem"
+
+#, c-format
+msgid "Signed on"
+msgstr "Prijavil se je"
+
+#, c-format
+msgid "Returned from being idle"
+msgstr "Postal je spet dejaven"
+
+#, c-format
+msgid "Returned from being away"
+msgstr "Vrnil se je iz odsotnosti"
+
+#, c-format
+msgid "Stopped typing"
+msgstr "Prenehal je tipkati"
+
+#, c-format
+msgid "Signed off"
+msgstr "Odjavil se je"
+
+#, c-format
+msgid "Became idle"
+msgstr "Postal je nedejaven"
+
+#, c-format
+msgid "Went away"
+msgstr "Odšel je"
+
+#, c-format
+msgid "Sent a message"
+msgstr "Poslal je sporočilo"
+
+#, c-format
+msgid "Unknown.... Please report this!"
+msgstr "Neznano ... Poročajte o tem!"
+
msgid "Smiley theme failed to unpack."
msgstr "Teme smejčkov ni mogoče razpakirati."
@@ -12376,6 +12547,11 @@ msgstr "Tipke za bližnjice"
msgid "Cl_ose conversations with the Escape key"
msgstr "_Zapri pomenke s tipko Esc"
+#. Buddy List Themes
+msgid "Buddy List Theme"
+msgstr "Tema seznama prijateljev"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "Ikona na pladnju"
@@ -12486,9 +12662,6 @@ msgstr "Konfiguracijskega programa za posredovalni strežnik ni mogoče zagnati.
msgid "Cannot start browser configuration program."
msgstr "Konfiguracijskega programa brskalnika ni mogoče zagnati."
-msgid "ST_UN server:"
-msgstr "Strežnik ST_UN:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">Primer: stunserver.org</span>"
@@ -12513,6 +12686,10 @@ msgstr "_Začetna vrata:"
msgid "_End port:"
msgstr "_Končna vrata:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr "Relejski strežnik (TURN)"
+
msgid "Proxy Server &amp; Browser"
msgstr "Posredovalni strežnik in brskalnik"
@@ -12704,12 +12881,12 @@ msgstr "ob odsotnosti in nedejavnosti"
msgid "Auto-away"
msgstr "Samodejna odsotnost"
-msgid "Change status when _idle"
-msgstr "Spremeni stanje ob _nedejavnosti"
-
msgid "_Minutes before becoming idle:"
msgstr "Število _minut pred nedejavnostjo:"
+msgid "Change status when _idle"
+msgstr "Spremeni stanje ob _nedejavnosti"
+
msgid "Change _status to:"
msgstr "Spremeni _stanje v:"
@@ -12858,6 +13035,12 @@ msgstr "Shra_ni in uporabi"
msgid "Status for %s"
msgstr "Stanje za %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
msgid "Custom Smiley"
msgstr "Smejček po meri"
@@ -12867,16 +13050,14 @@ msgstr "Potrebnih je več podatkov"
msgid "Please provide a shortcut to associate with the smiley."
msgstr "Podajte tipke za bližnjico, ki bodo povezane s smejčkom."
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
+msgstr "Smejček po meri za '%s' že obstaja. Navedite druge tipke za bližnjico."
+
msgid "Duplicate Shortcut"
msgstr "Podvojena tipka za bližnjico"
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
-msgstr ""
-"Smejček po meri za izbrano kombinacijo tipk že obstaja. Navedite druge tipke "
-"za bližnjico."
-
msgid "Please select an image for the smiley."
msgstr "Izberite sliko smejčka."
@@ -12886,19 +13067,26 @@ msgstr "Uredi smejčka"
msgid "Add Smiley"
msgstr "Dodaj smejčka"
-msgid "Smiley _Image"
-msgstr "Sli_ka smejčka"
+msgid "_Image:"
+msgstr "Sl_ika:"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr "_Tipke za bližnjice smejčka"
+#. Shortcut text
+msgid "S_hortcut text:"
+msgstr "_Besedilo za bližnjico:"
msgid "Smiley"
msgstr "Smejček"
+msgid "Shortcut Text"
+msgstr "Besedilo za bližnjico"
+
msgid "Custom Smiley Manager"
msgstr "Upravitelj smejčkov po meri"
+#, fuzzy
+msgid "Select Buddy Icon"
+msgstr "Izberi prijatelja"
+
msgid "Click to change your buddyicon for this account."
msgstr "Kliknite, če želite za ta račun spremeniti ikono prijatelja."
@@ -13019,6 +13207,15 @@ msgid ""
msgstr ""
"Sliko '%s' ni mogoče naložiti: razlog ni znan, najbrž je datoteka okvarjena"
+msgid "_Open Link"
+msgstr "_Odpri povezavo"
+
+msgid "_Copy Link Location"
+msgstr "_Kopiraj lokacijo povezave"
+
+msgid "_Copy Email Address"
+msgstr "_Kopiraj naslov e-pošte"
+
msgid "Save File"
msgstr "Shrani datoteko"
@@ -14043,6 +14240,183 @@ msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr ""
"Ta vtičnik je uporaben za razhroščevanje strežnikov ali odjemalcev XMPP."
+#~ msgid "Invite message"
+#~ msgstr "Sporočilo povabila"
+
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Vnesite ime uporabnika, ki ga želite povabiti,\n"
+#~ "dodate lahko tudi sporočilo - povabilo."
+
+#~ msgid "Looking up %s"
+#~ msgstr "Poizvedujem za %s"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "Povezovanje na %s ni uspelo"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Prijavljanje: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "Datoteke %s ni bilo mogoče zapisati."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "Datoteke %s ni bilo mogoče prebrati."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "Sporočilo je predolgo, zato je bilo skrajšano za %s znakov."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s trenutno ni prijavljen."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "Opozarjanje %s ni dovoljeno."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr ""
+#~ "Sporočilo je bilo izpuščeno, ker presegate omejitev hitrosti strežnika."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "Pomenek v %s ni dostopen."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "Prehitro pošiljate sporočila %s."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr ""
+#~ "Ker je bilo preveliko, ste zgrešili sporočilo, ki vam ga je poslal %s."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr "Zgrešili ste sporočilo od %s, ker je bilo poslano prehitro."
+
+#~ msgid "Failure."
+#~ msgstr "Neuspeh."
+
+#~ msgid "Too many matches."
+#~ msgstr "Preveč zadetkov."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "Potrebujem več selekcije."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "Imeniška storitev je trenutno nedosegljiva."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "Poizvedba po e-poštnem naslovu je omejena."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "Ključna beseda zanemarjena."
+
+#~ msgid "No keywords."
+#~ msgstr "Brez ključnih besed."
+
+#~ msgid "User has no directory information."
+#~ msgstr "Uporabnik nima imeniških informacij."
+
+#~ msgid "Country not supported."
+#~ msgstr "Država ni podprta."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Neznan vzrok neuspeha: %s."
+
+#~ msgid "Incorrect username or password."
+#~ msgstr "Neveljavno uporabniško ime ali geslo."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "Storitev je trenutno nedostopna."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr ""
+#~ "Vaša raven opozoril je trenutno previsoka, da bi se lahko prijavili."
+
+#~ 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 ""
+#~ "Prijavljali in odjavljali ste se prepogosto. Počakajte deset minut in "
+#~ "poskusite ponovno. Če tega ne boste upoštevali, bo trajalo še dlje."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "Pri prijavljanju je prišlo do neznane napake: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "Prišlo je do neznane napake %d. Info: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "Neveljavno ime skupine"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Povezava zaprta"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "Čakanje odgovora ..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "TOC je nazaj z odmora. Sedaj lahko spet pošiljate sporočila."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "Sprememba gesla uspešna"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Prikaži imeniške podatke"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Nastavi imeniške podatke"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "Ne morem odpreti %s za pisanje!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr ""
+#~ "Prenos datoteke ni bil uspešen; verjetno je prijatelj preklical prenos."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "Ni se bilo mogoče povezati za prenos."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "Ni bilo mogoče zapisati glave datoteke. Datoteka ne bo prenešena."
+
+#~ msgid "Save As..."
+#~ msgstr "Shrani kot ..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s zahteva od %s, da sprejme %d datotek: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s zahteva od %s, da sprejme %d datoteko: %s (%.2f %s)%s%s"
+#~ msgstr[2] "%s zahteva od %s, da sprejme %d datoteki: %s (%.2f %s)%s%s"
+#~ msgstr[3] "%s zahteva od %s, da sprejme %d datoteke: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s zahteva, da jim pošljete datoteko"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "Vtičnik za protokol TOC"
+
+#~ msgid "%s Options"
+#~ msgstr "%s Možnosti"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Možnosti posredovalnega strežnika"
+
+#~ msgid "By log size"
+#~ msgstr "po obsegu dnevnika"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_Odpri povezavo v brskalniku"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "Strežnik ST_UN:"
+
+#~ msgid "Smiley _Image"
+#~ msgstr "Sli_ka smejčka"
+
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "_Tipke za bližnjice smejčka"
+
#~ msgid "Unable to retrieve MSN Address Book"
#~ msgstr "Adresarja MSN ni mogoče pridobiti."
@@ -14483,9 +14857,6 @@ msgstr ""
#~ "prijateljev. Vnesete lahko tudi psevdonim ali vzdevek prijatelja. Kjer bo "
#~ "izvedljivo, bo namesto pojavnega imena prikazan vzdevek.\n"
-#~ msgid "A_ccount:"
-#~ msgstr "Ra_čun:"
-
#~ msgid "Pounce only when my status is not available"
#~ msgstr "Opozori le tedaj, ko moje stanje ni na voljo"
diff --git a/po/sq.po b/po/sq.po
index 6cd09cc4af..5be06c4560 100644
--- a/po/sq.po
+++ b/po/sq.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: trunk\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-18 01:17-0800\n"
+"POT-Creation-Date: 2009-04-30 10:40-0400\n"
"PO-Revision-Date: 2008-11-14 13:56+0200\n"
"Last-Translator: Besnik Bleta <besnik@programeshqip.org>\n"
"Language-Team: Albanian <besnik@programeshqip.org>\n"
@@ -30,13 +30,13 @@ msgstr "Finch"
msgid "%s. Try `%s -h' for more information.\n"
msgstr "%s. Për më tepër të dhëna provoni `%s -h'.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -618,20 +618,6 @@ msgstr ""
msgid "Send To"
msgstr "Dërgoje Te"
-msgid "Invite message"
-msgstr "Mesazh ftese"
-
-# Invite
-msgid "Invite"
-msgstr "Fto"
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Ju lutem jepni emrin e përdoruesit që doni të ftoni,\n"
-"bashkë me një mesazh ftese në daçi."
-
# Conversations
msgid "Conversation"
msgstr "Bashkëbisedim"
@@ -896,6 +882,43 @@ msgstr "Tërë Bashkëbisedimet"
msgid "System Log"
msgstr "Regjistrim Sistemi"
+#, fuzzy
+msgid "Calling ... "
+msgstr "Po llogaritet..."
+
+msgid "Hangup"
+msgstr ""
+
+# *
+# * A wrapper for Pidgin_request_action() that uses Accept and Cancel buttons.
+#. Number of actions
+msgid "Accept"
+msgstr "Prano"
+
+msgid "Reject"
+msgstr "Hidh tej"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "Keni ikur prej kanalit%s%s"
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "Email-e"
@@ -933,6 +956,10 @@ msgstr "Vazhdo"
msgid "IM"
msgstr "MA"
+# Invite
+msgid "Invite"
+msgstr "Fto"
+
msgid "(none)"
msgstr "(asnjë)"
@@ -1143,7 +1170,6 @@ msgstr "%s është larguar. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s ju ka dërguar një mesazh. (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "Akt i panjohur cytjeje. Ju lutem njoftojeni këtë!"
@@ -1190,7 +1216,6 @@ msgid "Change status to"
msgstr "Ndryshoji gjendjen si"
# Conversations
-#. Conversations
msgid "Conversations"
msgstr "bashkëbisedime"
@@ -1516,7 +1541,6 @@ msgstr ""
"Kur hapet një bashkëbisedim i ri kjo shtojcë do të fusë bashkëbisedimin e "
"fundit te bashkëbisedimi i çastit."
-#, c-format
msgid "Online"
msgstr "I lidhur"
@@ -1564,6 +1588,28 @@ msgstr "GntLastlog"
msgid "Lastlog plugin."
msgstr "Shtojcë për \"lastlog\"."
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL Melodie"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "llogari"
@@ -1666,15 +1712,6 @@ msgstr "Të pranohet dëshmia për %s?"
msgid "SSL Certificate Verification"
msgstr "Verifikim Dëshmie SSL"
-# *
-# * A wrapper for Pidgin_request_action() that uses Accept and Cancel buttons.
-#. Number of actions
-msgid "Accept"
-msgstr "Prano"
-
-msgid "Reject"
-msgstr "Hidh tej"
-
msgid "_View Certificate..."
msgstr "_Shihni Dëshmi..."
@@ -1825,6 +1862,18 @@ msgstr "%s doli prej dhomës."
msgid "%s left the room (%s)."
msgstr "%s doli prej dhomës (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Fto në Konferencë"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Ju lutem jepni emrin e përdoruesit që doni të ftoni, bashkë me një mesazh "
+"ftese në daçi."
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "Pasja e lidhjes dështoi: %s"
@@ -1963,7 +2012,6 @@ msgstr "Po niset shpërngulja e %s prej %s"
msgid "Transfer of file %s complete"
msgstr "Shpërngulje e kartelës %s e plotësuar"
-#, c-format
msgid "File transfer complete"
msgstr "Shpërngulje kartelash e plotësuar"
@@ -1971,7 +2019,6 @@ msgstr "Shpërngulje kartelash e plotësuar"
msgid "You canceled the transfer of %s"
msgstr "Anuluat shpërnguljen e %s"
-#, c-format
msgid "File transfer cancelled"
msgstr "Shpërngulje kartelash e anuluar"
@@ -2186,7 +2233,6 @@ msgstr "(%s) %s <VETË-PËRGJIGJU>: %s\n"
msgid "You are using %s, but this plugin requires %s."
msgstr "Po përdorni %s, por kjo shtojcë lyp %s."
-#, c-format
msgid "This plugin has not defined an ID."
msgstr "Kjo shtojcë nuk ka ID të përcaktuar."
@@ -2726,6 +2772,33 @@ msgstr "Ruaji mesazhet offline si cytje"
msgid "Do not ask. Always save in pounce."
msgstr "Mos pyet. Ruaji përherë si cytje."
+# if (js->protocol_options & CHANGE_PASSWORD) {
+#, fuzzy
+msgid "One Time Password"
+msgstr "Jepni Fjalëkalimin"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
# *< api_version
# *< type
# *< ui_requirement
@@ -3010,7 +3083,6 @@ msgid ""
msgstr ""
"I pazoti të vendosë lidhje me shërbyesin mDNS vendor. A është duke xhiruar?"
-#. Creating the options for the protocol
msgid "First name"
msgstr "Emër"
@@ -3053,6 +3125,11 @@ msgstr "Shtojcë Protokolli Bonjour"
msgid "Purple Person"
msgstr "Person i Purpurt"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "Lokalitet"
+
msgid "Bonjour"
msgstr "Bonjour"
@@ -3214,13 +3291,13 @@ msgstr "Përzgjidhni fjalosje për shokun: %s"
msgid "Add to chat..."
msgstr "Shto te fjalosje..."
+#. Global
msgid "Available"
msgstr "I mundshëm"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "Larguar"
@@ -3592,6 +3669,17 @@ msgstr ""
"Emri i llogarisë përzgjedhur prej jush u hodh tej nga shërbyesi. Ka të "
"ngjarë përmban shenja të pavlefshme."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "Ky emër fjalosjeje është tashmë në përdorim"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Nofkë"
+
msgid "Cannot change nick"
msgstr "S'ndryshon dot nofkë"
@@ -3864,6 +3952,41 @@ msgstr "Sfidë e pavlefshme prej shërbyesit."
msgid "SASL error"
msgstr "Gabim SASL"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "Nuk u dha arsye"
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Version i Pambuluar"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"Nuk u vendos dot lidhje me shërbyesin:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"Nuk u vendos dot lidhje me shërbyesin:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "I pazoti të gatisë lidhjen"
+
+msgid "Unable to create socket"
+msgstr "I pazoti të krijojë \"socket\""
+
+msgid "Write error"
+msgstr "Gabim shkrimi"
+
msgid "Full Name"
msgstr "Emër i Plotë"
@@ -3932,6 +4055,10 @@ msgstr "Klient"
msgid "Operating System"
msgstr "Sistem Operativ"
+#, fuzzy
+msgid "Local Time"
+msgstr "Kartelë Vendore:"
+
msgid "Last Activity"
msgstr "Veprimtaria e Fundit"
@@ -4148,7 +4275,6 @@ msgstr "Muhabetçi"
msgid "Extended Away"
msgstr "Larguar e Zgjeruar"
-#, c-format
msgid "Do Not Disturb"
msgstr "Mos Bezdis"
@@ -4276,9 +4402,6 @@ msgstr "Gjej Dhoma"
msgid "You require encryption, but it is not available on this server."
msgstr "Kërkoni kodim, por ky nuk është i mundshëm në këtë shërbyes."
-msgid "Write error"
-msgstr "Gabim shkrimi"
-
msgid "Ping timeout"
msgstr "Skadim kohe për ping-un"
@@ -4287,14 +4410,9 @@ msgstr "Gabim Leximi"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"Nuk u vendos dot lidhje me shërbyesin:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "I pazoti të krijojë \"socket\""
msgid "Invalid XMPP ID"
msgstr "ID XMPP i pavlefshëm"
@@ -4302,6 +4420,10 @@ msgstr "ID XMPP i pavlefshëm"
msgid "Invalid XMPP ID. Domain must be set."
msgstr "ID XMPP i pavlefshëm. Duhet caktuar përkatësia."
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Dështoi në lidhjen me shërbyesin."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "Regjistrim i %s@%s i suksesshëm"
@@ -4393,9 +4515,18 @@ msgstr "Po kryhet mirëfilltësimi"
msgid "Re-initializing Stream"
msgstr "Po rigatitet Rrjedha"
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr "I pa Autorizuar"
+msgid "Mood"
+msgstr "Humor"
+
+msgid "Now Listening"
+msgstr "Në Dëgjim"
+
msgid "Both"
msgstr "Të dyja"
@@ -4417,12 +4548,6 @@ msgstr "Asnjë"
msgid "Subscription"
msgstr "Regjistrim"
-msgid "Mood"
-msgstr "Humor"
-
-msgid "Now Listening"
-msgstr "Në Dëgjim"
-
msgid "Mood Text"
msgstr "Tekst Humori"
@@ -4662,20 +4787,26 @@ msgstr "I pazoti të përzërë përdoruesin %s"
msgid "Unable to ping user %s"
msgstr "I pazoti të dërgojë ping për përdoruesin %s"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr "Nuk i dërgohet dot bzzzz, ngaqë nuk njihet gjë rreth përdoruesit %s."
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr ""
"Nuk i dërgohet dot bzzzz, ngaqë përdoruesi %s mund të jetë i shkëputur."
-#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+#, fuzzy, c-format
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr ""
"I pazoti të dërgojë bzzz, ngaqë përdoruesi %s nuk mbulon veprim të tillë."
+#, c-format
+msgid "Buzzing %s..."
+msgstr "Po dërgohet bzzz për %s..."
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
msgid "Buzz"
@@ -4685,9 +4816,36 @@ msgstr "Buzz"
msgid "%s has buzzed you!"
msgstr "%s ju ka dërguar bzzz!"
-#, c-format
-msgid "Buzzing %s..."
-msgstr "Po dërgohet bzzz për %s..."
+# TODO: Improve this! message to who or for what conference?
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "I pazoti të dërgojë mesazh te %s, JID i pavlefshëm"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "I pazoti të dërgojë kartelë te %s, përdoruesi nuk është i lidhur"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr "I pazoti të dërgojë kartelë te %s, pa pajtim te prani përdoruesi"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "Dështoi Regjistrimi"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr ""
+"Ju lutem përzgjidhni burimin e %s te i cili dëshironi të dërgoni një kartelë"
+
+msgid "Select a Resource"
+msgstr "Përzgjidhni Burim"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "Nis _Fjalosje"
msgid "config: Configure a chat room."
msgstr "config: Formëso një dhomë fjalosjeje."
@@ -4855,6 +5013,21 @@ msgstr "Gabim në hyrjen te fjalosje %s"
msgid "Error in chat %s"
msgstr "Gabim në fjalosje %s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "Ndodhi një gabim gjatë hapjes së kartelës."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "Shpërngulja e Kartelave Dështoi"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Dështoi hapja e kartelës '%s': %s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4882,9 +5055,6 @@ msgid "Please select the resource of %s to which you would like to send a file"
msgstr ""
"Ju lutem përzgjidhni burimin e %s te i cili dëshironi të dërgoni një kartelë"
-msgid "Select a Resource"
-msgstr "Përzgjidhni Burim"
-
msgid "Edit User Mood"
msgstr "Përpunoni Humor Përdoruesi"
@@ -4919,9 +5089,6 @@ msgstr "Veprime"
msgid "Select an action"
msgstr "Përzgjidhni veprim"
-msgid "Unable to retrieve MSN Address Book"
-msgstr "I pazoti të marrë Libër Vendndodhjesh MSN"
-
#. only notify the user about problems adding to the friends list
#. * maybe we should do something else for other lists, but it probably
#. * won't cause too many problems if we just ignore it
@@ -5164,7 +5331,6 @@ msgstr "Pasaportë të Vegjlish pa miratim prindi"
msgid "Passport account not yet verified"
msgstr "Llogari pasaporte ende e paverifikuar"
-#, c-format
msgid "Passport account suspended"
msgstr "U pezullua llogari letërnjoftimi"
@@ -6421,7 +6587,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr "Gabim. Nuk është instaluar suport për SSL."
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr "Kjo konferencë është mbyllur. S'mund të dërgohen më mesazhe."
@@ -6718,23 +6883,18 @@ msgstr "Kamera"
msgid "Screen Sharing"
msgstr "Ekrani i Përbashkët"
-#, c-format
msgid "Free For Chat"
msgstr "I lirë Për Fjalosje"
-#, c-format
msgid "Not Available"
msgstr "Jo i mundshëm"
-#, c-format
msgid "Occupied"
msgstr "I zënë"
-#, c-format
msgid "Web Aware"
msgstr "Me Web-in Parasysh"
-#, c-format
msgid "Invisible"
msgstr "I padukshëm"
@@ -6784,7 +6944,7 @@ msgstr ""
"ose duhet të fillojnë me një gërmë dhe të përmbajnë vetëm gërma, numra dhe "
"hapësira, ose të përmbajnë vetëm numra."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr "Emër përdoruesi i pavlefshëm."
@@ -6801,7 +6961,7 @@ msgstr "Llogaria juaj për çastin është e pezulluar."
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "Shërbimi AOL Instant Messenger është përkohësisht i pamundur."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6837,13 +6997,9 @@ msgstr "Jepni numri gjashtëshifror prej paraqitjes shifrore."
msgid "_OK"
msgstr "_OK"
-#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
-msgstr ""
-"Edhe pak edhe mundet t'ju shkëpusin. Mund të doni të përdorni TOC derisa të "
-"ndreqet kjo. Shihni %s për përditësime."
+#, fuzzy, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
+msgstr "Edhe pak edhe mundet t'ju shkëpusin. Shihni %s për përditësime."
msgid "Unable to get a valid AIM login hash."
msgstr "Nuk u mor dot hash i vlefshëm hyrjeje në AIM."
@@ -6996,7 +7152,7 @@ msgstr[0] "Humbët %hu mesazh prej %s për një arsye të panjohur."
msgstr[1] "Humbët %hu mesazhe prej %s për një arsye të panjohur."
# TODO: Improve this! message to who or for what conference?
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "I pazoti të dërgojë mesazh: %s"
@@ -7317,6 +7473,7 @@ msgstr "_Lidhu"
msgid "Get AIM Info"
msgstr "Merr Të dhëna AIM"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "Përpuno Koment Shoku"
@@ -7426,7 +7583,6 @@ msgstr "Po i kërkohet %s të lidhet me ne te %s:%hu për MA të Drejtpërdrejt
msgid "Attempting to connect to %s:%hu."
msgstr "Përpjekje për t'u lidhur te %s:%hu."
-#, c-format
msgid "Attempting to connect via proxy server."
msgstr "Po bëhet përpjekje për lidhje përmes një shërbyesi ndërmjetës."
@@ -7604,6 +7760,38 @@ msgstr "Përditëso"
msgid "Could not change buddy information."
msgstr "Dështoi në ndryshimin e të dhënave rreth shokut."
+msgid "Mobile"
+msgstr "Telefon Celular"
+
+msgid "Note"
+msgstr "Shënim"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "Ikonë Shoku"
+
+msgid "Change his/her memo as you like"
+msgstr ""
+
+#, fuzzy
+msgid "_Modify"
+msgstr "Ndrysho"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "Ndrysho"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "Shërbyes i zënë"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
#, fuzzy, c-format
msgid "%u requires verification"
msgstr "Kërko autorizim"
@@ -7923,6 +8111,13 @@ msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<p><b>Mirënjohje</b>:<br>\n"
#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<p><b>Autori Origjinal</b>:<br>\n"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
+#, fuzzy
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr "<p><i>Dhe, tërë djemtë te dhoma prapa...</i><br>\n"
@@ -7949,6 +8144,10 @@ msgstr "Përditëso tërë QQ Quns"
msgid "About OpenQ"
msgstr "Rreth OpenQ"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Ndryshoni Vendndodhjen"
+
# *< api_version
# *< type
# *< ui_requirement
@@ -7997,6 +8196,9 @@ msgstr "Shfaq njoftim shërbyesi"
msgid "Show server news"
msgstr "Shfaq lajme shërbyesi"
+msgid "Show chat room when msg comes"
+msgstr ""
+
#, fuzzy
msgid "Keep alive interval (seconds)"
msgstr "Interval(e) mbajtjeje gjallë"
@@ -8076,7 +8278,6 @@ msgstr ""
"%s"
# we didn't successfully connect. tdt->toc_fd is valid here
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "I pazoti të lidhet."
@@ -8993,9 +9194,6 @@ msgstr "Organizëm"
msgid "Unit"
msgstr "Njësi"
-msgid "Note"
-msgstr "Shënim"
-
msgid "Join Chat"
msgstr "Futu në Fjalosje"
@@ -9661,6 +9859,10 @@ msgstr "S'u shqua dot emërstreha"
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr "Emra përdoruesish SIP mund të mos përmbajnë hapësira ose simbole @"
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "Shfaq njoftim shërbyesi"
+
# *< api_version
# *< type
# *< ui_requirement
@@ -9715,204 +9917,12 @@ msgid "Auth Domain"
msgstr "Mirëfilltësim Përkatësie"
#, c-format
-msgid "Looking up %s"
-msgstr "Po shihet për %s"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Lidhu me %s dështoi"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Nënshkrim: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "I pazoti të shkruajë kartelën %s."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "I pazoti të lexojë kartelën %s."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "Mesazh shumë i gjatë, shkurtuar me %s bajtet e fundit."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s jo i futur për çastin."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "Sinjalizim i %s i palejueshëm."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "Ju është lënë një mesazh, po tejkaloni kufi shpejtësie shërbyesi."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "Fjalosja në %s nuk është e mundshme."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "Po i dërgoni mesazhet te %s shumë shpejt."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "Humbët një MA prej %s, ngaqë qe shumë i madh."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "Humbët një MA prej %s, ngaqë u dërgua shumë shpejt."
-
-#, c-format
-msgid "Failure."
-msgstr "Dështim."
-
-#, c-format
-msgid "Too many matches."
-msgstr "Shumë përputhje."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "Lipsen më tepër cilësues."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "Shërbim drejtorish përkohësisht i pamundur."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "Kufizim kërkimi email-i."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "Fjalëkyç i shpërfillur."
-
-#, c-format
-msgid "No keywords."
-msgstr "Pa fjalëkyça."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "Përdoruesi nuk ka të dhëna drejtorie."
-
-#, c-format
-msgid "Country not supported."
-msgstr "Vend i pambuluar."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Dështim i panjohur: %s."
-
-#, c-format
-msgid "Incorrect username or password."
-msgstr "Emër përdoruesi ose fjalëkalim i pavlefshëm."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "Shërbimi është përkohësisht i pamundshëm."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "Niveli juaj i sinjalizimeve për çastin është tepër i lartë për hyrje."
-
-#, 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 ""
-"Jeni lidhur e shkëputur si shumë shpesh. Prisni dhjetë minuta dhe "
-"riprovoni. Nëse vazhdoni të provoni, do t'ju duhet të prisni akoma më gjatë."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "Ndodhi një gabim i panjohur nënshkrimi: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "Ndodhi një gabim i panjohur, %d. Të dhëna: %s"
-
-msgid "Invalid Groupname"
-msgstr "Emër i pavlefshëm grupi"
-
-msgid "Connection Closed"
-msgstr "Lidhja u Mbyll"
-
-msgid "Waiting for reply..."
-msgstr "Po pritet për përgjigje..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr ""
-"TOC e mori veten pas pushimit. Tani mundeni të dërgoni mesazhet tuaj sërish."
-
-msgid "Password Change Successful"
-msgstr "Ndryshim i Sukseshëm Fjalëkalimi"
-
-msgid "_Group:"
-msgstr "_Grup:"
-
-msgid "Get Dir Info"
-msgstr "Merr Të dhëna Drejt."
-
-msgid "Set Dir Info"
-msgstr "Caktoni Të dhëna Drejt."
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "S'hapa dot %s për shkrim!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "Shpërngulja e kartelës dështoi; mbase ana tjetër e anuloi."
-
-msgid "Could not connect for transfer."
-msgstr "S'u lidha dot për shpërngulje."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "S'munda të shkruaj titull kartele. Kartela nuk do të shpërngulet."
-
-msgid "Save As..."
-msgstr "Ruaje Si..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s ju kërkon %s të pranoni %d kartelë: %s (%.2f %s)%s%s"
-msgstr[1] "%s ju kërkon %s të pranoni %d kartela: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s ju kërkon t'i dërgoni kartelë"
-
-# *< api_version
-# *< type
-# *< ui_requirement
-# *< flags
-# *< dependencies
-# *< priority
-# *< id
-# *< name
-# *< version
-# * summary
-# * description
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "Shtojcë Protokolli TOC"
-
-#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr "%s ju dërgoi një ftesë për kamera web, çka nuk mbulohet ende."
+msgid "Your SMS was not delivered"
+msgstr ""
+
msgid "Your Yahoo! message did not get sent."
msgstr "Mesazhi juaj Yahoo! nuk u dërgua."
@@ -10545,9 +10555,6 @@ msgstr "Mos më bezdis"
msgid "Extended away"
msgstr "Largim i zgjeruar"
-msgid "Mobile"
-msgstr "Telefon Celular"
-
msgid "Listening to music"
msgstr "Dëgjim muzike"
@@ -10589,18 +10596,6 @@ msgstr "+++ %s u gjallërua"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "Gabim në Leximin e %s"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"U has një gabim gjatë leximit të %s suaj. Nuk u ngarkuan, dhe kartela e "
-"vjetër është riemërtuar %s~."
-
msgid "Calculating..."
msgstr "Po llogaritet..."
@@ -10675,6 +10670,12 @@ msgstr "Gabim gjatë shkrimit prej %s: %s"
msgid "Unable to connect to %s: %s"
msgstr "I pazoti të lidhet %s: %s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr "Shërbyesi lyp TLS/SSL për hyrje. Nuk u gjet suport për TLS/SSL."
+
#, c-format
msgid " - %s"
msgstr " - %s"
@@ -10708,6 +10709,18 @@ msgstr "Ndërlidhje e papranuar."
msgid "Address already in use."
msgstr "Vendndodhje tashmë në përdorim."
+#, c-format
+msgid "Error Reading %s"
+msgstr "Gabim në Leximin e %s"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"U has një gabim gjatë leximit të %s suaj. Nuk u ngarkuan, dhe kartela e "
+"vjetër është riemërtuar %s~."
+
msgid "Internet Messenger"
msgstr "Lajmësjellës Internet"
@@ -10750,11 +10763,8 @@ msgstr "Njoftime _poste të re"
msgid "Use this buddy _icon for this account:"
msgstr "Përdor këtë _ikonë shoku për këtë llogari:"
-# Build the protocol options frame.
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "Mundësi %s"
+msgid "_Advanced"
+msgstr "_Të mëtejshme"
# Use Global Proxy Settings
msgid "Use GNOME Proxy Settings"
@@ -10792,9 +10802,6 @@ msgstr "If you look real closely"
msgid "you can see the butterflies mating"
msgstr "you can see the butterflies mating"
-msgid "Proxy Options"
-msgstr "Mundësi \"Proxy\""
-
msgid "Proxy _type:"
msgstr "_Tip \"proxy\":"
@@ -10822,8 +10829,9 @@ msgstr "_Bazë"
msgid "Create _this new account on the server"
msgstr "Krijo te shërbyesi _këtë llogari të re"
-msgid "_Advanced"
-msgstr "_Të mëtejshme"
+#, fuzzy
+msgid "_Proxy"
+msgstr "Ndërmjetës"
msgid "Enabled"
msgstr "Aktivizuar"
@@ -10902,6 +10910,17 @@ msgstr "Merr _Të dhëna"
msgid "I_M"
msgstr "I_M"
+#, fuzzy
+msgid "_Audio Call"
+msgstr "_Shto Fjalosje"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Fjalosje Video"
+
msgid "_Send File..."
msgstr "_Dërgo Kartelë..."
@@ -11041,6 +11060,10 @@ msgstr "/Mjete/_Cytje Shokësh"
msgid "/Tools/_Certificates"
msgstr "/Mjete/_Dëshmi"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Mjete/_Emotikone"
+
msgid "/Tools/Plu_gins"
msgstr "/Mjete/Shtojca"
@@ -11050,9 +11073,6 @@ msgstr "/Mjete/Par_apëlqime"
msgid "/Tools/Pr_ivacy"
msgstr "/Mjete/Vetës_i"
-msgid "/Tools/Smile_y"
-msgstr "/Mjete/_Emotikone"
-
msgid "/Tools/_File Transfers"
msgstr "/Mjete/Shpërngulje _Kartelash"
@@ -11170,8 +11190,8 @@ msgstr "Dorazi"
msgid "By status"
msgstr "Sipas gjendjeje"
-msgid "By log size"
-msgstr "Sipas madhësie regjistrimi"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -11187,6 +11207,9 @@ msgstr "Rilidhu"
msgid "Re-enable"
msgstr "Riaktivizoje"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr "Mirësevini sërish!"
@@ -11276,6 +11299,9 @@ msgstr ""
msgid "A_lias:"
msgstr "_Alias:"
+msgid "_Group:"
+msgstr "_Grup:"
+
msgid "Auto_join when account becomes online."
msgstr "Vetë_futu kur llogaria kalon në linjë."
@@ -11329,14 +11355,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr "Fto Shok Në një Dhomë Fjalosjeje"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Ju lutem jepni emrin e përdoruesit që doni të ftoni, bashkë me një mesazh "
-"ftese në daçi."
-
msgid "_Buddy:"
msgstr "_Shok:"
@@ -11412,6 +11430,22 @@ msgstr "/Bashkëbisedim/_Ruaj Si..."
msgid "/Conversation/Clea_r Scrollback"
msgstr ""
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Bashkëbisedim/_Më"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Bashkëbisedim/_Më"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Bashkëbisedim/_Më"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Bashkëbisedim/Parje _Regjistrimi"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Bashkëbisedim/Dë_rgo Kartelë..."
@@ -11487,6 +11521,18 @@ msgstr "/Bashkëbisedim"
msgid "/Conversation/View Log"
msgstr "/Bashkëbisedim/Shihni Regjistrim"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Bashkëbisedim/Më"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Bashkëbisedim/Shihni Regjistrim"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Bashkëbisedim/Më"
+
msgid "/Conversation/Send File..."
msgstr "/Bashkëbisedim/Dërgo Kartelë..."
@@ -11671,6 +11717,9 @@ msgstr "artist"
msgid "Ka-Hing Cheung"
msgstr "Ka-Hing Cheung"
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "suport"
@@ -11812,6 +11861,10 @@ msgstr "Gjeorgjiane"
msgid "Ubuntu Georgian Translators"
msgstr "Përkthyesa Gjeorgjianë të Ubuntu-së"
+#, fuzzy
+msgid "Khmer"
+msgstr "Tjetër"
+
msgid "Kannada"
msgstr "Kannada"
@@ -11833,6 +11886,10 @@ msgstr "Lituaneze"
msgid "Macedonian"
msgstr "Maqedone"
+#, fuzzy
+msgid "Mongolian"
+msgstr "Maqedone"
+
msgid "Bokmål Norwegian"
msgstr "Norvegjeze Bokmal"
@@ -11948,7 +12005,24 @@ msgstr ""
"garanci për këtë program.<BR><BR>"
#, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, fuzzy, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin te irc.freenode.net<BR><BR>"
+
+#, fuzzy, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin te irc.freenode.net<BR><BR>"
msgid "Current Developers"
@@ -12259,15 +12333,6 @@ msgstr "Gërmat e përdorura për njoftime shtypjesh"
msgid "Enable typing notification"
msgstr "Aktivizo njoftime shtypjesh"
-msgid "_Copy Email Address"
-msgstr "_Kopjo Vendndodhje Email"
-
-msgid "_Open Link in Browser"
-msgstr "_Hap Lidhje në Shfletues"
-
-msgid "_Copy Link Location"
-msgstr "_Kopjo Vendndodhje Lidhjeje"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12520,13 +12585,14 @@ msgstr "_Shfletoni dosje regjistrash"
msgid "%s %s. Try `%s -h' for more information.\n"
msgstr "%s %s. Për më tepër të dhëna provoni `%s -h'.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12552,13 +12618,14 @@ msgstr ""
" --display=DISPLAY Ekran X për përdorim\n"
" -v, --version shfaq versionin e çastit dhe dil\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12614,11 +12681,27 @@ msgstr ""
msgid "Pidgin"
msgstr "Pidgin"
-msgid "Open All Messages"
-msgstr "Hap Tërë Mesazhet"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Ka postë për ju!</span>"
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "Po llogaritet..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -12647,6 +12730,28 @@ msgid ""
"The 'Manual' browser command has been chosen, but no command has been set."
msgstr "Është zgjedhur urdhër shfletuesi 'Dorazi', por nuk është caktuar cili."
+msgid "Open All Messages"
+msgstr "Hap Tërë Mesazhet"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Ka postë për ju!</span>"
+
+# "New Buddy Pounce"
+#, fuzzy
+msgid "New Pounces"
+msgstr "Cytje e Re Shoku"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Ka postë për ju!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "Mesazh i panjohur "
+
msgid "The following plugins will be unloaded."
msgstr "Shtojcat vijuese do të çngarkohen."
@@ -12694,6 +12799,10 @@ msgstr "<b>Hollësi Shtojce</b>"
msgid "Select a file"
msgstr "Përzgjidhni një kartelë"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Përpunoni Cytje Shoku"
+
# Create the "Pounce Who" frame.
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
@@ -12766,6 +12875,50 @@ msgstr "E _ripërsëritshme"
msgid "Pounce Target"
msgstr "Objekt Cytjeje"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "Zë e shtyp"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "Pushon ndërkohë që po shtypte"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "Nënshkruan"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s është kthyer prej plogështie (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "Kthehet prej largimi"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "Reshti Së Shtypuri"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "Çnënshkruan"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "Plogështohet"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "Gjatë largimesh"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Dërgo mesazh"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "Akt i panjohur cytjeje. Ju lutem njoftojeni këtë!"
+
msgid "Smiley theme failed to unpack."
msgstr "Dështoi çpaketimi i temës së emotikoneve,."
@@ -12789,6 +12942,12 @@ msgstr "Shkurtore Tastiere"
msgid "Cl_ose conversations with the Escape key"
msgstr "_Mbylli bashkëbisedimet me tastin Escape"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Listë Shokësh"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "Ikonë Shtylle Sistemi"
@@ -12902,9 +13061,6 @@ msgstr "S'niset dot programi i formësimit të ndërmjetësave."
msgid "Cannot start browser configuration program."
msgstr "S'niset dot programi i formësimit të shfletuesit."
-msgid "ST_UN server:"
-msgstr "Shërbyes ST_UN:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">Shembull: stunserver.org</span>"
@@ -12929,6 +13085,10 @@ msgstr "Portë e _fillimit:"
msgid "_End port:"
msgstr "Portë e f_undit:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr "Shërbyes Ndërmjetës &amp; Shfletues"
@@ -12957,6 +13117,10 @@ msgstr "Shërbyes \"Proxy\""
msgid "No proxy"
msgstr "Pa \"proxy\""
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "_Përdorues:"
@@ -13115,12 +13279,12 @@ msgstr "Vetëm në rast largimi dhe plogështie"
msgid "Auto-away"
msgstr "I vetëlarguar"
-msgid "Change status when _idle"
-msgstr "Ndrysho gjendjen po qe i _plogësht"
-
msgid "_Minutes before becoming idle:"
msgstr "_Minuta para se të bëhet i plogësht:"
+msgid "Change status when _idle"
+msgstr "Ndrysho gjendjen po qe i _plogësht"
+
msgid "Change _status to:"
msgstr "Ndrysho _gjendje si:"
@@ -13271,6 +13435,12 @@ msgstr "Rua_j & Përdor"
msgid "Status for %s"
msgstr "Gjendje për %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
msgid "Custom Smiley"
msgstr "Emotikon Vetjak"
@@ -13280,16 +13450,16 @@ msgstr "Lypsen më tepër Të dhëna"
msgid "Please provide a shortcut to associate with the smiley."
msgstr "Ju lutem jepni një shkurtore për t'ia shoqëruar këtij emotikoni."
-msgid "Duplicate Shortcut"
-msgstr "Dyfishoni Shkurtore"
-
+#, fuzzy, c-format
msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
+"A custom smiley for '%s' already exists. Please use a different shortcut."
msgstr ""
"Ka tashmë një emotikon vetjak për shkurtoren e përzgjedhur. Ju lutem tregoni "
"një shkurtore tjetër."
+msgid "Duplicate Shortcut"
+msgstr "Dyfishoni Shkurtore"
+
msgid "Please select an image for the smiley."
msgstr "Ju lutem përzgjidhni një pamje për emotikonin."
@@ -13301,17 +13471,23 @@ msgstr "Përpunoni Emotikon"
msgid "Add Smiley"
msgstr "Shtoni Emotikon"
-msgid "Smiley _Image"
-msgstr "_Pamje Emotikoni"
+#, fuzzy
+msgid "_Image:"
+msgstr "_Pamje"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr "_Shkurtore Emotikoni"
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "Shkurtore"
# show everything
msgid "Smiley"
msgstr "Emotikon"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "Shkurtore"
+
msgid "Custom Smiley Manager"
msgstr "Përgjegjës Emotikonesh Vetjake"
@@ -13439,6 +13615,16 @@ msgstr ""
"Dështoi ngarkimi i pamjes '%s': arsye e panjohur, ndoshta kartelë e dëmtuar "
"pamjeje"
+#, fuzzy
+msgid "_Open Link"
+msgstr "_Hap lidhje në:"
+
+msgid "_Copy Link Location"
+msgstr "_Kopjo Vendndodhje Lidhjeje"
+
+msgid "_Copy Email Address"
+msgstr "_Kopjo Vendndodhje Email"
+
msgid "Save File"
msgstr "Ruaje Kartelën"
@@ -14563,9 +14749,6 @@ msgstr "_Mbaj dritare Liste Shokësh sipër:"
msgid "Only when docked"
msgstr ""
-msgid "_Flash window when chat messages are received"
-msgstr "_Xixëllo dritare kur merren mesazhe fjalosjeje"
-
msgid "Windows Pidgin Options"
msgstr "Mundësi për Pidgin-in nën Windows."
@@ -14616,6 +14799,206 @@ msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr ""
"Kjo shtojcë është e dobishme për diagnostikim shërbyesish apo klientësh XMPP."
+#~ msgid "Invite message"
+#~ msgstr "Mesazh ftese"
+
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Ju lutem jepni emrin e përdoruesit që doni të ftoni,\n"
+#~ "bashkë me një mesazh ftese në daçi."
+
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "I pazoti të marrë Libër Vendndodhjesh MSN"
+
+#~ msgid ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+#~ msgstr ""
+#~ "Edhe pak edhe mundet t'ju shkëpusin. Mund të doni të përdorni TOC derisa "
+#~ "të ndreqet kjo. Shihni %s për përditësime."
+
+#~ msgid "Looking up %s"
+#~ msgstr "Po shihet për %s"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "Lidhu me %s dështoi"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Nënshkrim: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "I pazoti të shkruajë kartelën %s."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "I pazoti të lexojë kartelën %s."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "Mesazh shumë i gjatë, shkurtuar me %s bajtet e fundit."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s jo i futur për çastin."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "Sinjalizim i %s i palejueshëm."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr "Ju është lënë një mesazh, po tejkaloni kufi shpejtësie shërbyesi."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "Fjalosja në %s nuk është e mundshme."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "Po i dërgoni mesazhet te %s shumë shpejt."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "Humbët një MA prej %s, ngaqë qe shumë i madh."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr "Humbët një MA prej %s, ngaqë u dërgua shumë shpejt."
+
+#~ msgid "Failure."
+#~ msgstr "Dështim."
+
+#~ msgid "Too many matches."
+#~ msgstr "Shumë përputhje."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "Lipsen më tepër cilësues."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "Shërbim drejtorish përkohësisht i pamundur."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "Kufizim kërkimi email-i."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "Fjalëkyç i shpërfillur."
+
+#~ msgid "No keywords."
+#~ msgstr "Pa fjalëkyça."
+
+#~ msgid "User has no directory information."
+#~ msgstr "Përdoruesi nuk ka të dhëna drejtorie."
+
+#~ msgid "Country not supported."
+#~ msgstr "Vend i pambuluar."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Dështim i panjohur: %s."
+
+#~ msgid "Incorrect username or password."
+#~ msgstr "Emër përdoruesi ose fjalëkalim i pavlefshëm."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "Shërbimi është përkohësisht i pamundshëm."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr ""
+#~ "Niveli juaj i sinjalizimeve për çastin është tepër i lartë për hyrje."
+
+#~ 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 ""
+#~ "Jeni lidhur e shkëputur si shumë shpesh. Prisni dhjetë minuta dhe "
+#~ "riprovoni. Nëse vazhdoni të provoni, do t'ju duhet të prisni akoma më "
+#~ "gjatë."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "Ndodhi një gabim i panjohur nënshkrimi: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "Ndodhi një gabim i panjohur, %d. Të dhëna: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "Emër i pavlefshëm grupi"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Lidhja u Mbyll"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "Po pritet për përgjigje..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr ""
+#~ "TOC e mori veten pas pushimit. Tani mundeni të dërgoni mesazhet tuaj "
+#~ "sërish."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "Ndryshim i Sukseshëm Fjalëkalimi"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Merr Të dhëna Drejt."
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Caktoni Të dhëna Drejt."
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "S'hapa dot %s për shkrim!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr "Shpërngulja e kartelës dështoi; mbase ana tjetër e anuloi."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "S'u lidha dot për shpërngulje."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "S'munda të shkruaj titull kartele. Kartela nuk do të shpërngulet."
+
+#~ msgid "Save As..."
+#~ msgstr "Ruaje Si..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s ju kërkon %s të pranoni %d kartelë: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s ju kërkon %s të pranoni %d kartela: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s ju kërkon t'i dërgoni kartelë"
+
+# *< api_version
+# *< type
+# *< ui_requirement
+# *< flags
+# *< dependencies
+# *< priority
+# *< id
+# *< name
+# *< version
+# * summary
+# * description
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "Shtojcë Protokolli TOC"
+
+# Build the protocol options frame.
+#~ msgid "%s Options"
+#~ msgstr "Mundësi %s"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Mundësi \"Proxy\""
+
+#~ msgid "By log size"
+#~ msgstr "Sipas madhësie regjistrimi"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_Hap Lidhje në Shfletues"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "Shërbyes ST_UN:"
+
+#~ msgid "Smiley _Image"
+#~ msgstr "_Pamje Emotikoni"
+
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "_Shkurtore Emotikoni"
+
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "_Xixëllo dritare kur merren mesazhe fjalosjeje"
+
#~ msgid "Connection to server lost (no data received within %d second)"
#~ msgid_plural ""
#~ "Connection to server lost (no data received within %d seconds)"
diff --git a/po/sr.po b/po/sr.po
index eb18f05d1a..787493d5bb 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pidgin\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-22 16:17-0500\n"
+"POT-Creation-Date: 2009-04-30 10:40-0400\n"
"PO-Revision-Date: 2007-09-09 11:54+0100\n"
"Last-Translator: Милош Поповић <gpopac@gmail.com>\n"
"Language-Team: Serbian <gnome@prevod.org>\n"
@@ -603,19 +603,6 @@ msgstr ""
msgid "Send To"
msgstr "Пошаљи за"
-msgid "Invite message"
-msgstr "Позивна порука"
-
-msgid "Invite"
-msgstr "Позови"
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Унесите име корисника кога желите да позовете,\n"
-"а по жељи пошаљите и поруку уз позивницу."
-
msgid "Conversation"
msgstr "Разговор"
@@ -867,6 +854,41 @@ msgstr "Сви разговори"
msgid "System Log"
msgstr "Системски дневник"
+#, fuzzy
+msgid "Calling ... "
+msgstr "Рачунам..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "Прихвати"
+
+msgid "Reject"
+msgstr "Одбаци"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "Напустили сте причаоницу%s%s"
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "Е-поште"
@@ -903,6 +925,9 @@ msgstr "Настави"
msgid "IM"
msgstr "Порука"
+msgid "Invite"
+msgstr "Позови"
+
msgid "(none)"
msgstr "(без имена)"
@@ -1104,7 +1129,6 @@ msgstr "%s је одишао(ла) на одсуство. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s жели да Вам пошаље поруку. (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "Непозната заседа. Молимо Вас да ово пријавите!"
@@ -1510,6 +1534,28 @@ msgstr "ГнтПоследњеБелешке"
msgid "Lastlog plugin."
msgstr "Додатак за дневник."
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "УРЛ мелодије"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "налози"
@@ -1610,13 +1656,6 @@ msgstr "Прихвати сертификат за %s?"
msgid "SSL Certificate Verification"
msgstr "Провера SSL сертификата"
-#. Number of actions
-msgid "Accept"
-msgstr "Прихвати"
-
-msgid "Reject"
-msgstr "Одбаци"
-
msgid "_View Certificate..."
msgstr "_Прегледај сертификате..."
@@ -1762,6 +1801,18 @@ msgstr "%s је напустио(ла) причаоницу."
msgid "%s left the room (%s)."
msgstr "%s је напустио(ла) причаоницу (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Позови на конференцију"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Унесите име корисника кога желите да позовете, а по жељи додајте и поруку у "
+"позивницу."
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "Не могу да добијем везу: %s"
@@ -2581,6 +2632,32 @@ msgstr "Сачувај поруке ван мреже у заседу"
msgid "Do not ask. Always save in pounce."
msgstr "Не питај ме. Увек сачувај у заседу."
+#, fuzzy
+msgid "One Time Password"
+msgstr "Унесите лозинку"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2978,6 +3055,7 @@ msgstr "Изаберите ћаскање за другара: %s"
msgid "Add to chat..."
msgstr "Додај у ћаскање..."
+#. Global
msgid "Available"
msgstr "Доступан"
@@ -3325,6 +3403,17 @@ msgstr ""
"Изабрали сте име налога које је сервер одбио. Вероватно садржи недозвољене "
"знаке."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "Ово име ћаскања је већ заузето"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Надимак"
+
msgid "Cannot change nick"
msgstr "Не могу да променим надимак"
@@ -3594,6 +3683,41 @@ msgstr "Неисправан изазов сервера"
msgid "SASL error"
msgstr "САСЛ грешка"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "Није наведен разлог"
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Неподржано издање"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"Не могу да успоставим везу са сервером:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"Не могу да успоставим везу са сервером:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "Не могу да успоставим везу."
+
+msgid "Unable to create socket"
+msgstr "Не могу начинити утичницу"
+
+msgid "Write error"
+msgstr "Грешка при писању"
+
msgid "Full Name"
msgstr "Пуно име"
@@ -3661,6 +3785,10 @@ msgstr "Програм"
msgid "Operating System"
msgstr "Оперативни систем"
+#, fuzzy
+msgid "Local Time"
+msgstr "Локална датотека:"
+
msgid "Last Activity"
msgstr "Последња активност"
@@ -3995,9 +4123,6 @@ msgstr "Пронађи собе"
msgid "You require encryption, but it is not available on this server."
msgstr "Захтевате шифровање, али оно није доступно на овом серверу."
-msgid "Write error"
-msgstr "Грешка при писању"
-
msgid "Ping timeout"
msgstr ""
@@ -4006,14 +4131,9 @@ msgstr "Грешка при читању"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"Не могу да успоставим везу са сервером:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "Не могу начинити утичницу"
msgid "Invalid XMPP ID"
msgstr "Неисправна Џабер адреса"
@@ -4021,6 +4141,10 @@ msgstr "Неисправна Џабер адреса"
msgid "Invalid XMPP ID. Domain must be set."
msgstr "Неисправна Џабер адреса. Морате унети домен."
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Не могу да се повежем на сервер."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "Регистрација %s@%s успешна"
@@ -4111,6 +4235,12 @@ msgstr ""
msgid "Not Authorized"
msgstr "Неовлашћен"
+msgid "Mood"
+msgstr "Расположење"
+
+msgid "Now Listening"
+msgstr "Сада слуша"
+
msgid "Both"
msgstr "Оба"
@@ -4132,12 +4262,6 @@ msgstr "Ништа"
msgid "Subscription"
msgstr "Претплата"
-msgid "Mood"
-msgstr "Расположење"
-
-msgid "Now Listening"
-msgstr "Сада слуша"
-
msgid "Mood Text"
msgstr "Текст о расположењу"
@@ -4376,18 +4500,24 @@ msgstr "Не могу да одстраним корисника %s"
msgid "Unable to ping user %s"
msgstr "Не могу да пингујем корисника %s"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr "Не могу да трубим јер није познато ништа о кориснику %s."
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr "Не могу да трубим јер је корисник %s можда ван мреже."
-#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+#, fuzzy, c-format
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "Не могу да трубим јер корисник %s то не подржава."
+#, c-format
+msgid "Buzzing %s..."
+msgstr "Трубим %sу..."
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
msgid "Buzz"
@@ -4397,9 +4527,34 @@ msgstr "Труби"
msgid "%s has buzzed you!"
msgstr "%s вам труби!"
-#, c-format
-msgid "Buzzing %s..."
-msgstr "Трубим %sу..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "Не могу да пошаљем датотеку за %s, погрешан ЈИБ."
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "Слање датотеке кориснику %s није успело јер је ван мреже"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr "Слање датотеке кориснику %s није успело јер није пријављен"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "Грешка при регистрацији"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "Изаберите извор од %s коме желите да пошаљете датотеку"
+
+msgid "Select a Resource"
+msgstr "Изаберите извор"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "Покрени _ћаскање"
msgid "config: Configure a chat room."
msgstr "config: Подеси причаоницу."
@@ -4554,6 +4709,21 @@ msgstr "Грешка при укључењу у ћаскање: %s"
msgid "Error in chat %s"
msgstr "Грешка при ћаскању: %s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "Дошло је до грешке при отварању датотеке."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "Пропао пренос датотеке"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Не могу да отворим датотеку „%s“: %s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4578,9 +4748,6 @@ msgstr "Слање датотеке кориснику %s није успело
msgid "Please select the resource of %s to which you would like to send a file"
msgstr "Изаберите извор од %s коме желите да пошаљете датотеку"
-msgid "Select a Resource"
-msgstr "Изаберите извор"
-
msgid "Edit User Mood"
msgstr "Уреди корисничко расположење"
@@ -6392,7 +6559,7 @@ msgstr ""
"корисничко име. Корисничка имена морају бити исправне адресе е-поште, почети "
"словом и садржати само слова, бројеве и размаке, или садржати само бројеве."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr "Неисправно корисничко име."
@@ -6408,7 +6575,7 @@ msgstr "Ваш налог је тренутно недоступан."
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "Услуга АОЛ брзих порука је привремено недоступна."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6599,7 +6766,7 @@ msgstr[1] "Пропустили сте %hu поруке од %s из непоз
msgstr[2] "Пропустили сте %hu порука од %s из непознатих разлога."
msgstr[3] "Пропустили сте %hu поруку од %s из непознатих разлога."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "Не могу да пошаљем поруку: %s"
@@ -7204,6 +7371,38 @@ msgstr "Ажурирај"
msgid "Could not change buddy information."
msgstr "Не могу да променим податке о другару."
+msgid "Mobile"
+msgstr "Мобилни телефон"
+
+msgid "Note"
+msgstr "Белешка"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "Сличица другара"
+
+msgid "Change his/her memo as you like"
+msgstr ""
+
+#, fuzzy
+msgid "_Modify"
+msgstr "Измени"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "Измени"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "Сервер је заузет"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
#, c-format
msgid "%u requires verification"
msgstr "%u захтева проверу"
@@ -7512,6 +7711,13 @@ msgstr "<p><b>Аутори закрпа</b>:<br>\n"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr ""
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<p><b>Оригинални аутор</b>:<br>\n"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr "<p><i>И остали људи у позадини...</i><br>\n"
@@ -7537,6 +7743,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "О OpenQ"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Измени адресу"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7644,7 +7854,6 @@ msgstr ""
"Непознат одговор при пројави (0x%02X):\n"
"%s"
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "Не могу да се повежем."
@@ -8543,9 +8752,6 @@ msgstr "Организација"
msgid "Unit"
msgstr "Јединица"
-msgid "Note"
-msgstr "Белешка"
-
msgid "Join Chat"
msgstr "Прикључи се ћаскању"
@@ -9234,197 +9440,14 @@ msgid "Auth Domain"
msgstr "Овласти домен"
#, c-format
-msgid "Looking up %s"
-msgstr "Тражим %s"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Неуспешно повезивање на %s"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Пријава: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "Не могу да пишем у датотеку %s."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "Не могу да прочитам датотеку %s."
-
-# greska: plural
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "Порука је предугачка, последњих %s бајтова је занемарено."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s није тренутно пријављен."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "Није дозвољено упозорити %s."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "Порука је одбачена, прекорачујете ограничења брзине сервера."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "Није могуће ћаскање у %s."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "Шаљете поруке пребрзо за %s."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "Пропустили сте поруку од %s зато што је превелика."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "Пропустили сте поруку од %s зато је послата превише брзо."
-
-#, c-format
-msgid "Failure."
-msgstr "Неуспех."
-
-#, c-format
-msgid "Too many matches."
-msgstr "Превише поклапања."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "Потребно више обележја."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "Услуге именика тренутно нису доступне."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "Ограничена претрага према адреси е-поште."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "Кључне речи занемарене."
-
-#, c-format
-msgid "No keywords."
-msgstr "Нема кључних речи."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "Корисник није уписан у именик."
-
-#, c-format
-msgid "Country not supported."
-msgstr "Држава није подржана."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Непознат неуспех: %s."
-
-#, c-format
-msgid "Incorrect username or password."
-msgstr "Није исправно корисничко име или лозинка."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "Услуга је привремено недоступна."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "Имате превише упозорења да бисте се могли пријавити."
-
-#, c-format
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
-msgstr ""
-"Успостављате и прекидате везу сувише често. Сачекајте десет минута и "
-"покушајте поново. Ако наставите са покушајима, мораћете сачекати чак и дуже."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "Дошло је до непознате грешке при пријави: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "Догодила се непозната грешка %d. Подаци: %s"
-
-msgid "Invalid Groupname"
-msgstr "Неисправан назив групе"
-
-msgid "Connection Closed"
-msgstr "Веза прекинута"
-
-msgid "Waiting for reply..."
-msgstr "Чекам за одговор..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "ТОЦ је прекинуо застој. Сада поново можете слати поруке."
-
-msgid "Password Change Successful"
-msgstr "Лозинка успешно измењена"
-
-msgid "_Group:"
-msgstr "_Група:"
-
-msgid "Get Dir Info"
-msgstr "Прибави податке из именика"
-
-msgid "Set Dir Info"
-msgstr "Постави податке у именик"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "Не могу да отворим %s за упис!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "Неуспешан пренос датотеке; друга страна је вероватно отказала."
-
-msgid "Could not connect for transfer."
-msgstr "Не могу да успоставим везу за пренос."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "Не могу да упишем заглавље датотеке. Датотека се неће пренети."
-
-msgid "Save As..."
-msgstr "Сачувај као..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s захтева од %s да прими %d датотеку: %s (%.2f %s)%s%s"
-msgstr[1] "%s захтева од %s да прими %d датотеке: %s (%.2f %s)%s%s"
-msgstr[2] "%s захтева од %s да прими %d датотека: %s (%.2f %s)%s%s"
-msgstr[3] "%s захтева од %s да прими %d датотеку: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s захтева од Вас да пошаљете датотеку"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "Додатак за ТОЦ протокол"
-
-#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
"%s Вам је послао(ла) позив за разговор преко камере, који још увек није "
"подржан."
+msgid "Your SMS was not delivered"
+msgstr ""
+
msgid "Your Yahoo! message did not get sent."
msgstr "Ваша Јаху! порука није послата."
@@ -10017,9 +10040,6 @@ msgstr "Не узнемиравај"
msgid "Extended away"
msgstr "Продужено одсутан"
-msgid "Mobile"
-msgstr "Мобилни телефон"
-
msgid "Listening to music"
msgstr "Слушам музику"
@@ -10061,18 +10081,6 @@ msgstr "+++ %s се пробудио(ла)"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "Грешка при читању %s"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"Дошло је до грешке при обради вашег %s. Није учитано, а старом фајлу је име "
-"промењено у %s~."
-
msgid "Calculating..."
msgstr "Рачунам..."
@@ -10160,6 +10168,12 @@ msgstr "Грешка при упису у %s: %s"
msgid "Unable to connect to %s: %s"
msgstr "Не могу да се повежем на %s: %s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr "Сервер захтева TLS/SSL за пријаву. Није нађена подршка за TLS/SSL."
+
#, c-format
msgid " - %s"
msgstr " - %s"
@@ -10193,6 +10207,18 @@ msgstr "Веза је одбијена."
msgid "Address already in use."
msgstr "Адреса је већ у употеби."
+#, c-format
+msgid "Error Reading %s"
+msgstr "Грешка при читању %s"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"Дошло је до грешке при обради вашег %s. Није учитано, а старом фајлу је име "
+"промењено у %s~."
+
msgid "Internet Messenger"
msgstr "Интернет писмоноша"
@@ -10235,10 +10261,8 @@ msgstr "Обавештења о новопристиглој _е-пошти"
msgid "Use this buddy _icon for this account:"
msgstr "Користи ову _иконицу другара за налог:"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s опције"
+msgid "_Advanced"
+msgstr "Н_апредно"
msgid "Use GNOME Proxy Settings"
msgstr "Користи Гномова подешавања мрежног посредника"
@@ -10273,9 +10297,6 @@ msgstr "Уколико погледате изблиза"
msgid "you can see the butterflies mating"
msgstr "можете видети како се лептири паре"
-msgid "Proxy Options"
-msgstr "Поставке проксија"
-
msgid "Proxy _type:"
msgstr "_Врста проксија:"
@@ -10303,8 +10324,9 @@ msgstr "_Основно"
msgid "Create _this new account on the server"
msgstr "_Направи овај налог на серверу"
-msgid "_Advanced"
-msgstr "Н_апредно"
+#, fuzzy
+msgid "_Proxy"
+msgstr "Прокси"
msgid "Enabled"
msgstr "Омогућено"
@@ -10380,6 +10402,17 @@ msgstr "П_реузми податке"
msgid "I_M"
msgstr "_Порука"
+#, fuzzy
+msgid "_Audio Call"
+msgstr "Додај _ћаскање"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Видео ћаскање"
+
msgid "_Send File..."
msgstr "По_шаљи датотеку..."
@@ -10515,6 +10548,10 @@ msgstr "/Алати/_Заседа другару"
msgid "/Tools/_Certificates"
msgstr "/Алати/Серти_фикати"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Алати/_Смешци"
+
msgid "/Tools/Plu_gins"
msgstr "/Алати/_Додаци"
@@ -10524,9 +10561,6 @@ msgstr "/Алати/_Поставке"
msgid "/Tools/Pr_ivacy"
msgstr "/Алати/П_риватност"
-msgid "/Tools/Smile_y"
-msgstr "/Алати/_Смешци"
-
msgid "/Tools/_File Transfers"
msgstr "/Алати/П_реноси датотека..."
@@ -10646,8 +10680,8 @@ msgstr "Ручно"
msgid "By status"
msgstr "По стању"
-msgid "By log size"
-msgstr "По величини дневника"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10663,6 +10697,9 @@ msgstr "Поново се повежи"
msgid "Re-enable"
msgstr "Поново омогући"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr "Добродошли назад!"
@@ -10751,6 +10788,9 @@ msgstr ""
msgid "A_lias:"
msgstr "_Надимак:"
+msgid "_Group:"
+msgstr "_Група:"
+
msgid "Auto_join when account becomes online."
msgstr "_Сам се прикључи када налог буде доступан."
@@ -10801,14 +10841,6 @@ msgstr "Тренутно нисте пријављени на налог кој
msgid "Invite Buddy Into Chat Room"
msgstr "Позови другара у причаоницу"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Унесите име корисника кога желите да позовете, а по жељи додајте и поруку у "
-"позивницу."
-
msgid "_Buddy:"
msgstr "_Другар:"
@@ -10883,6 +10915,22 @@ msgstr "/Разговор/_Сачувај као..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Разговор/О_чисти прозор разговора"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Разговор/Дода_тно"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Разговор/Дода_тно"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Разговор/Дода_тно"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Разговор/Погледај _дневник"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Разговор/По_шаљи датотеку..."
@@ -10955,6 +11003,18 @@ msgstr "/Разговор"
msgid "/Conversation/View Log"
msgstr "/Разговор/Прикажи дневник"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Разговор/Више"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Разговор/Прикажи дневник"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Разговор/Више"
+
msgid "/Conversation/Send File..."
msgstr "/Разговор/Пошаљи датотеку..."
@@ -11139,6 +11199,9 @@ msgstr ""
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "подршка"
@@ -11278,6 +11341,10 @@ msgstr "грузијски"
msgid "Ubuntu Georgian Translators"
msgstr "грузијски Убунту преводиоци"
+#, fuzzy
+msgid "Khmer"
+msgstr "Остало"
+
msgid "Kannada"
msgstr "канадски"
@@ -11748,15 +11815,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr "Омогући обавештење о куцању"
-msgid "_Copy Email Address"
-msgstr "_Копирај адресу е-поште"
-
-msgid "_Open Link in Browser"
-msgstr "_Отвори везу у прегледнику"
-
-msgid "_Copy Link Location"
-msgstr "_Копирај адресу везе"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -11999,13 +12057,14 @@ msgstr "_Разгледај фасциклу са дневицима"
msgid "%s %s. Try `%s -h' for more information.\n"
msgstr "%s %s. Покушајте „%s -h“ за више података.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12029,13 +12088,14 @@ msgstr ""
" --display=ЕКРАН приказује се на задати X-ов екран\n"
" -v, --version исписује тренутно издање и излази из програма\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12094,11 +12154,23 @@ msgstr "Пиџин"
msgid "Exiting because another libpurple client is already running.\n"
msgstr "Излазим јер је већ покренут још један libpurple клијент.\n"
-msgid "Open All Messages"
-msgstr "Отвори све поруке"
+msgid "/_Media"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Имате е-пошту!</span>"
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "Рачунам..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -12131,6 +12203,27 @@ msgid ""
"The 'Manual' browser command has been chosen, but no command has been set."
msgstr "Изабрана је „ручна“ наредба за веб читач, а наредба није постављена."
+msgid "Open All Messages"
+msgstr "Отвори све поруке"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Имате е-пошту!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "Нова заседа другару"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Имате е-пошту!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "Непозната грешка"
+
msgid "The following plugins will be unloaded."
msgstr "Следећи додаци ће бити искључени."
@@ -12179,6 +12272,10 @@ msgstr "<b>Детаљи о додатку</b>"
msgid "Select a file"
msgstr "Изаберите датотеку"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Уреди заседу другару"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "Заседа на кога"
@@ -12249,6 +12346,50 @@ msgstr "По_нављање"
msgid "Pounce Target"
msgstr "Заседа на"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "Почиње да куца"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "Прави одмор при куцању"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "Пријави се"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s се активирао(ла) (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "Врати се са одсуства"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "Престао да куца"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "Одјави се"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "Постаде неактиван"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "При одсуству"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Пошаљи поруку"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "Непозната заседа. Молимо Вас да ово пријавите!"
+
msgid "Smiley theme failed to unpack."
msgstr "Скуп смешка не може да се распакује."
@@ -12271,6 +12412,12 @@ msgstr "Пречице на тастатури"
msgid "Cl_ose conversations with the Escape key"
msgstr "_Затвори разговоре тастером Escape"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Списак другара"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "Иконица на панелу"
@@ -12381,9 +12528,6 @@ msgstr ""
msgid "Cannot start browser configuration program."
msgstr "Не могу да покренем програм за подешавање веб прегледника."
-msgid "ST_UN server:"
-msgstr "С_ТУН Сервер:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">Пример: stunserver.org</span>"
@@ -12408,6 +12552,10 @@ msgstr "По_четни порт:"
msgid "_End port:"
msgstr "По_следњи порт:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr "Посреднички сервер &amp; Веб прегледник"
@@ -12596,12 +12744,12 @@ msgstr "Када сте одсутни или неактивни"
msgid "Auto-away"
msgstr "Аутоматско одуство"
-msgid "Change status when _idle"
-msgstr "Промени стање када сте не_активни"
-
msgid "_Minutes before becoming idle:"
msgstr "Постани неактиван након (минута):"
+msgid "Change status when _idle"
+msgstr "Промени стање када сте не_активни"
+
msgid "Change _status to:"
msgstr "Промени _стање у:"
@@ -12749,6 +12897,12 @@ msgstr "Са_чувај и примени"
msgid "Status for %s"
msgstr "Стање за %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
msgid "Custom Smiley"
msgstr "Произвољни смешци"
@@ -12758,14 +12912,14 @@ msgstr "Потребно је више података"
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
-msgid "Duplicate Shortcut"
-msgstr "Удвостручи пречицу"
-
+#, c-format
msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
+"A custom smiley for '%s' already exists. Please use a different shortcut."
msgstr ""
+msgid "Duplicate Shortcut"
+msgstr "Удвостручи пречицу"
+
msgid "Please select an image for the smiley."
msgstr "Изаберите слику за смешак."
@@ -12775,16 +12929,21 @@ msgstr "Уреди смешак"
msgid "Add Smiley"
msgstr "Додај смешак"
-msgid "Smiley _Image"
-msgstr "_Иконица за смешак"
+#, fuzzy
+msgid "_Image:"
+msgstr "С_лику"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr "Пре_чица за смешак"
+#. Shortcut text
+msgid "S_hortcut text:"
+msgstr ""
msgid "Smiley"
msgstr "Смешак"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "Стање"
+
msgid "Custom Smiley Manager"
msgstr "Уређивање произвољних смешака"
@@ -12910,6 +13069,16 @@ msgstr ""
"Неуспело учитавање слике „%s“ из непознатог разлога, вероватно је оштећена "
"датотека"
+#, fuzzy
+msgid "_Open Link"
+msgstr "_Отвори везу у:"
+
+msgid "_Copy Link Location"
+msgstr "_Копирај адресу везе"
+
+msgid "_Copy Email Address"
+msgstr "_Копирај адресу е-поште"
+
msgid "Save File"
msgstr "Сачувај датотеку"
@@ -13920,6 +14089,181 @@ msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr ""
"Овај додатак је користан за уклањање грешака Џабер сервера или програма"
+#~ msgid "Invite message"
+#~ msgstr "Позивна порука"
+
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Унесите име корисника кога желите да позовете,\n"
+#~ "а по жељи пошаљите и поруку уз позивницу."
+
+#~ msgid "Looking up %s"
+#~ msgstr "Тражим %s"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "Неуспешно повезивање на %s"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Пријава: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "Не могу да пишем у датотеку %s."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "Не могу да прочитам датотеку %s."
+
+# greska: plural
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "Порука је предугачка, последњих %s бајтова је занемарено."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s није тренутно пријављен."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "Није дозвољено упозорити %s."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr "Порука је одбачена, прекорачујете ограничења брзине сервера."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "Није могуће ћаскање у %s."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "Шаљете поруке пребрзо за %s."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "Пропустили сте поруку од %s зато што је превелика."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr "Пропустили сте поруку од %s зато је послата превише брзо."
+
+#~ msgid "Failure."
+#~ msgstr "Неуспех."
+
+#~ msgid "Too many matches."
+#~ msgstr "Превише поклапања."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "Потребно више обележја."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "Услуге именика тренутно нису доступне."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "Ограничена претрага према адреси е-поште."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "Кључне речи занемарене."
+
+#~ msgid "No keywords."
+#~ msgstr "Нема кључних речи."
+
+#~ msgid "User has no directory information."
+#~ msgstr "Корисник није уписан у именик."
+
+#~ msgid "Country not supported."
+#~ msgstr "Држава није подржана."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Непознат неуспех: %s."
+
+#~ msgid "Incorrect username or password."
+#~ msgstr "Није исправно корисничко име или лозинка."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "Услуга је привремено недоступна."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "Имате превише упозорења да бисте се могли пријавити."
+
+#~ 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 ""
+#~ "Успостављате и прекидате везу сувише често. Сачекајте десет минута и "
+#~ "покушајте поново. Ако наставите са покушајима, мораћете сачекати чак и "
+#~ "дуже."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "Дошло је до непознате грешке при пријави: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "Догодила се непозната грешка %d. Подаци: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "Неисправан назив групе"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Веза прекинута"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "Чекам за одговор..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "ТОЦ је прекинуо застој. Сада поново можете слати поруке."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "Лозинка успешно измењена"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Прибави податке из именика"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Постави податке у именик"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "Не могу да отворим %s за упис!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr "Неуспешан пренос датотеке; друга страна је вероватно отказала."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "Не могу да успоставим везу за пренос."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "Не могу да упишем заглавље датотеке. Датотека се неће пренети."
+
+#~ msgid "Save As..."
+#~ msgstr "Сачувај као..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s захтева од %s да прими %d датотеку: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s захтева од %s да прими %d датотеке: %s (%.2f %s)%s%s"
+#~ msgstr[2] "%s захтева од %s да прими %d датотека: %s (%.2f %s)%s%s"
+#~ msgstr[3] "%s захтева од %s да прими %d датотеку: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s захтева од Вас да пошаљете датотеку"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "Додатак за ТОЦ протокол"
+
+#~ msgid "%s Options"
+#~ msgstr "%s опције"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Поставке проксија"
+
+#~ msgid "By log size"
+#~ msgstr "По величини дневника"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_Отвори везу у прегледнику"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "С_ТУН Сервер:"
+
+#~ msgid "Smiley _Image"
+#~ msgstr "_Иконица за смешак"
+
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "Пре_чица за смешак"
+
#~ msgid "Unable to retrieve MSN Address Book"
#~ msgstr "Не могу да прибавим MSN адресар"
diff --git a/po/sr@latin.po b/po/sr@latin.po
index e28c401174..d5023399cb 100644
--- a/po/sr@latin.po
+++ b/po/sr@latin.po
@@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pidgin\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-22 16:17-0500\n"
+"POT-Creation-Date: 2009-04-30 10:40-0400\n"
"PO-Revision-Date: 2007-09-09 11:54+0100\n"
"Last-Translator: Miloš Popović <gpopac@gmail.com>\n"
"Language-Team: Serbian <gnome@prevod.org>\n"
@@ -603,19 +603,6 @@ msgstr ""
msgid "Send To"
msgstr "Pošalji za"
-msgid "Invite message"
-msgstr "Pozivna poruka"
-
-msgid "Invite"
-msgstr "Pozovi"
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Unesite ime korisnika koga želite da pozovete,\n"
-"a po želji pošaljite i poruku uz pozivnicu."
-
msgid "Conversation"
msgstr "Razgovor"
@@ -869,6 +856,41 @@ msgstr "Svi razgovori"
msgid "System Log"
msgstr "Sistemski dnevnik"
+#, fuzzy
+msgid "Calling ... "
+msgstr "Računam..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "Prihvati"
+
+msgid "Reject"
+msgstr "Odbaci"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "Napustili ste pričaonicu%s%s"
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "E-pošte"
@@ -905,6 +927,9 @@ msgstr "Nastavi"
msgid "IM"
msgstr "Poruka"
+msgid "Invite"
+msgstr "Pozovi"
+
msgid "(none)"
msgstr "(bez imena)"
@@ -1106,7 +1131,6 @@ msgstr "%s je odišao(la) na odsustvo. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s želi da Vam pošalje poruku. (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "Nepoznata zaseda. Molimo Vas da ovo prijavite!"
@@ -1512,6 +1536,28 @@ msgstr "GntPoslednjeBeleške"
msgid "Lastlog plugin."
msgstr "Dodatak za dnevnik."
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL melodije"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "nalozi"
@@ -1612,13 +1658,6 @@ msgstr "Prihvati sertifikat za %s?"
msgid "SSL Certificate Verification"
msgstr "Provera SSL sertifikata"
-#. Number of actions
-msgid "Accept"
-msgstr "Prihvati"
-
-msgid "Reject"
-msgstr "Odbaci"
-
msgid "_View Certificate..."
msgstr "_Pregledaj sertifikate..."
@@ -1765,6 +1804,18 @@ msgstr "%s je napustio(la) pričaonicu."
msgid "%s left the room (%s)."
msgstr "%s je napustio(la) pričaonicu (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Pozovi na konferenciju"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Unesite ime korisnika koga želite da pozovete, a po želji dodajte i poruku u "
+"pozivnicu."
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "Ne mogu da dobijem vezu: %s"
@@ -2586,6 +2637,32 @@ msgstr "Sačuvaj poruke van mreže u zasedu"
msgid "Do not ask. Always save in pounce."
msgstr "Ne pitaj me. Uvek sačuvaj u zasedu."
+#, fuzzy
+msgid "One Time Password"
+msgstr "Unesite lozinku"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2983,6 +3060,7 @@ msgstr "Izaberite ćaskanje za drugara: %s"
msgid "Add to chat..."
msgstr "Dodaj u ćaskanje..."
+#. Global
msgid "Available"
msgstr "Dostupan"
@@ -3330,6 +3408,17 @@ msgstr ""
"Izabrali ste ime naloga koje je server odbio. Verovatno sadrži nedozvoljene "
"znake."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "Ovo ime ćaskanja je već zauzeto"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Nadimak"
+
msgid "Cannot change nick"
msgstr "Ne mogu da promenim nadimak"
@@ -3600,6 +3689,41 @@ msgstr "Neispravan izazov servera"
msgid "SASL error"
msgstr "SASL greška"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "Nije naveden razlog"
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Nepodržano izdanje"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"Ne mogu da uspostavim vezu sa serverom:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"Ne mogu da uspostavim vezu sa serverom:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "Ne mogu da uspostavim vezu."
+
+msgid "Unable to create socket"
+msgstr "Ne mogu načiniti utičnicu"
+
+msgid "Write error"
+msgstr "Greška pri pisanju"
+
msgid "Full Name"
msgstr "Puno ime"
@@ -3667,6 +3791,10 @@ msgstr "Program"
msgid "Operating System"
msgstr "Operativni sistem"
+#, fuzzy
+msgid "Local Time"
+msgstr "Lokalna datoteka:"
+
msgid "Last Activity"
msgstr "Poslednja aktivnost"
@@ -4001,9 +4129,6 @@ msgstr "Pronađi sobe"
msgid "You require encryption, but it is not available on this server."
msgstr "Zahtevate šifrovanje, ali ono nije dostupno na ovom serveru."
-msgid "Write error"
-msgstr "Greška pri pisanju"
-
msgid "Ping timeout"
msgstr ""
@@ -4012,14 +4137,9 @@ msgstr "Greška pri čitanju"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"Ne mogu da uspostavim vezu sa serverom:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "Ne mogu načiniti utičnicu"
msgid "Invalid XMPP ID"
msgstr "Neispravna Džaber adresa"
@@ -4027,6 +4147,10 @@ msgstr "Neispravna Džaber adresa"
msgid "Invalid XMPP ID. Domain must be set."
msgstr "Neispravna Džaber adresa. Morate uneti domen."
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Ne mogu da se povežem na server."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "Registracija %s@%s uspešna"
@@ -4117,6 +4241,12 @@ msgstr ""
msgid "Not Authorized"
msgstr "Neovlašćen"
+msgid "Mood"
+msgstr "Raspoloženje"
+
+msgid "Now Listening"
+msgstr "Sada sluša"
+
msgid "Both"
msgstr "Oba"
@@ -4138,12 +4268,6 @@ msgstr "Ništa"
msgid "Subscription"
msgstr "Pretplata"
-msgid "Mood"
-msgstr "Raspoloženje"
-
-msgid "Now Listening"
-msgstr "Sada sluša"
-
msgid "Mood Text"
msgstr "Tekst o raspoloženju"
@@ -4382,18 +4506,24 @@ msgstr "Ne mogu da odstranim korisnika %s"
msgid "Unable to ping user %s"
msgstr "Ne mogu da pingujem korisnika %s"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr "Ne mogu da trubim jer nije poznato ništa o korisniku %s."
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr "Ne mogu da trubim jer je korisnik %s možda van mreže."
-#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+#, fuzzy, c-format
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "Ne mogu da trubim jer korisnik %s to ne podržava."
+#, c-format
+msgid "Buzzing %s..."
+msgstr "Trubim %su..."
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
msgid "Buzz"
@@ -4403,9 +4533,34 @@ msgstr "Trubi"
msgid "%s has buzzed you!"
msgstr "%s vam trubi!"
-#, c-format
-msgid "Buzzing %s..."
-msgstr "Trubim %su..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "Ne mogu da pošaljem datoteku za %s, pogrešan JIB."
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "Slanje datoteke korisniku %s nije uspelo jer je van mreže"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr "Slanje datoteke korisniku %s nije uspelo jer nije prijavljen"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "Greška pri registraciji"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "Izaberite izvor od %s kome želite da pošaljete datoteku"
+
+msgid "Select a Resource"
+msgstr "Izaberite izvor"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "Pokreni _ćaskanje"
msgid "config: Configure a chat room."
msgstr "config: Podesi pričaonicu."
@@ -4561,6 +4716,21 @@ msgstr "Greška pri uključenju u ćaskanje: %s"
msgid "Error in chat %s"
msgstr "Greška pri ćaskanju: %s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "Došlo je do greške pri otvaranju datoteke."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "Propao prenos datoteke"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Ne mogu da otvorim datoteku „%s“: %s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4586,9 +4756,6 @@ msgstr "Slanje datoteke korisniku %s nije uspelo jer nije prijavljen"
msgid "Please select the resource of %s to which you would like to send a file"
msgstr "Izaberite izvor od %s kome želite da pošaljete datoteku"
-msgid "Select a Resource"
-msgstr "Izaberite izvor"
-
msgid "Edit User Mood"
msgstr "Uredi korisničko raspoloženje"
@@ -6401,7 +6568,7 @@ msgstr ""
"korisničko ime. Korisnička imena moraju biti ispravne adrese e-pošte, početi "
"slovom i sadržati samo slova, brojeve i razmake, ili sadržati samo brojeve."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr "Neispravno korisničko ime."
@@ -6417,7 +6584,7 @@ msgstr "Vaš nalog je trenutno nedostupan."
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "Usluga AOL brzih poruka je privremeno nedostupna."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6612,7 +6779,7 @@ msgstr[1] "Propustili ste %hu poruke od %s iz nepoznatih razloga."
msgstr[2] "Propustili ste %hu poruka od %s iz nepoznatih razloga."
msgstr[3] "Propustili ste %hu poruku od %s iz nepoznatih razloga."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "Ne mogu da pošaljem poruku: %s"
@@ -7217,6 +7384,38 @@ msgstr "Ažuriraj"
msgid "Could not change buddy information."
msgstr "Ne mogu da promenim podatke o drugaru."
+msgid "Mobile"
+msgstr "Mobilni telefon"
+
+msgid "Note"
+msgstr "Beleška"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "Sličica drugara"
+
+msgid "Change his/her memo as you like"
+msgstr ""
+
+#, fuzzy
+msgid "_Modify"
+msgstr "Izmeni"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "Izmeni"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "Server je zauzet"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
#, c-format
msgid "%u requires verification"
msgstr "%u zahteva proveru"
@@ -7525,6 +7724,13 @@ msgstr "<p><b>Autori zakrpa</b>:<br>\n"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr ""
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<p><b>Originalni autor</b>:<br>\n"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr "<p><i>I ostali ljudi u pozadini...</i><br>\n"
@@ -7550,6 +7756,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "O OpenQ"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Izmeni adresu"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7657,7 +7867,6 @@ msgstr ""
"Nepoznat odgovor pri projavi (0x%02X):\n"
"%s"
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "Ne mogu da se povežem."
@@ -8557,9 +8766,6 @@ msgstr "Organizacija"
msgid "Unit"
msgstr "Jedinica"
-msgid "Note"
-msgstr "Beleška"
-
msgid "Join Chat"
msgstr "Priključi se ćaskanju"
@@ -9249,197 +9455,14 @@ msgid "Auth Domain"
msgstr "Ovlasti domen"
#, c-format
-msgid "Looking up %s"
-msgstr "Tražim %s"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Neuspešno povezivanje na %s"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Prijava: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "Ne mogu da pišem u datoteku %s."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "Ne mogu da pročitam datoteku %s."
-
-# greska: plural
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "Poruka je predugačka, poslednjih %s bajtova je zanemareno."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s nije trenutno prijavljen."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "Nije dozvoljeno upozoriti %s."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "Poruka je odbačena, prekoračujete ograničenja brzine servera."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "Nije moguće ćaskanje u %s."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "Šaljete poruke prebrzo za %s."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "Propustili ste poruku od %s zato što je prevelika."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "Propustili ste poruku od %s zato je poslata previše brzo."
-
-#, c-format
-msgid "Failure."
-msgstr "Neuspeh."
-
-#, c-format
-msgid "Too many matches."
-msgstr "Previše poklapanja."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "Potrebno više obeležja."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "Usluge imenika trenutno nisu dostupne."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "Ograničena pretraga prema adresi e-pošte."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "Ključne reči zanemarene."
-
-#, c-format
-msgid "No keywords."
-msgstr "Nema ključnih reči."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "Korisnik nije upisan u imenik."
-
-#, c-format
-msgid "Country not supported."
-msgstr "Država nije podržana."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Nepoznat neuspeh: %s."
-
-#, c-format
-msgid "Incorrect username or password."
-msgstr "Nije ispravno korisničko ime ili lozinka."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "Usluga je privremeno nedostupna."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "Imate previše upozorenja da biste se mogli prijaviti."
-
-#, 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 ""
-"Uspostavljate i prekidate vezu suviše često. Sačekajte deset minuta i "
-"pokušajte ponovo. Ako nastavite sa pokušajima, moraćete sačekati čak i duže."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "Došlo je do nepoznate greške pri prijavi: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "Dogodila se nepoznata greška %d. Podaci: %s"
-
-msgid "Invalid Groupname"
-msgstr "Neispravan naziv grupe"
-
-msgid "Connection Closed"
-msgstr "Veza prekinuta"
-
-msgid "Waiting for reply..."
-msgstr "Čekam za odgovor..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "TOC je prekinuo zastoj. Sada ponovo možete slati poruke."
-
-msgid "Password Change Successful"
-msgstr "Lozinka uspešno izmenjena"
-
-msgid "_Group:"
-msgstr "_Grupa:"
-
-msgid "Get Dir Info"
-msgstr "Pribavi podatke iz imenika"
-
-msgid "Set Dir Info"
-msgstr "Postavi podatke u imenik"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "Ne mogu da otvorim %s za upis!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "Neuspešan prenos datoteke; druga strana je verovatno otkazala."
-
-msgid "Could not connect for transfer."
-msgstr "Ne mogu da uspostavim vezu za prenos."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "Ne mogu da upišem zaglavlje datoteke. Datoteka se neće preneti."
-
-msgid "Save As..."
-msgstr "Sačuvaj kao..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s zahteva od %s da primi %d datoteku: %s (%.2f %s)%s%s"
-msgstr[1] "%s zahteva od %s da primi %d datoteke: %s (%.2f %s)%s%s"
-msgstr[2] "%s zahteva od %s da primi %d datoteka: %s (%.2f %s)%s%s"
-msgstr[3] "%s zahteva od %s da primi %d datoteku: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s zahteva od Vas da pošaljete datoteku"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "Dodatak za TOC protokol"
-
-#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
"%s Vam je poslao(la) poziv za razgovor preko kamere, koji još uvek nije "
"podržan."
+msgid "Your SMS was not delivered"
+msgstr ""
+
msgid "Your Yahoo! message did not get sent."
msgstr "Vaša Jahu! poruka nije poslata."
@@ -10033,9 +10056,6 @@ msgstr "Ne uznemiravaj"
msgid "Extended away"
msgstr "Produženo odsutan"
-msgid "Mobile"
-msgstr "Mobilni telefon"
-
msgid "Listening to music"
msgstr "Slušam muziku"
@@ -10077,18 +10097,6 @@ msgstr "+++ %s se probudio(la)"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "Greška pri čitanju %s"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"Došlo je do greške pri obradi vašeg %s. Nije učitano, a starom fajlu je ime "
-"promenjeno u %s~."
-
msgid "Calculating..."
msgstr "Računam..."
@@ -10176,6 +10184,12 @@ msgstr "Greška pri upisu u %s: %s"
msgid "Unable to connect to %s: %s"
msgstr "Ne mogu da se povežem na %s: %s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr "Server zahteva TLS/SSL za prijavu. Nije nađena podrška za TLS/SSL."
+
#, c-format
msgid " - %s"
msgstr " - %s"
@@ -10209,6 +10223,18 @@ msgstr "Veza je odbijena."
msgid "Address already in use."
msgstr "Adresa je već u upotebi."
+#, c-format
+msgid "Error Reading %s"
+msgstr "Greška pri čitanju %s"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"Došlo je do greške pri obradi vašeg %s. Nije učitano, a starom fajlu je ime "
+"promenjeno u %s~."
+
msgid "Internet Messenger"
msgstr "Internet pismonoša"
@@ -10251,10 +10277,8 @@ msgstr "Obaveštenja o novopristigloj _e-pošti"
msgid "Use this buddy _icon for this account:"
msgstr "Koristi ovu _ikonicu drugara za nalog:"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s opcije"
+msgid "_Advanced"
+msgstr "N_apredno"
msgid "Use GNOME Proxy Settings"
msgstr "Koristi Gnomova podešavanja mrežnog posrednika"
@@ -10289,9 +10313,6 @@ msgstr "Ukoliko pogledate izbliza"
msgid "you can see the butterflies mating"
msgstr "možete videti kako se leptiri pare"
-msgid "Proxy Options"
-msgstr "Postavke proksija"
-
msgid "Proxy _type:"
msgstr "_Vrsta proksija:"
@@ -10319,8 +10340,9 @@ msgstr "_Osnovno"
msgid "Create _this new account on the server"
msgstr "_Napravi ovaj nalog na serveru"
-msgid "_Advanced"
-msgstr "N_apredno"
+#, fuzzy
+msgid "_Proxy"
+msgstr "Proksi"
msgid "Enabled"
msgstr "Omogućeno"
@@ -10396,6 +10418,17 @@ msgstr "P_reuzmi podatke"
msgid "I_M"
msgstr "_Poruka"
+#, fuzzy
+msgid "_Audio Call"
+msgstr "Dodaj _ćaskanje"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Video ćaskanje"
+
msgid "_Send File..."
msgstr "Po_šalji datoteku..."
@@ -10531,6 +10564,10 @@ msgstr "/Alati/_Zaseda drugaru"
msgid "/Tools/_Certificates"
msgstr "/Alati/Serti_fikati"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Alati/_Smešci"
+
msgid "/Tools/Plu_gins"
msgstr "/Alati/_Dodaci"
@@ -10540,9 +10577,6 @@ msgstr "/Alati/_Postavke"
msgid "/Tools/Pr_ivacy"
msgstr "/Alati/P_rivatnost"
-msgid "/Tools/Smile_y"
-msgstr "/Alati/_Smešci"
-
msgid "/Tools/_File Transfers"
msgstr "/Alati/P_renosi datoteka..."
@@ -10662,8 +10696,8 @@ msgstr "Ručno"
msgid "By status"
msgstr "Po stanju"
-msgid "By log size"
-msgstr "Po veličini dnevnika"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10679,6 +10713,9 @@ msgstr "Ponovo se poveži"
msgid "Re-enable"
msgstr "Ponovo omogući"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr "Dobrodošli nazad!"
@@ -10767,6 +10804,9 @@ msgstr ""
msgid "A_lias:"
msgstr "_Nadimak:"
+msgid "_Group:"
+msgstr "_Grupa:"
+
msgid "Auto_join when account becomes online."
msgstr "_Sam se priključi kada nalog bude dostupan."
@@ -10817,14 +10857,6 @@ msgstr "Trenutno niste prijavljeni na nalog koji omogućava poziv tog drugara."
msgid "Invite Buddy Into Chat Room"
msgstr "Pozovi drugara u pričaonicu"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Unesite ime korisnika koga želite da pozovete, a po želji dodajte i poruku u "
-"pozivnicu."
-
msgid "_Buddy:"
msgstr "_Drugar:"
@@ -10899,6 +10931,22 @@ msgstr "/Razgovor/_Sačuvaj kao..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Razgovor/O_čisti prozor razgovora"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Razgovor/Doda_tno"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Razgovor/Doda_tno"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Razgovor/Doda_tno"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Razgovor/Pogledaj _dnevnik"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Razgovor/Po_šalji datoteku..."
@@ -10971,6 +11019,18 @@ msgstr "/Razgovor"
msgid "/Conversation/View Log"
msgstr "/Razgovor/Prikaži dnevnik"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Razgovor/Više"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Razgovor/Prikaži dnevnik"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Razgovor/Više"
+
msgid "/Conversation/Send File..."
msgstr "/Razgovor/Pošalji datoteku..."
@@ -11155,6 +11215,9 @@ msgstr ""
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "podrška"
@@ -11294,6 +11357,10 @@ msgstr "gruzijski"
msgid "Ubuntu Georgian Translators"
msgstr "gruzijski Ubuntu prevodioci"
+#, fuzzy
+msgid "Khmer"
+msgstr "Ostalo"
+
msgid "Kannada"
msgstr "kanadski"
@@ -11764,15 +11831,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr "Omogući obaveštenje o kucanju"
-msgid "_Copy Email Address"
-msgstr "_Kopiraj adresu e-pošte"
-
-msgid "_Open Link in Browser"
-msgstr "_Otvori vezu u pregledniku"
-
-msgid "_Copy Link Location"
-msgstr "_Kopiraj adresu veze"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12015,13 +12073,14 @@ msgstr "_Razgledaj fasciklu sa dnevicima"
msgid "%s %s. Try `%s -h' for more information.\n"
msgstr "%s %s. Pokušajte „%s -h“ za više podataka.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12045,13 +12104,14 @@ msgstr ""
" --display=EKRAN prikazuje se na zadati X-ov ekran\n"
" -v, --version ispisuje trenutno izdanje i izlazi iz programa\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12110,11 +12170,23 @@ msgstr "Pidžin"
msgid "Exiting because another libpurple client is already running.\n"
msgstr "Izlazim jer je već pokrenut još jedan libpurple klijent.\n"
-msgid "Open All Messages"
-msgstr "Otvori sve poruke"
+msgid "/_Media"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Imate e-poštu!</span>"
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "Računam..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -12147,6 +12219,27 @@ msgid ""
"The 'Manual' browser command has been chosen, but no command has been set."
msgstr "Izabrana je „ručna“ naredba za veb čitač, a naredba nije postavljena."
+msgid "Open All Messages"
+msgstr "Otvori sve poruke"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Imate e-poštu!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "Nova zaseda drugaru"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Imate e-poštu!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "Nepoznata greška"
+
msgid "The following plugins will be unloaded."
msgstr "Sledeći dodaci će biti isključeni."
@@ -12195,6 +12288,10 @@ msgstr "<b>Detalji o dodatku</b>"
msgid "Select a file"
msgstr "Izaberite datoteku"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Uredi zasedu drugaru"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "Zaseda na koga"
@@ -12265,6 +12362,50 @@ msgstr "Po_navljanje"
msgid "Pounce Target"
msgstr "Zaseda na"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "Počinje da kuca"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "Pravi odmor pri kucanju"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "Prijavi se"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s se aktivirao(la) (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "Vrati se sa odsustva"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "Prestao da kuca"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "Odjavi se"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "Postade neaktivan"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "Pri odsustvu"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Pošalji poruku"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "Nepoznata zaseda. Molimo Vas da ovo prijavite!"
+
msgid "Smiley theme failed to unpack."
msgstr "Skup smeška ne može da se raspakuje."
@@ -12287,6 +12428,12 @@ msgstr "Prečice na tastaturi"
msgid "Cl_ose conversations with the Escape key"
msgstr "_Zatvori razgovore tasterom Escape"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Spisak drugara"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "Ikonica na panelu"
@@ -12397,9 +12544,6 @@ msgstr ""
msgid "Cannot start browser configuration program."
msgstr "Ne mogu da pokrenem program za podešavanje veb preglednika."
-msgid "ST_UN server:"
-msgstr "S_TUN Server:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">Primer: stunserver.org</span>"
@@ -12424,6 +12568,10 @@ msgstr "Po_četni port:"
msgid "_End port:"
msgstr "Po_slednji port:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr "Posrednički server &amp; Veb preglednik"
@@ -12612,12 +12760,12 @@ msgstr "Kada ste odsutni ili neaktivni"
msgid "Auto-away"
msgstr "Automatsko odustvo"
-msgid "Change status when _idle"
-msgstr "Promeni stanje kada ste ne_aktivni"
-
msgid "_Minutes before becoming idle:"
msgstr "Postani neaktivan nakon (minuta):"
+msgid "Change status when _idle"
+msgstr "Promeni stanje kada ste ne_aktivni"
+
msgid "Change _status to:"
msgstr "Promeni _stanje u:"
@@ -12765,6 +12913,12 @@ msgstr "Sa_čuvaj i primeni"
msgid "Status for %s"
msgstr "Stanje za %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
msgid "Custom Smiley"
msgstr "Proizvoljni smešci"
@@ -12774,14 +12928,14 @@ msgstr "Potrebno je više podataka"
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
-msgid "Duplicate Shortcut"
-msgstr "Udvostruči prečicu"
-
+#, c-format
msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
+"A custom smiley for '%s' already exists. Please use a different shortcut."
msgstr ""
+msgid "Duplicate Shortcut"
+msgstr "Udvostruči prečicu"
+
msgid "Please select an image for the smiley."
msgstr "Izaberite sliku za smešak."
@@ -12791,16 +12945,21 @@ msgstr "Uredi smešak"
msgid "Add Smiley"
msgstr "Dodaj smešak"
-msgid "Smiley _Image"
-msgstr "_Ikonica za smešak"
+#, fuzzy
+msgid "_Image:"
+msgstr "S_liku"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr "Pre_čica za smešak"
+#. Shortcut text
+msgid "S_hortcut text:"
+msgstr ""
msgid "Smiley"
msgstr "Smešak"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "Stanje"
+
msgid "Custom Smiley Manager"
msgstr "Uređivanje proizvoljnih smešaka"
@@ -12926,6 +13085,16 @@ msgstr ""
"Neuspelo učitavanje slike „%s“ iz nepoznatog razloga, verovatno je oštećena "
"datoteka"
+#, fuzzy
+msgid "_Open Link"
+msgstr "_Otvori vezu u:"
+
+msgid "_Copy Link Location"
+msgstr "_Kopiraj adresu veze"
+
+msgid "_Copy Email Address"
+msgstr "_Kopiraj adresu e-pošte"
+
msgid "Save File"
msgstr "Sačuvaj datoteku"
@@ -13938,6 +14107,181 @@ msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr ""
"Ovaj dodatak je koristan za uklanjanje grešaka Džaber servera ili programa"
+#~ msgid "Invite message"
+#~ msgstr "Pozivna poruka"
+
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Unesite ime korisnika koga želite da pozovete,\n"
+#~ "a po želji pošaljite i poruku uz pozivnicu."
+
+#~ msgid "Looking up %s"
+#~ msgstr "Tražim %s"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "Neuspešno povezivanje na %s"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Prijava: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "Ne mogu da pišem u datoteku %s."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "Ne mogu da pročitam datoteku %s."
+
+# greska: plural
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "Poruka je predugačka, poslednjih %s bajtova je zanemareno."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s nije trenutno prijavljen."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "Nije dozvoljeno upozoriti %s."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr "Poruka je odbačena, prekoračujete ograničenja brzine servera."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "Nije moguće ćaskanje u %s."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "Šaljete poruke prebrzo za %s."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "Propustili ste poruku od %s zato što je prevelika."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr "Propustili ste poruku od %s zato je poslata previše brzo."
+
+#~ msgid "Failure."
+#~ msgstr "Neuspeh."
+
+#~ msgid "Too many matches."
+#~ msgstr "Previše poklapanja."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "Potrebno više obeležja."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "Usluge imenika trenutno nisu dostupne."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "Ograničena pretraga prema adresi e-pošte."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "Ključne reči zanemarene."
+
+#~ msgid "No keywords."
+#~ msgstr "Nema ključnih reči."
+
+#~ msgid "User has no directory information."
+#~ msgstr "Korisnik nije upisan u imenik."
+
+#~ msgid "Country not supported."
+#~ msgstr "Država nije podržana."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Nepoznat neuspeh: %s."
+
+#~ msgid "Incorrect username or password."
+#~ msgstr "Nije ispravno korisničko ime ili lozinka."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "Usluga je privremeno nedostupna."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "Imate previše upozorenja da biste se mogli prijaviti."
+
+#~ 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 ""
+#~ "Uspostavljate i prekidate vezu suviše često. Sačekajte deset minuta i "
+#~ "pokušajte ponovo. Ako nastavite sa pokušajima, moraćete sačekati čak i "
+#~ "duže."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "Došlo je do nepoznate greške pri prijavi: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "Dogodila se nepoznata greška %d. Podaci: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "Neispravan naziv grupe"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Veza prekinuta"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "Čekam za odgovor..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "TOC je prekinuo zastoj. Sada ponovo možete slati poruke."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "Lozinka uspešno izmenjena"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Pribavi podatke iz imenika"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Postavi podatke u imenik"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "Ne mogu da otvorim %s za upis!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr "Neuspešan prenos datoteke; druga strana je verovatno otkazala."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "Ne mogu da uspostavim vezu za prenos."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "Ne mogu da upišem zaglavlje datoteke. Datoteka se neće preneti."
+
+#~ msgid "Save As..."
+#~ msgstr "Sačuvaj kao..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s zahteva od %s da primi %d datoteku: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s zahteva od %s da primi %d datoteke: %s (%.2f %s)%s%s"
+#~ msgstr[2] "%s zahteva od %s da primi %d datoteka: %s (%.2f %s)%s%s"
+#~ msgstr[3] "%s zahteva od %s da primi %d datoteku: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s zahteva od Vas da pošaljete datoteku"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "Dodatak za TOC protokol"
+
+#~ msgid "%s Options"
+#~ msgstr "%s opcije"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Postavke proksija"
+
+#~ msgid "By log size"
+#~ msgstr "Po veličini dnevnika"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_Otvori vezu u pregledniku"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "S_TUN Server:"
+
+#~ msgid "Smiley _Image"
+#~ msgstr "_Ikonica za smešak"
+
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "Pre_čica za smešak"
+
#~ msgid "Unable to retrieve MSN Address Book"
#~ msgstr "Ne mogu da pribavim MSN adresar"
diff --git a/po/sv.po b/po/sv.po
index e4a052e2a5..5d7ae81022 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-25 23:20+0100\n"
+"POT-Creation-Date: 2009-04-30 10:40-0400\n"
"PO-Revision-Date: 2009-02-25 23:14+0100\n"
"Last-Translator: Peter Hjalmarsson <xake@rymdraket.net>\n"
"Language-Team: \n"
@@ -606,19 +606,6 @@ msgstr ""
msgid "Send To"
msgstr "Skicka till"
-msgid "Invite message"
-msgstr "Inbjudningsmeddelande"
-
-msgid "Invite"
-msgstr "Bjud in"
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Ange namnet på den användare du vill bjuda in,\n"
-"samt ett inbjudningsmeddelande om du vill"
-
msgid "Conversation"
msgstr "Konversation"
@@ -876,6 +863,41 @@ msgstr "Alla konversationer"
msgid "System Log"
msgstr "Systemlogg"
+#, fuzzy
+msgid "Calling ... "
+msgstr "Beräknar..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "Acceptera"
+
+msgid "Reject"
+msgstr "Avslå"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "Du har lämnat kanalen%s%s"
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "Mejl"
@@ -910,6 +932,9 @@ msgstr "Fortsätt"
msgid "IM"
msgstr "Meddelande"
+msgid "Invite"
+msgstr "Bjud in"
+
msgid "(none)"
msgstr "(inget)"
@@ -1113,7 +1138,6 @@ msgstr "%s har gått iväg. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s har sänt dig ett meddelande. (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "Okänd attackhändelse. Var snäll och rapportera detta!"
@@ -1523,6 +1547,28 @@ msgstr "GntLastlog"
msgid "Lastlog plugin."
msgstr "Lastlogmodul"
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "LåtURL"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "konton"
@@ -1625,13 +1671,6 @@ msgstr "Acceptera certifikat för %s?"
msgid "SSL Certificate Verification"
msgstr "SSL Certifikatsverifikation"
-#. Number of actions
-msgid "Accept"
-msgstr "Acceptera"
-
-msgid "Reject"
-msgstr "Avslå"
-
msgid "_View Certificate..."
msgstr "_Visa Certifikat..."
@@ -1778,6 +1817,18 @@ msgstr "%s lämnade rummet."
msgid "%s left the room (%s)."
msgstr "%s lämnade rummet (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Bjud in till konferens"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Ange namnet på den användare du vill bjuda in, samt ett "
+"inbjudningsmeddelande om du vill"
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "Kan inte skapa anslutning: %s"
@@ -2599,6 +2650,32 @@ msgstr "Spara frånkopplade meddelanden som notifieringar"
msgid "Do not ask. Always save in pounce."
msgstr "Fråga inte. Spara alltid som notifiering."
+#, fuzzy
+msgid "One Time Password"
+msgstr "Ange lösenordet"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -3002,6 +3079,7 @@ msgstr "Välj en chatt för kompisen: %s"
msgid "Add to chat..."
msgstr "Lägg till i chatt..."
+#. Global
msgid "Available"
msgstr "Tillgänglig"
@@ -3348,6 +3426,17 @@ msgstr ""
"Ditt valda kontonamn vägrades av servern. Det innehåller antagligen "
"otillåtna tecken."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "Det chattnamnet används redan"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Smeknamn"
+
msgid "Cannot change nick"
msgstr "Kan inte ändra nick"
@@ -3623,6 +3712,41 @@ msgstr "Ogiltigt utmaning från servern"
msgid "SASL error"
msgstr "SASL fel"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "Ingen motivering angavs."
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Ej stöd version"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"Kunde inte skapa en anslutning med servern:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"Kunde inte skapa en anslutning med servern:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "Kan inte skapa anslutning"
+
+msgid "Unable to create socket"
+msgstr "Kan inte skapa socket"
+
+msgid "Write error"
+msgstr "Skrivfel"
+
msgid "Full Name"
msgstr "Fullständigt namn"
@@ -3692,6 +3816,10 @@ msgstr "Klient"
msgid "Operating System"
msgstr "Operativsystem"
+#, fuzzy
+msgid "Local Time"
+msgstr "Lokal fil:"
+
msgid "Last Activity"
msgstr "Senaste aktivitet"
@@ -4036,9 +4164,6 @@ msgstr "Sök rum"
msgid "You require encryption, but it is not available on this server."
msgstr "Du kräver cryptering, men server stödjer det inte."
-msgid "Write error"
-msgstr "Skrivfel"
-
msgid "Ping timeout"
msgstr "Ping överskred en tidsgräns"
@@ -4047,14 +4172,9 @@ msgstr "Läsfel"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"Kunde inte skapa en anslutning med servern:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "Kan inte skapa socket"
msgid "Invalid XMPP ID"
msgstr "Ogiltigt XMPP ID"
@@ -4062,6 +4182,10 @@ msgstr "Ogiltigt XMPP ID"
msgid "Invalid XMPP ID. Domain must be set."
msgstr "Ogiltigt XMPP IP. Domän måste anges."
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Kunde inte ansluta till servern."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "Registrering av %s@%s lyckades"
@@ -4152,6 +4276,12 @@ msgstr "Servern stödjer inte blockering"
msgid "Not Authorized"
msgstr "Inte auktoriserad"
+msgid "Mood"
+msgstr "Humör"
+
+msgid "Now Listening"
+msgstr "Lyssnar just nu"
+
msgid "Both"
msgstr "Båda"
@@ -4173,12 +4303,6 @@ msgstr "Ingen"
msgid "Subscription"
msgstr "Prenumeration"
-msgid "Mood"
-msgstr "Humör"
-
-msgid "Now Listening"
-msgstr "Lyssnar just nu"
-
msgid "Mood Text"
msgstr "Humörstext"
@@ -4416,18 +4540,24 @@ msgstr "Kan inte sparka ut användaren %s"
msgid "Unable to ping user %s"
msgstr "Kan inte pinga användaren %s"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr "Kunde inte surra eftersom det inte finns något känt om användaren %s."
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr "Kunde inte surra eftersom användaren %s kanske är frånkopplad."
-#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+#, fuzzy, c-format
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "Kan inte surra, användaren %s stödjer inte det."
+#, c-format
+msgid "Buzzing %s..."
+msgstr "Surrar %s..."
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
msgid "Buzz"
@@ -4437,9 +4567,35 @@ msgstr "Surr"
msgid "%s has buzzed you!"
msgstr "%s har surrat dig!"
-#, c-format
-msgid "Buzzing %s..."
-msgstr "Surrar %s..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "Kan inte skicka filen till %s, ogiltig JID"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "Kan inte skicka filen till %s, användaren är inte ansluten"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr ""
+"Kan inte skicka filen till %s, prenumererar inte på användartillgänglighet"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "Registreringen misslyckades"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "Var god välj vilken tillflykt för %s du vill sända filen till"
+
+msgid "Select a Resource"
+msgstr "Välj en tillflykt"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "Starta _chatt"
msgid "config: Configure a chat room."
msgstr "config: Konfigurera ett chattrum."
@@ -4597,6 +4753,21 @@ msgstr "Fel vid anslutning till chatt %s"
msgid "Error in chat %s"
msgstr "Fel i chatt %s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "Ett fel uppstod när filen öppnades."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "Filöverföringen misslyckades"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Kunde inte öppna filen '%s': %s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr "Kan inte skicka fil till %s, användaren stödjer inte filöverföringar"
@@ -4621,9 +4792,6 @@ msgstr ""
msgid "Please select the resource of %s to which you would like to send a file"
msgstr "Var god välj vilken tillflykt för %s du vill sända filen till"
-msgid "Select a Resource"
-msgstr "Välj en tillflykt"
-
msgid "Edit User Mood"
msgstr "Redigera användarhumör"
@@ -6436,7 +6604,7 @@ msgstr ""
"en bokstav och får endast innehålla bokstäver, nummer och mellanslag, eller "
"enbart innehålla nummer."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr "Ogiltigt användarnamn"
@@ -6452,7 +6620,7 @@ msgstr "Ditt konto är avstängt för tillfället."
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "Tjänsten är tillfälligt onåbar."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6640,7 +6808,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] "Du missade %hu meddelande från %s av okända orsaker."
msgstr[1] "Du missade %hu meddelanden från %s av okända orsaker."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "Kan inte skicka meddelande: %s"
@@ -7236,6 +7404,38 @@ msgstr "Uppdatera"
msgid "Could not change buddy information."
msgstr "Kunde inte ändra kompisinformationen."
+msgid "Mobile"
+msgstr "Mobil"
+
+msgid "Note"
+msgstr "Notering"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "Ändra Kompismemo"
+
+msgid "Change his/her memo as you like"
+msgstr ""
+
+#, fuzzy
+msgid "_Modify"
+msgstr "Ändra"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "Ändra"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "Servern upptagen"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
#, c-format
msgid "%u requires verification"
msgstr "%u kräver verifikation"
@@ -7548,6 +7748,9 @@ msgstr "<p><b>Bekräftningar</b>:<br>\n"
msgid "<p><b>Scrupulous Testers</b>:<br>\n"
msgstr "<p><b>Nogräknade testare</b>:<br>\n"
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr "<p><i>Och alla pojkarna i bakrummet...</i><br>\n"
@@ -7683,7 +7886,6 @@ msgstr ""
"Okänd svarskod vid inloggning (0x%02X):\n"
"%s"
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "Kan inte ansluta."
@@ -8587,9 +8789,6 @@ msgstr "Organisation"
msgid "Unit"
msgstr "Enhet"
-msgid "Note"
-msgstr "Notering"
-
msgid "Join Chat"
msgstr "Anslut till chatt"
@@ -9282,194 +9481,12 @@ msgid "Auth Domain"
msgstr "Autentiserad domän"
#, c-format
-msgid "Looking up %s"
-msgstr "Slå upp %s"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Anslutning till %s misslyckades"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Inloggning: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "Kan inte skriva filen %s."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "Kan inte läsa filen %s."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "Meddelandet är för långt, de sista %s byten klipptes bort."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s är inte inloggad för tillfället."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "Varning för %s är inte tillåten."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "Ett meddelande har kastats, du överskrider serverns hastighetsgräns."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "Chatt i %s är inte tillgänglig."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "Du skickar meddelanden för snabbt till %s."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "Du missade ett snabbmeddelande från %s eftersom det var för stort."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr ""
-"Du missade ett snabbmeddelande från %s eftersom det skickades för snabbt."
-
-#, c-format
-msgid "Failure."
-msgstr "Misslyckande."
-
-#, c-format
-msgid "Too many matches."
-msgstr "För många träffar."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "Behöver fler kvalificerare."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "Katalogtjänsten är tillfälligt onåbar."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "E-postuppslagning är begränsad."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "Nyckelordet ignorerades."
-
-#, c-format
-msgid "No keywords."
-msgstr "Inga nyckelord."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "Användaren har ingen kataloginformation."
-
-#, c-format
-msgid "Country not supported."
-msgstr "Landet stöds inte."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Okänt misslyckande: %s."
-
-#, c-format
-msgid "Incorrect username or password."
-msgstr "Felaktigt användarnamn eller lösenord"
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "Tjänsten är tillfälligt onåbar."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "Din varningsnivå är för tillfället för hög för att logga in."
-
-#, 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 anslutit och kopplat ifrån för många gånger. Vänta tio minuter och "
-"prova igen. Om du fortsätter att försöka kommer du att få vänta ännu längre."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "Ett okänt inloggningsfel har inträffat: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "Ett okänt fel, %d, har inträffat. Information: %s"
-
-msgid "Invalid Groupname"
-msgstr "Ogiltigt gruppnamn"
-
-msgid "Connection Closed"
-msgstr "Anslutningen stängd"
-
-msgid "Waiting for reply..."
-msgstr "Väntar på svar..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr ""
-"TOC har kommit tillbaka från dess paus. Du kan nu skicka meddelanden igen."
-
-msgid "Password Change Successful"
-msgstr "Lösenordsändring lyckades"
-
-msgid "_Group:"
-msgstr "_Grupp:"
-
-msgid "Get Dir Info"
-msgstr "Hämta kataloginformation"
-
-msgid "Set Dir Info"
-msgstr "Ställ in kataloginformation"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "Kunde inte öppna %s för läsning!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "Filöverföringen misslyckades, antagligen eftersom andra sidan avbröt."
-
-msgid "Could not connect for transfer."
-msgstr "Kunde inte ansluta för överföring."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "Kunde inte skriva filhuvud, filen kommer inte att skickas."
-
-msgid "Save As..."
-msgstr "Spara som..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s ber %s att acceptera %d fil: %s (%.2f %s)%s%s"
-msgstr[1] "%s ber %s att acceptera %d filer: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s ber att du ska skicka denne en fil"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "Insticksmodul för TOC-protokoll"
-
-#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr "%s har skickat dig en webbkamerainbjudan, vilket ännu inte stöds."
+msgid "Your SMS was not delivered"
+msgstr ""
+
msgid "Your Yahoo! message did not get sent."
msgstr "Ditt Yahoo!-meddelande skickades inte."
@@ -10061,9 +10078,6 @@ msgstr "Stör inte"
msgid "Extended away"
msgstr "Utökad frånvaro"
-msgid "Mobile"
-msgstr "Mobil"
-
msgid "Listening to music"
msgstr "Lyssnar på musik"
@@ -10105,18 +10119,6 @@ msgstr "+++ %s har blivit aktiv"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "Fel vid läsning av %s"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"Ett fel upptäcktes vid inläsandet av din %s. De har inte laddats och den "
-"gamla har blivit flyttad till %s~."
-
msgid "Calculating..."
msgstr "Beräknar..."
@@ -10191,6 +10193,12 @@ msgstr "Fel vid skrivning av %s: %s"
msgid "Unable to connect to %s: %s"
msgstr "Kan inte ansluta till %s: %s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr "Servern kräver TLS/SSL vid inloggning. Hittade inget stöd för TLS/SSL."
+
#, c-format
msgid " - %s"
msgstr "- %s"
@@ -10225,6 +10233,18 @@ msgstr "Anslutningen nekades."
msgid "Address already in use."
msgstr "Adressen används redan"
+#, c-format
+msgid "Error Reading %s"
+msgstr "Fel vid läsning av %s"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"Ett fel upptäcktes vid inläsandet av din %s. De har inte laddats och den "
+"gamla har blivit flyttad till %s~."
+
msgid "Internet Messenger"
msgstr "Meddelandeklient"
@@ -10267,10 +10287,8 @@ msgstr "Rapportera ny e-_post"
msgid "Use this buddy _icon for this account:"
msgstr "Använd denna kompis_ikon för detta konto:"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s-alternativ"
+msgid "_Advanced"
+msgstr "_Avancerat"
msgid "Use GNOME Proxy Settings"
msgstr "Använd GNOME proxyinställningar"
@@ -10305,9 +10323,6 @@ msgstr "Om du tittar riktigt nära"
msgid "you can see the butterflies mating"
msgstr "kan du se fjärilarna para sig"
-msgid "Proxy Options"
-msgstr "Proxyalternativ"
-
msgid "Proxy _type:"
msgstr "Proxy_typ:"
@@ -10335,8 +10350,9 @@ msgstr "_Basic"
msgid "Create _this new account on the server"
msgstr "Skapa detta _nya kontot på servern"
-msgid "_Advanced"
-msgstr "_Avancerat"
+#, fuzzy
+msgid "_Proxy"
+msgstr "Proxy"
msgid "Enabled"
msgstr "Aktiverad"
@@ -10412,6 +10428,17 @@ msgstr "Hämta _info"
msgid "I_M"
msgstr "_Meddelande"
+#, fuzzy
+msgid "_Audio Call"
+msgstr "_Lägg till chatt"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Videochatt"
+
msgid "_Send File..."
msgstr "_Skicka fil..."
@@ -10548,6 +10575,10 @@ msgstr "/Verktyg/Kom_pisnotifieringar"
msgid "/Tools/_Certificates"
msgstr "/Verktyg/_Certifikat"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Verktyg/Smile_y"
+
msgid "/Tools/Plu_gins"
msgstr "/Verktyg/Insticksmodu_ler"
@@ -10557,9 +10588,6 @@ msgstr "/Verktyg/_Inställningar"
msgid "/Tools/Pr_ivacy"
msgstr "/Verktyg/_Spärrlista"
-msgid "/Tools/Smile_y"
-msgstr "/Verktyg/Smile_y"
-
msgid "/Tools/_File Transfers"
msgstr "/Verktyg/_Filöverföringar"
@@ -10677,8 +10705,8 @@ msgstr "Manuellt"
msgid "By status"
msgstr "Efter status"
-msgid "By log size"
-msgstr "Efter loggstorlek"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10694,6 +10722,9 @@ msgstr "Återanslut"
msgid "Re-enable"
msgstr "Återaktivera konto"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr "Välkommen tillbaka"
@@ -10783,6 +10814,9 @@ msgstr ""
msgid "A_lias:"
msgstr "A_lias:"
+msgid "_Group:"
+msgstr "_Grupp:"
+
msgid "Auto_join when account becomes online."
msgstr "_Gå med automatiskt då kontot är anslutet."
@@ -10835,14 +10869,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr "Bjud in kompis till chattrum"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Ange namnet på den användare du vill bjuda in, samt ett "
-"inbjudningsmeddelande om du vill"
-
msgid "_Buddy:"
msgstr "_Kompis:"
@@ -10917,6 +10943,22 @@ msgstr "/Konversation/_Spara som..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Konversation/_Rensa tillbakablick"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Konversation/_Mer"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Konversation/_Mer"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Konversation/_Mer"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Konversation/Visa _Logg"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Konversation/S_kicka fil..."
@@ -10991,6 +11033,18 @@ msgstr "/Konversation"
msgid "/Conversation/View Log"
msgstr "/Konversation/Visa logg"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Konversation/Mer"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Konversation/Visa logg"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Konversation/Mer"
+
msgid "/Conversation/Send File..."
msgstr "/Konversation/Skicka fil..."
@@ -11173,6 +11227,9 @@ msgstr "artist"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "support"
@@ -11318,6 +11375,10 @@ msgstr "Georgiska"
msgid "Ubuntu Georgian Translators"
msgstr "Ubuntu Georgiska översättare"
+#, fuzzy
+msgid "Khmer"
+msgstr "Annan"
+
msgid "Kannada"
msgstr "Kannada"
@@ -11784,15 +11845,6 @@ msgstr "Typsnittet använt för skrivnotifieringen"
msgid "Enable typing notification"
msgstr "Aktivera skriftnotifiering"
-msgid "_Copy Email Address"
-msgstr "_Kopiera e-postadress"
-
-msgid "_Open Link in Browser"
-msgstr "_Öppna länk i webbläsare"
-
-msgid "_Copy Link Location"
-msgstr "_Kopiera länk"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12041,13 +12093,14 @@ msgstr "_Bläddra bland logg-kataloger"
msgid "%s %s. Try `%s -h' for more information.\n"
msgstr "%s %s. Försök med '%s -h' för mer information.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12071,13 +12124,14 @@ msgstr ""
" --display=DISPLAY X display att använda\n"
" -v, --version visa den nuvarande versionen och avsluta\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12136,11 +12190,23 @@ msgstr "Pidgin"
msgid "Exiting because another libpurple client is already running.\n"
msgstr "Avslutar på grund av att en annan libpurple-klient redan körs.\n"
-msgid "Open All Messages"
-msgstr "Öppna alla meddelanden"
+msgid "/_Media"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Du har fått e-post!!</span>"
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "Beräknar..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -12169,6 +12235,27 @@ msgid ""
"The 'Manual' browser command has been chosen, but no command has been set."
msgstr "Manuellt webbläsarkommando har valts, men inget kommando angivits."
+msgid "Open All Messages"
+msgstr "Öppna alla meddelanden"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Du har fått e-post!!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "Ny kompisnotifiering"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Du har fått e-post!!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "Okänt meddelande"
+
msgid "The following plugins will be unloaded."
msgstr "De följande modulerna kommer avladdas."
@@ -12217,6 +12304,10 @@ msgstr "<b>Detaljer för modul</b>"
msgid "Select a file"
msgstr "Välj en fil"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Ändra kompisnotifiering"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "Notifiera vem"
@@ -12287,6 +12378,50 @@ msgstr "Åte_rkommande"
msgid "Pounce Target"
msgstr "Notifiera mål"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "Börjar skriva"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "Pausar skrivandet"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "Ansluter"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s har blivit aktiv igen (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "Återvänder från frånvaro"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "Slutade skriva"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "Kopplar ifrån"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "Blir inaktiv"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "Vid frånvaro"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Skicka ett meddelande"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "Okänd attackhändelse. Var snäll och rapportera detta!"
+
msgid "Smiley theme failed to unpack."
msgstr "Smiley temat kunde inte packas upp."
@@ -12309,6 +12444,12 @@ msgstr "Tangentbordsgenvägar"
msgid "Cl_ose conversations with the Escape key"
msgstr "_Stäng konversationsfönster med Escape-knappen"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Kompislista"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "Systempanelikon"
@@ -12419,9 +12560,6 @@ msgstr "Kan inte starta konfigurationsprogrammet för proxy."
msgid "Cannot start browser configuration program."
msgstr "Kan inte starta konfigurationsprogrammet för webbläsaren"
-msgid "ST_UN server:"
-msgstr "ST_UN-server:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">Exempel: stunserver.org</span>"
@@ -12446,6 +12584,10 @@ msgstr "_Startport:"
msgid "_End port:"
msgstr "_Slutport:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr "Proxyserver &amp; Webbläsare"
@@ -12636,12 +12778,12 @@ msgstr "Vid både frånvaro och inaktivitet"
msgid "Auto-away"
msgstr "Automatisk frånvaro"
-msgid "Change status when _idle"
-msgstr "Ändra status vid _inaktivitet"
-
msgid "_Minutes before becoming idle:"
msgstr "_Minuter innan du räknas som inaktiv:"
+msgid "Change status when _idle"
+msgstr "Ändra status vid _inaktivitet"
+
msgid "Change _status to:"
msgstr "Ändra _status till:"
@@ -12790,6 +12932,12 @@ msgstr "Spara & An_vänd"
msgid "Status for %s"
msgstr "Status för %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
msgid "Custom Smiley"
msgstr "Egen Smiley"
@@ -12799,16 +12947,16 @@ msgstr "Mer Data behövs"
msgid "Please provide a shortcut to associate with the smiley."
msgstr "Var god ange en genväg att assocciera med den valda smileyn."
-msgid "Duplicate Shortcut"
-msgstr "Genvägen är upptagen"
-
+#, fuzzy, c-format
msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
+"A custom smiley for '%s' already exists. Please use a different shortcut."
msgstr ""
"En egen smiley för den valda genvägen existerar redan. Var vänlig ange en "
"annorlunda genväg."
+msgid "Duplicate Shortcut"
+msgstr "Genvägen är upptagen"
+
msgid "Please select an image for the smiley."
msgstr "Ange en bild för smileyn."
@@ -12818,16 +12966,22 @@ msgstr "Redigera Smiley"
msgid "Add Smiley"
msgstr "Lägg till Smiley"
-msgid "Smiley _Image"
-msgstr "Smiley-_bild"
+#, fuzzy
+msgid "_Image:"
+msgstr "B_ild"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr "Smiley-_genväg"
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "Genväg"
msgid "Smiley"
msgstr "Smiley"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "Genväg"
+
msgid "Custom Smiley Manager"
msgstr "Hanterare för egna Smileys"
@@ -12951,6 +13105,16 @@ msgid ""
msgstr ""
"Kunde inte öppna bilden '%s' av okänd anledning. Troligtvis är filen trasig."
+#, fuzzy
+msgid "_Open Link"
+msgstr "_Öppna länk i:"
+
+msgid "_Copy Link Location"
+msgstr "_Kopiera länk"
+
+msgid "_Copy Email Address"
+msgstr "_Kopiera e-postadress"
+
msgid "Save File"
msgstr "Spara fil"
@@ -13970,6 +14134,182 @@ msgstr "Skicka och ta emot råa XMPP strofer."
msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr "Denna modul är användbar vid felsökning av XMPP serverar och klienter."
+#~ msgid "Invite message"
+#~ msgstr "Inbjudningsmeddelande"
+
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Ange namnet på den användare du vill bjuda in,\n"
+#~ "samt ett inbjudningsmeddelande om du vill"
+
+#~ msgid "Looking up %s"
+#~ msgstr "Slå upp %s"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "Anslutning till %s misslyckades"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Inloggning: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "Kan inte skriva filen %s."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "Kan inte läsa filen %s."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "Meddelandet är för långt, de sista %s byten klipptes bort."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s är inte inloggad för tillfället."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "Varning för %s är inte tillåten."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr ""
+#~ "Ett meddelande har kastats, du överskrider serverns hastighetsgräns."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "Chatt i %s är inte tillgänglig."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "Du skickar meddelanden för snabbt till %s."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "Du missade ett snabbmeddelande från %s eftersom det var för stort."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr ""
+#~ "Du missade ett snabbmeddelande från %s eftersom det skickades för snabbt."
+
+#~ msgid "Failure."
+#~ msgstr "Misslyckande."
+
+#~ msgid "Too many matches."
+#~ msgstr "För många träffar."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "Behöver fler kvalificerare."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "Katalogtjänsten är tillfälligt onåbar."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "E-postuppslagning är begränsad."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "Nyckelordet ignorerades."
+
+#~ msgid "No keywords."
+#~ msgstr "Inga nyckelord."
+
+#~ msgid "User has no directory information."
+#~ msgstr "Användaren har ingen kataloginformation."
+
+#~ msgid "Country not supported."
+#~ msgstr "Landet stöds inte."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Okänt misslyckande: %s."
+
+#~ msgid "Incorrect username or password."
+#~ msgstr "Felaktigt användarnamn eller lösenord"
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "Tjänsten är tillfälligt onåbar."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "Din varningsnivå är för tillfället för hög för att logga in."
+
+#~ 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 anslutit och kopplat ifrån för många gånger. Vänta tio minuter och "
+#~ "prova igen. Om du fortsätter att försöka kommer du att få vänta ännu "
+#~ "längre."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "Ett okänt inloggningsfel har inträffat: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "Ett okänt fel, %d, har inträffat. Information: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "Ogiltigt gruppnamn"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Anslutningen stängd"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "Väntar på svar..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr ""
+#~ "TOC har kommit tillbaka från dess paus. Du kan nu skicka meddelanden igen."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "Lösenordsändring lyckades"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Hämta kataloginformation"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Ställ in kataloginformation"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "Kunde inte öppna %s för läsning!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr ""
+#~ "Filöverföringen misslyckades, antagligen eftersom andra sidan avbröt."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "Kunde inte ansluta för överföring."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "Kunde inte skriva filhuvud, filen kommer inte att skickas."
+
+#~ msgid "Save As..."
+#~ msgstr "Spara som..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s ber %s att acceptera %d fil: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s ber %s att acceptera %d filer: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s ber att du ska skicka denne en fil"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "Insticksmodul för TOC-protokoll"
+
+#~ msgid "%s Options"
+#~ msgstr "%s-alternativ"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Proxyalternativ"
+
+#~ msgid "By log size"
+#~ msgstr "Efter loggstorlek"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_Öppna länk i webbläsare"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "ST_UN-server:"
+
+#~ msgid "Smiley _Image"
+#~ msgstr "Smiley-_bild"
+
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "Smiley-_genväg"
+
#~ msgid "Unable to retrieve MSN Address Book"
#~ msgstr "Kunde inte hämta MSN-adressbok"
diff --git a/po/sw.po b/po/sw.po
new file mode 100644
index 0000000000..0c41cd8a78
--- /dev/null
+++ b/po/sw.po
@@ -0,0 +1,13972 @@
+# Copyright (C) 2009
+# This file is distributed under the same license as the Pidgin package.
+# , 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: pidgin\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-05-26 19:54-0700\n"
+"PO-Revision-Date: 2009-04-16 22:24+0300\n"
+"Last-Translator: \n"
+"Language-Team: American English <kde-i18n-doc@lists.kde.org>\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: Lokalize 0.2\n"
+
+#. Translators may want to transliterate the name.
+#. It is not to be translated.
+#, fuzzy
+msgid "Finch"
+msgstr "Maliza"
+
+#, fuzzy, c-format
+msgid "%s. Try `%s -h' for more information.\n"
+msgstr "\n"
+
+#, c-format
+msgid ""
+"%s\n"
+"Usage: %s [OPTION]...\n"
+"\n"
+" -c, --config=DIR use DIR for config files\n"
+" -d, --debug print debugging messages to stderr\n"
+" -h, --help display this help and exit\n"
+" -n, --nologin don't automatically login\n"
+" -v, --version display the current version and exit\n"
+msgstr ""
+
+#, 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 ""
+
+msgid "Error"
+msgstr "Hitikafu "
+
+msgid "Account was not added"
+msgstr ""
+
+msgid "Username of an account must be non-empty."
+msgstr "Jina la mtumiaji haliwezi kuwa wazi "
+
+#, fuzzy
+msgid "New mail notifications"
+msgstr "Arifisho la Jumla"
+
+#, fuzzy
+msgid "Remember password"
+msgstr "Ingiza tena nywila:"
+
+msgid "There are no protocol plugins installed."
+msgstr ""
+
+msgid "(You probably forgot to 'make install'.)"
+msgstr ""
+
+msgid "Modify Account"
+msgstr ""
+
+msgid "New Account"
+msgstr ""
+
+#, fuzzy
+msgid "Protocol:"
+msgstr "Itifaki"
+
+#, fuzzy
+msgid "Username:"
+msgstr "Jina la mtumiaji"
+
+msgid "Password:"
+msgstr "Nywila:"
+
+msgid "Alias:"
+msgstr ""
+
+#. Register checkbox
+msgid "Create this account on the server"
+msgstr ""
+
+#. Cancel button
+#. Cancel
+msgid "Cancel"
+msgstr "Ghairi"
+
+#. Save button
+#. Save
+msgid "Save"
+msgstr "Hifadhi"
+
+#, fuzzy, c-format
+msgid "Are you sure you want to delete %s?"
+msgstr "Una uhakika unataka kufuta ithibati yako?"
+
+#, fuzzy
+msgid "Delete Account"
+msgstr "Futa mwenyeji"
+
+#. Delete button
+#, fuzzy
+msgid "Delete"
+msgstr "&Futa"
+
+msgid "Accounts"
+msgstr ""
+
+msgid "You can enable/disable accounts from the following list."
+msgstr ""
+
+#. Add button
+msgid "Add"
+msgstr "Ongeza"
+
+#. Modify button
+#, fuzzy
+msgid "Modify"
+msgstr "R&ekebisha"
+
+#, c-format
+msgid "%s%s%s%s has made %s his or her buddy%s%s"
+msgstr ""
+
+msgid "Add buddy to your list?"
+msgstr ""
+
+#, c-format
+msgid "%s%s%s%s wants to add %s to his or her buddy list%s%s"
+msgstr ""
+
+msgid "Authorize buddy?"
+msgstr ""
+
+#, fuzzy
+msgid "Authorize"
+msgstr "Mamlaka"
+
+msgid "Deny"
+msgstr "Kataa"
+
+#, c-format
+msgid ""
+"Online: %d\n"
+"Total: %d"
+msgstr ""
+
+#, c-format
+msgid "Account: %s (%s)"
+msgstr ""
+
+#, c-format
+msgid ""
+"\n"
+"Last Seen: %s ago"
+msgstr ""
+
+#, fuzzy
+msgid "Default"
+msgstr "chaguo-msingi"
+
+msgid "You must provide a username for the buddy."
+msgstr ""
+
+msgid "You must provide a group."
+msgstr ""
+
+msgid "You must select an account."
+msgstr ""
+
+msgid "The selected account is not online."
+msgstr ""
+
+msgid "Error adding buddy"
+msgstr ""
+
+msgid "Username"
+msgstr "Jina la mtumiaji"
+
+#, fuzzy
+msgid "Alias (optional)"
+msgstr "&Barua pepe (Uchaguzi):"
+
+msgid "Add in group"
+msgstr ""
+
+msgid "Account"
+msgstr ""
+
+msgid "Add Buddy"
+msgstr ""
+
+msgid "Please enter buddy information."
+msgstr ""
+
+#, fuzzy
+msgid "Chats"
+msgstr "Chad"
+
+#. Extract their Name and put it in
+msgid "Name"
+msgstr "Jina"
+
+msgid "Alias"
+msgstr ""
+
+msgid "Group"
+msgstr ""
+
+msgid "Auto-join"
+msgstr ""
+
+msgid "Add Chat"
+msgstr ""
+
+msgid "You can edit more information from the context menu later."
+msgstr ""
+
+#, fuzzy
+msgid "Error adding group"
+msgstr "Hitilafu katika Kutuma Taarifa"
+
+msgid "You must give a name for the group to add."
+msgstr ""
+
+msgid "Add Group"
+msgstr ""
+
+msgid "Enter the name of the group"
+msgstr ""
+
+msgid "Edit Chat"
+msgstr ""
+
+msgid "Please Update the necessary fields."
+msgstr ""
+
+#, fuzzy
+msgid "Edit"
+msgstr "&Hariri"
+
+#, fuzzy
+msgid "Edit Settings"
+msgstr "Vipimo"
+
+#, fuzzy
+msgid "Information"
+msgstr "Taarifa Zaidi"
+
+msgid "Retrieving..."
+msgstr ""
+
+msgid "Get Info"
+msgstr ""
+
+msgid "Add Buddy Pounce"
+msgstr ""
+
+#, fuzzy
+msgid "Send File"
+msgstr "Tuma Kwa:"
+
+msgid "Blocked"
+msgstr "Imezuiliwa"
+
+msgid "Show when offline"
+msgstr ""
+
+#, c-format
+msgid "Please enter the new name for %s"
+msgstr ""
+
+#, fuzzy
+msgid "Rename"
+msgstr "&Badili jina"
+
+msgid "Set Alias"
+msgstr ""
+
+msgid "Enter empty string to reset the name."
+msgstr ""
+
+msgid "Removing this contact will also remove all the buddies in the contact"
+msgstr ""
+
+msgid "Removing this group will also remove all the buddies in the group"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Are you sure you want to remove %s?"
+msgstr "Una uhakika unataka kuondoa nywila zote?"
+
+#. XXX: anything to do with the returned ui-handle?
+#, fuzzy
+msgid "Confirm Remove"
+msgstr "Thibitisha kufunga"
+
+msgid "Remove"
+msgstr "Ondoa"
+
+#. Buddy List
+msgid "Buddy List"
+msgstr ""
+
+msgid "Place tagged"
+msgstr ""
+
+msgid "Toggle Tag"
+msgstr ""
+
+msgid "View Log"
+msgstr ""
+
+#. General
+msgid "Nickname"
+msgstr ""
+
+#. Never know what those translations might end up like...
+#. Idle stuff
+msgid "Idle"
+msgstr ""
+
+msgid "On Mobile"
+msgstr ""
+
+msgid "New..."
+msgstr ""
+
+msgid "Saved..."
+msgstr ""
+
+msgid "Plugins"
+msgstr "Programu tumizi"
+
+msgid "Block/Unblock"
+msgstr ""
+
+msgid "Block"
+msgstr "Zuia"
+
+msgid "Unblock"
+msgstr ""
+
+msgid ""
+"Please enter the username or alias of the person you would like to Block/"
+"Unblock."
+msgstr ""
+
+#. Not multiline
+#. Not masked?
+#. No hints?
+msgid "OK"
+msgstr "Sawa"
+
+msgid "New Instant Message"
+msgstr ""
+
+msgid "Please enter the username or alias of the person you would like to IM."
+msgstr ""
+
+#, fuzzy
+msgid "Channel"
+msgstr "Ghairi"
+
+msgid "Join a Chat"
+msgstr ""
+
+msgid "Please enter the name of the chat you want to join."
+msgstr ""
+
+msgid "Join"
+msgstr ""
+
+msgid ""
+"Please enter the username or alias of the person whose log you would like to "
+"view."
+msgstr ""
+
+#. Create the "Options" frame.
+msgid "Options"
+msgstr "Machaguo"
+
+msgid "Send IM..."
+msgstr ""
+
+msgid "Block/Unblock..."
+msgstr ""
+
+msgid "Join Chat..."
+msgstr ""
+
+msgid "View Log..."
+msgstr ""
+
+msgid "View All Logs"
+msgstr ""
+
+#, fuzzy
+msgid "Show"
+msgstr "Onyesha:"
+
+msgid "Empty groups"
+msgstr ""
+
+#, fuzzy
+msgid "Offline buddies"
+msgstr "Namna ya Nje ya mkondo"
+
+#, fuzzy
+msgid "Sort"
+msgstr "&Panga"
+
+#, fuzzy
+msgid "By Status"
+msgstr "Hali"
+
+msgid "Alphabetically"
+msgstr ""
+
+msgid "By Log Size"
+msgstr ""
+
+msgid "Buddy"
+msgstr ""
+
+#, fuzzy
+msgid "Chat"
+msgstr "Chad"
+
+#, fuzzy
+msgid "Grouping"
+msgstr "Hakuna Mpangilio"
+
+#, fuzzy
+msgid "Certificate Import"
+msgstr "Hati ina"
+
+msgid "Specify a hostname"
+msgstr ""
+
+msgid "Type the host name this certificate is for."
+msgstr ""
+
+#, c-format
+msgid ""
+"File %s could not be imported.\n"
+"Make sure that the file is readable and in PEM format.\n"
+msgstr ""
+
+msgid "Certificate Import Error"
+msgstr ""
+
+msgid "X.509 certificate import failed"
+msgstr ""
+
+#, fuzzy
+msgid "Select a PEM certificate"
+msgstr "Teua Ithibati"
+
+#, c-format
+msgid ""
+"Export to file %s failed.\n"
+"Check that you have write permission to the target path\n"
+msgstr ""
+
+#, fuzzy
+msgid "Certificate Export Error"
+msgstr "Ithibati Ipo"
+
+msgid "X.509 certificate export failed"
+msgstr ""
+
+#, fuzzy
+msgid "PEM X.509 Certificate Export"
+msgstr "X.509 Ithibati (PEM)"
+
+#, fuzzy, c-format
+msgid "Certificate for %s"
+msgstr "Hati ina"
+
+#, c-format
+msgid ""
+"Common name: %s\n"
+"\n"
+"SHA1 fingerprint:\n"
+"%s"
+msgstr ""
+
+#, fuzzy
+msgid "SSL Host Certificate"
+msgstr "Ithibati SSL ya Mteja"
+
+#, c-format
+msgid "Really delete certificate for %s?"
+msgstr ""
+
+msgid "Confirm certificate delete"
+msgstr ""
+
+msgid "Certificate Manager"
+msgstr "Meneja Ithibati"
+
+#. Creating the user splits
+msgid "Hostname"
+msgstr ""
+
+#, fuzzy
+msgid "Info"
+msgstr "Taarifa:"
+
+#. Close button
+msgid "Close"
+msgstr "Funga"
+
+#, fuzzy, c-format
+msgid "%s (%s)"
+msgstr "%S (%S)"
+
+#, c-format
+msgid "%s disconnected."
+msgstr ""
+
+#, 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 ""
+
+msgid "Re-enable Account"
+msgstr ""
+
+msgid ""
+"The account has disconnected and you are no longer in this chat. You will be "
+"automatically rejoined in the chat when the account reconnects."
+msgstr ""
+
+msgid "No such command."
+msgstr ""
+
+msgid "Syntax Error: You typed the wrong number of arguments to that command."
+msgstr ""
+
+msgid "Your command failed for an unknown reason."
+msgstr ""
+
+msgid "That command only works in chats, not IMs."
+msgstr ""
+
+msgid "That command only works in IMs, not chats."
+msgstr ""
+
+msgid "That command doesn't work on this protocol."
+msgstr ""
+
+msgid "Message was not sent, because you are not signed on."
+msgstr ""
+
+#, c-format
+msgid "%s (%s -- %s)"
+msgstr ""
+
+#, c-format
+msgid "%s [%s]"
+msgstr ""
+
+#, c-format
+msgid ""
+"\n"
+"%s is typing..."
+msgstr ""
+
+msgid "You have left this chat."
+msgstr ""
+
+msgid "Logging started. Future messages in this conversation will be logged."
+msgstr ""
+
+msgid ""
+"Logging stopped. Future messages in this conversation will not be logged."
+msgstr ""
+
+#, fuzzy
+msgid "Send To"
+msgstr "Tuma kwa:"
+
+#, fuzzy
+msgid "Conversation"
+msgstr "Unganisho"
+
+msgid "Clear Scrollback"
+msgstr ""
+
+#, fuzzy
+msgid "Show Timestamps"
+msgstr "Onyesha Ufafanuzi"
+
+msgid "Add Buddy Pounce..."
+msgstr ""
+
+msgid "Invite..."
+msgstr ""
+
+msgid "Enable Logging"
+msgstr ""
+
+msgid "Enable Sounds"
+msgstr ""
+
+msgid "<AUTO-REPLY> "
+msgstr ""
+
+#, c-format
+msgid "List of %d user:\n"
+msgid_plural "List of %d users:\n"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Supported debug options are: version"
+msgstr ""
+
+msgid "No such command (in this context)."
+msgstr ""
+
+msgid ""
+"Use \"/help &lt;command&gt;\" for help on a specific command.\n"
+"The following commands are available in this context:\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s is not a valid message class. See '/help msgcolor' for valid message "
+"classes."
+msgstr ""
+
+#, c-format
+msgid "%s is not a valid color. See '/help msgcolor' for valid colors."
+msgstr ""
+
+msgid ""
+"say &lt;message&gt;: Send a message normally as if you weren't using a "
+"command."
+msgstr ""
+
+msgid "me &lt;action&gt;: Send an IRC style action to a buddy or chat."
+msgstr ""
+
+msgid ""
+"debug &lt;option&gt;: Send various debug information to the current "
+"conversation."
+msgstr ""
+
+msgid "clear: Clears the conversation scrollback."
+msgstr ""
+
+msgid "help &lt;command&gt;: Help on a specific command."
+msgstr ""
+
+msgid "users: Show the list of users in the chat."
+msgstr ""
+
+msgid "plugins: Show the plugins window."
+msgstr ""
+
+msgid "buddylist: Show the buddylist."
+msgstr ""
+
+msgid "accounts: Show the accounts window."
+msgstr ""
+
+msgid "debugwin: Show the debug window."
+msgstr ""
+
+msgid "prefs: Show the preference window."
+msgstr ""
+
+msgid "statuses: Show the savedstatuses window."
+msgstr ""
+
+msgid ""
+"msgcolor &lt;class&gt; &lt;foreground&gt; &lt;background&gt;: Set the color "
+"for different classes of messages in the conversation window.<br> &lt;"
+"class&gt;: receive, send, highlight, action, timestamp<br> &lt;foreground/"
+"background&gt;: black, red, green, blue, white, gray, darkgray, magenta, "
+"cyan, default<br><br>EXAMPLE:<br> msgcolor send cyan default"
+msgstr ""
+
+#, fuzzy
+msgid "Unable to open file."
+msgstr "Nimeshindwa Kusasisha"
+
+#, fuzzy
+msgid "Debug Window"
+msgstr "Dirisha Jipya"
+
+#. XXX: Setting the GROW_Y for the following widgets don't make sense. But right now
+#. * it's necessary to make the width of the debug window resizable ... like I said,
+#. * it doesn't make sense. The bug is likely in the packing in gntbox.c.
+#.
+#, fuzzy
+msgid "Clear"
+msgstr "&Safisha"
+
+#, fuzzy
+msgid "Filter:"
+msgstr "Ch&uja:"
+
+msgid "Pause"
+msgstr "Simamisha"
+
+#, c-format
+msgid "File Transfers - %d%% of %d file"
+msgid_plural "File Transfers - %d%% of %d files"
+msgstr[0] ""
+msgstr[1] ""
+
+#. Create the window.
+msgid "File Transfers"
+msgstr ""
+
+#, fuzzy
+msgid "Progress"
+msgstr "Hatua:"
+
+#, fuzzy
+msgid "Filename"
+msgstr "Jina la faili:"
+
+msgid "Size"
+msgstr "Saizi"
+
+#, fuzzy
+msgid "Speed"
+msgstr "Kilishi mkono"
+
+#, fuzzy
+msgid "Remaining"
+msgstr "#1 imebakia"
+
+#. XXX: Use of ggp_str_to_uin() is an ugly hack!
+msgid "Status"
+msgstr "Hali"
+
+msgid "Close this window when all transfers finish"
+msgstr ""
+
+msgid "Clear finished transfers"
+msgstr ""
+
+#, fuzzy
+msgid "Stop"
+msgstr "&Simama"
+
+msgid "Waiting for transfer to begin"
+msgstr ""
+
+msgid "Canceled"
+msgstr "Imeghairishwa"
+
+msgid "Failed"
+msgstr "Imeshindwa"
+
+#, c-format
+msgid "%.2f KiB/s"
+msgstr ""
+
+msgid "Sent"
+msgstr ""
+
+msgid "Received"
+msgstr ""
+
+msgid "Finished"
+msgstr "Imemaliza"
+
+#, c-format
+msgid "The file was saved as %s."
+msgstr ""
+
+#, fuzzy
+msgid "Sending"
+msgstr "kuumbia"
+
+#, fuzzy
+msgid "Receiving"
+msgstr "teremua"
+
+#, c-format
+msgid "Conversation in %s on %s"
+msgstr ""
+
+#, c-format
+msgid "Conversation with %s on %s"
+msgstr ""
+
+#, fuzzy
+msgid "%B %Y"
+msgstr "%S %S"
+
+msgid ""
+"System events will only be logged if the \"Log all status changes to system "
+"log\" preference is enabled."
+msgstr ""
+
+msgid ""
+"Instant messages will only be logged if the \"Log all instant messages\" "
+"preference is enabled."
+msgstr ""
+
+msgid ""
+"Chats will only be logged if the \"Log all chats\" preference is enabled."
+msgstr ""
+
+#, fuzzy
+msgid "No logs were found"
+msgstr "Hakuna masasisho yaliyopatikana."
+
+msgid "Total log size:"
+msgstr ""
+
+#. Search box *********
+msgid "Scroll/Search: "
+msgstr ""
+
+#, c-format
+msgid "Conversations in %s"
+msgstr ""
+
+#, c-format
+msgid "Conversations with %s"
+msgstr ""
+
+msgid "All Conversations"
+msgstr ""
+
+msgid "System Log"
+msgstr ""
+
+msgid "Calling ... "
+msgstr ""
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr ""
+
+#, fuzzy
+msgid "Reject"
+msgstr "Seti upya"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+msgid "You have rejected the call."
+msgstr ""
+
+msgid "call: Make an audio call."
+msgstr ""
+
+#, fuzzy
+msgid "Emails"
+msgstr "Barua pepe"
+
+msgid "You have mail!"
+msgstr ""
+
+#, fuzzy
+msgid "Sender"
+msgstr "Seva"
+
+msgid "Subject"
+msgstr "Mhusika"
+
+#, c-format
+msgid "%s (%s) has %d new message."
+msgid_plural "%s (%s) has %d new messages."
+msgstr[0] ""
+msgstr[1] ""
+
+#, fuzzy
+msgid "New Mail"
+msgstr "Tabo mpya"
+
+#, c-format
+msgid "Info for %s"
+msgstr ""
+
+#, fuzzy
+msgid "Buddy Information"
+msgstr "Fic&ha Taarifa"
+
+msgid "Continue"
+msgstr "Endelea"
+
+msgid "IM"
+msgstr ""
+
+msgid "Invite"
+msgstr ""
+
+msgid "(none)"
+msgstr ""
+
+msgid "URI"
+msgstr "URI"
+
+msgid "ERROR"
+msgstr "HITILAFU"
+
+msgid "loading plugin failed"
+msgstr ""
+
+msgid "unloading plugin failed"
+msgstr ""
+
+#, c-format
+msgid ""
+"Name: %s\n"
+"Version: %s\n"
+"Description: %s\n"
+"Author: %s\n"
+"Website: %s\n"
+"Filename: %s\n"
+msgstr ""
+
+msgid "Plugin need to be loaded before you can configure it."
+msgstr ""
+
+msgid "No configuration options for this plugin."
+msgstr ""
+
+msgid "Error loading plugin"
+msgstr ""
+
+msgid "The selected file is not a valid plugin."
+msgstr ""
+
+msgid ""
+"Please open the debug window and try again to see the exact error message."
+msgstr ""
+
+#, fuzzy
+msgid "Select plugin to install"
+msgstr "Chagua mandhari kusakinisha"
+
+msgid "You can (un)load plugins from the following list."
+msgstr ""
+
+#, fuzzy
+msgid "Install Plugin..."
+msgstr "Usakinishaji Programu-jalizi"
+
+msgid "Configure Plugin"
+msgstr ""
+
+#. copy the preferences to tmp values...
+#. * I liked "take affect immediately" Oh well :-(
+#. (that should have been "effect," right?)
+#. Back to instant-apply! I win! BU-HAHAHA!
+#. Create the window
+msgid "Preferences"
+msgstr "Mapendekezo"
+
+msgid "Please enter a buddy to pounce."
+msgstr ""
+
+msgid "New Buddy Pounce"
+msgstr ""
+
+msgid "Edit Buddy Pounce"
+msgstr ""
+
+msgid "Pounce Who"
+msgstr ""
+
+#. Account:
+msgid "Account:"
+msgstr ""
+
+msgid "Buddy name:"
+msgstr ""
+
+#. Create the "Pounce When Buddy..." frame.
+msgid "Pounce When Buddy..."
+msgstr ""
+
+msgid "Signs on"
+msgstr ""
+
+msgid "Signs off"
+msgstr ""
+
+msgid "Goes away"
+msgstr ""
+
+msgid "Returns from away"
+msgstr ""
+
+msgid "Becomes idle"
+msgstr ""
+
+msgid "Is no longer idle"
+msgstr ""
+
+msgid "Starts typing"
+msgstr ""
+
+msgid "Pauses while typing"
+msgstr ""
+
+msgid "Stops typing"
+msgstr ""
+
+msgid "Sends a message"
+msgstr ""
+
+#. Create the "Action" frame.
+#, fuzzy
+msgid "Action"
+msgstr "&Tendo"
+
+#, fuzzy
+msgid "Open an IM window"
+msgstr "Fungua dirisha jipya"
+
+msgid "Pop up a notification"
+msgstr ""
+
+msgid "Send a message"
+msgstr ""
+
+msgid "Execute a command"
+msgstr ""
+
+msgid "Play a sound"
+msgstr ""
+
+msgid "Pounce only when my status is not Available"
+msgstr ""
+
+msgid "Recurring"
+msgstr ""
+
+msgid "Cannot create pounce"
+msgstr ""
+
+msgid "You do not have any accounts."
+msgstr ""
+
+msgid "You must create an account first before you can create a pounce."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Are you sure you want to delete the pounce on %s for %s?"
+msgstr "Je una uhakika uantaka kufuta ithibati hizi?"
+
+msgid "Buddy Pounces"
+msgstr ""
+
+#, c-format
+msgid "%s has started typing to you (%s)"
+msgstr ""
+
+#, c-format
+msgid "%s has paused while typing to you (%s)"
+msgstr ""
+
+#, c-format
+msgid "%s has signed on (%s)"
+msgstr ""
+
+#, c-format
+msgid "%s has returned from being idle (%s)"
+msgstr ""
+
+#, c-format
+msgid "%s has returned from being away (%s)"
+msgstr ""
+
+#, c-format
+msgid "%s has stopped typing to you (%s)"
+msgstr ""
+
+#, c-format
+msgid "%s has signed off (%s)"
+msgstr ""
+
+#, c-format
+msgid "%s has become idle (%s)"
+msgstr ""
+
+#, c-format
+msgid "%s has gone away. (%s)"
+msgstr ""
+
+#, c-format
+msgid "%s has sent you a message. (%s)"
+msgstr ""
+
+msgid "Unknown pounce event. Please report this!"
+msgstr ""
+
+msgid "Based on keyboard use"
+msgstr ""
+
+msgid "From last sent message"
+msgstr ""
+
+#, fuzzy
+msgid "Never"
+msgstr "Seva"
+
+msgid "Show Idle Time"
+msgstr ""
+
+msgid "Show Offline Buddies"
+msgstr ""
+
+msgid "Notify buddies when you are typing"
+msgstr ""
+
+msgid "Log format"
+msgstr ""
+
+#, fuzzy
+msgid "Log IMs"
+msgstr "I&ngia"
+
+msgid "Log chats"
+msgstr ""
+
+msgid "Log status change events"
+msgstr ""
+
+msgid "Report Idle time"
+msgstr ""
+
+#, fuzzy
+msgid "Change status when idle"
+msgstr "&Badili matini ya ufito hali"
+
+msgid "Minutes before changing status"
+msgstr ""
+
+#, fuzzy
+msgid "Change status to"
+msgstr "&Badili matini ya ufito hali"
+
+#, fuzzy
+msgid "Conversations"
+msgstr "Unganisho"
+
+#, fuzzy
+msgid "Logging"
+msgstr "Inapakia"
+
+msgid "You must fill all the required fields."
+msgstr ""
+
+msgid "The required fields are underlined."
+msgstr ""
+
+msgid "Not implemented yet."
+msgstr ""
+
+#, fuzzy
+msgid "Save File..."
+msgstr "&Hifadhi faili"
+
+#, fuzzy
+msgid "Open File..."
+msgstr "Fungua Faili"
+
+msgid "Choose Location..."
+msgstr ""
+
+msgid "Hit 'Enter' to find more rooms of this category."
+msgstr ""
+
+msgid "Get"
+msgstr ""
+
+#. Create the window.
+msgid "Room List"
+msgstr ""
+
+msgid "Buddy logs in"
+msgstr ""
+
+msgid "Buddy logs out"
+msgstr ""
+
+msgid "Message received"
+msgstr ""
+
+msgid "Message received begins conversation"
+msgstr ""
+
+#, fuzzy
+msgid "Message sent"
+msgstr "Ujumbe haujaenda."
+
+msgid "Person enters chat"
+msgstr ""
+
+msgid "Person leaves chat"
+msgstr ""
+
+msgid "You talk in chat"
+msgstr ""
+
+msgid "Others talk in chat"
+msgstr ""
+
+msgid "Someone says your username in chat"
+msgstr ""
+
+msgid "GStreamer Failure"
+msgstr ""
+
+msgid "GStreamer failed to initialize."
+msgstr ""
+
+#, fuzzy
+msgid "(default)"
+msgstr "chaguo-msingi"
+
+msgid "Select Sound File ..."
+msgstr ""
+
+#, fuzzy
+msgid "Sound Preferences"
+msgstr "&Mapendekezo ya Tovuti"
+
+#, fuzzy
+msgid "Profiles"
+msgstr "Mafaili_%S"
+
+msgid "Automatic"
+msgstr ""
+
+msgid "Console Beep"
+msgstr ""
+
+msgid "Command"
+msgstr ""
+
+msgid "No Sound"
+msgstr ""
+
+msgid "Sound Method"
+msgstr ""
+
+msgid "Method: "
+msgstr ""
+
+#, c-format
+msgid ""
+"Sound Command\n"
+"(%s for filename)"
+msgstr ""
+
+#. Sound options
+msgid "Sound Options"
+msgstr ""
+
+msgid "Sounds when conversation has focus"
+msgstr ""
+
+#, fuzzy
+msgid "Always"
+msgstr "Uliza daima"
+
+msgid "Only when available"
+msgstr ""
+
+msgid "Only when not available"
+msgstr ""
+
+msgid "Volume(0-100):"
+msgstr ""
+
+#. Sound events
+msgid "Sound Events"
+msgstr ""
+
+msgid "Event"
+msgstr ""
+
+#, fuzzy
+msgid "File"
+msgstr "Faili:"
+
+#, fuzzy
+msgid "Test"
+msgstr "Matini"
+
+msgid "Reset"
+msgstr "Seti upya"
+
+#, fuzzy
+msgid "Choose..."
+msgstr "Chagua…"
+
+#, fuzzy, c-format
+msgid "Are you sure you want to delete \"%s\""
+msgstr "Una uhakika unataka kufuta ithibati yako?"
+
+#, fuzzy
+msgid "Delete Status"
+msgstr "Futa mwenyeji"
+
+msgid "Saved Statuses"
+msgstr ""
+
+msgid "Title"
+msgstr "Jina"
+
+msgid "Type"
+msgstr "Aina"
+
+#. Statuses are almost all the same. Define a macro to reduce code repetition.
+#. PurpleStatusPrimitive
+#. id - use default
+#. name - use default
+#. saveable
+#. user_settable
+#. not independent
+#. Attributes - each status can have a message.
+msgid "Message"
+msgstr "Ujumbe"
+
+#. Use
+msgid "Use"
+msgstr ""
+
+#, fuzzy
+msgid "Invalid title"
+msgstr "Kizuizi batili"
+
+msgid "Please enter a non-empty title for the status."
+msgstr ""
+
+#, fuzzy
+msgid "Duplicate title"
+msgstr "sifa rudufu"
+
+msgid "Please enter a different title for the status."
+msgstr ""
+
+#, fuzzy
+msgid "Substatus"
+msgstr "Hali"
+
+msgid "Status:"
+msgstr "Hali:"
+
+#, fuzzy
+msgid "Message:"
+msgstr "Ujumbe"
+
+#, fuzzy
+msgid "Edit Status"
+msgstr "Marekani"
+
+msgid "Use different status for following accounts"
+msgstr ""
+
+#. Save & Use
+#, fuzzy
+msgid "Save & Use"
+msgstr "Hifadhi Kama"
+
+msgid "Certificates"
+msgstr "Hati"
+
+msgid "Sounds"
+msgstr ""
+
+#, fuzzy
+msgid "Statuses"
+msgstr "Hali"
+
+msgid "Error loading the plugin."
+msgstr ""
+
+msgid "Couldn't find X display"
+msgstr ""
+
+msgid "Couldn't find window"
+msgstr ""
+
+msgid "This plugin cannot be loaded because it was not built with X11 support."
+msgstr ""
+
+msgid "GntClipboard"
+msgstr ""
+
+msgid "Clipboard plugin"
+msgstr ""
+
+msgid ""
+"When the gnt clipboard contents change, the contents are made available to "
+"X, if possible."
+msgstr ""
+
+#, c-format
+msgid "%s just signed on"
+msgstr ""
+
+#, c-format
+msgid "%s just signed off"
+msgstr ""
+
+#, c-format
+msgid "%s sent you a message"
+msgstr ""
+
+#, c-format
+msgid "%s said your nick in %s"
+msgstr ""
+
+#, c-format
+msgid "%s sent a message in %s"
+msgstr ""
+
+msgid "Buddy signs on/off"
+msgstr ""
+
+msgid "You receive an IM"
+msgstr ""
+
+msgid "Someone speaks in a chat"
+msgstr ""
+
+msgid "Someone says your name in a chat"
+msgstr ""
+
+msgid "Notify with a toaster when"
+msgstr ""
+
+msgid "Beep too!"
+msgstr ""
+
+msgid "Set URGENT for the terminal window."
+msgstr ""
+
+msgid "GntGf"
+msgstr ""
+
+msgid "Toaster plugin"
+msgstr ""
+
+#, c-format
+msgid "<b>Conversation with %s on %s:</b><br>"
+msgstr ""
+
+msgid "History Plugin Requires Logging"
+msgstr ""
+
+msgid ""
+"Logging can be enabled from Tools -> Preferences -> Logging.\n"
+"\n"
+"Enabling logs for instant messages and/or chats will activate history for "
+"the same conversation type(s)."
+msgstr ""
+
+#, fuzzy
+msgid "GntHistory"
+msgstr "Historia"
+
+msgid "Shows recently logged conversations in new conversations."
+msgstr ""
+
+msgid ""
+"When a new conversation is opened this plugin will insert the last "
+"conversation into the current conversation."
+msgstr ""
+
+#, fuzzy
+msgid "Online"
+msgstr "Nenda mkondoni"
+
+msgid "Offline"
+msgstr ""
+
+msgid "Online Buddies"
+msgstr ""
+
+#, fuzzy
+msgid "Offline Buddies"
+msgstr "Namna ya Nje ya mkondo"
+
+msgid "Online/Offline"
+msgstr ""
+
+msgid "Meebo"
+msgstr ""
+
+msgid "No Grouping"
+msgstr "Hakuna Mpangilio"
+
+msgid "Nested Subgroup"
+msgstr ""
+
+msgid "Nested Grouping (experimental)"
+msgstr ""
+
+msgid "Provides alternate buddylist grouping options."
+msgstr ""
+
+msgid "Lastlog"
+msgstr ""
+
+#. Translator Note: The "backlog" is the conversation buffer/history.
+msgid "lastlog: Searches for a substring in the backlog."
+msgstr ""
+
+msgid "GntLastlog"
+msgstr ""
+
+msgid "Lastlog plugin."
+msgstr ""
+
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+msgid "TinyURL"
+msgstr ""
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
+msgid "accounts"
+msgstr ""
+
+msgid "Password is required to sign on."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Enter password for %s (%s)"
+msgstr "Ingiza nywila kwa ajili ya %1$S kwenye %2$S"
+
+#, fuzzy
+msgid "Enter Password"
+msgstr "Ingiza nywila mpya:"
+
+#, fuzzy
+msgid "Save password"
+msgstr "Nywila Zilizohifadhiwa"
+
+#, c-format
+msgid "Missing protocol plugin for %s"
+msgstr ""
+
+#, fuzzy
+msgid "Connection Error"
+msgstr "Hitilafu ya Sanidi"
+
+msgid "New passwords do not match."
+msgstr ""
+
+msgid "Fill out all fields completely."
+msgstr ""
+
+msgid "Original password"
+msgstr ""
+
+#, fuzzy
+msgid "New password"
+msgstr "Nyilwa mpya:"
+
+#, fuzzy
+msgid "New password (again)"
+msgstr "Nywila mpya (tena):"
+
+#, c-format
+msgid "Change password for %s"
+msgstr ""
+
+msgid "Please enter your current password and your new password."
+msgstr ""
+
+#, c-format
+msgid "Change user information for %s"
+msgstr ""
+
+msgid "Set User Info"
+msgstr ""
+
+msgid "Unknown"
+msgstr "Isiyojulikana"
+
+msgid "Buddies"
+msgstr ""
+
+msgid "buddy list"
+msgstr ""
+
+msgid "(DOES NOT MATCH)"
+msgstr ""
+
+#. Make messages
+#, c-format
+msgid "%s has presented the following certificate for just-this-once use:"
+msgstr ""
+
+#, c-format
+msgid ""
+"Common name: %s %s\n"
+"Fingerprint (SHA1): %s"
+msgstr ""
+
+#. TODO: Find what the handle ought to be
+msgid "Single-use Certificate Verification"
+msgstr ""
+
+#. Scheme name
+#. Pool name
+#, fuzzy
+msgid "Certificate Authorities"
+msgstr "Hatifisha Sera"
+
+#. Scheme name
+#. Pool name
+msgid "SSL Peers Cache"
+msgstr ""
+
+#. Make messages
+#, fuzzy, c-format
+msgid "Accept certificate for %s?"
+msgstr "Rekebisha cheli au ithibati ya uaminifu"
+
+#. TODO: Find what the handle ought to be
+#, fuzzy
+msgid "SSL Certificate Verification"
+msgstr "Kagua Uhalisia wa Hati"
+
+#, fuzzy
+msgid "_View Certificate..."
+msgstr "Angalia Hati"
+
+#. Prompt the user to authenticate the certificate
+#. vrq will be completed by user_auth
+#, c-format
+msgid ""
+"The certificate presented by \"%s\" is self-signed. It cannot be "
+"automatically checked."
+msgstr ""
+
+#, c-format
+msgid "The certificate chain presented for %s is not valid."
+msgstr ""
+
+#. TODO: Make this error either block the ensuing SSL
+#. connection error until the user dismisses this one, or
+#. stifle it.
+#. TODO: Probably wrong.
+#. TODO: Probably wrong
+#, fuzzy
+msgid "SSL Certificate Error"
+msgstr "Mamlaka ya Ithibati SSL"
+
+#, fuzzy
+msgid "Invalid certificate chain"
+msgstr "Hati Thibati"
+
+#. vrq will be completed by user_auth
+msgid ""
+"You have no database of root certificates, so this certificate cannot be "
+"validated."
+msgstr ""
+
+#. vrq will be completed by user_auth
+msgid ""
+"The root certificate this one claims to be issued by is unknown to Pidgin."
+msgstr ""
+
+#, c-format
+msgid ""
+"The certificate chain presented by %s does not have a valid digital "
+"signature from the Certificate Authority from which it claims to have a "
+"signature."
+msgstr ""
+
+msgid "Invalid certificate authority signature"
+msgstr ""
+
+#. Prompt the user to authenticate the certificate
+#. TODO: Provide the user with more guidance about why he is
+#. being prompted
+#. vrq will be completed by user_auth
+#, c-format
+msgid ""
+"The certificate presented by \"%s\" claims to be from \"%s\" instead. This "
+"could mean that you are not connecting to the service you believe you are."
+msgstr ""
+
+#. Make messages
+#, c-format
+msgid ""
+"Common name: %s\n"
+"\n"
+"Fingerprint (SHA1): %s\n"
+"\n"
+"Activation date: %s\n"
+"Expiration date: %s\n"
+msgstr ""
+
+#. TODO: Find what the handle ought to be
+#, fuzzy
+msgid "Certificate Information"
+msgstr "Kagua Uhalisia wa Hati"
+
+#, fuzzy
+msgid "Registration Error"
+msgstr "Hitilafu ya Sanidi"
+
+#, fuzzy
+msgid "Unregistration Error"
+msgstr "Hitilafu ya Sanidi"
+
+#, c-format
+msgid "+++ %s signed on"
+msgstr ""
+
+#, c-format
+msgid "+++ %s signed off"
+msgstr ""
+
+#. Unknown error
+#. Unknown error!
+msgid "Unknown error"
+msgstr "Hitilafu isiyojulikana"
+
+msgid "Unable to send message: The message is too large."
+msgstr ""
+
+#, c-format
+msgid "Unable to send message to %s."
+msgstr ""
+
+msgid "The message is too large."
+msgstr ""
+
+#, fuzzy
+msgid "Unable to send message."
+msgstr "Haiwezi kuongeza moduli"
+
+msgid "Send Message"
+msgstr ""
+
+msgid "_Send Message"
+msgstr ""
+
+#, c-format
+msgid "%s entered the room."
+msgstr ""
+
+#, c-format
+msgid "%s [<I>%s</I>] entered the room."
+msgstr ""
+
+#, c-format
+msgid "You are now known as %s"
+msgstr ""
+
+#, c-format
+msgid "%s is now known as %s"
+msgstr ""
+
+#, c-format
+msgid "%s left the room."
+msgstr ""
+
+#, c-format
+msgid "%s left the room (%s)."
+msgstr ""
+
+msgid "Invite to chat"
+msgstr ""
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+
+#, c-format
+msgid "Failed to get connection: %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to get name: %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to get serv name: %s"
+msgstr ""
+
+msgid "Purple's D-BUS server is not running for the reason listed below"
+msgstr ""
+
+#, fuzzy
+msgid "No name"
+msgstr "Jina la DNS"
+
+msgid "Unable to create new resolver process\n"
+msgstr ""
+
+msgid "Unable to send request to resolver process\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"Error resolving %s:\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid "Error resolving %s: %d"
+msgstr ""
+
+#, c-format
+msgid ""
+"Error reading from resolver process:\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid "Resolver process exited without answering our request"
+msgstr ""
+
+#, c-format
+msgid "Thread creation failure: %s"
+msgstr ""
+
+#, fuzzy
+msgid "Unknown reason"
+msgstr "Hitilafu isiyojulikana"
+
+#, c-format
+msgid ""
+"Error reading %s: \n"
+"%s.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"Error writing %s: \n"
+"%s.\n"
+msgstr ""
+
+#, fuzzy, c-format
+msgid ""
+"Error accessing %s: \n"
+"%s.\n"
+msgstr "Hitilafu katika kufikia %S"
+
+#, fuzzy
+msgid "Directory is not writable."
+msgstr "Faili %S haliandikiki."
+
+msgid "Cannot send a file of 0 bytes."
+msgstr ""
+
+msgid "Cannot send a directory."
+msgstr ""
+
+#, c-format
+msgid "%s is not a regular file. Cowardly refusing to overwrite it.\n"
+msgstr ""
+
+#, c-format
+msgid "%s wants to send you %s (%s)"
+msgstr ""
+
+#, c-format
+msgid "%s wants to send you a file"
+msgstr ""
+
+#, c-format
+msgid "Accept file transfer request from %s?"
+msgstr ""
+
+#, c-format
+msgid ""
+"A file is available for download from:\n"
+"Remote host: %s\n"
+"Remote port: %d"
+msgstr ""
+
+#, c-format
+msgid "%s is offering to send file %s"
+msgstr ""
+
+#, c-format
+msgid "%s is not a valid filename.\n"
+msgstr ""
+
+#, c-format
+msgid "Offering to send %s to %s"
+msgstr ""
+
+#, c-format
+msgid "Starting transfer of %s from %s"
+msgstr ""
+
+#, c-format
+msgid "Transfer of file %s complete"
+msgstr ""
+
+msgid "File transfer complete"
+msgstr ""
+
+#, c-format
+msgid "You canceled the transfer of %s"
+msgstr ""
+
+msgid "File transfer cancelled"
+msgstr ""
+
+#, c-format
+msgid "%s canceled the transfer of %s"
+msgstr ""
+
+#, c-format
+msgid "%s canceled the file transfer"
+msgstr ""
+
+#, c-format
+msgid "File transfer to %s failed."
+msgstr ""
+
+#, c-format
+msgid "File transfer from %s failed."
+msgstr ""
+
+msgid "Run the command in a terminal"
+msgstr ""
+
+msgid "The command used to handle \"aim\" URLs, if enabled."
+msgstr ""
+
+msgid "The command used to handle \"gg\" URLs, if enabled."
+msgstr ""
+
+msgid "The command used to handle \"icq\" URLs, if enabled."
+msgstr ""
+
+msgid "The command used to handle \"irc\" URLs, if enabled."
+msgstr ""
+
+msgid "The command used to handle \"msnim\" URLs, if enabled."
+msgstr ""
+
+msgid "The command used to handle \"sip\" URLs, if enabled."
+msgstr ""
+
+msgid "The command used to handle \"xmpp\" URLs, if enabled."
+msgstr ""
+
+msgid "The command used to handle \"ymsgr\" URLs, if enabled."
+msgstr ""
+
+msgid "The handler for \"aim\" URLs"
+msgstr ""
+
+msgid "The handler for \"gg\" URLs"
+msgstr ""
+
+msgid "The handler for \"icq\" URLs"
+msgstr ""
+
+msgid "The handler for \"irc\" URLs"
+msgstr ""
+
+msgid "The handler for \"msnim\" URLs"
+msgstr ""
+
+msgid "The handler for \"sip\" URLs"
+msgstr ""
+
+msgid "The handler for \"xmpp\" URLs"
+msgstr ""
+
+msgid "The handler for \"ymsgr\" URLs"
+msgstr ""
+
+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 \"gg\" "
+"URLs."
+msgstr ""
+
+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 \"irc\" "
+"URLs."
+msgstr ""
+
+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 \"sip\" "
+"URLs."
+msgstr ""
+
+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 \"ymsgr\" "
+"URLs."
+msgstr ""
+
+msgid ""
+"True if the command used to handle this type of URL should be run in a "
+"terminal."
+msgstr ""
+
+msgid "Whether the specified command should handle \"aim\" URLs"
+msgstr ""
+
+msgid "Whether the specified command should handle \"gg\" URLs"
+msgstr ""
+
+msgid "Whether the specified command should handle \"icq\" URLs"
+msgstr ""
+
+msgid "Whether the specified command should handle \"irc\" URLs"
+msgstr ""
+
+msgid "Whether the specified command should handle \"msnim\" URLs"
+msgstr ""
+
+msgid "Whether the specified command should handle \"sip\" URLs"
+msgstr ""
+
+msgid "Whether the specified command should handle \"xmpp\" URLs"
+msgstr ""
+
+msgid "Whether the specified command should handle \"ymsgr\" URLs"
+msgstr ""
+
+msgid "<b><font color=\"red\">The logger has no read function</font></b>"
+msgstr ""
+
+msgid "HTML"
+msgstr ""
+
+msgid "Plain text"
+msgstr ""
+
+msgid "Old flat format"
+msgstr ""
+
+msgid "Logging of this conversation failed."
+msgstr ""
+
+msgid "XML"
+msgstr "XML"
+
+#, c-format
+msgid ""
+"<font color=\"#16569E\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-"
+"REPLY&gt;:</b></font> %s<br/>\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"<font color=\"#A82F2F\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-"
+"REPLY&gt;:</b></font> %s<br/>\n"
+msgstr ""
+
+msgid "<font color=\"red\"><b>Unable to find log path!</b></font>"
+msgstr ""
+
+#, c-format
+msgid "<font color=\"red\"><b>Could not read file: %s</b></font>"
+msgstr ""
+
+#, c-format
+msgid "(%s) %s <AUTO-REPLY>: %s\n"
+msgstr ""
+
+#, c-format
+msgid "You are using %s, but this plugin requires %s."
+msgstr ""
+
+msgid "This plugin has not defined an ID."
+msgstr ""
+
+#, c-format
+msgid "Plugin magic mismatch %d (need %d)"
+msgstr ""
+
+#, c-format
+msgid "ABI version mismatch %d.%d.x (need %d.%d.x)"
+msgstr ""
+
+msgid ""
+"Plugin does not implement all required functions (list_icon, login and close)"
+msgstr ""
+
+#, c-format
+msgid ""
+"The required plugin %s was not found. Please install this plugin and try "
+"again."
+msgstr ""
+
+msgid "Unable to load the plugin"
+msgstr ""
+
+#, c-format
+msgid "The required plugin %s was unable to load."
+msgstr ""
+
+msgid "Unable to load your plugin."
+msgstr ""
+
+#, c-format
+msgid "%s requires %s, but it failed to unload."
+msgstr ""
+
+msgid "Autoaccept"
+msgstr ""
+
+msgid "Auto-accept file transfer requests from selected users."
+msgstr ""
+
+#, c-format
+msgid "Autoaccepted file transfer of \"%s\" from \"%s\" completed."
+msgstr ""
+
+msgid "Autoaccept complete"
+msgstr ""
+
+#, c-format
+msgid "When a file-transfer request arrives from %s"
+msgstr ""
+
+msgid "Set Autoaccept Setting"
+msgstr ""
+
+#, fuzzy
+msgid "_Save"
+msgstr "Hifadhi"
+
+#, fuzzy
+msgid "_Cancel"
+msgstr "Ghairi"
+
+msgid "Ask"
+msgstr ""
+
+msgid "Auto Accept"
+msgstr ""
+
+#, fuzzy
+msgid "Auto Reject"
+msgstr "Gungu&a Kiotomati"
+
+msgid "Autoaccept File Transfers..."
+msgstr ""
+
+#. XXX: Is there a better way than this? There really should be.
+msgid ""
+"Path to save the files in\n"
+"(Please provide the full path)"
+msgstr ""
+
+msgid "Automatically reject from users not in buddy list"
+msgstr ""
+
+msgid ""
+"Notify with a popup when an autoaccepted file transfer is complete\n"
+"(only when there's no conversation with the sender)"
+msgstr ""
+
+msgid "Create a new directory for each user"
+msgstr ""
+
+#, fuzzy
+msgid "Notes"
+msgstr "Hakuna vitu"
+
+msgid "Enter your notes below..."
+msgstr ""
+
+msgid "Edit Notes..."
+msgstr ""
+
+#. *< major version
+#. *< minor version
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Buddy Notes"
+msgstr ""
+
+#. *< name
+#. *< version
+msgid "Store notes on particular buddies."
+msgstr ""
+
+#. *< summary
+msgid "Adds the option to store notes for buddies on your buddy list."
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Cipher Test"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Tests the ciphers that ship with libpurple."
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "DBus Example"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "DBus Plugin Example"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#, fuzzy
+msgid "File Control"
+msgstr "Fi&cha Visisimamizi"
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Allows control by entering commands in a file."
+msgstr ""
+
+msgid "Minutes"
+msgstr ""
+
+#. This is a cultural reference. Dy'er Mak'er is a song by Led Zeppelin.
+#. If that doesn't translate well into your language, drop the 's before translating.
+msgid "I'dle Mak'er"
+msgstr ""
+
+msgid "Set Account Idle Time"
+msgstr ""
+
+msgid "_Set"
+msgstr ""
+
+msgid "None of your accounts are idle."
+msgstr ""
+
+msgid "Unset Account Idle Time"
+msgstr ""
+
+msgid "_Unset"
+msgstr ""
+
+msgid "Set Idle Time for All Accounts"
+msgstr ""
+
+msgid "Unset Idle Time for All Idled Accounts"
+msgstr ""
+
+msgid "Allows you to hand-configure how long you've been idle"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "IPC Test Client"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Test plugin IPC support, as a client."
+msgstr ""
+
+#. * description
+msgid ""
+"Test plugin IPC support, as a client. This locates the server plugin and "
+"calls the commands registered."
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "IPC Test Server"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Test plugin IPC support, as a server."
+msgstr ""
+
+#. * description
+msgid "Test plugin IPC support, as a server. This registers the IPC commands."
+msgstr ""
+
+msgid "Join/Part Hiding Configuration"
+msgstr ""
+
+#, fuzzy
+msgid "Minimum Room Size"
+msgstr "Upe&ochini wa fonti size:"
+
+msgid "User Inactivity Timeout (in minutes)"
+msgstr ""
+
+msgid "Apply hiding rules to buddies"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Join/Part Hiding"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Hides extraneous join/part messages."
+msgstr ""
+
+#. * description
+msgid ""
+"This plugin hides join/part messages in large rooms, except for those users "
+"actively taking part in a conversation."
+msgstr ""
+
+#. This is used in the place of a timezone abbreviation if the
+#. * offset is way off. The user should never really see it, but
+#. * it's here just in case. The parens are to make it clear it's
+#. * not a real timezone.
+msgid "(UTC)"
+msgstr ""
+
+msgid "User is offline."
+msgstr ""
+
+msgid "Auto-response sent:"
+msgstr ""
+
+#, c-format
+msgid "%s has signed off."
+msgstr ""
+
+msgid "One or more messages may have been undeliverable."
+msgstr ""
+
+msgid "You were disconnected from the server."
+msgstr ""
+
+msgid ""
+"You are currently disconnected. Messages will not be received unless you are "
+"logged in."
+msgstr ""
+
+msgid "Message could not be sent because the maximum length was exceeded."
+msgstr ""
+
+#, fuzzy
+msgid "Message could not be sent."
+msgstr "Ujumbe haujaenda."
+
+#. The names of IM clients are marked for translation at the request of
+#. translators who wanted to transliterate them. Many translators
+#. choose to leave them alone. Choose what's best for your language.
+msgid "Adium"
+msgstr ""
+
+#. 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.
+#, fuzzy
+msgid "Fire"
+msgstr "Faili:"
+
+#. The names of IM clients are marked for translation at the request of
+#. translators who wanted to transliterate them. Many translators
+#. choose to leave them alone. Choose what's best for your language.
+msgid "Messenger Plus!"
+msgstr ""
+
+#. The names of IM clients are marked for translation at the request of
+#. translators who wanted to transliterate them. Many translators
+#. choose to leave them alone. Choose what's best for your language.
+msgid "QIP"
+msgstr ""
+
+#. The names of IM clients are marked for translation at the request of
+#. translators who wanted to transliterate them. Many translators
+#. choose to leave them alone. Choose what's best for your language.
+msgid "MSN Messenger"
+msgstr ""
+
+#. 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.
+#, fuzzy
+msgid "Trillian"
+msgstr "Kifriul"
+
+#. The names of IM clients are marked for translation at the request of
+#. translators who wanted to transliterate them. Many translators
+#. choose to leave them alone. Choose what's best for your language.
+msgid "aMSN"
+msgstr ""
+
+#. Add general preferences.
+msgid "General Log Reading Configuration"
+msgstr ""
+
+msgid "Fast size calculations"
+msgstr ""
+
+msgid "Use name heuristics"
+msgstr ""
+
+#. Add Log Directory preferences.
+msgid "Log Directory"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#, fuzzy
+msgid "Log Reader"
+msgstr "Kichwa cha kushoto"
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Includes other IM clients' logs in the log viewer."
+msgstr ""
+
+#. * description
+msgid ""
+"When viewing logs, this plugin will include logs from other IM clients. "
+"Currently, this includes Adium, MSN Messenger, and Trillian.\n"
+"\n"
+"WARNING: This plugin is still alpha code and may crash frequently. Use it "
+"at your own risk!"
+msgstr ""
+
+msgid "Mono Plugin Loader"
+msgstr ""
+
+msgid "Loads .NET plugins with Mono."
+msgstr ""
+
+msgid "Add new line in IMs"
+msgstr ""
+
+msgid "Add new line in Chats"
+msgstr ""
+
+#. *< magic
+#. *< major version
+#. *< minor version
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#, fuzzy
+msgid "New Line"
+msgstr "Dirisha jipya"
+
+#. *< name
+#. *< version
+msgid "Prepends a newline to displayed message."
+msgstr ""
+
+#. *< summary
+msgid ""
+"Prepends a newline to messages so that the rest of the message appears below "
+"the username in the conversation window."
+msgstr ""
+
+msgid "Offline Message Emulation"
+msgstr ""
+
+msgid "Save messages sent to an offline user as pounce."
+msgstr ""
+
+msgid ""
+"The rest of the messages will be saved as pounce. You can edit/delete the "
+"pounce from the `Buddy Pounce' dialog."
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\" is currently offline. Do you want to save the rest of the messages in "
+"a pounce and automatically send them when \"%s\" logs back in?"
+msgstr ""
+
+#, fuzzy
+msgid "Offline Message"
+msgstr "Hifadhi ya nje ya Mkondo"
+
+msgid "You can edit/delete the pounce from the `Buddy Pounces' dialog"
+msgstr ""
+
+msgid "Yes"
+msgstr "Ndiyo"
+
+msgid "No"
+msgstr "Hapana"
+
+msgid "Save offline messages in pounce"
+msgstr ""
+
+msgid "Do not ask. Always save in pounce."
+msgstr ""
+
+#, fuzzy
+msgid "One Time Password"
+msgstr "Ingiza Nywila Kuu"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Perl Plugin Loader"
+msgstr ""
+
+#. *< name
+#. *< version
+#. *< summary
+msgid "Provides support for loading perl plugins."
+msgstr ""
+
+msgid "Psychic Mode"
+msgstr ""
+
+msgid "Psychic mode for incoming conversation"
+msgstr ""
+
+msgid ""
+"Causes conversation windows to appear as other users begin to message you. "
+"This works for AIM, ICQ, XMPP, Sametime, and Yahoo!"
+msgstr ""
+
+msgid "You feel a disturbance in the force..."
+msgstr ""
+
+msgid "Only enable for users on the buddy list"
+msgstr ""
+
+msgid "Disable when away"
+msgstr ""
+
+msgid "Display notification message in conversations"
+msgstr ""
+
+msgid "Raise psychic conversations"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Signals Test"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Test to see that all signals are working properly."
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Simple Plugin"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Tests to see that most things are working."
+msgstr ""
+
+#. Scheme name
+#, fuzzy
+msgid "X.509 Certificates"
+msgstr "X.509 Ithibati (PEM)"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "GNUTLS"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Provides SSL support through GNUTLS."
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#, fuzzy
+msgid "NSS"
+msgstr "RSS"
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Provides SSL support through Mozilla NSS."
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "SSL"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Provides a wrapper around SSL support libraries."
+msgstr ""
+
+#, c-format
+msgid "%s is no longer away."
+msgstr ""
+
+#, c-format
+msgid "%s has gone away."
+msgstr ""
+
+#, c-format
+msgid "%s has become idle."
+msgstr ""
+
+#, c-format
+msgid "%s is no longer idle."
+msgstr ""
+
+#, c-format
+msgid "%s has signed on."
+msgstr ""
+
+msgid "Notify When"
+msgstr ""
+
+msgid "Buddy Goes _Away"
+msgstr ""
+
+msgid "Buddy Goes _Idle"
+msgstr ""
+
+msgid "Buddy _Signs On/Off"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Buddy State Notification"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid ""
+"Notifies in a conversation window when a buddy goes or returns from away or "
+"idle."
+msgstr ""
+
+msgid "Tcl Plugin Loader"
+msgstr ""
+
+msgid "Provides support for loading Tcl plugins"
+msgstr ""
+
+msgid ""
+"Unable to detect ActiveTCL installation. If you wish to use TCL plugins, "
+"install ActiveTCL from http://www.activestate.com\n"
+msgstr ""
+
+msgid ""
+"The Apple Bonjour For Windows toolkit wasn't found, see the FAQ at: http://d."
+"pidgin.im/BonjourWindows for more information."
+msgstr ""
+
+msgid "Unable to listen for incoming IM connections\n"
+msgstr ""
+
+msgid ""
+"Unable to establish connection with the local mDNS server. Is it running?"
+msgstr ""
+
+#, fuzzy
+msgid "First name"
+msgstr "Ukurasa wa kwanza"
+
+#, fuzzy
+msgid "Last name"
+msgstr "Ukurasa wa mwisho"
+
+msgid "Email"
+msgstr "Barua pepe"
+
+msgid "AIM Account"
+msgstr ""
+
+msgid "XMPP Account"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Bonjour Protocol Plugin"
+msgstr ""
+
+msgid "Purple Person"
+msgstr ""
+
+#. Creating the options for the protocol
+msgid "Local Port"
+msgstr ""
+
+msgid "Bonjour"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%s has closed the conversation."
+msgstr "Mwenzi SSL imefunga uunganisho huu"
+
+msgid "Unable to send the message, the conversation couldn't be started."
+msgstr ""
+
+#, fuzzy
+msgid "Cannot open socket"
+msgstr "Haiwezi kufungua %S"
+
+msgid "Could not bind socket to port"
+msgstr ""
+
+msgid "Could not listen on socket"
+msgstr ""
+
+msgid "Error communicating with local mDNSResponder."
+msgstr ""
+
+msgid "Invalid proxy settings"
+msgstr ""
+
+msgid ""
+"Either the host name or port number specified for your given proxy type is "
+"invalid."
+msgstr ""
+
+#, fuzzy
+msgid "Token Error"
+msgstr "Hitilafu ya Faili"
+
+msgid "Unable to fetch the token.\n"
+msgstr ""
+
+msgid "Save Buddylist..."
+msgstr ""
+
+msgid "Your buddylist is empty, nothing was written to the file."
+msgstr ""
+
+msgid "Buddylist saved successfully!"
+msgstr ""
+
+#, c-format
+msgid "Couldn't write buddy list for %s to %s"
+msgstr ""
+
+msgid "Couldn't load buddylist"
+msgstr ""
+
+msgid "Load Buddylist..."
+msgstr ""
+
+msgid "Buddylist loaded successfully!"
+msgstr ""
+
+msgid "Save buddylist..."
+msgstr ""
+
+msgid "Load buddylist from file..."
+msgstr ""
+
+msgid "Fill in the registration fields."
+msgstr ""
+
+msgid "Passwords do not match."
+msgstr ""
+
+msgid "Unable to register new account. Error occurred.\n"
+msgstr ""
+
+msgid "New Gadu-Gadu Account Registered"
+msgstr ""
+
+#, fuzzy
+msgid "Registration completed successfully!"
+msgstr "Sakinisho limemaliza kikamilifu"
+
+msgid "Password"
+msgstr "Nywila"
+
+msgid "Password (retype)"
+msgstr ""
+
+msgid "Enter current token"
+msgstr ""
+
+msgid "Current token"
+msgstr ""
+
+msgid "Register New Gadu-Gadu Account"
+msgstr ""
+
+msgid "Please, fill in the following fields"
+msgstr ""
+
+msgid "City"
+msgstr ""
+
+msgid "Year of birth"
+msgstr ""
+
+#, fuzzy
+msgid "Gender"
+msgstr "Katikati"
+
+msgid "Male or female"
+msgstr ""
+
+#, fuzzy
+msgid "Male"
+msgstr "Mali"
+
+msgid "Female"
+msgstr ""
+
+#, fuzzy
+msgid "Only online"
+msgstr "Baki Mkondoni"
+
+#, fuzzy
+msgid "Find buddies"
+msgstr "Ta&futa Masasisho"
+
+msgid "Please, enter your search criteria below"
+msgstr ""
+
+msgid "Fill in the fields."
+msgstr ""
+
+msgid "Your current password is different from the one that you specified."
+msgstr ""
+
+msgid "Unable to change password. Error occurred.\n"
+msgstr ""
+
+msgid "Change password for the Gadu-Gadu account"
+msgstr ""
+
+msgid "Password was changed successfully!"
+msgstr ""
+
+#, fuzzy
+msgid "Current password"
+msgstr "Nywila ya sasa hivi:"
+
+msgid "Please, enter your current password and your new password for UIN: "
+msgstr ""
+
+#, fuzzy
+msgid "Change Gadu-Gadu Password"
+msgstr "Badilisha Nywila Kuu"
+
+#, c-format
+msgid "Select a chat for buddy: %s"
+msgstr ""
+
+msgid "Add to chat..."
+msgstr ""
+
+#. Global
+#, fuzzy
+msgid "Available"
+msgstr "Haipatikani"
+
+#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
+#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
+#. Away stuff
+msgid "Away"
+msgstr ""
+
+#, fuzzy
+msgid "UIN"
+msgstr "UID"
+
+#, fuzzy
+msgid "First Name"
+msgstr "Ukurasa wa kwanza"
+
+msgid "Birth Year"
+msgstr ""
+
+msgid "Unable to display the search results."
+msgstr ""
+
+msgid "Gadu-Gadu Public Directory"
+msgstr ""
+
+msgid "Search results"
+msgstr "Tafuta matokeo"
+
+#, fuzzy
+msgid "No matching users found"
+msgstr "Hamna uwiyano sawa na CRL uliopatikana."
+
+msgid "There are no users matching your search criteria."
+msgstr ""
+
+#, fuzzy
+msgid "Unable to read socket"
+msgstr "Haiwezi kuongeza moduli"
+
+msgid "Buddy list downloaded"
+msgstr ""
+
+msgid "Your buddy list was downloaded from the server."
+msgstr ""
+
+msgid "Buddy list uploaded"
+msgstr ""
+
+msgid "Your buddy list was stored on the server."
+msgstr ""
+
+#, fuzzy
+msgid "Connection failed."
+msgstr "Unganisho Limeshindikana"
+
+msgid "Add to chat"
+msgstr ""
+
+msgid "Chat _name:"
+msgstr ""
+
+#, fuzzy
+msgid "Chat error"
+msgstr "Kichamorro"
+
+msgid "This chat name is already in use"
+msgstr ""
+
+msgid "Not connected to the server."
+msgstr ""
+
+msgid "Find buddies..."
+msgstr ""
+
+#, fuzzy
+msgid "Change password..."
+msgstr "Badil &Nywila"
+
+msgid "Upload buddylist to Server"
+msgstr ""
+
+msgid "Download buddylist from Server"
+msgstr ""
+
+msgid "Delete buddylist from Server"
+msgstr ""
+
+msgid "Save buddylist to file..."
+msgstr ""
+
+#. magic
+#. major_version
+#. minor_version
+#. plugin type
+#. ui_requirement
+#. flags
+#. dependencies
+#. priority
+#. id
+#. name
+#. version
+msgid "Gadu-Gadu Protocol Plugin"
+msgstr ""
+
+#. summary
+msgid "Polish popular IM"
+msgstr ""
+
+msgid "Gadu-Gadu User"
+msgstr ""
+
+#, c-format
+msgid "Unknown command: %s"
+msgstr ""
+
+#, c-format
+msgid "current topic is: %s"
+msgstr ""
+
+#, fuzzy
+msgid "No topic is set"
+msgstr "Hakuna sifa zilizowekwa."
+
+msgid "File Transfer Failed"
+msgstr ""
+
+msgid "Could not open a listening port."
+msgstr ""
+
+msgid "Error displaying MOTD"
+msgstr ""
+
+#, fuzzy
+msgid "No MOTD available"
+msgstr "Haipatikani"
+
+msgid "There is no MOTD associated with this connection."
+msgstr ""
+
+#, c-format
+msgid "MOTD for %s"
+msgstr ""
+
+msgid "Server has disconnected"
+msgstr ""
+
+msgid "View MOTD"
+msgstr ""
+
+msgid "_Channel:"
+msgstr ""
+
+#, fuzzy
+msgid "_Password:"
+msgstr "Nywila:"
+
+msgid "IRC nicks may not contain whitespace"
+msgstr ""
+
+#. 1. connect to server
+#. connect to the server
+#, fuzzy
+msgid "Connecting"
+msgstr "Inaunganisha…"
+
+msgid "SSL support unavailable"
+msgstr ""
+
+msgid "Couldn't create socket"
+msgstr ""
+
+msgid "Couldn't connect to host"
+msgstr ""
+
+msgid "Read error"
+msgstr ""
+
+msgid "Users"
+msgstr ""
+
+msgid "Topic"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+msgid "IRC Protocol Plugin"
+msgstr ""
+
+#. * summary
+msgid "The IRC Protocol Plugin that Sucks Less"
+msgstr ""
+
+#. host to connect to
+msgid "Server"
+msgstr "Seva"
+
+#. port to connect to
+#, fuzzy
+msgid "Port"
+msgstr "Lango:"
+
+#, fuzzy
+msgid "Encodings"
+msgstr "Kisimba:"
+
+msgid "Auto-detect incoming UTF-8"
+msgstr ""
+
+#, fuzzy
+msgid "Real name"
+msgstr "class name"
+
+#.
+#. option = purple_account_option_string_new(_("Quit message"), "quitmsg", IRC_DEFAULT_QUIT);
+#. prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
+#.
+#, fuzzy
+msgid "Use SSL"
+msgstr "Tumia %S"
+
+msgid "Bad mode"
+msgstr ""
+
+#, c-format
+msgid "Ban on %s by %s, set %s ago"
+msgstr ""
+
+#, c-format
+msgid "Ban on %s"
+msgstr ""
+
+msgid "End of ban list"
+msgstr ""
+
+#, c-format
+msgid "You are banned from %s."
+msgstr ""
+
+msgid "Banned"
+msgstr ""
+
+#, c-format
+msgid "Cannot ban %s: banlist is full"
+msgstr ""
+
+msgid " <i>(ircop)</i>"
+msgstr ""
+
+msgid " <i>(identified)</i>"
+msgstr ""
+
+#, fuzzy
+msgid "Nick"
+msgstr "Bofya"
+
+msgid "Currently on"
+msgstr ""
+
+msgid "Idle for"
+msgstr ""
+
+msgid "Online since"
+msgstr ""
+
+msgid "<b>Defining adjective:</b>"
+msgstr ""
+
+msgid "Glorious"
+msgstr ""
+
+#, c-format
+msgid "%s has changed the topic to: %s"
+msgstr ""
+
+#, c-format
+msgid "%s has cleared the topic."
+msgstr ""
+
+#, c-format
+msgid "The topic for %s is: %s"
+msgstr ""
+
+#, c-format
+msgid "Unknown message '%s'"
+msgstr ""
+
+#, fuzzy
+msgid "Unknown message"
+msgstr "Ukubwa usiojulikana"
+
+msgid "The IRC server received a message it did not understand."
+msgstr ""
+
+#, c-format
+msgid "Users on %s: %s"
+msgstr ""
+
+msgid "Time Response"
+msgstr ""
+
+msgid "The IRC server's local time is:"
+msgstr ""
+
+msgid "No such channel"
+msgstr ""
+
+#. does this happen?
+msgid "no such channel"
+msgstr ""
+
+msgid "User is not logged in"
+msgstr ""
+
+msgid "No such nick or channel"
+msgstr ""
+
+#, fuzzy
+msgid "Could not send"
+msgstr "\"Haikuweza kupakia: \""
+
+#, c-format
+msgid "Joining %s requires an invitation."
+msgstr ""
+
+msgid "Invitation only"
+msgstr ""
+
+#, c-format
+msgid "You have been kicked by %s: (%s)"
+msgstr ""
+
+#. Remove user from channel
+#, c-format
+msgid "Kicked by %s (%s)"
+msgstr ""
+
+#, c-format
+msgid "mode (%s %s) by %s"
+msgstr ""
+
+#, fuzzy
+msgid "Invalid nickname"
+msgstr "Jina la profaili ni batili"
+
+msgid ""
+"Your selected nickname was rejected by the server. It probably contains "
+"invalid characters."
+msgstr ""
+
+msgid ""
+"Your selected account name was rejected by the server. It probably contains "
+"invalid characters."
+msgstr ""
+
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr ""
+
+msgid "Nickname in use"
+msgstr ""
+
+msgid "Cannot change nick"
+msgstr ""
+
+msgid "Could not change nick"
+msgstr ""
+
+#, c-format
+msgid "You have parted the channel%s%s"
+msgstr ""
+
+msgid "Error: invalid PONG from server"
+msgstr ""
+
+#, c-format
+msgid "PING reply -- Lag: %lu seconds"
+msgstr ""
+
+#, c-format
+msgid "Cannot join %s: Registration is required."
+msgstr ""
+
+msgid "Cannot join channel"
+msgstr ""
+
+msgid "Nick or channel is temporarily unavailable."
+msgstr ""
+
+#, c-format
+msgid "Wallops from %s"
+msgstr ""
+
+msgid "action &lt;action to perform&gt;: Perform an action."
+msgstr ""
+
+msgid ""
+"away [message]: Set an away message, or use no message to return from being "
+"away."
+msgstr ""
+
+msgid "ctcp <nick> <msg>: sends ctcp msg to nick."
+msgstr ""
+
+msgid "chanserv: Send a command to chanserv"
+msgstr ""
+
+msgid ""
+"deop &lt;nick1&gt; [nick2] ...: Remove channel operator status from "
+"someone. You must be a channel operator to do this."
+msgstr ""
+
+msgid ""
+"devoice &lt;nick1&gt; [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 ""
+
+msgid ""
+"invite &lt;nick&gt; [room]: Invite someone to join you in the specified "
+"channel, or the current channel."
+msgstr ""
+
+msgid ""
+"j &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]: Enter one or more "
+"channels, optionally providing a channel key for each if needed."
+msgstr ""
+
+msgid ""
+"join &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]: Enter one or more "
+"channels, optionally providing a channel key for each if needed."
+msgstr ""
+
+msgid ""
+"kick &lt;nick&gt; [message]: Remove someone from a channel. You must be a "
+"channel operator to do this."
+msgstr ""
+
+msgid ""
+"list: Display a list of chat rooms on the network. <i>Warning, some servers "
+"may disconnect you upon doing this.</i>"
+msgstr ""
+
+msgid "me &lt;action to perform&gt;: Perform an action."
+msgstr ""
+
+msgid "memoserv: Send a command to memoserv"
+msgstr ""
+
+msgid ""
+"mode &lt;+|-&gt;&lt;A-Za-z&gt; &lt;nick|channel&gt;: Set or unset a channel "
+"or user mode."
+msgstr ""
+
+msgid ""
+"msg &lt;nick&gt; &lt;message&gt;: Send a private message to a user (as "
+"opposed to a channel)."
+msgstr ""
+
+msgid "names [channel]: List the users currently in a channel."
+msgstr ""
+
+msgid "nick &lt;new nickname&gt;: Change your nickname."
+msgstr ""
+
+msgid "nickserv: Send a command to nickserv"
+msgstr ""
+
+msgid "notice &lt;target&lt;: Send a notice to a user or channel."
+msgstr ""
+
+msgid ""
+"op &lt;nick1&gt; [nick2] ...: Grant channel operator status to someone. You "
+"must be a channel operator to do this."
+msgstr ""
+
+msgid ""
+"operwall &lt;message&gt;: If you don't know what this is, you probably "
+"can't use it."
+msgstr ""
+
+msgid "operserv: Send a command to operserv"
+msgstr ""
+
+msgid ""
+"part [room] [message]: Leave the current channel, or a specified channel, "
+"with an optional message."
+msgstr ""
+
+msgid ""
+"ping [nick]: Asks how much lag a user (or the server if no user specified) "
+"has."
+msgstr ""
+
+msgid ""
+"query &lt;nick&gt; &lt;message&gt;: Send a private message to a user (as "
+"opposed to a channel)."
+msgstr ""
+
+msgid "quit [message]: Disconnect from the server, with an optional message."
+msgstr ""
+
+msgid "quote [...]: Send a raw command to the server."
+msgstr ""
+
+msgid ""
+"remove &lt;nick&gt; [message]: Remove someone from a room. You must be a "
+"channel operator to do this."
+msgstr ""
+
+msgid "time: Displays the current local time at the IRC server."
+msgstr ""
+
+msgid "topic [new topic]: View or change the channel topic."
+msgstr ""
+
+msgid "umode &lt;+|-&gt;&lt;A-Za-z&gt;: Set or unset a user mode."
+msgstr ""
+
+msgid "version [nick]: send CTCP VERSION request to a user"
+msgstr ""
+
+msgid ""
+"voice &lt;nick1&gt; [nick2] ...: Grant channel voice status to someone. You "
+"must be a channel operator to do this."
+msgstr ""
+
+msgid ""
+"wallops &lt;message&gt;: If you don't know what this is, you probably can't "
+"use it."
+msgstr ""
+
+msgid "whois [server] &lt;nick&gt;: Get information on a user."
+msgstr ""
+
+msgid "whowas &lt;nick&gt;: Get information on a user that has logged off."
+msgstr ""
+
+#, c-format
+msgid "Reply time from %s: %lu seconds"
+msgstr ""
+
+msgid "PONG"
+msgstr ""
+
+msgid "CTCP PING reply"
+msgstr ""
+
+msgid "Disconnected."
+msgstr ""
+
+msgid "Unknown Error"
+msgstr "Hitilafu isiyojulikana"
+
+msgid "Ad-Hoc Command Failed"
+msgstr ""
+
+msgid "execute"
+msgstr ""
+
+msgid "Server requires TLS/SSL for login. No TLS/SSL support found."
+msgstr ""
+
+msgid "You require encryption, but no TLS/SSL support found."
+msgstr ""
+
+msgid "Server requires plaintext authentication over an unencrypted stream"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s requires plaintext authentication over an unencrypted connection. Allow "
+"this and continue authentication?"
+msgstr ""
+
+#, fuzzy
+msgid "Plaintext Authentication"
+msgstr "Ishara ya Uthibitisho Inayoulindwa"
+
+#, fuzzy
+msgid "Invalid response from server."
+msgstr "Mwitiko wa bila kutegemea kutoka kwa seva"
+
+msgid "Server does not use any supported authentication method"
+msgstr ""
+
+msgid "You require encryption, but it is not available on this server."
+msgstr ""
+
+msgid "Invalid challenge from server"
+msgstr ""
+
+#, fuzzy
+msgid "SASL error"
+msgstr "SSL Seva"
+
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+msgid "No session ID given"
+msgstr ""
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Kivunge kisichokubaliwa"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr "Firefox haiwezi kuzindua unganisho katika seva ya %S."
+
+#, fuzzy, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr "Firefox haiwezi kuzindua unganisho katika seva ya %S."
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "Haikuweza kuunganishwa"
+
+#, fuzzy
+msgid "Unable to create socket"
+msgstr "Haikuweza kuunganishwa"
+
+#, fuzzy
+msgid "Write error"
+msgstr "Hitilafu ya Printa"
+
+#, fuzzy
+msgid "Full Name"
+msgstr "Jina la faili:"
+
+msgid "Family Name"
+msgstr ""
+
+msgid "Given Name"
+msgstr ""
+
+msgid "URL"
+msgstr "URL"
+
+msgid "Street Address"
+msgstr ""
+
+msgid "Extended Address"
+msgstr ""
+
+#, fuzzy
+msgid "Locality"
+msgstr "Mahali"
+
+#, fuzzy
+msgid "Region"
+msgstr "Reunion"
+
+msgid "Postal Code"
+msgstr ""
+
+#, fuzzy
+msgid "Country"
+msgstr "Hesabu"
+
+#. lots of clients (including purple) do this, but it's
+#. * out of spec
+msgid "Telephone"
+msgstr ""
+
+#, fuzzy
+msgid "Organization Name"
+msgstr "Jumuiya(J)"
+
+#, fuzzy
+msgid "Organization Unit"
+msgstr "Jumuiya(J)"
+
+msgid "Role"
+msgstr ""
+
+msgid "Birthday"
+msgstr ""
+
+msgid "Description"
+msgstr "Maelezo"
+
+msgid "Edit XMPP vCard"
+msgstr ""
+
+msgid ""
+"All items below are optional. Enter only the information with which you feel "
+"comfortable."
+msgstr ""
+
+msgid "Client"
+msgstr "Mteja"
+
+msgid "Operating System"
+msgstr ""
+
+#, fuzzy
+msgid "Local Time"
+msgstr "faili la kikweti"
+
+msgid "Last Activity"
+msgstr ""
+
+msgid "Service Discovery Info"
+msgstr ""
+
+msgid "Service Discovery Items"
+msgstr ""
+
+msgid "Extended Stanza Addressing"
+msgstr ""
+
+msgid "Multi-User Chat"
+msgstr ""
+
+msgid "Multi-User Chat Extended Presence Information"
+msgstr ""
+
+msgid "In-Band Bytestreams"
+msgstr ""
+
+msgid "Ad-Hoc Commands"
+msgstr ""
+
+msgid "PubSub Service"
+msgstr ""
+
+msgid "SOCKS5 Bytestreams"
+msgstr ""
+
+msgid "Out of Band Data"
+msgstr ""
+
+msgid "XHTML-IM"
+msgstr ""
+
+msgid "In-Band Registration"
+msgstr ""
+
+#, fuzzy
+msgid "User Location"
+msgstr "Mapali pa &Tawanyiko:"
+
+msgid "User Avatar"
+msgstr ""
+
+msgid "Chat State Notifications"
+msgstr ""
+
+msgid "Software Version"
+msgstr ""
+
+msgid "Stream Initiation"
+msgstr ""
+
+msgid "File Transfer"
+msgstr ""
+
+msgid "User Mood"
+msgstr ""
+
+msgid "User Activity"
+msgstr ""
+
+msgid "Entity Capabilities"
+msgstr ""
+
+msgid "Encrypted Session Negotiations"
+msgstr ""
+
+#, fuzzy
+msgid "User Tune"
+msgstr "Jina la Mtumiaji:"
+
+msgid "Roster Item Exchange"
+msgstr ""
+
+msgid "Reachability Address"
+msgstr ""
+
+#, fuzzy
+msgid "User Profile"
+msgstr "Notisi za Mtumiaji"
+
+msgid "Jingle"
+msgstr ""
+
+msgid "Jingle Audio"
+msgstr ""
+
+#, fuzzy
+msgid "User Nickname"
+msgstr "Jina la mtumiaji"
+
+msgid "Jingle ICE UDP"
+msgstr ""
+
+msgid "Jingle ICE TCP"
+msgstr ""
+
+msgid "Jingle Raw UDP"
+msgstr ""
+
+msgid "Jingle Video"
+msgstr ""
+
+msgid "Jingle DTMF"
+msgstr ""
+
+msgid "Message Receipts"
+msgstr ""
+
+msgid "Public Key Publishing"
+msgstr ""
+
+msgid "User Chatting"
+msgstr ""
+
+#, fuzzy
+msgid "User Browsing"
+msgstr "Kuvinjari kwa kareti"
+
+#, fuzzy
+msgid "User Gaming"
+msgstr "Jina la Mtumiaji:"
+
+msgid "User Viewing"
+msgstr ""
+
+#, fuzzy
+msgid "Ping"
+msgstr "Chapisha"
+
+msgid "Stanza Encryption"
+msgstr ""
+
+msgid "Entity Time"
+msgstr ""
+
+msgid "Delayed Delivery"
+msgstr ""
+
+msgid "Collaborative Data Objects"
+msgstr ""
+
+msgid "File Repository and Sharing"
+msgstr ""
+
+msgid "STUN Service Discovery for Jingle"
+msgstr ""
+
+msgid "Simplified Encrypted Session Negotiation"
+msgstr ""
+
+#, fuzzy
+msgid "Hop Check"
+msgstr "Usikague"
+
+msgid "Capabilities"
+msgstr ""
+
+msgid "Priority"
+msgstr ""
+
+#, fuzzy
+msgid "Resource"
+msgstr "#1 rasilimali"
+
+#, c-format
+msgid "%s ago"
+msgstr ""
+
+#, fuzzy
+msgid "Logged off"
+msgstr "Ingia"
+
+#, fuzzy
+msgid "Middle Name"
+msgstr "Jina la Moduli:"
+
+msgid "Address"
+msgstr "Anuani"
+
+msgid "P.O. Box"
+msgstr ""
+
+msgid "Photo"
+msgstr ""
+
+#, fuzzy
+msgid "Logo"
+msgstr "Togo"
+
+msgid "Un-hide From"
+msgstr ""
+
+msgid "Temporarily Hide From"
+msgstr ""
+
+#. && NOT ME
+msgid "Cancel Presence Notification"
+msgstr ""
+
+msgid "(Re-)Request authorization"
+msgstr ""
+
+#. if(NOT ME)
+#. shouldn't this just happen automatically when the buddy is
+#. removed?
+#, fuzzy
+msgid "Unsubscribe"
+msgstr "Jiunge"
+
+#, fuzzy
+msgid "Log In"
+msgstr "I&ngia"
+
+#, fuzzy
+msgid "Log Out"
+msgstr "O&ndoka"
+
+msgid "Chatty"
+msgstr ""
+
+msgid "Extended Away"
+msgstr ""
+
+msgid "Do Not Disturb"
+msgstr ""
+
+#, fuzzy
+msgid "JID"
+msgstr "UID"
+
+#, fuzzy
+msgid "Last Name"
+msgstr "Ukurasa wa mwisho"
+
+#, fuzzy
+msgid "The following are the results of your search"
+msgstr "Kuki zifuatazo zinalingana na unazotafuta:"
+
+#. current comment from Jabber User Directory users.jabber.org
+msgid ""
+"Find a contact by entering the search criteria in the given fields. Note: "
+"Each field supports wild card searches (%)"
+msgstr ""
+
+msgid "Directory Query Failed"
+msgstr ""
+
+msgid "Could not query the directory server."
+msgstr ""
+
+#. Try to translate the message (see static message
+#. list in jabber_user_dir_comments[])
+#, c-format
+msgid "Server Instructions: %s"
+msgstr ""
+
+msgid "Fill in one or more fields to search for any matching XMPP users."
+msgstr ""
+
+msgid "Email Address"
+msgstr "Anwani ya Barua pepe"
+
+msgid "Search for XMPP users"
+msgstr ""
+
+#. "Search"
+msgid "Search"
+msgstr "Tafuta"
+
+msgid "Invalid Directory"
+msgstr ""
+
+msgid "Enter a User Directory"
+msgstr ""
+
+msgid "Select a user directory to search"
+msgstr ""
+
+#, fuzzy
+msgid "Search Directory"
+msgstr "Tafuta historia"
+
+msgid "_Room:"
+msgstr ""
+
+#, fuzzy
+msgid "_Server:"
+msgstr "Seva"
+
+msgid "_Handle:"
+msgstr ""
+
+#, c-format
+msgid "%s is not a valid room name"
+msgstr ""
+
+#, fuzzy
+msgid "Invalid Room Name"
+msgstr "Jina batili la moduli."
+
+#, c-format
+msgid "%s is not a valid server name"
+msgstr ""
+
+#, fuzzy
+msgid "Invalid Server Name"
+msgstr "Jina batili la moduli."
+
+#, c-format
+msgid "%s is not a valid room handle"
+msgstr ""
+
+msgid "Invalid Room Handle"
+msgstr ""
+
+#, fuzzy
+msgid "Configuration error"
+msgstr "Hitilafu ya Sanidi"
+
+#, fuzzy
+msgid "Unable to configure"
+msgstr "Haikuweza kuunganishwa"
+
+#, fuzzy
+msgid "Room Configuration Error"
+msgstr "Hitilafu ya Sanidi"
+
+msgid "This room is not capable of being configured"
+msgstr ""
+
+#, fuzzy
+msgid "Registration error"
+msgstr "Hitilafu ya Sanidi"
+
+msgid "Nick changing not supported in non-MUC chatrooms"
+msgstr ""
+
+msgid "Error retrieving room list"
+msgstr ""
+
+#, fuzzy
+msgid "Invalid Server"
+msgstr "Anuani batili"
+
+msgid "Enter a Conference Server"
+msgstr ""
+
+msgid "Select a conference server to query"
+msgstr ""
+
+msgid "Find Rooms"
+msgstr ""
+
+#, fuzzy
+msgid "Affiliations:"
+msgstr "Machaguo"
+
+#, fuzzy
+msgid "No users found"
+msgstr "Hamna uwiyano sawa na CRL uliopatikana."
+
+msgid "Roles:"
+msgstr ""
+
+msgid "Ping timeout"
+msgstr ""
+
+#, fuzzy
+msgid "Read Error"
+msgstr "Hitilafu ya Faili"
+
+#, c-format
+msgid ""
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
+msgstr ""
+
+#, fuzzy
+msgid "Invalid XMPP ID"
+msgstr "Kizuizi batili"
+
+msgid "Invalid XMPP ID. Domain must be set."
+msgstr ""
+
+msgid "Malformed BOSH Connect Server"
+msgstr ""
+
+#, c-format
+msgid "Registration of %s@%s successful"
+msgstr ""
+
+#, c-format
+msgid "Registration to %s successful"
+msgstr ""
+
+msgid "Registration Successful"
+msgstr ""
+
+#, fuzzy
+msgid "Registration Failed"
+msgstr "Usajili wa Chrome Umeshindikana"
+
+#, c-format
+msgid "Registration from %s successfully removed"
+msgstr ""
+
+msgid "Unregistration Successful"
+msgstr ""
+
+#, fuzzy
+msgid "Unregistration Failed"
+msgstr "Usajili wa Chrome Umeshindikana"
+
+#, fuzzy
+msgid "Already Registered"
+msgstr "Ipo"
+
+msgid "State"
+msgstr "Hali"
+
+msgid "Postal code"
+msgstr ""
+
+#, fuzzy
+msgid "Phone"
+msgstr "Bila"
+
+#, fuzzy
+msgid "Date"
+msgstr "Tarehe:"
+
+msgid "Unregister"
+msgstr ""
+
+msgid ""
+"Please fill out the information below to change your account registration."
+msgstr ""
+
+msgid "Please fill out the information below to register your new account."
+msgstr ""
+
+msgid "Register New XMPP Account"
+msgstr ""
+
+#, fuzzy
+msgid "Register"
+msgstr "Mwandishi wa habari"
+
+#, c-format
+msgid "Change Account Registration at %s"
+msgstr ""
+
+#, c-format
+msgid "Register New Account at %s"
+msgstr ""
+
+#, fuzzy
+msgid "Change Registration"
+msgstr "Usajili wa Chrome Umeshindikana"
+
+#, fuzzy
+msgid "Error unregistering account"
+msgstr "Hitilafu katika kusajili DLL"
+
+msgid "Account successfully unregistered"
+msgstr ""
+
+msgid "Initializing Stream"
+msgstr ""
+
+msgid "Initializing SSL/TLS"
+msgstr ""
+
+msgid "Authenticating"
+msgstr ""
+
+msgid "Re-initializing Stream"
+msgstr ""
+
+msgid "Server doesn't support blocking"
+msgstr ""
+
+msgid "Not Authorized"
+msgstr ""
+
+msgid "Mood"
+msgstr ""
+
+msgid "Now Listening"
+msgstr ""
+
+msgid "Both"
+msgstr ""
+
+msgid "From (To pending)"
+msgstr ""
+
+#, fuzzy
+msgid "From"
+msgstr "kutoka"
+
+#, fuzzy
+msgid "To"
+msgstr "Kwa:"
+
+msgid "None (To pending)"
+msgstr ""
+
+msgid "None"
+msgstr "Bila"
+
+#, fuzzy
+msgid "Subscription"
+msgstr "Maelezo"
+
+msgid "Mood Text"
+msgstr ""
+
+msgid "Allow Buzz"
+msgstr ""
+
+msgid "Tune Artist"
+msgstr ""
+
+#, fuzzy
+msgid "Tune Title"
+msgstr "Mada Fupi"
+
+msgid "Tune Album"
+msgstr ""
+
+msgid "Tune Genre"
+msgstr ""
+
+msgid "Tune Comment"
+msgstr ""
+
+msgid "Tune Track"
+msgstr ""
+
+msgid "Tune Time"
+msgstr ""
+
+msgid "Tune Year"
+msgstr ""
+
+msgid "Tune URL"
+msgstr ""
+
+#, fuzzy
+msgid "Password Changed"
+msgstr "Badilisho la Nywila limeshindikana"
+
+#, fuzzy
+msgid "Your password has been changed."
+msgstr "Nywila yako imesetiwa upya."
+
+msgid "Error changing password"
+msgstr ""
+
+#, fuzzy
+msgid "Password (again)"
+msgstr "Nywila mpya (tena):"
+
+#, fuzzy
+msgid "Change XMPP Password"
+msgstr "Badil &Nywila"
+
+msgid "Please enter your new password"
+msgstr ""
+
+msgid "Set User Info..."
+msgstr ""
+
+#. if (js->protocol_options & CHANGE_PASSWORD) {
+#, fuzzy
+msgid "Change Password..."
+msgstr "Badil &Nywila"
+
+#. }
+msgid "Search for Users..."
+msgstr ""
+
+msgid "Bad Request"
+msgstr ""
+
+#, fuzzy
+msgid "Conflict"
+msgstr "Thibitisha"
+
+msgid "Feature Not Implemented"
+msgstr ""
+
+msgid "Forbidden"
+msgstr ""
+
+#, fuzzy
+msgid "Gone"
+msgstr "Bila"
+
+#, fuzzy
+msgid "Internal Server Error"
+msgstr "Hitilafu ya ndani ya seva (500)"
+
+#, fuzzy
+msgid "Item Not Found"
+msgstr "Faili halipatikani"
+
+msgid "Malformed XMPP ID"
+msgstr ""
+
+#, fuzzy
+msgid "Not Acceptable"
+msgstr "Haipatikani"
+
+msgid "Not Allowed"
+msgstr ""
+
+#, fuzzy
+msgid "Payment Required"
+msgstr "Nywila inatakiwa"
+
+msgid "Recipient Unavailable"
+msgstr ""
+
+#, fuzzy
+msgid "Registration Required"
+msgstr "Uthibitisho unatakiwa"
+
+#, fuzzy
+msgid "Remote Server Not Found"
+msgstr "Wakala kompyuta tumishi hapatikani"
+
+msgid "Remote Server Timeout"
+msgstr ""
+
+msgid "Server Overloaded"
+msgstr ""
+
+msgid "Service Unavailable"
+msgstr ""
+
+#, fuzzy
+msgid "Subscription Required"
+msgstr "Uthibitisho unatakiwa"
+
+msgid "Unexpected Request"
+msgstr ""
+
+#, fuzzy
+msgid "Authorization Aborted"
+msgstr "Sainisho limetibuliwa"
+
+msgid "Incorrect encoding in authorization"
+msgstr ""
+
+#, fuzzy
+msgid "Invalid authzid"
+msgstr "Njia batili"
+
+msgid "Invalid Authorization Mechanism"
+msgstr ""
+
+msgid "Authorization mechanism too weak"
+msgstr ""
+
+msgid "Temporary Authentication Failure"
+msgstr ""
+
+#, fuzzy
+msgid "Authentication Failure"
+msgstr "Uthibitisho unatakiwa"
+
+#, fuzzy
+msgid "Bad Format"
+msgstr "Fomati"
+
+msgid "Bad Namespace Prefix"
+msgstr ""
+
+msgid "Resource Conflict"
+msgstr ""
+
+#, fuzzy
+msgid "Connection Timeout"
+msgstr "Muunganiko umepita muda"
+
+msgid "Host Gone"
+msgstr ""
+
+msgid "Host Unknown"
+msgstr ""
+
+msgid "Improper Addressing"
+msgstr ""
+
+#, fuzzy
+msgid "Invalid ID"
+msgstr "Kizuizi batili"
+
+msgid "Invalid Namespace"
+msgstr ""
+
+#, fuzzy
+msgid "Invalid XML"
+msgstr "Kizuizi batili"
+
+msgid "Non-matching Hosts"
+msgstr ""
+
+msgid "Policy Violation"
+msgstr ""
+
+#, fuzzy
+msgid "Remote Connection Failed"
+msgstr "Muunganiko salama umeshindikana"
+
+msgid "Resource Constraint"
+msgstr ""
+
+msgid "Restricted XML"
+msgstr ""
+
+msgid "See Other Host"
+msgstr ""
+
+msgid "System Shutdown"
+msgstr ""
+
+#, fuzzy
+msgid "Undefined Condition"
+msgstr "kitu ambacho hakijafafanuliwa"
+
+#, fuzzy
+msgid "Unsupported Encoding"
+msgstr "Kivunge kisichokubaliwa"
+
+#, fuzzy
+msgid "Unsupported Stanza Type"
+msgstr "Kivunge kisichokubaliwa"
+
+#, fuzzy
+msgid "Unsupported Version"
+msgstr "Kivunge kisichokubaliwa"
+
+msgid "XML Not Well Formed"
+msgstr ""
+
+msgid "Stream Error"
+msgstr ""
+
+#, c-format
+msgid "Unable to ban user %s"
+msgstr ""
+
+#, c-format
+msgid "Unknown affiliation: \"%s\""
+msgstr ""
+
+#, c-format
+msgid "Unable to affiliate user %s as \"%s\""
+msgstr ""
+
+#, c-format
+msgid "Unknown role: \"%s\""
+msgstr ""
+
+#, c-format
+msgid "Unable to set role \"%s\" for user: %s"
+msgstr ""
+
+#, c-format
+msgid "Unable to kick user %s"
+msgstr ""
+
+#, c-format
+msgid "Unable to ping user %s"
+msgstr ""
+
+#, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
+msgstr ""
+
+#, c-format
+msgid "Unable to buzz, because %s might be offline."
+msgstr ""
+
+#, c-format
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
+msgstr ""
+
+#, c-format
+msgid "Buzzing %s..."
+msgstr ""
+
+#. Yahoo only supports one attention command: the 'buzz'.
+#. This is index number YAHOO_BUZZ.
+msgid "Buzz"
+msgstr ""
+
+#, c-format
+msgid "%s has buzzed you!"
+msgstr ""
+
+#, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr ""
+
+#, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr ""
+
+#, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr ""
+
+msgid "Media Initiation Failed"
+msgstr ""
+
+#, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr ""
+
+msgid "Select a Resource"
+msgstr ""
+
+msgid "Initiate Media"
+msgstr ""
+
+msgid "config: Configure a chat room."
+msgstr ""
+
+msgid "configure: Configure a chat room."
+msgstr ""
+
+msgid "part [room]: Leave the room."
+msgstr ""
+
+msgid "register: Register with a chat room."
+msgstr ""
+
+msgid "topic [new topic]: View or change the topic."
+msgstr ""
+
+msgid "ban &lt;user&gt; [reason]: Ban a user from the room."
+msgstr ""
+
+msgid ""
+"affiliate &lt;owner|admin|member|outcast|none&gt; [nick1] [nick2] ...: Get "
+"the users with an affiliation or set users' affiliation with the room."
+msgstr ""
+
+msgid ""
+"role &lt;moderator|participant|visitor|none&gt; [nick1] [nick2] ...: Get the "
+"users with an role or set users' role with the room."
+msgstr ""
+
+msgid "invite &lt;user&gt; [message]: Invite a user to the room."
+msgstr ""
+
+msgid "join: &lt;room&gt; [password]: Join a chat on this server."
+msgstr ""
+
+msgid "kick &lt;user&gt; [reason]: Kick a user from the room."
+msgstr ""
+
+msgid ""
+"msg &lt;user&gt; &lt;message&gt;: Send a private message to another user."
+msgstr ""
+
+msgid "ping &lt;jid&gt;:\tPing a user/component/server."
+msgstr ""
+
+msgid "buzz: Buzz a user to get their attention"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "XMPP Protocol Plugin"
+msgstr ""
+
+#. Translators: 'domain' is used here in the context of Internet domains, e.g. pidgin.im
+#, fuzzy
+msgid "Domain"
+msgstr "Kikoa:"
+
+msgid "Require SSL/TLS"
+msgstr ""
+
+msgid "Force old (port 5223) SSL"
+msgstr ""
+
+msgid "Allow plaintext auth over unencrypted streams"
+msgstr ""
+
+#, fuzzy
+msgid "Connect port"
+msgstr "Unganisho"
+
+#. TODO: default to automatically try different ports. Make the user be
+#. * able to set the first port to try (like LastConnectedPort in Windows client).
+#. Account options
+msgid "Connect server"
+msgstr ""
+
+msgid "File transfer proxies"
+msgstr ""
+
+#. this should probably be part of global smiley theme settings later on,
+#. shared with MSN
+msgid "Show Custom Smileys"
+msgstr ""
+
+#, c-format
+msgid "%s has left the conversation."
+msgstr ""
+
+#, c-format
+msgid "Message from %s"
+msgstr ""
+
+#, c-format
+msgid "%s has set the topic to: %s"
+msgstr ""
+
+#, c-format
+msgid "The topic is: %s"
+msgstr ""
+
+#, c-format
+msgid "Message delivery to %s failed: %s"
+msgstr ""
+
+msgid "XMPP Message Error"
+msgstr ""
+
+#, c-format
+msgid "(Code %s)"
+msgstr ""
+
+msgid "XML Parse error"
+msgstr ""
+
+msgid "Unknown Error in presence"
+msgstr ""
+
+msgid "Create New Room"
+msgstr ""
+
+msgid ""
+"You are creating a new room. Would you like to configure it, or accept the "
+"default settings?"
+msgstr ""
+
+msgid "_Configure Room"
+msgstr ""
+
+#, fuzzy
+msgid "_Accept Defaults"
+msgstr "Misingi ya mfumo"
+
+#, c-format
+msgid "Error joining chat %s"
+msgstr ""
+
+#, c-format
+msgid "Error in chat %s"
+msgstr ""
+
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr ""
+
+msgid "Transfer was closed."
+msgstr ""
+
+msgid "Failed to open the file"
+msgstr ""
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
+#, c-format
+msgid "Unable to send file to %s, user does not support file transfers"
+msgstr ""
+
+msgid "File Send Failed"
+msgstr ""
+
+#, c-format
+msgid "Unable to send file to %s, invalid JID"
+msgstr ""
+
+#, c-format
+msgid "Unable to send file to %s, user is not online"
+msgstr ""
+
+#, c-format
+msgid "Unable to send file to %s, not subscribed to user presence"
+msgstr ""
+
+#, c-format
+msgid "Please select the resource of %s to which you would like to send a file"
+msgstr ""
+
+msgid "Edit User Mood"
+msgstr ""
+
+msgid "Please select your mood from the list."
+msgstr ""
+
+#, fuzzy
+msgid "Set"
+msgstr "Sep"
+
+msgid "Set Mood..."
+msgstr ""
+
+msgid "Set User Nickname"
+msgstr ""
+
+msgid "Please specify a new nickname for you."
+msgstr ""
+
+msgid ""
+"This information is visible to all contacts on your contact list, so choose "
+"something appropriate."
+msgstr ""
+
+msgid "Set Nickname..."
+msgstr ""
+
+#, fuzzy
+msgid "Actions"
+msgstr "Machaguo"
+
+msgid "Select an action"
+msgstr ""
+
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, fuzzy, c-format
+msgid "Unable to add \"%s\"."
+msgstr "Haiwezi kuongeza moduli"
+
+msgid "Buddy Add error"
+msgstr ""
+
+msgid "The username specified does not exist."
+msgstr ""
+
+#, c-format
+msgid "Buddy list synchronization issue in %s (%s)"
+msgstr ""
+
+#, 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 ""
+
+#, c-format
+msgid ""
+"%s is on the local list but not on the server list. Do you want this buddy "
+"to be added?"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Unable to parse message"
+msgstr "Haiwezi kuongeza moduli"
+
+#, c-format
+msgid "Syntax Error (probably a client bug)"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Invalid email address"
+msgstr "Anuani batili"
+
+#, fuzzy, c-format
+msgid "User does not exist"
+msgstr "Faili %S halipo"
+
+#, c-format
+msgid "Fully qualified domain name missing"
+msgstr ""
+
+#, c-format
+msgid "Already logged in"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Invalid username"
+msgstr "Jina batili la moduli."
+
+#, fuzzy, c-format
+msgid "Invalid friendly name"
+msgstr "Jina la profaili ni batili"
+
+#, c-format
+msgid "List full"
+msgstr ""
+
+#, c-format
+msgid "Already there"
+msgstr ""
+
+#, c-format
+msgid "Not on list"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "User is offline"
+msgstr "Fanya &kazi nje ya mkondo"
+
+#, c-format
+msgid "Already in the mode"
+msgstr ""
+
+#, c-format
+msgid "Already in opposite list"
+msgstr ""
+
+#, c-format
+msgid "Too many groups"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Invalid group"
+msgstr "Ingizo batili"
+
+#, c-format
+msgid "User not in group"
+msgstr ""
+
+#, c-format
+msgid "Group name too long"
+msgstr ""
+
+#, c-format
+msgid "Cannot remove group zero"
+msgstr ""
+
+#, c-format
+msgid "Tried to add a user to a group that doesn't exist"
+msgstr ""
+
+#, c-format
+msgid "Switchboard failed"
+msgstr ""
+
+#, c-format
+msgid "Notify transfer failed"
+msgstr ""
+
+#, c-format
+msgid "Required fields missing"
+msgstr ""
+
+#, c-format
+msgid "Too many hits to a FND"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Not logged in"
+msgstr "Hajaingia"
+
+#, c-format
+msgid "Service temporarily unavailable"
+msgstr ""
+
+#, c-format
+msgid "Database server error"
+msgstr ""
+
+#, c-format
+msgid "Command disabled"
+msgstr ""
+
+#, c-format
+msgid "File operation error"
+msgstr ""
+
+#, c-format
+msgid "Memory allocation error"
+msgstr ""
+
+#, c-format
+msgid "Wrong CHL value sent to server"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Server busy"
+msgstr "Seva"
+
+#, c-format
+msgid "Server unavailable"
+msgstr ""
+
+#, c-format
+msgid "Peer notification server down"
+msgstr ""
+
+#, c-format
+msgid "Database connect error"
+msgstr ""
+
+#, c-format
+msgid "Server is going down (abandon ship)"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Error creating connection"
+msgstr "Hitilafu kwenye utengenezaji wa saraka:"
+
+#, c-format
+msgid "CVR parameters are either unknown or not allowed"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Unable to write"
+msgstr "Nimeshindwa Kusasisha"
+
+#, c-format
+msgid "Session overload"
+msgstr ""
+
+#, c-format
+msgid "User is too active"
+msgstr ""
+
+#, c-format
+msgid "Too many sessions"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Passport not verified"
+msgstr "(Mwandishi hajathibitishwa)"
+
+#, c-format
+msgid "Bad friend file"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Not expected"
+msgstr "Hakuna iliyochaguliwa"
+
+#, c-format
+msgid "Friendly name changes too rapidly"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Server too busy"
+msgstr "Seva haipatikani"
+
+#, fuzzy, c-format
+msgid "Authentication failed"
+msgstr "Uthibitisho unatakiwa"
+
+#, c-format
+msgid "Not allowed when offline"
+msgstr ""
+
+#, c-format
+msgid "Not accepting new users"
+msgstr ""
+
+#, c-format
+msgid "Kids Passport without parental consent"
+msgstr ""
+
+#, c-format
+msgid "Passport account not yet verified"
+msgstr ""
+
+msgid "Passport account suspended"
+msgstr ""
+
+#, c-format
+msgid "Bad ticket"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Unknown Error Code %d"
+msgstr "Hitilafu isiyojulikana"
+
+#, c-format
+msgid "MSN Error: %s\n"
+msgstr ""
+
+#, fuzzy
+msgid "Other Contacts"
+msgstr "Lugha nyinginezo"
+
+msgid "Non-IM Contacts"
+msgstr ""
+
+msgid "Nudge"
+msgstr ""
+
+#, c-format
+msgid "%s has nudged you!"
+msgstr ""
+
+#, c-format
+msgid "Nudging %s..."
+msgstr ""
+
+#, fuzzy
+msgid "Email Address..."
+msgstr "Anwani ya Barua pepe"
+
+msgid "Your new MSN friendly name is too long."
+msgstr ""
+
+msgid "Set your friendly name."
+msgstr ""
+
+msgid "This is the name that other MSN buddies will see you as."
+msgstr ""
+
+msgid "Set your home phone number."
+msgstr ""
+
+msgid "Set your work phone number."
+msgstr ""
+
+msgid "Set your mobile phone number."
+msgstr ""
+
+msgid "Allow MSN Mobile pages?"
+msgstr ""
+
+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 ""
+
+msgid "Allow"
+msgstr "Ruhusu"
+
+#, fuzzy
+msgid "Disallow"
+msgstr "Lemaza"
+
+#, c-format
+msgid "Blocked Text for %s"
+msgstr ""
+
+msgid "No text is blocked for this account."
+msgstr ""
+
+#, c-format
+msgid ""
+"MSN servers are currently blocking the following regular expressions:<br/>%s"
+msgstr ""
+
+msgid "This account does not have email enabled."
+msgstr ""
+
+msgid "Send a mobile message."
+msgstr ""
+
+#, fuzzy
+msgid "Page"
+msgstr "Ukurasa wa #"
+
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "Tahadhari:"
+
+msgid "Has you"
+msgstr ""
+
+msgid "Home Phone Number"
+msgstr ""
+
+msgid "Work Phone Number"
+msgstr ""
+
+msgid "Mobile Phone Number"
+msgstr ""
+
+msgid "Be Right Back"
+msgstr ""
+
+msgid "Busy"
+msgstr ""
+
+msgid "On the Phone"
+msgstr ""
+
+msgid "Out to Lunch"
+msgstr ""
+
+#. primitive
+#. ID
+#. name - use default
+#. saveable
+#. should be user_settable some day
+#. independent
+msgid "Artist"
+msgstr ""
+
+msgid "Album"
+msgstr ""
+
+#, fuzzy
+msgid "Game Title"
+msgstr "Mada Fupi"
+
+msgid "Office Title"
+msgstr ""
+
+msgid "Set Friendly Name..."
+msgstr ""
+
+msgid "Set Home Phone Number..."
+msgstr ""
+
+msgid "Set Work Phone Number..."
+msgstr ""
+
+msgid "Set Mobile Phone Number..."
+msgstr ""
+
+msgid "Enable/Disable Mobile Devices..."
+msgstr ""
+
+msgid "Allow/Disallow Mobile Pages..."
+msgstr ""
+
+msgid "View Blocked Text..."
+msgstr ""
+
+msgid "Open Hotmail Inbox"
+msgstr ""
+
+msgid "Send to Mobile"
+msgstr ""
+
+msgid "Initiate _Chat"
+msgstr ""
+
+msgid "SSL support is needed for MSN. Please install a supported SSL library."
+msgstr ""
+
+msgid "Failed to connect to server."
+msgstr ""
+
+msgid "Error retrieving profile"
+msgstr ""
+
+msgid "General"
+msgstr "Ujumla"
+
+msgid "Age"
+msgstr ""
+
+#, fuzzy
+msgid "Occupation"
+msgstr "Mahali"
+
+msgid "Location"
+msgstr "Mahali"
+
+msgid "Hobbies and Interests"
+msgstr ""
+
+msgid "A Little About Me"
+msgstr ""
+
+msgid "Social"
+msgstr ""
+
+msgid "Marital Status"
+msgstr ""
+
+msgid "Interests"
+msgstr ""
+
+#, fuzzy
+msgid "Pets"
+msgstr "Bonyeza"
+
+msgid "Hometown"
+msgstr ""
+
+msgid "Places Lived"
+msgstr ""
+
+msgid "Fashion"
+msgstr ""
+
+msgid "Humor"
+msgstr ""
+
+msgid "Music"
+msgstr ""
+
+msgid "Favorite Quote"
+msgstr ""
+
+msgid "Contact Info"
+msgstr ""
+
+#, fuzzy
+msgid "Personal"
+msgstr "Kipersia"
+
+msgid "Significant Other"
+msgstr ""
+
+msgid "Home Phone"
+msgstr ""
+
+msgid "Home Phone 2"
+msgstr ""
+
+#, fuzzy
+msgid "Home Address"
+msgstr "Anwani-IP"
+
+msgid "Personal Mobile"
+msgstr ""
+
+msgid "Home Fax"
+msgstr ""
+
+msgid "Personal Email"
+msgstr ""
+
+msgid "Personal IM"
+msgstr ""
+
+#, fuzzy
+msgid "Anniversary"
+msgstr "Universal"
+
+#. Business
+msgid "Work"
+msgstr ""
+
+#, fuzzy
+msgid "Job Title"
+msgstr "Cheo cha &kazi:"
+
+msgid "Company"
+msgstr ""
+
+msgid "Department"
+msgstr ""
+
+msgid "Profession"
+msgstr ""
+
+msgid "Work Phone"
+msgstr ""
+
+msgid "Work Phone 2"
+msgstr ""
+
+#, fuzzy
+msgid "Work Address"
+msgstr "Anwani-IP"
+
+msgid "Work Mobile"
+msgstr ""
+
+msgid "Work Pager"
+msgstr ""
+
+msgid "Work Fax"
+msgstr ""
+
+msgid "Work Email"
+msgstr ""
+
+msgid "Work IM"
+msgstr ""
+
+#, fuzzy
+msgid "Start Date"
+msgstr "Anzisha Upya Baadae"
+
+#, fuzzy
+msgid "Favorite Things"
+msgstr "Vibwedo"
+
+#, fuzzy
+msgid "Last Updated"
+msgstr "Sasisho la mara ya mwisho"
+
+#, fuzzy
+msgid "Homepage"
+msgstr "Ukurasa wa &Nyumbani:"
+
+msgid "The user has not created a public profile."
+msgstr ""
+
+msgid ""
+"MSN reported not being able to find the user's profile. This either means "
+"that the user does not exist, or that the user exists but has not created a "
+"public profile."
+msgstr ""
+
+msgid ""
+"Could not find any information in the user's profile. The user most likely "
+"does not exist."
+msgstr ""
+
+msgid "View web profile"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. *< summary
+msgid "Windows Live Messenger Protocol Plugin"
+msgstr ""
+
+msgid "Use HTTP Method"
+msgstr ""
+
+msgid "HTTP Method Server"
+msgstr ""
+
+msgid "Show custom smileys"
+msgstr ""
+
+msgid "nudge: nudge a user to get their attention"
+msgstr ""
+
+msgid "Windows Live ID authentication:Unable to connect"
+msgstr ""
+
+msgid "Windows Live ID authentication:Invalid response"
+msgstr ""
+
+#, c-format
+msgid "%s just sent you a Nudge!"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Unknown error (%d): %s"
+msgstr "Hitilafu isiyojulikana"
+
+#, fuzzy
+msgid "Unable to add user"
+msgstr "Haiwezi kuongeza moduli"
+
+#, fuzzy, c-format
+msgid "Unknown error (%d)"
+msgstr "Hitilafu isiyojulikana"
+
+msgid "The following users are missing from your addressbook"
+msgstr ""
+
+#, c-format
+msgid "Unable to add user on %s (%s)"
+msgstr ""
+
+#, c-format
+msgid "Unable to block user on %s (%s)"
+msgstr ""
+
+#, c-format
+msgid "Unable to permit user on %s (%s)"
+msgstr ""
+
+#, c-format
+msgid "%s could not be added because your buddy list is full."
+msgstr ""
+
+#, c-format
+msgid "%s is not a valid passport account."
+msgstr ""
+
+msgid "Service Temporarily Unavailable."
+msgstr ""
+
+#, fuzzy
+msgid "Unknown error."
+msgstr "Hitilafu isiyojulikana"
+
+msgid "Mobile message was not sent because it was too long."
+msgstr ""
+
+#, c-format
+msgid ""
+"The MSN server will shut down for maintenance in %d minute. You will "
+"automatically be signed out at that time. Please finish any conversations "
+"in progress.\n"
+"\n"
+"After the maintenance has been completed, you will be able to successfully "
+"sign in."
+msgid_plural ""
+"The MSN server will shut down for maintenance in %d minutes. You will "
+"automatically be signed out at that time. Please finish any conversations "
+"in progress.\n"
+"\n"
+"After the maintenance has been completed, you will be able to successfully "
+"sign in."
+msgstr[0] ""
+msgstr[1] ""
+
+msgid ""
+"Message was not sent because the system is unavailable. This normally "
+"happens when the user is blocked or does not exist."
+msgstr ""
+
+msgid "Message was not sent because messages are being sent too quickly."
+msgstr ""
+
+msgid "Message was not sent because an unknown encoding error occurred."
+msgstr ""
+
+msgid "Message was not sent because an unknown error occurred."
+msgstr ""
+
+msgid "Unable to connect"
+msgstr "Haikuweza kuunganishwa"
+
+msgid "Writing error"
+msgstr ""
+
+msgid "Reading error"
+msgstr ""
+
+#, c-format
+msgid ""
+"Connection error from %s server:\n"
+"%s"
+msgstr ""
+
+msgid "Our protocol is not supported by the server."
+msgstr ""
+
+msgid "Error parsing HTTP."
+msgstr ""
+
+msgid "You have signed on from another location."
+msgstr ""
+
+msgid "The MSN servers are temporarily unavailable. Please wait and try again."
+msgstr ""
+
+msgid "The MSN servers are going down temporarily."
+msgstr ""
+
+#, c-format
+msgid "Unable to authenticate: %s"
+msgstr ""
+
+msgid ""
+"Your MSN buddy list is temporarily unavailable. Please wait and try again."
+msgstr ""
+
+msgid "Handshaking"
+msgstr ""
+
+msgid "Transferring"
+msgstr ""
+
+msgid "Starting authentication"
+msgstr ""
+
+#, fuzzy
+msgid "Getting cookie"
+msgstr "Anza"
+
+#, fuzzy
+msgid "Sending cookie"
+msgstr "Tuma Habari…"
+
+msgid "Retrieving buddy list"
+msgstr ""
+
+msgid "Away From Computer"
+msgstr ""
+
+msgid "On The Phone"
+msgstr ""
+
+msgid "Out To Lunch"
+msgstr ""
+
+msgid "Message may have not been sent because a timeout occurred:"
+msgstr ""
+
+msgid "Message could not be sent, not allowed while invisible:"
+msgstr ""
+
+msgid "Message could not be sent because the user is offline:"
+msgstr ""
+
+msgid "Message could not be sent because a connection error occurred:"
+msgstr ""
+
+msgid "Message could not be sent because we are sending too quickly:"
+msgstr ""
+
+msgid ""
+"Message could not be sent because we were unable to establish a session with "
+"the server. This is likely a server problem, try again in a few minutes:"
+msgstr ""
+
+msgid ""
+"Message could not be sent because an error with the switchboard occurred:"
+msgstr ""
+
+msgid "Message may have not been sent because an unknown error occurred:"
+msgstr ""
+
+msgid "Delete Buddy from Address Book?"
+msgstr ""
+
+msgid "Do you want to delete this buddy from your address book as well?"
+msgstr ""
+
+#, fuzzy
+msgid "The username specified is invalid."
+msgstr "Nambari mstari iliyoingizwa ni batili."
+
+msgid "This Hotmail account may not be active."
+msgstr ""
+
+#, fuzzy
+msgid "Profile URL"
+msgstr "Profile Linatumika"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "MSN Protocol Plugin"
+msgstr ""
+
+#, c-format
+msgid "%s is not a valid group."
+msgstr ""
+
+#, c-format
+msgid "%s on %s (%s)"
+msgstr ""
+
+#, fuzzy
+msgid "Unable to rename group"
+msgstr "Haiwezi kufuta moduli"
+
+#, fuzzy
+msgid "Unable to delete group"
+msgstr "Haiwezi kufuta moduli"
+
+#, c-format
+msgid "%s has added you to his or her buddy list."
+msgstr ""
+
+#, c-format
+msgid "%s has removed you from his or her buddy list."
+msgstr ""
+
+#, c-format
+msgid "No such user: %s"
+msgstr ""
+
+msgid "User lookup"
+msgstr ""
+
+msgid "Reading challenge"
+msgstr ""
+
+#, fuzzy
+msgid "Unexpected challenge length from server"
+msgstr "Mwitiko wa bila kutegemea kutoka kwa seva"
+
+#, fuzzy
+msgid "Logging in"
+msgstr "Ingia"
+
+msgid "MySpaceIM - No Username Set"
+msgstr ""
+
+msgid "You appear to have no MySpace username."
+msgstr ""
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr ""
+
+msgid "Lost connection with server"
+msgstr ""
+
+#. Can't write _()'d strings in array initializers. Workaround.
+#. khc: then use N_() in the array initializer and use _() when they are
+#. used
+msgid "New mail messages"
+msgstr ""
+
+msgid "New blog comments"
+msgstr ""
+
+msgid "New profile comments"
+msgstr ""
+
+msgid "New friend requests!"
+msgstr ""
+
+msgid "New picture comments"
+msgstr ""
+
+#, fuzzy
+msgid "MySpace"
+msgstr "Nafasi"
+
+msgid "IM Friends"
+msgstr ""
+
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Add contacts from server"
+msgstr ""
+
+#. The session is now set up, ready to be connected. This emits the
+#. * signedOn signal, so clients can now do anything with msimprpl, and
+#. * we're ready for it (session key, userid, username all setup).
+#, fuzzy
+msgid "Connected"
+msgstr "Unganisho"
+
+#, c-format
+msgid "Protocol error, code %d: %s"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s Your password is %d characters, greater than the expected maximum length "
+"of %d for MySpaceIM. Please shorten your password at http://profileedit."
+"myspace.com/index.cfm?fuseaction=accountSettings.changePassword and try "
+"again."
+msgstr ""
+
+msgid "MySpaceIM Error"
+msgstr ""
+
+msgid "Invalid input condition"
+msgstr ""
+
+msgid "Read buffer full (2)"
+msgstr ""
+
+msgid "Unparseable message"
+msgstr ""
+
+#, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr ""
+
+msgid "Failed to add buddy"
+msgstr ""
+
+msgid "'addbuddy' command failed."
+msgstr ""
+
+msgid "persist command failed"
+msgstr ""
+
+msgid "Failed to remove buddy"
+msgstr ""
+
+msgid "'delbuddy' command failed"
+msgstr ""
+
+msgid "blocklist command failed"
+msgstr ""
+
+#, fuzzy
+msgid "Missing Cipher"
+msgstr "Faili linalokosekana"
+
+msgid "The RC4 cipher could not be found"
+msgstr ""
+
+msgid ""
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
+
+msgid "Add friends from MySpace.com"
+msgstr ""
+
+msgid "Importing friends failed"
+msgstr ""
+
+#. TODO: find out how
+msgid "Find people..."
+msgstr ""
+
+msgid "Change IM name..."
+msgstr ""
+
+msgid "myim URL handler"
+msgstr ""
+
+msgid "No suitable MySpaceIM account could be found to open this myim URL."
+msgstr ""
+
+msgid "Enable the proper MySpaceIM account and try again."
+msgstr ""
+
+msgid "Show display name in status text"
+msgstr ""
+
+msgid "Show headline in status text"
+msgstr ""
+
+msgid "Send emoticons"
+msgstr ""
+
+msgid "Screen resolution (dots per inch)"
+msgstr ""
+
+msgid "Base font size (points)"
+msgstr ""
+
+msgid "User"
+msgstr ""
+
+msgid "Headline"
+msgstr ""
+
+#, fuzzy
+msgid "Song"
+msgstr "Kitonga"
+
+msgid "Total Friends"
+msgstr ""
+
+#, fuzzy
+msgid "Client Version"
+msgstr "Toleo Jipya"
+
+msgid "MySpaceIM - Username Available"
+msgstr ""
+
+msgid "This username is available. Would you like to set it?"
+msgstr ""
+
+msgid "ONCE SET, THIS CANNOT BE CHANGED!"
+msgstr ""
+
+msgid "MySpaceIM - Please Set a Username"
+msgstr ""
+
+msgid "This username is unavailable."
+msgstr ""
+
+msgid "Please try another username:"
+msgstr ""
+
+#. Protocol won't log in now without a username set.. Disconnect
+msgid "No username set"
+msgstr ""
+
+msgid "Please enter a username to check its availability:"
+msgstr ""
+
+#. TODO: icons for each zap
+#. Lots of comments for translators:
+#. Zap means "to strike suddenly and forcefully as if with a
+#. * projectile or weapon." This term often has an electrical
+#. * connotation, for example, "he was zapped by electricity when
+#. * he put a fork in the toaster."
+msgid "Zap"
+msgstr ""
+
+#, c-format
+msgid "%s has zapped you!"
+msgstr ""
+
+#, c-format
+msgid "Zapping %s..."
+msgstr ""
+
+#. Whack means "to hit or strike someone with a sharp blow"
+#, fuzzy
+msgid "Whack"
+msgstr "Nyuma"
+
+#, c-format
+msgid "%s has whacked you!"
+msgstr ""
+
+#, c-format
+msgid "Whacking %s..."
+msgstr ""
+
+#. 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.
+#, fuzzy
+msgid "Torch"
+msgstr "Machi"
+
+#, c-format
+msgid "%s has torched you!"
+msgstr ""
+
+#, c-format
+msgid "Torching %s..."
+msgstr ""
+
+#. Smooch means "to kiss someone, often enthusiastically"
+msgid "Smooch"
+msgstr ""
+
+#, c-format
+msgid "%s has smooched you!"
+msgstr ""
+
+#, c-format
+msgid "Smooching %s..."
+msgstr ""
+
+#. A hug is a display of affection; wrapping your arms around someone
+#, fuzzy
+msgid "Hug"
+msgstr "Ago"
+
+#, c-format
+msgid "%s has hugged you!"
+msgstr ""
+
+#, c-format
+msgid "Hugging %s..."
+msgstr ""
+
+#. Slap means "to hit someone with an open/flat hand"
+msgid "Slap"
+msgstr ""
+
+#, c-format
+msgid "%s has slapped you!"
+msgstr ""
+
+#, c-format
+msgid "Slapping %s..."
+msgstr ""
+
+#. Goose means "to pinch someone on their butt"
+#, fuzzy
+msgid "Goose"
+msgstr "Google"
+
+#, c-format
+msgid "%s has goosed you!"
+msgstr ""
+
+#, c-format
+msgid "Goosing %s..."
+msgstr ""
+
+#. A high-five is when two people's hands slap each other
+#. * in the air above their heads. It is done to celebrate
+#. * something, often a victory, or to congratulate someone.
+msgid "High-five"
+msgstr ""
+
+#, c-format
+msgid "%s has high-fived you!"
+msgstr ""
+
+#, c-format
+msgid "High-fiving %s..."
+msgstr ""
+
+#. We're not entirely sure what the MySpace people mean by
+#. * this... but we think it's the equivalent of "prank." Or, for
+#. * someone to perform a mischievous trick or practical joke.
+msgid "Punk"
+msgstr ""
+
+#, c-format
+msgid "%s has punk'd you!"
+msgstr ""
+
+#, c-format
+msgid "Punking %s..."
+msgstr ""
+
+#. Raspberry is a slang term for the vibrating sound made
+#. * when you stick your tongue out of your mouth with your
+#. * lips closed and blow. It is typically done when
+#. * gloating or bragging. Nowadays it's a pretty silly
+#. * gesture, so it does not carry a harsh negative
+#. * connotation. It is generally used in a playful tone
+#. * with friends.
+msgid "Raspberry"
+msgstr ""
+
+#, c-format
+msgid "%s has raspberried you!"
+msgstr ""
+
+#, c-format
+msgid "Raspberrying %s..."
+msgstr ""
+
+msgid "Required parameters not passed in"
+msgstr ""
+
+msgid "Unable to write to network"
+msgstr ""
+
+msgid "Unable to read from network"
+msgstr ""
+
+msgid "Error communicating with server"
+msgstr ""
+
+#, fuzzy
+msgid "Conference not found"
+msgstr "Mstari haujapatikana"
+
+#, fuzzy
+msgid "Conference does not exist"
+msgstr "Faili lililohitajiwa halipo"
+
+#, fuzzy
+msgid "A folder with that name already exists"
+msgstr "Ufunguo wenye lakabu kama hii tayari upo."
+
+#, fuzzy
+msgid "Not supported"
+msgstr "Haujaanza"
+
+#, fuzzy
+msgid "Password has expired"
+msgstr "Nywila inatakiwa"
+
+#, fuzzy
+msgid "Incorrect password"
+msgstr "Nywila ya sasa hivi:"
+
+#, fuzzy
+msgid "User not found"
+msgstr "Seva haipatikani"
+
+msgid "Account has been disabled"
+msgstr ""
+
+msgid "The server could not access the directory"
+msgstr ""
+
+msgid "Your system administrator has disabled this operation"
+msgstr ""
+
+msgid "The server is unavailable; try again later"
+msgstr ""
+
+msgid "Cannot add a contact to the same folder twice"
+msgstr ""
+
+msgid "Cannot add yourself"
+msgstr ""
+
+msgid "Master archive is misconfigured"
+msgstr ""
+
+msgid "Incorrect username or password"
+msgstr ""
+
+msgid "Could not recognize the host of the username you entered"
+msgstr ""
+
+msgid ""
+"Your account has been disabled because too many incorrect passwords were "
+"entered"
+msgstr ""
+
+msgid "You cannot add the same person twice to a conversation"
+msgstr ""
+
+msgid "You have reached your limit for the number of contacts allowed"
+msgstr ""
+
+msgid "You have entered an incorrect username"
+msgstr ""
+
+msgid "An error occurred while updating the directory"
+msgstr ""
+
+msgid "Incompatible protocol version"
+msgstr ""
+
+msgid "The user has blocked you"
+msgstr ""
+
+msgid ""
+"This evaluation version does not allow more than ten users to log in at one "
+"time"
+msgstr ""
+
+msgid "The user is either offline or you are blocked"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Unknown error: 0x%X"
+msgstr "Hitilafu isiyojulikana"
+
+#, c-format
+msgid "Login failed (%s)."
+msgstr ""
+
+#, c-format
+msgid "Unable to send message. Could not get details for user (%s)."
+msgstr ""
+
+#, c-format
+msgid "Unable to add %s to your buddy list (%s)."
+msgstr ""
+
+#. TODO: Improve this! message to who or for what conference?
+#, c-format
+msgid "Unable to send message (%s)."
+msgstr ""
+
+#, c-format
+msgid "Unable to invite user (%s)."
+msgstr ""
+
+#, c-format
+msgid "Unable to send message to %s. Could not create the conference (%s)."
+msgstr ""
+
+#, c-format
+msgid "Unable to send message. Could not create the conference (%s)."
+msgstr ""
+
+#, c-format
+msgid ""
+"Unable to move user %s to folder %s in the server side list. Error while "
+"creating folder (%s)."
+msgstr ""
+
+#, c-format
+msgid ""
+"Unable to add %s to your buddy list. Error creating folder in server side "
+"list (%s)."
+msgstr ""
+
+#, c-format
+msgid "Could not get details for user %s (%s)."
+msgstr ""
+
+#, c-format
+msgid "Unable to add user to privacy list (%s)."
+msgstr ""
+
+#, c-format
+msgid "Unable to add %s to deny list (%s)."
+msgstr ""
+
+#, c-format
+msgid "Unable to add %s to permit list (%s)."
+msgstr ""
+
+#, c-format
+msgid "Unable to remove %s from privacy list (%s)."
+msgstr ""
+
+#, c-format
+msgid "Unable to change server side privacy settings (%s)."
+msgstr ""
+
+#, c-format
+msgid "Unable to create conference (%s)."
+msgstr ""
+
+msgid "Error communicating with server. Closing connection."
+msgstr ""
+
+msgid "Telephone Number"
+msgstr ""
+
+msgid "Personal Title"
+msgstr ""
+
+msgid "Mailstop"
+msgstr ""
+
+msgid "User ID"
+msgstr ""
+
+#. tag = _("DN");
+#. value = nm_user_record_get_dn(user_record);
+#. if (value) {
+#. purple_notify_user_info_add_pair(user_info, tag, value);
+#. }
+#.
+#, fuzzy
+msgid "Full name"
+msgstr "Jina la faili:"
+
+#, c-format
+msgid "GroupWise Conference %d"
+msgstr ""
+
+msgid "Authenticating..."
+msgstr ""
+
+#, fuzzy
+msgid "Unable to connect to server."
+msgstr "Imeshindwa kuipata seva wakala"
+
+msgid "Waiting for response..."
+msgstr ""
+
+#, c-format
+msgid "%s has been invited to this conversation."
+msgstr ""
+
+msgid "Invitation to Conversation"
+msgstr ""
+
+#, c-format
+msgid ""
+"Invitation from: %s\n"
+"\n"
+"Sent: %s"
+msgstr ""
+
+#, fuzzy
+msgid "Would you like to join the conversation?"
+msgstr "Ungependa kuhifadhi faili hili?"
+
+msgid "You have been logged out because you logged in at another workstation."
+msgstr ""
+
+#, c-format
+msgid ""
+"%s appears to be offline and did not receive the message that you just sent."
+msgstr ""
+
+msgid ""
+"Unable to connect to server. Please enter the address of the server you wish "
+"to connect to."
+msgstr ""
+
+msgid "Error. SSL support is not installed."
+msgstr ""
+
+msgid "This conference has been closed. No more messages can be sent."
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Novell GroupWise Messenger Protocol Plugin"
+msgstr ""
+
+msgid "Server address"
+msgstr ""
+
+msgid "Server port"
+msgstr ""
+
+msgid "Could not join chat room"
+msgstr ""
+
+msgid "Invalid chat room name"
+msgstr ""
+
+#, fuzzy
+msgid "Server closed the connection."
+msgstr "Mwenzi SSL imefunga uunganisho huu"
+
+#, c-format
+msgid ""
+"Lost connection with server:\n"
+"%s"
+msgstr ""
+
+msgid "Received invalid data on connection with server."
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "AIM Protocol Plugin"
+msgstr ""
+
+msgid "ICQ UIN..."
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "ICQ Protocol Plugin"
+msgstr ""
+
+#, fuzzy
+msgid "Encoding"
+msgstr "Kisimba:"
+
+#, fuzzy
+msgid "The remote user has closed the connection."
+msgstr "Mwenzi SSL imefunga uunganisho huu"
+
+msgid "The remote user has declined your request."
+msgstr ""
+
+#, c-format
+msgid "Lost connection with the remote user:<br>%s"
+msgstr ""
+
+msgid "Received invalid data on connection with remote user."
+msgstr ""
+
+msgid "Could not establish a connection with the remote user."
+msgstr ""
+
+msgid "Direct IM established"
+msgstr ""
+
+#, 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 ""
+
+#, c-format
+msgid "File %s is %s, which is larger than the maximum size of %s."
+msgstr ""
+
+#, fuzzy
+msgid "Invalid error"
+msgstr "Kizuizi batili"
+
+#, fuzzy
+msgid "Invalid SNAC"
+msgstr "Kizuizi batili"
+
+msgid "Rate to host"
+msgstr ""
+
+msgid "Rate to client"
+msgstr ""
+
+msgid "Service unavailable"
+msgstr ""
+
+msgid "Service not defined"
+msgstr ""
+
+msgid "Obsolete SNAC"
+msgstr ""
+
+msgid "Not supported by host"
+msgstr ""
+
+msgid "Not supported by client"
+msgstr ""
+
+msgid "Refused by client"
+msgstr ""
+
+msgid "Reply too big"
+msgstr ""
+
+msgid "Responses lost"
+msgstr ""
+
+#, fuzzy
+msgid "Request denied"
+msgstr "Ufikio umekataliwa"
+
+msgid "Busted SNAC payload"
+msgstr ""
+
+msgid "Insufficient rights"
+msgstr ""
+
+msgid "In local permit/deny"
+msgstr ""
+
+msgid "Warning level too high (sender)"
+msgstr ""
+
+msgid "Warning level too high (receiver)"
+msgstr ""
+
+msgid "User temporarily unavailable"
+msgstr ""
+
+#, fuzzy
+msgid "No match"
+msgstr "%S oanisho"
+
+msgid "List overflow"
+msgstr ""
+
+msgid "Request ambiguous"
+msgstr ""
+
+msgid "Queue full"
+msgstr ""
+
+msgid "Not while on AOL"
+msgstr ""
+
+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 ""
+
+#, 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 ""
+
+#. Label
+msgid "Buddy Icon"
+msgstr ""
+
+msgid "Voice"
+msgstr ""
+
+msgid "AIM Direct IM"
+msgstr ""
+
+#, fuzzy
+msgid "Get File"
+msgstr "Mafaili ya Matini"
+
+#, fuzzy
+msgid "Games"
+msgstr "Jina"
+
+#, fuzzy
+msgid "Add-Ins"
+msgstr "Nyongeza"
+
+msgid "Send Buddy List"
+msgstr ""
+
+msgid "ICQ Direct Connect"
+msgstr ""
+
+msgid "AP User"
+msgstr ""
+
+msgid "ICQ RTF"
+msgstr ""
+
+msgid "Nihilist"
+msgstr ""
+
+msgid "ICQ Server Relay"
+msgstr ""
+
+msgid "Old ICQ UTF8"
+msgstr ""
+
+msgid "Trillian Encryption"
+msgstr ""
+
+msgid "ICQ UTF8"
+msgstr ""
+
+msgid "Hiptop"
+msgstr ""
+
+#, fuzzy
+msgid "Security Enabled"
+msgstr "Levo ya Usalama"
+
+#, fuzzy
+msgid "Video Chat"
+msgstr "Podikasti Video"
+
+msgid "iChat AV"
+msgstr ""
+
+#, fuzzy
+msgid "Live Video"
+msgstr "Hifadhi video"
+
+#, fuzzy
+msgid "Camera"
+msgstr "Cameroon"
+
+msgid "Screen Sharing"
+msgstr ""
+
+msgid "Free For Chat"
+msgstr ""
+
+msgid "Not Available"
+msgstr "Haipatikani"
+
+msgid "Occupied"
+msgstr ""
+
+msgid "Web Aware"
+msgstr ""
+
+msgid "Invisible"
+msgstr ""
+
+msgid "IP Address"
+msgstr "Anwani-IP"
+
+#, fuzzy
+msgid "Warning Level"
+msgstr "Jumbe za tahadhari"
+
+msgid "Buddy Comment"
+msgstr ""
+
+#, c-format
+msgid ""
+"Could not connect to authentication server:\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Could not connect to BOS server:\n"
+"%s"
+msgstr ""
+
+#, fuzzy
+msgid "Username sent"
+msgstr "Jina la mtumiaji"
+
+msgid "Connection established, cookie sent"
+msgstr ""
+
+#. TODO: Don't call this with ssi
+msgid "Finalizing connection"
+msgstr ""
+
+#, c-format
+msgid ""
+"Unable to login: Could not sign on as %s because the username is invalid. "
+"Usernames must be a valid email address, or start with a letter and contain "
+"only letters, numbers and spaces, or contain only numbers."
+msgstr ""
+
+#. Unregistered username
+#. uid is not exist
+#, fuzzy
+msgid "Invalid username."
+msgstr "Jina batili la moduli."
+
+#, fuzzy
+msgid "Incorrect password."
+msgstr "Nywila ya sasa hivi:"
+
+#. Suspended account
+msgid "Your account is currently suspended."
+msgstr ""
+
+#. service temporarily unavailable
+msgid "The AOL Instant Messenger service is temporarily unavailable."
+msgstr ""
+
+#. username connecting too frequently
+#. IP address connecting too frequently
+msgid ""
+"You have been connecting and disconnecting too frequently. Wait ten minutes "
+"and try again. If you continue to try, you will need to wait even longer."
+msgstr ""
+
+#, c-format
+msgid "The client version you are using is too old. Please upgrade at %s"
+msgstr ""
+
+#, fuzzy
+msgid "Could Not Connect"
+msgstr "Imeshindwa kuunganisha"
+
+msgid "Received authorization"
+msgstr ""
+
+#, fuzzy
+msgid "The SecurID key entered is invalid."
+msgstr "Nambari mstari iliyoingizwa ni batili."
+
+msgid "Enter SecurID"
+msgstr ""
+
+msgid "Enter the 6 digit number from the digital display."
+msgstr ""
+
+#. *
+#. * A wrapper for purple_request_action() that uses @c OK and @c Cancel buttons.
+#.
+#, fuzzy
+msgid "_OK"
+msgstr "Sawa"
+
+#, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
+msgstr ""
+
+msgid "Unable to get a valid AIM login hash."
+msgstr ""
+
+#, c-format
+msgid "You may be disconnected shortly. Check %s for updates."
+msgstr ""
+
+msgid "Unable to get a valid login hash."
+msgstr ""
+
+#, fuzzy
+msgid "Password sent"
+msgstr "Nywila"
+
+msgid "Unable to initialize connection"
+msgstr ""
+
+msgid "Please authorize me so I can add you to my buddy list."
+msgstr ""
+
+msgid "Authorization Request Message:"
+msgstr ""
+
+msgid "Please authorize me!"
+msgstr ""
+
+msgid "No reason given."
+msgstr ""
+
+msgid "Authorization Denied Message:"
+msgstr ""
+
+#, c-format
+msgid ""
+"The user %u has denied your request to add them to your buddy list for the "
+"following reason:\n"
+"%s"
+msgstr ""
+
+msgid "ICQ authorization denied."
+msgstr ""
+
+#. Someone has granted you authorization
+#, c-format
+msgid "The user %u has granted your request to add them to your buddy list."
+msgstr ""
+
+#, c-format
+msgid ""
+"You have received a special message\n"
+"\n"
+"From: %s [%s]\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"You have received an ICQ page\n"
+"\n"
+"From: %s [%s]\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"You have received an ICQ email from %s [%s]\n"
+"\n"
+"Message is:\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid "ICQ user %u has sent you a buddy: %s (%s)"
+msgstr ""
+
+msgid "Do you want to add this buddy to your buddy list?"
+msgstr ""
+
+#, fuzzy
+msgid "_Add"
+msgstr "Ongeza"
+
+msgid "_Decline"
+msgstr ""
+
+#, c-format
+msgid "You missed %hu message from %s because it was invalid."
+msgid_plural "You missed %hu messages from %s because they were invalid."
+msgstr[0] ""
+msgstr[1] ""
+
+#, 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] ""
+msgstr[1] ""
+
+#, 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] ""
+msgstr[1] ""
+
+#, c-format
+msgid ""
+"You missed %hu message from %s because his/her warning level is too high."
+msgid_plural ""
+"You missed %hu messages from %s because his/her warning level is too high."
+msgstr[0] ""
+msgstr[1] ""
+
+#, c-format
+msgid "You missed %hu message from %s because your warning level is too high."
+msgid_plural ""
+"You missed %hu messages from %s because your warning level is too high."
+msgstr[0] ""
+msgstr[1] ""
+
+#, c-format
+msgid "You missed %hu message from %s for an unknown reason."
+msgid_plural "You missed %hu messages from %s for an unknown reason."
+msgstr[0] ""
+msgstr[1] ""
+
+#. Data is assumed to be the destination bn
+#, c-format
+msgid "Unable to send message: %s"
+msgstr ""
+
+#, fuzzy
+msgid "Unknown reason."
+msgstr "Hitilafu isiyojulikana"
+
+#, c-format
+msgid "Unable to send message to %s:"
+msgstr ""
+
+#, c-format
+msgid "User information not available: %s"
+msgstr ""
+
+msgid "Online Since"
+msgstr ""
+
+msgid "Member Since"
+msgstr ""
+
+msgid "Profile"
+msgstr ""
+
+msgid "Your AIM connection may be lost."
+msgstr ""
+
+#. The conversion failed!
+msgid ""
+"[Unable to display a message from this user because it contained invalid "
+"characters.]"
+msgstr ""
+
+msgid ""
+"The last action you attempted could not be performed because you are over "
+"the rate limit. Please wait 10 seconds and try again."
+msgstr ""
+
+#, c-format
+msgid "You have been disconnected from chat room %s."
+msgstr ""
+
+msgid "Mobile Phone"
+msgstr ""
+
+msgid "Personal Web Page"
+msgstr ""
+
+#. aim_userinfo_t
+#. strip_html_tags
+#, fuzzy
+msgid "Additional Information"
+msgstr "Inachunguza taarifa"
+
+msgid "Zip Code"
+msgstr ""
+
+#, fuzzy
+msgid "Work Information"
+msgstr "Taarifa Zaidi"
+
+msgid "Division"
+msgstr ""
+
+#, fuzzy
+msgid "Position"
+msgstr "Nafasi:"
+
+msgid "Web Page"
+msgstr ""
+
+msgid "Pop-Up Message"
+msgstr ""
+
+#, c-format
+msgid "The following username is associated with %s"
+msgid_plural "The following usernames are associated with %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#, c-format
+msgid "No results found for email address %s"
+msgstr ""
+
+#, c-format
+msgid "You should receive an email asking to confirm %s."
+msgstr ""
+
+msgid "Account Confirmation Requested"
+msgstr ""
+
+#, c-format
+msgid ""
+"Error 0x%04x: Unable to format username because the requested name differs "
+"from the original."
+msgstr ""
+
+#, c-format
+msgid "Error 0x%04x: Unable to format username because it is invalid."
+msgstr ""
+
+#, c-format
+msgid ""
+"Error 0x%04x: Unable to format username because the requested name is too "
+"long."
+msgstr ""
+
+#, c-format
+msgid ""
+"Error 0x%04x: Unable to change email address because there is already a "
+"request pending for this username."
+msgstr ""
+
+#, c-format
+msgid ""
+"Error 0x%04x: Unable to change email address because the given address has "
+"too many usernames associated with it."
+msgstr ""
+
+#, c-format
+msgid ""
+"Error 0x%04x: Unable to change email address because the given address is "
+"invalid."
+msgstr ""
+
+#, c-format
+msgid "Error 0x%04x: Unknown error."
+msgstr ""
+
+msgid "Error Changing Account Info"
+msgstr ""
+
+#, c-format
+msgid "The email address for %s is %s"
+msgstr ""
+
+msgid "Account Info"
+msgstr ""
+
+msgid ""
+"Your IM Image was not sent. You must be Direct Connected to send IM Images."
+msgstr ""
+
+msgid "Unable to set AIM profile."
+msgstr ""
+
+msgid ""
+"You have probably requested to set your profile before the login procedure "
+"completed. Your profile remains unset; try setting it again when you are "
+"fully connected."
+msgstr ""
+
+#, c-format
+msgid ""
+"The maximum profile length of %d byte has been exceeded. It has been "
+"truncated for you."
+msgid_plural ""
+"The maximum profile length of %d bytes has been exceeded. It has been "
+"truncated for you."
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Profile too long."
+msgstr ""
+
+#, c-format
+msgid ""
+"The maximum away message length of %d byte has been exceeded. It has been "
+"truncated for you."
+msgid_plural ""
+"The maximum away message length of %d bytes has been exceeded. It has been "
+"truncated for you."
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Away message too long."
+msgstr ""
+
+#, c-format
+msgid ""
+"Could not add the buddy %s because the username is invalid. Usernames must "
+"be a valid email address, or start with a letter and contain only letters, "
+"numbers and spaces, or contain only numbers."
+msgstr ""
+
+#, fuzzy
+msgid "Unable to Add"
+msgstr "Nimeshindwa Kusasisha"
+
+msgid "Unable to Retrieve Buddy List"
+msgstr ""
+
+msgid ""
+"The AIM servers were temporarily unable to send your buddy list. Your buddy "
+"list is not lost, and will probably become available in a few minutes."
+msgstr ""
+
+msgid "Orphans"
+msgstr ""
+
+#, c-format
+msgid ""
+"Could not add the buddy %s because you have too many buddies in your buddy "
+"list. Please remove one and try again."
+msgstr ""
+
+#, fuzzy
+msgid "(no name)"
+msgstr "(hakuna lakabu)"
+
+#, c-format
+msgid "Could not add the buddy %s for an unknown reason."
+msgstr ""
+
+#, c-format
+msgid ""
+"The user %s has given you permission to add him or her to your buddy list. "
+"Do you want to add this user?"
+msgstr ""
+
+msgid "Authorization Given"
+msgstr ""
+
+#. Granted
+#, c-format
+msgid "The user %s has granted your request to add them to your buddy list."
+msgstr ""
+
+msgid "Authorization Granted"
+msgstr ""
+
+#. Denied
+#, c-format
+msgid ""
+"The user %s has denied your request to add them to your buddy list for the "
+"following reason:\n"
+"%s"
+msgstr ""
+
+#, fuzzy
+msgid "Authorization Denied"
+msgstr "Uthibitisho unatakiwa"
+
+msgid "_Exchange:"
+msgstr ""
+
+msgid "Your IM Image was not sent. You cannot send IM Images in AIM chats."
+msgstr ""
+
+msgid "iTunes Music Store Link"
+msgstr ""
+
+#, c-format
+msgid "Buddy Comment for %s"
+msgstr ""
+
+msgid "Buddy Comment:"
+msgstr ""
+
+#, c-format
+msgid "You have selected to open a Direct IM connection with %s."
+msgstr ""
+
+msgid ""
+"Because this reveals your IP address, it may be considered a security risk. "
+"Do you wish to continue?"
+msgstr ""
+
+#, fuzzy
+msgid "C_onnect"
+msgstr "Yaliyomo"
+
+msgid "Get AIM Info"
+msgstr ""
+
+#. We only do this if the user is in our buddy list
+msgid "Edit Buddy Comment"
+msgstr ""
+
+msgid "Get Status Msg"
+msgstr ""
+
+#, fuzzy
+msgid "Direct IM"
+msgstr "Mwelekeo"
+
+msgid "Re-request Authorization"
+msgstr ""
+
+msgid "Require authorization"
+msgstr ""
+
+msgid "Web aware (enabling this will cause you to receive SPAM!)"
+msgstr ""
+
+msgid "ICQ Privacy Options"
+msgstr ""
+
+msgid "The new formatting is invalid."
+msgstr ""
+
+msgid "Username formatting can change only capitalization and whitespace."
+msgstr ""
+
+msgid "Change Address To:"
+msgstr ""
+
+msgid "<i>you are not waiting for authorization</i>"
+msgstr ""
+
+msgid "You are awaiting authorization from the following buddies"
+msgstr ""
+
+msgid ""
+"You can re-request authorization from these buddies by right-clicking on "
+"them and selecting \"Re-request Authorization.\""
+msgstr ""
+
+msgid "Find Buddy by Email"
+msgstr ""
+
+msgid "Search for a buddy by email address"
+msgstr ""
+
+msgid "Type the email address of the buddy you are searching for."
+msgstr ""
+
+#, fuzzy
+msgid "_Search"
+msgstr "Tafuta"
+
+msgid "Set User Info (web)..."
+msgstr ""
+
+#, fuzzy
+msgid "Change Password (web)"
+msgstr "Badil &Nywila"
+
+msgid "Configure IM Forwarding (web)"
+msgstr ""
+
+#. ICQ actions
+msgid "Set Privacy Options..."
+msgstr ""
+
+#. AIM actions
+#, fuzzy
+msgid "Confirm Account"
+msgstr "Thibitisha kufunga"
+
+msgid "Display Currently Registered Email Address"
+msgstr ""
+
+msgid "Change Currently Registered Email Address..."
+msgstr ""
+
+msgid "Show Buddies Awaiting Authorization"
+msgstr ""
+
+msgid "Search for Buddy by Email Address..."
+msgstr ""
+
+msgid "Search for Buddy by Information"
+msgstr ""
+
+msgid ""
+"Always use AIM/ICQ proxy server for\n"
+"file transfers and direct IM (slower,\n"
+"but does not reveal your IP address)"
+msgstr ""
+
+msgid "Allow multiple simultaneous logins"
+msgstr ""
+
+#, c-format
+msgid "Asking %s to connect to us at %s:%hu for Direct IM."
+msgstr ""
+
+#, c-format
+msgid "Attempting to connect to %s:%hu."
+msgstr ""
+
+msgid "Attempting to connect via proxy server."
+msgstr ""
+
+#, c-format
+msgid "%s has just asked to directly connect to %s"
+msgstr ""
+
+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 ""
+
+msgid "Aquarius"
+msgstr ""
+
+msgid "Pisces"
+msgstr ""
+
+msgid "Aries"
+msgstr ""
+
+#, fuzzy
+msgid "Taurus"
+msgstr "Kinauru"
+
+msgid "Gemini"
+msgstr ""
+
+#, fuzzy
+msgid "Cancer"
+msgstr "Ghairi"
+
+#, fuzzy
+msgid "Leo"
+msgstr "Lao"
+
+msgid "Virgo"
+msgstr ""
+
+#, fuzzy
+msgid "Libra"
+msgstr "Libya"
+
+msgid "Scorpio"
+msgstr ""
+
+msgid "Sagittarius"
+msgstr ""
+
+msgid "Capricorn"
+msgstr ""
+
+#, fuzzy
+msgid "Rat"
+msgstr "Jmosi"
+
+msgid "Ox"
+msgstr ""
+
+#, fuzzy
+msgid "Tiger"
+msgstr "Niger"
+
+#, fuzzy
+msgid "Rabbit"
+msgstr "Mibbit"
+
+msgid "Dragon"
+msgstr ""
+
+#, fuzzy
+msgid "Snake"
+msgstr "Hifadhi"
+
+#, fuzzy
+msgid "Horse"
+msgstr "Nyumbani"
+
+msgid "Goat"
+msgstr ""
+
+#, fuzzy
+msgid "Monkey"
+msgstr "Jumatatu"
+
+#, fuzzy
+msgid "Rooster"
+msgstr "Mwandishi wa habari"
+
+msgid "Dog"
+msgstr ""
+
+msgid "Pig"
+msgstr ""
+
+#, fuzzy
+msgid "Other"
+msgstr "Wengine"
+
+#, fuzzy
+msgid "Visible"
+msgstr "Lemaza"
+
+msgid "Friend Only"
+msgstr ""
+
+#, fuzzy
+msgid "Private"
+msgstr "Faragha"
+
+msgid "QQ Number"
+msgstr ""
+
+msgid "Country/Region"
+msgstr ""
+
+msgid "Province/State"
+msgstr ""
+
+#, fuzzy
+msgid "Zipcode"
+msgstr "Folda la Zipu"
+
+msgid "Phone Number"
+msgstr ""
+
+msgid "Authorize adding"
+msgstr ""
+
+msgid "Cellphone Number"
+msgstr ""
+
+msgid "Personal Introduction"
+msgstr ""
+
+msgid "City/Area"
+msgstr ""
+
+msgid "Publish Mobile"
+msgstr ""
+
+msgid "Publish Contact"
+msgstr ""
+
+#, fuzzy
+msgid "College"
+msgstr "Kunja"
+
+msgid "Horoscope"
+msgstr ""
+
+msgid "Zodiac"
+msgstr ""
+
+#, fuzzy
+msgid "Blood"
+msgstr "Zuia"
+
+#, fuzzy
+msgid "True"
+msgstr "Jnne"
+
+#, fuzzy
+msgid "False"
+msgstr "si kweli"
+
+msgid "Modify Contact"
+msgstr ""
+
+#, fuzzy
+msgid "Modify Address"
+msgstr "Anwani ya Barua pepe"
+
+msgid "Modify Extended Information"
+msgstr ""
+
+#, fuzzy
+msgid "Modify Information"
+msgstr "Taarifa Zaidi"
+
+msgid "Update"
+msgstr "Sasisha"
+
+msgid "Could not change buddy information."
+msgstr ""
+
+#, fuzzy
+msgid "Mobile"
+msgstr "Moduli"
+
+#, fuzzy
+msgid "Note"
+msgstr "Bila"
+
+#. callback
+msgid "Buddy Memo"
+msgstr ""
+
+msgid "Change his/her memo as you like"
+msgstr ""
+
+#, fuzzy
+msgid "_Modify"
+msgstr "R&ekebisha"
+
+msgid "Memo Modify"
+msgstr ""
+
+msgid "Server says:"
+msgstr ""
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
+#, c-format
+msgid "%u requires verification"
+msgstr ""
+
+msgid "Add buddy question"
+msgstr ""
+
+#, fuzzy
+msgid "Enter answer here"
+msgstr "Ingiza neno tafuti:"
+
+#, fuzzy
+msgid "Send"
+msgstr "Kivenda"
+
+#, fuzzy
+msgid "Invalid answer."
+msgstr "Agumenti batili"
+
+msgid "Authorization denied message:"
+msgstr ""
+
+msgid "Sorry, you're not my style."
+msgstr ""
+
+#, c-format
+msgid "%u needs authorization"
+msgstr ""
+
+msgid "Add buddy authorize"
+msgstr ""
+
+msgid "Enter request here"
+msgstr ""
+
+msgid "Would you be my friend?"
+msgstr ""
+
+msgid "QQ Buddy"
+msgstr ""
+
+msgid "Add buddy"
+msgstr ""
+
+msgid "Invalid QQ Number"
+msgstr ""
+
+msgid "Failed sending authorize"
+msgstr ""
+
+#, c-format
+msgid "Failed removing buddy %u"
+msgstr ""
+
+#, c-format
+msgid "Failed removing me from %d's buddy list"
+msgstr ""
+
+msgid "No reason given"
+msgstr ""
+
+#. only need to get value
+#, c-format
+msgid "You have been added by %s"
+msgstr ""
+
+#, fuzzy
+msgid "Would you like to add him?"
+msgstr "Ungependa kuhifadhi faili hili?"
+
+#, c-format
+msgid "Rejected by %s"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Message: %s"
+msgstr "Ujumbe"
+
+msgid "ID: "
+msgstr ""
+
+#, fuzzy
+msgid "Group ID"
+msgstr "Kusanya kwa:"
+
+msgid "QQ Qun"
+msgstr ""
+
+msgid "Please enter Qun number"
+msgstr ""
+
+msgid "You can only search for permanent Qun\n"
+msgstr ""
+
+msgid "(Invalid UTF-8 string)"
+msgstr ""
+
+#, fuzzy
+msgid "Not member"
+msgstr "Novemba"
+
+#, fuzzy
+msgid "Member"
+msgstr "Novemba"
+
+msgid "Requesting"
+msgstr ""
+
+msgid "Admin"
+msgstr ""
+
+msgid "Notice"
+msgstr ""
+
+#, fuzzy
+msgid "Detail"
+msgstr "Ufafanuzi"
+
+msgid "Creator"
+msgstr ""
+
+#, fuzzy
+msgid "About me"
+msgstr "Kuhusu %S"
+
+msgid "Category"
+msgstr ""
+
+msgid "The Qun does not allow others to join"
+msgstr ""
+
+msgid "Join QQ Qun"
+msgstr ""
+
+msgid "Input request here"
+msgstr ""
+
+#, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr ""
+
+#, fuzzy
+msgid "Successfully joined Qun"
+msgstr "Imesakinishwa kimafanikio %S."
+
+#, c-format
+msgid "Qun %u denied from joining"
+msgstr ""
+
+msgid "QQ Qun Operation"
+msgstr ""
+
+#, fuzzy
+msgid "Failed:"
+msgstr "Imeshindwa"
+
+msgid "Join Qun, Unknown Reply"
+msgstr ""
+
+#, fuzzy
+msgid "Quit Qun"
+msgstr "Funga %s"
+
+msgid ""
+"Note, if you are the creator, \n"
+"this operation will eventually remove this Qun."
+msgstr ""
+
+msgid "Sorry, you are not our style"
+msgstr ""
+
+msgid "Successfully changed Qun members"
+msgstr ""
+
+msgid "Successfully changed Qun information"
+msgstr ""
+
+msgid "You have successfully created a Qun"
+msgstr ""
+
+msgid "Would you like to set up detailed information now?"
+msgstr ""
+
+#, fuzzy
+msgid "Setup"
+msgstr "Sep"
+
+#, c-format
+msgid "%u requested to join Qun %u for %s"
+msgstr ""
+
+#, c-format
+msgid "%u request to join Qun %u"
+msgstr ""
+
+#, c-format
+msgid "Failed to join Qun %u, operated by admin %u"
+msgstr ""
+
+#, c-format
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
+msgstr ""
+
+#, c-format
+msgid "<b>Removed buddy %u.</b>"
+msgstr ""
+
+#, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Unknown-%d"
+msgstr "Isiyojulikana: %S"
+
+#, fuzzy
+msgid "Level"
+msgstr "Lebo"
+
+msgid " VIP"
+msgstr ""
+
+msgid " TCP"
+msgstr ""
+
+msgid " FromMobile"
+msgstr ""
+
+msgid " BindMobile"
+msgstr ""
+
+#, fuzzy
+msgid " Video"
+msgstr "Hifadhi video"
+
+#, fuzzy
+msgid " Zone"
+msgstr "Bila"
+
+#, fuzzy
+msgid "Flag"
+msgstr "Kifulah"
+
+msgid "Ver"
+msgstr ""
+
+#, fuzzy
+msgid "Invalid name"
+msgstr "Njia batili"
+
+msgid "Select icon..."
+msgstr ""
+
+#, c-format
+msgid "<b>Login time</b>: %d-%d-%d, %d:%d:%d<br>\n"
+msgstr ""
+
+#, c-format
+msgid "<b>Total Online Buddies</b>: %d<br>\n"
+msgstr ""
+
+#, c-format
+msgid "<b>Last Refresh</b>: %d-%d-%d, %d:%d:%d<br>\n"
+msgstr ""
+
+#, c-format
+msgid "<b>Server</b>: %s<br>\n"
+msgstr ""
+
+#, c-format
+msgid "<b>Client Tag</b>: %s<br>\n"
+msgstr ""
+
+#, c-format
+msgid "<b>Connection Mode</b>: %s<br>\n"
+msgstr ""
+
+#, c-format
+msgid "<b>My Internet IP</b>: %s:%d<br>\n"
+msgstr ""
+
+#, c-format
+msgid "<b>Sent</b>: %lu<br>\n"
+msgstr ""
+
+#, c-format
+msgid "<b>Resend</b>: %lu<br>\n"
+msgstr ""
+
+#, c-format
+msgid "<b>Lost</b>: %lu<br>\n"
+msgstr ""
+
+#, c-format
+msgid "<b>Received</b>: %lu<br>\n"
+msgstr ""
+
+#, c-format
+msgid "<b>Received Duplicate</b>: %lu<br>\n"
+msgstr ""
+
+#, c-format
+msgid "<b>Time</b>: %d-%d-%d, %d:%d:%d<br>\n"
+msgstr ""
+
+#, c-format
+msgid "<b>IP</b>: %s<br>\n"
+msgstr ""
+
+#, fuzzy
+msgid "Login Information"
+msgstr "Taarifa Zaidi"
+
+msgid "<p><b>Original Author</b>:<br>\n"
+msgstr ""
+
+msgid "<p><b>Code Contributors</b>:<br>\n"
+msgstr ""
+
+msgid "<p><b>Lovely Patch Writers</b>:<br>\n"
+msgstr ""
+
+msgid "<p><b>Acknowledgement</b>:<br>\n"
+msgstr ""
+
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr ""
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
+msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
+msgstr ""
+
+msgid "<i>Feel free to join us!</i> :)"
+msgstr ""
+
+#, c-format
+msgid "About OpenQ %s"
+msgstr ""
+
+msgid "Change Icon"
+msgstr ""
+
+#, fuzzy
+msgid "Change Password"
+msgstr "Badil &Nywila"
+
+#, fuzzy
+msgid "Account Information"
+msgstr "Inachunguza taarifa"
+
+msgid "Update all QQ Quns"
+msgstr ""
+
+msgid "About OpenQ"
+msgstr ""
+
+msgid "Modify Buddy Memo"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "QQ Protocol Plugin"
+msgstr ""
+
+msgid "Auto"
+msgstr ""
+
+#, fuzzy
+msgid "Select Server"
+msgstr "SSL Seva"
+
+msgid "QQ2005"
+msgstr ""
+
+msgid "QQ2007"
+msgstr ""
+
+msgid "QQ2008"
+msgstr ""
+
+msgid "Connect by TCP"
+msgstr ""
+
+msgid "Show server notice"
+msgstr ""
+
+msgid "Show server news"
+msgstr ""
+
+msgid "Show chat room when msg comes"
+msgstr ""
+
+msgid "Keep alive interval (seconds)"
+msgstr ""
+
+msgid "Update interval (seconds)"
+msgstr ""
+
+msgid "Cannot decrypt server reply"
+msgstr ""
+
+#, c-format
+msgid "Failed requesting token, 0x%02X"
+msgstr ""
+
+#, c-format
+msgid "Invalid token len, %d"
+msgstr ""
+
+#. extend redirect used in QQ2006
+msgid "Redirect_EX is not currently supported"
+msgstr ""
+
+#. need activation
+#. need activation
+#. need activation
+#, fuzzy
+msgid "Activation required"
+msgstr "Uthibitisho unatakiwa"
+
+#, c-format
+msgid "Unknown reply code when logging in (0x%02X)"
+msgstr ""
+
+msgid "Could not decrypt server reply"
+msgstr ""
+
+msgid "Requesting captcha"
+msgstr ""
+
+msgid "Checking captcha"
+msgstr ""
+
+msgid "Failed captcha verification"
+msgstr ""
+
+#, fuzzy
+msgid "Captcha Image"
+msgstr "Naki&li Picha"
+
+msgid "Enter code"
+msgstr ""
+
+msgid "QQ Captcha Verification"
+msgstr ""
+
+msgid "Enter the text from the image"
+msgstr ""
+
+#, c-format
+msgid "Unknown reply when checking password (0x%02X)"
+msgstr ""
+
+#, c-format
+msgid ""
+"Unknown reply code when logging in (0x%02X):\n"
+"%s"
+msgstr ""
+
+#, fuzzy
+msgid "Unable to connect."
+msgstr "Haikuweza kuunganishwa"
+
+#, fuzzy
+msgid "Socket error"
+msgstr "Hitilafu ya hati"
+
+msgid "Unable to read from socket"
+msgstr ""
+
+#, fuzzy
+msgid "Write Error"
+msgstr "Hitilafu ya Printa"
+
+#, fuzzy
+msgid "Connection lost"
+msgstr "Unganisho"
+
+#, fuzzy
+msgid "Getting server"
+msgstr "Anza"
+
+msgid "Requesting token"
+msgstr ""
+
+msgid "Couldn't resolve host"
+msgstr ""
+
+msgid "Invalid server or port"
+msgstr ""
+
+#, fuzzy
+msgid "Connecting to server"
+msgstr "Naunganisha na %1$S…"
+
+#, fuzzy
+msgid "QQ Error"
+msgstr "Hitikafu "
+
+#, c-format
+msgid ""
+"Server News:\n"
+"%s\n"
+"%s\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid "%s:%s"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "From %s:"
+msgstr "Kutoka %S"
+
+#, c-format
+msgid ""
+"Server notice From %s: \n"
+"%s"
+msgstr ""
+
+msgid "Unknown SERVER CMD"
+msgstr ""
+
+#, c-format
+msgid ""
+"Error reply of %s(0x%02X)\n"
+"Room %u, reply 0x%02X"
+msgstr ""
+
+msgid "QQ Qun Command"
+msgstr ""
+
+msgid "Could not decrypt login reply"
+msgstr ""
+
+msgid "Unknown LOGIN CMD"
+msgstr ""
+
+msgid "Unknown CLIENT CMD"
+msgstr ""
+
+#, c-format
+msgid "%d has declined the file %s"
+msgstr ""
+
+msgid "File Send"
+msgstr ""
+
+#, c-format
+msgid "%d canceled the transfer of %s"
+msgstr ""
+
+msgid "Connection closed (writing)"
+msgstr ""
+
+#, c-format
+msgid "<b>Group Title:</b> %s<br>"
+msgstr ""
+
+#, c-format
+msgid "<b>Notes Group ID:</b> %s<br>"
+msgstr ""
+
+#, c-format
+msgid "Info for Group %s"
+msgstr ""
+
+msgid "Notes Address Book Information"
+msgstr ""
+
+msgid "Invite Group to Conference..."
+msgstr ""
+
+msgid "Get Notes Address Book Info"
+msgstr ""
+
+msgid "Sending Handshake"
+msgstr ""
+
+msgid "Waiting for Handshake Acknowledgement"
+msgstr ""
+
+msgid "Handshake Acknowledged, Sending Login"
+msgstr ""
+
+msgid "Waiting for Login Acknowledgement"
+msgstr ""
+
+msgid "Login Redirected"
+msgstr ""
+
+msgid "Forcing Login"
+msgstr ""
+
+msgid "Login Acknowledged"
+msgstr ""
+
+msgid "Starting Services"
+msgstr ""
+
+#, c-format
+msgid ""
+"A Sametime administrator has issued the following announcement on server %s"
+msgstr ""
+
+msgid "Sametime Administrator Announcement"
+msgstr ""
+
+#, fuzzy
+msgid "Connection reset"
+msgstr "Muunganisho ulikataliwa"
+
+#, fuzzy, c-format
+msgid "Error reading from socket: %s"
+msgstr "Hitilafu ya upakiaji lahamtindo: %S"
+
+#. this is a regular connect, error out
+#, fuzzy
+msgid "Unable to connect to host"
+msgstr "Haikuweza kuunganishwa"
+
+#, c-format
+msgid "Announcement from %s"
+msgstr ""
+
+msgid "Conference Closed"
+msgstr ""
+
+msgid "Unable to send message: "
+msgstr ""
+
+msgid "Place Closed"
+msgstr ""
+
+msgid "Microphone"
+msgstr ""
+
+#, fuzzy
+msgid "Speakers"
+msgstr "Seva"
+
+#, fuzzy
+msgid "Video Camera"
+msgstr "Kicheza Video"
+
+msgid "Supports"
+msgstr ""
+
+msgid "External User"
+msgstr ""
+
+msgid "Create conference with user"
+msgstr ""
+
+#, c-format
+msgid ""
+"Please enter a topic for the new conference, and an invitation message to be "
+"sent to %s"
+msgstr ""
+
+msgid "New Conference"
+msgstr ""
+
+#, fuzzy
+msgid "Create"
+msgstr "Kicree"
+
+#, fuzzy
+msgid "Available Conferences"
+msgstr "Profaili Zipatikanazo"
+
+msgid "Create New Conference..."
+msgstr ""
+
+msgid "Invite user to a conference"
+msgstr ""
+
+#, c-format
+msgid ""
+"Select a conference from the list below to send an invite to user %s. Select "
+"\"Create New Conference\" if you'd like to create a new conference to invite "
+"this user to."
+msgstr ""
+
+msgid "Invite to Conference"
+msgstr ""
+
+msgid "Invite to Conference..."
+msgstr ""
+
+msgid "Send TEST Announcement"
+msgstr ""
+
+msgid "Topic:"
+msgstr ""
+
+msgid "No Sametime Community Server specified"
+msgstr ""
+
+#, c-format
+msgid ""
+"No host or IP address has been configured for the Meanwhile account %s. "
+"Please enter one below to continue logging in."
+msgstr ""
+
+msgid "Meanwhile Connection Setup"
+msgstr ""
+
+msgid "No Sametime Community Server Specified"
+msgstr ""
+
+#, fuzzy
+msgid "Connect"
+msgstr "Yaliyomo"
+
+#, c-format
+msgid "Unknown (0x%04x)<br>"
+msgstr ""
+
+msgid "Last Known Client"
+msgstr ""
+
+#, fuzzy
+msgid "User Name"
+msgstr "Jina la Mtumiaji:"
+
+msgid "Sametime ID"
+msgstr ""
+
+msgid "An ambiguous user ID was entered"
+msgstr ""
+
+#, c-format
+msgid ""
+"The identifier '%s' may possibly refer to any of the following users. Please "
+"select the correct user from the list below to add them to your buddy list."
+msgstr ""
+
+#, fuzzy
+msgid "Select User"
+msgstr "Chagua &Yote"
+
+msgid "Unable to add user: user not found"
+msgstr ""
+
+#, c-format
+msgid ""
+"The identifier '%s' did not match any users in your Sametime community. This "
+"entry has been removed from your buddy list."
+msgstr ""
+
+#, c-format
+msgid ""
+"Error reading file %s: \n"
+"%s\n"
+msgstr ""
+
+msgid "Remotely Stored Buddy List"
+msgstr ""
+
+msgid "Buddy List Storage Mode"
+msgstr ""
+
+msgid "Local Buddy List Only"
+msgstr ""
+
+msgid "Merge List from Server"
+msgstr ""
+
+msgid "Merge and Save List to Server"
+msgstr ""
+
+msgid "Synchronize List with Server"
+msgstr ""
+
+#, c-format
+msgid "Import Sametime List for Account %s"
+msgstr ""
+
+#, c-format
+msgid "Export Sametime List for Account %s"
+msgstr ""
+
+msgid "Unable to add group: group exists"
+msgstr ""
+
+#, c-format
+msgid "A group named '%s' already exists in your buddy list."
+msgstr ""
+
+#, fuzzy
+msgid "Unable to add group"
+msgstr "Haiwezi kuongeza moduli"
+
+msgid "Possible Matches"
+msgstr ""
+
+msgid "Notes Address Book group results"
+msgstr ""
+
+#, c-format
+msgid ""
+"The identifier '%s' may possibly refer to any of the following Notes Address "
+"Book groups. Please select the correct group from the list below to add it "
+"to your buddy list."
+msgstr ""
+
+msgid "Select Notes Address Book"
+msgstr ""
+
+msgid "Unable to add group: group not found"
+msgstr ""
+
+#, c-format
+msgid ""
+"The identifier '%s' did not match any Notes Address Book groups in your "
+"Sametime community."
+msgstr ""
+
+msgid "Notes Address Book Group"
+msgstr ""
+
+msgid ""
+"Enter the name of a Notes Address Book group in the field below to add the "
+"group and its members to your buddy list."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Search results for '%s'"
+msgstr "Majibu ya kutafutwa kwa"
+
+#, 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 ""
+
+#, fuzzy
+msgid "Search Results"
+msgstr "Tafuta matokeo"
+
+#, fuzzy
+msgid "No matches"
+msgstr "%S maoanisho"
+
+#, c-format
+msgid "The identifier '%s' did not match any users in your Sametime community."
+msgstr ""
+
+#, fuzzy
+msgid "No Matches"
+msgstr "%S maoanisho"
+
+msgid "Search for a user"
+msgstr ""
+
+msgid ""
+"Enter a name or partial ID in the field below to search for matching users "
+"in your Sametime community."
+msgstr ""
+
+#, fuzzy
+msgid "User Search"
+msgstr "Tafuti Mpya"
+
+msgid "Import Sametime List..."
+msgstr ""
+
+msgid "Export Sametime List..."
+msgstr ""
+
+msgid "Add Notes Address Book Group..."
+msgstr ""
+
+msgid "User Search..."
+msgstr ""
+
+msgid "Force login (ignore server redirects)"
+msgstr ""
+
+#. pretend to be Sametime Connect
+msgid "Hide client identity"
+msgstr ""
+
+#, c-format
+msgid "User %s is not present in the network"
+msgstr ""
+
+msgid "Key Agreement"
+msgstr "Makubaliano Muhimu"
+
+msgid "Cannot perform the key agreement"
+msgstr ""
+
+msgid "Error occurred during key agreement"
+msgstr ""
+
+#, fuzzy
+msgid "Key Agreement failed"
+msgstr "Makubaliano Muhimu"
+
+msgid "Timeout during key agreement"
+msgstr ""
+
+msgid "Key agreement was aborted"
+msgstr ""
+
+msgid "Key agreement is already started"
+msgstr ""
+
+msgid "Key agreement cannot be started with yourself"
+msgstr ""
+
+msgid "The remote user is not present in the network any more"
+msgstr ""
+
+#, c-format
+msgid ""
+"Key agreement request received from %s. Would you like to perform the key "
+"agreement?"
+msgstr ""
+
+#, c-format
+msgid ""
+"The remote user is waiting key agreement on:\n"
+"Remote host: %s\n"
+"Remote port: %d"
+msgstr ""
+
+#, fuzzy
+msgid "Key Agreement Request"
+msgstr "Makubaliano Muhimu"
+
+msgid "IM With Password"
+msgstr ""
+
+msgid "Cannot set IM key"
+msgstr ""
+
+#, fuzzy
+msgid "Set IM Password"
+msgstr "Onyesha Nywila"
+
+#, fuzzy
+msgid "Get Public Key"
+msgstr "Ufunguo Huria wa Muhusika"
+
+msgid "Cannot fetch the public key"
+msgstr ""
+
+#, fuzzy
+msgid "Show Public Key"
+msgstr "Ufunguo Huria wa Muhusika"
+
+msgid "Could not load public key"
+msgstr ""
+
+#, fuzzy
+msgid "User Information"
+msgstr "Taarifa Zaidi"
+
+msgid "Cannot get user information"
+msgstr ""
+
+#, c-format
+msgid "The %s buddy is not trusted"
+msgstr ""
+
+msgid ""
+"You cannot receive buddy notifications until you import his/her public key. "
+"You can use the Get Public Key command to get the public key."
+msgstr ""
+
+#. Open file selector to select the public key.
+msgid "Open..."
+msgstr ""
+
+#, c-format
+msgid "The %s buddy is not present in the network"
+msgstr ""
+
+msgid ""
+"To add the buddy you must import his/her public key. Press Import to import "
+"a public key."
+msgstr ""
+
+#, fuzzy
+msgid "_Import..."
+msgstr "&Leta…"
+
+msgid "Select correct user"
+msgstr ""
+
+msgid ""
+"More than one user was found with the same public key. Select the correct "
+"user from the list to add to the buddy list."
+msgstr ""
+
+msgid ""
+"More than one user was found with the same name. Select the correct user "
+"from the list to add to the buddy list."
+msgstr ""
+
+#, fuzzy
+msgid "Detached"
+msgstr "Haijakechiwa"
+
+msgid "Indisposed"
+msgstr ""
+
+msgid "Wake Me Up"
+msgstr ""
+
+msgid "Hyper Active"
+msgstr ""
+
+msgid "Robot"
+msgstr ""
+
+msgid "Happy"
+msgstr ""
+
+#, fuzzy
+msgid "Sad"
+msgstr "Jm"
+
+msgid "Angry"
+msgstr ""
+
+msgid "Jealous"
+msgstr ""
+
+#, fuzzy
+msgid "Ashamed"
+msgstr "Kiassame"
+
+msgid "Invincible"
+msgstr ""
+
+msgid "In Love"
+msgstr ""
+
+msgid "Sleepy"
+msgstr ""
+
+msgid "Bored"
+msgstr ""
+
+msgid "Excited"
+msgstr ""
+
+msgid "Anxious"
+msgstr ""
+
+#, fuzzy
+msgid "User Modes"
+msgstr "Jina la Mtumiaji:"
+
+msgid "Preferred Contact"
+msgstr ""
+
+msgid "Preferred Language"
+msgstr ""
+
+#, fuzzy
+msgid "Device"
+msgstr "Huduma"
+
+msgid "Timezone"
+msgstr ""
+
+#, fuzzy
+msgid "Geolocation"
+msgstr "Mahali"
+
+msgid "Reset IM Key"
+msgstr ""
+
+msgid "IM with Key Exchange"
+msgstr ""
+
+msgid "IM with Password"
+msgstr ""
+
+msgid "Get Public Key..."
+msgstr ""
+
+msgid "Kill User"
+msgstr ""
+
+msgid "Draw On Whiteboard"
+msgstr ""
+
+msgid "_Passphrase:"
+msgstr ""
+
+#, c-format
+msgid "Channel %s does not exist in the network"
+msgstr ""
+
+#, fuzzy
+msgid "Channel Information"
+msgstr "Inachunguza taarifa"
+
+msgid "Cannot get channel information"
+msgstr ""
+
+#, c-format
+msgid "<b>Channel Name:</b> %s"
+msgstr ""
+
+#, c-format
+msgid "<br><b>User Count:</b> %d"
+msgstr ""
+
+#, c-format
+msgid "<br><b>Channel Founder:</b> %s"
+msgstr ""
+
+#, c-format
+msgid "<br><b>Channel Cipher:</b> %s"
+msgstr ""
+
+#. Definition of HMAC: http://en.wikipedia.org/wiki/HMAC
+#, c-format
+msgid "<br><b>Channel HMAC:</b> %s"
+msgstr ""
+
+#, c-format
+msgid "<br><b>Channel Topic:</b><br>%s"
+msgstr ""
+
+#, c-format
+msgid "<br><b>Channel Modes:</b> "
+msgstr ""
+
+#, c-format
+msgid "<br><b>Founder Key Fingerprint:</b><br>%s"
+msgstr ""
+
+#, c-format
+msgid "<br><b>Founder Key Babbleprint:</b><br>%s"
+msgstr ""
+
+msgid "Add Channel Public Key"
+msgstr ""
+
+#. Add new public key
+msgid "Open Public Key..."
+msgstr ""
+
+msgid "Channel Passphrase"
+msgstr ""
+
+msgid "Channel Public Keys List"
+msgstr ""
+
+#, c-format
+msgid ""
+"Channel authentication is used to secure the channel from unauthorized "
+"access. The authentication may be based on passphrase and digital "
+"signatures. If passphrase is set, it is required to be able to join. If "
+"channel public keys are set then only users whose public keys are listed are "
+"able to join."
+msgstr ""
+
+msgid "Channel Authentication"
+msgstr ""
+
+msgid "Add / Remove"
+msgstr ""
+
+#, fuzzy
+msgid "Group Name"
+msgstr "Kusanya kwa:"
+
+#, fuzzy
+msgid "Passphrase"
+msgstr "Nywila"
+
+#, c-format
+msgid "Please enter the %s channel private group name and passphrase."
+msgstr ""
+
+msgid "Add Channel Private Group"
+msgstr ""
+
+#, fuzzy
+msgid "User Limit"
+msgstr "Jina la Mtumiaji:"
+
+msgid "Set user limit on channel. Set to zero to reset user limit."
+msgstr ""
+
+msgid "Invite List"
+msgstr ""
+
+msgid "Ban List"
+msgstr ""
+
+msgid "Add Private Group"
+msgstr ""
+
+#, fuzzy
+msgid "Reset Permanent"
+msgstr "Kudumu"
+
+#, fuzzy
+msgid "Set Permanent"
+msgstr "Kudumu"
+
+msgid "Set User Limit"
+msgstr ""
+
+msgid "Reset Topic Restriction"
+msgstr ""
+
+msgid "Set Topic Restriction"
+msgstr ""
+
+msgid "Reset Private Channel"
+msgstr ""
+
+msgid "Set Private Channel"
+msgstr ""
+
+msgid "Reset Secret Channel"
+msgstr ""
+
+msgid "Set Secret Channel"
+msgstr ""
+
+#, c-format
+msgid ""
+"You have to join the %s channel before you are able to join the private group"
+msgstr ""
+
+msgid "Join Private Group"
+msgstr ""
+
+msgid "Cannot join private group"
+msgstr ""
+
+msgid "Call Command"
+msgstr ""
+
+msgid "Cannot call command"
+msgstr ""
+
+msgid "Unknown command"
+msgstr ""
+
+msgid "Secure File Transfer"
+msgstr ""
+
+msgid "Error during file transfer"
+msgstr ""
+
+msgid "Remote disconnected"
+msgstr ""
+
+msgid "Permission denied"
+msgstr ""
+
+#, fuzzy
+msgid "Key agreement failed"
+msgstr "Makubaliano Muhimu"
+
+msgid "Connection timed out"
+msgstr "Muunganiko umepita muda"
+
+#, fuzzy
+msgid "Creating connection failed"
+msgstr "Muunganiko salama umeshindikana"
+
+msgid "File transfer session does not exist"
+msgstr ""
+
+msgid "No file transfer session active"
+msgstr ""
+
+msgid "File transfer already started"
+msgstr ""
+
+msgid "Could not perform key agreement for file transfer"
+msgstr ""
+
+msgid "Could not start the file transfer"
+msgstr ""
+
+msgid "Cannot send file"
+msgstr ""
+
+msgid "Error occurred"
+msgstr ""
+
+#, c-format
+msgid "%s has changed the topic of <I>%s</I> to: %s"
+msgstr ""
+
+#, c-format
+msgid "<I>%s</I> set channel <I>%s</I> modes to: %s"
+msgstr ""
+
+#, c-format
+msgid "<I>%s</I> removed all channel <I>%s</I> modes"
+msgstr ""
+
+#, c-format
+msgid "<I>%s</I> set <I>%s's</I> modes to: %s"
+msgstr ""
+
+#, c-format
+msgid "<I>%s</I> removed all <I>%s's</I> modes"
+msgstr ""
+
+#, c-format
+msgid "You have been kicked off <I>%s</I> by <I>%s</I> (%s)"
+msgstr ""
+
+#, c-format
+msgid "You have been killed by %s (%s)"
+msgstr ""
+
+#, c-format
+msgid "Killed by %s (%s)"
+msgstr ""
+
+msgid "Server signoff"
+msgstr ""
+
+#, fuzzy
+msgid "Personal Information"
+msgstr "Taarifa Zaidi"
+
+msgid "Birth Day"
+msgstr ""
+
+msgid "Job Role"
+msgstr ""
+
+#, fuzzy
+msgid "Organization"
+msgstr "Shirika:"
+
+#, fuzzy
+msgid "Unit"
+msgstr "Kizio:"
+
+msgid "Join Chat"
+msgstr ""
+
+#, c-format
+msgid "You are channel founder on <I>%s</I>"
+msgstr ""
+
+#, c-format
+msgid "Channel founder on <I>%s</I> is <I>%s</I>"
+msgstr ""
+
+msgid "Real Name"
+msgstr ""
+
+#, fuzzy
+msgid "Status Text"
+msgstr "M&wambaa Hali"
+
+msgid "Public Key Fingerprint"
+msgstr ""
+
+msgid "Public Key Babbleprint"
+msgstr ""
+
+msgid "_More..."
+msgstr ""
+
+msgid "Detach From Server"
+msgstr ""
+
+msgid "Cannot detach"
+msgstr ""
+
+msgid "Cannot set topic"
+msgstr ""
+
+msgid "Failed to change nickname"
+msgstr ""
+
+msgid "Roomlist"
+msgstr ""
+
+msgid "Cannot get room list"
+msgstr ""
+
+#, fuzzy
+msgid "Network is empty"
+msgstr "Muda wa mtandao umeisha"
+
+msgid "No public key was received"
+msgstr ""
+
+#, fuzzy
+msgid "Server Information"
+msgstr "Taarifa Zaidi"
+
+msgid "Cannot get server information"
+msgstr ""
+
+msgid "Server Statistics"
+msgstr ""
+
+msgid "Cannot get server statistics"
+msgstr ""
+
+#, c-format
+msgid ""
+"Local server start time: %s\n"
+"Local server uptime: %s\n"
+"Local server clients: %d\n"
+"Local server channels: %d\n"
+"Local server operators: %d\n"
+"Local router operators: %d\n"
+"Local cell clients: %d\n"
+"Local cell channels: %d\n"
+"Local cell servers: %d\n"
+"Total clients: %d\n"
+"Total channels: %d\n"
+"Total servers: %d\n"
+"Total routers: %d\n"
+"Total server operators: %d\n"
+"Total router operators: %d\n"
+msgstr ""
+
+msgid "Network Statistics"
+msgstr ""
+
+#, fuzzy
+msgid "Ping failed"
+msgstr "Imeshindwa kunakili"
+
+msgid "Ping reply received from server"
+msgstr ""
+
+msgid "Could not kill user"
+msgstr ""
+
+msgid "WATCH"
+msgstr ""
+
+msgid "Cannot watch user"
+msgstr ""
+
+#, fuzzy
+msgid "Resuming session"
+msgstr "Rejesha Awamu"
+
+msgid "Authenticating connection"
+msgstr ""
+
+msgid "Verifying server public key"
+msgstr ""
+
+#, fuzzy
+msgid "Passphrase required"
+msgstr "Nywila inatakiwa"
+
+#, 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 ""
+
+#, c-format
+msgid "Received %s's public key. Would you like to accept this public key?"
+msgstr ""
+
+#, c-format
+msgid ""
+"Fingerprint and babbleprint for the %s key are:\n"
+"\n"
+"%s\n"
+"%s\n"
+msgstr ""
+
+#, fuzzy
+msgid "Verify Public Key"
+msgstr "Ufunguo Huria wa Muhusika"
+
+msgid "_View..."
+msgstr ""
+
+#, fuzzy
+msgid "Unsupported public key type"
+msgstr "Aina ya faili isiyo stahimiliwa."
+
+msgid "Disconnected by server"
+msgstr ""
+
+msgid "Error during connecting to SILC Server"
+msgstr ""
+
+msgid "Key Exchange failed"
+msgstr ""
+
+msgid ""
+"Resuming detached session failed. Press Reconnect to create new connection."
+msgstr ""
+
+#, fuzzy
+msgid "Connection failed"
+msgstr "Unganisho Limeshindikana"
+
+msgid "Performing key exchange"
+msgstr ""
+
+#, fuzzy
+msgid "Unable to create connection"
+msgstr "Haikuweza kuunganishwa"
+
+msgid "Could not load SILC key pair"
+msgstr ""
+
+#. Progress
+#, fuzzy
+msgid "Connecting to SILC Server"
+msgstr "Inaunganisha kwenye seva ya sasisho…"
+
+msgid "Out of memory"
+msgstr "Nje ya kumbukumbu"
+
+msgid "Cannot initialize SILC protocol"
+msgstr ""
+
+msgid "Error loading SILC key pair"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Download %s: %s"
+msgstr "Inapakua: %S"
+
+msgid "Your Current Mood"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Normal"
+msgstr "&Kawaida"
+
+msgid "In love"
+msgstr ""
+
+msgid ""
+"\n"
+"Your Preferred Contact Methods"
+msgstr ""
+
+msgid "SMS"
+msgstr ""
+
+msgid "MMS"
+msgstr ""
+
+msgid "Video conferencing"
+msgstr ""
+
+msgid "Your Current Status"
+msgstr ""
+
+#, fuzzy
+msgid "Online Services"
+msgstr "Huduma za tovuti"
+
+msgid "Let others see what services you are using"
+msgstr ""
+
+msgid "Let others see what computer you are using"
+msgstr ""
+
+msgid "Your VCard File"
+msgstr ""
+
+msgid "Timezone (UTC)"
+msgstr ""
+
+msgid "User Online Status Attributes"
+msgstr ""
+
+msgid ""
+"You can let other users see your online status information and your personal "
+"information. Please fill the information you would like other users to see "
+"about yourself."
+msgstr ""
+
+msgid "Message of the Day"
+msgstr ""
+
+msgid "No Message of the Day available"
+msgstr ""
+
+msgid "There is no Message of the Day associated with this connection"
+msgstr ""
+
+msgid "Create New SILC Key Pair"
+msgstr ""
+
+msgid "Passphrases do not match"
+msgstr ""
+
+msgid "Key Pair Generation failed"
+msgstr ""
+
+msgid "Key length"
+msgstr ""
+
+msgid "Public key file"
+msgstr ""
+
+msgid "Private key file"
+msgstr ""
+
+msgid "Passphrase (retype)"
+msgstr ""
+
+msgid "Generate Key Pair"
+msgstr ""
+
+#, fuzzy
+msgid "Online Status"
+msgstr "Marekani"
+
+msgid "View Message of the Day"
+msgstr ""
+
+msgid "Create SILC Key Pair..."
+msgstr ""
+
+#, c-format
+msgid "User <I>%s</I> is not present in the network"
+msgstr ""
+
+msgid "Topic too long"
+msgstr ""
+
+msgid "You must specify a nick"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "channel %s not found"
+msgstr "Mstari haujapatikana"
+
+#, c-format
+msgid "channel modes for %s: %s"
+msgstr ""
+
+#, c-format
+msgid "no channel modes are set on %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to set cmodes for %s"
+msgstr ""
+
+#, c-format
+msgid "Unknown command: %s, (may be a client bug)"
+msgstr ""
+
+msgid "part [channel]: Leave the chat"
+msgstr ""
+
+msgid "leave [channel]: Leave the chat"
+msgstr ""
+
+msgid "topic [&lt;new topic&gt;]: View or change the topic"
+msgstr ""
+
+msgid "join &lt;channel&gt; [&lt;password&gt;]: Join a chat on this network"
+msgstr ""
+
+msgid "list: List channels on this network"
+msgstr ""
+
+msgid "whois &lt;nick&gt;: View nick's information"
+msgstr ""
+
+msgid "msg &lt;nick&gt; &lt;message&gt;: Send a private message to a user"
+msgstr ""
+
+msgid "query &lt;nick&gt; [&lt;message&gt;]: Send a private message to a user"
+msgstr ""
+
+msgid "motd: View the server's Message Of The Day"
+msgstr ""
+
+msgid "detach: Detach this session"
+msgstr ""
+
+msgid "quit [message]: Disconnect from the server, with an optional message"
+msgstr ""
+
+msgid "call &lt;command&gt;: Call any silc client command"
+msgstr ""
+
+msgid "kill &lt;nick&gt; [-pubkey|&lt;reason&gt;]: Kill nick"
+msgstr ""
+
+msgid "nick &lt;newnick&gt;: Change your nickname"
+msgstr ""
+
+msgid "whowas &lt;nick&gt;: View nick's information"
+msgstr ""
+
+msgid ""
+"cmode &lt;channel&gt; [+|-&lt;modes&gt;] [arguments]: Change or display "
+"channel modes"
+msgstr ""
+
+msgid ""
+"cumode &lt;channel&gt; +|-&lt;modes&gt; &lt;nick&gt;: Change nick's modes "
+"on channel"
+msgstr ""
+
+msgid "umode &lt;usermodes&gt;: Set your modes in the network"
+msgstr ""
+
+msgid "oper &lt;nick&gt; [-pubkey]: Get server operator privileges"
+msgstr ""
+
+msgid ""
+"invite &lt;channel&gt; [-|+]&lt;nick&gt;: invite nick or add/remove from "
+"channel invite list"
+msgstr ""
+
+msgid "kick &lt;channel&gt; &lt;nick&gt; [comment]: Kick client from channel"
+msgstr ""
+
+msgid "info [server]: View server administrative details"
+msgstr ""
+
+msgid "ban [&lt;channel&gt; +|-&lt;nick&gt;]: Ban client from channel"
+msgstr ""
+
+msgid "getkey &lt;nick|server&gt;: Retrieve client's or server's public key"
+msgstr ""
+
+msgid "stats: View server and network statistics"
+msgstr ""
+
+msgid "ping: Send PING to the connected server"
+msgstr ""
+
+msgid "users &lt;channel&gt;: List users in channel"
+msgstr ""
+
+msgid ""
+"names [-count|-ops|-halfops|-voices|-normal] &lt;channel(s)&gt;: List "
+"specific users in channel(s)"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. * summary
+msgid "SILC Protocol Plugin"
+msgstr ""
+
+#. * description
+msgid "Secure Internet Live Conferencing (SILC) Protocol"
+msgstr ""
+
+msgid "Network"
+msgstr "Mtandao"
+
+msgid "Public Key file"
+msgstr ""
+
+msgid "Private Key file"
+msgstr ""
+
+msgid "Cipher"
+msgstr ""
+
+msgid "HMAC"
+msgstr ""
+
+msgid "Use Perfect Forward Secrecy"
+msgstr ""
+
+#, fuzzy
+msgid "Public key authentication"
+msgstr "Ishara ya Uthibitisho Inayoulindwa"
+
+msgid "Block IMs without Key Exchange"
+msgstr ""
+
+msgid "Block messages to whiteboard"
+msgstr ""
+
+msgid "Automatically open whiteboard"
+msgstr ""
+
+msgid "Digitally sign and verify all messages"
+msgstr ""
+
+msgid "Creating SILC key pair..."
+msgstr ""
+
+msgid "Cannot create SILC key pair\n"
+msgstr ""
+
+#. Hint for translators: Please check the tabulator width here and in
+#. the next strings (short strings: 2 tabs, longer strings 1 tab,
+#. sum: 3 tabs or 24 characters)
+#, c-format
+msgid "Real Name: \t%s\n"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "User Name: \t%s\n"
+msgstr "Jina la Mtumiaji:"
+
+#, c-format
+msgid "Email: \t\t%s\n"
+msgstr ""
+
+#, c-format
+msgid "Host Name: \t%s\n"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Organization: \t%s\n"
+msgstr "Jumuiya: \"%S\""
+
+#, c-format
+msgid "Country: \t%s\n"
+msgstr ""
+
+#, c-format
+msgid "Algorithm: \t%s\n"
+msgstr ""
+
+#, c-format
+msgid "Key Length: \t%d bits\n"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Version: \t%s\n"
+msgstr "Toleo la 1"
+
+#, c-format
+msgid ""
+"Public Key Fingerprint:\n"
+"%s\n"
+"\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"Public Key Babbleprint:\n"
+"%s"
+msgstr ""
+
+#, fuzzy
+msgid "Public Key Information"
+msgstr "Fic&ha Taarifa"
+
+#, fuzzy
+msgid "Paging"
+msgstr "Inahifadhi"
+
+msgid "Video Conferencing"
+msgstr ""
+
+#, fuzzy
+msgid "Computer"
+msgstr "Imemaliza"
+
+msgid "PDA"
+msgstr ""
+
+msgid "Terminal"
+msgstr ""
+
+#, c-format
+msgid "%s sent message to whiteboard. Would you like to open the whiteboard?"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s sent message to whiteboard on %s channel. Would you like to open the "
+"whiteboard?"
+msgstr ""
+
+msgid "Whiteboard"
+msgstr ""
+
+msgid "No server statistics available"
+msgstr ""
+
+#, c-format
+msgid "Failure: Version mismatch, upgrade your client"
+msgstr ""
+
+#, c-format
+msgid "Failure: Remote does not trust/support your public key"
+msgstr ""
+
+#, c-format
+msgid "Failure: Remote does not support proposed KE group"
+msgstr ""
+
+#, c-format
+msgid "Failure: Remote does not support proposed cipher"
+msgstr ""
+
+#, c-format
+msgid "Failure: Remote does not support proposed PKCS"
+msgstr ""
+
+#, c-format
+msgid "Failure: Remote does not support proposed hash function"
+msgstr ""
+
+#, c-format
+msgid "Failure: Remote does not support proposed HMAC"
+msgstr ""
+
+#, c-format
+msgid "Failure: Incorrect signature"
+msgstr ""
+
+#, c-format
+msgid "Failure: Invalid cookie"
+msgstr ""
+
+#, c-format
+msgid "Failure: Authentication failed"
+msgstr ""
+
+msgid "Cannot initialize SILC Client connection"
+msgstr ""
+
+msgid "John Noname"
+msgstr ""
+
+#, c-format
+msgid "Could not load SILC key pair: %s"
+msgstr ""
+
+msgid "Could not write"
+msgstr ""
+
+#, fuzzy
+msgid "Could not connect"
+msgstr "\"Haikuweza kupakia: \""
+
+msgid "Unknown server response."
+msgstr ""
+
+msgid "Could not create listen socket"
+msgstr ""
+
+msgid "Could not resolve hostname"
+msgstr ""
+
+msgid "SIP usernames may not contain whitespaces or @ symbols"
+msgstr ""
+
+msgid "SIP connect server not specified"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+msgid "SIP/SIMPLE Protocol Plugin"
+msgstr ""
+
+#. * summary
+msgid "The SIP/SIMPLE Protocol Plugin"
+msgstr ""
+
+msgid "Publish status (note: everyone may watch you)"
+msgstr ""
+
+msgid "Use UDP"
+msgstr ""
+
+msgid "Use proxy"
+msgstr ""
+
+msgid "Proxy"
+msgstr ""
+
+msgid "Auth User"
+msgstr ""
+
+msgid "Auth Domain"
+msgstr ""
+
+#, c-format
+msgid "%s has sent you a webcam invite, which is not yet supported."
+msgstr ""
+
+msgid "Your SMS was not delivered"
+msgstr ""
+
+msgid "Your Yahoo! message did not get sent."
+msgstr ""
+
+#, c-format
+msgid "Yahoo! system message for %s:"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s has (retroactively) denied your request to add them to your list for the "
+"following reason: %s."
+msgstr ""
+
+#, c-format
+msgid "%s has (retroactively) denied your request to add them to your list."
+msgstr ""
+
+msgid "Add buddy rejected"
+msgstr ""
+
+#. Some error in the received stream
+msgid "Received invalid data"
+msgstr ""
+
+#. Password incorrect
+#, fuzzy
+msgid "Incorrect Password"
+msgstr "Nywila ya sasa hivi:"
+
+#. security lock from too many failed login attempts
+msgid "Account locked: Too many failed login attempts"
+msgstr ""
+
+#. the username does not exist
+#, fuzzy
+msgid "Username does not exist"
+msgstr "Faili %S halipo"
+
+#. indicates a lock of some description
+msgid "Account locked: See the debug log"
+msgstr ""
+
+#. username or password missing
+msgid "Username or password missing"
+msgstr ""
+
+#, c-format
+msgid ""
+"The Yahoo server has requested the use of an unrecognized authentication "
+"method. You will probably not be able to successfully sign on to Yahoo. "
+"Check %s for updates."
+msgstr ""
+
+msgid "Failed Yahoo! Authentication"
+msgstr ""
+
+#, c-format
+msgid ""
+"You have tried to ignore %s, but the user is on your buddy list. Clicking "
+"\"Yes\" will remove and ignore the buddy."
+msgstr ""
+
+msgid "Ignore buddy?"
+msgstr ""
+
+msgid "Your account is locked, please log in to the Yahoo! website."
+msgstr ""
+
+#, c-format
+msgid "Unknown error number %d. Logging into the Yahoo! website may fix this."
+msgstr ""
+
+#, c-format
+msgid "Could not add buddy %s to group %s to the server list on account %s."
+msgstr ""
+
+msgid "Could not add buddy to server list"
+msgstr ""
+
+#, c-format
+msgid "[ Audible %s/%s/%s.swf ] %s"
+msgstr ""
+
+#, fuzzy
+msgid "Received unexpected HTTP response from server."
+msgstr "Mwitiko wa bila kutegemea kutoka kwa seva"
+
+#, fuzzy
+msgid "Connection problem"
+msgstr "Unganisho Limeshindikana"
+
+#, c-format
+msgid ""
+"Lost connection with %s:\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Could not establish a connection with %s:\n"
+"%s"
+msgstr ""
+
+msgid "Not at Home"
+msgstr ""
+
+msgid "Not at Desk"
+msgstr ""
+
+msgid "Not in Office"
+msgstr ""
+
+#, fuzzy
+msgid "On Vacation"
+msgstr "Fungua &Mahali…"
+
+msgid "Stepped Out"
+msgstr ""
+
+msgid "Not on server list"
+msgstr ""
+
+#, fuzzy
+msgid "Appear Online"
+msgstr "Baki Mkondoni"
+
+msgid "Appear Permanently Offline"
+msgstr ""
+
+#, fuzzy
+msgid "Presence"
+msgstr "Mapendekezo"
+
+msgid "Appear Offline"
+msgstr ""
+
+msgid "Don't Appear Permanently Offline"
+msgstr ""
+
+msgid "Join in Chat"
+msgstr ""
+
+msgid "Initiate Conference"
+msgstr ""
+
+msgid "Presence Settings"
+msgstr ""
+
+msgid "Start Doodling"
+msgstr ""
+
+msgid "Activate which ID?"
+msgstr ""
+
+msgid "Join whom in chat?"
+msgstr ""
+
+msgid "Activate ID..."
+msgstr ""
+
+msgid "Join User in Chat..."
+msgstr ""
+
+#, fuzzy
+msgid "Open Inbox"
+msgstr "Fungua katika:"
+
+msgid "join &lt;room&gt;: Join a chat room on the Yahoo network"
+msgstr ""
+
+msgid "list: List rooms on the Yahoo network"
+msgstr ""
+
+msgid "doodle: Request user to start a Doodle session"
+msgstr ""
+
+msgid "Yahoo ID..."
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Yahoo Protocol Plugin"
+msgstr ""
+
+msgid "Yahoo Japan"
+msgstr ""
+
+msgid "Pager server"
+msgstr ""
+
+msgid "Japan Pager server"
+msgstr ""
+
+#, fuzzy
+msgid "Pager port"
+msgstr "Page Down"
+
+msgid "File transfer server"
+msgstr ""
+
+msgid "Japan file transfer server"
+msgstr ""
+
+msgid "File transfer port"
+msgstr ""
+
+msgid "Chat room locale"
+msgstr ""
+
+msgid "Ignore conference and chatroom invitations"
+msgstr ""
+
+msgid "Chat room list URL"
+msgstr ""
+
+msgid "Yahoo Chat server"
+msgstr ""
+
+msgid "Yahoo Chat port"
+msgstr ""
+
+#. Write a local message to this conversation showing that a request for a
+#. * Doodle session has been made
+#.
+msgid "Sent Doodle request."
+msgstr ""
+
+msgid "Unable to establish file descriptor."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to send you a group of %d files.\n"
+msgstr ""
+
+msgid "Yahoo! Japan Profile"
+msgstr ""
+
+#, fuzzy
+msgid "Yahoo! Profile"
+msgstr "Yahoo! Barua"
+
+msgid ""
+"Sorry, profiles marked as containing adult content are not supported at this "
+"time."
+msgstr ""
+
+msgid ""
+"If you wish to view this profile, you will need to visit this link in your "
+"web browser:"
+msgstr ""
+
+#, fuzzy
+msgid "Yahoo! ID"
+msgstr "Yahoo! Barua"
+
+msgid "Hobbies"
+msgstr ""
+
+msgid "Latest News"
+msgstr ""
+
+#, fuzzy
+msgid "Home Page"
+msgstr "Ukurasa wa &Nyumbani:"
+
+msgid "Cool Link 1"
+msgstr ""
+
+msgid "Cool Link 2"
+msgstr ""
+
+msgid "Cool Link 3"
+msgstr ""
+
+msgid "Last Update"
+msgstr "Sasisho la mara ya mwisho"
+
+msgid ""
+"This profile is in a language or format that is not supported at this time."
+msgstr ""
+
+msgid ""
+"Could not retrieve the user's profile. This most likely is a temporary "
+"server-side problem. Please try again later."
+msgstr ""
+
+msgid ""
+"Could not retrieve the user's profile. This most likely means that the user "
+"does not exist; however, Yahoo! sometimes does fail to find a user's "
+"profile. If you know that the user exists, please try again later."
+msgstr ""
+
+msgid "The user's profile is empty."
+msgstr ""
+
+#, c-format
+msgid "%s declined your conference invitation to room \"%s\" because \"%s\"."
+msgstr ""
+
+msgid "Invitation Rejected"
+msgstr ""
+
+#, fuzzy
+msgid "Failed to join chat"
+msgstr "Imeshindwa kuunganisha"
+
+#. -6
+#, fuzzy
+msgid "Unknown room"
+msgstr "Hitilafu isiyojulikana"
+
+#. -15
+msgid "Maybe the room is full"
+msgstr ""
+
+#. -35
+msgid "Not available"
+msgstr "Haipatikani"
+
+msgid ""
+"Unknown error. You may need to logout and wait five minutes before being "
+"able to rejoin a chatroom"
+msgstr ""
+
+#, c-format
+msgid "You are now chatting in %s."
+msgstr ""
+
+msgid "Failed to join buddy in chat"
+msgstr ""
+
+msgid "Maybe they're not in a chat?"
+msgstr ""
+
+msgid "Fetching the room list failed."
+msgstr ""
+
+msgid "Voices"
+msgstr ""
+
+msgid "Webcams"
+msgstr ""
+
+msgid "Unable to fetch room list."
+msgstr ""
+
+msgid "User Rooms"
+msgstr ""
+
+msgid "Connection problem with the YCHT server."
+msgstr ""
+
+#, c-format
+msgid ""
+"Lost connection with server\n"
+"%s"
+msgstr ""
+
+msgid ""
+"(There was an error converting this message.\t Check the 'Encoding' option "
+"in the Account Editor)"
+msgstr ""
+
+#, c-format
+msgid "Unable to send to chat %s,%s,%s"
+msgstr ""
+
+msgid "Hidden or not logged-in"
+msgstr ""
+
+#, c-format
+msgid "<br>At %s since %s"
+msgstr ""
+
+msgid "Anyone"
+msgstr ""
+
+msgid "_Class:"
+msgstr ""
+
+#, fuzzy
+msgid "_Instance:"
+msgstr "Imesakinishwa"
+
+msgid "_Recipient:"
+msgstr ""
+
+#, c-format
+msgid "Attempt to subscribe to %s,%s,%s failed"
+msgstr ""
+
+msgid "zlocate &lt;nick&gt;: Locate user"
+msgstr ""
+
+msgid "zl &lt;nick&gt;: Locate user"
+msgstr ""
+
+msgid "instance &lt;instance&gt;: Set the instance to be used on this class"
+msgstr ""
+
+msgid "inst &lt;instance&gt;: Set the instance to be used on this class"
+msgstr ""
+
+msgid "topic &lt;instance&gt;: Set the instance to be used on this class"
+msgstr ""
+
+msgid "sub &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Join a new chat"
+msgstr ""
+
+msgid ""
+"zi &lt;instance&gt;: Send a message to &lt;message,<i>instance</i>,*&gt;"
+msgstr ""
+
+msgid ""
+"zci &lt;class&gt; &lt;instance&gt;: Send a message to &lt;<i>class</i>,"
+"<i>instance</i>,*&gt;"
+msgstr ""
+
+msgid ""
+"zcir &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Send a message to &lt;"
+"<i>class</i>,<i>instance</i>,<i>recipient</i>&gt;"
+msgstr ""
+
+msgid ""
+"zir &lt;instance&gt; &lt;recipient&gt;: Send a message to &lt;MESSAGE,"
+"<i>instance</i>,<i>recipient</i>&gt;"
+msgstr ""
+
+msgid "zc &lt;class&gt;: Send a message to &lt;<i>class</i>,PERSONAL,*&gt;"
+msgstr ""
+
+#, fuzzy
+msgid "Resubscribe"
+msgstr "Jiunge"
+
+msgid "Retrieve subscriptions from server"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Zephyr Protocol Plugin"
+msgstr ""
+
+msgid "Use tzc"
+msgstr ""
+
+msgid "tzc command"
+msgstr ""
+
+msgid "Export to .anyone"
+msgstr ""
+
+msgid "Export to .zephyr.subs"
+msgstr ""
+
+msgid "Import from .anyone"
+msgstr ""
+
+msgid "Import from .zephyr.subs"
+msgstr ""
+
+#, fuzzy
+msgid "Realm"
+msgstr "Tayari"
+
+msgid "Exposure"
+msgstr ""
+
+#, c-format
+msgid ""
+"Unable to create socket:\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid "Unable to parse response from HTTP proxy: %s\n"
+msgstr ""
+
+#, c-format
+msgid "HTTP proxy connection error %d"
+msgstr ""
+
+#, c-format
+msgid "Access denied: HTTP proxy server forbids port %d tunneling."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Error resolving %s"
+msgstr "Hitilafu katika kuhifadhi %S"
+
+msgid "Could not resolve host name"
+msgstr ""
+
+#, c-format
+msgid "Requesting %s's attention..."
+msgstr ""
+
+#, c-format
+msgid "%s has requested your attention!"
+msgstr ""
+
+#. *
+#. * A wrapper for purple_request_action() that uses @c Yes and @c No buttons.
+#.
+#, fuzzy
+msgid "_Yes"
+msgstr "Ndiyo"
+
+#, fuzzy
+msgid "_No"
+msgstr "Hapana"
+
+#. *
+#. * A wrapper for purple_request_action() that uses Accept and Cancel buttons.
+#.
+msgid "_Accept"
+msgstr ""
+
+#. *
+#. * The default message to use when the user becomes auto-away.
+#.
+msgid "I'm not here right now"
+msgstr ""
+
+msgid "saved statuses"
+msgstr ""
+
+#, c-format
+msgid "%s is now known as %s.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s has invited %s to the chat room %s:\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid "%s has invited %s to the chat room %s\n"
+msgstr ""
+
+msgid "Accept chat invitation?"
+msgstr ""
+
+#. Shortcut
+msgid "Shortcut"
+msgstr ""
+
+msgid "The text-shortcut for the smiley"
+msgstr ""
+
+#. Stored Image
+#, fuzzy
+msgid "Stored Image"
+msgstr "Hifadhi Taswira"
+
+msgid "Stored Image. (that'll have to do for now)"
+msgstr ""
+
+#, fuzzy
+msgid "SSL Connection Failed"
+msgstr "Unganisho Limeshindikana"
+
+msgid "SSL Handshake Failed"
+msgstr ""
+
+msgid "SSL peer presented an invalid certificate"
+msgstr ""
+
+#, fuzzy
+msgid "Unknown SSL error"
+msgstr "Hitilafu isiyojulikana"
+
+#, fuzzy
+msgid "Unset"
+msgstr "Haitumiki"
+
+msgid "Do not disturb"
+msgstr ""
+
+msgid "Extended away"
+msgstr ""
+
+msgid "Listening to music"
+msgstr ""
+
+#, c-format
+msgid "%s (%s) changed status from %s to %s"
+msgstr ""
+
+#, c-format
+msgid "%s (%s) is now %s"
+msgstr ""
+
+#, c-format
+msgid "%s (%s) is no longer %s"
+msgstr ""
+
+#, c-format
+msgid "%s became idle"
+msgstr ""
+
+#, c-format
+msgid "%s became unidle"
+msgstr ""
+
+#, c-format
+msgid "+++ %s became idle"
+msgstr ""
+
+#, c-format
+msgid "+++ %s became unidle"
+msgstr ""
+
+#.
+#. * This string determines how some dates are displayed. The default
+#. * string "%x %X" shows the date then the time. Translators can
+#. * change this to "%X %x" if they want the time to be shown first,
+#. * followed by the date.
+#.
+#, fuzzy, c-format
+msgid "%x %X"
+msgstr "%S %S"
+
+msgid "Calculating..."
+msgstr ""
+
+#, fuzzy
+msgid "Unknown."
+msgstr "Isiyojulikana"
+
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] ""
+msgstr[1] ""
+
+#, c-format
+msgid "%d day"
+msgid_plural "%d days"
+msgstr[0] ""
+msgstr[1] ""
+
+#, c-format
+msgid "%s, %d hour"
+msgid_plural "%s, %d hours"
+msgstr[0] ""
+msgstr[1] ""
+
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] ""
+msgstr[1] ""
+
+#, c-format
+msgid "%s, %d minute"
+msgid_plural "%s, %d minutes"
+msgstr[0] ""
+msgstr[1] ""
+
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] ""
+msgstr[1] ""
+
+#, c-format
+msgid "Could not open %s: Redirected too many times"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Unable to connect to %s"
+msgstr "Haikuweza kuunganishwa"
+
+#, c-format
+msgid "Error reading from %s: response too long (%d bytes limit)"
+msgstr ""
+
+#, c-format
+msgid ""
+"Unable to allocate enough memory to hold the contents from %s. The web "
+"server may be trying something malicious."
+msgstr ""
+
+#, c-format
+msgid "Error reading from %s: %s"
+msgstr ""
+
+#, c-format
+msgid "Error writing to %s: %s"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Unable to connect to %s: %s"
+msgstr "Haikuweza kuunganishwa"
+
+#, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+
+#, c-format
+msgid " - %s"
+msgstr ""
+
+#, fuzzy, c-format
+msgid " (%s)"
+msgstr "(%S)"
+
+#. 10053
+#, c-format
+msgid "Connection interrupted by other software on your computer."
+msgstr ""
+
+#. 10054
+#, fuzzy, c-format
+msgid "Remote host closed connection."
+msgstr "Mwenzi SSL imefunga uunganisho huu"
+
+#. 10060
+#, fuzzy, c-format
+msgid "Connection timed out."
+msgstr "Muunganiko umepita muda"
+
+#. 10061
+#, fuzzy, c-format
+msgid "Connection refused."
+msgstr "Muunganisho ulikataliwa"
+
+#. 10048
+#, c-format
+msgid "Address already in use."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Error Reading %s"
+msgstr "Hitilafu wakati natengeneza %S"
+
+#, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+
+#, fuzzy
+msgid "Internet Messenger"
+msgstr "Internet Explorer"
+
+msgid "Pidgin Internet Messenger"
+msgstr ""
+
+msgid "Send instant messages over multiple protocols"
+msgstr ""
+
+#, fuzzy
+msgid "Orientation"
+msgstr "Mkao:"
+
+msgid "The orientation of the tray."
+msgstr ""
+
+#. Build the login options frame.
+msgid "Login Options"
+msgstr ""
+
+#, fuzzy
+msgid "Pro_tocol:"
+msgstr "Itifaki"
+
+#, fuzzy
+msgid "_Username:"
+msgstr "Jina la mtumiaji"
+
+#, fuzzy
+msgid "Remember pass_word"
+msgstr "Ingiza tena nywila:"
+
+#. Build the user options frame.
+#, fuzzy
+msgid "User Options"
+msgstr "Machaguo ya Mtandao"
+
+msgid "_Local alias:"
+msgstr ""
+
+#, fuzzy
+msgid "New _mail notifications"
+msgstr "Arifisho la Jumla"
+
+#. Buddy icon
+msgid "Use this buddy _icon for this account:"
+msgstr ""
+
+#, fuzzy
+msgid "_Advanced"
+msgstr "Pevu"
+
+#, fuzzy
+msgid "Use GNOME Proxy Settings"
+msgstr "&Tumia vipimo vya wakala vya mfumo"
+
+#, fuzzy
+msgid "Use Global Proxy Settings"
+msgstr "&Tumia vipimo vya wakala vya mfumo"
+
+#, fuzzy
+msgid "No Proxy"
+msgstr "Hakuna waka&la"
+
+msgid "HTTP"
+msgstr ""
+
+#, fuzzy
+msgid "SOCKS 4"
+msgstr "SOC&KS v4"
+
+#, fuzzy
+msgid "SOCKS 5"
+msgstr "SOCKS &v5"
+
+msgid "Use Environmental Settings"
+msgstr ""
+
+#. This is an easter egg.
+#. It means one of two things, both intended as humourus:
+#. A) your network is really slow and you have nothing better to do than
+#. look at butterflies.
+#. B)You are looking really closely at something that shouldn't matter.
+msgid "If you look real closely"
+msgstr ""
+
+#. This is an easter egg. See the comment on the previous line in the source.
+msgid "you can see the butterflies mating"
+msgstr ""
+
+msgid "Proxy _type:"
+msgstr ""
+
+#, fuzzy
+msgid "_Host:"
+msgstr "Mwenyeji:"
+
+#, fuzzy
+msgid "_Port:"
+msgstr "Lango:"
+
+#, fuzzy
+msgid "Pa_ssword:"
+msgstr "Nywila:"
+
+msgid "Unable to save new account"
+msgstr ""
+
+msgid "An account already exists with the specified criteria."
+msgstr ""
+
+msgid "Add Account"
+msgstr ""
+
+msgid "_Basic"
+msgstr ""
+
+msgid "Create _this new account on the server"
+msgstr ""
+
+msgid "_Proxy"
+msgstr ""
+
+msgid "Enabled"
+msgstr "Imeamshwa"
+
+#, fuzzy
+msgid "Protocol"
+msgstr "Itifaki"
+
+#, c-format
+msgid ""
+"<span size='larger' weight='bold'>Welcome to %s!</span>\n"
+"\n"
+"You have no IM accounts configured. To start connecting with %s press the "
+"<b>Add...</b> button below and configure your first account. If you want %s "
+"to connect to multiple IM accounts, press <b>Add...</b> again to configure "
+"them all.\n"
+"\n"
+"You can come back to this window to add, edit, or remove accounts from "
+"<b>Accounts->Manage Accounts</b> in the Buddy List window"
+msgstr ""
+
+#, 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] ""
+
+msgid ""
+"Merging these contacts will cause them to share a single entry on the buddy "
+"list and use a single conversation window. You can separate them again by "
+"choosing 'Expand' from the contact's context menu"
+msgstr ""
+
+msgid "Please update the necessary fields."
+msgstr ""
+
+#, fuzzy
+msgid "A_ccount"
+msgstr "hesabu ya matembeleo"
+
+msgid ""
+"Please enter the appropriate information about the chat you would like to "
+"join.\n"
+msgstr ""
+
+msgid "Room _List"
+msgstr ""
+
+#, fuzzy
+msgid "_Block"
+msgstr "Zuia"
+
+msgid "Un_block"
+msgstr ""
+
+#, fuzzy
+msgid "Move to"
+msgstr "Sogeza kwenda:"
+
+msgid "Get _Info"
+msgstr ""
+
+msgid "I_M"
+msgstr ""
+
+msgid "_Audio Call"
+msgstr ""
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+msgid "_Video Call"
+msgstr ""
+
+msgid "_Send File..."
+msgstr ""
+
+msgid "Add Buddy _Pounce..."
+msgstr ""
+
+msgid "View _Log"
+msgstr ""
+
+msgid "Hide when offline"
+msgstr ""
+
+msgid "_Alias..."
+msgstr ""
+
+#, fuzzy
+msgid "_Remove"
+msgstr "Ondoa"
+
+msgid "Set Custom Icon"
+msgstr ""
+
+msgid "Remove Custom Icon"
+msgstr ""
+
+msgid "Add _Buddy..."
+msgstr ""
+
+msgid "Add C_hat..."
+msgstr ""
+
+#, fuzzy
+msgid "_Delete Group"
+msgstr "Futa mwenyeji"
+
+#, fuzzy
+msgid "_Rename"
+msgstr "&Badili jina"
+
+#. join button
+msgid "_Join"
+msgstr ""
+
+msgid "Auto-Join"
+msgstr ""
+
+#, fuzzy
+msgid "Persistent"
+msgstr "Kipersia"
+
+msgid "_Edit Settings..."
+msgstr ""
+
+#, fuzzy
+msgid "_Collapse"
+msgstr "Kunja"
+
+#, fuzzy
+msgid "_Expand"
+msgstr "Tanua"
+
+msgid "/Tools/Mute Sounds"
+msgstr ""
+
+msgid ""
+"You are not currently signed on with an account that can add that buddy."
+msgstr ""
+
+#. I don't believe this can happen currently, I think
+#. * everything that calls this function checks for one of the
+#. * above node types first.
+#, fuzzy
+msgid "Unknown node type"
+msgstr "Utambulisho usiojulikana"
+
+#. Buddies menu
+msgid "/_Buddies"
+msgstr ""
+
+msgid "/Buddies/New Instant _Message..."
+msgstr ""
+
+msgid "/Buddies/Join a _Chat..."
+msgstr ""
+
+msgid "/Buddies/Get User _Info..."
+msgstr ""
+
+msgid "/Buddies/View User _Log..."
+msgstr ""
+
+msgid "/Buddies/Sh_ow"
+msgstr ""
+
+msgid "/Buddies/Show/_Offline Buddies"
+msgstr ""
+
+msgid "/Buddies/Show/_Empty Groups"
+msgstr ""
+
+msgid "/Buddies/Show/Buddy _Details"
+msgstr ""
+
+msgid "/Buddies/Show/Idle _Times"
+msgstr ""
+
+msgid "/Buddies/Show/_Protocol Icons"
+msgstr ""
+
+msgid "/Buddies/_Sort Buddies"
+msgstr ""
+
+msgid "/Buddies/_Add Buddy..."
+msgstr ""
+
+msgid "/Buddies/Add C_hat..."
+msgstr ""
+
+msgid "/Buddies/Add _Group..."
+msgstr ""
+
+msgid "/Buddies/_Quit"
+msgstr ""
+
+#. Accounts menu
+msgid "/_Accounts"
+msgstr ""
+
+msgid "/Accounts/Manage Accounts"
+msgstr ""
+
+#. Tools
+#, fuzzy
+msgid "/_Tools"
+msgstr "&Zana"
+
+msgid "/Tools/Buddy _Pounces"
+msgstr ""
+
+#, fuzzy
+msgid "/Tools/_Certificates"
+msgstr "Ithibati Zako"
+
+msgid "/Tools/Custom Smile_ys"
+msgstr ""
+
+msgid "/Tools/Plu_gins"
+msgstr ""
+
+msgid "/Tools/Pr_eferences"
+msgstr ""
+
+msgid "/Tools/Pr_ivacy"
+msgstr ""
+
+msgid "/Tools/_File Transfers"
+msgstr ""
+
+msgid "/Tools/R_oom List"
+msgstr ""
+
+msgid "/Tools/System _Log"
+msgstr ""
+
+msgid "/Tools/Mute _Sounds"
+msgstr ""
+
+#. Help
+#, fuzzy
+msgid "/_Help"
+msgstr "Msaada"
+
+msgid "/Help/Online _Help"
+msgstr ""
+
+msgid "/Help/_Debug Window"
+msgstr ""
+
+msgid "/Help/_About"
+msgstr ""
+
+#, c-format
+msgid "<b>Account:</b> %s"
+msgstr ""
+
+#, c-format
+msgid ""
+"\n"
+"<b>Occupants:</b> %d"
+msgstr ""
+
+#, c-format
+msgid ""
+"\n"
+"<b>Topic:</b> %s"
+msgstr ""
+
+#, fuzzy
+msgid "(no topic set)"
+msgstr "(haijawekwa)"
+
+msgid "Buddy Alias"
+msgstr ""
+
+msgid "Logged In"
+msgstr "Ingia"
+
+msgid "Last Seen"
+msgstr ""
+
+msgid "Spooky"
+msgstr ""
+
+msgid "Awesome"
+msgstr ""
+
+msgid "Rockin'"
+msgstr ""
+
+msgid "Total Buddies"
+msgstr ""
+
+#, c-format
+msgid "Idle %dd %dh %02dm"
+msgstr ""
+
+#, c-format
+msgid "Idle %dh %02dm"
+msgstr ""
+
+#, c-format
+msgid "Idle %dm"
+msgstr ""
+
+msgid "/Buddies/New Instant Message..."
+msgstr ""
+
+msgid "/Buddies/Join a Chat..."
+msgstr ""
+
+msgid "/Buddies/Get User Info..."
+msgstr ""
+
+msgid "/Buddies/Add Buddy..."
+msgstr ""
+
+msgid "/Buddies/Add Chat..."
+msgstr ""
+
+msgid "/Buddies/Add Group..."
+msgstr ""
+
+msgid "/Tools/Privacy"
+msgstr ""
+
+msgid "/Tools/Room List"
+msgstr ""
+
+#, c-format
+msgid "%d unread message from %s\n"
+msgid_plural "%d unread messages from %s\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#, fuzzy
+msgid "Manually"
+msgstr "Januari"
+
+msgid "By status"
+msgstr ""
+
+msgid "By recent log activity"
+msgstr ""
+
+#, c-format
+msgid "%s disconnected"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%s disabled"
+msgstr "Imelemazwa"
+
+msgid "Reconnect"
+msgstr ""
+
+msgid "Re-enable"
+msgstr ""
+
+#, fuzzy
+msgid "SSL FAQs"
+msgstr "SSL CA"
+
+#, fuzzy
+msgid "Welcome back!"
+msgstr "Karibu Wanadamu!"
+
+#, c-format
+msgid "%d account was disabled because you signed on from another location:"
+msgid_plural ""
+"%d accounts were disabled because you signed on from another location:"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "<b>Username:</b>"
+msgstr ""
+
+msgid "<b>Password:</b>"
+msgstr ""
+
+msgid "_Login"
+msgstr ""
+
+msgid "/Accounts"
+msgstr ""
+
+#. Translators: Please maintain the use of -> and <- to refer to menu heirarchy
+#, c-format
+msgid ""
+"<span weight='bold' size='larger'>Welcome to %s!</span>\n"
+"\n"
+"You have no accounts enabled. Enable your IM accounts from the <b>Accounts</"
+"b> window at <b>Accounts->Manage Accounts</b>. 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
+#.
+msgid "/Buddies/Show/Offline Buddies"
+msgstr ""
+
+msgid "/Buddies/Show/Empty Groups"
+msgstr ""
+
+msgid "/Buddies/Show/Buddy Details"
+msgstr ""
+
+msgid "/Buddies/Show/Idle Times"
+msgstr ""
+
+msgid "/Buddies/Show/Protocol Icons"
+msgstr ""
+
+msgid "Add a buddy.\n"
+msgstr ""
+
+msgid "Buddy's _username:"
+msgstr ""
+
+msgid "(Optional) A_lias:"
+msgstr ""
+
+msgid "Add buddy to _group:"
+msgstr ""
+
+msgid "This protocol does not support chat rooms."
+msgstr ""
+
+msgid ""
+"You are not currently signed on with any protocols that have the ability to "
+"chat."
+msgstr ""
+
+msgid ""
+"Please enter an alias, and the appropriate information about the chat you "
+"would like to add to your buddy list.\n"
+msgstr ""
+
+msgid "A_lias:"
+msgstr ""
+
+msgid "_Group:"
+msgstr ""
+
+msgid "Auto_join when account becomes online."
+msgstr ""
+
+msgid "_Remain in chat after window is closed."
+msgstr ""
+
+msgid "Please enter the name of the group to be added."
+msgstr ""
+
+msgid "Enable Account"
+msgstr ""
+
+msgid "<PurpleMain>/Accounts/Enable Account"
+msgstr ""
+
+msgid "<PurpleMain>/Accounts/"
+msgstr ""
+
+#, fuzzy
+msgid "_Edit Account"
+msgstr "hesabu ya matembeleo"
+
+#, fuzzy
+msgid "No actions available"
+msgstr "Haipatikani"
+
+#, fuzzy
+msgid "_Disable"
+msgstr "Lemaza"
+
+#, fuzzy
+msgid "/Tools"
+msgstr "&Zana"
+
+msgid "/Buddies/Sort Buddies"
+msgstr ""
+
+#. Widget creation function
+#, fuzzy
+msgid "SSL Servers"
+msgstr "SSL Seva"
+
+msgid "Unknown command."
+msgstr ""
+
+msgid "That buddy is not on the same protocol as this chat."
+msgstr ""
+
+msgid ""
+"You are not currently signed on with an account that can invite that buddy."
+msgstr ""
+
+msgid "Invite Buddy Into Chat Room"
+msgstr ""
+
+msgid "_Buddy:"
+msgstr ""
+
+#, fuzzy
+msgid "_Message:"
+msgstr "Ujumbe"
+
+#, c-format
+msgid "<h1>Conversation with %s</h1>\n"
+msgstr ""
+
+msgid "Save Conversation"
+msgstr ""
+
+msgid "Find"
+msgstr "Tafuta"
+
+msgid "_Search for:"
+msgstr ""
+
+msgid "Un-Ignore"
+msgstr ""
+
+msgid "Ignore"
+msgstr ""
+
+msgid "Get Away Message"
+msgstr ""
+
+#, fuzzy
+msgid "Last said"
+msgstr "Ukurasa wa mwisho"
+
+msgid "Unable to save icon file to disk."
+msgstr ""
+
+#, fuzzy
+msgid "Save Icon"
+msgstr "Hifadhi Taswira"
+
+#, fuzzy
+msgid "Animate"
+msgstr "Fanya hai"
+
+msgid "Hide Icon"
+msgstr ""
+
+msgid "Save Icon As..."
+msgstr ""
+
+msgid "Set Custom Icon..."
+msgstr ""
+
+msgid "Change Size"
+msgstr ""
+
+msgid "Show All"
+msgstr "Onyesha Zote"
+
+#. Conversation menu
+msgid "/_Conversation"
+msgstr ""
+
+msgid "/Conversation/New Instant _Message..."
+msgstr ""
+
+msgid "/Conversation/_Find..."
+msgstr ""
+
+msgid "/Conversation/View _Log"
+msgstr ""
+
+msgid "/Conversation/_Save As..."
+msgstr ""
+
+msgid "/Conversation/Clea_r Scrollback"
+msgstr ""
+
+msgid "/Conversation/M_edia"
+msgstr ""
+
+msgid "/Conversation/Media/_Audio Call"
+msgstr ""
+
+msgid "/Conversation/Media/_Video Call"
+msgstr ""
+
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr ""
+
+msgid "/Conversation/Se_nd File..."
+msgstr ""
+
+msgid "/Conversation/Add Buddy _Pounce..."
+msgstr ""
+
+msgid "/Conversation/_Get Info"
+msgstr ""
+
+msgid "/Conversation/In_vite..."
+msgstr ""
+
+msgid "/Conversation/M_ore"
+msgstr ""
+
+msgid "/Conversation/Al_ias..."
+msgstr ""
+
+msgid "/Conversation/_Block..."
+msgstr ""
+
+msgid "/Conversation/_Unblock..."
+msgstr ""
+
+msgid "/Conversation/_Add..."
+msgstr ""
+
+msgid "/Conversation/_Remove..."
+msgstr ""
+
+msgid "/Conversation/Insert Lin_k..."
+msgstr ""
+
+msgid "/Conversation/Insert Imag_e..."
+msgstr ""
+
+msgid "/Conversation/_Close"
+msgstr ""
+
+#. Options
+#, fuzzy
+msgid "/_Options"
+msgstr "Machaguo"
+
+msgid "/Options/Enable _Logging"
+msgstr ""
+
+msgid "/Options/Enable _Sounds"
+msgstr ""
+
+msgid "/Options/Show Formatting _Toolbars"
+msgstr ""
+
+msgid "/Options/Show Ti_mestamps"
+msgstr ""
+
+msgid "/Conversation/More"
+msgstr ""
+
+#, fuzzy
+msgid "/Options"
+msgstr "Machaguo"
+
+#. 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.
+#, fuzzy
+msgid "/Conversation"
+msgstr "Unganisho"
+
+msgid "/Conversation/View Log"
+msgstr ""
+
+msgid "/Conversation/Media/Audio Call"
+msgstr ""
+
+msgid "/Conversation/Media/Video Call"
+msgstr ""
+
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr ""
+
+msgid "/Conversation/Send File..."
+msgstr ""
+
+msgid "/Conversation/Add Buddy Pounce..."
+msgstr ""
+
+msgid "/Conversation/Get Info"
+msgstr ""
+
+msgid "/Conversation/Invite..."
+msgstr ""
+
+msgid "/Conversation/Alias..."
+msgstr ""
+
+msgid "/Conversation/Block..."
+msgstr ""
+
+msgid "/Conversation/Unblock..."
+msgstr ""
+
+msgid "/Conversation/Add..."
+msgstr ""
+
+msgid "/Conversation/Remove..."
+msgstr ""
+
+msgid "/Conversation/Insert Link..."
+msgstr ""
+
+msgid "/Conversation/Insert Image..."
+msgstr ""
+
+msgid "/Options/Enable Logging"
+msgstr ""
+
+msgid "/Options/Enable Sounds"
+msgstr ""
+
+msgid "/Options/Show Formatting Toolbars"
+msgstr ""
+
+msgid "/Options/Show Timestamps"
+msgstr ""
+
+msgid "User is typing..."
+msgstr ""
+
+#, c-format
+msgid ""
+"\n"
+"%s has stopped typing"
+msgstr ""
+
+#. Build the Send To menu
+#, fuzzy
+msgid "S_end To"
+msgstr "Tuma kwa:"
+
+msgid "_Send"
+msgstr ""
+
+#. Setup the label telling how many people are in the room.
+msgid "0 people in room"
+msgstr ""
+
+#, c-format
+msgid "%d person in room"
+msgid_plural "%d people in room"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Typing"
+msgstr ""
+
+msgid "Stopped Typing"
+msgstr ""
+
+msgid "Nick Said"
+msgstr ""
+
+#, fuzzy
+msgid "Unread Messages"
+msgstr "Jumbe za tahadhari"
+
+msgid "New Event"
+msgstr ""
+
+msgid "clear: Clears all conversation scrollbacks."
+msgstr ""
+
+msgid "Confirm close"
+msgstr "Thibitisha kufunga"
+
+msgid "You have unread messages. Are you sure you want to close the window?"
+msgstr ""
+
+#, fuzzy
+msgid "Close other tabs"
+msgstr "Funga Tab&o Nyingine"
+
+#, fuzzy
+msgid "Close all tabs"
+msgstr "Funga tabo"
+
+msgid "Detach this tab"
+msgstr ""
+
+#, fuzzy
+msgid "Close this tab"
+msgstr "Funga ujumbe huu"
+
+msgid "Close conversation"
+msgstr ""
+
+msgid "Last created window"
+msgstr ""
+
+msgid "Separate IM and Chat windows"
+msgstr ""
+
+msgid "New window"
+msgstr "Dirisha jipya"
+
+msgid "By group"
+msgstr ""
+
+msgid "By account"
+msgstr ""
+
+msgid "Save Debug Log"
+msgstr ""
+
+msgid "Invert"
+msgstr ""
+
+#, fuzzy
+msgid "Highlight matches"
+msgstr "&Angaza yote"
+
+msgid "_Icon Only"
+msgstr ""
+
+#, fuzzy
+msgid "_Text Only"
+msgstr "Kuza Saizi ya Maandishi &Tu"
+
+msgid "_Both Icon & Text"
+msgstr ""
+
+#, fuzzy
+msgid "Filter"
+msgstr "Ch&uja:"
+
+msgid "Right click for more options."
+msgstr ""
+
+msgid "Level "
+msgstr ""
+
+msgid "Select the debug filter level."
+msgstr ""
+
+#, fuzzy
+msgid "All"
+msgstr "&Yote"
+
+msgid "Misc"
+msgstr ""
+
+#, fuzzy
+msgid "Warning"
+msgstr "Tahadhari:"
+
+#, fuzzy
+msgid "Error "
+msgstr "Hitikafu "
+
+#, fuzzy
+msgid "Fatal Error"
+msgstr "Hitilafu katika kusakinisha"
+
+msgid "bug master"
+msgstr ""
+
+msgid "artist"
+msgstr ""
+
+#. feel free to not translate this
+msgid "Ka-Hing Cheung"
+msgstr ""
+
+msgid "voice and video"
+msgstr ""
+
+msgid "support"
+msgstr ""
+
+msgid "webmaster"
+msgstr ""
+
+msgid "Senior Contributor/QA"
+msgstr ""
+
+msgid "win32 port"
+msgstr ""
+
+msgid "maintainer"
+msgstr ""
+
+msgid "libfaim maintainer"
+msgstr ""
+
+#. If "lazy bum" translates literally into a serious insult, use something else or omit it.
+msgid "hacker and designated driver [lazy bum]"
+msgstr ""
+
+msgid "support/QA"
+msgstr ""
+
+msgid "XMPP"
+msgstr ""
+
+msgid "original author"
+msgstr ""
+
+msgid "lead developer"
+msgstr ""
+
+msgid "Afrikaans"
+msgstr "Kiafriakansi"
+
+msgid "Arabic"
+msgstr "Kiarabu"
+
+#, fuzzy
+msgid "Belarusian Latin"
+msgstr "Kibelarusi"
+
+msgid "Bulgarian"
+msgstr "Kibulgaria"
+
+msgid "Bengali"
+msgstr "Kibengalia"
+
+msgid "Bosnian"
+msgstr "Kibosnia"
+
+msgid "Catalan"
+msgstr "Kicatala"
+
+msgid "Valencian-Catalan"
+msgstr ""
+
+msgid "Czech"
+msgstr "Kiczech"
+
+msgid "Danish"
+msgstr "Kidanishi"
+
+msgid "German"
+msgstr "Kijerumani"
+
+msgid "Dzongkha"
+msgstr "Kidzongkha"
+
+msgid "Greek"
+msgstr "Kigiriki"
+
+msgid "Australian English"
+msgstr ""
+
+msgid "Canadian English"
+msgstr ""
+
+msgid "British English"
+msgstr ""
+
+msgid "Esperanto"
+msgstr "Kiesperanto"
+
+msgid "Spanish"
+msgstr "Kihispania"
+
+msgid "Estonian"
+msgstr "Kiestonia"
+
+msgid "Euskera(Basque)"
+msgstr ""
+
+msgid "Persian"
+msgstr "Kipersia"
+
+msgid "Finnish"
+msgstr "Kifinishi"
+
+msgid "French"
+msgstr "Kifaransa"
+
+msgid "Irish"
+msgstr "Kiirishi"
+
+msgid "Galician"
+msgstr "Kigalacy"
+
+msgid "Gujarati"
+msgstr "Kigujarati"
+
+msgid "Gujarati Language Team"
+msgstr ""
+
+msgid "Hebrew"
+msgstr "Kiebrania"
+
+msgid "Hindi"
+msgstr "Kihindi"
+
+msgid "Hungarian"
+msgstr "Kihungaria"
+
+msgid "Indonesian"
+msgstr "Kindonesia"
+
+msgid "Italian"
+msgstr "Kiitalia"
+
+msgid "Japanese"
+msgstr "Kijapani"
+
+msgid "Georgian"
+msgstr "Kigeorgia"
+
+msgid "Ubuntu Georgian Translators"
+msgstr ""
+
+msgid "Khmer"
+msgstr "Kihemeri"
+
+msgid "Kannada"
+msgstr "Kikanada"
+
+msgid "Kannada Translation team"
+msgstr ""
+
+msgid "Korean"
+msgstr "Kikorea"
+
+msgid "Kurdish"
+msgstr "Kikurdi"
+
+msgid "Lao"
+msgstr "Lao"
+
+msgid "Lithuanian"
+msgstr "Kilithuania"
+
+msgid "Macedonian"
+msgstr "Kimacedonia"
+
+msgid "Mongolian"
+msgstr "Kimongolia"
+
+msgid "Bokmål Norwegian"
+msgstr ""
+
+msgid "Nepali"
+msgstr "Kinepali"
+
+msgid "Dutch, Flemish"
+msgstr ""
+
+msgid "Norwegian Nynorsk"
+msgstr "Kinynorsk cha Norway"
+
+msgid "Occitan"
+msgstr "Kioccita"
+
+msgid "Punjabi"
+msgstr "Kipunjabi"
+
+msgid "Polish"
+msgstr "Kipolishi"
+
+msgid "Portuguese"
+msgstr "Kireno"
+
+msgid "Portuguese-Brazil"
+msgstr ""
+
+msgid "Pashto"
+msgstr "Kipashto"
+
+msgid "Romanian"
+msgstr "Kiromania"
+
+msgid "Russian"
+msgstr "Kirusi"
+
+msgid "Slovak"
+msgstr "Kislovaki"
+
+msgid "Slovenian"
+msgstr "Kislovenia"
+
+msgid "Albanian"
+msgstr "Kialbania"
+
+msgid "Serbian"
+msgstr "Kiserbia"
+
+msgid "Sinhala"
+msgstr "Kisinihala"
+
+msgid "Swedish"
+msgstr "Kiswidi"
+
+msgid "Swahili Tanzania"
+msgstr ""
+
+msgid "Tamil"
+msgstr "Kitamilia"
+
+msgid "Telugu"
+msgstr "Kitelugu"
+
+msgid "Thai"
+msgstr "Kitai"
+
+msgid "Turkish"
+msgstr "Kituruki"
+
+msgid "Urdu"
+msgstr "Kiurdu"
+
+msgid "Vietnamese"
+msgstr "Kivietnamu"
+
+msgid "T.M.Thanh and the Gnome-Vi Team"
+msgstr ""
+
+msgid "Simplified Chinese"
+msgstr "Kichina Rahisi"
+
+msgid "Hong Kong Chinese"
+msgstr ""
+
+msgid "Traditional Chinese"
+msgstr "Kichina Asili"
+
+msgid "Amharic"
+msgstr "Kiamharic"
+
+#, fuzzy, c-format
+msgid "About %s"
+msgstr "Kuhusu %S"
+
+#, c-format
+msgid ""
+"%s is a graphical modular messaging client based on libpurple which is "
+"capable of connecting to AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC, SIP/SIMPLE, "
+"Novell GroupWise, Lotus Sametime, Bonjour, Zephyr, MySpaceIM, Gadu-Gadu, and "
+"QQ all at once. It is written using GTK+.<BR><BR>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."
+"<BR><BR>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr ""
+
+#, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
+msgstr ""
+
+msgid "Current Developers"
+msgstr ""
+
+msgid "Crazy Patch Writers"
+msgstr ""
+
+msgid "Retired Developers"
+msgstr ""
+
+msgid "Retired Crazy Patch Writers"
+msgstr ""
+
+msgid "Current Translators"
+msgstr ""
+
+#, fuzzy
+msgid "Past Translators"
+msgstr "Watafsiri:"
+
+#, fuzzy
+msgid "Debugging Information"
+msgstr "Inachunguza taarifa"
+
+#, fuzzy
+msgid "_Name"
+msgstr "Jina"
+
+msgid "_Account"
+msgstr ""
+
+msgid "Get User Info"
+msgstr ""
+
+msgid ""
+"Please enter the username or alias of the person whose info you would like "
+"to view."
+msgstr ""
+
+msgid "View User Log"
+msgstr ""
+
+msgid "Alias Contact"
+msgstr ""
+
+msgid "Enter an alias for this contact."
+msgstr ""
+
+#, c-format
+msgid "Enter an alias for %s."
+msgstr ""
+
+msgid "Alias Buddy"
+msgstr ""
+
+msgid "Alias Chat"
+msgstr ""
+
+msgid "Enter an alias for this chat."
+msgstr ""
+
+#, c-format
+msgid ""
+"You are about to remove the contact containing %s and %d other buddy from "
+"your buddy list. Do you want to continue?"
+msgid_plural ""
+"You are about to remove the contact containing %s and %d other buddies from "
+"your buddy list. Do you want to continue?"
+msgstr[0] ""
+msgstr[1] ""
+
+#, fuzzy
+msgid "Remove Contact"
+msgstr "Ondoa Kuki"
+
+#, fuzzy
+msgid "_Remove Contact"
+msgstr "Ondoa Kuki"
+
+#, c-format
+msgid ""
+"You are about to merge the group called %s into the group called %s. Do you "
+"want to continue?"
+msgstr ""
+
+msgid "Merge Groups"
+msgstr ""
+
+msgid "_Merge Groups"
+msgstr ""
+
+#, c-format
+msgid ""
+"You are about to remove the group %s and all its members from your buddy "
+"list. Do you want to continue?"
+msgstr ""
+
+#, fuzzy
+msgid "Remove Group"
+msgstr "Ondoa Kuki"
+
+msgid "_Remove Group"
+msgstr ""
+
+#, fuzzy, c-format
+msgid ""
+"You are about to remove %s from your buddy list. Do you want to continue?"
+msgstr "Unakaribia kufunga tabo ya %S. Unauhakika unataka kuendelea?"
+
+msgid "Remove Buddy"
+msgstr ""
+
+msgid "_Remove Buddy"
+msgstr ""
+
+#, fuzzy, c-format
+msgid ""
+"You are about to remove the chat %s from your buddy list. Do you want to "
+"continue?"
+msgstr "Unakaribia kufunga tabo ya %S. Unauhakika unataka kuendelea?"
+
+#, fuzzy
+msgid "Remove Chat"
+msgstr "Ondoa &All"
+
+msgid "_Remove Chat"
+msgstr ""
+
+msgid "Right-click for more unread messages...\n"
+msgstr ""
+
+msgid "_Change Status"
+msgstr ""
+
+msgid "Show Buddy _List"
+msgstr ""
+
+msgid "_Unread Messages"
+msgstr ""
+
+msgid "New _Message..."
+msgstr ""
+
+msgid "_Accounts"
+msgstr ""
+
+#, fuzzy
+msgid "Plu_gins"
+msgstr "Programu tumizi"
+
+#, fuzzy
+msgid "Pr_eferences"
+msgstr "Mapendekezo"
+
+msgid "Mute _Sounds"
+msgstr ""
+
+msgid "_Blink on New Message"
+msgstr ""
+
+#, fuzzy
+msgid "_Quit"
+msgstr "&Funga"
+
+#, fuzzy
+msgid "Not started"
+msgstr "Haujaanza"
+
+msgid "<b>Receiving As:</b>"
+msgstr ""
+
+msgid "<b>Receiving From:</b>"
+msgstr ""
+
+msgid "<b>Sending To:</b>"
+msgstr ""
+
+msgid "<b>Sending As:</b>"
+msgstr ""
+
+msgid "There is no application configured to open this type of file."
+msgstr ""
+
+msgid "An error occurred while opening the file."
+msgstr ""
+
+#, c-format
+msgid "Error launching %s: %s"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Error running %s"
+msgstr "Hitilafu katika kufungua %S"
+
+#, c-format
+msgid "Process returned error code %d"
+msgstr ""
+
+#, fuzzy
+msgid "Filename:"
+msgstr "Jina la faili:"
+
+#, fuzzy
+msgid "Local File:"
+msgstr "faili la kikweti"
+
+msgid "Speed:"
+msgstr ""
+
+msgid "Time Elapsed:"
+msgstr "Muda Uliotumika:"
+
+#, fuzzy
+msgid "Time Remaining:"
+msgstr "#1 imebakia"
+
+msgid "Close this window when all transfers _finish"
+msgstr ""
+
+msgid "C_lear finished transfers"
+msgstr ""
+
+#. "Download Details" arrow
+msgid "File transfer _details"
+msgstr ""
+
+#. Pause button
+#, fuzzy
+msgid "_Pause"
+msgstr "Simamisha"
+
+#. Resume button
+#, fuzzy
+msgid "_Resume"
+msgstr "Endelea"
+
+msgid "Paste as Plain _Text"
+msgstr ""
+
+msgid "_Reset formatting"
+msgstr ""
+
+msgid "Disable _smileys in selected text"
+msgstr ""
+
+msgid "Hyperlink color"
+msgstr ""
+
+msgid "Color to draw hyperlinks."
+msgstr ""
+
+msgid "Hyperlink visited color"
+msgstr ""
+
+msgid "Color to draw hyperlinks after it has been visited (or activated)."
+msgstr ""
+
+msgid "Hyperlink prelight color"
+msgstr ""
+
+msgid "Color to draw hyperlinks when mouse is over them."
+msgstr ""
+
+msgid "Sent Message Name Color"
+msgstr ""
+
+msgid "Color to draw the name of a message you sent."
+msgstr ""
+
+msgid "Received Message Name Color"
+msgstr ""
+
+msgid "Color to draw the name of a message you received."
+msgstr ""
+
+msgid "\"Attention\" Name Color"
+msgstr ""
+
+msgid "Color to draw the name of a message you received containing your name."
+msgstr ""
+
+msgid "Action Message Name Color"
+msgstr ""
+
+msgid "Color to draw the name of an action message."
+msgstr ""
+
+msgid "Action Message Name Color for Whispered Message"
+msgstr ""
+
+msgid "Whisper Message Name Color"
+msgstr ""
+
+msgid "Typing notification color"
+msgstr ""
+
+msgid "The color to use for the typing notification font"
+msgstr ""
+
+msgid "Typing notification font"
+msgstr ""
+
+msgid "The font to use for the typing notification"
+msgstr ""
+
+msgid "Enable typing notification"
+msgstr ""
+
+msgid ""
+"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
+"\n"
+"Defaulting to PNG."
+msgstr ""
+
+msgid ""
+"Unrecognized file type\n"
+"\n"
+"Defaulting to PNG."
+msgstr ""
+
+#, c-format
+msgid ""
+"<span size='larger' weight='bold'>Error saving image</span>\n"
+"\n"
+"%s"
+msgstr ""
+
+#, fuzzy, c-format
+msgid ""
+"Error saving image\n"
+"\n"
+"%s"
+msgstr "Hitilafu katika kuhifadhi %S"
+
+msgid "Save Image"
+msgstr "Hifadhi Taswira"
+
+#, fuzzy
+msgid "_Save Image..."
+msgstr "Hifadhi Taswira"
+
+msgid "_Add Custom Smiley..."
+msgstr ""
+
+#, fuzzy
+msgid "Select Font"
+msgstr "&Uchanguzi"
+
+msgid "Select Text Color"
+msgstr ""
+
+#, fuzzy
+msgid "Select Background Color"
+msgstr "Chapisha rangi za usuli"
+
+#, fuzzy
+msgid "_URL"
+msgstr "URL"
+
+#, fuzzy
+msgid "_Description"
+msgstr "Maelezo"
+
+msgid ""
+"Please enter the URL and description of the link that you want to insert. "
+"The description is optional."
+msgstr ""
+
+msgid "Please enter the URL of the link that you want to insert."
+msgstr ""
+
+msgid "Insert Link"
+msgstr ""
+
+msgid "_Insert"
+msgstr ""
+
+#, c-format
+msgid "Failed to store image: %s\n"
+msgstr ""
+
+msgid "Insert Image"
+msgstr ""
+
+#, c-format
+msgid ""
+"This smiley is disabled because a custom smiley exists for this shortcut:\n"
+" %s"
+msgstr ""
+
+msgid "Smile!"
+msgstr ""
+
+msgid "_Manage custom smileys"
+msgstr ""
+
+msgid "This theme has no available smileys."
+msgstr ""
+
+#, fuzzy
+msgid "_Font"
+msgstr "Fonti"
+
+msgid "Group Items"
+msgstr ""
+
+msgid "Ungroup Items"
+msgstr ""
+
+msgid "Bold"
+msgstr ""
+
+#, fuzzy
+msgid "Italic"
+msgstr "Kiitalia"
+
+#, fuzzy
+msgid "Underline"
+msgstr "Interlingue"
+
+msgid "Strikethrough"
+msgstr ""
+
+msgid "Increase Font Size"
+msgstr ""
+
+msgid "Decrease Font Size"
+msgstr ""
+
+msgid "Font Face"
+msgstr ""
+
+#, fuzzy
+msgid "Background Color"
+msgstr "Chapisha rangi za usuli"
+
+msgid "Foreground Color"
+msgstr ""
+
+msgid "Reset Formatting"
+msgstr ""
+
+msgid "Insert IM Image"
+msgstr ""
+
+msgid "Insert Smiley"
+msgstr ""
+
+msgid "<b>_Bold</b>"
+msgstr ""
+
+msgid "<i>_Italic</i>"
+msgstr ""
+
+msgid "<u>_Underline</u>"
+msgstr ""
+
+msgid "<span strikethrough='true'>Strikethrough</span>"
+msgstr ""
+
+msgid "<span size='larger'>_Larger</span>"
+msgstr ""
+
+#, fuzzy
+msgid "_Normal"
+msgstr "&Kawaida"
+
+msgid "<span size='smaller'>_Smaller</span>"
+msgstr ""
+
+#. If we want to show the formatting for the following items, we would
+#. * need to update them when formatting changes. The above items don't need
+#. * no updating nor nothin'
+msgid "_Font face"
+msgstr ""
+
+msgid "Foreground _color"
+msgstr ""
+
+msgid "Bac_kground color"
+msgstr ""
+
+#, fuzzy
+msgid "_Image"
+msgstr "Taswira"
+
+msgid "_Link"
+msgstr ""
+
+msgid "_Horizontal rule"
+msgstr ""
+
+msgid "_Smile!"
+msgstr ""
+
+#, fuzzy
+msgid "Log Deletion Failed"
+msgstr "Unganisho Limeshindikana"
+
+msgid "Check permissions and try again."
+msgstr ""
+
+#, c-format
+msgid ""
+"Are you sure you want to permanently delete the log of the conversation with "
+"%s which started at %s?"
+msgstr ""
+
+#, c-format
+msgid ""
+"Are you sure you want to permanently delete the log of the conversation in %"
+"s which started at %s?"
+msgstr ""
+
+#, c-format
+msgid ""
+"Are you sure you want to permanently delete the system log which started at %"
+"s?"
+msgstr ""
+
+#, fuzzy
+msgid "Delete Log?"
+msgstr "Futa mwenyeji"
+
+#, fuzzy
+msgid "Delete Log..."
+msgstr "Futa mwenyeji"
+
+#, c-format
+msgid "<span size='larger' weight='bold'>Conversation in %s on %s</span>"
+msgstr ""
+
+#, c-format
+msgid "<span size='larger' weight='bold'>Conversation with %s on %s</span>"
+msgstr ""
+
+#. Steal the "HELP" response and use it to trigger browsing to the logs folder
+msgid "_Browse logs folder"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%s %s. Try `%s -h' for more information.\n"
+msgstr "\n"
+
+#, c-format
+msgid ""
+"%s %s\n"
+"Usage: %s [OPTION]...\n"
+"\n"
+" -c, --config=DIR use DIR for config files\n"
+" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
+" -h, --help display this help and exit\n"
+" -m, --multiple do not ensure single instance\n"
+" -n, --nologin don't automatically login\n"
+" -l, --login[=NAME] enable specified account(s) (optional argument NAME\n"
+" specifies account(s) to use, separated by commas.\n"
+" Without this only the first account will be enabled).\n"
+" --display=DISPLAY X display to use\n"
+" -v, --version display the current version and exit\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s %s\n"
+"Usage: %s [OPTION]...\n"
+"\n"
+" -c, --config=DIR use DIR for config files\n"
+" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
+" -h, --help display this help and exit\n"
+" -m, --multiple do not ensure single instance\n"
+" -n, --nologin don't automatically login\n"
+" -l, --login[=NAME] enable specified account(s) (optional argument NAME\n"
+" specifies account(s) to use, separated by commas.\n"
+" Without this only the first account will be enabled).\n"
+" -v, --version display the current version and exit\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s %s has segfaulted and attempted to dump a core file.\n"
+"This is a bug in the software and has happened through\n"
+"no fault of your own.\n"
+"\n"
+"If you can reproduce the crash, please notify the developers\n"
+"by reporting a bug at:\n"
+"%ssimpleticket/\n"
+"\n"
+"Please make sure to specify what you were doing at the time\n"
+"and post the backtrace from the core file. If you do not know\n"
+"how to get the backtrace, please read the instructions at\n"
+"%swiki/GetABacktrace\n"
+msgstr ""
+
+#. Translators may want to transliterate the name.
+#. It is not to be translated.
+#, fuzzy
+msgid "Pidgin"
+msgstr "Programu-unganishi"
+
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
+
+#, fuzzy
+msgid "/_Media"
+msgstr "Media"
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+msgid "Calling..."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s has %d new message."
+msgid_plural "%s has %d new messages."
+msgstr[0] ""
+msgstr[1] ""
+
+#, c-format
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
+msgstr[0] ""
+msgstr[1] ""
+
+#, c-format
+msgid "The browser command \"%s\" is invalid."
+msgstr ""
+
+#, fuzzy
+msgid "Unable to open URL"
+msgstr "Nimeshindwa Kusasisha"
+
+#, c-format
+msgid "Error launching \"%s\": %s"
+msgstr ""
+
+msgid ""
+"The 'Manual' browser command has been chosen, but no command has been set."
+msgstr ""
+
+#, fuzzy
+msgid "Open All Messages"
+msgstr "Fungua kwenye Tabo zote"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr ""
+
+msgid "New Pounces"
+msgstr ""
+
+msgid "Dismiss"
+msgstr ""
+
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr ""
+
+#, fuzzy
+msgid "No message"
+msgstr "Ujumbe"
+
+#, fuzzy
+msgid "The following plugins will be unloaded."
+msgstr "Programu-jalizi zifuatazo zinapatikana:"
+
+msgid "Multiple plugins will be unloaded."
+msgstr ""
+
+#, fuzzy
+msgid "Unload Plugins"
+msgstr "Kuhusu Program-jalizi"
+
+msgid "Could not unload plugin"
+msgstr ""
+
+msgid ""
+"The plugin could not be unloaded now, but will be disabled at the next "
+"startup."
+msgstr ""
+
+#, c-format
+msgid ""
+"<span foreground=\"red\" weight=\"bold\">Error: %s\n"
+"Check the plugin website for an update.</span>"
+msgstr ""
+
+msgid "Author"
+msgstr ""
+
+msgid "<b>Written by:</b>"
+msgstr ""
+
+msgid "<b>Web site:</b>"
+msgstr ""
+
+msgid "<b>Filename:</b>"
+msgstr ""
+
+msgid "Configure Pl_ugin"
+msgstr ""
+
+msgid "<b>Plugin Details</b>"
+msgstr ""
+
+#, fuzzy
+msgid "Select a file"
+msgstr "Chagua Profaili"
+
+msgid "Modify Buddy Pounce"
+msgstr ""
+
+#. Create the "Pounce on Whom" frame.
+msgid "Pounce on Whom"
+msgstr ""
+
+msgid "_Account:"
+msgstr ""
+
+msgid "_Buddy name:"
+msgstr ""
+
+msgid "Si_gns on"
+msgstr ""
+
+msgid "Signs o_ff"
+msgstr ""
+
+msgid "Goes a_way"
+msgstr ""
+
+msgid "Ret_urns from away"
+msgstr ""
+
+msgid "Becomes _idle"
+msgstr ""
+
+msgid "Is no longer i_dle"
+msgstr ""
+
+msgid "Starts _typing"
+msgstr ""
+
+msgid "P_auses while typing"
+msgstr ""
+
+msgid "Stops t_yping"
+msgstr ""
+
+msgid "Sends a _message"
+msgstr ""
+
+#, fuzzy
+msgid "Ope_n an IM window"
+msgstr "Fungua dirisha jipya"
+
+msgid "_Pop up a notification"
+msgstr ""
+
+msgid "Send a _message"
+msgstr ""
+
+msgid "E_xecute a command"
+msgstr ""
+
+msgid "P_lay a sound"
+msgstr ""
+
+#, fuzzy
+msgid "Brows_e..."
+msgstr "Vinjari…"
+
+#, fuzzy
+msgid "Br_owse..."
+msgstr "Vinjari…"
+
+#, fuzzy
+msgid "Pre_view"
+msgstr "Hakiki"
+
+msgid "P_ounce only when my status is not Available"
+msgstr ""
+
+msgid "_Recurring"
+msgstr ""
+
+msgid "Pounce Target"
+msgstr ""
+
+#, c-format
+msgid "Started typing"
+msgstr ""
+
+#, c-format
+msgid "Paused while typing"
+msgstr ""
+
+#, c-format
+msgid "Signed on"
+msgstr ""
+
+#, c-format
+msgid "Returned from being idle"
+msgstr ""
+
+#, c-format
+msgid "Returned from being away"
+msgstr ""
+
+#, c-format
+msgid "Stopped typing"
+msgstr ""
+
+#, c-format
+msgid "Signed off"
+msgstr ""
+
+#, c-format
+msgid "Became idle"
+msgstr ""
+
+#, c-format
+msgid "Went away"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Weka Ukurasa Nyumbani"
+
+#, c-format
+msgid "Unknown.... Please report this!"
+msgstr ""
+
+msgid "Smiley theme failed to unpack."
+msgstr ""
+
+#, fuzzy
+msgid "Install Theme"
+msgstr "Sakinisha Mandhari"
+
+msgid ""
+"Select a smiley theme that you would like to use from the list below. New "
+"themes can be installed by dragging and dropping them onto the theme list."
+msgstr ""
+
+msgid "Icon"
+msgstr "Ikoni"
+
+#, fuzzy
+msgid "Keyboard Shortcuts"
+msgstr "Uwekaji wa Mikato"
+
+msgid "Cl_ose conversations with the Escape key"
+msgstr ""
+
+#. Buddy List Themes
+msgid "Buddy List Theme"
+msgstr ""
+
+#. System Tray
+msgid "System Tray Icon"
+msgstr ""
+
+msgid "_Show system tray icon:"
+msgstr ""
+
+msgid "On unread messages"
+msgstr ""
+
+msgid "Conversation Window Hiding"
+msgstr ""
+
+msgid "_Hide new IM conversations:"
+msgstr ""
+
+msgid "When away"
+msgstr ""
+
+#. All the tab options!
+msgid "Tabs"
+msgstr "Tabo"
+
+msgid "Show IMs and chats in _tabbed windows"
+msgstr ""
+
+msgid "Show close b_utton on tabs"
+msgstr ""
+
+msgid "_Placement:"
+msgstr ""
+
+#, fuzzy
+msgid "Top"
+msgstr "Kwa:"
+
+#, fuzzy
+msgid "Bottom"
+msgstr "&Chini:"
+
+msgid "Left"
+msgstr "Kushoto"
+
+msgid "Right"
+msgstr "Kulia"
+
+msgid "Left Vertical"
+msgstr ""
+
+msgid "Right Vertical"
+msgstr ""
+
+msgid "N_ew conversations:"
+msgstr ""
+
+msgid "Show _formatting on incoming messages"
+msgstr ""
+
+msgid "Close IMs immediately when the tab is closed"
+msgstr ""
+
+msgid "Show _detailed information"
+msgstr ""
+
+msgid "Enable buddy ic_on animation"
+msgstr ""
+
+msgid "_Notify buddies that you are typing to them"
+msgstr ""
+
+msgid "Highlight _misspelled words"
+msgstr ""
+
+#, fuzzy
+msgid "Use smooth-scrolling"
+msgstr "Tu&mia ubiringizaji taratibu"
+
+msgid "F_lash window when IMs are received"
+msgstr ""
+
+msgid "Minimi_ze new conversation windows"
+msgstr ""
+
+msgid "Minimum input area height in lines:"
+msgstr ""
+
+#, fuzzy
+msgid "Font"
+msgstr "Fonti"
+
+msgid "Use document font from _theme"
+msgstr ""
+
+msgid "Use font from _theme"
+msgstr ""
+
+msgid "Conversation _font:"
+msgstr ""
+
+msgid "Default Formatting"
+msgstr ""
+
+msgid ""
+"This is how your outgoing message text will appear when you use protocols "
+"that support formatting."
+msgstr ""
+
+msgid "Cannot start proxy configuration program."
+msgstr ""
+
+msgid "Cannot start browser configuration program."
+msgstr ""
+
+msgid "<span style=\"italic\">Example: stunserver.org</span>"
+msgstr ""
+
+msgid "_Autodetect IP address"
+msgstr ""
+
+msgid "Public _IP:"
+msgstr ""
+
+#, fuzzy
+msgid "Ports"
+msgstr "Lango:"
+
+msgid "_Enable automatic router port forwarding"
+msgstr ""
+
+msgid "_Manually specify range of ports to listen on"
+msgstr ""
+
+msgid "_Start port:"
+msgstr ""
+
+#, fuzzy
+msgid "_End port:"
+msgstr "Tuma Kwa:"
+
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
+msgid "Proxy Server &amp; Browser"
+msgstr ""
+
+msgid "<b>Proxy configuration program was not found.</b>"
+msgstr ""
+
+msgid "<b>Browser configuration program was not found.</b>"
+msgstr ""
+
+msgid ""
+"Proxy & Browser preferences are configured\n"
+"in GNOME Preferences"
+msgstr ""
+
+msgid "Configure _Proxy"
+msgstr ""
+
+msgid "Configure _Browser"
+msgstr ""
+
+msgid "Proxy Server"
+msgstr ""
+
+#, fuzzy
+msgid "No proxy"
+msgstr "Hakuna waka&la"
+
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
+msgid "_User:"
+msgstr ""
+
+msgid "Seamonkey"
+msgstr ""
+
+msgid "Opera"
+msgstr "Opera"
+
+#, fuzzy
+msgid "Netscape"
+msgstr "Netscape 4"
+
+msgid "Mozilla"
+msgstr "Mozilla"
+
+msgid "Konqueror"
+msgstr "Konqueror"
+
+#, fuzzy
+msgid "Desktop Default"
+msgstr "Rejesha Misingi"
+
+#, fuzzy
+msgid "GNOME Default"
+msgstr "WPS Msingi"
+
+msgid "Galeon"
+msgstr "Galeon"
+
+msgid "Firefox"
+msgstr "Firefox"
+
+msgid "Firebird"
+msgstr ""
+
+msgid "Epiphany"
+msgstr "Epiphany"
+
+msgid "Manual"
+msgstr ""
+
+msgid "Browser Selection"
+msgstr ""
+
+#, fuzzy
+msgid "_Browser:"
+msgstr "Vinjari…"
+
+msgid "_Open link in:"
+msgstr ""
+
+#, fuzzy
+msgid "Browser default"
+msgstr "Tumia Msingi"
+
+msgid "Existing window"
+msgstr ""
+
+msgid "New tab"
+msgstr "Tabo mpya"
+
+#, c-format
+msgid ""
+"_Manual:\n"
+"(%s for URL)"
+msgstr ""
+
+msgid "Log _format:"
+msgstr ""
+
+msgid "Log all _instant messages"
+msgstr ""
+
+msgid "Log all c_hats"
+msgstr ""
+
+msgid "Log all _status changes to system log"
+msgstr ""
+
+#, fuzzy
+msgid "Sound Selection"
+msgstr "&Uchanguzi"
+
+#, c-format
+msgid "Quietest"
+msgstr ""
+
+#, c-format
+msgid "Quieter"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Quiet"
+msgstr "&Funga"
+
+#, fuzzy, c-format
+msgid "Loud"
+msgstr "&Pakia upya"
+
+#, fuzzy, c-format
+msgid "Louder"
+msgstr "folda"
+
+#, c-format
+msgid "Loudest"
+msgstr ""
+
+msgid "_Method:"
+msgstr ""
+
+msgid "Console beep"
+msgstr ""
+
+msgid "No sounds"
+msgstr ""
+
+#, c-format
+msgid ""
+"Sound c_ommand:\n"
+"(%s for filename)"
+msgstr ""
+
+msgid "M_ute sounds"
+msgstr ""
+
+msgid "Sounds when conversation has _focus"
+msgstr ""
+
+msgid "_Enable sounds:"
+msgstr ""
+
+#, fuzzy
+msgid "V_olume:"
+msgstr "Safu-wima:"
+
+#, fuzzy
+msgid "Play"
+msgstr "Che&za"
+
+#, fuzzy
+msgid "_Browse..."
+msgstr "Vinjari…"
+
+#, fuzzy
+msgid "_Reset"
+msgstr "Seti upya"
+
+msgid "_Report idle time:"
+msgstr ""
+
+msgid "Based on keyboard or mouse use"
+msgstr ""
+
+msgid "_Auto-reply:"
+msgstr ""
+
+msgid "When both away and idle"
+msgstr ""
+
+#. Auto-away stuff
+msgid "Auto-away"
+msgstr ""
+
+msgid "_Minutes before becoming idle:"
+msgstr ""
+
+msgid "Change status when _idle"
+msgstr ""
+
+#, fuzzy
+msgid "Change _status to:"
+msgstr "&Badili matini ya ufito hali"
+
+#. Signon status stuff
+msgid "Status at Startup"
+msgstr ""
+
+msgid "Use status from last _exit at startup"
+msgstr ""
+
+msgid "Status to a_pply at startup:"
+msgstr ""
+
+msgid "Interface"
+msgstr ""
+
+#, fuzzy
+msgid "Smiley Themes"
+msgstr "Pata Mandhari"
+
+#, fuzzy
+msgid "Browser"
+msgstr "Vinjari…"
+
+msgid "Status / Idle"
+msgstr ""
+
+msgid "Allow all users to contact me"
+msgstr ""
+
+msgid "Allow only the users on my buddy list"
+msgstr ""
+
+msgid "Allow only the users below"
+msgstr ""
+
+msgid "Block all users"
+msgstr ""
+
+msgid "Block only the users below"
+msgstr ""
+
+msgid "Privacy"
+msgstr "Faragha"
+
+msgid "Changes to privacy settings take effect immediately."
+msgstr ""
+
+msgid "Set privacy for:"
+msgstr ""
+
+#. Remove All button
+#, fuzzy
+msgid "Remove Al_l"
+msgstr "Ondoa &All"
+
+msgid "Permit User"
+msgstr ""
+
+msgid "Type a user you permit to contact you."
+msgstr ""
+
+msgid "Please enter the name of the user you wish to be able to contact you."
+msgstr ""
+
+msgid "_Permit"
+msgstr ""
+
+#, c-format
+msgid "Allow %s to contact you?"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Are you sure you wish to allow %s to contact you?"
+msgstr "Una uhakika unataka kuOnyesha nywila zako?"
+
+#, fuzzy
+msgid "Block User"
+msgstr "Imezuiliwa"
+
+msgid "Type a user to block."
+msgstr ""
+
+msgid "Please enter the name of the user you wish to block."
+msgstr ""
+
+#, c-format
+msgid "Block %s?"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to block %s?"
+msgstr ""
+
+msgid "Apply"
+msgstr ""
+
+#, fuzzy
+msgid "That file already exists"
+msgstr "Ithibati tayari ipo."
+
+#, fuzzy
+msgid "Would you like to overwrite it?"
+msgstr "Ungependa kuhifadhi faili hili?"
+
+msgid "Overwrite"
+msgstr ""
+
+#, fuzzy
+msgid "Choose New Name"
+msgstr "Jina la Kuki"
+
+#, fuzzy
+msgid "Select Folder..."
+msgstr "Fold&a Lililochaguliwa"
+
+#. list button
+msgid "_Get List"
+msgstr ""
+
+#. add button
+msgid "_Add Chat"
+msgstr ""
+
+#, fuzzy
+msgid "Are you sure you want to delete the selected saved statuses?"
+msgstr "Je una uhakika uantaka kufuta ithibati hizi?"
+
+#. Use button
+msgid "_Use"
+msgstr ""
+
+msgid "Title already in use. You must choose a unique title."
+msgstr ""
+
+msgid "Different"
+msgstr ""
+
+#, fuzzy
+msgid "_Title:"
+msgstr "Jina:"
+
+#, fuzzy
+msgid "_Status:"
+msgstr "Hali:"
+
+#. Different status message expander
+msgid "Use a _different status for some accounts"
+msgstr ""
+
+#. Save & Use button
+msgid "Sa_ve & Use"
+msgstr ""
+
+#, c-format
+msgid "Status for %s"
+msgstr ""
+
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
+#, fuzzy
+msgid "Custom Smiley"
+msgstr "Kipimo cha kaida..."
+
+msgid "More Data needed"
+msgstr ""
+
+msgid "Please provide a shortcut to associate with the smiley."
+msgstr ""
+
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
+msgstr ""
+
+#, fuzzy
+msgid "Duplicate Shortcut"
+msgstr "sifa rudufu"
+
+msgid "Please select an image for the smiley."
+msgstr ""
+
+msgid "Edit Smiley"
+msgstr ""
+
+msgid "Add Smiley"
+msgstr ""
+
+#, fuzzy
+msgid "_Image:"
+msgstr "Taswira"
+
+#. Shortcut text
+msgid "S_hortcut text:"
+msgstr ""
+
+msgid "Smiley"
+msgstr ""
+
+msgid "Shortcut Text"
+msgstr ""
+
+msgid "Custom Smiley Manager"
+msgstr ""
+
+#, fuzzy
+msgid "Select Buddy Icon"
+msgstr "&Uchanguzi"
+
+msgid "Click to change your buddyicon for this account."
+msgstr ""
+
+msgid "Click to change your buddyicon for all accounts."
+msgstr ""
+
+msgid "Waiting for network connection"
+msgstr ""
+
+msgid "New status..."
+msgstr ""
+
+msgid "Saved statuses..."
+msgstr ""
+
+msgid "Status Selector"
+msgstr ""
+
+msgid "Google Talk"
+msgstr ""
+
+#, c-format
+msgid "The following error has occurred loading %s: %s"
+msgstr ""
+
+#, fuzzy
+msgid "Failed to load image"
+msgstr "Imeshindwa Kuingia"
+
+#, c-format
+msgid "Cannot send folder %s."
+msgstr ""
+
+#, c-format
+msgid ""
+"%s cannot transfer a folder. You will need to send the files within "
+"individually."
+msgstr ""
+
+msgid "You have dragged an image"
+msgstr ""
+
+msgid ""
+"You can send this image as a file transfer, embed it into this message, or "
+"use it as the buddy icon for this user."
+msgstr ""
+
+msgid "Set as buddy icon"
+msgstr ""
+
+msgid "Send image file"
+msgstr ""
+
+#, fuzzy
+msgid "Insert in message"
+msgstr "Funga ujumbe huu"
+
+msgid "Would you like to set it as the buddy icon for this user?"
+msgstr ""
+
+msgid ""
+"You can send this image as a file transfer, or use it as the buddy icon for "
+"this user."
+msgstr ""
+
+msgid ""
+"You can insert this image into this message, or use it as the buddy icon for "
+"this user"
+msgstr ""
+
+#. I don't know if we really want to do anything here. Most of the desktop item types are crap like
+#. * "MIME Type" (I have no clue how that would be a desktop item) and "Comment"... nothing we can really
+#. * send. The only logical one is "Application," but do we really want to send a binary and nothing else?
+#. * Probably not. I'll just give an error and return.
+#. The original patch sent the icon used by the launcher. That's probably wrong
+msgid "Cannot send launcher"
+msgstr ""
+
+msgid ""
+"You dragged a desktop launcher. Most likely you wanted to send whatever this "
+"launcher points to instead of this launcher itself."
+msgstr ""
+
+#, c-format
+msgid ""
+"<b>File:</b> %s\n"
+"<b>File size:</b> %s\n"
+"<b>Image size:</b> %dx%d"
+msgstr ""
+
+#, c-format
+msgid "The file '%s' is too large for %s. Please try a smaller image.\n"
+msgstr ""
+
+#, fuzzy
+msgid "Icon Error"
+msgstr "Hitilafu isiyojulikana"
+
+msgid "Could not set icon"
+msgstr ""
+
+#, c-format
+msgid "Failed to open file '%s': %s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Failed to load image '%s': reason not known, probably a corrupt image file"
+msgstr ""
+
+#, fuzzy
+msgid "_Open Link"
+msgstr "Fungua katika:"
+
+#, fuzzy
+msgid "_Copy Link Location"
+msgstr "&Nakili Mahali pa Kiungo"
+
+#, fuzzy
+msgid "_Copy Email Address"
+msgstr "Nakili Anwani ya Barua-p&epe"
+
+#, fuzzy
+msgid "Save File"
+msgstr "&Hifadhi faili"
+
+#, fuzzy
+msgid "Select color"
+msgstr "Chagua &Yote"
+
+msgid "_Alias"
+msgstr ""
+
+#, fuzzy
+msgid "Close _tabs"
+msgstr "Funga tabo"
+
+msgid "_Get Info"
+msgstr ""
+
+msgid "_Invite"
+msgstr ""
+
+#, fuzzy
+msgid "_Modify..."
+msgstr "R&ekebisha"
+
+msgid "_Add..."
+msgstr ""
+
+#, fuzzy
+msgid "_Open Mail"
+msgstr "Fungua tabo"
+
+#, fuzzy
+msgid "_Edit"
+msgstr "&Hariri"
+
+msgid "Pidgin Tooltip"
+msgstr ""
+
+msgid "Pidgin smileys"
+msgstr ""
+
+msgid "Penguin Pimps"
+msgstr ""
+
+msgid "Selecting this disables graphical emoticons."
+msgstr ""
+
+#, fuzzy
+msgid "none"
+msgstr "Bila"
+
+#, fuzzy
+msgid "Small"
+msgstr "Kisomali"
+
+msgid "Smaller versions of the default smilies"
+msgstr ""
+
+msgid "Response Probability:"
+msgstr ""
+
+msgid "Statistics Configuration"
+msgstr ""
+
+#. msg_difference spinner
+msgid "Maximum response timeout:"
+msgstr ""
+
+msgid "minutes"
+msgstr ""
+
+#. last_seen spinner
+msgid "Maximum last-seen difference:"
+msgstr ""
+
+#. threshold spinner
+msgid "Threshold:"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Contact Availability Prediction"
+msgstr ""
+
+#. *< name
+#. *< version
+msgid "Contact Availability Prediction plugin."
+msgstr ""
+
+#. * summary
+msgid "Displays statistical information about your buddies' availability"
+msgstr ""
+
+msgid "Buddy is idle"
+msgstr ""
+
+msgid "Buddy is away"
+msgstr ""
+
+msgid "Buddy is \"extended\" away"
+msgstr ""
+
+#. Not used yet.
+msgid "Buddy is mobile"
+msgstr ""
+
+msgid "Buddy is offline"
+msgstr ""
+
+msgid "Point values to use when..."
+msgstr ""
+
+msgid ""
+"The buddy with the <i>largest score</i> is the buddy who will have priority "
+"in the contact.\n"
+msgstr ""
+
+msgid "Use last buddy when scores are equal"
+msgstr ""
+
+msgid "Point values to use for account..."
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Contact Priority"
+msgstr ""
+
+#. *< name
+#. *< version
+#. *< summary
+msgid ""
+"Allows for controlling the values associated with different buddy states."
+msgstr ""
+
+#. *< description
+msgid ""
+"Allows for changing the point values of idle/away/offline states for buddies "
+"in contact priority computations."
+msgstr ""
+
+msgid "Conversation Colors"
+msgstr ""
+
+msgid "Customize colors in the conversation window"
+msgstr ""
+
+#, fuzzy
+msgid "Error Messages"
+msgstr "Ufafanuzi wa Hitilafu"
+
+msgid "Highlighted Messages"
+msgstr ""
+
+#, fuzzy
+msgid "System Messages"
+msgstr "Misingi ya mfumo"
+
+#, fuzzy
+msgid "Sent Messages"
+msgstr "Jumbe za tahadhari"
+
+msgid "Received Messages"
+msgstr ""
+
+#, c-format
+msgid "Select Color for %s"
+msgstr ""
+
+msgid "Ignore incoming format"
+msgstr ""
+
+msgid "Apply in Chats"
+msgstr ""
+
+msgid "Apply in IMs"
+msgstr ""
+
+msgid "By conversation count"
+msgstr ""
+
+msgid "Conversation Placement"
+msgstr ""
+
+#. Translators: "New conversations" should match the text in the preferences dialog and "By conversation count" should be the same text used above
+msgid ""
+"Note: The preference for \"New conversations\" must be set to \"By "
+"conversation count\"."
+msgstr ""
+
+msgid "Number of conversations per window"
+msgstr ""
+
+msgid "Separate IM and Chat windows when placing by number"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "ExtPlacement"
+msgstr ""
+
+#. *< name
+#. *< version
+msgid "Extra conversation placement options."
+msgstr ""
+
+#. *< summary
+#. * description
+msgid ""
+"Restrict the number of conversations per windows, optionally separating IMs "
+"and Chats"
+msgstr ""
+
+#. Configuration frame
+msgid "Mouse Gestures Configuration"
+msgstr ""
+
+msgid "Middle mouse button"
+msgstr ""
+
+msgid "Right mouse button"
+msgstr ""
+
+#. "Visual gesture display" checkbox
+msgid "_Visual gesture display"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Mouse Gestures"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Provides support for mouse gestures"
+msgstr ""
+
+#. * description
+msgid ""
+"Allows support for mouse gestures in conversation windows. Drag the middle "
+"mouse button to perform certain actions:\n"
+" • Drag down and then to the right to close a conversation.\n"
+" • Drag up and then to the left to switch to the previous conversation.\n"
+" • Drag up and then to the right to switch to the next conversation."
+msgstr ""
+
+msgid "Instant Messaging"
+msgstr ""
+
+#. Add the label.
+msgid "Select a person from your address book below, or add a new person."
+msgstr ""
+
+#, fuzzy
+msgid "Group:"
+msgstr "Kusanya kwa:"
+
+#. "New Person" button
+#, fuzzy
+msgid "New Person"
+msgstr "Toleo Jipya"
+
+#. "Select Buddy" button
+msgid "Select Buddy"
+msgstr ""
+
+#. Add the label.
+msgid ""
+"Select a person from your address book to add this buddy to, or create a new "
+"person."
+msgstr ""
+
+#. Add the expander
+#, fuzzy
+msgid "User _details"
+msgstr "Onyesha &ufafanuzi"
+
+#. "Associate Buddy" button
+msgid "_Associate Buddy"
+msgstr ""
+
+#, fuzzy
+msgid "Unable to send email"
+msgstr "Haiwezi kufuta moduli"
+
+msgid "The evolution executable was not found in the PATH."
+msgstr ""
+
+msgid "An email address was not found for this buddy."
+msgstr ""
+
+msgid "Add to Address Book"
+msgstr ""
+
+msgid "Send Email"
+msgstr ""
+
+#. Configuration frame
+msgid "Evolution Integration Configuration"
+msgstr ""
+
+#. Label
+msgid "Select all accounts that buddies should be auto-added to."
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Evolution Integration"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Provides integration with Evolution."
+msgstr ""
+
+msgid "Please enter the person's information below."
+msgstr ""
+
+msgid "Please enter the buddy's username and account type below."
+msgstr ""
+
+msgid "Account type:"
+msgstr ""
+
+#. Optional Information section
+#, fuzzy
+msgid "Optional information:"
+msgstr "Taarifa zaidi"
+
+#, fuzzy
+msgid "First name:"
+msgstr "Ukurasa wa kwanza"
+
+#, fuzzy
+msgid "Last name:"
+msgstr "Ukurasa wa mwisho"
+
+#, fuzzy
+msgid "Email:"
+msgstr "Barua pepe"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "GTK Signals Test"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Test to see that all ui signals are working properly."
+msgstr ""
+
+#, c-format
+msgid ""
+"\n"
+"<b>Buddy Note</b>: %s"
+msgstr ""
+
+msgid "History"
+msgstr "Historia"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Iconify on Away"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Iconifies the buddy list and your conversations when you go away."
+msgstr ""
+
+msgid "Mail Checker"
+msgstr ""
+
+msgid "Checks for new local mail."
+msgstr ""
+
+msgid "Adds a small box to the buddy list that shows if you have new mail."
+msgstr ""
+
+msgid "Markerline"
+msgstr ""
+
+msgid "Draw a line to indicate new messages in a conversation."
+msgstr ""
+
+msgid "Jump to markerline"
+msgstr ""
+
+msgid "Draw Markerline in "
+msgstr ""
+
+#, fuzzy
+msgid "_IM windows"
+msgstr "Dirisha jipya"
+
+msgid "C_hat windows"
+msgstr ""
+
+msgid ""
+"A music messaging session has been requested. Please click the MM icon to "
+"accept."
+msgstr ""
+
+msgid "Music messaging session confirmed."
+msgstr ""
+
+msgid "Music Messaging"
+msgstr ""
+
+msgid "There was a conflict in running the command:"
+msgstr ""
+
+#, fuzzy
+msgid "Error Running Editor"
+msgstr "Hitilafu katika Kutuma Taarifa"
+
+msgid "The following error has occurred:"
+msgstr ""
+
+#. Configuration frame
+msgid "Music Messaging Configuration"
+msgstr ""
+
+msgid "Score Editor Path"
+msgstr ""
+
+msgid "_Apply"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+msgid "Music Messaging Plugin for collaborative composition."
+msgstr ""
+
+#. * summary
+msgid ""
+"The Music Messaging Plugin allows a number of users to simultaneously work "
+"on a piece of music by editting a common score in real-time."
+msgstr ""
+
+#. ---------- "Notify For" ----------
+msgid "Notify For"
+msgstr ""
+
+msgid "\t_Only when someone says your username"
+msgstr ""
+
+msgid "_Focused windows"
+msgstr ""
+
+#. ---------- "Notification Methods" ----------
+msgid "Notification Methods"
+msgstr ""
+
+msgid "Prepend _string into window title:"
+msgstr ""
+
+#. Count method button
+msgid "Insert c_ount of new messages into window title"
+msgstr ""
+
+#. Count xprop method button
+msgid "Insert count of new message into _X property"
+msgstr ""
+
+#. Urgent method button
+msgid "Set window manager \"_URGENT\" hint"
+msgstr ""
+
+#, fuzzy
+msgid "_Flash window"
+msgstr "Dirisha sawa"
+
+#. Raise window method button
+msgid "R_aise conversation window"
+msgstr ""
+
+#. Present conversation method button
+msgid "_Present conversation window"
+msgstr ""
+
+#. ---------- "Notification Removals" ----------
+msgid "Notification Removal"
+msgstr ""
+
+#. Remove on focus button
+msgid "Remove when conversation window _gains focus"
+msgstr ""
+
+#. Remove on click button
+msgid "Remove when conversation window _receives click"
+msgstr ""
+
+#. Remove on type button
+msgid "Remove when _typing in conversation window"
+msgstr ""
+
+#. Remove on message send button
+msgid "Remove when a _message gets sent"
+msgstr ""
+
+#. Remove on conversation switch button
+msgid "Remove on switch to conversation ta_b"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#, fuzzy
+msgid "Message Notification"
+msgstr "Arifisho la Jumla"
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Provides a variety of ways of notifying you of unread messages."
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Pidgin Demonstration Plugin"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "An example plugin that does stuff - see the description."
+msgstr ""
+
+#. * description
+msgid ""
+"This is a really cool plugin that does a lot of stuff:\n"
+"- It tells you who wrote the program when you log in\n"
+"- It reverses all incoming text\n"
+"- It sends a message to people on your list immediately when they sign on"
+msgstr ""
+
+msgid "Cursor Color"
+msgstr ""
+
+msgid "Secondary Cursor Color"
+msgstr ""
+
+msgid "Hyperlink Color"
+msgstr ""
+
+msgid "Visited Hyperlink Color"
+msgstr ""
+
+msgid "Highlighted Message Name Color"
+msgstr ""
+
+msgid "GtkTreeView Horizontal Separation"
+msgstr ""
+
+msgid "Conversation Entry"
+msgstr ""
+
+msgid "Request Dialog"
+msgstr ""
+
+msgid "Notify Dialog"
+msgstr ""
+
+#, fuzzy
+msgid "Select Color"
+msgstr "Chagua &Yote"
+
+#, c-format
+msgid "Select Interface Font"
+msgstr ""
+
+#, c-format
+msgid "Select Font for %s"
+msgstr ""
+
+msgid "GTK+ Interface Font"
+msgstr ""
+
+msgid "GTK+ Text Shortcut Theme"
+msgstr ""
+
+#.
+#. for (i = 0; i < G_N_ELEMENTS(widget_bool_prefs); i++) {
+#. hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_CAT_SPACE);
+#. gtk_box_pack_start(GTK_BOX(frame), hbox, FALSE, FALSE, 0);
+#.
+#. check = pidgin_prefs_checkbox(_(widget_bool_names[i]),
+#. widget_bool_prefs_set[i], hbox);
+#. gtk_size_group_add_widget(labelsg, check);
+#.
+#. widget_bool_widgets[i] = pidgin_prefs_checkbox("", widget_bool_prefs[i], hbox);
+#. *
+#. gtk_size_group_add_widget(widgetsb, widget_bool_widgets[i]);
+#. *
+#. gtk_widget_set_sensitive(widget_bool_widgets[i],
+#. purple_prefs_get_bool(widget_bool_prefs_set[i]));
+#. g_signal_connect(G_OBJECT(check), "toggled",
+#. G_CALLBACK(pidgin_toggle_sensitive),
+#. widget_bool_widgets[i]);
+#. }
+#.
+msgid "Interface colors"
+msgstr ""
+
+msgid "Widget Sizes"
+msgstr ""
+
+msgid "Fonts"
+msgstr "Fonti"
+
+msgid "Gtkrc File Tools"
+msgstr ""
+
+#, c-format
+msgid "Write settings to %s%sgtkrc-2.0"
+msgstr ""
+
+msgid "Re-read gtkrc files"
+msgstr ""
+
+msgid "Pidgin GTK+ Theme Control"
+msgstr ""
+
+msgid "Provides access to commonly used gtkrc settings."
+msgstr ""
+
+msgid "Raw"
+msgstr ""
+
+msgid "Lets you send raw input to text-based protocols."
+msgstr ""
+
+msgid ""
+"Lets you send raw input to text-based protocols (XMPP, MSN, IRC, TOC). Hit "
+"'Enter' in the entry box to send. Watch the debug window."
+msgstr ""
+
+#, c-format
+msgid "You can upgrade to %s %s today."
+msgstr ""
+
+msgid "New Version Available"
+msgstr "Toleo Jipya Linapatikana"
+
+msgid "Later"
+msgstr "Baadae"
+
+#, fuzzy
+msgid "Download Now"
+msgstr "Hitilafu ya upakuzi"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#, fuzzy
+msgid "Release Notification"
+msgstr "Arifisho la Jumla"
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Checks periodically for new releases."
+msgstr ""
+
+#. * description
+msgid ""
+"Checks periodically for new releases and notifies the user with the "
+"ChangeLog."
+msgstr ""
+
+#. *< major version
+#. *< minor version
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#, fuzzy
+msgid "Send Button"
+msgstr "Tuma kwa:"
+
+#. *< name
+#. *< version
+msgid "Conversation Window Send Button."
+msgstr ""
+
+#. *< summary
+msgid ""
+"Adds a Send button to the entry area of the conversation window. Intended "
+"for when no physical keyboard is present."
+msgstr ""
+
+msgid "Duplicate Correction"
+msgstr ""
+
+msgid "The specified word already exists in the correction list."
+msgstr ""
+
+msgid "Text Replacements"
+msgstr ""
+
+#, fuzzy
+msgid "You type"
+msgstr "Aina ya uunganishi"
+
+msgid "You send"
+msgstr ""
+
+msgid "Whole words only"
+msgstr ""
+
+#, fuzzy
+msgid "Case sensitive"
+msgstr "(Nyepesi huhisi herufi kubwa au ndogo)"
+
+msgid "Add a new text replacement"
+msgstr ""
+
+msgid "You _type:"
+msgstr ""
+
+msgid "You _send:"
+msgstr ""
+
+#. Created here so it can be passed to whole_words_button_toggled.
+msgid "_Exact case match (uncheck for automatic case handling)"
+msgstr ""
+
+msgid "Only replace _whole words"
+msgstr ""
+
+msgid "General Text Replacement Options"
+msgstr ""
+
+msgid "Enable replacement of last word on send"
+msgstr ""
+
+msgid "Text replacement"
+msgstr ""
+
+msgid "Replaces text in outgoing messages according to user-defined rules."
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Buddy Ticker"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "A horizontal scrolling version of the buddy list."
+msgstr ""
+
+msgid "Display Timestamps Every"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#, fuzzy
+msgid "Timestamp"
+msgstr "Uchapaji wa Muda"
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Display iChat-style timestamps"
+msgstr ""
+
+#. * description
+msgid "Display iChat-style timestamps every N minutes."
+msgstr ""
+
+msgid "Timestamp Format Options"
+msgstr ""
+
+#, c-format
+msgid "_Force 24-hour time format"
+msgstr ""
+
+msgid "Show dates in..."
+msgstr ""
+
+msgid "Co_nversations:"
+msgstr ""
+
+msgid "For delayed messages"
+msgstr ""
+
+msgid "For delayed messages and in chats"
+msgstr ""
+
+msgid "_Message Logs:"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Message Timestamp Formats"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Customizes the message timestamp formats."
+msgstr ""
+
+#. * description
+msgid ""
+"This plugin allows the user to customize conversation and logging message "
+"timestamp formats."
+msgstr ""
+
+msgid "Opacity:"
+msgstr ""
+
+#. IM Convo trans options
+msgid "IM Conversation Windows"
+msgstr ""
+
+msgid "_IM window transparency"
+msgstr ""
+
+msgid "_Show slider bar in IM window"
+msgstr ""
+
+msgid "Remove IM window transparency on focus"
+msgstr ""
+
+#, fuzzy
+msgid "Always on top"
+msgstr "&Juu Daima"
+
+#. Buddy List trans options
+msgid "Buddy List Window"
+msgstr ""
+
+msgid "_Buddy List window transparency"
+msgstr ""
+
+msgid "Remove Buddy List window transparency on focus"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Transparency"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Variable Transparency for the buddy list and conversations."
+msgstr ""
+
+#. * description
+msgid ""
+"This plugin enables variable alpha transparency on conversation windows and "
+"the buddy list.\n"
+"\n"
+"* Note: This plugin requires Win2000 or greater."
+msgstr ""
+
+msgid "GTK+ Runtime Version"
+msgstr ""
+
+#. Autostart
+msgid "Startup"
+msgstr "Kila unapoanzisha"
+
+#, c-format
+msgid "_Start %s on Windows startup"
+msgstr ""
+
+msgid "_Dockable Buddy List"
+msgstr ""
+
+#. Blist On Top
+msgid "_Keep Buddy List window on top:"
+msgstr ""
+
+#. XXX: Did this ever work?
+msgid "Only when docked"
+msgstr ""
+
+msgid "Windows Pidgin Options"
+msgstr ""
+
+msgid "Options specific to Pidgin for Windows."
+msgstr ""
+
+msgid ""
+"Provides options specific to Pidgin for Windows , such as buddy list docking."
+msgstr ""
+
+msgid "<font color='#777777'>Logged out.</font>"
+msgstr ""
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#, fuzzy
+msgid "XMPP Console"
+msgstr "Kiweko cha Hitilafu"
+
+msgid "Account: "
+msgstr ""
+
+msgid "<font color='#777777'>Not connected to XMPP</font>"
+msgstr ""
+
+msgid "Insert an <iq/> stanza."
+msgstr ""
+
+msgid "Insert a <presence/> stanza."
+msgstr ""
+
+msgid "Insert a <message/> stanza."
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Send and receive raw XMPP stanzas."
+msgstr ""
+
+#. * description
+msgid "This plugin is useful for debbuging XMPP servers or clients."
+msgstr ""
diff --git a/po/ta.po b/po/ta.po
index 70e3bb9ce7..c113876d2a 100644
--- a/po/ta.po
+++ b/po/ta.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ta\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
+"POT-Creation-Date: 2009-04-30 10:40-0400\n"
"PO-Revision-Date: 2006-11-28 22:37+0530\n"
"Last-Translator: drtvasudevan <agnihot3@gmail.com>\n"
"Language-Team: tamil <Ubuntu-l10n-tam@lists.ubuntu.com>\n"
@@ -38,7 +38,7 @@ msgid ""
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -648,21 +648,6 @@ msgid "Send To"
msgstr "இதற்கு _அனுப்பு"
#, fuzzy
-msgid "Invite message"
-msgstr "தகவலில் சேர்க"
-
-msgid "Invite"
-msgstr "அழைப்பு"
-
-#, fuzzy
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"நீங்கள் அழைக்க விரும்பும் நண்பரின் பெயர் மற்றும், விருப்பப்பட்ட அழைப்பு தகவலையும் தயவுசெய்து "
-"கொடுக்கவும்."
-
-#, fuzzy
msgid "Conversation"
msgstr "உரையாடல்கள்"
@@ -931,6 +916,43 @@ msgid "System Log"
msgstr "கணினி பதிவு"
#, fuzzy
+msgid "Calling ... "
+msgstr "கணக்கிடல்..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+#, fuzzy
+msgid "Accept"
+msgstr "_ஏற்றுக் கொள்க"
+
+#, fuzzy
+msgid "Reject"
+msgstr "மீண்டும் அமை"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "நீங்கள் வாய்க்கால்%s%s லிருந்து பிரிந்துள்ளீர்கள்"
+
+msgid "call: Make an audio call."
+msgstr ""
+
+#, fuzzy
msgid "Emails"
msgstr "மின் அஞ்சல்"
@@ -967,6 +989,9 @@ msgstr "இணை"
msgid "IM"
msgstr "ஐஎம்"
+msgid "Invite"
+msgstr "அழைப்பு"
+
#, fuzzy
msgid "(none)"
msgstr "(பெயரற்றது)"
@@ -1188,7 +1213,6 @@ msgstr "%s வெளியே சென்றுள்ளார் (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s உமக்கு செய்தி அனுப்பியுள்ளார். (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "தெரியாத நிமித்தச் செயலாக்கல் நிகழ்வு. இதை அறிவியுங்கள்!"
@@ -1245,7 +1269,6 @@ msgstr "நிலையை _மாற்றுவதற்கு முன்
msgid "Change status to"
msgstr "_ந நிலையை இதற்கு மாற்று:"
-#. Conversations
msgid "Conversations"
msgstr "உரையாடல்கள்"
@@ -1602,7 +1625,6 @@ msgstr ""
"புதிய உரையாடல் திறக்கப் படும் போது இந்த சொருகுப்பொருள் கடைசியாக நடந்த உரையாடலை "
"சொருகும்."
-#, c-format
msgid "Online"
msgstr "இணைப்புடன்"
@@ -1651,6 +1673,28 @@ msgstr ""
msgid "Lastlog plugin."
msgstr ""
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "யுஆர்எல் "
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "கணக்குகள்"
@@ -1749,15 +1793,6 @@ msgstr "உரையாடல் அழைப்பை ஏற்கவா?"
msgid "SSL Certificate Verification"
msgstr ""
-#. Number of actions
-#, fuzzy
-msgid "Accept"
-msgstr "_ஏற்றுக் கொள்க"
-
-#, fuzzy
-msgid "Reject"
-msgstr "மீண்டும் அமை"
-
msgid "_View Certificate..."
msgstr ""
@@ -1896,6 +1931,18 @@ msgstr "%s அறையை விட்டு வெளியேறினார
msgid "%s left the room (%s)."
msgstr "%s அறையை விட்டு வெளியேறினார் (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "கலந்துரையாடலுக்கு அழை"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"நீங்கள் அழைக்க விரும்பும் நண்பரின் பெயர் மற்றும், விருப்பப்பட்ட அழைப்பு தகவலையும் தயவுசெய்து "
+"கொடுக்கவும்."
+
#, fuzzy, c-format
msgid "Failed to get connection: %s"
msgstr "இணைப்பை உருவாக்க முடியவில்லை"
@@ -2033,7 +2080,6 @@ msgstr "%s லிருந்து %s க்கு பரிமாற்றம
msgid "Transfer of file %s complete"
msgstr "%s கோப்பு பரிமாற்றம் முடிந்தது"
-#, c-format
msgid "File transfer complete"
msgstr "கோப்பு பரிமாற்றம் முடிந்தது"
@@ -2041,7 +2087,6 @@ msgstr "கோப்பு பரிமாற்றம் முடிந்த
msgid "You canceled the transfer of %s"
msgstr "இந்த பரிமாற்றத்தை நீங்கள் நீக்கிவிட்டீர்கள் %s "
-#, c-format
msgid "File transfer cancelled"
msgstr "கோப்பு பரிமாற்றம் நீக்கப்பட்டது"
@@ -2231,7 +2276,6 @@ msgstr "(%s) %s <AUTO-REPLY>: %s\n"
msgid "You are using %s, but this plugin requires %s."
msgstr ""
-#, c-format
msgid "This plugin has not defined an ID."
msgstr ""
@@ -2723,6 +2767,32 @@ msgstr ""
msgid "Do not ask. Always save in pounce."
msgstr ""
+#, fuzzy
+msgid "One Time Password"
+msgstr "கடவுச்சொல்லை உள்ளிடவும்"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2927,7 +2997,6 @@ msgid ""
"Unable to establish connection with the local mDNS server. Is it running?"
msgstr "உள் எம்டிஎன்எஸ் (mDNS) சேவையகத்துடன் இணைப்பை தொடங்க இயலவில்லை. அது இயங்குகிறதா?"
-#. Creating the options for the protocol
msgid "First name"
msgstr "முதற் பெயர்"
@@ -2962,6 +3031,11 @@ msgstr "போன்ஜு நெறிமுறை சொருகுபொர
msgid "Purple Person"
msgstr "புதிய நபர்"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "எல்லை"
+
msgid "Bonjour"
msgstr "போன்ஜு"
@@ -3124,13 +3198,13 @@ msgstr "நண்பருக்காக ஒரு அரட்டையை த
msgid "Add to chat..."
msgstr "அரட்டையுடன் சேர்..."
+#. Global
msgid "Available"
msgstr "அரட்டைக்குத் தயாராக இருக்கிறேன்"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "வெளியே"
@@ -3476,6 +3550,17 @@ msgstr ""
"சேவையகத்தால் மறுக்கப்பட்ட கணக்கு பெயரை நீங்கள் தேர்வு செய்துள்ளீர்கள். அது அநேகமாக செல்லாத "
"எழுத்துக்களை கொண்டிருக்கிறது."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "இந்த அரட்டை பெயர் ஏற்கனவே உபயோகத்தில் உள்ளது."
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "புனைப்பெயர்"
+
msgid "Cannot change nick"
msgstr "செல்லப்பெயரை மாற்ற முடியாது"
@@ -3751,6 +3836,37 @@ msgstr "சேவையகத்திலிருந்து செல்ல
msgid "SASL error"
msgstr "எஸ்ஏஎஸ்எல் (SASL) பிழை"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "காரணம் கொடுக்கப்படவில்லை."
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "ஆதரிக்கப்படாத பதிப்பு"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr "உள் எம்டிஎன்எஸ் (mDNS) சேவையகத்துடன் இணைப்பை தொடங்க இயலவில்லை. அது இயங்குகிறதா?"
+
+#, fuzzy, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr "உள் எம்டிஎன்எஸ் (mDNS) சேவையகத்துடன் இணைப்பை தொடங்க இயலவில்லை. அது இயங்குகிறதா?"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "இணைப்பை உருவாக்க முடியவில்லை"
+
+msgid "Unable to create socket"
+msgstr "கொள் குழியை (சாக்கெட்டை) உருவாக்குவதில் பிழை"
+
+msgid "Write error"
+msgstr "எழுதுவதில் பிழை"
+
msgid "Full Name"
msgstr "முழுப்பெயர்"
@@ -3817,6 +3933,10 @@ msgstr "நகரம்"
msgid "Operating System"
msgstr ""
+#, fuzzy
+msgid "Local Time"
+msgstr "இங்கேயுள்ள கோப்பு:"
+
msgid "Last Activity"
msgstr ""
@@ -4053,7 +4173,6 @@ msgstr "வாயாடி"
msgid "Extended Away"
msgstr "வெளியே சென்றது நீட்டிக்கப்பட்டது"
-#, c-format
msgid "Do Not Disturb"
msgstr "தொந்தரவு செய்ய வேண்டாம்"
@@ -4179,9 +4298,6 @@ msgstr "அறைகளை கண்டுபிடி"
msgid "You require encryption, but it is not available on this server."
msgstr ""
-msgid "Write error"
-msgstr "எழுதுவதில் பிழை"
-
#, fuzzy
msgid "Ping timeout"
msgstr "வெற்று உரை முறை"
@@ -4189,14 +4305,11 @@ msgstr "வெற்று உரை முறை"
msgid "Read Error"
msgstr "வாசிப்பதில் பிழை"
-#, fuzzy, c-format
+#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
-msgstr "உள் எம்டிஎன்எஸ் (mDNS) சேவையகத்துடன் இணைப்பை தொடங்க இயலவில்லை. அது இயங்குகிறதா?"
-
-msgid "Unable to create socket"
-msgstr "கொள் குழியை (சாக்கெட்டை) உருவாக்குவதில் பிழை"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
+msgstr ""
#, fuzzy
msgid "Invalid XMPP ID"
@@ -4205,6 +4318,10 @@ msgstr "செல்லாத அடையாளம்"
msgid "Invalid XMPP ID. Domain must be set."
msgstr ""
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "சேவையகத்துடன் இணைக்க தவறியது."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "%s@%s பதிவாக்கம் வெற்றி"
@@ -4297,9 +4414,18 @@ msgstr "உறுதிப்படுத்துகிறது"
msgid "Re-initializing Stream"
msgstr "வாய்க்காலை மீண்டும் தொடங்குகிறது"
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr "அனுமதியில்லை"
+msgid "Mood"
+msgstr "மன நிலை"
+
+msgid "Now Listening"
+msgstr ""
+
msgid "Both"
msgstr "இரண்டும்"
@@ -4321,12 +4447,6 @@ msgstr "ஒன்றுமில்லை"
msgid "Subscription"
msgstr "சந்தா"
-msgid "Mood"
-msgstr "மன நிலை"
-
-msgid "Now Listening"
-msgstr ""
-
#, fuzzy
msgid "Mood Text"
msgstr "மன நிலை"
@@ -4570,18 +4690,24 @@ msgstr "பயனாளர் %s ஐ உதைக்க இயலவில்ல
msgid "Unable to ping user %s"
msgstr "பயனாளர் %s ஐ தடுக்க இயலவில்லை"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
+msgstr "ஒலிக்க இயலவில்லை ஏனென்றால் தேர்ந்தெடுத்த கோப்பு (%s) இல்லை."
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
+msgstr "ஒலிக்க இயலவில்லை ஏனென்றால் தேர்ந்தெடுத்த கோப்பு (%s) இல்லை."
#, fuzzy, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "ஒலிக்க இயலவில்லை ஏனென்றால் தேர்ந்தெடுத்த கோப்பு (%s) இல்லை."
+#, c-format
+msgid "Buzzing %s..."
+msgstr ""
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
#, fuzzy
@@ -4592,9 +4718,35 @@ msgstr "குறுகுறுப்பு!!"
msgid "%s has buzzed you!"
msgstr "%s உள்ளே நுழைந்துள்ளார்."
-#, c-format
-msgid "Buzzing %s..."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "இதற்கு தகவல் அனுப்ப இயலவில்லை %s "
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "%s ற்கு கோப்பை அனுப்ப இயலவில்லை, பயனாளர் கோப்பு பரிமாற்றத்தை ஆதரிக்கவில்லை"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr "%s ற்கு கோப்பை அனுப்ப இயலவில்லை, பயனாளர் கோப்பு பரிமாற்றத்தை ஆதரிக்கவில்லை"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "பதிவாக்கம் தவறியது"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "நீங்கள் காண விரும்பும் நபரின் திரைப்பெயர் அல்லது புனைப்பெயரை தயவுசெய்து உள்ளிடவும்."
+
+#, fuzzy
+msgid "Select a Resource"
+msgstr "கோப்பை தேர்வு செய்க"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "அரட்டையை தொடங்கு"
msgid "config: Configure a chat room."
msgstr "config: அரட்டை அறையை வரையறு."
@@ -4757,6 +4909,21 @@ msgstr "அரட்டை %s ல் சேர்வதில் பிழை"
msgid "Error in chat %s"
msgstr "அரட்டை %s ல் பிழை"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "கோப்பை திறக்கும்பொழுது பிழை ஏற்பட்டது."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "கோப்பு பரிமாற்றம் தவறியது"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "படத்தை சேமிக்க தவறியது: %s\n"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr "%s ற்கு கோப்பை அனுப்ப இயலவில்லை, பயனாளர் கோப்பு பரிமாற்றத்தை ஆதரிக்கவில்லை"
@@ -4781,10 +4948,6 @@ msgid "Please select the resource of %s to which you would like to send a file"
msgstr "நீங்கள் காண விரும்பும் நபரின் திரைப்பெயர் அல்லது புனைப்பெயரை தயவுசெய்து உள்ளிடவும்."
#, fuzzy
-msgid "Select a Resource"
-msgstr "கோப்பை தேர்வு செய்க"
-
-#, fuzzy
msgid "Edit User Mood"
msgstr "பயன்பாட்டாளர் வகைகள்"
@@ -4823,9 +4986,19 @@ msgstr "செயல்"
msgid "Select an action"
msgstr "கோப்பை தேர்வு செய்க"
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr "\"%s\" ஐ சேர்க்க முடியவில்லை."
+
+msgid "Buddy Add error"
+msgstr ""
+
#, fuzzy
-msgid "Unable to retrieve MSN Address Book"
-msgstr "குறிப்புகள் முகவரி புத்தகத்தை தேர்வு செய்"
+msgid "The username specified does not exist."
+msgstr "குறிப்பிட்ட திரைப்பெயர் செல்லாதது."
#, c-format
msgid "Buddy list synchronization issue in %s (%s)"
@@ -5054,7 +5227,7 @@ msgstr "பெற்றோர் இசைவற்ற குழந்தைய
msgid "Passport account not yet verified"
msgstr "பாஸ்போர்ட் கணக்கு இன்னும் சரிபார்க்கப்படவில்லை"
-#, fuzzy, c-format
+#, fuzzy
msgid "Passport account suspended"
msgstr "பாஸ்போர்ட் கணக்கு இன்னும் சரிபார்க்கப்படவில்லை"
@@ -5149,6 +5322,13 @@ msgstr "மொபைல் தகவலை அனுப்பு."
msgid "Page"
msgstr "அழை"
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "அலுவலக ஐஎம்"
+
msgid "Has you"
msgstr "Has you"
@@ -5189,6 +5369,14 @@ msgstr "முகவரி"
msgid "Album"
msgstr ""
+#, fuzzy
+msgid "Game Title"
+msgstr "தலைப்பு"
+
+#, fuzzy
+msgid "Office Title"
+msgstr "தலைப்பு"
+
msgid "Set Friendly Name..."
msgstr "நட்பான பெயரை அமைக்கவும்..."
@@ -5386,8 +5574,9 @@ msgid ""
msgstr ""
"கெய்மால் பயனாளரின் குறுந்தொகுப்பை கண்டுபிடிக்க முடியவில்லை. அநேகமாக பயனாளர் இல்லை."
-msgid "Profile URL"
-msgstr "குறுந்தொகுப்பு யுஆர்எல் "
+#, fuzzy
+msgid "View web profile"
+msgstr "இணைப்பற்றபொழுது அனுமதிக்கப்படாது"
#. *< type
#. *< ui_requirement
@@ -5640,13 +5829,6 @@ msgstr "முகவரி புத்தகத்தில் சேர்க
msgid "Do you want to delete this buddy from your address book as well?"
msgstr "இந்த நண்பரை உங்கள் நண்பர் பட்டியலில் சேர்க்கவா?"
-#. only notify the user about problems adding to the friends list
-#. * maybe we should do something else for other lists, but it probably
-#. * won't cause too many problems if we just ignore it
-#, c-format
-msgid "Unable to add \"%s\"."
-msgstr "\"%s\" ஐ சேர்க்க முடியவில்லை."
-
#, fuzzy
msgid "The username specified is invalid."
msgstr "குறிப்பிட்ட திரைப்பெயர் செல்லாதது."
@@ -5654,6 +5836,9 @@ msgstr "குறிப்பிட்ட திரைப்பெயர் ச
msgid "This Hotmail account may not be active."
msgstr "இந்த ஹாட்மெய்ல் கணக்கு இயக்கத்தில் இல்லை."
+msgid "Profile URL"
+msgstr "குறுந்தொகுப்பு யுஆர்எல் "
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5668,17 +5853,13 @@ msgstr "இந்த ஹாட்மெய்ல் கணக்கு இயக
msgid "MSN Protocol Plugin"
msgstr "ஏஐஎம்/ஐசிக்யூ நெறிமுறை சொருகுபொருள்"
-#, fuzzy
-msgid "Missing Cipher"
-msgstr "மறையீடு"
-
-msgid "The RC4 cipher could not be found"
+#, c-format
+msgid "No such user: %s"
msgstr ""
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
-msgstr ""
+#, fuzzy
+msgid "User lookup"
+msgstr "பயனாளர் அறைகள்"
#, fuzzy
msgid "Reading challenge"
@@ -5692,11 +5873,19 @@ msgstr "சேவையகத்திலிருந்து செல்ல
msgid "Logging in"
msgstr "பதிவுறுதல்"
-#, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] ""
-msgstr[1] ""
+#, fuzzy
+msgid "MySpaceIM - No Username Set"
+msgstr "பெயரற்ற"
+
+msgid "You appear to have no MySpace username."
+msgstr ""
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr ""
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr "சேவையகத்துடன் இணைக்கப்படவில்லை."
#. Can't write _()'d strings in array initializers. Workaround.
#, fuzzy
@@ -5719,14 +5908,22 @@ msgid "MySpace"
msgstr ""
#, fuzzy
-msgid "MySpaceIM - No Username Set"
-msgstr "பெயரற்ற"
+msgid "IM Friends"
+msgstr "_ஐஎம் சாளரங்கள்"
-msgid "You appear to have no MySpace username."
-msgstr ""
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+msgstr[1] ""
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
-msgstr ""
+#, fuzzy
+msgid "Add contacts from server"
+msgstr "சேவையகத்திலிருந்து செல்லாத பதில்."
#. The session is now set up, ready to be connected. This emits the
#. * signedOn signal, so clients can now do anything with msimprpl, and
@@ -5750,6 +5947,22 @@ msgid "MySpaceIM Error"
msgstr ""
#, fuzzy
+msgid "Invalid input condition"
+msgstr "இணைப்பை உறுதிப்படுத்துகிறது"
+
+#, fuzzy
+msgid "Read buffer full (2)"
+msgstr "கியூ வரிசை நிறைந்தது"
+
+#, fuzzy
+msgid "Unparseable message"
+msgstr "தகவலை அலகிட இயலவில்லை"
+
+#, fuzzy, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr "புரவலருடன் இணைக்க முடியவில்லை"
+
+#, fuzzy
msgid "Failed to add buddy"
msgstr "தோழரை அரட்டையில் சேர்க்க தவறியது"
@@ -5761,14 +5974,6 @@ msgstr "நண்பர் பட்டியலை கோப்பிலிர
msgid "persist command failed"
msgstr "விசைப் பலகை தவறியது"
-#, c-format
-msgid "No such user: %s"
-msgstr ""
-
-#, fuzzy
-msgid "User lookup"
-msgstr "பயனாளர் அறைகள்"
-
#, fuzzy
msgid "Failed to remove buddy"
msgstr "தோழரை அரட்டையில் சேர்க்க தவறியது"
@@ -5781,38 +5986,16 @@ msgid "blocklist command failed"
msgstr "விசைப் பலகை தவறியது"
#, fuzzy
-msgid "Invalid input condition"
-msgstr "இணைப்பை உறுதிப்படுத்துகிறது"
-
-#, fuzzy
-msgid "Read buffer full (2)"
-msgstr "கியூ வரிசை நிறைந்தது"
-
-#, fuzzy
-msgid "Unparseable message"
-msgstr "தகவலை அலகிட இயலவில்லை"
-
-#, fuzzy, c-format
-msgid "Couldn't connect to host: %s (%d)"
-msgstr "புரவலருடன் இணைக்க முடியவில்லை"
+msgid "Missing Cipher"
+msgstr "மறையீடு"
-#, fuzzy
-msgid "IM Friends"
-msgstr "_ஐஎம் சாளரங்கள்"
+msgid "The RC4 cipher could not be found"
+msgstr ""
-#, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-msgstr[1] ""
-
-#, fuzzy
-msgid "Add contacts from server"
-msgstr "சேவையகத்திலிருந்து செல்லாத பதில்."
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
msgid "Add friends from MySpace.com"
msgstr ""
@@ -5861,10 +6044,6 @@ msgid "User"
msgstr "பயனாளர்கள்"
#, fuzzy
-msgid "Profile"
-msgstr "எம்எஸ்என் குறுந்தொகுப்பு"
-
-#, fuzzy
msgid "Headline"
msgstr "_க குறும்பெயர்:"
@@ -5879,17 +6058,6 @@ msgstr ""
msgid "Client Version"
msgstr "உரையாடலை மூடு"
-#. Protocol won't log in now without a username set.. Disconnect
-#, fuzzy
-msgid "No username set"
-msgstr "பெயரற்ற"
-
-msgid "MySpaceIM - Please Set a Username"
-msgstr ""
-
-msgid "Please enter a username to check its availability:"
-msgstr ""
-
#, fuzzy
msgid "MySpaceIM - Username Available"
msgstr "சேவை இல்லை"
@@ -5901,6 +6069,9 @@ msgstr "%s செய்திகள் வெண்பலகைக்கு அ
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr ""
+msgid "MySpaceIM - Please Set a Username"
+msgstr ""
+
#, fuzzy
msgid "This username is unavailable."
msgstr "இதில் குறுநகையிக்கள் இல்லை."
@@ -5909,6 +6080,14 @@ msgstr "இதில் குறுநகையிக்கள் இல்ல
msgid "Please try another username:"
msgstr "உங்களது புதிய கடவுச்சொல்லை கொடுக்கவும்"
+#. Protocol won't log in now without a username set.. Disconnect
+#, fuzzy
+msgid "No username set"
+msgstr "பெயரற்ற"
+
+msgid "Please enter a username to check its availability:"
+msgstr ""
+
#. TODO: icons for each zap
#. Lots of comments for translators:
#. Zap means "to strike suddenly and forcefully as if with a
@@ -6301,7 +6480,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr "பிழை எஸ்எஸ்எல் ஆதரவு நிறுவப்படவில்லை."
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr "இந்த உரையாடல் முடிக்கப்பட்டது. மேலும் தகவல் அனுப்ப இயலாது."
@@ -6568,23 +6746,18 @@ msgstr "காமிரா"
msgid "Screen Sharing"
msgstr "திரைப்பெயர்"
-#, c-format
msgid "Free For Chat"
msgstr "அரட்டைக்குத் தயார்"
-#, c-format
msgid "Not Available"
msgstr "கிடைக்கவில்லை"
-#, c-format
msgid "Occupied"
msgstr "வேலையாக உள்ளார்"
-#, c-format
msgid "Web Aware"
msgstr "வலை உணர்வுள்ள"
-#, c-format
msgid "Invisible"
msgstr "காணமுடியாத"
@@ -6630,7 +6803,7 @@ msgstr ""
"ஆகாதது. திரைப் பெயர்கள் ஒரு எழுத்தில்தான் ஆரம்பிக்க வேண்டும்.பின் வெறும் எண்களோ அல்லது "
"எழுத்துக்கள், எண்கள் வெற்று இடங்களோ இருக்கலாம்."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
#, fuzzy
msgid "Invalid username."
@@ -6647,7 +6820,7 @@ msgstr "உங்கள் கணக்கு இப்போது தற்க
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "ஏஓஎல் விரைவு தூதன் சேவை தற்காலிகமாக இல்லை."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6684,10 +6857,8 @@ msgstr "காண்பிக்கப்படும் ஆறு இலக்
msgid "_OK"
msgstr "சரி"
-#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
+#, fuzzy, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
msgstr ""
"நீங்கள் இப்போது இணப்பிலிருந்து நீக்கப் படலாம். இது சரியாகும் வரை டிஓசி யை பயன் படுத்த "
"நினைக்கலாம். மேம்படுத்துவதற்கு %s ஐ பார்க்கவும்."
@@ -6835,7 +7006,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] "தெரியாத காரணங்களால் நீங்கள் %hu செய்தியை %s லிருந்து இழந்தீர்கள்"
msgstr[1] "தெரியாத காரணங்களால் நீங்கள் %hu செய்திகளை %s லிருந்து இழந்தீர்கள்"
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "செய்திகளை அனுப்ப முடியவில்லை: %s"
@@ -6857,6 +7028,10 @@ msgstr "இன்னும் இணைப்புடன்"
msgid "Member Since"
msgstr "இதிலிருந்து அங்கத்தினர்."
+#, fuzzy
+msgid "Profile"
+msgstr "எம்எஸ்என் குறுந்தொகுப்பு"
+
msgid "Your AIM connection may be lost."
msgstr "உங்கள் ஏஐஎம் இணைப்பு அறுபட்டது போல உள்ளது."
@@ -7145,6 +7320,7 @@ msgstr "இணை"
msgid "Get AIM Info"
msgstr "தகவல் பெறுக"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "நண்பர் குறிப்பை திருத்து"
@@ -7258,7 +7434,7 @@ msgstr "நேரடி ஐஎம் க்காக %s ஐ %s:%hu இல்
msgid "Attempting to connect to %s:%hu."
msgstr "நேரடி ஐஎம் க்காக %s உடன் %s:%hu ல் இணைக்க முயல்கிறது."
-#, fuzzy, c-format
+#, fuzzy
msgid "Attempting to connect via proxy server."
msgstr "இணைப்பை உருவாக்க அனுப்புனரை தூண்டுகிறோம்."
@@ -7368,7 +7544,7 @@ msgstr "ஒபேரா"
msgid "Visible"
msgstr "காணமுடியாத"
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
#, fuzzy
@@ -7464,17 +7640,50 @@ msgstr "கடைசியாக புதுப்பித்தது"
msgid "Could not change buddy information."
msgstr "நிமித்தச் செயலாக்க தோழரை தயவுசெய்து உள்ளீடு செய்க"
-#, c-format
-msgid "%d needs Q&A"
+msgid "Mobile"
+msgstr "அலை பேசி"
+
+msgid "Note"
+msgstr "குறிப்பு"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "நண்பர் குறும்படம்"
+
+msgid "Change his/her memo as you like"
msgstr ""
#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "நண்பரை சேர்"
+msgid "_Modify"
+msgstr "_மாற்று"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "_மாற்று"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "சேவையகம் மும்முரமாக இருக்கிறது"
-msgid "Input answer here"
+msgid "Your request was accepted."
msgstr ""
+msgid "Your request was rejected."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%u requires verification"
+msgstr "உரிமையாக்கல் தேவை"
+
+#, fuzzy
+msgid "Add buddy question"
+msgstr "தோழரை உங்களது பட்டியலில் சேர்க்கவா?"
+
+#, fuzzy
+msgid "Enter answer here"
+msgstr "பயனாளர் அடைவை கொடுக்கவும்"
+
#, fuzzy
msgid "Send"
msgstr "_அனுப்பு"
@@ -7487,19 +7696,20 @@ msgstr "செல்லாத கடவுச்சொல்"
msgid "Authorization denied message:"
msgstr "அனுமதி மறுத்தல் தகவல்:"
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr ""
#, fuzzy, c-format
-msgid "%d needs authentication"
+msgid "%u needs authorization"
msgstr "அனுமதித்தல் ஆரம்பம்"
#, fuzzy
msgid "Add buddy authorize"
msgstr "தோழரை உங்களது பட்டியலில் சேர்க்கவா?"
-msgid "Input request here"
-msgstr ""
+#, fuzzy
+msgid "Enter request here"
+msgstr "கலந்துரையாடல் சேவையகத்தை கொடுக்கவும்"
#, fuzzy
msgid "Would you be my friend?"
@@ -7522,7 +7732,7 @@ msgid "Failed sending authorize"
msgstr "தயவு செய்து எனக்கு அனுமதி தாருங்கள்!"
#, fuzzy, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr "தோழரை அரட்டையில் சேர்க்க தவறியது"
#, fuzzy, c-format
@@ -7568,6 +7778,10 @@ msgid "You can only search for permanent Qun\n"
msgstr ""
#, fuzzy
+msgid "(Invalid UTF-8 string)"
+msgstr "செல்லாத பதிலாள் அமைப்புகள்"
+
+#, fuzzy
msgid "Not member"
msgstr "இதிலிருந்து அங்கத்தினர்."
@@ -7611,15 +7825,18 @@ msgstr ""
msgid "Join QQ Qun"
msgstr "அரட்டையில் சேர்க"
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
+msgid "Input request here"
msgstr ""
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "தொலைபேசி எண்"
+
msgid "Successfully joined Qun"
msgstr ""
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
#, fuzzy
@@ -7630,7 +7847,7 @@ msgstr "ஒலி விருப்பங்கள்"
msgid "Failed:"
msgstr "தோல்வியுற்றது"
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
#, fuzzy
@@ -7642,11 +7859,11 @@ msgid ""
"this operation will eventually remove this Qun."
msgstr ""
-msgid "Sorry, you are not our style ..."
+msgid "Sorry, you are not our style"
msgstr ""
#, fuzzy
-msgid "Successfully changed Qun member"
+msgid "Successfully changed Qun members"
msgstr "தொலைபேசி எண்"
#, fuzzy
@@ -7657,7 +7874,7 @@ msgid "You have successfully created a Qun"
msgstr ""
#, fuzzy
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr "நீங்கள் இதை இந்த பயனாளருக்கு நண்பர் குறும்படமாக அமைக்க விரும்புகிறீர்களா?"
#, fuzzy
@@ -7665,28 +7882,28 @@ msgid "Setup"
msgstr "_அமை"
#, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr ""
#, c-format
-msgid "%d request to join Qun %d"
+msgid "%u request to join Qun %u"
msgstr ""
#, fuzzy, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr "தோழரை அரட்டையில் சேர்க்க தவறியது"
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr "தோழரை நீக்குக"
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "தோழரை நீக்குக"
#, fuzzy, c-format
msgid "Unknown-%d"
@@ -7807,6 +8024,13 @@ msgstr "<b>பயனாளர்:</b> %s<br>"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<b>குழுத் தலைப்பு</b> %s<br>"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<b>வெளிப் பயனாளர்</b><br>"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7814,7 +8038,7 @@ msgid "<i>Feel free to join us!</i> :)"
msgstr ""
#, fuzzy, c-format
-msgid "About OpenQ r%s"
+msgid "About OpenQ %s"
msgstr "கெய்ம் பற்றி"
#, fuzzy
@@ -7835,6 +8059,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "கெய்ம் பற்றி"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "வீட்டு முகவரி"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7866,7 +8094,6 @@ msgstr ""
msgid "QQ2008"
msgstr ""
-#. #endif
#, fuzzy
msgid "Connect by TCP"
msgstr "இணைத்தல்"
@@ -7879,6 +8106,9 @@ msgstr "சேவையகம் தளம்"
msgid "Show server news"
msgstr "சேவையகம் முகவரி"
+msgid "Show chat room when msg comes"
+msgstr ""
+
#, fuzzy
msgid "Keep alive interval (seconds)"
msgstr "வாசித்தல் பிழை"
@@ -7888,11 +8118,7 @@ msgid "Update interval (seconds)"
msgstr "வாசித்தல் பிழை"
#, fuzzy
-msgid "Can not decrypt server reply"
-msgstr "சேவையக தகவலை பெற இயலவில்லை"
-
-#, fuzzy
-msgid "Can not decrypt get server reply"
+msgid "Cannot decrypt server reply"
msgstr "சேவையக தகவலை பெற இயலவில்லை"
#, c-format
@@ -7915,21 +8141,23 @@ msgid "Activation required"
msgstr "பதிவு தேவைப்படுகிறது"
#, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr ""
#, fuzzy
-msgid "Keep alive error"
-msgstr "வாசித்தல் பிழை"
+msgid "Could not decrypt server reply"
+msgstr "சேவையக தகவலை பெற இயலவில்லை"
-msgid "Requesting captcha ..."
-msgstr ""
+#, fuzzy
+msgid "Requesting captcha"
+msgstr "உரையாடலை வேண்டுக"
-msgid "Checking code of captcha ..."
+msgid "Checking captcha"
msgstr ""
-msgid "Failed captcha verify"
-msgstr ""
+#, fuzzy
+msgid "Failed captcha verification"
+msgstr "யாகூ! அனுமதி தவறியது"
#, fuzzy
msgid "Captcha Image"
@@ -7939,7 +8167,7 @@ msgstr "படத்தை சேமி"
msgid "Enter code"
msgstr "கடவுச்சொல்லை உள்ளிடவும்"
-msgid "QQ Captcha Verifing"
+msgid "QQ Captcha Verification"
msgstr ""
#, fuzzy
@@ -7947,16 +8175,15 @@ msgid "Enter the text from the image"
msgstr "சேர்க்க வேண்டிய குழுவின் பெயரை உள்ளீடு செய்க."
#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
+msgid "Unknown reply when checking password (0x%02X)"
msgstr ""
#, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
msgstr ""
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "இணைக்க இயலவில்லை."
@@ -7964,12 +8191,6 @@ msgstr "இணைக்க இயலவில்லை."
msgid "Socket error"
msgstr "டோக்கன் பிழை"
-#, fuzzy, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr "சேவையகத்துடன் இணைக்கப்படவில்லை."
-
#, fuzzy
msgid "Unable to read from socket"
msgstr "கொள் குழியை (சாக்கெட்டை) வாசிக்க இயலவில்லை"
@@ -7982,11 +8203,11 @@ msgid "Connection lost"
msgstr "தொடர்பு முடிக்கப்பட்டது"
#, fuzzy
-msgid "Get server ..."
+msgid "Getting server"
msgstr "பயனாளர் தகவலை அமை..."
#, fuzzy
-msgid "Request token"
+msgid "Requesting token"
msgstr "கோரிக்கை நிராகரிக்கப்பட்டது"
msgid "Couldn't resolve host"
@@ -7997,17 +8218,13 @@ msgid "Invalid server or port"
msgstr "செல்லாத பயனாளர் பெயர் அல்லது கடவுச்சொல்"
#, fuzzy
-msgid "Connecting server ..."
-msgstr "சேவையகத்தை இணை"
+msgid "Connecting to server"
+msgstr "எஸ்ஐஎல்சி சேவயகத்துடன் இணைக்கிறது"
#, fuzzy
msgid "QQ Error"
msgstr "வாசிப்பதில் பிழை"
-#, fuzzy
-msgid "Failed to send IM."
-msgstr "அரட்டையில் சேர தவறியது"
-
#, fuzzy, c-format
msgid ""
"Server News:\n"
@@ -8017,6 +8234,10 @@ msgid ""
msgstr "ஐசிக்யூ சேவையக ஒளிபரப்பு"
#, fuzzy, c-format
+msgid "%s:%s"
+msgstr "%s - இதன் மீது %s (%s)"
+
+#, fuzzy, c-format
msgid "From %s:"
msgstr "அனுப்புநர்"
@@ -8026,32 +8247,30 @@ msgid ""
"%s"
msgstr "சேவையக கட்டளைகள்: %s"
-msgid "Unknow SERVER CMD"
-msgstr ""
+#, fuzzy
+msgid "Unknown SERVER CMD"
+msgstr "தெரியாத காரணம்."
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
#, fuzzy
msgid "QQ Qun Command"
msgstr "கட்டளை"
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr ""
-
-msgid "Can not decrypt login reply"
-msgstr ""
+#, fuzzy
+msgid "Could not decrypt login reply"
+msgstr "சேவையக தகவலை பெற இயலவில்லை"
#, fuzzy
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr "தெரியாத காரணம்."
#, fuzzy
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr "தெரியாத காரணம்."
#, fuzzy, c-format
@@ -8872,9 +9091,6 @@ msgstr "நிறுவனம்"
msgid "Unit"
msgstr "பிரிவு"
-msgid "Note"
-msgstr "குறிப்பு"
-
msgid "Join Chat"
msgstr "அரட்டையில் சேர்க"
@@ -9540,6 +9756,10 @@ msgstr "புரவலரை நிர்ணயிக்க முடியவ
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr "சிப் பயனர் பெயரில் வெள்ளை இடங்களோ @ குறியோ இருக்கக் கூடாது"
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "சேவையகம் தளம்"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -9574,192 +9794,10 @@ msgid "Auth Domain"
msgstr "ஆத் களப்பெயர்"
#, c-format
-msgid "Looking up %s"
-msgstr "மேலே பார்க்கிறது %s"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "%s க்கு இணைக்க இயலவில்லை"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "சேரவும்: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "%s கோப்புக்கு எழுத முடியவில்லை."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "%s கோப்பை படிக்க முடியவில்லை."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "தகவல் மிக நீளம், கடைசி %s பைட்டுகள் வெட்டப்பட்டன."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s உள் நுழைந்திருக்கவில்லை."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "%s ஐ எச்சரிக்க அனுமதி இல்லை."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "நீங்கள் சேவையக வேக வரையரையை மீறுவதால் செய்தி ஒன்று விடுபட்டது "
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "%s இல் அரட்டை கிடக்கவில்லை."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "நீங்கள் %s க்கு மிக அதிக வேகமாக செய்திகளை அனுப்புகிறீர்கள்."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "%s இடமிருந்து ஐஎம் ஐ நீங்கள் இழந்தீர்கள் ஏனென்றால் அது மிக நீளமானது."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "%s இடமிருந்து ஐஎம் ஐ நீங்கள் இழந்தீர்கள் ஏனென்றால் அது மிக வேகமாக அனுப்பப்பட்டது."
-
-#, c-format
-msgid "Failure."
-msgstr "தோல்வி.."
-
-#, c-format
-msgid "Too many matches."
-msgstr "மிக அதிகமான பொருத்தங்கள்."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "மேலும் பல தகுதியாக்கங்கள் தேவை."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "அடைவு சேவை தற்காலிகமாக கிடைக்கவில்லை."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "மின்னஞ்சலை பார்ப்பது தடைசெய்யப்பட்டது."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "முக்கியச்சொல் உதாசீனப் படுத்தப் பட்டது."
-
-#, c-format
-msgid "No keywords."
-msgstr "திறவுவார்த்தைகள் இல்லை."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "பயனருக்கு அடைவு தகவல் இல்லை ."
-
-#, c-format
-msgid "Country not supported."
-msgstr "நாடு ஆதரிக்கப்படவில்லை."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "தெரியாத தோல்வி: %s."
-
-#, fuzzy, c-format
-msgid "Incorrect username or password."
-msgstr "தவறான செல்லப்பெயர் (அ) தவறான கடவுச்சொல்."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "சேவை தற்காலிகமாக கிடைக்கவில்லை."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "உள் நுழைய உங்கள் எச்சரிக்கை மட்டம் இப்போது மிக அதிகமாக உள்ளது."
-
-#, c-format
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
-msgstr ""
-"நீங்கள் அடிக்கடி இணைப்பை பெற்று துண்டித்துள்ளீர்கள். பத்து நிமிடங்கள் பொறுத்து மீண்டும் "
-"தொடங்கவும். தொடர்ந்து முயன்றால் மேலும் அதிக நேரம் காக்க வேண்டியிருக்கும்."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "தெரியாத நுழைவு பிழை ஏற்பட்டுள்ளது: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "தெரியாத பிழை %d, ஏற்பட்டுள்ளது. தகவல்: %s"
-
-msgid "Invalid Groupname"
-msgstr "செல்லாத குழுப்பெயர்"
-
-msgid "Connection Closed"
-msgstr "தொடர்பு முடிக்கப்பட்டது"
-
-msgid "Waiting for reply..."
-msgstr "பதிலுக்காக காத்திருத்தல்..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
+msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
-"டிஓசி அதனுடைய பொறுத்தல் நிலையிலிருந்து மீண்டுள்ளது. நீங்கள் மீண்டும் தகவல்களை அனுப்பலாம்."
-
-msgid "Password Change Successful"
-msgstr "கடவுச்சொல் வெற்றிகரமாக மாற்றப்பட்டது"
-
-msgid "_Group:"
-msgstr "_க குழு:"
-msgid "Get Dir Info"
-msgstr "அடைவு தகவல்களை பெறு"
-
-msgid "Set Dir Info"
-msgstr "அடைவு தகவல்களை அமை"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "%s யை எழுதுவதற்காக திறக்கமுடியவில்லை!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "கோப்பு அனுப்புதலில் பிழை; ஒருவேளை மறுபக்கத்தில் தவிர்த்திருக்கலாம்."
-
-msgid "Could not connect for transfer."
-msgstr "அனுப்புவதற்கு இணைக்க முடியவில்லை."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "கோப்பின் தலைப்பை எழுத இயலவில்லை. கோப்பு அனுப்பப்படமாட்டாது."
-
-#, fuzzy
-msgid "Save As..."
-msgstr "குறும்படத்தை இப்படிச்சேமி..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s %s ஐ %d கோப்பை பெற்றுக் கொள்ள வேண்டுகிறார்: %s (%.2f %s)%s%s"
-msgstr[1] "%s %s ஐ %d கோப்புகளை பெற்றுக் கொள்ள வேண்டுகிறார்: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s, உங்களை அவருக்கு கோப்பை அனுப்பக்கோருகிறார்"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "டிஓசி வரைமுறை சொருகுபொருள்"
-
-#, c-format
-msgid "%s has sent you a webcam invite, which is not yet supported."
+msgid "Your SMS was not delivered"
msgstr ""
msgid "Your Yahoo! message did not get sent."
@@ -10032,13 +10070,9 @@ msgstr "அருமையான தொடர்பு 3"
msgid "Last Update"
msgstr "கடைசியாக புதுப்பித்தது"
-#, c-format
-msgid "User information for %s unavailable"
-msgstr "%s க்கான பயனாளர் குறிப்பு இல்லை"
-
+#, fuzzy
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr ""
"மன்னிக்கவும், இந்த விவரக்குறிப்பு ஆதரவற்ற மொழியிலோ அல்லது ஒழுங்குவகையிலோ உள்ளது."
@@ -10371,9 +10405,6 @@ msgstr "தொந்தரவு செய்ய வேண்டாம்"
msgid "Extended away"
msgstr "வெளியே சென்றது நீட்டிக்கப்பட்டது"
-msgid "Mobile"
-msgstr "அலை பேசி"
-
msgid "Listening to music"
msgstr ""
@@ -10415,18 +10446,6 @@ msgstr "+++ %s செயலுக்கு வந்தது"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "%s ஐ வாசிப்பதில் பிழை"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"உங்களது %s ஐ படிக்கும்பொழுது பிழை ஏற்பட்டது. அவை ஏற்றப்படவில்லை, மற்றும் பழைய கோப்பு %"
-"s~ என மறுபெயரிடப்பட்டது."
-
msgid "Calculating..."
msgstr "கணக்கிடல்..."
@@ -10501,6 +10520,13 @@ msgstr ""
msgid "Unable to connect to %s: %s"
msgstr "புரவலருடன் இணைக்க முடியவில்லை"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+"உள்ளே நுழைய சேவையகத்துக்கு டிஎல்எஸ்/எஸ்எஸ்எல் தேவை. டிஎல்எஸ்/எஸ்எஸ்எல் ஆதரவு ஏதுமில்லை."
+
#, c-format
msgid " - %s"
msgstr ""
@@ -10534,6 +10560,18 @@ msgstr "இணைப்பு மீண்டும் அமைக்கப்
msgid "Address already in use."
msgstr "இந்த அரட்டை பெயர் ஏற்கனவே உபயோகத்தில் உள்ளது."
+#, c-format
+msgid "Error Reading %s"
+msgstr "%s ஐ வாசிப்பதில் பிழை"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"உங்களது %s ஐ படிக்கும்பொழுது பிழை ஏற்பட்டது. அவை ஏற்றப்படவில்லை, மற்றும் பழைய கோப்பு %"
+"s~ என மறுபெயரிடப்பட்டது."
+
msgid "Internet Messenger"
msgstr "இணையதள தூதுவர்"
@@ -10581,10 +10619,8 @@ msgstr "புதிய அஞ்சல் அறவிப்புகள்"
msgid "Use this buddy _icon for this account:"
msgstr ""
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s விருப்பங்கள்"
+msgid "_Advanced"
+msgstr "_க கூடுதல் "
#, fuzzy
msgid "Use GNOME Proxy Settings"
@@ -10620,9 +10656,6 @@ msgstr "நீங்கள் மெய்யாக கூர்ந்து க
msgid "you can see the butterflies mating"
msgstr "பட்டுப்பூச்சிகள் உறவாடுவதை உங்களால் பார்க்க இயலும்"
-msgid "Proxy Options"
-msgstr "பதிலாள் விருப்பங்கள்"
-
msgid "Proxy _type:"
msgstr "பதிலாள் _வகை:"
@@ -10651,8 +10684,9 @@ msgstr "_அடிப்படை"
msgid "Create _this new account on the server"
msgstr ""
-msgid "_Advanced"
-msgstr "_க கூடுதல் "
+#, fuzzy
+msgid "_Proxy"
+msgstr "பதில் மாற்று"
msgid "Enabled"
msgstr "செயலாக்கப்பட்டது"
@@ -10719,6 +10753,17 @@ msgid "I_M"
msgstr "I_M"
#, fuzzy
+msgid "_Audio Call"
+msgstr "_அரட்டையை சேர்க்கவும்"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "வீடியோ அரட்டை"
+
+#, fuzzy
msgid "_Send File..."
msgstr "கோப்பை _அனுப்பு"
@@ -10870,6 +10915,10 @@ msgstr "/கருவிகள்/நண்பர் _நிமித்தச
msgid "/Tools/_Certificates"
msgstr "/கருவிகள்/_ம முன்னுரிமைகள்"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/கருவிகள்/தனிமை"
+
msgid "/Tools/Plu_gins"
msgstr "/கருவிகள்/_ச சொருகுபொருள்கள்"
@@ -10879,10 +10928,6 @@ msgstr "/கருவிகள்/_ம முன்னுரிமைகள்"
msgid "/Tools/Pr_ivacy"
msgstr "/கருவிகள்/_தனிமை"
-#, fuzzy
-msgid "/Tools/Smile_y"
-msgstr "/கருவிகள்/தனிமை"
-
msgid "/Tools/_File Transfers"
msgstr "/கருவிகள்/_க கோப்பு பரிமாற்றங்கள்"
@@ -11007,8 +11052,8 @@ msgstr "கைமுறையாக"
msgid "By status"
msgstr "நிலையை கொண்டு"
-msgid "By log size"
-msgstr "பதிவுகள் அளவைக்கொண்டு"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -11026,6 +11071,9 @@ msgstr "இணை"
msgid "Re-enable"
msgstr "கணக்கை செயலாக்கு"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr ""
@@ -11119,6 +11167,9 @@ msgstr ""
msgid "A_lias:"
msgstr "புனைப்பெயர்:"
+msgid "_Group:"
+msgstr "_க குழு:"
+
msgid "Auto_join when account becomes online."
msgstr ""
@@ -11171,14 +11222,6 @@ msgstr "நீங்கள் அந்த தோழரை அழைப்பத
msgid "Invite Buddy Into Chat Room"
msgstr "தோழரை அரட்டை அறைக்கு அழை"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"நீங்கள் அழைக்க விரும்பும் நண்பரின் பெயர் மற்றும், விருப்பப்பட்ட அழைப்பு தகவலையும் தயவுசெய்து "
-"கொடுக்கவும்."
-
msgid "_Buddy:"
msgstr "_நண்பர்:"
@@ -11255,6 +11298,22 @@ msgstr "/உரையாடல்/_இப்படிச்சேமி..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/உரையாடல்/_ட பின் உருட்டலை துடை"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/உரையாடல்/_ம மூடு"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/உரையாடல்/_ம மூடு"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/உரையாடல்/_ம மூடு"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/உரையாடல்/_பதிவை காண்"
+
msgid "/Conversation/Se_nd File..."
msgstr "/உரையாடல்/கோப்பை _அனுப்பு..."
@@ -11332,6 +11391,18 @@ msgstr "/_உரையாடல்"
msgid "/Conversation/View Log"
msgstr "/உரையாடல்/பதிவை காண்"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/உரையாடல்/_ம மூடு"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/உரையாடல்/பதிவை காண்"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/உரையாடல்/_ம மூடு"
+
msgid "/Conversation/Send File..."
msgstr "/உரையாடல்/கோப்பை அனுப்பு..."
@@ -11521,6 +11592,9 @@ msgstr "முகவரி"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "ஆதரவு"
@@ -11669,6 +11743,10 @@ msgid "Ubuntu Georgian Translators"
msgstr "தற்போதைய மொழிபெயர்ப்பாளர்கள்"
#, fuzzy
+msgid "Khmer"
+msgstr "ஒபேரா"
+
+#, fuzzy
msgid "Kannada"
msgstr "தடுக்கப்பட்டது"
@@ -11691,6 +11769,10 @@ msgid "Macedonian"
msgstr "மெர்ஸிடோனியன்"
#, fuzzy
+msgid "Mongolian"
+msgstr "மெர்ஸிடோனியன்"
+
+#, fuzzy
msgid "Bokmål Norwegian"
msgstr "நார்வேஜியன்"
@@ -11807,8 +11889,25 @@ msgstr ""
"இல் அதன் பங்களிப்பவர்களுக்கு காப்புரிமை உள்ளது. 'COPYRIGHT' கோப்பில் அவர்கள் பட்டியலை "
"பார்க்கலாம். இந்த நிரலுக்கு எந்தவித உத்திரவாதமும் கிடையாது.<BR><BR>"
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, fuzzy, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"4\">IRC:</FONT> #Pidgin on irc.freenode.net<BR><BR>"
+
#, fuzzy, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"4\">IRC:</FONT> #Pidgin on irc.freenode.net<BR><BR>"
msgid "Current Developers"
@@ -12132,15 +12231,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr "புதிய அஞ்சல் அறவிப்புகள்"
-msgid "_Copy Email Address"
-msgstr "மின்னஞ்சல் முகவரியை _நகலெடு"
-
-msgid "_Open Link in Browser"
-msgstr "தொடர்பை உலாவலில் _த திற"
-
-msgid "_Copy Link Location"
-msgstr "தொடர்பு பகுதியை _நகல் செய்"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12411,6 +12501,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12439,6 +12530,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12498,11 +12590,27 @@ msgstr ""
msgid "Pidgin"
msgstr "அழைப்பு"
-msgid "Open All Messages"
-msgstr "அனைத்தும் செய்திகளையும் திறக்க"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\"> உங்களுக்கு அஞ்சல் வந்துள்ளது!</span>"
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "கணக்கிடல்..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -12532,6 +12640,27 @@ msgid ""
msgstr ""
"'கைமுறை' உலாவி கட்டளை தேர்வு செய்யப்பட்டுள்ளது, ஆனால் எந்த கட்டளையும் அமைக்கப்படவில்லை."
+msgid "Open All Messages"
+msgstr "அனைத்தும் செய்திகளையும் திறக்க"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\"> உங்களுக்கு அஞ்சல் வந்துள்ளது!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "புதிய நண்பர் நிமித்தச் செயலாக்குதல்"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\"> உங்களுக்கு அஞ்சல் வந்துள்ளது!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "தெரியாத தகவல்"
+
msgid "The following plugins will be unloaded."
msgstr "பின்வரும் சொருகிகள் கீழ் இறக்கப் படும்."
@@ -12584,6 +12713,10 @@ msgstr "<b>சொருகுபொருள் விவரம்</b>"
msgid "Select a file"
msgstr "கோப்பை தேர்வு செய்க"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "நண்பர் நிமித்தச் செயலை தொகு"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "யார் மீது நிமித்தச் செயலாக்க வேண்டும்"
@@ -12655,6 +12788,50 @@ msgstr "_மீண்டும் மீண்டும் நிகழும்
msgid "Pounce Target"
msgstr "நிமித்தச் செயலாக்குதலின் இலக்கு"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "_தட்டச்சிட ஆரம்பிக்கிறார்"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "நண்பர் தட்டச்சுசெய்கிறார்..."
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "_நுழைகிறார்"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s ஓய்வாக நிலையிலிருந்து திரும்பி இருக்கிறார் (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "வெளியிலிருந்து _த திரும்புகிறார்"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "தட்டச்சிடல் நிறுத்தப்பட்டது"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "_வ வெளியேற்றம்"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "_ஓய்வாக இருக்கிறார்"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "வெளிச்செல்லும் பொழுது"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "_தகவல் அனுப்பு"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "தெரியாத நிமித்தச் செயலாக்கல் நிகழ்வு. இதை அறிவியுங்கள்!"
+
msgid "Smiley theme failed to unpack."
msgstr "முகபாவனை உறைபொருளை கட்டுப்பிரிக்க தவறியது."
@@ -12678,6 +12855,12 @@ msgstr ""
msgid "Cl_ose conversations with the Escape key"
msgstr "%s உடன் உரையாடல்கள்"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "நண்பர் பட்டியல்"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "கணினி தட்டின் குறும்படம்"
@@ -12800,9 +12983,6 @@ msgstr ""
msgid "Cannot start browser configuration program."
msgstr "பயனரின் தகவலை பெற இயலவில்லை"
-msgid "ST_UN server:"
-msgstr "ஸ்_டன் சேவயகம்:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr ""
@@ -12827,6 +13007,10 @@ msgstr "_ஆரம்ப தளம்:"
msgid "_End port:"
msgstr "_ம முடிவு தளம்:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
#, fuzzy
msgid "Proxy Server &amp; Browser"
msgstr "பதிலாள் சேவையகம்"
@@ -12856,6 +13040,10 @@ msgstr "பதிலாள் சேவையகம்"
msgid "No proxy"
msgstr "பதிலாள் இல்லை"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "_பயனாளர்:"
@@ -13020,13 +13208,13 @@ msgstr "இருவரும் வெளியே மற்றும் ஓய
msgid "Auto-away"
msgstr "தானியங்கி-வெளிச் செலவு"
-msgid "Change status when _idle"
-msgstr "_ஓய்வாக இருக்கும்பொழுது நிலையை மாற்று"
-
#, fuzzy
msgid "_Minutes before becoming idle:"
msgstr "நிலையை _மாற்றுவதற்கு முன் நிமிடங்கள்:"
+msgid "Change status when _idle"
+msgstr "_ஓய்வாக இருக்கும்பொழுது நிலையை மாற்று"
+
msgid "Change _status to:"
msgstr "_ந நிலையை இதற்கு மாற்று:"
@@ -13179,6 +13367,12 @@ msgstr "_ச சேமித்து உபயோகிக்கவும்"
msgid "Status for %s"
msgstr "%s ற்கான நிலை"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
#, fuzzy
msgid "Custom Smiley"
msgstr "குறு நகையி (முகபாவனையை) நுழை"
@@ -13189,15 +13383,15 @@ msgstr ""
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
+msgstr ""
+
#, fuzzy
msgid "Duplicate Shortcut"
msgstr "இரட்டையான நகல் சரிசெய்தல்"
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
-msgstr ""
-
#, fuzzy
msgid "Please select an image for the smiley."
msgstr "_வ சில கணக்குகளுக்கு வேறுபாடான நிலைகளை பயன்படுத்து"
@@ -13211,17 +13405,22 @@ msgid "Add Smiley"
msgstr "சிரி!"
#, fuzzy
-msgid "Smiley _Image"
+msgid "_Image:"
msgstr "படத்தை சேமி"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr ""
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "தளம்"
#, fuzzy
msgid "Smiley"
msgstr "சிரி!"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "தளம்"
+
msgid "Custom Smiley Manager"
msgstr ""
@@ -13350,6 +13549,16 @@ msgid ""
"Failed to load image '%s': reason not known, probably a corrupt image file"
msgstr ""
+#, fuzzy
+msgid "_Open Link"
+msgstr "_த தொடர்பை இதில் திற:"
+
+msgid "_Copy Link Location"
+msgstr "தொடர்பு பகுதியை _நகல் செய்"
+
+msgid "_Copy Email Address"
+msgstr "மின்னஞ்சல் முகவரியை _நகலெடு"
+
msgid "Save File"
msgstr "கோப்பை சேமிக்கவும்"
@@ -14352,10 +14561,6 @@ msgid "Only when docked"
msgstr "நிலை நிறுத்திய பொழுது மட்டும்"
#, fuzzy
-msgid "_Flash window when chat messages are received"
-msgstr "_ஒ தகவல்கள் பெறப்படும்பொழுது சாளரத்தை ஒளிரச்செய்"
-
-#, fuzzy
msgid "Windows Pidgin Options"
msgstr "நுழையும் விருப்பங்கள்"
@@ -14410,6 +14615,224 @@ msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr ""
#, fuzzy
+#~ msgid "Invite message"
+#~ msgstr "தகவலில் சேர்க"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "நீங்கள் அழைக்க விரும்பும் நண்பரின் பெயர் மற்றும், விருப்பப்பட்ட அழைப்பு தகவலையும் "
+#~ "தயவுசெய்து கொடுக்கவும்."
+
+#, fuzzy
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "குறிப்புகள் முகவரி புத்தகத்தை தேர்வு செய்"
+
+#~ msgid ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+#~ msgstr ""
+#~ "நீங்கள் இப்போது இணப்பிலிருந்து நீக்கப் படலாம். இது சரியாகும் வரை டிஓசி யை பயன் படுத்த "
+#~ "நினைக்கலாம். மேம்படுத்துவதற்கு %s ஐ பார்க்கவும்."
+
+#, fuzzy
+#~ msgid "Add buddy Q&A"
+#~ msgstr "நண்பரை சேர்"
+
+#, fuzzy
+#~ msgid "Can not decrypt get server reply"
+#~ msgstr "சேவையக தகவலை பெற இயலவில்லை"
+
+#, fuzzy
+#~ msgid "Keep alive error"
+#~ msgstr "வாசித்தல் பிழை"
+
+#, fuzzy
+#~ msgid ""
+#~ "Lost connection with server:\n"
+#~ "%d, %s"
+#~ msgstr "சேவையகத்துடன் இணைக்கப்படவில்லை."
+
+#, fuzzy
+#~ msgid "Connecting server ..."
+#~ msgstr "சேவையகத்தை இணை"
+
+#, fuzzy
+#~ msgid "Failed to send IM."
+#~ msgstr "அரட்டையில் சேர தவறியது"
+
+#~ msgid "Looking up %s"
+#~ msgstr "மேலே பார்க்கிறது %s"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "%s க்கு இணைக்க இயலவில்லை"
+
+#~ msgid "Signon: %s"
+#~ msgstr "சேரவும்: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "%s கோப்புக்கு எழுத முடியவில்லை."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "%s கோப்பை படிக்க முடியவில்லை."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "தகவல் மிக நீளம், கடைசி %s பைட்டுகள் வெட்டப்பட்டன."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s உள் நுழைந்திருக்கவில்லை."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "%s ஐ எச்சரிக்க அனுமதி இல்லை."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr "நீங்கள் சேவையக வேக வரையரையை மீறுவதால் செய்தி ஒன்று விடுபட்டது "
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "%s இல் அரட்டை கிடக்கவில்லை."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "நீங்கள் %s க்கு மிக அதிக வேகமாக செய்திகளை அனுப்புகிறீர்கள்."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "%s இடமிருந்து ஐஎம் ஐ நீங்கள் இழந்தீர்கள் ஏனென்றால் அது மிக நீளமானது."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr "%s இடமிருந்து ஐஎம் ஐ நீங்கள் இழந்தீர்கள் ஏனென்றால் அது மிக வேகமாக அனுப்பப்பட்டது."
+
+#~ msgid "Failure."
+#~ msgstr "தோல்வி.."
+
+#~ msgid "Too many matches."
+#~ msgstr "மிக அதிகமான பொருத்தங்கள்."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "மேலும் பல தகுதியாக்கங்கள் தேவை."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "அடைவு சேவை தற்காலிகமாக கிடைக்கவில்லை."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "மின்னஞ்சலை பார்ப்பது தடைசெய்யப்பட்டது."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "முக்கியச்சொல் உதாசீனப் படுத்தப் பட்டது."
+
+#~ msgid "No keywords."
+#~ msgstr "திறவுவார்த்தைகள் இல்லை."
+
+#~ msgid "User has no directory information."
+#~ msgstr "பயனருக்கு அடைவு தகவல் இல்லை ."
+
+#~ msgid "Country not supported."
+#~ msgstr "நாடு ஆதரிக்கப்படவில்லை."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "தெரியாத தோல்வி: %s."
+
+#, fuzzy
+#~ msgid "Incorrect username or password."
+#~ msgstr "தவறான செல்லப்பெயர் (அ) தவறான கடவுச்சொல்."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "சேவை தற்காலிகமாக கிடைக்கவில்லை."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "உள் நுழைய உங்கள் எச்சரிக்கை மட்டம் இப்போது மிக அதிகமாக உள்ளது."
+
+#~ 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 ""
+#~ "நீங்கள் அடிக்கடி இணைப்பை பெற்று துண்டித்துள்ளீர்கள். பத்து நிமிடங்கள் பொறுத்து மீண்டும் "
+#~ "தொடங்கவும். தொடர்ந்து முயன்றால் மேலும் அதிக நேரம் காக்க வேண்டியிருக்கும்."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "தெரியாத நுழைவு பிழை ஏற்பட்டுள்ளது: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "தெரியாத பிழை %d, ஏற்பட்டுள்ளது. தகவல்: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "செல்லாத குழுப்பெயர்"
+
+#~ msgid "Connection Closed"
+#~ msgstr "தொடர்பு முடிக்கப்பட்டது"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "பதிலுக்காக காத்திருத்தல்..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr ""
+#~ "டிஓசி அதனுடைய பொறுத்தல் நிலையிலிருந்து மீண்டுள்ளது. நீங்கள் மீண்டும் தகவல்களை அனுப்பலாம்."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "கடவுச்சொல் வெற்றிகரமாக மாற்றப்பட்டது"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "அடைவு தகவல்களை பெறு"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "அடைவு தகவல்களை அமை"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "%s யை எழுதுவதற்காக திறக்கமுடியவில்லை!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr "கோப்பு அனுப்புதலில் பிழை; ஒருவேளை மறுபக்கத்தில் தவிர்த்திருக்கலாம்."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "அனுப்புவதற்கு இணைக்க முடியவில்லை."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "கோப்பின் தலைப்பை எழுத இயலவில்லை. கோப்பு அனுப்பப்படமாட்டாது."
+
+#, fuzzy
+#~ msgid "Save As..."
+#~ msgstr "குறும்படத்தை இப்படிச்சேமி..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s %s ஐ %d கோப்பை பெற்றுக் கொள்ள வேண்டுகிறார்: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s %s ஐ %d கோப்புகளை பெற்றுக் கொள்ள வேண்டுகிறார்: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s, உங்களை அவருக்கு கோப்பை அனுப்பக்கோருகிறார்"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "டிஓசி வரைமுறை சொருகுபொருள்"
+
+#~ msgid "User information for %s unavailable"
+#~ msgstr "%s க்கான பயனாளர் குறிப்பு இல்லை"
+
+#~ msgid "%s Options"
+#~ msgstr "%s விருப்பங்கள்"
+
+#~ msgid "Proxy Options"
+#~ msgstr "பதிலாள் விருப்பங்கள்"
+
+#~ msgid "By log size"
+#~ msgstr "பதிவுகள் அளவைக்கொண்டு"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "தொடர்பை உலாவலில் _த திற"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "ஸ்_டன் சேவயகம்:"
+
+#, fuzzy
+#~ msgid "Smiley _Image"
+#~ msgstr "படத்தை சேமி"
+
+#, fuzzy
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "_ஒ தகவல்கள் பெறப்படும்பொழுது சாளரத்தை ஒளிரச்செய்"
+
+#, fuzzy
#~ msgid "A group with the name already exists."
#~ msgstr "அதே பெயரில் கோப்பு ஏற்கனவே உள்ளது"
@@ -14474,13 +14897,6 @@ msgstr ""
#~ msgstr "உறுதியாக %s யை அழிக்கலாமா?"
#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr "%s - இதன் மீது %s (%s)"
-
-#, fuzzy
#~ msgid "System Message"
#~ msgstr "கணினி பதிவு"
@@ -15276,8 +15692,8 @@ msgstr ""
#~ msgid ""
#~ "When this happens, TOC ignores any messages sent to it, and may kick you "
-#~ "off if you send a message. Pidgin will prevent anything from going through. "
-#~ "This is only temporary, please be patient."
+#~ "off if you send a message. Pidgin will prevent anything from going "
+#~ "through. This is only temporary, please be patient."
#~ msgstr ""
#~ "இம்மாதிரி நிகழும்பொழுது, டிஓசி எந்த செய்தியையும் தவிர்த்துவிடும், மற்றும் நீங்கள் தகவல் "
#~ "அனுப்பினால் உங்களை உதைத்து தள்ளிவிடும். கெய்ம், எது சென்றாலும் தடுக்கவும்த்துவிடும். "
@@ -15295,8 +15711,8 @@ msgstr ""
#~ msgid ""
#~ "The normal authentication method has failed. This means either your "
#~ "password is incorrect, or Yahoo!'s authentication scheme has changed. "
-#~ "Pidgin will now attempt to log in using Web Messenger authentication, which "
-#~ "will result in reduced functionality and features."
+#~ "Pidgin will now attempt to log in using Web Messenger authentication, "
+#~ "which will result in reduced functionality and features."
#~ msgstr ""
#~ "சாதாரண அனுமதிக்கும் முறை செயலிலந்தது. உங்களது கடவுச்சொல்லோ அல்லது யாகூ! வின் "
#~ "அனுமதிக்கும் முறையோ மாறியிருக்கவேண்டும். இப்பொழுது கெய்ம் வலை செய்தியாளர் உண்மை "
diff --git a/po/te.po b/po/te.po
index f43489a40a..19dcc5ea25 100644
--- a/po/te.po
+++ b/po/te.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin Telugu\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
+"POT-Creation-Date: 2009-04-30 10:40-0400\n"
"PO-Revision-Date: 2007-11-14 14:05+0530\n"
"Last-Translator: RKVS Raman <raman@cdacbangalore.in>\n"
"Language-Team: GIST CDAC Pune / BharateeyaOO.o <info.gist@cdac.in / "
@@ -26,13 +26,13 @@ msgstr "ఫ్రెంచ్ "
msgid "%s. Try `%s -h' for more information.\n"
msgstr "మరింత సమాచారం కోసం %s. ను `%s -h'అడుగుతున్నారు.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -633,20 +633,6 @@ msgstr "లాగింగ్ నిలిచిపోయింది. ఈ స
msgid "Send To"
msgstr "_వీరికి పంపండి"
-#, fuzzy
-msgid "Invite message"
-msgstr "సందేశంలో పొందుపరచు"
-
-msgid "Invite"
-msgstr "ఆహ్వానించు "
-
-# Put our happy label in it.
-#, fuzzy
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr "మీరు ఆహ్వానించదల్చుకున్న మిత్రుని పేరును ఆప్షనల్ ఆహ్వాన సందేశంతో పాటుగా ఎంటర్ చేయండి."
-
# Conversations
# Conversation menu
#, fuzzy
@@ -921,6 +907,44 @@ msgstr "సంభాషణలు "
msgid "System Log"
msgstr "సిస్టం లాగ్"
+#, fuzzy
+msgid "Calling ... "
+msgstr "లెక్కిస్తూ..."
+
+msgid "Hangup"
+msgstr ""
+
+# *
+# * A wrapper for Pidgin_request_action() that uses Accept and Cancel buttons.
+#. Number of actions
+#, fuzzy
+msgid "Accept"
+msgstr "_అంగీకరించు "
+
+msgid "Reject"
+msgstr "నిరాకరించు"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "మీరు చానల్‌ %s%s లో భాగమయ్యారు"
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "ఇ-మెయిళ్లు "
@@ -956,6 +980,9 @@ msgstr "కొనసాగించు"
msgid "IM"
msgstr "IM"
+msgid "Invite"
+msgstr "ఆహ్వానించు "
+
msgid "(none)"
msgstr "(ఏమీ లేదు)"
@@ -1170,7 +1197,6 @@ msgstr "%s వెళ్లిపోయారు. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s మీకు ఓ సందేశం పంపారు.(%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "తెలియని వారెవరో దూసుకొచ్చారు. దయచేసి రిపోర్టు చేయండి!"
@@ -1223,7 +1249,6 @@ msgid "Change status to"
msgstr " _స్థాయిని కు మార్చు:"
# Conversations
-#. Conversations
msgid "Conversations"
msgstr "సంభాషణలు "
@@ -1577,7 +1602,6 @@ msgstr "కొత్త సంభాషణ ప్రారంభించిన
# Online will set the user to the exposure they have in their options (defaulting to REALM-VISIBLE),
# Hidden, will set the user's exposure to OPSTAFF
# Away won't change their exposure but will set an auto away message (for IMs only)
-#, c-format
msgid "Online"
msgstr "ఆన్‌లైన్ "
@@ -1626,6 +1650,28 @@ msgstr "Gntచివరిలాగ్"
msgid "Lastlog plugin."
msgstr "చివరిలాగ్ ప్లగ్ ఇన్"
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
# And now for the buttons
msgid "accounts"
msgstr "అకౌంట్లు"
@@ -1730,16 +1776,6 @@ msgstr ""
msgid "SSL Certificate Verification"
msgstr ""
-# *
-# * A wrapper for Pidgin_request_action() that uses Accept and Cancel buttons.
-#. Number of actions
-#, fuzzy
-msgid "Accept"
-msgstr "_అంగీకరించు "
-
-msgid "Reject"
-msgstr "నిరాకరించు"
-
msgid "_View Certificate..."
msgstr ""
@@ -1880,6 +1916,17 @@ msgstr "%s రూమ్ వదలి వెళ్లారు. "
msgid "%s left the room (%s)."
msgstr "%s రూమ్ వదలి వెళ్ళారు (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "కన్ఫరెన్స్ కు స్వాగతం"
+
+# Put our happy label in it.
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr "మీరు ఆహ్వానించదల్చుకున్న మిత్రుని పేరును ఆప్షనల్ ఆహ్వాన సందేశంతో పాటుగా ఎంటర్ చేయండి."
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "కనెక్షన్ పొందడంలో వైఫల్యం: %s"
@@ -2018,7 +2065,6 @@ msgstr "%s నుండి %s ను ట్రాన్స్ఫర్ చేయ
msgid "Transfer of file %s complete"
msgstr "%s ఫైలు బదిలీ పూర్తయినది "
-#, c-format
msgid "File transfer complete"
msgstr "ఫైలు బదిలీ పూర్తయినది"
@@ -2026,7 +2072,6 @@ msgstr "ఫైలు బదిలీ పూర్తయినది"
msgid "You canceled the transfer of %s"
msgstr "%s ఫైలు బదిలీని మీరు రద్దుచేశారు"
-#, c-format
msgid "File transfer cancelled"
msgstr "ఫైలు బదిలీ రద్దయినది"
@@ -2215,7 +2260,6 @@ msgstr "(%s) %s <ఆటో రిప్లై>: %s\n"
msgid "You are using %s, but this plugin requires %s."
msgstr "%s ని మీరు ఉపయోగిస్తున్నారు, కానీ ఈ ప్లగ్ ఇన్ కు %s అవసరం."
-#, c-format
msgid "This plugin has not defined an ID."
msgstr "ఈ ప్లగ్ ఇన్ ను IDలో నిర్వచించలేదు."
@@ -2747,6 +2791,32 @@ msgstr "ఆఫ్ లైన్ సందేశాలను పౌన్స్
msgid "Do not ask. Always save in pounce."
msgstr "మళ్ళీ అడగకండి. ఎప్పుడూ పౌన్స్ లోనే సేవ్ చేయండి."
+#, fuzzy
+msgid "One Time Password"
+msgstr "పాస్ వర్డ్ ను ఎంటర్ చేయండి"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
# *< type
# *< ui_requirement
# *< flags
@@ -3043,7 +3113,6 @@ msgid ""
"Unable to establish connection with the local mDNS server. Is it running?"
msgstr "లోకల్ mDNS సర్వర్ తో కనెక్షన్ కుదరటంలేదు. ఆ సర్వర్ అమలులో ఉందా?"
-#. Creating the options for the protocol
msgid "First name"
msgstr "పేరులోని మొదటి భాగం"
@@ -3078,6 +3147,11 @@ msgstr "Bonjour ప్రొటోకాల్ ప్లగ్ ఇన్"
msgid "Purple Person"
msgstr "Purple పర్సన్"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "ప్రదేశం "
+
msgid "Bonjour"
msgstr "Bonjour"
@@ -3236,13 +3310,13 @@ msgid "Add to chat..."
msgstr "సంభాషణకు చేర్చండి..."
# hacks
+#. Global
msgid "Available"
msgstr "లభించును"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "దూరంగా "
@@ -3612,6 +3686,17 @@ msgid ""
msgstr ""
"మీరు ఎంపిక చేసినఅకౌంటు నేమ్ ను సర్వర్ నిరాకరించింది. బహుశా అందులో చెల్లని అక్షరాలుండవచ్చును. "
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "ఈ సంభాషణ పేరు ఇప్పటికే ఉపయోగంలో ఉంది"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "ముద్దుపేరు "
+
msgid "Cannot change nick"
msgstr "నిక్ ను మార్చజాలదు"
@@ -3880,6 +3965,41 @@ msgstr "సర్వర్‌నుంచి చెల్లని సవాల
msgid "SASL error"
msgstr "SASL పొరపాటు"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "కారణం ఇవ్వలేదు. "
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "సపోర్టులేని వెర్షన్ "
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"సర్వర్ తో కనెక్షన్ సాధ్యపడలేదు: \n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"సర్వర్ తో కనెక్షన్ సాధ్యపడలేదు: \n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "కనెక్షన్ ను ప్రారంభించలేకపోతున్నాం"
+
+msgid "Unable to create socket"
+msgstr "సాకెట్‌ను సృష్టించలేదు"
+
+msgid "Write error"
+msgstr "రైట్ చేయడంలో పొరపాటు"
+
msgid "Full Name"
msgstr "పూర్తి పేరు "
@@ -3945,6 +4065,10 @@ msgstr "క్లైంటు"
msgid "Operating System"
msgstr "ఆపరేటింగ్ సిస్టం"
+#, fuzzy
+msgid "Local Time"
+msgstr "స్థానిక ఫైల్:"
+
msgid "Last Activity"
msgstr ""
@@ -4192,7 +4316,6 @@ msgstr "సంభాషణ "
msgid "Extended Away"
msgstr "దూరమైపోయినది"
-#, c-format
msgid "Do Not Disturb"
msgstr "అంతరాయము కలిగించవద్దు"
@@ -4319,9 +4442,6 @@ msgstr "రూమ్ లను కనుగొనండి"
msgid "You require encryption, but it is not available on this server."
msgstr ""
-msgid "Write error"
-msgstr "రైట్ చేయడంలో పొరపాటు"
-
#, fuzzy
msgid "Ping timeout"
msgstr "ప్లెయిన్ టెక్స్ట్ "
@@ -4331,14 +4451,9 @@ msgstr "రీడ్ చేయడంలో పొరపాటు"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"సర్వర్ తో కనెక్షన్ సాధ్యపడలేదు: \n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "సాకెట్‌ను సృష్టించలేదు"
#, fuzzy
msgid "Invalid XMPP ID"
@@ -4347,6 +4462,10 @@ msgstr "చెల్లుబాటుకాని ID"
msgid "Invalid XMPP ID. Domain must be set."
msgstr ""
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "సర్వర్‌కు కనెక్ట్ చేయడంలో వైఫల్యం. "
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "%s@%s నమోదు విజయవంతమైనది"
@@ -4445,9 +4564,18 @@ msgstr "ప్రమాణీకరణ "
msgid "Re-initializing Stream"
msgstr "స్ట్రీమ్ ను పునఃప్రారంభస్తున్నది"
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr "ప్రమాణీకరణ జరగలేదు "
+msgid "Mood"
+msgstr "స్వభావం "
+
+msgid "Now Listening"
+msgstr ""
+
msgid "Both"
msgstr "రెండూ "
@@ -4469,12 +4597,6 @@ msgstr "ఎవరూ లేరు"
msgid "Subscription"
msgstr "చందా "
-msgid "Mood"
-msgstr "స్వభావం "
-
-msgid "Now Listening"
-msgstr ""
-
#, fuzzy
msgid "Mood Text"
msgstr "రక్తం గ్రూపు"
@@ -4737,18 +4859,25 @@ msgstr "వినియోగదారు %s ను కిక్ చేయలే
msgid "Unable to ping user %s"
msgstr "వినియోగదారు %s ను నిషేధించలేదు"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
+msgstr "ఎంపికచేసిన ఫైల్ (%s) అస్తిత్వంలో లేదు. అందుచేత శబ్దమును పలికించలేదు. "
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
+msgstr "ఎంపికచేసిన ఫైల్ (%s) అస్తిత్వంలో లేదు. అందుచేత శబ్దమును పలికించలేదు. "
-#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+#, fuzzy, c-format
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "ఎంపికచేసిన ఫైల్ (%s) అస్తిత్వంలో లేదు. అందుచేత శబ్దమును పలికించలేదు. "
+# msgstr "%s మీకు [%s] ను చేర్చారు"
+#, c-format
+msgid "Buzzing %s..."
+msgstr ""
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
#, fuzzy
@@ -4759,10 +4888,36 @@ msgstr "బజ్!!"
msgid "%s has buzzed you!"
msgstr ""
-# msgstr "%s మీకు [%s] ను చేర్చారు"
-#, c-format
-msgid "Buzzing %s..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "%s కు సందేశం పంపడంలో వైఫల్యం."
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr " %sకు ఫైలును పంపడంలో అశక్తత, ఫైలు బదిలీకి వినియోగదారు సహకారం లభించడంలేదు"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr " %sకు ఫైలును పంపడంలో అశక్తత, ఫైలు బదిలీకి వినియోగదారు సహకారం లభించడంలేదు"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr " నమోదు విఫలమైనది"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
msgstr ""
+"మీరు చూడదల్చుకున్న వ్యక్తి వివరాలకోసం దయచేసి ఆ వ్యక్తి స్క్రీన్ పేరును లేదా మారుపేరును ఎంటర్ చేయండి."
+
+#, fuzzy
+msgid "Select a Resource"
+msgstr "ఫైలును సెలక్ట్ చేయుము."
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "_సంభాషణను ప్రారంభించండి"
msgid "config: Configure a chat room."
msgstr "కన్ఫిగరేషన్: సంభాషణ రూమ్ ను కన్ఫిగర్ చేయండి."
@@ -4932,6 +5087,21 @@ msgstr "సంభాషణ %sలో పాల్గొనడంలో పొర
msgid "Error in chat %s"
msgstr "సంభాషణ %sలో పొరపాటు "
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "ఫైలు ఓపెన్ చేయుచున్నప్పుడు పొరపాటు సంభవించింది. "
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "ఫైలు బదిలీలో వైఫల్యం"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "ఫైలు '%s': %s ను తెరవడంలో వైఫల్యం"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr " %sకు ఫైలును పంపడంలో అశక్తత, ఫైలు బదిలీకి వినియోగదారు సహకారం లభించడంలేదు"
@@ -4957,10 +5127,6 @@ msgstr ""
"మీరు చూడదల్చుకున్న వ్యక్తి వివరాలకోసం దయచేసి ఆ వ్యక్తి స్క్రీన్ పేరును లేదా మారుపేరును ఎంటర్ చేయండి."
#, fuzzy
-msgid "Select a Resource"
-msgstr "ఫైలును సెలక్ట్ చేయుము."
-
-#, fuzzy
msgid "Edit User Mood"
msgstr "వినియోగదారుని మోడ్స్ "
@@ -4998,9 +5164,19 @@ msgstr "చర్య"
msgid "Select an action"
msgstr "ఫైలును సెలక్ట్ చేయుము."
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr "\"%s\" ఫైల్స్‌ను చేర్చడంలో అసమర్థత."
+
+msgid "Buddy Add error"
+msgstr ""
+
#, fuzzy
-msgid "Unable to retrieve MSN Address Book"
-msgstr "నోట్స్ అడ్రస్ బుక్ ను ఎంపిక చేయండి"
+msgid "The username specified does not exist."
+msgstr "సూచించిన స్క్రీన్‌పేరుకు విలువలేదు."
#, c-format
msgid "Buddy list synchronization issue in %s (%s)"
@@ -5228,7 +5404,7 @@ msgstr "తల్లిదండ్రుల ఆమోదం లేకుండ
msgid "Passport account not yet verified"
msgstr "పాస్‌పోర్టు అకౌంట్‌ను ఇంకా పరిశీలించలేదు "
-#, fuzzy, c-format
+#, fuzzy
msgid "Passport account suspended"
msgstr "పాస్‌పోర్టు అకౌంట్‌ను ఇంకా పరిశీలించలేదు "
@@ -5339,6 +5515,13 @@ msgstr "ఒక మొబైల్ సందేశాన్ని పంపండ
msgid "Page"
msgstr "పేజీ "
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "పనిచేసే చోటు"
+
msgid "Has you"
msgstr "మీరు "
@@ -5385,6 +5568,14 @@ msgstr "ఆర్టిస్టులు"
msgid "Album"
msgstr "Adium"
+#, fuzzy
+msgid "Game Title"
+msgstr "శీర్షిక "
+
+#, fuzzy
+msgid "Office Title"
+msgstr "శీర్షిక "
+
msgid "Set Friendly Name..."
msgstr "ఇష్టపడే పేరు "
@@ -5576,8 +5767,8 @@ msgid ""
"does not exist."
msgstr "వినియోగదారు ప్రొఫైల్‌లో ఎలాంటి సమాచారమూ లేదు. వినియోగాదారు అస్తిత్వంలో లేకపోవచ్చు. "
-msgid "Profile URL"
-msgstr "URL ప్రొఫైల్"
+msgid "View web profile"
+msgstr ""
# *< type
# *< ui_requirement
@@ -5847,13 +6038,6 @@ msgstr "అడ్రస్ బుక్‌కు చేర్చండి."
msgid "Do you want to delete this buddy from your address book as well?"
msgstr "ఈ మిత్రుని మీ మిత్రుల లిస్టులో చేర్చదల్చుకున్నారా?"
-#. only notify the user about problems adding to the friends list
-#. * maybe we should do something else for other lists, but it probably
-#. * won't cause too many problems if we just ignore it
-#, c-format
-msgid "Unable to add \"%s\"."
-msgstr "\"%s\" ఫైల్స్‌ను చేర్చడంలో అసమర్థత."
-
#, fuzzy
msgid "The username specified is invalid."
msgstr "సూచించిన స్క్రీన్‌పేరుకు విలువలేదు."
@@ -5861,6 +6045,9 @@ msgstr "సూచించిన స్క్రీన్‌పేరుకు
msgid "This Hotmail account may not be active."
msgstr "ఈ హాట్ మెయిల్ అకౌంటు సచేతనంగా లేకపోవచ్చు."
+msgid "Profile URL"
+msgstr "URL ప్రొఫైల్"
+
# *< type
# *< ui_requirement
# *< flags
@@ -5884,17 +6071,13 @@ msgstr "ఈ హాట్ మెయిల్ అకౌంటు సచేతన
msgid "MSN Protocol Plugin"
msgstr "MSN ప్రొటోకాల్ ప్లగ్‌ఇన్ "
-#, fuzzy
-msgid "Missing Cipher"
-msgstr "Cipher"
-
-msgid "The RC4 cipher could not be found"
+#, c-format
+msgid "No such user: %s"
msgstr ""
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
-msgstr ""
+#, fuzzy
+msgid "User lookup"
+msgstr "వినియోగదారుని గదులు "
#, fuzzy
msgid "Reading challenge"
@@ -5908,11 +6091,21 @@ msgstr "సర్వర్‌నుంచి చెల్లని సవాల
msgid "Logging in"
msgstr "లాగింగ్ "
-#, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] ""
-msgstr[1] ""
+#, fuzzy
+msgid "MySpaceIM - No Username Set"
+msgstr "పేరు లేదు"
+
+msgid "You appear to have no MySpace username."
+msgstr ""
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr ""
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr ""
+"సర్వర్ నుంచి కనెక్షన్ తెగిపోయింది \n"
+"%s"
#. Can't write _()'d strings in array initializers. Workaround.
#, fuzzy
@@ -5934,15 +6127,24 @@ msgstr ""
msgid "MySpace"
msgstr ""
+# msgstr "హోస్ట్‌కు కనెక్ట్ చేయలేదు"
#, fuzzy
-msgid "MySpaceIM - No Username Set"
-msgstr "పేరు లేదు"
+msgid "IM Friends"
+msgstr "_IM విండోస్ "
-msgid "You appear to have no MySpace username."
-msgstr ""
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+msgstr[1] ""
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
-msgstr ""
+#, fuzzy
+msgid "Add contacts from server"
+msgstr "సర్వర్‌నుంచి చెల్లని ప్రతి స్పందన."
#. The session is now set up, ready to be connected. This emits the
#. * signedOn signal, so clients can now do anything with msimprpl, and
@@ -5965,6 +6167,23 @@ msgstr ""
msgid "MySpaceIM Error"
msgstr ""
+# XXX - Don't call this with ssi
+#, fuzzy
+msgid "Invalid input condition"
+msgstr "కనెక్షన్‌ను ఫైనలైజేషన్ జరుగుతున్నది"
+
+#, fuzzy
+msgid "Read buffer full (2)"
+msgstr "పూర్తి క్యూ."
+
+#, fuzzy
+msgid "Unparseable message"
+msgstr "సందేశాన్ని పద విశ్లేషణ చేయడంలో అశక్తత"
+
+#, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr ""
+
# msgstr "లోపం కోడ్ %d ను ప్రక్రియ తిప్పి పంపింది "
msgid "Failed to add buddy"
msgstr ""
@@ -5975,14 +6194,6 @@ msgstr ""
msgid "persist command failed"
msgstr ""
-#, c-format
-msgid "No such user: %s"
-msgstr ""
-
-#, fuzzy
-msgid "User lookup"
-msgstr "వినియోగదారుని గదులు "
-
msgid "Failed to remove buddy"
msgstr ""
@@ -5992,41 +6203,17 @@ msgstr ""
msgid "blocklist command failed"
msgstr ""
-# XXX - Don't call this with ssi
-#, fuzzy
-msgid "Invalid input condition"
-msgstr "కనెక్షన్‌ను ఫైనలైజేషన్ జరుగుతున్నది"
-
#, fuzzy
-msgid "Read buffer full (2)"
-msgstr "పూర్తి క్యూ."
-
-#, fuzzy
-msgid "Unparseable message"
-msgstr "సందేశాన్ని పద విశ్లేషణ చేయడంలో అశక్తత"
+msgid "Missing Cipher"
+msgstr "Cipher"
-#, c-format
-msgid "Couldn't connect to host: %s (%d)"
+msgid "The RC4 cipher could not be found"
msgstr ""
-# msgstr "హోస్ట్‌కు కనెక్ట్ చేయలేదు"
-#, fuzzy
-msgid "IM Friends"
-msgstr "_IM విండోస్ "
-
-#, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-msgstr[1] ""
-
-#, fuzzy
-msgid "Add contacts from server"
-msgstr "సర్వర్‌నుంచి చెల్లని ప్రతి స్పందన."
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
msgid "Add friends from MySpace.com"
msgstr ""
@@ -6073,9 +6260,6 @@ msgstr "పెద్ద ఫాంట్ సైజ్ "
msgid "User"
msgstr "వినియోగదారు"
-msgid "Profile"
-msgstr "ప్రొఫైల్ "
-
#, fuzzy
msgid "Headline"
msgstr "_హ్యాండిల్:"
@@ -6092,17 +6276,6 @@ msgstr ""
msgid "Client Version"
msgstr "సంభాషణను క్లోజ్ చేయుము "
-#. Protocol won't log in now without a username set.. Disconnect
-#, fuzzy
-msgid "No username set"
-msgstr "పేరు లేదు"
-
-msgid "MySpaceIM - Please Set a Username"
-msgstr ""
-
-msgid "Please enter a username to check its availability:"
-msgstr ""
-
#, fuzzy
msgid "MySpaceIM - Username Available"
msgstr "సర్వీస్ దొరుకుటలేదు"
@@ -6114,6 +6287,9 @@ msgstr "వైట్ బోర్డ్ కు %s సందేశాన్ని
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr ""
+msgid "MySpaceIM - Please Set a Username"
+msgstr ""
+
#, fuzzy
msgid "This username is unavailable."
msgstr "ఈ కథకు smileys లభించుటలేదు."
@@ -6122,6 +6298,14 @@ msgstr "ఈ కథకు smileys లభించుటలేదు."
msgid "Please try another username:"
msgstr "%s కోసం ఒక కొత్త పేరును దయచేసి నమోదుచేయండి"
+#. Protocol won't log in now without a username set.. Disconnect
+#, fuzzy
+msgid "No username set"
+msgstr "పేరు లేదు"
+
+msgid "Please enter a username to check its availability:"
+msgstr ""
+
#. TODO: icons for each zap
#. Lots of comments for translators:
#. Zap means "to strike suddenly and forcefully as if with a
@@ -6519,7 +6703,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr "పొరపాటు. SSL సపోర్ట్ ఇన్‌స్టాల్ కాలేదు. "
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr "ఈ సమావేశం ముగిసింది. ఇంకా సందేశాలు పంపడం సాధ్యం కాదు."
@@ -6813,25 +6996,20 @@ msgstr "కెమేరా "
msgid "Screen Sharing"
msgstr "స్క్రీన్ పేరు "
-#, c-format
msgid "Free For Chat"
msgstr "సంభాషించడానికి సమయం ఉంది"
-#, c-format
msgid "Not Available"
msgstr "లభించదు"
-#, c-format
msgid "Occupied"
msgstr "స్వాధీనం చేసుకొన్న"
-#, c-format
msgid "Web Aware"
msgstr "వెబ్ అవగతం "
# * Without this selecting Invisible as own status doesn't
# * work. It's not used and not needed to show status of buddies.
-#, c-format
msgid "Invisible"
msgstr "అదృశ్య "
@@ -6881,7 +7059,7 @@ msgstr ""
"లాగిన్ చేయుట సాధ్యపడదు: మీరు %s సంతకం చేయలేరు. ఎందుకంటే స్క్రీన్‌పేరు పనికిరాదు. స్క్రీన్‌పేరు "
"అక్షరంతోనే ప్రారంభించాలి. పేరులో అక్షరాలు, అంకెలు, స్పేసులు లేదా కేవలం అంకెలుమాత్రం ఉండవచ్చును. "
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
#, fuzzy
msgid "Invalid username."
@@ -6899,7 +7077,7 @@ msgstr "ప్రస్తుతానికి మీ అకౌంట్ సస
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "AOL సత్వర మెసెంజర్ సర్వీస్ తాత్కాలికంగా అలభ్యం. "
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6933,13 +7111,9 @@ msgstr "డిజిటల్ ప్రదర్శననుండి 6 అం
msgid "_OK"
msgstr "_సరే"
-#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
-msgstr ""
-"త్వరలో మీరు డిస్‌కనెక్ట్ చేయబడవచ్చు. ఇది ఫిక్స్ అయేంతవరకు మీరు TOC ని వాడాలని అనుకోవచ్చు. అప్‌డేట్స్ కోసం "
-"%s చెక్ చేయండి. "
+#, fuzzy, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
+msgstr "మీరు త్వరలో డిస్కనెక్ట్ కాబోతున్నారు. అప్ డేట్లకోసం %s చూడండి."
msgid "Unable to get a valid AIM login hash."
msgstr "చెల్లుబాటయ్యే AIM లాగ్ ఇన్ హాష్‌ను పొందడంలో వైఫల్యం. "
@@ -7085,7 +7259,7 @@ msgstr[1] ""
# msgstr[0] "అజ్ఞాత కారణములచేత మీరు %hu సందేశాలను %s నుండి కోల్పోయినారు. "
# msgstr[1] "आपको अज्ञात कारनों से साइन-ऑफ करा गया है।"
# Data is assumed to be the destination sn
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "సందేశం పంపడం సాధ్యంకాదు: %s"
@@ -7110,6 +7284,9 @@ msgstr "నుండి ఆన్‌లైన్. "
msgid "Member Since"
msgstr "నుండి సభ్యుడు."
+msgid "Profile"
+msgstr "ప్రొఫైల్ "
+
msgid "Your AIM connection may be lost."
msgstr "మీరు AIM కనెక్షన్ కోల్పోవచ్చు."
@@ -7389,6 +7566,7 @@ msgstr "C_onnect"
msgid "Get AIM Info"
msgstr "AIM సమాచారాన్ని పొందండి"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "మిత్రుని వ్యాఖ్యను ఎడిట్ చేయండి. "
@@ -7503,7 +7681,6 @@ msgstr "%s ను %s వద్ద కనెక్ట్ చేయడానిక
msgid "Attempting to connect to %s:%hu."
msgstr "%s:%hu కు కనెక్ట్ చేసేందుకు ప్రయత్నిస్తోంది."
-#, c-format
msgid "Attempting to connect via proxy server."
msgstr "ప్రాక్సీ సర్వర్ ద్వారా కనెక్ట్ అవడానికి ప్రయత్నిస్తోంది."
@@ -7604,7 +7781,7 @@ msgstr "ఇతరములు"
msgid "Visible"
msgstr "అదృశ్య "
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
#, fuzzy
@@ -7698,16 +7875,49 @@ msgstr "చివరి అప్‌డేట్ "
msgid "Could not change buddy information."
msgstr "మిత్రుని వివరాలను దయచేసి నమోదుచేయండి."
-#, c-format
-msgid "%d needs Q&A"
+msgid "Mobile"
+msgstr "మొబైల్"
+
+msgid "Note"
+msgstr "నోట్ "
+
+# Label
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "మిత్రుని ఐకన్ "
+
+msgid "Change his/her memo as you like"
msgstr ""
#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "మిత్రుని చేర్చుము "
+msgid "_Modify"
+msgstr "సవరించు"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "సవరించు"
#, fuzzy
-msgid "Input answer here"
+msgid "Server says:"
+msgstr "సర్వర్‌ ఖాళీగా లేదు"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%u requires verification"
+msgstr "సాధికారిత అవసరం "
+
+#, fuzzy
+msgid "Add buddy question"
+msgstr "మీ జాబితాలో మిత్రుని చేర్చమంటారా?"
+
+#, fuzzy
+msgid "Enter answer here"
msgstr "ఇక్కడ ఇన్ పుట్ కోసం అభ్యర్థించు"
msgid "Send"
@@ -7721,18 +7931,19 @@ msgid "Authorization denied message:"
msgstr "సందేశాన్ని నిరాకరించిన ఆథరైజేషన్:"
#, fuzzy
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr "క్షమించండి, మీరు నా తరహా కాదు..."
#, fuzzy, c-format
-msgid "%d needs authentication"
+msgid "%u needs authorization"
msgstr "ప్రమాణీకరణకు వినియోగదారుకు %d అవసరం"
#, fuzzy
msgid "Add buddy authorize"
msgstr "మీ జాబితాలో మిత్రుని చేర్చమంటారా?"
-msgid "Input request here"
+#, fuzzy
+msgid "Enter request here"
msgstr "ఇక్కడ ఇన్ పుట్ కోసం అభ్యర్థించు"
msgid "Would you be my friend?"
@@ -7756,7 +7967,7 @@ msgid "Failed sending authorize"
msgstr "దయచేసి నన్ను ఆథరైజ్ చేయండి!"
#, fuzzy, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr "సంభాషణలో మిత్రుని చేర్చడానికి వైఫల్యం. "
#, fuzzy, c-format
@@ -7801,6 +8012,10 @@ msgid "You can only search for permanent Qun\n"
msgstr "మీరు శాశ్వత QQ గ్రూపుల కోసం మాత్రమే అన్వేషించగలరు\n"
#, fuzzy
+msgid "(Invalid UTF-8 string)"
+msgstr "చెల్లని ప్రాక్సీ సెట్టింగులు "
+
+#, fuzzy
msgid "Not member"
msgstr "నేను సభ్యుణ్నికాను"
@@ -7843,16 +8058,19 @@ msgstr "ఇతరులు చేరడానికి ఈ గ్రూపు
msgid "Join QQ Qun"
msgstr "సంభాషణలో పాల్గొనండి."
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
-msgstr ""
+msgid "Input request here"
+msgstr "ఇక్కడ ఇన్ పుట్ కోసం అభ్యర్థించు"
+
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "మీరు విజయవంతంగా Qunను సృష్టించగలిగారు"
#, fuzzy
msgid "Successfully joined Qun"
msgstr "మీరు విజయవంతంగా Qunను సృష్టించగలిగారు"
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
msgid "QQ Qun Operation"
@@ -7862,7 +8080,7 @@ msgstr "QQ Qun చర్య"
msgid "Failed:"
msgstr "విఫలమైనది "
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
#, fuzzy
@@ -7875,11 +8093,11 @@ msgid ""
msgstr "గమనిక, మీరు దీన్ని సృష్టించిన వ్యక్తి అయితే ఈ చర్య ఈ Qun ని ముందుగానే తొలగిస్తుంది."
#, fuzzy
-msgid "Sorry, you are not our style ..."
+msgid "Sorry, you are not our style"
msgstr "క్షమించండి, మీరు నా తరహా కాదు..."
#, fuzzy
-msgid "Successfully changed Qun member"
+msgid "Successfully changed Qun members"
msgstr "ఫోన్ నంబరు"
#, fuzzy
@@ -7890,35 +8108,35 @@ msgid "You have successfully created a Qun"
msgstr "మీరు విజయవంతంగా Qunను సృష్టించగలిగారు"
#, fuzzy
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr "మీరు Qun వివరాలను ఇప్పుడు సెట్ చేయదలచుకున్నారా?"
msgid "Setup"
msgstr "సెట్ అప్"
#, fuzzy, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr "గ్రూపు%d లో చేరడానికి వినియోగదారు %d దరఖాస్తు చేశారు"
#, fuzzy, c-format
-msgid "%d request to join Qun %d"
+msgid "%u request to join Qun %u"
msgstr "గ్రూపు%d లో చేరడానికి వినియోగదారు %d దరఖాస్తు చేశారు"
#, fuzzy, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr "సంభాషణలో మిత్రుని చేర్చడానికి వైఫల్యం. "
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr "మిత్రుని తొలగించండి."
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "మిత్రుని తొలగించండి."
#, c-format
msgid "Unknown-%d"
@@ -8035,6 +8253,13 @@ msgstr "<b>చివరిసారిగా రీ ఫ్రెష్ చేస
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<b>ప్రస్తుత ఆన్ లైన్</b>: %d<br>\n"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<b>చివరిసారిగా రీ ఫ్రెష్ చేసినప్పుడు</b>: %s<br>\n"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -8042,7 +8267,7 @@ msgid "<i>Feel free to join us!</i> :)"
msgstr ""
#, fuzzy, c-format
-msgid "About OpenQ r%s"
+msgid "About OpenQ %s"
msgstr "సుమారు %s"
#, fuzzy
@@ -8064,6 +8289,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "సుమారు %s"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "ఇంటి అడ్రస్ "
+
# *< type
# *< ui_requirement
# *< flags
@@ -8104,7 +8333,6 @@ msgid "QQ2008"
msgstr ""
# connect to the server
-#. #endif
#, fuzzy
msgid "Connect by TCP"
msgstr "కనెక్ట్ చేస్తున్నది"
@@ -8117,6 +8345,9 @@ msgstr "సెర్వర్ పోర్ట్ "
msgid "Show server news"
msgstr "సెర్వర్ అడ్రసు "
+msgid "Show chat room when msg comes"
+msgstr ""
+
#, fuzzy
msgid "Keep alive interval (seconds)"
msgstr "రీడ్ చేయడంలో పొరపాటు"
@@ -8126,11 +8357,7 @@ msgid "Update interval (seconds)"
msgstr "రీడ్ చేయడంలో పొరపాటు"
#, fuzzy
-msgid "Can not decrypt server reply"
-msgstr "సర్వర్ సమాచారం తీసుకురావడం సాధ్యం కాదు "
-
-#, fuzzy
-msgid "Can not decrypt get server reply"
+msgid "Cannot decrypt server reply"
msgstr "సర్వర్ సమాచారం తీసుకురావడం సాధ్యం కాదు "
#, c-format
@@ -8153,21 +8380,23 @@ msgid "Activation required"
msgstr "నమోదు అవసరం"
#, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr ""
#, fuzzy
-msgid "Keep alive error"
-msgstr "రీడ్ చేయడంలో పొరపాటు"
+msgid "Could not decrypt server reply"
+msgstr "సర్వర్ సమాచారం తీసుకురావడం సాధ్యం కాదు "
-msgid "Requesting captcha ..."
-msgstr ""
+#, fuzzy
+msgid "Requesting captcha"
+msgstr "అభ్యర్థనా డైలాగ్"
-msgid "Checking code of captcha ..."
+msgid "Checking captcha"
msgstr ""
-msgid "Failed captcha verify"
-msgstr ""
+#, fuzzy
+msgid "Failed captcha verification"
+msgstr "యూహూ! ప్రమాణీకరణ వైఫల్యం."
#, fuzzy
msgid "Captcha Image"
@@ -8177,7 +8406,7 @@ msgstr "సచిత్రమును సేవ్ చేయుము."
msgid "Enter code"
msgstr "పాస్ వర్డ్ ను ఎంటర్ చేయండి"
-msgid "QQ Captcha Verifing"
+msgid "QQ Captcha Verification"
msgstr ""
#, fuzzy
@@ -8185,31 +8414,22 @@ msgid "Enter the text from the image"
msgstr "గ్రూపు పేరును నమోదుచేయండి"
#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
+msgid "Unknown reply when checking password (0x%02X)"
msgstr ""
#, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
msgstr ""
# we didn't successfully connect. tdt->toc_fd is valid here
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "కనెక్ట్ చేయడంలో అసమర్థత. "
msgid "Socket error"
msgstr "సాకెట్ లో లోపం"
-#, fuzzy, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr ""
-"సర్వర్ తో కనెక్షన్ పోయింది:\n"
-"%s"
-
msgid "Unable to read from socket"
msgstr "సాకెట్‌ నుంచి రీడ్ చేయడం సాధ్యం కావడం లేదు "
@@ -8221,11 +8441,11 @@ msgid "Connection lost"
msgstr "కనెక్షన్ పోయింది"
#, fuzzy
-msgid "Get server ..."
+msgid "Getting server"
msgstr "వినియోగదారు సమాచారాన్ని సెట్ చేయండి ..."
#, fuzzy
-msgid "Request token"
+msgid "Requesting token"
msgstr "అభ్యర్థన నిరాకరించబడింది."
msgid "Couldn't resolve host"
@@ -8235,18 +8455,15 @@ msgstr "హోస్ట్ ను నిశ్చయించలేకపోయ
msgid "Invalid server or port"
msgstr "విలువలేని పొరపాటు "
-# Account options
+# Progress
#, fuzzy
-msgid "Connecting server ..."
-msgstr "సర్వర్‌ను కనెక్ట్ చేయండి"
+msgid "Connecting to server"
+msgstr "SILC సెర్వర్‌కు కనెక్ట్ చేయుచున్నది. "
#, fuzzy
msgid "QQ Error"
msgstr "QQidలో లోపం"
-msgid "Failed to send IM."
-msgstr ""
-
#, fuzzy, c-format
msgid ""
"Server News:\n"
@@ -8256,6 +8473,10 @@ msgid ""
msgstr "ICQ సర్వర్ రిలే "
#, fuzzy, c-format
+msgid "%s:%s"
+msgstr "%s (%s)"
+
+#, fuzzy, c-format
msgid "From %s:"
msgstr "నుంచి "
@@ -8265,38 +8486,39 @@ msgid ""
"%s"
msgstr "సర్వర్ నిర్దేశాలు: %s"
-msgid "Unknow SERVER CMD"
-msgstr ""
+# #-#-#-#-# gnome-applets.gnome-2-2.hi.po (gnome-applets 2.x) #-#-#-#-#
+# gnome-session/gsm-client-row.c:43
+# #-#-#-#-# gnome-session.gnome-2-2.hi.po (gnome-session VERSION) #-#-#-#-#
+#, fuzzy
+msgid "Unknown SERVER CMD"
+msgstr "కారణం తెలియదు. "
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
#, fuzzy
msgid "QQ Qun Command"
msgstr "కమాండ్ "
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr ""
-
-msgid "Can not decrypt login reply"
-msgstr ""
+#, fuzzy
+msgid "Could not decrypt login reply"
+msgstr "సర్వర్ సమాచారం తీసుకురావడం సాధ్యం కాదు "
# #-#-#-#-# gnome-applets.gnome-2-2.hi.po (gnome-applets 2.x) #-#-#-#-#
# gnome-session/gsm-client-row.c:43
# #-#-#-#-# gnome-session.gnome-2-2.hi.po (gnome-session VERSION) #-#-#-#-#
#, fuzzy
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr "కారణం తెలియదు. "
# #-#-#-#-# gnome-applets.gnome-2-2.hi.po (gnome-applets 2.x) #-#-#-#-#
# gnome-session/gsm-client-row.c:43
# #-#-#-#-# gnome-session.gnome-2-2.hi.po (gnome-session VERSION) #-#-#-#-#
#, fuzzy
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr "కారణం తెలియదు. "
#, c-format
@@ -9129,9 +9351,6 @@ msgstr "సంస్థ "
msgid "Unit"
msgstr "యూనిట్ "
-msgid "Note"
-msgstr "నోట్ "
-
msgid "Join Chat"
msgstr "సంభాషణలో పాల్గొనండి."
@@ -9802,6 +10021,10 @@ msgstr "హోస్ట్ పేరును నిశ్చయించలే
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr "SIP స్క్రీన్ పేరులో ఖాళీలు లేదా @ గుర్తు ఉండకూడదు"
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "సెర్వర్ పోర్ట్ "
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -9836,200 +10059,10 @@ msgid "Auth Domain"
msgstr "ప్రమాణీకరణ పొందిన డొమైన్"
#, c-format
-msgid "Looking up %s"
-msgstr "%s కోసం చూస్తున్నది "
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "%s కు కనెక్షన్ వైఫల్యం"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "సైన్-ఆన్: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "%s ఫైలును రైట్ చేయలేకపోతోంది."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "%s ఫైలును రీడ్ చేయలేకపోతోంది."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "సందేశం చాలా పొడవుగా ఉంది, చివరి %s బైట్స్ కుదించబడ్డాయి. "
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s ప్రస్తుతం లాగ్ ఇన్ కాలేదు."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "%s చేసిన హెచ్చరికకు అనుమతిలేదు."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "ఒక సందేశాన్ని వదిలివేయడమైనది. మీ సర్వర్ వేగపరిమితిని దాటింది."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "%s లో సంభాషణ లభ్యం కాలేదు. "
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "మీరు %s కి సందేశములను వేగంగా పంపిస్తున్నారు."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "మీరు ఒక IMను %s నుంచి మిస్ అయినారు, ఎందుకంటే అది చాలా పెద్దది. "
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "మీరు ఒక IMను %s నుంచి మిస్ అయినారు, ఎందుకంటే అది అతివేగంతో పంపబడింది."
-
-#, c-format
-msgid "Failure."
-msgstr "వైఫల్యం."
-
-#, c-format
-msgid "Too many matches."
-msgstr "సరిపోలేవి అనేకం ఉన్నాయి."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "మరిన్ని క్వాలిఫైయర్స్ కావాలి."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "డైరెక్టరీ సేవ తాత్కాలికంగా అందుబాటులో లేదు."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "ఇ-మెయిల్‌ను చూడటంపై ఆంక్షలు."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "కీవర్డ్ విస్మరించబడింది."
-
-#, c-format
-msgid "No keywords."
-msgstr "కీవర్డ్స్ లేవు. "
-
-#, c-format
-msgid "User has no directory information."
-msgstr "వినియోగాదారునికి డైరెక్టరీ సమాచారం లేదు. "
-
-#, c-format
-msgid "Country not supported."
-msgstr "దేశానికి సపోర్టు లేదు. "
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "తెలియని వైఫల్యం: %s."
-
-#, fuzzy, c-format
-msgid "Incorrect username or password."
-msgstr "స్క్రీన్ పేరు లేదా పాస్‌వర్డ్ తప్పు. "
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "సర్వీస్ తాత్కాలికంగా అందుబాటులే లేదు. "
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "లాగిన్ చేయడానికి మీ వార్నింగ్ లెవల్ చాలా ఎక్కువగా ఉంది. "
-
-#, c-format
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
+msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
-"మీరు చాలా తరచుగా కనెక్ట్ చేస్తున్నారు, డిస్‌కనెక్ట్ చేస్తున్నారు. పది నిమిషాలు వేచి చూసి మరల ప్రయత్నించండి. "
-"మీరు ఇలాగే ప్రయత్నిస్తుంటే ఇంకా ఎక్కువ సమయం నిరీక్షించాల్సివస్తుంది. "
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "అజ్ఞాత సైనాన్ పొరపాటు సంభవించింది: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "అజ్ఞాత పొరపాటు, %d , సంభవించింది. సమాచారం: %s"
-
-msgid "Invalid Groupname"
-msgstr "చెల్లుబాటుకాని గ్రూప్ పేరు"
-
-msgid "Connection Closed"
-msgstr "కనెక్షన్ ముగిసింది"
-
-msgid "Waiting for reply..."
-msgstr "సమాధానం కోసం ప్రతీక్ష ... "
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "ఆగిన TOC మరల వెనక్కు వచ్చినది. మీరు మళ్ళీ సందేశాలను పంపవచ్చును."
-
-msgid "Password Change Successful"
-msgstr "విజయవంతంగా పాస్‌వర్డ్‌ మార్పు"
-
-msgid "_Group:"
-msgstr "_గ్రూప్:"
-
-msgid "Get Dir Info"
-msgstr "డైరెక్టరీ సమాచారాన్ని పొందండి"
-
-msgid "Set Dir Info"
-msgstr "డైరెక్టరీ సమాచారాన్ని సెట్ చేయండి. "
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "వ్రాయడానికి %s ను ఓపెన్ చేయలేదు"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "ఫైల్ ట్రాన్స్‌ఫర్ వైఫల్యం; బహుశా రెండవవైపు రద్దయి ఉంటుంది. "
-
-msgid "Could not connect for transfer."
-msgstr "ట్రాన్స్‌ఫర్ కోసం కనెక్ట్ చేయడం సాధ్యం కాలేదు. "
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "ఫైల్ శీర్షికను వ్రాయడం సాధ్యం కాలేదు. ఫైల్‌ ట్రాన్స్‌ఫర్ చేయబడదు."
-
-msgid "Save As..."
-msgstr "ఇలా సేవ్ చేయండి..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s అభ్యర్థనలు %s ఆమోదించుటకు %d files: %s (%.2f %s)%s%s"
-msgstr[1] "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "ఫైల్ పంపవలసిందిగా %s మిమ్మల్ని అభ్యర్థిస్తున్నారు."
-
-# *< type
-# *< ui_requirement
-# *< flags
-# *< dependencies
-# *< priority
-# *< id
-# *< name
-# *< version
-# * summary
-# * description
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "TOC ప్రొటోకాల్ ప్లగ్ ఇన్"
-#, c-format
-msgid "%s has sent you a webcam invite, which is not yet supported."
+msgid "Your SMS was not delivered"
msgstr ""
msgid "Your Yahoo! message did not get sent."
@@ -10305,13 +10338,9 @@ msgstr "కూల్ లింక్ 3"
msgid "Last Update"
msgstr "చివరి అప్‌డేట్ "
-#, c-format
-msgid "User information for %s unavailable"
-msgstr " %s కు సంబంధించిన వినియోగదారుని సమాచారం అలభ్యం. "
-
+#, fuzzy
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr "క్షమించండి, ఈ ప్రొఫైల్‌లో వాడిన భాషకు లేదా ఫార్మాట్ కు ఈ సమయంలో సపోర్టు లభించడం లేదు. "
msgid ""
@@ -10671,9 +10700,6 @@ msgstr "అంతరాయము కలిగించవద్దు"
msgid "Extended away"
msgstr "దూరమైపోయినది"
-msgid "Mobile"
-msgstr "మొబైల్"
-
msgid "Listening to music"
msgstr ""
@@ -10717,17 +10743,6 @@ msgstr "%s సోమరితనం లేనివారైనారు."
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "%s చదవడంలో పొరపాటు"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"%sను చదువుతున్నప్పుడు పొరపాటు జరిగింది. అవి లోడ్ కాలేదు, మరియు పాత ఫైలు పేరు %s~గా మార్చబడింది."
-
msgid "Calculating..."
msgstr "లెక్కిస్తూ..."
@@ -10806,6 +10821,12 @@ msgstr "%sకు రాయడంలో లోపం: %s"
msgid "Unable to connect to %s: %s"
msgstr ""
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr "లాగిన్ చేయాలంటే సర్వర్ కు TLS/SSL అవసరం. TLS/SSL సహకారం లభించలేదు. "
+
#, c-format
msgid " - %s"
msgstr ""
@@ -10839,6 +10860,17 @@ msgstr "కనెక్షన్ రీ సెట్ అయింది"
msgid "Address already in use."
msgstr "ఈ సంభాషణ పేరు ఇప్పటికే ఉపయోగంలో ఉంది"
+#, c-format
+msgid "Error Reading %s"
+msgstr "%s చదవడంలో పొరపాటు"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"%sను చదువుతున్నప్పుడు పొరపాటు జరిగింది. అవి లోడ్ కాలేదు, మరియు పాత ఫైలు పేరు %s~గా మార్చబడింది."
+
# msgstr "సర్వర్‌కు కనెక్ట్‌చేయలేని స్థితి. "
msgid "Internet Messenger"
msgstr "ఇంటర్నెట్ మెసెంజర్"
@@ -10889,11 +10921,8 @@ msgstr "కొత్త మెయిల్ నోటిఫికేషన్ల
msgid "Use this buddy _icon for this account:"
msgstr "ఈ అకౌంటు కోసం ఈ మిత్రుని ఐకన్ ను ఉపయోగించండి:"
-# Build the protocol options frame.
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s ఆప్షన్స్"
+msgid "_Advanced"
+msgstr "_Advanced"
# Use Global Proxy Settings
msgid "Use GNOME Proxy Settings"
@@ -10935,9 +10964,6 @@ msgstr "మీరు పరిశీలనగా చూస్తే "
msgid "you can see the butterflies mating"
msgstr "మీరు సీతకోకచిలుకల కలయికను చూశారు."
-msgid "Proxy Options"
-msgstr "ప్రాక్సీ ఆప్షన్లు "
-
msgid "Proxy _type:"
msgstr "ప్రాక్సీ _టైప్:"
@@ -10967,8 +10993,9 @@ msgstr "_ప్రాథమిక"
msgid "Create _this new account on the server"
msgstr ""
-msgid "_Advanced"
-msgstr "_Advanced"
+#, fuzzy
+msgid "_Proxy"
+msgstr "ప్రాక్సీ"
msgid "Enabled"
msgstr "ఎనేబుల్"
@@ -11039,6 +11066,17 @@ msgid "I_M"
msgstr "I_M"
#, fuzzy
+msgid "_Audio Call"
+msgstr "_సంభాషణ చేర్చు"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "వీడియో సంభాషణ"
+
+#, fuzzy
msgid "_Send File..."
msgstr "_ఫైలును పంపుము. "
@@ -11193,6 +11231,10 @@ msgstr "/ఉపకరణాలు/మిత్రుడు _హఠాత్త
msgid "/Tools/_Certificates"
msgstr "/ఉపకరణాలు/ప్రెఫరెన్సెస్ "
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/ఉపకరణాలు/రహస్యము"
+
msgid "/Tools/Plu_gins"
msgstr "/టూల్స్/ప్లగ్_ఇన్ లు"
@@ -11202,10 +11244,6 @@ msgstr "/ఉపకరణాలు/ప్రెఫరెన్సెస్ "
msgid "/Tools/Pr_ivacy"
msgstr "/ఉపకరణాలు/రహస్యము"
-#, fuzzy
-msgid "/Tools/Smile_y"
-msgstr "/ఉపకరణాలు/రహస్యము"
-
msgid "/Tools/_File Transfers"
msgstr "/ఉపకరణాలు/_ఫైల్ ట్రాన్స్‌ఫర్లు "
@@ -11329,8 +11367,8 @@ msgstr "మాన్యువల్లీ"
msgid "By status"
msgstr "వస్తుస్థితి (స్టాటస్) చేత "
-msgid "By log size"
-msgstr "లాగ్ సైజ్ వలన "
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -11348,6 +11386,9 @@ msgstr ""
msgid "Re-enable"
msgstr "తిరిగి సాధ్యపడే అకౌంటు"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr ""
@@ -11452,6 +11493,9 @@ msgstr ""
msgid "A_lias:"
msgstr "మారు పేరు:"
+msgid "_Group:"
+msgstr "_గ్రూప్:"
+
msgid "Auto_join when account becomes online."
msgstr ""
@@ -11508,13 +11552,6 @@ msgstr "ఆ మిత్రుని ఆహ్వానించగలిగే
msgid "Invite Buddy Into Chat Room"
msgstr "చాట్ గదిలోనికి మీ మిత్రుని ఆహ్వానించండి."
-# Put our happy label in it.
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr "మీరు ఆహ్వానించదల్చుకున్న మిత్రుని పేరును ఆప్షనల్ ఆహ్వాన సందేశంతో పాటుగా ఎంటర్ చేయండి."
-
msgid "_Buddy:"
msgstr "_మిత్రుడు:"
@@ -11598,6 +11635,26 @@ msgid "/Conversation/Clea_r Scrollback"
msgstr "/సంభాషణ/క్లియర్_ స్క్రోల్ బ్యాక్"
# Conversations
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/సంభాషణ/_ఇంకా"
+
+# Conversations
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/సంభాషణ/_ఇంకా"
+
+# Conversations
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/సంభాషణ/_ఇంకా"
+
+# Conversations
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/సంభాషణ/_లాగ్‌ను చూడండి."
+
+# Conversations
msgid "/Conversation/Se_nd File..."
msgstr "/సంభాషణ/ఫైలును పంపుము..."
@@ -11689,6 +11746,21 @@ msgid "/Conversation/View Log"
msgstr "/సంభాషణ/ వ్యూ లాగ్ "
# Conversations
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/సంభాషణ/ఇంకా"
+
+# Conversations
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/సంభాషణ/ వ్యూ లాగ్ "
+
+# Conversations
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/సంభాషణ/ఇంకా"
+
+# Conversations
msgid "/Conversation/Send File..."
msgstr "/సంభాషణ/ఫైలును పంపుము..."
@@ -11887,6 +11959,9 @@ msgstr "ఆర్టిస్టులు"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "సపోర్ట్ "
@@ -12029,6 +12104,10 @@ msgstr "జార్జియన్"
msgid "Ubuntu Georgian Translators"
msgstr ""
+#, fuzzy
+msgid "Khmer"
+msgstr "ఇతరములు"
+
msgid "Kannada"
msgstr "కన్నడ"
@@ -12051,6 +12130,10 @@ msgstr "లిథుయేనియన్ "
msgid "Macedonian"
msgstr "మాసెడోనియన్ "
+#, fuzzy
+msgid "Mongolian"
+msgstr "మాసెడోనియన్ "
+
msgid "Bokmål Norwegian"
msgstr "Bokmål నార్వేజియన్"
@@ -12164,8 +12247,25 @@ msgstr ""
"చేసిఉన్నారు.రూపకర్తల పూర్తిజాబితా కోసం 'COPYRIGHT' ఫైలును చూడండి. ఈ కార్యక్రమానికి మేము వారంటీ "
"ఇవ్వడంలేదు. <BR><BR>"
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, fuzzy, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"4\">IRC:</FONT> #winPidgin irc.freenode.net पर<BR><BR>"
+
#, fuzzy, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"4\">IRC:</FONT> #winPidgin irc.freenode.net पर<BR><BR>"
msgid "Current Developers"
@@ -12538,15 +12638,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr "కొత్త మెయిల్ నోటిఫికేషన్లు "
-msgid "_Copy Email Address"
-msgstr "_ఇ-మెయిల్ అడ్రసును కాపీ చేయండి. "
-
-msgid "_Open Link in Browser"
-msgstr "_బ్రౌజర్‌లో లింక్‌ను ఓపెన్ చేయండి. "
-
-msgid "_Copy Link Location"
-msgstr "_లింక్ లొకేషన్‌ను కాపీ చేయండి. "
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12817,6 +12908,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12844,6 +12936,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12885,14 +12978,27 @@ msgstr ""
msgid "Pidgin"
msgstr "పేజింగ్ "
-msgid "Open All Messages"
-msgstr "అన్ని సందేశాలను తెరవండి"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "లెక్కిస్తూ..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
msgstr ""
-"<span weight=\"bold\" size=\"larger\">మీకు మెయిల్ వచ్చింది!</span>\n"
-"\n"
-"%s"
# Descriptive label
#, c-format
@@ -12924,6 +13030,37 @@ msgid ""
"The 'Manual' browser command has been chosen, but no command has been set."
msgstr "'మాన్యుయల్' బ్రౌజర్ కమాండ్‌ను ఎంచుకున్నారు, కాని కమాండ్‌ను సెట్ చేయలేదు."
+msgid "Open All Messages"
+msgstr "అన్ని సందేశాలను తెరవండి"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr ""
+"<span weight=\"bold\" size=\"larger\">మీకు మెయిల్ వచ్చింది!</span>\n"
+"\n"
+"%s"
+
+# "New Buddy Pounce"
+#, fuzzy
+msgid "New Pounces"
+msgstr "కొత్తమిత్రుడు దూసుకొస్తున్నాడు"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr ""
+"<span weight=\"bold\" size=\"larger\">మీకు మెయిల్ వచ్చింది!</span>\n"
+"\n"
+"%s"
+
+# #-#-#-#-# gnome-applets.gnome-2-2.hi.po (gnome-applets 2.x) #-#-#-#-#
+# gnome-session/gsm-client-row.c:43
+# #-#-#-#-# gnome-session.gnome-2-2.hi.po (gnome-session VERSION) #-#-#-#-#
+#, fuzzy
+msgid "No message"
+msgstr "అజ్ఞాత సందేశం"
+
msgid "The following plugins will be unloaded."
msgstr "ఈ కింది ప్లగ్ ఇన్ లను అన్ లోడ్ అవుతాయి."
@@ -12978,6 +13115,10 @@ msgstr "<b>ప్లగ్ ఇన్ వివరాలు</b>"
msgid "Select a file"
msgstr "ఫైలును సెలక్ట్ చేయుము."
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "మిత్రుడు దూసుకొస్తున్నాడు ఎడిట్ చేయండి "
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "ఎవరిమీద దూసుకురావాలి"
@@ -13049,6 +13190,50 @@ msgstr "రికరింగ్"
msgid "Pounce Target"
msgstr "లక్ష్యంవైపు దూసుకురండి"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "టైప్ చేస్తున్నారు"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "టైప్ చేస్తుండగా దూసుకు రానీయండి"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "సైన్ ఆన్"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr " (%s) ఖాళీగా ఉన్న %s తిరిగి వచ్చారు"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "తిరిగివచ్చారు"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "టైపుచేయడం ఆపేశారు"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "సైన్‌ఆఫ్ "
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "ఖాళీగా ఉన్నారు"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "దూరంగా ఉన్నప్పుడు "
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "సందేశాన్ని పంపండి"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "తెలియని వారెవరో దూసుకొచ్చారు. దయచేసి రిపోర్టు చేయండి!"
+
msgid "Smiley theme failed to unpack."
msgstr "స్మైలీ థీమ్ వెల్లడిలో వైఫల్యం. "
@@ -13072,6 +13257,12 @@ msgstr ""
msgid "Cl_ose conversations with the Escape key"
msgstr "%s తో సంభాషణలు "
+# Buddy List
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "మిత్రుల జాబితా "
+
# *< api_version
# *< type
# *< ui_requirement
@@ -13085,6 +13276,7 @@ msgstr "%s తో సంభాషణలు "
# *< dependencies
# *< priority
# *< id
+#. System Tray
msgid "System Tray Icon"
msgstr "System Tray Icon"
@@ -13199,9 +13391,6 @@ msgstr ""
msgid "Cannot start browser configuration program."
msgstr "వినియోగదారుని సమాచారం తీసుకొనివచ్చుటకు వీలుపడదు. "
-msgid "ST_UN server:"
-msgstr "ST_UN సర్వర్:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<స్పాన్ స్టైల్=\"ఇటాలిక్\">ఉదాహరణ: stunserver.org</span>"
@@ -13227,6 +13416,10 @@ msgstr "_పోర్ట్ ను ప్రారంభించండి:"
msgid "_End port:"
msgstr "_పోర్ట్ ను ముగించండి:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
#, fuzzy
msgid "Proxy Server &amp; Browser"
msgstr "ప్రాక్సీ సర్వర్ "
@@ -13256,6 +13449,10 @@ msgstr "ప్రాక్సీ సర్వర్ "
msgid "No proxy"
msgstr "ప్రాక్సీ లేదు "
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "_వినియోగదారుడు:"
@@ -13431,13 +13628,13 @@ msgstr "ఇద్దరూ దూరంగా లేదా ఖాళీగా
msgid "Auto-away"
msgstr "స్వతఃదూరం"
-msgid "Change status when _idle"
-msgstr "_ఖాళీగా ఉన్నప్పుడు స్థాయిని మార్చు"
-
#, fuzzy
msgid "_Minutes before becoming idle:"
msgstr "స్థాయిమార్చడానికి _నిమిషాల ముందు:"
+msgid "Change status when _idle"
+msgstr "_ఖాళీగా ఉన్నప్పుడు స్థాయిని మార్చు"
+
msgid "Change _status to:"
msgstr " _స్థాయిని కు మార్చు:"
@@ -13589,6 +13786,12 @@ msgstr "సేవ్ చేసి, ఉపయోగించు"
msgid "Status for %s"
msgstr "%s కోసం స్థాయి "
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
#, fuzzy
msgid "Custom Smiley"
msgstr "స్మైలీని చేర్చండి."
@@ -13599,15 +13802,15 @@ msgstr ""
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
+msgstr ""
+
#, fuzzy
msgid "Duplicate Shortcut"
msgstr "డూప్లికేట్ కరక్షన్"
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
-msgstr ""
-
#, fuzzy
msgid "Please select an image for the smiley."
msgstr "స్థాయికోసం ఖాళీగాలేని శీర్షికను దయచేసి ఎంటర్ చేయండి. "
@@ -13622,18 +13825,25 @@ msgid "Add Smiley"
msgstr "చిరునవ్వు!"
#, fuzzy
-msgid "Smiley _Image"
+msgid "_Image:"
msgstr "సచిత్రమును సేవ్ చేయుము."
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr ""
+# Creating the options for the protocol
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "పోర్ట్ "
# show everything
#, fuzzy
msgid "Smiley"
msgstr "చిరునవ్వు!"
+# Creating the options for the protocol
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "పోర్ట్ "
+
msgid "Custom Smiley Manager"
msgstr ""
@@ -13767,6 +13977,16 @@ msgid ""
"Failed to load image '%s': reason not known, probably a corrupt image file"
msgstr "చిత్రం '%s': ను లోడ్ చేయడంలో వైఫల్యం కారణం తెలియదు, బహుశా చిత్రంఫైలు కరప్ట్ అయిఉండవచ్చు"
+#, fuzzy
+msgid "_Open Link"
+msgstr ": లో _లింక్‌ను ఓపెన్ చేయండి"
+
+msgid "_Copy Link Location"
+msgstr "_లింక్ లొకేషన్‌ను కాపీ చేయండి. "
+
+msgid "_Copy Email Address"
+msgstr "_ఇ-మెయిల్ అడ్రసును కాపీ చేయండి. "
+
msgid "Save File"
msgstr "ఫైలును సేవ్ చేయి"
@@ -14924,9 +15144,6 @@ msgstr "_మిత్రుల జాబితా విండోను ఎప
msgid "Only when docked"
msgstr "డాక్ కాబడినప్పుడు మాత్రమే"
-msgid "_Flash window when chat messages are received"
-msgstr "_చాట్ సందేశాలు మీకు చేరినప్పుడు విండోను ఫ్లాష్ చేయండి"
-
#, fuzzy
msgid "Windows Pidgin Options"
msgstr "పిడ్గ్విన్ అవకాశాలు"
@@ -14977,6 +15194,230 @@ msgstr "కొత్త raw XMPP స్టాంజాలను పంపిం
msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr "ఈ ప్లగ్ ఇన్ XMPP సర్వర్ ను లేదా క్లైంట్స్ ను డీబగ్గింగ్ చేయాడానికి ఉపయోగపడుతుంది."
+#, fuzzy
+#~ msgid "Invite message"
+#~ msgstr "సందేశంలో పొందుపరచు"
+
+# Put our happy label in it.
+#, fuzzy
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr "మీరు ఆహ్వానించదల్చుకున్న మిత్రుని పేరును ఆప్షనల్ ఆహ్వాన సందేశంతో పాటుగా ఎంటర్ చేయండి."
+
+#, fuzzy
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "నోట్స్ అడ్రస్ బుక్ ను ఎంపిక చేయండి"
+
+#~ msgid ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+#~ msgstr ""
+#~ "త్వరలో మీరు డిస్‌కనెక్ట్ చేయబడవచ్చు. ఇది ఫిక్స్ అయేంతవరకు మీరు TOC ని వాడాలని అనుకోవచ్చు. అప్‌డేట్స్ "
+#~ "కోసం %s చెక్ చేయండి. "
+
+#, fuzzy
+#~ msgid "Add buddy Q&A"
+#~ msgstr "మిత్రుని చేర్చుము "
+
+#, fuzzy
+#~ msgid "Can not decrypt get server reply"
+#~ msgstr "సర్వర్ సమాచారం తీసుకురావడం సాధ్యం కాదు "
+
+#, fuzzy
+#~ msgid "Keep alive error"
+#~ msgstr "రీడ్ చేయడంలో పొరపాటు"
+
+#, fuzzy
+#~ msgid ""
+#~ "Lost connection with server:\n"
+#~ "%d, %s"
+#~ msgstr ""
+#~ "సర్వర్ తో కనెక్షన్ పోయింది:\n"
+#~ "%s"
+
+# Account options
+#, fuzzy
+#~ msgid "Connecting server ..."
+#~ msgstr "సర్వర్‌ను కనెక్ట్ చేయండి"
+
+#~ msgid "Looking up %s"
+#~ msgstr "%s కోసం చూస్తున్నది "
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "%s కు కనెక్షన్ వైఫల్యం"
+
+#~ msgid "Signon: %s"
+#~ msgstr "సైన్-ఆన్: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "%s ఫైలును రైట్ చేయలేకపోతోంది."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "%s ఫైలును రీడ్ చేయలేకపోతోంది."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "సందేశం చాలా పొడవుగా ఉంది, చివరి %s బైట్స్ కుదించబడ్డాయి. "
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s ప్రస్తుతం లాగ్ ఇన్ కాలేదు."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "%s చేసిన హెచ్చరికకు అనుమతిలేదు."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr "ఒక సందేశాన్ని వదిలివేయడమైనది. మీ సర్వర్ వేగపరిమితిని దాటింది."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "%s లో సంభాషణ లభ్యం కాలేదు. "
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "మీరు %s కి సందేశములను వేగంగా పంపిస్తున్నారు."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "మీరు ఒక IMను %s నుంచి మిస్ అయినారు, ఎందుకంటే అది చాలా పెద్దది. "
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr "మీరు ఒక IMను %s నుంచి మిస్ అయినారు, ఎందుకంటే అది అతివేగంతో పంపబడింది."
+
+#~ msgid "Failure."
+#~ msgstr "వైఫల్యం."
+
+#~ msgid "Too many matches."
+#~ msgstr "సరిపోలేవి అనేకం ఉన్నాయి."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "మరిన్ని క్వాలిఫైయర్స్ కావాలి."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "డైరెక్టరీ సేవ తాత్కాలికంగా అందుబాటులో లేదు."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "ఇ-మెయిల్‌ను చూడటంపై ఆంక్షలు."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "కీవర్డ్ విస్మరించబడింది."
+
+#~ msgid "No keywords."
+#~ msgstr "కీవర్డ్స్ లేవు. "
+
+#~ msgid "User has no directory information."
+#~ msgstr "వినియోగాదారునికి డైరెక్టరీ సమాచారం లేదు. "
+
+#~ msgid "Country not supported."
+#~ msgstr "దేశానికి సపోర్టు లేదు. "
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "తెలియని వైఫల్యం: %s."
+
+#, fuzzy
+#~ msgid "Incorrect username or password."
+#~ msgstr "స్క్రీన్ పేరు లేదా పాస్‌వర్డ్ తప్పు. "
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "సర్వీస్ తాత్కాలికంగా అందుబాటులే లేదు. "
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "లాగిన్ చేయడానికి మీ వార్నింగ్ లెవల్ చాలా ఎక్కువగా ఉంది. "
+
+#~ 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 ""
+#~ "మీరు చాలా తరచుగా కనెక్ట్ చేస్తున్నారు, డిస్‌కనెక్ట్ చేస్తున్నారు. పది నిమిషాలు వేచి చూసి మరల "
+#~ "ప్రయత్నించండి. మీరు ఇలాగే ప్రయత్నిస్తుంటే ఇంకా ఎక్కువ సమయం నిరీక్షించాల్సివస్తుంది. "
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "అజ్ఞాత సైనాన్ పొరపాటు సంభవించింది: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "అజ్ఞాత పొరపాటు, %d , సంభవించింది. సమాచారం: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "చెల్లుబాటుకాని గ్రూప్ పేరు"
+
+#~ msgid "Connection Closed"
+#~ msgstr "కనెక్షన్ ముగిసింది"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "సమాధానం కోసం ప్రతీక్ష ... "
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "ఆగిన TOC మరల వెనక్కు వచ్చినది. మీరు మళ్ళీ సందేశాలను పంపవచ్చును."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "విజయవంతంగా పాస్‌వర్డ్‌ మార్పు"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "డైరెక్టరీ సమాచారాన్ని పొందండి"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "డైరెక్టరీ సమాచారాన్ని సెట్ చేయండి. "
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "వ్రాయడానికి %s ను ఓపెన్ చేయలేదు"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr "ఫైల్ ట్రాన్స్‌ఫర్ వైఫల్యం; బహుశా రెండవవైపు రద్దయి ఉంటుంది. "
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "ట్రాన్స్‌ఫర్ కోసం కనెక్ట్ చేయడం సాధ్యం కాలేదు. "
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "ఫైల్ శీర్షికను వ్రాయడం సాధ్యం కాలేదు. ఫైల్‌ ట్రాన్స్‌ఫర్ చేయబడదు."
+
+#~ msgid "Save As..."
+#~ msgstr "ఇలా సేవ్ చేయండి..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s అభ్యర్థనలు %s ఆమోదించుటకు %d files: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "ఫైల్ పంపవలసిందిగా %s మిమ్మల్ని అభ్యర్థిస్తున్నారు."
+
+# *< type
+# *< ui_requirement
+# *< flags
+# *< dependencies
+# *< priority
+# *< id
+# *< name
+# *< version
+# * summary
+# * description
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "TOC ప్రొటోకాల్ ప్లగ్ ఇన్"
+
+#~ msgid "User information for %s unavailable"
+#~ msgstr " %s కు సంబంధించిన వినియోగదారుని సమాచారం అలభ్యం. "
+
+# Build the protocol options frame.
+#~ msgid "%s Options"
+#~ msgstr "%s ఆప్షన్స్"
+
+#~ msgid "Proxy Options"
+#~ msgstr "ప్రాక్సీ ఆప్షన్లు "
+
+#~ msgid "By log size"
+#~ msgstr "లాగ్ సైజ్ వలన "
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_బ్రౌజర్‌లో లింక్‌ను ఓపెన్ చేయండి. "
+
+#~ msgid "ST_UN server:"
+#~ msgstr "ST_UN సర్వర్:"
+
+#, fuzzy
+#~ msgid "Smiley _Image"
+#~ msgstr "సచిత్రమును సేవ్ చేయుము."
+
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "_చాట్ సందేశాలు మీకు చేరినప్పుడు విండోను ఫ్లాష్ చేయండి"
+
#~ msgid "A group with the name already exists."
#~ msgstr "ఆ పేరుతో గ్రూపు ఇంతకు ముందునుంచే ఉంది. "
@@ -15074,13 +15515,6 @@ msgstr "ఈ ప్లగ్ ఇన్ XMPP సర్వర్ ను లేద
#~ msgid "Do you want to approve the request?"
#~ msgstr "అభ్యర్థనను మీరు ఆమోదించ దలచుకున్నారా?"
-#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr "%s (%s)"
-
#~ msgid "System Message"
#~ msgstr "సిస్టం సందేశం"
diff --git a/po/th.po b/po/th.po
index 26bb2c3657..299d3cc961 100644
--- a/po/th.po
+++ b/po/th.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
+"POT-Creation-Date: 2009-04-30 10:40-0400\n"
"PO-Revision-Date: 2006-04-04 15:35+0700\n"
"Last-Translator: Isriya Paireepairit <markpeak@gmail.com>\n"
"Language-Team: Thai <l10n@opentle.org>\n"
@@ -34,7 +34,7 @@ msgid ""
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -619,19 +619,6 @@ msgid "Send To"
msgstr "_ส่งไปยัง"
#, fuzzy
-msgid "Invite message"
-msgstr "เปิดข้อความทั้งหมด"
-
-msgid "Invite"
-msgstr ""
-
-#, fuzzy
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr "ใส่ชื่อคู่สนทนาที่ต้องการเชิญ รวมถึงข้อความเชิญ"
-
-#, fuzzy
msgid "Conversation"
msgstr "การสนทนา"
@@ -885,6 +872,43 @@ msgid "System Log"
msgstr "บันทึกของระบบ"
#, fuzzy
+msgid "Calling ... "
+msgstr "กำลังคำนวณ..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+#, fuzzy
+msgid "Accept"
+msgstr "_ตอบรับ"
+
+#, fuzzy
+msgid "Reject"
+msgstr "คืนค่าเดิม"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "คุณได้คุยในการสนทนากลุ่ม"
+
+msgid "call: Make an audio call."
+msgstr ""
+
+#, fuzzy
msgid "Emails"
msgstr "อีเมล"
@@ -921,6 +945,9 @@ msgstr "เชื่อมต่อ"
msgid "IM"
msgstr "ส่งข้อความ"
+msgid "Invite"
+msgstr ""
+
msgid "(none)"
msgstr ""
@@ -1138,7 +1165,6 @@ msgstr "%s เปลี่ยนสถานะเป็นไม่อยู่
msgid "%s has sent you a message. (%s)"
msgstr "%s ส่งข้อความถึงคุณ (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr ""
@@ -1194,7 +1220,6 @@ msgstr "เ_วลาเป็นนาทีสำหรับเปลี่
msgid "Change status to"
msgstr "เปลี่ยน_สถานะเป็น:"
-#. Conversations
msgid "Conversations"
msgstr "การสนทนา"
@@ -1536,7 +1561,6 @@ msgid ""
"conversation into the current conversation."
msgstr "เมื่อเปิดหน้าต่างสนทนาใหม่ ปลั๊กอินนี้จะแสดงประวัติการสนทนาคราวก่อนด้วย"
-#, c-format
msgid "Online"
msgstr ""
@@ -1584,6 +1608,28 @@ msgstr ""
msgid "Lastlog plugin."
msgstr ""
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr ""
@@ -1682,15 +1728,6 @@ msgstr "ตอบรับคำเชิญสนทนา?"
msgid "SSL Certificate Verification"
msgstr ""
-#. Number of actions
-#, fuzzy
-msgid "Accept"
-msgstr "_ตอบรับ"
-
-#, fuzzy
-msgid "Reject"
-msgstr "คืนค่าเดิม"
-
msgid "_View Certificate..."
msgstr ""
@@ -1827,6 +1864,16 @@ msgstr "%s ออกจากห้อง"
msgid "%s left the room (%s)."
msgstr "%s ออกจากห้อง (%s)"
+#, fuzzy
+msgid "Invite to chat"
+msgstr "เ_ริ่มสนทนากลุ่ม"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr "ใส่ชื่อคู่สนทนาที่ต้องการเชิญ รวมถึงข้อความเชิญ"
+
#, c-format
msgid "Failed to get connection: %s"
msgstr ""
@@ -1954,7 +2001,6 @@ msgstr "เริ่มการส่งแฟ้ม %s จาก %s"
msgid "Transfer of file %s complete"
msgstr "การส่งแฟ้ม %s สำเร็จ"
-#, c-format
msgid "File transfer complete"
msgstr "การส่งแฟ้มสำเร็จ"
@@ -1962,7 +2008,6 @@ msgstr "การส่งแฟ้มสำเร็จ"
msgid "You canceled the transfer of %s"
msgstr "คุณได้ยกเลิกการส่งแฟ้ม %s"
-#, c-format
msgid "File transfer cancelled"
msgstr "การส่งแฟ้มถูกยกเลิก"
@@ -2147,7 +2192,6 @@ msgstr ""
msgid "You are using %s, but this plugin requires %s."
msgstr ""
-#, c-format
msgid "This plugin has not defined an ID."
msgstr ""
@@ -2616,6 +2660,32 @@ msgstr ""
msgid "Do not ask. Always save in pounce."
msgstr ""
+#, fuzzy
+msgid "One Time Password"
+msgstr "ใส่รหัสผ่าน"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2815,7 +2885,6 @@ msgid ""
"Unable to establish connection with the local mDNS server. Is it running?"
msgstr ""
-#. Creating the options for the protocol
msgid "First name"
msgstr "ชื่อ"
@@ -2849,6 +2918,11 @@ msgstr ""
msgid "Purple Person"
msgstr ""
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "_รูปแบบของบันทึก:"
+
msgid "Bonjour"
msgstr ""
@@ -3005,13 +3079,13 @@ msgstr ""
msgid "Add to chat..."
msgstr ""
+#. Global
msgid "Available"
msgstr "อยู่"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "ไม่อยู่"
@@ -3350,6 +3424,17 @@ msgid ""
"invalid characters."
msgstr ""
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr ""
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "ชื่อเล่น"
+
msgid "Cannot change nick"
msgstr ""
@@ -3579,6 +3664,35 @@ msgstr ""
msgid "SASL error"
msgstr ""
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+msgid "No session ID given"
+msgstr ""
+
+msgid "Unsupported version of BOSH protocol"
+msgstr ""
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr "บันทึกการสนทนากับ %s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "ไม่สามารถส่งข้อความถึง %s ได้"
+
+msgid "Unable to create socket"
+msgstr ""
+
+msgid "Write error"
+msgstr ""
+
msgid "Full Name"
msgstr "ชื่อเต็ม"
@@ -3645,6 +3759,10 @@ msgstr "เมือง"
msgid "Operating System"
msgstr ""
+#, fuzzy
+msgid "Local Time"
+msgstr "ที่อยู่:"
+
msgid "Last Activity"
msgstr ""
@@ -3870,7 +3988,6 @@ msgstr "กำลังคุย"
msgid "Extended Away"
msgstr "ไม่อยู่ยาว"
-#, c-format
msgid "Do Not Disturb"
msgstr "ห้ามรบกวน"
@@ -3994,9 +4111,6 @@ msgstr "ค้นหาห้อง"
msgid "You require encryption, but it is not available on this server."
msgstr ""
-msgid "Write error"
-msgstr ""
-
#, fuzzy
msgid "Ping timeout"
msgstr "ข้อความปกติ"
@@ -4006,11 +4120,8 @@ msgstr ""
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
-msgstr ""
-
-msgid "Unable to create socket"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
msgid "Invalid XMPP ID"
@@ -4019,6 +4130,10 @@ msgstr ""
msgid "Invalid XMPP ID. Domain must be set."
msgstr ""
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "ไม่สามารถติดต่อไปยังโฮสต์ได้"
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr ""
@@ -4108,9 +4223,18 @@ msgstr ""
msgid "Re-initializing Stream"
msgstr ""
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr ""
+msgid "Mood"
+msgstr ""
+
+msgid "Now Listening"
+msgstr ""
+
msgid "Both"
msgstr ""
@@ -4132,12 +4256,6 @@ msgstr ""
msgid "Subscription"
msgstr ""
-msgid "Mood"
-msgstr ""
-
-msgid "Now Listening"
-msgstr ""
-
msgid "Mood Text"
msgstr ""
@@ -4378,18 +4496,24 @@ msgstr ""
msgid "Unable to ping user %s"
msgstr "ไม่สามารถส่งข้อความถึง %s ได้"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
+msgstr "ไม่สามารถเล่นเสียงได้ เนื่องจากไม่พบแฟ้มที่เลือก (%s)"
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
+msgstr "ไม่สามารถเล่นเสียงได้ เนื่องจากไม่พบแฟ้มที่เลือก (%s)"
#, fuzzy, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "ไม่สามารถเล่นเสียงได้ เนื่องจากไม่พบแฟ้มที่เลือก (%s)"
+#, c-format
+msgid "Buzzing %s..."
+msgstr ""
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
msgid "Buzz"
@@ -4399,10 +4523,36 @@ msgstr ""
msgid "%s has buzzed you!"
msgstr "%s ออกจากระบบ"
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "ไม่สามารถส่งข้อความถึง %s ได้"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "ไม่สามารถส่งข้อความได้: ข้อความใหญ่เกินไป"
+
#, c-format
-msgid "Buzzing %s..."
+msgid "Unable to initiate media with %s: not subscribed to user presence"
msgstr ""
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "เชื่อมต่อล้มเหลว"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "กรุณาใส่ชื่อคู่สนทนาที่ต้องการดูข้อมูล"
+
+#, fuzzy
+msgid "Select a Resource"
+msgstr "เลือกแฟ้ม"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "เ_ริ่มสนทนากลุ่ม"
+
msgid "config: Configure a chat room."
msgstr ""
@@ -4554,6 +4704,20 @@ msgstr ""
msgid "Error in chat %s"
msgstr ""
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr ""
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "การส่งแฟ้มล้มเหลว"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "ไม่สามารถเปิดแฟ้มได้"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4577,10 +4741,6 @@ msgstr ""
msgid "Please select the resource of %s to which you would like to send a file"
msgstr "กรุณาใส่ชื่อคู่สนทนาที่ต้องการดูข้อมูล"
-#, fuzzy
-msgid "Select a Resource"
-msgstr "เลือกแฟ้ม"
-
msgid "Edit User Mood"
msgstr ""
@@ -4619,7 +4779,17 @@ msgstr "การกระทำ"
msgid "Select an action"
msgstr "เลือกแฟ้ม"
-msgid "Unable to retrieve MSN Address Book"
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr ""
+
+msgid "Buddy Add error"
+msgstr ""
+
+msgid "The username specified does not exist."
msgstr ""
#, c-format
@@ -4846,7 +5016,6 @@ msgstr ""
msgid "Passport account not yet verified"
msgstr ""
-#, c-format
msgid "Passport account suspended"
msgstr ""
@@ -4937,6 +5106,13 @@ msgstr ""
msgid "Page"
msgstr ""
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "IM ที่ทำงาน"
+
msgid "Has you"
msgstr "มีชื่อคุณในรายการ"
@@ -4977,6 +5153,14 @@ msgstr "ที่อยู่"
msgid "Album"
msgstr ""
+#, fuzzy
+msgid "Game Title"
+msgstr "ชื่อ"
+
+#, fuzzy
+msgid "Office Title"
+msgstr "ชื่อ"
+
msgid "Set Friendly Name..."
msgstr "เปลี่ยนชื่อเรียก..."
@@ -5167,8 +5351,9 @@ msgid ""
"does not exist."
msgstr "Pidgin ไม่สามารถหาข้อมูลของคู่สนทนาได้ ผู้ใช้นี้อาจไม่มีแฟ้มประวัติ"
-msgid "Profile URL"
-msgstr "URL ของแฟ้มประวัติ"
+#, fuzzy
+msgid "View web profile"
+msgstr "ผู้ใช้ออฟไลน์"
#. *< type
#. *< ui_requirement
@@ -5400,19 +5585,15 @@ msgstr "เพิ่มชื่อในสมุดที่อยู่"
msgid "Do you want to delete this buddy from your address book as well?"
msgstr ""
-#. only notify the user about problems adding to the friends list
-#. * maybe we should do something else for other lists, but it probably
-#. * won't cause too many problems if we just ignore it
-#, c-format
-msgid "Unable to add \"%s\"."
-msgstr ""
-
msgid "The username specified is invalid."
msgstr ""
msgid "This Hotmail account may not be active."
msgstr ""
+msgid "Profile URL"
+msgstr "URL ของแฟ้มประวัติ"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5427,16 +5608,13 @@ msgstr ""
msgid "MSN Protocol Plugin"
msgstr "ปลั๊กอิน Jabber"
-msgid "Missing Cipher"
-msgstr ""
-
-msgid "The RC4 cipher could not be found"
+#, c-format
+msgid "No such user: %s"
msgstr ""
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
-msgstr ""
+#, fuzzy
+msgid "User lookup"
+msgstr "ผู้ใช้ไม่อยู่ในกลุ่ม"
msgid "Reading challenge"
msgstr ""
@@ -5448,10 +5626,19 @@ msgstr ""
msgid "Logging in"
msgstr "บันทึกเหตุการณ์"
-#, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] ""
+#, fuzzy
+msgid "MySpaceIM - No Username Set"
+msgstr "ไม่มีชื่อ"
+
+msgid "You appear to have no MySpace username."
+msgstr ""
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr ""
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr "บันทึกการสนทนากับ %s"
#. Can't write _()'d strings in array initializers. Workaround.
#, fuzzy
@@ -5474,13 +5661,19 @@ msgid "MySpace"
msgstr ""
#, fuzzy
-msgid "MySpaceIM - No Username Set"
-msgstr "ไม่มีชื่อ"
+msgid "IM Friends"
+msgstr "หน้าต่าง_สนทนา"
-msgid "You appear to have no MySpace username."
-msgstr ""
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgid "Add contacts from server"
msgstr ""
#. The session is now set up, ready to be connected. This emits the
@@ -5504,22 +5697,28 @@ msgstr ""
msgid "MySpaceIM Error"
msgstr ""
-msgid "Failed to add buddy"
+msgid "Invalid input condition"
msgstr ""
-msgid "'addbuddy' command failed."
+msgid "Read buffer full (2)"
msgstr ""
-msgid "persist command failed"
+#, fuzzy
+msgid "Unparseable message"
+msgstr "ข้อความที่ไม่ได้อ่าน"
+
+#, fuzzy, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr "ไม่สามารถติดต่อไปยังโฮสต์ได้"
+
+msgid "Failed to add buddy"
msgstr ""
-#, c-format
-msgid "No such user: %s"
+msgid "'addbuddy' command failed."
msgstr ""
-#, fuzzy
-msgid "User lookup"
-msgstr "ผู้ใช้ไม่อยู่ในกลุ่ม"
+msgid "persist command failed"
+msgstr ""
msgid "Failed to remove buddy"
msgstr ""
@@ -5530,34 +5729,15 @@ msgstr ""
msgid "blocklist command failed"
msgstr ""
-msgid "Invalid input condition"
+msgid "Missing Cipher"
msgstr ""
-msgid "Read buffer full (2)"
+msgid "The RC4 cipher could not be found"
msgstr ""
-#, fuzzy
-msgid "Unparseable message"
-msgstr "ข้อความที่ไม่ได้อ่าน"
-
-#, fuzzy, c-format
-msgid "Couldn't connect to host: %s (%d)"
-msgstr "ไม่สามารถติดต่อไปยังโฮสต์ได้"
-
-#, fuzzy
-msgid "IM Friends"
-msgstr "หน้าต่าง_สนทนา"
-
-#, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-
-msgid "Add contacts from server"
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
msgstr ""
msgid "Add friends from MySpace.com"
@@ -5604,10 +5784,6 @@ msgstr "เพิ่มขนาดอักษร"
msgid "User"
msgstr "ผู้ใช้"
-#, fuzzy
-msgid "Profile"
-msgstr "แฟ้มประวัติ MSN"
-
msgid "Headline"
msgstr ""
@@ -5622,17 +5798,6 @@ msgstr ""
msgid "Client Version"
msgstr "ปิดการสนทนา"
-#. Protocol won't log in now without a username set.. Disconnect
-#, fuzzy
-msgid "No username set"
-msgstr "ไม่มีชื่อ"
-
-msgid "MySpaceIM - Please Set a Username"
-msgstr ""
-
-msgid "Please enter a username to check its availability:"
-msgstr ""
-
msgid "MySpaceIM - Username Available"
msgstr ""
@@ -5642,6 +5807,9 @@ msgstr ""
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr ""
+msgid "MySpaceIM - Please Set a Username"
+msgstr ""
+
#, fuzzy
msgid "This username is unavailable."
msgstr "ธีมนี้ไม่มีหน้าแสดงอารมณ์"
@@ -5650,6 +5818,14 @@ msgstr "ธีมนี้ไม่มีหน้าแสดงอารมณ
msgid "Please try another username:"
msgstr "ใส่รหัสผ่านใหม่ที่ต้องการ"
+#. Protocol won't log in now without a username set.. Disconnect
+#, fuzzy
+msgid "No username set"
+msgstr "ไม่มีชื่อ"
+
+msgid "Please enter a username to check its availability:"
+msgstr ""
+
#. TODO: icons for each zap
#. Lots of comments for translators:
#. Zap means "to strike suddenly and forcefully as if with a
@@ -6025,7 +6201,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr ""
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr ""
@@ -6285,23 +6460,18 @@ msgstr ""
msgid "Screen Sharing"
msgstr "ชื่อผู้ใช้"
-#, c-format
msgid "Free For Chat"
msgstr ""
-#, c-format
msgid "Not Available"
msgstr ""
-#, c-format
msgid "Occupied"
msgstr ""
-#, c-format
msgid "Web Aware"
msgstr ""
-#, c-format
msgid "Invisible"
msgstr "ไม่แสดงตัว"
@@ -6344,7 +6514,7 @@ msgid ""
"only letters, numbers and spaces, or contain only numbers."
msgstr ""
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
#, fuzzy
msgid "Invalid username."
@@ -6361,7 +6531,7 @@ msgstr ""
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr ""
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6394,11 +6564,9 @@ msgstr ""
msgid "_OK"
msgstr "ตกลง"
-#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
-msgstr ""
+#, fuzzy, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
+msgstr "คุณถูกตัดการเชื่อมต่อจากเซิร์ฟเวอร์"
msgid "Unable to get a valid AIM login hash."
msgstr ""
@@ -6522,7 +6690,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] ""
msgstr[1] ""
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr ""
@@ -6544,6 +6712,10 @@ msgstr ""
msgid "Member Since"
msgstr ""
+#, fuzzy
+msgid "Profile"
+msgstr "แฟ้มประวัติ MSN"
+
msgid "Your AIM connection may be lost."
msgstr ""
@@ -6791,6 +6963,7 @@ msgstr "เชื่อมต่อ"
msgid "Get AIM Info"
msgstr "_ดูข้อมูลคู่สนทนา"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr ""
@@ -6896,7 +7069,6 @@ msgstr ""
msgid "Attempting to connect to %s:%hu."
msgstr ""
-#, c-format
msgid "Attempting to connect via proxy server."
msgstr ""
@@ -6997,7 +7169,7 @@ msgstr ""
msgid "Visible"
msgstr "ไม่แสดงตัว"
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
#, fuzzy
@@ -7090,18 +7262,51 @@ msgstr ""
msgid "Could not change buddy information."
msgstr "ดูข้อมูลของคู่สนทนา"
-#, c-format
-msgid "%d needs Q&A"
+msgid "Mobile"
+msgstr "ใช้ผ่านมือถือ"
+
+msgid "Note"
msgstr ""
+#. callback
#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "เพิ่มคู่สนทนา"
+msgid "Buddy Memo"
+msgstr "ไอคอนในการสนทนา"
-msgid "Input answer here"
+msgid "Change his/her memo as you like"
msgstr ""
#, fuzzy
+msgid "_Modify"
+msgstr "แ_ก้ไข"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "แ_ก้ไข"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "เซิ_ร์ฟเวอร์:"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
+#, c-format
+msgid "%u requires verification"
+msgstr ""
+
+#, fuzzy
+msgid "Add buddy question"
+msgstr "เพิ่มคู่สนทนาในรายการคู่สนทนาของคุณ?"
+
+#, fuzzy
+msgid "Enter answer here"
+msgstr "ใส่เซิร์ฟเวอร์สำหรับประชุม"
+
+#, fuzzy
msgid "Send"
msgstr "_ส่ง"
@@ -7112,19 +7317,20 @@ msgstr "ชื่อผู้ใช้ไม่ถูกต้อง"
msgid "Authorization denied message:"
msgstr ""
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr ""
#, fuzzy, c-format
-msgid "%d needs authentication"
+msgid "%u needs authorization"
msgstr "เริ่มการตรวจสอบผู้ใช้"
#, fuzzy
msgid "Add buddy authorize"
msgstr "เพิ่มคู่สนทนาในรายการคู่สนทนาของคุณ?"
-msgid "Input request here"
-msgstr ""
+#, fuzzy
+msgid "Enter request here"
+msgstr "ใส่เซิร์ฟเวอร์สำหรับประชุม"
#, fuzzy
msgid "Would you be my friend?"
@@ -7146,7 +7352,7 @@ msgid "Failed sending authorize"
msgstr ""
#, fuzzy, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr "กำลังรับรายการคู่สนทนา"
#, fuzzy, c-format
@@ -7190,6 +7396,9 @@ msgstr "ใส่รหัสผ่านใหม่ที่ต้องกา
msgid "You can only search for permanent Qun\n"
msgstr ""
+msgid "(Invalid UTF-8 string)"
+msgstr ""
+
msgid "Not member"
msgstr ""
@@ -7229,15 +7438,18 @@ msgstr ""
msgid "Join QQ Qun"
msgstr ""
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
+msgid "Input request here"
msgstr ""
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "ตั้งหมายเลขโทรศัพท์บ้าน"
+
msgid "Successfully joined Qun"
msgstr ""
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
#, fuzzy
@@ -7248,7 +7460,7 @@ msgstr "ตั้งค่าเสียง"
msgid "Failed:"
msgstr "ล้มเหลว"
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
#, fuzzy
@@ -7260,11 +7472,11 @@ msgid ""
"this operation will eventually remove this Qun."
msgstr ""
-msgid "Sorry, you are not our style ..."
+msgid "Sorry, you are not our style"
msgstr ""
#, fuzzy
-msgid "Successfully changed Qun member"
+msgid "Successfully changed Qun members"
msgstr "ตั้งหมายเลขโทรศัพท์บ้าน"
#, fuzzy
@@ -7275,35 +7487,35 @@ msgid "You have successfully created a Qun"
msgstr ""
#, fuzzy
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr "ต้องการเขียนทับหรือไม่"
msgid "Setup"
msgstr ""
#, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr ""
#, c-format
-msgid "%d request to join Qun %d"
+msgid "%u request to join Qun %u"
msgstr ""
#, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr ""
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr "ลบคู่สนทนา"
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "ลบคู่สนทนา"
#, fuzzy, c-format
msgid "Unknown-%d"
@@ -7423,6 +7635,13 @@ msgstr "<b>นามแฝง:</b> %s<br>"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<b>นามแฝง:</b> %s<br>"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<br><b>ส่วนตัว</b><br>%s"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7430,7 +7649,7 @@ msgid "<i>Feel free to join us!</i> :)"
msgstr ""
#, fuzzy, c-format
-msgid "About OpenQ r%s"
+msgid "About OpenQ %s"
msgstr "เกี่ยวกับ Pidgin"
#, fuzzy
@@ -7451,6 +7670,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "เกี่ยวกับ Pidgin"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "ที่อยู่บ้าน"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7482,7 +7705,6 @@ msgstr ""
msgid "QQ2008"
msgstr ""
-#. #endif
#, fuzzy
msgid "Connect by TCP"
msgstr "กำลังเชื่อมต่อ"
@@ -7495,6 +7717,9 @@ msgstr "พอร์ตเซิร์ฟเวอร์"
msgid "Show server news"
msgstr "ที่อยู่เซิร์ฟเวอร์"
+msgid "Show chat room when msg comes"
+msgstr ""
+
msgid "Keep alive interval (seconds)"
msgstr ""
@@ -7503,12 +7728,9 @@ msgid "Update interval (seconds)"
msgstr "ข้อมูลคู่สนทนา"
#, fuzzy
-msgid "Can not decrypt server reply"
+msgid "Cannot decrypt server reply"
msgstr "เซิร์ฟเวอร์"
-msgid "Can not decrypt get server reply"
-msgstr ""
-
#, c-format
msgid "Failed requesting token, 0x%02X"
msgstr ""
@@ -7528,19 +7750,21 @@ msgid "Activation required"
msgstr ""
#, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr ""
-msgid "Keep alive error"
-msgstr ""
+#, fuzzy
+msgid "Could not decrypt server reply"
+msgstr "เซิร์ฟเวอร์"
-msgid "Requesting captcha ..."
-msgstr ""
+#, fuzzy
+msgid "Requesting captcha"
+msgstr "เหลืออีก"
-msgid "Checking code of captcha ..."
+msgid "Checking captcha"
msgstr ""
-msgid "Failed captcha verify"
+msgid "Failed captcha verification"
msgstr ""
# msgstr ""
@@ -7554,7 +7778,7 @@ msgstr "บันทึกรูปภาพ"
msgid "Enter code"
msgstr "ใส่รหัสผ่าน"
-msgid "QQ Captcha Verifing"
+msgid "QQ Captcha Verification"
msgstr ""
#, fuzzy
@@ -7562,28 +7786,21 @@ msgid "Enter the text from the image"
msgstr "กรุณาใส่ชื่อของกลุ่มที่ต้องการเพิ่ม"
#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
+msgid "Unknown reply when checking password (0x%02X)"
msgstr ""
#, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
msgstr ""
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr ""
msgid "Socket error"
msgstr ""
-#, fuzzy, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr "บันทึกการสนทนากับ %s"
-
#, fuzzy
msgid "Unable to read from socket"
msgstr "ไม่สามารถส่งข้อความได้"
@@ -7596,11 +7813,12 @@ msgid "Connection lost"
msgstr "เกิดข้อผิดพลาดในการเชื่อมต่อ"
#, fuzzy
-msgid "Get server ..."
+msgid "Getting server"
msgstr "แก้ข้อมูลผู้ใช้..."
-msgid "Request token"
-msgstr ""
+#, fuzzy
+msgid "Requesting token"
+msgstr "เหลืออีก"
msgid "Couldn't resolve host"
msgstr ""
@@ -7610,17 +7828,13 @@ msgid "Invalid server or port"
msgstr "เซิร์ฟเวอร์ไม่ถูกต้อง"
#, fuzzy
-msgid "Connecting server ..."
+msgid "Connecting to server"
msgstr "เซิร์ฟเวอร์"
#, fuzzy
msgid "QQ Error"
msgstr "เกิดข้อผิดพลาดในการเชื่อมต่อ"
-#, fuzzy
-msgid "Failed to send IM."
-msgstr "ไม่สามารถส่งข้อความได้"
-
#, fuzzy, c-format
msgid ""
"Server News:\n"
@@ -7629,6 +7843,10 @@ msgid ""
"%s"
msgstr "ที่อยู่เซิร์ฟเวอร์"
+#, c-format
+msgid "%s:%s"
+msgstr ""
+
#, fuzzy, c-format
msgid "From %s:"
msgstr "จาก"
@@ -7639,32 +7857,30 @@ msgid ""
"%s"
msgstr ""
-msgid "Unknow SERVER CMD"
-msgstr ""
+#, fuzzy
+msgid "Unknown SERVER CMD"
+msgstr "เกิดข้อผิดพลาดไม่ทราบสาเหตุ"
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
#, fuzzy
msgid "QQ Qun Command"
msgstr "เรียกคำสั่ง"
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr ""
-
-msgid "Can not decrypt login reply"
-msgstr ""
+#, fuzzy
+msgid "Could not decrypt login reply"
+msgstr "เซิร์ฟเวอร์"
#, fuzzy
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr "เกิดข้อผิดพลาดไม่ทราบสาเหตุ"
#, fuzzy
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr "เกิดข้อผิดพลาดไม่ทราบสาเหตุ"
#, fuzzy, c-format
@@ -8443,9 +8659,6 @@ msgstr ""
msgid "Unit"
msgstr ""
-msgid "Note"
-msgstr ""
-
msgid "Join Chat"
msgstr ""
@@ -9056,6 +9269,10 @@ msgstr "ไม่สามารถติดต่อไปยังโฮสต
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr "ชื่อเล่นของ IRC ไม่อนุญาตให้มีช่องว่าง"
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "พอร์ตเซิร์ฟเวอร์"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -9090,189 +9307,10 @@ msgid "Auth Domain"
msgstr ""
#, c-format
-msgid "Looking up %s"
-msgstr ""
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr ""
-
-#, c-format
-msgid "Signon: %s"
-msgstr ""
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr ""
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr ""
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr ""
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr ""
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr ""
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr ""
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr ""
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr ""
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr ""
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr ""
-
-#, c-format
-msgid "Failure."
-msgstr ""
-
-#, c-format
-msgid "Too many matches."
-msgstr ""
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr ""
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr ""
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr ""
-
-#, c-format
-msgid "Keyword ignored."
-msgstr ""
-
-#, c-format
-msgid "No keywords."
-msgstr ""
-
-#, c-format
-msgid "User has no directory information."
-msgstr ""
-
-#, c-format
-msgid "Country not supported."
-msgstr ""
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr ""
-
-#, fuzzy, c-format
-msgid "Incorrect username or password."
-msgstr "รหัสผ่านใหม่"
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr ""
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr ""
-
-#, c-format
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
-msgstr ""
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr ""
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr ""
-
-msgid "Invalid Groupname"
-msgstr "ชื่อกลุ่มไม่ถูกต้อง"
-
-msgid "Connection Closed"
-msgstr ""
-
-msgid "Waiting for reply..."
-msgstr "กำลังรอการตอบรับ..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr ""
-
-msgid "Password Change Successful"
-msgstr ""
-
-msgid "_Group:"
-msgstr ""
-
-msgid "Get Dir Info"
-msgstr ""
-
-msgid "Set Dir Info"
-msgstr ""
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr ""
-
-msgid "File transfer failed; other side probably canceled."
-msgstr ""
-
-msgid "Could not connect for transfer."
-msgstr ""
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr ""
-
-#, fuzzy
-msgid "Save As..."
-msgstr "บันทึกไอคอนเป็น..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr ""
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
+msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
-#, c-format
-msgid "%s has sent you a webcam invite, which is not yet supported."
+msgid "Your SMS was not delivered"
msgstr ""
msgid "Your Yahoo! message did not get sent."
@@ -9529,13 +9567,8 @@ msgstr ""
msgid "Last Update"
msgstr ""
-#, c-format
-msgid "User information for %s unavailable"
-msgstr ""
-
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr ""
msgid ""
@@ -9853,9 +9886,6 @@ msgstr "ห้ามรบกวน"
msgid "Extended away"
msgstr "ไม่อยู่ยาว"
-msgid "Mobile"
-msgstr "ใช้ผ่านมือถือ"
-
msgid "Listening to music"
msgstr ""
@@ -9897,16 +9927,6 @@ msgstr ""
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr ""
-
-#, 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 ""
-
msgid "Calculating..."
msgstr "กำลังคำนวณ..."
@@ -9980,6 +10000,12 @@ msgid "Unable to connect to %s: %s"
msgstr "ไม่สามารถส่งข้อความถึง %s ได้"
#, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+
+#, c-format
msgid " - %s"
msgstr ""
@@ -10012,6 +10038,16 @@ msgstr "เกิดข้อผิดพลาดในการเชื่อ
msgid "Address already in use."
msgstr ""
+#, c-format
+msgid "Error Reading %s"
+msgstr ""
+
+#, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+
msgid "Internet Messenger"
msgstr "โปรแกรมข้อความด่วน"
@@ -10059,10 +10095,8 @@ msgstr "แจ้งเตือนเมลใหม่"
msgid "Use this buddy _icon for this account:"
msgstr ""
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "ตัวเลือกสำหรับ %s "
+msgid "_Advanced"
+msgstr "_ระดับสูง"
#, fuzzy
msgid "Use GNOME Proxy Settings"
@@ -10098,9 +10132,6 @@ msgstr ""
msgid "you can see the butterflies mating"
msgstr ""
-msgid "Proxy Options"
-msgstr "พร็อกซี"
-
msgid "Proxy _type:"
msgstr "ชนิด_พร็อกซี:"
@@ -10129,8 +10160,9 @@ msgstr "_พื้นฐาน"
msgid "Create _this new account on the server"
msgstr ""
-msgid "_Advanced"
-msgstr "_ระดับสูง"
+#, fuzzy
+msgid "_Proxy"
+msgstr "พร็อกซี"
msgid "Enabled"
msgstr "ใช้งาน"
@@ -10195,6 +10227,16 @@ msgid "I_M"
msgstr "_ส่งข้อความ"
#, fuzzy
+msgid "_Audio Call"
+msgstr "เ_พิ่มการสนทนากลุ่ม"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+msgid "_Video Call"
+msgstr ""
+
+#, fuzzy
msgid "_Send File..."
msgstr "ส่งแ_ฟ้ม"
@@ -10345,6 +10387,10 @@ msgstr "/เครื่องมือ/เตือน_สถานะคู่
msgid "/Tools/_Certificates"
msgstr "/เครื่องมือ/_ปรับแต่ง"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/เครื่องมือ/บันทึกของ_ระบบ"
+
msgid "/Tools/Plu_gins"
msgstr "/เครื่องมือ/ป_ลั๊กอิน"
@@ -10354,10 +10400,6 @@ msgstr "/เครื่องมือ/_ปรับแต่ง"
msgid "/Tools/Pr_ivacy"
msgstr "/เครื่องมือ/ความเป็นส่วน_ตัว"
-#, fuzzy
-msgid "/Tools/Smile_y"
-msgstr "/เครื่องมือ/บันทึกของ_ระบบ"
-
msgid "/Tools/_File Transfers"
msgstr "/เครื่องมือ/ส่งแ_ฟ้ม"
@@ -10482,8 +10524,8 @@ msgstr "ผู้ใช้เรียงเอง"
msgid "By status"
msgstr "ตามสถานะ"
-msgid "By log size"
-msgstr "ตามขนาดแฟ้มบันทึก"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10501,6 +10543,9 @@ msgstr "เชื่อมต่อ"
msgid "Re-enable"
msgstr "เ_ปลี่ยนชื่อ"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr ""
@@ -10591,6 +10636,9 @@ msgstr ""
msgid "A_lias:"
msgstr "นามแฝง:"
+msgid "_Group:"
+msgstr ""
+
msgid "Auto_join when account becomes online."
msgstr ""
@@ -10643,12 +10691,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr "เชิญเข้าห้องสนทนากลุ่ม"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr "ใส่ชื่อคู่สนทนาที่ต้องการเชิญ รวมถึงข้อความเชิญ"
-
msgid "_Buddy:"
msgstr "_คู่สนทนา:"
@@ -10725,6 +10767,22 @@ msgstr "/สนทนา/บันทึกเ_ป็น..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/สนทนา/_ล้างข้อความเก่า"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/สนทนา/ปิ_ด"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/สนทนา/ปิ_ด"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/สนทนา/ปิ_ด"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/สนทนา/ดูบันทึกการ_สนทนา"
+
msgid "/Conversation/Se_nd File..."
msgstr "/สนทนา/_ส่งแฟ้ม..."
@@ -10802,6 +10860,18 @@ msgstr "/_สนทนา"
msgid "/Conversation/View Log"
msgstr "/สนทนา/ดูบันทึกการสนทนา"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/สนทนา/ปิ_ด"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/สนทนา/ดูบันทึกการสนทนา"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/สนทนา/ปิ_ด"
+
msgid "/Conversation/Send File..."
msgstr ""
@@ -10988,6 +11058,9 @@ msgstr "ที่อยู่"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr ""
@@ -11129,6 +11202,9 @@ msgstr ""
msgid "Ubuntu Georgian Translators"
msgstr "ผู้แปลในปัจจุบัน"
+msgid "Khmer"
+msgstr ""
+
msgid "Kannada"
msgstr ""
@@ -11150,6 +11226,9 @@ msgstr ""
msgid "Macedonian"
msgstr ""
+msgid "Mongolian"
+msgstr ""
+
msgid "Bokmål Norwegian"
msgstr ""
@@ -11257,7 +11336,24 @@ msgid ""
msgstr ""
#, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr ""
+
+#, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr ""
msgid "Current Developers"
@@ -11574,15 +11670,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr "แจ้งเตือนเมลใหม่"
-msgid "_Copy Email Address"
-msgstr "คัดลอก_อีเมล"
-
-msgid "_Open Link in Browser"
-msgstr "เปิดลิงก์ในเ_บราว์เซอร์"
-
-msgid "_Copy Link Location"
-msgstr "คัดลอกที่อยู่_ลิงก์"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -11839,6 +11926,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -11856,6 +11944,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -11887,11 +11976,27 @@ msgstr ""
msgid "Pidgin"
msgstr "ปลั๊กอิน"
-msgid "Open All Messages"
-msgstr "เปิดข้อความทั้งหมด"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">คุณมีเมลใหม่!</span>"
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "กำลังคำนวณ..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, fuzzy, c-format
msgid "%s has %d new message."
@@ -11920,6 +12025,27 @@ msgid ""
"The 'Manual' browser command has been chosen, but no command has been set."
msgstr ""
+msgid "Open All Messages"
+msgstr "เปิดข้อความทั้งหมด"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">คุณมีเมลใหม่!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "เพิ่มการเตือนสถานะคู่สนทนา"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">คุณมีเมลใหม่!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "ข้อความ"
+
msgid "The following plugins will be unloaded."
msgstr ""
@@ -11969,6 +12095,10 @@ msgstr "<b>รายละเอียดของปลั๊กอิน</b>"
msgid "Select a file"
msgstr "เลือกแฟ้ม"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "แก้ไขการเตือนสถานะคู่สนทนา"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "คู่สนทนาที่ต้องการให้แจ้งเตือน"
@@ -12040,6 +12170,50 @@ msgstr "เตือน_ซ้ำ"
msgid "Pounce Target"
msgstr "เป้าหมาย"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "เ_ริ่มพิมพ์"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "คู่สนทนากำลังพิมพ์..."
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "เ_ข้าระบบ"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s กลับมาจากสถานะไม่ได้ใช้งาน (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "_กลับจากไม่อยู่"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "หยุดพิมพ์"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "_ออกจากระบบ"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "ไม่ใ_ช้งาน"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "เมื่อไม่อยู่"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "ส่ง_ข้อความ"
+
+#, c-format
+msgid "Unknown.... Please report this!"
+msgstr ""
+
msgid "Smiley theme failed to unpack."
msgstr ""
@@ -12061,6 +12235,12 @@ msgstr ""
msgid "Cl_ose conversations with the Escape key"
msgstr "บันทึกการสนทนากับ %s"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "รายชื่อคู่สนทนา"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "ไอคอนในถาดของระบบ"
@@ -12179,9 +12359,6 @@ msgstr ""
msgid "Cannot start browser configuration program."
msgstr ""
-msgid "ST_UN server:"
-msgstr "เซิร์ฟเวอร์ ST_UN:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr ""
@@ -12206,6 +12383,10 @@ msgstr "พอร์ตเ_ริ่มต้น:"
msgid "_End port:"
msgstr "พอร์ต_สุดท้าย:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
#, fuzzy
msgid "Proxy Server &amp; Browser"
msgstr "เซิร์ฟเวอร์พร็อกซี"
@@ -12235,6 +12416,10 @@ msgstr "เซิร์ฟเวอร์พร็อกซี"
msgid "No proxy"
msgstr "ไม่ใช้พร็อกซี"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "_ผู้ใช้:"
@@ -12397,13 +12582,13 @@ msgstr "เมื่อไม่อยู่หรือไม่ได้ใช
msgid "Auto-away"
msgstr "ตั้งไม่อยู่อัตโนมัติ"
-msgid "Change status when _idle"
-msgstr "เปลี่ยนสถานะเมื่อไ_ม่ได้ใช้งาน"
-
#, fuzzy
msgid "_Minutes before becoming idle:"
msgstr "เ_วลาเป็นนาทีสำหรับเปลี่ยนสถานะ"
+msgid "Change status when _idle"
+msgstr "เปลี่ยนสถานะเมื่อไ_ม่ได้ใช้งาน"
+
msgid "Change _status to:"
msgstr "เปลี่ยน_สถานะเป็น:"
@@ -12556,6 +12741,12 @@ msgstr "บั_นทึกและใช้"
msgid "Status for %s"
msgstr "สถานะของ %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
#, fuzzy
msgid "Custom Smiley"
msgstr "แทรกหน้าแสดงอารมณ์"
@@ -12566,12 +12757,12 @@ msgstr ""
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
-msgid "Duplicate Shortcut"
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
msgstr ""
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
+msgid "Duplicate Shortcut"
msgstr ""
#, fuzzy
@@ -12586,21 +12777,23 @@ msgstr "แทรกหน้าแสดงอารมณ์"
msgid "Add Smiley"
msgstr "หน้าแสดงอารมณ์!"
-# msgstr ""
-# "เกิดข้อผิดพลาดขณะบันทึกรูป: %s\n"
-# "%s"
#, fuzzy
-msgid "Smiley _Image"
+msgid "_Image:"
msgstr "บันทึกรูปภาพ"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr ""
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "พอร์ต"
#, fuzzy
msgid "Smiley"
msgstr "หน้าแสดงอารมณ์!"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "พอร์ต"
+
msgid "Custom Smiley Manager"
msgstr ""
@@ -12716,6 +12909,16 @@ msgid ""
"Failed to load image '%s': reason not known, probably a corrupt image file"
msgstr ""
+#, fuzzy
+msgid "_Open Link"
+msgstr "เ_ปิดลิงก์ใน:"
+
+msgid "_Copy Link Location"
+msgstr "คัดลอกที่อยู่_ลิงก์"
+
+msgid "_Copy Email Address"
+msgstr "คัดลอก_อีเมล"
+
msgid "Save File"
msgstr "บันทึกแฟ้ม"
@@ -13667,9 +13870,6 @@ msgstr ""
msgid "Only when docked"
msgstr ""
-msgid "_Flash window when chat messages are received"
-msgstr ""
-
#, fuzzy
msgid "Windows Pidgin Options"
msgstr "ตัวเลือกการล็อกอิน"
@@ -13720,6 +13920,60 @@ msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr ""
#, fuzzy
+#~ msgid "Invite message"
+#~ msgstr "เปิดข้อความทั้งหมด"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr "ใส่ชื่อคู่สนทนาที่ต้องการเชิญ รวมถึงข้อความเชิญ"
+
+#, fuzzy
+#~ msgid "Add buddy Q&A"
+#~ msgstr "เพิ่มคู่สนทนา"
+
+#, fuzzy
+#~ msgid "Failed to send IM."
+#~ msgstr "ไม่สามารถส่งข้อความได้"
+
+#, fuzzy
+#~ msgid "Incorrect username or password."
+#~ msgstr "รหัสผ่านใหม่"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "ชื่อกลุ่มไม่ถูกต้อง"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "กำลังรอการตอบรับ..."
+
+#, fuzzy
+#~ msgid "Save As..."
+#~ msgstr "บันทึกไอคอนเป็น..."
+
+#~ msgid "%s Options"
+#~ msgstr "ตัวเลือกสำหรับ %s "
+
+#~ msgid "Proxy Options"
+#~ msgstr "พร็อกซี"
+
+#~ msgid "By log size"
+#~ msgstr "ตามขนาดแฟ้มบันทึก"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "เปิดลิงก์ในเ_บราว์เซอร์"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "เซิร์ฟเวอร์ ST_UN:"
+
+# msgstr ""
+# "เกิดข้อผิดพลาดขณะบันทึกรูป: %s\n"
+# "%s"
+#, fuzzy
+#~ msgid "Smiley _Image"
+#~ msgstr "บันทึกรูปภาพ"
+
+#, fuzzy
#~ msgid "A group with the name already exists."
#~ msgstr "มีแฟ้มนี้อยู่แล้ว"
@@ -13782,10 +14036,6 @@ msgstr ""
#~ msgstr "เกิดปัญหาในการเปลี่ยนรหัสผ่าน"
#, fuzzy
-#~ msgid "Failed to connect all servers"
-#~ msgstr "ไม่สามารถติดต่อไปยังโฮสต์ได้"
-
-#, fuzzy
#~ msgid "Connecting server %s, retries %d"
#~ msgstr "เซิร์ฟเวอร์"
diff --git a/po/tr.po b/po/tr.po
index 87d14a8184..575199b8f5 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: tr\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
+"POT-Creation-Date: 2009-04-30 10:40-0400\n"
"PO-Revision-Date: 2007-11-09 00:33+0200\n"
"Last-Translator: Serdar Soytetir <tulliana@gmail.com>\n"
"Language-Team: <tr@li.org>\n"
@@ -34,13 +34,13 @@ msgstr "Finch"
msgid "%s. Try `%s -h' for more information.\n"
msgstr "%s. Daha fazla bilgi için `%s -h' deneyin.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -621,21 +621,6 @@ msgstr "Kayıt tutma durduruldu. Bundan sonraki iletiler kaydedilmeyecek."
msgid "Send To"
msgstr "Gönder"
-#, fuzzy
-msgid "Invite message"
-msgstr "İleti içine ekle"
-
-msgid "Invite"
-msgstr "Davet Et"
-
-#, fuzzy
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"İsterseniz bir davet mesajıyla beraber davet etmek istediğiniz kişinin "
-"ismini girin."
-
msgid "Conversation"
msgstr "Yazışma"
@@ -887,6 +872,41 @@ msgstr "Yazışmalar"
msgid "System Log"
msgstr "Sistem Kayıtları"
+#, fuzzy
+msgid "Calling ... "
+msgstr "Hesaplanıyor..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "Kabul Et"
+
+msgid "Reject"
+msgstr "Reddet"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "Sobetten ayrıldınız."
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "E-Postalar"
@@ -920,6 +940,9 @@ msgstr "Devam Et"
msgid "IM"
msgstr "Anında Mesajlaşma"
+msgid "Invite"
+msgstr "Davet Et"
+
msgid "(none)"
msgstr "(hiçbiri)"
@@ -1123,7 +1146,6 @@ msgstr "%s uzakta durumuna geçti (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s size bir ileti göndermek istiyor, (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "Bilinmeyen uyarı olayı. Lütfen bunu raporlayın !"
@@ -1169,7 +1191,6 @@ msgstr "Durumunuzu değiştirmeden önce geçecek süre"
msgid "Change status to"
msgstr "Durumu değiştir"
-#. Conversations
msgid "Conversations"
msgstr "Yazışmalar"
@@ -1494,7 +1515,6 @@ msgstr ""
"Bu eklenti yeni bir yazışma açıldığında eski yazışmaları şimdiki yazışmanın "
"başına ekler."
-#, c-format
msgid "Online"
msgstr "Çevrimiçi"
@@ -1543,6 +1563,28 @@ msgstr "Son Kayıt"
msgid "Lastlog plugin."
msgstr "Son Kayıt eklentisi"
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "hesaplar"
@@ -1641,13 +1683,6 @@ msgstr "%s için sertifika kabul edilsin mi?"
msgid "SSL Certificate Verification"
msgstr ""
-#. Number of actions
-msgid "Accept"
-msgstr "Kabul Et"
-
-msgid "Reject"
-msgstr "Reddet"
-
msgid "_View Certificate..."
msgstr "_Sertifikayı Göster..."
@@ -1780,6 +1815,18 @@ msgstr "%s odadan ayrıldı."
msgid "%s left the room (%s)."
msgstr "%s odadan ayrıldı (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Konferansa Davet Et"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"İsterseniz bir davet mesajıyla beraber davet etmek istediğiniz kişinin "
+"ismini girin."
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "Bağlantı sağlanamadı: %s"
@@ -1914,7 +1961,6 @@ msgstr "%s transferi, %s tarafından başlatılıyor."
msgid "Transfer of file %s complete"
msgstr "%s transferi tamamlandı"
-#, c-format
msgid "File transfer complete"
msgstr "Dosya transferi tamamlandı"
@@ -1922,7 +1968,6 @@ msgstr "Dosya transferi tamamlandı"
msgid "You canceled the transfer of %s"
msgstr "Dosya Transferinden Vazgeçildi (%s)"
-#, c-format
msgid "File transfer cancelled"
msgstr "Dosya transferinden vazgeçildi"
@@ -2130,7 +2175,6 @@ msgstr "(%s) %s <Otomatik-cevap>: %s\n"
msgid "You are using %s, but this plugin requires %s."
msgstr "%s kullanıyorsunuz fakat bu eklenti %s gerektiriyor."
-#, c-format
msgid "This plugin has not defined an ID."
msgstr "Bu eklentinin bir kimliği yok."
@@ -2601,6 +2645,32 @@ msgstr "Çevrimdışı iletileri uyarıcı içine kaydet"
msgid "Do not ask. Always save in pounce."
msgstr "Sorma. Herzaman uyarıcıya kaydet."
+#, fuzzy
+msgid "One Time Password"
+msgstr "Parola"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2801,7 +2871,6 @@ msgid ""
"Unable to establish connection with the local mDNS server. Is it running?"
msgstr ""
-#. Creating the options for the protocol
msgid "First name"
msgstr "Ad"
@@ -2833,6 +2902,11 @@ msgstr "Bonjour Protokolü Eklentisi"
msgid "Purple Person"
msgstr "Mor Kişi"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "Yer"
+
msgid "Bonjour"
msgstr "Bonjour"
@@ -2991,13 +3065,13 @@ msgstr "Kişi için bir sohbet seçin : %s"
msgid "Add to chat..."
msgstr "Sohbete ekle..."
+#. Global
msgid "Available"
msgstr "Çevrimiçi"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "Uzakta"
@@ -3339,6 +3413,17 @@ msgstr ""
"Seçtiğiniz hesap adı sunucu tarafından reddedildi. Muhtemelen geçersiz "
"karakterler içeriyor."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "Bu sohbet adı zaten kullanımda"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Takma ad"
+
msgid "Cannot change nick"
msgstr "Takma ad değiştirilemez"
@@ -3605,6 +3690,41 @@ msgstr "Sunucudan geçersiz yanıt"
msgid "SASL error"
msgstr "SASL hatası"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "Sebep yazılmamış."
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Desteklenmeyen Sürüm"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"Sunucu ile bağlantı sağlanamadı:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"Sunucu ile bağlantı sağlanamadı:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "Bağlantı başlatılamadı"
+
+msgid "Unable to create socket"
+msgstr "Soket oluşturulamadı"
+
+msgid "Write error"
+msgstr "Yazma hatası"
+
msgid "Full Name"
msgstr "Tam İsim"
@@ -3671,6 +3791,10 @@ msgstr "İstemci"
msgid "Operating System"
msgstr "İşletim Sistemi"
+#, fuzzy
+msgid "Local Time"
+msgstr "Yerel Dosya:"
+
msgid "Last Activity"
msgstr "Son Etkinlik"
@@ -3876,7 +4000,6 @@ msgstr "Konuşkan"
msgid "Extended Away"
msgstr "Uzun Süreli Uzakta"
-#, c-format
msgid "Do Not Disturb"
msgstr "Rahatsız Etme"
@@ -3998,9 +4121,6 @@ msgstr "Oda Bul"
msgid "You require encryption, but it is not available on this server."
msgstr ""
-msgid "Write error"
-msgstr "Yazma hatası"
-
#, fuzzy
msgid "Ping timeout"
msgstr "Düz metin"
@@ -4010,14 +4130,9 @@ msgstr "Okuma hatası"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"Sunucu ile bağlantı sağlanamadı:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "Soket oluşturulamadı"
msgid "Invalid XMPP ID"
msgstr "Geçersiz XMPP Kimliği"
@@ -4025,6 +4140,10 @@ msgstr "Geçersiz XMPP Kimliği"
msgid "Invalid XMPP ID. Domain must be set."
msgstr "Geçersiz XMPP Kimliği. Alan adı ayarlanmalı."
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Sunucuya bağlanılamadı"
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "%s@%s kaydı başarılı oldu"
@@ -4109,9 +4228,18 @@ msgstr "Kimlik Doğrulaması Yapılıyor"
msgid "Re-initializing Stream"
msgstr "Yayın Yeniden Başlatılıyor"
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr "Yetki Verilmemiş"
+msgid "Mood"
+msgstr "Ruh Hali"
+
+msgid "Now Listening"
+msgstr ""
+
msgid "Both"
msgstr "İkisi de"
@@ -4133,12 +4261,6 @@ msgstr "Hiçbiri"
msgid "Subscription"
msgstr "Üyelik"
-msgid "Mood"
-msgstr "Ruh Hali"
-
-msgid "Now Listening"
-msgstr ""
-
msgid "Mood Text"
msgstr ""
@@ -4377,17 +4499,23 @@ msgid "Unable to ping user %s"
msgstr "%s kullanıcısına ping atılamadı"
#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr ""
#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+msgid "Unable to buzz, because %s might be offline."
msgstr ""
#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr ""
+#, c-format
+msgid "Buzzing %s..."
+msgstr "%s kullanıcısına bir titreşim gönderiliyor..."
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
msgid "Buzz"
@@ -4397,9 +4525,36 @@ msgstr ""
msgid "%s has buzzed you!"
msgstr ""
-#, c-format
-msgid "Buzzing %s..."
-msgstr "%s kullanıcısına bir titreşim gönderiliyor..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "İleti %s kişisine gönderilemedi, geçersiz JID"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "Dosya %s kişisine gönderilemedi, kullanıcı bağlı değil"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr "%s kullanıcısına dosya gönderilemedi, kullanıcı bağlı değil"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "Kayıt Başarısız Oldu"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr ""
+"Lütfen bilgilerini görmek istediğiniz kişinin görüntü veya etiket ismini "
+"giriniz."
+
+msgid "Select a Resource"
+msgstr "Bir Kaynak Seçin"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "Kişiyle Sohbete _Başla"
msgid "config: Configure a chat room."
msgstr "config: Sohbet odasını düzenle."
@@ -4559,6 +4714,21 @@ msgstr "%s sohbetine katılırken hata"
msgid "Error in chat %s"
msgstr "%s sohbetinde hata"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "Dosyayı açarken bir hata oluştu."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "Dosya aktarımı başarısız oldu"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Dosya açılamadı '%s': %s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr "%s dosyası gönderilemedi, kullanıcı dosya aktarımlarını desteklemiyor"
@@ -4584,9 +4754,6 @@ msgstr ""
"Lütfen bilgilerini görmek istediğiniz kişinin görüntü veya etiket ismini "
"giriniz."
-msgid "Select a Resource"
-msgstr "Bir Kaynak Seçin"
-
msgid "Edit User Mood"
msgstr ""
@@ -4619,8 +4786,19 @@ msgstr "Eylemler"
msgid "Select an action"
msgstr "Bir eylem seçin"
-msgid "Unable to retrieve MSN Address Book"
-msgstr "MSN Adres Defteri getirilemedi"
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr "\"%s\" eklenemiyor."
+
+msgid "Buddy Add error"
+msgstr ""
+
+#, fuzzy
+msgid "The username specified does not exist."
+msgstr "Belirlenen görüntü adı geçersiz."
#, c-format
msgid "Buddy list synchronization issue in %s (%s)"
@@ -4846,7 +5024,7 @@ msgstr "Ebeveyn izinsiz Çocuk Passport hesabı"
msgid "Passport account not yet verified"
msgstr "Passport hesabı henüz doğrulanmadı"
-#, fuzzy, c-format
+#, fuzzy
msgid "Passport account suspended"
msgstr "Passport hesabı henüz doğrulanmadı"
@@ -4940,6 +5118,13 @@ msgstr "Bir SMS gönder."
msgid "Page"
msgstr "Sayfa"
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "İş"
+
msgid "Has you"
msgstr ""
@@ -4981,6 +5166,13 @@ msgstr "Sanatçılar"
msgid "Album"
msgstr "Adium"
+#, fuzzy
+msgid "Game Title"
+msgstr "Başlık"
+
+msgid "Office Title"
+msgstr ""
+
msgid "Set Friendly Name..."
msgstr "Arkadaşlık İsmi Ayarla..."
@@ -5170,8 +5362,9 @@ msgid ""
"does not exist."
msgstr ""
-msgid "Profile URL"
-msgstr "Profil URL"
+#, fuzzy
+msgid "View web profile"
+msgstr "Çevrimdışıyken gizle"
#. *< type
#. *< ui_requirement
@@ -5416,13 +5609,6 @@ msgstr "Adres Defterine Ekle"
msgid "Do you want to delete this buddy from your address book as well?"
msgstr "Bunu arkadaş listenize eklemek istiyor musunuz?"
-#. only notify the user about problems adding to the friends list
-#. * maybe we should do something else for other lists, but it probably
-#. * won't cause too many problems if we just ignore it
-#, c-format
-msgid "Unable to add \"%s\"."
-msgstr "\"%s\" eklenemiyor."
-
#, fuzzy
msgid "The username specified is invalid."
msgstr "Belirlenen görüntü adı geçersiz."
@@ -5430,6 +5616,9 @@ msgstr "Belirlenen görüntü adı geçersiz."
msgid "This Hotmail account may not be active."
msgstr "Bu Hotmail hesabı aktif olmayabilir."
+msgid "Profile URL"
+msgstr "Profil URL"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5444,15 +5633,11 @@ msgstr "Bu Hotmail hesabı aktif olmayabilir."
msgid "MSN Protocol Plugin"
msgstr "AIM Protokolü Eklentisi"
-msgid "Missing Cipher"
-msgstr ""
-
-msgid "The RC4 cipher could not be found"
-msgstr ""
+#, c-format
+msgid "No such user: %s"
+msgstr "Böyle bir kullanıcı yok: %s"
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
+msgid "User lookup"
msgstr ""
msgid "Reading challenge"
@@ -5464,10 +5649,21 @@ msgstr ""
msgid "Logging in"
msgstr "Giriş yapılıyor"
-#, fuzzy, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] "Sunucuya yapılan bağlantı kapandı (%d saniyedir veri alınamıyor)"
+#, fuzzy
+msgid "MySpaceIM - No Username Set"
+msgstr "Kullanıcı adı ayarlanmadı"
+
+msgid "You appear to have no MySpace username."
+msgstr ""
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr ""
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr ""
+"Sunucuyla yapılan bağlantı kesildi\n"
+"%s"
#. Can't write _()'d strings in array initializers. Workaround.
msgid "New mail messages"
@@ -5488,15 +5684,20 @@ msgstr "Yeni resim yorumları"
msgid "MySpace"
msgstr "MySpace"
-#, fuzzy
-msgid "MySpaceIM - No Username Set"
-msgstr "Kullanıcı adı ayarlanmadı"
+msgid "IM Friends"
+msgstr "Hızlı Mesajlaşma Arkadaşları"
-msgid "You appear to have no MySpace username."
-msgstr ""
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
-msgstr ""
+msgid "Add contacts from server"
+msgstr "Sunucudan kişileri ekle"
#. The session is now set up, ready to be connected. This emits the
#. * signedOn signal, so clients can now do anything with msimprpl, and
@@ -5519,6 +5720,20 @@ msgstr ""
msgid "MySpaceIM Error"
msgstr "MySpaceIM Hatası"
+msgid "Invalid input condition"
+msgstr "Geçersiz girdi durumu"
+
+#, fuzzy
+msgid "Read buffer full (2)"
+msgstr "Okuma ara belleği dolu"
+
+msgid "Unparseable message"
+msgstr "Ayrıştırılamayan ileti"
+
+#, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr "Bilgisayara bağlanılamadı: %s (%d)"
+
msgid "Failed to add buddy"
msgstr "Kişi eklenemedi"
@@ -5528,13 +5743,6 @@ msgstr "'addbuddy' komutu başarısız oldu."
msgid "persist command failed"
msgstr ""
-#, c-format
-msgid "No such user: %s"
-msgstr "Böyle bir kullanıcı yok: %s"
-
-msgid "User lookup"
-msgstr ""
-
msgid "Failed to remove buddy"
msgstr "Kişi silinemedi"
@@ -5544,34 +5752,16 @@ msgstr "'delbuddy' komutu başarısız oldu"
msgid "blocklist command failed"
msgstr ""
-msgid "Invalid input condition"
-msgstr "Geçersiz girdi durumu"
-
-#, fuzzy
-msgid "Read buffer full (2)"
-msgstr "Okuma ara belleği dolu"
-
-msgid "Unparseable message"
-msgstr "Ayrıştırılamayan ileti"
-
-#, c-format
-msgid "Couldn't connect to host: %s (%d)"
-msgstr "Bilgisayara bağlanılamadı: %s (%d)"
+msgid "Missing Cipher"
+msgstr ""
-msgid "IM Friends"
-msgstr "Hızlı Mesajlaşma Arkadaşları"
+msgid "The RC4 cipher could not be found"
+msgstr ""
-#, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-
-msgid "Add contacts from server"
-msgstr "Sunucudan kişileri ekle"
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
msgid "Add friends from MySpace.com"
msgstr "MySpace.com adresinden yeni arkadaşlar ekle"
@@ -5613,9 +5803,6 @@ msgstr "Temel yazıtipi boyutu (pt)"
msgid "User"
msgstr "Kullanıcı"
-msgid "Profile"
-msgstr "Profil"
-
msgid "Headline"
msgstr "Manşet"
@@ -5628,16 +5815,6 @@ msgstr "Toplam Arkadaşlar"
msgid "Client Version"
msgstr "İstemci Sürümü"
-#. Protocol won't log in now without a username set.. Disconnect
-msgid "No username set"
-msgstr "Kullanıcı adı ayarlanmadı"
-
-msgid "MySpaceIM - Please Set a Username"
-msgstr ""
-
-msgid "Please enter a username to check its availability:"
-msgstr ""
-
#, fuzzy
msgid "MySpaceIM - Username Available"
msgstr "Geçersiz Sunucu"
@@ -5648,6 +5825,9 @@ msgstr ""
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr ""
+msgid "MySpaceIM - Please Set a Username"
+msgstr ""
+
#, fuzzy
msgid "This username is unavailable."
msgstr "Bu tema gülenyüz içermiyor."
@@ -5656,6 +5836,13 @@ msgstr "Bu tema gülenyüz içermiyor."
msgid "Please try another username:"
msgstr "Lütfen %s için yeni ismi girin"
+#. Protocol won't log in now without a username set.. Disconnect
+msgid "No username set"
+msgstr "Kullanıcı adı ayarlanmadı"
+
+msgid "Please enter a username to check its availability:"
+msgstr ""
+
#. TODO: icons for each zap
#. Lots of comments for translators:
#. Zap means "to strike suddenly and forcefully as if with a
@@ -6040,7 +6227,6 @@ msgstr "Sunucuya bağlanılamadı. Lütfen bağlanmak istediğiniz adresi girini
msgid "Error. SSL support is not installed."
msgstr "Hata. SSL desteği kurulmamış."
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr "Bu konferans kapandı. Artık iletiler gönderilmeyecek."
@@ -6300,23 +6486,18 @@ msgstr "Kamera"
msgid "Screen Sharing"
msgstr "Kayıtlı İsim"
-#, c-format
msgid "Free For Chat"
msgstr "Sohbet için Hazır"
-#, c-format
msgid "Not Available"
msgstr "Erişilebilir Değil"
-#, c-format
msgid "Occupied"
msgstr "Meşgul"
-#, c-format
msgid "Web Aware"
msgstr "Web'e Açık"
-#, c-format
msgid "Invisible"
msgstr "Görünmez"
@@ -6366,7 +6547,7 @@ msgstr ""
"değil. Takma adlar bir harfle başlamalı ve harfler, rakamlar, boşluk ile "
"devam etmelidir."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
#, fuzzy
msgid "Invalid username."
@@ -6383,7 +6564,7 @@ msgstr "Hesabınız şuan için durdurulmuştur."
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "AOL Instant Messenger (Anlık İleti) Servisi geçici olarak servis dışı."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6418,13 +6599,10 @@ msgstr "Dijital görünümden 6 rakamı giriniz."
msgid "_OK"
msgstr "_Tamam"
-#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
+#, fuzzy, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
msgstr ""
-"Kısa bir süreliğine bağlantı kopmuş olabilir. Bu onarılana kadar TOC "
-"kullanmalısınız. Güncellemeler için ziyaret edin : %s "
+"Kısa bir süreliğine bağlantı koptu. Güncellemeler için %s adresine bakın."
msgid "Unable to get a valid AIM login hash."
msgstr "Geçerli AIM giriş hash'i alınamadı."
@@ -6561,7 +6739,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] ""
"%hu mesajı %s gönderinden bilinmeyen bir sebepten dolayı kaçırdınız."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "Mesaj gönderilemedi: %s"
@@ -6583,6 +6761,9 @@ msgstr "Bağlı olduğu süre:"
msgid "Member Since"
msgstr "Üye olduğu süre:"
+msgid "Profile"
+msgstr "Profil"
+
msgid "Your AIM connection may be lost."
msgstr "AIM bağlantınız kaybolmuş olabilir."
@@ -6855,6 +7036,7 @@ msgstr "_Bağlan"
msgid "Get AIM Info"
msgstr "AIM Bilgilerini Al"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "Kişi Açıklaması Düzenle"
@@ -6966,7 +7148,6 @@ msgstr ""
msgid "Attempting to connect to %s:%hu."
msgstr "%s kullanıcısına bağlantı sağlanmaya çalışılıyor:%hu."
-#, c-format
msgid "Attempting to connect via proxy server."
msgstr "Bir proxy sunucu üzerinden bağlanmaya çalışılıyor."
@@ -7062,7 +7243,7 @@ msgstr "Diğer"
msgid "Visible"
msgstr "Görünmez"
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
#, fuzzy
@@ -7153,16 +7334,48 @@ msgstr "Son Güncelleme"
msgid "Could not change buddy information."
msgstr "Lütfen kişi bilgilerini girin."
-#, c-format
-msgid "%d needs Q&A"
+msgid "Mobile"
+msgstr "Cep"
+
+msgid "Note"
+msgstr "Not"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "Kişi Simgesi"
+
+msgid "Change his/her memo as you like"
msgstr ""
#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "Kişi Ekle"
+msgid "_Modify"
+msgstr "Düzenle"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "Düzenle"
#, fuzzy
-msgid "Input answer here"
+msgid "Server says:"
+msgstr "Sunucu meşgul"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%u requires verification"
+msgstr "İzin gereksin"
+
+#, fuzzy
+msgid "Add buddy question"
+msgstr "Kişiyi listenize eklemek istiyor musunuz?"
+
+#, fuzzy
+msgid "Enter answer here"
msgstr "İsteğinizi buraya girin"
msgid "Send"
@@ -7176,18 +7389,19 @@ msgid "Authorization denied message:"
msgstr "İzin reddetme iletisi:"
#, fuzzy
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr "Üzgünüm, benim tipim değilsin..."
#, fuzzy, c-format
-msgid "%d needs authentication"
+msgid "%u needs authorization"
msgstr "%d kullanıcısı kimlik doğrulamaya gereksinim duyuyor"
#, fuzzy
msgid "Add buddy authorize"
msgstr "Kişiyi listenize eklemek istiyor musunuz?"
-msgid "Input request here"
+#, fuzzy
+msgid "Enter request here"
msgstr "İsteğinizi buraya girin"
msgid "Would you be my friend?"
@@ -7210,7 +7424,7 @@ msgid "Failed sending authorize"
msgstr "Lütfen sizi eklememe izin verin!"
#, fuzzy, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr "Kişi silinemedi"
#, fuzzy, c-format
@@ -7254,6 +7468,10 @@ msgid "You can only search for permanent Qun\n"
msgstr ""
#, fuzzy
+msgid "(Invalid UTF-8 string)"
+msgstr "Geçersiz proxy ayarları"
+
+#, fuzzy
msgid "Not member"
msgstr "Ben bir üye değilim"
@@ -7296,16 +7514,19 @@ msgstr "Bu grup diğerlerinin katılmasına izin vermiyor"
msgid "Join QQ Qun"
msgstr "Sohbete Başla..."
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
-msgstr ""
+msgid "Input request here"
+msgstr "İsteğinizi buraya girin"
+
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "Qun üyesini başarılı şekilde düzenlediniz"
#, fuzzy
msgid "Successfully joined Qun"
msgstr "Qun üyesini başarılı şekilde düzenlediniz"
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
msgid "QQ Qun Operation"
@@ -7315,7 +7536,7 @@ msgstr ""
msgid "Failed:"
msgstr "Başarısız Oldu"
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
#, fuzzy
@@ -7328,11 +7549,11 @@ msgid ""
msgstr ""
#, fuzzy
-msgid "Sorry, you are not our style ..."
+msgid "Sorry, you are not our style"
msgstr "Üzgünüm, benim tipim değilsin..."
#, fuzzy
-msgid "Successfully changed Qun member"
+msgid "Successfully changed Qun members"
msgstr "Qun üyesini başarılı şekilde düzenlediniz"
#, fuzzy
@@ -7343,35 +7564,35 @@ msgid "You have successfully created a Qun"
msgstr "Başarılı şekilde Qun oluşturdunuz"
#, fuzzy
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr "Şimdi Qun detaylarını ayarlamak ister misiniz?"
msgid "Setup"
msgstr "Kur"
#, fuzzy, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr "%d kullanıcısı %d grubuna katılmak istedi"
#, fuzzy, c-format
-msgid "%d request to join Qun %d"
+msgid "%u request to join Qun %u"
msgstr "%d kullanıcısı %d grubuna katılmak istedi"
#, fuzzy, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr "Kişiyle sohbete katılınamadı"
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr "Kişiyi Sil"
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "Kişiyi Sil"
#, c-format
msgid "Unknown-%d"
@@ -7488,6 +7709,13 @@ msgstr "<b>Son Yenileme:</b> %s<br>\n"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<b>Şimdi Çevrimiçi</b>: %d<br>\n"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<b>Son Yenileme:</b> %s<br>\n"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7495,7 +7723,7 @@ msgid "<i>Feel free to join us!</i> :)"
msgstr ""
#, fuzzy, c-format
-msgid "About OpenQ r%s"
+msgid "About OpenQ %s"
msgstr "%s Hakkında"
#, fuzzy
@@ -7516,6 +7744,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "%s Hakkında"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Ev Adresi"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7547,7 +7779,6 @@ msgstr ""
msgid "QQ2008"
msgstr ""
-#. #endif
#, fuzzy
msgid "Connect by TCP"
msgstr "TCP kullanarak bağlan"
@@ -7560,6 +7791,9 @@ msgstr "Sunucu portu"
msgid "Show server news"
msgstr "Sunucu adresi"
+msgid "Show chat room when msg comes"
+msgstr ""
+
msgid "Keep alive interval (seconds)"
msgstr ""
@@ -7568,11 +7802,7 @@ msgid "Update interval (seconds)"
msgstr "Bilgilerimi güncelle"
#, fuzzy
-msgid "Can not decrypt server reply"
-msgstr "Sunucu bilgileri alınamıyor"
-
-#, fuzzy
-msgid "Can not decrypt get server reply"
+msgid "Cannot decrypt server reply"
msgstr "Sunucu bilgileri alınamıyor"
#, c-format
@@ -7595,20 +7825,23 @@ msgid "Activation required"
msgstr "Kayıt Gerekli"
#, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr ""
-msgid "Keep alive error"
-msgstr ""
+#, fuzzy
+msgid "Could not decrypt server reply"
+msgstr "Sunucu bilgileri alınamıyor"
-msgid "Requesting captcha ..."
-msgstr ""
+#, fuzzy
+msgid "Requesting captcha"
+msgstr "İstek Diyaloğu"
-msgid "Checking code of captcha ..."
+msgid "Checking captcha"
msgstr ""
-msgid "Failed captcha verify"
-msgstr ""
+#, fuzzy
+msgid "Failed captcha verification"
+msgstr "Yahoo! Kimlik Denetimi Başarısız"
#, fuzzy
msgid "Captcha Image"
@@ -7618,7 +7851,7 @@ msgstr "Resmi Kaydet"
msgid "Enter code"
msgstr "Parola"
-msgid "QQ Captcha Verifing"
+msgid "QQ Captcha Verification"
msgstr ""
#, fuzzy
@@ -7626,30 +7859,21 @@ msgid "Enter the text from the image"
msgstr "Lütfen grubun ismini girin"
#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
+msgid "Unknown reply when checking password (0x%02X)"
msgstr ""
#, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
msgstr ""
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "Bağlanılamıyor."
msgid "Socket error"
msgstr "Soket hatası"
-#, fuzzy, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr ""
-"Sunucu ile bağlantı kesildi:\n"
-"%s"
-
msgid "Unable to read from socket"
msgstr "Soketten okunamıyor"
@@ -7660,11 +7884,11 @@ msgid "Connection lost"
msgstr "Bağlantı kapandı"
#, fuzzy
-msgid "Get server ..."
+msgid "Getting server"
msgstr "Kullanıcı Bilgisi Ayarla..."
#, fuzzy
-msgid "Request token"
+msgid "Requesting token"
msgstr "İstek reddedildi"
msgid "Couldn't resolve host"
@@ -7675,16 +7899,13 @@ msgid "Invalid server or port"
msgstr "Geçersiz hata"
#, fuzzy
-msgid "Connecting server ..."
-msgstr "Bağlantı sunucusu"
+msgid "Connecting to server"
+msgstr "SILC sunucusuna bağlanılıyor"
#, fuzzy
msgid "QQ Error"
msgstr "QQ Kimlik Hatası"
-msgid "Failed to send IM."
-msgstr "Anlık ileti gönderimi başarısız oldu."
-
#, fuzzy, c-format
msgid ""
"Server News:\n"
@@ -7694,6 +7915,10 @@ msgid ""
msgstr "ICQ Server Relay"
#, fuzzy, c-format
+msgid "%s:%s"
+msgstr "%s (%s)"
+
+#, fuzzy, c-format
msgid "From %s:"
msgstr "Kimden"
@@ -7703,32 +7928,30 @@ msgid ""
"%s"
msgstr "Sunucu Bilgileri: %s"
-msgid "Unknow SERVER CMD"
-msgstr ""
+#, fuzzy
+msgid "Unknown SERVER CMD"
+msgstr "Bilinmeyen sebep"
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
#, fuzzy
msgid "QQ Qun Command"
msgstr "Komut"
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr ""
-
-msgid "Can not decrypt login reply"
-msgstr ""
+#, fuzzy
+msgid "Could not decrypt login reply"
+msgstr "Sunucu bilgileri alınamıyor"
#, fuzzy
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr "Bilinmeyen sebep"
#, fuzzy
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr "Bilinmeyen sebep"
#, c-format
@@ -8513,9 +8736,6 @@ msgstr "Şirket"
msgid "Unit"
msgstr "Ünite"
-msgid "Note"
-msgstr "Not"
-
msgid "Join Chat"
msgstr "Sohbete Başla..."
@@ -9166,6 +9386,10 @@ msgstr "Makine adı çözümlenemedi"
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr "IRC isimler boşluk karakteri içeremez"
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "Sunucu portu"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -9200,192 +9424,10 @@ msgid "Auth Domain"
msgstr "Makine Kimliğini Doğrula"
#, c-format
-msgid "Looking up %s"
-msgstr "%s aranıyor"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Bağlantı başarısız (%s)"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Bağlan: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "Dosya yazılamıyor. (%s)"
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "Dosya açılamıyor. (%s)"
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "İleti çok uzun , son %s byte(harf) kesildi."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "Kullanıcı %s oturum açmamış"
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "%s 'nin uyarısına izin verilmiyor"
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "Bir ileti düşürüldü, sunucunun hız limitini aşıyorsunuz."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "%s de sohbet mümkün değil."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "%s kullanıcısına çok hızlı ileti yolluyorsunuz."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "%s tarafından gönderilen mesaj çok uzun olduğundan alınamadı."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "%s tarafından gönderilen mesaj çok hızlı gönderildiği için alınamadı."
-
-#, c-format
-msgid "Failure."
-msgstr "Başarısız."
-
-#, c-format
-msgid "Too many matches."
-msgstr "Çok sonuç var."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "Daha fazla niteleyici gerek."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "Bu servis geçici olarak hizmet dışıdır."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "E-posta araması yasaklandı."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "İpucu gözardı edildi."
-
-#, c-format
-msgid "No keywords."
-msgstr "Anahtar sözcük yok."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "Kullanıcı dizin bilgisine sahip değil."
-
-#, c-format
-msgid "Country not supported."
-msgstr "Ülke desteklenmiyor."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Bilinmeyen hata: %s."
-
-#, fuzzy, c-format
-msgid "Incorrect username or password."
-msgstr "Yanlış takma ad veya parola."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "Bu servis geçici olarak hizmet dışıdır."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "Uyarı düzeyiniz şuan oturum açabilmek için çok yüksek."
-
-#, 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 ""
-"Çok sık bağlanıp kopuyorsunuz. Lütfen on dakika bekledikten sonra tekrar "
-"deneyin. Eğer denemeye devam ederseniz daha uzun beklemek zorunda "
-"kalacaksınız."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "Bilinmeyen bağlantı hatası oluştu: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "Bilinmeyen hata, %d, oluştu. Bilgi: %s"
-
-msgid "Invalid Groupname"
-msgstr "Geçersiz grup adı"
-
-msgid "Connection Closed"
-msgstr "Bağlantı Kesildi"
-
-msgid "Waiting for reply..."
-msgstr "Cevap için bekleniyor..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
+msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
-"TOC duraklamadan tekrar çalışır hale geldi. Şimdi iletilerinizi "
-"yollayabilirsiniz."
-
-msgid "Password Change Successful"
-msgstr "Şifreniz Başarıyla Değiştirildi"
-
-msgid "_Group:"
-msgstr "_Grup:"
-
-msgid "Get Dir Info"
-msgstr "Dizin adını al"
-
-msgid "Set Dir Info"
-msgstr "Dizin adı ayarla"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "%s yazma için açılamıyor!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "Dosya transferi gerçekleştirilemedi; karşı taraf iptal etmiş olabilir."
-
-msgid "Could not connect for transfer."
-msgstr "Transfer için bağlanamıyor."
-msgid "Could not write file header. The file will not be transferred."
-msgstr "Dosyanın üstbilgisi okunamadı. Dosya transer edilemeyecek."
-
-msgid "Save As..."
-msgstr "Farklı Kaydet..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s istiyor %s kabul etmeyi %d dosyasını: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s sizden kendine bir dosya yollanmasını istiyor."
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "TOC Protokol Eklentisi"
-
-#, c-format
-msgid "%s has sent you a webcam invite, which is not yet supported."
+msgid "Your SMS was not delivered"
msgstr ""
msgid "Your Yahoo! message did not get sent."
@@ -9645,13 +9687,8 @@ msgstr "Bağlantı 3"
msgid "Last Update"
msgstr "Son Güncelleme"
-#, c-format
-msgid "User information for %s unavailable"
-msgstr "%s adlı kullanıcının bilgisi mevcut değil"
-
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr ""
msgid ""
@@ -9979,9 +10016,6 @@ msgstr "Rahatsız etmeyin"
msgid "Extended away"
msgstr "Uzun süreli uzakta"
-msgid "Mobile"
-msgstr "Cep"
-
msgid "Listening to music"
msgstr ""
@@ -10023,18 +10057,6 @@ msgstr "+++ %s şimdi boşta değil"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "%s Okuma Hatası"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"%s okunurken bir hata oluştu. Dosyalar yüklenmedi ve eski dosya %s~ olarak "
-"yeniden adlandırıldı."
-
msgid "Calculating..."
msgstr "Hesaplanıyor..."
@@ -10103,6 +10125,13 @@ msgstr "%s konumundan yazma hatası: %s"
msgid "Unable to connect to %s: %s"
msgstr "%s konumuna bağlanılamadı: %s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+"Bu sunucu bağlanmak için TLS/SSL gerektirir. Hiç TLS/SSL desteği bulunamadı."
+
#, c-format
msgid " - %s"
msgstr ""
@@ -10136,6 +10165,18 @@ msgstr "Bağlantı kesildi"
msgid "Address already in use."
msgstr "Bu sohbet adı zaten kullanımda"
+#, c-format
+msgid "Error Reading %s"
+msgstr "%s Okuma Hatası"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"%s okunurken bir hata oluştu. Dosyalar yüklenmedi ve eski dosya %s~ olarak "
+"yeniden adlandırıldı."
+
msgid "Internet Messenger"
msgstr "İnternet Mesajlaşma Aracı"
@@ -10178,10 +10219,8 @@ msgstr "Yeni e-posta b_ildirimleri"
msgid "Use this buddy _icon for this account:"
msgstr "Bu hesap için b_u kişi simgesini kullan:"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s Seçenekleri"
+msgid "_Advanced"
+msgstr "_Gelişmiş Yapılandırma"
msgid "Use GNOME Proxy Settings"
msgstr "GnomeProxy Ayarlarını Kullan"
@@ -10216,9 +10255,6 @@ msgstr "Eğer gerçekten yakın görüyorsanız"
msgid "you can see the butterflies mating"
msgstr "kelebeklerin çiftleşmesini izleyebilirsiniz"
-msgid "Proxy Options"
-msgstr "Proxy Seçenekleri"
-
msgid "Proxy _type:"
msgstr "Proxy _tipi:"
@@ -10247,8 +10283,9 @@ msgstr "_Temel Yapılandırma"
msgid "Create _this new account on the server"
msgstr "Bu yeni hesabı sunucu üzerinde oluştur"
-msgid "_Advanced"
-msgstr "_Gelişmiş Yapılandırma"
+#, fuzzy
+msgid "_Proxy"
+msgstr "Proxy"
msgid "Enabled"
msgstr "Etkin"
@@ -10324,6 +10361,17 @@ msgstr "Kişi Bilgilerini _Al"
msgid "I_M"
msgstr "Kişiye Anlık _İleti Göner"
+#, fuzzy
+msgid "_Audio Call"
+msgstr "_Sohbet Ekle"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Görüntülü Sohbet"
+
msgid "_Send File..."
msgstr "_Dosya Gönder..."
@@ -10464,6 +10512,10 @@ msgstr "/Araçlar/Kişi _Uyarıcılar"
msgid "/Tools/_Certificates"
msgstr "/Araçlar/_Sertifikalar"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Araçlar/Gizlilik"
+
msgid "/Tools/Plu_gins"
msgstr "/Araçlar/Eklentiler"
@@ -10473,10 +10525,6 @@ msgstr "/Araçlar/_Tercihler"
msgid "/Tools/Pr_ivacy"
msgstr "/Araçlar/_Gizlilik"
-#, fuzzy
-msgid "/Tools/Smile_y"
-msgstr "/Araçlar/Gizlilik"
-
msgid "/Tools/_File Transfers"
msgstr "/Araçlar/_Dosya Aktarımları"
@@ -10597,8 +10645,8 @@ msgstr "El ile ayarla"
msgid "By status"
msgstr "Duruma göre"
-msgid "By log size"
-msgstr "Kayıt büyüklüğüne göre"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10616,6 +10664,9 @@ msgstr "Bağlan"
msgid "Re-enable"
msgstr "Hesabı Yeniden Etkinleştir"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr ""
@@ -10707,6 +10758,9 @@ msgstr ""
msgid "A_lias:"
msgstr "G_örünen isim:"
+msgid "_Group:"
+msgstr "_Grup:"
+
msgid "Auto_join when account becomes online."
msgstr ""
@@ -10758,14 +10812,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr "Kişiyi Sohbet Odasına Davet Et"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"İsterseniz bir davet mesajıyla beraber davet etmek istediğiniz kişinin "
-"ismini girin."
-
msgid "_Buddy:"
msgstr "_Kişi:"
@@ -10841,6 +10887,22 @@ msgstr "/Yazışma/_Farklı Kaydet..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Yazışma/Temi_zle"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Yazışma/_Daha Fazla"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Yazışma/_Daha Fazla"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Yazışma/_Daha Fazla"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Yazışma/_Kayıtları Göster"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Yazışma/Kişiye _Dosya Gönder..."
@@ -10913,6 +10975,18 @@ msgstr "/Yazışma"
msgid "/Conversation/View Log"
msgstr "/Yazışma/Kayıtları Göster"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Yazışma/Daha Fazla"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Yazışma/Kayıtları Göster"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Yazışma/Daha Fazla"
+
msgid "/Conversation/Send File..."
msgstr "/Yazışma/Kişiye Dosya Gönder..."
@@ -11094,6 +11168,9 @@ msgstr "Sanatçılar"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "destek"
@@ -11235,6 +11312,10 @@ msgstr "Gürcü Dili"
msgid "Ubuntu Georgian Translators"
msgstr "Ubuntu Gürcüce Çevirmenleri"
+#, fuzzy
+msgid "Khmer"
+msgstr "Diğer"
+
msgid "Kannada"
msgstr "Kannada (Hindistanda konuşulan bir dil)"
@@ -11256,6 +11337,10 @@ msgstr "Litvanca"
msgid "Macedonian"
msgstr "Makedonca"
+#, fuzzy
+msgid "Mongolian"
+msgstr "Makedonca"
+
msgid "Bokmål Norwegian"
msgstr "Norveççe"
@@ -11370,7 +11455,24 @@ msgstr ""
"listesine bakabilirsiniz. Bu uygulama için garanti vermiyoruz.<BR><BR>"
#, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, fuzzy, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"4\">IRC:</FONT> irc.freenode.net #pidgin<BR><BR>"
+
+#, fuzzy, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"4\">IRC:</FONT> irc.freenode.net #pidgin<BR><BR>"
msgid "Current Developers"
@@ -11692,15 +11794,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr "Yeni e-posta bildirimleri"
-msgid "_Copy Email Address"
-msgstr "E-Posta Adresini _Kopyala"
-
-msgid "_Open Link in Browser"
-msgstr "_Bağlantıyı Tarayıcıda Aç"
-
-msgid "_Copy Link Location"
-msgstr "Bağlantıyı _Konumunu Kopyala"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -11955,6 +12048,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -11986,6 +12080,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12030,11 +12125,27 @@ msgstr ""
msgid "Pidgin"
msgstr "Pidgin"
-msgid "Open All Messages"
-msgstr "Tüm E-postaları Aç"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Yeni E-postanız var !</span>"
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "Hesaplanıyor..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -12063,6 +12174,27 @@ msgstr ""
"Tarayıcı yapılandırmasında 'El ile ayarla' seçili, ancak bu seçenek için "
"komut belirtilmemiş."
+msgid "Open All Messages"
+msgstr "Tüm E-postaları Aç"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Yeni E-postanız var !</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "Yeni Kişi Uyarıcı"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Yeni E-postanız var !</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "Bilinmeyen ileti"
+
msgid "The following plugins will be unloaded."
msgstr "Bu eklentiler kaldırılacak."
@@ -12115,6 +12247,10 @@ msgstr "<b>Eklenti Detayları</b>"
msgid "Select a file"
msgstr "Bir dosya seçin"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Kişi Uyarıcıyı Düzenle"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "Uyarılacak Kişi"
@@ -12185,6 +12321,50 @@ msgstr "_Tekrarlayan"
msgid "Pounce Target"
msgstr "Uyarıcı Hedefi"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "Yazmaya başlayınca"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "Yazmaya ara verince"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "Giriş yapınca"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s boşta durumuna geçti (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "Geri dönünce"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "Yazmayı Bıraktı"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "Çıkış yapınca"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "Boşta durumuna geçince"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "Uzaktayken"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Bir ileti gönder"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "Bilinmeyen uyarı olayı. Lütfen bunu raporlayın !"
+
msgid "Smiley theme failed to unpack."
msgstr "Gülenyüz teması açılırken hata oluştu."
@@ -12208,6 +12388,12 @@ msgstr ""
msgid "Cl_ose conversations with the Escape key"
msgstr "%s ile konuşma"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Pidgin - Kişi Listesi"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "Sistem Çekmecesi Simgesi"
@@ -12318,9 +12504,6 @@ msgstr ""
msgid "Cannot start browser configuration program."
msgstr "Tarayıcı yapılandırma uygulaması başlatılamıyor."
-msgid "ST_UN server:"
-msgstr "ST_UN sunucusu:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">Örnek: stunserver.org</span>"
@@ -12345,6 +12528,10 @@ msgstr "Başlangıç _portu:"
msgid "_End port:"
msgstr "Bitiş p_ortu:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr "Vekil Sunucu & Tarayıcı"
@@ -12371,6 +12558,10 @@ msgstr "Proxy Sunucusu"
msgid "No proxy"
msgstr "Proxy yok"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "_Kullanıcı:"
@@ -12535,12 +12726,12 @@ msgstr "Aynı anda meşgul ve boş olduğu zaman"
msgid "Auto-away"
msgstr "Otomatik-uzakta"
-msgid "Change status when _idle"
-msgstr "Boşken durumu değ_iştir"
-
msgid "_Minutes before becoming idle:"
msgstr "_Boşta durumuna geçmeden önceki süre"
+msgid "Change status when _idle"
+msgstr "Boşken durumu değ_iştir"
+
msgid "Change _status to:"
msgstr "Durumu _değiştir:"
@@ -12690,6 +12881,12 @@ msgstr "Kayde_t & Kullan"
msgid "Status for %s"
msgstr "%s için durum"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
#, fuzzy
msgid "Custom Smiley"
msgstr "Gülenyüz Ekle"
@@ -12700,15 +12897,15 @@ msgstr ""
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
+msgstr ""
+
#, fuzzy
msgid "Duplicate Shortcut"
msgstr "Çift Doğrulama"
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
-msgstr ""
-
#, fuzzy
msgid "Please select an image for the smiley."
msgstr "Lütfen kendiniz için yeni bir takma ad belirtin."
@@ -12722,18 +12919,23 @@ msgid "Add Smiley"
msgstr "Gülenyüz!"
#, fuzzy
-msgid "Smiley _Image"
-msgstr "Resmi Kaydet"
+msgid "_Image:"
+msgstr "_Resim"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr ""
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "Sırala"
#, fuzzy
msgid "Smiley"
msgstr "Gülenyüz!"
#, fuzzy
+msgid "Shortcut Text"
+msgstr "Sırala"
+
+#, fuzzy
msgid "Custom Smiley Manager"
msgstr "Sertifika Yöneticisi"
@@ -12861,6 +13063,16 @@ msgid ""
msgstr ""
"Resim dosyası yüklenemedi '%s': sebep bilinmiyor, muhtemelen dosya bozuk"
+#, fuzzy
+msgid "_Open Link"
+msgstr "_Bağlantıyı aç:"
+
+msgid "_Copy Link Location"
+msgstr "Bağlantıyı _Konumunu Kopyala"
+
+msgid "_Copy Email Address"
+msgstr "E-Posta Adresini _Kopyala"
+
msgid "Save File"
msgstr "Dosyayı Kaydet"
@@ -13835,9 +14047,6 @@ msgstr "Kişi Listesi penceresi her zaman _üstte tut"
msgid "Only when docked"
msgstr ""
-msgid "_Flash window when chat messages are received"
-msgstr "Yeni sohbet iletisi geldiğinde pencereyi _canlandır"
-
msgid "Windows Pidgin Options"
msgstr "Windows Pidgin Seçenekleri"
@@ -13887,6 +14096,227 @@ msgstr ""
"Bu eklenti XMPP sunucularının ve istemcilerinin hatalarını ayıklamak için "
"kullanışlıdır."
+#, fuzzy
+#~ msgid "Invite message"
+#~ msgstr "İleti içine ekle"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "İsterseniz bir davet mesajıyla beraber davet etmek istediğiniz kişinin "
+#~ "ismini girin."
+
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "MSN Adres Defteri getirilemedi"
+
+#, fuzzy
+#~ msgid "Connection to server lost (no data received within %d second)"
+#~ msgid_plural ""
+#~ "Connection to server lost (no data received within %d seconds)"
+#~ msgstr[0] "Sunucuya yapılan bağlantı kapandı (%d saniyedir veri alınamıyor)"
+
+#~ msgid ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+#~ msgstr ""
+#~ "Kısa bir süreliğine bağlantı kopmuş olabilir. Bu onarılana kadar TOC "
+#~ "kullanmalısınız. Güncellemeler için ziyaret edin : %s "
+
+#, fuzzy
+#~ msgid "Add buddy Q&A"
+#~ msgstr "Kişi Ekle"
+
+#, fuzzy
+#~ msgid "Can not decrypt get server reply"
+#~ msgstr "Sunucu bilgileri alınamıyor"
+
+#, fuzzy
+#~ msgid ""
+#~ "Lost connection with server:\n"
+#~ "%d, %s"
+#~ msgstr ""
+#~ "Sunucu ile bağlantı kesildi:\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Connecting server ..."
+#~ msgstr "Bağlantı sunucusu"
+
+#~ msgid "Failed to send IM."
+#~ msgstr "Anlık ileti gönderimi başarısız oldu."
+
+#~ msgid "Looking up %s"
+#~ msgstr "%s aranıyor"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "Bağlantı başarısız (%s)"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Bağlan: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "Dosya yazılamıyor. (%s)"
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "Dosya açılamıyor. (%s)"
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "İleti çok uzun , son %s byte(harf) kesildi."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "Kullanıcı %s oturum açmamış"
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "%s 'nin uyarısına izin verilmiyor"
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr "Bir ileti düşürüldü, sunucunun hız limitini aşıyorsunuz."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "%s de sohbet mümkün değil."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "%s kullanıcısına çok hızlı ileti yolluyorsunuz."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "%s tarafından gönderilen mesaj çok uzun olduğundan alınamadı."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr ""
+#~ "%s tarafından gönderilen mesaj çok hızlı gönderildiği için alınamadı."
+
+#~ msgid "Failure."
+#~ msgstr "Başarısız."
+
+#~ msgid "Too many matches."
+#~ msgstr "Çok sonuç var."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "Daha fazla niteleyici gerek."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "Bu servis geçici olarak hizmet dışıdır."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "E-posta araması yasaklandı."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "İpucu gözardı edildi."
+
+#~ msgid "No keywords."
+#~ msgstr "Anahtar sözcük yok."
+
+#~ msgid "User has no directory information."
+#~ msgstr "Kullanıcı dizin bilgisine sahip değil."
+
+#~ msgid "Country not supported."
+#~ msgstr "Ülke desteklenmiyor."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Bilinmeyen hata: %s."
+
+#, fuzzy
+#~ msgid "Incorrect username or password."
+#~ msgstr "Yanlış takma ad veya parola."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "Bu servis geçici olarak hizmet dışıdır."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "Uyarı düzeyiniz şuan oturum açabilmek için çok yüksek."
+
+#~ 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 ""
+#~ "Çok sık bağlanıp kopuyorsunuz. Lütfen on dakika bekledikten sonra tekrar "
+#~ "deneyin. Eğer denemeye devam ederseniz daha uzun beklemek zorunda "
+#~ "kalacaksınız."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "Bilinmeyen bağlantı hatası oluştu: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "Bilinmeyen hata, %d, oluştu. Bilgi: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "Geçersiz grup adı"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Bağlantı Kesildi"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "Cevap için bekleniyor..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr ""
+#~ "TOC duraklamadan tekrar çalışır hale geldi. Şimdi iletilerinizi "
+#~ "yollayabilirsiniz."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "Şifreniz Başarıyla Değiştirildi"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Dizin adını al"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Dizin adı ayarla"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "%s yazma için açılamıyor!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr ""
+#~ "Dosya transferi gerçekleştirilemedi; karşı taraf iptal etmiş olabilir."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "Transfer için bağlanamıyor."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "Dosyanın üstbilgisi okunamadı. Dosya transer edilemeyecek."
+
+#~ msgid "Save As..."
+#~ msgstr "Farklı Kaydet..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s istiyor %s kabul etmeyi %d dosyasını: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s sizden kendine bir dosya yollanmasını istiyor."
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "TOC Protokol Eklentisi"
+
+#~ msgid "User information for %s unavailable"
+#~ msgstr "%s adlı kullanıcının bilgisi mevcut değil"
+
+#~ msgid "%s Options"
+#~ msgstr "%s Seçenekleri"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Proxy Seçenekleri"
+
+#~ msgid "By log size"
+#~ msgstr "Kayıt büyüklüğüne göre"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_Bağlantıyı Tarayıcıda Aç"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "ST_UN sunucusu:"
+
+#, fuzzy
+#~ msgid "Smiley _Image"
+#~ msgstr "Resmi Kaydet"
+
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "Yeni sohbet iletisi geldiğinde pencereyi _canlandır"
+
#~ msgid "A group with the name already exists."
#~ msgstr "Bu adı taşıyan bir grup zaten var."
@@ -13968,13 +14398,6 @@ msgstr ""
#~ msgid "Change Qun information"
#~ msgstr "Kanal Bilgisi"
-#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr "%s (%s)"
-
#~ msgid "System Message"
#~ msgstr "Sistem İletisi"
diff --git a/po/uk.po b/po/uk.po
index 13ba9913d8..ec4d242d13 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
+"POT-Creation-Date: 2009-04-30 10:40-0400\n"
"PO-Revision-Date: 2005-08-21 10:43+0300\n"
"Last-Translator: Maxim V. Dziumanenko <mvd@mylinux.com.ua>\n"
"Language-Team: Ukrainian <uk@li.org>\n"
@@ -33,7 +33,7 @@ msgid ""
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -640,21 +640,6 @@ msgid "Send To"
msgstr "_Надіслати як"
#, fuzzy
-msgid "Invite message"
-msgstr "Повідомлення про вихід"
-
-msgid "Invite"
-msgstr "Запросити"
-
-#, fuzzy
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Введіть ім'я користувача, якого ви бажаєте запросити, та введіть "
-"необов'язковий текст запрошення."
-
-#, fuzzy
msgid "Conversation"
msgstr "Бесіди"
@@ -918,6 +903,42 @@ msgid "System Log"
msgstr "Системний журнал"
#, fuzzy
+msgid "Calling ... "
+msgstr "Підрахунок..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "Прийняти"
+
+#, fuzzy
+msgid "Reject"
+msgstr "Скинути"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "Ви від'єднались від каналу%s%s"
+
+msgid "call: Make an audio call."
+msgstr ""
+
+#, fuzzy
msgid "Emails"
msgstr "Ел.пошта"
@@ -956,6 +977,9 @@ msgstr "З'єднання"
msgid "IM"
msgstr "Повідомлення"
+msgid "Invite"
+msgstr "Запросити"
+
#, fuzzy
msgid "(none)"
msgstr "(немає імені)"
@@ -1179,7 +1203,6 @@ msgstr "%s відходить. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s бажає надіслати вам %s (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "Невідома подія стеження. Сповістіть про це!"
@@ -1235,7 +1258,6 @@ msgstr "_Хвилин до встановлення статусу \"Відій
msgid "Change status to"
msgstr "Змінити адресу на:"
-#. Conversations
msgid "Conversations"
msgstr "Бесіди"
@@ -1586,7 +1608,6 @@ msgstr ""
"При відкриванні нової бесіди, цей модуль вставить останню бесіду у поточну "
"бесіду."
-#, c-format
msgid "Online"
msgstr "У мережі"
@@ -1635,6 +1656,28 @@ msgstr ""
msgid "Lastlog plugin."
msgstr ""
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
#, fuzzy
msgid "accounts"
msgstr "Облікові записи"
@@ -1738,14 +1781,6 @@ msgstr "Прийняти запрошення до розмови?"
msgid "SSL Certificate Verification"
msgstr ""
-#. Number of actions
-msgid "Accept"
-msgstr "Прийняти"
-
-#, fuzzy
-msgid "Reject"
-msgstr "Скинути"
-
msgid "_View Certificate..."
msgstr ""
@@ -1883,6 +1918,18 @@ msgstr "%s залишив кімнату."
msgid "%s left the room (%s)."
msgstr "%s залишив кімнату (%s)"
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Створити конференцію"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Введіть ім'я користувача, якого ви бажаєте запросити, та введіть "
+"необов'язковий текст запрошення."
+
#, fuzzy, c-format
msgid "Failed to get connection: %s"
msgstr "Не вдається встановити режими каналу для %s"
@@ -2021,7 +2068,6 @@ msgstr "Задовольнити запит передавання файлу %s
msgid "Transfer of file %s complete"
msgstr "Передавання файлу %s завершено"
-#, c-format
msgid "File transfer complete"
msgstr "Передавання файлу завершено"
@@ -2029,7 +2075,6 @@ msgstr "Передавання файлу завершено"
msgid "You canceled the transfer of %s"
msgstr "Ви скасували передавання %s"
-#, c-format
msgid "File transfer cancelled"
msgstr "Передавання файлу скасовано"
@@ -2220,7 +2265,6 @@ msgstr "(%s) %s <АВТО_ВІДПОВІДЬ>: %s\n"
msgid "You are using %s, but this plugin requires %s."
msgstr ""
-#, c-format
msgid "This plugin has not defined an ID."
msgstr ""
@@ -2715,6 +2759,32 @@ msgstr ""
msgid "Do not ask. Always save in pounce."
msgstr ""
+#, fuzzy
+msgid "One Time Password"
+msgstr "Зміна паролю"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2920,7 +2990,6 @@ msgid ""
"Unable to establish connection with the local mDNS server. Is it running?"
msgstr ""
-#. Creating the options for the protocol
#, fuzzy
msgid "First name"
msgstr "Ім'я:"
@@ -2958,6 +3027,11 @@ msgstr "Модуль протоколу Yahoo"
msgid "Purple Person"
msgstr "Нова особа"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "Район"
+
msgid "Bonjour"
msgstr ""
@@ -3145,13 +3219,13 @@ msgstr "Видалити розмову зі списку контактів"
msgid "Add to chat..."
msgstr "Додати _розмову"
+#. Global
msgid "Available"
msgstr "Доступний"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "Користувач відійшов"
@@ -3521,6 +3595,17 @@ msgstr ""
"Вибрану вами назву облікового запису відхилено сервером. Можливо вона "
"містить некоректні символи."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "Такий файл вже існує"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Прізвисько"
+
msgid "Cannot change nick"
msgstr "Не вдається змінити псевдонім"
@@ -3807,6 +3892,37 @@ msgstr "Неправильний запит з серверу"
msgid "SASL error"
msgstr "Помилка читання"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "Причина не вказана."
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Непідтримувана версія"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr "Не вдається встановити SSL-з'єднання з сервером."
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "Не вдається створити нове з'єднання."
+
+msgid "Unable to create socket"
+msgstr "Не вдається створити сокет"
+
+msgid "Write error"
+msgstr "Помилка запису"
+
msgid "Full Name"
msgstr "Повне ім'я"
@@ -3874,6 +3990,10 @@ msgstr "Місто"
msgid "Operating System"
msgstr "Приховувати операційну систему"
+#, fuzzy
+msgid "Local Time"
+msgstr "Локальний файл:"
+
msgid "Last Activity"
msgstr ""
@@ -4111,7 +4231,6 @@ msgstr "Готовий розмовляти"
msgid "Extended Away"
msgstr "Розширений статус \"Відійшов\""
-#, c-format
msgid "Do Not Disturb"
msgstr "Не турбувати"
@@ -4241,9 +4360,6 @@ msgstr "Знайти кімнати"
msgid "You require encryption, but it is not available on this server."
msgstr ""
-msgid "Write error"
-msgstr "Помилка запису"
-
#, fuzzy
msgid "Ping timeout"
msgstr "звичайний текст"
@@ -4253,13 +4369,10 @@ msgstr "Помилка читання"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-msgid "Unable to create socket"
-msgstr "Не вдається створити сокет"
-
#, fuzzy
msgid "Invalid XMPP ID"
msgstr "Неправильний ID"
@@ -4267,6 +4380,10 @@ msgstr "Неправильний ID"
msgid "Invalid XMPP ID. Domain must be set."
msgstr ""
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Не вдається з'єднатися з сервером."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "Реєстрація %s@%s завершена успішно"
@@ -4360,9 +4477,18 @@ msgstr "Ідентифікація"
msgid "Re-initializing Stream"
msgstr "Повторна ініціалізація потоку"
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr "Не авторизований"
+msgid "Mood"
+msgstr "Настрій"
+
+msgid "Now Listening"
+msgstr ""
+
msgid "Both"
msgstr "Обидві"
@@ -4384,12 +4510,6 @@ msgstr "немає"
msgid "Subscription"
msgstr "Підписка"
-msgid "Mood"
-msgstr "Настрій"
-
-msgid "Now Listening"
-msgstr ""
-
#, fuzzy
msgid "Mood Text"
msgstr "Настрій"
@@ -4635,18 +4755,24 @@ msgstr "Не вдається видалити користувача %s"
msgid "Unable to ping user %s"
msgstr "Не вдається заборонити користувача %s"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
+msgstr "Не вдається відтворити звук, тому що вказаний файл (%s) не існує."
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
+msgstr "Не вдається відтворити звук, тому що вказаний файл (%s) не існує."
#, fuzzy, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "Не вдається відтворити звук, тому що вказаний файл (%s) не існує."
+#, c-format
+msgid "Buzzing %s..."
+msgstr ""
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
#, fuzzy
@@ -4657,9 +4783,39 @@ msgstr "Buzz!!"
msgid "%s has buzzed you!"
msgstr "Користувач заблокував вас"
-#, c-format
-msgid "Buzzing %s..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "Не вдається відправити повідомлення %s:"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr ""
+"Не вдається надіслати файл до %s, користувач не підтримує прийом файлів"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr ""
+"Не вдається надіслати файл до %s, користувач не підтримує прийом файлів"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "Реєстрація завершилась невдало"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
msgstr ""
+"Введіть ідентифікатор користувача, інформацію про якого ви бажаєте "
+"переглянути."
+
+#, fuzzy
+msgid "Select a Resource"
+msgstr "Вибір файлу"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "Почати _розмову"
msgid "config: Configure a chat room."
msgstr "config: Налаштувати кімнату."
@@ -4824,6 +4980,21 @@ msgstr "Помилка підключення до розмови %s"
msgid "Error in chat %s"
msgstr "Помилка у розмові %s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "Помилка при відкриванні файлу."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "Передавання файлу скасовано"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Не вдається зберегти зображення: %s\n"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4853,10 +5024,6 @@ msgstr ""
"переглянути."
#, fuzzy
-msgid "Select a Resource"
-msgstr "Вибір файлу"
-
-#, fuzzy
msgid "Edit User Mood"
msgstr "Режими користувача"
@@ -4896,9 +5063,20 @@ msgstr "Облікові записи"
msgid "Select an action"
msgstr "Вибір файлу"
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr "Не вдається додати \"%s\"."
+
#, fuzzy
-msgid "Unable to retrieve MSN Address Book"
-msgstr "Не вдається завантажити список контактів"
+msgid "Buddy Add error"
+msgstr "Помилка списку контактів"
+
+#, fuzzy
+msgid "The username specified does not exist."
+msgstr "Вказана назва екрану неправильна."
#, c-format
msgid "Buddy list synchronization issue in %s (%s)"
@@ -5128,7 +5306,7 @@ msgstr "Дитячий паспорт без батьківської згоди
msgid "Passport account not yet verified"
msgstr "Паспортний обліковий запис ще не підтверджений"
-#, fuzzy, c-format
+#, fuzzy
msgid "Passport account suspended"
msgstr "Паспортний обліковий запис ще не підтверджений"
@@ -5223,6 +5401,13 @@ msgstr "Надіслати мобільне повідомлення."
msgid "Page"
msgstr "Сторінка"
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "Попередити"
+
msgid "Has you"
msgstr ""
@@ -5266,6 +5451,14 @@ msgid "Album"
msgstr ""
#, fuzzy
+msgid "Game Title"
+msgstr "Звання"
+
+#, fuzzy
+msgid "Office Title"
+msgstr "Звання"
+
+#, fuzzy
msgid "Set Friendly Name..."
msgstr "Ввести дружнє ім'я"
@@ -5485,8 +5678,9 @@ msgstr ""
"Pidgin не вдається знайти інформацію про профіль користувача. Швидше за все "
"користувач не існує."
-msgid "Profile URL"
-msgstr "URL профілю"
+#, fuzzy
+msgid "View web profile"
+msgstr "Не допускається не у мережі"
#. *< type
#. *< ui_requirement
@@ -5747,13 +5941,6 @@ msgstr "Додати до адресної книги"
msgid "Do you want to delete this buddy from your address book as well?"
msgstr "Бажаєте додати цей контакт у список контактів?"
-#. only notify the user about problems adding to the friends list
-#. * maybe we should do something else for other lists, but it probably
-#. * won't cause too many problems if we just ignore it
-#, c-format
-msgid "Unable to add \"%s\"."
-msgstr "Не вдається додати \"%s\"."
-
#, fuzzy
msgid "The username specified is invalid."
msgstr "Вказана назва екрану неправильна."
@@ -5761,6 +5948,9 @@ msgstr "Вказана назва екрану неправильна."
msgid "This Hotmail account may not be active."
msgstr ""
+msgid "Profile URL"
+msgstr "URL профілю"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5775,16 +5965,13 @@ msgstr ""
msgid "MSN Protocol Plugin"
msgstr "Модуль протоколу AIM/ICQ"
-msgid "Missing Cipher"
-msgstr ""
-
-msgid "The RC4 cipher could not be found"
+#, c-format
+msgid "No such user: %s"
msgstr ""
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
-msgstr ""
+#, fuzzy
+msgid "User lookup"
+msgstr "Кімнати користувача"
#, fuzzy
msgid "Reading challenge"
@@ -5798,12 +5985,19 @@ msgstr "Неправильний запит з серверу"
msgid "Logging in"
msgstr "Журнали"
-#, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+#, fuzzy
+msgid "MySpaceIM - No Username Set"
+msgstr "Не вказано ідентифікатор користувача."
+
+msgid "You appear to have no MySpace username."
+msgstr ""
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr ""
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr "Вас було роз'єднано з сервером."
#. Can't write _()'d strings in array initializers. Workaround.
#, fuzzy
@@ -5826,14 +6020,23 @@ msgid "MySpace"
msgstr ""
#, fuzzy
-msgid "MySpaceIM - No Username Set"
-msgstr "Не вказано ідентифікатор користувача."
+msgid "IM Friends"
+msgstr "Вікна _бесід"
-msgid "You appear to have no MySpace username."
-msgstr ""
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
-msgstr ""
+#, fuzzy
+msgid "Add contacts from server"
+msgstr "Недопустима відповідь від сервера."
#. The session is now set up, ready to be connected. This emits the
#. * signedOn signal, so clients can now do anything with msimprpl, and
@@ -5858,6 +6061,22 @@ msgid "MySpaceIM Error"
msgstr ""
#, fuzzy
+msgid "Invalid input condition"
+msgstr "Завершення встановлення з'єднання"
+
+#, fuzzy
+msgid "Read buffer full (2)"
+msgstr "Черга повна"
+
+#, fuzzy
+msgid "Unparseable message"
+msgstr "Не вдається розібрати повідомлення"
+
+#, fuzzy, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr "Не вдається з'єднатись з вузлом"
+
+#, fuzzy
msgid "Failed to add buddy"
msgstr "Не вдається приєднатися до користувача у кімнаті"
@@ -5869,14 +6088,6 @@ msgstr "Імпортувати список контактів з сервера
msgid "persist command failed"
msgstr "Помилка панелі перемикання"
-#, c-format
-msgid "No such user: %s"
-msgstr ""
-
-#, fuzzy
-msgid "User lookup"
-msgstr "Кімнати користувача"
-
#, fuzzy
msgid "Failed to remove buddy"
msgstr "Не вдається приєднатися до користувача у кімнаті"
@@ -5888,40 +6099,16 @@ msgstr ""
msgid "blocklist command failed"
msgstr "Помилка панелі перемикання"
-#, fuzzy
-msgid "Invalid input condition"
-msgstr "Завершення встановлення з'єднання"
-
-#, fuzzy
-msgid "Read buffer full (2)"
-msgstr "Черга повна"
-
-#, fuzzy
-msgid "Unparseable message"
-msgstr "Не вдається розібрати повідомлення"
-
-#, fuzzy, c-format
-msgid "Couldn't connect to host: %s (%d)"
-msgstr "Не вдається з'єднатись з вузлом"
+msgid "Missing Cipher"
+msgstr ""
-#, fuzzy
-msgid "IM Friends"
-msgstr "Вікна _бесід"
+msgid "The RC4 cipher could not be found"
+msgstr ""
-#, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#, fuzzy
-msgid "Add contacts from server"
-msgstr "Недопустима відповідь від сервера."
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
msgid "Add friends from MySpace.com"
msgstr ""
@@ -5969,9 +6156,6 @@ msgstr "Більший розмір шрифту"
msgid "User"
msgstr "Користувачі"
-msgid "Profile"
-msgstr "Профіль"
-
#, fuzzy
msgid "Headline"
msgstr "Відмовитись"
@@ -5987,17 +6171,6 @@ msgstr ""
msgid "Client Version"
msgstr "Закрити бесіду"
-#. Protocol won't log in now without a username set.. Disconnect
-#, fuzzy
-msgid "No username set"
-msgstr "Не вказано ідентифікатор користувача."
-
-msgid "MySpaceIM - Please Set a Username"
-msgstr ""
-
-msgid "Please enter a username to check its availability:"
-msgstr ""
-
#, fuzzy
msgid "MySpaceIM - Username Available"
msgstr "Служба недоступна"
@@ -6008,6 +6181,9 @@ msgstr ""
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr ""
+msgid "MySpaceIM - Please Set a Username"
+msgstr ""
+
#, fuzzy
msgid "This username is unavailable."
msgstr "Ця тема не має доступних значків емоцій."
@@ -6016,6 +6192,14 @@ msgstr "Ця тема не має доступних значків емоцій
msgid "Please try another username:"
msgstr "Введіть нову назву для обраної групи."
+#. Protocol won't log in now without a username set.. Disconnect
+#, fuzzy
+msgid "No username set"
+msgstr "Не вказано ідентифікатор користувача."
+
+msgid "Please enter a username to check its availability:"
+msgstr ""
+
#. TODO: icons for each zap
#. Lots of comments for translators:
#. Zap means "to strike suddenly and forcefully as if with a
@@ -6416,7 +6600,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr "Помилка. Підтримку SSL не встановлено."
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr ""
"Ця конференція була закрита. Більше неможливо відправити жодного "
@@ -6685,23 +6868,18 @@ msgstr "Відеокамера"
msgid "Screen Sharing"
msgstr "Ідентифікатор"
-#, c-format
msgid "Free For Chat"
msgstr "Готовий до розмови"
-#, c-format
msgid "Not Available"
msgstr "Недоступний"
-#, c-format
msgid "Occupied"
msgstr "Зайнятий"
-#, c-format
msgid "Web Aware"
msgstr "Підтримується Web"
-#, c-format
msgid "Invisible"
msgstr "Невидимий"
@@ -6748,7 +6926,7 @@ msgstr ""
"літери та повинен містити лише літери, цифри та пробіли, або ж повинен "
"містити лише цифри."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
#, fuzzy
msgid "Invalid username."
@@ -6765,7 +6943,7 @@ msgstr "Ваш обліковий запис наразі заблоковани
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "Служба миттєвих повідомлень AOL тимчасово недоступна."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6800,10 +6978,8 @@ msgstr "Введіть 6-цифрове число з цифрового дис
msgid "_OK"
msgstr "Гаразд"
-#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
+#, fuzzy, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
msgstr ""
"Незабаром ви можете бути від'єднані. Можливо, ви захочете використати TOC, "
"доки це не буде виправлено. Перевірте оновлення на %s."
@@ -6972,7 +7148,7 @@ msgstr[0] "Ви не отримали %hu повідомлення від %s, з
msgstr[1] "Ви не отримали %hu повідомлення від %s, з невідомої причини."
msgstr[2] "Ви не отримали %hu повідомлень від %s, з невідомої причини."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "Не вдається відправити повідомлення: %s"
@@ -6994,6 +7170,9 @@ msgstr "У мережі з"
msgid "Member Since"
msgstr "Член з"
+msgid "Profile"
+msgstr "Профіль"
+
msgid "Your AIM connection may be lost."
msgstr "Ваше з'єднання AIM можливо буде розірване."
@@ -7162,7 +7341,8 @@ msgid ""
msgid_plural ""
"The maximum away message length of %d bytes has been exceeded. It has been "
"truncated for you."
-msgstr[0] "Максимальна довжина повідмлення складає %d байт. Pidgin обрізав його."
+msgstr[0] ""
+"Максимальна довжина повідмлення складає %d байт. Pidgin обрізав його."
msgstr[1] ""
"Максимальна довжина повідмлення складає %d байти. Pidgin обрізав його."
msgstr[2] ""
@@ -7194,9 +7374,9 @@ msgid ""
"The AIM servers were temporarily unable to send your buddy list. Your buddy "
"list is not lost, and will probably become available in a few minutes."
msgstr ""
-"Pidgin тимчасово не в змозі отримати ваш список контактів з серверів АІМ. Ваш "
-"список контактів не втрачений, та вірогідно стане доступним через декілька "
-"годин."
+"Pidgin тимчасово не в змозі отримати ваш список контактів з серверів АІМ. "
+"Ваш список контактів не втрачений, та вірогідно стане доступним через "
+"декілька годин."
msgid "Orphans"
msgstr "Завислі рядки"
@@ -7287,6 +7467,7 @@ msgstr "З'єднатися"
msgid "Get AIM Info"
msgstr "Отримати інформацію"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "Змінити коментар користувача"
@@ -7404,7 +7585,7 @@ msgstr "Запит створення прямого з'єднання %s з н
msgid "Attempting to connect to %s:%hu."
msgstr "Спроба створення прямого з'єднання з %s у %s:%hu"
-#, fuzzy, c-format
+#, fuzzy
msgid "Attempting to connect via proxy server."
msgstr "Спроба створення прямого з'єднання з %s у %s:%hu"
@@ -7514,7 +7695,7 @@ msgstr "Opera"
msgid "Visible"
msgstr "Невидимий"
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
#, fuzzy
@@ -7610,17 +7791,51 @@ msgstr "Останнє оновлення"
msgid "Could not change buddy information."
msgstr "Введіть користувача для стеження."
-#, c-format
-msgid "%d needs Q&A"
+#, fuzzy
+msgid "Mobile"
+msgstr "Мобільний Телефон"
+
+msgid "Note"
+msgstr "Примітки"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "Значок користувача"
+
+msgid "Change his/her memo as you like"
msgstr ""
#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "Додати користувача"
+msgid "_Modify"
+msgstr "З_мінити"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "З_мінити"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "Сервер зайнятий"
-msgid "Input answer here"
+msgid "Your request was accepted."
msgstr ""
+msgid "Your request was rejected."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%u requires verification"
+msgstr "Запитати авторизацію"
+
+#, fuzzy
+msgid "Add buddy question"
+msgstr "Додати користувача у список?"
+
+#, fuzzy
+msgid "Enter answer here"
+msgstr "Не можна відправляти каталог."
+
msgid "Send"
msgstr "Надіслати"
@@ -7632,19 +7847,20 @@ msgstr "Неправильний пароль"
msgid "Authorization denied message:"
msgstr "Повідомлення відмови у авторизації:"
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr ""
#, fuzzy, c-format
-msgid "%d needs authentication"
+msgid "%u needs authorization"
msgstr "Початок ідентифікації"
#, fuzzy
msgid "Add buddy authorize"
msgstr "Додати користувача у список?"
-msgid "Input request here"
-msgstr ""
+#, fuzzy
+msgid "Enter request here"
+msgstr "Увійти на сервер конференцій"
#, fuzzy
msgid "Would you be my friend?"
@@ -7667,7 +7883,7 @@ msgid "Failed sending authorize"
msgstr "Будь-ласка, авторизуйте мене!"
#, fuzzy, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr "Не вдається приєднатися до користувача у кімнаті"
#, fuzzy, c-format
@@ -7713,6 +7929,10 @@ msgid "You can only search for permanent Qun\n"
msgstr ""
#, fuzzy
+msgid "(Invalid UTF-8 string)"
+msgstr "Неправильні параметри проксі"
+
+#, fuzzy
msgid "Not member"
msgstr "Член з"
@@ -7757,15 +7977,18 @@ msgstr ""
msgid "Join QQ Qun"
msgstr "Приєднатися до розмови"
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
+msgid "Input request here"
msgstr ""
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "Номер телефон"
+
msgid "Successfully joined Qun"
msgstr ""
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
#, fuzzy
@@ -7776,7 +7999,7 @@ msgstr "Параметри звуку"
msgid "Failed:"
msgstr "Помилка"
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
#, fuzzy
@@ -7788,11 +8011,12 @@ msgid ""
"this operation will eventually remove this Qun."
msgstr ""
-msgid "Sorry, you are not our style ..."
-msgstr ""
+#, fuzzy
+msgid "Sorry, you are not our style"
+msgstr "Вибачте, я на хвилинку відійшов(відійшла)!"
#, fuzzy
-msgid "Successfully changed Qun member"
+msgid "Successfully changed Qun members"
msgstr "Номер телефон"
#, fuzzy
@@ -7803,7 +8027,7 @@ msgid "You have successfully created a Qun"
msgstr ""
#, fuzzy
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr "Бажаєте приєднатися до бесіди?"
#, fuzzy
@@ -7811,28 +8035,28 @@ msgid "Setup"
msgstr "_Встановити"
#, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr ""
#, c-format
-msgid "%d request to join Qun %d"
+msgid "%u request to join Qun %u"
msgstr ""
#, fuzzy, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr "Не вдається приєднатися до користувача у кімнаті"
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr "Видалити користувача"
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "Видалити користувача"
#, fuzzy, c-format
msgid "Unknown-%d"
@@ -7952,6 +8176,13 @@ msgstr "<b>Користувач:</b> %s<br>"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<b>Псевдонім:</b> %s<br>"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<b>Користувач:</b> %s<br>"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7959,7 +8190,7 @@ msgid "<i>Feel free to join us!</i> :)"
msgstr ""
#, fuzzy, c-format
-msgid "About OpenQ r%s"
+msgid "About OpenQ %s"
msgstr "Про Pidgin"
#, fuzzy
@@ -7980,6 +8211,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "Про Pidgin"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Домашня адреса"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -8011,7 +8246,6 @@ msgstr ""
msgid "QQ2008"
msgstr ""
-#. #endif
#, fuzzy
msgid "Connect by TCP"
msgstr "З'єднання"
@@ -8024,6 +8258,9 @@ msgstr "Показати менше параметри"
msgid "Show server news"
msgstr "Показати менше параметри"
+msgid "Show chat room when msg comes"
+msgstr ""
+
#, fuzzy
msgid "Keep alive interval (seconds)"
msgstr "Помилка читання"
@@ -8033,11 +8270,7 @@ msgid "Update interval (seconds)"
msgstr "Помилка читання"
#, fuzzy
-msgid "Can not decrypt server reply"
-msgstr "Не вдається отримати інформацію про сервер"
-
-#, fuzzy
-msgid "Can not decrypt get server reply"
+msgid "Cannot decrypt server reply"
msgstr "Не вдається отримати інформацію про сервер"
#, c-format
@@ -8060,21 +8293,23 @@ msgid "Activation required"
msgstr "Вимагається реєстрація"
#, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr ""
#, fuzzy
-msgid "Keep alive error"
-msgstr "Помилка читання"
+msgid "Could not decrypt server reply"
+msgstr "Не вдається отримати інформацію про сервер"
-msgid "Requesting captcha ..."
-msgstr ""
+#, fuzzy
+msgid "Requesting captcha"
+msgstr "Неоднозначний запит"
-msgid "Checking code of captcha ..."
+msgid "Checking captcha"
msgstr ""
-msgid "Failed captcha verify"
-msgstr ""
+#, fuzzy
+msgid "Failed captcha verification"
+msgstr "Ідентифікація Yahoo! завершилась невдало"
#, fuzzy
msgid "Captcha Image"
@@ -8084,7 +8319,7 @@ msgstr "Збереження зображення"
msgid "Enter code"
msgstr "Зміна паролю"
-msgid "QQ Captcha Verifing"
+msgid "QQ Captcha Verification"
msgstr ""
#, fuzzy
@@ -8092,16 +8327,15 @@ msgid "Enter the text from the image"
msgstr "Введіть назву групи, що додаватиметься."
#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
+msgid "Unknown reply when checking password (0x%02X)"
msgstr ""
#, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
msgstr ""
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "Не вдається встановити з'єднання."
@@ -8109,12 +8343,6 @@ msgstr "Не вдається встановити з'єднання."
msgid "Socket error"
msgstr "Невідома помилка"
-#, fuzzy, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr "Вас було роз'єднано з сервером."
-
#, fuzzy
msgid "Unable to read from socket"
msgstr "Не вдається прочитати сокет"
@@ -8128,11 +8356,11 @@ msgid "Connection lost"
msgstr "З'єднання розірвано"
#, fuzzy
-msgid "Get server ..."
+msgid "Getting server"
msgstr "Встановити інформацію про користувача..."
#, fuzzy
-msgid "Request token"
+msgid "Requesting token"
msgstr "Запит заборонено"
#, fuzzy
@@ -8144,17 +8372,13 @@ msgid "Invalid server or port"
msgstr "Неправильне ім'я користувача чи пароль"
#, fuzzy
-msgid "Connecting server ..."
-msgstr "З'єднатися з сервером"
+msgid "Connecting to server"
+msgstr "З'єднання з SILC сервером"
#, fuzzy
msgid "QQ Error"
msgstr "Помилка читання"
-#, fuzzy
-msgid "Failed to send IM."
-msgstr "Не вдається приєднатися до розмови"
-
#, fuzzy, c-format
msgid ""
"Server News:\n"
@@ -8164,6 +8388,10 @@ msgid ""
msgstr "Транзитний сервер ICQ"
#, fuzzy, c-format
+msgid "%s:%s"
+msgstr "%s на %s (%s)"
+
+#, fuzzy, c-format
msgid "From %s:"
msgstr "Від"
@@ -8173,32 +8401,30 @@ msgid ""
"%s"
msgstr "Інформація про сервер"
-msgid "Unknow SERVER CMD"
-msgstr ""
+#, fuzzy
+msgid "Unknown SERVER CMD"
+msgstr "Помилка невідома."
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
#, fuzzy
msgid "QQ Qun Command"
msgstr "команда"
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr ""
-
-msgid "Can not decrypt login reply"
-msgstr ""
+#, fuzzy
+msgid "Could not decrypt login reply"
+msgstr "Не вдається отримати інформацію про сервер"
#, fuzzy
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr "Помилка невідома."
#, fuzzy
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr "Помилка невідома."
#, fuzzy, c-format
@@ -9051,9 +9277,6 @@ msgstr "Організація"
msgid "Unit"
msgstr "Відділ"
-msgid "Note"
-msgstr "Примітки"
-
msgid "Join Chat"
msgstr "Приєднатися до розмови"
@@ -9741,6 +9964,10 @@ msgstr "Не вдається розв'язати назву вузла."
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr "Псевдоніми IRC не повинні містити побіли"
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "Показати менше параметри"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -9782,194 +10009,10 @@ msgid "Auth Domain"
msgstr "автоматично"
#, c-format
-msgid "Looking up %s"
-msgstr "Пошук %s"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Не вдається з'єднатись з %s"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Підключення: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "Не вдається записати файл %s."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "Не вдається прочитати файл %s."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "Повідомлення занадто довге, останні %s байт обрізані"
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s наразі не у мережі."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "Попередження %s не дозволено."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "Повідомлення відкинуто, ви перевищили межу швидкості сервера."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "Розмова у %s недоступна."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "Ви відправляєте повідомлення до %s занадто швидко."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "Ви не отримали повідомлення від %s, тому що воно було надто велике."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
+msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
-"Ви не отримали повідомлення від %s, тому що воно надсилалось занадто швидко."
-
-#, c-format
-msgid "Failure."
-msgstr "Збій."
-
-#, c-format
-msgid "Too many matches."
-msgstr "Забагато відповідностей."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "Вимагається більша точність."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "Службі каталогів тимчасово недоступна."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "Пошук ел.пошти обмежений."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "Ключове слово проігноровано."
-
-#, c-format
-msgid "No keywords."
-msgstr "Немає ключових слів."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "Користувач не має довідникових даних."
-
-#, c-format
-msgid "Country not supported."
-msgstr "Країна не підтримується."
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Невідомий збій: %s."
-
-#, fuzzy, c-format
-msgid "Incorrect username or password."
-msgstr "Неправильне прізвисько або пароль."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "Служба тимчасово недоступна."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "Ваш рівень застереження зависокий для входу у систему."
-
-#, c-format
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
-msgstr ""
-"Ви занадто часто з'єднуєтесь та від'єднуєтесь. Зачекайте 10 хвилин та "
-"спробуйте знову. Якщо ви продовжите спроби, вам доведеться чекати ще довше."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "Невідома помилка підключення: %s"
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "Невідома помилка %d. Інформація: %s"
-
-#, fuzzy
-msgid "Invalid Groupname"
-msgstr "Неправильна група"
-
-msgid "Connection Closed"
-msgstr "З'єднання розірвано"
-
-msgid "Waiting for reply..."
-msgstr "Очікування відповіді..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "TOC зв'язок відновлено. Тепер ви можете відправити повідомлення знову."
-
-msgid "Password Change Successful"
-msgstr "Пароль успішно змінено"
-
-msgid "_Group:"
-msgstr "_Група:"
-
-msgid "Get Dir Info"
-msgstr "Отримати інформацію каталогу"
-
-msgid "Set Dir Info"
-msgstr "Встановити інформацію каталогу"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "Не вдається відкрити %s для запису!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "Не вдається передати файл; вірогідно, скасовано на іншому боці."
-
-msgid "Could not connect for transfer."
-msgstr "Не вдається з'єднатися для передавання."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "Не вдається записати заголовок файлу. Файл не буде передаватись."
-
-#, fuzzy
-msgid "Save As..."
-msgstr "Зберегти значок як..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s просить %s прийняти %d файл: %s (%.2f %s)%s%s"
-msgstr[1] "%s просить %s прийняти %d файли: %s (%.2f %s)%s%s"
-msgstr[2] "%s просить %s прийняти %d файлів: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s просить вас відправити йому файл"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "Модуль протоколу TOC "
-
-#, c-format
-msgid "%s has sent you a webcam invite, which is not yet supported."
+msgid "Your SMS was not delivered"
msgstr ""
msgid "Your Yahoo! message did not get sent."
@@ -10000,8 +10043,8 @@ msgid ""
"Check %s for updates."
msgstr ""
"Сервер Yahoo намагається використовувати невідомий метод ідентифікації. Ця "
-"версія Pidgin швидше за все не зможе увійти у систему Yahoo. Спробуйте оновити "
-"%s."
+"версія Pidgin швидше за все не зможе увійти у систему Yahoo. Спробуйте "
+"оновити %s."
msgid "Failed Yahoo! Authentication"
msgstr "Ідентифікація Yahoo! завершилась невдало"
@@ -10254,14 +10297,9 @@ msgstr "Цікаве посилання 3"
msgid "Last Update"
msgstr "Останнє оновлення"
-#, c-format
-msgid "User information for %s unavailable"
-msgstr "Інформація про користувача %s недоступна"
-
#, fuzzy
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr "Схоже, цей профіль на мові, яка наразі не підтримується."
msgid ""
@@ -10610,10 +10648,6 @@ msgstr "Не турбувати"
msgid "Extended away"
msgstr "Розширений статус \"Відійшов\""
-#, fuzzy
-msgid "Mobile"
-msgstr "Мобільний Телефон"
-
msgid "Listening to music"
msgstr ""
@@ -10655,20 +10689,6 @@ msgstr "%s виходить зі стану бездіяльності"
msgid "%x %X"
msgstr ""
-#, fuzzy, c-format
-msgid "Error Reading %s"
-msgstr ""
-"Помилка читання %s: \n"
-"%s.\n"
-
-#, 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 ""
-"Помилка при синтаксичному розборі списку контактів. Список не був "
-"завантажений, а попередній файл перейменований на blist.xml~."
-
msgid "Calculating..."
msgstr "Підрахунок..."
@@ -10753,6 +10773,13 @@ msgstr ""
msgid "Unable to connect to %s: %s"
msgstr "Не вдається з'єднатися з сервером."
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+"Для входу на сервер вимагається TLS/SSL. Підтримку TLS/SSL не знайдено."
+
#, c-format
msgid " - %s"
msgstr ""
@@ -10786,6 +10813,20 @@ msgstr "З'єднання розірвано"
msgid "Address already in use."
msgstr "Такий файл вже існує"
+#, fuzzy, c-format
+msgid "Error Reading %s"
+msgstr ""
+"Помилка читання %s: \n"
+"%s.\n"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"Помилка при синтаксичному розборі списку контактів. Список не був "
+"завантажений, а попередній файл перейменований на blist.xml~."
+
#, fuzzy
msgid "Internet Messenger"
msgstr "Обмін миттєвими повідомленнями"
@@ -10834,10 +10875,9 @@ msgstr "Сповіщення про нову пошту"
msgid "Use this buddy _icon for this account:"
msgstr ""
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "Параметри %s"
+#, fuzzy
+msgid "_Advanced"
+msgstr "_Скасувати"
#, fuzzy
msgid "Use GNOME Proxy Settings"
@@ -10873,9 +10913,6 @@ msgstr "Якщо ви ретельно придивитесь"
msgid "you can see the butterflies mating"
msgstr "ви можете побачити метеликів"
-msgid "Proxy Options"
-msgstr "Параметри проксі"
-
msgid "Proxy _type:"
msgstr "_Тип проксі:"
@@ -10906,8 +10943,8 @@ msgid "Create _this new account on the server"
msgstr ""
#, fuzzy
-msgid "_Advanced"
-msgstr "_Скасувати"
+msgid "_Proxy"
+msgstr "без проксі"
#, fuzzy
msgid "Enabled"
@@ -10978,6 +11015,17 @@ msgid "I_M"
msgstr "_Повідомл"
#, fuzzy
+msgid "_Audio Call"
+msgstr "Додати розмову"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Відеорозмова"
+
+#, fuzzy
msgid "_Send File..."
msgstr "_Надіслати файл"
@@ -11136,6 +11184,10 @@ msgid "/Tools/_Certificates"
msgstr "/Сервіс/П_араметри"
#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Сервіс/С_татус"
+
+#, fuzzy
msgid "/Tools/Plu_gins"
msgstr "/Сервіс/Дії над модулями"
@@ -11145,10 +11197,6 @@ msgstr "/Сервіс/П_араметри"
msgid "/Tools/Pr_ivacy"
msgstr "/Сервіс/_Конфіденційність"
-#, fuzzy
-msgid "/Tools/Smile_y"
-msgstr "/Сервіс/С_татус"
-
msgid "/Tools/_File Transfers"
msgstr "/Сервіс/Передавання _файлів..."
@@ -11282,8 +11330,8 @@ msgstr "інший"
msgid "By status"
msgstr "за статусом"
-msgid "By log size"
-msgstr "за розміром журналу"
+msgid "By recent log activity"
+msgstr ""
#, fuzzy, c-format
msgid "%s disconnected"
@@ -11301,6 +11349,9 @@ msgstr "_Повторне з'єднання"
msgid "Re-enable"
msgstr "Зареєструвати новий обліковий запис Jabber"
+msgid "SSL FAQs"
+msgstr ""
+
#, fuzzy
msgid "Welcome back!"
msgstr "%s повертається"
@@ -11399,6 +11450,9 @@ msgstr ""
msgid "A_lias:"
msgstr "Псевдонім:"
+msgid "_Group:"
+msgstr "_Група:"
+
msgid "Auto_join when account becomes online."
msgstr ""
@@ -11459,14 +11513,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr "Запросити користувача у час"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Введіть ім'я користувача, якого ви бажаєте запросити, та введіть "
-"необов'язковий текст запрошення."
-
msgid "_Buddy:"
msgstr "_Користувач:"
@@ -11546,6 +11592,22 @@ msgstr "/Бесіда/Зберегти _як..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Бесіда/О_чистити"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Бесіда/_Закрити"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Бесіда/_Закрити"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Бесіда/_Закрити"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Бесіда/Переглянути _журнал"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Бесіда/Наді_слати файл..."
@@ -11624,6 +11686,18 @@ msgstr "/_Бесіда"
msgid "/Conversation/View Log"
msgstr "/Бесіда/Переглянути журнал"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Бесіда/_Закрити"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Бесіда/Переглянути журнал"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Бесіда/_Закрити"
+
msgid "/Conversation/Send File..."
msgstr "/Бесіда/Надіслати файл..."
@@ -11825,6 +11899,9 @@ msgstr "Адреса"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "підтримка"
@@ -11975,6 +12052,10 @@ msgid "Ubuntu Georgian Translators"
msgstr "Поточні перекладачі"
#, fuzzy
+msgid "Khmer"
+msgstr "Opera"
+
+#, fuzzy
msgid "Kannada"
msgstr "Заборонено"
@@ -11998,6 +12079,10 @@ msgid "Macedonian"
msgstr "Македонська"
#, fuzzy
+msgid "Mongolian"
+msgstr "Македонська"
+
+#, fuzzy
msgid "Bokmål Norwegian"
msgstr "Норвезька"
@@ -12106,8 +12191,25 @@ msgid ""
"<BR><BR>"
msgstr ""
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, fuzzy, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"3\">IRC:</FONT> #Pidgin на irc.freenode.net<BR><BR>"
+
#, fuzzy, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"3\">IRC:</FONT> #Pidgin на irc.freenode.net<BR><BR>"
#, fuzzy
@@ -12450,15 +12552,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr "Сповіщення про нову пошту"
-msgid "_Copy Email Address"
-msgstr "_Копіювати адресу ел.пошти"
-
-msgid "_Open Link in Browser"
-msgstr "_Відкрити посилання у веб-переглядачі"
-
-msgid "_Copy Link Location"
-msgstr "_Копіювати посилання"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12732,6 +12825,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12749,6 +12843,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12780,16 +12875,27 @@ msgstr ""
msgid "Pidgin"
msgstr "Пейджер"
-#, fuzzy
-msgid "Open All Messages"
-msgstr "Надсилання повідомлення"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
+
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
#, fuzzy
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgid "Calling..."
+msgstr "Підрахунок..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
msgstr ""
-"<span weight=\"bold\" size=\"larger\">Ви отримали пошту!</span>\n"
-"\n"
-"%s"
#, c-format
msgid "%s has %d new message."
@@ -12820,6 +12926,35 @@ msgid ""
"The 'Manual' browser command has been chosen, but no command has been set."
msgstr "Було вибрано веб-переглядач \"інший\", але команду не було задано."
+#, fuzzy
+msgid "Open All Messages"
+msgstr "Надсилання повідомлення"
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr ""
+"<span weight=\"bold\" size=\"larger\">Ви отримали пошту!</span>\n"
+"\n"
+"%s"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "Нове правило"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr ""
+"<span weight=\"bold\" size=\"larger\">Ви отримали пошту!</span>\n"
+"\n"
+"%s"
+
+#, fuzzy
+msgid "No message"
+msgstr "(1 повідомлення)"
+
msgid "The following plugins will be unloaded."
msgstr ""
@@ -12873,6 +13008,10 @@ msgstr ""
msgid "Select a file"
msgstr "Вибір файлу"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Змінити правило"
+
#. Create the "Pounce on Whom" frame.
#, fuzzy
msgid "Pounce on Whom"
@@ -12958,6 +13097,50 @@ msgstr ""
msgid "Pounce Target"
msgstr "Коли реагувати"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "Користувач почав _набирати"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "Користувач пише..."
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "_Увійшов"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "П_ерестав бути бездіяльним"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "_Повернувся"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "Ping"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "Ви_йшов"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "%s має стан бездіяльності"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "при відсутності"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Надіслати пові_домлення"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "Невідома подія стеження. Сповістіть про це!"
+
msgid "Smiley theme failed to unpack."
msgstr ""
@@ -12982,6 +13165,12 @@ msgstr "Комбінації клавіш"
msgid "Cl_ose conversations with the Escape key"
msgstr "Бесіда з %s"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Список контактів"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "Значок системного лотка"
@@ -13107,10 +13296,6 @@ msgstr ""
msgid "Cannot start browser configuration program."
msgstr "Не вдається отримати інформацію про користувача"
-#, fuzzy
-msgid "ST_UN server:"
-msgstr "_Сервер:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr ""
@@ -13138,6 +13323,10 @@ msgstr "П_очатковий порт:"
msgid "_End port:"
msgstr "К_інцевий порт:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
#, fuzzy
msgid "Proxy Server &amp; Browser"
msgstr "Проксі-сервер"
@@ -13167,6 +13356,10 @@ msgstr "Проксі-сервер"
msgid "No proxy"
msgstr "без проксі"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "_Користувач:"
@@ -13337,14 +13530,14 @@ msgid "Auto-away"
msgstr "Авто-\"Відійшов\""
#, fuzzy
-msgid "Change status when _idle"
-msgstr "Ав_томатично встановлювати статус \"Відійшов\""
-
-#, fuzzy
msgid "_Minutes before becoming idle:"
msgstr "_Хвилин до встановлення статусу \"Відійшов\""
#, fuzzy
+msgid "Change status when _idle"
+msgstr "Ав_томатично встановлювати статус \"Відійшов\""
+
+#, fuzzy
msgid "Change _status to:"
msgstr "Змінити адресу на:"
@@ -13501,6 +13694,12 @@ msgstr "Зберегти _та застосувати"
msgid "Status for %s"
msgstr "Стан: %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
#, fuzzy
msgid "Custom Smiley"
msgstr "Вставити посмішку"
@@ -13511,15 +13710,15 @@ msgstr ""
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
+msgstr ""
+
#, fuzzy
msgid "Duplicate Shortcut"
msgstr "Файл публічного ключа"
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
-msgstr ""
-
#, fuzzy
msgid "Please select an image for the smiley."
msgstr "Введіть нову назву для обраної групи."
@@ -13533,18 +13732,22 @@ msgid "Add Smiley"
msgstr "Посмішка!"
#, fuzzy
-msgid "Smiley _Image"
+msgid "_Image:"
msgstr "Збереження зображення"
-#. Smiley shortcut
+#. Shortcut text
#, fuzzy
-msgid "Smiley S_hortcut"
+msgid "S_hortcut text:"
msgstr "Комбінації клавіш"
#, fuzzy
msgid "Smiley"
msgstr "Посмішка!"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "Комбінації клавіш"
+
msgid "Custom Smiley Manager"
msgstr ""
@@ -13673,6 +13876,16 @@ msgid ""
msgstr ""
#, fuzzy
+msgid "_Open Link"
+msgstr "_Відкривати посилання у:"
+
+msgid "_Copy Link Location"
+msgstr "_Копіювати посилання"
+
+msgid "_Copy Email Address"
+msgstr "_Копіювати адресу ел.пошти"
+
+#, fuzzy
msgid "Save File"
msgstr "Збереження файлу..."
@@ -14709,10 +14922,6 @@ msgid "Only when docked"
msgstr ""
#, fuzzy
-msgid "_Flash window when chat messages are received"
-msgstr "_Блимати вікном, при отриманні повідомлення"
-
-#, fuzzy
msgid "Windows Pidgin Options"
msgstr "Параметри входу"
@@ -14764,6 +14973,234 @@ msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr ""
#, fuzzy
+#~ msgid "Invite message"
+#~ msgstr "Повідомлення про вихід"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Введіть ім'я користувача, якого ви бажаєте запросити, та введіть "
+#~ "необов'язковий текст запрошення."
+
+#, fuzzy
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "Не вдається завантажити список контактів"
+
+#~ msgid ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+#~ msgstr ""
+#~ "Незабаром ви можете бути від'єднані. Можливо, ви захочете використати "
+#~ "TOC, доки це не буде виправлено. Перевірте оновлення на %s."
+
+#, fuzzy
+#~ msgid "Add buddy Q&A"
+#~ msgstr "Додати користувача"
+
+#, fuzzy
+#~ msgid "Can not decrypt get server reply"
+#~ msgstr "Не вдається отримати інформацію про сервер"
+
+#, fuzzy
+#~ msgid "Keep alive error"
+#~ msgstr "Помилка читання"
+
+#, fuzzy
+#~ msgid ""
+#~ "Lost connection with server:\n"
+#~ "%d, %s"
+#~ msgstr "Вас було роз'єднано з сервером."
+
+#, fuzzy
+#~ msgid "Connecting server ..."
+#~ msgstr "З'єднатися з сервером"
+
+#, fuzzy
+#~ msgid "Failed to send IM."
+#~ msgstr "Не вдається приєднатися до розмови"
+
+#~ msgid "Looking up %s"
+#~ msgstr "Пошук %s"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "Не вдається з'єднатись з %s"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Підключення: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "Не вдається записати файл %s."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "Не вдається прочитати файл %s."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "Повідомлення занадто довге, останні %s байт обрізані"
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s наразі не у мережі."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "Попередження %s не дозволено."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr "Повідомлення відкинуто, ви перевищили межу швидкості сервера."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "Розмова у %s недоступна."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "Ви відправляєте повідомлення до %s занадто швидко."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "Ви не отримали повідомлення від %s, тому що воно було надто велике."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr ""
+#~ "Ви не отримали повідомлення від %s, тому що воно надсилалось занадто "
+#~ "швидко."
+
+#~ msgid "Failure."
+#~ msgstr "Збій."
+
+#~ msgid "Too many matches."
+#~ msgstr "Забагато відповідностей."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "Вимагається більша точність."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "Службі каталогів тимчасово недоступна."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "Пошук ел.пошти обмежений."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "Ключове слово проігноровано."
+
+#~ msgid "No keywords."
+#~ msgstr "Немає ключових слів."
+
+#~ msgid "User has no directory information."
+#~ msgstr "Користувач не має довідникових даних."
+
+#~ msgid "Country not supported."
+#~ msgstr "Країна не підтримується."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Невідомий збій: %s."
+
+#, fuzzy
+#~ msgid "Incorrect username or password."
+#~ msgstr "Неправильне прізвисько або пароль."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "Служба тимчасово недоступна."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "Ваш рівень застереження зависокий для входу у систему."
+
+#~ 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 ""
+#~ "Ви занадто часто з'єднуєтесь та від'єднуєтесь. Зачекайте 10 хвилин та "
+#~ "спробуйте знову. Якщо ви продовжите спроби, вам доведеться чекати ще "
+#~ "довше."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "Невідома помилка підключення: %s"
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "Невідома помилка %d. Інформація: %s"
+
+#, fuzzy
+#~ msgid "Invalid Groupname"
+#~ msgstr "Неправильна група"
+
+#~ msgid "Connection Closed"
+#~ msgstr "З'єднання розірвано"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "Очікування відповіді..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr ""
+#~ "TOC зв'язок відновлено. Тепер ви можете відправити повідомлення знову."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "Пароль успішно змінено"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Отримати інформацію каталогу"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Встановити інформацію каталогу"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "Не вдається відкрити %s для запису!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr "Не вдається передати файл; вірогідно, скасовано на іншому боці."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "Не вдається з'єднатися для передавання."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "Не вдається записати заголовок файлу. Файл не буде передаватись."
+
+#, fuzzy
+#~ msgid "Save As..."
+#~ msgstr "Зберегти значок як..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s просить %s прийняти %d файл: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s просить %s прийняти %d файли: %s (%.2f %s)%s%s"
+#~ msgstr[2] "%s просить %s прийняти %d файлів: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s просить вас відправити йому файл"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "Модуль протоколу TOC "
+
+#~ msgid "User information for %s unavailable"
+#~ msgstr "Інформація про користувача %s недоступна"
+
+#~ msgid "%s Options"
+#~ msgstr "Параметри %s"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Параметри проксі"
+
+#~ msgid "By log size"
+#~ msgstr "за розміром журналу"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_Відкрити посилання у веб-переглядачі"
+
+#, fuzzy
+#~ msgid "ST_UN server:"
+#~ msgstr "_Сервер:"
+
+#, fuzzy
+#~ msgid "Smiley _Image"
+#~ msgstr "Збереження зображення"
+
+#, fuzzy
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "Комбінації клавіш"
+
+#, fuzzy
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "_Блимати вікном, при отриманні повідомлення"
+
+#, fuzzy
#~ msgid "A group with the name already exists."
#~ msgstr "Тека з такою назвою вже існує"
@@ -14832,13 +15269,6 @@ msgstr ""
#~ msgstr "Чи дійсно бажаєте видалити повідомлення про відсутність \"%s\"?"
#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr "%s на %s (%s)"
-
-#, fuzzy
#~ msgid "System Message"
#~ msgstr "Надсилання повідомлення"
@@ -14980,9 +15410,6 @@ msgstr ""
#~ msgid "Invalid screen name"
#~ msgstr "Неправильне ім'я користувача"
-#~ msgid "Unable to make SSL connection to server."
-#~ msgstr "Не вдається встановити SSL-з'єднання з сервером."
-
#~ msgid "Too evil (sender)"
#~ msgstr "Занадто докучливий (відправник)"
@@ -15233,8 +15660,8 @@ msgstr ""
#~ "allows messages to be queued until the icon is clicked, similar to ICQ."
#~ msgstr ""
#~ "Відображає значок системного лотка (наприклад, у GNOME, KDE або Windows) "
-#~ "який показує поточний стан Pidgin, що надає швидкий доступ до операцій, які "
-#~ "використовуються у більшості випадків, та дозволяє вмикати/вимикати "
+#~ "який показує поточний стан Pidgin, що надає швидкий доступ до операцій, "
+#~ "які використовуються у більшості випадків, та дозволяє вмикати/вимикати "
#~ "відображення даних списку контактів або вікна входу. Також дозволяє "
#~ "зберігати повідомлення у черзі, до їх викликання клацанням на зображенні, "
#~ "подібно до ICQ."
@@ -15247,8 +15674,8 @@ msgstr ""
#~ "You can get version %s from:<br><a href=\"http://Pidgin.sourceforge.net/"
#~ "\">http://Pidgin.sourceforge.net</a>."
#~ msgstr ""
-#~ "Ви можете отримати версію %s з:<br><a href=\"http://Pidgin.sourceforge.net/"
-#~ "\">http://Pidgin.sourceforge.net</a>."
+#~ "Ви можете отримати версію %s з:<br><a href=\"http://Pidgin.sourceforge."
+#~ "net/\">http://Pidgin.sourceforge.net</a>."
#~ msgid "Delay"
#~ msgstr "Затримка"
@@ -15457,9 +15884,6 @@ msgstr ""
#~ msgid "_Idle"
#~ msgstr "С_тав бездіяльним"
-#~ msgid "Retur_n from idle"
-#~ msgstr "П_ерестав бути бездіяльним"
-
#~ msgid "Pounce Action"
#~ msgstr "Що робити"
@@ -15759,12 +16183,12 @@ msgstr ""
#~ msgid ""
#~ "When this happens, TOC ignores any messages sent to it, and may kick you "
-#~ "off if you send a message. Pidgin will prevent anything from going through. "
-#~ "This is only temporary, please be patient."
+#~ "off if you send a message. Pidgin will prevent anything from going "
+#~ "through. This is only temporary, please be patient."
#~ msgstr ""
#~ "Коли це трапляється, TOC ігнорує будь-які надіслані йому повідомлення, та "
-#~ "може відключити вас при спробі надіслати повідомлення. Pidgin не дозволить "
-#~ "цього зробити. Це тимчасові труднощі, будьте терплячими."
+#~ "може відключити вас при спробі надіслати повідомлення. Pidgin не "
+#~ "дозволить цього зробити. Це тимчасові труднощі, будьте терплячими."
#~ msgid "Pidgin - Save As..."
#~ msgstr "Pidgin - Зберегти як..."
@@ -15778,8 +16202,8 @@ msgstr ""
#~ msgid ""
#~ "The normal authentication method has failed. This means either your "
#~ "password is incorrect, or Yahoo!'s authentication scheme has changed. "
-#~ "Pidgin will now attempt to log in using Web Messenger authentication, which "
-#~ "will result in reduced functionality and features."
+#~ "Pidgin will now attempt to log in using Web Messenger authentication, "
+#~ "which will result in reduced functionality and features."
#~ msgstr ""
#~ "Звичайний метод ідентифікації завершився аварійно. Це означає що, або ви "
#~ "вказали некоректний пароль, або змінилась схема автентифікації Yahoo!. "
@@ -15809,9 +16233,6 @@ msgstr ""
#~ msgstr[1] "(%d повідомлення)"
#~ msgstr[2] "(%d повідомлень)"
-#~ msgid "(1 message)"
-#~ msgstr "(1 повідомлення)"
-
#, fuzzy
#~ msgid "Default auto-away"
#~ msgstr "Авто-\"Відійшов\""
@@ -15905,9 +16326,6 @@ msgstr ""
#~ msgid "Away title: "
#~ msgstr "Назва повідомлення:"
-#~ msgid "Buddy List Error"
-#~ msgstr "Помилка списку контактів"
-
#~ msgid "Size of the expander arrow"
#~ msgstr "Розмір стрілки розширювача"
@@ -16318,13 +16736,13 @@ msgstr ""
#~ msgstr "Не вдається завантажити параметри"
#~ msgid ""
-#~ "Pidgin was not able to load your preferences because they are stored in an "
-#~ "old format that is no longer used. Please reconfigure your settings "
+#~ "Pidgin 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 ""
-#~ "Pidgin не вдається завантажити параметри, тому що вони збережені у старому "
-#~ "форматі, який вже не використовується. Виконайте ще раз налаштовування у "
-#~ "вікні параметрів."
+#~ "Pidgin не вдається завантажити параметри, тому що вони збережені у "
+#~ "старому форматі, який вже не використовується. Виконайте ще раз "
+#~ "налаштовування у вікні параметрів."
#~ msgid "Slightly less boring default"
#~ msgstr "типове повідомлення про відсутність"
@@ -16430,15 +16848,15 @@ msgstr ""
#~ msgstr "Не вдається отримати доступ до каталогу"
#~ msgid ""
-#~ "Pidgin was unable to search the Directory because it was unable to connect "
-#~ "to the directory server. Please try again later."
+#~ "Pidgin was unable to search the Directory because it was unable to "
+#~ "connect to the directory server. Please try again later."
#~ msgstr ""
-#~ "Pidgin не вдається виконати пошук у каталозі, тому що не вдалось з'єднатись "
-#~ "з сервером каталогу. Пізніше спробуйте ще раз."
+#~ "Pidgin не вдається виконати пошук у каталозі, тому що не вдалось "
+#~ "з'єднатись з сервером каталогу. Пізніше спробуйте ще раз."
#~ msgid ""
-#~ "Pidgin was unable to change your password due to an error connecting to the "
-#~ "Gadu-Gadu server. Please try again later."
+#~ "Pidgin was unable to change your password due to an error connecting to "
+#~ "the Gadu-Gadu server. Please try again later."
#~ msgstr ""
#~ "Pidgin не вдається змінити ваш пароль через помилку з'єднання з сервером "
#~ "Gadu-Gadu. Пізніше спробуйте ще раз."
@@ -16450,8 +16868,8 @@ msgstr ""
#~ msgstr "Не вдається отримати доступ до профілю користувача."
#~ msgid ""
-#~ "Pidgin was unable to access this user's profile due to an error connecting "
-#~ "to the directory server. Please try again later."
+#~ "Pidgin was unable to access this user's profile due to an error "
+#~ "connecting to the directory server. Please try again later."
#~ msgstr ""
#~ "Pidgin не вдається отримати доступ до профілю цього користувача через "
#~ "помилку з'єднання з сервером каталогу. Спробуйте ще раз пізніше."
@@ -16594,9 +17012,6 @@ msgstr ""
#~ "%s запросив %s у кімнату розмов %s:\n"
#~ "<b>%s</b>"
-#~ msgid "Sorry, I ran out for a bit!"
-#~ msgstr "Вибачте, я на хвилинку відійшов(відійшла)!"
-
#~ msgid "/Conversation/A_lias..."
#~ msgstr "/Бесіда/_Псевдонім..."
diff --git a/po/ur.po b/po/ur.po
index 0c84e800ba..97d4e9805b 100644
--- a/po/ur.po
+++ b/po/ur.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin Urdu\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
+"POT-Creation-Date: 2009-04-30 10:40-0400\n"
"PO-Revision-Date: 2007-11-14 14:00+0530\n"
"Last-Translator: RKVS Raman <raman@cdacbangalore.in>\n"
"Language-Team: C-DAC,Gist,Urdu Team / BharateeyaOO.o <info.gist@cdac.in / "
@@ -30,13 +30,13 @@ msgstr "فرانسیسی"
msgid "%s. Try `%s -h' for more information.\n"
msgstr "%s. كوشش `%s -h' مزید معلومات كے لیے.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -622,21 +622,6 @@ msgid "Send To"
msgstr "_کو بھیجو"
#, fuzzy
-msgid "Invite message"
-msgstr "پیام میں داخل کرو"
-
-msgid "Invite"
-msgstr "مدعوكریں"
-
-#, fuzzy
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"براہ کرمصارف کا نام داخل کریں جسے آپ مدعو کرنا چاہتےہیں، آپشنل دعوتی پیام کے "
-"ساتھ۔"
-
-#, fuzzy
msgid "Conversation"
msgstr "/گفتگو"
@@ -897,6 +882,41 @@ msgstr "مکالمے"
msgid "System Log"
msgstr "سسٹم لاگ"
+#, fuzzy
+msgid "Calling ... "
+msgstr "شمارکررہا ہے۔۔۔"
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "قبول کرو"
+
+msgid "Reject"
+msgstr "ریجیكٹ"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "آپ نے %s%s چینل تقسیم کیا"
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "ای میلس"
@@ -934,6 +954,9 @@ msgstr "جاری"
msgid "IM"
msgstr "IM"
+msgid "Invite"
+msgstr "مدعوكریں"
+
msgid "(none)"
msgstr "(كچھ نہيں )"
@@ -1156,7 +1179,6 @@ msgstr "%s دور چلا گيا(%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s نےآپ كو پیام بھیجا۔ (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "نا معلوم پانس واقعہ۔ براہ کرم اس کی رپورٹ کریں!"
@@ -1207,7 +1229,6 @@ msgstr "_اسٹیٹس تبدیل كرنےسےپہلے منٹس"
msgid "Change status to"
msgstr "كےلیےاسٹیٹس_تبدیل كریں"
-#. Conversations
msgid "Conversations"
msgstr "مکالمے"
@@ -1546,7 +1567,6 @@ msgid ""
"conversation into the current conversation."
msgstr "جب نئی گفتگو شروع كی جاتی ہے تب یہ پلگ ان "
-#, c-format
msgid "Online"
msgstr "آن لائن"
@@ -1596,6 +1616,28 @@ msgstr "Gntآخری لاگ"
msgid "Lastlog plugin."
msgstr "گائم متن كے لیے آخری لاگ پلگ ان كرو۔"
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "اکاؤنٹس"
@@ -1695,13 +1737,6 @@ msgstr ""
msgid "SSL Certificate Verification"
msgstr ""
-#. Number of actions
-msgid "Accept"
-msgstr "قبول کرو"
-
-msgid "Reject"
-msgstr "ریجیكٹ"
-
msgid "_View Certificate..."
msgstr ""
@@ -1838,6 +1873,18 @@ msgstr "%sنے کمرہ چھوڑ دیا۔"
msgid "%s left the room (%s)."
msgstr "%sنے کمرہ چھوڑ دیا(%s)۔"
+#, fuzzy
+msgid "Invite to chat"
+msgstr "كانفرنس كےلیےمدعوكریں"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"براہ کرمصارف کا نام داخل کریں جسے آپ مدعو کرنا چاہتےہیں، آپشنل دعوتی پیام کے "
+"ساتھ۔"
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "كنیكشن لینے میں نا كامیاب:%s"
@@ -1972,7 +2019,6 @@ msgstr " %sسے %sکا ٹرانسفر شروع کررہا ہے"
msgid "Transfer of file %s complete"
msgstr " %sفائل ٹرانسفر مکمل"
-#, c-format
msgid "File transfer complete"
msgstr "فائل ٹرانسفر مکمل"
@@ -1980,7 +2026,6 @@ msgstr "فائل ٹرانسفر مکمل"
msgid "You canceled the transfer of %s"
msgstr "آپ نے%sکا ٹرانسفر منسوخ کر دیا"
-#, c-format
msgid "File transfer cancelled"
msgstr "فائل ٹرانسفر منسوخ کر دیا"
@@ -2187,7 +2232,6 @@ msgstr "(%s) %s <AUTO-REPLY>: %s\n"
msgid "You are using %s, but this plugin requires %s."
msgstr "آپ %s كا استعمال كررہے ہیں ، لیكن یہ پلگ ان %s. مہیا كرتا ہے۔"
-#, c-format
msgid "This plugin has not defined an ID."
msgstr ""
@@ -2681,6 +2725,32 @@ msgstr ""
msgid "Do not ask. Always save in pounce."
msgstr ""
+#, fuzzy
+msgid "One Time Password"
+msgstr "خفیہ لفظ داخل کرو"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2884,7 +2954,6 @@ msgid ""
"Unable to establish connection with the local mDNS server. Is it running?"
msgstr "لوكل mDNSسروركے ساتھ كنیكشن قائم نااہل۔كیایہ چل رہاہے؟"
-#. Creating the options for the protocol
msgid "First name"
msgstr "ابتدائی نام"
@@ -2918,6 +2987,11 @@ msgstr "Bonjour پروٹوكال پلگ ان"
msgid "Purple Person"
msgstr "نیا فرد"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "محل وقوع"
+
msgid "Bonjour"
msgstr "Bonjour"
@@ -3077,13 +3151,13 @@ msgstr "بڈی کے لئے گفتگو منتخب کریں:%s"
msgid "Add to chat..."
msgstr "گفتگو میں ملاؤ۔۔۔"
+#. Global
msgid "Available"
msgstr "دستیاب"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "دور"
@@ -3426,6 +3500,17 @@ msgstr ""
"آپ نے منتخب کیا ہوا اکاؤنٹ نام سرور کے ذریعے مسترد کیا گیا ہے۔ممکن ہے کہ یہ "
"غیر معتبر الفاظ سے وابستہ ہوگا۔"
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "یہ گفتگو نام پہلے سے استعمال میں"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "عرفیتی نام"
+
msgid "Cannot change nick"
msgstr "نک تبدیل نہیں کر سکتا"
@@ -3700,6 +3785,41 @@ msgstr "سرور سے غیر معتبر چیلینج"
msgid "SASL error"
msgstr "SASL خامی"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "کوئی وجہ نہیں دی گئی۔"
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "غیر معاون ورجن"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"سرور كے ساتھ كوئی كنیكشن اسٹابلیش نہیں كیا جاسكتا:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"سرور كے ساتھ كوئی كنیكشن اسٹابلیش نہیں كیا جاسكتا:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr " كنیكشن كی شروعات نا ممكن"
+
+msgid "Unable to create socket"
+msgstr "ساکیٹ تخلیق کرنےمیں نا قابل"
+
+msgid "Write error"
+msgstr "لکھو خامی"
+
msgid "Full Name"
msgstr "پورا نام"
@@ -3767,6 +3887,10 @@ msgstr "كلائنٹ"
msgid "Operating System"
msgstr "آپریٹینگ سسٹم"
+#, fuzzy
+msgid "Local Time"
+msgstr "لوکل فائل:"
+
msgid "Last Activity"
msgstr ""
@@ -4003,7 +4127,6 @@ msgstr "باتونی"
msgid "Extended Away"
msgstr " "
-#, c-format
msgid "Do Not Disturb"
msgstr "ڈسٹرب مت کرو"
@@ -4130,9 +4253,6 @@ msgstr "کمرے تلاش کرو"
msgid "You require encryption, but it is not available on this server."
msgstr ""
-msgid "Write error"
-msgstr "لکھو خامی"
-
#, fuzzy
msgid "Ping timeout"
msgstr "سادہ متن"
@@ -4142,14 +4262,9 @@ msgstr "پڑھو خامی"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"سرور كے ساتھ كوئی كنیكشن اسٹابلیش نہیں كیا جاسكتا:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "ساکیٹ تخلیق کرنےمیں نا قابل"
#, fuzzy
msgid "Invalid XMPP ID"
@@ -4158,6 +4273,10 @@ msgstr "IDغیر معتبر"
msgid "Invalid XMPP ID. Domain must be set."
msgstr ""
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "سرور سے کنیکٹ ہونے میں ناکام۔"
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "کا رجسٹریشن %s@%s کامیاب"
@@ -4251,9 +4370,18 @@ msgstr "تصدیق کررہا ہے"
msgid "Re-initializing Stream"
msgstr "ری - انیشیئلائزینگ اسٹریم"
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr "تصدیق نہيں کیا گیا"
+msgid "Mood"
+msgstr "موڈ"
+
+msgid "Now Listening"
+msgstr ""
+
msgid "Both"
msgstr "دونوں"
@@ -4275,12 +4403,6 @@ msgstr "کوئی نہیں"
msgid "Subscription"
msgstr "سبس کریپشن"
-msgid "Mood"
-msgstr "موڈ"
-
-msgid "Now Listening"
-msgstr ""
-
#, fuzzy
msgid "Mood Text"
msgstr "بلڈ ٹائپ"
@@ -4524,18 +4646,25 @@ msgstr "%sصارف کو ٹھوکر مارنے میں ناقابل"
msgid "Unable to ping user %s"
msgstr "%sصارف کو بین کرنے میں ناقابل"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
+msgstr "آواز بجانے میں نا قابل کیونکہ منتخب کی گئی فائل(%s)موجود نہیں ہے۔"
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
+msgstr "آواز بجانے میں نا قابل کیونکہ منتخب کی گئی فائل(%s)موجود نہیں ہے۔"
-#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+#, fuzzy, c-format
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "آواز بجانے میں نا قابل کیونکہ منتخب کی گئی فائل(%s)موجود نہیں ہے۔"
+# msgstr "%s has added you [%s]"
+#, c-format
+msgid "Buzzing %s..."
+msgstr ""
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
#, fuzzy
@@ -4546,10 +4675,37 @@ msgstr "Buzz!!"
msgid "%s has buzzed you!"
msgstr ""
-# msgstr "%s has added you [%s]"
-#, c-format
-msgid "Buzzing %s..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "%sکو پیام بھیجنے میں ناقابل۔"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "%sکوفا ئل بھیجنے میں نہ قابل،صارف فائل ٹرانسفرز کو تعاون نہیں دیتا "
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr "%sکوفا ئل بھیجنے میں نہ قابل،صارف فائل ٹرانسفرز کو تعاون نہیں دیتا "
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "رجسٹریشن نا کام ہوا"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
msgstr ""
+"براہ کرم فرد کا اسکرین نام یا عرفیت داخل کریں جسےکی معلومات آپ دیکھنا پسند "
+"کرے گے۔"
+
+#, fuzzy
+msgid "Select a Resource"
+msgstr "فائل منتخب کرو"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "ابتدائی - گفتگو"
msgid "config: Configure a chat room."
msgstr "وضع:کمرہ گفتگو کو ہیئت دو۔"
@@ -4711,6 +4867,21 @@ msgstr "خامی گفتگو میں حصہ لے رہاہے %s"
msgid "Error in chat %s"
msgstr "گفتگو میں خامی%s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "فائل کھولنےکےدوران خامی واقع ہوگئی۔"
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "فائل ٹرانسفر ناکام ہوا"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr " '%s': %s كو كھولنا نا كامیاب"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr "%sکوفا ئل بھیجنے میں نہ قابل،صارف فائل ٹرانسفرز کو تعاون نہیں دیتا "
@@ -4737,10 +4908,6 @@ msgstr ""
"کرے گے۔"
#, fuzzy
-msgid "Select a Resource"
-msgstr "فائل منتخب کرو"
-
-#, fuzzy
msgid "Edit User Mood"
msgstr "صارف موڈس"
@@ -4778,9 +4945,19 @@ msgstr "ایكشن"
msgid "Select an action"
msgstr "فائل منتخب کرو"
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr " \"%s\"شامل کرنے میں ناقابل۔"
+
+msgid "Buddy Add error"
+msgstr ""
+
#, fuzzy
-msgid "Unable to retrieve MSN Address Book"
-msgstr "نوٹس ایڈریس بك منتخب كریں"
+msgid "The username specified does not exist."
+msgstr "مخصوص کیا گيا اسکرین نام معتبرنہیں ہے۔"
#, c-format
msgid "Buddy list synchronization issue in %s (%s)"
@@ -5010,7 +5187,7 @@ msgstr "بچوں کا پاسپورٹ بغیر والدین کے اجازت کے
msgid "Passport account not yet verified"
msgstr "پاسپورٹ اکاؤنٹ ابھی تک تصدیق نہیں کیا گیا"
-#, fuzzy, c-format
+#, fuzzy
msgid "Passport account suspended"
msgstr "پاسپورٹ اکاؤنٹ ابھی تک تصدیق نہیں کیا گیا"
@@ -5107,6 +5284,13 @@ msgstr "موبائل پیام بھیجو۔"
msgid "Page"
msgstr "صفحہ"
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "كام"
+
msgid "Has you"
msgstr "کیا آپ نے"
@@ -5148,6 +5332,14 @@ msgstr "برج حمل"
msgid "Album"
msgstr "Adium"
+#, fuzzy
+msgid "Game Title"
+msgstr "عنوان"
+
+#, fuzzy
+msgid "Office Title"
+msgstr "عنوان"
+
msgid "Set Friendly Name..."
msgstr "دوستانہ نام سیٹ كریں۔۔۔"
@@ -5343,8 +5535,8 @@ msgstr ""
"گائم صارف کی پروفائل میں کوئی معلومات تلاش نہیں کرسکا۔ ہو سکتا ہے کہ صارف "
"موجود نہیں ہے۔"
-msgid "Profile URL"
-msgstr "پرو فائل URL"
+msgid "View web profile"
+msgstr ""
#. *< type
#. *< ui_requirement
@@ -5599,13 +5791,6 @@ msgstr "ایڈریس بک میں ملاؤ"
msgid "Do you want to delete this buddy from your address book as well?"
msgstr "کیا آپ اس بڈی کو اپنی بڈی لسٹ میں شامل کرنا چاہتے ہیں؟"
-#. only notify the user about problems adding to the friends list
-#. * maybe we should do something else for other lists, but it probably
-#. * won't cause too many problems if we just ignore it
-#, c-format
-msgid "Unable to add \"%s\"."
-msgstr " \"%s\"شامل کرنے میں ناقابل۔"
-
#, fuzzy
msgid "The username specified is invalid."
msgstr "مخصوص کیا گيا اسکرین نام معتبرنہیں ہے۔"
@@ -5613,6 +5798,9 @@ msgstr "مخصوص کیا گيا اسکرین نام معتبرنہیں ہے۔"
msgid "This Hotmail account may not be active."
msgstr "یہ ہاٹ میل اکاؤنٹ شاید فعال نہیں ہو سکتا۔"
+msgid "Profile URL"
+msgstr "پرو فائل URL"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5626,17 +5814,13 @@ msgstr "یہ ہاٹ میل اکاؤنٹ شاید فعال نہیں ہو سکت
msgid "MSN Protocol Plugin"
msgstr "MSN پروٹو کال پلگ ان"
-#, fuzzy
-msgid "Missing Cipher"
-msgstr "صفر"
-
-msgid "The RC4 cipher could not be found"
+#, c-format
+msgid "No such user: %s"
msgstr ""
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
-msgstr ""
+#, fuzzy
+msgid "User lookup"
+msgstr "صارف کمرے"
#, fuzzy
msgid "Reading challenge"
@@ -5650,11 +5834,21 @@ msgstr "سرور سے غیر معتبر چیلینج"
msgid "Logging in"
msgstr "لاگینگ"
-#, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] ""
-msgstr[1] ""
+#, fuzzy
+msgid "MySpaceIM - No Username Set"
+msgstr "كوئی نام نہیں"
+
+msgid "You appear to have no MySpace username."
+msgstr ""
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr ""
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr ""
+"سرور كے ساتھ گم شدہ كنیكشن\n"
+"%s"
#. Can't write _()'d strings in array initializers. Workaround.
#, fuzzy
@@ -5676,15 +5870,24 @@ msgstr ""
msgid "MySpace"
msgstr ""
+# msgstr "ہاسٹ سے کنیکٹ نہیں ہو سکا"
#, fuzzy
-msgid "MySpaceIM - No Username Set"
-msgstr "كوئی نام نہیں"
+msgid "IM Friends"
+msgstr "_IM ونڈوز"
-msgid "You appear to have no MySpace username."
-msgstr ""
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+msgstr[1] ""
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
-msgstr ""
+#, fuzzy
+msgid "Add contacts from server"
+msgstr "سرور سے غیر معتبر رد عمل۔"
#. The session is now set up, ready to be connected. This emits the
#. * signedOn signal, so clients can now do anything with msimprpl, and
@@ -5707,6 +5910,22 @@ msgstr ""
msgid "MySpaceIM Error"
msgstr ""
+#, fuzzy
+msgid "Invalid input condition"
+msgstr "کنیکشن فائنل کررہا ہے"
+
+#, fuzzy
+msgid "Read buffer full (2)"
+msgstr "قطار فل"
+
+#, fuzzy
+msgid "Unparseable message"
+msgstr "پیام کی تصریف میں ناقابل"
+
+#, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr ""
+
# msgstr "پروسیس لوٹایا گيا خامی کوڈ %d"
msgid "Failed to add buddy"
msgstr ""
@@ -5717,14 +5936,6 @@ msgstr ""
msgid "persist command failed"
msgstr ""
-#, c-format
-msgid "No such user: %s"
-msgstr ""
-
-#, fuzzy
-msgid "User lookup"
-msgstr "صارف کمرے"
-
msgid "Failed to remove buddy"
msgstr ""
@@ -5735,39 +5946,16 @@ msgid "blocklist command failed"
msgstr ""
#, fuzzy
-msgid "Invalid input condition"
-msgstr "کنیکشن فائنل کررہا ہے"
-
-#, fuzzy
-msgid "Read buffer full (2)"
-msgstr "قطار فل"
-
-#, fuzzy
-msgid "Unparseable message"
-msgstr "پیام کی تصریف میں ناقابل"
+msgid "Missing Cipher"
+msgstr "صفر"
-#, c-format
-msgid "Couldn't connect to host: %s (%d)"
+msgid "The RC4 cipher could not be found"
msgstr ""
-# msgstr "ہاسٹ سے کنیکٹ نہیں ہو سکا"
-#, fuzzy
-msgid "IM Friends"
-msgstr "_IM ونڈوز"
-
-#, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-msgstr[1] ""
-
-#, fuzzy
-msgid "Add contacts from server"
-msgstr "سرور سے غیر معتبر رد عمل۔"
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
msgid "Add friends from MySpace.com"
msgstr ""
@@ -5814,9 +6002,6 @@ msgstr "بڑی فانٹ سائز"
msgid "User"
msgstr "صارف"
-msgid "Profile"
-msgstr "پروفائل"
-
#, fuzzy
msgid "Headline"
msgstr "مسترد کرنا"
@@ -5832,17 +6017,6 @@ msgstr ""
msgid "Client Version"
msgstr "مکالمہ بند کرو"
-#. Protocol won't log in now without a username set.. Disconnect
-#, fuzzy
-msgid "No username set"
-msgstr "كوئی نام نہیں"
-
-msgid "MySpaceIM - Please Set a Username"
-msgstr ""
-
-msgid "Please enter a username to check its availability:"
-msgstr ""
-
#, fuzzy
msgid "MySpaceIM - Username Available"
msgstr "سروس غیر دستیاب"
@@ -5854,6 +6028,9 @@ msgstr "%s سفیدبورڈپرپیام بھیجا۔كیاآپ سفیدبورڈ
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr ""
+msgid "MySpaceIM - Please Set a Username"
+msgstr ""
+
#, fuzzy
msgid "This username is unavailable."
msgstr "اس تھم میں اسمائلیز دستیاب نہیں۔"
@@ -5862,6 +6039,14 @@ msgstr "اس تھم میں اسمائلیز دستیاب نہیں۔"
msgid "Please try another username:"
msgstr "براہ كرم %s كے لیے نام داخل كیجیے۔"
+#. Protocol won't log in now without a username set.. Disconnect
+#, fuzzy
+msgid "No username set"
+msgstr "كوئی نام نہیں"
+
+msgid "Please enter a username to check its availability:"
+msgstr ""
+
#. TODO: icons for each zap
#. Lots of comments for translators:
#. Zap means "to strike suddenly and forcefully as if with a
@@ -6249,7 +6434,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr "خامی۔ SSL تعاون انسٹال نہیں کیا گیا ہے۔"
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr "یہ کانفرنس بند کیا جا چکا ہے۔ مزید پیاماتنہیں بھیجے جاسکتے۔"
@@ -6515,23 +6699,18 @@ msgstr "کیمرہ"
msgid "Screen Sharing"
msgstr "اسکرین کا نام"
-#, c-format
msgid "Free For Chat"
msgstr "گفتگو کے لئے فری"
-#, c-format
msgid "Not Available"
msgstr "عدم دستیاب"
-#, c-format
msgid "Occupied"
msgstr "قبضہ کیا گيا"
-#, c-format
msgid "Web Aware"
msgstr "ویب خبر داری"
-#, c-format
msgid "Invisible"
msgstr "اوجھل"
@@ -6581,7 +6760,7 @@ msgstr ""
"معتبر ہے۔اسکرین نام یا حرف کے ساتھ شروع ہونا چاہیے یا صرف حروف ،نمبرز اور "
"اسپیسیس، یا صرف نمبر سے وابستہ ہو۔"
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
#, fuzzy
msgid "Invalid username."
@@ -6598,7 +6777,7 @@ msgstr "آپ کا اکاؤنٹ فی الحال معطل کر دیا گیا ہے
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "AOLانسٹنٹ میسینجر سروس عارضی طور پر غیر دستیاب ہے۔"
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6634,13 +6813,9 @@ msgstr "ڈیجیٹل ڈسپلے سے 6ڈیجیٹ نمبر داخل کریں۔"
msgid "_OK"
msgstr "ٹھیک ہے"
-#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
-msgstr ""
-"آپ شاید مختضر وقفے کےلئے منقطع کر دیئے گئے ہوگے۔آپ کو TOC استعمال کرنی "
-"ہوگی جب تک یہ فکس نہیں ہوتی ہے۔%sاپ ڈیٹس کےلئے جانچيے۔"
+#, fuzzy, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
+msgstr "آپ كچھ دیركےلیےمنقطع ہوسكتےہیں۔اپ ڈیٹس كے لیے%sجانچیے۔"
#, fuzzy
msgid "Unable to get a valid AIM login hash."
@@ -6786,7 +6961,7 @@ msgstr[0] " آپ نے نا معلوم وجہ کےلئے %2$sسے%1$hu پیام
msgstr[1] " آپ نے نا معلوم وجہ کےلئے %2$sسے%1$hu پیامات مس کردیئے ۔"
# Data is assumed to be the destination sn
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "پیام بھیجنے میں نا قابل: %s "
@@ -6808,6 +6983,9 @@ msgstr "آن لائن جب تک "
msgid "Member Since"
msgstr "ممبر جب تک"
+msgid "Profile"
+msgstr "پروفائل"
+
msgid "Your AIM connection may be lost."
msgstr "آپ کا AIM کنیکشن کھو گیا۔"
@@ -7100,6 +7278,7 @@ msgstr "کنیکٹ"
msgid "Get AIM Info"
msgstr "AIM معلومات حاصل كریں"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "بڈی رائے مرتب کریں"
@@ -7213,7 +7392,6 @@ msgstr ""
msgid "Attempting to connect to %s:%hu."
msgstr "%s:%hu.سےكنیكٹ ہونےكی كوشش كررہاہے۔"
-#, c-format
msgid "Attempting to connect via proxy server."
msgstr " viaپراكسی سرورسےكنیكٹ ہونےكی كوشش كررہاہے۔"
@@ -7309,7 +7487,7 @@ msgstr "دیگر"
msgid "Visible"
msgstr "اوجھل"
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
#, fuzzy
@@ -7400,16 +7578,49 @@ msgstr "آخری اپ ڈیٹ"
msgid "Could not change buddy information."
msgstr "براہ كرم بڈی معلومات داخل كیجیے۔"
-#, c-format
-msgid "%d needs Q&A"
+msgid "Mobile"
+msgstr "موبائل"
+
+msgid "Note"
+msgstr "نوٹ"
+
+# msgstr "(پیام موصول ہونے میں خامی تھی۔ جس بڈی سے آپ بات کررہے تھے بہت حد تک قیاس ہے کہ کلائنٹ بگی تھا۔)"
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "بڈی آئیکن"
+
+msgid "Change his/her memo as you like"
msgstr ""
#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "بڈی ملاؤ"
+msgid "_Modify"
+msgstr "ترمیم"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "ترمیم"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "سرور مصروف"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%u requires verification"
+msgstr "مطلوبہ اتھورائزیشن "
+
+#, fuzzy
+msgid "Add buddy question"
+msgstr "آپ کی لسٹ میں بڈی ملانا ؟"
#, fuzzy
-msgid "Input answer here"
+msgid "Enter answer here"
msgstr "یہاں درخواست ان پٹ كیجیے"
msgid "Send"
@@ -7423,18 +7634,19 @@ msgid "Authorization denied message:"
msgstr "اتھارائزیشن میسیج سے انكار كیا گیا:"
#, fuzzy
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr "معاف كیجیے، آپ میرے ٹائپ كے نہیں ہے۔۔۔"
#, fuzzy, c-format
-msgid "%d needs authentication"
+msgid "%u needs authorization"
msgstr "صارف %d تصدیق چاہتا ہے"
#, fuzzy
msgid "Add buddy authorize"
msgstr "آپ کی لسٹ میں بڈی ملانا ؟"
-msgid "Input request here"
+#, fuzzy
+msgid "Enter request here"
msgstr "یہاں درخواست ان پٹ كیجیے"
msgid "Would you be my friend?"
@@ -7458,7 +7670,7 @@ msgid "Failed sending authorize"
msgstr "براہ کرم مجھے اتھورائز کریں!"
#, fuzzy, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr "گفتگو میں بڈی کی شرکت ناکام ہوئی"
#, fuzzy, c-format
@@ -7503,6 +7715,10 @@ msgid "You can only search for permanent Qun\n"
msgstr "آپ مستقل صرف QQ گروپس كی تلاش كرسكتے ہیں \n"
#, fuzzy
+msgid "(Invalid UTF-8 string)"
+msgstr "غیر معتبر پراکسی سیٹینگس"
+
+#, fuzzy
msgid "Not member"
msgstr "میں ممبر نہیں ہوں"
@@ -7545,16 +7761,19 @@ msgstr "یہ گروپ دوسروں كو جوائن كرنے كے لیے اجا
msgid "Join QQ Qun"
msgstr "گفتگو میں شرکت کریں"
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
-msgstr ""
+msgid "Input request here"
+msgstr "یہاں درخواست ان پٹ كیجیے"
+
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "آپ نے كامیابی سے Qun كی تخلیق كی ہے"
#, fuzzy
msgid "Successfully joined Qun"
msgstr "آپ نے كامیابی سے Qun كی تخلیق كی ہے"
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
msgid "QQ Qun Operation"
@@ -7564,7 +7783,7 @@ msgstr "QQ Qun آپریشن"
msgid "Failed:"
msgstr " ناکام ہوا"
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
#, fuzzy
@@ -7579,11 +7798,11 @@ msgstr ""
" یہ آپریشن اس كن كو مثالی طورپر نكالے گا۔"
#, fuzzy
-msgid "Sorry, you are not our style ..."
+msgid "Sorry, you are not our style"
msgstr "معاف كیجیے، آپ میرے ٹائپ كے نہیں ہے۔۔۔"
#, fuzzy
-msgid "Successfully changed Qun member"
+msgid "Successfully changed Qun members"
msgstr "فون نمبر"
#, fuzzy
@@ -7594,35 +7813,35 @@ msgid "You have successfully created a Qun"
msgstr "آپ نے كامیابی سے Qun كی تخلیق كی ہے"
#, fuzzy
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr "كیا آپ ابھی Qun تفصیلات سیٹ اپ كرنا پسند كرینگے"
msgid "Setup"
msgstr "سیٹ اپ "
#, fuzzy, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr "صارف %d گروپ جوائن كرنے كے لیے لاگو كیاگیا%d"
#, fuzzy, c-format
-msgid "%d request to join Qun %d"
+msgid "%u request to join Qun %u"
msgstr "صارف %d گروپ جوائن كرنے كے لیے لاگو كیاگیا%d"
#, fuzzy, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr "گفتگو میں بڈی کی شرکت ناکام ہوئی"
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr "بڈی نکالو"
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "بڈی نکالو"
#, c-format
msgid "Unknown-%d"
@@ -7739,15 +7958,22 @@ msgstr "<b>Last Refresh</b>: %s<br>\n"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<b>Current Online</b>: %d<br>\n"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<b>Last Refresh</b>: %s<br>\n"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
msgid "<i>Feel free to join us!</i> :)"
msgstr ""
-#, c-format
-msgid "About OpenQ r%s"
-msgstr ""
+#, fuzzy, c-format
+msgid "About OpenQ %s"
+msgstr "Adium"
#, fuzzy
msgid "Change Icon"
@@ -7766,6 +7992,10 @@ msgstr ""
msgid "About OpenQ"
msgstr ""
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "گھر کا ایڈریس"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7797,7 +8027,6 @@ msgstr ""
msgid "QQ2008"
msgstr ""
-#. #endif
#, fuzzy
msgid "Connect by TCP"
msgstr "کنیکٹ کررہا ہے"
@@ -7810,6 +8039,9 @@ msgstr "سرور پورٹ"
msgid "Show server news"
msgstr "سرور ایڈریس"
+msgid "Show chat room when msg comes"
+msgstr ""
+
#, fuzzy
msgid "Keep alive interval (seconds)"
msgstr "پڑھ رہا ہے خامی"
@@ -7819,11 +8051,7 @@ msgid "Update interval (seconds)"
msgstr "پڑھ رہا ہے خامی"
#, fuzzy
-msgid "Can not decrypt server reply"
-msgstr "سرور معلومات نہیں لے سکتا"
-
-#, fuzzy
-msgid "Can not decrypt get server reply"
+msgid "Cannot decrypt server reply"
msgstr "سرور معلومات نہیں لے سکتا"
#, c-format
@@ -7846,21 +8074,23 @@ msgid "Activation required"
msgstr "رجسٹریشن کی ضروت تھی"
#, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr ""
#, fuzzy
-msgid "Keep alive error"
-msgstr "پڑھ رہا ہے خامی"
+msgid "Could not decrypt server reply"
+msgstr "سرور معلومات نہیں لے سکتا"
-msgid "Requesting captcha ..."
-msgstr ""
+#, fuzzy
+msgid "Requesting captcha"
+msgstr "درخواست ڈائیلاگ"
-msgid "Checking code of captcha ..."
+msgid "Checking captcha"
msgstr ""
-msgid "Failed captcha verify"
-msgstr ""
+#, fuzzy
+msgid "Failed captcha verification"
+msgstr "Yahooناکام!تصدیق"
#, fuzzy
msgid "Captcha Image"
@@ -7870,7 +8100,7 @@ msgstr "امیج محفوظ کرو"
msgid "Enter code"
msgstr "خفیہ لفظ داخل کرو"
-msgid "QQ Captcha Verifing"
+msgid "QQ Captcha Verification"
msgstr ""
#, fuzzy
@@ -7878,30 +8108,21 @@ msgid "Enter the text from the image"
msgstr "گروپ كا نام داخل كیجیے۔"
#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
+msgid "Unknown reply when checking password (0x%02X)"
msgstr ""
#, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
msgstr ""
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "کنیکٹ ہونے میں ناقابل۔"
msgid "Socket error"
msgstr "ساكیٹ خامی"
-#, fuzzy, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr ""
-"سرور كے ساتھ كنیكشن گم ہوا:\n"
-"%s"
-
msgid "Unable to read from socket"
msgstr " ساكیٹ سے پڑھنا ناممكن"
@@ -7913,11 +8134,11 @@ msgid "Connection lost"
msgstr "كنیكشن گم ہوگیا!"
#, fuzzy
-msgid "Get server ..."
+msgid "Getting server"
msgstr "صارف معلومات سیٹ کرو۔۔۔"
#, fuzzy
-msgid "Request token"
+msgid "Requesting token"
msgstr "درخواست انکار کی گئی"
msgid "Couldn't resolve host"
@@ -7928,16 +8149,13 @@ msgid "Invalid server or port"
msgstr "غیر معتبر خامی"
#, fuzzy
-msgid "Connecting server ..."
-msgstr "سرور کو کنیکٹ کرو"
+msgid "Connecting to server"
+msgstr " SILC سرور سے کنیکٹ کررہا ہے"
#, fuzzy
msgid "QQ Error"
msgstr "QQid خامی"
-msgid "Failed to send IM."
-msgstr ""
-
#, fuzzy, c-format
msgid ""
"Server News:\n"
@@ -7947,6 +8165,10 @@ msgid ""
msgstr "ICQسرور ری لے"
#, fuzzy, c-format
+msgid "%s:%s"
+msgstr "%s (%s)"
+
+#, fuzzy, c-format
msgid "From %s:"
msgstr "سے"
@@ -7956,32 +8178,30 @@ msgid ""
"%s"
msgstr "سرورہدایات:%s"
-msgid "Unknow SERVER CMD"
-msgstr ""
+#, fuzzy
+msgid "Unknown SERVER CMD"
+msgstr "نا معلوم وجہ"
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
#, fuzzy
msgid "QQ Qun Command"
msgstr "کمانڈ "
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr ""
-
-msgid "Can not decrypt login reply"
-msgstr ""
+#, fuzzy
+msgid "Could not decrypt login reply"
+msgstr "سرور معلومات نہیں لے سکتا"
#, fuzzy
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr "نا معلوم وجہ"
#, fuzzy
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr "نا معلوم وجہ"
#, c-format
@@ -8804,9 +9024,6 @@ msgstr "تنظیم"
msgid "Unit"
msgstr " یونٹ"
-msgid "Note"
-msgstr "نوٹ"
-
msgid "Join Chat"
msgstr "گفتگو میں شرکت کریں"
@@ -9461,6 +9678,10 @@ msgstr "ہوسٹ نام ریزولو نہيں كیا جاسكتا"
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr "SIPاسكرین نام وائٹ اسپیسیس ركھتا ہے یا@ علامتیں"
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "سرور پورٹ"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -9495,192 +9716,10 @@ msgid "Auth Domain"
msgstr "مستندڈومین"
#, c-format
-msgid "Looking up %s"
-msgstr "لوکینگ اپ %s"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "%sسے کنیکٹ میں ناکام"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "سائن آن:%s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "فائل %sلکھنے میں نا قابل۔"
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "فائل %sپڑھنے میں نا قابل۔"
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "پیام بہت طویل ،آخری %sبائٹس پرن کیٹ کی ہوئی۔"
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%sفی الحال لاگ ان نہیں کیا گیا۔"
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "%sکی آگہی کی اجازت نہیں۔"
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "پیام گرایا جا چکا ہے،آپ سرور رفتار حد سے آگے گذر رہے ہیں۔"
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "%sمیں گفتگو دستیاب نہیں ہے۔"
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "آپ %sکو بہت تیزی پیامات بھیج رہے ہیں۔ "
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "آپ نے%sسے IMکھو دیا کیونکہ یہ بہت طویل تھا۔"
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "آپ نےIMکھ دیا ہے %s سے کیونکہ یہ بہت تیزی سے بھیجا گیا۔"
-
-#, c-format
-msgid "Failure."
-msgstr "ناکام۔"
-
-#, c-format
-msgid "Too many matches."
-msgstr "بہت زیادہ مماثلات۔"
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "مزید کولیفائر کی ضرورت۔"
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "براہ راست سروس عارضی طور پر غیر دستیاب۔"
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "Email پابند دكھائی دیتاہے۔"
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "کلیدی لفظ نظر انداز کردیاگیا ۔"
-
-#, c-format
-msgid "No keywords."
-msgstr "کوئی کلیدی الفاظ نہیں۔"
-
-#, c-format
-msgid "User has no directory information."
-msgstr "صارف کے پاس کوئی ڈائریکٹری معلومات نہیں۔"
-
-#, c-format
-msgid "Country not supported."
-msgstr "ملک معاون نہیں۔"
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "ناکامی نامعلوم:%s۔"
-
-#, fuzzy, c-format
-msgid "Incorrect username or password."
-msgstr "غیر صحیح اسكرین نام یا پاس ورڈ۔"
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "یہ سروس عارضی طور پر غیر دستیاب ہے۔"
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "آپ کی حالیہ آگہی لاگ کرنے کے لئے بہت اونچی ہے۔"
-
-#, c-format
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
+msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
-"آپ بہت تویزی سے کنیکٹ اور منقطع ہوتے ہیں۔ دس ممنٹس تک انتظار کریں اور دوبارہ "
-"کوشش کریں۔ اگر آپ کوشش کرنا جاری رکھتے ہیں، تو آپ کو اور دیر تک انتظار کرنے "
-"کی ضرورت ہوگي۔"
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "سائن پر نا معلوم خامی واقع ہوگئی:%s۔"
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "نا معلوم خامی،%d، واقع ہوگئی۔معلومات:%s"
-
-msgid "Invalid Groupname"
-msgstr "غیر معتبر گروپ نام"
-
-msgid "Connection Closed"
-msgstr "کنیکشن بند ہوگیا"
-msgid "Waiting for reply..."
-msgstr "جوابی کاروائی کے لئے انتظار کررہا ہے۔۔۔"
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "TOCاس کی رکاوٹ سے واپس آگیا۔ اب آپ دوبارہ پیامات بھیج سکتے ہیں۔"
-
-msgid "Password Change Successful"
-msgstr "خفیہ لفظ کامیابی سے تبدیل"
-
-msgid "_Group:"
-msgstr "گروپ:"
-
-msgid "Get Dir Info"
-msgstr "ڈائریکٹری معلومات لو"
-
-msgid "Set Dir Info"
-msgstr "ڈائریکٹری معلومات سیٹ کرو"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "لکھنے کے لئے %s کھول نہیں سکا!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "فائل ٹرانسفر ناکام ہوا؛یا ممکن ہے دوسری حانب منسوخ ہوا ہے۔"
-
-msgid "Could not connect for transfer."
-msgstr "ٹرانسفر کے لئے کنیکٹ نہیں ہو سکا۔"
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "فائل کا بالائی حاشیہ نہیں لکھ سکا۔ فائل ٹرانسفر نہیں ہوگي۔"
-
-#, fuzzy
-msgid "Save As..."
-msgstr "آئیکن محفوظ کرو جیسے۔۔۔"
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s درخواست کرتا ہے %s قبول کرنے کے لئے%d فائل: %s (%.2f %s)%s%s"
-msgstr[1] "%s درخواست کرتا ہے %s قبول کرنے کے لئے%d فائلیں: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "TOCپروٹو کول پلگ ان"
-
-#, c-format
-msgid "%s has sent you a webcam invite, which is not yet supported."
+msgid "Your SMS was not delivered"
msgstr ""
msgid "Your Yahoo! message did not get sent."
@@ -9955,13 +9994,9 @@ msgstr "کول لنک 3"
msgid "Last Update"
msgstr "آخری اپ ڈیٹ"
-#, c-format
-msgid "User information for %s unavailable"
-msgstr "%sغیر دستیاب کے لئے صارف معلومات"
-
+#, fuzzy
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr ""
"سوری،یہ پروفائل شاید زبان كا یا فارمیٹ كا لگتا ہے جو اس وقت معاون نہیں ہے۔ "
@@ -10295,9 +10330,6 @@ msgstr "ڈسٹرب مت کرو"
msgid "Extended away"
msgstr " "
-msgid "Mobile"
-msgstr "موبائل"
-
msgid "Listening to music"
msgstr ""
@@ -10340,18 +10372,6 @@ msgstr "+++ %s بیكارنہیں ہوا ہے"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr " %sخامی پڑھ رہا ہے"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-" آپکا %s پڑھتے وقت ایک خامی اچانک واقع ہوگئی تھی۔وہ ابھی تک لوڈ نہیں کيے گئے "
-"ہے ، اور پرانی فائل کو%s~ دوبارہ نام دیا گیا "
-
msgid "Calculating..."
msgstr "شمارکررہا ہے۔۔۔"
@@ -10427,6 +10447,12 @@ msgstr ""
msgid "Unable to connect to %s: %s"
msgstr ""
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr "سرور کو ضرورت ہے TLS/SSL لاگ ان کے لئے۔ کوئی TLS/SSL تعاون نہیں ملا۔"
+
#, c-format
msgid " - %s"
msgstr ""
@@ -10460,6 +10486,18 @@ msgstr "رابطہ دوبارہ سیٹ كیا گیا"
msgid "Address already in use."
msgstr "یہ گفتگو نام پہلے سے استعمال میں"
+#, c-format
+msgid "Error Reading %s"
+msgstr " %sخامی پڑھ رہا ہے"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+" آپکا %s پڑھتے وقت ایک خامی اچانک واقع ہوگئی تھی۔وہ ابھی تک لوڈ نہیں کيے گئے "
+"ہے ، اور پرانی فائل کو%s~ دوبارہ نام دیا گیا "
+
# msgstr "ہوسٹ سےكنیكٹ ہونے میں نااہل"
msgid "Internet Messenger"
msgstr "ا نٹرنیٹ میسینجر"
@@ -10509,10 +10547,8 @@ msgstr "نئی میل اطلاعات"
msgid "Use this buddy _icon for this account:"
msgstr "اس اكاؤنٹ كے لیے بڈی اكاؤنٹس استعمال كیجیے:"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%sآپشنس"
+msgid "_Advanced"
+msgstr "_ایڈوانسڈ"
msgid "Use GNOME Proxy Settings"
msgstr "GNOME پراكسی سیٹینگس استعمال كیجیے"
@@ -10547,9 +10583,6 @@ msgstr "اگر آپ حقیقت میں قریب سے دیکھتے ہیں"
msgid "you can see the butterflies mating"
msgstr "آپ تتلیوں کی میٹینگ دیکھ سکتے ہیں"
-msgid "Proxy Options"
-msgstr "پراکسی آپشنس"
-
msgid "Proxy _type:"
msgstr "پراکسی - ٹائپ:"
@@ -10578,8 +10611,9 @@ msgstr "_بیسك"
msgid "Create _this new account on the server"
msgstr ""
-msgid "_Advanced"
-msgstr "_ایڈوانسڈ"
+#, fuzzy
+msgid "_Proxy"
+msgstr "پراكسی"
msgid "Enabled"
msgstr "قابل مجازکیا"
@@ -10654,6 +10688,17 @@ msgid "I_M"
msgstr "I_M"
#, fuzzy
+msgid "_Audio Call"
+msgstr "_گفتگو ملائیں"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "وڈیو گفتگو"
+
+#, fuzzy
msgid "_Send File..."
msgstr "_ فائل بھیجو"
@@ -10805,6 +10850,10 @@ msgstr "/Tools/Buddy _Pounces"
msgid "/Tools/_Certificates"
msgstr "/ٹولس/ترجیحات"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/ٹولس/پرایوسی"
+
msgid "/Tools/Plu_gins"
msgstr "/Tools/Plu_gins"
@@ -10814,10 +10863,6 @@ msgstr "/ٹولس/ترجیحات"
msgid "/Tools/Pr_ivacy"
msgstr "/ٹولس/پرایوسی"
-#, fuzzy
-msgid "/Tools/Smile_y"
-msgstr "/ٹولس/پرایوسی"
-
msgid "/Tools/_File Transfers"
msgstr "/ٹولس/ _فائل ٹرانسفرس"
@@ -10939,8 +10984,8 @@ msgstr "مینیولی"
msgid "By status"
msgstr "سے اسٹیٹس"
-msgid "By log size"
-msgstr "لاگ سائز کے ذریعے"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10958,6 +11003,9 @@ msgstr ""
msgid "Re-enable"
msgstr "دوبارہ مجاز كیاگیا اكاؤنٹ"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr ""
@@ -11056,6 +11104,9 @@ msgstr ""
msgid "A_lias:"
msgstr "عرفیت:"
+msgid "_Group:"
+msgstr "گروپ:"
+
msgid "Auto_join when account becomes online."
msgstr ""
@@ -11111,14 +11162,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr "بڈی کو کمرہ گفتگو میں مدعو کریں"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"براہ کرمصارف کا نام داخل کریں جسے آپ مدعو کرنا چاہتےہیں، آپشنل دعوتی پیام کے "
-"ساتھ۔"
-
msgid "_Buddy:"
msgstr "بڈی:"
@@ -11194,6 +11237,22 @@ msgstr "/مکالمہ/_محفوظ کرو جیسے..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Conversation/Clea_r Scrollback"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/گفتگو/M_ore"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/گفتگو/M_ore"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/گفتگو/M_ore"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/مکالمہ/لاگ_منظر..."
+
msgid "/Conversation/Se_nd File..."
msgstr "/مکالمہ/فائل بھیجو..."
@@ -11268,6 +11327,18 @@ msgstr "/گفتگو"
msgid "/Conversation/View Log"
msgstr "/مکالمہ/لاگ دیکھو"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/گفتگو/مزید"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/مکالمہ/لاگ دیکھو"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/گفتگو/مزید"
+
msgid "/Conversation/Send File..."
msgstr "/مکالمہ/فائل بھیجو۔۔۔"
@@ -11453,6 +11524,9 @@ msgstr "برج حمل"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "تعاون"
@@ -11596,6 +11670,10 @@ msgstr " جارجئین"
msgid "Ubuntu Georgian Translators"
msgstr ""
+#, fuzzy
+msgid "Khmer"
+msgstr "دیگر"
+
msgid "Kannada"
msgstr ""
@@ -11619,6 +11697,10 @@ msgid "Macedonian"
msgstr "میسی ڈونین"
#, fuzzy
+msgid "Mongolian"
+msgstr "میسی ڈونین"
+
+#, fuzzy
msgid "Bokmål Norwegian"
msgstr "نارویائی"
@@ -11727,9 +11809,27 @@ msgid ""
"<BR><BR>"
msgstr ""
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+# msgstr "گائم AIM, MSN, Yahoo!, كو استعمال كرتے ہوئے ایك ماڈیولر میسیجینگ كلائںٹ كیبل ہے ۔Jabber, ICQ, IRC, SILC, SIP/SIMPLE, ناول گروپ وائس، لوٹس مشابہ ٹائم،بونزور، زیفیر،گڈو گڈو، اورQQایك بار میں ۔یہ GTK+.<BR><BR> استعمال كرتے ہوئے لكھا جاتا ہے آپ ترمیم كرینگے اور پروگرام كوGPL شرطوں كے ماتحٹ دوبارہ تقسیم كرینگے (version 2 or later).GPLكی ایك كاپی 'COPYING' فائل میں ركھتی ہے گائم سے تقسیم كی جاتی ہے۔ گائم اسے شراكت داروں سے كاپی رائٹیڈ ہے ۔ شراكت داروں كی مكمل فہرست كے لیے گائم كی 'COPYRIGHT' فائل دیكھیے۔ ہم اس پروگرام كے لیے كوئي وارنٹی مہیا نہیں كرتے ہیں ۔<BR><BR>"
+#, fuzzy, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"4\">IRC:</FONT> #Pidgin on irc.freenode.net<BR><BR>"
+
# msgstr "گائم AIM, MSN, Yahoo!, كو استعمال كرتے ہوئے ایك ماڈیولر میسیجینگ كلائںٹ كیبل ہے ۔Jabber, ICQ, IRC, SILC, SIP/SIMPLE, ناول گروپ وائس، لوٹس مشابہ ٹائم،بونزور، زیفیر،گڈو گڈو، اورQQایك بار میں ۔یہ GTK+.<BR><BR> استعمال كرتے ہوئے لكھا جاتا ہے آپ ترمیم كرینگے اور پروگرام كوGPL شرطوں كے ماتحٹ دوبارہ تقسیم كرینگے (version 2 or later).GPLكی ایك كاپی 'COPYING' فائل میں ركھتی ہے گائم سے تقسیم كی جاتی ہے۔ گائم اسے شراكت داروں سے كاپی رائٹیڈ ہے ۔ شراكت داروں كی مكمل فہرست كے لیے گائم كی 'COPYRIGHT' فائل دیكھیے۔ ہم اس پروگرام كے لیے كوئي وارنٹی مہیا نہیں كرتے ہیں ۔<BR><BR>"
#, fuzzy, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"4\">IRC:</FONT> #Pidgin on irc.freenode.net<BR><BR>"
msgid "Current Developers"
@@ -12052,15 +12152,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr "نئی میل اطلاعات"
-msgid "_Copy Email Address"
-msgstr "_ای -میل ایڈریس نقل کریں"
-
-msgid "_Open Link in Browser"
-msgstr "_براؤزر میں لنک کھولو"
-
-msgid "_Copy Link Location"
-msgstr "_لنک لوکیشن نقل کریں"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12331,6 +12422,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12356,6 +12448,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12413,11 +12506,27 @@ msgstr ""
msgid "Pidgin"
msgstr "پیگینگ"
-msgid "Open All Messages"
-msgstr "تمام پیامات كھولیں"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "شمارکررہا ہے۔۔۔"
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -12447,6 +12556,27 @@ msgid ""
msgstr ""
"'مینیول'براؤزر کمانڈ منتخب کئے گئے ہیں، لیکن کوئی کمانڈ سیٹ نہیں کیا گيا ۔"
+msgid "Open All Messages"
+msgstr "تمام پیامات كھولیں"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "نیا بڈی پانس"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "نا معلوم پیام"
+
msgid "The following plugins will be unloaded."
msgstr "مندرجہ ذیل پلگ انس لوڈنہیں كيےجائےگے۔"
@@ -12501,6 +12631,10 @@ msgstr "<b>Plugin Details</b>"
msgid "Select a file"
msgstr "فائل منتخب کرو"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "بڈی پانس مرتب کرو"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "كس پرجھپٹنا"
@@ -12572,6 +12706,50 @@ msgstr "_تكرار"
msgid "Pounce Target"
msgstr "جھپٹنے كا ٹارگیٹ"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "Starts _typing"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "P_auses while typing"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "Si_gns on"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s سست ہونے سے لوٹ آیا(%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "Ret_urns from away"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "ٹائپینگ رك گئی"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "Signs o_ff"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "Becomes _idle"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "جب دور ہو"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr " پیام_ بھیجو"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "نا معلوم پانس واقعہ۔ براہ کرم اس کی رپورٹ کریں!"
+
msgid "Smiley theme failed to unpack."
msgstr "اسماںلی تھیم ان پیك كرنے میں ناكام"
@@ -12595,6 +12773,12 @@ msgstr ""
msgid "Cl_ose conversations with the Escape key"
msgstr "کے ساتھ مکالمہ %s"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "دوست فہرست"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "سسٹم ٹرے آئيکن"
@@ -12711,9 +12895,6 @@ msgstr ""
msgid "Cannot start browser configuration program."
msgstr "صارف معلومات نہیں مل سکتی"
-msgid "ST_UN server:"
-msgstr "ST_UNسرور:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">Example: stunserver.org</span>"
@@ -12738,6 +12919,10 @@ msgstr "_پورٹ شروع كریں:"
msgid "_End port:"
msgstr "_پورٹ ختم كریں:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
#, fuzzy
msgid "Proxy Server &amp; Browser"
msgstr "پروکسی سرور"
@@ -12767,6 +12952,10 @@ msgstr "پروکسی سرور"
msgid "No proxy"
msgstr "_پروکسی نہیں"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "_صارف :"
@@ -12931,13 +13120,13 @@ msgstr "جب دونوں دور اور سست ہو"
msgid "Auto-away"
msgstr "خود کار_دور"
-msgid "Change status when _idle"
-msgstr "اسٹیٹس تبدیل كریںwhen _idle"
-
#, fuzzy
msgid "_Minutes before becoming idle:"
msgstr "سیٹینگ کرنے سے پہلے منٹس:"
+msgid "Change status when _idle"
+msgstr "اسٹیٹس تبدیل كریںwhen _idle"
+
msgid "Change _status to:"
msgstr "كےلیےاسٹیٹس_تبدیل كریں"
@@ -13088,6 +13277,12 @@ msgstr "Sa_ve & استعمال كریں"
msgid "Status for %s"
msgstr " %sكےلیےاسٹیٹس"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
#, fuzzy
msgid "Custom Smiley"
msgstr "اسمائلی داخل کرو"
@@ -13098,15 +13293,15 @@ msgstr ""
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
+msgstr ""
+
#, fuzzy
msgid "Duplicate Shortcut"
msgstr "ڈوپلیکیٹ اصلاح"
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
-msgstr ""
-
#, fuzzy
msgid "Please select an image for the smiley."
msgstr " براہ كرم اسٹیٹس كے لیے ایك نا خالی عنوان داخل كیجیے۰"
@@ -13120,17 +13315,22 @@ msgid "Add Smiley"
msgstr "مسکرایئے!"
#, fuzzy
-msgid "Smiley _Image"
+msgid "_Image:"
msgstr "امیج محفوظ کرو"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr ""
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "پورٹ"
#, fuzzy
msgid "Smiley"
msgstr "مسکرایئے!"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "پورٹ"
+
msgid "Custom Smiley Manager"
msgstr ""
@@ -13265,6 +13465,16 @@ msgid ""
"Failed to load image '%s': reason not known, probably a corrupt image file"
msgstr "امیج لوڈ كرنا نا كامیاب '%s': وجوہات نہیں ملی، شاید كرپٹ امیج فائل"
+#, fuzzy
+msgid "_Open Link"
+msgstr "_میں لنک کھولو:"
+
+msgid "_Copy Link Location"
+msgstr "_لنک لوکیشن نقل کریں"
+
+msgid "_Copy Email Address"
+msgstr "_ای -میل ایڈریس نقل کریں"
+
msgid "Save File"
msgstr "فائل محفوظ كریں"
@@ -14278,9 +14488,6 @@ msgstr " _ دوست فہرست ونڈو اوپر رکھو:"
msgid "Only when docked"
msgstr "صرف جب ڈاک کیا گیا"
-msgid "_Flash window when chat messages are received"
-msgstr "_فلیش ونڈو جب چیٹ میسیجیس وصول كئے جاتے ہیں "
-
#, fuzzy
msgid "Windows Pidgin Options"
msgstr "لاگ ان آپشنس"
@@ -14333,6 +14540,222 @@ msgstr ""
msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr ""
+#, fuzzy
+#~ msgid "Invite message"
+#~ msgstr "پیام میں داخل کرو"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "براہ کرمصارف کا نام داخل کریں جسے آپ مدعو کرنا چاہتےہیں، آپشنل دعوتی پیام "
+#~ "کے ساتھ۔"
+
+#, fuzzy
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "نوٹس ایڈریس بك منتخب كریں"
+
+#~ msgid ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+#~ msgstr ""
+#~ "آپ شاید مختضر وقفے کےلئے منقطع کر دیئے گئے ہوگے۔آپ کو TOC استعمال کرنی "
+#~ "ہوگی جب تک یہ فکس نہیں ہوتی ہے۔%sاپ ڈیٹس کےلئے جانچيے۔"
+
+#, fuzzy
+#~ msgid "Add buddy Q&A"
+#~ msgstr "بڈی ملاؤ"
+
+#, fuzzy
+#~ msgid "Can not decrypt get server reply"
+#~ msgstr "سرور معلومات نہیں لے سکتا"
+
+#, fuzzy
+#~ msgid "Keep alive error"
+#~ msgstr "پڑھ رہا ہے خامی"
+
+#, fuzzy
+#~ msgid ""
+#~ "Lost connection with server:\n"
+#~ "%d, %s"
+#~ msgstr ""
+#~ "سرور كے ساتھ كنیكشن گم ہوا:\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Connecting server ..."
+#~ msgstr "سرور کو کنیکٹ کرو"
+
+#~ msgid "Looking up %s"
+#~ msgstr "لوکینگ اپ %s"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "%sسے کنیکٹ میں ناکام"
+
+#~ msgid "Signon: %s"
+#~ msgstr "سائن آن:%s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "فائل %sلکھنے میں نا قابل۔"
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "فائل %sپڑھنے میں نا قابل۔"
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "پیام بہت طویل ،آخری %sبائٹس پرن کیٹ کی ہوئی۔"
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%sفی الحال لاگ ان نہیں کیا گیا۔"
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "%sکی آگہی کی اجازت نہیں۔"
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr "پیام گرایا جا چکا ہے،آپ سرور رفتار حد سے آگے گذر رہے ہیں۔"
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "%sمیں گفتگو دستیاب نہیں ہے۔"
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "آپ %sکو بہت تیزی پیامات بھیج رہے ہیں۔ "
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "آپ نے%sسے IMکھو دیا کیونکہ یہ بہت طویل تھا۔"
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr "آپ نےIMکھ دیا ہے %s سے کیونکہ یہ بہت تیزی سے بھیجا گیا۔"
+
+#~ msgid "Failure."
+#~ msgstr "ناکام۔"
+
+#~ msgid "Too many matches."
+#~ msgstr "بہت زیادہ مماثلات۔"
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "مزید کولیفائر کی ضرورت۔"
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "براہ راست سروس عارضی طور پر غیر دستیاب۔"
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "Email پابند دكھائی دیتاہے۔"
+
+#~ msgid "Keyword ignored."
+#~ msgstr "کلیدی لفظ نظر انداز کردیاگیا ۔"
+
+#~ msgid "No keywords."
+#~ msgstr "کوئی کلیدی الفاظ نہیں۔"
+
+#~ msgid "User has no directory information."
+#~ msgstr "صارف کے پاس کوئی ڈائریکٹری معلومات نہیں۔"
+
+#~ msgid "Country not supported."
+#~ msgstr "ملک معاون نہیں۔"
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "ناکامی نامعلوم:%s۔"
+
+#, fuzzy
+#~ msgid "Incorrect username or password."
+#~ msgstr "غیر صحیح اسكرین نام یا پاس ورڈ۔"
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "یہ سروس عارضی طور پر غیر دستیاب ہے۔"
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "آپ کی حالیہ آگہی لاگ کرنے کے لئے بہت اونچی ہے۔"
+
+#~ 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 ""
+#~ "آپ بہت تویزی سے کنیکٹ اور منقطع ہوتے ہیں۔ دس ممنٹس تک انتظار کریں اور "
+#~ "دوبارہ کوشش کریں۔ اگر آپ کوشش کرنا جاری رکھتے ہیں، تو آپ کو اور دیر تک "
+#~ "انتظار کرنے کی ضرورت ہوگي۔"
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "سائن پر نا معلوم خامی واقع ہوگئی:%s۔"
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "نا معلوم خامی،%d، واقع ہوگئی۔معلومات:%s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "غیر معتبر گروپ نام"
+
+#~ msgid "Connection Closed"
+#~ msgstr "کنیکشن بند ہوگیا"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "جوابی کاروائی کے لئے انتظار کررہا ہے۔۔۔"
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "TOCاس کی رکاوٹ سے واپس آگیا۔ اب آپ دوبارہ پیامات بھیج سکتے ہیں۔"
+
+#~ msgid "Password Change Successful"
+#~ msgstr "خفیہ لفظ کامیابی سے تبدیل"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "ڈائریکٹری معلومات لو"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "ڈائریکٹری معلومات سیٹ کرو"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "لکھنے کے لئے %s کھول نہیں سکا!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr "فائل ٹرانسفر ناکام ہوا؛یا ممکن ہے دوسری حانب منسوخ ہوا ہے۔"
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "ٹرانسفر کے لئے کنیکٹ نہیں ہو سکا۔"
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "فائل کا بالائی حاشیہ نہیں لکھ سکا۔ فائل ٹرانسفر نہیں ہوگي۔"
+
+#, fuzzy
+#~ msgid "Save As..."
+#~ msgstr "آئیکن محفوظ کرو جیسے۔۔۔"
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s درخواست کرتا ہے %s قبول کرنے کے لئے%d فائل: %s (%.2f %s)%s%s"
+#~ msgstr[1] ""
+#~ "%s درخواست کرتا ہے %s قبول کرنے کے لئے%d فائلیں: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "TOCپروٹو کول پلگ ان"
+
+#~ msgid "User information for %s unavailable"
+#~ msgstr "%sغیر دستیاب کے لئے صارف معلومات"
+
+#~ msgid "%s Options"
+#~ msgstr "%sآپشنس"
+
+#~ msgid "Proxy Options"
+#~ msgstr "پراکسی آپشنس"
+
+#~ msgid "By log size"
+#~ msgstr "لاگ سائز کے ذریعے"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_براؤزر میں لنک کھولو"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "ST_UNسرور:"
+
+#, fuzzy
+#~ msgid "Smiley _Image"
+#~ msgstr "امیج محفوظ کرو"
+
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "_فلیش ونڈو جب چیٹ میسیجیس وصول كئے جاتے ہیں "
+
#~ msgid "A group with the name already exists."
#~ msgstr "گروپ نام كے ساتھ پہلے ہی سے موجود ہے۔"
@@ -14423,13 +14846,6 @@ msgstr ""
#~ msgid "Do you want to approve the request?"
#~ msgstr " كیا آپ درخواست كو وانا چاہتے ہیں ؟"
-#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr "%s (%s)"
-
#~ msgid "System Message"
#~ msgstr "سسٹم میسیج"
diff --git a/po/vi.po b/po/vi.po
index 8548ebbaf3..98e4538b34 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -12,7 +12,7 @@ msgid ""
msgstr ""
"Project-Id-Version: CVS Version of Pidgin\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
+"POT-Creation-Date: 2009-04-30 10:40-0400\n"
"PO-Revision-Date: 2008-06-22 21:58+0930\n"
"Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
"Language-Team: Vietnamese <vi-VN@googlegroups.com>\n"
@@ -31,13 +31,13 @@ msgstr "Finch"
msgid "%s. Try `%s -h' for more information.\n"
msgstr "%s. Chạy '%s -h' để biết thêm thông tin.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -611,19 +611,6 @@ msgstr ""
msgid "Send To"
msgstr "Gửi cho"
-msgid "Invite message"
-msgstr "Lời mời"
-
-msgid "Invite"
-msgstr "Mời"
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Hãy nhập tên người dùng mà bạn muốn mời,\n"
-"kèm theo lời mời tùy ý."
-
msgid "Conversation"
msgstr "Cuộc thoại"
@@ -881,6 +868,41 @@ msgstr "Mọi cuộc trao đổi"
msgid "System Log"
msgstr "Sổ theo dõi hệ thống"
+#, fuzzy
+msgid "Calling ... "
+msgstr "Đang tính toán..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "Chấp nhận"
+
+msgid "Reject"
+msgstr "Từ chối"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "Bạn rời khỏi kênh %s%s"
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "Thư điện tử"
@@ -914,6 +936,9 @@ msgstr "Tiếp tục"
msgid "IM"
msgstr "Tin nhắn"
+msgid "Invite"
+msgstr "Mời"
+
msgid "(none)"
msgstr "(không có)"
@@ -1115,7 +1140,6 @@ msgstr "%s đã đi vắng. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s đã gửi tin nhẳn cho bạn. (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "Dữ kiện thông báo không rõ. Hãy ghi báo cáo việc này!"
@@ -1161,7 +1185,6 @@ msgstr "Số phút trước khi thay đổi trạng thái"
msgid "Change status to"
msgstr "Đổi trạng thái thành"
-#. Conversations
msgid "Conversations"
msgstr "Cuộc thoại"
@@ -1485,7 +1508,6 @@ msgstr ""
"Khi bắt đầu cuộc thoại mới, phần bổ sung này sẽ chèn cuộc thoại cuối cùng "
"vào cuộc thoại hiện thời."
-#, c-format
msgid "Online"
msgstr "Trực tuyến"
@@ -1531,6 +1553,28 @@ msgstr "GntLastlog"
msgid "Lastlog plugin."
msgstr "Phần bổ sung lastlog."
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL điệu"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "tài khoản"
@@ -1631,13 +1675,6 @@ msgstr "Chấp nhận chứng nhận cho %s không?"
msgid "SSL Certificate Verification"
msgstr "Thẩm tra chứng nhận SSL"
-#. Number of actions
-msgid "Accept"
-msgstr "Chấp nhận"
-
-msgid "Reject"
-msgstr "Từ chối"
-
msgid "_View Certificate..."
msgstr "_Xem chứng nhận..."
@@ -1784,6 +1821,16 @@ msgstr "%s rời phòng."
msgid "%s left the room (%s)."
msgstr "%s rời phòng (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Mời vào hội thảo"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr "Hãy nhập tên người dùng mà bạn muốn mời, kèm theo lời mời tùy ý."
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "Không lấy được kết nối: %s"
@@ -1918,7 +1965,6 @@ msgstr "Đang bắt đầu truyền %s từ %s"
msgid "Transfer of file %s complete"
msgstr "Đã truyền xong tập tin %s"
-#, c-format
msgid "File transfer complete"
msgstr "Đã truyền xong tập tin"
@@ -1926,7 +1972,6 @@ msgstr "Đã truyền xong tập tin"
msgid "You canceled the transfer of %s"
msgstr "Bạn đã thôi truyền %s"
-#, c-format
msgid "File transfer cancelled"
msgstr "Tiến trình truyền tập tin bị thôi."
@@ -2134,7 +2179,6 @@ msgstr "(%s) %s <Trả Lời-Tự Động>: %s\n"
msgid "You are using %s, but this plugin requires %s."
msgstr "Bạn đang sử dụng %s, còn phần bổ sung này cần thiết %s."
-#, c-format
msgid "This plugin has not defined an ID."
msgstr "Phần bổ sung này chưa xác định mã ID."
@@ -2628,6 +2672,32 @@ msgstr "Lưu tin nhẳn ngoại tuyến trong thông báo"
msgid "Do not ask. Always save in pounce."
msgstr "Đừng hỏi. Luôn luôn lưu trong thông báo."
+#, fuzzy
+msgid "One Time Password"
+msgstr "Nhập mật khẩu"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2835,7 +2905,6 @@ msgid ""
"Unable to establish connection with the local mDNS server. Is it running?"
msgstr "Không thể thiết lập kết nối đến máy phục vụ mDNS cục bộ. Nó chạy chưa?"
-#. Creating the options for the protocol
msgid "First name"
msgstr "Tên"
@@ -2867,6 +2936,11 @@ msgstr "Phần bổ sung giao thức Bonjour"
msgid "Purple Person"
msgstr "Người Purple"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "Nơi ở"
+
# Đây là tên của giao thức Apple: đừng dịch.
msgid "Bonjour"
msgstr "Bonjour"
@@ -3024,13 +3098,13 @@ msgstr "Chọn cuộc chát cho bạn thân: %s"
msgid "Add to chat..."
msgstr "Thêm vào chát..."
+#. Global
msgid "Available"
msgstr "Có mặt"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "Vắng mặt"
@@ -3373,6 +3447,17 @@ msgstr ""
"Tên tài khoản bạn chọn bị mày chủ từ chối. Có thể vì tên này có chứa các ký "
"tự không hợp lệ."
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "Tên chát này đang được dùng"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Tên hiệu"
+
msgid "Cannot change nick"
msgstr "Không thể thay đổi tên hiệu"
@@ -3647,6 +3732,41 @@ msgstr "Kiểm tra từ máy phục vụ không hợp lệ"
msgid "SASL error"
msgstr "Lỗi SASL"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "Không nêu lý do."
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "Phiên bản không được hỗ trợ"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"Không thể thiết lập kết nối đến máy phục vụ :\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"Không thể thiết lập kết nối đến máy phục vụ :\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "Không thể khởi tạo kết nối"
+
+msgid "Unable to create socket"
+msgstr "Không thể tạo ổ cắm"
+
+msgid "Write error"
+msgstr "Lỗi ghi"
+
msgid "Full Name"
msgstr "Tên đầy đủ"
@@ -3711,6 +3831,10 @@ msgstr "Trình khách"
msgid "Operating System"
msgstr "Hệ điều hành"
+#, fuzzy
+msgid "Local Time"
+msgstr "Tập tin cục bộ :"
+
msgid "Last Activity"
msgstr "Hoạt động cuối cùng"
@@ -3918,7 +4042,6 @@ msgstr "Thích chát"
msgid "Extended Away"
msgstr "Vắng mắt lâu"
-#, c-format
msgid "Do Not Disturb"
msgstr "Xin đừng quấy rầy"
@@ -4044,9 +4167,6 @@ msgstr "Tìm phòng"
msgid "You require encryption, but it is not available on this server."
msgstr "Bạn cần mật mã, nhưng máy phục vụ này không cung cấp."
-msgid "Write error"
-msgstr "Lỗi ghi"
-
msgid "Ping timeout"
msgstr "Quá hạn ping"
@@ -4055,14 +4175,9 @@ msgstr "Lỗi đọc"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"Không thể thiết lập kết nối đến máy phục vụ :\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "Không thể tạo ổ cắm"
msgid "Invalid XMPP ID"
msgstr "ID XMPP không hợp lệ"
@@ -4070,6 +4185,10 @@ msgstr "ID XMPP không hợp lệ"
msgid "Invalid XMPP ID. Domain must be set."
msgstr "ID XMPP không hợp lệ. Phải đặt miền (domain)."
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Không kết nối được với máy phục vụ."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "Đăng ký thành công %s@%s"
@@ -4156,9 +4275,18 @@ msgstr "Đang xác thực"
msgid "Re-initializing Stream"
msgstr "Đang khởi tạo lại Stream"
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr "Không cho phép"
+msgid "Mood"
+msgstr "Tâm trạng"
+
+msgid "Now Listening"
+msgstr "Đang nghe"
+
msgid "Both"
msgstr "Cả hai"
@@ -4180,12 +4308,6 @@ msgstr "Không"
msgid "Subscription"
msgstr "Đăng ký"
-msgid "Mood"
-msgstr "Tâm trạng"
-
-msgid "Now Listening"
-msgstr "Đang nghe"
-
msgid "Mood Text"
msgstr "Kiểm tra tâm trạng"
@@ -4423,18 +4545,24 @@ msgstr "Không thể đá người dùng %s"
msgid "Unable to ping user %s"
msgstr "Không thể gửi tin hiệu ping cho người dùng %s"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr "Không thể kêu gọi vì không biết gì về người dùng %s."
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr "Không thể kêu gọi, vì người dùng %s có thể chưa đăng nhập."
-#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+#, fuzzy, c-format
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "Không thể kêu gọi, vì người dùng %s không hỗ trợ."
+#, c-format
+msgid "Buzzing %s..."
+msgstr "Đang kêu gọi %s..."
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
msgid "Buzz"
@@ -4444,9 +4572,35 @@ msgstr "Kêu gọi"
msgid "%s has buzzed you!"
msgstr "%s đã kêu gọi bạn !"
-#, c-format
-msgid "Buzzing %s..."
-msgstr "Đang kêu gọi %s..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "Không thể gửi tập tin cho %s, JID không hợp lệ"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "Không thể gửi tập tin cho %s, người dùng chưa kết nối"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr ""
+"Không thể gửi tập tin cho %s, không đăng ký với sự có mặt của người dùng"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "Lỗi đăng ký"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "Hãy chọn tài nguyên nào của %s cho đó bạn muốn gửi tập tin"
+
+msgid "Select a Resource"
+msgstr "Chọn tài nguyên"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "Khởi tạo _Chát"
msgid "config: Configure a chat room."
msgstr "config: (viết tắt) cấu hình một phòng trò chuyện."
@@ -4613,6 +4767,21 @@ msgstr "Lỗi vào chát %s"
msgid "Error in chat %s"
msgstr "Lỗi trong chát %s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "Gặp lỗi trong khi mở tập tin."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "Lỗi truyền tập tin"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Không mở được tập tin « %s »: %s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4638,9 +4807,6 @@ msgstr ""
msgid "Please select the resource of %s to which you would like to send a file"
msgstr "Hãy chọn tài nguyên nào của %s cho đó bạn muốn gửi tập tin"
-msgid "Select a Resource"
-msgstr "Chọn tài nguyên"
-
msgid "Edit User Mood"
msgstr "Sửa tâm trạng người dùng"
@@ -4675,8 +4841,19 @@ msgstr "Hành động"
msgid "Select an action"
msgstr "Chọn hành động"
-msgid "Unable to retrieve MSN Address Book"
-msgstr "Không thể lấy Sổ địa chỉ MSN"
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr "Không thể thêm « %s »."
+
+msgid "Buddy Add error"
+msgstr ""
+
+#, fuzzy
+msgid "The username specified does not exist."
+msgstr "Bạn đã ghi rõ một tên người dùng không hợp lệ."
#, c-format
msgid "Buddy list synchronization issue in %s (%s)"
@@ -4906,7 +5083,7 @@ msgstr "Passport của trẻ không có sự đồng ý của cha mẹ"
msgid "Passport account not yet verified"
msgstr "Tài khoản Passport chưa được thẩm định"
-#, fuzzy, c-format
+#, fuzzy
msgid "Passport account suspended"
msgstr "Tài khoản Passport chưa được thẩm định"
@@ -5002,6 +5179,13 @@ msgstr "Gửi tin nhắn tới di động."
msgid "Page"
msgstr "Nhắn tin"
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "Việc làm"
+
msgid "Has you"
msgstr "Có bạn"
@@ -5039,6 +5223,14 @@ msgstr "Nghệ sĩ"
msgid "Album"
msgstr "Tập nhạc"
+#, fuzzy
+msgid "Game Title"
+msgstr "Tên điệu"
+
+#, fuzzy
+msgid "Office Title"
+msgstr "Tên điệu"
+
msgid "Set Friendly Name..."
msgstr "Đặt tên thân mật..."
@@ -5229,8 +5421,9 @@ msgstr ""
"Không tìm thấy thông tin trong lý lịch của người dùng này. Người này rất có "
"thể không tồn tại."
-msgid "Profile URL"
-msgstr "URL lý lịch"
+#, fuzzy
+msgid "View web profile"
+msgstr "Ẩn khi ngoại tuyến"
#. *< type
#. *< ui_requirement
@@ -5476,19 +5669,15 @@ msgstr "Thêm vào sổ địa chỉ"
msgid "Do you want to delete this buddy from your address book as well?"
msgstr "Bạn muốn thêm người này vào danh sách bạn bè của bạn không?"
-#. only notify the user about problems adding to the friends list
-#. * maybe we should do something else for other lists, but it probably
-#. * won't cause too many problems if we just ignore it
-#, c-format
-msgid "Unable to add \"%s\"."
-msgstr "Không thể thêm « %s »."
-
msgid "The username specified is invalid."
msgstr "Bạn đã ghi rõ một tên người dùng không hợp lệ."
msgid "This Hotmail account may not be active."
msgstr "Tài khoản Hotmail này có lẽ chưa kích hoạt."
+msgid "Profile URL"
+msgstr "URL lý lịch"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5502,18 +5691,12 @@ msgstr "Tài khoản Hotmail này có lẽ chưa kích hoạt."
msgid "MSN Protocol Plugin"
msgstr "Phần bổ sung giao thức MSN"
-msgid "Missing Cipher"
-msgstr "Thiếu mật mã"
-
-msgid "The RC4 cipher could not be found"
-msgstr "Không tìm thấy mật mã RC4"
+#, c-format
+msgid "No such user: %s"
+msgstr "Không có người dùng như vậy: %s"
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
-msgstr ""
-"Nâng cấp lên thư viện libpurple hỗ trợ RC4 (≥2.0.1). Phần bổ sung MySpaceIM "
-"sẽ không được nạp."
+msgid "User lookup"
+msgstr "Tra cứu người dùng"
msgid "Reading challenge"
msgstr "Đố đọc"
@@ -5524,11 +5707,22 @@ msgstr "Chiều dài đố bất thường từ máy phục vụ"
msgid "Logging in"
msgstr "Đang đăng nhập"
-#, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] ""
-"Kết nối đến máy phục vụ bị mất (không nhận dữ liệu trong vòng %d giây)"
+msgid "MySpaceIM - No Username Set"
+msgstr "MySpaceIM — Chưa đặt tên người dùng"
+
+msgid "You appear to have no MySpace username."
+msgstr "Có vẻ là bạn chưa có một tên người dùng MySpace."
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr ""
+"Bạn có muốn đặt một tên người dùng ngay bây giờ không? (Ghi chú : KHÔNG THỂ "
+"THAY ĐỔI LẠI !)"
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr ""
+"Mất kết nối với máy phục vụ\n"
+"%s"
#. Can't write _()'d strings in array initializers. Workaround.
msgid "New mail messages"
@@ -5550,16 +5744,22 @@ msgstr "Chú thích ảnh mới"
msgid "MySpace"
msgstr "MySpace"
-msgid "MySpaceIM - No Username Set"
-msgstr "MySpaceIM — Chưa đặt tên người dùng"
+msgid "IM Friends"
+msgstr "Bạn bè Nhắn Tin"
-msgid "You appear to have no MySpace username."
-msgstr "Có vẻ là bạn chưa có một tên người dùng MySpace."
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+"%d bạn thân đã được thêm hoặc cập nhật từ máy phục vụ (gồm có bạn thân đã "
+"nằm trên danh sách bên máy phục vụ)"
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
-msgstr ""
-"Bạn có muốn đặt một tên người dùng ngay bây giờ không? (Ghi chú : KHÔNG THỂ "
-"THAY ĐỔI LẠI !)"
+msgid "Add contacts from server"
+msgstr "Thêm liên lạc từ máy phục vụ"
#. The session is now set up, ready to be connected. This emits the
#. * signedOn signal, so clients can now do anything with msimprpl, and
@@ -5585,6 +5785,19 @@ msgstr ""
msgid "MySpaceIM Error"
msgstr "Lỗi MySpaceIM"
+msgid "Invalid input condition"
+msgstr "Điều kiện nhập không hợp lệ"
+
+msgid "Read buffer full (2)"
+msgstr "Bộ đệm đọc đã đầy (2)"
+
+msgid "Unparseable message"
+msgstr "Thông điệp không thể phân tích"
+
+#, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr "Không thể kết nối đến máy: %s (%d)"
+
msgid "Failed to add buddy"
msgstr "Không thêm được bạn thân"
@@ -5594,13 +5807,6 @@ msgstr "Lỗi « addbuddy » (thêm bạn thân) bị lỗi."
msgid "persist command failed"
msgstr "Lỗi « persist » (bền bỉ) bị lỗi"
-#, c-format
-msgid "No such user: %s"
-msgstr "Không có người dùng như vậy: %s"
-
-msgid "User lookup"
-msgstr "Tra cứu người dùng"
-
msgid "Failed to remove buddy"
msgstr "Không gỡ bỏ được bạn thân"
@@ -5610,35 +5816,18 @@ msgstr "Lỗi « delbuddy » (xoá bạn thân) bị lỗi"
msgid "blocklist command failed"
msgstr "Lỗi « blocklist » (danh sách chận) bị lỗi"
-msgid "Invalid input condition"
-msgstr "Điều kiện nhập không hợp lệ"
-
-msgid "Read buffer full (2)"
-msgstr "Bộ đệm đọc đã đầy (2)"
-
-msgid "Unparseable message"
-msgstr "Thông điệp không thể phân tích"
-
-#, c-format
-msgid "Couldn't connect to host: %s (%d)"
-msgstr "Không thể kết nối đến máy: %s (%d)"
+msgid "Missing Cipher"
+msgstr "Thiếu mật mã"
-msgid "IM Friends"
-msgstr "Bạn bè Nhắn Tin"
+msgid "The RC4 cipher could not be found"
+msgstr "Không tìm thấy mật mã RC4"
-#, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-"%d bạn thân đã được thêm hoặc cập nhật từ máy phục vụ (gồm có bạn thân đã "
-"nằm trên danh sách bên máy phục vụ)"
-
-msgid "Add contacts from server"
-msgstr "Thêm liên lạc từ máy phục vụ"
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
+"Nâng cấp lên thư viện libpurple hỗ trợ RC4 (≥2.0.1). Phần bổ sung MySpaceIM "
+"sẽ không được nạp."
msgid "Add friends from MySpace.com"
msgstr "Thêm bạn bè từ MySpace.com"
@@ -5681,9 +5870,6 @@ msgstr "Kích cỡ phông cơ bản (điểm)"
msgid "User"
msgstr "Người dùng"
-msgid "Profile"
-msgstr "Lý lịch"
-
msgid "Headline"
msgstr "Hàng đầu"
@@ -5696,16 +5882,6 @@ msgstr "Tổng bạn bè"
msgid "Client Version"
msgstr "Phiên bản khách"
-#. Protocol won't log in now without a username set.. Disconnect
-msgid "No username set"
-msgstr "Chưa đặt tên người dùng"
-
-msgid "MySpaceIM - Please Set a Username"
-msgstr "MySpaceIM — Hãy đặt một tên người dùng"
-
-msgid "Please enter a username to check its availability:"
-msgstr "Hãy gõ một tên người dùng để kiểm tra tính hợp lệ:"
-
msgid "MySpaceIM - Username Available"
msgstr "MySpaceIM — Tên người dùng sẵn sàng"
@@ -5715,12 +5891,22 @@ msgstr "Tên người dùng này sẵn có để dùng. Bạn có muốn đặt
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr "MỘT KHI ĐẶT ĐƯỢC THÌ KHÔNG THỂ THAY ĐỔI LẠI !"
+msgid "MySpaceIM - Please Set a Username"
+msgstr "MySpaceIM — Hãy đặt một tên người dùng"
+
msgid "This username is unavailable."
msgstr "Không thể đặt tên người dùng này."
msgid "Please try another username:"
msgstr "Hãy thử một tên người dùng khác:"
+#. Protocol won't log in now without a username set.. Disconnect
+msgid "No username set"
+msgstr "Chưa đặt tên người dùng"
+
+msgid "Please enter a username to check its availability:"
+msgstr "Hãy gõ một tên người dùng để kiểm tra tính hợp lệ:"
+
#. TODO: icons for each zap
#. Lots of comments for translators:
#. Zap means "to strike suddenly and forcefully as if with a
@@ -6106,7 +6292,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr "Lỗi: chưa cài đặt khả năng hỗ trợ SSL."
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr "Cuộc hội thảo này đã đóng nên không thể gửi thêm tin nào."
@@ -6374,23 +6559,18 @@ msgstr "Máy ảnh"
msgid "Screen Sharing"
msgstr "Chia sẻ màn hình"
-#, c-format
msgid "Free For Chat"
msgstr "Rảnh rỗi để Chát"
-#, c-format
msgid "Not Available"
msgstr "Không có mặt"
-#, c-format
msgid "Occupied"
msgstr "Đang bận"
-#, c-format
msgid "Web Aware"
msgstr "Kiến thức Web"
-#, c-format
msgid "Invisible"
msgstr "Giấu mặt"
@@ -6440,7 +6620,7 @@ msgstr ""
"một chữ cái và chỉ chứa chữ cái, chữ số và khoảng trống, hoặc chỉ chứa chữ "
"số."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr "Tên người dùng sai."
@@ -6456,7 +6636,7 @@ msgstr "Tài khoản của bạn tạm thời bị đình chỉ."
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "Tạm thời không dùng được Dịch Vụ Nhắn Tin Nhanh AOL."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6491,13 +6671,10 @@ msgstr "Nhập vào 6 chữ số hiển thị trên màn hình."
msgid "_OK"
msgstr "_OK"
-#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
+#, fuzzy, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
msgstr ""
-"Bạn có thể bị ngắt kết nối một thời gian ngắn. Trong lúc chờ đợi lỗi được "
-"sửa, bạn có thể sử dụng TOC. Hãy kiểm tra %s để cập nhật."
+"Bạn có thể bị ngắt kết nối một thời gian ngắn. Hãy kiểm tra %s để cập nhật."
msgid "Unable to get a valid AIM login hash."
msgstr "Không thể lấy mã đăng nhập AIM hợp lệ."
@@ -6636,7 +6813,7 @@ msgid "You missed %hu message from %s for an unknown reason."
msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] "Bạn không nhận được %hu tin nhẳn từ %s do lỗi chưa xác định."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "Không thể gửi tin: %s"
@@ -6658,6 +6835,9 @@ msgstr "Đã kết nối từ"
msgid "Member Since"
msgstr "Là thành viên từ"
+msgid "Profile"
+msgstr "Lý lịch"
+
msgid "Your AIM connection may be lost."
msgstr "Bạn có thể đã bị ngắt kết nối với AIM"
@@ -6933,6 +7113,7 @@ msgstr "_Kết nối"
msgid "Get AIM Info"
msgstr "Lấy thông tin AIM"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "Sửa chú thích bạn chát"
@@ -7041,7 +7222,6 @@ msgstr "Yêu cầu %s kết nối với chúng tôi tại %s:%hu để gửi tin
msgid "Attempting to connect to %s:%hu."
msgstr "Đang thử kết nối đến %s:%hu."
-#, c-format
msgid "Attempting to connect via proxy server."
msgstr "Đang thử kết nối thông qua máy phục vụ ủy nhiệm."
@@ -7137,7 +7317,7 @@ msgstr "Khác"
msgid "Visible"
msgstr "Giấu mặt"
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
#, fuzzy
@@ -7228,16 +7408,48 @@ msgstr "Cập nhật lần cuối"
msgid "Could not change buddy information."
msgstr "Hãy nhập thông tin về bạn thân."
-#, c-format
-msgid "%d needs Q&A"
+msgid "Mobile"
+msgstr "Di động"
+
+msgid "Note"
+msgstr "Ghi chú"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "Biểu tượng bạn thân"
+
+msgid "Change his/her memo as you like"
msgstr ""
#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "Thêm bạn thân"
+msgid "_Modify"
+msgstr "Sửa"
#, fuzzy
-msgid "Input answer here"
+msgid "Memo Modify"
+msgstr "Sửa"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "Máy phục vụ bận"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%u requires verification"
+msgstr "Cần thiết sự cho phép"
+
+#, fuzzy
+msgid "Add buddy question"
+msgstr "Có thêm bạn thân vào danh sách của bạn không?"
+
+#, fuzzy
+msgid "Enter answer here"
msgstr "Gõ yêu cầu vào đây"
msgid "Send"
@@ -7251,18 +7463,19 @@ msgid "Authorization denied message:"
msgstr "Thông điệp từ chối cho phép:"
#, fuzzy
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr "Tiếc là tôi quá bận..."
#, fuzzy, c-format
-msgid "%d needs authentication"
+msgid "%u needs authorization"
msgstr "Người dùng %d yêu cầu sự cho phép"
#, fuzzy
msgid "Add buddy authorize"
msgstr "Có thêm bạn thân vào danh sách của bạn không?"
-msgid "Input request here"
+#, fuzzy
+msgid "Enter request here"
msgstr "Gõ yêu cầu vào đây"
msgid "Would you be my friend?"
@@ -7285,7 +7498,7 @@ msgid "Failed sending authorize"
msgstr "Xin hãy cho phép tôi."
#, fuzzy, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr "Không gỡ bỏ được bạn thân"
#, fuzzy, c-format
@@ -7330,6 +7543,10 @@ msgid "You can only search for permanent Qun\n"
msgstr "Bạn chỉ có khả năng tìm kiếm nhóm QQ bên bỉ\n"
#, fuzzy
+msgid "(Invalid UTF-8 string)"
+msgstr "Thiết lập ủy nhiệm không hợp lệ"
+
+#, fuzzy
msgid "Not member"
msgstr "Tôi không phải là thành viên"
@@ -7373,16 +7590,19 @@ msgstr "Nhóm này không cho phép người khác tham gia"
msgid "Join QQ Qun"
msgstr "Tham gia chát"
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
-msgstr ""
+msgid "Input request here"
+msgstr "Gõ yêu cầu vào đây"
+
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "Bạn đã sửa đổi thành công thành viên Qun"
#, fuzzy
msgid "Successfully joined Qun"
msgstr "Bạn đã sửa đổi thành công thành viên Qun"
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
msgid "QQ Qun Operation"
@@ -7392,7 +7612,7 @@ msgstr "Thao tác QQ Qun"
msgid "Failed:"
msgstr "Bị lỗi"
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
#, fuzzy
@@ -7407,11 +7627,11 @@ msgstr ""
"cuối cùng thao tác này sẽ gỡ bỏ Qun này."
#, fuzzy
-msgid "Sorry, you are not our style ..."
+msgid "Sorry, you are not our style"
msgstr "Tiếc là tôi quá bận..."
#, fuzzy
-msgid "Successfully changed Qun member"
+msgid "Successfully changed Qun members"
msgstr "Bạn đã sửa đổi thành công thành viên Qun"
#, fuzzy
@@ -7422,35 +7642,35 @@ msgid "You have successfully created a Qun"
msgstr "Bạn đã tạo thành công một Qun"
#, fuzzy
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr "Bạn có muốn thiết lập chi tiết Qun ngay bây giờ không?"
msgid "Setup"
msgstr "Thiết lập"
#, fuzzy, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr "Người dùng %d đã yêu cầu tham gia nhóm %d"
#, fuzzy, c-format
-msgid "%d request to join Qun %d"
+msgid "%u request to join Qun %u"
msgstr "Người dùng %d đã yêu cầu tham gia nhóm %d"
#, fuzzy, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr "Không tham gia được với bạn chát"
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr "Bỏ bạn chát"
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "Bỏ bạn chát"
#, c-format
msgid "Unknown-%d"
@@ -7567,6 +7787,13 @@ msgstr "<b>Cập nhật cuối:</b> %s<br>\n"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<b>IP máy phục vụ </b>: %s: %d<br>\n"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<b>Cập nhật cuối:</b> %s<br>\n"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7574,7 +7801,7 @@ msgid "<i>Feel free to join us!</i> :)"
msgstr ""
#, fuzzy, c-format
-msgid "About OpenQ r%s"
+msgid "About OpenQ %s"
msgstr "Giới thiệu %s"
#, fuzzy
@@ -7595,6 +7822,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "Giới thiệu %s"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Địa chỉ nhà"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7626,7 +7857,6 @@ msgstr ""
msgid "QQ2008"
msgstr ""
-#. #endif
#, fuzzy
msgid "Connect by TCP"
msgstr "Kết nối bằng TCP"
@@ -7639,6 +7869,9 @@ msgstr "Cổng máy phục vụ"
msgid "Show server news"
msgstr "Địa chỉ máy phục vụ"
+msgid "Show chat room when msg comes"
+msgstr ""
+
#, fuzzy
msgid "Keep alive interval (seconds)"
msgstr "Lỗi giữ cho kết nối hoạt động"
@@ -7648,11 +7881,7 @@ msgid "Update interval (seconds)"
msgstr "Lỗi giữ cho kết nối hoạt động"
#, fuzzy
-msgid "Can not decrypt server reply"
-msgstr "Không thể lấy thông tin về máy phục vụ"
-
-#, fuzzy
-msgid "Can not decrypt get server reply"
+msgid "Cannot decrypt server reply"
msgstr "Không thể lấy thông tin về máy phục vụ"
#, c-format
@@ -7675,21 +7904,24 @@ msgid "Activation required"
msgstr "Yêu cầu đăng ký"
#, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr ""
-msgid "Keep alive error"
-msgstr "Lỗi giữ cho kết nối hoạt động"
+#, fuzzy
+msgid "Could not decrypt server reply"
+msgstr "Không thể lấy thông tin về máy phục vụ"
#, fuzzy
-msgid "Requesting captcha ..."
+msgid "Requesting captcha"
msgstr "Đang yêu cầu sự chú ý của %s..."
-msgid "Checking code of captcha ..."
-msgstr ""
+#, fuzzy
+msgid "Checking captcha"
+msgstr "Đang yêu cầu sự chú ý của %s..."
-msgid "Failed captcha verify"
-msgstr ""
+#, fuzzy
+msgid "Failed captcha verification"
+msgstr "Lỗi xác thực Yahoo"
#, fuzzy
msgid "Captcha Image"
@@ -7699,38 +7931,30 @@ msgstr "Lưu ảnh"
msgid "Enter code"
msgstr "Nhập mật khẩu"
-msgid "QQ Captcha Verifing"
-msgstr ""
+#, fuzzy
+msgid "QQ Captcha Verification"
+msgstr "Thẩm tra chứng nhận SSL"
#, fuzzy
msgid "Enter the text from the image"
msgstr "Hãy nhập tên của nhóm"
#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
+msgid "Unknown reply when checking password (0x%02X)"
msgstr ""
#, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
msgstr ""
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "Không thể kết nối."
msgid "Socket error"
msgstr "Lỗi ổ cắm"
-#, fuzzy, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr ""
-"Mất kết nối với máy phục vụ :\n"
-"%s"
-
msgid "Unable to read from socket"
msgstr "Không thể đọc từ ổ cắm"
@@ -7741,11 +7965,11 @@ msgid "Connection lost"
msgstr "Kết nối bị mất"
#, fuzzy
-msgid "Get server ..."
+msgid "Getting server"
msgstr "Lập thông tin người dùng..."
#, fuzzy
-msgid "Request token"
+msgid "Requesting token"
msgstr "Yêu cầu bị từ chối"
msgid "Couldn't resolve host"
@@ -7756,16 +7980,13 @@ msgid "Invalid server or port"
msgstr "Lỗi không hợp lệ"
#, fuzzy
-msgid "Connecting server ..."
-msgstr "Máy phục vụ kết nối"
+msgid "Connecting to server"
+msgstr "Đang kết nối tới máy phục vụ SILC"
#, fuzzy
msgid "QQ Error"
msgstr "Lỗi QQid"
-msgid "Failed to send IM."
-msgstr "Không gửi được tin nhắn."
-
#, fuzzy, c-format
msgid ""
"Server News:\n"
@@ -7775,6 +7996,10 @@ msgid ""
msgstr "Chuyển tiếp máy phục vụ ICQ"
#, fuzzy, c-format
+msgid "%s:%s"
+msgstr "%s (%s)"
+
+#, fuzzy, c-format
msgid "From %s:"
msgstr "Từ"
@@ -7784,32 +8009,30 @@ msgid ""
"%s"
msgstr "Hướng dẫn máy phục vụ : %s"
-msgid "Unknow SERVER CMD"
-msgstr ""
+#, fuzzy
+msgid "Unknown SERVER CMD"
+msgstr "Lý do không rõ"
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
#, fuzzy
msgid "QQ Qun Command"
msgstr "Lệnh"
-#, fuzzy, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr "Bạn [%d] đã được thêm vào nhóm « %d »"
-
-msgid "Can not decrypt login reply"
-msgstr ""
+#, fuzzy
+msgid "Could not decrypt login reply"
+msgstr "Không thể lấy thông tin về máy phục vụ"
#, fuzzy
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr "Lý do không rõ"
#, fuzzy
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr "Lý do không rõ"
#, c-format
@@ -8628,9 +8851,6 @@ msgstr "Tổ chức"
msgid "Unit"
msgstr "Đơn vị"
-msgid "Note"
-msgstr "Ghi chú"
-
msgid "Join Chat"
msgstr "Tham gia chát"
@@ -9301,6 +9521,10 @@ msgstr "Không thể giải quyết tên máy"
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr "Tên người dùng SIP không được chứa dấu cách hay ký hiệu @"
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "Cổng máy phục vụ"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -9335,196 +9559,12 @@ msgid "Auth Domain"
msgstr "Xác thực miền"
#, c-format
-msgid "Looking up %s"
-msgstr "Đang tra tìm %s"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Kết nối đến %s không được"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Đăng nhập: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "Không thể ghi tập tin %s."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "Không thể đọc tập tin %s."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "Tin nhắn quá dài, %s byte cuối bị cắt ngắn."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s chưa đăng nhập."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "Không cho phép cảnh báo cho %s."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr ""
-"Một tin nhẳn không gửi đi được, bạn đang vượt quá tốc độ cho phép của máy "
-"phục vụ."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "Không có sẵn chát trong %s."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "Bạn đang gửi tin nhẳn quá nhanh đến %s."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "Bạn không nhận được tin nhắn từ %s vì nó quá lớn."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "Bạn không nhận được tin nhắn từ %s vì nó được gửi quá nhanh."
-
-#, c-format
-msgid "Failure."
-msgstr "Lỗi."
-
-#, c-format
-msgid "Too many matches."
-msgstr "Quá nhiều kết quả trùng khớp."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "Cần thêm từ hạn định"
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "Tạm thời không có dịch vụ danh bạ."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "Khả năng tra tìm địa chỉ thư điện tử bị hạn chế."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "Từ khóa bị lờ đi."
-
-#, c-format
-msgid "No keywords."
-msgstr "Không có từ khóa."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "Người dùng không có thông tin danh bạ."
-
-#, c-format
-msgid "Country not supported."
-msgstr "Quốc gia chưa được hỗ trợ."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Lỗi không rõ : %s."
-
-#, c-format
-msgid "Incorrect username or password."
-msgstr "Tên người dùng hay mật khẩu không đúng."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "Tạm thời không có dịch vụ."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "Mức cảnh báo của bạn hiện thời quá cao nên không đăng nhập được."
-
-#, 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 ""
-"Bạn đã liên tục kết nối và ngắt kết nối quá nhiều. Hẵy đợi 10 phút và kết "
-"nối lại. Nếu bạn vẫn cố kết nối, bạn sẽ phải chờ lâu hơn."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "Lỗi đăng nhập không rõ : %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr ""
-"Lỗi không rõ : %d.\n"
-"Thông tin: %s"
-
-msgid "Invalid Groupname"
-msgstr "Tên nhóm không hợp lệ"
-
-msgid "Connection Closed"
-msgstr "Kết nối bị đóng"
-
-msgid "Waiting for reply..."
-msgstr "Đợi hồi âm..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr ""
-"TOC thôi trạng thái tạm ngừng. Bây giờ bạn có thể gửi tin nhẳn trở lại."
-
-msgid "Password Change Successful"
-msgstr "Đổi mật khẩu thành công"
-
-msgid "_Group:"
-msgstr "_Nhóm:"
-
-msgid "Get Dir Info"
-msgstr "Lấy thông tin danh bạ"
-
-msgid "Set Dir Info"
-msgstr "Lập thông tin danh bạ"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "Không thể mở %s để ghi !"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "Không truyền được tập tin; bên khác có thể đã hủy bỏ."
-
-msgid "Could not connect for transfer."
-msgstr "Không thể kết nối để truyền đi."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "Không thể ghi phần đầu tập tin. Tập tin sẽ không được truyền."
-
-msgid "Save As..."
-msgstr "Lưu dạng..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s yêu cầu %s chấp nhận %d tập tin: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s yêu cầu bạn gửi tập tin"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "Phần bổ sung giao thức TOC"
-
-#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr "%s mời bạn xem máy ảnh Web, mà chưa được hỗ trợ."
+msgid "Your SMS was not delivered"
+msgstr ""
+
msgid "Your Yahoo! message did not get sent."
msgstr "Tin nhẳn Yahoo! của bạn đã không được gửi."
@@ -9795,13 +9835,9 @@ msgstr "Liên kết ưa thích 3"
msgid "Last Update"
msgstr "Cập nhật lần cuối"
-#, c-format
-msgid "User information for %s unavailable"
-msgstr "Hiện không có thông tin người dùng về %s"
-
+#, fuzzy
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr ""
"Tiếc là hình như lý lịch này được viết bằng ngôn ngữ hay định dạng chưa được "
"hỗ trợ."
@@ -10131,9 +10167,6 @@ msgstr "Xin đừng quấy rầy"
msgid "Extended away"
msgstr "Vắng mặt mở rộng"
-msgid "Mobile"
-msgstr "Di động"
-
msgid "Listening to music"
msgstr "Nghe nhạc"
@@ -10175,18 +10208,6 @@ msgstr "+++ %s đã thôi trạng thái nghỉ"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "Lỗi đọc %s"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"Gặp lỗi khi đọc %s của bạn nên chưa nạp và tên tập tin cũ đã bị thay đổi "
-"thành « %s~ »."
-
msgid "Calculating..."
msgstr "Đang tính toán..."
@@ -10255,6 +10276,14 @@ msgstr "Lỗi ghi từ %s: %s"
msgid "Unable to connect to %s: %s"
msgstr "Không thể kết nối tới %s: %s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr ""
+"Máy phục vụ yêu cầu TLS/SSL để đăng nhập. Không tìm thấy khả năng hỗ trợ TLS/"
+"SSL."
+
#, c-format
msgid " - %s"
msgstr " - %s"
@@ -10288,6 +10317,18 @@ msgstr "Kết nối bị từ chối."
msgid "Address already in use."
msgstr "Tên chát này đang được dùng"
+#, c-format
+msgid "Error Reading %s"
+msgstr "Lỗi đọc %s"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"Gặp lỗi khi đọc %s của bạn nên chưa nạp và tên tập tin cũ đã bị thay đổi "
+"thành « %s~ »."
+
msgid "Internet Messenger"
msgstr "Tin Nhắn"
@@ -10330,10 +10371,8 @@ msgstr "Thông báo thư _mới"
msgid "Use this buddy _icon for this account:"
msgstr "Dùng biểu tượng bạn chát cho tài khoản này:"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s Tùy chọn"
+msgid "_Advanced"
+msgstr "Cấp c_ao"
msgid "Use GNOME Proxy Settings"
msgstr "Dùng thiết lập ủy nhiệm GNOME"
@@ -10368,9 +10407,6 @@ msgstr "Nếu bạn thấy đúng là gần"
msgid "you can see the butterflies mating"
msgstr "bạn có thể nhìn thấy con bướm kết đôi"
-msgid "Proxy Options"
-msgstr "Tùy chọn ủy nhiệm"
-
msgid "Proxy _type:"
msgstr "Kiểu ủ_y nhiệm:"
@@ -10398,8 +10434,9 @@ msgstr "Cơ _bản"
msgid "Create _this new account on the server"
msgstr "_Tạo tài khoản mới này trên máy phục vụ"
-msgid "_Advanced"
-msgstr "Cấp c_ao"
+#, fuzzy
+msgid "_Proxy"
+msgstr "Ủy nhiệm"
msgid "Enabled"
msgstr "Đã bật"
@@ -10472,6 +10509,17 @@ msgstr "Lấy thông t_in"
msgid "I_M"
msgstr "_Tin nhắn"
+#, fuzzy
+msgid "_Audio Call"
+msgstr "Thê_m chát"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "Trò chuyện ảnh động"
+
msgid "_Send File..."
msgstr "_Gửi tập tin..."
@@ -10608,6 +10656,10 @@ msgstr "/Công cụ/Thông _báo bạn chát"
msgid "/Tools/_Certificates"
msgstr "/Công cụ/_Chứng nhận"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Công cụ/Hình cườ_i"
+
msgid "/Tools/Plu_gins"
msgstr "/Công cụ/_Phần bổ sung"
@@ -10617,9 +10669,6 @@ msgstr "/Công cụ/Tù_y chỉnh"
msgid "/Tools/Pr_ivacy"
msgstr "/Công cụ/_Riêng tư"
-msgid "/Tools/Smile_y"
-msgstr "/Công cụ/Hình cườ_i"
-
msgid "/Tools/_File Transfers"
msgstr "/Công cụ/_Truyền tập tin"
@@ -10736,8 +10785,8 @@ msgstr "Bằng tay"
msgid "By status"
msgstr "Theo trạng thái"
-msgid "By log size"
-msgstr "Theo kích cỡ bản ghi"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10753,6 +10802,9 @@ msgstr "Tái kết nối"
msgid "Re-enable"
msgstr "Bật lại"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr "Chào mừng lại !"
@@ -10839,6 +10891,9 @@ msgstr ""
msgid "A_lias:"
msgstr "_Bí danh:"
+msgid "_Group:"
+msgstr "_Nhóm:"
+
msgid "Auto_join when account becomes online."
msgstr "Tự động tham _gia một khi tài khoản kết nối."
@@ -10892,12 +10947,6 @@ msgstr ""
msgid "Invite Buddy Into Chat Room"
msgstr "Mời bạn chát vào phòng chát"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr "Hãy nhập tên người dùng mà bạn muốn mời, kèm theo lời mời tùy ý."
-
msgid "_Buddy:"
msgstr "_Bạn chát:"
@@ -10972,6 +11021,22 @@ msgstr "/Cuộc thoại/_Lưu dạng..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Cuộc thoại/Gột _vùng cuộn ngược"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Cuộc thoại/Nữ_a"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Cuộc thoại/Nữ_a"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Cuộc thoại/Nữ_a"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Cuộc thoại/_Xem bản ghi"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Cuộc thoại/_Gửi tập tin..."
@@ -11044,6 +11109,18 @@ msgstr "/Cuộc thoại"
msgid "/Conversation/View Log"
msgstr "/Cuộc thoại/Xem bản ghi"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Cuộc thoại/_Nữa"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Cuộc thoại/Xem bản ghi"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Cuộc thoại/_Nữa"
+
msgid "/Conversation/Send File..."
msgstr "/Cuộc thoại/Gửi tập tin..."
@@ -11226,6 +11303,9 @@ msgstr "Nghệ sĩ"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "hỗ trợ"
@@ -11367,6 +11447,10 @@ msgstr "Tiếng Gi-oa-gi-a"
msgid "Ubuntu Georgian Translators"
msgstr "Nhóm Dịch Giả Gi-oa-gi-a Ubuntu"
+#, fuzzy
+msgid "Khmer"
+msgstr "Khác"
+
msgid "Kannada"
msgstr "Tiếng Kan-na-đa"
@@ -11388,6 +11472,10 @@ msgstr "Tiếng Li-tu-a-ni"
msgid "Macedonian"
msgstr "Tiếng Ma-xê-đô-ni"
+#, fuzzy
+msgid "Mongolian"
+msgstr "Tiếng Ma-xê-đô-ni"
+
msgid "Bokmål Norwegian"
msgstr "Tiếng Na-uy (Bóc-măn)"
@@ -11502,7 +11590,24 @@ msgstr ""
"người đóng góp. Chương trình này không bảo hành gì cả.<BR><BR>"
#, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, fuzzy, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"3\">IRC:</FONT> #pidgin trên irc.freenode.net<BR><BR>"
+
+#, fuzzy, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"3\">IRC:</FONT> #pidgin trên irc.freenode.net<BR><BR>"
msgid "Current Developers"
@@ -11804,15 +11909,6 @@ msgstr "Phông chữ cần dùng cho thông báo đang gõ"
msgid "Enable typing notification"
msgstr "Bật thông báo đang gõ"
-msgid "_Copy Email Address"
-msgstr "_Chép địa chỉ thư"
-
-msgid "_Open Link in Browser"
-msgstr "_Mở liên kết trong trình duyệt"
-
-msgid "_Copy Link Location"
-msgstr "_Chép địa chỉ liên kết"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12058,13 +12154,14 @@ msgstr "Duyệt qua thư mục _bản ghi"
msgid "%s %s. Try `%s -h' for more information.\n"
msgstr "%s %s. Chạy « %s -h » để biết thêm thông tin.\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12088,13 +12185,14 @@ msgstr ""
" --display=BỘ_TRÌNH_BÀY\t\tbộ trình bày X cần dùng\n"
" -v, --version \t\thiển thị phiên bản hiện thời rồi thoát\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12154,11 +12252,27 @@ msgstr ""
msgid "Pidgin"
msgstr "Pidgin"
-msgid "Open All Messages"
-msgstr "Mở mọi tin nhẳn"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Có thư mới !</span>"
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "Đang tính toán..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -12186,6 +12300,27 @@ msgid ""
msgstr ""
"Đã chọn lệnh chạy trình duyệt « Bằng tay », nhưng không cung cấp lệnh nào."
+msgid "Open All Messages"
+msgstr "Mở mọi tin nhẳn"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Có thư mới !</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "Thông báo bạn thân mới"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Có thư mới !</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "Thông điệp không rõ"
+
msgid "The following plugins will be unloaded."
msgstr "Những phần bổ sung theo đây sẽ được bỏ nạp."
@@ -12234,6 +12369,10 @@ msgstr "<b>Chi tiết về phần bổ sung</b>"
msgid "Select a file"
msgstr "Chọn tập tin"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Sửa thông báo bạn thân"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "Thông báo cho ai"
@@ -12304,6 +12443,50 @@ msgstr "_Lặp lại"
msgid "Pounce Target"
msgstr "Đích thông báo"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "Bắt đầu gõ phím"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "Tạm dừng khi gõ phím"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "Đăng nhập"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s hoạt động trở lại từ trạng thái nghỉ (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "Có mặt trở lại"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "Dừng gõ phím"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "Đăng xuất"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "Đã rơi vào trạng thái nghỉ"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "Khi vắng mặt"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Gửi tin nhẳn"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "Dữ kiện thông báo không rõ. Hãy ghi báo cáo việc này!"
+
msgid "Smiley theme failed to unpack."
msgstr "Sắc thái hình cười không giải nén được."
@@ -12326,6 +12509,12 @@ msgstr "Phím tắt"
msgid "Cl_ose conversations with the Escape key"
msgstr "Đóng cuộc th_oại dùng phím Esc"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "Danh sách bạn bè"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "Biểu tượng trên khay"
@@ -12436,9 +12625,6 @@ msgstr "Không thể khởi chạy chương trình cấu hình máy phục vụ
msgid "Cannot start browser configuration program."
msgstr "Không thể khởi chạy chương trình cấu hình trình duyệt."
-msgid "ST_UN server:"
-msgstr "Máy phục vụ ST_UN:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">Thí dụ : stunserver.org</span>"
@@ -12463,6 +12649,10 @@ msgstr "Cổng đầ_u :"
msgid "_End port:"
msgstr "Cổng cuố_i:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr "Máy phục vụ ủy nhiệm và Trình duyệt"
@@ -12491,6 +12681,10 @@ msgstr "Máy phục vụ ủy nhiệm"
msgid "No proxy"
msgstr "Không ủy nhiệm"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "_Người dùng:"
@@ -12661,12 +12855,12 @@ msgstr "Khi cả hai vắng mặt và nghỉ"
msgid "Auto-away"
msgstr "Tự động vắng mặt"
-msgid "Change status when _idle"
-msgstr "Đổi trạng thá_i khi nghỉ"
-
msgid "_Minutes before becoming idle:"
msgstr "Số _phút trước khi đi nghỉ:"
+msgid "Change status when _idle"
+msgstr "Đổi trạng thá_i khi nghỉ"
+
msgid "Change _status to:"
msgstr "Đổi t_rạng thái thành:"
@@ -12814,6 +13008,12 @@ msgstr "Lưu _và Dùng"
msgid "Status for %s"
msgstr "Trạng thái cho %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
msgid "Custom Smiley"
msgstr "Hình cười tự chọn"
@@ -12823,15 +13023,15 @@ msgstr "Cần thêm dữ liệu"
msgid "Please provide a shortcut to associate with the smiley."
msgstr "Hãy cung cấp một lối tắt cần liên quan đến hình cười đó."
-msgid "Duplicate Shortcut"
-msgstr "Nhân đôi lối tắt"
-
+#, fuzzy, c-format
msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
+"A custom smiley for '%s' already exists. Please use a different shortcut."
msgstr ""
"Đã có một hình cười tự chọn cho lối tắt đã chọn. Hãy ghi rõ một lối tắt khác."
+msgid "Duplicate Shortcut"
+msgstr "Nhân đôi lối tắt"
+
msgid "Please select an image for the smiley."
msgstr "Hãy chọn một ảnh cho hình cười đó."
@@ -12841,16 +13041,22 @@ msgstr "Sửa hình cười"
msgid "Add Smiley"
msgstr "Thêm hình cười"
-msgid "Smiley _Image"
-msgstr "Ảnh cườ_i"
+#, fuzzy
+msgid "_Image:"
+msgstr "Ả_nh"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr "Lối tắt _hình cười"
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "Lối tắt"
msgid "Smiley"
msgstr "Hình cười"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "Lối tắt"
+
msgid "Custom Smiley Manager"
msgstr "Bộ Quản lý Hình cười Tự chọn"
@@ -12977,6 +13183,16 @@ msgid ""
msgstr ""
"Không nạp được ảnh « %s »: không biết sao, rất có thể là tập tin ảnh bị hỏng"
+#, fuzzy
+msgid "_Open Link"
+msgstr "_Mở liên kết trong:"
+
+msgid "_Copy Link Location"
+msgstr "_Chép địa chỉ liên kết"
+
+msgid "_Copy Email Address"
+msgstr "_Chép địa chỉ thư"
+
msgid "Save File"
msgstr "Lưu tập tin"
@@ -13955,9 +14171,6 @@ msgstr "_Giữ cửa sổ danh sách bạn bè phía trước"
msgid "Only when docked"
msgstr "Chỉ khi neo lại"
-msgid "_Flash window when chat messages are received"
-msgstr "Nhấp nhá_y cửa sổ khi nhận tin nhắn"
-
msgid "Windows Pidgin Options"
msgstr "Tùy chọn Pidgin Windows"
@@ -14008,6 +14221,233 @@ msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr ""
"Phần bổ sung này có ích để gỡ lỗi máy phục vụ hay trình khách kiểu XMPP."
+#~ msgid "Invite message"
+#~ msgstr "Lời mời"
+
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Hãy nhập tên người dùng mà bạn muốn mời,\n"
+#~ "kèm theo lời mời tùy ý."
+
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "Không thể lấy Sổ địa chỉ MSN"
+
+#~ msgid "Connection to server lost (no data received within %d second)"
+#~ msgid_plural ""
+#~ "Connection to server lost (no data received within %d seconds)"
+#~ msgstr[0] ""
+#~ "Kết nối đến máy phục vụ bị mất (không nhận dữ liệu trong vòng %d giây)"
+
+#~ msgid ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+#~ msgstr ""
+#~ "Bạn có thể bị ngắt kết nối một thời gian ngắn. Trong lúc chờ đợi lỗi được "
+#~ "sửa, bạn có thể sử dụng TOC. Hãy kiểm tra %s để cập nhật."
+
+#, fuzzy
+#~ msgid "Add buddy Q&A"
+#~ msgstr "Thêm bạn thân"
+
+#, fuzzy
+#~ msgid "Can not decrypt get server reply"
+#~ msgstr "Không thể lấy thông tin về máy phục vụ"
+
+#~ msgid "Keep alive error"
+#~ msgstr "Lỗi giữ cho kết nối hoạt động"
+
+#, fuzzy
+#~ msgid ""
+#~ "Lost connection with server:\n"
+#~ "%d, %s"
+#~ msgstr ""
+#~ "Mất kết nối với máy phục vụ :\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Connecting server ..."
+#~ msgstr "Máy phục vụ kết nối"
+
+#~ msgid "Failed to send IM."
+#~ msgstr "Không gửi được tin nhắn."
+
+#, fuzzy
+#~ msgid "Not a member of room \"%s\"\n"
+#~ msgstr "Bạn [%d] đã được thêm vào nhóm « %d »"
+
+#~ msgid "Looking up %s"
+#~ msgstr "Đang tra tìm %s"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "Kết nối đến %s không được"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Đăng nhập: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "Không thể ghi tập tin %s."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "Không thể đọc tập tin %s."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "Tin nhắn quá dài, %s byte cuối bị cắt ngắn."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s chưa đăng nhập."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "Không cho phép cảnh báo cho %s."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr ""
+#~ "Một tin nhẳn không gửi đi được, bạn đang vượt quá tốc độ cho phép của máy "
+#~ "phục vụ."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "Không có sẵn chát trong %s."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "Bạn đang gửi tin nhẳn quá nhanh đến %s."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "Bạn không nhận được tin nhắn từ %s vì nó quá lớn."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr "Bạn không nhận được tin nhắn từ %s vì nó được gửi quá nhanh."
+
+#~ msgid "Failure."
+#~ msgstr "Lỗi."
+
+#~ msgid "Too many matches."
+#~ msgstr "Quá nhiều kết quả trùng khớp."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "Cần thêm từ hạn định"
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "Tạm thời không có dịch vụ danh bạ."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "Khả năng tra tìm địa chỉ thư điện tử bị hạn chế."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "Từ khóa bị lờ đi."
+
+#~ msgid "No keywords."
+#~ msgstr "Không có từ khóa."
+
+#~ msgid "User has no directory information."
+#~ msgstr "Người dùng không có thông tin danh bạ."
+
+#~ msgid "Country not supported."
+#~ msgstr "Quốc gia chưa được hỗ trợ."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Lỗi không rõ : %s."
+
+#~ msgid "Incorrect username or password."
+#~ msgstr "Tên người dùng hay mật khẩu không đúng."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "Tạm thời không có dịch vụ."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "Mức cảnh báo của bạn hiện thời quá cao nên không đăng nhập được."
+
+#~ 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 ""
+#~ "Bạn đã liên tục kết nối và ngắt kết nối quá nhiều. Hẵy đợi 10 phút và kết "
+#~ "nối lại. Nếu bạn vẫn cố kết nối, bạn sẽ phải chờ lâu hơn."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "Lỗi đăng nhập không rõ : %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr ""
+#~ "Lỗi không rõ : %d.\n"
+#~ "Thông tin: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "Tên nhóm không hợp lệ"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Kết nối bị đóng"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "Đợi hồi âm..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr ""
+#~ "TOC thôi trạng thái tạm ngừng. Bây giờ bạn có thể gửi tin nhẳn trở lại."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "Đổi mật khẩu thành công"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Lấy thông tin danh bạ"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Lập thông tin danh bạ"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "Không thể mở %s để ghi !"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr "Không truyền được tập tin; bên khác có thể đã hủy bỏ."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "Không thể kết nối để truyền đi."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "Không thể ghi phần đầu tập tin. Tập tin sẽ không được truyền."
+
+#~ msgid "Save As..."
+#~ msgstr "Lưu dạng..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s yêu cầu %s chấp nhận %d tập tin: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s yêu cầu bạn gửi tập tin"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "Phần bổ sung giao thức TOC"
+
+#~ msgid "User information for %s unavailable"
+#~ msgstr "Hiện không có thông tin người dùng về %s"
+
+#~ msgid "%s Options"
+#~ msgstr "%s Tùy chọn"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Tùy chọn ủy nhiệm"
+
+#~ msgid "By log size"
+#~ msgstr "Theo kích cỡ bản ghi"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_Mở liên kết trong trình duyệt"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "Máy phục vụ ST_UN:"
+
+#~ msgid "Smiley _Image"
+#~ msgstr "Ảnh cườ_i"
+
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "Lối tắt _hình cười"
+
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "Nhấp nhá_y cửa sổ khi nhận tin nhắn"
+
#~ msgid "A group with the name already exists."
#~ msgstr "Một nhóm tên đó đã có."
@@ -14106,13 +14546,6 @@ msgstr ""
#~ msgid "Change Qun information"
#~ msgstr "Thông tin kệnh"
-#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr "%s (%s)"
-
#~ msgid "System Message"
#~ msgstr "Thông điệp hệ thống"
diff --git a/po/xh.po b/po/xh.po
index 5576a20c69..8fd4261ce9 100644
--- a/po/xh.po
+++ b/po/xh.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
+"POT-Creation-Date: 2009-04-30 10:41-0400\n"
"PO-Revision-Date: 2005-03-23 12:21+0200\n"
"Last-Translator: Canonical Ltd <translations@canonical.com>\n"
"Language-Team: Xhosa <xh-translate@ubuntu.com>\n"
@@ -33,7 +33,7 @@ msgid ""
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -641,21 +641,6 @@ msgid "Send To"
msgstr "_Thumela Njenge"
#, fuzzy
-msgid "Invite message"
-msgstr "(umyalezo 1)"
-
-msgid "Invite"
-msgstr "Mema"
-
-#, fuzzy
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr ""
-"Nceda ufake igama lomsebenzisi onqwenela ukummema, ngokuhambisana nomyalezo "
-"ozikhethelayo wokumema."
-
-#, fuzzy
msgid "Conversation"
msgstr "Iincoko"
@@ -923,6 +908,42 @@ msgid "System Log"
msgstr "Inkqubo yeNgxelo yokwenziweyo"
#, fuzzy
+msgid "Calling ... "
+msgstr "Ukubala..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "Yamkela"
+
+#, fuzzy
+msgid "Reject"
+msgstr "Ukumisela kwakhona"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "Wahlukanise isiqhagamselanisi%s %s"
+
+msgid "call: Make an audio call."
+msgstr ""
+
+#, fuzzy
msgid "Emails"
msgstr "I-imeyile"
@@ -960,6 +981,9 @@ msgstr "Ukunxulumana"
msgid "IM"
msgstr "I-IM"
+msgid "Invite"
+msgstr "Mema"
+
#, fuzzy
msgid "(none)"
msgstr "(akukho gama)"
@@ -1183,7 +1207,6 @@ msgstr "I-%s ihambile. (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "U-%s ufuna ukukuthumelela i-%s (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "Isiganeko esingaziwayo sokutsiba. Nceda wenze ingxelo ngoku!"
@@ -1239,7 +1262,6 @@ msgstr "_Imizuzu phambi kokumisela ukungabikho:"
msgid "Change status to"
msgstr "Tshintsha iDilesi ukuya ku:"
-#. Conversations
msgid "Conversations"
msgstr "Iincoko"
@@ -1590,7 +1612,6 @@ msgstr ""
"Xa incoko entsha ivulwa, yendlela yokungena iya kufaka incoko yokugqibela "
"kwincoko yangoku."
-#, c-format
msgid "Online"
msgstr "Lukhona unxibelelwano"
@@ -1639,6 +1660,28 @@ msgstr ""
msgid "Lastlog plugin."
msgstr ""
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "i-URL"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
#, fuzzy
msgid "accounts"
msgstr "Ii-Akhawunti"
@@ -1742,14 +1785,6 @@ msgstr "Yamkela isimemo sokuncokola?"
msgid "SSL Certificate Verification"
msgstr ""
-#. Number of actions
-msgid "Accept"
-msgstr "Yamkela"
-
-#, fuzzy
-msgid "Reject"
-msgstr "Ukumisela kwakhona"
-
msgid "_View Certificate..."
msgstr ""
@@ -1887,6 +1922,18 @@ msgstr "I-%s ilishiyile igumbi."
msgid "%s left the room (%s)."
msgstr "I-%s ilishiyile igumbi (%s)."
+#, fuzzy
+msgid "Invite to chat"
+msgstr "Qalisa iNcoko"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Nceda ufake igama lomsebenzisi onqwenela ukummema, ngokuhambisana nomyalezo "
+"ozikhethelayo wokumema."
+
#, fuzzy, c-format
msgid "Failed to get connection: %s"
msgstr "Akukwazekanga ukuseka ii-cmodes ze %s"
@@ -2026,7 +2073,7 @@ msgstr "Wamkela isicelo sokudlulisa ifayili esivela ku-%s?"
msgid "Transfer of file %s complete"
msgstr "uDluliso lwe %s lufezekile"
-#, fuzzy, c-format
+#, fuzzy
msgid "File transfer complete"
msgstr "Umququzeleli wokudlulisa ifayili"
@@ -2034,7 +2081,7 @@ msgstr "Umququzeleli wokudlulisa ifayili"
msgid "You canceled the transfer of %s"
msgstr "Ukurhoxisile ukudluliswa kwe-%s"
-#, fuzzy, c-format
+#, fuzzy
msgid "File transfer cancelled"
msgstr "Udluliso lwefayili seluqalile"
@@ -2224,7 +2271,6 @@ msgstr "(%s) %s <AUTO-REPLY>: %s\n"
msgid "You are using %s, but this plugin requires %s."
msgstr ""
-#, c-format
msgid "This plugin has not defined an ID."
msgstr ""
@@ -2721,6 +2767,32 @@ msgstr ""
msgid "Do not ask. Always save in pounce."
msgstr ""
+#, fuzzy
+msgid "One Time Password"
+msgstr "UkuTshintsha i-Password"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2926,7 +2998,6 @@ msgid ""
"Unable to establish connection with the local mDNS server. Is it running?"
msgstr ""
-#. Creating the options for the protocol
#, fuzzy
msgid "First name"
msgstr "iGama lokuQala:"
@@ -2964,6 +3035,11 @@ msgstr "Imithetho yokuSebenza yoNgeniso lweYahoo"
msgid "Purple Person"
msgstr "Umntu omTsha"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "Ummandla"
+
msgid "Bonjour"
msgstr ""
@@ -3152,13 +3228,13 @@ msgstr "Susa incoko kuluhlu lwakho lomhlobo"
msgid "Add to chat..."
msgstr "Yongeza iN_coko"
+#. Global
msgid "Available"
msgstr "Efumanekayo"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "Engekhoyo"
@@ -3525,6 +3601,17 @@ msgid ""
"invalid characters."
msgstr ""
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "Loo fayili sele ikhona"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "Igama lesiqhulo"
+
msgid "Cannot change nick"
msgstr "Akunokwenzeka ukutshintsha isikhewu"
@@ -3820,6 +3907,37 @@ msgstr "Ukucela umngeni okungasebenziyo okuvela kwiseva"
msgid "SASL error"
msgstr "ImPazamo efundiweyo"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "Akukho sizathu sinikiweyo."
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "INguqulelo engaXhaswanga"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr "Akukwazeki ukwenza unxibelelwano lweSSL kwiseva."
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "Akukwazeki ukuyila unxibelelwano olutsha."
+
+msgid "Unable to create socket"
+msgstr "Akukwazeki ukuyila isokethi"
+
+msgid "Write error"
+msgstr "Impazamo yokuBhala"
+
msgid "Full Name"
msgstr "iGama ngokuPheleleyo"
@@ -3889,6 +4007,10 @@ msgstr "Isixeko"
msgid "Operating System"
msgstr "UkuFihla iNkqubo yokuSebenza"
+#, fuzzy
+msgid "Local Time"
+msgstr "Abasebenzisi baseKhaya"
+
msgid "Last Activity"
msgstr ""
@@ -4126,7 +4248,6 @@ msgstr "Incoko"
msgid "Extended Away"
msgstr "Ukungabikho okwandisiweyo"
-#, c-format
msgid "Do Not Disturb"
msgstr "Musa ukuPhazamisa"
@@ -4256,9 +4377,6 @@ msgstr "Fumana amaGumbi"
msgid "You require encryption, but it is not available on this server."
msgstr ""
-msgid "Write error"
-msgstr "Impazamo yokuBhala"
-
#, fuzzy
msgid "Ping timeout"
msgstr "Umbhalo ocacileyo"
@@ -4268,13 +4386,10 @@ msgstr "Impazamo yokuFunda"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-msgid "Unable to create socket"
-msgstr "Akukwazeki ukuyila isokethi"
-
#, fuzzy
msgid "Invalid XMPP ID"
msgstr "ISazizi esingasebenziyo"
@@ -4282,6 +4397,10 @@ msgstr "ISazizi esingasebenziyo"
msgid "Invalid XMPP ID. Domain must be set."
msgstr ""
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "Akukwazeki ukunxulumana neseva."
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "Ubhaliso lwe %s@%s ngempumelelo"
@@ -4375,9 +4494,18 @@ msgstr "Ukuqinisekisa"
msgid "Re-initializing Stream"
msgstr "Ukuphinda uqalise umjelo"
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr "Engagunyaziswanga"
+msgid "Mood"
+msgstr "Isimo"
+
+msgid "Now Listening"
+msgstr ""
+
msgid "Both"
msgstr "Zombini"
@@ -4399,12 +4527,6 @@ msgstr "Akukho nto"
msgid "Subscription"
msgstr "Umrhumo"
-msgid "Mood"
-msgstr "Isimo"
-
-msgid "Now Listening"
-msgstr ""
-
#, fuzzy
msgid "Mood Text"
msgstr "Isimo"
@@ -4650,19 +4772,27 @@ msgstr "Akukwazeki ukususa i-%s yomsebenzisi"
msgid "Unable to ping user %s"
msgstr "Akukwazeki ukugxotha i-%s yomsebenzisi"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr ""
+"Akukwazeki ukudlala isandi ngenxa yokuba ifayili ekhethiweyo (%s) ayikho."
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr ""
+"Akukwazeki ukudlala isandi ngenxa yokuba ifayili ekhethiweyo (%s) ayikho."
#, fuzzy, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr ""
"Akukwazeki ukudlala isandi ngenxa yokuba ifayili ekhethiweyo (%s) ayikho."
+#, c-format
+msgid "Buzzing %s..."
+msgstr ""
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
#, fuzzy
@@ -4673,9 +4803,39 @@ msgstr "Tsala umnxeba!!"
msgid "%s has buzzed you!"
msgstr "Umsebenzisi ukuthintele"
-#, c-format
-msgid "Buzzing %s..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "Akukwazeki ukuthumela umyalezo kwi-%s:"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
msgstr ""
+"Akukwazeki ukuthumela ifayili ku-%s, umsebenzisi akaxhasi ukudluliswa "
+"kwefayili"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr ""
+"Akukwazeki ukuthumela ifayili ku-%s, umsebenzisi akaxhasi ukudluliswa "
+"kwefayili"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "Ubhaliso aluphumelelanga"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "Nceda ubhale igama leskrini lomntu onqwenela ukubona ulwazi ngaye."
+
+#, fuzzy
+msgid "Select a Resource"
+msgstr "Khetha ifayili"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "Qalisa iNcoko"
msgid "config: Configure a chat room."
msgstr "config: Misela inkqubo yegumbi lencoko."
@@ -4838,6 +4998,21 @@ msgstr "Impazamo yokungenela incoko eyi%s"
msgid "Error in chat %s"
msgstr "Impazamo kwincoko ye%s"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "Kwenzeke impazamo xeshikweni uvula ifayili."
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "Udluliso lwefayili seluqalile"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "Akuphumelelekanga ukugcina umfanekiso: %s\n"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr ""
@@ -4868,10 +5043,6 @@ msgid "Please select the resource of %s to which you would like to send a file"
msgstr "Nceda ubhale igama leskrini lomntu onqwenela ukubona ulwazi ngaye."
#, fuzzy
-msgid "Select a Resource"
-msgstr "Khetha ifayili"
-
-#, fuzzy
msgid "Edit User Mood"
msgstr "Izimo zomSebenzisi"
@@ -4911,9 +5082,20 @@ msgstr "Ii-Akhawunti"
msgid "Select an action"
msgstr "Khetha ifayili"
+#. 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
+#, fuzzy, c-format
+msgid "Unable to add \"%s\"."
+msgstr "Akukwazeki ukufunda ifayili %s."
+
#, fuzzy
-msgid "Unable to retrieve MSN Address Book"
-msgstr "Akukwazeki ukuKhupha uLuhlu lobuhlobo"
+msgid "Buddy Add error"
+msgstr "Impazamo yoLuhlu lomHlobo"
+
+#, fuzzy
+msgid "The username specified does not exist."
+msgstr "Ulungiselelo olutsha alusebenzi."
#, c-format
msgid "Buddy list synchronization issue in %s (%s)"
@@ -5143,7 +5325,7 @@ msgstr "Ipaspothi yabantwana ngaphandle kwemvume yabazali"
msgid "Passport account not yet verified"
msgstr "I-akhawunti yepaspoti ayikaqinisekiswa"
-#, fuzzy, c-format
+#, fuzzy
msgid "Passport account suspended"
msgstr "I-akhawunti yepaspoti ayikaqinisekiswa"
@@ -5238,6 +5420,13 @@ msgstr "Thumela umyalezo ngefowuni ohamba nayo."
msgid "Page"
msgstr "Iphepha"
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "Lumkisa"
+
msgid "Has you"
msgstr "Unawe"
@@ -5281,6 +5470,14 @@ msgid "Album"
msgstr ""
#, fuzzy
+msgid "Game Title"
+msgstr "Isihloko"
+
+#, fuzzy
+msgid "Office Title"
+msgstr "Isihloko"
+
+#, fuzzy
msgid "Set Friendly Name..."
msgstr "Misela iGama Lobuhlobo"
@@ -5502,8 +5699,9 @@ msgstr ""
"U-Pidgin akalufumananga ulwazi kwifayili yomsebenzisi. Mhlawumbi umsebenzisi "
"akakho."
-msgid "Profile URL"
-msgstr "Ifayili yoBuqu yeURL"
+#, fuzzy
+msgid "View web profile"
+msgstr "Akuvumelekanga xa kungekho unxulumano"
#. *< type
#. *< ui_requirement
@@ -5778,13 +5976,6 @@ msgstr "Yongeza kwiNcwadi yeDilesi"
msgid "Do you want to delete this buddy from your address book as well?"
msgstr "Ingaba ufuna ukongeza lo mhlobo kuluhlu lwakho lomhlobo?"
-#. 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
-#, fuzzy, c-format
-msgid "Unable to add \"%s\"."
-msgstr "Akukwazeki ukufunda ifayili %s."
-
#, fuzzy
msgid "The username specified is invalid."
msgstr "Ulungiselelo olutsha alusebenzi."
@@ -5792,6 +5983,9 @@ msgstr "Ulungiselelo olutsha alusebenzi."
msgid "This Hotmail account may not be active."
msgstr ""
+msgid "Profile URL"
+msgstr "Ifayili yoBuqu yeURL"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5806,16 +6000,13 @@ msgstr ""
msgid "MSN Protocol Plugin"
msgstr "Imithetho yokuSebenza yokuNgenisa i-AIM/ICQ"
-msgid "Missing Cipher"
-msgstr ""
-
-msgid "The RC4 cipher could not be found"
+#, c-format
+msgid "No such user: %s"
msgstr ""
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
-msgstr ""
+#, fuzzy
+msgid "User lookup"
+msgstr "AmaGumbi omSebenzisi"
#, fuzzy
msgid "Reading challenge"
@@ -5829,11 +6020,19 @@ msgstr "Ukucela umngeni okungasebenziyo okuvela kwiseva"
msgid "Logging in"
msgstr "Ukungena"
-#, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] ""
-msgstr[1] ""
+#, fuzzy
+msgid "MySpaceIM - No Username Set"
+msgstr "Alikho igama leskrini elinikiweyo."
+
+msgid "You appear to have no MySpace username."
+msgstr ""
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr ""
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr "Ubuqhawukile kwiseva."
#. Can't write _()'d strings in array initializers. Workaround.
#, fuzzy
@@ -5856,14 +6055,22 @@ msgid "MySpace"
msgstr ""
#, fuzzy
-msgid "MySpaceIM - No Username Set"
-msgstr "Alikho igama leskrini elinikiweyo."
+msgid "IM Friends"
+msgstr "Iifestile ze-_IM"
-msgid "You appear to have no MySpace username."
-msgstr ""
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+msgstr[1] ""
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
-msgstr ""
+#, fuzzy
+msgid "Add contacts from server"
+msgstr "Impendulo engasebenziyo evela kwiseva."
#. The session is now set up, ready to be connected. This emits the
#. * signedOn signal, so clients can now do anything with msimprpl, and
@@ -5888,6 +6095,22 @@ msgid "MySpaceIM Error"
msgstr ""
#, fuzzy
+msgid "Invalid input condition"
+msgstr "Ukugqibezela uNxulumano"
+
+#, fuzzy
+msgid "Read buffer full (2)"
+msgstr "Ukrozo luzele"
+
+#, fuzzy
+msgid "Unparseable message"
+msgstr "Akukwazeki ukwahlula umyalezo ngezijungqe"
+
+#, fuzzy, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr "Akukwazekanga ukunxulumana nomququzeleli"
+
+#, fuzzy
msgid "Failed to add buddy"
msgstr "Akuphumelelanga ukudibana nomhlobo kwincoko"
@@ -5899,14 +6122,6 @@ msgstr "Ngenisa uLuhlu lomHlobo ukusuka kwiSeva"
msgid "persist command failed"
msgstr "IZiko loThungelwano alisebenzi"
-#, c-format
-msgid "No such user: %s"
-msgstr ""
-
-#, fuzzy
-msgid "User lookup"
-msgstr "AmaGumbi omSebenzisi"
-
#, fuzzy
msgid "Failed to remove buddy"
msgstr "Akuphumelelanga ukudibana nomhlobo kwincoko"
@@ -5918,39 +6133,16 @@ msgstr ""
msgid "blocklist command failed"
msgstr "IZiko loThungelwano alisebenzi"
-#, fuzzy
-msgid "Invalid input condition"
-msgstr "Ukugqibezela uNxulumano"
-
-#, fuzzy
-msgid "Read buffer full (2)"
-msgstr "Ukrozo luzele"
-
-#, fuzzy
-msgid "Unparseable message"
-msgstr "Akukwazeki ukwahlula umyalezo ngezijungqe"
-
-#, fuzzy, c-format
-msgid "Couldn't connect to host: %s (%d)"
-msgstr "Akukwazekanga ukunxulumana nomququzeleli"
+msgid "Missing Cipher"
+msgstr ""
-#, fuzzy
-msgid "IM Friends"
-msgstr "Iifestile ze-_IM"
+msgid "The RC4 cipher could not be found"
+msgstr ""
-#, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-msgstr[1] ""
-
-#, fuzzy
-msgid "Add contacts from server"
-msgstr "Impendulo engasebenziyo evela kwiseva."
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
msgid "Add friends from MySpace.com"
msgstr ""
@@ -5998,9 +6190,6 @@ msgstr "Umbhalo omKhudlwana"
msgid "User"
msgstr "Abasebenzisi"
-msgid "Profile"
-msgstr "Inkangeleko"
-
#, fuzzy
msgid "Headline"
msgstr "Landula"
@@ -6016,17 +6205,6 @@ msgstr ""
msgid "Client Version"
msgstr "Vala iNcoko"
-#. Protocol won't log in now without a username set.. Disconnect
-#, fuzzy
-msgid "No username set"
-msgstr "Alikho igama leskrini elinikiweyo."
-
-msgid "MySpaceIM - Please Set a Username"
-msgstr ""
-
-msgid "Please enter a username to check its availability:"
-msgstr ""
-
#, fuzzy
msgid "MySpaceIM - Username Available"
msgstr "Inkonzo ayiFumaneki"
@@ -6037,6 +6215,9 @@ msgstr ""
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr ""
+msgid "MySpaceIM - Please Set a Username"
+msgstr ""
+
#, fuzzy
msgid "This username is unavailable."
msgstr "Lo mxholo awunazo izinto ezincumisayo ezifumanekayo."
@@ -6045,6 +6226,14 @@ msgstr "Lo mxholo awunazo izinto ezincumisayo ezifumanekayo."
msgid "Please try another username:"
msgstr "Nceda ufake igama elitsha leqela elikhethiweyo."
+#. Protocol won't log in now without a username set.. Disconnect
+#, fuzzy
+msgid "No username set"
+msgstr "Alikho igama leskrini elinikiweyo."
+
+msgid "Please enter a username to check its availability:"
+msgstr ""
+
#. TODO: icons for each zap
#. Lots of comments for translators:
#. Zap means "to strike suddenly and forcefully as if with a
@@ -6443,7 +6632,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr "Impazamo. Inkxaso yeSSL ayifakelwanga."
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr "Ingqungquthela ivaliwe. Akusekho miyalezo inokuthunyelwa."
@@ -6710,23 +6898,18 @@ msgstr "Ikhamera"
msgid "Screen Sharing"
msgstr "iGama leSkrini"
-#, c-format
msgid "Free For Chat"
msgstr "Ukukhululeka Ukuba ungaNcokola"
-#, c-format
msgid "Not Available"
msgstr "Akufumaneki"
-#, c-format
msgid "Occupied"
msgstr "Uxakekile"
-#, c-format
msgid "Web Aware"
msgstr "Ukuqaphela iwebhu ye-Intanethi"
-#, c-format
msgid "Invisible"
msgstr "Engabonakaliyo"
@@ -6772,7 +6955,7 @@ msgstr ""
"alisebenzi. Amagama eskrini kufuneka aqale ngoonombumba okanye abe "
"nonobumba kuphela, amanani nezithuba, okanye amanani kuphela."
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
#, fuzzy
msgid "Invalid username."
@@ -6789,7 +6972,7 @@ msgstr "I-akhawunti yakho ngokwangoku ixhonyiwe."
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "Inkonzo yeAOL Instant Messenger ayifumaneki okwethutyana."
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6825,10 +7008,8 @@ msgstr ""
msgid "_OK"
msgstr "Kulungile"
-#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
+#, fuzzy, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
msgstr ""
"Kunokwenzeka ukhutshwe kunxibelelwano kungekudala. Mhlawumbi unokufuna "
"ukusebenzisa uTOC kude kube oku kulungisiwe. Hlola u %s malunga nokuhlaziya."
@@ -6985,7 +7166,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] "Uphose umyalezo %hu ovela ku %s ngenxa yesizathu esingaziwayo."
msgstr[1] "Uphose imiyalezo %hu evela ku %s ngenxa yesizathu esingaziwayo."
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "Akukwazeki ukuthumela umyalezo: %s:"
@@ -7007,6 +7188,9 @@ msgstr "Kunxibelelwano ukusuka"
msgid "Member Since"
msgstr "Lilungu ukusukela"
+msgid "Profile"
+msgstr "Inkangeleko"
+
msgid "Your AIM connection may be lost."
msgstr "Kunokwenzeka unxibelelwano lwakho no-AIM lulahlekile."
@@ -7305,6 +7489,7 @@ msgstr "Ukunxulumana"
msgid "Get AIM Info"
msgstr "Fumana uLwazi"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "Hlela uLuvo lomHlobo"
@@ -7422,7 +7607,7 @@ msgstr "Ukucela %s to connect to us at %s:%hu IM ethe Ngqo."
msgid "Attempting to connect to %s:%hu."
msgstr "Ukuzama ukunxulumana ne %s kwi %s:%hu malung ne IM Ngqo."
-#, fuzzy, c-format
+#, fuzzy
msgid "Attempting to connect via proxy server."
msgstr "Ukuzama ukunxulumana ne %s kwi %s:%hu malung ne IM Ngqo."
@@ -7532,7 +7717,7 @@ msgstr "I-Opera"
msgid "Visible"
msgstr "Engabonakaliyo"
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
#, fuzzy
@@ -7628,17 +7813,51 @@ msgstr "Igqibele ukuHlaziywa"
msgid "Could not change buddy information."
msgstr "Nceda ufake umhlobo wokutsibela."
-#, c-format
-msgid "%d needs Q&A"
+#, fuzzy
+msgid "Mobile"
+msgstr "Ifowuni ohamba nayo"
+
+msgid "Note"
+msgstr "Inqaku"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "UmFanekiso ongumQondiso womHlobo"
+
+msgid "Change his/her memo as you like"
msgstr ""
#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "Yongeza umHlobo"
+msgid "_Modify"
+msgstr "_Lungisa"
-msgid "Input answer here"
+#, fuzzy
+msgid "Memo Modify"
+msgstr "_Lungisa"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "Iseva ixakekile"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
msgstr ""
+#, fuzzy, c-format
+msgid "%u requires verification"
+msgstr "Isicelo soGunyaziso"
+
+#, fuzzy
+msgid "Add buddy question"
+msgstr "Yongeza umhlobo kuluhlu lwakho?"
+
+#, fuzzy
+msgid "Enter answer here"
+msgstr "Akukwazeki ukuthumela uvimba weefayili."
+
msgid "Send"
msgstr "Thumela"
@@ -7650,19 +7869,20 @@ msgstr "I-password ayisebenzi"
msgid "Authorization denied message:"
msgstr "Umyalezo wokuLandula uGunyaziso:"
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr ""
#, fuzzy, c-format
-msgid "%d needs authentication"
+msgid "%u needs authorization"
msgstr "Uqinisekiso lombhalo ocacileyo"
#, fuzzy
msgid "Add buddy authorize"
msgstr "Yongeza umhlobo kuluhlu lwakho?"
-msgid "Input request here"
-msgstr ""
+#, fuzzy
+msgid "Enter request here"
+msgstr "Ngena kwiSeva yeNgqungquthela"
#, fuzzy
msgid "Would you be my friend?"
@@ -7685,7 +7905,7 @@ msgid "Failed sending authorize"
msgstr "Nceda undigunyazise!"
#, fuzzy, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr "Akuphumelelanga ukudibana nomhlobo kwincoko"
#, fuzzy, c-format
@@ -7731,6 +7951,10 @@ msgid "You can only search for permanent Qun\n"
msgstr ""
#, fuzzy
+msgid "(Invalid UTF-8 string)"
+msgstr "ImiMiselo engasebenziyo yomQobo"
+
+#, fuzzy
msgid "Not member"
msgstr "Lilungu ukusukela"
@@ -7775,15 +7999,18 @@ msgstr ""
msgid "Join QQ Qun"
msgstr "Ngenela iNcoko"
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
+msgid "Input request here"
msgstr ""
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "Inombolo yeFowuni"
+
msgid "Successfully joined Qun"
msgstr ""
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
#, fuzzy
@@ -7794,7 +8021,7 @@ msgstr "Ezinokukhethwe kwiSandi"
msgid "Failed:"
msgstr "Akuphumelelanga"
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
#, fuzzy
@@ -7806,11 +8033,12 @@ msgid ""
"this operation will eventually remove this Qun."
msgstr ""
-msgid "Sorry, you are not our style ..."
-msgstr ""
+#, fuzzy
+msgid "Sorry, you are not our style"
+msgstr "Uxolo, ndibalekele ucuntsu!"
#, fuzzy
-msgid "Successfully changed Qun member"
+msgid "Successfully changed Qun members"
msgstr "Inombolo yeFowuni"
#, fuzzy
@@ -7821,7 +8049,7 @@ msgid "You have successfully created a Qun"
msgstr ""
#, fuzzy
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr "Ingaba unqwenela ukungenela incoko?"
#, fuzzy
@@ -7829,28 +8057,28 @@ msgid "Setup"
msgstr "_Misela"
#, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr ""
#, c-format
-msgid "%d request to join Qun %d"
+msgid "%u request to join Qun %u"
msgstr ""
#, fuzzy, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr "Akuphumelelanga ukudibana nomhlobo kwincoko"
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr "Susa umHlobo"
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "Susa umHlobo"
#, fuzzy, c-format
msgid "Unknown-%d"
@@ -7970,6 +8198,13 @@ msgstr "<b>UmSebenzisi:</b> %s<br>"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<b>Elinye igama:</b> %s<br>"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<b>UmSebenzisi:</b> %s<br>"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7977,7 +8212,7 @@ msgid "<i>Feel free to join us!</i> :)"
msgstr ""
#, fuzzy, c-format
-msgid "About OpenQ r%s"
+msgid "About OpenQ %s"
msgstr "Malunga nePidgin"
#, fuzzy
@@ -7998,6 +8233,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "Malunga nePidgin"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Idilesi yaseKhaya"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -8029,7 +8268,6 @@ msgstr ""
msgid "QQ2008"
msgstr ""
-#. #endif
#, fuzzy
msgid "Connect by TCP"
msgstr "Ukunxulumana"
@@ -8042,6 +8280,9 @@ msgstr "Bonisa ezimbalwa ezinokukhethwa"
msgid "Show server news"
msgstr "Bonisa ezimbalwa ezinokukhethwa"
+msgid "Show chat room when msg comes"
+msgstr ""
+
#, fuzzy
msgid "Keep alive interval (seconds)"
msgstr "ImPazamo efundiweyo"
@@ -8051,11 +8292,7 @@ msgid "Update interval (seconds)"
msgstr "ImPazamo efundiweyo"
#, fuzzy
-msgid "Can not decrypt server reply"
-msgstr "Akukwazeki ukufumana ulwazi ngeseva"
-
-#, fuzzy
-msgid "Can not decrypt get server reply"
+msgid "Cannot decrypt server reply"
msgstr "Akukwazeki ukufumana ulwazi ngeseva"
#, c-format
@@ -8078,21 +8315,23 @@ msgid "Activation required"
msgstr "Kufuneka uBhaliso"
#, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr ""
#, fuzzy
-msgid "Keep alive error"
-msgstr "ImPazamo efundiweyo"
+msgid "Could not decrypt server reply"
+msgstr "Akukwazeki ukufumana ulwazi ngeseva"
-msgid "Requesting captcha ..."
-msgstr ""
+#, fuzzy
+msgid "Requesting captcha"
+msgstr "Isicelo simbaxa"
-msgid "Checking code of captcha ..."
+msgid "Checking captcha"
msgstr ""
-msgid "Failed captcha verify"
-msgstr ""
+#, fuzzy
+msgid "Failed captcha verification"
+msgstr "U-Yahoo akaphumelelanga! Ukunyanisekisa"
#, fuzzy
msgid "Captcha Image"
@@ -8102,7 +8341,7 @@ msgstr "Gcina umFanekiso"
msgid "Enter code"
msgstr "UkuTshintsha i-Password"
-msgid "QQ Captcha Verifing"
+msgid "QQ Captcha Verification"
msgstr ""
#, fuzzy
@@ -8110,16 +8349,15 @@ msgid "Enter the text from the image"
msgstr "Nceda ufake igama leqela elimele ukongezwa."
#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
+msgid "Unknown reply when checking password (0x%02X)"
msgstr ""
#, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
msgstr ""
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "Akukwazeki ukunxulumana."
@@ -8127,12 +8365,6 @@ msgstr "Akukwazeki ukunxulumana."
msgid "Socket error"
msgstr "Impazamo engaziwayo"
-#, fuzzy, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr "Ubuqhawukile kwiseva."
-
#, fuzzy
msgid "Unable to read from socket"
msgstr "Akukwazeki ukufunda isokethi"
@@ -8146,11 +8378,11 @@ msgid "Connection lost"
msgstr "Unxibelelwano luvaliwe"
#, fuzzy
-msgid "Get server ..."
+msgid "Getting server"
msgstr "Ulwazi oluMiselweyo lomSebenzisi..."
#, fuzzy
-msgid "Request token"
+msgid "Requesting token"
msgstr "Isicelo silandulwe"
#, fuzzy
@@ -8162,17 +8394,13 @@ msgid "Invalid server or port"
msgstr "Igama lomsebenzisi okanye ipassword zezingasebenziyo"
#, fuzzy
-msgid "Connecting server ..."
-msgstr "UkuNxulumana neSeva"
+msgid "Connecting to server"
+msgstr "Ukunxibelelana neSeva yeSILC"
#, fuzzy
msgid "QQ Error"
msgstr "Impazamo yokuFunda"
-#, fuzzy
-msgid "Failed to send IM."
-msgstr "Akuphumelelanga ukungenela incoko"
-
#, fuzzy, c-format
msgid ""
"Server News:\n"
@@ -8182,6 +8410,10 @@ msgid ""
msgstr "Ukuthumela kweSeva kwi-ICQ"
#, fuzzy, c-format
+msgid "%s:%s"
+msgstr "Abasebenzisi be %s: %s"
+
+#, fuzzy, c-format
msgid "From %s:"
msgstr "Ukusuka"
@@ -8191,32 +8423,30 @@ msgid ""
"%s"
msgstr "Ulwazi ngeSeva"
-msgid "Unknow SERVER CMD"
-msgstr ""
+#, fuzzy
+msgid "Unknown SERVER CMD"
+msgstr "Isizathu esingaziwayo."
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
#, fuzzy
msgid "QQ Qun Command"
msgstr "Umyalelo"
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr ""
-
-msgid "Can not decrypt login reply"
-msgstr ""
+#, fuzzy
+msgid "Could not decrypt login reply"
+msgstr "Akukwazeki ukufumana ulwazi ngeseva"
#, fuzzy
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr "Isizathu esingaziwayo."
#, fuzzy
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr "Isizathu esingaziwayo."
#, fuzzy, c-format
@@ -9075,9 +9305,6 @@ msgstr "iGama lomButho"
msgid "Unit"
msgstr "Icandelo loMbutho"
-msgid "Note"
-msgstr "Inqaku"
-
msgid "Join Chat"
msgstr "Ngenela iNcoko"
@@ -9777,6 +10004,10 @@ msgstr "Akukwazeki ukusombulula igama lomququzeleli."
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr "Izikhewu zeIRC kunokwenzeka zingabinazo izithuba ezimhlophe"
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "Bonisa ezimbalwa ezinokukhethwa"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -9818,193 +10049,10 @@ msgid "Auth Domain"
msgstr "Ngokuzenzekela"
#, c-format
-msgid "Looking up %s"
-msgstr "Ukujonga phezulu %s"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "Ukunxulumana kwi%s akuphumelelanga"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "Ukungena: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "Akukwazeki ukubhala ifayili %s."
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "Akukwazeki ukufunda ifayili %s."
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "Umyalezo mde kakhulu, ii-byte %s zokugqibela zishunqulelwe."
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "I-%s ayingenanga ngokwangoku."
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "Isilumkiso se-%s asivunyelwanga."
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "Umyalezo ulahliwe, ugqithisile kumda wesantya seseva."
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "Incoko %s ayifumaneki."
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "Uthumela imiyalezo ngokukhawuleza kakhulu kwi %s."
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "Uphose iIM evela %s ngenxa yokuba ibinkulu kakhulu."
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "Uphose iIM evela %s ngenxa yokuba ithunyelwe ngesantya esikhulu."
-
-#, c-format
-msgid "Failure."
-msgstr "Ukungaphumeleli."
-
-#, c-format
-msgid "Too many matches."
-msgstr "Kukho ufano oluninzi kakhulu."
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "Kufuneka izichazi ezongezelelweyo."
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "Inkonzo yovimba weefayili ayifumaneki okwethutyana."
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "Ukukhangela i-imeyile kunezithintelo."
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "Igama eliyintloko alihoywangwa."
-
-#, c-format
-msgid "No keywords."
-msgstr "Akukho magama aphambili."
-
-#, c-format
-msgid "User has no directory information."
-msgstr "Umsebenzisi akanalo ulwazi ngovimba weefayili."
-
-#, c-format
-msgid "Country not supported."
-msgstr "ILizwe alixhaswanga."
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "Ukungaphumeleli akwaziwa: %s."
-
-#, fuzzy, c-format
-msgid "Incorrect username or password."
-msgstr "Isiqhulo okanye ipassword ephosakeleyo."
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "Inkonzo ayifumaneki okwethutyana."
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "Umgangatho wakho wesilumkiso uphezulu kakhulu okwangoku kungeniso."
-
-#, 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 ""
-"Ubungena uphume kaninzi kakhulu kunxibelelwano. Yima imizuzu elishumi ze "
-"uphinde uzame. Ukuba uyaqhubeka ukuzama, kuya kufuneka ulinde nangakumbi."
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "Kwenzeke impazamo engaziwayo yokungena: %s."
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "Impazamo engaziwayo, %d, yenzekile. Ulwazi: %s"
-
-#, fuzzy
-msgid "Invalid Groupname"
-msgstr "Iqela elingasebenziyo"
-
-msgid "Connection Closed"
-msgstr "Unxibelelwano luvaliwe"
-
-msgid "Waiting for reply..."
-msgstr "Ulindele impendulo..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "I-TOC ibuyile kunqumamo lwayo. Ngoku ungathumela imiyalezo kwakhona."
-
-msgid "Password Change Successful"
-msgstr "UTshintsho lwePassword luPhumelele"
-
-msgid "_Group:"
-msgstr "_Iqela:"
-
-msgid "Get Dir Info"
-msgstr "Fumana uLwazi Ngqo"
-
-msgid "Set Dir Info"
-msgstr "Misela uLwazi Ngqo"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "Akukwazekanga ukuvula i-%s malunga nokubhala!"
-
-msgid "File transfer failed; other side probably canceled."
+msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr ""
-"Ukudluliswa kwefayili akuphumelelanga; mhlawumbi elinye icala licinyiwe."
-
-msgid "Could not connect for transfer."
-msgstr "Akukwazekanga ukunxibelelana ukuze kudluliswe."
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "Akukwazekanga ukubhala kumntla wefayili. Ifayili ayinakudluliswa."
-
-#, fuzzy
-msgid "Save As..."
-msgstr "Gcina umFanekiso womQondiso njeng..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s ucela %s ukwamkela %d ifayili: %s (%.2f %s)%s%s"
-msgstr[1] "%s ucela %s ukwamkela %d iifayili: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s ucela ukuba uthumela ifayili"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "Imithetho yokuSebenza yokuNgenisa iTOC"
-#, c-format
-msgid "%s has sent you a webcam invite, which is not yet supported."
+msgid "Your SMS was not delivered"
msgstr ""
msgid "Your Yahoo! message did not get sent."
@@ -10296,14 +10344,9 @@ msgstr "Ikhonkco eliHle 3"
msgid "Last Update"
msgstr "Igqibele ukuHlaziywa"
-#, c-format
-msgid "User information for %s unavailable"
-msgstr "Ulwazi lomsebenzisi eli-%s alifumaneki"
-
#, fuzzy
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr ""
"Uxolo, le nkangeleko ibonakala ingathi ingolwimi okungaxhaswa ngeli xesha."
@@ -10649,10 +10692,6 @@ msgstr "Musa ukuPhazamisa"
msgid "Extended away"
msgstr "Ukungabikho okwandisiweyo"
-#, fuzzy
-msgid "Mobile"
-msgstr "Ifowuni ohamba nayo"
-
msgid "Listening to music"
msgstr ""
@@ -10694,20 +10733,6 @@ msgstr "%s iyekile ukuba lilalela"
msgid "%x %X"
msgstr ""
-#, fuzzy, c-format
-msgid "Error Reading %s"
-msgstr ""
-"Impazamo yokufunda %s: \n"
-"%s.\n"
-
-#, 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 ""
-"Kuvele impazamo xa kwahlulwa uluhlu lomhlobo ngezijungqe. Belufakelwanga, "
-"yaye ifayili endala ishenxile ukuya kwi-blist.xml~."
-
msgid "Calculating..."
msgstr "Ukubala..."
@@ -10782,6 +10807,12 @@ msgstr ""
msgid "Unable to connect to %s: %s"
msgstr "Akwazeki ukunxulumana neseva ngama %s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr "Iseva ifuna i-SSL ukuze ingene"
+
#, c-format
msgid " - %s"
msgstr ""
@@ -10815,6 +10846,20 @@ msgstr "Unxibelelwano luvaliwe"
msgid "Address already in use."
msgstr "Loo fayili sele ikhona"
+#, fuzzy, c-format
+msgid "Error Reading %s"
+msgstr ""
+"Impazamo yokufunda %s: \n"
+"%s.\n"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"Kuvele impazamo xa kwahlulwa uluhlu lomhlobo ngezijungqe. Belufakelwanga, "
+"yaye ifayili endala ishenxile ukuya kwi-blist.xml~."
+
#, fuzzy
msgid "Internet Messenger"
msgstr "Abathumeli bemiYalezo yaNgoko nangoko"
@@ -10864,10 +10909,9 @@ msgstr "Izaziso ngemeyile entsha"
msgid "Use this buddy _icon for this account:"
msgstr ""
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s ekunokukhethwa kuko"
+#, fuzzy
+msgid "_Advanced"
+msgstr "_Rhoxisa"
#, fuzzy
msgid "Use GNOME Proxy Settings"
@@ -10903,9 +10947,6 @@ msgstr "Xa uqwalasela ngocoselelo"
msgid "you can see the butterflies mating"
msgstr "ungawabona amabhabhathane esenza ubuqabane"
-msgid "Proxy Options"
-msgstr "Umqobo onokukhethwa"
-
msgid "Proxy _type:"
msgstr "Uhlobo _lomqobo:"
@@ -10936,8 +10977,8 @@ msgid "Create _this new account on the server"
msgstr ""
#, fuzzy
-msgid "_Advanced"
-msgstr "_Rhoxisa"
+msgid "_Proxy"
+msgstr "Akukho Mqobo"
#, fuzzy
msgid "Enabled"
@@ -11006,6 +11047,17 @@ msgid "I_M"
msgstr "I-I_M"
#, fuzzy
+msgid "_Audio Call"
+msgstr "Ngenela inCoko"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "InCoko ngeVidiyo"
+
+#, fuzzy
msgid "_Send File..."
msgstr "_Thumela iFayili"
@@ -11162,6 +11214,10 @@ msgid "/Tools/_Certificates"
msgstr "/Izixhobo/izinto _eziKhethwayo"
#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/Izixhobo/_ukuNgabikho"
+
+#, fuzzy
msgid "/Tools/Plu_gins"
msgstr "/Izixhobo/iiNtshukumo zokuNgenisa"
@@ -11171,10 +11227,6 @@ msgstr "/Izixhobo/izinto _eziKhethwayo"
msgid "/Tools/Pr_ivacy"
msgstr "/Izixhobo/Ukuba _Ngasese"
-#, fuzzy
-msgid "/Tools/Smile_y"
-msgstr "/Izixhobo/_ukuNgabikho"
-
msgid "/Tools/_File Transfers"
msgstr "/Izixhobo/ukuDlulisa i_Fayili"
@@ -11307,8 +11359,8 @@ msgstr "Uxwebhu lokusebenzisa"
msgid "By status"
msgstr "Ngemo"
-msgid "By log size"
-msgstr "Ngobukhulu beqhosha lwesandisi"
+msgid "By recent log activity"
+msgstr ""
#, fuzzy, c-format
msgid "%s disconnected"
@@ -11326,6 +11378,9 @@ msgstr "_Nxulumanisa kwakhona"
msgid "Re-enable"
msgstr "Bhalisa i-Akhawunti eNtsha yeJabber"
+msgid "SSL FAQs"
+msgstr ""
+
#, fuzzy
msgid "Welcome back!"
msgstr "%s ibuyile"
@@ -11425,6 +11480,9 @@ msgstr ""
msgid "A_lias:"
msgstr "Ngokunye:"
+msgid "_Group:"
+msgstr "_Iqela:"
+
msgid "Auto_join when account becomes online."
msgstr ""
@@ -11483,14 +11541,6 @@ msgstr "Ngeli thuba awubhaliswanga nge-akhawunti enokongeza loo mhlobo."
msgid "Invite Buddy Into Chat Room"
msgstr "Memela umHlobo kwiGumbi leNcoko"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Nceda ufake igama lomsebenzisi onqwenela ukummema, ngokuhambisana nomyalezo "
-"ozikhethelayo wokumema."
-
msgid "_Buddy:"
msgstr "_UmHlobo:"
@@ -11570,6 +11620,22 @@ msgstr "/Incoko/_Gcina Njenge..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/Incoko/Cima"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/Incoko/_Vala"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/Incoko/_Vala"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/Incoko/_Vala"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/Incoko/Buka _Ingxelo yezinto ezenziweyo"
+
msgid "/Conversation/Se_nd File..."
msgstr "/Incoko/Thu_mela iFayili..."
@@ -11650,6 +11716,18 @@ msgstr "/_INcoko"
msgid "/Conversation/View Log"
msgstr "/Incoko/Buka Ingxelo yezinto ezenziweyo"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/Incoko/_Vala"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/Incoko/Buka Ingxelo yezinto ezenziweyo"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/Incoko/_Vala"
+
msgid "/Conversation/Send File..."
msgstr "/Incoko/Thumela iFayili..."
@@ -11850,6 +11928,9 @@ msgstr "iDilesi"
msgid "Ka-Hing Cheung"
msgstr ""
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "inkxaso"
@@ -12002,6 +12083,10 @@ msgid "Ubuntu Georgian Translators"
msgstr "Abaguquleli baNgoku"
#, fuzzy
+msgid "Khmer"
+msgstr "I-Opera"
+
+#, fuzzy
msgid "Kannada"
msgstr "Ukugxotha"
@@ -12025,6 +12110,10 @@ msgid "Macedonian"
msgstr "IsiMacedonia"
#, fuzzy
+msgid "Mongolian"
+msgstr "IsiMacedonia"
+
+#, fuzzy
msgid "Bokmål Norwegian"
msgstr "IsiNorwegia"
@@ -12133,8 +12222,25 @@ msgid ""
"<BR><BR>"
msgstr ""
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
#, fuzzy, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"4\">:</FONT> #Pidgin kwi- irc.freenode.net<BR><BR>"
+
+#, fuzzy, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"4\">:</FONT> #Pidgin kwi- irc.freenode.net<BR><BR>"
#, fuzzy
@@ -12476,15 +12582,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr "Izaziso ngemeyile entsha"
-msgid "_Copy Email Address"
-msgstr "_Kopa iDilesi ye-iMeyile"
-
-msgid "_Open Link in Browser"
-msgstr "_IsiKhangeli soQhagamshelo oluVulekileyo"
-
-msgid "_Copy Link Location"
-msgstr "_Indawo yokuNxulumanisa iKopi"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -12749,6 +12846,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12766,6 +12864,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12797,16 +12896,27 @@ msgstr ""
msgid "Pidgin"
msgstr "Ukubiza ngomnxeba"
-#, fuzzy
-msgid "Open All Messages"
-msgstr "Thumela umYalezo"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
+
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
#, fuzzy
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgid "Calling..."
+msgstr "Ukubala..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
msgstr ""
-"<span weight=\"bold\" size=\"larger\">Unemeyile!</span>\n"
-"\n"
-"%s"
#, c-format
msgid "%s has %d new message."
@@ -12837,6 +12947,35 @@ msgstr ""
"'Incwadana' yomyalelo wokukhangela ikhethiwe, kodwa akukho myalelo "
"umiselweyo."
+#, fuzzy
+msgid "Open All Messages"
+msgstr "Thumela umYalezo"
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr ""
+"<span weight=\"bold\" size=\"larger\">Unemeyile!</span>\n"
+"\n"
+"%s"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "UkuTsibela umHlobo omTsha"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr ""
+"<span weight=\"bold\" size=\"larger\">Unemeyile!</span>\n"
+"\n"
+"%s"
+
+#, fuzzy
+msgid "No message"
+msgstr "(umyalezo 1)"
+
msgid "The following plugins will be unloaded."
msgstr ""
@@ -12890,6 +13029,10 @@ msgstr ""
msgid "Select a file"
msgstr "Khetha ifayili"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "Hlela ukuTsibela umHlobo"
+
#. Create the "Pounce on Whom" frame.
#, fuzzy
msgid "Pounce on Whom"
@@ -12975,6 +13118,50 @@ msgstr ""
msgid "Pounce Target"
msgstr "Atsityelwe Nini"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "Umhlobo uqalisa uku_chwetheza"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "Umsebenzisi uyachwetheza..."
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "Bha_lisa"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "Buya _kukulalela"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "_Buya kukungabikho"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "I-Ping"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "Phu_ma"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "%s ilalele"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "Xa ungekho"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "Thumela um_yalezo"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "Isiganeko esingaziwayo sokutsiba. Nceda wenze ingxelo ngoku!"
+
msgid "Smiley theme failed to unpack."
msgstr ""
@@ -12999,6 +13186,12 @@ msgstr "Izniqumlisi"
msgid "Cl_ose conversations with the Escape key"
msgstr "Iincoko nge %s"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "uLuhlu lwabaHlobo"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "Inkqubo yeTreyi yomFanekiso womQondiso"
@@ -13124,10 +13317,6 @@ msgstr ""
msgid "Cannot start browser configuration program."
msgstr "Alufumaneki ulwazi lomsebenzisi"
-#, fuzzy
-msgid "ST_UN server:"
-msgstr "_Iseva:"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr ""
@@ -13155,6 +13344,10 @@ msgstr "_Qalisa isiqhagamshelanisi:"
msgid "_End port:"
msgstr "_Isiphelo sesiQhagamshelisi:"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
#, fuzzy
msgid "Proxy Server &amp; Browser"
msgstr "Iseva yoMqobo"
@@ -13184,6 +13377,10 @@ msgstr "Iseva yoMqobo"
msgid "No proxy"
msgstr "Akukho mqobo"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "_Umsebenzisi:"
@@ -13354,14 +13551,14 @@ msgid "Auto-away"
msgstr "Ukungabikho nokuzenzekela"
#, fuzzy
-msgid "Change status when _idle"
-msgstr "Misela ukungabikho _xa ulalele"
-
-#, fuzzy
msgid "_Minutes before becoming idle:"
msgstr "_Imizuzu phambi kokumisela ukungabikho:"
#, fuzzy
+msgid "Change status when _idle"
+msgstr "Misela ukungabikho _xa ulalele"
+
+#, fuzzy
msgid "Change _status to:"
msgstr "Tshintsha iDilesi ukuya ku:"
@@ -13521,6 +13718,12 @@ msgstr "Gci_na & uSebenzise"
msgid "Status for %s"
msgstr "uBume: %s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
#, fuzzy
msgid "Custom Smiley"
msgstr "Fakela okuNcumisayo"
@@ -13531,15 +13734,15 @@ msgstr ""
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
+msgstr ""
+
#, fuzzy
msgid "Duplicate Shortcut"
msgstr "Ifayili ePhambili yoLuntu"
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
-msgstr ""
-
#, fuzzy
msgid "Please select an image for the smiley."
msgstr "Nceda ufake igama elitsha leqela elikhethiweyo."
@@ -13553,18 +13756,22 @@ msgid "Add Smiley"
msgstr "Ncuma!"
#, fuzzy
-msgid "Smiley _Image"
+msgid "_Image:"
msgstr "Gcina umFanekiso"
-#. Smiley shortcut
+#. Shortcut text
#, fuzzy
-msgid "Smiley S_hortcut"
+msgid "S_hortcut text:"
msgstr "Izniqumlisi"
#, fuzzy
msgid "Smiley"
msgstr "Ncuma!"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "Izniqumlisi"
+
msgid "Custom Smiley Manager"
msgstr ""
@@ -13693,6 +13900,16 @@ msgid ""
msgstr ""
#, fuzzy
+msgid "_Open Link"
+msgstr "_Ikhonco elivulekileyo:"
+
+msgid "_Copy Link Location"
+msgstr "_Indawo yokuNxulumanisa iKopi"
+
+msgid "_Copy Email Address"
+msgstr "_Kopa iDilesi ye-iMeyile"
+
+#, fuzzy
msgid "Save File"
msgstr "Gcina iFayili..."
@@ -14730,10 +14947,6 @@ msgid "Only when docked"
msgstr ""
#, fuzzy
-msgid "_Flash window when chat messages are received"
-msgstr "_Bhanyazisa iFestile xa imiyalezo isamkelwa"
-
-#, fuzzy
msgid "Windows Pidgin Options"
msgstr "IinDlela zokuKhetha zokuNgena"
@@ -14785,6 +14998,232 @@ msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr ""
#, fuzzy
+#~ msgid "Invite message"
+#~ msgstr "(umyalezo 1)"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr ""
+#~ "Nceda ufake igama lomsebenzisi onqwenela ukummema, ngokuhambisana "
+#~ "nomyalezo ozikhethelayo wokumema."
+
+#, fuzzy
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "Akukwazeki ukuKhupha uLuhlu lobuhlobo"
+
+#~ msgid ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+#~ msgstr ""
+#~ "Kunokwenzeka ukhutshwe kunxibelelwano kungekudala. Mhlawumbi unokufuna "
+#~ "ukusebenzisa uTOC kude kube oku kulungisiwe. Hlola u %s malunga "
+#~ "nokuhlaziya."
+
+#, fuzzy
+#~ msgid "Add buddy Q&A"
+#~ msgstr "Yongeza umHlobo"
+
+#, fuzzy
+#~ msgid "Can not decrypt get server reply"
+#~ msgstr "Akukwazeki ukufumana ulwazi ngeseva"
+
+#, fuzzy
+#~ msgid "Keep alive error"
+#~ msgstr "ImPazamo efundiweyo"
+
+#, fuzzy
+#~ msgid ""
+#~ "Lost connection with server:\n"
+#~ "%d, %s"
+#~ msgstr "Ubuqhawukile kwiseva."
+
+#, fuzzy
+#~ msgid "Connecting server ..."
+#~ msgstr "UkuNxulumana neSeva"
+
+#, fuzzy
+#~ msgid "Failed to send IM."
+#~ msgstr "Akuphumelelanga ukungenela incoko"
+
+#~ msgid "Looking up %s"
+#~ msgstr "Ukujonga phezulu %s"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "Ukunxulumana kwi%s akuphumelelanga"
+
+#~ msgid "Signon: %s"
+#~ msgstr "Ukungena: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "Akukwazeki ukubhala ifayili %s."
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "Akukwazeki ukufunda ifayili %s."
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "Umyalezo mde kakhulu, ii-byte %s zokugqibela zishunqulelwe."
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "I-%s ayingenanga ngokwangoku."
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "Isilumkiso se-%s asivunyelwanga."
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr "Umyalezo ulahliwe, ugqithisile kumda wesantya seseva."
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "Incoko %s ayifumaneki."
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "Uthumela imiyalezo ngokukhawuleza kakhulu kwi %s."
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "Uphose iIM evela %s ngenxa yokuba ibinkulu kakhulu."
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr "Uphose iIM evela %s ngenxa yokuba ithunyelwe ngesantya esikhulu."
+
+#~ msgid "Failure."
+#~ msgstr "Ukungaphumeleli."
+
+#~ msgid "Too many matches."
+#~ msgstr "Kukho ufano oluninzi kakhulu."
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "Kufuneka izichazi ezongezelelweyo."
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "Inkonzo yovimba weefayili ayifumaneki okwethutyana."
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "Ukukhangela i-imeyile kunezithintelo."
+
+#~ msgid "Keyword ignored."
+#~ msgstr "Igama eliyintloko alihoywangwa."
+
+#~ msgid "No keywords."
+#~ msgstr "Akukho magama aphambili."
+
+#~ msgid "User has no directory information."
+#~ msgstr "Umsebenzisi akanalo ulwazi ngovimba weefayili."
+
+#~ msgid "Country not supported."
+#~ msgstr "ILizwe alixhaswanga."
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "Ukungaphumeleli akwaziwa: %s."
+
+#, fuzzy
+#~ msgid "Incorrect username or password."
+#~ msgstr "Isiqhulo okanye ipassword ephosakeleyo."
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "Inkonzo ayifumaneki okwethutyana."
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "Umgangatho wakho wesilumkiso uphezulu kakhulu okwangoku kungeniso."
+
+#~ 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 ""
+#~ "Ubungena uphume kaninzi kakhulu kunxibelelwano. Yima imizuzu elishumi ze "
+#~ "uphinde uzame. Ukuba uyaqhubeka ukuzama, kuya kufuneka ulinde nangakumbi."
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "Kwenzeke impazamo engaziwayo yokungena: %s."
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "Impazamo engaziwayo, %d, yenzekile. Ulwazi: %s"
+
+#, fuzzy
+#~ msgid "Invalid Groupname"
+#~ msgstr "Iqela elingasebenziyo"
+
+#~ msgid "Connection Closed"
+#~ msgstr "Unxibelelwano luvaliwe"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "Ulindele impendulo..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr ""
+#~ "I-TOC ibuyile kunqumamo lwayo. Ngoku ungathumela imiyalezo kwakhona."
+
+#~ msgid "Password Change Successful"
+#~ msgstr "UTshintsho lwePassword luPhumelele"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "Fumana uLwazi Ngqo"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "Misela uLwazi Ngqo"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "Akukwazekanga ukuvula i-%s malunga nokubhala!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr ""
+#~ "Ukudluliswa kwefayili akuphumelelanga; mhlawumbi elinye icala licinyiwe."
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "Akukwazekanga ukunxibelelana ukuze kudluliswe."
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "Akukwazekanga ukubhala kumntla wefayili. Ifayili ayinakudluliswa."
+
+#, fuzzy
+#~ msgid "Save As..."
+#~ msgstr "Gcina umFanekiso womQondiso njeng..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s ucela %s ukwamkela %d ifayili: %s (%.2f %s)%s%s"
+#~ msgstr[1] "%s ucela %s ukwamkela %d iifayili: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s ucela ukuba uthumela ifayili"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "Imithetho yokuSebenza yokuNgenisa iTOC"
+
+#~ msgid "User information for %s unavailable"
+#~ msgstr "Ulwazi lomsebenzisi eli-%s alifumaneki"
+
+#~ msgid "%s Options"
+#~ msgstr "%s ekunokukhethwa kuko"
+
+#~ msgid "Proxy Options"
+#~ msgstr "Umqobo onokukhethwa"
+
+#~ msgid "By log size"
+#~ msgstr "Ngobukhulu beqhosha lwesandisi"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "_IsiKhangeli soQhagamshelo oluVulekileyo"
+
+#, fuzzy
+#~ msgid "ST_UN server:"
+#~ msgstr "_Iseva:"
+
+#, fuzzy
+#~ msgid "Smiley _Image"
+#~ msgstr "Gcina umFanekiso"
+
+#, fuzzy
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "Izniqumlisi"
+
+#, fuzzy
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "_Bhanyazisa iFestile xa imiyalezo isamkelwa"
+
+#, fuzzy
#~ msgid "A group with the name already exists."
#~ msgstr "Ifayili enelo gama sele ikhona"
@@ -14853,13 +15292,6 @@ msgstr ""
#~ msgstr "Uqinisekile ukufuna ukususa umyalezo wokungabikho \"%s\"?"
#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr "Abasebenzisi be %s: %s"
-
-#, fuzzy
#~ msgid "System Message"
#~ msgstr "Thumela umYalezo"
@@ -14999,9 +15431,6 @@ msgstr ""
#~ msgid "Invalid screen name"
#~ msgstr "IGama lomSebenzisi elingaSebenziyo"
-#~ msgid "Unable to make SSL connection to server."
-#~ msgstr "Akukwazeki ukwenza unxibelelwano lweSSL kwiseva."
-
#~ msgid "Too evil (sender)"
#~ msgstr "Ukhohlakele kakhulu (umthumeli)"
@@ -15269,8 +15698,8 @@ msgstr ""
#~ "You can get version %s from:<br><a href=\"http://Pidgin.sourceforge.net/"
#~ "\">http://Pidgin.sourceforge.net</a>."
#~ msgstr ""
-#~ "Ungafumana inguqulelo ye%s ivela:<br><ahref=\"http://Pidgin.souceforge.net/"
-#~ "\">http://Pidgin.sourceforge.net</a>."
+#~ "Ungafumana inguqulelo ye%s ivela:<br><ahref=\"http://Pidgin.souceforge."
+#~ "net/\">http://Pidgin.sourceforge.net</a>."
#~ msgid "Delay"
#~ msgstr "Ukubambezela"
@@ -15426,10 +15855,10 @@ msgstr ""
#~ "all at once. It is written using GTK+ and is licensed under the GNU GPL."
#~ "<BR><BR>"
#~ msgstr ""
-#~ "I-Pidgin ngumxhasi omiselweyo wemiyalezo okwaziyo ukusebenzisa iAIM, iMSN, "
-#~ "iYahoo!, iJabber, iICQ, iSILC, iNovell GroupWise, iNapster, iZephyr, "
-#~ "neGadu-Gadu zonke ngexexha elinye. Ibhalwa kusetyenziswa iGtk+ yaye "
-#~ "inelayisensi ngaphantsi kweGPL.<BR><BR>"
+#~ "I-Pidgin ngumxhasi omiselweyo wemiyalezo okwaziyo ukusebenzisa iAIM, "
+#~ "iMSN, iYahoo!, iJabber, iICQ, iSILC, iNovell GroupWise, iNapster, "
+#~ "iZephyr, neGadu-Gadu zonke ngexexha elinye. Ibhalwa kusetyenziswa iGtk+ "
+#~ "yaye inelayisensi ngaphantsi kweGPL.<BR><BR>"
#, fuzzy
#~ msgid "<FONT SIZE=\"4\">IRC:</FONT> #winPidgin on irc.freenode.net<BR><BR>"
@@ -15474,9 +15903,6 @@ msgstr ""
#~ msgid "_Idle"
#~ msgstr "_Lalela"
-#~ msgid "Retur_n from idle"
-#~ msgstr "Buya _kukulalela"
-
#~ msgid "Pounce Action"
#~ msgstr "Intshukumo yokuTsibela"
@@ -15770,8 +16196,8 @@ msgstr ""
#~ msgid ""
#~ "When this happens, TOC ignores any messages sent to it, and may kick you "
-#~ "off if you send a message. Pidgin will prevent anything from going through. "
-#~ "This is only temporary, please be patient."
+#~ "off if you send a message. Pidgin will prevent anything from going "
+#~ "through. This is only temporary, please be patient."
#~ msgstr ""
#~ "Xa oku kusenzeka, iTOC ayithatheli ngqalelo nayiphi na imiyalezo "
#~ "ethunyelwa kuyo, yaye inokukukhupha xa uthumela umyalezo. U-Pidgin uya "
@@ -15789,8 +16215,8 @@ msgstr ""
#~ msgid ""
#~ "The normal authentication method has failed. This means either your "
#~ "password is incorrect, or Yahoo!'s authentication scheme has changed. "
-#~ "Pidgin will now attempt to log in using Web Messenger authentication, which "
-#~ "will result in reduced functionality and features."
+#~ "Pidgin will now attempt to log in using Web Messenger authentication, "
+#~ "which will result in reduced functionality and features."
#~ msgstr ""
#~ "Indlela eqhelekileyo yokuqinisekisa ayiphumelelanga. Oku kuthetha ukuthi "
#~ "mhlawumbi i-password iphosakele, okanye inkqubo yokuqinisekisa kaYahoo! "
@@ -15819,9 +16245,6 @@ msgstr ""
#~ msgstr[0] "(%d myalezo)"
#~ msgstr[1] "(%d imiyalezo)"
-#~ msgid "(1 message)"
-#~ msgstr "(umyalezo 1)"
-
#, fuzzy
#~ msgid "Default auto-away"
#~ msgstr "Ukungabikho nokuzenzekela"
@@ -15889,8 +16312,8 @@ msgstr ""
#~ "Gives Pidgin the ability to be remote-controlled through third-party "
#~ "applications or through the Pidgin-remote tool."
#~ msgstr ""
-#~ "Inika iPidgin ukubanakho ukulawulwa kwenye indawo okanye yimisebenzi yeqela "
-#~ "lesithathu okanye ngesixhobo se-Pidgin esikwenye indawo."
+#~ "Inika iPidgin ukubanakho ukulawulwa kwenye indawo okanye yimisebenzi "
+#~ "yeqela lesithathu okanye ngesixhobo se-Pidgin esikwenye indawo."
#~ msgid "Docked _Buddy List is always on top"
#~ msgstr "ULuhlu oluShunquliweyo _lomHlobo lungaphezulu ngamaxa onke"
@@ -15925,9 +16348,6 @@ msgstr ""
#~ msgid "Away title: "
#~ msgstr "Isihloko sokungabikho: "
-#~ msgid "Buddy List Error"
-#~ msgstr "Impazamo yoLuhlu lomHlobo"
-
#~ msgid "Size of the expander arrow"
#~ msgstr "Ubukhulu beqhosha lwesandisi"
@@ -16329,8 +16749,8 @@ msgstr ""
#~ msgstr "Akukwazeki ukufaka ezithandwayo"
#~ msgid ""
-#~ "Pidgin was not able to load your preferences because they are stored in an "
-#~ "old format that is no longer used. Please reconfigure your settings "
+#~ "Pidgin 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 ""
#~ "U-Pidgin akakwazanga ukufakela izinto ezikhethwayo ngenxa yokuba zigcinwa "
@@ -16440,16 +16860,16 @@ msgstr ""
#~ msgstr "Akukwazeki ukufikelela kuvimba weefayili"
#~ msgid ""
-#~ "Pidgin was unable to search the Directory because it was unable to connect "
-#~ "to the directory server. Please try again later."
+#~ "Pidgin was unable to search the Directory because it was unable to "
+#~ "connect to the directory server. Please try again later."
#~ msgstr ""
#~ "U-Pidgin akakwazanga ukukhangela uVimba weefayili ngenxa yokuba "
#~ "kungakwazeki ukunxibelelana neseva yovimba weefayili. Nceda uzama emva "
#~ "kwethutyana."
#~ msgid ""
-#~ "Pidgin was unable to change your password due to an error connecting to the "
-#~ "Gadu-Gadu server. Please try again later."
+#~ "Pidgin was unable to change your password due to an error connecting to "
+#~ "the Gadu-Gadu server. Please try again later."
#~ msgstr ""
#~ "U-Pidgin akakwazanga ukutshintsha ipassword yakho ngenxa yempazamo "
#~ "kunxibelelwano neseva yeGadu-Gadu. Nceda uzame emva kwethutyana."
@@ -16461,8 +16881,8 @@ msgstr ""
#~ msgstr "Akukwazeki ukufikelela kwinkangeleko yomsebenzisi."
#~ msgid ""
-#~ "Pidgin was unable to access this user's profile due to an error connecting "
-#~ "to the directory server. Please try again later."
+#~ "Pidgin was unable to access this user's profile due to an error "
+#~ "connecting to the directory server. Please try again later."
#~ msgstr ""
#~ "U-Pidgin akakwazanga ukufikelela kwinkangeleko yomsebenzisi ngenxa "
#~ "yempazamo yonxibelelwano novimba weefayili kwiseva. Nceda uzame kwakhona "
@@ -16606,9 +17026,6 @@ msgstr ""
#~ "%s umeme %s kwigumbi lencoko %s:\n"
#~ "<b>%s</b>"
-#~ msgid "Sorry, I ran out for a bit!"
-#~ msgstr "Uxolo, ndibalekele ucuntsu!"
-
#~ msgid "Myanmar"
#~ msgstr "IsiMyamar"
@@ -16622,9 +17039,6 @@ msgstr ""
#~ msgid "Miscellaneous error"
#~ msgstr "Impazamo yeZinto ngezinto"
-#~ msgid "Initiate Chat"
-#~ msgstr "Qalisa iNcoko"
-
#~ msgid "Unknown error when attempting to authorize with MSN login server."
#~ msgstr "Impazamo engaziwayo xa uzama ukugunyazisa neseva yeMSN xa ungena."
diff --git a/po/zh_CN.po b/po/zh_CN.po
index e7a40b2fd1..bbbed4250d 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pidgin HEAD\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
+"POT-Creation-Date: 2009-04-30 10:41-0400\n"
"PO-Revision-Date: 2007-05-20 20:22+0800\n"
"Last-Translator: Funda Wang <fundawang@linux.net.cn>\n"
"Language-Team: zh_CN <i18n-translation@lists.linux.net.cn>\n"
@@ -25,13 +25,13 @@ msgstr "Finch"
msgid "%s. Try `%s -h' for more information.\n"
msgstr "%s。试试“%s -h”查看帮助。\n"
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -603,19 +603,6 @@ msgstr "记录已停止。此会话中的后续消息将不会被记录。"
msgid "Send To"
msgstr "发送到"
-#, fuzzy
-msgid "Invite message"
-msgstr "在消息中插入"
-
-msgid "Invite"
-msgstr "邀请"
-
-#, fuzzy
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr "您想要邀请谁?请输入他/她的名字,以及可选的邀请消息。"
-
msgid "Conversation"
msgstr "对话"
@@ -859,6 +846,41 @@ msgstr "对话"
msgid "System Log"
msgstr "系统日志"
+#, fuzzy
+msgid "Calling ... "
+msgstr "正在计算..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "接受"
+
+msgid "Reject"
+msgstr "拒绝"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "您已经参与了频道%s%s"
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "电子邮件"
@@ -892,6 +914,9 @@ msgstr "继续"
msgid "IM"
msgstr "开聊"
+msgid "Invite"
+msgstr "邀请"
+
msgid "(none)"
msgstr "(无)"
@@ -1098,7 +1123,6 @@ msgstr "%s 走了。(%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s 给您发送了消息。(%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "未知的千里眼。请报告此错误!"
@@ -1144,7 +1168,6 @@ msgstr "更改状态前等几分钟"
msgid "Change status to"
msgstr "将状态更改为"
-#. Conversations
msgid "Conversations"
msgstr "对话"
@@ -1463,7 +1486,6 @@ msgid ""
"conversation into the current conversation."
msgstr "打开新对话时,此插件将会将上次对话插入当前对话。"
-#, c-format
msgid "Online"
msgstr "在线"
@@ -1513,6 +1535,28 @@ msgstr "历史"
msgid "Lastlog plugin."
msgstr "Lastlog 插件。"
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "URL"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "账户"
@@ -1611,13 +1655,6 @@ msgstr "接受聊天邀请吗?"
msgid "SSL Certificate Verification"
msgstr ""
-#. Number of actions
-msgid "Accept"
-msgstr "接受"
-
-msgid "Reject"
-msgstr "拒绝"
-
msgid "_View Certificate..."
msgstr "查看证书(_V)..."
@@ -1753,6 +1790,16 @@ msgstr "%s 离开了聊天室。"
msgid "%s left the room (%s)."
msgstr "%s 离开了聊天室(%s)。"
+#, fuzzy
+msgid "Invite to chat"
+msgstr "邀请会议"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr "您想要邀请谁?请输入他/她的名字,以及可选的邀请消息。"
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "获得连接失败: %s"
@@ -1887,7 +1934,6 @@ msgstr "开始来自 %2$s 的 %1$s 传送"
msgid "Transfer of file %s complete"
msgstr "文件 %s 传送完成"
-#, c-format
msgid "File transfer complete"
msgstr "文件传送完成"
@@ -1895,7 +1941,6 @@ msgstr "文件传送完成"
msgid "You canceled the transfer of %s"
msgstr "您取消了 %s 的传送"
-#, c-format
msgid "File transfer cancelled"
msgstr "文件传送已取消"
@@ -2084,7 +2129,6 @@ msgstr "(%s) %s <自动回复>: %s\n"
msgid "You are using %s, but this plugin requires %s."
msgstr "您正在使用 %s,但插件需要 %s。"
-#, c-format
msgid "This plugin has not defined an ID."
msgstr ""
@@ -2549,6 +2593,32 @@ msgstr ""
msgid "Do not ask. Always save in pounce."
msgstr ""
+#, fuzzy
+msgid "One Time Password"
+msgstr "输入密码"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -2748,7 +2818,6 @@ msgid ""
"Unable to establish connection with the local mDNS server. Is it running?"
msgstr "无法建立与本地 mDNS 服务器的连接。服务器是否在运行中?"
-#. Creating the options for the protocol
msgid "First name"
msgstr "名"
@@ -2780,6 +2849,11 @@ msgstr "Bonjour 协议插件"
msgid "Purple Person"
msgstr "Purple 联系人"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "地区"
+
msgid "Bonjour"
msgstr "Bonjour"
@@ -2936,13 +3010,13 @@ msgstr "为好友选择聊天:%s"
msgid "Add to chat..."
msgstr "添加到聊天..."
+#. Global
msgid "Available"
msgstr "可用"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "离开"
@@ -3280,6 +3354,17 @@ msgid ""
"invalid characters."
msgstr "您所选的账户名称被服务器拒绝。其中可能包含无效的字符。"
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "此聊天名已经在使用中"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "昵称"
+
msgid "Cannot change nick"
msgstr "无法更改昵称"
@@ -3524,6 +3609,41 @@ msgstr "服务器的挑战无效"
msgid "SASL error"
msgstr "SASL 错误"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "没有给出理由。"
+
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "不支持的版本"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"无法建立与服务器:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"无法建立与服务器:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "无法初始化连接"
+
+msgid "Unable to create socket"
+msgstr "无法创建套接字"
+
+msgid "Write error"
+msgstr "写错误"
+
msgid "Full Name"
msgstr "全名"
@@ -3588,6 +3708,10 @@ msgstr "客户"
msgid "Operating System"
msgstr "操作系统"
+#, fuzzy
+msgid "Local Time"
+msgstr "本地文件:"
+
msgid "Last Activity"
msgstr ""
@@ -3819,7 +3943,6 @@ msgstr "唠叨"
msgid "Extended Away"
msgstr "远远离开"
-#, c-format
msgid "Do Not Disturb"
msgstr "请勿打扰"
@@ -3945,9 +4068,6 @@ msgstr "查找房间"
msgid "You require encryption, but it is not available on this server."
msgstr ""
-msgid "Write error"
-msgstr "写错误"
-
#, fuzzy
msgid "Ping timeout"
msgstr "纯文本"
@@ -3957,14 +4077,9 @@ msgstr "读取错误"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"无法建立与服务器:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "无法创建套接字"
msgid "Invalid XMPP ID"
msgstr "无效 XMPP ID"
@@ -3972,6 +4087,10 @@ msgstr "无效 XMPP ID"
msgid "Invalid XMPP ID. Domain must be set."
msgstr ""
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "连接到服务器失败。"
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "%s@%s 注册成功"
@@ -4064,9 +4183,18 @@ msgstr "正在认证"
msgid "Re-initializing Stream"
msgstr "重新初始化流"
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr "未认证"
+msgid "Mood"
+msgstr "心情"
+
+msgid "Now Listening"
+msgstr ""
+
msgid "Both"
msgstr "双向"
@@ -4088,12 +4216,6 @@ msgstr "无"
msgid "Subscription"
msgstr "订阅"
-msgid "Mood"
-msgstr "心情"
-
-msgid "Now Listening"
-msgstr ""
-
#, fuzzy
msgid "Mood Text"
msgstr "血型"
@@ -4338,18 +4460,24 @@ msgstr "无法踢出用户 %s"
msgid "Unable to ping user %s"
msgstr "无法屏蔽用户 %s"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
+msgstr "无法给 %s 发送文件,用户不支持文件传送"
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
+msgstr "无法给 %s 发送文件,用户不支持文件传送"
#, fuzzy, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "无法给 %s 发送文件,用户不支持文件传送"
+#, c-format
+msgid "Buzzing %s..."
+msgstr ""
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
msgid "Buzz"
@@ -4359,9 +4487,35 @@ msgstr ""
msgid "%s has buzzed you!"
msgstr "%s 已经将您[%s]添加为好友"
-#, c-format
-msgid "Buzzing %s..."
-msgstr ""
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "无法给 %s 发送消息。"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "无法给 %s 发送文件,用户不支持文件传送"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr "无法给 %s 发送文件,用户不支持文件传送"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "注册失败"
+
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "您想要查看谁的信息?请输入他/她的用户名或别名。"
+
+#, fuzzy
+msgid "Select a Resource"
+msgstr "选择文件"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "发起聊天(_C)"
msgid "config: Configure a chat room."
msgstr "config: 配置聊天室。"
@@ -4518,6 +4672,21 @@ msgstr "加入聊天 %s 出错"
msgid "Error in chat %s"
msgstr "聊天 %s 出错"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "打开文件时发生了错误。"
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "文件传送失败"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "打开文件“%s”:%s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr "无法给 %s 发送文件,用户不支持文件传送"
@@ -4542,10 +4711,6 @@ msgid "Please select the resource of %s to which you would like to send a file"
msgstr "您想要查看谁的信息?请输入他/她的用户名或别名。"
#, fuzzy
-msgid "Select a Resource"
-msgstr "选择文件"
-
-#, fuzzy
msgid "Edit User Mood"
msgstr "用户模式"
@@ -4585,9 +4750,19 @@ msgstr "动作"
msgid "Select an action"
msgstr "选择文件"
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr "无法添加“%s”。"
+
+msgid "Buddy Add error"
+msgstr ""
+
#, fuzzy
-msgid "Unable to retrieve MSN Address Book"
-msgstr "选择 Notes 地址簿"
+msgid "The username specified does not exist."
+msgstr "指定的用户名无效。"
#, c-format
msgid "Buddy list synchronization issue in %s (%s)"
@@ -4814,7 +4989,7 @@ msgstr "没有父母在的儿童 Passport"
msgid "Passport account not yet verified"
msgstr "Passport 账户未验证"
-#, fuzzy, c-format
+#, fuzzy
msgid "Passport account suspended"
msgstr "Passport 账户未验证"
@@ -4910,6 +5085,13 @@ msgstr "发送移动消息。"
msgid "Page"
msgstr "寻呼"
+msgid "Playing a game"
+msgstr ""
+
+#, fuzzy
+msgid "Working"
+msgstr "工作"
+
msgid "Has you"
msgstr ""
@@ -4951,6 +5133,14 @@ msgstr "美工"
msgid "Album"
msgstr "Adium"
+#, fuzzy
+msgid "Game Title"
+msgstr "标题"
+
+#, fuzzy
+msgid "Office Title"
+msgstr "标题"
+
msgid "Set Friendly Name..."
msgstr "设置友好的名称..."
@@ -5139,8 +5329,9 @@ msgid ""
"does not exist."
msgstr "在用户的个人资料中找不到任何信息。用户可能不存在。"
-msgid "Profile URL"
-msgstr "配置文件 URL"
+#, fuzzy
+msgid "View web profile"
+msgstr "离线时隐藏"
#. *< type
#. *< ui_requirement
@@ -5383,13 +5574,6 @@ msgstr "添加到地址簿"
msgid "Do you want to delete this buddy from your address book as well?"
msgstr "您是否想要将此人加为好友?"
-#. only notify the user about problems adding to the friends list
-#. * maybe we should do something else for other lists, but it probably
-#. * won't cause too many problems if we just ignore it
-#, c-format
-msgid "Unable to add \"%s\"."
-msgstr "无法添加“%s”。"
-
#, fuzzy
msgid "The username specified is invalid."
msgstr "指定的用户名无效。"
@@ -5397,6 +5581,9 @@ msgstr "指定的用户名无效。"
msgid "This Hotmail account may not be active."
msgstr "此 Hotmail 账户可能未激活。"
+msgid "Profile URL"
+msgstr "配置文件 URL"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5411,16 +5598,13 @@ msgstr "此 Hotmail 账户可能未激活。"
msgid "MSN Protocol Plugin"
msgstr "AIM 协议插件"
-msgid "Missing Cipher"
-msgstr ""
-
-msgid "The RC4 cipher could not be found"
+#, c-format
+msgid "No such user: %s"
msgstr ""
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
-msgstr ""
+#, fuzzy
+msgid "User lookup"
+msgstr "用户房间"
msgid "Reading challenge"
msgstr "读取挑战"
@@ -5433,10 +5617,21 @@ msgstr "服务器的挑战无效"
msgid "Logging in"
msgstr "日志"
-#, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] ""
+#, fuzzy
+msgid "MySpaceIM - No Username Set"
+msgstr "无名称"
+
+msgid "You appear to have no MySpace username."
+msgstr ""
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr ""
+
+#, fuzzy
+msgid "Lost connection with server"
+msgstr ""
+"丢失与服务器的连接\n"
+"%s"
#. Can't write _()'d strings in array initializers. Workaround.
#, fuzzy
@@ -5459,14 +5654,21 @@ msgid "MySpace"
msgstr ""
#, fuzzy
-msgid "MySpaceIM - No Username Set"
-msgstr "无名称"
+msgid "IM Friends"
+msgstr "即时消息窗口(_I)"
-msgid "You appear to have no MySpace username."
-msgstr ""
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
-msgstr ""
+#, fuzzy
+msgid "Add contacts from server"
+msgstr "服务器的响应无效。"
#. The session is now set up, ready to be connected. This emits the
#. * signedOn signal, so clients can now do anything with msimprpl, and
@@ -5490,6 +5692,22 @@ msgid "MySpaceIM Error"
msgstr ""
#, fuzzy
+msgid "Invalid input condition"
+msgstr "完成连接"
+
+#, fuzzy
+msgid "Read buffer full (2)"
+msgstr "队列满"
+
+#, fuzzy
+msgid "Unparseable message"
+msgstr "无法处理消息"
+
+#, fuzzy, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr "无法连接到主机"
+
+#, fuzzy
msgid "Failed to add buddy"
msgstr "在聊天中加入好友失败"
@@ -5501,14 +5719,6 @@ msgstr "从文件装入好友列表..."
msgid "persist command failed"
msgstr "切换板失败"
-#, c-format
-msgid "No such user: %s"
-msgstr ""
-
-#, fuzzy
-msgid "User lookup"
-msgstr "用户房间"
-
#, fuzzy
msgid "Failed to remove buddy"
msgstr "在聊天中加入好友失败"
@@ -5520,38 +5730,16 @@ msgstr ""
msgid "blocklist command failed"
msgstr "切换板失败"
-#, fuzzy
-msgid "Invalid input condition"
-msgstr "完成连接"
-
-#, fuzzy
-msgid "Read buffer full (2)"
-msgstr "队列满"
-
-#, fuzzy
-msgid "Unparseable message"
-msgstr "无法处理消息"
-
-#, fuzzy, c-format
-msgid "Couldn't connect to host: %s (%d)"
-msgstr "无法连接到主机"
+msgid "Missing Cipher"
+msgstr ""
-#, fuzzy
-msgid "IM Friends"
-msgstr "即时消息窗口(_I)"
+msgid "The RC4 cipher could not be found"
+msgstr ""
-#, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-
-#, fuzzy
-msgid "Add contacts from server"
-msgstr "服务器的响应无效。"
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
msgid "Add friends from MySpace.com"
msgstr ""
@@ -5596,9 +5784,6 @@ msgstr "较大字体"
msgid "User"
msgstr "用户"
-msgid "Profile"
-msgstr "个人资料"
-
#, fuzzy
msgid "Headline"
msgstr "昵称(_H):"
@@ -5614,17 +5799,6 @@ msgstr ""
msgid "Client Version"
msgstr "关闭对话"
-#. Protocol won't log in now without a username set.. Disconnect
-#, fuzzy
-msgid "No username set"
-msgstr "无名称"
-
-msgid "MySpaceIM - Please Set a Username"
-msgstr ""
-
-msgid "Please enter a username to check its availability:"
-msgstr ""
-
#, fuzzy
msgid "MySpaceIM - Username Available"
msgstr "服务不可用"
@@ -5635,6 +5809,9 @@ msgstr ""
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr ""
+msgid "MySpaceIM - Please Set a Username"
+msgstr ""
+
#, fuzzy
msgid "This username is unavailable."
msgstr "此主题没有可用的表情。"
@@ -5643,6 +5820,14 @@ msgstr "此主题没有可用的表情。"
msgid "Please try another username:"
msgstr "请输入 %s 的新名称"
+#. Protocol won't log in now without a username set.. Disconnect
+#, fuzzy
+msgid "No username set"
+msgstr "无名称"
+
+msgid "Please enter a username to check its availability:"
+msgstr ""
+
#. TODO: icons for each zap
#. Lots of comments for translators:
#. Zap means "to strike suddenly and forcefully as if with a
@@ -6023,7 +6208,6 @@ msgstr "无法连接到服务器。请输入您想要连接的服务器的地址
msgid "Error. SSL support is not installed."
msgstr "出错。SSL 支持未安装。"
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr "此会议已关筹。不会再送出消息。"
@@ -6282,23 +6466,18 @@ msgstr "相机"
msgid "Screen Sharing"
msgstr "用户名"
-#, c-format
msgid "Free For Chat"
msgstr "无事闲聊"
-#, c-format
msgid "Not Available"
msgstr "不可用"
-#, c-format
msgid "Occupied"
msgstr "琐事缠身"
-#, c-format
msgid "Web Aware"
msgstr "网上留意"
-#, c-format
msgid "Invisible"
msgstr "隐身"
@@ -6347,7 +6526,7 @@ msgstr ""
"无法登入: 无法以 %s 登入,原因是用户名无效。用户名必须是有效的电子邮件地址,"
"或者以字母开头,且只能包含字母、数字和空格,或者只包含数字。"
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
#, fuzzy
msgid "Invalid username."
@@ -6364,7 +6543,7 @@ msgstr "您的账户被停用。"
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "AOL 即时通讯服务暂时不可用。"
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6398,12 +6577,9 @@ msgstr "输入所显示的六位数字。"
msgid "_OK"
msgstr "确定(_O)"
-#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
-msgstr ""
-"您即将被断开。您可能想要使用 TOC 直到这一问题被修正。请检查 %s 上的更新。"
+#, fuzzy, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
+msgstr "您即将被断开。请检查 %s 上的更新。"
msgid "Unable to get a valid AIM login hash."
msgstr "无法获取有效的 AIM 登录码。"
@@ -6537,7 +6713,7 @@ msgid "You missed %hu message from %s for an unknown reason."
msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] "您错过了 %2$s 的 %1$hu 条消息,原因未知。"
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "无法发送消息: %s"
@@ -6559,6 +6735,9 @@ msgstr "上线时间"
msgid "Member Since"
msgstr "注册时间"
+msgid "Profile"
+msgstr "个人资料"
+
msgid "Your AIM connection may be lost."
msgstr "您的 AIM 连接可能已丢失。"
@@ -6815,6 +6994,7 @@ msgstr "连接(_O)"
msgid "Get AIM Info"
msgstr "获得 AIM 信息"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "编辑好友注释"
@@ -6926,7 +7106,6 @@ msgstr "请求 %s 连接到 %s:%hu 的二人世界。"
msgid "Attempting to connect to %s:%hu."
msgstr "正在试图连接到 %s:%hu。"
-#, c-format
msgid "Attempting to connect via proxy server."
msgstr "正在试图通过代理服务器连接。"
@@ -7021,7 +7200,7 @@ msgstr "其它"
msgid "Visible"
msgstr "隐身"
-msgid "Firend Only"
+msgid "Friend Only"
msgstr ""
#, fuzzy
@@ -7112,16 +7291,48 @@ msgstr "上次更新"
msgid "Could not change buddy information."
msgstr "请输入好友信息。"
-#, c-format
-msgid "%d needs Q&A"
+msgid "Mobile"
+msgstr "移动"
+
+msgid "Note"
+msgstr "备注"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "好友图标"
+
+msgid "Change his/her memo as you like"
msgstr ""
#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "添加好友"
+msgid "_Modify"
+msgstr "修改"
#, fuzzy
-msgid "Input answer here"
+msgid "Memo Modify"
+msgstr "修改"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "服务器忙"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%u requires verification"
+msgstr "请求认证"
+
+#, fuzzy
+msgid "Add buddy question"
+msgstr "将用户加为好友吗?"
+
+#, fuzzy
+msgid "Enter answer here"
msgstr "在此输入请求"
msgid "Send"
@@ -7135,18 +7346,19 @@ msgid "Authorization denied message:"
msgstr "认证拒绝消息:"
#, fuzzy
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr "抱歉,我不接受好友..."
#, fuzzy, c-format
-msgid "%d needs authentication"
+msgid "%u needs authorization"
msgstr "用户 %d 需要身份验证"
#, fuzzy
msgid "Add buddy authorize"
msgstr "将用户加为好友吗?"
-msgid "Input request here"
+#, fuzzy
+msgid "Enter request here"
msgstr "在此输入请求"
msgid "Would you be my friend?"
@@ -7169,7 +7381,7 @@ msgid "Failed sending authorize"
msgstr "请同意我将您加入好友!"
#, fuzzy, c-format
-msgid "Failed removing buddy %d"
+msgid "Failed removing buddy %u"
msgstr "在聊天中加入好友失败"
#, fuzzy, c-format
@@ -7214,6 +7426,10 @@ msgid "You can only search for permanent Qun\n"
msgstr "您只能搜索永久 QQ 群\n"
#, fuzzy
+msgid "(Invalid UTF-8 string)"
+msgstr "无效的代理设置"
+
+#, fuzzy
msgid "Not member"
msgstr "我不是成员"
@@ -7256,16 +7472,19 @@ msgstr "此群不允许其他人加入"
msgid "Join QQ Qun"
msgstr "加入聊天"
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
-msgstr ""
+msgid "Input request here"
+msgstr "在此输入请求"
+
+#, fuzzy, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "您成功修改了群成员"
#, fuzzy
msgid "Successfully joined Qun"
msgstr "您成功修改了群成员"
#, c-format
-msgid "Qun %d denied to join"
+msgid "Qun %u denied from joining"
msgstr ""
msgid "QQ Qun Operation"
@@ -7275,7 +7494,7 @@ msgstr "QQ 群操作"
msgid "Failed:"
msgstr "已失败"
-msgid "Join Qun, Unknow Reply"
+msgid "Join Qun, Unknown Reply"
msgstr ""
#, fuzzy
@@ -7290,11 +7509,11 @@ msgstr ""
"此操作将永久删除此群。"
#, fuzzy
-msgid "Sorry, you are not our style ..."
+msgid "Sorry, you are not our style"
msgstr "抱歉,我不接受好友..."
#, fuzzy
-msgid "Successfully changed Qun member"
+msgid "Successfully changed Qun members"
msgstr "您成功修改了群成员"
#, fuzzy
@@ -7305,35 +7524,35 @@ msgid "You have successfully created a Qun"
msgstr "您成功创建了一个群"
#, fuzzy
-msgid "Would you like to set detailed information now?"
+msgid "Would you like to set up detailed information now?"
msgstr "您现在是否想要设置群资料?"
msgid "Setup"
msgstr "设置"
#, fuzzy, c-format
-msgid "%d requested to join Qun %d for %s"
+msgid "%u requested to join Qun %u for %s"
msgstr "用户 %d 申请加入 %d 群"
#, fuzzy, c-format
-msgid "%d request to join Qun %d"
+msgid "%u request to join Qun %u"
msgstr "用户 %d 申请加入 %d 群"
#, fuzzy, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
+msgid "Failed to join Qun %u, operated by admin %u"
msgstr "在聊天中加入好友失败"
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
+msgid "<b>Removed buddy %u.</b>"
msgstr "删除好友"
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, fuzzy, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "删除好友"
#, c-format
msgid "Unknown-%d"
@@ -7450,6 +7669,13 @@ msgstr "<b>上次刷新</b>: %s<br>\n"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<b>目前在线人数</b>: %d<br>\n"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<b>上次刷新</b>: %s<br>\n"
+
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7457,7 +7683,7 @@ msgid "<i>Feel free to join us!</i> :)"
msgstr ""
#, fuzzy, c-format
-msgid "About OpenQ r%s"
+msgid "About OpenQ %s"
msgstr "关于 %s"
#, fuzzy
@@ -7478,6 +7704,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "关于 %s"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "家庭住址"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7509,7 +7739,6 @@ msgstr ""
msgid "QQ2008"
msgstr ""
-#. #endif
#, fuzzy
msgid "Connect by TCP"
msgstr "正连接"
@@ -7522,6 +7751,9 @@ msgstr "服务器端口"
msgid "Show server news"
msgstr "服务器地址"
+msgid "Show chat room when msg comes"
+msgstr ""
+
#, fuzzy
msgid "Keep alive interval (seconds)"
msgstr "保持在线错误"
@@ -7531,11 +7763,7 @@ msgid "Update interval (seconds)"
msgstr "保持在线错误"
#, fuzzy
-msgid "Can not decrypt server reply"
-msgstr "无法获取服务器信息"
-
-#, fuzzy
-msgid "Can not decrypt get server reply"
+msgid "Cannot decrypt server reply"
msgstr "无法获取服务器信息"
#, c-format
@@ -7558,21 +7786,24 @@ msgid "Activation required"
msgstr "需要注册"
#, c-format
-msgid "Unknow reply code when login (0x%02X)"
+msgid "Unknown reply code when logging in (0x%02X)"
msgstr ""
-msgid "Keep alive error"
-msgstr "保持在线错误"
+#, fuzzy
+msgid "Could not decrypt server reply"
+msgstr "无法获取服务器信息"
#, fuzzy
-msgid "Requesting captcha ..."
+msgid "Requesting captcha"
msgstr "正在请求 %s 的注意..."
-msgid "Checking code of captcha ..."
-msgstr ""
+#, fuzzy
+msgid "Checking captcha"
+msgstr "正在请求 %s 的注意..."
-msgid "Failed captcha verify"
-msgstr ""
+#, fuzzy
+msgid "Failed captcha verification"
+msgstr "Yahoo! 认证失败"
#, fuzzy
msgid "Captcha Image"
@@ -7582,7 +7813,7 @@ msgstr "保存图像"
msgid "Enter code"
msgstr "输入密码"
-msgid "QQ Captcha Verifing"
+msgid "QQ Captcha Verification"
msgstr ""
#, fuzzy
@@ -7590,30 +7821,21 @@ msgid "Enter the text from the image"
msgstr "请输入组名称"
#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
+msgid "Unknown reply when checking password (0x%02X)"
msgstr ""
#, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
msgstr ""
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "无法连接。"
msgid "Socket error"
msgstr "套接字错误"
-#, fuzzy, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr ""
-"失去与服务器的连接:\n"
-"%s"
-
msgid "Unable to read from socket"
msgstr "无法读取套接字"
@@ -7624,11 +7846,11 @@ msgid "Connection lost"
msgstr "连接丢失"
#, fuzzy
-msgid "Get server ..."
+msgid "Getting server"
msgstr "设置用户信息..."
#, fuzzy
-msgid "Request token"
+msgid "Requesting token"
msgstr "请求被禁止"
msgid "Couldn't resolve host"
@@ -7639,16 +7861,13 @@ msgid "Invalid server or port"
msgstr "无效错误"
#, fuzzy
-msgid "Connecting server ..."
-msgstr "连接服务器"
+msgid "Connecting to server"
+msgstr "连接到 SILC 服务器"
#, fuzzy
msgid "QQ Error"
msgstr "QQ 号错误"
-msgid "Failed to send IM."
-msgstr "发送消息失败"
-
#, fuzzy, c-format
msgid ""
"Server News:\n"
@@ -7658,6 +7877,10 @@ msgid ""
msgstr "ICQ 服务器转发"
#, fuzzy, c-format
+msgid "%s:%s"
+msgstr "%s(%s)"
+
+#, fuzzy, c-format
msgid "From %s:"
msgstr "来自"
@@ -7667,32 +7890,30 @@ msgid ""
"%s"
msgstr "服务器指令:%s"
-msgid "Unknow SERVER CMD"
-msgstr ""
+#, fuzzy
+msgid "Unknown SERVER CMD"
+msgstr "未知原因"
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
#, fuzzy
msgid "QQ Qun Command"
msgstr "命令"
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr ""
-
-msgid "Can not decrypt login reply"
-msgstr ""
+#, fuzzy
+msgid "Could not decrypt login reply"
+msgstr "无法获取服务器信息"
#, fuzzy
-msgid "Unknow LOGIN CMD"
+msgid "Unknown LOGIN CMD"
msgstr "未知原因"
#, fuzzy
-msgid "Unknow CLIENT CMD"
+msgid "Unknown CLIENT CMD"
msgstr "未知原因"
#, c-format
@@ -8481,9 +8702,6 @@ msgstr "组织"
msgid "Unit"
msgstr "单元"
-msgid "Note"
-msgstr "备注"
-
msgid "Join Chat"
msgstr "加入聊天"
@@ -9122,6 +9340,10 @@ msgstr "无法解析主机名"
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr "SIP 用户名不能包含空格或 @ 符号"
+#, fuzzy
+msgid "SIP connect server not specified"
+msgstr "服务器端口"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -9156,191 +9378,12 @@ msgid "Auth Domain"
msgstr "认证域"
#, c-format
-msgid "Looking up %s"
-msgstr "查阅 %s"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "连接到 %s 失败"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "登录名: %s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "无法写入文件 %s。"
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "无法读取文件 %s。"
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "消息太长,最后 %s 字节被截断。"
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s 目前未登入。"
-
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "不允许对 %s 发出警告。"
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "丢失了一条消息,您超过了服务器速度限制。"
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "在 %s 中无法聊天。"
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "您给 %s 发送消息的速度太快。"
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "您错过了来自 %s 的消息,原因是该消息太大。"
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "您错过了来自 %s 的消息,原因是发送太快。"
-
-#, c-format
-msgid "Failure."
-msgstr "失败。"
-
-#, c-format
-msgid "Too many matches."
-msgstr "匹配太多。"
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "需要更多条件。"
-
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "目录服务暂时不可用。"
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "电子邮件查阅被限制。"
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "关键字被忽略。"
-
-#, c-format
-msgid "No keywords."
-msgstr "无关键字。"
-
-#, c-format
-msgid "User has no directory information."
-msgstr "用户没有目录信息。"
-
-#, c-format
-msgid "Country not supported."
-msgstr "国家不被支持。"
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "未知失败: %s。"
-
-#, fuzzy, c-format
-msgid "Incorrect username or password."
-msgstr "昵称或密码不对。"
-
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "服务暂时不可用。"
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "您的警告级别太高,无法登入。"
-
-#, c-format
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
-msgstr ""
-"您连接和断开得太频繁。请等十分钟,然后再试一次。如果您继续重试,您等的时间可"
-"能会更长。"
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "发生了未知登入错误: %s。"
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "发生了未知错误 %d。信息: %s"
-
-msgid "Invalid Groupname"
-msgstr "无效的组名"
-
-msgid "Connection Closed"
-msgstr "连接已关闭"
-
-msgid "Waiting for reply..."
-msgstr "正在等候回复..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "TOC 从暂停中恢复。您现在可以再次发送消息了。"
-
-msgid "Password Change Successful"
-msgstr "密码更改成功"
-
-msgid "_Group:"
-msgstr "组(_G):"
-
-msgid "Get Dir Info"
-msgstr "获取目录信息"
-
-msgid "Set Dir Info"
-msgstr "设置目录信息"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "无法打开 %s 写入!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "文件传送失败;可能其中一端取消了传送。"
-
-msgid "Could not connect for transfer."
-msgstr "无法连接进行传送。"
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "无法写入文件头。文件将不会被传送。"
-
-msgid "Save As..."
-msgstr "另存为..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s 请求 %s 接受 %d 个文件: %s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s 请求您发送文件"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "TOC 协议插件"
-
-#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr "%s 向您发送了摄像头邀请,但尚不支持。"
+msgid "Your SMS was not delivered"
+msgstr ""
+
msgid "Your Yahoo! message did not get sent."
msgstr "未发送您的 Yahoo! 消息。"
@@ -9600,13 +9643,9 @@ msgstr "酷链接 3"
msgid "Last Update"
msgstr "上次更新"
-#, c-format
-msgid "User information for %s unavailable"
-msgstr "%s 的用户信息不可用"
-
+#, fuzzy
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
+"This profile is in a language or format that is not supported at this time."
msgstr "抱歉,此配置文件似乎是目前并不支持的语言或格式。"
msgid ""
@@ -9924,9 +9963,6 @@ msgstr "请勿打扰"
msgid "Extended away"
msgstr "远远离开"
-msgid "Mobile"
-msgstr "移动"
-
msgid "Listening to music"
msgstr ""
@@ -9968,16 +10004,6 @@ msgstr "+++ %s 发完呆了"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "读取 %s 出错"
-
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr "读取您的 %s 时遇到了错误。该文件未装入,旧文件被移动到 %s~ 中了。"
-
msgid "Calculating..."
msgstr "正在计算..."
@@ -10044,6 +10070,12 @@ msgstr "写入 %s 出错:%s"
msgid "Unable to connect to %s: %s"
msgstr "无法连接到 %s: %s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr "服务器需要 TLS/SSL 才能登录。没有找到 TLS/SSL 支持。"
+
#, c-format
msgid " - %s"
msgstr ""
@@ -10077,6 +10109,16 @@ msgstr "连接重置"
msgid "Address already in use."
msgstr "此聊天名已经在使用中"
+#, c-format
+msgid "Error Reading %s"
+msgstr "读取 %s 出错"
+
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr "读取您的 %s 时遇到了错误。该文件未装入,旧文件被移动到 %s~ 中了。"
+
msgid "Internet Messenger"
msgstr "互联网通讯程序"
@@ -10119,10 +10161,8 @@ msgstr "新邮件通知(_M)"
msgid "Use this buddy _icon for this account:"
msgstr "此账户使用此好友图标(_I):"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s 选项"
+msgid "_Advanced"
+msgstr "高级(_A)"
msgid "Use GNOME Proxy Settings"
msgstr "使用 GNOME 代理设置"
@@ -10157,9 +10197,6 @@ msgstr "万事成蹉跎"
msgid "you can see the butterflies mating"
msgstr "明日复明日"
-msgid "Proxy Options"
-msgstr "代理选项"
-
msgid "Proxy _type:"
msgstr "代理类型(_T):"
@@ -10188,8 +10225,9 @@ msgstr "基本(_B)"
msgid "Create _this new account on the server"
msgstr "在服务器上创建此新帐户"
-msgid "_Advanced"
-msgstr "高级(_A)"
+#, fuzzy
+msgid "_Proxy"
+msgstr "代理"
msgid "Enabled"
msgstr "已启用"
@@ -10263,6 +10301,17 @@ msgstr "资料(_I)"
msgid "I_M"
msgstr "开聊(_M)"
+#, fuzzy
+msgid "_Audio Call"
+msgstr "添加聊天(_A)"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+#, fuzzy
+msgid "_Video Call"
+msgstr "可视聊天"
+
msgid "_Send File..."
msgstr "发送文件(_S)..."
@@ -10401,6 +10450,10 @@ msgstr "/工具(T)/好友千里眼(_P)"
msgid "/Tools/_Certificates"
msgstr "/工具(T)/证书(_C)"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/工具(T)/隐私(I)"
+
msgid "/Tools/Plu_gins"
msgstr "/工具(T)/插件(_G)"
@@ -10410,10 +10463,6 @@ msgstr "/工具(T)/首选项(_E)"
msgid "/Tools/Pr_ivacy"
msgstr "/工具(T)/隐私(_I)"
-#, fuzzy
-msgid "/Tools/Smile_y"
-msgstr "/工具(T)/隐私(I)"
-
msgid "/Tools/_File Transfers"
msgstr "/工具(T)/文件传送(_F)"
@@ -10534,8 +10583,8 @@ msgstr "手动"
msgid "By status"
msgstr "按状态"
-msgid "By log size"
-msgstr "按日志大小"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -10553,6 +10602,9 @@ msgstr "连接"
msgid "Re-enable"
msgstr "重新启用账户"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr ""
@@ -10638,6 +10690,9 @@ msgstr "您想要将聊天加入您的好友列表,请输入该聊天的别名
msgid "A_lias:"
msgstr "别名(_L):"
+msgid "_Group:"
+msgstr "组(_G):"
+
#, fuzzy
msgid "Auto_join when account becomes online."
msgstr "帐户在线时自动加入。"
@@ -10690,12 +10745,6 @@ msgstr "您目前登入的协议中没有一个可以邀请好友的。"
msgid "Invite Buddy Into Chat Room"
msgstr "邀请好友进入聊天室"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr "您想要邀请谁?请输入他/她的名字,以及可选的邀请消息。"
-
msgid "_Buddy:"
msgstr "好友(_B):"
@@ -10771,6 +10820,22 @@ msgstr "/对话(C)/另存为(_S)..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/对话(C)/清除回滚(_R)"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/对话(C)/更多(_O)"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/对话(C)/更多(_O)"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/对话(C)/更多(_O)"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/对话(C)/查看日志(_L)"
+
msgid "/Conversation/Se_nd File..."
msgstr "/对话(C)/发送文件(_N)..."
@@ -10843,6 +10908,18 @@ msgstr "/对话(C)"
msgid "/Conversation/View Log"
msgstr "/对话(C)/查看日志(L)"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/对话(C)/更多(O)"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/对话(C)/查看日志(L)"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/对话(C)/更多(O)"
+
msgid "/Conversation/Send File..."
msgstr "/对话(C)/发送文件(N)..."
@@ -11023,6 +11100,9 @@ msgstr "美工"
msgid "Ka-Hing Cheung"
msgstr "张家兴"
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "支持"
@@ -11165,6 +11245,10 @@ msgstr "乔治亚语"
msgid "Ubuntu Georgian Translators"
msgstr "Ubuntu 乔治亚语翻译者"
+#, fuzzy
+msgid "Khmer"
+msgstr "其它"
+
msgid "Kannada"
msgstr ""
@@ -11188,6 +11272,10 @@ msgid "Macedonian"
msgstr "马其顿语"
#, fuzzy
+msgid "Mongolian"
+msgstr "马其顿语"
+
+#, fuzzy
msgid "Bokmål Norwegian"
msgstr "挪威语"
@@ -11297,7 +11385,24 @@ msgid ""
msgstr ""
#, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
+#, fuzzy, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"4\">IRC:</FONT> irc.freenode.net 上的 #pidgin<BR><BR>"
+
+#, fuzzy, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
msgstr "<FONT SIZE=\"4\">IRC:</FONT> irc.freenode.net 上的 #pidgin<BR><BR>"
msgid "Current Developers"
@@ -11610,15 +11715,6 @@ msgstr ""
msgid "Enable typing notification"
msgstr "新邮件通知"
-msgid "_Copy Email Address"
-msgstr "复制电子邮件地址(_C)"
-
-msgid "_Open Link in Browser"
-msgstr "在浏览器中打开链接(_O)"
-
-msgid "_Copy Link Location"
-msgstr "复制链接地址(_C)"
-
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -11866,6 +11962,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -11892,6 +11989,7 @@ msgid ""
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -11931,11 +12029,27 @@ msgstr ""
msgid "Pidgin"
msgstr "Pidgin"
-msgid "Open All Messages"
-msgstr "打开全部消息"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">您有新邮件了!</span>"
+msgid "/_Media"
+msgstr ""
+
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "正在计算..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -11962,6 +12076,27 @@ msgid ""
"The 'Manual' browser command has been chosen, but no command has been set."
msgstr "选择了“手动”浏览器命令,但未设置命令。"
+msgid "Open All Messages"
+msgstr "打开全部消息"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">您有新邮件了!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "新建好友千里眼"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">您有新邮件了!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "未知信息"
+
msgid "The following plugins will be unloaded."
msgstr "下列插件将会被卸载。"
@@ -12014,6 +12149,10 @@ msgstr "<b>插件细节</b>"
msgid "Select a file"
msgstr "选择文件"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "编辑好友千里眼"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "监视对象"
@@ -12084,6 +12223,50 @@ msgstr "再现(_R)"
msgid "Pounce Target"
msgstr "监视目标"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "开始打字"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "输入时暂停"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "登入"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s 发完呆了(%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "回来"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "停止打字"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "登出"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "发起了呆"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "离开时"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "发送消息"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "未知的千里眼。请报告此错误!"
+
msgid "Smiley theme failed to unpack."
msgstr "表情主题解包失败。"
@@ -12105,6 +12288,12 @@ msgstr ""
msgid "Cl_ose conversations with the Escape key"
msgstr "与 %s 的对话"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "好友列表"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "系统托盘图标"
@@ -12214,9 +12403,6 @@ msgstr ""
msgid "Cannot start browser configuration program."
msgstr "无法获取用户信息"
-msgid "ST_UN server:"
-msgstr "STUN 服务器(_U):"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">例:stunserver.org</span>"
@@ -12241,6 +12427,10 @@ msgstr "起始端口(_S):"
msgid "_End port:"
msgstr "终止端口(_E):"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
#, fuzzy
msgid "Proxy Server &amp; Browser"
msgstr "代理服务器"
@@ -12270,6 +12460,10 @@ msgstr "代理服务器"
msgid "No proxy"
msgstr "无代理"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "用户(_U):"
@@ -12434,12 +12628,12 @@ msgstr "离开和发呆时"
msgid "Auto-away"
msgstr "自动离开"
-msgid "Change status when _idle"
-msgstr "发呆时更改状态(_I)"
-
msgid "_Minutes before becoming idle:"
msgstr "更改状态前等几分钟(_M):"
+msgid "Change status when _idle"
+msgstr "发呆时更改状态(_I)"
+
msgid "Change _status to:"
msgstr "将状态更改为(_S):"
@@ -12588,6 +12782,12 @@ msgstr "保存并使用(_V)"
msgid "Status for %s"
msgstr "%s 的状态"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
#, fuzzy
msgid "Custom Smiley"
msgstr "插入表情"
@@ -12598,15 +12798,15 @@ msgstr ""
msgid "Please provide a shortcut to associate with the smiley."
msgstr ""
+#, c-format
+msgid ""
+"A custom smiley for '%s' already exists. Please use a different shortcut."
+msgstr ""
+
#, fuzzy
msgid "Duplicate Shortcut"
msgstr "重复更正"
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
-msgstr ""
-
#, fuzzy
msgid "Please select an image for the smiley."
msgstr "请输入 %s 的新名称"
@@ -12620,17 +12820,22 @@ msgid "Add Smiley"
msgstr "表情"
#, fuzzy
-msgid "Smiley _Image"
-msgstr "保存图像"
+msgid "_Image:"
+msgstr "图像(_I)"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr ""
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "排序"
#, fuzzy
msgid "Smiley"
msgstr "表情"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "排序"
+
msgid "Custom Smiley Manager"
msgstr ""
@@ -12752,6 +12957,16 @@ msgid ""
"Failed to load image '%s': reason not known, probably a corrupt image file"
msgstr "装入图像“%s”失败:原因位置,可能是图像文件已损坏"
+#, fuzzy
+msgid "_Open Link"
+msgstr "打开链接的方式(_O):"
+
+msgid "_Copy Link Location"
+msgstr "复制链接地址(_C)"
+
+msgid "_Copy Email Address"
+msgstr "复制电子邮件地址(_C)"
+
msgid "Save File"
msgstr "保存文件"
@@ -13710,9 +13925,6 @@ msgstr "好友列表窗口常居顶端(_K):"
msgid "Only when docked"
msgstr "仅停靠时"
-msgid "_Flash window when chat messages are received"
-msgstr "收到聊天信息时闪烁窗口(_F)"
-
msgid "Windows Pidgin Options"
msgstr "Windows Pidgin 选项"
@@ -13760,6 +13972,217 @@ msgstr "发送和接受原始 XMPP 节。"
msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr "此插件用于调试 XMPP 服务器或客户端。"
+#, fuzzy
+#~ msgid "Invite message"
+#~ msgstr "在消息中插入"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr "您想要邀请谁?请输入他/她的名字,以及可选的邀请消息。"
+
+#, fuzzy
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "选择 Notes 地址簿"
+
+#~ msgid ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+#~ msgstr ""
+#~ "您即将被断开。您可能想要使用 TOC 直到这一问题被修正。请检查 %s 上的更新。"
+
+#, fuzzy
+#~ msgid "Add buddy Q&A"
+#~ msgstr "添加好友"
+
+#, fuzzy
+#~ msgid "Can not decrypt get server reply"
+#~ msgstr "无法获取服务器信息"
+
+#~ msgid "Keep alive error"
+#~ msgstr "保持在线错误"
+
+#, fuzzy
+#~ msgid ""
+#~ "Lost connection with server:\n"
+#~ "%d, %s"
+#~ msgstr ""
+#~ "失去与服务器的连接:\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Connecting server ..."
+#~ msgstr "连接服务器"
+
+#~ msgid "Failed to send IM."
+#~ msgstr "发送消息失败"
+
+#~ msgid "Looking up %s"
+#~ msgstr "查阅 %s"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "连接到 %s 失败"
+
+#~ msgid "Signon: %s"
+#~ msgstr "登录名: %s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "无法写入文件 %s。"
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "无法读取文件 %s。"
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "消息太长,最后 %s 字节被截断。"
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s 目前未登入。"
+
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "不允许对 %s 发出警告。"
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr "丢失了一条消息,您超过了服务器速度限制。"
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "在 %s 中无法聊天。"
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "您给 %s 发送消息的速度太快。"
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "您错过了来自 %s 的消息,原因是该消息太大。"
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr "您错过了来自 %s 的消息,原因是发送太快。"
+
+#~ msgid "Failure."
+#~ msgstr "失败。"
+
+#~ msgid "Too many matches."
+#~ msgstr "匹配太多。"
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "需要更多条件。"
+
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "目录服务暂时不可用。"
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "电子邮件查阅被限制。"
+
+#~ msgid "Keyword ignored."
+#~ msgstr "关键字被忽略。"
+
+#~ msgid "No keywords."
+#~ msgstr "无关键字。"
+
+#~ msgid "User has no directory information."
+#~ msgstr "用户没有目录信息。"
+
+#~ msgid "Country not supported."
+#~ msgstr "国家不被支持。"
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "未知失败: %s。"
+
+#, fuzzy
+#~ msgid "Incorrect username or password."
+#~ msgstr "昵称或密码不对。"
+
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "服务暂时不可用。"
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "您的警告级别太高,无法登入。"
+
+#~ 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 ""
+#~ "您连接和断开得太频繁。请等十分钟,然后再试一次。如果您继续重试,您等的时间"
+#~ "可能会更长。"
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "发生了未知登入错误: %s。"
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "发生了未知错误 %d。信息: %s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "无效的组名"
+
+#~ msgid "Connection Closed"
+#~ msgstr "连接已关闭"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "正在等候回复..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "TOC 从暂停中恢复。您现在可以再次发送消息了。"
+
+#~ msgid "Password Change Successful"
+#~ msgstr "密码更改成功"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "获取目录信息"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "设置目录信息"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "无法打开 %s 写入!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr "文件传送失败;可能其中一端取消了传送。"
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "无法连接进行传送。"
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "无法写入文件头。文件将不会被传送。"
+
+#~ msgid "Save As..."
+#~ msgstr "另存为..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s 请求 %s 接受 %d 个文件: %s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s 请求您发送文件"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "TOC 协议插件"
+
+#~ msgid "User information for %s unavailable"
+#~ msgstr "%s 的用户信息不可用"
+
+#~ msgid "%s Options"
+#~ msgstr "%s 选项"
+
+#~ msgid "Proxy Options"
+#~ msgstr "代理选项"
+
+#~ msgid "By log size"
+#~ msgstr "按日志大小"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "在浏览器中打开链接(_O)"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "STUN 服务器(_U):"
+
+#, fuzzy
+#~ msgid "Smiley _Image"
+#~ msgstr "保存图像"
+
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "收到聊天信息时闪烁窗口(_F)"
+
#~ msgid "A group with the name already exists."
#~ msgstr "已存在同名组。"
@@ -13857,13 +14280,6 @@ msgstr "此插件用于调试 XMPP 服务器或客户端。"
#~ msgid "Change Qun information"
#~ msgstr "频道信息"
-#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr "%s(%s)"
-
#~ msgid "System Message"
#~ msgstr "系统消息"
diff --git a/po/zh_HK.po b/po/zh_HK.po
index 27908a8608..aed6fab8f8 100644
--- a/po/zh_HK.po
+++ b/po/zh_HK.po
@@ -51,7 +51,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin 2.5.5\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-27 10:14-0800\n"
+"POT-Creation-Date: 2009-04-30 10:41-0400\n"
"PO-Revision-Date: 2009-02-25 09:57-0500\n"
"Last-Translator: Ambrose Li <ambrose.li@gmail.com>\n"
"Language-Team: Chinese (Hong Kong) <community@linuxhall.org>\n"
@@ -667,17 +667,6 @@ msgstr "日誌系統關閉。未來在這個交談中的訊息都將不會被記
msgid "Send To"
msgstr "傳送到"
-msgid "Invite message"
-msgstr "邀請訊息"
-
-msgid "Invite"
-msgstr "邀請"
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr "請輸入你想邀請的使用者名稱,以及選擇性填寫邀請的訊息。"
-
msgid "Conversation"
msgstr "交談"
@@ -931,6 +920,41 @@ msgstr "所有交談"
msgid "System Log"
msgstr "系統日誌"
+#, fuzzy
+msgid "Calling ... "
+msgstr "計算中..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "接受"
+
+msgid "Reject"
+msgstr "拒絕"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "你離開了頻道%s%s"
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "電子郵件"
@@ -966,6 +990,9 @@ msgstr "繼續"
msgid "IM"
msgstr "即時訊息"
+msgid "Invite"
+msgstr "邀請"
+
# TODO 要覆查 - 20061028
msgid "(none)"
msgstr "(沒有名字)"
@@ -1171,7 +1198,6 @@ msgstr "%s 已經離開。 (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s 送出一個訊息給你。 (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "未知的捕捉事件。請匯報這個問題!"
@@ -1589,6 +1615,28 @@ msgstr ""
msgid "Lastlog plugin."
msgstr "Lastlog 模組。"
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "樂曲網址"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "帳號清單"
@@ -1700,13 +1748,6 @@ msgstr "接受 %s 的證書嗎?"
msgid "SSL Certificate Verification"
msgstr "核實 SSL 證書"
-#. Number of actions
-msgid "Accept"
-msgstr "接受"
-
-msgid "Reject"
-msgstr "拒絕"
-
msgid "_View Certificate..."
msgstr "檢視證書(_V)"
@@ -1851,6 +1892,17 @@ msgstr "%s 離開聊天室。"
msgid "%s left the room (%s)."
msgstr "%s 離開聊天室 (%s)。"
+# NOTE「會議室」是暫時的意譯。Yahoo! 好像沒有為「Conference」提供正式中譯名。
+#, fuzzy
+msgid "Invite to chat"
+msgstr "邀請進入會議室"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr "請輸入你想邀請的使用者名稱,以及邀請的訊息。"
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "無法建立連結:%s"
@@ -2691,6 +2743,32 @@ msgstr "使用「好友狀態捕捉」儲存離線訊息"
msgid "Do not ask. Always save in pounce."
msgstr "毋須提問,務必使用「好友狀態捕捉」儲存離線訊息。"
+#, fuzzy
+msgid "One Time Password"
+msgstr "輸入密碼"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -3091,6 +3169,7 @@ msgstr "選取一個聊天室給好友;%s"
msgid "Add to chat..."
msgstr "新增到聊天室..."
+#. Global
msgid "Available"
msgstr "上線"
@@ -3448,6 +3527,17 @@ msgid ""
"invalid characters."
msgstr "伺服器拒絕了你所指定的帳號名稱,名稱中大概含有無效字符。"
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "聊天室名稱正在使用中"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "網名"
+
msgid "Cannot change nick"
msgstr "無法更改網名"
@@ -3715,6 +3805,43 @@ msgstr "伺服器送來了無效的驗證挑戰"
msgid "SASL error"
msgstr "SASL 錯誤"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "沒有給予原因"
+
+# NOTE Jabber 協定中 Stream Error 的一種,即 <unsupported-version/>
+# NOTE 見 http://www.jabber.org/pipermail/xmppwg/2003-March/000752.html
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "不支援指定的 XMPP 版本"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"無法與伺服器建立連線:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"無法與伺服器建立連線:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "無法初始化連結"
+
+msgid "Unable to create socket"
+msgstr "無法建立 Socket"
+
+msgid "Write error"
+msgstr "寫入錯誤"
+
msgid "Full Name"
msgstr "全名"
@@ -3780,6 +3907,12 @@ msgstr "用戶端"
msgid "Operating System"
msgstr "作業系統"
+# NOTE Debian 譯「local」為「本地端」
+# XXX
+#, fuzzy
+msgid "Local Time"
+msgstr "本地端檔案:"
+
# NOTE 這是功能名稱(直譯)
msgid "Last Activity"
msgstr "最近活動"
@@ -4154,9 +4287,6 @@ msgstr "尋找聊天室"
msgid "You require encryption, but it is not available on this server."
msgstr "你指定必須加密,但這伺服器沒有加密功能。"
-msgid "Write error"
-msgstr "寫入錯誤"
-
msgid "Ping timeout"
msgstr "Ping逾時"
@@ -4165,14 +4295,9 @@ msgstr "讀取錯誤"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"無法與伺服器建立連線:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "無法建立 Socket"
msgid "Invalid XMPP ID"
msgstr "XMPP 帳號無效"
@@ -4180,6 +4305,10 @@ msgstr "XMPP 帳號無效"
msgid "Invalid XMPP ID. Domain must be set."
msgstr "XMPP 帳號無效,域名是必須設定的。"
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "無法連線到伺服器。"
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "成功註冊 %s@%s"
@@ -4270,6 +4399,13 @@ msgstr ""
msgid "Not Authorized"
msgstr "未認證"
+msgid "Mood"
+msgstr "心情"
+
+# FIXME - acli 20080511
+msgid "Now Listening"
+msgstr "正在聽的音樂"
+
# NOTE 這些奇怪 Jabber 術語(至「Subscription」條)的解釋由 faceprint 提供
# NOTE LSchiere2 的補充如下:
# NOTE in jabber each user has control over both who is in his/her buddy list and who has him/her in that other person's buddy list
@@ -4303,13 +4439,6 @@ msgstr "無"
msgid "Subscription"
msgstr "認證狀態"
-msgid "Mood"
-msgstr "心情"
-
-# FIXME - acli 20080511
-msgid "Now Listening"
-msgstr "正在聽的音樂"
-
# XXX 要覆查 - acli 20070914
msgid "Mood Text"
msgstr "情緒描述"
@@ -4615,18 +4744,25 @@ msgstr "無法踢出使用者 %s"
msgid "Unable to ping user %s"
msgstr "無法 Ping 使用者 %s"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr "無法「嗶」使用者 %s ,因為沒有有關對方的任何資料。"
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr "無法「嗶」使用者 %s ,因為對方目前可能離線。"
-#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+#, fuzzy, c-format
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "無法「嗶」使用者 %s ,因為對方的用戶端不支援這個功能。"
+# XXX 這是暫譯 - acli 20070913
+#, c-format
+msgid "Buzzing %s..."
+msgstr "正在給 %s 一個嗶..."
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
msgid "Buzz"
@@ -4636,10 +4772,38 @@ msgstr "嗶!"
msgid "%s has buzzed you!"
msgstr "%s「嗶」了你一聲"
-# XXX 這是暫譯 - acli 20070913
-#, c-format
-msgid "Buzzing %s..."
-msgstr "正在給 %s 一個嗶..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "無法送出訊息給 %s,因為這個 JID 是無效的"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "無法傳送檔案至 %s,因為對方目前沒有連線"
+
+# NOTE「not subscribed to user presence」是指沒有「SUB_TO」的 subscription
+# FIXME 這很明顯是有問題的譯文,但這是這個 PO 檔現有的譯法(見「To」條);
+# FIXME 如果這個要改,其他有關 presence 的譯文也要一齊改才行。-acli 20070614
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr "無法傳送檔案至 %s,因為未獲對方認證"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "註冊失敗"
+
+# FIXME 這不通順 - acli 20070614
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "請指定檔案應該傳送至 %s 的那一個 Resource"
+
+msgid "Select a Resource"
+msgstr "選擇一個 Resource"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "開啟聊天室(_C)"
msgid "config: Configure a chat room."
msgstr "config:設定一個聊天室"
@@ -4793,6 +4957,21 @@ msgstr "加入聊天室 %s 時發生錯誤"
msgid "Error in chat %s"
msgstr "聊天室 %s 發生錯誤"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "開啟檔案途中發生錯誤。"
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "檔案傳輸失敗"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "無法開啟檔案「%s」:%s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr "無法傳送檔案至 %s,因為對方不支援檔案傳輸"
@@ -4820,9 +4999,6 @@ msgstr "無法傳送檔案至 %s,因為未獲對方認證"
msgid "Please select the resource of %s to which you would like to send a file"
msgstr "請指定檔案應該傳送至 %s 的那一個 Resource"
-msgid "Select a Resource"
-msgstr "選擇一個 Resource"
-
msgid "Edit User Mood"
msgstr "編輯使用者情緒"
@@ -6681,7 +6857,7 @@ msgstr ""
"無法登入:無法以 %s 身份登入,因為這個帳號是無效的。帳號必須為有效電郵地址;"
"或者以英文字母起始,並只含英文字母、數字及空白;或者只由數字組成。"
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr "使用者名稱無效。"
@@ -6700,7 +6876,7 @@ msgstr "你的帳號目前停用中。"
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "暫時無法使用 AOL 即時訊息服務。"
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6877,7 +7053,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] "你遺失了 %hu 個由 %s 送來的訊息,原因不明。"
msgstr[1] "你遺失了 %hu 個由 %s 送來的訊息,原因不明。"
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "無法送出訊息:%s"
@@ -7460,6 +7636,38 @@ msgstr "更新"
msgid "Could not change buddy information."
msgstr "無法修改好友資訊。"
+msgid "Mobile"
+msgstr "使用流動通訊器材"
+
+msgid "Note"
+msgstr "備註"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "修改地址"
+
+msgid "Change his/her memo as you like"
+msgstr ""
+
+#, fuzzy
+msgid "_Modify"
+msgstr "修改"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "修改"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "伺服器忙碌"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
# NOTE Require意為「需要」,不是「要求」
#, c-format
msgid "%u requires verification"
@@ -7804,6 +8012,9 @@ msgstr "<p><b>鳴謝</b>:<br>\n"
msgid "<p><b>Scrupulous Testers</b>:<br>\n"
msgstr "<p><b>仔細的品管人員</b>:<br>\n"
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr "<p><i>還有所有幕後默默貢獻的無名英雄們…</i><br>\n"
@@ -7945,7 +8156,6 @@ msgstr ""
"登入時,傳回未知的回覆碼「0x%02X」:\n"
"%s"
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "無法連線。"
@@ -8860,9 +9070,6 @@ msgstr "所屬機構"
msgid "Unit"
msgstr "部門"
-msgid "Note"
-msgstr "備註"
-
msgid "Join Chat"
msgstr "加入聊天室"
@@ -9559,197 +9766,12 @@ msgid "Auth Domain"
msgstr "認證域名"
#, c-format
-msgid "Looking up %s"
-msgstr "找尋 %s 中"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "連結到 %s 失敗"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "登入:%s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "無法寫入檔案 %s。"
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "無法讀取檔案 %s。"
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "訊息太長,最後的 %s 位元組被截去。"
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s 目前並未登入。"
-
-# NOTE 譯文更動 by Ambrose
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "不允許對 %s 發出警告。"
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "訊息被丟棄,因為你達到了伺服器所限制的發送速度。"
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "在 %s 不可以聊天。"
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "你送訊息給 %s 的速度太快了。"
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "你遺失了一個由 %s 送來的訊息,因為它太大了。"
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "你遺失了一個由 %s 送來的訊息,因為它傳送的速度太快。"
-
-#, c-format
-msgid "Failure."
-msgstr "失敗。"
-
-#, c-format
-msgid "Too many matches."
-msgstr "匹配太多。"
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "需輸入更多檢索條件。"
-
-# NOTE「暫時無法使用」應該比「暫時不存在」通順
-# NOTE 譯文更動 by Ambrose
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "暫時無法使用目錄服務。"
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "禁止 E-Mail 檢查。"
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "關鍵字已被忽略。"
-
-#, c-format
-msgid "No keywords."
-msgstr "沒有關鍵字。"
-
-#, c-format
-msgid "User has no directory information."
-msgstr "這個使用者沒有他的相關資訊。"
-
-#, c-format
-msgid "Country not supported."
-msgstr "這個國家不被支援。"
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "未知的失敗原因:%s。"
-
-#, c-format
-msgid "Incorrect username or password."
-msgstr "錯誤的帳號或密碼。"
-
-# NOTE「暫時無法使用」應該比「暫時不存在」通順
-# NOTE 譯文更動 by Ambrose
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "暫時無法使用該項服務。"
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "你目前登入系統的警告等級太高,以致無法登入。"
-
-#, c-format
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
-msgstr ""
-"你的連線/斷線動作太過頻繁。請等待十分鐘後再行重試。如果你依然繼續嘗試連線,"
-"那麼你的等待時間將會更加的延長。"
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "發生了一個未知的登入錯誤:%s。"
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "一個未知的錯誤 %d 發生。資訊:%s"
-
-msgid "Invalid Groupname"
-msgstr "無效的羣組名稱"
-
-msgid "Connection Closed"
-msgstr "連線關閉"
-
-msgid "Waiting for reply..."
-msgstr "等待回覆中..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "TOC 結束了暫停狀態。你現在可以繼續的傳送你的訊息。"
-
-msgid "Password Change Successful"
-msgstr "密碼修改成功"
-
-msgid "_Group:"
-msgstr "羣組(_G):"
-
-msgid "Get Dir Info"
-msgstr "取得使用者個人資料"
-
-msgid "Set Dir Info"
-msgstr "設定使用者個人資料"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "無法開啟 %s 以供寫入!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "檔案傳輸失敗;可能是對方取消傳輸。"
-
-msgid "Could not connect for transfer."
-msgstr "無法開啟連線以供傳輸。"
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "無法寫入檔頭資訊。這個檔案將不會被傳送。"
-
-msgid "Save As..."
-msgstr "另存新檔..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s 要求 %s 接收 %d 個檔案:%s (%.2f %s)%s%s"
-msgstr[1] "%s 要求 %s 接收 %d 個檔案:%s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s 要求你傳送檔案給他(她)。"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "TOC 協定模組"
-
-#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr "%s 送來了一個視像聊天的邀請,但目前還沒有視像聊天的支援。"
+msgid "Your SMS was not delivered"
+msgstr ""
+
# NOTE 譯文更動 by Ambrose
msgid "Your Yahoo! message did not get sent."
msgstr "無法送出你的 Yahoo! 訊息。"
@@ -10385,9 +10407,6 @@ msgstr "請勿打擾"
msgid "Extended away"
msgstr "長時間離開"
-msgid "Mobile"
-msgstr "使用流動通訊器材"
-
msgid "Listening to music"
msgstr "聽音樂中"
@@ -10429,18 +10448,6 @@ msgstr "+++ %s 不再閒置"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "讀取 %s 途中發生了錯誤"
-
-# NOTE 「They」是什麼呢?譯成「它們」的話,「它們」又是什麼呢?寫長一點好了。
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"在解析你的%s時發生錯誤。檔案內的資料並沒有被讀入,同時舊檔案已移至 %s~。"
-
msgid "Calculating..."
msgstr "計算中..."
@@ -10513,6 +10520,12 @@ msgstr "寫入 %s 途中發生了錯誤:%s"
msgid "Unable to connect to %s: %s"
msgstr "無法連線到 %s:%s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr "登入這個伺服器需要使用 TLS/SSL,但找不到 TLS/SSL 支援。"
+
#, c-format
msgid " - %s"
msgstr " - %s"
@@ -10547,6 +10560,18 @@ msgstr "連線被拒。"
msgid "Address already in use."
msgstr "位址已在使用中"
+#, c-format
+msgid "Error Reading %s"
+msgstr "讀取 %s 途中發生了錯誤"
+
+# NOTE 「They」是什麼呢?譯成「它們」的話,「它們」又是什麼呢?寫長一點好了。
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"在解析你的%s時發生錯誤。檔案內的資料並沒有被讀入,同時舊檔案已移至 %s~。"
+
msgid "Internet Messenger"
msgstr "網絡即時通"
@@ -10592,10 +10617,8 @@ msgstr "新郵件通知(_M)"
msgid "Use this buddy _icon for this account:"
msgstr "使用下列好友圖示(_I):"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s 選項"
+msgid "_Advanced"
+msgstr "進階設定(_A)"
msgid "Use GNOME Proxy Settings"
msgstr "使用 GNOME 的代理伺服器設定"
@@ -10632,9 +10655,6 @@ msgstr "如果你看得夠仔細"
msgid "you can see the butterflies mating"
msgstr "鴛鴦蝴蝶也看得見耶"
-msgid "Proxy Options"
-msgstr "代理伺服器選項"
-
msgid "Proxy _type:"
msgstr "代理伺服器型態(_T):"
@@ -10662,8 +10682,9 @@ msgstr "基本設定(_B)"
msgid "Create _this new account on the server"
msgstr "在伺服器上建立這個新帳號(_T)"
-msgid "_Advanced"
-msgstr "進階設定(_A)"
+#, fuzzy
+msgid "_Proxy"
+msgstr "代理伺服器"
msgid "Enabled"
msgstr "啟動"
@@ -10736,6 +10757,18 @@ msgstr "取得資訊(_I)"
msgid "I_M"
msgstr "即時訊息(_M)"
+#, fuzzy
+msgid "_Audio Call"
+msgstr "新增聊天室(_A)"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+# XXX 暫譯
+#, fuzzy
+msgid "_Video Call"
+msgstr "視像聊天"
+
msgid "_Send File..."
msgstr "傳送檔案(_S)..."
@@ -10876,6 +10909,10 @@ msgstr "/工具/好友狀態捕捉(_P)"
msgid "/Tools/_Certificates"
msgstr "/工具/證書(_C)"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/工具/表情(_Y)"
+
msgid "/Tools/Plu_gins"
msgstr "/工具/模組(_G)"
@@ -10885,9 +10922,6 @@ msgstr "/工具/偏好設定(_E)"
msgid "/Tools/Pr_ivacy"
msgstr "/工具/私隱設定(_I)"
-msgid "/Tools/Smile_y"
-msgstr "/工具/表情(_Y)"
-
msgid "/Tools/_File Transfers"
msgstr "/工具/檔案傳輸(_F)"
@@ -11007,8 +11041,8 @@ msgstr "使用者自定"
msgid "By status"
msgstr "根據狀態"
-msgid "By log size"
-msgstr "根據日誌大小"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -11024,6 +11058,9 @@ msgstr "重新連線"
msgid "Re-enable"
msgstr "重新啟動"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr "歡迎歸來!"
@@ -11108,6 +11145,9 @@ msgstr "請輸入別名,或者關於你所想加入好友清單的聊天室的
msgid "A_lias:"
msgstr "別名(_L):"
+msgid "_Group:"
+msgstr "羣組(_G):"
+
msgid "Auto_join when account becomes online."
msgstr "帳號上線後隨即自動加入(_J)。"
@@ -11164,12 +11204,6 @@ msgstr "你並未登入任何一個可供你邀請哪個好友的通訊協定。
msgid "Invite Buddy Into Chat Room"
msgstr "邀請好友進入聊天室"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr "請輸入你想邀請的使用者名稱,以及邀請的訊息。"
-
msgid "_Buddy:"
msgstr "好友(_B):"
@@ -11248,6 +11282,22 @@ msgstr "/交談/另存新檔(_S)..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/交談/清空交談內容(_R)"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/交談/更多(_O)"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/交談/更多(_O)"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/交談/更多(_O)"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/交談/觀看歷史記錄(_L)"
+
msgid "/Conversation/Se_nd File..."
msgstr "/交談/傳送檔案(_N)..."
@@ -11320,6 +11370,18 @@ msgstr "/交談"
msgid "/Conversation/View Log"
msgstr "/交談/觀看歷史記錄"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/交談/更多"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/交談/觀看歷史記錄"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/交談/更多"
+
msgid "/Conversation/Send File..."
msgstr "/交談/傳送檔案..."
@@ -11517,6 +11579,9 @@ msgstr "平面設計"
msgid "Ka-Hing Cheung"
msgstr "張家興"
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "支援"
@@ -11674,6 +11739,10 @@ msgstr "格魯吉亞文"
msgid "Ubuntu Georgian Translators"
msgstr "Ubuntu 旗下所有格魯吉亞文翻譯人員"
+#, fuzzy
+msgid "Khmer"
+msgstr "其他"
+
# NOTE 參見 http://www.cnscode.org.tw/cnscode/lang.jsp?qrytype=char&keyword=K
# NOTE 註:KDE 譯「坎納達」
msgid "Kannada"
@@ -12180,15 +12249,6 @@ msgstr "用來顯示輸入通知的字型"
msgid "Enable typing notification"
msgstr "啟用輸入通知"
-msgid "_Copy Email Address"
-msgstr "複製電子郵件地址(_C)"
-
-msgid "_Open Link in Browser"
-msgstr "在瀏覽器中打開連結(_O)"
-
-msgid "_Copy Link Location"
-msgstr "複製連結位址(_C)"
-
# NOTE "Defaulting to PNG" 是指 Pidgin 在無計可施的情況下盲猜影像是 PNG 格式
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
@@ -12441,13 +12501,14 @@ msgstr "%s %s。執行「%s -h」以獲得更進一步的資訊。\n"
# FIXME
# NOTE hard-code 了一個「Pidgin」在譯文裏,但刪掉會有點困難(令文句難明),故暫時保留,待想到怎樣刪掉才算
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12472,13 +12533,14 @@ msgstr ""
# FIXME
# NOTE hard-code 了一個「Pidgin」在譯文裏,但刪掉會有點困難(令文句難明),故暫時保留,待想到怎樣刪掉才算
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12526,11 +12588,23 @@ msgstr "Pidgin"
msgid "Exiting because another libpurple client is already running.\n"
msgstr ""
-msgid "Open All Messages"
-msgstr "開啟所有訊息"
+msgid "/_Media"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">你有郵件!</span>"
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "計算中..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -12559,6 +12633,27 @@ msgid ""
"The 'Manual' browser command has been chosen, but no command has been set."
msgstr "你選用了「使用者自定瀏覽器」,卻未有設定指令。"
+msgid "Open All Messages"
+msgstr "開啟所有訊息"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">你有郵件!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "新增好友狀態捕捉"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">你有郵件!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "不明的訊息"
+
msgid "The following plugins will be unloaded."
msgstr "以下的模組將會被卸載。"
@@ -12605,6 +12700,10 @@ msgstr "<b>模組明細</b>"
msgid "Select a file"
msgstr "選擇檔案"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "編輯好友狀態捕捉"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "捕捉誰的狀態"
@@ -12675,6 +12774,50 @@ msgstr "重覆發生(_R)"
msgid "Pounce Target"
msgstr "捕捉目標"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "開始輸入"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "暫停輸入"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "登入"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s 由閒置返回 (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "返回"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "停止輸入"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "登出"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "閒置"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "離開期間"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "送出訊息"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "未知的捕捉事件。請匯報這個問題!"
+
# XXX 要覆查 - 20061025
msgid "Smiley theme failed to unpack."
msgstr "無法打開表情主題。"
@@ -12699,6 +12842,12 @@ msgstr "鍵盤捷徑"
msgid "Cl_ose conversations with the Escape key"
msgstr "允許使用 Escape 鍵關閉交談(_O)"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "好友清單"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "系統工作匣圖示"
@@ -12812,9 +12961,6 @@ msgstr "無法啟動代理伺服器設定程式。"
msgid "Cannot start browser configuration program."
msgstr "無法啟動瀏覽器設定程式。"
-msgid "ST_UN server:"
-msgstr "STUN 伺服器(_U):"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">例:stunserver.org</span>"
@@ -12839,6 +12985,10 @@ msgstr "啟始通訊埠(_S):"
msgid "_End port:"
msgstr "結束通訊埠(_E):"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr "代理伺服器及瀏覽器"
@@ -13028,13 +13178,13 @@ msgstr "當離開並同時閒置時"
msgid "Auto-away"
msgstr "自動離開"
-msgid "Change status when _idle"
-msgstr "閒置時更改狀態(_I)"
-
# NOTE 譯文更動 by Ambrose
msgid "_Minutes before becoming idle:"
msgstr "閒置多少分鐘更改狀態(_M):"
+msgid "Change status when _idle"
+msgstr "閒置時更改狀態(_I)"
+
msgid "Change _status to:"
msgstr "更改狀態為(_S):"
@@ -13184,6 +13334,12 @@ msgstr "儲存並使用(_V)"
msgid "Status for %s"
msgstr "狀態:%s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
msgid "Custom Smiley"
msgstr "自選表情"
@@ -13193,15 +13349,15 @@ msgstr "需要進一步的資料"
msgid "Please provide a shortcut to associate with the smiley."
msgstr "請給這個表情給定一個相關的捷徑。"
-msgid "Duplicate Shortcut"
-msgstr "重覆的表情定義"
-
# XXX 20080810 acli - 暫譯
+#, fuzzy, c-format
msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
+"A custom smiley for '%s' already exists. Please use a different shortcut."
msgstr "指定的捷徑已有相關的自選表情,請指定另一個捷徑。"
+msgid "Duplicate Shortcut"
+msgstr "重覆的表情定義"
+
msgid "Please select an image for the smiley."
msgstr "請給這個表情選擇一個圖像。"
@@ -13211,16 +13367,22 @@ msgstr "修改表情"
msgid "Add Smiley"
msgstr "新增表情"
-msgid "Smiley _Image"
-msgstr "表情圖像(_I)"
+#, fuzzy
+msgid "_Image:"
+msgstr "圖像(_I)"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr "表情捷徑(_H)"
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "捷徑"
msgid "Smiley"
msgstr "表情"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "捷徑"
+
msgid "Custom Smiley Manager"
msgstr "自選表情管理"
@@ -13341,6 +13503,16 @@ msgid ""
"Failed to load image '%s': reason not known, probably a corrupt image file"
msgstr "無法載入圖像「%s」,原因不明,大概是圖像檔已損壞"
+#, fuzzy
+msgid "_Open Link"
+msgstr "在瀏覽器中打開連結(_O):"
+
+msgid "_Copy Link Location"
+msgstr "複製連結位址(_C)"
+
+msgid "_Copy Email Address"
+msgstr "複製電子郵件地址(_C)"
+
msgid "Save File"
msgstr "儲存檔案"
@@ -14394,6 +14566,180 @@ msgstr "送出、讀取未加工的 XMPP 段落。"
msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr "幫助為 XMPP 伺服器或客戶端進行除錯。"
+#~ msgid "Invite message"
+#~ msgstr "邀請訊息"
+
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr "請輸入你想邀請的使用者名稱,以及選擇性填寫邀請的訊息。"
+
+#~ msgid "Looking up %s"
+#~ msgstr "找尋 %s 中"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "連結到 %s 失敗"
+
+#~ msgid "Signon: %s"
+#~ msgstr "登入:%s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "無法寫入檔案 %s。"
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "無法讀取檔案 %s。"
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "訊息太長,最後的 %s 位元組被截去。"
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s 目前並未登入。"
+
+# NOTE 譯文更動 by Ambrose
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "不允許對 %s 發出警告。"
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr "訊息被丟棄,因為你達到了伺服器所限制的發送速度。"
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "在 %s 不可以聊天。"
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "你送訊息給 %s 的速度太快了。"
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "你遺失了一個由 %s 送來的訊息,因為它太大了。"
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr "你遺失了一個由 %s 送來的訊息,因為它傳送的速度太快。"
+
+#~ msgid "Failure."
+#~ msgstr "失敗。"
+
+#~ msgid "Too many matches."
+#~ msgstr "匹配太多。"
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "需輸入更多檢索條件。"
+
+# NOTE「暫時無法使用」應該比「暫時不存在」通順
+# NOTE 譯文更動 by Ambrose
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "暫時無法使用目錄服務。"
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "禁止 E-Mail 檢查。"
+
+#~ msgid "Keyword ignored."
+#~ msgstr "關鍵字已被忽略。"
+
+#~ msgid "No keywords."
+#~ msgstr "沒有關鍵字。"
+
+#~ msgid "User has no directory information."
+#~ msgstr "這個使用者沒有他的相關資訊。"
+
+#~ msgid "Country not supported."
+#~ msgstr "這個國家不被支援。"
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "未知的失敗原因:%s。"
+
+#~ msgid "Incorrect username or password."
+#~ msgstr "錯誤的帳號或密碼。"
+
+# NOTE「暫時無法使用」應該比「暫時不存在」通順
+# NOTE 譯文更動 by Ambrose
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "暫時無法使用該項服務。"
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "你目前登入系統的警告等級太高,以致無法登入。"
+
+#~ 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 ""
+#~ "你的連線/斷線動作太過頻繁。請等待十分鐘後再行重試。如果你依然繼續嘗試連"
+#~ "線,那麼你的等待時間將會更加的延長。"
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "發生了一個未知的登入錯誤:%s。"
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "一個未知的錯誤 %d 發生。資訊:%s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "無效的羣組名稱"
+
+#~ msgid "Connection Closed"
+#~ msgstr "連線關閉"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "等待回覆中..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "TOC 結束了暫停狀態。你現在可以繼續的傳送你的訊息。"
+
+#~ msgid "Password Change Successful"
+#~ msgstr "密碼修改成功"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "取得使用者個人資料"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "設定使用者個人資料"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "無法開啟 %s 以供寫入!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr "檔案傳輸失敗;可能是對方取消傳輸。"
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "無法開啟連線以供傳輸。"
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "無法寫入檔頭資訊。這個檔案將不會被傳送。"
+
+#~ msgid "Save As..."
+#~ msgstr "另存新檔..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s 要求 %s 接收 %d 個檔案:%s (%.2f %s)%s%s"
+#~ msgstr[1] "%s 要求 %s 接收 %d 個檔案:%s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s 要求你傳送檔案給他(她)。"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "TOC 協定模組"
+
+#~ msgid "%s Options"
+#~ msgstr "%s 選項"
+
+#~ msgid "Proxy Options"
+#~ msgstr "代理伺服器選項"
+
+#~ msgid "By log size"
+#~ msgstr "根據日誌大小"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "在瀏覽器中打開連結(_O)"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "STUN 伺服器(_U):"
+
+#~ msgid "Smiley _Image"
+#~ msgstr "表情圖像(_I)"
+
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "表情捷徑(_H)"
+
#~ msgid "Unable to retrieve MSN Address Book"
#~ msgstr "無法讀取 MSN 通訊錄"
diff --git a/po/zh_TW.po b/po/zh_TW.po
index 98fac8547b..a8ae2fe85c 100644
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -49,7 +49,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin 2.5.5\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-27 10:14-0800\n"
+"POT-Creation-Date: 2009-04-30 10:41-0400\n"
"PO-Revision-Date: 2009-02-25 09:57-0500\n"
"Last-Translator: Ambrose Li <ambrose.li@gmail.com>\n"
"Language-Team: Chinese (Traditional) <zh-l10n@linux.org.tw>\n"
@@ -665,17 +665,6 @@ msgstr "日誌系統關閉。未來在這個交談中的訊息都將不會被記
msgid "Send To"
msgstr "傳送到"
-msgid "Invite message"
-msgstr "邀請訊息"
-
-msgid "Invite"
-msgstr "邀請"
-
-msgid ""
-"Please enter the name of the user you wish to invite,\n"
-"along with an optional invite message."
-msgstr "請輸入您想邀請的使用者名稱,以及選擇性填寫邀請的訊息。"
-
msgid "Conversation"
msgstr "交談"
@@ -929,6 +918,41 @@ msgstr "所有交談"
msgid "System Log"
msgstr "系統日誌"
+#, fuzzy
+msgid "Calling ... "
+msgstr "計算中..."
+
+msgid "Hangup"
+msgstr ""
+
+#. Number of actions
+msgid "Accept"
+msgstr "接受"
+
+msgid "Reject"
+msgstr "拒絕"
+
+msgid "Call in progress."
+msgstr ""
+
+msgid "The call has been terminated."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start an audio session with you."
+msgstr ""
+
+#, c-format
+msgid "%s is trying to start an unsupported media session type with you."
+msgstr ""
+
+#, fuzzy
+msgid "You have rejected the call."
+msgstr "您離開了頻道%s%s"
+
+msgid "call: Make an audio call."
+msgstr ""
+
msgid "Emails"
msgstr "電子郵件"
@@ -964,6 +988,9 @@ msgstr "繼續"
msgid "IM"
msgstr "即時訊息"
+msgid "Invite"
+msgstr "邀請"
+
# TODO 要覆查 - 20061028
msgid "(none)"
msgstr "(沒有名字)"
@@ -1169,7 +1196,6 @@ msgstr "%s 已經離開。 (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s 送出一個訊息給您。 (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "未知的捕捉事件。請回報這個問題!"
@@ -1587,6 +1613,28 @@ msgstr ""
msgid "Lastlog plugin."
msgstr "Lastlog 模組。"
+#, c-format
+msgid ""
+"\n"
+"Fetching TinyURL..."
+msgstr ""
+
+msgid "Only create TinyURL for urls of this length or greater"
+msgstr ""
+
+msgid "TinyURL (or other) address prefix"
+msgstr ""
+
+#, fuzzy
+msgid "TinyURL"
+msgstr "樂曲網址"
+
+msgid "TinyURL plugin"
+msgstr ""
+
+msgid "When receiving a message with URL(s), TinyURL for easier copying"
+msgstr ""
+
msgid "accounts"
msgstr "帳號清單"
@@ -1698,13 +1746,6 @@ msgstr "接受 %s 的憑證嗎?"
msgid "SSL Certificate Verification"
msgstr "核實 SSL 憑證"
-#. Number of actions
-msgid "Accept"
-msgstr "接受"
-
-msgid "Reject"
-msgstr "拒絕"
-
msgid "_View Certificate..."
msgstr "檢視憑證(_V)"
@@ -1849,6 +1890,17 @@ msgstr "%s 離開聊天室。"
msgid "%s left the room (%s)."
msgstr "%s 離開聊天室 (%s)。"
+# NOTE「會議室」是暫時的意譯。Yahoo! 好像沒有為「Conference」提供正式中譯名。
+#, fuzzy
+msgid "Invite to chat"
+msgstr "邀請進入會議室"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr "請輸入您想邀請的使用者名稱,以及邀請的訊息。"
+
#, c-format
msgid "Failed to get connection: %s"
msgstr "無法建立連結:%s"
@@ -2689,6 +2741,32 @@ msgstr "使用「好友狀態捕捉」儲存離線訊息"
msgid "Do not ask. Always save in pounce."
msgstr "毋須提問,務必使用「好友狀態捕捉」儲存離線訊息。"
+#, fuzzy
+msgid "One Time Password"
+msgstr "輸入密碼"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "One Time Password Support"
+msgstr ""
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Enforce that passwords are used only once."
+msgstr ""
+
+#. * description
+msgid ""
+"Allows you to enforce on a per-account basis that passwords not being saved "
+"are only used in a single successful connection.\n"
+"Note: The account password must not be saved for this to work."
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -3089,6 +3167,7 @@ msgstr "選取一個聊天室給好友;%s"
msgid "Add to chat..."
msgstr "新增到聊天室..."
+#. Global
msgid "Available"
msgstr "上線"
@@ -3446,6 +3525,17 @@ msgid ""
"invalid characters."
msgstr "伺服器拒絕了您所指定的帳號名稱,名稱中大概含有無效字元。"
+#. We only want to do the following dance if the connection
+#. has not been successfully completed. If it has, just
+#. notify the user that their /nick command didn't go.
+#, fuzzy, c-format
+msgid "The nickname \"%s\" is already being used."
+msgstr "聊天室名稱正在使用中"
+
+#, fuzzy
+msgid "Nickname in use"
+msgstr "暱稱"
+
msgid "Cannot change nick"
msgstr "無法更改暱稱"
@@ -3713,6 +3803,43 @@ msgstr "伺服器送來了無效的驗證挑戰"
msgid "SASL error"
msgstr "SASL 錯誤"
+msgid "The BOSH connection manager terminated your session."
+msgstr ""
+
+#, fuzzy
+msgid "No session ID given"
+msgstr "沒有給予原因"
+
+# NOTE Jabber 協定中 Stream Error 的一種,即 <unsupported-version/>
+# NOTE 見 http://www.jabber.org/pipermail/xmppwg/2003-March/000752.html
+#, fuzzy
+msgid "Unsupported version of BOSH protocol"
+msgstr "不支援給定的 XMPP 版本"
+
+#, fuzzy
+msgid "Unable to establish a connection with the server"
+msgstr ""
+"無法與伺服器建立連線:\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"無法與伺服器建立連線:\n"
+"%s"
+
+#, fuzzy
+msgid "Unable to establish SSL connection"
+msgstr "無法初始化連結"
+
+msgid "Unable to create socket"
+msgstr "無法建立 Socket"
+
+msgid "Write error"
+msgstr "寫入錯誤"
+
msgid "Full Name"
msgstr "全名"
@@ -3778,6 +3905,12 @@ msgstr "用戶端"
msgid "Operating System"
msgstr "作業系統"
+# NOTE Debian 譯「local」為「本地端」
+# XXX
+#, fuzzy
+msgid "Local Time"
+msgstr "本地端檔案:"
+
# NOTE 這是功能名稱(直譯)
msgid "Last Activity"
msgstr "最近活動"
@@ -4152,9 +4285,6 @@ msgstr "尋找聊天室"
msgid "You require encryption, but it is not available on this server."
msgstr "您指定必須加密,但這伺服器沒有加密功能。"
-msgid "Write error"
-msgstr "寫入錯誤"
-
msgid "Ping timeout"
msgstr "Ping逾時"
@@ -4163,14 +4293,9 @@ msgstr "讀取錯誤"
#, c-format
msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
+"Could not find alternative XMPP connection methods after failing to connect "
+"directly.\n"
msgstr ""
-"無法與伺服器建立連線:\n"
-"%s"
-
-msgid "Unable to create socket"
-msgstr "無法建立 Socket"
msgid "Invalid XMPP ID"
msgstr "XMPP 帳號無效"
@@ -4178,6 +4303,10 @@ msgstr "XMPP 帳號無效"
msgid "Invalid XMPP ID. Domain must be set."
msgstr "XMPP 帳號無效,域名是必須設定的。"
+#, fuzzy
+msgid "Malformed BOSH Connect Server"
+msgstr "無法連線到伺服器。"
+
#, c-format
msgid "Registration of %s@%s successful"
msgstr "成功註冊 %s@%s"
@@ -4268,6 +4397,13 @@ msgstr ""
msgid "Not Authorized"
msgstr "未認證"
+msgid "Mood"
+msgstr "心情"
+
+# FIXME - acli 20080511
+msgid "Now Listening"
+msgstr "正在聽的音樂"
+
# NOTE 這些奇怪 Jabber 術語(至「Subscription」條)的解釋由 faceprint 提供
# NOTE LSchiere2 的補充如下:
# NOTE in jabber each user has control over both who is in his/her buddy list and who has him/her in that other person's buddy list
@@ -4301,13 +4437,6 @@ msgstr "無"
msgid "Subscription"
msgstr "認證狀態"
-msgid "Mood"
-msgstr "心情"
-
-# FIXME - acli 20080511
-msgid "Now Listening"
-msgstr "正在聽的音樂"
-
# XXX 要覆查 - acli 20070914
msgid "Mood Text"
msgstr "情緒描述"
@@ -4613,18 +4742,25 @@ msgstr "無法踢出使用者 %s"
msgid "Unable to ping user %s"
msgstr "無法 Ping 使用者 %s"
-#, c-format
-msgid "Unable to buzz, because there is nothing known about user %s."
+#, fuzzy, c-format
+msgid "Unable to buzz, because there is nothing known about %s."
msgstr "無法「嗶」使用者 %s ,因為沒有有關對方的任何資料。"
-#, c-format
-msgid "Unable to buzz, because user %s might be offline."
+#, fuzzy, c-format
+msgid "Unable to buzz, because %s might be offline."
msgstr "無法「嗶」使用者 %s ,因為對方目前可能離線。"
-#, c-format
-msgid "Unable to buzz, because the user %s does not support it."
+#, fuzzy, c-format
+msgid ""
+"Unable to buzz, because %s does not support it or does not wish to receive "
+"buzzes now."
msgstr "無法「嗶」使用者 %s ,因為對方的用戶端不支援這個功能。"
+# XXX 這是暫譯 - acli 20070913
+#, c-format
+msgid "Buzzing %s..."
+msgstr "正在給 %s 一個嗶..."
+
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
msgid "Buzz"
@@ -4634,10 +4770,38 @@ msgstr "嗶!"
msgid "%s has buzzed you!"
msgstr "%s「嗶」了您一聲"
-# XXX 這是暫譯 - acli 20070913
-#, c-format
-msgid "Buzzing %s..."
-msgstr "正在給 %s 一個嗶..."
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: invalid JID"
+msgstr "無法送出訊息給 %s,因為這個 JID 是無效的"
+
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: user is not online"
+msgstr "無法傳送檔案至 %s,因為對方目前沒有連線"
+
+# NOTE「not subscribed to user presence」是指沒有「SUB_TO」的 subscription
+# FIXME 這很明顯是有問題的譯文,但這是這個 PO 檔現有的譯法(見「To」條);
+# FIXME 如果這個要改,其他有關 presence 的譯文也要一齊改才行。-acli 20070614
+#, fuzzy, c-format
+msgid "Unable to initiate media with %s: not subscribed to user presence"
+msgstr "無法傳送檔案至 %s,因為未獲對方認證"
+
+#, fuzzy
+msgid "Media Initiation Failed"
+msgstr "註冊失敗"
+
+# FIXME 這不通順 - acli 20070614
+#, fuzzy, c-format
+msgid ""
+"Please select the resource of %s with which you would like to start a media "
+"session."
+msgstr "請指定檔案應該傳送至 %s 的那一個 Resource"
+
+msgid "Select a Resource"
+msgstr "選擇一個 Resource"
+
+#, fuzzy
+msgid "Initiate Media"
+msgstr "開啟聊天室(_C)"
msgid "config: Configure a chat room."
msgstr "config:設定一個聊天室"
@@ -4791,6 +4955,21 @@ msgstr "加入聊天室 %s 時發生錯誤"
msgid "Error in chat %s"
msgstr "聊天室 %s 發生錯誤"
+#, fuzzy
+msgid "An error occured on the in-band bytestream transfer\n"
+msgstr "開啟檔案途中發生錯誤。"
+
+#, fuzzy
+msgid "Transfer was closed."
+msgstr "檔案傳輸失敗"
+
+#, fuzzy
+msgid "Failed to open the file"
+msgstr "無法開啟檔案「%s」:%s"
+
+msgid "Failed to open in-band bytestream"
+msgstr ""
+
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr "無法傳送檔案至 %s,因為對方不支援檔案傳輸"
@@ -4818,9 +4997,6 @@ msgstr "無法傳送檔案至 %s,因為未獲對方認證"
msgid "Please select the resource of %s to which you would like to send a file"
msgstr "請指定檔案應該傳送至 %s 的那一個 Resource"
-msgid "Select a Resource"
-msgstr "選擇一個 Resource"
-
msgid "Edit User Mood"
msgstr "編輯使用者情緒"
@@ -6679,7 +6855,7 @@ msgstr ""
"無法登入:無法以 %s 身份登入,因為這個帳號是無效的。帳號必須為有效電郵地址;"
"或者以英文字母起始,並只含英文字母、數字及空白;或者只由數字組成。"
-#. Unregistered screen name
+#. Unregistered username
#. uid is not exist
msgid "Invalid username."
msgstr "使用者名稱無效。"
@@ -6698,7 +6874,7 @@ msgstr "您的帳號目前停用中。"
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "暫時無法使用 AOL 即時訊息服務。"
-#. screen name connecting too frequently
+#. username connecting too frequently
#. IP address connecting too frequently
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6875,7 +7051,7 @@ msgid_plural "You missed %hu messages from %s for an unknown reason."
msgstr[0] "您遺失了 %hu 個由 %s 送來的訊息,原因不明。"
msgstr[1] "您遺失了 %hu 個由 %s 送來的訊息,原因不明。"
-#. Data is assumed to be the destination sn
+#. Data is assumed to be the destination bn
#, c-format
msgid "Unable to send message: %s"
msgstr "無法送出訊息:%s"
@@ -7458,6 +7634,38 @@ msgstr "更新"
msgid "Could not change buddy information."
msgstr "無法修改好友資訊。"
+msgid "Mobile"
+msgstr "使用行動裝置"
+
+msgid "Note"
+msgstr "備註"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "修改地址"
+
+msgid "Change his/her memo as you like"
+msgstr ""
+
+#, fuzzy
+msgid "_Modify"
+msgstr "修改"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "修改"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "伺服器忙碌"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
# NOTE Require意為「需要」,不是「要求」
#, c-format
msgid "%u requires verification"
@@ -7802,6 +8010,9 @@ msgstr "<p><b>鳴謝</b>:<br>\n"
msgid "<p><b>Scrupulous Testers</b>:<br>\n"
msgstr "<p><b>仔細的品管人員</b>:<br>\n"
+msgid "and more, please let me know... thank you!))"
+msgstr ""
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr "<p><i>還有所有幕後默默貢獻的無名英雄們…</i><br>\n"
@@ -7943,7 +8154,6 @@ msgstr ""
"登入時,傳回未知的回覆碼「0x%02X」:\n"
"%s"
-#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
msgstr "無法連線。"
@@ -8856,9 +9066,6 @@ msgstr "所屬機構"
msgid "Unit"
msgstr "部門"
-msgid "Note"
-msgstr "備註"
-
msgid "Join Chat"
msgstr "加入聊天室"
@@ -9553,197 +9760,12 @@ msgid "Auth Domain"
msgstr "認證域名"
#, c-format
-msgid "Looking up %s"
-msgstr "找尋 %s 中"
-
-#, c-format
-msgid "Connect to %s failed"
-msgstr "連結到 %s 失敗"
-
-#, c-format
-msgid "Signon: %s"
-msgstr "登入:%s"
-
-#, c-format
-msgid "Unable to write file %s."
-msgstr "無法寫入檔案 %s。"
-
-#, c-format
-msgid "Unable to read file %s."
-msgstr "無法讀取檔案 %s。"
-
-#, c-format
-msgid "Message too long, last %s bytes truncated."
-msgstr "訊息太長,最後的 %s 位元組被截去。"
-
-#, c-format
-msgid "%s not currently logged in."
-msgstr "%s 目前並未登入。"
-
-# NOTE 譯文更動 by Ambrose
-#, c-format
-msgid "Warning of %s not allowed."
-msgstr "不允許對 %s 發出警告。"
-
-#, c-format
-msgid "A message has been dropped, you are exceeding the server speed limit."
-msgstr "訊息被丟棄,因為您達到了伺服器所限制的發送速度。"
-
-#, c-format
-msgid "Chat in %s is not available."
-msgstr "在 %s 不可以聊天。"
-
-#, c-format
-msgid "You are sending messages too fast to %s."
-msgstr "您送訊息給 %s 的速度太快了。"
-
-#, c-format
-msgid "You missed an IM from %s because it was too big."
-msgstr "您遺失了一個由 %s 送來的訊息,因為它太大了。"
-
-#, c-format
-msgid "You missed an IM from %s because it was sent too fast."
-msgstr "您遺失了一個由 %s 送來的訊息,因為它傳送的速度太快。"
-
-#, c-format
-msgid "Failure."
-msgstr "失敗。"
-
-#, c-format
-msgid "Too many matches."
-msgstr "匹配太多。"
-
-#, c-format
-msgid "Need more qualifiers."
-msgstr "需輸入更多檢索條件。"
-
-# NOTE「暫時無法使用」應該比「暫時不存在」通順
-# NOTE 譯文更動 by Ambrose
-#, c-format
-msgid "Dir service temporarily unavailable."
-msgstr "暫時無法使用目錄服務。"
-
-#, c-format
-msgid "Email lookup restricted."
-msgstr "禁止 E-Mail 檢查。"
-
-#, c-format
-msgid "Keyword ignored."
-msgstr "關鍵字已被忽略。"
-
-#, c-format
-msgid "No keywords."
-msgstr "沒有關鍵字。"
-
-#, c-format
-msgid "User has no directory information."
-msgstr "這個使用者沒有他的相關資訊。"
-
-#, c-format
-msgid "Country not supported."
-msgstr "這個國家不被支援。"
-
-#, c-format
-msgid "Failure unknown: %s."
-msgstr "未知的失敗原因:%s。"
-
-#, c-format
-msgid "Incorrect username or password."
-msgstr "錯誤的帳號或密碼。"
-
-# NOTE「暫時無法使用」應該比「暫時不存在」通順
-# NOTE 譯文更動 by Ambrose
-#, c-format
-msgid "The service is temporarily unavailable."
-msgstr "暫時無法使用該項服務。"
-
-#, c-format
-msgid "Your warning level is currently too high to log in."
-msgstr "您目前登入系統的警告等級太高,以致無法登入。"
-
-#, c-format
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
-msgstr ""
-"您的連線/斷線動作太過頻繁。請等待十分鐘後再行重試。如果您依然繼續嘗試著連"
-"線,那麼您的等待時間將會更加的延長。"
-
-#, c-format
-msgid "An unknown signon error has occurred: %s."
-msgstr "發生了一個未知的登入錯誤:%s。"
-
-#, c-format
-msgid "An unknown error, %d, has occurred. Info: %s"
-msgstr "一個未知的錯誤 %d 發生。資訊:%s"
-
-msgid "Invalid Groupname"
-msgstr "無效的群組名稱"
-
-msgid "Connection Closed"
-msgstr "連線關閉"
-
-msgid "Waiting for reply..."
-msgstr "等待回覆中..."
-
-msgid "TOC has come back from its pause. You may now send messages again."
-msgstr "TOC 結束了暫停狀態。您現在可以繼續的傳送您的訊息。"
-
-msgid "Password Change Successful"
-msgstr "密碼修改成功"
-
-msgid "_Group:"
-msgstr "群組(_G):"
-
-msgid "Get Dir Info"
-msgstr "取得使用者個人資訊"
-
-msgid "Set Dir Info"
-msgstr "設定使用者個人資訊"
-
-#, c-format
-msgid "Could not open %s for writing!"
-msgstr "無法開啟 %s 以供寫入!"
-
-msgid "File transfer failed; other side probably canceled."
-msgstr "檔案傳輸失敗;可能是對方取消傳輸。"
-
-msgid "Could not connect for transfer."
-msgstr "無法開啟連線以供傳輸。"
-
-msgid "Could not write file header. The file will not be transferred."
-msgstr "無法寫入檔頭資訊。這個檔案將不會被傳送。"
-
-msgid "Save As..."
-msgstr "另存新檔..."
-
-#, c-format
-msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-msgstr[0] "%s 要求 %s 接收 %d 個檔案:%s (%.2f %s)%s%s"
-msgstr[1] "%s 要求 %s 接收 %d 個檔案:%s (%.2f %s)%s%s"
-
-#, c-format
-msgid "%s requests you to send them a file"
-msgstr "%s 要求您傳送檔案給他(她)。"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-msgid "TOC Protocol Plugin"
-msgstr "TOC 協定模組"
-
-#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr "%s 送來了一個視像聊天的邀請,但目前還沒有視像聊天的支援。"
+msgid "Your SMS was not delivered"
+msgstr ""
+
# NOTE 譯文更動 by Ambrose
msgid "Your Yahoo! message did not get sent."
msgstr "無法送出您的 Yahoo! 訊息。"
@@ -10379,9 +10401,6 @@ msgstr "請勿打擾"
msgid "Extended away"
msgstr "長時間離開"
-msgid "Mobile"
-msgstr "使用行動裝置"
-
msgid "Listening to music"
msgstr "聽音樂中"
@@ -10423,18 +10442,6 @@ msgstr "+++ %s 不再閒置"
msgid "%x %X"
msgstr "%x %X"
-#, c-format
-msgid "Error Reading %s"
-msgstr "讀取 %s 途中發生了錯誤"
-
-# NOTE 「They」是什麼呢?譯成「它們」的話,「它們」又是什麼呢?寫長一點好了。
-#, c-format
-msgid ""
-"An error was encountered reading your %s. They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"在解析您的%s時發生錯誤。檔案內的資料並沒有被讀入,同時舊檔案已移至 %s~。"
-
msgid "Calculating..."
msgstr "計算中..."
@@ -10507,6 +10514,12 @@ msgstr "寫入 %s 途中發生了錯誤:%s"
msgid "Unable to connect to %s: %s"
msgstr "無法連線到 %s:%s"
+#, fuzzy, c-format
+msgid ""
+"Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
+"found."
+msgstr "登入這個伺服器需要使用 TLS/SSL,但找不到 TLS/SSL 支援。"
+
#, c-format
msgid " - %s"
msgstr " - %s"
@@ -10541,6 +10554,18 @@ msgstr "連線被拒。"
msgid "Address already in use."
msgstr "位址已在使用中"
+#, c-format
+msgid "Error Reading %s"
+msgstr "讀取 %s 途中發生了錯誤"
+
+# NOTE 「They」是什麼呢?譯成「它們」的話,「它們」又是什麼呢?寫長一點好了。
+#, fuzzy, c-format
+msgid ""
+"An error was encountered reading your %s. The file has not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"在解析您的%s時發生錯誤。檔案內的資料並沒有被讀入,同時舊檔案已移至 %s~。"
+
msgid "Internet Messenger"
msgstr "網路即時通"
@@ -10586,10 +10611,8 @@ msgstr "新郵件通知(_M)"
msgid "Use this buddy _icon for this account:"
msgstr "使用下列好友圖示(_I):"
-#. Build the protocol options frame.
-#, c-format
-msgid "%s Options"
-msgstr "%s 選項"
+msgid "_Advanced"
+msgstr "進階設定(_A)"
msgid "Use GNOME Proxy Settings"
msgstr "使用 GNOME 的代理伺服器設定"
@@ -10626,9 +10649,6 @@ msgstr "如果您看得夠仔細"
msgid "you can see the butterflies mating"
msgstr "鴛鴦蝴蝶也看得見耶"
-msgid "Proxy Options"
-msgstr "代理伺服器選項"
-
msgid "Proxy _type:"
msgstr "代理伺服器型態(_T):"
@@ -10656,8 +10676,9 @@ msgstr "基本設定(_B)"
msgid "Create _this new account on the server"
msgstr "在伺服器上建立這個新帳號(_T)"
-msgid "_Advanced"
-msgstr "進階設定(_A)"
+#, fuzzy
+msgid "_Proxy"
+msgstr "代理伺服器"
msgid "Enabled"
msgstr "啟動"
@@ -10730,6 +10751,18 @@ msgstr "取得資訊(_I)"
msgid "I_M"
msgstr "即時訊息(_M)"
+#, fuzzy
+msgid "_Audio Call"
+msgstr "新增聊天室(_A)"
+
+msgid "Audio/_Video Call"
+msgstr ""
+
+# XXX 暫譯
+#, fuzzy
+msgid "_Video Call"
+msgstr "視像聊天"
+
msgid "_Send File..."
msgstr "傳送檔案(_S)..."
@@ -10870,6 +10903,10 @@ msgstr "/工具/好友狀態捕捉(_P)"
msgid "/Tools/_Certificates"
msgstr "/工具/憑證(_C)"
+#, fuzzy
+msgid "/Tools/Custom Smile_ys"
+msgstr "/工具/表情(_Y)"
+
msgid "/Tools/Plu_gins"
msgstr "/工具/模組(_G)"
@@ -10879,9 +10916,6 @@ msgstr "/工具/偏好設定(_E)"
msgid "/Tools/Pr_ivacy"
msgstr "/工具/隱私設定(_I)"
-msgid "/Tools/Smile_y"
-msgstr "/工具/表情(_Y)"
-
msgid "/Tools/_File Transfers"
msgstr "/工具/檔案傳輸(_F)"
@@ -11001,8 +11035,8 @@ msgstr "使用者自定"
msgid "By status"
msgstr "依照狀態"
-msgid "By log size"
-msgstr "依照日誌大小"
+msgid "By recent log activity"
+msgstr ""
#, c-format
msgid "%s disconnected"
@@ -11018,6 +11052,9 @@ msgstr "重新連線"
msgid "Re-enable"
msgstr "重新啟動"
+msgid "SSL FAQs"
+msgstr ""
+
msgid "Welcome back!"
msgstr "歡迎歸來!"
@@ -11102,6 +11139,9 @@ msgstr "請輸入別名,或者關於您所想加入好友清單的聊天室的
msgid "A_lias:"
msgstr "別名(_L):"
+msgid "_Group:"
+msgstr "群組(_G):"
+
msgid "Auto_join when account becomes online."
msgstr "帳號上線後隨即自動加入(_J)。"
@@ -11158,12 +11198,6 @@ msgstr "您並未登入任何一個可供您邀請哪個好友的通訊協定。
msgid "Invite Buddy Into Chat Room"
msgstr "邀請好友進入聊天室"
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr "請輸入您想邀請的使用者名稱,以及邀請的訊息。"
-
msgid "_Buddy:"
msgstr "好友(_B):"
@@ -11242,6 +11276,22 @@ msgstr "/交談/另存新檔(_S)..."
msgid "/Conversation/Clea_r Scrollback"
msgstr "/交談/清空交談內容(_R)"
+#, fuzzy
+msgid "/Conversation/M_edia"
+msgstr "/交談/更多(_O)"
+
+#, fuzzy
+msgid "/Conversation/Media/_Audio Call"
+msgstr "/交談/更多(_O)"
+
+#, fuzzy
+msgid "/Conversation/Media/_Video Call"
+msgstr "/交談/更多(_O)"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video _Call"
+msgstr "/交談/觀看歷史記錄(_L)"
+
msgid "/Conversation/Se_nd File..."
msgstr "/交談/傳送檔案(_N)..."
@@ -11314,6 +11364,18 @@ msgstr "/交談"
msgid "/Conversation/View Log"
msgstr "/交談/觀看歷史記錄"
+#, fuzzy
+msgid "/Conversation/Media/Audio Call"
+msgstr "/交談/更多"
+
+#, fuzzy
+msgid "/Conversation/Media/Video Call"
+msgstr "/交談/觀看歷史記錄"
+
+#, fuzzy
+msgid "/Conversation/Media/Audio\\/Video Call"
+msgstr "/交談/更多"
+
msgid "/Conversation/Send File..."
msgstr "/交談/傳送檔案..."
@@ -11511,6 +11573,9 @@ msgstr "平面設計"
msgid "Ka-Hing Cheung"
msgstr "張家興"
+msgid "voice and video"
+msgstr ""
+
msgid "support"
msgstr "支援"
@@ -11668,6 +11733,10 @@ msgstr "喬治亞文"
msgid "Ubuntu Georgian Translators"
msgstr "Ubuntu 旗下所有喬治亞文翻譯人員"
+#, fuzzy
+msgid "Khmer"
+msgstr "其他"
+
# NOTE 參見 http://www.cnscode.org.tw/cnscode/lang.jsp?qrytype=char&keyword=K
# NOTE 註:KDE 譯「坎納達」
msgid "Kannada"
@@ -12174,15 +12243,6 @@ msgstr "用來顯示輸入通知的字型"
msgid "Enable typing notification"
msgstr "啟用輸入通知"
-msgid "_Copy Email Address"
-msgstr "複製電子郵件地址(_C)"
-
-msgid "_Open Link in Browser"
-msgstr "在瀏覽器中打開連結(_O)"
-
-msgid "_Copy Link Location"
-msgstr "複製連結位址(_C)"
-
# NOTE "Defaulting to PNG" 是指 Pidgin 在無計可施的情況下盲猜影像是 PNG 格式
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
@@ -12435,13 +12495,14 @@ msgstr "%s %s。執行「%s -h」以獲得更進一步的資訊。\n"
# FIXME
# NOTE hard-code 了一個「Pidgin」在譯文裏,但刪掉會有點困難(令文句難明),故暫時保留,待想到怎樣刪掉才算
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12466,13 +12527,14 @@ msgstr ""
# FIXME
# NOTE hard-code 了一個「Pidgin」在譯文裏,但刪掉會有點困難(令文句難明),故暫時保留,待想到怎樣刪掉才算
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
" -d, --debug print debugging messages to stdout\n"
+" -f, --force-online force online, regardless of network status\n"
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
@@ -12520,11 +12582,23 @@ msgstr "Pidgin"
msgid "Exiting because another libpurple client is already running.\n"
msgstr ""
-msgid "Open All Messages"
-msgstr "開啟所有訊息"
+msgid "/_Media"
+msgstr ""
-msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">您有郵件!</span>"
+msgid "/Media/_Hangup"
+msgstr ""
+
+#, fuzzy
+msgid "Calling..."
+msgstr "計算中..."
+
+#, c-format
+msgid "%s wishes to start an audio/video session with you."
+msgstr ""
+
+#, c-format
+msgid "%s wishes to start a video session with you."
+msgstr ""
#, c-format
msgid "%s has %d new message."
@@ -12553,6 +12627,27 @@ msgid ""
"The 'Manual' browser command has been chosen, but no command has been set."
msgstr "您選用了「使用者自定瀏覽器」,卻未有設定指令。"
+msgid "Open All Messages"
+msgstr "開啟所有訊息"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">您有郵件!</span>"
+
+#, fuzzy
+msgid "New Pounces"
+msgstr "新增好友狀態捕捉"
+
+msgid "Dismiss"
+msgstr ""
+
+#, fuzzy
+msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">您有郵件!</span>"
+
+#, fuzzy
+msgid "No message"
+msgstr "不明的訊息"
+
msgid "The following plugins will be unloaded."
msgstr "以下的模組將會被卸載。"
@@ -12599,6 +12694,10 @@ msgstr "<b>模組明細</b>"
msgid "Select a file"
msgstr "選擇檔案"
+#, fuzzy
+msgid "Modify Buddy Pounce"
+msgstr "編輯好友狀態捕捉"
+
#. Create the "Pounce on Whom" frame.
msgid "Pounce on Whom"
msgstr "捕捉誰的狀態"
@@ -12669,6 +12768,50 @@ msgstr "重覆發生(_R)"
msgid "Pounce Target"
msgstr "捕捉目標"
+#, fuzzy, c-format
+msgid "Started typing"
+msgstr "開始輸入"
+
+#, fuzzy, c-format
+msgid "Paused while typing"
+msgstr "暫停輸入"
+
+#, fuzzy, c-format
+msgid "Signed on"
+msgstr "登入"
+
+#, fuzzy, c-format
+msgid "Returned from being idle"
+msgstr "%s 由閒置返回 (%s)"
+
+#, fuzzy, c-format
+msgid "Returned from being away"
+msgstr "返回"
+
+#, fuzzy, c-format
+msgid "Stopped typing"
+msgstr "停止輸入"
+
+#, fuzzy, c-format
+msgid "Signed off"
+msgstr "登出"
+
+#, fuzzy, c-format
+msgid "Became idle"
+msgstr "閒置"
+
+#, fuzzy, c-format
+msgid "Went away"
+msgstr "離開期間"
+
+#, fuzzy, c-format
+msgid "Sent a message"
+msgstr "送出訊息"
+
+#, fuzzy, c-format
+msgid "Unknown.... Please report this!"
+msgstr "未知的捕捉事件。請回報這個問題!"
+
# XXX 要覆查 - 20061025
msgid "Smiley theme failed to unpack."
msgstr "無法打開表情主題。"
@@ -12693,6 +12836,12 @@ msgstr "鍵盤捷徑"
msgid "Cl_ose conversations with the Escape key"
msgstr "允許使用 Escape 鍵關閉交談(_O)"
+#. Buddy List Themes
+#, fuzzy
+msgid "Buddy List Theme"
+msgstr "好友清單"
+
+#. System Tray
msgid "System Tray Icon"
msgstr "系統工作匣圖示"
@@ -12806,9 +12955,6 @@ msgstr "無法啟動代理伺服器設定程式。"
msgid "Cannot start browser configuration program."
msgstr "無法啟動瀏覽器設定程式。"
-msgid "ST_UN server:"
-msgstr "STUN 伺服器(_U):"
-
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">例:stunserver.org</span>"
@@ -12833,6 +12979,10 @@ msgstr "啟始通訊埠(_S):"
msgid "_End port:"
msgstr "結束通訊埠(_E):"
+#. TURN server
+msgid "Relay Server (TURN)"
+msgstr ""
+
msgid "Proxy Server &amp; Browser"
msgstr "代理伺服器及瀏覽器"
@@ -13022,13 +13172,13 @@ msgstr "當離開並同時閒置時"
msgid "Auto-away"
msgstr "自動離開"
-msgid "Change status when _idle"
-msgstr "閒置時更改狀態(_I)"
-
# NOTE 譯文更動 by Ambrose
msgid "_Minutes before becoming idle:"
msgstr "閒置多少分鐘更改狀態(_M):"
+msgid "Change status when _idle"
+msgstr "閒置時更改狀態(_I)"
+
msgid "Change _status to:"
msgstr "更改狀態為(_S):"
@@ -13178,6 +13328,12 @@ msgstr "儲存並使用(_V)"
msgid "Status for %s"
msgstr "狀態:%s"
+#.
+#. * TODO: We should enable/disable the add button based on
+#. * whether the user has entered all required data. That
+#. * would eliminate the need for this check and provide a
+#. * better user experience.
+#.
msgid "Custom Smiley"
msgstr "自訂表情"
@@ -13187,15 +13343,15 @@ msgstr "需要進一步的資料"
msgid "Please provide a shortcut to associate with the smiley."
msgstr "請給這個表情給定一個相關的捷徑。"
-msgid "Duplicate Shortcut"
-msgstr "重覆的表情定義"
-
# XXX 20080810 acli - 暫譯
+#, fuzzy, c-format
msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
+"A custom smiley for '%s' already exists. Please use a different shortcut."
msgstr "給定的捷徑已有相關的自訂表情,請指定另一個捷徑。"
+msgid "Duplicate Shortcut"
+msgstr "重覆的表情定義"
+
msgid "Please select an image for the smiley."
msgstr "請給這個表情選擇一個圖像。"
@@ -13205,16 +13361,22 @@ msgstr "修改表情"
msgid "Add Smiley"
msgstr "新增表情"
-msgid "Smiley _Image"
-msgstr "表情圖像(_I)"
+#, fuzzy
+msgid "_Image:"
+msgstr "影像(_I)"
-#. Smiley shortcut
-msgid "Smiley S_hortcut"
-msgstr "表情捷徑(_H)"
+#. Shortcut text
+#, fuzzy
+msgid "S_hortcut text:"
+msgstr "捷徑"
msgid "Smiley"
msgstr "表情"
+#, fuzzy
+msgid "Shortcut Text"
+msgstr "捷徑"
+
msgid "Custom Smiley Manager"
msgstr "自訂表情管理"
@@ -13335,6 +13497,16 @@ msgid ""
"Failed to load image '%s': reason not known, probably a corrupt image file"
msgstr "無法載入影像「%s」,原因不明,大概是影像檔已損壞"
+#, fuzzy
+msgid "_Open Link"
+msgstr "在瀏覽器中打開連結(_O):"
+
+msgid "_Copy Link Location"
+msgstr "複製連結位址(_C)"
+
+msgid "_Copy Email Address"
+msgstr "複製電子郵件地址(_C)"
+
msgid "Save File"
msgstr "儲存檔案"
@@ -14388,6 +14560,180 @@ msgstr "送出、讀取未加工的 XMPP 段落。"
msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr "幫助為 XMPP 伺服器或客戶端進行除錯。"
+#~ msgid "Invite message"
+#~ msgstr "邀請訊息"
+
+#~ msgid ""
+#~ "Please enter the name of the user you wish to invite,\n"
+#~ "along with an optional invite message."
+#~ msgstr "請輸入您想邀請的使用者名稱,以及選擇性填寫邀請的訊息。"
+
+#~ msgid "Looking up %s"
+#~ msgstr "找尋 %s 中"
+
+#~ msgid "Connect to %s failed"
+#~ msgstr "連結到 %s 失敗"
+
+#~ msgid "Signon: %s"
+#~ msgstr "登入:%s"
+
+#~ msgid "Unable to write file %s."
+#~ msgstr "無法寫入檔案 %s。"
+
+#~ msgid "Unable to read file %s."
+#~ msgstr "無法讀取檔案 %s。"
+
+#~ msgid "Message too long, last %s bytes truncated."
+#~ msgstr "訊息太長,最後的 %s 位元組被截去。"
+
+#~ msgid "%s not currently logged in."
+#~ msgstr "%s 目前並未登入。"
+
+# NOTE 譯文更動 by Ambrose
+#~ msgid "Warning of %s not allowed."
+#~ msgstr "不允許對 %s 發出警告。"
+
+#~ msgid ""
+#~ "A message has been dropped, you are exceeding the server speed limit."
+#~ msgstr "訊息被丟棄,因為您達到了伺服器所限制的發送速度。"
+
+#~ msgid "Chat in %s is not available."
+#~ msgstr "在 %s 不可以聊天。"
+
+#~ msgid "You are sending messages too fast to %s."
+#~ msgstr "您送訊息給 %s 的速度太快了。"
+
+#~ msgid "You missed an IM from %s because it was too big."
+#~ msgstr "您遺失了一個由 %s 送來的訊息,因為它太大了。"
+
+#~ msgid "You missed an IM from %s because it was sent too fast."
+#~ msgstr "您遺失了一個由 %s 送來的訊息,因為它傳送的速度太快。"
+
+#~ msgid "Failure."
+#~ msgstr "失敗。"
+
+#~ msgid "Too many matches."
+#~ msgstr "匹配太多。"
+
+#~ msgid "Need more qualifiers."
+#~ msgstr "需輸入更多檢索條件。"
+
+# NOTE「暫時無法使用」應該比「暫時不存在」通順
+# NOTE 譯文更動 by Ambrose
+#~ msgid "Dir service temporarily unavailable."
+#~ msgstr "暫時無法使用目錄服務。"
+
+#~ msgid "Email lookup restricted."
+#~ msgstr "禁止 E-Mail 檢查。"
+
+#~ msgid "Keyword ignored."
+#~ msgstr "關鍵字已被忽略。"
+
+#~ msgid "No keywords."
+#~ msgstr "沒有關鍵字。"
+
+#~ msgid "User has no directory information."
+#~ msgstr "這個使用者沒有他的相關資訊。"
+
+#~ msgid "Country not supported."
+#~ msgstr "這個國家不被支援。"
+
+#~ msgid "Failure unknown: %s."
+#~ msgstr "未知的失敗原因:%s。"
+
+#~ msgid "Incorrect username or password."
+#~ msgstr "錯誤的帳號或密碼。"
+
+# NOTE「暫時無法使用」應該比「暫時不存在」通順
+# NOTE 譯文更動 by Ambrose
+#~ msgid "The service is temporarily unavailable."
+#~ msgstr "暫時無法使用該項服務。"
+
+#~ msgid "Your warning level is currently too high to log in."
+#~ msgstr "您目前登入系統的警告等級太高,以致無法登入。"
+
+#~ 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 ""
+#~ "您的連線/斷線動作太過頻繁。請等待十分鐘後再行重試。如果您依然繼續嘗試著連"
+#~ "線,那麼您的等待時間將會更加的延長。"
+
+#~ msgid "An unknown signon error has occurred: %s."
+#~ msgstr "發生了一個未知的登入錯誤:%s。"
+
+#~ msgid "An unknown error, %d, has occurred. Info: %s"
+#~ msgstr "一個未知的錯誤 %d 發生。資訊:%s"
+
+#~ msgid "Invalid Groupname"
+#~ msgstr "無效的群組名稱"
+
+#~ msgid "Connection Closed"
+#~ msgstr "連線關閉"
+
+#~ msgid "Waiting for reply..."
+#~ msgstr "等待回覆中..."
+
+#~ msgid "TOC has come back from its pause. You may now send messages again."
+#~ msgstr "TOC 結束了暫停狀態。您現在可以繼續的傳送您的訊息。"
+
+#~ msgid "Password Change Successful"
+#~ msgstr "密碼修改成功"
+
+#~ msgid "Get Dir Info"
+#~ msgstr "取得使用者個人資訊"
+
+#~ msgid "Set Dir Info"
+#~ msgstr "設定使用者個人資訊"
+
+#~ msgid "Could not open %s for writing!"
+#~ msgstr "無法開啟 %s 以供寫入!"
+
+#~ msgid "File transfer failed; other side probably canceled."
+#~ msgstr "檔案傳輸失敗;可能是對方取消傳輸。"
+
+#~ msgid "Could not connect for transfer."
+#~ msgstr "無法開啟連線以供傳輸。"
+
+#~ msgid "Could not write file header. The file will not be transferred."
+#~ msgstr "無法寫入檔頭資訊。這個檔案將不會被傳送。"
+
+#~ msgid "Save As..."
+#~ msgstr "另存新檔..."
+
+#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+#~ msgstr[0] "%s 要求 %s 接收 %d 個檔案:%s (%.2f %s)%s%s"
+#~ msgstr[1] "%s 要求 %s 接收 %d 個檔案:%s (%.2f %s)%s%s"
+
+#~ msgid "%s requests you to send them a file"
+#~ msgstr "%s 要求您傳送檔案給他(她)。"
+
+#~ msgid "TOC Protocol Plugin"
+#~ msgstr "TOC 協定模組"
+
+#~ msgid "%s Options"
+#~ msgstr "%s 選項"
+
+#~ msgid "Proxy Options"
+#~ msgstr "代理伺服器選項"
+
+#~ msgid "By log size"
+#~ msgstr "依照日誌大小"
+
+#~ msgid "_Open Link in Browser"
+#~ msgstr "在瀏覽器中打開連結(_O)"
+
+#~ msgid "ST_UN server:"
+#~ msgstr "STUN 伺服器(_U):"
+
+#~ msgid "Smiley _Image"
+#~ msgstr "表情圖像(_I)"
+
+#~ msgid "Smiley S_hortcut"
+#~ msgstr "表情捷徑(_H)"
+
#~ msgid "Unable to retrieve MSN Address Book"
#~ msgstr "無法讀取 MSN 通訊錄"
diff --git a/share/ca-certs/Makefile.am b/share/ca-certs/Makefile.am
index 6fa8d98ec7..d54c890a18 100644
--- a/share/ca-certs/Makefile.am
+++ b/share/ca-certs/Makefile.am
@@ -4,6 +4,7 @@ CERTIFICATES = \
CAcert_Class3.pem \
Equifax_Secure_CA.pem \
GTE_CyberTrust_Global_Root.pem \
+ StartCom_Certification_Authority.pem \
StartCom_Free_SSL_CA.pem \
Verisign_RSA_Secure_Server_CA.pem \
Verisign_Class3_Primary_CA.pem \
diff --git a/share/ca-certs/StartCom_Certification_Authority.pem b/share/ca-certs/StartCom_Certification_Authority.pem
new file mode 100644
index 0000000000..960f2657be
--- /dev/null
+++ b/share/ca-certs/StartCom_Certification_Authority.pem
@@ -0,0 +1,44 @@
+-----BEGIN CERTIFICATE-----
+MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEW
+MBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwg
+Q2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNh
+dGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0NjM2WhcNMzYwOTE3MTk0NjM2WjB9
+MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMi
+U2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3Rh
+cnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUA
+A4ICDwAwggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZk
+pMyONvg45iPwbm2xPN1yo4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rf
+OQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/C
+Ji/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/deMotHweXMAEtcnn6RtYT
+Kqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt2PZE4XNi
+HzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMM
+Av+Z6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w
++2OqqGwaVLRcJXrJosmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+
+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3
+Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVcUjyJthkqcwEKDwOzEmDyei+B
+26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT37uMdBNSSwID
+AQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE
+FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9j
+ZXJ0LnN0YXJ0Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3Js
+LnN0YXJ0Y29tLm9yZy9zZnNjYS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFM
+BgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUHAgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0
+Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRwOi8vY2VydC5zdGFy
+dGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYgU3Rh
+cnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlh
+YmlsaXR5LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2Yg
+dGhlIFN0YXJ0Q29tIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFp
+bGFibGUgYXQgaHR0cDovL2NlcnQuc3RhcnRjb20ub3JnL3BvbGljeS5wZGYwEQYJ
+YIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBGcmVlIFNT
+TCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAgEAFmyZ
+9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8
+jhvh3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUW
+FjgKXlf2Ysd6AgXmvB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJz
+ewT4F+irsfMuXGRuczE6Eri8sxHkfY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1
+ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3fsNrarnDy0RLrHiQi+fHLB5L
+EUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZEoalHmdkrQYu
+L6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq
+yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuC
+O3NJo2pXh5Tl1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6V
+um0ABj6y6koQOdjQK/W/7HW/lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkySh
+NOsF/5oirpt9P/FlUQqmMGqz9IgcgA38corog14=
+-----END CERTIFICATE-----