summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Lundblad <malu@pidgin.im>2009-03-02 21:25:31 +0000
committerMarcus Lundblad <malu@pidgin.im>2009-03-02 21:25:31 +0000
commitb57c248e07a182c05c594a555eb6c3df9db76e4c (patch)
tree44b4786fd8195d9055dfbcf48457619ed9d1faa2
parenta02b0794453a192d756d3e65900097cb1e04d7ff (diff)
parent8f4cd05bc2cbeb9d8975548858e65558600115bd (diff)
downloadpidgin-b57c248e07a182c05c594a555eb6c3df9db76e4c.tar.gz
propagate from branch 'im.pidgin.pidgin' (head 133e5eca834c5d4adad0937da2cb93df4e9c8b30)
to branch 'im.pidgin.cpw.malu.xmpp.idle' (head 9c4c5087aa07fbcb7ea01f00ddf08cf8cf1ea67d)
-rw-r--r--.mtn-ignore1
-rw-r--r--.todo7
-rw-r--r--AUTHORS2
-rw-r--r--COPYRIGHT2
-rw-r--r--ChangeLog27
-rw-r--r--ChangeLog.API70
-rw-r--r--ChangeLog.win325
-rw-r--r--Makefile.am1
-rw-r--r--Makefile.mingw2
-rw-r--r--NEWS11
-rw-r--r--configure.ac46
-rw-r--r--doc/TCL-HOWTO.dox2
-rw-r--r--doc/notify-signals.dox2
-rw-r--r--doc/pidgin.1.in8
-rw-r--r--finch/gntaccount.c10
-rw-r--r--finch/gntblist.c32
-rw-r--r--finch/gntconv.c7
-rw-r--r--finch/gntlog.c46
-rw-r--r--finch/gntlog.h2
-rw-r--r--finch/gntrequest.c27
-rw-r--r--finch/plugins/grouping.c2
-rwxr-xr-xfix-casts.sh18
-rw-r--r--libpurple/Makefile.am10
-rw-r--r--libpurple/Makefile.mingw7
-rw-r--r--libpurple/account.c87
-rw-r--r--libpurple/account.h2
-rw-r--r--libpurple/blist.c125
-rw-r--r--libpurple/blist.h139
-rw-r--r--libpurple/buddyicon.c18
-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.c36
-rw-r--r--libpurple/connection.h108
-rw-r--r--libpurple/conversation.c10
-rw-r--r--libpurple/conversation.h2
-rw-r--r--libpurple/core.c29
-rw-r--r--libpurple/core.h10
-rw-r--r--libpurple/dbus-bindings.h2
-rw-r--r--libpurple/dbus-server.h2
-rw-r--r--libpurple/desktopitem.c81
-rw-r--r--libpurple/desktopitem.h6
-rw-r--r--libpurple/eventloop.h10
-rw-r--r--libpurple/idle.c6
-rw-r--r--libpurple/internal.h2
-rw-r--r--libpurple/log.c130
-rw-r--r--libpurple/log.h15
-rw-r--r--libpurple/nat-pmp.c30
-rw-r--r--libpurple/network.c17
-rw-r--r--libpurple/network.h11
-rw-r--r--libpurple/notify.c32
-rw-r--r--libpurple/notify.h8
-rw-r--r--libpurple/ntlm.h2
-rw-r--r--libpurple/plugin.c12
-rw-r--r--libpurple/plugin.h4
-rw-r--r--libpurple/plugins/Makefile.mingw2
-rw-r--r--libpurple/plugins/autoaccept.c2
-rw-r--r--libpurple/plugins/perl/common/BuddyList.xs4
-rw-r--r--libpurple/plugins/perl/common/Request.xs30
-rw-r--r--libpurple/plugins/ssl/ssl-gnutls.c4
-rw-r--r--libpurple/plugins/statenotify.c2
-rw-r--r--libpurple/plugins/tcl/tcl_cmds.c13
-rw-r--r--libpurple/pounce.c76
-rw-r--r--libpurple/prefs.c43
-rw-r--r--libpurple/prefs.h4
-rw-r--r--libpurple/privacy.c10
-rw-r--r--libpurple/privacy.h2
-rw-r--r--libpurple/protocols/Makefile.mingw2
-rw-r--r--libpurple/protocols/bonjour/bonjour.c15
-rw-r--r--libpurple/protocols/bonjour/bonjour_ft.c28
-rw-r--r--libpurple/protocols/bonjour/buddy.c6
-rw-r--r--libpurple/protocols/bonjour/jabber.c106
-rw-r--r--libpurple/protocols/bonjour/mdns_avahi.c4
-rw-r--r--libpurple/protocols/gg/buddylist.c91
-rw-r--r--libpurple/protocols/gg/gg.c7
-rw-r--r--libpurple/protocols/irc/irc.c4
-rw-r--r--libpurple/protocols/irc/msgs.c21
-rw-r--r--libpurple/protocols/jabber/Makefile.am2
-rw-r--r--libpurple/protocols/jabber/Makefile.mingw1
-rw-r--r--libpurple/protocols/jabber/adhoccommands.c67
-rw-r--r--libpurple/protocols/jabber/auth.c10
-rw-r--r--libpurple/protocols/jabber/buddy.c168
-rw-r--r--libpurple/protocols/jabber/caps.c44
-rw-r--r--libpurple/protocols/jabber/chat.c8
-rw-r--r--libpurple/protocols/jabber/data.c14
-rw-r--r--libpurple/protocols/jabber/data.h6
-rw-r--r--libpurple/protocols/jabber/disco.c20
-rw-r--r--libpurple/protocols/jabber/google.c14
-rw-r--r--libpurple/protocols/jabber/ibb.c521
-rw-r--r--libpurple/protocols/jabber/ibb.h119
-rw-r--r--libpurple/protocols/jabber/iq.c8
-rw-r--r--libpurple/protocols/jabber/jabber.c199
-rw-r--r--libpurple/protocols/jabber/jabber.h12
-rw-r--r--libpurple/protocols/jabber/libxmpp.c38
-rw-r--r--libpurple/protocols/jabber/message.c65
-rw-r--r--libpurple/protocols/jabber/message.h2
-rw-r--r--libpurple/protocols/jabber/pep.c24
-rw-r--r--libpurple/protocols/jabber/presence.c28
-rw-r--r--libpurple/protocols/jabber/roster.c47
-rw-r--r--libpurple/protocols/jabber/si.c505
-rw-r--r--libpurple/protocols/jabber/si.h2
-rw-r--r--libpurple/protocols/jabber/usermood.c12
-rw-r--r--libpurple/protocols/jabber/usernick.c16
-rw-r--r--libpurple/protocols/jabber/usertune.c6
-rw-r--r--libpurple/protocols/jabber/xdata.c4
-rw-r--r--libpurple/protocols/msn/directconn.c20
-rw-r--r--libpurple/protocols/msn/msn.c80
-rw-r--r--libpurple/protocols/msn/notification.c196
-rw-r--r--libpurple/protocols/msn/notification.h6
-rw-r--r--libpurple/protocols/msn/session.c13
-rw-r--r--libpurple/protocols/msn/slpcall.c3
-rw-r--r--libpurple/protocols/msn/switchboard.c4
-rw-r--r--libpurple/protocols/msn/user.c3
-rw-r--r--libpurple/protocols/msn/userlist.c23
-rw-r--r--libpurple/protocols/msn/userlist.h2
-rw-r--r--libpurple/protocols/myspace/README16
-rw-r--r--libpurple/protocols/myspace/myspace.c68
-rw-r--r--libpurple/protocols/myspace/user.c42
-rw-r--r--libpurple/protocols/myspace/zap.c4
-rw-r--r--libpurple/protocols/novell/novell.c110
-rw-r--r--libpurple/protocols/null/README7
-rw-r--r--libpurple/protocols/null/nullprpl.c86
-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.c18
-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_feedbag.c164
-rw-r--r--libpurple/protocols/oscar/family_icbm.c196
-rw-r--r--libpurple/protocols/oscar/family_locate.c112
-rw-r--r--libpurple/protocols/oscar/family_odir.c8
-rw-r--r--libpurple/protocols/oscar/odc.c32
-rw-r--r--libpurple/protocols/oscar/oft.c2
-rw-r--r--libpurple/protocols/oscar/oscar.c788
-rw-r--r--libpurple/protocols/oscar/oscar.h93
-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/ChangeLog6
-rw-r--r--libpurple/protocols/qq/buddy_info.c12
-rw-r--r--libpurple/protocols/qq/buddy_list.c25
-rw-r--r--libpurple/protocols/qq/buddy_memo.c26
-rw-r--r--libpurple/protocols/qq/buddy_memo.h24
-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.c6
-rw-r--r--libpurple/protocols/qq/qq.c31
-rw-r--r--libpurple/protocols/qq/send_file.c2
-rw-r--r--libpurple/protocols/sametime/sametime.c187
-rw-r--r--libpurple/protocols/silc/buddy.c100
-rw-r--r--libpurple/protocols/silc/chat.c54
-rw-r--r--libpurple/protocols/silc/ops.c22
-rw-r--r--libpurple/protocols/simple/simple.c35
-rw-r--r--libpurple/protocols/toc/toc.c12
-rw-r--r--libpurple/protocols/yahoo/yahoo.c93
-rw-r--r--libpurple/protocols/yahoo/yahoo_picture.c2
-rw-r--r--libpurple/protocols/yahoo/yahoo_profile.c11
-rw-r--r--libpurple/protocols/yahoo/yahoochat.c2
-rw-r--r--libpurple/protocols/zephyr/zephyr.c152
-rw-r--r--libpurple/proxy.c36
-rw-r--r--libpurple/proxy.h8
-rw-r--r--libpurple/prpl.c8
-rw-r--r--libpurple/prpl.h57
-rwxr-xr-xlibpurple/purple-remote2
-rwxr-xr-xlibpurple/purple-send-async12
-rw-r--r--libpurple/request.c27
-rw-r--r--libpurple/request.h44
-rw-r--r--libpurple/savedstatuses.c7
-rw-r--r--libpurple/server.c34
-rw-r--r--libpurple/server.h12
-rw-r--r--libpurple/signals.c4
-rw-r--r--libpurple/signals.h2
-rw-r--r--libpurple/smiley.c2
-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.h105
-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.c4
-rw-r--r--libpurple/theme-loader.c183
-rw-r--r--libpurple/theme-loader.h92
-rw-r--r--libpurple/theme-manager.c295
-rw-r--r--libpurple/theme-manager.h131
-rw-r--r--libpurple/theme.c408
-rw-r--r--libpurple/theme.h175
-rw-r--r--libpurple/upnp.c2
-rw-r--r--libpurple/util.c88
-rw-r--r--libpurple/util.h15
-rw-r--r--libpurple/whiteboard.c2
-rw-r--r--libpurple/xmlnode.c110
-rw-r--r--libpurple/xmlnode.h18
-rw-r--r--pidgin/Makefile.am10
-rw-r--r--pidgin/Makefile.mingw5
-rw-r--r--pidgin/eggtrayicon.c28
-rw-r--r--pidgin/eggtrayicon.h6
-rw-r--r--pidgin/getopt.c8
-rw-r--r--pidgin/getopt1.c2
-rw-r--r--pidgin/gtkaccount.c62
-rw-r--r--pidgin/gtkblist-theme-loader.c279
-rw-r--r--pidgin/gtkblist-theme-loader.h71
-rw-r--r--pidgin/gtkblist-theme.c784
-rw-r--r--pidgin/gtkblist-theme.h332
-rw-r--r--pidgin/gtkblist.c916
-rw-r--r--pidgin/gtkblist.h20
-rw-r--r--pidgin/gtkcellrendererexpander.c45
-rw-r--r--pidgin/gtkcellrendererexpander.h2
-rw-r--r--pidgin/gtkcellrendererprogress.c32
-rw-r--r--pidgin/gtkcellrendererprogress.h2
-rw-r--r--pidgin/gtkcellview.c20
-rw-r--r--pidgin/gtkconv.c81
-rw-r--r--pidgin/gtkdebug.c4
-rw-r--r--pidgin/gtkdialogs.c13
-rw-r--r--pidgin/gtkdnd-hints.c8
-rw-r--r--pidgin/gtkdocklet-x11.c12
-rw-r--r--pidgin/gtkdocklet.h8
-rw-r--r--pidgin/gtkexpander.c40
-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.h93
-rw-r--r--pidgin/gtkimhtml.c404
-rw-r--r--pidgin/gtkimhtml.h74
-rw-r--r--pidgin/gtkimhtmltoolbar.c8
-rw-r--r--pidgin/gtklog.c44
-rw-r--r--pidgin/gtklog.h4
-rw-r--r--pidgin/gtkmain.c43
-rw-r--r--pidgin/gtkpluginpref.c2
-rw-r--r--pidgin/gtkpounce.c16
-rw-r--r--pidgin/gtkpounce.h2
-rw-r--r--pidgin/gtkprefs.c293
-rw-r--r--pidgin/gtkprefs.h2
-rw-r--r--pidgin/gtkrequest.c59
-rw-r--r--pidgin/gtksavedstatuses.c16
-rw-r--r--pidgin/gtkscrollbook.h2
-rw-r--r--pidgin/gtksession.c2
-rw-r--r--pidgin/gtksmiley.c30
-rw-r--r--pidgin/gtksmiley.h8
-rw-r--r--pidgin/gtksound.c48
-rw-r--r--pidgin/gtksound.h9
-rw-r--r--pidgin/gtksourceiter.c26
-rw-r--r--pidgin/gtksourceiter.h4
-rw-r--r--pidgin/gtksourceundomanager.c298
-rw-r--r--pidgin/gtksourceundomanager.h18
-rw-r--r--pidgin/gtkstatus-icon-theme.c72
-rw-r--r--pidgin/gtkstatus-icon-theme.h71
-rw-r--r--pidgin/gtkstatusbox.c40
-rw-r--r--pidgin/gtkthemes.c6
-rw-r--r--pidgin/gtkutils.c282
-rw-r--r--pidgin/gtkutils.h50
-rw-r--r--pidgin/gtkwhiteboard.c2
-rw-r--r--pidgin/pidgincombobox.c234
-rw-r--r--pidgin/pidginstock.c303
-rw-r--r--pidgin/pidginstock.h11
-rw-r--r--pidgin/pixmaps/Makefile.am4
-rw-r--r--pidgin/plugins/gevolution/gevo-util.c6
-rw-r--r--pidgin/plugins/gevolution/gevolution.c8
-rw-r--r--pidgin/plugins/gevolution/new_person_dialog.c26
-rw-r--r--pidgin/plugins/history.c31
-rw-r--r--pidgin/plugins/perl/common/GtkLog.xs4
-rw-r--r--pidgin/plugins/ticker/ticker.c23
-rw-r--r--pidgin/plugins/win32/winprefs/gtkappbar.c6
-rw-r--r--pidgin/win32/nsis/pidgin-installer.nsi2
-rw-r--r--po/ChangeLog15
-rw-r--r--po/POTFILES.in2
-rw-r--r--po/README2
-rw-r--r--po/af.po189
-rw-r--r--po/bn.po5601
-rw-r--r--po/ca.po85
-rw-r--r--po/da.po3337
-rw-r--r--po/de.po12
-rw-r--r--po/et.po2
-rw-r--r--po/hu.po82
-rw-r--r--po/km.po13636
-rw-r--r--po/nb.po2237
-rw-r--r--po/pa.po2535
-rw-r--r--po/pt_BR.po191
-rw-r--r--po/ru.po74
-rw-r--r--po/sv.po1159
-rw-r--r--po/zh_HK.po267
-rw-r--r--po/zh_TW.po267
-rw-r--r--share/ca-certs/AOL_Member_CA.pem25
-rw-r--r--share/ca-certs/America_Online_Root_Certification_Authority_1.pem23
-rw-r--r--share/ca-certs/Makefile.am2
293 files changed, 30020 insertions, 14976 deletions
diff --git a/.mtn-ignore b/.mtn-ignore
index 3f6c88ab7b..de8aae230a 100644
--- a/.mtn-ignore
+++ b/.mtn-ignore
@@ -10,6 +10,7 @@
.*\.def$
.*\.dll$
.*\.exe$
+.*\.loT$
intltool-.*
Doxyfile(\.mingw)?$
aclocal.m4
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 94a51424b0..8d083836f1 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -35,7 +35,7 @@ Nathan 'faceprint' Walp - Developer
Crazy Patch Writers:
-------------------
-Paul Aurich
+Paul 'darkrain42' Aurich
Marcus 'malu' Lundblad
Dennis 'EvilDennisR' Ristuccia
Peter 'Fmoo' Ruibal
diff --git a/COPYRIGHT b/COPYRIGHT
index ce260f93a1..530611f6b6 100644
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -87,6 +87,7 @@ Jono Cole
Lorenzo Colitti
Collabora Ltd.
Jeff Connelly
+Chris Connett
Nathan Conrad
Felipe Contreras
Alex Converse
@@ -219,6 +220,7 @@ Yann Kerherve
Gordian Klein
Akuke Kok
Kir Kolyshkin
+F.W. Kong
Konstantin Korikov
Cole Kowalski
Matt Kramer
diff --git a/ChangeLog b/ChangeLog
index 33f8d80170..ef538d8b1c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,25 @@
Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul
-version 2.5.5 (??/??/????):
+version 2.6.0 (??/??/2009):
+ General:
+ * Theme support in libpurple thanks to Justin Rodriguez's summer of code
+ project. With some minor additions and clean ups from Paul Aurich.
+
+ XMPP:
+ * Add support for in-band bytestreams (XEP-0047).
+ * Add support for attention (XEP-0224).
+
+ Pidgin:
+ * Added -f command line option to tell Pidgin to ignore NetworkManager
+ and assume it has a valid network connection.
+ * Allow plugins to specify custom link types to the GtkIMHtml widget.
+ * The status message input box at the bottom of the buddy list expands
+ correctly when starting a new line of text.
+ * Pressing the Enter key in the message entry box of the New Status
+ dialog and various other dialogs now causes the cursor to move to
+ the next line.
+
+version 2.5.5 (03/01/2009):
libpurple:
* Fix a crash when removing an account with an unknown protocol id.
* Beta support for SSL connections for AIM and ICQ accounts. To
@@ -669,13 +688,13 @@ version 2.2.1 (09/29/2007):
version 2.2.0 (09/13/2007):
http://developer.pidgin.im/query?status=closed&milestone=2.2.0
- Libpurple:
+ libpurple:
* New protocol plugin: MySpaceIM (Jeff Connelly, Google Summer of
Code)
* XMPP enhancements. See
- http://www.adiumx.com/blog/2007/07/soc-xmpp-update.php (Andreas
+ http://www.adiumx.com/blog/2007/07/soc-xmpp-update.php (Andreas
Monitzer, Google Summer of Code for Adium)
- * Certificate management. Libpurple will validate certificates on
+ * Certificate management. libpurple will validate certificates on
SSL-encrypted protocols (William Ehlhardt, Google Summer of Code)
* Some adjustments were made to fix sending messages when using
the MSN HTTP method. (Laszlo Pandy)
diff --git a/ChangeLog.API b/ChangeLog.API
index 883c8fb011..ba94d7b728 100644
--- a/ChangeLog.API
+++ b/ChangeLog.API
@@ -1,6 +1,74 @@
Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul
-version 2.5.5 (??/??/2009):
+version 2.6.0 (??/??/2009):
+ libpurple:
+ Added:
+ * PURPLE_BLIST_NODE
+ * PURPLE_GROUP
+ * PURPLE_CONTACT
+ * PURPLE_BUDDY
+ * PURPLE_CHAT
+ * purple_buddy_get_protocol_data
+ * purple_buddy_set_protocol_data
+ * purple_buddy_get_local_buddy_alias
+ * purple_blist_get_buddies
+ * purple_blist_get_ui_data
+ * purple_blist_set_ui_data
+ * purple_blist_node_get_ui_data
+ * purple_blist_node_set_ui_data
+ * purple_connection_get_protocol_data
+ * purple_connection_set_protocol_data
+ * purple_global_proxy_set_info
+ * purple_log_get_activity_score
+ * purple_network_force_online
+ * purple_request_field_get_group
+ * purple_request_field_get_ui_data
+ * purple_request_field_set_ui_data
+ * purple_strequal
+ * xmlnode_from_file
+
+ Deprecated:
+ * purple_buddy_get_local_alias
+ * purple_notify_user_info_remove_entry
+ * purple_status_type_set_primary_attr
+ * purple_status_type_add_attr
+ * purple_status_type_add_attrs
+ * purple_status_type_add_attrs_vargs
+ * purple_status_type_get_primary_attr
+ * purple_status_set_attr_boolean
+ * purple_status_set_attr_int
+ * purple_status_set_attr_string
+ * purple_presence_add_status
+ * purple_presence_add_list
+
+ pidgin:
+ Added:
+ * gtk_imhtml_class_register_protocol
+ * gtk_imhtml_link_get_url, gtk_imhtml_link_get_text_tag,
+ gtk_imhtml_link_activate functions to process GtkIMHtmlLink
+ objects from GtkIMHtml protocol callbacks.
+ * gtk_imhtml_set_return_inserts_newline
+ * pidgin_blist_set_theme
+ * pidgin_blist_get_theme
+ * pidgin_sound_is_customized
+ * pidgin_utils_init, pidgin_utils_uninit
+
+ perl:
+ Changed:
+ * Made a bunch of functions act more perl-like. Call the new()
+ functions as Class->new(...) instead of Class::new(...):
+ * Purple::Request::Fields::new
+ * Purple::Request::Field::new
+ * Purple::Request::Field::account_new
+ * Purple::Request::Field::bool_new
+ * Purple::Request::Field::choice_new
+ * Purple::Request::Field::int_new
+ * Purple::Request::Field::label_new
+ * Purple::Request::Field::list_new
+ * Purple::Request::Field::string_new
+ * Purple::Request::Field::group_new
+
+version 2.5.5 (03/01/2009):
libpurple:
Changed:
* purple_status_type_new now defaults "saveable" to TRUE.
diff --git a/ChangeLog.win32 b/ChangeLog.win32
index 3e3e10cb17..74b752acdb 100644
--- a/ChangeLog.win32
+++ b/ChangeLog.win32
@@ -1,7 +1,10 @@
-version 2.5.5 (??/??/2009):
+version 2.6.0 (??/??/2009):
+
+version 2.5.5 (03/01/2009):
* Remove the "Flash window when chat messages are received" pref from
the Windows Pidgin Options plugin - the Message Notification plugin
does this (and much more).
+ * Updated GTK+ to 2.14.7
version 2.5.4 (01/12/2009):
* Fix the "Hang on Exit" issue that a number of users encountered.
diff --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..a1d7c8d4db 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 := .
diff --git a/NEWS b/NEWS
index ed6536bce9..d43f4edce3 100644
--- a/NEWS
+++ b/NEWS
@@ -2,6 +2,17 @@ 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.5 (03/01/2009):
+ John: Well, yet another release with bug fixing and patches. Hopefully
+ one of the fixed bugs is one that irritated you. Also, thank Dimmuxx
+ for spending far too much time working on ICQ this release.
+
+ Elliott: Lots and lots of MSN bugfixes again (I hope they're fixed, at
+ least). I think we finally have OCS/Yahoo!/federated buddies working
+ now. And there should be some workarounds for some server things that
+ may or may not have been our fault (like buddies on Allow+Block) which
+ should make general usage a bit smoother.
+
2.5.4 (01/12/2009):
John: Well, we fixed a few bugs for you this time around, I applied
a few patches, and we've dealt with what feels like a TON of tickets
diff --git a/configure.ac b/configure.ac
index a3378478b6..88de36f823 100644
--- a/configure.ac
+++ b/configure.ac
@@ -43,19 +43,19 @@ 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], [5])
+m4_define([purple_minor_version], [6])
+m4_define([purple_micro_version], [0])
m4_define([purple_version_suffix], [devel])
m4_define([purple_version],
[purple_major_version.purple_minor_version.purple_micro_version])
m4_define([purple_display_version], purple_version[]m4_ifdef([purple_version_suffix],[purple_version_suffix]))
-m4_define([gnt_lt_current], [5])
+m4_define([gnt_lt_current], [6])
m4_define([gnt_major_version], [2])
-m4_define([gnt_minor_version], [5])
-m4_define([gnt_micro_version], [5])
+m4_define([gnt_minor_version], [6])
+m4_define([gnt_micro_version], [0])
m4_define([gnt_version_suffix], [devel])
m4_define([gnt_version],
[gnt_major_version.gnt_minor_version.gnt_micro_version])
@@ -144,7 +144,7 @@ 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 kn ko ku lo lt mk mn my_MM nb ne nl nn oc pa pl pt_BR pt ps ro ru si sk sl sq sr sr@latin sv ta te th tr uk ur vi xh zh_CN zh_HK zh_TW"
+ALL_LINGUAS="af am ar az be@latin bg bn bs ca ca@valencia cs da de dz el en_AU en_CA en_GB eo es et eu fa fi fr ga gl gu he hi hu id it ja ka km kn ko ku lo lt mk mn my_MM nb ne nl nn oc pa pl pt_BR pt ps ro ru si sk sl sq sr sr@latin sv ta te th tr uk ur vi xh zh_CN zh_HK zh_TW"
AM_GLIB_GNU_GETTEXT
dnl If we don't have msgfmt, then po/ is going to fail -- ensure that
@@ -1103,6 +1103,7 @@ 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 ;;
@@ -1117,21 +1118,6 @@ for i in $DYNAMIC_PRPLS ; do
*) echo "Invalid dynamic protocol $i!!" ; exit ;;
esac
done
-AM_CONDITIONAL(DYNAMIC_BONJOUR, test "x$dynamic_bonjour" = "xyes" -a [ "x$avahiincludes" = "xyes" -a "x$avahilibs " = "xyes" ] )
-AM_CONDITIONAL(DYNAMIC_GG, test "x$dynamic_gg" = "xyes")
-AM_CONDITIONAL(DYNAMIC_IRC, test "x$dynamic_irc" = "xyes")
-AM_CONDITIONAL(DYNAMIC_JABBER, test "x$dynamic_jabber" = "xyes")
-AM_CONDITIONAL(DYNAMIC_MSN, test "x$dynamic_msn" = "xyes")
-AM_CONDITIONAL(DYNAMIC_MYSPACE, test "x$dynamic_myspace" = "xyes")
-AM_CONDITIONAL(DYNAMIC_NOVELL, test "x$dynamic_novell" = "xyes")
-AM_CONDITIONAL(DYNAMIC_OSCAR, test "x$dynamic_oscar" = "xyes")
-AM_CONDITIONAL(DYNAMIC_QQ, test "x$dynamic_qq" = "xyes")
-AM_CONDITIONAL(DYNAMIC_SAMETIME, test "x$dynamic_sametime" = "xyes" -a "x$have_meanwhile" = "xyes")
-AM_CONDITIONAL(DYNAMIC_SILC, test "x$dynamic_silc" = "xyes" -a "x$have_silc" = "xyes")
-AM_CONDITIONAL(DYNAMIC_SIMPLE, test "x$dynamic_simple" = "xyes")
-AM_CONDITIONAL(DYNAMIC_TOC, test "x$dynamic_toc" = "xyes")
-AM_CONDITIONAL(DYNAMIC_YAHOO, test "x$dynamic_yahoo" = "xyes")
-AM_CONDITIONAL(DYNAMIC_ZEPHYR, test "x$dynamic_zephyr" = "xyes")
AC_ARG_ENABLE(plugins, [AC_HELP_STRING([--disable-plugins], [compile without plugin support])], , enable_plugins=yes)
AC_ARG_WITH(krb4, [AC_HELP_STRING([--with-krb4=PREFIX], [compile Zephyr plugin with Kerberos 4 support])], kerberos="$withval", kerberos="no")
@@ -1702,6 +1688,22 @@ fi
AC_SUBST(GNUTLS_CFLAGS)
AC_SUBST(GNUTLS_LIBS)
+if test "x$enable_gnutls" = "xyes"; then
+ AC_MSG_CHECKING(for gnutls_priority_set_direct)
+ LIBS_save="$LIBS"
+ LIBS="$LIBS $GNUTLS_LIBS"
+ CPPFLAGS_save="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $GNUTLS_CFLAGS"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <gnutls/gnutls.h>],
+ [gnutls_session s; gnutls_priority_set_direct(s, NULL, NULL);])],
+ [AC_DEFINE([HAVE_GNUTLS_PRIORITY_FUNCS], 1,
+ [Define if your gnutls has gnutls_priority_set_direct and friends])
+ AC_MSG_RESULT(yes)],
+ [AC_MSG_RESULT(no)])
+ CPPFLAGS="$CPPFLAGS_save"
+ LIBS="$LIBS_save"
+fi
+
AM_CONDITIONAL(USE_GNUTLS, test "x$enable_gnutls" = "xyes")
diff --git a/doc/TCL-HOWTO.dox b/doc/TCL-HOWTO.dox
index 931e5bf87c..f8a483035c 100644
--- a/doc/TCL-HOWTO.dox
+++ b/doc/TCL-HOWTO.dox
@@ -332,7 +332,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/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..0a91454949 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.
diff --git a/finch/gntaccount.c b/finch/gntaccount.c
index 575f3b04eb..b7fe53964c 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);
diff --git a/finch/gntblist.c b/finch/gntblist.c
index 39f852fb77..949d5b76b0 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;
@@ -886,7 +886,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 +1027,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 +1438,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 +1571,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 +1612,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 +1624,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 +1639,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 +1685,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)) {
@@ -2415,8 +2415,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),
diff --git a/finch/gntconv.c b/finch/gntconv.c
index 103048bbb8..c836262873 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;
diff --git a/finch/gntlog.c b/finch/gntlog.c
index 1dc973fbe4..5593f73c87 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,7 +62,7 @@ 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));
}
@@ -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/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/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..ced412c40e 100644
--- a/libpurple/Makefile.am
+++ b/libpurple/Makefile.am
@@ -75,7 +75,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 \
@@ -128,7 +133,12 @@ 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 \
diff --git a/libpurple/Makefile.mingw b/libpurple/Makefile.mingw
index 25fe830daf..952048c699 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 := ..
@@ -67,10 +67,15 @@ C_SRC = \
signals.c \
smiley.c \
sound.c \
+ sound-theme.c \
+ sound-theme-loader.c \
sslconn.c \
status.c \
stringref.c \
stun.c \
+ theme.c \
+ theme-loader.c \
+ theme-manager.c \
upnp.c \
util.c \
value.c \
diff --git a/libpurple/account.c b/libpurple/account.c
index eaf70344b4..0777fb4474 100644
--- a/libpurple/account.c
+++ b/libpurple/account.c
@@ -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));
}
@@ -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
{
@@ -2027,7 +2025,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 +2236,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 +2253,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 +2292,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 +2309,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 +2337,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 +2355,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 +2373,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 +2516,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 +2543,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 +2634,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;
}
diff --git a/libpurple/account.h b/libpurple/account.h
index 89f55bed69..7c6bfe9282 100644
--- a/libpurple/account.h
+++ b/libpurple/account.h
@@ -260,7 +260,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..171c1bb19d 100644
--- a/libpurple/blist.c
+++ b/libpurple/blist.c
@@ -82,7 +82,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)
@@ -382,11 +382,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 +453,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 +528,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 +590,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);
@@ -699,6 +699,24 @@ purple_blist_get_root()
return purplebuddylist ? purplebuddylist->root : NULL;
}
+GHashTable *
+purple_blist_get_buddies()
+{
+ return purplebuddylist ? purplebuddylist->buddies : NULL;
+}
+
+void *
+purple_blist_get_ui_data()
+{
+ return purplebuddylist->ui_data;
+}
+
+void
+purple_blist_set_ui_data(void *ui_data)
+{
+ purplebuddylist->ui_data = ui_data;
+}
+
void purple_blist_show()
{
PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
@@ -774,12 +792,28 @@ 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 +828,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,
@@ -1025,7 +1061,7 @@ void purple_blist_rename_group(PurpleGroup *source, const char *new_name)
g_return_if_fail(source != NULL);
g_return_if_fail(new_name != NULL);
- if (*new_name == '\0' || !strcmp(new_name, source->name))
+ if (*new_name == '\0' || purple_strequal(new_name, source->name))
return;
dest = purple_find_group(new_name);
@@ -1092,7 +1128,7 @@ 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 +1137,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);
@@ -1166,17 +1202,17 @@ PurpleChat *purple_chat_new(PurpleAccount *account, const char *alias, GHashTabl
return chat;
}
-PurpleBuddy *purple_buddy_new(PurpleAccount *account, const char *screenname, const char *alias)
+PurpleBuddy *purple_buddy_new(PurpleAccount *account, const char *name, const char *alias)
{
PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
PurpleBuddy *buddy;
g_return_val_if_fail(account != NULL, FALSE);
- g_return_val_if_fail(screenname != NULL, FALSE);
+ g_return_val_if_fail(name != NULL, FALSE);
buddy = g_new0(PurpleBuddy, 1);
buddy->account = account;
- buddy->name = g_strdup(screenname);
+ buddy->name = g_strdup(name);
buddy->alias = g_strdup(alias);
buddy->presence = purple_presence_new_for_buddy(buddy);
((PurpleBlistNode *)buddy)->type = PURPLE_BLIST_BUDDY_NODE;
@@ -1232,6 +1268,23 @@ 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;
@@ -1339,7 +1392,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)
@@ -1421,16 +1474,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));
@@ -1546,7 +1597,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) ||
@@ -2056,6 +2107,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);
@@ -2300,7 +2357,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)
diff --git a/libpurple/blist.h b/libpurple/blist.h
index 829212f787..460291a886 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"
@@ -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.
*
@@ -236,6 +260,33 @@ PurpleBuddyList *purple_get_blist(void);
PurpleBlistNode *purple_blist_get_root(void);
/**
+ * Returns the hash table of every buddy in the list.
+ *
+ * @return The hash table of every buddy in the list.
+ *
+ * @since 2.6.0
+ */
+GHashTable *purple_blist_get_buddies(void);
+
+/**
+ * Returns the UI data for the list.
+ *
+ * @return The UI data for the list.
+ *
+ * @since 2.6.0
+ */
+void *purple_blist_get_ui_data(void);
+
+/**
+ * Sets the UI data for the list.
+ *
+ * @param ui_data The UI data for the list.
+ *
+ * @since 2.6.0
+ */
+void purple_blist_set_ui_data(void *ui_data);
+
+/**
* Returns the next node of a given node. This function is to be used to iterate
* over the tree returned by purple_get_blist.
*
@@ -302,6 +353,25 @@ PurpleBlistNode *purple_blist_node_get_sibling_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
+ */
+void *purple_blist_node_get_ui_data(const PurpleBlistNode *node);
+
+/**
+ * Sets the UI data of a given node.
+ *
+ * @param node The node.
+ * @param ui_data The UI data.
+ *
+ * @since 2.6.0
+ */
+void purple_blist_node_set_ui_data(PurpleBlistNode *node, void *ui_data);
+
+/**
* Shows the buddy list, creating a new one if necessary.
*/
void purple_blist_show(void);
@@ -331,6 +401,7 @@ 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);
@@ -423,11 +494,11 @@ void purple_blist_add_chat(PurpleChat *chat, PurpleGroup *group, PurpleBlistNode
* Creates a new buddy
*
* @param account The account this buddy will get added to
- * @param screenname The screenname of the new buddy
+ * @param name The name of the new buddy
* @param alias The alias of the new buddy (or NULL if unaliased)
* @return A newly allocated buddy
*/
-PurpleBuddy *purple_buddy_new(PurpleAccount *account, const char *screenname, const char *alias);
+PurpleBuddy *purple_buddy_new(PurpleAccount *account, const char *name, const char *alias);
/**
* Sets a buddy's icon.
@@ -470,6 +541,32 @@ 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.
@@ -659,15 +756,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 +780,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 +798,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 +818,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 in the account)
*
* @return A GSList of buddies (which must be freed), or NULL if the buddy doesn't exist
*/
@@ -751,6 +861,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 +872,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);
@@ -979,6 +1091,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 f2567744a6..b54476b99b 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);
}
@@ -757,7 +757,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;
@@ -889,7 +889,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;
@@ -986,7 +988,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");
@@ -1083,7 +1085,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;
@@ -1098,7 +1100,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)
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 4563ab0c11..3c6af4301e 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;
@@ -94,7 +94,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..6a47f3b795 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);
}
@@ -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)
diff --git a/libpurple/connection.h b/libpurple/connection.h
index 8dc476daa8..6b715e495a 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
@@ -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
diff --git a/libpurple/conversation.c b/libpurple/conversation.c
index 34fbaa9c0a..6387db9811 100644
--- a/libpurple/conversation.c
+++ b/libpurple/conversation.c
@@ -665,7 +665,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 +912,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);
@@ -1480,7 +1480,7 @@ purple_conv_chat_write(PurpleConvChat *chat, const char *who, const char *messag
str = g_strdup(purple_normalize(account, who));
- if (!strcmp(str, purple_normalize(account, chat->nick))) {
+ if (purple_strequal(str, purple_normalize(account, chat->nick))) {
flags |= PURPLE_MESSAGE_SEND;
} else {
flags |= PURPLE_MESSAGE_RECV;
@@ -1601,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;
@@ -1692,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. */
diff --git a/libpurple/conversation.h b/libpurple/conversation.h
index b01708604f..e280f9f759 100644
--- a/libpurple/conversation.h
+++ b/libpurple/conversation.h
@@ -1350,7 +1350,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 7e4abd44fb..c15d4fd77b 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;
}
@@ -233,6 +240,7 @@ purple_core_quit(void)
purple_savedstatuses_uninit();
purple_status_uninit();
purple_sound_uninit();
+ purple_theme_manager_uninit();
purple_xfers_uninit();
purple_proxy_uninit();
purple_dnsquery_uninit();
@@ -350,15 +358,7 @@ 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);
}
}
@@ -489,7 +489,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)
@@ -532,7 +532,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,
@@ -577,7 +578,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
@@ -646,7 +647,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..958685dd6b 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
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..714a4b14e0 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;
@@ -857,7 +856,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 +876,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 +884,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 +892,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 +953,7 @@ ditem_load (FILE *df,
while ((c = getc (df)) != EOF) {
if (c == '\r') /* Ignore Carriage Return */
continue;
-
+
switch (state) {
case OnSecHeader:
@@ -968,13 +967,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 +1022,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 +1064,7 @@ ditem_load (FILE *df,
break;
} /* switch */
-
+
} /* while ((c = getc_unlocked (f)) != EOF) */
if (c == EOF && state == KeyValue) {
*next = '\0';
@@ -1158,7 +1155,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 +1200,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/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/idle.c b/libpurple/idle.c
index f71ca9f9b1..55e338749e 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;
@@ -214,7 +214,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..085605f2a6 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
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/nat-pmp.c b/libpurple/nat-pmp.c
index a3717fbbec..be5bc66222 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;
@@ -205,7 +205,7 @@ default_gw()
}
/* 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..c9782b6731 100644
--- a/libpurple/network.c
+++ b/libpurple/network.c
@@ -96,6 +96,10 @@ struct _PurpleNetworkListenData {
static NMState nm_get_network_state(void);
#endif
+#if defined(HAVE_NETWORKMANAGER) || defined(_WIN32)
+static gboolean force_online;
+#endif
+
const unsigned char *
purple_network_ip_atoi(const char *ip)
{
@@ -671,6 +675,9 @@ gboolean
purple_network_is_available(void)
{
#ifdef HAVE_NETWORKMANAGER
+ if (force_online)
+ return TRUE;
+
if (!have_nm_state)
{
have_nm_state = TRUE;
@@ -685,12 +692,20 @@ 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)
diff --git a/libpurple/network.h b/libpurple/network.h
index 0ff97c98a9..21b3a0835d 100644
--- a/libpurple/network.h
+++ b/libpurple/network.h
@@ -208,6 +208,17 @@ 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
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..d82fe86215 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.
@@ -558,14 +559,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.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..b46b09eec4 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);
@@ -1538,7 +1538,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 +1554,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 +1577,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 +1603,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..6ce6ada8df 100644
--- a/libpurple/plugin.h
+++ b/libpurple/plugin.h
@@ -188,7 +188,7 @@ struct _PurplePluginAction {
/** NULL for plugin actions menu, set to the PurpleConnection for
account actions menu */
gpointer context;
-
+
gpointer user_data;
};
@@ -363,7 +363,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);
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/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/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/ssl/ssl-gnutls.c b/libpurple/plugins/ssl/ssl-gnutls.c
index 1f65607bd0..de4908eec1 100644
--- a/libpurple/plugins/ssl/ssl-gnutls.c
+++ b/libpurple/plugins/ssl/ssl-gnutls.c
@@ -256,9 +256,13 @@ ssl_gnutls_connect(PurpleSslConnection *gsc)
gsc->private_data = gnutls_data;
gnutls_init(&gnutls_data->session, GNUTLS_CLIENT);
+#ifdef HAVE_GNUTLS_PRIORITY_FUNCS
if (gnutls_priority_set_direct(gnutls_data->session,
"NORMAL:%SSL3_RECORD_VERSION", NULL))
gnutls_priority_set_direct(gnutls_data->session, "NORMAL", NULL);
+#else
+ gnutls_set_default_priority(gnutls_data->session);
+#endif
gnutls_certificate_type_set_priority(gnutls_data->session,
cert_type_priority);
diff --git a/libpurple/plugins/statenotify.c b/libpurple/plugins/statenotify.c
index 97c15bb896..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);
diff --git a/libpurple/plugins/tcl/tcl_cmds.c b/libpurple/plugins/tcl/tcl_cmds.c
index 222f05e08e..53af8595ef 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;
@@ -1495,9 +1495,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 +1512,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 +1558,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 +1732,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 +1741,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..162045c7be 100644
--- a/libpurple/prefs.c
+++ b/libpurple/prefs.c
@@ -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.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..f053940186 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
diff --git a/libpurple/protocols/bonjour/bonjour_ft.c b/libpurple/protocols/bonjour/bonjour_ft.c
index effc93163b..93b9f1fe01 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);
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..3ee7dd54dc 100644
--- a/libpurple/protocols/bonjour/jabber.c
+++ b/libpurple/protocols/bonjour/jabber.c
@@ -240,17 +240,21 @@ static void
_match_buddies_by_address(gpointer key, gpointer value, gpointer data)
{
PurpleBuddy *pb = value;
+ PurpleAccount *account = NULL;
+ BonjourBuddy *bb = NULL;
struct _match_buddies_by_address_t *mbba = data;
+ account = purple_buddy_get_account(pb);
+ bb = purple_buddy_get_protocol_data(pb);
+
/*
* If the current PurpleBuddy's data is not null and the PurpleBuddy's account
* is the same as the account requesting the check then continue to determine
* whether one of the buddies IPs matches the target IP.
*/
- if (mbba->jdata->account == pb->account && pb->proto_data != NULL)
+ if (mbba->jdata->account == account && bb != NULL)
{
const char *ip;
- BonjourBuddy *bb = pb->proto_data;
GSList *tmp = bb->ips;
while(tmp) {
@@ -268,7 +272,7 @@ 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 +289,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 +317,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 +336,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 +383,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 +422,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 +434,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 +479,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);
}
@@ -644,7 +658,7 @@ _server_socket_handler(gpointer data, int server_socket, PurpleInputCondition co
mbba = g_new0(struct _match_buddies_by_address_t, 1);
mbba->address = address_text;
mbba->jdata = jdata;
- g_hash_table_foreach(purple_get_blist()->buddies, _match_buddies_by_address, mbba);
+ g_hash_table_foreach(purple_blist_get_buddies(), _match_buddies_by_address, mbba);
if (mbba->matched_buddies == NULL) {
purple_debug_info("bonjour", "We don't like invisible buddies, this is not a superheros comic\n");
@@ -729,17 +743,20 @@ 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 +769,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 +797,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;
@@ -834,7 +854,7 @@ bonjour_jabber_conv_match_by_ip(BonjourJabberConversation *bconv) {
mbba = g_new0(struct _match_buddies_by_address_t, 1);
mbba->address = bconv->ip;
mbba->jdata = jdata;
- g_hash_table_foreach(purple_get_blist()->buddies, _match_buddies_by_address, mbba);
+ g_hash_table_foreach(purple_blist_get_buddies(), _match_buddies_by_address, mbba);
/* If there is exactly one match, use it */
if(mbba->matched_buddies != NULL) {
@@ -842,7 +862,7 @@ 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 +902,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)
{
@@ -934,7 +952,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 +960,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 +1009,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 +1038,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 +1097,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 +1160,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 +1185,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..69e65b5628 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;
diff --git a/libpurple/protocols/gg/buddylist.c b/libpurple/protocols/gg/buddylist.c
index 13cf4ba740..6e2752e6a5 100644
--- a/libpurple/protocols/gg/buddylist.c
+++ b/libpurple/protocols/gg/buddylist.c
@@ -41,37 +41,46 @@ 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) {
+ for (gnode = purple_blist_get_root();
+ gnode != NULL;
+ gnode = purple_blist_node_get_sibling_next(gnode))
+ {
if (!PURPLE_BLIST_NODE_IS_GROUP(gnode))
continue;
- for (cnode = gnode->child; cnode != NULL; cnode = cnode->next) {
+ for (cnode = purple_blist_node_get_first_child(gnode);
+ cnode != NULL;
+ cnode = purple_blist_node_get_sibling_next(cnode))
+ {
if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
continue;
- for (bnode = cnode->child; bnode != NULL; bnode = bnode->next) {
+ for (bnode = purple_blist_node_get_first_child(cnode);
+ bnode != NULL;
+ bnode = purple_blist_node_get_sibling_next(bnode))
+ {
+ const gchar *name = NULL;
+
if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
continue;
buddy = (PurpleBuddy *)bnode;
- if (buddy->account != account)
+ if (purple_buddy_get_account(buddy) != account)
continue;
+ name = purple_buddy_get_name(buddy);
+
size++;
userlist = (uin_t *) g_renew(uin_t, userlist, size);
types = (gchar *) g_renew(gchar, types, size);
- userlist[size - 1] = ggp_str_to_uin(buddy->name);
+ userlist[size - 1] = ggp_str_to_uin(name);
types[size - 1] = GG_USER_NORMAL;
purple_debug_info("gg", "ggp_buddylist_send: adding %d\n",
userlist[size - 1]);
@@ -173,36 +182,45 @@ void ggp_buddylist_load(PurpleConnection *gc, char *buddylist)
void ggp_buddylist_offline(PurpleConnection *gc)
{
PurpleAccount *account = purple_connection_get_account(gc);
- PurpleBuddyList *blist;
PurpleBlistNode *gnode, *cnode, *bnode;
PurpleBuddy *buddy;
- if ((blist = purple_get_blist()) == NULL)
- return;
-
- for (gnode = blist->root; gnode != NULL; gnode = gnode->next) {
+ for (gnode = purple_blist_get_root();
+ gnode != NULL;
+ gnode = purple_blist_node_get_sibling_next(gnode))
+ {
if (!PURPLE_BLIST_NODE_IS_GROUP(gnode))
continue;
- for (cnode = gnode->child; cnode != NULL; cnode = cnode->next) {
+ for (cnode = purple_blist_node_get_first_child(gnode);
+ cnode != NULL;
+ cnode = purple_blist_node_get_sibling_next(cnode))
+ {
if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
continue;
- for (bnode = cnode->child; bnode != NULL; bnode = bnode->next) {
+ for (bnode = purple_blist_node_get_first_child(cnode);
+ bnode != NULL;
+ bnode = purple_blist_node_get_sibling_next(bnode))
+ {
+ const gchar *name = NULL;
+
if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
continue;
buddy = (PurpleBuddy *)bnode;
+
+ name = purple_buddy_get_name(buddy);
- if (buddy->account != account)
+ if (purple_buddy_get_account(buddy) != account)
continue;
purple_prpl_got_user_status(
- account, buddy->name, "offline", NULL);
+ account, name, "offline", NULL);
purple_debug_info("gg",
"ggp_buddylist_offline: gone: %s\n",
- buddy->name);
+ name);
}
}
}
@@ -212,41 +230,46 @@ void ggp_buddylist_offline(PurpleConnection *gc)
/* char *ggp_buddylist_dump(PurpleAccount *account) {{{ */
char *ggp_buddylist_dump(PurpleAccount *account)
{
- PurpleBuddyList *blist;
PurpleBlistNode *gnode, *cnode, *bnode;
PurpleGroup *group;
PurpleBuddy *buddy;
- GString *buddylist;
+ GString *buddylist = g_string_sized_new(1024);
char *ptr;
- if ((blist = purple_get_blist()) == NULL)
- return NULL;
-
- buddylist = g_string_sized_new(1024);
-
- for (gnode = blist->root; gnode != NULL; gnode = gnode->next) {
+ for (gnode = purple_blist_get_root();
+ gnode != NULL;
+ gnode = purple_blist_node_get_sibling_next(gnode))
+ {
if (!PURPLE_BLIST_NODE_IS_GROUP(gnode))
continue;
group = (PurpleGroup *)gnode;
- for (cnode = gnode->child; cnode != NULL; cnode = cnode->next) {
+ for (cnode = purple_blist_node_get_first_child(gnode);
+ cnode != NULL;
+ cnode = purple_blist_node_get_sibling_next(cnode))
+ {
if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
continue;
- for (bnode = cnode->child; bnode != NULL; bnode = bnode->next) {
- gchar *name, *alias, *gname;
+ for (bnode = purple_blist_node_get_first_child(cnode);
+ bnode != NULL;
+ bnode = purple_blist_node_get_sibling_next(bnode))
+ {
+ const gchar *name, *alias, *gname;
if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
continue;
buddy = (PurpleBuddy *)bnode;
- if (buddy->account != account)
+ if (purple_buddy_get_account(buddy) != account)
continue;
- name = buddy->name;
- alias = buddy->alias ? buddy->alias : buddy->name;
- gname = group->name;
+ name = purple_buddy_get_name(buddy);
+ alias = purple_buddy_get_alias(buddy);
+ if(alias == NULL)
+ alias = name;
+ gname = purple_group_get_name(group);
g_string_append_printf(buddylist,
"%s;%s;%s;%s;%s;%s;%s;%s%s\r\n",
diff --git a/libpurple/protocols/gg/gg.c b/libpurple/protocols/gg/gg.c
index cfe007629b..28ad424a0c 100644
--- a/libpurple/protocols/gg/gg.c
+++ b/libpurple/protocols/gg/gg.c
@@ -2052,11 +2052,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 +2067,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)
diff --git a/libpurple/protocols/irc/irc.c b/libpurple/protocols/irc/irc.c
index e0013a3d3f..9721536931 100644
--- a/libpurple/protocols/irc/irc.c
+++ b/libpurple/protocols/irc/irc.c
@@ -564,7 +564,7 @@ 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);
+ ib->name = g_strdup(purple_buddy_get_name(buddy));
g_hash_table_insert(irc->buddies, ib->name, ib);
/* if the timer isn't set, this is during signon, so we don't want to flood
@@ -577,7 +577,7 @@ static void irc_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)
diff --git a/libpurple/protocols/irc/msgs.c b/libpurple/protocols/irc/msgs.c
index 23fb42362f..81e107d0b1 100644
--- a/libpurple/protocols/irc/msgs.c
+++ b/libpurple/protocols/irc/msgs.c
@@ -79,6 +79,7 @@ static void irc_connected(struct irc_conn *irc, const char *nick)
PurpleConnection *gc;
PurpleStatus *status;
PurpleBlistNode *gnode, *cnode, *bnode;
+ PurpleAccount *account;
if ((gc = purple_account_get_connection(irc->account)) == NULL
|| PURPLE_CONNECTION_IS_CONNECTED(gc))
@@ -86,6 +87,7 @@ 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,20 +97,29 @@ 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) {
+ for (gnode = purple_blist_get_root();
+ gnode;
+ gnode = purple_blist_node_get_sibling_next(gnode))
+ {
if(!PURPLE_BLIST_NODE_IS_GROUP(gnode))
continue;
- for(cnode = gnode->child; cnode; cnode = cnode->next) {
+ for(cnode = purple_blist_node_get_first_child(gnode);
+ cnode;
+ cnode = purple_blist_node_get_sibling_next(cnode))
+ {
if(!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
continue;
- for(bnode = cnode->child; bnode; bnode = bnode->next) {
+ for(bnode = purple_blist_node_get_first_child(cnode);
+ bnode;
+ bnode = purple_blist_node_get_sibling_next(bnode))
+ {
PurpleBuddy *b;
if(!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
continue;
b = (PurpleBuddy *)bnode;
- if(b->account == gc->account) {
+ if(purple_buddy_get_account(b) == account) {
struct irc_buddy *ib = g_new0(struct irc_buddy, 1);
- ib->name = g_strdup(b->name);
+ ib->name = g_strdup(purple_buddy_get_name(b));
g_hash_table_insert(irc->buddies, ib->name, ib);
}
}
diff --git a/libpurple/protocols/jabber/Makefile.am b/libpurple/protocols/jabber/Makefile.am
index 5f46e374a9..e9b776b671 100644
--- a/libpurple/protocols/jabber/Makefile.am
+++ b/libpurple/protocols/jabber/Makefile.am
@@ -17,6 +17,8 @@ JABBERSOURCES = auth.c \
disco.h \
google.c \
google.h \
+ ibb.c \
+ ibb.h \
iq.c \
iq.h \
jabber.c \
diff --git a/libpurple/protocols/jabber/Makefile.mingw b/libpurple/protocols/jabber/Makefile.mingw
index 4c49619ed4..524f776dd3 100644
--- a/libpurple/protocols/jabber/Makefile.mingw
+++ b/libpurple/protocols/jabber/Makefile.mingw
@@ -51,6 +51,7 @@ C_SRC = \
data.c \
disco.c \
google.c \
+ ibb.c \
iq.c \
jabber.c \
jutil.c \
diff --git a/libpurple/protocols/jabber/adhoccommands.c b/libpurple/protocols/jabber/adhoccommands.c
index eccc8ffd66..0781822eeb 100644
--- a/libpurple/protocols/jabber/adhoccommands.c
+++ b/libpurple/protocols/jabber/adhoccommands.c
@@ -47,26 +47,26 @@ void jabber_adhoc_disco_result_cb(JabberStream *js, xmlnode *packet, gpointer da
JabberID *jabberid;
JabberBuddy *jb;
JabberBuddyResource *jbr = NULL;
-
+
if(strcmp(type, "result"))
return;
-
+
query = xmlnode_get_child_with_namespace(packet,"query","http://jabber.org/protocol/disco#items");
if(!query)
return;
node = xmlnode_get_attrib(query,"node");
if(!node || strcmp(node, "http://jabber.org/protocol/commands"))
return;
-
+
if((jabberid = jabber_id_new(from))) {
if(jabberid->resource && (jb = jabber_buddy_find(js, from, TRUE)))
jbr = jabber_buddy_find_resource(jb, jabberid->resource);
jabber_id_free(jabberid);
}
-
+
if(!jbr)
return;
-
+
if(jbr->commands) {
/* since the list we just received is complete, wipe the old one */
while(jbr->commands) {
@@ -78,7 +78,7 @@ 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,11 +86,11 @@ 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);
}
}
@@ -103,13 +103,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 +118,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,7 +127,7 @@ 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);
}
@@ -136,12 +136,12 @@ static void jabber_adhoc_parse(JabberStream *js, xmlnode *packet, gpointer data)
const char *status = xmlnode_get_attrib(command,"status");
xmlnode *xdata = xmlnode_get_child_with_namespace(command,"x","jabber:x:data");
const char *type = xmlnode_get_attrib(packet,"type");
-
+
if(type && !strcmp(type,"error")) {
char *msg = jabber_parse_error(js, packet, NULL);
if(!msg)
msg = g_strdup(_("Unknown Error"));
-
+
purple_notify_error(NULL, _("Ad-Hoc Command Failed"),
_("Ad-Hoc Command Failed"), msg);
g_free(msg);
@@ -149,20 +149,20 @@ static void jabber_adhoc_parse(JabberStream *js, xmlnode *packet, gpointer data)
}
if(!type || strcmp(type,"result"))
return;
-
+
if(!status)
return;
-
+
if(!strcmp(status,"completed")) {
/* display result */
xmlnode *note = xmlnode_get_child(command,"note");
-
+
if(note) {
char *data = xmlnode_get_data(note);
purple_notify_info(NULL, xmlnode_get_attrib(packet, "from"), data, NULL);
g_free(data);
}
-
+
if(xdata)
jabber_x_data_request(js, xdata, (jabber_x_data_cb)do_adhoc_ignoreme, NULL);
return;
@@ -175,7 +175,7 @@ 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 +196,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->node = g_strdup(xmlnode_get_attrib(command,"node"));
actionInfo->actionslist = actionslist;
-
+
jabber_x_data_request_with_actions(js,xdata,actionslist,actionindex,do_adhoc_action_cb,actionInfo);
}
}
@@ -211,8 +211,9 @@ 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);
}
}
@@ -220,7 +221,7 @@ void jabber_adhoc_execute_action(PurpleBlistNode *node, gpointer data) {
static void jabber_adhoc_server_got_list_cb(JabberStream *js, xmlnode *packet, gpointer data) {
xmlnode *query = xmlnode_get_child_with_namespace(packet, "query", "http://jabber.org/protocol/disco#items");
xmlnode *item;
-
+
if(!query)
return;
@@ -233,7 +234,7 @@ 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,7 +246,7 @@ 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);
}
}
@@ -253,10 +254,10 @@ static void jabber_adhoc_server_got_list_cb(JabberStream *js, xmlnode *packet, g
void jabber_adhoc_server_get_list(JabberStream *js) {
JabberIq *iq = jabber_iq_new_query(js,JABBER_IQ_GET,"http://jabber.org/protocol/disco#items");
xmlnode *query = xmlnode_get_child_with_namespace(iq->node,"query","http://jabber.org/protocol/disco#items");
-
+
xmlnode_set_attrib(iq->node,"to",js->user->domain);
xmlnode_set_attrib(query,"node","http://jabber.org/protocol/commands");
-
+
jabber_iq_set_callback(iq,jabber_adhoc_server_got_list_cb,NULL);
jabber_iq_send(iq);
}
@@ -268,9 +269,9 @@ 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 +280,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 +288,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 +307,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/auth.c b/libpurple/protocols/jabber/auth.c
index e93ea161e6..ae8320f871 100644
--- a/libpurple/protocols/jabber/auth.c
+++ b/libpurple/protocols/jabber/auth.c
@@ -384,7 +384,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 +397,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");
@@ -1057,13 +1057,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/buddy.c b/libpurple/protocols/jabber/buddy.c
index f323bb2c43..4810fae3b6 100644
--- a/libpurple/protocols/jabber/buddy.c
+++ b/libpurple/protocols/jabber/buddy.c
@@ -175,7 +175,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);
@@ -184,7 +184,7 @@ 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);
g_free(jbr->name);
@@ -427,7 +427,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;
@@ -500,8 +500,8 @@ void jabber_set_buddy_icon(PurpleConnection *gc, PurpleStoredImage *img)
{
PurplePresence *gpresence;
PurpleStatus *status;
-
- if(((JabberStream*)gc->proto_data)->pep) {
+
+ if(((JabberStream*)purple_connection_get_protocol_data(gc))->pep) {
/* XEP-0084: User Avatars */
if(img) {
/*
@@ -544,37 +544,37 @@ void jabber_set_buddy_icon(PurpleConnection *gc, PurpleStoredImage *img)
guint32 height = ntohl(png->ihdr.height);
xmlnode *publish, *item, *data, *metadata, *info;
char *lengthstring, *widthstring, *heightstring;
-
+
/* compute the sha1 hash */
char *hash = jabber_calculate_data_sha1sum(purple_imgstore_get_data(img), purple_imgstore_get_size(img));
char *base64avatar;
-
+
publish = xmlnode_new("publish");
xmlnode_set_attrib(publish,"node",AVATARNAMESPACEDATA);
-
+
item = xmlnode_new_child(publish, "item");
xmlnode_set_attrib(item, "id", hash);
-
+
data = xmlnode_new_child(item, "data");
xmlnode_set_namespace(data,AVATARNAMESPACEDATA);
-
+
base64avatar = purple_base64_encode(purple_imgstore_get_data(img), purple_imgstore_get_size(img));
xmlnode_insert_data(data,base64avatar,-1);
g_free(base64avatar);
-
+
/* publish the avatar itself */
- jabber_pep_publish((JabberStream*)gc->proto_data, publish);
-
+ jabber_pep_publish((JabberStream*)purple_connection_get_protocol_data(gc), publish);
+
/* next step: publish the metadata */
publish = xmlnode_new("publish");
xmlnode_set_attrib(publish,"node",AVATARNAMESPACEMETA);
-
+
item = xmlnode_new_child(publish, "item");
xmlnode_set_attrib(item, "id", hash);
-
+
metadata = xmlnode_new_child(item, "metadata");
xmlnode_set_namespace(metadata,AVATARNAMESPACEMETA);
-
+
info = xmlnode_new_child(metadata, "info");
xmlnode_set_attrib(info, "id", hash);
xmlnode_set_attrib(info, "type", "image/png");
@@ -587,10 +587,10 @@ void jabber_set_buddy_icon(PurpleConnection *gc, PurpleStoredImage *img)
heightstring = g_strdup_printf("%u", height);
xmlnode_set_attrib(info, "height", heightstring);
g_free(heightstring);
-
+
/* publish the metadata */
- jabber_pep_publish((JabberStream*)gc->proto_data, publish);
-
+ jabber_pep_publish((JabberStream*)purple_connection_get_protocol_data(gc), publish);
+
g_free(hash);
} else {
purple_debug_error("jabber", "jabber_set_buddy_icon received non-png data");
@@ -801,18 +801,18 @@ 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(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);
@@ -830,7 +830,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'!"
@@ -841,7 +841,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"))
@@ -950,7 +950,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
@@ -970,7 +970,7 @@ 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);
}
@@ -989,14 +989,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);
@@ -1011,7 +1011,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"))
@@ -1114,13 +1114,13 @@ 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
@@ -1188,7 +1188,7 @@ static void jabber_vcard_save_mine(JabberStream *js, xmlnode *packet, gpointer d
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);
@@ -1262,13 +1262,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")) {
@@ -1313,7 +1313,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);
@@ -1355,8 +1355,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);
}
@@ -1423,7 +1423,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);
}
@@ -1445,7 +1445,7 @@ static void do_buddy_avatar_update_fromurl(PurpleUtilFetchUrlData *url_data, gpo
"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);
@@ -1460,29 +1460,29 @@ static void do_buddy_avatar_update_data(JabberStream *js, const char *from, xmln
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);
}
@@ -1493,7 +1493,7 @@ void jabber_buddy_avatar_update_metadata(JabberStream *js, const char *from, xml
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);
@@ -1513,7 +1513,7 @@ void jabber_buddy_avatar_update_metadata(JabberStream *js, const char *from, xml
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;
@@ -1529,7 +1529,7 @@ void jabber_buddy_avatar_update_metadata(JabberStream *js, const char *from, xml
} 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);
@@ -1822,7 +1822,7 @@ static void jabber_buddy_get_info_for_jid(JabberStream *js, const char *jid)
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)
@@ -1882,10 +1882,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)
@@ -1897,10 +1897,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,
@@ -1913,11 +1913,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)
@@ -1929,10 +1929,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");
}
@@ -1945,18 +1945,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);
@@ -1964,14 +1964,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);
}
@@ -1981,13 +1981,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);
}
@@ -1995,9 +1996,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;
@@ -2043,7 +2045,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
*
@@ -2052,7 +2054,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);
@@ -2062,7 +2064,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;
@@ -2520,7 +2522,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"),
diff --git a/libpurple/protocols/jabber/caps.c b/libpurple/protocols/jabber/caps.c
index ad33a47884..99213b3ea6 100644
--- a/libpurple/protocols/jabber/caps.c
+++ b/libpurple/protocols/jabber/caps.c
@@ -51,7 +51,7 @@ 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;
}
@@ -77,7 +77,7 @@ static void jabber_caps_destroy_value(gpointer value) {
g_free(id->type);
g_free(id->name);
g_free(id);
-
+
valuestruct->identities = g_list_delete_link(valuestruct->identities,valuestruct->identities);
}
while(valuestruct->features) {
@@ -96,7 +96,7 @@ static void jabber_caps_ext_destroy_value(gpointer value) {
g_free(id->type);
g_free(id->name);
g_free(id);
-
+
valuestruct->identities = g_list_delete_link(valuestruct->identities,valuestruct->identities);
}
while(valuestruct->features) {
@@ -124,7 +124,7 @@ 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;
@@ -147,20 +147,20 @@ 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);
id->category = g_strdup(category);
id->type = g_strdup(type);
id->name = g_strdup(name);
-
+
value->identities = g_list_append(value->identities,id);
} else if(!strcmp(child->name,"ext")) {
const char *identifier = xmlnode_get_attrib(child, "identifier");
if(identifier) {
xmlnode *extchild;
-
+
JabberCapsValueExt *extvalue = g_new0(JabberCapsValueExt, 1);
-
+
for(extchild = child->child; extchild; extchild = extchild->next) {
if(extchild->type != XMLNODE_TYPE_TAG)
continue;
@@ -173,12 +173,12 @@ static void jabber_caps_load(void) {
const char *category = xmlnode_get_attrib(extchild, "category");
const char *type = xmlnode_get_attrib(extchild, "type");
const char *name = xmlnode_get_attrib(extchild, "name");
-
+
JabberCapsIdentity *id = g_new0(JabberCapsIdentity, 1);
id->category = g_strdup(category);
id->type = g_strdup(type);
id->name = g_strdup(name);
-
+
extvalue->identities = g_list_append(extvalue->identities,id);
}
}
@@ -226,7 +226,7 @@ static void jabber_caps_store_client(gpointer key, gpointer value, gpointer user
xmlnode_set_attrib(client,"node",clientinfo->node);
xmlnode_set_attrib(client,"ver",clientinfo->ver);
-
+
for(iter = props->identities; iter; iter = g_list_next(iter)) {
JabberCapsIdentity *id = iter->data;
xmlnode *identity = xmlnode_new_child(client, "identity");
@@ -241,7 +241,7 @@ static void jabber_caps_store_client(gpointer key, gpointer value, gpointer user
xmlnode *feature = xmlnode_new_child(client, "feature");
xmlnode_set_attrib(feature, "var", feat);
}
-
+
g_hash_table_foreach(props->ext,jabber_caps_store_ext,client);
}
@@ -281,20 +281,20 @@ static JabberCapsClientInfo *jabber_caps_collect_info(const char *node, const ch
newid->category = g_strdup(id->category);
newid->type = g_strdup(id->type);
newid->name = g_strdup(id->name);
-
+
result->identities = g_list_append(result->identities,newid);
}
for(iter = caps->features; iter; iter = g_list_next(iter)) {
const char *feat = iter->data;
char *newfeat = g_strdup(feat);
-
+
result->features = g_list_append(result->features,newfeat);
}
-
+
for(iter = ext; iter; iter = g_list_next(iter)) {
const char *extname = iter->data;
JabberCapsValueExt *extinfo = g_hash_table_lookup(caps->ext,extname);
-
+
if(extinfo) {
GList *iter2;
for(iter2 = extinfo->identities; iter2; iter2 = g_list_next(iter2)) {
@@ -303,13 +303,13 @@ static JabberCapsClientInfo *jabber_caps_collect_info(const char *node, const ch
newid->category = g_strdup(id->category);
newid->type = g_strdup(id->type);
newid->name = g_strdup(id->name);
-
+
result->identities = g_list_append(result->identities,newid);
}
for(iter2 = extinfo->features; iter2; iter2 = g_list_next(iter2)) {
const char *feat = iter2->data;
char *newfeat = g_strdup(feat);
-
+
result->features = g_list_append(result->features,newfeat);
}
}
@@ -326,23 +326,23 @@ void jabber_caps_free_clientinfo(JabberCapsClientInfo *clientinfo) {
g_free(id->type);
g_free(id->name);
g_free(id);
-
+
clientinfo->identities = g_list_delete_link(clientinfo->identities,clientinfo->identities);
}
while(clientinfo->features) {
char *feat = clientinfo->features->data;
g_free(feat);
-
+
clientinfo->features = g_list_delete_link(clientinfo->features,clientinfo->features);
}
-
+
g_free(clientinfo);
}
typedef struct _jabber_caps_cbplususerdata {
jabber_caps_get_info_cb cb;
gpointer user_data;
-
+
char *who;
char *node;
char *ver;
diff --git a/libpurple/protocols/jabber/chat.c b/libpurple/protocols/jabber/chat.c
index 46c9f96ed3..4c2a644b02 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);
}
@@ -685,7 +685,7 @@ 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);
}
@@ -811,7 +811,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;
@@ -1033,7 +1033,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");
diff --git a/libpurple/protocols/jabber/data.c b/libpurple/protocols/jabber/data.c
index 2064f0a1b8..ba1d91ba33 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,7 +195,7 @@ 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);
}
diff --git a/libpurple/protocols/jabber/data.h b/libpurple/protocols/jabber/data.h
index 40698de730..5134de2777 100644
--- a/libpurple/protocols/jabber/data.h
+++ b/libpurple/protocols/jabber/data.h
@@ -3,17 +3,17 @@
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Library General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor Boston, MA 02110-1301, USA
*/
-
+
#ifndef JABBER_DATA_H
#define JABBER_DATA_H
diff --git a/libpurple/protocols/jabber/disco.c b/libpurple/protocols/jabber/disco.c
index 71f87cffa6..85e8524d67 100644
--- a/libpurple/protocols/jabber/disco.c
+++ b/libpurple/protocols/jabber/disco.c
@@ -132,9 +132,7 @@ void jabber_disco_info_parse(JabberStream *js, xmlnode *packet) {
SUPPORT_FEATURE("http://jabber.org/protocol/bytestreams")
SUPPORT_FEATURE("http://jabber.org/protocol/disco#info")
SUPPORT_FEATURE("http://jabber.org/protocol/disco#items")
-#if 0
- SUPPORT_FEATURE("http://jabber.org/protocol/ibb")
-#endif
+ SUPPORT_FEATURE("http://jabber.org/protocol/ibb");
SUPPORT_FEATURE("http://jabber.org/protocol/muc")
SUPPORT_FEATURE("http://jabber.org/protocol/muc#user")
SUPPORT_FEATURE("http://jabber.org/protocol/si")
@@ -142,7 +140,7 @@ void jabber_disco_info_parse(JabberStream *js, xmlnode *packet) {
SUPPORT_FEATURE("http://jabber.org/protocol/xhtml-im")
SUPPORT_FEATURE("urn:xmpp:ping")
SUPPORT_FEATURE("http://www.xmpp.org/extensions/xep-0199.html#ns")
-
+
if(!node) { /* non-caps disco#info, add all enabled extensions */
GList *features;
for(features = jabber_features; features; features = features->next) {
@@ -168,7 +166,7 @@ void jabber_disco_info_parse(JabberStream *js, xmlnode *packet) {
} else if(node[pos] != CAPS0115_NODE[pos])
break;
}
-
+
if(ext != NULL) {
/* look for that ext */
GList *features;
@@ -183,14 +181,14 @@ void jabber_disco_info_parse(JabberStream *js, xmlnode *packet) {
ext = NULL;
}
}
-
+
if(ext == NULL) {
xmlnode *error, *inf;
-
+
/* XXX: gross hack, implement jabber_iq_set_type or something */
xmlnode_set_attrib(iq->node, "type", "error");
iq->type = JABBER_IQ_ERROR;
-
+
error = xmlnode_new_child(query, "error");
xmlnode_set_attrib(error, "code", "404");
xmlnode_set_attrib(error, "type", "cancel");
@@ -273,6 +271,10 @@ void jabber_disco_info_parse(JabberStream *js, xmlnode *packet) {
else if(!strcmp(var, "http://jabber.org/protocol/commands")) {
capabilities |= JABBER_CAP_ADHOC;
}
+ else if(!strcmp(var, "http://jabber.org/protocol/ibb")) {
+ purple_debug_info("jabber", "remote supports IBB\n");
+ capabilities |= JABBER_CAP_IBB;
+ }
}
}
@@ -316,7 +318,7 @@ void jabber_disco_items_parse(JabberStream *js, xmlnode *packet) {
if(type && !strcmp(type, "get")) {
JabberIq *iq = jabber_iq_new_query(js, JABBER_IQ_RESULT,
"http://jabber.org/protocol/disco#items");
-
+
/* preserve node */
xmlnode *iq_query = xmlnode_get_child_with_namespace(iq->node,"query","http://jabber.org/protocol/disco#items");
if(iq_query) {
diff --git a/libpurple/protocols/jabber/google.c b/libpurple/protocols/jabber/google.c
index b509096e5f..70c184fa8b 100644
--- a/libpurple/protocols/jabber/google.c
+++ b/libpurple/protocols/jabber/google.c
@@ -283,6 +283,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);
@@ -309,13 +310,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");
@@ -348,6 +350,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);
@@ -357,7 +360,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;
@@ -375,13 +378,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");
diff --git a/libpurple/protocols/jabber/ibb.c b/libpurple/protocols/jabber/ibb.c
new file mode 100644
index 0000000000..2efebeda8c
--- /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, xmlnode *packet,
+ gpointer user_data)
+{
+ JabberIBBSession *sess = NULL;
+ xmlnode *open = xmlnode_get_child_with_namespace(packet, "open",
+ XEP_0047_NAMESPACE);
+ const gchar *sid = xmlnode_get_attrib(open, "sid");
+ const gchar *block_size = xmlnode_get_attrib(open, "block-size");
+
+ if (!open) {
+ return NULL;
+ }
+
+ if (!sid || !block_size) {
+ purple_debug_error("jabber",
+ "IBB session open tag requires sid and block-size attributes\n");
+ g_free(sess);
+ return NULL;
+ }
+
+ sess = jabber_ibb_session_create(js, sid,
+ xmlnode_get_attrib(packet, "from"), user_data);
+ sess->id = g_strdup(xmlnode_get_attrib(packet, "id"));
+ sess->block_size = atoi(block_size);
+ /* if we create a session from an incoming <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, xmlnode *packet, gpointer data)
+{
+ JabberIBBSession *sess = (JabberIBBSession *) data;
+
+ if (strcmp(xmlnode_get_attrib(packet, "type"), "error") == 0) {
+ sess->state = JABBER_IBB_SESSION_ERROR;
+ } else {
+ sess->state = JABBER_IBB_SESSION_OPENED;
+ }
+
+ if (sess->opened_cb) {
+ sess->opened_cb(sess);
+ }
+}
+
+void
+jabber_ibb_session_open(JabberIBBSession *sess)
+{
+ if (jabber_ibb_session_get_state(sess) != JABBER_IBB_SESSION_NOT_OPENED) {
+ purple_debug_error("jabber",
+ "jabber_ibb_session called on an already open stream\n");
+ } else {
+ JabberIq *set = jabber_iq_new(sess->js, JABBER_IQ_SET);
+ xmlnode *open = xmlnode_new("open");
+ gchar block_size[10];
+
+ xmlnode_set_attrib(set->node, "to", jabber_ibb_session_get_who(sess));
+ xmlnode_set_namespace(open, XEP_0047_NAMESPACE);
+ xmlnode_set_attrib(open, "sid", jabber_ibb_session_get_sid(sess));
+ g_snprintf(block_size, sizeof(block_size), "%" G_GSIZE_FORMAT,
+ jabber_ibb_session_get_block_size(sess));
+ xmlnode_set_attrib(open, "block-size", block_size);
+ xmlnode_insert_child(set->node, open);
+
+ jabber_iq_set_callback(set, jabber_ibb_session_opened_cb, sess);
+
+ jabber_iq_send(set);
+ }
+}
+
+void
+jabber_ibb_session_close(JabberIBBSession *sess)
+{
+ JabberIBBSessionState state = jabber_ibb_session_get_state(sess);
+
+ if (state != JABBER_IBB_SESSION_OPENED && state != JABBER_IBB_SESSION_ERROR) {
+ purple_debug_error("jabber",
+ "jabber_ibb_session_close called on a session that has not been"
+ "opened\n");
+ } else {
+ JabberIq *set = jabber_iq_new(jabber_ibb_session_get_js(sess),
+ JABBER_IQ_SET);
+ xmlnode *close = xmlnode_new("close");
+
+ xmlnode_set_attrib(set->node, "to", jabber_ibb_session_get_who(sess));
+ xmlnode_set_namespace(close, XEP_0047_NAMESPACE);
+ xmlnode_set_attrib(close, "sid", jabber_ibb_session_get_sid(sess));
+ xmlnode_insert_child(set->node, close);
+ jabber_iq_send(set);
+ sess->state = JABBER_IBB_SESSION_CLOSED;
+ }
+}
+
+void
+jabber_ibb_session_accept(JabberIBBSession *sess)
+{
+ JabberIq *result = jabber_iq_new(jabber_ibb_session_get_js(sess),
+ JABBER_IQ_RESULT);
+
+ xmlnode_set_attrib(result->node, "to", jabber_ibb_session_get_who(sess));
+ jabber_iq_set_id(result, sess->id);
+ jabber_iq_send(result);
+ sess->state = JABBER_IBB_SESSION_OPENED;
+}
+
+static void
+jabber_ibb_session_send_acknowledge_cb(JabberStream *js, xmlnode *packet, gpointer data)
+{
+ JabberIBBSession *sess = (JabberIBBSession *) data;
+ xmlnode *error = xmlnode_get_child(packet, "error");
+
+ if (sess) {
+ /* reset callback */
+ if (sess->last_iq_id) {
+ g_free(sess->last_iq_id);
+ sess->last_iq_id = NULL;
+ }
+
+ if (error) {
+ jabber_ibb_session_close(sess);
+ sess->state = JABBER_IBB_SESSION_ERROR;
+
+ if (sess->error_cb) {
+ sess->error_cb(sess);
+ }
+ } else {
+ if (sess->data_sent_cb) {
+ sess->data_sent_cb(sess);
+ }
+ }
+ } else {
+ /* the session has gone away, it was probably cancelled */
+ purple_debug_info("jabber",
+ "got response from send data, but IBB session is no longer active\n");
+ }
+}
+
+void
+jabber_ibb_session_send_data(JabberIBBSession *sess, gconstpointer data,
+ gsize size)
+{
+ JabberIBBSessionState state = jabber_ibb_session_get_state(sess);
+
+ purple_debug_info("jabber", "sending data block of %" G_GSIZE_FORMAT " bytes on IBB stream\n",
+ size);
+
+ if (state != JABBER_IBB_SESSION_OPENED) {
+ purple_debug_error("jabber",
+ "trying to send data on a non-open IBB session\n");
+ } else if (size > jabber_ibb_session_get_block_size(sess)) {
+ purple_debug_error("jabber",
+ "trying to send a too large packet in the IBB session\n");
+ } else {
+ JabberIq *set = jabber_iq_new(jabber_ibb_session_get_js(sess),
+ JABBER_IQ_SET);
+ xmlnode *data_element = xmlnode_new("data");
+ char *base64 = purple_base64_encode(data, size);
+ char seq[10];
+ g_snprintf(seq, sizeof(seq), "%u", jabber_ibb_session_get_send_seq(sess));
+
+ xmlnode_set_attrib(set->node, "to", jabber_ibb_session_get_who(sess));
+ xmlnode_set_namespace(data_element, XEP_0047_NAMESPACE);
+ xmlnode_set_attrib(data_element, "sid", jabber_ibb_session_get_sid(sess));
+ xmlnode_set_attrib(data_element, "seq", seq);
+ xmlnode_insert_data(data_element, base64, -1);
+
+ xmlnode_insert_child(set->node, data_element);
+
+ purple_debug_info("jabber",
+ "IBB: setting send <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, xmlnode *packet)
+{
+ JabberIq *result = jabber_iq_new(js, JABBER_IQ_ERROR);
+ xmlnode *error = xmlnode_new("error");
+ xmlnode *item_not_found = xmlnode_new("item-not-found");
+
+ xmlnode_set_namespace(item_not_found,
+ "urn:ietf:params:xml:ns:xmpp-stanzas");
+ xmlnode_set_attrib(error, "code", "440");
+ xmlnode_set_attrib(error, "type", "cancel");
+ jabber_iq_set_id(result, xmlnode_get_attrib(packet, "id"));
+ xmlnode_set_attrib(result->node, "to",
+ xmlnode_get_attrib(packet, "from"));
+ xmlnode_insert_child(error, item_not_found);
+ xmlnode_insert_child(result->node, error);
+
+ jabber_iq_send(result);
+}
+
+void
+jabber_ibb_parse(JabberStream *js, xmlnode *packet)
+{
+ xmlnode *data = xmlnode_get_child_with_namespace(packet, "data",
+ XEP_0047_NAMESPACE);
+ xmlnode *close = xmlnode_get_child_with_namespace(packet, "close",
+ XEP_0047_NAMESPACE);
+ xmlnode *open = xmlnode_get_child_with_namespace(packet, "open",
+ XEP_0047_NAMESPACE);
+ const gchar *sid =
+ data ? xmlnode_get_attrib(data, "sid") :
+ close ? xmlnode_get_attrib(close, "sid") : NULL;
+ JabberIBBSession *sess =
+ sid ? g_hash_table_lookup(jabber_ibb_sessions, sid) : NULL;
+ const gchar *who = xmlnode_get_attrib(packet, "from");
+
+ if (sess) {
+
+ if (strcmp(who, jabber_ibb_session_get_who(sess)) != 0) {
+ /* the iq comes from a different JID than the remote JID of the
+ session, ignore it */
+ purple_debug_error("jabber",
+ "Got IBB iq from wrong JID, ignoring\n");
+ } else if (data) {
+ const gchar *seq_attr = xmlnode_get_attrib(data, "seq");
+ guint16 seq = (seq_attr ? atoi(seq_attr) : 0);
+
+ /* reject the data, and set the session in error if we get an
+ out-of-order packet */
+ if (seq_attr && seq == jabber_ibb_session_get_recv_seq(sess)) {
+ /* sequence # is the expected... */
+ JabberIq *result = jabber_iq_new(js, JABBER_IQ_RESULT);
+
+ jabber_iq_set_id(result, xmlnode_get_attrib(packet, "id"));
+ xmlnode_set_attrib(result->node, "to",
+ xmlnode_get_attrib(packet, "from"));
+
+ if (sess->data_received_cb) {
+ gchar *base64 = xmlnode_get_data(data);
+ gsize size;
+ gpointer rawdata = purple_base64_decode(base64, &size);
+
+ g_free(base64);
+
+ if (rawdata) {
+ purple_debug_info("jabber",
+ "got %" G_GSIZE_FORMAT " bytes of data on IBB stream\n",
+ size);
+ if (size > jabber_ibb_session_get_block_size(sess)) {
+ purple_debug_error("jabber",
+ "IBB: received a too large packet\n");
+ if (sess->error_cb)
+ sess->error_cb(sess);
+ g_free(rawdata);
+ return;
+ } else {
+ purple_debug_info("jabber",
+ "calling IBB callback for received data\n");
+ sess->data_received_cb(sess, rawdata, size);
+ }
+ g_free(rawdata);
+ } else {
+ purple_debug_error("jabber",
+ "IBB: invalid BASE64 data received\n");
+ if (sess->error_cb)
+ sess->error_cb(sess);
+ return;
+
+ }
+ }
+
+ (sess->recv_seq)++;
+ jabber_iq_send(result);
+
+ } else {
+ purple_debug_error("jabber",
+ "Received an out-of-order/invalid IBB packet\n");
+ sess->state = JABBER_IBB_SESSION_ERROR;
+
+ if (sess->error_cb) {
+ sess->error_cb(sess);
+ }
+ }
+ } else if (close) {
+ sess->state = JABBER_IBB_SESSION_CLOSED;
+ purple_debug_info("jabber", "IBB: received close\n");
+
+ if (sess->closed_cb) {
+ purple_debug_info("jabber", "IBB: calling closed handler\n");
+ sess->closed_cb(sess);
+ }
+
+ } else {
+ /* this should never happen */
+ purple_debug_error("jabber", "Received bogus iq for IBB session\n");
+ }
+ } else if (open) {
+ JabberIq *result;
+ const GList *iterator;
+
+ /* run all open handlers registered until one returns true */
+ for (iterator = open_handlers ; iterator ;
+ iterator = g_list_next(iterator)) {
+ JabberIBBOpenHandler *handler = iterator->data;
+
+ if (handler(js, packet)) {
+ result = jabber_iq_new(js, JABBER_IQ_RESULT);
+ xmlnode_set_attrib(result->node, "to",
+ xmlnode_get_attrib(packet, "from"));
+ jabber_iq_set_id(result, xmlnode_get_attrib(packet, "id"));
+ jabber_iq_send(result);
+ return;
+ }
+ }
+ /* no open callback returned success, reject */
+ jabber_ibb_send_error_response(js, packet);
+ } else {
+ /* send error reply */
+ jabber_ibb_send_error_response(js, packet);
+ }
+}
+
+void
+jabber_ibb_register_open_handler(JabberIBBOpenHandler *cb)
+{
+ open_handlers = g_list_append(open_handlers, cb);
+}
+
+void
+jabber_ibb_unregister_open_handler(JabberIBBOpenHandler *cb)
+{
+ open_handlers = g_list_remove(open_handlers, cb);
+}
+
+void
+jabber_ibb_init(void)
+{
+ jabber_ibb_sessions = g_hash_table_new(g_str_hash, g_str_equal);
+}
+
+void
+jabber_ibb_uninit(void)
+{
+ g_hash_table_destroy(jabber_ibb_sessions);
+ g_list_free(open_handlers);
+ jabber_ibb_sessions = NULL;
+ open_handlers = NULL;
+}
+
diff --git a/libpurple/protocols/jabber/ibb.h b/libpurple/protocols/jabber/ibb.h
new file mode 100644
index 0000000000..b06be47736
--- /dev/null
+++ b/libpurple/protocols/jabber/ibb.h
@@ -0,0 +1,119 @@
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor Boston, MA 02110-1301, USA
+ */
+
+#ifndef _PURPLE_JABBER_IBB_H_
+#define _PURPLE_JABBER_IBB_H_
+
+#include "jabber.h"
+#include "iq.h"
+
+#define XEP_0047_NAMESPACE "http://jabber.org/protocol/ibb"
+
+typedef struct _JabberIBBSession JabberIBBSession;
+
+typedef void
+(JabberIBBDataCallback)(JabberIBBSession *, const gpointer data, gsize size);
+
+typedef void (JabberIBBOpenedCallback)(JabberIBBSession *);
+typedef void (JabberIBBClosedCallback)(JabberIBBSession *);
+typedef void (JabberIBBErrorCallback)(JabberIBBSession *);
+typedef void (JabberIBBSentCallback)(JabberIBBSession *);
+
+typedef gboolean (JabberIBBOpenHandler)(JabberStream *js, xmlnode *packet);
+
+typedef enum {
+ JABBER_IBB_SESSION_NOT_OPENED,
+ JABBER_IBB_SESSION_OPENED,
+ JABBER_IBB_SESSION_CLOSED,
+ JABBER_IBB_SESSION_ERROR
+} JabberIBBSessionState;
+
+struct _JabberIBBSession {
+ JabberStream *js;
+ gchar *who;
+ gchar *sid;
+ gchar *id;
+ guint16 send_seq;
+ guint16 recv_seq;
+ gsize block_size;
+
+ /* session state */
+ JabberIBBSessionState state;
+
+ /* user data (f.ex. a handle to a PurpleXfer) */
+ gpointer user_data;
+
+ /* callbacks */
+ JabberIBBOpenedCallback *opened_cb;
+ JabberIBBSentCallback *data_sent_cb;
+ JabberIBBClosedCallback *closed_cb;
+ /* callback for receiving data */
+ JabberIBBDataCallback *data_received_cb;
+ JabberIBBErrorCallback *error_cb;
+
+ /* store the last sent IQ (to permit cancel of callback) */
+ gchar *last_iq_id;
+};
+
+JabberIBBSession *jabber_ibb_session_create(JabberStream *js, const gchar *sid,
+ const gchar *who, gpointer user_data);
+JabberIBBSession *jabber_ibb_session_create_from_xmlnode(JabberStream *js,
+ xmlnode *packet, gpointer user_data);
+
+void jabber_ibb_session_destroy(JabberIBBSession *sess);
+
+void jabber_ibb_session_set_opened_callback(JabberIBBSession *sess,
+ JabberIBBOpenedCallback *cb);
+void jabber_ibb_session_set_data_sent_callback(JabberIBBSession *sess,
+ JabberIBBSentCallback *cb);
+void jabber_ibb_session_set_closed_callback(JabberIBBSession *sess,
+ JabberIBBClosedCallback *cb);
+void jabber_ibb_session_set_data_received_callback(JabberIBBSession *sess,
+ JabberIBBDataCallback *cb);
+void jabber_ibb_session_set_error_callback(JabberIBBSession *sess,
+ JabberIBBErrorCallback *cb);
+
+void jabber_ibb_session_open(JabberIBBSession *sess);
+void jabber_ibb_session_close(JabberIBBSession *sess);
+void jabber_ibb_session_accept(JabberIBBSession *sess);
+void jabber_ibb_session_send_data(JabberIBBSession *sess, gconstpointer data,
+ gsize size);
+
+const gchar *jabber_ibb_session_get_sid(const JabberIBBSession *sess);
+JabberStream *jabber_ibb_session_get_js(JabberIBBSession *sess);
+const gchar *jabber_ibb_session_get_who(const JabberIBBSession *sess);
+
+guint16 jabber_ibb_session_get_send_seq(const JabberIBBSession *sess);
+guint16 jabber_ibb_session_get_recv_seq(const JabberIBBSession *sess);
+
+JabberIBBSessionState jabber_ibb_session_get_state(const JabberIBBSession *sess);
+
+gsize jabber_ibb_session_get_block_size(const JabberIBBSession *sess);
+void jabber_ibb_session_set_block_size(JabberIBBSession *sess, gsize size);
+
+gpointer jabber_ibb_session_get_user_data(JabberIBBSession *sess);
+
+/* handle incoming packet */
+void jabber_ibb_parse(JabberStream *js, xmlnode *packet);
+
+/* add a handler for open session */
+void jabber_ibb_register_open_handler(JabberIBBOpenHandler *cb);
+void jabber_ibb_unregister_open_handler(JabberIBBOpenHandler *cb);
+
+void jabber_ibb_init(void);
+void jabber_ibb_uninit(void);
+
+#endif /* _PURPLE_JABBER_IBB_H_ */
diff --git a/libpurple/protocols/jabber/iq.c b/libpurple/protocols/jabber/iq.c
index 11442ed5a5..33126a41ed 100644
--- a/libpurple/protocols/jabber/iq.c
+++ b/libpurple/protocols/jabber/iq.c
@@ -34,6 +34,7 @@
#include "ping.h"
#include "adhoccommands.h"
#include "data.h"
+#include "ibb.h"
#ifdef _WIN32
#include "utsname.h"
@@ -393,6 +394,13 @@ void jabber_iq_parse(JabberStream *js, xmlnode *packet)
return;
}
+ if (xmlnode_get_child_with_namespace(packet, "data", XEP_0047_NAMESPACE)
+ || xmlnode_get_child_with_namespace(packet, "close", XEP_0047_NAMESPACE)
+ || xmlnode_get_child_with_namespace(packet, "open", XEP_0047_NAMESPACE)) {
+ jabber_ibb_parse(js, packet);
+ return;
+ }
+
/* If we get here, send the default error reply mandated by XMPP-CORE */
if(!strcmp(type, "set") || !strcmp(type, "get")) {
JabberIq *iq = jabber_iq_new(js, JABBER_IQ_ERROR);
diff --git a/libpurple/protocols/jabber/jabber.c b/libpurple/protocols/jabber/jabber.c
index 6baabdbf19..8c1abf3e97 100644
--- a/libpurple/protocols/jabber/jabber.c
+++ b/libpurple/protocols/jabber/jabber.c
@@ -185,7 +185,7 @@ static 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) {
purple_connection_error_reason (js->gc,
@@ -468,10 +468,10 @@ void jabber_keepalive(PurpleConnection *gc)
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);
@@ -579,7 +579,7 @@ 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);
}
@@ -745,14 +745,14 @@ 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;
}
-
+
if((my_jb = jabber_buddy_find(js, purple_account_get_username(account), TRUE)))
my_jb->subscription |= JABBER_SUB_BOTH;
@@ -862,10 +862,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);
@@ -908,9 +908,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;
@@ -1040,7 +1040,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;
@@ -1191,7 +1191,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);
@@ -1266,7 +1266,7 @@ static void jabber_unregister_account_iq_cb(JabberStream *js, xmlnode *packet, g
const char *type = xmlnode_get_attrib(packet,"type");
if(!strcmp(type,"error")) {
char *msg = jabber_parse_error(js, packet, NULL);
-
+
purple_notify_error(js->gc, _("Error unregistering account"),
_("Error unregistering account"), msg);
g_free(msg);
@@ -1300,7 +1300,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);
@@ -1310,7 +1310,7 @@ void jabber_unregister_account(PurpleAccount *account, PurpleAccountUnregistrati
js->unregistration_user_data = user_data;
return;
}
-
+
js = gc->proto_data;
if (js->unregistration) {
@@ -1617,10 +1617,10 @@ void jabber_add_feature(const char *shortname, const char *namespace, JabberFeat
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_features = g_list_append(jabber_features, feat);
}
@@ -1631,7 +1631,7 @@ void jabber_remove_feature(const char *shortname) {
if(!strcmp(feat->shortname, shortname)) {
g_free(feat->shortname);
g_free(feat->namespace);
-
+
g_free(feature->data);
jabber_features = g_list_delete_link(jabber_features, feature);
break;
@@ -1648,13 +1648,14 @@ 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 ||
@@ -1668,9 +1669,11 @@ 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"));
@@ -1749,14 +1752,19 @@ jabber_tooltip_add_resource_text(JabberBuddyResource *jbr,
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;
@@ -1842,9 +1850,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,
@@ -1853,12 +1864,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,
@@ -1867,12 +1880,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,
@@ -1881,12 +1896,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,
@@ -1895,7 +1912,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);
@@ -1909,7 +1926,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);
@@ -2055,7 +2071,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);
@@ -2070,19 +2086,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 &&
@@ -2102,7 +2123,7 @@ void jabber_convo_closed(PurpleConnection *gc, const char *who)
JabberID *jid;
JabberBuddy *jb;
JabberBuddyResource *jbr;
-
+
if(!(jid = jabber_id_new(who)))
return;
@@ -2363,7 +2384,7 @@ static PurpleCmdRet jabber_cmd_chat_affiliate(PurpleConversation *conv,
if (!chat || !args || !args[0] || !args[1])
return PURPLE_CMD_RET_FAILED;
- if (strcmp(args[1], "owner") != 0 &&
+ if (strcmp(args[1], "owner") != 0 &&
strcmp(args[1], "admin") != 0 &&
strcmp(args[1], "member") != 0 &&
strcmp(args[1], "outcast") != 0 &&
@@ -2492,63 +2513,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);
- return FALSE;
- }
-
- if(!jbr->caps) {
- *error = g_strdup_printf(_("Unable to buzz, because there is nothing known about user %s."), username);
+ if (!jbr) {
+ *error = g_strdup_printf(_("Unable to buzz, because %s might be offline."),
+ alias);
return FALSE;
}
- for(iter = jbr->caps->features; iter; iter = g_list_next(iter)) {
- if(!strcmp(iter->data, "http://www.xmpp.org/extensions/xep-0224.html#ns")) {
- xmlnode *buzz, *msg = xmlnode_new("message");
- gchar *to;
+ if (jabber_resource_has_capability(jbr, XEP_0224_NAMESPACE)) {
+ 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, "http://www.xmpp.org/extensions/xep-0224.html#ns");
+ buzz = xmlnode_new_child(msg, "attention");
+ xmlnode_set_namespace(buzz, XEP_0224_NAMESPACE);
- 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 do 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];
+ }
+
+ 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;
- return _jabber_send_buzz(js, args[0], error) ? PURPLE_CMD_RET_OK : PURPLE_CMD_RET_FAILED;
+ 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)
@@ -2661,8 +2711,9 @@ void jabber_register_commands(void)
"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,
+ 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);
}
diff --git a/libpurple/protocols/jabber/jabber.h b/libpurple/protocols/jabber/jabber.h
index cde48fb592..ea381a30a6 100644
--- a/libpurple/protocols/jabber/jabber.h
+++ b/libpurple/protocols/jabber/jabber.h
@@ -204,7 +204,7 @@ struct _JabberStream
gboolean unregistration;
PurpleAccountUnregistrationCb unregistration_cb;
void *unregistration_user_data;
-
+
gboolean vcard_fetched;
/* does the local server support PEP? */
@@ -212,16 +212,16 @@ struct _JabberStream
/* 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;
@@ -229,9 +229,9 @@ struct _JabberStream
char *old_uri;
int old_length;
char *old_track;
-
+
char *certificate_CN;
-
+
/* A purple timeout tag for the keepalive */
int keepalive_timeout;
diff --git a/libpurple/protocols/jabber/libxmpp.c b/libpurple/protocols/jabber/libxmpp.c
index cc8c408320..46b56c260c 100644
--- a/libpurple/protocols/jabber/libxmpp.c
+++ b/libpurple/protocols/jabber/libxmpp.c
@@ -44,6 +44,7 @@
#include "usertune.h"
#include "caps.h"
#include "data.h"
+#include "ibb.h"
static PurplePluginProtocolInfo prpl_info =
{
@@ -137,7 +138,7 @@ static gboolean load_plugin(PurplePlugin *plugin)
purple_marshal_VOID__POINTER_POINTER, NULL, 2,
purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION),
purple_value_new_outgoing(PURPLE_TYPE_STRING));
-
+
return TRUE;
}
@@ -146,11 +147,13 @@ static gboolean unload_plugin(PurplePlugin *plugin)
purple_signal_unregister(plugin, "jabber-receiving-xmlnode");
purple_signal_unregister(plugin, "jabber-sending-xmlnode");
-
+
purple_signal_unregister(plugin, "jabber-sending-text");
-
+
jabber_data_uninit();
-
+ jabber_si_uninit();
+ jabber_ibb_uninit();
+
return TRUE;
}
@@ -203,30 +206,30 @@ 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);
@@ -272,21 +275,26 @@ init_plugin(PurplePlugin *plugin)
#endif
#endif
jabber_register_commands();
-
+
jabber_iq_init();
jabber_pep_init();
-
+
jabber_tune_init();
jabber_caps_init();
-
+
jabber_data_init();
-
+
+
+ jabber_ibb_init();
+ jabber_si_init();
+
jabber_add_feature("avatarmeta", AVATARNAMESPACEMETA, jabber_pep_namespace_only_when_pep_enabled_cb);
jabber_add_feature("avatardata", AVATARNAMESPACEDATA, jabber_pep_namespace_only_when_pep_enabled_cb);
- jabber_add_feature("buzz", "http://www.xmpp.org/extensions/xep-0224.html#ns",
+ jabber_add_feature("buzz", XEP_0224_NAMESPACE,
jabber_buzz_isenabled);
jabber_add_feature("bob", XEP_0231_NAMESPACE,
jabber_custom_smileys_isenabled);
+ jabber_add_feature("ibb", XEP_0047_NAMESPACE, NULL);
jabber_pep_register_handler("avatar", AVATARNAMESPACEMETA, jabber_buddy_avatar_update_metadata);
}
diff --git a/libpurple/protocols/jabber/message.c b/libpurple/protocols/jabber/message.c
index b0abd03275..ed7fdc9eec 100644
--- a/libpurple/protocols/jabber/message.c
+++ b/libpurple/protocols/jabber/message.c
@@ -118,7 +118,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 +138,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 +289,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 +303,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 +319,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 +334,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 +352,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 +363,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 +374,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;
@@ -518,7 +509,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);
@@ -580,7 +571,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);
}
@@ -632,7 +623,7 @@ 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 (jm->type == JABBER_MESSAGE_GROUPCHAT) {
JabberID *jid = jabber_id_new(jm->from);
JabberChat *chat = NULL;
@@ -676,7 +667,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)) {
@@ -684,8 +675,8 @@ void jabber_message_parse(JabberStream *js, xmlnode *packet)
jabber_data_find_remote_by_cid(cid);
/* if data is already known, we add write it immediatly */
if (data) {
- purple_debug_info("jabber",
- "data is already known\n");
+ purple_debug_info("jabber",
+ "data is already known\n");
purple_conv_custom_smiley_write(conv, alt,
jabber_data_get_data(data),
jabber_data_get_size(data));
@@ -731,7 +722,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");
@@ -910,9 +901,9 @@ jabber_conv_support_custom_smileys(const PurpleConnection *gc,
{
JabberStream *js = (JabberStream *) gc->proto_data;
JabberBuddy *jb;
-
+
if (!js) {
- purple_debug_error("jabber",
+ purple_debug_error("jabber",
"jabber_conv_support_custom_smileys: could not find stream\n");
return FALSE;
}
@@ -965,7 +956,7 @@ 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,7 +1013,7 @@ void jabber_message_send(JabberMessage *jm)
PurpleConversation *conv =
purple_find_conversation_with_account(PURPLE_CONV_TYPE_ANY, jm->to,
account);
-
+
if (jabber_conv_support_custom_smileys(jm->js->gc, conv, jm->to)) {
GList *found_smileys = jabber_message_xhtml_find_smileys(jm->xhtml);
@@ -1037,19 +1028,19 @@ void jabber_message_send(JabberMessage *jm)
const gchar *shortcut = purple_smiley_get_shortcut(smiley);
const JabberData *data =
jabber_data_find_local_by_alt(shortcut);
-
+
/* the object has not been sent before */
if (!data) {
PurpleStoredImage *image =
purple_smiley_get_stored_image(smiley);
const gchar *ext = purple_imgstore_get_extension(image);
JabberStream *js = jm->js;
-
+
JabberData *new_data =
jabber_data_create_from_data(purple_imgstore_get_data(image),
purple_imgstore_get_size(image),
jabber_message_get_mimetype_from_ext(ext), js);
- purple_debug_info("jabber",
+ purple_debug_info("jabber",
"cache local smiley alt = %s, cid = %s\n",
shortcut, jabber_data_get_cid(new_data));
jabber_data_associate_local(new_data, shortcut);
@@ -1124,7 +1115,7 @@ int jabber_message_send_im(PurpleConnection *gc, const char *who, const char *ms
}
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);
diff --git a/libpurple/protocols/jabber/message.h b/libpurple/protocols/jabber/message.h
index 550dd1fe5a..b14aa992ef 100644
--- a/libpurple/protocols/jabber/message.h
+++ b/libpurple/protocols/jabber/message.h
@@ -26,6 +26,8 @@
#include "jabber.h"
#include "xmlnode.h"
+#define XEP_0224_NAMESPACE "urn:xmpp:attention:0"
+
typedef struct _JabberMessage {
JabberStream *js;
enum {
diff --git a/libpurple/protocols/jabber/pep.c b/libpurple/protocols/jabber/pep.c
index fae2223b63..843e69b427 100644
--- a/libpurple/protocols/jabber/pep.c
+++ b/libpurple/protocols/jabber/pep.c
@@ -32,7 +32,7 @@ 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_mood_init();
jabber_nick_init();
@@ -57,31 +57,31 @@ static void do_pep_iq_request_item_callback(JabberStream *js, xmlnode *packet, g
xmlnode *pubsub = xmlnode_get_child_with_namespace(packet,"pubsub","http://jabber.org/protocol/pubsub");
xmlnode *items = NULL;
JabberPEPHandler *cb = data;
-
+
if(pubsub)
items = xmlnode_get_child(pubsub, "items");
-
+
cb(js, from, items);
}
void jabber_pep_request_item(JabberStream *js, const char *to, const char *node, const char *id, JabberPEPHandler cb) {
JabberIq *iq = jabber_iq_new(js, JABBER_IQ_GET);
xmlnode *pubsub, *items, *item;
-
+
xmlnode_set_attrib(iq->node,"to",to);
pubsub = xmlnode_new_child(iq->node,"pubsub");
-
+
xmlnode_set_namespace(pubsub,"http://jabber.org/protocol/pubsub");
-
+
items = xmlnode_new_child(pubsub, "items");
xmlnode_set_attrib(items,"node",node);
-
+
item = xmlnode_new_child(items, "item");
if(id)
xmlnode_set_attrib(item, "id", id);
-
+
jabber_iq_set_callback(iq,do_pep_iq_request_item_callback,(gpointer)cb);
-
+
jabber_iq_send(iq);
}
@@ -94,15 +94,15 @@ void jabber_handle_event(JabberMessage *jm) {
JabberPEPHandler *jph;
GList *itemslist;
char *jid = jabber_get_bare_jid(jm->from);
-
+
for(itemslist = jm->eventitems; itemslist; itemslist = itemslist->next) {
xmlnode *items = (xmlnode*)itemslist->data;
const char *nodename = xmlnode_get_attrib(items,"node");
-
+
if(nodename && (jph = g_hash_table_lookup(pep_handlers, nodename)))
jph(jm->js, jid, items);
}
-
+
/* discard items we don't have a handler for */
g_free(jid);
}
diff --git a/libpurple/protocols/jabber/presence.c b/libpurple/protocols/jabber/presence.c
index 09ddd0901d..03497d5718 100644
--- a/libpurple/protocols/jabber/presence.c
+++ b/libpurple/protocols/jabber/presence.c
@@ -137,7 +137,7 @@ 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 */
@@ -146,7 +146,7 @@ void jabber_presence_send(PurpleAccount *account, PurpleStatus *status)
tune = purple_presence_get_status(p, "tune");
stripped = jabber_google_presence_outgoing(tune);
}
-
+
#define CHANGED(a,b) ((!a && b) || (a && a[0] == '\0' && b && b[0] != '\0') || \
(a && !b) || (a && a[0] != '\0' && b && b[0] == '\0') || (a && b && strcmp(a,b)))
/* check if there are any differences to the <presence> and send them in that case */
@@ -168,9 +168,9 @@ void jabber_presence_send(PurpleAccount *account, PurpleStatus *status)
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)
@@ -194,7 +194,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 = {
@@ -206,7 +206,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);
@@ -277,27 +277,27 @@ xmlnode *jabber_presence_create_js(JabberStream *js, JabberBuddyState state, con
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 */
@@ -309,7 +309,7 @@ xmlnode *jabber_presence_create_js(JabberStream *js, JabberBuddyState state, con
if(remaining < 1023)
xmlnode_set_attrib(c, "ext", extlist);
}
-
+
return presence;
}
@@ -790,7 +790,7 @@ void jabber_presence_parse(JabberStream *js, xmlnode *packet)
const char *node = xmlnode_get_attrib(caps,"node");
const char *ver = xmlnode_get_attrib(caps,"ver");
const char *ext = xmlnode_get_attrib(caps,"ext");
-
+
if(node && ver) {
JabberPresenceCapabilities *userdata = g_new0(JabberPresenceCapabilities, 1);
userdata->js = js;
diff --git a/libpurple/protocols/jabber/roster.c b/libpurple/protocols/jabber/roster.c
index cab8df2942..9febc1e729 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);
}
@@ -273,6 +276,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;
@@ -289,7 +293,7 @@ static void jabber_roster_update(JabberStream *js, const char *name,
while(buddies) {
b = buddies->data;
g = purple_buddy_get_group(b);
- groups = g_slist_append(groups, g->name);
+ groups = g_slist_append(groups, (char *)purple_group_get_name(g));
buddies = g_slist_remove(buddies, b);
}
}
@@ -301,7 +305,8 @@ 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 +315,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 +332,16 @@ 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);
jabber_roster_update(js, who, NULL);
@@ -375,6 +382,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,10 +391,11 @@ 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);
}
jabber_roster_update(gc->proto_data, name, groups);
@@ -397,15 +406,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 +427,11 @@ 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);
+ jabber_roster_update(gc->proto_data, name, groups);
g_slist_free(groups);
} else {
JabberIq *iq = jabber_iq_new_query(gc->proto_data, JABBER_IQ_SET,
@@ -428,7 +439,7 @@ 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");
jabber_iq_send(iq);
diff --git a/libpurple/protocols/jabber/si.c b/libpurple/protocols/jabber/si.c
index 02a79229c4..d4560a09ec 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;
}
@@ -654,8 +709,32 @@ 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"))
- purple_xfer_cancel_remote(xfer);
+ purple_debug_info("jabber",
+ "jabber_si_xfer_connect_proxy_cb: type = %s\n",
+ type);
+ if (type && !strcmp(type, "error")) {
+ /* if IBB is available, open IBB session */
+ purple_debug_info("jabber",
+ "jabber_si_xfer_connect_proxy_cb: got error, method: %d\n",
+ jsx->stream_method);
+ if (jsx->stream_method & STREAM_METHOD_IBB) {
+ purple_debug_info("jabber", "IBB is possible, try it\n");
+ /* if we are the sender and haven't already opened an IBB
+ session, do so now (we might already have failed to open
+ the bytestream proxy ourselves when receiving this <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;
}
@@ -682,8 +761,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;
@@ -810,8 +903,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;
}
@@ -841,11 +952,242 @@ jabber_si_xfer_bytestreams_send_init(PurpleXfer *xfer)
}
+static void
+jabber_si_xfer_ibb_error_cb(JabberIBBSession *sess)
+{
+ PurpleXfer *xfer = (PurpleXfer *) jabber_ibb_session_get_user_data(sess);
+ JabberStream *js = jabber_ibb_session_get_js(sess);
+ PurpleConnection *gc = js->gc;
+ PurpleAccount *account = purple_connection_get_account(gc);
+
+ purple_debug_error("jabber", "an error occured during IBB file transfer\n");
+ purple_xfer_error(purple_xfer_get_type(xfer), account,
+ jabber_ibb_session_get_who(sess),
+ _("An error occured on the in-band bytestream transfer\n"));
+ purple_xfer_cancel_remote(xfer);
+}
+
+static void
+jabber_si_xfer_ibb_closed_cb(JabberIBBSession *sess)
+{
+ PurpleXfer *xfer = (PurpleXfer *) jabber_ibb_session_get_user_data(sess);
+ JabberStream *js = jabber_ibb_session_get_js(sess);
+ PurpleConnection *gc = js->gc;
+ PurpleAccount *account = purple_connection_get_account(gc);
+
+ purple_debug_info("jabber", "the remote user closed the transfer\n");
+ if (purple_xfer_get_bytes_remaining(xfer) > 0) {
+ purple_xfer_error(purple_xfer_get_type(xfer), account,
+ jabber_ibb_session_get_who(sess), _("Transfer was closed."));
+ purple_xfer_cancel_remote(xfer);
+ } else {
+ purple_xfer_set_completed(xfer, TRUE);
+ purple_xfer_end(xfer);
+ }
+}
+
+static void
+jabber_si_xfer_ibb_recv_data_cb(JabberIBBSession *sess, gpointer data,
+ gsize size)
+{
+ PurpleXfer *xfer = (PurpleXfer *) jabber_ibb_session_get_user_data(sess);
+ JabberSIXfer *jsx = (JabberSIXfer *) xfer->data;
+
+ if (size <= purple_xfer_get_bytes_remaining(xfer)) {
+ purple_debug_info("jabber", "about to write %" G_GSIZE_FORMAT " bytes from IBB stream\n",
+ size);
+ if(!fwrite(data, size, 1, jsx->fp)) {
+ purple_debug_error("jabber", "error writing to file\n");
+ purple_xfer_cancel_remote(xfer);
+ return;
+ }
+ purple_xfer_set_bytes_sent(xfer, purple_xfer_get_bytes_sent(xfer) + size);
+ purple_xfer_update_progress(xfer);
+
+ if (purple_xfer_get_bytes_remaining(xfer) == 0) {
+ purple_xfer_set_completed(xfer, TRUE);
+ purple_xfer_end(xfer);
+ }
+ } else {
+ /* trying to write past size of file transfers negotiated size,
+ reject transfer to protect against malicious behaviour */
+ purple_debug_error("jabber",
+ "IBB file transfer send more data than expected\n");
+ purple_xfer_cancel_remote(xfer);
+ }
+
+}
+
+static gboolean
+jabber_si_xfer_ibb_open_cb(JabberStream *js, xmlnode *packet)
+{
+ const gchar *who = xmlnode_get_attrib(packet, "from");
+ xmlnode *open = xmlnode_get_child(packet, "open");
+ const gchar *sid = xmlnode_get_attrib(open, "sid");
+ PurpleXfer *xfer = jabber_si_xfer_find(js, sid, who);
+ if (xfer) {
+ JabberSIXfer *jsx = (JabberSIXfer *) xfer->data;
+ JabberIBBSession *sess =
+ jabber_ibb_session_create_from_xmlnode(js, packet, xfer);
+ const char *filename;
+
+ jabber_si_bytestreams_ibb_timeout_remove(jsx);
+
+ if (sess) {
+ /* open the file to write to */
+ filename = purple_xfer_get_local_filename(xfer);
+ jsx->fp = g_fopen(filename, "wb");
+ if (jsx->fp == NULL) {
+ purple_debug_error("jabber", "failed to open file %s for writing: %s\n",
+ filename, g_strerror(errno));
+ purple_xfer_cancel_remote(xfer);
+ return FALSE;
+ }
+
+ /* setup callbacks here...*/
+ jabber_ibb_session_set_data_received_callback(sess,
+ jabber_si_xfer_ibb_recv_data_cb);
+ jabber_ibb_session_set_closed_callback(sess,
+ jabber_si_xfer_ibb_closed_cb);
+ jabber_ibb_session_set_error_callback(sess,
+ jabber_si_xfer_ibb_error_cb);
+
+ jsx->ibb_session = sess;
+
+ /* start the transfer */
+ purple_xfer_start(xfer, 0, NULL, 0);
+ return TRUE;
+ } else {
+ /* failed to create IBB session */
+ purple_debug_error("jabber", "failed to create IBB session\n");
+ purple_xfer_cancel_remote(xfer);
+ return FALSE;
+ }
+ } else {
+ /* we got an IBB <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);
+ }
+}
+
+static void
+jabber_si_xfer_ibb_sent_cb(JabberIBBSession *sess)
+{
+ PurpleXfer *xfer = (PurpleXfer *) jabber_ibb_session_get_user_data(sess);
+ gsize remaining = purple_xfer_get_bytes_remaining(xfer);
+
+ if (remaining == 0) {
+ /* close the session */
+ jabber_ibb_session_close(sess);
+ purple_xfer_set_completed(xfer, TRUE);
+ purple_xfer_end(xfer);
+ } else {
+ /* send more... */
+ jabber_si_xfer_ibb_send_data(sess);
+ }
+}
+
+static void
+jabber_si_xfer_ibb_opened_cb(JabberIBBSession *sess)
+{
+ PurpleXfer *xfer = (PurpleXfer *) jabber_ibb_session_get_user_data(sess);
+ JabberSIXfer *jsx = (JabberSIXfer *) xfer->data;
+ JabberStream *js = jabber_ibb_session_get_js(sess);
+ PurpleConnection *gc = js->gc;
+ PurpleAccount *account = purple_connection_get_account(gc);
+
+ if (jabber_ibb_session_get_state(sess) == JABBER_IBB_SESSION_OPENED) {
+ const char *filename = purple_xfer_get_local_filename(xfer);
+ jsx->fp = g_fopen(filename, "rb");
+ if (jsx->fp == NULL) {
+ purple_debug_error("jabber", "Failed to open file %s for reading: %s\n",
+ filename, g_strerror(errno));
+ purple_xfer_error(purple_xfer_get_type(xfer), account,
+ jabber_ibb_session_get_who(sess),
+ _("Failed to open the file"));
+ purple_xfer_cancel_local(xfer);
+ return;
+ }
+
+ purple_xfer_start(xfer, 0, NULL, 0);
+ purple_xfer_set_bytes_sent(xfer, 0);
+ purple_xfer_update_progress(xfer);
+ jabber_si_xfer_ibb_send_data(sess);
+ } else {
+ /* error */
+ purple_xfer_error(purple_xfer_get_type(xfer), account,
+ jabber_ibb_session_get_who(sess),
+ _("Failed to open in-band bytestream"));
+ purple_xfer_end(xfer);
+ }
+}
+
+static void
+jabber_si_xfer_ibb_send_init(JabberStream *js, PurpleXfer *xfer)
+{
+ JabberSIXfer *jsx = (JabberSIXfer *) xfer->data;
+
+ purple_xfer_ref(xfer);
+
+ jsx->ibb_session = jabber_ibb_session_create(js, jsx->stream_id,
+ purple_xfer_get_remote_user(xfer), xfer);
+
+ if (jsx->ibb_session) {
+ /* should set callbacks here... */
+ jabber_ibb_session_set_opened_callback(jsx->ibb_session,
+ jabber_si_xfer_ibb_opened_cb);
+ jabber_ibb_session_set_data_sent_callback(jsx->ibb_session,
+ jabber_si_xfer_ibb_sent_cb);
+ jabber_ibb_session_set_closed_callback(jsx->ibb_session,
+ jabber_si_xfer_ibb_closed_cb);
+ jabber_ibb_session_set_error_callback(jsx->ibb_session,
+ jabber_si_xfer_ibb_error_cb);
+
+ /* open the IBB session */
+ jabber_ibb_session_open(jsx->ibb_session);
+
+ } else {
+ /* failed to create IBB session */
+ purple_debug_error("jabber",
+ "failed to initiate IBB session for file transfer\n");
+ purple_xfer_cancel_local(xfer);
+ }
+}
+
static void jabber_si_xfer_send_method_cb(JabberStream *js, xmlnode *packet,
gpointer data)
{
PurpleXfer *xfer = data;
xmlnode *si, *feature, *x, *field, *value;
+ gboolean found_method = FALSE;
if(!(si = xmlnode_get_child_with_namespace(packet, "si", "http://jabber.org/protocol/si"))) {
purple_xfer_cancel_remote(xfer);
@@ -864,20 +1206,33 @@ 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)
@@ -914,14 +1269,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);
@@ -935,38 +1290,66 @@ 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 (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");
}
@@ -981,6 +1364,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");
}
@@ -995,9 +1383,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);
@@ -1124,17 +1519,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);
}
@@ -1156,6 +1555,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);
@@ -1227,6 +1629,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")) {
@@ -1237,10 +1641,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);
}
@@ -1278,4 +1680,15 @@ void jabber_si_parse(JabberStream *js, xmlnode *packet)
}
}
+void
+jabber_si_init(void)
+{
+ jabber_ibb_register_open_handler(jabber_si_xfer_ibb_open_cb);
+}
+
+void
+jabber_si_uninit(void)
+{
+ jabber_ibb_unregister_open_handler(jabber_si_xfer_ibb_open_cb);
+}
diff --git a/libpurple/protocols/jabber/si.h b/libpurple/protocols/jabber/si.h
index c7f0ff9526..120046fc59 100644
--- a/libpurple/protocols/jabber/si.h
+++ b/libpurple/protocols/jabber/si.h
@@ -30,5 +30,7 @@ void jabber_bytestreams_parse(JabberStream *js, xmlnode *packet);
void jabber_si_parse(JabberStream *js, xmlnode *packet);
PurpleXfer *jabber_si_new_xfer(PurpleConnection *gc, const char *who);
void jabber_si_xfer_send(PurpleConnection *gc, const char *who, const char *file);
+void jabber_si_init(void);
+void jabber_si_uninit(void);
#endif /* _PURPLE_JABBER_SI_H_ */
diff --git a/libpurple/protocols/jabber/usermood.c b/libpurple/protocols/jabber/usermood.c
index 3ff09d0402..217d0926dd 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;
@@ -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/usernick.c b/libpurple/protocols/jabber/usernick.c
index 618d493aed..ff269ceeb5 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 */
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) */
@@ -66,13 +66,13 @@ 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");
-
+
if(item) {
xmlnode *nick = xmlnode_get_child_with_namespace(item,"nick","http://jabber.org/protocol/nick");
if(nick)
oldnickname = xmlnode_get_data(nick);
}
-
+
purple_request_input(js->gc, _("Set User Nickname"), _("Please specify a new nickname for you."),
_("This information is visible to all contacts on your contact list, so choose something appropriate."),
oldnickname, FALSE, FALSE, NULL, _("Set"), PURPLE_CALLBACK(do_nick_set), _("Cancel"), NULL,
@@ -84,7 +84,7 @@ 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);
diff --git a/libpurple/protocols/jabber/usertune.c b/libpurple/protocols/jabber/usertune.c
index 92d06d3168..73139d5920 100644
--- a/libpurple/protocols/jabber/usertune.c
+++ b/libpurple/protocols/jabber/usertune.c
@@ -116,12 +116,12 @@ void jabber_tune_init(void) {
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/xdata.c b/libpurple/protocols/jabber/xdata.c
index 9eff9a84f9..1d2571c269 100644
--- a/libpurple/protocols/jabber/xdata.c
+++ b/libpurple/protocols/jabber/xdata.c
@@ -372,7 +372,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 +382,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/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/msn.c b/libpurple/protocols/msn/msn.c
index 09377a0f4d..5cbfd8e879 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),
@@ -1430,14 +1436,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)
{
#if 0
@@ -1464,11 +1471,20 @@ 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 */
- msn_userlist_save_pending_buddy(userlist, who, group ? group->name : NULL);
- msn_notification_send_fqy(session, who);
+ msn_userlist_save_pending_buddy(userlist, who, gname);
+ tokens = g_strsplit(who, "@", 2);
+ fqy = g_strdup_printf("<ml><d n=\"%s\"><c n=\"%s\"/></d></ml>",
+ tokens[1],
+ tokens[0]);
+ msn_notification_send_fqy(session, fqy, strlen(fqy),
+ (MsnFqyCb)msn_userlist_add_pending_buddy);
+ g_free(fqy);
+ g_strfreev(tokens);
}
}
@@ -1485,7 +1501,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
@@ -1738,20 +1754,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);
}
}
@@ -1811,20 +1829,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);
}
/**
@@ -1841,17 +1861,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);
diff --git a/libpurple/protocols/msn/notification.c b/libpurple/protocols/msn/notification.c
index 47ea21fe0a..a7ffdf5b4e 100644
--- a/libpurple/protocols/msn/notification.c
+++ b/libpurple/protocols/msn/notification.c
@@ -544,17 +544,16 @@ msn_add_contact_xml(MsnSession *session, xmlnode *mlNode,const char *passport, M
}
/*find a domain Node*/
- for(d_node = xmlnode_get_child(mlNode,"d"); d_node; d_node = xmlnode_get_next_twin(d_node))
- {
+ for (d_node = xmlnode_get_child(mlNode, "d"); d_node;
+ d_node = xmlnode_get_next_twin(d_node)) {
const char *attr = xmlnode_get_attrib(d_node,"n");
if (attr == NULL)
continue;
- if (!strcmp(attr,domain))
+ if (!strcmp(attr, domain))
break;
}
- if(d_node == NULL)
- {
+ if (d_node == NULL) {
/*domain not found, create a new domain Node*/
purple_debug_info("msn", "Didn't find existing domain node, adding one.\n");
d_node = xmlnode_new("d");
@@ -566,20 +565,18 @@ msn_add_contact_xml(MsnSession *session, xmlnode *mlNode,const char *passport, M
c_node = xmlnode_new("c");
xmlnode_set_attrib(c_node, "n", email);
- purple_debug_info("msn", "list_op: %d\n", list_op);
- g_snprintf(fmt_str, sizeof(fmt_str), "%d", list_op);
- xmlnode_set_attrib(c_node, "l", fmt_str);
+ if (list_op != 0) {
+ purple_debug_info("msn", "list_op: %d\n", list_op);
+ g_snprintf(fmt_str, sizeof(fmt_str), "%d", list_op);
+ xmlnode_set_attrib(c_node, "l", fmt_str);
+ }
- if (networkId != MSN_NETWORK_UNKNOWN)
+ if (networkId != MSN_NETWORK_UNKNOWN) {
g_snprintf(fmt_str, sizeof(fmt_str), "%d", networkId);
- else if (msn_user_is_yahoo(session->account, passport))
- g_snprintf(fmt_str, sizeof(fmt_str), "%d", MSN_NETWORK_YAHOO);
- else
- g_snprintf(fmt_str, sizeof(fmt_str), "%d", MSN_NETWORK_PASSPORT);
-
- /*mobile*/
- /*type_str = g_strdup_printf("4");*/
- xmlnode_set_attrib(c_node, "t", fmt_str);
+ /*mobile*/
+ /*type_str = g_strdup_printf("4");*/
+ xmlnode_set_attrib(c_node, "t", fmt_str);
+ }
xmlnode_insert_child(d_node, c_node);
@@ -596,6 +593,48 @@ msn_notification_post_adl(MsnCmdProc *cmdproc, const char *payload, int payload_
msn_cmdproc_send_trans(cmdproc, trans);
}
+void
+msn_notification_send_fqy(MsnSession *session,
+ const char *payload, int payload_len,
+ MsnFqyCb cb)
+{
+ MsnTransaction *trans;
+ MsnCmdProc *cmdproc;
+
+ cmdproc = session->notification->cmdproc;
+
+ trans = msn_transaction_new(cmdproc, "FQY", "%d", payload_len);
+ msn_transaction_set_payload(trans, payload, payload_len);
+ msn_transaction_set_data(trans, cb);
+ msn_cmdproc_send_trans(cmdproc, trans);
+}
+
+static void
+update_contact_network(MsnSession *session, const char *passport, MsnNetwork network)
+{
+ MsnUser *user = msn_userlist_find_user(session->userlist, passport);
+ /* TODO: Also figure out how to update membership lists */
+ if (user) {
+ xmlnode *adl_node;
+ char *payload;
+ int payload_len;
+
+ msn_user_set_network(user, network);
+
+ adl_node = xmlnode_new("ml");
+ xmlnode_set_attrib(adl_node, "l", "1");
+ msn_add_contact_xml(session, adl_node, passport,
+ user->list_op & MSN_LIST_OP_MASK, network);
+ payload = xmlnode_to_str(adl_node, &payload_len);
+ msn_notification_post_adl(session->notification->cmdproc, payload, payload_len);
+
+ } else {
+ purple_debug_error("msn",
+ "Got FQY update for unkwown user %s on network %d.\n",
+ passport, network);
+ }
+}
+
/*dump contact info to NS*/
void
msn_notification_dump_contact(MsnSession *session)
@@ -603,14 +642,17 @@ msn_notification_dump_contact(MsnSession *session)
MsnUser *user;
GList *l;
xmlnode *adl_node;
+ xmlnode *fqy_node;
char *payload;
int payload_len;
int adl_count = 0;
+ int fqy_count = 0;
const char *display_name;
adl_node = xmlnode_new("ml");
adl_node->child = NULL;
xmlnode_set_attrib(adl_node, "l", "1");
+ fqy_node = xmlnode_new("ml");
/*get the userlist*/
for (l = session->userlist->users; l != NULL; l = l->next) {
@@ -635,36 +677,63 @@ msn_notification_dump_contact(MsnSession *session)
msn_userlist_rem_buddy_from_list(session->userlist, user->passport, MSN_LIST_AL);
}
- msn_add_contact_xml(session, adl_node, user->passport,
- user->list_op & MSN_LIST_OP_MASK, user->networkid);
+ if (user->networkid != MSN_NETWORK_UNKNOWN) {
+ msn_add_contact_xml(session, adl_node, user->passport,
+ user->list_op & MSN_LIST_OP_MASK, user->networkid);
- /* each ADL command may contain up to 150 contacts */
- if (++adl_count % 150 == 0 || l->next == NULL) {
- payload = xmlnode_to_str(adl_node,&payload_len);
+ /* each ADL command may contain up to 150 contacts */
+ if (++adl_count % 150 == 0) {
+ payload = xmlnode_to_str(adl_node, &payload_len);
- msn_notification_post_adl(session->notification->cmdproc,
- payload, payload_len);
+ msn_notification_post_adl(session->notification->cmdproc,
+ payload, payload_len);
- g_free(payload);
- xmlnode_free(adl_node);
+ g_free(payload);
+ xmlnode_free(adl_node);
- if (l->next) {
adl_node = xmlnode_new("ml");
adl_node->child = NULL;
xmlnode_set_attrib(adl_node, "l", "1");
}
+ } else {
+ msn_add_contact_xml(session, fqy_node, user->passport,
+ 0, user->networkid);
+
+ /* each FQY command may contain up to 150 contacts, probably */
+ if (++fqy_count % 150 == 0) {
+ payload = xmlnode_to_str(fqy_node, &payload_len);
+
+ msn_notification_send_fqy(session, payload, payload_len,
+ update_contact_network);
+
+ g_free(payload);
+ xmlnode_free(fqy_node);
+ fqy_node = xmlnode_new("ml");
+ }
}
}
- if (adl_count == 0) {
- payload = xmlnode_to_str(adl_node,&payload_len);
+ /* Send the rest, or just an empty one to let the server set us online */
+ if (adl_count == 0 || adl_count % 150 != 0) {
+ payload = xmlnode_to_str(adl_node, &payload_len);
msn_notification_post_adl(session->notification->cmdproc, payload, payload_len);
g_free(payload);
- xmlnode_free(adl_node);
}
+ if (fqy_count % 150 != 0) {
+ payload = xmlnode_to_str(fqy_node, &payload_len);
+
+ msn_notification_send_fqy(session, payload, payload_len,
+ update_contact_network);
+
+ g_free(payload);
+ }
+
+ xmlnode_free(adl_node);
+ xmlnode_free(fqy_node);
+
display_name = purple_connection_get_display_name(session->account->gc);
if (display_name
&& strcmp(display_name,
@@ -674,30 +743,6 @@ msn_notification_dump_contact(MsnSession *session)
}
-/*Post FQY to NS,Inform add a Yahoo User*/
-void
-msn_notification_send_fqy(MsnSession *session, const char *passport)
-{
- MsnTransaction *trans;
- MsnCmdProc *cmdproc;
- char* email,*domain,*payload;
- char **tokens;
-
- cmdproc = session->notification->cmdproc;
-
- tokens = g_strsplit(passport, "@", 2);
- email = tokens[0];
- domain = tokens[1];
-
- payload = g_strdup_printf("<ml><d n=\"%s\"><c n=\"%s\"/></d></ml>", domain, email);
- trans = msn_transaction_new(cmdproc, "FQY","%" G_GSIZE_FORMAT, strlen(payload));
- msn_transaction_set_payload(trans, payload, strlen(payload));
- msn_cmdproc_send_trans(cmdproc, trans);
-
- g_free(payload);
- g_strfreev(tokens);
-}
-
static void
blp_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
{
@@ -861,7 +906,7 @@ static void
fqy_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload,
size_t len)
{
- MsnUserList *userlist;
+ MsnSession *session;
xmlnode *ml, *d, *c;
const char *domain;
const char *local;
@@ -869,26 +914,37 @@ fqy_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload,
char *passport;
MsnNetwork network = MSN_NETWORK_PASSPORT;
- userlist = cmdproc->session->userlist;
+ session = cmdproc->session;
/* FQY response:
<ml><d n="domain.com"><c n="local-node" t="network" /></d></ml> */
ml = xmlnode_from_str(payload, len);
- d = xmlnode_get_child(ml, "d");
- c = xmlnode_get_child(d, "c");
- domain = xmlnode_get_attrib(d, "n");
- local = xmlnode_get_attrib(c, "n");
- type = xmlnode_get_attrib(c, "t");
-
- passport = g_strdup_printf("%s@%s", local, domain);
-
- if (type != NULL)
- network = (MsnNetwork)strtoul(type, NULL, 10);
- purple_debug_info("msn", "FQY response says %s is from network %d\n",
- passport, network);
- msn_userlist_add_pending_buddy(userlist, passport, network);
+ for (d = xmlnode_get_child(ml, "d");
+ d != NULL;
+ d = xmlnode_get_next_twin(d)) {
+ domain = xmlnode_get_attrib(d, "n");
+ for (c = xmlnode_get_child(d, "c");
+ c != NULL;
+ c = xmlnode_get_next_twin(c)) {
+ local = xmlnode_get_attrib(c, "n");
+ type = xmlnode_get_attrib(c, "t");
+
+ passport = g_strdup_printf("%s@%s", local, domain);
+
+ if (type != NULL)
+ network = (MsnNetwork)strtoul(type, NULL, 10);
+ else
+ network = MSN_NETWORK_PASSPORT;
+
+ purple_debug_info("msn", "FQY response says %s is from network %d\n",
+ passport, network);
+ if (cmd->trans->data)
+ ((MsnFqyCb)cmd->trans->data)(session, passport, network);
+
+ g_free(passport);
+ }
+ }
- g_free(passport);
xmlnode_free(ml);
}
diff --git a/libpurple/protocols/msn/notification.h b/libpurple/protocols/msn/notification.h
index 8fa8d9d734..e2efd415cb 100644
--- a/libpurple/protocols/msn/notification.h
+++ b/libpurple/protocols/msn/notification.h
@@ -58,6 +58,8 @@ struct _MsnNotification
gboolean in_use;
};
+typedef void (*MsnFqyCb)(MsnSession *session, const char *passport, MsnNetwork network);
+
#include "state.h"
void uum_send_msg(MsnSession *session,MsnMessage *msg);
@@ -69,7 +71,9 @@ void msn_notification_add_buddy_to_list(MsnNotification *notification,
void msn_notification_rem_buddy_from_list(MsnNotification *notification,
MsnListId list_id, MsnUser *user);
-void msn_notification_send_fqy(MsnSession *session, const char *passport);
+void msn_notification_send_fqy(MsnSession *session,
+ const char *payload, int payload_len,
+ MsnFqyCb cb);
MsnNotification *msn_notification_new(MsnSession *session);
void msn_notification_destroy(MsnNotification *notification);
diff --git a/libpurple/protocols/msn/session.c b/libpurple/protocols/msn/session.c
index 1bbfd0efd6..424a37c6d5 100644
--- a/libpurple/protocols/msn/session.c
+++ b/libpurple/protocols/msn/session.c
@@ -271,16 +271,21 @@ 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) {
+ for (gnode = purple_blist_get_root(); gnode;
+ gnode = purple_blist_node_get_sibling_next(gnode)) {
PurpleGroup *group = (PurpleGroup *)gnode;
const char *group_name;
if(!PURPLE_BLIST_NODE_IS_GROUP(gnode))
continue;
- group_name = group->name;
- for(cnode = gnode->child; cnode; cnode = cnode->next) {
+ group_name = purple_group_get_name(group);
+ for(cnode = purple_blist_node_get_first_child(gnode);
+ cnode;
+ cnode = purple_blist_node_get_sibling_next(cnode)) {
if(!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
continue;
- for(bnode = cnode->child; bnode; bnode = bnode->next) {
+ for(bnode = purple_blist_node_get_first_child(cnode);
+ bnode;
+ bnode = purple_blist_node_get_sibling_next(bnode)) {
PurpleBuddy *b;
if(!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
continue;
diff --git a/libpurple/protocols/msn/slpcall.c b/libpurple/protocols/msn/slpcall.c
index 6cf852a13f..7de69a09be 100644
--- a/libpurple/protocols/msn/slpcall.c
+++ b/libpurple/protocols/msn/slpcall.c
@@ -47,8 +47,7 @@ msn_slpcall_timeout(gpointer data)
if (!slpcall->pending && !slpcall->progress)
{
msn_slpcall_destroy(slpcall);
- slpcall->timer = 0;
- return FALSE;
+ return TRUE;
}
slpcall->progress = FALSE;
diff --git a/libpurple/protocols/msn/switchboard.c b/libpurple/protocols/msn/switchboard.c
index 315d3b555e..0ada2639d1 100644
--- a/libpurple/protocols/msn/switchboard.c
+++ b/libpurple/protocols/msn/switchboard.c
@@ -383,7 +383,7 @@ msg_resend_cb(gpointer data)
{
MsnSwitchBoard *swboard = data;
- purple_debug_info("msn", "unqueuing unsent message to %s", swboard->im_user);
+ purple_debug_info("msn", "unqueuing unsent message to %s\n", swboard->im_user);
msn_switchboard_request(swboard);
msn_switchboard_request_add_user(swboard, swboard->im_user);
@@ -448,7 +448,7 @@ msg_error_helper(MsnCmdProc *cmdproc, MsnMessage *msg, MsnMsgErrorType error)
body_enc = g_markup_escape_text(body_str, -1);
g_free(body_str);
- purple_debug_info("msn", "queuing unsent message to %s: %s",
+ purple_debug_info("msn", "queuing unsent message to %s: %s\n",
swboard->im_user, body_enc);
g_free(body_enc);
msn_send_im_message(session, msg);
diff --git a/libpurple/protocols/msn/user.c b/libpurple/protocols/msn/user.c
index d5b5430afc..2ec31db3a4 100644
--- a/libpurple/protocols/msn/user.c
+++ b/libpurple/protocols/msn/user.c
@@ -294,9 +294,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*/
diff --git a/libpurple/protocols/msn/userlist.c b/libpurple/protocols/msn/userlist.c
index 520dd1978f..a98919d537 100644
--- a/libpurple/protocols/msn/userlist.c
+++ b/libpurple/protocols/msn/userlist.c
@@ -770,10 +770,11 @@ msn_userlist_save_pending_buddy(MsnUserList *userlist,
* Actually adds a buddy once we have the response from FQY
*/
void
-msn_userlist_add_pending_buddy(MsnUserList *userlist,
+msn_userlist_add_pending_buddy(MsnSession *session,
const char *who,
/*MsnNetwork*/ int network)
{
+ MsnUserList *userlist = session->userlist;
MsnUser *user = NULL;
MsnUser *user2;
GList *l;
@@ -930,31 +931,37 @@ 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)
+ for (gnode = purple_blist_get_root(); gnode;
+ gnode = purple_blist_node_get_sibling_next(gnode))
{
if (!PURPLE_BLIST_NODE_IS_GROUP(gnode))
continue;
- for (cnode = gnode->child; cnode; cnode = cnode->next)
+ for (cnode = purple_blist_node_get_first_child(gnode);
+ cnode;
+ cnode = purple_blist_node_get_sibling_next(cnode))
{
if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
continue;
- for (bnode = cnode->child; bnode; bnode = bnode->next)
+ for (bnode = purple_blist_node_get_first_child(cnode);
+ bnode;
+ bnode = purple_blist_node_get_sibling_next(bnode))
{
PurpleBuddy *b;
if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
continue;
b = (PurpleBuddy *)bnode;
- if (b->account == gc->account)
+ if (purple_buddy_get_account(b) == account)
{
user = msn_userlist_find_add_user(session->userlist,
- b->name,NULL);
- b->proto_data = user;
+ purple_buddy_get_name(b), NULL);
+ purple_buddy_set_protocol_data(b, user);
msn_user_set_op(user, MSN_LIST_FL_OP);
}
}
diff --git a/libpurple/protocols/msn/userlist.h b/libpurple/protocols/msn/userlist.h
index 49bf870fe1..fef45a3491 100644
--- a/libpurple/protocols/msn/userlist.h
+++ b/libpurple/protocols/msn/userlist.h
@@ -95,7 +95,7 @@ void msn_userlist_add_buddy(MsnUserList *userlist,
void msn_userlist_save_pending_buddy(MsnUserList *userlist,
const char *who,
const char *group_name);
-void msn_userlist_add_pending_buddy(MsnUserList *userlist,
+void msn_userlist_add_pending_buddy(MsnSession *session,
const char *who,
/*MsnNetwork*/ int network);
void msn_userlist_move_buddy(MsnUserList *userlist, const char *who,
diff --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 c4b543da96..40ec871bd0 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);
- session = (MsimSession *)buddy->account->gc->proto_data;
+ account = purple_buddy_get_account(buddy);
+ gc = purple_account_get_connection(account);
+ session = (MsimSession *)gc->proto_data;
+
g_return_val_if_fail(MSIM_SESSION_VALID(session), NULL);
display_name = headline = NULL;
@@ -435,8 +440,10 @@ msim_tooltip_text(PurpleBuddy *buddy, PurpleNotifyUserInfo *user_info,
if (PURPLE_BUDDY_IS_ONLINE(buddy)) {
MsimSession *session;
-
- session = (MsimSession *)buddy->account->gc->proto_data;
+ PurpleAccount *account = purple_buddy_get_account(buddy);
+ PurpleConnection *gc = purple_account_get_connection(account);
+
+ session = (MsimSession *)gc->proto_data;
g_return_if_fail(MSIM_SESSION_VALID(session));
@@ -1036,11 +1043,11 @@ 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);
@@ -1050,7 +1057,7 @@ msim_add_contact_from_server_cb(MsimSession *session, const MsimMessage *user_lo
user->id = uid;
/* Keep track of the user ID across sessions */
- purple_blist_node_set_int(&buddy->node, "UserID", uid);
+ purple_blist_node_set_int(PURPLE_BLIST_NODE(buddy), "UserID", uid);
/* Stores a few fields in the MsimUser, relevant to the buddy itself.
* AvatarURL, Headline, ContactID. */
@@ -1374,7 +1381,7 @@ msim_incoming_status(MsimSession *session, MsimMessage *msg)
user->id = msim_msg_get_integer(msg, "f");
/* Keep track of the user ID across sessions */
- purple_blist_node_set_int(&buddy->node, "UserID", user->id);
+ purple_blist_node_set_int(PURPLE_BLIST_NODE(buddy), "UserID", user->id);
msim_store_user_info(session, msg, NULL);
} else {
@@ -2628,10 +2635,14 @@ 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;
+
purple_debug_info("msim", "msim_add_buddy: want to add %s to %s\n",
- buddy->name, (group && group->name) ? group->name : "(no group)");
+ name, gname ? gname : "(no group)");
msg = msim_msg_new(
"addbuddy", MSIM_TYPE_BOOLEAN, TRUE,
@@ -2640,7 +2651,7 @@ 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;
@@ -2652,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(""),
@@ -2673,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);
@@ -2682,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);
}
/**
@@ -2694,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,
@@ -2703,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;
@@ -2722,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;
@@ -2734,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);
}
/**
@@ -2832,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.
@@ -3112,8 +3122,8 @@ msim_import_friends_cb(MsimSession *session, const MsimMessage *reply, gpointer
body = msim_msg_get_dictionary(reply, "body");
g_return_if_fail(body != NULL);
completed = msim_msg_get_string(body, "Completed");
- g_return_if_fail(body != NULL);
msim_msg_free(body);
+ g_return_if_fail(completed != NULL);
if (!g_str_equal(completed, "True"))
{
purple_debug_info("msim_import_friends_cb",
diff --git a/libpurple/protocols/myspace/user.c b/libpurple/protocols/myspace/user.c
index 86115d93e5..bdd53d084c 100644
--- a/libpurple/protocols/myspace/user.c
+++ b/libpurple/protocols/myspace/user.c
@@ -52,17 +52,14 @@ msim_get_user_from_buddy(PurpleBuddy *buddy)
return NULL;
}
- if (!buddy->proto_data) {
+ if (!(user = purple_buddy_get_protocol_data(buddy))) {
/* No MsimUser for this buddy; make one. */
user = g_new0(MsimUser, 1);
user->buddy = buddy;
- user->id = purple_blist_node_get_int((PurpleBlistNode*)buddy, "UserID");
- buddy->proto_data = (gpointer)user;
+ purple_buddy_set_protocol_data(buddy, user);
}
- user = (MsimUser *)(buddy->proto_data);
-
return user;
}
@@ -111,6 +108,7 @@ 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 +117,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 +209,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 +219,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 +247,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 +263,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 +287,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 +304,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 +366,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/zap.c b/libpurple/protocols/myspace/zap.c
index fdecee6c4c..a1501b28ef 100644
--- a/libpurple/protocols/myspace/zap.c
+++ b/libpurple/protocols/myspace/zap.c
@@ -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/novell.c b/libpurple/protocols/novell/novell.c
index 55d4a53ea2..50ca789452 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,7 +2542,7 @@ 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;
@@ -2554,22 +2558,22 @@ novell_add_buddy(PurpleConnection * gc, PurpleBuddy *buddy, PurpleGroup * group)
return;
contact = nm_create_contact();
- nm_contact_set_dn(contact, buddy->name);
+ nm_contact_set_dn(contact, purple_buddy_get_name(buddy));
/* Remove the PurpleBuddy (we will add it back after adding it
* to the server side list). Save the alias if there is one.
*/
alias = purple_buddy_get_alias(buddy);
- if (alias && strcmp(alias, buddy->name))
+ bname = purple_buddy_get_name(buddy);
+ if (alias && strcmp(alias, bname))
nm_contact_set_display_name(contact, alias);
purple_blist_remove_buddy(buddy);
buddy = NULL;
- if (strcmp(group->name, NM_ROOT_FOLDER_NAME) == 0) {
+ gname = purple_group_get_name(group);
+ if (strcmp(gname, NM_ROOT_FOLDER_NAME) == 0) {
gname = "";
- } else {
- gname = group->name;
}
folder = nm_find_folder(user, gname);
@@ -2603,11 +2607,10 @@ 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 +2640,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 +2687,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 +2782,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 +2799,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 +2825,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 +2929,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);
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 6515b56865..21d2f63caa 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);
@@ -1073,7 +1055,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 */
@@ -1130,24 +1112,24 @@ static PurplePluginProtocolInfo prpl_info =
NULL, /* whiteboard_prpl_ops */
NULL, /* send_raw */
NULL, /* roomlist_room_serialize */
- NULL, /* padding... */
- NULL,
- NULL,
- sizeof(PurplePluginProtocolInfo), /* struct_size */
- NULL
+ NULL, /* unregister_user */
+ NULL, /* send_attention */
+ NULL, /* attention_types */
+ sizeof(PurplePluginProtocolInfo), /* struct_size */
+ NULL, /* get_account_text_table */
};
static void nullprpl_init(PurplePlugin *plugin)
{
/* see accountopt.h for information about user splits and protocol options */
PurpleAccountUserSplit *split = purple_account_user_split_new(
- _("Example user split (unused)"), /* text shown to user */
- "default", /* default value */
- '@'); /* field separator */
+ _("Example user split"), /* text shown to user */
+ "default", /* default value */
+ '@'); /* field separator */
PurpleAccountOption *option = purple_account_option_string_new(
- _("Example option (unused)"), /* text shown to user */
- "example", /* pref name */
- "default"); /* default value */
+ _("Example option"), /* text shown to user */
+ "example", /* pref name */
+ "default"); /* default value */
purple_debug_info("nullprpl", "starting up\n");
@@ -1156,13 +1138,13 @@ 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 */
@@ -1189,12 +1171,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/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..9b8bbb5b8f 100644
--- a/libpurple/protocols/oscar/family_auth.c
+++ b/libpurple/protocols/oscar/family_auth.c
@@ -229,7 +229,7 @@ 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;
@@ -293,11 +293,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 +394,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 +421,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 +460,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 +527,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 +597,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_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..8bcb8c0955 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,35 @@ 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);
return 0;
}
- if (!(sn = snac2->data)) {
- purple_debug_misc("oscar", "faim: locate.c, error(): received response from request without a screen name!\n");
+ if (!(bn = snac2->data)) {
+ purple_debug_misc("oscar", "locate error: received response from request without a buddy name!\n");
return 0;
}
reason = byte_stream_get16(bs);
/*
- * Remove this screen name from our queue. If the client requested
+ * Remove this buddy name from our queue. If the client requested
* this buddy's info explicitly, then notify them that we do not have
* info for this buddy.
*/
- was_explicit = aim_locate_gotuserinfo(od, conn, sn);
+ was_explicit = aim_locate_gotuserinfo(od, conn, bn);
if (was_explicit == TRUE)
if ((userfunc = aim_callhandler(od, snac->family, snac->subtype)))
- ret = userfunc(od, conn, frame, reason, sn);
+ ret = userfunc(od, conn, frame, reason, bn);
if (snac2)
g_free(snac2->data);
@@ -1157,29 +1157,29 @@ 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 +1229,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 +1307,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 +1315,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 +1380,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 +1389,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/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 51dd59b732..661c7f9786 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);
@@ -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, *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;
+ bname = purple_buddy_get_name(b);
if (userinfo == NULL)
- userinfo = aim_locate_finduserinfo(od, b->name);
+ userinfo = aim_locate_finduserinfo(od, bname);
if (b == NULL)
- b = purple_find_buddy(account, userinfo->sn);
+ b = purple_find_buddy(account, userinfo->bn);
if (b != NULL) {
g = purple_buddy_get_group(b);
+ gname = purple_group_get_name(g);
presence = purple_buddy_get_presence(b);
status = purple_presence_get_active_status(presence);
}
if (userinfo != NULL)
- bi = g_hash_table_lookup(od->buddyinfo, purple_normalize(account, userinfo->sn));
+ bi = g_hash_table_lookup(od->buddyinfo, purple_normalize(account, userinfo->bn));
if ((bi != NULL) && (bi->ipaddr != 0)) {
tmp = g_strdup_printf("%hhu.%hhu.%hhu.%hhu",
@@ -969,8 +971,8 @@ 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];
@@ -1840,7 +1843,7 @@ straight_to_hell(gpointer data, gint source, const gchar *error_message)
pos->fd = source;
if (source < 0) {
- GHashTable *ui_info = purple_core_get_ui_info();
+ GHashTable *ui_info = purple_core_get_ui_info();
buf = g_strdup_printf(_("You may be disconnected shortly. "
"Check %s for updates."),
((ui_info && g_hash_table_lookup(ui_info, "website")) ? (char *)g_hash_table_lookup(ui_info, "website") : PURPLE_WEBSITE));
@@ -2099,7 +2102,7 @@ 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 +2116,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 +2142,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 +2167,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 +2183,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 +2191,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 +2211,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 +2251,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 +2271,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 +2291,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 +2307,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 +2317,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 +2337,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 +2375,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 +2394,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 +2446,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 +2456,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 +2494,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 +2531,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 +2544,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 +2594,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 +2604,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 +2616,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 +2730,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 +2946,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 +2955,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 +2964,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 +2973,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 +2982,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 +2991,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 +3113,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 +3141,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 +3158,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 +3184,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 +3245,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 +3279,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 +3305,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 +3329,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 +3450,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 +3473,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 +3542,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 +3550,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,12 +3566,13 @@ 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 (emailinfo->unread && havenewmail)
- purple_notify_emails(gc, emailinfo->nummsgs, FALSE, NULL, NULL, (const char **)&to, (const char **)&emailinfo->url, NULL, NULL);
+ if (account != NULL && emailinfo != NULL && emailinfo->unread && havenewmail) {
+ gchar *to = g_strdup_printf("%s%s%s",
+ purple_account_get_username(account),
+ emailinfo->domain ? "@" : "",
+ emailinfo->domain ? emailinfo->domain : "");
+ purple_notify_emails(gc, emailinfo->nummsgs, FALSE, NULL, NULL,
+ (const char **)&to, (const char **)&emailinfo->url, NULL, NULL);
g_free(to);
}
@@ -3574,12 +3585,12 @@ static int purple_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);
@@ -3594,7 +3605,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);
}
@@ -3604,7 +3615,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;
@@ -3651,14 +3662,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;
}
@@ -3718,7 +3729,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;
@@ -3733,7 +3744,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?
@@ -3842,13 +3853,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);
@@ -3871,12 +3882,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);
@@ -3910,13 +3922,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;
@@ -3980,9 +3992,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;
@@ -3999,7 +4011,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);
@@ -4008,7 +4020,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);
@@ -4043,7 +4055,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);
@@ -4079,7 +4091,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);
@@ -4113,7 +4125,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);
@@ -4243,7 +4255,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);
@@ -4251,15 +4263,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)) {
@@ -4301,7 +4313,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);
@@ -4313,7 +4325,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))
@@ -4323,7 +4335,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) {
@@ -4409,7 +4421,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);
@@ -4435,11 +4447,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) {
/*
@@ -4478,7 +4490,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) {
@@ -4553,17 +4565,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;
@@ -4623,9 +4635,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);
@@ -4635,14 +4647,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);
}
@@ -4688,7 +4700,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);
@@ -4722,7 +4734,7 @@ 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;
@@ -4854,7 +4866,7 @@ oscar_set_status_icq(PurpleAccount *account, PurpleStatus *status)
OscarData *od = NULL;
if (gc)
- od = (OscarData *)gc->proto_data;
+ od = purple_connection_get_protocol_data(gc);
if (!od)
return;
@@ -4884,14 +4896,14 @@ oscar_set_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)))
+ if (oscar_util_valid_name_icq(purple_account_get_username(account)))
oscar_set_status_icq(account, status);
}
#ifdef CRAZY_WARN
void
oscar_warn(PurpleConnection *gc, const char *name, gboolean anonymous) {
- OscarData *od = (OscarData *)gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(gc);
aim_im_warn(od, od->conn, name, anonymous ? AIM_WARN_ANON : 0);
}
#endif
@@ -4900,14 +4912,17 @@ 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);
@@ -4917,39 +4932,40 @@ 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))) {
+ if ((od->ssi.received_data) && !(aim_ssi_itemlist_finditem(od->ssi.local, gname, bname, AIM_SSI_TYPE_BUDDY))) {
purple_debug_info("oscar",
- "ssi: adding buddy %s to group %s\n", buddy->name, group->name);
- aim_ssi_addbuddy(od, buddy->name, group->name, NULL, purple_buddy_get_alias_only(buddy), NULL, NULL, 0);
+ "ssi: adding buddy %s to group %s\n", bname, gname);
+ aim_ssi_addbuddy(od, bname, gname, NULL, purple_buddy_get_alias_only(buddy), NULL, NULL, 0);
/* Mobile users should always be online */
- if (buddy->name[0] == '+') {
+ if (bname[0] == '+') {
purple_prpl_got_user_status(account,
- purple_buddy_get_name(buddy),
- OSCAR_STATUS_ID_AVAILABLE, NULL);
+ bname, OSCAR_STATUS_ID_AVAILABLE, NULL);
purple_prpl_got_user_status(account,
- purple_buddy_get_name(buddy),
- OSCAR_STATUS_ID_MOBILE, NULL);
+ bname, OSCAR_STATUS_ID_MOBILE, NULL);
}
}
/* XXX - Should this be done from AIM accounts, as well? */
if (od->icq)
- aim_icq_getalias(od, buddy->name);
+ aim_icq_getalias(od, bname);
}
void oscar_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) {
- OscarData *od = (OscarData *)gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(gc);
if (od->ssi.received_data) {
+ const char *gname = purple_group_get_name(group);
+ const char *bname = purple_buddy_get_name(buddy);
purple_debug_info("oscar",
- "ssi: deleting buddy %s from group %s\n", buddy->name, group->name);
- aim_ssi_delbuddy(od, buddy->name, group->name);
+ "ssi: deleting buddy %s from group %s\n", bname, gname);
+ aim_ssi_delbuddy(od, bname, gname);
}
}
void oscar_move_buddy(PurpleConnection *gc, const char *name, const char *old_group, const char *new_group) {
- OscarData *od = (OscarData *)gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(gc);
+
if (od->ssi.received_data && strcmp(old_group, new_group)) {
purple_debug_info("oscar",
"ssi: moving buddy %s from group %s to group %s\n", name, old_group, new_group);
@@ -4958,7 +4974,8 @@ void oscar_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) {
@@ -4973,10 +4990,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);
@@ -4986,25 +5004,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) {
@@ -5085,7 +5103,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,33 +5131,44 @@ static int purple_ssi_parselist(OscarData *od, FlapConnection *conn, FlapFrame *
/* Buddies */
cur = NULL;
if ((blist = purple_get_blist()) != NULL) {
- for (gnode = blist->root; gnode; gnode = gnode->next) {
+ for (gnode = purple_blist_get_root(); gnode;
+ gnode = purple_blist_node_get_sibling_next(gnode)) {
+ const char *gname;
if(!PURPLE_BLIST_NODE_IS_GROUP(gnode))
continue;
g = (PurpleGroup *)gnode;
- for (cnode = gnode->child; cnode; cnode = cnode->next) {
+ gname = purple_group_get_name(g);
+ for (cnode = purple_blist_node_get_first_child(gnode);
+ cnode;
+ cnode = purple_blist_node_get_sibling_next(cnode)) {
if(!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
continue;
- for (bnode = cnode->child; bnode; bnode = bnode->next) {
+ for (bnode = purple_blist_node_get_first_child(cnode);
+ bnode;
+ bnode = purple_blist_node_get_sibling_next(bnode)) {
+ const char *bname;
if(!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
continue;
b = (PurpleBuddy *)bnode;
- if (b->account == gc->account) {
- if (aim_ssi_itemlist_exists(od->ssi.local, b->name)) {
+ bname = purple_buddy_get_name(b);
+ if (purple_buddy_get_account(b) == account) {
+ if (aim_ssi_itemlist_exists(od->ssi.local, bname)) {
/* If the buddy is an ICQ user then load his nickname */
const char *servernick = purple_blist_node_get_string((PurpleBlistNode*)b, "servernick");
char *alias;
+ const char *balias;
if (servernick)
- serv_got_alias(gc, b->name, servernick);
+ serv_got_alias(gc, bname, servernick);
/* Store local alias on server */
- alias = aim_ssi_getalias(od->ssi.local, g->name, b->name);
- if (!alias && b->alias && strlen(b->alias))
- aim_ssi_aliasbuddy(od, g->name, b->name, b->alias);
+ alias = aim_ssi_getalias(od->ssi.local, gname, bname);
+ balias = purple_buddy_get_local_buddy_alias(b);
+ if (!alias && balias && *balias)
+ aim_ssi_aliasbuddy(od, gname, bname, balias);
g_free(alias);
} else {
purple_debug_info("oscar",
- "ssi: removing buddy %s from local list\n", b->name);
+ "ssi: removing buddy %s from local list\n", bname);
/* We can't actually remove now because it will screw up our looping */
cur = g_slist_prepend(cur, b);
}
@@ -5156,8 +5185,8 @@ 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;
@@ -5170,8 +5199,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;
@@ -5215,7 +5244,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;
@@ -5235,18 +5264,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)
{
@@ -5256,7 +5285,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);
@@ -5279,7 +5308,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;
@@ -5294,7 +5323,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);
@@ -5306,7 +5335,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,7 +5352,7 @@ static int purple_ssi_parselist(OscarData *od, FlapConnection *conn, FlapFrame *
"ssi: changing permdeny from %d to %hhu\n", account->perm_deny, permdeny);
account->perm_deny = permdeny;
if (od->icq && account->perm_deny == PURPLE_PRIVACY_ALLOW_USERS) {
- purple_presence_set_status_active(account->presence, OSCAR_STATUS_ID_INVISIBLE, TRUE);
+ purple_presence_set_status_active(purple_account_get_presence(account), OSCAR_STATUS_ID_INVISIBLE, TRUE);
}
}
}
@@ -5469,13 +5498,11 @@ purple_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);
}
}
@@ -5498,36 +5525,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));
@@ -5539,7 +5566,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;
@@ -5547,24 +5574,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);
@@ -5576,25 +5603,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 */
@@ -5613,17 +5640,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;
}
@@ -5672,7 +5701,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;
@@ -5707,7 +5736,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)
@@ -5727,14 +5756,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;
@@ -5801,30 +5832,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";
}
@@ -5838,14 +5871,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);
@@ -5853,9 +5888,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";
}
}
@@ -5878,15 +5913,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);
@@ -5907,15 +5944,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"));
@@ -6006,7 +6044,7 @@ 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);
if (od->ssi.received_data) {
switch (account->perm_deny) {
@@ -6033,28 +6071,28 @@ void oscar_set_permit_deny(PurpleConnection *gc) {
}
void oscar_add_permit(PurpleConnection *gc, const char *who) {
- OscarData *od = (OscarData *)gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(gc);
purple_debug_info("oscar", "ssi: About to add a permit\n");
if (od->ssi.received_data)
aim_ssi_addpermit(od, who);
}
void oscar_add_deny(PurpleConnection *gc, const char *who) {
- OscarData *od = (OscarData *)gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(gc);
purple_debug_info("oscar", "ssi: About to add a deny\n");
if (od->ssi.received_data)
aim_ssi_adddeny(od, who);
}
void oscar_rem_permit(PurpleConnection *gc, const char *who) {
- OscarData *od = (OscarData *)gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(gc);
purple_debug_info("oscar", "ssi: About to delete a permit\n");
if (od->ssi.received_data)
aim_ssi_delpermit(od, who);
}
void oscar_rem_deny(PurpleConnection *gc, const char *who) {
- OscarData *od = (OscarData *)gc->proto_data;
+ OscarData *od = purple_connection_get_protocol_data(gc);
purple_debug_info("oscar", "ssi: About to delete a deny\n");
if (od->ssi.received_data)
aim_ssi_deldeny(od, who);
@@ -6070,7 +6108,7 @@ 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 */
@@ -6136,24 +6174,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;
- if (!(b = purple_find_buddy(purple_connection_get_account(data->gc), data->name))) {
+ gc = data->gc;
+ od = purple_connection_get_protocol_data(gc);
+ account = purple_connection_get_account(gc);
+
+ b = purple_find_buddy(account, data->name);
+ if (b == NULL) {
oscar_free_name_data(data);
return;
}
- if (!(g = purple_buddy_get_group(b))) {
+ g = purple_buddy_get_group(b);
+ if (g == NULL) {
oscar_free_name_data(data);
return;
}
- aim_ssi_editcomment(od, g->name, data->name, text);
+ 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);
@@ -6169,23 +6216,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);
@@ -6193,7 +6244,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);
@@ -6225,26 +6276,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));
@@ -6260,9 +6313,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 *
@@ -6273,13 +6327,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),
@@ -6307,7 +6364,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)
@@ -6331,8 +6388,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),
@@ -6358,7 +6415,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;
@@ -6409,13 +6466,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);
@@ -6433,7 +6490,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) {
@@ -6447,7 +6504,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) {
@@ -6460,7 +6517,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) {
@@ -6486,29 +6543,40 @@ 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;
+ OscarData *od = purple_connection_get_protocol_data(gc);
gchar *nombre, *text, *tmp;
PurpleBlistNode *gnode, *cnode, *bnode;
+ PurpleAccount *account;
int num=0;
text = g_strdup("");
+ account = purple_connection_get_account(gc);
- for (gnode = purple_get_blist()->root; gnode; gnode = gnode->next) {
+ for (gnode = purple_blist_get_root(); gnode;
+ gnode = purple_blist_node_get_sibling_next(gnode)) {
PurpleGroup *group = (PurpleGroup *)gnode;
+ const char *gname;
if(!PURPLE_BLIST_NODE_IS_GROUP(gnode))
continue;
- for (cnode = gnode->child; cnode; cnode = cnode->next) {
+ gname = purple_group_get_name(group);
+ for (cnode = purple_blist_node_get_first_child(gnode);
+ cnode;
+ cnode = purple_blist_node_get_sibling_next(cnode)) {
if(!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
continue;
- for (bnode = cnode->child; bnode; bnode = bnode->next) {
+ for (bnode = purple_blist_node_get_first_child(cnode);
+ bnode;
+ bnode = purple_blist_node_get_sibling_next(bnode)) {
PurpleBuddy *buddy = (PurpleBuddy *)bnode;
+ const char *bname;
if(!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
continue;
- if (buddy->account == gc->account && aim_ssi_waitingforauth(od->ssi.local, group->name, buddy->name)) {
+ bname = purple_buddy_get_name(buddy);
+ if (purple_buddy_get_account(buddy) == account && aim_ssi_waitingforauth(od->ssi.local, gname, bname)) {
if (purple_buddy_get_alias_only(buddy))
- nombre = g_strdup_printf(" %s (%s)", buddy->name, purple_buddy_get_alias_only(buddy));
+ nombre = g_strdup_printf(" %s (%s)", bname, purple_buddy_get_alias_only(buddy));
else
- nombre = g_strdup_printf(" %s", buddy->name);
+ nombre = g_strdup_printf(" %s", bname);
tmp = g_strdup_printf("%s%s<br>", text, nombre);
g_free(text);
text = tmp;
@@ -6534,7 +6602,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);
}
@@ -6574,7 +6642,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);
@@ -6588,7 +6656,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);
@@ -6617,7 +6685,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)
@@ -6631,7 +6699,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;
}
@@ -6648,7 +6716,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);
@@ -6692,7 +6760,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;
@@ -6772,7 +6840,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);
@@ -6796,7 +6864,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)
@@ -6818,11 +6886,13 @@ oscar_normalize(const PurpleAccount *account, const char *str)
g_return_val_if_fail(str != NULL, NULL);
/* copy str to buf and skip all blanks */
- for (i=0, j=0; str[j] && i < BUF_LEN - 1; i++, j++)
- {
- while (str[j] == ' ')
- j++;
- buf[i] = str[j];
+ i = 0;
+ for (j = 0; str[j]; j++) {
+ if (str[j] != ' ') {
+ buf[i++] = str[j];
+ if (i >= BUF_LEN - 1)
+ break;
+ }
}
buf[i] = '\0';
@@ -6887,14 +6957,14 @@ 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) {
@@ -6927,9 +6997,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;
}
@@ -6959,7 +7029,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;
diff --git a/libpurple/protocols/oscar/oscar.h b/libpurple/protocols/oscar/oscar.h
index ce29d8e004..0b86cee965 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);
@@ -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);
diff --git a/libpurple/protocols/oscar/peer.c b/libpurple/protocols/oscar/peer.c
index f91989744e..b8c6f6bf9a 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 d6619d35fb..241f449dc6 100644
--- a/libpurple/protocols/qq/ChangeLog
+++ b/libpurple/protocols/qq/ChangeLog
@@ -1,3 +1,9 @@
+2009.02.25 - flos <lonicerae(at)gmail.com>
+ * Changed text 'ZipCode' to 'Postal Code'
+
+2009.02.24 - flos <lonicerae(at)gmail.com>
+ * NEVER forget our COPYRIGHT, ;)
+
2009.02.24 - flos <lonicerae(at)gmail.com>
* Changed update_class type from gint to guint32
* Fixed a bug of displaying of memo when memo is nothing
diff --git a/libpurple/protocols/qq/buddy_info.c b/libpurple/protocols/qq/buddy_info.c
index 5342907e02..f84fce81d0 100644
--- a/libpurple/protocols/qq/buddy_info.c
+++ b/libpurple/protocols/qq/buddy_info.c
@@ -614,7 +614,7 @@ static void update_buddy_info(PurpleConnection *gc, gchar **segments)
gchar *alias_utf8;
PurpleAccount *account = purple_connection_get_account(gc);
- qd = (qq_data *) gc->proto_data;
+ qd = (qq_data *)purple_connection_get_protocol_data(gc);
uid = strtoul(segments[QQ_INFO_UID], NULL, 10);
who = uid_to_purple_name(uid);
@@ -633,15 +633,16 @@ static void update_buddy_info(PurpleConnection *gc, gchar **segments)
buddy = purple_find_buddy(gc->account, who);
}
- if (buddy == NULL || buddy->proto_data == NULL) {
+ /* if the buddy is null, the api will catch it and return null here */
+ bd = purple_buddy_get_protocol_data(buddy);
+
+ if (buddy == NULL || bd) {
g_free(who);
g_free(alias_utf8);
return;
}
/* update buddy list (including myself, if myself is the buddy) */
- bd = (qq_buddy_data *)buddy->proto_data;
-
bd->age = strtol(segments[QQ_INFO_AGE], NULL, 10);
bd->gender = strtol(segments[QQ_INFO_GENDER], NULL, 10);
bd->face = strtol(segments[QQ_INFO_FACE], NULL, 10);
@@ -770,8 +771,7 @@ 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..e826354753 100644
--- a/libpurple/protocols/qq/buddy_list.c
+++ b/libpurple/protocols/qq/buddy_list.c
@@ -233,7 +233,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 +335,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 +343,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 +570,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 +662,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 +685,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_memo.c b/libpurple/protocols/qq/buddy_memo.c
index a890cba7d4..ac8b22399f 100644
--- a/libpurple/protocols/qq/buddy_memo.c
+++ b/libpurple/protocols/qq/buddy_memo.c
@@ -1,3 +1,27 @@
+/**
+ * @file buddy_memo.c
+ *
+ * purple
+ *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
#include "internal.h"
#include "debug.h"
#include "notify.h"
@@ -53,7 +77,7 @@ static const gchar *memo_txt[] = {
N_("Telephone"),
N_("Address"),
N_("Email"),
- N_("ZipCode"),
+ N_("Postal Code"),
N_("Note")
};
diff --git a/libpurple/protocols/qq/buddy_memo.h b/libpurple/protocols/qq/buddy_memo.h
index 9e5f0bc466..8ceb246f2e 100644
--- a/libpurple/protocols/qq/buddy_memo.h
+++ b/libpurple/protocols/qq/buddy_memo.h
@@ -1,3 +1,27 @@
+/**
+ * @file buddy_memo.h
+ *
+ * purple
+ *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
#ifndef _QQ_BUDDY_MEMO_H_
#define _QQ_BUDDY_MEMO_H_
diff --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 6d75d75de9..c4363bf826 100644
--- a/libpurple/protocols/qq/im.c
+++ b/libpurple/protocols/qq/im.c
@@ -718,7 +718,7 @@ void qq_got_message(PurpleConnection *gc, const gchar *msg)
qq_buddy_find_or_new(gc, qd->uid);
from = uid_to_purple_name(qd->uid);
- serv_got_im(gc, from, msg, PURPLE_MESSAGE_SYSTEM | PURPLE_MESSAGE_NOTIFY, now);
+ serv_got_im(gc, from, msg, PURPLE_MESSAGE_SYSTEM, now);
g_free(from);
}
@@ -788,7 +788,7 @@ 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..1fc436d22c 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";
}
@@ -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"),
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 a3c59a298b..5e35c3c3fe 100644
--- a/libpurple/protocols/sametime/sametime.c
+++ b/libpurple/protocols/sametime/sametime.c
@@ -663,7 +663,6 @@ static void blist_export(PurpleConnection *gc, struct mwSametimeList *stlist) {
*/
PurpleAccount *acct;
- PurpleBuddyList *blist;
PurpleBlistNode *gn, *cn, *bn;
PurpleGroup *grp;
PurpleBuddy *bdy;
@@ -674,10 +673,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 +699,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 +713,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 +817,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 +826,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 +891,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 +927,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 +1008,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 +1065,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 +1084,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 +1155,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 +1175,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 +1295,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 +1307,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 +1369,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 +1406,6 @@ static void services_starting(struct mwPurplePluginData *pd) {
PurpleConnection *gc;
PurpleAccount *acct;
struct mwStorageUnit *unit;
- PurpleBuddyList *blist;
PurpleBlistNode *l;
gc = pd->gc;
@@ -1399,8 +1416,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;
@@ -3239,10 +3256,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 +3316,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 +3338,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 +3350,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 +3400,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 +3414,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 +3434,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 +3454,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 +3491,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 +3512,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 +3540,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 +3562,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 +4203,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 +4346,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 +4431,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 +4532,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 +4585,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 +4610,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);
diff --git a/libpurple/protocols/silc/buddy.c b/libpurple/protocols/silc/buddy.c
index 112d796ddd..7b2a055ff2 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)
@@ -1395,31 +1402,33 @@ void silcpurple_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup
void silcpurple_send_buddylist(PurpleConnection *gc)
{
- PurpleBuddyList *blist;
PurpleBlistNode *gnode, *cnode, *bnode;
PurpleBuddy *buddy;
PurpleAccount *account;
account = purple_connection_get_account(gc);
- if ((blist = purple_get_blist()) != NULL)
+ for (gnode = purple_blist_get_root();
+ gnode != NULL;
+ gnode = purple_blist_node_get_sibling_next(gnode))
{
- for (gnode = blist->root; gnode != NULL; gnode = gnode->next)
+ if (!PURPLE_BLIST_NODE_IS_GROUP(gnode))
+ continue;
+ for (cnode = purple_blist_node_get_first_child(gnode);
+ cnode != NULL;
+ cnode = purple_blist_node_get_sibling_next(cnode))
{
- if (!PURPLE_BLIST_NODE_IS_GROUP(gnode))
+ if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
continue;
- for (cnode = gnode->child; cnode != NULL; cnode = cnode->next)
+ for (bnode = purple_blist_node_get_first_child(cnode);
+ bnode != NULL;
+ bnode = purple_blist_node_get_sibling_next(bnode))
{
- if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
+ if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
continue;
- for (bnode = cnode->child; bnode != NULL; bnode = bnode->next)
- {
- if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
- continue;
- buddy = (PurpleBuddy *)bnode;
- if (purple_buddy_get_account(buddy) == account)
- silcpurple_add_buddy_i(gc, buddy, TRUE);
- }
+ buddy = (PurpleBuddy *)bnode;
+ if (purple_buddy_get_account(buddy) == account)
+ silcpurple_add_buddy_i(gc, buddy, TRUE);
}
}
}
@@ -1428,7 +1437,7 @@ void silcpurple_send_buddylist(PurpleConnection *gc)
void silcpurple_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy,
PurpleGroup *group)
{
- silc_free(buddy->proto_data);
+ silc_free(purple_buddy_get_protocol_data(buddy));
}
void silcpurple_idle_set(PurpleConnection *gc, int idle)
@@ -1469,10 +1478,12 @@ 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 +1544,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 +1623,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 +1646,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 +1659,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..649b9b8afc 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;
@@ -856,19 +857,22 @@ 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) {
+ for (gnode = purple_blist_get_root(); gnode;
+ gnode = purple_blist_node_get_sibling_next(gnode)) {
if (!PURPLE_BLIST_NODE_IS_GROUP(gnode))
continue;
- for (cnode = gnode->child; cnode; cnode = cnode->next) {
+ for (cnode = purple_blist_node_get_first_child(gnode);
+ cnode;
+ cnode = purple_blist_node_get_sibling_next(cnode)) {
if( !PURPLE_BLIST_NODE_IS_CONTACT(cnode))
continue;
- for (bnode = cnode->child; bnode;
- bnode = bnode->next) {
+ for (bnode = purple_blist_node_get_first_child(cnode);
+ bnode;
+ bnode = purple_blist_node_get_sibling_next(bnode)) {
if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
continue;
b = (PurpleBuddy *)bnode;
- if (b->account != gc->account)
+ if (purple_buddy_get_account(b) != account)
continue;
f = purple_blist_node_get_string(bnode, "public-key");
if (f && !strcmp(f, buf))
@@ -889,9 +893,9 @@ silc_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/simple/simple.c b/libpurple/protocols/simple/simple.c
index 2ce022f550..8eb9060cb9 100644
--- a/libpurple/protocols/simple/simple.c
+++ b/libpurple/protocols/simple/simple.c
@@ -196,33 +196,41 @@ 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;
+ PurpleAccount *account;
purple_debug_info("simple", "simple_get_buddies\n");
- for(gnode = purple_get_blist()->root; gnode; gnode = gnode->next) {
+ account = purple_connection_get_account(gc);
+ for(gnode = purple_blist_get_root(); gnode;
+ gnode = purple_blist_node_get_sibling_next(gnode)) {
if(!PURPLE_BLIST_NODE_IS_GROUP(gnode)) continue;
- for(cnode = gnode->child; cnode; cnode = cnode->next) {
+ for(cnode = purple_blist_node_get_first_child(gnode);
+ cnode;
+ cnode = purple_blist_node_get_sibling_next(cnode)) {
if(!PURPLE_BLIST_NODE_IS_CONTACT(cnode)) continue;
- for(bnode = cnode->child; bnode; bnode = bnode->next) {
+ for(bnode = purple_blist_node_get_first_child(cnode);
+ bnode;
+ bnode = purple_blist_node_get_sibling_next(bnode)) {
if(!PURPLE_BLIST_NODE_IS_BUDDY(bnode)) continue;
- if(((PurpleBuddy*)bnode)->account == gc->account)
+ if(purple_buddy_get_account((PurpleBuddy*)bnode) == account)
simple_add_buddy(gc, (PurpleBuddy*)bnode, (PurpleGroup *)gnode);
}
}
@@ -231,9 +239,10 @@ static void simple_get_buddies(PurpleConnection *gc) {
static void simple_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
{
+ const char *name = purple_buddy_get_name(buddy);
struct simple_account_data *sip = (struct simple_account_data *)gc->proto_data;
- struct simple_buddy *b = g_hash_table_lookup(sip->buddies, buddy->name);
- g_hash_table_remove(sip->buddies, buddy->name);
+ struct simple_buddy *b = g_hash_table_lookup(sip->buddies, name);
+ g_hash_table_remove(sip->buddies, name);
g_free(b->name);
g_free(b);
}
@@ -922,7 +931,7 @@ 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);
diff --git a/libpurple/protocols/toc/toc.c b/libpurple/protocols/toc/toc.c
index 95b9d926b2..e89a5d7bb0 100644
--- a/libpurple/protocols/toc/toc.c
+++ b/libpurple/protocols/toc/toc.c
@@ -119,7 +119,7 @@ struct signon {
#define TOC_CONNECT_STEPS 3
-static void toc_login_callback(gpointer, gint, PurpleInputCondition);
+static void toc_login_callback(gpointer, gint, const gchar *);
static void toc_callback(gpointer, gint, PurpleInputCondition);
/* ok. this function used to take username/password, and return 0 on success.
@@ -152,7 +152,7 @@ static void toc_login(PurpleAccount *account)
}
}
-static void toc_login_callback(gpointer data, gint source, PurpleInputCondition cond)
+static void toc_login_callback(gpointer data, gint source, const gchar *error_message)
{
PurpleConnection *gc = data;
struct toc_data *tdt;
@@ -260,7 +260,8 @@ static void toc_build_config(PurpleAccount *account, char *s, int len, gboolean
}
}
-char *escape_message(const char *msg)
+static char *
+escape_message(const char *msg)
{
char *ret;
int i, j;
@@ -305,7 +306,8 @@ char *escape_message(const char *msg)
* Duplicates the input string, replacing each \n with a <BR>, and
* escaping a few other characters.
*/
-char *escape_text(const char *msg)
+static char *
+escape_text(const char *msg)
{
char *ret;
int i, j;
@@ -435,7 +437,7 @@ static int wait_reply(PurpleConnection *gc, char *buffer, size_t buflen)
if (buflen < ntohs(hdr->len)) {
/* fake like there's a read error */
purple_debug(PURPLE_DEBUG_ERROR, "toc",
- "buffer too small (have %d, need %d)\n",
+ "buffer too small (have %" G_GSIZE_FORMAT ", need %d)\n",
buflen, ntohs(hdr->len));
return -1;
}
diff --git a/libpurple/protocols/yahoo/yahoo.c b/libpurple/protocols/yahoo/yahoo.c
index 7d4fe1d45f..166dc0f454 100644
--- a/libpurple/protocols/yahoo/yahoo.c
+++ b/libpurple/protocols/yahoo/yahoo.c
@@ -385,7 +385,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);
@@ -423,7 +423,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);
}
}
@@ -2027,21 +2028,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) {
@@ -3128,11 +3131,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";
}
@@ -3192,7 +3196,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;
@@ -3204,7 +3208,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) {
@@ -3213,9 +3217,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) {
@@ -3233,10 +3237,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;
@@ -3258,8 +3262,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"));
@@ -3288,8 +3294,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 {
@@ -3340,7 +3348,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);
}
@@ -3354,9 +3362,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) {
@@ -3400,9 +3408,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)
@@ -3410,12 +3419,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"),
@@ -3942,19 +3951,20 @@ static void yahoo_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGrou
const char *group = NULL;
char *group2;
YahooFriend *f;
+ const char *bname;
if (!yd->logged_in)
return;
- if (!purple_privacy_check(purple_connection_get_account(gc),
- purple_buddy_get_name(buddy)))
+ bname = purple_buddy_get_name(buddy);
+ if (!purple_privacy_check(purple_connection_get_account(gc), bname))
return;
- f = yahoo_friend_find(gc, purple_buddy_get_name(buddy));
+ f = yahoo_friend_find(gc, bname);
g = purple_buddy_get_group(buddy);
if (g)
- group = g->name;
+ group = purple_group_get_name(g);
else
group = "Buddies";
@@ -3967,7 +3977,7 @@ static void yahoo_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGrou
1, purple_connection_get_display_name(gc),
302, "319",
300, "319",
- 7, buddy->name,
+ 7, bname,
334, "0",
301, "319",
303, "319"
@@ -3981,19 +3991,22 @@ 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;
- if (!(yahoo_friend_find(gc, buddy->name)))
+ bname = purple_buddy_get_name(buddy);
+ if (!(yahoo_friend_find(gc, bname)))
return;
- buddies = purple_find_buddies(purple_connection_get_account(gc), buddy->name);
+ gname = purple_group_get_name(group);
+ buddies = purple_find_buddies(purple_connection_get_account(gc), bname);
for (l = buddies; l; l = l->next) {
g = purple_buddy_get_group(l->data);
- if (purple_utf8_strcasecmp(group->name, g->name)) {
+ if (purple_utf8_strcasecmp(gname, purple_group_get_name(g))) {
remove = FALSE;
break;
}
@@ -4002,12 +4015,12 @@ 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);
+ 7, bname, 65, cg);
yahoo_packet_send_and_free(pkt, yd);
g_free(cg);
}
@@ -4116,7 +4129,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);
@@ -4271,7 +4284,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;
diff --git a/libpurple/protocols/yahoo/yahoo_picture.c b/libpurple/protocols/yahoo/yahoo_picture.c
index e91995011d..0f006fa442 100644
--- a/libpurple/protocols/yahoo/yahoo_picture.c
+++ b/libpurple/protocols/yahoo/yahoo_picture.c
@@ -569,7 +569,7 @@ 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;
}
diff --git a/libpurple/protocols/yahoo/yahoo_profile.c b/libpurple/protocols/yahoo/yahoo_profile.c
index 5a3ac178f3..3abd1d950d 100644
--- a/libpurple/protocols/yahoo/yahoo_profile.c
+++ b/libpurple/protocols/yahoo/yahoo_profile.c
@@ -699,8 +699,9 @@ 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);
+ const char *balias = purple_buddy_get_local_buddy_alias(b);
+ if(balias && balias[0]) {
+ char *aliastext = g_markup_escape_text(balias, -1);
purple_notify_user_info_add_pair(user_info, _("Alias"), aliastext);
g_free(aliastext);
}
@@ -715,7 +716,7 @@ 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);
@@ -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. "
diff --git a/libpurple/protocols/yahoo/yahoochat.c b/libpurple/protocols/yahoo/yahoochat.c
index b4ca3b38fa..7abfc868e1 100644
--- a/libpurple/protocols/yahoo/yahoochat.c
+++ b/libpurple/protocols/yahoo/yahoochat.c
@@ -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;
diff --git a/libpurple/protocols/zephyr/zephyr.c b/libpurple/protocols/zephyr/zephyr.c
index a26292ecc7..cc549e5ae2 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);
@@ -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 ? b->name : user));
+ purple_notify_user_info_add_pair(user_info, _("User"), (b ? bname : 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)) {
@@ -1246,38 +1256,44 @@ static gint check_notify_zeph02(gpointer data)
static gint check_loc(gpointer_data)
{
- PurpleBlistNode *gnode, *cnode, *bnode;
- ZLocations_t locations;
- int numlocs;
- int one = 1;
+ PurpleBlistNode *gnode, *cnode, *bnode;
+ ZLocations_t locations;
+ int numlocs;
+ int one = 1;
- for (gnode = purple_get_blist()->root; gnode; gnode = gnode->next) {
+ for (gnode = purple_blist_get_root(); gnode;
+ gnode = purple_blist_node_get_sibling_next(gnode)) {
if (!PURPLE_BLIST_NODE_IS_GROUP(gnode))
continue;
- for (cnode = gnode->child; cnode; cnode = cnode->next) {
+ for (cnode = purple_blist_node_get_first_child(gnode);
+ cnode;
+ cnode = purple_blist_node_get_sibling_next(cnode)) {
if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
continue;
- for (bnode = cnode->child; bnode; bnode = bnode->next) {
+ for (bnode = purple_blist_node_get_first_child(cnode);
+ bnode;
+ bnode = purple_blist_node_get_sibling_next(bnode)) {
PurpleBuddy *b = (PurpleBuddy *) bnode;
if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
continue;
- if (b->account->gc == zgc) {
+ if (purple_buddy_get_account(b)->gc == zgc) {
char *chk;
- chk = local_zephyr_normalize(b->name);
- ZLocateUser(chk,&numlocs, ZAUTH);
- if (numlocs) {
- int i;
- for(i=0;i<numlocs;i++) {
- ZGetLocations(&locations,&one);
- serv_got_update(zgc,b->name,1,0,0,0,0);
- }
- }
- }
- }
- }
- }
- return TRUE;
+ const char *bname = purple_buddy_get_name(b);
+ chk = local_zephyr_normalize(bname);
+ ZLocateUser(chk,&numlocs, ZAUTH);
+ if (numlocs) {
+ int i;
+ for(i=0;i<numlocs;i++) {
+ ZGetLocations(&locations,&one);
+ serv_got_update(zgc,bname,1,0,0,0,0);
+ }
+ }
+ }
+ }
+ }
+ }
+ return TRUE;
}
#else
@@ -1288,6 +1304,7 @@ static gint check_loc(gpointer data)
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,22 +1312,28 @@ static gint check_loc(gpointer data)
ald.version = NULL;
}
- for (gnode = purple_get_blist()->root; gnode; gnode = gnode->next) {
+ for (gnode = purple_blist_get_root(); gnode;
+ gnode = purple_blist_node_get_sibling_next(gnode)) {
if (!PURPLE_BLIST_NODE_IS_GROUP(gnode))
continue;
- for (cnode = gnode->child; cnode; cnode = cnode->next) {
+ for (cnode = purple_blist_node_get_first_child(gnode);
+ cnode;
+ cnode = purple_blist_node_get_sibling_next(cnode)) {
if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
continue;
- for (bnode = cnode->child; bnode; bnode = bnode->next) {
+ for (bnode = purple_blist_node_get_first_child(cnode);
+ bnode;
+ bnode = purple_blist_node_get_sibling_next(bnode)) {
PurpleBuddy *b = (PurpleBuddy *) bnode;
if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
continue;
- if (b->account->gc == gc) {
+ if (purple_buddy_get_account(b) == account) {
const char *chk;
+ const char *name = purple_buddy_get_name(b);
- chk = local_zephyr_normalize(zephyr,b->name);
- purple_debug_info("zephyr","chk: %s b->name %s\n",chk,b->name);
+ chk = local_zephyr_normalize(zephyr,name);
+ purple_debug_info("zephyr","chk: %s b->name %s\n",chk,name);
/* XXX add real error reporting */
/* doesn't matter if this fails or not; we'll just move on to the next one */
if (use_zeph02(zephyr)) {
@@ -1323,9 +1346,9 @@ static gint check_loc(gpointer data)
for(i=0;i<numlocs;i++) {
ZGetLocations(&locations,&one);
if (nlocs>0)
- purple_prpl_got_user_status(gc->account,b->name,"available",NULL);
+ purple_prpl_got_user_status(account,name,"available",NULL);
else
- purple_prpl_got_user_status(gc->account,b->name,"offline",NULL);
+ purple_prpl_got_user_status(account,name,"offline",NULL);
}
}
#else
@@ -1936,6 +1959,7 @@ static void write_anyone(PurpleConnection *gc)
PurpleBuddy *b;
char *fname;
FILE *fd;
+ PurpleAccount *account;
zephyr_account* zephyr = gc->proto_data;
fname = g_strdup_printf("%s/.anyone", purple_home_dir());
fd = g_fopen(fname, "w");
@@ -1944,18 +1968,25 @@ static void write_anyone(PurpleConnection *gc)
return;
}
- for (gnode = purple_get_blist()->root; gnode; gnode = gnode->next) {
+ account = purple_connection_get_account(gc);
+ for (gnode = purple_blist_get_root();
+ gnode;
+ gnode = purple_blist_node_get_sibling_next(gnode)) {
if (!PURPLE_BLIST_NODE_IS_GROUP(gnode))
continue;
- for (cnode = gnode->child; cnode; cnode = cnode->next) {
+ for (cnode = purple_blist_node_get_first_child(gnode);
+ cnode;
+ cnode = purple_blist_node_get_sibling_next(cnode)) {
if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
continue;
- for (bnode = cnode->child; bnode; bnode = bnode->next) {
+ for (bnode = purple_blist_node_get_first_child(cnode);
+ bnode;
+ bnode = purple_blist_node_get_sibling_next(bnode)) {
if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
continue;
b = (PurpleBuddy *) bnode;
- if (b->account == gc->account) {
- gchar *stripped_user = zephyr_strip_local_realm(zephyr,b->name);
+ if (purple_buddy_get_account(b) == account) {
+ gchar *stripped_user = zephyr_strip_local_realm(zephyr, purple_buddy_get_name(b));
fprintf(fd, "%s\n", stripped_user);
g_free(stripped_user);
}
@@ -2498,26 +2529,31 @@ 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;
diff --git a/libpurple/proxy.c b/libpurple/proxy.c
index 03d798e631..fb51fe14c5 100644
--- a/libpurple/proxy.c
+++ b/libpurple/proxy.c
@@ -207,6 +207,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 +238,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 +273,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;
@@ -2300,31 +2310,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..6cff7b46e7 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);
+
/*@}*/
/**************************************************************************/
diff --git a/libpurple/prpl.c b/libpurple/prpl.c
index bbb1ec66f0..de44d2765a 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;
}
@@ -400,7 +400,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 +425,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",
@@ -511,7 +511,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..c43e003759 100644
--- a/libpurple/prpl.h
+++ b/libpurple/prpl.h
@@ -178,9 +178,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 +213,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.
*
@@ -413,7 +415,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);
@@ -594,7 +596,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 +608,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 +618,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 +629,14 @@ 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 a user's idle state and time have changed.
+ * Notifies Purple that a buddy's idle state and time have changed.
*
* This is meant to be called from protocol plugins.
*
* @param account The account the user is on.
- * @param name The screen name of the user.
+ * @param name The name of the buddy.
* @param idle The user's idle state.
* @param idle_time The user's idle time. This is the time at
* which the user became idle, in seconds since
@@ -644,24 +647,24 @@ 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 +673,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,37 +706,43 @@ 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);
diff --git a/libpurple/purple-remote b/libpurple/purple-remote
index 4ff2a19fcc..89fa0a1714 100755
--- a/libpurple/purple-remote
+++ b/libpurple/purple-remote
@@ -61,6 +61,8 @@ Examples of commands:
jabber:addbuddy?screenname=my friend
setstatus?status=away&message=don't disturb
+ getstatus
+ getstatusmessage
quit
PurpleAccountsFindConnected?name=&protocol=prpl-jabber
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/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..2f7baf1a3a 100644
--- a/libpurple/savedstatuses.c
+++ b/libpurple/savedstatuses.c
@@ -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");
@@ -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 2b223acf94..6b04e1f495 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;
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..f3f4b19856 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 */
diff --git a/libpurple/signals.h b/libpurple/signals.h
index 3a104c15fa..77352a042b 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.
*
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/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..3c40a462c2
--- /dev/null
+++ b/libpurple/sound-theme.h
@@ -0,0 +1,105 @@
+/**
+ * @file sound-theme.h Purple Sound Theme Abstact Class API
+ */
+
+/* purple
+ *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#ifndef PURPLE_SOUND_THEME_H
+#define PURPLE_SOUND_THEME_H
+
+#include <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 event The purple sound event to look up.
+ *
+ * @returns The filename of the sound event.
+ */
+const gchar *purple_sound_theme_get_file(PurpleSoundTheme *theme,
+ const gchar *event);
+
+/**
+ * Returns a copy of the directory and filename for the sound event
+ *
+ * @param event The purple sound event to look up
+ *
+ * @returns The directory + '/' + filename of the sound event. This is
+ * a newly allocated string that should be freed with g_free.
+ */
+gchar *purple_sound_theme_get_file_full(PurpleSoundTheme *theme,
+ const gchar *event);
+
+/**
+ * Sets the filename for a given sound event
+ *
+ * @param event the purple sound event to look up
+ * @param filename the name of the file to be used for the event
+ */
+void purple_sound_theme_set_file(PurpleSoundTheme *theme,
+ const gchar *event,
+ const gchar *filename);
+
+G_END_DECLS
+#endif /* PURPLE_SOUND_THEME_H */
diff --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..9e39601241 100644
--- a/libpurple/stun.c
+++ b/libpurple/stun.c
@@ -388,9 +388,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/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..8cd82155c3
--- /dev/null
+++ b/libpurple/theme-loader.h
@@ -0,0 +1,92 @@
+/**
+ * @file theme-loader.h Purple Theme Loader Abstact Class API
+ */
+
+/* purple
+ *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#ifndef PURPLE_THEME_LOADER_H
+#define PURPLE_THEME_LOADER_H
+
+#include <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 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..1843692f28
--- /dev/null
+++ b/libpurple/theme-manager.c
@@ -0,0 +1,295 @@
+/*
+ * Themes for libpurple
+ *
+ * Pidgin is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#include <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);
+
+ 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..96e0a6986d
--- /dev/null
+++ b/libpurple/theme-manager.h
@@ -0,0 +1,131 @@
+/**
+ * @file thememanager.h Theme Manager API
+ */
+
+/*
+ * purple
+ *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#ifndef PURPLE_THEME_MANAGER_H
+#define PURPLE_THEME_MANAGER_H
+
+#include <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..2560cf2548
--- /dev/null
+++ b/libpurple/theme.c
@@ -0,0 +1,408 @@
+/*
+ * Themes for libpurple
+ *
+ * Pidgin is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#include <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 = g_markup_escape_text(text, -1);
+ g_strdelimit(clean_text, "\n", ' ');
+ purple_str_strip_char(clean_text, '\r');
+ return clean_text;
+}
+
+/*****************************************************************************
+ * Public API function
+ *****************************************************************************/
+
+const gchar *
+purple_theme_get_name(PurpleTheme *theme)
+{
+ PurpleThemePrivate *priv;
+
+ g_return_val_if_fail(PURPLE_IS_THEME(theme), NULL);
+
+ priv = PURPLE_THEME_GET_PRIVATE(theme);
+ return priv->name;
+}
+
+void
+purple_theme_set_name(PurpleTheme *theme, const gchar *name)
+{
+ PurpleThemePrivate *priv;
+
+ g_return_if_fail(PURPLE_IS_THEME(theme));
+
+ priv = PURPLE_THEME_GET_PRIVATE(theme);
+
+ g_free(priv->name);
+ priv->name = theme_clean_text(name);
+}
+
+const gchar *
+purple_theme_get_description(PurpleTheme *theme)
+{
+ PurpleThemePrivate *priv;
+
+ g_return_val_if_fail(PURPLE_IS_THEME(theme), NULL);
+
+ priv = PURPLE_THEME_GET_PRIVATE(theme);
+ return priv->description;
+}
+
+void
+purple_theme_set_description(PurpleTheme *theme, const gchar *description)
+{
+ PurpleThemePrivate *priv;
+
+ g_return_if_fail(PURPLE_IS_THEME(theme));
+
+ priv = PURPLE_THEME_GET_PRIVATE(theme);
+
+ g_free(priv->description);
+ priv->description = theme_clean_text(description);
+}
+
+const gchar *
+purple_theme_get_author(PurpleTheme *theme)
+{
+ PurpleThemePrivate *priv;
+
+ g_return_val_if_fail(PURPLE_IS_THEME(theme), NULL);
+
+ priv = PURPLE_THEME_GET_PRIVATE(theme);
+ return priv->author;
+}
+
+void
+purple_theme_set_author(PurpleTheme *theme, const gchar *author)
+{
+ PurpleThemePrivate *priv;
+
+ g_return_if_fail(PURPLE_IS_THEME(theme));
+
+ priv = PURPLE_THEME_GET_PRIVATE(theme);
+
+ g_free(priv->author);
+ priv->author = theme_clean_text(author);
+}
+
+const gchar *
+purple_theme_get_type_string(PurpleTheme *theme)
+{
+ PurpleThemePrivate *priv;
+
+ g_return_val_if_fail(PURPLE_IS_THEME(theme), NULL);
+
+ priv = PURPLE_THEME_GET_PRIVATE(theme);
+ return priv->type;
+}
+
+/* < private > */
+void
+purple_theme_set_type_string(PurpleTheme *theme, const gchar *type)
+{
+ PurpleThemePrivate *priv;
+
+ g_return_if_fail(PURPLE_IS_THEME(theme));
+
+ priv = PURPLE_THEME_GET_PRIVATE(theme);
+
+ g_free(priv->type);
+ priv->type = g_strdup(type);
+}
+
+const gchar *
+purple_theme_get_dir(PurpleTheme *theme)
+{
+ PurpleThemePrivate *priv;
+
+ g_return_val_if_fail(PURPLE_IS_THEME(theme), NULL);
+
+ priv = PURPLE_THEME_GET_PRIVATE(theme);
+ return priv->dir;
+}
+
+void
+purple_theme_set_dir(PurpleTheme *theme, const gchar *dir)
+{
+ PurpleThemePrivate *priv;
+
+ g_return_if_fail(PURPLE_IS_THEME(theme));
+
+ priv = PURPLE_THEME_GET_PRIVATE(theme);
+
+ g_free(priv->dir);
+ priv->dir = g_strdup(dir);
+}
+
+const gchar *
+purple_theme_get_image(PurpleTheme *theme)
+{
+ PurpleThemePrivate *priv;
+
+ g_return_val_if_fail(PURPLE_IS_THEME(theme), NULL);
+
+ priv = PURPLE_THEME_GET_PRIVATE(theme);
+
+ return priv->img;
+}
+
+gchar *
+purple_theme_get_image_full(PurpleTheme *theme)
+{
+ const gchar *filename = purple_theme_get_image(theme);
+
+ g_return_val_if_fail(filename, NULL);
+
+ return g_build_filename(purple_theme_get_dir(PURPLE_THEME(theme)), filename, NULL);
+}
+
+void
+purple_theme_set_image(PurpleTheme *theme, const gchar *img)
+{
+ PurpleThemePrivate *priv;
+
+ g_return_if_fail(PURPLE_IS_THEME(theme));
+
+ priv = PURPLE_THEME_GET_PRIVATE(theme);
+
+ g_free(priv->img);
+ priv->img = g_strdup(img);
+}
diff --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..6d91061db8 100644
--- a/libpurple/upnp.c
+++ b/libpurple/upnp.c
@@ -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 c9aa7648a5..ac7598e317 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. */
}
@@ -1409,7 +1409,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 ||
@@ -2693,7 +2693,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 +2774,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");
}
/*
@@ -3012,7 +2949,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 +2990,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 +3115,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
}
@@ -4764,7 +4712,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..b68c746706 100644
--- a/libpurple/util.h
+++ b/libpurple/util.h
@@ -775,6 +775,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
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/xmlnode.c b/libpurple/xmlnode.c
index bcfea76b0b..fc2fc37b36 100644
--- a/libpurple/xmlnode.c
+++ b/libpurple/xmlnode.c
@@ -129,7 +129,7 @@ xmlnode_remove_attrib(xmlnode *node, const char *attr)
for(attr_node = node->child; attr_node; attr_node = attr_node->next)
{
if(attr_node->type == XMLNODE_TYPE_ATTRIB &&
- !strcmp(attr_node->name, attr))
+ purple_strequal(attr_node->name, attr))
{
if(sibling == NULL) {
node->child = attr_node->next;
@@ -146,20 +146,6 @@ xmlnode_remove_attrib(xmlnode *node, const char *attr)
}
}
-/* Compare two nullable xmlns strings.
- * They are considered equal if they're both NULL or the strings are equal
- */
-static gboolean _xmlnode_compare_xmlns(const char *xmlns1, const char *xmlns2) {
- gboolean equal = FALSE;
-
- if (xmlns1 == NULL && xmlns2 == NULL)
- equal = TRUE;
- else if (xmlns1 != NULL && xmlns2 != NULL && !strcmp(xmlns1, xmlns2))
- equal = TRUE;
-
- return equal;
-}
-
void
xmlnode_remove_attrib_with_namespace(xmlnode *node, const char *attr, const char *xmlns)
{
@@ -171,8 +157,8 @@ 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;
@@ -252,7 +238,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 +256,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;
}
}
@@ -382,8 +368,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;
}
@@ -471,7 +457,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);
@@ -642,7 +628,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;
@@ -730,6 +716,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)
{
@@ -794,8 +852,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..bab8192d13 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
@@ -297,6 +299,22 @@ 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 str The string of xml.
+ * @param description The description of the file being parsed
+ * @process The utility that is calling xmlnode_from_file
+ *
+ * @return The new node.
+ *
+ * @since 2.6.0
+ */
+xmlnode *xmlnode_from_file(const char *dir, const char *filename,
+ const char *description, const char *process);
+
#ifdef __cplusplus
}
#endif
diff --git a/pidgin/Makefile.am b/pidgin/Makefile.am
index 450d19bbbb..b56f48bfb0 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,6 +96,8 @@ pidgin_SOURCES = \
gtkeventloop.c \
gtkexpander.c \
gtkft.c \
+ gtkicon-theme.c \
+ gtkicon-theme-loader.c \
gtkidle.c \
gtkimhtml.c \
gtkimhtmltoolbar.c \
@@ -116,6 +120,7 @@ pidgin_SOURCES = \
gtksourceiter.c \
gtksourceundomanager.c \
gtksourceview-marshal.c \
+ gtkstatus-icon-theme.c \
gtkstatusbox.c \
gtkthemes.c \
gtkutils.c \
@@ -127,6 +132,8 @@ pidgin_headers = \
eggtrayicon.h \
gtkaccount.h \
gtkblist.h \
+ gtkblist-theme.h \
+ gtkblist-theme-loader.h \
gtkcelllayout.h \
gtkcellrendererexpander.h \
gtkcellrendererprogress.h \
@@ -146,6 +153,8 @@ pidgin_headers = \
gtkeventloop.h \
gtkexpander.h \
gtkft.h \
+ gtkicon-theme.h \
+ gtkicon-theme-loader.h \
gtkidle.h \
gtkgaim-compat.h \
gtkimhtml.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..dbe6a35c7d 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,6 +70,8 @@ PIDGIN_C_SRC = \
gtkeventloop.c \
gtkexpander.c \
gtkft.c \
+ gtkicon-theme.c \
+ gtkicon-theme-loader.c \
gtkidle.c \
gtkimhtml.c \
gtkimhtmltoolbar.c \
@@ -88,6 +92,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..d246c49028 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)
@@ -458,9 +458,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 +514,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 +526,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 +576,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..01475a9a48 100644
--- a/pidgin/eggtrayicon.h
+++ b/pidgin/eggtrayicon.h
@@ -33,7 +33,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 +42,7 @@ struct _EggTrayIcon
GtkPlug parent_instance;
guint stamp;
-
+
Atom selection_atom;
Atom manager_atom;
Atom system_tray_opcode_atom;
@@ -74,7 +74,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 586b41c3ae..a5f0a85fe9 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;
@@ -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;
@@ -256,7 +256,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 +275,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 +290,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 +301,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 +393,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);
@@ -449,13 +449,13 @@ add_login_options(AccountPrefsDialog *dialog, GtkWidget *parent)
gtk_widget_unref(dialog->protocol_menu);
- /* Screen name */
- dialog->screenname_entry = gtk_entry_new();
+ /* Username */
+ dialog->username_entry = gtk_entry_new();
#if GTK_CHECK_VERSION(2,10,0)
- g_object_set(G_OBJECT(dialog->screenname_entry), "truncate-multiline", TRUE, NULL);
+ g_object_set(G_OBJECT(dialog->username_entry), "truncate-multiline", TRUE, NULL);
#endif
- add_pref_box(dialog, vbox, _("_Username:"), dialog->screenname_entry);
+ add_pref_box(dialog, vbox, _("_Username:"), dialog->username_entry);
if (dialog->account != NULL)
username = g_strdup(purple_account_get_username(dialog->account));
@@ -468,17 +468,17 @@ 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 +547,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 +590,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);
@@ -1193,7 +1193,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)
{
@@ -1933,7 +1933,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 +1945,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 +2016,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 +2190,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..8571a53f37
--- /dev/null
+++ b/pidgin/gtkblist-theme-loader.c
@@ -0,0 +1,279 @@
+/*
+ * GTKBlistThemeLoader for Pidgin
+ *
+ * Pidgin is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#include <stdlib.h>
+
+#include "xmlnode.h"
+
+#include "gtkblist-theme-loader.h"
+#include "gtkblist-theme.h"
+
+/******************************************************************************
+ * Globals
+ *****************************************************************************/
+
+#define DEFAULT_TEXT_COLOR "black"
+
+/*****************************************************************************
+ * Buddy List Theme Builder
+ *****************************************************************************/
+
+static PurpleTheme *
+pidgin_blist_loader_build(const gchar *dir)
+{
+ xmlnode *root_node = NULL, *sub_node, *sub_sub_node;
+ gchar *filename_full, *data;
+ const gchar *temp;
+ gboolean success = TRUE;
+ GdkColor *bgcolor, *expanded_bgcolor, *collapsed_bgcolor, *contact_color;
+ GdkColor color;
+ FontColorPair *expanded, *collapsed, *contact, *online, *away, *offline, *idle, *message, *message_nick_said, *status;
+ PidginBlistLayout *layout;
+ PidginBlistTheme *theme;
+
+ /* Find the theme file */
+ g_return_val_if_fail(dir != NULL, NULL);
+ filename_full = g_build_filename(dir, "theme.xml", NULL);
+
+ if (g_file_test(filename_full, G_FILE_TEST_IS_REGULAR))
+ root_node = xmlnode_from_file(dir, "theme.xml", "buddy list themes", "blist-loader");
+
+ g_free(filename_full);
+ g_return_val_if_fail(root_node != NULL, NULL);
+
+ sub_node = xmlnode_get_child(root_node, "description");
+ data = xmlnode_get_data(sub_node);
+
+ /* init all structs and colors */
+ bgcolor = g_new0(GdkColor, 1);
+ expanded_bgcolor = g_new0(GdkColor, 1);
+ collapsed_bgcolor = g_new0(GdkColor, 1);
+
+ layout = g_new0(PidginBlistLayout, 1);
+
+ contact_color = g_new0(GdkColor, 1);
+
+ expanded = g_new0(FontColorPair, 1);
+ collapsed = g_new0(FontColorPair, 1);
+ contact = g_new0(FontColorPair, 1);
+ online = g_new0(FontColorPair, 1);
+ away = g_new0(FontColorPair, 1);
+ offline = g_new0(FontColorPair, 1);
+ idle = g_new0(FontColorPair, 1);
+ message = g_new0(FontColorPair, 1);
+ message_nick_said = g_new0(FontColorPair, 1);
+ status = g_new0(FontColorPair, 1);
+
+ /* <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 {
+ g_free(bgcolor);
+ bgcolor = NULL;
+ }
+ }
+
+ /* <groups> */
+ if ((success = (success && (sub_node = xmlnode_get_child(root_node, "groups")) != NULL
+ && (sub_sub_node = xmlnode_get_child(sub_node, "expanded")) != NULL)))
+ {
+ expanded->font = g_strdup(xmlnode_get_attrib(sub_sub_node, "font"));
+
+ if ((temp = xmlnode_get_attrib(sub_sub_node, "text_color")) != NULL && gdk_color_parse(temp, &color))
+ expanded->color = g_strdup(temp);
+ else expanded->color = g_strdup(DEFAULT_TEXT_COLOR);
+
+ if ((temp = xmlnode_get_attrib(sub_sub_node, "background")) != NULL && gdk_color_parse(temp, expanded_bgcolor))
+ gdk_colormap_alloc_color(gdk_colormap_get_system(), expanded_bgcolor, FALSE, TRUE);
+ else {
+ g_free(expanded_bgcolor);
+ expanded_bgcolor = NULL;
+ }
+ }
+
+ if ((success = (success && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "collapsed")) != NULL)))
+ {
+ collapsed->font = g_strdup(xmlnode_get_attrib(sub_sub_node, "font"));
+
+ if((temp = xmlnode_get_attrib(sub_sub_node, "text_color")) != NULL && gdk_color_parse(temp, &color))
+ collapsed->color = g_strdup(temp);
+ else collapsed->color = g_strdup(DEFAULT_TEXT_COLOR);
+
+ if ((temp = xmlnode_get_attrib(sub_sub_node, "background")) != NULL && gdk_color_parse(temp, collapsed_bgcolor))
+ gdk_colormap_alloc_color(gdk_colormap_get_system(), collapsed_bgcolor, FALSE, TRUE);
+ else {
+ g_free(collapsed_bgcolor);
+ collapsed_bgcolor = NULL;
+ }
+ }
+
+ /* <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 {
+ g_free(contact_color);
+ contact_color = NULL;
+ }
+ }
+
+ if ((success = (success && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "contact_text")) != NULL))) {
+ contact->font = g_strdup(xmlnode_get_attrib(sub_sub_node, "font"));
+ if(gdk_color_parse(temp = xmlnode_get_attrib(sub_sub_node, "color"), &color))
+ contact->color = g_strdup(temp);
+ else contact->color = g_strdup(DEFAULT_TEXT_COLOR);
+ }
+
+ if ((success = (success && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "online_text")) != NULL))) {
+ online->font = g_strdup(xmlnode_get_attrib(sub_sub_node, "font"));
+ if(gdk_color_parse(temp = xmlnode_get_attrib(sub_sub_node, "color"), &color))
+ online->color = g_strdup(temp);
+ else online->color = g_strdup(DEFAULT_TEXT_COLOR);
+ }
+
+ if ((success = (success && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "away_text")) != NULL))) {
+ away->font = g_strdup(xmlnode_get_attrib(sub_sub_node, "font"));
+ if(gdk_color_parse(temp = xmlnode_get_attrib(sub_sub_node, "color"), &color))
+ away->color = g_strdup(temp);
+ else away->color = g_strdup(DEFAULT_TEXT_COLOR);
+ }
+
+ if ((success = (success && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "offline_text")) != NULL))) {
+ offline->font = g_strdup(xmlnode_get_attrib(sub_sub_node, "font"));
+ if(gdk_color_parse(temp = xmlnode_get_attrib(sub_sub_node, "color"), &color))
+ online->color = g_strdup(temp);
+ else online->color = g_strdup(DEFAULT_TEXT_COLOR);
+ }
+
+ if ((success = (success && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "idle_text")) != NULL))) {
+ idle->font = g_strdup(xmlnode_get_attrib(sub_sub_node, "font"));
+ if(gdk_color_parse(temp = xmlnode_get_attrib(sub_sub_node, "color"), &color))
+ idle->color = g_strdup(temp);
+ else online->color = g_strdup(DEFAULT_TEXT_COLOR);
+ }
+
+ if ((success = (success && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "message_text")) != NULL))) {
+ message->font = g_strdup(xmlnode_get_attrib(sub_sub_node, "font"));
+ if(gdk_color_parse(temp = xmlnode_get_attrib(sub_sub_node, "color"), &color))
+ message->color = g_strdup(temp);
+ else message->color = g_strdup(DEFAULT_TEXT_COLOR);
+ }
+
+ if ((success = (success && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "message_nick_said_text")) != NULL))) {
+ message_nick_said->font = g_strdup(xmlnode_get_attrib(sub_sub_node, "font"));
+ if(gdk_color_parse(temp = xmlnode_get_attrib(sub_sub_node, "color"), &color))
+ message_nick_said->color = g_strdup(temp);
+ else message_nick_said->color = g_strdup(DEFAULT_TEXT_COLOR);
+ }
+
+ if ((success = (success && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "status_text")) != NULL))) {
+ status->font = g_strdup(xmlnode_get_attrib(sub_sub_node, "font"));
+ if(gdk_color_parse(temp = xmlnode_get_attrib(sub_sub_node, "color"), &color))
+ status->color = g_strdup(temp);
+ else status->color = g_strdup(DEFAULT_TEXT_COLOR);
+ }
+
+ /* name is required for theme manager */
+ success = (success && xmlnode_get_attrib(root_node, "name") != NULL);
+
+ /* the new theme */
+ theme = g_object_new(PIDGIN_TYPE_BLIST_THEME,
+ "type", "blist",
+ "name", xmlnode_get_attrib(root_node, "name"),
+ "author", xmlnode_get_attrib(root_node, "author"),
+ "image", xmlnode_get_attrib(root_node, "image"),
+ "directory", dir,
+ "description", data,
+ "background-color", bgcolor,
+ "layout", layout,
+ "expanded-color", expanded_bgcolor,
+ "expanded-text", expanded,
+ "collapsed-color", collapsed_bgcolor,
+ "collapsed-text", collapsed,
+ "contact-color", contact_color,
+ "contact", contact,
+ "online", online,
+ "away", away,
+ "offline", offline,
+ "idle", idle,
+ "message", message,
+ "message_nick_said", message_nick_said,
+ "status", status, NULL);
+
+ xmlnode_free(root_node);
+ g_free(data);
+
+ /* malformed xml file - also frees all partial data*/
+ if (!success) {
+ g_object_unref(theme);
+ theme = NULL;
+ }
+
+ return PURPLE_THEME(theme);
+}
+
+/******************************************************************************
+ * GObject Stuff
+ *****************************************************************************/
+
+static void
+pidgin_blist_theme_loader_class_init(PidginBlistThemeLoaderClass *klass)
+{
+ PurpleThemeLoaderClass *loader_klass = PURPLE_THEME_LOADER_CLASS(klass);
+
+ loader_klass->purple_theme_loader_build = pidgin_blist_loader_build;
+}
+
+GType
+pidgin_blist_theme_loader_get_type(void)
+{
+ static GType type = 0;
+ if (type == 0) {
+ static const GTypeInfo info = {
+ sizeof(PidginBlistThemeLoaderClass),
+ NULL, /* base_init */
+ NULL, /* base_finalize */
+ (GClassInitFunc)pidgin_blist_theme_loader_class_init, /* class_init */
+ NULL, /* class_finalize */
+ NULL, /* class_data */
+ sizeof(PidginBlistThemeLoader),
+ 0, /* n_preallocs */
+ NULL, /* instance_init */
+ NULL, /* value table */
+ };
+ type = g_type_register_static(PURPLE_TYPE_THEME_LOADER,
+ "PidginBlistThemeLoader", &info, 0);
+ }
+ return type;
+}
diff --git a/pidgin/gtkblist-theme-loader.h b/pidgin/gtkblist-theme-loader.h
new file mode 100644
index 0000000000..a5a40621e3
--- /dev/null
+++ b/pidgin/gtkblist-theme-loader.h
@@ -0,0 +1,71 @@
+/**
+ * @file gtkblist-loader.h Pidgin Buddy List Theme Loader Class API
+ */
+
+/* pidgin
+ *
+ * Pidgin is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#ifndef PIDGIN_BLIST_THEME_LOADER_H
+#define PIDGIN_BLIST_THEME_LOADER_H
+
+#include <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..86ab512420
--- /dev/null
+++ b/pidgin/gtkblist-theme.c
@@ -0,0 +1,784 @@
+/*
+ * Buddy List Themes for Pidgin
+ *
+ * Pidgin is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#include "gtkblist-theme.h"
+
+#define PIDGIN_BLIST_THEME_GET_PRIVATE(Gobject) \
+ ((PidginBlistThemePrivate *) ((PIDGIN_BLIST_THEME(Gobject))->priv))
+
+/******************************************************************************
+ * Structs
+ *****************************************************************************/
+
+typedef struct {
+ /* Buddy list */
+ gdouble opacity;
+ GdkColor *bgcolor;
+ PidginBlistLayout *layout;
+
+ /* groups */
+ GdkColor *expanded_color;
+ FontColorPair *expanded;
+
+ GdkColor *collapsed_color;
+ FontColorPair *collapsed;
+
+ /* buddy */
+ GdkColor *contact_color;
+
+ FontColorPair *contact;
+
+ FontColorPair *online;
+ FontColorPair *away;
+ FontColorPair *offline;
+ FontColorPair *idle;
+ FontColorPair *message;
+ FontColorPair *message_nick_said;
+
+ FontColorPair *status;
+
+} PidginBlistThemePrivate;
+
+/******************************************************************************
+ * Globals
+ *****************************************************************************/
+
+static GObjectClass *parent_class = NULL;
+
+/******************************************************************************
+ * Enums
+ *****************************************************************************/
+
+enum {
+ PROP_ZERO = 0,
+ PROP_BACKGROUND_COLOR,
+ PROP_OPACITY,
+ PROP_LAYOUT,
+ PROP_EXPANDED_COLOR,
+ PROP_EXPANDED_TEXT,
+ PROP_COLLAPSED_COLOR,
+ PROP_COLLAPSED_TEXT,
+ PROP_CONTACT_COLOR,
+ PROP_CONTACT,
+ PROP_ONLINE,
+ PROP_AWAY,
+ PROP_OFFLINE,
+ PROP_IDLE,
+ PROP_MESSAGE,
+ PROP_MESSAGE_NICK_SAID,
+ PROP_STATUS,
+};
+
+/******************************************************************************
+ * Helpers
+ *****************************************************************************/
+
+void
+free_font_and_color(FontColorPair *pair)
+{
+ if (pair != NULL) {
+ if (pair->font)
+ g_free(pair->font);
+ if (pair->color)
+ g_free(pair->color);
+ g_free(pair);
+ }
+}
+
+/******************************************************************************
+ * GObject Stuff
+ *****************************************************************************/
+
+static void
+pidgin_blist_theme_init(GTypeInstance *instance,
+ gpointer klass)
+{
+ (PIDGIN_BLIST_THEME(instance))->priv = g_new0(PidginBlistThemePrivate, 1);
+}
+
+static void
+pidgin_blist_theme_get_property(GObject *obj, guint param_id, GValue *value,
+ GParamSpec *psec)
+{
+ PidginBlistTheme *theme = PIDGIN_BLIST_THEME(obj);
+
+ switch (param_id) {
+ case PROP_BACKGROUND_COLOR:
+ g_value_set_pointer(value, pidgin_blist_theme_get_background_color(theme));
+ break;
+ case PROP_OPACITY:
+ g_value_set_double(value, pidgin_blist_theme_get_opacity(theme));
+ break;
+ case PROP_LAYOUT:
+ g_value_set_pointer(value, pidgin_blist_theme_get_layout(theme));
+ break;
+ case PROP_EXPANDED_COLOR:
+ g_value_set_pointer(value, pidgin_blist_theme_get_expanded_background_color(theme));
+ break;
+ case PROP_EXPANDED_TEXT:
+ g_value_set_pointer(value, pidgin_blist_theme_get_expanded_text_info(theme));
+ break;
+ case PROP_COLLAPSED_COLOR:
+ g_value_set_pointer(value, pidgin_blist_theme_get_collapsed_background_color(theme));
+ break;
+ case PROP_COLLAPSED_TEXT:
+ g_value_set_pointer(value, pidgin_blist_theme_get_collapsed_text_info(theme));
+ break;
+ case PROP_CONTACT_COLOR:
+ g_value_set_pointer(value, pidgin_blist_theme_get_contact_color(theme));
+ break;
+ case PROP_CONTACT:
+ g_value_set_pointer(value, pidgin_blist_theme_get_contact_text_info(theme));
+ break;
+ case PROP_ONLINE:
+ g_value_set_pointer(value, pidgin_blist_theme_get_online_text_info(theme));
+ break;
+ case PROP_AWAY:
+ g_value_set_pointer(value, pidgin_blist_theme_get_away_text_info(theme));
+ break;
+ case PROP_OFFLINE:
+ g_value_set_pointer(value, pidgin_blist_theme_get_offline_text_info(theme));
+ break;
+ case PROP_IDLE:
+ g_value_set_pointer(value, pidgin_blist_theme_get_idle_text_info(theme));
+ break;
+ case PROP_MESSAGE:
+ g_value_set_pointer(value, pidgin_blist_theme_get_unread_message_text_info(theme));
+ break;
+ case PROP_MESSAGE_NICK_SAID:
+ g_value_set_pointer(value, pidgin_blist_theme_get_unread_message_nick_said_text_info(theme));
+ break;
+ case PROP_STATUS:
+ g_value_set_pointer(value, pidgin_blist_theme_get_status_text_info(theme));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, psec);
+ break;
+ }
+}
+
+static void
+pidgin_blist_theme_set_property(GObject *obj, guint param_id, const GValue *value,
+ GParamSpec *psec)
+{
+ PidginBlistTheme *theme = PIDGIN_BLIST_THEME(obj);
+
+ switch (param_id) {
+ case PROP_BACKGROUND_COLOR:
+ pidgin_blist_theme_set_background_color(theme, g_value_get_pointer(value));
+ break;
+ case PROP_OPACITY:
+ pidgin_blist_theme_set_opacity(theme, g_value_get_double(value));
+ break;
+ case PROP_LAYOUT:
+ pidgin_blist_theme_set_layout(theme, g_value_get_pointer(value));
+ break;
+ case PROP_EXPANDED_COLOR:
+ pidgin_blist_theme_set_expanded_background_color(theme, g_value_get_pointer(value));
+ break;
+ case PROP_EXPANDED_TEXT:
+ pidgin_blist_theme_set_expanded_text_info(theme, g_value_get_pointer(value));
+ break;
+ case PROP_COLLAPSED_COLOR:
+ pidgin_blist_theme_set_collapsed_background_color(theme, g_value_get_pointer(value));
+ break;
+ case PROP_COLLAPSED_TEXT:
+ pidgin_blist_theme_set_collapsed_text_info(theme, g_value_get_pointer(value));
+ break;
+ case PROP_CONTACT_COLOR:
+ pidgin_blist_theme_set_contact_color(theme, g_value_get_pointer(value));
+ break;
+ case PROP_CONTACT:
+ pidgin_blist_theme_set_contact_text_info(theme, g_value_get_pointer(value));
+ break;
+ case PROP_ONLINE:
+ pidgin_blist_theme_set_online_text_info(theme, g_value_get_pointer(value));
+ break;
+ case PROP_AWAY:
+ pidgin_blist_theme_set_away_text_info(theme, g_value_get_pointer(value));
+ break;
+ case PROP_OFFLINE:
+ pidgin_blist_theme_set_offline_text_info(theme, g_value_get_pointer(value));
+ break;
+ case PROP_IDLE:
+ pidgin_blist_theme_set_idle_text_info(theme, g_value_get_pointer(value));
+ break;
+ case PROP_MESSAGE:
+ pidgin_blist_theme_set_unread_message_text_info(theme, g_value_get_pointer(value));
+ break;
+ case PROP_MESSAGE_NICK_SAID:
+ pidgin_blist_theme_set_unread_message_nick_said_text_info(theme, g_value_get_pointer(value));
+ break;
+ case PROP_STATUS:
+ pidgin_blist_theme_set_status_text_info(theme, g_value_get_pointer(value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, psec);
+ break;
+ }
+}
+
+static void
+pidgin_blist_theme_finalize(GObject *obj)
+{
+ PidginBlistThemePrivate *priv;
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(obj);
+
+ /* Buddy List */
+ g_free(priv->layout);
+
+ /* Group */
+ free_font_and_color(priv->expanded);
+ free_font_and_color(priv->collapsed);
+
+ /* Buddy */
+ free_font_and_color(priv->contact);
+ free_font_and_color(priv->online);
+ free_font_and_color(priv->away);
+ free_font_and_color(priv->offline);
+ free_font_and_color(priv->message);
+ free_font_and_color(priv->message_nick_said);
+ free_font_and_color(priv->status);
+
+ g_free(priv);
+
+ parent_class->finalize (obj);
+}
+
+static void
+pidgin_blist_theme_class_init(PidginBlistThemeClass *klass)
+{
+ GObjectClass *obj_class = G_OBJECT_CLASS(klass);
+ GParamSpec *pspec;
+
+ parent_class = g_type_class_peek_parent (klass);
+
+ obj_class->get_property = pidgin_blist_theme_get_property;
+ obj_class->set_property = pidgin_blist_theme_set_property;
+ obj_class->finalize = pidgin_blist_theme_finalize;
+
+ /* Buddy List */
+ pspec = g_param_spec_pointer("background-color", "Background Color",
+ "The background color for the buddy list",
+ G_PARAM_READWRITE);
+ g_object_class_install_property(obj_class, PROP_BACKGROUND_COLOR, pspec);
+
+ pspec = g_param_spec_pointer("layout", "Layout",
+ "The layout of icons, name, and status of the blist",
+ G_PARAM_READWRITE);
+
+ g_object_class_install_property(obj_class, PROP_LAYOUT, pspec);
+
+ /* Group */
+ pspec = g_param_spec_pointer("expanded-color", "Expanded Background Color",
+ "The background color of an expanded group",
+ G_PARAM_READWRITE);
+ g_object_class_install_property(obj_class, PROP_EXPANDED_COLOR, pspec);
+
+ pspec = g_param_spec_pointer("expanded-text", "Expanded Text",
+ "The text information for when a group is expanded",
+ G_PARAM_READWRITE);
+ g_object_class_install_property(obj_class, PROP_EXPANDED_TEXT, pspec);
+
+ pspec = g_param_spec_pointer("collapsed-color", "Collapsed Background Color",
+ "The background color of a collapsed group",
+ G_PARAM_READWRITE);
+ g_object_class_install_property(obj_class, PROP_COLLAPSED_COLOR, pspec);
+
+ pspec = g_param_spec_pointer("collapsed-text", "Collapsed Text",
+ "The text information for when a group is collapsed",
+ G_PARAM_READWRITE);
+ g_object_class_install_property(obj_class, PROP_COLLAPSED_TEXT, pspec);
+
+ /* Buddy */
+ pspec = g_param_spec_pointer("contact-color", "Contact/Chat Background Color",
+ "The background color of a contact or chat",
+ G_PARAM_READWRITE);
+ g_object_class_install_property(obj_class, PROP_CONTACT_COLOR, pspec);
+
+ pspec = g_param_spec_pointer("contact", "Contact Text",
+ "The text information for when a contact is expanded",
+ G_PARAM_READWRITE);
+ g_object_class_install_property(obj_class, PROP_CONTACT, pspec);
+
+ pspec = g_param_spec_pointer("online", "On-line Text",
+ "The text information for when a buddy is online",
+ G_PARAM_READWRITE);
+ g_object_class_install_property(obj_class, PROP_ONLINE, pspec);
+
+ pspec = g_param_spec_pointer("away", "Away Text",
+ "The text information for when a buddy is away",
+ G_PARAM_READWRITE);
+ g_object_class_install_property(obj_class, PROP_AWAY, pspec);
+
+ pspec = g_param_spec_pointer("offline", "Off-line Text",
+ "The text information for when a buddy is off-line",
+ G_PARAM_READWRITE);
+ g_object_class_install_property(obj_class, PROP_OFFLINE, pspec);
+
+ pspec = g_param_spec_pointer("idle", "Idle Text",
+ "The text information for when a buddy is idle",
+ G_PARAM_READWRITE);
+ g_object_class_install_property(obj_class, PROP_IDLE, pspec);
+
+ pspec = g_param_spec_pointer("message", "Message Text",
+ "The text information for when a buddy has an unread message",
+ G_PARAM_READWRITE);
+ g_object_class_install_property(obj_class, PROP_MESSAGE, pspec);
+
+ pspec = g_param_spec_pointer("message_nick_said", "Message (Nick Said) Text",
+ "The text information for when a chat has an unread message that mentions your nick",
+ G_PARAM_READWRITE);
+ g_object_class_install_property(obj_class, PROP_MESSAGE_NICK_SAID, pspec);
+
+ pspec = g_param_spec_pointer("status", "Status Text",
+ "The text information for a buddy's status",
+ G_PARAM_READWRITE);
+ g_object_class_install_property(obj_class, PROP_STATUS, pspec);
+}
+
+GType
+pidgin_blist_theme_get_type (void)
+{
+ static GType type = 0;
+ if (type == 0) {
+ static GTypeInfo info = {
+ sizeof(PidginBlistThemeClass),
+ NULL, /* base_init */
+ NULL, /* base_finalize */
+ (GClassInitFunc)pidgin_blist_theme_class_init, /* class_init */
+ NULL, /* class_finalize */
+ NULL, /* class_data */
+ sizeof(PidginBlistTheme),
+ 0, /* n_preallocs */
+ pidgin_blist_theme_init, /* instance_init */
+ NULL, /* value table */
+ };
+ type = g_type_register_static (PURPLE_TYPE_THEME,
+ "PidginBlistTheme", &info, 0);
+ }
+ return type;
+}
+
+
+/*****************************************************************************
+ * Public API functions
+ *****************************************************************************/
+
+/* get methods */
+
+GdkColor *
+pidgin_blist_theme_get_background_color(PidginBlistTheme *theme)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ return priv->bgcolor;
+}
+
+gdouble
+pidgin_blist_theme_get_opacity(PidginBlistTheme *theme)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), 1.0);
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ return priv->opacity;
+}
+
+PidginBlistLayout *
+pidgin_blist_theme_get_layout(PidginBlistTheme *theme)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ return priv->layout;
+}
+
+GdkColor *
+pidgin_blist_theme_get_expanded_background_color(PidginBlistTheme *theme)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ return priv->expanded_color;
+}
+
+FontColorPair *
+pidgin_blist_theme_get_expanded_text_info(PidginBlistTheme *theme)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ return priv->expanded;
+}
+
+GdkColor *
+pidgin_blist_theme_get_collapsed_background_color(PidginBlistTheme *theme)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ return priv->collapsed_color;
+}
+
+FontColorPair *
+pidgin_blist_theme_get_collapsed_text_info(PidginBlistTheme *theme)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ return priv->collapsed;
+}
+
+GdkColor *
+pidgin_blist_theme_get_contact_color(PidginBlistTheme *theme)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ return priv->contact_color;
+}
+
+FontColorPair *
+pidgin_blist_theme_get_contact_text_info(PidginBlistTheme *theme)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ return priv->contact;
+}
+
+FontColorPair *
+pidgin_blist_theme_get_online_text_info(PidginBlistTheme *theme)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ return priv->online;
+}
+
+FontColorPair *
+pidgin_blist_theme_get_away_text_info(PidginBlistTheme *theme)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ return priv->away;
+}
+
+FontColorPair *
+pidgin_blist_theme_get_offline_text_info(PidginBlistTheme *theme)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ return priv->offline;
+}
+
+FontColorPair *
+pidgin_blist_theme_get_idle_text_info(PidginBlistTheme *theme)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ return priv->idle;
+}
+
+FontColorPair *
+pidgin_blist_theme_get_unread_message_text_info(PidginBlistTheme *theme)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ return priv->message;
+}
+
+FontColorPair *
+pidgin_blist_theme_get_unread_message_nick_said_text_info(PidginBlistTheme *theme)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ return priv->message_nick_said;
+}
+
+FontColorPair *
+pidgin_blist_theme_get_status_text_info(PidginBlistTheme *theme)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ return priv->status;
+}
+
+/* Set Methods */
+void
+pidgin_blist_theme_set_background_color(PidginBlistTheme *theme, GdkColor *color)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ priv->bgcolor = color;
+}
+
+void
+pidgin_blist_theme_set_opacity(PidginBlistTheme *theme, gdouble opacity)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme) || opacity < 0.0 || opacity > 1.0);
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ priv->opacity = opacity;
+}
+
+void
+pidgin_blist_theme_set_layout(PidginBlistTheme *theme, PidginBlistLayout *layout)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ g_free(priv->layout);
+ priv->layout = layout;
+}
+
+void
+pidgin_blist_theme_set_expanded_background_color(PidginBlistTheme *theme, GdkColor *color)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ priv->expanded_color = color;
+}
+
+void
+pidgin_blist_theme_set_expanded_text_info(PidginBlistTheme *theme, FontColorPair *pair)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ free_font_and_color(priv->expanded);
+ priv->expanded = pair;
+}
+
+void
+pidgin_blist_theme_set_collapsed_background_color(PidginBlistTheme *theme, GdkColor *color)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ priv->collapsed_color = color;
+}
+
+void
+pidgin_blist_theme_set_collapsed_text_info(PidginBlistTheme *theme, FontColorPair *pair)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ free_font_and_color(priv->collapsed);
+ priv->collapsed = pair;
+}
+
+void
+pidgin_blist_theme_set_contact_color(PidginBlistTheme *theme, GdkColor *color)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ priv->contact_color = color;
+}
+
+void
+pidgin_blist_theme_set_contact_text_info(PidginBlistTheme *theme, FontColorPair *pair)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ free_font_and_color(priv->contact);
+ priv->contact = pair;
+}
+
+void
+pidgin_blist_theme_set_online_text_info(PidginBlistTheme *theme, FontColorPair *pair)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ free_font_and_color(priv->online);
+ priv->online = pair;
+}
+
+void
+pidgin_blist_theme_set_away_text_info(PidginBlistTheme *theme, FontColorPair *pair)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ free_font_and_color(priv->away);
+ priv->away = pair;
+}
+
+void
+pidgin_blist_theme_set_offline_text_info(PidginBlistTheme *theme, FontColorPair *pair)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ free_font_and_color(priv->offline);
+ priv->offline = pair;
+}
+
+void
+pidgin_blist_theme_set_idle_text_info(PidginBlistTheme *theme, FontColorPair *pair)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ free_font_and_color(priv->idle);
+ priv->idle = pair;
+}
+
+void
+pidgin_blist_theme_set_unread_message_text_info(PidginBlistTheme *theme, FontColorPair *pair)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ free_font_and_color(priv->message);
+ priv->message = pair;
+}
+
+void
+pidgin_blist_theme_set_unread_message_nick_said_text_info(PidginBlistTheme *theme, FontColorPair *pair)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ free_font_and_color(priv->message_nick_said);
+ priv->message_nick_said = pair;
+}
+
+void
+pidgin_blist_theme_set_status_text_info(PidginBlistTheme *theme, FontColorPair *pair)
+{
+ PidginBlistThemePrivate *priv;
+
+ g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+ priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+ free_font_and_color(priv->status);
+ priv->status = pair;
+}
diff --git a/pidgin/gtkblist-theme.h b/pidgin/gtkblist-theme.h
new file mode 100644
index 0000000000..bcfb4649b4
--- /dev/null
+++ b/pidgin/gtkblist-theme.h
@@ -0,0 +1,332 @@
+/**
+ * @file gtkblist-theme.h GTK+ Buddy List Theme API
+ */
+
+/* pidgin
+ *
+ * Pidgin is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#ifndef PIDGIN_BLIST_THEME_H
+#define PIDGIN_BLIST_THEME_H
+
+#include <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;
+};
+
+typedef struct
+{
+ gchar *font;
+ gchar *color;
+
+} FontColorPair;
+
+typedef struct
+{
+ gint status_icon;
+ gint text;
+ gint emblem;
+ gint protocol_icon;
+ gint buddy_icon;
+ gboolean show_status;
+
+} PidginBlistLayout;
+
+/**************************************************************************/
+/** @name FontColorPair API */
+/**************************************************************************/
+
+/**
+ * Frees a font and color pair
+ */
+void free_font_and_color(FontColorPair *pair);
+
+/**************************************************************************/
+/** @name Purple Buddy List Theme API */
+/**************************************************************************/
+G_BEGIN_DECLS
+
+/**
+ * GObject foo.
+ * @internal.
+ */
+GType pidgin_blist_theme_get_type(void);
+
+/* get methods */
+
+/**
+ * Returns the background color of the buddy list.
+ *
+ * @returns A gdk color.
+ */
+ GdkColor *pidgin_blist_theme_get_background_color(PidginBlistTheme *theme);
+
+/**
+ * Returns the opacity of the buddy list window
+ * (0.0 or clear to 1.0 fully opaque).
+ *
+ * @returns The opacity
+ */
+gdouble pidgin_blist_theme_get_opacity(PidginBlistTheme *theme);
+
+/**
+ * Returns the layout to be used with the buddy list.
+ *
+ * @returns The buddy list layout.
+ */
+ PidginBlistLayout *pidgin_blist_theme_get_layout(PidginBlistTheme *theme);
+
+/**
+ * Returns the background color to be used with expanded groups.
+ *
+ * @returns A gdk color.
+ */
+ GdkColor *pidgin_blist_theme_get_expanded_background_color(PidginBlistTheme *theme);
+
+/**
+ * Returns the text font and color to be used with expanded groups.
+ *
+ * @returns A font and color pair.
+ */
+ FontColorPair *pidgin_blist_theme_get_expanded_text_info(PidginBlistTheme *theme);
+
+/**
+ * Returns the background color to be used with collapsed groups.
+ *
+ * @returns A gdk color.
+ */
+ GdkColor *pidgin_blist_theme_get_collapsed_background_color(PidginBlistTheme *theme);
+
+/**
+ * Returns the text font and color to be used with collapsed groups.
+ *
+ * @returns A font and color pair.
+ */
+ FontColorPair *pidgin_blist_theme_get_collapsed_text_info(PidginBlistTheme *theme);
+
+/**
+ * Returns the colors to be used for contacts and chats.
+ *
+ * @returns A gdkcolor for contacts and chats.
+ */
+ GdkColor *pidgin_blist_theme_get_contact_color(PidginBlistTheme *theme);
+
+/**
+ * Returns the text font and color to be used for expanded contacts.
+ *
+ * @returns A font and color pair.
+ */
+ FontColorPair *pidgin_blist_theme_get_contact_text_info(PidginBlistTheme *theme);
+
+/**
+ * Returns the text font and color to be used for online buddies.
+ *
+ * @returns A font and color pair.
+ */
+ FontColorPair *pidgin_blist_theme_get_online_text_info(PidginBlistTheme *theme);
+
+/**
+ * Returns the text font and color to be used for away and idle buddies.
+ *
+ * @returns A font and color pair.
+ */
+ FontColorPair *pidgin_blist_theme_get_away_text_info(PidginBlistTheme *theme);
+
+/**
+ * Returns the text font and color to be used for offline buddies.
+ *
+ * @returns A font and color pair.
+ */
+ FontColorPair *pidgin_blist_theme_get_offline_text_info(PidginBlistTheme *theme);
+
+/**
+ * Returns the text font and color to be used for idle buddies.
+ *
+ * @returns A font and color pair.
+ */
+ FontColorPair *pidgin_blist_theme_get_idle_text_info(PidginBlistTheme *theme);
+
+/**
+ * Returns the text font and color to be used for buddies with unread messages.
+ *
+ * @returns A font and color pair.
+ */
+ FontColorPair *pidgin_blist_theme_get_unread_message_text_info(PidginBlistTheme *theme);
+
+/**
+ * Returns the text font and color to be used for chats with unread messages
+ * that mention your nick.
+ *
+ * @returns A font and color pair.
+ */
+ FontColorPair *pidgin_blist_theme_get_unread_message_nick_said_text_info(PidginBlistTheme *theme);
+
+/**
+ * Returns the text font and color to be used for a buddy's status message.
+ *
+ * @returns A font and color pair.
+ */
+ FontColorPair *pidgin_blist_theme_get_status_text_info(PidginBlistTheme *theme);
+
+/* Set Methods */
+
+/**
+ * Sets the background color to be used for this buddy list theme.
+ *
+ * @param color The new background color.
+ */
+void pidgin_blist_theme_set_background_color(PidginBlistTheme *theme, GdkColor *color);
+
+/**
+ * Sets the opacity to be used for this buddy list theme.
+ *
+ * @param opacity The new opacity setting.
+ */
+void pidgin_blist_theme_set_opacity(PidginBlistTheme *theme, gdouble opacity);
+
+/**
+ * Sets the buddy list layout to be used for this buddy list theme.
+ *
+ * @param layout The new layout.
+ */
+void pidgin_blist_theme_set_layout(PidginBlistTheme *theme, PidginBlistLayout *layout);
+
+/**
+ * Sets the background color to be used for expanded groups.
+ *
+ * @param color The new background color.
+ */
+void pidgin_blist_theme_set_expanded_background_color(PidginBlistTheme *theme, GdkColor *color);
+
+/**
+ * Sets the text color and font to be used for expanded groups.
+ *
+ * @param pair The new text font at color pair.
+ */
+void pidgin_blist_theme_set_expanded_text_info(PidginBlistTheme *theme, FontColorPair *pair);
+
+/**
+ * Sets the background color to be used for collapsed groups.
+ *
+ * @param color The new background color.
+ */
+void pidgin_blist_theme_set_collapsed_background_color(PidginBlistTheme *theme, GdkColor *color);
+
+/**
+ * Sets the text color and font to be used for expanded groups.
+ *
+ * @param pair The new text font at color pair.
+ */
+void pidgin_blist_theme_set_collapsed_text_info(PidginBlistTheme *theme, FontColorPair *pair);
+
+/**
+ * Sets the background color to be used for contacts and chats.
+ *
+ * @param color The color to use for contacts and chats.
+ */
+void pidgin_blist_theme_set_contact_color(PidginBlistTheme *theme, GdkColor *color);
+
+/**
+ * Sets the text color and font to be used for expanded contacts.
+ *
+ * @param pair The new text font at color pair.
+ */
+void pidgin_blist_theme_set_contact_text_info(PidginBlistTheme *theme, FontColorPair *pair);
+
+/**
+ * Sets the text color and font to be used for online buddies.
+ *
+ * @param pair The new text font at color pair.
+ */
+void pidgin_blist_theme_set_online_text_info(PidginBlistTheme *theme, FontColorPair *pair);
+
+/**
+ * Sets the text color and font to be used for away and idle buddies.
+ *
+ * @param pair The new text font at color pair.
+ */
+void pidgin_blist_theme_set_away_text_info(PidginBlistTheme *theme, FontColorPair *pair);
+
+/**
+ * Sets the text color and font to be used for offline buddies.
+ *
+ * @param pair The new text font at color pair.
+ */
+void pidgin_blist_theme_set_offline_text_info(PidginBlistTheme *theme, FontColorPair *pair);
+
+/**
+ * Sets the text color and font to be used for idle buddies.
+ *
+ * @param pair The new text font at color pair.
+ */
+void pidgin_blist_theme_set_idle_text_info(PidginBlistTheme *theme, FontColorPair *pair);
+
+/**
+ * Sets the text color and font to be used for buddies with unread messages.
+ *
+ * @param pair The new text font at color pair.
+ */
+void pidgin_blist_theme_set_unread_message_text_info(PidginBlistTheme *theme, FontColorPair *pair);
+
+/**
+ * Sets the text color and font to be used for a chat with unread messages
+ * that mention your nick.
+ *
+ * @param pair The new text font at color pair.
+ */
+void pidgin_blist_theme_set_unread_message_nick_said_text_info(PidginBlistTheme *theme, FontColorPair *pair);
+
+/**
+ * Sets the text color and font to be used for buddy status messages.
+ *
+ * @param pair The new text font at color pair.
+ */
+void pidgin_blist_theme_set_status_text_info(PidginBlistTheme *theme, FontColorPair *pair);
+
+G_END_DECLS
+#endif /* PIDGIN_BLIST_THEME_H */
diff --git a/pidgin/gtkblist.c b/pidgin/gtkblist.c
index 5d16af4d67..2e169acb3a 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"
@@ -121,6 +125,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 +149,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 +171,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 +187,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 +326,24 @@ 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));
}
static void gtk_blist_menu_send_file_cb(GtkWidget *w, PurpleBuddy *b)
{
- serv_send_file(b->account->gc, b->name, NULL);
+ PurpleAccount *account = purple_buddy_get_account(b);
+
+ serv_send_file(purple_account_get_connection(account),
+ purple_buddy_get_name(b), NULL);
}
static void gtk_blist_menu_move_to_cb(GtkWidget *w, PurpleBlistNode *node)
@@ -364,7 +368,7 @@ static 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 +378,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 +401,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 +443,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 +479,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 +509,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 +532,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 +548,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 +597,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 +722,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 +745,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 +760,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 +785,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 +805,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 +817,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);
}
@@ -900,9 +937,10 @@ joinchat_set_sensitive_if_input_cb(GtkWidget *entry, gpointer user_data)
static void
pidgin_blist_update_privacy_cb(PurpleBuddy *buddy)
{
- if (buddy->node.ui_data == NULL || ((struct _pidgin_blist_node*)buddy->node.ui_data)->row == NULL)
+ struct _pidgin_blist_node *ui_data = purple_blist_node_get_ui_data(PURPLE_BLIST_NODE(buddy));
+ if (ui_data == NULL || ui_data->row == NULL)
return;
- pidgin_blist_update_buddy(purple_get_blist(), (PurpleBlistNode*)(buddy), TRUE);
+ pidgin_blist_update_buddy(purple_get_blist(), PURPLE_BLIST_NODE(buddy), TRUE);
}
static void
@@ -1032,7 +1070,7 @@ pidgin_blist_joinchat_show(void)
GtkWidget *img = NULL;
PidginJoinChatData *data = NULL;
- gtkblist = PIDGIN_BLIST(purple_get_blist());
+ gtkblist = purple_blist_get_ui_data();
img = gtk_image_new_from_stock(PIDGIN_STOCK_DIALOG_QUESTION,
gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_HUGE));
data = g_new0(PidginJoinChatData, 1);
@@ -1452,7 +1490,7 @@ pidgin_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 +1512,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);
@@ -1792,7 +1830,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 +2535,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 +2759,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 +3021,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 +3121,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 +3207,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 +3326,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 +3854,22 @@ pidgin_blist_get_status_icon(PurpleBlistNode *node, PidginStatusIconSize size)
return ret;
}
-gchar *pidgin_blist_get_name_markup(PurpleBuddy *b, gboolean selected, gboolean aliased)
+gchar *
+pidgin_blist_get_name_markup(PurpleBuddy *b, gboolean selected, gboolean aliased)
{
- const char *name;
- char *esc, *text = NULL;
+ const char *name, *name_color, *name_font, *status_color, *status_font;
+ char *text = NULL;
PurplePlugin *prpl;
PurplePluginProtocolInfo *prpl_info = NULL;
PurpleContact *contact;
PurplePresence *presence;
struct _pidgin_blist_node *gtkcontactnode = NULL;
- char *idletime = NULL, *statustext = NULL;
- time_t t;
+ char *idletime = NULL, *statustext = NULL, *nametext = NULL;
PurpleConversation *conv = find_conversation_with_buddy(b);
gboolean hidden_conv = FALSE;
+ gboolean biglist = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons");
+ FontColorPair *pair = NULL;
+ PidginBlistTheme *theme;
if (conv != NULL) {
PidginBlistNode *ui = b->node.ui_data;
@@ -3841,178 +3883,171 @@ 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 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 : "");
+ } else
+ idletime = g_strdup(_("Idle"));
}
- } 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 : "");
+ /* choose the colors of the text */
+ theme = pidgin_blist_get_theme();
+
+ if (purple_presence_is_idle(presence)) {
+ if (theme)
+ pair = pidgin_blist_theme_get_idle_text_info(theme);
+ status_color = name_color = (pair != NULL && pair->color != NULL) ? pair->color : "dim grey";
+ status_font = name_font = (pair != NULL && pair->font != NULL) ? pair->font : "";
+
+ } else if (!purple_presence_is_online(presence)) {
+ if (theme)
+ pair = pidgin_blist_theme_get_offline_text_info(theme);
+ name_color = (pair != NULL && pair->color != NULL) ? pair->color : "black";
+ name_font = (pair != NULL && pair->font != NULL) ? pair->font : "";
+
+ if (theme)
+ pair = pidgin_blist_theme_get_status_text_info(theme);
+ status_color = (pair != NULL && pair->color != NULL) ? pair->color : "dim grey";
+ status_font = (pair != NULL && pair->font != NULL) ? pair->font : "";
+
+ } else if (purple_presence_is_available(presence)) {
+ if (theme)
+ pair = pidgin_blist_theme_get_online_text_info(theme);
+ name_color = (pair != NULL && pair->color != NULL) ? pair->color : "black";
+ name_font = (pair != NULL && pair->font != NULL) ? pair->font : "";
+
+ if (theme)
+ pair = pidgin_blist_theme_get_status_text_info(theme);
+ status_color = (pair != NULL && pair->color != NULL) ? pair->color : "dim grey";
+ status_font = (pair != NULL && pair->font != NULL) ? pair->font : "";
+
+ } else {
+ if (theme)
+ pair = pidgin_blist_theme_get_away_text_info(theme);
+ name_color = (pair != NULL && pair->color != NULL) ? pair->color : "black";
+ name_font = (pair != NULL && pair->font != NULL) ? pair->font : "";
+
+ if (theme)
+ pair = pidgin_blist_theme_get_status_text_info(theme);
+ status_color = (pair != NULL && pair->color != NULL) ? pair->color : "dim grey";
+ status_font = (pair != NULL && pair->font != NULL) ? pair->font : "";
}
- g_free(idletime);
+ if (aliased && selected) {
+ name_color = "black";
+ status_color = "black";
+ }
+
+ /* Put it all together */
+ if (aliased && biglist && (statustext || idletime)) {
+ /* using <span size='smaller'> breaks the status, so it must be seperated into <small><span>*/
+ 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
+ text = g_strdup_printf("<span font_desc='%s' color='%s'>%s</span>", name_font, name_color, nametext);
+
+ g_free(nametext);
g_free(statustext);
- g_free(esc);
+ g_free(idletime);
if (hidden_conv) {
char *tmp = text;
@@ -4062,7 +4097,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 +4366,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 +4380,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 +4490,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"));
}
@@ -5261,11 +5301,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;
@@ -5291,6 +5464,8 @@ static void pidgin_blist_show(PurpleBuddyList *list)
gtkblist = PIDGIN_BLIST(list);
priv = PIDGIN_BUDDY_LIST_GET_PRIVATE(gtkblist);
+ priv->current_theme = PIDGIN_BLIST_THEME(purple_theme_manager_find_theme(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/blist/theme"), "blist"));
+
gtkblist->empty_avatar = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, 32, 32);
gdk_pixbuf_fill(gtkblist->empty_avatar, 0x00000000);
@@ -5323,8 +5498,8 @@ 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 +5643,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);
@@ -5959,7 +6045,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))
@@ -5993,13 +6079,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 +6109,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 +6132,9 @@ static char *pidgin_get_group_title(PurpleBlistNode *gnode, gboolean expanded)
char *mark, *esc;
PurpleBlistNode *selected_node = NULL;
GtkTreeIter iter;
+ FontColorPair *pair;
+ gchar *text_color, *text_font;
+ PidginBlistTheme *theme;
group = (PurpleGroup*)gnode;
@@ -6055,8 +6150,21 @@ 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 || pair == NULL || pair->color == NULL) ? "black" : pair->color;
+ text_font = (pair == NULL || pair->font == NULL) ? "" : pair->font;
+
esc = g_markup_escape_text(group->name, -1);
- mark = g_strdup_printf("<span weight='bold'>%s</span>%s", esc ? esc : "", group_count);
+ mark = g_strdup_printf("<span foreground='%s' font_desc='%s'><b>%s</b>%s</span>",
+ text_color, text_font, esc ? esc : "", group_count);
g_free(esc);
return mark;
@@ -6064,14 +6172,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 +6204,39 @@ 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)
{
+ FontColorPair *pair = NULL;
+ const gchar *textcolor;
time_t t;
int ihrs, imin;
time(&t);
+
ihrs = (t - idle_secs) / 3600;
imin = ((t - idle_secs) / 60) % 60;
- idle = g_strdup_printf("%d:%02d", ihrs, imin);
- }
- }
- if (purple_presence_is_idle(presence))
- {
- if (idle && !selected) {
- char *i2 = g_strdup_printf("<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 && pair->color != NULL)
+ textcolor = pair->color;
+ else
+ textcolor = "black";
+
+ idle = g_strdup_printf("<span color='%s' font_desc='%s'>%d:%02d</span>", textcolor,
+ (pair == NULL || pair->font == NULL) ? "" : pair->font, ihrs, imin);
}
}
prpl_icon = pidgin_create_prpl_icon(buddy->account, PIDGIN_PRPL_ICON_SMALL);
+ if (theme != NULL)
+ color = pidgin_blist_theme_get_contact_color(theme);
+
gtk_tree_store_set(gtkblist->treemodel, iter,
STATUS_ICON_COLUMN, status,
STATUS_ICON_VISIBLE_COLUMN, TRUE,
@@ -6136,7 +6249,7 @@ 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 +6307,41 @@ 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();
+ FontColorPair *pair;
+ gboolean selected = (gtkblist->selected_node == cnode);
+
+ mark = g_markup_escape_text(purple_contact_get_alias(contact), -1);
+
+ theme = pidgin_blist_get_theme();
+ if (theme == NULL)
+ pair = NULL;
+ else {
+ pair = pidgin_blist_theme_get_contact_text_info(theme);
+ color = pidgin_blist_theme_get_contact_color(theme);
+ }
+
+ font = (pair == NULL || pair->font == NULL) ? "" : pair->font;
+ fg_color = (selected || pair == NULL || pair->color == NULL) ? "black" : pair->color;
+
+ tmp = g_strdup_printf("<span font_desc='%s' color='%s'>%s</span>",
+ font, fg_color, mark);
+ g_free(mark);
+ mark = tmp;
status = pidgin_blist_get_status_icon(cnode,
biglist? PIDGIN_STATUS_ICON_LARGE : PIDGIN_STATUS_ICON_SMALL);
- mark = g_markup_escape_text(purple_contact_get_alias(contact), -1);
gtk_tree_store_set(gtkblist->treemodel, &iter,
STATUS_ICON_COLUMN, status,
STATUS_ICON_VISIBLE_COLUMN, TRUE,
NAME_COLUMN, mark,
IDLE_COLUMN, NULL,
IDLE_VISIBLE_COLUMN, FALSE,
- BGCOLOR_COLUMN, NULL,
+ BGCOLOR_COLUMN, color,
BUDDY_ICON_COLUMN, NULL,
CONTACT_EXPANDER_COLUMN, TRUE,
CONTACT_EXPANDER_VISIBLE_COLUMN, TRUE,
@@ -6274,20 +6409,28 @@ 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;
+ GdkColor *bgcolor = NULL;
+ FontColorPair *pair;
+ PidginBlistTheme *theme;
+ gboolean selected = (gtkblist->selected_node == node);
+ gboolean nick_said = FALSE;
if (!insert_node(list, node, &iter))
return;
ui = node->ui_data;
conv = ui->conv.conv;
- hidden = (conv && (ui->conv.flags & PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE) &&
- pidgin_conv_is_hidden(PIDGIN_CONVERSATION(conv)));
+ if (conv && pidgin_conv_is_hidden(PIDGIN_CONVERSATION(conv))) {
+ hidden = (ui->conv.flags & PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE);
+ nick_said = (ui->conv.flags & PIDGIN_BLIST_CHAT_HAS_PENDING_MESSAGE_WITH_NICK);
+ }
status = pidgin_blist_get_status_icon(node,
biglist ? PIDGIN_STATUS_ICON_LARGE : PIDGIN_STATUS_ICON_SMALL);
@@ -6300,14 +6443,36 @@ 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 = (pair == NULL || pair->font == NULL) ? "" : pair->font;
+ if (selected || pair == NULL || pair->color == NULL)
+ /* nick_said color is the same as gtkconv:tab-label-attention */
+ color = (nick_said ? "#006aff" : "black");
+ else
+ color = pair->color;
+
+ tmp = g_strdup_printf("<span font_desc='%s' color='%s' weight='%s'>%s</span>",
+ font, color, hidden ? "bold" : "normal", mark);
+
+ g_free(mark);
+ mark = tmp;
prpl_icon = pidgin_create_prpl_icon(chat->account, PIDGIN_PRPL_ICON_SMALL);
+ if (theme != NULL)
+ bgcolor = pidgin_blist_theme_get_contact_color(theme);
+
gtk_tree_store_set(gtkblist->treemodel, &iter,
STATUS_ICON_COLUMN, status,
STATUS_ICON_VISIBLE_COLUMN, TRUE,
@@ -6318,6 +6483,7 @@ 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 +6496,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);
}
@@ -6987,7 +7154,7 @@ pidgin_blist_request_add_chat(PurpleAccount *account, PurpleGroup *group,
data->group_combo = pidgin_text_combo_box_entry_new(group ? group->name : NULL, groups_tree());
pidgin_add_widget_to_vbox(GTK_BOX(vbox), _("_Group:"), data->sg, data->group_combo, TRUE, NULL);
-
+
data->autojoin = gtk_check_button_new_with_mnemonic(_("Auto_join when account becomes online."));
data->persistent = gtk_check_button_new_with_mnemonic(_("_Remain in chat after window is closed."));
gtk_box_pack_start(GTK_BOX(vbox), data->autojoin, FALSE, FALSE, 0);
@@ -7191,6 +7358,34 @@ static void buddy_signonoff_cb(PurpleBuddy *buddy)
(GSourceFunc)buddy_signonoff_timeout_cb, buddy);
}
+void
+pidgin_blist_set_theme(PidginBlistTheme *theme)
+{
+ PidginBuddyListPrivate *priv = PIDGIN_BUDDY_LIST_GET_PRIVATE(gtkblist);
+ PurpleBuddyList *list = purple_get_blist();
+
+ if (theme != NULL)
+ purple_prefs_set_string(PIDGIN_PREFS_ROOT "/blist/theme",
+ purple_theme_get_name(PURPLE_THEME(theme)));
+ else
+ purple_prefs_set_string(PIDGIN_PREFS_ROOT "/blist/theme", "");
+
+ priv->current_theme = theme;
+
+ pidgin_blist_build_layout(list);
+
+ pidgin_blist_refresh(list);
+}
+
+
+PidginBlistTheme *
+pidgin_blist_get_theme()
+{
+ PidginBuddyListPrivate *priv = PIDGIN_BUDDY_LIST_GET_PRIVATE(gtkblist);
+
+ return priv->current_theme;
+}
+
void pidgin_blist_init(void)
{
void *gtk_blist_handle = pidgin_blist_get_handle();
@@ -7219,6 +7414,9 @@ 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 +7691,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 +7705,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 +7736,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 +7756,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);
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..dda5578f16 100644
--- a/pidgin/gtkcellrendererexpander.c
+++ b/pidgin/gtkcellrendererexpander.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.
*/
@@ -74,14 +74,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 +97,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 +118,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 +162,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 +199,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 +228,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 +237,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 +246,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 +270,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..7b1aa4a2dc 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
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..9fc147d21a 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
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 dbd7a2ee1c..d821ce3f43 100644
--- a/pidgin/gtkconv.c
+++ b/pidgin/gtkconv.c
@@ -201,11 +201,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;
@@ -1395,7 +1395,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)
@@ -1835,7 +1835,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);
@@ -1867,7 +1867,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);
@@ -2061,7 +2061,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;
@@ -2519,7 +2519,7 @@ pidgin_conv_get_icon(PurpleConversation *conv, GtkWidget *parent, const char *ic
if (ops && ops->update)
ops->update(NULL, (PurpleBlistNode*)b);
- /* XXX Seanegan: We really need a util function to return a pixbuf for a Presence to avoid all this switching */
+ /* XXX Seanegan: We really need a util function to return a pixbuf for a Presence to avoid all this switching */
if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_AWAY))
status = pidgin_create_status_icon(PURPLE_STATUS_AWAY, parent, icon_size);
else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_EXTENDED_AWAY))
@@ -2545,7 +2545,7 @@ pidgin_conv_get_icon(PurpleConversation *conv, GtkWidget *parent, const char *ic
status = gtk_widget_render_icon (parent, PIDGIN_STOCK_STATUS_CHAT,
size, "GtkWidget");
}
- }
+ }
return status;
}
@@ -2588,11 +2588,11 @@ update_tab_icon(PurpleConversation *conv)
gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->icon), status);
gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->menu_icon), status);
- gtk_list_store_set(GTK_LIST_STORE(gtkconv->infopane_model),
+ gtk_list_store_set(GTK_LIST_STORE(gtkconv->infopane_model),
&(gtkconv->infopane_iter),
CONV_ICON_COLUMN, infopane_status, -1);
- gtk_list_store_set(GTK_LIST_STORE(gtkconv->infopane_model),
+ gtk_list_store_set(GTK_LIST_STORE(gtkconv->infopane_model),
&(gtkconv->infopane_iter),
CONV_EMBLEM_COLUMN, emblem, -1);
if (emblem)
@@ -3853,7 +3853,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)
{
@@ -4802,7 +4802,7 @@ setup_common_pane(PidginConversation *gtkconv)
gtkconv->infopane = gtk_cell_view_new();
gtkconv->infopane_model = gtk_list_store_new(CONV_NUM_COLUMNS, GDK_TYPE_PIXBUF, G_TYPE_STRING, GDK_TYPE_PIXBUF, GDK_TYPE_PIXBUF);
- gtk_cell_view_set_model(GTK_CELL_VIEW(gtkconv->infopane),
+ gtk_cell_view_set_model(GTK_CELL_VIEW(gtkconv->infopane),
GTK_TREE_MODEL(gtkconv->infopane_model));
g_object_unref(gtkconv->infopane_model);
gtk_list_store_append(gtkconv->infopane_model, &(gtkconv->infopane_iter));
@@ -5036,9 +5036,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;
@@ -5046,8 +5046,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)
@@ -5497,7 +5498,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)
@@ -5534,14 +5535,14 @@ str_embed_direction_chars(char **str)
}
/* Returns true if the given HTML contains RTL text */
-static gboolean
+static gboolean
html_is_rtl(const char *html)
{
GData *attributes;
const gchar *start, *end;
gboolean res = FALSE;
- if (purple_markup_find_tag("span", html, &start, &end, &attributes))
+ if (purple_markup_find_tag("span", html, &start, &end, &attributes))
{
/* tmp is a member of attributes and is free with g_datalist_clear call */
const char *tmp = g_datalist_get_data(&attributes, "dir");
@@ -6465,10 +6466,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 {
@@ -6661,7 +6662,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);
@@ -7233,7 +7234,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);
@@ -7643,7 +7644,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);
@@ -8409,7 +8410,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;
@@ -8435,7 +8436,7 @@ infopane_press_cb(GtkWidget *widget, GdkEventButton *e, PidginConversation *gtkc
}
return FALSE;
}
-
+
static gboolean
notebook_press_cb(GtkWidget *widget, GdkEventButton *e, PidginWindow *win)
{
@@ -9015,7 +9016,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
@@ -9025,7 +9026,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 ||
@@ -9041,7 +9042,7 @@ static gboolean gtk_conv_configure_cb(GtkWidget *w, GdkEventConfigure *event, gp
/* continue to handle event normally */
return FALSE;
-
+
}
static void
@@ -9122,7 +9123,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();
@@ -9284,7 +9285,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));
@@ -9443,11 +9444,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") ||
@@ -9658,7 +9659,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);
@@ -9673,7 +9674,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;
@@ -9686,7 +9687,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 ||
@@ -9740,11 +9741,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);
@@ -9758,7 +9759,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/gtkdebug.c b/pidgin/gtkdebug.c
index b6edea6233..084c06169e 100644
--- a/pidgin/gtkdebug.c
+++ b/pidgin/gtkdebug.c
@@ -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 df431e22ec..ec8cccb091 100644
--- a/pidgin/gtkdialogs.c
+++ b/pidgin/gtkdialogs.c
@@ -100,7 +100,7 @@ static const struct developer developers[] = {
/* Order: Alphabetical by Last Name */
static const struct developer patch_writers[] = {
- {"Paul Aurich", NULL, NULL },
+ {"Paul 'darkrain42' Aurich", NULL, NULL },
{"Marcus 'malu' Lundblad", NULL, NULL},
{"Dennis 'EvilDennisR' Ristuccia", N_("Senior Contributor/QA"), NULL},
{"Peter 'Fmoo' Ruibal", NULL, NULL},
@@ -188,6 +188,7 @@ static const struct translator translators[] = {
{N_("Italian"), "it", "Claudio Satriano", "satriano@na.infn.it"},
{N_("Japanese"), "ja", "Takashi Aihana", "aihana@gnome.gr.jp"},
{N_("Georgian"), "ka", N_("Ubuntu Georgian Translators"), "alexander.didebulidze@stusta.mhn.de"},
+ {"Khmer", "km", "Khoem Sokhem", "khoemsokhem@khmeros.info"},
{N_("Kannada"), "kn", N_("Kannada Translation team"), "translation@sampada.info"},
{N_("Korean"), "ko", "Sushizang", "sushizang@empal.com"},
{N_("Kurdish"), "ku", "Erdal Ronahi", "erdal.ronahi@gmail.com"},
@@ -349,7 +350,7 @@ 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) {
@@ -492,7 +493,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"));
@@ -1066,8 +1067,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;
@@ -1121,7 +1122,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/gtkdocklet-x11.c b/pidgin/gtkdocklet-x11.c
index 06b832b2aa..8a07edf8ca 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
@@ -59,7 +59,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();
@@ -211,9 +211,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 +239,7 @@ docklet_x11_embed_timeout_cb(gpointer data)
*/
purple_debug_info("docklet", "failed to embed within timeout\n");
pidgin_docklet_remove();
-
+
return FALSE;
}
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/gtkicon-theme-loader.c b/pidgin/gtkicon-theme-loader.c
new file mode 100644
index 0000000000..5ddbd4f5e9
--- /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", "sound themes", "sound-theme-loader");
+
+ g_free(filename_full);
+ g_return_val_if_fail(root_node != NULL, NULL);
+
+ /* Parse the tree */
+ sub_node = xmlnode_get_child(root_node, "description");
+ data = xmlnode_get_data(sub_node);
+
+ if (xmlnode_get_attrib(root_node, "name") != NULL) {
+ theme = g_object_new(PIDGIN_TYPE_STATUS_ICON_THEME,
+ "type", "status-icon",
+ "name", xmlnode_get_attrib(root_node, "name"),
+ "author", xmlnode_get_attrib(root_node, "author"),
+ "image", xmlnode_get_attrib(root_node, "image"),
+ "directory", dir,
+ "description", data, NULL);
+
+ sub_node = xmlnode_get_child(root_node, "icon");
+
+ while (sub_node) {
+ pidgin_icon_theme_set_icon(theme,
+ xmlnode_get_attrib(sub_node, "id"),
+ xmlnode_get_attrib(sub_node, "file"));
+ sub_node = xmlnode_get_next_twin(sub_node);
+ }
+ }
+
+ xmlnode_free(root_node);
+ g_free(data);
+ return PURPLE_THEME(theme);
+}
+
+/******************************************************************************
+ * GObject Stuff
+ *****************************************************************************/
+
+static void
+pidgin_icon_theme_loader_class_init (PidginIconThemeLoaderClass *klass)
+{
+ PurpleThemeLoaderClass *loader_klass = PURPLE_THEME_LOADER_CLASS(klass);
+
+ loader_klass->purple_theme_loader_build = pidgin_icon_loader_build;
+}
+
+
+GType
+pidgin_icon_theme_loader_get_type (void)
+{
+ static GType type = 0;
+ if (type == 0) {
+ static const GTypeInfo info = {
+ sizeof(PidginIconThemeLoaderClass),
+ NULL, /* base_init */
+ NULL, /* base_finalize */
+ (GClassInitFunc)pidgin_icon_theme_loader_class_init, /* class_init */
+ NULL, /* class_finalize */
+ NULL, /* class_data */
+ sizeof (PidginIconThemeLoader),
+ 0, /* n_preallocs */
+ NULL, /* instance_init */
+ NULL, /* value table */
+ };
+ type = g_type_register_static (PURPLE_TYPE_THEME_LOADER,
+ "PidginIconThemeLoader", &info, 0);
+ }
+ return type;
+}
diff --git a/pidgin/gtkicon-theme-loader.h b/pidgin/gtkicon-theme-loader.h
new file mode 100644
index 0000000000..57ab2b53a3
--- /dev/null
+++ b/pidgin/gtkicon-theme-loader.h
@@ -0,0 +1,71 @@
+/**
+ * @file gtkicon-loader.h Pidgin Icon Theme Loader Class API
+ */
+
+/* purple
+ *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#ifndef PIDGIN_ICON_THEME_LOADER_H
+#define PIDGIN_ICON_THEME_LOADER_H
+
+#include <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..0ba669d349
--- /dev/null
+++ b/pidgin/gtkicon-theme.h
@@ -0,0 +1,93 @@
+/**
+ * @file icon-theme.h Pidgin Icon Theme Class API
+ */
+
+/* pidgin
+ *
+ * Pidgin is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#ifndef PIDGIN_ICON_THEME_H
+#define PIDGIN_ICON_THEME_H
+
+#include <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 event the pidgin icon event to look up
+ *
+ * @returns the filename of the icon event
+ */
+const gchar *pidgin_icon_theme_get_icon(PidginIconTheme *theme,
+ const gchar *event);
+
+/**
+ * Sets the filename for a given icon id, setting the icon to NULL will remove the icon from the theme
+ *
+ * @param icon_id a string representing what the icon is to be used for
+ * @param filename the name of the file to be used for the given id
+ */
+void pidgin_icon_theme_set_icon(PidginIconTheme *theme,
+ const gchar *icon_id,
+ const gchar *filename);
+
+G_END_DECLS
+#endif /* PIDGIN_ICON_THEME_H */
diff --git a/pidgin/gtkimhtml.c b/pidgin/gtkimhtml.c
index 5008c65eb4..f90f0b8996 100644
--- a/pidgin/gtkimhtml.c
+++ b/pidgin/gtkimhtml.c
@@ -88,6 +88,22 @@ struct im_image_data {
GtkTextMark *mark;
};
+struct _GtkIMHtmlLink
+{
+ GtkIMHtml *imhtml;
+ gchar *url;
+ GtkTextTag *tag;
+};
+
+typedef struct _GtkIMHtmlProtocol
+{
+ char *name;
+ int length;
+
+ gboolean (*activate)(GtkIMHtml *imhtml, GtkIMHtmlLink *link);
+ gboolean (*context_menu)(GtkIMHtml *imhtml, GtkIMHtmlLink *link, GtkWidget *menu);
+} GtkIMHtmlProtocol;
+
static gboolean
gtk_text_view_drag_motion (GtkWidget *widget,
GdkDragContext *context,
@@ -115,6 +131,9 @@ static void imhtml_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 +368,7 @@ gtk_smiley_tree_destroy (GtkSmileyTree *tree)
g_string_free (t->values, TRUE);
g_free (t->children);
}
-
+
g_free (t);
}
}
@@ -819,7 +838,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));
@@ -1106,8 +1125,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)
@@ -1391,6 +1410,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)
{
@@ -1475,6 +1526,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 +1740,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)
-{
- 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)
+static void gtk_imhtml_link_destroy(GtkIMHtmlLink *link)
{
- 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 +1763,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 +1788,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 +1888,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 +1897,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 +2068,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 +2097,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 +2199,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 +2226,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 +2242,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 +2316,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 +2392,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 +2602,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 +2651,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 +3303,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 +3314,43 @@ 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])) {
br = FALSE;
- while(len_protocol--){
- /* Skip the next len_protocol characters, but make sure they're
- copied into the ws array.
- */
- ws [wpos++] = *c++;
- pos++;
+ if (wpos > 0) {
+ gtk_text_buffer_insert(imhtml->text_buffer, iter, ws, wpos);
+ ws[0] = '\0'; wpos = 0;
+ }
+ while (len_protocol--) {
+ /* Skip the next len_protocol characters, but
+ * make sure they're copied into the ws array.
+ */
+ ws [wpos++] = *c++;
+ pos++;
+ }
+ if (!imhtml->edit.link && (imhtml->format_functions & GTK_IMHTML_LINK)) {
+ while (*c && !isspace((int)*c) &&
+ (*c != '<' || !gtk_imhtml_is_tag(c + 1, NULL, NULL, NULL))) {
+ if (*c == '&' && (amp = purple_markup_unescape_entity(c, &tlen))) {
+ while (*amp)
+ ws[wpos++] = *amp++;
+ c += tlen;
+ pos += tlen;
+ } else {
+ ws [wpos++] = *c++;
+ pos++;
+ }
+ }
+ ws[wpos] = '\0';
+ gtk_imhtml_toggle_link(imhtml, ws);
+ gtk_text_buffer_insert(imhtml->text_buffer, iter, ws, wpos);
+ ws[0] = '\0'; wpos = 0;
+ gtk_imhtml_toggle_link(imhtml, NULL);
}
} else if (*c) {
br = FALSE;
@@ -3355,7 +3374,7 @@ 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 +3387,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) {
@@ -4885,8 +4903,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 +4917,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);
@@ -5753,3 +5771,111 @@ void gtk_imhtml_smiley_destroy(GtkIMHtmlSmiley *smiley)
g_free(smiley);
}
+gboolean gtk_imhtml_class_register_protocol(const char *name,
+ gboolean (*activate)(GtkIMHtml *imhtml, GtkIMHtmlLink *link),
+ gboolean (*context_menu)(GtkIMHtml *imhtml, GtkIMHtmlLink *link, GtkWidget *menu))
+{
+ GtkIMHtmlClass *klass;
+ GtkIMHtmlProtocol *proto;
+
+ g_return_val_if_fail(name, FALSE);
+
+ klass = g_type_class_ref(GTK_TYPE_IMHTML);
+ g_return_val_if_fail(klass, FALSE);
+
+ if ((proto = imhtml_find_protocol(name, TRUE))) {
+ if (activate) {
+ return FALSE;
+ }
+ g_free(proto->name);
+ g_free(proto);
+ klass->protocols = g_list_remove(klass->protocols, proto);
+ return TRUE;
+ } else if (!activate) {
+ return FALSE;
+ }
+
+ proto = g_new0(GtkIMHtmlProtocol, 1);
+ proto->name = g_strdup(name);
+ proto->length = strlen(name);
+ proto->activate = activate;
+ proto->context_menu = context_menu;
+ klass->protocols = g_list_prepend(klass->protocols, proto);
+
+ return TRUE;
+}
+
+static void
+gtk_imhtml_activate_tag(GtkIMHtml *imhtml, GtkTextTag *tag)
+{
+ /* A link was clicked--we emit the "url_clicked" signal
+ * with the URL as the argument */
+ g_object_ref(G_OBJECT(tag));
+ g_signal_emit(imhtml, signals[URL_CLICKED], 0, g_object_get_data(G_OBJECT(tag), "link_url"));
+ g_object_unref(G_OBJECT(tag));
+ g_object_set_data(G_OBJECT(tag), "visited", GINT_TO_POINTER(TRUE));
+ gtk_imhtml_set_link_color(GTK_IMHTML(imhtml), tag);
+}
+
+gboolean gtk_imhtml_link_activate(GtkIMHtmlLink *link)
+{
+ g_return_val_if_fail(link, FALSE);
+
+ if (link->tag) {
+ gtk_imhtml_activate_tag(link->imhtml, link->tag);
+ } else if (link->url) {
+ g_signal_emit(link->imhtml, signals[URL_CLICKED], 0, link->url);
+ } else
+ return FALSE;
+ return TRUE;
+}
+
+const char *gtk_imhtml_link_get_url(GtkIMHtmlLink *link)
+{
+ return link->url;
+}
+
+const GtkTextTag * gtk_imhtml_link_get_text_tag(GtkIMHtmlLink *link)
+{
+ return link->tag;
+}
+
+static gboolean return_add_newline_cb(GtkWidget *widget, gpointer data)
+{
+ GtkTextBuffer *buffer;
+ GtkTextMark *mark;
+ GtkTextIter iter;
+
+ buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(widget));
+
+ /* Delete any currently selected text */
+ gtk_text_buffer_delete_selection(buffer, TRUE, TRUE);
+
+ /* Insert a newline at the current cursor position */
+ mark = gtk_text_buffer_get_insert(buffer);
+ gtk_text_buffer_get_iter_at_mark(buffer, &iter, mark);
+ gtk_imhtml_insert_html_at_iter(GTK_IMHTML(widget), "\n", 0, &iter);
+
+ /*
+ * If we just newlined ourselves past the end of the visible area
+ * then scroll down so the cursor is in view.
+ */
+ gtk_text_view_scroll_to_mark(GTK_TEXT_VIEW(widget),
+ gtk_text_buffer_get_insert(buffer),
+ 0, FALSE, 0.0, 0.0);
+
+ return TRUE;
+}
+
+/*
+ * It's kind of a pain that we need this function and the above just
+ * to reinstate the default GtkTextView behavior. It might be better
+ * if GtkIMHtml didn't intercept the enter key and just required the
+ * application to deal with it--it's really not much more work than it
+ * is to connect to the current "message_send" signal.
+ */
+void gtk_imhtml_set_return_inserts_newline(GtkIMHtml *imhtml)
+{
+ g_signal_connect(G_OBJECT(imhtml), "message_send",
+ G_CALLBACK(return_add_newline_cb), NULL);
+}
diff --git a/pidgin/gtkimhtml.h b/pidgin/gtkimhtml.h
index ef18d99445..f3bdc5d2d2 100644
--- a/pidgin/gtkimhtml.h
+++ b/pidgin/gtkimhtml.h
@@ -61,6 +61,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 +161,7 @@ struct _GtkIMHtmlClass {
gboolean (*message_send)(GtkIMHtml *);
void (*undo)(GtkIMHtml *);
void (*redo)(GtkIMHtml *);
+ GList *protocols; /* List of GtkIMHtmlProtocol's */
};
struct _GtkIMHtmlFontDetail {
@@ -885,6 +891,74 @@ 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);
+
/*@}*/
#ifdef __cplusplus
diff --git a/pidgin/gtkimhtmltoolbar.c b/pidgin/gtkimhtmltoolbar.c
index a09208b490..39e0ce475c 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);
@@ -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/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 0bc642a7f8..e8e8f9c3f8 100644
--- a/pidgin/gtkmain.c
+++ b/pidgin/gtkmain.c
@@ -310,6 +310,7 @@ pidgin_ui_init(void)
pidgin_log_init();
pidgin_docklet_init();
pidgin_smileys_init();
+ pidgin_utils_init();
}
static GHashTable *ui_info = NULL;
@@ -323,6 +324,7 @@ pidgin_quit(void)
#endif
/* Uninit */
+ pidgin_utils_uninit();
pidgin_smileys_uninit();
pidgin_conversations_uninit();
pidgin_status_uninit();
@@ -385,6 +387,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 +401,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 +461,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 +489,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 +606,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 +619,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 +644,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 */
@@ -816,6 +820,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/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..a8b2096014 100644
--- a/pidgin/gtkpounce.c
+++ b/pidgin/gtkpounce.c
@@ -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);
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..44f05ea794 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
*/
@@ -546,6 +557,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)
+ gdk_pixbuf_unref(pixbuf);
+
+ } else if (PIDGIN_IS_BLIST_THEME(theme) || PIDGIN_IS_STATUS_ICON_THEME(theme)){
+ GtkListStore *store;
+
+ if (PIDGIN_IS_BLIST_THEME(theme))
+ store = prefs_blist_themes;
+ else store = prefs_status_icon_themes;
+
+ image_full = purple_theme_get_image_full(theme);
+ if (image_full != NULL){
+ pixbuf = gdk_pixbuf_new_from_file_at_scale(image_full, PREFS_OPTIMAL_ICON_SIZE, PREFS_OPTIMAL_ICON_SIZE, TRUE, NULL);
+ g_free(image_full);
+ } else pixbuf = NULL;
+
+ name = purple_theme_get_name(theme);
+ author = purple_theme_get_author(theme);
+ description = purple_theme_get_description(theme);
+
+ markup = g_strdup_printf("<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)
+ gdk_pixbuf_unref(pixbuf);
+ }
+
+}
+
+/* init all the theme variables so that the themes can be sorted later and used by pref pages */
+static void
+prefs_themes_init()
+{
+ GdkPixbuf *pixbuf = NULL;
+ gchar *filename;
+ GtkTreeIter iter;
+
+ filename = g_build_filename(DATADIR, "icons", "hicolor", "32x32", "apps", "pidgin.png", NULL);
+ pixbuf = gdk_pixbuf_new_from_file_at_scale(filename, PREFS_OPTIMAL_ICON_SIZE, PREFS_OPTIMAL_ICON_SIZE, TRUE, NULL);
+ g_free(filename);
+
+ /* sound themes */
+ prefs_sound_themes = gtk_list_store_new(3, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING);
+
+ gtk_list_store_append(prefs_sound_themes, &iter);
+ gtk_list_store_set(prefs_sound_themes, &iter, 0, pixbuf, 2, "", -1);
+
+ /* blist themes */
+ prefs_blist_themes = gtk_list_store_new(3, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING);
+
+ gtk_list_store_append(prefs_blist_themes, &iter);
+ gtk_list_store_set(prefs_blist_themes, &iter, 0, pixbuf, 1, "<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);
+
+ gdk_pixbuf_unref(pixbuf);
+}
+
+/* builds a theme combo box from a list store with colums: icon preview, markup, theme name */
+static GtkWidget *
+prefs_build_theme_combo_box(GtkListStore *store, const gchar *current_theme)
+{
+ GtkWidget *combo_box;
+ GtkCellRenderer *cell_rend;
+ GtkTreeIter iter;
+ gchar *theme = NULL;
+ gboolean unset = TRUE;
+
+ g_return_val_if_fail(store != NULL && current_theme != NULL, NULL);
+
+ combo_box = gtk_combo_box_new_with_model(GTK_TREE_MODEL(store));
+
+ cell_rend = gtk_cell_renderer_pixbuf_new();
+ gtk_cell_renderer_set_fixed_size(cell_rend, PREFS_OPTIMAL_ICON_SIZE, PREFS_OPTIMAL_ICON_SIZE);
+ gtk_cell_layout_pack_start(GTK_CELL_LAYOUT (combo_box), cell_rend, FALSE);
+ gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combo_box), cell_rend, "pixbuf", 0, NULL);
+
+ cell_rend = gtk_cell_renderer_text_new();
+ gtk_cell_layout_pack_start(GTK_CELL_LAYOUT (combo_box), cell_rend, FALSE);
+ gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combo_box), cell_rend, "markup", 1, NULL);
+/*#if GTK_CHECK_VERSION(2,6,0)
+ g_object_set(cell_rend, "ellipsize", PANGO_ELLIPSIZE_END, NULL);
+#endif*/
+
+ if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(store), &iter)) {
+ do {
+ gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, 2, &theme, -1);
+
+ if (g_str_equal(current_theme, theme)) {
+ gtk_combo_box_set_active_iter(GTK_COMBO_BOX(combo_box), &iter);
+ unset = FALSE;
+ }
+
+ g_free(theme);
+ } while (gtk_tree_model_iter_next(GTK_TREE_MODEL(store), &iter));
+ }
+
+ if (unset)
+ gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box), 0);
+
+ return combo_box;
+}
+
+/* sets the current sound theme */
+static void
+prefs_set_sound_theme_cb(GtkComboBox *combo_box, gpointer user_data)
+{
+ gint i;
+ gchar *pref;
+ gchar *new_theme;
+ gboolean success;
+ GtkTreeIter new_iter;
+
+ success = gtk_combo_box_get_active_iter(combo_box, &new_iter);
+ g_return_if_fail(success);
+
+ gtk_tree_model_get(GTK_TREE_MODEL(prefs_sound_themes), &new_iter, 2, &new_theme, -1);
+
+ purple_prefs_set_string(PIDGIN_PREFS_ROOT "/sound/theme", new_theme);
+
+ /* New theme removes all customization */
+ for(i=0; i < PURPLE_NUM_SOUNDS; i++){
+ pref = g_strdup_printf(PIDGIN_PREFS_ROOT "/sound/file/%s",
+ pidgin_sound_get_event_option(i));
+ purple_prefs_set_path(pref, "");
+ g_free(pref);
+ }
+
+ /* gets rid of the "(Custom)" from the last selection */
+ pref_sound_generate_markup();
+
+ gtk_entry_set_text(GTK_ENTRY(sound_entry), _("(default)"));
+
+ g_free(new_theme);
+}
+
/* Does same as normal sort, except "none" is sorted first */
static gint pidgin_sort_smileys (GtkTreeModel *model,
GtkTreeIter *a,
@@ -922,6 +1139,40 @@ 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;
+ GtkTreeIter iter;
+ gchar *name = NULL;
+
+ g_return_if_fail(gtk_combo_box_get_active_iter(combo_box, &iter));
+ gtk_tree_model_get(GTK_TREE_MODEL(prefs_blist_themes), &iter, 2, &name, -1);
+
+ theme = PIDGIN_BLIST_THEME(purple_theme_manager_find_theme(name, "blist"));
+ g_free(name);
+
+ pidgin_blist_set_theme(theme);
+}
+
+/* sets the current icon theme */
+static void
+prefs_set_status_icon_theme_cb(GtkComboBox *combo_box, gpointer user_data)
+{
+ PidginStatusIconTheme *theme;
+ GtkTreeIter iter;
+ gchar *name = NULL;
+
+ g_return_if_fail(gtk_combo_box_get_active_iter(combo_box, &iter));
+ gtk_tree_model_get(GTK_TREE_MODEL(prefs_status_icon_themes), &iter, 2, &name, -1);
+
+ theme = PIDGIN_STATUS_ICON_THEME(purple_theme_manager_find_theme(name, "status-icon"));
+ g_free(name);
+
+ pidgin_stock_load_status_icon_theme(theme);
+}
+
static GtkWidget *
interface_page(void)
{
@@ -929,6 +1180,7 @@ interface_page(void)
GtkWidget *vbox;
GtkWidget *vbox2;
GtkWidget *label;
+ GtkWidget *combo_box;
GtkSizeGroup *sg;
GList *names = NULL;
@@ -937,6 +1189,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",
@@ -1742,6 +2007,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 +2031,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 +2101,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 +2128,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 +2222,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 +2233,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);
@@ -2196,6 +2474,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 +2576,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..e8b7945a53 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,
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/gtksavedstatuses.c b/pidgin/gtksavedstatuses.c
index 5ea80774fa..9df26bf30b 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,
@@ -1007,7 +1007,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 +1020,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 +1086,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 +1218,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);
@@ -1547,7 +1549,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,
@@ -1656,7 +1658,7 @@ enum {
* And whether or not that emblem is visible
*/
SS_MENU_EMBLEM_VISIBLE_COLUMN,
-
+
SS_MENU_NUM_COLUMNS
};
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..d8f0b3e422 100644
--- a/pidgin/gtksmiley.c
+++ b/pidgin/gtksmiley.c
@@ -225,6 +225,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 +239,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;
}
@@ -273,7 +282,7 @@ static void do_add(GtkWidget *widget, PidginSmiley *s)
gsize size = 0;
gchar *filename;
const gchar *dirname = purple_smileys_get_storing_dir();
-
+
/* since this may be called before purple_smiley_new_* has ever been
called, we create the storing dir, if it doesn't exist yet, to be
able to save the pixbuf before adding the smiley */
@@ -286,7 +295,7 @@ 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);
filename = purple_util_get_image_filename(buffer, size);
@@ -385,7 +394,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 +424,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);
@@ -520,9 +529,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 +721,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 +749,3 @@ void pidgin_smiley_manager_show(void)
gtk_widget_show(win);
}
-
diff --git a/pidgin/gtksmiley.h b/pidgin/gtksmiley.h
index 37795c51a4..46f68541a9 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,4 @@ 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_*/
+#endif /* PIDGIN_GTKSMILEY_H */
diff --git a/pidgin/gtksound.c b/pidgin/gtksound.c
index dfb5a5d48c..5e89167819 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"
@@ -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..33d6c46ccb 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
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..2084dfc0e1 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,10 +19,10 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02111-1301, USA. * *
*/
-
+
#ifndef __GTK_SOURCE_UNDO_MANAGER_H__
#define __GTK_SOURCE_UNDO_MANAGER_H__
@@ -44,7 +44,7 @@ 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..9dbc14c02d
--- /dev/null
+++ b/pidgin/gtkstatus-icon-theme.h
@@ -0,0 +1,71 @@
+/**
+ * @file status_icon-theme.h Pidgin Icon Theme Class API
+ */
+
+/* pidgin
+ *
+ * Pidgin is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#ifndef PIDGIN_STATUS_ICON_THEME_H
+#define PIDGIN_STATUS_ICON_THEME_H
+
+#include <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 53760b468a..e7c061d931 100644
--- a/pidgin/gtkstatusbox.c
+++ b/pidgin/gtkstatusbox.c
@@ -1646,7 +1646,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 */
@@ -1698,7 +1698,7 @@ treeview_key_press_event(GtkWidget *widget,
gtk_tree_path_free (path);
return ret;
}
- }
+ }
}
return FALSE;
}
@@ -1777,9 +1777,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, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING,
G_TYPE_STRING, G_TYPE_POINTER, GDK_TYPE_PIXBUF, G_TYPE_BOOLEAN);
- status_box->dropdown_store = gtk_list_store_new(NUM_COLUMNS, G_TYPE_INT, GDK_TYPE_PIXBUF, G_TYPE_STRING,
+ status_box->dropdown_store = gtk_list_store_new(NUM_COLUMNS, G_TYPE_INT, GDK_TYPE_PIXBUF, G_TYPE_STRING,
G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_STRING, G_TYPE_BOOLEAN);
gtk_cell_view_set_model(GTK_CELL_VIEW(status_box->cell_view), GTK_TREE_MODEL(status_box->store));
@@ -2529,7 +2529,7 @@ static void update_size(PidginStatusBox *status_box)
{
GtkTextBuffer *buffer;
GtkTextIter iter;
- int wrapped_lines;
+ int display_lines;
int lines;
GdkRectangle oneline;
int height;
@@ -2545,28 +2545,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);
}
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..77ff10fa18 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);
@@ -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);
@@ -1924,7 +1927,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 +1960,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 +1986,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 +2010,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 +2021,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 +2035,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 +2047,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 +2067,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 +2076,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 +2122,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 +2153,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 +2165,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 +2196,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 +2251,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
@@ -3240,7 +3245,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 +3485,198 @@ 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;
+
+ 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..fb03cec1d0 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.
@@ -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.
@@ -612,13 +612,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 +706,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 +792,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 +819,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..38c045f5de 100644
--- a/pidgin/gtkwhiteboard.c
+++ b/pidgin/gtkwhiteboard.c
@@ -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/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..7d7f394571 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,7 +113,7 @@ static const GtkStockItem stock_items[] =
{ PIDGIN_STOCK_EDIT, N_("_Edit"), 0, 0, NULL }
};
-static struct SizedStockIcon {
+typedef struct {
const char *name;
const char *dir;
const char *filename;
@@ -110,19 +125,10 @@ static struct SizedStockIcon {
gboolean huge;
gboolean rtl;
const char *translucent_name;
-} const sized_stock_icons [] = {
- { PIDGIN_STOCK_STATUS_AVAILABLE, "status", "available.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_AVAILABLE_I },
- { PIDGIN_STOCK_STATUS_AWAY, "status", "away.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_AWAY_I },
- { PIDGIN_STOCK_STATUS_BUSY, "status", "busy.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_BUSY_I },
- { PIDGIN_STOCK_STATUS_CHAT, "status", "chat.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_STATUS_INVISIBLE,"status", "invisible.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_STATUS_XA, "status", "extended-away.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, PIDGIN_STOCK_STATUS_XA_I },
- { PIDGIN_STOCK_STATUS_LOGIN, "status", "log-in.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, NULL },
- { PIDGIN_STOCK_STATUS_LOGOUT, "status", "log-out.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, NULL },
- { PIDGIN_STOCK_STATUS_OFFLINE, "status", "offline.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_OFFLINE_I },
- { PIDGIN_STOCK_STATUS_PERSON, "status", "person.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
- { PIDGIN_STOCK_STATUS_MESSAGE, "toolbar", "message-new.png", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
-
+} SizedStockIcon;
+
+const SizedStockIcon sized_stock_icons [] = {
+
{ PIDGIN_STOCK_STATUS_IGNORED, "emblems", "blocked.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
{ PIDGIN_STOCK_STATUS_FOUNDER, "emblems", "founder.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
{ PIDGIN_STOCK_STATUS_OPERATOR, "emblems", "operator.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
@@ -175,39 +181,53 @@ static struct SizedStockIcon {
{ 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 }
+ { PIDGIN_STOCK_TOOLBAR_BGCOLOR, "toolbar", "change-bgcolor.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TOOLBAR_BLOCK, "emblems", "blocked.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TOOLBAR_FGCOLOR, "toolbar", "change-fgcolor.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TOOLBAR_SMILEY, "toolbar", "emote-select.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TOOLBAR_FONT_FACE, "toolbar", "font-face.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TOOLBAR_TEXT_SMALLER, "toolbar", "font-size-down.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TOOLBAR_TEXT_LARGER, "toolbar", "font-size-up.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TOOLBAR_INSERT, "toolbar", "insert.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TOOLBAR_INSERT_IMAGE, "toolbar", "insert-image.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TOOLBAR_INSERT_LINK, "toolbar", "insert-link.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TOOLBAR_MESSAGE_NEW, "toolbar", "message-new.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TOOLBAR_PENDING, "toolbar", "message-new.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TOOLBAR_PLUGINS, "toolbar", "plugins.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TOOLBAR_UNBLOCK, "toolbar", "unblock.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TOOLBAR_SELECT_AVATAR, "toolbar", "select-avatar.png", FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TOOLBAR_SEND_FILE, "toolbar", "send-file.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TOOLBAR_TRANSFER, "toolbar", "transfer.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }
};
-static void
-add_sized_icon_common(GtkIconSet *iconset, GtkIconSize sizeid, const char *dir,
- gboolean rtl, const char *size, const char *file,
- gboolean translucent);
+const SizedStockIcon sized_status_icons [] = {
+
+ { PIDGIN_STOCK_STATUS_AVAILABLE, "status", "available.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_AVAILABLE_I },
+ { PIDGIN_STOCK_STATUS_AWAY, "status", "away.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_AWAY_I },
+ { PIDGIN_STOCK_STATUS_BUSY, "status", "busy.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_BUSY_I },
+ { PIDGIN_STOCK_STATUS_CHAT, "status", "chat.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_STATUS_INVISIBLE, "status", "invisible.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_STATUS_XA, "status", "extended-away.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, PIDGIN_STOCK_STATUS_XA_I },
+ { PIDGIN_STOCK_STATUS_LOGIN, "status", "log-in.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, NULL },
+ { PIDGIN_STOCK_STATUS_LOGOUT, "status", "log-out.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, NULL },
+ { PIDGIN_STOCK_STATUS_OFFLINE, "status", "offline.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_OFFLINE_I },
+ { PIDGIN_STOCK_STATUS_PERSON, "status", "person.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_STATUS_MESSAGE, "toolbar", "message-new.png", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL },
+
+ { PIDGIN_STOCK_TRAY_AVAILABLE, "tray", "tray-online.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TRAY_INVISIBLE, "tray", "tray-invisible.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TRAY_AWAY, "tray", "tray-away.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TRAY_BUSY, "tray", "tray-busy.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TRAY_XA, "tray", "tray-extended-away.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TRAY_OFFLINE, "tray", "tray-offline.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TRAY_CONNECT, "tray", "tray-connecting.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TRAY_PENDING, "tray", "tray-new-im.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
+ { PIDGIN_STOCK_TRAY_EMAIL, "tray", "tray-message.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL }
+};
+
+/*****************************************************************************
+ * Private functions
+ *****************************************************************************/
static gchar *
find_file_common(const char *name)
@@ -257,16 +277,10 @@ 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;
@@ -300,28 +314,48 @@ do_alphashift (GdkPixbuf *dest, GdkPixbuf *src)
}
}
-static void
-add_translucent_sized_icon(GtkIconSet *iconset, GtkIconSize sizeid, const char *dir,
- gboolean rtl, const char *size, const char *file)
+static gchar *
+find_icon_file(PidginStatusIconTheme *theme, const gchar *size, SizedStockIcon sized_icon, gboolean rtl)
{
- add_sized_icon_common(iconset, sizeid, dir, rtl, size, file, TRUE);
+ const gchar *file, *dir;
+ gchar *file_full = NULL;
+ gchar *tmp;
+
+ if (theme != NULL) {
+ file = pidgin_icon_theme_get_icon(PIDGIN_ICON_THEME(theme), sized_icon.name);
+ dir = purple_theme_get_dir(PURPLE_THEME(theme));
+
+ if (rtl)
+ file_full = g_build_filename(dir, size, "rtl", file, NULL);
+ else
+ file_full = g_build_filename(dir, size, file, NULL);
+
+ if (g_file_test(file_full, G_FILE_TEST_IS_REGULAR))
+ return file_full;
+
+ g_free(file_full);
+ }
+
+ if (rtl)
+ tmp = g_build_filename("pixmaps", "pidgin", sized_icon.dir, size, "rtl", sized_icon.filename, NULL);
+ else
+ tmp = g_build_filename("pixmaps", "pidgin", sized_icon.dir, size, sized_icon.filename, NULL);
+
+ file_full = find_file_common(tmp);
+ g_free(tmp);
+ return file_full;
}
static void
-add_sized_icon_common(GtkIconSet *iconset, GtkIconSize sizeid, const char *dir,
- gboolean rtl, const char *size, const char *file,
- gboolean translucent)
+add_sized_icon(GtkIconSet *iconset, GtkIconSize sizeid, PidginStatusIconTheme *theme,
+ const char *size, SizedStockIcon sized_icon, gboolean translucent)
{
- char *filename, *subpath;
+ char *filename;
GtkIconSource *source;
GdkPixbuf *pixbuf;
- subpath = g_build_filename("pixmaps", "pidgin", dir, size, file, NULL);
- filename = find_file_common(subpath);
- g_free(subpath);
- if (!filename)
- return;
-
+ filename = find_icon_file(theme, size, sized_icon, FALSE);
+ g_return_if_fail(filename != NULL);
pixbuf = gdk_pixbuf_new_from_file(filename, NULL);
if (translucent)
do_alphashift(pixbuf, pixbuf);
@@ -329,7 +363,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 +383,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,20 +404,90 @@ add_sized_icon_common(GtkIconSet *iconset, GtkIconSize sizeid, const char *dir,
}
}
+/*****************************************************************************
+ * Public API functions
+ *****************************************************************************/
+
+void
+pidgin_stock_load_status_icon_theme(PidginStatusIconTheme *theme)
+{
+ GtkIconFactory *icon_factory;
+ gint i;
+ GtkIconSet *normal;
+ GtkIconSet *translucent = NULL;
+ GtkWidget *win;
+
+ if (theme != NULL) {
+ purple_prefs_set_string(PIDGIN_PREFS_ROOT "/status/icon-theme",
+ purple_theme_get_name(PURPLE_THEME(theme)));
+ purple_prefs_set_path(PIDGIN_PREFS_ROOT "/status/icon-theme-dir",
+ purple_theme_get_dir(PURPLE_THEME(theme)));
+ }
+ else {
+ purple_prefs_set_string(PIDGIN_PREFS_ROOT "/status/icon-theme", "");
+ purple_prefs_set_path(PIDGIN_PREFS_ROOT "/status/icon-theme-dir", "");
+ }
+
+ icon_factory = gtk_icon_factory_new();
+
+ gtk_icon_factory_add_default(icon_factory);
+
+ win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ gtk_widget_realize(win);
+
+ for (i = 0; i < G_N_ELEMENTS(sized_status_icons); i++)
+ {
+ normal = gtk_icon_set_new();
+ if (sized_status_icons[i].translucent_name)
+ translucent = gtk_icon_set_new();
+
+#define ADD_SIZED_ICON(name, size) if (sized_status_icons[i].name) { \
+ add_sized_icon(normal, name, theme, size, sized_status_icons[i], FALSE); \
+ if (sized_status_icons[i].translucent_name) \
+ add_sized_icon(translucent, name, theme, size, sized_status_icons[i], TRUE); \
+ }
+ ADD_SIZED_ICON(microscopic, "11");
+ ADD_SIZED_ICON(extra_small, "16");
+ ADD_SIZED_ICON(small, "22");
+ ADD_SIZED_ICON(medium, "32");
+ ADD_SIZED_ICON(large, "48");
+ ADD_SIZED_ICON(huge, "64");
+#undef ADD_SIZED_ICON
+
+ gtk_icon_factory_add(icon_factory, sized_status_icons[i].name, normal);
+ gtk_icon_set_unref(normal);
+
+ if (sized_status_icons[i].translucent_name) {
+ gtk_icon_factory_add(icon_factory, sized_status_icons[i].translucent_name, translucent);
+ gtk_icon_set_unref(translucent);
+ }
+ }
+
+
+ gtk_widget_destroy(win);
+ g_object_unref(G_OBJECT(icon_factory));
+}
+
void
pidgin_stock_init(void)
{
- static gboolean stock_initted = FALSE;
GtkIconFactory *icon_factory;
size_t i;
GtkWidget *win;
- GtkIconSize microscopic, extra_small, small, medium, large, huge;
+ PidginIconThemeLoader *loader;
+ const gchar *path = NULL;
if (stock_initted)
return;
stock_initted = TRUE;
+ /* Setup the status icon theme */
+ loader = g_object_new(PIDGIN_TYPE_ICON_THEME_LOADER, "type", "status-icon", NULL);
+ purple_theme_manager_register_type(PURPLE_THEME_LOADER(loader));
+ purple_prefs_add_string(PIDGIN_PREFS_ROOT "/status/icon-theme", "");
+ purple_prefs_add_path(PIDGIN_PREFS_ROOT "/status/icon-theme-dir", "");
+
/* Setup the icon factory. */
icon_factory = gtk_icon_factory_new();
@@ -394,6 +497,7 @@ pidgin_stock_init(void)
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;
@@ -432,7 +536,6 @@ pidgin_stock_init(void)
}
/* 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);
@@ -440,18 +543,13 @@ pidgin_stock_init(void)
large = gtk_icon_size_register(PIDGIN_ICON_SIZE_TANGO_LARGE, 48, 48);
huge = gtk_icon_size_register(PIDGIN_ICON_SIZE_TANGO_HUGE, 64, 64);
+ /* All non-status sized icons */
for (i = 0; i < G_N_ELEMENTS(sized_stock_icons); i++)
{
- GtkIconSet *iconset;
-
- iconset = gtk_icon_set_new();
+ GtkIconSet *iconset = gtk_icon_set_new();
-#define ADD_SIZED_ICON(name, size) do { \
- if (sized_stock_icons[i].name) \
- add_sized_icon(iconset, name, \
- sized_stock_icons[i].dir, sized_stock_icons[i].rtl, \
- size, sized_stock_icons[i].filename); \
- } while (0)
+#define ADD_SIZED_ICON(name, size) if (sized_stock_icons[i].name) \
+ add_sized_icon(iconset, name, NULL, size, sized_stock_icons[i], FALSE);
ADD_SIZED_ICON(microscopic, "11");
ADD_SIZED_ICON(extra_small, "16");
ADD_SIZED_ICON(small, "22");
@@ -462,32 +560,21 @@ 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));
+ /* Pre-load Status icon theme - this avoids a bug with displaying the correct icon in the tray, theme is destroyed after*/
+ if (purple_prefs_get_string(PIDGIN_PREFS_ROOT "/icon/status/theme") &&
+ (path = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/status/icon-theme-dir"))) {
+
+ PidginStatusIconTheme *theme = PIDGIN_STATUS_ICON_THEME(purple_theme_loader_build(PURPLE_THEME_LOADER(loader), path));
+ pidgin_stock_load_status_icon_theme(theme);
+ g_object_unref(G_OBJECT(theme));
+
+ } else pidgin_stock_load_status_icon_theme(NULL);
+
/* Register the stock items. */
gtk_stock_add_static(stock_items, G_N_ELEMENTS(stock_items));
}
diff --git a/pidgin/pidginstock.h b/pidgin/pidginstock.h
index 528f2db18e..ae0b3c34b1 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
@@ -24,6 +24,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
*/
#include <gtk/gtkstock.h>
+#include "gtkstatus-icon-theme.h"
#ifndef _PIDGIN_STOCK_H_
#define _PIDGIN_STOCK_H_
@@ -177,6 +178,14 @@
#define PIDGIN_ICON_SIZE_TANGO_MEDIUM "pidgin-icon-size-tango-medium"
#define PIDGIN_ICON_SIZE_TANGO_LARGE "pidgin-icon-size-tango-large"
#define PIDGIN_ICON_SIZE_TANGO_HUGE "pidgin-icon-size-tango-huge"
+
+/**
+ * Loades all of the icons from the status icon theme into Pidgin stock
+ *
+ * @param theme the theme to load, or null to load all the default icons
+ */
+void pidgin_stock_load_status_icon_theme(PidginStatusIconTheme *theme);
+
/**
* Sets up the purple stock repository.
*/
diff --git a/pidgin/pixmaps/Makefile.am b/pidgin/pixmaps/Makefile.am
index 8fc9ef5713..7408dae766 100644
--- a/pidgin/pixmaps/Makefile.am
+++ b/pidgin/pixmaps/Makefile.am
@@ -488,6 +488,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 +499,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 +527,6 @@ EXTRA_DIST = \
$(PROTOCOLS_16_SCALABLE) \
$(PROTOCOLS_22_SCALABLE) \
$(PROTOCOLS_48_SCALABLE) \
- $(TOOLBAR_11) \
$(TOOLBAR_16_SCALABLE) \
$(TOOLBAR_22_SCALABLE)
@@ -553,6 +554,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/plugins/gevolution/gevo-util.c b/pidgin/plugins/gevolution/gevo-util.c
index c0613ae8f0..54f54abf53 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,7 +41,7 @@ gevo_add_buddy(PurpleAccount *account, const char *group_name,
purple_blist_add_group(group, NULL);
}
- buddy = purple_buddy_new(account, screenname, alias);
+ buddy = purple_buddy_new(account, buddy_name, alias);
purple_blist_add_buddy(buddy, NULL, group, NULL);
purple_account_add_buddy(account, buddy);
diff --git a/pidgin/plugins/gevolution/gevolution.c b/pidgin/plugins/gevolution/gevolution.c
index c7851ba036..2d807c523d 100644
--- a/pidgin/plugins/gevolution/gevolution.c
+++ b/pidgin/plugins/gevolution/gevolution.c
@@ -52,7 +52,7 @@ enum
{
COLUMN_AUTOADD,
COLUMN_ICON,
- COLUMN_SCREENNAME,
+ COLUMN_USERNAME,
COLUMN_DATA,
NUM_COLUMNS
};
@@ -463,11 +463,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 +489,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/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/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/ticker/ticker.c b/pidgin/plugins/ticker/ticker.c
index 284c09b417..9a0ffcc7fa 100644
--- a/pidgin/plugins/ticker/ticker.c
+++ b/pidgin/plugins/ticker/ticker.c
@@ -91,7 +91,9 @@ 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);
+ purple_conversation_new(PURPLE_CONV_TYPE_IM,
+ purple_buddy_get_account(b),
+ purple_buddy_get_name(b));
return TRUE;
}
@@ -217,20 +219,25 @@ static void buddy_ticker_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/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/win32/nsis/pidgin-installer.nsi b/pidgin/win32/nsis/pidgin-installer.nsi
index fafe85ee48..f39078a162 100644
--- a/pidgin/win32/nsis/pidgin-installer.nsi
+++ b/pidgin/win32/nsis/pidgin-installer.nsi
@@ -709,6 +709,8 @@ Section Uninstall
Push "ymsgr"
Call un.UnregisterURIHandler
+ Delete "$INSTDIR\ca-certs\America_Online_Root_Certification_Authority_1.pem"
+ Delete "$INSTDIR\ca-certs\AOL_Member_CA.pem"
Delete "$INSTDIR\ca-certs\CAcert_Class3.pem"
Delete "$INSTDIR\ca-certs\CAcert_Root.pem"
Delete "$INSTDIR\ca-certs\Equifax_Secure_CA.pem"
diff --git a/po/ChangeLog b/po/ChangeLog
index 6ff4d104a3..b7ea267d32 100644
--- a/po/ChangeLog
+++ b/po/ChangeLog
@@ -1,16 +1,31 @@
Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul
+version 2.6.0
+
version 2.5.5
+ * Afrikaans translation updated (Friedel Wolff)
* Bengali translation updated (Israt Jahan)
+ * Catalan translation updated (Josep Puigdemont)
+ * Chinese (Hong Kong) translation updated (Ambrose C. Li)
+ * Chinese (Traditional) translation updated (Ambrose C. Li)
* Czech translation updated (David Vachulka)
* Danish translation updated (Peter Bach)
+ * French translation updated (Éric Boumaour)
+ * German translation updated (Jochen Kemnade and Björn Voigt)
+ * Hungarian translation updated (Gabor Kelemen)
+ * Khmer translation added (Khoem Sokhem)
+ * Lithuanian translation updated (Laurynas Biveinis)
* Norwegian Bokmål translation updated (Hans Fredrik Nordhaug)
* Norwegian Nynorsk translation updated (Yngve Spjeld Landro)
+ * Portuguese (Brazilian) translation updated (Rodrigo Luiz
+ Marques Flores)
+ * Punjabi translation updated (Amanpreet Singh Alam)
* Russian translation updated (Антон Самохвалов)
* Serbian translation updated (Miloš Popović)
* Serbian Latin translation updated (Miloš Popović)
* Slovak translation updated (loptosko)
* Slovenian translation updated (Martin Srebotnjak)
+ * Swedish translation updated (Peter Hjalmarsson)
version 2.5.4
* Czech translation updated (David Vachulka)
diff --git a/po/POTFILES.in b/po/POTFILES.in
index e751a35eb6..b221f12ced 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -133,6 +133,7 @@ libpurple/protocols/oscar/oscar.c
libpurple/protocols/oscar/peer.c
libpurple/protocols/qq/buddy_info.c
libpurple/protocols/qq/buddy_list.c
+libpurple/protocols/qq/buddy_memo.c
libpurple/protocols/qq/buddy_opt.c
libpurple/protocols/qq/group.c
libpurple/protocols/qq/group_im.c
@@ -183,6 +184,7 @@ libpurple/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
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 bf8c45996a..fcb7076520 100644
--- a/po/af.po
+++ b/po/af.po
@@ -3,19 +3,21 @@
# This file is distributed under the same license as the pidgin package.
# Friedel Wolff <friedel BY translate.org.za>, 2006-2008.
# Samuel Murray <afrikaans BY gmail.com>, 2007
+# F Wolff <friedel@translate.org.za>, 2009
msgid ""
msgstr ""
"Project-Id-Version: 2.3.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-18 01:17-0800\n"
-"PO-Revision-Date: 2008-12-18 00:13+0200\n"
+"POT-Creation-Date: 2009-02-27 10:14-0800\n"
+"PO-Revision-Date: 2009-02-23 19:54+0200\n"
"Last-Translator: F Wolff <friedel@translate.org.za>\n"
-"Language-Team: translate-discuss-swedish@lists.kde.org\n"
+"Language-Team: translate-discuss-af@lists.sourceforge.net\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Language: af\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Virtaal 0.2\n"
+"X-Generator: Virtaal 0.3.1\n"
#. Translators may want to transliterate the name.
#. It is not to be translated.
@@ -32,7 +34,7 @@ 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"
@@ -41,7 +43,7 @@ msgstr ""
"Gebruik: %s [OPSIE]...\n"
"\n"
" -c, --config=GIDS gebruik GIDS vir konfigurasielêers\n"
-" -d, --debug skryf ontfoutboodskappe na stdout\n"
+" -d, --debug skryf ontfoutboodskappe na stderr\n"
" -h, --help wys hierdie hulp en sluit af\n"
" -n, --nologin moenie outomaties aanmeld nie\n"
" -v, --version wys die huidige weergawe en sluit af\n"
@@ -1163,7 +1165,6 @@ msgstr "Minute voor verandering van status:"
msgid "Change status to"
msgstr "Verander status na:"
-#. Conversations
msgid "Conversations"
msgstr "Gesprekke"
@@ -1486,7 +1487,6 @@ msgstr ""
"Wanneer 'n nuwe gesprek geopen word, sal hierdie inprop die laaste gesprek "
"in die huidige een invoeg."
-#, c-format
msgid "Online"
msgstr "Aanlyn"
@@ -1922,7 +1922,6 @@ msgstr "Begin nou met oordrag van %s vanaf %s"
msgid "Transfer of file %s complete"
msgstr "Oordrag van lêer %s voltooi"
-#, c-format
msgid "File transfer complete"
msgstr "Lêeroordrag voltooi"
@@ -1930,7 +1929,6 @@ msgstr "Lêeroordrag voltooi"
msgid "You canceled the transfer of %s"
msgstr "U het die oordrag van %s gekanselleer"
-#, c-format
msgid "File transfer cancelled"
msgstr "Lêeroordrag gekanselleer"
@@ -2145,7 +2143,6 @@ msgstr "(%s) %s <AUTO-REPLY>: %s\n"
msgid "You are using %s, but this plugin requires %s."
msgstr "U gebruik tans %s, maar hierdie inprop vereis %s."
-#, c-format
msgid "This plugin has not defined an ID."
msgstr "Hierdie inprop is nie as 'n ID gedefinieer nie."
@@ -2838,7 +2835,6 @@ msgstr ""
"Kon nie verbinding met plaaslike mDNS-bediener bewerkstellig nie. Loop dit "
"tans?"
-#. Creating the options for the protocol
msgid "First name"
msgstr "Naam"
@@ -2870,6 +2866,11 @@ msgstr "Bonjour-protokolinprop"
msgid "Purple Person"
msgstr "Pers persoon"
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "Plaaslike poort"
+
msgid "Bonjour"
msgstr "Bonjour"
@@ -3033,7 +3034,6 @@ msgstr "Beskikbaar"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "Weg"
@@ -3917,7 +3917,6 @@ msgstr "Geselserig"
msgid "Extended Away"
msgstr "Vir lank weg"
-#, c-format
msgid "Do Not Disturb"
msgstr "Moenie pla nie"
@@ -4153,6 +4152,9 @@ msgstr "Stawing"
msgid "Re-initializing Stream"
msgstr "Herinisialiseer stroom"
+msgid "Server doesn't support blocking"
+msgstr "Bediener ondersteun nie blokkering nie"
+
msgid "Not Authorized"
msgstr "Nie gemagtig nie"
@@ -4663,9 +4665,6 @@ msgstr "Aksies"
msgid "Select an action"
msgstr "Stel 'n aksie op"
-msgid "Unable to retrieve MSN Address Book"
-msgstr "Kan nie MSN-adresboek haal nie"
-
#. only notify the user about problems adding to the friends list
#. * maybe we should do something else for other lists, but it probably
#. * won't cause too many problems if we just ignore it
@@ -4907,7 +4906,6 @@ msgstr "Kinderpaspoort sonder ouertoestemming"
msgid "Passport account not yet verified"
msgstr "Paspoortrekening nog nie geverifieer nie"
-#, c-format
msgid "Passport account suspended"
msgstr "Paspoortrekening opgeskort"
@@ -4926,9 +4924,8 @@ msgstr "MSN-fout: %s\n"
msgid "Other Contacts"
msgstr "Ander kontakte"
-#, fuzzy
msgid "Non-IM Contacts"
-msgstr "Verwyder kontak"
+msgstr ""
msgid "Nudge"
msgstr "Stootjie"
@@ -6112,7 +6109,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr "Fout. SSL-steun nie geïnstalleer nie."
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr ""
"Hierdie konferensie is gesluit. Geen verdere boodskappe kan gestuur word nie."
@@ -6377,23 +6373,18 @@ msgstr "Kammera"
msgid "Screen Sharing"
msgstr "Skermdeling"
-#, c-format
msgid "Free For Chat"
msgstr "Beskikbaar vir geselsies"
-#, c-format
msgid "Not Available"
msgstr "Nie beskikbaar nie"
-#, c-format
msgid "Occupied"
msgstr "Beset"
-#, c-format
msgid "Web Aware"
msgstr "Web Aware"
-#, c-format
msgid "Invisible"
msgstr "Onsigbaar"
@@ -6492,13 +6483,11 @@ msgstr "Tik die 6-syfer-nommer vanaf die digitale skerm."
msgid "_OK"
msgstr "_Regso"
-#, c-format
-msgid ""
-"You may be disconnected shortly. You may want to use TOC until this is "
-"fixed. Check %s for updates."
+#, fuzzy, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
msgstr ""
-"U kan dalk binnekort ontkoppel word. U moet dalk TOC gebruik tot dit "
-"reggemaak is. Kontroleer %s vir bywerkings."
+"U kan dalk binnekort ontkoppel word. As dit gebeur, kontroleer %s vir "
+"bywerkings."
msgid "Unable to get a valid AIM login hash."
msgstr "Kan nie 'n geldige AIM-aanmeldhutswaarde kry nie."
@@ -6960,6 +6949,7 @@ msgstr "_Verbind"
msgid "Get AIM Info"
msgstr "Kry AIM-inligting"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "Wysig vriendkommentaar"
@@ -7067,7 +7057,6 @@ msgstr "Vra tans %s om aan ons by %s:%hu te koppel vir direkte kitsboodskap."
msgid "Attempting to connect to %s:%hu."
msgstr "Probeer tans om aan %s:%hu te koppel."
-#, c-format
msgid "Attempting to connect via proxy server."
msgstr "Probeer tans om via instaanbediener te koppel."
@@ -7295,7 +7284,6 @@ msgstr "Verwyder van vriend %u het misluk"
msgid "Failed removing me from %d's buddy list"
msgstr "%s het u van sy of haar vriendelys verwyder."
-#, fuzzy
msgid "No reason given"
msgstr "Geen rede gegee nie"
@@ -7331,32 +7319,26 @@ msgstr "Tik gerus die Qun-nommer"
msgid "You can only search for permanent Qun\n"
msgstr "U kan net vir permanente QQ-groepe soek\n"
-#, fuzzy
msgid "(Invalid UTF-8 string)"
-msgstr "Ongeldige instaaninstellings"
+msgstr "(Ongeldige UTF-8-string)"
-#, fuzzy
msgid "Not member"
-msgstr "Ek is nie 'n lid nie"
+msgstr "Nie 'n lid nie"
msgid "Member"
msgstr "Lid"
-#, fuzzy
msgid "Requesting"
-msgstr "Versoek-dialoog"
+msgstr "Versoek tans"
-#, fuzzy
msgid "Admin"
-msgstr "Adium"
+msgstr "Admin"
-#, fuzzy
msgid "Notice"
-msgstr "Kennisgewing:"
+msgstr "Kennisgewing"
-#, fuzzy
msgid "Detail"
-msgstr "Verstek"
+msgstr "Detail"
msgid "Creator"
msgstr "Skepper"
@@ -7365,17 +7347,14 @@ msgstr "Skepper"
msgid "About me"
msgstr "Omtrent %s"
-#, fuzzy
msgid "Category"
-msgstr "Geselsiefout"
+msgstr "Kategorie"
-#, fuzzy
msgid "The Qun does not allow others to join"
-msgstr "Hierdie groep laat nie ander toe om aan te sluit nie"
+msgstr "De Qun laat nie ander toe om aan te sluit nie"
-#, fuzzy
msgid "Join QQ Qun"
-msgstr "Sluit by geselsie aan"
+msgstr "Sluit by QQ Qun aan"
msgid "Input request here"
msgstr "Gee versoek hier"
@@ -7401,9 +7380,8 @@ msgstr "Misluk:"
msgid "Join Qun, Unknown Reply"
msgstr ""
-#, fuzzy
msgid "Quit Qun"
-msgstr "QQ-qun"
+msgstr ""
msgid ""
"Note, if you are the creator, \n"
@@ -7412,9 +7390,8 @@ msgstr ""
"Let wel, as u die skepper is, \n"
"sal hierdie bewerking eindelik hierdie qun verwyder."
-#, fuzzy
msgid "Sorry, you are not our style"
-msgstr "Jammer, u's nie my tipe nie..."
+msgstr "Jammer, u's nie my tipe nie"
#, fuzzy
msgid "Successfully changed Qun members"
@@ -7494,21 +7471,20 @@ msgstr ""
msgid "Invalid name"
msgstr "Ongeldige naam"
-#, fuzzy
msgid "Select icon..."
-msgstr "Kies vouer..."
+msgstr "Kies ikoon..."
-#, fuzzy, c-format
+#, c-format
msgid "<b>Login time</b>: %d-%d-%d, %d:%d:%d<br>\n"
-msgstr "<b>Aanmeldtyd</b>: %s<br>\n"
+msgstr "<b>Aanmeldtyd</b>: %d-%d-%d, %d:%d:%d<br>\n"
-#, fuzzy, c-format
+#, c-format
msgid "<b>Total Online Buddies</b>: %d<br>\n"
-msgstr "<b>Tans aanlyn</b>: %d<br>\n"
+msgstr "<b>Totale aantal vriende aanlyn</b>: %d<br>\n"
-#, fuzzy, c-format
+#, c-format
msgid "<b>Last Refresh</b>: %d-%d-%d, %d:%d:%d<br>\n"
-msgstr "<b>Vorige verfrissing</b>: %s<br>\n"
+msgstr "<b>Vorige verfrissing</b>: %d-%d-%d, %d:%d:%d<br>\n"
#, c-format
msgid "<b>Server</b>: %s<br>\n"
@@ -7522,9 +7498,9 @@ msgstr "<b>Aanmeldtyd</b>: %s<br>\n"
msgid "<b>Connection Mode</b>: %s<br>\n"
msgstr "<b>Verbindingmodus</b>: %s<br>\n"
-#, fuzzy, c-format
+#, c-format
msgid "<b>My Internet IP</b>: %s:%d<br>\n"
-msgstr "<b>My internetadres</b>: %s<br>\n"
+msgstr "<b>My internetadres</b>: %s:%d<br>\n"
#, c-format
msgid "<b>Sent</b>: %lu<br>\n"
@@ -7546,13 +7522,13 @@ msgstr "<b>Ontvang</b>: %lu<br>\n"
msgid "<b>Received Duplicate</b>: %lu<br>\n"
msgstr "<b>Duplikaat ontvang</b>: %lu<br>\n"
-#, fuzzy, c-format
+#, c-format
msgid "<b>Time</b>: %d-%d-%d, %d:%d:%d<br>\n"
-msgstr "<b>Aanmeldtyd</b>: %s<br>\n"
+msgstr "<b>Tyd</b>: %d-%d-%d, %d:%d:%d<br>\n"
-#, fuzzy, c-format
+#, c-format
msgid "<b>IP</b>: %s<br>\n"
-msgstr "<b>Bediener</b>: %s<br>\n"
+msgstr "<b>IP</b>: %s<br>\n"
msgid "Login Information"
msgstr "Aanmeldinligting"
@@ -7571,6 +7547,10 @@ msgstr "<b>Vorige verfrissing</b>: %s<br>\n"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<b>Gestuur</b>: %lu<br>\n"
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<b>Vorige verfrissing</b>: %s<br>\n"
+
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr ""
@@ -7581,9 +7561,8 @@ msgstr ""
msgid "About OpenQ %s"
msgstr "Omtrent %s"
-#, fuzzy
msgid "Change Icon"
-msgstr "Stoor ikoon"
+msgstr "Verander ikoon"
msgid "Change Password"
msgstr "Verander wagwoord"
@@ -7598,6 +7577,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "Omtrent %s"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Wysig adres"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7617,7 +7600,7 @@ msgstr "Outomaties"
#, fuzzy
msgid "Select Server"
-msgstr "Kies gebruiker"
+msgstr "Kies bediener"
msgid "QQ2005"
msgstr ""
@@ -7637,6 +7620,9 @@ msgstr "Wys bedienerkennisgewing"
msgid "Show server news"
msgstr "Wys bedienernuus"
+msgid "Show chat room when msg comes"
+msgstr ""
+
#, fuzzy
msgid "Keep alive interval (seconds)"
msgstr "Wakkerhou-interval(le)"
@@ -9284,6 +9270,9 @@ msgstr "Kon nie gasheernaam oplos nie"
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr "SIP-gebruikername mag nie spasies of @-simbole bevat nie"
+msgid "SIP connect server not specified"
+msgstr ""
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -11369,6 +11358,10 @@ msgstr "Litous"
msgid "Macedonian"
msgstr "Masedonies"
+#, fuzzy
+msgid "Mongolian"
+msgstr "Mongools"
+
msgid "Bokmål Norwegian"
msgstr "Bokmål-Noorweegs"
@@ -11483,8 +11476,30 @@ msgstr ""
"program nie.<BR><BR>"
#, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
-msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin op 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\">Vrae:</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\">Hulp d.m.v. e-pos:</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-kanaal:</FONT> #pidgin op 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 "Huidige programmeerders"
@@ -12139,6 +12154,10 @@ msgstr ""
msgid "Pidgin"
msgstr "Pidgin"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr "Sluit af omdat 'n ander libpurple-kliënt reeds loop.\n"
+
msgid "Open All Messages"
msgstr "Open alle boodskappe"
@@ -12478,6 +12497,10 @@ msgstr "Instaanbediener"
msgid "No proxy"
msgstr "Geen instaanbediener"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr "Gebruik afgeleë DNS met SOCKS4-instaanbedieners"
+
msgid "_User:"
msgstr "_Gebruiker:"
@@ -13918,9 +13941,6 @@ msgstr "_Hou vriendelysvenster bo:"
msgid "Only when docked"
msgstr "Net indien gedok"
-msgid "_Flash window when chat messages are received"
-msgstr "_Flits venster wanneer geselsieboodskappe ontvang word"
-
msgid "Windows Pidgin Options"
msgstr "Windows Pidgin-opsies"
@@ -13969,6 +13989,19 @@ 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 "Unable to retrieve MSN Address Book"
+#~ msgstr "Kan nie MSN-adresboek haal nie"
+
+#~ msgid ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+#~ msgstr ""
+#~ "U kan dalk binnekort ontkoppel word. U moet dalk TOC gebruik tot dit "
+#~ "reggemaak is. Kontroleer %s vir bywerkings."
+
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "_Flits venster wanneer geselsieboodskappe ontvang word"
+
#~ msgid "Connection to server lost (no data received within %d second)"
#~ msgid_plural ""
#~ "Connection to server lost (no data received within %d seconds)"
diff --git a/po/bn.po b/po/bn.po
index ce6d2b9dd8..c2f0dc3ac2 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-01-13 09:58-0500\n"
+"POT-Creation-Date: 2009-02-27 10:17-0800\n"
"PO-Revision-Date: 2008-11-13 17:07+0600\n"
"Last-Translator: Israt Jahan <israt@ankur.org.bd>\n"
"Language-Team: Bengali <core@bengalinux.org>\n"
@@ -21,24 +21,20 @@ msgstr ""
#. Translators may want to transliterate the name.
#. It is not to be translated.
-#: ../finch/finch.c:64 ../finch/finch.c:296 ../finch/finch.c:325
-#: ../finch/finch.c:413
msgid "Finch"
msgstr "Finch"
-#: ../finch/finch.c:208
#, c-format
msgid "%s. Try `%s -h' for more information.\n"
msgstr "%s। আরও তথ্য জানাতে `%s -h' দ্বারা চেষ্টা করুন।\n"
-#: ../finch/finch.c:210
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s\n"
"Usage: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -53,7 +49,6 @@ msgstr ""
" -v, --version বর্তমান সংস্করণ প্রদর্শন করুন এবং ত্যাগ করুন\n"
# tithi
-#: ../finch/finch.c:323 ../pidgin/gtkmain.c:732
#, c-format
msgid ""
"%s encountered errors migrating your settings from %s to %s. Please "
@@ -64,263 +59,108 @@ msgstr ""
"করে তদন্ত করুন এবং নিজের হাতে পরিবর্তন শেষ করুন। অনুগ্রহ করে http://developer."
"pidgin.im এ এই ত্রুটিটির প্রতিবেদন পাঠান"
-#: ../finch/gntaccount.c:126 ../finch/gntaccount.c:505 ../finch/gntblist.c:635
-#: ../finch/gntblist.c:798 ../finch/gntplugin.c:196 ../finch/gntplugin.c:244
-#: ../finch/gntrequest.c:380 ../finch/gntstatus.c:301 ../finch/gntstatus.c:310
-#: ../finch/plugins/gntclipboard.c:115 ../finch/plugins/gntclipboard.c:121
-#: ../finch/plugins/gntclipboard.c:128
-#: ../libpurple/protocols/jabber/buddy.c:2058
-#: ../libpurple/protocols/jabber/chat.c:704
-#: ../libpurple/protocols/jabber/chat.c:715
-#: ../libpurple/protocols/jabber/jabber.c:1779
-#: ../libpurple/protocols/qq/qq_process.c:90
-#: ../libpurple/protocols/silc/ops.c:76 ../libpurple/protocols/silc/ops.c:1473
-#: ../libpurple/protocols/silc10/ops.c:1451
msgid "Error"
msgstr "ত্রুটি"
-#: ../finch/gntaccount.c:126
msgid "Account was not added"
msgstr "একাউন্ট যুক্ত করা হয়নি"
# তিথি
-#: ../finch/gntaccount.c:127
msgid "Username of an account must be non-empty."
msgstr "একটি একাউন্টের ব্যবহারকারীর নাম ফাঁকা থাকতে পারবে না।"
-#: ../finch/gntaccount.c:458
msgid "New mail notifications"
msgstr "নতুন মেইলের প্রজ্ঞাপণ"
-#: ../finch/gntaccount.c:468
msgid "Remember password"
msgstr "গুপ্তসংকেত স্মরণ রাখুন"
# তিথি
-#: ../finch/gntaccount.c:506
msgid "There are no protocol plugins installed."
msgstr "এখানে কোনো প্রটোকল প্লাগইন সংস্থাপিত করা নেই।"
# তিথি
-#: ../finch/gntaccount.c:507
msgid "(You probably forgot to 'make install'.)"
msgstr "(আপনি সম্ভবত 'সংস্থাপন করতে' ভুলে গেছেন।)"
-#: ../finch/gntaccount.c:517 ../finch/gntconn.c:138
-#: ../pidgin/gtkaccount.c:1498 ../pidgin/gtkblist.c:4796
msgid "Modify Account"
msgstr "একাউন্ট পরিবর্তন করুন"
-#: ../finch/gntaccount.c:517
msgid "New Account"
msgstr "নতুন একাউন্ট"
-#: ../finch/gntaccount.c:542 ../pidgin/gtkft.c:698
msgid "Protocol:"
msgstr "প্রটোকল:"
-#: ../finch/gntaccount.c:550
-#: ../pidgin/plugins/gevolution/new_person_dialog.c:294
msgid "Username:"
msgstr "ব্যবহারকারীর নাম:"
-#: ../finch/gntaccount.c:563
msgid "Password:"
msgstr "গুপ্তসংকেত:"
-#: ../finch/gntaccount.c:573
msgid "Alias:"
msgstr "উপনাম:"
#. Register checkbox
-#: ../finch/gntaccount.c:584
msgid "Create this account on the server"
msgstr "সার্ভারে এই একাউন্টটি তৈরী করুন।"
#. Cancel button
#. Cancel
-#: ../finch/gntaccount.c:600 ../finch/gntaccount.c:664
-#: ../finch/gntaccount.c:955 ../finch/gntblist.c:681 ../finch/gntblist.c:787
-#: ../finch/gntblist.c:835 ../finch/gntblist.c:1187 ../finch/gntblist.c:1424
-#: ../finch/gntblist.c:1558 ../finch/gntblist.c:2734 ../finch/gntblist.c:2785
-#: ../finch/gntblist.c:2859 ../finch/gntblist.c:2921 ../finch/gntcertmgr.c:90
-#: ../finch/gntconv.c:596 ../finch/gntplugin.c:532 ../finch/gntpounce.c:471
-#: ../finch/gntpounce.c:679 ../finch/gntprefs.c:265 ../finch/gntsound.c:1064
-#: ../finch/gntstatus.c:145 ../finch/gntstatus.c:485 ../finch/gntstatus.c:610
-#: ../finch/plugins/gnthistory.c:178 ../libpurple/account.c:1119
-#: ../libpurple/account.c:1451 ../libpurple/account.c:1486
-#: ../libpurple/conversation.c:1233 ../libpurple/plugins/buddynote.c:51
-#: ../libpurple/protocols/gg/gg.c:471 ../libpurple/protocols/gg/gg.c:613
-#: ../libpurple/protocols/gg/gg.c:742 ../libpurple/protocols/gg/gg.c:812
-#: ../libpurple/protocols/jabber/buddy.c:745
-#: ../libpurple/protocols/jabber/buddy.c:2452
-#: ../libpurple/protocols/jabber/buddy.c:2488
-#: ../libpurple/protocols/jabber/chat.c:813
-#: ../libpurple/protocols/jabber/jabber.c:1144
-#: ../libpurple/protocols/jabber/jabber.c:1153
-#: ../libpurple/protocols/jabber/jabber.c:1972
-#: ../libpurple/protocols/jabber/si.c:1103
-#: ../libpurple/protocols/jabber/usermood.c:199
-#: ../libpurple/protocols/jabber/usernick.c:78
-#: ../libpurple/protocols/jabber/xdata.c:401
-#: ../libpurple/protocols/msn/msn.c:320 ../libpurple/protocols/msn/msn.c:337
-#: ../libpurple/protocols/msn/msn.c:354 ../libpurple/protocols/msn/msn.c:371
-#: ../libpurple/protocols/msn/msn.c:392 ../libpurple/protocols/msnp9/msn.c:303
-#: ../libpurple/protocols/msnp9/msn.c:320
-#: ../libpurple/protocols/msnp9/msn.c:337
-#: ../libpurple/protocols/msnp9/msn.c:354
-#: ../libpurple/protocols/msnp9/msn.c:375
-#: ../libpurple/protocols/myspace/user.c:833
-#: ../libpurple/protocols/myspace/user.c:896
-#: ../libpurple/protocols/oscar/oscar.c:6320
-#: ../libpurple/protocols/oscar/peer.c:1052
-#: ../libpurple/protocols/qq/buddy_info.c:441
-#: ../libpurple/protocols/qq/buddy_opt.c:326
-#: ../libpurple/protocols/qq/buddy_opt.c:621
-#: ../libpurple/protocols/qq/buddy_opt.c:670
-#: ../libpurple/protocols/qq/buddy_opt.c:1137
-#: ../libpurple/protocols/qq/group.c:112
-#: ../libpurple/protocols/qq/group_join.c:151
-#: ../libpurple/protocols/qq/group_join.c:336
-#: ../libpurple/protocols/qq/group_opt.c:127
-#: ../libpurple/protocols/qq/group_opt.c:355
-#: ../libpurple/protocols/qq/qq_base.c:882
-#: ../libpurple/protocols/sametime/sametime.c:3445
-#: ../libpurple/protocols/sametime/sametime.c:3531
-#: ../libpurple/protocols/sametime/sametime.c:3705
-#: ../libpurple/protocols/sametime/sametime.c:5457
-#: ../libpurple/protocols/sametime/sametime.c:5547
-#: ../libpurple/protocols/sametime/sametime.c:5672
-#: ../libpurple/protocols/silc/buddy.c:455
-#: ../libpurple/protocols/silc/buddy.c:1079
-#: ../libpurple/protocols/silc/buddy.c:1194
-#: ../libpurple/protocols/silc/chat.c:619
-#: ../libpurple/protocols/silc/chat.c:753
-#: ../libpurple/protocols/silc/ops.c:1833
-#: ../libpurple/protocols/silc/silc.c:1058
-#: ../libpurple/protocols/silc/silc.c:1266
-#: ../libpurple/protocols/silc10/buddy.c:468
-#: ../libpurple/protocols/silc10/buddy.c:1087
-#: ../libpurple/protocols/silc10/buddy.c:1192
-#: ../libpurple/protocols/silc10/chat.c:600
-#: ../libpurple/protocols/silc10/chat.c:730
-#: ../libpurple/protocols/silc10/ops.c:1910
-#: ../libpurple/protocols/silc10/silc.c:761
-#: ../libpurple/protocols/silc10/silc.c:967
-#: ../libpurple/protocols/yahoo/yahoo.c:1000
-#: ../libpurple/protocols/yahoo/yahoo.c:3583
-#: ../libpurple/protocols/yahoo/yahoo.c:3594 ../pidgin/gtkaccount.c:1865
-#: ../pidgin/gtkaccount.c:2417 ../pidgin/gtkblist.c:686
-#: ../pidgin/gtkblist.c:7013 ../pidgin/gtkcertmgr.c:197
-#: ../pidgin/gtkdialogs.c:738 ../pidgin/gtkdialogs.c:877
-#: ../pidgin/gtkdialogs.c:969 ../pidgin/gtkdialogs.c:989
-#: ../pidgin/gtkdialogs.c:1013 ../pidgin/gtkdialogs.c:1035
-#: ../pidgin/gtkdialogs.c:1083 ../pidgin/gtkdialogs.c:1124
-#: ../pidgin/gtkdialogs.c:1180 ../pidgin/gtkdialogs.c:1219
-#: ../pidgin/gtkdialogs.c:1246 ../pidgin/gtkimhtmltoolbar.c:439
-#: ../pidgin/gtklog.c:327 ../pidgin/gtkplugin.c:302 ../pidgin/gtkpounce.c:1139
-#: ../pidgin/gtkprivacy.c:509 ../pidgin/gtkprivacy.c:525
-#: ../pidgin/gtkprivacy.c:550 ../pidgin/gtkprivacy.c:564
-#: ../pidgin/gtkrequest.c:273 ../pidgin/gtksavedstatuses.c:348
-#: ../pidgin/gtkstatusbox.c:1628
msgid "Cancel"
msgstr "বাতিল"
#. Save button
#. Save
-#: ../finch/gntaccount.c:604 ../finch/gntcertmgr.c:310 ../finch/gntdebug.c:335
-#: ../finch/gntplugin.c:532 ../finch/gntpounce.c:477 ../finch/gntprefs.c:265
-#: ../finch/gntsound.c:1061 ../finch/gntstatus.c:488 ../finch/gntstatus.c:598
-#: ../libpurple/account.c:1485 ../libpurple/plugins/buddynote.c:50
-#: ../libpurple/protocols/jabber/buddy.c:744 ../pidgin/gtkblist.c:686
-#: ../pidgin/gtkdebug.c:746 ../pidgin/gtkrequest.c:279
msgid "Save"
msgstr "সংরক্ষণ"
-#: ../finch/gntaccount.c:657 ../pidgin/gtkaccount.c:1856
-#: ../pidgin/gtksavedstatuses.c:336 ../pidgin/gtkstatusbox.c:1622
#, c-format
msgid "Are you sure you want to delete %s?"
msgstr "আপনি কি নিশ্চিত আপনি %s মুছে ফেলতে চান?"
-#: ../finch/gntaccount.c:660
msgid "Delete Account"
msgstr "একাউন্ট মুছে ফেলুন"
#. Delete button
-#: ../finch/gntaccount.c:663 ../finch/gntaccount.c:773
-#: ../finch/gntcertmgr.c:318 ../finch/gntpounce.c:678 ../finch/gntpounce.c:741
-#: ../finch/gntstatus.c:144 ../finch/gntstatus.c:210
-#: ../pidgin/gtkaccount.c:1864 ../pidgin/gtklog.c:326
-#: ../pidgin/gtkpounce.c:1138 ../pidgin/gtkrequest.c:276
-#: ../pidgin/gtksavedstatuses.c:347 ../pidgin/gtkstatusbox.c:1627
msgid "Delete"
msgstr "মুছুন"
-#: ../finch/gntaccount.c:734 ../finch/gntblist.c:2601 ../finch/gntui.c:94
-#: ../pidgin/gtkaccount.c:2278
msgid "Accounts"
msgstr "একাউন্টসমূহ"
-#: ../finch/gntaccount.c:740
msgid "You can enable/disable accounts from the following list."
msgstr "আপনি নিম্নোক্ত তালিকা হতে একাউন্টসমূহকে সক্রিয়/নিষ্ক্রিয় করতে পারেন।"
#. Add button
-#: ../finch/gntaccount.c:764 ../finch/gntaccount.c:954 ../finch/gntblist.c:680
-#: ../finch/gntblist.c:787 ../finch/gntblist.c:835 ../finch/gntblist.c:3041
-#: ../finch/gntcertmgr.c:305 ../finch/gntnotify.c:443 ../finch/gntpounce.c:725
-#: ../finch/gntroomlist.c:275 ../finch/gntstatus.c:199
-#: ../libpurple/protocols/gg/gg.c:811
-#: ../libpurple/protocols/qq/buddy_opt.c:1136
-#: ../libpurple/protocols/sametime/sametime.c:5546
-#: ../libpurple/protocols/silc/chat.c:618
-#: ../libpurple/protocols/silc10/chat.c:599 ../pidgin/gtkaccount.c:2416
-#: ../pidgin/gtkblist.c:7012 ../pidgin/gtkconv.c:1745
-#: ../pidgin/gtkrequest.c:277
msgid "Add"
msgstr "যুক্ত"
#. Modify button
-#: ../finch/gntaccount.c:769 ../finch/gntpounce.c:733
msgid "Modify"
msgstr "পরিবর্তন"
-#: ../finch/gntaccount.c:877 ../pidgin/gtkaccount.c:2363
#, c-format
msgid "%s%s%s%s has made %s his or her buddy%s%s"
msgstr "%1s%2s%3s%4s, %5s-কে তার বন্ধু করেছেন%6s%7s"
-#: ../finch/gntaccount.c:950 ../pidgin/gtkaccount.c:2415
msgid "Add buddy to your list?"
msgstr "আপনার তালিকায় বন্ধু যোগ করতে চান কি?"
-#: ../finch/gntaccount.c:1010 ../pidgin/gtkaccount.c:2473
#, c-format
msgid "%s%s%s%s wants to add %s to his or her buddy list%s%s"
msgstr "%1s%2s%3s%4s তার বন্ধু তালিকা %s6%7s তে %5s কে যুক্ত করতে চায়"
-#: ../finch/gntaccount.c:1035 ../finch/gntaccount.c:1038
-#: ../finch/gntaccount.c:1065 ../pidgin/gtkaccount.c:2496
-#: ../pidgin/gtkaccount.c:2503
msgid "Authorize buddy?"
msgstr "বন্ধুকে কি প্রাধিকার দিতে চান?"
# তিথি
-#: ../finch/gntaccount.c:1042 ../finch/gntaccount.c:1069
-#: ../libpurple/protocols/qq/group_info.c:160
-#: ../libpurple/protocols/qq/group_opt.c:451 ../pidgin/gtkaccount.c:2497
-#: ../pidgin/gtkaccount.c:2504
msgid "Authorize"
msgstr "অনুমোদিত"
-#: ../finch/gntaccount.c:1043 ../finch/gntaccount.c:1070
-#: ../libpurple/protocols/qq/group_opt.c:450 ../pidgin/gtkaccount.c:2498
-#: ../pidgin/gtkaccount.c:2505
msgid "Deny"
msgstr "প্রত্যাখ্যান করুন"
-#: ../finch/gntblist.c:277
#, c-format
msgid ""
"Online: %d\n"
@@ -329,12 +169,10 @@ msgstr ""
"অনলাইন: %d\n"
"মোট: %d"
-#: ../finch/gntblist.c:286
#, c-format
msgid "Account: %s (%s)"
msgstr "একাউন্ট: %1s (%2s)"
-#: ../finch/gntblist.c:298
#, c-format
msgid ""
"\n"
@@ -343,353 +181,190 @@ msgstr ""
"\n"
"শেষ দেখা: %s আগে"
-#: ../finch/gntblist.c:318 ../pidgin/gtkprefs.c:327
-#: ../pidgin/pixmaps/emotes/default/24/default.theme.in.h:1
msgid "Default"
msgstr "পূর্বনির্ধারিত"
-#: ../finch/gntblist.c:624
msgid "You must provide a username for the buddy."
msgstr "আপনাকে অবশ্যই বন্ধুর জন্য একটি নাম দিতে হবে।"
# tithi
-#: ../finch/gntblist.c:626
msgid "You must provide a group."
msgstr "আপনাকে অবশ্যই একটি গ্রুপ প্রদান করতে হবে।"
-#: ../finch/gntblist.c:628
msgid "You must select an account."
msgstr "আপনাকে অবশ্যই একটি একাউন্ট নির্বাচন করতে হবে।"
# tithi
-#: ../finch/gntblist.c:630
msgid "The selected account is not online."
msgstr "নির্বাচিত একাউন্টটি অনলাইনে নেই।"
-#: ../finch/gntblist.c:635
msgid "Error adding buddy"
msgstr "বন্ধুকে যুক্ত করতে ত্রুটি"
-#: ../finch/gntblist.c:662 ../libpurple/protocols/irc/irc.c:990
-#: ../libpurple/protocols/irc/msgs.c:370
-#: ../libpurple/protocols/jabber/jabber.c:1055
-#: ../libpurple/protocols/jabber/jabber.c:1057
-#: ../libpurple/protocols/oscar/oscar.c:4103
-#: ../libpurple/protocols/silc/buddy.c:1554
-#: ../libpurple/protocols/silc/ops.c:1210
-#: ../libpurple/protocols/silc/ops.c:1213
-#: ../libpurple/protocols/silc/ops.c:1349
-#: ../libpurple/protocols/silc/ops.c:1352
-#: ../libpurple/protocols/silc/silc.c:1240
-#: ../libpurple/protocols/silc10/buddy.c:1554
-#: ../libpurple/protocols/silc10/ops.c:1191
-#: ../libpurple/protocols/silc10/ops.c:1194
-#: ../libpurple/protocols/silc10/ops.c:1340
-#: ../libpurple/protocols/silc10/ops.c:1343
-#: ../libpurple/protocols/silc10/silc.c:941 ../pidgin/gtkaccount.c:1938
-#: ../pidgin/gtksavedstatuses.c:1013
msgid "Username"
msgstr "ব্যবহারকারীর নাম"
-#: ../finch/gntblist.c:665
msgid "Alias (optional)"
msgstr "উপনাম (ঐচ্ছিক)"
-#: ../finch/gntblist.c:668
msgid "Add in group"
msgstr "গ্রুপে যোগ দিন"
-#: ../finch/gntblist.c:672 ../finch/gntblist.c:766 ../finch/gntblist.c:1769
-#: ../finch/gntblist.c:2715 ../finch/gntblist.c:2771 ../finch/gntblist.c:2846
-#: ../finch/gntblist.c:2906 ../finch/gntnotify.c:186 ../finch/gntstatus.c:576
-#: ../libpurple/plugins/idle.c:153 ../libpurple/plugins/idle.c:190
-#: ../pidgin/gtkblist.c:3432 ../pidgin/gtknotify.c:532
-#: ../pidgin/gtkpounce.c:1306 ../pidgin/plugins/gevolution/gevolution.c:447
msgid "Account"
msgstr "একাউন্ট"
-#: ../finch/gntblist.c:678 ../finch/gntblist.c:1236
-#: ../libpurple/protocols/qq/buddy_opt.c:446
-#: ../libpurple/protocols/qq/qq.c:819 ../libpurple/protocols/silc/buddy.c:725
-#: ../libpurple/protocols/silc/buddy.c:1030
-#: ../libpurple/protocols/silc/buddy.c:1075
-#: ../libpurple/protocols/silc/buddy.c:1185
-#: ../libpurple/protocols/silc10/buddy.c:737
-#: ../libpurple/protocols/silc10/buddy.c:1036
-#: ../libpurple/protocols/silc10/buddy.c:1083
-#: ../libpurple/protocols/silc10/buddy.c:1183
-#: ../libpurple/protocols/yahoo/yahoo.c:3421 ../pidgin/gtkblist.c:6561
-#: ../pidgin/plugins/gevolution/add_buddy_dialog.c:449
msgid "Add Buddy"
msgstr "বন্ধু যোগ করুন"
-#: ../finch/gntblist.c:678
msgid "Please enter buddy information."
msgstr "অনুগ্রহ করে বন্ধুর তথ্য প্রবেশ করান।"
-#: ../finch/gntblist.c:734 ../libpurple/blist.c:1245
msgid "Chats"
msgstr "আড্ডা"
#. Extract their Name and put it in
-#: ../finch/gntblist.c:772 ../finch/gntblist.c:2710 ../finch/gntblist.c:2766
-#: ../finch/gntblist.c:2901 ../finch/gntconv.c:584 ../finch/gntroomlist.c:299
-#: ../libpurple/protocols/jabber/jabber.c:1072
-#: ../libpurple/protocols/jabber/jabber.c:1075
-#: ../libpurple/protocols/msn/msn.c:2018 ../libpurple/protocols/msn/msn.c:2083
-#: ../libpurple/protocols/msn/msn.c:2110
-#: ../libpurple/protocols/msnp9/msn.c:1724
-#: ../libpurple/protocols/msnp9/msn.c:1789
-#: ../libpurple/protocols/msnp9/msn.c:1816
-#: ../libpurple/protocols/qq/buddy_info.c:120 ../pidgin/gtkplugin.c:770
-#: ../pidgin/gtkroomlist.c:739
-#: ../pidgin/plugins/gevolution/add_buddy_dialog.c:132
-#: ../pidgin/plugins/gevolution/assoc-buddy.c:123
msgid "Name"
msgstr "নাম"
-#: ../finch/gntblist.c:775 ../finch/gntblist.c:1710
-#: ../libpurple/protocols/gg/gg.c:1636 ../libpurple/protocols/msn/msn.c:1837
-#: ../libpurple/protocols/msnp9/msn.c:1542
-#: ../libpurple/protocols/silc/chat.c:609
-#: ../libpurple/protocols/silc10/chat.c:590
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:704
-#: ../libpurple/protocols/zephyr/zephyr.c:791
-#: ../libpurple/protocols/zephyr/zephyr.c:1170 ../pidgin/gtkdialogs.c:988
-#: ../pidgin/gtkdialogs.c:1012 ../pidgin/gtkdialogs.c:1034
-#: ../pidgin/gtkrequest.c:280
msgid "Alias"
msgstr "উপনাম"
-#: ../finch/gntblist.c:778 ../finch/gntblist.c:3057
msgid "Group"
msgstr "গ্রুপ"
-#: ../finch/gntblist.c:782 ../finch/gntblist.c:1203
msgid "Auto-join"
msgstr "স্বয়ং-যোগদান"
-#: ../finch/gntblist.c:785 ../finch/gntblist.c:1238 ../pidgin/gtkblist.c:6926
msgid "Add Chat"
msgstr "আড্ডায় যোগ দিন"
# tihi
-#: ../finch/gntblist.c:786
msgid "You can edit more information from the context menu later."
msgstr "আপনি পরবর্তীতে প্রসঙ্গ তালিকা হতে আরও তথ্য সম্পাদনা করতে পারেন।"
-#: ../finch/gntblist.c:798
msgid "Error adding group"
msgstr "গ্রুপ যুক্ত করতে ত্রুটি"
-#: ../finch/gntblist.c:799
msgid "You must give a name for the group to add."
msgstr "আপনাকে অবশ্যই গ্রুপটি যোগ করার জন্য একটি নাম দিতে হবে।"
-#: ../finch/gntblist.c:833 ../finch/gntblist.c:1240
-#: ../libpurple/protocols/sametime/sametime.c:5456
-#: ../libpurple/protocols/sametime/sametime.c:5544 ../pidgin/gtkblist.c:7009
msgid "Add Group"
msgstr "গ্রুপ যুক্ত করুন"
-#: ../finch/gntblist.c:833
msgid "Enter the name of the group"
msgstr "গ্রুপের নাম প্রবেশ করান"
-#: ../finch/gntblist.c:1186 ../pidgin/gtkblist.c:685
msgid "Edit Chat"
msgstr "আড্ডা সম্পাদনা করা"
# tihi
-#: ../finch/gntblist.c:1186
msgid "Please Update the necessary fields."
msgstr "অনুগ্রহ করে প্রয়োজনীয় ক্ষেত্রগুলো হালনাগাদ করুন।"
-#: ../finch/gntblist.c:1187 ../finch/gntstatus.c:205
msgid "Edit"
msgstr "সম্পাদন"
-#: ../finch/gntblist.c:1212
msgid "Edit Settings"
msgstr "বিন্যাসনসমূহ সম্পাদন করুন"
-#: ../finch/gntblist.c:1248 ../pidgin/gtkutils.c:984
msgid "Information"
msgstr "তথ্য"
-#: ../finch/gntblist.c:1248 ../pidgin/gtkutils.c:984
msgid "Retrieving..."
msgstr "উদ্ধার করছে..."
-#: ../finch/gntblist.c:1313 ../finch/gntconv.c:633
-#: ../libpurple/protocols/qq/qq.c:845 ../libpurple/protocols/silc/chat.c:906
-#: ../libpurple/protocols/silc10/chat.c:883
msgid "Get Info"
msgstr "তথ্য গ্রহণ করুন"
-#: ../finch/gntblist.c:1317
msgid "Add Buddy Pounce"
msgstr "বন্ধু পাউন্স যুক্ত করুন"
-#: ../finch/gntblist.c:1324 ../finch/gntconv.c:645
-#: ../libpurple/protocols/jabber/si.c:1103
-#: ../libpurple/protocols/oscar/oscar.c:668 ../libpurple/protocols/qq/qq.c:831
-#: ../pidgin/gtkconv.c:1684
msgid "Send File"
msgstr "ফাইল পাঠান"
-#: ../finch/gntblist.c:1331 ../libpurple/protocols/gg/gg.c:1685
-#: ../libpurple/protocols/msn/msn.c:798 ../libpurple/protocols/msnp9/msn.c:581
msgid "Blocked"
msgstr "আবদ্ধ"
-#: ../finch/gntblist.c:1336 ../pidgin/gtkblist.c:1465
-#: ../pidgin/gtkblist.c:1594
msgid "Show when offline"
msgstr "অফলাইনে থাকলে প্রদর্শন করুন"
-#: ../finch/gntblist.c:1419
#, c-format
msgid "Please enter the new name for %s"
msgstr "অনুগ্রহ করে %s এর জন্য নতুন নাম প্রবেশ করান"
-#: ../finch/gntblist.c:1421 ../finch/gntblist.c:1710
msgid "Rename"
msgstr "পুনঃ নামকরণ করুন"
-#: ../finch/gntblist.c:1421
msgid "Set Alias"
msgstr "উপনাম নির্ধারন করুন"
# tithi
-#: ../finch/gntblist.c:1422
msgid "Enter empty string to reset the name."
msgstr "নামটি পুনঃনির্ধারণ করতে খালি স্ট্রিং প্রবেশ করান।"
# tithi
-#: ../finch/gntblist.c:1536
msgid "Removing this contact will also remove all the buddies in the contact"
msgstr "এই যোগাযোগটি অপসারণ করার কারণে যোগাযোগের সকল বন্ধুও অপসারিত হবে।"
# tihi
-#: ../finch/gntblist.c:1544
msgid "Removing this group will also remove all the buddies in the group"
msgstr "এই গ্রুপটি অপসারণ করার কারণে গ্রুপের সকল বন্ধুও অপসারিত হবে।"
-#: ../finch/gntblist.c:1549
#, c-format
msgid "Are you sure you want to remove %s?"
msgstr "আপনি কি নিশ্চিত আপনি %s অপসারণ করতে চান?"
#. XXX: anything to do with the returned ui-handle?
-#: ../finch/gntblist.c:1552
msgid "Confirm Remove"
msgstr "অপসারণ নিশ্চিত করুন"
-#: ../finch/gntblist.c:1557 ../finch/gntblist.c:1712 ../finch/gntft.c:245
-#: ../pidgin/gtkconv.c:1742 ../pidgin/gtkrequest.c:278
-#: ../pidgin/gtkstatusbox.c:269
msgid "Remove"
msgstr "অপসারণ"
#. Buddy List
-#: ../finch/gntblist.c:1686 ../finch/gntblist.c:3098 ../finch/gntprefs.c:258
-#: ../finch/gntui.c:95 ../pidgin/gtkblist.c:5292
-#: ../pidgin/plugins/win32/winprefs/winprefs.c:326
msgid "Buddy List"
msgstr "Buddy List"
-#: ../finch/gntblist.c:1717
msgid "Place tagged"
msgstr "স্থান চিহ্নিত করা হয়েছে"
# tithi
-#: ../finch/gntblist.c:1722
msgid "Toggle Tag"
msgstr "টোগল ট্যাগ"
-#: ../finch/gntblist.c:1726 ../finch/gntblist.c:2915
msgid "View Log"
msgstr "লগ প্রদর্শন"
#. General
-#: ../finch/gntblist.c:1762 ../libpurple/protocols/gg/gg.c:584
-#: ../libpurple/protocols/gg/gg.c:965 ../libpurple/protocols/gg/gg.c:1034
-#: ../libpurple/protocols/gg/gg.c:2353
-#: ../libpurple/protocols/jabber/buddy.c:314
-#: ../libpurple/protocols/jabber/buddy.c:1267
-#: ../libpurple/protocols/jabber/buddy.c:2243
-#: ../libpurple/protocols/jabber/buddy.c:2435
-#: ../libpurple/protocols/jabber/jabber.c:1083
-#: ../libpurple/protocols/jabber/jabber.c:1799
-#: ../libpurple/protocols/jabber/jabber.c:1813
-#: ../libpurple/protocols/jabber/jabber.c:1827
-#: ../libpurple/protocols/jabber/jabber.c:1841
-#: ../libpurple/protocols/jabber/jabber.c:1855
-#: ../libpurple/protocols/msn/msn.c:1845 ../libpurple/protocols/msn/msn.c:2021
-#: ../libpurple/protocols/msnp9/msn.c:1550
-#: ../libpurple/protocols/msnp9/msn.c:1727
-#: ../libpurple/protocols/qq/buddy_info.c:112
-#: ../libpurple/protocols/silc/buddy.c:1550
-#: ../libpurple/protocols/silc/ops.c:1016
-#: ../libpurple/protocols/silc/ops.c:1199
-#: ../libpurple/protocols/silc/ops.c:1337
-#: ../libpurple/protocols/silc10/buddy.c:1550
-#: ../libpurple/protocols/silc10/ops.c:1036
-#: ../libpurple/protocols/silc10/ops.c:1179
-#: ../libpurple/protocols/silc10/ops.c:1328
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1066 ../pidgin/gtkblist.c:3456
msgid "Nickname"
msgstr "ডাকনাম"
#. Never know what those translations might end up like...
#. Idle stuff
-#: ../finch/gntblist.c:1784 ../finch/gntprefs.c:261
-#: ../libpurple/protocols/bonjour/bonjour.c:365
-#: ../libpurple/protocols/jabber/buddy.c:807
-#: ../libpurple/protocols/jabber/buddy.c:977
-#: ../libpurple/protocols/msn/msn.c:740 ../libpurple/protocols/msn/msn.c:760
-#: ../libpurple/protocols/msn/msn.c:768 ../libpurple/protocols/msn/state.c:32
-#: ../libpurple/protocols/msnp9/msn.c:560
-#: ../libpurple/protocols/msnp9/state.c:32
-#: ../libpurple/protocols/novell/novell.c:2843
-#: ../libpurple/protocols/oscar/oscar.c:3152
-#: ../libpurple/protocols/yahoo/yahoo.c:3175
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:710 ../pidgin/gtkblist.c:3484
-#: ../pidgin/gtkblist.c:3958 ../pidgin/gtkprefs.c:2076
msgid "Idle"
msgstr "অলস"
-#: ../finch/gntblist.c:1798
msgid "On Mobile"
msgstr "মোবাইলে"
-#: ../finch/gntblist.c:2105 ../pidgin/gtkdocklet.c:582
msgid "New..."
msgstr "নতুন..."
-#: ../finch/gntblist.c:2112 ../pidgin/gtkdocklet.c:583
msgid "Saved..."
msgstr "সংরক্ষিত..."
-#: ../finch/gntblist.c:2569 ../finch/gntplugin.c:352 ../finch/gntui.c:100
-#: ../pidgin/gtkplugin.c:719
msgid "Plugins"
msgstr "প্লাগইন"
-#: ../finch/gntblist.c:2723 ../finch/gntblist.c:2728
msgid "Block/Unblock"
msgstr "ব্লক/ব্লক সরান"
-#: ../finch/gntblist.c:2724 ../libpurple/protocols/gg/gg.c:1719
msgid "Block"
msgstr "ব্লক"
-#: ../finch/gntblist.c:2725 ../libpurple/protocols/gg/gg.c:1715
msgid "Unblock"
msgstr "ব্লক সরান"
-#: ../finch/gntblist.c:2730
msgid ""
"Please enter the username or alias of the person you would like to Block/"
"Unblock."
@@ -700,77 +375,29 @@ msgstr ""
#. Not multiline
#. Not masked?
#. No hints?
-#: ../finch/gntblist.c:2733 ../finch/gntblist.c:2784 ../finch/gntblist.c:2920
-#: ../finch/gntcertmgr.c:89 ../finch/gntconn.c:137 ../finch/gntconv.c:595
-#: ../finch/gntnotify.c:81 ../finch/plugins/gnthistory.c:177
-#: ../libpurple/account.c:1118 ../libpurple/account.c:1450
-#: ../libpurple/protocols/gg/gg.c:470 ../libpurple/protocols/gg/gg.c:612
-#: ../libpurple/protocols/gg/gg.c:741
-#: ../libpurple/protocols/jabber/jabber.c:1971
-#: ../libpurple/protocols/jabber/xdata.c:400
-#: ../libpurple/protocols/msn/msn.c:319 ../libpurple/protocols/msn/msn.c:336
-#: ../libpurple/protocols/msn/msn.c:353 ../libpurple/protocols/msn/msn.c:370
-#: ../libpurple/protocols/msnp9/msn.c:302
-#: ../libpurple/protocols/msnp9/msn.c:319
-#: ../libpurple/protocols/msnp9/msn.c:336
-#: ../libpurple/protocols/msnp9/msn.c:353
-#: ../libpurple/protocols/myspace/user.c:832
-#: ../libpurple/protocols/myspace/user.c:895
-#: ../libpurple/protocols/oscar/oscar.c:6319
-#: ../libpurple/protocols/qq/buddy_opt.c:620
-#: ../libpurple/protocols/qq/group_opt.c:126
-#: ../libpurple/protocols/qq/qq_base.c:881
-#: ../libpurple/protocols/silc/buddy.c:454
-#: ../libpurple/protocols/silc/buddy.c:1193
-#: ../libpurple/protocols/silc/chat.c:448
-#: ../libpurple/protocols/silc/chat.c:485
-#: ../libpurple/protocols/silc/chat.c:752
-#: ../libpurple/protocols/silc/ops.c:1306
-#: ../libpurple/protocols/silc/ops.c:1832
-#: ../libpurple/protocols/silc/silc.c:1057
-#: ../libpurple/protocols/silc10/buddy.c:467
-#: ../libpurple/protocols/silc10/buddy.c:1191
-#: ../libpurple/protocols/silc10/chat.c:425
-#: ../libpurple/protocols/silc10/chat.c:464
-#: ../libpurple/protocols/silc10/chat.c:729
-#: ../libpurple/protocols/silc10/ops.c:1297
-#: ../libpurple/protocols/silc10/ops.c:1909
-#: ../libpurple/protocols/silc10/silc.c:760
-#: ../libpurple/protocols/yahoo/yahoo.c:999
-#: ../libpurple/protocols/yahoo/yahoo.c:3582
-#: ../libpurple/protocols/yahoo/yahoo.c:3593 ../pidgin/gtkcertmgr.c:195
-#: ../pidgin/gtkdialogs.c:737 ../pidgin/gtkdialogs.c:876
-#: ../pidgin/gtkdialogs.c:968 ../pidgin/gtkrequest.c:272
msgid "OK"
msgstr "ঠিক আছে"
-#: ../finch/gntblist.c:2779 ../pidgin/gtkdialogs.c:732
msgid "New Instant Message"
msgstr "নতুন তাৎক্ষণিক বার্তা"
-#: ../finch/gntblist.c:2781 ../pidgin/gtkdialogs.c:734
msgid "Please enter the username or alias of the person you would like to IM."
msgstr ""
"অনুগ্রহ করে আপনি যে ব্যাক্তিকে তাৎক্ষণিক বার্তা পাঠাতে চান তার ব্যবহারকারী-নাম বা "
"ডাকনাম প্রবেশ করান।"
-#: ../finch/gntblist.c:2842
msgid "Channel"
msgstr "চ্যানেল"
-#: ../finch/gntblist.c:2854 ../pidgin/gtkblist.c:1038
msgid "Join a Chat"
msgstr "আড্ডায় যোগ দিন"
-#: ../finch/gntblist.c:2856
msgid "Please enter the name of the chat you want to join."
msgstr "অনুগ্রহ করে আপনি যে আড্ডায় যোগ দিতে চান তার নাম প্রবেশ করান।"
-#: ../finch/gntblist.c:2858 ../finch/gntnotify.c:452
msgid "Join"
msgstr "যোগ দিন"
-#: ../finch/gntblist.c:2917 ../pidgin/gtkdialogs.c:965
msgid ""
"Please enter the username or alias of the person whose log you would like to "
"view."
@@ -779,91 +406,67 @@ msgstr ""
"করান।"
#. Create the "Options" frame.
-#: ../finch/gntblist.c:2971 ../finch/gntpounce.c:459 ../pidgin/gtkpounce.c:826
msgid "Options"
msgstr "পছন্দসমূহ"
-#: ../finch/gntblist.c:2977
msgid "Send IM..."
msgstr "তাৎক্ষনিক বার্তা প্রেরণ..."
-#: ../finch/gntblist.c:2982
msgid "Block/Unblock..."
msgstr "ব্লক করুন/ব্লক সরান..."
-#: ../finch/gntblist.c:2987 ../pidgin/gtkdocklet.c:711
msgid "Join Chat..."
msgstr "আড্ডায় যোগ দিন..."
-#: ../finch/gntblist.c:2992 ../finch/gntconv.c:657
msgid "View Log..."
msgstr "লগ প্রদর্শন..."
-#: ../finch/gntblist.c:2997
msgid "View All Logs"
msgstr "সব লগ প্রদর্শন করুন"
# tithi
-#: ../finch/gntblist.c:3002
msgid "Show"
msgstr "প্রদর্শন করুন"
-#: ../finch/gntblist.c:3007
msgid "Empty groups"
msgstr "ফাঁকা গ্রুপগুলো"
-#: ../finch/gntblist.c:3014
msgid "Offline buddies"
msgstr "অফলাইন বন্ধুরা"
-#: ../finch/gntblist.c:3021
msgid "Sort"
msgstr "সাজান"
-#: ../finch/gntblist.c:3026
msgid "By Status"
msgstr "অবস্থা অনুসারে"
-#: ../finch/gntblist.c:3031 ../pidgin/gtkblist.c:4449
msgid "Alphabetically"
msgstr "বর্ণানুক্রমিকভাবে"
-#: ../finch/gntblist.c:3036
msgid "By Log Size"
msgstr "লগের আকার অনুসারে"
-#: ../finch/gntblist.c:3047
msgid "Buddy"
msgstr "বন্ধু"
-#: ../finch/gntblist.c:3052 ../libpurple/protocols/oscar/oscar.c:662
-#: ../libpurple/protocols/silc/silc.c:1003
-#: ../libpurple/protocols/silc/util.c:559
-#: ../libpurple/protocols/silc10/silc.c:704
-#: ../libpurple/protocols/silc10/util.c:553
msgid "Chat"
msgstr "আড্ডা"
-#: ../finch/gntblist.c:3062 ../finch/plugins/grouping.c:365
msgid "Grouping"
msgstr "দলগতকরণ"
-#: ../finch/gntcertmgr.c:85 ../pidgin/gtkcertmgr.c:188
msgid "Certificate Import"
msgstr "প্রত্যয়নপত্র আমদানি করুন"
# তিথি
-#: ../finch/gntcertmgr.c:86 ../pidgin/gtkcertmgr.c:189
msgid "Specify a hostname"
msgstr "হোস্টনাম উল্লেখ করুন।"
# tithi
-#: ../finch/gntcertmgr.c:87 ../pidgin/gtkcertmgr.c:190
msgid "Type the host name this certificate is for."
msgstr "এই প্রত্যয়ণপত্রের হোস্ট নাম টাইপ করুন।"
# tithi
-#: ../finch/gntcertmgr.c:96 ../pidgin/gtkcertmgr.c:210
#, c-format
msgid ""
"File %s could not be imported.\n"
@@ -873,21 +476,17 @@ msgstr ""
"নিশ্চিত করুন যে ফাইলটি পঠনযোগ্য এবং PEM বিন্যাসের।\n"
# tithi
-#: ../finch/gntcertmgr.c:98 ../pidgin/gtkcertmgr.c:212
msgid "Certificate Import Error"
msgstr "প্রত্যয়ণপত্র আমদানি করার ত্রুটি"
# tithi
-#: ../finch/gntcertmgr.c:99 ../pidgin/gtkcertmgr.c:213
msgid "X.509 certificate import failed"
msgstr "X.৫০৯ প্রত্যয়ণপত্র আমদানি করতে ব্যর্থ"
-#: ../finch/gntcertmgr.c:109 ../pidgin/gtkcertmgr.c:224
msgid "Select a PEM certificate"
msgstr "একটি PEM প্রত্যয়ণপত্র নির্বাচন করুন"
# tithi
-#: ../finch/gntcertmgr.c:126 ../pidgin/gtkcertmgr.c:245
#, c-format
msgid ""
"Export to file %s failed.\n"
@@ -897,27 +496,22 @@ msgstr ""
"পরীক্ষা করুন যে আপনার উদ্দিষ্ট পথে লিখন অনুমতি আছে\n"
# tithi
-#: ../finch/gntcertmgr.c:128 ../pidgin/gtkcertmgr.c:247
msgid "Certificate Export Error"
msgstr "প্রত্যয়ণপত্র রপ্তানি করার ত্রুটি"
# tithi
-#: ../finch/gntcertmgr.c:129 ../pidgin/gtkcertmgr.c:248
msgid "X.509 certificate export failed"
msgstr "X.৫০৯ প্রত্যয়ণপত্র রপ্তানি করতে ব্যর্থ"
# tithi
-#: ../finch/gntcertmgr.c:158 ../pidgin/gtkcertmgr.c:298
msgid "PEM X.509 Certificate Export"
msgstr "PEM X.৫০৯ প্রত্যয়ণপত্র রপ্তানি করুন"
-#: ../finch/gntcertmgr.c:187
#, c-format
msgid "Certificate for %s"
msgstr "%s-এর প্রত্যয়ণপত্র"
# tithi
-#: ../finch/gntcertmgr.c:194
#, c-format
msgid ""
"Common name: %s\n"
@@ -931,60 +525,41 @@ msgstr ""
"%s"
# tithi
-#: ../finch/gntcertmgr.c:197
msgid "SSL Host Certificate"
msgstr "SSL হোস্ট প্রত্যয়ণপত্র"
# tithi
-#: ../finch/gntcertmgr.c:232 ../pidgin/gtkcertmgr.c:371
#, c-format
msgid "Really delete certificate for %s?"
msgstr "%s এর জন্য প্রত্যায়নপত্র কি সত্যিই মুছে ফেলতে চান?"
# tithi
-#: ../finch/gntcertmgr.c:235 ../pidgin/gtkcertmgr.c:373
msgid "Confirm certificate delete"
msgstr "প্রত্যায়নপত্র মুছে ফেলা নিশ্চিত করুন"
# tithi
-#: ../finch/gntcertmgr.c:292 ../pidgin/gtkcertmgr.c:613
msgid "Certificate Manager"
msgstr "প্রত্যায়নপত্র ব্যবস্থাপক"
#. Creating the user splits
-#: ../finch/gntcertmgr.c:297 ../libpurple/protocols/bonjour/bonjour.c:705
-#: ../libpurple/protocols/silc/silc.c:1242
-#: ../libpurple/protocols/silc10/silc.c:943 ../pidgin/gtkcertmgr.c:446
msgid "Hostname"
msgstr "হোস্ট-নাম"
-#: ../finch/gntcertmgr.c:314 ../finch/gntnotify.c:446 ../pidgin/gtkconv.c:1721
-#: ../pidgin/gtkdebug.c:832
msgid "Info"
msgstr "তথ্য"
#. Close button
-#: ../finch/gntcertmgr.c:323 ../finch/gntft.c:255 ../finch/gntnotify.c:194
-#: ../finch/gntplugin.c:220 ../finch/gntplugin.c:413 ../finch/gntpounce.c:750
-#: ../finch/gntroomlist.c:276 ../finch/gntstatus.c:216
-#: ../libpurple/protocols/msn/msn.c:475 ../libpurple/protocols/msnp9/msn.c:419
-#: ../libpurple/protocols/silc/util.c:385
-#: ../libpurple/protocols/silc10/util.c:377 ../pidgin/gtkaccount.c:2390
-#: ../pidgin/gtkrequest.c:275
msgid "Close"
msgstr "বন্ধ"
-#: ../finch/gntconn.c:126
#, c-format
msgid "%s (%s)"
msgstr "%1s (%2s)"
-#: ../finch/gntconn.c:129
#, c-format
msgid "%s disconnected."
msgstr "%s বিচ্ছিন্ন।"
-#: ../finch/gntconn.c:130
#, c-format
msgid ""
"%s\n"
@@ -997,12 +572,10 @@ msgstr ""
"যতক্ষন পর্যন্ত না আপনি অ্যাকাউন্টটি ত্রুটিমুক্ত এবং পুনরায় সক্রিয় না করছেন ততক্ষন পর্যন্ত "
"ফিঞ্চ পুনঃ সংযোগ করার চেষ্টা করবে না।"
-#: ../finch/gntconn.c:139
msgid "Re-enable Account"
msgstr "একাউন্ট পুনঃ সক্রিয় করুন"
# tithi
-#: ../finch/gntconn.c:156
msgid ""
"The account has disconnected and you are no longer in this chat. You will be "
"automatically rejoined in the chat when the account reconnects."
@@ -1010,45 +583,35 @@ msgstr ""
"এই একাউন্টটি বিচ্ছিন্ন হয়েছে এবং আপনি আর আড্ডায় নেই। একাউন্টটি পুনরায় সংযোজিত হলে "
"আপনি স্বয়ংক্রিয় ভাবে পুনরায় আড্ডায় যুক্ত হবেন।"
-#: ../finch/gntconv.c:160
msgid "No such command."
msgstr "এমন কোনো নির্দেশ নেই।"
-#: ../finch/gntconv.c:164 ../pidgin/gtkconv.c:496
msgid "Syntax Error: You typed the wrong number of arguments to that command."
msgstr "বাক্যরীতি ত্রুটি: আপনি ঐ নির্দেশে ভূল সংখ্যক যুক্তি টাইপ করেছেন।"
-#: ../finch/gntconv.c:169 ../pidgin/gtkconv.c:502
msgid "Your command failed for an unknown reason."
msgstr "একটি অজানা কারণে আপনার নির্দেশ ব্যর্থ হয়েছে।"
-#: ../finch/gntconv.c:174 ../pidgin/gtkconv.c:509
msgid "That command only works in chats, not IMs."
msgstr "ঐ নির্দেশ শুধুমাত্র আড্ডাতেই প্রযোজ্য, তাৎক্ষণিক বার্তায় নয়।"
-#: ../finch/gntconv.c:177 ../pidgin/gtkconv.c:512
msgid "That command only works in IMs, not chats."
msgstr "ঐ নির্দেশটি শুধুমাত্র তাৎক্ষণিক বার্তাতেই প্রযোজ্য, আড্ডার ক্ষেত্রে নয়।"
-#: ../finch/gntconv.c:181 ../pidgin/gtkconv.c:517
msgid "That command doesn't work on this protocol."
msgstr "ঐ নির্দেশটি এই প্রোটোকলে কাজ করে না।"
-#: ../finch/gntconv.c:189
msgid "Message was not sent, because you are not signed on."
msgstr "বার্তা পাঠানো হয়নি, কারণ আপনি স্বাক্ষরিত নন।"
-#: ../finch/gntconv.c:269
#, c-format
msgid "%s (%s -- %s)"
msgstr "%1s (%2s -- %3s)"
-#: ../finch/gntconv.c:292
#, c-format
msgid "%s [%s]"
msgstr "%1s [%2s]"
-#: ../finch/gntconv.c:297 ../finch/gntconv.c:974 ../pidgin/gtkconv.c:3647
#, c-format
msgid ""
"\n"
@@ -1057,33 +620,25 @@ msgstr ""
"\n"
"%s টাইপ করছে..."
-#: ../finch/gntconv.c:316
msgid "You have left this chat."
msgstr "আপনি এই আড্ডা ত্যাগ করেছেন।"
-#: ../finch/gntconv.c:434 ../pidgin/gtkconv.c:1407
msgid "Logging started. Future messages in this conversation will be logged."
msgstr "লগ করা শুরু হয়েছে। এই কথোপকথনের ভবিষৎ বার্তাসমূহ লগ করা হবে।"
-#: ../finch/gntconv.c:438 ../pidgin/gtkconv.c:1415
msgid ""
"Logging stopped. Future messages in this conversation will not be logged."
msgstr "লগ করা বন্ধ করা হয়েছে। এই কথোপকথনের ভবিষৎ বার্তাসমূহ লগ করা হবে।"
-#: ../finch/gntconv.c:524
msgid "Send To"
msgstr "এখানে প্রেরণ করুন"
-#: ../finch/gntconv.c:588
msgid "Invite message"
msgstr "আমন্ত্রণ বার্তা"
-#: ../finch/gntconv.c:590 ../finch/gntnotify.c:455
-#: ../libpurple/protocols/sametime/sametime.c:3530
msgid "Invite"
msgstr "আমন্ত্রণ"
-#: ../finch/gntconv.c:592
msgid ""
"Please enter the name of the user you wish to invite,\n"
"along with an optional invite message."
@@ -1091,54 +646,42 @@ msgstr ""
"একটি ঐচ্ছিক আমন্ত্রণ বার্তার সাথে,\n"
"অনুগ্রহ করে আপনি যে ব্যবহারকারীকে আমন্ত্রণ করতে চান তার নামটি প্রবেশ করান।"
-#: ../finch/gntconv.c:610
msgid "Conversation"
msgstr "কথোপকথন"
-#: ../finch/gntconv.c:616
msgid "Clear Scrollback"
msgstr "স্ক্রলবেক পরিস্কার করুন"
-#: ../finch/gntconv.c:620 ../finch/gntprefs.c:191
msgid "Show Timestamps"
msgstr "সময়ছাপ প্রদর্শন করুন"
-#: ../finch/gntconv.c:638
msgid "Add Buddy Pounce..."
msgstr "বন্ধু পাউন্স যুক্ত করুন..."
-#: ../finch/gntconv.c:652
msgid "Invite..."
msgstr "আমন্ত্রণ..."
-#: ../finch/gntconv.c:661
msgid "Enable Logging"
msgstr "লগকরণ সক্রিয় করুন"
-#: ../finch/gntconv.c:667
msgid "Enable Sounds"
msgstr "শব্দ সক্রিয় করুন"
-#: ../finch/gntconv.c:927
msgid "<AUTO-REPLY> "
msgstr "<AUTO-REPLY>"
-#: ../finch/gntconv.c:1067
#, c-format
msgid "List of %d user:\n"
msgid_plural "List of %d users:\n"
msgstr[0] "%d ব্যবহারকারীর তালিকা:...\n"
msgstr[1] "%d ব্যবহারকারীগণের তালিকা:\n"
-#: ../finch/gntconv.c:1227 ../pidgin/gtkconv.c:341
msgid "Supported debug options are: version"
msgstr "সমর্থিত ডিবাগ পছন্দসমূহ হল: সংস্করণ"
-#: ../finch/gntconv.c:1263 ../pidgin/gtkconv.c:393
msgid "No such command (in this context)."
msgstr "এমন কোনো নির্দেশ নেই (এই প্রসঙ্গে)।"
-#: ../finch/gntconv.c:1266 ../pidgin/gtkconv.c:396
msgid ""
"Use \"/help &lt;command&gt;\" for help on a specific command.\n"
"The following commands are available in this context:\n"
@@ -1148,7 +691,6 @@ msgstr ""
"এই ক্ষেত্রে নিম্নোক্ত নির্দেশসমূহ সহজলভ্য:\n"
# tithi
-#: ../finch/gntconv.c:1311
#, c-format
msgid ""
"%s is not a valid message class. See '/help msgcolor' for valid message "
@@ -1156,12 +698,10 @@ msgid ""
msgstr "%s বার্তার বৈধ শ্রেণী নয়। বার্তাসমূহের বৈধ শ্রেণীর '/সহায়ক বার্তা-রং' দেখুন।"
# tithi
-#: ../finch/gntconv.c:1318 ../finch/gntconv.c:1325
#, c-format
msgid "%s is not a valid color. See '/help msgcolor' for valid colors."
msgstr "%s বৈধ রং নয়। বৈধ রং এর জন্য '/সহায়ক বার্তা-রং' দেখুন।"
-#: ../finch/gntconv.c:1382 ../pidgin/gtkconv.c:7877
msgid ""
"say &lt;message&gt;: Send a message normally as if you weren't using a "
"command."
@@ -1169,55 +709,43 @@ msgstr ""
"বলুন &lt;বার্তা&gt;: একটি বার্তা সাধারণত এমন ভাবে পাঠান যেন আপনি নির্দেশ ব্যবহার "
"করেন নি।"
-#: ../finch/gntconv.c:1385 ../pidgin/gtkconv.c:7880
msgid "me &lt;action&gt;: Send an IRC style action to a buddy or chat."
msgstr "আমি &lt;কার্য&gt;: কোনো বন্ধুকে বা আড্ডায় আইআরসি শৈলীর কার্য পাঠান।"
-#: ../finch/gntconv.c:1388 ../pidgin/gtkconv.c:7883
msgid ""
"debug &lt;option&gt;: Send various debug information to the current "
"conversation."
msgstr "ডিবাগ &lt;পছন্দ&gt;: বর্তমান কথোপকথনে বিভিন্ন ডিবাগ তথ্য পাঠান।"
-#: ../finch/gntconv.c:1391 ../pidgin/gtkconv.c:7886
msgid "clear: Clears the conversation scrollback."
msgstr "পরিস্কার: কথোপকথনের স্ক্রলবেক পরিস্কার করে।"
-#: ../finch/gntconv.c:1394 ../pidgin/gtkconv.c:7892
msgid "help &lt;command&gt;: Help on a specific command."
msgstr "সহায়তা &lt;নির্দেশ&gt;: একটি সুনির্দিষ্ট নির্দেশের সহায়িকা।"
# tithi
-#: ../finch/gntconv.c:1397
msgid "users: Show the list of users in the chat."
msgstr "ব্যবহারকারীগণ: আড্ডায় ব্যবহারকারীদের তালিকা দেখান।"
-#: ../finch/gntconv.c:1402
msgid "plugins: Show the plugins window."
msgstr "প্লাগইন: প্লাগইনের উইন্ডো দেখান।"
-#: ../finch/gntconv.c:1405
msgid "buddylist: Show the buddylist."
msgstr "বন্ধু-তালিকা: বন্ধু-তালিকা দেখান।"
-#: ../finch/gntconv.c:1408
msgid "accounts: Show the accounts window."
msgstr "অ্যাকাউন্ট: অ্যাকাউন্টের উইন্ডো দেখান।"
-#: ../finch/gntconv.c:1411
msgid "debugwin: Show the debug window."
msgstr "ত্রুটিমুক্তকরণ উইন্ডো: ডিবাগ উইন্ডো দেখান।"
-#: ../finch/gntconv.c:1414
msgid "prefs: Show the preference window."
msgstr "পছন্দ: পছন্দের উইন্ডো দেখান।"
-#: ../finch/gntconv.c:1417
msgid "statuses: Show the savedstatuses window."
msgstr "অবস্থাসমূহ: সংরক্ষিত-অবস্থাসমূহের উইন্ডো দেখান।"
# fix me tithi
-#: ../finch/gntconv.c:1423
msgid ""
"msgcolor &lt;class&gt; &lt;foreground&gt; &lt;background&gt;: Set the color "
"for different classes of messages in the conversation window.<br> &lt;"
@@ -1231,12 +759,9 @@ msgstr ""
"প্রেক্ষাপট&10gt;: কালো, লাল, সবুজ, নীল, সাদা, ধূসর, গাঢ় ধূসর, ম্যাজেন্ডা, সায়ান, "
"পূর্বনির্ধারিত<br><br>উদাহরণ:<br> বার্তা-রং পূর্বনির্ধারিতভাবে সায়ান প্রেরণ করে"
-#: ../finch/gntdebug.c:269 ../pidgin/gtkconv.c:969 ../pidgin/gtkdebug.c:219
-#: ../pidgin/gtkft.c:545
msgid "Unable to open file."
msgstr "ফাইল খুলতে সমর্থ নয়।"
-#: ../finch/gntdebug.c:309 ../finch/gntui.c:98 ../pidgin/gtkdebug.c:689
msgid "Debug Window"
msgstr "ডিবাগ উইন্ডো"
@@ -1244,20 +769,16 @@ msgstr "ডিবাগ উইন্ডো"
#. * it's necessary to make the width of the debug window resizable ... like I said,
#. * it doesn't make sense. The bug is likely in the packing in gntbox.c.
#.
-#: ../finch/gntdebug.c:330 ../pidgin/gtkdebug.c:751
msgid "Clear"
msgstr "মুছে ফেলো"
-#: ../finch/gntdebug.c:341
msgid "Filter:"
msgstr "পরিশ্রুতক:"
-#: ../finch/gntdebug.c:347 ../pidgin/gtkdebug.c:760
msgid "Pause"
msgstr "বিরতি"
# fix me tithi
-#: ../finch/gntft.c:120 ../pidgin/gtkft.c:229
#, c-format
msgid "File Transfers - %d%% of %d file"
msgid_plural "File Transfers - %d%% of %d files"
@@ -1265,123 +786,80 @@ msgstr[0] "ফাইল স্থানান্তর করে - %d ফাই
msgstr[1] "ফাইল স্থানান্তর করে - %d ফাইলসমূহের %d%%"
#. Create the window.
-#: ../finch/gntft.c:127 ../finch/gntft.c:214 ../finch/gntui.c:99
-#: ../pidgin/gtkft.c:236 ../pidgin/gtkft.c:763
msgid "File Transfers"
msgstr "ফাইল স্থানান্তর করে"
-#: ../finch/gntft.c:219 ../pidgin/gtkft.c:647
msgid "Progress"
msgstr "অগ্রগতি"
-#: ../finch/gntft.c:219 ../pidgin/gtkft.c:654
msgid "Filename"
msgstr "ফাইল-নাম"
-#: ../finch/gntft.c:219 ../pidgin/gtkft.c:661
msgid "Size"
msgstr "আকার"
-#: ../finch/gntft.c:219
msgid "Speed"
msgstr "গতি"
-#: ../finch/gntft.c:219 ../pidgin/gtkft.c:668
msgid "Remaining"
msgstr "অবশিষ্ট"
#. XXX: Use of ggp_str_to_uin() is an ugly hack!
-#: ../finch/gntft.c:219 ../finch/gntstatus.c:547 ../finch/gntstatus.c:576
-#: ../libpurple/protocols/bonjour/bonjour.c:369
-#: ../libpurple/protocols/gg/gg.c:954 ../libpurple/protocols/gg/gg.c:1642
-#: ../libpurple/protocols/gg/gg.c:1650
-#: ../libpurple/protocols/jabber/buddy.c:822
-#: ../libpurple/protocols/jabber/buddy.c:826
-#: ../libpurple/protocols/jabber/buddy.c:991
-#: ../libpurple/protocols/jabber/jabber.c:1764
-#: ../libpurple/protocols/msn/msn.c:752 ../libpurple/protocols/msn/msn.c:762
-#: ../libpurple/protocols/msn/msn.c:767 ../libpurple/protocols/msn/msn.c:770
-#: ../libpurple/protocols/msnp9/msn.c:559
-#: ../libpurple/protocols/novell/novell.c:2853
-#: ../libpurple/protocols/oscar/oscar.c:921
-#: ../libpurple/protocols/oscar/oscar.c:2959
-#: ../libpurple/protocols/sametime/sametime.c:3320
-#: ../libpurple/protocols/sametime/sametime.c:4212
-#: ../libpurple/protocols/yahoo/yahoo.c:3326 ../pidgin/gtkblist.c:3528
-#: ../pidgin/gtkblist.c:3542 ../pidgin/gtkblist.c:3544
-#: ../pidgin/gtksavedstatuses.c:1032 ../pidgin/gtksavedstatuses.c:1183
msgid "Status"
msgstr "অবস্থা"
-#: ../finch/gntft.c:229
msgid "Close this window when all transfers finish"
msgstr "সব স্থানান্তর শেষ হলে এই উইন্ডোটি বন্ধ করুন"
-#: ../finch/gntft.c:236
msgid "Clear finished transfers"
msgstr "সমাপ্তকৃত স্থানান্তরসমূহ পরিস্কার করুন"
-#: ../finch/gntft.c:250 ../finch/gntroomlist.c:273
msgid "Stop"
msgstr "থামুন"
-#: ../finch/gntft.c:323 ../pidgin/gtkft.c:169 ../pidgin/gtkft.c:936
msgid "Waiting for transfer to begin"
msgstr "স্থানান্তর শুরু করার জন্য অপেক্ষা করছে"
-#: ../finch/gntft.c:390 ../pidgin/gtkft.c:163 ../pidgin/gtkft.c:1017
msgid "Canceled"
msgstr "বাতিল করা হয়েছে"
-#: ../finch/gntft.c:392 ../pidgin/gtkft.c:1019
msgid "Failed"
msgstr "ব্যর্থ হয়েছে"
-#: ../finch/gntft.c:438 ../pidgin/gtkft.c:134
#, c-format
msgid "%.2f KiB/s"
msgstr "%.2f কিলোবাইট/সেকেন্ডে"
-#: ../finch/gntft.c:449
msgid "Sent"
msgstr "প্রেরিত"
-#: ../finch/gntft.c:449
msgid "Received"
msgstr "গৃহীত"
-#: ../finch/gntft.c:450 ../pidgin/gtkft.c:160 ../pidgin/gtkft.c:1082
msgid "Finished"
msgstr "শেষ"
-#: ../finch/gntft.c:452
#, c-format
msgid "The file was saved as %s."
msgstr "ফাইলটি %s হিসেবে সংরক্ষণ করা হয়েছিল।"
-#: ../finch/gntft.c:459
msgid "Sending"
msgstr "পাঠাচ্ছে"
-#: ../finch/gntft.c:459
msgid "Receiving"
msgstr "গ্রহণ করছে"
-#: ../finch/gntlog.c:192
#, c-format
msgid "Conversation in %s on %s"
msgstr "%1s এ %2s এর উপর কথোপকথন"
-#: ../finch/gntlog.c:195
#, c-format
msgid "Conversation with %s on %s"
msgstr "%2s এর উপর %1s-এর সঙ্গে কথোপকথন"
-#: ../finch/gntlog.c:238 ../pidgin/gtklog.c:503
msgid "%B %Y"
msgstr "%B %Y"
-#: ../finch/gntlog.c:278 ../pidgin/gtklog.c:550
msgid ""
"System events will only be logged if the \"Log all status changes to system "
"log\" preference is enabled."
@@ -1389,7 +867,6 @@ msgstr ""
"\"সকল অবস্থার পরিবর্তনসমূহ সিস্টেমের লগে লগ করুন\" প্রাধিকার যদি সক্রিয় থাকে তবে "
"শুধুমাত্র সিস্টেমের ইভেন্টগুলো লগ করা হবে।"
-#: ../finch/gntlog.c:282 ../pidgin/gtklog.c:554
msgid ""
"Instant messages will only be logged if the \"Log all instant messages\" "
"preference is enabled."
@@ -1397,114 +874,88 @@ msgstr ""
"\"সব তাৎক্ষণিক বার্তা লগ করুন\" প্রাধিকার যদি সক্রিয় থাকে তবে শুধুমাত্র তাৎক্ষণিক "
"বার্তাগুলো লগ করা হবে।"
-#: ../finch/gntlog.c:285 ../pidgin/gtklog.c:557
msgid ""
"Chats will only be logged if the \"Log all chats\" preference is enabled."
msgstr ""
"\"সব আড্ডা লগ করুন\" প্রাধিকার যদি সক্রিয় থাকে তবে শুধুমাত্র আড্ডাগুলো লগ করা হবে।"
-#: ../finch/gntlog.c:291 ../pidgin/gtklog.c:566
msgid "No logs were found"
msgstr "কোনো লগ খুঁজে পাওয়া যায়নি।"
-#: ../finch/gntlog.c:338 ../pidgin/gtklog.c:646
msgid "Total log size:"
msgstr "মোট লগ আকার:"
# fix me tithi
#. Search box *********
-#: ../finch/gntlog.c:346
msgid "Scroll/Search: "
msgstr "স্ক্রল করুন/খুঁজুন:"
-#: ../finch/gntlog.c:404 ../pidgin/gtklog.c:716
#, c-format
msgid "Conversations in %s"
msgstr "%s-এ কথোপকথন"
-#: ../finch/gntlog.c:412 ../finch/gntlog.c:485 ../pidgin/gtklog.c:724
-#: ../pidgin/gtklog.c:799
#, c-format
msgid "Conversations with %s"
msgstr "%s-এর সঙ্গে কথোপকথন"
-#: ../finch/gntlog.c:414
msgid "All Conversations"
msgstr "সকল কথোপকথন"
-#: ../finch/gntlog.c:510 ../pidgin/gtklog.c:824
msgid "System Log"
msgstr "সিস্টেম লগ"
-#: ../finch/gntnotify.c:177
msgid "Emails"
msgstr "ই-মেইলসমূহ"
-#: ../finch/gntnotify.c:183 ../finch/gntnotify.c:243
msgid "You have mail!"
msgstr "আপনার মেইল আছে!"
-#: ../finch/gntnotify.c:186 ../pidgin/gtknotify.c:539
msgid "Sender"
msgstr "প্রেরক"
-#: ../finch/gntnotify.c:186 ../pidgin/gtknotify.c:546
msgid "Subject"
msgstr "বিষয়"
-#: ../finch/gntnotify.c:214
#, c-format
msgid "%s (%s) has %d new message."
msgid_plural "%s (%s) has %d new messages."
msgstr[0] "%1s (%2s) এর %3dটি নতুন বার্তা আছে।"
msgstr[1] "%1s (%2s)-এর %3dগুলো নতুন বার্তা আছে।"
-#: ../finch/gntnotify.c:243 ../pidgin/gtknotify.c:354
msgid "New Mail"
msgstr "নতুন মেইল"
-#: ../finch/gntnotify.c:349 ../pidgin/gtknotify.c:983
#, c-format
msgid "Info for %s"
msgstr "%s এর জন্য তথ্য"
-#: ../finch/gntnotify.c:350 ../libpurple/protocols/toc/toc.c:476
-#: ../pidgin/gtknotify.c:984
msgid "Buddy Information"
msgstr "বন্ধুর তথ্য"
-#: ../finch/gntnotify.c:440 ../libpurple/protocols/qq/group_join.c:338
msgid "Continue"
msgstr "অব্যাহত"
-#: ../finch/gntnotify.c:449 ../pidgin/gtkconv.c:1671
msgid "IM"
msgstr "তাৎক্ষণিক বার্তা"
-#: ../finch/gntnotify.c:458
msgid "(none)"
msgstr "(কোনটি না)"
-#: ../finch/gntnotify.c:484
msgid "URI"
msgstr "URI"
# tithi
-#: ../finch/gntplugin.c:84 ../finch/gntplugin.c:93
msgid "ERROR"
msgstr "ত্রুটি"
-#: ../finch/gntplugin.c:84
msgid "loading plugin failed"
msgstr "প্লাগইন লোড করতে ব্যর্থ"
# tithi
-#: ../finch/gntplugin.c:93
msgid "unloading plugin failed"
msgstr "প্লাগইন লোডহীন করতে ব্যর্থ।"
# tithi
-#: ../finch/gntplugin.c:139
#, c-format
msgid ""
"Name: %s\n"
@@ -1522,46 +973,37 @@ msgstr ""
"ফাইলের নাম: %6s\n"
# tithi
-#: ../finch/gntplugin.c:197
msgid "Plugin need to be loaded before you can configure it."
msgstr "প্লাগইন বিন্যাস করার পূর্বে আপনার এটা লোড করা প্রয়োজন।"
# tithi
-#: ../finch/gntplugin.c:245
msgid "No configuration options for this plugin."
msgstr "এই প্লাগইনের জন্য কোনো বিন্যাসন পছন্দ নেই।"
-#: ../finch/gntplugin.c:266
msgid "Error loading plugin"
msgstr "প্লাগইনটি লোডে ত্রুটি"
# tithi
-#: ../finch/gntplugin.c:267
msgid "The selected file is not a valid plugin."
msgstr "নির্বাচিত ফাইলটি বৈধ প্লাগইন নয়।"
# tithi
-#: ../finch/gntplugin.c:268
msgid ""
"Please open the debug window and try again to see the exact error message."
msgstr ""
"অনুগ্রহপূর্বক ত্রুটিমুক্তকরণ উইন্ডো খুলুন এবং সঠিক ত্রুটি বার্তাটি দেখতে পুনরায় চেষ্টা করুন।"
-#: ../finch/gntplugin.c:331
msgid "Select plugin to install"
msgstr "সংস্থাপনে জন্য প্লাগইন নির্বাচন করুন"
# tithi
-#: ../finch/gntplugin.c:357
msgid "You can (un)load plugins from the following list."
msgstr "আপনি নিম্নোক্ত তালিকা হতে প্লাগইনগুলোকে লোড(মুক্ত) করতে পারেন।"
# tithi
-#: ../finch/gntplugin.c:408
msgid "Install Plugin..."
msgstr "প্লাগইন সংস্থাপন করুন..."
-#: ../finch/gntplugin.c:418
msgid "Configure Plugin"
msgstr "প্লাগইন পছন্দসই বিন্যাস করুন"
@@ -1570,397 +1012,296 @@ msgstr "প্লাগইন পছন্দসই বিন্যাস কর
#. (that should have been "effect," right?)
#. Back to instant-apply! I win! BU-HAHAHA!
#. Create the window
-#: ../finch/gntplugin.c:524 ../finch/gntplugin.c:531 ../finch/gntprefs.c:264
-#: ../finch/gntui.c:103 ../pidgin/gtkprefs.c:2200
msgid "Preferences"
msgstr "প্রাধিকারসমূহ"
-#: ../finch/gntpounce.c:193 ../pidgin/gtkpounce.c:270
msgid "Please enter a buddy to pounce."
msgstr "অনুগ্রহ করে পাউন্স করার জন্য একজন বন্ধু প্রবেশ করান।"
-#: ../finch/gntpounce.c:338 ../pidgin/gtkpounce.c:538
msgid "New Buddy Pounce"
msgstr "নতুন বন্ধু পাউন্স করুন"
-#: ../finch/gntpounce.c:338 ../pidgin/gtkpounce.c:538
msgid "Edit Buddy Pounce"
msgstr "বন্ধু পাউন্স সম্পাদন করুন"
-#: ../finch/gntpounce.c:343
msgid "Pounce Who"
msgstr "কাকে পাউন্স"
#. Account:
-#: ../finch/gntpounce.c:346 ../finch/gntstatus.c:456
msgid "Account:"
msgstr "একাউন্ট:"
-#: ../finch/gntpounce.c:368
msgid "Buddy name:"
msgstr "বন্ধুর নাম:"
#. Create the "Pounce When Buddy..." frame.
-#: ../finch/gntpounce.c:386 ../pidgin/gtkpounce.c:606
msgid "Pounce When Buddy..."
msgstr "পাউন্স করুন যখন বন্ধু..."
-#: ../finch/gntpounce.c:388
msgid "Signs on"
msgstr "সাইন অন"
-#: ../finch/gntpounce.c:389
msgid "Signs off"
msgstr "সাইন অফ"
-#: ../finch/gntpounce.c:390
msgid "Goes away"
msgstr "অনুপস্থিত"
-#: ../finch/gntpounce.c:391
msgid "Returns from away"
msgstr "দূর হতে ফিরে আসে"
-#: ../finch/gntpounce.c:392
msgid "Becomes idle"
msgstr "অলস হয়ে যায়"
-#: ../finch/gntpounce.c:393
msgid "Is no longer idle"
msgstr "আর অলস থাকবে না"
-#: ../finch/gntpounce.c:394
msgid "Starts typing"
msgstr "টাইপ শুরু করছে"
-#: ../finch/gntpounce.c:395
msgid "Pauses while typing"
msgstr "টাইপ করার সময় বিরতি দিন"
-#: ../finch/gntpounce.c:396
msgid "Stops typing"
msgstr "টাইপ বন্ধ করে"
-#: ../finch/gntpounce.c:397
msgid "Sends a message"
msgstr "বার্তা পাঠায়"
#. Create the "Action" frame.
-#: ../finch/gntpounce.c:426 ../pidgin/gtkpounce.c:667
msgid "Action"
msgstr "কার্য"
-#: ../finch/gntpounce.c:428
msgid "Open an IM window"
msgstr "তাৎক্ষনিক বার্তার উইন্ডো খুলুন"
-#: ../finch/gntpounce.c:429
msgid "Pop up a notification"
msgstr "একটি ঘোষণা পপআপ করুন"
-#: ../finch/gntpounce.c:430
msgid "Send a message"
msgstr "একটি বার্তা পাঠান"
-#: ../finch/gntpounce.c:431
msgid "Execute a command"
msgstr "একটি নির্দেশ কার্যকর করুন"
-#: ../finch/gntpounce.c:432
msgid "Play a sound"
msgstr "শব্দ বাজান"
-#: ../finch/gntpounce.c:460
msgid "Pounce only when my status is not Available"
msgstr "আমার অবস্থা সহজলভ্য না থাকলে শুধুমাত্র পাউন্স করুন"
# tithi
-#: ../finch/gntpounce.c:462 ../pidgin/gtkpounce.c:1319
msgid "Recurring"
msgstr "পুনরাবৃত্তি"
-#: ../finch/gntpounce.c:630
msgid "Cannot create pounce"
msgstr "পাউন্স তৈরী করতে পারে না"
-#: ../finch/gntpounce.c:631
msgid "You do not have any accounts."
msgstr "আপনার কোনো একাউন্ট নেই।"
# tithi
-#: ../finch/gntpounce.c:632
msgid "You must create an account first before you can create a pounce."
msgstr "আপনি একটি পাউন্স তৈরি করার পূর্বে আপনাকে অবশ্যই একটি একাউন্ট তৈরি করতে হবে।"
-#: ../finch/gntpounce.c:674 ../pidgin/gtkpounce.c:1134
#, c-format
msgid "Are you sure you want to delete the pounce on %s for %s?"
msgstr "আপনি কি নিশ্চিত আপনি %2s এর জন্য %1s এর পাউন্স মুছে ফেলতে চান?"
-#: ../finch/gntpounce.c:708 ../finch/gntui.c:96 ../pidgin/gtkpounce.c:1362
msgid "Buddy Pounces"
msgstr "বন্ধু পাউন্স করে"
-#: ../finch/gntpounce.c:817 ../pidgin/gtkpounce.c:1461
#, c-format
msgid "%s has started typing to you (%s)"
msgstr "%1s আপনার কাছে টাইপ করা শুরু করেছে (%2s)"
-#: ../finch/gntpounce.c:818 ../pidgin/gtkpounce.c:1463
#, c-format
msgid "%s has paused while typing to you (%s)"
msgstr "%1s আপনার কাছে টাইপ করার সময় বিরতি নিয়েছে (%2s)"
-#: ../finch/gntpounce.c:819 ../pidgin/gtkpounce.c:1465
#, c-format
msgid "%s has signed on (%s)"
msgstr "%1s সাইন অন করেছে (%2s)"
-#: ../finch/gntpounce.c:820 ../pidgin/gtkpounce.c:1467
#, c-format
msgid "%s has returned from being idle (%s)"
msgstr "%1s অলস অবস্থা থেকে ফিরে এসেছে (%2s)"
-#: ../finch/gntpounce.c:821 ../pidgin/gtkpounce.c:1469
#, c-format
msgid "%s has returned from being away (%s)"
msgstr "%1s দূর হতে ফিরে এসেছে (%2s)"
-#: ../finch/gntpounce.c:822 ../pidgin/gtkpounce.c:1471
#, c-format
msgid "%s has stopped typing to you (%s)"
msgstr "%1s আপনার কাছে টাইপ করা বন্ধ করে দিয়েছে (%2s)"
-#: ../finch/gntpounce.c:823 ../pidgin/gtkpounce.c:1473
#, c-format
msgid "%s has signed off (%s)"
msgstr "%1s অখলাইনে আছে (%2s)"
-#: ../finch/gntpounce.c:824 ../pidgin/gtkpounce.c:1475
#, c-format
msgid "%s has become idle (%s)"
msgstr "%1s অলস আছে (%2s)"
-#: ../finch/gntpounce.c:825 ../pidgin/gtkpounce.c:1477
#, c-format
msgid "%s has gone away. (%s)"
msgstr "%1s এখন অনুপস্থিত। (%2s)"
-#: ../finch/gntpounce.c:826 ../pidgin/gtkpounce.c:1479
#, c-format
msgid "%s has sent you a message. (%s)"
msgstr "%1s আপনাকে একটি বার্তা পাঠিয়েছে। (%2s)"
-#: ../finch/gntpounce.c:845 ../pidgin/gtkpounce.c:1480
+#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "অজানা পাউন্স ইভেন্ট। অনুগ্রহ করে এটি রিপোর্ট করুন!"
# tithi
-#: ../finch/gntprefs.c:92
msgid "Based on keyboard use"
msgstr "কী-বোর্ডের ব্যবহারের উপর নির্ভর করে"
-#: ../finch/gntprefs.c:94 ../pidgin/gtkprefs.c:2081
msgid "From last sent message"
msgstr "সর্বশেষ পাঠানো বার্তা থেকে"
-#: ../finch/gntprefs.c:96 ../pidgin/gtkprefs.c:945 ../pidgin/gtkprefs.c:953
-#: ../pidgin/gtkprefs.c:2080 ../pidgin/gtkprefs.c:2094
-#: ../pidgin/plugins/win32/winprefs/winprefs.c:333
msgid "Never"
msgstr "কখনো নয়"
-#: ../finch/gntprefs.c:184
msgid "Show Idle Time"
msgstr "অলস সময় প্রদর্শন করুন"
-#: ../finch/gntprefs.c:185
msgid "Show Offline Buddies"
msgstr "অফলাইন বন্ধুগণদের প্রদর্শন করুন"
-#: ../finch/gntprefs.c:192
msgid "Notify buddies when you are typing"
msgstr "আপনার টাইপ করার সময় বন্ধুদের অবগত করুন"
-#: ../finch/gntprefs.c:198 ../finch/plugins/gnthistory.c:153
msgid "Log format"
msgstr "লগ বিন্যাস"
-#: ../finch/gntprefs.c:199 ../finch/plugins/gnthistory.c:143
msgid "Log IMs"
msgstr "তাৎক্ষণিক বার্তাগুলো লগ করুন"
-#: ../finch/gntprefs.c:200 ../finch/plugins/gnthistory.c:144
msgid "Log chats"
msgstr "আড্ডাসমূহ লগ করুন"
-#: ../finch/gntprefs.c:201
msgid "Log status change events"
msgstr "লগ অবস্থা ইভেন্ট পরিবর্তন করে"
-#: ../finch/gntprefs.c:207
msgid "Report Idle time"
msgstr "অলস সময় রিপোর্ট করুন"
-#: ../finch/gntprefs.c:208
msgid "Change status when idle"
msgstr "অলস থাকলে অবস্থা পরিবর্তন করুন"
-#: ../finch/gntprefs.c:209
msgid "Minutes before changing status"
msgstr "অবস্থা পরিবর্তন করার পূর্বের মিনিট"
-#: ../finch/gntprefs.c:210
msgid "Change status to"
msgstr "অবস্থা পরিবর্তন করুন"
-#. Conversations
-#: ../finch/gntprefs.c:259 ../pidgin/gtkprefs.c:1043 ../pidgin/gtkprefs.c:2167
-#: ../pidgin/plugins/win32/winprefs/winprefs.c:340
msgid "Conversations"
msgstr "কথোপকথন"
-#: ../finch/gntprefs.c:260 ../finch/plugins/gnthistory.c:151
-#: ../pidgin/gtkprefs.c:1614 ../pidgin/gtkprefs.c:2178
msgid "Logging"
msgstr "লগ করছে"
-#: ../finch/gntrequest.c:381
msgid "You must fill all the required fields."
msgstr "আপনাকে অবশ্যই প্রয়োজনীয় ক্ষেত্রসমূহ পূরণ করতে হবে।"
-#: ../finch/gntrequest.c:382
msgid "The required fields are underlined."
msgstr "প্রয়োজনীয় ক্ষেত্রসমূহকে নিম্নরেখাঙ্কিত করা হয়েছে।"
# tithi
-#: ../finch/gntrequest.c:640
msgid "Not implemented yet."
msgstr "এখনও বাস্তবায়িত হয়নি।"
-#: ../finch/gntrequest.c:745 ../pidgin/gtkrequest.c:1552
-#: ../pidgin/gtkrequest.c:1598
msgid "Save File..."
msgstr "ফাইল সংরক্ষণ করুন..."
-#: ../finch/gntrequest.c:745 ../pidgin/gtkrequest.c:1553
-#: ../pidgin/gtkrequest.c:1599
msgid "Open File..."
msgstr "ফাইল খুলুন..."
-#: ../finch/gntrequest.c:762
msgid "Choose Location..."
msgstr "স্থান পছন্দ করুন..."
# tithi
-#: ../finch/gntroomlist.c:208
msgid "Hit 'Enter' to find more rooms of this category."
msgstr "এই শ্রেণীবিভাগের আরও কিছু কক্ষ খুঁজে পেতে 'Enter' চাপুন।"
-#: ../finch/gntroomlist.c:274
msgid "Get"
msgstr "গ্রহণ করুন"
#. Create the window.
-#: ../finch/gntroomlist.c:286 ../finch/gntui.c:101 ../pidgin/gtkroomlist.c:523
msgid "Room List"
msgstr "কক্ষের তালিকা"
-#: ../finch/gntsound.c:96 ../pidgin/gtksound.c:62
msgid "Buddy logs in"
msgstr "বন্ধু লগইন করে"
-#: ../finch/gntsound.c:97 ../pidgin/gtksound.c:63
msgid "Buddy logs out"
msgstr "বন্ধু লগআউট করে"
-#: ../finch/gntsound.c:98 ../pidgin/gtksound.c:64
msgid "Message received"
msgstr "বার্তা গ্রহণ করা হয়েছে"
-#: ../finch/gntsound.c:99 ../pidgin/gtksound.c:65
msgid "Message received begins conversation"
msgstr "বার্তা গ্রহন করায় কথাবার্তা শুরু হয়েছে"
-#: ../finch/gntsound.c:100 ../pidgin/gtksound.c:66
msgid "Message sent"
msgstr "বার্তা পাঠানো হয়েছে"
-#: ../finch/gntsound.c:101 ../pidgin/gtksound.c:67
msgid "Person enters chat"
msgstr "ব্যক্তি আড্ডায় প্রবেশ করেছে"
-#: ../finch/gntsound.c:102 ../pidgin/gtksound.c:68
msgid "Person leaves chat"
msgstr "ব্যক্তি আড্ডা ত্যাগ করেছে"
-#: ../finch/gntsound.c:103 ../pidgin/gtksound.c:69
msgid "You talk in chat"
msgstr "আপনি আড্ডায় কথা বলছেন"
-#: ../finch/gntsound.c:104 ../pidgin/gtksound.c:70
msgid "Others talk in chat"
msgstr "অন্যান্যরা আড্ডায় কথা বলছে"
-#: ../finch/gntsound.c:106 ../pidgin/gtksound.c:73
msgid "Someone says your username in chat"
msgstr "কেউ একজন আড্ডায় আপনার ব্যবহারকারীর নাম বলছে"
# tithi
-#: ../finch/gntsound.c:367 ../pidgin/gtksound.c:309
msgid "GStreamer Failure"
msgstr "GStreamer ব্যর্থতা"
-#: ../finch/gntsound.c:368 ../pidgin/gtksound.c:310
msgid "GStreamer failed to initialize."
msgstr "GStreamer আরম্ভ হতে ব্যর্থ।"
# tithi
-#: ../finch/gntsound.c:722 ../finch/gntsound.c:808 ../pidgin/gtkpounce.c:178
-#: ../pidgin/gtkpounce.c:189 ../pidgin/gtkpounce.c:321
-#: ../pidgin/gtkpounce.c:691 ../pidgin/gtkpounce.c:953
-#: ../pidgin/gtkprefs.c:1738 ../pidgin/gtkprefs.c:1827
-#: ../pidgin/gtkprefs.c:2023
msgid "(default)"
msgstr "(পূর্বনির্ধারিত)"
-#: ../finch/gntsound.c:735
msgid "Select Sound File ..."
msgstr "সাউন্ড ফাইল নির্বাচন করুন..."
-#: ../finch/gntsound.c:910
msgid "Sound Preferences"
msgstr "সাউন্ডের অগ্রাধিকারসমুহ"
-#: ../finch/gntsound.c:921
msgid "Profiles"
msgstr "ব্যাক্তিগত বিবরণীসমূহ"
-#: ../finch/gntsound.c:960 ../pidgin/gtkprefs.c:1884
msgid "Automatic"
msgstr "স্বয়ংক্রিয়"
-#: ../finch/gntsound.c:963
msgid "Console Beep"
msgstr "কনসোল বীপ করছে"
-#: ../finch/gntsound.c:964 ../pidgin/gtkprefs.c:1888
msgid "Command"
msgstr "নির্দেশ"
-#: ../finch/gntsound.c:965
msgid "No Sound"
msgstr "কোনো শব্দ নাই"
-#: ../finch/gntsound.c:967 ../pidgin/gtkprefs.c:1879
msgid "Sound Method"
msgstr "শব্দের প্রক্রিয়া"
-#: ../finch/gntsound.c:972
msgid "Method: "
msgstr "প্রক্রিয়া:"
-#: ../finch/gntsound.c:979
#, c-format
msgid ""
"Sound Command\n"
@@ -1970,82 +1311,56 @@ msgstr ""
"(ফাইলের নামের জন্য %s)"
#. Sound options
-#: ../finch/gntsound.c:987 ../pidgin/gtkprefs.c:1910
msgid "Sound Options"
msgstr "শব্দের পছন্দসমূহ"
-#: ../finch/gntsound.c:988
msgid "Sounds when conversation has focus"
msgstr "কথোপকথন ফোকাস করলে শব্দ করে"
-#: ../finch/gntsound.c:996 ../pidgin/gtkprefs.c:943 ../pidgin/gtkprefs.c:955
-#: ../pidgin/gtkprefs.c:1921 ../pidgin/plugins/timestamp_format.c:42
-#: ../pidgin/plugins/timestamp_format.c:51
-#: ../pidgin/plugins/win32/winprefs/winprefs.c:334
msgid "Always"
msgstr "সর্বদা"
-#: ../finch/gntsound.c:997 ../pidgin/gtkprefs.c:1919
msgid "Only when available"
msgstr "শুধুমাত্র যখন সহজলভ্য"
-#: ../finch/gntsound.c:998 ../pidgin/gtkprefs.c:1920
msgid "Only when not available"
msgstr "শুধুমাত্র যখন সহজলভ্য নয়"
-#: ../finch/gntsound.c:1005
msgid "Volume(0-100):"
msgstr "ভলিউম(০-১০০):"
#. Sound events
-#: ../finch/gntsound.c:1024 ../pidgin/gtkprefs.c:1949
msgid "Sound Events"
msgstr "শব্দ ইভেন্টসমূহ"
-#: ../finch/gntsound.c:1026 ../pidgin/gtkprefs.c:2008
msgid "Event"
msgstr "ইভেন্ট"
-#: ../finch/gntsound.c:1026
msgid "File"
msgstr "ফাইল"
-#: ../finch/gntsound.c:1045
msgid "Test"
msgstr "পরীক্ষা"
-#: ../finch/gntsound.c:1048 ../pidgin/gtkpounce.c:695
msgid "Reset"
msgstr "পুনঃ বিন্যাস করুন"
-#: ../finch/gntsound.c:1051
msgid "Choose..."
msgstr "পছন্দ করুন..."
-#: ../finch/gntstatus.c:138
#, c-format
msgid "Are you sure you want to delete \"%s\""
msgstr "আপনি কি নিশ্চিত আপনি \"%s\" মুছে ফেলতে চান"
-#: ../finch/gntstatus.c:141
msgid "Delete Status"
msgstr "অবস্থা মুছুন"
-#: ../finch/gntstatus.c:176 ../pidgin/gtksavedstatuses.c:631
msgid "Saved Statuses"
msgstr "সংরক্ষিত অবস্থাসমূহ"
-#: ../finch/gntstatus.c:183 ../finch/gntstatus.c:539
-#: ../libpurple/protocols/jabber/buddy.c:326
-#: ../libpurple/protocols/jabber/buddy.c:1375
-#: ../libpurple/protocols/msn/msn.c:871
-#: ../libpurple/protocols/myspace/myspace.c:507
-#: ../libpurple/protocols/novell/novell.c:1493
-#: ../libpurple/protocols/qq/group_info.c:141 ../pidgin/gtksavedstatuses.c:530
msgid "Title"
msgstr "শিরোনাম"
-#: ../finch/gntstatus.c:183 ../pidgin/gtksavedstatuses.c:545
msgid "Type"
msgstr "ধরন"
@@ -2057,136 +1372,76 @@ msgstr "ধরন"
#. user_settable
#. not independent
#. Attributes - each status can have a message.
-#: ../finch/gntstatus.c:183 ../finch/gntstatus.c:564 ../finch/gntstatus.c:576
-#: ../libpurple/protocols/bonjour/bonjour.c:281
-#: ../libpurple/protocols/bonjour/bonjour.c:288
-#: ../libpurple/protocols/bonjour/bonjour.c:371
-#: ../libpurple/protocols/gg/gg.c:992 ../libpurple/protocols/gg/gg.c:1645
-#: ../libpurple/protocols/gg/gg.c:1661 ../libpurple/protocols/gg/gg.c:1671
-#: ../libpurple/protocols/gg/gg.c:1677 ../libpurple/protocols/gg/gg.c:1686
-#: ../libpurple/protocols/gg/gg.c:1691 ../libpurple/protocols/irc/irc.c:243
-#: ../libpurple/protocols/jabber/jabber.c:1796
-#: ../libpurple/protocols/jabber/jabber.c:1810
-#: ../libpurple/protocols/jabber/jabber.c:1824
-#: ../libpurple/protocols/jabber/jabber.c:1838
-#: ../libpurple/protocols/jabber/jabber.c:1852
-#: ../libpurple/protocols/jabber/jabber.c:1868
-#: ../libpurple/protocols/msn/msn.c:823 ../libpurple/protocols/msn/msn.c:829
-#: ../libpurple/protocols/msn/msn.c:835 ../libpurple/protocols/msn/msn.c:841
-#: ../libpurple/protocols/msn/msn.c:846 ../libpurple/protocols/msn/msn.c:851
-#: ../libpurple/protocols/myspace/myspace.c:484
-#: ../libpurple/protocols/novell/novell.c:2856
-#: ../libpurple/protocols/novell/novell.c:2959
-#: ../libpurple/protocols/novell/novell.c:2965
-#: ../libpurple/protocols/novell/novell.c:2971
-#: ../libpurple/protocols/oscar/oscar.c:5993
-#: ../libpurple/protocols/oscar/oscar.c:6007
-#: ../libpurple/protocols/oscar/oscar.c:6023
-#: ../libpurple/protocols/oscar/oscar.c:6030
-#: ../libpurple/protocols/oscar/oscar.c:6037
-#: ../libpurple/protocols/sametime/sametime.c:3343
-#: ../libpurple/protocols/sametime/sametime.c:3349
-#: ../libpurple/protocols/sametime/sametime.c:3355
-#: ../libpurple/protocols/sametime/sametime.c:3434
-#: ../libpurple/protocols/silc/buddy.c:1566
-#: ../libpurple/protocols/silc10/buddy.c:1566
-#: ../libpurple/protocols/simple/simple.c:247
-#: ../libpurple/protocols/yahoo/yahoo.c:3854
-#: ../libpurple/protocols/yahoo/yahoo.c:3860
-#: ../libpurple/protocols/zephyr/zephyr.c:2358
-#: ../pidgin/gtksavedstatuses.c:560 ../pidgin/gtksavedstatuses.c:1047
msgid "Message"
msgstr "বার্তা"
#. Use
-#: ../finch/gntstatus.c:194 ../finch/gntstatus.c:593
msgid "Use"
msgstr "ব্যবহার করুন"
-#: ../finch/gntstatus.c:301
msgid "Invalid title"
msgstr "অবৈধ শিরোনাম"
# tithi
-#: ../finch/gntstatus.c:302
msgid "Please enter a non-empty title for the status."
msgstr "অনুগ্রহ করে অবস্থার জন্য খালি নয় এমন শিরোনাম প্রবেশ করান।"
-#: ../finch/gntstatus.c:310
msgid "Duplicate title"
msgstr "অনুরুপ শিরোনাম"
-#: ../finch/gntstatus.c:311
msgid "Please enter a different title for the status."
msgstr "অনুগ্রহ করে অবস্থাটির জন্য একটি ভিন্ন শিরোনাম প্রবেশ করান।"
-#: ../finch/gntstatus.c:452
msgid "Substatus"
msgstr "উপঅবস্থা"
-#: ../finch/gntstatus.c:464 ../pidgin/gtkft.c:701
msgid "Status:"
msgstr "অবস্থা:"
-#: ../finch/gntstatus.c:479
msgid "Message:"
msgstr "বার্তা:"
-#: ../finch/gntstatus.c:528
msgid "Edit Status"
msgstr "অবস্থা সম্পাদন করুন"
-#: ../finch/gntstatus.c:570
msgid "Use different status for following accounts"
msgstr "নিম্নোক্ত একাউন্টসমুহের জন্য ভিন্ন অবস্থা ব্যবহার করুন"
#. Save & Use
-#: ../finch/gntstatus.c:604
msgid "Save & Use"
msgstr "সংরক্ষণ এবং ব্যবহার করুন"
# tithi
-#: ../finch/gntui.c:97
msgid "Certificates"
msgstr "প্রত্যয়ন পত্র"
-#: ../finch/gntui.c:102 ../pidgin/gtkprefs.c:2169
msgid "Sounds"
msgstr "শব্দসমূহ"
-#: ../finch/gntui.c:104
msgid "Statuses"
msgstr "অবস্থাসমূহ"
-#: ../finch/plugins/gntclipboard.c:115 ../finch/plugins/gntclipboard.c:121
-#: ../finch/plugins/gntclipboard.c:128
msgid "Error loading the plugin."
msgstr "প্লাগইন লোড করার ত্রুটি।"
-#: ../finch/plugins/gntclipboard.c:116
msgid "Couldn't find X display"
msgstr "X প্রদর্শন খুঁজে পাবে না"
-#: ../finch/plugins/gntclipboard.c:122
msgid "Couldn't find window"
msgstr "উইন্ডো খুঁজে পাবে না"
# tithi
-#: ../finch/plugins/gntclipboard.c:129
msgid "This plugin cannot be loaded because it was not built with X11 support."
msgstr "এই প্লাগইনটি লোড করা যায় না কারণ এটি X11 সমর্থনে তৈরী হয়নি।"
# tithi
-#: ../finch/plugins/gntclipboard.c:158
msgid "GntClipboard"
msgstr "GntClipboard"
-#: ../finch/plugins/gntclipboard.c:160
msgid "Clipboard plugin"
msgstr "ক্লিপবোর্ড প্লাগইন"
# tithi
-#: ../finch/plugins/gntclipboard.c:161
msgid ""
"When the gnt clipboard contents change, the contents are made available to "
"X, if possible."
@@ -2194,83 +1449,66 @@ msgstr ""
"যদি সম্ভব হয় , যখন gnt ক্লিপবোর্ডের বিষয়বস্তুসমূহ পরিবর্তন হয়, তখন X এ বিষয়বস্তুসমূহ "
"সহজলভ্য করুন।"
-#: ../finch/plugins/gntgf.c:231
#, c-format
msgid "%s just signed on"
msgstr "%s অনলাইনে"
-#: ../finch/plugins/gntgf.c:238
#, c-format
msgid "%s just signed off"
msgstr "%s অফলাইনে"
-#: ../finch/plugins/gntgf.c:246
#, c-format
msgid "%s sent you a message"
msgstr "%s আপনাকে একটি বার্তা পাঠিয়েছে"
# tithi
-#: ../finch/plugins/gntgf.c:265
#, c-format
msgid "%s said your nick in %s"
msgstr "%1s আপনার ডাক নাম %2s এ বলছে"
-#: ../finch/plugins/gntgf.c:267
#, c-format
msgid "%s sent a message in %s"
msgstr "%1s %2s এ একটি বার্তা পাঠিয়েছে"
-#: ../finch/plugins/gntgf.c:305
msgid "Buddy signs on/off"
msgstr "বন্ধু সাইন চালু/বন্ধ"
-#: ../finch/plugins/gntgf.c:306
msgid "You receive an IM"
msgstr "আপনার একটি তাৎক্ষনিক বার্তা গ্রহণ করেছেন"
-#: ../finch/plugins/gntgf.c:307
msgid "Someone speaks in a chat"
msgstr "কেউ একজন আড্ডায় কথা বলছে"
-#: ../finch/plugins/gntgf.c:308
msgid "Someone says your name in a chat"
msgstr "কেউ একজন আড্ডায় আপনার নাম ধরে ডাকছে"
# tithi
-#: ../finch/plugins/gntgf.c:336
msgid "Notify with a toaster when"
msgstr "টোস্টার দ্বারা অবগতি করুন যখন"
# tithi
-#: ../finch/plugins/gntgf.c:351
msgid "Beep too!"
msgstr "শব্দও করবে!"
# tithi
-#: ../finch/plugins/gntgf.c:357
msgid "Set URGENT for the terminal window."
msgstr "টারমিনাল উইন্ডোর জন্য জরুরী নির্ধারণ করুন।"
# tithi
-#: ../finch/plugins/gntgf.c:377
msgid "GntGf"
msgstr "GntGf"
# tithi
-#: ../finch/plugins/gntgf.c:379 ../finch/plugins/gntgf.c:380
msgid "Toaster plugin"
msgstr "টোস্টার প্লাগইন"
-#: ../finch/plugins/gnthistory.c:114 ../pidgin/plugins/history.c:133
#, c-format
msgid "<b>Conversation with %s on %s:</b><br>"
msgstr "<b>%2s এ %2s এর সাথে কথোপকথন:</b><br>"
-#: ../finch/plugins/gnthistory.c:172 ../pidgin/plugins/history.c:160
msgid "History Plugin Requires Logging"
msgstr "ইতিহাস প্লাগইনের লগ করা প্রয়োজন"
-#: ../finch/plugins/gnthistory.c:173 ../pidgin/plugins/history.c:161
msgid ""
"Logging can be enabled from Tools -> Preferences -> Logging.\n"
"\n"
@@ -2282,15 +1520,12 @@ msgstr ""
"তাৎক্ষণিক বার্তার জন্য কার্যবিবরণীসমূহ সক্রিয় করছে এবং/বা একই ধরনের কথাবার্তার জন্য "
"আড্ডা ইতিহাস সক্রিয় করবে।"
-#: ../finch/plugins/gnthistory.c:217
msgid "GntHistory"
msgstr "GntHistory"
-#: ../finch/plugins/gnthistory.c:219 ../pidgin/plugins/history.c:204
msgid "Shows recently logged conversations in new conversations."
msgstr "নতুন কথোপকথনসমূহে সাম্প্রতিক লগকৃত কথোপকথনসমূহ প্রদর্শন করে।"
-#: ../finch/plugins/gnthistory.c:220 ../pidgin/plugins/history.c:205
msgid ""
"When a new conversation is opened this plugin will insert the last "
"conversation into the current conversation."
@@ -2298,189 +1533,128 @@ msgstr ""
"যখন একটি নতুন কথোপকথন খোলা হয় তখন এই প্লাগ-ইনটি নতুন কথোপকথনে সর্বশেষ কথোপকথন "
"প্রবেশ করবে।"
-#: ../finch/plugins/grouping.c:44 ../libpurple/protocols/oscar/oscar.c:756
-#: ../libpurple/protocols/qq/qq.c:260
msgid "Online"
msgstr "অনলাইন"
-#: ../finch/plugins/grouping.c:46 ../finch/plugins/grouping.c:143
-#: ../libpurple/protocols/gg/gg.c:927
-#: ../libpurple/protocols/jabber/buddy.c:2060
-#: ../libpurple/protocols/novell/novell.c:2846
-#: ../libpurple/protocols/oscar/oscar.c:915
-#: ../libpurple/protocols/oscar/oscar.c:5825
-#: ../libpurple/protocols/qq/qq.c:257 ../libpurple/protocols/qq/qq.c:264
-#: ../libpurple/protocols/qq/qq.c:425
-#: ../libpurple/protocols/yahoo/yahoo.c:3177 ../libpurple/status.c:159
-#: ../pidgin/gtkblist.c:3528 ../pidgin/gtkblist.c:3934
-#: ../pidgin/gtkdocklet.c:561 ../pidgin/gtkstatusbox.c:1099
msgid "Offline"
msgstr "অফলাইন "
-#: ../finch/plugins/grouping.c:115 ../pidgin/gtkblist.c:3564
msgid "Online Buddies"
msgstr "অফলাইন বন্ধু"
-#: ../finch/plugins/grouping.c:115
msgid "Offline Buddies"
msgstr "অফলাইন বন্ধু"
-#: ../finch/plugins/grouping.c:125
msgid "Online/Offline"
msgstr "অনলাইন/অফলাইন"
# tithi
-#: ../finch/plugins/grouping.c:162
msgid "Meebo"
msgstr "Meebo"
-#: ../finch/plugins/grouping.c:211
msgid "No Grouping"
msgstr "দলগত নয়"
# tithi
-#: ../finch/plugins/grouping.c:292
msgid "Nested Subgroup"
msgstr "নেস্টেড উপদল"
# tithi
-#: ../finch/plugins/grouping.c:324
msgid "Nested Grouping (experimental)"
msgstr "নেস্টেড দলগতকরণ (পরীক্ষামূলক)"
-#: ../finch/plugins/grouping.c:367 ../finch/plugins/grouping.c:368
msgid "Provides alternate buddylist grouping options."
msgstr "পর্যাক্রমিক বন্ধু-তালিকার দলগতকরণ পছন্দসমূহ প্রদান করে।"
# tithi
-#: ../finch/plugins/lastlog.c:69
msgid "Lastlog"
msgstr "সর্বশেষ-লগ"
# tithi
#. Translator Note: The "backlog" is the conversation buffer/history.
-#: ../finch/plugins/lastlog.c:100
msgid "lastlog: Searches for a substring in the backlog."
msgstr "সর্বশেষ-লগ: ব্যাকলগে উপস্ট্রিং খুঁজছে।"
# tithi
-#: ../finch/plugins/lastlog.c:122
msgid "GntLastlog"
msgstr "GntLastlog"
# tithi
-#: ../finch/plugins/lastlog.c:124 ../finch/plugins/lastlog.c:125
msgid "Lastlog plugin."
msgstr "সর্বশেষ-লগ প্লাগইন।"
-#: ../libpurple/account.c:888
msgid "accounts"
msgstr "একাউন্টসমূহ"
-#: ../libpurple/account.c:1064 ../libpurple/protocols/jabber/auth.c:204
-#: ../libpurple/protocols/silc/silc.c:474
msgid "Password is required to sign on."
msgstr "যোগদানের জন্য গুপ্তসংকেত আবশ্যক।"
-#: ../libpurple/account.c:1098
#, c-format
msgid "Enter password for %s (%s)"
msgstr "%1s (%2s) এর জন্য গুপ্তসংকেত প্রবেশ করান"
-#: ../libpurple/account.c:1105
msgid "Enter Password"
msgstr "গুপ্তসংকেত প্রবেশ করান"
-#: ../libpurple/account.c:1110
msgid "Save password"
msgstr "গুপ্তসংকেত সংরক্ষণ করুন"
-#: ../libpurple/account.c:1145 ../libpurple/connection.c:126
-#: ../libpurple/connection.c:204
#, c-format
msgid "Missing protocol plugin for %s"
msgstr "%s এর জন্য নিরুদ্দিষ্ট প্রটোকল প্লাগইন"
-#: ../libpurple/account.c:1147 ../libpurple/connection.c:129
msgid "Connection Error"
msgstr "সংযোগ ত্রুটি"
-#: ../libpurple/account.c:1371 ../libpurple/protocols/gg/gg.c:650
-#: ../libpurple/protocols/jabber/jabber.c:1924
msgid "New passwords do not match."
msgstr "নতুন গুপ্তসংকেতসমূহ মিলছে না।"
-#: ../libpurple/account.c:1384
msgid "Fill out all fields completely."
msgstr "সব ক্ষেত্র সম্পূর্ণরুপে পূরণ করুন।"
-#: ../libpurple/account.c:1416
msgid "Original password"
msgstr "মূল গুপ্তসংকেত"
-#: ../libpurple/account.c:1424
msgid "New password"
msgstr "নতুন গুপ্তসংকেত"
-#: ../libpurple/account.c:1432
msgid "New password (again)"
msgstr "নতুন গুপ্তসংকেত (আবার)"
-#: ../libpurple/account.c:1439
#, c-format
msgid "Change password for %s"
msgstr "%s এর জন্য গুপ্তসংকেত পরিবর্তন করুন"
-#: ../libpurple/account.c:1447
msgid "Please enter your current password and your new password."
msgstr "অনুগ্রহ করে আপনার বর্তমান গুপ্তসংকেত এবং নতুন গুপ্তসংকেত প্রবেশ করান।"
-#: ../libpurple/account.c:1478
#, c-format
msgid "Change user information for %s"
msgstr "%s এর জন্য ব্যবহাকারীর তথ্য পরিবর্তন করুন"
-#: ../libpurple/account.c:1481 ../libpurple/protocols/toc/toc.c:1670
msgid "Set User Info"
msgstr "ব্যবহারকারীর তথ্য নির্ধারণ করুন"
-#: ../libpurple/account.c:1952 ../libpurple/protocols/gg/gg.c:936
-#: ../libpurple/protocols/jabber/buddy.c:826
-#: ../libpurple/protocols/jabber/buddy.c:2056
-#: ../libpurple/protocols/jabber/buddy.c:2073
-#: ../libpurple/protocols/novell/novell.c:2849
-#: ../libpurple/protocols/qq/group_info.c:126
-#: ../libpurple/protocols/qq/qq.c:320 ../pidgin/gtkft.c:166
msgid "Unknown"
msgstr "অজানা"
-#: ../libpurple/blist.c:522 ../libpurple/blist.c:1346
-#: ../libpurple/blist.c:1558 ../libpurple/blist.c:1560
-#: ../libpurple/protocols/jabber/roster.c:68
-#: ../libpurple/protocols/myspace/myspace.c:3481 ../pidgin/gtkblist.c:6447
-#: ../pidgin/plugins/gevolution/gevo-util.c:67
-#: ../pidgin/plugins/gevolution/gevolution.c:96
msgid "Buddies"
msgstr "বন্ধুগণ"
-#: ../libpurple/blist.c:549
msgid "buddy list"
msgstr "বন্ধু তালিকা"
# tithi
-#: ../libpurple/certificate.c:558
msgid "(DOES NOT MATCH)"
msgstr "(মিলে না)"
# tithi
#. Make messages
-#: ../libpurple/certificate.c:562
#, c-format
msgid "%s has presented the following certificate for just-this-once use:"
msgstr "শুধুমাত্র-এটি-একবার ব্যবহারের জন্য %s নিম্নলিখিত প্রত্যয়ন পত্র উপস্থাপন করেছে:"
# tithi
-#: ../libpurple/certificate.c:563
#, c-format
msgid ""
"Common name: %s %s\n"
@@ -2491,54 +1665,45 @@ msgstr ""
# tithi
#. TODO: Find what the handle ought to be
-#: ../libpurple/certificate.c:568
msgid "Single-use Certificate Verification"
msgstr "একক-ব্যবহারের প্রত্যয়ন পত্রের সত্যতা যাচাই"
# tithi
#. Scheme name
#. Pool name
-#: ../libpurple/certificate.c:897
msgid "Certificate Authorities"
msgstr "প্রত্যয়ন পত্রের কর্তৃপক্ষ"
# tithi
#. Scheme name
#. Pool name
-#: ../libpurple/certificate.c:1065
msgid "SSL Peers Cache"
msgstr "SSL পিয়ার্স ক্যাশে"
#. Make messages
-#: ../libpurple/certificate.c:1196
#, c-format
msgid "Accept certificate for %s?"
msgstr "%s এর জন্য কি প্রত্যয়ন পত্র গ্রহণ করবেন?"
# tithi
#. TODO: Find what the handle ought to be
-#: ../libpurple/certificate.c:1202
msgid "SSL Certificate Verification"
msgstr "SSL প্রত্যয়ন পত্রের সত্যতা যাচাই"
#. Number of actions
-#: ../libpurple/certificate.c:1211
msgid "Accept"
msgstr "গ্রহণ করুন"
-#: ../libpurple/certificate.c:1212
msgid "Reject"
msgstr "প্রত্যাখান করুন"
# tithi
-#: ../libpurple/certificate.c:1213
msgid "_View Certificate..."
msgstr "প্রত্যয়ন পত্র দেখুন...(_V)"
# tithi
#. Prompt the user to authenticate the certificate
#. vrq will be completed by user_auth
-#: ../libpurple/certificate.c:1315
#, c-format
msgid ""
"The certificate presented by \"%s\" is self-signed. It cannot be "
@@ -2548,7 +1713,6 @@ msgstr ""
"যাবে না।"
# tithi
-#: ../libpurple/certificate.c:1333
#, c-format
msgid "The certificate chain presented for %s is not valid."
msgstr "%s এর জন্য উপস্থাপিত প্রত্যয়ন পত্রের শৃঙ্খল বৈধ নয়।"
@@ -2558,17 +1722,14 @@ msgstr "%s এর জন্য উপস্থাপিত প্রত্যয়
#. stifle it.
#. TODO: Probably wrong.
#. TODO: Probably wrong
-#: ../libpurple/certificate.c:1341 ../libpurple/certificate.c:1411
msgid "SSL Certificate Error"
msgstr "SSL প্রত্যয়ন পত্রের ত্রুটি"
-#: ../libpurple/certificate.c:1342
msgid "Invalid certificate chain"
msgstr "অবৈধ প্রত্যয়ন পত্রের শৃঙ্খল"
# tithi
#. vrq will be completed by user_auth
-#: ../libpurple/certificate.c:1363
msgid ""
"You have no database of root certificates, so this certificate cannot be "
"validated."
@@ -2578,13 +1739,11 @@ msgstr ""
# tithi
#. vrq will be completed by user_auth
-#: ../libpurple/certificate.c:1386
msgid ""
"The root certificate this one claims to be issued by is unknown to Pidgin."
msgstr "মূল প্রত্যয়ন পত্রটি যার দ্বারা প্রদান করা হয়েছে তা পিজিনের কাছে অপরিচিত।"
# tithi
-#: ../libpurple/certificate.c:1403
#, c-format
msgid ""
"The certificate chain presented by %s does not have a valid digital "
@@ -2594,7 +1753,6 @@ msgstr ""
"%s দ্বারা উপস্থাপিত প্রত্যয়ন পত্র শৃঙ্খলের প্রত্যয়ন পত্রের কর্তৃপক্ষ হতে প্রাপ্ত বৈধ "
"ডিজিটাল স্বাক্ষর নেই যা দ্বারা এটি দাবী করে যে এর স্বাক্ষর আছে।"
-#: ../libpurple/certificate.c:1412
msgid "Invalid certificate authority signature"
msgstr "অবৈধ প্রত্যয়ন পত্র কতৃপক্ষের স্বাক্ষর"
@@ -2603,7 +1761,6 @@ msgstr "অবৈধ প্রত্যয়ন পত্র কতৃপক্ষ
#. TODO: Provide the user with more guidance about why he is
#. being prompted
#. vrq will be completed by user_auth
-#: ../libpurple/certificate.c:1438
#, c-format
msgid ""
"The certificate presented by \"%s\" claims to be from \"%s\" instead. This "
@@ -2615,7 +1772,6 @@ msgstr ""
# tithi
#. Make messages
-#: ../libpurple/certificate.c:1900
#, c-format
msgid ""
"Common name: %s\n"
@@ -2633,128 +1789,94 @@ msgstr ""
"মেয়াদ উত্তীর্ণের তারিখ: %s\n"
#. TODO: Find what the handle ought to be
-#: ../libpurple/certificate.c:1912
msgid "Certificate Information"
msgstr "প্রত্যদন পত্রের তথ্য"
-#: ../libpurple/connection.c:128
msgid "Registration Error"
msgstr "নিবন্ধন ত্রুটি"
-#: ../libpurple/connection.c:206
msgid "Unregistration Error"
msgstr "নিবন্ধনহীন ত্রুটি"
-#: ../libpurple/connection.c:366
#, c-format
msgid "+++ %s signed on"
msgstr "+++ %s এখন অনলাইন "
-#: ../libpurple/connection.c:396
#, c-format
msgid "+++ %s signed off"
msgstr "+++ %s এখন অফলাইন"
-#: ../libpurple/connection.c:549 ../libpurple/plugin.c:279
-#: ../libpurple/protocols/jabber/buddy.c:2376
-#: ../libpurple/protocols/msn/servconn.c:140
-#: ../libpurple/protocols/msn/session.c:381
-#: ../libpurple/protocols/msnp9/servconn.c:139
-#: ../libpurple/protocols/msnp9/session.c:343
-#: ../libpurple/protocols/oscar/family_chatnav.c:63
msgid "Unknown error"
msgstr "অজানা ত্রুটি"
-#: ../libpurple/conversation.c:168
msgid "Unable to send message: The message is too large."
msgstr "বার্তা পাঠাতে সমর্থ নয়: বার্তাটি খুবই বড়।"
-#: ../libpurple/conversation.c:171 ../libpurple/conversation.c:184
#, c-format
msgid "Unable to send message to %s."
msgstr "%s-এ বার্তাটি পাঠাতে সমর্থ নয়।"
-#: ../libpurple/conversation.c:172
msgid "The message is too large."
msgstr "বার্তাটি খুবই বড়।"
-#: ../libpurple/conversation.c:181 ../libpurple/protocols/bonjour/jabber.c:297
-#: ../libpurple/protocols/bonjour/jabber.c:340
-#: ../libpurple/protocols/qq/qq_process.c:90
msgid "Unable to send message."
msgstr "বার্তা পাঠাতে সমর্থ নয়।"
-#: ../libpurple/conversation.c:1229
msgid "Send Message"
msgstr "বার্তা প্রেরণ করুন"
-#: ../libpurple/conversation.c:1232
msgid "_Send Message"
msgstr "বার্তা প্রেরণ করুন (_S)"
-#: ../libpurple/conversation.c:1638
#, c-format
msgid "%s entered the room."
msgstr "%s এই কক্ষে প্রবেশ করেছে।"
-#: ../libpurple/conversation.c:1641
#, c-format
msgid "%s [<I>%s</I>] entered the room."
msgstr "%1s [<I>%2s</I>] এই কক্ষে প্রবেশ করেছে।"
-#: ../libpurple/conversation.c:1751
#, c-format
msgid "You are now known as %s"
msgstr "আপনি এখন %s নামে পরিচিত"
-#: ../libpurple/conversation.c:1771
#, c-format
msgid "%s is now known as %s"
msgstr "%1s এখন %2s নামে পরিচিত"
-#: ../libpurple/conversation.c:1846
#, c-format
msgid "%s left the room."
msgstr "%s এই কক্ষে ত্যাগ করেছে।"
-#: ../libpurple/conversation.c:1849
#, c-format
msgid "%s left the room (%s)."
msgstr "%1s (%2s) এই কক্ষে ত্যাগ করেছে।"
-#: ../libpurple/dbus-server.c:591
#, c-format
msgid "Failed to get connection: %s"
msgstr "সংযোগ পেতে ব্যর্থ: %s"
-#: ../libpurple/dbus-server.c:603
#, c-format
msgid "Failed to get name: %s"
msgstr "নাম পেতে ব্যর্থ: %s"
-#: ../libpurple/dbus-server.c:617
#, c-format
msgid "Failed to get serv name: %s"
msgstr "সার্ভার নাম পেতে ব্যর্থ: %s"
# tithi
-#: ../libpurple/dbus-server.h:86
msgid "Purple's D-BUS server is not running for the reason listed below"
msgstr "Purple-এর D-BUS সার্ভার নিচের তালিকাভুক্ত কারণের জন্য চলছে না"
-#: ../libpurple/desktopitem.c:287 ../libpurple/desktopitem.c:878
msgid "No name"
msgstr "কোনো নাম নেই"
-#: ../libpurple/dnsquery.c:527
msgid "Unable to create new resolver process\n"
msgstr "নতুন সমাধান পদ্ধতি তৈরী করতে অক্ষম\n"
-#: ../libpurple/dnsquery.c:532
msgid "Unable to send request to resolver process\n"
msgstr "সমাধানকারীর পদ্ধতিতে অনুরোধ পাঠাতে অক্ষম\n"
-#: ../libpurple/dnsquery.c:565 ../libpurple/dnsquery.c:720
#, c-format
msgid ""
"Error resolving %s:\n"
@@ -2763,13 +1885,10 @@ msgstr ""
"%1s সমাধানে ত্রুটি: \n"
"%2s"
-#: ../libpurple/dnsquery.c:568 ../libpurple/dnsquery.c:734
-#: ../libpurple/dnsquery.c:852
#, c-format
msgid "Error resolving %s: %d"
msgstr "%1s সমাধানে ত্রুটি: %2d"
-#: ../libpurple/dnsquery.c:590
#, c-format
msgid ""
"Error reading from resolver process:\n"
@@ -2779,22 +1898,18 @@ msgstr ""
"%s"
# tithi
-#: ../libpurple/dnsquery.c:594
+#, c-format
msgid "Resolver process exited without answering our request"
msgstr "সমাধানকারী পদ্ধতি আমাদের অনুরোধের উত্তর না দিয়ে প্রস্থান করেছে"
# tithi
-#: ../libpurple/dnsquery.c:784
#, c-format
msgid "Thread creation failure: %s"
msgstr "থ্রেড সৃষ্টি ব্যর্থ: %s"
-#: ../libpurple/dnsquery.c:785 ../libpurple/protocols/qq/buddy_opt.c:988
-#: ../libpurple/protocols/qq/buddy_opt.c:1241
msgid "Unknown reason"
msgstr "অজানা কারণ"
-#: ../libpurple/ft.c:210
#, c-format
msgid ""
"Error reading %s: \n"
@@ -2803,7 +1918,6 @@ msgstr ""
"%1s পড়ায় ত্রুটি: \n"
"%2s।\n"
-#: ../libpurple/ft.c:214
#, c-format
msgid ""
"Error writing %s: \n"
@@ -2812,7 +1926,6 @@ msgstr ""
"%1s লেখায় ত্রুটি: \n"
"%2s।\n"
-#: ../libpurple/ft.c:218
#, c-format
msgid ""
"Error accessing %s: \n"
@@ -2822,39 +1935,31 @@ msgstr ""
"%s।\n"
# tithi
-#: ../libpurple/ft.c:254
msgid "Directory is not writable."
msgstr "নির্দেশিকা লিখনযোগ্য নয়।"
-#: ../libpurple/ft.c:269
msgid "Cannot send a file of 0 bytes."
msgstr "০ বাইটের কোনো ফাইল পাঠাতে পারে না।"
-#: ../libpurple/ft.c:279
msgid "Cannot send a directory."
msgstr "নির্দেশিকা পাঠাতে পারে না।"
-#: ../libpurple/ft.c:288
#, c-format
msgid "%s is not a regular file. Cowardly refusing to overwrite it.\n"
msgstr "%s নিয়মিত কোনো ফাইল নয়। কাপুরুষোচিত ভাবে উপরিলেখ করতে প্রত্যাখ্যান করছে।\n"
-#: ../libpurple/ft.c:348
#, c-format
msgid "%s wants to send you %s (%s)"
msgstr "%1s আপনাকে %2s (%3s) পাঠাতে চায়"
-#: ../libpurple/ft.c:355
#, c-format
msgid "%s wants to send you a file"
msgstr "%s আপনাকে একটি ফাইল পাঠাতে চায়"
-#: ../libpurple/ft.c:398
#, c-format
msgid "Accept file transfer request from %s?"
msgstr "%s এর ফাইল স্থানান্তর করার অনুরোধ গ্রহন করবেন কি?"
-#: ../libpurple/ft.c:402
#, c-format
msgid ""
"A file is available for download from:\n"
@@ -2865,181 +1970,147 @@ msgstr ""
"দূরবর্তী হোস্ট: %s\n"
"দূরবর্তী পোর্ট: %d"
-#: ../libpurple/ft.c:437
#, c-format
msgid "%s is offering to send file %s"
msgstr "%1s %2s ফাইলটি পাঠানোর প্রস্তাব দিচ্ছে"
-#: ../libpurple/ft.c:490
#, c-format
msgid "%s is not a valid filename.\n"
msgstr "%s বৈধ ফাইল নাম নয়।\n"
-#: ../libpurple/ft.c:511
#, c-format
msgid "Offering to send %s to %s"
msgstr "%2s এ %1s পাঠানোর প্রস্তাব দিচ্ছে"
-#: ../libpurple/ft.c:523
#, c-format
msgid "Starting transfer of %s from %s"
msgstr "%2s হতে %1s-এর স্থানান্তর শুরু হচ্ছে"
-#: ../libpurple/ft.c:700
#, c-format
msgid "Transfer of file %s complete"
msgstr "%s ফাইলের স্থানান্তর সম্পূর্ণ"
-#: ../libpurple/ft.c:703
msgid "File transfer complete"
msgstr "ফাইল স্থানান্তর সম্পূর্ণ"
-#: ../libpurple/ft.c:1138
#, c-format
msgid "You canceled the transfer of %s"
msgstr "আপনি %s এর স্থানান্তর বাতিল করেছেন"
-#: ../libpurple/ft.c:1143
msgid "File transfer cancelled"
msgstr "ফাইল স্থানান্তর বাতিল করা হয়েছে"
-#: ../libpurple/ft.c:1201
#, c-format
msgid "%s canceled the transfer of %s"
msgstr "%1s %2s-এর স্থানান্তর বাতিল করেছে"
-#: ../libpurple/ft.c:1206
#, c-format
msgid "%s canceled the file transfer"
msgstr "%s ফাইল স্থানান্তর বাতিল করেছে"
-#: ../libpurple/ft.c:1263
#, c-format
msgid "File transfer to %s failed."
msgstr "%s এ ফাইলের স্থানান্তর ব্যর্থ হয়েছে।"
-#: ../libpurple/ft.c:1265
#, c-format
msgid "File transfer from %s failed."
msgstr "%s থেকে ফাইলের স্থানান্তর ব্যর্থ হয়েছে।"
-#: ../libpurple/gconf/purple.schemas.in.h:1
msgid "Run the command in a terminal"
msgstr "নির্দেশটি টার্মিনালে চালান"
# tithi
-#: ../libpurple/gconf/purple.schemas.in.h:2
msgid "The command used to handle \"aim\" URLs, if enabled."
msgstr "যদি সক্রিয় থাকে, এই নির্দেশটি ‌‌\"aim\" এর URL নিয়ন্ত্রণ করতে ব্যবহার করা হয়।"
# tithi
-#: ../libpurple/gconf/purple.schemas.in.h:3
msgid "The command used to handle \"gg\" URLs, if enabled."
msgstr "যদি সক্রিয় থাকে, এই নির্দেশটি ‌‌\"gg\" এর URL নিয়ন্ত্রণ করতে ব্যবহার করা হয়।"
# tithi
-#: ../libpurple/gconf/purple.schemas.in.h:4
msgid "The command used to handle \"icq\" URLs, if enabled."
msgstr "যদি সক্রিয় থাকে, এই নির্দেশটি ‌‌\"icq\" এর URL নিয়ন্ত্রণ করতে ব্যবহার করা হয়।"
# tithi
-#: ../libpurple/gconf/purple.schemas.in.h:5
msgid "The command used to handle \"irc\" URLs, if enabled."
msgstr "যদি সক্রিয় থাকে, এই নির্দেশটি ‌‌\"irc\" এর URL নিয়ন্ত্রণ করতে ব্যবহার করা হয়।"
# tithi
-#: ../libpurple/gconf/purple.schemas.in.h:6
msgid "The command used to handle \"msnim\" URLs, if enabled."
msgstr ""
"যদি সক্রিয় থাকে, এই নির্দেশটি ‌‌\"msnim\" এর URL নিয়ন্ত্রণ করতে ব্যবহার করা হয়।"
# tithi
-#: ../libpurple/gconf/purple.schemas.in.h:7
msgid "The command used to handle \"sip\" URLs, if enabled."
msgstr "যদি সক্রিয় থাকে, এই নির্দেশটি ‌‌\"sip\" এর URL নিয়ন্ত্রণ করতে ব্যবহার করা হয়।"
# tithi
-#: ../libpurple/gconf/purple.schemas.in.h:8
msgid "The command used to handle \"xmpp\" URLs, if enabled."
msgstr ""
"যদি সক্রিয় থাকে, এই নির্দেশটি ‌‌\"xmpp\" এর URL নিয়ন্ত্রণ করতে ব্যবহার করা হয়।"
# tithi
-#: ../libpurple/gconf/purple.schemas.in.h:9
msgid "The command used to handle \"ymsgr\" URLs, if enabled."
msgstr ""
"যদি সক্রিয় থাকে, এই নির্দেশটি ‌‌\"ymsgr\" এর URL নিয়ন্ত্রণ করতে ব্যবহার করা হয়।"
# tithi
-#: ../libpurple/gconf/purple.schemas.in.h:10
msgid "The handler for \"aim\" URLs"
msgstr "‌‌‌\"aim\" এর URL-এর জন্য নিয়ন্ত্রণকারী"
# tithi
-#: ../libpurple/gconf/purple.schemas.in.h:11
msgid "The handler for \"gg\" URLs"
msgstr "‌‌‌\"gg\" এর URL-এর জন্য নিয়ন্ত্রণকারী"
# tithi
-#: ../libpurple/gconf/purple.schemas.in.h:12
msgid "The handler for \"icq\" URLs"
msgstr "‌‌‌\"icq\" এর URL-এর জন্য নিয়ন্ত্রণকারী"
# tithi
-#: ../libpurple/gconf/purple.schemas.in.h:13
msgid "The handler for \"irc\" URLs"
msgstr "‌‌‌\"irc\" এর URL-এর জন্য নিয়ন্ত্রণকারী"
# tithi
-#: ../libpurple/gconf/purple.schemas.in.h:14
msgid "The handler for \"msnim\" URLs"
msgstr "‌‌‌\"msnim\" এর URL-এর জন্য নিয়ন্ত্রণকারী"
# tithi
-#: ../libpurple/gconf/purple.schemas.in.h:15
msgid "The handler for \"sip\" URLs"
msgstr "‌‌‌\"sip\" এর URL-এর জন্য নিয়ন্ত্রণকারী"
# tithi
-#: ../libpurple/gconf/purple.schemas.in.h:16
msgid "The handler for \"xmpp\" URLs"
msgstr "‌‌‌\"xmpp\" এর URL-এর জন্য নিয়ন্ত্রণকারী"
# tithi
-#: ../libpurple/gconf/purple.schemas.in.h:17
msgid "The handler for \"ymsgr\" URLs"
msgstr "\"ymsgr\" এর URL-এর জন্য নিয়ন্ত্রণকারী"
# fix me tithi
-#: ../libpurple/gconf/purple.schemas.in.h:18
msgid ""
"True if the command specified in the \"command\" key should handle \"aim\" "
"URLs."
msgstr "সত্য যদি \"নির্দেশ\" কী-তে উল্লেখিত নির্দেশটি \"aim\" এর URL নিয়ন্ত্রণ করে।"
# tithi
-#: ../libpurple/gconf/purple.schemas.in.h:19
msgid ""
"True if the command specified in the \"command\" key should handle \"gg\" "
"URLs."
msgstr "সত্য যদি \"নির্দেশ\" কী-তে উল্লেখিত নির্দেশটি \"gg\" এর URL নিয়ন্ত্রণ করে।"
# tithi
-#: ../libpurple/gconf/purple.schemas.in.h:20
msgid ""
"True if the command specified in the \"command\" key should handle \"icq\" "
"URLs."
msgstr "সত্য যদি \"নির্দেশ\" কী-তে উল্লেখিত নির্দেশটি \"icq\" এর URL নিয়ন্ত্রণ করে।"
# tithi
-#: ../libpurple/gconf/purple.schemas.in.h:21
msgid ""
"True if the command specified in the \"command\" key should handle \"irc\" "
"URLs."
msgstr "সত্য যদি \"নির্দেশ\" কী-তে উল্লেখিত নির্দেশটি \"irc\" এর URL নিয়ন্ত্রণ করে।"
# tithi
-#: ../libpurple/gconf/purple.schemas.in.h:22
msgid ""
"True if the command specified in the \"command\" key should handle \"msnim\" "
"URLs."
@@ -3047,21 +2118,18 @@ msgstr ""
"সত্য যদি \"নির্দেশ\" কী-তে উল্লেখিত নির্দেশটি \"msnim\" এর URL নিয়ন্ত্রণ করে।"
# tithi
-#: ../libpurple/gconf/purple.schemas.in.h:23
msgid ""
"True if the command specified in the \"command\" key should handle \"sip\" "
"URLs."
msgstr "সত্য যদি \"নির্দেশ\" কী-তে উল্লেখিত নির্দেশটি \"sip\" এর URL নিয়ন্ত্রণ করে।"
# tithi
-#: ../libpurple/gconf/purple.schemas.in.h:24
msgid ""
"True if the command specified in the \"command\" key should handle \"xmpp\" "
"URLs."
msgstr "সত্য যদি \"নির্দেশ\" কী-তে উল্লেখিত নির্দেশটি \"xmpp\" এর URL নিয়ন্ত্রণ করে।"
# tithi
-#: ../libpurple/gconf/purple.schemas.in.h:25
msgid ""
"True if the command specified in the \"command\" key should handle \"ymsgr\" "
"URLs."
@@ -3069,78 +2137,62 @@ msgstr ""
"সত্য যদি \"নির্দেশ\" কী-তে উল্লেখিত নির্দেশটি \"ymsgr\" এর URL নিয়ন্ত্রণ করে।"
# tithi
-#: ../libpurple/gconf/purple.schemas.in.h:26
msgid ""
"True if the command used to handle this type of URL should be run in a "
"terminal."
msgstr "সত্য হবে যদি এই ধরনের URL নিয়ন্ত্রণ করতে ব্যবহৃত নির্দেশটি টার্মিনালে চলে। "
# tithi
-#: ../libpurple/gconf/purple.schemas.in.h:27
msgid "Whether the specified command should handle \"aim\" URLs"
msgstr "উল্লেখিত নির্দেশটি \"aim\" এর URL নিয়ন্ত্রণ করবে কিনা"
# tithi
-#: ../libpurple/gconf/purple.schemas.in.h:28
msgid "Whether the specified command should handle \"gg\" URLs"
msgstr "উল্লেখিত নির্দেশটি \"gg\" এর URL নিয়ন্ত্রণ করবে কিনা"
# tithi
-#: ../libpurple/gconf/purple.schemas.in.h:29
msgid "Whether the specified command should handle \"icq\" URLs"
msgstr "উল্লেখিত নির্দেশটি \"icq\" এর URL নিয়ন্ত্রণ করবে কিনা"
# tithi
-#: ../libpurple/gconf/purple.schemas.in.h:30
msgid "Whether the specified command should handle \"irc\" URLs"
msgstr "উল্লেখিত নির্দেশটি \"irc\" এর URL নিয়ন্ত্রণ করবে কিনা"
# tithi
-#: ../libpurple/gconf/purple.schemas.in.h:31
msgid "Whether the specified command should handle \"msnim\" URLs"
msgstr "উল্লেখিত নির্দেশটি \"msnim\" এর URL নিয়ন্ত্রণ করবে কিনা"
# tithi
-#: ../libpurple/gconf/purple.schemas.in.h:32
msgid "Whether the specified command should handle \"sip\" URLs"
msgstr "উল্লেখিত নির্দেশটি \"sip\" এর URL নিয়ন্ত্রণ করবে কিনা"
# tithi
-#: ../libpurple/gconf/purple.schemas.in.h:33
msgid "Whether the specified command should handle \"xmpp\" URLs"
msgstr "উল্লেখিত নির্দেশটি \"xmpp\" এর URL নিয়ন্ত্রণ করবে কিনা"
# tithi
-#: ../libpurple/gconf/purple.schemas.in.h:34
msgid "Whether the specified command should handle \"ymsgr\" URLs"
msgstr "উল্লেখিত নির্দেশটি \"ymsgr\" এর URL নিয়ন্ত্রণ করবে কিনা"
-#: ../libpurple/log.c:183
msgid "<b><font color=\"red\">The logger has no read function</font></b>"
msgstr "<b><font color=\"red\">এই লগাকারীর পাঠ করার কোনো ফাংশন নেই</font></b>"
-#: ../libpurple/log.c:597
msgid "HTML"
msgstr "এইচটিএমএল"
-#: ../libpurple/log.c:611
msgid "Plain text"
msgstr "সরল পাঠ"
# tithi
-#: ../libpurple/log.c:625
msgid "Old flat format"
msgstr "পুরাতন সম্পূর্ণ বিন্যাস"
-#: ../libpurple/log.c:850
msgid "Logging of this conversation failed."
msgstr "এই কথোপকথোনে সংযুক্তকরণ ব্যর্থ।"
-#: ../libpurple/log.c:1292
msgid "XML"
msgstr "এক্সএমএল"
-#: ../libpurple/log.c:1376
#, c-format
msgid ""
"<font color=\"#16569E\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-"
@@ -3149,7 +2201,6 @@ msgstr ""
"<font color=\"#16569E\"><font size=\"2\">(%1s)</font> <b>%2s &3lt;স্বয়ংক্রিয়-"
"উত্তর&4gt;:</b></font> %5s<br/>\n"
-#: ../libpurple/log.c:1378
#, c-format
msgid ""
"<font color=\"#A82F2F\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-"
@@ -3158,51 +2209,42 @@ msgstr ""
"<font color=\"#A82F2F\"><font size=\"2\">(%1s)</font> <b>%2s &3lt;স্বয়ংক্রিয়-"
"উত্তর&4gt;:</b></font> %5s<br/>\n"
-#: ../libpurple/log.c:1436 ../libpurple/log.c:1569
msgid "<font color=\"red\"><b>Unable to find log path!</b></font>"
msgstr "<font color=\"red\"><b>লগ পথ খুঁজতে অক্ষম</b></font>"
-#: ../libpurple/log.c:1448 ../libpurple/log.c:1578
#, c-format
msgid "<font color=\"red\"><b>Could not read file: %s</b></font>"
msgstr "<font color=\"red\"><b>ফাইল পড়তে পারেনি: %s</b></font>"
-#: ../libpurple/log.c:1510
#, c-format
msgid "(%s) %s <AUTO-REPLY>: %s\n"
msgstr "(%1s) %2s <AUTO-REPLY>: %3s\n"
# tithi
-#: ../libpurple/plugin.c:362
#, c-format
msgid "You are using %s, but this plugin requires %s."
msgstr "আপনি %1s ব্যবহার করছেন, কিন্তু এই প্লাগইনের %2s প্রয়োজন।"
# tithi
-#: ../libpurple/plugin.c:377
msgid "This plugin has not defined an ID."
msgstr "এই প্লাগইন একটি আইডি নির্ধারণ করেনি।"
# tithi
-#: ../libpurple/plugin.c:445
#, c-format
msgid "Plugin magic mismatch %d (need %d)"
msgstr "প্লাগইন ম্যাজিক %1d এর সাথে মিলে না (%2d প্রয়োজন)"
# tithi
-#: ../libpurple/plugin.c:462
#, c-format
msgid "ABI version mismatch %d.%d.x (need %d.%d.x)"
msgstr "ABI সংস্করণ %1d এর সাথে মিলে না।%2d.x (%3d.%4d.x প্রয়োজন)"
# tithi
-#: ../libpurple/plugin.c:479
msgid ""
"Plugin does not implement all required functions (list_icon, login and close)"
msgstr ""
"প্লাগইন সকল প্রয়োজনীয় ফাংশন বাস্তবায়ন করে না (লিস্ট-আইকন (_i), লগইন এবং বন্ধ করুন)"
-#: ../libpurple/plugin.c:544
#, c-format
msgid ""
"The required plugin %s was not found. Please install this plugin and try "
@@ -3211,88 +2253,62 @@ msgstr ""
"প্রয়োজনীয় প্লাগইন %s খুঁজে পাওয়া যায়নি। অনুগ্রহ করে এই প্লাগইনটি সংস্থাপন করুন এবং "
"পুনরায় চেষ্টা করুন।"
-#: ../libpurple/plugin.c:549
msgid "Unable to load the plugin"
msgstr "প্লাগইনটি লোড করতে অক্ষম"
-#: ../libpurple/plugin.c:571
#, c-format
msgid "The required plugin %s was unable to load."
msgstr "প্রয়োজনীয় প্লাগইন %s লোড করতে অক্ষম।"
-#: ../libpurple/plugin.c:575
msgid "Unable to load your plugin."
msgstr "আপনার প্লাগইনটি লোড করতে অক্ষম।"
-#: ../libpurple/plugin.c:665
#, c-format
msgid "%s requires %s, but it failed to unload."
msgstr "%1s এর %2s প্রয়োজন, কিন্তু এটি লোডহীন করতে ব্যর্থ।"
-#: ../libpurple/plugins/autoaccept.c:23
msgid "Autoaccept"
msgstr "স্বয়ংক্রিয়-গ্রহণ"
-#: ../libpurple/plugins/autoaccept.c:25 ../libpurple/plugins/autoaccept.c:26
msgid "Auto-accept file transfer requests from selected users."
msgstr "নির্বাচিত ব্যবহারকারীর কাছ থেকে স্বয়ং-গ্রহণ ফাইলের স্থানান্তর অনুরোধ করছে।"
-#: ../libpurple/plugins/autoaccept.c:81
#, c-format
msgid "Autoaccepted file transfer of \"%s\" from \"%s\" completed."
msgstr "\"%1s\" হতে \"%2s\" স্বয়ং-গৃহীত ফাইল স্থানান্তর সম্পূর্ণ হয়েছে।"
-#: ../libpurple/plugins/autoaccept.c:83
msgid "Autoaccept complete"
msgstr "স্বয়ং-গ্রহণ সম্পন্ন"
-#: ../libpurple/plugins/autoaccept.c:196
#, c-format
msgid "When a file-transfer request arrives from %s"
msgstr "যখন %s থেকে ফাইল-স্থানান্তর অনুরোধ পৌছায়"
# tithi
-#: ../libpurple/plugins/autoaccept.c:198
msgid "Set Autoaccept Setting"
msgstr "স্বয়ং-গ্রহণ বিন্যাসন নির্ধারণ করুন"
-#: ../libpurple/plugins/autoaccept.c:200
msgid "_Save"
msgstr "সংরক্ষণ (_S)"
-#: ../libpurple/plugins/autoaccept.c:201 ../libpurple/plugins/idle.c:170
-#: ../libpurple/plugins/idle.c:204 ../libpurple/plugins/idle.c:230
-#: ../libpurple/protocols/oscar/oscar.c:1617
-#: ../libpurple/protocols/oscar/oscar.c:2493
-#: ../libpurple/protocols/oscar/oscar.c:2541
-#: ../libpurple/protocols/oscar/oscar.c:6108
-#: ../libpurple/protocols/oscar/oscar.c:6163
-#: ../libpurple/protocols/oscar/oscar.c:6394
-#: ../libpurple/protocols/oscar/oscar.c:6464 ../libpurple/request.h:1401
-#: ../libpurple/request.h:1411
msgid "_Cancel"
msgstr "বাতিল (_C)"
# tithi
-#: ../libpurple/plugins/autoaccept.c:204
msgid "Ask"
msgstr "জিজ্ঞাসা করুন"
-#: ../libpurple/plugins/autoaccept.c:205
msgid "Auto Accept"
msgstr "স্বয়ং গ্রহণ করুন"
-#: ../libpurple/plugins/autoaccept.c:206
msgid "Auto Reject"
msgstr "স্বয়ং প্রত্যাখ্যান করুন"
-#: ../libpurple/plugins/autoaccept.c:221
msgid "Autoaccept File Transfers..."
msgstr "স্বয়ংক্রিয়-গ্রহণ ফাইল স্থানান্তর করে..."
# tithi
#. XXX: Is there a better way than this? There really should be.
-#: ../libpurple/plugins/autoaccept.c:251
msgid ""
"Path to save the files in\n"
"(Please provide the full path)"
@@ -3300,12 +2316,10 @@ msgstr ""
"ফাইলটি সংরক্ষণ করার পথ\n"
"(অনুগ্রহ করে সম্পূর্ণ পথ প্রদান করুন)"
-#: ../libpurple/plugins/autoaccept.c:256
msgid "Automatically reject from users not in buddy list"
msgstr "বন্ধু তালিকার বহির্ভুত ব্যবহারকারীগণ হতে স্বয়ংক্রিয় ভাবে বাতিল করুন"
# tithi
-#: ../libpurple/plugins/autoaccept.c:260
msgid ""
"Notify with a popup when an autoaccepted file transfer is complete\n"
"(only when there's no conversation with the sender)"
@@ -3313,22 +2327,15 @@ msgstr ""
"একটি স্বয়ং-গৃহীত ফাইল স্থানান্তর সম্পূর্ণ হলে পপ-আপ দ্বারা অবগত করুন\n"
"(শুধুমাত্র যখন প্রেরকের সঙ্গে কোনো কথোপকথন হয় না)"
-#: ../libpurple/plugins/autoaccept.c:265
msgid "Create a new directory for each user"
msgstr "প্রত্যেক ব্যবহারকারীর জন্য একটি নির্দেশিকা তৈরী করুন"
-#: ../libpurple/plugins/buddynote.c:46 ../libpurple/protocols/msn/msn.c:2094
-#: ../libpurple/protocols/msn/msn.c:2124
-#: ../libpurple/protocols/msnp9/msn.c:1800
-#: ../libpurple/protocols/msnp9/msn.c:1830
msgid "Notes"
msgstr "নোট"
-#: ../libpurple/plugins/buddynote.c:47
msgid "Enter your notes below..."
msgstr "আপনার নোটগুলো নীচে প্রবেশ করান..."
-#: ../libpurple/plugins/buddynote.c:65
msgid "Edit Notes..."
msgstr "নোট সম্পাদন করুন..."
@@ -3340,20 +2347,17 @@ msgstr "নোট সম্পাদন করুন..."
#. *< dependencies
#. *< priority
#. *< id
-#: ../libpurple/plugins/buddynote.c:90 ../pidgin/plugins/gtkbuddynote.c:74
msgid "Buddy Notes"
msgstr "বন্ধু নোট"
# tithi
#. *< name
#. *< version
-#: ../libpurple/plugins/buddynote.c:92 ../pidgin/plugins/gtkbuddynote.c:76
msgid "Store notes on particular buddies."
msgstr "নির্দিষ্ট বন্ধুদের কাছে নোট সলরক্ষণ করুন"
# tithi
#. *< summary
-#: ../libpurple/plugins/buddynote.c:93 ../pidgin/plugins/gtkbuddynote.c:77
msgid "Adds the option to store notes for buddies on your buddy list."
msgstr "আপনার বন্ধু তালিকায় বন্ধুদের জন্য নোট সংরক্ষণ করতে পছন্দ যোগ করে।"
@@ -3363,7 +2367,6 @@ msgstr "আপনার বন্ধু তালিকায় বন্ধুদ
#. *< dependencies
#. *< priority
#. *< id
-#: ../libpurple/plugins/ciphertest.c:264
msgid "Cipher Test"
msgstr "সাইফার পরীক্ষা"
@@ -3372,7 +2375,6 @@ msgstr "সাইফার পরীক্ষা"
#. *< version
#. * summary
#. * description
-#: ../libpurple/plugins/ciphertest.c:267 ../libpurple/plugins/ciphertest.c:269
msgid "Tests the ciphers that ship with libpurple."
msgstr "লিবপার্পল সহ সিপ করে এমন সাইফারগুলো পরীক্ষা করে।"
@@ -3382,7 +2384,6 @@ msgstr "লিবপার্পল সহ সিপ করে এমন সা
#. *< dependencies
#. *< priority
#. *< id
-#: ../libpurple/plugins/dbus-example.c:155
msgid "DBus Example"
msgstr "DBus উদাহরণ"
@@ -3390,8 +2391,6 @@ msgstr "DBus উদাহরণ"
#. *< version
#. * summary
#. * description
-#: ../libpurple/plugins/dbus-example.c:158
-#: ../libpurple/plugins/dbus-example.c:160
msgid "DBus Plugin Example"
msgstr "DBus প্লাগইন এর উদাহরণ"
@@ -3401,7 +2400,6 @@ msgstr "DBus প্লাগইন এর উদাহরণ"
#. *< dependencies
#. *< priority
#. *< id
-#: ../libpurple/plugins/filectl.c:248
msgid "File Control"
msgstr "ফাইল নিয়ন্ত্রণ করুন"
@@ -3409,50 +2407,38 @@ msgstr "ফাইল নিয়ন্ত্রণ করুন"
#. *< version
#. * summary
#. * description
-#: ../libpurple/plugins/filectl.c:251 ../libpurple/plugins/filectl.c:253
msgid "Allows control by entering commands in a file."
msgstr "ফাইলে নির্দেশসমূহ প্রবেশ করার মাধ্যমে নিয়ন্ত্রণ অনুমোদন করুন।"
-#: ../libpurple/plugins/idle.c:158 ../libpurple/plugins/idle.c:218
msgid "Minutes"
msgstr "মিনিট"
#. This is a cultural reference. Dy'er Mak'er is a song by Led Zeppelin.
#. If that doesn't translate well into your language, drop the 's before translating.
-#: ../libpurple/plugins/idle.c:165 ../libpurple/plugins/idle.c:199
-#: ../libpurple/plugins/idle.c:225 ../libpurple/plugins/idle.c:318
msgid "I'dle Mak'er"
msgstr "অ'লস তৈরীকার'ক"
-#: ../libpurple/plugins/idle.c:166 ../libpurple/plugins/idle.c:258
msgid "Set Account Idle Time"
msgstr "একাউন্টের অলস সময় নির্ধারণ করুন"
-#: ../libpurple/plugins/idle.c:169 ../libpurple/plugins/idle.c:229
msgid "_Set"
msgstr "নির্ধারণ (_S)"
-#: ../libpurple/plugins/idle.c:184
msgid "None of your accounts are idle."
msgstr "আপনার কোনো একাউন্ট অলস নেই।"
-#: ../libpurple/plugins/idle.c:200 ../libpurple/plugins/idle.c:262
msgid "Unset Account Idle Time"
msgstr "একাউন্টের অলস সময় অপসারণ করুন"
-#: ../libpurple/plugins/idle.c:203
msgid "_Unset"
msgstr "অনির্ধারণ করুন (_U)"
-#: ../libpurple/plugins/idle.c:226 ../libpurple/plugins/idle.c:266
msgid "Set Idle Time for All Accounts"
msgstr "সব একাউন্টের জন্য অলস সময় নির্ধারণ করুন"
-#: ../libpurple/plugins/idle.c:271
msgid "Unset Idle Time for All Idled Accounts"
msgstr "সব অলস একাউন্টের জন্য অলস সময় অপসারণ করুন"
-#: ../libpurple/plugins/idle.c:320 ../libpurple/plugins/idle.c:321
msgid "Allows you to hand-configure how long you've been idle"
msgstr "আপনি কতক্ষণ অলস থাকবেন তা আপনাকে নিজ হাতে-বিন্যাস করতে অনুমোদন করে"
@@ -3462,19 +2448,16 @@ msgstr "আপনি কতক্ষণ অলস থাকবেন তা আ
#. *< dependencies
#. *< priority
#. *< id
-#: ../libpurple/plugins/ipc-test-client.c:87
msgid "IPC Test Client"
msgstr "IPC পরীক্ষণ ক্লায়েন্ট"
#. *< name
#. *< version
#. * summary
-#: ../libpurple/plugins/ipc-test-client.c:90
msgid "Test plugin IPC support, as a client."
msgstr "ক্লায়েন্ট হিসেবে, প্লাগইনের IPC সমর্থন পরীক্ষা করুন।"
#. * description
-#: ../libpurple/plugins/ipc-test-client.c:92
msgid ""
"Test plugin IPC support, as a client. This locates the server plugin and "
"calls the commands registered."
@@ -3488,39 +2471,32 @@ msgstr ""
#. *< dependencies
#. *< priority
#. *< id
-#: ../libpurple/plugins/ipc-test-server.c:74
msgid "IPC Test Server"
msgstr "IPC পরীক্ষণ সার্ভার"
#. *< name
#. *< version
#. * summary
-#: ../libpurple/plugins/ipc-test-server.c:77
msgid "Test plugin IPC support, as a server."
msgstr "সার্ভার হিসেবে, প্লাগইনের IPC সমর্থন পরীক্ষা করুন।"
#. * description
-#: ../libpurple/plugins/ipc-test-server.c:79
msgid "Test plugin IPC support, as a server. This registers the IPC commands."
msgstr ""
"সার্ভার হিসেবে, প্লাগইনের IPC সমর্থন পরীক্ষা করুন। এটি IPC নির্দেশগুলো নিবন্ধন করে।"
-#: ../libpurple/plugins/joinpart.c:232
msgid "Join/Part Hiding Configuration"
msgstr "লুকানো বিন্যাসকরণ যুক্ত/বিভক্ত করুন"
# tithi
-#: ../libpurple/plugins/joinpart.c:236
msgid "Minimum Room Size"
msgstr "নূন্যতম কক্ষের আকার"
# tithi
-#: ../libpurple/plugins/joinpart.c:241
msgid "User Inactivity Timeout (in minutes)"
msgstr "ব্যবহারকারীর নিষ্ক্রয়তার সময়সীমা উত্তীর্ণ (মিনিটে)"
# tithi
-#: ../libpurple/plugins/joinpart.c:246
msgid "Apply hiding rules to buddies"
msgstr "বন্ধুদের উপর লুকানোর নিয়ম প্রয়োগ করুন"
@@ -3531,7 +2507,6 @@ msgstr "বন্ধুদের উপর লুকানোর নিয়ম
#. *< dependencies
#. *< priority
#. *< id
-#: ../libpurple/plugins/joinpart.c:276
msgid "Join/Part Hiding"
msgstr "যুক্ত/বিভক্ত গোপনকরণ"
@@ -3539,13 +2514,11 @@ msgstr "যুক্ত/বিভক্ত গোপনকরণ"
#. *< name
#. *< version
#. * summary
-#: ../libpurple/plugins/joinpart.c:279
msgid "Hides extraneous join/part messages."
msgstr "অসংশ্লিষ্ট যুক্ত/বিভক্ত বার্তাগুলো গোপন করে।"
# tithi
#. * description
-#: ../libpurple/plugins/joinpart.c:281
msgid ""
"This plugin hides join/part messages in large rooms, except for those users "
"actively taking part in a conversation."
@@ -3557,69 +2530,52 @@ msgstr ""
#. * offset is way off. The user should never really see it, but
#. * it's here just in case. The parens are to make it clear it's
#. * not a real timezone.
-#: ../libpurple/plugins/log_reader.c:499
msgid "(UTC)"
msgstr "(UTC)"
-#: ../libpurple/plugins/log_reader.c:1558
msgid "User is offline."
msgstr "ব্যবহারকারী অফলাইনে।"
-#: ../libpurple/plugins/log_reader.c:1564
msgid "Auto-response sent:"
msgstr "স্বয়ং-জবাব পাঠানো হয়েছে:"
-#: ../libpurple/plugins/log_reader.c:1579
-#: ../libpurple/plugins/log_reader.c:1582
-#: ../libpurple/plugins/statenotify.c:93
#, c-format
msgid "%s has signed off."
msgstr "%s অফলাইনে।"
-#: ../libpurple/plugins/log_reader.c:1603
msgid "One or more messages may have been undeliverable."
msgstr "এক বা একাধিক বার্তা পাঠানো যাচ্ছে না।"
-#: ../libpurple/plugins/log_reader.c:1613
msgid "You were disconnected from the server."
msgstr "আপনি সার্ভার থেকে বিচ্ছিন্ন ছিলেন।"
-#: ../libpurple/plugins/log_reader.c:1621
msgid ""
"You are currently disconnected. Messages will not be received unless you are "
"logged in."
msgstr ""
"আপনি বর্তমানে বিচ্ছিন্ন। আপনি লগ ইন না করা পর্যন্ত বার্তাসমূহ গ্রহণ করা হবে না।"
-#: ../libpurple/plugins/log_reader.c:1636
msgid "Message could not be sent because the maximum length was exceeded."
msgstr "সর্বোচ্চ সীমা অতিক্রান্ত হওয়ায় বার্তা পাঠানো যাচ্ছে না।"
-#: ../libpurple/plugins/log_reader.c:1641
msgid "Message could not be sent."
msgstr "বার্তা পাঠানো সম্ভব হয়নি।"
#. The names of IM clients are marked for translation at the request of
#. translators who wanted to transliterate them. Many translators
#. choose to leave them alone. Choose what's best for your language.
-#: ../libpurple/plugins/log_reader.c:2723
-#: ../libpurple/plugins/log_reader.c:2879
msgid "Adium"
msgstr "অডিয়াম"
#. The names of IM clients are marked for translation at the request of
#. translators who wanted to transliterate them. Many translators
#. choose to leave them alone. Choose what's best for your language.
-#: ../libpurple/plugins/log_reader.c:2736
-#: ../libpurple/plugins/log_reader.c:2884
msgid "Fire"
msgstr "আগুন"
#. The names of IM clients are marked for translation at the request of
#. translators who wanted to transliterate them. Many translators
#. choose to leave them alone. Choose what's best for your language.
-#: ../libpurple/plugins/log_reader.c:2748
-#: ../libpurple/plugins/log_reader.c:2888
msgid "Messenger Plus!"
msgstr "বার্তাবাহক প্লাস!"
@@ -3627,24 +2583,18 @@ msgstr "বার্তাবাহক প্লাস!"
#. The names of IM clients are marked for translation at the request of
#. translators who wanted to transliterate them. Many translators
#. choose to leave them alone. Choose what's best for your language.
-#: ../libpurple/plugins/log_reader.c:2762
-#: ../libpurple/plugins/log_reader.c:2893
msgid "QIP"
msgstr "QIP"
#. The names of IM clients are marked for translation at the request of
#. translators who wanted to transliterate them. Many translators
#. choose to leave them alone. Choose what's best for your language.
-#: ../libpurple/plugins/log_reader.c:2774
-#: ../libpurple/plugins/log_reader.c:2897
msgid "MSN Messenger"
msgstr "এমএসএন বার্তাবাহক"
#. The names of IM clients are marked for translation at the request of
#. translators who wanted to transliterate them. Many translators
#. choose to leave them alone. Choose what's best for your language.
-#: ../libpurple/plugins/log_reader.c:2786
-#: ../libpurple/plugins/log_reader.c:2901
msgid "Trillian"
msgstr "ট্রিলিয়ান"
@@ -3652,27 +2602,21 @@ msgstr "ট্রিলিয়ান"
#. The names of IM clients are marked for translation at the request of
#. translators who wanted to transliterate them. Many translators
#. choose to leave them alone. Choose what's best for your language.
-#: ../libpurple/plugins/log_reader.c:2798
-#: ../libpurple/plugins/log_reader.c:2905
msgid "aMSN"
msgstr "aMSN"
#. Add general preferences.
-#: ../libpurple/plugins/log_reader.c:2861
msgid "General Log Reading Configuration"
msgstr "সাধারণ লগ পড়ার বিন্যাসন"
-#: ../libpurple/plugins/log_reader.c:2865
msgid "Fast size calculations"
msgstr "দ্রুত আকার গণনাসমূহ"
# fix me- tithi
-#: ../libpurple/plugins/log_reader.c:2869
msgid "Use name heuristics"
msgstr "নাম হিউরিস্টিক ব্যবহার করুন"
#. Add Log Directory preferences.
-#: ../libpurple/plugins/log_reader.c:2875
msgid "Log Directory"
msgstr "লগ নির্দেশিকা"
@@ -3682,19 +2626,16 @@ msgstr "লগ নির্দেশিকা"
#. *< dependencies
#. *< priority
#. *< id
-#: ../libpurple/plugins/log_reader.c:2934
msgid "Log Reader"
msgstr "লগ পাঠক"
#. *< name
#. *< version
#. * summary
-#: ../libpurple/plugins/log_reader.c:2938
msgid "Includes other IM clients' logs in the log viewer."
msgstr "লগ প্রদর্শকে অন্যান্য আইএম ক্লায়েন্টদের লগসমূহ অন্তর্ভুক্ত করে।"
#. * description
-#: ../libpurple/plugins/log_reader.c:2942
msgid ""
"When viewing logs, this plugin will include logs from other IM clients. "
"Currently, this includes Adium, MSN Messenger, and Trillian.\n"
@@ -3708,22 +2649,17 @@ msgstr ""
"সতর্কতা: এই প্লাগইনটি এখনও আলফা কোড এবং প্রায়সই নষ্ট হতে পারে। আপনার নিজ "
"দ্বায়িত্বে ব্যবহার করুন!"
-#: ../libpurple/plugins/mono/loader/mono.c:217
msgid "Mono Plugin Loader"
msgstr "মোনো প্লাগইন লোডকারী"
# sam: mono?
-#: ../libpurple/plugins/mono/loader/mono.c:219
-#: ../libpurple/plugins/mono/loader/mono.c:220
msgid "Loads .NET plugins with Mono."
msgstr "মোনো এর সাথে .NET প্লাগইন লোড করে"
# tithi
-#: ../libpurple/plugins/newline.c:57
msgid "Add new line in IMs"
msgstr "আইএম এ নতুন লাইন যোগ করুন"
-#: ../libpurple/plugins/newline.c:61
msgid "Add new line in Chats"
msgstr "আড্ডায় নতুন লাইন যোগ করুন"
@@ -3736,19 +2672,16 @@ msgstr "আড্ডায় নতুন লাইন যোগ করুন"
#. *< dependencies
#. *< priority
#. *< id
-#: ../libpurple/plugins/newline.c:104
msgid "New Line"
msgstr "নতুন লাইন"
#. *< name
#. *< version
-#: ../libpurple/plugins/newline.c:106
msgid "Prepends a newline to displayed message."
msgstr "প্রদর্শিত বার্তায় নতুন-লাইন যোগ করে।"
# tithi
#. *< summary
-#: ../libpurple/plugins/newline.c:107
msgid ""
"Prepends a newline to messages so that the rest of the message appears below "
"the username in the conversation window."
@@ -3757,17 +2690,14 @@ msgstr ""
"অবশিষ্ট বার্তাসমূহ উপস্থিত হয়।"
# tithi
-#: ../libpurple/plugins/offlinemsg.c:23
msgid "Offline Message Emulation"
msgstr "অফলাইন বার্তা অনুকরন করুন"
# tithi
-#: ../libpurple/plugins/offlinemsg.c:25 ../libpurple/plugins/offlinemsg.c:26
msgid "Save messages sent to an offline user as pounce."
msgstr "অফলাইন ব্যবহারকারীকে পাঠানো বার্তা পাউন্স হিসেবে সংরক্ষণ করুন।"
# tithi
-#: ../libpurple/plugins/offlinemsg.c:95
msgid ""
"The rest of the messages will be saved as pounce. You can edit/delete the "
"pounce from the `Buddy Pounce' dialog."
@@ -3775,7 +2705,6 @@ msgstr ""
"অবশিষ্ট বার্তাগুলো পাউন্স হিসেবে সংরক্ষিত হবে। আপনি 'বন্ধু পাউন্স' সংলাপ হতে পাউন্স "
"সম্পাদনা/মুছে ফেলতে পারেন।"
-#: ../libpurple/plugins/offlinemsg.c:156
#, c-format
msgid ""
"\"%s\" is currently offline. Do you want to save the rest of the messages in "
@@ -3784,52 +2713,24 @@ msgstr ""
"\"%s\" বর্তমানে অফলাইনে আছেন। আপনি কি অবশিষ্ট বার্তাগুলো পাউন্সে সংরক্ষণ করতে চান "
"এবং \"%s\" যখন পুনরায় লগইন করে তখন তাদেরকে স্বয়ংক্রিয় ভাবে পাঠাতে চান?"
-#: ../libpurple/plugins/offlinemsg.c:160
msgid "Offline Message"
msgstr "অফলাইন বার্তা"
# tithi
-#: ../libpurple/plugins/offlinemsg.c:161
msgid "You can edit/delete the pounce from the `Buddy Pounces' dialog"
msgstr "আপনি 'বন্ধু পাউন্স' সংলাপ হতে পাউন্স সম্পাদনা/মুছে ফেলতে পারেন।"
-#: ../libpurple/plugins/offlinemsg.c:165
-#: ../libpurple/protocols/msn/dialog.c:141
-#: ../libpurple/protocols/msn/msn.c:796 ../libpurple/protocols/msn/msn.c:799
-#: ../libpurple/protocols/msnp9/dialog.c:133
-#: ../libpurple/protocols/msnp9/msn.c:566
-#: ../libpurple/protocols/msnp9/msn.c:582
-#: ../libpurple/protocols/novell/novell.c:1929
-#: ../libpurple/protocols/silc/buddy.c:317
-#: ../libpurple/protocols/silc/pk.c:113 ../libpurple/protocols/silc/wb.c:308
-#: ../libpurple/protocols/silc10/buddy.c:314
-#: ../libpurple/protocols/silc10/pk.c:119
-#: ../libpurple/protocols/silc10/wb.c:307 ../pidgin/gtkrequest.c:270
msgid "Yes"
msgstr "হ্যাঁ"
-#: ../libpurple/plugins/offlinemsg.c:166
-#: ../libpurple/protocols/msn/dialog.c:142
-#: ../libpurple/protocols/msn/msn.c:796 ../libpurple/protocols/msn/msn.c:799
-#: ../libpurple/protocols/msnp9/dialog.c:134
-#: ../libpurple/protocols/msnp9/msn.c:566
-#: ../libpurple/protocols/msnp9/msn.c:582
-#: ../libpurple/protocols/novell/novell.c:1930
-#: ../libpurple/protocols/silc/buddy.c:318
-#: ../libpurple/protocols/silc/pk.c:114 ../libpurple/protocols/silc/wb.c:309
-#: ../libpurple/protocols/silc10/buddy.c:315
-#: ../libpurple/protocols/silc10/pk.c:120
-#: ../libpurple/protocols/silc10/wb.c:308 ../pidgin/gtkrequest.c:271
msgid "No"
msgstr "না"
# tithi
-#: ../libpurple/plugins/offlinemsg.c:193
msgid "Save offline messages in pounce"
msgstr "অফলাইন বার্তা পাউন্সে সংরক্ষণ করুন"
# tithi
-#: ../libpurple/plugins/offlinemsg.c:197
msgid "Do not ask. Always save in pounce."
msgstr "জিজ্ঞাসা করবেন না। সবসময় পাউন্সে সংরক্ষণ করুন।"
@@ -3839,28 +2740,23 @@ msgstr "জিজ্ঞাসা করবেন না। সবসময়
#. *< dependencies
#. *< priority
#. *< id
-#: ../libpurple/plugins/perl/perl.c:656
msgid "Perl Plugin Loader"
msgstr "পার্ল প্লাগইন লোডকারী"
#. *< name
#. *< version
#. *< summary
-#: ../libpurple/plugins/perl/perl.c:658 ../libpurple/plugins/perl/perl.c:659
msgid "Provides support for loading perl plugins."
msgstr "পার্ল প্লাগইন লোড করার জন্য সমর্থন করে।"
# tithi
-#: ../libpurple/plugins/psychic.c:20
msgid "Psychic Mode"
msgstr "সাইকিক পরিমন্ডল"
# fix me tithi
-#: ../libpurple/plugins/psychic.c:21
msgid "Psychic mode for incoming conversation"
msgstr "আগত কথোপকথোনের জন্য সাইকিক পরিমন্ডল"
-#: ../libpurple/plugins/psychic.c:22
msgid ""
"Causes conversation windows to appear as other users begin to message you. "
"This works for AIM, ICQ, XMPP, Sametime, and Yahoo!"
@@ -3869,24 +2765,19 @@ msgstr ""
"হয়। এটি AIM, ICQ, XMPP, Sametime, এবং Yahoo এর জন্য কাজ করে!"
# tithi
-#: ../libpurple/plugins/psychic.c:72
msgid "You feel a disturbance in the force..."
msgstr "আপনি গতিতে একটি অসুবিধা অনুভব করছেন..."
-#: ../libpurple/plugins/psychic.c:91
msgid "Only enable for users on the buddy list"
msgstr "শুধুমাত্র বন্ধু তালিকার ব্যবহারকারীর জন্য সক্রিয় করুন"
-#: ../libpurple/plugins/psychic.c:96
msgid "Disable when away"
msgstr "দূরে থাকার সময় নিষ্ক্রিয় করুন"
# tithi
-#: ../libpurple/plugins/psychic.c:100
msgid "Display notification message in conversations"
msgstr "কথোপকথনে বিজ্ঞপ্তি বার্তা প্রদর্শন করুন"
-#: ../libpurple/plugins/psychic.c:105
msgid "Raise psychic conversations"
msgstr "সাইকিক কথাবার্তা হচ্ছে"
@@ -3896,7 +2787,6 @@ msgstr "সাইকিক কথাবার্তা হচ্ছে"
#. *< dependencies
#. *< priority
#. *< id
-#: ../libpurple/plugins/signals-test.c:778
msgid "Signals Test"
msgstr "সংকেতসমূহের পরীক্ষা"
@@ -3904,8 +2794,6 @@ msgstr "সংকেতসমূহের পরীক্ষা"
#. *< version
#. * summary
#. * description
-#: ../libpurple/plugins/signals-test.c:781
-#: ../libpurple/plugins/signals-test.c:783
msgid "Test to see that all signals are working properly."
msgstr "সকল সংকেত সঠিকভাবে কাজ করছে কিনা তা দেখতে পরীক্ষা করুন।"
@@ -3915,7 +2803,6 @@ msgstr "সকল সংকেত সঠিকভাবে কাজ করছ
#. *< dependencies
#. *< priority
#. *< id
-#: ../libpurple/plugins/simple.c:37
msgid "Simple Plugin"
msgstr "সহজ প্লাগইন"
@@ -3923,14 +2810,11 @@ msgstr "সহজ প্লাগইন"
#. *< version
#. * summary
#. * description
-#: ../libpurple/plugins/simple.c:40 ../libpurple/plugins/simple.c:42
msgid "Tests to see that most things are working."
msgstr "অধিকাংশ জিনিস সঠিকভাবে কাজ করছে কিনা তা দেখতে পরীক্ষা করুন।"
# tithi
#. Scheme name
-#: ../libpurple/plugins/ssl/ssl-gnutls.c:908
-#: ../libpurple/plugins/ssl/ssl-nss.c:857
msgid "X.509 Certificates"
msgstr "X.৫০৯ প্রত্যয়ন পত্র"
@@ -3940,7 +2824,6 @@ msgstr "X.৫০৯ প্রত্যয়ন পত্র"
#. *< dependencies
#. *< priority
#. *< id
-#: ../libpurple/plugins/ssl/ssl-gnutls.c:984
msgid "GNUTLS"
msgstr "GNUTLS"
@@ -3948,8 +2831,6 @@ msgstr "GNUTLS"
#. *< version
#. * summary
#. * description
-#: ../libpurple/plugins/ssl/ssl-gnutls.c:987
-#: ../libpurple/plugins/ssl/ssl-gnutls.c:989
msgid "Provides SSL support through GNUTLS."
msgstr "GNUTLS এর মাধ্যমে এসএসএল সমর্থন প্রদান করে।"
@@ -3959,7 +2840,6 @@ msgstr "GNUTLS এর মাধ্যমে এসএসএল সমর্থ
#. *< dependencies
#. *< priority
#. *< id
-#: ../libpurple/plugins/ssl/ssl-nss.c:934
msgid "NSS"
msgstr "NSS"
@@ -3967,8 +2847,6 @@ msgstr "NSS"
#. *< version
#. * summary
#. * description
-#: ../libpurple/plugins/ssl/ssl-nss.c:937
-#: ../libpurple/plugins/ssl/ssl-nss.c:939
msgid "Provides SSL support through Mozilla NSS."
msgstr "মজিলা NSS এর মাধ্যমে SSL সমর্থন প্রদান করে।"
@@ -3978,7 +2856,6 @@ msgstr "মজিলা NSS এর মাধ্যমে SSL সমর্থন
#. *< dependencies
#. *< priority
#. *< id
-#: ../libpurple/plugins/ssl/ssl.c:94
msgid "SSL"
msgstr "SSL"
@@ -3986,48 +2863,38 @@ msgstr "SSL"
#. *< version
#. * summary
#. * description
-#: ../libpurple/plugins/ssl/ssl.c:97 ../libpurple/plugins/ssl/ssl.c:99
msgid "Provides a wrapper around SSL support libraries."
msgstr "এসএসএল সমর্থন লাইব্রেরিসমূহের চারদিকে মোড়ক প্রদান করে।"
-#: ../libpurple/plugins/statenotify.c:63
#, c-format
msgid "%s is no longer away."
msgstr "%s আর দূরে থাকবে না।"
-#: ../libpurple/plugins/statenotify.c:65
#, c-format
msgid "%s has gone away."
msgstr "%s দূরে চলে গেছে।"
-#: ../libpurple/plugins/statenotify.c:75
#, c-format
msgid "%s has become idle."
msgstr "%s এখন অলস।"
-#: ../libpurple/plugins/statenotify.c:77
#, c-format
msgid "%s is no longer idle."
msgstr "%s আর অলস থাকবে না।"
-#: ../libpurple/plugins/statenotify.c:86
#, c-format
msgid "%s has signed on."
msgstr "%s এখন অনলাইন।"
-#: ../libpurple/plugins/statenotify.c:104
msgid "Notify When"
msgstr "জানাবে যখন"
-#: ../libpurple/plugins/statenotify.c:107
msgid "Buddy Goes _Away"
msgstr "বন্ধু অনুপস্থিত (_A)"
-#: ../libpurple/plugins/statenotify.c:110
msgid "Buddy Goes _Idle"
msgstr "বন্ধু অলস (_I)"
-#: ../libpurple/plugins/statenotify.c:113
msgid "Buddy _Signs On/Off"
msgstr "বন্ধু সাইন অন/অফ (_S)"
@@ -4037,7 +2904,6 @@ msgstr "বন্ধু সাইন অন/অফ (_S)"
#. *< dependencies
#. *< priority
#. *< id
-#: ../libpurple/plugins/statenotify.c:161
msgid "Buddy State Notification"
msgstr "বন্ধুর অবস্থার প্রজ্ঞাপন"
@@ -4045,8 +2911,6 @@ msgstr "বন্ধুর অবস্থার প্রজ্ঞাপন"
#. *< version
#. * summary
#. * description
-#: ../libpurple/plugins/statenotify.c:164
-#: ../libpurple/plugins/statenotify.c:167
msgid ""
"Notifies in a conversation window when a buddy goes or returns from away or "
"idle."
@@ -4054,16 +2918,13 @@ msgstr ""
"যখন বন্ধু অনুপস্থিত বা অলস থাকে বা এইসব থেকে ফিরে আসে তখন কথোপকথন উইন্ডোতে "
"প্রজ্ঞাপন পাঠায়।"
-#: ../libpurple/plugins/tcl/tcl.c:423
msgid "Tcl Plugin Loader"
msgstr "টিসিএল প্লাগইন লোডকারী"
-#: ../libpurple/plugins/tcl/tcl.c:425 ../libpurple/plugins/tcl/tcl.c:426
msgid "Provides support for loading Tcl plugins"
msgstr "টিসিএল প্লাগইন লোড করার জন্য সমর্থন প্রদান করে"
# tithi
-#: ../libpurple/plugins/tcl/tcl.c:509
msgid ""
"Unable to detect ActiveTCL installation. If you wish to use TCL plugins, "
"install ActiveTCL from http://www.activestate.com\n"
@@ -4072,7 +2933,6 @@ msgstr ""
"http://www.activestate.com থেকে সক্রিয় TCL সংস্থাপন করুন\n"
# tithi
-#: ../libpurple/protocols/bonjour/bonjour.c:93
msgid ""
"The Apple Bonjour For Windows toolkit wasn't found, see the FAQ at: http://d."
"pidgin.im/BonjourWindows for more information."
@@ -4080,58 +2940,25 @@ msgstr ""
"উইন্ডোজ টুলকিটের জন্য অ্যাপল বোনজুর খুঁজে পাওয়া যায়নি, আরও তথ্যের জন্য http://d."
"pidgin.im/BonjourWindows এর FAQ দেখুন।"
-#: ../libpurple/protocols/bonjour/bonjour.c:112
msgid "Unable to listen for incoming IM connections\n"
msgstr "আগত আইএম সংযোগসূমহের জন্য শুনতে অক্ষম\n"
-#: ../libpurple/protocols/bonjour/bonjour.c:139
msgid ""
"Unable to establish connection with the local mDNS server. Is it running?"
msgstr "স্থানীয় এমডিএনএস সার্ভারের সাথে সংযোগ স্থাপনে ব্যর্থ। এটা কি চলছে?"
-#. Creating the options for the protocol
-#: ../libpurple/protocols/bonjour/bonjour.c:381
-#: ../libpurple/protocols/bonjour/bonjour.c:709
-#: ../libpurple/protocols/gg/gg.c:579
-#: ../libpurple/protocols/jabber/jabber.c:1087
msgid "First name"
msgstr "প্রথম নাম"
-#: ../libpurple/protocols/bonjour/bonjour.c:383
-#: ../libpurple/protocols/bonjour/bonjour.c:712
-#: ../libpurple/protocols/gg/gg.c:574
-#: ../libpurple/protocols/jabber/jabber.c:1091
msgid "Last name"
msgstr "শেষ নাম"
-#: ../libpurple/protocols/bonjour/bonjour.c:387
-#: ../libpurple/protocols/bonjour/bonjour.c:715
-#: ../libpurple/protocols/gg/gg.c:441
-#: ../libpurple/protocols/jabber/buddy.c:323
-#: ../libpurple/protocols/jabber/buddy.c:1339
-#: ../libpurple/protocols/jabber/buddy.c:1352
-#: ../libpurple/protocols/jabber/buddy.c:2245
-#: ../libpurple/protocols/jabber/jabber.c:1079
-#: ../libpurple/protocols/qq/buddy_info.c:121
-#: ../libpurple/protocols/silc/ops.c:1055
-#: ../libpurple/protocols/silc/silc.c:1005
-#: ../libpurple/protocols/silc/silc.c:1246
-#: ../libpurple/protocols/silc/util.c:561
-#: ../libpurple/protocols/silc10/ops.c:1075
-#: ../libpurple/protocols/silc10/silc.c:706
-#: ../libpurple/protocols/silc10/silc.c:947
-#: ../libpurple/protocols/silc10/util.c:555
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
msgid "Email"
msgstr "ই-মেইল"
-#: ../libpurple/protocols/bonjour/bonjour.c:390
-#: ../libpurple/protocols/bonjour/bonjour.c:718
msgid "AIM Account"
msgstr "এআইএম একাউন্ট"
-#: ../libpurple/protocols/bonjour/bonjour.c:393
-#: ../libpurple/protocols/bonjour/bonjour.c:721
msgid "XMPP Account"
msgstr "XMPP একাউন্ট"
@@ -4145,389 +2972,256 @@ msgstr "XMPP একাউন্ট"
#. *< version
#. * summary
#. * description
-#: ../libpurple/protocols/bonjour/bonjour.c:526
-#: ../libpurple/protocols/bonjour/bonjour.c:528
msgid "Bonjour Protocol Plugin"
msgstr "Bonjour প্রটোকল প্লাগইন"
-#: ../libpurple/protocols/bonjour/bonjour.c:668
msgid "Purple Person"
msgstr "পার্পেল ব্যক্তি"
-#: ../libpurple/protocols/bonjour/bonjour.h:33
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "এলাকা"
+
msgid "Bonjour"
msgstr "Bonjour"
-#: ../libpurple/protocols/bonjour/jabber.c:386
#, c-format
msgid "%s has closed the conversation."
msgstr "%s কথোপকথন বন্ধ করে দিয়েছে।"
-#: ../libpurple/protocols/bonjour/jabber.c:478
-#: ../libpurple/protocols/bonjour/jabber.c:543
-#: ../libpurple/protocols/bonjour/jabber.c:588
-#: ../libpurple/protocols/bonjour/jabber.c:759
-#: ../libpurple/protocols/bonjour/jabber.c:777
msgid "Unable to send the message, the conversation couldn't be started."
msgstr "বার্তা পাঠাতে অক্ষম, কথোপকথন শুরু হতে পারে নি।"
-#: ../libpurple/protocols/bonjour/jabber.c:684
msgid "Cannot open socket"
msgstr "সকেট খোলা যাচ্ছে না"
-#: ../libpurple/protocols/bonjour/jabber.c:712
msgid "Could not bind socket to port"
msgstr "পোর্টের সাথে সকেটকে সংযুক্ত করা যায়নি"
-#: ../libpurple/protocols/bonjour/jabber.c:722
msgid "Could not listen on socket"
msgstr "সকেট এ শোনা যাচ্ছে না"
# tithi
-#: ../libpurple/protocols/bonjour/mdns_win32.c:110
msgid "Error communicating with local mDNSResponder."
msgstr "স্থানীয় mDNSResponder এর সঙ্গে যোগাযোগে ত্রুটি।"
-#: ../libpurple/protocols/gg/gg.c:75 ../libpurple/proxy.c:2139
msgid "Invalid proxy settings"
msgstr "অবৈধ প্রক্সি বিন্যাসনসমূহ"
-#: ../libpurple/protocols/gg/gg.c:76 ../libpurple/proxy.c:2139
msgid ""
"Either the host name or port number specified for your given proxy type is "
"invalid."
msgstr "আপনার প্রদত্ত প্রক্সির ধরনের জন্য উল্লেখিত হোস্ট নাম বা পোর্ট নম্বর অবৈধ।"
-#: ../libpurple/protocols/gg/gg.c:110 ../libpurple/protocols/gg/gg.c:132
-#: ../libpurple/protocols/gg/gg.c:171
msgid "Token Error"
msgstr "টোকেন ত্রুটি"
-#: ../libpurple/protocols/gg/gg.c:111 ../libpurple/protocols/gg/gg.c:133
-#: ../libpurple/protocols/gg/gg.c:172
msgid "Unable to fetch the token.\n"
msgstr "টোকেন আনতে অক্ষম।\n"
-#: ../libpurple/protocols/gg/gg.c:249 ../libpurple/protocols/gg/gg.c:256
-#: ../libpurple/protocols/gg/gg.c:262
msgid "Save Buddylist..."
msgstr "বন্ধুর তালিকা সংরক্ষণ করুন..."
-#: ../libpurple/protocols/gg/gg.c:250
msgid "Your buddylist is empty, nothing was written to the file."
msgstr "আপনার বন্ধু তালিকাটি ফাঁকা, ফাইলে কিছুই লেখা ছিল না।"
-#: ../libpurple/protocols/gg/gg.c:257
msgid "Buddylist saved successfully!"
msgstr "বন্ধু তালিকা সফলভাবে সংরক্ষিত হয়েছে!"
-#: ../libpurple/protocols/gg/gg.c:260
#, c-format
msgid "Couldn't write buddy list for %s to %s"
msgstr "%1s এর জন্য %2s এ বন্ধুর তালিকা লিখতে পারেনি।"
-#: ../libpurple/protocols/gg/gg.c:281 ../libpurple/protocols/gg/gg.c:282
msgid "Couldn't load buddylist"
msgstr "বন্ধু-তালিকা লোড করা যায়নি।"
-#: ../libpurple/protocols/gg/gg.c:298
msgid "Load Buddylist..."
msgstr "বন্ধুর-তালিকা লোড করুন..."
-#: ../libpurple/protocols/gg/gg.c:299
msgid "Buddylist loaded successfully!"
msgstr "বন্ধু-তালিকা সফলভাবে লোড করা হয়েছে।"
-#: ../libpurple/protocols/gg/gg.c:310
msgid "Save buddylist..."
msgstr "বন্ধু-তালিকা সংরক্ষণ করুন..."
-#: ../libpurple/protocols/gg/gg.c:320 ../libpurple/protocols/gg/gg.c:2206
msgid "Load buddylist from file..."
msgstr "ফাইল থেকে বন্ধু-তালিকা লোড করুন..."
-#: ../libpurple/protocols/gg/gg.c:353
msgid "Fill in the registration fields."
msgstr "নিবন্ধন ক্ষেত্রে পূরণ করুন।"
-#: ../libpurple/protocols/gg/gg.c:360
msgid "Passwords do not match."
msgstr "গুপ্তসংকেত মিলে না।"
-#: ../libpurple/protocols/gg/gg.c:370
msgid "Unable to register new account. Error occurred.\n"
msgstr "নতুন একাউন্ট নিবন্ধন করতে ব্যর্থ। ত্রুটি দেখা দিয়েছে।\n"
-#: ../libpurple/protocols/gg/gg.c:383
msgid "New Gadu-Gadu Account Registered"
msgstr "নতুন গাদু-গাদু একাউন্ট নিবন্ধন করা হয়েছে"
-#: ../libpurple/protocols/gg/gg.c:384
msgid "Registration completed successfully!"
msgstr "নিবন্ধন সফলভাবে শেষ হয়েছে!"
-#: ../libpurple/protocols/gg/gg.c:446 ../libpurple/protocols/gg/gg.c:714
-#: ../libpurple/protocols/jabber/jabber.c:1062
-#: ../libpurple/protocols/jabber/jabber.c:1065
-#: ../libpurple/protocols/jabber/jabber.c:1957
msgid "Password"
msgstr "গুপ্তসংকেত"
-#: ../libpurple/protocols/gg/gg.c:451 ../libpurple/protocols/gg/gg.c:719
msgid "Password (retype)"
msgstr "গুপ্তসংকেত (পুনরায় টাইপ করুন)"
-#: ../libpurple/protocols/gg/gg.c:456 ../libpurple/protocols/gg/gg.c:724
msgid "Enter current token"
msgstr "বর্তমান টোকেন প্রবেশ করান"
-#: ../libpurple/protocols/gg/gg.c:462 ../libpurple/protocols/gg/gg.c:730
msgid "Current token"
msgstr "বর্তমান টোকেন"
-#: ../libpurple/protocols/gg/gg.c:466 ../libpurple/protocols/gg/gg.c:467
msgid "Register New Gadu-Gadu Account"
msgstr "নতুন গাদু-গাদু একাউন্ট নিবন্ধন করুন"
-#: ../libpurple/protocols/gg/gg.c:468
msgid "Please, fill in the following fields"
msgstr "অনুগ্রহ করে, নিচের ক্ষেত্রসমূহে পূরণ করুন"
-#: ../libpurple/protocols/gg/gg.c:589 ../libpurple/protocols/gg/gg.c:969
-#: ../libpurple/protocols/gg/gg.c:1037
-#: ../libpurple/protocols/jabber/jabber.c:1099
-#: ../libpurple/protocols/oscar/oscar.c:3979
-#: ../libpurple/protocols/oscar/oscar.c:3987
msgid "City"
msgstr "শহর"
-#: ../libpurple/protocols/gg/gg.c:594
msgid "Year of birth"
msgstr "জন্ম সন"
-#: ../libpurple/protocols/gg/gg.c:597 ../libpurple/protocols/msn/msn.c:2023
-#: ../libpurple/protocols/msnp9/msn.c:1729
-#: ../libpurple/protocols/myspace/user.c:130
-#: ../libpurple/protocols/oscar/oscar.c:3938
-#: ../libpurple/protocols/qq/buddy_info.c:119
-#: ../libpurple/protocols/qq/qq.c:314 ../libpurple/protocols/qq/qq.c:317
-#: ../libpurple/protocols/qq/qq.c:320 ../libpurple/protocols/qq/qq.c:324
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1091
msgid "Gender"
msgstr "লিঙ্গ"
-#: ../libpurple/protocols/gg/gg.c:598
msgid "Male or female"
msgstr "পুরুষ অথবা মহিলা"
-#: ../libpurple/protocols/gg/gg.c:599
-#: ../libpurple/protocols/oscar/oscar.c:3938
-#: ../libpurple/protocols/qq/buddy_info.c:67
-#: ../libpurple/protocols/qq/qq.c:314
msgid "Male"
msgstr "পুরুষ"
-#: ../libpurple/protocols/gg/gg.c:600
-#: ../libpurple/protocols/oscar/oscar.c:3938
-#: ../libpurple/protocols/qq/buddy_info.c:68
-#: ../libpurple/protocols/qq/qq.c:317
msgid "Female"
msgstr "মহিলা"
-#: ../libpurple/protocols/gg/gg.c:604
msgid "Only online"
msgstr "শুধুমাত্র অনলাইন"
-#: ../libpurple/protocols/gg/gg.c:608 ../libpurple/protocols/gg/gg.c:609
msgid "Find buddies"
msgstr "বন্ধু খোঁজ করুন"
-#: ../libpurple/protocols/gg/gg.c:610
msgid "Please, enter your search criteria below"
msgstr "অনুগ্রহ করে, আপনার অনুসন্ধান শর্তাবলী নীচে প্রবেশ করান"
-#: ../libpurple/protocols/gg/gg.c:644
msgid "Fill in the fields."
msgstr "ক্ষেত্রসমূহে পূরণ করুন।"
-#: ../libpurple/protocols/gg/gg.c:656
msgid "Your current password is different from the one that you specified."
msgstr "আপনার বর্তমান গুপ্তসংকেতটি আপনার উল্লেখিত একটি গুপ্তসংকেত থেকে পৃথক"
-#: ../libpurple/protocols/gg/gg.c:670
msgid "Unable to change password. Error occurred.\n"
msgstr "গুপ্তসংকেত পরিবর্তনে অক্ষম। ত্রুটি দেখা দিয়েছে।\n"
-#: ../libpurple/protocols/gg/gg.c:679
msgid "Change password for the Gadu-Gadu account"
msgstr "গাদু-গাদু একাউন্টের জন্য গুপ্তসংকেত পরিবর্তন করুন"
-#: ../libpurple/protocols/gg/gg.c:680
msgid "Password was changed successfully!"
msgstr "গুপ্তসংকেত সফলভাবে পরিবর্তিত হয়েছিল!"
-#: ../libpurple/protocols/gg/gg.c:709
msgid "Current password"
msgstr "বর্তমান গুপ্তসংকেত"
-#: ../libpurple/protocols/gg/gg.c:734
msgid "Please, enter your current password and your new password for UIN: "
msgstr ""
"অনুগ্রহ করে, UIN-এর জন্য আপনার বর্তমান গুপ্তসংকেত এবং আপনার নতুন গুপ্তসংকেত প্রবেশ "
"করান:"
-#: ../libpurple/protocols/gg/gg.c:738 ../libpurple/protocols/gg/gg.c:739
msgid "Change Gadu-Gadu Password"
msgstr "গাদু-গাদু গুপ্তসংকেত পরিবর্তন করুন"
-#: ../libpurple/protocols/gg/gg.c:804
#, c-format
msgid "Select a chat for buddy: %s"
msgstr "বন্ধুর জন্য আড্ডা নির্বাচন করুন: %s"
-#: ../libpurple/protocols/gg/gg.c:807 ../libpurple/protocols/gg/gg.c:808
msgid "Add to chat..."
msgstr "আড্ডায় যোগ দিন..."
-#: ../libpurple/protocols/gg/gg.c:930
-#: ../libpurple/protocols/jabber/buddy.c:2062
-#: ../libpurple/protocols/msn/state.c:29 ../libpurple/protocols/msn/state.c:30
-#: ../libpurple/protocols/msn/state.c:37 ../libpurple/protocols/msn/state.c:38
-#: ../libpurple/protocols/msnp9/state.c:29
-#: ../libpurple/protocols/msnp9/state.c:30
-#: ../libpurple/protocols/msnp9/state.c:37
-#: ../libpurple/protocols/msnp9/state.c:38
-#: ../libpurple/protocols/novell/novell.c:2834
-#: ../libpurple/protocols/qq/qq.c:409
-#: ../libpurple/protocols/yahoo/yahoo.c:3179 ../libpurple/status.c:160
-#: ../pidgin/gtkdocklet.c:545 ../pidgin/gtkstatusbox.c:1095
msgid "Available"
msgstr "সহজলভ্য"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#: ../libpurple/protocols/gg/gg.c:933 ../libpurple/protocols/irc/irc.c:556
-#: ../libpurple/protocols/irc/msgs.c:364
-#: ../libpurple/protocols/jabber/buddy.c:2066
-#: ../libpurple/protocols/novell/novell.c:2837
-#: ../libpurple/protocols/oscar/oscar.c:750
-#: ../libpurple/protocols/oscar/oscar.c:5853
-#: ../libpurple/protocols/qq/qq.c:267 ../libpurple/protocols/qq/qq.c:413
-#: ../libpurple/protocols/silc/buddy.c:1491
-#: ../libpurple/protocols/silc10/buddy.c:1491
-#: ../libpurple/protocols/yahoo/yahoo.c:3756
-#: ../libpurple/protocols/yahoo/yahoo.c:3830 ../libpurple/status.c:163
-#: ../pidgin/gtkdocklet.c:549 ../pidgin/gtkprefs.c:2090
-#: ../pidgin/gtkstatusbox.c:1096
msgid "Away"
msgstr "এখানে নেই"
-#: ../libpurple/protocols/gg/gg.c:958 ../libpurple/protocols/gg/gg.c:1028
-#: ../libpurple/protocols/oscar/oscar.c:2958
-#: ../libpurple/protocols/oscar/oscar.c:3905
msgid "UIN"
msgstr "UIN"
-#: ../libpurple/protocols/gg/gg.c:961 ../libpurple/protocols/gg/gg.c:1031
-#: ../libpurple/protocols/jabber/buddy.c:2239
-#: ../libpurple/protocols/jabber/buddy.c:2425
-#: ../libpurple/protocols/oscar/oscar.c:3916
-#: ../libpurple/protocols/silc/ops.c:1004
-#: ../libpurple/protocols/silc10/ops.c:1024
msgid "First Name"
msgstr "প্রথম নাম"
-#: ../libpurple/protocols/gg/gg.c:974 ../libpurple/protocols/gg/gg.c:1040
msgid "Birth Year"
msgstr "জন্ম সাল"
-#: ../libpurple/protocols/gg/gg.c:1022 ../libpurple/protocols/gg/gg.c:1091
-#: ../libpurple/protocols/oscar/oscar.c:4092
msgid "Unable to display the search results."
msgstr "অনুসন্ধান ফলাফল প্রদর্শন করতে অক্ষম।"
-#: ../libpurple/protocols/gg/gg.c:1082
msgid "Gadu-Gadu Public Directory"
msgstr "গাদু-গাদু জনসাধারণ নির্দেশিকা"
-#: ../libpurple/protocols/gg/gg.c:1083
msgid "Search results"
msgstr "অনুসন্ধান ফলাফল"
-#: ../libpurple/protocols/gg/gg.c:1122
msgid "No matching users found"
msgstr "কোনো সমন্বয়কারী ব্যবহারকারী পাওয়া যায়নি।"
-#: ../libpurple/protocols/gg/gg.c:1123
msgid "There are no users matching your search criteria."
msgstr "আপনার অনুসন্ধানের শর্তাবলী সাথে মেলে এমন কোনো ব্যবহারকারী নেই।"
-#: ../libpurple/protocols/gg/gg.c:1383 ../libpurple/protocols/gg/gg.c:1541
msgid "Unable to read socket"
msgstr "সকেট পড়তে ব্যর্থ"
-#: ../libpurple/protocols/gg/gg.c:1475
msgid "Buddy list downloaded"
msgstr "বন্ধু তালিকা ডাউনলোড করা হয়েছে"
-#: ../libpurple/protocols/gg/gg.c:1476
msgid "Your buddy list was downloaded from the server."
msgstr "আপনার বন্ধু তালিকা সার্ভার থেকে ডাউনলোড করা হয়েছে।"
-#: ../libpurple/protocols/gg/gg.c:1483
msgid "Buddy list uploaded"
msgstr "বন্ধু তালিকা আপলোড করা হয়েছে"
-#: ../libpurple/protocols/gg/gg.c:1484
msgid "Your buddy list was stored on the server."
msgstr "আপনার বন্ধু তালিকাটি সার্ভারে সংরক্ষণ করা হয়েছিল।"
-#: ../libpurple/protocols/gg/gg.c:1578 ../libpurple/protocols/gg/gg.c:1783
msgid "Connection failed."
msgstr "সংযোগ ব্যর্থ।"
-#: ../libpurple/protocols/gg/gg.c:1706
msgid "Add to chat"
msgstr "আড্ডার যোগ দিন"
-#: ../libpurple/protocols/gg/gg.c:1734
msgid "Chat _name:"
msgstr "আড্ডার নাম (_n):"
-#: ../libpurple/protocols/gg/gg.c:2079
msgid "Chat error"
msgstr "আড্ডা ত্রুটি"
-#: ../libpurple/protocols/gg/gg.c:2080
msgid "This chat name is already in use"
msgstr "এই আড্ডা নামটি ইতোমধ্যে ব্যবহৃত হচ্ছে"
-#: ../libpurple/protocols/gg/gg.c:2159
msgid "Not connected to the server."
msgstr "সার্ভারের সাথে সংযুক্ত নয়।"
-#: ../libpurple/protocols/gg/gg.c:2178
msgid "Find buddies..."
msgstr "বন্ধু খুঁজুন..."
-#: ../libpurple/protocols/gg/gg.c:2184
msgid "Change password..."
msgstr "গুপ্তসঙ্কেত পরিবর্তন করুন..."
-#: ../libpurple/protocols/gg/gg.c:2190
msgid "Upload buddylist to Server"
msgstr "সার্ভারে বন্ধু তালিকা আপলোড করুন"
-#: ../libpurple/protocols/gg/gg.c:2194
msgid "Download buddylist from Server"
msgstr "সার্ভার থেকে বন্ধু তালিকা ডাউনলোড করুন"
-#: ../libpurple/protocols/gg/gg.c:2198
msgid "Delete buddylist from Server"
msgstr "সার্ভার থেকে বন্ধু তালিকা মুছে ফেলুন"
-#: ../libpurple/protocols/gg/gg.c:2202
msgid "Save buddylist to file..."
msgstr "ফাইলে বন্ধুর তালিকা সংরক্ষণ করুন..."
@@ -4542,152 +3236,82 @@ msgstr "ফাইলে বন্ধুর তালিকা সংরক্ষ
#. id
#. name
#. version
-#: ../libpurple/protocols/gg/gg.c:2305
msgid "Gadu-Gadu Protocol Plugin"
msgstr "Gadu-Gadu প্রটোকল প্লাগইন"
#. summary
-#: ../libpurple/protocols/gg/gg.c:2306
msgid "Polish popular IM"
msgstr "জনপ্রিয় আইএম পরিমার্জন করুন"
-#: ../libpurple/protocols/gg/gg.c:2354
msgid "Gadu-Gadu User"
msgstr "গাদু-গাদু ব্যবহারকারী"
-#: ../libpurple/protocols/irc/cmds.c:43
-#: ../libpurple/protocols/silc/silc.c:1890
-#: ../libpurple/protocols/silc10/silc.c:1609
#, c-format
msgid "Unknown command: %s"
msgstr "অজানা নির্দেশ: %s"
-#: ../libpurple/protocols/irc/cmds.c:536
-#: ../libpurple/protocols/jabber/chat.c:617
-#: ../libpurple/protocols/silc/silc.c:1580
-#: ../libpurple/protocols/silc10/silc.c:1299
#, c-format
msgid "current topic is: %s"
msgstr "বর্তমান বিষয় হচ্ছে: %s"
-#: ../libpurple/protocols/irc/cmds.c:540
-#: ../libpurple/protocols/jabber/chat.c:621
-#: ../libpurple/protocols/silc/silc.c:1584
-#: ../libpurple/protocols/silc10/silc.c:1303
msgid "No topic is set"
msgstr "কোনো বিষয় নির্ধারণ করা হয়নি"
-#: ../libpurple/protocols/irc/dcc_send.c:304
-#: ../libpurple/protocols/irc/dcc_send.c:345
-#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:318
-#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:327
-#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:336
-#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:1110
-#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:1514
-#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:1565
msgid "File Transfer Failed"
msgstr "ফাইল বিনিময় ব্যর্থ"
-#: ../libpurple/protocols/irc/dcc_send.c:305
-#: ../libpurple/protocols/irc/dcc_send.c:346
msgid "Could not open a listening port."
msgstr "শোনার কোনো পোর্ট খুলতে পারছে না।"
-#: ../libpurple/protocols/irc/irc.c:77
msgid "Error displaying MOTD"
msgstr "MOTD দেখানোর সময় ত্রুটি দেখা দিয়েছে"
-#: ../libpurple/protocols/irc/irc.c:77
msgid "No MOTD available"
msgstr "কোনো MOTD সহজলভ্য নয়"
-#: ../libpurple/protocols/irc/irc.c:78
msgid "There is no MOTD associated with this connection."
msgstr "এই সংযোগের সাথে সম্পর্কিত কোনো MOTD নেই।"
-#: ../libpurple/protocols/irc/irc.c:81
#, c-format
msgid "MOTD for %s"
msgstr "%s এর জন্য MOTD"
-#: ../libpurple/protocols/irc/irc.c:127 ../libpurple/protocols/irc/irc.c:167
-#: ../libpurple/protocols/irc/irc.c:645 ../libpurple/protocols/irc/irc.c:674
-#: ../libpurple/protocols/myspace/myspace.c:2060
msgid "Server has disconnected"
msgstr "সার্ভার বিচ্ছিন্ন হয়েছে"
-#: ../libpurple/protocols/irc/irc.c:258
msgid "View MOTD"
msgstr "MOTD প্রদর্শন করুন"
-#: ../libpurple/protocols/irc/irc.c:270 ../libpurple/protocols/silc/chat.c:33
-#: ../libpurple/protocols/silc10/chat.c:33
msgid "_Channel:"
msgstr "চ্যানেল (_C):"
-#: ../libpurple/protocols/irc/irc.c:276
-#: ../libpurple/protocols/jabber/chat.c:60 ../pidgin/gtkaccount.c:553
msgid "_Password:"
msgstr "গুপ্তসংকেত (_P):"
# tithi
-#: ../libpurple/protocols/irc/irc.c:309
msgid "IRC nicks may not contain whitespace"
msgstr "IRC এর ডাকনামসমূহ ফাঁকা স্থান ধারণ নাও করতে পারে"
#. 1. connect to server
#. connect to the server
-#: ../libpurple/protocols/irc/irc.c:330
-#: ../libpurple/protocols/jabber/jabber.c:1423
-#: ../libpurple/protocols/msn/session.c:406
-#: ../libpurple/protocols/msnp9/session.c:368
-#: ../libpurple/protocols/myspace/myspace.c:2196
-#: ../libpurple/protocols/novell/novell.c:2199
-#: ../libpurple/protocols/oscar/oscar.c:1449
-#: ../libpurple/protocols/sametime/sametime.c:3784
-#: ../libpurple/protocols/simple/simple.c:1957
-#: ../libpurple/protocols/yahoo/yahoo.c:3004
-#: ../libpurple/protocols/zephyr/zephyr.c:1588 ../pidgin/gtkstatusbox.c:693
msgid "Connecting"
msgstr "সংযোগ করছে"
-#: ../libpurple/protocols/irc/irc.c:340
-#: ../libpurple/protocols/jabber/jabber.c:755
-#: ../libpurple/protocols/jabber/jabber.c:1223
msgid "SSL support unavailable"
msgstr "এসএসএল সমর্থন অপ্রাপ্য"
-#: ../libpurple/protocols/irc/irc.c:353
-#: ../libpurple/protocols/myspace/myspace.c:2214
-#: ../libpurple/protocols/simple/simple.c:485
-#: ../libpurple/protocols/simple/simple.c:1860
msgid "Couldn't create socket"
msgstr "সকেট তৈরী করা যাচ্ছে না"
-#: ../libpurple/protocols/irc/irc.c:451
-#: ../libpurple/protocols/oscar/oscar.c:1445
msgid "Couldn't connect to host"
msgstr "হোস্টের সাথে সংযুক্ত করা যাচ্ছে না"
-#: ../libpurple/protocols/irc/irc.c:640 ../libpurple/protocols/irc/irc.c:669
-#: ../libpurple/protocols/myspace/myspace.c:2054
msgid "Read error"
msgstr "পড়ায় ত্রুটি"
-#: ../libpurple/protocols/irc/irc.c:810
-#: ../libpurple/protocols/silc/chat.c:1401
-#: ../libpurple/protocols/silc10/chat.c:1426
-#: ../libpurple/protocols/yahoo/yahoochat.c:1508
msgid "Users"
msgstr "ব্যবহারকারীরা"
-#: ../libpurple/protocols/irc/irc.c:813
-#: ../libpurple/protocols/sametime/sametime.c:3431
-#: ../libpurple/protocols/silc/chat.c:1404
-#: ../libpurple/protocols/silc/ops.c:1406
-#: ../libpurple/protocols/silc10/chat.c:1429
-#: ../libpurple/protocols/silc10/ops.c:1382
-#: ../libpurple/protocols/yahoo/yahoochat.c:1517
msgid "Topic"
msgstr "বিষয়"
@@ -4699,54 +3323,29 @@ msgstr "বিষয়"
#. *< id
#. *< name
#. *< version
-#: ../libpurple/protocols/irc/irc.c:952
msgid "IRC Protocol Plugin"
msgstr "আইআরসি প্রটোকল প্লাগইন"
# tithi
#. * summary
-#: ../libpurple/protocols/irc/irc.c:953
msgid "The IRC Protocol Plugin that Sucks Less"
msgstr "IRC প্রটোকল প্লাগইন যা কম সমস্য়া তৈরি করে"
#. host to connect to
-#: ../libpurple/protocols/irc/irc.c:978 ../libpurple/protocols/irc/msgs.c:377
-#: ../libpurple/protocols/msn/msn.c:2622
-#: ../libpurple/protocols/msnp9/msn.c:2326
-#: ../libpurple/protocols/oscar/oscar.c:6857
-#: ../libpurple/protocols/sametime/sametime.c:5787
-#: ../libpurple/protocols/silc/ops.c:1262
-#: ../libpurple/protocols/silc/ops.c:1356
-#: ../libpurple/protocols/silc10/ops.c:1244
-#: ../libpurple/protocols/silc10/ops.c:1347
-#: ../libpurple/protocols/simple/simple.c:2141
-#: ../libpurple/protocols/toc/toc.c:2327
msgid "Server"
msgstr "সার্ভার"
#. port to connect to
-#: ../libpurple/protocols/irc/irc.c:981 ../libpurple/protocols/msn/msn.c:2627
-#: ../libpurple/protocols/msnp9/msn.c:2331
-#: ../libpurple/protocols/oscar/oscar.c:6860
-#: ../libpurple/protocols/sametime/sametime.c:5792
-#: ../libpurple/protocols/silc/silc.c:2181
-#: ../libpurple/protocols/silc10/silc.c:1904
-#: ../libpurple/protocols/toc/toc.c:2331
msgid "Port"
msgstr "পোর্ট"
-#: ../libpurple/protocols/irc/irc.c:984
msgid "Encodings"
msgstr "সঙ্কেতায়নসমূহ"
# tithi
-#: ../libpurple/protocols/irc/irc.c:987
msgid "Auto-detect incoming UTF-8"
msgstr "আসন্ন UTF-8 স্বয়ং-শনাক্ত করে"
-#: ../libpurple/protocols/irc/irc.c:993 ../libpurple/protocols/irc/msgs.c:371
-#: ../libpurple/protocols/silc/silc.c:1244
-#: ../libpurple/protocols/silc10/silc.c:945
msgid "Real name"
msgstr "আসল নাম"
@@ -4754,175 +3353,132 @@ 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);
#.
-#: ../libpurple/protocols/irc/irc.c:1001
msgid "Use SSL"
msgstr "SSL ব্যবহার করুন"
-#: ../libpurple/protocols/irc/msgs.c:196
msgid "Bad mode"
msgstr "খারাপ মেজাজ"
# tithi
-#: ../libpurple/protocols/irc/msgs.c:219
#, c-format
msgid "Ban on %s by %s, set %s ago"
msgstr "%2s দ্বারা %1s এ বাধা, %3s আগে নির্ধারণ করুন"
-#: ../libpurple/protocols/irc/msgs.c:223
#, c-format
msgid "Ban on %s"
msgstr "%s এ বাধা দিচ্ছে"
-#: ../libpurple/protocols/irc/msgs.c:238
msgid "End of ban list"
msgstr "নিষিদ্ধ তালিকার শেষে"
-#: ../libpurple/protocols/irc/msgs.c:252
#, c-format
msgid "You are banned from %s."
msgstr "আপনি %s থেকে নিষিদ্ধ।"
-#: ../libpurple/protocols/irc/msgs.c:253
msgid "Banned"
msgstr "নিষিদ্ধ করা হয়েছে"
-#: ../libpurple/protocols/irc/msgs.c:270
#, c-format
msgid "Cannot ban %s: banlist is full"
msgstr "%s নিষিদ্ধ করা যাচ্ছে না: নিষিদ্ধ তালিকা পূর্ণ"
-#: ../libpurple/protocols/irc/msgs.c:355
msgid " <i>(ircop)</i>"
msgstr "<i>(ircop)</i>"
-#: ../libpurple/protocols/irc/msgs.c:356
msgid " <i>(identified)</i>"
msgstr "<i>(শনাক্তকৃত)</i>"
-#: ../libpurple/protocols/irc/msgs.c:357
-#: ../libpurple/protocols/oscar/oscar.c:3906
-#: ../libpurple/protocols/silc/ops.c:1435
-#: ../libpurple/protocols/silc10/ops.c:1414
msgid "Nick"
msgstr "ডাকনাম"
# tithi
-#: ../libpurple/protocols/irc/msgs.c:383
-#: ../libpurple/protocols/silc/ops.c:1281
-#: ../libpurple/protocols/silc10/ops.c:1272
msgid "Currently on"
msgstr "বর্তমানে"
-#: ../libpurple/protocols/irc/msgs.c:388
msgid "Idle for"
msgstr "এর জন্য অলস"
-#: ../libpurple/protocols/irc/msgs.c:391
msgid "Online since"
msgstr "যখন থেকে অনলাইন "
-#: ../libpurple/protocols/irc/msgs.c:395
msgid "<b>Defining adjective:</b>"
msgstr "<b>বিশেষন নির্ধারন করছে:</b>"
# tithi
-#: ../libpurple/protocols/irc/msgs.c:395
msgid "Glorious"
msgstr "চমৎকার"
-#: ../libpurple/protocols/irc/msgs.c:479
#, c-format
msgid "%s has changed the topic to: %s"
msgstr "%1s বিষয় পরিবর্তন করছে: %2s"
-#: ../libpurple/protocols/irc/msgs.c:481
#, c-format
msgid "%s has cleared the topic."
msgstr "%s বিষয়টি পরিস্কার করেছে।"
-#: ../libpurple/protocols/irc/msgs.c:489
#, c-format
msgid "The topic for %s is: %s"
msgstr "%1s এর জন্য বিষয় হলো: %2s"
-#: ../libpurple/protocols/irc/msgs.c:507
#, c-format
msgid "Unknown message '%s'"
msgstr "অজানা বার্তা '%s'"
-#: ../libpurple/protocols/irc/msgs.c:508
msgid "Unknown message"
msgstr "অজানা বার্তা"
-#: ../libpurple/protocols/irc/msgs.c:508
msgid "The IRC server received a message it did not understand."
msgstr "IRC সার্ভার এমন একটি বার্তা পেয়েছে যা এটা বুঝতে পারেনি।"
-#: ../libpurple/protocols/irc/msgs.c:529
#, c-format
msgid "Users on %s: %s"
msgstr "%1s এর ব্যবহারকারী: %2s"
-#: ../libpurple/protocols/irc/msgs.c:636
msgid "Time Response"
msgstr "সাড়া দেওয়ার সময়"
-#: ../libpurple/protocols/irc/msgs.c:637
msgid "The IRC server's local time is:"
msgstr "আইআরসি সার্ভারের স্থানীয় সময় হলো:"
-#: ../libpurple/protocols/irc/msgs.c:648
msgid "No such channel"
msgstr "এমন কোনো চ্যানেল নেই"
#. does this happen?
-#: ../libpurple/protocols/irc/msgs.c:659
msgid "no such channel"
msgstr "এমন কোনো চ্যানেল নেই"
-#: ../libpurple/protocols/irc/msgs.c:662
msgid "User is not logged in"
msgstr "ব্যবহারকারী লগইন অবস্থায় নেই"
-#: ../libpurple/protocols/irc/msgs.c:667
msgid "No such nick or channel"
msgstr "এমন কোনো ডাকনাম বা চ্যানেল নেই"
-#: ../libpurple/protocols/irc/msgs.c:687
msgid "Could not send"
msgstr "পাঠানো সম্ভব হয়নি"
-#: ../libpurple/protocols/irc/msgs.c:743
#, c-format
msgid "Joining %s requires an invitation."
msgstr "%s এর অংশগ্রহনের জন্যে আমন্ত্রণ প্রয়োজন"
-#: ../libpurple/protocols/irc/msgs.c:744
msgid "Invitation only"
msgstr "শুধুমাত্র আমন্ত্রণ"
-#: ../libpurple/protocols/irc/msgs.c:860
#, c-format
msgid "You have been kicked by %s: (%s)"
msgstr "%1s দ্বারা আপনাকে বের করে দেয়া হয়েছে: (%2s)"
#. Remove user from channel
-#: ../libpurple/protocols/irc/msgs.c:865 ../libpurple/protocols/silc/ops.c:714
-#: ../libpurple/protocols/silc10/ops.c:720
#, c-format
msgid "Kicked by %s (%s)"
msgstr "%1s (%2s) দ্বারা বহিষ্কৃত"
-#: ../libpurple/protocols/irc/msgs.c:888
#, c-format
msgid "mode (%s %s) by %s"
msgstr "%s দ্বারা (%s %s) পরিমন্ডল"
-#: ../libpurple/protocols/irc/msgs.c:978 ../libpurple/protocols/irc/msgs.c:979
msgid "Invalid nickname"
msgstr "অবৈধ ডাকনাম"
-#: ../libpurple/protocols/irc/msgs.c:980
msgid ""
"Your selected nickname was rejected by the server. It probably contains "
"invalid characters."
@@ -4930,7 +3486,6 @@ msgstr ""
"আপনার নির্বাচিত ডাকনামটি সার্ভার দ্বারা বাতিল করা হয়েছে। এটি সম্ভবত অবৈধ বর্ণচিহ্ন "
"ধারণ করে।"
-#: ../libpurple/protocols/irc/msgs.c:985
msgid ""
"Your selected account name was rejected by the server. It probably contains "
"invalid characters."
@@ -4938,54 +3493,41 @@ msgstr ""
"আপনার নির্বাচিত একাউন্ট নাম সার্ভার থেকে বাতিল করা হয়েছে। এটি সম্ভবত অবৈধ "
"বর্ণচিহ্ন ধারণ করে।"
-#: ../libpurple/protocols/irc/msgs.c:1033
msgid "Cannot change nick"
msgstr "ডাকনাম পরিবর্তন করতে পারে না"
-#: ../libpurple/protocols/irc/msgs.c:1033
msgid "Could not change nick"
msgstr "ডাকনাম পরিবর্তন করতে পারেনি"
-#: ../libpurple/protocols/irc/msgs.c:1058
#, c-format
msgid "You have parted the channel%s%s"
msgstr "আপনি চ্যানেল%s%s বিভক্ত করেছেন"
-#: ../libpurple/protocols/irc/msgs.c:1102
msgid "Error: invalid PONG from server"
msgstr "ত্রুটি: সার্ভার থেকে অবৈধ PONG"
-#: ../libpurple/protocols/irc/msgs.c:1104
#, c-format
msgid "PING reply -- Lag: %lu seconds"
msgstr "PING উত্তর ‌‌-- পরে: %lu সেকেন্ড"
-#: ../libpurple/protocols/irc/msgs.c:1195
#, c-format
msgid "Cannot join %s: Registration is required."
msgstr "%s যুক্ত করতে পারে না: নিবন্ধন আবশ্যক।"
-#: ../libpurple/protocols/irc/msgs.c:1196
-#: ../libpurple/protocols/silc/ops.c:1106
-#: ../libpurple/protocols/silc10/ops.c:1128
msgid "Cannot join channel"
msgstr "চ্যানেলে অংশগ্রহণ করতে পারে না"
-#: ../libpurple/protocols/irc/msgs.c:1230
msgid "Nick or channel is temporarily unavailable."
msgstr "ডাকনাম বা চ্যানেল সাময়িকভাবে অপ্রাপ্য"
-#: ../libpurple/protocols/irc/msgs.c:1242
#, c-format
msgid "Wallops from %s"
msgstr "%s থেকে Wallop"
# tithi
-#: ../libpurple/protocols/irc/parse.c:124
msgid "action &lt;action to perform&gt;: Perform an action."
msgstr "কর্ম &1lt;&2gt সম্পন্ন করার কাজ;: একটি কাজ সম্পন্ন করেন।"
-#: ../libpurple/protocols/irc/parse.c:125
msgid ""
"away [message]: Set an away message, or use no message to return from being "
"away."
@@ -4994,15 +3536,12 @@ msgstr ""
"অনুপস্থিত আবস্থা থেকে ফিরে আসুন।"
# tithi
-#: ../libpurple/protocols/irc/parse.c:126
msgid "ctcp <nick> <msg>: sends ctcp msg to nick."
msgstr "ctcp <nick> <msg>: ডাকনামকে ctcp বার্তা পাঠায়।"
-#: ../libpurple/protocols/irc/parse.c:127
msgid "chanserv: Send a command to chanserv"
msgstr "chanserv: chanserv এ নির্দেশ পাঠান"
-#: ../libpurple/protocols/irc/parse.c:128
msgid ""
"deop &lt;nick1&gt; [nick2] ...: Remove channel operator status from "
"someone. You must be a channel operator to do this."
@@ -5010,7 +3549,6 @@ msgstr ""
"deop &1lt;ডাকনাম১&2gt; [ডাকনাম২] ...: কারও কাছ থেকে চ্যনেল অপারেটর অবস্থা মুছে "
"ফেলুন। এটি করতে আপনাকে অবশ্যই চ্যানেল পরিচালক হতে হবে।"
-#: ../libpurple/protocols/irc/parse.c:129
msgid ""
"devoice &lt;nick1&gt; [nick2] ...: Remove channel voice status from "
"someone, preventing them from speaking if the channel is moderated (+m). You "
@@ -5021,7 +3559,6 @@ msgstr ""
"আপনাকে অবশ্যই চ্যানেল অপারেটর হতে হবে।"
# tithi
-#: ../libpurple/protocols/irc/parse.c:130
msgid ""
"invite &lt;nick&gt; [room]: Invite someone to join you in the specified "
"channel, or the current channel."
@@ -5030,7 +3567,6 @@ msgstr ""
"চ্যানেলে যুক্ত করাতে কাউকে আমন্ত্রন জানান।"
# tithi
-#: ../libpurple/protocols/irc/parse.c:131
msgid ""
"j &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]: Enter one or more "
"channels, optionally providing a channel key for each if needed."
@@ -5039,7 +3575,6 @@ msgstr ""
"ঐচ্ছিকভাবে একটি চ্যানেল কী প্রদান করে এক বা একাধিক চ্যানেল প্রবেশ করান।"
# tithi
-#: ../libpurple/protocols/irc/parse.c:132
msgid ""
"join &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]: Enter one or more "
"channels, optionally providing a channel key for each if needed."
@@ -5048,7 +3583,6 @@ msgstr ""
"প্রত্যেককে ঐচ্ছিকভাবে একটি চ্যানেল কী প্রদান করে এক বা একাধিক চ্যানেল প্রবেশ করান।"
# tithi
-#: ../libpurple/protocols/irc/parse.c:133
msgid ""
"kick &lt;nick&gt; [message]: Remove someone from a channel. You must be a "
"channel operator to do this."
@@ -5056,7 +3590,6 @@ msgstr ""
"মুছে ফেলা &1lt;ডাকনাম&2gt; [বার্তা]: একটি চ্যানেল থেকে কাউকে অপসারণ করুন। এটা "
"করতে আপনাকে অবশ্যই চ্যানেলে অপারেটর হতে হবে।"
-#: ../libpurple/protocols/irc/parse.c:134
msgid ""
"list: Display a list of chat rooms on the network. <i>Warning, some servers "
"may disconnect you upon doing this.</i>"
@@ -5065,17 +3598,14 @@ msgstr ""
"disconnect you upon doing this</i>"
# tithi
-#: ../libpurple/protocols/irc/parse.c:135
msgid "me &lt;action to perform&gt;: Perform an action."
msgstr "আমাকে &1lt;সম্পাদনার কাজ&2gt;: একটি কাজ সম্পাদন করুন।"
# tithi
-#: ../libpurple/protocols/irc/parse.c:136
msgid "memoserv: Send a command to memoserv"
msgstr "স্মৃতি সার্ভার: স্মৃতি সার্ভারে একটি নির্দেশ পাঠান"
# tithi
-#: ../libpurple/protocols/irc/parse.c:137
msgid ""
"mode &lt;+|-&gt;&lt;A-Za-z&gt; &lt;nick|channel&gt;: Set or unset a channel "
"or user mode."
@@ -5084,7 +3614,6 @@ msgstr ""
"ব্যবহারকারীর মোড নির্ধারন বা অনির্ধারণ করুন।"
# tithi
-#: ../libpurple/protocols/irc/parse.c:138
msgid ""
"msg &lt;nick&gt; &lt;message&gt;: Send a private message to a user (as "
"opposed to a channel)."
@@ -5092,26 +3621,20 @@ msgstr ""
"বার্তা &1lt;ডাকনাম&2gt; &3lt;বার্তা&4gt;: একজন ব্যবহারকারীকে একটি ব্যক্তিগত "
"বার্তা পাঠান (একটি চ্যানেলের বিপরীতে)।"
-#: ../libpurple/protocols/irc/parse.c:139
msgid "names [channel]: List the users currently in a channel."
msgstr "নামসমূহ [চ্যানেল১]: চ্যানেলে বর্তমান ব্যবহারকারীদের তালিকা করুন।"
-#: ../libpurple/protocols/irc/parse.c:140
-#: ../libpurple/protocols/jabber/jabber.c:2543
msgid "nick &lt;new nickname&gt;: Change your nickname."
msgstr "ডাকনাম &1lt;নতুন ডাকনাম&2gt;: আপনার ডাকনাম পরিবর্তন করুন।"
# tithi
-#: ../libpurple/protocols/irc/parse.c:141
msgid "nickserv: Send a command to nickserv"
msgstr "ডাকনাম-সার্ভার: ডাকনাম-সার্ভারে একটি নির্দেশ পাঠান"
-#: ../libpurple/protocols/irc/parse.c:142
msgid "notice &lt;target&lt;: Send a notice to a user or channel."
msgstr "ঘোষণা &1lt;লক্ষ্য&2lt;: ব্যবহারকারীর কাছে বা চ্যানেলে একটি ঘোষণা পাঠান।"
# tithi
-#: ../libpurple/protocols/irc/parse.c:143
msgid ""
"op &lt;nick1&gt; [nick2] ...: Grant channel operator status to someone. You "
"must be a channel operator to do this."
@@ -5120,7 +3643,6 @@ msgstr ""
"মেমে নিন। এটা করতে আপনাকে অবশ্যই একজন চ্যানেল অপারেটর হতে হবে।"
# tithi
-#: ../libpurple/protocols/irc/parse.c:144
msgid ""
"operwall &lt;message&gt;: If you don't know what this is, you probably "
"can't use it."
@@ -5129,12 +3651,10 @@ msgstr ""
"ব্যবহার করতে পারবেন না।"
# tithi
-#: ../libpurple/protocols/irc/parse.c:145
msgid "operserv: Send a command to operserv"
msgstr "অপারেটর-সার্ভার: অপারেটর-সার্ভারে একটি নির্দেশ পাঠান"
# tithi
-#: ../libpurple/protocols/irc/parse.c:146
msgid ""
"part [room] [message]: Leave the current channel, or a specified channel, "
"with an optional message."
@@ -5143,7 +3663,6 @@ msgstr ""
"ত্যাগ করুন।"
# tithi
-#: ../libpurple/protocols/irc/parse.c:147
msgid ""
"ping [nick]: Asks how much lag a user (or the server if no user specified) "
"has."
@@ -5152,7 +3671,6 @@ msgstr ""
"ব্যবহারকারী উল্লেখিত না থাকে) করুন।"
# tithi
-#: ../libpurple/protocols/irc/parse.c:148
msgid ""
"query &lt;nick&gt; &lt;message&gt;: Send a private message to a user (as "
"opposed to a channel)."
@@ -5160,16 +3678,13 @@ msgstr ""
"জিজ্ঞাসা &1lt;ডাকনাম&2gt; &3lt;বার্তা&4gt;: একজন ব্যবহারকারীকে একটি ব্যক্তিগত "
"বার্তা পাঠান (একটি চ্যানেলের বিপরীত হিসেবে)।"
-#: ../libpurple/protocols/irc/parse.c:149
msgid "quit [message]: Disconnect from the server, with an optional message."
msgstr "প্রস্থান করুন [বার্তা]: একটি ঐচ্ছিক বার্তাসহ, সার্ভারের থেকে বিচ্ছিন্ন করুন।"
-#: ../libpurple/protocols/irc/parse.c:150
msgid "quote [...]: Send a raw command to the server."
msgstr "উক্তি [...]: সার্ভারে একটি অরুপান্তরিত বার্তা পাঠান"
# tithi
-#: ../libpurple/protocols/irc/parse.c:151
msgid ""
"remove &lt;nick&gt; [message]: Remove someone from a room. You must be a "
"channel operator to do this."
@@ -5177,28 +3692,23 @@ msgstr ""
"অপসারণ করুন &1lt;ডাকনাম&2gt; [বার্তা]: একটি রুম থেকে কোনও একজন অপসারণ করুন। এটা "
"করতে আপনাকে অবশ্যই একজন চ্যানেল অপারেটর হতে হবে।"
-#: ../libpurple/protocols/irc/parse.c:152
msgid "time: Displays the current local time at the IRC server."
msgstr "সময়: আইআরসি সার্ভারে বর্তমান স্থানীয় সময় প্রদর্শন করে।"
-#: ../libpurple/protocols/irc/parse.c:153
msgid "topic [new topic]: View or change the channel topic."
msgstr "বিষয়বস্তু [নতুন বিষয়বস্তু]: চ্যানেলের বিষয়বস্তু প্রদর্শন বা পরিবর্তন করুন।"
# tithi
-#: ../libpurple/protocols/irc/parse.c:154
msgid "umode &lt;+|-&gt;&lt;A-Za-z&gt;: Set or unset a user mode."
msgstr ""
"ব্যবহারকারী মোড &1lt;+|-&2gt;&3lt;A-Za-z&4gt;: ব্যবহারকারীr মোড নির্ধারণ বা "
"অনির্ধারণ করুন।"
# tithi
-#: ../libpurple/protocols/irc/parse.c:155
msgid "version [nick]: send CTCP VERSION request to a user"
msgstr "সংস্করণ [ডাকনাম]: একজন ব্যবহারকারীকে CTCP সংস্করণ অনুরোধ পাঠান"
# tithi
-#: ../libpurple/protocols/irc/parse.c:156
msgid ""
"voice &lt;nick1&gt; [nick2] ...: Grant channel voice status to someone. You "
"must be a channel operator to do this."
@@ -5207,7 +3717,6 @@ msgstr ""
"মেনে নিন। এটা করতে আপনাকে অবশ্যই চ্যানেল অপারেটর হতে হবে।"
# tithi
-#: ../libpurple/protocols/irc/parse.c:157
msgid ""
"wallops &lt;message&gt;: If you don't know what this is, you probably can't "
"use it."
@@ -5216,69 +3725,47 @@ msgstr ""
"করতে পারবেন না।"
# tithi
-#: ../libpurple/protocols/irc/parse.c:158
msgid "whois [server] &lt;nick&gt;: Get information on a user."
msgstr "কে [সার্ভার] &1lt;ডাকনাম&2gt;: একজন ব্যবহারকারীর তথ্য গ্রহণ করুন।"
# tithi
-#: ../libpurple/protocols/irc/parse.c:159
msgid "whowas &lt;nick&gt;: Get information on a user that has logged off."
msgstr "কে ছিল&1lt;ডাকনাম&2gt;: বন্ধ রয়েছে এমন একজন ব্যবহারকারীর তথ্য গ্রহণ করুন।"
-#: ../libpurple/protocols/irc/parse.c:544
#, c-format
msgid "Reply time from %s: %lu seconds"
msgstr "%1s হতে উত্তর দেয়ার সময়: %2lu সেকেন্ড"
-#: ../libpurple/protocols/irc/parse.c:545
msgid "PONG"
msgstr "PONG"
-#: ../libpurple/protocols/irc/parse.c:545
msgid "CTCP PING reply"
msgstr "CTCP PING উত্তর"
-#: ../libpurple/protocols/irc/parse.c:657
-#: ../libpurple/protocols/irc/parse.c:664 ../libpurple/protocols/toc/toc.c:191
-#: ../libpurple/protocols/toc/toc.c:694 ../libpurple/protocols/toc/toc.c:710
-#: ../libpurple/protocols/toc/toc.c:786
msgid "Disconnected."
msgstr "বিচ্ছিন্ন।"
-#: ../libpurple/protocols/jabber/adhoccommands.c:143
-#: ../libpurple/protocols/jabber/jabber.c:816
-#: ../libpurple/protocols/jabber/jabber.c:846
-#: ../libpurple/protocols/jabber/jabber.c:2127
msgid "Unknown Error"
msgstr "অজানা ত্রুটি"
-#: ../libpurple/protocols/jabber/adhoccommands.c:145
-#: ../libpurple/protocols/jabber/adhoccommands.c:146
msgid "Ad-Hoc Command Failed"
msgstr "এড-হক নির্দেশ ব্যর্থ"
-#: ../libpurple/protocols/jabber/adhoccommands.c:182
msgid "execute"
msgstr "কার্যকর করুন"
# tithi
-#: ../libpurple/protocols/jabber/auth.c:55
msgid "Server requires TLS/SSL for login. No TLS/SSL support found."
msgstr ""
"সার্ভারের লগইন করার জন্য TSL/SSL আবশ্যক, কোনো TLS/SSL সমর্থন খুঁজে পাওয়া যায়নি।"
# tithi
-#: ../libpurple/protocols/jabber/auth.c:60
msgid "You require encryption, but no TLS/SSL support found."
msgstr "আপনার এনক্রিপশন প্রয়োজন, কিন্তু কোনো TLS/SSL সমর্থন খুঁজে পাওয়া যায়নি।"
-#: ../libpurple/protocols/jabber/auth.c:125
msgid "Server requires plaintext authentication over an unencrypted stream"
msgstr "একটি এনক্রিপশনবিহীন স্ট্রীমে সার্ভারের সরল-পাঠ প্রমাণীকরণ প্রয়োজন"
-#: ../libpurple/protocols/jabber/auth.c:328
-#: ../libpurple/protocols/jabber/auth.c:548
-#: ../libpurple/protocols/jabber/auth.c:667
#, c-format
msgid ""
"%s requires plaintext authentication over an unencrypted connection. Allow "
@@ -5287,141 +3774,74 @@ msgstr ""
"একটি এনক্রিপশনবিহীন সংযোগে %s এর সরল-পাঠ প্রমাণীকরণ প্রয়োজন। এটি অনুমোদন করুন এবং "
"প্রমাণীকরণ কি অব্যাহত রাখতে চান?"
-#: ../libpurple/protocols/jabber/auth.c:330
-#: ../libpurple/protocols/jabber/auth.c:331
-#: ../libpurple/protocols/jabber/auth.c:550
-#: ../libpurple/protocols/jabber/auth.c:551
-#: ../libpurple/protocols/jabber/auth.c:669
-#: ../libpurple/protocols/jabber/auth.c:670
msgid "Plaintext Authentication"
msgstr "সরল-পাঠ প্রমাণীকরণ"
-#: ../libpurple/protocols/jabber/auth.c:493
-#: ../libpurple/protocols/jabber/auth.c:606
-#: ../libpurple/protocols/jabber/auth.c:851
-#: ../libpurple/protocols/jabber/auth.c:1003
-#: ../libpurple/protocols/jabber/auth.c:1030
-#: ../libpurple/protocols/jabber/auth.c:1076
-#: ../libpurple/protocols/jabber/jabber.c:131
msgid "Invalid response from server."
msgstr "সার্ভার থেকে অবৈধ সাড়া।"
-#: ../libpurple/protocols/jabber/auth.c:564
-#: ../libpurple/protocols/jabber/auth.c:683
msgid "Server does not use any supported authentication method"
msgstr "সার্ভার কোনো সমর্থিত প্রমাণীকরণ প্রক্রিয়া ব্যবহার করে না।"
-#: ../libpurple/protocols/jabber/auth.c:874
-#: ../libpurple/protocols/jabber/auth.c:900
msgid "Invalid challenge from server"
msgstr "সার্ভার থেকে অবৈধ চ্যালেঞ্জ"
-#: ../libpurple/protocols/jabber/auth.c:976
msgid "SASL error"
msgstr "SASL ত্রুটি"
-#: ../libpurple/protocols/jabber/buddy.c:311
-#: ../libpurple/protocols/jabber/buddy.c:1241
-#: ../libpurple/protocols/sametime/sametime.c:4190
-#: ../libpurple/protocols/silc/ops.c:1000
-#: ../libpurple/protocols/silc10/ops.c:1020
msgid "Full Name"
msgstr "পুরো নাম"
-#: ../libpurple/protocols/jabber/buddy.c:312
-#: ../libpurple/protocols/jabber/buddy.c:1252
-#: ../libpurple/protocols/silc/ops.c:1012
-#: ../libpurple/protocols/silc10/ops.c:1032
msgid "Family Name"
msgstr "পারিবারিক নাম"
-#: ../libpurple/protocols/jabber/buddy.c:313
-#: ../libpurple/protocols/jabber/buddy.c:1254
msgid "Given Name"
msgstr "প্রদত্ত নাম"
-#: ../libpurple/protocols/jabber/buddy.c:315
-#: ../libpurple/protocols/jabber/jabber.c:1115
msgid "URL"
msgstr "URL"
-#: ../libpurple/protocols/jabber/buddy.c:316
-#: ../libpurple/protocols/jabber/buddy.c:1298
msgid "Street Address"
msgstr "রাস্তার ঠিকানা"
-#: ../libpurple/protocols/jabber/buddy.c:317
-#: ../libpurple/protocols/jabber/buddy.c:1296
msgid "Extended Address"
msgstr "বর্ধিত ঠিকানা"
-#: ../libpurple/protocols/jabber/buddy.c:318
-#: ../libpurple/protocols/jabber/buddy.c:1300
msgid "Locality"
msgstr "এলাকা"
-#: ../libpurple/protocols/jabber/buddy.c:319
-#: ../libpurple/protocols/jabber/buddy.c:1302
msgid "Region"
msgstr "এলাকা"
-#: ../libpurple/protocols/jabber/buddy.c:320
-#: ../libpurple/protocols/jabber/buddy.c:1304
msgid "Postal Code"
msgstr "পোষ্টাল কোড"
-#: ../libpurple/protocols/jabber/buddy.c:321
-#: ../libpurple/protocols/jabber/buddy.c:1307
-#: ../libpurple/protocols/silc/silc.c:1250
-#: ../libpurple/protocols/silc10/silc.c:951
msgid "Country"
msgstr "দেশ"
#. lots of clients (including purple) do this, but it's
#. * out of spec
-#: ../libpurple/protocols/jabber/buddy.c:322
-#: ../libpurple/protocols/jabber/buddy.c:1321
-#: ../libpurple/protocols/jabber/buddy.c:1327
msgid "Telephone"
msgstr "টেলিফোন"
-#: ../libpurple/protocols/jabber/buddy.c:324
-#: ../libpurple/protocols/jabber/buddy.c:1368
msgid "Organization Name"
msgstr "সংগঠনের নাম"
-#: ../libpurple/protocols/jabber/buddy.c:325
-#: ../libpurple/protocols/jabber/buddy.c:1370
msgid "Organization Unit"
msgstr "সংগঠন একক"
-#: ../libpurple/protocols/jabber/buddy.c:327
-#: ../libpurple/protocols/jabber/buddy.c:1377
msgid "Role"
msgstr "ভূমিকা"
-#: ../libpurple/protocols/jabber/buddy.c:328
-#: ../libpurple/protocols/jabber/buddy.c:1270
-#: ../libpurple/protocols/msn/msn.c:2092
-#: ../libpurple/protocols/msnp9/msn.c:1798
-#: ../libpurple/protocols/oscar/oscar.c:3955
msgid "Birthday"
msgstr "জন্মদিন"
-#: ../libpurple/protocols/jabber/buddy.c:329
-#: ../libpurple/protocols/jabber/buddy.c:1379
-#: ../libpurple/protocols/jabber/chat.c:802
-#: ../libpurple/protocols/jabber/usermood.c:190 ../pidgin/gtkblist.c:3540
-#: ../pidgin/gtkplugin.c:584 ../pidgin/gtkprefs.c:688
msgid "Description"
msgstr "বিবরণ"
-#: ../libpurple/protocols/jabber/buddy.c:739
-#: ../libpurple/protocols/jabber/buddy.c:740
msgid "Edit XMPP vCard"
msgstr "XMPP vCard সম্পাদনা করুন"
-#: ../libpurple/protocols/jabber/buddy.c:741
msgid ""
"All items below are optional. Enter only the information with which you feel "
"comfortable."
@@ -5429,364 +3849,226 @@ msgstr ""
"নিচের সব বিষয়গুলো ঐচ্ছিক। আপনি যে তথ্য প্রবেশ করাতে স্বাচ্ছন্দবোধ করেন শুধুমাত্র তা "
"প্রবেশ করান।"
-#: ../libpurple/protocols/jabber/buddy.c:797
-#: ../libpurple/protocols/jabber/buddy.c:966
msgid "Client"
msgstr "ক্লায়েন্ট"
# tithi
-#: ../libpurple/protocols/jabber/buddy.c:801
-#: ../libpurple/protocols/jabber/buddy.c:970
msgid "Operating System"
msgstr "অপারেটিং সিস্টেম"
# tithi
-#: ../libpurple/protocols/jabber/buddy.c:841
-#: ../libpurple/protocols/jabber/buddy.c:1011
msgid "Last Activity"
msgstr "শেষ সক্রিয়তা"
-#: ../libpurple/protocols/jabber/buddy.c:843
-#: ../libpurple/protocols/jabber/buddy.c:1013
msgid "Service Discovery Info"
msgstr "সেবা আবিষ্কারের তথ্য"
# tithi
-#: ../libpurple/protocols/jabber/buddy.c:845
-#: ../libpurple/protocols/jabber/buddy.c:1015
msgid "Service Discovery Items"
msgstr "সেবা আবিষ্কারের বিষয়োপকরনসমূহ"
-#: ../libpurple/protocols/jabber/buddy.c:847
-#: ../libpurple/protocols/jabber/buddy.c:1017
msgid "Extended Stanza Addressing"
msgstr "বর্ধিত স্ট্যানজা উদ্দেশ করছে"
-#: ../libpurple/protocols/jabber/buddy.c:849
-#: ../libpurple/protocols/jabber/buddy.c:1019
msgid "Multi-User Chat"
msgstr "একাধিক-ব্যবহারকারী সম্বলিত আড্ডা"
-#: ../libpurple/protocols/jabber/buddy.c:851
-#: ../libpurple/protocols/jabber/buddy.c:1021
msgid "Multi-User Chat Extended Presence Information"
msgstr "একাধিক-ব্যবহারকারীর বর্ধিত উপস্থিতি তথ্য"
# tithi
-#: ../libpurple/protocols/jabber/buddy.c:853
-#: ../libpurple/protocols/jabber/buddy.c:1023
msgid "In-Band Bytestreams"
msgstr "In-Band বাইট-প্রবাহ"
-#: ../libpurple/protocols/jabber/buddy.c:855
-#: ../libpurple/protocols/jabber/buddy.c:1025
msgid "Ad-Hoc Commands"
msgstr "Ad-Hoc নির্দেশসমূহ"
# tithi
-#: ../libpurple/protocols/jabber/buddy.c:857
-#: ../libpurple/protocols/jabber/buddy.c:1027
msgid "PubSub Service"
msgstr "PubSub সেবা"
# tithi
-#: ../libpurple/protocols/jabber/buddy.c:859
-#: ../libpurple/protocols/jabber/buddy.c:1029
msgid "SOCKS5 Bytestreams"
msgstr "SOCKS5 বাইট-প্রবাহ"
# tithi
-#: ../libpurple/protocols/jabber/buddy.c:861
-#: ../libpurple/protocols/jabber/buddy.c:1031
msgid "Out of Band Data"
msgstr "ব্যান্ড তথ্যের বাইরে"
-#: ../libpurple/protocols/jabber/buddy.c:863
-#: ../libpurple/protocols/jabber/buddy.c:1033
msgid "XHTML-IM"
msgstr "XHTML-IM"
-#: ../libpurple/protocols/jabber/buddy.c:865
-#: ../libpurple/protocols/jabber/buddy.c:1035
msgid "In-Band Registration"
msgstr "ইন ব্যান্ড নিবন্ধন"
-#: ../libpurple/protocols/jabber/buddy.c:867
-#: ../libpurple/protocols/jabber/buddy.c:1037
msgid "User Location"
msgstr "ব্যবহারকারীর অবস্থান"
# fix me tithi
-#: ../libpurple/protocols/jabber/buddy.c:869
-#: ../libpurple/protocols/jabber/buddy.c:1039
msgid "User Avatar"
msgstr "ব্যবহারকারী অ্যাভাটার"
-#: ../libpurple/protocols/jabber/buddy.c:871
-#: ../libpurple/protocols/jabber/buddy.c:1041
msgid "Chat State Notifications"
msgstr "আড্ডার অবস্থার প্রজ্ঞাপন"
-#: ../libpurple/protocols/jabber/buddy.c:873
-#: ../libpurple/protocols/jabber/buddy.c:1043
msgid "Software Version"
msgstr "সফটওয়্যায় সংস্করণ"
# fix me tithi
-#: ../libpurple/protocols/jabber/buddy.c:875
-#: ../libpurple/protocols/jabber/buddy.c:1045
msgid "Stream Initiation"
msgstr "প্রবাহ শুরু করুন"
-#: ../libpurple/protocols/jabber/buddy.c:877
-#: ../libpurple/protocols/jabber/buddy.c:1047
-#: ../libpurple/protocols/sametime/sametime.c:3292
msgid "File Transfer"
msgstr "ফাইল স্থানান্তর করুন"
-#: ../libpurple/protocols/jabber/buddy.c:879
-#: ../libpurple/protocols/jabber/buddy.c:1049
msgid "User Mood"
msgstr "ব্যবহাকারীরর পরিমন্ডল"
-#: ../libpurple/protocols/jabber/buddy.c:881
-#: ../libpurple/protocols/jabber/buddy.c:1051
msgid "User Activity"
msgstr "ব্যবহারকারীর কাজকর্ম"
# tithi
-#: ../libpurple/protocols/jabber/buddy.c:883
-#: ../libpurple/protocols/jabber/buddy.c:1053
msgid "Entity Capabilities"
msgstr "সত্তার সক্ষমতা"
# tithi
-#: ../libpurple/protocols/jabber/buddy.c:885
-#: ../libpurple/protocols/jabber/buddy.c:1055
msgid "Encrypted Session Negotiations"
msgstr "সঙ্কেতায়িত অধিবেশনের আলোচনা"
-#: ../libpurple/protocols/jabber/buddy.c:887
-#: ../libpurple/protocols/jabber/buddy.c:1057
msgid "User Tune"
msgstr "ব্যবহারকারীর সুর"
# tithi
-#: ../libpurple/protocols/jabber/buddy.c:889
-#: ../libpurple/protocols/jabber/buddy.c:1059
msgid "Roster Item Exchange"
msgstr "রোস্টার বিষয়োপকরণ পরিবর্তন করুন"
-#: ../libpurple/protocols/jabber/buddy.c:891
-#: ../libpurple/protocols/jabber/buddy.c:1061
msgid "Reachability Address"
msgstr "পৌঁছানোর মতো ঠিকানা"
-#: ../libpurple/protocols/jabber/buddy.c:893
-#: ../libpurple/protocols/jabber/buddy.c:1063
msgid "User Profile"
msgstr "ব্যবহারকারীর প্রোফাইল"
-#: ../libpurple/protocols/jabber/buddy.c:895
-#: ../libpurple/protocols/jabber/buddy.c:1065
msgid "Jingle"
msgstr "ছন্দ"
# tithi
-#: ../libpurple/protocols/jabber/buddy.c:897
-#: ../libpurple/protocols/jabber/buddy.c:1067
msgid "Jingle Audio"
msgstr "ছন্দময় অডিও"
-#: ../libpurple/protocols/jabber/buddy.c:899
-#: ../libpurple/protocols/jabber/buddy.c:1069
msgid "User Nickname"
msgstr "ব্যবহারকারীর ডাকনাম"
# tithi
-#: ../libpurple/protocols/jabber/buddy.c:901
-#: ../libpurple/protocols/jabber/buddy.c:1071
msgid "Jingle ICE UDP"
msgstr "ছন্দময় ICE UDP"
# tithi
-#: ../libpurple/protocols/jabber/buddy.c:903
-#: ../libpurple/protocols/jabber/buddy.c:1073
msgid "Jingle ICE TCP"
msgstr "ছন্দময় ICE TCP"
# tithi
-#: ../libpurple/protocols/jabber/buddy.c:905
-#: ../libpurple/protocols/jabber/buddy.c:1075
msgid "Jingle Raw UDP"
msgstr "ছন্দময় Raw UDP"
# tithi
-#: ../libpurple/protocols/jabber/buddy.c:907
-#: ../libpurple/protocols/jabber/buddy.c:1077
msgid "Jingle Video"
msgstr "ছন্দময় ভিডিও"
# tithi
-#: ../libpurple/protocols/jabber/buddy.c:909
-#: ../libpurple/protocols/jabber/buddy.c:1079
msgid "Jingle DTMF"
msgstr "ছন্দময় DTMF"
-#: ../libpurple/protocols/jabber/buddy.c:911
-#: ../libpurple/protocols/jabber/buddy.c:1081
msgid "Message Receipts"
msgstr "বার্তা গ্রহণ করা হয়েছে"
-#: ../libpurple/protocols/jabber/buddy.c:913
-#: ../libpurple/protocols/jabber/buddy.c:1083
msgid "Public Key Publishing"
msgstr "সর্বসাধারণের কী প্রকাশ করা হচ্ছে"
-#: ../libpurple/protocols/jabber/buddy.c:915
-#: ../libpurple/protocols/jabber/buddy.c:1085
msgid "User Chatting"
msgstr "ব্যবহারকারী আড্ডা দিচ্ছে"
-#: ../libpurple/protocols/jabber/buddy.c:917
-#: ../libpurple/protocols/jabber/buddy.c:1087
msgid "User Browsing"
msgstr "ব্যবহাকারী ব্রাউজ করছে"
-#: ../libpurple/protocols/jabber/buddy.c:919
-#: ../libpurple/protocols/jabber/buddy.c:1089
msgid "User Gaming"
msgstr "ব্যবহারকারীরা খেলছে"
-#: ../libpurple/protocols/jabber/buddy.c:921
-#: ../libpurple/protocols/jabber/buddy.c:1091
msgid "User Viewing"
msgstr "ব্যবহারকারীরা দেখছে"
-#: ../libpurple/protocols/jabber/buddy.c:923
-#: ../libpurple/protocols/jabber/buddy.c:1093
-#: ../libpurple/protocols/silc/ops.c:1613
-#: ../libpurple/protocols/silc/ops.c:1618
-#: ../libpurple/protocols/silc10/ops.c:1612
-#: ../libpurple/protocols/silc10/ops.c:1617
msgid "Ping"
msgstr "পিঙ্গ করুন"
# tithi
-#: ../libpurple/protocols/jabber/buddy.c:925
-#: ../libpurple/protocols/jabber/buddy.c:1095
msgid "Stanza Encryption"
msgstr "স্ট্যানজা সঙ্কেতায়ন"
# tithi
-#: ../libpurple/protocols/jabber/buddy.c:927
-#: ../libpurple/protocols/jabber/buddy.c:1097
msgid "Entity Time"
msgstr "সত্ত্বার সময়"
# tithi
-#: ../libpurple/protocols/jabber/buddy.c:929
-#: ../libpurple/protocols/jabber/buddy.c:1099
msgid "Delayed Delivery"
msgstr "বিলম্বিত সরবরাহ"
# tithi
-#: ../libpurple/protocols/jabber/buddy.c:931
-#: ../libpurple/protocols/jabber/buddy.c:1101
msgid "Collaborative Data Objects"
msgstr "সহযোগি উপাত্ত অবজেক্ট"
# tithi
-#: ../libpurple/protocols/jabber/buddy.c:933
-#: ../libpurple/protocols/jabber/buddy.c:1103
msgid "File Repository and Sharing"
msgstr "ফাইল ভান্ডার এবং শেয়ার করছে"
# tithi
-#: ../libpurple/protocols/jabber/buddy.c:935
-#: ../libpurple/protocols/jabber/buddy.c:1105
msgid "STUN Service Discovery for Jingle"
msgstr "ছন্দময়তার জন্য STUN সেবা আবিষ্কার"
# tithi
-#: ../libpurple/protocols/jabber/buddy.c:937
-#: ../libpurple/protocols/jabber/buddy.c:1107
msgid "Simplified Encrypted Session Negotiation"
msgstr "সহজবোধ্য সঙ্কেতায়িত অধিবেশনের আলোচনা"
# tithi
-#: ../libpurple/protocols/jabber/buddy.c:939
-#: ../libpurple/protocols/jabber/buddy.c:1109
msgid "Hop Check"
msgstr "হপ পরীক্ষা করুন"
# tithi
-#: ../libpurple/protocols/jabber/buddy.c:947
-#: ../libpurple/protocols/jabber/buddy.c:1117
-#: ../libpurple/protocols/oscar/oscar.c:3171
msgid "Capabilities"
msgstr "সক্ষমতা"
-#: ../libpurple/protocols/jabber/buddy.c:997
-#: ../libpurple/protocols/jabber/jabber.c:1795
-#: ../libpurple/protocols/jabber/jabber.c:1809
-#: ../libpurple/protocols/jabber/jabber.c:1823
-#: ../libpurple/protocols/jabber/jabber.c:1837
-#: ../libpurple/protocols/jabber/jabber.c:1851
msgid "Priority"
msgstr "অগ্রাধিকার"
-#: ../libpurple/protocols/jabber/buddy.c:1002
-#: ../libpurple/protocols/jabber/libxmpp.c:212
-#: ../libpurple/protocols/jabber/si.c:1088
msgid "Resource"
msgstr "সম্পদ"
-#: ../libpurple/protocols/jabber/buddy.c:1256
-#: ../libpurple/protocols/silc/ops.c:1008
-#: ../libpurple/protocols/silc10/ops.c:1028
msgid "Middle Name"
msgstr "মধ্য নাম"
-#: ../libpurple/protocols/jabber/buddy.c:1289
-#: ../libpurple/protocols/jabber/jabber.c:1095
-#: ../libpurple/protocols/oscar/oscar.c:3978
-#: ../libpurple/protocols/oscar/oscar.c:3986
-#: ../libpurple/protocols/qq/buddy_info.c:116
-#: ../libpurple/protocols/silc/ops.c:1044
-#: ../libpurple/protocols/silc10/ops.c:1064
msgid "Address"
msgstr "ঠিকানা"
-#: ../libpurple/protocols/jabber/buddy.c:1294
msgid "P.O. Box"
msgstr "পি.ও. বক্স"
-#: ../libpurple/protocols/jabber/buddy.c:1400
msgid "Photo"
msgstr "ছবি"
-#: ../libpurple/protocols/jabber/buddy.c:1400
msgid "Logo"
msgstr "লোগো"
# tithi
-#: ../libpurple/protocols/jabber/buddy.c:1971
msgid "Un-hide From"
msgstr "এর হতে উন্মোচিত"
# tithi
-#: ../libpurple/protocols/jabber/buddy.c:1975
msgid "Temporarily Hide From"
msgstr "এর হতে সাময়িকভাবে লুকান"
#. && NOT ME
-#: ../libpurple/protocols/jabber/buddy.c:1983
msgid "Cancel Presence Notification"
msgstr "উপস্থিতির প্রজ্ঞাপন বাতিল করুন"
# tithi
-#: ../libpurple/protocols/jabber/buddy.c:1990
msgid "(Re-)Request authorization"
msgstr "(পুনরায়-)অনুরোধের প্রাপ্তাধিকার"
@@ -5794,54 +4076,37 @@ msgstr "(পুনরায়-)অনুরোধের প্রাপ্ত
#. if(NOT ME)
#. shouldn't this just happen automatically when the buddy is
#. removed?
-#: ../libpurple/protocols/jabber/buddy.c:1999
msgid "Unsubscribe"
msgstr "অংশীদারী ত্যাগ করুন"
-#: ../libpurple/protocols/jabber/buddy.c:2014
msgid "Log In"
msgstr "লগইন করুন"
-#: ../libpurple/protocols/jabber/buddy.c:2018
msgid "Log Out"
msgstr "লগ আউট করুন"
-#: ../libpurple/protocols/jabber/buddy.c:2064
-#: ../libpurple/protocols/jabber/jabber.c:1808
msgid "Chatty"
msgstr "আড্ডাবাজ"
# tithi
-#: ../libpurple/protocols/jabber/buddy.c:2068
msgid "Extended Away"
msgstr "আরও বর্ধিত করুন"
-#: ../libpurple/protocols/jabber/buddy.c:2070
-#: ../libpurple/protocols/jabber/jabber.c:1850
-#: ../libpurple/protocols/oscar/oscar.c:744
-#: ../libpurple/protocols/oscar/oscar.c:6029
-#: ../libpurple/protocols/sametime/sametime.c:3354
msgid "Do Not Disturb"
msgstr "বিরক্ত করবেন না"
# tithi
-#: ../libpurple/protocols/jabber/buddy.c:2237
msgid "JID"
msgstr "JID"
-#: ../libpurple/protocols/jabber/buddy.c:2241
-#: ../libpurple/protocols/jabber/buddy.c:2430
-#: ../libpurple/protocols/oscar/oscar.c:3917
msgid "Last Name"
msgstr "শেষ নাম"
-#: ../libpurple/protocols/jabber/buddy.c:2273
msgid "The following are the results of your search"
msgstr "নিম্নোক্ত আপনার অনুসন্ধানের ফলাফল"
# fix-me tithi
#. current comment from Jabber User Directory users.jabber.org
-#: ../libpurple/protocols/jabber/buddy.c:2358
msgid ""
"Find a contact by entering the search criteria in the given fields. Note: "
"Each field supports wild card searches (%)"
@@ -5849,179 +4114,121 @@ msgstr ""
"প্রদত্ত ক্ষেত্রে সন্ধান বৈশিষ্ট্য প্রবেশ করার মাধ্যমে একটি যোগাযোগ খুঁজুন। নোট: প্রত্যেক "
"ক্ষেত্র ওয়াইল্ড কার্ড অনুসন্ধানসমূহ সমর্থন করে (%)"
-#: ../libpurple/protocols/jabber/buddy.c:2378
msgid "Directory Query Failed"
msgstr "নির্দেশিকা জিজ্ঞাসা ব্যর্থ হয়েছে"
-#: ../libpurple/protocols/jabber/buddy.c:2379
msgid "Could not query the directory server."
msgstr "নির্দেশক সার্ভার সম্পর্কে প্রশ্ন করেনি"
#. Try to translate the message (see static message
#. list in jabber_user_dir_comments[])
-#: ../libpurple/protocols/jabber/buddy.c:2413
#, c-format
msgid "Server Instructions: %s"
msgstr "সার্ভার নিয়মাবলী: %s"
-#: ../libpurple/protocols/jabber/buddy.c:2420
msgid "Fill in one or more fields to search for any matching XMPP users."
msgstr "যেকোনো সমন্বয়করণ XMPP ব্যবহারকারীর জন্য খুঁজতে এক বা একাধিক ক্ষেত্র পূরন করুন।"
-#: ../libpurple/protocols/jabber/buddy.c:2440
-#: ../libpurple/protocols/novell/novell.c:1497
-#: ../libpurple/protocols/oscar/oscar.c:3920
-#: ../libpurple/protocols/oscar/oscar.c:3929
msgid "Email Address"
msgstr "ই-মেইল ঠিকানা"
-#: ../libpurple/protocols/jabber/buddy.c:2449
-#: ../libpurple/protocols/jabber/buddy.c:2450
msgid "Search for XMPP users"
msgstr "XMPP ব্যবহারকারীর জন্য অনুসন্ধান করুন"
#. "Search"
-#: ../libpurple/protocols/jabber/buddy.c:2451
-#: ../libpurple/protocols/qq/group.c:111
-#: ../libpurple/protocols/sametime/sametime.c:5671
-#: ../pidgin/plugins/gevolution/add_buddy_dialog.c:474
-#: ../pidgin/plugins/gevolution/assoc-buddy.c:356
msgid "Search"
msgstr "খুঁজুন"
-#: ../libpurple/protocols/jabber/buddy.c:2466
msgid "Invalid Directory"
msgstr "অবৈধ নির্দেশিকা"
-#: ../libpurple/protocols/jabber/buddy.c:2483
msgid "Enter a User Directory"
msgstr "একটি ব্যবহারকারীর নির্দেশিকা প্রবেশ করান"
-#: ../libpurple/protocols/jabber/buddy.c:2484
msgid "Select a user directory to search"
msgstr "খোঁজার জন্য একটি ব্যবহারকারী নির্দেশিকা নির্বাচন করুন"
-#: ../libpurple/protocols/jabber/buddy.c:2487
msgid "Search Directory"
msgstr "অনুসন্ধান নির্দেশিকা"
-#: ../libpurple/protocols/jabber/chat.c:42
-#: ../libpurple/protocols/oscar/oscar.c:5540
-#: ../libpurple/protocols/yahoo/yahoochat.c:1057
msgid "_Room:"
msgstr "কক্ষ: (_R)"
-#: ../libpurple/protocols/jabber/chat.c:48
msgid "_Server:"
msgstr "সার্ভার: (_S)"
-#: ../libpurple/protocols/jabber/chat.c:54
msgid "_Handle:"
msgstr "হ্যান্ডেল: (_H)"
-#: ../libpurple/protocols/jabber/chat.c:232
#, c-format
msgid "%s is not a valid room name"
msgstr "%s বৈধ কক্ষের নাম নয়"
-#: ../libpurple/protocols/jabber/chat.c:233
msgid "Invalid Room Name"
msgstr "অবৈধ কক্ষের নাম"
-#: ../libpurple/protocols/jabber/chat.c:239
#, c-format
msgid "%s is not a valid server name"
msgstr "%s বৈধ সার্ভার নাম নয়"
-#: ../libpurple/protocols/jabber/chat.c:240
-#: ../libpurple/protocols/jabber/chat.c:241
msgid "Invalid Server Name"
msgstr "অবৈধ সার্ভার নাম"
-#: ../libpurple/protocols/jabber/chat.c:246
#, c-format
msgid "%s is not a valid room handle"
msgstr "%s বৈধ কক্ষ নিয়ন্ত্রণ নয়"
-#: ../libpurple/protocols/jabber/chat.c:247
-#: ../libpurple/protocols/jabber/chat.c:248
msgid "Invalid Room Handle"
msgstr "অবৈধ কক্ষ নিয়ন্ত্রণ"
-#: ../libpurple/protocols/jabber/chat.c:422
msgid "Configuration error"
msgstr "বিন্যাসন ত্রুটি"
-#: ../libpurple/protocols/jabber/chat.c:431
-#: ../libpurple/protocols/jabber/chat.c:574
msgid "Unable to configure"
msgstr "বিন্যাস করতে অক্ষম"
-#: ../libpurple/protocols/jabber/chat.c:446
msgid "Room Configuration Error"
msgstr "কক্ষ বিন্যাসন ত্রুটি"
# tithi
-#: ../libpurple/protocols/jabber/chat.c:447
msgid "This room is not capable of being configured"
msgstr "এই কক্ষটি বিন্যাসিত হতে সক্ষম নয়"
-#: ../libpurple/protocols/jabber/chat.c:496
-#: ../libpurple/protocols/jabber/chat.c:565
msgid "Registration error"
msgstr "নিবন্ধণ ত্রুটি"
# tithi
-#: ../libpurple/protocols/jabber/chat.c:653
msgid "Nick changing not supported in non-MUC chatrooms"
msgstr "ডাকনাম পরিবর্তন MUC-বহিঃস্থ আড্ডারুমে সমর্থিত নয়"
-#: ../libpurple/protocols/jabber/chat.c:705
-#: ../libpurple/protocols/jabber/chat.c:716
-#: ../libpurple/protocols/silc/ops.c:1473
-#: ../libpurple/protocols/silc10/ops.c:1451
msgid "Error retrieving room list"
msgstr "রুম তালিকা উদ্ধার করার ত্রুটি"
-#: ../libpurple/protocols/jabber/chat.c:764
msgid "Invalid Server"
msgstr "অবৈধ সার্ভার"
-#: ../libpurple/protocols/jabber/chat.c:808
msgid "Enter a Conference Server"
msgstr "একটি কনফারেন্স সার্ভার প্রবেশ করান"
-#: ../libpurple/protocols/jabber/chat.c:809
msgid "Select a conference server to query"
msgstr "অনুসন্ধানের জন্য একটি কনফারেন্স সার্ভার প্রবেশ করান"
-#: ../libpurple/protocols/jabber/chat.c:812
msgid "Find Rooms"
msgstr "কক্ষ খুঁজুন"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:185
msgid "You require encryption, but it is not available on this server."
msgstr "আপনার সঙ্কেতায়ন প্রয়োজন, কিন্তু এটি এই সার্ভারটিতে সহজলভ্য নয়।"
-#: ../libpurple/protocols/jabber/jabber.c:309
-#: ../libpurple/protocols/jabber/jabber.c:334
msgid "Write error"
msgstr "লিখন ত্রুটি"
-#: ../libpurple/protocols/jabber/jabber.c:452
msgid "Ping timeout"
msgstr "পিঙ্গ সময়-উত্তীর্ণ হয়েছে"
-#: ../libpurple/protocols/jabber/jabber.c:506
-#: ../libpurple/protocols/jabber/jabber.c:551
msgid "Read Error"
msgstr "পাঠ ত্রুটি"
-#: ../libpurple/protocols/jabber/jabber.c:592
-#: ../libpurple/protocols/oscar/flap_connection.c:450
-#: ../libpurple/protocols/yahoo/yahoo.c:2613
-#: ../libpurple/protocols/yahoo/yahoo.c:2645
#, c-format
msgid ""
"Could not establish a connection with the server:\n"
@@ -6030,655 +4237,463 @@ msgstr ""
"সার্ভারের সাথে সংযোগ স্থাপন করতে পারে না:\n"
"%s"
-#: ../libpurple/protocols/jabber/jabber.c:656
msgid "Unable to create socket"
msgstr "সকেট তৈরী করতে অক্ষম"
-#: ../libpurple/protocols/jabber/jabber.c:729
-#: ../libpurple/protocols/jabber/jabber.c:1201
msgid "Invalid XMPP ID"
msgstr "অবৈধ XMPP ID"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:736
msgid "Invalid XMPP ID. Domain must be set."
msgstr "অবৈধ XMPP ID। ডোমেইন অবশ্যই নির্ধারণ করতে হবে।"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:801
#, c-format
msgid "Registration of %s@%s successful"
msgstr "%1s@%2s এর নিবন্ধন সফল"
-#: ../libpurple/protocols/jabber/jabber.c:807
#, c-format
msgid "Registration to %s successful"
msgstr "%s এ নিবন্ধন সফল হয়েছে"
-#: ../libpurple/protocols/jabber/jabber.c:809
-#: ../libpurple/protocols/jabber/jabber.c:810
msgid "Registration Successful"
msgstr "নিবন্ধন সফল হয়েছে"
-#: ../libpurple/protocols/jabber/jabber.c:818
-#: ../libpurple/protocols/jabber/jabber.c:819
msgid "Registration Failed"
msgstr "নিবন্ধন ব্যর্থ হয়েছে"
-#: ../libpurple/protocols/jabber/jabber.c:837
#, c-format
msgid "Registration from %s successfully removed"
msgstr "%s হতে নিবন্ধন সফলভাবে অপসারণ করা হয়েছে"
-#: ../libpurple/protocols/jabber/jabber.c:839
-#: ../libpurple/protocols/jabber/jabber.c:840
msgid "Unregistration Successful"
msgstr "অনিবন্ধন সফল হয়েছে"
-#: ../libpurple/protocols/jabber/jabber.c:848
-#: ../libpurple/protocols/jabber/jabber.c:849
msgid "Unregistration Failed"
msgstr "অনিবন্ধন ব্যর্থ হয়েছে"
-#: ../libpurple/protocols/jabber/jabber.c:1015
-#: ../libpurple/protocols/jabber/jabber.c:1016
msgid "Already Registered"
msgstr "ইতোমধ্যে নিবন্ধিত"
-#: ../libpurple/protocols/jabber/jabber.c:1103
-#: ../libpurple/protocols/oscar/oscar.c:3980
-#: ../libpurple/protocols/oscar/oscar.c:3988
msgid "State"
msgstr "রাজ্য"
-#: ../libpurple/protocols/jabber/jabber.c:1107
msgid "Postal code"
msgstr "ডাক সংকেত"
-#: ../libpurple/protocols/jabber/jabber.c:1111
-#: ../libpurple/protocols/silc/ops.c:1049
-#: ../libpurple/protocols/silc/silc.c:1007
-#: ../libpurple/protocols/silc/util.c:563
-#: ../libpurple/protocols/silc10/ops.c:1069
-#: ../libpurple/protocols/silc10/silc.c:708
-#: ../libpurple/protocols/silc10/util.c:557
msgid "Phone"
msgstr "ফোন"
-#: ../libpurple/protocols/jabber/jabber.c:1119
msgid "Date"
msgstr "তারিখ"
-#: ../libpurple/protocols/jabber/jabber.c:1123
msgid "Unregister"
msgstr "অনিবন্ধন"
-#: ../libpurple/protocols/jabber/jabber.c:1130
msgid ""
"Please fill out the information below to change your account registration."
msgstr "আপনার একাউন্ট নিবন্ধন পরিবর্তন করতে অনুগ্রহ করে নিচের তথ্য পূরণ করুন।"
-#: ../libpurple/protocols/jabber/jabber.c:1133
msgid "Please fill out the information below to register your new account."
msgstr "আপনার নতুন একাউন্ট নিবন্ধন পরিবর্তন করতে অনুগ্রহ করে নিচের তথ্য পূরণ করুন।"
-#: ../libpurple/protocols/jabber/jabber.c:1141
-#: ../libpurple/protocols/jabber/jabber.c:1142
msgid "Register New XMPP Account"
msgstr "নতুন XMPP একাউন্ট নিবন্ধন করুন"
-#: ../libpurple/protocols/jabber/jabber.c:1143
-#: ../libpurple/protocols/jabber/jabber.c:1152
msgid "Register"
msgstr "নিবন্ধন করুন"
-#: ../libpurple/protocols/jabber/jabber.c:1148
#, c-format
msgid "Change Account Registration at %s"
msgstr "%s এ একাউন্ট নিবন্ধন পরিবর্তন করুন"
-#: ../libpurple/protocols/jabber/jabber.c:1149
#, c-format
msgid "Register New Account at %s"
msgstr "%s এ নতুন একাউন্ট নিবন্ধন করুন"
-#: ../libpurple/protocols/jabber/jabber.c:1152
msgid "Change Registration"
msgstr "নিবন্ধন পরিবর্তন করুন"
-#: ../libpurple/protocols/jabber/jabber.c:1248
-#: ../libpurple/protocols/jabber/jabber.c:1249
msgid "Error unregistering account"
msgstr "একাউন্ট নিবন্ধনহীন করার ত্রুটি"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:1254
-#: ../libpurple/protocols/jabber/jabber.c:1255
msgid "Account successfully unregistered"
msgstr "একাউন্ট সফলভাবে অনিবন্ধীত করা হয়েছে"
-#: ../libpurple/protocols/jabber/jabber.c:1427
msgid "Initializing Stream"
msgstr "স্ট্রীম প্রস্তুত করছে"
-#: ../libpurple/protocols/jabber/jabber.c:1432
msgid "Initializing SSL/TLS"
msgstr "SSL/TLS প্রস্তুত করছে"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:1436
-#: ../libpurple/protocols/msn/session.c:412
-#: ../libpurple/protocols/msnp9/session.c:374
msgid "Authenticating"
msgstr "প্রমাণীকরণ"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:1454
msgid "Re-initializing Stream"
msgstr "স্ট্রীম পুনরায় প্রস্তুত করছে"
-#: ../libpurple/protocols/jabber/jabber.c:1536
-#: ../libpurple/protocols/jabber/jabber.c:1537
msgid "Server doesn't support blocking"
msgstr "সার্ভার আবদ্ধকরণ সমর্থন করে না"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:1648
-#: ../libpurple/protocols/jabber/jabber.c:2105
-#: ../libpurple/protocols/jabber/jabber.c:2148
-#: ../libpurple/protocols/jabber/jabber.c:2186
-#: ../libpurple/protocols/oscar/oscar.c:908
-#: ../libpurple/protocols/oscar/oscar.c:5823
msgid "Not Authorized"
msgstr "অনুমোদিত নয়"
-#: ../libpurple/protocols/jabber/jabber.c:1695
msgid "Both"
msgstr "উভয়"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:1697
msgid "From (To pending)"
msgstr "হতে (অমীমাংসিত)"
-#: ../libpurple/protocols/jabber/jabber.c:1699
msgid "From"
msgstr "হতে"
-#: ../libpurple/protocols/jabber/jabber.c:1702
msgid "To"
msgstr "প্রতি"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:1704
msgid "None (To pending)"
msgstr "কোনটি নয় (অমীমাংসিত)"
-#: ../libpurple/protocols/jabber/jabber.c:1706
-#: ../pidgin/plugins/gevolution/eds-utils.c:73
-#: ../pidgin/plugins/gevolution/eds-utils.c:86
msgid "None"
msgstr "কোনটি না"
-#: ../libpurple/protocols/jabber/jabber.c:1709
msgid "Subscription"
msgstr "শেয়ারকরণ"
-#: ../libpurple/protocols/jabber/jabber.c:1719
-#: ../libpurple/protocols/jabber/jabber.c:1722
-#: ../libpurple/protocols/jabber/jabber.c:1797
-#: ../libpurple/protocols/jabber/jabber.c:1811
-#: ../libpurple/protocols/jabber/jabber.c:1825
-#: ../libpurple/protocols/jabber/jabber.c:1839
-#: ../libpurple/protocols/jabber/jabber.c:1853
-#: ../libpurple/protocols/jabber/usermood.c:181
-#: ../libpurple/protocols/silc/buddy.c:1572
-#: ../libpurple/protocols/silc/ops.c:1225
-#: ../libpurple/protocols/silc10/buddy.c:1572
-#: ../libpurple/protocols/silc10/ops.c:1207
msgid "Mood"
msgstr "অবস্থা"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:1731
-#: ../libpurple/protocols/msn/msn.c:715
msgid "Now Listening"
msgstr "এখন শুনছে"
-#: ../libpurple/protocols/jabber/jabber.c:1798
-#: ../libpurple/protocols/jabber/jabber.c:1812
-#: ../libpurple/protocols/jabber/jabber.c:1826
-#: ../libpurple/protocols/jabber/jabber.c:1840
-#: ../libpurple/protocols/jabber/jabber.c:1854
msgid "Mood Text"
msgstr "মোড পাঠ"
-#: ../libpurple/protocols/jabber/jabber.c:1800
-#: ../libpurple/protocols/jabber/jabber.c:1814
-#: ../libpurple/protocols/jabber/jabber.c:1828
-#: ../libpurple/protocols/jabber/jabber.c:1842
-#: ../libpurple/protocols/jabber/jabber.c:1856
msgid "Allow Buzz"
msgstr "বাজ অনুমোদন করুন"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:1874
msgid "Tune Artist"
msgstr "টিউন শিল্পী"
-#: ../libpurple/protocols/jabber/jabber.c:1875
msgid "Tune Title"
msgstr "টিউন শিরোনাম"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:1876
msgid "Tune Album"
msgstr "টিউন অ্যালবাম"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:1877
msgid "Tune Genre"
msgstr "টিউনের ধরন"
-#: ../libpurple/protocols/jabber/jabber.c:1878
msgid "Tune Comment"
msgstr "টিউনের মন্তব্য"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:1879
msgid "Tune Track"
msgstr "টিউন গতিপথ"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:1880
msgid "Tune Time"
msgstr "টিউন সময়"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:1881
msgid "Tune Year"
msgstr "টিউন সন"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:1882
msgid "Tune URL"
msgstr "টিউন URL"
-#: ../libpurple/protocols/jabber/jabber.c:1898
msgid "Password Changed"
msgstr "গুপ্তসংকেত পরিবর্তিত হয়েছে"
-#: ../libpurple/protocols/jabber/jabber.c:1899
msgid "Your password has been changed."
msgstr "আপনার গুপ্তসংকেত পরিবর্তিত হয়েছে।"
-#: ../libpurple/protocols/jabber/jabber.c:1905
-#: ../libpurple/protocols/jabber/jabber.c:1906
msgid "Error changing password"
msgstr "গুপ্তসংকেত পরিবর্তনে ত্রুটি"
-#: ../libpurple/protocols/jabber/jabber.c:1963
msgid "Password (again)"
msgstr "গুপ্তসংকেত (আবার)"
-#: ../libpurple/protocols/jabber/jabber.c:1969
-#: ../libpurple/protocols/jabber/jabber.c:1970
msgid "Change XMPP Password"
msgstr "XMPP গুপ্তসংকেত পরিবর্তন করুন"
-#: ../libpurple/protocols/jabber/jabber.c:1970
msgid "Please enter your new password"
msgstr "আপনার নতুন গুপ্তসংকেতটি প্রবেশ করান"
-#: ../libpurple/protocols/jabber/jabber.c:1984
-#: ../libpurple/protocols/oscar/oscar.c:6612
-#: ../libpurple/protocols/silc/silc.c:1328
-#: ../libpurple/protocols/silc10/silc.c:1029
msgid "Set User Info..."
msgstr "ব্যবহারকারীর তথ্য নির্ধারণ করুন..."
#. if (js->protocol_options & CHANGE_PASSWORD) {
-#: ../libpurple/protocols/jabber/jabber.c:1989
-#: ../libpurple/protocols/oscar/oscar.c:6623
-#: ../libpurple/protocols/silc/silc.c:1324
-#: ../libpurple/protocols/silc10/silc.c:1025
msgid "Change Password..."
msgstr "গুপ্তসংকেত পরিবর্তন করুন..."
#. }
-#: ../libpurple/protocols/jabber/jabber.c:1994
msgid "Search for Users..."
msgstr "ব্যবহারকারীর জন্য খুঁজুন..."
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:2085
msgid "Bad Request"
msgstr "খারাপ অনুরোধ"
-#: ../libpurple/protocols/jabber/jabber.c:2087
msgid "Conflict"
msgstr "দ্বন্দ্ব"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:2089
msgid "Feature Not Implemented"
msgstr "বৈশিষ্ট্য এখনও বাস্তবায়িত হয়নি"
-#: ../libpurple/protocols/jabber/jabber.c:2091
msgid "Forbidden"
msgstr "নিষিদ্ধ"
-#: ../libpurple/protocols/jabber/jabber.c:2093
msgid "Gone"
msgstr "চলে গেছে"
-#: ../libpurple/protocols/jabber/jabber.c:2095
-#: ../libpurple/protocols/jabber/jabber.c:2176
msgid "Internal Server Error"
msgstr "অভ্যন্তরীণ সার্ভার ত্রুটি"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:2097
msgid "Item Not Found"
msgstr "বিষয়োপকরণ খুঁজে পাওয়া যায়নি"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:2099
msgid "Malformed XMPP ID"
msgstr "বিকৃত XMPP ID"
-#: ../libpurple/protocols/jabber/jabber.c:2101
msgid "Not Acceptable"
msgstr "গ্রহণযোগ্য নয়"
-#: ../libpurple/protocols/jabber/jabber.c:2103
msgid "Not Allowed"
msgstr "অনুমোদিত নয়"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:2107
msgid "Payment Required"
msgstr "অর্থপ্রদান প্রয়োজন"
-#: ../libpurple/protocols/jabber/jabber.c:2109
msgid "Recipient Unavailable"
msgstr "প্রাপক অপ্রাপ্য"
-#: ../libpurple/protocols/jabber/jabber.c:2113
msgid "Registration Required"
msgstr "নিবন্ধন প্রয়োজন"
-#: ../libpurple/protocols/jabber/jabber.c:2115
msgid "Remote Server Not Found"
msgstr "দূরবর্তী সার্ভার খুঁজে পাওয়া যায়নি"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:2117
msgid "Remote Server Timeout"
msgstr "দূরবর্তী সার্ভারের সময় উত্তীর্ণ হয়েছে"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:2119
msgid "Server Overloaded"
msgstr "সার্ভার অতিরিক্ত বোঝাইকৃত"
-#: ../libpurple/protocols/jabber/jabber.c:2121
msgid "Service Unavailable"
msgstr "পরিসেবা অপ্রাপ্য"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:2123
msgid "Subscription Required"
msgstr "শেয়ারকরণ প্রয়োজন"
-#: ../libpurple/protocols/jabber/jabber.c:2125
msgid "Unexpected Request"
msgstr "অপ্রত্যাশিত অনুরোধ"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:2133
msgid "Authorization Aborted"
msgstr "প্রাপ্তাধিকার বাতিলকৃত"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:2135
msgid "Incorrect encoding in authorization"
msgstr "প্রাপ্তাধিকারে ত্রুটিপূর্ণ সঙ্কেতায়ন"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:2137
msgid "Invalid authzid"
msgstr "অবৈধ প্রাপ্তাধিকার"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:2139
msgid "Invalid Authorization Mechanism"
msgstr "অবৈধ প্রাপ্তাধিকার কৌশল"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:2142
msgid "Authorization mechanism too weak"
msgstr "প্রাপ্তাধিকার কৌশল খুব দূর্বল"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:2150
msgid "Temporary Authentication Failure"
msgstr "সাময়িক প্রমাণীকরণ ব্যর্থ"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:2153
msgid "Authentication Failure"
msgstr "প্রমাণীকরণ ব্যর্থ"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:2161
msgid "Bad Format"
msgstr "খারাপ বিন্যাস"
-#: ../libpurple/protocols/jabber/jabber.c:2163
msgid "Bad Namespace Prefix"
msgstr "খারাপ নাম-পরিসরের উপপদ"
-#: ../libpurple/protocols/jabber/jabber.c:2166
msgid "Resource Conflict"
msgstr "সম্পদ দ্বন্দ্ব তৈরি করে"
-#: ../libpurple/protocols/jabber/jabber.c:2168
-#: ../libpurple/protocols/silc/silc.c:351
-#: ../libpurple/protocols/silc10/ops.c:1725
msgid "Connection Timeout"
msgstr "সংযোগ সময় উত্তীর্ণ হয়েছে"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:2170
msgid "Host Gone"
msgstr "হোস্ট চলে গেছে"
-#: ../libpurple/protocols/jabber/jabber.c:2172
msgid "Host Unknown"
msgstr "অজানা হোস্ট"
-#: ../libpurple/protocols/jabber/jabber.c:2174
msgid "Improper Addressing"
msgstr "অনুপযুক্ত নির্দেশকরণ"
-#: ../libpurple/protocols/jabber/jabber.c:2178
msgid "Invalid ID"
msgstr "অবৈধ আইডি"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:2180
msgid "Invalid Namespace"
msgstr "অবৈধ নামপরিসর"
-#: ../libpurple/protocols/jabber/jabber.c:2182
msgid "Invalid XML"
msgstr "অবৈধ এক্সএমএল"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:2184
msgid "Non-matching Hosts"
msgstr "সমন্বয়হীন হোস্ট"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:2188
msgid "Policy Violation"
msgstr "নীতিমালা লঙ্ঘন"
-#: ../libpurple/protocols/jabber/jabber.c:2190
msgid "Remote Connection Failed"
msgstr "দূরবর্তী সংযোগ ব্যর্থ হয়েছে"
-#: ../libpurple/protocols/jabber/jabber.c:2192
msgid "Resource Constraint"
msgstr "সম্পদের সীমাবদ্ধতা"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:2194
msgid "Restricted XML"
msgstr "নিয়ন্ত্রিত XML"
-#: ../libpurple/protocols/jabber/jabber.c:2196
msgid "See Other Host"
msgstr "অন্যান্য হোষ্ট দেখুন"
-#: ../libpurple/protocols/jabber/jabber.c:2198
msgid "System Shutdown"
msgstr "সিস্টেম বন্ধ করুন"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:2200
msgid "Undefined Condition"
msgstr "অনির্ধারিত শর্ত"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:2202
msgid "Unsupported Encoding"
msgstr "অসমর্থিত সঙ্কেতায়ন"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:2204
msgid "Unsupported Stanza Type"
msgstr "অসমর্থিত স্ট্যানজা ধরন"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:2206
msgid "Unsupported Version"
msgstr "অসমর্থিত সংস্করণ"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:2208
msgid "XML Not Well Formed"
msgstr "XMLসঠিক ভাবে গঠিত নয়"
-#: ../libpurple/protocols/jabber/jabber.c:2210
msgid "Stream Error"
msgstr "স্ট্রীম ত্রুটি"
-#: ../libpurple/protocols/jabber/jabber.c:2295
#, c-format
msgid "Unable to ban user %s"
msgstr "%s ব্যবহারকারীকে নিষিদ্ধ করতে অক্ষম"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:2315
#, c-format
msgid "Unknown affiliation: \"%s\""
msgstr "অজানা সম্পর্ক: \"%s\""
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:2320
#, c-format
msgid "Unable to affiliate user %s as \"%s\""
msgstr "%1s ব্যবহারকারীকে \"%2s\" হিসেবে সম্পর্কিত করতে অসমর্থ"
-#: ../libpurple/protocols/jabber/jabber.c:2339
#, c-format
msgid "Unknown role: \"%s\""
msgstr "অজানা ভূমিকা: \"%s\""
-#: ../libpurple/protocols/jabber/jabber.c:2344
#, c-format
msgid "Unable to set role \"%s\" for user: %s"
msgstr "ব্যবহারকারীর জন্য \"%1s\" ভূমিকা নির্ধারণ করতে ব্যর্থ: %2s"
-#: ../libpurple/protocols/jabber/jabber.c:2397
#, c-format
msgid "Unable to kick user %s"
msgstr "%s ব্যবহারকারীকে বের করে দিতে অক্ষম"
-#: ../libpurple/protocols/jabber/jabber.c:2428
#, c-format
msgid "Unable to ping user %s"
msgstr "%s ব্যবহারকারীকে পিঙ্গ করতে অক্ষম"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:2446
-#: ../libpurple/protocols/jabber/jabber.c:2457
#, c-format
msgid "Unable to buzz, because there is nothing known about user %s."
msgstr "বাজ দিতে ব্যর্থ, কারণ %s ব্যবহারকারীর সম্পর্কে কোনো কিছু জানা নেই।"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:2452
#, c-format
msgid "Unable to buzz, because user %s might be offline."
msgstr "বাজ দিতে ব্যর্থ, কারণ %s ব্যবহারকারীরা সম্ভবত অফলাইনে।"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:2483
#, c-format
msgid "Unable to buzz, because the user %s does not support it."
msgstr "বাজ দিতে ব্যর্থ, কারণ %s ব্যবহারকারী এটি সমর্থন করে না।"
#. Yahoo only supports one attention command: the 'buzz'.
#. This is index number YAHOO_BUZZ.
-#: ../libpurple/protocols/jabber/jabber.c:2503
-#: ../libpurple/protocols/yahoo/yahoo.c:4218
msgid "Buzz"
msgstr "বাজ"
-#: ../libpurple/protocols/jabber/jabber.c:2504
-#: ../libpurple/protocols/yahoo/yahoo.c:4219
#, c-format
msgid "%s has buzzed you!"
msgstr "%s আপনাকে বাজ দিয়েছে!"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:2504
-#: ../libpurple/protocols/yahoo/yahoo.c:4219
#, c-format
msgid "Buzzing %s..."
msgstr "%s বাজ দিচ্ছে..."
-#: ../libpurple/protocols/jabber/jabber.c:2535
msgid "config: Configure a chat room."
msgstr "বিন্যাস: একটি আড্ডার কক্ষ পছন্দসই বিন্যাস করুন।"
-#: ../libpurple/protocols/jabber/jabber.c:2539
msgid "configure: Configure a chat room."
msgstr "বিন্যাসন: একটি আড্ডার কক্ষ পছন্দসই বিন্যাস করুন।"
-#: ../libpurple/protocols/jabber/jabber.c:2548
msgid "part [room]: Leave the room."
msgstr "অংশ [কক্ষ]: কক্ষ ত্যাগ করুন।"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:2553
msgid "register: Register with a chat room."
msgstr "নিবন্ধন করুন: আড্ডা রুমের সাথে নিবন্ধন করুন।"
-#: ../libpurple/protocols/jabber/jabber.c:2559
msgid "topic [new topic]: View or change the topic."
msgstr "বিষয়বস্তু [নতুন বিষয়বস্তু]: বিষয়বস্তু প্রদর্শন অথবা পরিবর্তন করুন।"
-#: ../libpurple/protocols/jabber/jabber.c:2565
msgid "ban &lt;user&gt; [reason]: Ban a user from the room."
msgstr ""
"নিষিদ্ধ &lt;ব্যবহারকারী&2gt; [কারণ]: একজন ব্যবহারকারীকে কক্ষ থেকে নিষিদ্ধ করুন।"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:2571
msgid ""
"affiliate &lt;user&gt; &lt;owner|admin|member|outcast|none&gt;: Set a user's "
"affiliation with the room."
@@ -6687,7 +4702,6 @@ msgstr ""
"সঙ্গে একটি ব্যবহারকারীর সম্পর্ক নির্ধারণ করুন।"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:2577
msgid ""
"role &lt;user&gt; &lt;moderator|participant|visitor|none&gt;: Set a user's "
"role in the room."
@@ -6695,23 +4709,19 @@ msgstr ""
"ভূমিকা &1lt;ব্যবহারকারী&2gt; &3lt;সমন্বয়জ্ঞ|অংশগ্রহনকারী|পরিদর্শক|কেউনা&4gt;: কক্ষে "
"ব্যবহারকারীর ভূমিকা নির্ধারণ করুন।"
-#: ../libpurple/protocols/jabber/jabber.c:2583
msgid "invite &lt;user&gt; [message]: Invite a user to the room."
msgstr ""
"আমন্ত্রণ &1lt;ব্যবহাকারী&2gt; [বার্তা]: একজন ব্যবহারকারীকে কক্ষে আমন্ত্রণ জানান"
-#: ../libpurple/protocols/jabber/jabber.c:2589
msgid "join: &lt;room&gt; [password]: Join a chat on this server."
msgstr "যোগ দিন: &1lt;কক্ষ&2gt; [গুপ্তসঙ্কেত]: এই সার্ভারের একটি আড্ডায় অংশ নিন।"
-#: ../libpurple/protocols/jabber/jabber.c:2595
msgid "kick &lt;user&gt; [reason]: Kick a user from the room."
msgstr ""
"বের করে দিন &1lt;ব্যবহারকারী&2gt; [কারণ]: কক্ষ থেকে একজন ব্যবহারকারীকে বের করে "
"দিন।"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:2600
msgid ""
"msg &lt;user&gt; &lt;message&gt;: Send a private message to another user."
msgstr ""
@@ -6719,14 +4729,11 @@ msgstr ""
"বার্তা পাঠান।"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:2606
msgid "ping &lt;jid&gt;:\tPing a user/component/server."
msgstr ""
"ping &lt;jid&gt;: একজন ব্যবহারকারী/উপকরণ/সার্ভারকে পিঙ্গ করুন।"
# tithi
-#: ../libpurple/protocols/jabber/jabber.c:2611
-#: ../libpurple/protocols/yahoo/yahoo.c:4242
msgid "buzz: Buzz a user to get their attention"
msgstr "বাজ: ব্যবহারকারীকে তার মনযোগ পেতে বাজ দিন"
@@ -6740,110 +4747,83 @@ msgstr "বাজ: ব্যবহারকারীকে তার মনয
#. *< version
#. * summary
#. * description
-#: ../libpurple/protocols/jabber/libxmpp.c:172
-#: ../libpurple/protocols/jabber/libxmpp.c:174
msgid "XMPP Protocol Plugin"
msgstr "XMPP প্রটোকল প্লাগইন"
#. Translators: 'domain' is used here in the context of Internet domains, e.g. pidgin.im
-#: ../libpurple/protocols/jabber/libxmpp.c:208 ../pidgin/gtkaccount.c:535
msgid "Domain"
msgstr "ডোমেইন"
# tithi
-#: ../libpurple/protocols/jabber/libxmpp.c:216
msgid "Require SSL/TLS"
msgstr "SSL/TSL প্রয়োজন"
# tithi
-#: ../libpurple/protocols/jabber/libxmpp.c:220
msgid "Force old (port 5223) SSL"
msgstr "পুরাতন (পোর্ট ৫২২৩) SSL কে চাপ দিন"
# tithi
-#: ../libpurple/protocols/jabber/libxmpp.c:225
msgid "Allow plaintext auth over unencrypted streams"
msgstr "অসঙ্কেতায়িত স্ট্রীমে সরল-পাঠ অধিকার অনুমোদন করুন"
-#: ../libpurple/protocols/jabber/libxmpp.c:230
-#: ../libpurple/protocols/myspace/myspace.c:3630
-#: ../libpurple/protocols/simple/simple.c:2147
msgid "Connect port"
msgstr "সংযোগ পোর্ট"
#. TODO: default to automatically try different ports. Make the user be
#. * able to set the first port to try (like LastConnectedPort in Windows client).
#. Account options
-#: ../libpurple/protocols/jabber/libxmpp.c:234
-#: ../libpurple/protocols/myspace/myspace.c:3627
-#: ../libpurple/protocols/silc/silc.c:2177
-#: ../libpurple/protocols/silc10/silc.c:1900
msgid "Connect server"
msgstr "সংযোগ সার্ভার"
-#: ../libpurple/protocols/jabber/libxmpp.c:239
msgid "File transfer proxies"
msgstr "ফাইল স্থানান্তরণ প্রক্সি"
# tithi
#. this should probably be part of global smiley theme settings later on,
#. shared with MSN
-#: ../libpurple/protocols/jabber/libxmpp.c:248
msgid "Show Custom Smileys"
msgstr "স্বনির্বাচিত স্মাইলিগুলো প্রদর্শন করুন"
-#: ../libpurple/protocols/jabber/message.c:110
#, c-format
msgid "%s has left the conversation."
msgstr "%s কথোপকথন ত্যাগ করেছে।"
-#: ../libpurple/protocols/jabber/message.c:166
#, c-format
msgid "Message from %s"
msgstr "%s হতে বার্তা"
-#: ../libpurple/protocols/jabber/message.c:230
#, c-format
msgid "%s has set the topic to: %s"
msgstr "%1s বিষয়বস্তু নির্ধারণ করেছেন: %2s"
-#: ../libpurple/protocols/jabber/message.c:232
#, c-format
msgid "The topic is: %s"
msgstr "বিষয়বস্তু হলো: %s"
-#: ../libpurple/protocols/jabber/message.c:280
#, c-format
msgid "Message delivery to %s failed: %s"
msgstr "%1s এ বার্তা পাঠানো ব্যর্থ হয়েছে: %2s"
-#: ../libpurple/protocols/jabber/message.c:283
msgid "XMPP Message Error"
msgstr "XMPP বার্তা ত্রুটি"
# tithi
-#: ../libpurple/protocols/jabber/message.c:589
#, c-format
msgid "(Code %s)"
msgstr "(কোড %s)"
# tithi
-#: ../libpurple/protocols/jabber/parser.c:251
msgid "XML Parse error"
msgstr "XML পার্স ত্রুটি"
# tithi
-#: ../libpurple/protocols/jabber/presence.c:445
msgid "Unknown Error in presence"
msgstr "বর্তমানে অজানা ত্রুটি"
-#: ../libpurple/protocols/jabber/presence.c:528
-#: ../libpurple/protocols/jabber/presence.c:529
msgid "Create New Room"
msgstr "নতুন কক্ষ তৈরী করুন"
# tithi
-#: ../libpurple/protocols/jabber/presence.c:530
msgid ""
"You are creating a new room. Would you like to configure it, or accept the "
"default settings?"
@@ -6851,144 +4831,103 @@ msgstr ""
"আপনি একটি নতুন কক্ষ তৈরি করছেন। আপনি কি এটি বিন্যাস করতে আগ্রহী, বা পূর্বনির্ধারিত "
"বিন্যাসনসমূহ গ্রহণ করবেন?"
-#: ../libpurple/protocols/jabber/presence.c:536
msgid "_Configure Room"
msgstr "কক্ষ বিন্যাস করুন (_C)"
-#: ../libpurple/protocols/jabber/presence.c:537
msgid "_Accept Defaults"
msgstr "পূর্বনির্ধারিত গ্রহণ (_A)"
-#: ../libpurple/protocols/jabber/presence.c:579
#, c-format
msgid "Error joining chat %s"
msgstr "%s আড্ডায় অংশগ্রহনের ত্রুটি"
-#: ../libpurple/protocols/jabber/presence.c:582
#, c-format
msgid "Error in chat %s"
msgstr "%s আড্ডায় ত্রুটি"
# tithi
-#: ../libpurple/protocols/jabber/si.c:1003
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
msgstr "%s এ ফাইল পাঠাতে অক্ষম, ব্যবহাকারীরা ফাইল স্থানান্তর সমর্থন করে না"
-#: ../libpurple/protocols/jabber/si.c:1004
-#: ../libpurple/protocols/jabber/si.c:1005
-#: ../libpurple/protocols/jabber/si.c:1074
msgid "File Send Failed"
msgstr "ফাইল পাঠানো ব্যর্থ হয়েছে"
-#: ../libpurple/protocols/jabber/si.c:1067
#, c-format
msgid "Unable to send file to %s, invalid JID"
msgstr "%s এ ফাইল পাঠাতে সমর্থ ছিল না, অবৈধ JID"
-#: ../libpurple/protocols/jabber/si.c:1069
#, c-format
msgid "Unable to send file to %s, user is not online"
msgstr "%s এ ফাইল পাঠাতে সমর্থ ছিল না, ব্যবহারকারী অনলাইনে নেই"
-#: ../libpurple/protocols/jabber/si.c:1071
#, c-format
msgid "Unable to send file to %s, not subscribed to user presence"
msgstr "%s এ ফাইল পাঠাতে সমর্থ ছিল না, ব্যবহারকারী উপস্থিতিতে সম্মত নয়"
# fix me tithi
-#: ../libpurple/protocols/jabber/si.c:1086
#, c-format
msgid "Please select the resource of %s to which you would like to send a file"
msgstr ""
"অনুগ্রহ করে আপনি %s এর এমন একটি সম্পদ নির্বাচন করুন যাতে আপনি একটি ফাইল পাঠাতে চান"
-#: ../libpurple/protocols/jabber/si.c:1102
msgid "Select a Resource"
msgstr "একটি সম্পদ নির্বাচন করুন"
-#: ../libpurple/protocols/jabber/usermood.c:194
-#: ../libpurple/protocols/jabber/usermood.c:195
msgid "Edit User Mood"
msgstr "ব্যবহাকারীরর মোড সম্পাদন করুন"
# tithi
-#: ../libpurple/protocols/jabber/usermood.c:196
msgid "Please select your mood from the list."
msgstr "অনুগ্রহ করে তালিকা থেকে আপনার মোড নির্বাচন করুন।"
-#: ../libpurple/protocols/jabber/usermood.c:198
-#: ../libpurple/protocols/jabber/usernick.c:78
msgid "Set"
msgstr "নির্ধারন করুন"
-#: ../libpurple/protocols/jabber/usermood.c:206
msgid "Set Mood..."
msgstr "মোড নির্ধারন করুন..."
-#: ../libpurple/protocols/jabber/usernick.c:76
msgid "Set User Nickname"
msgstr "ব্যবহারকারীর ডাকনাম নির্ধারন করুন"
-#: ../libpurple/protocols/jabber/usernick.c:76
msgid "Please specify a new nickname for you."
msgstr "অনুগ্রহ করে আপনার জন্য নতুন ডাকনাম নির্দিষ্ট করুন।"
# tithi
-#: ../libpurple/protocols/jabber/usernick.c:77
msgid ""
"This information is visible to all contacts on your contact list, so choose "
"something appropriate."
msgstr ""
"এই তথ্যটি আপনার যোগাযোগ তালিকার সকল যোগাযোগে দৃশ্যমান, সুতরাং উপযুক্ত কিছু পছন্দ করুন।"
-#: ../libpurple/protocols/jabber/usernick.c:100
msgid "Set Nickname..."
msgstr "ডাকনাম নির্ধারণ করুন..."
-#: ../libpurple/protocols/jabber/xdata.c:379
msgid "Actions"
msgstr "কার্যসমূহ"
-#: ../libpurple/protocols/jabber/xdata.c:381
msgid "Select an action"
msgstr "একটি কার্য নির্বাচন করুন"
-#: ../libpurple/protocols/msn/contact.c:801
-msgid "Unable to retrieve MSN Address Book"
-msgstr "MSN ঠিকানা বই পুনরূদ্ধারে ব্যর্থ হয়েছে"
-
#. only notify the user about problems adding to the friends list
#. * maybe we should do something else for other lists, but it probably
#. * won't cause too many problems if we just ignore it
-#: ../libpurple/protocols/msn/contact.c:968
-#: ../libpurple/protocols/msn/contact.c:1076
-#: ../libpurple/protocols/msn/userlist.c:695
-#: ../libpurple/protocols/msnp9/userlist.c:653
#, c-format
msgid "Unable to add \"%s\"."
msgstr "\"%s\" যোগ করতে সমর্থ নয়।"
-#: ../libpurple/protocols/msn/contact.c:969
-#: ../libpurple/protocols/msn/contact.c:1077
msgid "Buddy Add error"
msgstr "বন্ধু যোগ করতে ত্রুটি"
-#: ../libpurple/protocols/msn/contact.c:970
-#: ../libpurple/protocols/msn/contact.c:1078
msgid "The username specified does not exist."
msgstr "উল্লেখিত ব্য়বহারকারীর নামটি বিদ্যমান নয়।"
# fix me tithi
-#: ../libpurple/protocols/msn/dialog.c:118
-#: ../libpurple/protocols/msnp9/dialog.c:110
#, c-format
msgid "Buddy list synchronization issue in %s (%s)"
msgstr "%1s (%2s) এ বন্ধু তালিকার এককালবর্তীকরণ বিষয়"
# tithi
-#: ../libpurple/protocols/msn/dialog.c:124
-#: ../libpurple/protocols/msnp9/dialog.c:116
#, c-format
msgid ""
"%s on the local list is inside the group \"%s\" but not on the server list. "
@@ -7000,8 +4939,6 @@ msgstr ""
# msgstr ""
# "স্থানীয় তালিকার %s গ্রুপ এ আছেন কিন্তু সার্ভার তালিকায় নেই।আপনি কি এই বন্ধুটিকে যোগ "
# "করতে চান?"
-#: ../libpurple/protocols/msn/dialog.c:132
-#: ../libpurple/protocols/msnp9/dialog.c:124
#, c-format
msgid ""
"%s is on the local list but not on the server list. Do you want this buddy "
@@ -7010,387 +4947,304 @@ msgstr ""
"%s স্থানীয় তালিকায় আছে কিন্তু সার্ভার তালিকায় নেই। আপনি কি এই বন্ধুটিকে যোগ করতে "
"চান?"
-#: ../libpurple/protocols/msn/error.c:36
-#: ../libpurple/protocols/msnp9/error.c:36
+#, c-format
msgid "Unable to parse message"
msgstr "বার্তা পার্স করা সম্ভব হয়নি"
-#: ../libpurple/protocols/msn/error.c:40
-#: ../libpurple/protocols/msnp9/error.c:41
+#, c-format
msgid "Syntax Error (probably a client bug)"
msgstr "বাক্যরীতি ত্রুটি (সম্ভবত ক্লায়েন্টের ভূল)"
-#: ../libpurple/protocols/msn/error.c:44
-#: ../libpurple/protocols/msnp9/error.c:46
+#, c-format
msgid "Invalid email address"
msgstr "অবৈধ ই‌-মেইল ঠিকানা"
-#: ../libpurple/protocols/msn/error.c:47
-#: ../libpurple/protocols/msnp9/error.c:49
+#, c-format
msgid "User does not exist"
msgstr "ব্যবহারকারী বিদ্যমান নয়"
# tithi
-#: ../libpurple/protocols/msn/error.c:50
-#: ../libpurple/protocols/msnp9/error.c:53
+#, c-format
msgid "Fully qualified domain name missing"
msgstr "সম্পূর্ণভাবে যোগ্য ডোমেইন নাম নিরুদ্দিষ্ট"
-#: ../libpurple/protocols/msn/error.c:53
-#: ../libpurple/protocols/msnp9/error.c:56
+#, c-format
msgid "Already logged in"
msgstr "ইতোমধ্যে লগইন করেছে"
-#: ../libpurple/protocols/msn/error.c:56
-#: ../libpurple/protocols/msnp9/error.c:59
+#, c-format
msgid "Invalid username"
msgstr "অবৈধ ব্যবহারকারীর নাম"
-#: ../libpurple/protocols/msn/error.c:59
-#: ../libpurple/protocols/msnp9/error.c:62
+#, c-format
msgid "Invalid friendly name"
msgstr "অবৈধ বন্ধুসুলভ নাম"
-#: ../libpurple/protocols/msn/error.c:62
-#: ../libpurple/protocols/msnp9/error.c:65
+#, c-format
msgid "List full"
msgstr "তালিকা পূর্ণ"
-#: ../libpurple/protocols/msn/error.c:65
-#: ../libpurple/protocols/msnp9/error.c:68
+#, c-format
msgid "Already there"
msgstr "ইতোমধ্যে সেখানে আছে"
-#: ../libpurple/protocols/msn/error.c:69
-#: ../libpurple/protocols/msnp9/error.c:72
+#, c-format
msgid "Not on list"
msgstr "তালিকায় নেই"
-#: ../libpurple/protocols/msn/error.c:72
-#: ../libpurple/protocols/msnp9/error.c:75
-#: ../libpurple/protocols/zephyr/zephyr.c:759
+#, c-format
msgid "User is offline"
msgstr "ব্যবহারকারী অফলাইনে"
-#: ../libpurple/protocols/msn/error.c:75
-#: ../libpurple/protocols/msnp9/error.c:78
+#, c-format
msgid "Already in the mode"
msgstr "ইতোমধ্যে পরিমন্ডলে আছে"
-#: ../libpurple/protocols/msn/error.c:79
-#: ../libpurple/protocols/msnp9/error.c:82
+#, c-format
msgid "Already in opposite list"
msgstr "ইতোমধ্যে বিপরীত তালিকায় আছে"
-#: ../libpurple/protocols/msn/error.c:83
-#: ../libpurple/protocols/msnp9/error.c:86
+#, c-format
msgid "Too many groups"
msgstr "অতিরিক্ত গ্রুপ"
-#: ../libpurple/protocols/msn/error.c:86
-#: ../libpurple/protocols/msnp9/error.c:89
+#, c-format
msgid "Invalid group"
msgstr "অবৈধ গ্রুপ"
-#: ../libpurple/protocols/msn/error.c:89
-#: ../libpurple/protocols/msnp9/error.c:92
+#, c-format
msgid "User not in group"
msgstr "ব্যবহারকারী গ্রুপে নেই"
-#: ../libpurple/protocols/msn/error.c:92
-#: ../libpurple/protocols/msnp9/error.c:95
+#, c-format
msgid "Group name too long"
msgstr "গ্রুপ নামটি অত্যন্ত দীর্ঘ"
-#: ../libpurple/protocols/msn/error.c:95
-#: ../libpurple/protocols/msnp9/error.c:98
+#, c-format
msgid "Cannot remove group zero"
msgstr "গ্রুপ জিরো মুছে ফেলতে পারে না"
-#: ../libpurple/protocols/msn/error.c:99
-#: ../libpurple/protocols/msnp9/error.c:103
+#, c-format
msgid "Tried to add a user to a group that doesn't exist"
msgstr "ব্যবহারকারীকে এমন একটি গ্রুপে যোগদানের চেষ্টা করা হয়েছে যা বিদ্যমান নেই"
-#: ../libpurple/protocols/msn/error.c:102
-#: ../libpurple/protocols/msnp9/error.c:107
+#, c-format
msgid "Switchboard failed"
msgstr "সুইচবোর্ড ব্যর্থ"
-#: ../libpurple/protocols/msn/error.c:106
-#: ../libpurple/protocols/msnp9/error.c:111
+#, c-format
msgid "Notify transfer failed"
msgstr "প্রজ্ঞাপন স্থানান্তর ব্যর্থ"
# tithi
-#: ../libpurple/protocols/msn/error.c:111
-#: ../libpurple/protocols/msnp9/error.c:116
+#, c-format
msgid "Required fields missing"
msgstr "প্রয়োজনীয় ক্ষেত্র নিরুদ্দিষ্ট"
# tithi
-#: ../libpurple/protocols/msn/error.c:115
-#: ../libpurple/protocols/msnp9/error.c:120
+#, c-format
msgid "Too many hits to a FND"
msgstr "একটি FND এ খুব বেশি আঘাত করা হয়েছে"
-#: ../libpurple/protocols/msn/error.c:119
-#: ../libpurple/protocols/msnp9/error.c:124
-#: ../libpurple/protocols/oscar/oscar.c:123
+#, c-format
msgid "Not logged in"
msgstr "লগইন করা হয়নি"
-#: ../libpurple/protocols/msn/error.c:123
-#: ../libpurple/protocols/msnp9/error.c:128
+#, c-format
msgid "Service temporarily unavailable"
msgstr "সাময়িকভাবে সেবা পাওয়া যাচ্ছে না"
-#: ../libpurple/protocols/msn/error.c:126
-#: ../libpurple/protocols/msnp9/error.c:131
+#, c-format
msgid "Database server error"
msgstr "উপাত্তধার সার্ভারের ত্রুটি"
-#: ../libpurple/protocols/msn/error.c:130
-#: ../libpurple/protocols/msnp9/error.c:135
+#, c-format
msgid "Command disabled"
msgstr "নির্দেশ নিষ্ক্রিয়"
-#: ../libpurple/protocols/msn/error.c:134
-#: ../libpurple/protocols/msnp9/error.c:139
+#, c-format
msgid "File operation error"
msgstr "ফাইল পরিচালনের ত্রুটি"
# tithi
-#: ../libpurple/protocols/msn/error.c:138
-#: ../libpurple/protocols/msnp9/error.c:143
+#, c-format
msgid "Memory allocation error"
msgstr "মেমোরি বরাদ্দে ত্রুটি"
# tithi
-#: ../libpurple/protocols/msn/error.c:142
-#: ../libpurple/protocols/msnp9/error.c:147
+#, c-format
msgid "Wrong CHL value sent to server"
msgstr "ভূল CHL মান সার্ভারে পাঠিয়েছিল"
-#: ../libpurple/protocols/msn/error.c:147
-#: ../libpurple/protocols/msnp9/error.c:152
+#, c-format
msgid "Server busy"
msgstr "সার্ভার ব্যস্ত"
-#: ../libpurple/protocols/msn/error.c:150
-#: ../libpurple/protocols/msn/error.c:164
-#: ../libpurple/protocols/msn/error.c:222
-#: ../libpurple/protocols/msnp9/error.c:155
-#: ../libpurple/protocols/msnp9/error.c:170
-#: ../libpurple/protocols/msnp9/error.c:230
+#, c-format
msgid "Server unavailable"
msgstr "সার্ভার অপ্রাপ্য "
# fix me tithi
-#: ../libpurple/protocols/msn/error.c:153
-#: ../libpurple/protocols/msnp9/error.c:158
+#, c-format
msgid "Peer notification server down"
msgstr "পিয়ার প্রজ্ঞাপন সার্ভার নিস্ক্রিয়"
-#: ../libpurple/protocols/msn/error.c:157
-#: ../libpurple/protocols/msnp9/error.c:162
+#, c-format
msgid "Database connect error"
msgstr "উপাত্তধার সংযোগে ত্রুটি"
# tithi
-#: ../libpurple/protocols/msn/error.c:161
-#: ../libpurple/protocols/msnp9/error.c:167
+#, c-format
msgid "Server is going down (abandon ship)"
msgstr "সার্ভার নিস্ক্রিয় হয়ে যাচ্ছে (ত্যাগ করুন)"
# tithi
-#: ../libpurple/protocols/msn/error.c:168
-#: ../libpurple/protocols/msnp9/error.c:174
+#, c-format
msgid "Error creating connection"
msgstr "সংযোগ তৈরিতে ত্রুটি"
# tithi
-#: ../libpurple/protocols/msn/error.c:172
-#: ../libpurple/protocols/msnp9/error.c:179
+#, c-format
msgid "CVR parameters are either unknown or not allowed"
msgstr "CVR প্যারামিটারসমূহ হয় অজানা বা অনুমোদিত নয়"
-#: ../libpurple/protocols/msn/error.c:176
-#: ../libpurple/protocols/msnp9/error.c:183
+#, c-format
msgid "Unable to write"
msgstr "লিখতে সমর্থ নয়"
# tithi
-#: ../libpurple/protocols/msn/error.c:179
-#: ../libpurple/protocols/msnp9/error.c:186
+#, c-format
msgid "Session overload"
msgstr "অধিবেশন অতিরিক্ত"
# tithi
-#: ../libpurple/protocols/msn/error.c:183
-#: ../libpurple/protocols/msnp9/error.c:190
+#, c-format
msgid "User is too active"
msgstr "ব্যবহারকারী অনেক বেশি সক্রিয়"
# tithi
-#: ../libpurple/protocols/msn/error.c:186
-#: ../libpurple/protocols/msnp9/error.c:193
+#, c-format
msgid "Too many sessions"
msgstr "অনেক বেশি অধিবেশন"
# tithi
-#: ../libpurple/protocols/msn/error.c:189
-#: ../libpurple/protocols/msnp9/error.c:196
+#, c-format
msgid "Passport not verified"
msgstr "পাসপোর্ট পরীক্ষা করা হয়নি"
# tithi
-#: ../libpurple/protocols/msn/error.c:192
-#: ../libpurple/protocols/msnp9/error.c:199
+#, c-format
msgid "Bad friend file"
msgstr "খারাপ বন্ধু ফাইল"
# tithi
-#: ../libpurple/protocols/msn/error.c:196
-#: ../libpurple/protocols/msnp9/error.c:203
+#, c-format
msgid "Not expected"
msgstr "প্রত্যাশিত ছিল না"
# tithi
-#: ../libpurple/protocols/msn/error.c:201
-#: ../libpurple/protocols/msnp9/error.c:209
+#, c-format
msgid "Friendly name changes too rapidly"
msgstr "বন্ধুভাবাপন্ন নাম খুব দ্রুত পরিবর্তন হয়"
-#: ../libpurple/protocols/msn/error.c:210
-#: ../libpurple/protocols/msnp9/error.c:218
+#, c-format
msgid "Server too busy"
msgstr "সার্ভার অত্যন্ত ব্যস্ত"
# tithi
-#: ../libpurple/protocols/msn/error.c:214
-#: ../libpurple/protocols/msnp9/error.c:222
-#: ../libpurple/protocols/oscar/oscar.c:1541
-#: ../libpurple/protocols/silc/silc.c:339
-#: ../libpurple/protocols/silc10/ops.c:1713
-#: ../libpurple/protocols/toc/toc.c:728 ../libpurple/proxy.c:1589
+#, c-format
msgid "Authentication failed"
msgstr "প্রমাণীকরণ ব্যর্থ"
# tithi
-#: ../libpurple/protocols/msn/error.c:217
-#: ../libpurple/protocols/msnp9/error.c:225
+#, c-format
msgid "Not allowed when offline"
msgstr "অফলাইনে অনুমোদিত নয়"
# tithi
-#: ../libpurple/protocols/msn/error.c:225
-#: ../libpurple/protocols/msnp9/error.c:233
+#, c-format
msgid "Not accepting new users"
msgstr "নতুন ব্যবহারকারী গ্রহণ করছে না"
# tithi
-#: ../libpurple/protocols/msn/error.c:228
-#: ../libpurple/protocols/msnp9/error.c:237
+#, c-format
msgid "Kids Passport without parental consent"
msgstr "অভিভাবক অনুমোদন ব্যতীত শিশুদের পাসপোর্ট"
# tithi
-#: ../libpurple/protocols/msn/error.c:231
-#: ../libpurple/protocols/msnp9/error.c:241
+#, c-format
msgid "Passport account not yet verified"
msgstr "এখনও পাসপোর্ট একাউন্ট পরীক্ষা করা হয়নি"
# tithi
-#: ../libpurple/protocols/msn/error.c:234
msgid "Passport account suspended"
msgstr "পাসপোর্ট একাউন্ট স্থগিত"
-#: ../libpurple/protocols/msn/error.c:237
-#: ../libpurple/protocols/msnp9/error.c:244
+#, c-format
msgid "Bad ticket"
msgstr "ত্রুটিযুক্ত টিকেট"
# tithi
-#: ../libpurple/protocols/msn/error.c:243
-#: ../libpurple/protocols/msnp9/error.c:249
#, c-format
msgid "Unknown Error Code %d"
msgstr "অজানা ত্রুটি কোড %d"
# tithi
-#: ../libpurple/protocols/msn/error.c:258
-#: ../libpurple/protocols/msnp9/error.c:263
#, c-format
msgid "MSN Error: %s\n"
msgstr "MSN ত্রুটি: %s\n"
-#: ../libpurple/protocols/msn/group.h:36
msgid "Other Contacts"
msgstr "অন্যান্য যোগাযোগসমূহ"
-#: ../libpurple/protocols/msn/group.h:39
msgid "Non-IM Contacts"
msgstr "IM নয় এমন যোগাযোগসমূহ"
# tithi
-#: ../libpurple/protocols/msn/msn.c:136 ../libpurple/protocols/msnp9/msn.c:137
msgid "Nudge"
msgstr "একান্তে"
-#: ../libpurple/protocols/msn/msn.c:137 ../libpurple/protocols/msnp9/msn.c:138
#, c-format
msgid "%s has nudged you!"
msgstr "%s আপনাকে একান্তে যোগ করেছেন!"
# fix-me tithi
-#: ../libpurple/protocols/msn/msn.c:137 ../libpurple/protocols/msnp9/msn.c:138
#, c-format
msgid "Nudging %s..."
msgstr "%s মনোযোগ আকর্ষন করছে..."
-#: ../libpurple/protocols/msn/msn.c:150 ../libpurple/protocols/msnp9/msn.c:151
-#: ../libpurple/protocols/myspace/myspace.c:3002
msgid "Email Address..."
msgstr "ই-মেইল ঠিকানা..."
# tithi
-#: ../libpurple/protocols/msn/msn.c:189 ../libpurple/protocols/msnp9/msn.c:190
msgid "Your new MSN friendly name is too long."
msgstr "আপনার নতুন MSN বন্ধুভাবাপন্ন নাম খুব দীর্ঘ।"
# tithi
-#: ../libpurple/protocols/msn/msn.c:315 ../libpurple/protocols/msnp9/msn.c:298
msgid "Set your friendly name."
msgstr "আপনার বন্ধুভাবাপন্ন নাম নির্ধারণ করুন।"
# tithi
-#: ../libpurple/protocols/msn/msn.c:316 ../libpurple/protocols/msnp9/msn.c:299
msgid "This is the name that other MSN buddies will see you as."
msgstr "এটি এমন নাম যা দ্বারা অন্যান্য MSN বন্ধুরা আপনাকে দেখবে।"
# tithi
-#: ../libpurple/protocols/msn/msn.c:334 ../libpurple/protocols/msnp9/msn.c:317
msgid "Set your home phone number."
msgstr "আপনার বাসার ফোন নাম্বার দিন।"
# tithi
-#: ../libpurple/protocols/msn/msn.c:351 ../libpurple/protocols/msnp9/msn.c:334
msgid "Set your work phone number."
msgstr "আপনার কাজের ফোন নাম্বার দিন।"
# tithi
-#: ../libpurple/protocols/msn/msn.c:368 ../libpurple/protocols/msnp9/msn.c:351
msgid "Set your mobile phone number."
msgstr "আপনার মোবাইল ফোন নাম্বার দিন।"
# tithi
-#: ../libpurple/protocols/msn/msn.c:383 ../libpurple/protocols/msnp9/msn.c:366
msgid "Allow MSN Mobile pages?"
msgstr "MSN মোবাইল পেজগুলো কি অনুমোদন করবেন?"
# tithi
-#: ../libpurple/protocols/msn/msn.c:384 ../libpurple/protocols/msnp9/msn.c:367
msgid ""
"Do you want to allow or disallow people on your buddy list to send you MSN "
"Mobile pages to your cell phone or other mobile device?"
@@ -7398,102 +5252,65 @@ msgstr ""
"আপনি কি আপনার বন্ধু তালিকার জনগণকে আপনার সেল ফোন বা অন্যান্য মোবাইল ডিভাইসে MSN "
"মোবাইল পৃষ্ঠাসমূহ পাঠাতে অনুমোদন দিতে চান বা চান না?"
-#: ../libpurple/protocols/msn/msn.c:390 ../libpurple/protocols/msnp9/msn.c:373
msgid "Allow"
msgstr "অনুমোদন করুন"
-#: ../libpurple/protocols/msn/msn.c:391 ../libpurple/protocols/msnp9/msn.c:374
msgid "Disallow"
msgstr "অনুমোদন করবিন না"
-#: ../libpurple/protocols/msn/msn.c:406
#, c-format
msgid "Blocked Text for %s"
msgstr "%s এর জন্য ব্লককৃত পাঠ"
# tithi
-#: ../libpurple/protocols/msn/msn.c:408
msgid "No text is blocked for this account."
msgstr "এই একাউন্টটির জন্য কোনো পাঠ আবদ্ধ নয়।"
# tithi
-#: ../libpurple/protocols/msn/msn.c:411
#, c-format
msgid ""
"MSN servers are currently blocking the following regular expressions:<br/>%s"
msgstr "MSN সার্ভার বর্তমানে নিম্নলিখিত নিয়মিত রাশিসমূহ আবদ্ধ করছে:<br/>%s"
# tithi
-#: ../libpurple/protocols/msn/msn.c:432
msgid "This account does not have email enabled."
msgstr "এই একাউন্টটি ই-মেইল সক্রিয় নেই।"
-#: ../libpurple/protocols/msn/msn.c:472 ../libpurple/protocols/msnp9/msn.c:416
msgid "Send a mobile message."
msgstr "মোবাইল বার্তা পাঠান।"
-#: ../libpurple/protocols/msn/msn.c:474 ../libpurple/protocols/msnp9/msn.c:418
msgid "Page"
msgstr "পৃষ্ঠা"
-#: ../libpurple/protocols/msn/msn.c:718
msgid "Playing a game"
msgstr "একটি খেলা খেলছে"
-#: ../libpurple/protocols/msn/msn.c:721
msgid "Working"
msgstr "কাজ করছে"
# tithi
-#: ../libpurple/protocols/msn/msn.c:795 ../libpurple/protocols/msnp9/msn.c:565
msgid "Has you"
msgstr "আপনার কি"
-#: ../libpurple/protocols/msn/msn.c:803 ../libpurple/protocols/msnp9/msn.c:586
msgid "Home Phone Number"
msgstr "বাসার ফোন নম্বর"
-#: ../libpurple/protocols/msn/msn.c:807 ../libpurple/protocols/msnp9/msn.c:590
msgid "Work Phone Number"
msgstr "অফিসের ফোন নম্বর "
-#: ../libpurple/protocols/msn/msn.c:811 ../libpurple/protocols/msnp9/msn.c:594
msgid "Mobile Phone Number"
msgstr "মোবাইল ফোন নম্বর"
-#: ../libpurple/protocols/msn/msn.c:834 ../libpurple/protocols/msn/state.c:33
-#: ../libpurple/protocols/msnp9/msn.c:613
-#: ../libpurple/protocols/msnp9/state.c:33
-#: ../libpurple/protocols/yahoo/yahoo.c:3155
-#: ../libpurple/protocols/yahoo/yahoo.c:3864
msgid "Be Right Back"
msgstr "এক্ষুনি আসছি"
-#: ../libpurple/protocols/msn/msn.c:840 ../libpurple/protocols/msn/state.c:31
-#: ../libpurple/protocols/msnp9/msn.c:617
-#: ../libpurple/protocols/msnp9/state.c:31
-#: ../libpurple/protocols/novell/novell.c:2840
-#: ../libpurple/protocols/novell/novell.c:2970
-#: ../libpurple/protocols/qq/qq.c:273 ../libpurple/protocols/qq/qq.c:421
-#: ../libpurple/protocols/silc/buddy.c:1495
-#: ../libpurple/protocols/silc/silc.c:57
-#: ../libpurple/protocols/silc10/buddy.c:1495
-#: ../libpurple/protocols/silc10/silc.c:48
-#: ../libpurple/protocols/yahoo/yahoo.c:3157
-#: ../libpurple/protocols/yahoo/yahoo.c:3867
msgid "Busy"
msgstr "ব্যস্ত"
-#: ../libpurple/protocols/msn/msn.c:845 ../libpurple/protocols/msnp9/msn.c:621
-#: ../libpurple/protocols/yahoo/yahoo.c:3165
-#: ../libpurple/protocols/yahoo/yahoo.c:3879
msgid "On the Phone"
msgstr "ফোন এ কথা বলছি"
# tithi
-#: ../libpurple/protocols/msn/msn.c:850 ../libpurple/protocols/msnp9/msn.c:625
-#: ../libpurple/protocols/yahoo/yahoo.c:3169
-#: ../libpurple/protocols/yahoo/yahoo.c:3885
msgid "Out to Lunch"
msgstr "দুপুরে খাবার জন্য বাইরে"
@@ -7503,361 +5320,203 @@ msgstr "দুপুরে খাবার জন্য বাইরে"
#. saveable
#. should be user_settable some day
#. independent
-#: ../libpurple/protocols/msn/msn.c:869
-#: ../libpurple/protocols/myspace/myspace.c:506
msgid "Artist"
msgstr "শিল্পী"
-#: ../libpurple/protocols/msn/msn.c:870
msgid "Album"
msgstr "এ্যালবাম"
-#: ../libpurple/protocols/msn/msn.c:872
msgid "Game Title"
msgstr "খেলার শিরোনাম"
-#: ../libpurple/protocols/msn/msn.c:873
msgid "Office Title"
msgstr "অফিসের শিরোনাম"
-#: ../libpurple/protocols/msn/msn.c:886 ../libpurple/protocols/msnp9/msn.c:653
msgid "Set Friendly Name..."
msgstr "বন্ধুসুলভ নাম নির্ধারন করুন..."
-#: ../libpurple/protocols/msn/msn.c:891 ../libpurple/protocols/msnp9/msn.c:658
msgid "Set Home Phone Number..."
msgstr "বাসার ফোন নম্বর নির্ধারন করুন..."
-#: ../libpurple/protocols/msn/msn.c:895 ../libpurple/protocols/msnp9/msn.c:662
msgid "Set Work Phone Number..."
msgstr "অফিসের ফোন নম্বর নির্ধারন করুন..."
-#: ../libpurple/protocols/msn/msn.c:899 ../libpurple/protocols/msnp9/msn.c:666
msgid "Set Mobile Phone Number..."
msgstr "মোবাইল ফোন নম্বর নির্ধারন করুন..."
-#: ../libpurple/protocols/msn/msn.c:905 ../libpurple/protocols/msnp9/msn.c:672
msgid "Enable/Disable Mobile Devices..."
msgstr "মোবাইল ডিভাইসসমূহ সক্রিয়/নিষ্ক্রিয় করুন..."
# tithi
-#: ../libpurple/protocols/msn/msn.c:910 ../libpurple/protocols/msnp9/msn.c:677
msgid "Allow/Disallow Mobile Pages..."
msgstr "মোবাইল পৃষ্ঠাগুলোকে অনুমোদন করুন/করবেন না..."
# tithi
-#: ../libpurple/protocols/msn/msn.c:917
msgid "View Blocked Text..."
msgstr "ব্লককৃত পাঠ দেখান..."
-#: ../libpurple/protocols/msn/msn.c:923 ../libpurple/protocols/msnp9/msn.c:688
msgid "Open Hotmail Inbox"
msgstr "হটমেইল ইনবক্স খুলুন"
-#: ../libpurple/protocols/msn/msn.c:946 ../libpurple/protocols/msnp9/msn.c:712
msgid "Send to Mobile"
msgstr "মোবাইলে পাঠান"
# tithi
-#: ../libpurple/protocols/msn/msn.c:956 ../libpurple/protocols/msnp9/msn.c:722
-#: ../libpurple/protocols/novell/novell.c:3426
msgid "Initiate _Chat"
msgstr "আড্ডা প্রস্তুত করুন (_C)"
-#: ../libpurple/protocols/msn/msn.c:994 ../libpurple/protocols/msnp9/msn.c:761
msgid "SSL support is needed for MSN. Please install a supported SSL library."
msgstr ""
"MSN এর জন্য SSL সমর্থন প্রয়োজন। অনুগ্রহ করে একটি সমর্থিত SSL লাইব্রেরী সংস্থাপন করুন।"
-#: ../libpurple/protocols/msn/msn.c:1025
-#: ../libpurple/protocols/msnp9/msn.c:792
msgid "Failed to connect to server."
msgstr "সার্ভারে সংযোগ দিতে ব্যর্থ হয়েছে।"
# tithi
-#: ../libpurple/protocols/msn/msn.c:1951 ../libpurple/protocols/msn/msn.c:2293
-#: ../libpurple/protocols/msnp9/msn.c:1655
-#: ../libpurple/protocols/msnp9/msn.c:1998
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:809
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1200
msgid "Error retrieving profile"
msgstr "বৃত্তান্ত উদ্ধারে ত্রুটি"
-#: ../libpurple/protocols/msn/msn.c:2015
-#: ../libpurple/protocols/msnp9/msn.c:1721 ../pidgin/plugins/convcolors.c:371
-#: ../pidgin/plugins/pidginrc.c:375
msgid "General"
msgstr "সাধারন"
-#: ../libpurple/protocols/msn/msn.c:2022
-#: ../libpurple/protocols/msnp9/msn.c:1728
-#: ../libpurple/protocols/myspace/user.c:126
-#: ../libpurple/protocols/oscar/oscar.c:3960
-#: ../libpurple/protocols/qq/buddy_info.c:118
-#: ../libpurple/protocols/qq/qq.c:309
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1081
msgid "Age"
msgstr "বয়স"
-#: ../libpurple/protocols/msn/msn.c:2024
-#: ../libpurple/protocols/msnp9/msn.c:1730
-#: ../libpurple/protocols/qq/buddy_info.c:127
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1096
msgid "Occupation"
msgstr "পেশা"
-#: ../libpurple/protocols/msn/msn.c:2025
-#: ../libpurple/protocols/msnp9/msn.c:1731
-#: ../libpurple/protocols/myspace/user.c:134
-#: ../libpurple/protocols/novell/novell.c:1487
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1076
-#: ../libpurple/protocols/zephyr/zephyr.c:801
-#: ../libpurple/protocols/zephyr/zephyr.c:1178
msgid "Location"
msgstr "স্থান"
-#: ../libpurple/protocols/msn/msn.c:2030 ../libpurple/protocols/msn/msn.c:2222
-#: ../libpurple/protocols/msn/msn.c:2228 ../libpurple/protocols/msn/msn.c:2235
-#: ../libpurple/protocols/msnp9/msn.c:1736
-#: ../libpurple/protocols/msnp9/msn.c:1928
-#: ../libpurple/protocols/msnp9/msn.c:1934
-#: ../libpurple/protocols/msnp9/msn.c:1941
msgid "Hobbies and Interests"
msgstr "শখ এবং আগ্রহ"
-#: ../libpurple/protocols/msn/msn.c:2036 ../libpurple/protocols/msn/msn.c:2156
-#: ../libpurple/protocols/msn/msn.c:2162 ../libpurple/protocols/msn/msn.c:2169
-#: ../libpurple/protocols/msn/msn.c:2177 ../libpurple/protocols/msn/msn.c:2184
-#: ../libpurple/protocols/msnp9/msn.c:1742
-#: ../libpurple/protocols/msnp9/msn.c:1862
-#: ../libpurple/protocols/msnp9/msn.c:1868
-#: ../libpurple/protocols/msnp9/msn.c:1875
-#: ../libpurple/protocols/msnp9/msn.c:1883
-#: ../libpurple/protocols/msnp9/msn.c:1890
msgid "A Little About Me"
msgstr "আমার সম্পর্কে অল্প কিছু"
-#: ../libpurple/protocols/msn/msn.c:2053
-#: ../libpurple/protocols/msnp9/msn.c:1759
msgid "Social"
msgstr "সামাজিক"
-#: ../libpurple/protocols/msn/msn.c:2055
-#: ../libpurple/protocols/msnp9/msn.c:1761
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1086
msgid "Marital Status"
msgstr "বৈবাহিক অবস্থা"
-#: ../libpurple/protocols/msn/msn.c:2056
-#: ../libpurple/protocols/msnp9/msn.c:1762
msgid "Interests"
msgstr "আগ্রহসমূহ"
-#: ../libpurple/protocols/msn/msn.c:2057
-#: ../libpurple/protocols/msnp9/msn.c:1763
msgid "Pets"
msgstr "পোষা প্রাণীসমূহ"
-#: ../libpurple/protocols/msn/msn.c:2058
-#: ../libpurple/protocols/msnp9/msn.c:1764
msgid "Hometown"
msgstr "শহুরে-বাড়ি"
-#: ../libpurple/protocols/msn/msn.c:2059
-#: ../libpurple/protocols/msnp9/msn.c:1765
msgid "Places Lived"
msgstr "বসবাসরত অবস্থান"
-#: ../libpurple/protocols/msn/msn.c:2060
-#: ../libpurple/protocols/msnp9/msn.c:1766
msgid "Fashion"
msgstr "ফ্যাশন"
# tithi
-#: ../libpurple/protocols/msn/msn.c:2061
-#: ../libpurple/protocols/msnp9/msn.c:1767
msgid "Humor"
msgstr "হাস্যরস"
-#: ../libpurple/protocols/msn/msn.c:2062
-#: ../libpurple/protocols/msnp9/msn.c:1768
msgid "Music"
msgstr "সংগীত"
-#: ../libpurple/protocols/msn/msn.c:2063 ../libpurple/protocols/msn/msn.c:2244
-#: ../libpurple/protocols/msn/msn.c:2250
-#: ../libpurple/protocols/msnp9/msn.c:1769
-#: ../libpurple/protocols/msnp9/msn.c:1950
-#: ../libpurple/protocols/msnp9/msn.c:1956
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1138
msgid "Favorite Quote"
msgstr "প্রিয় উক্তি"
-#: ../libpurple/protocols/msn/msn.c:2080
-#: ../libpurple/protocols/msnp9/msn.c:1786
msgid "Contact Info"
msgstr "যোগাযোগের তথ্য"
-#: ../libpurple/protocols/msn/msn.c:2081
-#: ../libpurple/protocols/msnp9/msn.c:1787
msgid "Personal"
msgstr "ব্যক্তিগত"
# tithi
-#: ../libpurple/protocols/msn/msn.c:2084
-#: ../libpurple/protocols/msnp9/msn.c:1790
msgid "Significant Other"
msgstr "গুরুত্বপূর্ণ অন্যান্য"
-#: ../libpurple/protocols/msn/msn.c:2085
-#: ../libpurple/protocols/msnp9/msn.c:1791
msgid "Home Phone"
msgstr "বাসার ফোন"
-#: ../libpurple/protocols/msn/msn.c:2086
-#: ../libpurple/protocols/msnp9/msn.c:1792
msgid "Home Phone 2"
msgstr "বাসার ফোন ২"
-#: ../libpurple/protocols/msn/msn.c:2087
-#: ../libpurple/protocols/msnp9/msn.c:1793
-#: ../libpurple/protocols/oscar/oscar.c:3976
msgid "Home Address"
msgstr "বাসার ঠিকানা"
-#: ../libpurple/protocols/msn/msn.c:2088
-#: ../libpurple/protocols/msnp9/msn.c:1794
msgid "Personal Mobile"
msgstr "ব্যক্তিগত মোবাইল"
-#: ../libpurple/protocols/msn/msn.c:2089
-#: ../libpurple/protocols/msnp9/msn.c:1795
msgid "Home Fax"
msgstr "বাসার ফ্যাক্স"
-#: ../libpurple/protocols/msn/msn.c:2090
-#: ../libpurple/protocols/msnp9/msn.c:1796
msgid "Personal Email"
msgstr "ব্যক্তিগত ই-মেইল"
-#: ../libpurple/protocols/msn/msn.c:2091
-#: ../libpurple/protocols/msnp9/msn.c:1797
msgid "Personal IM"
msgstr "ব্যক্তিগত আইএম"
# tithi
-#: ../libpurple/protocols/msn/msn.c:2093
-#: ../libpurple/protocols/msnp9/msn.c:1799
msgid "Anniversary"
msgstr "বার্ষিকী"
#. Business
-#: ../libpurple/protocols/msn/msn.c:2109
-#: ../libpurple/protocols/msnp9/msn.c:1815
msgid "Work"
msgstr "অফিস"
# tithi
-#: ../libpurple/protocols/msn/msn.c:2111
-#: ../libpurple/protocols/msnp9/msn.c:1817
-#: ../libpurple/protocols/silc/ops.c:1024
-#: ../libpurple/protocols/silc10/ops.c:1044
msgid "Job Title"
msgstr "কাজের শিরোনাম"
-#: ../libpurple/protocols/msn/msn.c:2112
-#: ../libpurple/protocols/msnp9/msn.c:1818
-#: ../libpurple/protocols/oscar/oscar.c:3994
msgid "Company"
msgstr "কোম্পানী"
-#: ../libpurple/protocols/msn/msn.c:2113
-#: ../libpurple/protocols/msnp9/msn.c:1819
-#: ../libpurple/protocols/novell/novell.c:1489
msgid "Department"
msgstr "বিভাগ"
-#: ../libpurple/protocols/msn/msn.c:2114
-#: ../libpurple/protocols/msnp9/msn.c:1820
msgid "Profession"
msgstr "পেশা"
-#: ../libpurple/protocols/msn/msn.c:2115
-#: ../libpurple/protocols/msnp9/msn.c:1821
msgid "Work Phone"
msgstr "অফিস ফোন"
-#: ../libpurple/protocols/msn/msn.c:2116
-#: ../libpurple/protocols/msnp9/msn.c:1822
msgid "Work Phone 2"
msgstr "অফিস ফোন ২"
-#: ../libpurple/protocols/msn/msn.c:2117
-#: ../libpurple/protocols/msnp9/msn.c:1823
-#: ../libpurple/protocols/oscar/oscar.c:3984
msgid "Work Address"
msgstr "অফিস ঠিকানা"
-#: ../libpurple/protocols/msn/msn.c:2118
-#: ../libpurple/protocols/msnp9/msn.c:1824
msgid "Work Mobile"
msgstr "অফিস মোবাইল"
-#: ../libpurple/protocols/msn/msn.c:2119
-#: ../libpurple/protocols/msnp9/msn.c:1825
msgid "Work Pager"
msgstr "অফিস পেইজার"
-#: ../libpurple/protocols/msn/msn.c:2120
-#: ../libpurple/protocols/msnp9/msn.c:1826
msgid "Work Fax"
msgstr "অফিস ফ্যাক্স"
-#: ../libpurple/protocols/msn/msn.c:2121
-#: ../libpurple/protocols/msnp9/msn.c:1827
msgid "Work Email"
msgstr "অফিস ই-মেইল"
-#: ../libpurple/protocols/msn/msn.c:2122
-#: ../libpurple/protocols/msnp9/msn.c:1828
msgid "Work IM"
msgstr "অফিস আইএম"
-#: ../libpurple/protocols/msn/msn.c:2123
-#: ../libpurple/protocols/msnp9/msn.c:1829
msgid "Start Date"
msgstr "শুরুর তারিখ"
-#: ../libpurple/protocols/msn/msn.c:2193 ../libpurple/protocols/msn/msn.c:2199
-#: ../libpurple/protocols/msn/msn.c:2206 ../libpurple/protocols/msn/msn.c:2213
-#: ../libpurple/protocols/msnp9/msn.c:1899
-#: ../libpurple/protocols/msnp9/msn.c:1905
-#: ../libpurple/protocols/msnp9/msn.c:1912
-#: ../libpurple/protocols/msnp9/msn.c:1919
msgid "Favorite Things"
msgstr "প্রিয় জিনিসসমূহ"
-#: ../libpurple/protocols/msn/msn.c:2258
-#: ../libpurple/protocols/msnp9/msn.c:1964
msgid "Last Updated"
msgstr "সর্বশেষ হালনাগাদকৃত"
-#: ../libpurple/protocols/msn/msn.c:2269
-#: ../libpurple/protocols/msnp9/msn.c:1975
-#: ../libpurple/protocols/qq/buddy_info.c:128
-#: ../libpurple/protocols/silc/ops.c:1040
-#: ../libpurple/protocols/silc10/ops.c:1060
msgid "Homepage"
msgstr "হোমপেজ"
-#: ../libpurple/protocols/msn/msn.c:2295
-#: ../libpurple/protocols/msnp9/msn.c:1999
msgid "The user has not created a public profile."
msgstr "ব্যবহারকারী কোনো জনসাধারণের প্রোফাইল তৈরী করেনি।"
# tithi
-#: ../libpurple/protocols/msn/msn.c:2296
-#: ../libpurple/protocols/msnp9/msn.c:2000
msgid ""
"MSN reported not being able to find the user's profile. This either means "
"that the user does not exist, or that the user exists but has not created a "
@@ -7868,19 +5527,12 @@ msgstr ""
"বৃত্তান্ত তৈরি করেনি।"
# tithi
-#: ../libpurple/protocols/msn/msn.c:2300
-#: ../libpurple/protocols/msnp9/msn.c:2004
msgid ""
"Could not find any information in the user's profile. The user most likely "
"does not exist."
msgstr ""
"ব্যবহারকারীর বৃত্তান্তে কোনো তথ্য খুঁজে পায়নি। ব্যবহারকারী সম্ভবত বিদ্যমান থাকবে না।"
-#: ../libpurple/protocols/msn/msn.c:2308
-#: ../libpurple/protocols/myspace/user.c:193
-#: ../libpurple/protocols/myspace/user.c:196
-#: ../libpurple/protocols/oscar/oscar.c:3192
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1236
msgid "View web profile"
msgstr "ওয়েব প্রোফাইল দেখুন"
@@ -7893,139 +5545,91 @@ msgstr "ওয়েব প্রোফাইল দেখুন"
#. *< name
#. *< version
#. *< summary
-#: ../libpurple/protocols/msn/msn.c:2596 ../libpurple/protocols/msn/msn.c:2597
msgid "Windows Live Messenger Protocol Plugin"
msgstr "উইন্ডোজের সরাসরি মেসেনজার প্রোটোকল প্লাগইন"
# tithi
-#: ../libpurple/protocols/msn/msn.c:2631
-#: ../libpurple/protocols/msnp9/msn.c:2335
msgid "Use HTTP Method"
msgstr "HTTP পদ্ধতি ব্যবহার করুন"
-#: ../libpurple/protocols/msn/msn.c:2636
-#: ../libpurple/protocols/msnp9/msn.c:2340
msgid "HTTP Method Server"
msgstr "HTTP পদ্ধতির সার্ভার"
# tithi
-#: ../libpurple/protocols/msn/msn.c:2641
-#: ../libpurple/protocols/msnp9/msn.c:2345
msgid "Show custom smileys"
msgstr "স্বনির্বাচিত স্মাইলীগুলো দেখান"
# fix -me tithi
-#: ../libpurple/protocols/msn/msn.c:2649
-#: ../libpurple/protocols/msnp9/msn.c:2353
msgid "nudge: nudge a user to get their attention"
msgstr "নাজ: ব্যবহারকারীদের মনোযোগ পেতে তাদেরকে নাজ দিন"
# tithi
-#: ../libpurple/protocols/msn/nexus.c:359
msgid "Windows Live ID authentication:Unable to connect"
msgstr "উইন্ডোজ সরাসরি আইডি প্রমাণীকরণ:সংযোগ করতে অক্ষম"
# tithi
-#: ../libpurple/protocols/msn/nexus.c:366
msgid "Windows Live ID authentication:Invalid response"
msgstr "উইন্ডোজ সরাসরি আইডি প্রমাণীকরণ:অবৈধ সাড়া"
-#: ../libpurple/protocols/msn/notification.c:176
-#: ../libpurple/protocols/msnp9/notification.c:178
#, c-format
msgid "%s is not a valid group."
msgstr "%s কোনো বৈধ গ্রুপ নয়।"
-#: ../libpurple/protocols/msn/notification.c:182
-#: ../libpurple/protocols/msn/notification.c:961
-#: ../libpurple/protocols/msn/session.c:391
-#: ../libpurple/protocols/msnp9/notification.c:184
-#: ../libpurple/protocols/msnp9/notification.c:534
-#: ../libpurple/protocols/msnp9/session.c:353
-#: ../libpurple/protocols/yahoo/yahoo.c:2140
msgid "Unknown error."
msgstr "অজানা ত্রুটি।"
-#: ../libpurple/protocols/msn/notification.c:185
-#: ../libpurple/protocols/msnp9/notification.c:187
#, c-format
msgid "%s on %s (%s)"
msgstr "%2s (%3s) এ %1s"
-#: ../libpurple/protocols/msn/notification.c:475
#, c-format
msgid "%s just sent you a Nudge!"
msgstr "%s আপনার দৃষ্টি আকর্ষন করছে!"
#. char *adl = g_strndup(payload, len);
-#: ../libpurple/protocols/msn/notification.c:765
-#: ../libpurple/protocols/msn/notification.c:795
#, c-format
msgid "Unknown error (%d)"
msgstr "অজানা ত্রুটি (%d)"
-#: ../libpurple/protocols/msn/notification.c:773
-#: ../libpurple/protocols/msn/notification.c:796
-#: ../libpurple/protocols/sametime/sametime.c:4487
msgid "Unable to add user"
msgstr "ব্যবহারকারী যোগ করতে সমর্থ নয়"
-#: ../libpurple/protocols/msn/notification.c:836
msgid "The following users are missing from your addressbook"
msgstr "আপনার ঠিকানা বই থেকে নিম্নোক্ত ব্যবহারকারীরা হারিয়ে গেছে"
-#: ../libpurple/protocols/msn/notification.c:927
-#: ../libpurple/protocols/msnp9/notification.c:500
#, c-format
msgid "Unable to add user on %s (%s)"
msgstr "%1s (%2s) এ ব্যবহারকারী যোগ করতে সমর্থ নয়"
-#: ../libpurple/protocols/msn/notification.c:931
-#: ../libpurple/protocols/msnp9/notification.c:504
#, c-format
msgid "Unable to block user on %s (%s)"
msgstr "%1s (%2s) এ ব্যবহারকারী আবদ্ধ করতে সমর্থ নয়"
-#: ../libpurple/protocols/msn/notification.c:935
-#: ../libpurple/protocols/msnp9/notification.c:508
#, c-format
msgid "Unable to permit user on %s (%s)"
msgstr "%1s (%2s) ব্যবহারকারীকে অনুমতি প্রদান করতে সমর্থ নয়"
-#: ../libpurple/protocols/msn/notification.c:943
-#: ../libpurple/protocols/msnp9/notification.c:516
#, c-format
msgid "%s could not be added because your buddy list is full."
msgstr "আপনার বন্ধু তালিকা পূর্ণ থাকার কারণে %s কে যোগ করা যাচ্ছে না।"
-#: ../libpurple/protocols/msn/notification.c:952
-#: ../libpurple/protocols/msnp9/notification.c:525
#, c-format
msgid "%s is not a valid passport account."
msgstr "%s বৈধ পাসপোর্ট একাউন্ট নয়।"
-#: ../libpurple/protocols/msn/notification.c:957
-#: ../libpurple/protocols/msnp9/notification.c:530
msgid "Service Temporarily Unavailable."
msgstr "সাময়িকভাবে সেবা পাওয়া যাচ্ছে না।"
-#: ../libpurple/protocols/msn/notification.c:1196
msgid "Mobile message was not sent because it was too long."
msgstr "মোবাইল বার্তাটি অনেক বড় বিধায় পাঠানো হয়নি।"
-#: ../libpurple/protocols/msn/notification.c:1375
-#: ../libpurple/protocols/msnp9/notification.c:899
msgid "Unable to rename group"
msgstr "গ্রুপ পুনরায় নামকরণ করতে সমর্থ নয়"
-#: ../libpurple/protocols/msn/notification.c:1402
-#: ../libpurple/protocols/msnp9/notification.c:954
msgid "Unable to delete group"
msgstr "গ্রুপ মুছে ফেলতে অক্ষম"
# tithi
-#: ../libpurple/protocols/msn/notification.c:1935
-#: ../libpurple/protocols/msnp9/notification.c:1373
#, c-format
msgid ""
"The MSN server will shut down for maintenance in %d minute. You will "
@@ -8053,7 +5657,6 @@ msgstr[1] ""
"রক্ষনাবেক্ষন সম্পূর্ন হবার পর, আপনি সফলভাবে সাইন ইন করতে পারবেন।"
# tithi
-#: ../libpurple/protocols/msn/oim.c:400
msgid ""
"Message was not sent because the system is unavailable. This normally "
"happens when the user is blocked or does not exist."
@@ -8061,42 +5664,26 @@ msgstr ""
"বার্তা পাঠানো হয়নি কারণ সিস্টেম সহজলভ্য নয়। এইটি সাধারণত ঘটে যখন ব্যবহারকারী "
"আবদ্ধ বা ব্যবহারকারী বিদ্যমান থাকে না।"
-#: ../libpurple/protocols/msn/oim.c:405
msgid "Message was not sent because messages are being sent too quickly."
msgstr "বার্তা পাঠানো যায়নি কারণ বার্তাগুলো খুব তাড়াতাড়ি পাঠানো হচ্ছিল।"
-#: ../libpurple/protocols/msn/oim.c:409
msgid "Message was not sent because an unknown encoding error occurred."
msgstr "অজানা সঙ্কেতায়ন ত্রুটি সংঘটিত হওয়ার কারণে বার্তা পাঠানো যায়নি।"
-#: ../libpurple/protocols/msn/oim.c:413
msgid "Message was not sent because an unknown error occurred."
msgstr "অজানা ত্রুটি সংঘটিত হওয়ার কারণে বার্তা পাঠানো যায়নি।"
-#: ../libpurple/protocols/msn/servconn.c:134
-#: ../libpurple/protocols/msnp9/nexus.c:146
-#: ../libpurple/protocols/msnp9/servconn.c:133
-#: ../libpurple/protocols/qq/qq_network.c:840
-#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:1565
-#: ../libpurple/protocols/yahoo/yahoochat.c:1425
-#: ../libpurple/protocols/yahoo/yahoochat.c:1451
msgid "Unable to connect"
msgstr "সংযোগ করতে সমর্থ নয়"
# tithi
-#: ../libpurple/protocols/msn/servconn.c:136
-#: ../libpurple/protocols/msnp9/servconn.c:135
msgid "Writing error"
msgstr "লিখন ত্রুটি"
-#: ../libpurple/protocols/msn/servconn.c:138
-#: ../libpurple/protocols/msnp9/servconn.c:137
msgid "Reading error"
msgstr "পাঠ ত্রুটি"
# tithi
-#: ../libpurple/protocols/msn/servconn.c:145
-#: ../libpurple/protocols/msnp9/servconn.c:144
#, c-format
msgid ""
"Connection error from %s server:\n"
@@ -8105,44 +5692,28 @@ msgstr ""
"%1s সার্ভার হতে সংযোগের ত্রুটি:\n"
"%2s"
-#: ../libpurple/protocols/msn/session.c:353
-#: ../libpurple/protocols/msnp9/session.c:315
msgid "Our protocol is not supported by the server."
msgstr "আমাদের প্রটোকল সার্ভার সমর্থন করে না।"
-#: ../libpurple/protocols/msn/session.c:358
-#: ../libpurple/protocols/msnp9/session.c:320
msgid "Error parsing HTTP."
msgstr "HTTP পার্স করতে ত্রুটি।"
-#: ../libpurple/protocols/msn/session.c:362
-#: ../libpurple/protocols/msnp9/session.c:324
-#: ../libpurple/protocols/oscar/flap_connection.c:439
-#: ../libpurple/protocols/yahoo/yahoo.c:161
msgid "You have signed on from another location."
msgstr "আপনি অন্য স্থান থেকে সাইন অন করেছেন।"
-#: ../libpurple/protocols/msn/session.c:368
-#: ../libpurple/protocols/msnp9/session.c:330
msgid "The MSN servers are temporarily unavailable. Please wait and try again."
msgstr ""
"সাময়িকভাবে এমএসএন সার্ভার পাওয়া যাচ্ছে না। অনুগ্রহ করে অপেক্ষা করুন এবং পুনরায় "
"চেষ্টা করুন"
# tithi
-#: ../libpurple/protocols/msn/session.c:374
-#: ../libpurple/protocols/msnp9/session.c:336
msgid "The MSN servers are going down temporarily."
msgstr "MSN সার্ভার সাময়িকভাবে নিস্ক্রিয় হচ্ছে।"
-#: ../libpurple/protocols/msn/session.c:379
-#: ../libpurple/protocols/msnp9/session.c:341
#, c-format
msgid "Unable to authenticate: %s"
msgstr "প্রমাণীকরণ করতে অক্ষম: %s"
-#: ../libpurple/protocols/msn/session.c:385
-#: ../libpurple/protocols/msnp9/session.c:347
msgid ""
"Your MSN buddy list is temporarily unavailable. Please wait and try again."
msgstr ""
@@ -8150,84 +5721,52 @@ msgstr ""
"পুনরায় চেষ্টা করুন।"
# tithi
-#: ../libpurple/protocols/msn/session.c:407
-#: ../libpurple/protocols/msn/session.c:409
-#: ../libpurple/protocols/msnp9/session.c:369
-#: ../libpurple/protocols/msnp9/session.c:371
msgid "Handshaking"
msgstr "হ্যান্ডসেকিং"
-#: ../libpurple/protocols/msn/session.c:408
-#: ../libpurple/protocols/msnp9/session.c:370
msgid "Transferring"
msgstr "স্থানান্তর করছে"
# tithi
-#: ../libpurple/protocols/msn/session.c:410
-#: ../libpurple/protocols/msnp9/session.c:372
msgid "Starting authentication"
msgstr "প্রমাণীকরণ শুরু করছে"
# tithi
-#: ../libpurple/protocols/msn/session.c:411
-#: ../libpurple/protocols/msnp9/session.c:373
msgid "Getting cookie"
msgstr "কুকি গ্রহণ করছে"
-#: ../libpurple/protocols/msn/session.c:413
-#: ../libpurple/protocols/msnp9/session.c:375
msgid "Sending cookie"
msgstr "কুকি পাঠাচ্ছে"
-#: ../libpurple/protocols/msn/session.c:414
-#: ../libpurple/protocols/msnp9/session.c:376
msgid "Retrieving buddy list"
msgstr "বন্ধু তালিকা উদ্ধার করছে"
-#: ../libpurple/protocols/msn/state.c:34
-#: ../libpurple/protocols/msnp9/state.c:34
msgid "Away From Computer"
msgstr "কম্পিউটার থেকে দূরে"
-#: ../libpurple/protocols/msn/state.c:35
-#: ../libpurple/protocols/msnp9/state.c:35
msgid "On The Phone"
msgstr "ফোন এ কথা বলছে"
-#: ../libpurple/protocols/msn/state.c:36
-#: ../libpurple/protocols/msnp9/state.c:36
msgid "Out To Lunch"
msgstr "লাঞ্চ এর জন্য বাইরে"
-#: ../libpurple/protocols/msn/switchboard.c:427
-#: ../libpurple/protocols/msnp9/switchboard.c:411
msgid "Message may have not been sent because a timeout occurred:"
msgstr "সময় শেষ হয়ে যাওযার কারণে বার্তা সম্ভবত পাঠানো হয়নি:"
# tithi
-#: ../libpurple/protocols/msn/switchboard.c:463
-#: ../libpurple/protocols/msnp9/switchboard.c:419
msgid "Message could not be sent, not allowed while invisible:"
msgstr "বার্তা পাঠানো যাবে না, অদৃশ্য অবস্থায় অনুমোদিত নয়:"
-#: ../libpurple/protocols/msn/switchboard.c:467
-#: ../libpurple/protocols/msnp9/switchboard.c:423
msgid "Message could not be sent because the user is offline:"
msgstr "বার্তা পাঠানো যাচ্ছে না কারণ ব্যবহারকারী অফলাইনে:"
-#: ../libpurple/protocols/msn/switchboard.c:471
-#: ../libpurple/protocols/msnp9/switchboard.c:427
msgid "Message could not be sent because a connection error occurred:"
msgstr "বার্তা পাঠানো যাচ্ছে না কারণ সংযোগে ত্রুটি সংঘটিত হয়েছে:"
-#: ../libpurple/protocols/msn/switchboard.c:475
-#: ../libpurple/protocols/msnp9/switchboard.c:431
msgid "Message could not be sent because we are sending too quickly:"
msgstr "বার্তা পাঠানো যাচ্ছে না কারন আমরা খুব তাড়াতাড়ি পাঠাচ্ছি:"
# tithi
-#: ../libpurple/protocols/msn/switchboard.c:479
-#: ../libpurple/protocols/msnp9/switchboard.c:435
msgid ""
"Message could not be sent because we were unable to establish a session with "
"the server. This is likely a server problem, try again in a few minutes:"
@@ -8235,49 +5774,35 @@ msgstr ""
"বার্তা পাঠানো যাচ্ছে না কারণ আমরা সার্ভারের সাথে একটি অধিবেশন প্রতিষ্ঠিত করতে "
"অক্ষম ছিলাম। এটি সম্ভবত সার্ভার সমস্যা, কয়েক মিনিটের মধ্যে পুনরায় একটি চেষ্টা করুন:"
-#: ../libpurple/protocols/msn/switchboard.c:486
-#: ../libpurple/protocols/msnp9/switchboard.c:442
msgid ""
"Message could not be sent because an error with the switchboard occurred:"
msgstr "সুইচবোর্ডে ত্রুটি থাকার কারনে বার্তা পাঠানো যায়নি:"
-#: ../libpurple/protocols/msn/switchboard.c:494
-#: ../libpurple/protocols/msnp9/switchboard.c:450
msgid "Message may have not been sent because an unknown error occurred:"
msgstr "একটি অজানা ত্রুটির সংঘটিত হওয়ার কারণে বার্তা হয়ত পাঠানো যায়নি:"
-#: ../libpurple/protocols/msn/userlist.c:211
-#: ../libpurple/protocols/msnp9/userlist.c:262
#, c-format
msgid "%s has added you to his or her buddy list."
msgstr "%s আপনাকে তার বন্ধু তালিকায় যোগ করেছেন।"
-#: ../libpurple/protocols/msn/userlist.c:276
-#: ../libpurple/protocols/msnp9/userlist.c:331
#, c-format
msgid "%s has removed you from his or her buddy list."
msgstr "%s আপনাকে তার বন্ধু তালিকা থেকে অপসারণ করেছে।"
-#: ../libpurple/protocols/msn/userlist.c:641
msgid "Delete Buddy from Address Book?"
msgstr "ঠিকানার বই থেকে কি বন্ধু মুছে ফেলতে চান?"
-#: ../libpurple/protocols/msn/userlist.c:642
msgid "Do you want to delete this buddy from your address book as well?"
msgstr "আপনি কি এই বন্ধুটিকেও আপনার ঠিকানা বই থেকে মুছে ফেলতে চান?"
-#: ../libpurple/protocols/msn/userlist.c:698
-#: ../libpurple/protocols/msnp9/userlist.c:655
msgid "The username specified is invalid."
msgstr "উল্লেখিত ব্য়বহারকারীর নামটি অবৈধ।"
# tithi
-#: ../libpurple/protocols/msnp9/msn.c:390
msgid "This Hotmail account may not be active."
msgstr "এই হটমেইল একাউন্টটি সক্রিয় নাও থাকতে পারে।"
# tithi
-#: ../libpurple/protocols/msnp9/msn.c:2012
msgid "Profile URL"
msgstr "প্রোফাইল URL"
@@ -8291,92 +5816,69 @@ msgstr "প্রোফাইল URL"
#. *< version
#. * summary
#. * description
-#: ../libpurple/protocols/msnp9/msn.c:2299
-#: ../libpurple/protocols/msnp9/msn.c:2301
msgid "MSN Protocol Plugin"
msgstr "MSN প্রোটোকল প্লাগইন"
# tithi
-#: ../libpurple/protocols/myspace/myspace.c:136
#, c-format
msgid "No such user: %s"
msgstr "এমন কোনো ব্যবহারকারী নেই: %s"
-#: ../libpurple/protocols/myspace/myspace.c:138
msgid "User lookup"
msgstr "ব্যবহারকারী দেখছে"
-#: ../libpurple/protocols/myspace/myspace.c:675
msgid "Reading challenge"
msgstr "পড়তে সমস্যা হচ্ছে"
# fix me tithi
-#: ../libpurple/protocols/myspace/myspace.c:685
msgid "Unexpected challenge length from server"
msgstr "সার্ভারের অপ্রত্যাশিত চ্যালেঞ্জ সীমা"
-#: ../libpurple/protocols/myspace/myspace.c:689
-#: ../libpurple/protocols/qq/qq_process.c:1010
msgid "Logging in"
msgstr "সংযুক্ত হচ্ছে"
-#: ../libpurple/protocols/myspace/myspace.c:786
msgid "MySpaceIM - No Username Set"
msgstr "MySpaceIM - কোনো ব্যবহারকারীর নাম বিন্যাস করা হয়নি"
# tithi
-#: ../libpurple/protocols/myspace/myspace.c:787
msgid "You appear to have no MySpace username."
msgstr "আপনি MySpace ব্যবহারকারীর-নাম ব্যতিত উপস্থিত হয়েছেন।"
# tithi
-#: ../libpurple/protocols/myspace/myspace.c:788
msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
msgstr "আপনি কি এখন একটি নির্ধারণ করতে আগ্রহী? (নোট: এটি পরিবর্তন করা যায় না!)"
-#: ../libpurple/protocols/myspace/myspace.c:825
-#: ../libpurple/protocols/qq/qq_base.c:484
-#: ../libpurple/protocols/qq/qq_base.c:533
-#: ../libpurple/protocols/qq/qq_base.c:577
msgid "Lost connection with server"
msgstr "সার্ভারের সাথে সংযোগ বিচ্ছিন্ন হয়েছে"
#. Can't write _()'d strings in array initializers. Workaround.
-#: ../libpurple/protocols/myspace/myspace.c:861
msgid "New mail messages"
msgstr "নতুন মেইল বার্তাসমূহ"
# tithi
-#: ../libpurple/protocols/myspace/myspace.c:862
msgid "New blog comments"
msgstr "নতুন ব্লগ মন্তব্য"
# tithi
-#: ../libpurple/protocols/myspace/myspace.c:863
msgid "New profile comments"
msgstr "নতুন প্রোফাইল মন্তব্য"
# tithi
-#: ../libpurple/protocols/myspace/myspace.c:864
msgid "New friend requests!"
msgstr "নতুন বন্ধু অনুরোধ!"
# tithi
-#: ../libpurple/protocols/myspace/myspace.c:865
msgid "New picture comments"
msgstr "নতুন ছবি মন্তব্য"
# tithi
-#: ../libpurple/protocols/myspace/myspace.c:893
msgid "MySpace"
msgstr "MySpace"
-#: ../libpurple/protocols/myspace/myspace.c:1000
msgid "IM Friends"
msgstr "IM বন্ধুসমূহ"
# tithi
-#: ../libpurple/protocols/myspace/myspace.c:1136
#, c-format
msgid ""
"%d buddy was added or updated from the server (including buddies already on "
@@ -8391,25 +5893,20 @@ msgstr[1] ""
"সার্ভার থেকে %d বন্ধুসমূহ যোগ বা হালনাগাদ করা হয়েছিল ( সার্ভার-পার্শ্বের তালিকায় "
"বিদ্যমান বন্ধুরা সহ)"
-#: ../libpurple/protocols/myspace/myspace.c:1140
msgid "Add contacts from server"
msgstr "সার্ভার থেকে যোগাযোগগুলো যোগ করুন"
#. The session is now set up, ready to be connected. This emits the
#. * signedOn signal, so clients can now do anything with msimprpl, and
#. * we're ready for it (session key, userid, username all setup).
-#: ../libpurple/protocols/myspace/myspace.c:1191
-#: ../libpurple/protocols/sametime/sametime.c:1553
msgid "Connected"
msgstr "সংযুক্ত"
-#: ../libpurple/protocols/myspace/myspace.c:1804
#, c-format
msgid "Protocol error, code %d: %s"
msgstr "প্রোটকল ত্রুটি, কোড %1d: %2s"
# tithi
-#: ../libpurple/protocols/myspace/myspace.c:1826
#, c-format
msgid ""
"%s Your password is %d characters, greater than the expected maximum length "
@@ -8422,68 +5919,50 @@ msgstr ""
"cfm?fuseaction=accountSettings। গুপ্তসংকেত সংক্ষিপ্ত করুন এবং পুনরায় চেষ্টা করুন।"
# tithi
-#: ../libpurple/protocols/myspace/myspace.c:1849
msgid "MySpaceIM Error"
msgstr "MySpaceIM ত্রুটি"
-#: ../libpurple/protocols/myspace/myspace.c:2014
msgid "Invalid input condition"
msgstr "অবৈধ ইনপুট শর্ত"
# tithi
-#: ../libpurple/protocols/myspace/myspace.c:2069
msgid "Read buffer full (2)"
msgstr "পাঠ বাফার পূর্ণ (২)"
-#: ../libpurple/protocols/myspace/myspace.c:2112
msgid "Unparseable message"
msgstr "পার্স অযোগ্য বার্তা"
-#: ../libpurple/protocols/myspace/myspace.c:2155
#, c-format
msgid "Couldn't connect to host: %s (%d)"
msgstr "হোস্টের সাথে সংযুক্ত করা যায়নি: %1s (%2d)"
-#: ../libpurple/protocols/myspace/myspace.c:2646
-#: ../libpurple/protocols/myspace/myspace.c:2680
msgid "Failed to add buddy"
msgstr "বন্ধু যোগ করতে ব্যর্থ"
-#: ../libpurple/protocols/myspace/myspace.c:2646
msgid "'addbuddy' command failed."
msgstr "\"বন্ধু যোগ করুন\" নির্দেশটি ব্যর্থ হয়েছে।"
-#: ../libpurple/protocols/myspace/myspace.c:2680
-#: ../libpurple/protocols/myspace/myspace.c:2728
msgid "persist command failed"
msgstr "যুক্তির নির্দেশ ব্যর্থ হয়েছে"
-#: ../libpurple/protocols/myspace/myspace.c:2709
-#: ../libpurple/protocols/myspace/myspace.c:2728
-#: ../libpurple/protocols/myspace/myspace.c:2741
msgid "Failed to remove buddy"
msgstr "বন্ধু অপসারণ করতে ব্যর্থ হয়েছে"
# tithi
-#: ../libpurple/protocols/myspace/myspace.c:2709
msgid "'delbuddy' command failed"
msgstr "'বন্ধু মুছে ফেলুন' নির্দেশ ব্যর্থ হয়েছে"
-#: ../libpurple/protocols/myspace/myspace.c:2741
msgid "blocklist command failed"
msgstr "ব্লক-লিস্ট নির্দেশ ব্যর্থ হয়েছে"
-#: ../libpurple/protocols/myspace/myspace.c:3094
msgid "Missing Cipher"
msgstr "হারিয়ে যাওয়া সাইফার"
# tithi
-#: ../libpurple/protocols/myspace/myspace.c:3095
msgid "The RC4 cipher could not be found"
msgstr "RC4 ছাইফারকে খুঁজে পাওয়া যায়নি"
# tithi
-#: ../libpurple/protocols/myspace/myspace.c:3096
msgid ""
"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
"not be loaded."
@@ -8492,123 +5971,93 @@ msgstr ""
"না।"
# tithi
-#: ../libpurple/protocols/myspace/myspace.c:3123
-#: ../libpurple/protocols/myspace/myspace.c:3189
msgid "Add friends from MySpace.com"
msgstr "MySpace.com থেকে বন্ধু যোগ করুন"
-#: ../libpurple/protocols/myspace/myspace.c:3124
msgid "Importing friends failed"
msgstr "বন্ধুদের আনতে ব্যর্থ হয়েছে"
#. TODO: find out how
-#: ../libpurple/protocols/myspace/myspace.c:3182
msgid "Find people..."
msgstr "জনগণ খুঁজুন..."
-#: ../libpurple/protocols/myspace/myspace.c:3185
msgid "Change IM name..."
msgstr "IM নাম পরিবর্তন করুন..."
# tithi
-#: ../libpurple/protocols/myspace/myspace.c:3571
msgid "myim URL handler"
msgstr "myim URL নিয়ন্ত্রক"
# tithi
-#: ../libpurple/protocols/myspace/myspace.c:3572
msgid "No suitable MySpaceIM account could be found to open this myim URL."
msgstr "এই myim URL খুলতে কোনো উপযুক্ত MySpaceIM একাউন্ট খুঁজে পাওয়া যাবে না।"
# tithi
-#: ../libpurple/protocols/myspace/myspace.c:3573
msgid "Enable the proper MySpaceIM account and try again."
msgstr "উপযুক্ত MySpaceIM একাউন্ট সক্রিয় করুন এবং পুনরায় চেষ্টা করুন।"
# tithi
-#: ../libpurple/protocols/myspace/myspace.c:3634
msgid "Show display name in status text"
msgstr "অবস্থা পাঠে প্রদর্শন নাম দেখান"
# tithi
-#: ../libpurple/protocols/myspace/myspace.c:3637
msgid "Show headline in status text"
msgstr "অবস্থা পাঠে শিরোনাম দেখান"
# fix me tithi
-#: ../libpurple/protocols/myspace/myspace.c:3642
msgid "Send emoticons"
msgstr "আবেগীয় প্রতীকগুলো পাঠান"
# tithi
-#: ../libpurple/protocols/myspace/myspace.c:3647
msgid "Screen resolution (dots per inch)"
msgstr "পর্দার রিসোলিউশন (প্রতি ইঞ্চির ডট)"
# fix me tithi
-#: ../libpurple/protocols/myspace/myspace.c:3650
msgid "Base font size (points)"
msgstr "ভিত্তির ফন্ট আকার (বিন্দু)"
-#: ../libpurple/protocols/myspace/user.c:119
-#: ../libpurple/protocols/zephyr/zephyr.c:789
-#: ../libpurple/protocols/zephyr/zephyr.c:1167
msgid "User"
msgstr "ব্যবহারকারী"
-#: ../libpurple/protocols/myspace/user.c:139
msgid "Headline"
msgstr "শিরোনাম"
-#: ../libpurple/protocols/myspace/user.c:155
msgid "Song"
msgstr "গান"
# tithi
-#: ../libpurple/protocols/myspace/user.c:165
msgid "Total Friends"
msgstr "সব বন্ধু"
-#: ../libpurple/protocols/myspace/user.c:183
-#: ../libpurple/protocols/qq/qq.c:1086
msgid "Client Version"
msgstr "ক্লায়েন্ট সংস্করণ"
-#: ../libpurple/protocols/myspace/user.c:815
msgid "MySpaceIM - Username Available"
msgstr "MySpaceIM -ব্যবহারকারীর নাম সহজলভ্য"
# tithi
-#: ../libpurple/protocols/myspace/user.c:816
msgid "This username is available. Would you like to set it?"
msgstr "এই ব্যবহারকারীর-নামটি সহজলভ্য। আপনি কি এটি নির্ধারন করতে আগ্রহী?"
# tithi
-#: ../libpurple/protocols/myspace/user.c:817
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr "একবার নির্ধারণ করলে, এটি আর পরিবর্তন করা যাবে না!"
# tithi
-#: ../libpurple/protocols/myspace/user.c:828
-#: ../libpurple/protocols/myspace/user.c:891
msgid "MySpaceIM - Please Set a Username"
msgstr "MySpaceIM- অনুগ্রহ করে একটি ব্যবহারকারীর নাম নির্ধারন করুন"
-#: ../libpurple/protocols/myspace/user.c:829
msgid "This username is unavailable."
msgstr "এই ব্যহারকারীর নামটি অপ্রাপ্য।"
-#: ../libpurple/protocols/myspace/user.c:830
msgid "Please try another username:"
msgstr "অনুগ্রহ করে অন্য একটি ব্যবহারকারীর নাম চেষ্টা করুন:"
#. Protocol won't log in now without a username set.. Disconnect
-#: ../libpurple/protocols/myspace/user.c:881
msgid "No username set"
msgstr "কোনো ব্যবহারকারীর নাম নির্ধারণ করা নেই"
# tithi
-#: ../libpurple/protocols/myspace/user.c:892
msgid "Please enter a username to check its availability:"
msgstr "অনুগ্রহ করে এর সহজলভ্যতা পরীক্ষা করতে একটি ব্যবহারকারীর নাম প্রবেশ করান:"
@@ -8619,35 +6068,28 @@ msgstr "অনুগ্রহ করে এর সহজলভ্যতা প
#. * projectile or weapon." This term often has an electrical
#. * connotation, for example, "he was zapped by electricity when
#. * he put a fork in the toaster."
-#: ../libpurple/protocols/myspace/zap.c:44
-#: ../libpurple/protocols/myspace/zap.c:217
msgid "Zap"
msgstr "আক্রমণ করুন"
-#: ../libpurple/protocols/myspace/zap.c:44
#, c-format
msgid "%s has zapped you!"
msgstr "%s আপনাকে আক্রমণ করেছে! "
# tithi
-#: ../libpurple/protocols/myspace/zap.c:45
#, c-format
msgid "Zapping %s..."
msgstr "%s আক্রমণ করছে ..."
# tithi
#. Whack means "to hit or strike someone with a sharp blow"
-#: ../libpurple/protocols/myspace/zap.c:48
msgid "Whack"
msgstr "সজোরে আঘাত করুন"
-#: ../libpurple/protocols/myspace/zap.c:49
#, c-format
msgid "%s has whacked you!"
msgstr "%s আপনাকে আঘাত করেছে!"
# tithi
-#: ../libpurple/protocols/myspace/zap.c:49
#, c-format
msgid "Whacking %s..."
msgstr "%s সজোরে আঘাত করছে..."
@@ -8655,83 +6097,68 @@ msgstr "%s সজোরে আঘাত করছে..."
#. Torch means "to set on fire." Don't worry, this doesn't
#. * make a whole lot of sense in English, either. Feel free
#. * to translate it literally.
-#: ../libpurple/protocols/myspace/zap.c:54
msgid "Torch"
msgstr "আলোকপাত করুন"
-#: ../libpurple/protocols/myspace/zap.c:55
#, c-format
msgid "%s has torched you!"
msgstr "%s আপনার উপর আলোকপাত করেছে!"
# tithi
-#: ../libpurple/protocols/myspace/zap.c:55
#, c-format
msgid "Torching %s..."
msgstr "%s আলোকপাত করছে..."
# fix me tithi
#. Smooch means "to kiss someone, often enthusiastically"
-#: ../libpurple/protocols/myspace/zap.c:58
msgid "Smooch"
msgstr "অন্তরঙ্গতা"
-#: ../libpurple/protocols/myspace/zap.c:59
#, c-format
msgid "%s has smooched you!"
msgstr "%s আপনার সাথে অন্তরঙ্গ হয়েছে!"
# fix me tithi
-#: ../libpurple/protocols/myspace/zap.c:59
#, c-format
msgid "Smooching %s..."
msgstr "%s অন্তরঙ্গ করছে..."
# tithi
#. A hug is a display of affection; wrapping your arms around someone
-#: ../libpurple/protocols/myspace/zap.c:62
msgid "Hug"
msgstr "জড়িয়ে ধরুন"
-#: ../libpurple/protocols/myspace/zap.c:62
#, c-format
msgid "%s has hugged you!"
msgstr "%s আপনাকে জড়িয়ে ধরেছে!"
# tithi
-#: ../libpurple/protocols/myspace/zap.c:63
#, c-format
msgid "Hugging %s..."
msgstr "%s জড়িয়ে ধরছে..."
#. Slap means "to hit someone with an open/flat hand"
-#: ../libpurple/protocols/myspace/zap.c:66
msgid "Slap"
msgstr "চড় মারুন"
-#: ../libpurple/protocols/myspace/zap.c:67
#, c-format
msgid "%s has slapped you!"
msgstr "%s আপনাকে চড় মেরেছে!"
# tithi
-#: ../libpurple/protocols/myspace/zap.c:67
#, c-format
msgid "Slapping %s..."
msgstr "%s চড় মারছে..."
# fix me tithi
#. Goose means "to pinch someone on their butt"
-#: ../libpurple/protocols/myspace/zap.c:70
msgid "Goose"
msgstr "আঘাত করুন"
-#: ../libpurple/protocols/myspace/zap.c:71
#, c-format
msgid "%s has goosed you!"
msgstr "%s আপনাকে আঘাত করেছে!"
-#: ../libpurple/protocols/myspace/zap.c:71
#, c-format
msgid "Goosing %s..."
msgstr "%s আঘাত করছে..."
@@ -8740,17 +6167,14 @@ msgstr "%s আঘাত করছে..."
#. A high-five is when two people's hands slap each other
#. * in the air above their heads. It is done to celebrate
#. * something, often a victory, or to congratulate someone.
-#: ../libpurple/protocols/myspace/zap.c:76
msgid "High-five"
msgstr "হাই-ফাইভ"
-#: ../libpurple/protocols/myspace/zap.c:77
#, c-format
msgid "%s has high-fived you!"
msgstr "%s আপনার সাথে হাই-ফাইভ করেছে!"
# tithi
-#: ../libpurple/protocols/myspace/zap.c:77
#, c-format
msgid "High-fiving %s..."
msgstr "%s হাই-ফাইভ করেছে..."
@@ -8759,17 +6183,14 @@ msgstr "%s হাই-ফাইভ করেছে..."
#. We're not entirely sure what the MySpace people mean by
#. * this... but we think it's the equivalent of "prank." Or, for
#. * someone to perform a mischievous trick or practical joke.
-#: ../libpurple/protocols/myspace/zap.c:82
msgid "Punk"
msgstr "মজা"
-#: ../libpurple/protocols/myspace/zap.c:83
#, c-format
msgid "%s has punk'd you!"
msgstr "%s আপনার সাথে মজা করেছে!"
# tithi
-#: ../libpurple/protocols/myspace/zap.c:83
#, c-format
msgid "Punking %s..."
msgstr "%s মজা করছে..."
@@ -8782,199 +6203,157 @@ msgstr "%s মজা করছে..."
#. * gesture, so it does not carry a harsh negative
#. * connotation. It is generally used in a playful tone
#. * with friends.
-#: ../libpurple/protocols/myspace/zap.c:92
msgid "Raspberry"
msgstr "অঙ্গভঙ্গি"
# fix me tithi
-#: ../libpurple/protocols/myspace/zap.c:93
#, c-format
msgid "%s has raspberried you!"
msgstr "%s আপনাকে অঙ্গভঙ্গি দিয়েছে!"
# tithi
-#: ../libpurple/protocols/myspace/zap.c:93
#, c-format
msgid "Raspberrying %s..."
msgstr "%s অঙ্গভঙ্গি করছে..."
# tithi
-#: ../libpurple/protocols/novell/nmuser.c:1864
msgid "Required parameters not passed in"
msgstr "প্রয়োজনীয় মানসমূহ প্রবেশ করা হয়নি"
-#: ../libpurple/protocols/novell/nmuser.c:1867
msgid "Unable to write to network"
msgstr "নেটওয়ার্কে লিখতে ব্যর্থ"
-#: ../libpurple/protocols/novell/nmuser.c:1870
msgid "Unable to read from network"
msgstr "নেটওয়ার্ক থেকে পড়তে ব্যর্থ"
# tithi
-#: ../libpurple/protocols/novell/nmuser.c:1873
msgid "Error communicating with server"
msgstr "সার্ভারের সাথে যোগাযোগের ত্রুটি"
# tithi
-#: ../libpurple/protocols/novell/nmuser.c:1877
msgid "Conference not found"
msgstr "অধিবেশন পাওয়া যাচ্ছে না"
# tithi
-#: ../libpurple/protocols/novell/nmuser.c:1880
msgid "Conference does not exist"
msgstr "অধিবেশন বিদ্যমান নয়"
-#: ../libpurple/protocols/novell/nmuser.c:1884
msgid "A folder with that name already exists"
msgstr "ইতোমধ্যে ঐ নামের একটি ফোল্ডার বিদ্যমান"
-#: ../libpurple/protocols/novell/nmuser.c:1887
msgid "Not supported"
msgstr "সমর্থিত নয়"
-#: ../libpurple/protocols/novell/nmuser.c:1891
msgid "Password has expired"
msgstr "গুপ্তসঙ্কেতের মেয়াদ শেষ"
-#: ../libpurple/protocols/novell/nmuser.c:1894
msgid "Incorrect password"
msgstr "ভুল গুপ্তসঙ্কেতে"
-#: ../libpurple/protocols/novell/nmuser.c:1897
msgid "User not found"
msgstr "ব্যবহারকারী খুঁজে পাওয়া যায়নি"
-#: ../libpurple/protocols/novell/nmuser.c:1900
msgid "Account has been disabled"
msgstr "একাউন্টটি নিষ্ক্রিয় করা হয়েছে"
-#: ../libpurple/protocols/novell/nmuser.c:1903
msgid "The server could not access the directory"
msgstr "সার্ভার নির্দেশিকায় প্রবেশ করতে পারে না"
# tithi
-#: ../libpurple/protocols/novell/nmuser.c:1906
msgid "Your system administrator has disabled this operation"
msgstr "আপনার সিস্টেম প্রশাসক এই অপারেশনটি নিষ্ক্রিয় করেছে"
# tithi
-#: ../libpurple/protocols/novell/nmuser.c:1909
msgid "The server is unavailable; try again later"
msgstr "সার্ভার অপ্রাপ্য; পরবর্তীতে আবার চেষ্টা করুন"
-#: ../libpurple/protocols/novell/nmuser.c:1912
msgid "Cannot add a contact to the same folder twice"
msgstr "একই ফোল্ডারে একটি যোগাযোগ দুইবার যোগ করা যাবে না"
-#: ../libpurple/protocols/novell/nmuser.c:1915
msgid "Cannot add yourself"
msgstr "আপনি নিজেকে যোগ করতে পারবেন না"
# tithi
-#: ../libpurple/protocols/novell/nmuser.c:1918
msgid "Master archive is misconfigured"
msgstr "মাস্টার আর্কাইভ ভূলভাবে-বিন্যাসিত"
-#: ../libpurple/protocols/novell/nmuser.c:1922
msgid "Incorrect username or password"
msgstr "ভুল ব্যবহারকারীর নাম বা গুপ্তসংকেত"
# tithi
-#: ../libpurple/protocols/novell/nmuser.c:1925
msgid "Could not recognize the host of the username you entered"
msgstr "আপনার প্রবেশকৃত ব্যবহারকারীর-নামের হোস্ট শনাক্ত করতে পারে না"
-#: ../libpurple/protocols/novell/nmuser.c:1928
msgid ""
"Your account has been disabled because too many incorrect passwords were "
"entered"
msgstr ""
"আপনার একাউন্টটি নিষ্ক্রিয় করা হয়েছে কারণ অনেকগুলো ভুল গুপ্তসংকেত প্রবেশ করা হয়েছিল"
-#: ../libpurple/protocols/novell/nmuser.c:1931
msgid "You cannot add the same person twice to a conversation"
msgstr "আপনি একটি কথোপকথনে একই ব্যক্তিকে দুইবার যোগ করতে পারেন না"
# tithi
-#: ../libpurple/protocols/novell/nmuser.c:1935
msgid "You have reached your limit for the number of contacts allowed"
msgstr "আপনি আপনার অনুমোদিত যোগাযোগ সংখ্যার সীমায় পৌঁছেছেন"
-#: ../libpurple/protocols/novell/nmuser.c:1938
msgid "You have entered an incorrect username"
msgstr "আপনি একটি ভুল ব্যবহারকারীর নাম প্রবেশ করেছেন"
-#: ../libpurple/protocols/novell/nmuser.c:1941
msgid "An error occurred while updating the directory"
msgstr "নির্দেশিকাটি হালনাগাদ করার সময় একটি ত্রুটি দেখা দিয়েছে"
# tithi
-#: ../libpurple/protocols/novell/nmuser.c:1944
msgid "Incompatible protocol version"
msgstr "অসঙ্গতিপূর্ণ প্রোটোকল সংস্করণ"
-#: ../libpurple/protocols/novell/nmuser.c:1947
msgid "The user has blocked you"
msgstr "এই ব্যবহারকারী আপনাকে ব্লক করে রেখেছে"
# tithi
-#: ../libpurple/protocols/novell/nmuser.c:1950
msgid ""
"This evaluation version does not allow more than ten users to log in at one "
"time"
msgstr ""
"এই মূল্যায়ন সংস্করণটি একই সময়ে দশজন ব্যবহারকারীর অধিক লগইন করতে অনুমোদন করে না"
-#: ../libpurple/protocols/novell/nmuser.c:1953
msgid "The user is either offline or you are blocked"
msgstr "এই ব্যবহারকারী হয় অফলাইনে বা আপনাকে ব্লক করে রেখেছে"
-#: ../libpurple/protocols/novell/nmuser.c:1956
#, c-format
msgid "Unknown error: 0x%X"
msgstr "অজানা ত্রুটি: 0x%X"
-#: ../libpurple/protocols/novell/novell.c:124
#, c-format
msgid "Login failed (%s)."
msgstr "লগইন ব্যর্থ হয়েছে (%s)।"
-#: ../libpurple/protocols/novell/novell.c:255
#, c-format
msgid "Unable to send message. Could not get details for user (%s)."
msgstr ""
"বার্তা পাঠানো সম্ভব হয়নি। ব্যবহারকারী (%s) সম্পর্কে বিস্তারিত তথ্য পাওয়া যায়নি।"
-#: ../libpurple/protocols/novell/novell.c:404
#, c-format
msgid "Unable to add %s to your buddy list (%s)."
msgstr "%s কে আপনার বন্ধুতালিকায় (%s) যোগ করতে সমর্থ নয়।"
#. TODO: Improve this! message to who or for what conference?
-#: ../libpurple/protocols/novell/novell.c:430
#, c-format
msgid "Unable to send message (%s)."
msgstr "বার্তা (%s) পাঠাতে সমর্থ নয়।"
-#: ../libpurple/protocols/novell/novell.c:501
-#: ../libpurple/protocols/novell/novell.c:993
#, c-format
msgid "Unable to invite user (%s)."
msgstr "ব্যবহারকারীকে (%s) আমন্ত্রন জানাতে সমর্থ নয়।"
-#: ../libpurple/protocols/novell/novell.c:540
#, c-format
msgid "Unable to send message to %s. Could not create the conference (%s)."
msgstr "%s এ বার্তা পাঠাতে সমর্থ নয়। অধিবেশন (%s) তৈরি করতে পারে না। "
-#: ../libpurple/protocols/novell/novell.c:545
#, c-format
msgid "Unable to send message. Could not create the conference (%s)."
msgstr "বার্তা পাঠাতে সমর্থ নয়। অধিবেশন (%s) তৈরি করতে পারে না। "
-#: ../libpurple/protocols/novell/novell.c:592
#, c-format
msgid ""
"Unable to move user %s to folder %s in the server side list. Error while "
@@ -8983,7 +6362,6 @@ msgstr ""
"ব্যবহারকারী %s কে সার্ভারের পার্শ্বের তালিকার %s ফোল্ডারে সরিয়ে নিতে সমর্থ নয়। "
"ফোল্ডার (%s) তৈরীর সময় ত্রুটি দেখা দিয়েছে।"
-#: ../libpurple/protocols/novell/novell.c:640
#, c-format
msgid ""
"Unable to add %s to your buddy list. Error creating folder in server side "
@@ -8993,65 +6371,49 @@ msgstr ""
"তৈরীর সময় ত্রুটি দেখা দিয়েছে।"
# tithi
-#: ../libpurple/protocols/novell/novell.c:713
#, c-format
msgid "Could not get details for user %s (%s)."
msgstr "%1s (%2s) ব্যবহারকারীর জন্য বিস্তারিত বর্ণনা পাবে না।"
# msgstr "ব্যবহারকারী %s এর বিবরন পাওয়া যাচ্ছে না"
-#: ../libpurple/protocols/novell/novell.c:759
-#: ../libpurple/protocols/novell/novell.c:905
#, c-format
msgid "Unable to add user to privacy list (%s)."
msgstr "ব্যক্তিগত তালিকায় (%s) ব্যবহারকারী যোগ করা সম্ভব হয়নি।"
-#: ../libpurple/protocols/novell/novell.c:806
#, c-format
msgid "Unable to add %s to deny list (%s)."
msgstr "নিষিদ্ধ তালিকায় (%s) %s যোগ করা সম্ভব হয়নি।"
-#: ../libpurple/protocols/novell/novell.c:859
#, c-format
msgid "Unable to add %s to permit list (%s)."
msgstr "অনুমোদিত তালিকায় (%s) %s যোগ করা সম্ভব হয়নি।"
-#: ../libpurple/protocols/novell/novell.c:927
#, c-format
msgid "Unable to remove %s from privacy list (%s)."
msgstr "%s কে ব্যক্তিগত তালিকা (%s) থেকে মুছে ফেলতে সমর্থ হয়নি।"
-#: ../libpurple/protocols/novell/novell.c:950
-#: ../libpurple/protocols/novell/novell.c:1656
#, c-format
msgid "Unable to change server side privacy settings (%s)."
msgstr "সার্ভার পার্শ্বের ব্যাক্তিগত বিন্যাসনসমূহ (%s) পরিবর্তন করতে সমর্থ হয়নি।"
-#: ../libpurple/protocols/novell/novell.c:1020
#, c-format
msgid "Unable to create conference (%s)."
msgstr "অধিবেশন (%s) শুরু করতে সমর্থ হয়নি।"
# tithi
-#: ../libpurple/protocols/novell/novell.c:1131
-#: ../libpurple/protocols/novell/novell.c:1702
msgid "Error communicating with server. Closing connection."
msgstr "সার্ভারের সঙ্গে যোগাযোগে ত্রুটি। সংযোগ বন্ধ করছে।"
-#: ../libpurple/protocols/novell/novell.c:1485
msgid "Telephone Number"
msgstr "টেলিফোন নম্বর"
-#: ../libpurple/protocols/novell/novell.c:1491
msgid "Personal Title"
msgstr "ব্যক্তিগত শিরোনাম"
# tithi
-#: ../libpurple/protocols/novell/novell.c:1495
msgid "Mailstop"
msgstr "মেইল-বন্ধ"
-#: ../libpurple/protocols/novell/novell.c:1511
-#: ../libpurple/protocols/sametime/sametime.c:4184
msgid "User ID"
msgstr "ব্যবহারকারী আইডি"
@@ -9061,39 +6423,31 @@ msgstr "ব্যবহারকারী আইডি"
#. purple_notify_user_info_add_pair(user_info, tag, value);
#. }
#.
-#: ../libpurple/protocols/novell/novell.c:1524
msgid "Full name"
msgstr "সম্পূর্ন নাম"
-#: ../libpurple/protocols/novell/novell.c:1646
#, c-format
msgid "GroupWise Conference %d"
msgstr "GroupWise অধিবেশন %d"
# tithi
-#: ../libpurple/protocols/novell/novell.c:1729
msgid "Authenticating..."
msgstr "প্রমাণীকরণ..."
-#: ../libpurple/protocols/novell/novell.c:1743
msgid "Unable to connect to server."
msgstr "সার্ভারের সাথে সংযোগ স্থাপনে অসমর্থ।"
-#: ../libpurple/protocols/novell/novell.c:1746
msgid "Waiting for response..."
msgstr "উত্তরের জন্য অপেক্ষা করছে..."
-#: ../libpurple/protocols/novell/novell.c:1881
#, c-format
msgid "%s has been invited to this conversation."
msgstr "%s এই কথোপকথনে আমন্ত্রিত হয়েছে।"
-#: ../libpurple/protocols/novell/novell.c:1909
msgid "Invitation to Conversation"
msgstr "কথোপকথনে আমন্ত্রণ"
# tithi
-#: ../libpurple/protocols/novell/novell.c:1910
#, c-format
msgid ""
"Invitation from: %s\n"
@@ -9104,23 +6458,19 @@ msgstr ""
"\n"
"প্রেরিত: %2s"
-#: ../libpurple/protocols/novell/novell.c:1912
msgid "Would you like to join the conversation?"
msgstr "আপনি কি কথোপকথনে অংশগ্রহন করতে ইচ্ছুক?"
# tithi
-#: ../libpurple/protocols/novell/novell.c:2028
msgid "You have been logged out because you logged in at another workstation."
msgstr "আপনাকে প্রস্থান করছেন কারণ আপনি অন্য একটি ওয়ার্ক-ষ্টেশনে সংযুক্ত হয়েছেন।"
# tithi
-#: ../libpurple/protocols/novell/novell.c:2085
#, c-format
msgid ""
"%s appears to be offline and did not receive the message that you just sent."
msgstr "%s অফলাইনে উপস্থিত এবং আপনার প্রেরিত বার্তাটি গ্রহণ করেনি।"
-#: ../libpurple/protocols/novell/novell.c:2185
msgid ""
"Unable to connect to server. Please enter the address of the server you wish "
"to connect to."
@@ -9129,12 +6479,10 @@ msgstr ""
"ঠিকানা প্রবেশ করান।"
# tithi
-#: ../libpurple/protocols/novell/novell.c:2214
msgid "Error. SSL support is not installed."
msgstr "ত্রুটি। SSL সমর্থন সংস্থাপিত নয়।"
# tithi
-#: ../libpurple/protocols/novell/novell.c:2522
msgid "This conference has been closed. No more messages can be sent."
msgstr "এই অধিবেশনটি বন্ধ করা হয়েছে। আর কোনো বার্তা পাঠানো যাবে না।"
@@ -9149,43 +6497,24 @@ msgstr "এই অধিবেশনটি বন্ধ করা হয়ে
#. *< version
#. * summary
#. * description
-#: ../libpurple/protocols/novell/novell.c:3537
-#: ../libpurple/protocols/novell/novell.c:3539
msgid "Novell GroupWise Messenger Protocol Plugin"
msgstr "নোভেল GroupWise বার্তাবাহক প্রোটোকল প্লাগইন"
-#: ../libpurple/protocols/novell/novell.c:3564
msgid "Server address"
msgstr "সার্ভারের ঠিকানা"
-#: ../libpurple/protocols/novell/novell.c:3568
msgid "Server port"
msgstr "সার্ভারের পোর্ট"
-#: ../libpurple/protocols/oscar/family_chatnav.c:62
msgid "Could not join chat room"
msgstr "আড্ডার রুমে যুক্ত হতে পারেনি"
-#: ../libpurple/protocols/oscar/family_chatnav.c:63
msgid "Invalid chat room name"
msgstr "অবৈধ আড্ডার রুমের নাম"
-#: ../libpurple/protocols/oscar/flap_connection.c:443
-#: ../libpurple/protocols/qq/qq_network.c:400
-#: ../libpurple/protocols/yahoo/yahoo.c:2524
-#: ../libpurple/protocols/yahoo/yahoo.c:2692
-#: ../libpurple/protocols/yahoo/ycht.c:482 ../libpurple/proxy.c:801
-#: ../libpurple/proxy.c:1325 ../libpurple/proxy.c:1439
-#: ../libpurple/proxy.c:1675 ../libpurple/proxy.c:1750
msgid "Server closed the connection."
msgstr "সার্ভার সংযোগটি বন্ধ করে দিয়েছে।"
-#: ../libpurple/protocols/oscar/flap_connection.c:445
-#: ../libpurple/protocols/qq/qq_network.c:392
-#: ../libpurple/protocols/yahoo/yahoo.c:2517
-#: ../libpurple/protocols/yahoo/yahoo.c:2685 ../libpurple/proxy.c:812
-#: ../libpurple/proxy.c:1337 ../libpurple/proxy.c:1451
-#: ../libpurple/proxy.c:1686 ../libpurple/proxy.c:1762
#, c-format
msgid ""
"Lost connection with server:\n"
@@ -9194,10 +6523,6 @@ msgstr ""
"সার্ভারের সাথে সংযুক্ত হারিয়েছে:\n"
"%s"
-#: ../libpurple/protocols/oscar/flap_connection.c:448
-#: ../libpurple/proxy.c:1354 ../libpurple/proxy.c:1384
-#: ../libpurple/proxy.c:1464 ../libpurple/proxy.c:1535
-#: ../libpurple/proxy.c:1636 ../libpurple/proxy.c:1775
msgid "Received invalid data on connection with server."
msgstr "সার্ভারের সাথে সংযুক্ত অবস্থায় অবৈধ উপাত্ত গ্রহণ করেছে।"
@@ -9211,13 +6536,10 @@ msgstr "সার্ভারের সাথে সংযুক্ত অবস
#. *< version
#. * summary
#. * description
-#: ../libpurple/protocols/oscar/libaim.c:118
-#: ../libpurple/protocols/oscar/libaim.c:120
msgid "AIM Protocol Plugin"
msgstr "এআইএম প্রোটোকল প্লাগইন"
# tithi
-#: ../libpurple/protocols/oscar/libicq.c:35
msgid "ICQ UIN..."
msgstr "ICQ UIN..."
@@ -9231,47 +6553,35 @@ msgstr "ICQ UIN..."
#. *< version
#. * summary
#. * description
-#: ../libpurple/protocols/oscar/libicq.c:127
-#: ../libpurple/protocols/oscar/libicq.c:129
msgid "ICQ Protocol Plugin"
msgstr "আইসিকিউ প্রোটোকল প্লাগইন"
# tithi
-#: ../libpurple/protocols/oscar/libicq.c:156
-#: ../libpurple/protocols/yahoo/yahoo.c:4516
-#: ../libpurple/protocols/zephyr/zephyr.c:2988
msgid "Encoding"
msgstr "সঙ্কেতায়ন"
-#: ../libpurple/protocols/oscar/odc.c:42
msgid "The remote user has closed the connection."
msgstr "দূরবর্তী ব্যবহারকারী যোগাযোগটি বন্ধ করে দিয়েছে।"
-#: ../libpurple/protocols/oscar/odc.c:44
msgid "The remote user has declined your request."
msgstr "দূরবর্তী ব্যবহারকারী আপনার অনুরোধ অস্বীকার করেছে।"
# tithi
-#: ../libpurple/protocols/oscar/odc.c:46
#, c-format
msgid "Lost connection with the remote user:<br>%s"
msgstr "দূরবর্তী ব্যবহারকারীর সঙ্গে সংযোগ হারিয়েছে:<br>%s"
# tithi
-#: ../libpurple/protocols/oscar/odc.c:49
msgid "Received invalid data on connection with remote user."
msgstr "দূরবর্তী ব্যবহারকারীর সাথে সংযুক্ত অবস্থায় অবৈধ উপাত্ত গ্রহণ করেছে।"
-#: ../libpurple/protocols/oscar/odc.c:51
msgid "Could not establish a connection with the remote user."
msgstr "দূরবর্তী ব্য়বহারকারীর সাথে সংযোগ স্থাপন করতে পারেনি।"
-#: ../libpurple/protocols/oscar/odc.c:562
msgid "Direct IM established"
msgstr "সরাসরি IM স্থাপন করা হয়েছে"
# tithi
-#: ../libpurple/protocols/oscar/odc.c:601
#, c-format
msgid ""
"%s tried to send you a %s file, but we only allow files up to %s over Direct "
@@ -9282,128 +6592,102 @@ msgstr ""
"চেষ্টা করুন।\n"
# tithi
-#: ../libpurple/protocols/oscar/oft.c:656
#, c-format
msgid "File %s is %s, which is larger than the maximum size of %s."
msgstr "ফাইল %1s হলো %2s, যা %3s এর সর্বোচ্চ আকার অপেক্ষা বৃহত্তর।"
-#: ../libpurple/protocols/oscar/oscar.c:119
msgid "Invalid error"
msgstr "অবৈধ ত্রুটি"
-#: ../libpurple/protocols/oscar/oscar.c:120
msgid "Invalid SNAC"
msgstr "অবৈধ SNAC"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:121
msgid "Rate to host"
msgstr "হোস্টের হার"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:122
msgid "Rate to client"
msgstr "গ্রাহকের হার"
-#: ../libpurple/protocols/oscar/oscar.c:124
msgid "Service unavailable"
msgstr "সেবা অপ্রাপ্য"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:125
msgid "Service not defined"
msgstr "সেবা নির্ধারিত নয়"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:126
msgid "Obsolete SNAC"
msgstr "অপ্রচলিত SNAC"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:127
msgid "Not supported by host"
msgstr "হোস্ট দ্বারা সমর্থিত নয়"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:128
msgid "Not supported by client"
msgstr "গ্রাহক দ্বারা সমর্থিত নয়"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:129
msgid "Refused by client"
msgstr "গ্রাহক দ্বারা অস্বীকৃত"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:130
msgid "Reply too big"
msgstr "উত্তর অনেক বেশি বড়"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:131
msgid "Responses lost"
msgstr "সাড়াসমূহ হারিয়েছে"
-#: ../libpurple/protocols/oscar/oscar.c:132
msgid "Request denied"
msgstr "অনুরোধ প্রত্যাখ্যান করা হয়েছে"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:133
msgid "Busted SNAC payload"
msgstr "বাস্টেড SNAC পেলোড"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:134
msgid "Insufficient rights"
msgstr "অপর্যাপ্ত অধিকার"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:135
msgid "In local permit/deny"
msgstr "স্থানীয় অনুমতি/অস্বীকার এ"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:136
msgid "Warning level too high (sender)"
msgstr "সতর্কতা স্তর খুব উচ্চ (প্রেরক)"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:137
msgid "Warning level too high (receiver)"
msgstr "সতর্কতা স্তর খুব উচ্চ (গ্রাহক)"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:138
msgid "User temporarily unavailable"
msgstr "ব্যবহারকারী সাময়িকভাবে অপ্রাপ্য"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:139
msgid "No match"
msgstr "কোনো মিল নেই"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:140
msgid "List overflow"
msgstr "তালিকা অতিরিক্ত"
-#: ../libpurple/protocols/oscar/oscar.c:141
msgid "Request ambiguous"
msgstr "অনুরোধ অস্পষ্ট"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:142
msgid "Queue full"
msgstr "সারি পূর্ণ"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:143
msgid "Not while on AOL"
msgstr "এই সময়ে AOL এ নেই"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:351
msgid ""
"(There was an error receiving this message. The buddy you are speaking with "
"is probably using a different encoding than expected. If you know what "
@@ -9416,7 +6700,6 @@ msgstr ""
"পছন্দসমূহে উল্লেখ করতে পারেন।)"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:460
#, c-format
msgid ""
"(There was an error receiving this message. Either you and %s have "
@@ -9426,152 +6709,110 @@ msgstr ""
"আছে, বা %s এর একটি ত্রুটিপূর্ণ গ্রাহক রয়েছে।)"
#. Label
-#: ../libpurple/protocols/oscar/oscar.c:653 ../pidgin/gtkutils.c:2457
-#: ../pidgin/gtkutils.c:2487
-#: ../pidgin/plugins/gevolution/new_person_dialog.c:336
msgid "Buddy Icon"
msgstr "বন্ধু আইকন"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:656
msgid "Voice"
msgstr "কন্ঠ"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:659
msgid "AIM Direct IM"
msgstr "AIM সরাসরি IM"
-#: ../libpurple/protocols/oscar/oscar.c:665
-#: ../libpurple/protocols/oscar/oscar.c:6236
msgid "Get File"
msgstr "ফাইল গ্রহণ করুন"
-#: ../libpurple/protocols/oscar/oscar.c:672
msgid "Games"
msgstr "খেলা"
-#: ../libpurple/protocols/oscar/oscar.c:675
msgid "Add-Ins"
msgstr "অন্তর্যোগসমূহ"
-#: ../libpurple/protocols/oscar/oscar.c:678
msgid "Send Buddy List"
msgstr "বন্ধু তালিকা পাঠান"
-#: ../libpurple/protocols/oscar/oscar.c:681
msgid "ICQ Direct Connect"
msgstr "ICQ সরাসরি সংযোগ"
-#: ../libpurple/protocols/oscar/oscar.c:684
msgid "AP User"
msgstr "AP ব্যবহারকারী"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:687
msgid "ICQ RTF"
msgstr "ICQ RTF"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:690
msgid "Nihilist"
msgstr "নাস্তিবাদী"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:693
msgid "ICQ Server Relay"
msgstr "ICQ সার্ভার সম্প্রচার"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:696
msgid "Old ICQ UTF8"
msgstr "পুরাতন ICQ UTF8"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:699
msgid "Trillian Encryption"
msgstr "ট্রিলিয়ন সঙ্কেতায়ন"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:702
msgid "ICQ UTF8"
msgstr "ICQ UTF8"
-#: ../libpurple/protocols/oscar/oscar.c:705
msgid "Hiptop"
msgstr "হিপটপ"
-#: ../libpurple/protocols/oscar/oscar.c:708
msgid "Security Enabled"
msgstr "নিরাপত্তা সক্রিয়কৃত"
-#: ../libpurple/protocols/oscar/oscar.c:711
msgid "Video Chat"
msgstr "ভিডিও আড্ডা"
-#: ../libpurple/protocols/oscar/oscar.c:715
msgid "iChat AV"
msgstr "আইআড্ডা AV"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:718
msgid "Live Video"
msgstr "সরাসরি ভিডিও"
-#: ../libpurple/protocols/oscar/oscar.c:721
msgid "Camera"
msgstr "ক্যামেরা"
-#: ../libpurple/protocols/oscar/oscar.c:724
msgid "Screen Sharing"
msgstr "স্ক্রীন শেয়ারকরণ"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:742
-#: ../libpurple/protocols/oscar/oscar.c:6001
msgid "Free For Chat"
msgstr "আড্ডার জন্য মুক্ত"
-#: ../libpurple/protocols/oscar/oscar.c:746
-#: ../libpurple/protocols/oscar/oscar.c:6036
msgid "Not Available"
msgstr "বিদ্যমান নেই "
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:748
-#: ../libpurple/protocols/oscar/oscar.c:6022
msgid "Occupied"
msgstr "অধিষ্টিত"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:752
msgid "Web Aware"
msgstr "ওয়েব সচেতন"
-#: ../libpurple/protocols/oscar/oscar.c:754 ../libpurple/protocols/qq/qq.c:270
-#: ../libpurple/protocols/qq/qq.c:417
-#: ../libpurple/protocols/yahoo/yahoo.c:3173 ../libpurple/status.c:162
-#: ../pidgin/gtkdocklet.c:557 ../pidgin/gtkstatusbox.c:1098
msgid "Invisible"
msgstr "অদৃশ্য"
-#: ../libpurple/protocols/oscar/oscar.c:962
-#: ../libpurple/protocols/oscar/oscar.c:3913
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:721 ../pidgin/gtkprefs.c:1207
msgid "IP Address"
msgstr "আইপি ঠিকানা"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:968
msgid "Warning Level"
msgstr "সতর্কতা স্তর"
-#: ../libpurple/protocols/oscar/oscar.c:978
msgid "Buddy Comment"
msgstr "বন্ধুর মন্তব্য"
# fix me tithi
-#: ../libpurple/protocols/oscar/oscar.c:1118
#, c-format
msgid ""
"Could not connect to authentication server:\n"
@@ -9580,7 +6821,6 @@ msgstr ""
"প্রমাণীকরণ সাথে সংযুক্ত করা যায়নি:\n"
"%s"
-#: ../libpurple/protocols/oscar/oscar.c:1126
#, c-format
msgid ""
"Could not connect to BOS server:\n"
@@ -9589,23 +6829,19 @@ msgstr ""
"BOS সার্ভারের সাথে সংযুক্ত করা যায়নি:\n"
"%s"
-#: ../libpurple/protocols/oscar/oscar.c:1158
msgid "Username sent"
msgstr "ব্যবহারকারীর-নাম পাঠানো হয়েছে"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:1163
msgid "Connection established, cookie sent"
msgstr "সংযোগ প্রতিষ্ঠিত, কুকি পাঠানো হয়েছে "
# tithi
#. TODO: Don't call this with ssi
-#: ../libpurple/protocols/oscar/oscar.c:1192
msgid "Finalizing connection"
msgstr "সংযোগ চূড়ান্ত করা হচ্ছে"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:1420
#, c-format
msgid ""
"Unable to login: Could not sign on as %s because the username is invalid. "
@@ -9618,37 +6854,25 @@ msgstr ""
#. Unregistered screen name
#. uid is not exist
-#: ../libpurple/protocols/oscar/oscar.c:1506
-#: ../libpurple/protocols/qq/qq_base.c:1109
-#: ../libpurple/protocols/yahoo/yahoo.c:2144
msgid "Invalid username."
msgstr "অবৈধ ব্যবহারকারীর নাম।"
-#: ../libpurple/protocols/oscar/oscar.c:1512
-#: ../libpurple/protocols/qq/qq_base.c:415
-#: ../libpurple/protocols/qq/qq_base.c:1100
-#: ../libpurple/protocols/simple/simple.c:1130
-#: ../libpurple/protocols/yahoo/yahoo.c:2166
msgid "Incorrect password."
msgstr "ভুল গুপ্তসংকেত।"
# tithi
#. Suspended account
-#: ../libpurple/protocols/oscar/oscar.c:1516
msgid "Your account is currently suspended."
msgstr "আপনার একাউন্টটি বর্তমানে স্থগিত।"
# tithi
#. service temporarily unavailable
-#: ../libpurple/protocols/oscar/oscar.c:1521
msgid "The AOL Instant Messenger service is temporarily unavailable."
msgstr "AOL তাৎক্ষণিক বার্তাবাহক সার্ভিস সাময়িকভাবে অপ্রাপ্য।"
# tithi
#. screen name connecting too frequently
#. IP address connecting too frequently
-#: ../libpurple/protocols/oscar/oscar.c:1525
-#: ../libpurple/protocols/oscar/oscar.c:1538
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
"and try again. If you continue to try, you will need to wait even longer."
@@ -9658,105 +6882,76 @@ msgstr ""
"করতে হবে।"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:1531
#, c-format
msgid "The client version you are using is too old. Please upgrade at %s"
msgstr "আপনার ব্যবহৃত গ্রাহক সংস্করণ খুব পুরনো। অনুগ্রহ করে %s এ উন্নততর করুন"
-#: ../libpurple/protocols/oscar/oscar.c:1573
msgid "Could Not Connect"
msgstr "সংযোগ দিতে পারে না"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:1577
msgid "Received authorization"
msgstr "গৃহীত অনুমোদন প্রাপ্ত"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:1600
msgid "The SecurID key entered is invalid."
msgstr "অবৈধ নিরাপদ-আইডি কী প্রবেশ করা হয়েছে।"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:1613
msgid "Enter SecurID"
msgstr "নিরাপদ-আইডি প্রবেশ করান"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:1614
msgid "Enter the 6 digit number from the digital display."
msgstr "ডিজিটাল প্রদর্শন থেকে ৬ ডিজিটের সংখ্যা প্রবেশ করান।"
#. *
#. * A wrapper for purple_request_action() that uses @c OK and @c Cancel buttons.
#.
-#: ../libpurple/protocols/oscar/oscar.c:1616
-#: ../libpurple/protocols/oscar/oscar.c:2492
-#: ../libpurple/protocols/oscar/oscar.c:2540
-#: ../libpurple/protocols/oscar/oscar.c:6107
-#: ../libpurple/protocols/oscar/oscar.c:6393 ../libpurple/request.h:1401
msgid "_OK"
msgstr "ঠিক আছে (_O)"
-#: ../libpurple/protocols/oscar/oscar.c:1657
#, c-format
msgid "You may be disconnected shortly. If so, check %s for updates."
msgstr "আপনি সাময়িকভাবে বিচ্ছিন্ন থাকতে পারেন। হালনাগাদের জন্য %s পরীক্ষা করুন."
-#: ../libpurple/protocols/oscar/oscar.c:1661
-#: ../libpurple/protocols/oscar/oscar.c:1710
msgid "Unable to get a valid AIM login hash."
msgstr "একটি বৈধ AIM লগইন হ্যাশ পেতে ব্যর্থ।"
-#: ../libpurple/protocols/oscar/oscar.c:1706
-#: ../libpurple/protocols/oscar/oscar.c:1808
#, c-format
msgid "You may be disconnected shortly. Check %s for updates."
msgstr "আপনি সাময়িকভাবে বিচ্ছিন্ন থাকতে পারেন। হালনাগাদের জন্য %s পরীক্ষা করুন।"
-#: ../libpurple/protocols/oscar/oscar.c:1812
msgid "Unable to get a valid login hash."
msgstr "একটি বৈধ লগইন হ্যাশ পেতে ব্যর্থ।"
-#: ../libpurple/protocols/oscar/oscar.c:1843
msgid "Password sent"
msgstr "গুপ্তসঙ্কেত পাঠানো হয়েছে"
-#: ../libpurple/protocols/oscar/oscar.c:1899
msgid "Unable to initialize connection"
msgstr "সংযোগ প্রস্তুত করতে ব্যর্থ"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:2461
msgid "Please authorize me so I can add you to my buddy list."
msgstr ""
"অনুগ্রহ করে আমাকে অনুমোদন দিন যেন আমি আপনাকে আমার বন্ধু তালিকায় যুক্ত করতে পারি।"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:2490
msgid "Authorization Request Message:"
msgstr "প্রাপ্তাধিকার অনুরোধ বার্তা:"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:2491
msgid "Please authorize me!"
msgstr "অনুগ্রহ করে আমাকে অনুমোদন দিন!"
-#: ../libpurple/protocols/oscar/oscar.c:2531
-#: ../libpurple/protocols/oscar/oscar.c:2539
-#: ../libpurple/protocols/oscar/oscar.c:2666
-#: ../libpurple/protocols/oscar/oscar.c:5509
-#: ../libpurple/protocols/yahoo/yahoo.c:998
msgid "No reason given."
msgstr "কোনো কারন দর্শানো হয়নি।"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:2538
msgid "Authorization Denied Message:"
msgstr "প্রাপ্তাধিকার অগ্রাহ্য বার্তা:"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:2666
#, c-format
msgid ""
"The user %u has denied your request to add them to your buddy list for the "
@@ -9768,20 +6963,17 @@ msgstr ""
"%2s"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:2667
msgid "ICQ authorization denied."
msgstr "ICQ প্রাপ্তাধিকার অগ্রাহ্য।"
# tithi
#. Someone has granted you authorization
-#: ../libpurple/protocols/oscar/oscar.c:2674
#, c-format
msgid "The user %u has granted your request to add them to your buddy list."
msgstr ""
"%u ব্যবহারকারী আপনার বন্ধু তালিকাতে তাদেরকে যোগ করতে আপনার অনুরোধ গ্রহণ করেছে।"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:2682
#, c-format
msgid ""
"You have received a special message\n"
@@ -9795,7 +6987,6 @@ msgstr ""
"%3s "
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:2690
#, c-format
msgid ""
"You have received an ICQ page\n"
@@ -9809,7 +7000,6 @@ msgstr ""
"%3s"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:2698
#, c-format
msgid ""
"You have received an ICQ email from %s [%s]\n"
@@ -9823,32 +7013,26 @@ msgstr ""
"%3s"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:2719
#, c-format
msgid "ICQ user %u has sent you a buddy: %s (%s)"
msgstr "ICQ %1u ব্যবহারকারী আপনাকে একটি বন্ধু পাঠিয়েছে: %2s (%3s)"
-#: ../libpurple/protocols/oscar/oscar.c:2725
msgid "Do you want to add this buddy to your buddy list?"
msgstr "আপনি কি এই বন্ধুকে আপনার বন্ধু তালিকায় যোগ করতে চান?"
-#: ../libpurple/protocols/oscar/oscar.c:2730 ../pidgin/gtkroomlist.c:315
msgid "_Add"
msgstr "যোগ করুন (_A)"
-#: ../libpurple/protocols/oscar/oscar.c:2731
msgid "_Decline"
msgstr "প্রত্যাখান করুন (_D)"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:2855
#, c-format
msgid "You missed %hu message from %s because it was invalid."
msgid_plural "You missed %hu messages from %s because they were invalid."
msgstr[0] "আপনি %2$s এর %1$hu বার্তাটি হারিয়েছেন কারণ এটি অবৈধ ছিল।"
msgstr[1] "আপনি %2$s এর %1$hu বার্তাসমূহ হারিয়েছেন কারণ এটি অবৈধ ছিল।"
-#: ../libpurple/protocols/oscar/oscar.c:2864
#, c-format
msgid "You missed %hu message from %s because it was too large."
msgid_plural "You missed %hu messages from %s because they were too large."
@@ -9856,7 +7040,6 @@ msgstr[0] "আপনি %1hu বার্তাটি %2s হতে হার
msgstr[1] "আপনি %1hu বার্তাসমূহ %2s হতে হারিয়েছেন কারণ তারা অনেক বড় ছিল।"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:2873
#, c-format
msgid ""
"You missed %hu message from %s because the rate limit has been exceeded."
@@ -9868,7 +7051,6 @@ msgstr[1] ""
"আপনি %1hu বার্তাসমূহ %2s হতে হারিয়েছেন কারণ হারের সীমা অতিক্রম করা হয়েছিল।"
# fix me tithi
-#: ../libpurple/protocols/oscar/oscar.c:2882
#, c-format
msgid ""
"You missed %hu message from %s because his/her warning level is too high."
@@ -9878,7 +7060,6 @@ msgstr[0] "আপনি %1hu বার্তাটি %2s হতে হারি
msgstr[1] "আপনি %1hu বার্তাসমূহ %2s হতে হারিয়েছেন কারণ তার সতর্কতা স্তর খুব উচ্চ।"
# fix me tithi
-#: ../libpurple/protocols/oscar/oscar.c:2891
#, c-format
msgid "You missed %hu message from %s because your warning level is too high."
msgid_plural ""
@@ -9886,7 +7067,6 @@ msgid_plural ""
msgstr[0] "আপনি %1hu বার্তাটি %2s হতে হারিয়েছেন কারণ আপনার সতর্কতা স্তর খুব উচ্চ।"
msgstr[1] "আপনি %1hu বার্তাসমূহ %2s হতে হারিয়েছেন কারণ আপনার সতর্কতা স্তর খুব উচ্চ।"
-#: ../libpurple/protocols/oscar/oscar.c:2900
#, c-format
msgid "You missed %hu message from %s for an unknown reason."
msgid_plural "You missed %hu messages from %s for an unknown reason."
@@ -9894,50 +7074,37 @@ msgstr[0] "আপনি অজ্ঞাত কারণে %1hu বার্ত
msgstr[1] "আপনি অজ্ঞাত কারণে %1hu বার্তাসমূহ %2s হতে হারিয়েছেন।"
#. Data is assumed to be the destination sn
-#: ../libpurple/protocols/oscar/oscar.c:3055
#, c-format
msgid "Unable to send message: %s"
msgstr "বার্তা পাঠানো অসমর্থ: %s।"
-#: ../libpurple/protocols/oscar/oscar.c:3055
-#: ../libpurple/protocols/oscar/oscar.c:3060
-#: ../libpurple/protocols/oscar/oscar.c:3124
msgid "Unknown reason."
msgstr "অজ্ঞাত কারণ।"
-#: ../libpurple/protocols/oscar/oscar.c:3058
-#: ../libpurple/protocols/sametime/sametime.c:2466
#, c-format
msgid "Unable to send message to %s:"
msgstr "%s এ বার্তা পাঠাতে সমর্থ নয়:"
-#: ../libpurple/protocols/oscar/oscar.c:3124
#, c-format
msgid "User information not available: %s"
msgstr "ব্যবহারকারীর তথ্য সহজলভ্য় নয়: %s"
-#: ../libpurple/protocols/oscar/oscar.c:3161
msgid "Online Since"
msgstr "যখন থেকে অনলাইনে"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:3166
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1185
msgid "Member Since"
msgstr "যখন থেকে সদস্য"
-#: ../libpurple/protocols/oscar/oscar.c:3184
msgid "Profile"
msgstr "প্রোফাইল"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:3266
msgid "Your AIM connection may be lost."
msgstr "আপনার AIM সংযোগ হয়ত নষ্ট হয়ে গেছে।"
# tithi
#. The conversion failed!
-#: ../libpurple/protocols/oscar/oscar.c:3454
msgid ""
"[Unable to display a message from this user because it contained invalid "
"characters.]"
@@ -9946,7 +7113,6 @@ msgstr ""
"করেছিল।]"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:3618
msgid ""
"The last action you attempted could not be performed because you are over "
"the rate limit. Please wait 10 seconds and try again."
@@ -9954,59 +7120,44 @@ msgstr ""
"আপনি সর্বশেষ যে কার্যটে চেষ্টা করেছেন তা সম্পাদন করা যায়নি কারণ আপনি হারের সীমা "
"অতিক্রম করেছেন। অনুগ্রহ করে ১০ সেকেন্ড অপেক্ষা করুন এবং পুনরায় চেষ্টা করুন।"
-#: ../libpurple/protocols/oscar/oscar.c:3703
-#: ../libpurple/protocols/toc/toc.c:977
#, c-format
msgid "You have been disconnected from chat room %s."
msgstr "আপনাকে %s আড্ডার রুম থেকে বিচ্ছিন্ন করা হয়েছে।"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:3935
-#: ../libpurple/protocols/silc/util.c:591
-#: ../libpurple/protocols/silc10/util.c:586
msgid "Mobile Phone"
msgstr "মোবাইল ফোন"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:3964
msgid "Personal Web Page"
msgstr "ব্যক্তিগত ওয়েব পেজ"
#. aim_userinfo_t
#. strip_html_tags
-#: ../libpurple/protocols/oscar/oscar.c:3972
msgid "Additional Information"
msgstr "অতিরিক্ত তথ্য"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:3981
-#: ../libpurple/protocols/oscar/oscar.c:3989
msgid "Zip Code"
msgstr "জিপ কোড"
-#: ../libpurple/protocols/oscar/oscar.c:3992
msgid "Work Information"
msgstr "কাজের তথ্য"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:3995
msgid "Division"
msgstr "বিভাগ"
-#: ../libpurple/protocols/oscar/oscar.c:3996
msgid "Position"
msgstr "অবস্থান"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:4000
msgid "Web Page"
msgstr "ওয়েব পেজ"
-#: ../libpurple/protocols/oscar/oscar.c:4058
msgid "Pop-Up Message"
msgstr "পপ-আপ বার্তা"
-#: ../libpurple/protocols/oscar/oscar.c:4098
#, c-format
msgid "The following username is associated with %s"
msgid_plural "The following usernames are associated with %s"
@@ -10014,24 +7165,20 @@ msgstr[0] "নিম্নবর্ণিত ব্যবহারকারী
msgstr[1] "নিম্নবর্ণিত ব্যবহারকারীর-নামসমূহ %s এর সাথে সম্পর্কিত"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:4129
#, c-format
msgid "No results found for email address %s"
msgstr "%s ই-মেইল ঠিকানার জন্য কোনো ফলাফল খুঁজে পায়নি"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:4150
#, c-format
msgid "You should receive an email asking to confirm %s."
msgstr "আপনি %s নিশ্চিত করতে একটি ই-মেইল গ্রহণ করবেন।"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:4152
msgid "Account Confirmation Requested"
msgstr "একাউন্ট নিশ্চিতকরণ অনুরোধ করা হয়েছে"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:4185
#, c-format
msgid ""
"Error 0x%04x: Unable to format username because the requested name differs "
@@ -10041,13 +7188,11 @@ msgstr ""
"ভিন্ন।"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:4187
#, c-format
msgid "Error 0x%04x: Unable to format username because it is invalid."
msgstr "ত্রুটি 0x%04x: ব্যবহারকারীর নাম বিন্যাস করতে অক্ষম কারণ এটি অবৈধ।"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:4189
#, c-format
msgid ""
"Error 0x%04x: Unable to format username because the requested name is too "
@@ -10056,7 +7201,6 @@ msgstr ""
"ত্রুটি 0x%04x: ব্যবহারকারীর নাম বিন্যাস করতে অক্ষম কারণ অনুরোধকৃত নাম খুব দীর্ঘ।"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:4191
#, c-format
msgid ""
"Error 0x%04x: Unable to change email address because there is already a "
@@ -10066,7 +7210,6 @@ msgstr ""
"ইতোমধ্যে একটি অনুরোধ অমীমাংসিত রয়েছে।"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:4193
#, c-format
msgid ""
"Error 0x%04x: Unable to change email address because the given address has "
@@ -10076,7 +7219,6 @@ msgstr ""
"অনেক বেশি ব্যবহারকারী নাম রয়েছে।"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:4195
#, c-format
msgid ""
"Error 0x%04x: Unable to change email address because the given address is "
@@ -10084,39 +7226,32 @@ msgid ""
msgstr "ত্রুটি 0x%04x: ই-মেইল ঠিকানা পরিবর্তন করতে অক্ষম কারণ প্রদত্ত ঠিকানা অবৈধ।"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:4197
#, c-format
msgid "Error 0x%04x: Unknown error."
msgstr "ত্রুটি 0x%04x: অজানা ত্রুটি।"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:4199
msgid "Error Changing Account Info"
msgstr "একাউন্ট তথ্য পরিবর্তনের ত্রুটি"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:4205
#, c-format
msgid "The email address for %s is %s"
msgstr "%1s এর ই-মেইল ঠিকানা %2s"
-#: ../libpurple/protocols/oscar/oscar.c:4207
msgid "Account Info"
msgstr "একাউন্ট তথ্য"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:4393
msgid ""
"Your IM Image was not sent. You must be Direct Connected to send IM Images."
msgstr ""
"আপনার IM চিত্র পাঠানো হয়নি। আপনাকে IM চিত্র পাঠাতে সরাসরি সংযুক্ত থাকতে হবে।"
-#: ../libpurple/protocols/oscar/oscar.c:4664
msgid "Unable to set AIM profile."
msgstr "AIM প্রোফাইল নির্ধারণ করতে ব্যর্থ।"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:4665
msgid ""
"You have probably requested to set your profile before the login procedure "
"completed. Your profile remains unset; try setting it again when you are "
@@ -10127,7 +7262,6 @@ msgstr ""
"আপনাকে সম্পূর্ণভাবে সংযুক্ত।"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:4679
#, c-format
msgid ""
"The maximum profile length of %d byte has been exceeded. It has been "
@@ -10143,12 +7277,10 @@ msgstr[1] ""
"হয়েছে।"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:4684
msgid "Profile too long."
msgstr "প্রোফাইল বেশ বড়।"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:4728
#, c-format
msgid ""
"The maximum away message length of %d byte has been exceeded. It has been "
@@ -10161,12 +7293,10 @@ msgstr[0] ""
msgstr[1] ""
"সর্বোচ্চ %d বাইট দৈর্ঘ্যের বার্তা অতিক্রম করা হয়েছে। আপনার জন্য এটা হ্রাস করা হয়েছে।"
-#: ../libpurple/protocols/oscar/oscar.c:4733
msgid "Away message too long."
msgstr "দূরের বার্তাটি খুব দীর্ঘ।"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:4806
#, c-format
msgid ""
"Could not add the buddy %s because the username is invalid. Usernames must "
@@ -10177,18 +7307,13 @@ msgstr ""
"বৈধ ই-মেইল ঠিকানা থাকতে হবে, বা একটি বর্ণ দ্বারা শুরু হবে এবং শুধুমাত্র বর্ণ, সংখ্যা "
"এবং স্পেস ধারণ করবে, বা শুধুমাত্র সংখ্যা ধারণ করবে।"
-#: ../libpurple/protocols/oscar/oscar.c:4808
-#: ../libpurple/protocols/oscar/oscar.c:5278
-#: ../libpurple/protocols/oscar/oscar.c:5293
msgid "Unable to Add"
msgstr "যোগ করতে সমর্থ নয়"
-#: ../libpurple/protocols/oscar/oscar.c:4927
msgid "Unable to Retrieve Buddy List"
msgstr "বন্ধু তালিকা উদ্ধার করতে সমর্থ নয়"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:4928
msgid ""
"The AIM servers were temporarily unable to send your buddy list. Your buddy "
"list is not lost, and will probably become available in a few minutes."
@@ -10197,16 +7322,10 @@ msgstr ""
"নষ্ট হয়নি, এবং সম্ভবত কয়েক মিনিটের মধ্যে সহজলভ্য হবে।"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:5119
-#: ../libpurple/protocols/oscar/oscar.c:5121
-#: ../libpurple/protocols/oscar/oscar.c:5360
-#: ../libpurple/protocols/oscar/oscar.c:5361
-#: ../libpurple/protocols/oscar/oscar.c:5366
msgid "Orphans"
msgstr "অনাথ"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:5276
#, c-format
msgid ""
"Could not add the buddy %s because you have too many buddies in your buddy "
@@ -10216,17 +7335,13 @@ msgstr ""
"করে একজনকে অপসারণ করুন এবং পুনরায় চেষ্টা করুন।"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:5276
-#: ../libpurple/protocols/oscar/oscar.c:5291
msgid "(no name)"
msgstr "(কোনো নাম নেই)"
-#: ../libpurple/protocols/oscar/oscar.c:5290
#, c-format
msgid "Could not add the buddy %s for an unknown reason."
msgstr "একটি অজানা কারণে %s বন্ধুকে যুক্ত করা যায়নি।"
-#: ../libpurple/protocols/oscar/oscar.c:5424
#, c-format
msgid ""
"The user %s has given you permission to add him or her to your buddy list. "
@@ -10236,26 +7351,22 @@ msgstr ""
"ব্যবহারকারীকে যুক্ত করতে চান?"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:5432
msgid "Authorization Given"
msgstr "প্রাপ্তাধিকার দেওয়া হয়েছে"
# tithi
#. Granted
-#: ../libpurple/protocols/oscar/oscar.c:5505
#, c-format
msgid "The user %s has granted your request to add them to your buddy list."
msgstr ""
"%s ব্যবহারকারী আপনার বন্ধু তালিকায় তাদেরকে যোগ করতে আপনার অনুরোধ গ্রহণ করেছে।"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:5506
msgid "Authorization Granted"
msgstr "প্রাপ্তাধিকার গ্রহণ করা হয়েছে"
# tithi
#. Denied
-#: ../libpurple/protocols/oscar/oscar.c:5509
#, c-format
msgid ""
"The user %s has denied your request to add them to your buddy list for the "
@@ -10267,43 +7378,34 @@ msgstr ""
"%2s"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:5510
msgid "Authorization Denied"
msgstr "প্রাপ্তাধিকার বাতিল করেছে"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:5546
-#: ../libpurple/protocols/toc/toc.c:1371
msgid "_Exchange:"
msgstr "বিনিময় করুন: (_E)"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:5659
msgid "Your IM Image was not sent. You cannot send IM Images in AIM chats."
msgstr ""
"আপনার আইএম চিত্র পাঠানো হয়নি। আপনি AIM আড্ডাতে আইএম চিত্র পাঠাতে পারেন না।"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:5995
msgid "iTunes Music Store Link"
msgstr "আই-টিউন সঙ্গীত সংরক্ষণ লিংক"
-#: ../libpurple/protocols/oscar/oscar.c:6104
#, c-format
msgid "Buddy Comment for %s"
msgstr "%s-এর জন্য বন্ধুর মন্তব্য"
-#: ../libpurple/protocols/oscar/oscar.c:6105
msgid "Buddy Comment:"
msgstr "বন্ধুর মন্তব্য:"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:6152
#, c-format
msgid "You have selected to open a Direct IM connection with %s."
msgstr "আপনি %s এর সঙ্গে একটি সরাসরি IM সংযোগ খুলতে নির্বাচন করেছেন।"
-#: ../libpurple/protocols/oscar/oscar.c:6156
msgid ""
"Because this reveals your IP address, it may be considered a security risk. "
"Do you wish to continue?"
@@ -10311,76 +7413,60 @@ msgstr ""
"এটি আপনার IP ঠিকানা প্রকাশ করার কারণে, এতে গোপনীয়তার ঝুঁকি থাকতে পারে। আপনি কি "
"অব্যাহত রাখতে চান? "
-#: ../libpurple/protocols/oscar/oscar.c:6162
-#: ../libpurple/protocols/oscar/peer.c:1051
msgid "C_onnect"
msgstr "সংযোগ দিন (_o)"
-#: ../libpurple/protocols/oscar/oscar.c:6197
msgid "Get AIM Info"
msgstr "এআইএম তথ্য গ্রহণ করুন"
#. We only do this if the user is in our buddy list
-#: ../libpurple/protocols/oscar/oscar.c:6206
msgid "Edit Buddy Comment"
msgstr "বন্ধুর মন্তব্য সম্পাদন করুন"
-#: ../libpurple/protocols/oscar/oscar.c:6215
msgid "Get Status Msg"
msgstr "অবস্থার বার্তা গ্রহণ করুন"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:6228
msgid "Direct IM"
msgstr "সরাসরি IM"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:6250
msgid "Re-request Authorization"
msgstr "পুনঃ-অনুরোধ প্রাপ্তাধিকার"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:6309
msgid "Require authorization"
msgstr "প্রাপ্তাধিকার প্রয়োজন"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:6312
msgid "Web aware (enabling this will cause you to receive SPAM!)"
msgstr "ওয়েব সচেতন (এইটি সক্রিয় করার কারণে আপনি SPAM গ্রহণ করবেন!)"
-#: ../libpurple/protocols/oscar/oscar.c:6317
msgid "ICQ Privacy Options"
msgstr "ICQ ব্যক্তিগত পছন্দসমূহ"
-#: ../libpurple/protocols/oscar/oscar.c:6337
msgid "The new formatting is invalid."
msgstr "নতুন বিন্যাসকরণটি অবৈধ।"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:6338
msgid "Username formatting can change only capitalization and whitespace."
msgstr ""
"ব্যবহারকারীর-নাম বিন্যাসকরণ শুধুমাত্র ঊর্ধ্ববর্ণানুক্রমিক এবং ফাঁকা জায়গা পরিবর্তন করতে "
"পারে।"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:6391
msgid "Change Address To:"
msgstr "ঠিকানা পরিবর্তন করুন:"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:6437
msgid "<i>you are not waiting for authorization</i>"
msgstr "<i>আপনি প্রাপ্তাধিকারের জন্য অপেক্ষা করছেন না</i>"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:6440
msgid "You are awaiting authorization from the following buddies"
msgstr "আপনি নিম্নোক্ত বন্ধু থেকে প্রাপ্তাধিকারের জন্য অপেক্ষা করছেন"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:6441
msgid ""
"You can re-request authorization from these buddies by right-clicking on "
"them and selecting \"Re-request Authorization.\""
@@ -10389,74 +7475,59 @@ msgstr ""
"তাদের থেকে প্রাপ্তাধিকার পুনরায় অনুরোধ করতে পারেন।"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:6458
msgid "Find Buddy by Email"
msgstr "ই-মেইলের মাধ্যমে বন্ধু খুঁজুন"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:6459
msgid "Search for a buddy by email address"
msgstr "ই-মেইল ঠিকানার মাধ্যমে বন্ধু খুঁজুন"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:6460
msgid "Type the email address of the buddy you are searching for."
msgstr "আপনি যে বন্ধু খুঁজছেন তার ই-মেইল ঠিকানা টাইপ করুন।"
-#: ../libpurple/protocols/oscar/oscar.c:6463
msgid "_Search"
msgstr "খুঁজুন (_S)"
-#: ../libpurple/protocols/oscar/oscar.c:6618
msgid "Set User Info (web)..."
msgstr "ব্যবহারকারী তথ্য নির্ধারণ করুন (ওয়েব)..."
-#: ../libpurple/protocols/oscar/oscar.c:6629
msgid "Change Password (web)"
msgstr "গুপ্তসংকেত পরিবর্তন করুন (ওয়েব)"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:6633
msgid "Configure IM Forwarding (web)"
msgstr "IM অগ্রবর্তীকরণ বিন্যাসন করুন (ওয়েব)"
#. ICQ actions
-#: ../libpurple/protocols/oscar/oscar.c:6643
msgid "Set Privacy Options..."
msgstr "ব্যক্তিগত পছন্দসমূহ নির্ধারণ করুন..."
#. AIM actions
-#: ../libpurple/protocols/oscar/oscar.c:6650
msgid "Confirm Account"
msgstr "একাউন্ট নিশ্চিত করুন"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:6654
msgid "Display Currently Registered Email Address"
msgstr "বর্তমানে নিবন্ধণকৃত ই-মেইল ঠিকানা প্রদর্শন করুন"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:6658
msgid "Change Currently Registered Email Address..."
msgstr "বর্তমানে নিবন্ধণকৃত ই-মেইল ঠিকানা পরিবর্তন করুন..."
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:6665
msgid "Show Buddies Awaiting Authorization"
msgstr "বন্ধুদের অপেক্ষমান প্রাপ্তাধিকার প্রদর্শন করুন"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:6671
msgid "Search for Buddy by Email Address..."
msgstr "ই-মেইল ঠিকানার মাধ্যমে বন্ধুদের খুঁজুন..."
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:6676
msgid "Search for Buddy by Information"
msgstr "তথ্য দ্বারা বন্ধুদের খুঁজুন"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:6864
msgid ""
"Always use AIM/ICQ proxy server for\n"
"file transfers and direct IM (slower,\n"
@@ -10467,33 +7538,27 @@ msgstr ""
"(অপেক্ষাকৃত ধীর, কিন্তু আপনার আইপি ঠিকানা প্রকাশ করে না)"
# tithi
-#: ../libpurple/protocols/oscar/oscar.c:6868
msgid "Allow multiple simultaneous logins"
msgstr "একাধিক যুগপৎ লগইন অনুমোদন করুন"
# tithi
-#: ../libpurple/protocols/oscar/peer.c:703
#, c-format
msgid "Asking %s to connect to us at %s:%hu for Direct IM."
msgstr ""
"%2s এ আমাদের সাথে সংযোগ করতে %1s কে জিজ্ঞাসা করছে: সরাসরি আইএম এর জন্য %3hu।"
-#: ../libpurple/protocols/oscar/peer.c:788
#, c-format
msgid "Attempting to connect to %s:%hu."
msgstr "%1s এর সাথে সংযোগ স্থাপনের চেষ্টা করছে:%2hu।"
-#: ../libpurple/protocols/oscar/peer.c:862
msgid "Attempting to connect via proxy server."
msgstr "প্রক্সি সার্ভারের মাধ্যমে সংযোগ স্থাপনের চেষ্টা করছে।"
# tithi
-#: ../libpurple/protocols/oscar/peer.c:1039
#, c-format
msgid "%s has just asked to directly connect to %s"
msgstr "%1s এইমাত্র %2s এর সাথে সরাসরি সংযোগ করতে জিজ্ঞাসা করেছে"
-#: ../libpurple/protocols/oscar/peer.c:1043
msgid ""
"This requires a direct connection between the two computers and is necessary "
"for IM Images. Because your IP address will be revealed, this may be "
@@ -10504,476 +7569,344 @@ msgstr ""
"পারে।"
# tithi
-#: ../libpurple/protocols/qq/buddy_info.c:42
msgid "Aquarius"
msgstr "কুম্ভ রাশি"
# tithi
-#: ../libpurple/protocols/qq/buddy_info.c:42
msgid "Pisces"
msgstr "মীন রাশি"
-#: ../libpurple/protocols/qq/buddy_info.c:42
msgid "Aries"
msgstr "মেষ রাশি"
# tithi
-#: ../libpurple/protocols/qq/buddy_info.c:42
msgid "Taurus"
msgstr "বৃষ রাশি"
-#: ../libpurple/protocols/qq/buddy_info.c:43
msgid "Gemini"
msgstr "মিথুন রাশি"
-#: ../libpurple/protocols/qq/buddy_info.c:43
msgid "Cancer"
msgstr "কর্কট রাশি"
# tithi
-#: ../libpurple/protocols/qq/buddy_info.c:43
msgid "Leo"
msgstr "সিংহ রাশি"
# tithi
-#: ../libpurple/protocols/qq/buddy_info.c:43
msgid "Virgo"
msgstr "কন্যা রাশি"
# tithi
-#: ../libpurple/protocols/qq/buddy_info.c:43
msgid "Libra"
msgstr "তুলা রাশি"
-#: ../libpurple/protocols/qq/buddy_info.c:44
msgid "Scorpio"
msgstr "বৃশ্চিক রাশি"
# tithi
-#: ../libpurple/protocols/qq/buddy_info.c:44
msgid "Sagittarius"
msgstr "ধনু রাশি"
# tithi
-#: ../libpurple/protocols/qq/buddy_info.c:44
msgid "Capricorn"
msgstr "মকর রাশি"
-#: ../libpurple/protocols/qq/buddy_info.c:49
msgid "Rat"
msgstr "ইদুর"
# tithi
-#: ../libpurple/protocols/qq/buddy_info.c:49
msgid "Ox"
msgstr "ষাঁড়"
-#: ../libpurple/protocols/qq/buddy_info.c:49
msgid "Tiger"
msgstr "বাঘ"
# tithi
-#: ../libpurple/protocols/qq/buddy_info.c:49
msgid "Rabbit"
msgstr "খরগোশ"
# tithi
-#: ../libpurple/protocols/qq/buddy_info.c:50
msgid "Dragon"
msgstr "ড্রাগন"
-#: ../libpurple/protocols/qq/buddy_info.c:50
msgid "Snake"
msgstr "সাপ"
-#: ../libpurple/protocols/qq/buddy_info.c:50
msgid "Horse"
msgstr "ঘোড়া"
# tithi
-#: ../libpurple/protocols/qq/buddy_info.c:50
msgid "Goat"
msgstr "ছাগল"
-#: ../libpurple/protocols/qq/buddy_info.c:50
msgid "Monkey"
msgstr "বানর"
-#: ../libpurple/protocols/qq/buddy_info.c:51
msgid "Rooster"
msgstr "মোরগ"
# tithi
-#: ../libpurple/protocols/qq/buddy_info.c:51
msgid "Dog"
msgstr "কুকুর"
-#: ../libpurple/protocols/qq/buddy_info.c:51
msgid "Pig"
msgstr "শূকর"
-#: ../libpurple/protocols/qq/buddy_info.c:56
msgid "Other"
msgstr "অন্যান্য"
-#: ../libpurple/protocols/qq/buddy_info.c:61
msgid "Visible"
msgstr "দৃশ্যমান"
# tithi
-#: ../libpurple/protocols/qq/buddy_info.c:61
msgid "Friend Only"
msgstr "শুধুমাত্র বন্ধু"
-#: ../libpurple/protocols/qq/buddy_info.c:61
-#: ../libpurple/protocols/qq/buddy_info.c:66
msgid "Private"
msgstr "ব্যক্তিগত"
# tithi
-#: ../libpurple/protocols/qq/buddy_info.c:111
msgid "QQ Number"
msgstr "QQ নম্বর"
-#: ../libpurple/protocols/qq/buddy_info.c:113
msgid "Country/Region"
msgstr "দেশ/এলাকা"
# tithi
-#: ../libpurple/protocols/qq/buddy_info.c:114
msgid "Province/State"
msgstr "প্রদেশ/রাজ্য"
# tithi
-#: ../libpurple/protocols/qq/buddy_info.c:115
msgid "Zipcode"
msgstr "জিপকোড"
-#: ../libpurple/protocols/qq/buddy_info.c:117
msgid "Phone Number"
msgstr "টেলিফোন নম্বর"
-#: ../libpurple/protocols/qq/buddy_info.c:129
msgid "Authorize adding"
msgstr "অনুমোদিত সংযুক্তকরণ"
-#: ../libpurple/protocols/qq/buddy_info.c:133
msgid "Cellphone Number"
msgstr "সেলফোন নম্বর"
-#: ../libpurple/protocols/qq/buddy_info.c:135
msgid "Personal Introduction"
msgstr "ব্যক্তিগত ভূমিকা"
-#: ../libpurple/protocols/qq/buddy_info.c:136
msgid "City/Area"
msgstr "শহর/এলাকা"
-#: ../libpurple/protocols/qq/buddy_info.c:140
msgid "Publish Mobile"
msgstr "মোবাইল প্রকাশ করুন"
-#: ../libpurple/protocols/qq/buddy_info.c:141
msgid "Publish Contact"
msgstr "যোগাযোগ প্রকাশ করুন"
-#: ../libpurple/protocols/qq/buddy_info.c:142
msgid "College"
msgstr "কলেজ"
-#: ../libpurple/protocols/qq/buddy_info.c:143
msgid "Horoscope"
msgstr "রাশি চক্র"
# tithi
-#: ../libpurple/protocols/qq/buddy_info.c:144
msgid "Zodiac"
msgstr "জোডিয়াক"
-#: ../libpurple/protocols/qq/buddy_info.c:145
msgid "Blood"
msgstr "রক্ত"
# tithi
-#: ../libpurple/protocols/qq/buddy_info.c:195
msgid "True"
msgstr "সত্য"
-#: ../libpurple/protocols/qq/buddy_info.c:195
msgid "False"
msgstr "মিথ্যা"
-#: ../libpurple/protocols/qq/buddy_info.c:415
-#: ../libpurple/protocols/qq/buddy_info.c:416
-#: ../libpurple/protocols/qq/qq.c:770
msgid "Modify Contact"
msgstr "যোগাযোগ পরিবর্তন করুন"
-#: ../libpurple/protocols/qq/buddy_info.c:418
-#: ../libpurple/protocols/qq/buddy_info.c:419
-#: ../libpurple/protocols/qq/qq.c:767
msgid "Modify Address"
msgstr "ঠিকানা পরিবর্তন করুন"
-#: ../libpurple/protocols/qq/buddy_info.c:421
-#: ../libpurple/protocols/qq/buddy_info.c:422
-#: ../libpurple/protocols/qq/qq.c:764
msgid "Modify Extended Information"
msgstr "বর্ধিত তথ্য পরিবর্তন করুন"
-#: ../libpurple/protocols/qq/buddy_info.c:426
-#: ../libpurple/protocols/qq/buddy_info.c:427
-#: ../libpurple/protocols/qq/qq.c:761
msgid "Modify Information"
msgstr "তথ্য পরিবর্তন করুন"
-#: ../libpurple/protocols/qq/buddy_info.c:440
msgid "Update"
msgstr "হালনাগাদ করুন"
-#: ../libpurple/protocols/qq/buddy_info.c:460
msgid "Could not change buddy information."
msgstr "বন্ধুর তথ্য পরিবর্তন করতে পারে না।"
# tithi
-#: ../libpurple/protocols/qq/buddy_opt.c:320
#, c-format
msgid "%u requires verification"
msgstr "%u এর সত্যতা যাচাই করা প্রয়োজন"
-#: ../libpurple/protocols/qq/buddy_opt.c:321
msgid "Add buddy question"
msgstr "বন্ধুর প্রশ্ন যোগ করুন"
# tithi
-#: ../libpurple/protocols/qq/buddy_opt.c:322
msgid "Enter answer here"
msgstr "এখানে উত্তর প্রবেশ করান"
-#: ../libpurple/protocols/qq/buddy_opt.c:325
-#: ../libpurple/protocols/qq/buddy_opt.c:669
-#: ../libpurple/protocols/qq/group_join.c:149
msgid "Send"
msgstr "প্রেরণ করুন"
-#: ../libpurple/protocols/qq/buddy_opt.c:446
msgid "Invalid answer."
msgstr "অবৈধ উত্তর।"
-#: ../libpurple/protocols/qq/buddy_opt.c:618
-#: ../libpurple/protocols/qq/group_opt.c:124
-#: ../libpurple/protocols/yahoo/yahoo.c:997
msgid "Authorization denied message:"
msgstr "প্রাপ্তাধিকার বার্তা অস্বীকার করেছে:"
# tithi
-#: ../libpurple/protocols/qq/buddy_opt.c:619
msgid "Sorry, you're not my style."
msgstr "দুঃখিত,আপনি আমার শৈলী নয়।"
-#: ../libpurple/protocols/qq/buddy_opt.c:664
#, c-format
msgid "%u needs authorization"
msgstr "%u এর প্রাপ্তাধিকার প্রয়োজন"
-#: ../libpurple/protocols/qq/buddy_opt.c:665
msgid "Add buddy authorize"
msgstr "বন্ধুর অনুমোদন যোগ করুন"
# tithi
-#: ../libpurple/protocols/qq/buddy_opt.c:666
msgid "Enter request here"
msgstr "এখানে অনুরোধ প্রবেশ করান"
-#: ../libpurple/protocols/qq/buddy_opt.c:667
-#: ../libpurple/protocols/qq/group_join.c:148
msgid "Would you be my friend?"
msgstr "আপনি কি আমার বন্ধু হবেন?"
-#: ../libpurple/protocols/qq/buddy_opt.c:704
-#: ../libpurple/protocols/qq/buddy_opt.c:729
-#: ../libpurple/protocols/qq/buddy_opt.c:733
-#: ../libpurple/protocols/qq/buddy_opt.c:749
-#: ../libpurple/protocols/qq/buddy_opt.c:774
-#: ../libpurple/protocols/qq/buddy_opt.c:1248
msgid "QQ Buddy"
msgstr "QQ বন্ধু"
-#: ../libpurple/protocols/qq/buddy_opt.c:704
msgid "Add buddy"
msgstr "বন্ধু যোগ করুন"
-#: ../libpurple/protocols/qq/buddy_opt.c:704
msgid "Invalid QQ Number"
msgstr "অবৈধ QQ নম্বর"
-#: ../libpurple/protocols/qq/buddy_opt.c:729
-#: ../libpurple/protocols/qq/buddy_opt.c:733
msgid "Failed sending authorize"
msgstr "অনুমোদন পাঠাতে ব্যর্থ হয়েছে"
-#: ../libpurple/protocols/qq/buddy_opt.c:748
#, c-format
msgid "Failed removing buddy %u"
msgstr "%u বন্ধুকে অপসারণ করতে ব্যর্থ হয়েছে"
-#: ../libpurple/protocols/qq/buddy_opt.c:773
#, c-format
msgid "Failed removing me from %d's buddy list"
msgstr "%d এর বন্ধু তালিকা থেকে আমাকে অপসারণ করতে ব্যর্থ হয়েছে"
-#: ../libpurple/protocols/qq/buddy_opt.c:984
-#: ../libpurple/protocols/qq/buddy_opt.c:1100
-#: ../libpurple/protocols/qq/buddy_opt.c:1225
-#: ../libpurple/protocols/qq/buddy_opt.c:1236
msgid "No reason given"
msgstr "কোনো কারন দর্শানো হয়নি"
#. only need to get value
-#: ../libpurple/protocols/qq/buddy_opt.c:1130
#, c-format
msgid "You have been added by %s"
msgstr "আপনি %s দ্বারা সংযুক্ত হয়েছেন"
-#: ../libpurple/protocols/qq/buddy_opt.c:1132
msgid "Would you like to add him?"
msgstr "আপনি কি তাকে যোগ করতে চান?"
-#: ../libpurple/protocols/qq/buddy_opt.c:1245
#, c-format
msgid "Rejected by %s"
msgstr "%s দ্বারা বাতিল করা হয়েছে"
-#: ../libpurple/protocols/qq/buddy_opt.c:1246
#, c-format
msgid "Message: %s"
msgstr "বার্তা: %s"
# tithi
-#: ../libpurple/protocols/qq/group.c:65
msgid "ID: "
msgstr "আইডি:"
-#: ../libpurple/protocols/qq/group.c:98
msgid "Group ID"
msgstr "দলের আইডি"
# tithi
-#: ../libpurple/protocols/qq/group.c:107
msgid "QQ Qun"
msgstr "QQ Qun"
-#: ../libpurple/protocols/qq/group.c:108
msgid "Please enter Qun number"
msgstr "অনুগ্রহ করে Qun নম্বর প্রবেশ করান"
# tithi
-#: ../libpurple/protocols/qq/group.c:109
msgid "You can only search for permanent Qun\n"
msgstr "আপনি শুধুমাত্র স্থায়ী Qun খুঁজতে পারেন\n"
-#: ../libpurple/protocols/qq/group_im.c:398
-#: ../libpurple/protocols/qq/group_im.c:402
-#: ../libpurple/protocols/qq/im.c:1287 ../libpurple/protocols/qq/im.c:1291
msgid "(Invalid UTF-8 string)"
msgstr "(অবৈধ UTF-8 স্ট্রিং)"
# tithi
-#: ../libpurple/protocols/qq/group_info.c:114
msgid "Not member"
msgstr "সদস্য নয়"
# tithi
-#: ../libpurple/protocols/qq/group_info.c:117
-#: ../libpurple/protocols/qq/qq.c:336
msgid "Member"
msgstr "সদস্য"
-#: ../libpurple/protocols/qq/group_info.c:120
msgid "Requesting"
msgstr "অনুরোধ করছে"
-#: ../libpurple/protocols/qq/group_info.c:123
msgid "Admin"
msgstr "প্রশাসন"
-#: ../libpurple/protocols/qq/group_info.c:142
msgid "Notice"
msgstr "বিজ্ঞপ্তি"
-#: ../libpurple/protocols/qq/group_info.c:143
msgid "Detail"
msgstr "বিস্তারিত"
# tithi
-#: ../libpurple/protocols/qq/group_info.c:148
msgid "Creator"
msgstr "তৈরীকারক"
-#: ../libpurple/protocols/qq/group_info.c:152
msgid "About me"
msgstr "আমার সম্পর্কে"
-#: ../libpurple/protocols/qq/group_info.c:156
msgid "Category"
msgstr "শ্রেণী"
# tithi
-#: ../libpurple/protocols/qq/group_join.c:95
msgid "The Qun does not allow others to join"
msgstr "Qun অন্যদের যুক্ত করতে অনুমতি দেয় না"
-#: ../libpurple/protocols/qq/group_join.c:146
msgid "Join QQ Qun"
msgstr "QQ Qun যুক্ত করুন"
# tithi
-#: ../libpurple/protocols/qq/group_join.c:147
msgid "Input request here"
msgstr "এখানে অনুরোধ ইনপুট দিন"
# tithi
-#: ../libpurple/protocols/qq/group_join.c:222
#, c-format
msgid "Successfully joined Qun %s (%u)"
msgstr "%s (%u) Qun সফলভাবে যুক্ত করেছে"
-#: ../libpurple/protocols/qq/group_join.c:226
msgid "Successfully joined Qun"
msgstr "Qun সফলভাবে যুক্ত করেছে"
# tithi
-#: ../libpurple/protocols/qq/group_join.c:270
#, c-format
msgid "Qun %u denied from joining"
msgstr "%u Qun যুক্তকরণ বাতিল করেছে"
-#: ../libpurple/protocols/qq/group_join.c:271
-#: ../libpurple/protocols/qq/group_join.c:279
-#: ../libpurple/protocols/qq/group_join.c:331
-#: ../libpurple/protocols/qq/group_opt.c:348
-#: ../libpurple/protocols/qq/group_opt.c:445
-#: ../libpurple/protocols/qq/group_opt.c:482
msgid "QQ Qun Operation"
msgstr "QQ Qun অপারেশন"
-#: ../libpurple/protocols/qq/group_join.c:271
-#: ../libpurple/protocols/qq/group_join.c:279
msgid "Failed:"
msgstr "ব্যর্থ:"
# tithi
-#: ../libpurple/protocols/qq/group_join.c:279
msgid "Join Qun, Unknown Reply"
msgstr "Qun যুক্ত করুন, অজানা উত্তর"
-#: ../libpurple/protocols/qq/group_join.c:332
-#: ../libpurple/protocols/qq/qq.c:848
msgid "Quit Qun"
msgstr "Qun ত্যাগ করুন"
# tithi
-#: ../libpurple/protocols/qq/group_join.c:333
msgid ""
"Note, if you are the creator, \n"
"this operation will eventually remove this Qun."
@@ -10982,245 +7915,203 @@ msgstr ""
"এই অপারেশনটি সবশেষে এই Qunটি অপসারণ করবে।"
# tithi
-#: ../libpurple/protocols/qq/group_opt.c:125
msgid "Sorry, you are not our style"
msgstr "দুঃখিত,আপনি আমাদের শৈলী নন"
-#: ../libpurple/protocols/qq/group_opt.c:207
msgid "Successfully changed Qun members"
msgstr "Qun সদস্যদের সফলভাবে পরিবর্তন করা হয়েছে"
-#: ../libpurple/protocols/qq/group_opt.c:251
msgid "Successfully changed Qun information"
msgstr "Qun তথ্য সফলভাবে পরিবর্তন করা হয়েছে"
# tithi
-#: ../libpurple/protocols/qq/group_opt.c:349
msgid "You have successfully created a Qun"
msgstr "আপনি Qun সফলভাবে তৈরি করেছেন"
-#: ../libpurple/protocols/qq/group_opt.c:350
msgid "Would you like to set up detailed information now?"
msgstr "আপনি কি এখন বিস্তারিত তথ্য সংস্থাপন করতে চান?"
-#: ../libpurple/protocols/qq/group_opt.c:354
msgid "Setup"
msgstr "সংস্থাপন করুন"
-#: ../libpurple/protocols/qq/group_opt.c:425
#, c-format
msgid "%u requested to join Qun %u for %s"
msgstr "%1$u %3$s এর জন্য %2$u Qun যোগ করতে অনুরোধ করছে"
-#: ../libpurple/protocols/qq/group_opt.c:438
#, c-format
msgid "%u request to join Qun %u"
msgstr "%1u %2u Qun যোগ করতে অনুরোধ করছে"
-#: ../libpurple/protocols/qq/group_opt.c:480
#, c-format
msgid "Failed to join Qun %u, operated by admin %u"
msgstr "%u প্রশাসন দ্বারা পরিচালিত, Qun %u যোগ করতে ব্যর্থ হয়েছে"
# tithi
-#: ../libpurple/protocols/qq/group_opt.c:522
#, c-format
msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr "<b>%3$s এর জন্য %2$u প্রশাসন দ্বারা %1$u Qun যুক্ত করার অনুমোদন দিয়েছে</b>"
-#: ../libpurple/protocols/qq/group_opt.c:557
#, c-format
msgid "<b>Removed buddy %u.</b>"
msgstr "<b>%u বন্ধু অপসারণ করা হয়েছে।</b>"
# tithi
-#: ../libpurple/protocols/qq/group_opt.c:590
#, c-format
msgid "<b>New buddy %u joined.</b>"
msgstr "<b>নতুন %u বন্ধু যোগদান করেছে।</b>"
-#: ../libpurple/protocols/qq/qq.c:276
#, c-format
msgid "Unknown-%d"
msgstr "অজানা-%d"
-#: ../libpurple/protocols/qq/qq.c:330
msgid "Level"
msgstr "স্তর"
# tithi
-#: ../libpurple/protocols/qq/qq.c:339
msgid " VIP"
msgstr " VIP"
# tithi
-#: ../libpurple/protocols/qq/qq.c:342
msgid " TCP"
msgstr " TCP"
-#: ../libpurple/protocols/qq/qq.c:345
msgid " FromMobile"
msgstr " FromMobile"
-#: ../libpurple/protocols/qq/qq.c:348
msgid " BindMobile"
msgstr " BindMobile"
-#: ../libpurple/protocols/qq/qq.c:351
msgid " Video"
msgstr "ভিডিও"
-#: ../libpurple/protocols/qq/qq.c:355
msgid " Zone"
msgstr "এলাকা"
# tithi
-#: ../libpurple/protocols/qq/qq.c:357 ../libpurple/protocols/qq/qq.c:370
msgid "Flag"
msgstr "পতাকা"
# tithi
-#: ../libpurple/protocols/qq/qq.c:365
msgid "Ver"
msgstr "Ver"
-#: ../libpurple/protocols/qq/qq.c:454 ../libpurple/protocols/qq/qq.c:907
msgid "Invalid name"
msgstr "অবৈধ নাম"
-#: ../libpurple/protocols/qq/qq.c:500
msgid "Select icon..."
msgstr "আইকন নির্বাচন করুন..."
-#: ../libpurple/protocols/qq/qq.c:570
#, c-format
msgid "<b>Login time</b>: %d-%d-%d, %d:%d:%d<br>\n"
msgstr "<b>লগইন সময়</b>: %1d-%2d-%3d, %4d:%5d:%6d<br>\n"
-#: ../libpurple/protocols/qq/qq.c:573
#, c-format
msgid "<b>Total Online Buddies</b>: %d<br>\n"
msgstr "<b>সর্বমোট অনলাইন বন্ধু</b>: %d<br>\n"
# fix me tithi
-#: ../libpurple/protocols/qq/qq.c:575
#, c-format
msgid "<b>Last Refresh</b>: %d-%d-%d, %d:%d:%d<br>\n"
msgstr "<b>সর্বশেষ রিফ্রেশ</b>: %1d-%2d-%3d, %4d:%5d:%6d<br>\n"
-#: ../libpurple/protocols/qq/qq.c:581
#, c-format
msgid "<b>Server</b>: %s<br>\n"
msgstr "<b>সার্ভার</b>: %s<br>\n"
-#: ../libpurple/protocols/qq/qq.c:582
#, c-format
msgid "<b>Client Tag</b>: %s<br>\n"
msgstr "<b>ক্লায়েন্ট ট্যাগ</b>: %s<br>\n"
-#: ../libpurple/protocols/qq/qq.c:583
#, c-format
msgid "<b>Connection Mode</b>: %s<br>\n"
msgstr "<b>সংযোগ মোড</b>: %s<br>\n"
-#: ../libpurple/protocols/qq/qq.c:584
#, c-format
msgid "<b>My Internet IP</b>: %s:%d<br>\n"
msgstr "<b>আমার ইন্টারনেট IP</b>: %1s:%2d<br>\n"
-#: ../libpurple/protocols/qq/qq.c:588
#, c-format
msgid "<b>Sent</b>: %lu<br>\n"
msgstr "<b>পাঠানো হয়েছে</b>: %lu<br>\n"
-#: ../libpurple/protocols/qq/qq.c:589
#, c-format
msgid "<b>Resend</b>: %lu<br>\n"
msgstr "<b>পুনরায় পাঠানো হয়েছে</b>: %lu<br>\n"
-#: ../libpurple/protocols/qq/qq.c:590
#, c-format
msgid "<b>Lost</b>: %lu<br>\n"
msgstr "<b>হারিয়ে গেছে</b>: %lu<br>\n"
-#: ../libpurple/protocols/qq/qq.c:591
#, c-format
msgid "<b>Received</b>: %lu<br>\n"
msgstr "<b>গৃহীত</b>: %lu<br>\n"
-#: ../libpurple/protocols/qq/qq.c:592
#, c-format
msgid "<b>Received Duplicate</b>: %lu<br>\n"
msgstr "<b>অনুরুপ গৃহীত হয়েছে</b>: %lu<br>\n"
-#: ../libpurple/protocols/qq/qq.c:599
#, c-format
msgid "<b>Time</b>: %d-%d-%d, %d:%d:%d<br>\n"
msgstr "<b>সময়</b>: %1d-%2d-%3d, %4d:%5d:%6d<br>\n"
-#: ../libpurple/protocols/qq/qq.c:604
#, c-format
msgid "<b>IP</b>: %s<br>\n"
msgstr "<b>আইপি</b>: %s<br>\n"
-#: ../libpurple/protocols/qq/qq.c:609
msgid "Login Information"
msgstr "লগইন তথ্য"
# tithi
-#: ../libpurple/protocols/qq/qq.c:625
msgid "<p><b>Original Author</b>:<br>\n"
msgstr "<p><b> মূল লেখক</b>:<br>\n"
# tithi
-#: ../libpurple/protocols/qq/qq.c:628
msgid "<p><b>Code Contributors</b>:<br>\n"
msgstr "<p><b> কোড অংশগ্রহণকারীগণ</b>:<br>\n"
-#: ../libpurple/protocols/qq/qq.c:643
msgid "<p><b>Lovely Patch Writers</b>:<br>\n"
msgstr "<p><b>প্রিয় প্যাচ লেখকগণ </b>:<br>\n"
-#: ../libpurple/protocols/qq/qq.c:650
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<p><b>প্রাপ্তিস্বীকার</b>:<br>\n"
+# tithi
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<p><b> মূল লেখক</b>:<br>\n"
+
# fix me tithi
-#: ../libpurple/protocols/qq/qq.c:663
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr "<p><i>এবং, সমস্ত ছেলে পিছন-কামরায়...</i><br>\n"
# tithi
-#: ../libpurple/protocols/qq/qq.c:664
msgid "<i>Feel free to join us!</i> :)"
msgstr "<i>আমাদের সাথে উন্মুক্তভাবে যোগদান করুন!</i> :)"
-#: ../libpurple/protocols/qq/qq.c:667
#, c-format
msgid "About OpenQ %s"
msgstr "%s ওপেনQ সম্পর্কে"
-#: ../libpurple/protocols/qq/qq.c:758
msgid "Change Icon"
msgstr "আইকন পরিবর্তন করুন"
-#: ../libpurple/protocols/qq/qq.c:773 ../libpurple/protocols/toc/toc.c:1680
msgid "Change Password"
msgstr "গুপ্তসংকেত পরিবর্তন করুন"
-#: ../libpurple/protocols/qq/qq.c:776
msgid "Account Information"
msgstr "একাউন্ট তথ্য"
# tithi
-#: ../libpurple/protocols/qq/qq.c:779
msgid "Update all QQ Quns"
msgstr "সব QQ Quns হালনাগাদ করুন"
-#: ../libpurple/protocols/qq/qq.c:782
msgid "About OpenQ"
msgstr "ওপেনQ সম্বন্ধে"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "ঠিকানা পরিবর্তন করুন"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -11231,140 +8122,112 @@ msgstr "ওপেনQ সম্বন্ধে"
#. *< version
#. * summary
#. * description
-#: ../libpurple/protocols/qq/qq.c:1011 ../libpurple/protocols/qq/qq.c:1013
msgid "QQ Protocol Plugin"
msgstr "QQ প্রটোকল প্লাগইন"
-#: ../libpurple/protocols/qq/qq.c:1051
msgid "Auto"
msgstr "স্বয়ংক্রিয়"
-#: ../libpurple/protocols/qq/qq.c:1068
msgid "Select Server"
msgstr "সার্ভার নির্বাচন করুন"
# tithi
-#: ../libpurple/protocols/qq/qq.c:1072
msgid "QQ2005"
msgstr "QQ২০০৫"
# tithi
-#: ../libpurple/protocols/qq/qq.c:1077
msgid "QQ2007"
msgstr "QQ২০০৭"
# tithi
-#: ../libpurple/protocols/qq/qq.c:1082
msgid "QQ2008"
msgstr "QQ২০০৮"
-#: ../libpurple/protocols/qq/qq.c:1089
msgid "Connect by TCP"
msgstr "TCP দ্বারা সংযোগ করুন"
-#: ../libpurple/protocols/qq/qq.c:1092
msgid "Show server notice"
msgstr "সার্ভারের নোটিশ প্রদর্শন করুন"
-#: ../libpurple/protocols/qq/qq.c:1095
msgid "Show server news"
msgstr "সার্ভারের খবর প্রদর্শন করুন"
+msgid "Show chat room when msg comes"
+msgstr ""
+
# fix me tithi
-#: ../libpurple/protocols/qq/qq.c:1098
msgid "Keep alive interval (seconds)"
msgstr "বিরতি সক্রিয় রাখুন (সেকেন্ড)"
# tithi
-#: ../libpurple/protocols/qq/qq.c:1101
msgid "Update interval (seconds)"
msgstr "বিরতি হালনাগাদ করুন (সেকেন্ড)"
# fix me tithi
-#: ../libpurple/protocols/qq/qq_base.c:75
-#: ../libpurple/protocols/qq/qq_base.c:163
msgid "Cannot decrypt server reply"
msgstr "সার্ভার জবাব অসঙ্কেতায়ন করে না"
# tithi
-#: ../libpurple/protocols/qq/qq_base.c:314
#, c-format
msgid "Failed requesting token, 0x%02X"
msgstr "টোকেন চাইতে ব্যর্থ, 0x%02X"
-#: ../libpurple/protocols/qq/qq_base.c:323
#, c-format
msgid "Invalid token len, %d"
msgstr "অবৈধ টোকেন দৈর্ঘ্য, %d"
# Fix me tithi
#. extend redirect used in QQ2006
-#: ../libpurple/protocols/qq/qq_base.c:408
msgid "Redirect_EX is not currently supported"
msgstr "পুনঃনির্দেশিতEX বর্তমানে সমর্থিত নয় (_E)"
#. need activation
#. need activation
#. need activation
-#: ../libpurple/protocols/qq/qq_base.c:419
-#: ../libpurple/protocols/qq/qq_base.c:1105
msgid "Activation required"
msgstr "সক্রিয়করণ আবশ্যক"
# tithi
-#: ../libpurple/protocols/qq/qq_base.c:427
#, c-format
msgid "Unknown reply code when logging in (0x%02X)"
msgstr "(0x%02X) এ লগইন করার সময় অজানা উত্তর কোড"
# fix me tithi
-#: ../libpurple/protocols/qq/qq_base.c:658
msgid "Could not decrypt server reply"
msgstr "সার্ভার জবাব অসঙ্কেতায়ন করতে পারেনি"
# tithi
-#: ../libpurple/protocols/qq/qq_base.c:750
msgid "Requesting captcha"
msgstr "captcha অনুরোধ করছে"
# tithi
-#: ../libpurple/protocols/qq/qq_base.c:795
msgid "Checking captcha"
msgstr "captcha পরীক্ষা করছে"
# tithi
-#: ../libpurple/protocols/qq/qq_base.c:818
msgid "Failed captcha verification"
msgstr "captcha যাচাইকরণ ব্যর্থ হয়েছে"
# fix me tithi
-#: ../libpurple/protocols/qq/qq_base.c:868
msgid "Captcha Image"
msgstr "Captcha চিত্র"
-#: ../libpurple/protocols/qq/qq_base.c:872
msgid "Enter code"
msgstr "কোড প্রবেশ করান"
# tithi
-#: ../libpurple/protocols/qq/qq_base.c:877
-#: ../libpurple/protocols/qq/qq_base.c:878
msgid "QQ Captcha Verification"
msgstr "QQ Captcha যাচাইকরণ"
-#: ../libpurple/protocols/qq/qq_base.c:879
msgid "Enter the text from the image"
msgstr "চিত্র হতে পাঠ প্রবেশ করান"
# tithi
-#: ../libpurple/protocols/qq/qq_base.c:1116
#, c-format
msgid "Unknown reply when checking password (0x%02X)"
msgstr "গুপ্তসঙ্কেত পরীক্ষণ করার সময় অজানা উত্তর (0x%02X)"
# tithi
-#: ../libpurple/protocols/qq/qq_base.c:1262
-#: ../libpurple/protocols/qq/qq_base.c:1451
#, c-format
msgid ""
"Unknown reply code when logging in (0x%02X):\n"
@@ -11374,61 +8237,40 @@ msgstr ""
"%s"
#. we didn't successfully connect. tdt->toc_fd is valid here
-#: ../libpurple/protocols/qq/qq_network.c:211
-#: ../libpurple/protocols/qq/qq_network.c:236
-#: ../libpurple/protocols/toc/toc.c:173
-#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:158
-#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:238
-#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:1195
-#: ../libpurple/protocols/yahoo/ycht.c:550
msgid "Unable to connect."
msgstr "সংযুক্ত করতে ব্যর্থ।"
-#: ../libpurple/protocols/qq/qq_network.c:370
-#: ../libpurple/protocols/qq/qq_network.c:496
msgid "Socket error"
msgstr "সকেট ত্রুটি"
-#: ../libpurple/protocols/qq/qq_network.c:507
msgid "Unable to read from socket"
msgstr "সকেট থেকে পাঠ করতে ব্যর্থ"
-#: ../libpurple/protocols/qq/qq_network.c:590
-#: ../libpurple/protocols/yahoo/yahoo_packet.c:307
msgid "Write Error"
msgstr "লিখন ত্রুটি"
-#: ../libpurple/protocols/qq/qq_network.c:666
msgid "Connection lost"
msgstr "সংযোগ হারিয়ে গেছে"
-#: ../libpurple/protocols/qq/qq_network.c:789
msgid "Getting server"
msgstr "সার্ভার পাচ্ছে"
-#: ../libpurple/protocols/qq/qq_network.c:794
msgid "Requesting token"
msgstr "টোকেন অনুরোধ করছে"
-#: ../libpurple/protocols/qq/qq_network.c:867
-#: ../libpurple/protocols/simple/simple.c:1809
msgid "Couldn't resolve host"
msgstr "হোস্ট সমাধান করা সম্ভব হয়নি"
-#: ../libpurple/protocols/qq/qq_network.c:947
msgid "Invalid server or port"
msgstr "অবৈধ সার্ভার বা পোর্ট"
# tithi
-#: ../libpurple/protocols/qq/qq_network.c:951
msgid "Connecting to server"
msgstr "সার্ভারে সংযোজিত হচ্ছে"
-#: ../libpurple/protocols/qq/qq_process.c:75
msgid "QQ Error"
msgstr "QQ ত্রুটি"
-#: ../libpurple/protocols/qq/qq_process.c:114
#, c-format
msgid ""
"Server News:\n"
@@ -11441,17 +8283,14 @@ msgstr ""
"%2s\n"
"%3s"
-#: ../libpurple/protocols/qq/qq_process.c:152
#, c-format
msgid "%s:%s"
msgstr "%1s:%2s"
-#: ../libpurple/protocols/qq/qq_process.c:422
#, c-format
msgid "From %s:"
msgstr "%s থেকে:"
-#: ../libpurple/protocols/qq/qq_process.c:423
#, c-format
msgid ""
"Server notice From %s: \n"
@@ -11461,12 +8300,10 @@ msgstr ""
"%2s"
# tithi
-#: ../libpurple/protocols/qq/qq_process.c:543
msgid "Unknown SERVER CMD"
msgstr "অজানা সার্ভার CMD"
# tithi
-#: ../libpurple/protocols/qq/qq_process.c:559
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
@@ -11475,191 +8312,149 @@ msgstr ""
"%1s(0x%02X) এর ত্রুটিপূর্ণ উত্তর\n"
"রুম %2u, উত্তর 0x%02X"
-#: ../libpurple/protocols/qq/qq_process.c:562
msgid "QQ Qun Command"
msgstr "QQ Qun নির্দেশ"
# tithi
-#: ../libpurple/protocols/qq/qq_process.c:953
msgid "Could not decrypt login reply"
msgstr "লগইন উত্তর অসঙ্কেতায়ন করতে পারে না"
# fix me tithi
-#: ../libpurple/protocols/qq/qq_process.c:1024
msgid "Unknown LOGIN CMD"
msgstr "অজানা লগইন CMD"
-#: ../libpurple/protocols/qq/qq_process.c:1146
msgid "Unknown CLIENT CMD"
msgstr "অজানা ক্লায়েন্ট CMD"
-#: ../libpurple/protocols/qq/send_file.c:702
#, c-format
msgid "%d has declined the file %s"
msgstr "%1d %2s ফাইলটি প্রত্যাখ্যান করেছে"
-#: ../libpurple/protocols/qq/send_file.c:705
-#: ../libpurple/protocols/qq/send_file.c:736
msgid "File Send"
msgstr "ফাইল প্রেরণ করা হয়েছে"
-#: ../libpurple/protocols/qq/send_file.c:733
#, c-format
msgid "%d canceled the transfer of %s"
msgstr "%1d %2s-এর স্থানান্তর বাতিল করেছেন"
-#: ../libpurple/protocols/sametime/sametime.c:420
msgid "Connection closed (writing)"
msgstr "সংযোগ বন্ধ করা হয়েছে (লিখছে)"
-#: ../libpurple/protocols/sametime/sametime.c:1299
#, c-format
msgid "<b>Group Title:</b> %s<br>"
msgstr "<b>দলের শিরোনাম:</b> %s<br>"
-#: ../libpurple/protocols/sametime/sametime.c:1300
#, c-format
msgid "<b>Notes Group ID:</b> %s<br>"
msgstr "<b>নোটের দল আইডি:</b> %s<br>"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:1302
#, c-format
msgid "Info for Group %s"
msgstr "%s দলের জন্য তথ্য"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:1304
msgid "Notes Address Book Information"
msgstr "নোটের ঠিকানা বইয়ের তথ্য"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:1336
msgid "Invite Group to Conference..."
msgstr "অধিবেশনে গ্রুপকে আমন্ত্রণ জানান..."
-#: ../libpurple/protocols/sametime/sametime.c:1346
msgid "Get Notes Address Book Info"
msgstr "নোটের ঠিকানা বইয়ের তথ্য গ্রহণ করুন"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:1513
msgid "Sending Handshake"
msgstr "হ্যান্ডসেক পাঠাচ্ছে"
-#: ../libpurple/protocols/sametime/sametime.c:1518
msgid "Waiting for Handshake Acknowledgement"
msgstr "হ্যান্ডশেকের সাড়া পাওয়ার জন্য অপেক্ষা করছে"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:1523
msgid "Handshake Acknowledged, Sending Login"
msgstr "হ্যান্ডসেক সাড়া দিয়েছে, লগইন পাঠাচ্ছে"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:1528
msgid "Waiting for Login Acknowledgement"
msgstr "লগইন সাড়ার জন্য অপেক্ষা করছে"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:1533
msgid "Login Redirected"
msgstr "লগইন পুনঃ নির্দেশিত"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:1539
msgid "Forcing Login"
msgstr "লগইন বাধ্য করছে"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:1543
msgid "Login Acknowledged"
msgstr "লগইন সাড়া দিয়েছে"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:1548
msgid "Starting Services"
msgstr "সেবা শুরু করছে"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:1685
#, c-format
msgid ""
"A Sametime administrator has issued the following announcement on server %s"
msgstr "একটি এককালীন প্রশাসক %s সার্ভারে নিম্নলিখিত ঘোষণা প্রচার করেছে"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:1690
msgid "Sametime Administrator Announcement"
msgstr "এককালীন প্রশাসকের ঘোষণা"
-#: ../libpurple/protocols/sametime/sametime.c:1743
msgid "Connection reset"
msgstr "সংযোগ পুনরায় বিন্যাস করুন"
-#: ../libpurple/protocols/sametime/sametime.c:1755
#, c-format
msgid "Error reading from socket: %s"
msgstr "সকেট থেকে পড়ায় ত্রুটি: %s"
#. this is a regular connect, error out
-#: ../libpurple/protocols/sametime/sametime.c:1780
-#: ../libpurple/protocols/sametime/sametime.c:3788
msgid "Unable to connect to host"
msgstr "হোস্টের সাথে সংযোগে ব্যর্থ"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:1821
#, c-format
msgid "Announcement from %s"
msgstr "%s হতে ঘোষণা"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:1995
msgid "Conference Closed"
msgstr "অধিবেশন বন্ধ"
-#: ../libpurple/protocols/sametime/sametime.c:2460
msgid "Unable to send message: "
msgstr "বার্তা পাঠাতে অসমর্থ:"
-#: ../libpurple/protocols/sametime/sametime.c:3016
msgid "Place Closed"
msgstr "স্থান বন্ধ"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:3286
msgid "Microphone"
msgstr "মাইক্রোফোন"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:3287
msgid "Speakers"
msgstr "স্পিকারসমূহ"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:3288
msgid "Video Camera"
msgstr "ভিডিও ক্যামেরা"
-#: ../libpurple/protocols/sametime/sametime.c:3326
-#: ../libpurple/protocols/sametime/sametime.c:4207
msgid "Supports"
msgstr "সমর্থনসমূহ"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:3331
-#: ../libpurple/protocols/sametime/sametime.c:4181
msgid "External User"
msgstr "বাহ্যিক ব্যবহারকারী"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:3437
msgid "Create conference with user"
msgstr "ব্যবহারকারীর সাথে অধিবেশন তৈরি করুন"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:3438
#, c-format
msgid ""
"Please enter a topic for the new conference, and an invitation message to be "
@@ -11668,32 +8463,26 @@ msgstr ""
"অনুগ্রহ করে নতুন অধিবেশনের জন্য একটি বিষয় প্রবেশ করান, এবং %s এ একটি আমন্ত্রণ বার্তা "
"পাঠাতে হবে"
-#: ../libpurple/protocols/sametime/sametime.c:3442
msgid "New Conference"
msgstr "নতুন অধিবেশন"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:3444
msgid "Create"
msgstr "তৈরি করুন "
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:3509
msgid "Available Conferences"
msgstr "সহজলভ্য অধিবেশনসমূহ"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:3515
msgid "Create New Conference..."
msgstr "নতুন অধিবেশন তৈরি করুন..."
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:3522
msgid "Invite user to a conference"
msgstr "ব্যবহারকারীকে অধিবেশনে আমন্ত্রন জানান"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:3523
#, c-format
msgid ""
"Select a conference from the list below to send an invite to user %s. Select "
@@ -11705,31 +8494,25 @@ msgstr ""
"তবে \"নতুন অধিবেশন তৈরি করুন\" নির্বাচন করুন।"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:3528
msgid "Invite to Conference"
msgstr "অধিবেশনে আমন্ত্রন জানান"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:3619
msgid "Invite to Conference..."
msgstr "অধিবেশনে আমন্ত্রন জানান..."
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:3624
msgid "Send TEST Announcement"
msgstr "পরীক্ষণ ঘোষণা পাঠান"
-#: ../libpurple/protocols/sametime/sametime.c:3643 ../pidgin/gtkconv.c:4591
msgid "Topic:"
msgstr "বিষয়:"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:3671
msgid "No Sametime Community Server specified"
msgstr "কোনো এককালীন সম্প্রদায় সার্ভার উল্লেখ করা হয়নি"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:3696
#, c-format
msgid ""
"No host or IP address has been configured for the Meanwhile account %s. "
@@ -11739,47 +8522,36 @@ msgstr ""
"লগইন অব্যাহত রাখতে নিচে একটি প্রবেশ করান।"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:3701
msgid "Meanwhile Connection Setup"
msgstr "ইতোমধ্যে সংযোগ সংস্থাপন করুন"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:3702
msgid "No Sametime Community Server Specified"
msgstr "কোনো এককালীন সম্প্রদায় সার্ভার উল্লেখিত নয়"
-#: ../libpurple/protocols/sametime/sametime.c:3704
msgid "Connect"
msgstr "সংযোগ দিন"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:4197
#, c-format
msgid "Unknown (0x%04x)<br>"
msgstr "অজানা (0x%04x)<br>"
-#: ../libpurple/protocols/sametime/sametime.c:4199
msgid "Last Known Client"
msgstr "সর্বশেষ পরিচিত গ্রাহক"
-#: ../libpurple/protocols/sametime/sametime.c:4363
-#: ../libpurple/protocols/sametime/sametime.c:5566
msgid "User Name"
msgstr "ব্যবহারকারীর নাম"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:4366
-#: ../libpurple/protocols/sametime/sametime.c:5569
msgid "Sametime ID"
msgstr "এককালীন আইডি"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:4390
msgid "An ambiguous user ID was entered"
msgstr "একটি অনিশ্চিত ব্যবহারকারী আইডি প্রবেশ করা হয়েছিল"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:4391
#, c-format
msgid ""
"The identifier '%s' may possibly refer to any of the following users. Please "
@@ -11789,17 +8561,14 @@ msgstr ""
"করে নিচের তালিকা থেকে সঠিক ব্যবহারকারী নির্বাচন করে আপনার বন্ধু তালিকাতে তাদেরকে "
"যোগ করুন।"
-#: ../libpurple/protocols/sametime/sametime.c:4396
msgid "Select User"
msgstr "ব্যবহারকারী নির্বাচন করুন"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:4480
msgid "Unable to add user: user not found"
msgstr "ব্যবহারকারী যোগ করতে অক্ষম: ব্যবহারকারী খুঁজে পায়নি"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:4482
#, c-format
msgid ""
"The identifier '%s' did not match any users in your Sametime community. This "
@@ -11808,7 +8577,6 @@ msgstr ""
"'%s' শনাক্তকারী আপনার এককালীন সম্প্রদায়ের কোনো ব্যবহারকারীর সাথে সমন্বয় করে না। "
"এই এন্ট্রিটি আপনার বন্ধু তালিকা থেকে অপসারণ করা হয়েছে।"
-#: ../libpurple/protocols/sametime/sametime.c:5071
#, c-format
msgid ""
"Error reading file %s: \n"
@@ -11817,72 +8585,57 @@ msgstr ""
"%1s ফাইল পড়ায় ত্রুটি: \n"
"%2s\n"
-#: ../libpurple/protocols/sametime/sametime.c:5206
msgid "Remotely Stored Buddy List"
msgstr "দূর হতে সংরক্ষিত বন্ধু তালিকা"
-#: ../libpurple/protocols/sametime/sametime.c:5211
msgid "Buddy List Storage Mode"
msgstr "বন্ধু তালিকার সংরক্ষন পদ্ধতি"
-#: ../libpurple/protocols/sametime/sametime.c:5214
msgid "Local Buddy List Only"
msgstr "শুধুমাত্র স্থানীয় বন্ধু তালিকা"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:5216
msgid "Merge List from Server"
msgstr "সার্ভারের তালিকা একত্রিত করুন"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:5218
msgid "Merge and Save List to Server"
msgstr "সার্ভারে তালিকা একত্রিত এবং সংরক্ষণ করুন"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:5220
msgid "Synchronize List with Server"
msgstr "সার্ভারের সঙ্গে সমকালীন তালিকা"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:5275
#, c-format
msgid "Import Sametime List for Account %s"
msgstr "%s একাউন্টের জন্য এককালীন তালিকা আমদানি করুন"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:5315
#, c-format
msgid "Export Sametime List for Account %s"
msgstr "%s একাউন্টের জন্য এককালীন তালিকা রপ্তানি করুন"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:5369
msgid "Unable to add group: group exists"
msgstr "দল যোগ করতে অক্ষম: দল বিদ্যমান"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:5370
#, c-format
msgid "A group named '%s' already exists in your buddy list."
msgstr "'%s' নামের একটি দল আপনার বন্ধু তালিকায় ইতোমধ্যে বিদ্যমান রয়েছে।"
-#: ../libpurple/protocols/sametime/sametime.c:5373
-#: ../libpurple/protocols/sametime/sametime.c:5503
msgid "Unable to add group"
msgstr "দল যোগ করতে ব্যর্থ"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:5432
msgid "Possible Matches"
msgstr "সম্ভাব্য মিলসমূহ"
-#: ../libpurple/protocols/sametime/sametime.c:5448
msgid "Notes Address Book group results"
msgstr "নোটের ঠিকানা বইয়ের দলগত ফলাফল"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:5449
#, c-format
msgid ""
"The identifier '%s' may possibly refer to any of the following Notes Address "
@@ -11893,17 +8646,14 @@ msgstr ""
"পারে। অনুগ্রহ করে নিচের তালিকা থেকে সঠিক গ্রুপ নির্বাচন করে আপনার বন্ধু তালিকায় এটি "
"যোগ করুন।"
-#: ../libpurple/protocols/sametime/sametime.c:5454
msgid "Select Notes Address Book"
msgstr "নোটের ঠিকানা বই নির্বাচন করুন"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:5497
msgid "Unable to add group: group not found"
msgstr "দল যোগ করতে অক্ষম: দল খুঁজে পায়নি"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:5499
#, c-format
msgid ""
"The identifier '%s' did not match any Notes Address Book groups in your "
@@ -11912,12 +8662,10 @@ msgstr ""
"'%s' শনাক্তকারী আপনার এককালীন সম্প্রদায়ের কোনো নোট ঠিকানা বইয়ের দলের সাথে সমন্বয় "
"করেনি।"
-#: ../libpurple/protocols/sametime/sametime.c:5540
msgid "Notes Address Book Group"
msgstr "নোটের ঠিকানা বইয়ের দল"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:5541
msgid ""
"Enter the name of a Notes Address Book group in the field below to add the "
"group and its members to your buddy list."
@@ -11925,13 +8673,11 @@ msgstr ""
"নিচের ক্ষেত্রে নোটের ঠিকানা বইয়ের গ্রুপের নাম প্রবেশ করে আপনার বন্ধু তালিকায় শ্রেণী "
"এবং এর সদসদের যোগ করুন।"
-#: ../libpurple/protocols/sametime/sametime.c:5590
#, c-format
msgid "Search results for '%s'"
msgstr "'%s' এর সন্ধান ফলাফল"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:5591
#, c-format
msgid ""
"The identifier '%s' may possibly refer to any of the following users. You "
@@ -11942,30 +8688,24 @@ msgstr ""
"সম্ভবত নিচের কার্য বোতাম দ্বারা আপনার বন্ধু তালিকাতে এই ব্যবহারকারীসমূহ যোগ করতে "
"পারেন বা তাদেরকে বার্তা পাঠাতে পারেন।"
-#: ../libpurple/protocols/sametime/sametime.c:5598 ../pidgin/gtknotify.c:793
msgid "Search Results"
msgstr "অনুসন্ধানের ফলাফল"
-#: ../libpurple/protocols/sametime/sametime.c:5623
msgid "No matches"
msgstr "কোনে মিল নেই"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:5624
#, c-format
msgid "The identifier '%s' did not match any users in your Sametime community."
msgstr "'%s' শনাক্তকারী আপনার এককালীন সম্প্রদায়ের কোনো ব্যবহারকারীর সাথে মিলেনি।"
-#: ../libpurple/protocols/sametime/sametime.c:5628
msgid "No Matches"
msgstr "কোনো মিল নেই"
-#: ../libpurple/protocols/sametime/sametime.c:5665
msgid "Search for a user"
msgstr "একজন ব্যবহারকারীর জন্য অনুসন্ধান করুন"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:5666
msgid ""
"Enter a name or partial ID in the field below to search for matching users "
"in your Sametime community."
@@ -11973,137 +8713,79 @@ msgstr ""
"আপনার এককালীন সম্প্রদায়ের সমন্বয়করণ ব্যবহারকারীর জন্য অনুসন্ধান করতে নিচের ক্ষেত্রে "
"একটি নাম বা আংশিক আইডি প্রবেশ করান।"
-#: ../libpurple/protocols/sametime/sametime.c:5669
msgid "User Search"
msgstr "ব্যবহারকারী অনুসন্ধান করুন"
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:5682
msgid "Import Sametime List..."
msgstr "এককালীন তালিকা আমদানি করুন..."
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:5686
msgid "Export Sametime List..."
msgstr "এককালীন তালিকা রপ্তানি করুন..."
-#: ../libpurple/protocols/sametime/sametime.c:5690
msgid "Add Notes Address Book Group..."
msgstr "নোটের ঠিকানা বইয়ের দল যোগ করুন..."
-#: ../libpurple/protocols/sametime/sametime.c:5694
msgid "User Search..."
msgstr "ব্যবহারকারী অনুসন্ধান করুন..."
# tithi
-#: ../libpurple/protocols/sametime/sametime.c:5800
msgid "Force login (ignore server redirects)"
msgstr "লগইন বাধ্য করুন (সার্ভারের পুনঃ নির্দেশনাগুলো উপেক্ষা করুন)"
# tithi
#. pretend to be Sametime Connect
-#: ../libpurple/protocols/sametime/sametime.c:5810
msgid "Hide client identity"
msgstr "গ্রাহক পরিচয় গোপন করুন"
# tithi
-#: ../libpurple/protocols/silc/buddy.c:52
-#: ../libpurple/protocols/silc/buddy.c:410
-#: ../libpurple/protocols/silc/buddy.c:538
-#: ../libpurple/protocols/silc/buddy.c:700
-#: ../libpurple/protocols/silc/ft.c:423
-#: ../libpurple/protocols/silc10/buddy.c:52
-#: ../libpurple/protocols/silc10/buddy.c:421
-#: ../libpurple/protocols/silc10/buddy.c:546
-#: ../libpurple/protocols/silc10/buddy.c:712
-#: ../libpurple/protocols/silc10/ft.c:338
#, c-format
msgid "User %s is not present in the network"
msgstr "%s ব্যবহারকারী নেটওয়ার্কে উপস্থিত নেই"
-#: ../libpurple/protocols/silc/buddy.c:53
-#: ../libpurple/protocols/silc/buddy.c:110
-#: ../libpurple/protocols/silc/buddy.c:115
-#: ../libpurple/protocols/silc/buddy.c:119
-#: ../libpurple/protocols/silc/buddy.c:124
-#: ../libpurple/protocols/silc/buddy.c:129
-#: ../libpurple/protocols/silc/buddy.c:134
-#: ../libpurple/protocols/silc/buddy.c:254
-#: ../libpurple/protocols/silc10/buddy.c:53
-#: ../libpurple/protocols/silc10/buddy.c:115
-#: ../libpurple/protocols/silc10/buddy.c:120
-#: ../libpurple/protocols/silc10/buddy.c:124
-#: ../libpurple/protocols/silc10/buddy.c:129
-#: ../libpurple/protocols/silc10/buddy.c:134
-#: ../libpurple/protocols/silc10/buddy.c:139
-#: ../libpurple/protocols/silc10/buddy.c:257
msgid "Key Agreement"
msgstr "মূল চুক্তি"
# tithi
-#: ../libpurple/protocols/silc/buddy.c:54
-#: ../libpurple/protocols/silc10/buddy.c:54
msgid "Cannot perform the key agreement"
msgstr "মূল চুক্তি সম্পাদন করতে পারে না"
# tithi
-#: ../libpurple/protocols/silc/buddy.c:111
-#: ../libpurple/protocols/silc10/buddy.c:116
msgid "Error occurred during key agreement"
msgstr "মূল চুক্তির সময় ত্রুটি ঘটেছিল"
# tithi
-#: ../libpurple/protocols/silc/buddy.c:115
-#: ../libpurple/protocols/silc10/buddy.c:120
msgid "Key Agreement failed"
msgstr "মূং চুক্তি ব্যর্থ হয়েছে"
# tithi
-#: ../libpurple/protocols/silc/buddy.c:120
-#: ../libpurple/protocols/silc10/buddy.c:125
msgid "Timeout during key agreement"
msgstr "মূল চুক্তির সময় মেয়াদ উত্তীর্ণ হয়েছে"
# tithi
-#: ../libpurple/protocols/silc/buddy.c:125
-#: ../libpurple/protocols/silc10/buddy.c:130
msgid "Key agreement was aborted"
msgstr "মূল চুক্তি বাতিল করা হয়েছিল"
# tithi
-#: ../libpurple/protocols/silc/buddy.c:130
-#: ../libpurple/protocols/silc10/buddy.c:135
msgid "Key agreement is already started"
msgstr "মূল চুক্তি ইতোমধ্যে শুরু হয়েছে"
# tithi
-#: ../libpurple/protocols/silc/buddy.c:135
-#: ../libpurple/protocols/silc10/buddy.c:140
msgid "Key agreement cannot be started with yourself"
msgstr "মূল চুক্তি আপনার সঙ্গে শুরু করা যায় না"
# tithi
-#: ../libpurple/protocols/silc/buddy.c:255
-#: ../libpurple/protocols/silc/buddy.c:383
-#: ../libpurple/protocols/silc/buddy.c:497
-#: ../libpurple/protocols/silc/buddy.c:508
-#: ../libpurple/protocols/silc10/buddy.c:258
-#: ../libpurple/protocols/silc10/buddy.c:389
-#: ../libpurple/protocols/silc10/buddy.c:514
msgid "The remote user is not present in the network any more"
msgstr "দূরবর্তী ব্যবহারকারী আর নেটওয়ার্কে উপস্থিত থাকবে না"
# tithi
-#: ../libpurple/protocols/silc/buddy.c:298
-#: ../libpurple/protocols/silc10/buddy.c:295
#, c-format
msgid ""
"Key agreement request received from %s. Would you like to perform the key "
"agreement?"
msgstr "মূল চুক্তির অনুরোধ %s থেকে গ্রহণ করেছে। আপনি কি মূল চুক্তি সম্পাদন করতে আগ্রহী?"
-#: ../libpurple/protocols/silc/buddy.c:302
-#: ../libpurple/protocols/silc10/buddy.c:299
#, c-format
msgid ""
"The remote user is waiting key agreement on:\n"
@@ -12115,105 +8797,46 @@ msgstr ""
"দূরবর্তী পোর্ট: %d"
# tithi
-#: ../libpurple/protocols/silc/buddy.c:315
-#: ../libpurple/protocols/silc10/buddy.c:312
msgid "Key Agreement Request"
msgstr "মূল চুক্তির অনুরোধ"
-#: ../libpurple/protocols/silc/buddy.c:382
-#: ../libpurple/protocols/silc/buddy.c:412
-#: ../libpurple/protocols/silc/buddy.c:452
-#: ../libpurple/protocols/silc10/buddy.c:388
-#: ../libpurple/protocols/silc10/buddy.c:423
-#: ../libpurple/protocols/silc10/buddy.c:465
msgid "IM With Password"
msgstr "গুপ্তসঙ্কেত যুক্ত আইএম"
-#: ../libpurple/protocols/silc/buddy.c:413
-#: ../libpurple/protocols/silc10/buddy.c:424
msgid "Cannot set IM key"
msgstr "আইএম কী বিন্যাস করতে পারে না"
-#: ../libpurple/protocols/silc/buddy.c:453
-#: ../libpurple/protocols/silc10/buddy.c:466
msgid "Set IM Password"
msgstr "আইএম গুপ্তসঙ্কেত বিন্যাস করুন"
# tithi
-#: ../libpurple/protocols/silc/buddy.c:496
-#: ../libpurple/protocols/silc/buddy.c:507
-#: ../libpurple/protocols/silc/buddy.c:540
-#: ../libpurple/protocols/silc/ops.c:1516
-#: ../libpurple/protocols/silc/ops.c:1527
-#: ../libpurple/protocols/silc10/buddy.c:513
-#: ../libpurple/protocols/silc10/buddy.c:548
-#: ../libpurple/protocols/silc10/ops.c:1494
-#: ../libpurple/protocols/silc10/ops.c:1505
msgid "Get Public Key"
msgstr "সর্বসাধারণ কী গ্রহণ করুন"
# tithi
-#: ../libpurple/protocols/silc/buddy.c:541
-#: ../libpurple/protocols/silc/ops.c:1517
-#: ../libpurple/protocols/silc/ops.c:1528
-#: ../libpurple/protocols/silc10/buddy.c:549
-#: ../libpurple/protocols/silc10/ops.c:1495
-#: ../libpurple/protocols/silc10/ops.c:1506
msgid "Cannot fetch the public key"
msgstr "সর্বসাধারণ কী পুনরুদ্ধার করতে পারে না"
# tithi
-#: ../libpurple/protocols/silc/buddy.c:622
-#: ../libpurple/protocols/silc/buddy.c:1670
-#: ../libpurple/protocols/silc10/buddy.c:635
-#: ../libpurple/protocols/silc10/buddy.c:1669
msgid "Show Public Key"
msgstr "সর্বসাধারণ কী দেখান"
# tithi
-#: ../libpurple/protocols/silc/buddy.c:623
-#: ../libpurple/protocols/silc/buddy.c:1030
-#: ../libpurple/protocols/silc/chat.c:238
-#: ../libpurple/protocols/silc10/buddy.c:636
-#: ../libpurple/protocols/silc10/buddy.c:1036
-#: ../libpurple/protocols/silc10/chat.c:237
msgid "Could not load public key"
msgstr "সর্বসাধারণ কী লোড করতে পারেনি"
-#: ../libpurple/protocols/silc/buddy.c:701
-#: ../libpurple/protocols/silc/ops.c:1066
-#: ../libpurple/protocols/silc/ops.c:1181
-#: ../libpurple/protocols/silc/ops.c:1303
-#: ../libpurple/protocols/silc/ops.c:1304
-#: ../libpurple/protocols/silc/ops.c:1322
-#: ../libpurple/protocols/silc10/buddy.c:713
-#: ../libpurple/protocols/silc10/ops.c:1087
-#: ../libpurple/protocols/silc10/ops.c:1159
-#: ../libpurple/protocols/silc10/ops.c:1294
-#: ../libpurple/protocols/silc10/ops.c:1295
-#: ../libpurple/protocols/silc10/ops.c:1313
msgid "User Information"
msgstr "ব্যবহারকারী তথ্য"
-#: ../libpurple/protocols/silc/buddy.c:702
-#: ../libpurple/protocols/silc/ops.c:1182
-#: ../libpurple/protocols/silc/ops.c:1323
-#: ../libpurple/protocols/silc10/buddy.c:714
-#: ../libpurple/protocols/silc10/ops.c:1160
-#: ../libpurple/protocols/silc10/ops.c:1314
msgid "Cannot get user information"
msgstr "ব্যবহারকারীর তথ্য গ্রহণ করতে পারে না"
# fix me tithi
-#: ../libpurple/protocols/silc/buddy.c:723
-#: ../libpurple/protocols/silc10/buddy.c:735
#, c-format
msgid "The %s buddy is not trusted"
msgstr "%s বন্ধু বিশ্বাসযোগ্য নয়"
# tithi
-#: ../libpurple/protocols/silc/buddy.c:726
-#: ../libpurple/protocols/silc10/buddy.c:738
msgid ""
"You cannot receive buddy notifications until you import his/her public key. "
"You can use the Get Public Key command to get the public key."
@@ -12223,21 +8846,15 @@ msgstr ""
"ব্যবহার করতে পারেন না।"
#. Open file selector to select the public key.
-#: ../libpurple/protocols/silc/buddy.c:1062
-#: ../libpurple/protocols/silc10/buddy.c:1070
msgid "Open..."
msgstr "খুলুন..."
# tithi
-#: ../libpurple/protocols/silc/buddy.c:1073
-#: ../libpurple/protocols/silc10/buddy.c:1081
#, c-format
msgid "The %s buddy is not present in the network"
msgstr "%s বন্ধু নেটওয়ার্কে উপস্থিত নেই"
# tithi
-#: ../libpurple/protocols/silc/buddy.c:1076
-#: ../libpurple/protocols/silc10/buddy.c:1084
msgid ""
"To add the buddy you must import his/her public key. Press Import to import "
"a public key."
@@ -12246,19 +8863,13 @@ msgstr ""
"আমদানি করতে 'আমদানি করুন' চাপুন।"
# tithi
-#: ../libpurple/protocols/silc/buddy.c:1080
-#: ../libpurple/protocols/silc10/buddy.c:1088
msgid "_Import..."
msgstr "আমদানি করুন... (_I)"
-#: ../libpurple/protocols/silc/buddy.c:1186
-#: ../libpurple/protocols/silc10/buddy.c:1184
msgid "Select correct user"
msgstr "সঠিক ব্যবহারকারী নির্বাচন করুন"
# tithi
-#: ../libpurple/protocols/silc/buddy.c:1188
-#: ../libpurple/protocols/silc10/buddy.c:1186
msgid ""
"More than one user was found with the same public key. Select the correct "
"user from the list to add to the buddy list."
@@ -12267,8 +8878,6 @@ msgstr ""
"তালিকা থেকে সঠিক ব্যবহারকারী নির্বাচন করুন।"
# tithi
-#: ../libpurple/protocols/silc/buddy.c:1190
-#: ../libpurple/protocols/silc10/buddy.c:1188
msgid ""
"More than one user was found with the same name. Select the correct user "
"from the list to add to the buddy list."
@@ -12277,335 +8886,177 @@ msgstr ""
"সঠিক ব্যবহারকারী নির্বাচন করুন।"
# tithi
-#: ../libpurple/protocols/silc/buddy.c:1489
-#: ../libpurple/protocols/silc10/buddy.c:1489
msgid "Detached"
msgstr "আলাদা"
# tithi
-#: ../libpurple/protocols/silc/buddy.c:1493
-#: ../libpurple/protocols/silc/silc.c:59
-#: ../libpurple/protocols/silc10/buddy.c:1493
-#: ../libpurple/protocols/silc10/silc.c:50
msgid "Indisposed"
msgstr "অক্ষম"
# tithi
-#: ../libpurple/protocols/silc/buddy.c:1497
-#: ../libpurple/protocols/silc/silc.c:61
-#: ../libpurple/protocols/silc10/buddy.c:1497
-#: ../libpurple/protocols/silc10/silc.c:52
msgid "Wake Me Up"
msgstr "আমাকে জাগান"
# tithi
-#: ../libpurple/protocols/silc/buddy.c:1499
-#: ../libpurple/protocols/silc/silc.c:53
-#: ../libpurple/protocols/silc10/buddy.c:1499
-#: ../libpurple/protocols/silc10/silc.c:44
msgid "Hyper Active"
msgstr "অতিমাত্রায় সক্রিয়"
-#: ../libpurple/protocols/silc/buddy.c:1501
-#: ../libpurple/protocols/silc10/buddy.c:1501
msgid "Robot"
msgstr "যন্ত্রমানব"
-#: ../libpurple/protocols/silc/buddy.c:1508
-#: ../libpurple/protocols/silc/silc.c:978
-#: ../libpurple/protocols/silc/util.c:522
-#: ../libpurple/protocols/silc10/buddy.c:1508
-#: ../libpurple/protocols/silc10/silc.c:679
-#: ../libpurple/protocols/silc10/util.c:515
msgid "Happy"
msgstr "সুখী"
-#: ../libpurple/protocols/silc/buddy.c:1510
-#: ../libpurple/protocols/silc/silc.c:980
-#: ../libpurple/protocols/silc/util.c:524
-#: ../libpurple/protocols/silc10/buddy.c:1510
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/util.c:517
msgid "Sad"
msgstr "দু:খী"
-#: ../libpurple/protocols/silc/buddy.c:1512
-#: ../libpurple/protocols/silc/silc.c:982
-#: ../libpurple/protocols/silc/util.c:526
-#: ../libpurple/protocols/silc10/buddy.c:1512
-#: ../libpurple/protocols/silc10/silc.c:683
-#: ../libpurple/protocols/silc10/util.c:519
msgid "Angry"
msgstr "রাগী"
-#: ../libpurple/protocols/silc/buddy.c:1514
-#: ../libpurple/protocols/silc/silc.c:984
-#: ../libpurple/protocols/silc/util.c:528
-#: ../libpurple/protocols/silc10/buddy.c:1514
-#: ../libpurple/protocols/silc10/silc.c:685
-#: ../libpurple/protocols/silc10/util.c:521
msgid "Jealous"
msgstr "ঈর্ষান্বিত"
-#: ../libpurple/protocols/silc/buddy.c:1516
-#: ../libpurple/protocols/silc/silc.c:986
-#: ../libpurple/protocols/silc/util.c:530
-#: ../libpurple/protocols/silc10/buddy.c:1516
-#: ../libpurple/protocols/silc10/silc.c:687
-#: ../libpurple/protocols/silc10/util.c:523
msgid "Ashamed"
msgstr "লজ্জিত"
# tithi
-#: ../libpurple/protocols/silc/buddy.c:1518
-#: ../libpurple/protocols/silc/silc.c:988
-#: ../libpurple/protocols/silc/util.c:532
-#: ../libpurple/protocols/silc10/buddy.c:1518
-#: ../libpurple/protocols/silc10/silc.c:689
-#: ../libpurple/protocols/silc10/util.c:525
msgid "Invincible"
msgstr "অজেয়"
# tithi
-#: ../libpurple/protocols/silc/buddy.c:1520
-#: ../libpurple/protocols/silc/util.c:534
-#: ../libpurple/protocols/silc10/buddy.c:1520
-#: ../libpurple/protocols/silc10/util.c:527
msgid "In Love"
msgstr "ভালবাসাতে"
-#: ../libpurple/protocols/silc/buddy.c:1522
-#: ../libpurple/protocols/silc/silc.c:992
-#: ../libpurple/protocols/silc/util.c:536
-#: ../libpurple/protocols/silc10/buddy.c:1522
-#: ../libpurple/protocols/silc10/silc.c:693
-#: ../libpurple/protocols/silc10/util.c:529
msgid "Sleepy"
msgstr "ঘুমন্ত"
-#: ../libpurple/protocols/silc/buddy.c:1524
-#: ../libpurple/protocols/silc/silc.c:994
-#: ../libpurple/protocols/silc/util.c:538
-#: ../libpurple/protocols/silc10/buddy.c:1524
-#: ../libpurple/protocols/silc10/silc.c:695
-#: ../libpurple/protocols/silc10/util.c:531
msgid "Bored"
msgstr "বিরক্ত"
-#: ../libpurple/protocols/silc/buddy.c:1526
-#: ../libpurple/protocols/silc/silc.c:996
-#: ../libpurple/protocols/silc/util.c:540
-#: ../libpurple/protocols/silc10/buddy.c:1526
-#: ../libpurple/protocols/silc10/silc.c:697
-#: ../libpurple/protocols/silc10/util.c:533
msgid "Excited"
msgstr "উত্তেজিত"
-#: ../libpurple/protocols/silc/buddy.c:1528
-#: ../libpurple/protocols/silc/silc.c:998
-#: ../libpurple/protocols/silc/util.c:542
-#: ../libpurple/protocols/silc10/buddy.c:1528
-#: ../libpurple/protocols/silc10/silc.c:699
-#: ../libpurple/protocols/silc10/util.c:535
msgid "Anxious"
msgstr "উদ্বিগ্ন"
-#: ../libpurple/protocols/silc/buddy.c:1560
-#: ../libpurple/protocols/silc/ops.c:1220
-#: ../libpurple/protocols/silc10/buddy.c:1560
-#: ../libpurple/protocols/silc10/ops.c:1202
msgid "User Modes"
msgstr "ব্যবহাকারীর পরিমন্ডলসমূহ"
-#: ../libpurple/protocols/silc/buddy.c:1577
-#: ../libpurple/protocols/silc/ops.c:1237
-#: ../libpurple/protocols/silc10/buddy.c:1577
-#: ../libpurple/protocols/silc10/ops.c:1219
msgid "Preferred Contact"
msgstr "পছন্দের যোগাযোগ"
-#: ../libpurple/protocols/silc/buddy.c:1582
-#: ../libpurple/protocols/silc/ops.c:1242
-#: ../libpurple/protocols/silc10/buddy.c:1582
-#: ../libpurple/protocols/silc10/ops.c:1224
msgid "Preferred Language"
msgstr "পছন্দের ভাষা"
# tithi
-#: ../libpurple/protocols/silc/buddy.c:1587
-#: ../libpurple/protocols/silc/ops.c:1247
-#: ../libpurple/protocols/silc10/buddy.c:1587
-#: ../libpurple/protocols/silc10/ops.c:1229
msgid "Device"
msgstr "ডিভাইস"
-#: ../libpurple/protocols/silc/buddy.c:1592
-#: ../libpurple/protocols/silc/ops.c:1252
-#: ../libpurple/protocols/silc10/buddy.c:1592
-#: ../libpurple/protocols/silc10/ops.c:1234
-#: ../libpurple/protocols/silc10/silc.c:747
-#: ../libpurple/protocols/silc10/silc.c:749
msgid "Timezone"
msgstr "সময়-এলাকা"
# tithi
-#: ../libpurple/protocols/silc/buddy.c:1597
-#: ../libpurple/protocols/silc/ops.c:1257
-#: ../libpurple/protocols/silc10/buddy.c:1597
-#: ../libpurple/protocols/silc10/ops.c:1239
msgid "Geolocation"
msgstr "ভৌগলিক-অবস্থান"
# tithi
-#: ../libpurple/protocols/silc/buddy.c:1653
-#: ../libpurple/protocols/silc10/buddy.c:1651
msgid "Reset IM Key"
msgstr "IM কী পুনঃ বিন্যাস করুন"
# tithi
-#: ../libpurple/protocols/silc/buddy.c:1658
-#: ../libpurple/protocols/silc10/buddy.c:1657
msgid "IM with Key Exchange"
msgstr "কী বিনিময় সহ IM"
-#: ../libpurple/protocols/silc/buddy.c:1663
-#: ../libpurple/protocols/silc10/buddy.c:1662
msgid "IM with Password"
msgstr "গুপ্তসঙ্কেত যুক্ত আইএম"
# tithi
-#: ../libpurple/protocols/silc/buddy.c:1676
-#: ../libpurple/protocols/silc10/buddy.c:1675
msgid "Get Public Key..."
msgstr "সর্বসাধারণ কী গ্রহণ করুন..."
# tithi
-#: ../libpurple/protocols/silc/buddy.c:1683
-#: ../libpurple/protocols/silc/ops.c:1625
-#: ../libpurple/protocols/silc10/buddy.c:1682
-#: ../libpurple/protocols/silc10/ops.c:1624
msgid "Kill User"
msgstr "ব্যবহারকারীকে মুছে ফেলুন"
# tithi
-#: ../libpurple/protocols/silc/buddy.c:1693
-#: ../libpurple/protocols/silc/chat.c:1000
-#: ../libpurple/protocols/silc10/buddy.c:1692
-#: ../libpurple/protocols/silc10/chat.c:977
msgid "Draw On Whiteboard"
msgstr "সাদা-বোর্ডে অংকন করুন"
# tithi
-#: ../libpurple/protocols/silc/chat.c:39
-#: ../libpurple/protocols/silc10/chat.c:39
msgid "_Passphrase:"
msgstr "প্যাস-ফ্রেজ (_P):"
# tithi
-#: ../libpurple/protocols/silc/chat.c:80
-#: ../libpurple/protocols/silc10/chat.c:80
#, c-format
msgid "Channel %s does not exist in the network"
msgstr "নেটওয়ার্কে %s চ্যানেল বিদ্যমান নেই"
-#: ../libpurple/protocols/silc/chat.c:81
-#: ../libpurple/protocols/silc/chat.c:176
-#: ../libpurple/protocols/silc10/chat.c:81
-#: ../libpurple/protocols/silc10/chat.c:174
msgid "Channel Information"
msgstr "চ্যানেল তথ্য"
-#: ../libpurple/protocols/silc/chat.c:82
-#: ../libpurple/protocols/silc10/chat.c:82
msgid "Cannot get channel information"
msgstr "চ্যানেলের তথ্য পায় না"
-#: ../libpurple/protocols/silc/chat.c:119
-#: ../libpurple/protocols/silc10/chat.c:119
#, c-format
msgid "<b>Channel Name:</b> %s"
msgstr "<b>চ্যানেলের নাম:</b> %s"
-#: ../libpurple/protocols/silc/chat.c:122
-#: ../libpurple/protocols/silc10/chat.c:122
#, c-format
msgid "<br><b>User Count:</b> %d"
msgstr "<br><b>ব্যবহারকারী গণনা করুন:</b> %d"
# tithi
-#: ../libpurple/protocols/silc/chat.c:129
-#: ../libpurple/protocols/silc10/chat.c:129
#, c-format
msgid "<br><b>Channel Founder:</b> %s"
msgstr "<br><b>চ্যানেল প্রতিষ্ঠাতা:</b> %s"
-#: ../libpurple/protocols/silc/chat.c:138
-#: ../libpurple/protocols/silc10/chat.c:138
#, c-format
msgid "<br><b>Channel Cipher:</b> %s"
msgstr "<br><b>চ্যানেল সাইফার:</b> %s"
# tithi
#. Definition of HMAC: http://en.wikipedia.org/wiki/HMAC
-#: ../libpurple/protocols/silc/chat.c:143
-#: ../libpurple/protocols/silc10/chat.c:142
#, c-format
msgid "<br><b>Channel HMAC:</b> %s"
msgstr "<br><b>চ্যানেল HMAC:</b> %s"
-#: ../libpurple/protocols/silc/chat.c:148
-#: ../libpurple/protocols/silc10/chat.c:147
#, c-format
msgid "<br><b>Channel Topic:</b><br>%s"
msgstr "<br><b>চ্যানেলের বিষয়:</b><br>%s"
# tithi
-#: ../libpurple/protocols/silc/chat.c:153
-#: ../libpurple/protocols/silc10/chat.c:152
+#, c-format
msgid "<br><b>Channel Modes:</b> "
msgstr "<br><b>চ্যানেল মোড:</b>"
# tithi
-#: ../libpurple/protocols/silc/chat.c:167
-#: ../libpurple/protocols/silc10/chat.c:165
#, c-format
msgid "<br><b>Founder Key Fingerprint:</b><br>%s"
msgstr "<br><b> প্রতিষ্ঠাতার মূল হস্তাঙ্গুলির-ছাপ:</b><br>%s"
# tithi
-#: ../libpurple/protocols/silc/chat.c:168
-#: ../libpurple/protocols/silc10/chat.c:166
#, c-format
msgid "<br><b>Founder Key Babbleprint:</b><br>%s"
msgstr "<br><b>প্রতিষ্ঠাতার মূল ব্যাবলপ্রিন্ট:</b><br>%s"
# tithi
-#: ../libpurple/protocols/silc/chat.c:237
-#: ../libpurple/protocols/silc10/chat.c:236
msgid "Add Channel Public Key"
msgstr "চ্যানেলের সর্বসাধারণ কী যুক্ত করুন"
# tithi
#. Add new public key
-#: ../libpurple/protocols/silc/chat.c:305
-#: ../libpurple/protocols/silc10/chat.c:291
msgid "Open Public Key..."
msgstr "সর্বসাধারণ কী খুলুন..."
# tithi
-#: ../libpurple/protocols/silc/chat.c:424
-#: ../libpurple/protocols/silc10/chat.c:401
msgid "Channel Passphrase"
msgstr "চ্যানেলের প্যাস-ফ্রেজ"
-#: ../libpurple/protocols/silc/chat.c:431
-#: ../libpurple/protocols/silc10/chat.c:408
msgid "Channel Public Keys List"
msgstr "চ্যানেলের সর্বসাধারণ কী এর তালিকা"
# tithi
-#: ../libpurple/protocols/silc/chat.c:436
-#: ../libpurple/protocols/silc10/chat.c:413
+#, c-format
msgid ""
"Channel authentication is used to secure the channel from unauthorized "
"access. The authentication may be based on passphrase and digital "
@@ -12620,136 +9071,80 @@ msgstr ""
"করতে সক্ষম হবে।"
# tithi
-#: ../libpurple/protocols/silc/chat.c:445
-#: ../libpurple/protocols/silc/chat.c:446
-#: ../libpurple/protocols/silc/chat.c:482
-#: ../libpurple/protocols/silc/chat.c:483
-#: ../libpurple/protocols/silc/chat.c:934
-#: ../libpurple/protocols/silc10/chat.c:422
-#: ../libpurple/protocols/silc10/chat.c:423
-#: ../libpurple/protocols/silc10/chat.c:461
-#: ../libpurple/protocols/silc10/chat.c:462
-#: ../libpurple/protocols/silc10/chat.c:911
msgid "Channel Authentication"
msgstr "চ্যানেলের প্রমাণীকরণ"
-#: ../libpurple/protocols/silc/chat.c:447
-#: ../libpurple/protocols/silc/chat.c:484
-#: ../libpurple/protocols/silc10/chat.c:424
-#: ../libpurple/protocols/silc10/chat.c:463
msgid "Add / Remove"
msgstr "যোগ / অপসরণ করুন"
-#: ../libpurple/protocols/silc/chat.c:600
-#: ../libpurple/protocols/silc10/chat.c:581
msgid "Group Name"
msgstr "গ্রুপের নাম"
# tithi
-#: ../libpurple/protocols/silc/chat.c:604
-#: ../libpurple/protocols/silc/ops.c:1830
-#: ../libpurple/protocols/silc/silc.c:1255
-#: ../libpurple/protocols/silc10/chat.c:585
-#: ../libpurple/protocols/silc10/ops.c:1907
-#: ../libpurple/protocols/silc10/silc.c:956
msgid "Passphrase"
msgstr "প্যাস-ফ্রেজ"
-#: ../libpurple/protocols/silc/chat.c:615
-#: ../libpurple/protocols/silc10/chat.c:596
#, c-format
msgid "Please enter the %s channel private group name and passphrase."
msgstr "অনুগ্রহ করে %s চ্যানেলের ব্যক্তিগত গ্রুপের নাম ও প্যাস-ফ্রেজ প্রবেশ করান।"
# tithi
-#: ../libpurple/protocols/silc/chat.c:617
-#: ../libpurple/protocols/silc10/chat.c:598
msgid "Add Channel Private Group"
msgstr "চ্যানেলের ব্যক্তিগত গ্রুপ যোগ করুন"
-#: ../libpurple/protocols/silc/chat.c:749
-#: ../libpurple/protocols/silc10/chat.c:726
msgid "User Limit"
msgstr "ব্যবহারকারীর সীমা"
# tithi
-#: ../libpurple/protocols/silc/chat.c:750
-#: ../libpurple/protocols/silc10/chat.c:727
msgid "Set user limit on channel. Set to zero to reset user limit."
msgstr ""
"চ্যানেলে ব্যবহারকারীর সীমা নির্ধারণ করুন। ব্যবহারকারী সীমা পুনঃ বিন্যাস করতে শূন্যে "
"নির্ধরণ করুন।"
-#: ../libpurple/protocols/silc/chat.c:914
-#: ../libpurple/protocols/silc10/chat.c:891
msgid "Invite List"
msgstr "আমন্ত্রন তালিকা"
-#: ../libpurple/protocols/silc/chat.c:919
-#: ../libpurple/protocols/silc10/chat.c:896
msgid "Ban List"
msgstr "নিষিদ্ধ তালিকা"
-#: ../libpurple/protocols/silc/chat.c:927
-#: ../libpurple/protocols/silc10/chat.c:904
msgid "Add Private Group"
msgstr "ব্যক্তিগত দল যোগ করুন"
# tithi
-#: ../libpurple/protocols/silc/chat.c:940
-#: ../libpurple/protocols/silc10/chat.c:917
msgid "Reset Permanent"
msgstr "স্থায়ীভাবে পুনরায় বিন্যাস করুন"
# tithi
-#: ../libpurple/protocols/silc/chat.c:945
-#: ../libpurple/protocols/silc10/chat.c:922
msgid "Set Permanent"
msgstr "স্থায়ীভাবে বিন্যাস করুন"
-#: ../libpurple/protocols/silc/chat.c:953
-#: ../libpurple/protocols/silc10/chat.c:930
msgid "Set User Limit"
msgstr "ব্যবহারকারীর সীমা নির্ধারন করুন"
-#: ../libpurple/protocols/silc/chat.c:959
-#: ../libpurple/protocols/silc10/chat.c:936
msgid "Reset Topic Restriction"
msgstr "বিষয়বস্তুর নিষেধাজ্ঞা পুনরায় নির্ধারণ করুন"
# tithi
-#: ../libpurple/protocols/silc/chat.c:964
-#: ../libpurple/protocols/silc10/chat.c:941
msgid "Set Topic Restriction"
msgstr "বিষয়বস্তুর নিষেধাজ্ঞা নির্ধারণ করুন"
# tithi
-#: ../libpurple/protocols/silc/chat.c:971
-#: ../libpurple/protocols/silc10/chat.c:948
msgid "Reset Private Channel"
msgstr "ব্যক্তিগত চ্যানেল পুনরায় নির্ধারণ করুন"
# tithi
-#: ../libpurple/protocols/silc/chat.c:976
-#: ../libpurple/protocols/silc10/chat.c:953
msgid "Set Private Channel"
msgstr "ব্যক্তিগত চ্যানেল নির্ধারণ করুন"
# tithi
-#: ../libpurple/protocols/silc/chat.c:983
-#: ../libpurple/protocols/silc10/chat.c:960
msgid "Reset Secret Channel"
msgstr "গোপন চ্যানেল পুনরায় নির্ধারণ করুন"
# tithi
-#: ../libpurple/protocols/silc/chat.c:988
-#: ../libpurple/protocols/silc10/chat.c:965
msgid "Set Secret Channel"
msgstr "গোপন চ্যানেল নির্ধারণ করুন"
# tithi
-#: ../libpurple/protocols/silc/chat.c:1049
-#: ../libpurple/protocols/silc10/chat.c:1102
#, c-format
msgid ""
"You have to join the %s channel before you are able to join the private group"
@@ -12757,343 +9152,199 @@ msgstr ""
"আপনি ব্যক্তিগত গ্রুপে যোগদানে সমর্থ হওয়ার পূর্বে আপনাকে অবশ্যই %s চ্যানেলে যোগ দিতে "
"হবে"
-#: ../libpurple/protocols/silc/chat.c:1051
-#: ../libpurple/protocols/silc10/chat.c:1104
msgid "Join Private Group"
msgstr "ব্যক্তিগত গ্রুপে যোগ দিন"
# tithi
-#: ../libpurple/protocols/silc/chat.c:1052
-#: ../libpurple/protocols/silc10/chat.c:1105
msgid "Cannot join private group"
msgstr "ব্যক্তিগত চ্যানেলে যোগ দিতে পারে না"
-#: ../libpurple/protocols/silc/chat.c:1248
-#: ../libpurple/protocols/silc/silc.c:1452
-#: ../libpurple/protocols/silc10/chat.c:1299
-#: ../libpurple/protocols/silc10/silc.c:1162
msgid "Call Command"
msgstr "নির্দেশ কল করুন"
-#: ../libpurple/protocols/silc/chat.c:1248
-#: ../libpurple/protocols/silc/silc.c:1453
-#: ../libpurple/protocols/silc10/chat.c:1299
-#: ../libpurple/protocols/silc10/silc.c:1162
msgid "Cannot call command"
msgstr "নির্দেশ কল করতে পারে না"
-#: ../libpurple/protocols/silc/chat.c:1249
-#: ../libpurple/protocols/silc/silc.c:1454
-#: ../libpurple/protocols/silc10/chat.c:1300
-#: ../libpurple/protocols/silc10/silc.c:1163
msgid "Unknown command"
msgstr "অজানা নির্দেশ"
-#: ../libpurple/protocols/silc/ft.c:85 ../libpurple/protocols/silc/ft.c:101
-#: ../libpurple/protocols/silc/ft.c:104 ../libpurple/protocols/silc/ft.c:108
-#: ../libpurple/protocols/silc/ft.c:112 ../libpurple/protocols/silc/ft.c:116
-#: ../libpurple/protocols/silc/ft.c:120 ../libpurple/protocols/silc/ft.c:272
-#: ../libpurple/protocols/silc/ft.c:277 ../libpurple/protocols/silc/ft.c:282
-#: ../libpurple/protocols/silc/ft.c:288 ../libpurple/protocols/silc/ft.c:425
-#: ../libpurple/protocols/silc10/ft.c:89 ../libpurple/protocols/silc10/ft.c:92
-#: ../libpurple/protocols/silc10/ft.c:96
-#: ../libpurple/protocols/silc10/ft.c:100
-#: ../libpurple/protocols/silc10/ft.c:104
-#: ../libpurple/protocols/silc10/ft.c:205
-#: ../libpurple/protocols/silc10/ft.c:210
-#: ../libpurple/protocols/silc10/ft.c:215
-#: ../libpurple/protocols/silc10/ft.c:221
-#: ../libpurple/protocols/silc10/ft.c:340
msgid "Secure File Transfer"
msgstr "নিরাপদ ফাইল স্থানান্তর"
-#: ../libpurple/protocols/silc/ft.c:86 ../libpurple/protocols/silc/ft.c:102
-#: ../libpurple/protocols/silc/ft.c:105 ../libpurple/protocols/silc/ft.c:109
-#: ../libpurple/protocols/silc/ft.c:113 ../libpurple/protocols/silc/ft.c:117
-#: ../libpurple/protocols/silc/ft.c:121 ../libpurple/protocols/silc10/ft.c:90
-#: ../libpurple/protocols/silc10/ft.c:93 ../libpurple/protocols/silc10/ft.c:97
-#: ../libpurple/protocols/silc10/ft.c:101
-#: ../libpurple/protocols/silc10/ft.c:105
msgid "Error during file transfer"
msgstr "ফাইল স্থানান্তরের ত্রুটি"
-#: ../libpurple/protocols/silc/ft.c:87
msgid "Remote disconnected"
msgstr "দূরবর্তী সংযোগ বিচ্ছিন্ন"
# tithi
-#: ../libpurple/protocols/silc/ft.c:106 ../libpurple/protocols/silc10/ft.c:94
msgid "Permission denied"
msgstr "অনুমতি অস্বীকৃত"
# tithi
-#: ../libpurple/protocols/silc/ft.c:110 ../libpurple/protocols/silc10/ft.c:98
msgid "Key agreement failed"
msgstr "মূল চুক্তি ব্যর্থ"
# fix me tithi
-#: ../libpurple/protocols/silc/ft.c:114
msgid "Connection timed out"
msgstr "সংযোগ সময় শেষ"
-#: ../libpurple/protocols/silc/ft.c:118
msgid "Creating connection failed"
msgstr "সংযোগ তৈরীতে ব্যর্থ"
-#: ../libpurple/protocols/silc/ft.c:122 ../libpurple/protocols/silc10/ft.c:102
msgid "File transfer session does not exist"
msgstr "ফাইল স্থানান্তর অধিবেশন বিদ্যমান নয়"
-#: ../libpurple/protocols/silc/ft.c:273 ../libpurple/protocols/silc10/ft.c:206
msgid "No file transfer session active"
msgstr "কোনো ফাইল স্থানান্তর অধিবেশন সক্রিয় নয়"
-#: ../libpurple/protocols/silc/ft.c:278 ../libpurple/protocols/silc10/ft.c:211
msgid "File transfer already started"
msgstr "ফাইল স্থানান্তর ইতোমধ্যে শুরু হয়েছে"
# tithi
-#: ../libpurple/protocols/silc/ft.c:283 ../libpurple/protocols/silc10/ft.c:216
msgid "Could not perform key agreement for file transfer"
msgstr "ফাইল স্থানান্তরের জন্য মূল চুক্তি সম্পাদন করতে পারে না"
-#: ../libpurple/protocols/silc/ft.c:289 ../libpurple/protocols/silc10/ft.c:222
msgid "Could not start the file transfer"
msgstr "ফাইল স্থানান্তর শুরু করেনি"
-#: ../libpurple/protocols/silc/ft.c:426 ../libpurple/protocols/silc10/ft.c:341
msgid "Cannot send file"
msgstr "ফাইল পাঠাতে পারে না"
-#: ../libpurple/protocols/silc/ops.c:76
msgid "Error occurred"
msgstr "ত্রুটি সংঘটিত হয়েছে"
# tithi
-#: ../libpurple/protocols/silc/ops.c:548 ../libpurple/protocols/silc/ops.c:557
-#: ../libpurple/protocols/silc/ops.c:566
-#: ../libpurple/protocols/silc10/ops.c:554
-#: ../libpurple/protocols/silc10/ops.c:563
-#: ../libpurple/protocols/silc10/ops.c:572
#, c-format
msgid "%s has changed the topic of <I>%s</I> to: %s"
msgstr "%1s <I>%2s</I> এর বিষয়বস্তু পরিবর্তন করেছে: %3s"
# tithi
-#: ../libpurple/protocols/silc/ops.c:632
-#: ../libpurple/protocols/silc10/ops.c:638
#, c-format
msgid "<I>%s</I> set channel <I>%s</I> modes to: %s"
msgstr "<I>%s</I> চ্যানেল <I>%s</I> মোডসমূহ নির্ধারণ করে: %s"
# tithi
-#: ../libpurple/protocols/silc/ops.c:636
-#: ../libpurple/protocols/silc10/ops.c:642
#, c-format
msgid "<I>%s</I> removed all channel <I>%s</I> modes"
msgstr "<I>%s</I> সমস্ত চ্যানেল <I>%s</I> মোডসমূহ অপসারণ করেছে"
# tithi
-#: ../libpurple/protocols/silc/ops.c:669
-#: ../libpurple/protocols/silc10/ops.c:675
#, c-format
msgid "<I>%s</I> set <I>%s's</I> modes to: %s"
msgstr "<I>%s</I> মোড <I> %s</I> নির্ধারণ করে: %s-এ"
# tithi
-#: ../libpurple/protocols/silc/ops.c:677
-#: ../libpurple/protocols/silc10/ops.c:683
#, c-format
msgid "<I>%s</I> removed all <I>%s's</I> modes"
msgstr "<I>%s's</I> সব <I>%s</I> মোডসমূহ অপসারণ করেছে"
# tithi
-#: ../libpurple/protocols/silc/ops.c:706
-#: ../libpurple/protocols/silc10/ops.c:712
#, c-format
msgid "You have been kicked off <I>%s</I> by <I>%s</I> (%s)"
msgstr "আপনি <I>%s</I> (%s) দ্বারা <I>%s</I> প্রত্যাখাতি হয়েছন"
# tithi
-#: ../libpurple/protocols/silc/ops.c:733 ../libpurple/protocols/silc/ops.c:738
-#: ../libpurple/protocols/silc/ops.c:743
-#: ../libpurple/protocols/silc10/ops.c:742
-#: ../libpurple/protocols/silc10/ops.c:747
-#: ../libpurple/protocols/silc10/ops.c:752
#, c-format
msgid "You have been killed by %s (%s)"
msgstr "আপনাকে %1s (%2s) দ্বারা অপসারণ করা হয়েছে"
# tithi
-#: ../libpurple/protocols/silc/ops.c:764 ../libpurple/protocols/silc/ops.c:769
-#: ../libpurple/protocols/silc/ops.c:774
-#: ../libpurple/protocols/silc10/ops.c:773
-#: ../libpurple/protocols/silc10/ops.c:778
-#: ../libpurple/protocols/silc10/ops.c:783
#, c-format
msgid "Killed by %s (%s)"
msgstr "%1s (%2s) দ্বারা অপসারণ করা হয়েছে"
-#: ../libpurple/protocols/silc/ops.c:811
-#: ../libpurple/protocols/silc10/ops.c:829
msgid "Server signoff"
msgstr "সার্ভার সাইন-অফ"
-#: ../libpurple/protocols/silc/ops.c:997
-#: ../libpurple/protocols/silc10/ops.c:1017
msgid "Personal Information"
msgstr "ব্যক্তিগত তথ্য"
-#: ../libpurple/protocols/silc/ops.c:1020
-#: ../libpurple/protocols/silc10/ops.c:1040
msgid "Birth Day"
msgstr "জন্মদিন"
# tithi
-#: ../libpurple/protocols/silc/ops.c:1028
-#: ../libpurple/protocols/silc10/ops.c:1048
msgid "Job Role"
msgstr "কর্ম ভূমিকা"
-#: ../libpurple/protocols/silc/ops.c:1032
-#: ../libpurple/protocols/silc/silc.c:1248
-#: ../libpurple/protocols/silc10/ops.c:1052
-#: ../libpurple/protocols/silc10/silc.c:949
msgid "Organization"
msgstr "সংঘঠন"
-#: ../libpurple/protocols/silc/ops.c:1036
-#: ../libpurple/protocols/silc10/ops.c:1056
msgid "Unit"
msgstr "একক"
-#: ../libpurple/protocols/silc/ops.c:1060
-#: ../libpurple/protocols/silc10/ops.c:1080
msgid "Note"
msgstr "নোট"
-#: ../libpurple/protocols/silc/ops.c:1106
-#: ../libpurple/protocols/silc10/ops.c:1128
msgid "Join Chat"
msgstr "আড্ডায় যোগ দিন"
# tithi
-#: ../libpurple/protocols/silc/ops.c:1140
-#: ../libpurple/protocols/silc10/chat.c:1039
#, c-format
msgid "You are channel founder on <I>%s</I>"
msgstr "আপনি <I>%s</I> এ চ্যানেল প্রতিষ্ঠাতা"
# tithi
-#: ../libpurple/protocols/silc/ops.c:1144
-#: ../libpurple/protocols/silc10/chat.c:1043
#, c-format
msgid "Channel founder on <I>%s</I> is <I>%s</I>"
msgstr "<I>%s</I> এর চ্যানেল প্রতিষ্ঠাতা হলো <I>%s</I>"
-#: ../libpurple/protocols/silc/ops.c:1203
-#: ../libpurple/protocols/silc/ops.c:1341
-#: ../libpurple/protocols/silc10/ops.c:1183
-#: ../libpurple/protocols/silc10/ops.c:1332
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1071
msgid "Real Name"
msgstr "আসল নাম"
-#: ../libpurple/protocols/silc/ops.c:1231
-#: ../libpurple/protocols/silc10/ops.c:1213
msgid "Status Text"
msgstr "অবস্থা পাঠ"
# tithi
-#: ../libpurple/protocols/silc/ops.c:1293
-#: ../libpurple/protocols/silc/ops.c:1367
-#: ../libpurple/protocols/silc10/ops.c:1285
-#: ../libpurple/protocols/silc10/ops.c:1357
msgid "Public Key Fingerprint"
msgstr "সর্বসাধারণ কী-এর হস্তাঙ্গুলির-ছাপ"
# tithi
-#: ../libpurple/protocols/silc/ops.c:1294
-#: ../libpurple/protocols/silc/ops.c:1368
-#: ../libpurple/protocols/silc10/ops.c:1286
-#: ../libpurple/protocols/silc10/ops.c:1358
msgid "Public Key Babbleprint"
msgstr "সর্বসাধারণ কী-এর ব্যাবলপ্রিন্ট"
-#: ../libpurple/protocols/silc/ops.c:1307
-#: ../libpurple/protocols/silc10/ops.c:1298
msgid "_More..."
msgstr "আরও... (_M)"
# tithi
-#: ../libpurple/protocols/silc/ops.c:1386
-#: ../libpurple/protocols/silc/silc.c:1312
-#: ../libpurple/protocols/silc10/ops.c:1371
-#: ../libpurple/protocols/silc10/silc.c:1013
msgid "Detach From Server"
msgstr "সার্ভার থেকে বিচ্ছিন্ন"
# tithi
-#: ../libpurple/protocols/silc/ops.c:1386
-#: ../libpurple/protocols/silc10/ops.c:1371
msgid "Cannot detach"
msgstr "বিচ্ছিন্ন হতে পারে না"
-#: ../libpurple/protocols/silc/ops.c:1406
-#: ../libpurple/protocols/silc10/ops.c:1382
msgid "Cannot set topic"
msgstr "বিষয়বস্তু ঠিক করতে পারে না"
-#: ../libpurple/protocols/silc/ops.c:1435
-#: ../libpurple/protocols/silc10/ops.c:1414
msgid "Failed to change nickname"
msgstr "ডাকনাম পরিবর্তন করতে ব্যর্থ"
-#: ../libpurple/protocols/silc/ops.c:1484
-#: ../libpurple/protocols/silc10/ops.c:1462
msgid "Roomlist"
msgstr "রুম-তালিকা"
-#: ../libpurple/protocols/silc/ops.c:1484
-#: ../libpurple/protocols/silc10/ops.c:1462
msgid "Cannot get room list"
msgstr "রুম-তালিকা পাওয়া যাচ্ছে না"
-#: ../libpurple/protocols/silc/ops.c:1485
msgid "Network is empty"
msgstr "নেটওয়ার্ক খালি"
# tithi
-#: ../libpurple/protocols/silc/ops.c:1529
-#: ../libpurple/protocols/silc10/ops.c:1507
msgid "No public key was received"
msgstr "কোনো সর্বসাধারণ কী খুঁজে পায়নি"
-#: ../libpurple/protocols/silc/ops.c:1541
-#: ../libpurple/protocols/silc/ops.c:1554
-#: ../libpurple/protocols/silc10/ops.c:1519
-#: ../libpurple/protocols/silc10/ops.c:1532
msgid "Server Information"
msgstr "সার্ভারের তথ্য"
-#: ../libpurple/protocols/silc/ops.c:1542
-#: ../libpurple/protocols/silc10/ops.c:1520
msgid "Cannot get server information"
msgstr "সার্ভারের তথ্য গ্রহণ করতে পারে না"
-#: ../libpurple/protocols/silc/ops.c:1565
-#: ../libpurple/protocols/silc10/ops.c:1549
-#: ../libpurple/protocols/silc10/ops.c:1558
msgid "Server Statistics"
msgstr "সার্ভারের পরিসংখ্যান"
-#: ../libpurple/protocols/silc/ops.c:1566
-#: ../libpurple/protocols/silc10/ops.c:1550
msgid "Cannot get server statistics"
msgstr "সার্ভার পরিসংখ্যান পাওয়া যাচ্ছে না"
-#: ../libpurple/protocols/silc/ops.c:1573
-#: ../libpurple/protocols/silc10/ops.c:1581
#, c-format
msgid ""
"Local server start time: %s\n"
@@ -13128,65 +9379,42 @@ msgstr ""
"মোট সার্ভারের পরিচালকগণ: %14d\n"
"মোট রাউটারের পরিচালকগণ: %15d\n"
-#: ../libpurple/protocols/silc/ops.c:1605
-#: ../libpurple/protocols/silc10/ops.c:1604
msgid "Network Statistics"
msgstr "নেটওয়ার্ক পরিসংখ্যান"
-#: ../libpurple/protocols/silc/ops.c:1613
-#: ../libpurple/protocols/silc10/ops.c:1612
msgid "Ping failed"
msgstr "পিঙ্গ ব্যর্থ"
-#: ../libpurple/protocols/silc/ops.c:1618
-#: ../libpurple/protocols/silc10/ops.c:1617
msgid "Ping reply received from server"
msgstr "সার্ভার থেকে পিঙ্গ এর উত্তর গ্রহন করা হয়েছে"
# tithi
-#: ../libpurple/protocols/silc/ops.c:1626
-#: ../libpurple/protocols/silc10/ops.c:1625
msgid "Could not kill user"
msgstr "ব্যবহারকারীকে বিচ্ছিন্ন করা সম্ভব হচ্ছে না"
# tithi
-#: ../libpurple/protocols/silc/ops.c:1665
msgid "WATCH"
msgstr "পর্যবেক্ষণ করুন"
-#: ../libpurple/protocols/silc/ops.c:1665
msgid "Cannot watch user"
msgstr "ব্যবহারকারীকে পর্যবেক্ষণ করতে পারছে না"
# tithi
-#: ../libpurple/protocols/silc/ops.c:1741
-#: ../libpurple/protocols/silc/ops.c:1792
-#: ../libpurple/protocols/silc/silc.c:395
-#: ../libpurple/protocols/silc10/ops.c:1817
-#: ../libpurple/protocols/silc10/ops.c:1864
-#: ../libpurple/protocols/silc10/silc.c:194
msgid "Resuming session"
msgstr "অধিবেশন পুনরায় শুরু করছে"
# tithi
-#: ../libpurple/protocols/silc/ops.c:1743
-#: ../libpurple/protocols/silc10/ops.c:1819
msgid "Authenticating connection"
msgstr "সংযোগ প্রমাণ করছে"
-#: ../libpurple/protocols/silc/ops.c:1794
-#: ../libpurple/protocols/silc10/ops.c:1866
msgid "Verifying server public key"
msgstr "সার্ভারের সর্বসাধারণ কী পরীক্ষা করছে"
# tithi
-#: ../libpurple/protocols/silc/ops.c:1831
-#: ../libpurple/protocols/silc10/ops.c:1908
msgid "Passphrase required"
msgstr "প্যাস-ফ্রেজ প্রয়োজন"
# tithi
-#: ../libpurple/protocols/silc/pk.c:98 ../libpurple/protocols/silc10/pk.c:104
#, c-format
msgid ""
"Received %s's public key. Your local copy does not match this key. Would you "
@@ -13196,14 +9424,12 @@ msgstr ""
"আপনি কি তারপরও এই সর্বসাধারণ কী গ্রহণে আগ্রহী?"
# tithi
-#: ../libpurple/protocols/silc/pk.c:103 ../libpurple/protocols/silc10/pk.c:109
#, c-format
msgid "Received %s's public key. Would you like to accept this public key?"
msgstr ""
"%s এর সর্বসাধারণ কী গ্রহণ করেছে। আপনি কি তারপরও এই সর্বসাধারণ কী গ্রহণে আগ্রহী?"
# tithi
-#: ../libpurple/protocols/silc/pk.c:107 ../libpurple/protocols/silc10/pk.c:113
#, c-format
msgid ""
"Fingerprint and babbleprint for the %s key are:\n"
@@ -13216,122 +9442,79 @@ msgstr ""
"%2s\n"
"%3s\n"
-#: ../libpurple/protocols/silc/pk.c:110 ../libpurple/protocols/silc/pk.c:139
-#: ../libpurple/protocols/silc10/pk.c:116
-#: ../libpurple/protocols/silc10/pk.c:142
msgid "Verify Public Key"
msgstr "সর্বসাধারণ কী যাচাই করুন"
-#: ../libpurple/protocols/silc/pk.c:115 ../libpurple/protocols/silc10/pk.c:121
msgid "_View..."
msgstr "প্রদর্শন করুন... (_V)"
# tithi
-#: ../libpurple/protocols/silc/pk.c:140 ../libpurple/protocols/silc10/pk.c:143
msgid "Unsupported public key type"
msgstr "অসমর্থিত সর্বসাধারণ কী এর ধরন"
-#: ../libpurple/protocols/silc/silc.c:320
-#: ../libpurple/protocols/silc10/ops.c:1755
msgid "Disconnected by server"
msgstr "সার্ভার দ্বারা বিচ্ছিন্ন"
# tithi
-#: ../libpurple/protocols/silc/silc.c:328
-#: ../libpurple/protocols/silc10/ops.c:1701
msgid "Error during connecting to SILC Server"
msgstr "SILC সার্ভারে সংযোগের সময় ত্রুটি"
# tithi
-#: ../libpurple/protocols/silc/silc.c:334
-#: ../libpurple/protocols/silc10/ops.c:1707
msgid "Key Exchange failed"
msgstr "কী বিনিময় ব্যর্থ হয়েছে"
# tithi
-#: ../libpurple/protocols/silc/silc.c:344
-#: ../libpurple/protocols/silc10/ops.c:1718
msgid ""
"Resuming detached session failed. Press Reconnect to create new connection."
msgstr ""
"বিচ্ছিন্ন অধিবেশনটি পুনরায় শুরু করতে ব্যর্থ হয়েছে। অনুগ্রহ করে নতুন সংযোগ তৈরী করতে "
"'পুনরায় সংযোগ' চাপুন।"
-#: ../libpurple/protocols/silc/silc.c:374
-#: ../libpurple/protocols/silc/silc.c:421
-#: ../libpurple/protocols/silc10/silc.c:164
msgid "Connection failed"
msgstr "সংযোগ ব্যর্থ হয়েছে"
# tithi
-#: ../libpurple/protocols/silc/silc.c:398
-#: ../libpurple/protocols/silc10/silc.c:197
msgid "Performing key exchange"
msgstr "কী বিনিময় সম্পাদন করছে"
-#: ../libpurple/protocols/silc/silc.c:450
-#: ../libpurple/protocols/silc10/silc.c:362
msgid "Unable to create connection"
msgstr "সংযোগ তৈরী করতে ব্যর্থ হয়েছে"
# tithi
-#: ../libpurple/protocols/silc/silc.c:493
-#: ../libpurple/protocols/silc/silc.c:509
-#: ../libpurple/protocols/silc/silc.c:538
-#: ../libpurple/protocols/silc10/silc.c:341
msgid "Could not load SILC key pair"
msgstr "SILC কী যুগল লোড করতে পারেনি"
# tithi
#. Progress
-#: ../libpurple/protocols/silc/silc.c:523
-#: ../libpurple/protocols/silc10/silc.c:330
msgid "Connecting to SILC Server"
msgstr "SILC সার্ভারে সংযোগ করছে"
-#: ../libpurple/protocols/silc/silc.c:569
-#: ../libpurple/protocols/silc10/silc.c:272
msgid "Out of memory"
msgstr "মেমোরীর বাইরে"
# tithi
-#: ../libpurple/protocols/silc/silc.c:620
-#: ../libpurple/protocols/silc10/silc.c:318
msgid "Cannot initialize SILC protocol"
msgstr "SILC প্রটোকল চালু করতে পারে না"
# tithi
-#: ../libpurple/protocols/silc/silc.c:633
-#: ../libpurple/protocols/silc10/silc.c:325
msgid "Error loading SILC key pair"
msgstr "SILC কী যুগল লোডে ত্রুটি"
-#: ../libpurple/protocols/silc/silc.c:690
-#: ../libpurple/protocols/silc/silc.c:1863
-#: ../libpurple/protocols/silc10/silc.c:405
-#: ../libpurple/protocols/silc10/silc.c:1582
#, c-format
msgid "Download %s: %s"
msgstr "%1s ডাউনলোড করুন: %2s"
-#: ../libpurple/protocols/silc/silc.c:974
-#: ../libpurple/protocols/silc10/silc.c:675
msgid "Your Current Mood"
msgstr "আপনার বর্তমান অবস্থা"
-#: ../libpurple/protocols/silc/silc.c:976
-#: ../libpurple/protocols/silc10/silc.c:677 ../pidgin/gtkprefs.c:1792
+#, c-format
msgid "Normal"
msgstr "স্বাভাবিক"
-#: ../libpurple/protocols/silc/silc.c:990
-#: ../libpurple/protocols/silc10/silc.c:691
msgid "In love"
msgstr "ভালবাসায়"
# tithi
-#: ../libpurple/protocols/silc/silc.c:1001
-#: ../libpurple/protocols/silc10/silc.c:702
msgid ""
"\n"
"Your Preferred Contact Methods"
@@ -13339,67 +9522,40 @@ msgstr ""
"\n"
"আপনাকে পছন্দের যোগাযোগ পদ্ধতি সমূহ"
-#: ../libpurple/protocols/silc/silc.c:1009
-#: ../libpurple/protocols/silc/util.c:567
-#: ../libpurple/protocols/silc10/silc.c:710
-#: ../libpurple/protocols/silc10/util.c:561
msgid "SMS"
msgstr "এসএমএস"
-#: ../libpurple/protocols/silc/silc.c:1011
-#: ../libpurple/protocols/silc/util.c:569
-#: ../libpurple/protocols/silc10/silc.c:712
-#: ../libpurple/protocols/silc10/util.c:563
msgid "MMS"
msgstr "এমএমএস"
-#: ../libpurple/protocols/silc/silc.c:1013
-#: ../libpurple/protocols/silc10/silc.c:714
msgid "Video conferencing"
msgstr "ভিডিও অধিবেশন চলছে"
-#: ../libpurple/protocols/silc/silc.c:1018
-#: ../libpurple/protocols/silc10/silc.c:719
msgid "Your Current Status"
msgstr "আপনার বর্তমান অবস্থা"
-#: ../libpurple/protocols/silc/silc.c:1025
-#: ../libpurple/protocols/silc10/silc.c:726
msgid "Online Services"
msgstr "অনলাইন সেবাসমূহ"
# tithi
-#: ../libpurple/protocols/silc/silc.c:1028
-#: ../libpurple/protocols/silc10/silc.c:729
msgid "Let others see what services you are using"
msgstr "আপনি কি সেবাসমূহ ব্যবহার করছেন তা অন্যদের দেখতে দিন"
# tithi
-#: ../libpurple/protocols/silc/silc.c:1034
-#: ../libpurple/protocols/silc10/silc.c:735
msgid "Let others see what computer you are using"
msgstr "আপনি কি কম্পিউটার ব্যবহার করছেন তা অন্যদের দেখতে দিন"
-#: ../libpurple/protocols/silc/silc.c:1041
-#: ../libpurple/protocols/silc10/silc.c:742
msgid "Your VCard File"
msgstr "আপনার ভি-কার্ড ফাইল"
-#: ../libpurple/protocols/silc/silc.c:1047
msgid "Timezone (UTC)"
msgstr "সময়-এলাকা (ইউটিসি)"
# tithi
-#: ../libpurple/protocols/silc/silc.c:1051
-#: ../libpurple/protocols/silc/silc.c:1052
-#: ../libpurple/protocols/silc10/silc.c:754
-#: ../libpurple/protocols/silc10/silc.c:755
msgid "User Online Status Attributes"
msgstr "ব্যবহারকারীর অনলাইন অবস্থার বৈশিষ্ট্যাবলী"
# tithi
-#: ../libpurple/protocols/silc/silc.c:1053
-#: ../libpurple/protocols/silc10/silc.c:756
msgid ""
"You can let other users see your online status information and your personal "
"information. Please fill the information you would like other users to see "
@@ -13409,237 +9565,148 @@ msgstr ""
"পারেন। অনুগ্রহ করে আপনি নিজের সম্বন্ধে যে তথ্য অন্যান্য ব্যবহারকারীকে দেখতে দিতে চান "
"তা পূরণ করুন।"
-#: ../libpurple/protocols/silc/silc.c:1094
-#: ../libpurple/protocols/silc/silc.c:1100
-#: ../libpurple/protocols/silc/silc.c:1721
-#: ../libpurple/protocols/silc10/silc.c:797
-#: ../libpurple/protocols/silc10/silc.c:803
-#: ../libpurple/protocols/silc10/silc.c:1440
msgid "Message of the Day"
msgstr "দিনের বার্তা"
-#: ../libpurple/protocols/silc/silc.c:1094
-#: ../libpurple/protocols/silc10/silc.c:797
msgid "No Message of the Day available"
msgstr "আজকের দিনের কোনো বার্তা সহজলভ্য নয়"
# tithi
-#: ../libpurple/protocols/silc/silc.c:1095
-#: ../libpurple/protocols/silc/silc.c:1716
-#: ../libpurple/protocols/silc10/silc.c:798
-#: ../libpurple/protocols/silc10/silc.c:1435
msgid "There is no Message of the Day associated with this connection"
msgstr "এই সংযোগের সাথে সম্পর্কিত আজকের দিনের কোনো বার্তা নেই"
# tithi
-#: ../libpurple/protocols/silc/silc.c:1146
-#: ../libpurple/protocols/silc/silc.c:1192
-#: ../libpurple/protocols/silc/silc.c:1263
-#: ../libpurple/protocols/silc/silc.c:1264
-#: ../libpurple/protocols/silc10/silc.c:849
-#: ../libpurple/protocols/silc10/silc.c:893
-#: ../libpurple/protocols/silc10/silc.c:964
-#: ../libpurple/protocols/silc10/silc.c:965
msgid "Create New SILC Key Pair"
msgstr "নতুন SILC কী যুগল তৈরি করুন"
-#: ../libpurple/protocols/silc/silc.c:1146
-#: ../libpurple/protocols/silc10/silc.c:849
msgid "Passphrases do not match"
msgstr "প্যাস-ফ্রেজ মিলে না"
-#: ../libpurple/protocols/silc/silc.c:1192
-#: ../libpurple/protocols/silc10/silc.c:893
msgid "Key Pair Generation failed"
msgstr "কী জোড়া তৈরী করতে ব্যর্থ হয়েছে"
-#: ../libpurple/protocols/silc/silc.c:1231
-#: ../libpurple/protocols/silc10/silc.c:932
msgid "Key length"
msgstr "কী-এর দৈর্ঘ্য"
-#: ../libpurple/protocols/silc/silc.c:1233
-#: ../libpurple/protocols/silc10/silc.c:934
msgid "Public key file"
msgstr "সর্বসাধারণ কী ফাইল"
-#: ../libpurple/protocols/silc/silc.c:1235
-#: ../libpurple/protocols/silc10/silc.c:936
msgid "Private key file"
msgstr "বযক্তিগত কী ফাইল"
-#: ../libpurple/protocols/silc/silc.c:1258
-#: ../libpurple/protocols/silc10/silc.c:959
msgid "Passphrase (retype)"
msgstr "প্যাস-ফ্রেজ (পুনরায় টাইপ করুন)"
# tithi
-#: ../libpurple/protocols/silc/silc.c:1265
-#: ../libpurple/protocols/silc10/silc.c:966
msgid "Generate Key Pair"
msgstr "কী যুগল তৈরি করুন"
-#: ../libpurple/protocols/silc/silc.c:1308
-#: ../libpurple/protocols/silc10/silc.c:1009
msgid "Online Status"
msgstr "অনলাইন অবস্থা"
-#: ../libpurple/protocols/silc/silc.c:1316
-#: ../libpurple/protocols/silc10/silc.c:1017
msgid "View Message of the Day"
msgstr "দিনের বার্তাটি প্রদর্শন করুন"
# tithi
-#: ../libpurple/protocols/silc/silc.c:1320
-#: ../libpurple/protocols/silc10/silc.c:1021
msgid "Create SILC Key Pair..."
msgstr "SILC কী যুগল তৈরি করুন..."
-#: ../libpurple/protocols/silc/silc.c:1412
-#: ../libpurple/protocols/silc10/silc.c:1120
#, c-format
msgid "User <I>%s</I> is not present in the network"
msgstr "<I>%s</I> ব্যবহারকারী নেটওয়ার্কে উপস্থিত নেই"
-#: ../libpurple/protocols/silc/silc.c:1592
-#: ../libpurple/protocols/silc10/silc.c:1311
msgid "Topic too long"
msgstr "বিষয়বস্তু অত্যন্ত দীর্ঘ"
-#: ../libpurple/protocols/silc/silc.c:1673
-#: ../libpurple/protocols/silc10/silc.c:1392
msgid "You must specify a nick"
msgstr "আপনাকে একটি ডাকনাম উল্লেখ করতে হবে"
-#: ../libpurple/protocols/silc/silc.c:1775
-#: ../libpurple/protocols/silc10/silc.c:1494
#, c-format
msgid "channel %s not found"
msgstr "%s চ্যানেলটি খুঁজে পাওয়া যায়নি"
-#: ../libpurple/protocols/silc/silc.c:1780
-#: ../libpurple/protocols/silc10/silc.c:1499
#, c-format
msgid "channel modes for %s: %s"
msgstr "%1s-এর চ্যানেল মোড: %2s"
# tithi
-#: ../libpurple/protocols/silc/silc.c:1782
-#: ../libpurple/protocols/silc10/silc.c:1501
#, c-format
msgid "no channel modes are set on %s"
msgstr "%s এ কোনো চ্যানেল মোড নির্ধারণ করা হয়নি"
-#: ../libpurple/protocols/silc/silc.c:1795
-#: ../libpurple/protocols/silc10/silc.c:1514
#, c-format
msgid "Failed to set cmodes for %s"
msgstr "%s-এর জন্য সি-মোড নির্ধারণ করতে ব্যর্থ"
-#: ../libpurple/protocols/silc/silc.c:1825
-#: ../libpurple/protocols/silc10/silc.c:1544
#, c-format
msgid "Unknown command: %s, (may be a client bug)"
msgstr "অজানা নির্দেশ: %s, (সম্ভবত এটি একটি ক্লায়েন্ট ত্রুটি)"
-#: ../libpurple/protocols/silc/silc.c:1906
-#: ../libpurple/protocols/silc10/silc.c:1625
msgid "part [channel]: Leave the chat"
msgstr "অংশ [চ্যানেল]: আড্ডা ত্যাগ করুন"
-#: ../libpurple/protocols/silc/silc.c:1910
-#: ../libpurple/protocols/silc10/silc.c:1629
msgid "leave [channel]: Leave the chat"
msgstr "ত্যাগ করুন [চ্যানেল]: আড্ডা ত্যাগ করুন"
# tithi
-#: ../libpurple/protocols/silc/silc.c:1914
-#: ../libpurple/protocols/silc10/silc.c:1633
msgid "topic [&lt;new topic&gt;]: View or change the topic"
msgstr "বিষয়বস্তু [&1lt;নতুন বিষয়বস্তু &2gt;]: বিষয়বস্তু দেখুন বা পরিবর্তন করুন"
# tithi
-#: ../libpurple/protocols/silc/silc.c:1919
-#: ../libpurple/protocols/silc10/silc.c:1638
msgid "join &lt;channel&gt; [&lt;password&gt;]: Join a chat on this network"
msgstr ""
"যুক্ত হোন &1lt;চ্যানেল&2gt; [&3lt;গুপ্তসঙ্কেত&4gt;]: এই নেটওয়ার্কের একটি আড্ডায় যোগ "
"দিন"
-#: ../libpurple/protocols/silc/silc.c:1923
-#: ../libpurple/protocols/silc10/silc.c:1642
msgid "list: List channels on this network"
msgstr "তালিকা: এই নেটওয়ার্কের চ্যানেলসমূহের তালিকা তৈরী করুন"
# fix -me tithi
-#: ../libpurple/protocols/silc/silc.c:1927
-#: ../libpurple/protocols/silc10/silc.c:1646
msgid "whois &lt;nick&gt;: View nick's information"
msgstr "কে &1lt;ডাকনাম&2gt;: ডাকনামের তথ্য দেখুন"
# tithi
-#: ../libpurple/protocols/silc/silc.c:1931
-#: ../libpurple/protocols/silc10/silc.c:1650
-#: ../libpurple/protocols/zephyr/zephyr.c:2706
msgid "msg &lt;nick&gt; &lt;message&gt;: Send a private message to a user"
msgstr ""
"বার্তা &1lt;ডাকনাম&2gt; &3lt;বার্তা&4gt;: ব্যবহারকারীকে একটি ব্যক্তিগত বার্তা "
"পাঠান"
# tithi
-#: ../libpurple/protocols/silc/silc.c:1935
-#: ../libpurple/protocols/silc10/silc.c:1654
msgid "query &lt;nick&gt; [&lt;message&gt;]: Send a private message to a user"
msgstr ""
"জিজ্ঞাসা &1lt;ডাকনাম&2gt; [&3lt;বার্তা&4gt;]: ব্যবহারকারীকে একটি ব্যক্তিগত বার্তা "
"পাঠান"
# tithi
-#: ../libpurple/protocols/silc/silc.c:1939
-#: ../libpurple/protocols/silc10/silc.c:1658
msgid "motd: View the server's Message Of The Day"
msgstr "দিনের সেরা বার্তা: সার্ভারের 'দিনের সেরা বার্তা' দেখুন"
# tithi
-#: ../libpurple/protocols/silc/silc.c:1943
-#: ../libpurple/protocols/silc10/silc.c:1662
msgid "detach: Detach this session"
msgstr "বিচ্ছিন্ন: অধিবেশনটিকে বিচ্ছিন্ন করুন"
# tithi
-#: ../libpurple/protocols/silc/silc.c:1947
-#: ../libpurple/protocols/silc10/silc.c:1666
msgid "quit [message]: Disconnect from the server, with an optional message"
msgstr "ত্যাগ করুন [বার্তা]: একটি ঐচ্ছিক বার্তার সহ, সার্ভার হতে বিচ্ছিন্ন করুন"
-#: ../libpurple/protocols/silc/silc.c:1951
-#: ../libpurple/protocols/silc10/silc.c:1670
msgid "call &lt;command&gt;: Call any silc client command"
msgstr "কল করুন &1lt;নির্দেশ&2gt;: যেকোনো silc ক্লায়েন্টের নির্দেশ কল করুন"
# tithi
-#: ../libpurple/protocols/silc/silc.c:1957
-#: ../libpurple/protocols/silc10/silc.c:1676
msgid "kill &lt;nick&gt; [-pubkey|&lt;reason&gt;]: Kill nick"
msgstr ""
"মুছে ফেলুন &1lt;ডাকনাম&2gt; [-সর্বসাধারণ-কী|&3lt;কারণ&4gt;]: ডাকনাম মুছে ফেলুন"
# ডাকনাম
# tithi
-#: ../libpurple/protocols/silc/silc.c:1961
-#: ../libpurple/protocols/silc10/silc.c:1680
msgid "nick &lt;newnick&gt;: Change your nickname"
msgstr "ডাকনাম &1lt;নতুন ডাকনাম&2gt;: আপনার ডাকনাম পরিবর্তন করুন"
# tithi
-#: ../libpurple/protocols/silc/silc.c:1965
-#: ../libpurple/protocols/silc10/silc.c:1684
msgid "whowas &lt;nick&gt;: View nick's information"
msgstr "কে ছিল &1lt;ডাকনাম&2gt;: ডাকনামের তথ্য দেখুন"
# tithi
-#: ../libpurple/protocols/silc/silc.c:1969
-#: ../libpurple/protocols/silc10/silc.c:1688
msgid ""
"cmode &lt;channel&gt; [+|-&lt;modes&gt;] [arguments]: Change or display "
"channel modes"
@@ -13648,8 +9715,6 @@ msgstr ""
"পরিবর্তন করুন বা প্রদর্শন করুন"
# tithi
-#: ../libpurple/protocols/silc/silc.c:1973
-#: ../libpurple/protocols/silc10/silc.c:1692
msgid ""
"cumode &lt;channel&gt; +|-&lt;modes&gt; &lt;nick&gt;: Change nick's modes "
"on channel"
@@ -13658,23 +9723,17 @@ msgstr ""
"ডাকনামের মোডসমূহ পরিবর্তন করুন"
# tithi
-#: ../libpurple/protocols/silc/silc.c:1977
-#: ../libpurple/protocols/silc10/silc.c:1696
msgid "umode &lt;usermodes&gt;: Set your modes in the network"
msgstr ""
"ইউ-মোড &1lt;ব্যবহারকারীর-মোডসমূহ&2gt;: নেটওয়ার্কে আপনার মোডসমূহ নির্ধারণ করুন"
# tithi
-#: ../libpurple/protocols/silc/silc.c:1981
-#: ../libpurple/protocols/silc10/silc.c:1700
msgid "oper &lt;nick&gt; [-pubkey]: Get server operator privileges"
msgstr ""
"অপারেটর &1lt;ডাকনাম&2gt; [-সর্বসাধারণ-কী]: সার্ভার অপারেটরের প্রাধিকারগুলো গ্রহণ "
"করুন"
# tithi
-#: ../libpurple/protocols/silc/silc.c:1985
-#: ../libpurple/protocols/silc10/silc.c:1704
msgid ""
"invite &lt;channel&gt; [-|+]&lt;nick&gt;: invite nick or add/remove from "
"channel invite list"
@@ -13683,54 +9742,38 @@ msgstr ""
"চ্যানেলের আমন্ত্রন তালিকা থেকে যোগ করুন/মুছে ফেলুন"
# tithi
-#: ../libpurple/protocols/silc/silc.c:1989
-#: ../libpurple/protocols/silc10/silc.c:1708
msgid "kick &lt;channel&gt; &lt;nick&gt; [comment]: Kick client from channel"
msgstr ""
"অপসারণ করুন &1lt;চ্যানেল&2gt; &3lt;ডাকনাম&4gt; [মন্তব্য]: চ্যানেল থেকে গ্রাহককে "
"অপসারণ করুন"
# tithi
-#: ../libpurple/protocols/silc/silc.c:1993
-#: ../libpurple/protocols/silc10/silc.c:1712
msgid "info [server]: View server administrative details"
msgstr "তথ্য [সার্ভার]: সার্ভারের প্রশাসনিক বিবরণ দেখুন"
# tithi
-#: ../libpurple/protocols/silc/silc.c:1997
-#: ../libpurple/protocols/silc10/silc.c:1716
msgid "ban [&lt;channel&gt; +|-&lt;nick&gt;]: Ban client from channel"
msgstr ""
"নিষিদ্ধ [&1lt;চ্যানেল&2gt; +|-&3lt;ডাকনাম&4gt;]: চ্যানেল হতে গ্রাহককে নিষিদ্ধ করুন"
# tithi
-#: ../libpurple/protocols/silc/silc.c:2001
-#: ../libpurple/protocols/silc10/silc.c:1720
msgid "getkey &lt;nick|server&gt;: Retrieve client's or server's public key"
msgstr ""
"কী-গ্রহণ করুন &1lt;ডাকনাম সার্ভার&2gt;: গ্রাহক বা সার্ভারের সর্বসাধারণ কী পুনরুদ্ধার "
"করুন"
# tithi
-#: ../libpurple/protocols/silc/silc.c:2005
-#: ../libpurple/protocols/silc10/silc.c:1724
msgid "stats: View server and network statistics"
msgstr "পরিসংখ্যান: সার্ভার এবং নেটওয়ার্কের পরিসংখ্যান দেখুন"
-#: ../libpurple/protocols/silc/silc.c:2009
-#: ../libpurple/protocols/silc10/silc.c:1728
msgid "ping: Send PING to the connected server"
msgstr "পিঙ্গ: সংযুক্ত সার্ভারে একটি পিঙ্গ পাঠান"
# tithi
-#: ../libpurple/protocols/silc/silc.c:2014
-#: ../libpurple/protocols/silc10/silc.c:1733
msgid "users &lt;channel&gt;: List users in channel"
msgstr "ব্যবহারকারীগণ &1lt;চ্যানেল&2gt;: চ্যানেল ব্যবহারকারীর তালিকা করুন"
# tithi
-#: ../libpurple/protocols/silc/silc.c:2018
-#: ../libpurple/protocols/silc10/silc.c:1737
msgid ""
"names [-count|-ops|-halfops|-voices|-normal] &lt;channel(s)&gt;: List "
"specific users in channel(s)"
@@ -13747,152 +9790,102 @@ msgstr ""
#. *< name
#. *< version
#. * summary
-#: ../libpurple/protocols/silc/silc.c:2130
-#: ../libpurple/protocols/silc10/silc.c:1862
msgid "SILC Protocol Plugin"
msgstr "SILC প্রটোকল প্লাগইন"
# tithi
#. * description
-#: ../libpurple/protocols/silc/silc.c:2132
-#: ../libpurple/protocols/silc10/silc.c:1864
msgid "Secure Internet Live Conferencing (SILC) Protocol"
msgstr "ইন্টারনেটে সরাসরি মতবিনিময় করার নিরাপদ (SILC) প্রটোকল"
-#: ../libpurple/protocols/silc/silc.c:2173
-#: ../libpurple/protocols/silc10/silc.c:1896 ../pidgin/gtkprefs.c:2170
msgid "Network"
msgstr "নেটওয়ার্ক"
-#: ../libpurple/protocols/silc/silc.c:2184
-#: ../libpurple/protocols/silc10/silc.c:1907
msgid "Public Key file"
msgstr "সর্বসাধারণ কী ফাইল"
-#: ../libpurple/protocols/silc/silc.c:2188
-#: ../libpurple/protocols/silc10/silc.c:1911
msgid "Private Key file"
msgstr "ব্যক্তিগত কী ফাইল"
-#: ../libpurple/protocols/silc/silc.c:2198
-#: ../libpurple/protocols/silc10/silc.c:1921
msgid "Cipher"
msgstr "সাইফার"
-#: ../libpurple/protocols/silc/silc.c:2208
-#: ../libpurple/protocols/silc10/silc.c:1931
msgid "HMAC"
msgstr "HMAC"
# tithi
-#: ../libpurple/protocols/silc/silc.c:2211
msgid "Use Perfect Forward Secrecy"
msgstr "যথার্থ অগ্রগামী গোপনীয়তা ব্যবহার করুন"
# tithi
-#: ../libpurple/protocols/silc/silc.c:2215
-#: ../libpurple/protocols/silc10/silc.c:1934
msgid "Public key authentication"
msgstr "সর্বসাধারণ কী প্রমাণীকরণ"
# tithi
-#: ../libpurple/protocols/silc/silc.c:2218
-#: ../libpurple/protocols/silc10/silc.c:1937
msgid "Block IMs without Key Exchange"
msgstr "কী বিনিময় ব্যতিত IM গুলোকে ব্লক করুন"
# Fixme
# block = বন্ধ? - tithi
-#: ../libpurple/protocols/silc/silc.c:2221
-#: ../libpurple/protocols/silc10/silc.c:1940
msgid "Block messages to whiteboard"
msgstr "হোয়াটবোর্ডে বার্তাগুলো ব্লক করুন"
# tithi
-#: ../libpurple/protocols/silc/silc.c:2224
-#: ../libpurple/protocols/silc10/silc.c:1943
msgid "Automatically open whiteboard"
msgstr "স্বয়ংক্রিয়ভাবে হোয়াটবোর্ড খুলুন"
# tithi
-#: ../libpurple/protocols/silc/silc.c:2227
-#: ../libpurple/protocols/silc10/silc.c:1946
msgid "Digitally sign and verify all messages"
msgstr "সকল বার্তা ডিজিটাল স্বাক্ষর করুন এবং যাচাই করুন"
# tithi
-#: ../libpurple/protocols/silc/util.c:207
-#: ../libpurple/protocols/silc/util.c:250
-#: ../libpurple/protocols/silc10/util.c:207
-#: ../libpurple/protocols/silc10/util.c:247
msgid "Creating SILC key pair..."
msgstr "SILC কী যুগল তৈরি করছে..."
-#: ../libpurple/protocols/silc/util.c:216
-#: ../libpurple/protocols/silc/util.c:259
msgid "Cannot create SILC key pair\n"
msgstr "SILC কী যুগল তৈরী করতে পারে না\n"
#. Hint for translators: Please check the tabulator width here and in
#. the next strings (short strings: 2 tabs, longer strings 1 tab,
#. sum: 3 tabs or 24 characters)
-#: ../libpurple/protocols/silc/util.c:363
-#: ../libpurple/protocols/silc10/util.c:355
#, c-format
msgid "Real Name: \t%s\n"
msgstr "আসল নাম: \t%s\n"
-#: ../libpurple/protocols/silc/util.c:365
-#: ../libpurple/protocols/silc10/util.c:357
#, c-format
msgid "User Name: \t%s\n"
msgstr "ব্যবহারকারীর নাম: \t%s\n"
-#: ../libpurple/protocols/silc/util.c:367
-#: ../libpurple/protocols/silc10/util.c:359
#, c-format
msgid "Email: \t\t%s\n"
msgstr "ই-মেইল: \t\t%s\n"
-#: ../libpurple/protocols/silc/util.c:369
-#: ../libpurple/protocols/silc10/util.c:361
#, c-format
msgid "Host Name: \t%s\n"
msgstr "হোস্ট নাম: \t%s\n"
-#: ../libpurple/protocols/silc/util.c:371
-#: ../libpurple/protocols/silc10/util.c:363
#, c-format
msgid "Organization: \t%s\n"
msgstr "সংগঠন: \t%s\n"
-#: ../libpurple/protocols/silc/util.c:373
-#: ../libpurple/protocols/silc10/util.c:365
#, c-format
msgid "Country: \t%s\n"
msgstr "দেশ: \t%s\n"
-#: ../libpurple/protocols/silc/util.c:374
-#: ../libpurple/protocols/silc10/util.c:366
#, c-format
msgid "Algorithm: \t%s\n"
msgstr "এলগোরিদম: \t%s\n"
# tithi
-#: ../libpurple/protocols/silc/util.c:375
-#: ../libpurple/protocols/silc10/util.c:367
#, c-format
msgid "Key Length: \t%d bits\n"
msgstr "কী দৈর্ঘ্য: \t%d বিট\n"
-#: ../libpurple/protocols/silc/util.c:377
#, c-format
msgid "Version: \t%s\n"
msgstr "সংস্করণ: \t%s\n"
# tithi
-#: ../libpurple/protocols/silc/util.c:379
-#: ../libpurple/protocols/silc10/util.c:369
#, c-format
msgid ""
"Public Key Fingerprint:\n"
@@ -13904,8 +9897,6 @@ msgstr ""
"\n"
# tithi
-#: ../libpurple/protocols/silc/util.c:380
-#: ../libpurple/protocols/silc10/util.c:370
#, c-format
msgid ""
"Public Key Babbleprint:\n"
@@ -13914,46 +9905,30 @@ msgstr ""
"সর্বসাধারণ কী এর ব্যাবল-প্রিন্ট:\n"
"%s"
-#: ../libpurple/protocols/silc/util.c:382
-#: ../libpurple/protocols/silc/util.c:383
-#: ../libpurple/protocols/silc10/util.c:374
-#: ../libpurple/protocols/silc10/util.c:375
msgid "Public Key Information"
msgstr "সর্বসাধারণ কী এর তথ্য"
-#: ../libpurple/protocols/silc/util.c:565
-#: ../libpurple/protocols/silc10/util.c:559
msgid "Paging"
msgstr "পেজিং"
-#: ../libpurple/protocols/silc/util.c:571
-#: ../libpurple/protocols/silc10/util.c:565
msgid "Video Conferencing"
msgstr "ভিডিও আলোচনা সভা চলছে"
-#: ../libpurple/protocols/silc/util.c:589
-#: ../libpurple/protocols/silc10/util.c:584
msgid "Computer"
msgstr "কম্পিউটার"
-#: ../libpurple/protocols/silc/util.c:593
-#: ../libpurple/protocols/silc10/util.c:588
msgid "PDA"
msgstr "পিডিএ"
-#: ../libpurple/protocols/silc/util.c:595
-#: ../libpurple/protocols/silc10/util.c:590
msgid "Terminal"
msgstr "টার্মিনাল"
# tithi
-#: ../libpurple/protocols/silc/wb.c:288 ../libpurple/protocols/silc10/wb.c:287
#, c-format
msgid "%s sent message to whiteboard. Would you like to open the whiteboard?"
msgstr "%s হোয়াটবোর্ডে বার্তা পাঠিয়েছিল। আপনি কি হোয়াটবোর্ডটি খুলতে আগ্রহী?"
# tithi
-#: ../libpurple/protocols/silc/wb.c:292 ../libpurple/protocols/silc10/wb.c:291
#, c-format
msgid ""
"%s sent message to whiteboard on %s channel. Would you like to open the "
@@ -13961,110 +9936,94 @@ msgid ""
msgstr ""
"%2s চ্যানেলের হোয়াটবোর্ডে %1s বার্তা পাঠিয়েছিল। আপনি কি হোয়াটবোর্ডটি খুলতে আগ্রহী?"
-#: ../libpurple/protocols/silc/wb.c:306 ../libpurple/protocols/silc10/wb.c:305
msgid "Whiteboard"
msgstr "হোয়াইট-বোর্ড"
-#: ../libpurple/protocols/silc10/ops.c:1559
msgid "No server statistics available"
msgstr "কোনো সার্ভার পরিসংখ্যান সহজলভ্য নয়"
# tithi
-#: ../libpurple/protocols/silc10/ops.c:1937
+#, c-format
msgid "Failure: Version mismatch, upgrade your client"
msgstr "ব্যর্থতা: সংস্করণ অমিল, আপনার ক্লায়েন্ট উন্নততর করুন"
-#: ../libpurple/protocols/silc10/ops.c:1940
+#, c-format
msgid "Failure: Remote does not trust/support your public key"
msgstr "ব্যর্থতা: রিমোট আপনার সর্বাসাধারণ কী বিশ্বাস/সমর্থন করে না"
# tithi
-#: ../libpurple/protocols/silc10/ops.c:1943
+#, c-format
msgid "Failure: Remote does not support proposed KE group"
msgstr "ব্যর্থ: রিমোট প্রস্তাবিত কেই গ্রুপ সমর্থন করে না"
# tithi
-#: ../libpurple/protocols/silc10/ops.c:1946
+#, c-format
msgid "Failure: Remote does not support proposed cipher"
msgstr "ব্যর্থ: রিমোট প্রস্তাবিত ছাইফার সমর্থন করে না"
# tithi
-#: ../libpurple/protocols/silc10/ops.c:1949
+#, c-format
msgid "Failure: Remote does not support proposed PKCS"
msgstr "ব্যর্থ: রিমোট প্রস্তাবিত পিকেসিএস সমর্থন করে না"
# tithi
-#: ../libpurple/protocols/silc10/ops.c:1952
+#, c-format
msgid "Failure: Remote does not support proposed hash function"
msgstr "ব্যর্থ: রিমোট প্রস্তাবিত হ্যাস ফাংশন সমর্থন করে না"
# tithi
-#: ../libpurple/protocols/silc10/ops.c:1955
+#, c-format
msgid "Failure: Remote does not support proposed HMAC"
msgstr "ব্যর্থ: রিমোট প্রস্তাবিত এইচএমএসি সমর্থন করে না"
# tithi
-#: ../libpurple/protocols/silc10/ops.c:1957
+#, c-format
msgid "Failure: Incorrect signature"
msgstr "ব্যর্থতা: ভূল স্বাক্ষর"
# tithi
-#: ../libpurple/protocols/silc10/ops.c:1959
+#, c-format
msgid "Failure: Invalid cookie"
msgstr "ব্যর্থতা: অবৈধ কুকি"
# tithi
-#: ../libpurple/protocols/silc10/ops.c:1970
+#, c-format
msgid "Failure: Authentication failed"
msgstr "ব্যর্থতা: প্রমাণীকরণ ব্যর্থ হয়েছে"
# tithi
-#: ../libpurple/protocols/silc10/silc.c:186
msgid "Cannot initialize SILC Client connection"
msgstr "SILC ক্লায়েন্ট সংযোগ প্রাথমিকভাবে প্রস্তুত করতে পারে না"
# fix me tithi
-#: ../libpurple/protocols/silc10/silc.c:295
msgid "John Noname"
msgstr "জন নোনেম"
# tithi
-#: ../libpurple/protocols/silc10/silc.c:339
#, c-format
msgid "Could not load SILC key pair: %s"
msgstr "SILC কী যুগল লোড করতে পারেনি: %s"
-#: ../libpurple/protocols/simple/simple.c:435
msgid "Could not write"
msgstr "লিখতে পারেনি"
-#: ../libpurple/protocols/simple/simple.c:459
-#: ../libpurple/protocols/simple/simple.c:1748
msgid "Could not connect"
msgstr "সংযোগ দিতে পারেনি"
-#: ../libpurple/protocols/simple/simple.c:1145
msgid "Unknown server response."
msgstr "অজানা সার্ভার উত্তর।"
# tithi
-#: ../libpurple/protocols/simple/simple.c:1784
-#: ../libpurple/protocols/simple/simple.c:1830
-#: ../libpurple/protocols/simple/simple.c:1845
-#: ../libpurple/protocols/simple/simple.c:1900
msgid "Could not create listen socket"
msgstr "শ্রবণ সকেট তৈরি করতে পারেনি"
-#: ../libpurple/protocols/simple/simple.c:1910
msgid "Could not resolve hostname"
msgstr "হোস্ট-নাম স্থির করা হয়নি"
# tihi
-#: ../libpurple/protocols/simple/simple.c:1928
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr "SIP এর ব্যবহারকারী-নামগুলো ফাঁকা-জায়গা বা @ চিহ্ন ধারণ করতে পারে না"
-#: ../libpurple/protocols/simple/simple.c:1945
msgid "SIP connect server not specified"
msgstr "SIP সংযোগ সার্ভার সুনির্দিষ্ট নয়"
@@ -14077,172 +10036,151 @@ msgstr "SIP সংযোগ সার্ভার সুনির্দিষ্
#. *< id
#. *< name
#. *< version
-#: ../libpurple/protocols/simple/simple.c:2115
msgid "SIP/SIMPLE Protocol Plugin"
msgstr "SIP/সাধারণ প্রটোকল প্লাগইন"
# tithi
#. * summary
-#: ../libpurple/protocols/simple/simple.c:2116
msgid "The SIP/SIMPLE Protocol Plugin"
msgstr "SIP/সাধারণ প্রটোকল প্লাগইন"
# tithi
-#: ../libpurple/protocols/simple/simple.c:2144
msgid "Publish status (note: everyone may watch you)"
msgstr "প্রকাশ অবস্থা (নোট: আপনাকে সবাই পর্যবেক্ষণ করতে পারে)"
-#: ../libpurple/protocols/simple/simple.c:2150
msgid "Use UDP"
msgstr "UDP ব্যবহার করুন"
-#: ../libpurple/protocols/simple/simple.c:2152
msgid "Use proxy"
msgstr "প্রক্সি ব্যবহার করুন"
-#: ../libpurple/protocols/simple/simple.c:2154
msgid "Proxy"
msgstr "প্রক্সি"
-#: ../libpurple/protocols/simple/simple.c:2156
msgid "Auth User"
msgstr "স্বীকৃত ব্যবহারকারী"
-#: ../libpurple/protocols/simple/simple.c:2158
msgid "Auth Domain"
msgstr "স্বীকৃত ডোমেইন"
-#: ../libpurple/protocols/toc/toc.c:139
#, c-format
msgid "Looking up %s"
msgstr "%s খোঁজা হচ্ছে"
-#: ../libpurple/protocols/toc/toc.c:148
#, c-format
msgid "Connect to %s failed"
msgstr "%s-এর সাথে সংযোগ দিতে ব্যর্থ হয়েছে"
-#: ../libpurple/protocols/toc/toc.c:201
#, c-format
msgid "Signon: %s"
msgstr "সাইনঅন: %s"
-#: ../libpurple/protocols/toc/toc.c:488
#, c-format
msgid "Unable to write file %s."
msgstr "%s ফাইলে লিখতে ব্যর্থ হয়েছে।"
-#: ../libpurple/protocols/toc/toc.c:491
#, c-format
msgid "Unable to read file %s."
msgstr "%s ফাইলে পড়তে ব্যর্থ হয়েছে।"
# tithi
-#: ../libpurple/protocols/toc/toc.c:494
#, c-format
msgid "Message too long, last %s bytes truncated."
msgstr "বার্তাটি খুব দীর্ঘ, শেষ %s বাইট বাদ দেয়া হয়েছে।"
# tithi
-#: ../libpurple/protocols/toc/toc.c:497
#, c-format
msgid "%s not currently logged in."
msgstr "%s বর্তমানে লগইন নেই।"
# tithi
-#: ../libpurple/protocols/toc/toc.c:500
#, c-format
msgid "Warning of %s not allowed."
msgstr "%s এর সতর্কতা অনুমোদিত নয়।"
# tithi
-#: ../libpurple/protocols/toc/toc.c:503
+#, c-format
msgid "A message has been dropped, you are exceeding the server speed limit."
msgstr "একটি বার্তা বাদ দেয়া হয়েছে, আপনি সার্ভারের গতি সীমা অতিক্রম করছেন।"
-#: ../libpurple/protocols/toc/toc.c:506
#, c-format
msgid "Chat in %s is not available."
msgstr "%s-এ আড্ডা সহজলভ্য নয়।"
-#: ../libpurple/protocols/toc/toc.c:509
#, c-format
msgid "You are sending messages too fast to %s."
msgstr "আপনি %s এ খুব দ্রুত বার্তা পাঠাচ্ছেন।"
# tithi
-#: ../libpurple/protocols/toc/toc.c:512
#, c-format
msgid "You missed an IM from %s because it was too big."
msgstr "আপনি %s থেকে একটি তাৎক্ষণিক বার্তা পাননি কারণ এটি খুব বড় ছিল।"
# tithi
-#: ../libpurple/protocols/toc/toc.c:515
#, c-format
msgid "You missed an IM from %s because it was sent too fast."
msgstr "আপনি %s থেকে একটি তাৎক্ষণিক বার্তা পাননি কারণ এটি খুব দ্রুত পাঠানো হয়েছিল।"
-#: ../libpurple/protocols/toc/toc.c:518
+#, c-format
msgid "Failure."
msgstr "ব্যর্থতা।"
# tithi
-#: ../libpurple/protocols/toc/toc.c:521
+#, c-format
msgid "Too many matches."
msgstr "অনেক বেশি মিল।"
# tithi
-#: ../libpurple/protocols/toc/toc.c:524
+#, c-format
msgid "Need more qualifiers."
msgstr "আরও নিয়ন্ত্রণকারী প্রয়োজন।"
-#: ../libpurple/protocols/toc/toc.c:527
+#, c-format
msgid "Dir service temporarily unavailable."
msgstr "নির্দেশিকা সেবা সাময়িকভাবে অপ্রাপ্য"
# tithi
-#: ../libpurple/protocols/toc/toc.c:530
+#, c-format
msgid "Email lookup restricted."
msgstr "ই-মেইল অনুসন্ধান নিষিদ্ধ।"
# tithi
-#: ../libpurple/protocols/toc/toc.c:533
+#, c-format
msgid "Keyword ignored."
msgstr "মূল-শব্দ অগ্রাহ্য করা হয়েছে।"
-#: ../libpurple/protocols/toc/toc.c:536
+#, c-format
msgid "No keywords."
msgstr "কোনো মূল-শব্দ নেই।"
-#: ../libpurple/protocols/toc/toc.c:539
+#, c-format
msgid "User has no directory information."
msgstr "ব্যবহারকারীর কোনো নির্দেশিকা তথ্য নেই।"
-#: ../libpurple/protocols/toc/toc.c:543
+#, c-format
msgid "Country not supported."
msgstr "দেশটি সমর্থিত নয়।"
-#: ../libpurple/protocols/toc/toc.c:546
#, c-format
msgid "Failure unknown: %s."
msgstr "ব্যর্থতা অজানা: %s।"
-#: ../libpurple/protocols/toc/toc.c:549
+#, c-format
msgid "Incorrect username or password."
msgstr "ভুল ব্যবহারকারীর-নাম বা গুপ্তসংকেত।"
# tithi
-#: ../libpurple/protocols/toc/toc.c:552
+#, c-format
msgid "The service is temporarily unavailable."
msgstr "সেবাটি সাময়িকভাবে অপ্রাপ্য।"
# tithi
-#: ../libpurple/protocols/toc/toc.c:555
+#, c-format
msgid "Your warning level is currently too high to log in."
msgstr "আপনার সতর্কতা স্তর লগইন করার জন্য বর্তমানে খুব উচ্চ।"
# tithi
-#: ../libpurple/protocols/toc/toc.c:558
+#, c-format
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
"and try again. If you continue to try, you will need to wait even longer."
@@ -14251,86 +10189,68 @@ msgstr ""
"করুন। আপনি যদি চেষ্টা অব্যাহত রাখেন, আপনাকে দীর্ঘ সময় অপেক্ষা করতে হতে পারে।"
# tithi
-#: ../libpurple/protocols/toc/toc.c:560
#, c-format
msgid "An unknown signon error has occurred: %s."
msgstr "একটি অজানা সাইনঅন ত্রুটি সংঘটিত হয়েছে: %s।"
# tithi
-#: ../libpurple/protocols/toc/toc.c:563
#, c-format
msgid "An unknown error, %d, has occurred. Info: %s"
msgstr "একটি অজানা ত্রুটি, %d, সংঘটিত হয়েছে। তথ্য: %s"
# tithi
-#: ../libpurple/protocols/toc/toc.c:590
msgid "Invalid Groupname"
msgstr "অবৈধ গ্রুপনাম"
-#: ../libpurple/protocols/toc/toc.c:674
msgid "Connection Closed"
msgstr "সংযোগ বন্ধ করা হয়েছে "
-#: ../libpurple/protocols/toc/toc.c:714
msgid "Waiting for reply..."
msgstr "উত্তরের অপেক্ষায়..."
# tithi
-#: ../libpurple/protocols/toc/toc.c:792
msgid "TOC has come back from its pause. You may now send messages again."
msgstr "TOC পুনরায় সচল হয়েছে। আপনি এখন পুনরায় বার্তা পাঠাতে পারেন।"
-#: ../libpurple/protocols/toc/toc.c:995
msgid "Password Change Successful"
msgstr "গুপ্তসংকেত পরিবর্তন সফল হয়েছে"
-#: ../libpurple/protocols/toc/toc.c:1366 ../pidgin/gtkblist.c:6981
msgid "_Group:"
msgstr "গ্রুপ: (_G)"
-#: ../libpurple/protocols/toc/toc.c:1535
msgid "Get Dir Info"
msgstr "নির্দেশিকা তথ্য গ্রহণ করুন"
-#: ../libpurple/protocols/toc/toc.c:1675
msgid "Set Dir Info"
msgstr "নির্দেশিকা তথ্য নির্ধারণ করুন"
# tithi
-#: ../libpurple/protocols/toc/toc.c:1797
#, c-format
msgid "Could not open %s for writing!"
msgstr "লেখার জন্য %s খুলতে পারেনি!"
# tithi
-#: ../libpurple/protocols/toc/toc.c:1833
msgid "File transfer failed; other side probably canceled."
msgstr "ফাইল স্থানান্তর ব্যর্থ হয়েছে; অন্য দিক সম্ভবত বাতিল হয়েছে।"
# tithi
-#: ../libpurple/protocols/toc/toc.c:1878 ../libpurple/protocols/toc/toc.c:1918
-#: ../libpurple/protocols/toc/toc.c:2042 ../libpurple/protocols/toc/toc.c:2130
msgid "Could not connect for transfer."
msgstr "স্থানান্তরের জন্য সংযোগ করতে পারেনি।"
# tithi
-#: ../libpurple/protocols/toc/toc.c:2075
msgid "Could not write file header. The file will not be transferred."
msgstr "ফাইল শিরোনাম লিখতে পারেনি। ফাইল স্থানান্তর করা হবে না।"
-#: ../libpurple/protocols/toc/toc.c:2175
msgid "Save As..."
msgstr "এভাবে সংরক্ষণ করুন..."
# tithi
-#: ../libpurple/protocols/toc/toc.c:2209
#, c-format
msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
msgstr[0] " %1s %2s-কে %3d ফাইলটি গ্রহণ করতে অনুরোধ করে: %4s (%.2f %5s)%6s%7s"
msgstr[1] "%1s %2s-কে %3d ফাইলসমূহ গ্রহণ করতে অনুরোধ করে: %4s (%.2f %5s)%6s%7s"
-#: ../libpurple/protocols/toc/toc.c:2216
#, c-format
msgid "%s requests you to send them a file"
msgstr "%s আপনাকে একটি ফাইল পাঠাতে অনুরোধ করেছেন"
@@ -14345,28 +10265,23 @@ msgstr "%s আপনাকে একটি ফাইল পাঠাতে অ
#. *< version
#. * summary
#. * description
-#: ../libpurple/protocols/toc/toc.c:2306 ../libpurple/protocols/toc/toc.c:2308
msgid "TOC Protocol Plugin"
msgstr "TOC প্রটোকল প্লাগইন"
# tithi
-#: ../libpurple/protocols/yahoo/yahoo.c:751
#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
msgstr "%s আপনাকে ওয়েবক্যাম আমন্ত্রন পাঠিয়েছেন, যা এখনও সমর্থিত নয়।"
# tithi
-#: ../libpurple/protocols/yahoo/yahoo.c:810
msgid "Your Yahoo! message did not get sent."
msgstr "আপনার ইয়াহু! বার্তাটি পৌঁছায়নি।"
-#: ../libpurple/protocols/yahoo/yahoo.c:923
#, c-format
msgid "Yahoo! system message for %s:"
msgstr "%s-এর জন্য ইয়াহু! সিস্টেম বার্তা:"
# tithi
-#: ../libpurple/protocols/yahoo/yahoo.c:1015
#, c-format
msgid ""
"%s has (retroactively) denied your request to add them to your list for the "
@@ -14376,17 +10291,14 @@ msgstr ""
"অনুরোধ বাতিল করেছে: %s।"
# tithi
-#: ../libpurple/protocols/yahoo/yahoo.c:1018
#, c-format
msgid "%s has (retroactively) denied your request to add them to your list."
msgstr "%s (আইনগতভাবে) আপনার তালিকাতে তাদের যোগ করতে আপনার অনুরোধ বাতিল করেছে।"
-#: ../libpurple/protocols/yahoo/yahoo.c:1020
msgid "Add buddy rejected"
msgstr "বন্ধু যোগ প্রত্যাখ্যান করেছে"
# tithi
-#: ../libpurple/protocols/yahoo/yahoo.c:2007
#, c-format
msgid ""
"The Yahoo server has requested the use of an unrecognized authentication "
@@ -14397,11 +10309,9 @@ msgstr ""
"ইয়াহুতে সফলভাবে যুক্ত হতে পারবেন না। হালনাগাদসমূহের জন্য %s পরীক্ষা করুন।"
# tithi
-#: ../libpurple/protocols/yahoo/yahoo.c:2011
msgid "Failed Yahoo! Authentication"
msgstr "ইয়াহু! প্রমাণীকরণ ব্যর্থ হয়েছে"
-#: ../libpurple/protocols/yahoo/yahoo.c:2091
#, c-format
msgid ""
"You have tried to ignore %s, but the user is on your buddy list. Clicking "
@@ -14410,53 +10320,38 @@ msgstr ""
"আপনি %s কে অগ্রাহ্য করতে চাচ্ছেন, কিন্তু ব্যবহারকারী আপনার বন্ধু তালিকায় রয়েছেন। "
"\"হ্যাঁ\" ক্লিক করলে আপনার বন্ধু অপসারিত হবে এবং অগ্রাহ্য করা হবে।"
-#: ../libpurple/protocols/yahoo/yahoo.c:2094
msgid "Ignore buddy?"
msgstr "বন্ধু কি অগ্রাহ্য করবেন?"
# tithi
-#: ../libpurple/protocols/yahoo/yahoo.c:2170
msgid "Your account is locked, please log in to the Yahoo! website."
msgstr "আপনার একাউন্ট বন্ধ, অনুগ্রহ করে ইয়াহু! ওয়েবসাইটে লগইন করুন।"
# tithi
-#: ../libpurple/protocols/yahoo/yahoo.c:2174
#, c-format
msgid "Unknown error number %d. Logging into the Yahoo! website may fix this."
msgstr "অজানা ত্রুটি নাম্বার %d। ইয়াহু! ওয়েব সাইটে লগইন করলে হয়ত এটি ঠিক হতে পারে।"
# tithi
-#: ../libpurple/protocols/yahoo/yahoo.c:2227
#, c-format
msgid "Could not add buddy %s to group %s to the server list on account %s."
msgstr "%3s একাউন্টের সার্ভার তালিকায় %2s গ্রুপে %1s বন্ধুকে যোগ করতে পারেনি।"
# tithi
-#: ../libpurple/protocols/yahoo/yahoo.c:2230
msgid "Could not add buddy to server list"
msgstr "সার্ভার তালিকায় বন্ধু যোগ করতে পারেনি।"
# tithi
-#: ../libpurple/protocols/yahoo/yahoo.c:2352
#, c-format
msgid "[ Audible %s/%s/%s.swf ] %s"
msgstr "[ শ্রবণযোগ্য %1s/%2s/%3s.swf ] %4s"
-#: ../libpurple/protocols/yahoo/yahoo.c:2708
msgid "Received unexpected HTTP response from server."
msgstr "সার্ভার থেকে অপ্রত্যাশিত এইচটিটিপি সাড়া পেয়েছে।"
-#: ../libpurple/protocols/yahoo/yahoo.c:2738
-#: ../libpurple/protocols/yahoo/yahoo.c:2926
-#: ../libpurple/protocols/yahoo/yahoo.c:3032
-#: ../libpurple/protocols/yahoo/yahoo.c:3043
-#: ../libpurple/protocols/yahoo/yahoochat.c:1525
-#: ../libpurple/protocols/yahoo/yahoochat.c:1595
-#: ../libpurple/protocols/yahoo/ycht.c:586
msgid "Connection problem"
msgstr "সংযোগ সমস্যা"
-#: ../libpurple/protocols/yahoo/yahoo.c:2764
#, c-format
msgid ""
"Lost connection with %s:\n"
@@ -14465,7 +10360,6 @@ msgstr ""
"%1s এর সাথে সংযোগ হারিয়েছে:\n"
"%2s"
-#: ../libpurple/protocols/yahoo/yahoo.c:2789
#, c-format
msgid ""
"Could not establish a connection with %s:\n"
@@ -14474,112 +10368,80 @@ msgstr ""
"%1s এর সাথে সংযোগ স্থাপন করতে পারেনি:\n"
"%2s"
-#: ../libpurple/protocols/yahoo/yahoo.c:3159
-#: ../libpurple/protocols/yahoo/yahoo.c:3870
msgid "Not at Home"
msgstr "বাসায় নেই"
-#: ../libpurple/protocols/yahoo/yahoo.c:3161
-#: ../libpurple/protocols/yahoo/yahoo.c:3873
msgid "Not at Desk"
msgstr "ডেস্কে নেই"
-#: ../libpurple/protocols/yahoo/yahoo.c:3163
-#: ../libpurple/protocols/yahoo/yahoo.c:3876
msgid "Not in Office"
msgstr "অফিসে নেই"
-#: ../libpurple/protocols/yahoo/yahoo.c:3167
-#: ../libpurple/protocols/yahoo/yahoo.c:3882
msgid "On Vacation"
msgstr "ছুটিতে"
# fix me tithi
-#: ../libpurple/protocols/yahoo/yahoo.c:3171
-#: ../libpurple/protocols/yahoo/yahoo.c:3888
msgid "Stepped Out"
msgstr "চলে গেছে"
-#: ../libpurple/protocols/yahoo/yahoo.c:3264
-#: ../libpurple/protocols/yahoo/yahoo.c:3294
msgid "Not on server list"
msgstr "সার্ভার তালিকায় নেই"
# tithi
-#: ../libpurple/protocols/yahoo/yahoo.c:3311
-#: ../libpurple/protocols/yahoo/yahoo.c:3369
msgid "Appear Online"
msgstr "অনলাইনে আছেন"
# tithi
-#: ../libpurple/protocols/yahoo/yahoo.c:3314
-#: ../libpurple/protocols/yahoo/yahoo.c:3390
msgid "Appear Permanently Offline"
msgstr "স্থায়ীভাবে অফলাইনে আছেন"
-#: ../libpurple/protocols/yahoo/yahoo.c:3332
msgid "Presence"
msgstr "উপস্থিতি"
-#: ../libpurple/protocols/yahoo/yahoo.c:3375
msgid "Appear Offline"
msgstr "অফলাইনে উপস্থিত"
# tithi
-#: ../libpurple/protocols/yahoo/yahoo.c:3384
msgid "Don't Appear Permanently Offline"
msgstr "অফলাইনে স্থায়ীভাবে থাকছে না"
-#: ../libpurple/protocols/yahoo/yahoo.c:3432
msgid "Join in Chat"
msgstr "আড্ডায় যোগ দিন"
-#: ../libpurple/protocols/yahoo/yahoo.c:3438
msgid "Initiate Conference"
msgstr "আলোচনা সভা শুরু করুন"
-#: ../libpurple/protocols/yahoo/yahoo.c:3466
msgid "Presence Settings"
msgstr "উপস্থিতির বিন্যাসনসমূহ"
# tithi
-#: ../libpurple/protocols/yahoo/yahoo.c:3472
msgid "Start Doodling"
msgstr "হিজিবিজি কাজ শুরু করুন"
-#: ../libpurple/protocols/yahoo/yahoo.c:3580
msgid "Activate which ID?"
msgstr "কোন আইডি সক্রিয় করা হবে?"
-#: ../libpurple/protocols/yahoo/yahoo.c:3591
msgid "Join whom in chat?"
msgstr "কার সাথে আড্ডায় যোগ দিতে চান?"
-#: ../libpurple/protocols/yahoo/yahoo.c:3603
msgid "Activate ID..."
msgstr "আইডি সক্রিয় করুন..."
-#: ../libpurple/protocols/yahoo/yahoo.c:3607
msgid "Join User in Chat..."
msgstr "ব্যবহারকারীকে আড্ডায় যোগ করুন..."
-#: ../libpurple/protocols/yahoo/yahoo.c:3612
msgid "Open Inbox"
msgstr "ইনবক্স খুলুন"
-#: ../libpurple/protocols/yahoo/yahoo.c:4233
msgid "join &lt;room&gt;: Join a chat room on the Yahoo network"
msgstr "যোগ দিন &1lt;রুম&2gt;: ইয়াহু নেটওয়ার্কের একটি আড্ডার রুমে যোগ দিন"
-#: ../libpurple/protocols/yahoo/yahoo.c:4238
msgid "list: List rooms on the Yahoo network"
msgstr "তালিকা: ইয়াহু নেটওয়ার্কে রুমের তালিকা করুন"
-#: ../libpurple/protocols/yahoo/yahoo.c:4246
msgid "doodle: Request user to start a Doodle session"
msgstr "হিজিবিজি: ব্যবহারকারীকে একটি হিজিবিজি অধিবেশন শুরু করতে অনুরোধ করুন"
-#: ../libpurple/protocols/yahoo/yahoo.c:4355
msgid "Yahoo ID..."
msgstr "ইয়াহু আইডি..."
@@ -14593,90 +10455,66 @@ msgstr "ইয়াহু আইডি..."
#. *< version
#. * summary
#. * description
-#: ../libpurple/protocols/yahoo/yahoo.c:4464
-#: ../libpurple/protocols/yahoo/yahoo.c:4466
msgid "Yahoo Protocol Plugin"
msgstr "ইয়াহু প্রটোকল প্লাগইন"
-#: ../libpurple/protocols/yahoo/yahoo.c:4489
msgid "Yahoo Japan"
msgstr "ইয়াহু জাপান"
-#: ../libpurple/protocols/yahoo/yahoo.c:4492
msgid "Pager server"
msgstr "পেজার সার্ভার"
-#: ../libpurple/protocols/yahoo/yahoo.c:4495
msgid "Japan Pager server"
msgstr "জাপানী পেজার সার্ভার"
-#: ../libpurple/protocols/yahoo/yahoo.c:4498
msgid "Pager port"
msgstr "পেজার পোর্ট"
-#: ../libpurple/protocols/yahoo/yahoo.c:4501
msgid "File transfer server"
msgstr "ফাইল স্থানান্তর সার্ভার"
-#: ../libpurple/protocols/yahoo/yahoo.c:4504
msgid "Japan file transfer server"
msgstr "জাপান ফাইল স্থানান্তর সার্ভার"
-#: ../libpurple/protocols/yahoo/yahoo.c:4507
msgid "File transfer port"
msgstr "ফাইল স্থানান্তর পোর্ট"
-#: ../libpurple/protocols/yahoo/yahoo.c:4510
msgid "Chat room locale"
msgstr "আড্ডা রুমের অবস্থা"
# tithi
-#: ../libpurple/protocols/yahoo/yahoo.c:4513
msgid "Ignore conference and chatroom invitations"
msgstr "আলোচনা সভা এবং আড্ডার-রুমের আমন্ত্রন অগ্রাহ্য করুন"
-#: ../libpurple/protocols/yahoo/yahoo.c:4521
msgid "Chat room list URL"
msgstr "আড্ডার রুম তালিকার ইউআরএল"
-#: ../libpurple/protocols/yahoo/yahoo.c:4524
msgid "Yahoo Chat server"
msgstr "ইয়াহু আড্ডা সার্ভার"
-#: ../libpurple/protocols/yahoo/yahoo.c:4527
msgid "Yahoo Chat port"
msgstr "ইয়াহু আড্ডার পোর্ট"
#. Write a local message to this conversation showing that a request for a
#. * Doodle session has been made
#.
-#: ../libpurple/protocols/yahoo/yahoo_doodle.c:98
msgid "Sent Doodle request."
msgstr "হিজিবিজি অনুরোধ পাঠানো হয়েছে"
-#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:319
-#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:328
-#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:337
-#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:1111
-#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:1515
msgid "Unable to establish file descriptor."
msgstr "ফাইল বর্ণনাকারী স্থাপন করতে অক্ষম।"
-#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:1410
#, c-format
msgid "%s is trying to send you a group of %d files.\n"
msgstr "%s আপনাকে %d ফাইলের একটি গ্রুপ পাঠানোর চেষ্টা করছে।\n"
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:798
msgid "Yahoo! Japan Profile"
msgstr "ইয়াহু! জাপান প্রোফাইল"
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:799
msgid "Yahoo! Profile"
msgstr "ইয়াহু! প্রোফাইল"
# tithi
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:839
msgid ""
"Sorry, profiles marked as containing adult content are not supported at this "
"time."
@@ -14685,7 +10523,6 @@ msgstr ""
"এখন সমর্থিত নয়।"
# tithi
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:841
msgid ""
"If you wish to view this profile, you will need to visit this link in your "
"web browser:"
@@ -14693,49 +10530,36 @@ msgstr ""
"আপনি যদি এই বৃত্তান্তটি দেখতে চান, আপনাকে আপনার ওয়েব ব্রাউজারের এই লিংকটি "
"পরিদর্শন করতে হবে:"
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1033
msgid "Yahoo! ID"
msgstr "ইয়াহু! আইডি"
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1109
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1113
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1117
msgid "Hobbies"
msgstr "শখ"
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1127
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1131
msgid "Latest News"
msgstr "সাম্প্রতিক খবর"
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1152
msgid "Home Page"
msgstr "হোম পেজ"
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1167
msgid "Cool Link 1"
msgstr "কুল লিংক ১"
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1172
msgid "Cool Link 2"
msgstr "কুল লিংক ২"
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1176
msgid "Cool Link 3"
msgstr "কুল লিংক ৩"
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1190
msgid "Last Update"
msgstr "সর্বশেষ পরিবর্ধন"
# tithi
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1203
msgid ""
"This profile is in a language or format that is not supported at this time."
msgstr "এই বৃত্তান্তটি এমন একটি ভাষায় বা বিন্যাসে যা এখন সমর্থিত নয়।"
# tithi
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1218
msgid ""
"Could not retrieve the user's profile. This most likely is a temporary "
"server-side problem. Please try again later."
@@ -14743,7 +10567,6 @@ msgstr ""
"ব্যবহারকারীর বৃত্তান্ত উদ্ধার করতে পারনি। এটি সম্ভাবত একটি অস্থায়ী সার্ভার-পার্শ্বের "
"সমস্যা। অনুগ্রহ করে পরবর্তীতে আবার চেষ্টা করুন।"
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1221
msgid ""
"Could not retrieve the user's profile. This most likely means that the user "
"does not exist; however, Yahoo! sometimes does fail to find a user's "
@@ -14753,42 +10576,34 @@ msgstr ""
"নেই; যাই হোক, ইয়্যাহু! কখনোও ব্যবহারকারীর বৃত্তান্ত খুঁজে পেতে ব্যর্থ হয়। আপনি যদি "
"জানেন যে ব্যবহারকারী বিদ্যমান, অনুগ্রহ করে পরবর্তীতে আবার চেষ্টা করুন।"
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1227
msgid "The user's profile is empty."
msgstr "ব্যবহারকারীর প্রোফাইল ফাঁকা।"
# tithi
-#: ../libpurple/protocols/yahoo/yahoochat.c:222
#, c-format
msgid "%s declined your conference invitation to room \"%s\" because \"%s\"."
msgstr ""
"\"%3s\" এর কারণে %1s \"%2s\" রুমে আপনার আলোচনা সভার আমন্ত্রণ অস্বীকার করেছেন।"
-#: ../libpurple/protocols/yahoo/yahoochat.c:224
msgid "Invitation Rejected"
msgstr "আমন্ত্রন প্রত্যাখ্যান করা হয়েছে"
-#: ../libpurple/protocols/yahoo/yahoochat.c:443
msgid "Failed to join chat"
msgstr "আড্ডায় যোগ দিতে ব্যর্থ"
#. -6
-#: ../libpurple/protocols/yahoo/yahoochat.c:446
msgid "Unknown room"
msgstr "অজানা রুম"
#. -15
-#: ../libpurple/protocols/yahoo/yahoochat.c:449
msgid "Maybe the room is full"
msgstr "সম্ভবত রুমটি পূর্ণ"
#. -35
-#: ../libpurple/protocols/yahoo/yahoochat.c:452
msgid "Not available"
msgstr "বিদ্যমান নেই"
# tithi
-#: ../libpurple/protocols/yahoo/yahoochat.c:456
msgid ""
"Unknown error. You may need to logout and wait five minutes before being "
"able to rejoin a chatroom"
@@ -14796,47 +10611,35 @@ msgstr ""
"অজানা ত্রুটি। একটি আড্ডা-রুমে পুনরায় যোগদানের পূর্বে আপনাকে সম্ভবত লগ আউট করতে হবে "
"এবং পাঁচ মিনিট অপেক্ষা করতে হবে।"
-#: ../libpurple/protocols/yahoo/yahoochat.c:539
#, c-format
msgid "You are now chatting in %s."
msgstr "আপনি এখন %s-এ আড্ডা দিচ্ছেন।"
-#: ../libpurple/protocols/yahoo/yahoochat.c:728
msgid "Failed to join buddy in chat"
msgstr "বন্ধুকে আড্ডায় অংশগ্রহন করাতে ব্যর্থ হয়েছে"
-#: ../libpurple/protocols/yahoo/yahoochat.c:729
msgid "Maybe they're not in a chat?"
msgstr "সম্ভবত তারা আড্ডায় নেই?"
-#: ../libpurple/protocols/yahoo/yahoochat.c:1425
-#: ../libpurple/protocols/yahoo/yahoochat.c:1451
msgid "Fetching the room list failed."
msgstr "রুমের তালিকা খুঁজতে ব্যর্থ হয়েছে।"
-#: ../libpurple/protocols/yahoo/yahoochat.c:1511
msgid "Voices"
msgstr "কন্ঠস্বরসমূহ"
-#: ../libpurple/protocols/yahoo/yahoochat.c:1514
msgid "Webcams"
msgstr "ওয়েবক্যামসমূহ"
-#: ../libpurple/protocols/yahoo/yahoochat.c:1525
-#: ../libpurple/protocols/yahoo/yahoochat.c:1595
msgid "Unable to fetch room list."
msgstr "রুমের তালিকা খুঁজতে অক্ষম।"
-#: ../libpurple/protocols/yahoo/yahoochat.c:1588
msgid "User Rooms"
msgstr "ব্যবহারকারীর রুম"
# tithi
-#: ../libpurple/protocols/yahoo/ycht.c:457
msgid "Connection problem with the YCHT server."
msgstr "YCHT সার্ভারের সাথে সংযোগে সমস্যা।"
-#: ../libpurple/protocols/yahoo/ycht.c:476
#, c-format
msgid ""
"Lost connection with server\n"
@@ -14845,7 +10648,6 @@ msgstr ""
"সার্ভারের সাথে সংযোগ হারিয়েছে\n"
"%s"
-#: ../libpurple/protocols/zephyr/zephyr.c:357
msgid ""
"(There was an error converting this message.\t Check the 'Encoding' option "
"in the Account Editor)"
@@ -14853,87 +10655,68 @@ msgstr ""
"(এই বার্তাটি রুপান্তরে একটি ত্রুটি ছিল। একাউন্ট সম্পাদকে "
"'সঙ্কেতায়ন' পছন্দ পরীক্ষা করুন)"
-#: ../libpurple/protocols/zephyr/zephyr.c:755
#, c-format
msgid "Unable to send to chat %s,%s,%s"
msgstr "%1s,%2s,%3s আড্ডায় পাঠাতে সমর্থ নয়।"
-#: ../libpurple/protocols/zephyr/zephyr.c:794
-#: ../libpurple/protocols/zephyr/zephyr.c:1173
msgid "Hidden or not logged-in"
msgstr "লুকানো বা লগইন অবস্থায় নেই"
# tithi
-#: ../libpurple/protocols/zephyr/zephyr.c:800
-#: ../libpurple/protocols/zephyr/zephyr.c:1175
#, c-format
msgid "<br>At %s since %s"
msgstr "<br>%s হতে %s এ"
-#: ../libpurple/protocols/zephyr/zephyr.c:1513
-#: ../libpurple/protocols/zephyr/zephyr.c:1514
msgid "Anyone"
msgstr "যে কেউ"
-#: ../libpurple/protocols/zephyr/zephyr.c:2375
msgid "_Class:"
msgstr "শ্রেণী: (_C)"
# tithi
-#: ../libpurple/protocols/zephyr/zephyr.c:2381
msgid "_Instance:"
msgstr "ঘটনা: (_I)"
-#: ../libpurple/protocols/zephyr/zephyr.c:2387
msgid "_Recipient:"
msgstr "প্রাপক: (_R)"
# tithi
-#: ../libpurple/protocols/zephyr/zephyr.c:2398
#, c-format
msgid "Attempt to subscribe to %s,%s,%s failed"
msgstr "%1s,%2s,%3s এর গ্রাহক হবার চেষ্টা ব্যর্থ হয়েছে"
# tithi
-#: ../libpurple/protocols/zephyr/zephyr.c:2711
msgid "zlocate &lt;nick&gt;: Locate user"
msgstr "z-নির্দেশ করুন &1lt;ডাকনাম&2gt;: ব্যবহারকারী নির্দেশ করুন"
# tithi
-#: ../libpurple/protocols/zephyr/zephyr.c:2716
msgid "zl &lt;nick&gt;: Locate user"
msgstr "zl &lt;ডাকনাম&gt;: ব্যবহারকারী নির্দেশ করুন"
# tithi
-#: ../libpurple/protocols/zephyr/zephyr.c:2721
msgid "instance &lt;instance&gt;: Set the instance to be used on this class"
msgstr "দৃষ্টান্ত &1lt;দৃষ্টান্ত&2gt;: এই শ্রেনীতে ব্যবহারের জন্য দৃষ্টান্ত নির্ধারণ করুন"
# tithi
-#: ../libpurple/protocols/zephyr/zephyr.c:2726
msgid "inst &lt;instance&gt;: Set the instance to be used on this class"
msgstr "দৃষ্টান্ত &1lt;দৃষ্টান্ত&2gt;: এই শ্রেণীতে ব্যবহারের জন্য দৃষ্টান্ত নির্ধারণ করুন"
# tithi
-#: ../libpurple/protocols/zephyr/zephyr.c:2731
msgid "topic &lt;instance&gt;: Set the instance to be used on this class"
msgstr "বিষয়বস্তু &1lt;দৃষ্টান্ত&2gt;: এই শ্রেণীতে ব্যবহারের জন্য দৃষ্টান্ত নির্ধারণ করুন"
# tithi
-#: ../libpurple/protocols/zephyr/zephyr.c:2737
msgid "sub &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Join a new chat"
msgstr ""
"বিষয় &1lt;শ্রেণী&2gt; &3lt;দৃষ্টান্ত&4gt; &5lt;প্রাপক&6gt;: একটি নতুন আড্ডায় "
"অংশগ্রহন করুন"
# tithi
-#: ../libpurple/protocols/zephyr/zephyr.c:2742
msgid ""
"zi &lt;instance&gt;: Send a message to &lt;message,<i>instance</i>,*&gt;"
msgstr "zi &1lt;দৃষ্টান্ত&2gt;; একটি বার্তা পাঠান &3It;বার্তা,<i>দৃষ্টান্ত</i>,*&4gt;"
# fix-me tithi
-#: ../libpurple/protocols/zephyr/zephyr.c:2748
msgid ""
"zci &lt;class&gt; &lt;instance&gt;: Send a message to &lt;<i>class</i>,"
"<i>instance</i>,*&gt;"
@@ -14942,7 +10725,6 @@ msgstr ""
"<i>দৃষ্টান্ত</i>,*&6gt;"
# fix-me tithi
-#: ../libpurple/protocols/zephyr/zephyr.c:2754
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;"
@@ -14951,7 +10733,6 @@ msgstr ""
"<i>শ্রেণী</i>,<i>দৃষ্টান্ত</i>,<i>প্রাপক</i>&8gt;"
# fix-me tithi
-#: ../libpurple/protocols/zephyr/zephyr.c:2760
msgid ""
"zir &lt;instance&gt; &lt;recipient&gt;: Send a message to &lt;MESSAGE,"
"<i>instance</i>,<i>recipient</i>&gt;"
@@ -14960,16 +10741,13 @@ msgstr ""
"i>,<i>প্রাপক</i>&6gt;"
# fix-me tithi
-#: ../libpurple/protocols/zephyr/zephyr.c:2765
msgid "zc &lt;class&gt;: Send a message to &lt;<i>class</i>,PERSONAL,*&gt;"
msgstr "zc &1lt;শ্রেণী&2gt;: একটি বার্তা পাঠান &3lt;<i>শ্রেণী</i>,ব্যক্তিগত,*&4gt;"
-#: ../libpurple/protocols/zephyr/zephyr.c:2841
msgid "Resubscribe"
msgstr "পুনরায় গ্রাহক হোন"
# fix me tithi
-#: ../libpurple/protocols/zephyr/zephyr.c:2844
msgid "Retrieve subscriptions from server"
msgstr "সার্ভার থেকে শেয়ারসমূহ উদ্ধার করুন"
@@ -14984,49 +10762,37 @@ msgstr "সার্ভার থেকে শেয়ারসমূহ উদ্
#. *< version
#. * summary
#. * description
-#: ../libpurple/protocols/zephyr/zephyr.c:2937
-#: ../libpurple/protocols/zephyr/zephyr.c:2939
msgid "Zephyr Protocol Plugin"
msgstr "Zephyr প্রটোকল প্লাগইন"
-#: ../libpurple/protocols/zephyr/zephyr.c:2964
msgid "Use tzc"
msgstr "tzc ব্যবহার করুন"
-#: ../libpurple/protocols/zephyr/zephyr.c:2967
msgid "tzc command"
msgstr "tzc নির্দেশ"
# tithi
-#: ../libpurple/protocols/zephyr/zephyr.c:2970
msgid "Export to .anyone"
msgstr ".যেকারও কাছে রপ্তানি করুন"
-#: ../libpurple/protocols/zephyr/zephyr.c:2973
msgid "Export to .zephyr.subs"
msgstr ".zephyr.subs এ রপ্তানি করুন"
# tithi
-#: ../libpurple/protocols/zephyr/zephyr.c:2976
msgid "Import from .anyone"
msgstr ".যেকারও কাছ থেকে আমদানি করুন"
# fix me tithi
-#: ../libpurple/protocols/zephyr/zephyr.c:2979
msgid "Import from .zephyr.subs"
msgstr ".zephyr.subs থেকে আমদানি করুন"
-#: ../libpurple/protocols/zephyr/zephyr.c:2982
msgid "Realm"
msgstr "এলাকা"
# tithi
-#: ../libpurple/protocols/zephyr/zephyr.c:2985
msgid "Exposure"
msgstr "অনাবৃতকরণ"
-#: ../libpurple/proxy.c:680 ../libpurple/proxy.c:1121
-#: ../libpurple/proxy.c:1256 ../libpurple/proxy.c:1916
#, c-format
msgid ""
"Unable to create socket:\n"
@@ -15035,39 +10801,32 @@ msgstr ""
"সকেট তৈরী করতে ব্যর্থ:\n"
"%s"
-#: ../libpurple/proxy.c:875
#, c-format
msgid "Unable to parse response from HTTP proxy: %s\n"
msgstr "HTTP প্রক্সি থেকে সাড়া গ্রহণ করতে অক্ষম: %s\n"
-#: ../libpurple/proxy.c:908 ../libpurple/proxy.c:970 ../libpurple/proxy.c:999
#, c-format
msgid "HTTP proxy connection error %d"
msgstr "এইচটিটিপি প্রক্সি সংযোগের %d ত্রুটি"
# tithi
-#: ../libpurple/proxy.c:995
#, c-format
msgid "Access denied: HTTP proxy server forbids port %d tunneling."
msgstr "অনুমতি বাতিল: HTTP প্রক্সি সার্ভার %d পোর্ট টানেলকরণে বাধা দেয়।"
-#: ../libpurple/proxy.c:1217
#, c-format
msgid "Error resolving %s"
msgstr "%s স্থিরকরণে ত্রুটি"
-#: ../libpurple/proxy.c:2022
msgid "Could not resolve host name"
msgstr "হোস্টের নাম স্থির করা হয়নি"
# tithi
-#: ../libpurple/prpl.c:426
#, c-format
msgid "Requesting %s's attention..."
msgstr "%s এর মনোযোগ কামনা করছে..."
# tithi
-#: ../libpurple/prpl.c:471
#, c-format
msgid "%s has requested your attention!"
msgstr "%s আপনার মনযোগ কামনা করেছে!"
@@ -15075,38 +10834,31 @@ msgstr "%s আপনার মনযোগ কামনা করেছে!"
#. *
#. * A wrapper for purple_request_action() that uses @c Yes and @c No buttons.
#.
-#: ../libpurple/request.h:1391 ../pidgin/gtkblist.c:554
msgid "_Yes"
msgstr "হ্যাঁ (_Y)"
-#: ../libpurple/request.h:1391 ../pidgin/gtkblist.c:554
msgid "_No"
msgstr "না (_N)"
#. *
#. * A wrapper for purple_request_action() that uses Accept and Cancel buttons.
#.
-#: ../libpurple/request.h:1411
msgid "_Accept"
msgstr "গ্রহণ করুন (_A)"
#. *
#. * The default message to use when the user becomes auto-away.
#.
-#: ../libpurple/savedstatuses.c:48
msgid "I'm not here right now"
msgstr "এই মুহুর্তে আমি এখানে নেই"
-#: ../libpurple/savedstatuses.c:537
msgid "saved statuses"
msgstr "সংরক্ষিত অবস্থাসমূহ"
-#: ../libpurple/server.c:267
#, c-format
msgid "%s is now known as %s.\n"
msgstr "%1s এখন %2s নামে পরিচিত।\n"
-#: ../libpurple/server.c:834
#, c-format
msgid ""
"%s has invited %s to the chat room %s:\n"
@@ -15115,105 +10867,82 @@ msgstr ""
"%1s %2s কে %3s আড্ডার রুমে আমন্ত্রন জানিয়েছেন:\n"
"%4s"
-#: ../libpurple/server.c:839
#, c-format
msgid "%s has invited %s to the chat room %s\n"
msgstr "%1s %2s কে %3s আড্ডার রুমে আমন্ত্রন জানিয়েছেন\n"
-#: ../libpurple/server.c:843
msgid "Accept chat invitation?"
msgstr "আড্ডার আমন্ত্রন কি গ্রহণ করবেন?"
#. Shortcut
-#: ../libpurple/smiley.c:411 ../pidgin/gtksmiley.c:525
msgid "Shortcut"
msgstr "শর্টকাট"
-#: ../libpurple/smiley.c:412
msgid "The text-shortcut for the smiley"
msgstr "স্মাইলির জন্য পাঠ-শর্টকাট"
#. Stored Image
-#: ../libpurple/smiley.c:418
msgid "Stored Image"
msgstr "সংরক্ষিত ছবি"
# tithi
-#: ../libpurple/smiley.c:419
msgid "Stored Image. (that'll have to do for now)"
msgstr "সংরক্ষিত ছবি। (ঐটি এই সময়ের জন্য করতে হবে)"
-#: ../libpurple/sslconn.c:167
msgid "SSL Connection Failed"
msgstr "SSL সংযোগ ব্যর্থ হয়েছে"
-#: ../libpurple/sslconn.c:169
msgid "SSL Handshake Failed"
msgstr "SSL হ্যান্ডশেক ব্যর্থ হয়েছে"
# tithi
-#: ../libpurple/sslconn.c:171
msgid "SSL peer presented an invalid certificate"
msgstr "SSL যুগল একটি অবৈধ প্রত্যয়নপত্র উপস্থাপন করেছিল"
-#: ../libpurple/sslconn.c:174
msgid "Unknown SSL error"
msgstr "অজানা SSL ত্রুটি"
-#: ../libpurple/status.c:158
msgid "Unset"
msgstr "অনির্ধারণ করুন"
-#: ../libpurple/status.c:161 ../pidgin/gtkdocklet.c:553
-#: ../pidgin/gtkstatusbox.c:1097
msgid "Do not disturb"
msgstr "বিরক্ত করবেন না"
# fix me tithi
-#: ../libpurple/status.c:164
msgid "Extended away"
msgstr "অনেক বর্ধিত"
-#: ../libpurple/status.c:165
msgid "Mobile"
msgstr "মোবাইল"
# tithi
-#: ../libpurple/status.c:166
msgid "Listening to music"
msgstr "গান শুনছে"
-#: ../libpurple/status.c:615
#, c-format
msgid "%s (%s) changed status from %s to %s"
msgstr "%1s (%2s) অবস্থা %4s থেকে %3s তে পরিবর্তন করেছে"
-#: ../libpurple/status.c:626
#, c-format
msgid "%s (%s) is now %s"
msgstr "%1s (%2s) এখন %3s"
-#: ../libpurple/status.c:632
#, c-format
msgid "%s (%s) is no longer %s"
msgstr "%1s (%2s) আর %3s থাকবে না"
-#: ../libpurple/status.c:1247
#, c-format
msgid "%s became idle"
msgstr "%s এখন অলস"
-#: ../libpurple/status.c:1267
#, c-format
msgid "%s became unidle"
msgstr "%s এখন অলস নয়"
-#: ../libpurple/status.c:1333
#, c-format
msgid "+++ %s became idle"
msgstr "+++ %s অলস হয়েছে"
-#: ../libpurple/status.c:1335
#, c-format
msgid "+++ %s became unidle"
msgstr "+++ %s অলস হয়নি"
@@ -15224,18 +10953,15 @@ msgstr "+++ %s অলস হয়নি"
#. * change this to "%X %x" if they want the time to be shown first,
#. * followed by the date.
#.
-#: ../libpurple/util.c:730
#, c-format
msgid "%x %X"
msgstr "%x %X"
-#: ../libpurple/util.c:2829
#, c-format
msgid "Error Reading %s"
msgstr "%s পড়ায় ত্রুটি"
# tithi
-#: ../libpurple/util.c:2830
#, c-format
msgid ""
"An error was encountered reading your %s. They have not been loaded, and "
@@ -15244,50 +10970,42 @@ msgstr ""
"আপনার %s পড়ার সময় একটি ত্রুটির বাধা দেয়েছিল। তাদেরকে লোড করা হয়নি, এবং পুরনো "
"ফাইলটি %s~ এ নামান্তর করা হয়েছে।"
-#: ../libpurple/util.c:3338
msgid "Calculating..."
msgstr "গননা করা হচ্ছে..."
-#: ../libpurple/util.c:3341
msgid "Unknown."
msgstr "অজানা।"
-#: ../libpurple/util.c:3367
#, c-format
msgid "%d second"
msgid_plural "%d seconds"
msgstr[0] "%d সেকেন্ড"
msgstr[1] "%d সেকেন্ড"
-#: ../libpurple/util.c:3379
#, c-format
msgid "%d day"
msgid_plural "%d days"
msgstr[0] "%d দিন"
msgstr[1] "%d গুলো দিন"
-#: ../libpurple/util.c:3387
#, c-format
msgid "%s, %d hour"
msgid_plural "%s, %d hours"
msgstr[0] "%s, %d ঘন্টা"
msgstr[1] "%s, %d গুলো ঘন্টা"
-#: ../libpurple/util.c:3393
#, c-format
msgid "%d hour"
msgid_plural "%d hours"
msgstr[0] "%d ঘন্টা"
msgstr[1] "%d গুলো ঘন্টা"
-#: ../libpurple/util.c:3401
#, c-format
msgid "%s, %d minute"
msgid_plural "%s, %d minutes"
msgstr[0] "%s, %d মিনিট"
msgstr[1] "%s, %d গুলো মিনিট"
-#: ../libpurple/util.c:3407
#, c-format
msgid "%d minute"
msgid_plural "%d minutes"
@@ -15295,23 +11013,19 @@ msgstr[0] "%d মিনিট"
msgstr[1] "%d গুলো মিনিট"
# tithi
-#: ../libpurple/util.c:3678
#, c-format
msgid "Could not open %s: Redirected too many times"
msgstr "%s খুলতে পারেনি: অনেকবার পুনঃনির্দেশ করা হয়েছে"
-#: ../libpurple/util.c:3728 ../libpurple/util.c:4105
#, c-format
msgid "Unable to connect to %s"
msgstr "%s এ সংযোগ দিতে ব্যর্থ হয়েছে"
-#: ../libpurple/util.c:3796
#, c-format
msgid "Error reading from %s: response too long (%d bytes limit)"
msgstr "%s থেকে পড়ায় ত্রুটি: প্রতিউত্তর অনেক দীর্ঘ্য (%d বাইটের সীমা)"
# fix-me tithi
-#: ../libpurple/util.c:3864
#, c-format
msgid ""
"Unable to allocate enough memory to hold the contents from %s. The web "
@@ -15320,147 +11034,121 @@ msgstr ""
"%s এর উপাদানসমূহ ধারণ করার মতো যথেষ্ট মেমোরি বরাদ্দ করতে অক্ষম। ওয়েব সার্ভার "
"বিদ্বেষপরায়ণ কিছু করার চেষ্টা করতে পারে।"
-#: ../libpurple/util.c:3899
#, c-format
msgid "Error reading from %s: %s"
msgstr "%1s থেকে পড়ায় ত্রুটি: %2s"
-#: ../libpurple/util.c:3983
#, c-format
msgid "Error writing to %s: %s"
msgstr "%1s এ লেখায় ত্রুটি: %2s"
-#: ../libpurple/util.c:4014 ../libpurple/util.c:4044
#, c-format
msgid "Unable to connect to %s: %s"
msgstr "%1s এর সাথে সংযোগে ব্যর্থ: %2s"
# tithi
-#: ../libpurple/util.c:4860
#, c-format
msgid " - %s"
msgstr " - %s"
-#: ../libpurple/util.c:4866
#, c-format
msgid " (%s)"
msgstr " (%s)"
# tithi
#. 10053
-#: ../libpurple/win32/libc_interface.c:319
+#, c-format
msgid "Connection interrupted by other software on your computer."
msgstr "আপনার কম্পিউটারের অন্য সফটওয়্য়ার দ্বারা সংয়োগ বাধাগ্রস্থ হয়েছে। "
#. 10054
-#: ../libpurple/win32/libc_interface.c:322
+#, c-format
msgid "Remote host closed connection."
msgstr "দূরবর্তী হোস্ট সংযোগ বন্ধ করেছে।"
# fix me tithi
#. 10060
-#: ../libpurple/win32/libc_interface.c:325
+#, c-format
msgid "Connection timed out."
msgstr "সংযোগ সময় উত্তীর্ণ হয়েছে।"
#. 10061
-#: ../libpurple/win32/libc_interface.c:328
+#, c-format
msgid "Connection refused."
msgstr "সংযোগে প্রত্যাখান করা হয়েছে"
#. 10048
-#: ../libpurple/win32/libc_interface.c:331
+#, c-format
msgid "Address already in use."
msgstr "ঠিকানাটি ইতোমধ্যে ব্যবহৃত হচ্ছে।"
-#: ../pidgin.desktop.in.h:1
msgid "Internet Messenger"
msgstr "ইন্টারনেট বার্তাবাহক"
-#: ../pidgin.desktop.in.h:2
msgid "Pidgin Internet Messenger"
msgstr "পিজিন ইন্টারনেট বার্তাবাহক"
# tithi
-#: ../pidgin.desktop.in.h:3
msgid "Send instant messages over multiple protocols"
msgstr "বহুবিধ প্রটোকল দিয়ে তাৎক্ষনিক বার্তাসমূহ প্রেরণ করুন"
-#: ../pidgin/eggtrayicon.c:128
msgid "Orientation"
msgstr "পরিচিতি পর্ব"
-#: ../pidgin/eggtrayicon.c:129
msgid "The orientation of the tray."
msgstr "ট্রে প্রদর্শনের ধরন"
#. Build the login options frame.
-#: ../pidgin/gtkaccount.c:419
msgid "Login Options"
msgstr "লগইনের পছন্দসমূহ"
-#: ../pidgin/gtkaccount.c:440
msgid "Pro_tocol:"
msgstr "প্রটোকল (_t):"
-#: ../pidgin/gtkaccount.c:451 ../pidgin/gtkaccount.c:1090
msgid "_Username:"
msgstr "ব্যবহারকারীরনাম (_U):"
-#: ../pidgin/gtkaccount.c:558
msgid "Remember pass_word"
msgstr "গুপ্তসংকেত স্মরণ রাখুন (_w)"
#. Build the user options frame.
-#: ../pidgin/gtkaccount.c:613
msgid "User Options"
msgstr "ব্যবহারকারীর পছন্দসমূহ"
-#: ../pidgin/gtkaccount.c:626
msgid "_Local alias:"
msgstr "স্থানীয় ডাকনাম (_L):"
-#: ../pidgin/gtkaccount.c:630
msgid "New _mail notifications"
msgstr "নতুন মেইলের প্রজ্ঞাপন (_m)"
# tithi
#. Buddy icon
-#: ../pidgin/gtkaccount.c:635
msgid "Use this buddy _icon for this account:"
msgstr "এই একাউন্টের জন্য এই বন্ধু আইকন ব্যবহার করুন (_i):"
#. Build the protocol options frame.
-#: ../pidgin/gtkaccount.c:763
#, c-format
msgid "%s Options"
msgstr "%s পছন্দসমূহ"
-#: ../pidgin/gtkaccount.c:961
msgid "Use GNOME Proxy Settings"
msgstr "GNOME প্রক্সি বিন্যাসনসমূহ ব্যবহার করুন"
-#: ../pidgin/gtkaccount.c:962
msgid "Use Global Proxy Settings"
msgstr "সর্বজনীন প্রক্সি বিন্যাসনসমূহ ব্যবহার করুন"
-#: ../pidgin/gtkaccount.c:968
msgid "No Proxy"
msgstr "প্রক্সি নেই"
-#: ../pidgin/gtkaccount.c:974
msgid "HTTP"
msgstr "HTTP"
-#: ../pidgin/gtkaccount.c:980
msgid "SOCKS 4"
msgstr "SOCKS ৪"
-#: ../pidgin/gtkaccount.c:986
msgid "SOCKS 5"
msgstr "SOCKS ৫"
-#: ../pidgin/gtkaccount.c:992 ../pidgin/gtkprefs.c:1337
msgid "Use Environmental Settings"
msgstr "পারিপার্শ্বিক বিন্যাসনসমূহ ব্যবহার করুন"
@@ -15469,72 +11157,55 @@ msgstr "পারিপার্শ্বিক বিন্যাসনসম
#. A) your network is really slow and you have nothing better to do than
#. look at butterflies.
#. B)You are looking really closely at something that shouldn't matter.
-#: ../pidgin/gtkaccount.c:1031
msgid "If you look real closely"
msgstr "আপনি যদি খুব ভালভাবে দেখেন"
#. This is an easter egg. See the comment on the previous line in the source.
-#: ../pidgin/gtkaccount.c:1034
msgid "you can see the butterflies mating"
msgstr "আপনি প্রজাপতিদের সঙ্গী দেখতে পাবেন"
-#: ../pidgin/gtkaccount.c:1055
msgid "Proxy Options"
msgstr "প্রক্সির পছন্দসমূহ"
-#: ../pidgin/gtkaccount.c:1069 ../pidgin/gtkprefs.c:1331
msgid "Proxy _type:"
msgstr "প্রক্সির ধরন (_t):"
-#: ../pidgin/gtkaccount.c:1078 ../pidgin/gtkprefs.c:1352
msgid "_Host:"
msgstr "হোস্ট (_H):"
-#: ../pidgin/gtkaccount.c:1082 ../pidgin/gtkprefs.c:1370
msgid "_Port:"
msgstr "পোর্ট (_P):"
-#: ../pidgin/gtkaccount.c:1097 ../pidgin/gtkprefs.c:1407
msgid "Pa_ssword:"
msgstr "গুপ্তসংকেত (_s):"
-#: ../pidgin/gtkaccount.c:1221
msgid "Unable to save new account"
msgstr "নতুন একাউন্ট সংরক্ষণে অক্ষম"
# tithi
-#: ../pidgin/gtkaccount.c:1222
msgid "An account already exists with the specified criteria."
msgstr "উল্লেখিত বৈশিষ্ট্যের একটি একাউন্ট ইতিমধ্যে বিদ্যমান।"
-#: ../pidgin/gtkaccount.c:1498
msgid "Add Account"
msgstr "একাউন্ট যোগ করুন"
-#: ../pidgin/gtkaccount.c:1515
msgid "_Basic"
msgstr "মৌলিক (_B)"
# tithi
-#: ../pidgin/gtkaccount.c:1523
msgid "Create _this new account on the server"
msgstr "সার্ভারে এই নতুন একাউন্টটি তৈরী করুন (_t)"
-#: ../pidgin/gtkaccount.c:1537
msgid "_Advanced"
msgstr "অগ্রগামী (_A)"
-#: ../pidgin/gtkaccount.c:1930 ../pidgin/gtkplugin.c:757
-#: ../pidgin/plugins/convcolors.c:327
msgid "Enabled"
msgstr "সক্রিয়"
-#: ../pidgin/gtkaccount.c:1958
msgid "Protocol"
msgstr "প্রটোকল"
# tithi
-#: ../pidgin/gtkaccount.c:2154
#, c-format
msgid ""
"<span size='larger' weight='bold'>Welcome to %s!</span>\n"
@@ -15559,7 +11230,6 @@ msgstr ""
"মুছে ফেলতে পারেন"
# tithi
-#: ../pidgin/gtkblist.c:551
#, c-format
msgid "You have %d contact named %s. Would you like to merge them?"
msgid_plural ""
@@ -15568,7 +11238,6 @@ msgstr[0] "আপনার %1d-টি %2s নামের যোগাযোগ
msgstr[1] ""
"আপনার বর্তমানে %1dগুলো %2s নামের যোগাযোগ আছে। আপনি কি তাদের একত্রিত করতে চান?"
-#: ../pidgin/gtkblist.c:552
msgid ""
"Merging these contacts will cause them to share a single entry on the buddy "
"list and use a single conversation window. You can separate them again by "
@@ -15579,132 +11248,95 @@ msgstr ""
"'প্রসারন' পছন্দ করার মাধ্যমে তাদেরকে পুনরায় আলাদা করতে পারেন"
# tithi
-#: ../pidgin/gtkblist.c:685
msgid "Please update the necessary fields."
msgstr "অনুগ্রহ করে প্রয়োজনীয় ক্ষেত্রগুলো হালনাগাদ করুন।"
-#: ../pidgin/gtkblist.c:1040 ../pidgin/gtkblist.c:6928
msgid "Room _List"
msgstr "রুমের তালিকা (_L)"
-#: ../pidgin/gtkblist.c:1060
msgid ""
"Please enter the appropriate information about the chat you would like to "
"join.\n"
msgstr ""
"অনুগ্রহ করে আপনি যে আড্ডায় যোগ দিতে চান তার সম্পর্কে যথাযথ তথ্য প্রবেশ করান।\n"
-#: ../pidgin/gtkblist.c:1072 ../pidgin/gtkblist.c:6963
-#: ../pidgin/gtkpounce.c:560 ../pidgin/gtkroomlist.c:540
msgid "_Account:"
msgstr "একাউন্ট (_A):"
-#: ../pidgin/gtkblist.c:1351 ../pidgin/gtkprivacy.c:549
-#: ../pidgin/gtkprivacy.c:563
msgid "_Block"
msgstr "ব্লক করুন (_B)"
-#: ../pidgin/gtkblist.c:1351
msgid "Un_block"
msgstr "ব্লক সরান (_b)"
# tithi
-#: ../pidgin/gtkblist.c:1394
msgid "Move to"
msgstr "সরান"
-#: ../pidgin/gtkblist.c:1434
msgid "Get _Info"
msgstr "তথ্য সংগ্রহ করুন (_I)"
-#: ../pidgin/gtkblist.c:1437 ../pidgin/pidginstock.c:91
msgid "I_M"
msgstr "আইএম (_M)"
-#: ../pidgin/gtkblist.c:1443
msgid "_Send File..."
msgstr "ফাইল পাঠান... (_S)"
-#: ../pidgin/gtkblist.c:1450
msgid "Add Buddy _Pounce..."
msgstr "বন্ধু পাউন্স যোগ করুন... (_P)"
-#: ../pidgin/gtkblist.c:1455 ../pidgin/gtkblist.c:1459
-#: ../pidgin/gtkblist.c:1622 ../pidgin/gtkblist.c:1649
msgid "View _Log"
msgstr "লগ প্রদর্শন করুন (_L)"
-#: ../pidgin/gtkblist.c:1465 ../pidgin/gtkblist.c:1594
msgid "Hide when offline"
msgstr "অফলাইনে থাকলে লুকিয়ে রাখুন"
-#: ../pidgin/gtkblist.c:1479 ../pidgin/gtkblist.c:1488
-#: ../pidgin/gtkblist.c:1632 ../pidgin/gtkblist.c:1655
msgid "_Alias..."
msgstr "উপনাম... (_A)"
-#: ../pidgin/gtkblist.c:1482 ../pidgin/gtkblist.c:1490
-#: ../pidgin/gtkblist.c:1634 ../pidgin/gtkblist.c:1657
msgid "_Remove"
msgstr "অপসারণ করুন (_R)"
-#: ../pidgin/gtkblist.c:1564
msgid "Set Custom Icon"
msgstr "পছন্দসই আইকন নির্ধারণ করুন"
-#: ../pidgin/gtkblist.c:1568 ../pidgin/gtkconv.c:2952
msgid "Remove Custom Icon"
msgstr "পছন্দসই আইকন অপসারণ করুন"
-#: ../pidgin/gtkblist.c:1582
msgid "Add _Buddy..."
msgstr "বন্ধু যোগ করুন... (_B)"
-#: ../pidgin/gtkblist.c:1585
msgid "Add C_hat..."
msgstr "আড্ডা যোগ করুন...(_h)"
-#: ../pidgin/gtkblist.c:1588
msgid "_Delete Group"
msgstr "গ্রুপ মুছে ফেলুন (_D)"
-#: ../pidgin/gtkblist.c:1590
msgid "_Rename"
msgstr "পুনরায় নামকরণ করুন (_R)"
#. join button
-#: ../pidgin/gtkblist.c:1616 ../pidgin/gtkroomlist.c:313
-#: ../pidgin/gtkroomlist.c:587 ../pidgin/pidginstock.c:89
msgid "_Join"
msgstr "যোগ দিন (_J)"
-#: ../pidgin/gtkblist.c:1618
msgid "Auto-Join"
msgstr "স্বয়ং-যোগ দিন"
-#: ../pidgin/gtkblist.c:1620
msgid "Persistent"
msgstr "পুনঃপুন ঘটনশীল"
-#: ../pidgin/gtkblist.c:1630
msgid "_Edit Settings..."
msgstr "বিন্যাসনসমূহ সম্পাদনা করুন... (_E)"
-#: ../pidgin/gtkblist.c:1664 ../pidgin/gtkblist.c:1689
msgid "_Collapse"
msgstr "গুটিয়ে ফেলুন (_C)"
-#: ../pidgin/gtkblist.c:1694
msgid "_Expand"
msgstr "বর্ধিত করুন (_E)"
-#: ../pidgin/gtkblist.c:1947 ../pidgin/gtkblist.c:1959
-#: ../pidgin/gtkblist.c:5614 ../pidgin/gtkblist.c:5627
msgid "/Tools/Mute Sounds"
msgstr "/টুলসমূহ/সাউন্ড বন্ধ রাখুন"
-#: ../pidgin/gtkblist.c:2419 ../pidgin/gtkconv.c:4996
-#: ../pidgin/gtkpounce.c:451
msgid ""
"You are not currently signed on with an account that can add that buddy."
msgstr "আপনি বর্তমানে এমন কোনো একাউন্টে যুক্ত নন যা এই বন্ধুকে যোগ করতে পারে।"
@@ -15713,152 +11345,116 @@ 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.
-#: ../pidgin/gtkblist.c:2805
msgid "Unknown node type"
msgstr "অজানা নোডের ধরন"
#. Buddies menu
-#: ../pidgin/gtkblist.c:3260
msgid "/_Buddies"
msgstr "/বন্ধুগণ (_B)"
-#: ../pidgin/gtkblist.c:3261
msgid "/Buddies/New Instant _Message..."
msgstr "/বন্ধুগণ/নতুন তাৎক্ষণিক বার্তা... (_M)"
-#: ../pidgin/gtkblist.c:3262
msgid "/Buddies/Join a _Chat..."
msgstr "/বন্ধুগণ/আড্ডায় যোগদান করুন... (_C)"
-#: ../pidgin/gtkblist.c:3263
msgid "/Buddies/Get User _Info..."
msgstr "/বন্ধুগণ/ব্যবহারকারীর তথ্য সংগ্রহ করুন... (_I)"
-#: ../pidgin/gtkblist.c:3264
msgid "/Buddies/View User _Log..."
msgstr "/বন্ধুগণ/ব্যবহারকারী লগ প্রদর্শন করুন... (_L)"
-#: ../pidgin/gtkblist.c:3266
msgid "/Buddies/Sh_ow"
msgstr "/বন্ধুগণ/দেখান (_o)"
-#: ../pidgin/gtkblist.c:3267
msgid "/Buddies/Show/_Offline Buddies"
msgstr "/বন্ধুগণ/দেখান/অফলাইন বন্ধুগণ (_O)"
-#: ../pidgin/gtkblist.c:3268
msgid "/Buddies/Show/_Empty Groups"
msgstr "/বন্ধুগণ/দেখান/ফাঁকা গ্রুপসমূহ (_E)"
-#: ../pidgin/gtkblist.c:3269
msgid "/Buddies/Show/Buddy _Details"
msgstr "/বন্ধুগণ/দেখান/বন্ধুর বিবরণ (_D)"
-#: ../pidgin/gtkblist.c:3270
msgid "/Buddies/Show/Idle _Times"
msgstr "/বন্ধুগণ/দেখান/অলস সময় (_T)"
-#: ../pidgin/gtkblist.c:3271
msgid "/Buddies/Show/_Protocol Icons"
msgstr "/বন্ধুগণ/দেখান/প্রটোকল আইকনগুলো (_P)"
-#: ../pidgin/gtkblist.c:3272
msgid "/Buddies/_Sort Buddies"
msgstr "/বন্ধুগণ/বন্ধুদের ক্রমানুসারে সাজান (_S)"
-#: ../pidgin/gtkblist.c:3274
msgid "/Buddies/_Add Buddy..."
msgstr "/বন্ধুগণ/বন্ধু যোগ করুন... (_A)"
-#: ../pidgin/gtkblist.c:3275
msgid "/Buddies/Add C_hat..."
msgstr "/বন্ধুগণ/আড্ডা যোগ করুন... (_h)"
-#: ../pidgin/gtkblist.c:3276
msgid "/Buddies/Add _Group..."
msgstr "/বন্ধুগণ/গ্রুপ যোগ করুন... (_G)"
-#: ../pidgin/gtkblist.c:3278
msgid "/Buddies/_Quit"
msgstr "/বন্ধুগণ/প্রস্থান করুন (_Q)"
#. Accounts menu
-#: ../pidgin/gtkblist.c:3281
msgid "/_Accounts"
msgstr "/একাউন্টসমূহ (_A)"
-#: ../pidgin/gtkblist.c:3282 ../pidgin/gtkblist.c:7659
msgid "/Accounts/Manage Accounts"
msgstr "/একাউন্টসমূহ/একাউন্টসমূহ নিয়ন্ত্রণ করুন"
#. Tools
-#: ../pidgin/gtkblist.c:3285
msgid "/_Tools"
msgstr "/টুলসমূহ (_T)"
-#: ../pidgin/gtkblist.c:3286
msgid "/Tools/Buddy _Pounces"
msgstr "/টুলসমূহ/বন্ধু পাউন্সসমূহ (_P)"
-#: ../pidgin/gtkblist.c:3287
msgid "/Tools/_Certificates"
msgstr "/টুলসমূহ/প্রত্যয়নপত্রসমূহ (_C)"
-#: ../pidgin/gtkblist.c:3288
msgid "/Tools/Plu_gins"
msgstr "/টুলসমূহ/প্লাগ-ইনসমূহ (_g)"
-#: ../pidgin/gtkblist.c:3289
msgid "/Tools/Pr_eferences"
msgstr "/টুলসমূহ/প্রাধিকারসমূহ (_e)"
-#: ../pidgin/gtkblist.c:3290
msgid "/Tools/Pr_ivacy"
msgstr "/টুলসমূহ/গোপনীয়তা (_i)"
-#: ../pidgin/gtkblist.c:3291
msgid "/Tools/Smile_y"
msgstr "/টুলসমূহ/স্মাইলী (_y)"
-#: ../pidgin/gtkblist.c:3293
msgid "/Tools/_File Transfers"
msgstr "/টুলসমূহ/ফাইল স্থানান্তর করে (_F)"
-#: ../pidgin/gtkblist.c:3294
msgid "/Tools/R_oom List"
msgstr "/টুলসমূহ/রুমের তালিকা (_o)"
-#: ../pidgin/gtkblist.c:3295
msgid "/Tools/System _Log"
msgstr "/টুলসমূহ/সিস্টেমের কার্যবিবরণী (_L)"
-#: ../pidgin/gtkblist.c:3297
msgid "/Tools/Mute _Sounds"
msgstr "/টুলসমূহ/সাউন্ড বন্ধ রাখুন (_S)"
#. Help
-#: ../pidgin/gtkblist.c:3299
msgid "/_Help"
msgstr "/সহায়িকা (_H)"
-#: ../pidgin/gtkblist.c:3300
msgid "/Help/Online _Help"
msgstr "/সহায়িকা/অনলাইন সহায়িকা (_H)"
-#: ../pidgin/gtkblist.c:3301
msgid "/Help/_Debug Window"
msgstr "/সহায়িকা/ডিবাগ উইন্ডো (_D)"
-#: ../pidgin/gtkblist.c:3303 ../pidgin/gtkblist.c:3305
msgid "/Help/_About"
msgstr "/সহায়িকা/পরিচিতি (_A)"
-#: ../pidgin/gtkblist.c:3338
#, c-format
msgid "<b>Account:</b> %s"
msgstr "<b>একাউন্ট:</b> %s"
-#: ../pidgin/gtkblist.c:3357
#, c-format
msgid ""
"\n"
@@ -15867,7 +11463,6 @@ msgstr ""
"\n"
"<b>পেশা:</b> %d"
-#: ../pidgin/gtkblist.c:3363
#, c-format
msgid ""
"\n"
@@ -15876,132 +11471,102 @@ msgstr ""
"\n"
"<b>বিষয়বস্তু:</b> %s"
-#: ../pidgin/gtkblist.c:3363
msgid "(no topic set)"
msgstr "(কোনো বিষয়বস্তু নির্ধারণ করা হয়নি)"
-#: ../pidgin/gtkblist.c:3444
msgid "Buddy Alias"
msgstr "বন্ধুর উপনাম"
-#: ../pidgin/gtkblist.c:3473
msgid "Logged In"
msgstr "লগইন করেছে"
-#: ../pidgin/gtkblist.c:3519
msgid "Last Seen"
msgstr "শেষ দেখেছিলাম"
# fix me tithi
-#: ../pidgin/gtkblist.c:3540
msgid "Spooky"
msgstr "ভূতুরে"
-#: ../pidgin/gtkblist.c:3542
msgid "Awesome"
msgstr "দারুণ"
# fix- me tithi
-#: ../pidgin/gtkblist.c:3544
msgid "Rockin'"
msgstr "Rockin'"
-#: ../pidgin/gtkblist.c:3575
msgid "Total Buddies"
msgstr "মোট বন্ধু"
# fix me tithi
-#: ../pidgin/gtkblist.c:3951
#, c-format
msgid "Idle %dd %dh %02dm"
msgstr "%dd %dh %02dm অলস"
-#: ../pidgin/gtkblist.c:3953
#, c-format
msgid "Idle %dh %02dm"
msgstr "%dh %02dm অলস"
-#: ../pidgin/gtkblist.c:3955
#, c-format
msgid "Idle %dm"
msgstr "%dm অলস"
-#: ../pidgin/gtkblist.c:4109
msgid "/Buddies/New Instant Message..."
msgstr "/বন্ধুগণ/নতুন তাৎক্ষণিক বার্তা..."
-#: ../pidgin/gtkblist.c:4110 ../pidgin/gtkblist.c:4143
msgid "/Buddies/Join a Chat..."
msgstr "/বন্ধুগণ/আড্ডায় যোগদান করুন..."
-#: ../pidgin/gtkblist.c:4111
msgid "/Buddies/Get User Info..."
msgstr "/বন্ধুগণ/ব্যবহারকারীর তথ্য গ্রহন করুন..."
-#: ../pidgin/gtkblist.c:4112
msgid "/Buddies/Add Buddy..."
msgstr "/বন্ধুগণ/বন্ধু যোগ করুন..."
-#: ../pidgin/gtkblist.c:4113 ../pidgin/gtkblist.c:4146
msgid "/Buddies/Add Chat..."
msgstr "/বন্ধুগণ/আড্ডা যোগ করুন..."
-#: ../pidgin/gtkblist.c:4114
msgid "/Buddies/Add Group..."
msgstr "/বন্ধুগণ/গ্রুপ যোগ করুন..."
-#: ../pidgin/gtkblist.c:4149
msgid "/Tools/Privacy"
msgstr "/টুলসমূহ/গোপনীয়তা"
-#: ../pidgin/gtkblist.c:4152
msgid "/Tools/Room List"
msgstr "/টুলসমূহ/রুমের তালিকা"
-#: ../pidgin/gtkblist.c:4284 ../pidgin/gtkdocklet.c:155
-#: ../pidgin/gtkdocklet.c:160
#, c-format
msgid "%d unread message from %s\n"
msgid_plural "%d unread messages from %s\n"
msgstr[0] "%1dটি অপঠিত বার্তা %2s হতে\n"
msgstr[1] "%1dগুলো অপঠিত বার্তা %2s হতে\n"
-#: ../pidgin/gtkblist.c:4447
msgid "Manually"
msgstr "হস্তচালিতভাবে"
-#: ../pidgin/gtkblist.c:4450
msgid "By status"
msgstr "অবস্থা অনুসারে"
-#: ../pidgin/gtkblist.c:4451
msgid "By log size"
msgstr "লগের আকার অনুসারে"
-#: ../pidgin/gtkblist.c:4787
#, c-format
msgid "%s disconnected"
msgstr "%s বিচ্ছিন্ন"
-#: ../pidgin/gtkblist.c:4789
#, c-format
msgid "%s disabled"
msgstr "%s নিষ্ক্রিয়"
-#: ../pidgin/gtkblist.c:4793
msgid "Reconnect"
msgstr "পুনরায় সংযোগ দিন"
-#: ../pidgin/gtkblist.c:4793 ../pidgin/gtkblist.c:4911
msgid "Re-enable"
msgstr "পুনরায় সক্রিয় করুন"
# tithi
-#: ../pidgin/gtkblist.c:4909
msgid "Welcome back!"
msgstr "পুনরায় স্বাগতম!"
-#: ../pidgin/gtkblist.c:4945
#, c-format
msgid "%d account was disabled because you signed on from another location:"
msgid_plural ""
@@ -16010,24 +11575,19 @@ msgstr[0] "আপনি অন্য একটি স্থান থেকে
msgstr[1] ""
"আপনি অন্য একটি স্থান থেকে সাইন অন করার কারণে %d একাউন্টগুলো নিষ্ক্রিয় ছিল:"
-#: ../pidgin/gtkblist.c:5226
msgid "<b>Username:</b>"
msgstr "<b>ব্যবহারকারীর-নাম:</b>"
-#: ../pidgin/gtkblist.c:5233
msgid "<b>Password:</b>"
msgstr "<b>গুপ্তসংকেত:</b>"
-#: ../pidgin/gtkblist.c:5244
msgid "_Login"
msgstr "লগইন (_L)"
-#: ../pidgin/gtkblist.c:5330
msgid "/Accounts"
msgstr "/একাউন্টগুলো"
#. Translators: Please maintain the use of -> and <- to refer to menu heirarchy
-#: ../pidgin/gtkblist.c:5344
#, c-format
msgid ""
"<span weight='bold' size='larger'>Welcome to %s!</span>\n"
@@ -16046,54 +11606,42 @@ msgstr ""
#. set the Show Offline Buddies option. must be done
#. * after the treeview or faceprint gets mad. -Robot101
#.
-#: ../pidgin/gtkblist.c:5608
msgid "/Buddies/Show/Offline Buddies"
msgstr "/বন্ধুগণ/দেখান/অফলাইন বন্ধুগণ"
-#: ../pidgin/gtkblist.c:5611
msgid "/Buddies/Show/Empty Groups"
msgstr "/বন্ধুগণ/দেখান/ফাঁকা গ্রুপগুলো"
-#: ../pidgin/gtkblist.c:5617
msgid "/Buddies/Show/Buddy Details"
msgstr "/বন্ধুগণ/দেখান/বন্ধুদের বিস্তারিত"
-#: ../pidgin/gtkblist.c:5620
msgid "/Buddies/Show/Idle Times"
msgstr "/বন্ধুগণ/দোখান/অলস সময়"
-#: ../pidgin/gtkblist.c:5623
msgid "/Buddies/Show/Protocol Icons"
msgstr "/বন্ধুগণ/দেখান/প্রটোকল আইকনগুলো"
-#: ../pidgin/gtkblist.c:6589
msgid "Add a buddy.\n"
msgstr "বন্ধু যোগ করুন।\n"
-#: ../pidgin/gtkblist.c:6604
msgid "Buddy's _username:"
msgstr "বন্ধুর ব্যবহারকারীর-নাম (_u):"
# and this
-#: ../pidgin/gtkblist.c:6626
msgid "(Optional) A_lias:"
msgstr "উপনাম (ঐচ্ছিক) (_l):"
-#: ../pidgin/gtkblist.c:6644
msgid "Add buddy to _group:"
msgstr "গ্রুপে বন্ধু যোগ করুন (_g):"
-#: ../pidgin/gtkblist.c:6893
msgid "This protocol does not support chat rooms."
msgstr "এই প্রটোকলটি আড্ডার রুমসমূহ সমর্থন করে না।"
-#: ../pidgin/gtkblist.c:6909
msgid ""
"You are not currently signed on with any protocols that have the ability to "
"chat."
msgstr "আপনি বর্তমানে আড্ডার যোগ্য এমন কোনো প্রটোকলে যুক্ত হননি।"
-#: ../pidgin/gtkblist.c:6953
msgid ""
"Please enter an alias, and the appropriate information about the chat you "
"would like to add to your buddy list.\n"
@@ -16101,80 +11649,62 @@ msgstr ""
"অনুগ্রহ করে আপনি আপনার বন্ধু তালিকায় যুক্ত করতে চান এমন আড্ডার একটি ডাকনাম,এবং "
"যথাযথ তথ্য প্রবেশ করান।\n"
-#: ../pidgin/gtkblist.c:6976
msgid "A_lias:"
msgstr "উপনাম (_l):"
# tithi
-#: ../pidgin/gtkblist.c:6983
msgid "Auto_join when account becomes online."
msgstr "একাউন্ট অনলাইনে থাকলে স্বয়ংক্রিয় ভাবে যোগদান করুন।"
# tithi
-#: ../pidgin/gtkblist.c:6984
msgid "_Remain in chat after window is closed."
msgstr "উইন্ডো বন্ধ হবার পরেও আড্ডায় থাকুন (_R)।"
-#: ../pidgin/gtkblist.c:7010
msgid "Please enter the name of the group to be added."
msgstr "অনুগ্রহ করে যুক্ত করতে হবে এমন গ্রুপের নাম প্রবেশ করান।"
-#: ../pidgin/gtkblist.c:7673
msgid "Enable Account"
msgstr "একাউন্ট সক্রিয় করুন"
-#: ../pidgin/gtkblist.c:7679
msgid "<PurpleMain>/Accounts/Enable Account"
msgstr "<PurpleMain>/একাউন্টসমূহ/একাউন্ট সক্রিয় করুন"
-#: ../pidgin/gtkblist.c:7732
msgid "<PurpleMain>/Accounts/"
msgstr "<PurpleMain>/একাউন্টসমূহ/"
-#: ../pidgin/gtkblist.c:7755
msgid "_Edit Account"
msgstr "একাউন্ট সম্পাদন করুন (_E)"
-#: ../pidgin/gtkblist.c:7768 ../pidgin/gtkconv.c:3301
msgid "No actions available"
msgstr "কোনো কাজ সহজলভ্য নয়"
-#: ../pidgin/gtkblist.c:7776
msgid "_Disable"
msgstr "নিষ্ক্রিয় (_D)"
-#: ../pidgin/gtkblist.c:7794
msgid "/Tools"
msgstr "/টুলসমূহ"
-#: ../pidgin/gtkblist.c:7864
msgid "/Buddies/Sort Buddies"
msgstr "/বন্ধুগণ/বন্ধুদের ক্রমানুসারে সাজান"
#. Widget creation function
-#: ../pidgin/gtkcertmgr.c:541
msgid "SSL Servers"
msgstr "SSL সার্ভারসমূহ"
-#: ../pidgin/gtkconv.c:489
msgid "Unknown command."
msgstr "অজানা নির্দেশ।"
-#: ../pidgin/gtkconv.c:773 ../pidgin/gtkconv.c:800
msgid "That buddy is not on the same protocol as this chat."
msgstr "ঐ বন্ধুটি এই আড্ডার মতো একই প্রটোকলে নেই।"
-#: ../pidgin/gtkconv.c:794
msgid ""
"You are not currently signed on with an account that can invite that buddy."
msgstr "আপনি বর্তমানে এমন কোনো একাউন্টে যুক্ত নন যা ঐ বন্ধুকে আমন্ত্রণ জানাতে পারে।"
-#: ../pidgin/gtkconv.c:848
msgid "Invite Buddy Into Chat Room"
msgstr "বন্ধুকে আড্ডার রুমে আমন্ত্রণ জানান"
#. Put our happy label in it.
-#: ../pidgin/gtkconv.c:878
msgid ""
"Please enter the name of the user you wish to invite, along with an optional "
"invite message."
@@ -16182,185 +11712,140 @@ msgstr ""
"একটি ঐচ্ছিক আমন্ত্রণ বার্তা সহ, অনুগ্রহ করে আপনি যে ব্যবহারকারীকে আমন্ত্রণ জানাতে চান "
"তার নামটি প্রবেশ করান।"
-#: ../pidgin/gtkconv.c:899
msgid "_Buddy:"
msgstr "বন্ধু (_B):"
-#: ../pidgin/gtkconv.c:912 ../pidgin/gtksavedstatuses.c:1215
-#: ../pidgin/gtksavedstatuses.c:1529
msgid "_Message:"
msgstr "বার্তা (_M):"
-#: ../pidgin/gtkconv.c:977
#, c-format
msgid "<h1>Conversation with %s</h1>\n"
msgstr "<h1>%s-এর সঙ্গে কথোপকথন</h1>\n"
-#: ../pidgin/gtkconv.c:1015
msgid "Save Conversation"
msgstr "কথোপকথন সংরক্ষণ করুন"
-#: ../pidgin/gtkconv.c:1161 ../pidgin/gtkdebug.c:167 ../pidgin/gtkdebug.c:740
msgid "Find"
msgstr "খুঁজুন"
-#: ../pidgin/gtkconv.c:1187 ../pidgin/gtkdebug.c:195
msgid "_Search for:"
msgstr "খুঁজছে (_S):"
-#: ../pidgin/gtkconv.c:1708
msgid "Un-Ignore"
msgstr "অগ্রাহ্য করবেন না"
-#: ../pidgin/gtkconv.c:1711
msgid "Ignore"
msgstr "অগ্রাহ্য করুন"
-#: ../pidgin/gtkconv.c:1731
msgid "Get Away Message"
msgstr "অনুপস্থিতি বার্তা গ্রহণ করুন"
-#: ../pidgin/gtkconv.c:1754
msgid "Last said"
msgstr "সর্বশেষ বলা হয়েছে"
-#: ../pidgin/gtkconv.c:2770
msgid "Unable to save icon file to disk."
msgstr "ডিস্কে আইকন ফাইল সংরক্ষণ করতে অক্ষম।"
-#: ../pidgin/gtkconv.c:2865
msgid "Save Icon"
msgstr "আইকন সংরক্ষণ করুন"
-#: ../pidgin/gtkconv.c:2923
msgid "Animate"
msgstr "অ্যানিমেট"
-#: ../pidgin/gtkconv.c:2928
msgid "Hide Icon"
msgstr "আইকন লুকিয়ে রাখুন"
-#: ../pidgin/gtkconv.c:2931
msgid "Save Icon As..."
msgstr "এভাবে আইকন সংরক্ষণ করুন..."
-#: ../pidgin/gtkconv.c:2935
msgid "Set Custom Icon..."
msgstr "পছন্দসই আইকন নির্ধারণ করুন..."
-#: ../pidgin/gtkconv.c:2939
msgid "Change Size"
msgstr "আকার পরিবর্তন করুন"
# tithi
-#: ../pidgin/gtkconv.c:3077
msgid "Show All"
msgstr "সব প্রদর্শন করুন"
#. Conversation menu
-#: ../pidgin/gtkconv.c:3096
msgid "/_Conversation"
msgstr "/কথোপকথন (_C)"
-#: ../pidgin/gtkconv.c:3098
msgid "/Conversation/New Instant _Message..."
msgstr "/কথোপকথন/নতুন তাৎক্ষণিক বার্তা... (_M)"
-#: ../pidgin/gtkconv.c:3103
msgid "/Conversation/_Find..."
msgstr "/কথোপকথন/খুঁজুন... (_F)"
-#: ../pidgin/gtkconv.c:3105
msgid "/Conversation/View _Log"
msgstr "/কথোপকথন/কার্যবিবরণী প্রদর্শন করুন (_L)"
-#: ../pidgin/gtkconv.c:3106
msgid "/Conversation/_Save As..."
msgstr "/কথোপকথন/এভাবে সংরক্ষণ করুন... (_S)"
# fix me tithi
-#: ../pidgin/gtkconv.c:3108
msgid "/Conversation/Clea_r Scrollback"
msgstr "/কথোপকথন/স্ক্রলবেক মুছুন (_r)"
-#: ../pidgin/gtkconv.c:3112
msgid "/Conversation/Se_nd File..."
msgstr "/কথোপকথন/ফাইল প্রেরণ করুন... (_n)"
-#: ../pidgin/gtkconv.c:3113
msgid "/Conversation/Add Buddy _Pounce..."
msgstr "/কথোপকথন/বন্ধু পাউন্স যোগ করুন... (_P)"
-#: ../pidgin/gtkconv.c:3115
msgid "/Conversation/_Get Info"
msgstr "/কথোপকথন/তথ্য সংগ্রহ করুন (_G)"
-#: ../pidgin/gtkconv.c:3117
msgid "/Conversation/In_vite..."
msgstr "/কথোপকথন/আমন্ত্রণ করুন... (_v)"
-#: ../pidgin/gtkconv.c:3119
msgid "/Conversation/M_ore"
msgstr "/কথোপকথন/আরও (_o)"
-#: ../pidgin/gtkconv.c:3123
msgid "/Conversation/Al_ias..."
msgstr "/কথোপকথন/উপনাম... (_i)"
-#: ../pidgin/gtkconv.c:3125
msgid "/Conversation/_Block..."
msgstr "/কথোপকথন/ব্লক করুন... (_B)"
-#: ../pidgin/gtkconv.c:3127
msgid "/Conversation/_Unblock..."
msgstr "/কথোপকথন/ব্লক মুক্ত করুন... (_U)"
-#: ../pidgin/gtkconv.c:3129
msgid "/Conversation/_Add..."
msgstr "/কথোপকথন/যোগ করুন... (_A)"
-#: ../pidgin/gtkconv.c:3131
msgid "/Conversation/_Remove..."
msgstr "/কথোপকথন/অপসারণ করুন... (_R)"
-#: ../pidgin/gtkconv.c:3136
msgid "/Conversation/Insert Lin_k..."
msgstr "/কথোপকথন/লিঙ্ক প্রবেশ করান... (_k)"
-#: ../pidgin/gtkconv.c:3138
msgid "/Conversation/Insert Imag_e..."
msgstr "/কথোপকথন/চিত্র প্রবেশ করান... (_e)"
-#: ../pidgin/gtkconv.c:3144
msgid "/Conversation/_Close"
msgstr "/কথোপকথন/বন্ধ করুন (_C)"
#. Options
-#: ../pidgin/gtkconv.c:3148
msgid "/_Options"
msgstr "/পছন্দসমূহ (_O)"
-#: ../pidgin/gtkconv.c:3149
msgid "/Options/Enable _Logging"
msgstr "/পছন্দসমূহ/লগ সক্রিয় করুন (_L)"
-#: ../pidgin/gtkconv.c:3150
msgid "/Options/Enable _Sounds"
msgstr "/পছন্দসমূহ/শব্দ সক্রিয় করুন (_S)"
-#: ../pidgin/gtkconv.c:3152
msgid "/Options/Show Formatting _Toolbars"
msgstr "/পছন্দসমূহ/বিন্যাসকরণ টুলবারসমূহ প্রদর্শন করুন (_T)"
-#: ../pidgin/gtkconv.c:3153
msgid "/Options/Show Ti_mestamps"
msgstr "/পছন্দসমূহ/সময়-স্ট্যাম্প প্রদর্শন করুন (_m)"
-#: ../pidgin/gtkconv.c:3289
msgid "/Conversation/More"
msgstr "/কথোপকথন/আরও"
-#: ../pidgin/gtkconv.c:3345
msgid "/Options"
msgstr "/পছন্দসমূহ"
@@ -16369,79 +11854,60 @@ msgstr "/পছন্দসমূহ"
#. Make sure the 'Conversation -> More' menuitems are regenerated whenever
#. * the 'Conversation' menu pops up because the entries can change after the
#. * conversation is created.
-#: ../pidgin/gtkconv.c:3380 ../pidgin/gtkconv.c:3412
msgid "/Conversation"
msgstr "/কথোপকথন"
-#: ../pidgin/gtkconv.c:3420
msgid "/Conversation/View Log"
msgstr "/কথোপকথন/কার্যবিবরণী প্রদর্শন করুন"
-#: ../pidgin/gtkconv.c:3426
msgid "/Conversation/Send File..."
msgstr "/কথোপকথন/ফাইল প্রেরণ করুন..."
-#: ../pidgin/gtkconv.c:3430
msgid "/Conversation/Add Buddy Pounce..."
msgstr "/কথোপকথন/বন্ধু পাউন্স যোগ করুন..."
-#: ../pidgin/gtkconv.c:3436
msgid "/Conversation/Get Info"
msgstr "/কথোপকথন/তথ্য গ্রহণ করুন"
-#: ../pidgin/gtkconv.c:3440
msgid "/Conversation/Invite..."
msgstr "/কথোপকথন/আমন্ত্রণ করুন..."
-#: ../pidgin/gtkconv.c:3446
msgid "/Conversation/Alias..."
msgstr "/কথোপকথন/উপনাম..."
-#: ../pidgin/gtkconv.c:3450
msgid "/Conversation/Block..."
msgstr "/কথোপকথন/ব্লক করুন..."
-#: ../pidgin/gtkconv.c:3454
msgid "/Conversation/Unblock..."
msgstr "/কথোপকথন/ব্লক মুক্ত করুন..."
-#: ../pidgin/gtkconv.c:3458
msgid "/Conversation/Add..."
msgstr "/কথোপকথন/যোগ করুন..."
-#: ../pidgin/gtkconv.c:3462
msgid "/Conversation/Remove..."
msgstr "/কথোপকথন/অপসারণ করুন..."
-#: ../pidgin/gtkconv.c:3468
msgid "/Conversation/Insert Link..."
msgstr "/কথোপকথন/লিঙ্ক প্রবেশ করান..."
-#: ../pidgin/gtkconv.c:3472
msgid "/Conversation/Insert Image..."
msgstr "/কথোপকথন/চিত্র প্রবেশ করান..."
-#: ../pidgin/gtkconv.c:3478
msgid "/Options/Enable Logging"
msgstr "/পছন্দসমূহ/লগ সক্রিয় করুন"
-#: ../pidgin/gtkconv.c:3481
msgid "/Options/Enable Sounds"
msgstr "/পছন্দসমূহ/শব্দ সক্রিয় করুন"
-#: ../pidgin/gtkconv.c:3494
msgid "/Options/Show Formatting Toolbars"
msgstr "/পছন্দসমূহ/বিন্যাসকরণ টুলবারসমূহ প্রদর্শন করুন"
-#: ../pidgin/gtkconv.c:3497
msgid "/Options/Show Timestamps"
msgstr "/পছন্দসমূহ/সময়-স্ট্যাম্প প্রদর্শন করুন"
-#: ../pidgin/gtkconv.c:3575
msgid "User is typing..."
msgstr "ব্যবহারকারী টাইপ করছে..."
-#: ../pidgin/gtkconv.c:3649
#, c-format
msgid ""
"\n"
@@ -16451,559 +11917,410 @@ msgstr ""
"%s টাইপ করা বন্ধ করে দিয়েছে"
#. Build the Send To menu
-#: ../pidgin/gtkconv.c:3829 ../pidgin/gtkconv.c:8417
msgid "S_end To"
msgstr "প্রেরণ করুন (_S)"
-#: ../pidgin/gtkconv.c:4498 ../pidgin/plugins/sendbutton.c:61
msgid "_Send"
msgstr "প্রেরণ করুন (_S)"
#. Setup the label telling how many people are in the room.
-#: ../pidgin/gtkconv.c:4657
msgid "0 people in room"
msgstr "রুমে ০ জন ব্যক্তি উপস্থিত"
-#: ../pidgin/gtkconv.c:5958 ../pidgin/gtkconv.c:6079
#, c-format
msgid "%d person in room"
msgid_plural "%d people in room"
msgstr[0] "রুমে %d জন ব্যক্তি উপস্থিত"
msgstr[1] "রুমে %d জন ব্যক্তি উপস্থিত"
-#: ../pidgin/gtkconv.c:6623 ../pidgin/gtkstatusbox.c:691
msgid "Typing"
msgstr "টাইপ করছে"
-#: ../pidgin/gtkconv.c:6627
msgid "Stopped Typing"
msgstr "টাইপ করা বন্ধ করেছে"
-#: ../pidgin/gtkconv.c:6630
msgid "Nick Said"
msgstr "নিক বলেছে"
-#: ../pidgin/gtkconv.c:6633
msgid "Unread Messages"
msgstr "অপঠিত বার্তাসমূহ"
-#: ../pidgin/gtkconv.c:6639
msgid "New Event"
msgstr "নতুন ঘটনা"
# fix me tithi
-#: ../pidgin/gtkconv.c:7889
msgid "clear: Clears all conversation scrollbacks."
msgstr "মুছে ফেলুন: সব কথোপকথনের স্ক্রলবেক মুছে ফেলুন।"
-#: ../pidgin/gtkconv.c:8093
msgid "Confirm close"
msgstr "বন্ধ নিশ্চিত করুন"
-#: ../pidgin/gtkconv.c:8125
msgid "You have unread messages. Are you sure you want to close the window?"
msgstr "আপনার অপঠিত বার্তা আছে। আপনি কি নিশ্চিত আপনি উইন্ডোটি বন্ধ করতে চান?"
-#: ../pidgin/gtkconv.c:8758
msgid "Close other tabs"
msgstr "অন্যান্য ট্যাবগুলো বন্ধ করুন"
-#: ../pidgin/gtkconv.c:8764
msgid "Close all tabs"
msgstr "সকল ট্যাব বন্ধ করুন"
-#: ../pidgin/gtkconv.c:8772
msgid "Detach this tab"
msgstr "এই ট্যাবটি আলাদা করুন"
-#: ../pidgin/gtkconv.c:8778
msgid "Close this tab"
msgstr "এই ট্যাবটি বন্ধ করুন"
-#: ../pidgin/gtkconv.c:9300
msgid "Close conversation"
msgstr "কথোপকথন বন্ধ করুন"
-#: ../pidgin/gtkconv.c:9904
msgid "Last created window"
msgstr "সর্বশেষ তৈরিকৃত উইন্ডো"
-#: ../pidgin/gtkconv.c:9906
msgid "Separate IM and Chat windows"
msgstr "তাৎক্ষণিক বার্তা ও আড্ডার উইন্ডো পৃথক করুন"
-#: ../pidgin/gtkconv.c:9908 ../pidgin/gtkprefs.c:1573
msgid "New window"
msgstr "নতুন উইন্ডো"
-#: ../pidgin/gtkconv.c:9910
msgid "By group"
msgstr "গ্রুপ অনুসারে"
-#: ../pidgin/gtkconv.c:9912
msgid "By account"
msgstr "একাউন্ট অনুসারে"
-#: ../pidgin/gtkdebug.c:234
msgid "Save Debug Log"
msgstr "ডিবাগ কার্যবিবরণী সংরক্ষণ করুন"
-#: ../pidgin/gtkdebug.c:582
msgid "Invert"
msgstr "উল্টান"
-#: ../pidgin/gtkdebug.c:585
msgid "Highlight matches"
msgstr "প্রনির্দেশ মিলসমূহ"
-#: ../pidgin/gtkdebug.c:652
msgid "_Icon Only"
msgstr "শুধুমাত্র আইকন (_I)"
-#: ../pidgin/gtkdebug.c:653
msgid "_Text Only"
msgstr "শুধুমাত্র পাঠ (_T)"
-#: ../pidgin/gtkdebug.c:654
msgid "_Both Icon & Text"
msgstr "আইকন ও পাঠ উভয়ই (_B)"
-#: ../pidgin/gtkdebug.c:772
msgid "Filter"
msgstr "পরিশ্রুতক"
-#: ../pidgin/gtkdebug.c:791
msgid "Right click for more options."
msgstr "আরও পছন্দের জন্য ডান ক্লিক করুন।"
-#: ../pidgin/gtkdebug.c:821
msgid "Level "
msgstr "স্তর"
# tithi
-#: ../pidgin/gtkdebug.c:822 ../pidgin/gtkdebug.c:828
msgid "Select the debug filter level."
msgstr "ডিবাগ পরিশ্রুতক স্তর নির্বাচন করুন।"
-#: ../pidgin/gtkdebug.c:830
msgid "All"
msgstr "সকল"
-#: ../pidgin/gtkdebug.c:831
msgid "Misc"
msgstr "অন্যান্য"
-#: ../pidgin/gtkdebug.c:833
msgid "Warning"
msgstr "সতর্কতা"
-#: ../pidgin/gtkdebug.c:834
msgid "Error "
msgstr "ত্রুটি"
-#: ../pidgin/gtkdebug.c:835
msgid "Fatal Error"
msgstr "মারাত্মক ত্রুটি"
# tithi
-#: ../pidgin/gtkdialogs.c:75
msgid "bug master"
msgstr "বাগ মাস্টার"
-#: ../pidgin/gtkdialogs.c:77
msgid "artist"
msgstr "শিল্পী"
# tithi
#. feel free to not translate this
-#: ../pidgin/gtkdialogs.c:80
msgid "Ka-Hing Cheung"
msgstr "কা-হিং চিউং"
-#: ../pidgin/gtkdialogs.c:93
msgid "support"
msgstr "সমর্থন করুন"
-#: ../pidgin/gtkdialogs.c:95 ../pidgin/gtkdialogs.c:118
msgid "webmaster"
msgstr "ওয়েবমাস্টার"
# tithi
-#: ../pidgin/gtkdialogs.c:105
msgid "Senior Contributor/QA"
msgstr "সিনিয়র অংশগ্রহণকারী/QA"
-#: ../pidgin/gtkdialogs.c:114
msgid "win32 port"
msgstr "উইন৩২ পোর্ট"
-#: ../pidgin/gtkdialogs.c:115 ../pidgin/gtkdialogs.c:116
msgid "maintainer"
msgstr "রক্ষণাবেক্ষক"
-#: ../pidgin/gtkdialogs.c:117
msgid "libfaim maintainer"
msgstr "libfaim রক্ষণাবেক্ষক"
#. If "lazy bum" translates literally into a serious insult, use something else or omit it.
-#: ../pidgin/gtkdialogs.c:120
msgid "hacker and designated driver [lazy bum]"
msgstr "হ্যাকার ও নির্দেশিত ড্রাইভার [অকর্মা]"
-#: ../pidgin/gtkdialogs.c:121
msgid "support/QA"
msgstr "সমর্থন/QA"
# tithi
-#: ../pidgin/gtkdialogs.c:122
msgid "XMPP"
msgstr "XMPP"
-#: ../pidgin/gtkdialogs.c:123
msgid "original author"
msgstr "মূল লেখক"
-#: ../pidgin/gtkdialogs.c:125
msgid "lead developer"
msgstr "প্রধান ডেভেলপার"
# tithi
-#: ../pidgin/gtkdialogs.c:141 ../pidgin/gtkdialogs.c:142
msgid "Afrikaans"
msgstr "আফ্রিকানরা"
-#: ../pidgin/gtkdialogs.c:143 ../pidgin/gtkdialogs.c:241
msgid "Arabic"
msgstr "এরাবিক"
# tithi
-#: ../pidgin/gtkdialogs.c:144
msgid "Belarusian Latin"
msgstr "বেলারুশিয়ান ল্যাটিন"
-#: ../pidgin/gtkdialogs.c:145 ../pidgin/gtkdialogs.c:146
-#: ../pidgin/gtkdialogs.c:242
msgid "Bulgarian"
msgstr "বুলগেরীয়"
-#: ../pidgin/gtkdialogs.c:147 ../pidgin/gtkdialogs.c:148
-#: ../pidgin/gtkdialogs.c:149 ../pidgin/gtkdialogs.c:150
-#: ../pidgin/gtkdialogs.c:151
msgid "Bengali"
msgstr "বাংলা"
-#: ../pidgin/gtkdialogs.c:152
msgid "Bosnian"
msgstr "বসনীয়"
-#: ../pidgin/gtkdialogs.c:153 ../pidgin/gtkdialogs.c:243
-#: ../pidgin/gtkdialogs.c:244
msgid "Catalan"
msgstr "ক্যাটালান"
# tithi
-#: ../pidgin/gtkdialogs.c:154 ../pidgin/gtkdialogs.c:155
msgid "Valencian-Catalan"
msgstr "ভ্যালেনসিয়-ক্যাটালান"
-#: ../pidgin/gtkdialogs.c:156 ../pidgin/gtkdialogs.c:245
-#: ../pidgin/gtkdialogs.c:246
msgid "Czech"
msgstr "চেক"
-#: ../pidgin/gtkdialogs.c:157 ../pidgin/gtkdialogs.c:158
msgid "Danish"
msgstr "ড্যানিশ"
-#: ../pidgin/gtkdialogs.c:159 ../pidgin/gtkdialogs.c:160
-#: ../pidgin/gtkdialogs.c:247
msgid "German"
msgstr "জার্মান"
# tithi
-#: ../pidgin/gtkdialogs.c:161 ../pidgin/gtkdialogs.c:162
-#: ../pidgin/gtkdialogs.c:163
msgid "Dzongkha"
msgstr "জংখা"
-#: ../pidgin/gtkdialogs.c:164 ../pidgin/gtkdialogs.c:165
msgid "Greek"
msgstr "গ্রীক"
-#: ../pidgin/gtkdialogs.c:166
msgid "Australian English"
msgstr "অষ্ট্রেলীয় ইংরেজী"
-#: ../pidgin/gtkdialogs.c:167
msgid "Canadian English"
msgstr "কানাডীয় ইংরেজী"
-#: ../pidgin/gtkdialogs.c:168
msgid "British English"
msgstr "ব্রিটিশ ইংরেজী"
# tithi
-#: ../pidgin/gtkdialogs.c:169
msgid "Esperanto"
msgstr "এসপারেনটো"
-#: ../pidgin/gtkdialogs.c:170 ../pidgin/gtkdialogs.c:248
-#: ../pidgin/gtkdialogs.c:249 ../pidgin/gtkdialogs.c:250
-#: ../pidgin/gtkdialogs.c:251
msgid "Spanish"
msgstr "স্পেনিশ"
-#: ../pidgin/gtkdialogs.c:171
msgid "Estonian"
msgstr "এসতোনীয়"
# tithi
-#: ../pidgin/gtkdialogs.c:172 ../pidgin/gtkdialogs.c:173
msgid "Euskera(Basque)"
msgstr "ইউসকেরা(বাসকু)"
-#: ../pidgin/gtkdialogs.c:174 ../pidgin/gtkdialogs.c:175
-#: ../pidgin/gtkdialogs.c:176
msgid "Persian"
msgstr "পার্সিয"
-#: ../pidgin/gtkdialogs.c:177 ../pidgin/gtkdialogs.c:252
-#: ../pidgin/gtkdialogs.c:253
msgid "Finnish"
msgstr "ফীনিশ"
-#: ../pidgin/gtkdialogs.c:178 ../pidgin/gtkdialogs.c:254
-#: ../pidgin/gtkdialogs.c:255 ../pidgin/gtkdialogs.c:256
-#: ../pidgin/gtkdialogs.c:257
msgid "French"
msgstr "ফরাসী"
-#: ../pidgin/gtkdialogs.c:179
msgid "Irish"
msgstr "আইরিশ"
# fix me tithi
-#: ../pidgin/gtkdialogs.c:180 ../pidgin/gtkdialogs.c:181
-#: ../pidgin/gtkdialogs.c:258
msgid "Galician"
msgstr "গ্যালিশিয়"
-#: ../pidgin/gtkdialogs.c:182 ../pidgin/gtkdialogs.c:183
msgid "Gujarati"
msgstr "গুজরাটি"
# tithi
-#: ../pidgin/gtkdialogs.c:183
msgid "Gujarati Language Team"
msgstr "গুজরাটি ভাষার দল"
-#: ../pidgin/gtkdialogs.c:184 ../pidgin/gtkdialogs.c:259
msgid "Hebrew"
msgstr "হিব্রু"
-#: ../pidgin/gtkdialogs.c:185
msgid "Hindi"
msgstr "হিন্দি"
-#: ../pidgin/gtkdialogs.c:186 ../pidgin/gtkdialogs.c:260
msgid "Hungarian"
msgstr "হাঙ্গেরীয়"
-#: ../pidgin/gtkdialogs.c:187
msgid "Indonesian"
msgstr "ইন্ডোনেশিয়"
-#: ../pidgin/gtkdialogs.c:188 ../pidgin/gtkdialogs.c:261
msgid "Italian"
msgstr "ইটালিয়"
-#: ../pidgin/gtkdialogs.c:189 ../pidgin/gtkdialogs.c:262
-#: ../pidgin/gtkdialogs.c:263 ../pidgin/gtkdialogs.c:264
msgid "Japanese"
msgstr "জাপানী"
-#: ../pidgin/gtkdialogs.c:190 ../pidgin/gtkdialogs.c:265
msgid "Georgian"
msgstr "জর্জীয়"
-#: ../pidgin/gtkdialogs.c:190
msgid "Ubuntu Georgian Translators"
msgstr "উবান্টুর জর্জিয়ান অনুবাদকবৃন্দ"
# fix me tithi
-#: ../pidgin/gtkdialogs.c:191
msgid "Kannada"
msgstr "কান্নাডা"
# tithi
-#: ../pidgin/gtkdialogs.c:191
msgid "Kannada Translation team"
msgstr "কান্নাডা ভাষান্তর দল"
-#: ../pidgin/gtkdialogs.c:192 ../pidgin/gtkdialogs.c:266
-#: ../pidgin/gtkdialogs.c:267
msgid "Korean"
msgstr "কোরিয়"
-#: ../pidgin/gtkdialogs.c:193 ../pidgin/gtkdialogs.c:194
-#: ../pidgin/gtkdialogs.c:195
msgid "Kurdish"
msgstr "কুর্দিশ"
# tithi
-#: ../pidgin/gtkdialogs.c:196
msgid "Lao"
msgstr "লাও"
-#: ../pidgin/gtkdialogs.c:197 ../pidgin/gtkdialogs.c:268
-#: ../pidgin/gtkdialogs.c:269
msgid "Lithuanian"
msgstr "লিথুনীয়"
-#: ../pidgin/gtkdialogs.c:198 ../pidgin/gtkdialogs.c:199
-#: ../pidgin/gtkdialogs.c:200 ../pidgin/gtkdialogs.c:270
msgid "Macedonian"
msgstr "ম্যাসেডনিয়"
+#, fuzzy
+msgid "Mongolian"
+msgstr "ম্যাসেডনিয়"
+
# fix me tithi
-#: ../pidgin/gtkdialogs.c:202 ../pidgin/gtkdialogs.c:271
-#: ../pidgin/gtkdialogs.c:272 ../pidgin/gtkdialogs.c:273
msgid "Bokmål Norwegian"
msgstr "বোকমাল নরওয়েয়ান"
-#: ../pidgin/gtkdialogs.c:203
msgid "Nepali"
msgstr "নেপালি"
-#: ../pidgin/gtkdialogs.c:204
msgid "Dutch, Flemish"
msgstr "ওলন্দাজ, ফ্লেমিশ"
# fix me tithi
-#: ../pidgin/gtkdialogs.c:205
msgid "Norwegian Nynorsk"
msgstr "নরওয়েয়ান নাইনোরকস"
# fix-me tithi
-#: ../pidgin/gtkdialogs.c:206
msgid "Occitan"
msgstr "অকেশান"
# tithi
-#: ../pidgin/gtkdialogs.c:207
msgid "Punjabi"
msgstr "পাঞ্জাবী"
-#: ../pidgin/gtkdialogs.c:208 ../pidgin/gtkdialogs.c:274
-#: ../pidgin/gtkdialogs.c:275 ../pidgin/gtkdialogs.c:276
-#: ../pidgin/gtkdialogs.c:277
msgid "Polish"
msgstr "পোলিশ"
-#: ../pidgin/gtkdialogs.c:209
msgid "Portuguese"
msgstr "পর্তুগীজ"
-#: ../pidgin/gtkdialogs.c:210 ../pidgin/gtkdialogs.c:278
msgid "Portuguese-Brazil"
msgstr "পর্তুগীজ-ব্রাজিল"
-#: ../pidgin/gtkdialogs.c:211
msgid "Pashto"
msgstr "পাশতু"
-#: ../pidgin/gtkdialogs.c:212
msgid "Romanian"
msgstr "রুমানীয়"
-#: ../pidgin/gtkdialogs.c:213 ../pidgin/gtkdialogs.c:279
-#: ../pidgin/gtkdialogs.c:280 ../pidgin/gtkdialogs.c:281
msgid "Russian"
msgstr "রুশ"
-#: ../pidgin/gtkdialogs.c:214 ../pidgin/gtkdialogs.c:215
-#: ../pidgin/gtkdialogs.c:282 ../pidgin/gtkdialogs.c:283
-#: ../pidgin/gtkdialogs.c:284
msgid "Slovak"
msgstr "স্লোভাক"
-#: ../pidgin/gtkdialogs.c:216 ../pidgin/gtkdialogs.c:285
msgid "Slovenian"
msgstr "স্লোভেনিয়"
-#: ../pidgin/gtkdialogs.c:217
msgid "Albanian"
msgstr "আলবেনীয়"
-#: ../pidgin/gtkdialogs.c:218 ../pidgin/gtkdialogs.c:219
-#: ../pidgin/gtkdialogs.c:286 ../pidgin/gtkdialogs.c:287
msgid "Serbian"
msgstr "সার্বিয়"
-#: ../pidgin/gtkdialogs.c:220 ../pidgin/gtkdialogs.c:221
msgid "Sinhala"
msgstr "সিনহালা"
-#: ../pidgin/gtkdialogs.c:222 ../pidgin/gtkdialogs.c:288
-#: ../pidgin/gtkdialogs.c:289
msgid "Swedish"
msgstr "সুইডিশ"
-#: ../pidgin/gtkdialogs.c:223
msgid "Tamil"
msgstr "তামিল"
-#: ../pidgin/gtkdialogs.c:224
msgid "Telugu"
msgstr "তেলেগু"
-#: ../pidgin/gtkdialogs.c:225
msgid "Thai"
msgstr "থাই"
-#: ../pidgin/gtkdialogs.c:226 ../pidgin/gtkdialogs.c:290
msgid "Turkish"
msgstr "টার্কিশ"
# tithi
-#: ../pidgin/gtkdialogs.c:227
msgid "Urdu"
msgstr "ঊর্দূ"
-#: ../pidgin/gtkdialogs.c:228
msgid "Vietnamese"
msgstr "ভিয়েতনামি"
-#: ../pidgin/gtkdialogs.c:228
msgid "T.M.Thanh and the Gnome-Vi Team"
msgstr "টি.এম.থানহ এবং নৌম-ভিআইর দল"
-#: ../pidgin/gtkdialogs.c:229 ../pidgin/gtkdialogs.c:291
msgid "Simplified Chinese"
msgstr "সহজবোধ্য চীনা"
# tithi
-#: ../pidgin/gtkdialogs.c:230 ../pidgin/gtkdialogs.c:231
-#: ../pidgin/gtkdialogs.c:232
msgid "Hong Kong Chinese"
msgstr "হংকং চীনা"
-#: ../pidgin/gtkdialogs.c:233 ../pidgin/gtkdialogs.c:234
-#: ../pidgin/gtkdialogs.c:292
msgid "Traditional Chinese"
msgstr "ঐতিহ্যবাহী চীনা"
-#: ../pidgin/gtkdialogs.c:240
msgid "Amharic"
msgstr "আমহারিক"
-#: ../pidgin/gtkdialogs.c:410
#, c-format
msgid "About %s"
msgstr "%s সম্পর্কে"
# fix me tithi
-#: ../pidgin/gtkdialogs.c:446
#, c-format
msgid ""
"%s is a graphical modular messaging client based on libpurple which is "
@@ -17025,54 +12342,59 @@ msgstr ""
"দ্বারা স্বত্তাধিকার সংরক্ষিত। প্রদায়কগনের সম্পূর্ণ তালিকার জন্য 'স্বত্তাধিকার সংরক্ষিত' "
"ফাইল দেখুন। এই প্রোগ্রামটির জন্য আমরা কোনো নিশ্চয়তা প্রদান করি না।<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 ""
+
# fix me
-#: ../pidgin/gtkdialogs.c:464
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<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>"
+
+# fix me
+#, 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>"
-#: ../pidgin/gtkdialogs.c:469
msgid "Current Developers"
msgstr "বর্তমান ডেভেলপারগণ"
-#: ../pidgin/gtkdialogs.c:475
msgid "Crazy Patch Writers"
msgstr "ক্ষিপ্ত প্যাচ লেখকগণ"
-#: ../pidgin/gtkdialogs.c:481
msgid "Retired Developers"
msgstr "অবসরপ্রাপ্ত ডেভেলপার"
-#: ../pidgin/gtkdialogs.c:487
msgid "Retired Crazy Patch Writers"
msgstr "অবসরপ্রাপ্ত ক্ষিপ্ত প্যাচ লেখকগণ"
-#: ../pidgin/gtkdialogs.c:493
msgid "Current Translators"
msgstr "বর্তমান অনুবাদকবৃন্দ"
-#: ../pidgin/gtkdialogs.c:499
msgid "Past Translators"
msgstr "পুরনো অনুবাদকবৃন্দ"
-#: ../pidgin/gtkdialogs.c:503
msgid "Debugging Information"
msgstr "ডিবাগকরণ তথ্য"
-#: ../pidgin/gtkdialogs.c:719 ../pidgin/gtkdialogs.c:858
-#: ../pidgin/gtkdialogs.c:939
msgid "_Name"
msgstr "নাম (_N)"
-#: ../pidgin/gtkdialogs.c:724 ../pidgin/gtkdialogs.c:863
-#: ../pidgin/gtkdialogs.c:944
msgid "_Account"
msgstr "একাউন্ট (_A)"
-#: ../pidgin/gtkdialogs.c:871
msgid "Get User Info"
msgstr "ব্যবহারকারীর তথ্য গ্রহণ করুন"
-#: ../pidgin/gtkdialogs.c:873
msgid ""
"Please enter the username or alias of the person whose info you would like "
"to view."
@@ -17080,36 +12402,28 @@ msgstr ""
"অনুগ্রহ করে আপনি যে ব্যক্তির তথ্য প্রদর্শন করতে চান তার ব্যবহারকারী-নাম বা উপনাম "
"প্রবেশ করান।"
-#: ../pidgin/gtkdialogs.c:963
msgid "View User Log"
msgstr "ব্যবহারকারীর কার্যবিবরণী প্রদর্শন করুন"
-#: ../pidgin/gtkdialogs.c:985
msgid "Alias Contact"
msgstr "উপনামের যোগাযোগ"
-#: ../pidgin/gtkdialogs.c:986
msgid "Enter an alias for this contact."
msgstr "এই যোগাযোগের জন্য উপনাম প্রবেশ করান।"
-#: ../pidgin/gtkdialogs.c:1008
#, c-format
msgid "Enter an alias for %s."
msgstr "%s-এর জন্য উপনাম প্রবেশ করান।"
-#: ../pidgin/gtkdialogs.c:1010
msgid "Alias Buddy"
msgstr "উপনাম বন্ধু"
-#: ../pidgin/gtkdialogs.c:1031
msgid "Alias Chat"
msgstr "উপনামের আড্ডা"
-#: ../pidgin/gtkdialogs.c:1032
msgid "Enter an alias for this chat."
msgstr "এই আড্ডার জন্য একটি উপনাম প্রবেশ করান।"
-#: ../pidgin/gtkdialogs.c:1071
#, c-format
msgid ""
"You are about to remove the contact containing %s and %d other buddy from "
@@ -17124,30 +12438,24 @@ msgstr[1] ""
"আপনি আপনার বন্ধু তালিকা থেকে অন্য %s এবং %d বন্ধুগণের ধারনকারী যোগাযোগ অপসারণ "
"করতে পারেন। আপনি কি অব্যাহত রাখতে চান?"
-#: ../pidgin/gtkdialogs.c:1079
msgid "Remove Contact"
msgstr "যোগাযোগ অপসারণ করুন"
-#: ../pidgin/gtkdialogs.c:1082
msgid "_Remove Contact"
msgstr "যোগাযোগ অপসারণ করুন (_R)"
-#: ../pidgin/gtkdialogs.c:1113
#, c-format
msgid ""
"You are about to merge the group called %s into the group called %s. Do you "
"want to continue?"
msgstr "আপনি %1s নামের গ্রুপকে %2s গ্রুপে একত্রিত করছেন। আপনি কি অব্যাহত রাখতে চান?"
-#: ../pidgin/gtkdialogs.c:1120
msgid "Merge Groups"
msgstr "গ্রুপসমুহ একত্রিত করুন"
-#: ../pidgin/gtkdialogs.c:1123
msgid "_Merge Groups"
msgstr "গ্রুপসমুহ একত্রিত করুন (_M)"
-#: ../pidgin/gtkdialogs.c:1173
#, c-format
msgid ""
"You are about to remove the group %s and all its members from your buddy "
@@ -17156,15 +12464,12 @@ msgstr ""
"আপনি %s গ্রুপ ও এর সকল সদস্যকে আপনার বন্ধু তালিকা থেকে অপসারণ করতে পারেন। আপনি কি "
"অব্যাহত রাখতে চান?"
-#: ../pidgin/gtkdialogs.c:1176
msgid "Remove Group"
msgstr "গ্রুপ অপসারণ করুন"
-#: ../pidgin/gtkdialogs.c:1179
msgid "_Remove Group"
msgstr "গ্রুপ অপসারণ করুন (_R)"
-#: ../pidgin/gtkdialogs.c:1212
#, c-format
msgid ""
"You are about to remove %s from your buddy list. Do you want to continue?"
@@ -17172,15 +12477,12 @@ msgstr ""
"আপনি %s-কে আপনার বন্ধু তালিকা থেকে অপসারণ করতে পারেন। আপনি কি অব্যাহত রাখতে "
"চান?"
-#: ../pidgin/gtkdialogs.c:1215
msgid "Remove Buddy"
msgstr "বন্ধু অপসারণ করুন"
-#: ../pidgin/gtkdialogs.c:1218
msgid "_Remove Buddy"
msgstr "বন্ধু অপসাণ করুন (_R)"
-#: ../pidgin/gtkdialogs.c:1239
#, c-format
msgid ""
"You are about to remove the chat %s from your buddy list. Do you want to "
@@ -17188,266 +12490,204 @@ msgid ""
msgstr ""
"আপনি আপনার বন্ধু তালিকা হতে %s অপসারণ করতে পারেন। আপনি কি অব্যাহত রাখতে চান?"
-#: ../pidgin/gtkdialogs.c:1242
msgid "Remove Chat"
msgstr "আড্ডা অপসারণ করুন"
-#: ../pidgin/gtkdialogs.c:1245
msgid "_Remove Chat"
msgstr "আড্ডা অপসারণ করুন (_R)"
-#: ../pidgin/gtkdocklet.c:152
msgid "Right-click for more unread messages...\n"
msgstr "আরও অপঠিত বার্তার জন্য ডান ক্লিক করুন...\n"
-#: ../pidgin/gtkdocklet.c:533
msgid "_Change Status"
msgstr "অবস্থা পরিবর্তন করুন (_C)"
-#: ../pidgin/gtkdocklet.c:681
msgid "Show Buddy _List"
msgstr "বন্ধু তালিকা প্রদর্শন করুন (_L)"
-#: ../pidgin/gtkdocklet.c:686
msgid "_Unread Messages"
msgstr "অপঠিত বার্তাসমূহ (_U)"
-#: ../pidgin/gtkdocklet.c:707
msgid "New _Message..."
msgstr "নতুন বার্তা...(_M)"
-#: ../pidgin/gtkdocklet.c:721
msgid "_Accounts"
msgstr "একাউন্টগুলো (_A)"
-#: ../pidgin/gtkdocklet.c:722
msgid "Plu_gins"
msgstr "প্লাগইন (_g)"
-#: ../pidgin/gtkdocklet.c:723
msgid "Pr_eferences"
msgstr "প্রাধিকারসমূহ (_e)"
-#: ../pidgin/gtkdocklet.c:727
msgid "Mute _Sounds"
msgstr "শব্দ বন্ধ রাখুন (_S)"
-#: ../pidgin/gtkdocklet.c:734
msgid "_Blink on New Message"
msgstr "নতুন বার্তায় পিট পিট করুন (_B)"
-#: ../pidgin/gtkdocklet.c:744
msgid "_Quit"
msgstr "প্রস্থান করুন (_Q)"
-#: ../pidgin/gtkft.c:154
msgid "Not started"
msgstr "আরম্ভ হয়নি"
-#: ../pidgin/gtkft.c:276
msgid "<b>Receiving As:</b>"
msgstr "<b>যেভাবে গ্রহণ করছে:</b>"
-#: ../pidgin/gtkft.c:278
msgid "<b>Receiving From:</b>"
msgstr "<b>যার থেকে গ্রহণ করছে:</b>"
-#: ../pidgin/gtkft.c:282
msgid "<b>Sending To:</b>"
msgstr "<b>যাকে পাঠানো হচ্ছে:</b>"
-#: ../pidgin/gtkft.c:284
msgid "<b>Sending As:</b>"
msgstr "<b>যেভাবে পাঠানো হচ্ছে:</b>"
-#: ../pidgin/gtkft.c:500
msgid "There is no application configured to open this type of file."
msgstr "এই ধরনের ফাইল খোলার জন্য কোনো প্রয়োগন বিন্যাসিত নেই।"
-#: ../pidgin/gtkft.c:505
msgid "An error occurred while opening the file."
msgstr "ফাইলটি খোলার সময়ে একটি ত্রুটি ঘটেছে।"
-#: ../pidgin/gtkft.c:542
#, c-format
msgid "Error launching %s: %s"
msgstr "%s শুরুকরণে ত্রুটি: %s"
-#: ../pidgin/gtkft.c:551
#, c-format
msgid "Error running %s"
msgstr "%s চালুকরণে ত্রুটি"
-#: ../pidgin/gtkft.c:552
#, c-format
msgid "Process returned error code %d"
msgstr "প্রক্রিয়াটি %d ত্রুটি কোড ফেরত পাঠিয়েছে"
-#: ../pidgin/gtkft.c:699
msgid "Filename:"
msgstr "ফাইলের-নাম:"
-#: ../pidgin/gtkft.c:700
msgid "Local File:"
msgstr "স্থানীয় ফাইল:"
-#: ../pidgin/gtkft.c:702
msgid "Speed:"
msgstr "গতি:"
-#: ../pidgin/gtkft.c:703
msgid "Time Elapsed:"
msgstr "অতিবাহিত সময়:"
-#: ../pidgin/gtkft.c:704
msgid "Time Remaining:"
msgstr "অবশিষ্ট সময়:"
-#: ../pidgin/gtkft.c:783
msgid "Close this window when all transfers _finish"
msgstr "সকল স্থানান্তর শেষ হলে এই উইন্ডোটি বন্ধ করুন (_f)"
-#: ../pidgin/gtkft.c:793
msgid "C_lear finished transfers"
msgstr "সমাপ্ত স্থানান্তর পরিস্কার করুন (_l)"
#. "Download Details" arrow
-#: ../pidgin/gtkft.c:802
msgid "File transfer _details"
msgstr "ফাইল স্থানান্তরের বিবরণ (_d)"
#. Pause button
-#: ../pidgin/gtkft.c:820 ../pidgin/pidginstock.c:97
msgid "_Pause"
msgstr "বিরতি (_P)"
#. Resume button
-#: ../pidgin/gtkft.c:825
msgid "_Resume"
msgstr "পুনরায় শুরু করুন (_R)"
-#: ../pidgin/gtkimhtml.c:905
msgid "Paste as Plain _Text"
msgstr "সরল পাঠ হিসেবে প্রতিলেপন করুন (_T)"
-#: ../pidgin/gtkimhtml.c:922 ../pidgin/gtkimhtmltoolbar.c:1325
msgid "_Reset formatting"
msgstr "বিন্যাসকরণ পুনঃবিন্যাস করুন (_R)"
# tithi
-#: ../pidgin/gtkimhtml.c:930
msgid "Disable _smileys in selected text"
msgstr "নির্বাচিত পাঠে স্মাইলীগুলো নিষ্ক্রিয় করুন (_s)"
-#: ../pidgin/gtkimhtml.c:1490
msgid "Hyperlink color"
msgstr "হাইপারলিঙ্কের রং"
-#: ../pidgin/gtkimhtml.c:1491
msgid "Color to draw hyperlinks."
msgstr "হাইপারলিঙ্ক আঁকার রং।"
# fix me
-#: ../pidgin/gtkimhtml.c:1494
msgid "Hyperlink visited color"
msgstr "হাইপারলিঙ্কের পরিদর্শিত রং"
-#: ../pidgin/gtkimhtml.c:1495
msgid "Color to draw hyperlinks after it has been visited (or activated)."
msgstr "হাইপারলিঙ্ক পরিদর্শন (বা সক্রিয়) করার পর এটা আকাঁর রং।"
-#: ../pidgin/gtkimhtml.c:1498
msgid "Hyperlink prelight color"
msgstr "হাইপারলিঙ্ক প্রাক-হালকা রং"
-#: ../pidgin/gtkimhtml.c:1499
msgid "Color to draw hyperlinks when mouse is over them."
msgstr "হাইপারলিঙ্কের ওপর মাউস থাকাকালীন এটা আকার রং"
-#: ../pidgin/gtkimhtml.c:1502 ../pidgin/plugins/pidginrc.c:55
msgid "Sent Message Name Color"
msgstr "প্রেরিত বার্তার নামের রং"
# tithi
-#: ../pidgin/gtkimhtml.c:1503
msgid "Color to draw the name of a message you sent."
msgstr "আপনার প্রেরিত বার্তাসমূহের নাম আকার রং।"
-#: ../pidgin/gtkimhtml.c:1506 ../pidgin/plugins/pidginrc.c:56
msgid "Received Message Name Color"
msgstr "বার্তার নামের রং গ্রহণ করা হয়েছে"
# tithi
-#: ../pidgin/gtkimhtml.c:1507
msgid "Color to draw the name of a message you received."
msgstr "আপনার গৃহীত বার্তাসমূহের নাম আকার রং।"
# tithi
-#: ../pidgin/gtkimhtml.c:1510
msgid "\"Attention\" Name Color"
msgstr "\"মনোযোগ\" রং এর নাম"
# tithi
-#: ../pidgin/gtkimhtml.c:1511
msgid "Color to draw the name of a message you received containing your name."
msgstr "আপনার নাম ধারণকারী যে বার্তাটি আপনি গ্রহণ করেছেন তার নাম আকার রং।"
# tithi
-#: ../pidgin/gtkimhtml.c:1514 ../pidgin/plugins/pidginrc.c:58
msgid "Action Message Name Color"
msgstr "কার্য বার্তা নামের রং"
# tithi
-#: ../pidgin/gtkimhtml.c:1515 ../pidgin/gtkimhtml.c:1519
-#: ../pidgin/gtkimhtml.c:1523
msgid "Color to draw the name of an action message."
msgstr "একটি কর্ম বার্তার নাম আকার রং।"
# fix me tithi
-#: ../pidgin/gtkimhtml.c:1518
msgid "Action Message Name Color for Whispered Message"
msgstr "গোপনীয় বার্তার জন্য কার্য বার্তার নামের রং"
# fix- me tithi
-#: ../pidgin/gtkimhtml.c:1522
msgid "Whisper Message Name Color"
msgstr "গোপনীয় বার্তার নামের রং"
-#: ../pidgin/gtkimhtml.c:1532
msgid "Typing notification color"
msgstr "প্রজ্ঞাপন রং টাইপ করছে"
# tithi
-#: ../pidgin/gtkimhtml.c:1533
msgid "The color to use for the typing notification font"
msgstr "টাইপকরণ প্রজ্ঞাপন ফন্টের জন্য ব্যবহারের রং"
-#: ../pidgin/gtkimhtml.c:1536
msgid "Typing notification font"
msgstr "টাইপকরণ প্রজ্ঞাপন ফন্ট"
# tithi
-#: ../pidgin/gtkimhtml.c:1537
msgid "The font to use for the typing notification"
msgstr "টাইপকরণ প্রজ্ঞাপনের জন্য ব্যবহারের ফন্ট4"
-#: ../pidgin/gtkimhtml.c:1540 ../pidgin/gtkimhtml.c:1541
msgid "Enable typing notification"
msgstr "টাইপকরণ প্রজ্ঞাপন সক্রিয় করুন"
-#: ../pidgin/gtkimhtml.c:1777
msgid "_Copy Email Address"
msgstr "ই-মেইল ঠিকানা অনুলিপি করুন (_C)"
-#: ../pidgin/gtkimhtml.c:1789
msgid "_Open Link in Browser"
msgstr "ব্রাউজারে লিঙ্ক খুলুন (_O)"
-#: ../pidgin/gtkimhtml.c:1799
msgid "_Copy Link Location"
msgstr "লিঙ্ক অবস্থান অনুলিপি করুন (_C)"
-#: ../pidgin/gtkimhtml.c:3686
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
"\n"
@@ -17457,7 +12697,6 @@ msgstr ""
"\n"
"PNG তে পূর্বনির্ধারিত।"
-#: ../pidgin/gtkimhtml.c:3689
msgid ""
"Unrecognized file type\n"
"\n"
@@ -17467,7 +12706,6 @@ msgstr ""
"\n"
"PNG তে পূর্বনির্ধারিত।।"
-#: ../pidgin/gtkimhtml.c:3718
#, c-format
msgid ""
"<span size='larger' weight='bold'>Error saving image</span>\n"
@@ -17478,7 +12716,6 @@ msgstr ""
"\n"
"%s"
-#: ../pidgin/gtkimhtml.c:3721
#, c-format
msgid ""
"Error saving image\n"
@@ -17489,40 +12726,33 @@ msgstr ""
"\n"
"%s"
-#: ../pidgin/gtkimhtml.c:3802 ../pidgin/gtkimhtml.c:3814
msgid "Save Image"
msgstr "চিত্র সংরক্ষণ করুন"
-#: ../pidgin/gtkimhtml.c:3851
+#, c-format
msgid "_Save Image..."
msgstr "চিত্র সংরক্ষণ করুন... (_S)"
# tithi
-#: ../pidgin/gtkimhtml.c:3865
+#, c-format
msgid "_Add Custom Smiley..."
msgstr "পছন্দসই স্মাইলী যোগ করুন... (_A)"
-#: ../pidgin/gtkimhtmltoolbar.c:165
msgid "Select Font"
msgstr "ফন্ট নির্বাচন করুন"
-#: ../pidgin/gtkimhtmltoolbar.c:245
msgid "Select Text Color"
msgstr "পাঠ রং নির্বাচন করুন"
-#: ../pidgin/gtkimhtmltoolbar.c:325
msgid "Select Background Color"
msgstr "প্রেক্ষাপট রং নির্বাচন করুন"
-#: ../pidgin/gtkimhtmltoolbar.c:414
msgid "_URL"
msgstr "ইউআরএল (_U)"
-#: ../pidgin/gtkimhtmltoolbar.c:422
msgid "_Description"
msgstr "বিবরণ (_D)"
-#: ../pidgin/gtkimhtmltoolbar.c:425
msgid ""
"Please enter the URL and description of the link that you want to insert. "
"The description is optional."
@@ -17530,29 +12760,23 @@ msgstr ""
"অনুগ্রহ করে আপনি যে লিঙ্ক প্রবেশ করাতে চান তার ইউআরএল ও বিবরণ প্রবেশ করান। বিবরণ "
"ঐচ্ছিক।"
-#: ../pidgin/gtkimhtmltoolbar.c:429
msgid "Please enter the URL of the link that you want to insert."
msgstr "অনুগ্রহ করে আপনি যে লিঙ্ক প্রবেশ করাতে চান তার ইউআরএল প্রবেশ করান।"
-#: ../pidgin/gtkimhtmltoolbar.c:434 ../pidgin/gtkimhtmltoolbar.c:1232
msgid "Insert Link"
msgstr "লিঙ্ক প্রবেশ করান"
-#: ../pidgin/gtkimhtmltoolbar.c:438 ../pidgin/gtkimhtmltoolbar.c:1393
msgid "_Insert"
msgstr "প্রবেশ করান (_I)"
-#: ../pidgin/gtkimhtmltoolbar.c:519
#, c-format
msgid "Failed to store image: %s\n"
msgstr "চিত্র সংরক্ষণে ব্যর্থ: %s\n"
-#: ../pidgin/gtkimhtmltoolbar.c:545 ../pidgin/gtkimhtmltoolbar.c:555
msgid "Insert Image"
msgstr "চিত্র প্রবেশ করান"
# tithi
-#: ../pidgin/gtkimhtmltoolbar.c:684
#, c-format
msgid ""
"This smiley is disabled because a custom smiley exists for this shortcut:\n"
@@ -17561,156 +12785,121 @@ msgstr ""
"এই স্মাইলীটি নিষ্ক্রিয় কারণ এই শর্টকাটটির জন্য একটি পছন্দসই স্মাইলী বিদ্যমান:\n"
"%s"
-#: ../pidgin/gtkimhtmltoolbar.c:815
msgid "Smile!"
msgstr "হাসি!"
# fix-me tithi
-#: ../pidgin/gtkimhtmltoolbar.c:830
msgid "_Manage custom smileys"
msgstr "পছন্দসই স্মাইলীগুলো নিয়ন্ত্রণ করুন (_M)"
-#: ../pidgin/gtkimhtmltoolbar.c:867
msgid "This theme has no available smileys."
msgstr "এই থীমের কোনো স্মাইলি সহজলভ্য নেই।"
-#: ../pidgin/gtkimhtmltoolbar.c:973 ../pidgin/gtkimhtmltoolbar.c:1350
msgid "_Font"
msgstr "ফন্ট (_F)"
-#: ../pidgin/gtkimhtmltoolbar.c:1184
msgid "Group Items"
msgstr "গ্রুপের বিষয়োপকরণসমূহ"
# tithi
-#: ../pidgin/gtkimhtmltoolbar.c:1184
msgid "Ungroup Items"
msgstr "গ্রুপহীন বিষয়োপকরণসমূহ"
-#: ../pidgin/gtkimhtmltoolbar.c:1218 ../pidgin/plugins/convcolors.c:342
msgid "Bold"
msgstr "মোটা"
-#: ../pidgin/gtkimhtmltoolbar.c:1219 ../pidgin/plugins/convcolors.c:351
msgid "Italic"
msgstr "তীর্যক"
-#: ../pidgin/gtkimhtmltoolbar.c:1220 ../pidgin/plugins/convcolors.c:360
msgid "Underline"
msgstr "নিম্নরেখা"
# tithi
-#: ../pidgin/gtkimhtmltoolbar.c:1221
msgid "Strikethrough"
msgstr "অবচ্ছেদন রেখা"
# tithi
-#: ../pidgin/gtkimhtmltoolbar.c:1223
msgid "Increase Font Size"
msgstr "ফন্টের আকার বৃদ্ধি করুন"
# tithi
-#: ../pidgin/gtkimhtmltoolbar.c:1224
msgid "Decrease Font Size"
msgstr "ফন্টের আকার হ্রাস করুন"
-#: ../pidgin/gtkimhtmltoolbar.c:1226
msgid "Font Face"
msgstr "ফন্টের রুপ"
-#: ../pidgin/gtkimhtmltoolbar.c:1227
msgid "Background Color"
msgstr "প্রেক্ষাপট রং"
-#: ../pidgin/gtkimhtmltoolbar.c:1228
msgid "Foreground Color"
msgstr "সম্মুখভাগের রং"
# tithi
-#: ../pidgin/gtkimhtmltoolbar.c:1230
msgid "Reset Formatting"
msgstr "বিন্যাসকরণ পুনঃবিন্যাস করুন"
-#: ../pidgin/gtkimhtmltoolbar.c:1233
msgid "Insert IM Image"
msgstr "আইএম চিত্র প্রবেশ করান"
-#: ../pidgin/gtkimhtmltoolbar.c:1234
msgid "Insert Smiley"
msgstr "স্মাইলি প্রবেশ করান"
-#: ../pidgin/gtkimhtmltoolbar.c:1310
msgid "<b>_Bold</b>"
msgstr "<b>মোটা (_B)</b>"
-#: ../pidgin/gtkimhtmltoolbar.c:1311
msgid "<i>_Italic</i>"
msgstr "<i>তীর্যক (_I)</i>"
-#: ../pidgin/gtkimhtmltoolbar.c:1312
msgid "<u>_Underline</u>"
msgstr "<u>নিম্নরেখা (_U)</u>"
# tithi
-#: ../pidgin/gtkimhtmltoolbar.c:1313
msgid "<span strikethrough='true'>Strikethrough</span>"
msgstr "<span strikethrough='true'>অবচ্ছেদন রেখা</span>"
# fix me
-#: ../pidgin/gtkimhtmltoolbar.c:1314
msgid "<span size='larger'>_Larger</span>"
msgstr "<span size='larger'>অপেক্ষাকৃত বড় (_L)</span>"
-#: ../pidgin/gtkimhtmltoolbar.c:1316
msgid "_Normal"
msgstr "স্বাভাবিক (_N)"
# tithi
-#: ../pidgin/gtkimhtmltoolbar.c:1318
msgid "<span size='smaller'>_Smaller</span>"
msgstr "<span size='smaller'>অপেক্ষাকৃত ছোট (_S)</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'
-#: ../pidgin/gtkimhtmltoolbar.c:1322
msgid "_Font face"
msgstr "ফন্টের রুপ (_F)"
-#: ../pidgin/gtkimhtmltoolbar.c:1323
msgid "Foreground _color"
msgstr "সম্মুখভাগের রং (_c)"
-#: ../pidgin/gtkimhtmltoolbar.c:1324
msgid "Bac_kground color"
msgstr "প্রেক্ষাপটের রং (_k)"
-#: ../pidgin/gtkimhtmltoolbar.c:1401
msgid "_Image"
msgstr "চিত্র (_I)"
-#: ../pidgin/gtkimhtmltoolbar.c:1407
msgid "_Link"
msgstr "লিঙ্ক (_L)"
-#: ../pidgin/gtkimhtmltoolbar.c:1413
msgid "_Horizontal rule"
msgstr "অনুভূমিক নিয়ম (_H)"
-#: ../pidgin/gtkimhtmltoolbar.c:1435
msgid "_Smile!"
msgstr "হাসি! (_S)"
-#: ../pidgin/gtklog.c:245
msgid "Log Deletion Failed"
msgstr "কার্যবিবরণী শনাক্তকরণ ব্যর্থ হয়েছে"
# tithi
-#: ../pidgin/gtklog.c:246
msgid "Check permissions and try again."
msgstr "অনুমতি যাচাই করুন এবং আবার চেষ্টা করুন।"
-#: ../pidgin/gtklog.c:292
#, c-format
msgid ""
"Are you sure you want to permanently delete the log of the conversation with "
@@ -17719,7 +12908,6 @@ msgstr ""
"আপনি কি নিশ্চিত আপনি স্থায়ীভাবে %2s তে শুরু হওয়া কথোপকথনের কার্যবিবরণী %1s সহ মুছে "
"ফেলতে চান?"
-#: ../pidgin/gtklog.c:303
#, c-format
msgid ""
"Are you sure you want to permanently delete the log of the conversation in %"
@@ -17728,7 +12916,6 @@ msgstr ""
"আপনি কি নিশ্চিত আপনি স্থায়ীভাবে %2s তে শুরু হওয়া কথোপকথনের কার্যবিবরণী %1s এ মুছে "
"ফেলতে চান?"
-#: ../pidgin/gtklog.c:308
#, c-format
msgid ""
"Are you sure you want to permanently delete the system log which started at %"
@@ -17736,38 +12923,31 @@ msgid ""
msgstr ""
"আপনি কি নিশ্চিত আপনি স্থায়ীভাবে %1s তে শুরু হওয়া সিস্টেম কার্যবিবরণী মুছে ফেলতে চান?"
-#: ../pidgin/gtklog.c:323
msgid "Delete Log?"
msgstr "কার্যবিবরণী কি মুছতে চান?"
-#: ../pidgin/gtklog.c:334
msgid "Delete Log..."
msgstr "কার্যবিবরণী মুছুন..."
# fix me
-#: ../pidgin/gtklog.c:453
#, c-format
msgid "<span size='larger' weight='bold'>Conversation in %s on %s</span>"
msgstr "<span size='larger' weight='bold'>%s এর উপর %s এ কথোপকথন</span>"
# fix me
-#: ../pidgin/gtklog.c:456
#, c-format
msgid "<span size='larger' weight='bold'>Conversation with %s on %s</span>"
msgstr "<span size='larger' weight='bold'>%s এর উপর %s এর সাথে কথোপকথন</span>"
#. Steal the "HELP" response and use it to trigger browsing to the logs folder
-#: ../pidgin/gtklog.c:581
msgid "_Browse logs folder"
msgstr "কার্যবিবরণীর ফোল্ডার ব্রাউজ করুন (_B)"
-#: ../pidgin/gtkmain.c:384
#, c-format
msgid "%s %s. Try `%s -h' for more information.\n"
msgstr "%1s %2s। আরও তথ্যের জন্য `%3s -h' এ চেষ্টা করুন।\n"
# fix me
-#: ../pidgin/gtkmain.c:387
#, c-format
msgid ""
"%s %s\n"
@@ -17800,7 +12980,6 @@ msgstr ""
" -v, --version বর্তমান সংস্করণ প্রদর্শন করুন এবং ত্যাগ করুন\n"
# fix me
-#: ../pidgin/gtkmain.c:400
#, c-format
msgid ""
"%s %s\n"
@@ -17830,7 +13009,6 @@ msgstr ""
" এটা ব্যতিত শুধুমাত্র প্রথম একাউন্ট সক্রিয় হবে)। \n"
" -v, --version বর্তমান সংস্করণ প্রদর্শন করুন এবং ত্যাগ করুন\n"
-#: ../pidgin/gtkmain.c:530
#, c-format
msgid ""
"%s %s has segfaulted and attempted to dump a core file.\n"
@@ -17859,48 +13037,42 @@ msgstr ""
#. Translators may want to transliterate the name.
#. It is not to be translated.
-#: ../pidgin/gtkmain.c:720 ../pidgin/pidgin.h:51
msgid "Pidgin"
msgstr "পিজিন"
-#: ../pidgin/gtknotify.c:362
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
+
msgid "Open All Messages"
msgstr "সকল বার্তা খুলুন"
-#: ../pidgin/gtknotify.c:420
msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
msgstr "<span weight=\"bold\" size=\"larger\">আপনার মেইল আছে!</span>"
-#: ../pidgin/gtknotify.c:572
#, c-format
msgid "%s has %d new message."
msgid_plural "%s has %d new messages."
msgstr[0] "%s-এর %dটি নতুন বার্তা আছে।"
msgstr[1] "%s-এর %dগুলো নতুন বার্তা আছে।"
-#: ../pidgin/gtknotify.c:601
#, c-format
msgid "<b>%d new email.</b>"
msgid_plural "<b>%d new emails.</b>"
msgstr[0] " <b>%d টি নতুন ই-মেইল।</b>"
msgstr[1] "<b>%dগুলো নতুন ই-মেইল।</b>"
-#: ../pidgin/gtknotify.c:1032
#, c-format
msgid "The browser command \"%s\" is invalid."
msgstr "ব্রাউজার নির্দেশ \"%s\" অবৈধ।"
-#: ../pidgin/gtknotify.c:1034 ../pidgin/gtknotify.c:1046
-#: ../pidgin/gtknotify.c:1059 ../pidgin/gtknotify.c:1196
msgid "Unable to open URL"
msgstr "ইউআরএল খুলতে সমর্থ নয়"
-#: ../pidgin/gtknotify.c:1044 ../pidgin/gtknotify.c:1057
#, c-format
msgid "Error launching \"%s\": %s"
msgstr "\"%1s\" শুরুকরণে ত্রুটি: %2s"
-#: ../pidgin/gtknotify.c:1197
msgid ""
"The 'Manual' browser command has been chosen, but no command has been set."
msgstr ""
@@ -17908,25 +13080,20 @@ msgstr ""
"হয়নি।"
# tithi
-#: ../pidgin/gtkplugin.c:278
msgid "The following plugins will be unloaded."
msgstr "নিম্নোক্ত প্লাগইনগুলো লোড মুক্ত করা হবে।"
# tithi
-#: ../pidgin/gtkplugin.c:297
msgid "Multiple plugins will be unloaded."
msgstr "বহুবিধ প্লাগইনগুলো লোড মুক্ত করা হবে।"
-#: ../pidgin/gtkplugin.c:301
msgid "Unload Plugins"
msgstr "প্লাগইন লোড মুক্ত করুন"
-#: ../pidgin/gtkplugin.c:318
msgid "Could not unload plugin"
msgstr "প্লাগইন লোড মুক্ত করা যায়নি"
# tithi
-#: ../pidgin/gtkplugin.c:319
msgid ""
"The plugin could not be unloaded now, but will be disabled at the next "
"startup."
@@ -17934,7 +13101,6 @@ msgstr ""
"এই প্লাগইনটি এখন লোড মুক্ত করা যাচ্ছে না, কিন্তু পরবর্তী শুরুতে নিষ্ক্রিয় করা হবে।"
# tithi
-#: ../pidgin/gtkplugin.c:456
#, c-format
msgid ""
"<span foreground=\"red\" weight=\"bold\">Error: %s\n"
@@ -17943,139 +13109,106 @@ msgstr ""
"<span foreground=\"red\" weight=\"bold\">ত্রুটি: %s\n"
"হালনাগাদের জন্য প্লাগইন ওয়েবসাইট পরীক্ষা করুন।</span>"
-#: ../pidgin/gtkplugin.c:585
msgid "Author"
msgstr "লেখক"
-#: ../pidgin/gtkplugin.c:663
msgid "<b>Written by:</b>"
msgstr "<b>লেখক:</b>"
-#: ../pidgin/gtkplugin.c:687
msgid "<b>Web site:</b>"
msgstr "<b>ওয়েব সাইট:</b>"
-#: ../pidgin/gtkplugin.c:696
msgid "<b>Filename:</b>"
msgstr "<b>ফাইলনাম:</b>"
-#: ../pidgin/gtkplugin.c:724
msgid "Configure Pl_ugin"
msgstr "প্লাগইন পছন্দসই বিন্যাস করুন (_u)"
-#: ../pidgin/gtkplugin.c:792
msgid "<b>Plugin Details</b>"
msgstr "<b>প্লাগইনের বর্ণনা</b>"
-#: ../pidgin/gtkpounce.c:158
msgid "Select a file"
msgstr "একটি ফাইল নির্বাচন করুন"
#. Create the "Pounce on Whom" frame.
-#: ../pidgin/gtkpounce.c:553
msgid "Pounce on Whom"
msgstr "কাকে পাউন্স করেন"
-#: ../pidgin/gtkpounce.c:580
msgid "_Buddy name:"
msgstr "বন্ধুর নাম (_B):"
-#: ../pidgin/gtkpounce.c:614
msgid "Si_gns on"
msgstr "সাইন অন (_g)"
-#: ../pidgin/gtkpounce.c:616
msgid "Signs o_ff"
msgstr "সাইন অফ (_f)"
-#: ../pidgin/gtkpounce.c:618
msgid "Goes a_way"
msgstr "অনুপস্থিত (_w)"
-#: ../pidgin/gtkpounce.c:620
msgid "Ret_urns from away"
msgstr "অনুপস্থিত অবস্থা থেকে ফিরে এসেছে (_u)"
-#: ../pidgin/gtkpounce.c:622
msgid "Becomes _idle"
msgstr "এখন অলস (_i)"
-#: ../pidgin/gtkpounce.c:624
msgid "Is no longer i_dle"
msgstr "আর অলস থাকবে না (_d)"
-#: ../pidgin/gtkpounce.c:626
msgid "Starts _typing"
msgstr "টাইপ শুরু করেছে (_t)"
# tithi
-#: ../pidgin/gtkpounce.c:628
msgid "P_auses while typing"
msgstr "টাইপের সময় বন্ধ রাখুন (_a)"
-#: ../pidgin/gtkpounce.c:630
msgid "Stops t_yping"
msgstr "টাইপ বন্ধ করছে (_y)"
-#: ../pidgin/gtkpounce.c:632
msgid "Sends a _message"
msgstr "বার্তা পাঠায় (_m)"
-#: ../pidgin/gtkpounce.c:675
msgid "Ope_n an IM window"
msgstr "একটি আইএম উইন্ডো খুলুন (_n)"
-#: ../pidgin/gtkpounce.c:677
msgid "_Pop up a notification"
msgstr "একটি প্রজ্ঞাপন পপআপ করুন (_P)"
-#: ../pidgin/gtkpounce.c:679
msgid "Send a _message"
msgstr "একটি বার্তা পাঠান (_m)"
-#: ../pidgin/gtkpounce.c:681
msgid "E_xecute a command"
msgstr "একটি নির্দেশ কার্যকর করুন (_x)"
-#: ../pidgin/gtkpounce.c:683
msgid "P_lay a sound"
msgstr "শব্দ বাজান (_l)"
-#: ../pidgin/gtkpounce.c:689
msgid "Brows_e..."
msgstr "ব্রাউজ করুন... (_e)"
-#: ../pidgin/gtkpounce.c:693
msgid "Br_owse..."
msgstr "ব্রাউজ করুন... (_o)"
-#: ../pidgin/gtkpounce.c:694 ../pidgin/gtkprefs.c:2031
msgid "Pre_view"
msgstr "প্রাকদর্শন (_v)"
-#: ../pidgin/gtkpounce.c:834
msgid "P_ounce only when my status is not Available"
msgstr "আমার অবস্থা যখন সহজলভ্য নয় তখন পাউন্স করুন (_o)"
# tithi
-#: ../pidgin/gtkpounce.c:839
msgid "_Recurring"
msgstr "পুনরাবৃত্ত করছে (_R)"
-#: ../pidgin/gtkpounce.c:1284
msgid "Pounce Target"
msgstr "পাউন্সের লক্ষ্য"
-#: ../pidgin/gtkprefs.c:458
msgid "Smiley theme failed to unpack."
msgstr "স্মাইলী থীম প্যাকহীন করতে ব্যর্থ হয়েছে"
# tithi
-#: ../pidgin/gtkprefs.c:593
msgid "Install Theme"
msgstr "থীম সংস্থাপন করুন"
-#: ../pidgin/gtkprefs.c:646
msgid ""
"Select a smiley theme that you would like to use from the list below. New "
"themes can be installed by dragging and dropping them onto the theme list."
@@ -18083,154 +13216,118 @@ msgstr ""
"আপনি যে স্মাইলি থীম ব্যবহার করতে চান তা নিম্নবর্তী তালিকা থেকে বাছাই করুন। নতুন "
"থীম থীমের তালিকায় টানা ও ছাড়ার মাধ্যমে তাদের সংস্থাপন করতে পারেন।"
-#: ../pidgin/gtkprefs.c:681
msgid "Icon"
msgstr "আইকন"
# tithi
-#: ../pidgin/gtkprefs.c:891
msgid "Keyboard Shortcuts"
msgstr "কীবোর্ড শর্টকাট"
-#: ../pidgin/gtkprefs.c:911
msgid "Cl_ose conversations with the Escape key"
msgstr "Escape কী দ্বারা কথোপকথনসমূহ বন্ধ করুন (_o)"
-#: ../pidgin/gtkprefs.c:940
msgid "System Tray Icon"
msgstr "সিস্টেম ট্রে এর আইকন"
-#: ../pidgin/gtkprefs.c:941
msgid "_Show system tray icon:"
msgstr "সিস্টেম ট্রে এর আইকন প্রদর্শন করুন (_S):"
-#: ../pidgin/gtkprefs.c:944
msgid "On unread messages"
msgstr "অপঠিত বার্তাসমূহে"
-#: ../pidgin/gtkprefs.c:950
msgid "Conversation Window Hiding"
msgstr "কথোপকথন উইন্ডো লুকিয়ে ফেলছে"
-#: ../pidgin/gtkprefs.c:951
msgid "_Hide new IM conversations:"
msgstr "নতুন কথোপকথন IM লুকিয়ে রাখুন (_H):"
-#: ../pidgin/gtkprefs.c:954 ../pidgin/gtkprefs.c:2095
msgid "When away"
msgstr "যখন অনুপস্থিত"
#. All the tab options!
-#: ../pidgin/gtkprefs.c:962
msgid "Tabs"
msgstr "ট্যাবসমূহ"
-#: ../pidgin/gtkprefs.c:964
msgid "Show IMs and chats in _tabbed windows"
msgstr "আইএম ও আড্ডাসমূহ ট্যাবকৃত উইন্ডোতে প্রদর্শন করুন (_t)"
-#: ../pidgin/gtkprefs.c:978
msgid "Show close b_utton on tabs"
msgstr "ট্যাবে বন্ধ বোতাম প্রদর্শন করুন (_u)"
-#: ../pidgin/gtkprefs.c:981
msgid "_Placement:"
msgstr "অবস্থান (_P):"
-#: ../pidgin/gtkprefs.c:983
msgid "Top"
msgstr "উপর"
-#: ../pidgin/gtkprefs.c:984
msgid "Bottom"
msgstr "নীচ"
-#: ../pidgin/gtkprefs.c:985
msgid "Left"
msgstr "বাম"
-#: ../pidgin/gtkprefs.c:986
msgid "Right"
msgstr "ডান"
-#: ../pidgin/gtkprefs.c:988
msgid "Left Vertical"
msgstr "বাম উলম্ব"
-#: ../pidgin/gtkprefs.c:989
msgid "Right Vertical"
msgstr "ডান উলম্ব"
-#: ../pidgin/gtkprefs.c:996
msgid "N_ew conversations:"
msgstr "নতুন কথোপকথন (_e):"
-#: ../pidgin/gtkprefs.c:1045
msgid "Show _formatting on incoming messages"
msgstr "আগত বার্তাসমূহে বিন্যাসকরণ প্রদর্শন করুন (_f)"
# tithi
-#: ../pidgin/gtkprefs.c:1047
msgid "Close IMs immediately when the tab is closed"
msgstr "ট্যাব বন্ধ করার সময় IM তাৎ‍ক্ষণিকভাবে বন্ধ করুন"
-#: ../pidgin/gtkprefs.c:1050
msgid "Show _detailed information"
msgstr "বিস্তারিত তথ্য প্রদর্শন করুন (_d)"
-#: ../pidgin/gtkprefs.c:1052
msgid "Enable buddy ic_on animation"
msgstr "এ্যানিমেশনে বন্ধুর আইকন সক্রিয় করুন (_o)"
-#: ../pidgin/gtkprefs.c:1059
msgid "_Notify buddies that you are typing to them"
msgstr "আপনি যা টাইপ করছেন তা বন্ধুদের অবগত করুন (_N)"
-#: ../pidgin/gtkprefs.c:1062
msgid "Highlight _misspelled words"
msgstr "ভুল বানানের শব্দ হাইলাইট করুন (_m)"
# tithi
-#: ../pidgin/gtkprefs.c:1066
msgid "Use smooth-scrolling"
msgstr "মসৃন-স্ক্রলিং ব্যবহার করুন"
-#: ../pidgin/gtkprefs.c:1069
msgid "F_lash window when IMs are received"
msgstr "আইএম গ্রহণ করলে উইন্ডো ফ্ল্যাশ দিন (_l)"
-#: ../pidgin/gtkprefs.c:1071
msgid "Minimi_ze new conversation windows"
msgstr "নতুন কথোপকথন উইন্ডো নূন্যতম করুন (_z)"
# tithi
-#: ../pidgin/gtkprefs.c:1075
msgid "Minimum input area height in lines:"
msgstr "লাইনের ন্যুনতম ইনপুট এলাকার উচ্চতা:"
-#: ../pidgin/gtkprefs.c:1081
msgid "Font"
msgstr "ফন্ট"
# tithi
-#: ../pidgin/gtkprefs.c:1083
msgid "Use document font from _theme"
msgstr "থীম থেকে নথির ফন্ট ব্যবহার করুন (_t)"
# tithi
-#: ../pidgin/gtkprefs.c:1085
msgid "Use font from _theme"
msgstr "থীম থেকে ফন্ট ব্যবহার করুন (_t)"
-#: ../pidgin/gtkprefs.c:1091
msgid "Conversation _font:"
msgstr "কথোপকথন ফন্ট (_f):"
-#: ../pidgin/gtkprefs.c:1098
msgid "Default Formatting"
msgstr "পুর্বনির্ধারিত বিন্যাসকরণ"
-#: ../pidgin/gtkprefs.c:1117
msgid ""
"This is how your outgoing message text will appear when you use protocols "
"that support formatting."
@@ -18239,68 +13336,53 @@ msgstr ""
"এমনভাবে উপস্থিত হবে।"
# tithi
-#: ../pidgin/gtkprefs.c:1177
msgid "Cannot start proxy configuration program."
msgstr "প্রক্সি বিন্যাসন প্রোগ্রাম শুরু করতে পারে না।"
-#: ../pidgin/gtkprefs.c:1189
msgid "Cannot start browser configuration program."
msgstr "ব্রাউজারের বিন্যাসন প্রোগ্রাম শুরু করতে পারে না।"
-#: ../pidgin/gtkprefs.c:1209
msgid "ST_UN server:"
msgstr "STUN সার্ভার (_U):"
# tithi
-#: ../pidgin/gtkprefs.c:1221
msgid "<span style=\"italic\">Example: stunserver.org</span>"
msgstr "<span style=\"italic\">উদাহরণ: স্ট্যানসার্ভার.অর্গ</span>"
-#: ../pidgin/gtkprefs.c:1225
msgid "_Autodetect IP address"
msgstr "স্বয়ং-শনাক্ত আইপি ঠিকানা (_A)"
-#: ../pidgin/gtkprefs.c:1234
msgid "Public _IP:"
msgstr "সর্বসাধারণ আইপি (_I):"
-#: ../pidgin/gtkprefs.c:1265
msgid "Ports"
msgstr "পোর্টসমূহ"
# tithi
-#: ../pidgin/gtkprefs.c:1268
msgid "_Enable automatic router port forwarding"
msgstr "স্বয়ংক্রিয় রাউটার পোর্ট অগ্রগমন সক্রিয় করুন (_E)"
-#: ../pidgin/gtkprefs.c:1271
msgid "_Manually specify range of ports to listen on"
msgstr "শুনতে পোর্টের সীমা নিজের হাতে উল্লেখ করুন (_M)"
-#: ../pidgin/gtkprefs.c:1274
msgid "_Start port:"
msgstr "শুরুর পোর্ট (_S):"
-#: ../pidgin/gtkprefs.c:1281
msgid "_End port:"
msgstr "শেষ পোর্ট (_E):"
-#: ../pidgin/gtkprefs.c:1289
msgid "Proxy Server &amp; Browser"
msgstr "প্রক্সি সার্ভার &amp; ব্রাউজার"
# tithi
-#: ../pidgin/gtkprefs.c:1297
msgid "<b>Proxy configuration program was not found.</b>"
msgstr "<b>প্রক্সির পছন্দসই বিন্যাসন প্রোগ্রাম খুঁজে পাওয়া যায়নি।</b>"
# tithi
-#: ../pidgin/gtkprefs.c:1305
msgid "<b>Browser configuration program was not found.</b>"
msgstr "<b>ব্রাউজারের পছন্দসই বিন্যাসন প্রোগ্রাম খুঁজে পাওয়া যায়নি।</b>"
# tithi
-#: ../pidgin/gtkprefs.c:1310
msgid ""
"Proxy & Browser preferences are configured\n"
"in GNOME Preferences"
@@ -18308,100 +13390,80 @@ msgstr ""
"প্রক্সি ও ব্রাউজারের প্রাধিকারসমূহ \n"
"GNOME প্রাধিকারসমূহে পছন্দসই বিন্যাসন করা হয়েছে"
-#: ../pidgin/gtkprefs.c:1317
msgid "Configure _Proxy"
msgstr "প্রক্সি পছন্দসই বিন্যাস করুন (_P)"
-#: ../pidgin/gtkprefs.c:1322
msgid "Configure _Browser"
msgstr "ব্রাউজার পছন্দসই বিন্যাস করুন (_B)"
-#: ../pidgin/gtkprefs.c:1328
msgid "Proxy Server"
msgstr "প্রক্সি সার্ভার"
-#: ../pidgin/gtkprefs.c:1333
msgid "No proxy"
msgstr "কোনো প্রক্সি নেই"
-#: ../pidgin/gtkprefs.c:1389
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
msgid "_User:"
msgstr "ব্যবহারকারী (_U):"
# tithi
-#: ../pidgin/gtkprefs.c:1477
msgid "Seamonkey"
msgstr "সিমাঙ্কি"
-#: ../pidgin/gtkprefs.c:1478
msgid "Opera"
msgstr "অপেরা"
-#: ../pidgin/gtkprefs.c:1479
msgid "Netscape"
msgstr "নেটস্কেপ"
-#: ../pidgin/gtkprefs.c:1480
msgid "Mozilla"
msgstr "মজিলা"
-#: ../pidgin/gtkprefs.c:1481
msgid "Konqueror"
msgstr "কনকোয়েরর"
-#: ../pidgin/gtkprefs.c:1482
msgid "Desktop Default"
msgstr "ডেস্কটপ পূর্বনির্ধারিত"
-#: ../pidgin/gtkprefs.c:1483
msgid "GNOME Default"
msgstr "GNOME পূর্বনির্ধারিত"
-#: ../pidgin/gtkprefs.c:1484
msgid "Galeon"
msgstr "গ্যালিওন"
-#: ../pidgin/gtkprefs.c:1485
msgid "Firefox"
msgstr "ফায়ারফক্স"
-#: ../pidgin/gtkprefs.c:1486
msgid "Firebird"
msgstr "ফায়ারবার্ড"
-#: ../pidgin/gtkprefs.c:1487
msgid "Epiphany"
msgstr "ইপিফ্যানি"
-#: ../pidgin/gtkprefs.c:1496
msgid "Manual"
msgstr "সহায়িকা"
-#: ../pidgin/gtkprefs.c:1557
msgid "Browser Selection"
msgstr "ব্রাউজার নির্বাচন"
-#: ../pidgin/gtkprefs.c:1561
msgid "_Browser:"
msgstr "ব্রাউজার (_B):"
-#: ../pidgin/gtkprefs.c:1569
msgid "_Open link in:"
msgstr "লিঙ্ক খুলুন (_O):"
-#: ../pidgin/gtkprefs.c:1571
msgid "Browser default"
msgstr "ব্রাউজার পূর্বনির্ধারিত"
-#: ../pidgin/gtkprefs.c:1572
msgid "Existing window"
msgstr "বিদ্যমান উইন্ডো"
-#: ../pidgin/gtkprefs.c:1574
msgid "New tab"
msgstr "নতুন ট্যাব"
-#: ../pidgin/gtkprefs.c:1591
#, c-format
msgid ""
"_Manual:\n"
@@ -18410,63 +13472,54 @@ msgstr ""
"সহায়িকা (_M):\n"
"(URL এর জন্য %s)"
-#: ../pidgin/gtkprefs.c:1617
msgid "Log _format:"
msgstr "কার্যবিবরণী বিন্যাস (_f):"
-#: ../pidgin/gtkprefs.c:1622
msgid "Log all _instant messages"
msgstr "সব তাৎক্ষণিক বার্তাসমূহ লগ করুন (_i)"
-#: ../pidgin/gtkprefs.c:1624
msgid "Log all c_hats"
msgstr "সকল আড্ডা লগ করুন (_h)"
-#: ../pidgin/gtkprefs.c:1626
msgid "Log all _status changes to system log"
msgstr "সব অবস্থার পরিবর্তনসমূহ সিস্টেমের কার্যবিবরণীতে লগ করুন (_s)"
-#: ../pidgin/gtkprefs.c:1776
msgid "Sound Selection"
msgstr "শব্দ নির্বাচন"
-#: ../pidgin/gtkprefs.c:1786
+#, c-format
msgid "Quietest"
msgstr "একদম চুপচাপ"
-#: ../pidgin/gtkprefs.c:1788
+#, c-format
msgid "Quieter"
msgstr "অপেক্ষাকৃত চুপচাপ"
-#: ../pidgin/gtkprefs.c:1790
+#, c-format
msgid "Quiet"
msgstr "চুপচাপ"
-#: ../pidgin/gtkprefs.c:1794
+#, c-format
msgid "Loud"
msgstr "জোরে"
-#: ../pidgin/gtkprefs.c:1796
+#, c-format
msgid "Louder"
msgstr "অপেক্ষাকৃত জোরে"
-#: ../pidgin/gtkprefs.c:1798
+#, c-format
msgid "Loudest"
msgstr "একদম জোরে"
-#: ../pidgin/gtkprefs.c:1880
msgid "_Method:"
msgstr "প্রক্রিয়া (_M):"
-#: ../pidgin/gtkprefs.c:1882
msgid "Console beep"
msgstr "কনসোল বীপ"
-#: ../pidgin/gtkprefs.c:1889
msgid "No sounds"
msgstr "কোনো শব্দ নেই"
-#: ../pidgin/gtkprefs.c:1902
#, c-format
msgid ""
"Sound c_ommand:\n"
@@ -18475,283 +13528,218 @@ msgstr ""
"শব্দের নির্দেশ (_o):\n"
"(ফাইল-নামের জন্য %s)"
-#: ../pidgin/gtkprefs.c:1912
msgid "M_ute sounds"
msgstr "শব্দ বন্ধ করুন (_u)"
-#: ../pidgin/gtkprefs.c:1915
msgid "Sounds when conversation has _focus"
msgstr "কথোপকথন ফোকাস করার শব্দ"
-#: ../pidgin/gtkprefs.c:1917
msgid "_Enable sounds:"
msgstr "শব্দ সক্রিয় করুন (_E):"
-#: ../pidgin/gtkprefs.c:1934
msgid "V_olume:"
msgstr "ভলিউম (_o):"
-#: ../pidgin/gtkprefs.c:2001
msgid "Play"
msgstr "বাজাও"
-#: ../pidgin/gtkprefs.c:2027
msgid "_Browse..."
msgstr "ব্রাউজ করুন... (_B)"
-#: ../pidgin/gtkprefs.c:2035
msgid "_Reset"
msgstr "পুনঃ বিন্যাস করুন (_R)"
-#: ../pidgin/gtkprefs.c:2078
msgid "_Report idle time:"
msgstr "অলস সময়ের প্রতিবেদন দিন (_R)"
# tithi
-#: ../pidgin/gtkprefs.c:2083
msgid "Based on keyboard or mouse use"
msgstr "কীবোর্ড বা মাউস ব্যবহারের উপর ভিত্তি করে"
-#: ../pidgin/gtkprefs.c:2092
msgid "_Auto-reply:"
msgstr "স্বয়ংক্রিয়-উত্তর (_A):"
-#: ../pidgin/gtkprefs.c:2096
msgid "When both away and idle"
msgstr "যখন উভয়ই অনুপস্থিত এবং অলস"
#. Auto-away stuff
-#: ../pidgin/gtkprefs.c:2102
msgid "Auto-away"
msgstr "স্বয়ংক্রিয়ভাবে অনুপস্থিতি"
-#: ../pidgin/gtkprefs.c:2104
msgid "Change status when _idle"
msgstr "অলস থাকলে অবস্থা পরিবর্তন করুন (_i)"
-#: ../pidgin/gtkprefs.c:2108
msgid "_Minutes before becoming idle:"
msgstr "অলস হওয়ার পূর্বের মিনিট (_M):"
-#: ../pidgin/gtkprefs.c:2115
msgid "Change _status to:"
msgstr "অবস্থা পরিবর্তন করুন (_s):"
# tithi
#. Signon status stuff
-#: ../pidgin/gtkprefs.c:2128
msgid "Status at Startup"
msgstr "সূচনার অবস্থা"
# tithi
-#: ../pidgin/gtkprefs.c:2130
msgid "Use status from last _exit at startup"
msgstr "সর্বশেষ ত্যাগের অবস্থা শুরুতে ব্যবহার করুন (_e)"
# tithi
-#: ../pidgin/gtkprefs.c:2137
msgid "Status to a_pply at startup:"
msgstr "সূচনাতে প্রয়োগ করার অবস্থা (_p):"
-#: ../pidgin/gtkprefs.c:2166
msgid "Interface"
msgstr "ইন্টারফেস"
-#: ../pidgin/gtkprefs.c:2168
msgid "Smiley Themes"
msgstr "স্মাইলী থীমসমূহ"
-#: ../pidgin/gtkprefs.c:2175
msgid "Browser"
msgstr "ব্রাউজার"
-#: ../pidgin/gtkprefs.c:2179
msgid "Status / Idle"
msgstr "অবস্থা / অলস"
-#: ../pidgin/gtkprivacy.c:81
msgid "Allow all users to contact me"
msgstr "সব ব্যবহারকারীকে আমার সাথে যোগাযোগ করার অনুমতি দিন"
-#: ../pidgin/gtkprivacy.c:82
msgid "Allow only the users on my buddy list"
msgstr "শুধুমাত্র আমার তালিকার বন্ধুদের অনুমতি দিন"
-#: ../pidgin/gtkprivacy.c:83
msgid "Allow only the users below"
msgstr "শুধুমাত্র নিম্নোলিখিত ব্যবহারকারীদের অনুমতি দিন"
-#: ../pidgin/gtkprivacy.c:84
msgid "Block all users"
msgstr "সব ব্যবহারকারীদের ব্লক করুন"
-#: ../pidgin/gtkprivacy.c:85
msgid "Block only the users below"
msgstr "শুধুমাত্র নিম্নোলিখিত ব্যবহারকারীদের ব্লক করুন"
-#: ../pidgin/gtkprivacy.c:352
msgid "Privacy"
msgstr "ব্যক্তিগত"
-#: ../pidgin/gtkprivacy.c:362
msgid "Changes to privacy settings take effect immediately."
msgstr "ব্যক্তিগত বিন্যাসনসমূহে পরিবর্তনসমূহ তাৎ‍ক্ষণিকভাবে কার্যকর হবে।"
-#: ../pidgin/gtkprivacy.c:371
msgid "Set privacy for:"
msgstr "এর জন্য গোপনীয়তা নির্ধারণ করুন:"
#. Remove All button
-#: ../pidgin/gtkprivacy.c:417
msgid "Remove Al_l"
msgstr "সব অপসারণ করুন (_l)"
-#: ../pidgin/gtkprivacy.c:503 ../pidgin/gtkprivacy.c:520
msgid "Permit User"
msgstr "ব্যবহারকারীকে অনুমতি দিন"
-#: ../pidgin/gtkprivacy.c:504
msgid "Type a user you permit to contact you."
msgstr "আপনি অনুমতি দেন এমন ব্যবহারকারীকে আপনার সাথে যোগাযোগের জন্য টাইপ করুন।"
-#: ../pidgin/gtkprivacy.c:505
msgid "Please enter the name of the user you wish to be able to contact you."
msgstr ""
"অনুগ।রহ করে আপনার সাথে যোগাযোগে অনুমতি দিতে চান এমন ব্যবহারকারীর নাম প্রবেশ করান।"
-#: ../pidgin/gtkprivacy.c:508 ../pidgin/gtkprivacy.c:524
msgid "_Permit"
msgstr "অনুমতি দিন (_P)"
-#: ../pidgin/gtkprivacy.c:514
#, c-format
msgid "Allow %s to contact you?"
msgstr "আপনার সাথে যোগাযোগের জন্যে %s কে কি অনুমতি দিবেন?"
-#: ../pidgin/gtkprivacy.c:516
#, c-format
msgid "Are you sure you wish to allow %s to contact you?"
msgstr "আপনি কি নিশ্চিত আপনি %s-কে আপনার সাথে যোগাযোগের অনুমতি দিতে চান?"
-#: ../pidgin/gtkprivacy.c:545 ../pidgin/gtkprivacy.c:559
msgid "Block User"
msgstr "ব্যবহারকারীকে বাধা দিন"
-#: ../pidgin/gtkprivacy.c:546
msgid "Type a user to block."
msgstr "বাধা দেয়ার জন্য ব্যবহারকারীকে টাইপ করুন।"
-#: ../pidgin/gtkprivacy.c:547
msgid "Please enter the name of the user you wish to block."
msgstr "অনুগ্রহ করে আপনি যে ব্যবহারকারীকে ব্লক করতে চান তার নাম প্রবেশ করান।"
-#: ../pidgin/gtkprivacy.c:555
#, c-format
msgid "Block %s?"
msgstr "%s কে কি ব্লক করবেন?"
-#: ../pidgin/gtkprivacy.c:557
#, c-format
msgid "Are you sure you want to block %s?"
msgstr "আপনি কি নিশ্চিত আপনি %s-কে ব্লক করতে চান?"
-#: ../pidgin/gtkrequest.c:274
msgid "Apply"
msgstr "প্রয়োগ করুন"
-#: ../pidgin/gtkrequest.c:1503
msgid "That file already exists"
msgstr "ঐ ফাইলটি ইতোমধ্যে বিদ্যমান"
-#: ../pidgin/gtkrequest.c:1504
msgid "Would you like to overwrite it?"
msgstr "আপনি কি এটা উপরিলিখন করতে চান?"
# tithi
-#: ../pidgin/gtkrequest.c:1507
msgid "Overwrite"
msgstr "উপরিলিখন করুন"
-#: ../pidgin/gtkrequest.c:1508
msgid "Choose New Name"
msgstr "নতুন নাম পছন্দ করুন"
-#: ../pidgin/gtkrequest.c:1649 ../pidgin/gtkrequest.c:1663
msgid "Select Folder..."
msgstr "ফোল্ডার নির্বাচন করুন..."
#. list button
-#: ../pidgin/gtkroomlist.c:570
msgid "_Get List"
msgstr "তালিকা সংগ্রহ করুন (_G)"
#. add button
-#: ../pidgin/gtkroomlist.c:578
msgid "_Add Chat"
msgstr "আড্ডা যোগ করুন (_A)"
-#: ../pidgin/gtksavedstatuses.c:340
msgid "Are you sure you want to delete the selected saved statuses?"
msgstr "আপনি কি নিশ্চিত আপনি নির্বাচিত সংরক্ষিত অবস্থাসমূহ মুছে ফেলতে চান?"
#. Use button
-#: ../pidgin/gtksavedstatuses.c:650 ../pidgin/gtksavedstatuses.c:1279
msgid "_Use"
msgstr "ব্যবহার করুন (_U)"
-#: ../pidgin/gtksavedstatuses.c:793
msgid "Title already in use. You must choose a unique title."
msgstr ""
"শিরোনাম ইতোমধ্যে ব্যবহৃত হচ্ছে। আপনাকে অবশ্যই একটি অনন্য শিরোনাম পছন্দ করতে হবে।"
-#: ../pidgin/gtksavedstatuses.c:1003
msgid "Different"
msgstr "পৃথক"
-#: ../pidgin/gtksavedstatuses.c:1202
msgid "_Title:"
msgstr "শিরোনাম (_T):"
-#: ../pidgin/gtksavedstatuses.c:1210 ../pidgin/gtksavedstatuses.c:1498
msgid "_Status:"
msgstr "অবস্থা (_S):"
#. Different status message expander
-#: ../pidgin/gtksavedstatuses.c:1226
msgid "Use a _different status for some accounts"
msgstr "কিছু একাউন্টের জন্য পৃথক অবস্থা ব্যবহার করুন (_d)"
#. Save & Use button
-#: ../pidgin/gtksavedstatuses.c:1286
msgid "Sa_ve & Use"
msgstr "সংরক্ষণ এবং ব্যবহার করুন (_v)"
-#: ../pidgin/gtksavedstatuses.c:1482
#, c-format
msgid "Status for %s"
msgstr "%s-এর জন্য অবস্থা"
-#: ../pidgin/gtksmiley.c:228 ../pidgin/gtksmiley.c:236
-#: ../pidgin/gtksmiley.c:261 ../pidgin/gtksmiley.c:348
msgid "Custom Smiley"
msgstr "পছন্দসই স্মাইলী"
# tithi
-#: ../pidgin/gtksmiley.c:229 ../pidgin/gtksmiley.c:262
msgid "More Data needed"
msgstr "আরও তথ্য প্রয়োজন"
# tithi
-#: ../pidgin/gtksmiley.c:230 ../pidgin/gtksmiley.c:263
msgid "Please provide a shortcut to associate with the smiley."
msgstr "অনুগ্রহ করে স্মাইলীর সাথে সম্পর্কিত করতে একটি শর্টকাট প্রদান করুন।"
-#: ../pidgin/gtksmiley.c:237
msgid "Duplicate Shortcut"
msgstr "অনুরুপ শর্টকাট"
# tithi
-#: ../pidgin/gtksmiley.c:238
msgid ""
"A custom smiley for the selected shortcut already exists. Please specify a "
"different shortcut."
@@ -18759,83 +13747,65 @@ msgstr ""
"নির্বাচিত শর্টকাটটির জন্য পছন্দসই স্মাইলী ইতোমধ্যে বিদ্যমান। অনুগ্রহ করে একটি ভিন্ন "
"শর্টকাট উল্লেখ করুন।"
-#: ../pidgin/gtksmiley.c:264
msgid "Please select an image for the smiley."
msgstr "অনুগ্রহ করে স্মাইলীটির জন্য একটি চিত্র নির্বাচন করুন।"
-#: ../pidgin/gtksmiley.c:367
msgid "Edit Smiley"
msgstr "স্মাইলী সম্পাদনা করুন"
-#: ../pidgin/gtksmiley.c:367
msgid "Add Smiley"
msgstr "স্মাইলী যোগ করুন"
-#: ../pidgin/gtksmiley.c:388
msgid "Smiley _Image"
msgstr "স্মাইলীর চিত্র (_I)"
# tithi
#. Smiley shortcut
-#: ../pidgin/gtksmiley.c:419
msgid "Smiley S_hortcut"
msgstr "স্মাইলীর শর্টকাট (_S)"
-#: ../pidgin/gtksmiley.c:515
msgid "Smiley"
msgstr "স্মাইলী"
# tithi
-#: ../pidgin/gtksmiley.c:712
msgid "Custom Smiley Manager"
msgstr "পছন্দসই স্মাইলী ব্যবস্থাপক"
# tithi
-#: ../pidgin/gtkstatusbox.c:403
msgid "Click to change your buddyicon for this account."
msgstr "এই একাউন্টের জন্য আপনার বন্ধু-আইকন পরিবর্তন করতে ক্লিক করুন।"
# tithi
-#: ../pidgin/gtkstatusbox.c:404
msgid "Click to change your buddyicon for all accounts."
msgstr "সব একাউন্টের জন্য আপনার বন্ধু-আইকন পরিবর্তন করতে ক্লিক করুন।"
-#: ../pidgin/gtkstatusbox.c:695
msgid "Waiting for network connection"
msgstr "নেটওয়ার্ক সংযোগের জন্য অপেক্ষা করছে"
-#: ../pidgin/gtkstatusbox.c:1110
msgid "New status..."
msgstr "নতুন অবস্থা..."
-#: ../pidgin/gtkstatusbox.c:1111
msgid "Saved statuses..."
msgstr "সংরক্ষিত অবস্থাসমূহ..."
-#: ../pidgin/gtkstatusbox.c:1788
msgid "Status Selector"
msgstr "অবস্থা নির্বাচক"
# tithi
-#: ../pidgin/gtkutils.c:687
msgid "Google Talk"
msgstr "গুগল টক"
-#: ../pidgin/gtkutils.c:1457 ../pidgin/gtkutils.c:1486
#, c-format
msgid "The following error has occurred loading %s: %s"
msgstr "%1s লোড করার সময় নিম্নোক্ত ত্রুটি সংঘটিত হয়েছে: %2s"
-#: ../pidgin/gtkutils.c:1460 ../pidgin/gtkutils.c:1488
msgid "Failed to load image"
msgstr "চিত্র লোড করতে ব্যর্থ হয়েছে"
-#: ../pidgin/gtkutils.c:1562
#, c-format
msgid "Cannot send folder %s."
msgstr "%s ফোল্ডার পাঠাতে পারে না।"
-#: ../pidgin/gtkutils.c:1563
#, c-format
msgid ""
"%s cannot transfer a folder. You will need to send the files within "
@@ -18843,12 +13813,9 @@ msgid ""
msgstr ""
"%s ফোল্ডার স্থানান্তর করতে পারে না। আপনাকে প্রতিটি ফাইল আলাদাভাবে পাঠাতে হবে।"
-#: ../pidgin/gtkutils.c:1597 ../pidgin/gtkutils.c:1609
-#: ../pidgin/gtkutils.c:1616
msgid "You have dragged an image"
msgstr "আপনি একটি চিত্র টেনেছেন"
-#: ../pidgin/gtkutils.c:1598
msgid ""
"You can send this image as a file transfer, embed it into this message, or "
"use it as the buddy icon for this user."
@@ -18856,23 +13823,18 @@ msgstr ""
"আপনি এই ছবিটি ফাইল স্থানান্তর হিসেবে পাঠাতে পারেন, এটাকে এই বার্তার সাথে দৃঢ়বাবে "
"সংযুক্ত করুন, বা এটাকে এই ব্যবহারকারীর জন্য বন্ধু আইকন হিসেবে ব্যবহার করুন।"
-#: ../pidgin/gtkutils.c:1604 ../pidgin/gtkutils.c:1624
msgid "Set as buddy icon"
msgstr "বন্ধু আইকন হিসেবে নির্ধারণ করুন"
-#: ../pidgin/gtkutils.c:1605 ../pidgin/gtkutils.c:1625
msgid "Send image file"
msgstr "চিত্র ফাইল পাঠান"
-#: ../pidgin/gtkutils.c:1606 ../pidgin/gtkutils.c:1625
msgid "Insert in message"
msgstr "বার্তায় প্রবেশ করান"
-#: ../pidgin/gtkutils.c:1610
msgid "Would you like to set it as the buddy icon for this user?"
msgstr "আপনি কি এটাকে এই ব্যবহারকারীর জন্য বন্ধু আইকন হিসেবে নির্ধারণ করতে চান?"
-#: ../pidgin/gtkutils.c:1617
msgid ""
"You can send this image as a file transfer, or use it as the buddy icon for "
"this user."
@@ -18880,7 +13842,6 @@ msgstr ""
"আপনি এই চিত্রটি ফাইল স্থানান্তর হিসেবে পাঠাতে পারেন, বা এটাকে এই ব্যবহারকারীর "
"জন্য বন্ধু আইকন হিসেবে ব্যবহার করতে পারেন।"
-#: ../pidgin/gtkutils.c:1618
msgid ""
"You can insert this image into this message, or use it as the buddy icon for "
"this user"
@@ -18893,11 +13854,9 @@ msgstr ""
#. * send. The only logical one is "Application," but do we really want to send a binary and nothing else?
#. * Probably not. I'll just give an error and return.
#. The original patch sent the icon used by the launcher. That's probably wrong
-#: ../pidgin/gtkutils.c:1677
msgid "Cannot send launcher"
msgstr "প্রকাশক পাঠাতে পারে না"
-#: ../pidgin/gtkutils.c:1677
msgid ""
"You dragged a desktop launcher. Most likely you wanted to send whatever this "
"launcher points to instead of this launcher itself."
@@ -18905,7 +13864,6 @@ msgstr ""
"আপনি একটি ডেস্কটপ প্রকাশক টেনে এনেছেন। এই প্রকাশকটি নিজেকে নির্দেশ করার পরিবর্তে "
"আর যেখানে নির্দেশ করে সেখানে সম্ভবত আপনি পাঠাতে চান।"
-#: ../pidgin/gtkutils.c:2415
#, c-format
msgid ""
"<b>File:</b> %s\n"
@@ -18917,133 +13875,104 @@ msgstr ""
"<b>চিত্রের আকার:</b> %3dx%4d"
# tithi
-#: ../pidgin/gtkutils.c:2717
#, c-format
msgid "The file '%s' is too large for %s. Please try a smaller image.\n"
msgstr ""
"'%1s' ফাইলটি %2s এর জন্য অনেক বড়। অনুগ্রহ করে অপেক্ষাকৃত ছোট চিত্র ব্যবহার করুন।\n"
-#: ../pidgin/gtkutils.c:2719
msgid "Icon Error"
msgstr "আইকন ত্রুটি"
-#: ../pidgin/gtkutils.c:2720
msgid "Could not set icon"
msgstr "আইকন নির্ধারণ করা হয়নি"
-#: ../pidgin/gtkutils.c:2820
#, c-format
msgid "Failed to open file '%s': %s"
msgstr "'%1s' ফাইলটি খুলতে ব্যর্থ: %2s"
# tithi
-#: ../pidgin/gtkutils.c:2869
#, c-format
msgid ""
"Failed to load image '%s': reason not known, probably a corrupt image file"
msgstr ""
"'%s' চিত্রটি লোড করতে ব্যর্থ হয়েছে। কারণ জানা নেই, সম্ভবত একটি নষ্ট চিত্রের ফাইল"
-#: ../pidgin/gtkwhiteboard.c:754 ../pidgin/gtkwhiteboard.c:773
msgid "Save File"
msgstr "ফাইল সংরক্ষণ করুন"
-#: ../pidgin/gtkwhiteboard.c:861
msgid "Select color"
msgstr "রং নির্বাচন করুন"
-#: ../pidgin/pidginstock.c:88
msgid "_Alias"
msgstr "উপনাম (_A)"
-#: ../pidgin/pidginstock.c:90
msgid "Close _tabs"
msgstr "ট্যাবসমূহ বন্ধ করুন (_t)"
-#: ../pidgin/pidginstock.c:92
msgid "_Get Info"
msgstr "তথ্য সংগ্রহ করুন (_G)"
-#: ../pidgin/pidginstock.c:93
msgid "_Invite"
msgstr "আমন্ত্রণ জানান (_I)"
-#: ../pidgin/pidginstock.c:94
msgid "_Modify..."
msgstr "পরিবর্তন করুন... (_M)"
-#: ../pidgin/pidginstock.c:95
msgid "_Add..."
msgstr "যোগ করুন... (_A)"
-#: ../pidgin/pidginstock.c:96
msgid "_Open Mail"
msgstr "মেইল খুলুন (_O)"
-#: ../pidgin/pidginstock.c:98
msgid "_Edit"
msgstr "সম্পাদনা করুন (_E)"
-#: ../pidgin/pidgintooltip.c:125
msgid "Pidgin Tooltip"
msgstr "পিজিন টুলের-ইঙ্গিত"
# tithi
-#: ../pidgin/pixmaps/emotes/default/24/default.theme.in.h:2
msgid "Pidgin smileys"
msgstr "পিজিন স্মাইলীসমূহ"
# tithi
-#: ../pidgin/pixmaps/emotes/none/none.theme.in.h:1
msgid "Penguin Pimps"
msgstr "পেঙ্গুইন পিম্পসমূহ"
# tithi
-#: ../pidgin/pixmaps/emotes/none/none.theme.in.h:2
msgid "Selecting this disables graphical emoticons."
msgstr "এই নিস্ক্রিয় গ্রাফিকাল অভিব্যক্তি-আইকন নির্বাচন করছে।"
-#: ../pidgin/pixmaps/emotes/none/none.theme.in.h:3
msgid "none"
msgstr "কোনটি না"
-#: ../pidgin/pixmaps/emotes/small/16/small.theme.in.h:1
msgid "Small"
msgstr "ছোট"
-#: ../pidgin/pixmaps/emotes/small/16/small.theme.in.h:2
msgid "Smaller versions of the default smilies"
msgstr "পূর্বনির্ধারিত স্মাইলীগুলোর অপেক্ষাকৃত ছোট সংস্করণ"
# tithi
-#: ../pidgin/plugins/cap/cap.c:441 ../pidgin/plugins/cap/cap.c:444
msgid "Response Probability:"
msgstr "সাড়ার সম্ভাব্যতা:"
-#: ../pidgin/plugins/cap/cap.c:769
msgid "Statistics Configuration"
msgstr "পরিসংখ্যান বিন্যাসন"
# tithi
#. msg_difference spinner
-#: ../pidgin/plugins/cap/cap.c:772
msgid "Maximum response timeout:"
msgstr "সর্বোচ্চ সাড়ার সময়োত্তীর্ণ হয়েছে:"
-#: ../pidgin/plugins/cap/cap.c:775 ../pidgin/plugins/cap/cap.c:782
-#: ../pidgin/plugins/cap/cap.c:789 ../pidgin/plugins/timestamp.c:148
msgid "minutes"
msgstr "মিনিট"
# fix me tithi
#. last_seen spinner
-#: ../pidgin/plugins/cap/cap.c:779
msgid "Maximum last-seen difference:"
msgstr "শেষ-দেখার সর্বোচ্চ পার্থক্য:"
# tithi
#. threshold spinner
-#: ../pidgin/plugins/cap/cap.c:786
msgid "Threshold:"
msgstr "থ্রেসহোল্ড:"
@@ -19054,61 +13983,49 @@ msgstr "থ্রেসহোল্ড:"
#. *< dependencies
#. *< priority
#. *< id
-#: ../pidgin/plugins/cap/cap.c:894
msgid "Contact Availability Prediction"
msgstr "যোগাযোগ সহজলভ্যতার ভবিষ্যৎবাণী"
# tithi
#. *< name
#. *< version
-#: ../pidgin/plugins/cap/cap.c:896
msgid "Contact Availability Prediction plugin."
msgstr "যোগাযোগ সহজলভ্যতার ভবিষ্যৎবাণীর প্লাগইন।"
# tithi
#. * summary
-#: ../pidgin/plugins/cap/cap.c:897
msgid "Displays statistical information about your buddies' availability"
msgstr "আপনার বন্ধুদের সম্ভাব্যতা সম্পর্কে পরিসংখ্যান সংক্রান্ত তথ্য প্রদর্শন করে"
-#: ../pidgin/plugins/contact_priority.c:61
msgid "Buddy is idle"
msgstr "বন্ধু অলস"
-#: ../pidgin/plugins/contact_priority.c:62
msgid "Buddy is away"
msgstr "বন্ধু অনুপস্থিত"
# fix me tithi
-#: ../pidgin/plugins/contact_priority.c:63
msgid "Buddy is \"extended\" away"
msgstr "বন্ধু অনুপস্থিত \"প্রসারিত\":"
#. Not used yet.
-#: ../pidgin/plugins/contact_priority.c:66
msgid "Buddy is mobile"
msgstr "বন্ধু মোবাইলে"
-#: ../pidgin/plugins/contact_priority.c:68
msgid "Buddy is offline"
msgstr "বন্ধু অফলাইনে"
-#: ../pidgin/plugins/contact_priority.c:90
msgid "Point values to use when..."
msgstr "ব্যবহার করতে মানসমূহ নির্দেশ করুন যখন..."
-#: ../pidgin/plugins/contact_priority.c:118
msgid ""
"The buddy with the <i>largest score</i> is the buddy who will have priority "
"in the contact.\n"
msgstr ""
"<i>largest score</i> সম্বলিত বন্ধু হলো এমন বন্ধু যার যোগাযোগে অগ্রাধিকার থাকবে।\n"
-#: ../pidgin/plugins/contact_priority.c:125
msgid "Use last buddy when scores are equal"
msgstr "স্কোর সমান হলে শেষ বন্ধুকে ব্যবহার করুন"
-#: ../pidgin/plugins/contact_priority.c:130
msgid "Point values to use for account..."
msgstr "একাউন্ট ব্যবহারের জন্য মানসমূহ নির্দেশ করুন..."
@@ -19118,20 +14035,17 @@ msgstr "একাউন্ট ব্যবহারের জন্য মান
#. *< dependencies
#. *< priority
#. *< id
-#: ../pidgin/plugins/contact_priority.c:188
msgid "Contact Priority"
msgstr "যোগাযোগের অগ্রাধিকার"
#. *< name
#. *< version
#. *< summary
-#: ../pidgin/plugins/contact_priority.c:191
msgid ""
"Allows for controlling the values associated with different buddy states."
msgstr "বিভিন্ন বন্ধুর রাজ্যের সাথে সম্পর্কিত মানসমূহ নিয়ন্ত্রণ করার জন্য অনুমতি দেয়।"
#. *< description
-#: ../pidgin/plugins/contact_priority.c:193
msgid ""
"Allows for changing the point values of idle/away/offline states for buddies "
"in contact priority computations."
@@ -19139,64 +14053,50 @@ msgstr ""
"যোগাযোগের অগ্রাধিকার নির্ণয়ে বন্ধুদের জন্য অলস/অনুপস্থিত/অফলাইন অবস্থার বিন্দু মানসমূহ "
"পরিবর্তন করার জন্য অনুমোদন করে।"
-#: ../pidgin/plugins/convcolors.c:23
msgid "Conversation Colors"
msgstr "কথোপকথন রংসমূহ"
-#: ../pidgin/plugins/convcolors.c:25 ../pidgin/plugins/convcolors.c:26
msgid "Customize colors in the conversation window"
msgstr "কথোপকথন উইন্ডোটির রং পছন্দসই বিন্যাস করুন"
-#: ../pidgin/plugins/convcolors.c:87
msgid "Error Messages"
msgstr "ত্রুটি বার্তাসমূহ"
-#: ../pidgin/plugins/convcolors.c:88
msgid "Highlighted Messages"
msgstr "প্রনির্দেশিত বার্তাসমূহ"
-#: ../pidgin/plugins/convcolors.c:89
msgid "System Messages"
msgstr "সিস্টেম বার্তাসমূহ"
-#: ../pidgin/plugins/convcolors.c:90
msgid "Sent Messages"
msgstr "প্রেরিত বার্তাসমূহ"
-#: ../pidgin/plugins/convcolors.c:91
msgid "Received Messages"
msgstr "গৃহীত বার্তাসমূহ"
-#: ../pidgin/plugins/convcolors.c:223 ../pidgin/plugins/pidginrc.c:260
#, c-format
msgid "Select Color for %s"
msgstr "%s এর জন্য রং নির্বাচন করুন"
# tithi
-#: ../pidgin/plugins/convcolors.c:372
msgid "Ignore incoming format"
msgstr "আগত বিন্যাস উপেক্ষা করুন"
-#: ../pidgin/plugins/convcolors.c:373
msgid "Apply in Chats"
msgstr "আড্ডায় প্রয়োগ করুন"
# tithi
-#: ../pidgin/plugins/convcolors.c:374
msgid "Apply in IMs"
msgstr "আইএম গুলোতে প্রয়োগ করুন"
-#: ../pidgin/plugins/extplacement.c:80
msgid "By conversation count"
msgstr "কথোপকথন গণনা অনুসারে"
-#: ../pidgin/plugins/extplacement.c:101
msgid "Conversation Placement"
msgstr "কথোপকথন অবস্থিতিকরণ"
# fix-me tithi
#. Translators: "New conversations" should match the text in the preferences dialog and "By conversation count" should be the same text used above
-#: ../pidgin/plugins/extplacement.c:105
msgid ""
"Note: The preference for \"New conversations\" must be set to \"By "
"conversation count\"."
@@ -19204,11 +14104,9 @@ msgstr ""
"নোট: \"নতুন কথোপকথনসমূহের\" প্রাধিকার অবশ্যই \"কথোপকথন গণনার ভিত্তিতে\" নির্ধারিত "
"হবে।"
-#: ../pidgin/plugins/extplacement.c:111
msgid "Number of conversations per window"
msgstr "প্রতি উইন্ডোতে কথোপকথনের সংখ্যা"
-#: ../pidgin/plugins/extplacement.c:117
msgid "Separate IM and Chat windows when placing by number"
msgstr "সংখ্যা অনুসারে সাজানোর সময় আইএম ও আড্ডার উইন্ডোগুলো আলাদা করুন"
@@ -19218,19 +14116,16 @@ msgstr "সংখ্যা অনুসারে সাজানোর সময
#. *< dependencies
#. *< priority
#. *< id
-#: ../pidgin/plugins/extplacement.c:146
msgid "ExtPlacement"
msgstr "ExtPlacement"
#. *< name
#. *< version
-#: ../pidgin/plugins/extplacement.c:148
msgid "Extra conversation placement options."
msgstr "অতিরিক্ত কথোপকথন অবস্থিতিকরণ পছন্দসমূহ।"
#. *< summary
#. * description
-#: ../pidgin/plugins/extplacement.c:150
msgid ""
"Restrict the number of conversations per windows, optionally separating IMs "
"and Chats"
@@ -19238,22 +14133,18 @@ msgstr ""
"আইএম এবং আড্ডা ঐচ্ছিকভাবে আলাদা করে, প্রতিটি উইন্ডোর কথোপকথন সংখ্যা সীমিত করুন।"
#. Configuration frame
-#: ../pidgin/plugins/gestures/gestures.c:235
msgid "Mouse Gestures Configuration"
msgstr "মাউসের ভঙ্গিমা বিন্যাসন করুন"
-#: ../pidgin/plugins/gestures/gestures.c:242
msgid "Middle mouse button"
msgstr "মাউসের মাঝের বোতাম"
-#: ../pidgin/plugins/gestures/gestures.c:247
msgid "Right mouse button"
msgstr "মাউসের ডান বোতাম"
# previous:
# দৃশ্যমান ভঙ্গিমা প্রদর্শন (_দ)
#. "Visual gesture display" checkbox
-#: ../pidgin/plugins/gestures/gestures.c:259
msgid "_Visual gesture display"
msgstr "ঐক্ষিক ভঙ্গিমার প্রদর্শন (_V)"
@@ -19263,19 +14154,16 @@ msgstr "ঐক্ষিক ভঙ্গিমার প্রদর্শন (_V
#. *< dependencies
#. *< priority
#. *< id
-#: ../pidgin/plugins/gestures/gestures.c:295
msgid "Mouse Gestures"
msgstr "মাউসের ভঙ্গিমা"
#. *< name
#. *< version
#. * summary
-#: ../pidgin/plugins/gestures/gestures.c:298
msgid "Provides support for mouse gestures"
msgstr "মাউসের ভঙ্গিমাকে সমর্থন দেয়"
#. * description
-#: ../pidgin/plugins/gestures/gestures.c:300
msgid ""
"Allows support for mouse gestures in conversation windows. Drag the middle "
"mouse button to perform certain actions:\n"
@@ -19290,35 +14178,26 @@ msgstr ""
"•পূর্ববর্তী কথোপকথনে পরিবর্তন করতে উপরে টানুন এবং তারপর বামে টানুন।\n"
"•পরবর্তী কথোপকথন পরিবর্তন করতে উপরে টানুন এবং তারপর ডানে টানুন।"
-#: ../pidgin/plugins/gevolution/add_buddy_dialog.c:143
msgid "Instant Messaging"
msgstr "তাৎক্ষণিক বার্তাব্যবস্থা"
#. Add the label.
-#: ../pidgin/plugins/gevolution/add_buddy_dialog.c:461
msgid "Select a person from your address book below, or add a new person."
msgstr ""
"নিম্নোক্ত ঠিকানার বই থেকে একজন ব্যক্তিকে নির্বাচন করুন, বা একজন নতুন ব্যক্তি যোগ করুন।"
-#: ../pidgin/plugins/gevolution/add_buddy_dialog.c:555
-#: ../pidgin/plugins/gevolution/new_person_dialog.c:305
msgid "Group:"
msgstr "গ্রুপ:"
#. "New Person" button
-#: ../pidgin/plugins/gevolution/add_buddy_dialog.c:580
-#: ../pidgin/plugins/gevolution/assoc-buddy.c:467
-#: ../pidgin/plugins/gevolution/new_person_dialog.c:252
msgid "New Person"
msgstr "নতুন ব্যক্তি"
#. "Select Buddy" button
-#: ../pidgin/plugins/gevolution/add_buddy_dialog.c:597
msgid "Select Buddy"
msgstr "বন্ধু নির্বাচন করুন"
#. Add the label.
-#: ../pidgin/plugins/gevolution/assoc-buddy.c:343
msgid ""
"Select a person from your address book to add this buddy to, or create a new "
"person."
@@ -19327,44 +14206,34 @@ msgstr ""
"তৈরি করুন।"
#. Add the expander
-#: ../pidgin/plugins/gevolution/assoc-buddy.c:431
msgid "User _details"
msgstr "ব্যবহারকারীর বিবরণ (_d)"
#. "Associate Buddy" button
-#: ../pidgin/plugins/gevolution/assoc-buddy.c:484
msgid "_Associate Buddy"
msgstr "সম্পৃক্ত বন্ধু (_A)"
-#: ../pidgin/plugins/gevolution/gevolution.c:242
-#: ../pidgin/plugins/gevolution/gevolution.c:248
msgid "Unable to send email"
msgstr "ই-মেইল পাঠাতে ব্যর্থ"
-#: ../pidgin/plugins/gevolution/gevolution.c:243
msgid "The evolution executable was not found in the PATH."
msgstr "পথ-এর মধ্যে কার্যকরযোগ্য বিবর্তন খুঁজে পাওয়া যায়নি।"
# tithi
-#: ../pidgin/plugins/gevolution/gevolution.c:249
msgid "An email address was not found for this buddy."
msgstr "এই বন্ধুটির জন্য একটি ই-মেইল ঠিকানা খুঁজে পাওয়া যায়নি।"
-#: ../pidgin/plugins/gevolution/gevolution.c:275
msgid "Add to Address Book"
msgstr "ঠিকানার বইয়ে যোগ করুন"
-#: ../pidgin/plugins/gevolution/gevolution.c:287
msgid "Send Email"
msgstr "ই-মেইল পাঠান"
#. Configuration frame
-#: ../pidgin/plugins/gevolution/gevolution.c:414
msgid "Evolution Integration Configuration"
msgstr "বিবর্তন একত্রিকরণ বিন্যাসন"
#. Label
-#: ../pidgin/plugins/gevolution/gevolution.c:417
msgid "Select all accounts that buddies should be auto-added to."
msgstr "স্বয়ংক্রিয়ভাবে সব একাউন্টগুলো নির্বাচন করুন যাতে বন্ধুরা স্বয়ং-যুক্ত হবে।"
@@ -19374,7 +14243,6 @@ msgstr "স্বয়ংক্রিয়ভাবে সব একাউন
#. *< dependencies
#. *< priority
#. *< id
-#: ../pidgin/plugins/gevolution/gevolution.c:529
msgid "Evolution Integration"
msgstr "বিবর্তন একত্রিকরণ"
@@ -19382,38 +14250,29 @@ msgstr "বিবর্তন একত্রিকরণ"
#. *< version
#. * summary
#. * description
-#: ../pidgin/plugins/gevolution/gevolution.c:532
-#: ../pidgin/plugins/gevolution/gevolution.c:534
msgid "Provides integration with Evolution."
msgstr "বিবর্তনের সঙ্গে একত্রিকরণ প্রদান করে।"
-#: ../pidgin/plugins/gevolution/new_person_dialog.c:266
msgid "Please enter the person's information below."
msgstr "অনুগ্রহ করে ব্যক্তির তথ্যাদি নিচে প্রবেশ করান।"
-#: ../pidgin/plugins/gevolution/new_person_dialog.c:270
msgid "Please enter the buddy's username and account type below."
msgstr "অনুগ্রহ করে বন্ধুর ব্যবহারকারী নাম ও একাউন্টের ধরণ নিচে প্রবেশ করান।"
-#: ../pidgin/plugins/gevolution/new_person_dialog.c:290
msgid "Account type:"
msgstr "একাউন্টের ধরণ:"
# and this
#. Optional Information section
-#: ../pidgin/plugins/gevolution/new_person_dialog.c:313
msgid "Optional information:"
msgstr "ঐচ্ছিক তথ্য:"
-#: ../pidgin/plugins/gevolution/new_person_dialog.c:348
msgid "First name:"
msgstr "প্রথম নাম:"
-#: ../pidgin/plugins/gevolution/new_person_dialog.c:360
msgid "Last name:"
msgstr "শেষ নাম:"
-#: ../pidgin/plugins/gevolution/new_person_dialog.c:380
msgid "Email:"
msgstr "ইমেইল:"
@@ -19423,7 +14282,6 @@ msgstr "ইমেইল:"
#. *< dependencies
#. *< priority
#. *< id
-#: ../pidgin/plugins/gtk-signals-test.c:160
msgid "GTK Signals Test"
msgstr "GTK সঙ্কেতের পরীক্ষা"
@@ -19431,12 +14289,9 @@ msgstr "GTK সঙ্কেতের পরীক্ষা"
#. *< version
#. * summary
#. * description
-#: ../pidgin/plugins/gtk-signals-test.c:163
-#: ../pidgin/plugins/gtk-signals-test.c:165
msgid "Test to see that all ui signals are working properly."
msgstr "সব ইউআই সঙ্কেত সঠিকভাবে কাজ করছে কিনা তা দেখার জন্য পরীক্ষা করুন।"
-#: ../pidgin/plugins/gtkbuddynote.c:36
#, c-format
msgid ""
"\n"
@@ -19445,7 +14300,6 @@ msgstr ""
"\n"
"<b>বন্ধুর নোট</b>: %s"
-#: ../pidgin/plugins/history.c:202
msgid "History"
msgstr "ইতিহাস"
@@ -19455,7 +14309,6 @@ msgstr "ইতিহাস"
#. *< dependencies
#. *< priority
#. *< id
-#: ../pidgin/plugins/iconaway.c:82
msgid "Iconify on Away"
msgstr "অনুপস্থিত হলে আইকন দ্বারা চিহ্নিত করুন"
@@ -19463,51 +14316,40 @@ msgstr "অনুপস্থিত হলে আইকন দ্বারা
#. *< version
#. * summary
#. * description
-#: ../pidgin/plugins/iconaway.c:85 ../pidgin/plugins/iconaway.c:87
msgid "Iconifies the buddy list and your conversations when you go away."
msgstr "আপনার অনুপস্থিতিতে বন্ধু তালিকা ও আপনার কথোপকথন আইকন দ্বারা চিহ্নিত করুন।"
-#: ../pidgin/plugins/mailchk.c:160
msgid "Mail Checker"
msgstr "মেইল পরীক্ষক"
-#: ../pidgin/plugins/mailchk.c:162
msgid "Checks for new local mail."
msgstr "নতুন স্থানীয় মেইলের জন্য পরীক্ষা করে।"
-#: ../pidgin/plugins/mailchk.c:163
msgid "Adds a small box to the buddy list that shows if you have new mail."
msgstr "বন্ধু তালিকার একটি ছোট বাক্স যুক্ত করে যা আপনার নতুন মেইল এলে প্রদর্শন করে।"
-#: ../pidgin/plugins/markerline.c:23
msgid "Markerline"
msgstr "চিহ্নিতকারীর-রেখা"
# tithi
-#: ../pidgin/plugins/markerline.c:25 ../pidgin/plugins/markerline.c:26
msgid "Draw a line to indicate new messages in a conversation."
msgstr "কথোপকথনে নতুন বার্তাগুলো নির্দেশ করতে একটি লাইন আঁকুন।"
# fix me tithi
-#: ../pidgin/plugins/markerline.c:238
msgid "Jump to markerline"
msgstr "চিহ্নিতকারীর-রেখায় গমন করুন"
# tithi
-#: ../pidgin/plugins/markerline.c:272
msgid "Draw Markerline in "
msgstr "চিহ্নিতকারীর-রেখা আঁকুন"
-#: ../pidgin/plugins/markerline.c:276 ../pidgin/plugins/notify.c:694
msgid "_IM windows"
msgstr "আইএম উইন্ডোজ (_I)"
-#: ../pidgin/plugins/markerline.c:280 ../pidgin/plugins/notify.c:701
msgid "C_hat windows"
msgstr "আড্ডার উইন্ডো (_h)"
# tithi
-#: ../pidgin/plugins/musicmessaging/musicmessaging.c:44
msgid ""
"A music messaging session has been requested. Please click the MM icon to "
"accept."
@@ -19516,39 +14358,31 @@ msgstr ""
"আইকনটি ক্লিক করুন।"
# fix me
-#: ../pidgin/plugins/musicmessaging/musicmessaging.c:45
msgid "Music messaging session confirmed."
msgstr "সংগীত বার্তাকরণ অধিবেশন নিশ্চিত।"
# fix me
-#: ../pidgin/plugins/musicmessaging/musicmessaging.c:430
msgid "Music Messaging"
msgstr "সংগীত বার্তাকরণ"
# tithi
-#: ../pidgin/plugins/musicmessaging/musicmessaging.c:431
msgid "There was a conflict in running the command:"
msgstr "নির্দেশ চালাতে একটি দ্বন্দ্ব ছিল:"
-#: ../pidgin/plugins/musicmessaging/musicmessaging.c:539
msgid "Error Running Editor"
msgstr "সম্পাদক চালাতে ত্রুটি"
-#: ../pidgin/plugins/musicmessaging/musicmessaging.c:540
msgid "The following error has occurred:"
msgstr "নিম্নোক্ত ত্রুটি সংঘটিত হয়েছে:"
#. Configuration frame
-#: ../pidgin/plugins/musicmessaging/musicmessaging.c:639
msgid "Music Messaging Configuration"
msgstr "সংগীত বার্তাকরণ বিন্যাসন"
# tithifix me
-#: ../pidgin/plugins/musicmessaging/musicmessaging.c:643
msgid "Score Editor Path"
msgstr "সম্পাদক পাথ স্কোর"
-#: ../pidgin/plugins/musicmessaging/musicmessaging.c:644
msgid "_Apply"
msgstr "প্রয়োগ করুন (_A)"
@@ -19561,13 +14395,11 @@ msgstr "প্রয়োগ করুন (_A)"
#. *< id
#. *< name
#. *< version
-#: ../pidgin/plugins/musicmessaging/musicmessaging.c:685
msgid "Music Messaging Plugin for collaborative composition."
msgstr "সমন্নিত রচনার জন্য সংগীত বার্তাকরণ প্লাগইন করুন।"
# fix me tithi
#. * summary
-#: ../pidgin/plugins/musicmessaging/musicmessaging.c:687
msgid ""
"The Music Messaging Plugin allows a number of users to simultaneously work "
"on a piece of music by editting a common score in real-time."
@@ -19576,87 +14408,70 @@ msgstr ""
"সম্পাদনার মাধ্যমে যুগপৎভাবে এক খন্ড সংগীতের উপর কাজ করে।"
#. ---------- "Notify For" ----------
-#: ../pidgin/plugins/notify.c:690
msgid "Notify For"
msgstr "এর জন্য প্রজ্ঞাপন"
# fix me
-#: ../pidgin/plugins/notify.c:709
msgid "\t_Only when someone says your username"
msgstr ""
" শুধুমাত্র তখন যখন কেউ একজন আপনার ব্যবহারকারীর নাম ডাকে "
"(_O)"
-#: ../pidgin/plugins/notify.c:719
msgid "_Focused windows"
msgstr "ফোকাসকৃত উইন্ডো (_F)"
#. ---------- "Notification Methods" ----------
-#: ../pidgin/plugins/notify.c:727
msgid "Notification Methods"
msgstr "প্রজ্ঞাপন পদ্ধতি"
-#: ../pidgin/plugins/notify.c:734
msgid "Prepend _string into window title:"
msgstr "উইন্ডোর শিরোনামে স্ট্রীং যোগ করুন (_s):"
#. Count method button
-#: ../pidgin/plugins/notify.c:753
msgid "Insert c_ount of new messages into window title"
msgstr "উইন্ডোর শিরোনামে নতুন বার্তাসমূহের সংখ্যা প্রবেশ করান (_o)"
# fix me
#. Count xprop method button
-#: ../pidgin/plugins/notify.c:762
msgid "Insert count of new message into _X property"
msgstr "X বৈশিষ্ট্যে নতুন বার্তাসমূহের সংখ্যা প্রবেশ করান (_X)"
#. Urgent method button
-#: ../pidgin/plugins/notify.c:770
msgid "Set window manager \"_URGENT\" hint"
msgstr "উইন্ডো ব্যবস্থাপক \"জরুরী\" ইঙ্গিতে নির্দিষ্ট করুন (_U)"
-#: ../pidgin/plugins/notify.c:772
msgid "_Flash window"
msgstr "ফ্ল্যাশ উইন্ডো (_F)"
#. Raise window method button
-#: ../pidgin/plugins/notify.c:781
msgid "R_aise conversation window"
msgstr "কথোপকথন উইন্ডো বৃদ্ধি করুন (_a)"
#. Present conversation method button
-#: ../pidgin/plugins/notify.c:789
msgid "_Present conversation window"
msgstr "বর্তমান কথোপকথন উইন্ডো (_P)"
#. ---------- "Notification Removals" ----------
-#: ../pidgin/plugins/notify.c:797
msgid "Notification Removal"
msgstr "প্রজ্ঞাপন অপসারক"
#. Remove on focus button
-#: ../pidgin/plugins/notify.c:802
msgid "Remove when conversation window _gains focus"
msgstr "কথোপকথন উইন্ডোতে ফোকাস করা হলে অপসারণ করুন (_g)"
#. Remove on click button
-#: ../pidgin/plugins/notify.c:809
msgid "Remove when conversation window _receives click"
msgstr "কথোপকথন উইন্ডোতে ক্লিক করা হলে অপসারণ করুন (_r)"
#. Remove on type button
-#: ../pidgin/plugins/notify.c:817
msgid "Remove when _typing in conversation window"
msgstr "কথোপকথন উইন্ডোতে টাইপ করার সময় অপসারণ করুন (_t)"
#. Remove on message send button
-#: ../pidgin/plugins/notify.c:825
msgid "Remove when a _message gets sent"
msgstr "একটি বার্তা পাঠানো হলে অপসারণ করুন (_m)"
#. Remove on conversation switch button
-#: ../pidgin/plugins/notify.c:834
msgid "Remove on switch to conversation ta_b"
msgstr "কথোপকথন ট্যাবে পরিবর্তনের সময় অপসারণ করুন (_b)"
@@ -19666,7 +14481,6 @@ msgstr "কথোপকথন ট্যাবে পরিবর্তনের
#. *< dependencies
#. *< priority
#. *< id
-#: ../pidgin/plugins/notify.c:927
msgid "Message Notification"
msgstr "বার্তার প্রজ্ঞাপন"
@@ -19674,7 +14488,6 @@ msgstr "বার্তার প্রজ্ঞাপন"
#. *< version
#. * summary
#. * description
-#: ../pidgin/plugins/notify.c:930 ../pidgin/plugins/notify.c:932
msgid "Provides a variety of ways of notifying you of unread messages."
msgstr "আপনাকে অপঠিত বার্তাসমূহের বিভিন্ন ধরনের প্রজ্ঞাপন প্রদান করে।"
@@ -19684,19 +14497,16 @@ msgstr "আপনাকে অপঠিত বার্তাসমূহের
#. *< dependencies
#. *< priority
#. *< id
-#: ../pidgin/plugins/pidgininc.c:91
msgid "Pidgin Demonstration Plugin"
msgstr "পিজিন কার্যপ্রণালী প্রদর্শন প্লাগইন"
#. *< name
#. *< version
#. * summary
-#: ../pidgin/plugins/pidgininc.c:94
msgid "An example plugin that does stuff - see the description."
msgstr "একটি উদাহারণ প্লাগইন যা অনেক কিছু করে - বিবরণ দেখুন।"
#. * description
-#: ../pidgin/plugins/pidgininc.c:96
msgid ""
"This is a really cool plugin that does a lot of stuff:\n"
"- It tells you who wrote the program when you log in\n"
@@ -19708,60 +14518,47 @@ msgstr ""
"- এটা সব আগত পাঠ উল্টে দেয়\n"
"- আপনার তালিকাভুক্ত ব্যক্তি সাইন অন করলেই এটা তাদেরকে একটি বার্তা পাঠায়"
-#: ../pidgin/plugins/pidginrc.c:51
msgid "Cursor Color"
msgstr "কার্সারের রং"
-#: ../pidgin/plugins/pidginrc.c:52
msgid "Secondary Cursor Color"
msgstr "গৌণ কার্সারের রং"
-#: ../pidgin/plugins/pidginrc.c:53
msgid "Hyperlink Color"
msgstr "হাইপারলিঙ্কের রং"
-#: ../pidgin/plugins/pidginrc.c:54
msgid "Visited Hyperlink Color"
msgstr "প্রনির্দেশিত হাইপারলিঙ্ক রং"
-#: ../pidgin/plugins/pidginrc.c:57
msgid "Highlighted Message Name Color"
msgstr "প্রনির্দেশিত বার্তার নামের রং"
-#: ../pidgin/plugins/pidginrc.c:69
msgid "GtkTreeView Horizontal Separation"
msgstr "GtkTreeView অনুভূমিক বিভাজন"
-#: ../pidgin/plugins/pidginrc.c:84
msgid "Conversation Entry"
msgstr "কথোপকথন এন্টি"
-#: ../pidgin/plugins/pidginrc.c:85
msgid "Request Dialog"
msgstr "অনুরোধ সংলাপ"
-#: ../pidgin/plugins/pidginrc.c:86
msgid "Notify Dialog"
msgstr "প্রজ্ঞাপন সংলাপ"
-#: ../pidgin/plugins/pidginrc.c:262
msgid "Select Color"
msgstr "রং নির্বাচন করুন"
-#: ../pidgin/plugins/pidginrc.c:309
+#, c-format
msgid "Select Interface Font"
msgstr "ইন্টারফেসের ফন্ট নির্বাচন করুন"
-#: ../pidgin/plugins/pidginrc.c:312
#, c-format
msgid "Select Font for %s"
msgstr "%s-এর জন্য ফন্ট নির্বাচন করুন"
-#: ../pidgin/plugins/pidginrc.c:380
msgid "GTK+ Interface Font"
msgstr "GTK+ ইন্টারফেসের ফন্ট"
-#: ../pidgin/plugins/pidginrc.c:400
msgid "GTK+ Text Shortcut Theme"
msgstr "GTK+ পাঠ শর্টকাটের থীম"
@@ -19785,49 +14582,38 @@ msgstr "GTK+ পাঠ শর্টকাটের থীম"
#. widget_bool_widgets[i]);
#. }
#.
-#: ../pidgin/plugins/pidginrc.c:437
msgid "Interface colors"
msgstr "ইন্টারফেসের রং"
# tithi
-#: ../pidgin/plugins/pidginrc.c:461
msgid "Widget Sizes"
msgstr "উইজেট আকারসমূহ"
-#: ../pidgin/plugins/pidginrc.c:482
msgid "Fonts"
msgstr "ফন্টসমূহ"
-#: ../pidgin/plugins/pidginrc.c:506
msgid "Gtkrc File Tools"
msgstr "Gtkrc ফাইলের টুলসমূহ"
-#: ../pidgin/plugins/pidginrc.c:511
#, c-format
msgid "Write settings to %s%sgtkrc-2.0"
msgstr "%s%sgtkrc-২.০ এ লিখন বিন্যাসন"
-#: ../pidgin/plugins/pidginrc.c:520
msgid "Re-read gtkrc files"
msgstr "gtkrc ফাইলগুলো পুনরায় পড়ুন"
-#: ../pidgin/plugins/pidginrc.c:558
msgid "Pidgin GTK+ Theme Control"
msgstr "পিজিন GTK+ থীম নিয়ন্ত্রণ"
-#: ../pidgin/plugins/pidginrc.c:560 ../pidgin/plugins/pidginrc.c:561
msgid "Provides access to commonly used gtkrc settings."
msgstr "সাধারণত ব্যবহৃত gtkrc বিন্যাসনসমূহে প্রবেশ অনুমোদন করে।"
-#: ../pidgin/plugins/raw.c:175
msgid "Raw"
msgstr "নতুন"
-#: ../pidgin/plugins/raw.c:177
msgid "Lets you send raw input to text-based protocols."
msgstr "আপনাকে পাঠ-ভিত্তিক প্রটোকলসমূহে নতুন ইনপুট পাঠাতে দেয়।"
-#: ../pidgin/plugins/raw.c:178
msgid ""
"Lets you send raw input to text-based protocols (XMPP, MSN, IRC, TOC). Hit "
"'Enter' in the entry box to send. Watch the debug window."
@@ -19835,20 +14621,16 @@ msgstr ""
"আপনাকে পাঠ-ভিত্তিক প্রটোকলসমূহে (XMPP, MSN, IRC, TOC) নতুন ইনপুট পাঠাতে দেয়। "
"পাঠাতে হলে এন্ট্রি বাক্সের 'Enter' চাপুন। ডিবাগ উইন্ডোটি পর্যবেক্ষণ করুন।"
-#: ../pidgin/plugins/relnot.c:111
#, c-format
msgid "You can upgrade to %s %s today."
msgstr "আপনি আজ %s %s এ উন্নততর করতে পারেন।"
-#: ../pidgin/plugins/relnot.c:116
msgid "New Version Available"
msgstr "নতুন সংস্করণ সহজলভ্য"
-#: ../pidgin/plugins/relnot.c:119
msgid "Later"
msgstr "পরবর্তীতে"
-#: ../pidgin/plugins/relnot.c:120
msgid "Download Now"
msgstr "এখন ডাউনলোড করুন"
@@ -19858,19 +14640,16 @@ msgstr "এখন ডাউনলোড করুন"
#. *< dependencies
#. *< priority
#. *< id
-#: ../pidgin/plugins/relnot.c:199
msgid "Release Notification"
msgstr "সংস্করণ প্রজ্ঞাপন"
#. *< name
#. *< version
#. * summary
-#: ../pidgin/plugins/relnot.c:202
msgid "Checks periodically for new releases."
msgstr "পর্যায়ক্রমিকভাবে নতুন সংস্করণের জন্য পরীক্ষা করুন।"
#. * description
-#: ../pidgin/plugins/relnot.c:204
msgid ""
"Checks periodically for new releases and notifies the user with the "
"ChangeLog."
@@ -19886,18 +14665,15 @@ msgstr ""
#. *< dependencies
#. *< priority
#. *< id
-#: ../pidgin/plugins/sendbutton.c:176
msgid "Send Button"
msgstr "পাঠানোর বোতাম"
#. *< name
#. *< version
-#: ../pidgin/plugins/sendbutton.c:178
msgid "Conversation Window Send Button."
msgstr "কথোপকথন উইন্ডোর প্রেরণ বোতাম"
#. *< summary
-#: ../pidgin/plugins/sendbutton.c:179
msgid ""
"Adds a Send button to the entry area of the conversation window. Intended "
"for when no physical keyboard is present."
@@ -19905,71 +14681,55 @@ msgstr ""
"কথোপকথন উইন্ডোর এন্ট্রি এলাকায় একটি প্রেরণ বোতাম যোগ করুন। যখন কোনো কীবোর্ড বর্তমান "
"নেই এমন উদ্দেশ্যে।"
-#: ../pidgin/plugins/spellchk.c:1971
msgid "Duplicate Correction"
msgstr "অনুরূপ সংশোধন"
-#: ../pidgin/plugins/spellchk.c:1972
msgid "The specified word already exists in the correction list."
msgstr "উল্লেখিত শব্দটি ইতোমধ্যে সংশোধন তালিকায় বিদ্যমান।"
-#: ../pidgin/plugins/spellchk.c:2185
msgid "Text Replacements"
msgstr "পাঠ প্রতিস্থাপন"
-#: ../pidgin/plugins/spellchk.c:2208
msgid "You type"
msgstr "আপনি টাইপ করুন"
-#: ../pidgin/plugins/spellchk.c:2222
msgid "You send"
msgstr "আপনি পাঠান"
-#: ../pidgin/plugins/spellchk.c:2236
msgid "Whole words only"
msgstr "শুধুমাত্র পূর্ণ শব্দ"
# tithi
-#: ../pidgin/plugins/spellchk.c:2248
msgid "Case sensitive"
msgstr "কেস সংবেদনশীল"
-#: ../pidgin/plugins/spellchk.c:2274
msgid "Add a new text replacement"
msgstr "নতুন পাঠ প্রতিস্থাপন যোগ করুন"
-#: ../pidgin/plugins/spellchk.c:2290
msgid "You _type:"
msgstr "আপনি টাইপ করুন (_t):"
-#: ../pidgin/plugins/spellchk.c:2294
msgid "You _send:"
msgstr "আপনি পাঠান (_s):"
# tithi
#. Created here so it can be passed to whole_words_button_toggled.
-#: ../pidgin/plugins/spellchk.c:2297
msgid "_Exact case match (uncheck for automatic case handling)"
msgstr "যথাযথ কেস সমন্বয় (স্বয়ংক্রিয় কেস পরিচালনার জন্য অপরীক্ষীত রাখুন) (_E)"
-#: ../pidgin/plugins/spellchk.c:2299
msgid "Only replace _whole words"
msgstr "শুধুমাত্র পূর্ণ শব্দ প্রতিস্থাপন করুন (_w)"
-#: ../pidgin/plugins/spellchk.c:2324
msgid "General Text Replacement Options"
msgstr "সাধারণ পাঠ প্রতিস্থাপন পছন্দসমূহ"
# tithi
-#: ../pidgin/plugins/spellchk.c:2325
msgid "Enable replacement of last word on send"
msgstr "পাঠানোর সময় শেষ শব্দের প্রতিস্থাপন সক্রিয় করুন"
-#: ../pidgin/plugins/spellchk.c:2358
msgid "Text replacement"
msgstr "পাঠ প্রতিস্থাপন"
-#: ../pidgin/plugins/spellchk.c:2360 ../pidgin/plugins/spellchk.c:2361
msgid "Replaces text in outgoing messages according to user-defined rules."
msgstr "ব্যবহারকারী-সুনির্দিষ্ট নীতি অনুযায়ী বহির্গমন বার্তাসমুহে পাঠ প্রতিস্থাপন করে।"
@@ -19979,7 +14739,6 @@ msgstr "ব্যবহারকারী-সুনির্দিষ্ট ন
#. *< dependencies
#. *< priority
#. *< id
-#: ../pidgin/plugins/ticker/ticker.c:74 ../pidgin/plugins/ticker/ticker.c:356
msgid "Buddy Ticker"
msgstr "বন্ধু চিহ্নিতকারী"
@@ -19987,11 +14746,9 @@ msgstr "বন্ধু চিহ্নিতকারী"
#. *< version
#. * summary
#. * description
-#: ../pidgin/plugins/ticker/ticker.c:359 ../pidgin/plugins/ticker/ticker.c:361
msgid "A horizontal scrolling version of the buddy list."
msgstr "বন্ধুতালিকার একটি অনুভূমিক স্ক্রলিং সংস্করণ।"
-#: ../pidgin/plugins/timestamp.c:135
msgid "Display Timestamps Every"
msgstr "প্রত্যেক টাইমস্টাম্প প্রদর্শন করুন"
@@ -20001,7 +14758,6 @@ msgstr "প্রত্যেক টাইমস্টাম্প প্রদ
#. *< dependencies
#. *< priority
#. *< id
-#: ../pidgin/plugins/timestamp.c:200
msgid "Timestamp"
msgstr "টাইমস্ট্যাম্প"
@@ -20009,46 +14765,36 @@ msgstr "টাইমস্ট্যাম্প"
#. *< name
#. *< version
#. * summary
-#: ../pidgin/plugins/timestamp.c:203
msgid "Display iChat-style timestamps"
msgstr "আই-আড্ডা-শৈলীর টাইমস্ট্যাম্প প্রদর্শন করুন"
# fix me
#. * description
-#: ../pidgin/plugins/timestamp.c:205
msgid "Display iChat-style timestamps every N minutes."
msgstr "প্রতি N মিনিট পর আই-আড্ডা-শৈলীর টাইমস্ট্যাম্প প্রদর্শন করুন।"
# tithi
-#: ../pidgin/plugins/timestamp_format.c:23
msgid "Timestamp Format Options"
msgstr "টাইমস্ট্যাম্প বিন্যাসের পছন্দসমূহ"
# tithi
-#: ../pidgin/plugins/timestamp_format.c:26
+#, c-format
msgid "_Force 24-hour time format"
msgstr "২৪-ঘন্টার সময় বিন্যাস নির্ধারণ করুন (_F)"
-#: ../pidgin/plugins/timestamp_format.c:33
msgid "Show dates in..."
msgstr "এ তারিখ প্রদর্শন করুন..."
-#: ../pidgin/plugins/timestamp_format.c:38
msgid "Co_nversations:"
msgstr "কথোপকথন (_n):"
-#: ../pidgin/plugins/timestamp_format.c:40
-#: ../pidgin/plugins/timestamp_format.c:49
msgid "For delayed messages"
msgstr "বিলম্বিত বার্তাসমূহের জন্য"
# tithi
-#: ../pidgin/plugins/timestamp_format.c:41
-#: ../pidgin/plugins/timestamp_format.c:50
msgid "For delayed messages and in chats"
msgstr "বিলম্বিত বার্তাসমূহের জন্য এবং আড্ডায়"
-#: ../pidgin/plugins/timestamp_format.c:47
msgid "_Message Logs:"
msgstr "বার্তার কার্যবিবরণী (_M):"
@@ -20059,7 +14805,6 @@ msgstr "বার্তার কার্যবিবরণী (_M):"
#. *< dependencies
#. *< priority
#. *< id
-#: ../pidgin/plugins/timestamp_format.c:151
msgid "Message Timestamp Formats"
msgstr "বার্তার টাইমস্ট্যাম্প বিন্যাসসমূহ"
@@ -20067,13 +14812,11 @@ msgstr "বার্তার টাইমস্ট্যাম্প বিন
#. *< name
#. *< version
#. * summary
-#: ../pidgin/plugins/timestamp_format.c:154
msgid "Customizes the message timestamp formats."
msgstr "বার্তার টাইমস্টাম্প বিন্যাসসমূহ পছন্দসই বিন্যাস করে।"
# tithi
#. * description
-#: ../pidgin/plugins/timestamp_format.c:156
msgid ""
"This plugin allows the user to customize conversation and logging message "
"timestamp formats."
@@ -20081,44 +14824,32 @@ msgstr ""
"এই প্লাগইন ব্য়বহারকারীকে কথোপকথন এবং যুক্তকরণ বার্তার টাইমস্টাম্প বিন্যাসসমূহ পছন্দসই "
"বিন্যাস করার অনুমতি দেয়।"
-#: ../pidgin/plugins/win32/transparency/win2ktrans.c:175
-#: ../pidgin/plugins/win32/transparency/win2ktrans.c:598
-#: ../pidgin/plugins/win32/transparency/win2ktrans.c:645
msgid "Opacity:"
msgstr "জড়তা:"
#. IM Convo trans options
-#: ../pidgin/plugins/win32/transparency/win2ktrans.c:562
msgid "IM Conversation Windows"
msgstr "তাৎক্ষণিক বার্তার কথোপকথন উইন্ডোজ"
-#: ../pidgin/plugins/win32/transparency/win2ktrans.c:563
msgid "_IM window transparency"
msgstr "তাৎক্ষণিক বার্তা উইন্ডোর স্বচ্ছতা (_I)"
-#: ../pidgin/plugins/win32/transparency/win2ktrans.c:577
msgid "_Show slider bar in IM window"
msgstr "তাৎক্ষণিক বার্তার উইন্ডোতে স্লাইডার বার প্রদর্শন করুন (_S)"
-#: ../pidgin/plugins/win32/transparency/win2ktrans.c:584
msgid "Remove IM window transparency on focus"
msgstr "ফোকাসে আইএম উইন্ডোর স্বচ্ছতা অপসারন করুন"
-#: ../pidgin/plugins/win32/transparency/win2ktrans.c:587
-#: ../pidgin/plugins/win32/transparency/win2ktrans.c:635
msgid "Always on top"
msgstr "সব সময় উপরে"
#. Buddy List trans options
-#: ../pidgin/plugins/win32/transparency/win2ktrans.c:619
msgid "Buddy List Window"
msgstr "বন্ধু তালিকার উইন্ডো"
-#: ../pidgin/plugins/win32/transparency/win2ktrans.c:620
msgid "_Buddy List window transparency"
msgstr "বন্ধু তালিকা উইন্ডোর স্বচ্ছতা (_B)"
-#: ../pidgin/plugins/win32/transparency/win2ktrans.c:633
msgid "Remove Buddy List window transparency on focus"
msgstr "ফোকাসে বন্ধু তালিকার উইন্ডোর স্বচ্ছতা অপসারণ করুন"
@@ -20128,19 +14859,16 @@ msgstr "ফোকাসে বন্ধু তালিকার উইন্ড
#. *< dependencies
#. *< priority
#. *< id
-#: ../pidgin/plugins/win32/transparency/win2ktrans.c:693
msgid "Transparency"
msgstr "স্বচ্ছতা"
#. *< name
#. *< version
#. * summary
-#: ../pidgin/plugins/win32/transparency/win2ktrans.c:696
msgid "Variable Transparency for the buddy list and conversations."
msgstr "বন্ধু তালিকা ও কথোপকথনের জন্য ভেরিয়েবল স্বচ্ছতা।"
#. * description
-#: ../pidgin/plugins/win32/transparency/win2ktrans.c:698
msgid ""
"This plugin enables variable alpha transparency on conversation windows and "
"the buddy list.\n"
@@ -20151,55 +14879,40 @@ msgstr ""
"\n"
"* নোট: এই প্লাগইন Win2000 বা অপেক্ষাকৃত প্রয়োজন।"
-#: ../pidgin/plugins/win32/winprefs/winprefs.c:303
msgid "GTK+ Runtime Version"
msgstr "GTK+ চলমান সংস্করণ"
#. Autostart
-#: ../pidgin/plugins/win32/winprefs/winprefs.c:311
msgid "Startup"
msgstr "সূচনা"
-#: ../pidgin/plugins/win32/winprefs/winprefs.c:312
#, c-format
msgid "_Start %s on Windows startup"
msgstr "উইন্ডোজ শুরুর সময় %s কে চালু করুন (_S)"
-#: ../pidgin/plugins/win32/winprefs/winprefs.c:327
msgid "_Dockable Buddy List"
msgstr "ডকযোগ্য বন্ধু তালিকা (_D)"
#. Blist On Top
-#: ../pidgin/plugins/win32/winprefs/winprefs.c:331
msgid "_Keep Buddy List window on top:"
msgstr "বন্ধু তালিকার উইন্ডো উপরে রাখুন (_K):"
#. XXX: Did this ever work?
-#: ../pidgin/plugins/win32/winprefs/winprefs.c:336
msgid "Only when docked"
msgstr "শুধুমাত্র যখন ডক করে"
-# fix me
-#: ../pidgin/plugins/win32/winprefs/winprefs.c:341
-msgid "_Flash window when chat messages are received"
-msgstr "আড্ডার বার্তাসমূহ গ্রহণ করলে উইন্ডো ফ্ল্যাশ দিন (_F)"
-
-#: ../pidgin/plugins/win32/winprefs/winprefs.c:371
msgid "Windows Pidgin Options"
msgstr "উইন্ডোজের পিজিন পছন্দসমূহ"
-#: ../pidgin/plugins/win32/winprefs/winprefs.c:373
msgid "Options specific to Pidgin for Windows."
msgstr "উইন্ডোজের জন্য পিজিনে উল্লেখিত পছন্দসমূহ।"
# fix me
-#: ../pidgin/plugins/win32/winprefs/winprefs.c:374
msgid ""
"Provides options specific to Pidgin for Windows , such as buddy list docking."
msgstr ""
"উইন্ডোজের জন্য পিজিনে উল্লেখিত পছন্দগুলো প্রদান করে , যেমন বন্ধু তালিকা দেখানো।"
-#: ../pidgin/plugins/xmppconsole.c:670
msgid "<font color='#777777'>Logged out.</font>"
msgstr "<font color='#777777'>লগ আউট হয়েছে।</font>"
@@ -20209,30 +14922,23 @@ msgstr "<font color='#777777'>লগ আউট হয়েছে।</font>"
#. *< dependencies
#. *< priority
#. *< id
-#: ../pidgin/plugins/xmppconsole.c:749 ../pidgin/plugins/xmppconsole.c:844
-#: ../pidgin/plugins/xmppconsole.c:863
msgid "XMPP Console"
msgstr "XMPP কনসোল"
-#: ../pidgin/plugins/xmppconsole.c:756
msgid "Account: "
msgstr "একাউন্ট:"
-#: ../pidgin/plugins/xmppconsole.c:783
msgid "<font color='#777777'>Not connected to XMPP</font>"
msgstr "<font color='#777777'>XMPP এর সাথে সংযুক্ত নয়</font>"
# tithi
-#: ../pidgin/plugins/xmppconsole.c:793
msgid "Insert an <iq/> stanza."
msgstr "একটি <iq/> পংক্তি যুক্ত করুন।"
# tithi
-#: ../pidgin/plugins/xmppconsole.c:802
msgid "Insert a <presence/> stanza."
msgstr "একটি <presence/> পংক্তি প্রবেশ করান।"
-#: ../pidgin/plugins/xmppconsole.c:811
msgid "Insert a <message/> stanza."
msgstr "একটি <message/> পংক্তি প্রবেশ করান।"
@@ -20240,16 +14946,21 @@ msgstr "একটি <message/> পংক্তি প্রবেশ করা
#. *< name
#. *< version
#. * summary
-#: ../pidgin/plugins/xmppconsole.c:866
msgid "Send and receive raw XMPP stanzas."
msgstr "নতুন XMPP পংক্তিগুলো পাঠান এবং গ্রহণ করুন।"
# tithi
#. * description
-#: ../pidgin/plugins/xmppconsole.c:868
msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr "এই প্লাগিনটি XMPP সার্ভার বা ক্লায়েন্ট ডিবাগ করার জন্য কার্যকর।"
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "MSN ঠিকানা বই পুনরূদ্ধারে ব্যর্থ হয়েছে"
+
+# fix me
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "আড্ডার বার্তাসমূহ গ্রহণ করলে উইন্ডো ফ্ল্যাশ দিন (_F)"
+
# tithi
#~ msgid ""
#~ "You may be disconnected shortly. You may want to use TOC until this is "
diff --git a/po/ca.po b/po/ca.po
index 7623d1de62..d91edf5d84 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -3,7 +3,7 @@
# Copyright (C) unknown, Robert Millan <zeratul2@wanadoo.es>
# Copyright (C) December 2003 (from 2003-12-12 until 2003-12-18),
# January (2004-01-07,12), Xan <dxpublica@telefonica.net>
-# Copyright (c) 2004, 2005, 2006, 2007, 2008
+# Copyright (c) 2004, 2005, 2006, 2007, 2008, 2009
# Josep Puigdemont i Casamajó <josep.puigdemont@gmail.com>
#
# This file is distributed under the same license as the Pidgin package.
@@ -33,8 +33,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-01-05 01:42+0100\n"
-"PO-Revision-Date: 2009-01-05 20:36+0100\n"
+"POT-Creation-Date: 2009-02-22 10:28+0100\n"
+"PO-Revision-Date: 2009-02-22 15:18+0100\n"
"Last-Translator: Josep Puigdemont i Casamajó <josep.puigdemont@gmail.com>\n"
"Language-Team: Catalan <tradgnome@softcatala.net>\n"
"MIME-Version: 1.0\n"
@@ -57,7 +57,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"
@@ -66,7 +66,8 @@ msgstr ""
"Forma d'ús: %s [OPCIÓ]...\n"
"\n"
" -c, --config=DIR utilitza DIR per als fitxers de configuració\n"
-" -d, --debug mostra missatges de depuració a la sortida estàndard\n"
+" -d, --debug mostra missatges de depuració a la sortida d'error\n"
+" estàndard \n"
" -h, --help mostra aquesta ajuda i surt\n"
" -n, --nologin no entra automàticament\n"
" -v, --version mostra la versió actual i surt\n"
@@ -1198,7 +1199,6 @@ msgstr "Minuts abans de canviar l'estat"
msgid "Change status to"
msgstr "Canvia l'estat a"
-#. Conversations
msgid "Conversations"
msgstr "Converses"
@@ -1522,7 +1522,6 @@ msgstr ""
"Quan s'obri una nova conversa aquest connector inserirà la darrera conversa "
"en la conversa actual."
-#, c-format
msgid "Online"
msgstr "En línia"
@@ -1959,7 +1958,6 @@ 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"
@@ -1967,7 +1965,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"
@@ -2168,7 +2165,6 @@ msgstr "(%s) %s <RESPOSTA-AUTOMÀTICA>: %s\n"
msgid "You are using %s, but this plugin requires %s."
msgstr "Esteu emprant %s, però aquest connector requereix %s."
-#, c-format
msgid "This plugin has not defined an ID."
msgstr "Aquest connector no ha definit cap ID."
@@ -2866,7 +2862,6 @@ 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"
@@ -2899,6 +2894,10 @@ msgstr "Connector per al protocol Bonjour"
msgid "Purple Person"
msgstr "Persona porpra"
+#. Creating the options for the protocol
+msgid "Local Port"
+msgstr "Port local"
+
msgid "Bonjour"
msgstr "Bonjour"
@@ -3063,7 +3062,6 @@ 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"
@@ -3961,7 +3959,6 @@ msgstr "Xerraire"
msgid "Extended Away"
msgstr "Absent des de fa una bona estona"
-#, c-format
msgid "Do Not Disturb"
msgstr "No molesteu"
@@ -4714,9 +4711,6 @@ msgstr "Accions"
msgid "Select an action"
msgstr "Seleccioneu una acció"
-msgid "Unable to retrieve MSN Address Book"
-msgstr "No s'ha pogut obtenir la llibreta d'adreces MSN"
-
#. only notify the user about problems adding to the friends list
#. * maybe we should do something else for other lists, but it probably
#. * won't cause too many problems if we just ignore it
@@ -6192,7 +6186,6 @@ 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 aquesta conferència. No s'hi poden enviar més missatges."
@@ -6459,23 +6452,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"
@@ -7039,6 +7027,7 @@ msgstr "C_onnecta"
msgid "Get AIM Info"
msgstr "Obtén informació de AIM"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "Edita el comentari sobre l'amic"
@@ -7150,7 +7139,6 @@ 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."
@@ -7695,6 +7683,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 "Mostra la sala de xat quan hi arribin missatges"
+
# FIXME: keep alive -> permanència
msgid "Keep alive interval (seconds)"
msgstr "Interval de permanència (en segons)"
@@ -11454,6 +11445,9 @@ msgstr "Lituà"
msgid "Macedonian"
msgstr "Macedoni"
+msgid "Mongolian"
+msgstr "Mongol"
+
msgid "Bokmål Norwegian"
msgstr "Noruec bokmål"
@@ -11572,8 +11566,30 @@ msgstr ""
"<BR><BR>"
#, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
-msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin a 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\">PMF:</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\">Ajuda per correu electrònic:</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\">Canal d'IRC:</FONT> #pidgin a 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 "Desenvolupadors actuals"
@@ -12242,6 +12258,12 @@ msgstr ""
msgid "Pidgin"
msgstr "Pidgin"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
+"Ara se sortirà atès que ja hi ha un altre client del libpurple executant-"
+"se.\n"
+
msgid "Open All Messages"
msgstr "Obre tots els missatges"
@@ -12590,6 +12612,10 @@ 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 "Empra DNS remot amb servidors intermediàris SOCKS4"
+
msgid "_User:"
msgstr "_Usuari:"
@@ -14050,9 +14076,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 parpellegi quan arribin missatges de xat"
-
msgid "Windows Pidgin Options"
msgstr "Opcions del Pidgin per al Windows"
@@ -14103,6 +14126,12 @@ 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 "Unable to retrieve MSN Address Book"
+#~ msgstr "No s'ha pogut obtenir la llibreta d'adreces MSN"
+
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "_Fes que la finestra parpellegi quan arribin missatges de xat"
+
#~ msgid ""
#~ "You may be disconnected shortly. You may want to use TOC until this is "
#~ "fixed. Check %s for updates."
diff --git a/po/da.po b/po/da.po
index 7b6435d87b..c4aec780d4 100644
--- a/po/da.po
+++ b/po/da.po
@@ -1,25 +1,32 @@
-# Pidgin Danish translation
-# Copyright (C) 2003-2006, Morten Brix Pedersen <morten@wtf.dk>
-# Copyright (C) 2007-2009, Peter Bach <bach.peter@gmail.com>
-#
+# Pidgin Danish translation.
+# Copyright (C) 2003-2009 Free Software Foundation, Inc.
# This file is distributed under the same license as the Pidgin package.
+# Morten Brix Pedersen <morten@wtf.dk>, 2003-2006
+# Peter Bach <bach.peter@gmail.com>, 2007-2009
#
# Konventioner:
# Buddy list, Contact list = venneliste
# Buddy pounce = overvågning (som i venneovervågning)
# Away = fravær eller fraværende
+# Online = tilkoblet
+# Offline = afkoblet
+# Join = tilslutte
# IM / IMs = besked / beskeder
# Mouse Gesture = Musebevægelse
# Friendly Name (MSN protokollen) = synligt navn
# Tray Icon = Statusikon
# Ban = Udvis
+# Signature = underskrift
+# Link = henvisning
+# web = internet
+# token = nøgle (netværkstermologi)
#
msgid ""
msgstr ""
-"Project-Id-Version: Pidgin 2.0.0\n"
+"Project-Id-Version: Pidgin 2.5.5\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-02-22 13:16-0500\n"
-"PO-Revision-Date: 2009-02-22 14:04+0100\n"
+"PO-Revision-Date: 2009-02-23 18:17+0100\n"
"Last-Translator: Peter Bach <bach.peter@gmail.com>\n"
"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
"MIME-Version: 1.0\n"
@@ -50,21 +57,15 @@ msgstr ""
"%s\n"
"Brug: %s [TILVALG]...\n"
"\n"
-" -c, --config=MAPPE brug MAPPE for opsætningsfiler\n"
+" -c, --config=DIR brug DIR for opsætningsfiler\n"
" -d, --debug udskriv fejlsøgningsbeskeder til stderr\n"
-" -h, --help vis denne hjælp og afslut\n"
+" -h, --help vis denne hjælp og afslut\n"
" -n, --nologin log ikke ind automatisk\n"
" -v, --version vis nuværende version og afslut\n"
#, c-format
-msgid ""
-"%s encountered errors migrating your settings from %s to %s. Please "
-"investigate and complete the migration by hand. Please report this error at "
-"http://developer.pidgin.im"
-msgstr ""
-"%s opdagede fejl ved migrering af dine indstillinger fra %s til %s. Undersøg "
-"og afslut migreringen manuelt. Venligst rapporter denne fejl på http://"
-"developer.pidgin.im"
+msgid "%s encountered errors migrating your settings from %s to %s. Please investigate and complete the migration by hand. Please report this error at http://developer.pidgin.im"
+msgstr "%s opdagede fejl ved migrering af dine indstillinger fra %s til %s. Undersøg og færdiggør migreringen manuelt. Venligst rapportér denne fejl på http://developer.pidgin.im"
msgid "Error"
msgstr "Fejl"
@@ -169,7 +170,7 @@ msgid ""
"Online: %d\n"
"Total: %d"
msgstr ""
-"Opkoblet: %d\n"
+"Tilkoblet: %d\n"
"Total: %d"
#, c-format
@@ -197,7 +198,7 @@ msgid "You must select an account."
msgstr "Du skal vælge en konto."
msgid "The selected account is not online."
-msgstr "Den valgte konto er ikke online."
+msgstr "Den valgte konto er ikke tilkoblet."
msgid "Error adding buddy"
msgstr "Fejl ved tilføjelse af ven"
@@ -221,7 +222,7 @@ msgid "Please enter buddy information."
msgstr "Indtast venne-information."
msgid "Chats"
-msgstr "Chat-rum"
+msgstr "Samtalerum"
#. Extract their Name and put it in
msgid "Name"
@@ -234,10 +235,10 @@ msgid "Group"
msgstr "Gruppe"
msgid "Auto-join"
-msgstr "Auto-Deltag"
+msgstr "Auto-tilslut"
msgid "Add Chat"
-msgstr "Tilføj chat"
+msgstr "Tilføj samtale"
msgid "You can edit more information from the context menu later."
msgstr "Du kan redigere flere informationer fra højreklik-menuen senere."
@@ -255,7 +256,7 @@ msgid "Enter the name of the group"
msgstr "Indtast navnet på gruppen"
msgid "Edit Chat"
-msgstr "Redigér chat"
+msgstr "Redigér samtale"
msgid "Please Update the necessary fields."
msgstr "Venligst opdatér de nødvendige felter."
@@ -285,7 +286,7 @@ msgid "Blocked"
msgstr "Blokeret"
msgid "Show when offline"
-msgstr "Vis når offline"
+msgstr "Vis når afkoblet"
#, c-format
msgid "Please enter the new name for %s"
@@ -295,18 +296,16 @@ msgid "Rename"
msgstr "Omdøb"
msgid "Set Alias"
-msgstr "Sæt alias"
+msgstr "Angiv alias"
msgid "Enter empty string to reset the name."
msgstr "Indtast tom streng for at nulstille navnet."
msgid "Removing this contact will also remove all the buddies in the contact"
-msgstr ""
-"Ved at fjerne denne kontakt vil du også fjerne alle vennerne i denne kontakt"
+msgstr "Ved at fjerne denne kontakt vil du også fjerne alle vennerne i denne kontakt"
msgid "Removing this group will also remove all the buddies in the group"
-msgstr ""
-"Ved at fjerne denne gruppe vil du også fjerne alle vennerne i denne gruppe"
+msgstr "Ved at fjerne denne gruppe vil du også fjerne alle vennerne i denne gruppe"
#, c-format
msgid "Are you sure you want to remove %s?"
@@ -354,18 +353,16 @@ msgid "Plugins"
msgstr "Udvidelsesmoduler"
msgid "Block/Unblock"
-msgstr "Blokér/Afblokér"
+msgstr "Blokér/frigiv"
msgid "Block"
msgstr "Blokér"
msgid "Unblock"
-msgstr "Afblokér"
+msgstr "Frigiv"
-msgid ""
-"Please enter the username or alias of the person you would like to Block/"
-"Unblock."
-msgstr "Indtast brugernavnet eller alias på personen du vil blokere/afblokere."
+msgid "Please enter the username or alias of the person you would like to Block/Unblock."
+msgstr "Indtast brugernavnet eller alias på personen du vil blokere/frigive."
#. Not multiline
#. Not masked?
@@ -383,39 +380,35 @@ msgid "Channel"
msgstr "Kanal"
msgid "Join a Chat"
-msgstr "Deltag i en chat"
+msgstr "Tilslut en samtale"
msgid "Please enter the name of the chat you want to join."
-msgstr "Indtast navnet på den chat du vil tilslutte."
+msgstr "Indtast navnet på den samtale du vil tilslutte."
msgid "Join"
-msgstr "Deltag"
+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"
msgstr "Indstillinger"
msgid "Send IM..."
-msgstr "Send kvik-besked..."
+msgstr "Send besked..."
msgid "Block/Unblock..."
-msgstr "Blokér/Afblokér..."
+msgstr "Blokér/frigiv..."
msgid "Join Chat..."
-msgstr "Tilslut chat..."
+msgstr "Tilslut samtale..."
msgid "View Log..."
msgstr "Vis log..."
msgid "View All Logs"
-msgstr "Vis alle logge"
+msgstr "Vis alle logger"
msgid "Show"
msgstr "Vis"
@@ -424,7 +417,7 @@ msgid "Empty groups"
msgstr "Tomme grupper"
msgid "Offline buddies"
-msgstr "Offline venner"
+msgstr "Afkoblede venner"
msgid "Sort"
msgstr "Sortér"
@@ -442,7 +435,7 @@ msgid "Buddy"
msgstr "Ven"
msgid "Chat"
-msgstr "Chat"
+msgstr "Samtale"
msgid "Grouping"
msgstr "Gruppering"
@@ -478,7 +471,7 @@ msgid ""
"Export to file %s failed.\n"
"Check that you have write permission to the target path\n"
msgstr ""
-"Fejl ved eksportering af filen %s.\n"
+"Fejl ved eksportering til filen %s.\n"
"Kontroller at du har skriverettigheder til målstien\n"
msgid "Certificate Export Error"
@@ -511,7 +504,7 @@ msgstr "SSL-værtscertifikat"
#, c-format
msgid "Really delete certificate for %s?"
-msgstr "Vil du slette certifikat for %s?"
+msgstr "Vil du slette certifikat til %s?"
msgid "Confirm certificate delete"
msgstr "Bekræft sletning af certifikat"
@@ -542,39 +535,32 @@ 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 chat. Du vil automatisk "
-"blive tilsluttet til chatten igen når kontoen genforbinder."
+msgid "The account has disconnected and you are no longer in this chat. You will be automatically rejoined in the chat when the account reconnects."
+msgstr "Kontoen har afbrudt og du er ikke længere i denne samtale. Du vil automatisk blive tilsluttet til samtalen igen når kontoen genforbinder."
msgid "No such command."
msgstr "Ingen kommando ved det navn."
msgid "Syntax Error: You typed the wrong number of arguments to that command."
-msgstr ""
-"Syntaksfejl: Du indtastede det forkert antal argumenter til den kommando."
+msgstr "Syntaksfejl: Du indtastede det forkert antal argumenter til den kommando."
msgid "Your command failed for an unknown reason."
msgstr "Din kommando fejlede pga. en ukendt årsag."
msgid "That command only works in chats, not IMs."
-msgstr "Den kommando virker kun i chats, ikke i samtalevinduer."
+msgstr "Den kommando virker kun i samtaler, ikke i beskeder."
msgid "That command only works in IMs, not chats."
-msgstr "Den besked virker kun i samtalevinduer, ikke i chats."
+msgstr "Den besked virker kun i beskeder, ikke i samtaler."
msgid "That command doesn't work on this protocol."
msgstr "Den kommando virker ikke med denne protokol."
@@ -599,15 +585,13 @@ msgstr ""
"%s skriver..."
msgid "You have left this chat."
-msgstr "Du har forladt denne chat."
+msgstr "Du har forladt denne samtale."
msgid "Logging started. Future messages in this conversation will be logged."
msgstr "Logning startet. Fremtidige beskeder i denne samtale vil blive logget."
-msgid ""
-"Logging stopped. Future messages in this conversation will not be logged."
-msgstr ""
-"Logning stoppet. Fremtidige beskeder i denne samtale vil ikke blive logget."
+msgid "Logging stopped. Future messages in this conversation will not be logged."
+msgstr "Logning stoppet. Fremtidige beskeder i denne samtale vil ikke blive logget."
msgid "Send To"
msgstr "Send til"
@@ -641,7 +625,7 @@ msgid "Invite..."
msgstr "Invitér..."
msgid "Enable Logging"
-msgstr "Aktiver logning"
+msgstr "Aktivér logning"
msgid "Enable Sounds"
msgstr "Aktivér lyde"
@@ -669,34 +653,21 @@ 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 en chat."
+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."
@@ -705,38 +676,28 @@ msgid "help &lt;command&gt;: Help on a specific command."
msgstr "help &lt;kommando&gt;: Hjælp til en specifik kommando."
msgid "users: Show the list of users in the chat."
-msgstr "brugere: Vis listen over brugere i chatten."
+msgstr "users: Vis listen over brugere i samtalen."
msgid "plugins: Show the plugins window."
-msgstr "udvidelsesmoduler: Vis udvidelsesmodul-vinduet."
+msgstr "plugins: Vis vinduet for udvidelsesmoduler."
msgid "buddylist: Show the buddylist."
-msgstr "venneliste: Vis vennelisten."
+msgstr "buddylist: Vis vennelisten."
msgid "accounts: Show the accounts window."
-msgstr "konti: Vis konto-vinduet."
+msgstr "accounts: Vis konto-vinduet."
msgid "debugwin: Show the debug window."
-msgstr "fejlsøgningsvin: Vis fejlsøgningsvinduet."
+msgstr "debugwin: Vis fejlsøgningsvinduet."
msgid "prefs: Show the preference window."
-msgstr "indst: Vis indstillingsvinduet."
+msgstr "prefs: Vis indstillingsvinduet."
msgid "statuses: Show the savedstatuses window."
-msgstr "status: Vis gemte statuser-vinduet."
+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."
@@ -806,7 +767,7 @@ msgstr "Fejlede"
#, c-format
msgid "%.2f KiB/s"
-msgstr "%.2f KB/s"
+msgstr "%.2f KiB/s"
msgid "Sent"
msgstr "Sendt"
@@ -838,25 +799,14 @@ 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 ""
-"Chats vil kun blive logget hvis \"Log alle chats\" indstillingen er slået "
-"til."
+msgid "Chats will only be logged if the \"Log all chats\" preference is enabled."
+msgstr "Samtaler vil kun blive logget hvis \"Log alle samtaler\" indstillingen er slået til."
msgid "No logs were found"
msgstr "Ingen logs blev fundet"
@@ -901,7 +851,7 @@ msgstr[0] "%s (%s) har %d ny besked."
msgstr[1] "%s (%s) har %d nye beskeder."
msgid "New Mail"
-msgstr "Ny email"
+msgstr "Ny post"
#, c-format
msgid "Info for %s"
@@ -929,7 +879,7 @@ msgid "loading plugin failed"
msgstr "fejl ved indlæsning af udvidelsesmodul"
msgid "unloading plugin failed"
-msgstr "afmontering af udvidelsesmodul fejlede"
+msgstr "udlæsning af udvidelsesmodul fejlede"
#, c-format
msgid ""
@@ -951,7 +901,7 @@ msgid "Plugin need to be loaded before you can configure it."
msgstr "Udvidelsesmodul skal indlæses før du kan konfigurere det."
msgid "No configuration options for this plugin."
-msgstr "Ingen konfigurationsmuligheder for dette udvidelsesmodul."
+msgstr "Ingen konfigurationsindstillinger for dette udvidelsesmodul."
msgid "Error loading plugin"
msgstr "Fejl ved indlæsning af udvidelsesmodul"
@@ -959,16 +909,14 @@ 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"
msgid "You can (un)load plugins from the following list."
-msgstr "Du kan (af)koble udvidelsesmoduler fra følgende liste."
+msgstr "Du kan (ud)læse udvidelsesmoduler fra følgende liste."
msgid "Install Plugin..."
msgstr "Installér udvidelsesmodul..."
@@ -1045,7 +993,7 @@ msgid "Open an IM window"
msgstr "Åbn et beskedvindue"
msgid "Pop up a notification"
-msgstr "Popup en påmindelse"
+msgstr "Pop op en påmindelse"
msgid "Send a message"
msgstr "Send en besked"
@@ -1120,7 +1068,7 @@ msgstr "%s har sendt dig en besked. (%s)"
#, c-format
msgid "Unknown pounce event. Please report this!"
-msgstr "Ukendt handling ved overvågning. Venligst rapportér dette!"
+msgstr "Ukendt hændelse ved overvågning. Venligst rapportér dette!"
msgid "Based on keyboard use"
msgstr "Baseret på keyboardbrug"
@@ -1144,10 +1092,10 @@ msgid "Log format"
msgstr "Log-format"
msgid "Log IMs"
-msgstr "Log kvik-beskeder"
+msgstr "Log beskeder"
msgid "Log chats"
-msgstr "Log chats"
+msgstr "Log samtaler"
msgid "Log status change events"
msgstr "Log status-ændringer handlinger"
@@ -1156,13 +1104,13 @@ msgid "Report Idle time"
msgstr "Rapportér inaktiv tid"
msgid "Change status when idle"
-msgstr "Skift status ved inaktivitet"
+msgstr "Ændr status ved inaktivitet"
msgid "Minutes before changing status"
msgstr "Minutter før ændring af status"
msgid "Change status to"
-msgstr "Skift status til"
+msgstr "Ændr status til"
msgid "Conversations"
msgstr "Samtaler"
@@ -1171,10 +1119,10 @@ msgid "Logging"
msgstr "Logning"
msgid "You must fill all the required fields."
-msgstr "Du skal udfylde alle de påkrævede felter."
+msgstr "Du skal udfylde alle de krævede felter."
msgid "The required fields are underlined."
-msgstr "De påkrævede felter er understreget."
+msgstr "De felter som kræves er understreget."
msgid "Not implemented yet."
msgstr "Ikke implementeret endnu."
@@ -1186,7 +1134,7 @@ msgid "Open File..."
msgstr "Åbn fil..."
msgid "Choose Location..."
-msgstr "Bestem placering..."
+msgstr "Vælg placering..."
msgid "Hit 'Enter' to find more rooms of this category."
msgstr "Tryk \"Retur\" for at finde flere rum af denne kategori."
@@ -1214,19 +1162,19 @@ msgid "Message sent"
msgstr "Besked sendt"
msgid "Person enters chat"
-msgstr "Person kommer ind i chat"
+msgstr "Person kommer ind i samtale"
msgid "Person leaves chat"
-msgstr "Person forlader chat"
+msgstr "Person forlader samtale"
msgid "You talk in chat"
-msgstr "Du taler i chat"
+msgstr "Du taler i samtale"
msgid "Others talk in chat"
-msgstr "Andre snakker i chat"
+msgstr "Andre taler i samtale"
msgid "Someone says your username in chat"
-msgstr "Nogle siger dit navn i en chat"
+msgstr "Nogle siger dit brugernavn i en samtale"
msgid "GStreamer Failure"
msgstr "GStreamer fejl"
@@ -1351,7 +1299,7 @@ msgid "Duplicate title"
msgstr "Dublet titel"
msgid "Please enter a different title for the status."
-msgstr "Brug en anden titel for statussen."
+msgstr "Brug en anden titel for den status."
msgid "Substatus"
msgstr "Understatus"
@@ -1391,22 +1339,16 @@ 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"
msgid "Clipboard plugin"
-msgstr "Udklipsholder-udvidelsesmodul"
+msgstr "Klippebords-udvidelsesmodul"
-msgid ""
-"When the gnt clipboard contents change, the contents are made available to "
-"X, if possible."
-msgstr ""
-"Når gnt-udklipsbordrets indhold ændrer sig, bliver indholdet gjort "
-"tilgængelig for X, hvis det er muligt."
+msgid "When the gnt clipboard contents change, the contents are made available to X, if possible."
+msgstr "Når gnt-klippebordets indhold ændrer sig, bliver indholdet gjort tilgængelig for X, hvis det er muligt."
#, c-format
msgid "%s just signed on"
@@ -1432,13 +1374,13 @@ msgid "Buddy signs on/off"
msgstr "Ven logger ind/ud"
msgid "You receive an IM"
-msgstr "Du har modtaget en kvik-besked"
+msgstr "Du har modtaget en besked"
msgid "Someone speaks in a chat"
-msgstr "Nogle taler i en chat"
+msgstr "Nogle taler i en samtale"
msgid "Someone says your name in a chat"
-msgstr "Nogle siger dit navn i en chat"
+msgstr "Nogle siger dit navn i en samtale"
msgid "Notify with a toaster when"
msgstr "Påmind med en toaster når"
@@ -1460,18 +1402,16 @@ msgid "<b>Conversation with %s on %s:</b><br>"
msgstr "<b>Samtale med %s på %s</b><br>"
msgid "History Plugin Requires Logging"
-msgstr "Historik modul kræver logning"
+msgstr "Historikmodul kræver logning"
msgid ""
"Logging can be enabled from Tools -> Preferences -> Logging.\n"
"\n"
-"Enabling logs for instant messages and/or chats will activate history for "
-"the same conversation type(s)."
+"Enabling logs for instant messages and/or chats will activate history for the same conversation type(s)."
msgstr ""
"Logning kan slås til i Værktøjer -> Indstillinger -> Logning.\n"
"\n"
-"Ved at slå logs til for beskeder og/eller chats, vil det aktivere "
-"historikken for de samme samtale typer."
+"Ved at slå logs til for beskeder og/eller samtaler, vil det aktivere historikken for de samme samtale typer."
msgid "GntHistory"
msgstr "GntHistorik"
@@ -1479,27 +1419,23 @@ 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 "Logget ind"
+msgstr "Tilkoblet"
msgid "Offline"
-msgstr "Offline"
+msgstr "Afkoblet"
msgid "Online Buddies"
-msgstr "Online venner"
+msgstr "Tilkoblede venner"
msgid "Offline Buddies"
-msgstr "Offline venner"
+msgstr "Afkoblede venner"
msgid "Online/Offline"
-msgstr "Online/Offline"
+msgstr "Til-/Afkoblede"
msgid "Meebo"
msgstr "Meebo"
@@ -1514,7 +1450,7 @@ msgid "Nested Grouping (experimental)"
msgstr "Indlejret gruppering (eksperimentel)"
msgid "Provides alternate buddylist grouping options."
-msgstr "Giver alternativ venneliste grupperingsmuligheder."
+msgstr "Giver alternative grupperingsindstillinger for venneliste."
msgid "Lastlog"
msgstr "Lastlog"
@@ -1569,14 +1505,14 @@ msgstr "Ny adgangskode (igen)"
#, c-format
msgid "Change password for %s"
-msgstr "Skift adgangskode for %s"
+msgstr "Ændr adgangskode for %s"
msgid "Please enter your current password and your new password."
msgstr "Indtast din nuværende og nye adgangskode."
#, c-format
msgid "Change user information for %s"
-msgstr "Skift bruger oplysninger for %s"
+msgstr "Ændr brugeroplysninger for %s"
msgid "Set User Info"
msgstr "Ret brugeroplysninger"
@@ -1623,7 +1559,7 @@ msgstr "SSL-modpart cache"
#. Make messages
#, c-format
msgid "Accept certificate for %s?"
-msgstr "Acceptér certifikat for %s?"
+msgstr "Acceptér certifikat til %s?"
#. TODO: Find what the handle ought to be
msgid "SSL Certificate Verification"
@@ -1637,17 +1573,13 @@ msgid "Reject"
msgstr "Afvis"
msgid "_View Certificate..."
-msgstr "_Se certifikat..."
+msgstr "_Vis certifikat..."
#. Prompt the user to authenticate the certificate
#. vrq will be completed by user_auth
#, c-format
-msgid ""
-"The certificate presented by \"%s\" is self-signed. It cannot be "
-"automatically checked."
-msgstr ""
-"Certifikatet præsenteret af \"%s\" er selvsigneret. Det kan ikke blive "
-"kontrolleret automatisk."
+msgid "The certificate presented by \"%s\" is self-signed. It cannot be automatically checked."
+msgstr "Certifikatet præsenteret af \"%s\" er selv underskrevet. Det kan ikke kontrolleres automatisk."
#, c-format
msgid "The certificate chain presented for %s is not valid."
@@ -1665,42 +1597,27 @@ 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 "
-"godkendes."
+msgid "You have no database of root certificates, so this certificate cannot be validated."
+msgstr "Du har ingen database med rodcertifikater, så dette certifikat kan ikke kontrolleres."
#. vrq will be completed by user_auth
-msgid ""
-"The root certificate this one claims to be issued by is unknown to Pidgin."
-msgstr ""
-"Rodcertifikatet, som denne påstår at være udgivet af, er ukendt af Pidgin."
+msgid "The root certificate this one claims to be issued by is unknown to Pidgin."
+msgstr "Rodcertifikatet, som denne påstår at være udgivet af, er ukendt af Pidgin."
#, c-format
-msgid ""
-"The certificate chain presented by %s does not have a valid digital "
-"signature from the Certificate Authority from which it claims to have a "
-"signature."
-msgstr ""
-"Certifikatkæden, præsenteret af %s, har ikke et gyldigt digitalt signatur "
-"fra den certificerende myndighed, som den påstår at have et signatur fra."
+msgid "The certificate chain presented by %s does not have a valid digital signature from the Certificate Authority from which it claims to have a signature."
+msgstr "Certifikatkæden, præsenteret af %s, har ikke en gyldig digital underskrift fra den certificerende myndighed, som den påstår at have en underskrift fra."
msgid "Invalid certificate authority signature"
-msgstr "Ugyldig signatur fra certificerende myndighed"
+msgstr "Ugyldig underskrift fra certificerende myndighed"
#. Prompt the user to authenticate the certificate
#. TODO: Provide the user with more guidance about why he is
#. being prompted
#. vrq will be completed by user_auth
#, c-format
-msgid ""
-"The certificate presented by \"%s\" claims to be from \"%s\" instead. This "
-"could mean that you are not connecting to the service you believe you are."
-msgstr ""
-"Certifikatet præsenteret af \"%s\" påstår at være fra \"%s\" i stedet. Dette "
-"kunne tyde på, at du ikke er forbundet til den service du tror du er."
+msgid "The certificate presented by \"%s\" claims to be from \"%s\" instead. This could mean that you are not connecting to the service you believe you are."
+msgstr "Certifikatet præsenteret af \"%s\" påstår at være fra \"%s\" i stedet. Dette kunne tyde på, at du ikke er forbundet til den tjeneste du tror du er."
#. Make messages
#, c-format
@@ -1802,17 +1719,17 @@ msgid "No name"
msgstr "Intet navn"
msgid "Unable to create new resolver process\n"
-msgstr "Kunne ikke oprette ny opløsningsproces\n"
+msgstr "Kunne ikke oprette ny løsningsproces\n"
msgid "Unable to send request to resolver process\n"
-msgstr "Kunne ikke sende forespørgelse til opløsningsproces\n"
+msgstr "Kunne ikke sende forespørgsel til løsningsproces\n"
#, c-format
msgid ""
"Error resolving %s:\n"
"%s"
msgstr ""
-"Fejl ved opløsning af %s:\n"
+"Fejl ved løsning af %s:\n"
"%s"
#, c-format
@@ -1824,12 +1741,12 @@ msgid ""
"Error reading from resolver process:\n"
"%s"
msgstr ""
-"Fejl ved indlæsning fra opløsningsproces:\n"
+"Fejl ved indlæsning fra løsningsproces:\n"
"%s"
#, c-format
msgid "Resolver process exited without answering our request"
-msgstr "Opløsningsprocess afsluttede uden svar på vores forespørgelse"
+msgstr "Løsningsprocess afsluttede uden svar på vores forespørgsel"
#, c-format
msgid "Thread creation failure: %s"
@@ -1994,68 +1911,32 @@ 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"
@@ -2088,10 +1969,10 @@ msgid "HTML"
msgstr "HTML"
msgid "Plain text"
-msgstr "Ren tekst"
+msgstr "Klartekst"
msgid "Old flat format"
-msgstr "Gammel fladformat"
+msgstr "Gammelt fladt format"
msgid "Logging of this conversation failed."
msgstr "Logning af denne samtale fejlede."
@@ -2100,20 +1981,12 @@ 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>"
@@ -2131,7 +2004,7 @@ msgid "You are using %s, but this plugin requires %s."
msgstr "Du bruger %s, men dette udvidelsesmodul kræver %s."
msgid "This plugin has not defined an ID."
-msgstr "Dette udvidelsesmodul har ikke defineret et ID."
+msgstr "Dette udvidelsesmodul har ikke defineret et id."
#, c-format
msgid "Plugin magic mismatch %d (need %d)"
@@ -2141,19 +2014,12 @@ 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, "
-"login 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"
@@ -2187,7 +2053,7 @@ msgid "When a file-transfer request arrives from %s"
msgstr "Når der ankommer en filoverførselsanmodning fra %s"
msgid "Set Autoaccept Setting"
-msgstr "Sæt automatisk accept indstillinger"
+msgstr "Indstil automatisk accept indstillinger"
msgid "_Save"
msgstr "_Gem"
@@ -2226,7 +2092,7 @@ msgstr ""
"(kun hvis der ikke er nogen konversation med senderen)"
msgid "Create a new directory for each user"
-msgstr "Opret et nyt bibliotek for hver bruger"
+msgstr "Opret et nyt katalog for hver bruger"
msgid "Notes"
msgstr "Noter"
@@ -2314,7 +2180,7 @@ msgid "I'dle Mak'er"
msgstr "Inaktivs opsætter"
msgid "Set Account Idle Time"
-msgstr "Sæt inaktiv tid for konto"
+msgstr "Indstil inaktiv tid for konto"
msgid "_Set"
msgstr "_Sæt"
@@ -2329,13 +2195,13 @@ msgid "_Unset"
msgstr "_Fjern"
msgid "Set Idle Time for All Accounts"
-msgstr "Sæt inaktiv tid for alle konti"
+msgstr "Indstil inaktiv tid for alle konti"
msgid "Unset Idle Time for All Idled Accounts"
msgstr "Fjern inaktiv tid fra alle inaktive konti"
msgid "Allows you to hand-configure how long you've been idle"
-msgstr "Tillader dig at manuelt sætte op hvor lang tid du har været inaktiv"
+msgstr "Tillader dig at indstille hvor lang tid du har været inaktiv"
#. *< type
#. *< ui_requirement
@@ -2353,12 +2219,8 @@ 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
@@ -2377,12 +2239,10 @@ 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/Del skjult konfiguration"
+msgstr "Tilslut/Deltag skjult konfiguration"
msgid "Minimum Room Size"
msgstr "Mindste rumstørrelse"
@@ -2400,7 +2260,7 @@ msgstr "Anvend skjulte regler for venner"
#. *< priority
#. *< id
msgid "Join/Part Hiding"
-msgstr "Tilslut/del skjul"
+msgstr "Skjul tilslut/deltag"
#. *< name
#. *< version
@@ -2409,12 +2269,8 @@ 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, undtager "
-"de brugere der aktivt tager del i en samtale."
+msgid "This plugin hides join/part messages in large rooms, except for those users actively taking part in a conversation."
+msgstr "Dette udvidelsesmodul skjuler tilslut/deltag-beskeder i store rum, undtagen de brugere der aktivt tager del i en samtale."
#. This is used in the place of a timezone abbreviation if the
#. * offset is way off. The user should never really see it, but
@@ -2424,7 +2280,7 @@ msgid "(UTC)"
msgstr "(UTC)"
msgid "User is offline."
-msgstr "Bruger er offline."
+msgstr "Bruger er afkoblet."
msgid "Auto-response sent:"
msgstr "Auto-svar sendt:"
@@ -2439,12 +2295,8 @@ 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."
@@ -2525,18 +2377,13 @@ 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 kvik-"
-"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"
@@ -2545,10 +2392,10 @@ msgid "Loads .NET plugins with Mono."
msgstr "Indlæser .NET moduler med Mono."
msgid "Add new line in IMs"
-msgstr "Tilføj ny linje i kvikbeskeder"
+msgstr "Tilføj ny linje i beskeder"
msgid "Add new line in Chats"
-msgstr "Tilføj ny line i chat"
+msgstr "Tilføj ny line i samtaler"
#. *< magic
#. *< major version
@@ -2568,35 +2415,21 @@ 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"
@@ -2637,12 +2470,8 @@ 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..."
@@ -2693,7 +2522,7 @@ msgstr "Test for at se de fleste ting virker."
#. Scheme name
msgid "X.509 Certificates"
-msgstr "X.509 certifikater"
+msgstr "X.509-certifikater"
#. *< type
#. *< ui_requirement
@@ -2741,7 +2570,7 @@ msgstr "SSL"
#. * summary
#. * description
msgid "Provides a wrapper around SSL support libraries."
-msgstr "En \"wrapper\" omkring SSL understøttelses biblioteker."
+msgstr "Giver et omslag omkring SSL-understøttelses biblioteker."
#, c-format
msgid "%s is no longer away."
@@ -2788,11 +2617,8 @@ 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"
@@ -2800,25 +2626,16 @@ 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 lbev ikke fundet, se oss på: http://"
-"d.pidgin.im/BonjourWindows for more 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"
@@ -2828,7 +2645,7 @@ msgid "Last name"
msgstr "Efternavn"
msgid "Email"
-msgstr "Email"
+msgstr "E-post"
msgid "AIM Account"
msgstr "AIM-konto"
@@ -2853,16 +2670,15 @@ msgid "Purple Person"
msgstr "Lilla person"
#. Creating the options for the protocol
-#, fuzzy
msgid "Local Port"
-msgstr "Lokalitet"
+msgstr "Lokal port"
msgid "Bonjour"
msgstr "Bonjour"
#, c-format
msgid "%s has closed the conversation."
-msgstr "%s har lukket samtalen."
+msgstr "%s har afsluttet samtalen."
msgid "Unable to send the message, the conversation couldn't be started."
msgstr "Kunne ikke sende beskedn; samtalen kunne ikke startes."
@@ -2880,19 +2696,16 @@ msgid "Error communicating with local mDNSResponder."
msgstr "Fejl under kommunikation med lokal mDNSResponder."
msgid "Invalid proxy settings"
-msgstr "Ugyldige mellemværts indstillinger"
+msgstr "Ugyldige proxyindstillinger"
-msgid ""
-"Either the host name or port number specified for your given proxy type is "
-"invalid."
-msgstr ""
-"Enten værtsnavnet eller porten der er angivet for din mellemvært er ugyldig."
+msgid "Either the host name or port number specified for your given proxy type is invalid."
+msgstr "Enten er værtsnavnet eller porten der er angivet for din proxytype ugyldig."
msgid "Token Error"
-msgstr "Token fejl"
+msgstr "Nøgle fejl"
msgid "Unable to fetch the token.\n"
-msgstr "Ikke i stand til at få fat i token.\n"
+msgstr "Ikke i stand til at få fat i nøgle.\n"
msgid "Save Buddylist..."
msgstr "Gem venneliste..."
@@ -2944,10 +2757,10 @@ msgid "Password (retype)"
msgstr "Adgangskode (tast igen)"
msgid "Enter current token"
-msgstr "Indtast nuværende symbol"
+msgstr "Indtast nuværende nøgle"
msgid "Current token"
-msgstr "Nuværende symbol"
+msgstr "Nuværende nøgle"
msgid "Register New Gadu-Gadu Account"
msgstr "Registrér ny Gadu-Gadu konto"
@@ -2974,7 +2787,7 @@ msgid "Female"
msgstr "Kvinde"
msgid "Only online"
-msgstr "Kun online"
+msgstr "Kun tilkoblede"
msgid "Find buddies"
msgstr "Find venner"
@@ -2992,7 +2805,7 @@ msgid "Unable to change password. Error occurred.\n"
msgstr "Kunne ikke ændre adgangskode. En fejl skete.\n"
msgid "Change password for the Gadu-Gadu account"
-msgstr "Skift adgangskode for Gadu-Gadu kontoen"
+msgstr "Ændr adgangskode for Gadu-Gadu-kontoen"
msgid "Password was changed successfully!"
msgstr "Adgangskoden blev ændret!"
@@ -3004,14 +2817,14 @@ msgid "Please, enter your current password and your new password for UIN: "
msgstr "Indtast din nuværende og nye adgangskode til UIN: "
msgid "Change Gadu-Gadu Password"
-msgstr "Skift Gadu-Gadu adgangskode"
+msgstr "Ændr Gadu-Gadu-adgangskode"
#, c-format
msgid "Select a chat for buddy: %s"
-msgstr "Vælg en chat for ven: %s"
+msgstr "Vælg en samtale for ven: %s"
msgid "Add to chat..."
-msgstr "Tilføj til chat..."
+msgstr "Tilføj til samtale..."
msgid "Available"
msgstr "Tilgængelig"
@@ -3062,19 +2875,19 @@ msgid "Your buddy list was stored on the server."
msgstr "Din venneliste blev gemt på serveren."
msgid "Connection failed."
-msgstr "Forbindelse mislykkedes."
+msgstr "Forbindelse fejlede."
msgid "Add to chat"
-msgstr "Tilføj til chat"
+msgstr "Tilføj til samtale"
msgid "Chat _name:"
-msgstr "Chat _navn:"
+msgstr "Samtale_navn:"
msgid "Chat error"
-msgstr "Chat fejl"
+msgstr "Fejl i samtale"
msgid "This chat name is already in use"
-msgstr "Dette chatnavn eksisterer allerede"
+msgstr "Dette samtalenavn eksisterer allerede"
msgid "Not connected to the server."
msgstr "Ikke forbundet til serveren."
@@ -3083,7 +2896,7 @@ msgid "Find buddies..."
msgstr "Find venner..."
msgid "Change password..."
-msgstr "Skift adgangskode..."
+msgstr "Ændr adgangskode..."
msgid "Upload buddylist to Server"
msgstr "Overfør venneliste til server"
@@ -3142,7 +2955,7 @@ msgid "No MOTD available"
msgstr "Ingen MOTD tilgængelig"
msgid "There is no MOTD associated with this connection."
-msgstr "Der er ingen MOTD associeret med denne forbindelse."
+msgstr "Der er ingen MOTD tilknyttet denne forbindelse."
#, c-format
msgid "MOTD for %s"
@@ -3266,7 +3079,7 @@ msgid "Idle for"
msgstr "Inaktiv i"
msgid "Online since"
-msgstr "Online siden"
+msgstr "Tilkoblet siden"
msgid "<b>Defining adjective:</b>"
msgstr "<b>Definerende adjektiv:</b>"
@@ -3324,7 +3137,7 @@ msgstr "Kunne ikke sende"
#, c-format
msgid "Joining %s requires an invitation."
-msgstr "Det kræver en invitation for at deltage i %s."
+msgstr "Det kræver en invitation for at tilslutte %s."
msgid "Invitation only"
msgstr "Kun invitation"
@@ -3345,19 +3158,11 @@ 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."
msgid "Cannot change nick"
msgstr "Kan ikke ændre navn"
@@ -3381,7 +3186,7 @@ msgid "Cannot join %s: Registration is required."
msgstr "Kan ikke tilslutte %s: Registrering krævet."
msgid "Cannot join channel"
-msgstr "Kan ikke deltage i kanalen"
+msgstr "Kan ikke tilslutte kanalen"
msgid "Nick or channel is temporarily unavailable."
msgstr "Navn eller kanal er midlertidigt utilgængelig."
@@ -3391,183 +3196,109 @@ msgid "Wallops from %s"
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."
+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]: Sæt 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."
+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][,...]]: 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 ""
-"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 chatrum 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."
+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."
+msgstr "names [kanal]: Vis brugerne der er på kanalen lige nu."
msgid "nick &lt;new nickname&gt;: Change your nickname."
-msgstr "nick &lt;nyt navn&gt;: Skift dit navn."
+msgstr "nick &lt;nyt navn&gt;: Ændr dit navn."
msgid "nickserv: Send a command to nickserv"
msgstr "nickserv: Send en kommando til nickserv"
msgid "notice &lt;target&lt;: Send a notice to a user or channel."
-msgstr "påmind &lt;targetl&lt;: Send en påmindelse til en bruger eller kanal."
+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."
+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."
+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."
msgid "topic [new topic]: View or change the channel topic."
-msgstr "topic [nyt emne]: Vis eller skift kanalens emne."
+msgstr "topic [nyt emne]: Vis eller ændr kanalens emne."
msgid "umode &lt;+|-&gt;&lt;A-Za-z&gt;: Set or unset a user mode."
-msgstr "umode &lt;+|-&gt;&lt;A-Za-z&gt;: Sæt eller fjern en bruger tilstand."
+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."
+msgstr "whois [server] &lt;navn&gt;: Hent oplysninger om en bruger."
msgid "whowas &lt;nick&gt;: Get information on a user that has logged off."
msgstr "whowas &lt;nick&gt;: Hent oplysninger om en bruger som er logget af."
@@ -3589,10 +3320,10 @@ msgid "Unknown Error"
msgstr "Ukendt fejl"
msgid "Ad-Hoc Command Failed"
-msgstr "Ad-Hoc kommando fejlede"
+msgstr "Ad-Hoc-kommando fejlede"
msgid "execute"
-msgstr "udfør"
+msgstr "kør"
msgid "Server requires TLS/SSL for login. No TLS/SSL support found."
msgstr "Server kræver SSL til logind. Ingen TLS/SSL-understøttelse fundet."
@@ -3601,18 +3332,14 @@ msgid "You require encryption, but no TLS/SSL support found."
msgstr "Du kræver kryptering, men ingen TLS/SSL-understøttelse blev fundet."
msgid "Server requires plaintext authentication over an unencrypted stream"
-msgstr "Server kræver ren tekst godkendelse over en ukrypteret strøm"
+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 ren tekst godkendelse 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 "Ren tekst godkendelse"
+msgstr "Godkendelse i klartekst"
msgid "Invalid response from server."
msgstr "Ugyldigt svar fra server."
@@ -3679,12 +3406,8 @@ 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 oplysninger er valgfri. Skriv kun de ting, du ønsker andre skal vide om "
-"dig."
+msgid "All items below are optional. Enter only the information with which you feel comfortable."
+msgstr "Alle elementerne nedenfor er valgfrie. Skriv kun de ting, du ønsker andre skal vide om dig."
msgid "Client"
msgstr "Klient"
@@ -3696,37 +3419,37 @@ msgid "Last Activity"
msgstr "Sidste aktivitet"
msgid "Service Discovery Info"
-msgstr "Serviceopdagelsesbesked"
+msgstr "Besked ved tjenesteopdagelse"
msgid "Service Discovery Items"
-msgstr "Punkter for serviceopdagelse"
+msgstr "Elementer for tjenesteopdagelse"
msgid "Extended Stanza Addressing"
msgstr "Udvidet Stanza-adressering"
msgid "Multi-User Chat"
-msgstr "Flerbruger chat"
+msgstr "Flerbrugersamtale"
msgid "Multi-User Chat Extended Presence Information"
-msgstr "Udvidet oplysning om multibruger samtale tilstedeværelse"
+msgstr "Flerbrugersamtale udvidede tilstedeværelsesinformation"
msgid "In-Band Bytestreams"
msgstr "In-Band-bytestrømme"
msgid "Ad-Hoc Commands"
-msgstr "Ad-Hoc kommandoer"
+msgstr "Ad-Hoc-kommandoer"
msgid "PubSub Service"
-msgstr "PubSub-service"
+msgstr "PubSub-tjeneste"
msgid "SOCKS5 Bytestreams"
msgstr "SOCKS5-bytestrømme"
msgid "Out of Band Data"
-msgstr "Løbet tør for Band-data"
+msgstr "Out of Band Data"
msgid "XHTML-IM"
-msgstr "XHTML-kvikbesked"
+msgstr "XHTML-besked"
msgid "In-Band Registration"
msgstr "In-Band-registrering"
@@ -3738,7 +3461,7 @@ msgid "User Avatar"
msgstr "Brugeravatar"
msgid "Chat State Notifications"
-msgstr "Chat status påmindelser"
+msgstr "Samtalestatus påmindelser"
msgid "Software Version"
msgstr "Software version"
@@ -3756,7 +3479,7 @@ msgid "User Activity"
msgstr "Brugeraktivitet"
msgid "Entity Capabilities"
-msgstr "Entitetskapabiliteter"
+msgstr "Enhedsegenskaber"
msgid "Encrypted Session Negotiations"
msgstr "Krypterede sessionsforhandlinger"
@@ -3765,7 +3488,7 @@ msgid "User Tune"
msgstr "Brugermelodi"
msgid "Roster Item Exchange"
-msgstr "Mønstring af elementudveksling"
+msgstr "Navneliste over elementudveksling"
msgid "Reachability Address"
msgstr "E-post-adresse"
@@ -3801,13 +3524,13 @@ msgid "Message Receipts"
msgstr "Beskedmodtagere"
msgid "Public Key Publishing"
-msgstr "Udgivelse af offentlige nøgle"
+msgstr "Udgivelse af offentlig nøgle"
msgid "User Chatting"
-msgstr "Bruger chatter"
+msgstr "Bruger samtaler"
msgid "User Browsing"
-msgstr "Bruger surfer"
+msgstr "Bruger browser"
msgid "User Gaming"
msgstr "Bruger spiller"
@@ -3819,7 +3542,7 @@ msgid "Ping"
msgstr "Ping"
msgid "Stanza Encryption"
-msgstr "Stanza kryptering"
+msgstr "Stanza-kryptering"
msgid "Entity Time"
msgstr "Tidsenhed"
@@ -3831,16 +3554,16 @@ msgid "Collaborative Data Objects"
msgstr "Samarbejdende dataobjekter"
msgid "File Repository and Sharing"
-msgstr "Filarkiv og deling"
+msgstr "Filarkiv og -deling"
msgid "STUN Service Discovery for Jingle"
-msgstr "STUN-serviceopdagelse for Jingle"
+msgstr "STUN-tjenesteopdagelse for Jingle"
msgid "Simplified Encrypted Session Negotiation"
msgstr "Simplificeret krypteret sessionsforhandling"
msgid "Hop Check"
-msgstr "Hop kontrol"
+msgstr "Hop-kontrol"
msgid "Capabilities"
msgstr "Klient understøtter"
@@ -3892,7 +3615,7 @@ msgid "Log Out"
msgstr "Log af"
msgid "Chatty"
-msgstr "Vil gerne chatte"
+msgstr "Vil gerne samtale"
msgid "Extended Away"
msgstr "Totalt fraværende"
@@ -3910,15 +3633,11 @@ 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ørgelse fejlede"
+msgstr "Mappe forespørgsel fejlede"
msgid "Could not query the directory server."
msgstr "Kunne ikke forespørge mappe-serveren."
@@ -3933,10 +3652,10 @@ msgid "Fill in one or more fields to search for any matching XMPP users."
msgstr "Udfyld et eller flere felter for at søge efter XMPP-brugere."
msgid "Email Address"
-msgstr "Email adresse"
+msgstr "E-postadresse"
msgid "Search for XMPP users"
-msgstr "Søg efter en XMPP-brugere"
+msgstr "Søg efter XMPP-brugere"
#. "Search"
msgid "Search"
@@ -4000,7 +3719,7 @@ msgid "Registration error"
msgstr "Fejl under registrering"
msgid "Nick changing not supported in non-MUC chatrooms"
-msgstr "Ændring af navn ikke understøttet i ikke-MUC chatrum"
+msgstr "Ændring af navn ikke understøttet i ikke-MUC samtalerum"
msgid "Error retrieving room list"
msgstr "Fejl ved modtagelse af rumliste"
@@ -4018,7 +3737,7 @@ msgid "Find Rooms"
msgstr "Find rum"
msgid "You require encryption, but it is not available on this server."
-msgstr "Du kræver kryptering, men det er ikke muligt på denne server."
+msgstr "Du kræver kryptering, men det er ikke tilrådighed på denne server."
msgid "Write error"
msgstr "Fejl ved skrivning"
@@ -4044,7 +3763,7 @@ msgid "Invalid XMPP ID"
msgstr "Ugyldigt XMPP-id"
msgid "Invalid XMPP ID. Domain must be set."
-msgstr "Ugyldigt XMPP ID. Domæne skal angives."
+msgstr "Ugyldigt XMPP-id. Domæne skal angives."
#, c-format
msgid "Registration of %s@%s successful"
@@ -4088,9 +3807,8 @@ msgstr "Dato"
msgid "Unregister"
msgstr "Afregistrér"
-msgid ""
-"Please fill out the information below to change your account registration."
-msgstr "Udfyld oplysninger forneden for at ændre kontoregistrering."
+msgid "Please fill out the information below to change your account registration."
+msgstr "Udfyld oplysninger forneden for at ændre din kontoregistrering."
msgid "Please fill out the information below to register your new account."
msgstr "Udfyld oplysninger forneden for at registrere din nye konto."
@@ -4103,14 +3821,14 @@ msgstr "Registrér"
#, c-format
msgid "Change Account Registration at %s"
-msgstr "Skift brugerregistrering på %s"
+msgstr "Ændr brugerregistrering på %s"
#, c-format
msgid "Register New Account at %s"
msgstr "Registrér ny konto på %s"
msgid "Change Registration"
-msgstr "Skift registrering"
+msgstr "Ændr registrering"
msgid "Error unregistering account"
msgstr "Fejl ved afregistrering af konto"
@@ -4209,7 +3927,7 @@ msgid "Password (again)"
msgstr "Adgangskode (igen)"
msgid "Change XMPP Password"
-msgstr "Skift XMPP-adgangskode"
+msgstr "Ændr XMPP-adgangskode"
msgid "Please enter your new password"
msgstr "Indtast din nye adgangskode"
@@ -4219,7 +3937,7 @@ msgstr "Ret brugeroplysninger..."
#. if (js->protocol_options & CHANGE_PASSWORD) {
msgid "Change Password..."
-msgstr "Skift adgangskode..."
+msgstr "Ændr adgangskode..."
#. }
msgid "Search for Users..."
@@ -4247,7 +3965,7 @@ msgid "Item Not Found"
msgstr "Punkt ikke fundet"
msgid "Malformed XMPP ID"
-msgstr "Ugyldigt XMPP-id"
+msgstr "Misdannet XMPP-id"
msgid "Not Acceptable"
msgstr "Ikke acceptabel"
@@ -4274,7 +3992,7 @@ msgid "Server Overloaded"
msgstr "Server overbelastet"
msgid "Service Unavailable"
-msgstr "Service ikke tilgængelig"
+msgstr "Tjeneste ikke tilgængelig"
msgid "Subscription Required"
msgstr "Abonement krævet"
@@ -4325,7 +4043,7 @@ msgid "Improper Addressing"
msgstr "Forkert addressering"
msgid "Invalid ID"
-msgstr "Ugyldigt ID"
+msgstr "Ugyldigt id"
msgid "Invalid Namespace"
msgstr "Ugyldigt navnerum"
@@ -4402,11 +4120,11 @@ msgstr "Ude af stand til at pinge bruger %s"
#, c-format
msgid "Unable to buzz, because there is nothing known about user %s."
-msgstr "Kan ikke bippe, fordi der ikke er noget kendt om brugeren %s."
+msgstr "Kan ikke bippe, fordi der ikke er noget kendt om bruger %s."
#, c-format
msgid "Unable to buzz, because user %s might be offline."
-msgstr "Kan ikke bippe, fordi brugeren %s måske er offline."
+msgstr "Kan ikke bippe, fordi bruger %s måske er afkoblet."
#, c-format
msgid "Unable to buzz, because the user %s does not support it."
@@ -4423,59 +4141,49 @@ msgstr "%s har bippet dig!"
#, c-format
msgid "Buzzing %s..."
-msgstr "Kalder %s..."
+msgstr "Bipper %s..."
msgid "config: Configure a chat room."
-msgstr "config: Sæt et chatrum op."
+msgstr "config: Sæt et samtalerum op."
msgid "configure: Configure a chat room."
-msgstr "configure: Sæt et chatrum op."
+msgstr "configure: Sæt et samtalerum op."
msgid "part [room]: Leave the room."
-msgstr "part [rum]: Forlad rummet."
+msgstr "part [rum]: Forlad rummet."
msgid "register: Register with a chat room."
-msgstr "register: Registrér med et chatrum."
+msgstr "register: Registrér med et samtalerum."
msgid "topic [new topic]: View or change the topic."
-msgstr "topic [nyt emne]: Vis eller skift emnet."
+msgstr "topic [nyt emne]: Vis eller ændr emnet."
msgid "ban &lt;user&gt; [reason]: Ban a user from the room."
-msgstr "udvis &lt;user&gt; [reason]: Udvis en bruger fra rummet."
+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;: Sæt 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;: Sæt 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."
+msgstr "invite &lt;bruger&gt; [besked]: Invitér en bruger til rummet."
msgid "join: &lt;room&gt; [password]: Join a chat on this server."
-msgstr "deltag: &lt;room&gt; [password]: Deltag i chatrum på denne server."
+msgstr "join: &lt;room&gt; [password]: Tilslut samtalerum på denne server."
msgid "kick &lt;user&gt; [reason]: Kick a user from the room."
-msgstr "spark &lt;user&gt; [reason]: Spark en bruger fra rummet."
+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."
msgid "buzz: Buzz a user to get their attention"
-msgstr "buzz: Buzz en kontakt for at få deres opmærksomhed"
+msgstr "buzz: Bip en kontakt for at få deres opmærksomhed"
#. *< type
#. *< ui_requirement
@@ -4488,7 +4196,7 @@ msgstr "buzz: Buzz en kontakt for at få deres opmærksomhed"
#. * summary
#. * description
msgid "XMPP Protocol Plugin"
-msgstr "XMPP-protokolmodul"
+msgstr "XMPP-protokoludvidelsesmodul"
#. Translators: 'domain' is used here in the context of Internet domains, e.g. pidgin.im
msgid "Domain"
@@ -4501,7 +4209,7 @@ msgid "Force old (port 5223) SSL"
msgstr "Tving gammel (port 5223) SSL"
msgid "Allow plaintext auth over unencrypted streams"
-msgstr "Tillad ren tekst godkendelse over ukrypterede strømme"
+msgstr "Tillad godkendelse i klartekst over ukrypterede strømme"
msgid "Connect port"
msgstr "Tilslutningsport"
@@ -4518,7 +4226,7 @@ msgstr "Filoverførsel-proxyer"
#. this should probably be part of global smiley theme settings later on,
#. shared with MSN
msgid "Show Custom Smileys"
-msgstr "Vis brugerdefinerede smileys"
+msgstr "Vis tilpassede smileyer"
#, c-format
msgid "%s has left the conversation."
@@ -4541,7 +4249,7 @@ msgid "Message delivery to %s failed: %s"
msgstr "Beskedlevering til %s fejlede: %s"
msgid "XMPP Message Error"
-msgstr "XMPP beskedfejl"
+msgstr "Fejl i XMPP-besked"
#, c-format
msgid "(Code %s)"
@@ -4556,12 +4264,8 @@ 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"
@@ -4571,17 +4275,15 @@ msgstr "_Acceptér standardindstillinger"
#, c-format
msgid "Error joining chat %s"
-msgstr "Fejl ved deltagelse i chat %s"
+msgstr "Fejl ved tilslutning til samtale %s"
#, c-format
msgid "Error in chat %s"
-msgstr "Fejl i chat %s"
+msgstr "Fejl i samtale %s"
#, c-format
msgid "Unable to send file to %s, user does not support file transfers"
-msgstr ""
-"Ikke i stand til at sende fil til %s, brugeren understøtter ikke "
-"filoverførsler"
+msgstr "Ikke i stand til at sende fil til %s, brugeren understøtter ikke filoverførsler"
msgid "File Send Failed"
msgstr "Afsendelse af fil fejlede"
@@ -4592,13 +4294,11 @@ msgstr "Kunne ikke sende fil til %s, ugyldig JID"
#, c-format
msgid "Unable to send file to %s, user is not online"
-msgstr "Ikke i stand til at sende fil til %s, brugeren er ikke online"
+msgstr "Ikke i stand til at sende fil til %s, brugeren er ikke tilkoblet"
#, c-format
msgid "Unable to send file to %s, not subscribed to user presence"
-msgstr ""
-"Ikke i stand til at sende fil til %s, brugeren understøtter ikke "
-"filoverførsler"
+msgstr "Ikke i stand til at sende fil til %s, brugeren understøtter ikke filoverførsler"
#, c-format
msgid "Please select the resource of %s to which you would like to send a file"
@@ -4614,26 +4314,22 @@ msgid "Please select your mood from the list."
msgstr "Vælg dit humør fra listen."
msgid "Set"
-msgstr "Sæt"
+msgstr "Indstil"
msgid "Set Mood..."
-msgstr "Sæt humør..."
+msgstr "Indstil humør..."
msgid "Set User Nickname"
-msgstr "Sæt brugerkælenavn"
+msgstr "Indstil brugerkælenavn"
msgid "Please specify a new nickname for you."
-msgstr "Indtast dit nye navn for dig."
+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 "Sæt kælenavn..."
+msgstr "Indstil kælenavn..."
msgid "Actions"
msgstr "Handlinger"
@@ -4649,7 +4345,7 @@ msgid "Unable to add \"%s\"."
msgstr "Kunne ikke tilføje \"%s\"."
msgid "Buddy Add error"
-msgstr "Tilføj ven fejl"
+msgstr "Fejl ved tilføj ven"
msgid "The username specified does not exist."
msgstr "Brugernavnet du angav findes ikke."
@@ -4659,20 +4355,12 @@ 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"
@@ -4684,7 +4372,7 @@ msgstr "Syntaks fejl (sikkert en klientfejl)"
#, c-format
msgid "Invalid email address"
-msgstr "Ugyldig email adresse"
+msgstr "Ugyldig e-postadresse"
#, c-format
msgid "User does not exist"
@@ -4720,7 +4408,7 @@ msgstr "Ikke på liste"
#, c-format
msgid "User is offline"
-msgstr "Bruger er offline"
+msgstr "Bruger er afkoblet"
#, c-format
msgid "Already in the mode"
@@ -4844,7 +4532,7 @@ msgstr "For mange sessioner"
#, c-format
msgid "Passport not verified"
-msgstr "Passport konto endnu ikke godkendt"
+msgstr "Passport-konto endnu ikke godkendt"
#, c-format
msgid "Bad friend file"
@@ -4868,7 +4556,7 @@ msgstr "Godkendelse fejlede"
#, c-format
msgid "Not allowed when offline"
-msgstr "Ikke tilladt når du er offline"
+msgstr "Ikke tilladt når du er afkoblet"
#, c-format
msgid "Not accepting new users"
@@ -4880,10 +4568,10 @@ msgstr "Børne-passport uden forældre godkendelse"
#, c-format
msgid "Passport account not yet verified"
-msgstr "Passport konto endnu ikke godkendt"
+msgstr "Passport-konto endnu ikke godkendt"
msgid "Passport account suspended"
-msgstr "Passport konto suspenderet"
+msgstr "Passport-konto suspenderet"
#, c-format
msgid "Bad ticket"
@@ -4901,24 +4589,24 @@ msgid "Other Contacts"
msgstr "Andre kontakter"
msgid "Non-IM Contacts"
-msgstr "Ikke-kvikbesked kontakter"
+msgstr "Ikke-besked kontakter"
msgid "Nudge"
-msgstr "Prik"
+msgstr "Flirt"
#, c-format
msgid "%s has nudged you!"
-msgstr "%s har prikket til dig!"
+msgstr "%s flirter med dig!"
#, c-format
msgid "Nudging %s..."
-msgstr "Prikker %s..."
+msgstr "Flirter med %s..."
msgid "Email Address..."
-msgstr "Email adresser..."
+msgstr "E-postadresser..."
msgid "Your new MSN friendly name is too long."
-msgstr "Dit nye MSN synlige navn er for langt."
+msgstr "Dit nye synlige MSN-navn er for langt."
msgid "Set your friendly name."
msgstr "Sæt dit synlige navn."
@@ -4938,12 +4626,8 @@ 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"
@@ -4959,9 +4643,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"
-msgstr "MSN servere blokerer følgende regulære udtryk:<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."
msgstr "Denne konto har ikke e-post aktiveret."
@@ -5018,7 +4701,7 @@ msgid "Game Title"
msgstr "Spiltitel"
msgid "Office Title"
-msgstr "Kontor titel"
+msgstr "Kontortitel"
msgid "Set Friendly Name..."
msgstr "Sæt synligt navn..."
@@ -5048,12 +4731,10 @@ msgid "Send to Mobile"
msgstr "Send til mobiltelefon"
msgid "Initiate _Chat"
-msgstr "Åbn _chat"
+msgstr "Åbn _samtale"
msgid "SSL support is needed for MSN. Please install a supported SSL library."
-msgstr ""
-"SSL-understøttelse skal bruges til MSN. Installér et understøttet SSL-"
-"bibliotek."
+msgstr "SSL-understøttelse er krævet til MSN. Installér et understøttet SSL-bibliotek."
msgid "Failed to connect to server."
msgstr "Kunne ikke forbinde til server."
@@ -5134,10 +4815,10 @@ msgid "Home Fax"
msgstr "Hjemmefax"
msgid "Personal Email"
-msgstr "Personlig email"
+msgstr "Personlig e-post"
msgid "Personal IM"
-msgstr "Personlig kvik-besked"
+msgstr "Personlig besked"
msgid "Anniversary"
msgstr "Jubilæum"
@@ -5177,10 +4858,10 @@ msgid "Work Fax"
msgstr "Arbejdsfax"
msgid "Work Email"
-msgstr "Arbejds email"
+msgstr "Arbejds e-post"
msgid "Work IM"
-msgstr "Arbejd kvik-besked"
+msgstr "Arbejd besked"
msgid "Start Date"
msgstr "Startdato"
@@ -5197,24 +4878,14 @@ 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 web-profil"
+msgstr "Se internet-profil"
#. *< type
#. *< ui_requirement
@@ -5235,16 +4906,16 @@ msgid "HTTP Method Server"
msgstr "HTTP-metodeserver"
msgid "Show custom smileys"
-msgstr "Vis brugerdefinerede smileys"
+msgstr "Vis tilpassede smileyer"
msgid "nudge: nudge a user to get their attention"
msgstr "vink: vink en bruger for at få deres opmærksomhed"
msgid "Windows Live ID authentication:Unable to connect"
-msgstr "Windows Live ID godkendelse:Kunne ikke forbinde"
+msgstr "Godkendelse af Windows Live-id:Kunne ikke forbinde"
msgid "Windows Live ID authentication:Invalid response"
-msgstr "Windows Live ID godkendelse:Ugyldigt svar"
+msgstr "Godkendelse af Windows Live-id:Ugyldigt svar"
#, c-format
msgid "%s is not a valid group."
@@ -5290,10 +4961,10 @@ msgstr "%s kunne ikke tilføjes, fordi din venneliste er fuld."
#, c-format
msgid "%s is not a valid passport account."
-msgstr "%s er ikke en gyldig passport konto."
+msgstr "%s er ikke en gyldig passport-konto."
msgid "Service Temporarily Unavailable."
-msgstr "Service midlertidigt utilgængelig."
+msgstr "Tjeneste midlertidigt utilgængelig."
msgid "Mobile message was not sent because it was too long."
msgstr "Mobilbesked blev ikke sendt, fordi den var for lang."
@@ -5306,38 +4977,24 @@ 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ængelig. Dette sker "
-"normalt når brugeren er blokeret eller ikke findes."
+msgid "Message was not sent because the system is unavailable. This normally happens when the user is blocked or does not exist."
+msgstr "Besked blev ikke sendt, fordi systemet ikke er tilgængeligt. Dette sker normalt når brugeren er blokeret eller ikke findes."
msgid "Message was not sent because messages are being sent too quickly."
msgstr "Besked blev ikke sendt, fordi beskederne sendes for hurtigt."
@@ -5375,20 +5032,17 @@ 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."
+msgstr "MSN-serverne lukkes midlertidigt."
#, c-format
msgid "Unable to authenticate: %s"
msgstr "Kunne ikke godkende: %s"
-msgid ""
-"Your MSN buddy list is temporarily unavailable. Please wait and try again."
-msgstr ""
-"Din MSN venneliste er midlertidigt utilgængelig. Vent og førsøg igen senere."
+msgid "Your MSN buddy list is temporarily unavailable. Please wait and try again."
+msgstr "Din MSN venneliste er midlertidigt utilgængelig. Vent og førsøg igen senere."
msgid "Handshaking"
msgstr "Forhandler"
@@ -5418,15 +5072,13 @@ 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:"
msgid "Message could not be sent because the user is offline:"
-msgstr "Besked kunne ikke sendes, fordi brugeren er offline:"
+msgstr "Besked kunne ikke sendes, fordi brugeren er afkoblet:"
msgid "Message could not be sent because a connection error occurred:"
msgstr "Besked kunne ikke sendes på grund af en forbindelsesfejl:"
@@ -5434,16 +5086,10 @@ 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:"
@@ -5483,7 +5129,7 @@ msgstr "Profil URL"
#. * summary
#. * description
msgid "MSN Protocol Plugin"
-msgstr "MSN-protokol udvidelsesmodul"
+msgstr "MSN-protokoludvidelsesmodul"
#, c-format
msgid "No such user: %s"
@@ -5493,10 +5139,10 @@ msgid "User lookup"
msgstr "Opslag af bruger"
msgid "Reading challenge"
-msgstr "Læsesvar"
+msgstr "Reading challenge"
msgid "Unexpected challenge length from server"
-msgstr "Uventet svarlængde fra server"
+msgstr "Unexpected challenge length from server"
msgid "Logging in"
msgstr "Logger ind"
@@ -5515,16 +5161,16 @@ msgstr "Mistede forbindelsen til server"
#. Can't write _()'d strings in array initializers. Workaround.
msgid "New mail messages"
-msgstr "Nye mail-beskeder"
+msgstr "Nye postbeskeder"
msgid "New blog comments"
-msgstr "Ny blog-kommentarer"
+msgstr "Nye blog-kommentarer"
msgid "New profile comments"
msgstr "Nye profilkommentarer"
msgid "New friend requests!"
-msgstr "Ny venneforspørgsel!"
+msgstr "Ny venneanmodning!"
msgid "New picture comments"
msgstr "Nye billedkommentarer"
@@ -5536,18 +5182,10 @@ 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"
@@ -5563,18 +5201,11 @@ 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"
+msgstr "MySpaceIM-fejl"
msgid "Invalid input condition"
msgstr "Ugyldig indtastningsbetingelse"
@@ -5590,7 +5221,7 @@ msgid "Couldn't connect to host: %s (%d)"
msgstr "Kunne ikke forbinde til vært: %s (%d)"
msgid "Failed to add buddy"
-msgstr "Kunne ikke tilføje en ven"
+msgstr "Kunne ikke tilføje ven"
msgid "'addbuddy' command failed."
msgstr "\"addbuddy\"-kommando fejlede."
@@ -5613,12 +5244,8 @@ 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 ""
-"Opgrader til en libpurple med RC4-understøttelse (>=2.0.1). MySpaceIM-"
-"udvidelsesmodul vil ikke blive indlæst."
+msgid "Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will not be loaded."
+msgstr "Opgradér til en libpurple med RC4-understøttelse (>=2.0.1). MySpaceIM-udvidelsesmodul vil ikke blive indlæst."
msgid "Add friends from MySpace.com"
msgstr "Tilføj venner fra MySpace.com"
@@ -5631,18 +5258,16 @@ msgid "Find people..."
msgstr "Find folk..."
msgid "Change IM name..."
-msgstr "Skift IM-navn..."
+msgstr "Ændr beskednavn..."
msgid "myim URL handler"
msgstr "myim URL-håndtering"
msgid "No suitable MySpaceIM account could be found to open this myim URL."
-msgstr ""
-"Der kunne ikke findes nogen passende MySpaceIM-konto til at åbne denne myim "
-"URL."
+msgstr "Der kunne ikke findes nogen passende MySpaceIM-konto til at åbne denne myim URL."
msgid "Enable the proper MySpaceIM account and try again."
-msgstr "Aktiver korrekte MySpaceIM-konto og prøv igen."
+msgstr "Aktivér den korrekte MySpaceIM-konto og prøv igen."
msgid "Show display name in status text"
msgstr "Vis synligt navn i statustekst"
@@ -5657,7 +5282,7 @@ msgid "Screen resolution (dots per inch)"
msgstr "Skærmopløsning (punkter pr. tomme)"
msgid "Base font size (points)"
-msgstr "Basal striftstørrelse (punkter)"
+msgstr "Basal skrifttypestørrelse (punkter)"
msgid "User"
msgstr "Bruger"
@@ -5706,15 +5331,15 @@ msgstr "Indtast et brugernavn der skal kontrolleres for tilgænglighed:"
#. * connotation, for example, "he was zapped by electricity when
#. * he put a fork in the toaster."
msgid "Zap"
-msgstr "Zap"
+msgstr "Slå"
#, c-format
msgid "%s has zapped you!"
-msgstr "%s har zappet dig!"
+msgstr "%s har slået dig!"
#, c-format
msgid "Zapping %s..."
-msgstr "Zapper %s..."
+msgstr "Slår %s..."
#. Whack means "to hit or strike someone with a sharp blow"
msgid "Whack"
@@ -5776,7 +5401,7 @@ msgstr "%s har givet dig en kindhest!"
#, c-format
msgid "Slapping %s..."
-msgstr "Slår %s..."
+msgstr "Giver kindhest til %s..."
#. Goose means "to pinch someone on their butt"
msgid "Goose"
@@ -5891,17 +5516,13 @@ msgid "Master archive is misconfigured"
msgstr "Hoved-arkiv er konfigureret forkert"
msgid "Incorrect username or password"
-msgstr "Forkert brugernavn eller kodeord"
+msgstr "Forkert brugernavn eller adgangskode"
msgid "Could not recognize the host of the username you entered"
msgstr "Kunne ikke genkende værten på brugernavnet du indtastede"
-msgid ""
-"Your account has been disabled because too many incorrect passwords were "
-"entered"
-msgstr ""
-"Din konto er blevet deaktiveret fordi for mange ugyldige adgangskoder blev "
-"indtastet"
+msgid "Your account has been disabled because too many incorrect passwords were entered"
+msgstr "Din konto er blevet deaktiveret fordi for mange ugyldige adgangskoder blev indtastet"
msgid "You cannot add the same person twice to a conversation"
msgstr "Du kan ikke tilføje den samme person to gange til en samtale"
@@ -5921,14 +5542,11 @@ 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 offline, eller du er blokeret"
+msgstr "Brugeren er enten afkoblet, eller du er blokeret"
#, c-format
msgid "Unknown error: 0x%X"
@@ -5964,20 +5582,12 @@ 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)."
@@ -6020,7 +5630,7 @@ msgid "Mailstop"
msgstr "Poststop"
msgid "User ID"
-msgstr "Bruger ID"
+msgstr "Bruger id"
#. tag = _("DN");
#. value = nm_user_record_get_dn(user_record);
@@ -6062,29 +5672,23 @@ msgstr ""
"Sendt: %s"
msgid "Would you like to join the conversation?"
-msgstr "Vil du deltage i samtalen?"
+msgstr "Vil du tilslutte samtalen?"
msgid "You have been logged out because you logged in at another workstation."
msgstr "Du er blevet logget af, fordi du er logget på en anden maskine."
#, c-format
-msgid ""
-"%s appears to be offline and did not receive the message that you just sent."
-msgstr ""
-"%s ser ud til at være offline, og har ikke modtaget beskeden du har sendt."
+msgid "%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."
msgid "This conference has been closed. No more messages can be sent."
-msgstr "Konferencen er blevet lukket. Der kan ikke sendes flere beskeder."
+msgstr "Konferencen er blevet afsluttet. Der kan ikke sendes flere beskeder."
#. *< type
#. *< ui_requirement
@@ -6106,10 +5710,10 @@ msgid "Server port"
msgstr "Server port"
msgid "Could not join chat room"
-msgstr "Kunne ikke tilslutte chatrum"
+msgstr "Kunne ikke tilslutte samtalerum"
msgid "Invalid chat room name"
-msgstr "Ugyldigt navn på chatrum"
+msgstr "Ugyldigt navn på samtalerum"
msgid "Server closed the connection."
msgstr "Server lukkede forbindelsen."
@@ -6119,7 +5723,7 @@ msgid ""
"Lost connection with server:\n"
"%s"
msgstr ""
-"Mistede forbindelsen med server:\n"
+"Mistede forbindelsen til server:\n"
"%s"
msgid "Received invalid data on connection with server."
@@ -6165,7 +5769,7 @@ msgstr "Fjernbrugeren har afslået din forespørgsel."
#, c-format
msgid "Lost connection with the remote user:<br>%s"
-msgstr "Mistede forbindelse med fjernbrugeren:<br>%s"
+msgstr "Mistede forbindelse til fjernbrugeren:<br>%s"
msgid "Received invalid data on connection with remote user."
msgstr "Modtog ugyldige data ved forbindelse til fjern bruger."
@@ -6174,15 +5778,11 @@ msgid "Could not establish a connection with the remote user."
msgstr "Kunne ikke etablere en forbindelse til en fjernbruger."
msgid "Direct IM established"
-msgstr "Direkte kvikbesked etableret"
+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 kvikbesked. 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."
@@ -6201,7 +5801,7 @@ msgid "Rate to client"
msgstr "Grænse til klient"
msgid "Service unavailable"
-msgstr "Service ikke tilgængelig"
+msgstr "Tjeneste ikke tilgængelig"
msgid "Service not defined"
msgstr "Tjeneste ikke defineret"
@@ -6260,24 +5860,12 @@ 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 kontovalgmuligheder 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"
@@ -6332,7 +5920,7 @@ msgid "Security Enabled"
msgstr "Sikkerhedsaktiveret"
msgid "Video Chat"
-msgstr "Video chat"
+msgstr "Videosamtale"
msgid "iChat AV"
msgstr "iChat AV"
@@ -6347,7 +5935,7 @@ msgid "Screen Sharing"
msgstr "Skærmdeling"
msgid "Free For Chat"
-msgstr "Fri til chat"
+msgstr "Fri til samtale"
msgid "Not Available"
msgstr "Ikke tilgængelig"
@@ -6356,7 +5944,7 @@ msgid "Occupied"
msgstr "Optaget"
msgid "Web Aware"
-msgstr "Web-opmærksom"
+msgstr "Internet-opmærksom"
msgid "Invisible"
msgstr "Usynlig"
@@ -6394,18 +5982,11 @@ msgstr "Forbindelse oprettet, cookie sendt"
#. TODO: Don't call this with ssi
msgid "Finalizing connection"
-msgstr "Færddiggører opkobling"
+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
#. uid is not exist
@@ -6425,12 +6006,8 @@ msgstr "AOL Instant Messenger tjenesten er midlertidigt utilgængelig."
#. screen name connecting too frequently
#. IP address connecting too frequently
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
-msgstr ""
-"Du er logget ind og ud for mange gange indenfor et kort tidsrum. Vent ti "
-"minutter og prøv så igen, for ellers skal du bare vente endnu længere."
+msgid "You have been connecting and disconnecting too frequently. Wait ten minutes and try again. If you continue to try, you will need to wait even longer."
+msgstr "Du er logget ind og ud for mange gange indenfor et kort tidsrum. Vent ti minutter og prøv så igen, for ellers skal du bare vente endnu længere."
#, c-format
msgid "The client version you are using is too old. Please upgrade at %s"
@@ -6459,19 +6036,17 @@ 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 opnå et gyldigt AIM-logindhash."
+msgstr "Kunne ikke hente et gyldigt AIM-logindhash."
#, c-format
msgid "You may be disconnected shortly. Check %s for updates."
msgstr "Du vil måske blive frakoblet snart. Kontrollér %s for opdateringer."
msgid "Unable to get a valid login hash."
-msgstr "Kunne ikke opnå et gyldigt loginhash."
+msgstr "Kunne ikke hente et gyldigt loginhash."
msgid "Password sent"
msgstr "Adgangskode sendt"
@@ -6496,12 +6071,10 @@ 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."
@@ -6543,7 +6116,7 @@ msgid ""
"Message is:\n"
"%s"
msgstr ""
-"Du har modtaget en ICQ email fra %s [%s]\n"
+"Du har modtaget en ICQ e-post fra %s [%s]\n"
"\n"
"Beskeden er:\n"
"%s"
@@ -6574,37 +6147,22 @@ msgstr[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."
@@ -6629,7 +6187,7 @@ msgid "User information not available: %s"
msgstr "Bruger oplysninger er ikke tilgængelige: %s"
msgid "Online Since"
-msgstr "Online siden"
+msgstr "Tilkoblet siden"
msgid "Member Since"
msgstr "Medlem siden"
@@ -6641,23 +6199,15 @@ 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."
-msgstr "Forbindelse til chat-rum %s afbrudt."
+msgstr "Forbindelse til samtalerum %s afbrudt."
msgid "Mobile Phone"
msgstr "Mobiltelefon"
@@ -6691,139 +6241,88 @@ msgstr "Pop-Up besked"
#, c-format
msgid "The following username is associated with %s"
msgid_plural "The following usernames are associated with %s"
-msgstr[0] "Følgende brugernavn er associeret med %s"
-msgstr[1] "Følgende brugernavne er associeret med %s"
+msgstr[0] "Følgende brugernavn er tilknyttet %s"
+msgstr[1] "Følgende brugernavne er tilknyttet %s"
#, c-format
msgid "No results found for email address %s"
-msgstr "Ingen resultater fundet for post-adressen %s"
+msgstr "Ingen resultater fundet for e-postadressen %s"
#, c-format
msgid "You should receive an email asking to confirm %s."
-msgstr "Du bør modtage en email for at acceptere %s."
+msgstr "Du bør modtage en e-post for at acceptere %s."
msgid "Account Confirmation Requested"
msgstr "Der er anmodet om konto bekræftelse"
#, c-format
-msgid ""
-"Error 0x%04x: Unable to format username because the requested name differs "
-"from the original."
-msgstr ""
-"Fejl 0x%04x: Kunne ikke formattere brugernavn fordi det anmodede brugernavn "
-"er forskelligt fra det oprindelige."
+msgid "Error 0x%04x: Unable to format username because the requested name differs from the original."
+msgstr "Fejl 0x%04x: Kunne ikke formattere brugernavn fordi det anmodede brugernavn er forskelligt fra det oprindelige."
#, c-format
msgid "Error 0x%04x: Unable to format username because it is invalid."
msgstr "Fejl 0x%04x: Kunne ikke formattere brugernavn fordi det er ugyldigt."
#, c-format
-msgid ""
-"Error 0x%04x: Unable to format username because the requested name is too "
-"long."
-msgstr ""
-"Fejl 0x%04x: Kunne ikke formattere brugernavn fordi det anmodede navn er for "
-"langt."
+msgid "Error 0x%04x: Unable to format username because the requested name is too long."
+msgstr "Fejl 0x%04x: Kunne ikke formattere brugernavn fordi det anmodede navn er for langt."
#, c-format
-msgid ""
-"Error 0x%04x: Unable to change email address because there is already a "
-"request pending for this username."
-msgstr ""
-"Fejl 0x%04x: Ikke i stand til at ændre e-post adresse, fordi der allerede er "
-"en anmodning ventende for dette brugernavn."
+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: Ikke i stand til at ændre e-post adresse, fordi den angivne "
-"adresse har for mange brugernavne knyttet til 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: Ikke i stand til at ændre email adresse, 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."
msgstr "Fejl 0x%04x: Ukendt fejl."
msgid "Error Changing Account Info"
-msgstr "Fejl ved ændring af konto oplysninger"
+msgstr "Fejl ved ændring af kontooplysninger"
#, c-format
msgid "The email address for %s is %s"
-msgstr "%s's post-adresse er %s"
+msgstr "%s's e-postadresse er %s"
msgid "Account Info"
msgstr "Konto Oplysninger"
-msgid ""
-"Your IM Image was not sent. You must be Direct Connected to send IM Images."
-msgstr ""
-"Dit billede blev ikke sendt. Du skal være direkte forbundet for at sende "
-"billeder."
+msgid "Your IM Image was not sent. You must be Direct Connected to send IM Images."
+msgstr "Dit billede blev ikke sendt. Du skal være direkte forbundet for at sende billeder."
msgid "Unable to set AIM profile."
msgstr "Kunne ikke ændre AIM profil."
-msgid ""
-"You have probably requested to set your profile before the login procedure "
-"completed. Your profile remains unset; try setting it again when you are "
-"fully connected."
-msgstr ""
-"Du har sikkert anmodet om at sætte din profil før login-processen er blevet "
-"færdig. Din profil er ikke sat; prøv at sætte den igen når du er færdig med "
-"at forbinde til serveren."
+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"
@@ -6831,24 +6330,15 @@ 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 hente din venneliste. Din "
-"venneliste er ikke tabt, og vil sikkert blive tilgængelig indenfor et par "
-"minutter."
+msgid "The AIM servers were temporarily unable to send your buddy list. Your buddy list is not lost, and will probably become available in a few minutes."
+msgstr "AIM-serverne var midlertidigt ude af stand til at sende din venneliste. Din venneliste er ikke tabt, og vil sikkert blive tilgængelig indenfor et par minutter."
msgid "Orphans"
msgstr "Tabte"
#, c-format
-msgid ""
-"Could not add the buddy %s because you have too many buddies in your buddy "
-"list. Please remove one and try again."
-msgstr ""
-"Kunne ikke tilføje vennen %s fordi du har for mange venner i din venneliste."
-"Fjern en, og prøv igen."
+msgid "Could not add the buddy %s because you have too many buddies in your buddy list. Please remove one and try again."
+msgstr "Kunne ikke tilføje vennen %s fordi du har for mange venner i din venneliste.Fjern en, og prøv igen."
msgid "(no name)"
msgstr "(intet navn)"
@@ -6858,12 +6348,8 @@ 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"
@@ -6871,9 +6357,7 @@ 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"
@@ -6881,12 +6365,10 @@ 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"
@@ -6896,10 +6378,10 @@ 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 chats."
+msgstr "Dit billede blev ikke sendt. Du kan ikke sende billeder i AIM-samtaler."
msgid "iTunes Music Store Link"
-msgstr "iTunes Music Store link"
+msgstr "Henvisning til iTunes Music Store"
#, c-format
msgid "Buddy Comment for %s"
@@ -6912,12 +6394,8 @@ 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"
@@ -6942,7 +6420,7 @@ msgid "Require authorization"
msgstr "Kræv godkendelse"
msgid "Web aware (enabling this will cause you to receive SPAM!)"
-msgstr "Web tilstedeværelse (hvis dette er slået til vil du modtage SPAM!)"
+msgstr "Internet tilstedeværelse (hvis dette er slået til vil du modtage SPAM!)"
msgid "ICQ Privacy Options"
msgstr "ICQ privatlivsindstillinger"
@@ -6954,7 +6432,7 @@ msgid "Username formatting can change only capitalization and whitespace."
msgstr "Brugernavn formatering kan kun ændre store/små bogstaver og mellemrum."
msgid "Change Address To:"
-msgstr "Skift adresse til:"
+msgstr "Ændr adresse til:"
msgid "<i>you are not waiting for authorization</i>"
msgstr "<i>du venter ikke på godkendelse</i>"
@@ -6962,33 +6440,29 @@ 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 email adresse"
+msgstr "Find ven udfra e-postadresse"
msgid "Search for a buddy by email address"
-msgstr "Søg efter en ven udfra email adresse"
+msgstr "Søg efter en ven udfra e-postadresse"
msgid "Type the email address of the buddy you are searching for."
-msgstr "Indtast email adressen på vennen du søger efter."
+msgstr "Indtast e-postadressen på vennen du søger efter."
msgid "_Search"
msgstr "_Søg"
msgid "Set User Info (web)..."
-msgstr "Sæt brugeroplysninger (web)..."
+msgstr "Indstil brugeroplysninger (internet)..."
msgid "Change Password (web)"
-msgstr "Skift adgangskode (web)"
+msgstr "Ændr adgangskode (internet)"
msgid "Configure IM Forwarding (web)"
-msgstr "Konfigurér kvikbesked-videresendelse (web)"
+msgstr "Konfigurér beskedvideresendelse (internet)"
#. ICQ actions
msgid "Set Privacy Options..."
@@ -6999,16 +6473,16 @@ msgid "Confirm Account"
msgstr "Bekræft Konto"
msgid "Display Currently Registered Email Address"
-msgstr "Vis nuværende registrede e-post adresse"
+msgstr "Vis nuværende registrede e-postadresse"
msgid "Change Currently Registered Email Address..."
-msgstr "Skift nuværende registrede e-post adresse..."
+msgstr "Ændr nuværende registrede e-postadresse..."
msgid "Show Buddies Awaiting Authorization"
msgstr "Vis venner der afventer godkendelse"
msgid "Search for Buddy by Email Address..."
-msgstr "Søg efter ven udfra e-post adresse..."
+msgstr "Søg efter ven udfra e-postadresse..."
msgid "Search for Buddy by Information"
msgstr "Søg efter ven udfra oplysninger"
@@ -7018,8 +6492,8 @@ msgid ""
"file transfers and direct IM (slower,\n"
"but does not reveal your IP address)"
msgstr ""
-"Brug altid AIM/ICQ-mellemværtsserver til\n"
-"filoverførsler og direkte besked (langsommere,\n"
+"Brug altid AIM/ICQ-proxyserver til\n"
+"filoverførsler og kvikbesked (langsommere,\n"
"men afslører ikke din IP-adresse)"
msgid "Allow multiple simultaneous logins"
@@ -7034,20 +6508,14 @@ msgid "Attempting to connect to %s:%hu."
msgstr "Prøver at forbinde til %s:%hu."
msgid "Attempting to connect via proxy server."
-msgstr "Forsøger at forbinde via mellemværtsserver."
+msgstr "Forsøger at forbinde via proxy-server."
#, c-format
msgid "%s has just asked to directly connect to %s"
msgstr "%s har lige spurgt om at forbinde direkte til %s"
-msgid ""
-"This requires a direct connection between the two computers and is necessary "
-"for IM Images. Because your IP address will be revealed, this may be "
-"considered a privacy risk."
-msgstr ""
-"Dette kræver en direkte forbindelse imellem to computere og er nødvendigt "
-"for billeder. Fordi din IP-adresse vil blive afsløret, kan det anses som en "
-"privatlivs risiko."
+msgid "This requires a direct connection between the two computers and is necessary for IM Images. Because your IP address will be revealed, this may be considered a privacy risk."
+msgstr "Dette kræver en direkte forbindelse imellem to computere og er nødvendigt for billeder. Fordi din IP-adresse vil blive afsløret, kan det anses som en privatlivs risiko."
msgid "Aquarius"
msgstr "Vandmand"
@@ -7131,7 +6599,7 @@ msgid "Friend Only"
msgstr "Kun ven"
msgid "Private"
-msgstr "Privatliv"
+msgstr "Privat"
msgid "QQ Number"
msgstr "QQ-nummer"
@@ -7149,7 +6617,7 @@ msgid "Phone Number"
msgstr "Telefonnummer"
msgid "Authorize adding"
-msgstr "Godkend ven"
+msgstr "Godkend tilføjelse"
msgid "Cellphone Number"
msgstr "Mobilnummer"
@@ -7161,10 +6629,10 @@ msgid "City/Area"
msgstr "By/område"
msgid "Publish Mobile"
-msgstr "Udgiv mobil"
+msgstr "Offentliggør mobil"
msgid "Publish Contact"
-msgstr "Udgiv kontakt"
+msgstr "Offentliggør kontakt"
msgid "College"
msgstr "Fold sammen"
@@ -7185,16 +6653,16 @@ msgid "False"
msgstr "Falsk"
msgid "Modify Contact"
-msgstr "Ændrer kontakt"
+msgstr "Ændr kontakt"
msgid "Modify Address"
-msgstr "Ændre addresse"
+msgstr "Ændr adresse"
msgid "Modify Extended Information"
-msgstr "Ændre udvidet information"
+msgstr "Ændr udvidet information"
msgid "Modify Information"
-msgstr "Ændre information"
+msgstr "Ændr information"
msgid "Update"
msgstr "Opdatér"
@@ -7232,13 +6700,13 @@ msgid "Add buddy authorize"
msgstr "Tilføj vennegodkendelse"
msgid "Enter request here"
-msgstr "Indtast forespørgelse her"
+msgstr "Indtast anmodning her"
msgid "Would you be my friend?"
msgstr "Vil du være min ven?"
msgid "QQ Buddy"
-msgstr "QQ ven"
+msgstr "QQ-ven"
msgid "Add buddy"
msgstr "Tilføj ven"
@@ -7307,10 +6775,10 @@ msgid "Admin"
msgstr "Admin"
msgid "Notice"
-msgstr "Note"
+msgstr "Bemærk"
msgid "Detail"
-msgstr "Detaljer"
+msgstr "Detalje"
msgid "Creator"
msgstr "Opretter"
@@ -7322,13 +6790,13 @@ msgid "Category"
msgstr "Kategori"
msgid "The Qun does not allow others to join"
-msgstr "Qun'en tillader ikke andre at blive medlem"
+msgstr "Qun'en tillader ikke andre at tilslutte"
msgid "Join QQ Qun"
-msgstr "Deltag QQ Qun"
+msgstr "Tilslut QQ Qun"
msgid "Input request here"
-msgstr "Indtast forespørgelse her"
+msgstr "Indtast forespørgsel her"
#, c-format
msgid "Successfully joined Qun %s (%u)"
@@ -7361,13 +6829,13 @@ msgstr ""
"vil denne operation måske fjerne denne Qun."
msgid "Sorry, you are not our style"
-msgstr "Beklager, du er ikke min type"
+msgstr "Beklager, du er ikke vores type"
msgid "Successfully changed Qun members"
-msgstr "Ændret Qun-medlemmer problemfrit"
+msgstr "Ændrede Qun-medlemmer problemfrit"
msgid "Successfully changed Qun information"
-msgstr "Ændret Qun-information problemfrit"
+msgstr "Ændrede Qun-information problemfrit"
msgid "You have successfully created a Qun"
msgstr "Du har oprettet en Qun"
@@ -7380,15 +6848,15 @@ msgstr "Opsætning"
#, c-format
msgid "%u requested to join Qun %u for %s"
-msgstr "%u anmoder om at blive medlem af Qun %u for %s"
+msgstr "%u anmoder om at tilslutte Qun %u for %s"
#, c-format
msgid "%u request to join Qun %u"
-msgstr "%u anmoder om at blive medlem af Qun %u"
+msgstr "%u anmoder om at tilslutte Qun %u"
#, c-format
msgid "Failed to join Qun %u, operated by admin %u"
-msgstr "Kunne ikke deltage i Qun %u, styret af admin %u"
+msgstr "Kunne ikke tilslutte Qun %u, styret af admin %u"
#, c-format
msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
@@ -7400,7 +6868,7 @@ msgstr "<b>Fjernede vennen %u.</b>"
#, c-format
msgid "<b>New buddy %u joined.</b>"
-msgstr "<b>Nu ven %u deltager.</b>"
+msgstr "<b>Ny ven %u tilsluttet.</b>"
#, c-format
msgid "Unknown-%d"
@@ -7416,10 +6884,10 @@ msgid " TCP"
msgstr " TCP"
msgid " FromMobile"
-msgstr " FraMobil"
+msgstr " FromMobile"
msgid " BindMobile"
-msgstr " BindMobil"
+msgstr " BindMobile"
msgid " Video"
msgstr " Video"
@@ -7441,11 +6909,11 @@ msgstr "Vælg ikon..."
#, c-format
msgid "<b>Login time</b>: %d-%d-%d, %d:%d:%d<br>\n"
-msgstr "<b>Login tid</b>: %d-%d-%d, %d:%d:%d<br>\n"
+msgstr "<b>Logind tid</b>: %d-%d-%d, %d:%d:%d<br>\n"
#, c-format
msgid "<b>Total Online Buddies</b>: %d<br>\n"
-msgstr "<b>Totale venner online</b>: %d<br>\n"
+msgstr "<b>Totale venner tilkoblet</b>: %d<br>\n"
#, c-format
msgid "<b>Last Refresh</b>: %d-%d-%d, %d:%d:%d<br>\n"
@@ -7473,7 +6941,7 @@ msgstr "<b>Sendt</b>: %lu<br>\n"
#, c-format
msgid "<b>Resend</b>: %lu<br>\n"
-msgstr "<b>Gensendt</b>: %lu<br>\n"
+msgstr "<b>Gensend</b>: %lu<br>\n"
#, c-format
msgid "<b>Lost</b>: %lu<br>\n"
@@ -7485,7 +6953,7 @@ msgstr "<b>Modtaget</b>: %lu<br>\n"
#, c-format
msgid "<b>Received Duplicate</b>: %lu<br>\n"
-msgstr "<b>Modtagede duplikater</b>: %lu<br>\n"
+msgstr "<b>Modtaget duplikat</b>: %lu<br>\n"
#, c-format
msgid "<b>Time</b>: %d-%d-%d, %d:%d:%d<br>\n"
@@ -7502,13 +6970,13 @@ msgid "<p><b>Original Author</b>:<br>\n"
msgstr "<p><b>Oprindelig forfatter</b>:<br>\n"
msgid "<p><b>Code Contributors</b>:<br>\n"
-msgstr "<p><b>Kode bidragere</b>:<br>\n"
+msgstr "<p><b>Kode bidragydere</b>:<br>\n"
msgid "<p><b>Lovely Patch Writers</b>:<br>\n"
msgstr "<p><b>Elskede programrettelsesskrivere</b>:<br>\n"
msgid "<p><b>Acknowledgement</b>:<br>\n"
-msgstr "<p><b>Bekræft erkendelse</b>:<br>\n"
+msgstr "<p><b>Bekræft anerkendelse</b>:<br>\n"
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr "<p><i>Og alle drengene i baggrunden...</i><br>\n"
@@ -7521,10 +6989,10 @@ msgid "About OpenQ %s"
msgstr "Om OpenQ %s"
msgid "Change Icon"
-msgstr "Ændre ikon"
+msgstr "Ændr ikon"
msgid "Change Password"
-msgstr "Skift adgangskode"
+msgstr "Ændr adgangskode"
msgid "Account Information"
msgstr "Kontoinformation"
@@ -7567,13 +7035,13 @@ msgid "Connect by TCP"
msgstr "Tilslut med TCP"
msgid "Show server notice"
-msgstr "Vis servernote"
+msgstr "Vis serverbemærkning"
msgid "Show server news"
msgstr "Vis servernyheder"
msgid "Show chat room when msg comes"
-msgstr "Vis chatrum når besked kommer"
+msgstr "Vis samtalerum når besked kommer"
msgid "Keep alive interval (seconds)"
msgstr "Hold i live interval (sekunder)"
@@ -7582,15 +7050,15 @@ msgid "Update interval (seconds)"
msgstr "Opdateringsinterval (sekunder)"
msgid "Cannot decrypt server reply"
-msgstr "Kan ikke afkode serversvar"
+msgstr "Kan ikke afkryptere serversvar"
#, c-format
msgid "Failed requesting token, 0x%02X"
-msgstr "Fejl ved forespørgelse efter symbol, 0x%02X"
+msgstr "Fejl ved forespørgsel efter nøgle, 0x%02X"
#, c-format
msgid "Invalid token len, %d"
-msgstr "Ugyldigt symbollængde, %d"
+msgstr "Ugyldig nøglelængde, %d"
#. extend redirect used in QQ2006
msgid "Redirect_EX is not currently supported"
@@ -7600,14 +7068,14 @@ msgstr "Redirect_EX er for øjeblikket ikke understøttet"
#. need activation
#. need activation
msgid "Activation required"
-msgstr "Registrering krævet"
+msgstr "Aktivering krævet"
#, c-format
msgid "Unknown reply code when logging in (0x%02X)"
msgstr "Ukendt svarkode ved indlogning i (0x%02X)"
msgid "Could not decrypt server reply"
-msgstr "Kunne ikke afkode serversvar"
+msgstr "Kunne ikke afkryptere serversvar"
msgid "Requesting captcha"
msgstr "Anmoder om captcha"
@@ -7625,7 +7093,7 @@ msgid "Enter code"
msgstr "Indtast kode"
msgid "QQ Captcha Verification"
-msgstr "QQ Captcha-efterprøvning"
+msgstr "QQ Captcha-godkendelse"
msgid "Enter the text from the image"
msgstr "Indtast teksten fra billedet"
@@ -7659,10 +7127,10 @@ msgid "Connection lost"
msgstr "Forbindelse mistet"
msgid "Getting server"
-msgstr "Henter server"
+msgstr "Finder server"
msgid "Requesting token"
-msgstr "Anmoder om symbol"
+msgstr "Anmoder om nøgle"
msgid "Couldn't resolve host"
msgstr "Kunne ikke slå vært op"
@@ -7683,7 +7151,7 @@ msgid ""
"%s\n"
"%s"
msgstr ""
-"Servernyt:\n"
+"Servernyheder:\n"
"%s\n"
"%s\n"
"%s"
@@ -7719,7 +7187,7 @@ msgid "QQ Qun Command"
msgstr "QQ Qun-kommando"
msgid "Could not decrypt login reply"
-msgstr "Kan ikke dekryptere logindsvar"
+msgstr "Kan ikke afkryptere logindsvar"
msgid "Unknown LOGIN CMD"
msgstr "Ukendt LOGIN CMD"
@@ -7784,13 +7252,11 @@ msgid "Login Acknowledged"
msgstr "Login godkendt"
msgid "Starting Services"
-msgstr "Starter 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"
@@ -7811,7 +7277,7 @@ msgid "Announcement from %s"
msgstr "Annoncering fra %s"
msgid "Conference Closed"
-msgstr "Konference lukket"
+msgstr "Konference afsluttet"
msgid "Unable to send message: "
msgstr "Kunne ikke sende besked: "
@@ -7838,12 +7304,8 @@ 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"
@@ -7861,14 +7323,8 @@ 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"
@@ -7886,12 +7342,8 @@ 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"
@@ -7913,19 +7365,14 @@ msgid "User Name"
msgstr "Brugernavn"
msgid "Sametime ID"
-msgstr "Sametime ID"
+msgstr "Sametime-id"
msgid "An ambiguous user ID was entered"
-msgstr "Et ugyldigt bruger ID blev indtastet"
+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"
@@ -7934,12 +7381,8 @@ 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 ""
@@ -7992,14 +7435,8 @@ 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"
@@ -8008,36 +7445,22 @@ 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"
@@ -8047,8 +7470,7 @@ 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"
@@ -8056,12 +7478,8 @@ 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"
@@ -8117,9 +7535,7 @@ 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
@@ -8166,13 +7582,8 @@ 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..."
@@ -8182,12 +7593,8 @@ 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 en ven, skal du importere hendes/hans offentlige nøgle. Tryk "
-"Importér for at importere en offentlig nøgle."
+msgid "To add the buddy you must import his/her public key. Press Import to import a public key."
+msgstr "For at tilføje vennen, skal du importere hendes/hans offentlige nøgle. Tryk Importér for at importere en offentlig nøgle."
msgid "_Import..."
msgstr "_Importér..."
@@ -8195,19 +7602,11 @@ 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å"
@@ -8357,18 +7756,8 @@ 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 signaturer. "
-"Hvis adgangssætningen er sat, er den krævet for at deltage. Hvis kanalens "
-"offentlige nøgler er sat, så er det kun brugere hvis offentlige nøgler der "
-"er nævnt, som kan deltage."
+msgid "Channel authentication is used to secure the channel from unauthorized access. The authentication may be based on passphrase and digital signatures. If passphrase is set, it is required to be able to join. If channel public keys are set then only users whose public keys are listed are able to join."
+msgstr "Kanal godkendelse brugeres til at sikre kanalen fra uønsket adgang. Godkendelsen kan være baseret på en adgangssætning og digitale underskrifter. Hvis adgangssætningen er angivet, er den påkrævet for at tilslutte. Hvis kanalens offentlige nøgler er angivet, så er det kun brugere hvis offentlige nøgler der er nævnt, som kan deltage."
msgid "Channel Authentication"
msgstr "Kanal godkendelse"
@@ -8432,15 +7821,14 @@ 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"
-msgstr "Du skal deltage i %s kanalen før du kan deltage i den private gruppe"
+msgid "You have to join the %s channel before you are able to join the private group"
+msgstr "Du skal tilslutte %s kanalen før du kan tilslutte den private gruppe"
msgid "Join Private Group"
-msgstr "Deltag i privat gruppe"
+msgstr "Tilslut privat gruppe"
msgid "Cannot join private group"
-msgstr "Kan ikke deltage i privat gruppe"
+msgstr "Kan ikke tilslutte privat gruppe"
msgid "Call Command"
msgstr "Kald kommando"
@@ -8458,7 +7846,7 @@ msgid "Error during file transfer"
msgstr "Fejl under filoverførsel"
msgid "Remote disconnected"
-msgstr "Fjerndel afbrudt"
+msgstr "Fjernvært afbrød"
msgid "Permission denied"
msgstr "Adgang nægtet"
@@ -8547,7 +7935,7 @@ msgid "Note"
msgstr "Note"
msgid "Join Chat"
-msgstr "Deltag i chat"
+msgstr "Tilslut samtale"
#, c-format
msgid "You are channel founder on <I>%s</I>"
@@ -8567,7 +7955,7 @@ msgid "Public Key Fingerprint"
msgstr "Offentlig nøgle fingeraftryk"
msgid "Public Key Babbleprint"
-msgstr "Offentlige nøgle \"babbleprint\""
+msgstr "Offentlig nøgle \"babbleprint\""
msgid "_More..."
msgstr "_Mere..."
@@ -8673,12 +8061,8 @@ 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?"
@@ -8709,16 +8093,13 @@ msgid "Disconnected by server"
msgstr "Afbrudt af server"
msgid "Error during connecting to SILC Server"
-msgstr "Fejl ved forbindelse til SILC server"
+msgstr "Fejl ved forbindelse til SILC-server"
msgid "Key Exchange failed"
msgstr "Nøgle udveksling fejlede"
-msgid ""
-"Resuming detached session failed. Press Reconnect to create new connection."
-msgstr ""
-"Genoptagelse af tidligere session fejlede. Lav en ny forbindelse ved at "
-"trykke på gentabler forbindelse."
+msgid "Resuming detached session failed. Press Reconnect to create new connection."
+msgstr "Genoptagelse af tidligere session fejlede. Lav en ny forbindelse ved at trykke på gentabler forbindelse."
msgid "Connection failed"
msgstr "Forbindelse fejlede"
@@ -8730,20 +8111,20 @@ msgid "Unable to create connection"
msgstr "Kunne ikke oprette forbindelse"
msgid "Could not load SILC key pair"
-msgstr "Kunne ikke indlæse SILC nøglepar"
+msgstr "Kunne ikke indlæse SILC-nøglepar"
#. Progress
msgid "Connecting to SILC Server"
-msgstr "Tilslutter til SILC server"
+msgstr "Tilslutter til SILC-server"
msgid "Out of memory"
msgstr "Løb tør for hukommelse"
msgid "Cannot initialize SILC protocol"
-msgstr "Kan ikke initialisere SILC protokol"
+msgstr "Kan ikke initialisere SILC-protokol"
msgid "Error loading SILC key pair"
-msgstr "Fejl ved indlæsning af SILC nøglepar"
+msgstr "Fejl ved indlæsning af SILC-nøglepar"
#, c-format
msgid "Download %s: %s"
@@ -8794,16 +8175,10 @@ msgid "Timezone (UTC)"
msgstr "Tidszone (UTC)"
msgid "User Online Status Attributes"
-msgstr "Online bruger status-attributter"
+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 online status oplysninger 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)"
@@ -8812,10 +8187,10 @@ msgid "No Message of the Day available"
msgstr "Ingen MOTD tilgængelig"
msgid "There is no Message of the Day associated with this connection"
-msgstr "Der er ingen MOTD associeret med denne forbindelse"
+msgstr "Der er ingen MOTD tilknyttet denne forbindelse"
msgid "Create New SILC Key Pair"
-msgstr "Opret nyt SILC nøglepar"
+msgstr "Opret nyt SILC-nøglepar"
msgid "Passphrases do not match"
msgstr "Adgangskoder passer ikke"
@@ -8839,13 +8214,13 @@ msgid "Generate Key Pair"
msgstr "Generér nøglepar"
msgid "Online Status"
-msgstr "Online status"
+msgstr "Tilkoblet status"
msgid "View Message of the Day"
msgstr "Vis dagens besked (MOTD)"
msgid "Create SILC Key Pair..."
-msgstr "Opret SILC nøglepar..."
+msgstr "Opret SILC-nøglepar..."
#, c-format
msgid "User <I>%s</I> is not present in the network"
@@ -8878,107 +8253,88 @@ msgid "Unknown command: %s, (may be a client bug)"
msgstr "Ukendt kommando: %s, (måske er det en klientfejl)"
msgid "part [channel]: Leave the chat"
-msgstr "part [kanal]: Forlad chatten"
+msgstr "part [kanal]: Forlad samtalen"
msgid "leave [channel]: Leave the chat"
-msgstr "leave [kanal]: Forlad chatten"
+msgstr "leave [kanal]: Forlad samtalen"
msgid "topic [&lt;new topic&gt;]: View or change the topic"
-msgstr "topic [&lt;nyt emne&gt;]: Vis eller skift emnet"
+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;]: Deltag i chat 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"
+msgstr "list: Vis kanaler på dette netværk"
msgid "whois &lt;nick&gt;: View nick's information"
-msgstr "whois &lt;navn&gt;: Vis brugerens oplysninger"
+msgstr "whois &lt;navn&gt;: Vis brugerens oplysninger"
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"
+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)"
+msgstr "motd: Vis dagens besked (MOTD)"
msgid "detach: Detach this session"
msgstr "detach: Gå væk fra denne session"
msgid "quit [message]: Disconnect from the server, with an optional message"
-msgstr "quit [besked]: Luk forbindelse til server, med en eventuel besked"
+msgstr "quit [besked]: Luk forbindelse til server, med en eventuel besked"
msgid "call &lt;command&gt;: Call any silc client command"
-msgstr "call &lt;kommando&gt;: Kald en vilkårlig silc klient kommando"
+msgstr "call &lt;kommando&gt;: Kald en vilkårlig silc-klient kommando"
msgid "kill &lt;nick&gt; [-pubkey|&lt;reason&gt;]: Kill nick"
-msgstr "kill &lt;kælenavn&gt; [-pubkey|&lt;begrundelse&gt;]: Dræb kælenavn"
+msgstr "kill &lt;kælenavn&gt; [-pubkey|&lt;begrundelse&gt;]: Dræb kælenavn"
msgid "nick &lt;newnick&gt;: Change your nickname"
-msgstr "nick &lt;nyt navn&gt;: Skift dit navn"
+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"
+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]: Sæt eller fjern en "
-"kanal tilstand"
+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;: Sæt 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;: Sæt dine tilstande på netværket"
+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"
msgid "info [server]: View server administrative details"
-msgstr "info [server]: Vis serverens administrative detaljer"
+msgstr "info [server]: Vis serverens administrative detaljer"
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 klient eller servers 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"
+msgstr "stats: Vis server- og netværksstatistik"
msgid "ping: Send PING to the connected server"
-msgstr "ping: Send PING til den forbundne server"
+msgstr "ping: Send PING til den forbundne server"
msgid "users &lt;channel&gt;: List users in channel"
-msgstr "users &lt;kanal&gt;: Vis brugere på kanalen lige nu"
+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
@@ -8990,11 +8346,11 @@ msgstr ""
#. *< version
#. * summary
msgid "SILC Protocol Plugin"
-msgstr "SILC prokotolmodul"
+msgstr "SILC-prokotolmodul"
#. * description
msgid "Secure Internet Live Conferencing (SILC) Protocol"
-msgstr "Secure Internet Live Conferencing (SILC) protokol"
+msgstr "Secure Internet Live Conferencing (SILC)-protokol"
msgid "Network"
msgstr "Netværk"
@@ -9018,7 +8374,7 @@ msgid "Public key authentication"
msgstr "Offentlig nøgle godkendelse"
msgid "Block IMs without Key Exchange"
-msgstr "Blokér kvikbeskeder uden nøgleudveksling"
+msgstr "Blokér beskeder uden nøgleudveksling"
msgid "Block messages to whiteboard"
msgstr "Blokér beskeder til tavle"
@@ -9027,13 +8383,13 @@ msgid "Automatically open whiteboard"
msgstr "Åbn automatisk tavle"
msgid "Digitally sign and verify all messages"
-msgstr "Skriv alle beskeder under med digital signatur og godkend dem"
+msgstr "Skriv alle beskeder under med digital underskrift og godkend dem"
msgid "Creating SILC key pair..."
-msgstr "Opretter SILC nøglepar..."
+msgstr "Opretter SILC-nøglepar..."
msgid "Cannot create SILC key pair\n"
-msgstr "Kan ikke oprette SILC nøglepar\n"
+msgstr "Kan ikke oprette SILC-nøglepar\n"
#. Hint for translators: Please check the tabulator width here and in
#. the next strings (short strings: 2 tabs, longer strings 1 tab,
@@ -9048,7 +8404,7 @@ msgstr "Brugernavn. \t%s\n"
#, c-format
msgid "Email: \t\t%s\n"
-msgstr "Email: \t\t%s\n"
+msgstr "E-post: \t\t%s\n"
#, c-format
msgid "Host Name: \t%s\n"
@@ -9115,9 +8471,7 @@ 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"
@@ -9156,7 +8510,7 @@ msgstr "Fejl: Fjernvært understøtter ikke foreslåede HMAC"
#, c-format
msgid "Failure: Incorrect signature"
-msgstr "Fejl: Ugyldig signatur"
+msgstr "Fejl: Ugyldig underskrift"
#, c-format
msgid "Failure: Invalid cookie"
@@ -9167,14 +8521,14 @@ msgid "Failure: Authentication failed"
msgstr "Fejl: Godkendelse fejlede"
msgid "Cannot initialize SILC Client connection"
-msgstr "Kan ikke initialisere SILC klient forbindelse"
+msgstr "Kan ikke initialisere SILC-klient forbindelse"
msgid "John Noname"
msgstr "Intet navn"
#, c-format
msgid "Could not load SILC key pair: %s"
-msgstr "Kunne ikke indlæse SILC nøglepar: %s"
+msgstr "Kunne ikke indlæse SILC-nøglepar: %s"
msgid "Could not write"
msgstr "Kunne ikke skrive"
@@ -9219,10 +8573,10 @@ msgid "Use UDP"
msgstr "Brug UDP"
msgid "Use proxy"
-msgstr "Brug mellemvært"
+msgstr "Brug proxy"
msgid "Proxy"
-msgstr "Mellemvært"
+msgstr "Proxy"
msgid "Auth User"
msgstr "Autentificering bruger"
@@ -9268,7 +8622,7 @@ msgstr "En besked blev ikke sendt - du var hurtigere end serveren."
#, c-format
msgid "Chat in %s is not available."
-msgstr "Chat i %s er ikke muligt."
+msgstr "Samtale i %s er ikke muligt."
#, c-format
msgid "You are sending messages too fast to %s."
@@ -9280,8 +8634,7 @@ 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."
+msgstr "Du har ikke modtaget en besked fra %s, fordi den blev sendt for hurtigt."
#, c-format
msgid "Failure."
@@ -9301,7 +8654,7 @@ msgstr "Søgetjeneste midlertidigt utilgængelig."
#, c-format
msgid "Email lookup restricted."
-msgstr "Email søgning er begrænset."
+msgstr "E-post søgning er begrænset."
#, c-format
msgid "Keyword ignored."
@@ -9336,12 +8689,8 @@ 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."
+msgid "You have been connecting and disconnecting too frequently. Wait ten minutes and try again. If you continue to try, you will need to wait even longer."
+msgstr "Du er logget ind og ud for mange gange indenfor et kort tidsrum. Vent ti minutter og prøv så igen, for ellers skal du bare vente endnu længere."
#, c-format
msgid "An unknown signon error has occurred: %s."
@@ -9364,7 +8713,7 @@ 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 skiftet"
+msgstr "Adgangskode ændret"
msgid "_Group:"
msgstr "_Gruppe:"
@@ -9426,53 +8775,38 @@ 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 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 nægtet din anmodning om at tilføje dem til din venneliste."
+msgstr "%s har (tilbagevirkende) nægtet din anmodning om at tilføje dem til din venneliste."
msgid "Add buddy rejected"
msgstr "Vennetilføjelse nægtet"
#, c-format
-msgid ""
-"The Yahoo server has requested the use of an unrecognized authentication "
-"method. You will probably not be able to successfully sign on to Yahoo. "
-"Check %s for updates."
-msgstr ""
-"Yahoo-serveren har anmodet om brugen af en ukendt godkendelsesmetode. Du "
-"vil højst sandsynligt ikke kunne logge problemfrit på Yahoo. Kontrollér %s "
-"for opdateringer."
+msgid "The Yahoo server has requested the use of an unrecognized authentication method. You will probably not be able to successfully sign on to Yahoo. Check %s for updates."
+msgstr "Yahoo-serveren har anmodet om brugen af en ukendt godkendelsesmetode. Du vil højst sandsynligt ikke kunne logge problemfrit på Yahoo. Kontrollér %s for opdateringer."
msgid "Failed Yahoo! Authentication"
msgstr "Fejlede Yahoo! godkendelse"
#, c-format
-msgid ""
-"You have tried to ignore %s, but the user is on your buddy list. Clicking "
-"\"Yes\" will remove and ignore the buddy."
-msgstr ""
-"Du har prøvet at ignorere %s, men brugeren er på din venneliste. Hvis du "
-"klikker på \"Ja\" vil det fjerne og ignorere vennen."
+msgid "You have tried to ignore %s, but the user is on your buddy list. Clicking \"Yes\" will remove and ignore the buddy."
+msgstr "Du har prøvet at ignorere %s, men brugeren er på din venneliste. Hvis du klikker på \"Ja\" vil det fjerne og ignorere vennen."
msgid "Ignore buddy?"
msgstr "Ignorér ven?"
msgid "Your account is locked, please log in to the Yahoo! website."
-msgstr "Din konto er låst. Log ind på Yahoo! websitet."
+msgstr "Din konto er låst. Log ind på Yahoo!-webstedet."
#, c-format
msgid "Unknown error number %d. Logging into the Yahoo! website may fix this."
-msgstr ""
-"Ukendt fejl nummer %d. Prøv at logge ind på Yahoo! websitet for at fixe "
-"dette."
+msgstr "Ukendt fejl nummer %d. Prøv at logge ind på Yahoo!webstedet for at fixe dette."
#, c-format
msgid "Could not add buddy %s to group %s to the server list on account %s."
@@ -9496,7 +8830,7 @@ msgid ""
"Lost connection with %s:\n"
"%s"
msgstr ""
-"Mistede forbindelsen %s:\n"
+"Mistede forbindelsen til %s:\n"
"%s"
#, c-format
@@ -9526,22 +8860,22 @@ msgid "Not on server list"
msgstr "Ikke på server liste"
msgid "Appear Online"
-msgstr "Virk offline"
+msgstr "Virk tilkoblet"
msgid "Appear Permanently Offline"
-msgstr "Virk permanent offline"
+msgstr "Virk permanent afkoblet"
msgid "Presence"
msgstr "Tilstedeværelse"
msgid "Appear Offline"
-msgstr "Virk offline"
+msgstr "Virk afkoblet"
msgid "Don't Appear Permanently Offline"
-msgstr "Virk ikke permanent offline"
+msgstr "Virk ikke permanent afkoblet"
msgid "Join in Chat"
-msgstr "Deltag i chat"
+msgstr "Tilslut samtale"
msgid "Initiate Conference"
msgstr "Start konference"
@@ -9553,22 +8887,22 @@ msgid "Start Doodling"
msgstr "Start med at \"Doodle\""
msgid "Activate which ID?"
-msgstr "Aktivér hvilket ID?"
+msgstr "Aktivér hvilket id?"
msgid "Join whom in chat?"
-msgstr "Deltag med hvem i chat?"
+msgstr "Tilslut hvem i samtale?"
msgid "Activate ID..."
-msgstr "Aktivér ID..."
+msgstr "Aktivér id..."
msgid "Join User in Chat..."
-msgstr "Deltag med bruger i chat..."
+msgstr "Tilslut bruger i samtale..."
msgid "Open Inbox"
msgstr "Åbn indbakke"
msgid "join &lt;room&gt;: Join a chat room on the Yahoo network"
-msgstr "join &lt;rum&gt;: Deltag i chatrum på Yahoo-netværket"
+msgstr "join &lt;rum&gt;: Tilslut samtalerum på Yahoo-netværket"
msgid "list: List rooms on the Yahoo network"
msgstr "list: Vis rum på Yahoo-netværket"
@@ -9577,7 +8911,7 @@ msgid "doodle: Request user to start a Doodle session"
msgstr "doodle: Anmod en bruger om at starte en \"Doodle\"-session"
msgid "Yahoo ID..."
-msgstr "Yahoo ID..."
+msgstr "Yahoo-id..."
#. *< type
#. *< ui_requirement
@@ -9614,19 +8948,19 @@ msgid "File transfer port"
msgstr "Filoverførsel port"
msgid "Chat room locale"
-msgstr "Chatrum tegnsæt"
+msgstr "Samtalerum tegnsæt"
msgid "Ignore conference and chatroom invitations"
-msgstr "Ignorér konference og chatrum invitationer"
+msgstr "Ignorér konference og samtalerum invitationer"
msgid "Chat room list URL"
-msgstr "Chatrumsliste adresse"
+msgstr "Adresse på liste over samtalerum"
msgid "Yahoo Chat server"
-msgstr "Yahoo Chat-server"
+msgstr "Yahoo-samtaleserver"
msgid "Yahoo Chat port"
-msgstr "Yahoo chat-port"
+msgstr "Yahoo-samtaleport"
#. Write a local message to this conversation showing that a request for a
#. * Doodle session has been made
@@ -9647,17 +8981,11 @@ 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 dette link 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"
@@ -9672,53 +9000,38 @@ msgid "Home Page"
msgstr "Hjemmeside"
msgid "Cool Link 1"
-msgstr "Sejt link 1"
+msgstr "Sej henvisning 1"
msgid "Cool Link 2"
-msgstr "Sejt link 2"
+msgstr "Sej henvisning 2"
msgid "Cool Link 3"
-msgstr "Sejt link 3"
+msgstr "Sej henvisning 3"
msgid "Last Update"
msgstr "Sidst opdateret"
-msgid ""
-"This profile is in a language or format that is not supported at this time."
-msgstr ""
-"Denne profil er i et sprog eller format som ikke er understøttet på "
-"nuværende tidspunkt."
+msgid "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"
msgid "Failed to join chat"
-msgstr "Kunne ikke deltage i chat"
+msgstr "Kunne ikke tilslutte samtale"
#. -6
msgid "Unknown room"
@@ -9732,22 +9045,18 @@ 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 joine chatrummet igen"
+msgid "Unknown error. You may need to logout and wait five minutes before being able to rejoin a chatroom"
+msgstr "Ukendt fejl. Det kræver måske at du logger ud og venter fem minutter før du kan tilslutte samtalerummet igen"
#, c-format
msgid "You are now chatting in %s."
-msgstr "Du er nu kendt som %s."
+msgstr "Du samtaler nu i %s."
msgid "Failed to join buddy in chat"
-msgstr "Kunne ikke deltage med ven i chat"
+msgstr "Kunne ikke tilslutte ven i samtale"
msgid "Maybe they're not in a chat?"
-msgstr "Måske er de ikke i en chat?"
+msgstr "Måske er de ikke i en samtale?"
msgid "Fetching the room list failed."
msgstr "Hentning af rumliste fejlede."
@@ -9775,16 +9084,12 @@ 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"
-msgstr "Kunne ikke sende til chat %s,%s,%s"
+msgstr "Kunne ikke sende til samtale %s,%s,%s"
msgid "Hidden or not logged-in"
msgstr "Skjult eller ikke logget ind"
@@ -9825,33 +9130,19 @@ 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;: Deltag i en ny chat"
+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;"
@@ -9909,15 +9200,15 @@ msgstr ""
#, c-format
msgid "Unable to parse response from HTTP proxy: %s\n"
-msgstr "Kunne ikke fortolke svar fra HTTP-mellemvært: %s\n"
+msgstr "Kunne ikke fortolke svar fra HTTP-proxy: %s\n"
#, c-format
msgid "HTTP proxy connection error %d"
-msgstr "HTTP-mellemvært forbindelsesfejl %d"
+msgstr "HTTP-proxy forbindelsesfejl %d"
#, c-format
msgid "Access denied: HTTP proxy server forbids port %d tunneling."
-msgstr "Adgang nægtet: HTTP-mellemværtsserver tillader ikke port %d tunnel."
+msgstr "Adgang nægtet: HTTP-proxyserver tillader ikke port %d tunnel."
#, c-format
msgid "Error resolving %s"
@@ -9928,7 +9219,7 @@ msgstr "Kunne ikke slå værtsnavn op"
#, c-format
msgid "Requesting %s's attention..."
-msgstr "Påkræver %s's opmærksomhed..."
+msgstr "Anmoder om %s's opmærksomhed..."
#, c-format
msgid "%s has requested your attention!"
@@ -9967,15 +9258,15 @@ msgid ""
"%s has invited %s to the chat room %s:\n"
"%s"
msgstr ""
-"%s har inviteret %s til chatrummet %s:\n"
+"%s har inviteret %s til samtalerummet %s:\n"
"%s"
#, c-format
msgid "%s has invited %s to the chat room %s\n"
-msgstr "%s har inviteret %s til chatrummet %s\n"
+msgstr "%s har inviteret %s til samtalerummet %s\n"
msgid "Accept chat invitation?"
-msgstr "Accepter chat invitation?"
+msgstr "Accepter samtaleinvitation?"
#. Shortcut
msgid "Shortcut"
@@ -9989,10 +9280,10 @@ msgid "Stored Image"
msgstr "Gemt billede"
msgid "Stored Image. (that'll have to do for now)"
-msgstr "Gemt billede. (det må udgøre det indtil videre)"
+msgstr "Gemt billede. (det må gøre det indtil videre)"
msgid "SSL Connection Failed"
-msgstr "SSL-forbindelse mislykkedes"
+msgstr "SSL-forbindelse fejlede"
msgid "SSL Handshake Failed"
msgstr "SSL-håndtryk fejlede"
@@ -10061,12 +9352,8 @@ 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 "An error was encountered reading your %s. They have not been loaded, and the old file has been renamed to %s~."
+msgstr "En fejl opstod ved læsning af din %s. De er ikke blevet indlæst, og den gamle fil er blevet omdøbt til %s~."
msgid "Calculating..."
msgstr "Udregner..."
@@ -10123,12 +9410,8 @@ 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. "
-"Webserveren prøver måske noget ondskabsfuldt."
+msgid "Unable to allocate enough memory to hold the contents from %s. The web server may be trying something malicious."
+msgstr "Ikke i stand til at allokere nok hukommelse til at holde indholdet fra %s. Internetserveren prøver måske noget ondskabsfuldt."
#, c-format
msgid "Error reading from %s: %s"
@@ -10158,7 +9441,7 @@ msgstr "Forbindelse afbrudt af andet software på din computer."
#. 10054
#, c-format
msgid "Remote host closed connection."
-msgstr "Fjernbrugeren har lukket forbindelsen."
+msgstr "Fjernværten har lukket forbindelsen."
#. 10060
#, c-format
@@ -10168,7 +9451,7 @@ msgstr "Forbindelsen overskred tidsgrænsen."
#. 10061
#, c-format
msgid "Connection refused."
-msgstr "Forbindelse afslået."
+msgstr "Forbindelse afvist."
#. 10048
#, c-format
@@ -10179,10 +9462,10 @@ msgid "Internet Messenger"
msgstr "Internet beskeder"
msgid "Pidgin Internet Messenger"
-msgstr "Pidgin Internet Kvikbesked"
+msgstr "Pidgin Internet Besked"
msgid "Send instant messages over multiple protocols"
-msgstr "Send kvik-beskeder over flere protokoller"
+msgstr "Send kvikbeskeder over flere protokoller"
msgid "Orientation"
msgstr "Placering"
@@ -10215,7 +9498,7 @@ msgstr "Påmindelse om ny _post"
#. Buddy icon
msgid "Use this buddy _icon for this account:"
-msgstr "Brug dette venne_ikon for denne konto:"
+msgstr "Brug dette venne_ikon til denne konto:"
#. Build the protocol options frame.
#, c-format
@@ -10223,13 +9506,13 @@ msgid "%s Options"
msgstr "%s indstillinger"
msgid "Use GNOME Proxy Settings"
-msgstr "Brug GNOME-mellemværts indstillinger"
+msgstr "Brug GNOME-proxy indstillinger"
msgid "Use Global Proxy Settings"
-msgstr "Brug globale mellemværts indstillinger"
+msgstr "Brug globale proxy-indstillinger"
msgid "No Proxy"
-msgstr "Ingen mellemvært"
+msgstr "Ingen proxy"
msgid "HTTP"
msgstr "HTTP"
@@ -10256,10 +9539,10 @@ msgid "you can see the butterflies mating"
msgstr "du kan se sommerfuglene parre sig"
msgid "Proxy Options"
-msgstr "Indstillinger for mellemvært"
+msgstr "Indstillinger for proxy"
msgid "Proxy _type:"
-msgstr "Mellemværts_type:"
+msgstr "Proxy_type:"
msgid "_Host:"
msgstr "_Værtsnavn:"
@@ -10298,39 +9581,24 @@ 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 kvikbesked-konti konfigureret. For at komme i gang med at "
-"forbinde med %s tryk <b>Tilføj...</b>-knappen nedenfor og konfigurer din "
-"første konto. Hvis du vil have %s til at forbinde til flere kvikbesked-"
-"konti, tryk <b>Tilføj...</b> igen for at konfigurer 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\" fra i kontekstmenuen for kontakten"
+msgid "Merging these contacts will cause them to share a single entry on the buddy list and use a single conversation window. You can separate them again by choosing 'Expand' from the contact's context menu"
+msgstr "Slås disse kontakter sammen, vil de dele et enkelt element på vennelisten, og bruge et enkelt samtalevindue. Du kan adskille dem igen, ved at vælge \"Udvid\" i kontekstmenuen for kontakten"
msgid "Please update the necessary fields."
msgstr "Opdatér de nødvendige felter."
@@ -10338,11 +9606,8 @@ 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 chat du gerne vil deltage i.\n"
+msgid "Please enter the appropriate information about the chat you would like to join.\n"
+msgstr "Indtast den nødvendige information om den samtale du gerne vil tilslutte.\n"
msgid "_Account:"
msgstr "_Konto:"
@@ -10372,7 +9637,7 @@ msgid "View _Log"
msgstr "Vis _log"
msgid "Hide when offline"
-msgstr "Skjul når offline"
+msgstr "Skjul når afkoblet"
msgid "_Alias..."
msgstr "_Alias..."
@@ -10381,7 +9646,7 @@ msgid "_Remove"
msgstr "_Fjern"
msgid "Set Custom Icon"
-msgstr "Sæt tilpasset ikon"
+msgstr "Indstil tilpasset ikon"
msgid "Remove Custom Icon"
msgstr "Fjern tilpasset ikon"
@@ -10390,7 +9655,7 @@ msgid "Add _Buddy..."
msgstr "Tilføj _ven..."
msgid "Add C_hat..."
-msgstr "Tilføj _chat..."
+msgstr "Tilføj _samtale..."
msgid "_Delete Group"
msgstr "_Slet gruppe"
@@ -10400,10 +9665,10 @@ msgstr "_Omdøb"
#. join button
msgid "_Join"
-msgstr "_Deltag"
+msgstr "_Tilslut"
msgid "Auto-Join"
-msgstr "Auto-Deltag"
+msgstr "Auto-tilslut"
msgid "Persistent"
msgstr "Vedvarende"
@@ -10420,11 +9685,8 @@ 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 en "
-"ven."
+msgid "You are not currently signed on with an account that can add that buddy."
+msgstr "Du er på nuværende tidspunkt ikke logget på nogen konti som kan tilføje denne ven."
#. I don't believe this can happen currently, I think
#. * everything that calls this function checks for one of the
@@ -10440,7 +9702,7 @@ msgid "/Buddies/New Instant _Message..."
msgstr "/Venner/Ny _besked..."
msgid "/Buddies/Join a _Chat..."
-msgstr "/Venner/_Deltag i chat..."
+msgstr "/Venner/_Tilslut en samtale..."
msgid "/Buddies/Get User _Info..."
msgstr "/Venner/_Hent brugeroplysninger..."
@@ -10452,19 +9714,19 @@ msgid "/Buddies/Sh_ow"
msgstr "/Venner/_Vis"
msgid "/Buddies/Show/_Offline Buddies"
-msgstr "/Venner/Vis/_offline venner"
+msgstr "/Venner/Vis/_Afkoblede venner"
msgid "/Buddies/Show/_Empty Groups"
-msgstr "/Venner/Vis/_tomme grupper"
+msgstr "/Venner/Vis/_Tomme grupper"
msgid "/Buddies/Show/Buddy _Details"
-msgstr "/Venner/Vis/venne_detaljer"
+msgstr "/Venner/Vis/Venne_detaljer"
msgid "/Buddies/Show/Idle _Times"
-msgstr "/Venner/Vis/inaktiv _tider"
+msgstr "/Venner/Vis/Inaktiv _tider"
msgid "/Buddies/Show/_Protocol Icons"
-msgstr "/Venner/Vis/_tomme grupper"
+msgstr "/Venner/Vis/_Protokolikoner"
msgid "/Buddies/_Sort Buddies"
msgstr "/Venner/_Sortér venner"
@@ -10473,7 +9735,7 @@ msgid "/Buddies/_Add Buddy..."
msgstr "/Venner/Tilføj _ven..."
msgid "/Buddies/Add C_hat..."
-msgstr "/Venner/Tilføj _chat..."
+msgstr "/Venner/Tilføj _samtale..."
msgid "/Buddies/Add _Group..."
msgstr "/Venner/Tilføj _gruppe..."
@@ -10508,7 +9770,7 @@ msgid "/Tools/Pr_ivacy"
msgstr "/Værktøjer/_Privatliv"
msgid "/Tools/Smile_y"
-msgstr "/Værktøjer/Smile_ys"
+msgstr "/Værktøjer/Smile_y"
msgid "/Tools/_File Transfers"
msgstr "/Værktøjer/_Filoverførsler"
@@ -10527,7 +9789,7 @@ msgid "/_Help"
msgstr "/_Hjælp"
msgid "/Help/Online _Help"
-msgstr "/Hjælp/Online _hjælp"
+msgstr "/Hjælp/Tilkoblet _hjælp"
msgid "/Help/_Debug Window"
msgstr "/Hjælp/Vis _fejlsøgningsvindue"
@@ -10556,7 +9818,7 @@ msgstr ""
"<b>Emne:</b> %s"
msgid "(no topic set)"
-msgstr "(Intet emne sat)"
+msgstr "(Intet emne angivet)"
msgid "Buddy Alias"
msgstr "Vennealias"
@@ -10595,7 +9857,7 @@ msgid "/Buddies/New Instant Message..."
msgstr "/Venner/Ny besked..."
msgid "/Buddies/Join a Chat..."
-msgstr "/Venner/Deltag i chat..."
+msgstr "/Venner/Tilslut en samtale..."
msgid "/Buddies/Get User Info..."
msgstr "/Venner/Hent brugeroplysninger..."
@@ -10604,7 +9866,7 @@ msgid "/Buddies/Add Buddy..."
msgstr "/Venner/Tilføj ven..."
msgid "/Buddies/Add Chat..."
-msgstr "/Venner/Tilføj chat..."
+msgstr "/Venner/Tilføj samtale..."
msgid "/Buddies/Add Group..."
msgstr "/Venner/Tilføj gruppe..."
@@ -10649,12 +9911,9 @@ 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>"
@@ -10673,21 +9932,17 @@ 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 kvikbesked-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
#.
msgid "/Buddies/Show/Offline Buddies"
-msgstr "/Venner/Vis/Offline venner"
+msgstr "/Venner/Vis/Afkoblede venner"
msgid "/Buddies/Show/Empty Groups"
msgstr "/Venner/Vis/Tomme grupper"
@@ -10714,30 +9969,22 @@ msgid "Add buddy to _group:"
msgstr "Tilføj ven til _gruppe:"
msgid "This protocol does not support chat rooms."
-msgstr "Denne protokol understøtter ikke chatrum."
+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 chatte."
+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 chat 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 "Auto_join when account becomes online."
-msgstr "_Tilslut automatisk når en konto kommer online."
+msgstr "_Tilslut automatisk når en konto tilkobles."
msgid "_Remain in chat after window is closed."
-msgstr "_Forbliv i chat efter vinduet er lukket."
+msgstr "_Forbliv i samtale efter vinduet er lukket."
msgid "Please enter the name of the group to be added."
msgstr "Indtast navnet på gruppen der skal tilføjes."
@@ -10774,24 +10021,17 @@ msgid "Unknown command."
msgstr "Ukendt kommando."
msgid "That buddy is not on the same protocol as this chat."
-msgstr "Vennen er ikke på den samme protokol som denne chat."
+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 chat-rum"
+msgstr "Invitér ven med i samtalerum"
#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Indtast navnet på den bruger, du vil invitere, samt eventuelt en inviterings-"
-"besked."
+msgid "Please enter the name of the user you wish to invite, along with an optional invite message."
+msgstr "Indtast navnet på den bruger, du vil invitere, samt eventuelt en inviterings-besked."
msgid "_Buddy:"
msgstr "_Ven:"
@@ -10840,10 +10080,10 @@ msgid "Save Icon As..."
msgstr "Gem ikon som..."
msgid "Set Custom Icon..."
-msgstr "Sæt tilpasset ikon..."
+msgstr "Indstil tilpasset ikon..."
msgid "Change Size"
-msgstr "Skift størrelse"
+msgstr "Ændr størrelse"
msgid "Show All"
msgstr "Vis alle"
@@ -10889,7 +10129,7 @@ msgid "/Conversation/_Block..."
msgstr "/Samtale/_Blokér..."
msgid "/Conversation/_Unblock..."
-msgstr "/Samtale/_Afblokering..."
+msgstr "/Samtale/_Frigiv..."
msgid "/Conversation/_Add..."
msgstr "/Samtale/_Tilføj..."
@@ -10908,25 +10148,25 @@ msgstr "/Samtale/_Luk"
#. Options
msgid "/_Options"
-msgstr "/_Valgmuligheder"
+msgstr "/_Indstillinger"
msgid "/Options/Enable _Logging"
-msgstr "/Valgmuligheder/Aktiver _logning"
+msgstr "/Indstillinger/Aktivér _logning"
msgid "/Options/Enable _Sounds"
-msgstr "/Valgmuligheder/Brug _lyde"
+msgstr "/Indstillinger/Brug _lyde"
msgid "/Options/Show Formatting _Toolbars"
-msgstr "/Valgmuligheder/Vis _formatteringslinjer"
+msgstr "/Indstillinger/Vis _formatteringslinjer"
msgid "/Options/Show Ti_mestamps"
-msgstr "/Valgmuligheder/Vis _tidsstempler"
+msgstr "/Indstillinger/Vis _tidsstempler"
msgid "/Conversation/More"
msgstr "/Samtale/Mere"
msgid "/Options"
-msgstr "/Valgmuligheder"
+msgstr "/Indstillinger"
#. The menubar has been deactivated. Make sure the 'More' submenu is regenerated next time
#. * the 'Conversation' menu pops up.
@@ -10958,7 +10198,7 @@ msgid "/Conversation/Block..."
msgstr "/Samtale/Blokér..."
msgid "/Conversation/Unblock..."
-msgstr "/Samtale/Afblokering..."
+msgstr "/Samtale/Frigivelse..."
msgid "/Conversation/Add..."
msgstr "/Samtale/Tilføj..."
@@ -10967,22 +10207,22 @@ msgid "/Conversation/Remove..."
msgstr "/Samtale/Fjern..."
msgid "/Conversation/Insert Link..."
-msgstr "/Samtale/Indsæt link..."
+msgstr "/Samtale/Indsæt henvisning..."
msgid "/Conversation/Insert Image..."
msgstr "/Samtale/Indsæt billede..."
msgid "/Options/Enable Logging"
-msgstr "/Valgmuligheder/Aktiver logning"
+msgstr "/Indstillinger/Aktivér logning"
msgid "/Options/Enable Sounds"
-msgstr "/Valgmuligheder/Brug lyde"
+msgstr "/Indstillinger/Brug lyde"
msgid "/Options/Show Formatting Toolbars"
-msgstr "/Valgmuligheder/Vis formatteringslinjer"
+msgstr "/Indstillinger/Vis formatteringslinjer"
msgid "/Options/Show Timestamps"
-msgstr "/Valgmuligheder/Vis tidsstempler"
+msgstr "/Indstillinger/Vis tidsstempler"
msgid "User is typing..."
msgstr "Bruger skriver..."
@@ -11004,7 +10244,7 @@ msgstr "_Send"
#. Setup the label telling how many people are in the room.
msgid "0 people in room"
-msgstr "Ingen chattere i rummet"
+msgstr "Ingen samtalere i rummet"
#, c-format
msgid "%d person in room"
@@ -11055,7 +10295,7 @@ msgid "Last created window"
msgstr "Sidst oprettede vindue"
msgid "Separate IM and Chat windows"
-msgstr "Seperate samtale- og chatvinduer"
+msgstr "Seperate besked- og samtalevinduer"
msgid "New window"
msgstr "Nyt vindue"
@@ -11088,7 +10328,7 @@ msgid "Filter"
msgstr "Filter"
msgid "Right click for more options."
-msgstr "Højreklik for flere muligheder."
+msgstr "Højreklik for flere indstillinger."
msgid "Level "
msgstr "Niveau "
@@ -11125,7 +10365,7 @@ msgid "support"
msgstr "support"
msgid "webmaster"
-msgstr "webmaster"
+msgstr "internetudvikler"
msgid "Senior Contributor/QA"
msgstr "Seniorbidrager/QA"
@@ -11162,7 +10402,7 @@ msgid "Arabic"
msgstr "Arabisk"
msgid "Belarusian Latin"
-msgstr "Belarusian Latin"
+msgstr "Hviderussisk latinsk"
msgid "Bulgarian"
msgstr "Bulgarsk"
@@ -11261,10 +10501,10 @@ msgid "Ubuntu Georgian Translators"
msgstr "Georgiske Ubuntu-oversættere"
msgid "Kannada"
-msgstr "Kannada"
+msgstr "Kanada"
msgid "Kannada Translation team"
-msgstr "Kannada oversættelseshold"
+msgstr "Kanadiske oversættelseshold"
msgid "Korean"
msgstr "Koreansk"
@@ -11285,7 +10525,7 @@ msgid "Mongolian"
msgstr "Mongolsk"
msgid "Bokmål Norwegian"
-msgstr "Bokmål"
+msgstr "Norsk"
msgid "Nepali"
msgstr "Nepali"
@@ -11363,7 +10603,7 @@ msgid "Simplified Chinese"
msgstr "Simpelt kinesisk"
msgid "Hong Kong Chinese"
-msgstr "Hong Kong Chinese"
+msgstr "Kinesisk"
msgid "Traditional Chinese"
msgstr "Traditionelt kinesisk"
@@ -11376,45 +10616,19 @@ 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 kvikbeskeds-klient baseret på libpurple, der "
-"understøtter AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC, SIP/SIMPLE, Novell "
-"GroupWise, Lotus Sametime, Bonjour, Zephyr, MySpaceIM, Gadu-Gadu og QQ på "
-"samme tid. Det er skrevet i GTK+.<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 bidragsydere. Se 'COPYRIGHT' filen for den komplette "
-"liste af bidragsydere. 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
@@ -11425,13 +10639,13 @@ msgid "Current Developers"
msgstr "Nuværende udviklere"
msgid "Crazy Patch Writers"
-msgstr "Vilde patch-skrivere"
+msgstr "Vilde fejlrettere"
msgid "Retired Developers"
msgstr "Tidligere udviklere"
msgid "Retired Crazy Patch Writers"
-msgstr "Tidligere Vilde patch-skrivere"
+msgstr "Tidligere Vilde fejlrettere"
msgid "Current Translators"
msgstr "Nuværende oversættere"
@@ -11451,12 +10665,8 @@ 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"
@@ -11475,24 +10685,16 @@ msgid "Alias Buddy"
msgstr "Lav alias for ven"
msgid "Alias Chat"
-msgstr "Alias chat"
+msgstr "Samtalealias"
msgid "Enter an alias for this chat."
-msgstr "Indtast et alias for denne chat."
+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"
@@ -11501,9 +10703,7 @@ 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"
@@ -11513,12 +10713,8 @@ 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"
@@ -11527,8 +10723,7 @@ 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"
@@ -11538,22 +10733,20 @@ 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 chatten %s fra din venneliste. Vil du fortsætte?"
+msgid "You are about to remove the chat %s from your buddy list. Do you want to continue?"
+msgstr "Du skal til at fjerne samtalen %s fra din venneliste. Vil du fortsætte?"
msgid "Remove Chat"
-msgstr "Fjern chat"
+msgstr "Fjern samtale"
msgid "_Remove Chat"
-msgstr "_Fjern chat"
+msgstr "_Fjern samtale"
msgid "Right-click for more unread messages...\n"
msgstr "Højreklik for flere ulæste beskeder...\n"
msgid "_Change Status"
-msgstr "_Skift status"
+msgstr "_Ændr status"
msgid "Show Buddy _List"
msgstr "Vis venne_liste"
@@ -11655,57 +10848,56 @@ msgid "_Reset formatting"
msgstr "_Nulstil formattering"
msgid "Disable _smileys in selected text"
-msgstr "Deaktivér _smileys i valgt tekst"
+msgstr "Deaktivér _smileyer i valgt tekst"
msgid "Hyperlink color"
-msgstr "Link farve"
+msgstr "Farve på henvisning"
msgid "Color to draw hyperlinks."
-msgstr "Farve som hyperlinks skal være."
+msgstr "Farve på henvisninger."
msgid "Hyperlink visited color"
-msgstr "Link farve ved besøgt link"
+msgstr "Farve på besøgt henvisning"
msgid "Color to draw hyperlinks after it has been visited (or activated)."
-msgstr ""
-"Farve som hyperlinks skal være efter de er blevet besøgt (eller aktiveret)."
+msgstr "Farve på henvisning efter at de er blevet besøgt (eller aktiveret)."
# virkelig dårlig oversættelse!
msgid "Hyperlink prelight color"
-msgstr "Hyperlink præ-lys farve"
+msgstr "Farve på ubrugte henvisninger"
msgid "Color to draw hyperlinks when mouse is over them."
-msgstr "Farve som hyperlinks skal være når musen er over dem."
+msgstr "Farve på henvisning når musen er over dem."
msgid "Sent Message Name Color"
msgstr "Farve på sendte beskeder"
msgid "Color to draw the name of a message you sent."
-msgstr "Farvelæg navnet på den besked du sendte."
+msgstr "Farve som bruges på navnet til den besked du sendte."
msgid "Received Message Name Color"
-msgstr "Farve på medtagede beskeder"
+msgstr "Farve som bruges på navnet til modtagne beskeder"
msgid "Color to draw the name of a message you received."
-msgstr "Farvelæg navnet på den besked du modtog."
+msgstr "Farve som bruges på navnet til den besked du modtog."
msgid "\"Attention\" Name Color"
-msgstr "\"Opmærksomhed\"-farvenavn"
+msgstr "\"Opmærksomhed\" farvenavn"
msgid "Color to draw the name of a message you received containing your name."
-msgstr "Farvelæg navnet på den besked du modtog indholdende dit navn."
+msgstr "Farve som bruges på navnet til den besked du modtog indeholdende dit navn."
msgid "Action Message Name Color"
-msgstr "Farvenavn for handlingsbesked"
+msgstr "Farve som bruges på navnet til handlingsbesked"
msgid "Color to draw the name of an action message."
-msgstr "Farvelæg navnet på en handlingsbesked."
+msgstr "Farve som bruges på navnet til en handlingsbesked."
msgid "Action Message Name Color for Whispered Message"
-msgstr "Farvenavn for handlingsbesked ved hvisket besked"
+msgstr "Farve som bruges på navnet til hvisket handlingsbesked"
msgid "Whisper Message Name Color"
-msgstr "Farvenavn for hviskebesked"
+msgstr "Farve som bruges på navnet til hviskebesked"
msgid "Typing notification color"
msgstr "Farve på påmindelse af indtastning"
@@ -11723,13 +10915,13 @@ msgid "Enable typing notification"
msgstr "Aktivér påmindelse om indtastning"
msgid "_Copy Email Address"
-msgstr "_Kopier email adresse"
+msgstr "_Kopier e-postadresse"
msgid "_Open Link in Browser"
-msgstr "Åbn link i br_owser"
+msgstr "Åbn henvisning i br_owser"
msgid "_Copy Link Location"
-msgstr "_Kopiér link adresse"
+msgstr "_Kopiér henvisningsadresse"
msgid ""
"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
@@ -11778,7 +10970,7 @@ msgstr "_Gem billede..."
#, c-format
msgid "_Add Custom Smiley..."
-msgstr "_Tilføj brugerdefinerede smileys..."
+msgstr "_Tilføj tilpasset smiley..."
msgid "Select Font"
msgstr "Vælg skrifttype"
@@ -11795,18 +10987,14 @@ 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 URL'en og beskrivelsen på det link du vil indsætte. Beskrivelsen er "
-"ikke krævet."
+msgid "Please enter the URL and description of the link that you want to insert. The description is optional."
+msgstr "Indtast adressen og beskrivelsen på den henvisning du vil indsætte. Beskrivelsen er ikke krævet."
msgid "Please enter the URL of the link that you want to insert."
-msgstr "Indtast adressen på henvisningen du vil indsætet."
+msgstr "Indtast adressen på henvisningen du vil indsætte."
msgid "Insert Link"
-msgstr "Indsæt link"
+msgstr "Indsæt henvisning"
msgid "_Insert"
msgstr "_Indsæt"
@@ -11823,24 +11011,23 @@ msgid ""
"This smiley is disabled because a custom smiley exists for this shortcut:\n"
" %s"
msgstr ""
-"Denne smiley er deaktiveret, fordi tilpasset smiley findes for denne "
-"genvej:\n"
+"Denne smiley er deaktiveret, fordi en tilpasset smiley findes for denne genvej:\n"
"%s"
msgid "Smile!"
msgstr "Smil!"
msgid "_Manage custom smileys"
-msgstr "_Håndtér brugerdefinerede smileys"
+msgstr "_Håndtér tilpassede smileyer"
msgid "This theme has no available smileys."
-msgstr "Dette tema har ingen tilgængelige smileys."
+msgstr "Dette tema har ingen tilgængelige smileyer."
msgid "_Font"
msgstr "_Skrifttype"
msgid "Group Items"
-msgstr "Gruppér punkter"
+msgstr "Gruppér elementer"
msgid "Ungroup Items"
msgstr "Afgruppér elementer"
@@ -11855,7 +11042,7 @@ msgid "Underline"
msgstr "Understregning"
msgid "Strikethrough"
-msgstr "Gennemstreget"
+msgstr "Gennemstreg"
msgid "Increase Font Size"
msgstr "Forøg skriftstørrelse"
@@ -11864,7 +11051,7 @@ msgid "Decrease Font Size"
msgstr "Formindsk skriftstørrelse"
msgid "Font Face"
-msgstr "Skriftsnit"
+msgstr "Skrifttype-familie"
msgid "Background Color"
msgstr "Baggrundsfarve"
@@ -11885,13 +11072,13 @@ msgid "<b>_Bold</b>"
msgstr "<b>_Fed</b>"
msgid "<i>_Italic</i>"
-msgstr "<i>_Kursivt</i>"
+msgstr "<i>_Kursiv</i>"
msgid "<u>_Underline</u>"
-msgstr "<u>_Understregning</u>"
+msgstr "<u>_Understreg</u>"
msgid "<span strikethrough='true'>Strikethrough</span>"
-msgstr "<span strikethrough='true'>Gennemstreget</span>"
+msgstr "<span strikethrough='true'>Gennemstreg</span>"
msgid "<span size='larger'>_Larger</span>"
msgstr "<span size='larger'>_Større</span>"
@@ -11906,7 +11093,7 @@ msgstr "<span size='smaller'>_Mindre</span>"
#. * need to update them when formatting changes. The above items don't need
#. * no updating nor nothin'
msgid "_Font face"
-msgstr "_Skriftsnit"
+msgstr "_Skrifttype-familie"
msgid "Foreground _color"
msgstr "_Forgrundsfarve"
@@ -11918,42 +11105,31 @@ msgid "_Image"
msgstr "Bi_llede"
msgid "_Link"
-msgstr "_Link"
+msgstr "_Henvisning"
msgid "_Horizontal rule"
-msgstr "_Horisontal regel"
+msgstr "_Vandret regel"
msgid "_Smile!"
msgstr "S_mil!"
msgid "Log Deletion Failed"
-msgstr "Sletning af log mislykkedes"
+msgstr "Sletning af log fejlede"
msgid "Check permissions and try again."
msgstr "Kontrollér rettigheder og prøv igen."
#, c-format
-msgid ""
-"Are you sure you want to permanently delete the log of the conversation with "
-"%s which started at %s?"
-msgstr ""
-"Er du sikker på at du permanent vil slette loggen over samtaler med %s som "
-"startede %s?"
+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 %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?"
@@ -11996,15 +11172,15 @@ msgstr ""
"%s %s\n"
"Brug: %s [TILVALG]...\n"
"\n"
-" -c, --config=MAPPE brug MAPPE for opsætningsfiler\n"
+" -c, --config=DIR brug DIR for opsætningsfiler\n"
" -d, --debug udskriv fejlsøgningsbeskeder til stdout\n"
" -h, --help vis denne hjælp og afslut\n"
-" -m, --multiple tillad flere instanser\n"
+" -m, --multiple tillad flere instanser\n"
" -n, --nologin log ikke ind automatisk\n"
" -l, --login[=NAVN] aktivér angivede konti (valgfrit argument NAVN\n"
" angiver konti der skal benyttes, adskilt af kommaer.\n"
-" Uden dette vil den første konto blive aktiveret.\n"
-" --display=SKÆRM X-skærm der skal benyttes\n"
+" Uden dette vil kun den første konto blive aktiveret.\n"
+" --display=SKÆRM X-skærm der skal benyttes\n"
" -v, --version vis nuværende version og afslut\n"
#, c-format
@@ -12028,12 +11204,12 @@ msgstr ""
" -c, --config=MAPPE brug MAPPE for opsætningsfiler\n"
" -d, --debug udskriv fejlsøgningsbeskeder til stdout\n"
" -h, --help vis denne hjælp og afslut\n"
-" -m, --multiple tillad flere instanser\n"
+" -m, --multiple tillad flere instanser\n"
" -n, --nologin log ikke ind automatisk\n"
" -l, --login[=NAVN] aktivér angivede konti (valgfrit argument NAVN\n"
" angiver konti der skal benyttes, adskilt af kommaer.\n"
-" Uden dette vil den første konto blive aktiveret.\n"
-" --display=SKÆRM X-skærm der skal benyttes\n"
+" Uden dette vil kun den første konto blive aktiveret.\n"
+" --display=SKÆRM X-skærm der skal benyttes\n"
" -v, --version vis nuværende version og afslut\n"
#, c-format
@@ -12087,8 +11263,8 @@ msgstr[1] "%s har %d nye beskeder."
#, c-format
msgid "<b>%d new email.</b>"
msgid_plural "<b>%d new emails.</b>"
-msgstr[0] "<b>%d ny breve.</b>"
-msgstr[1] "<b>%d nye breve.</b>"
+msgstr[0] "<b>%d ny e-breve.</b>"
+msgstr[1] "<b>%d nye e-breve.</b>"
#, c-format
msgid "The browser command \"%s\" is invalid."
@@ -12101,11 +11277,8 @@ 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 "
-"sat."
+msgid "The 'Manual' browser command has been chosen, but no command has been set."
+msgstr "\"Manuel\" browser-kommandoen er blevet valgt, men ingen kommando er blevet angivet."
msgid "The following plugins will be unloaded."
msgstr "De følgende moduler kunne ikke udlæses."
@@ -12117,14 +11290,10 @@ msgid "Unload Plugins"
msgstr "Udlæs udvidelsesmoduler"
msgid "Could not unload plugin"
-msgstr "Kunne ikke deaktivere udvidelsesmodul"
+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 deaktiveret nu, men vil blive deaktiveret "
-"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 ""
@@ -12132,16 +11301,16 @@ msgid ""
"Check the plugin website for an update.</span>"
msgstr ""
"<span foreground=\"rød\" weight=\"bold\">Fejl: %s\n"
-"Kontrollér udvidelsesmodul-websiden for en opdatering.</span>"
+"Kontrollér udvidelsesmodul-netstedet for en opdatering.</span>"
msgid "Author"
-msgstr "Udvikler"
+msgstr "Forfatter"
msgid "<b>Written by:</b>"
msgstr "<b>Skrevet af:</b>"
msgid "<b>Web site:</b>"
-msgstr "<b>Websted:</b>"
+msgstr "<b>Netsted:</b>"
msgid "<b>Filename:</b>"
msgstr "<b>Filnavn:</b>"
@@ -12223,7 +11392,7 @@ msgid "_Recurring"
msgstr "_Gentages"
msgid "Pounce Target"
-msgstr "Overvågningsmål"
+msgstr "Overvåg mål"
msgid "Smiley theme failed to unpack."
msgstr "Smiley-tema kunne ikke udpakkes."
@@ -12231,12 +11400,8 @@ 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"
@@ -12245,7 +11410,7 @@ msgid "Keyboard Shortcuts"
msgstr "Tastaturgenveje"
msgid "Cl_ose conversations with the Escape key"
-msgstr "_Luk samtaler med Escape-tasten"
+msgstr "_Afslut samtaler med Escape-tasten"
msgid "System Tray Icon"
msgstr "Statusområde ikon"
@@ -12270,7 +11435,7 @@ msgid "Tabs"
msgstr "Faner"
msgid "Show IMs and chats in _tabbed windows"
-msgstr "Vis beskeder og chats i _fanebladsvinduer"
+msgstr "Vis beskeder og samtaler i _fanebladsvinduer"
msgid "Show close b_utton on tabs"
msgstr "Vis _luk knapper på faneblade"
@@ -12303,7 +11468,7 @@ msgid "Show _formatting on incoming messages"
msgstr "Vis _formatteringslinje på nye beskeder"
msgid "Close IMs immediately when the tab is closed"
-msgstr "Luk kvikbeskeder straks når fanebladet lukkes"
+msgstr "Afslut beskeder straks når fanebladet lukkes"
msgid "Show _detailed information"
msgstr "Vis _detaljeret information"
@@ -12344,18 +11509,14 @@ 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."
msgid "Cannot start browser configuration program."
-msgstr "Kan ikke starte konfigurationsprogram for browser."
+msgstr "Kan ikke starte konfigurationsprogram til browser."
msgid "ST_UN server:"
msgstr "ST_UN server:"
@@ -12397,7 +11558,7 @@ msgid ""
"Proxy & Browser preferences are configured\n"
"in GNOME Preferences"
msgstr ""
-"Proxy & Browser indstillinger konfigureres\n"
+"Proxy- og Browserindstillinger konfigureres\n"
"i GNOME-indstillinger"
msgid "Configure _Proxy"
@@ -12410,11 +11571,11 @@ msgid "Proxy Server"
msgstr "Server"
msgid "No proxy"
-msgstr "Ingen mellemvært"
+msgstr "Ingen proxy"
#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
msgid "Use remote DNS with SOCKS4 proxies"
-msgstr "Benyt fjern-DNS med SOCKS4-mellemværter"
+msgstr "Benyt fjern-DNS med SOCKS4-proxyer"
msgid "_User:"
msgstr "_Bruger:"
@@ -12435,7 +11596,7 @@ msgid "Konqueror"
msgstr "Konqueror"
msgid "Desktop Default"
-msgstr "Skrivebordsstandard"
+msgstr "Standardskrivebord"
msgid "GNOME Default"
msgstr "GNOME standard"
@@ -12462,7 +11623,7 @@ msgid "_Browser:"
msgstr "_Browser:"
msgid "_Open link in:"
-msgstr "_Åbn link i:"
+msgstr "_Åbn henvisning i:"
msgid "Browser default"
msgstr "Browser standard"
@@ -12544,7 +11705,7 @@ msgid "Sounds when conversation has _focus"
msgstr "Lyde når samtale har _fokus"
msgid "_Enable sounds:"
-msgstr "_Aktivér lyde:"
+msgstr "_Slå lyde til:"
msgid "V_olume:"
msgstr "L_ydstyrke:"
@@ -12553,7 +11714,7 @@ msgid "Play"
msgstr "Afspil"
msgid "_Browse..."
-msgstr "_Gennemse..."
+msgstr "_Browse..."
msgid "_Reset"
msgstr "_Nulstil"
@@ -12575,13 +11736,13 @@ msgid "Auto-away"
msgstr "Automatisk fraværende"
msgid "Change status when _idle"
-msgstr "Skift status ved _inaktivitet"
+msgstr "Ændr status ved _inaktivitet"
msgid "_Minutes before becoming idle:"
msgstr "_Minutter før du bliver inaktiv:"
msgid "Change _status to:"
-msgstr "Skift _status til:"
+msgstr "Ændr _status til:"
#. Signon status stuff
msgid "Status at Startup"
@@ -12591,7 +11752,7 @@ msgid "Use status from last _exit at startup"
msgstr "Brug status fra sidste _afslutning ved opstart"
msgid "Status to a_pply at startup:"
-msgstr "Status som skal _anvendes ved opstart:"
+msgstr "Status som skal _bruges ved opstart:"
msgid "Interface"
msgstr "Grænseflade"
@@ -12631,7 +11792,7 @@ msgstr "Sæt privatlivsindstillinger for:"
#. Remove All button
msgid "Remove Al_l"
-msgstr "Slet _alt"
+msgstr "Slet _alle"
msgid "Permit User"
msgstr "Tillad bruger"
@@ -12694,7 +11855,7 @@ msgstr "_Hent liste"
#. add button
msgid "_Add Chat"
-msgstr "_Tilføj chat"
+msgstr "_Tilføj samtale"
msgid "Are you sure you want to delete the selected saved statuses?"
msgstr "Er du sikker på at du vil slette de valgte gemte statusser?"
@@ -12731,23 +11892,19 @@ msgid "Custom Smiley"
msgstr "Tilpasset smiley"
msgid "More Data needed"
-msgstr "Flere data kræves"
+msgstr "Der er behov for flere data"
msgid "Please provide a shortcut to associate with the smiley."
-msgstr "Angiv en genvej der skal associeres med smileyen."
+msgstr "Angiv en genvej der skal tilknyttes smileyen."
msgid "Duplicate Shortcut"
msgstr "Dublet genvej"
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
-msgstr ""
-"En tilpasset smiley for den valgte genvej findes allerede. Angiv en anden "
-"genvej."
+msgid "A custom smiley for the selected shortcut already exists. Please specify a different shortcut."
+msgstr "En tilpasset smiley for den valgte genvej findes allerede. Angiv en anden genvej."
msgid "Please select an image for the smiley."
-msgstr "Vælg et billede til smiley'en."
+msgstr "Vælg et billede til smileyen."
msgid "Edit Smiley"
msgstr "Redigér smiley"
@@ -12766,13 +11923,13 @@ msgid "Smiley"
msgstr "Smiley"
msgid "Custom Smiley Manager"
-msgstr "Brugertilpasset Smiley-håndtering"
+msgstr "Brugertilpasset håndtering af smiley"
msgid "Click to change your buddyicon for this account."
-msgstr "Klik for at ændre dit venneikon for denne konto."
+msgstr "Klik for at ændre dit venneikon til denne konto."
msgid "Click to change your buddyicon for all accounts."
-msgstr "Klik for at ændre dit venneikon for alle konti."
+msgstr "Klik for at ændre dit venneikon til alle konti."
msgid "Waiting for network connection"
msgstr "Venter på netværksforbindelse"
@@ -12781,7 +11938,7 @@ msgid "New status..."
msgstr "Ny status..."
msgid "Saved statuses..."
-msgstr "Gemte statuser..."
+msgstr "Gemte statusser..."
msgid "Status Selector"
msgstr "Statusvælger"
@@ -12801,20 +11958,14 @@ 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 individuelt."
+msgid "%s cannot transfer a folder. You will need to send the files within individually."
+msgstr "%s kan ikke overføre en mappe. Du skal sende filerne i denne individuelt."
msgid "You have dragged an image"
msgstr "Du har trukket et billede"
-msgid ""
-"You can send this image as a file transfer, embed it into this message, or "
-"use it as the buddy icon for this user."
-msgstr ""
-"Du kan sende dette billede som en filoverførsel, vedlægge det til en besked, "
-"eller bruge det som venneikonet for denne bruger."
+msgid "You can send this image as a file transfer, embed it into this message, or use it as the buddy icon for this user."
+msgstr "Du kan sende dette billede som en filoverførsel, vedlægge det til en besked, eller bruge det som venneikonet til denne bruger."
msgid "Set as buddy icon"
msgstr "Sæt som venneikon"
@@ -12828,19 +11979,11 @@ 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
@@ -12850,12 +11993,8 @@ msgstr ""
msgid "Cannot send launcher"
msgstr "Kan ikke sende starter"
-msgid ""
-"You dragged a desktop launcher. Most likely you wanted to send whatever this "
-"launcher points to instead of this launcher itself."
-msgstr ""
-"Du har trukket en skrivebords starter. Højst sandsynligt vil du sende hvad "
-"starteren peger på og ikke starten selv."
+msgid "You dragged a desktop launcher. Most likely you wanted to send whatever this launcher points to instead of this launcher itself."
+msgstr "Du har trukket en skrivebords starter. Højst sandsynligt vil du sende hvad starteren peger på og ikke starten selv."
#, c-format
msgid ""
@@ -12882,11 +12021,8 @@ 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"
msgid "Save File"
msgstr "Gem fil"
@@ -12907,7 +12043,7 @@ msgid "_Invite"
msgstr "_Invitér"
msgid "_Modify..."
-msgstr "_Ændre..."
+msgstr "_Ændr..."
msgid "_Add..."
msgstr "_Tilføj..."
@@ -12922,13 +12058,13 @@ msgid "Pidgin Tooltip"
msgstr "Pidgin værktøjstip"
msgid "Pidgin smileys"
-msgstr "Pidgin smiley'er"
+msgstr "Pidgin smileyer"
msgid "Penguin Pimps"
msgstr "Penguin Pimps"
msgid "Selecting this disables graphical emoticons."
-msgstr "Deaktiverer grafiske humørikoner."
+msgstr "Slår grafiske humørikoner fra."
msgid "none"
msgstr "intet"
@@ -12937,7 +12073,7 @@ msgid "Small"
msgstr "Lille"
msgid "Smaller versions of the default smilies"
-msgstr "Mindre udgaver af standard smiley'erne"
+msgstr "Mindre udgaver af standardsmileyerne"
msgid "Response Probability:"
msgstr "Svar sandsynlighed:"
@@ -12992,17 +12128,13 @@ msgid "Buddy is mobile"
msgstr "Ven er mobil"
msgid "Buddy is offline"
-msgstr "Ven er offline"
+msgstr "Ven er afkoblet"
msgid "Point values to use when..."
msgstr "Værdier der skal bruges når..."
-msgid ""
-"The buddy with the <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"
@@ -13022,19 +12154,12 @@ msgstr "Kontaktsprioritet"
#. *< name
#. *< version
#. *< summary
-msgid ""
-"Allows for controlling the values associated with different buddy states."
-msgstr ""
-"Giver mulighed for at kontrollere værdierne associeret med venners "
-"forskellige status."
+msgid "Allows for controlling the values associated with different buddy states."
+msgstr "Giver mulighed for at kontrollere værdierne tilknyttet venners forskellige status."
#. *< description
-msgid ""
-"Allows for changing the point values of idle/away/offline states for buddies "
-"in contact priority computations."
-msgstr ""
-"Giver mulighed for at ændre værdierne af inaktiv/fraværende/offline status "
-"for venner i kontaktprioritets beregninger."
+msgid "Allows for changing the point values of idle/away/offline states for buddies in contact priority computations."
+msgstr "Giver mulighed for at ændre værdierne af inaktiv/fraværende/afkoblet status for venner i kontaktprioritets beregninger."
msgid "Conversation Colors"
msgstr "Samtalefarver"
@@ -13065,10 +12190,10 @@ msgid "Ignore incoming format"
msgstr "Ignorér indkomne format"
msgid "Apply in Chats"
-msgstr "Anvend i chat"
+msgstr "Anvend i samtaler"
msgid "Apply in IMs"
-msgstr "Tilføj i kvik-beskeder"
+msgstr "Tilføj i beskeder"
msgid "By conversation count"
msgstr "Efter antallet af samtaler"
@@ -13077,18 +12202,14 @@ 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"
msgid "Separate IM and Chat windows when placing by number"
-msgstr "Seperate besked- og chatvinduer når der placeres med tal"
+msgstr "Seperate besked- og samtalevinduer når der placeres efter tal"
#. *< type
#. *< ui_requirement
@@ -13102,16 +12223,12 @@ msgstr "EkstraPlacering"
#. *< name
#. *< version
msgid "Extra conversation placement options."
-msgstr "Ekstra placeringsmuligheder for samtaler."
+msgstr "Ekstra placeringsindstillinger for samtaler."
#. *< summary
#. * description
-msgid ""
-"Restrict the number of conversations per windows, optionally separating IMs "
-"and Chats"
-msgstr ""
-"Begræns antallet af samtaler pr. vindue, med mulighed for seperate samtale- "
-"og chatvinduer"
+msgid "Restrict the number of conversations per windows, optionally separating IMs and Chats"
+msgstr "Begræns antallet af samtaler pr. vindue, med mulighed for seperate samtale- og samtalevinduer"
#. Configuration frame
msgid "Mouse Gestures Configuration"
@@ -13144,15 +12261,13 @@ 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"
-" • Træk ned og derefter til højre, for at lukke en samtale.\n"
+"Giver understøttelse for musebevægelser i samtalevinduer. Træk i den midterste knap for at udføre forskellige handlinger:\n"
+" • Træk ned og derefter til højre, for at afslutte en samtale.\n"
" • Træk op og derefter til venstre, for at skifte til den forrige samtale.\n"
" • Træk op og derefter til højre, for at skifte til den næste samtale."
@@ -13175,12 +12290,8 @@ 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"
@@ -13188,7 +12299,7 @@ msgstr "Bruger_detaljer"
#. "Associate Buddy" button
msgid "_Associate Buddy"
-msgstr "_Associér ven"
+msgstr "_Tilknyt ven"
msgid "Unable to send email"
msgstr "Kunne ikke sende e-post"
@@ -13197,13 +12308,13 @@ msgid "The evolution executable was not found in the PATH."
msgstr "Den ekskvebar Evolution fil blev ikke fundet i PATH."
msgid "An email address was not found for this buddy."
-msgstr "En e-post-adresse blev ikke fundet for denne ven."
+msgstr "En e-postadresse blev ikke fundet for denne ven."
msgid "Add to Address Book"
msgstr "Tilføj til adressebog"
msgid "Send Email"
-msgstr "Send email"
+msgstr "Send e-post"
#. Configuration frame
msgid "Evolution Integration Configuration"
@@ -13249,7 +12360,7 @@ msgid "Last name:"
msgstr "Efternavn:"
msgid "Email:"
-msgstr "Email:"
+msgstr "E-post:"
#. *< type
#. *< ui_requirement
@@ -13298,7 +12409,7 @@ msgid "Mail Checker"
msgstr "Post-overvåger"
msgid "Checks for new local mail."
-msgstr "Tjekker for lokal post."
+msgstr "Kontrollerer for lokal post."
msgid "Adds a small box to the buddy list that shows if you have new mail."
msgstr "Tilføjer en lille boks til vennelisten der viser om du har ny post."
@@ -13321,12 +12432,8 @@ 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."
@@ -13362,15 +12469,11 @@ msgstr "_Anvend"
#. *< name
#. *< version
msgid "Music Messaging Plugin for collaborative composition."
-msgstr "Musik besked modul for samarbejdskomposition."
+msgstr "Musik besked udvidelsesmodul for samarbejdskomposition."
#. * summary
-msgid ""
-"The Music Messaging Plugin allows a number of users to simultaneously work "
-"on a piece of music by editting a common score in real-time."
-msgstr ""
-"Musik beskeds modulet tillader flere bruger af gangen, til samtidig at "
-"arbejde på et stykke musik ved at redigere en fælles score i real-time."
+msgid "The Music Messaging Plugin allows a number of users to simultaneously work on a piece of music by editting a common score in real-time."
+msgstr "Musik beskeds udvidelsesmodulet tillader flere bruger af gangen, til samtidig at arbejde på et stykke musik ved at redigere en fælles score i real-time."
#. ---------- "Notify For" ----------
msgid "Notify For"
@@ -13450,8 +12553,7 @@ 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
@@ -13460,13 +12562,13 @@ msgstr ""
#. *< priority
#. *< id
msgid "Pidgin Demonstration Plugin"
-msgstr "Pidgin demonstrations-modul"
+msgstr "Pidgin demonstrationsudvidelsesmodul"
#. *< name
#. *< version
#. * summary
msgid "An example plugin that does stuff - see the description."
-msgstr "Et eksempels-modul der gør forskellige ting - se beskrivelsen."
+msgstr "Et eksempel-udvidelsesmodul der gør forskellige ting - se beskrivelsen."
#. * description
msgid ""
@@ -13487,13 +12589,13 @@ msgid "Secondary Cursor Color"
msgstr "Sekundær markør farve"
msgid "Hyperlink Color"
-msgstr "Link farve"
+msgstr "Farve på henvisning"
msgid "Visited Hyperlink Color"
-msgstr "Farve for besøgt hyperlink"
+msgstr "Farve på besøgt henvisning"
msgid "Highlighted Message Name Color"
-msgstr "Farvenavn for fremhævede beskeder"
+msgstr "Farve som bruges til fremhævede beskednavne"
msgid "GtkTreeView Horizontal Separation"
msgstr "GtkTreeView horisontal separering"
@@ -13564,25 +12666,19 @@ msgid "Re-read gtkrc files"
msgstr "Genindlæs gtkrc filer"
msgid "Pidgin GTK+ Theme Control"
-msgstr "Pidgin GTK+ tema kontrol"
+msgstr "Temakontrol til Pidgin GTK+"
msgid "Provides access to commonly used gtkrc settings."
-msgstr "Giver adgang til fælles brugte gtkrc-indstillinger."
+msgstr "Giver adgang til normalt brugte gtkrc-indstillinger."
msgid "Raw"
msgstr "Rå"
msgid "Lets you send raw input to text-based protocols."
-msgstr ""
-"Giver dig mulighed for at sende rå inddata til text-baserede protokoller."
+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."
@@ -13613,12 +12709,8 @@ 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
@@ -13629,23 +12721,19 @@ msgstr ""
#. *< priority
#. *< id
msgid "Send Button"
-msgstr "Send knap"
+msgstr "Sendknap"
#. *< name
#. *< version
msgid "Conversation Window Send Button."
-msgstr "Samtalevindue send knap."
+msgstr "Samtalevindue sendknap."
#. *< summary
-msgid ""
-"Adds a Send button to the entry area of the conversation window. Intended "
-"for when no physical keyboard is present."
-msgstr ""
-"Tilføjer en send-knappe til indtastningsområdet i samtalevinduet. Beregnet "
-"til når der ikke er noget fysisk tastatur tilstede."
+msgid "Adds a Send button to the entry area of the conversation window. Intended for when no physical keyboard is present."
+msgstr "Tilføjer en sendknap til indtastningsområdet i samtalevinduet. Beregnet til når der ikke er noget fysisk tastatur tilstede."
msgid "Duplicate Correction"
-msgstr "Dublet rettelse"
+msgstr "Duplikér rettelse"
msgid "The specified word already exists in the correction list."
msgstr "Det angivne ord findes allerede i rettelseslisten."
@@ -13682,7 +12770,7 @@ msgid "Only replace _whole words"
msgstr "Erstat kun _hele ord"
msgid "General Text Replacement Options"
-msgstr "Generelle indstillinger for teksterstatning"
+msgstr "Generelle indstillinger til teksterstatning"
msgid "Enable replacement of last word on send"
msgstr "Slå erstatning af sidste ord ved send på"
@@ -13748,7 +12836,7 @@ msgid "For delayed messages"
msgstr "For forsinkede beskeder"
msgid "For delayed messages and in chats"
-msgstr "For forsinkede beskeder og i chats"
+msgstr "For forsinkede beskeder og i samtaler"
msgid "_Message Logs:"
msgstr "_Besked logs:"
@@ -13766,15 +12854,11 @@ msgstr "Tidsstempel format for beskeder"
#. *< version
#. * summary
msgid "Customizes the message timestamp formats."
-msgstr "Definerer formatet på tidsstempler i beskeder."
+msgstr "Tilpasser formatet på tidsstempler i beskeder."
#. * description
-msgid ""
-"This plugin allows the user to customize conversation and logging message "
-"timestamp formats."
-msgstr ""
-"Dette modul tillader brugeren selv at definere formatet på tidsstempler i "
-"samtaler og logs."
+msgid "This plugin allows the user to customize conversation and logging message timestamp formats."
+msgstr "Dette modul tillader brugeren selv at tilpasse formatet på tidsstempler i samtaler og logs."
msgid "Opacity:"
msgstr "Ugennemsigtighed:"
@@ -13784,7 +12868,7 @@ msgid "IM Conversation Windows"
msgstr "Beskedsamtalevinduer"
msgid "_IM window transparency"
-msgstr "_Beskedvinduer gennemsigtighed"
+msgstr "_Gennemsigtighed af beskedvindue"
msgid "_Show slider bar in IM window"
msgstr "_Vis rullebjælke i beskedvindue"
@@ -13800,7 +12884,7 @@ msgid "Buddy List Window"
msgstr "Venneliste vindue"
msgid "_Buddy List window transparency"
-msgstr "Venne_liste vindue gennemsigtighed"
+msgstr "Gennemsigtighed af venne_liste vindue"
msgid "Remove Buddy List window transparency on focus"
msgstr "Fjern venneliste vindue gennemsigtighed ved fokus"
@@ -13822,13 +12906,11 @@ 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."
@@ -13855,15 +12937,13 @@ msgid "Only when docked"
msgstr "Kun når docked"
msgid "Windows Pidgin Options"
-msgstr "Indstillinger for Windows Pidgin"
+msgstr "Indstillinger for Pidgin til Windows"
msgid "Options specific to Pidgin for Windows."
-msgstr "Specifikke indstillinger for Windows Pidgin."
+msgstr "Specifikke indstillinger for Pidgin til Windows."
-msgid ""
-"Provides options specific to Pidgin for Windows , such as buddy list docking."
-msgstr ""
-"Giver muligheder specifikt til Windows Pidgin, 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>"
@@ -13900,13 +12980,10 @@ 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 "Unable to retrieve MSN Address Book"
#~ msgstr "Ikke i stand til at hente MSN-adressebog"
-
#~ msgid ""
#~ "You may be disconnected shortly. You may want to use TOC until this is "
#~ "fixed. Check %s for updates."
@@ -13941,19 +13018,14 @@ msgstr ""
#, fuzzy
#~ msgid "Failed to send IM."
#~ msgstr "Kunne ikke hente navn: %s"
-
#~ msgid "User information for %s unavailable"
#~ msgstr "Bruger oplysninger for %s er ikke tilgængelige"
-
#~ msgid "_Flash window when chat messages are received"
-#~ msgstr "_Blink vindue når chat-beskeder modtages"
-
+#~ msgstr "_Blink vindue når samtalebeskeder modtages"
#~ msgid "A group with the name already exists."
#~ msgstr "En mappe med det navn eksisterer allerede."
-
#~ msgid "Primary Information"
#~ msgstr "Primær-information"
-
#~ msgid "Blood Type"
#~ msgstr "Blodtype"
@@ -13972,13 +13044,10 @@ msgstr ""
#~ msgstr ""
#~ "Du prøver at opsætte et ansigt. Pidgin tillader, på nuværende tidspunkt, "
#~ "kun standard ansigterne. Vælg venligst et billede fra "
-
#~ msgid "Invalid QQ Face"
#~ msgstr "Ugyldigt QQ-ansigt"
-
#~ msgid "You rejected %d's request"
#~ msgstr "Du afviste %d's anmodning"
-
#~ msgid "Reject request"
#~ msgstr "Afvis anmodning"
@@ -13993,20 +13062,17 @@ msgstr ""
#, fuzzy
#~ msgid "QQ Number Error"
#~ msgstr "QQ-nummer"
-
#~ msgid "Group Description"
#~ msgstr "Gruppebeskrivelse"
-
#~ msgid "Auth"
#~ msgstr "Godkend"
-
#~ msgid "Approve"
#~ msgstr "Godkend"
#, fuzzy
#~ msgid "Successed to join Qun %d, operated by admin %d"
#~ msgstr ""
-#~ "Din forspørgelse om at blive medlem af gruppen %d er blevet afslået af "
+#~ "Din forspørgelse om at tilslutte gruppen %d er blevet afslået af "
#~ "administrator %d"
#, fuzzy
@@ -14016,17 +13082,14 @@ msgstr ""
#, fuzzy
#~ msgid "[%d] added to Qun \"%d\""
#~ msgstr "Du [%d] er blevet tilføjet af gruppe \"%d\""
-
#~ msgid "I am a member"
#~ msgstr "Jeg er medlem"
#, fuzzy
#~ msgid "I am requesting"
#~ msgstr "Ugyldig anmodning"
-
#~ msgid "I am the admin"
#~ msgstr "Jeg er administratoren"
-
#~ msgid "Unknown status"
#~ msgstr "Ukendt status"
@@ -14044,7 +13107,7 @@ msgstr ""
#, fuzzy
#~ msgid "Do you want to approve the request?"
-#~ msgstr "Vil du godkende denne forespørgelse?"
+#~ msgstr "Vil du godkende denne forespørgsel?"
#, fuzzy
#~ msgid "Change Qun member"
@@ -14053,13 +13116,10 @@ msgstr ""
#, 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"
@@ -14091,7 +13151,7 @@ msgstr ""
#, fuzzy
#~ msgid "Do you approve the requestion?"
-#~ msgstr "Vil du godkende denne forespørgelse?"
+#~ msgstr "Vil du godkende denne forespørgsel?"
#, fuzzy
#~ msgid "Do you add the buddy?"
@@ -14124,13 +13184,12 @@ msgstr ""
#, fuzzy
#~ msgid "Network disconnected"
#~ msgstr "%s afbrudt"
-
#~ msgid "developer"
#~ msgstr "udvikler"
#, fuzzy
#~ msgid "XMPP developer"
-#~ msgstr "udvikler"
+#~ msgstr "XMPP-udvikler"
#, fuzzy
#~ msgid "Artists"
@@ -14147,105 +13206,78 @@ msgstr ""
#~ 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 chat"
-
+#~ msgstr "Nogle siger dit brugernavn i samtale"
#~ msgid "EOF while reading from resolver process"
#~ msgstr "EOF ved læsning fra resolver-proces"
#, fuzzy
#~ msgid "There were errors unloading the plugin."
#~ msgstr "Pidgin kunne ikke udlæse modulet."
-
#~ msgid "Error setting socket options"
#~ msgstr "Fejl ved opsætning af socket indstillinger"
-
#~ msgid "Couldn't open file"
#~ msgstr "Kan ikke åbne fil"
-
#~ msgid ""
#~ "This server requires plaintext authentication over an unencrypted "
#~ "connection. Allow this and continue authentication?"
#~ msgstr ""
-#~ "Denne server kræver at godkendelse sker ved ren tekst (uden kryptering). "
+#~ "Denne server kræver at godkendelse sker i klartekst (uden kryptering). "
#~ "Tillad dette og fortsæt godkendelse?"
-
#~ msgid "Error initializing session"
#~ msgstr "Fejl ved initialisering af session"
-
#~ msgid "Invalid screen name"
#~ msgstr "Ugyldigt skærmnavn"
-
#~ msgid "Unable to make SSL connection to server."
#~ msgstr "Kunne ikke skabe SSL-forbindelse til server."
-
#~ msgid "Too evil (sender)"
#~ msgstr "For ond (afsender)"
-
#~ msgid "Too evil (receiver)"
#~ msgstr "For ond (modtager)"
-
#~ msgid "Screen name sent"
#~ msgstr "Brugernavn sendt"
-
#~ msgid "Invalid screen name."
#~ msgstr "Ugyldigt skærmnavn."
-
#~ msgid "Available Message"
#~ msgstr "Tilgængelig besked"
-
#~ msgid "Screen name"
#~ msgstr "Skærmnavn"
-
#~ msgid "Invalid chat name specified."
-#~ msgstr "Ugyldigt chatnavn angivet."
-
+#~ msgstr "Ugyldigt samtalenavn angivet."
#~ msgid "Away Message"
#~ msgstr "Fraværs-besked"
-
#~ msgid "<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."
@@ -14256,43 +13288,36 @@ msgstr ""
#, fuzzy
#~ msgid "You have added %d to buddy list"
#~ msgstr "Du har tilføjet %d i vennelisten"
-
#~ msgid "Invalid QQid"
#~ msgstr "Ugyldigt QQid"
#, fuzzy
#~ msgid "Please enter external group ID"
#~ msgstr "Venligt indtast en ekstern gruppe-ID"
-
#~ msgid "Reason: %s"
#~ msgstr "Grund: %s"
#, fuzzy
#~ msgid "Your request to join group %d has been approved by admin %d"
#~ msgstr ""
-#~ "Din forespørgelse om at blive medlem af gruppen %d er blevet godkendt af "
+#~ "Din forespørgsel om at tilslutte gruppen %d er blevet godkendt af "
#~ "administrator %d"
-
#~ msgid "This group has been added to your buddy list"
#~ msgstr "Denne gruppe er blevet tilføjet til din venneliste"
-
#~ msgid "I am applying to join"
-#~ msgstr "Jeg prøver at blive medlem"
+#~ msgstr "Jeg prøver at tilslutte"
#, fuzzy
#~ msgid "You have successfully left the group"
#~ msgstr "Du har forladt gruppen"
-
#~ msgid "QQ Group Auth"
#~ msgstr "QQ gruppe autorisation"
#, fuzzy
#~ msgid "Your authorization request has been accepted by the QQ server"
#~ msgstr "Din autorisations-operation er blevet accepteret af QQ-serveren"
-
#~ msgid "Code [0x%02X]: %s"
#~ msgstr "Kode [0x%02X]: %s"
-
#~ msgid "Group Operation Error"
#~ msgstr "Gruppe-operationsfejl"
@@ -14303,7 +13328,6 @@ msgstr ""
#, fuzzy
#~ msgid "Error requesting login token"
#~ msgstr "Fejl ved oprettelse af forbindelse"
-
#~ msgid "Unable to login, check debug log"
#~ msgstr "Kunne ikke logge ind, kontrollér fejlsøgningslog"
@@ -14314,29 +13338,22 @@ msgstr ""
#, fuzzy
#~ msgid "UDP Address"
#~ msgstr "IP-adresse"
-
#~ msgid "Show Login Information"
#~ msgstr "Vis logind information"
-
#~ msgid "Login failed, no reply"
#~ msgstr "Logind slog fejl, intet svar"
-
#~ msgid "User %s rejected your request"
-#~ msgstr "Bruger %s afslog din forespørgelse"
+#~ msgstr "Bruger %s afslog din forespørgsel"
#, fuzzy
#~ msgid "User %s approved your request"
-#~ msgstr "Bruger %s har godkendt din forespørgelse"
-
+#~ msgstr "Bruger %s har godkendt din forespørgsel"
#~ msgid "Cannot find/access ~/.silc directory"
#~ msgstr "Kan ikke finde eller tilgå ~/.silc mappe"
-
#~ msgid "%s changed status from %s to %s"
#~ msgstr "%s ændrede status fra %s til %s"
-
#~ msgid "%s is now %s"
#~ msgstr "%s er nu %s"
-
#~ msgid "%s is no longer %s"
#~ msgstr "%s er ikke længere %s"
@@ -14351,16 +13368,12 @@ msgstr ""
#, fuzzy
#~ msgid "Add Buddy _Pounce"
#~ msgstr "Tilføj overvågning"
-
#~ msgid "Add a C_hat"
-#~ msgstr "Tilføj en _chat"
-
+#~ msgstr "Tilføj en _samtale"
#~ msgid "/Accounts/Add\\/Edit"
#~ msgstr "/Konti/Tilføj\\/Redigér"
-
#~ msgid "<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 "
@@ -14386,36 +13399,30 @@ msgstr ""
#~ " \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"
#~ "<span weight=\"bold\">Filename:</span>\t\t%s"
#~ msgstr ""
#~ "%s%s<span weight=\"bold\">Skrevet af:</span>\t%s\n"
-#~ "<span weight=\"bold\">Web site:</span>\t\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"
@@ -14425,7 +13432,7 @@ msgstr ""
#, fuzzy
#~ msgid "Current media"
-#~ msgstr "Nuværende symbol"
+#~ msgstr "Nuværende medie"
#, fuzzy
#~ msgid "Unable to connect to OIM server"
@@ -14438,88 +13445,64 @@ msgstr ""
#, fuzzy
#~ msgid "A_ccount:"
#~ msgstr "Konto:"
-
#~ msgid "Toggle offline buddies"
#~ msgstr "Afkoblet venner til/fra"
-
#~ msgid ""
#~ "%s was disconnected due to the following error:\n"
#~ "%s"
#~ msgstr ""
#~ "%s blev afbrudt grundet følgende fejl:\n"
#~ "%s"
-
#~ msgid "Commands are not supported yet. Message was NOT sent."
#~ msgstr "Kommandoer er ikke understøttet endnu. Besked blev IKKE sendt."
-
#~ msgid "Timestamps"
#~ msgstr "Tidsstempler"
-
#~ msgid "..."
#~ msgstr "..."
-
#~ msgid "Still need to do something about this."
#~ msgstr "Mangler stadig at gøre noget ved dette."
-
#~ msgid "Alias..."
#~ msgstr "Alias..."
-
#~ msgid "/Tools/Buddy Pounces"
#~ msgstr "/Værktøjer/Venneovervågning"
-
#~ msgid "/Options/Show Buddy _Icon"
-#~ msgstr "/Valgmuligheder/Vis venne_ikoner"
-
+#~ msgstr "/Indstillinger/Vis venne_ikoner"
#~ msgid "/Options/Show Buddy Icon"
-#~ msgstr "/Valgmuligheder/Vis venne_ikoner"
-
+#~ msgstr "/Indstillinger/Vis venne_ikoner"
#~ msgid "Jabber developer"
#~ msgstr "Jabber udvikler"
-
#~ msgid "<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 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 "
@@ -14530,23 +13513,18 @@ msgstr ""
#~ "were not removed.\n"
#~ msgstr[0] ""
#~ "%d ven fra gruppe %s blev ikke fjernet fordi den tilhører en konto som er "
-#~ "slået fra eller offline. Denne ven og gruppen blev ikke flyttet.\n"
+#~ "slået fra eller afkoblet. Denne ven og gruppen blev ikke flyttet.\n"
#~ msgstr[1] ""
#~ "%d venner fra gruppe %s blev ikke fjernet fordi de tilhører en konto som "
-#~ "er slået fra eller offline. Disse venner og gruppen blev ikke flyttet.\n"
-
+#~ "er slået fra eller afkoblet. Disse venner og gruppen blev ikke flyttet.\n"
#~ msgid "Group not removed"
#~ msgstr "Gruppe ikke fjernet"
-
#~ msgid "Old Pidgin"
#~ msgstr "Gammel Pidgin"
-
#~ msgid "Autoreply"
#~ msgstr "Automatisk svar"
-
#~ msgid "Autoreply for all the protocols"
#~ msgstr "Automatisk svar for alle protokollerne"
-
#~ msgid ""
#~ "This plugin lets you set autoreply message for any protocol. You can set "
#~ "the global autoreply message from the Plugin-options dialog. To set some "
@@ -14560,112 +13538,80 @@ msgstr ""
#~ "automatisk svarbesked for en bestemt ven, højreklik på vennen i "
#~ "venneliste-vinduet. For at sætte en automatisk svarbesked for bestemte "
#~ "konti, gå til \"Avanceret\"-fanen i Konto-redigér-vinduet."
-
#~ msgid "Set autoreply message for %s"
#~ msgstr "Sæt automatisk svarbesked for %s"
-
#~ msgid "Set Autoreply Message"
#~ msgstr "Sæt automatisk svarbesked"
-
#~ msgid ""
#~ "The following message will be sent to the buddy when the buddy sends you "
#~ "a message and autoreply is enabled."
#~ msgstr ""
#~ "Følgende besked vil blive sendt til vennen når vennen sender dig en "
#~ "besked og automatisk svarbesked er aktiveret."
-
#~ msgid "Set _Autoreply Message"
#~ msgstr "Sæt _automatisk svarbesked"
-
#~ msgid "Autoreply message"
#~ msgstr "Automatisk svarbesked"
-
#~ msgid "Send autoreply messages when"
#~ msgstr "Send automatisk svarbesked når"
-
#~ msgid "When my account is _away"
#~ msgstr "Når min konto er _væk"
-
#~ msgid "When my account is _idle"
#~ msgstr "Når min konto er _fraværende"
-
#~ msgid "_Default reply"
#~ msgstr "_Standard-svar"
-
#~ msgid "Status message"
#~ msgstr "Status-besked"
-
#~ msgid "Autoreply with status message"
#~ msgstr "Automatisk svar med statusbesked"
-
#~ msgid "Always when there is a status message"
#~ msgstr "Altid når der er en statusbesked"
-
#~ msgid "Only when there's no autoreply message"
#~ msgstr "Kun når der ikke er nogen automatisk svarbesked"
-
#~ msgid "Delay between autoreplies"
#~ msgstr "Forsinkelse mellem automatisk svar"
-
#~ msgid "_Minimum delay (mins)"
#~ msgstr "_Mindste forsinkelse (mins)"
-
#~ msgid "Times to send autoreplies"
#~ msgstr "Antal gange der sendes automatisk svar"
-
#~ msgid "Ma_ximum count"
#~ msgstr "Maksimum tæller"
-
#~ msgid ""
#~ "I am currently not available. Please leave your message, and I will get "
#~ "back to you as soon as possible."
#~ msgstr ""
#~ "Jeg er ikke til stede. Vær venlig at efterlade en besked, og jeg vil "
#~ "vende tilbage til dig hurtigst muligt."
-
#~ msgid "Pidgin User"
#~ msgstr "Pidgin bruger"
-
#~ msgid "Jabber Account"
#~ msgstr "Jabber-konto"
-
#~ msgid "Server couldn't authenticate you without a password"
#~ msgstr "Server kunne ikke godkende dig uden en adgangskode"
-
#~ msgid "Search for Jabber users"
#~ msgstr "Søg efter Jabber brugere"
-
#~ msgid "Invalid Jabber ID"
#~ msgstr "Ugyldigt Jabber ID"
-
#~ msgid "Change Jabber Password"
-#~ msgstr "Skift Jabber adgangskode"
-
+#~ msgstr "Ændr Jabber adgangskode"
#~ msgid "Jabber Protocol Plugin"
#~ msgstr "Jabber protokolmodul"
-
#~ msgid "You have just sent a Nudge!"
#~ msgstr "Du har sendt et vink!"
-
#~ msgid "SNAC threw error: %s\n"
#~ msgstr "SNAC gav fejlen: %s\n"
-
#~ msgid "User information for %s unavailable:"
#~ msgstr "Bruger oplysninger for %s er ikke tilgængelige:"
-
#~ msgid "Rate limiting error."
#~ msgstr "Grænsefejl."
-
#~ msgid "You have been signed off for an unknown reason."
#~ msgstr "Du er blevet logget af pga. en ukendt årsag."
-
#~ msgid ""
#~ "Your screen name is currently formatted as follows:\n"
#~ "%s"
#~ msgstr ""
#~ "Dit brugernavn er formatter således på nuværende tidspunkt:\n"
#~ "%s"
-
#~ msgid ""
#~ "Could not add the buddy %s for an unknown reason. The most common reason "
#~ "for this is that you have the maximum number of allowed buddies in your "
@@ -14673,73 +13619,50 @@ msgstr ""
#~ msgstr ""
#~ "Kunne ikke tilføje vennen %s pga. en ukendt årsag. Den normale grund for "
#~ "dette er at du har det maskimale antal tilladte venner i din venneliste."
-
#~ msgid "New screen name formatting:"
#~ msgstr "Ny brugernavn formatering:"
-
#~ msgid "Format Screen Name..."
#~ msgstr "Formatér brugernavn..."
-
#~ msgid "_Connect"
#~ msgstr "_Tilslut"
-
#~ msgid "Are you sure to exit this Qun?"
#~ msgstr "Er du sikker på at du vil forlade denne Qun?"
-
#~ msgid "Go ahead"
#~ msgstr "Fortsæt"
-
#~ msgid "Server ACK"
#~ msgstr "Server-ACK"
-
#~ msgid "Send IM fail\n"
-#~ msgstr "Send kvik-besked fejlede\n"
-
+#~ msgstr "Send besked fejlede\n"
#~ msgid "Keep alive error, seems connection lost!"
#~ msgstr "Hold i live fejl, lader til at forbindelsen er tabt!"
-
#~ msgid "Request login token error!"
#~ msgstr "Login forespørgelesmærke-fejl!"
-
#~ msgid "%s Address"
#~ msgstr "%s-adresse"
-
#~ msgid "QQ: Available"
#~ msgstr "QQ: Tilgængelig"
-
#~ msgid "QQ: Away"
#~ msgstr "QQ: Fraværende"
-
#~ msgid "QQ: Invisible"
#~ msgstr "QQ: Usynlig"
-
#~ msgid "QQ: Offline"
-#~ msgstr "QQ: Offline"
-
+#~ msgstr "QQ: Afkoblet"
#~ msgid "Login in TCP"
#~ msgstr "Logind i TCP"
-
#~ msgid "Login Hidden"
#~ msgstr "Skjult logind"
-
#~ msgid "Socket send error"
#~ msgstr "Sokkel sendefejl"
-
#~ msgid "Would like to add him?"
#~ msgstr "Vil du tilføje ham?"
-
#~ msgid "Reject watching by other users"
#~ msgstr "Nægt andre brugere at kigge på"
-
#~ msgid "Block invites"
#~ msgstr "Blokér invitationer"
-
#~ msgid "Reject online status attribute requests"
#~ msgstr "Nægt anmodning om online status-attributter"
-
#~ msgid "TOC has sent a PAUSE command."
#~ msgstr "TOC har sendt en PAUSE kommando."
-
#~ msgid ""
#~ "When this happens, TOC ignores any messages sent to it, and may kick you "
#~ "off if you send a message. Pidgin will prevent anything from going "
@@ -14749,10 +13672,8 @@ msgstr ""
#~ "risikere at blive logget af, hvis du forsøger at sende en besked. Pidgin "
#~ "vil derfor tilbageholde alle beskeder. Dette er kun midlertidigt, så hav "
#~ "tålmodighed."
-
#~ msgid "Pidgin - Save As..."
#~ msgstr "Pidgin - Gem som..."
-
#~ msgid ""
#~ "The normal authentication method has failed. This means either your "
#~ "password is incorrect, or Yahoo!'s authentication scheme has changed. "
@@ -14763,48 +13684,34 @@ msgstr ""
#~ "adgangskode er forkert, eller at Yahoo!'s godkendelsesmetode er blevet "
#~ "ændret. Pidgin vil nu forsøge at logge ind via Web Messenger-"
#~ "godkendelsesmetoden, som vil resultere i begrænset funktionalitet."
-
#~ msgid "Unavailable"
#~ msgstr "Ikke tilgængelig"
-
#~ msgid "Crazychat"
#~ msgstr "Skørchat"
-
#~ msgid "Plugin to establish a Crazychat session."
#~ msgstr "Plugin til at etablere en skørchat session."
-
#~ msgid "Uses Pidgin to obtain buddy ips to connect for a Crazychat session"
#~ msgstr ""
#~ "Bruger Pidgin til at finde venners ip-adresser til at forbinde til en "
#~ "skørchat session"
-
#~ msgid "Network Configuration"
#~ msgstr "Netværksopsætning"
-
#~ msgid "TCP port"
#~ msgstr "TCP port"
-
#~ msgid "UDP port"
#~ msgstr "UDP port"
-
#~ msgid "Feature Calibration"
#~ msgstr "Funktionalitets justering"
-
#~ msgid "DBus"
#~ msgstr "DBus"
-
#~ msgid "Blink tray icon for unread..."
#~ msgstr "Blink statusikon for ulæste..."
-
#~ msgid "_Instant Messages:"
#~ msgstr "_Kvikbeskeder:"
-
#~ msgid "C_hat Messages:"
#~ msgstr "C_hat beskeder:"
-
#~ msgid "Displays an icon for Pidgin in the system tray."
#~ msgstr "Viser et Pidgin-ikon i statusområdet."
-
#~ msgid ""
#~ "Displays a system tray icon (in GNOME, KDE, or Windows for example) to "
#~ "show the current status of Pidgin, allow fast access to commonly used "
@@ -14815,74 +13722,60 @@ msgstr ""
#~ "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> Offline"
-
+#~ "<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"
@@ -14891,161 +13784,120 @@ msgstr ""
#~ "<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 chatrummet %s."
-
+#~ msgstr "Du har tabt forbindelsen til samtalerummet %s."
#~ msgid "Chat is currently unavailable"
-#~ msgstr "Chat er ikke tilgængelig nu"
-
+#~ msgstr "Samtale er ikke tilgængelig nu"
#~ msgid ""
#~ "Transfer of file %s timed out.\n"
#~ " Try enabling proxy servers for file transfers in Accounts -> %s -> Edit "
#~ "Account -> Advanced."
#~ msgstr ""
#~ "Overførsel af fil %s overløb tidsgrænsen.\n"
-#~ " Prøv at aktivere proxy servere for filoverførsler i Konti -> %s -> "
+#~ " Prøv at aktivere proxyservere for filoverførsler i Konti -> %s -> "
#~ "Redigér konto -> Avanceret."
-
#~ msgid "Unable to log into file transfer proxy."
#~ msgstr "Kunne ikke logge ind til filoverførselsproxy."
-
#~ msgid ""
#~ "Unable to establish listener socket or no AOL proxy connection present."
#~ msgstr ""
#~ "Kan ikke etablere lytte sokkel eller ingen AOL proxy forbindelse tilstede."
-
#~ msgid ""
#~ "The user %s requires authorization before being added to a buddy list. "
#~ "Do you want to send an authorization request?"
#~ msgstr ""
#~ "Brugeren %s kræver godkendelse for at blive tilføjet til en venneliste."
#~ "Vil du sende en anmodning om godkendelse?"
-
#~ msgid "Request Authorization"
#~ msgstr "Anmod om godkendelse"
-
#~ msgid "_Request Authorization"
#~ msgstr "_Anmod om godkendelse"
-
#~ msgid ""
#~ "The user %u wants to add %s to their buddy list for the following "
#~ "reason:\n"
@@ -15053,55 +13905,40 @@ msgstr ""
#~ 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 59b038b353..993315bf86 100644
--- a/po/de.po
+++ b/po/de.po
@@ -11,9 +11,9 @@ msgid ""
msgstr ""
"Project-Id-Version: de\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-23 20:26+0100\n"
-"PO-Revision-Date: 2009-02-23 19:55+0100\n"
-"Last-Translator: Bjoern Voigt <bjoern@cs.tu-berlin.de>\n"
+"POT-Creation-Date: 2009-02-25 17:28+0100\n"
+"PO-Revision-Date: 2009-02-25 17:28+0100\n"
+"Last-Translator: Jochen Kemnade <jochenkemnade@web.de>\n"
"Language-Team: German <de@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -7563,6 +7563,9 @@ msgstr "<p><b>Wunderbare Patch-Schreiber</b>:<br>\n"
msgid "<p><b>Acknowledgement</b>:<br>\n"
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 "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr "<p><i>Und all die Jungs im Hinterzimmer...</i><br>\n"
@@ -7588,6 +7591,9 @@ msgstr "Alle QQ-Quns aktualisieren"
msgid "About OpenQ"
msgstr "Über OpenQ"
+msgid "Modify Buddy Memo"
+msgstr "Buddy-Notiz bearbeiten"
+
#. *< type
#. *< ui_requirement
#. *< flags
diff --git a/po/et.po b/po/et.po
index addb9a11ad..0f26d416f3 100644
--- a/po/et.po
+++ b/po/et.po
@@ -2258,7 +2258,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
diff --git a/po/hu.po b/po/hu.po
index dc6cc02322..63d3ba51ce 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -9,8 +9,8 @@ msgid ""
msgstr ""
"Project-Id-Version: pidgin 2.5\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-01-04 22:44+0100\n"
-"PO-Revision-Date: 2009-01-04 22:42+0100\n"
+"POT-Creation-Date: 2009-02-25 03:23+0100\n"
+"PO-Revision-Date: 2009-02-25 03:21+0100\n"
"Last-Translator: Gabor Kelemen <kelemeng@gnome.hu>\n"
"Language-Team: Hungarian <gnome@fsf.hu>\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"
@@ -42,8 +42,8 @@ msgstr ""
"%s\n"
"Használat: %s [KAPCSOLÓ]…\n"
"\n"
-" -c, --config=KÖNYVTÁR A KÖNYVTÁR használata a beállítófájlokhoz\n"
-" -d, --debug hibakereső üzenetek kiírása a szabványos kimenetre\n"
+" -c, --config=KÖNYVTÁR A KÖNYVTÁR használata a beállítófájlokhoz\n"
+" -d, --debug hibakereső üzenetek kiírása a szabványos hibakimenetre\n"
" -h, --help ezen súgó megjelenítése és kilépés\n"
" -n, --nologin ne jelentkezzen be automatikusan\n"
" -v, --version az aktuális verzió megjelenítése és kilépés\n"
@@ -1163,7 +1163,6 @@ msgstr "Állapot módosítása ennyi perc után"
msgid "Change status to"
msgstr "Állapot módosítása a következőre"
-#. Conversations
msgid "Conversations"
msgstr "Társalgások"
@@ -1485,7 +1484,6 @@ msgstr ""
"Ez a bővítmény új társalgás megnyitásakor beszúrja az utolsó társalgást az "
"aktuális társalgásba."
-#, c-format
msgid "Online"
msgstr "Elérhető"
@@ -1918,7 +1916,6 @@ msgstr "%s átvitelének megkezdése a következőtől: %s"
msgid "Transfer of file %s complete"
msgstr "%s fájl átvitele befejeződött"
-#, c-format
msgid "File transfer complete"
msgstr "A fájlátvitel befejeződött"
@@ -1926,7 +1923,6 @@ msgstr "A fájlátvitel befejeződött"
msgid "You canceled the transfer of %s"
msgstr "Megszakította %s átvitelét"
-#, c-format
msgid "File transfer cancelled"
msgstr "Fájlátvitel megszakítva"
@@ -2134,7 +2130,6 @@ msgstr "(%s) %s <AUTOMATIKUS VÁLASZ>: %s\n"
msgid "You are using %s, but this plugin requires %s."
msgstr "A(z) %s programot használja, de a bővítmény a következőt igényli: %s."
-#, c-format
msgid "This plugin has not defined an ID."
msgstr "A bővítmény nem adott meg azonosítót."
@@ -2832,7 +2827,6 @@ msgid ""
msgstr ""
"Nem hozható létre kapcsolat a helyi mDNS kiszolgálóval. Egyáltalán fut?"
-#. Creating the options for the protocol
msgid "First name"
msgstr "Utónév"
@@ -2864,6 +2858,10 @@ msgstr "Bonjour protokollbővítmény"
msgid "Purple Person"
msgstr "Purple személy"
+#. Creating the options for the protocol
+msgid "Local Port"
+msgstr "Helyi port"
+
msgid "Bonjour"
msgstr "Bonjour"
@@ -3027,7 +3025,6 @@ msgstr "Elérhető"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "Távol"
@@ -3921,7 +3918,6 @@ msgstr "Beszédes"
msgid "Extended Away"
msgstr "Nem vagyok a gépnél"
-#, c-format
msgid "Do Not Disturb"
msgstr "Ne zavarjanak"
@@ -4668,9 +4664,6 @@ msgstr "Műveletek"
msgid "Select an action"
msgstr "Válasszon műveletet"
-msgid "Unable to retrieve MSN Address Book"
-msgstr "Az MSN címjegyzék nem kérhető le"
-
#. only notify the user about problems adding to the friends list
#. * maybe we should do something else for other lists, but it probably
#. * won't cause too many problems if we just ignore it
@@ -6124,7 +6117,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr "Hiba: az SSL támogatás nincs telepítve."
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr "Ez a konferencia le lett zárva. További üzenetek már nem küldhetőek."
@@ -6388,23 +6380,18 @@ msgstr "Fényképezőgép"
msgid "Screen Sharing"
msgstr "Képernyőmegosztás"
-#, c-format
msgid "Free For Chat"
msgstr "Ráérek csevegni"
-#, c-format
msgid "Not Available"
msgstr "Nem érhető el"
-#, c-format
msgid "Occupied"
msgstr "Elfoglalt"
-#, c-format
msgid "Web Aware"
msgstr "A weben"
-#, c-format
msgid "Invisible"
msgstr "Láthatatlan"
@@ -6986,6 +6973,7 @@ msgstr "Kapcs_olódás"
msgid "Get AIM Info"
msgstr "AIM információk lekérése"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "Partnermegjegyzés szerkesztése"
@@ -7096,7 +7084,6 @@ msgstr ""
msgid "Attempting to connect to %s:%hu."
msgstr "Kapcsolódási kísérlet a következőhöz: %s:%hu."
-#, c-format
msgid "Attempting to connect via proxy server."
msgstr "Kapcsolódási kísérlet proxy kiszolgálón keresztül."
@@ -7574,6 +7561,9 @@ msgstr "<p><b>Javítások</b>:<br>\n"
msgid "<p><b>Acknowledgement</b>:<br>\n"
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 "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr "<p><i>és a háttéremberek...</i><br>\n"
@@ -7599,6 +7589,9 @@ msgstr "Minden QQ Qun frissítése"
msgid "About OpenQ"
msgstr "Az OpenQ névjegye"
+msgid "Modify Buddy Memo"
+msgstr "Partnerfeljegyzés módosítása"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7636,6 +7629,9 @@ msgstr "Kiszolgálómegjegyzés megjelenítése"
msgid "Show server news"
msgstr "Kiszolgálóhírek megjelenítése"
+msgid "Show chat room when msg comes"
+msgstr "Csevegőszoba megjelenítése ha üzenet jön"
+
msgid "Keep alive interval (seconds)"
msgstr "Kapcsolat-fenntartási időköz (mp)"
@@ -11390,6 +11386,9 @@ msgstr "litván"
msgid "Macedonian"
msgstr "macedón"
+msgid "Mongolian"
+msgstr "Mongol"
+
msgid "Bokmål Norwegian"
msgstr "Norvég Bokmål"
@@ -11504,9 +11503,31 @@ msgstr ""
"fájlban. A programra nem biztosítunk garanciát.<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\">FAQ:</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\">IRC:</FONT> #pidgin az irc.freenode.net hálózaton<BR><BR>"
+"<FONT SIZE=\"4\">Segítség e-mailben (angol):</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 csatorna:</FONT> #pidgin az irc.freenode.net "
+"hálózaton<BR><BR>"
+
+#, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
+msgstr "<FONT SIZE=\"4\">XMPP szoba:</FONT> devel@conference.pidgin.im<BR><BR>"
msgid "Current Developers"
msgstr "Jelenlegi fejlesztők"
@@ -12155,6 +12176,10 @@ msgstr ""
msgid "Pidgin"
msgstr "Pidgin"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr "Kilépés, mert már fut egy másik libpurple kliens.\n"
+
msgid "Open All Messages"
msgstr "Összes üzenet megnyitása"
@@ -12493,6 +12518,10 @@ msgstr "Proxy-kiszolgáló"
msgid "No proxy"
msgstr "Nincs Proxy"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr "Távoli DNS használata SOCKS4 proxykkal"
+
msgid "_User:"
msgstr "_Felhasználó:"
@@ -13947,9 +13976,6 @@ msgstr "_Partnerlista-ablak mindig felül:"
msgid "Only when docked"
msgstr "Csak ha dokkolt"
-msgid "_Flash window when chat messages are received"
-msgstr "_Villogtassa az ablakot új csevegésüzenetek fogadásakor"
-
msgid "Windows Pidgin Options"
msgstr "A windowsos Pidin beállításai"
diff --git a/po/km.po b/po/km.po
new file mode 100644
index 0000000000..771ca9250b
--- /dev/null
+++ b/po/km.po
@@ -0,0 +1,13636 @@
+# translation of pidgin.po to Khmer
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Khoem Sokhem <khoemsokhem@khmeros.info>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: pidgin\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-02-27 16:37-0800\n"
+"PO-Revision-Date: 2009-02-25 11:49+0700\n"
+"Last-Translator: Khoem Sokhem <khoemsokhem@khmeros.info>\n"
+"Language-Team: Khmer <support@khmeros.info>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Translators may want to transliterate the name.
+#. It is not to be translated.
+msgid "Finch"
+msgstr "បក្សី"
+
+#, c-format
+msgid "%s. Try `%s -h' for more information.\n"
+msgstr "%s. Try `%s -h' សម្រាប់​ព័ត៌មានបន្ថែម ។\n"
+
+#, c-format
+msgid ""
+"%s\n"
+"Usage: %s [OPTION]...\n"
+"\n"
+" -c, --config=DIR use DIR for config files\n"
+" -d, --debug print debugging messages to stderr\n"
+" -h, --help display this help and exit\n"
+" -n, --nologin don't automatically login\n"
+" -v, --version display the current version and exit\n"
+msgstr ""
+"%s\n"
+"ការ​ប្រើប្រាស់ ៖ %s [ជម្រើស]...\n"
+"\n"
+" -c, --config=DIR ប្រើ DIR សម្រាប់​ឯកសារ config\n"
+" -d, --debug បោះពុម្ព​សារ​បំបាត់​ទៅ stderr\n"
+" -h, --help បង្ហាញ​ជំនួយ​នេះ ហើយ​ចេញ\n"
+" -n, --nologin កុំ​ចូល​ដោយ​ស្វ័យ​ប្រវត្តិ\n"
+" -v, --version បង្ហាញ​កំណែ​បច្ចុប្បន្ន ហើយ​ចេញ\n"
+
+#, c-format
+msgid ""
+"%s encountered errors migrating your settings from %s to %s. Please "
+"investigate and complete the migration by hand. Please report this error at "
+"http://developer.pidgin.im"
+msgstr ""
+"កំហុស​ដែល​បានជួប​ប្រទះ %s ប្ដូរ​ទៅ​កា​រកំណត់​របស់​អ្នកពី %s ទៅ %s ។ សូម​អង្កេត​ និង​បំពេញ​ការ​ប្ដូរ​ដោយ​ដៃ ។ "
+"សូម​រាយការណ៍​កំហុស​នេះ​តាម http://developer.pidgin.im"
+
+msgid "Error"
+msgstr "កំហុស"
+
+msgid "Account was not added"
+msgstr "គណនី​មិន​ត្រូវ​បាន​បន្ថែម​ទេ"
+
+msgid "Username of an account must be non-empty."
+msgstr "ឈ្មោះអ្នក​ប្រើ​របស់​គណនី​​មិនអាច​ទទេ​​នោះទេ ។"
+
+msgid "New mail notifications"
+msgstr "ការ​ជូនដំណឹង​សំបុត្រ​ថ្មី"
+
+msgid "Remember password"
+msgstr "ចងចាំ​ពាក្យ​សម្ងាត់"
+
+msgid "There are no protocol plugins installed."
+msgstr "គ្មានកម្មវិធី​ជំនួយ​ពិធីការ​ត្រូវ​បាន​ដំឡើង​នោះ​ទេ ។"
+
+msgid "(You probably forgot to 'make install'.)"
+msgstr "(អ្នកប្រហែលជា​ភ្លេច 'make install' ។)"
+
+msgid "Modify Account"
+msgstr "កែប្រែ​គណនី"
+
+msgid "New Account"
+msgstr "គណនី​ថ្មី"
+
+msgid "Protocol:"
+msgstr "ពិធីការ ៖"
+
+msgid "Username:"
+msgstr "ឈ្មោះ​អ្នក​ប្រើ ៖"
+
+msgid "Password:"
+msgstr "ពាក្យ​សម្ងាត់ ៖"
+
+msgid "Alias:"
+msgstr "ឈ្មោះ​ក្លែងក្លាយ ៖"
+
+#. Register checkbox
+msgid "Create this account on the server"
+msgstr "បង្កើត​គណនី​នេះ​នៅ​លើ​ម៉ាស៊ីនបម្រើ"
+
+#. Cancel button
+#. Cancel
+msgid "Cancel"
+msgstr "បោះបង់"
+
+#. Save button
+#. Save
+msgid "Save"
+msgstr "រក្សា​​ទុក​​"
+
+#, c-format
+msgid "Are you sure you want to delete %s?"
+msgstr "តើ​អ្នក​ប្រាកដ​ជា​ចង់​លុប %s?"
+
+msgid "Delete Account"
+msgstr "លុប​គណនី"
+
+#. Delete button
+msgid "Delete"
+msgstr "លុប"
+
+msgid "Accounts"
+msgstr "គណនី"
+
+msgid "You can enable/disable accounts from the following list."
+msgstr "អ្នក​អាច​បិទ/បើក​គណនី​ពី​បញ្ជីដូច​ខាងក្រោម ។"
+
+#. Add button
+msgid "Add"
+msgstr "បន្ថែម"
+
+#. Modify button
+msgid "Modify"
+msgstr "កែប្រែ"
+
+#, c-format
+msgid "%s%s%s%s has made %s his or her buddy%s%s"
+msgstr "%s%s%s%s បាន​ធ្វើ %s មិត្តភក្ដិ​​របស់​គាត់ %s%s"
+
+msgid "Add buddy to your list?"
+msgstr "បន្ថែម​មិត្តភក្ដិ​ទៅ​កាន់​បញ្ជីរបស់​អ្នក ?"
+
+#, c-format
+msgid "%s%s%s%s wants to add %s to his or her buddy list%s%s"
+msgstr "%s%s%s%s ចង់​បន្ថែម %s ទៅ​កាន់​បញ្ជី​មិត្តភក្ដិ​របស់​គាត់ %s%s"
+
+msgid "Authorize buddy?"
+msgstr "ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​របស់មិត្តភក្ដិ ?"
+
+msgid "Authorize"
+msgstr "ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ"
+
+msgid "Deny"
+msgstr "បដិសេធ"
+
+#, c-format
+msgid ""
+"Online: %d\n"
+"Total: %d"
+msgstr ""
+"លើ​បណ្ដាញ ៖ %d\n"
+"សរុប ៖ %d"
+
+#, c-format
+msgid "Account: %s (%s)"
+msgstr "គណនី ៖ %s (%s)"
+
+#, c-format
+msgid ""
+"\n"
+"Last Seen: %s ago"
+msgstr ""
+"\n"
+"បានឃើញចុងក្រោយ ៖ %s ago"
+
+msgid "Default"
+msgstr "លំនាំដើម"
+
+msgid "You must provide a username for the buddy."
+msgstr "អ្នក​ត្រូវតែ​ផ្ដល់​ឈ្មោះ​អ្នក​ប្រោះ​សម្រាប់​មិត្តភក្ដិ ។"
+
+msgid "You must provide a group."
+msgstr "អ្នក​ត្រូវតែ​ផ្ដល់​ក្រុម​មួយ ។"
+
+msgid "You must select an account."
+msgstr "អ្នក​ត្រូវតែ​ជ្រើស​គណនី​មួយ ។"
+
+msgid "The selected account is not online."
+msgstr "គណនី​ដែល​បាន​ជ្រើស​មិននៅ​លើបណ្ដាញទេ ។"
+
+msgid "Error adding buddy"
+msgstr "កំហុ​សក្នុងកា​របន្ថែម​មិត្តភក្ដិ"
+
+msgid "Username"
+msgstr "ឈ្មោះ​អ្នក​ប្រើ"
+
+msgid "Alias (optional)"
+msgstr "ឈ្មោះ​ក្លែងក្លាយ (ជម្រើស)"
+
+msgid "Add in group"
+msgstr "បន្ថែម​ក្នុងក្រុម"
+
+msgid "Account"
+msgstr "គណនី"
+
+msgid "Add Buddy"
+msgstr "បន្ថែម​មិត្តភក្ដិ"
+
+msgid "Please enter buddy information."
+msgstr "សូម​បញ្ចូល​ព័ត៌មាន​របស់មិត្តភក្ដិ ។"
+
+msgid "Chats"
+msgstr "ជជែក"
+
+#. Extract their Name and put it in
+msgid "Name"
+msgstr "ឈ្មោះ"
+
+msgid "Alias"
+msgstr "ឈ្មោះ​ក្លែងក្លាយ"
+
+msgid "Group"
+msgstr "ក្រុម"
+
+msgid "Auto-join"
+msgstr "ចូល​ស្វ័យ​ប្រវត្តិ"
+
+msgid "Add Chat"
+msgstr "បន្ថែម​ការ​ជជែក"
+
+msgid "You can edit more information from the context menu later."
+msgstr "អ្នក​អាច​កែសម្រួល​ព័ត៌មាន​បន្ថែម​ពី​ម៉ឺនុយ​បរិបទ​នៅ​ពេល​ក្រោយ ។"
+
+msgid "Error adding group"
+msgstr "កំហុស​ក្នុងការ​បន្ថែម​ក្រុម"
+
+msgid "You must give a name for the group to add."
+msgstr "អ្នក​ត្រូវតែ​ផ្ដល់​ឈ្មោះ​សម្រាប់​ក្រុម​ដែល​ត្រូវ​បន្ថែម ។"
+
+msgid "Add Group"
+msgstr "បន្ថែម​ក្រុម"
+
+msgid "Enter the name of the group"
+msgstr "បញ្ចូល​ឈ្មោះ​​ក្រុម"
+
+msgid "Edit Chat"
+msgstr "កែ​សម្រួល​ការ​ជជែក"
+
+msgid "Please Update the necessary fields."
+msgstr "សូម​ធ្វើ​ឲ្យ​វាល​ដែល​ចាំបាច់​ទាន់សម័យ ។"
+
+msgid "Edit"
+msgstr "កែ​សម្រួល"
+
+msgid "Edit Settings"
+msgstr "កែសម្រួល​ការ​កំណត់"
+
+msgid "Information"
+msgstr "ព័ត៌មាន"
+
+msgid "Retrieving..."
+msgstr "កំពុង​ទៅ​យក..."
+
+msgid "Get Info"
+msgstr "យក​ព័ត៌មាន"
+
+msgid "Add Buddy Pounce"
+msgstr "បន្ថែមក្រុម​មិត្តភក្ដិ​"
+
+msgid "Send File"
+msgstr "ផ្ញើ​ឯកសារ"
+
+msgid "Blocked"
+msgstr "បានទប់ស្កាត់"
+
+msgid "Show when offline"
+msgstr "បង្ហាញ​​នៅពេល​នៅ​ក្រៅបណ្ដាញ"
+
+#, c-format
+msgid "Please enter the new name for %s"
+msgstr "សូម​បញ្ចូល​ឈ្មោះថ្មី​សម្រាប់ %s"
+
+msgid "Rename"
+msgstr "ប្តូរ​​ឈ្មោះ​"
+
+msgid "Set Alias"
+msgstr "កំណត់​ឈ្មោះ​ក្លែងក្លាយ"
+
+msgid "Enter empty string to reset the name."
+msgstr "បញ្ចូល​ខ្សែអក្សរ​ទទេ​ ដើម្បី​កំណត់​ឈ្មោះ​ឡើង​វិញ ។"
+
+msgid "Removing this contact will also remove all the buddies in the contact"
+msgstr "យក​ទំនាក់ទំនង​នេះ​ចេញ នឹង​យក​មិត្តភក្ដិ​ទាំង​អស់​ចេញ​នៅ​ក្នុង​ទំនាក់ទំនង"
+
+msgid "Removing this group will also remove all the buddies in the group"
+msgstr "យក​ក្រុម​នេះ​ចេញនឹង​យក​មិត្តភក្ដិ​ទាំង​អស់​ចេញ​នៅ​ក្នុង​ក្រុម"
+
+#, c-format
+msgid "Are you sure you want to remove %s?"
+msgstr "តើ​​អ្នក​ប្រាកដ​ជា​ចង់​យក %s ចេញ​ឬ ?"
+
+#. XXX: anything to do with the returned ui-handle?
+msgid "Confirm Remove"
+msgstr "អះអាង​ការ​យក​ចេញ"
+
+msgid "Remove"
+msgstr "យក​ចេញ"
+
+#. Buddy List
+msgid "Buddy List"
+msgstr "បញ្ជី​មិត្តភក្ដិ"
+
+msgid "Place tagged"
+msgstr "បានដាក់​ស្លាក​កន្លែង"
+
+msgid "Toggle Tag"
+msgstr "បិទ/បើក​ស្លាក"
+
+msgid "View Log"
+msgstr "មើល​កំណត់ហេតុ"
+
+#. General
+msgid "Nickname"
+msgstr "សម្មតិនាម"
+
+#. Never know what those translations might end up like...
+#. Idle stuff
+msgid "Idle"
+msgstr "ទំនេរ"
+
+msgid "On Mobile"
+msgstr "នៅពេល​ចល័ត"
+
+msgid "New..."
+msgstr "ថ្មី​..."
+
+msgid "Saved..."
+msgstr "បាន​រក្សាទុក..."
+
+msgid "Plugins"
+msgstr "កម្មវិធី​ជំនួយ"
+
+msgid "Block/Unblock"
+msgstr "ទប់ស្កាត់/មិនទប់ស្កាត់"
+
+msgid "Block"
+msgstr "ទប់ស្កាត់"
+
+msgid "Unblock"
+msgstr "មិនទប់ស្កាត់"
+
+msgid ""
+"Please enter the username or alias of the person you would like to Block/"
+"Unblock."
+msgstr "សូម​បញ្ចូល​ឈ្មោះ​អ្នកប្រើ ឬ​ឈ្មោះក្លែងក្លាយ​​របស់មនុស្ស ដែល​អ្នក​ចង់​ទប់ស្កាត់/មិនទប់ស្កាត់ ។"
+
+#. Not multiline
+#. Not masked?
+#. No hints?
+msgid "OK"
+msgstr "យល់ព្រម"
+
+msgid "New Instant Message"
+msgstr "សារ​បន្ទាន់​ថ្មី"
+
+msgid "Please enter the username or alias of the person you would like to IM."
+msgstr "សូម​បញ្ចូល​ឈ្មោះ​អ្នកប្រើ ឬ​ឈ្មោះ​ក្លែងក្លាយ​របស់​មនុស្ស​ ដែលអ្នក​ចង់​ IM ។"
+
+msgid "Channel"
+msgstr "ឆានែល"
+
+msgid "Join a Chat"
+msgstr "ចូលរួម​ក្នុងការ​ជជែក"
+
+msgid "Please enter the name of the chat you want to join."
+msgstr "សូម​បញ្ចូល​ឈ្មោះ​នៃ​ការ​ជជែក​ដែល​អ្នកចង់​ចូលរួម ។"
+
+msgid "Join"
+msgstr "ចូលរួម"
+
+msgid ""
+"Please enter the username or alias of the person whose log you would like to "
+"view."
+msgstr "សូម​បញ្ចូល​ឈ្មោះ​អ្នក​ប្រើ ឬ​ឈ្មោះ​ក្លែងក្លាយ​របស់​មនុស្ស​ដែល​អ្នក​ចង់​មើល ។"
+
+#. Create the "Options" frame.
+msgid "Options"
+msgstr "ជម្រើស​"
+
+msgid "Send IM..."
+msgstr "ផ្ញើ IM..."
+
+msgid "Block/Unblock..."
+msgstr "ទប់ស្កាត់/មិនទប់ស្កាត់..."
+
+msgid "Join Chat..."
+msgstr "ចូលរួមការ​​ជជែក..."
+
+msgid "View Log..."
+msgstr "មើល​កំណត់​ហេតុ..."
+
+msgid "View All Logs"
+msgstr "មើល​កំណត់ហេតុ​ទាំង​អស់"
+
+msgid "Show"
+msgstr "បង្ហាញ​"
+
+msgid "Empty groups"
+msgstr "សម្អាត​ក្រុម"
+
+msgid "Offline buddies"
+msgstr "មិត្តភក្ដិ​ក្រៅ​បណ្តាញ"
+
+msgid "Sort"
+msgstr "ត​ម្រៀប​"
+
+msgid "By Status"
+msgstr "តាម​ស្ថានភាព"
+
+msgid "Alphabetically"
+msgstr "តាម​អក្ខរក្រម"
+
+msgid "By Log Size"
+msgstr "តាម​ទំហំ​កំណត់​ហេតុ"
+
+msgid "Buddy"
+msgstr "មិត្តភក្ដិ"
+
+msgid "Chat"
+msgstr "ជជែក"
+
+msgid "Grouping"
+msgstr "ការ​ដាក់ជា​ក្រុម"
+
+msgid "Certificate Import"
+msgstr "នាំចូល​វិញ្ញាបនបត្រ"
+
+msgid "Specify a hostname"
+msgstr "បញ្ជាក់​ឈ្មោះ​ម៉ាស៊ីន"
+
+msgid "Type the host name this certificate is for."
+msgstr "វាយ​ឈ្មោះ​ម៉ាស៊ីន​នៃ​វិញ្ញាបនបត្រ​នេះ​គឺ​សម្រាប់ ។"
+
+#, c-format
+msgid ""
+"File %s could not be imported.\n"
+"Make sure that the file is readable and in PEM format.\n"
+msgstr ""
+"ឯកសារ %s មិនអាច​ត្រូវ​បាននាំចូល​ទេ ។\n"
+"សូម​ប្រាកដ​ថា​ឯកសារ​អាច​អាន​បាន ហើយ​មាន​ទ្រង់ទ្រាយជា PEM ។\n"
+
+msgid "Certificate Import Error"
+msgstr "កំហុស​ក្នុងកា​រនាំ​វិញ្ញាបនបត្រ​ចូល"
+
+msgid "X.509 certificate import failed"
+msgstr "បានបរាជ័យ​ក្នុង​ការ​នាំចូល​វិញ្ញាបនបត្រ X.509"
+
+msgid "Select a PEM certificate"
+msgstr "ជ្រើស​វិញ្ញាបនបត្រ PEM"
+
+#, c-format
+msgid ""
+"Export to file %s failed.\n"
+"Check that you have write permission to the target path\n"
+msgstr ""
+"បានបរាជ័យ​ក្នុងការនាំចេញ %s ។\n"
+"ពិនិត្យ​ថា អ្នក​មាន​សិទ្ធិ​សរសេរ​ទៅ​កាន់​ផ្លូវគោលដៅ\n"
+
+msgid "Certificate Export Error"
+msgstr "កំហុស​ក្នុងការ​នាំវិញ្ញាបនបត្រ​ចេញ"
+
+msgid "X.509 certificate export failed"
+msgstr "បាន​បរាជ័យ​ក្នុងការ​នាំវិញ្ញាបនបត្រ X.509 ចេញ"
+
+msgid "PEM X.509 Certificate Export"
+msgstr "នាំវិញ្ញាបនបត្រ PEM X.509 ចេញ"
+
+#, c-format
+msgid "Certificate for %s"
+msgstr "វិញ្ញាបនបត្រ %s"
+
+#, c-format
+msgid ""
+"Common name: %s\n"
+"\n"
+"SHA1 fingerprint:\n"
+"%s"
+msgstr ""
+"ឈ្មោះ​ធម្មតា ៖ %s\n"
+"\n"
+"ស្នាម្រាមដៃ SHA1 ៖\n"
+"%s"
+
+msgid "SSL Host Certificate"
+msgstr "វិញ្ញាបនបត្រ SSL Host"
+
+#, c-format
+msgid "Really delete certificate for %s?"
+msgstr "ពិតជា​ចង់​លុប​វិញ្ញាបនបត្រសម្រាប់ %s ឬ ?"
+
+msgid "Confirm certificate delete"
+msgstr "អះអាង​ការ​លុប​វិញ្ញាបនបត្រ"
+
+msgid "Certificate Manager"
+msgstr "កម្មវិធី​គ្រប់គ្រង​វិញ្ញាបនបត្រ"
+
+#. Creating the user splits
+msgid "Hostname"
+msgstr "ឈ្មោះ​ម៉ាស៊ីន"
+
+msgid "Info"
+msgstr "ព័ត៌មាន"
+
+#. Close button
+msgid "Close"
+msgstr "បិទ​"
+
+#, c-format
+msgid "%s (%s)"
+msgstr "%s (%s)"
+
+#, c-format
+msgid "%s disconnected."
+msgstr "បាន​ផ្ដាច់ %s ។"
+
+#, c-format
+msgid ""
+"%s\n"
+"\n"
+"Finch will not attempt to reconnect the account until you correct the error "
+"and re-enable the account."
+msgstr ""
+"%s\n"
+"\n"
+"បក្សី​នឹង​មិន​ប៉ុនប៉ង​តភ្ជាប់​គណនី​ឡើង​វិញ រហូត​ដល់​អ្នក​កែ​ និង​បើក​គណនី​ឡើង​វិញ ។"
+
+msgid "Re-enable Account"
+msgstr "បើក​គណនី​ឡើង​វិញ"
+
+msgid ""
+"The account has disconnected and you are no longer in this chat. You will be "
+"automatically rejoined in the chat when the account reconnects."
+msgstr ""
+"គណនី​​បាន​ផ្ដាច់ ហើយ​អ្នក​មិន​នៅ​ក្នុង​ការ​ជជែក​នេះ​ទៀតទេ ។ អ្នក​នឹង​ត្រូវ​បានចូល​ឡើង​វិញ​ដោយ​ស្វ័យ​ប្រវត្តិ​នៅ​"
+"ក្នុងការ​ជជែក នៅពេល​អ្នក​តភ្ជាប់គណនី​នេះ​ឡើង​វិញ ។"
+
+msgid "No such command."
+msgstr "គ្មានពាក្យ​បញ្ជា​បែបនេះទេ ។"
+
+msgid "Syntax Error: You typed the wrong number of arguments to that command."
+msgstr "កំហុស​វាក្យសម្ព័ន្ធ ៖ អ្នកបានវាយ​​ចំនួន​អាគុយម៉ង់​មិន​ត្រឹមត្រូវ​ចំពោះ​ពាក្យ​បញ្ជា​នោះ​ទេ ។"
+
+msgid "Your command failed for an unknown reason."
+msgstr "ពាក្យ​បញ្ជា​របស់​អ្នកបានបរាជ័យ​ដោយ​សារ​មិនស្គាល់​ហេតុផល ។"
+
+msgid "That command only works in chats, not IMs."
+msgstr "ពាក្យ​បញ្ជា​នោះ​ដំណើរតែ​នៅក្នុងការ​ជជែក​ប៉ុណ្ណោះ មិនមែន IMs ។"
+
+msgid "That command only works in IMs, not chats."
+msgstr "ពាក្យ​បញ្ជា​នោះ​ដំណើរការ​តែ​នៅ​ក្នុង IMs ប៉ុណ្ណោះ មិននៅ​ក្នុងកា​រជជែក​ទេ ។"
+
+msgid "That command doesn't work on this protocol."
+msgstr "ពាក្យ​បញ្ជា​នោះ​មិនដំណើរការ​នៅ​លើ​ពិធីការ​នេះ​ទេ ។"
+
+msgid "Message was not sent, because you are not signed on."
+msgstr "សារ​មិន​ត្រូវ​បាន​ផ្ញើ​ទេ ពីព្រោះ​អ្នក​មិនបាន​ចូលទេ ។"
+
+#, c-format
+msgid "%s (%s -- %s)"
+msgstr "%s (%s -- %s)"
+
+#, c-format
+msgid "%s [%s]"
+msgstr "%s [%s]"
+
+#, c-format
+msgid ""
+"\n"
+"%s is typing..."
+msgstr ""
+"\n"
+"%s កំពុង​វាយ..."
+
+msgid "You have left this chat."
+msgstr "អ្នក​បាន​ចេញ​ពី​កា​រជជែក​នេះ​ហើយ ។"
+
+msgid "Logging started. Future messages in this conversation will be logged."
+msgstr "បាន​ចាប់ផ្ដើម​ចុះ​កំណត់ហេតុ ។ សារ​បន្តទៀត​នៅ​ក្នុង​ការ​សន្ទនា​នឹង​ត្រូវ​បាន​ចុះ​កំណត់ហេតុ ។"
+
+msgid ""
+"Logging stopped. Future messages in this conversation will not be logged."
+msgstr "បានបញ្ចប់​ការ​ចុះ​កំណត់ហេតុ ។ សារ​បន្តបន្ទាប់​ទៀត​នៅ​ក្នុងកា​រសន្ទនា​នឹង​មិន​ត្រូវ​បាន​ចុះកំណត់ហេតុទេ ។"
+
+msgid "Send To"
+msgstr "ផ្ញើ​ទៅ"
+
+msgid "Invite message"
+msgstr "សារ​អញ្ជើញ"
+
+msgid "Invite"
+msgstr "អញ្ជើញ"
+
+msgid ""
+"Please enter the name of the user you wish to invite,\n"
+"along with an optional invite message."
+msgstr ""
+"សូម​បញ្ចូល​ឈ្មោះ​អ្នកប្រើ​ដែល​អ្នកចង់​អញ្ជើញ\n"
+"រួម​ជា​មួយ​នឹង​សារ​អញ្ជើញ​ជា​ជម្រើស ។"
+
+msgid "Conversation"
+msgstr "ការ​សន្ទនា"
+
+msgid "Clear Scrollback"
+msgstr "ជម្រះ​ការ​រមូរ​ថយក្រោយ"
+
+msgid "Show Timestamps"
+msgstr "បង្ហាញ​​ត្រាពេលវេលា"
+
+msgid "Add Buddy Pounce..."
+msgstr "បន្ថែម​ក្រុម​មិត្តភក្ដិ..."
+
+msgid "Invite..."
+msgstr "អញ្ជើញ..."
+
+msgid "Enable Logging"
+msgstr "បើក​ការ​ចុះកំណត់ហេតុ"
+
+msgid "Enable Sounds"
+msgstr "បើក​សំឡេង"
+
+msgid "<AUTO-REPLY> "
+msgstr "<AUTO-REPLY> "
+
+#, c-format
+msgid "List of %d user:\n"
+msgid_plural "List of %d users:\n"
+msgstr[0] "បញ្ជី​អ្នកប្រើ %d ៖\n"
+
+msgid "Supported debug options are: version"
+msgstr "ជម្រើស​បំបាត់កំហុស​ដែល​បានគាំទ្រ​គឺ ៖ កំណែ"
+
+msgid "No such command (in this context)."
+msgstr "គ្មានពាក្យ​បញ្ជា​បែបនេះ​ទេ (នៅ​ក្នុង​បរិបទ​នេះ) ។"
+
+msgid ""
+"Use \"/help &lt;command&gt;\" for help on a specific command.\n"
+"The following commands are available in this context:\n"
+msgstr ""
+"ប្រើ \"/help &lt;command&gt;\" សម្រាប់​ជំនួយ​អំពី​ពាក្យបញ្ជា​ជាក់លាក់ ។\n"
+"ពាក្យ​បញ្ជា​ដូច​ខាងក្រោម​អាច​ប្រើ​នៅ​ក្នុង​បរិបទ​នេះ ៖\n"
+
+#, c-format
+msgid ""
+"%s is not a valid message class. See '/help msgcolor' for valid message "
+"classes."
+msgstr ""
+"%s មិនមែន​ជា​ថ្នាក់​សារ​ត្រឹមត្រូវ​តែ ។ សូមមើល '/help msgcolor' សម្រាប់ថ្នាក់សារ​ដែល​ត្រឹមត្រូវ ។"
+
+#, c-format
+msgid "%s is not a valid color. See '/help msgcolor' for valid colors."
+msgstr "%s មិនមែន​ជា​ពណ៌​ត្រឹមត្រូវ​ទែ ។ សូមមើល '/help msgcolor' សម្រាប់​ពណ៌​ដែល​ត្រឹមត្រូវ ។"
+
+msgid ""
+"say &lt;message&gt;: Send a message normally as if you weren't using a "
+"command."
+msgstr "និយាយ &lt;message&gt; ៖ ផ្ញើ​សារ​តាម​ធម្មតា ដូច​​ដែល​អ្នក​មិនកំពុង​ប្រើ​ពាក្យ​បញ្ជា ។"
+
+msgid "me &lt;action&gt;: Send an IRC style action to a buddy or chat."
+msgstr "ខ្ញុំ &lt;action&gt; ៖ ផ្ញើ​សកម្មភាព​រចនាប័ទ្ម IRC ទៅកាន់មិត្តភក្ដិ ឬ​ការ​ជជែក ។"
+
+msgid ""
+"debug &lt;option&gt;: Send various debug information to the current "
+"conversation."
+msgstr "បំបាត់​កំហុស &lt;option&gt; ៖ ផ្ញើ​ព័ត៌មាន​បំបាត់​កំហុស​ផ្សេងៗ​ទៅកាន់​ការ​សន្ទនា​បច្ចុប្បន្ន ។"
+
+msgid "clear: Clears the conversation scrollback."
+msgstr "ជម្រះ ៖ ជម្រះ​ការ​សន្ទនា ។"
+
+msgid "help &lt;command&gt;: Help on a specific command."
+msgstr "ជំនួយ &lt;command&gt; ៖ ជួយពាក្យ​បញ្ជាក់ជាក់លាក់ ។"
+
+msgid "users: Show the list of users in the chat."
+msgstr "អ្នកប្រើ ៖ បង្ហាញ​បញ្ជីអ្នក​ប្រើ​នៅ​ក្នុងកា​រជជែក ។"
+
+msgid "plugins: Show the plugins window."
+msgstr "កម្មវិធី​ ៖ បង្ហាញ​បង្អួច​កម្មវិធីជំនួយ ។"
+
+msgid "buddylist: Show the buddylist."
+msgstr "បញ្ជីមិត្តភក្ដិ ៖ បង្ហាញ​បញ្ជីមិត្តភក្ដិ ។"
+
+msgid "accounts: Show the accounts window."
+msgstr "គណនី ៖ បង្ហាញ​បង្អួច​គណនី ។"
+
+msgid "debugwin: Show the debug window."
+msgstr "debugwin ៖ បង្ហាញ​បង្អួច​បំបាត់​កំហុស ។"
+
+msgid "prefs: Show the preference window."
+msgstr "prefs ៖ បង្ហាញ​បង្អួច​ចំណូលចិត្ត ។"
+
+msgid "statuses: Show the savedstatuses window."
+msgstr "ស្ថានភាព ៖ បង្ហាញ​បង្អួច​ស្ថានភាព​រក្សាទុក ។"
+
+msgid ""
+"msgcolor &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;class&gt; &lt;foreground&gt; &lt;background&gt;  កំណត់ពណ៌​សម្រាប់ថ្នាក់​"
+"ផ្សេងៗ​របស់​សារ​នៅ​ក្នុង​បង្អួច​សន្ទនា ។<br> &lt;class&gt; ៖ ទទួល ផ្ញើ បន្លិច សកម្មភាព "
+"ត្រាពេលវេលា<br> &lt;foreground/background&gt; ៖ ខ្មៅ ក្រហម បៃតង ស ប្រផេះ ប្រផេះ​"
+"ដិត ស្វាយ ផ្ទៃមេឃ លំនាំដើម<br><br>ឧទាហរណ៍ ៖<br> msgcolor ផ្ញើ​ពណ៌​ផ្ទៃមេឃ​លំនាំដើម"
+
+msgid "Unable to open file."
+msgstr "មិនអាច​បើក​ឯកសារ​បានទេ ។"
+
+msgid "Debug Window"
+msgstr "បង្អួច​បំបាត់​កំហុស"
+
+#. XXX: Setting the GROW_Y for the following widgets don't make sense. But right now
+#. * it's necessary to make the width of the debug window resizable ... like I said,
+#. * it doesn't make sense. The bug is likely in the packing in gntbox.c.
+#.
+msgid "Clear"
+msgstr "ជម្រះ"
+
+msgid "Filter:"
+msgstr "តម្រង ៖"
+
+msgid "Pause"
+msgstr "ផ្អាក"
+
+#, c-format
+msgid "File Transfers - %d%% of %d file"
+msgid_plural "File Transfers - %d%% of %d files"
+msgstr[0] "ការ​ផ្ទេរ​ឯកសារ - ឯកសារ %d%% នៃ %d"
+
+#. Create the window.
+msgid "File Transfers"
+msgstr "ផ្ទេរ​ឯកសារ"
+
+msgid "Progress"
+msgstr "វឌ្ឍនភាព"
+
+msgid "Filename"
+msgstr "ឈ្មោះ​ឯកសារ"
+
+msgid "Size"
+msgstr "ទំហំ"
+
+msgid "Speed"
+msgstr "ល្បឿន"
+
+msgid "Remaining"
+msgstr "នៅ​សល់"
+
+#. XXX: Use of ggp_str_to_uin() is an ugly hack!
+msgid "Status"
+msgstr "ស្ថានភាព"
+
+msgid "Close this window when all transfers finish"
+msgstr "បិទ​បង្អួច​នេះ​នៅពេល​ការ​ផ្ទេរ​ទាំង​អស់​ចប់"
+
+msgid "Clear finished transfers"
+msgstr "ជម្រះ​ការ​ផ្ទេរ​ដែល​ចប់"
+
+msgid "Stop"
+msgstr "បញ្ឈប់"
+
+msgid "Waiting for transfer to begin"
+msgstr "រង់ចាំ​ការ​ផ្ទេរ​ចាប់ផ្ដើម"
+
+msgid "Canceled"
+msgstr "បានបោះបង់"
+
+msgid "Failed"
+msgstr "បាន​បរាជ័យ"
+
+#, c-format
+msgid "%.2f KiB/s"
+msgstr "%.2f KiB/s"
+
+msgid "Sent"
+msgstr "បានផ្ញើ"
+
+msgid "Received"
+msgstr "បាន​ទទួល"
+
+msgid "Finished"
+msgstr "បាន​បញ្ចប់"
+
+#, c-format
+msgid "The file was saved as %s."
+msgstr "ឯកសារ​ត្រូវ​បាន​រក្សាទុក​ជា %s ។"
+
+msgid "Sending"
+msgstr "ការ​ផ្ញើ"
+
+msgid "Receiving"
+msgstr "ការ​ទទួល"
+
+#, c-format
+msgid "Conversation in %s on %s"
+msgstr "ការ​សន្ទនា​នៅ​ក្នុង %s លើ %s"
+
+#, c-format
+msgid "Conversation with %s on %s"
+msgstr "ការ​សន្ទនា​ជា​មួយ %s នៅ​លើ %s"
+
+msgid "%B %Y"
+msgstr "%B %Y"
+
+msgid ""
+"System events will only be logged if the \"Log all status changes to system "
+"log\" preference is enabled."
+msgstr ""
+"ព្រឹត្តិការណ៍​ប្រព័ន្ធ​នឹង​ត្រូវ​បានចុះ​កំណត់ហេតុ​ តែ​ក្នុងករណី​ដែលចំណូលចិត្ត​ \"ចុះ​កំណត់ហេតុ​កា​រផ្លាស់ប្ដូរ​ស្ថានភាព​​"
+"ប្រព័ន្ធ\" ត្រូវ​បានបើក ។"
+
+msgid ""
+"Instant messages will only be logged if the \"Log all instant messages\" "
+"preference is enabled."
+msgstr ""
+"សារ​បន្ទាន់​នឹង​ត្រូវ​បានចុះ​កំណត់ហេតុ​តែ​ក្នុងករណី​ដែល​ចំណូលចិត្ត \"ចុះ​កំណត់ហេតុ​សារ​បន្ទាន់\" ត្រូវ​បាន​បើក ។"
+
+msgid ""
+"Chats will only be logged if the \"Log all chats\" preference is enabled."
+msgstr ""
+"ការ​ជជែក​នឹង​ត្រូវ​បាន​ចុះ​កំណត់ហេតុ​តែ​ក្នុងករណី​ដែល​ចំណូលចិត្ត​ \"ចុះកំណត់ហេតុ​​ជជែក​ទាំង​អស់\" ត្រូវ​បាន​បើក ។"
+
+msgid "No logs were found"
+msgstr "រក​មិនឃើញ​កំណត់ហេតុ​ទេ"
+
+msgid "Total log size:"
+msgstr "ទំហំ​កំណត់ហេតុ​សរុប ៖"
+
+#. Search box *********
+msgid "Scroll/Search: "
+msgstr "រមូរ/ស្វែងរក ៖ "
+
+#, c-format
+msgid "Conversations in %s"
+msgstr "ការ​សន្ទនា​នៅ​ក្នុង %s"
+
+#, c-format
+msgid "Conversations with %s"
+msgstr "កា​រសន្ទនា​ជា​មួយ %s"
+
+msgid "All Conversations"
+msgstr "កា​រសន្ទនា​ទាំង​អស់"
+
+msgid "System Log"
+msgstr "​កំណត់ហេតុ​ប្រព័ន្ធ"
+
+msgid "Emails"
+msgstr "អ៊ីមែល"
+
+msgid "You have mail!"
+msgstr "អ្នកមាន​សំបុត្រ !"
+
+msgid "Sender"
+msgstr "អ្នក​ផ្ញើ"
+
+msgid "Subject"
+msgstr "ប្រធាន​បទ"
+
+#, c-format
+msgid "%s (%s) has %d new message."
+msgid_plural "%s (%s) has %d new messages."
+msgstr[0] "%s (%s) មាន​សារ​ថ្មី %d ។"
+
+msgid "New Mail"
+msgstr "សំបុត្រ​ថ្មីុត្រ"
+
+#, c-format
+msgid "Info for %s"
+msgstr "ព័ត៌មាន​សម្រាប់ %s"
+
+msgid "Buddy Information"
+msgstr "ព័ត៌មាន​អំពី​មិត្តភក្ដិ"
+
+msgid "Continue"
+msgstr "បន្ត"
+
+msgid "IM"
+msgstr "IM"
+
+msgid "(none)"
+msgstr "​(គ្មាន)​"
+
+msgid "URI"
+msgstr "URI"
+
+msgid "ERROR"
+msgstr "កំហុស"
+
+msgid "loading plugin failed"
+msgstr "បានបរាជ័យ​ក្នុងកា​រផ្ទុក​កម្មវិធី​ជំនួយ"
+
+msgid "unloading plugin failed"
+msgstr "បានបរាជ័យ​ក្នុងកា​រមិនផ្ទុក​កម្មវិធី​ជំនួយ"
+
+#, c-format
+msgid ""
+"Name: %s\n"
+"Version: %s\n"
+"Description: %s\n"
+"Author: %s\n"
+"Website: %s\n"
+"Filename: %s\n"
+msgstr ""
+"ឈ្មោះ ៖ %s\n"
+"កំណែ ៖ %s\n"
+"សេចក្ដី​ពិពណ៌នា ៖ %s\n"
+"អ្នកនិពន្ធ ៖ %s\n"
+"តំបន់បណ្ដាញ ៖ %s\n"
+"ឈ្មោះ​ឯកសារ ៖ %s\n"
+
+msgid "Plugin need to be loaded before you can configure it."
+msgstr "កម្មវិធី​ជំនួយ​ត្រូវ​បានផ្ទុក​មុន​នឹង​អ្នក​អាច​កំណត់​រចនាសម្ព័ន្ធ ។"
+
+msgid "No configuration options for this plugin."
+msgstr "គ្មាន​ជម្រើស​កំណត់​រចនាសម្ព័ន្ធ​សម្រាប់​កម្មវិធី​ជំនួយ​នេះ​ទេ ។"
+
+msgid "Error loading plugin"
+msgstr "កំហុស​ក្នុងកា​រផ្ទុក​កម្មវិធី​ជំនួយ"
+
+msgid "The selected file is not a valid plugin."
+msgstr "ឯកសារ​ដែលបាន​ជ្រើស​មិន​មែនជា​កម្មវិធី​ជំនួយ​ត្រឹមត្រូវ​ទេ ។"
+
+msgid ""
+"Please open the debug window and try again to see the exact error message."
+msgstr "សូម​បើក​បង្អួច​បំបាត់​កំហុស ហើយ​ព្យាយាម​មើល​សារ​កំហុស​ជាក់លាក់ ។"
+
+msgid "Select plugin to install"
+msgstr "ជ្រើស​កម្មវិធី​ជំនួយ​ត្រូវ​ដំឡើង"
+
+msgid "You can (un)load plugins from the following list."
+msgstr "អ្នកអាច​ផ្ទុក/មិនផ្ទុក​កម្មវិធី​ជំនួយ​ពី​បញ្ជី​ដូច​ខាងក្រោម ។"
+
+msgid "Install Plugin..."
+msgstr "ដំឡើង​កម្មវិធី​ជំនួយ..."
+
+msgid "Configure Plugin"
+msgstr "កំណត់​រចនាសម្ព័ន្ធ​កម្មវិធី​ជំនួយ"
+
+#. copy the preferences to tmp values...
+#. * I liked "take affect immediately" Oh well :-(
+#. (that should have been "effect," right?)
+#. Back to instant-apply! I win! BU-HAHAHA!
+#. Create the window
+msgid "Preferences"
+msgstr "ចំណូលចិត្ត"
+
+msgid "Please enter a buddy to pounce."
+msgstr "សូម​បញ្ចូល​មិត្តភក្តិ​ទៅ​ក្រុម ។"
+
+msgid "New Buddy Pounce"
+msgstr "ក្រុមមិត្តភក្ដិ​ថ្មី"
+
+msgid "Edit Buddy Pounce"
+msgstr "កែសម្រួល​ក្រុម​មិត្តភក្ដិ"
+
+msgid "Pounce Who"
+msgstr "ក្រុមជា​នរណា"
+
+#. Account:
+msgid "Account:"
+msgstr "គណនី ៖"
+
+msgid "Buddy name:"
+msgstr "ឈ្មោះ​មិត្តភក្ដិ ៖"
+
+#. Create the "Pounce When Buddy..." frame.
+msgid "Pounce When Buddy..."
+msgstr "ដាក់​មិត្តភក្តិ​ជាក្រុម..."
+
+msgid "Signs on"
+msgstr "ចូល"
+
+msgid "Signs off"
+msgstr "ចេញទ"
+
+msgid "Goes away"
+msgstr "ចាកឆ្ងាយ"
+
+msgid "Returns from away"
+msgstr "ត្រឡប់​ពី​ការ​ចាកឆ្ងាយ"
+
+msgid "Becomes idle"
+msgstr "ក្លាយ​ជា​ទំនេរ"
+
+msgid "Is no longer idle"
+msgstr "លែង​ទំនេរ​ទៀត​ហើយ"
+
+msgid "Starts typing"
+msgstr "ចាប់ផ្ដើម​វាយ"
+
+msgid "Pauses while typing"
+msgstr "ផ្អាក​ខណៈពេល​វាយ"
+
+msgid "Stops typing"
+msgstr "ឈប់​វាយ"
+
+msgid "Sends a message"
+msgstr "ផ្ញើ​សារ"
+
+#. Create the "Action" frame.
+msgid "Action"
+msgstr "សកម្មភាពើ​"
+
+msgid "Open an IM window"
+msgstr "បើក​​បង្អួច IM"
+
+msgid "Pop up a notification"
+msgstr "កា​រជូនដំណឹង​ពេលលេចឡើង"
+
+msgid "Send a message"
+msgstr "ផ្ញើសារ"
+
+msgid "Execute a command"
+msgstr "ប្រតិបត្តិ​ពាក្យ​បញ្ជា"
+
+msgid "Play a sound"
+msgstr "ចាក់​សំឡេង"
+
+msgid "Pounce only when my status is not Available"
+msgstr "ដាក់​ក្រុម​នៅ​ពេល​ដែល​ស្ថានភាព​របស់​ខ្ញុំ​មិនអាច​ជជែកបាន"
+
+msgid "Recurring"
+msgstr "កើត​ឡើង​វិញ"
+
+msgid "Cannot create pounce"
+msgstr "មិនអាច​បង្កើត​ក្រុម​បានទេ"
+
+msgid "You do not have any accounts."
+msgstr "អ្នក​មិនមាន​គណនី​ទេ ។"
+
+msgid "You must create an account first before you can create a pounce."
+msgstr "អ្នក​ត្រូវតែ​បង្កើត​គណនី​​សិន​មុននឹង​អ្នកអាច​បង្កើត​ក្រុមបាន ។"
+
+#, c-format
+msgid "Are you sure you want to delete the pounce on %s for %s?"
+msgstr "តើ​អ្នក​ប្រាកដ​ជា​ចង់​លុប​ក្រុម​នៅ​លើ %s សម្រាប់ %s ឬ?"
+
+msgid "Buddy Pounces"
+msgstr "ក្រុមមិត្តភក្ដិ"
+
+#, c-format
+msgid "%s has started typing to you (%s)"
+msgstr "%s បាន​ចាប់ផ្ដើម​វាយ​ទៅ​ឲ្យអ្នក (%s)"
+
+#, c-format
+msgid "%s has paused while typing to you (%s)"
+msgstr "%s បាន​ផ្អាក ខណៈពេល​វាយ​ទៅ​ឲ្យ​អ្នក (%s)"
+
+#, c-format
+msgid "%s has signed on (%s)"
+msgstr "%s បាន​ចុះហត្ថលេខា​លើ (%s)"
+
+#, c-format
+msgid "%s has returned from being idle (%s)"
+msgstr "%s បាន​ត្រឡប់​ពី​ស្ថានភាព​ទំនេរ (%s)"
+
+#, c-format
+msgid "%s has returned from being away (%s)"
+msgstr "%s បាន​ត្រឡប់​ពី​ស្ថានភាព​ចាកឆ្ងាយ (%s)"
+
+#, c-format
+msgid "%s has stopped typing to you (%s)"
+msgstr "%s បាន​ឈប់​វាយ​ទៅ​ឲ្យ​អ្នក (%s)"
+
+#, c-format
+msgid "%s has signed off (%s)"
+msgstr "%s បាន​ចេញ (%s)"
+
+#, c-format
+msgid "%s has become idle (%s)"
+msgstr "%s បាន​ក្លាយ​ជា​ទំនេរ (%s)"
+
+#, c-format
+msgid "%s has gone away. (%s)"
+msgstr "%s មាន​ទៅ​ឆ្ងាយ ។ (%s)"
+
+#, c-format
+msgid "%s has sent you a message. (%s)"
+msgstr "%s បាន​ផ្ញើ​សារ​ឲ្យ​អ្នក ។ (%s)"
+
+#, c-format
+msgid "Unknown pounce event. Please report this!"
+msgstr "មិនស្គាល់​ព្រឹត្តិការណ៍​ក្រុម ។ សូម​រាយការណ៍​វា !"
+
+msgid "Based on keyboard use"
+msgstr "មាន​មូលដ្ឋាន​លើ​ការ​ប្រើ​ក្ដារចុច"
+
+msgid "From last sent message"
+msgstr "ពី​សារ​ដែល​បាន​ផ្ញើ​ចុងក្រោយ"
+
+msgid "Never"
+msgstr "មិនដែល"
+
+msgid "Show Idle Time"
+msgstr "បង្ហាញ​ពេល​ទំនេរ"
+
+msgid "Show Offline Buddies"
+msgstr "បង្ហាញមិត្តភក្ដិ​ដែល​នៅ​ក្រៅ​បណ្ដាញ"
+
+msgid "Notify buddies when you are typing"
+msgstr "ជូនដំណឹង​មិត្តភក្តិ​ នៅពេល​អ្នក​កំពុង​វាយ"
+
+msgid "Log format"
+msgstr "ទ្រង់ទ្រាយ​កំណត់ហេតុ"
+
+msgid "Log IMs"
+msgstr "ចុះកំណត់​ហេតុ IMs"
+
+msgid "Log chats"
+msgstr "ចុះ​កំណត់ហេតុ​ការ​ជជែក"
+
+msgid "Log status change events"
+msgstr "ចុះកំណត់ហេតុ​ព្រឹត្តិការណ៍​ផ្លាស់ប្ដូរ"
+
+msgid "Report Idle time"
+msgstr "រាយការណ៍​ពេលវេលា​ទំនេរ"
+
+msgid "Change status when idle"
+msgstr "ផ្លាស់ប្ដូរ​ស្ថានភាព​នៅពេល​ទំនេរ"
+
+msgid "Minutes before changing status"
+msgstr "ប៉ុន្មាននាទី​មុនពេល​ផ្លាស់ប្ដូរ​ស្ថានភាព"
+
+msgid "Change status to"
+msgstr "ផ្លាស់ប្ដូរ​ស្ថានភាព​ទៅជា"
+
+msgid "Conversations"
+msgstr "កា​រសន្ទនា"
+
+msgid "Logging"
+msgstr "ចុះកំណត់ហេតុ"
+
+msgid "You must fill all the required fields."
+msgstr "អ្នកត្រូវតែ​បំពេញ​វាល​ដែល​ត្រូវការ​ទាំង​អស់ ។"
+
+msgid "The required fields are underlined."
+msgstr "វាល​ដែល​ត្រូវការ​ត្រូវ​បានគូស​បន្ទាត់​ខាង​ក្រោម ។"
+
+msgid "Not implemented yet."
+msgstr "មិន​បាន​អនុវត្ត​នៅ​ឡើយ​ទេ ។"
+
+msgid "Save File..."
+msgstr "រក្សា​​ទុក​ឯកសារ..."
+
+msgid "Open File..."
+msgstr "បើក​ឯកសារ..."
+
+msgid "Choose Location..."
+msgstr "ជ្រើស​ទីតាំង..."
+
+msgid "Hit 'Enter' to find more rooms of this category."
+msgstr "ចុច​គ្រាប់ចុច 'បញ្ចូល (Enter)' ដើម្បី​រក​បន្ទប់​ផ្សេងៗ​ទៀត​នៃ​ប្រភេទ​នេះ ។"
+
+msgid "Get"
+msgstr "យក"
+
+#. Create the window.
+msgid "Room List"
+msgstr "បញ្ជី​បន្ទប់"
+
+msgid "Buddy logs in"
+msgstr "មិត្តភក្ដិ​ចូល"
+
+msgid "Buddy logs out"
+msgstr "មិត្តភក្ដិ​ចេញ"
+
+msgid "Message received"
+msgstr "បាន​ទទួល​សារ"
+
+msgid "Message received begins conversation"
+msgstr "បាន​ទទួលសារ​​ចាប់ផ្ដើម​សន្ទនា"
+
+msgid "Message sent"
+msgstr "បាន​ផ្ញើសារ"
+
+msgid "Person enters chat"
+msgstr "មនុស្ស​ចូល​ក្នុងកា​រជជែក"
+
+msgid "Person leaves chat"
+msgstr "មនុស្ស​ចេញ​ពីការ​ជជែក"
+
+msgid "You talk in chat"
+msgstr "អ្នក​និយាយ​នៅ​ក្នុងការ​ជជែក"
+
+msgid "Others talk in chat"
+msgstr "អ្នកផ្សេង​និយាយ​នៅ​ក្នុង​ការ​ជជែក"
+
+msgid "Someone says your username in chat"
+msgstr "មាន​មនុស្ស​ម្នាក់​និយាយ​អំពី​ឈ្មោះអ្នកប្រើ​របស់​អ្នក​នៅ​ក្នុង​ការជជែក"
+
+msgid "GStreamer Failure"
+msgstr "ភាព​បរាជ័យ​របស់ GStreamer"
+
+msgid "GStreamer failed to initialize."
+msgstr "GStreamer បានបរាជ័យ​ក្នុងការ​ចាប់ផ្ដើម ។"
+
+msgid "(default)"
+msgstr "(លំនាំដើម)"
+
+msgid "Select Sound File ..."
+msgstr "ជ្រើស​ឯកសារ​សំឡេង..."
+
+msgid "Sound Preferences"
+msgstr "ចំណូល​ចិត្ត​សំឡេង"
+
+msgid "Profiles"
+msgstr "ទម្រង់"
+
+msgid "Automatic"
+msgstr "ស្វ័យ​​​ប្រវត្តិ"
+
+msgid "Console Beep"
+msgstr "ប៊ីប​កុងសូល"
+
+msgid "Command"
+msgstr "ពាក្យ​​​បញ្ជា​"
+
+msgid "No Sound"
+msgstr "គ្មាន​សំឡេង"
+
+msgid "Sound Method"
+msgstr "វិធីសាស្ត្រ​សំឡេង"
+
+msgid "Method: "
+msgstr "វិធីសាស្ត្រ ៖ "
+
+#, c-format
+msgid ""
+"Sound Command\n"
+"(%s for filename)"
+msgstr ""
+"ពាក្យ​សំឡេង\n"
+"(%s សម្រាប់​ឈ្មោះ​ឯកសារ)"
+
+#. Sound options
+msgid "Sound Options"
+msgstr "ជម្រើស​សំឡេង"
+
+msgid "Sounds when conversation has focus"
+msgstr "សំឡេង នៅពេល​ការ​សន្ទនា​មានការ​ផ្ដោត​"
+
+msgid "Always"
+msgstr "ជានិច្ច"
+
+msgid "Only when available"
+msgstr "តែ​នៅពេលប្រើបាន"
+
+msgid "Only when not available"
+msgstr "តែ​នៅពេល​មិនអាច​ប្រើបាន"
+
+msgid "Volume(0-100):"
+msgstr "កម្រិត​សំឡេង (១-១០០) ៖"
+
+#. Sound events
+msgid "Sound Events"
+msgstr "ព្រឹត្តិការណ៍​សំឡេង"
+
+msgid "Event"
+msgstr "ព្រឹត្តិការណ៍"
+
+msgid "File"
+msgstr "ឯកសារ"
+
+msgid "Test"
+msgstr "សាកល្បង"
+
+msgid "Reset"
+msgstr "កំណត់​ឡើង​វិញ"
+
+msgid "Choose..."
+msgstr "ជ្រើស..."
+
+#, c-format
+msgid "Are you sure you want to delete \"%s\""
+msgstr "តើ​អ្នក​ប្រាកដ​ជា​ចង់​លុប \"%s\" ឬ"
+
+msgid "Delete Status"
+msgstr "លុប​ស្ថានភាព"
+
+msgid "Saved Statuses"
+msgstr "ស្ថានភាព​ដែល​បាន​រក្សាទុក"
+
+msgid "Title"
+msgstr "ចំណង​ជើង"
+
+msgid "Type"
+msgstr "ប្រភេទ"
+
+#. Statuses are almost all the same. Define a macro to reduce code repetition.
+#. PurpleStatusPrimitive
+#. id - use default
+#. name - use default
+#. saveable
+#. user_settable
+#. not independent
+#. Attributes - each status can have a message.
+msgid "Message"
+msgstr "សារ"
+
+#. Use
+msgid "Use"
+msgstr "ប្រើ"
+
+msgid "Invalid title"
+msgstr "ចំណង​ជើង​មិនត្រឹមត្រូវ"
+
+msgid "Please enter a non-empty title for the status."
+msgstr "សូម​បញ្ចូល​ចំណង​ជើង​ដែល​​​សម្រាប់ស្ថានភាព ។"
+
+msgid "Duplicate title"
+msgstr "ស្ទួន​ចំណង​ជើង"
+
+msgid "Please enter a different title for the status."
+msgstr "សូម​បញ្ចូល​ចំណង​ជើង​ផ្សេង​សម្រាប់​ស្ថានភាព ។"
+
+msgid "Substatus"
+msgstr "ស្ថានភាព​រង"
+
+msgid "Status:"
+msgstr "ស្ថាន​ភាព ៖"
+
+msgid "Message:"
+msgstr "សារ ៖"
+
+msgid "Edit Status"
+msgstr "កែ​សម្រួល​ស្ថានភាព"
+
+msgid "Use different status for following accounts"
+msgstr "ប្រើ​ស្ថានភាព​ផ្សេង​សម្រាប់​គណនី​ដូច​ខាង​ក្រោម"
+
+#. Save & Use
+msgid "Save & Use"
+msgstr "រក្សាទុក​​កា​រប្រើើ"
+
+msgid "Certificates"
+msgstr "វិញ្ញាបនបត្រ"
+
+msgid "Sounds"
+msgstr "សំឡេង"
+
+msgid "Statuses"
+msgstr "ស្ថានភាព"
+
+msgid "Error loading the plugin."
+msgstr "កំហុស​ក្នុងកា​រផ្ទុក​កម្មវិធី​ជំនួយ ។"
+
+msgid "Couldn't find X display"
+msgstr "មិនអាច​រក​ការ​បង្ហាញ X"
+
+msgid "Couldn't find window"
+msgstr "មិនអាច​​រក​បង្អួច"
+
+msgid "This plugin cannot be loaded because it was not built with X11 support."
+msgstr "កម្មវិធី​ជំនួយ​នេះ​មិនអាច​ត្រូ​វបានផ្ទុក​ទេ ពីព្រោះវា​មិន​ត្រូវ​បាន​ស្ថានបនា​​ដោយ​មានការគាំទ្រ X11 ។"
+
+msgid "GntClipboard"
+msgstr "GntClipboard"
+
+msgid "Clipboard plugin"
+msgstr "កម្មវិធី​ជំនួយការតម្បៀតខ្ទាស់"
+
+msgid ""
+"When the gnt clipboard contents change, the contents are made available to "
+"X, if possible."
+msgstr "នៅពេល​ផ្លាស់ប្ដូរ​មាតិកា​ក្តារតម្បៀតខ្ទាស់ gnt មាតិកា​អាច​ប្រើបាន​ចំពោះX ប្រសិន​បើ​អាច ។"
+
+#, c-format
+msgid "%s just signed on"
+msgstr "%s ទើប​តែ​ចូល"
+
+#, c-format
+msgid "%s just signed off"
+msgstr "%s ទើបតែ​ចេញ"
+
+#, c-format
+msgid "%s sent you a message"
+msgstr "%s បាន​ផ្ញើសារ​ឲ្យ​អ្នក"
+
+#, c-format
+msgid "%s said your nick in %s"
+msgstr "%s បាន​និយាយ​សម្មតិនាម​របស់​អ្នក​នៅ​ក្នុង %s"
+
+#, c-format
+msgid "%s sent a message in %s"
+msgstr "%s បាន​ផ្ញើសារ​នៅ​ក្នុង %s"
+
+msgid "Buddy signs on/off"
+msgstr "មិត្តិភក្តិ​បិទ/បើក"
+
+msgid "You receive an IM"
+msgstr "អ្នក​ទទួល​ IM"
+
+msgid "Someone speaks in a chat"
+msgstr "មនុស្ស​ម្នាក់​និយាយ​នៅ​ក្នុងការ​ជជែក"
+
+msgid "Someone says your name in a chat"
+msgstr "មនុស្ស​ម្នាក់​និយាយ​ឈ្មោះ​របស់​អ្នក​នៅ​ក្នុងការ​ជជែក"
+
+msgid "Notify with a toaster when"
+msgstr "ជូន​ដំណឹង​ដោយ​សញ្ញា​​នៅ​ពេល"
+
+msgid "Beep too!"
+msgstr "ប៊ីប​ដែរ !"
+
+msgid "Set URGENT for the terminal window."
+msgstr "កំណត់​ជា​បន្ទាន់ សម្រាប់​បង្អួច​ស្ថានីយ ។"
+
+msgid "GntGf"
+msgstr "GntGf"
+
+msgid "Toaster plugin"
+msgstr "កម្មវិធី​ជំនួយ Toaster"
+
+#, c-format
+msgid "<b>Conversation with %s on %s:</b><br>"
+msgstr "<b>ការ​សន្ទនា​ជា​មួយ %s នៅ​លើ %s ៖</b><br>"
+
+msgid "History Plugin Requires Logging"
+msgstr "កម្មវិធី​ជំនួយ​ប្រវត្តិ​តម្រូវ​ឲ្យ​ចូល​សិន"
+
+msgid ""
+"Logging can be enabled from Tools -> Preferences -> Logging.\n"
+"\n"
+"Enabling logs for instant messages and/or chats will activate history for "
+"the same conversation type(s)."
+msgstr ""
+"ការ​ចូល​អាច​ត្រូ​វបាន​បើកតាមរយៈ​ម៉ឺនុយ ឧបករណ៍ -> ចំណូល​ចិត្ត -> ការ​ចូល ។\n"
+"\n"
+"ការ​បើក​កំណត់​ហេតុ​សម្រាប់​សារ​បន្ទាន់ និង​/ឬ​កា​រជជែក​នឹង​ធ្វើ​ឲ្យ​ប្រវត្តិ​សកម្ម​សម្រាប់​ប្រភេទ​ការ​សន្ទនា​"
+"ដូចគ្នា ។"
+
+msgid "GntHistory"
+msgstr "GntHistory"
+
+msgid "Shows recently logged conversations in new conversations."
+msgstr "បង្ហាញ​កា​រសន្ទនា​ដែល​បាន​ចូល​បច្ចុប្បន្ន​នៅ​ក្នុងការ​សន្ទនា​ថ្មី ។"
+
+msgid ""
+"When a new conversation is opened this plugin will insert the last "
+"conversation into the current conversation."
+msgstr ""
+"នៅពេល​ការ​សន្ទនា​ថ្មី​ត្រូវ​បានបើក កម្មវិធី​ជំនួយ​នេះ​នឹង​បញ្ចូល​ការ​សន្ទនា​ចុងក្រោយ​ទៅ​ក្នុង​ការ​សន្ទនា​"
+"បច្ចុប្បន្ន ។"
+
+msgid "Online"
+msgstr "លើ​បណ្ដាញ"
+
+msgid "Offline"
+msgstr "ក្រៅ​បណ្តាញ"
+
+msgid "Online Buddies"
+msgstr "មិត្តភក្ដិ​លើបណ្ដាញ"
+
+msgid "Offline Buddies"
+msgstr "មិត្តភក្ដិ​ក្រៅ​បណ្តាញ"
+
+msgid "Online/Offline"
+msgstr "លើ​បណ្ដាញ/ក្រៅ​បណ្ដាញ"
+
+msgid "Meebo"
+msgstr "Meebo"
+
+msgid "No Grouping"
+msgstr "គ្មាន​ការ​ដាក់​ជា​ក្រុម"
+
+msgid "Nested Subgroup"
+msgstr "ក្រុម​រង​ខាង​ក្នុង"
+
+msgid "Nested Grouping (experimental)"
+msgstr "ការ​ដាក់​ជា​ក្រុម​ខាង​ក្នុង (ពិសោធន៍)"
+
+msgid "Provides alternate buddylist grouping options."
+msgstr "ផ្ដល់​នូវ​ជម្រើស​ដាក់​ជា​ក្រុម​នូវ​បញ្ជី​មិត្តភក្ដិ​​ជំនួស ។"
+
+msgid "Lastlog"
+msgstr "កំណត់ហេតុ​ចុងក្រោយ"
+
+#. Translator Note: The "backlog" is the conversation buffer/history.
+msgid "lastlog: Searches for a substring in the backlog."
+msgstr "កំណត់​ហេតុ​ចុងក្រោយ ៖ ស្វែងរក​ខ្សែអក្សរ​រង​នៅ​ក្នុង​កំណត់ហេតុ​ខ្មៅ ។"
+
+msgid "GntLastlog"
+msgstr "GntLastlog"
+
+msgid "Lastlog plugin."
+msgstr "កម្មវិធី​ជំនួយ​កំណត់ហេតុ​ចុងក្រោយ ។"
+
+msgid "accounts"
+msgstr "គណនី"
+
+msgid "Password is required to sign on."
+msgstr "ត្រូវការ​ពាក្យ​សម្ងាត់​ដើម្បី​ចូល ។"
+
+#, c-format
+msgid "Enter password for %s (%s)"
+msgstr "បញ្ចូល​ពាក្យ​សម្ងាត់​សម្រាប់ %s (%s)"
+
+msgid "Enter Password"
+msgstr "បញ្ចូល​ពាក្យ​សម្ងាត់"
+
+msgid "Save password"
+msgstr "រក្សា​​ទុក​​​ពាក្យ​​​សម្ងាត់"
+
+#, c-format
+msgid "Missing protocol plugin for %s"
+msgstr "កម្មវិធី​ជំនួយ​ពិធីការ​​ដែល​បាត់​សម្រាប់ %s"
+
+msgid "Connection Error"
+msgstr "កំហុស​ក្នុងការ​តភ្ជាប់"
+
+msgid "New passwords do not match."
+msgstr "ពាក្យ​សម្ងាត់​ថ្មី​មិនផ្គូផ្គង​ទេ ។"
+
+msgid "Fill out all fields completely."
+msgstr "បំពេញ​វាល​ទាំងអស់​ឲ្យ​ចប់ ។"
+
+msgid "Original password"
+msgstr "ពាក្យ​សម្ងាត់​ដើម"
+
+msgid "New password"
+msgstr "ពាក្យ​សម្ងាត់​ថ្មី"
+
+msgid "New password (again)"
+msgstr "ពាក្យ​សម្ងាត់​ថ្មី (ថ្មី)"
+
+#, c-format
+msgid "Change password for %s"
+msgstr "ផ្លាស់ប្ដូរ​ពាក្យ​សម្ងាត់ %s"
+
+msgid "Please enter your current password and your new password."
+msgstr "សូម​បញ្ចូល​ពាក្យ​សម្ងាត់​​បច្ចុប្បន្ន​របស់​អ្នក និង​ពាក្យ​សម្ងាត់​ថ្មី​របស់​អ្នក ។"
+
+#, c-format
+msgid "Change user information for %s"
+msgstr "ផ្លាស់ប្ដូរ​ព័ត៌មាន​អ្នក​ប្រើ​សម្រាប់ %s"
+
+msgid "Set User Info"
+msgstr "កំណត់​ព័ត៌មាន​អ្នក​ប្រើ"
+
+msgid "Unknown"
+msgstr "មិន​ស្គាល់"
+
+msgid "Buddies"
+msgstr "មិត្តភក្ដិ"
+
+msgid "buddy list"
+msgstr "បញ្ជី​មិត្តភក្ដិ"
+
+msgid "(DOES NOT MATCH)"
+msgstr "(មិន​ផ្គូផ្គង)"
+
+#. Make messages
+#, c-format
+msgid "%s has presented the following certificate for just-this-once use:"
+msgstr "%s បាន​បង្ហាញ​វិញ្ញាបនបត្រ​សម្រាប់​ការ​ប្រើ​តែ​ម្ដង​នេះ ៖"
+
+#, c-format
+msgid ""
+"Common name: %s %s\n"
+"Fingerprint (SHA1): %s"
+msgstr ""
+"ឈ្មោះ​ធម្មតា ៖ %s %s\n"
+"ស្នាម​ម្រាមដៃ (SHA1) ៖ %s"
+
+#. TODO: Find what the handle ought to be
+msgid "Single-use Certificate Verification"
+msgstr "ការ​ផ្ទៀងផ្ទាត់​វិញ្ញាបនបត្រ​ដែល​ប្រើ​តែ​ម្ដង"
+
+#. Scheme name
+#. Pool name
+msgid "Certificate Authorities"
+msgstr "អាជ្ញាធរ​វិញ្ញាបនបត្រ"
+
+#. Scheme name
+#. Pool name
+msgid "SSL Peers Cache"
+msgstr "ឃ្លាំងសម្ងាត់​គូរ SSL"
+
+#. Make messages
+#, c-format
+msgid "Accept certificate for %s?"
+msgstr "ទទួល​វិញ្ញាបនបត្រ​សម្រាប់ %s?"
+
+#. TODO: Find what the handle ought to be
+msgid "SSL Certificate Verification"
+msgstr "កា​រផ្ទៀងផ្ទាត់​វិញ្ញាបនបត្រ SSL"
+
+#. Number of actions
+msgid "Accept"
+msgstr "ទទួលរម​"
+
+msgid "Reject"
+msgstr "ច្រានចោលល"
+
+msgid "_View Certificate..."
+msgstr "មើល​វិញ្ញាបនបត្រ..."
+
+#. Prompt the user to authenticate the certificate
+#. vrq will be completed by user_auth
+#, c-format
+msgid ""
+"The certificate presented by \"%s\" is self-signed. It cannot be "
+"automatically checked."
+msgstr ""
+"វិញ្ញាបនបត្រ​បានបង្ហាញ \"%s\" ត្រូវ​បាន​ចុះហត្ថលេខា​ដោយ​ខ្លួន​ឯង ។ វា​​មិនអាច​ត្រូវ​បាន​ត្រួតពិនិត្យ​ដោយ​ស្វ័យ​"
+"ប្រវត្តិ​ទេ ។"
+
+#, c-format
+msgid "The certificate chain presented for %s is not valid."
+msgstr "ច្រវាក់​វិញ្ញាបនបត្រ​បានបង្ហាញ​សម្រាប់ %s មិន​ត្រឹមត្រូវ​ទេ ។"
+
+#. TODO: Make this error either block the ensuing SSL
+#. connection error until the user dismisses this one, or
+#. stifle it.
+#. TODO: Probably wrong.
+#. TODO: Probably wrong
+msgid "SSL Certificate Error"
+msgstr "កំហុស​វិញ្ញាបនបត្រ SSL"
+
+msgid "Invalid certificate chain"
+msgstr "ច្រវាក់​វិញ្ញាបនបត្រ​មិន​ត្រឹមត្រូវ​ទេ"
+
+#. vrq will be completed by user_auth
+msgid ""
+"You have no database of root certificates, so this certificate cannot be "
+"validated."
+msgstr ""
+"អ្នក​មិនមានមូលដ្ឋាន​ទិន្នន័យ​សម្រាប់​វិញ្ញាបនបត្រ root ទេ ដូច្នេះ​វិញ្ញាបនបត្រ​នេះ​មិន​អាច​ត្រូវ​"
+"បានផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ទេ ។"
+
+#. vrq will be completed by user_auth
+msgid ""
+"The root certificate this one claims to be issued by is unknown to Pidgin."
+msgstr "វិញ្ញាបនបត្រ root មួយនេះ​ទាមទារ​ឲ្យ​ចេញផ្សាយ​ដោយ​អ្នក​ស្គាល់​ទៅ Pidgin ។"
+
+#, c-format
+msgid ""
+"The certificate chain presented by %s does not have a valid digital "
+"signature from the Certificate Authority from which it claims to have a "
+"signature."
+msgstr ""
+"ច្រវាក់​វិញ្ញាបនបត្រ​បានបង្ហាញ​ដោយ %s មិនមាន​ហត្ថលេខា​ឌីជីថល​ត្រឹមត្រូវទេ​ពី​អាជ្ញាធរ​វិញ្ញាបនបត្រ ដែល​វា​"
+"ទាមទារ​ឲ្យ​មាន​ហត្ថលេខា ។"
+
+msgid "Invalid certificate authority signature"
+msgstr "ហត្ថលេខា​អាជ្ញាធរ​វិញ្ញាបនបត្រ​មិន​ត្រឹមត្រូវ"
+
+#. Prompt the user to authenticate the certificate
+#. TODO: Provide the user with more guidance about why he is
+#. being prompted
+#. vrq will be completed by user_auth
+#, c-format
+msgid ""
+"The certificate presented by \"%s\" claims to be from \"%s\" instead. This "
+"could mean that you are not connecting to the service you believe you are."
+msgstr ""
+"វិញ្ញាបនបត្រ​បានបង្ហាញ​ដោយ \"%s\" ដែល​ទាមទារ​ពី \"%s\" ជំនួស​វិញ ។ វា​អាច​មានន័យ​ថា អ្នក​មិនបាន​"
+"តភ្ជាប់​ទៅ​កាន់សេវា​ដែល​អ្នក​ជឿជាក់ ។"
+
+#. Make messages
+#, c-format
+msgid ""
+"Common name: %s\n"
+"\n"
+"Fingerprint (SHA1): %s\n"
+"\n"
+"Activation date: %s\n"
+"Expiration date: %s\n"
+msgstr ""
+"ឈ្មោះ​​ធម្មតា ៖ %s\n"
+"\n"
+"ស្នាមម្រាមដៃ (SHA1) ៖ %s\n"
+"\n"
+"កាលបរិច្ឆេទ​ធ្វើ​ឲ្យ​សកម្ម ៖ %s\n"
+"កាលបរិច្ឆេទ​ផុត​កំណត់ ៖ %s\n"
+
+#. TODO: Find what the handle ought to be
+msgid "Certificate Information"
+msgstr "ព័ត៌មាន​វិញ្ញាបនបត្រ"
+
+msgid "Registration Error"
+msgstr "កំហុស​ក្នុងកា​រចុះឈ្មោះ"
+
+msgid "Unregistration Error"
+msgstr "កំហុស​ក្នុងការ​មិនចុះឈ្មោះ"
+
+#, c-format
+msgid "+++ %s signed on"
+msgstr "+++ %s បាន​ចូល"
+
+#, c-format
+msgid "+++ %s signed off"
+msgstr "+++ %s បានបិទ"
+
+msgid "Unknown error"
+msgstr "មិនស្គាល់​កំហុស"
+
+msgid "Unable to send message: The message is too large."
+msgstr "មិន​អាច​ផ្ញើសារ​បានទេ ៖ សារ​ធំពេក ។"
+
+#, c-format
+msgid "Unable to send message to %s."
+msgstr "មិន​អាច​ផ្ញើ​សារ​ទៅ​កាន់ %s ។"
+
+msgid "The message is too large."
+msgstr "សារ​ធំពេក ។"
+
+msgid "Unable to send message."
+msgstr "មិនអាច​ផ្ញើ​សារ​បានទេ ។"
+
+msgid "Send Message"
+msgstr "ផ្ញើសារ"
+
+msgid "_Send Message"
+msgstr "ផ្ញើ​សារ"
+
+#, c-format
+msgid "%s entered the room."
+msgstr "%s បាន​ចូល​ក្នុង​បន្ទប់ ។"
+
+#, c-format
+msgid "%s [<I>%s</I>] entered the room."
+msgstr "%s [<I>%s</I>] បាន​ចូល​ក្នុង​បន្ទប់ ។"
+
+#, c-format
+msgid "You are now known as %s"
+msgstr "ឥឡូវ​អ្នក​ត្រូវ​បាន​ស្គាល់​ជា %s"
+
+#, c-format
+msgid "%s is now known as %s"
+msgstr "%s ឥឡូវ​ត្រូវ​បាន​ស្គាល់​ជា %s"
+
+#, c-format
+msgid "%s left the room."
+msgstr "%s បាន​ចេញ​ពី​បន្ទប់ ។"
+
+#, c-format
+msgid "%s left the room (%s)."
+msgstr "%s បាន​ចេញ​ពី​បន្ទប់ (%s) ។"
+
+#, c-format
+msgid "Failed to get connection: %s"
+msgstr "បានបរាជ័យ​ក្នុងការ​តភ្ជាប់ ៖ %s"
+
+#, c-format
+msgid "Failed to get name: %s"
+msgstr "បានបរាជ័យ​ក្នុងការ​ទទួល​ឈ្មោះ ៖ %s"
+
+#, c-format
+msgid "Failed to get serv name: %s"
+msgstr "បាន​បរាជ័យ​ក្នុងការ​​បម្រុង​ទុក​ឈ្មោះ ៖ %s"
+
+msgid "Purple's D-BUS server is not running for the reason listed below"
+msgstr "ម៉ាស៊ីនបម្រើ D-BUS របស់ Purple មិន​កំពុង​រត់​ទេ​ ចំពោះ​ហេតុផល​រាយ​នៅ​ខាង​ក្រោម"
+
+msgid "No name"
+msgstr "គ្មាន​ឈ្មោះ"
+
+msgid "Unable to create new resolver process\n"
+msgstr "មិនអាច​បង្កើត​ដំណើរការ​របស់​កម្មវិធី​ដោះស្រាយ​ថ្មី​បាន​ទេ\n"
+
+msgid "Unable to send request to resolver process\n"
+msgstr "មិន​អាច​ផ្ញើ​សំណើ​ទៅកាន់​ដំណើរការ​កម្មវិធី​ដោះស្រាយ​\n"
+
+#, c-format
+msgid ""
+"Error resolving %s:\n"
+"%s"
+msgstr ""
+"កំហុស​ក្នុងការ​ដោះស្រាយ %s ៖\n"
+"%s"
+
+#, c-format
+msgid "Error resolving %s: %d"
+msgstr "កំហុស​ក្នុងការ​ដោះស្រាយ %s ៖ %d"
+
+#, c-format
+msgid ""
+"Error reading from resolver process:\n"
+"%s"
+msgstr ""
+"កំហុស​ក្នុងការ​អាន​ពី​ដំណើរការ​កម្មវិធីដោះស្រាយ ៖\n"
+"%s"
+
+#, c-format
+msgid "Resolver process exited without answering our request"
+msgstr "ដំណើរការ​របស់​កម្មវិធី​ដោះស្រាយ​បានចេញ ដោយ​មិនបាន​ឆ្លើយ​សំណើ​របស់​ពួកយើង​ទេ"
+
+#, c-format
+msgid "Thread creation failure: %s"
+msgstr "បានបរាជ័យ​ក្នុងការ​បង្កើត​ខ្សែស្រឡាយ ៖ %s"
+
+msgid "Unknown reason"
+msgstr "មិនស្គាល់​ហេតុផល"
+
+#, c-format
+msgid ""
+"Error reading %s: \n"
+"%s.\n"
+msgstr ""
+"កំហុស​ក្នុងការ​អាន %s ៖ \n"
+"%s.\n"
+
+#, c-format
+msgid ""
+"Error writing %s: \n"
+"%s.\n"
+msgstr ""
+"កំហុស​ក្នុងការ​សរសេរ %s ៖ \n"
+"%s.\n"
+
+#, c-format
+msgid ""
+"Error accessing %s: \n"
+"%s.\n"
+msgstr ""
+"កំហុស​ក្នុងការ​ចូលដំណើរការ %s ៖ \n"
+"%s.\n"
+
+msgid "Directory is not writable."
+msgstr "ថត​មិនអាច​សរសេរ​បានទេ ។"
+
+msgid "Cannot send a file of 0 bytes."
+msgstr "មិនអាច​ផ្ញើ​ឯកសារ​ប្រភេទ​សូន្យ​បានទេ ។"
+
+msgid "Cannot send a directory."
+msgstr "មិនអាច​ផ្ញើ​ថត​បាន​ទេ ។"
+
+#, c-format
+msgid "%s is not a regular file. Cowardly refusing to overwrite it.\n"
+msgstr "%s មិន​មែន​ជា​ឯកសារ​ធម្មតា ។ ដោយ​កំសាក​បដិសេធ​​ក្នុងការ​សរសេរ​ជាន់​លើ​វា ។\n"
+
+#, c-format
+msgid "%s wants to send you %s (%s)"
+msgstr "%s ចង់​ផ្ញើ​ឲ្យ​អ្នក %s (%s)"
+
+#, c-format
+msgid "%s wants to send you a file"
+msgstr "%s ចង់​ផ្ញើ​ឯកសារ​ឲ្យ​អ្នក"
+
+#, c-format
+msgid "Accept file transfer request from %s?"
+msgstr "ទទួល​យក​សំណើ​ផ្ទេរ​ឯកសារ​ពី %s?"
+
+#, c-format
+msgid ""
+"A file is available for download from:\n"
+"Remote host: %s\n"
+"Remote port: %d"
+msgstr ""
+"មាន​ឯកសារ​សម្រាប់​ទាញយក​ពី ៖\n"
+"ម៉ាស៊ីន​ពី​ចម្ងាយ ៖ %s\n"
+"ច្រក​ពី​ចម្ងាយ ៖ %d"
+
+#, c-format
+msgid "%s is offering to send file %s"
+msgstr "%s កំពុង​ផ្ដល់​ដើម្បី​ផ្ញើ​ឯកសារ %s"
+
+#, c-format
+msgid "%s is not a valid filename.\n"
+msgstr "%s មិនមែន​ជា​ឈ្មោះ​ឯកសារ​ត្រឹមត្រូវ​ទេ ។\n"
+
+#, c-format
+msgid "Offering to send %s to %s"
+msgstr "ផ្ដល់​ដើម្បី​ផ្ញើ %s ទៅឲ្យ %s"
+
+#, c-format
+msgid "Starting transfer of %s from %s"
+msgstr "ចាប់ផ្ដើម​ផ្ទេរ %s ពី %s"
+
+#, c-format
+msgid "Transfer of file %s complete"
+msgstr "ផ្ទេរ​ឯកសារ %s ចប់​ហើយ"
+
+msgid "File transfer complete"
+msgstr "ការ​ផ្ទេរ​ឯកសារ​ចប់ហើយ"
+
+#, c-format
+msgid "You canceled the transfer of %s"
+msgstr "អ្នក​បានបោះបង់​ការ​ផ្ទេរ %s"
+
+msgid "File transfer cancelled"
+msgstr "បាន​បោះបង់​ការ​ផ្ទេរ​ឯកសារ"
+
+#, c-format
+msgid "%s canceled the transfer of %s"
+msgstr "%s បានបោះបង់​ការ​ផ្ទេរ %s"
+
+#, c-format
+msgid "%s canceled the file transfer"
+msgstr "%s បាន​បោះបង់​ការ​ផ្ទេរ​ឯកសារ"
+
+#, c-format
+msgid "File transfer to %s failed."
+msgstr "បាន​បរាជ័យ​ក្នុងកា​រផ្ទេរ​ទៅ​កាន់ %s ។"
+
+#, c-format
+msgid "File transfer from %s failed."
+msgstr "បាន​បរាជ័យ​ក្នុងការ​ផ្ទេរ​ពី %s ។"
+
+msgid "Run the command in a terminal"
+msgstr "រត់​ពាក្យ​បញ្ជា​នៅ​ក្នុង​ស្ថានីយ"
+
+msgid "The command used to handle \"aim\" URLs, if enabled."
+msgstr "ពាក្យ​បញ្ជា​បានប្រើ​ដើម្បី​គ្រប់គ្រង \"aim\" URLs ប្រសិន​បើ​បាន​បើក ។"
+
+msgid "The command used to handle \"gg\" URLs, if enabled."
+msgstr "ពាក្យ​បញ្ជា​បាន​ប្រើ​​ដើម្បី​គ្រប់គ្រង \"gg\" URLs ប្រសិនបើ​បាន​បើក ។"
+
+msgid "The command used to handle \"icq\" URLs, if enabled."
+msgstr "ពាក្យ​បញ្ជា​បាន​ប្រើ​ដើម្បី​គ្រប់គ្រង \"icq\" URLs ប្រសិន​បើ​បាន​បើក ។"
+
+msgid "The command used to handle \"irc\" URLs, if enabled."
+msgstr "ពាក្យ​បញ្ជា​បាន​ប្រើ​ដើម្បី​គ្រប់គ្រង \"irc\" URLs ប្រសិន​បើ​បានបើក ។"
+
+msgid "The command used to handle \"msnim\" URLs, if enabled."
+msgstr "ពាក្យ​បញ្ជា​បានប្រើ​ដើម្បី​គ្រប់គ្រង \"msnim\" URLs ប្រសិន​បើ​បានបើក ។"
+
+msgid "The command used to handle \"sip\" URLs, if enabled."
+msgstr "ពាក្យ​បញ្ជា​បានប្រើ​ដើម្បី​គ្រប់គ្រង \"sip\" URLs ប្រសិនបើ​បានបើក ។"
+
+msgid "The command used to handle \"xmpp\" URLs, if enabled."
+msgstr "ពាក្យ​បញ្ជា​បាន​ប្រើ​ដើម្បី​គ្រប់គ្រង \"xmpp\" URLs ប្រសិន​បើ​បានបើក ។"
+
+msgid "The command used to handle \"ymsgr\" URLs, if enabled."
+msgstr "ពាក្យ​បញ្ជា​បានប្រើ​ដើម្បី​គ្រប់គ្រង \"ymsgr\" URLs ប្រសិន​បើ​បានបើក ។"
+
+msgid "The handler for \"aim\" URLs"
+msgstr "កម្មវិធី​គ្រប់គ្រង​សម្រាប់ URLs \"aim\""
+
+msgid "The handler for \"gg\" URLs"
+msgstr "កម្មវិធី​គ្រប់គ្រ​ងសម្រាប់ URLs \"gg\""
+
+msgid "The handler for \"icq\" URLs"
+msgstr "កម្មវិធី​គ្រប់គ្រង​សម្រាប់ URLs \"icq\""
+
+msgid "The handler for \"irc\" URLs"
+msgstr "កម្មវិធី​គ្រប់គ្រង​សម្រាប់ URLs \"irc\""
+
+msgid "The handler for \"msnim\" URLs"
+msgstr "កម្មវិធី​គ្រប់គ្រង​សម្រាប់ URLs \"msnim\""
+
+msgid "The handler for \"sip\" URLs"
+msgstr "កម្ម​វិធី​គ្រប់គ្រង​សម្រាប់ URLs \"sip\""
+
+msgid "The handler for \"xmpp\" URLs"
+msgstr "កម្មវិធី​គ្រប់គ្រង​សម្រាប់ URLs \"xmpp\""
+
+msgid "The handler for \"ymsgr\" URLs"
+msgstr "កម្មវិធី​គ្រប់គ្រង​សម្រាប់ URLs \"ymsgr\""
+
+msgid ""
+"True if the command specified in the \"command\" key should handle \"aim\" "
+"URLs."
+msgstr "ពិត ប្រសិនបើ​ពាក្យ​បញ្ជា​បានបញ្ជាក់​នៅ​​​គ្រាប់ចុច \"ពាក្យ​បញ្ជា\" គួរ​គ្រប់គ្រង URLs \"aim\" ។"
+
+msgid ""
+"True if the command specified in the \"command\" key should handle \"gg\" "
+"URLs."
+msgstr "ពិត ប្រសិនបើ​ពាក្យ​បញ្ជា​បាន​បញ្ជាក់​នៅ​​គ្រាប់ចុច \"ពាក្យ​បញ្ជា\" គួរ​គ្រប់គ្រង URLs \"gg\" ។"
+
+msgid ""
+"True if the command specified in the \"command\" key should handle \"icq\" "
+"URLs."
+msgstr "ពិត ប្រសិនបើ​ពាក្យ​បញ្ជា​បាន​បញ្ជាក់​នៅ​​គ្រាប់ចុច \"ពាក្យ​បញ្ជា\" គួរ​គ្រប់គ្រង URLs \"icq\" ។"
+
+msgid ""
+"True if the command specified in the \"command\" key should handle \"irc\" "
+"URLs."
+msgstr "ពិត ប្រសិនបើ​ពាក្យ​បញ្ជា​បាន​បញ្ជាក់​នៅ​​គ្រាប់ចុច \"ពាក្យ​បញ្ជា\" គួរ​គ្រប់គ្រង URLs \"irc\" ។"
+
+msgid ""
+"True if the command specified in the \"command\" key should handle \"msnim\" "
+"URLs."
+msgstr ""
+"ពិត ប្រសិនបើ​ពាក្យ​បញ្ជា​បាន​បញ្ជាក់​នៅ​​គ្រាប់ចុច \"ពាក្យ​បញ្ជា\" គួរ​គ្រប់គ្រង URLs \"msnim\" ។"
+
+msgid ""
+"True if the command specified in the \"command\" key should handle \"sip\" "
+"URLs."
+msgstr "ពិត ប្រសិនបើ​ពាក្យ​បញ្ជា​បាន​បញ្ជាក់​នៅ​​គ្រាប់ចុច \"ពាក្យ​បញ្ជា\" គួរ​គ្រប់គ្រង URLs \"sip\" ។"
+
+msgid ""
+"True if the command specified in the \"command\" key should handle \"xmpp\" "
+"URLs."
+msgstr ""
+"ពិត ប្រសិនបើ​ពាក្យ​បញ្ជា​បាន​បញ្ជាក់​នៅ​​គ្រាប់ចុច \"ពាក្យ​បញ្ជា\" គួរ​គ្រប់គ្រង URLs \"xmpp\" ។"
+
+msgid ""
+"True if the command specified in the \"command\" key should handle \"ymsgr\" "
+"URLs."
+msgstr ""
+"ពិត ប្រសិនបើ​ពាក្យ​បញ្ជា​បាន​បញ្ជាក់​នៅ​​គ្រាប់ចុច \"ពាក្យ​បញ្ជា\" គួរ​គ្រប់គ្រង URLs \"ymsgr\" ។"
+
+msgid ""
+"True if the command used to handle this type of URL should be run in a "
+"terminal."
+msgstr "ពិត ប្រសិនបើ​ពាក្យ​បញ្ជា​បាន​បញ្ជាក់​នៅ​​គ្រាប់ចុច \"ពាក្យ​បញ្ជា\" គួរ​​រត់​នៅ​ក្នុង​ស្ថានីយ ។"
+
+msgid "Whether the specified command should handle \"aim\" URLs"
+msgstr "ថាតើ​ ពាក្យ​បញ្ជា​ដែល​បាន​បញ្ជាក់​គួរគ្រប់គ្រង URLs \"aim\" ។"
+
+msgid "Whether the specified command should handle \"gg\" URLs"
+msgstr "ថាតើ​ពាក្យ​បញ្ជា​ដែលបាន​បញ្ជាក់​គួរ​គ្រប់គ្រង URLs \"gg\" ។"
+
+msgid "Whether the specified command should handle \"icq\" URLs"
+msgstr "ថាតើ ពាក្យ​បញ្ជា​ដែល​បានប​ញ្ជាក់​គួរ​គ្រប់គ្រង URLs \"icq\" ។"
+
+msgid "Whether the specified command should handle \"irc\" URLs"
+msgstr "ថាតើ​ ពាក្យ​បញ្ជា​ដែល​បាន​បញ្ជាក់គួរ​គ្រប់គ្រង URLs \"irc\" ។"
+
+msgid "Whether the specified command should handle \"msnim\" URLs"
+msgstr "ថាតើ ពាក្យ​បញ្ជា​ដែលបានបញ្ជាក់គួរ​គ្រប់គ្រង URLs \"msnim\" ។"
+
+msgid "Whether the specified command should handle \"sip\" URLs"
+msgstr "ថាតើ ពាក្យ​បញ្ជា​ដែល​បាន​បញ្ជាក់​គួរ​គ្រប់គ្រង URLs \"sip\""
+
+msgid "Whether the specified command should handle \"xmpp\" URLs"
+msgstr "ថាតើ ពាក្យ​បញ្ជា​ដែល​បាន​បញ្ជាក់​គួរ​គ្រប់គ្រង URLs \"xmpp\" ។"
+
+msgid "Whether the specified command should handle \"ymsgr\" URLs"
+msgstr "ថាតើ ពាក្យ​បញ្ជាក់​ដែលបានបញ្ជាក់​គួរ​គ្រប់គ្រង URLs \"ymsgr\" ។"
+
+msgid "<b><font color=\"red\">The logger has no read function</font></b>"
+msgstr "<b><font color=\"red\">មិនមាន​មុខងារ​អាន​ទៀតទេ</font></b>"
+
+msgid "HTML"
+msgstr "HTML"
+
+msgid "Plain text"
+msgstr "អត្ថបទ​ធម្មតា"
+
+msgid "Old flat format"
+msgstr "ទ្រង់ទ្រាយ​ចាស់"
+
+msgid "Logging of this conversation failed."
+msgstr "បាន​បរាជ័យ​ក្នុងកា​រចុះ​កំណត់ហេតុ​ការ​សន្ទនា​នេះ ។"
+
+msgid "XML"
+msgstr "XML"
+
+#, c-format
+msgid ""
+"<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-"
+"REPLY&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-"
+"REPLY&gt;:</b></font> %s<br/>\n"
+
+msgid "<font color=\"red\"><b>Unable to find log path!</b></font>"
+msgstr "<font color=\"red\"><b>មិនអាច​រក​ផ្លូវ​កំណត់ហេតុ​បានទេ !</b></font>"
+
+#, c-format
+msgid "<font color=\"red\"><b>Could not read file: %s</b></font>"
+msgstr "<font color=\"red\"><b>មិនអាច​អាន​ឯកសារ​បានទេ ៖ %s</b></font>"
+
+#, c-format
+msgid "(%s) %s <AUTO-REPLY>: %s\n"
+msgstr "(%s) %s <AUTO-REPLY>: %s\n"
+
+#, c-format
+msgid "You are using %s, but this plugin requires %s."
+msgstr "អ្នក​កំពុង​ប្រើ %s ប៉ុន្តែ​កម្មវិធី​ជំនួយ​នេះ​ទាមទារ %s ។"
+
+msgid "This plugin has not defined an ID."
+msgstr "កម្មវិធី​ជំនួយ​នេះ​មិនបានកំណត់​​លេខសម្គាល់​ទេ ។"
+
+#, c-format
+msgid "Plugin magic mismatch %d (need %d)"
+msgstr "មិនផ្គូផ្គង​កម្មវិធីជំនួយ​មន្តអាគមន្ត %d (ត្រូវការ %d)"
+
+#, c-format
+msgid "ABI version mismatch %d.%d.x (need %d.%d.x)"
+msgstr "មិនផ្គូផ្គង​កំណែ ABI %d.%d.x (ត្រូវការ %d.%d.x)"
+
+msgid ""
+"Plugin does not implement all required functions (list_icon, login and close)"
+msgstr "កម្មវិធី​ជំនួយ​មិន​អនុវត្ត​មុខងារ​ដែល​ទាមទារ​ទាំង​អស់​ទេ (list_icon ចូល ហើយ​បិទ)"
+
+#, c-format
+msgid ""
+"The required plugin %s was not found. Please install this plugin and try "
+"again."
+msgstr ""
+"រក​មិនឃើញ​កម្មវិធី​ជំនួយ​ដែលត្រូវការ %s ​នោះទេ ។ សូម​ដំឡើង​កម្មវិធី​ជំនួយ​នេះ ហើយ​ព្យាយាម​ម្ដង​ទៀត ។"
+
+msgid "Unable to load the plugin"
+msgstr "មិន​អាច​ផ្ទុក​កម្មវិធី​ជំនួយ​បានទេ"
+
+#, c-format
+msgid "The required plugin %s was unable to load."
+msgstr "កម្មវិធីជំនួយ​ដែល​ត្រូវការ %s មិនអាច​ផ្ទុក​បានទេ ។"
+
+msgid "Unable to load your plugin."
+msgstr "មិនអាច​ផ្ទុក​កម្មវិធី​ជំនួយ​របស់​អ្នក​បានទេ ។"
+
+#, c-format
+msgid "%s requires %s, but it failed to unload."
+msgstr "%s ត្រូវការ %s ប៉ុន្តែ​បានបរាជ័យ​ក្នុង​ការ​ផ្ទុក ។"
+
+msgid "Autoaccept"
+msgstr "ព្រម​ទទួល​ដោយ​ស្វ័យ​ប្រវត្តិ"
+
+msgid "Auto-accept file transfer requests from selected users."
+msgstr "ការ​ផ្ទេរ​ឯកសារ​ដែល​ព្រមទទួលដោយ​ស្វ័យ​ប្រវត្តិ​ស្នើ​ពី​អ្នក​ប្រើ​ដែលបាន​ជ្រើស ។"
+
+#, c-format
+msgid "Autoaccepted file transfer of \"%s\" from \"%s\" completed."
+msgstr "ការ​ផ្ទេរ​ឯកសារ​ដែល​ព្រមទទួល​ដោយ​ស្វ័យប្រវត្តិ​របស់ \"%s\" ពី \"%s\" បាន​បញ្ចប់ ។"
+
+msgid "Autoaccept complete"
+msgstr "បញ្ចប់ការ​ព្រម​ទទួល​ដោយ​ស្វ័យ​ប្រវត្តិ"
+
+#, c-format
+msgid "When a file-transfer request arrives from %s"
+msgstr "នៅពេល​សំណើ​ការ​ផ្ទេរ​ឯកសារ​មក​ដល់ពី %s"
+
+msgid "Set Autoaccept Setting"
+msgstr "កំណត់​កា​រកំណត់​ព្រមទទួល​ដោយ​ស្វ័យប្រវត្តិ"
+
+msgid "_Save"
+msgstr "រក្សាទុក"
+
+msgid "_Cancel"
+msgstr "បោះបង់"
+
+msgid "Ask"
+msgstr "សួរ"
+
+msgid "Auto Accept"
+msgstr "ព្រមទទួល​ដោយ​ស្វ័យ​ប្រវត្តិ"
+
+msgid "Auto Reject"
+msgstr "ច្រានចោល​ដោយ​ស្វ័យ​ប្រវត្តិ"
+
+msgid "Autoaccept File Transfers..."
+msgstr "កា​រផ្ទេរ​ឯកសារ​ព្រមទទួល​ដោយ​ស្វ័យ​ប្រវត្តិ..."
+
+#. XXX: Is there a better way than this? There really should be.
+msgid ""
+"Path to save the files in\n"
+"(Please provide the full path)"
+msgstr ""
+"ផ្លូវ​ត្រូវ​រក្សាទុក​ឯកសារ​នៅ​ក្នុង\n"
+"(សូម​ផ្ដល់ផ្លូវ​ពេញលេញ)"
+
+msgid "Automatically reject from users not in buddy list"
+msgstr "ច្រានចោល​ដោយ​ស្វ័យ​ប្រវត្តិ​ពី​អ្នក​ប្រើ​មិន​នៅ​ក្នុង​បញ្ជី​មិត្តភក្ដិទេ"
+
+msgid ""
+"Notify with a popup when an autoaccepted file transfer is complete\n"
+"(only when there's no conversation with the sender)"
+msgstr ""
+"ជូន​ដំណឹង​ដោយ​ម៉ឺនុយ​លេចឡើង នៅពេល​ការ​​ផ្ទេរ​ឯកសារ​ព្រមទទួល​ដោយ​ស្វ័យ​ប្រវត្តិ​បានបញ្ចប់\n"
+"(តែ​នៅពេល​ដែល​គ្មាន​ការ​សន្ទនា​ជា​មួយ​អ្នក​ផ្ញើ)"
+
+msgid "Create a new directory for each user"
+msgstr "បង្កើត​ថត​ថ្មី​សម្រាប់​អ្នក​ប្រើ​នីមួយៗ"
+
+msgid "Notes"
+msgstr "ចំណាំ"
+
+msgid "Enter your notes below..."
+msgstr "បញ្ចូល​ចំណាំ​របស់​អ្នក​ខាង​ក្រោម..."
+
+msgid "Edit Notes..."
+msgstr "កែសម្រួល​ចំណាំ..."
+
+#. *< major version
+#. *< minor version
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Buddy Notes"
+msgstr "ចំណាំ​មិត្តភក្ដិ"
+
+#. *< name
+#. *< version
+msgid "Store notes on particular buddies."
+msgstr "ទុក​ចំណាំ​នៅ​លើ​មិត្តភក្ដិ​​ជាក់លាក់ ។"
+
+#. *< summary
+msgid "Adds the option to store notes for buddies on your buddy list."
+msgstr "បន្ថែម​ជម្រើស​ដើម្បីទុក​ចំណាំ​សម្រាប់​មិត្តភក្ដិ​នៅ​លើ​បញ្ជី​មិតភក្ដិ​របស់​អ្នក ។"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Cipher Test"
+msgstr "សាកល្បង​ការ​សរសេរ​ជា​សម្ងាត់"
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Tests the ciphers that ship with libpurple."
+msgstr "សាកល្បង​កា​រសរសេរ​ជា​សម្ងាត់​ដែល​នាំ​មក​ជា​មួយ libpurple ។"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "DBus Example"
+msgstr "គំរូ DBus"
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "DBus Plugin Example"
+msgstr "គំរូ​កម្មវិធី​ជំនួយ DBus"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "File Control"
+msgstr "ការត្រួតពិនិត្យ​ឯកសារ"
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Allows control by entering commands in a file."
+msgstr "អនុញ្ញាត​ការ​ត្រួតពិនិត្យ​ដោយ​បញ្ចូល​ពាក្យ​បញ្ជា​នៅ​ក្នុង​ឯកសារ ។"
+
+msgid "Minutes"
+msgstr "នាទី"
+
+#. This is a cultural reference. Dy'er Mak'er is a song by Led Zeppelin.
+#. If that doesn't translate well into your language, drop the 's before translating.
+msgid "I'dle Mak'er"
+msgstr "សញ្ញា​សម្គាល់​ថា​ទំនេរ"
+
+msgid "Set Account Idle Time"
+msgstr "កំណត់​ពេលវេលា​ទំនេរ​របស់គណនី"
+
+msgid "_Set"
+msgstr "កំណត់"
+
+msgid "None of your accounts are idle."
+msgstr "គ្មាន​គណនី​ណាមួយ​របស់​អ្នក​ទំនេរ​ទេ ។"
+
+msgid "Unset Account Idle Time"
+msgstr "មិន​កំណត់​ពេលវេលា​ទំនេរ​របស់គណនី​ទេ"
+
+msgid "_Unset"
+msgstr "មិនកំណត់"
+
+msgid "Set Idle Time for All Accounts"
+msgstr "កំណត់​ពេលវេលា​ទំនេរ​សម្រាប់គណនី​ទាំង​អស់"
+
+msgid "Unset Idle Time for All Idled Accounts"
+msgstr "មិន​កំណត់​ពេលវេលា​ទំនេរ​សម្រាប់គណនី​ទាំង​អស់​ទេ"
+
+msgid "Allows you to hand-configure how long you've been idle"
+msgstr "អនុញ្ញាត​ឲ្យ​អ្នក​​កំណត់​រចនាសម្ព័ន្ធ​ដោយដៃ​ អំពី​រយៈពេល​ដែល​អ្នកនៅ​ទំនេរ"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "IPC Test Client"
+msgstr "ម៉ាស៊ីន​ភ្ញៀវ​សាកល្បង IPC"
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Test plugin IPC support, as a client."
+msgstr "កា​រគាំទ្រ​ការ​សាកល្បង​កម្មវិធី​ជំនួយ IPC ព្រម​ទាំង​ម៉ាស៊ីន​ភ្ញៀវ ។"
+
+#. * description
+msgid ""
+"Test plugin IPC support, as a client. This locates the server plugin and "
+"calls the commands registered."
+msgstr ""
+"ការគាំទ្រ​ការ​សាកល្បង​កម្មវិធី​ជំនួយ IPC ព្រម​ទាំង​ម៉ាស៊ីន​ភ្ញៀវ ។ វា​កំណត់​ទីតាំង​​កម្មវិធី​ជំនួយ​ម៉ាស៊ីនបម្រើ និង​ហៅ​"
+"ពាក្យ​បញ្ជា​ដែលបានចុះឈ្មោះ ។"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "IPC Test Server"
+msgstr "ម៉ាស៊ីនបម្រើ​សាកល្បង IPC"
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Test plugin IPC support, as a server."
+msgstr "គាំទ្រ​ការ​សាកល្បង​កម្មវិធី​ជំនួយ IPC ជា​ម៉ាស៊ីន​បម្រើ ។"
+
+#. * description
+msgid "Test plugin IPC support, as a server. This registers the IPC commands."
+msgstr "គាំទ្រ​ការ​សាកល្បង​កម្មវិធី​ជំនួយ IPC ជា​ម៉ាស៊ីន​បម្រើ ។ វា​ចុះឈ្មោះ​ពាក្យ​បញ្ជា IPC ។"
+
+msgid "Join/Part Hiding Configuration"
+msgstr "​ការ​កំណត់​រចនាសម្ព័ន្ធ​ចូល/លាក់ផ្នែក"
+
+msgid "Minimum Room Size"
+msgstr "បង្រួមទំហំ​បន្ទប់​អប្បបរមា"
+
+msgid "User Inactivity Timeout (in minutes)"
+msgstr "រយៈ​ពេល​អសកម្ម​របស់​អ្នកប្រើ (គិតជា​នាទី)"
+
+msgid "Apply hiding rules to buddies"
+msgstr "អនុវត្ត​ក្បួន​បន្លិច​ទៅកាន់​មិត្តភក្ដិ"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Join/Part Hiding"
+msgstr "ចូល/លាក់ផ្នែក"
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Hides extraneous join/part messages."
+msgstr "លាក់​សារ​ចូល/ផ្នែក​ដែល​មិន​ត្រូវ​កន្លែង ។"
+
+#. * description
+msgid ""
+"This plugin hides join/part messages in large rooms, except for those users "
+"actively taking part in a conversation."
+msgstr ""
+"កម្មវិធី​ជំនួយ​នេះ​លាក់​សារ​ចូល/ផ្នែក​នៅ​ក្នុង​បន្ទប់​ធំ លើកលែង​តែ​សម្រាប់​អ្នក​ប្រើទាំង​នោះ​ដែល​កើតឡើង​យ៉ាង​សកម្ម​"
+"នៅ​ក្នុង​ការ​សន្ទនា ។"
+
+#. This is used in the place of a timezone abbreviation if the
+#. * offset is way off. The user should never really see it, but
+#. * it's here just in case. The parens are to make it clear it's
+#. * not a real timezone.
+msgid "(UTC)"
+msgstr "(UTC)"
+
+msgid "User is offline."
+msgstr "អ្នកប្រើនៅ​ក្រៅ​បណ្ដាញ ។"
+
+msgid "Auto-response sent:"
+msgstr "បានផ្ញើ​ការ​ឆ្លើយតប​ដោយ​ស្វ័យ​ប្រវត្តិ ៖"
+
+#, c-format
+msgid "%s has signed off."
+msgstr "%s បាន​ចេញ ។"
+
+msgid "One or more messages may have been undeliverable."
+msgstr "សារ​មួយ ឬ​ច្រើន​អាច​​មិន​ត្រូវ​បានផ្ដល់ ។"
+
+msgid "You were disconnected from the server."
+msgstr "អ្នក​ត្រូវ​បានផ្ដាច់​ពី​ម៉ាស៊ីនបម្រើ ។"
+
+msgid ""
+"You are currently disconnected. Messages will not be received unless you are "
+"logged in."
+msgstr "អ្នក​បច្ចុប្បន្ន​ត្រូវ​បានផ្ដាច់ ។ សារ​នឹង​មិន​ត្រូវ​បានទទួល​លុះត្រា​តែ​អ្នក​ចូល ។"
+
+msgid "Message could not be sent because the maximum length was exceeded."
+msgstr "សារ​មិនអាច​ត្រូវ​បាន​ផ្ញើ​ទេ ដោយ​សារ​តែ​លើស​ប្រវែង​អតិបរមា ។"
+
+msgid "Message could not be sent."
+msgstr "សារ​មិន​អាច​ត្រូវ​បានផ្ញើទេ ។"
+
+#. The names of IM clients are marked for translation at the request of
+#. translators who wanted to transliterate them. Many translators
+#. choose to leave them alone. Choose what's best for your language.
+msgid "Adium"
+msgstr "Adium"
+
+#. The names of IM clients are marked for translation at the request of
+#. translators who wanted to transliterate them. Many translators
+#. choose to leave them alone. Choose what's best for your language.
+msgid "Fire"
+msgstr "ភ្លើង"
+
+#. The names of IM clients are marked for translation at the request of
+#. translators who wanted to transliterate them. Many translators
+#. choose to leave them alone. Choose what's best for your language.
+msgid "Messenger Plus!"
+msgstr "កម្មវិធី​ផ្ញើសារ​បន្ថែម !"
+
+#. The names of IM clients are marked for translation at the request of
+#. translators who wanted to transliterate them. Many translators
+#. choose to leave them alone. Choose what's best for your language.
+msgid "QIP"
+msgstr "QIP"
+
+#. The names of IM clients are marked for translation at the request of
+#. translators who wanted to transliterate them. Many translators
+#. choose to leave them alone. Choose what's best for your language.
+msgid "MSN Messenger"
+msgstr "កម្មវិធី​ផ្ញើសារ MSN"
+
+#. The names of IM clients are marked for translation at the request of
+#. translators who wanted to transliterate them. Many translators
+#. choose to leave them alone. Choose what's best for your language.
+msgid "Trillian"
+msgstr "Trillian"
+
+#. The names of IM clients are marked for translation at the request of
+#. translators who wanted to transliterate them. Many translators
+#. choose to leave them alone. Choose what's best for your language.
+msgid "aMSN"
+msgstr "aMSN"
+
+#. Add general preferences.
+msgid "General Log Reading Configuration"
+msgstr "ការ​កំណត់​រចនាសម្ព័ន្ធ​អាន​កំណត់​ហេតុ​ទូទៅ"
+
+msgid "Fast size calculations"
+msgstr "ការ​គណនា​ទំហំ​រហ័ស"
+
+msgid "Use name heuristics"
+msgstr "បើវិធានការ​ស្រាវជ្រាវ​ឈ្មោះ"
+
+#. Add Log Directory preferences.
+msgid "Log Directory"
+msgstr "ថត​កំណត់ហេតុ"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Log Reader"
+msgstr "កម្មវិធី​អាន​កំណត់ហេតុ"
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Includes other IM clients' logs in the log viewer."
+msgstr "រួម​បញ្ចូល​កំណត់​ហេតុ​របស់​ម៉ាស៊ីនភ្ញៀវ IM ផ្សេងៗ​ទៀត​នៅ​ក្នុង​កម្មវិធីមើល​កំណត់​ហេតុ ។"
+
+#. * description
+msgid ""
+"When viewing logs, this plugin will include logs from other IM clients. "
+"Currently, this includes Adium, MSN Messenger, and Trillian.\n"
+"\n"
+"WARNING: This plugin is still alpha code and may crash frequently. Use it "
+"at your own risk!"
+msgstr ""
+"នៅពេល​មើល​កំណត់ហេតុ កម្មវិធី​ជំនួយ​នេះ​នឹង​រួម​បញ្ចូល​​កំណត់ហេតុ​ពី​ម៉ាស៊ីន​ភ្ញៀវ IM ផ្សេងៗ ។បច្ចុប្បន្ន វា​រួម​"
+"មានកម្មវិធី​ផ្ញើសារ Adium, MSN និង Trillian ។\n"
+"\n"
+"ការព្រមាន ៖ កម្មវិធី​ជំនួយយ​នេះ​នៅតែ​ជា​អាល់ហ្វាកូដ ហើយ​អាច​គាំង​ជា​ញឹកញាប់ ។ ប្រើ​វា​នៅកម្រិត​"
+"គ្រោះថ្នាក់ផ្ទាល់របស់អ្នក !"
+
+msgid "Mono Plugin Loader"
+msgstr "កម្មវិធី​ផ្ទុក​កម្មវិធី​ជំនួយ​របស់ Mono"
+
+msgid "Loads .NET plugins with Mono."
+msgstr "ផ្ទុក​កម្មវិធី​ជំនួយ .NET ជា​មួយ Mono ។"
+
+msgid "Add new line in IMs"
+msgstr "បន្ថែម​បន្ទាត់​ថ្មី​នៅ​ក្នុង IMs"
+
+msgid "Add new line in Chats"
+msgstr "បន្ថែម​បន្ទាត់​ថ្មី​នៅ​ក្នុង​គំនូស​តាង"
+
+#. *< magic
+#. *< major version
+#. *< minor version
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "New Line"
+msgstr "បន្ទាត់ថ្មី"
+
+#. *< name
+#. *< version
+msgid "Prepends a newline to displayed message."
+msgstr "បន្ថែម​បន្ទាត់ថ្មី​ខាង​ចុង​ទៅ​កាាន់​សារ​ដែលបាន​បង្ហាញ ។"
+
+#. *< summary
+msgid ""
+"Prepends a newline to messages so that the rest of the message appears below "
+"the username in the conversation window."
+msgstr ""
+"បន្ថែម​បន្ទាត់ថ្មី​ទៅសារ ដូច្នេះ​សារ​ដែលនៅសល់​បង្ហាញ​ខាង​ក្រោម​ឈ្មោះអ្នក​ប្រើ​នៅ​ក្នុង​បង្អួច​សន្ទនា ។"
+
+msgid "Offline Message Emulation"
+msgstr "ក្លែង​ធ្វើសារ​ក្រៅ​បណ្ដាញ"
+
+msgid "Save messages sent to an offline user as pounce."
+msgstr "រក្សាទុកសារ​ដែល​បានផ្ញើ​ទៅ​កាន់​អ្នក​ប្រើ​ក្រៅ​ជា​ក្រុម ។"
+
+msgid ""
+"The rest of the messages will be saved as pounce. You can edit/delete the "
+"pounce from the `Buddy Pounce' dialog."
+msgstr "សារ​ដែល​នៅ​សល់​នឹង​ត្រូវ​បានរក្សាទុកជា​ក្រុម ។ អ្នកអាច​កែសម្រួល/លុប​ក្រុម​ពី​ប្រអប់​ `ក្រុម​មិត្តភក្ដិ' ។"
+
+#, c-format
+msgid ""
+"\"%s\" is currently offline. Do you want to save the rest of the messages in "
+"a pounce and automatically send them when \"%s\" logs back in?"
+msgstr ""
+"\"%s\" ឥឡូវ​នេះ​នៅ​ក្រៅបណ្ដាញ ។ តើអ្នក​ចង់​រក្សាទុក​សារ​ដែលនៅ​សល់​ជា​ក្រុម ហើយ​ផ្ញើ​ពួកវា​ដោយ​ស្វ័យ​ប្រវត្តិ​"
+"នៅពេល​ដែល \"%s\" ចូល​ម្ដង​ទៀត​ដែរឬទេ ?"
+
+msgid "Offline Message"
+msgstr "សារ​ក្រៅ​បណ្ដាញ"
+
+msgid "You can edit/delete the pounce from the `Buddy Pounces' dialog"
+msgstr "អ្នក​អាច​កែសម្រួល/លុប​ក្រុម​ពី​ប្រអប់ `ក្រុម​មិត្តភក្ដិ'"
+
+msgid "Yes"
+msgstr "បាទ/ចាស"
+
+msgid "No"
+msgstr "ទេ"
+
+msgid "Save offline messages in pounce"
+msgstr "រក្សាទុក​សារ​ក្រៅ​បណ្ដាញ​ជា​ក្រុម"
+
+msgid "Do not ask. Always save in pounce."
+msgstr "កុំសួរ ។ រក្សាទុក​ជា​ក្រុម​ជា​និច្ច ។"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Perl Plugin Loader"
+msgstr "កម្មវិធី​ផ្ទុក​កម្មវិធី​ជំនួយ​របស់ Perl"
+
+#. *< name
+#. *< version
+#. *< summary
+msgid "Provides support for loading perl plugins."
+msgstr "ផ្ដល់​ការ​គាំទ្រ​សម្រាប់​ផ្ទុក​កម្មវិធី​ជំនួយ​របស់ perl ។"
+
+msgid "Psychic Mode"
+msgstr "របៀប Psychic"
+
+msgid "Psychic mode for incoming conversation"
+msgstr "របៀប Psychic សម្រាប់​ការ​សន្ទនា​ដែល​ចូល"
+
+msgid ""
+"Causes conversation windows to appear as other users begin to message you. "
+"This works for AIM, ICQ, XMPP, Sametime, and Yahoo!"
+msgstr ""
+"ធ្វើ​ឲ្យ​បង្អួច​សន្ទនា​បង្ហាញ​ជា​អ្នក​ប្រើ​ផ្សេងៗ​ ចាប់ផ្ដើម​សរសេរ​សារ​ឲ្យ​អ្នក ។ ការងារ​សម្រាប់ AIM, "
+"ICQ, XMPP, Sametime និង Yahoo!"
+
+msgid "You feel a disturbance in the force..."
+msgstr "អ្នកមានអារម្មណ៍​ថា​រំខាន​ក្នុងការ​បង្ខំ..."
+
+msgid "Only enable for users on the buddy list"
+msgstr "បើក​សម្រាប់​តែ​អ្នក​ប្រើនៅ​ក្នុង​បញ្ជី​មិត្តភក្ដិ​តែ​ប៉ុណ្ណោះ"
+
+msgid "Disable when away"
+msgstr "បិទ​នៅពេល​ចាកឆ្ងាយ"
+
+msgid "Display notification message in conversations"
+msgstr "បង្ហាញ​សារ​ជូនដំណឹង​នៅ​ក្នុង​ការ​សន្ទនា"
+
+msgid "Raise psychic conversations"
+msgstr "លើក​ការ​សន្ទនា psychic ឡើង"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Signals Test"
+msgstr "សាកល្បង​សញ្ញា"
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Test to see that all signals are working properly."
+msgstr "សាកល្បង​ដើម្បី​ដឹង​ថា សញ្ញា​ទាំង​អស់​ដំណើរកាយ៉ារ​ង​រលូន ។"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Simple Plugin"
+msgstr "កម្មវិធី​ជំនួយ​ធម្មតា"
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Tests to see that most things are working."
+msgstr "សាកល្បង​ដើម្បី​ដឹង​ថា អ្វីៗ​ជា​ច្រើន​កំពុង​ដំណើរការ ។"
+
+#. Scheme name
+msgid "X.509 Certificates"
+msgstr "វិញ្ញាបនបត្រ X.509"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "GNUTLS"
+msgstr "GNUTLS"
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Provides SSL support through GNUTLS."
+msgstr "ផ្ដល់​នូវ​កា​រគាំទ្រ SSL តាមរយៈ GNUTLS ។"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "NSS"
+msgstr "NSS"
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Provides SSL support through Mozilla NSS."
+msgstr "ផ្ដល់​នូវ​ការ​គាំទ្រ​ SSL តាមរយៈ Mozilla NSS ។"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "SSL"
+msgstr "SSL"
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Provides a wrapper around SSL support libraries."
+msgstr "ផ្ដល់​នូវការ​កម្មវិធី​រុំ​ជុំវិញ​បណ្ណាល័យ​គាំទ្រ SSL ។"
+
+#, c-format
+msgid "%s is no longer away."
+msgstr "%s មិន​ចាកឆ្ងាយ​ទៀតទេ ។"
+
+#, c-format
+msgid "%s has gone away."
+msgstr "%s បាន​ទៅ​ឆ្ងាយ​ហើយ ។"
+
+#, c-format
+msgid "%s has become idle."
+msgstr "%s បាន​ក្លាយជា​ទំនេរ ។"
+
+#, c-format
+msgid "%s is no longer idle."
+msgstr "%s មិនទំនេរ​ទៀតទេ ។"
+
+#, c-format
+msgid "%s has signed on."
+msgstr "%s បានចូល ។"
+
+msgid "Notify When"
+msgstr "ជូនដំណឹង​នៅ​លើ"
+
+msgid "Buddy Goes _Away"
+msgstr "មិត្តភក្ដិ​​ទៅ​ឆ្ងាយ"
+
+msgid "Buddy Goes _Idle"
+msgstr "មិត្តភក្ដិ​ទំនេរ"
+
+msgid "Buddy _Signs On/Off"
+msgstr "មិត្តភក្ដិ ចេញ/ចូល"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Buddy State Notification"
+msgstr "ស្ថាន​​ភាព​ជូនដំណឹង​របស់មិត្តភក្ដិ"
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid ""
+"Notifies in a conversation window when a buddy goes or returns from away or "
+"idle."
+msgstr "ជូនដំណឹង​នៅ​ក្នុង​បង្អួច​សន្ទនា នៅពេល​ដែល​មិត្តភក្ដិ​ទៅ ឬ​​​ត្រឡប់​​ពី​ការ​ចាកឆ្ងាយ ឬ​ទំនេរ ។"
+
+msgid "Tcl Plugin Loader"
+msgstr "កម្មវិធី​ផ្ទុក​កម្មវិធី​ជំនួយ Tcl"
+
+msgid "Provides support for loading Tcl plugins"
+msgstr "ផ្ដល់​នូវការ​គាំទ្រ​សម្រាប់​ផ្ទុក​កម្មវិធី​ជំនួយ Tcl"
+
+msgid ""
+"Unable to detect ActiveTCL installation. If you wish to use TCL plugins, "
+"install ActiveTCL from http://www.activestate.com\n"
+msgstr ""
+"មិនអាច​រក​ឃើញ​ការ​ដំឡើងTCL ដែល​សកម្ម ។ ប្រសិន​បើ​អ្នក​ចង់​ប្រើ​កម្មវិធី​ជំនួយ TCL ដំឡើង TCL សកម្ម​ពី "
+"http://www.activestate.com\n"
+
+msgid ""
+"The Apple Bonjour For Windows toolkit wasn't found, see the FAQ at: http://d."
+"pidgin.im/BonjourWindows for more information."
+msgstr ""
+"Apple Bonjour សម្រាប់​ប្រអប់​ឧបករណ៍​វីនដូ​ដែល​រក​មិនឃើញ សូម​មើល FAQ នៅ ៖ http://d.pidgin.im/"
+"BonjourWindows ចំពោះ​ព័ត៌មាន​លម្អិត ។"
+
+msgid "Unable to listen for incoming IM connections\n"
+msgstr "មិនអាច​ស្ដាប់​ការ​តភ្ជាប់ IM ចូល​\n"
+
+msgid ""
+"Unable to establish connection with the local mDNS server. Is it running?"
+msgstr "មិនអាច​បង្កើត​ការ​តភ្ជាប់​ជា​មួយ​នឹង​ម៉ាស៊ីន​បម្រើ mDNS មូលដ្ឋាន​ទេ ។ តើ​វា​កំពុង​រត់​ទេ ?"
+
+msgid "First name"
+msgstr "នាម​ខ្លួន"
+
+msgid "Last name"
+msgstr "នាម​ត្រកូល"
+
+msgid "Email"
+msgstr "អ៊ីមែល"
+
+msgid "AIM Account"
+msgstr "គណនី AIM"
+
+msgid "XMPP Account"
+msgstr "គណនី XMPP"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Bonjour Protocol Plugin"
+msgstr "កម្មវិធី​ជំនួយ​ពិធីការ​ Bonjour"
+
+msgid "Purple Person"
+msgstr "មនុស្ស​​ពណ៌ស្វាយ"
+
+#. Creating the options for the protocol
+msgid "Local Port"
+msgstr "ច្រក"
+
+msgid "Bonjour"
+msgstr "Bonjour"
+
+#, c-format
+msgid "%s has closed the conversation."
+msgstr "%s បានបិទ​ការ​សន្ទនា ។"
+
+msgid "Unable to send the message, the conversation couldn't be started."
+msgstr "មិនអាច​ផ្ញើ​សារ​បានទេ ការ​សន្ទនា​មិនអាច​ត្រូវ​បាន​ចាប់ផ្ដើម​ទេ ។"
+
+msgid "Cannot open socket"
+msgstr "មិនអាច​បើក​រន្ធ​បានទេ"
+
+msgid "Could not bind socket to port"
+msgstr "មិនអាច​ចង​រន្ធ​ទៅ​ច្រក​បានទេ"
+
+msgid "Could not listen on socket"
+msgstr "មិនអាច​ស្ដាប់​នៅ​លើ​រន្ធ​បានទេ"
+
+msgid "Error communicating with local mDNSResponder."
+msgstr "កំហុស​ក្នុងការ​ទាក់ទង​ជា​មួយ​នឹង mDNSResponder មូលដ្ឋាន ។"
+
+msgid "Invalid proxy settings"
+msgstr "ការ​កំណត់​ប្រូកស៊ី​មិន​ត្រឹមត្រូវ"
+
+msgid ""
+"Either the host name or port number specified for your given proxy type is "
+"invalid."
+msgstr "ឈ្មោះ​ម៉ាស៊ីន ឬ​លេខ​ច្រក​ដែល​បាន​បញ្ជាក់​សម្រាប់​ប្រភេទ​ប្រូកស៊ី​ដែលបានផ្ដល់​មិន​ត្រឹមត្រូវ​ទេ ។"
+
+msgid "Token Error"
+msgstr "កំហុស​ថូខឹន"
+
+msgid "Unable to fetch the token.\n"
+msgstr "មិនអាច​ទៅ​យក​ថូខឹន​បានទេ ។\n"
+
+msgid "Save Buddylist..."
+msgstr "រក្សា​​ទុក​​​បញ្ជី​មិត្តភក្ដិ..."
+
+msgid "Your buddylist is empty, nothing was written to the file."
+msgstr "បញ្ជី​មិត្តភក្ដិ​របស់​អ្នក​គឺទទេ គ្មាន​អ្វី​ត្រូវ​បានសរសេរ​ទៅ​កាន់​ឯកសារ​ទេ ។"
+
+msgid "Buddylist saved successfully!"
+msgstr "បាន​រក្សាទុក​បញ្ជី​មិត្តភក្ដិ​ដោយ​ជោគជ័យ !"
+
+#, c-format
+msgid "Couldn't write buddy list for %s to %s"
+msgstr "មិនអាច​សរសេរ​បញ្ជីមិត្តភក្ដិ​សម្រាប់ %s ទៅ​កាន់ %s"
+
+msgid "Couldn't load buddylist"
+msgstr "មិនអាច​ផ្ទុក​បញ្ជី​មិត្តភក្ដិ​បានទេ"
+
+msgid "Load Buddylist..."
+msgstr "ផ្ទុក​បញ្ជី​មិត្តភក្ដិ..."
+
+msgid "Buddylist loaded successfully!"
+msgstr "បានផ្ទុក​បញ្ជី​មិត្តភក្ដិ​​ដោយ​ជោគជ័យ !"
+
+msgid "Save buddylist..."
+msgstr "រក្សា​​ទុក​​បញ្ជីមិត្តភក្តិ..."
+
+msgid "Load buddylist from file..."
+msgstr "ផ្ទុក​បញ្ជីមិត្តភក្ដិ​ពី​ឯកសារ..."
+
+msgid "Fill in the registration fields."
+msgstr "បំពេញ​វាល​ចុះឈ្មោះ ។"
+
+msgid "Passwords do not match."
+msgstr "ពាក្យ​សម្ងាត់​មិន​ផ្គូផ្គង ។"
+
+msgid "Unable to register new account. Error occurred.\n"
+msgstr "មិនអាច​ចុះឈ្មោះ​គណនី​ថ្មី​ទេ ។ កំហុស​បាន​កើត​ឡើង ។\n"
+
+msgid "New Gadu-Gadu Account Registered"
+msgstr "គណនី Gadu-Gadu ដែលបានចុះឈ្មោះ​ថ្មី"
+
+msgid "Registration completed successfully!"
+msgstr "ការ​ចុះឈ្មោះ​បានបញ្ចប់​ដោយ​ជោគជ័យ !"
+
+msgid "Password"
+msgstr "ពាក្យ​​​សម្ងាត់"
+
+msgid "Password (retype)"
+msgstr "ពាក្យ​​​សម្ងាត់ (វាយ​ឡើង​វិញ)"
+
+msgid "Enter current token"
+msgstr "បញ្ចូល​ថូខឹន​បច្ចុប្បន្ន"
+
+msgid "Current token"
+msgstr "ថូខឹន​បច្ចុប្បន្ន"
+
+msgid "Register New Gadu-Gadu Account"
+msgstr "ចុះឈ្មោះ​គណនី Gadu-Gadu ថ្មី"
+
+msgid "Please, fill in the following fields"
+msgstr "សូមបំពេញ​វាល​ដូច​ខាងក្រោម"
+
+msgid "City"
+msgstr "ទីក្រុង​"
+
+msgid "Year of birth"
+msgstr "ឆ្នាំ​កំណើត"
+
+msgid "Gender"
+msgstr "ភេទ"
+
+msgid "Male or female"
+msgstr "ប្រុស ឬ​ស្រី"
+
+msgid "Male"
+msgstr "ប្រុស"
+
+msgid "Female"
+msgstr "ស្រី"
+
+msgid "Only online"
+msgstr "តែ​លើ​បណ្ដាញ​ប៉ុណ្ណោះ"
+
+msgid "Find buddies"
+msgstr "រក​មិត្តភក្ដិ"
+
+msgid "Please, enter your search criteria below"
+msgstr "សូម​បញ្ចូល​លក្ខខណ្ឌ​ស្វែងរក​របស់​អ្នក​ខាង​ក្រោម"
+
+msgid "Fill in the fields."
+msgstr "បំពេញ​វាល ។"
+
+msgid "Your current password is different from the one that you specified."
+msgstr "ពាក្យ​សម្ងាត់​បច្ចុប្បន្ន​របស់​អ្នក ខុស​ពី​ពាក្យ​សម្ងាត់​ដែល​អ្នក​បានបញ្ជាក់ ។"
+
+msgid "Unable to change password. Error occurred.\n"
+msgstr "មិន​អាច​ផ្លាស់ប្ដូរ​ពាក្យ​សម្ងាត់​បានទេ ។ កំហុស​បានកើត​ឡើង ។\n"
+
+msgid "Change password for the Gadu-Gadu account"
+msgstr "ផ្លាស់ប្ដូរ​ពាក្យ​សម្ងាត់​សម្រាប់​​គណនី Gadu-Gadu"
+
+msgid "Password was changed successfully!"
+msgstr "ពាក្យ​សម្ងាត់​ត្រូវ​បាន​ផ្លាស់ប្ដូរ​ជោគជ័យ !"
+
+msgid "Current password"
+msgstr "ពាក្យ​សម្ងាត់​បច្ចុប្បន្ន"
+
+msgid "Please, enter your current password and your new password for UIN: "
+msgstr "សូម​បញ្ចូល​ពាក្យ​សម្ងាត់​បច្ចុប្បន្ន និង​ពាក្យ​សម្ងាត់​ថ្មី​របស់​អ្នក​សម្រាប់ UIN ៖ "
+
+msgid "Change Gadu-Gadu Password"
+msgstr "ផ្លាស់ប្ដូរ​ពាក្យ​សម្ងាត់ Gadu-Gadu"
+
+#, c-format
+msgid "Select a chat for buddy: %s"
+msgstr "ជ្រើស​ការ​ជជែក​សម្រាប់មិត្តភក្ដិ ៖ %s"
+
+msgid "Add to chat..."
+msgstr "បន្ថែម​ទៅ​កា​រជជែក..."
+
+msgid "Available"
+msgstr "ដែល​អាច​ប្រើបាន"
+
+#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
+#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
+#. Away stuff
+msgid "Away"
+msgstr "ចាកឆ្ងាយ"
+
+msgid "UIN"
+msgstr "UIN"
+
+msgid "First Name"
+msgstr "នាម​ខ្លួន"
+
+msgid "Birth Year"
+msgstr "ឆ្នាំ​​​កំណើត"
+
+msgid "Unable to display the search results."
+msgstr "មិនអាច​បង្ហាញ​លទ្ធផល​ស្វែងរក​ទេ ។"
+
+msgid "Gadu-Gadu Public Directory"
+msgstr "ថត​សាធារណៈ​របស់ Gadu-Gadu"
+
+msgid "Search results"
+msgstr "លទ្ធផល​ស្វែងរក"
+
+msgid "No matching users found"
+msgstr "រក​មិនឃើញ​អ្នក​ប្រើ​ដែលផ្គូផ្គង​ទេ"
+
+msgid "There are no users matching your search criteria."
+msgstr "មិនមាន​អ្នក​ប្រើ​ដែល​ផ្គូផ្គង​នឹង​លក្ខខណ្ឌ​ស្វែងរក​របស់​អ្នក ។"
+
+msgid "Unable to read socket"
+msgstr "មិនអាច​អាន​រន្ធ​បានទេ"
+
+msgid "Buddy list downloaded"
+msgstr "បានទាញយក​បញ្ជីមិត្តភក្ដិ"
+
+msgid "Your buddy list was downloaded from the server."
+msgstr "បញ្ជី​មិត្តភក្ដិ​របស់​អ្នក​ត្រូ​វបាន​ទាញយក​ពី​ម៉ាស៊ីនបម្រើ ។"
+
+msgid "Buddy list uploaded"
+msgstr "បានផ្ទុក​បញ្ជីមិត្តភក្ដិ​ឡើង"
+
+msgid "Your buddy list was stored on the server."
+msgstr "បញ្ជី​មិត្តភក្ដិ​របស់​អ្នក​ត្រូ​វបាន​ទុក​នៅ​លើ​ម៉ាស៊ីនបម្រើ ។"
+
+msgid "Connection failed."
+msgstr "បានបរាជ័យ​ក្នុងការ​តភ្ជាប់ ។"
+
+msgid "Add to chat"
+msgstr "បន្ថែម​ទៅ​កាន់​ការ​ជជែក"
+
+msgid "Chat _name:"
+msgstr "ឈ្មោះការ​ជជែក ៖"
+
+msgid "Chat error"
+msgstr "កំហុស​ក្នុងកា​រជជែក"
+
+msgid "This chat name is already in use"
+msgstr "ឈ្មោះការ​ជជែក​នេះ​កំពុង​ប្រើ​រួច​ហើយ"
+
+msgid "Not connected to the server."
+msgstr "មិន​បានតភ្ជាប់​ទៅ​កាន់​ម៉ាស៊ីនបម្រើ​ទេ ។"
+
+msgid "Find buddies..."
+msgstr "រក​មិត្តភក្ដិ..."
+
+msgid "Change password..."
+msgstr "ផ្លាស់ប្ដូរ​ពាក្យ​សម្ងាត់..."
+
+msgid "Upload buddylist to Server"
+msgstr "ផ្ទុក​បញ្ជីមិត្តភក្ដិ​ឡើង​ទៅកាន់​ម៉ាស៊ីនបម្រើ"
+
+msgid "Download buddylist from Server"
+msgstr "ទាញយក​បញ្ជីមិត្តភក្ដិ​ពី​ម៉ាស៊ីន​បម្រើ"
+
+msgid "Delete buddylist from Server"
+msgstr "លុប​បញ្ជីមិត្តភក្ដិ​ពី​ម៉ាស៊ីនបម្រើ"
+
+msgid "Save buddylist to file..."
+msgstr "រក្សាទុក​បញ្ជីមិត្តភក្ដិ​ទៅ​កាន់​ឯកសារ..."
+
+#. magic
+#. major_version
+#. minor_version
+#. plugin type
+#. ui_requirement
+#. flags
+#. dependencies
+#. priority
+#. id
+#. name
+#. version
+msgid "Gadu-Gadu Protocol Plugin"
+msgstr "កម្មវិធី​ជំនួយ​ពិធីការ Gadu-Gadu"
+
+#. summary
+msgid "Polish popular IM"
+msgstr "សម្អាត​ប្រជាប្រិយភាព​របស់ IM"
+
+msgid "Gadu-Gadu User"
+msgstr "អ្នក​ប្រើ Gadu-Gadu"
+
+#, c-format
+msgid "Unknown command: %s"
+msgstr "មិនស្គាល់​ពាក្យ​បញ្ជា ៖ %s"
+
+#, c-format
+msgid "current topic is: %s"
+msgstr "ប្រធានបទ​បច្ចុប្បន្នគឺ ៖ %s"
+
+msgid "No topic is set"
+msgstr "គ្មាន​ប្រធាន​បទ​ត្រូវ​បាន​កំណត់​ទេ"
+
+msgid "File Transfer Failed"
+msgstr "បាន​បរាជ័យ​ក្នុងកា​រផ្ទេរ​ឯកសារ"
+
+msgid "Could not open a listening port."
+msgstr "មិនអាច​បើក​ច្រក​ស្ដាប់​បានទេ ។"
+
+msgid "Error displaying MOTD"
+msgstr "កំហុស​ក្នុងកា​របង្ហាញ MOTD"
+
+msgid "No MOTD available"
+msgstr "មិនមាន MOTD ទេ"
+
+msgid "There is no MOTD associated with this connection."
+msgstr "មិនមាន​ MOTD បាន​ភ្ជាប់​ជា​មួយ​នឹង​ការ​តភ្ជាប់​នេះ​ទេ ។"
+
+#, c-format
+msgid "MOTD for %s"
+msgstr "MOTD សម្រាប់ %s"
+
+msgid "Server has disconnected"
+msgstr "ម៉ាស៊ីន​បម្រើ​បាន​ផ្ដាច់"
+
+msgid "View MOTD"
+msgstr "មើល MOTD"
+
+msgid "_Channel:"
+msgstr "ឆានែល ៖"
+
+msgid "_Password:"
+msgstr "ពាក្យ​​​សម្ងាត់ ៖"
+
+msgid "IRC nicks may not contain whitespace"
+msgstr "សម្មតិនាម IRC អាច​​​​​​មិនមាន​ចន្លោះ"
+
+#. 1. connect to server
+#. connect to the server
+msgid "Connecting"
+msgstr "តភ្ជាប់"
+
+msgid "SSL support unavailable"
+msgstr "មិនមានការគាំទ្រ SSL"
+
+msgid "Couldn't create socket"
+msgstr "មិនអាច​បង្កើត​រន្ធ​បានទេ"
+
+msgid "Couldn't connect to host"
+msgstr "មិនអាច​តភ្ជាប់​ទៅកាន់​ម៉ាស៊ីនបាន​ទេ"
+
+msgid "Read error"
+msgstr "កំហុស​ក្នុងការ​អាន"
+
+msgid "Users"
+msgstr "អ្នក​ប្រើ"
+
+msgid "Topic"
+msgstr "ប្រធាន​បទ"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+msgid "IRC Protocol Plugin"
+msgstr "កម្មវិធី​ជំនួយ​ពិធីការ IRC"
+
+#. * summary
+msgid "The IRC Protocol Plugin that Sucks Less"
+msgstr "កម្មវិធី​ជំនួយ​ពិធីការ IRC ដែល​ Sucks Less"
+
+#. host to connect to
+msgid "Server"
+msgstr "ម៉ាស៊ីន​បម្រើ"
+
+#. port to connect to
+msgid "Port"
+msgstr "ច្រក"
+
+msgid "Encodings"
+msgstr "ការ​អ៊ិនកូដ"
+
+msgid "Auto-detect incoming UTF-8"
+msgstr "រកឃើញ UTF-8 ចូល​ដោយ​ស្វ័យ​ប្រវត្តិ"
+
+msgid "Real name"
+msgstr "ឈ្មោះ​ពិត"
+
+#.
+#. option = purple_account_option_string_new(_("Quit message"), "quitmsg", IRC_DEFAULT_QUIT);
+#. prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
+#.
+msgid "Use SSL"
+msgstr "ប្រើ SSL"
+
+msgid "Bad mode"
+msgstr "របៀប​មិនល្អ"
+
+#, c-format
+msgid "Ban on %s by %s, set %s ago"
+msgstr "ហាមឃាត់​នៅ​លើ %s ដោយ %s កំណត់ %s កន្លង​ទៅ"
+
+#, c-format
+msgid "Ban on %s"
+msgstr "ហាមឃាត់​នៅ​លើ %s"
+
+msgid "End of ban list"
+msgstr "ចុច​បញ្ជី​ហាមឃាត់"
+
+#, c-format
+msgid "You are banned from %s."
+msgstr "អ្នក​ត្រូវ​បាន​ហាមឃាត់​ពី %s ។"
+
+msgid "Banned"
+msgstr "បានហាមឃាត់"
+
+#, c-format
+msgid "Cannot ban %s: banlist is full"
+msgstr "មិនអាច​ហាមឃាត់ %s ៖ បញ្ជី​ហាមឃាត់​ពេញហើយ"
+
+msgid " <i>(ircop)</i>"
+msgstr " <i>(ircop)</i>"
+
+msgid " <i>(identified)</i>"
+msgstr " <i>(បាន​បញ្ជាក់អត្តសញ្ញាណ)</i>"
+
+msgid "Nick"
+msgstr "សម្មតិនាម"
+
+msgid "Currently on"
+msgstr "បច្ចុប្បន្ន​បើក"
+
+msgid "Idle for"
+msgstr "ទំនេរ​សម្រាប់"
+
+msgid "Online since"
+msgstr "លើ​បណ្ដាញ​តាំង​ពី"
+
+msgid "<b>Defining adjective:</b>"
+msgstr "<b>កំណត់​គុណនាម ៖</b>"
+
+msgid "Glorious"
+msgstr "Glorious"
+
+#, c-format
+msgid "%s has changed the topic to: %s"
+msgstr "%s បានផ្លាស់ប្ដូរ​ប្រធានបទ​ទៅ ៖ %s"
+
+#, c-format
+msgid "%s has cleared the topic."
+msgstr "%s បានជម្រះ​ប្រធានបទ ។"
+
+#, c-format
+msgid "The topic for %s is: %s"
+msgstr "ប្រធាន​បទ​សម្រាប់ %s គឺ ៖ %s"
+
+#, c-format
+msgid "Unknown message '%s'"
+msgstr "មិន​ស្គាល់​សារ '%s'"
+
+msgid "Unknown message"
+msgstr "មិន​ស្គាល់​សារ"
+
+msgid "The IRC server received a message it did not understand."
+msgstr "ម៉ាស៊ីន​បម្រើ IRC ​បាន​ទទួល​សារ​ដែលវា​មិនយល់ ។"
+
+#, c-format
+msgid "Users on %s: %s"
+msgstr "អ្នក​ប្រើ​នៅ​លើ %s ៖ %s"
+
+msgid "Time Response"
+msgstr "​ពេលវេលា​ឆ្លើយ"
+
+msgid "The IRC server's local time is:"
+msgstr "ពេលវេលា​មូលដ្ឋាន​របស់​ម៉ាស៊ីនបម្រើ IRC គឺ ៖"
+
+msgid "No such channel"
+msgstr "គ្មាន​ឆានែល​បែបនេះ​ទេ"
+
+#. does this happen?
+msgid "no such channel"
+msgstr "គ្មាន​ឆានែលបែបនេះ​ទេ"
+
+msgid "User is not logged in"
+msgstr "អ្នកប្រើ​មិន​បាន​ចូល​ទេ"
+
+msgid "No such nick or channel"
+msgstr "គ្មាន​សម្មតិនាម ឬ​ឆានែល​ទេ"
+
+msgid "Could not send"
+msgstr "មិន​អាច​ផ្ញើ"
+
+#, c-format
+msgid "Joining %s requires an invitation."
+msgstr "ចូលរួម %s ត្រូវការ​កា​រអញ្ជើញ ។"
+
+msgid "Invitation only"
+msgstr "តែ​ការ​អញ្ជើញ​ប៉ុណ្ណោះ"
+
+#, c-format
+msgid "You have been kicked by %s: (%s)"
+msgstr "អ្នក​ត្រូ​វបាន​ធាក់ចេញ​ដោយ %s: (%s)"
+
+#. Remove user from channel
+#, c-format
+msgid "Kicked by %s (%s)"
+msgstr "បាន​ធាក់ចេញ​ដោយ %s (%s)"
+
+#, c-format
+msgid "mode (%s %s) by %s"
+msgstr "របៀប (%s %s) ដោយ %s"
+
+msgid "Invalid nickname"
+msgstr "សម្មតិនាម​មិនត្រឹមត្រូវ"
+
+msgid ""
+"Your selected nickname was rejected by the server. It probably contains "
+"invalid characters."
+msgstr ""
+"សម្មតិនាម​ដែល​អ្នក​បានជ្រើស​ត្រូ​វបានបដិសេធ​ដោយ​ម៉ាស៊ីបម្រើ ។ វា​ប្រហែលជា​មាន​តួអក្សរ​មិនត្រឹមត្រូវ ។"
+
+msgid ""
+"Your selected account name was rejected by the server. It probably contains "
+"invalid characters."
+msgstr ""
+"ឈ្មោះ​គណនី​ដែល​អ្នកបានជ្រើស​ត្រូវ​បានបដិសេធ​ដោយ​ម៉ាស៊ីនបម្រើ ។ វា​ប្រហែលជា​មាន​តួអក្សរ​មិនត្រឹមត្រូវ ។"
+
+msgid "Cannot change nick"
+msgstr "មិនអាច​ផ្លាស់ប្ដូរ​សម្មតិនាម​បានទេ"
+
+msgid "Could not change nick"
+msgstr "មិនអាច​ផ្លាស់ប្ដូរ​សម្មតិនាម​បានទេ"
+
+#, c-format
+msgid "You have parted the channel%s%s"
+msgstr "អ្នកបាន​បោះបង់​ឆានែល %s%s"
+
+msgid "Error: invalid PONG from server"
+msgstr "កំហុស ៖ PONG មិន​ត្រឹមត្រូវ​ពី​ម៉ាស៊ីនបម្រើ"
+
+#, c-format
+msgid "PING reply -- Lag: %lu seconds"
+msgstr "PING reply -- Lag ៖ %lu វិនាទី"
+
+#, c-format
+msgid "Cannot join %s: Registration is required."
+msgstr "មិនអាច​ចូល %s ៖ តម្រូវ​ឲ្យ​ចុះឈ្មោះ ។"
+
+msgid "Cannot join channel"
+msgstr "មិនអាច​ចូល​ឆានែល​បានទេ"
+
+msgid "Nick or channel is temporarily unavailable."
+msgstr "សម្មតិនាម ឬ​ឆានែល​មិនអាច​ប្រើ​បានជា​បណ្ដោះអាសន្ន ។"
+
+#, c-format
+msgid "Wallops from %s"
+msgstr "វាយ​ពី %s"
+
+msgid "action &lt;action to perform&gt;: Perform an action."
+msgstr "សកម្មភាព &lt;សកម្មភាព​ត្រូវ​អនុវត្ត&gt; ៖ អនុវត្ត​សកម្មភាព ។"
+
+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 "ctcp <nick> <msg> ៖ ផ្ញើ ctcp msg ទៅ​កាន់​សម្មតិនាម ។"
+
+msgid "chanserv: Send a command to chanserv"
+msgstr "chanserv ៖ ផ្ញើល​ពាក្យ​បញ្ជា​ទៅកាន់ 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;nick1&gt; [nick2] ...: យក​ស្ថានភាព​ការី​ឆានែល​ពី​អ្នកណា​ម្នាក់ ។ អ្នក​ត្រូវតែ​ជា​ការី​"
+"ឆានែល​ដើម្បី​ធ្វើ​វា ។"
+
+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;nick1&gt; [nick2] ...: យក​ស្ថានភាព​សំឡេង​ឆានែល​ពី​អ្នកណា​ម្នាក់ ដោយ​ការពារ​"
+"ពួកគេ​ពី​កា​រនិយាយ ប្រសិនបើ​ឆានែល​ត្រូវ​បាន​ប្រតិបត្តិ (+m) ។ អ្នក​ត្រូវតែ​ជា​ការី​ឆានែល​ដើម្បីធ្វើ​វា ។"
+
+msgid ""
+"invite &lt;nick&gt; [room]: Invite someone to join you in the specified "
+"channel, or the current channel."
+msgstr ""
+"អញ្ជើញ &lt;សម្មតិនាម&gt; [បន្ទប់] ៖ អញ្ជើញ​អ្នកណា​ម្នាក់​ឲ្យ​ចូលរួម​ជា​មួយ​អ្នក​នៅក្នុង​ឆានែល​ដែល​បាន​"
+"បញ្ជាក់ ឬ​ឆានែល​បច្ចុប្បន្ន ។"
+
+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;room1&gt;[,room2][,...] [key1[,key2][,...]] ៖ បញ្ចូល​ឆានែល​មួយ ឬ​ច្រើន​ ជា​ជម្រើស​"
+"ផ្ដល់​នូវ​សោ​ឆានែល​សម្រាប់​ឆានែល​នីមួយៗ​ ប្រសិន​បើ​ត្រូវការ ។"
+
+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;room1&gt;[,room2][,...] [key1[,key2][,...]] ៖ បញ្ចូល​ឆានែល​មួយ ឬច្រើន​ ជា​"
+"ជម្រើ​ស​ដោយ​ផ្ដល់​គ្រាប់ចុច​ឆានែល​សម្រាប់​ឆានែលនីមួយៗ​ ប្រសិន​បើ​ត្រូវការ ។"
+
+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; [message] ៖ យក​អ្នកណាម្នាក់​ចេញ​ពី​ឆានែល ។ អ្នក​ត្រូវ​តែ​ជា​ការី​ឆានែល​"
+"ដើម្បីការ​ធ្វើការងារ​នេះ ។"
+
+msgid ""
+"list: Display a list of chat rooms on the network. <i>Warning, some servers "
+"may disconnect you upon doing this.</i>"
+msgstr ""
+"បញ្ជី ៖ បង្ហាញ​បញ្ជី​បន្ទប់​ជជែក​នៅ​លើ​បណ្ដាញ ។ <i>ការ​ព្រមាន ម៉ាស៊ីនបម្រើ​មួយ​ចំនួន​អាច​ផ្ដាច់​អ្នកពី​ការធ្វើ​"
+"ការងារ​នេះ ។</i>"
+
+msgid "me &lt;action to perform&gt;: Perform an action."
+msgstr "me &lt;action to perform&gt; ៖ អនុវត្ត​សកម្មភាព ។"
+
+msgid "memoserv: Send a command to memoserv"
+msgstr "memoserv ៖ ផ្ញើ​ពាក្យ​បញ្ជា​ទៅ​កាន់ memoserv"
+
+msgid ""
+"mode &lt;+|-&gt;&lt;A-Za-z&gt; &lt;nick|channel&gt;: Set or unset a channel "
+"or user mode."
+msgstr ""
+"របៀប &lt;+|-&gt;&lt;A-Za-z&gt; &lt;nick|channel&gt; ៖ កំណត់ ឬ​មិនកំណត់​ឆានែល ឬ​​របៀប​"
+"អ្នកប្រើ ។"
+
+msgid ""
+"msg &lt;nick&gt; &lt;message&gt;: Send a private message to a user (as "
+"opposed to a channel)."
+msgstr ""
+"msg &lt;nick&gt; &lt;message&gt; ៖ ផ្ញើ​សារ​ឯកជន​ទៅ​ឲ្យ​​អ្នក​ប្រើ (ដូច​បានស្នើ​ទៅ​"
+"កាន់ឆានែល) ។"
+
+msgid "names [channel]: List the users currently in a channel."
+msgstr "names [channel] ៖ រាយ​អ្នក​ប្រើ​ដែល​បច្ចុប្បន្ន​នៅ​ក្នុង​ឆានែល ។"
+
+msgid "nick &lt;new nickname&gt;: Change your nickname."
+msgstr "nick &lt;new nickname&gt; ៖ ផ្លាស់ប្ដូរ​សម្មតិនាម​របស់​អ្នក ។"
+
+msgid "nickserv: Send a command to nickserv"
+msgstr "nickserv ៖ ផ្ញើ​ពាក្យ​បញ្ជា​ទៅ nickserv"
+
+msgid "notice &lt;target&lt;: Send a notice to a user or channel."
+msgstr "ចំណាំ &lt;target&lt; ៖ ផ្ញើ​កា​រចំណាំ​ទៅ​អ្នកប្រើ ឬ​ឆានែល ។"
+
+msgid ""
+"op &lt;nick1&gt; [nick2] ...: Grant channel operator status to someone. You "
+"must be a channel operator to do this."
+msgstr ""
+"op &lt;nick1&gt; [nick2] ...: ផ្ដល់ស្ថានភាព​ការី​ឆានែល​ឲ្យ​អ្នកណា​ម្នាក់ ។ អ្នក​ត្រូវតែ​ជា​ការី​"
+"ឆានែល​ដើម្បី​ធ្វើការងារ​នេះ ។"
+
+msgid ""
+"operwall &lt;message&gt;: If you don't know what this is, you probably "
+"can't use it."
+msgstr ""
+"operwall &lt;message&gt; ៖ ប្រសិនបើ​​អ្នក​មិនដឹង​ថា​វា​ជា​អ្វី​ទេ អ្នក​ប្រហែល​ជា​មិនអាច​ប្រើ​វា​"
+"បានទេ ។"
+
+msgid "operserv: Send a command to operserv"
+msgstr "operserv ៖ ផ្ញើ​ពាក្យ​បញ្ជា​ទៅ​កាន់ operserv"
+
+msgid ""
+"part [room] [message]: Leave the current channel, or a specified channel, "
+"with an optional message."
+msgstr ""
+"part [room] [message] ៖ ចាកចេញ​ពី​ឆានែល​បច្ចុប្បន្ន ឬ​ឆានែល​ដែល​បាន​បញ្ជាក់ ដោយ​មានសារជា​"
+"ជម្រើស ។"
+
+msgid ""
+"ping [nick]: Asks how much lag a user (or the server if no user specified) "
+"has."
+msgstr ""
+"ping [nick]៖ សួរ​ថាតើមាន​អ្នក​ប្រើ​យឺត​ប៉ុន្មាន​នាក់ (ឬ​ម៉ាស៊ីនបម្រើ ប្រសិនបើ​គ្មាន​អ្នក​ប្រើ​បាន​បញ្ជាក់) "
+"មាន ។"
+
+msgid ""
+"query &lt;nick&gt; &lt;message&gt;: Send a private message to a user (as "
+"opposed to a channel)."
+msgstr ""
+"សួរ &lt;nick&gt; &lt;message&gt; ៖ ផ្ញើ​សារ​ឯកជន​ទៅ​កាន់​អ្នក​ប្រើ (ដូច​បាន​ស្នើ​ទៅ​ឆានែល) ។"
+
+msgid "quit [message]: Disconnect from the server, with an optional message."
+msgstr "quit [message] ៖ ផ្ដាច់​ពី​ម៉ាស៊ីន​បម្រើ ជា​មួយ​នឹង​សារជា​ជម្រើស ​។"
+
+msgid "quote [...]: Send a raw command to the server."
+msgstr "quote [...] ៖ ផ្ញើ​ពាក្យ​បញ្ជា​ដើម​ថ្មី​ទៅ​កាន់​ម៉ាស៊ីន​បម្រើ ។"
+
+msgid ""
+"remove &lt;nick&gt; [message]: Remove someone from a room. You must be a "
+"channel operator to do this."
+msgstr ""
+"remove &lt;nick&gt; [message] ៖ យក​អ្នក​ណា​ម្នាក់​ចេញ​ពី​បន្ទប់ ។ អ្នក​ត្រូវតែ​ជា​ការី​បណ្ដាញ​"
+"ដើម្បីធ្វើការ​ងារ​នេះ ។"
+
+msgid "time: Displays the current local time at the IRC server."
+msgstr "ពេលវេលា ៖ បង្ហាញ​ពេលវេលា​មូលដ្ឋាន​បច្ចុប្បន្ននៅ​ម៉ាស៊ីនបម្រើ IRC ។"
+
+msgid "topic [new topic]: View or change the channel topic."
+msgstr "ប្រធាន​បទ [ប្រធាន​បទ​ថ្មី] ៖ មើល ឬ​ផ្លាស់ប្ដូរ​ប្រធាន​បទ​របស់​ឆានែល ។"
+
+msgid "umode &lt;+|-&gt;&lt;A-Za-z&gt;: Set or unset a user mode."
+msgstr "umode &lt;+|-&gt;&lt;A-Za-z&gt; ៖ កំណត់ ឬ​មិន​កំណត់​របៀប​អ្នក​ប្រើ ​។"
+
+msgid "version [nick]: send CTCP VERSION request to a user"
+msgstr "កំណែ [nick] ៖ ផ្ញើ​សំណើ​កំណែ​របស់ CTCP ទៅ​ឲ្យ​អ្នក​ប្រើ"
+
+msgid ""
+"voice &lt;nick1&gt; [nick2] ...: Grant channel voice status to someone. You "
+"must be a channel operator to do this."
+msgstr ""
+"សំឡេង &lt;nick1&gt; [nick2] ...: ផ្ដល់​នូវ​ស្ថានភាព​សំឡេង​ទៅ​ឲ្យ​អ្នកណាម្នាក់ ។ អ្នក​ត្រូវតែ​ជា​"
+"ការីឆានែល​ដើម្បីធ្វើការងារ​នេះ ។"
+
+msgid ""
+"wallops &lt;message&gt;: If you don't know what this is, you probably can't "
+"use it."
+msgstr ""
+"វាយ &lt;សារ&gt; ៖ ប្រសិនបើ​អ្នកមិនដឹង​ថា​នេះ​ជា​អ្វីទេ អ្នកប្រហែលជា​មិនអាច​ប្រើវា​បានទេ ។"
+
+msgid "whois [server] &lt;nick&gt;: Get information on a user."
+msgstr "whois [server] &lt;nick&gt; ៖ យក​ព័ត៌មាន​​របស់​អ្នកប្រើ ។"
+
+msgid "whowas &lt;nick&gt;: Get information on a user that has logged off."
+msgstr "whowas &lt;nick&gt; ៖ យក​ព័ត៌មាន​របស់​អ្នក​ប្រើ​ដេល​បាន​ចេញ ។"
+
+#, c-format
+msgid "Reply time from %s: %lu seconds"
+msgstr "ពេលវេលា​ឆ្លើយ​តប​ពី %s ៖ %lu ​វិនាទី"
+
+msgid "PONG"
+msgstr "PONG"
+
+msgid "CTCP PING reply"
+msgstr "ការ​ឆ្លើយ​តប​របស់ CTCP PING"
+
+msgid "Disconnected."
+msgstr "បាន​ផ្ដាច់ ។"
+
+msgid "Unknown Error"
+msgstr "មិន​ស្គាល់​កំហុស"
+
+msgid "Ad-Hoc Command Failed"
+msgstr "ពាក្យ​បញ្ជា​ Ad-Hoc បាន​បរាជ័យ"
+
+msgid "execute"
+msgstr "ប្រតិបត្តិ"
+
+msgid "Server requires TLS/SSL for login. No TLS/SSL support found."
+msgstr "ម៉ាស៊ីន​បម្រើ​ត្រូវការ TLS/SSL ដើម្បី​ចូល ។ រក​មិនឃើញការគាំទ្រ TLS/SSL នោះ​ទេ ។"
+
+msgid "You require encryption, but no TLS/SSL support found."
+msgstr "អ្នក​ត្រូវការ​ការ​អ៊ិនគ្រីប ប៉ុន្តែ​រក​មិនឃើញ​ការគាំទ្រ TLS/SSL ។"
+
+msgid "Server requires plaintext authentication over an unencrypted stream"
+msgstr "ម៉ាស៊ីន​បម្រើ​ត្រូវការ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ជា​អត្ថបទ​ធម្មតា​លើ​ស្ទ្រីម​ដែល​មិនបានអ៊ិនគ្រីប"
+
+#, c-format
+msgid ""
+"%s requires plaintext authentication over an unencrypted connection. Allow "
+"this and continue authentication?"
+msgstr ""
+"%s ត្រូវការ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ធម្មតា​លើកា​រតភ្ជាប់​ដែល​មិនបានអ៊ិនគ្រីប ។ អនុញ្ញាត​វា​ ហើយ​បន្ត​"
+"ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ?"
+
+msgid "Plaintext Authentication"
+msgstr "ផ្ទៀងផ្ទាត់​ភាព​​ត្រឹមត្រូវ​ធម្មតា"
+
+msgid "Invalid response from server."
+msgstr "កា​រឆ្លើយ​តប​មិនត្រឹមត្រូវ​ពី​ម៉ាស៊ីន​បម្រើ ។"
+
+msgid "Server does not use any supported authentication method"
+msgstr "ម៉ាស៊ិនបម្រើ​មិន​ប្រើ​វិធីសាស្ត្រ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ដែល​បានគាំទ្រ​ណាមួយ​ទេ"
+
+msgid "Invalid challenge from server"
+msgstr "ការ​ប្រខិតខំ​មិនត្រឹមត្រូវ​ពី​ម៉ាស៊ីនបម្រើ"
+
+msgid "SASL error"
+msgstr "កំហុស SASL"
+
+msgid "Full Name"
+msgstr "ឈ្មោះ​ពេញ"
+
+msgid "Family Name"
+msgstr "នាម​ត្រកូល"
+
+msgid "Given Name"
+msgstr "នាម​ខ្លួន"
+
+msgid "URL"
+msgstr "URL"
+
+msgid "Street Address"
+msgstr "អាសយដ្ឋាន​ផ្លូវ"
+
+msgid "Extended Address"
+msgstr "អាសយដ្ឋាន​ដែល​បាន​ពង្រីក"
+
+msgid "Locality"
+msgstr "មូលដ្ឋាន"
+
+msgid "Region"
+msgstr "តំបន់"
+
+msgid "Postal Code"
+msgstr "លេខប្រៃសណីយ៍"
+
+msgid "Country"
+msgstr "ប្រទេស"
+
+#. lots of clients (including purple) do this, but it's
+#. * out of spec
+msgid "Telephone"
+msgstr "ទូរស័ព្ទ"
+
+msgid "Organization Name"
+msgstr "ឈ្មោះ​អង្គភាព"
+
+msgid "Organization Unit"
+msgstr "ផ្នែក​នៃ​អង្គភាព"
+
+msgid "Role"
+msgstr "តួនាទី"
+
+msgid "Birthday"
+msgstr "ថ្ងៃ​កំណើត"
+
+msgid "Description"
+msgstr "សេចក្ដី​ពិពណ៌នា"
+
+msgid "Edit XMPP vCard"
+msgstr "កែសម្រួល XMPP vCard"
+
+msgid ""
+"All items below are optional. Enter only the information with which you feel "
+"comfortable."
+msgstr "ធាតុ​ទាំង​អស់​ខាង​ក្រោម​ជា​ជម្រើស ។ បញ្ចូល​តែ​ព័ត៌មាន​ដែល​អ្នក​គិត​ថា​ងាយស្រួល ។"
+
+msgid "Client"
+msgstr "ម៉ាស៊ីន​ភ្ញៀវ"
+
+msgid "Operating System"
+msgstr "ប្រព័ន្ធ​ប្រតិបត្តិការ"
+
+msgid "Last Activity"
+msgstr "សកម្មភាព​ចុងក្រោយ"
+
+msgid "Service Discovery Info"
+msgstr "ព័ត៌មាន​រកឃើញ​សេវា"
+
+msgid "Service Discovery Items"
+msgstr "ធាតុ​រក​ឃើញ​ព័ត៌មាន"
+
+msgid "Extended Stanza Addressing"
+msgstr "កំណត់​អាសយដ្ឋាន Stanza ដែល​បាន​ពង្រីក"
+
+msgid "Multi-User Chat"
+msgstr "ការ​ជជែក​ដែល​មាន​អ្នក​ប្រើច្រើន​នាក់"
+
+msgid "Multi-User Chat Extended Presence Information"
+msgstr "ព័ត៌មាន​វត្តមាន​ដែល​បាន​ពង្រីក​នៃ​កា​រជជែក​ដែល​មាន​អ្នកប្រើ​ច្រើននាក់"
+
+msgid "In-Band Bytestreams"
+msgstr "ស្ទ្រីម​បៃ​ក្នុងក្រុម"
+
+msgid "Ad-Hoc Commands"
+msgstr "ពាក្យ​បញ្ជា Ad-Hoc"
+
+msgid "PubSub Service"
+msgstr "សេវា PubSub"
+
+msgid "SOCKS5 Bytestreams"
+msgstr "ស្ទ្រីម​បៃ SOCKS5"
+
+msgid "Out of Band Data"
+msgstr "ទិន្នន័យ​ក្រៅ​ក្រុម"
+
+msgid "XHTML-IM"
+msgstr "XHTML-IM"
+
+msgid "In-Band Registration"
+msgstr "ការ​ចុះឈ្មោះ​ក្នុងក្រុម"
+
+msgid "User Location"
+msgstr "ទីតាំង​របស់​អ្នក​ប្រើ"
+
+msgid "User Avatar"
+msgstr "រូបភាព​របស់​អ្នក"
+
+msgid "Chat State Notifications"
+msgstr "ការ​ជូនដំណឹង​ស្ថានភាព​ជជែក"
+
+msgid "Software Version"
+msgstr "កំណែ​​កម្មវិធី"
+
+msgid "Stream Initiation"
+msgstr "ការ​ចាប់ផ្ដើម​ស្ទ្រីម​"
+
+msgid "File Transfer"
+msgstr "កា​រផ្ទេរ​ឯកសារ"
+
+msgid "User Mood"
+msgstr "អារម្មណ៍​អ្នក​ប្រើ"
+
+msgid "User Activity"
+msgstr "សកម្មភាព​អ្នក​ប្រើ"
+
+msgid "Entity Capabilities"
+msgstr "សមត្ថភាព​អង្គភាព"
+
+msgid "Encrypted Session Negotiations"
+msgstr "ការ​ចរចារ​សម័យ​ដែល​បាន​អ៊ិនគ្រីប"
+
+msgid "User Tune"
+msgstr "អ្នក​ប្រើ​"
+
+msgid "Roster Item Exchange"
+msgstr "ផ្លាស់ប្ដូរ​ធាតុ​បញ្ជីឈ្មោះ"
+
+msgid "Reachability Address"
+msgstr "អាសយដ្ឋាន​ដែល​អាច​ចូល​បាន"
+
+msgid "User Profile"
+msgstr "ទម្រង់​អ្នក​ប្រើ"
+
+msgid "Jingle"
+msgstr "ឃ្លា​ខ្លីៗ"
+
+msgid "Jingle Audio"
+msgstr "អូឌីយ៉ូ​ឃ្លា​ខ្លីៗ"
+
+msgid "User Nickname"
+msgstr "សម្មតិនាម​អ្នក​ប្រើ"
+
+msgid "Jingle ICE UDP"
+msgstr "ឃ្លាខ្លីៗ​របស់ ICE UDP"
+
+msgid "Jingle ICE TCP"
+msgstr "ឃ្លាខ្លីៗ​របស់ ICE TCP"
+
+msgid "Jingle Raw UDP"
+msgstr "ឃ្លាខ្លីៗ​របស់ UDP ដើម"
+
+msgid "Jingle Video"
+msgstr "វីដេអូ​ឃ្លាខ្លីៗ"
+
+msgid "Jingle DTMF"
+msgstr "ឃ្លាខ្លីៗ DTMF"
+
+msgid "Message Receipts"
+msgstr "ទទួលសារ"
+
+msgid "Public Key Publishing"
+msgstr "បោះពុម្ព​គ្រាប់ចុច​សាធារណៈ"
+
+msgid "User Chatting"
+msgstr "ការ​ជជែក​របស់​អ្នក​ប្រើ"
+
+msgid "User Browsing"
+msgstr "កា​ររុករក​របស់​អ្នក​ប្រើ"
+
+msgid "User Gaming"
+msgstr "ការ​លេង​ល្បែង​របស់​អ្នក​ប្រើ"
+
+msgid "User Viewing"
+msgstr "កា​រមើលរបស់​អ្នក​ប្រើ"
+
+msgid "Ping"
+msgstr "Ping"
+
+msgid "Stanza Encryption"
+msgstr "ការ​អ៊ិនគ្រីប Stanza"
+
+msgid "Entity Time"
+msgstr "ពេល​វេលា​​របស់​អង្គភាព"
+
+msgid "Delayed Delivery"
+msgstr "ការ​បញ្ជូន​បាន​ពន្យារពេល"
+
+msgid "Collaborative Data Objects"
+msgstr "វត្ថុ​ទិន្នន័យ​សហការណ៍"
+
+msgid "File Repository and Sharing"
+msgstr "ឃ្លាំង​ឯកសារ និង​ការ​ចែករំលែក"
+
+msgid "STUN Service Discovery for Jingle"
+msgstr "ការ​រកឃើញសេវា STUN សម្រាប់​ឃ្លាខ្លីៗ"
+
+msgid "Simplified Encrypted Session Negotiation"
+msgstr "ការ​ចរចារ​សម័យ​ដែល​បាន​អ៊ិនគ្រីប​សាមញ្ញ"
+
+msgid "Hop Check"
+msgstr "ពិនិត្យមើល​ដំណាក់"
+
+msgid "Capabilities"
+msgstr "សមត្ថភាព"
+
+msgid "Priority"
+msgstr "អាទិភាព"
+
+msgid "Resource"
+msgstr "ធមធាម"
+
+msgid "Middle Name"
+msgstr "ឈ្មោះ​កណ្ដាល"
+
+msgid "Address"
+msgstr "អាសយដ្ឋាន"
+
+msgid "P.O. Box"
+msgstr "ប្រអប់​សំបុត្រ"
+
+msgid "Photo"
+msgstr "រូបថត"
+
+msgid "Logo"
+msgstr "រូបសញ្ញា"
+
+msgid "Un-hide From"
+msgstr "មិនលាក់​ពី"
+
+msgid "Temporarily Hide From"
+msgstr "លាក់​​ជា​បណ្ដោះអាសន្ន​ពី"
+
+#. && NOT ME
+msgid "Cancel Presence Notification"
+msgstr "បោះបង់​កា​រជូនដំណឹង​បច្ចុប្បន្ន"
+
+msgid "(Re-)Request authorization"
+msgstr "ស្នើ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ឡើង​វិញ"
+
+#. if(NOT ME)
+#. shouldn't this just happen automatically when the buddy is
+#. removed?
+msgid "Unsubscribe"
+msgstr "ឈប់ជាវ"
+
+msgid "Log In"
+msgstr "ចូល"
+
+msgid "Log Out"
+msgstr "ចេញ"
+
+msgid "Chatty"
+msgstr "កា​រជជែក"
+
+msgid "Extended Away"
+msgstr "ការ​ចាកឆ្ងាយ​បាន​ពន្យារ"
+
+msgid "Do Not Disturb"
+msgstr "កុំរំខាន"
+
+msgid "JID"
+msgstr "JID"
+
+msgid "Last Name"
+msgstr "នាម​ត្រកូល"
+
+msgid "The following are the results of your search"
+msgstr "ខាង​ក្រោម​នេះ​ជា​លទ្ធផល​នៃ​ការ​ស្វែងរក​របស់​អ្នក"
+
+#. current comment from Jabber User Directory users.jabber.org
+msgid ""
+"Find a contact by entering the search criteria in the given fields. Note: "
+"Each field supports wild card searches (%)"
+msgstr ""
+"រក​ទំនាក់ទំនង​ដោយ​បញ្ចូល​លក្ខខណ្ឌ​ស្វែងរក​នៅក្នុង​វាល​ដែលបានផ្ដល់​ ។ ចំណាំ ៖ វាល​នីមួយៗ​គាំទ្រ​ការ​ស្វែងរក​ដោយ​"
+"អក្សរ​ជំនួស (%)"
+
+msgid "Directory Query Failed"
+msgstr "បាន​បរាជ័យ​ក្នុងកា​រសួរ​ថត"
+
+msgid "Could not query the directory server."
+msgstr "មិនអាច​សួរ​ម៉ាស៊ីនបម្រើថត​បានទេ ។"
+
+#. Try to translate the message (see static message
+#. list in jabber_user_dir_comments[])
+#, c-format
+msgid "Server Instructions: %s"
+msgstr "ការ​ណែនាំ​ម៉ាស៊ីន​បម្រើ ៖ %s"
+
+msgid "Fill in one or more fields to search for any matching XMPP users."
+msgstr "បំពេញ​វាល​មួយ ឬ​ច្រើន​ដើម្បី​ស្វែងរក​អ្នក​ប្រើ XMPP ដែល​ផ្គូផ្គង ។"
+
+msgid "Email Address"
+msgstr "អាសយដ្ឋាន​អ៊ីមែល"
+
+msgid "Search for XMPP users"
+msgstr "ស្វែងរក​អ្នក​ប្រើ XMPP"
+
+#. "Search"
+msgid "Search"
+msgstr "ស្វែងរក"
+
+msgid "Invalid Directory"
+msgstr "ថត​មិន​ត្រឹមត្រូវ"
+
+msgid "Enter a User Directory"
+msgstr "បញ្ចូល​ថត​របស់​អ្នក​ប្រើ"
+
+msgid "Select a user directory to search"
+msgstr "ជ្រើស​ថត​អ្នក​ប្រើ​ដែល​ត្រូវ​ស្វែងរក"
+
+msgid "Search Directory"
+msgstr "ថត​ស្វែងរក"
+
+msgid "_Room:"
+msgstr "បន្ទប់ ៖"
+
+msgid "_Server:"
+msgstr "ម៉ាស៊ីន​បម្រើ ៖"
+
+msgid "_Handle:"
+msgstr "គ្រប់គ្រង ៖"
+
+#, c-format
+msgid "%s is not a valid room name"
+msgstr "%s មិនមែន​ជា​ឈ្មោះ​បន្ទប់​ត្រឹមត្រូវ​ទេ"
+
+msgid "Invalid Room Name"
+msgstr "ឈ្មោះ​បន្ទប់​មិន​ត្រឹមត្រូវ"
+
+#, c-format
+msgid "%s is not a valid server name"
+msgstr "%s មិនមែន​ជា​ឈ្មោះ​ម៉ាស៊ីន​បម្រើ​ដែល​ត្រឹមត្រូវ​ទេ"
+
+msgid "Invalid Server Name"
+msgstr "ឈ្មោះ​ម៉ាស៊ីនបម្រើ​មិន​ត្រឹមត្រូវ"
+
+#, c-format
+msgid "%s is not a valid room handle"
+msgstr "%s មិនមែន​ជា​កា​រគ្រប់គ្រង​បន្ទប់​ត្រឹមត្រូវ​ទេ"
+
+msgid "Invalid Room Handle"
+msgstr "គ្រប់គ្រង​បន្ទប់មិន​ត្រឹមត្រូវ"
+
+msgid "Configuration error"
+msgstr "កំហុស​ក្នុងការ​​​កំណត់​​រចនាសម្ព័ន្ធ"
+
+msgid "Unable to configure"
+msgstr "មិនអាច​កំណត់​រចនាសម្ព័ន្ធ​បានទេ"
+
+msgid "Room Configuration Error"
+msgstr "កំហុស​ក្នុងការ​កំណត់​រចនាសម្ព័ន្ធ​បន្ទប់"
+
+msgid "This room is not capable of being configured"
+msgstr "បន្ទប់​នេះ​មិនអាច​ត្រូវ​បានកំណត់​រចនាសម្ព័ន្ធ​ទេ"
+
+msgid "Registration error"
+msgstr "កំហុស​ក្នុងការ​ចុះឈ្មោះ"
+
+msgid "Nick changing not supported in non-MUC chatrooms"
+msgstr "ការ​ផ្លាស់ប្ដូរ​សម្មតិនាម​​មិន​បានគាំទ្រ​នៅ​ក្នុង​បន្ទប់​ជជែក​ដែល​មិនមែនជា MUC"
+
+msgid "Error retrieving room list"
+msgstr "កំហុស​ក្នុងកា​រទៅយក​បញ្ជី​បន្ទប់"
+
+msgid "Invalid Server"
+msgstr "ម៉ាស៊ីន​បម្រើ​មិន​ត្រឹមត្រូវ"
+
+msgid "Enter a Conference Server"
+msgstr "បញ្ចូល​ម៉ាស៊ីន​បម្រើ​សន្និសីទ"
+
+msgid "Select a conference server to query"
+msgstr "ជ្រើស​ម៉ាស៊ីនបម្រើ​សន្និសីទ​ត្រូវ​សួរ"
+
+msgid "Find Rooms"
+msgstr "រក​បន្ទប់"
+
+msgid "You require encryption, but it is not available on this server."
+msgstr "អ្នកត្រូវកា​រការ​អ៊ិនគ្រីប ប៉ុន្តែ​មិនអាច​ប្រើ​បាន​នៅ​លើ​​ម៉ាស៊ីន​បម្រើនេះ​ទេ ។"
+
+msgid "Write error"
+msgstr "កំហុស​ក្នុងកា​រសរសេរ"
+
+msgid "Ping timeout"
+msgstr "Ping អស់ពេល"
+
+msgid "Read Error"
+msgstr "កំហុស​ក្នុងការ​អាន"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"មិនអាច​បង្កើត​ការ​តភ្ជាប់​ជា​មួយ​ម៉ាស៊ីនបម្រើ ៖\n"
+"%s"
+
+msgid "Unable to create socket"
+msgstr "មិន​អាច​បង្កើត​រន្ធ​បានទេ"
+
+msgid "Invalid XMPP ID"
+msgstr "លេខសម្គាល់ XMPP មិន​ត្រឹមត្រូវ"
+
+msgid "Invalid XMPP ID. Domain must be set."
+msgstr "លេខសម្គាល់ XMPP មិនត្រឹមត្រូវ ។ ដែន​ត្រូវ​តែ​បានកំណត់ ។"
+
+#, c-format
+msgid "Registration of %s@%s successful"
+msgstr "ការ​ចុះឈ្មោះ​ %s@%s ដោយ​ជោគជ័យ"
+
+#, c-format
+msgid "Registration to %s successful"
+msgstr "កា​រចុះឈ្មោះ​ទៅ​ %s ដោយជោគជ័យ"
+
+msgid "Registration Successful"
+msgstr "ការ​ចុះ​ឈ្មោះ​បាន​ជោគជ័យ"
+
+msgid "Registration Failed"
+msgstr "បានបរាជ័យ​ក្នុងកា​រចុះឈ្មោះ"
+
+#, c-format
+msgid "Registration from %s successfully removed"
+msgstr "បាន​យក​ការ​ចុះឈ្មោះ​ពី %s ដោយជោគជ័យ​ចេញ"
+
+msgid "Unregistration Successful"
+msgstr "លុប​ការ​ចុះឈ្មោះ​ដោយ​ជោគជ័យ"
+
+msgid "Unregistration Failed"
+msgstr "បានបរាជ័យ​ក្នុងការ​លុប​ការ​ចុះឈ្មោះ"
+
+msgid "Already Registered"
+msgstr "បានចុះឈ្មោះ​រួច​ហើយ"
+
+msgid "State"
+msgstr "ស្ថាន​​ភាព"
+
+msgid "Postal code"
+msgstr "លេខ​ប្រៃសណីយ៍"
+
+msgid "Phone"
+msgstr "ទូរស័ព្ទ​"
+
+msgid "Date"
+msgstr "កាល​​បរិច្ឆេទ"
+
+msgid "Unregister"
+msgstr "មិន​ចុះឈ្មោះ"
+
+msgid ""
+"Please fill out the information below to change your account registration."
+msgstr "សូម​បំពេញ​ព័ត៌មាន​ខាងក្រោម​ ដើម្បី​ផ្លាស់ប្ដូរ​ការ​ចុះឈ្មោះគណនី​របស់​អ្នក ។"
+
+msgid "Please fill out the information below to register your new account."
+msgstr "សូម​បំពេញ​ព័ត៌មាន​ខាងក្រោម​ ដើម្បីចុះឈ្មោះ​គណនី​ថ្មី​របស់​អ្នក ។"
+
+msgid "Register New XMPP Account"
+msgstr "ចុះឈ្មោះគណនី​ XMPP ថ្មី"
+
+msgid "Register"
+msgstr "ចុះឈ្មោះ"
+
+#, c-format
+msgid "Change Account Registration at %s"
+msgstr "ផ្លាស់ប្ដូរ​ការ​ចុះឈ្មោះ​គណនី​នៅ %s"
+
+#, c-format
+msgid "Register New Account at %s"
+msgstr "ចុះឈ្មោះ​គណនីថ្មី​នៅ %s"
+
+msgid "Change Registration"
+msgstr "ផ្លាស់​ប្តូរ​ការ​ចុះ​ឈ្មោះ"
+
+msgid "Error unregistering account"
+msgstr "កំហុស​ក្នុងកា​រលុប​ការ​ចុះឈ្មោះ​គណនី"
+
+msgid "Account successfully unregistered"
+msgstr "បានលុបការ​ចុះឈ្មោះគណនី​ដោយ​ជោគជ័យ"
+
+msgid "Initializing Stream"
+msgstr "ចាប់ផ្ដើម​ស្ទ្រីម"
+
+msgid "Initializing SSL/TLS"
+msgstr "ចាប់ផ្ដើម SSL/TLS"
+
+msgid "Authenticating"
+msgstr "ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ"
+
+msgid "Re-initializing Stream"
+msgstr "ចាប់ផ្ដើមស្ទ្រីម​ឡើង​វិញ"
+
+msgid "Server doesn't support blocking"
+msgstr "ម៉ាស៊ីន​បម្រើ​មិន​គាំទ្រ​ការ​ទប់ស្កាត់​ទេ"
+
+msgid "Not Authorized"
+msgstr "មិន​បានផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ទេ"
+
+msgid "Both"
+msgstr "ទាំង​ពីរ​"
+
+msgid "From (To pending)"
+msgstr "ពី (ដល់​មិន​ទាន់សម្រេច)"
+
+msgid "From"
+msgstr "ពី"
+
+msgid "To"
+msgstr "ទៅ"
+
+msgid "None (To pending)"
+msgstr "គ្មាន (ដល់​មិនទាន់សម្រេច)"
+
+msgid "None"
+msgstr "គ្មាន"
+
+msgid "Subscription"
+msgstr "ការ​ជាវ"
+
+msgid "Mood"
+msgstr "អារម្មណ៍"
+
+msgid "Now Listening"
+msgstr "ឥឡូវ​កំពុង​ស្ដាប់"
+
+msgid "Mood Text"
+msgstr "អត្ថបទ​អារម្មណ៍"
+
+msgid "Allow Buzz"
+msgstr "អនុញ្ញាត​ Buzz"
+
+msgid "Tune Artist"
+msgstr "សិល្បករ Tune"
+
+msgid "Tune Title"
+msgstr "ចំណង​ជើង Tune"
+
+msgid "Tune Album"
+msgstr "អាល់ប៊ុម Tune"
+
+msgid "Tune Genre"
+msgstr "ប្រភេទ Tune"
+
+msgid "Tune Comment"
+msgstr "អធិប្បាយ Tune"
+
+msgid "Tune Track"
+msgstr "បទ Tune"
+
+msgid "Tune Time"
+msgstr "ពេលវេលា Tune"
+
+msgid "Tune Year"
+msgstr "ឆ្នាំ Tune"
+
+msgid "Tune URL"
+msgstr "URL Tune"
+
+msgid "Password Changed"
+msgstr "បាន​ផ្លាស់ប្ដូរ​ពាក្យ​សម្ងាត់"
+
+msgid "Your password has been changed."
+msgstr "ពាក្យ​សម្ងាត់​របស់​អ្នក​ត្រូវ​បាន​ផ្លាស់ប្ដូរ ។"
+
+msgid "Error changing password"
+msgstr "កំហុស​ក្នុងកា​រផ្លាស់ប្ដូរ​ពាក្យសម្ងាត់"
+
+msgid "Password (again)"
+msgstr "ពាក្យ​សម្ងាត់ (ម្ដង​ទៀត)"
+
+msgid "Change XMPP Password"
+msgstr "ផ្លាស់ប្ដូរ​ពាក្យ​សម្ងាត់ XMPP"
+
+msgid "Please enter your new password"
+msgstr "សូម​បញ្ចូល​ពាក្យ​សម្ងាត់​ថ្មី​របស់​អ្នក"
+
+msgid "Set User Info..."
+msgstr "កំណត់​ព័ត៌មាន​របស់​អ្នក​ប្រើ..."
+
+#. if (js->protocol_options & CHANGE_PASSWORD) {
+msgid "Change Password..."
+msgstr "ផ្លាស់ប្ដូរ​ពាក្យ​សម្ងាត់..."
+
+#. }
+msgid "Search for Users..."
+msgstr "ស្វែងរក​អ្នកប្រើ..."
+
+msgid "Bad Request"
+msgstr "សំណើ​មិន​ល្អ"
+
+msgid "Conflict"
+msgstr "ប៉ះទង្គិច"
+
+msgid "Feature Not Implemented"
+msgstr "លក្ខណៈពិសេស​មិនបាន​អនុវត្ត"
+
+msgid "Forbidden"
+msgstr "បានហាមឃាត់"
+
+msgid "Gone"
+msgstr "បានទៅ​ហើយ"
+
+msgid "Internal Server Error"
+msgstr "កំហុស​ម៉ាស៊ីន​បម្រើ​ខាង​ក្នុង"
+
+msgid "Item Not Found"
+msgstr "រក​មិនឃើញ​ធាតុ"
+
+msgid "Malformed XMPP ID"
+msgstr "លេខសម្គាល់ XMPP មាន​ទ្រង់ទ្រាយ"
+
+msgid "Not Acceptable"
+msgstr "មិន​អាច​ទទួលយក​បានទេ"
+
+msgid "Not Allowed"
+msgstr "មិនបាន​អនុញ្ញាត​ទេ"
+
+msgid "Payment Required"
+msgstr "ត្រូវការ​​ការ​ចំណាយ"
+
+msgid "Recipient Unavailable"
+msgstr "មិនមាន​អ្នក​ទទួល​ទេ"
+
+msgid "Registration Required"
+msgstr "ត្រូវការ​ការ​ចុះឈ្មោះ"
+
+msgid "Remote Server Not Found"
+msgstr "រក​មិនឃើញ​ម៉ាស៊ីនបម្រើ​ពី​ចម្ងាយ"
+
+msgid "Remote Server Timeout"
+msgstr "អស់ពេល​ម៉ាស៊ីនបម្រើ​ពី​ចម្ងាយ"
+
+msgid "Server Overloaded"
+msgstr "លើស​ចំណុះ​ម៉ាស៊ីនបម្រើ"
+
+msgid "Service Unavailable"
+msgstr "មិនមាន​សេវា​ទេ"
+
+msgid "Subscription Required"
+msgstr "ត្រូវការ​ការ​ជាវ"
+
+msgid "Unexpected Request"
+msgstr "សំណើ​ដែល​មិន​រំពឹង​ទុក"
+
+msgid "Authorization Aborted"
+msgstr "បានបោះបង់​កា​រផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ"
+
+msgid "Incorrect encoding in authorization"
+msgstr "ការ​អ៊ិនកូដ​មិន​ត្រឹមត្រូវ​នៅក្នុងកា​រផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ"
+
+msgid "Invalid authzid"
+msgstr "ការ​ផ្ទៀងផ្ទាត់​មិន​ត្រឹមត្រូវ"
+
+msgid "Invalid Authorization Mechanism"
+msgstr "យន្ដការ​ផ្ទៀងផ្ទាត់​មិន​ត្រឹមត្រូវ"
+
+msgid "Authorization mechanism too weak"
+msgstr "យន្តការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​​ខ្សោយ​ពេក"
+
+msgid "Temporary Authentication Failure"
+msgstr "ភាព​បរាជ័យ​ក្នុងការ​ផ្ទៀងផ្ទាត់​បណ្ដោះអាសន្ន"
+
+msgid "Authentication Failure"
+msgstr "ភាព​បរាជ័យ​ក្នុងការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ"
+
+msgid "Bad Format"
+msgstr "ទ្រង់ទ្រាយ​មិនល្អ"
+
+msgid "Bad Namespace Prefix"
+msgstr "បុព្វបទ​ចន្លោះ​ឈ្មោះ​មិនល្អ"
+
+msgid "Resource Conflict"
+msgstr "ប៉ះទង្គិច​ធនធាន"
+
+msgid "Connection Timeout"
+msgstr "អស់​ពេល​​តភ្ជាប់"
+
+msgid "Host Gone"
+msgstr "ម៉ាស៊ីន​បាន​ទៅហើយ"
+
+msgid "Host Unknown"
+msgstr "មិនស្គាល់​ម៉ាស៊ីន"
+
+msgid "Improper Addressing"
+msgstr "កា​រដាក់​អាសយដ្ឋាន​មិន​ត្រឹមត្រូវ"
+
+msgid "Invalid ID"
+msgstr "លេខ​សម្គាល់​មិន​ត្រឹមត្រូវ"
+
+msgid "Invalid Namespace"
+msgstr "ចន្លោះ​ឈ្មោះ​មិន​ត្រឹមត្រូវ"
+
+msgid "Invalid XML"
+msgstr "XML មិន​ត្រឹមត្រូវ"
+
+msgid "Non-matching Hosts"
+msgstr "គ្មាន​ម៉ាស៊ីន​ផ្គូផ្គង​ទេ"
+
+msgid "Policy Violation"
+msgstr "ការ​បំពាន​គោលនយោបាយ"
+
+msgid "Remote Connection Failed"
+msgstr "បានបរាជ័យ​ក្នុងកា​រតភ្ជាប់​ពី​ចម្ងាយ"
+
+msgid "Resource Constraint"
+msgstr "កា​រដាក់​កម្រិត​ធនធាន"
+
+msgid "Restricted XML"
+msgstr "XML ដែល​បាន​ដាក់​កម្រិត"
+
+msgid "See Other Host"
+msgstr "មើល​ម៉ាស៊ីន​ផ្សេង"
+
+msgid "System Shutdown"
+msgstr "បិទ​ប្រព័ន្ធ"
+
+msgid "Undefined Condition"
+msgstr "លក្ខខណ្ឌ​មិនបានកំណត់"
+
+msgid "Unsupported Encoding"
+msgstr "ការ​អ៊ិនកូដ​ដែល​មិនបាន​គាំទ្រ"
+
+msgid "Unsupported Stanza Type"
+msgstr "ប្រភេទ Stanza ដែល​មិនបានគាំទ្រ"
+
+msgid "Unsupported Version"
+msgstr "កំណែ​ដែល​មិនបានគាំទ្រ"
+
+msgid "XML Not Well Formed"
+msgstr "XML មិនបាន​រៀបចំ​បាន​ល្អ"
+
+msgid "Stream Error"
+msgstr "កំហុស​ស្ទ្រីម"
+
+#, c-format
+msgid "Unable to ban user %s"
+msgstr "មិនអាច​ហាមឃាត់​អ្នក​ប្រើ %s"
+
+#, c-format
+msgid "Unknown affiliation: \"%s\""
+msgstr "មិនស្គាល់​ការ​ទាក់ទង​គ្នា ៖ \"%s\""
+
+#, c-format
+msgid "Unable to affiliate user %s as \"%s\""
+msgstr "មិនអាច​ទាក់ទង​អ្នក​ប្រើ %s ជា \"%s\""
+
+#, c-format
+msgid "Unknown role: \"%s\""
+msgstr "មិនស្គាល់​តួនាទី ៖ \"%s\""
+
+#, c-format
+msgid "Unable to set role \"%s\" for user: %s"
+msgstr "មិនអាច​កំណត់​តួនាទី \"%s\" សម្រាប់​អ្នក​ប្រើ ៖ %s"
+
+#, c-format
+msgid "Unable to kick user %s"
+msgstr "មិនអាច​ធាក់​អ្នកប្រើ %s បាន​ទេ"
+
+#, c-format
+msgid "Unable to ping user %s"
+msgstr "មិនអាច ping អ្នក​ប្រើ %s បានទេ"
+
+#, c-format
+msgid "Unable to buzz, because there is nothing known about user %s."
+msgstr "មិនអាច​កេះកៀវ​បានទេ ពីព្រោះ​មិន​ស្គាល់​អំពី​អ្នកប្រើ %s ។"
+
+#, c-format
+msgid "Unable to buzz, because user %s might be offline."
+msgstr "មិនអាចកេះកៀង​បានទេ ពីព្រើ​អ្នកប្រើ %s នៅ​ក្រៅ​បណ្ដាញ ។"
+
+#, c-format
+msgid "Unable to buzz, because the user %s does not support it."
+msgstr "មិនអាច​កេះកៀវ​បានទេ ពីព្រោះ​អ្នក​ប្រើ %s មិន​គាំទ្រ​វា​ទេ ។"
+
+#. Yahoo only supports one attention command: the 'buzz'.
+#. This is index number YAHOO_BUZZ.
+msgid "Buzz"
+msgstr "កេះកៀវ"
+
+#, c-format
+msgid "%s has buzzed you!"
+msgstr "%s បានកេះកៀវ​អ្នក !"
+
+#, c-format
+msgid "Buzzing %s..."
+msgstr "កំពុងកេះកៀវ %s..."
+
+msgid "config: Configure a chat room."
+msgstr "config ៖ កំណត់​រចនាសម្ព័ន្ធ​បន្ទប់​ជជែក ។"
+
+msgid "configure: Configure a chat room."
+msgstr "កំណត់​រចនាសម្ព័ន្ធ ៖ កំណត់​រចនាសម្ព័ន្ធ​បន្ទប់​ជជែក ។"
+
+msgid "part [room]: Leave the room."
+msgstr "part [room] ៖ ចេញ​ពី​បន្ទប់ ។"
+
+msgid "register: Register with a chat room."
+msgstr "ចុះឈ្មោះ ៖ ចុះឈ្មោះ​​ក្នុង​បន្ទប់​ជជែក ។"
+
+msgid "topic [new topic]: View or change the topic."
+msgstr "ប្រធានបទ [ប្រធាន​បទ​ថ្មី] ៖ មើល ឬ​ផ្លាស់ប្ដូរ​ប្រធាន​បទ ។"
+
+msgid "ban &lt;user&gt; [reason]: Ban a user from the room."
+msgstr "ហាមឃាត់ &lt;អ្នក​ប្រើ&gt; [ហេតុផល] ៖ ហាមឃាត់​អ្នកប្រើ​ពី​បន្ទប់ ។"
+
+msgid ""
+"affiliate &lt;user&gt; &lt;owner|admin|member|outcast|none&gt;: Set a user's "
+"affiliation with the room."
+msgstr ""
+"ទាក់ទង &lt;អ្នក​ប្រើ&gt; &lt;ម្ចាស់|អ្នកគ្រប់គ្រង|សមាជិក|outcast|គ្មាន&gt; ៖ កំណត់​ទំនាក់ទំនង​"
+"របស់​អ្នក​ប្រើ​ជា​មួយ​នឹង​បន្ទប់ ។"
+
+msgid ""
+"role &lt;user&gt; &lt;moderator|participant|visitor|none&gt;: Set a user's "
+"role in the room."
+msgstr ""
+"តួនាទី &lt;អ្នក​ប្រើ&gt; &lt;អ្នកអន្តរការី|អ្នក​ចូលរួម|អ្នក​ទស្សនា|គ្មាន&gt; ៖ កំណត់​តួនាទី​របស់​អ្នក​"
+"ប្រើ​នៅ​ក្នុង​បន្ទប់ ។"
+
+msgid "invite &lt;user&gt; [message]: Invite a user to the room."
+msgstr "អញ្ជើញ &lt;អ្នក​ប្រើ&gt; [សារ] ៖ អញ្ជើញ​អ្នក​ប្រើ​ឲ្យ​ចូល​បន្ទប់ ។"
+
+msgid "join: &lt;room&gt; [password]: Join a chat on this server."
+msgstr "ចូល ៖ &lt;បន្ទប់&gt; [ពាក្យ​សម្ងាត់] ៖ ចូល​ក្នុងការជជែក​នៅ​លើ​ម៉ាស៊ីន​បម្រើ​នេះ ។"
+
+msgid "kick &lt;user&gt; [reason]: Kick a user from the room."
+msgstr "ធាក់ &lt;អ្នក​ប្រើ&gt; [ហេតុផល] ៖ ធាក់​អ្នក​ប្រើ​​ពី​បន្ទប់ ។"
+
+msgid ""
+"msg &lt;user&gt; &lt;message&gt;: Send a private message to another user."
+msgstr "msg &lt;អ្នក​ប្រើ&gt; &lt;សារ&gt; ៖ ផ្ញើ​សារ​ឯកជន​ទៅ​អ្នក​ប្រើ​ផ្សេង ។"
+
+msgid "ping &lt;jid&gt;:\tPing a user/component/server."
+msgstr "ping &lt;jid&gt; ៖ Ping អ្នក​ប្រើ/សមាសធាតុ/ម៉ាស៊ីន​បម្រើ ។"
+
+msgid "buzz: Buzz a user to get their attention"
+msgstr "កេះកៀវ ៖ កេះកៀវ​អ្នក​ប្រើ​ដើម្បីទទួល​បានការ​ចាប់អារម្មណ៍​របស់​ពួកគេ"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "XMPP Protocol Plugin"
+msgstr "កម្មវិធី​ជំនួយ​ពិធីការ XMPP"
+
+#. Translators: 'domain' is used here in the context of Internet domains, e.g. pidgin.im
+msgid "Domain"
+msgstr "ដែន"
+
+msgid "Require SSL/TLS"
+msgstr "ត្រូវការ SSL/TLS"
+
+msgid "Force old (port 5223) SSL"
+msgstr "បង្ខុះ​ (ច្រក 5223) SSL ចាស់"
+
+msgid "Allow plaintext auth over unencrypted streams"
+msgstr "អនុញ្ញាត​ឲ្យ​អត្ថបទ​ធម្មតា​លើ​ស្ទ្រីម​ដែល​មិន​បានអ៊ិនគ្រីប"
+
+msgid "Connect port"
+msgstr "ច្រក​តភ្ជាប់"
+
+#. TODO: default to automatically try different ports. Make the user be
+#. * able to set the first port to try (like LastConnectedPort in Windows client).
+#. Account options
+msgid "Connect server"
+msgstr "តភ្ជាប់​ម៉ាស៊ីន​បម្រើ"
+
+msgid "File transfer proxies"
+msgstr "ប្រូកស៊ី​ការ​ផ្ទេរ​ឯកសារ"
+
+#. this should probably be part of global smiley theme settings later on,
+#. shared with MSN
+msgid "Show Custom Smileys"
+msgstr "បង្ហាញ​សញ្ញាណ​ញញឹម​ផ្ទាល់"
+
+#, c-format
+msgid "%s has left the conversation."
+msgstr "%s បាន​ចេញ​ពី​ការ​សន្ទនា ។"
+
+#, c-format
+msgid "Message from %s"
+msgstr "សារ​ពី %s"
+
+#, c-format
+msgid "%s has set the topic to: %s"
+msgstr "%s បាន​កំណត់​ប្រធានបទ​ទៅ ៖ %s"
+
+#, c-format
+msgid "The topic is: %s"
+msgstr "ប្រធាន​បទ​គឺ ៖ %s"
+
+#, c-format
+msgid "Message delivery to %s failed: %s"
+msgstr "បានបរាជ័យ​ក្នុងការ​បញ្ជូន​សារ %s ៖ %s"
+
+msgid "XMPP Message Error"
+msgstr "កំហុស​សារ XMPP"
+
+#, c-format
+msgid "(Code %s)"
+msgstr "(កូដ %s)"
+
+msgid "XML Parse error"
+msgstr "កំហុស​ក្នុងកា​រញែក XML"
+
+msgid "Unknown Error in presence"
+msgstr "មិន​ស្គាល់​កំហុស​នៅ​ក្នុងវត្តមាន"
+
+msgid "Create New Room"
+msgstr "បង្កើត​បន្ទប់​ថ្មី"
+
+msgid ""
+"You are creating a new room. Would you like to configure it, or accept the "
+"default settings?"
+msgstr "អ្នក​បង្កើត​បន្ទប់​ថ្មី ។ តើអ្នក​ចង់​កំណត់​រចនាសម្ព័ន្ធ​វា​ដែរឬទេ ឬ​ព្រម​ទទួល​ការ​កំណត់​លំនាំដើម ?"
+
+msgid "_Configure Room"
+msgstr "កំណត់​រចនាសម្ព័ន្ធ​បន្ទប់"
+
+msgid "_Accept Defaults"
+msgstr "ព្រមទទួល​លំនាំដើម"
+
+#, c-format
+msgid "Error joining chat %s"
+msgstr "កំហុស​ក្នុងកា​រចូល​ក្នុងការ​ជជែក %s"
+
+#, c-format
+msgid "Error in chat %s"
+msgstr "កំហុស​​នៅ​ក្នុង​ការ​ជជែក %s"
+
+#, c-format
+msgid "Unable to send file to %s, user does not support file transfers"
+msgstr "មិនអាច​ផ្ញើសារ​ទៅ​កាន់ %s អ្នក​ប្រើ​មិន​គាំទ្រ​កា​រផ្ទេរ​ឯកសារ​ទេ"
+
+msgid "File Send Failed"
+msgstr "បានបរាជ័យ​ក្នុងកា​រផ្ញើ​ឯកសារ"
+
+#, c-format
+msgid "Unable to send file to %s, invalid JID"
+msgstr "មិនអាច​ផ្ញើ​ឯកសារ​ទៅ​កាន់ %s បានទេ ដោយសារ​តែ JID មិន​ត្រឹមត្រូវ"
+
+#, c-format
+msgid "Unable to send file to %s, user is not online"
+msgstr "មិនអាច​ផ្ញើ​ឯកសារ %s បានទេ អ្នកប្រើ​មិន​នៅ​លើ​បណ្ដាញ​ទេ"
+
+#, c-format
+msgid "Unable to send file to %s, not subscribed to user presence"
+msgstr "មិនអាច​ផ្ញើ​ឯកសារ %s បានទេ មិនបានជាវ​ទៅ​វត្តមាន​របស់​អ្នកប្រើ"
+
+#, c-format
+msgid "Please select the resource of %s to which you would like to send a file"
+msgstr "សូម​ជ្រើស​ធនធាន​របស់ %s ដែល​អ្នក​ចង់​ផ្ញើ​ឯកសារ"
+
+msgid "Select a Resource"
+msgstr "ជ្រើស​ធនធាន"
+
+msgid "Edit User Mood"
+msgstr "កែសម្រួល​អារម្មណ៍​អ្នកប្រើ"
+
+msgid "Please select your mood from the list."
+msgstr "សូម​ជ្រើស​អារម្មណ៍​របស់​អ្នក​ពី​បញ្ជី ។"
+
+msgid "Set"
+msgstr "កំណត់"
+
+msgid "Set Mood..."
+msgstr "កំណត់​អារម្មណ៍..."
+
+msgid "Set User Nickname"
+msgstr "កំណត់​សម្មតិនាម​របស់​អ្នក​ប្រើ"
+
+msgid "Please specify a new nickname for you."
+msgstr "សូម​បញ្ជាក់​សម្មតិនាម​ថ្មី​សម្រាប់​​អ្នក ។"
+
+msgid ""
+"This information is visible to all contacts on your contact list, so choose "
+"something appropriate."
+msgstr ""
+"ព័ត៌មាន​នេះ​​ទំនាក់ទំនង​ទាំង​អស់​អាច​មើល​ឃើញ​នៅ​​ក្នុង​បញ្ជីទំនាក់ទំនង​របស់​អ្នក ដូច្នេះ​​ជ្រើស​អ្វីដែល​សមរម្យ ។"
+
+msgid "Set Nickname..."
+msgstr "កំណត់​សម្មតិនាម..."
+
+msgid "Actions"
+msgstr "សកម្មភាព"
+
+msgid "Select an action"
+msgstr "ជ្រើស​សកម្មភាព"
+
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr "មិន​អាច​បន្ថែម \"%s\" ។"
+
+msgid "Buddy Add error"
+msgstr "កំហុស​ក្នុងកា​របន្ថែម​មិត្តភក្ដិ"
+
+msgid "The username specified does not exist."
+msgstr "មិនមាន​ឈ្មោះ​​អ្នក​ប្រើ​ដែល​បាន​បញ្ជាក់​ទេ ។"
+
+#, c-format
+msgid "Buddy list synchronization issue in %s (%s)"
+msgstr "បញ្ហា​ក្នុងការ​ធ្វើ​សមកាលកម្ម​បញ្ជីមិត្តភក្ដិ​នៅ​ក្នុង %s (%s)"
+
+#, c-format
+msgid ""
+"%s on the local list is inside the group \"%s\" but not on the server list. "
+"Do you want this buddy to be added?"
+msgstr ""
+"%s នៅ​​ក្នុង​បញ្ជីមូលដ្ឋាន​ គឺ​នៅ​ក្នុងក្រុម \"%s\" ប៉ុន្តែ​មិននៅ​ក្នុង​បញ្ជី​ម៉ាស៊ីន​បម្រើ​ទេ ។ តើ​អ្នក​ចង់​"
+"បន្ថែមមិត្តភក្ដិ​នេះដែរឬទេ ?"
+
+#, c-format
+msgid ""
+"%s is on the local list but not on the server list. Do you want this buddy "
+"to be added?"
+msgstr ""
+"%s នៅ​ក្នុង​បញ្ជីមូលដ្ឋាន ប៉ុន្តែ​មិននៅ​ក្នុងបញ្ជី​ម៉ាស៊ីនបម្រើ​ទេ ។ តើ​អ្នកចង់​បន្ថែម​មិត្តភក្ដិ​នេះដែរឬទេ ?"
+
+#, c-format
+msgid "Unable to parse message"
+msgstr "មិន​អាច​ញែក​សារ​បានទេ"
+
+#, c-format
+msgid "Syntax Error (probably a client bug)"
+msgstr "កំហុស​វាក្យសម្ពន្ធ (ប្រហែល​ជា​កំហុស​ម៉ាស៊ីន​ភ្ញៀវ)"
+
+#, c-format
+msgid "Invalid email address"
+msgstr "អាសយដ្ឋាន​អ៊ីមែល​មិន​ត្រឹមត្រូវ"
+
+#, c-format
+msgid "User does not exist"
+msgstr "មិន​មាន​​អ្នក​ប្រើ​ទេ"
+
+#, c-format
+msgid "Fully qualified domain name missing"
+msgstr "បាត់​ឈ្មោះ​ដែល​ដែល​បានបញ្ជាក់​ទាំង​ស្រុង"
+
+#, c-format
+msgid "Already logged in"
+msgstr "បាន​ចូលរួច​ហើយ"
+
+#, c-format
+msgid "Invalid username"
+msgstr "ឈ្មោះ​អ្នក​ប្រើ​មិន​ត្រឹមត្រូវ"
+
+#, c-format
+msgid "Invalid friendly name"
+msgstr "ឈ្មោះ​មិត្តភក្ដិ​មិន​ត្រឹមត្រូវ"
+
+#, c-format
+msgid "List full"
+msgstr "បញ្ជី​ពេញ​ហើយ"
+
+#, c-format
+msgid "Already there"
+msgstr "នៅ​ទីនោះ​រួច​ហើយ"
+
+#, c-format
+msgid "Not on list"
+msgstr "មិន​នៅ​ក្នុង​បញ្ជី​ទេ"
+
+#, c-format
+msgid "User is offline"
+msgstr "អ្នក​ប្រើ​នៅ​ក្រៅ​បណ្ដាញ"
+
+#, c-format
+msgid "Already in the mode"
+msgstr "មាន​ក្នុង​របៀប​នេះ​រួច​ហើយ"
+
+#, c-format
+msgid "Already in opposite list"
+msgstr "មាននៅ​ក្នុង​បញ្ជី​នោះ​រួច​ហើយ"
+
+#, c-format
+msgid "Too many groups"
+msgstr "មានក្រុម​ច្រើនពេក"
+
+#, c-format
+msgid "Invalid group"
+msgstr "ក្រុម​មិន​ត្រឹមត្រូវ"
+
+#, c-format
+msgid "User not in group"
+msgstr "អ្នក​ប្រើ​មិននៅ​ក្នុង​ក្រុម​ទេ"
+
+#, c-format
+msgid "Group name too long"
+msgstr "ឈ្មោះ​ក្រុម​វែងពេក"
+
+#, c-format
+msgid "Cannot remove group zero"
+msgstr "មិនអាច​យក​ក្រុម​សូន្យ​ចេញបានទេ"
+
+#, c-format
+msgid "Tried to add a user to a group that doesn't exist"
+msgstr "បាន​ព្យាយាម​បន្ថែម​អ្នក​ទៅ​ក្រុម​ដែល​មិនទាន់​មាន"
+
+#, c-format
+msgid "Switchboard failed"
+msgstr "ប៉ាណូ​បានបរាជ័យ"
+
+#, c-format
+msgid "Notify transfer failed"
+msgstr "បានបរាជ័យ​ក្នុងការ​ជូន​ដំណឹង​នៃ​កា​រផ្ទេរ"
+
+#, c-format
+msgid "Required fields missing"
+msgstr "បាត់​វាល​ដែល​ត្រូវការ"
+
+#, c-format
+msgid "Too many hits to a FND"
+msgstr "ចុច​គ្រាប់ចុច FND ច្រើន​ដង​ពេក"
+
+#, c-format
+msgid "Not logged in"
+msgstr "មិនបានចូល​ទេ"
+
+#, c-format
+msgid "Service temporarily unavailable"
+msgstr "សេវា​មិនអាច​ប្រើបានជា​បណ្ដោះអាសន្ន"
+
+#, c-format
+msgid "Database server error"
+msgstr "កំហុស​ម៉ាស៊ីន​បម្រើ​មូលដ្ឋាន​ទិន្នន័យ"
+
+#, c-format
+msgid "Command disabled"
+msgstr "បាន​បិទ​ពាក្យ​បញ្ជា"
+
+#, c-format
+msgid "File operation error"
+msgstr "កំហុស​ក្នុងកា​រប្រតិបត្តិ​ឯកសារ"
+
+#, c-format
+msgid "Memory allocation error"
+msgstr "កំហុស​ក្នុងការ​បម្រុង​ទុក​សតិ"
+
+#, c-format
+msgid "Wrong CHL value sent to server"
+msgstr "តម្លៃ CHL មិនត្រឹមត្រូវ​បានផ្ញើ​ទៅ​កាន់ម៉ាស៊ីនបម្រើ"
+
+#, c-format
+msgid "Server busy"
+msgstr "ម៉ាស៊ីនបម្រើ​រវល់"
+
+#, c-format
+msgid "Server unavailable"
+msgstr "ម៉ាស៊ីន​បម្រើ​មិនអាច​ប្រើបានទេ"
+
+#, c-format
+msgid "Peer notification server down"
+msgstr "ការ​ជូនដំណឹង​​ម៉ាស៊ីនបម្រើ​​ដូច​គ្នា​បាន​ខូច"
+
+#, c-format
+msgid "Database connect error"
+msgstr "កំហុស​ក្នុងការ​តភ្ជាប់​មូលដ្ឋាន​ទិន្នន័យ"
+
+#, c-format
+msgid "Server is going down (abandon ship)"
+msgstr "ម៉ាស៊ីន​បម្រើ​ខូច​ហើយ (មកជា​មួយ abandon)"
+
+#, c-format
+msgid "Error creating connection"
+msgstr "កំហុស​ក្នុងការ​បង្កើត​ការ​តភ្ជាប់"
+
+#, c-format
+msgid "CVR parameters are either unknown or not allowed"
+msgstr "ប៉ារ៉ាម៉ែត្រ​ដែល​ត្រូវ​បាន​ស្គាល់ ឬ​មិន​ត្រូវ​បានដំឡើង"
+
+#, c-format
+msgid "Unable to write"
+msgstr "មិនអាច​សរសេរ"
+
+#, c-format
+msgid "Session overload"
+msgstr "លើស​សម័យ"
+
+#, c-format
+msgid "User is too active"
+msgstr "អ្នក​ប្រើ​សកម្មភាព​ពេក"
+
+#, c-format
+msgid "Too many sessions"
+msgstr "មាន​សម័យ​ច្រើន​ពេក"
+
+#, c-format
+msgid "Passport not verified"
+msgstr "មិនបានផ្ទៀងផ្ទាត់​លិខិត​ឆ្លងដែន​ទេ"
+
+#, c-format
+msgid "Bad friend file"
+msgstr "ឯកសារ​មិត្តភក្ដិ​មិនល្អ"
+
+#, c-format
+msgid "Not expected"
+msgstr "ដែលមិនបាន​រំពឹង​ទុក"
+
+#, c-format
+msgid "Friendly name changes too rapidly"
+msgstr "ការ​ផ្លាស់ប្ដូរ​ឈ្មោះមិត្តភក្ដិ​បន្តិចម្ដងៗ"
+
+#, c-format
+msgid "Server too busy"
+msgstr "ម៉ាស៊ីន​បម្រើ​រវល់​ពេក"
+
+#, c-format
+msgid "Authentication failed"
+msgstr "បាន​បរាជ័យ​ក្នុងកា​រផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ"
+
+#, c-format
+msgid "Not allowed when offline"
+msgstr "មិន​បាន​អនុញ្ញាត​នៅពេល​នៅ​ក្រៅ​បណ្ដាញ"
+
+#, c-format
+msgid "Not accepting new users"
+msgstr "មិនទទួលយក​អ្នក​ប្រើដែល​ថ្មីទេ"
+
+#, c-format
+msgid "Kids Passport without parental consent"
+msgstr "ពាក្យ​សម្ងាត់​ក្មេង​ដោយ​គ្មានកា​រយល់ព្រម​ពី​ឳពុកម្ដាយ"
+
+#, c-format
+msgid "Passport account not yet verified"
+msgstr "គណនី​លិខិតឆ្លងដែន​មិន​បាន​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ទេ"
+
+msgid "Passport account suspended"
+msgstr "បានផ្អាក​គណនី​លិខិតឆ្លងដែន"
+
+#, c-format
+msgid "Bad ticket"
+msgstr "សំបុត្រ​មិន​ល្អ"
+
+#, c-format
+msgid "Unknown Error Code %d"
+msgstr "មិន​ស្គាល់​កូដ​កំហុស %d"
+
+#, c-format
+msgid "MSN Error: %s\n"
+msgstr "កំហុស MSN ៖ %s\n"
+
+msgid "Other Contacts"
+msgstr "ទំនាក់ទំនង​ផ្សេងៗ"
+
+msgid "Non-IM Contacts"
+msgstr "ទំនាក់ទំនង​ដែល​មិនមាន​ជា IM"
+
+msgid "Nudge"
+msgstr "ច្រាន"
+
+#, c-format
+msgid "%s has nudged you!"
+msgstr "%s បាន​ច្រាន​អ្នក !"
+
+#, c-format
+msgid "Nudging %s..."
+msgstr "កំពុង​ច្រាន %s..."
+
+msgid "Email Address..."
+msgstr "អាសយដ្ឋាន​អ៊ីមែល..."
+
+msgid "Your new MSN friendly name is too long."
+msgstr "ឈ្មោះ​មិត្តភក្ដិ MSN ថ្មី​របស់​អ្នក​វែង​ពេក ។"
+
+msgid "Set your friendly name."
+msgstr "កំណត់​ឈ្មោះ​មិត្តភក្ដ​របស់​អ្នក ។"
+
+msgid "This is the name that other MSN buddies will see you as."
+msgstr "នេះជា​ឈ្មោះ​ដែល​មិត្តភក្ដិ MSN ផ្សេង​ទៀត​នឹង​ឃើញ​អ្នក ។"
+
+msgid "Set your home phone number."
+msgstr "កំណត់​លេខ​ទូរស័ព្ទ​ផ្ទះ​របស់​អ្នក ។"
+
+msgid "Set your work phone number."
+msgstr "កំណត់​លេខ​ទូរស័ព្ទ​ការងារ​របស់​អ្នក ។"
+
+msgid "Set your mobile phone number."
+msgstr "កំណត់​លេខ​ទូរស័ព្ទ​ចល័ត​របស់​អ្នក ។"
+
+msgid "Allow MSN Mobile pages?"
+msgstr "អនុញ្ញាត​ឲ្យ​មាន​ទំព័រ​ចល័ត​របស់ MSN ?"
+
+msgid ""
+"Do you want to allow or disallow people on your buddy list to send you MSN "
+"Mobile pages to your cell phone or other mobile device?"
+msgstr ""
+"តើអ្នក​ចង់​អនុញ្ញាត ឬ​មិន​អនុញ្ញាត​មនុស្ស​នៅ​ក្នុង​បញ្ជីមិត្តភក្ដិ​របស់​អ្នក​ផ្ញើ​ឲ្យ​អ្នក​នូវ​ទំព័រ​ចល័ត​របស់ MSN ទៅកាន់​"
+"ទូរស័ព្ទ​ចល័ត​របស់​អ្នក ឬ​ឧបករណ៍​ចល័ត​ផ្សេងៗ ?"
+
+msgid "Allow"
+msgstr "អនុញ្ញាត"
+
+msgid "Disallow"
+msgstr "មិន​អនុញ្ញាត"
+
+#, c-format
+msgid "Blocked Text for %s"
+msgstr "អត្ថបទ​ដែលបានទប់ស្កាត់​សម្រាប់ %s"
+
+msgid "No text is blocked for this account."
+msgstr "គ្មាន​អត្ថបទ​ត្រូវ​បាន​ទប់ស្កាត់​សម្រាប់គណនី​នេះ ។"
+
+#, c-format
+msgid ""
+"MSN servers are currently blocking the following regular expressions:<br/>%s"
+msgstr "ម៉ាស៊ីន​បម្រើ MSN បច្ចុប្បន្ន​កំពុង​ទប់ស្កាត់​កន្សោម​ធម្មតា​ដូច​ខាងក្រោម ៖ <br/>%s"
+
+msgid "This account does not have email enabled."
+msgstr "គណនី​នេះ​មិន​មាន​អាសយដ្ឋាន​បានបើក​ទេ ។"
+
+msgid "Send a mobile message."
+msgstr "ផ្ញើ​សារ​ចល័ត ។"
+
+msgid "Page"
+msgstr "ទំព័រ​​"
+
+msgid "Playing a game"
+msgstr "លេង​ល្បែង"
+
+msgid "Working"
+msgstr "ធ្វើការ"
+
+msgid "Has you"
+msgstr "មាន​អ្នក"
+
+msgid "Home Phone Number"
+msgstr "លេខ​ទូរស័ព្ទ​​ផ្ទះ​"
+
+msgid "Work Phone Number"
+msgstr "លេខ​ទូរស័ព្ទ​ការងារ"
+
+msgid "Mobile Phone Number"
+msgstr "លេខ​ទូរស័ព្ទ​ចល័ត"
+
+msgid "Be Right Back"
+msgstr "ថយក្រោយ"
+
+msgid "Busy"
+msgstr "រវល់"
+
+msgid "On the Phone"
+msgstr "ជាប់និយាយ​ទូរស័ព្ទ"
+
+msgid "Out to Lunch"
+msgstr "​ទៅ​អាហារ​ថ្ងៃ​ត្រង់​នៅ​ក្រៅ"
+
+#. primitive
+#. ID
+#. name - use default
+#. saveable
+#. should be user_settable some day
+#. independent
+msgid "Artist"
+msgstr "សិល្ប"
+
+msgid "Album"
+msgstr "អាល់ប៊ុម"
+
+msgid "Game Title"
+msgstr "ចំណង​ជើង​ល្បែង"
+
+msgid "Office Title"
+msgstr "ចំណង​ជើង​ការិយាល័យ"
+
+msgid "Set Friendly Name..."
+msgstr "កំណត់​​ឈ្មោះ​មិត្តភក្តិ..."
+
+msgid "Set Home Phone Number..."
+msgstr "កំណត់​លេខ​ទូរស័ព្ទ​ផ្ទះ..."
+
+msgid "Set Work Phone Number..."
+msgstr "កំណត់​លេខ​ទូរស័ព្ទ​កន្លែង​ធ្វើការ..."
+
+msgid "Set Mobile Phone Number..."
+msgstr "កំណត់​លេខ​ទូរស័ព្ទ​ចល័ត..."
+
+msgid "Enable/Disable Mobile Devices..."
+msgstr "បិទ/បើក​ឧបករណ៍​ចល័ត..."
+
+msgid "Allow/Disallow Mobile Pages..."
+msgstr "អនុញ្ញាត/មិនអនុញ្ញាត​ទំព័រ​ចល័ត..."
+
+msgid "View Blocked Text..."
+msgstr "មើល​អត្ថបទ​ដែល​បាន​ទប់ស្កាត់..."
+
+msgid "Open Hotmail Inbox"
+msgstr "បើក​ប្រអប់​ Hotmail"
+
+msgid "Send to Mobile"
+msgstr "ផ្ញើ​ទៅ​ទូរស័ព្ទ​ចល័ត"
+
+msgid "Initiate _Chat"
+msgstr "ចាប់ផ្ដើមជជែក"
+
+msgid "SSL support is needed for MSN. Please install a supported SSL library."
+msgstr "ការ​គាំទ្រ SSL ត្រូវ​បានទាមទារ​សម្រាប់ MSN ។ សូម​ដំឡើង​បណ្ណាល័យ SSL ដែល​បានគាំទ្រ ។"
+
+msgid "Failed to connect to server."
+msgstr "បាន​បរាជ័យ​ក្នុងការ​តភ្ជាប់​ទៅ​ម៉ាស៊ីន​បម្រើ ។"
+
+msgid "Error retrieving profile"
+msgstr "កំហុសក្នុងការ​ទៅ​ទទួល​យក​ទម្រង់"
+
+msgid "General"
+msgstr "ទូទៅ"
+
+msgid "Age"
+msgstr "អាយុ"
+
+msgid "Occupation"
+msgstr "មុខរបរ"
+
+msgid "Location"
+msgstr "ទីតាំង"
+
+msgid "Hobbies and Interests"
+msgstr "ចំណូល​ចិត្ត និង​ចំណាប់​អារម្មណ៍"
+
+msgid "A Little About Me"
+msgstr "បន្តិចបន្តួច​អំពី​ខ្ញុំ"
+
+msgid "Social"
+msgstr "សង្គម"
+
+msgid "Marital Status"
+msgstr "ស្ថានភាព​គ្រួសារ"
+
+msgid "Interests"
+msgstr "ចំណាប់​អារម្មណ៍"
+
+msgid "Pets"
+msgstr "សត្វស្លាប"
+
+msgid "Hometown"
+msgstr "ទីក្រុង"
+
+msgid "Places Lived"
+msgstr "បន្តផ្ទាល់​នៅ​កន្លែង"
+
+msgid "Fashion"
+msgstr "ម៉ូដ"
+
+msgid "Humor"
+msgstr "អារម្មណ៍"
+
+msgid "Music"
+msgstr "តន្ត្រី"
+
+msgid "Favorite Quote"
+msgstr "សម្រង់​សំណព្វ"
+
+msgid "Contact Info"
+msgstr "ព័ត៌មាន​​ទំនាក់ទំនង"
+
+msgid "Personal"
+msgstr "ផ្ទាល់ខ្លួន"
+
+msgid "Significant Other"
+msgstr "ការ​សម្ងាត់​ផ្សេងៗ"
+
+msgid "Home Phone"
+msgstr "ទូរស័ព្ទ​​​​​ផ្ទះ"
+
+msgid "Home Phone 2"
+msgstr "ទូរស័ព្ទ​ផ្ទះ ២"
+
+msgid "Home Address"
+msgstr "អាសយដ្ឋាន​ផ្ទះ"
+
+msgid "Personal Mobile"
+msgstr "ទូរស័ព្ទ​ចល័ត​ផ្ទាល់ខ្លួន"
+
+msgid "Home Fax"
+msgstr "ទូរសារ​ផ្ទះ"
+
+msgid "Personal Email"
+msgstr "អ៊ីមែល​ផ្ទាល់ខ្លួន"
+
+msgid "Personal IM"
+msgstr "IM ផ្ទាល់ខ្លួន"
+
+msgid "Anniversary"
+msgstr "ខួប​កំណើត"
+
+#. Business
+msgid "Work"
+msgstr "ការងារ"
+
+msgid "Job Title"
+msgstr "ងារ​ការងារ"
+
+msgid "Company"
+msgstr "ក្រុមហ៊ុន"
+
+msgid "Department"
+msgstr "នាយកដ្ឋាន"
+
+msgid "Profession"
+msgstr "វិជ្ជាជីវៈ"
+
+msgid "Work Phone"
+msgstr "ទូរស័ព្ទ​​​កន្លែង​​​ធ្វើការ"
+
+msgid "Work Phone 2"
+msgstr "ទូរស័ព្ទ​កន្លែង​ធ្វើការ​ ២"
+
+msgid "Work Address"
+msgstr "អាសយដ្ឋាន​កន្លែងធ្វើការ"
+
+msgid "Work Mobile"
+msgstr "ទូរស័ព្ទ​ចល័ត​កន្លែង​ធ្វើការ"
+
+msgid "Work Pager"
+msgstr "ភេយ័រ​កន្លែង​ធ្វើការ"
+
+msgid "Work Fax"
+msgstr "ទូរសារ​កន្លែង​ធ្វើការ"
+
+msgid "Work Email"
+msgstr "អ៊ីមែល​កន្លែង​ធ្វើការ"
+
+msgid "Work IM"
+msgstr "IM កន្លែង​ធ្វើការ"
+
+msgid "Start Date"
+msgstr "កាលបរិច្ឆេទ​ចាប់ផ្ដើម"
+
+msgid "Favorite Things"
+msgstr "វត្ថុ​សំណព្វ"
+
+msgid "Last Updated"
+msgstr "បាន​ធ្វើ​ឲ្យ​ទាន់សម័យ​ចុងក្រោយ"
+
+msgid "Homepage"
+msgstr "គេហទំព័រ"
+
+msgid "The user has not created a public profile."
+msgstr "អ្នក​ប្រើ​មិន​បាន​បង្កើត​ទម្រង់​សាធារណៈ​ទេ ។"
+
+msgid ""
+"MSN reported not being able to find the user's profile. This either means "
+"that the user does not exist, or that the user exists but has not created a "
+"public profile."
+msgstr ""
+"MSN បាន​រាយការណ៍​ថា​មិនអាច​រក​ទម្រង់​របស់​អ្នកប្រើទេ ។ នេះ​មាន​ន័យ​ថា​អ្នក​ប្រើ​មិន​ទាន់មាន​ទេ ឬ​ថា​​មាន​អ្នក​"
+"ប្រើ​ ប៉ុន្តែ​មិន​បានបង្កើត​ទម្រង់​ជា​សាធារណៈ​ទេ ។"
+
+msgid ""
+"Could not find any information in the user's profile. The user most likely "
+"does not exist."
+msgstr "មិនអាច​រក​ព័ត៌មាន​នៅ​ក្នុង​ទម្រង់​របស់​អ្នក​ប្រើ​ទេ ។ អ្នក​ប្រើ​ទំនង​ជា​មិន​ទាន់មាន​ទេ ។"
+
+msgid "View web profile"
+msgstr "មើល​ទម្រង់​លើ​បណ្ដាញ"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. *< summary
+msgid "Windows Live Messenger Protocol Plugin"
+msgstr "កម្មវិធី​ជំនួយ​ពិធីការ​របស់​កម្មវិធី​ផ្ញើសារ​បន្តផ្ទាល់​របស់​វីនដូ"
+
+msgid "Use HTTP Method"
+msgstr "ប្រើ​វិធីសាស្ត្រ HTTP"
+
+msgid "HTTP Method Server"
+msgstr "ម៉ាស៊ីនបម្រើ​វិធីសាស្ត្រ HTTP"
+
+msgid "Show custom smileys"
+msgstr "បង្ហាញ​សញ្ញាណ​អារម្មណ៍​ផ្ទាល់ខ្លួន"
+
+msgid "nudge: nudge a user to get their attention"
+msgstr "ច្រាន​ចេញ ៖ ច្រានអ្នកប្រើ​ចេញ​ដើម្បី​ទទួល​បាន​ការ​ចាបអារម្មណ៍​របស់​ពួកគេ"
+
+msgid "Windows Live ID authentication:Unable to connect"
+msgstr "ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​នៃ​លេខសម្គាល់​របស់ Windows Live ៖ មិនអាច​តភ្ជាប់​បានទេ"
+
+msgid "Windows Live ID authentication:Invalid response"
+msgstr "កា​រផ្ទៀងផ្ទាត់​​ភាព​ត្រឹមត្រូវ​នៃ​លេខសម្គាល់​របស់ Windows Live ៖ ការ​ឆ្លើយតប​មិនត្រឹមត្រូវ"
+
+#, c-format
+msgid "%s is not a valid group."
+msgstr "%s មិន​មែន​ជា​ក្រុម​ត្រឹមត្រូវ​ទេ ។"
+
+msgid "Unknown error."
+msgstr "មិន​ស្គាល់​កំហុស ។"
+
+#, c-format
+msgid "%s on %s (%s)"
+msgstr "%s នៅលើ %s (%s)"
+
+#, c-format
+msgid "%s just sent you a Nudge!"
+msgstr "%s គ្រាន់​តែ​​បានផ្ញើ​ឲ្យ​អ្នក​នូវ​កា​រច្រានចេញ !"
+
+#. char *adl = g_strndup(payload, len);
+#, c-format
+msgid "Unknown error (%d)"
+msgstr "មិន​ស្គាល់​កំហុស (%d)"
+
+msgid "Unable to add user"
+msgstr "មិនអាច​បន្ថែម​អ្នក​ប្រើ​បានទេ"
+
+msgid "The following users are missing from your addressbook"
+msgstr "អ្នក​ប្រើ​ដូច​ខាងក្រោម​បាត់​ពី​សៀវភៅ​អាសយដ្ឋាន​របស់​អ្នក"
+
+#, c-format
+msgid "Unable to add user on %s (%s)"
+msgstr "មិនអាច​បន្ថែម​អ្នកប្រើ​នៅ​លើ %s (%s) បានទេ"
+
+#, c-format
+msgid "Unable to block user on %s (%s)"
+msgstr "មិនអាច​ទប់ស្កាត់​អ្នកប្រើ​នៅ​លើ %s (%s)"
+
+#, c-format
+msgid "Unable to permit user on %s (%s)"
+msgstr "មិនអាច​អនុញ្ញាត​​អ្នកប្រើ​នៅ​លើ %s (%s) បានទេ"
+
+#, c-format
+msgid "%s could not be added because your buddy list is full."
+msgstr "%s មិនអាច​ត្រូវ​បាន​បន្ថែម​បាន​ទេ ដោយ​សារ​តែ​បញ្ជី​​មិត្តភក្ដិ​របស់​អ្នក​ពេញ​ហើយ ។"
+
+#, c-format
+msgid "%s is not a valid passport account."
+msgstr "%s មិនមែន​ជា​គណនី​លិខិត​ឆ្លងដែន​ត្រឹមត្រូវ​ទេ ។"
+
+msgid "Service Temporarily Unavailable."
+msgstr "សេវា​មិនអាច​ប្រើបានជា​បណ្ដោះ​អាសន្ន ។"
+
+msgid "Mobile message was not sent because it was too long."
+msgstr "សារ​ចល័ត​មិនត្រូវ​បានផ្ញើ​ទេ ដោយ​សារ​តែ​វា​វែង​ពេក ។"
+
+msgid "Unable to rename group"
+msgstr "មិន​អាច​ប្ដូរ​ឈ្មោះ​ក្រុម​បានទេ"
+
+msgid "Unable to delete group"
+msgstr "មិនអាចលុប​ក្រុម​បាន​ទេ"
+
+#, c-format
+msgid ""
+"The MSN server will shut down for maintenance in %d minute. You will "
+"automatically be signed out at that time. Please finish any conversations "
+"in progress.\n"
+"\n"
+"After the maintenance has been completed, you will be able to successfully "
+"sign in."
+msgid_plural ""
+"The MSN server will shut down for maintenance in %d minutes. You will "
+"automatically be signed out at that time. Please finish any conversations "
+"in progress.\n"
+"\n"
+"After the maintenance has been completed, you will be able to successfully "
+"sign in."
+msgstr[0] ""
+"ម៉ាស៊ីន​បម្រើ MSN នឹង​បិទ​ដើម្បី​ថែទាំ​ក្នុងរយៈពេល %d នាទី ។ អ្នកនឹង​ត្រូវ​បាន​ចេញ​ដោយ​ស្វ័យ​ប្រវត្តិ​នៅ​ពេល​"
+"ណាមួយ ។ សូម​បញ្ចប់​ការ​សន្ទនា​ដែល​កំពុង​តែ​សន្ទនា ។\n"
+"\n"
+"បន្ទាប់​ពី​កា​រ​ថែទាំ​ចប់ អ្នក​នឹង​អាច​ចូល​ដោយ​ស្វ័យ​ប្រវត្តិ​បាន ។"
+
+msgid ""
+"Message was not sent because the system is unavailable. This normally "
+"happens when the user is blocked or does not exist."
+msgstr ""
+"សារ​មិន​ត្រូវ​បាន​ផ្ញើ​ទេ ពីព្រោះ​ប្រព័ន្ធ​មិនអាច​ប្រើ​បាន​ទេ ។ តាម​ធម្មតា​វា​កើតឡើង​នៅពេល​ដែល​អ្នកប្រើ​ត្រូវ​"
+"បានទប់ស្កាត់ ឬ​មិន​ទាន់មាន ។"
+
+msgid "Message was not sent because messages are being sent too quickly."
+msgstr "សារ​មិន​ត្រូវ​បានផ្ញើទេ ពីព្រោះ​សារ​កំពុង​ត្រូវ​បានផ្ញើ​រហ័ស​ពេក ។"
+
+msgid "Message was not sent because an unknown encoding error occurred."
+msgstr "សារ​មិន​ត្រូវ​បាន​ផ្ញើ​ទេ ពីព្រោះ​មាន​កំហុស​អ៊ិនកូដ​ដែល​មិនស្គាល់​បានកើត​ឡើង ។"
+
+msgid "Message was not sent because an unknown error occurred."
+msgstr "សារ​មិន​ត្រូវ​បាន​ផ្ញើ​បានទេ ពីព្រោះ​មាន​កំហុស​ដែលមិនស្គាល់​បានកើត​ឡើង ។"
+
+msgid "Unable to connect"
+msgstr "មិនអាច​តភ្ជាប់​ទេ"
+
+msgid "Writing error"
+msgstr "កំហុស​ក្នុងការ​សរសេរ"
+
+msgid "Reading error"
+msgstr "កំហុសក្នុងការ​អាន"
+
+#, c-format
+msgid ""
+"Connection error from %s server:\n"
+"%s"
+msgstr ""
+"កំហុស​ក្នុងការ​តភ្ជាប់​ពី​ម៉ាស៊ីន​បម្រើ %s ៖\n"
+"%s"
+
+msgid "Our protocol is not supported by the server."
+msgstr "ពិធីការ​របស់​យើង​មិន​ត្រូវ​បានគាំទ្រ​ដោយ​ម៉ាស៊ីនបម្រើ​ទេ ។"
+
+msgid "Error parsing HTTP."
+msgstr "កំហុស​ក្នុងកា​រញែក HTTP ។"
+
+msgid "You have signed on from another location."
+msgstr "អ្នក​បាន​ចុះហត្ថលេខា​ពី​ទីតាំង​ផ្សេង ។"
+
+msgid "The MSN servers are temporarily unavailable. Please wait and try again."
+msgstr "ម៉ាស៊ីន​បម្រើ MSN មិនអាច​ប្រើ​បាន​ជា​បណ្ដោះ​អាសន្ន ។ សូម​រង់ចាំ ហើយ​ព្យាយាម​ម្ដង​ទៀត ។"
+
+msgid "The MSN servers are going down temporarily."
+msgstr "ម៉ាស៊ីន​បម្រើ MSN នឹង​ខូច​ជា​បណ្ដោះ​អាសន្ន ។"
+
+#, c-format
+msgid "Unable to authenticate: %s"
+msgstr "មិនអាច​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ ៖ %s"
+
+msgid ""
+"Your MSN buddy list is temporarily unavailable. Please wait and try again."
+msgstr "បញ្ជី​​មិត្តភក្ដិ​របស់​អ្នក MSN ​មិន​អាច​ប្រើ​បាន​ជា​បណ្ដោះ​អាសន្ន ។ សូម​រង់ចាំ ហើយ​ព្យាយាម​ម្ដង​ទៀត ។"
+
+msgid "Handshaking"
+msgstr "ការ​ចាប់ដៃ"
+
+msgid "Transferring"
+msgstr "ការ​ផ្ទេរ"
+
+msgid "Starting authentication"
+msgstr "ចាប់ផ្ដើម​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ"
+
+msgid "Getting cookie"
+msgstr "ទទួល​ខូគី"
+
+msgid "Sending cookie"
+msgstr "ផ្ញើ​ខូគី"
+
+msgid "Retrieving buddy list"
+msgstr "ទៅ​យក​បញ្ជី​មិត្តភក្ដិ"
+
+msgid "Away From Computer"
+msgstr "ចាកឆ្ងាយ​ពី​កុំព្យូទ័រ"
+
+msgid "On The Phone"
+msgstr "និយាយ​ទូរស័ព្ទ"
+
+msgid "Out To Lunch"
+msgstr "ចេញ​ទៅ​ហូប​អាហារ​ថ្ងៃត្រង់​នៅ​ខាង​ក្រៅ"
+
+msgid "Message may have not been sent because a timeout occurred:"
+msgstr "សារ​អាច​មិន​ត្រូ​វបាន​ផ្ញើ​ ពីព្រោះ​អស់​ពេល ៖"
+
+msgid "Message could not be sent, not allowed while invisible:"
+msgstr "សារ​មិនអាច​​ត្រូវ​បាន​ផ្ញើ​ទេ មិន​​បាន​អនុញ្ញាត​ខណៈពេល​មើល​មិន​ឃើញ ៖"
+
+msgid "Message could not be sent because the user is offline:"
+msgstr "សារ​មិន​អាច​ត្រូវ​បាន​ផ្ញើ​ទេ ពីព្រោះ​អ្នក​ប្រើ​នៅ​ក្រៅ​បណ្ដាញ ៖"
+
+msgid "Message could not be sent because a connection error occurred:"
+msgstr "សារ​មិនអាច​ត្រូ​វបាន​ផ្ញើ​ទេ ពីព្រោះ​​មាន​កំហុស​ក្នុងការ​តភ្ជាប់​បានកើត​ឡើង ៖"
+
+msgid "Message could not be sent because we are sending too quickly:"
+msgstr "សារ​មិនអាច​ត្រូវ​បាន​ផ្ញើ​ទេ ពីព្រោះ​យើង​កំពុង​ផ្ញើ​រហ័ស​ពេក ៖"
+
+msgid ""
+"Message could not be sent because we were unable to establish a session with "
+"the server. This is likely a server problem, try again in a few minutes:"
+msgstr ""
+"សារ​មិន​អាច​​ត្រូវ​បានផ្ញើ​ទេ ពីព្រោះ​យើង​មិន​អាច​បង្កើត​សម័យ​ជា​មួយ​ម៉ាស៊ីន​បម្រើ ។ វា​ទំនង​ជា​បញ្ហា​ម៉ាស៊ីន​បម្រើ "
+"ព្យាយាម​ម្ដង​ទៀត​​ក្នុង​រយៈពេល​ពីរ​ បី​នាទី​ទៀត ៖"
+
+msgid ""
+"Message could not be sent because an error with the switchboard occurred:"
+msgstr "សារ​មិនអាច​ត្រូវ​បាន​ផ្ញើទេ​ ពីព្រោះ​មាន​កំហុស​ជា​មួយ​ប៉ាណូ​បានកើតឡើង ៖"
+
+msgid "Message may have not been sent because an unknown error occurred:"
+msgstr "សារ​មិន​​អាច​ត្រូវ​បាន​ទេ ពីព្រោះ​មាន​កំហុស​ដែល​មិន​ស្គាល់​បាន​កើតឡើង ៖"
+
+#, c-format
+msgid "%s has added you to his or her buddy list."
+msgstr "%s បាន​បន្ថែម​អ្នក​ទៅ​កាន់​បញ្ជី​មិត្តភក្ដិ​របស់គាត់ ។"
+
+#, c-format
+msgid "%s has removed you from his or her buddy list."
+msgstr "%s បានយក​អ្នក​ចេញ​ពី​បញ្ជី​មិត្តភក្ដិ​របស់​គាត់ ។"
+
+msgid "Delete Buddy from Address Book?"
+msgstr "លុប​មិត្តភក្ដិ​ពី​សៀវភៅ​អាសយដ្ឋាន ?"
+
+msgid "Do you want to delete this buddy from your address book as well?"
+msgstr "តើ​អ្នក​ចង់​លុប​មិត្តភក្ដិ​នេះ​ពី​សៀវភៅ​អាសយដ្ឋាន​របស់​អ្នកដែរឬទេ ?"
+
+msgid "The username specified is invalid."
+msgstr "ឈ្មោះ​អ្នកប្រើ​ដែល​បាន​បញ្ជាក់​មិន​ត្រឹមត្រូវ ។"
+
+msgid "This Hotmail account may not be active."
+msgstr "គណនី​របស់ Hotmail នេះ​មិន​សកម្ម​ទេ ។"
+
+msgid "Profile URL"
+msgstr "ទម្រង់ URL"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "MSN Protocol Plugin"
+msgstr "កម្មវិធី​ជំនួយ​ពិធីការ​​របស់ MSN"
+
+#, c-format
+msgid "No such user: %s"
+msgstr "គ្មាន​អ្នក​ប្រើ​បែបនេះ​ទេ ៖ %s"
+
+msgid "User lookup"
+msgstr "រក​មើល​អ្នក​ប្រើ"
+
+msgid "Reading challenge"
+msgstr "អាន​ការ​ប្រកួត"
+
+msgid "Unexpected challenge length from server"
+msgstr "ប្រវែង​កា​រប្រកួត​ដែល​មិន​រំពឹង​ទុក​ពី​ម៉ាស៊ីនបម្រើ"
+
+msgid "Logging in"
+msgstr "ចូល"
+
+msgid "MySpaceIM - No Username Set"
+msgstr "MySpaceIM - គ្មាន​ឈ្មោះ​អ្នកប្រើបាន​កំណត់"
+
+msgid "You appear to have no MySpace username."
+msgstr "អ្នក​បង្ហាញ​ថា​គ្មាន​ឈ្មោះអ្នកប្រើ MySpace នោះ​ទេ ។"
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr "តើ​អ្នក​ចង់​កំណត់​មួយ​ដែរឬទេ ? (ចំណាំ ៖ វា​មិនអាច​ត្រូវ​បាន​ផ្លាស់ប្ដូរ​នោះ​ទេ !)"
+
+msgid "Lost connection with server"
+msgstr "បាត់​បង់ការ​តភ្ជាប់​ជា​មួយ​ម៉ាស៊ីន​បម្រើ"
+
+#. Can't write _()'d strings in array initializers. Workaround.
+msgid "New mail messages"
+msgstr "សារ​សំបុត្រ​ថ្មី"
+
+msgid "New blog comments"
+msgstr "មតិយោបល់​ប្លុក​ថ្មី"
+
+msgid "New profile comments"
+msgstr "មិតយោបល់​ទម្រង់​ថ្មី"
+
+msgid "New friend requests!"
+msgstr "សំណើ​របស់មិត្តភក្ដិ​ថ្មី !"
+
+msgid "New picture comments"
+msgstr "មតិយោបល់រូបភាព​ថ្មី"
+
+msgid "MySpace"
+msgstr "MySpace"
+
+msgid "IM Friends"
+msgstr "មិត្តភក្ដិ​របស់ IM"
+
+#, c-format
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+"មិត្តភក្ដិ %d ត្រូវ​បាន​បន្ថែម ឬ​ធ្វើ​ឲ្យ​ទាន់សម័យ​ពី​ម៉ាស៊ីនបម្រើ (រួម​មាន​មិត្តភក្ដិ​ដែល​មាន​នៅ​ក្នុង​បញ្ជី​​នៅ​ខាង​"
+"ម៉ាស៊ីនបម្រើ​រួច​ហើយ)"
+
+msgid "Add contacts from server"
+msgstr "បន្ថែម​ទំនាក់ទំនង​ពី​ម៉ាស៊ីន​បម្រើ"
+
+#. The session is now set up, ready to be connected. This emits the
+#. * signedOn signal, so clients can now do anything with msimprpl, and
+#. * we're ready for it (session key, userid, username all setup).
+msgid "Connected"
+msgstr "បាន​តភ្ជាប់"
+
+#, c-format
+msgid "Protocol error, code %d: %s"
+msgstr "កំហុស​ពិធីការ កូដ %d: %s"
+
+#, c-format
+msgid ""
+"%s Your password is %d characters, greater than the expected maximum length "
+"of %d for MySpaceIM. Please shorten your password at http://profileedit."
+"myspace.com/index.cfm?fuseaction=accountSettings.changePassword and try "
+"again."
+msgstr ""
+"%s ពាក្យ​សម្ងាត់​របស់​អ្នកមាន %d តួអក្សរ ធំជាង​ប្រវែង​អតិបរមា​ដែលបាន​រំពឹង​ទុក​របស់ %d សម្រាប់ "
+"MySpaceIM ។ សូម​ធ្វើ​ឲ្យ​ពាក្យ​សម្ងាត់​របស់​អ្នក​ខ្លី​​នៅ http://profileedit.myspace.com/index."
+"cfm?fuseaction=accountSettings ។ ផ្លាស់ប្ដូរ​ពាក្យ​សម្ងាត់ ហើយ​ព្យាយាម​ម្ដង​ទៀត ។"
+
+msgid "MySpaceIM Error"
+msgstr "កំហុស MySpaceIM"
+
+msgid "Invalid input condition"
+msgstr "លក្ខខណ្ឌ​បញ្ចូល​មិនត្រឹមត្រូវ"
+
+msgid "Read buffer full (2)"
+msgstr "អាន​សតិ​បណ្ដោះអាសន្ន​ពេញលេញ (២)"
+
+msgid "Unparseable message"
+msgstr "សារ​ដែល​មិន​អាច​ញែក​បាន"
+
+#, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr "មិនអាច​តភ្ជាប់​ទៅ​កាន់​ម៉ាស៊ីន ៖ %s (%d)"
+
+msgid "Failed to add buddy"
+msgstr "បាន​បរាជ័យ​ក្នុងការ​បន្ថែម​មិត្តភក្ដិ"
+
+msgid "'addbuddy' command failed."
+msgstr "ពាក្យ​បញ្ជា 'addbuddy' បាន​បរាជ័យ ។"
+
+msgid "persist command failed"
+msgstr "បាន​បរាជ័យ​ក្នុងកា​រព្យាយាម​ពាក្យ​បញ្ជា"
+
+msgid "Failed to remove buddy"
+msgstr "បាន​បរាជ័យ​ក្នុងការ​យក​មិត្តភក្ដិ​ចេញ"
+
+msgid "'delbuddy' command failed"
+msgstr "បាន​បរាជ័យ​ពាក្យ​បញ្ជា​ 'delbuddy'"
+
+msgid "blocklist command failed"
+msgstr "បានបរាជ័យ​​ពាក្យ​បញ្ជា​បញ្ជី​ទប់ស្កាត់"
+
+msgid "Missing Cipher"
+msgstr "បាត់​ការ​សរសេរ​សម្ងាត់"
+
+msgid "The RC4 cipher could not be found"
+msgstr "រក​មិនឃើញ​ការ​សរសេរ​សម្ងាត់ RC4"
+
+msgid ""
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
+"ធ្វើ​ឲ្យ​ប្រសើ​ឡើង​ទៅ libpurple ដោយ​មាន​ការ​គាំទ្រ RC4 (>= 2.0.1) ។ កម្មវិធី​ជំនួយ MySpaceIM នឹង​"
+"មិន​ត្រូវ​បាន​ផ្ទុក ។"
+
+msgid "Add friends from MySpace.com"
+msgstr "បន្ថែម​មិត្តភក្ដិ​ពី MySpace.com"
+
+msgid "Importing friends failed"
+msgstr "បានបរាជ័យ​ក្នុងកា​រនាំមិត្តភក្តិចូល"
+
+#. TODO: find out how
+msgid "Find people..."
+msgstr "រក​មនុស្ស..."
+
+msgid "Change IM name..."
+msgstr "ផ្លាស់ប្ដូរ​ឈ្មោះ IM​..."
+
+msgid "myim URL handler"
+msgstr "កម្មវិធី​គ្រប់គ្រង myim URL"
+
+msgid "No suitable MySpaceIM account could be found to open this myim URL."
+msgstr " រក​មិន​ឃើញ​​គណនី MySpaceIM សមរម្យ​ដើម្បី​បើក myim URL នេះ​ទេ ។"
+
+msgid "Enable the proper MySpaceIM account and try again."
+msgstr "បើក​គណនី​ MySpaceIM សមរម្យ​ ហើយ​ព្យាយាម​ម្ដង​ទៀត ។"
+
+msgid "Show display name in status text"
+msgstr "បង្ហាញ​ឈ្មោះ​បង្ហាញ​នៅ​ក្នុង​​អត្ថបទ​ស្ថានភាព"
+
+msgid "Show headline in status text"
+msgstr "បង្ហាញ​ពេល​កំណត់​នៅ​ក្នុងអត្ថបទ​ស្ថានភាព"
+
+msgid "Send emoticons"
+msgstr "ផ្ញើ​​សញ្ញា​អារម្មណ៍"
+
+msgid "Screen resolution (dots per inch)"
+msgstr "គុណភាព​បង្ហាញ​អេក្រង់ (ចុច​/អ៊ិន្ឈ៍)"
+
+msgid "Base font size (points)"
+msgstr "មាន​មូលដ្ឋាន​លើ​ទំហំ​ពុម្ពអក្សរ (ចំណុច)"
+
+msgid "User"
+msgstr "អ្នក​ប្រើ"
+
+msgid "Headline"
+msgstr "ចំណង​ជើង"
+
+msgid "Song"
+msgstr "ចម្រៀង"
+
+msgid "Total Friends"
+msgstr "មិត្តភក្ដិ​សរុប"
+
+msgid "Client Version"
+msgstr "កំណែ​ម៉ាស៊ីន​ភ្ញៀវ"
+
+msgid "MySpaceIM - Username Available"
+msgstr "MySpaceIM - មាន​ឈ្មោះ​អ្នក​ប្រើ"
+
+msgid "This username is available. Would you like to set it?"
+msgstr "មាន​ឈ្មោះ​អ្នកប្រើ​នេះ ។ តើ​អ្នក​ចង់​កំណត់​វា​ដែរឬទេ ?"
+
+msgid "ONCE SET, THIS CANNOT BE CHANGED!"
+msgstr "នៅ​ពេល​កំណត់ វា​មិនអាច​ត្រូ​វបាន​ផ្លាស់ប្ដូរ​ទេ !"
+
+msgid "MySpaceIM - Please Set a Username"
+msgstr "MySpaceIM - សូម​កំណត់​​ឈ្មោះ​អ្នកប្រើ"
+
+msgid "This username is unavailable."
+msgstr "ឈ្មោះ​អ្នក​ប្រើ​នេះ​មិនអាច​ប្រើបានទេ ។"
+
+msgid "Please try another username:"
+msgstr "សូម​ព្យាយាម​ឈ្មោះ​អ្នក​ប្រើ​ផ្សេង​ទៀត ៖"
+
+#. Protocol won't log in now without a username set.. Disconnect
+msgid "No username set"
+msgstr "គ្មាន​ឈ្មោះ​អ្នក​ប្រើ​ត្រូវ​បានកំណត់"
+
+msgid "Please enter a username to check its availability:"
+msgstr "សូម​បញ្ចូល​ឈ្មោះអ្នក​ប្រើ​ដើម្បី​ពិនិត្យ​មើល​ភាព​អាច​ប្រើបាន​របស់​វា ៖"
+
+#. TODO: icons for each zap
+#. Lots of comments for translators:
+#. Zap means "to strike suddenly and forcefully as if with a
+#. * projectile or weapon." This term often has an electrical
+#. * connotation, for example, "he was zapped by electricity when
+#. * he put a fork in the toaster."
+msgid "Zap"
+msgstr "ឆក់"
+
+#, c-format
+msgid "%s has zapped you!"
+msgstr "%s បាន​ឆក់​អ្នក !"
+
+#, c-format
+msgid "Zapping %s..."
+msgstr "កំពុង​ឆក់ %s..."
+
+#. Whack means "to hit or strike someone with a sharp blow"
+msgid "Whack"
+msgstr "ទះ"
+
+#, c-format
+msgid "%s has whacked you!"
+msgstr "%s បាន​ទះ​អ្នក !"
+
+#, c-format
+msgid "Whacking %s..."
+msgstr "កំពុង​ទះ %s..."
+
+#. Torch means "to set on fire." Don't worry, this doesn't
+#. * make a whole lot of sense in English, either. Feel free
+#. * to translate it literally.
+msgid "Torch"
+msgstr "ដុត"
+
+#, c-format
+msgid "%s has torched you!"
+msgstr "%s បាន​ដុត​អ្នក !"
+
+#, c-format
+msgid "Torching %s..."
+msgstr "កំពុង​ដុត %s..."
+
+#. Smooch means "to kiss someone, often enthusiastically"
+msgid "Smooch"
+msgstr "ថើប​ថ្នមៗ"
+
+#, c-format
+msgid "%s has smooched you!"
+msgstr "%s បាន​ថើប​អ្នក​ថ្នមៗ !"
+
+#, c-format
+msgid "Smooching %s..."
+msgstr "កំពុង​ថើប​ថ្នមៗ %s..."
+
+#. A hug is a display of affection; wrapping your arms around someone
+msgid "Hug"
+msgstr "អោប"
+
+#, c-format
+msgid "%s has hugged you!"
+msgstr "%s បាន​អោប​អ្នក !"
+
+#, c-format
+msgid "Hugging %s..."
+msgstr "កំពុង​អោប %s..."
+
+#. Slap means "to hit someone with an open/flat hand"
+msgid "Slap"
+msgstr "ទះថ្នមៗ"
+
+#, c-format
+msgid "%s has slapped you!"
+msgstr "%s បានទះ​អ្នក​ថ្នមៗ !"
+
+#, c-format
+msgid "Slapping %s..."
+msgstr "កំពុង %s ថ្នមៗ​..."
+
+#. Goose means "to pinch someone on their butt"
+msgid "Goose"
+msgstr "ចាក់"
+
+#, c-format
+msgid "%s has goosed you!"
+msgstr "%s បានចាក់​អ្នក !"
+
+#, c-format
+msgid "Goosing %s..."
+msgstr "កំពុងចាក់ %s..."
+
+#. A high-five is when two people's hands slap each other
+#. * in the air above their heads. It is done to celebrate
+#. * something, often a victory, or to congratulate someone.
+msgid "High-five"
+msgstr "ស្វាគមន៍"
+
+#, c-format
+msgid "%s has high-fived you!"
+msgstr "%s បាន​ស្វាគមន៍​អ្នក !"
+
+#, c-format
+msgid "High-fiving %s..."
+msgstr "កំពុង​ស្វាគមន៍ %s..."
+
+#. We're not entirely sure what the MySpace people mean by
+#. * this... but we think it's the equivalent of "prank." Or, for
+#. * someone to perform a mischievous trick or practical joke.
+msgid "Punk"
+msgstr "ប៉ះ"
+
+#, c-format
+msgid "%s has punk'd you!"
+msgstr "%s បានប៉ះអ្នក !"
+
+#, c-format
+msgid "Punking %s..."
+msgstr "កំពុង​ប៉ះ %s..."
+
+#. Raspberry is a slang term for the vibrating sound made
+#. * when you stick your tongue out of your mouth with your
+#. * lips closed and blow. It is typically done when
+#. * gloating or bragging. Nowadays it's a pretty silly
+#. * gesture, so it does not carry a harsh negative
+#. * connotation. It is generally used in a playful tone
+#. * with friends.
+msgid "Raspberry"
+msgstr "លម្អ"
+
+#, c-format
+msgid "%s has raspberried you!"
+msgstr "%s បានលម្អ​អ្នក !"
+
+#, c-format
+msgid "Raspberrying %s..."
+msgstr "កំពុង​លម្អ %s..."
+
+msgid "Required parameters not passed in"
+msgstr "ប៉ារ៉ាម៉ែត្រ​ដែល​ត្រូវការ​មិនបាន​ចម្លង​ទេ"
+
+msgid "Unable to write to network"
+msgstr "មិនអាច​សរសេរ​ទៅ​កាន់​បណ្ដាញ​បានទេ"
+
+msgid "Unable to read from network"
+msgstr "មិន​អាច​​អាន​ពី​បណ្ដាញ​បានទេ"
+
+msgid "Error communicating with server"
+msgstr "កំហុស​ក្នុងការ​ទំនាក់ទំនង​ជា​មួយ​ម៉ាស៊ីន​បម្រើ"
+
+msgid "Conference not found"
+msgstr "រក​មិនឃើញ​សន្និសីទ"
+
+msgid "Conference does not exist"
+msgstr "មិន​ទាន់មាន​សន្និសីទ​នៅ​ឡើយ​ទេ"
+
+msgid "A folder with that name already exists"
+msgstr "មាន​ថត​ដែល​មាន​ឈ្មោះ​នោះ​រួច​ហើយ"
+
+msgid "Not supported"
+msgstr "មិន​​​បាន​គាំទ្រ"
+
+msgid "Password has expired"
+msgstr "ពាក្យ​​​សម្ងាត់​បាន​ផុត​កំណត់"
+
+msgid "Incorrect password"
+msgstr "ពាក្យ​សម្ងាត់​មិន​ត្រឹមត្រូវ"
+
+msgid "User not found"
+msgstr "រក​មិនឃើញ​អ្នក​ប្រើ"
+
+msgid "Account has been disabled"
+msgstr "គណនី​ត្រូវ​បាន​បិទ"
+
+msgid "The server could not access the directory"
+msgstr "ម៉ាស៊ីន​បម្រើ​មិនអាច​ចូលដំណើរការ​ទៅកាន់​ថត​ទេ"
+
+msgid "Your system administrator has disabled this operation"
+msgstr "អ្នកគ្រប់គ្រង​ប្រព័ន្ធ​របស់​អ្នក​បានបិទ​ប្រតិបត្តិការ​នេះ"
+
+msgid "The server is unavailable; try again later"
+msgstr "មិនមាន​ម៉ាស៊ីន​បម្រើ​ទេ ព្យាយាម​ម្ដង​ទៀតពេល​ក្រោយ"
+
+msgid "Cannot add a contact to the same folder twice"
+msgstr "មិន​អាច​បន្ថែម​ទំនាក់ទំនង​ទៅកាន​ថត​ដដែល​ពីរ​ដង​បានទេ"
+
+msgid "Cannot add yourself"
+msgstr "មិនអាច​បន្ថែម​ខ្លួន​អ្នក​ផ្ទាល់​ទេ"
+
+msgid "Master archive is misconfigured"
+msgstr "ប័ណ្ណសារ​មេ​បាត់ misconfigured"
+
+msgid "Incorrect username or password"
+msgstr "ឈ្មោះ​អ្នក​ប្រើ ឬ​ពាក្យ​សម្ងាត់​មិន​ត្រឹមត្រូវ"
+
+msgid "Could not recognize the host of the username you entered"
+msgstr "មិនអាច​ស្គាល់​ឈ្មោះ​​អ្នកប្រើ​ម៉ាស៊ីន​ដែល​អ្នក​បានបញ្ចូល​ទេ"
+
+msgid ""
+"Your account has been disabled because too many incorrect passwords were "
+"entered"
+msgstr "គណនី​របស់​អ្នក​ត្រូវ​បានបិទ ពីព្រោះ​មាន​ពាក្យ​សម្ងាត់​ច្រើន​ពេក​ដែល​បាន​បញ្ចូល"
+
+msgid "You cannot add the same person twice to a conversation"
+msgstr "អ្នក​មិនអាច​បន្ថែម​មនុស្ស​ដដែល​ពីរដង​​ទៅ​កាន់​កា​រសន្ទនា​បានទេ"
+
+msgid "You have reached your limit for the number of contacts allowed"
+msgstr "អ្នក​បានដល់​កម្រិត​របស់​អ្នក​សម្រាប់​ចំនួន​ទំនាក់ទំនង​ដែល​បាន​អនុញ្ញាត"
+
+msgid "You have entered an incorrect username"
+msgstr "អ្នក​បាន​បញ្ចូល​ឈ្មោះ​អ្នក​ប្រើ​មិន​ត្រឹមត្រូវ"
+
+msgid "An error occurred while updating the directory"
+msgstr "កំហុស​មួយ​បានកើត​ឡើង​ខណៈពេល​ធ្វើ​ឲ្យថត​ទាន់សម័យ"
+
+msgid "Incompatible protocol version"
+msgstr "កំណែ​ពិធីការ​ដែល​មិន​ឆប​គ្នា"
+
+msgid "The user has blocked you"
+msgstr "អ្នកប្រើបាន​ទប់ស្កាត់​អ្នក"
+
+msgid ""
+"This evaluation version does not allow more than ten users to log in at one "
+"time"
+msgstr "កំណែ​នៃ​កា​រវាយតម្លៃ​នេះ​មិនអនុញ្ញាត​ឲ្យ​មាន​អ្នក​ប្រើ​ច្រើនជាង ១០ នាក់​ចូល​នៅពេល​តែ​មួយ​ទេ"
+
+msgid "The user is either offline or you are blocked"
+msgstr "អ្នក​ប្រើ​នៅ​ក្រៅ​បណ្ដាញ ឬ​អ្នក​ត្រូវ​បាន​ទប់ស្កាត់"
+
+#, c-format
+msgid "Unknown error: 0x%X"
+msgstr "មិន​ស្គាល់​កំហុស ៖ 0x%X"
+
+#, c-format
+msgid "Login failed (%s)."
+msgstr "បាន​បរាជ័យ​ក្នុងកា​រចូល (%s) ។"
+
+#, c-format
+msgid "Unable to send message. Could not get details for user (%s)."
+msgstr "មិនអាច​ផ្ញើ​សារ​បានទេ ។ មិនអាច​យក​សេចក្ដី​លម្អិត​សម្រាប់​អ្នកប្រើ (%s) បានទេ ។"
+
+#, c-format
+msgid "Unable to add %s to your buddy list (%s)."
+msgstr "មិនអាច​បន្ថែម %s ទៅ​កាន់​បញ្ជី​មិត្តភក្ដិ​របស់​អ្នក (%s) បាន​ទេ ។"
+
+#. TODO: Improve this! message to who or for what conference?
+#, c-format
+msgid "Unable to send message (%s)."
+msgstr "មិន​អាច​ផ្ញើសារ​ទៅ​កាន់ (%s) បានទេ ។"
+
+#, c-format
+msgid "Unable to invite user (%s)."
+msgstr "មិនអាច​អញ្ជើញ​អ្នក​ប្រើ (%s) បាន​ទេ ។"
+
+#, c-format
+msgid "Unable to send message to %s. Could not create the conference (%s)."
+msgstr "មិនអាចផ្ញើសារទៅ​កាន់ %s បានទេ ។ មិនអាច​បង្កើត​ការ​សន្និសីទ​បាន​ទេ (%s) ។"
+
+#, c-format
+msgid "Unable to send message. Could not create the conference (%s)."
+msgstr "មិនអាច​ផ្ញើសារ​បានទេ ។ មិន​អាច​បង្កើត​សន្និសីទ​ (%s) បានទេ ។"
+
+#, c-format
+msgid ""
+"Unable to move user %s to folder %s in the server side list. Error while "
+"creating folder (%s)."
+msgstr ""
+"មិនអាច​ផ្លាស់ទី​អ្នក​ប្រើ %s ទៅ​កាន់​ថត %s នៅ​ក្នុង​បញ្ជី​ខាង​ម៉ាស៊ីន​បម្រើ ។ កំហុស​ខណៈពេល​បង្កើត​ថត (%s) ។"
+
+#, c-format
+msgid ""
+"Unable to add %s to your buddy list. Error creating folder in server side "
+"list (%s)."
+msgstr ""
+"មិន​អាច​បន្ថែម %s ទៅ​កាន់​បញ្ជីមិត្តភក្ដិ ។ កំហុស​ក្នុងកា​របង្កើត​ថត​នៅ​ក្នុង​បញ្ជី​ខាង​ម៉ាស៊ីន​បម្រើ (%s) ។"
+
+#, c-format
+msgid "Could not get details for user %s (%s)."
+msgstr "មិនអាច​ទទួល​យក​សេចក្ដី​លម្អិត​សម្រាប់​អ្នក​ប្រើ %s (%s) ។"
+
+#, c-format
+msgid "Unable to add user to privacy list (%s)."
+msgstr "មិនអាច​បន្ថែម​អ្នក​ប្រើ​ទៅ​កាន់​បញ្ជី​ឯកជន​ (%s) បាន​ទេ ។"
+
+#, c-format
+msgid "Unable to add %s to deny list (%s)."
+msgstr "មិនអាច​បន្ថែម %s ទៅ​កាន់​បញ្ជី​បដិសេធ​ (%s) បានទេ ។"
+
+#, c-format
+msgid "Unable to add %s to permit list (%s)."
+msgstr "មិនអាច​បន្ថែម %s ទៅ​កាន់​បញ្ជី​អនុញ្ញាត​ (%s) បានទេ ។"
+
+#, c-format
+msgid "Unable to remove %s from privacy list (%s)."
+msgstr "មិនអាច​យក %s ចេញ​ពី​បញ្ជី​ឯកជន (%s) បានទេ ។"
+
+#, c-format
+msgid "Unable to change server side privacy settings (%s)."
+msgstr "មិនអាច​​ផ្លាស់ប្ដូរ​ការ​កំណត់​ឯកជន​ខាង​ម៉ាស៊ីន​បម្រើ​បានទេ (%s) ។"
+
+#, c-format
+msgid "Unable to create conference (%s)."
+msgstr "មិនអាច​បង្កើត​សិន្និសីទ (%s) បាន​ទេ ។"
+
+msgid "Error communicating with server. Closing connection."
+msgstr "កំហុស​ក្នុងការ​តភ្ជាប់​ជា​មួយ​ម៉ាស៊ីន​បម្រើ ។ បិទ​កា​រតភ្ជាប់ ។"
+
+msgid "Telephone Number"
+msgstr "លេខ​ទូរស័ព្ទ"
+
+msgid "Personal Title"
+msgstr "ចំណង​ជើង​ផ្ទាល់ខ្លួន"
+
+msgid "Mailstop"
+msgstr "Mailstop"
+
+msgid "User ID"
+msgstr "លេខ​សម្គាល់​អ្នក​ប្រើ"
+
+#. tag = _("DN");
+#. value = nm_user_record_get_dn(user_record);
+#. if (value) {
+#. purple_notify_user_info_add_pair(user_info, tag, value);
+#. }
+#.
+msgid "Full name"
+msgstr "ឈ្មោះ​ពេញ"
+
+#, c-format
+msgid "GroupWise Conference %d"
+msgstr "GroupWise សន្និសីទ %d"
+
+msgid "Authenticating..."
+msgstr "កំពុង​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ..."
+
+msgid "Unable to connect to server."
+msgstr "មិនអាច​តភ្ជាប់​ទៅ​កាន់​ម៉ាស៊ីន​បម្រើ​បានទេ ។"
+
+msgid "Waiting for response..."
+msgstr "កំពុង​រង់ចាំ​ការ​ឆ្លើយ​តប..."
+
+#, c-format
+msgid "%s has been invited to this conversation."
+msgstr "%s ត្រូវ​បាន​អញ្ជើញ​ឲ្យ​ចូល​រួម​នៅ​ក្នុងកា​រ​សន្ទនា​នេះ ។"
+
+msgid "Invitation to Conversation"
+msgstr "ការ​អញ្ជើញ​ឲ្យ​ចូលរួម​ក្នុងការ​សន្ទនា"
+
+#, c-format
+msgid ""
+"Invitation from: %s\n"
+"\n"
+"Sent: %s"
+msgstr ""
+"ការ​អញ្ជើញ​ពី ៖ %s\n"
+"\n"
+"បាន​ផ្ញើ ៖ %s"
+
+msgid "Would you like to join the conversation?"
+msgstr "តើ​អ្នក​ចង់​ចូល​រួម​ក្នុងការ​សន្ទនា​ដែរឬទេ ?"
+
+msgid "You have been logged out because you logged in at another workstation."
+msgstr "អ្នក​ត្រូវ​បាន​ចេញ ដោយ​សារ​តែ​អ្នក​បាន​ចូល​ក្នុងស្ថានីយការងារ​ផ្សេង​ទៀត ។"
+
+#, c-format
+msgid ""
+"%s appears to be offline and did not receive the message that you just sent."
+msgstr "%s បង្ហាញថា​នៅ​ក្រៅបណ្ដាញ ហើយ​មិន​បានទទួល​សារ​ដែល​អ្នក​ទើប​តែ​បាន​ផ្ញើ​នោះ​ទេ ។"
+
+msgid ""
+"Unable to connect to server. Please enter the address of the server you wish "
+"to connect to."
+msgstr "មិន​អាច​តភ្ជាប់​ទៅ​កាន់​ម៉ាស៊ីន​បម្រើ​បានទេ ។ សូម​បញ្ចូល​អាសយដ្ឋាន​ម៉ាស៊ីនបម្រើ​ដែល​អ្នក​ចង់​តភ្ជាប់ ។"
+
+msgid "Error. SSL support is not installed."
+msgstr "កំហុស ។ ការ​គាំទ្រ SSL មិន​ត្រូវ​បាន​ដំឡើង​ទេ ។"
+
+msgid "This conference has been closed. No more messages can be sent."
+msgstr "សន្និសីទ​នេះ​ត្រូ​វបាន​បិទ ។ គ្មាន​សារ​អាច​ត្រូវ​បាន​ផ្ញើ​ទេ ។"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Novell GroupWise Messenger Protocol Plugin"
+msgstr "កម្មវិធី​ជំនួយ​ពិធីការ​របស់​កម្មវិធី​ផ្ញើសារ GroupWise របស់​ណូវែល"
+
+msgid "Server address"
+msgstr "អាសយដ្ឋាន​ម៉ាស៊ីន​បម្រើ"
+
+msgid "Server port"
+msgstr "ច្រក​ម៉ាស៊ីនបម្រើ"
+
+msgid "Could not join chat room"
+msgstr "មិនអាច​ចូល​រួម​ក្នុង​បន្ទប់​ជជែក​បានទេ"
+
+msgid "Invalid chat room name"
+msgstr "ឈ្មោះ​បន្ទប់​ជជែក​មិន​ត្រឹមត្រូវ"
+
+msgid "Server closed the connection."
+msgstr "ម៉ាស៊ីនបម្រើ​បានបិទ​ការ​តភ្ជាប់ ។"
+
+#, c-format
+msgid ""
+"Lost connection with server:\n"
+"%s"
+msgstr ""
+"បាត់​បង់​ការ​តភ្ជាប់​ជា​មួយ​ម៉ាស៊ីន​បម្រើ ៖\n"
+"%s"
+
+msgid "Received invalid data on connection with server."
+msgstr "បាន​ទទួល​ទិន្នន័យ​មិនត្រឹមត្រូវ​នៅ​លើ​កា​រតភ្ជាប់​ជា​មួយ​ម៉ាស៊ីន​បម្រើ ។ "
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "AIM Protocol Plugin"
+msgstr "កម្មវិធី​ជំនួយ​ពិធីការ AIM"
+
+msgid "ICQ UIN..."
+msgstr "ICQ UIN..."
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "ICQ Protocol Plugin"
+msgstr "កម្មវិធី​ជំនួយ​ពិធីការ ICQ"
+
+msgid "Encoding"
+msgstr "ការ​អ៊ិនកូដ"
+
+msgid "The remote user has closed the connection."
+msgstr "អ្នក​ប្រើ​ពី​ចម្ងាយ​​បានបិទ​ការ​តភ្ជាប់ ។"
+
+msgid "The remote user has declined your request."
+msgstr "អ្នក​ប្រើពី​ចម្ងាយ​បានបដិសេធ​សំណើរ​របស់​អ្នក ។"
+
+#, c-format
+msgid "Lost connection with the remote user:<br>%s"
+msgstr "បាត់បង់​ការ​តភ្ជាប់​ជា​មួយ​អ្នកប្រើ​ពី​ចម្ងាយ ៖ <br>%s"
+
+msgid "Received invalid data on connection with remote user."
+msgstr "បាន​ទទួល​ទិន្នន័យ​មិន​ត្រឹមត្រូវ​នៅ​ពេល​តភ្ជាប់​ជា​មួយ​អ្នកប្រើពី​ចម្ងាយ ។"
+
+msgid "Could not establish a connection with the remote user."
+msgstr "មិនអាច​បង្កើត​ការ​តភ្ជាប់​ជា​មួយ​អ្នក​ប្រើ​ពី​ចម្ងាយ​បាន​ទេ ។"
+
+msgid "Direct IM established"
+msgstr "បានបង្កើត IM ដោយ​ផ្ទាល់"
+
+#, c-format
+msgid ""
+"%s tried to send you a %s file, but we only allow files up to %s over Direct "
+"IM. Try using file transfer instead.\n"
+msgstr ""
+"%s បានព្យាយាម​ផ្ញើ​ឲ្យ​​អ្ន​ក​នូវ​ឯកសារ %s ប៉ុន្តែ​អនុញ្ញាត​តែ​ឯកសារ​ %s លើ​ IM ដោយ​ផ្ទាល់ ។ ព្យាយាម​ប្រើ​"
+"ការ​ផ្ទេរ​ឯកសារ​ជំនួស​វិញ ។\n"
+
+#, c-format
+msgid "File %s is %s, which is larger than the maximum size of %s."
+msgstr "ឯកសារ %s គឺជា %s ដែល​ធំជាង​ទំហំ​អតិបរមា​របស់ %s ។"
+
+msgid "Invalid error"
+msgstr "កំហុស​​មិន​ត្រឹមត្រូវ"
+
+msgid "Invalid SNAC"
+msgstr "SNAC មិន​ត្រឹមត្រូវ"
+
+msgid "Rate to host"
+msgstr "វាយតម្លៃ​ម៉ាស៊ីន"
+
+msgid "Rate to client"
+msgstr "វាយតម្លៃ​ម៉ាស៊ីន​ភ្ញៀវ"
+
+msgid "Service unavailable"
+msgstr "សេវា​មិនអាច​ប្រើបាន"
+
+msgid "Service not defined"
+msgstr "សេវា​មិនបានកំណត់"
+
+msgid "Obsolete SNAC"
+msgstr "SNAC ពេញលេញ"
+
+msgid "Not supported by host"
+msgstr "មិនបានគាំទ្រ​ដោយ​ម៉ាស៊ីន​ទេ"
+
+msgid "Not supported by client"
+msgstr "មិនបាន​គាំទ្រ​ដោយ​ម៉ាស៊ីន​ភ្ញៀវទេ"
+
+msgid "Refused by client"
+msgstr "បាន​បដិសេធ​ដោយ​ម៉ាស៊ីន​ភ្ញៀវ"
+
+msgid "Reply too big"
+msgstr "ការ​ឆ្លើយតប​ធំពេក"
+
+msgid "Responses lost"
+msgstr "បាត់បង់ការ​ឆ្លើយតប"
+
+msgid "Request denied"
+msgstr "បដិសេធ​សំណើ"
+
+msgid "Busted SNAC payload"
+msgstr "Busted SNAC payload"
+
+msgid "Insufficient rights"
+msgstr "សិទ្ធិ​មិន​គ្រប់គ្រាន់"
+
+msgid "In local permit/deny"
+msgstr "នៅ​ក្នុង​ការ​បដិសេធ/អនុញ្ញាត"
+
+msgid "Warning level too high (sender)"
+msgstr "កម្រិត​ព្រមាន​ខ្ពស់​ពេក (អ្នក​ផ្ញើ)"
+
+msgid "Warning level too high (receiver)"
+msgstr "កម្រិត​ព្រមាន​ខ្ពស់​ពេក (អ្នក​ទទួល)"
+
+msgid "User temporarily unavailable"
+msgstr "អ្នក​ប្រើ​មិនអាច​ប្រើបាន​ជា​បណ្ដោះអាសន្ន"
+
+msgid "No match"
+msgstr "គ្មានការ​ផ្គូផ្គង"
+
+msgid "List overflow"
+msgstr "បញ្ជី​លើស​ចំណុះ"
+
+msgid "Request ambiguous"
+msgstr "ការ​ស្នើ​មិន​ប្រាកដ"
+
+msgid "Queue full"
+msgstr "ជួរ​​ពេញ"
+
+msgid "Not while on AOL"
+msgstr "មិន​សម្រាក​នៅ​លើ AOL"
+
+msgid ""
+"(There was an error receiving this message. The buddy you are speaking with "
+"is probably using a different encoding than expected. If you know what "
+"encoding he is using, you can specify it in the advanced account options for "
+"your AIM/ICQ account.)"
+msgstr ""
+"(មាន​កំហុស​មួយ​ក្នុងកា​រទទួល​សារ​នេះ ។ មិត្តភក្ដិ​ដែល​អ្នក​កំពុង​និយាយ​ជា​មួយ​ប្រហែលជា​ប្រើការ​អ៊ិនកូដ​ផ្សេង​ពីអ្វី​ដែល​"
+"រំពឹង​ទុក ។ ប្រសិនបើ​​អ្នកដឹង​ការ​អ៊ិនកូដ​អ្វី​ដែល​អ្នកកំពុង​ប្រើ អ្នក​អាច​បញ្ជាក់​វា​នៅ​ក្នុង​ជម្រើស​គណនី​កម្រិត​ខ្ពស់​"
+"សម្រាប់​គណនី AIM/ICQ របស់​អ្នក ។)"
+
+#, c-format
+msgid ""
+"(There was an error receiving this message. Either you and %s have "
+"different encodings selected, or %s has a buggy client.)"
+msgstr ""
+"(មានកំហុស​មួយ​ក្នុងការ​ទទួល​សារ ។ អ្នក​ និង %s បាន​ជ្រើស​ការ​ការអ៊ិនកូដ​ផ្សេង​គ្នា ឬ %s មាន​ម៉ាស៊ីន​ភ្ញៀវ​"
+"មិត្តភក្ដិ ។)"
+
+#. Label
+msgid "Buddy Icon"
+msgstr "រូបតំណាង​មិត្តភក្ដិ"
+
+msgid "Voice"
+msgstr "សំឡេង"
+
+msgid "AIM Direct IM"
+msgstr "AIM នាំ IM"
+
+msgid "Get File"
+msgstr "យក​ឯកសារ"
+
+msgid "Games"
+msgstr "ល្បែង"
+
+msgid "Add-Ins"
+msgstr "បន្ថែម"
+
+msgid "Send Buddy List"
+msgstr "ផ្ញើ​បញ្ជី​មិត្តភក្ដិ"
+
+msgid "ICQ Direct Connect"
+msgstr "តភ្ជាប់​ ICQ ដោយ​ផ្ទាល់"
+
+msgid "AP User"
+msgstr "អ្នក​ប្រើ AP"
+
+msgid "ICQ RTF"
+msgstr "ICQ RTF"
+
+msgid "Nihilist"
+msgstr "Nihilist"
+
+msgid "ICQ Server Relay"
+msgstr "ពន្យារ​ម៉ាស៊ីន​បម្រើ ICQ"
+
+msgid "Old ICQ UTF8"
+msgstr "ICQ UTF8 ចាស់"
+
+msgid "Trillian Encryption"
+msgstr "ការ​អ៊ិនគ្រីប Trillian"
+
+msgid "ICQ UTF8"
+msgstr "ICQ UTF8"
+
+msgid "Hiptop"
+msgstr "Hiptop"
+
+msgid "Security Enabled"
+msgstr "បាន​បើក​សុវត្ថិភាព"
+
+msgid "Video Chat"
+msgstr "ជជែក​តាម​វីដេអូ"
+
+msgid "iChat AV"
+msgstr "iChat AV"
+
+msgid "Live Video"
+msgstr "វីដេអូ​បន្តផ្ទាល់"
+
+msgid "Camera"
+msgstr "ម៉ាស៊ីន​ថត​"
+
+msgid "Screen Sharing"
+msgstr "ការ​ចែករំលែក​អេក្រង់"
+
+msgid "Free For Chat"
+msgstr "ទំនេរ​សម្រាប់​ជជែក"
+
+msgid "Not Available"
+msgstr "មិនអាច​ប្រើ​បាន"
+
+msgid "Occupied"
+msgstr "កាន់កាប់"
+
+msgid "Web Aware"
+msgstr "ការ​យល់ដឹង​អំពី​បណ្ដាញ"
+
+msgid "Invisible"
+msgstr "មើល​មិន​ឃើញ"
+
+msgid "IP Address"
+msgstr "អាសយដ្ឋាន IP"
+
+msgid "Warning Level"
+msgstr "កម្រិត​ព្រមាន"
+
+msgid "Buddy Comment"
+msgstr "មតិយោបល់​មិត្តភក្ដិ"
+
+#, c-format
+msgid ""
+"Could not connect to authentication server:\n"
+"%s"
+msgstr ""
+"មិនអាច​តភ្ជាប់​ទៅ​កាន់​ម៉ាស៊ីន​បម្រើ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​បានទេ ៖\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not connect to BOS server:\n"
+"%s"
+msgstr ""
+"មិនអាច​តភ្ជាប់​ទៅ​កាន់​ម៉ាស៊ីន​បម្រើ BOS ៖\n"
+"%s"
+
+msgid "Username sent"
+msgstr "បានផ្ញើ​ឈ្មោះ​អ្នក​ប្រើ"
+
+msgid "Connection established, cookie sent"
+msgstr "បានបង្កើត​ការ​តភ្ជាប់ បានផ្ញើ​ខូគី"
+
+#. TODO: Don't call this with ssi
+msgid "Finalizing connection"
+msgstr "បញ្ចប់​ការ​តភ្ជាប់"
+
+#, c-format
+msgid ""
+"Unable to login: Could not sign on as %s because the username is invalid. "
+"Usernames must be a valid email address, or start with a letter and contain "
+"only letters, numbers and spaces, or contain only numbers."
+msgstr ""
+"មិនអាច​ចូល​បានទេ ៖ មិនអាច​ចូល​ជា​ %s ពីព្រោះ​ឈ្មោះ​អ្នក​ប្រើ​មិន​ត្រឹមត្រូវ ។ អ្នក​ប្រើ​ត្រូវ​តែ​មានអាសយដ្ឋាន​"
+"អ៊ីមែល ឬ​ចាប់ផ្ដើម​ដោយ​អក្សរ និង​មានតែ​អក្សរ លេខ និង​ចន្លោះ ឬ​មាន​តែ​លេខ ។"
+
+#. Unregistered screen name
+#. uid is not exist
+msgid "Invalid username."
+msgstr "ឈ្មោះ​អ្នកប្រើ​មិន​ត្រឹមត្រូវ ។"
+
+msgid "Incorrect password."
+msgstr "ពាក្យ​សម្ងាត់​មិន​ត្រឹមត្រូវ ។"
+
+#. Suspended account
+msgid "Your account is currently suspended."
+msgstr "គណនី​របស់​អ្នក​បច្ចុប្បន្ន​ត្រូវ​បានផ្អាក ។"
+
+#. service temporarily unavailable
+msgid "The AOL Instant Messenger service is temporarily unavailable."
+msgstr "សេវា​កម្មវិធី​ផ្ញើសារបន្ទាន់ AOL បច្ចុប្បន្ន​ប្រើ​មិនបានទេ ។"
+
+#. screen name connecting too frequently
+#. IP address connecting too frequently
+msgid ""
+"You have been connecting and disconnecting too frequently. Wait ten minutes "
+"and try again. If you continue to try, you will need to wait even longer."
+msgstr ""
+"អ្នក​កំពុង​ត្រូវ​បានតភ្ជាប់ និង​ផ្ដាច់​ញឹក​ញាប់​ណាស់ ។ រង់ចាំ​ដប់នាទី ហើយ​ព្យាយាម​ម្ដង​ទៀត ។ ប្រសិនបើ​អ្នក​បន្ត​"
+"ដើម្បី​ព្យាយាម អ្នកនឹង​ត្រូវ​រង់ចាំ​យូរ​បន្តិច ។"
+
+#, c-format
+msgid "The client version you are using is too old. Please upgrade at %s"
+msgstr "កំណែ​ម៉ាស៊ីន​ភ្ញៀវ​ដែល​អ្នក​កំពុង​ប្រើ​ចាស់​ពេក ។ សូម​ធ្វើ​ឲ្យ​ប្រសើរ​នៅ %s"
+
+msgid "Could Not Connect"
+msgstr "មិនអាច​តភ្ជាប់​បានទេ"
+
+msgid "Received authorization"
+msgstr "បានទទួល​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ"
+
+msgid "The SecurID key entered is invalid."
+msgstr "សោ SecurID ដែល​​បាន​បញ្ចូល​មិនត្រឹមត្រូវ ។"
+
+msgid "Enter SecurID"
+msgstr "បញ្ចូល SecurID"
+
+msgid "Enter the 6 digit number from the digital display."
+msgstr "បញ្ចូលលេខ ៦ តួលេខ​ពី​ការ​បង្ហាញឌីជីថល ។"
+
+#. *
+#. * A wrapper for purple_request_action() that uses @c OK and @c Cancel buttons.
+#.
+msgid "_OK"
+msgstr "យល់ព្រម"
+
+#, c-format
+msgid "You may be disconnected shortly. If so, check %s for updates."
+msgstr ""
+"អ្នក​អាច​ត្រូ​វបាន​ផ្ដាច់​ក្នុង​រយៈពេលបន្តិចទៀត​នេះ ។ ប្រសិនបើ​ដូច្នេះ​មែន ពិនិត្យ​មើល​ភាពទាន់សម័យ %s ។"
+
+msgid "Unable to get a valid AIM login hash."
+msgstr "មិនអាច​យក​សញ្ញា​ចូល AIM ត្រឹមត្រូវ​ទេ ។"
+
+#, c-format
+msgid "You may be disconnected shortly. Check %s for updates."
+msgstr "អ្នក​អាច​ត្រូវ​បានផ្ដាច់​ក្នុង​រយៈពេល​បន្តិចទៀត​នេះ ។ ពិនិត្យ​មើលភាព​ទាន់សម័យ %s ។"
+
+msgid "Unable to get a valid login hash."
+msgstr "មិនអាច​យក​សញ្ញា​ចូល​ត្រឹមត្រូវ​បានទេ ។"
+
+msgid "Password sent"
+msgstr "បានផ្ញើ​ពាក្យ​​​សម្ងាត់"
+
+msgid "Unable to initialize connection"
+msgstr "មិនអាច​ចាប់ផ្ដើម​កា​រតភ្ជាប់​បានទេ"
+
+msgid "Please authorize me so I can add you to my buddy list."
+msgstr "សូម​អនុញ្ញាត​ខ្ញុំ ដូច្នេះ​ខ្ញុំ​អាច​បន្ថែម​អ្នក​នៅកាន់​បញ្ជី​មិត្តភក្ដិ​របស់​​ខ្ញុំ ។"
+
+msgid "Authorization Request Message:"
+msgstr "សារ​សំណើ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ ៖"
+
+msgid "Please authorize me!"
+msgstr "សូម​អនុញ្ញាត​ខ្ញុំ !"
+
+msgid "No reason given."
+msgstr "គ្មាន​ហេតុផល​បានផ្ដល់ ។"
+
+msgid "Authorization Denied Message:"
+msgstr "សារ​បដិសេធ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ ៖"
+
+#, c-format
+msgid ""
+"The user %u has denied your request to add them to your buddy list for the "
+"following reason:\n"
+"%s"
+msgstr ""
+"អ្នក​ប្រើ %u បានបដិសេធ​សំណើ​របស់​អ្នក ក្នុងការ​បន្ថែម​ពួកគេ​ទៅ​ក្នុង​បញ្ជីមិត្តភក្ដិ​របស់​អ្នក​ដោយ​សារ​មាន​ហេតុផល​"
+"ដូច​ខាងក្រោម ៖\n"
+"%s"
+
+msgid "ICQ authorization denied."
+msgstr "បានបដិសេធ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ ICQ ។"
+
+#. Someone has granted you authorization
+#, c-format
+msgid "The user %u has granted your request to add them to your buddy list."
+msgstr "អ្នក​ប្រើ %u បានផ្ដល់​សំណើ​របស់​អ្នក​ ដើម្បី​បន្ថែម​ពួកគេ​ទៅ​កាន់​បញ្ជីមិត្តភក្ដិ​របស់​អ្នក ។"
+
+#, c-format
+msgid ""
+"You have received a special message\n"
+"\n"
+"From: %s [%s]\n"
+"%s"
+msgstr ""
+"អ្នក​បាន​ទទួល​សារ​ពិសេស\n"
+"\n"
+"ពី ៖ %s [%s]\n"
+"%s"
+
+#, c-format
+msgid ""
+"You have received an ICQ page\n"
+"\n"
+"From: %s [%s]\n"
+"%s"
+msgstr ""
+"អ្នក​បាន​ទទួល​ទំព័រ ICQ\n"
+"\n"
+"ពី ៖ %s [%s]\n"
+"%s"
+
+#, c-format
+msgid ""
+"You have received an ICQ email from %s [%s]\n"
+"\n"
+"Message is:\n"
+"%s"
+msgstr ""
+"អ្នក​បាន​ទទួល​អ៊ីមែល ICQ ពី %s [%s]\n"
+"\n"
+"សារគឺ ៖\n"
+"%s"
+
+#, c-format
+msgid "ICQ user %u has sent you a buddy: %s (%s)"
+msgstr "អ្នក​ប្រើ ICQ %u បានផ្ញើ​ឲ្យ​អ្នក​នូវ​មិត្តភក្ដិ ៖ %s (%s)"
+
+msgid "Do you want to add this buddy to your buddy list?"
+msgstr "តើ​អ្នក​ចង់​ប​ន្ថែម​មិត្តភក្ដិ​នេះ​ទៅ​កាន់​បញ្ជីមិត្តភក្តិ​របស់​អ្នក​ដែរឬទេ ?"
+
+msgid "_Add"
+msgstr "បន្ថែម"
+
+msgid "_Decline"
+msgstr "បដិ​សេធ"
+
+#, c-format
+msgid "You missed %hu message from %s because it was invalid."
+msgid_plural "You missed %hu messages from %s because they were invalid."
+msgstr[0] "អ្នកបាត់សារ %hu ពី %s ដោយ​សារ​តែ​ពួកវា​មិន​ត្រឹមត្រូវ ។"
+
+#, c-format
+msgid "You missed %hu message from %s because it was too large."
+msgid_plural "You missed %hu messages from %s because they were too large."
+msgstr[0] "អ្នកបាត់សារ %hu ពី %s ពីព្រោះ​វា​ធំពេក ។"
+
+#, c-format
+msgid ""
+"You missed %hu message from %s because the rate limit has been exceeded."
+msgid_plural ""
+"You missed %hu messages from %s because the rate limit has been exceeded."
+msgstr[0] "អ្នក​បាត់សារ %hu ពី %s ដោយសារ​តែ​លើស​ដែន​កំណត់​អត្រា ។"
+
+#, c-format
+msgid ""
+"You missed %hu message from %s because his/her warning level is too high."
+msgid_plural ""
+"You missed %hu messages from %s because his/her warning level is too high."
+msgstr[0] "អ្នកបាត់សារ %hu ពី %s ដោយ​សារ​តែ​កម្រិត​ព្រមានរបស់​គាត់​ខ្ពស់​ពេក ។"
+
+#, c-format
+msgid "You missed %hu message from %s because your warning level is too high."
+msgid_plural ""
+"You missed %hu messages from %s because your warning level is too high."
+msgstr[0] "អ្នកបាត់​សារ %hu ពី %s ដោយសារ​តែ​កម្រិត​ព្រមាន​របស់​អ្នក​ខ្ពស់​ពេក ។"
+
+#, c-format
+msgid "You missed %hu message from %s for an unknown reason."
+msgid_plural "You missed %hu messages from %s for an unknown reason."
+msgstr[0] "អ្នកបាត់​សារ %hu ពី %s ដោយសារ​ហេតុផល​ដែល​មិនស្គាល់ ។"
+
+#. Data is assumed to be the destination sn
+#, c-format
+msgid "Unable to send message: %s"
+msgstr "មិនអាច​ផ្ញើ​សារ ៖ %s"
+
+msgid "Unknown reason."
+msgstr "មិន​ស្គាល់​ហេតុផល ។"
+
+#, c-format
+msgid "Unable to send message to %s:"
+msgstr "មិនអាច​ផ្ញើសារ​ទៅ​កាន់ %s បានទេ ៖"
+
+#, c-format
+msgid "User information not available: %s"
+msgstr "មិនមាន​ព័ត៌មាន​អ្នក​ប្រើ​ ៖ %s"
+
+msgid "Online Since"
+msgstr "លើ​បណ្ដាញ​តាំងពី"
+
+msgid "Member Since"
+msgstr "សមាជិក​តាំង​ពី"
+
+msgid "Profile"
+msgstr "ទម្រង់"
+
+msgid "Your AIM connection may be lost."
+msgstr "កា​រតភ្ជាប់ AIM របស់​អ្នក​អាច​បាត់បង់ ។"
+
+#. The conversion failed!
+msgid ""
+"[Unable to display a message from this user because it contained invalid "
+"characters.]"
+msgstr "[មិនអាច​បង្ហាញ​សារ​ពី​អ្នក​ប្រើ​នេះ​បានទេ ពីព្រោះ​វា​មាន​តួអក្សរ​មិន​ត្រឹមត្រូវ ។]"
+
+msgid ""
+"The last action you attempted could not be performed because you are over "
+"the rate limit. Please wait 10 seconds and try again."
+msgstr ""
+"សកម្មភាព​ចុងក្រោយ​ដែល​អ្នកប៉ុនប៉ង​មិនអាច​ត្រូវ​បានអនុវត្ត​បានទេ ពីព្រោះ​អ្នក​លើស​អត្រា​ដែន​កំណត់ ។ សូម​រង់ចាំ​ "
+"១០ វិនាទី ហើយ​ព្យាយាម​ម្ដង​ទៀត ។"
+
+#, c-format
+msgid "You have been disconnected from chat room %s."
+msgstr "អ្នក​ត្រូវ​បានផ្ដាច់​ចេញ​ពី​បន្ទប់​ជជែក %s ។"
+
+msgid "Mobile Phone"
+msgstr "ទូរស័ព្ទ​​ចល័ត"
+
+msgid "Personal Web Page"
+msgstr "ទំព័រ​បណ្ដាញ​ផ្ទាល់ខ្លួន"
+
+#. aim_userinfo_t
+#. strip_html_tags
+msgid "Additional Information"
+msgstr "ព័ត៌មាន​បន្ថែម"
+
+msgid "Zip Code"
+msgstr "លេខ​តំបន់"
+
+msgid "Work Information"
+msgstr "ព័ត៌មាន​ការងារ"
+
+msgid "Division"
+msgstr "វិធី​ចែក"
+
+msgid "Position"
+msgstr "ទីតាំង​"
+
+msgid "Web Page"
+msgstr "ទំព័រ​បណ្តាញ"
+
+msgid "Pop-Up Message"
+msgstr "សារ​លេច​ឡើង"
+
+#, c-format
+msgid "The following username is associated with %s"
+msgid_plural "The following usernames are associated with %s"
+msgstr[0] "ឈ្មោះ​អ្នកប្រើ​ដូច​ខាងក្រោម​ត្រូវ​បានភ្ជាប់​ជា​មួយ %s"
+
+#, c-format
+msgid "No results found for email address %s"
+msgstr "រក​មិនឃើញ​លទ្ធផល​សម្រាប់​អាសយដ្ឋាន​អ៊ីមែល %s"
+
+#, c-format
+msgid "You should receive an email asking to confirm %s."
+msgstr "អ្នក​គួរ​ទទួល​អ៊ីមែល​មួយ ដោយ​សួរ​ឲ្យ​អះអាង %s ។"
+
+msgid "Account Confirmation Requested"
+msgstr "បាន​ស្នើ​ការ​អះអាង​របស់គណនី"
+
+#, c-format
+msgid ""
+"Error 0x%04x: Unable to format username because the requested name differs "
+"from the original."
+msgstr "កំហុស 0x%04x ៖ មិនអាច​ធ្វើ​ទ្រង់ទ្រាយ​ឈ្មោះអ្នកប្រើបានទេ ពីព្រោះ​ឈ្មោះ​ខុស​ពី​ឈ្មោះ​ដើម ។"
+
+#, c-format
+msgid "Error 0x%04x: Unable to format username because it is invalid."
+msgstr "កំហុស 0x%04x ៖ មិនអាច​ធ្វើ​ទ្រង់ទ្រាយ​ឈ្មោះ​អ្នកប្រើ​បានទេ ពីព្រោះ​វា​មិនត្រឹមត្រូវ ។"
+
+#, c-format
+msgid ""
+"Error 0x%04x: Unable to format username because the requested name is too "
+"long."
+msgstr "កំហុស 0x%04x ៖ មិនអាច​ធ្វើ​ទ្រង់ទ្រាយ​ឈ្មោះអ្នកប្រើ​បានទេ ពីព្រោះ​ឈ្មោះ​ដែល​បាន​ស្នើ​វែង​ពេក ។"
+
+#, c-format
+msgid ""
+"Error 0x%04x: Unable to change email address because there is already a "
+"request pending for this username."
+msgstr ""
+"កំហុស 0x%04x ៖ មិនអាច​ផ្លាស់ប្ដូរ​អាសយដ្ឋាន​អ៊ីមែល​បាន​ទេ ពីព្រោះ​មាន​សំណើ​រួ​ចហើយ​ដែល​រង់ចាំ​សម្រាប់​ឈ្មោះ​"
+"អ្នក​ប្រើ​នេះ ។"
+
+#, c-format
+msgid ""
+"Error 0x%04x: Unable to change email address because the given address has "
+"too many usernames associated with it."
+msgstr ""
+"កំហុស 0x%04x ៖ មិនអាច​ផ្លាស់ប្ដូរ​អាសយដ្ឋានអ៊ីមែលបានទេ ពីព្រោះ​អាសយដ្ឋាន​ដែលបានផ្ដល់​មាន​ឈ្មោះ​"
+"អ្នកប្រើ​ច្រើនពេក​ដែល​ជាប់​ជា​មួយ​វា ។"
+
+#, c-format
+msgid ""
+"Error 0x%04x: Unable to change email address because the given address is "
+"invalid."
+msgstr ""
+"កំហុស 0x%04x ៖ មិន​អាច​ផ្លាស់ប្ដូរ​អាសយដ្ឋាន​អ៊ីមែល​បានទេ ពីព្រោះ​អាសយដ្ឋាន​ដែល​បានផ្ដល់​មិន​ត្រឹមត្រូវ​ទេ ។"
+
+#, c-format
+msgid "Error 0x%04x: Unknown error."
+msgstr "កំហុស 0x%04x ៖ មិនស្គាល់​កំហុស ។"
+
+msgid "Error Changing Account Info"
+msgstr "កំហុស​ក្នុងកា​រផ្លាស់ប្ដូរ​ព័ត៌មាន​របស់​គណនី"
+
+#, c-format
+msgid "The email address for %s is %s"
+msgstr "អាសយដ្ឋាន​អ៊ីមែល​សម្រាប់ %s គឺ %s"
+
+msgid "Account Info"
+msgstr "ព័ត៌មាន​គណនី"
+
+msgid ""
+"Your IM Image was not sent. You must be Direct Connected to send IM Images."
+msgstr "មិនបានផ្ញើ​រូបភាព IM របស់​ទេ ។ អ្នក​ត្រូវតែ​បានតភ្ជាប់​ដោយ​ផ្ទាល់ ដើម្បី​ផ្ញើ​រូបភាព IM ។"
+
+msgid "Unable to set AIM profile."
+msgstr "មិនអាច​កំណត់​ទម្រង់ AIM ទេ ។"
+
+msgid ""
+"You have probably requested to set your profile before the login procedure "
+"completed. Your profile remains unset; try setting it again when you are "
+"fully connected."
+msgstr ""
+"អ្នកប្រហែលជា​បាន​ស្នើ​ ឲ្យ​កំណត់​ទម្រង់​របស់​អ្នកមុននឹង​បញ្ចប់នីតិវិធី​បញ្ចូល ។ ទម្រង់​របស់​អ្នក​នៅតែ​មិនបាន​កំណត់ "
+"ព្យាយាម​កំណត់​វា​ម្ដង​ទៀត នៅពេល​ដែល​អ្នក​បានតភ្ជាប់ពេញលេញ ។"
+
+#, c-format
+msgid ""
+"The maximum profile length of %d byte has been exceeded. It has been "
+"truncated for you."
+msgid_plural ""
+"The maximum profile length of %d bytes has been exceeded. It has been "
+"truncated for you."
+msgstr[0] "ប្រវែង​ទម្រង់​អតិបរមានៃ %d បៃ​បានលើស​ដែនកំណត់​ហើយ ។ វា​ត្រូវ​បានកាត់​ឲ្យ​ខ្លី​សម្រាប់​អ្នក ។"
+
+msgid "Profile too long."
+msgstr "ទម្រង់​វែង​ពេក ។"
+
+#, c-format
+msgid ""
+"The maximum away message length of %d byte has been exceeded. It has been "
+"truncated for you."
+msgid_plural ""
+"The maximum away message length of %d bytes has been exceeded. It has been "
+"truncated for you."
+msgstr[0] ""
+"សារ​ចាកឆ្ងាយ​អតិបរមា​ប្រវែង %d បៃ បានលើស​កំណត់​ហើយ ។ វា​ត្រូវ​បាន​កាត់​ឲ្យ​ខ្លី​សម្រាប់​អ្នក ។"
+
+msgid "Away message too long."
+msgstr "សារ​ចាកឆ្ងាយ​វែង​ពេក ។"
+
+#, c-format
+msgid ""
+"Could not add the buddy %s because the username is invalid. Usernames must "
+"be a valid email address, or start with a letter and contain only letters, "
+"numbers and spaces, or contain only numbers."
+msgstr ""
+"មិនអាច​បន្ថែម​មិត្តភក្ដិ %s បាន​ទេ ពីព្រោះ​ឈ្មោះ​អ្នក​ប្រើ​មិន​ត្រឹមត្រូវ ។ ឈ្មោះ​អ្នកប្រើ​ត្រូវ​តែ​ជា​"
+"អាសយដ្ឋានអ៊ីមែល​ត្រឹមត្រូវ ឬ​ចាប់ផ្ដើម​ដោយ​អក្សរ ហើយមាន​តែ​អក្សរ លេខ និង​ចន្លោះ ឬ​មាន​តែ​លេខ ។"
+
+msgid "Unable to Add"
+msgstr "មិនអាច​បន្ថែម"
+
+msgid "Unable to Retrieve Buddy List"
+msgstr "មិនអាច​ទៅ​យក​បញ្ជីមិត្តភ្ដិ​បានទេ"
+
+msgid ""
+"The AIM servers were temporarily unable to send your buddy list. Your buddy "
+"list is not lost, and will probably become available in a few minutes."
+msgstr ""
+"ម៉ាស៊ីនបម្រើ AIM មិនអាច​ផ្ញើ​ជា​បណ្ដោះអាសន្ន​ទៅ​កាន់​បញ្ជី​មិត្តភក្ដិ​របស់​អ្នក ។ បញ្ជី​មិត្តភក្ដិ​របស់​អ្នក​មិន​បាត់​"
+"បង់​ទេ ហើយ​​ប្រហែលជា​នឹង​អាច​ប្រើ​ក្នុង​រយៈ​ពីរ បី​នាទី ។"
+
+msgid "Orphans"
+msgstr "កំព្រា"
+
+#, c-format
+msgid ""
+"Could not add the buddy %s because you have too many buddies in your buddy "
+"list. Please remove one and try again."
+msgstr ""
+"មិនអាច​បន្ថែម​មិត្តភក្ដិ %s បាន​ទេ ពីព្រោះ​អ្នក​មាន​មិត្តភក្ដិជា​ច្រើន​នៅ​ក្នុង​បញ្ជីមិត្តភក្ដិ​របស់​អ្នក ។ សូមយក​​"
+"ចេញ​មួយ ហើយ​ព្យាយាម​ម្ដង​ទៀត ។"
+
+msgid "(no name)"
+msgstr "(គ្មាន​ឈ្មោះ)"
+
+#, c-format
+msgid "Could not add the buddy %s for an unknown reason."
+msgstr "មិនអាច​បន្ថែម​មិត្តភក្ដិ %s បាន​ទេ ដោយ​សារ​មិន​ស្គាល់​ហេតុផល ។"
+
+#, c-format
+msgid ""
+"The user %s has given you permission to add him or her to your buddy list. "
+"Do you want to add this user?"
+msgstr ""
+"អ្នក​ប្រើ %s បានផ្ដល់​សិទ្ធិ​ដើម្បី​បន្ថែម​គាត់​ទៅកាន់​បញ្ជីមិត្តភក្ដិ​របស់​អ្នក ។ តើអ្នក​ចង់​បន្ថែម​អ្នកប្រើនេះ​"
+"ដែរឬទេ ?"
+
+msgid "Authorization Given"
+msgstr "បានផ្ដល់កា​រផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ"
+
+#. Granted
+#, c-format
+msgid "The user %s has granted your request to add them to your buddy list."
+msgstr "អ្នកប្រើ %s បានផ្ដល់​សំណើ​របស់​អ្នក ដើម្បីបន្ថែម​ពួកគេ​ទៅ​កាន់បញ្ជី​មិត្តភក្ដិ​របស់​អ្នក ។"
+
+msgid "Authorization Granted"
+msgstr "បាន​ផ្ដល់​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ"
+
+#. Denied
+#, c-format
+msgid ""
+"The user %s has denied your request to add them to your buddy list for the "
+"following reason:\n"
+"%s"
+msgstr ""
+"អ្នកប្រើ %s បានបដិសេធ​សំណើ​របស់​អ្នក ដើម្បីបន្ថែម​ពួកគេ​ទៅក្នុង​បញ្ជីមិត្តភក្ដិ​របស់​អ្នក​ដោយ​សារ​តែ​មាន​ហេតុផល​"
+"ដូច​ខាងក្រោម ៖\n"
+"%s"
+
+msgid "Authorization Denied"
+msgstr "បានបដិសេធ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ"
+
+msgid "_Exchange:"
+msgstr "ផ្លាស់ប្ដូរ ៖"
+
+msgid "Your IM Image was not sent. You cannot send IM Images in AIM chats."
+msgstr ""
+"រូបភាព IM របស់​អ្នក​មិន​ត្រូវ​បាន​ផ្ញើ​ទេ ។ អ្នកមិនអាច​ផ្ញើ​រូបភាព IM នៅ​ក្នុងការ​ជជែក​របស់ AIM បាន​ទេ "
+"។"
+
+msgid "iTunes Music Store Link"
+msgstr "តំណ​ផ្ទុក​តន្ត្រី​របស់ iTunes"
+
+#, c-format
+msgid "Buddy Comment for %s"
+msgstr "មតិយោបល់​របស់មិត្តភក្ដិ​សម្រាប់ %s"
+
+msgid "Buddy Comment:"
+msgstr "មតិយោបល់របស់មិត្តភក្ដិ ៖"
+
+#, c-format
+msgid "You have selected to open a Direct IM connection with %s."
+msgstr "អ្នកបាន​ជ្រើស​ដើម្បីបើក​ការ​តភ្ជាប់ IM ដោយ​ផ្ទាល់ជា​មួយ %s ។"
+
+msgid ""
+"Because this reveals your IP address, it may be considered a security risk. "
+"Do you wish to continue?"
+msgstr ""
+"ពីព្រោះ​វា​ដឹង​អាសយដ្ឋាន IP របស់​អ្នក វា​អាច​ត្រូវ​បាន​​ចាត់​ទុកថា​មានគ្រោះថ្នាក់ ។ តើអ្នក​ចង់​បន្ត​"
+"ដែរឬទេ ?"
+
+msgid "C_onnect"
+msgstr "តភ្ជាប់"
+
+msgid "Get AIM Info"
+msgstr "យក​ព័ត៌មាន​របស់ AIM"
+
+#. We only do this if the user is in our buddy list
+msgid "Edit Buddy Comment"
+msgstr "កែសម្រួល​មតិយោបល់​របស់​មិត្តភក្ដិ"
+
+msgid "Get Status Msg"
+msgstr "យក​ស្ថានភាព​កម្មវិធី​ផ្ញើសារ"
+
+msgid "Direct IM"
+msgstr "IM ផ្ទាល់"
+
+msgid "Re-request Authorization"
+msgstr "ស្នើ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ឡើង​វិញ"
+
+msgid "Require authorization"
+msgstr "តម្រូវ​ឲ្យ​មានការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ"
+
+msgid "Web aware (enabling this will cause you to receive SPAM!)"
+msgstr "ការ​យល់​ដឹង​អំពីបណ្ដាញ (ការ​បើកវា​នឹង​​ធ្វើ​ឲ្យ​អ្នក​ទទួល​ SPAM!)"
+
+msgid "ICQ Privacy Options"
+msgstr "ជម្រើស​ឯកជន​របស់ ICQ"
+
+msgid "The new formatting is invalid."
+msgstr "កា​រធ្វើ​ទ្រង់ទ្រាយ​ថ្មី​មិន​ត្រឹមត្រូវ​ទេ ។"
+
+msgid "Username formatting can change only capitalization and whitespace."
+msgstr "កា​រធ្វើ​ទ្រង់ទ្រាយឈ្មោះ​អ្នកប្រើ​អាច​ផ្លាស់ប្ដូរ​តែ​​ក្នុង​ករណី​មានអក្សរ​ធំ និង​ចន្លោះមិនឃើញ ។"
+
+msgid "Change Address To:"
+msgstr "ផ្លាស់ប្ដូរ​អាសយដ្ឋាន​ ជូន​ចំពោះ ៖"
+
+msgid "<i>you are not waiting for authorization</i>"
+msgstr "<i>អ្នកមិនកំពុង​រង់ចាំ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ទេ</i>"
+
+msgid "You are awaiting authorization from the following buddies"
+msgstr "អ្នកកំពុង​រង់ចាំ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ពី​មិត្តភក្ដិ​ដូច​ខាង​ក្រោម"
+
+msgid ""
+"You can re-request authorization from these buddies by right-clicking on "
+"them and selecting \"Re-request Authorization.\""
+msgstr ""
+"អ្នក​អាច​ស្នើ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ឡើង​វិញ​ពី​មិត្តភក្ដិ​ទាំង​នេះ ដោយ​ចុច​កណ្ដុរ​ស្ដាំ​លើ​ពួកវា ហើយជ្រើស "
+"\"ស្នើ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ឡើង​វិញ ។\""
+
+msgid "Find Buddy by Email"
+msgstr "រក​មិត្តភក្ដិតាម​អ៊ីមែល"
+
+msgid "Search for a buddy by email address"
+msgstr "រក​មិត្តភក្ដិ​តាម​អាសយដ្ឋាន​អ៊ីមែល"
+
+msgid "Type the email address of the buddy you are searching for."
+msgstr "វាយ​អាសយដ្ឋាន​អ៊ីមែល​របស់​មិត្តភក្ដិ​ដែល​អ្នកកំពុង​ស្វែងរក ។"
+
+msgid "_Search"
+msgstr "ស្វែងរក"
+
+msgid "Set User Info (web)..."
+msgstr "កំណត់​ព័ត៌មាន​របស់​អ្នកប្រើ (បណ្ដាញ)..."
+
+msgid "Change Password (web)"
+msgstr "ផ្លាស់ប្ដូរ​ពាក្យ​សម្ងាត់ (បណ្ដាញ)"
+
+msgid "Configure IM Forwarding (web)"
+msgstr "កំណត់​រចនាសម្ព័ន្ធ​ការ​បញ្ជូន IM បន្ត (បណ្ដាញ)"
+
+#. ICQ actions
+msgid "Set Privacy Options..."
+msgstr "កំណត់​ជម្រើស​ឯកជន..."
+
+#. AIM actions
+msgid "Confirm Account"
+msgstr "អះអាង​គណនី"
+
+msgid "Display Currently Registered Email Address"
+msgstr "បង្ហាញ​អាសយដ្ឋាន​អ៊ីមែល​ដែលបាន​ចុះឈ្មោះ​បច្ចុប្បន្ន"
+
+msgid "Change Currently Registered Email Address..."
+msgstr "ផ្លាស់ប្ដូរ​អាសយដ្ឋាន​អ៊ីមែល​ដែលបានចុះឈ្មោះ​បច្ចុប្បន្ន..."
+
+msgid "Show Buddies Awaiting Authorization"
+msgstr "បង្ហាញ​ការ​ផ្ទៀងផ្ទាត់​រង់ចាំ​របស់​មិត្តភក្ដិ"
+
+msgid "Search for Buddy by Email Address..."
+msgstr "ស្វែងរក​មិត្តភក្ដិ​តាម​អាសយដ្ឋាន​អ៊ីមែល..."
+
+msgid "Search for Buddy by Information"
+msgstr "ស្វែងរក​មិត្តភក្ដិ​តាម​ព័ត៌មាន"
+
+msgid ""
+"Always use AIM/ICQ proxy server for\n"
+"file transfers and direct IM (slower,\n"
+"but does not reveal your IP address)"
+msgstr ""
+"ប្រើ​ម៉ាស៊ីនបម្រើ​ប្រូកស៊ី AIM/ICQ ជា​និច្ច​សម្រាប់​ការ​ផ្ទេរ​ឯកសារ និង IM ផ្ទាល់ (យឺត ប៉ុន្តែ​មិន​ដឹង​"
+"អាសយដ្ឋាន​ IP របស់​អ្នក​ទេ)"
+
+msgid "Allow multiple simultaneous logins"
+msgstr "អនុញ្ញាត​ការ​ចូល​ច្រើន​នាក់​ដំណាល​គ្នា"
+
+#, c-format
+msgid "Asking %s to connect to us at %s:%hu for Direct IM."
+msgstr "ស្នើ %s ឲ្យ​តភ្ជាប់​មក​យើង​នៅ %s:%hu សម្រាប់ IM ដោយ​ផ្ទាល់ ។"
+
+#, c-format
+msgid "Attempting to connect to %s:%hu."
+msgstr "ប៉ុនប៉ង​តភ្ជាប់​ទៅ​កាន់ %s:%hu ។"
+
+msgid "Attempting to connect via proxy server."
+msgstr "ប៉ុនប៉ង​តភ្ជាប់​តាមរយៈ​ម៉ាស៊ីន​បម្រើ​ប្រូកស៊ី ។"
+
+#, c-format
+msgid "%s has just asked to directly connect to %s"
+msgstr "%s ទើប​តែ​បានសួរ​ដើម្បីតភ្ជាប់​ដោយ​ផ្ទាល់ទៅ %s"
+
+msgid ""
+"This requires a direct connection between the two computers and is necessary "
+"for IM Images. Because your IP address will be revealed, this may be "
+"considered a privacy risk."
+msgstr ""
+"វា​ត្រូវការ​ការ​តភ្ជាប់​ដោយ​ផ្ទាល់​រវាង​កុំព្យូទ័រ​ពីរ ហើយ​ចាំបាច់​សម្រាប់​រូបភាព IM ។ ពីព្រោះ​អាសយដ្ឋាន IP "
+"របស់​អ្នក​នឹង​ត្រូវ​បានដឹង វា​អាច​ចាត់​ទុក​ថា​គ្រោះថ្នាក់ ។"
+
+msgid "Aquarius"
+msgstr "Aquarius"
+
+msgid "Pisces"
+msgstr "Pisces"
+
+msgid "Aries"
+msgstr "Aries"
+
+msgid "Taurus"
+msgstr "Taurus"
+
+msgid "Gemini"
+msgstr "Gemini"
+
+msgid "Cancer"
+msgstr "មហារីក"
+
+msgid "Leo"
+msgstr "Leo"
+
+msgid "Virgo"
+msgstr "Virgo"
+
+msgid "Libra"
+msgstr "Libra"
+
+msgid "Scorpio"
+msgstr "Scorpio"
+
+msgid "Sagittarius"
+msgstr "Sagittarius"
+
+msgid "Capricorn"
+msgstr "Capricorn"
+
+msgid "Rat"
+msgstr "កណ្ដុរ"
+
+msgid "Ox"
+msgstr "គោ"
+
+msgid "Tiger"
+msgstr "ខ្លា"
+
+msgid "Rabbit"
+msgstr "ទន្សាយ"
+
+msgid "Dragon"
+msgstr "នាគ"
+
+msgid "Snake"
+msgstr "ពស់"
+
+msgid "Horse"
+msgstr "សេះ"
+
+msgid "Goat"
+msgstr "ពពែ"
+
+msgid "Monkey"
+msgstr "ស្វា"
+
+msgid "Rooster"
+msgstr "មាន់​គក"
+
+msgid "Dog"
+msgstr "ឆ្កែ"
+
+msgid "Pig"
+msgstr "ជ្រូក"
+
+msgid "Other"
+msgstr "ផ្សេងៗទៀត"
+
+msgid "Visible"
+msgstr "​មើលឃើញ"
+
+msgid "Friend Only"
+msgstr "តែមិត្តភក្ដិ"
+
+msgid "Private"
+msgstr "ឯកជន"
+
+msgid "QQ Number"
+msgstr "ចំនួន QQ"
+
+msgid "Country/Region"
+msgstr "ប្រទេស​/​តំបន់"
+
+msgid "Province/State"
+msgstr "ខេត្ត/រដ្ឋ"
+
+msgid "Zipcode"
+msgstr "កូដ​តំបន់"
+
+msgid "Phone Number"
+msgstr "លេខ​ទូរស័ព្ទ"
+
+msgid "Authorize adding"
+msgstr "ផ្ទៀងផ្ទាត់​ការ​បន្ថែម"
+
+msgid "Cellphone Number"
+msgstr "លេខ​ទូរស័ព្ទ​ចល័ត"
+
+msgid "Personal Introduction"
+msgstr "សេចក្ដី​ណែនាំ​ផ្ទាល់ខ្លួន"
+
+msgid "City/Area"
+msgstr "ទីក្រុង​/តំបន់"
+
+msgid "Publish Mobile"
+msgstr "បោះពុម្ព​ចល័ត"
+
+msgid "Publish Contact"
+msgstr "បោះពុម្ព​ផ្សាយ​ទំនាក់"
+
+msgid "College"
+msgstr "មហាវិទ្យាល័យ"
+
+msgid "Horoscope"
+msgstr "ផែនចក្ររាសី"
+
+msgid "Zodiac"
+msgstr "រាសីចក្រ"
+
+msgid "Blood"
+msgstr "ឈាម"
+
+msgid "True"
+msgstr "ពិត"
+
+msgid "False"
+msgstr "មិន​ពិត"
+
+msgid "Modify Contact"
+msgstr "កែប្រែ​ទំនាក់ទំនង"
+
+msgid "Modify Address"
+msgstr "កែប្រែ​អាសយដ្ឋាន"
+
+msgid "Modify Extended Information"
+msgstr "កែប្រែ​ព័ត៌មាន​ដែល​បា​នពង្រីក"
+
+msgid "Modify Information"
+msgstr "កែប្រែ​ព័ត៌មាន"
+
+msgid "Update"
+msgstr "ធ្វើ​​ឲ្យ​​ទាន់សម័យ\t"
+
+msgid "Could not change buddy information."
+msgstr "មិនអាច​ផ្លាស់ប្ដូរ​ព័ត៌មាន​មិត្តភក្ដិ​បានទេ ។"
+
+#, c-format
+msgid "%u requires verification"
+msgstr "%u ត្រូវការ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ"
+
+msgid "Add buddy question"
+msgstr "បន្ថែម​សំណួរ​មិត្តភក្ដិ"
+
+msgid "Enter answer here"
+msgstr "បញ្ចូល​ចម្លើយ​នៅ​ទីនេះ"
+
+msgid "Send"
+msgstr "ផ្ញើ"
+
+msgid "Invalid answer."
+msgstr "ចម្លើយ​មិន​ត្រឹមត្រូវ ។"
+
+msgid "Authorization denied message:"
+msgstr "ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​បានបដិសេធ​សារ ៖"
+
+msgid "Sorry, you're not my style."
+msgstr "សូម​អភ័យទោស អ្នក​មិនមែន​ជា​រចនាប័ទ្ម​របស់​ខ្ញុំ​ទេ ។"
+
+#, c-format
+msgid "%u needs authorization"
+msgstr "%u ត្រូវការ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ"
+
+msgid "Add buddy authorize"
+msgstr "បន្ថែម​ការ​ផ្ទៀងផ្ទាត់​មិត្តភក្ដិ"
+
+msgid "Enter request here"
+msgstr "បញ្ចូល​សំណើ​នៅ​ទីនេះ"
+
+msgid "Would you be my friend?"
+msgstr "តើអ្នក​នឹង​ជា​មិត្តភក្ដិ​របស់​ខ្ញុំ ?"
+
+msgid "QQ Buddy"
+msgstr "មិត្តភក្ដិ QQ"
+
+msgid "Add buddy"
+msgstr "បន្ថែម​មិត្តភក្ដិ"
+
+msgid "Invalid QQ Number"
+msgstr "ចំនួន QQ មិន​ត្រឹមត្រូវ"
+
+msgid "Failed sending authorize"
+msgstr "បានបរាជ័យ​​ក្នុងការ​ផ្ញើ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ"
+
+#, c-format
+msgid "Failed removing buddy %u"
+msgstr "បាន​បរាជ័យ​ក្នុងកា​រយក​មិត្តភក្ដិ​ %u ចេញ"
+
+#, c-format
+msgid "Failed removing me from %d's buddy list"
+msgstr "បានបរាជ័យ​ក្នុងការ​យក​ខ្ញុំ​ចេញ​ពី​បញ្ជីមិត្តភក្ដិ​របស់ %d"
+
+msgid "No reason given"
+msgstr "គ្មាន​ហេតុផល​បាន​ផ្ដល់"
+
+#. only need to get value
+#, c-format
+msgid "You have been added by %s"
+msgstr "អ្នក​ត្រូវ​បាន​បន្ថែម​ដោយ %s"
+
+msgid "Would you like to add him?"
+msgstr "តើ​អ្នក​ចង់​បន្ថែម​គាត់​ទេ ?"
+
+#, c-format
+msgid "Rejected by %s"
+msgstr "បាន​ច្រាន​ចេញ​ដោយ %s"
+
+#, c-format
+msgid "Message: %s"
+msgstr "សារ ៖ %s"
+
+msgid "ID: "
+msgstr "លេខ​សម្គាល់ ៖"
+
+msgid "Group ID"
+msgstr "លេខ​សម្គាល់ក្រុម"
+
+msgid "QQ Qun"
+msgstr "QQ Qun"
+
+msgid "Please enter Qun number"
+msgstr "សូម​បញ្ចូល​លេខ Qun"
+
+msgid "You can only search for permanent Qun\n"
+msgstr "អ្នក​អាច​ស្វែងរក​សម្រាប់តែ​ Qun អចិន្ត្រៃយ៍​ប៉ុណ្ណោះ\n"
+
+msgid "(Invalid UTF-8 string)"
+msgstr "(ខ្សែអក្សរ UTF-8 មិន​ត្រឹមត្រូវ)"
+
+msgid "Not member"
+msgstr "មិន​ចងចាំ"
+
+msgid "Member"
+msgstr "ចងចាំ"
+
+msgid "Requesting"
+msgstr "សំណើ"
+
+msgid "Admin"
+msgstr "គ្រប់គ្រង"
+
+msgid "Notice"
+msgstr "ចំណាំ"
+
+msgid "Detail"
+msgstr "សេចក្ដី​លម្អិត"
+
+msgid "Creator"
+msgstr "អ្នកបង្កើត"
+
+msgid "About me"
+msgstr "អំពី​ខ្ញុំ"
+
+msgid "Category"
+msgstr "ប្រភេទ"
+
+msgid "The Qun does not allow others to join"
+msgstr "Qun មិនអនុញ្ញាត​ឲ្យ​អ្នកផ្សេង​ចូលរួម"
+
+msgid "Join QQ Qun"
+msgstr "ចូលរួម QQ Qun"
+
+msgid "Input request here"
+msgstr "បញ្ចូល​សំណើ​នៅ​ទីនេះ"
+
+#, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "បាន​ចូលដោយ​ជោគជ័យ Qun %s (%u)"
+
+msgid "Successfully joined Qun"
+msgstr "បានចូល​ដោយ​ជោគជ័យ Qun"
+
+#, c-format
+msgid "Qun %u denied from joining"
+msgstr "Qun %u បាន​បដិសេធ​ពី​ការ​ចូលរួម"
+
+msgid "QQ Qun Operation"
+msgstr "ប្រតិបត្តិការ QQ Qun"
+
+msgid "Failed:"
+msgstr "បាន​បរាជ័យ ៖"
+
+msgid "Join Qun, Unknown Reply"
+msgstr "ចូលរួម Qun មិន​ស្គាល់ការ​ឆ្លើយតប"
+
+msgid "Quit Qun"
+msgstr "ចេញពី Qun"
+
+msgid ""
+"Note, if you are the creator, \n"
+"this operation will eventually remove this Qun."
+msgstr "ចំណាំ ប្រសិនបើ​អ្នក​ជា​អ្នកបង្កើត ប្រតិបត្តិការ​នេះ​នឹង​យក Qun នេះ​ចេញ​ ។"
+
+msgid "Sorry, you are not our style"
+msgstr "សូម​អភ័យ​ទោស អ្នក​មិន​ស្ថិត​នៅ​ក្នុងរចនាប័ទ្ម​របស់​យើង​ទេ"
+
+msgid "Successfully changed Qun members"
+msgstr "បានផ្លាស់ប្ដូរ​សមាជិក Qun ដោយ​ជោគជ័យ"
+
+msgid "Successfully changed Qun information"
+msgstr "បាន​ផ្លាស់ប្ដូរ​ព័ត៌មាន Qun ដោយ​ជោគជ័យ"
+
+msgid "You have successfully created a Qun"
+msgstr "អ្នកបានបង្កើត Qun ដោយ​ជោគជ័យ"
+
+msgid "Would you like to set up detailed information now?"
+msgstr "តើអ្នក​ចង់​រៀបចំ​ព័ត៌មានលម្អិត​ឥឡូវ​ដែរឬទេ ?"
+
+msgid "Setup"
+msgstr "រៀបចំ"
+
+#, c-format
+msgid "%u requested to join Qun %u for %s"
+msgstr "%u បានស្នើ​ឲ្យ​ចូលរួម Qun %u សម្រាប់ %s"
+
+#, c-format
+msgid "%u request to join Qun %u"
+msgstr "%u ស្នើ​ឲ្យ​ចូលរួម Qun %u"
+
+#, c-format
+msgid "Failed to join Qun %u, operated by admin %u"
+msgstr "បាន​បរាជ័យ​ក្នុងការ​ចូលរួម Qun %u បាន​ប្រតិបត្តិ​ដោយ​អ្នក​គ្រប់គ្រង %u"
+
+#, c-format
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
+msgstr "<b>ចូលរួម Qun %u ត្រូវ​បាន​អនុម័ត​ដោយ​អ្នក​គ្រប់គ្រង %u សម្រាប់ %s</b>"
+
+#, c-format
+msgid "<b>Removed buddy %u.</b>"
+msgstr "<b>បាន​យក​មិត្តភក្ដិ %u ចេញ ។</b>"
+
+#, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "<b>បាន​ចូល​រួម​មិត្តភក្ដិ​ថ្មី %u ។</b>"
+
+#, c-format
+msgid "Unknown-%d"
+msgstr "មិនស្គាល់ %d"
+
+msgid "Level"
+msgstr "កម្រិត"
+
+msgid " VIP"
+msgstr " VIP"
+
+msgid " TCP"
+msgstr " TCP"
+
+msgid " FromMobile"
+msgstr " FromMobile"
+
+msgid " BindMobile"
+msgstr " BindMobile"
+
+msgid " Video"
+msgstr " វីដែអូ"
+
+msgid " Zone"
+msgstr " តំបន់"
+
+msgid "Flag"
+msgstr "ទង់"
+
+msgid "Ver"
+msgstr "កំណែ"
+
+msgid "Invalid name"
+msgstr "ឈ្មោះ​មិន​ត្រឹមត្រូវ"
+
+msgid "Select icon..."
+msgstr "ជ្រើស​រូបតំណាង..."
+
+#, c-format
+msgid "<b>Login time</b>: %d-%d-%d, %d:%d:%d<br>\n"
+msgstr "<b>ពេលវេលា​ចូល</b> ៖ %d-%d-%d, %d:%d:%d<br>\n"
+
+#, c-format
+msgid "<b>Total Online Buddies</b>: %d<br>\n"
+msgstr "<b>មិត្តភក្ដិ​លើ​បណ្ដាញ​សរុប</b> ៖ %d<br>\n"
+
+#, c-format
+msgid "<b>Last Refresh</b>: %d-%d-%d, %d:%d:%d<br>\n"
+msgstr "<b>ធ្វើ​ឲ្យ​ស្រស់​ចុងក្រោយ</b> ៖ %d-%d-%d, %d:%d:%d<br>\n"
+
+#, c-format
+msgid "<b>Server</b>: %s<br>\n"
+msgstr "<b>ម៉ាស៊ីន​បម្រើ</b> ៖ %s<br>\n"
+
+#, c-format
+msgid "<b>Client Tag</b>: %s<br>\n"
+msgstr "<b>ទង់​ម៉ាស៊ីន​ភ្ញៀវ</b> ៖ %s<br>\n"
+
+#, c-format
+msgid "<b>Connection Mode</b>: %s<br>\n"
+msgstr "<b>របៀប​តភ្ជាប់</b> ៖ %s<br>\n"
+
+#, c-format
+msgid "<b>My Internet IP</b>: %s:%d<br>\n"
+msgstr "<b>IP អ៊ីនធឺណិត​របស់​ខ្ញុំ</b> ៖ %s:%d<br>\n"
+
+#, c-format
+msgid "<b>Sent</b>: %lu<br>\n"
+msgstr "<b>បានផ្ញើ</b> ៖ %lu<br>\n"
+
+#, c-format
+msgid "<b>Resend</b>: %lu<br>\n"
+msgstr "<b>ផ្ញើ​ឡើង​វិញ</b> ៖ %lu<br>\n"
+
+#, c-format
+msgid "<b>Lost</b>: %lu<br>\n"
+msgstr "<b>បាត់បង់</b> ៖ %lu<br>\n"
+
+#, c-format
+msgid "<b>Received</b>: %lu<br>\n"
+msgstr "<b>បាន​ទទួល</b> ៖ %lu<br>\n"
+
+#, c-format
+msgid "<b>Received Duplicate</b>: %lu<br>\n"
+msgstr "<b>បាន​ស្ទួន</b> ៖ %lu<br>\n"
+
+#, c-format
+msgid "<b>Time</b>: %d-%d-%d, %d:%d:%d<br>\n"
+msgstr "<b>ពេលវេលា</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 "ព័ត៌មាន​ចូល"
+
+msgid "<p><b>Original Author</b>:<br>\n"
+msgstr "<p><b>អ្នក​និពន្ធ​ដើម</b> ៖<br>\n"
+
+msgid "<p><b>Code Contributors</b>:<br>\n"
+msgstr "<p><b>អ្នក​ចែកចាយ​កូដ</b> ៖<br>\n"
+
+msgid "<p><b>Lovely Patch Writers</b>:<br>\n"
+msgstr "<p><b>អ្នក​សរសេរ​បំណះ​ដែល​ជា​ទីស្រឡាញ់</b> ៖<br>\n"
+
+msgid "<p><b>Acknowledgement</b>:<br>\n"
+msgstr "<p><b>ទទួល​ស្គាល់</b> ៖<br>\n"
+
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<p><b>អ្នក​សាកល្បង​ហ្មតចត់</b> ៖<br>\n"
+
+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 %s"
+msgstr "អំពី OpenQ %s"
+
+msgid "Change Icon"
+msgstr "ផ្លាស់ប្ដូរ​រូបតំណាង"
+
+msgid "Change Password"
+msgstr "ផ្លាស់ប្ដូរ​ពាក្យ​សម្ងាត់"
+
+msgid "Account Information"
+msgstr "ព័ត៌មាន​គណនី"
+
+msgid "Update all QQ Quns"
+msgstr "ធ្វើ​ឲ្យ QQ Quns ទាន់សម័យ"
+
+msgid "About OpenQ"
+msgstr "អំពី OpenQ"
+
+msgid "Modify Buddy Memo"
+msgstr "កែប្រែ មិត្តភក្ដិ"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "QQ Protocol Plugin"
+msgstr "កម្មវិធី​ជំនួយ​ពិធីការ QQ"
+
+msgid "Auto"
+msgstr "ស្វ័យ​ប្រវត្តិ"
+
+msgid "Select Server"
+msgstr "ជ្រើស​ម៉ាស៊ីន​បម្រើ"
+
+msgid "QQ2005"
+msgstr "QQ2005"
+
+msgid "QQ2007"
+msgstr "QQ2007"
+
+msgid "QQ2008"
+msgstr "QQ2008"
+
+msgid "Connect by TCP"
+msgstr "តភ្ជាប់​តាម TCP"
+
+msgid "Show server notice"
+msgstr "បង្ហាញ​​​កំណត់​ចំណាំ​របស់​ម៉ាស៊ីន​បម្រើ"
+
+msgid "Show server news"
+msgstr "បង្ហាញ​ព័ត៌មាន​របស់​ម៉ាស៊ីនបម្រើ"
+
+msgid "Show chat room when msg comes"
+msgstr "បង្ហាញ​"
+
+msgid "Keep alive interval (seconds)"
+msgstr "ទុក​ខាងក្នុង (វិនាទី)"
+
+msgid "Update interval (seconds)"
+msgstr "ធ្វើ​ឲ្យ​ចន្លោះ​ទាន់សម័យ (វិនាទី)"
+
+msgid "Cannot decrypt server reply"
+msgstr "មិនអាច​ឌិគ្រីប​កា​រឆ្លើយ​តប​របស់​ម៉ាស៊ីន​បម្រើ​បានទេ"
+
+#, c-format
+msgid "Failed requesting token, 0x%02X"
+msgstr "បានបរាជ័យ​ក្នុងកា​រស្នើ​ថូខឹន 0x%02X"
+
+#, c-format
+msgid "Invalid token len, %d"
+msgstr "ថូខឹន​មិនត្រឹមត្រូវ %d"
+
+#. extend redirect used in QQ2006
+msgid "Redirect_EX is not currently supported"
+msgstr "Redirect_EX បច្ចុប្បន្ន​មិនត្រូវ​បានគាំទ្រ​ទេ"
+
+#. need activation
+#. need activation
+#. need activation
+msgid "Activation required"
+msgstr "ត្រូវការ​ធ្វើ​ឲ្យ​សកម្ម"
+
+#, c-format
+msgid "Unknown reply code when logging in (0x%02X)"
+msgstr "កូដ​ឆ្លើយតប​មិន​​ស្គាល់​នៅ​ពេល​ចូល (0x%02X)"
+
+msgid "Could not decrypt server reply"
+msgstr "មិនអាច​ឌិគ្រីប​ការ​​ឆ្លើយតប​របស់​ម៉ាស៊ីន​បម្រើ​បាន​ទេ"
+
+msgid "Requesting captcha"
+msgstr "ស្នើ captcha"
+
+msgid "Checking captcha"
+msgstr "ពិនិត្យ​មើល captcha"
+
+msgid "Failed captcha verification"
+msgstr "បានបរាជ័យក្នុងការ​ផ្ទៀងផ្ទាត់ captcha"
+
+msgid "Captcha Image"
+msgstr "រូបភាព Captcha"
+
+msgid "Enter code"
+msgstr "បញ្ចូល​កូដ"
+
+msgid "QQ Captcha Verification"
+msgstr "ការ​ផ្ទៀងផ្ទាត់ QQ Captcha"
+
+msgid "Enter the text from the image"
+msgstr "បញ្ចូល​អត្ថបទ​ពី​រូបភាព"
+
+#, c-format
+msgid "Unknown reply when checking password (0x%02X)"
+msgstr "មិនស្គាល់​ការ​ឆ្លើយតប​នៅពេល​ពិនិត្យមើលពាក្យ​សម្ងាត់ (0x%02X)"
+
+#, c-format
+msgid ""
+"Unknown reply code when logging in (0x%02X):\n"
+"%s"
+msgstr ""
+"កូដ​ឆ្លើយតប​មិនស្គាល់ នៅពេល​ចូល (0x%02X) ៖\n"
+"%s"
+
+#. we didn't successfully connect. tdt->toc_fd is valid here
+msgid "Unable to connect."
+msgstr "មិនអាច​តភ្ជាប់​បានទេ ។"
+
+msgid "Socket error"
+msgstr "កំហុស​រន្ធ"
+
+msgid "Unable to read from socket"
+msgstr "មិនអាច​អាន​ពី​រន្ធ​បានទេ"
+
+msgid "Write Error"
+msgstr "កំហុស​ក្នុងកា​រសរសេរ"
+
+msgid "Connection lost"
+msgstr "បាត់បង់​ការ​តភ្ជាប់"
+
+msgid "Getting server"
+msgstr "យក​ម៉ាស៊ីនបម្រើ"
+
+msgid "Requesting token"
+msgstr "ស្នើ​ថូខឹន"
+
+msgid "Couldn't resolve host"
+msgstr "មិនអាច​ដោះស្រាយ​ម៉ាស៊ីនបានទេ"
+
+msgid "Invalid server or port"
+msgstr "ម៉ាស៊ីន​បម្រើ ឬ​ច្រក​មិន​ត្រឹមត្រូវ"
+
+msgid "Connecting to server"
+msgstr "តភ្ជាប់​ទៅ​កាន់​ម៉ាស៊ីនបម្រើ"
+
+msgid "QQ Error"
+msgstr "កំហុស QQ"
+
+#, c-format
+msgid ""
+"Server News:\n"
+"%s\n"
+"%s\n"
+"%s"
+msgstr ""
+"ព័ត៌មាន​ម៉ាស៊ីន​បម្រើ ៖\n"
+"%s\n"
+"%s\n"
+"%s"
+
+#, c-format
+msgid "%s:%s"
+msgstr "%s:%s"
+
+#, c-format
+msgid "From %s:"
+msgstr "ពី %s ៖"
+
+#, c-format
+msgid ""
+"Server notice From %s: \n"
+"%s"
+msgstr ""
+"កំណត់​ចំណាំ​ម៉ាស៊ីន​បម្រើពី %s ៖ \n"
+"%s"
+
+msgid "Unknown SERVER CMD"
+msgstr "មិនស្គាល់​ម៉ាស៊ីន​បម្រើ CMD"
+
+#, c-format
+msgid ""
+"Error reply of %s(0x%02X)\n"
+"Room %u, reply 0x%02X"
+msgstr ""
+"កំហុស​ក្នុងការ​ឆ្លើយ​តប %s(0x%02X)\n"
+"បន្ទប់ %u ឆ្លើយតប 0x%02X"
+
+msgid "QQ Qun Command"
+msgstr "ពាក្យ​បញ្ជា QQ Qun"
+
+msgid "Could not decrypt login reply"
+msgstr "មិនអាច​ឌិគ្រីប​ការ​ឆ្លើយ​តប​ការ​ចូល​បានទេ"
+
+msgid "Unknown LOGIN CMD"
+msgstr "មិនស្គាល់​ការ​ចូល CMD"
+
+msgid "Unknown CLIENT CMD"
+msgstr "មិនស្គាល់​ម៉ាស៊ីន​ភ្ញៀវ CMD"
+
+#, c-format
+msgid "%d has declined the file %s"
+msgstr "%d បានបដិសេធ​ឯកសារ %s"
+
+msgid "File Send"
+msgstr "ផ្ញើ​ឯកសារ"
+
+#, c-format
+msgid "%d canceled the transfer of %s"
+msgstr "%d បានបោះបង់​ការ​ផ្ទេរ %s"
+
+msgid "Connection closed (writing)"
+msgstr "បាន​បិទ​ការ​តភ្ជាប់ (សរសេរ)"
+
+#, c-format
+msgid "<b>Group Title:</b> %s<br>"
+msgstr "<b>ចំណង​ជ្រើ​ក្រុម ៖</b> %s<br>"
+
+#, c-format
+msgid "<b>Notes Group ID:</b> %s<br>"
+msgstr "<b>កំណត់ចំណាំ​ក្រុម ID ៖</b> %s<br>"
+
+#, c-format
+msgid "Info for Group %s"
+msgstr "ព័ត៌មាន​សម្រាប់​ក្រុម %s"
+
+msgid "Notes Address Book Information"
+msgstr "កំណត់​ចំណាំ​ព័ត៌មាន​សៀវភៅ​អាសយដ្ឋាន"
+
+msgid "Invite Group to Conference..."
+msgstr "អញ្ជើញ​ក្រុម​ឲ្យ​ចូលរួម​សន្និសីទ..."
+
+msgid "Get Notes Address Book Info"
+msgstr "យក​កំណត់​ចំណាំ​ព័ត៌មាន​សៀវភៅ​អាសយដ្ឋាន"
+
+msgid "Sending Handshake"
+msgstr "ផ្ញើ​ការ​ចាប់ដៃ"
+
+msgid "Waiting for Handshake Acknowledgement"
+msgstr "រង់ចាំ​ការ​ទទួលស្គាល់​ការ​ចាប់ដៃ"
+
+msgid "Handshake Acknowledged, Sending Login"
+msgstr "បាន​ទទួល​ស្គាល់ការ​ចាប់ដៃ ផ្ញើ​ការ​ចូល"
+
+msgid "Waiting for Login Acknowledgement"
+msgstr "រង់ចាំ​ការ​ទទួលស្គាល់​ការ​ចូល"
+
+msgid "Login Redirected"
+msgstr "បានបញ្ចូល​ការ​ចូល​បន្ត"
+
+msgid "Forcing Login"
+msgstr "បង្ខំ​កា​រចូល"
+
+msgid "Login Acknowledged"
+msgstr "បានទទួលស្គាល់​កា​រចូល"
+
+msgid "Starting Services"
+msgstr "ចាប់ផ្ដើម​សេវា"
+
+#, c-format
+msgid ""
+"A Sametime administrator has issued the following announcement on server %s"
+msgstr "ពេលមួយ​នោះ អ្នកគ្រប់គ្រង​បានចេញផ្សាយ​នូវ​សេចក្ដី​ប្រកាស​ដូច​ខាង​ក្រោម​នៅ​លើម៉ាស៊ីនបម្រើ %s"
+
+msgid "Sametime Administrator Announcement"
+msgstr "ការ​ប្រកាស​របស់​អ្នកគ្រប់គ្រង​ពេល​តែ​មួយ"
+
+msgid "Connection reset"
+msgstr "កំណត់​ការ​តភ្ជាប់​ឡើង​វិញ"
+
+#, c-format
+msgid "Error reading from socket: %s"
+msgstr "កំហុស​ក្នុងការ​អាន​ពី​រន្ធ ៖ %s"
+
+#. this is a regular connect, error out
+msgid "Unable to connect to host"
+msgstr "មិនអាច​តភ្ជាប់​ទៅ​កាន់​ម៉ាស៊ីន​ទេ"
+
+#, c-format
+msgid "Announcement from %s"
+msgstr "ការ​ប្រកាស​ពី %s"
+
+msgid "Conference Closed"
+msgstr "បានបិទ​សន្និសីទ"
+
+msgid "Unable to send message: "
+msgstr "មិនអាច​ផ្ញើសារ​បានទេ ៖"
+
+msgid "Place Closed"
+msgstr "បានបិទ​កន្លែង"
+
+msgid "Microphone"
+msgstr "មេក្រូ"
+
+msgid "Speakers"
+msgstr "ធុងបាស"
+
+msgid "Video Camera"
+msgstr "ម៉ាស៊ីន​ថត​​វីដេអូ"
+
+msgid "Supports"
+msgstr "គាំទ្រ"
+
+msgid "External User"
+msgstr "អ្នក​ប្រើ​ខាង​ក្រៅ"
+
+msgid "Create conference with user"
+msgstr "បង្កើត​សន្និសីទ​ជា​មួយ​អ្នក​ប្រើ"
+
+#, c-format
+msgid ""
+"Please enter a topic for the new conference, and an invitation message to be "
+"sent to %s"
+msgstr "សូម​បញ្ចូល​ប្រធាន​បទ​សម្រាប់​សន្និសីទ​ថ្មី ហើយ​សារ​អញ្ជើញ​ត្រូវ​ផ្ញើ​ទៅ %s"
+
+msgid "New Conference"
+msgstr "សន្និសីទ​ថ្មី"
+
+msgid "Create"
+msgstr "បង្កើត"
+
+msgid "Available Conferences"
+msgstr "សន្និសីទ​ដែល​អាច​ប្រើ​បាន"
+
+msgid "Create New Conference..."
+msgstr "បង្កើត​សន្និសីទ​ថ្មី..."
+
+msgid "Invite user to a conference"
+msgstr "អញ្ជើញ​អ្នកប្រើ​ឲ្យ​ចូលរួម​សន្និសីទ"
+
+#, c-format
+msgid ""
+"Select a conference from the list below to send an invite to user %s. Select "
+"\"Create New Conference\" if you'd like to create a new conference to invite "
+"this user to."
+msgstr ""
+"ជ្រើស​សន្និសីទ​ពី​បញ្ជីខាង​ក្រោម ដើម្បី​ផ្ញើ​ការ​អញ្ជើញ​ទៅអ្នកប្រើ %s ។ ជ្រើស \"បង្កើត​សន្និសីទ​ថ្មី\" "
+"ប្រសិនបើ​​អ្នក​ចង់​បង្កើត​សន្និសីទ​ថ្មី​ដើម្បីអញ្ជើញ​ង្នក​ប្រើ​នេះ ។"
+
+msgid "Invite to Conference"
+msgstr "អញ្ជើញ​ឲ្យ​ចូលរួម​ក្នុង​សន្និសីទ"
+
+msgid "Invite to Conference..."
+msgstr "អញ្ជើញ​ឲ្យ​ចូលរួម​ក្នុង​សន្និសីទ..."
+
+msgid "Send TEST Announcement"
+msgstr "ផ្ញើ​ការ​ប្រកាស​សាកល្បង"
+
+msgid "Topic:"
+msgstr "ប្រធានបទ ៖"
+
+msgid "No Sametime Community Server specified"
+msgstr "គ្មាន​ម៉ាស៊ីន​បម្រើ​សហគមន៍​បានបញ្ជាក់​ទេ"
+
+#, c-format
+msgid ""
+"No host or IP address has been configured for the Meanwhile account %s. "
+"Please enter one below to continue logging in."
+msgstr ""
+"គ្មាន​ម៉ាស៊ីន ឬ​អាសយដ្ឋាន IP ត្រូវ​បានកំណត់​រចនាសម្ព័ន្ធ​សម្រាប់​គណនី %s ។ សូម​បញ្ចូល​អាសយដ្ឋាន IP មួយ​"
+"ខាងក្រោម​ដើម្បី​បន្ត​ចូល ។"
+
+msgid "Meanwhile Connection Setup"
+msgstr "រៀបចំ​ការ​តភ្ជាប់"
+
+msgid "No Sametime Community Server Specified"
+msgstr "គ្មាន​ម៉ាស៊ីន​បម្រើ​សហគមន៍​បាន​បញ្ជាក់​ទេ"
+
+msgid "Connect"
+msgstr "ត​ភ្ជាប់"
+
+#, c-format
+msgid "Unknown (0x%04x)<br>"
+msgstr "មិនស្គាល់ (0x%04x)<br>"
+
+msgid "Last Known Client"
+msgstr "បាន​ស្គាល់​ម៉ាស៊ីន​ភ្ញៀវ​ចុងក្រោយ"
+
+msgid "User Name"
+msgstr "ឈ្មោះ​អ្នក​ប្រើ"
+
+msgid "Sametime ID"
+msgstr "លេខស្គាល់​ Sametime"
+
+msgid "An ambiguous user ID was entered"
+msgstr "លេខ​សម្គាល់​អ្នក​ប្រើ​ត្រូវ​បាន​បញ្ចូល"
+
+#, c-format
+msgid ""
+"The identifier '%s' may possibly refer to any of the following users. Please "
+"select the correct user from the list below to add them to your buddy list."
+msgstr ""
+"ឧបករណ៍​កំណត់​អត្តសញ្ញាណ '%s' អាច​សំអាង​លើ​អ្នកប្រើដូច​ខាងក្រោយ ។ សូម​ជ្រើស​អ្នកប្រើ​ដែល​ត្រឹមត្រូវ​ពី​បញ្ជីខាង​"
+"ក្រោម ដើម្បី​បន្ថែម​ពួកគេ​ទៅ​ក្នុង​​បញ្ជី​មិត្តភក្ដិ​របស់​អ្នក ។"
+
+msgid "Select User"
+msgstr "ជ្រើស​អ្នក​ប្រើ"
+
+msgid "Unable to add user: user not found"
+msgstr "មិនអាច​បន្ថែម​អ្នកប្រើបាន​ទេ ៖ រក​មិនឃើញ​អ្នក​ប្រើ"
+
+#, c-format
+msgid ""
+"The identifier '%s' did not match any users in your Sametime community. This "
+"entry has been removed from your buddy list."
+msgstr ""
+"ឧបករណ៍​កំណត់​អត្តសញ្ញាណ '%s' មិន​បានផ្គូផ្គង​អ្នក​ប្រើនៅ​ក្នុង​​សហគមន៍ Sametime របស់​អ្នក​ទេ ។ ធាតុ​នេះ​"
+"ត្រូវ​បាន​យកចេញ​ពី​បញ្ជីមិត្តភក្ដិ​របស់​អ្នក​ហើយ ។"
+
+#, c-format
+msgid ""
+"Error reading file %s: \n"
+"%s\n"
+msgstr ""
+"កំហុស​ក្នុងការ​អាន​ឯកសារ %s ៖ \n"
+"%s\n"
+
+msgid "Remotely Stored Buddy List"
+msgstr "បាន​ទុក​បញ្ជី​មិត្តភក្ដិ​ពី​ចម្ងាយ"
+
+msgid "Buddy List Storage Mode"
+msgstr "របៀប​ផ្ទុក​បញ្ជីមិត្តភក្ដិ"
+
+msgid "Local Buddy List Only"
+msgstr "តែ​បញ្ជីមិត្តភក្ដិ​មូលដ្ឋាន​ប៉ុណ្ណោះ"
+
+msgid "Merge List from Server"
+msgstr "បញ្ចូល​បញ្ជី​ពី​ម៉ាស៊ីន​បម្រើ"
+
+msgid "Merge and Save List to Server"
+msgstr "បញ្ចូល និង​រក្សាទុក​បញ្ជី​ទៅ​កាន់​ម៉ាស៊ីនបម្រើ"
+
+msgid "Synchronize List with Server"
+msgstr "ធ្វើ​សមកាលកម្ម​បញ្ជី​ជា​មួយ​ម៉ាស៊ីន​បម្រើ"
+
+#, c-format
+msgid "Import Sametime List for Account %s"
+msgstr "នាំចូលបញ្ជី Sametime សម្រាប់​គណនី %s"
+
+#, c-format
+msgid "Export Sametime List for Account %s"
+msgstr "នាំចេញ​បញ្ជី Sametime សម្រាប់​គណនី %s"
+
+msgid "Unable to add group: group exists"
+msgstr "មិនអាច​បន្ថែម​ក្រុម ​៖ មានក្រុម​រួចហើយ"
+
+#, c-format
+msgid "A group named '%s' already exists in your buddy list."
+msgstr "មាន​ក្រុម​ដែលមាន​ឈ្មោះ '%s' រួច​ហើយ​នៅ​ក្នុង​បញ្ជី​មិត្តភក្ដិ​របស់​អ្នក ។"
+
+msgid "Unable to add group"
+msgstr "មិនអាច​បន្ថែម​ក្រុម​បានទេ"
+
+msgid "Possible Matches"
+msgstr "មាន​ការ​ផ្គូផ្គង"
+
+msgid "Notes Address Book group results"
+msgstr "ចំណាំ​លទ្ធផល​ក្រុម​សៀវភៅ​អាសយដ្ឋាន"
+
+#, c-format
+msgid ""
+"The identifier '%s' may possibly refer to any of the following Notes Address "
+"Book groups. Please select the correct group from the list below to add it "
+"to your buddy list."
+msgstr ""
+"ឧបករណ៍​កំណត់​អត្តសញ្ញាណ '%s' អាច​យោង​តាម​ក្រុម​សៀវភៅ​អាសយដ្ឋាន​ចំណាំ ។ សូម​ជ្រើស​ក្រុម​ត្រឹមត្រូវ​ពី​បញ្ជី​"
+"ខាងក្រោម ដើម្បី​បន្ថែម​វា​ទៅកាន់បញ្ជីមិត្តភក្ដិ​របស់​អ្នក ។"
+
+msgid "Select Notes Address Book"
+msgstr "ជ្រើស​សៀវភៅ​អាសយដ្ឋាន​ចំណាំ"
+
+msgid "Unable to add group: group not found"
+msgstr "មិនអាច​បន្ថែម​ក្រុម​បានទេ ៖ រក​មិនឃើញ​ក្រុម"
+
+#, c-format
+msgid ""
+"The identifier '%s' did not match any Notes Address Book groups in your "
+"Sametime community."
+msgstr ""
+"ឧបករណ៍​កំណត់​អត្តសញ្ញាណ '%s' មិន​ផ្គូផ្គង​ក្រុមសៀវ​ភៅ​អាសយដ្ឋាន​​ចំណាំ​ណាមួយ​ទេ​នៅ​ក្នុងសហគមន៍ Sametimeរបស់​"
+"អ្នក ។"
+
+msgid "Notes Address Book Group"
+msgstr "ចំណាំ​ក្រុម​សៀវភៅ​អាសយដ្ឋាន"
+
+msgid ""
+"Enter the name of a Notes Address Book group in the field below to add the "
+"group and its members to your buddy list."
+msgstr ""
+"បញ្ចូល​ឈ្មោះ​ក្រុម​សៀវភៅ​ចំណាំ​នៅ​ក្នុង​វាល​ខាង​ក្រោម ដើម្បី​បន្ថែម​ក្រុម និង​សមាជិករបស់វា​ទៅកាន់​បញ្ជី​មិត្តភក្ដិ​របស់​"
+"អ្នក ។"
+
+#, c-format
+msgid "Search results for '%s'"
+msgstr "ស្វែងរក​លទ្ធផល​សម្រាប់ '%s'"
+
+#, c-format
+msgid ""
+"The identifier '%s' may possibly refer to any of the following users. You "
+"may add these users to your buddy list or send them messages with the action "
+"buttons below."
+msgstr ""
+"ឧបករណ៍​កំណត់​អត្តសញ្ញាណ '%s' អាច​យោង​តាម​អ្នកប្រើ​ដូច​ខាង​ក្រោម ។ អ្នក​​អាច​បន្ថែម​អ្នកប្រើទាំង​នេះ​ទៅ​កាន់​"
+"បញ្ជី​មិត្តភក្ដិ​របស់​អ្នក ឬ​ផ្ញើ​សារ​ឲ្យ​ពួកគេ​ដោយ​ប្រើ​ប៊ូតុង​សកម្មភាព​ខាងក្រោម ។"
+
+msgid "Search Results"
+msgstr "ស្វែងរក​លទ្ធ​ផល"
+
+msgid "No matches"
+msgstr "គ្មានការ​ផ្គូផ្គង"
+
+#, c-format
+msgid "The identifier '%s' did not match any users in your Sametime community."
+msgstr "ឧបករណ៍​កំណត់​អត្តសញ្ញាណ '%s' មិនបានផ្គូផ្គង​​អ្នកប្រើ​នៅ​ក្នុង​សហគមន៍ Sametime របស់​អ្នក ។"
+
+msgid "No Matches"
+msgstr "គ្មានការ​ផ្គូផ្គង"
+
+msgid "Search for a user"
+msgstr "ស្វែងរក​អ្នកប្រើ"
+
+msgid ""
+"Enter a name or partial ID in the field below to search for matching users "
+"in your Sametime community."
+msgstr ""
+"បញ្ចូល​ឈ្មោះ ឬ​លេខសម្គាល់​ដោយ​ផ្នែក​នៅ​ក្នុងវាល​ខាងក្រោម ដើម្បី​ស្វែងរក​អ្នកប្រើ​ដែល​ផ្គូផ្គង​នៅ​ក្នុង​សហគមន៍ "
+"Sametime របស់​អ្នក ។"
+
+msgid "User Search"
+msgstr "ស្វែងរក​អ្នកប្រើ"
+
+msgid "Import Sametime List..."
+msgstr "នាំចូល​បញ្ជី Sametime..."
+
+msgid "Export Sametime List..."
+msgstr "នាំចេញ​បញ្ជី Sametime..."
+
+msgid "Add Notes Address Book Group..."
+msgstr "បន្ថែម​ក្រុម​​សៀវភៅ​អាសយដ្ឋាន​ចំណាំ..."
+
+msgid "User Search..."
+msgstr "ស្វែងរក​អ្នកប្រើ..."
+
+msgid "Force login (ignore server redirects)"
+msgstr "បង្ខំ​ឲ្យ​ចូល (មិនអើពោះ​ការ​បញ្ជូន​ម៉ាស៊ីន​បម្រើ​ត)"
+
+#. pretend to be Sametime Connect
+msgid "Hide client identity"
+msgstr "លាក់​​អត្តសញ្ញាណ​ម៉ាស៊ីន​ភ្ញៀវ"
+
+#, c-format
+msgid "User %s is not present in the network"
+msgstr "អ្នកប្រើ %s មិនបង្ហាញ​នៅ​ក្នុង​បណ្ដាញ​ទេ"
+
+msgid "Key Agreement"
+msgstr "ការ​ព្រមព្រៀង​សំខាន់"
+
+msgid "Cannot perform the key agreement"
+msgstr "មិនអាច​អនុវត្ត​ការ​​ព្រមព្រៀង​សំខាន់​ទេ"
+
+msgid "Error occurred during key agreement"
+msgstr "កំហុស​បាន​កើតឡើង​កំឡុង​ពេល​កិច្ចព្រមព្រៀង​សំខាន់"
+
+msgid "Key Agreement failed"
+msgstr "បាន​បរាជ័យ​ក្នុងការ​ព្រមព្រៀង​សំខាន់"
+
+msgid "Timeout during key agreement"
+msgstr "អស់ពេល​កំឡុង​ពេល​ព្រមព្រៀង​សំខាន់4"
+
+msgid "Key agreement was aborted"
+msgstr "ការ​ព្រមព្រៀង​សំខាន់​ត្រូវ​បានបោះបង់"
+
+msgid "Key agreement is already started"
+msgstr "ការ​ព្រមព្រៀង​សំខាន់​បាន​ចាប់ផ្ដើម​រួចហើយ"
+
+msgid "Key agreement cannot be started with yourself"
+msgstr "ការ​ព្រមព្រៀង​សំខាន់​មិន​អាច​ត្រូវ​ចាប់ផ្ដើម​ជា​មួយ​ខ្លួន​អ្នក​ផ្ទាល់"
+
+msgid "The remote user is not present in the network any more"
+msgstr "អ្នកប្រើ​ពីចម្ងាយ​មិនបង្ហាញ​នៅ​ក្នុង​បណ្ដាញ​ទៀត​ទេ"
+
+#, c-format
+msgid ""
+"Key agreement request received from %s. Would you like to perform the key "
+"agreement?"
+msgstr "បាន​​ទទួល​សំណួរ​ការ​ព្រមព្រៀង​ពី %s ។ តើ​អ្នក​ចង់​អនុវត្ត​ការ​ព្រមព្រៀង​សំខាន់ដែរឬទេ ?"
+
+#, c-format
+msgid ""
+"The remote user is waiting key agreement on:\n"
+"Remote host: %s\n"
+"Remote port: %d"
+msgstr ""
+"អ្នកប្រើពី​ចម្ងាយ​កំពុង​រង់ចាំ​ការ​ព្រមព្រៀង​សំខាន់​នៅ​លើ ៖\n"
+"ម៉ាស៊ីន​ពី​ចម្ងាយ ៖ %s\n"
+"ច្រក​ពី​ចម្ងាយ ៖ %d"
+
+msgid "Key Agreement Request"
+msgstr "សំណើ​ការ​ព្រមព្រៀង​សំខាន់"
+
+msgid "IM With Password"
+msgstr "IM មាន​ពាក្យ​សម្ងាត់"
+
+msgid "Cannot set IM key"
+msgstr "មិន​កំណត់​សោ IM បានទេ"
+
+msgid "Set IM Password"
+msgstr "កំណត់​ពាក្យ​សម្ងាត់ IM"
+
+msgid "Get Public Key"
+msgstr "យក​សោ​សាធារណៈ"
+
+msgid "Cannot fetch the public key"
+msgstr "មិន​អាច​ទៅ​យក​សោ​សាធារណៈ​បានទេ"
+
+msgid "Show Public Key"
+msgstr "បង្ហាញ​សោ​សាធារណៈ"
+
+msgid "Could not load public key"
+msgstr "មិនអាច​ផ្ទុក​សោសាធារណៈបានទេ"
+
+msgid "User Information"
+msgstr "ព័ត៌មាន​អ្នក​អ្នកប្រើ"
+
+msgid "Cannot get user information"
+msgstr "មិន​អាច​យក​ព័ត៌មាន​របស់​អ្នក​ប្រើ​បានទេ"
+
+#, c-format
+msgid "The %s buddy is not trusted"
+msgstr "មិត្តភក្ដិ %s មិន​ទុកចិត្ត​ទេ"
+
+msgid ""
+"You cannot receive buddy notifications until you import his/her public key. "
+"You can use the Get Public Key command to get the public key."
+msgstr ""
+"អ្នក​មិន​អាច​ទទួល​ការ​ជូនដំណឹង​មិត្តភក្ដិ​​ទេ រហូត​ដល់​អ្នក​នាំចូល​សោ​សាធារណៈ​របស់​គាត់ ។ អ្នក​អាច​ប្រើ​ពាក្យ​បញ្ជា​"
+"សាធារណៈ​ ដើម្បីទទួល​បាន​សោ​សាធារណៈ ។"
+
+#. Open file selector to select the public key.
+msgid "Open..."
+msgstr "បើក​..."
+
+#, c-format
+msgid "The %s buddy is not present in the network"
+msgstr "មិត្តភក្ដិ %s មិន​បង្ហាញ​នៅ​ក្នុង​បណ្ដាញទេ"
+
+msgid ""
+"To add the buddy you must import his/her public key. Press Import to import "
+"a public key."
+msgstr ""
+"ដើម្បី​បន្ថែម​មិត្តភក្ដិ​ អ្នក​ត្រូវ​តែ​នាំចូល​សោសាធារណៈ​របស់​គាត់ ។ ចុច​នាំចូល ដើម្បីនាំចូល​សោ​សាធារណៈ ។"
+
+msgid "_Import..."
+msgstr "នាំចូល..."
+
+msgid "Select correct user"
+msgstr "ជ្រើស​​អ្នកប្រើ​ដែល​ត្រឹមត្រូវ"
+
+msgid ""
+"More than one user was found with the same public key. Select the correct "
+"user from the list to add to the buddy list."
+msgstr ""
+"រកឃើញ​អ្នកប្រើច្រើនជាង​មួយ​ដែលមាន​សោ​សាធារណៈដូចគ្នា ​​។ ជ្រើស​អ្នកប្រើបច្ចុប្បន្ន​ពី​បញ្ជី ដើម្បី​បន្ថែម​ទៅ​"
+"កាន់បញ្ជីមិត្តភក្ដិ ។"
+
+msgid ""
+"More than one user was found with the same name. Select the correct user "
+"from the list to add to the buddy list."
+msgstr ""
+"រក​ឃើញ​​អ្នកប្រើ​ច្រើនជាង​មួយ ដែលមាន​ឈ្មោះ​ដូចគ្នា ។ ជ្រើស​អ្នក​ប្រើត្រឹមត្រូវ​ពី​បញ្ជី​ដើម្បី​បន្ថែម​"
+"ទៅកាន់បញ្ជីមិត្តភក្ដិ​របស់​អ្នក ។"
+
+msgid "Detached"
+msgstr "ផ្ដាច់"
+
+msgid "Indisposed"
+msgstr "មិន​ចោល"
+
+msgid "Wake Me Up"
+msgstr "ដាស់ខ្ញុំ"
+
+msgid "Hyper Active"
+msgstr "សកម្ម​ភាព"
+
+msgid "Robot"
+msgstr "មនុស្ស​យន្ត"
+
+msgid "Happy"
+msgstr "សប្បាយ"
+
+msgid "Sad"
+msgstr "ក្រៀមក្រំ"
+
+msgid "Angry"
+msgstr "ខឹង"
+
+msgid "Jealous"
+msgstr "ច្រណែន"
+
+msgid "Ashamed"
+msgstr "អៀនខ្មាស់"
+
+msgid "Invincible"
+msgstr "មិន​ចុះចាញ់"
+
+msgid "In Love"
+msgstr "សេចក្តី​ស្រឡាញ់"
+
+msgid "Sleepy"
+msgstr "ងងុយដេក"
+
+msgid "Bored"
+msgstr "អផ្សុក"
+
+msgid "Excited"
+msgstr "រំភើប"
+
+msgid "Anxious"
+msgstr "រសាប់រសល់"
+
+msgid "User Modes"
+msgstr "របៀប​អ្នក​ប្រើ"
+
+msgid "Preferred Contact"
+msgstr "ទំនាក់ទំនង​ដែល​ពេញចិត្ត"
+
+msgid "Preferred Language"
+msgstr "ភាសា​ដែល​ពេញចិត្ត"
+
+msgid "Device"
+msgstr "ឧបករណ៍​"
+
+msgid "Timezone"
+msgstr "តំបន់​ពេលវេលា"
+
+msgid "Geolocation"
+msgstr "ទីតាំង​ភូមិសាស្ត្រ"
+
+msgid "Reset IM Key"
+msgstr "កំណត់​សោ IM ឡើង​វិញ"
+
+msgid "IM with Key Exchange"
+msgstr "IM មាន​ការ​ផ្លាស់ប្ដូរ​សោ"
+
+msgid "IM with Password"
+msgstr "IM មាន​ពាក្យ​សម្ងាត់"
+
+msgid "Get Public Key..."
+msgstr "យក​សោ​សាធារណៈ..."
+
+msgid "Kill User"
+msgstr "សម្លាប់​អ្នក​ប្រើ"
+
+msgid "Draw On Whiteboard"
+msgstr "គូរ​លើ​ក្ដារខៀន"
+
+msgid "_Passphrase:"
+msgstr "ឃ្លា​សម្ងាត់ ៖"
+
+#, c-format
+msgid "Channel %s does not exist in the network"
+msgstr "មិន​ទាន់មាន​ឆានែល %s នៅ​ក្នុង​បណ្ដាញ​ទេ"
+
+msgid "Channel Information"
+msgstr "ព័ត៌មាន​ឆានែល"
+
+msgid "Cannot get channel information"
+msgstr "មិនអាចយក​ព័ត៌មាន​ឆានែល​បានទេ"
+
+#, c-format
+msgid "<b>Channel Name:</b> %s"
+msgstr "<b>ឈ្មោះ​ឆានែល ៖</b> %s"
+
+#, c-format
+msgid "<br><b>User Count:</b> %d"
+msgstr "<br><b>ចំនួន​អ្នកប្រើ ៖</b> %d"
+
+#, c-format
+msgid "<br><b>Channel Founder:</b> %s"
+msgstr "<br><b>ស្ថាបនិក​ឆានែល ៖</b> %s"
+
+#, c-format
+msgid "<br><b>Channel Cipher:</b> %s"
+msgstr "<br><b>សរសេរ​ឆានែល​ជា​​សម្ងាត់ ៖</b> %s"
+
+#. Definition of HMAC: http://en.wikipedia.org/wiki/HMAC
+#, c-format
+msgid "<br><b>Channel HMAC:</b> %s"
+msgstr "<br><b>ឆានែល HMAC ៖</b> %s"
+
+#, c-format
+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> "
+
+#, c-format
+msgid "<br><b>Founder Key Fingerprint:</b><br>%s"
+msgstr "<br><b>ស្ថាបនិកសោ​ស្នាម​ម្រាមដៃ ៖</b><br>%s"
+
+#, c-format
+msgid "<br><b>Founder Key Babbleprint:</b><br>%s"
+msgstr "<br><b>ស្ថាបនិក​សោ Babbleprint ៖</b><br>%s"
+
+msgid "Add Channel Public Key"
+msgstr "បន្ថែម​សោ​សាធារណៈ​របស់​ឆានែល"
+
+#. Add new public key
+msgid "Open Public Key..."
+msgstr "បើកសោ​សាធារណៈ..."
+
+msgid "Channel Passphrase"
+msgstr "ឃ្លាសម្ងាត់​ឆានែល"
+
+msgid "Channel Public Keys List"
+msgstr "បញ្ជី​សោ​សាធារណៈ​របស់​ឆានែល"
+
+#, c-format
+msgid ""
+"Channel authentication is used to secure the channel from unauthorized "
+"access. The authentication may be based on passphrase and digital "
+"signatures. If passphrase is set, it is required to be able to join. If "
+"channel public keys are set then only users whose public keys are listed are "
+"able to join."
+msgstr ""
+"ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​របស់​ឆានែល​ត្រូវ​បានប្រើ​ដើម្បី​ធ្វើ​ឲ្យ​ឆានែល​មានសុវត្ថិភាព ពីការ​ចូលដំណើរការ​"
+"ដែល​មិនបានផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ ។ ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​អាច​មាន​មូលដ្ឋាន​លើ​ឃ្លា​សម្ងាត់ និង​"
+"ហត្ថលេខា​ឌីជីថល ។ ប្រសិន​បើ​បានកំណត់​ឃ្លា​សម្ងាត់ វា​តម្រូវ​ឲ្យ​ចូល​រួម ។ ប្រសិន​បើ​សោ​សាធារណៈ​របស់​ឆានែល​ "
+"បន្ទាប់មកមានតែ​អ្នកប្រើ​ដែលសោសាធារណៈ​របស់​វា​ត្រូវ​បានរាយ​ដើម្បីអាច​ចូលរួម​បាន ។"
+
+msgid "Channel Authentication"
+msgstr "ផ្ទៀងផ្ទាត់​ភាព​​ត្រឹមត្រូវ​របស់ឆានែល"
+
+msgid "Add / Remove"
+msgstr "បន្ថែម/យក​ចេញ"
+
+msgid "Group Name"
+msgstr "ឈ្មោះ​ក្រុម"
+
+msgid "Passphrase"
+msgstr "ឃ្លាសម្ងាត់"
+
+#, c-format
+msgid "Please enter the %s channel private group name and passphrase."
+msgstr "សូម​បញ្ចូល​ឈ្មោះក្រុម​ឯកជន​ឆានែល %s និង​ឃ្លា​សម្ងាត់ ។"
+
+msgid "Add Channel Private Group"
+msgstr "បន្ថែម​ក្រុម​ឯកជន​របស់​ឆានែល"
+
+msgid "User Limit"
+msgstr "ដែន​កំណត់​អ្នកប្រើ"
+
+msgid "Set user limit on channel. Set to zero to reset user limit."
+msgstr "កំណត់​ដែនកំណត់​របស់​អ្នកប្រើ​នៅ​លើ​ឆានែល ។ កំណត់​សូន្យ​ដើម្បី​កំណត់​ដែនកំណត់​អ្នកប្រើឡើង​វិញ ។"
+
+msgid "Invite List"
+msgstr "អញ្ជើញ​បញ្ជី"
+
+msgid "Ban List"
+msgstr "បញ្ជី​ហាមឃាត់"
+
+msgid "Add Private Group"
+msgstr "បន្ថែម​ក្រុម​ឯកជន"
+
+msgid "Reset Permanent"
+msgstr "កំណត់​អចិន្ត្រៃយ៍​ឡើង​វិញ"
+
+msgid "Set Permanent"
+msgstr "កំណត់​អចិន្ត្រៃយ៍"
+
+msgid "Set User Limit"
+msgstr "កំណត់​ដែន​កំណត់​របស់​អ្នក"
+
+msgid "Reset Topic Restriction"
+msgstr "កំណត់​ការ​ដាក់កម្រិត​ប្រធានបទ​ឡើងវិញ"
+
+msgid "Set Topic Restriction"
+msgstr "កំណត់​ការ​កម្រិត​ប្រធានបទ"
+
+msgid "Reset Private Channel"
+msgstr "កំណត់​ឆានែល​ឯកជន​ឡើងវិញ"
+
+msgid "Set Private Channel"
+msgstr "កំណត់​ឆានែល​ឯកជន"
+
+msgid "Reset Secret Channel"
+msgstr "កំណត់​ឆានែល​សម្ងាត់"
+
+msgid "Set Secret Channel"
+msgstr "កំណត់​ឆានែល​សម្ងាត់​"
+
+#, c-format
+msgid ""
+"You have to join the %s channel before you are able to join the private group"
+msgstr "អ្នកបាន​ចូលរួម​​​ក្នុង​ឆានែល %s មុននឹង​អ្នក​អាច​ចូលរួម​ក្នុង​ក្រុមឯកជន"
+
+msgid "Join Private Group"
+msgstr "ចូលរួម​ក្នុង​ក្រុម​ឯកជន"
+
+msgid "Cannot join private group"
+msgstr "មិនអាច​ចូលរួម​ក្នុងក្រុម​ឯកជន​បានទេ"
+
+msgid "Call Command"
+msgstr "ហៅ​ពាក្យ​បញ្ជា"
+
+msgid "Cannot call command"
+msgstr "មិនអាច​ហៅ​ពាក្យ​បញ្ជា​បានទេ"
+
+msgid "Unknown command"
+msgstr "មិន​ស្គាល់​ពាក្យ​បញ្ជា"
+
+msgid "Secure File Transfer"
+msgstr "ការ​ផ្ទេរ​ឯកសារ​មាន​សុវត្ថិភាព"
+
+msgid "Error during file transfer"
+msgstr "កំហុសកំឡុង​ពេល​ផ្ទេរ​ឯកសារ"
+
+msgid "Remote disconnected"
+msgstr "បានផ្ដាច់​ពីចម្ងាយ"
+
+msgid "Permission denied"
+msgstr "បានបដិសេធ​សិទ្ធិ"
+
+msgid "Key agreement failed"
+msgstr "បាន​បរាជ័យ​លើ​កិច្ចព្រមព្រៀង​សំខាន់"
+
+msgid "Connection timed out"
+msgstr "អស់ពេល​តភ្ជាប់"
+
+msgid "Creating connection failed"
+msgstr "បានបរាជ័យ​ក្នុងការ​បង្កើត​ការ​តភ្ជាប់"
+
+msgid "File transfer session does not exist"
+msgstr "មិនទាន់មាន​សម័យ​ផ្ទេរ​ឯកសារ​ទេ"
+
+msgid "No file transfer session active"
+msgstr "គ្មាន​សម័យ​ផ្ទេរ​ឯកសារ​សកម្ម​ទេ"
+
+msgid "File transfer already started"
+msgstr "បានចាប់ផ្ដើមការ​ផ្ទេរ​ឯកសារ​រួច​​ហើយ"
+
+msgid "Could not perform key agreement for file transfer"
+msgstr "មិន​អាច​អនុវត្ត​កិច្ចព្រមព្រៀង​សំខាន់​សម្រាប់​ការ​ផ្ទេរ​ឯកសារ​បានទេ"
+
+msgid "Could not start the file transfer"
+msgstr "មិនអាច​ចាប់ផ្ដើម​ការ​ផ្ទេរ​ឯកសារ​បានទេ"
+
+msgid "Cannot send file"
+msgstr "មិនអាច​ផ្ញើ​ឯកសារ​បាន​ទេ"
+
+msgid "Error occurred"
+msgstr "កំហុស​បានកើត​ឡើង"
+
+#, c-format
+msgid "%s has changed the topic of <I>%s</I> to: %s"
+msgstr "%s បានផ្លាស់ប្ដូរ​ប្រធានបទ​របស់ <I>%s</I> ទៅ​ជា ៖ %s"
+
+#, c-format
+msgid "<I>%s</I> set channel <I>%s</I> modes to: %s"
+msgstr "<I>%s</I> កំណត់​របៀប​​ឆានែល <I>%s</I> ទៅ​ជា ៖ %s"
+
+#, c-format
+msgid "<I>%s</I> removed all channel <I>%s</I> modes"
+msgstr "<I>%s</I> បាន​យក​របៀប​ឆានែល <I>%s</I> ចេញ"
+
+#, c-format
+msgid "<I>%s</I> set <I>%s's</I> modes to: %s"
+msgstr "<I>%s</I> កំណត់​របៀប <I>%s</I> ទៅ​ជា ៖ %s"
+
+#, c-format
+msgid "<I>%s</I> removed all <I>%s's</I> modes"
+msgstr "<I>%s</I> បាន​យក​របៀបរបស់ <I>%s</I> ទាំង​អស់​ចេញ"
+
+#, c-format
+msgid "You have been kicked off <I>%s</I> by <I>%s</I> (%s)"
+msgstr "អ្នកត្រូវ​បានធាក់ចេញ​ពី <I>%s</I> ដោយ <I>%s</I> (%s)"
+
+#, c-format
+msgid "You have been killed by %s (%s)"
+msgstr "អ្នក​ត្រូវ​បាន​សម្លាប់​ដោយ %s (%s)"
+
+#, c-format
+msgid "Killed by %s (%s)"
+msgstr "បាន​សម្លាប់​ដោយ %s (%s)"
+
+msgid "Server signoff"
+msgstr "ចេញ​ពី​ម៉ាស៊ីនបម្រើ"
+
+msgid "Personal Information"
+msgstr "ព័ត៌មាន​ផ្ទាល់ខ្លួន"
+
+msgid "Birth Day"
+msgstr "ថ្ងៃ​​កំណើត"
+
+msgid "Job Role"
+msgstr "តួនាទី​ការងារ"
+
+msgid "Organization"
+msgstr "អង្គការ"
+
+msgid "Unit"
+msgstr "ផ្នែក"
+
+msgid "Note"
+msgstr "ចំណាំ"
+
+msgid "Join Chat"
+msgstr "ចូលរួម​ជជែក"
+
+#, c-format
+msgid "You are channel founder on <I>%s</I>"
+msgstr "អ្នកជា​អ្នកស្ថាបនិក​ឆានែលនៅ​លើ <I>%s</I>"
+
+#, c-format
+msgid "Channel founder on <I>%s</I> is <I>%s</I>"
+msgstr "ស្ថាបនិក​ឆានែល​នៅ​លើ <I>%s</I> គឺ <I>%s</I>"
+
+msgid "Real Name"
+msgstr "ឈ្មោះ​ពិត"
+
+msgid "Status Text"
+msgstr "អត្ថបទ​ស្ថានភាព"
+
+msgid "Public Key Fingerprint"
+msgstr "ស្នាមម្រាមដៃ​សោ​សាធារណៈ"
+
+msgid "Public Key Babbleprint"
+msgstr "Babbleprint សោ​សាធារណៈ"
+
+msgid "_More..."
+msgstr "ផ្សេងៗ​ទៀត..."
+
+msgid "Detach From Server"
+msgstr "ផ្ដាច់​ពី​ម៉ាស៊ីនបម្រើ"
+
+msgid "Cannot detach"
+msgstr "មិនអាច​ផ្ដាច់​បានទេ"
+
+msgid "Cannot set topic"
+msgstr "មិនអាច​កំណត់​ប្រធាន​បទ​បានទេ"
+
+msgid "Failed to change nickname"
+msgstr "បានបរាជ័យ​ក្នុងការ​ផ្លាស់ប្ដូរ​សម្មតិនាម"
+
+msgid "Roomlist"
+msgstr "បញ្ជី​បន្ទប់"
+
+msgid "Cannot get room list"
+msgstr "មិនអាច​យក​បញ្ជី​បន្ទប់បានទេ"
+
+msgid "Network is empty"
+msgstr "បណ្ដាញ​ទទេ"
+
+msgid "No public key was received"
+msgstr "មិនបានទទួល​សោ​សាធារណៈ​ទេ"
+
+msgid "Server Information"
+msgstr "ព័ត៌មាន​ម៉ាស៊ីនបម្រើ"
+
+msgid "Cannot get server information"
+msgstr "មិនអាច​យក​ព័ត៌មាន​ម៉ាស៊ីនបម្រើបានទេ"
+
+msgid "Server Statistics"
+msgstr "ស្ថិតិ​ម៉ាស៊ីនបម្រើ"
+
+msgid "Cannot get server statistics"
+msgstr "មិនអាច​យក​ស្ថិតិ​ម៉ាស៊ីនបម្រើបានទេ"
+
+#, c-format
+msgid ""
+"Local server start time: %s\n"
+"Local server uptime: %s\n"
+"Local server clients: %d\n"
+"Local server channels: %d\n"
+"Local server operators: %d\n"
+"Local router operators: %d\n"
+"Local cell clients: %d\n"
+"Local cell channels: %d\n"
+"Local cell servers: %d\n"
+"Total clients: %d\n"
+"Total channels: %d\n"
+"Total servers: %d\n"
+"Total routers: %d\n"
+"Total server operators: %d\n"
+"Total router operators: %d\n"
+msgstr ""
+"ម៉ាស៊ីនបម្រើ​មូលដ្ឋាន​ចាប់ផ្ដើម​ម៉ោង ៖ %s\n"
+"ម៉ាស៊ីន​បម្រើ​មូលដ្ឋាន​ដល់​ម៉ោង ៖ %s\n"
+"ម៉ាស៊ីន​ភ្ញៀវ​របស់​ម៉ាស៊ីនបម្រើ​មូលដ្ឋាន ៖ %d\n"
+"ឆានែល​ម៉ាស៊ីន​បម្រើ​មូលដ្ឋាន ៖ %d\n"
+"ការី​ម៉ាស៊ីនបម្រើ​មូលដ្ឋាន ៖ %d\n"
+"ការី​រ៉ោតទ័រ​មូលដ្ឋាន ៖ %d\n"
+"ម៉ាស៊ីន​ភ្ញើ​ចល័ត​មូលដ្ឋាន ៖ %d\n"
+"ឆានែល​ចល័ត​មូលដ្ឋាន ៖ %d\n"
+"ម៉ាស៊ីនបម្រើចល័ត​មូលដ្ឋាន ៖ %d\n"
+"ម៉ាស៊ីន​ភ្ញៀវ​សរុប ៖ %d\n"
+"ឆានែល​សរុប ៖ %d\n"
+"ម៉ាស៊ីនបម្រើសរុប ៖ %d\n"
+"Total routers: %d\n"
+"Total server operators: %d\n"
+"Total router operators: %d\n"
+
+msgid "Network Statistics"
+msgstr "ស្ថិតិ​បណ្ដាញ"
+
+msgid "Ping failed"
+msgstr "បានបរាជ័យក្នុងការ Ping"
+
+msgid "Ping reply received from server"
+msgstr "បាន​ទទួល​ការ​ឆ្លើយតប Ping ពី​ម៉ាស៊ីនបម្រើ"
+
+msgid "Could not kill user"
+msgstr "មិនអាច​សម្លាប់​អ្នកប្រើបានទេ"
+
+msgid "WATCH"
+msgstr "ឃ្លាំង​មើល"
+
+msgid "Cannot watch user"
+msgstr "មិនអាច​ឃ្លាំង​មើល​អ្នកប្រើបានទេ"
+
+msgid "Resuming session"
+msgstr "បន្ត​សម័យ"
+
+msgid "Authenticating connection"
+msgstr "ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ការ​តភ្ជាប់"
+
+msgid "Verifying server public key"
+msgstr "ផ្ទៀងផ្ទាត់​សោ​សាធារណៈ​របស់​ម៉ាស៊ីនបម្រើ"
+
+msgid "Passphrase required"
+msgstr "ត្រូវការ​ឃ្លា​សម្ងាត់"
+
+#, c-format
+msgid ""
+"Received %s's public key. Your local copy does not match this key. Would you "
+"still like to accept this public key?"
+msgstr ""
+"បានទទួល​សោ​សាធារណៈ​របស់ %s ។ ច្បាបចម្លង​មូលដ្ឋាន​របស់​​អ្នក​មិនផ្គូផ្គង​សោ​នេះ​ទេ ។ តើ​អ្នកនៅតែ​ទទួល​យក​សោ​"
+"សាធារណៈ​នេះ​ឬ ?"
+
+#, c-format
+msgid "Received %s's public key. Would you like to accept this public key?"
+msgstr "បានទទួល​សោ​សាធារណៈ​របស់ %s ។ តើអ្នក​ចង់​ទទួល​យក​សោ​សាធារណៈ​នេះ​ដែរឬទេ ?"
+
+#, c-format
+msgid ""
+"Fingerprint and babbleprint for the %s key are:\n"
+"\n"
+"%s\n"
+"%s\n"
+msgstr ""
+"ស្នាមម្រាមដៃ និង babbleprint សម្រាប់សោ %s គឺ ៖\n"
+"\n"
+"%s\n"
+"%s\n"
+
+msgid "Verify Public Key"
+msgstr "ផ្ទៀងផ្ទាត��​សោ​សាធារណៈ"
+
+msgid "_View..."
+msgstr "មើល..."
+
+msgid "Unsupported public key type"
+msgstr "ប្រភេទ​សោ​សាធារណៈ​មិន​បានគាំទ្រ"
+
+msgid "Disconnected by server"
+msgstr "បានផ្ដាច់​ដោយ​ម៉ាស៊ីនបម្រើ"
+
+msgid "Error during connecting to SILC Server"
+msgstr "កំហុស​កំឡុងពេល​តភ្ជាប់​ទៅកាន់​ម៉ាស៊ីន​បម្រើ SILC"
+
+msgid "Key Exchange failed"
+msgstr "បានបរាជ័យ​ក្នុងកា​រផ្លាស់ប្ដូរ​សោ"
+
+msgid ""
+"Resuming detached session failed. Press Reconnect to create new connection."
+msgstr "បានបរាជ័យ​ក្នុងការ​បន្ត​សម័យ​ដែលបានផ្ដាច់ ។ ចុច​តភ្ជាប់ឡើង​វិញ​ដើម្បី​បង្កើត​ការ​តភ្ជាប់ថ្មី ។"
+
+msgid "Connection failed"
+msgstr "បានបរាជ័យ​ក្នុងការ​តភ្ជាប់"
+
+msgid "Performing key exchange"
+msgstr "អនុវត្ត​ការ​ផ្លាស់ប្ដូរ​សោ"
+
+msgid "Unable to create connection"
+msgstr "មិនអាច​បង្កើត​ការតភ្ជាប់​បានទេ"
+
+msgid "Could not load SILC key pair"
+msgstr "មិនអាច​ផ្ទុក​ការ​​ផ្គូផ្គង​សោ SILC បានទេ"
+
+#. Progress
+msgid "Connecting to SILC Server"
+msgstr "តភ្ជាប់​ទៅ​កាន់​ម៉ាស៊ីន​បម្រើ SILC"
+
+msgid "Out of memory"
+msgstr "អស់​សតិOut of memory"
+
+msgid "Cannot initialize SILC protocol"
+msgstr "មិនអាច​ចាប់ផ្ដើម​ពិធីការ SILC បានទេ"
+
+msgid "Error loading SILC key pair"
+msgstr "កំហុស​ក្នុងការ​ផ្ទុក​ការ​ផ្គូផ្គង​សោ SILC"
+
+#, c-format
+msgid "Download %s: %s"
+msgstr "ទាញ %s ៖ %s"
+
+msgid "Your Current Mood"
+msgstr "អារម្មណ៍​បច្ចុប្បន្ន​របស់​អ្នក"
+
+#, c-format
+msgid "Normal"
+msgstr "ធម្មតា"
+
+msgid "In love"
+msgstr "ស្រឡាញ់"
+
+msgid ""
+"\n"
+"Your Preferred Contact Methods"
+msgstr ""
+"\n"
+"វិធីសាស្ត្រ​ទំនាក់ទំនង​ដែលពេញចិត្ត​របស់​អ្នក"
+
+msgid "SMS"
+msgstr "SMS"
+
+msgid "MMS"
+msgstr "MMS"
+
+msgid "Video conferencing"
+msgstr "សន្និសីទ​វីដេអូ"
+
+msgid "Your Current Status"
+msgstr "ស្ថានភាព​បច្ចុប្បន្ន​របស់​អ្នក"
+
+msgid "Online Services"
+msgstr "សេវា​លើ​បណ្ដាញ"
+
+msgid "Let others see what services you are using"
+msgstr "អនុញ្ញាត​ឲ្យ​អ្នកផ្សេង​មើល​សេវា​អ្វីដែល​អ្នកកំពុង​ប្រើ"
+
+msgid "Let others see what computer you are using"
+msgstr "អនុញ្ញាត​ឲ្យ​អ្នកផ្សេង​មើលកុំព្យូទ័រ​ដែល​អ្នក​កំពុង​ប្រើ"
+
+msgid "Your VCard File"
+msgstr "ឯកសារ VCard"
+
+msgid "Timezone (UTC)"
+msgstr "តំបន់​ពេលវេលា (UTC)"
+
+msgid "User Online Status Attributes"
+msgstr "គុណលក្ខណៈ​ស្ថានភាព​លើ​បណ្ដាញ​របស់​អ្នកប្រើ"
+
+msgid ""
+"You can let other users see your online status information and your personal "
+"information. Please fill the information you would like other users to see "
+"about yourself."
+msgstr ""
+"អ្នកអាច​អនុញ្ញាត​ឲ្យ​អ្នកផ្សេង​មើល​ព័ត៌មាន​ស្ថានភាព​លើបណ្ដាញ​ និង​ព័ត៌មានផ្ទាល់ខ្លួន​របស់​អ្នក ។ សូម​បំពេញ​"
+"ព័ត៌មាន​ដែល​អ្នក​ចង់​ឲ្យ​អ្នក​ផ្សេង​មើល​ព័ត៌មានអំពី​ខ្លួន​អ្នក​ផ្ទាល់ ។"
+
+msgid "Message of the Day"
+msgstr "សារ​ថ្ងៃ"
+
+msgid "No Message of the Day available"
+msgstr "គ្មាន​សារ​ថ្ងៃ​នោះ​ទេ"
+
+msgid "There is no Message of the Day associated with this connection"
+msgstr "មិនមានសារ​ថ្ងៃ​ដែលបានភ្ជាប់​ជា​មួយ​ការ​តភ្ជាប់នេះ​ទៀត​ទេ"
+
+msgid "Create New SILC Key Pair"
+msgstr "បង្កើត​ការ​ផ្គូផ្គង​សោ SILC ថ្មី"
+
+msgid "Passphrases do not match"
+msgstr "ឃ្លា​សម្ងាត់​មិនផ្គូផ្គង"
+
+msgid "Key Pair Generation failed"
+msgstr "បានបរាជ័យ​ក្នុងកា​របង្កើត​គូរ​សោ"
+
+msgid "Key length"
+msgstr "ប្រវែង​សោ"
+
+msgid "Public key file"
+msgstr "ឯកសារ​សោ​សាធារណៈ"
+
+msgid "Private key file"
+msgstr "ឯកសារ​សោ​ឯកជន"
+
+msgid "Passphrase (retype)"
+msgstr "ឃ្លាសម្ងាត់ (វាយ​ម្ដង​ទៀត)"
+
+msgid "Generate Key Pair"
+msgstr "បង្កើត​គូសោ"
+
+msgid "Online Status"
+msgstr "ស្ថានភាព​លើ​បណ្ដាញ"
+
+msgid "View Message of the Day"
+msgstr "មើល​សារ​ថ្ងៃ"
+
+msgid "Create SILC Key Pair..."
+msgstr "បង្កើត​គូ​សោ SILC..."
+
+#, c-format
+msgid "User <I>%s</I> is not present in the network"
+msgstr "អ្នកប្រើ <I>%s</I> មិនបង្ហាញ​នៅ​ក្នុង​បណ្ដាញ​ទេ"
+
+msgid "Topic too long"
+msgstr "ប្រធាន​បទ​វែងពេក"
+
+msgid "You must specify a nick"
+msgstr "អ្នក​ត្រូវតែ​បញ្ជាក់​សម្មតិនាម"
+
+#, c-format
+msgid "channel %s not found"
+msgstr "រក​មិនឃើញ​ឆានែល %s"
+
+#, c-format
+msgid "channel modes for %s: %s"
+msgstr "របៀប​ឆានែល​ពី %s ៖ %s"
+
+#, c-format
+msgid "no channel modes are set on %s"
+msgstr "គ្មាន​របៀប​ឆានែល​ត្រូវ​បានកំណត់​នៅ​លើ %s"
+
+#, c-format
+msgid "Failed to set cmodes for %s"
+msgstr "បានបរាជ័យ​ក្នុងការ​កំណត់​ cmodes សម្រាប់ %s"
+
+#, c-format
+msgid "Unknown command: %s, (may be a client bug)"
+msgstr "មិនស្គាល់ពាក្យ​បញ្ជា ៖ %s (អាច​ជា​កំហុស​របស់​ម៉ាស៊ីន​ភ្ញៀវ)"
+
+msgid "part [channel]: Leave the chat"
+msgstr "ផ្នែក [ឆានែល] ៖ ចេញ​ពី​កា​រជជែក"
+
+msgid "leave [channel]: Leave the chat"
+msgstr "ចេញ [ឆានែល] ៖ ចេញ​ពីការ​ជជែក"
+
+msgid "topic [&lt;new topic&gt;]: View or change the topic"
+msgstr "ប្រធានបទ [&lt;ប្រធាន​បទ​ថ្មី&gt;] ៖ មើល ឬ​ផ្លាស់ប្ដូរ​ប្រធានបទ"
+
+msgid "join &lt;channel&gt; [&lt;password&gt;]: Join a chat on this network"
+msgstr "ចូលរួម &lt;ឆានែល&gt; [&lt;ពាក្យ​សម្ងាត់&gt;] ៖ ចូលរួម​ក្នុងការ​ជជែក​នៅ​លើ​បណ្ដាញ​នេះ"
+
+msgid "list: List channels on this network"
+msgstr "បញ្ជី ៖ រាយឆានែល​នៅ​លើ​បណ្ដាញ​នេះ"
+
+msgid "whois &lt;nick&gt;: View nick's information"
+msgstr "whois &lt;nick&gt; ៖ មើល​ព័ត៌មាន​សម្មតិនាម"
+
+msgid "msg &lt;nick&gt; &lt;message&gt;: Send a private message to a user"
+msgstr "msg &lt;nick&gt; &lt;message&gt; ៖ ផ្ញើ​សារ​ឯកជន​​ឲ្យ​អ្នកប្រើ"
+
+msgid "query &lt;nick&gt; [&lt;message&gt;]: Send a private message to a user"
+msgstr "សួរ &lt;nick&gt; [&lt;message&gt;] ៖ ផ្ញើ​សារ​ឯកជន​ឲ្យ​អ្នកប្រើ"
+
+msgid "motd: View the server's Message Of The Day"
+msgstr "motd ៖ មើល​សារ​របស់ម៉ាស៊ីនបម្រើ​នៃ​ថ្ងៃ"
+
+msgid "detach: Detach this session"
+msgstr "ផ្ដាច់ ៖ ផ្ដាច់​សម័យ​នេះ"
+
+msgid "quit [message]: Disconnect from the server, with an optional message"
+msgstr "ចេញ [សារ] ៖ ផ្ដាច់​ពី​ម៉ាស៊ីនបម្រើ ដោយ​មាន​សារ​ជា​ជម្រើស"
+
+msgid "call &lt;command&gt;: Call any silc client command"
+msgstr "call &lt;command&gt; ៖ ហៅ​ពាក្យ​បញ្ជា​ម៉ាស៊ីនភ្ញៀវ silc ណា​មួយ"
+
+msgid "kill &lt;nick&gt; [-pubkey|&lt;reason&gt;]: Kill nick"
+msgstr "សម្លាប់ &lt;nick&gt; [-pubkey|&lt;reason&gt;] ៖ សម្លាប់​សម្មតិនាម"
+
+msgid "nick &lt;newnick&gt;: Change your nickname"
+msgstr "nick &lt;newnick&gt; ៖ ផ្លាស់ប្ដូរ​សម្មតិនាម​របស់​អ្នក"
+
+msgid "whowas &lt;nick&gt;: View nick's information"
+msgstr "whowas &lt;nick&gt; ៖ មើល​ព័ត៌មាន​សម្មតិនាម"
+
+msgid ""
+"cmode &lt;channel&gt; [+|-&lt;modes&gt;] [arguments]: Change or display "
+"channel modes"
+msgstr ""
+"cmode &lt;channel&gt; [+|-&lt;modes&gt;] [arguments] ៖ ផ្លាស់ប្ដូរ ឬ​បង្ហាញ​របៀប​"
+"ឆានែល"
+
+msgid ""
+"cumode &lt;channel&gt; +|-&lt;modes&gt; &lt;nick&gt;: Change nick's modes "
+"on channel"
+msgstr ""
+"cumode &lt;channel&gt; +|-&lt;modes&gt; &lt;nick&gt; ៖ ផ្លាស់ប្ដូរ​របៀប​សម្មតិនាម​នៅ​"
+"លើ​ឆានែល"
+
+msgid "umode &lt;usermodes&gt;: Set your modes in the network"
+msgstr "umode &lt;usermodes&gt; ៖ កំណត់​របៀប​របស់​អ្នក​នៅ​ក្នុង​បណ្ដាញ"
+
+msgid "oper &lt;nick&gt; [-pubkey]: Get server operator privileges"
+msgstr "oper &lt;nick&gt; [-pubkey] ៖ យក​សិទ្ធិ​ការី​របស់​ម៉ាស៊ីនបម្រើ"
+
+msgid ""
+"invite &lt;channel&gt; [-|+]&lt;nick&gt;: invite nick or add/remove from "
+"channel invite list"
+msgstr ""
+"អញ្ជើញ &lt;channel&gt; [-|+]&lt;nick&gt; ៖ អញ្ជើញ​សម្មតិនាម ឬ​បន្ថែម/យក​ចេញ​ពី​បញ្ជីអញ្ជើញ​"
+"ឆានែល"
+
+msgid "kick &lt;channel&gt; &lt;nick&gt; [comment]: Kick client from channel"
+msgstr "ទាត់ &lt;channel&gt; &lt;nick&gt; [comment] ៖ ចុ​ច​ម៉ាស៊ីន​ភ្ញៀវ​ពី​ឆានែល"
+
+msgid "info [server]: View server administrative details"
+msgstr "ព័ត៌មាន [ម៉ាស៊ីនបម្រើ] ៖ មើល​សេចក្ដី​លម្អិត​គ្រប់គ្រង​របស់​ម៉ាស៊ីនបម្រើ"
+
+msgid "ban [&lt;channel&gt; +|-&lt;nick&gt;]: Ban client from channel"
+msgstr "ហាមឃាត់ [&lt;channel&gt; +|-&lt;nick&gt;] ៖ ហាមឃាត់​ម៉ាស៊ីន​ភ្ញៀវ​ពី​ឆានែល"
+
+msgid "getkey &lt;nick|server&gt;: Retrieve client's or server's public key"
+msgstr "getkey &lt;nick|server&gt; ៖ ទៅ​យក​សោសាធារណៈ​របស់​ម៉ាស៊ីនបម្រើ ឬ​ម៉ាស៊ីន​ភ្ញៀវ"
+
+msgid "stats: View server and network statistics"
+msgstr "ស្ថានភាព ៖ មើល​ស្ថិតិ​ម៉ាស៊ីនបម្រើ និង​បណ្ដាញ"
+
+msgid "ping: Send PING to the connected server"
+msgstr "ping ៖ ផ្ញើ​ PING ទៅកាន់​ម៉ាស៊ីនបម្រើ​ដែលបានតភ្ជាប់"
+
+msgid "users &lt;channel&gt;: List users in channel"
+msgstr "អ្នកប្រើ &lt;ឆានែល&gt; ៖ រាយ​អ្នកប្រើ​នៅ​ក្នុង​ឆានែល"
+
+msgid ""
+"names [-count|-ops|-halfops|-voices|-normal] &lt;channel(s)&gt;: List "
+"specific users in channel(s)"
+msgstr ""
+"ឈ្មោះ [-count|-ops|-halfops|-voices|-normal] &lt;channel(s)&gt; ៖ រាយ​អ្នកប្រើ​"
+"ជាក់លាក់​នៅ​ក្នុង​ឆានែល"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. * summary
+msgid "SILC Protocol Plugin"
+msgstr "កម្មវិធី​ជំនួយ​ពិធីការ SILC"
+
+#. * description
+msgid "Secure Internet Live Conferencing (SILC) Protocol"
+msgstr "ពិធីការ Secure Internet Live Conferencing (SILC)"
+
+msgid "Network"
+msgstr "បណ្ដាញ"
+
+msgid "Public Key file"
+msgstr "ឯកសារ​សោ​សាធារណៈ"
+
+msgid "Private Key file"
+msgstr "ឯកសារ​សោ​ឯកជន"
+
+msgid "Cipher"
+msgstr "សរសេរ​សម្ងាត់"
+
+msgid "HMAC"
+msgstr "HMAC"
+
+msgid "Use Perfect Forward Secrecy"
+msgstr "ប្រើ​ភាព​សុវត្ថិភាព​បញ្ជូនបន្ត​ល្អ​ឥតខ្ចោះ"
+
+msgid "Public key authentication"
+msgstr "ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​សោ​សាធារណៈ"
+
+msgid "Block IMs without Key Exchange"
+msgstr "ទប់ស្កាត់ IMs ដោយ​គ្មាន​ការ​ផ្លាស់ប្ដូរ​សោ"
+
+msgid "Block messages to whiteboard"
+msgstr "ទប់ស្កាត់សារ​ទៅក្ដារខៀន"
+
+msgid "Automatically open whiteboard"
+msgstr "បើក​ក្ដារខៀន​ដោយ​ស្វ័យ​ប្រវត្តិ"
+
+msgid "Digitally sign and verify all messages"
+msgstr "ចុះហត្ថលេខា​ឌីជីថល និង​ផ្ទៀងផ្ទាត់​សារ​ទាំងអស់"
+
+msgid "Creating SILC key pair..."
+msgstr "កំពុង​បង្កើត​គូសោ SILC​..."
+
+msgid "Cannot create SILC key pair\n"
+msgstr "មិនអាច​បង្កើត​គូ​សោ SILC\n"
+
+#. Hint for translators: Please check the tabulator width here and in
+#. the next strings (short strings: 2 tabs, longer strings 1 tab,
+#. sum: 3 tabs or 24 characters)
+#, c-format
+msgid "Real Name: \t%s\n"
+msgstr "ឈ្មោះ​ពិត ៖ \t%s\n"
+
+#, c-format
+msgid "User Name: \t%s\n"
+msgstr "ឈ្មោះអ្នកប្រើ ៖ \t%s\n"
+
+#, c-format
+msgid "Email: \t\t%s\n"
+msgstr "អ៊ីមែល ៖ \t\t%s\n"
+
+#, c-format
+msgid "Host Name: \t%s\n"
+msgstr "ឈ្មោះម៉ាស៊ីន ៖ \t%s\n"
+
+#, c-format
+msgid "Organization: \t%s\n"
+msgstr "អង្គការ ៖ \t%s\n"
+
+#, c-format
+msgid "Country: \t%s\n"
+msgstr "ប្រទេស ៖ \t%s\n"
+
+#, c-format
+msgid "Algorithm: \t%s\n"
+msgstr "ក្បួន​ដោះស្រាយ ៖ \t%s\n"
+
+#, c-format
+msgid "Key Length: \t%d bits\n"
+msgstr "ប្រវែង​សោ ៖ \t%d ប៊ីត\n"
+
+#, c-format
+msgid "Version: \t%s\n"
+msgstr "កំណែ ៖ \t%s\n"
+
+#, c-format
+msgid ""
+"Public Key Fingerprint:\n"
+"%s\n"
+"\n"
+msgstr ""
+"ស្នាមម្រាមដៃ​សោ​សាធារណៈ ៖\n"
+"%s\n"
+"\n"
+
+#, c-format
+msgid ""
+"Public Key Babbleprint:\n"
+"%s"
+msgstr ""
+"Babbleprint សោ​សាធារណៈ ៖\n"
+"%s"
+
+msgid "Public Key Information"
+msgstr "ព័ត៌មាន​សោ​សាធារណៈ"
+
+msgid "Paging"
+msgstr "ភេយីង"
+
+msgid "Video Conferencing"
+msgstr "សន្និសីទ​វីដេអូ"
+
+msgid "Computer"
+msgstr "កុំព្យូទ័រ"
+
+msgid "PDA"
+msgstr "PDA"
+
+msgid "Terminal"
+msgstr "ស្ថានីយ"
+
+#, c-format
+msgid "%s sent message to whiteboard. Would you like to open the whiteboard?"
+msgstr "%s បាន​ផ្ញើសារ​ទៅក្ដារខៀន ។ តើ​អ្នក​ចង់បើក​ក្ដារខៀន​ឬទេ ?"
+
+#, c-format
+msgid ""
+"%s sent message to whiteboard on %s channel. Would you like to open the "
+"whiteboard?"
+msgstr "%s បាន​ផ្ញើសារ​ទៅក្ដារខៀន​នៅ​លើ​ឆានែល %s ។ តើ​អ្នកចង់​បើក​ក្ដារខៀន​ដែរឬទេ ?"
+
+msgid "Whiteboard"
+msgstr "ក្ដារខៀន"
+
+msgid "No server statistics available"
+msgstr "មិនមាន​ស្ថិតិ​ម៉ាស៊ីន​បម្រើ"
+
+#, c-format
+msgid "Failure: Version mismatch, upgrade your client"
+msgstr "បរាជ័យ ៖ កំណែ​មិនផ្គូផ្គង ធ្វើ​ឲ្យ​​ម៉ាស៊ីន​ភ្ញៀវ​របស់​អ្នក​ប្រសើរ​ឡើង"
+
+#, c-format
+msgid "Failure: Remote does not trust/support your public key"
+msgstr "បរាជ័យ ៖ ការ​តភ្ជាប់​ពី​ចម្ងាយ​មិន​ទុកចិត្ត/គាំទ្រ​សោ​សាធារណៈ​របស់​អ្នកទេ"
+
+#, c-format
+msgid "Failure: Remote does not support proposed KE group"
+msgstr "បរាជ័យ ៖ ការ​តភ្ជាប់​ពីចម្ងាយ​មិនគាំទ្រ​ក្រុម KE ដែល​បាន​ស្នើ​ទេ"
+
+#, c-format
+msgid "Failure: Remote does not support proposed cipher"
+msgstr "បរាជ័យ ៖ ការតភ្ជាប់ពីចម្ងាយ​មិនគាំទ្រ​ការ​សរសេរ​សម្ងាត់​ដែលបានស្នើទេ"
+
+#, c-format
+msgid "Failure: Remote does not support proposed PKCS"
+msgstr "បរាជ័យ ៖ ការតភ្ជាប់ពីចម្ងាយ​មិនគាំទ្រ​ PKCS ដែល​បាន​ស្នើ​ទេ"
+
+#, c-format
+msgid "Failure: Remote does not support proposed hash function"
+msgstr "បរាជ័យ ៖ ការតភ្ជាប់​ពីចម្ងាយ​មិន​គាំទ្រ​មុខងារ hash ដែល​បាន​ស្នើ​ទេ"
+
+#, c-format
+msgid "Failure: Remote does not support proposed HMAC"
+msgstr "បរាជ័យ ៖ ការតភ្ជាប់ពីចម្ងាយ​មិនគាំទ្រ HMAC ដែល​បានស្នើ​​ទេ"
+
+#, c-format
+msgid "Failure: Incorrect signature"
+msgstr "បរាជ័យ ៖ ហត្ថលេខា​មិន​ត្រឹមត្រូវ"
+
+#, c-format
+msgid "Failure: Invalid cookie"
+msgstr "បរាជ័យ ៖ ខូគី​មិន​ត្រឹមត្រូវ"
+
+#, c-format
+msgid "Failure: Authentication failed"
+msgstr "បរាជ័យ ៖ បានបរាជ័យ​ក្នុងការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ"
+
+msgid "Cannot initialize SILC Client connection"
+msgstr "មិន​អាច​ចាប់ផ្ដើម​ការ​តភ្ជាប់ម៉ាស៊ីន​ភ្ញៀវ SILC បានទេ"
+
+msgid "John Noname"
+msgstr "John Noname"
+
+#, c-format
+msgid "Could not load SILC key pair: %s"
+msgstr "មិនអាច​ផ្ទុក​គូសោ SILC ៖ %s"
+
+msgid "Could not write"
+msgstr "មិនអាច​សរសេរ​បានទេ"
+
+msgid "Could not connect"
+msgstr "មិនអាច​តភ្ជាប់"
+
+msgid "Unknown server response."
+msgstr "មិនស្គាល់​ការ​ឆ្លើយតប​របស់ម៉ាស៊ីនបម្រើ"
+
+msgid "Could not create listen socket"
+msgstr "មិនអាច​បង្កើត​រន្ធ​ស្ដាប់បានទេ"
+
+msgid "Could not resolve hostname"
+msgstr "មិនអាច​ដោះស្រាយ​ឈ្មោះ​ម៉ាស៊ីនបានទេ"
+
+msgid "SIP usernames may not contain whitespaces or @ symbols"
+msgstr "ឈ្មោះអ្នកប្រើ SIP អាច​មិនមាន​ចន្លោះ​មិនឃើញ ឬ​និមិត្តសញ្ញា @"
+
+msgid "SIP connect server not specified"
+msgstr "SIP តភ្ជាប់​ម៉ាស៊ីន​បម្រើ​មិន​បានបញ្ជាក់ទេ"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+msgid "SIP/SIMPLE Protocol Plugin"
+msgstr "កម្មវិធី​ជំនួយ​ពិធីការ SIP/SIMPLE"
+
+#. * summary
+msgid "The SIP/SIMPLE Protocol Plugin"
+msgstr "កម្មវិធី​ជំនួយ​ពិធីការ SIP/SIMPLE"
+
+msgid "Publish status (note: everyone may watch you)"
+msgstr "បោះពុម្ព​ស្ថានភាព (ចំណាំ ៖ អ្នករាល់គ្នា​អាច​មើលអ្នកបាន)"
+
+msgid "Use UDP"
+msgstr "ប្រើ UDP"
+
+msgid "Use proxy"
+msgstr "ប្រើ​ប្រូកស៊ី"
+
+msgid "Proxy"
+msgstr "ប្រូកស៊ី"
+
+msgid "Auth User"
+msgstr "ផ្ទៀងផ្ទាត់​អ្នកប្រើ"
+
+msgid "Auth Domain"
+msgstr "ផ្ទៀងផ្ទាត់​ដែន"
+
+#, c-format
+msgid "Looking up %s"
+msgstr "រកមើល %s"
+
+#, c-format
+msgid "Connect to %s failed"
+msgstr "បាន​បរាជ័យ​ក្នុងការ​តភ្ជាប់ %s"
+
+#, c-format
+msgid "Signon: %s"
+msgstr "ចូល ៖ %s"
+
+#, c-format
+msgid "Unable to write file %s."
+msgstr "មិនអាច​សរសេរ​ឯកសារ %s បាននោះទេ ។"
+
+#, c-format
+msgid "Unable to read file %s."
+msgstr "មិន​អាច​អាន​ឯកសារ %s បានទេ ។"
+
+#, c-format
+msgid "Message too long, last %s bytes truncated."
+msgstr "សារ​វែងពេក បានកាត់​ឲ្យ​ខ្លីចុងក្រោយ​ត្រឹម %s បៃ ។"
+
+#, c-format
+msgid "%s not currently logged in."
+msgstr "%s បច្ចុប្បន្នមិន​បានចូល​ទេ ។"
+
+#, c-format
+msgid "Warning of %s not allowed."
+msgstr "មិន​បានអនុញ្ញាត​ការ​ព្រមានរបស់ %s ទេ ។"
+
+#, c-format
+msgid "A message has been dropped, you are exceeding the server speed limit."
+msgstr "សារ​ត្រូវ​បានទម្លាក់ អ្នកបានលើស​ដែន​កំណត់ល្បឿន​របស់​ម៉ាស៊ីនបម្រើ ។"
+
+#, c-format
+msgid "Chat in %s is not available."
+msgstr "មិនមានការ​​ជជែក​នៅ​ក្នុង %s ទេ ។"
+
+#, c-format
+msgid "You are sending messages too fast to %s."
+msgstr "អ្នកកំពុង​ផ្ញើសារ​យ៉ាង​លឿន​ទៅ %s ។"
+
+#, c-format
+msgid "You missed an IM from %s because it was too big."
+msgstr "អ្នកបាត់ IM ពី %s ពីព្រោះ​វា​ធំពេក ។"
+
+#, c-format
+msgid "You missed an IM from %s because it was sent too fast."
+msgstr "អ្នកបានបាត់ IM ពី %s ពីព្រោះ​វា​លឿន​ពេក ។"
+
+#, c-format
+msgid "Failure."
+msgstr "បរាជ័យ ។"
+
+#, c-format
+msgid "Too many matches."
+msgstr "មានការ​ផ្គូផ្គង​ច្រើនពេក ។"
+
+#, c-format
+msgid "Need more qualifiers."
+msgstr "ត្រូវការ​ឧបករណ៍​បញ្ជាក់​បន្ថែមទៀត ។"
+
+#, c-format
+msgid "Dir service temporarily unavailable."
+msgstr "សេវា Dir មិន​អាច​ប្រើបាន​ជា​បណ្ដោះអាសន្ន ។"
+
+#, c-format
+msgid "Email lookup restricted."
+msgstr "បានដាក់កម្ងិរ​ការ​រកមើល​អ៊ីមែល ។"
+
+#, c-format
+msgid "Keyword ignored."
+msgstr "បានមិនអើពើ​ពាក្យគន្លឹះ ។"
+
+#, c-format
+msgid "No keywords."
+msgstr "គ្មាន​ពាក្យ​គន្លឹះ ។"
+
+#, c-format
+msgid "User has no directory information."
+msgstr "អ្នកប្រើ​មិនមាន​​ព័ត៌មាន​ថត​ទៀតទេ ។"
+
+#, c-format
+msgid "Country not supported."
+msgstr "មិន​បានគាំទ្រ​ប្រទេស​ទេ ។"
+
+#, c-format
+msgid "Failure unknown: %s."
+msgstr "មិនស្គាល់​ភាព​បរាជ័យ ៖ %s ។"
+
+#, c-format
+msgid "Incorrect username or password."
+msgstr "ឈ្មោះ​អ្នកប្រើ ឬ​ពាក្យសម្ងាត់​មិន​ត្រឹមត្រូវ ។"
+
+#, c-format
+msgid "The service is temporarily unavailable."
+msgstr "សេវា​មិន​អាច​ប្រើបាន​ជា​បណ្ដោះអាសន្ន ។"
+
+#, c-format
+msgid "Your warning level is currently too high to log in."
+msgstr "កម្រិត​ព្រមាន​របស់​អ្នកបច្ចុប្បន្ន​ខ្ពស់​ពេក​ត្រូវ​ចូល ។"
+
+#, c-format
+msgid ""
+"You have been connecting and disconnecting too frequently. Wait ten minutes "
+"and try again. If you continue to try, you will need to wait even longer."
+msgstr ""
+"អ្នក​បានតភ្ជាប់​ និង​ផ្ដាច់​ញឹកញាប់ពេក ។ រង់ចាំ​រយៈពេល​ ១០ នាទី ហើយ​ព្យាយាម​ម្ដង​ទៀត ។ ប្រសិន​បើ​អ្នកបន្ត​"
+"ព្យាយាម អ្នក​នឹង​ត្រូវ​រង់ចាំ​យូរ​ជាង​នេះ ។"
+
+#, c-format
+msgid "An unknown signon error has occurred: %s."
+msgstr "មិនស្គាល់​កំហុស​ក្នុងការ​ចូល​បានកើតឡើង ៖ %s ។"
+
+#, c-format
+msgid "An unknown error, %d, has occurred. Info: %s"
+msgstr "មិនស្គាល់​កំហុស %d ដែល​បានកើត​ឡើង ។ ព័ត៌មាន ៖ %s"
+
+msgid "Invalid Groupname"
+msgstr "ឈ្មោះក្រុម​មិនត្រឹមត្រូវ"
+
+msgid "Connection Closed"
+msgstr "បានបិទ​ការ​តភ្ជាប់"
+
+msgid "Waiting for reply..."
+msgstr "កំពុង​រង់ចាំ​ការ​ឆ្លើយតប..."
+
+msgid "TOC has come back from its pause. You may now send messages again."
+msgstr "TOC បាន​ត្រឡប់​ពី​ការ​ផ្អាក​របស់​វា ។ ឥឡូវ​អ្នក​ផ្ញើសារ​ម្ដង​ទៀត ។"
+
+msgid "Password Change Successful"
+msgstr "ផ្លាស់ប្ដូរ​ពាក្យ​សម្ងាត់​ដោយ​ជោគជ័យ"
+
+msgid "_Group:"
+msgstr " ក្រុម ៖"
+
+msgid "Get Dir Info"
+msgstr "យក​ព័ត៌មាន Dir"
+
+msgid "Set Dir Info"
+msgstr "កំណត់​ព័ត៌មាន Dir"
+
+#, c-format
+msgid "Could not open %s for writing!"
+msgstr "មិន​អាច​បើក %s ដើម្បីសរសេរ​បានទេ !"
+
+msgid "File transfer failed; other side probably canceled."
+msgstr "បានបរាជ័យ​ក្នុងការ​ផ្ទេរ​ឯកសារ ផ្នែកផ្សេង​ប្រហែលជា​បានបោះបង់​ហើយ "
+
+msgid "Could not connect for transfer."
+msgstr "មិនអាច​តភ្ជាប់​ដើម្បី​ផ្ទេរ​បានទេ ។"
+
+msgid "Could not write file header. The file will not be transferred."
+msgstr "មិនអាច​សរសេរ​បឋមកថា​ឯកសារ​បានទេ ។ ឯកសារ​នឹង​មិន​ត្រូវ​បានផ្ទេរ​ទេ ។"
+
+msgid "Save As..."
+msgstr "រក្សាទុកជា..."
+
+#, c-format
+msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+msgstr[0] "%s ស្នើ %s ឲ្យ​ទទួលឯកសារ %d ៖ %s (%.2f %s)%s%s"
+
+#, c-format
+msgid "%s requests you to send them a file"
+msgstr "%s ស្នើ​អ្នក​ឲ្យ​ផ្ញើ​ឯកសារ​ឲ្យ​ពួកវា"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "TOC Protocol Plugin"
+msgstr "កម្មវិធី​ពិធីការ TOC"
+
+#, c-format
+msgid "%s has sent you a webcam invite, which is not yet supported."
+msgstr "%s បានផ្ញើ​ការ​អញ្ជើញ​អ្នក​ឲ្យ​បើក​ម៉ាស៊ីន​ថត​តាមបណ្ដាញ ដែល​មិន​ត្រូវ​បាន​គាំទ្រ​នៅ​ឡើយទេ ។"
+
+msgid "Your Yahoo! message did not get sent."
+msgstr "យ៉ាហ៊ូ​របស់​អ្នក ! សារ​មិន​ត្រូវ​បានផ្ញើ​ទេ ។"
+
+#, c-format
+msgid "Yahoo! system message for %s:"
+msgstr "យ៉ាហ៊ូ ! សារ​ប្រព័ន្ធ​សម្រាប់ %s ៖"
+
+#, c-format
+msgid ""
+"%s has (retroactively) denied your request to add them to your list for the "
+"following reason: %s."
+msgstr ""
+"%s បាន (ប្រតិសកម្ម) បដិសេធ​សំណើ​របស់​អ្នក ដើម្បីបន្ថែមពួកគេ​ទៅ​ក្នុង​បញ្ជី​របស់អ្នក​​ដោយ​មាន​ហេតុផល​"
+"ដូចខាងក្រោម ៖ %s ។"
+
+#, c-format
+msgid "%s has (retroactively) denied your request to add them to your list."
+msgstr "%s បាន​ (ប្រតិសកម្ម) បដិសេធ​សំណើ​របស់​អ្នក ដើម្បី​បន្ថែម​ពួកគេ​ទៅ​ក្នុង​បញ្ជី​របស់​អ្នក ។"
+
+msgid "Add buddy rejected"
+msgstr "បន្ថែម​មិត្តភក្ដិ​ដែល​បាន​ច្រានចេញ"
+
+#, c-format
+msgid ""
+"The Yahoo server has requested the use of an unrecognized authentication "
+"method. You will probably not be able to successfully sign on to Yahoo. "
+"Check %s for updates."
+msgstr ""
+"ម៉ាស៊ីន​បម្រើ​យ៉ាហ៊ូ​បាន​ស្នើ​ឲ្យ​ប្រើ​វិធីសាស្ត្រ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ដែល​មិន​ស្គាល់ ។ អ្នក​នឹង​ប្រហែលជា​មិនអាច​"
+"ចូល​ក្នុងយ៉ាហ៊ូ​ដោយជោគជ័យ ។ ពិនិត្យ​មើល %s សម្រាប់​ភាព​ទាន់សម័យ ។"
+
+msgid "Failed Yahoo! Authentication"
+msgstr "បាន​បរាជ័យ​ក្នុងការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹម​ត្រូវ​របស់​យ៉ាហ៊ូ !"
+
+#, c-format
+msgid ""
+"You have tried to ignore %s, but the user is on your buddy list. Clicking "
+"\"Yes\" will remove and ignore the buddy."
+msgstr ""
+"អ្នកបាន​ព្យាយាម​មិនអើពើ %s ប៉ុន្តែ​អ្នកប្រើ​នៅ​ក្នុង​បញ្ជី​មិត្តភក្ដិ​របស់​អ្នក ។ ចុច \"បាទ/ចាស\" នឹង​យក​"
+"ចេញ ហើយ​មិនអើពើ​មិត្តភក្ដិ ។"
+
+msgid "Ignore buddy?"
+msgstr "មិនអើពើ​មិត្តភក្ដិ !"
+
+msgid "Your account is locked, please log in to the Yahoo! website."
+msgstr "គណនី​របស់​អ្នកត្រូវ​បាន​ចាក់សោ សូំ​ចូល​ក្នុង​តំបន់បណ្ដាញ​របស់យ៉ាហ៊ូ !"
+
+#, c-format
+msgid "Unknown error number %d. Logging into the Yahoo! website may fix this."
+msgstr "មិន​ស្គាល់លេខ​កំហុស %d ។ ចូល​ក្នុង​តំបន់យ៉ាហ៊ូ ! អាចជួសជុល​វា​បាន ។"
+
+#, c-format
+msgid "Could not add buddy %s to group %s to the server list on account %s."
+msgstr "មិនអាច​បន្ថែម​មិត្តភក្ដិ %s ដើម្បីដាក់ %s ជា​ក្រុម​ទៅកាន់​បញ្ជីម៉ាស៊ីន​បម្រើ​នៅ​ក្នុងគណនី %s ។"
+
+msgid "Could not add buddy to server list"
+msgstr "មិនអាច​បន្ថែម​មិត្តភក្ដិ​ទៅ​កាន់បញ្ជី​ម៉ាស៊ីន​បម្រើ​ទេ"
+
+#, c-format
+msgid "[ Audible %s/%s/%s.swf ] %s"
+msgstr "[ Audible %s/%s/%s.swf ] %s"
+
+msgid "Received unexpected HTTP response from server."
+msgstr "បាន​ទទួល​កា​រឆ្លើយ​តប HTTP ពី​ម៉ាស៊ីនបម្រើ ។"
+
+msgid "Connection problem"
+msgstr "បញ្ហា​ក្នុង​ការ​តភ្ជាប់"
+
+#, c-format
+msgid ""
+"Lost connection with %s:\n"
+"%s"
+msgstr ""
+"បាត់បង់​ការ​តភ្ជាប់​ជា​មួយ %s ៖\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with %s:\n"
+"%s"
+msgstr ""
+"មិនអាច​បង្កើត​ការ​តភ្ជាប់​ជា​មួយ %s បានទេ ៖\n"
+"%s"
+
+msgid "Not at Home"
+msgstr "មិននៅ​ផ្ទះ​ទេ"
+
+msgid "Not at Desk"
+msgstr "មិននៅ​តុ​ទេ"
+
+msgid "Not in Office"
+msgstr "មិន​នៅ​ក្នុងការិយាល័យ​ទេ"
+
+msgid "On Vacation"
+msgstr "បវេស្សនកាល"
+
+msgid "Stepped Out"
+msgstr "ចេញ"
+
+msgid "Not on server list"
+msgstr "មិន​នៅ​ក្នុង​បញ្ជី​ម៉ាស៊ីនបម្រើ​ទេ"
+
+msgid "Appear Online"
+msgstr "បង្ហាញ​លើ​បណ្ដាញ"
+
+msgid "Appear Permanently Offline"
+msgstr "បង្ហាញ​នៅ​ក្រៅ​បណ្ដាញ​ជា​អចិន្ត្រៃយ៍"
+
+msgid "Presence"
+msgstr "វត្តមាន"
+
+msgid "Appear Offline"
+msgstr "បង្ហាញ​នៅ​ក្រៅ​បណ្ដាញ"
+
+msgid "Don't Appear Permanently Offline"
+msgstr "កុំបង្ហាញ​នៅ​ក្រៅ​បណ្ដាញ​អចិន្ត្រៃយ៍"
+
+msgid "Join in Chat"
+msgstr "ចូលរួម​ក្នុងកា​រជជែក"
+
+msgid "Initiate Conference"
+msgstr "ចាប់ផ្ដើម​សន្និសីទ"
+
+msgid "Presence Settings"
+msgstr "ការ​កំណត់​វត្តមាន"
+
+msgid "Start Doodling"
+msgstr "ចាប់ផ្ដើម Doodling"
+
+msgid "Activate which ID?"
+msgstr "ធ្វើ​ឲ្យ​សកម្ម​នូវ​លេខសម្គាល់​ណា​មួយ ?"
+
+msgid "Join whom in chat?"
+msgstr "អ្នកណា​ចូលរួម​ក្នុងកា​រជជែក ?"
+
+msgid "Activate ID..."
+msgstr "ធ្វើ​ឲ្យ​លេខសម្គាល់​សកម្ម..."
+
+msgid "Join User in Chat..."
+msgstr "ចូលរួម​អ្នកប្រើ​នៅ​ក្នុង​ការ​ជជែក..."
+
+msgid "Open Inbox"
+msgstr "បើក​ប្រអប់"
+
+msgid "join &lt;room&gt;: Join a chat room on the Yahoo network"
+msgstr "ចូលរួម &lt;room&gt; ៖ ចូលរួម​បន្ទប់​ជជែក​នៅ​ក្នុង​បណ្ដាញ​យ៉ាហ៊ូ"
+
+msgid "list: List rooms on the Yahoo network"
+msgstr "បញ្ជី ៖ រាយ​បន្ទប់​នៅ​ក្នុង​បណ្ដាញ​របស់​យ៉ាហ៊ូ"
+
+msgid "doodle: Request user to start a Doodle session"
+msgstr "doodle ៖ ស្នើ​អ្នកប្រើ​ឲ្យ​ចាប់ផ្ដើម​សម័យ​របស់ Doodle"
+
+msgid "Yahoo ID..."
+msgstr "លេខ​សម្គាល់​របស់​យ៉ាហ៊ូ..."
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Yahoo Protocol Plugin"
+msgstr "កម្មវិធី​ជំនួយ​ពិធីការ​របស់យ៉ាហ៊ូ"
+
+msgid "Yahoo Japan"
+msgstr "យ៉ាហ៊ូ​ ជប៉ុន"
+
+msgid "Pager server"
+msgstr "ម៉ាស៊ីនបម្រើ​ភេយ័រ"
+
+msgid "Japan Pager server"
+msgstr "ម៉ាស៊ីន​បម្រើ​ភេយ័រ​ជប៉ុន"
+
+msgid "Pager port"
+msgstr "ច្រក​ភេយ័រ"
+
+msgid "File transfer server"
+msgstr "ម៉ាស៊ីនបម្រើ​ផ្ទេរ​ឯកសារ"
+
+msgid "Japan file transfer server"
+msgstr "ម៉ាស៊ីនបម្រើ​ផ្ទេរ​ឯកសារ​ជប៉ុន"
+
+msgid "File transfer port"
+msgstr "ច្រក​ផ្ទេរ​ឯកសារ"
+
+msgid "Chat room locale"
+msgstr "បន្ទប់​ជជែក​មូលដ្ឋាន"
+
+msgid "Ignore conference and chatroom invitations"
+msgstr "មិនអើពើ​សន្និសីទ និង​ការ​អញ្ជើញ​របស់​បន្ទប់​ជជែក"
+
+msgid "Chat room list URL"
+msgstr "URL បញ្ជី​បន្ទប់​ជជែក"
+
+msgid "Yahoo Chat server"
+msgstr "ម៉ាស៊ីនបម្រើ​ជជែក​យ៉ាហ៊ូ"
+
+msgid "Yahoo Chat port"
+msgstr "ច្រក​ជជែក​យ៉ាហ៊ូ"
+
+#. Write a local message to this conversation showing that a request for a
+#. * Doodle session has been made
+#.
+msgid "Sent Doodle request."
+msgstr "បានផ្ញើ​សំណើ Doodle ។"
+
+msgid "Unable to establish file descriptor."
+msgstr "មិនអាច​បង្កើត​​ឧបករណ៍​ពិពណ៌នា​ឯកសារ​បានទេ ។"
+
+#, c-format
+msgid "%s is trying to send you a group of %d files.\n"
+msgstr "%s កំពុង​ព្យាយាម​ផ្ញើ​ឲ្យ​អ្នក​នូវ​ក្រុម​ឯកសារ %d ។\n"
+
+msgid "Yahoo! Japan Profile"
+msgstr "ទម្រង់​យ៉ាហ៊ូ ជប៉ុន"
+
+msgid "Yahoo! Profile"
+msgstr "ទម្រង់ យ៉ាហ៊ូ !"
+
+msgid ""
+"Sorry, profiles marked as containing adult content are not supported at this "
+"time."
+msgstr "សូម​អភ័យ​ទោស ទម្រង់​បាន​សម្គាល់ថា​មាន​មាតិកា​​មនុស្ស​ពេញវ័យ​មិន​ត្រូវ​បានគាំទ្រ​នៅ​ពេល​នេះ​ទេ ។"
+
+msgid ""
+"If you wish to view this profile, you will need to visit this link in your "
+"web browser:"
+msgstr "ប្រសិន​បើ​អ្នក​ចង់​មើល​ជម្រង់​នេះ អ្នកត្រូវតែ​ទស្សនា​តំណ​នេះ​នៅ​ក្នុង​កម្មវិធី​រុករក​បណ្តាញ​របស់​អ្នក ៖"
+
+msgid "Yahoo! ID"
+msgstr "លេខ​សម្គាល់​របស់​យ៉ាហ៊ូ !"
+
+msgid "Hobbies"
+msgstr "ចំណូល​ចិត្ត"
+
+msgid "Latest News"
+msgstr "ព័ត៌មាន​ចុងក្រោយ"
+
+msgid "Home Page"
+msgstr "គេហទំព័រ"
+
+msgid "Cool Link 1"
+msgstr "តំណ ១"
+
+msgid "Cool Link 2"
+msgstr "តំណ ២"
+
+msgid "Cool Link 3"
+msgstr "តំណ ៣"
+
+msgid "Last Update"
+msgstr "ភាព​ទាន់សម័យ​ចុងក្រោយ"
+
+msgid ""
+"This profile is in a language or format that is not supported at this time."
+msgstr "ទម្រង់​នេះ​ស្ថិត​ក្នុង​ភាសា ឬ​ទ្រង់ទ្រាយ​ដែល​មិន​បាន​គាំទ្រ​នៅពេល​នេះ​ទេ ។"
+
+msgid ""
+"Could not retrieve the user's profile. This most likely is a temporary "
+"server-side problem. Please try again later."
+msgstr ""
+"មិនអាច​ទៅយក​ទម្រង់​របស់​អ្នកប្រើ​បានទេ ។ វា​ទំនង​ជា​បញ្ហា​ខាង​ម៉ាស៊ីនបម្រើជា​បណ្ដោះអាសន្ន ។ សូម​ព្យាយាម​"
+"ម្ដង​ទៀត​ពេល​ក្រោយ ។"
+
+msgid ""
+"Could not retrieve the user's profile. This most likely means that the user "
+"does not exist; however, Yahoo! sometimes does fail to find a user's "
+"profile. If you know that the user exists, please try again later."
+msgstr ""
+"មិនអាច​ទៅ យក​ទម្រង់​របស់​អ្នកប្រើបានទេ ។ វា​ទំនង​ជា​មាន​ន័យ​ថា ​មិនទាន់​មាន​អ្នកប្រើ​ទេ ទោះ​ជា​យ៉ាង​ណា​ក៏​"
+"ដោយ យ៉ាហ៊ូ ពេលខ្លះ​បានអនុវត្ត​មិនជោគជ័យ​ដើម្បីរក​ទម្រង់​របស់​អ្នក​ប្រើ ។ ប្រសិនបើ​អ្នក​ដឹង​ថា​មាន​អ្នកប្រើហើយ "
+"សូម​ព្យាយាម​ម្ដង​ទៀត​នៅ​ពេល​ក្រោយ ។"
+
+msgid "The user's profile is empty."
+msgstr "ទម្រង់​របស់​អ្នកប្រើ​ទទេរ ។"
+
+#, c-format
+msgid "%s declined your conference invitation to room \"%s\" because \"%s\"."
+msgstr "%s បានបដិសេធ​ការ​អញ្ជើញ​សន្និសីទ​របស់​អ្នក​​ក្នុង​បន្ទប់ \"%s\" ដោយ​សារតែ \"%s\" ។"
+
+msgid "Invitation Rejected"
+msgstr "បានបដិសេធ​ការ​អញ្ជើញ"
+
+msgid "Failed to join chat"
+msgstr "បានបរាជ័យ​ក្នុងការ​ចូលរួម​ក្នុងការ​ជជែក"
+
+#. -6
+msgid "Unknown room"
+msgstr "មិន​ស្គាល់​បន្ទប់"
+
+#. -15
+msgid "Maybe the room is full"
+msgstr "ប្រហែល​ជា​បន្ទប់ពេញ​ហើយ"
+
+#. -35
+msgid "Not available"
+msgstr "មិនមាន"
+
+msgid ""
+"Unknown error. You may need to logout and wait five minutes before being "
+"able to rejoin a chatroom"
+msgstr "មិនស្គាល់​កំហុស ។ អ្នក​ត្រូវ​តែ​ចេញ ហើយ​រង់ចាំ​ប្រាំ​នាទី​ មុននឹង​អាច​ចូលរួម​ក្នុង​បន្ទប់​ជជែក​ម្ដង​ទៀត"
+
+#, c-format
+msgid "You are now chatting in %s."
+msgstr "ឥឡូវ​អ្នកកំពុង​ជជែក​​នៅ​ក្នុង %s ។"
+
+msgid "Failed to join buddy in chat"
+msgstr "បានបរាជ័យ​ក្នុងកា​រ​បញ្ចូល​មិត្តភក្ដិ​ក្នុងកា​រជជែក"
+
+msgid "Maybe they're not in a chat?"
+msgstr "ប្រហែល​ជា​មិនមាន​នៅ​ក្នុងការ​ជជែក​ទេ ?"
+
+msgid "Fetching the room list failed."
+msgstr "បាន​បរាជ័យ​ក្នុងការ​​ទៅយក​បញ្ជី​បន្ទប់ ។"
+
+msgid "Voices"
+msgstr "សំឡេង"
+
+msgid "Webcams"
+msgstr "ម៉ាស៊ីន​ថត​តាមបណ្ដាញ"
+
+msgid "Unable to fetch room list."
+msgstr "មិនអាច​ទៅ​យក​បញ្ជី​បន្ទប់​បានទេ ។"
+
+msgid "User Rooms"
+msgstr "បន្ទប់​អ្នកប្រើ"
+
+msgid "Connection problem with the YCHT server."
+msgstr "បញ្ហា​ក្នុងកា​រតភ្ជាប់​ជា​មួយ​ម៉ាស៊ីន​បម្រើ YCHT ។"
+
+#, c-format
+msgid ""
+"Lost connection with server\n"
+"%s"
+msgstr ""
+"បាត់បង់​ការ​តភ្ជាប់​ជា​មួយ​ម៉ាស៊ីនបម្រើ\n"
+"%s"
+
+msgid ""
+"(There was an error converting this message.\t Check the 'Encoding' option "
+"in the Account Editor)"
+msgstr "(មានកំហុសក្នុងបម្លែង​សារ​នេះ ។ គូសធីក​ជម្រើស 'ការ​អ៊ិនកូដ' នៅ ក្នុង​កម្មវិធី​កែសម្រួល​គណនី)"
+
+#, c-format
+msgid "Unable to send to chat %s,%s,%s"
+msgstr "មិនអាច​ផ្ញើ​ទៅកាន់ការ​ជជែក %s,%s,%s បានទេ"
+
+msgid "Hidden or not logged-in"
+msgstr "បានលាក់ ឬ​មិនបានចូល"
+
+#, c-format
+msgid "<br>At %s since %s"
+msgstr "<br>នៅ %s តាំង​ពី %s"
+
+msgid "Anyone"
+msgstr "អ្នករាល់គ្នា"
+
+msgid "_Class:"
+msgstr "ថ្នាក់"
+
+msgid "_Instance:"
+msgstr "ធាតុ ៖"
+
+msgid "_Recipient:"
+msgstr "អ្នក​ទទួល ៖"
+
+#, c-format
+msgid "Attempt to subscribe to %s,%s,%s failed"
+msgstr "បាន​បរាជ័យ​ក្នុងការ​​ប៉ុនប៉ង​ជាវ %s,%s,%s"
+
+msgid "zlocate &lt;nick&gt;: Locate user"
+msgstr "zlocate &lt;nick&gt; ៖ កំណត់​ទីតាំង​អ្នកប្រើ"
+
+msgid "zl &lt;nick&gt;: Locate user"
+msgstr "zl &lt;nick&gt; ៖ កំណត់​ទីតាំង​អ្នកប្រើ"
+
+msgid "instance &lt;instance&gt;: Set the instance to be used on this class"
+msgstr "ធាតុ &lt;instance&gt; ៖ កំណត់​ធាតុ​ត្រូវ​ប្រើ​នៅ​ក្នុង​ថ្នាក់​នេះ"
+
+msgid "inst &lt;instance&gt;: Set the instance to be used on this class"
+msgstr "inst &lt;instance&gt; ៖ កំណត់​ធាតុ​ត្រូវ​ប្រើ​នៅ​ក្នុង​ថ្នាក់​នេះ"
+
+msgid "topic &lt;instance&gt;: Set the instance to be used on this class"
+msgstr "ប្រធានបទ &lt;instance&gt; ៖ កំណត់​ធាតុ​ត្រូវ​ប្រើនៅ​ក្នុង​ថ្នាក់នេះ"
+
+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; ៖ ចូលរួម​ក្នុងការ​ជជែក​ថ្មី"
+
+msgid ""
+"zi &lt;instance&gt;: Send a message to &lt;message,<i>instance</i>,*&gt;"
+msgstr "zi &lt;instance&gt; ; ផ្ញើសារ​ទៅ &lt;សារ<i>ធាតុ</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;class&gt; &lt;instance&gt; ៖ ផ្ញើសារ​ទៅ &lt;<i>ថ្នាក់</i>,<i>ធាតុ</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;class&gt; &lt;instance&gt; &lt;recipient&gt; ៖ ផ្ញើសារ​ទៅ &lt;"
+"<i>ថ្នាក់</i>,<i>ធាតុ</i>,<i>អ្នក​ទទួល</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;instance&gt; &lt;recipient&gt; ៖ ផ្ញើសារ​ទៅ &lt;MESSAGE,<i>instance</"
+"i>,<i>recipient</i>&gt;"
+
+msgid "zc &lt;class&gt;: Send a message to &lt;<i>class</i>,PERSONAL,*&gt;"
+msgstr "zc &lt;class&gt; ៖ ផ្ញើសារទៅកាន់ &lt;<i>class</i>,PERSONAL,*&gt;"
+
+msgid "Resubscribe"
+msgstr "ជាវ​ឡើង​វិញ"
+
+msgid "Retrieve subscriptions from server"
+msgstr "ទៅយក​ការជាវ​ពី​ម៉ាស៊ីនបម្រើ"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Zephyr Protocol Plugin"
+msgstr "កម្មវិធី​ជំនួយ​ពិធីការ Zephyr"
+
+msgid "Use tzc"
+msgstr "ប្រើ tzc"
+
+msgid "tzc command"
+msgstr "ពាក្យ​បញ្ជា tzc"
+
+msgid "Export to .anyone"
+msgstr "នាំចេញ​ទៅ .anyone"
+
+msgid "Export to .zephyr.subs"
+msgstr "នាំចេញ​ទៅ .zephyr.subs"
+
+msgid "Import from .anyone"
+msgstr "នាំចូល​ពី .anyone"
+
+msgid "Import from .zephyr.subs"
+msgstr "នាំចូល​ពី .zephyr.subs"
+
+msgid "Realm"
+msgstr "Realm"
+
+msgid "Exposure"
+msgstr "បង្ហាញ"
+
+#, c-format
+msgid ""
+"Unable to create socket:\n"
+"%s"
+msgstr ""
+"មិនអាច​បង្កើត​រន្ធ ៖\n"
+"%s"
+
+#, c-format
+msgid "Unable to parse response from HTTP proxy: %s\n"
+msgstr "មិនអាច​ញែក​ការ​ឆ្លើយតប​ពី​ប្រូកស៊ី HTTP ៖ %s\n"
+
+#, c-format
+msgid "HTTP proxy connection error %d"
+msgstr "កំហុសក្នុងការ​តភ្ជាប់ប្រូកស៊ី HTTP %d"
+
+#, c-format
+msgid "Access denied: HTTP proxy server forbids port %d tunneling."
+msgstr "បដិសេធ ៖ ម៉ាស៊ីនបម្រើប្រូកស៊ី HTTP ហាមឃាត់​ច្រក %d ។"
+
+#, c-format
+msgid "Error resolving %s"
+msgstr "កំហុស​ក្នុងការ​ដោះស្រាយ %s"
+
+msgid "Could not resolve host name"
+msgstr "មិនអាច​ដោះស្រាយ​ឈ្មោះម៉ាស៊ីនបានទេ"
+
+#, c-format
+msgid "Requesting %s's attention..."
+msgstr "កំពុងស្នើ​កា​រចាប់អារម្មណ៍​​របស់ %s..."
+
+#, c-format
+msgid "%s has requested your attention!"
+msgstr "%s បាន​ស្នើ​កា​រចាប់អារម្មណ៍​អ្នកប្រើ !"
+
+#. *
+#. * A wrapper for purple_request_action() that uses @c Yes and @c No buttons.
+#.
+msgid "_Yes"
+msgstr "បាទ/ចាស"
+
+msgid "_No"
+msgstr "ទេ"
+
+#. *
+#. * A wrapper for purple_request_action() that uses Accept and Cancel buttons.
+#.
+msgid "_Accept"
+msgstr "យល់​​​ព្រម​"
+
+#. *
+#. * The default message to use when the user becomes auto-away.
+#.
+msgid "I'm not here right now"
+msgstr "ខ្ញុំ​មិននៅ​ទីនេះ​ទេ​ឥឡូវ"
+
+msgid "saved statuses"
+msgstr "បានរក្សាទុ​ស្ថានភាព"
+
+#, c-format
+msgid "%s is now known as %s.\n"
+msgstr "%s ឥឡូវ​ត្រូវ​បាន​ស្គាល់​ជា %s ។\n"
+
+#, c-format
+msgid ""
+"%s has invited %s to the chat room %s:\n"
+"%s"
+msgstr ""
+"%s បាន​អញ្ជើញ %s ឲ្យ​ចូលរួម​ក្នុង​បន្ទប់ %s ៖\n"
+"%s"
+
+#, c-format
+msgid "%s has invited %s to the chat room %s\n"
+msgstr "%s បានអញ្ជើញ %s ឲ្យ​ចូលរួម​ក្នុង​បន្ទប់​ជជែក %s\n"
+
+msgid "Accept chat invitation?"
+msgstr "ព្រម​ទទួល​ការអញ្ជើញ​នៃ​កា​រជជែក ?"
+
+#. Shortcut
+msgid "Shortcut"
+msgstr "ផ្លូវ​កាត់"
+
+msgid "The text-shortcut for the smiley"
+msgstr "ផ្លូវកាត់​អត្ថបទ​សម្រាប់​សញ្ញា​អារម្មណ៍"
+
+#. Stored Image
+msgid "Stored Image"
+msgstr "រូបភាព​ដែល​បានទុក"
+
+msgid "Stored Image. (that'll have to do for now)"
+msgstr "រូបភាព​ដែលបានទុក ។ (ដែល​ត្រូ​វធ្វើ​ឥឡូវ)"
+
+msgid "SSL Connection Failed"
+msgstr "បានបរាជ័យ​ក្នុងការ​តភ្ជាប់ SSL"
+
+msgid "SSL Handshake Failed"
+msgstr "បាន​បរាជ័យ​ក្នុងការ​ចាប់ដៃ SSL"
+
+msgid "SSL peer presented an invalid certificate"
+msgstr "គូ SSL បាន​បង្ហាញ​​វិញ្ញាបនបត្រ​មិន​ត្រឹមត្រូវ"
+
+msgid "Unknown SSL error"
+msgstr "មិនស្គាល់​កំហុស SSL"
+
+msgid "Unset"
+msgstr "មិន​បានកំណត់Unset"
+
+msgid "Do not disturb"
+msgstr "កុំ​រំខាន"
+
+msgid "Extended away"
+msgstr "បាន​ពង្រីក​ការ​ចាកឆ្ងាយ"
+
+msgid "Mobile"
+msgstr "ចល័ត"
+
+msgid "Listening to music"
+msgstr "ស្ដាប់​តន្ត្រី"
+
+#, c-format
+msgid "%s (%s) changed status from %s to %s"
+msgstr "%s (%s) បាន​ផ្លាស់ប្ដូរ​ស្ថានភាព​ពី %s ទៅ​ជា %s"
+
+#, c-format
+msgid "%s (%s) is now %s"
+msgstr "%s (%s) ឥឡូវ​គឺ %s"
+
+#, c-format
+msgid "%s (%s) is no longer %s"
+msgstr "%s (%s) មិនមានទៀតទេ %s"
+
+#, c-format
+msgid "%s became idle"
+msgstr "%s ក្លាយ​ជា​ទំនេរ"
+
+#, c-format
+msgid "%s became unidle"
+msgstr "%s ក្លាយ​ជា​មិនទំនេរ"
+
+#, c-format
+msgid "+++ %s became idle"
+msgstr "+++ %s ក្លាយជា​ទំនេរ"
+
+#, c-format
+msgid "+++ %s became unidle"
+msgstr "+++ %s ក្លាយ​ជា​មិន​ទំនេរ"
+
+#.
+#. * This string determines how some dates are displayed. The default
+#. * string "%x %X" shows the date then the time. Translators can
+#. * change this to "%X %x" if they want the time to be shown first,
+#. * followed by the date.
+#.
+#, c-format
+msgid "%x %X"
+msgstr "%x %X"
+
+#, c-format
+msgid "Error Reading %s"
+msgstr "កំហុស​ក្នុងការ​អាន %s"
+
+#, c-format
+msgid ""
+"An error was encountered reading your %s. They have not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"មាន​កំហុស​ក្នុងការ​អាន​ %s របស់​​អ្នក ។ ពួកវា​មិន​ត្រូវ​បានផ្ទុក​ទេ ហើយ​ឯកសារ​ចាស់​ត្រូវ​បាន​ប្ដូរ​ឈ្មោះ​ទៅជា %"
+"s~."
+
+msgid "Calculating..."
+msgstr "កំពុង​គណនា..."
+
+msgid "Unknown."
+msgstr "មិន​ស្គាល់ ។"
+
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d វិនាទី"
+
+#, c-format
+msgid "%d day"
+msgid_plural "%d days"
+msgstr[0] "%d ថ្ងៃ"
+
+#, c-format
+msgid "%s, %d hour"
+msgid_plural "%s, %d hours"
+msgstr[0] "%s, %d ម៉ោង"
+
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d ម៉ោង"
+
+#, c-format
+msgid "%s, %d minute"
+msgid_plural "%s, %d minutes"
+msgstr[0] "%s, %d នាទី"
+
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d នាទី"
+
+#, c-format
+msgid "Could not open %s: Redirected too many times"
+msgstr "មិន​អាច​បើក %s ៖ បានបញ្ជូនច្រើនដង​ពេក"
+
+#, c-format
+msgid "Unable to connect to %s"
+msgstr "មិនអាច​តភ្ជាប់​ទៅ %s"
+
+#, c-format
+msgid "Error reading from %s: response too long (%d bytes limit)"
+msgstr "កំហុស​ក្នុងកា​រអាន​ពី %s ៖ កា​រឆ្លើយតប​វែងពេក (ដែន​កំណត់ %d បៃ)"
+
+#, c-format
+msgid ""
+"Unable to allocate enough memory to hold the contents from %s. The web "
+"server may be trying something malicious."
+msgstr ""
+"មិនអាច​បម្រុង​ទុក​សតិ​គ្រប់គ្រាន់​ដើម្បី​ផ្ទុកមាតិកា​ពី %s បានទេ ។ ម៉ាស៊ីនបម្រើបណ្ដាញ​ប្រហែលជា​​ព្យាយាម​អ្វី​ដែល​​"
+"មិនល្អ ។"
+
+#, c-format
+msgid "Error reading from %s: %s"
+msgstr "កំហុស​ក្នុងការ​អាន​ពី %s: %s"
+
+#, c-format
+msgid "Error writing to %s: %s"
+msgstr "កំហុស​ក្នុងការ​សរសេរ​ទៅ​កាន់ %s: %s"
+
+#, c-format
+msgid "Unable to connect to %s: %s"
+msgstr "មិនអាច​តភ្ជាប់​ទៅកាន់ %s: %s"
+
+#, c-format
+msgid " - %s"
+msgstr " - %s"
+
+#, c-format
+msgid " (%s)"
+msgstr " (%s)"
+
+#. 10053
+#, c-format
+msgid "Connection interrupted by other software on your computer."
+msgstr "ការ​តភ្ជាប់​បានផ្អាក​ដោយ​កម្មវិធី​ផ្សេង​នៅ​ក្នុង​កុំព្យូទ័រ​របស់ ។"
+
+#. 10054
+#, c-format
+msgid "Remote host closed connection."
+msgstr "ការ​តភ្ជាប់​បានបិទ​ពី​ម៉ាស៊ីន​ពី​ចម្ងាយ ។"
+
+#. 10060
+#, c-format
+msgid "Connection timed out."
+msgstr "អស់ពេល​តភ្ជាប់ ។"
+
+#. 10061
+#, c-format
+msgid "Connection refused."
+msgstr "បានបដិសេធ​កា​រតភ្ជាប់ ។"
+
+#. 10048
+#, c-format
+msgid "Address already in use."
+msgstr "អាសយដ្ឋាន​កំពុង​ប្រើ​ហើយ ។"
+
+msgid "Internet Messenger"
+msgstr "កម្មវិធី​ផ្ញើសារ​អ៊ីនធឺណិត"
+
+msgid "Pidgin Internet Messenger"
+msgstr "កម្មវិធី​ផ្ញើសារ​អ៊ីនធឺណិត​របស់ Pidgin"
+
+msgid "Send instant messages over multiple protocols"
+msgstr "ផ្ញើសារ​បន្ទាន់​តាម​ពិធីការ​ជា​ច្រើន"
+
+msgid "Orientation"
+msgstr "ទិស"
+
+msgid "The orientation of the tray."
+msgstr "ទិស​របស់​ថាស ។"
+
+#. Build the login options frame.
+msgid "Login Options"
+msgstr "ជម្រើស​​ចូល"
+
+msgid "Pro_tocol:"
+msgstr "ពិធីការ ៖"
+
+msgid "_Username:"
+msgstr "ឈ្មោះ​អ្នក​ប្រើ ៖"
+
+msgid "Remember pass_word"
+msgstr "ចងចាំ​ពាក្យ​សម្ងាត់"
+
+#. Build the user options frame.
+msgid "User Options"
+msgstr "ជម្រើស​អ្នកប្រើ"
+
+msgid "_Local alias:"
+msgstr "ឈ្មោះក្លែងក្លាយ​មូលដ្ឋាន ៖"
+
+msgid "New _mail notifications"
+msgstr "ការ​ជូនដំណឹង​សំបុត្រ​ថ្មី"
+
+#. Buddy icon
+msgid "Use this buddy _icon for this account:"
+msgstr "ប្រើ​រូបតំណាង​មិត្តភក្ដិ​នេះ​សម្រាប់គណនី​នេះ ៖"
+
+#. Build the protocol options frame.
+#, c-format
+msgid "%s Options"
+msgstr "ជម្រើស %s"
+
+msgid "Use GNOME Proxy Settings"
+msgstr "ប្រើ​ការ​កំណត់​ប្រូកស៊ី​របស់ GNOME"
+
+msgid "Use Global Proxy Settings"
+msgstr "ប្រើ​ការ​កំណត់​ប្រូកស៊ី​សកល"
+
+msgid "No Proxy"
+msgstr "គ្មានប្រូកស៊ី"
+
+msgid "HTTP"
+msgstr "HTTP"
+
+msgid "SOCKS 4"
+msgstr "SOCKS 4"
+
+msgid "SOCKS 5"
+msgstr "SOCKS 5"
+
+msgid "Use Environmental Settings"
+msgstr "ការ​កំណត់​បរិស្ថាន​អ្នក​ប្រើ"
+
+#. This is an easter egg.
+#. It means one of two things, both intended as humourus:
+#. A) your network is really slow and you have nothing better to do than
+#. look at butterflies.
+#. B)You are looking really closely at something that shouldn't matter.
+msgid "If you look real closely"
+msgstr "ប្រសិនបើ​អ្នក​មើល​ទៅ​ពិតជា​ជិត​ណាស់"
+
+#. This is an easter egg. See the comment on the previous line in the source.
+msgid "you can see the butterflies mating"
+msgstr "អ្នកអាច​មើល​ butterflies mating"
+
+msgid "Proxy Options"
+msgstr "ជម្រើសប្រូកស៊ី"
+
+msgid "Proxy _type:"
+msgstr "ប្រភេទ​ប្រូកស៊ី ៖"
+
+msgid "_Host:"
+msgstr "ម៉ាស៊ីន ៖"
+
+msgid "_Port:"
+msgstr "ច្រក ៖"
+
+msgid "Pa_ssword:"
+msgstr "ពាក្យ​សម្ងាត់ ៖"
+
+msgid "Unable to save new account"
+msgstr "មិនអាច​រក្សាទុក​គណនី​ថ្មី​បានទេ"
+
+msgid "An account already exists with the specified criteria."
+msgstr "មានគណនី​រួច​ហើយ​ជា​មួយនឹង​លក្ខខណ្ឌ​ដែល​បាន​បញ្ជាក់ ។"
+
+msgid "Add Account"
+msgstr "បន្ថែម​គណនី"
+
+msgid "_Basic"
+msgstr "មូលដ្ឋាន"
+
+msgid "Create _this new account on the server"
+msgstr "បង្កើត​គណនី​ថ្មី​នៅ​លើ​ម៉ាស៊ីនបម្រើ"
+
+msgid "_Advanced"
+msgstr "កម្រិត​ខ្ពស់"
+
+msgid "Enabled"
+msgstr "បានបើក"
+
+msgid "Protocol"
+msgstr "ពិធីការ"
+
+#, c-format
+msgid ""
+"<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'>សូម​ស្វាគមន៍​មកកាន់ %s!</span>\n"
+"\n"
+"អ្នក​មិនមាន​គណនី IM បានកំណត់​រចនាសម្ព័ន្ធ​ទេ ។ ដើម្បីចាប់ផ្ដើម​ការ​តភ្ជាប់​ជា​មួយ​ %s ចុចប៊ូតុង "
+"<b>បន្ថែម...</b> ខាង​ក្រោម​ និង​កំណត់​រចនាសម្ព័ន្ធ​គណនី​ដំបូង​របស់​អ្នក ។ ប្រសិនបើ​អ្នក​ចង់​ឲ្យ %s តភ្ជាប់​ទៅ​"
+"គណនី IM ជា​ច្រើន ចុច​ <b>បន្ថែម...</b> ដើម្បី​កំណត់​រចនាសម្ព័ន្ធ​ពួកវា​ទាំង​អស់ ។\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"
+
+#, c-format
+msgid "You have %d contact named %s. Would you like to merge them?"
+msgid_plural ""
+"You currently have %d contacts named %s. Would you like to merge them?"
+msgstr[0] "អ្នកបច្ចុប្បន្ន​មាន​ទំនាក់ទំនង %d ដែល​មាន​ឈ្មោះ %s ។ តើ​អ្នកចង់​បញ្ចូល​ពួកវា​ដែរឬទេ ?"
+
+msgid ""
+"Merging these contacts will cause them to share a single entry on the buddy "
+"list and use a single conversation window. You can separate them again by "
+"choosing 'Expand' from the contact's context menu"
+msgstr ""
+"បញ្ចូល​ទំនាក់ទំនង​ទាំង​នេះ​នឹង​បណ្ដាល​ឲ្យ​ពួកវា​ចែករំលែក​ធាតុតែ​មួយ​នៅ​ក្នុង​បញ្ជីមិត្តភក្ដិ ហើយ​ប្រើ​បង្អួច​សន្ទនា​តែ​"
+"មួយ ។ អ្នកអាច​បំបែក​ពួកវា​ម្ដង​ទៀត ដោយ​ជ្រើស 'ពង្រីក' ពី​ម៉ឺនុយ​បរិបទ​របស់ទំនាក់ទំនង"
+
+msgid "Please update the necessary fields."
+msgstr "សូម​ធ្វើ​ឲ្យ​វាល​ដែល​ចាំបាច់ទាន់សម័យ ។"
+
+msgid "Room _List"
+msgstr "បញ្ជី​បន្ទប់"
+
+msgid ""
+"Please enter the appropriate information about the chat you would like to "
+"join.\n"
+msgstr "សូម​បញ្ចូល​ព័ត៌មាន​ដេល​សមរម្យ​អំពីការជជែក​ដែល​នឹង​ចូលរួម ។\n"
+
+msgid "_Account:"
+msgstr "គណនី ៖"
+
+msgid "_Block"
+msgstr "ទប់ស្កាត់"
+
+msgid "Un_block"
+msgstr "មិន​ទប់ស្កាត់"
+
+msgid "Move to"
+msgstr "ផ្លាស់ទី​ទៅ"
+
+msgid "Get _Info"
+msgstr "យក​ព័ត៌មាន"
+
+msgid "I_M"
+msgstr "IM"
+
+msgid "_Send File..."
+msgstr "ផ្ញើ​ឯកសារ..."
+
+msgid "Add Buddy _Pounce..."
+msgstr "បន្ថែម​ក្រុម​មិត្តភក្ដិ..."
+
+msgid "View _Log"
+msgstr "កំណត់​ហេតុ​មើល"
+
+msgid "Hide when offline"
+msgstr "លាក់​នៅពេល​នៅ​ក្រៅបណ្ដាញ"
+
+msgid "_Alias..."
+msgstr "ឈ្មោះ​ក្លែងក្លាយ..."
+
+msgid "_Remove"
+msgstr "យក​ចេញ"
+
+msgid "Set Custom Icon"
+msgstr "កំណត់​រូបតំណាង​ផ្ទាល់ខ្លួន"
+
+msgid "Remove Custom Icon"
+msgstr "យក​រូបតំណាង​ផ្ទាល់ខ្លួន​ចេញ"
+
+msgid "Add _Buddy..."
+msgstr "បន្ថែម​មិត្តភក្ដិ..."
+
+msgid "Add C_hat..."
+msgstr "បន្ថែមការ​ជជែក..."
+
+msgid "_Delete Group"
+msgstr "លុបក្រុម"
+
+msgid "_Rename"
+msgstr "ប្តូរ​​ឈ្មោះ​"
+
+#. join button
+msgid "_Join"
+msgstr "ចូលរួម"
+
+msgid "Auto-Join"
+msgstr "ចូល​ដោយ​ស្វ័យ​ប្រវត្តិ"
+
+msgid "Persistent"
+msgstr "មិនព្រម"
+
+msgid "_Edit Settings..."
+msgstr "កែសម្រួល​ការ​កំណត់..."
+
+msgid "_Collapse"
+msgstr "វេញ"
+
+msgid "_Expand"
+msgstr "ពង្រីក"
+
+msgid "/Tools/Mute Sounds"
+msgstr "/ឧបករណ៍/ស្ងាត់"
+
+msgid ""
+"You are not currently signed on with an account that can add that buddy."
+msgstr "អ្នកបច្ចុប្បន្នមិន​ត្រូវ​បានចូល​ដោយ​ប្រើ​គណនី​ដែលអាច​បន្ថែម​មិត្តភក្ដិ​នោះ​ទេ ។"
+
+#. I don't believe this can happen currently, I think
+#. * everything that calls this function checks for one of the
+#. * above node types first.
+msgid "Unknown node type"
+msgstr "មិនស្គាល់ប្រភេទ​ថ្នាំង"
+
+#. Buddies menu
+msgid "/_Buddies"
+msgstr "/មិត្តភក្ដិ"
+
+msgid "/Buddies/New Instant _Message..."
+msgstr "/មិត្តភក្ដិ/សារ​បន្ទាន់​ថ្មី..."
+
+msgid "/Buddies/Join a _Chat..."
+msgstr "/មិត្តភក្ដិ/ចូលរួម​ក្នុងកា​រជជែក..."
+
+msgid "/Buddies/Get User _Info..."
+msgstr "/មិត្តភក្ដិ/យក​ព័ត៌មាន​អ្នកប្រើ..."
+
+msgid "/Buddies/View User _Log..."
+msgstr "/មិត្តភក្ដិ/មើល​កំណត់​ហេតុ​អ្នក​ប្រើ..."
+
+msgid "/Buddies/Sh_ow"
+msgstr "/មិត្តភក្ដិ/បង្ហាញ"
+
+msgid "/Buddies/Show/_Offline Buddies"
+msgstr "/មិត្តភក្ដិ/បង្ហាញ/មិត្តភក្ដិក្រៅ​បណ្ដាញ"
+
+msgid "/Buddies/Show/_Empty Groups"
+msgstr "/មិត្តភក្ដិ/បង្ហាញ/ក្រុម​ទទេ"
+
+msgid "/Buddies/Show/Buddy _Details"
+msgstr "/មិត្តភក្ដិ/បង្ហាញ/សេចក្ដី​លម្អិត​មិត្តភក្ដិ"
+
+msgid "/Buddies/Show/Idle _Times"
+msgstr "/មិត្តភក្ដិ/បង្ហាញ/ពេលវេលា​ទំនេរ"
+
+msgid "/Buddies/Show/_Protocol Icons"
+msgstr "/មិត្តភក្ដិ/បង្ហាញ/រូបតំណាង​ពិធីការ"
+
+msgid "/Buddies/_Sort Buddies"
+msgstr "/មិត្តភក្ដិ/តម្រៀប​មិត្តភក្ដិ"
+
+msgid "/Buddies/_Add Buddy..."
+msgstr "/មិត្តភក្ដិ/បន្ថែម​មិត្តភក្ដិ..."
+
+msgid "/Buddies/Add C_hat..."
+msgstr "/មិត្តភក្ដិ/បន្ថែម​ការ​ជជែក..."
+
+msgid "/Buddies/Add _Group..."
+msgstr "/មិត្តភក្ដិ/បន្ថែម​ក្រុម..."
+
+msgid "/Buddies/_Quit"
+msgstr "/មិត្តភក្ដិ/ចេញ"
+
+#. Accounts menu
+msgid "/_Accounts"
+msgstr "/គណនី"
+
+msgid "/Accounts/Manage Accounts"
+msgstr "/គណនី/គ្រប់គ្រង​គណនី"
+
+#. Tools
+msgid "/_Tools"
+msgstr "/ឧបករណ៍"
+
+msgid "/Tools/Buddy _Pounces"
+msgstr "/ឧបករណ៍/ក្រុមមិត្តភក្ដិ"
+
+msgid "/Tools/_Certificates"
+msgstr "/ឧបករណ៍/វិញ្ញាបនបត្រ"
+
+msgid "/Tools/Plu_gins"
+msgstr "/ឧបករណ៍/កម្មវិធី​ជំនួយ"
+
+msgid "/Tools/Pr_eferences"
+msgstr "/ឧបករណ៍/ចំណូល​ចិត្ត"
+
+msgid "/Tools/Pr_ivacy"
+msgstr "/ឧបករណ៍/ភាព​ឯកជន"
+
+msgid "/Tools/Smile_y"
+msgstr "/ឧបករណ៍/សញ្ញាណ​អារម្មណ៍"
+
+msgid "/Tools/_File Transfers"
+msgstr "/ឧបករណ៍/ការ​ផ្ទេរ​ឯកសារ"
+
+msgid "/Tools/R_oom List"
+msgstr "/ឧបករណ៍/បញ្ជី​បន្ទប់"
+
+msgid "/Tools/System _Log"
+msgstr "/ឧបករណ៍/កំណត់ហេតុ​ប្រព័ន្ធ"
+
+msgid "/Tools/Mute _Sounds"
+msgstr "/ឧបករណ៍/ស្ងាត់"
+
+#. Help
+msgid "/_Help"
+msgstr "/ជំនួយ"
+
+msgid "/Help/Online _Help"
+msgstr "/ជំនួយ/ជំនួយ​លើ​បណ្ដាញ"
+
+msgid "/Help/_Debug Window"
+msgstr "/ជំនួយ/បង្អួច​បំបាត់​កំហុស"
+
+msgid "/Help/_About"
+msgstr "/ជំនួយ/អំពី"
+
+#, c-format
+msgid "<b>Account:</b> %s"
+msgstr "<b>គណនី ៖</b> %s"
+
+#, c-format
+msgid ""
+"\n"
+"<b>Occupants:</b> %d"
+msgstr ""
+"\n"
+"<b>មុខរបរ ៖</b> %d"
+
+#, c-format
+msgid ""
+"\n"
+"<b>Topic:</b> %s"
+msgstr ""
+"\n"
+"<b>ប្រធានបទ ៖</b> %s"
+
+msgid "(no topic set)"
+msgstr "(គ្មានប្រធានបទ​បានកំណត់​ទេ)"
+
+msgid "Buddy Alias"
+msgstr "ឈ្មោះ​ក្លែង​ក្លាយ​មិត្តភក្ដិ"
+
+msgid "Logged In"
+msgstr "បាន​ចូល"
+
+msgid "Last Seen"
+msgstr "បានឃើញ​ចុងក្រោយ"
+
+msgid "Spooky"
+msgstr "ធ្វើ​ឲ្យ​ឈឺ"
+
+msgid "Awesome"
+msgstr "ខ្លាច"
+
+msgid "Rockin'"
+msgstr "Rockin'"
+
+msgid "Total Buddies"
+msgstr "មិត្តភក្ដិ​សរុប"
+
+#, c-format
+msgid "Idle %dd %dh %02dm"
+msgstr "ទំនេរ %dd %dh %02dm"
+
+#, c-format
+msgid "Idle %dh %02dm"
+msgstr "ទំនេរ %dh %02dm"
+
+#, c-format
+msgid "Idle %dm"
+msgstr "ទំនេរ %dm"
+
+msgid "/Buddies/New Instant Message..."
+msgstr "/មិត្តភក្ដិ/សារ​បន្ទាន់​ថ្មី..."
+
+msgid "/Buddies/Join a Chat..."
+msgstr "/មិត្តភក្ដិ/ចូលរួម​ក្នុងកា​រជជែក..."
+
+msgid "/Buddies/Get User Info..."
+msgstr "/មិត្តភក្ដិ/យក​ព័ត៌មាន​អ្នកប្រើ..."
+
+msgid "/Buddies/Add Buddy..."
+msgstr "/មិត្តភក្ដិ/បន្ថែម​មិត្តភក្ដិ..."
+
+msgid "/Buddies/Add Chat..."
+msgstr "/មិត្តភក្ដិ/បន្ថែម​ការ​ជជែក..."
+
+msgid "/Buddies/Add Group..."
+msgstr "/មិត្តភក្ដិ/បន្ថែម​ក្រុម..."
+
+msgid "/Tools/Privacy"
+msgstr "/ឧបករណ៍/ភាព​ឯកជន"
+
+msgid "/Tools/Room List"
+msgstr "/ឧបករណ៍/បញ្ជី​បន្ទប់"
+
+#, c-format
+msgid "%d unread message from %s\n"
+msgid_plural "%d unread messages from %s\n"
+msgstr[0] "សារ​មិនអាន %d ពី %s\n"
+
+msgid "Manually"
+msgstr "ដោយដៃ"
+
+msgid "By status"
+msgstr "តាម​ស្ថានភាព"
+
+msgid "By log size"
+msgstr "តាម​ទំហំ​កំណត់ហេតុ"
+
+#, c-format
+msgid "%s disconnected"
+msgstr "បាន​ផ្ដាច់ %s"
+
+#, c-format
+msgid "%s disabled"
+msgstr "បានបិទ %s"
+
+msgid "Reconnect"
+msgstr "តភ្ជាប់​ឡើង​វិញ"
+
+msgid "Re-enable"
+msgstr "បើក​ឡើង​វិញ"
+
+msgid "Welcome back!"
+msgstr "សូម​ស្វាគមន៍ការ​​ត្រឡប់​មក​វិញ !"
+
+#, c-format
+msgid "%d account was disabled because you signed on from another location:"
+msgid_plural ""
+"%d accounts were disabled because you signed on from another location:"
+msgstr[0] "គណនី %d ត្រូវ​បាន​បិទ​ ពីព្រោះ​អ្នក​បានចូល​ពី​ទីតាំង​ផ្សេរ ៖"
+
+msgid "<b>Username:</b>"
+msgstr "<b> ឈ្មោះ​អ្នក​ប្រើ ៖</b>"
+
+msgid "<b>Password:</b>"
+msgstr "<b>ពាក្យ​សម្ងាត់ ៖</b>"
+
+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 ""
+"<span weight='bold' size='larger'>សូម​ស្វាគមន៍​មក​កាន់ %s !</span>\n"
+"\n"
+"អ្នក​​គ្មាន​គណនី​បាន​បើក​ទេ ។ បើកគណនី IM របស់​អ្នកពី​បង្អួច <b>គណនី</b> នៅ <b>គណនី->គ្រប់គ្រង​គណនី</"
+"b> ។ នៅពេល​អ្នកបើក​គណនី អ្នក​នឹង​អាច​ចូល កំណត់​ស្ថានភាព​របស់​អ្នក ហើយ​និយាយាជា​មួយមិត្តភក្ដិ ។"
+
+#. set the Show Offline Buddies option. must be done
+#. * after the treeview or faceprint gets mad. -Robot101
+#.
+msgid "/Buddies/Show/Offline Buddies"
+msgstr "/មិត្តភក្ដិ/បង្ហាញ/មិត្តភក្ដិ​ក្រៅ​បណ្ដាញ"
+
+msgid "/Buddies/Show/Empty Groups"
+msgstr "/មិត្តភក្ដិ/បង្ហាញ/ក្រុម​ទទេ"
+
+msgid "/Buddies/Show/Buddy Details"
+msgstr "/មិត្តភក្ដិ/បង្ហាញ​/សេចក្ដី​លម្អិត​របស់មិត្តភក្ដិ"
+
+msgid "/Buddies/Show/Idle Times"
+msgstr "/មិត្តភក្ដិ/បង្ហាញ/ពេលវេលា​ទំនេរ"
+
+msgid "/Buddies/Show/Protocol Icons"
+msgstr "/មិត្តភក្ដិ/បង្ហាញ/រូបតំណាង​ពិធីការ"
+
+msgid "Add a buddy.\n"
+msgstr "បន្ថែម​មិត្តភក្ដិ ។\n"
+
+msgid "Buddy's _username:"
+msgstr "ឈ្មោះ​អ្នក​ប្រើ​របស់​មិត្តភក្ដិ ៖"
+
+msgid "(Optional) A_lias:"
+msgstr "ឈ្មោះ​ក្លែងក្លាយ (ជម្រើស) ៖"
+
+msgid "Add buddy to _group:"
+msgstr "បន្ថែម​មិត្តភក្ដិ​ទៅ​ក្រុម ៖ "
+
+msgid "This protocol does not support chat rooms."
+msgstr "ពិធីការ​នេះ​មិន​គាំទ្រ​បន្ទប់​ជជែក​នេះ​ទេ ។"
+
+msgid ""
+"You are not currently signed on with any protocols that have the ability to "
+"chat."
+msgstr "អ្នក​បច្ចុប្បន្ន​មិន​បានចូល​ជា​មួយ​ពិធីការ​​ណាមួយ​ដែល​មាន​លទ្ធភាព​ជជែក ។"
+
+msgid ""
+"Please enter an alias, and the appropriate information about the chat you "
+"would like to add to your buddy list.\n"
+msgstr ""
+"សូម​បញ្ចូល​ឈ្មោះ​ក្លែងក្លាយ និង​ព័ត៌មាន​ដែល​សមរម្យ​អំពី​ការជជែក ដែល​អ្នកចង់​បន្ថែម​ទៅបញ្ជីមិត្តភក្ដិ​របស់​អ្នក "
+"។\n"
+
+msgid "A_lias:"
+msgstr "ឈ្មោះ​ក្លែងក្លាយ ៖"
+
+msgid "Auto_join when account becomes online."
+msgstr "ចូល​ដោយ​ស្វ័យ​ប្រវត្តិ​ នៅពេល​គណនី​ក្លាយ​ជា​នៅ​លើ​បណ្ដាញ ។"
+
+msgid "_Remain in chat after window is closed."
+msgstr "នៅ​ក្នុង​ការជជែក​បន្ទាប់​ពី​បង្អួច​ត្រូវ​បានបិទ ។"
+
+msgid "Please enter the name of the group to be added."
+msgstr "សូម​បញ្ចូល​ឈ្មោះ​របស​ក្រុម​ដែល​ត្រូ​វ​បន្ថែម ។"
+
+msgid "Enable Account"
+msgstr "បើក​គណនី"
+
+msgid "<PurpleMain>/Accounts/Enable Account"
+msgstr "<PurpleMain>/គណនី/បើក​គណនី"
+
+msgid "<PurpleMain>/Accounts/"
+msgstr "<PurpleMain>/គណនី/"
+
+msgid "_Edit Account"
+msgstr "កែសម្រួល​គណនី"
+
+msgid "No actions available"
+msgstr "គ្មាន​សកម្មភាព"
+
+msgid "_Disable"
+msgstr "បិទ"
+
+msgid "/Tools"
+msgstr "/ឧបករណ៍"
+
+msgid "/Buddies/Sort Buddies"
+msgstr "/មិត្តភក្ដិ/តម្រៀប​មិត្តភក្ដិ"
+
+#. Widget creation function
+msgid "SSL Servers"
+msgstr "ម៉ាស៊ីនបម្រើស SSL"
+
+msgid "Unknown command."
+msgstr "មិនស្គាល់​ពាក្យ​បញ្ជា ។"
+
+msgid "That buddy is not on the same protocol as this chat."
+msgstr "មិត្តភក្ដិនេះ​មិន​នៅ​លើ​ពិធីការ​ដដែល​ដូច​ម៉ាស៊ីន​ភ្ញៀវ​នេះ​ទេ ។"
+
+msgid ""
+"You are not currently signed on with an account that can invite that buddy."
+msgstr "អ្នកបច្ចុប្បន្នមិនបាន​ចូល​ដោយ​ប្រើ​គណនី​ ដែល​អាចអញ្ជើញ​មិត្តភក្ដិ​នោះ​ទេ ។"
+
+msgid "Invite Buddy Into Chat Room"
+msgstr "អញ្ជើញ​មិត្តភក្ដិ​ទៅ​ក្នុង​បន្ទប់​ជជែក"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr "សូម​បញ្ចូល​ឈ្មោះ​របស់​អ្នកប្រើ​ដែល​អ្នក​ចង់​អញ្ជើញ រួម​ជា​មួយ​នឹង​សារ​អញ្ជើញ​ជា​ជម្រើស ។"
+
+msgid "_Buddy:"
+msgstr "មិត្តភក្ដិ ៖"
+
+msgid "_Message:"
+msgstr "សារ ៖"
+
+#, c-format
+msgid "<h1>Conversation with %s</h1>\n"
+msgstr "<h1>សន្ទនា​ជា​មួយ %s</h1>\n"
+
+msgid "Save Conversation"
+msgstr "រក្សា​​ទុក​​​ការ​សន្ទនា"
+
+msgid "Find"
+msgstr "រក"
+
+msgid "_Search for:"
+msgstr "ស្វែងរក ៖"
+
+msgid "Un-Ignore"
+msgstr "​អើពើ"
+
+msgid "Ignore"
+msgstr "មិន​អើពើ"
+
+msgid "Get Away Message"
+msgstr "យក​សារ​ចាកឆ្ងាយ"
+
+msgid "Last said"
+msgstr "បាន​និយាយ​ចុង​ក្រោយ"
+
+msgid "Unable to save icon file to disk."
+msgstr "មិនអាច​រក្សាទុក​ឯកសារ​​រូបតំណាង​ទៅ​ថាស​បានទេ ។"
+
+msgid "Save Icon"
+msgstr "រក្សា​​ទុក​​​រូបតំណាង"
+
+msgid "Animate"
+msgstr "ចលនា"
+
+msgid "Hide Icon"
+msgstr "លាក់​​រូបតំណាង"
+
+msgid "Save Icon As..."
+msgstr "រក្សា​​ទុក​​​រូបតំណាង​ជា..."
+
+msgid "Set Custom Icon..."
+msgstr "កំណត់​រូបតំណាង​ផ្ទាល់ខ្លួន..."
+
+msgid "Change Size"
+msgstr "ផ្លាស់ប្ដូរ​ទំហំ"
+
+msgid "Show All"
+msgstr "បង្ហាញ​ទាំងអស់"
+
+#. Conversation menu
+msgid "/_Conversation"
+msgstr "/សន្ទនា"
+
+msgid "/Conversation/New Instant _Message..."
+msgstr "/សន្ទនា/សារ​បន្ទាន់​ថ្មី..."
+
+msgid "/Conversation/_Find..."
+msgstr "/សន្ទនា/រក..."
+
+msgid "/Conversation/View _Log"
+msgstr "/សន្ទនា/មើល​កំណត់​ហេតុ"
+
+msgid "/Conversation/_Save As..."
+msgstr "/សន្ទនា/រក្សាទុកជា..."
+
+msgid "/Conversation/Clea_r Scrollback"
+msgstr "/សន្ទនា/ជំម្រះ"
+
+msgid "/Conversation/Se_nd File..."
+msgstr "/សន្ទនា/ផ្ញើ​ឯកសារ..."
+
+msgid "/Conversation/Add Buddy _Pounce..."
+msgstr "/សន្ទនា/បន្ថែម​ក្រុម​មិត្តភក្ដិ..."
+
+msgid "/Conversation/_Get Info"
+msgstr "/សន្ទនា/យក​ព័ត៌មាន"
+
+msgid "/Conversation/In_vite..."
+msgstr "/សន្ទនា/អញ្ជើញ..."
+
+msgid "/Conversation/M_ore"
+msgstr "/សន្ទនា/ផ្សេងៗ​ទៀត"
+
+msgid "/Conversation/Al_ias..."
+msgstr "/សន្ទនា/ឈ្មោះ​ក្លែងក្លាយ..."
+
+msgid "/Conversation/_Block..."
+msgstr "/សន្ទនា/ទប់ស្កាត់..."
+
+msgid "/Conversation/_Unblock..."
+msgstr "/សន្ទនា/មិនទប់ស្កាត់..."
+
+msgid "/Conversation/_Add..."
+msgstr "/សន្ទនា/បន្ថែម..."
+
+msgid "/Conversation/_Remove..."
+msgstr "/សន្ទនា/យកចេញ..."
+
+msgid "/Conversation/Insert Lin_k..."
+msgstr "/សន្ទនា/បញ្ចូលតំណ..."
+
+msgid "/Conversation/Insert Imag_e..."
+msgstr "/សន្ទនា/បញ្ចូល​រូបភាព..."
+
+msgid "/Conversation/_Close"
+msgstr "/សន្ទនា/បិទ"
+
+#. Options
+msgid "/_Options"
+msgstr "/ជម្រើស"
+
+msgid "/Options/Enable _Logging"
+msgstr "/ជម្រើស/បើក​ការ​ចូល"
+
+msgid "/Options/Enable _Sounds"
+msgstr "/ជម្រើស/បើក​សំឡេង"
+
+msgid "/Options/Show Formatting _Toolbars"
+msgstr "/ជម្រើស/បង្ហាញ​របារ​ឧបករណ៍​ធ្វើទ្រង់ទ្រាយ"
+
+msgid "/Options/Show Ti_mestamps"
+msgstr "/ជម្រើស/បង្ហាញ​ត្រាពេលវេលា"
+
+msgid "/Conversation/More"
+msgstr "/សន្ទនា/ផ្សេងៗ​ទៀត"
+
+msgid "/Options"
+msgstr "/ជម្រើស​"
+
+#. The menubar has been deactivated. Make sure the 'More' submenu is regenerated next time
+#. * the 'Conversation' menu pops up.
+#. Make sure the 'Conversation -> More' menuitems are regenerated whenever
+#. * the 'Conversation' menu pops up because the entries can change after the
+#. * conversation is created.
+msgid "/Conversation"
+msgstr "/សន្ទនា"
+
+msgid "/Conversation/View Log"
+msgstr "/សន្ទនា/មើល​កំណត់​ហេតុ"
+
+msgid "/Conversation/Send File..."
+msgstr "/សន្ទនា/ផ្ញើ​ឯកសារ..."
+
+msgid "/Conversation/Add Buddy Pounce..."
+msgstr "/សន្ទនា/បន្ថែម​ក្រុម​មិត្តភក្ដិ..."
+
+msgid "/Conversation/Get Info"
+msgstr "/សន្ទនា/យក​ព័ត៌មាន"
+
+msgid "/Conversation/Invite..."
+msgstr "/សន្ទនា/អញ្ជើញ..."
+
+msgid "/Conversation/Alias..."
+msgstr "/សន្ទនា/ឈ្មោះ​ក្លែងក្លាយ..."
+
+msgid "/Conversation/Block..."
+msgstr "/សន្ទនា/ទប់ស្កាត់..."
+
+msgid "/Conversation/Unblock..."
+msgstr "/សន្ទនា/មិនទប់ស្កាត់..."
+
+msgid "/Conversation/Add..."
+msgstr "/សន្ទនា/បន្ថែម..."
+
+msgid "/Conversation/Remove..."
+msgstr "/សន្ទនា/យកចេញ..."
+
+msgid "/Conversation/Insert Link..."
+msgstr "/សន្ទនា/បញ្ចូល​តំណ..."
+
+msgid "/Conversation/Insert Image..."
+msgstr "/សន្ទនា/បញ្ចូលរូបភាព..."
+
+msgid "/Options/Enable Logging"
+msgstr "/ជម្រើស/បើក​ការ​ចូល"
+
+msgid "/Options/Enable Sounds"
+msgstr "/ជម្រើស/បើក​សំឡេង"
+
+msgid "/Options/Show Formatting Toolbars"
+msgstr "/ជម្រើស/បង្ហាញ​របារ​ឧបករណ៍​ធ្វើ​ទ្រង់ទ្រាយ"
+
+msgid "/Options/Show Timestamps"
+msgstr "/ជម្រើស​/បង្ហាញ​ត្រាពេលវេលា"
+
+msgid "User is typing..."
+msgstr "អ្នកប្រើ​កំពុង​វាយ..."
+
+#, c-format
+msgid ""
+"\n"
+"%s has stopped typing"
+msgstr ""
+"\n"
+"%s បានឈប់​វាយ"
+
+#. Build the Send To menu
+msgid "S_end To"
+msgstr "ផ្ញើ​ទៅ"
+
+msgid "_Send"
+msgstr "ផ្ញើ"
+
+#. Setup the label telling how many people are in the room.
+msgid "0 people in room"
+msgstr "គ្មានមនុស្ស​នៅ​ក្នុង​បន្ទប់​ទេ"
+
+#, c-format
+msgid "%d person in room"
+msgid_plural "%d people in room"
+msgstr[0] "មនុស្ស %d នៅ​ក្នុង​បន្ទប់"
+
+msgid "Typing"
+msgstr "វាយ"
+
+msgid "Stopped Typing"
+msgstr "ឈប់​វាយ"
+
+msgid "Nick Said"
+msgstr "សម្មតិនាម​បាន​និយាយ"
+
+msgid "Unread Messages"
+msgstr "សារ​មិន​បានអាន"
+
+msgid "New Event"
+msgstr "ព្រឹត្តិការណ៍​ថ្មី"
+
+msgid "clear: Clears all conversation scrollbacks."
+msgstr "ជម្រះ ៖ ជម្រះ​ការ​សន្ទនា​ទាំង​អស់ ។"
+
+msgid "Confirm close"
+msgstr "អះអាង​ការ​បិទ"
+
+msgid "You have unread messages. Are you sure you want to close the window?"
+msgstr "អ្នកមាន​សារ​មិនទាន់អាន ។ តើអ្នក​ប្រាកដ​ជា​ចង់​បិទ​បង្អួច​នេះ​ឬ ?"
+
+msgid "Close other tabs"
+msgstr "បិទ​ផ្ទាំង​ផ្សេងៗ​ទៀត"
+
+msgid "Close all tabs"
+msgstr "បិទ​ផ្ទាំង​ទាំង​អស់"
+
+msgid "Detach this tab"
+msgstr "ផ្ដាច់​ផ្ទាំង​នេះ"
+
+msgid "Close this tab"
+msgstr "បិទ​​ផ្ទាំង​នេះ"
+
+msgid "Close conversation"
+msgstr "បិទ​ការ​សន្ទនា"
+
+msgid "Last created window"
+msgstr "បង្អួច​បាន​បង្កើត​ចុងក្រោយ"
+
+msgid "Separate IM and Chat windows"
+msgstr "បំបែកបង្អួច IM និង​ជជែក"
+
+msgid "New window"
+msgstr "បង្អួច​ថ្មី"
+
+msgid "By group"
+msgstr "តាម​ក្រុម"
+
+msgid "By account"
+msgstr "តាមគណនី"
+
+msgid "Save Debug Log"
+msgstr "រក្សាទុក​កំណត់​ហេតុ​បំបាត់​កំហុស"
+
+msgid "Invert"
+msgstr "ដាក់​បញ្ច្រាស"
+
+msgid "Highlight matches"
+msgstr "បន្លិច​ការ​ផ្គូផ្គង"
+
+msgid "_Icon Only"
+msgstr "តែ​រូបតំណាង"
+
+msgid "_Text Only"
+msgstr "តែ​អត្ថបទ"
+
+msgid "_Both Icon & Text"
+msgstr "ទាំង​រូបតំណាង និង​អត្ថបទ"
+
+msgid "Filter"
+msgstr "តម្រង"
+
+msgid "Right click for more options."
+msgstr "ចុច​កណ្ដុរ​ខាង​ស្ដាំ​ដើម្បី​មើល​​ជម្រើ​សជា​ច្រើន​ទៀត ។"
+
+msgid "Level "
+msgstr "កម្រិត"
+
+msgid "Select the debug filter level."
+msgstr "ជ្រើស​កម្រិត​តម្រង​បំបាត់​កំហុស ។"
+
+msgid "All"
+msgstr "ទាំង​អស់"
+
+msgid "Misc"
+msgstr "ផ្សេងៗ"
+
+msgid "Warning"
+msgstr "ការ​ព្រមាន"
+
+msgid "Error "
+msgstr "កំហុស"
+
+msgid "Fatal Error"
+msgstr "កំហុស​ធ្ងន់ធ្ងរ"
+
+msgid "bug master"
+msgstr "កំហុស​មេ"
+
+msgid "artist"
+msgstr "សិល្បករ"
+
+#. feel free to not translate this
+msgid "Ka-Hing Cheung"
+msgstr "Ka-Hing Cheung"
+
+msgid "support"
+msgstr "គាំទ្រ"
+
+msgid "webmaster"
+msgstr "ប្រធាន​បណ្ដាញ"
+
+msgid "Senior Contributor/QA"
+msgstr "អ្នក​ចែកចាយ​ជាន់ខ្ពស់/QA"
+
+msgid "win32 port"
+msgstr "ច្រក win32"
+
+msgid "maintainer"
+msgstr "អ្នក​ថែទា"
+
+msgid "libfaim maintainer"
+msgstr "អ្នក​ថែទាំ libfaim"
+
+#. If "lazy bum" translates literally into a serious insult, use something else or omit it.
+msgid "hacker and designated driver [lazy bum]"
+msgstr "អ្នកលួច និង​កម្មវិធី​បញ្ជាដែល​បាន​ជ្រើស [អាល់ប៊ុម​កម្ជិល]"
+
+msgid "support/QA"
+msgstr "គាំទ្រ/QA"
+
+msgid "XMPP"
+msgstr "XMPP"
+
+msgid "original author"
+msgstr "អ្នកនិពន្ធ​ដើម"
+
+msgid "lead developer"
+msgstr "ប្រធាន​អ្នកអភិវឌ្ឍ"
+
+msgid "Afrikaans"
+msgstr "អាហ្វ្រីកាអាន"
+
+msgid "Arabic"
+msgstr "អារ៉ាប់"
+
+msgid "Belarusian Latin"
+msgstr "បេឡារុស្ស ឡាទីន"
+
+msgid "Bulgarian"
+msgstr "ប៊ុលហ្គារី"
+
+msgid "Bengali"
+msgstr "បេន្កាលី"
+
+msgid "Bosnian"
+msgstr "បូស្នី"
+
+msgid "Catalan"
+msgstr "កាតាឡាន"
+
+msgid "Valencian-Catalan"
+msgstr "កាតាឡាន-វ៉ាឡេនហ្សង់"
+
+msgid "Czech"
+msgstr "ឆេក"
+
+msgid "Danish"
+msgstr "ដាណឺម៉ាក"
+
+msgid "German"
+msgstr "​​អា​ល្លឺម៉ង់"
+
+msgid "Dzongkha"
+msgstr "ដុងហ្កា"
+
+msgid "Greek"
+msgstr "ក្រិក"
+
+msgid "Australian English"
+msgstr "​​​អង់គ្លេស​អូស្ត្រាលី"
+
+msgid "Canadian English"
+msgstr "​​​អង់គ្លេស​កាណាដា"
+
+msgid "British English"
+msgstr "​​​អង់គ្លេស អង់គ្លេស"
+
+msgid "Esperanto"
+msgstr "អេស្ពេរ៉ាន់តូ\t"
+
+msgid "Spanish"
+msgstr "​អេស៉្បាញ"
+
+msgid "Estonian"
+msgstr "អេស្តូនី"
+
+msgid "Euskera(Basque)"
+msgstr "អឺ​ស្កេរ៉ា (​​បាស្កេ)"
+
+msgid "Persian"
+msgstr "ប៉ឺស៊ីយ៉ាន"
+
+msgid "Finnish"
+msgstr "ហ្វាំង​ឡង់"
+
+msgid "French"
+msgstr "បារាំង"
+
+msgid "Irish"
+msgstr "អៀរឡង់"
+
+msgid "Galician"
+msgstr "ហ្គាលីស្យាន"
+
+msgid "Gujarati"
+msgstr "ហ្កុយ៉ារាទី"
+
+msgid "Gujarati Language Team"
+msgstr "ប្រធានក្រុម​ភាសា​ហ្កុយ៉ារាទី"
+
+msgid "Hebrew"
+msgstr "ហេប្រូ"
+
+msgid "Hindi"
+msgstr "ហិណ្ឌូ"
+
+msgid "Hungarian"
+msgstr "ហុងគ្រី"
+
+msgid "Indonesian"
+msgstr "ឥណ្ឌូនេស៊ី"
+
+msgid "Italian"
+msgstr "អ៊ីតាលី"
+
+msgid "Japanese"
+msgstr "ជប៉ុន"
+
+msgid "Georgian"
+msgstr "ហ្សកហ្ស៊ី"
+
+msgid "Ubuntu Georgian Translators"
+msgstr "អ្នកប្រើ​ប្រែ​​ហ្សកហ្ស៊ី​របស់​អូប៊ុនទូ"
+
+msgid "Kannada"
+msgstr "កិណាដា"
+
+msgid "Kannada Translation team"
+msgstr "ក្រុម​អ្នកបកប្រែ​ភាសា​កិណាដា"
+
+msgid "Korean"
+msgstr "កូរ៉េ"
+
+msgid "Kurdish"
+msgstr "ឃឺដ"
+
+msgid "Lao"
+msgstr "ឡាវ"
+
+msgid "Lithuanian"
+msgstr "លីទុយអានី"
+
+msgid "Macedonian"
+msgstr "​ម៉ាសេដូនី"
+
+msgid "Mongolian"
+msgstr "ម៉ុងហ្គោលី"
+
+msgid "Bokmål Norwegian"
+msgstr "ប៊ុកម៉ល​ណរវ៉េ"
+
+msgid "Nepali"
+msgstr "នេប៉ាល់"
+
+msgid "Dutch, Flemish"
+msgstr "ហុល្លង់"
+
+msgid "Norwegian Nynorsk"
+msgstr "ណរវ៉េ នីណ័រ"
+
+msgid "Occitan"
+msgstr "អុកស៊ីតង់"
+
+msgid "Punjabi"
+msgstr "ពូនយ៉ាប៊ី"
+
+msgid "Polish"
+msgstr "ប៉ូឡូញ"
+
+msgid "Portuguese"
+msgstr "ព័រទុយហ្គាល់"
+
+msgid "Portuguese-Brazil"
+msgstr "ព័រទុយហ្គាល់-ប្រេស៊ីល"
+
+msgid "Pashto"
+msgstr "ប៉ាស្តូ"
+
+msgid "Romanian"
+msgstr "រូម៉ានី"
+
+msgid "Russian"
+msgstr "រុស្ស៊ី"
+
+msgid "Slovak"
+msgstr "ស្លូវ៉ាគី"
+
+msgid "Slovenian"
+msgstr "​​​ស្លូវ៉ានី"
+
+msgid "Albanian"
+msgstr "អាល់បានី"
+
+msgid "Serbian"
+msgstr "សែប៊ី"
+
+msgid "Sinhala"
+msgstr "ស៊ីនហាលា"
+
+msgid "Swedish"
+msgstr "ស៊ុយអែដ"
+
+msgid "Tamil"
+msgstr "តាមីល"
+
+msgid "Telugu"
+msgstr "តេលូហ្គូ"
+
+msgid "Thai"
+msgstr "ថៃ"
+
+msgid "Turkish"
+msgstr "ទួរគី"
+
+msgid "Urdu"
+msgstr "​អ៊ូរ្ឌូ"
+
+msgid "Vietnamese"
+msgstr "វៀតណាម"
+
+msgid "T.M.Thanh and the Gnome-Vi Team"
+msgstr "T.M.Thanh និង​ក្រុម Gnome-Vi"
+
+msgid "Simplified Chinese"
+msgstr "ចិន​សាមញ្ញ"
+
+msgid "Hong Kong Chinese"
+msgstr "ចិន​ហុងកុង"
+
+msgid "Traditional Chinese"
+msgstr "ចិនបុរាណ"
+
+msgid "Amharic"
+msgstr "អាមហារីច"
+
+#, c-format
+msgid "About %s"
+msgstr "អំពី %s"
+
+#, c-format
+msgid ""
+"%s is a graphical modular messaging client based on libpurple which is "
+"capable of connecting to AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC, SIP/SIMPLE, "
+"Novell GroupWise, Lotus Sametime, Bonjour, Zephyr, MySpaceIM, Gadu-Gadu, and "
+"QQ all at once. It is written using GTK+.<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 គឺ​ជា​ម៉ាស៊ីន​ភ្ញៀវ​សារ​ម៉ូឌុល​ក្រាហ្វិក​​ដែល​មាន​មូលដ្ឋាន​លើ libpurple ដែល​មាន​សមត្ថភាព​តភ្ជាប់​ទៅ​កាន់ "
+"AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC, SIP/SIMPLE, Novell GroupWise, Lotus "
+"Sametime, Bonjour, Zephyr, MySpaceIM, Gadu-Gadu, and QQ ទាំង​អស់​នៅ​ពេល​តែ​មួយ ។ វា​"
+"ត្រូវ​បានសរសេរ​ដោយ​ប្រើ GTK+ ។<BR><BR>អ្នកអាចកែប្រែ និង​ចែកចាយ​ឡើង​វិញ​នូវ​កម្មវិធី​ក្រោម​លក្ខខណ្ឌ "
+"GPL (កំណែ ២ ឬ​ខ្ពស់​ជាង​នេះ) ។ ច្បាប់​ចម្លង GPL មាន​ឯកសារ 'COPYING' បាន​ចែកចាយជា​មួយ %s ។ "
+"%s ត្រូ​វបាន​រក្សាសិទ្ធិ​អ្នកចែកចាយ​របស់​ខ្លួន ។ សូម​មើល​ឯកសារ '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\">FAQ ៖</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\">ជួយ​តាមរយៈ​អ៊ីមែល ៖</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\"> ឆានែល</FONT><BR><BR>"
+
+#, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
+msgstr "<FONT SIZE=\"4\"> XMPP</FONT>devel@conference.pidgin.im<BR><BR>"
+
+msgid "Current Developers"
+msgstr "អ្នក​អភិវឌ្ឍន៍​បច្ចុប្បន្ន"
+
+msgid "Crazy Patch Writers"
+msgstr "អ្នក​សរសេរ​បំណះ​មិនល្អ"
+
+msgid "Retired Developers"
+msgstr "អ្នក​អភិវឌ្ឍន៍​ដែល​ចូល​និវត្តន៍"
+
+msgid "Retired Crazy Patch Writers"
+msgstr "អ្នក​សរសេរ​បំណះ​ដែល​ចូល​និវត្តន៍"
+
+msgid "Current Translators"
+msgstr "អ្នកបកប្រែ​បច្ចុប្បន្ន"
+
+msgid "Past Translators"
+msgstr "អ្នក​បកប្រែ​មុន"
+
+msgid "Debugging Information"
+msgstr "ព័ត៌មាន​បំបាត់​កំហុស"
+
+msgid "_Name"
+msgstr "ឈ្មោះ"
+
+msgid "_Account"
+msgstr "គណនី"
+
+msgid "Get User Info"
+msgstr "យក​ព័ត៌មាន​អ្នកប្រើ"
+
+msgid ""
+"Please enter the username or alias of the person whose info you would like "
+"to view."
+msgstr "សូម​បញ្ចូល​ឈ្មោះ​អ្នកប្រើ ឬ​ឈ្មោះ​ក្លែងក្លាយ​របស់​មនុស្ស​ដែល​អ្នក​ចង់​មើល ។"
+
+msgid "View User Log"
+msgstr "មើល​កំណត់​ហេតុ​អ្នកប្រើ​"
+
+msgid "Alias Contact"
+msgstr "ទំនាក់ទំនង​ឈ្មោះក្លែងក្លាយ"
+
+msgid "Enter an alias for this contact."
+msgstr "បញ្ចូល​ឈ្មោះ​ក្លែងក្លាយ​សម្រាប់​ទំនាក់ទំនង​នេះ ។"
+
+#, c-format
+msgid "Enter an alias for %s."
+msgstr "បញ្ចូល​ឈ្មោះ​ក្លែងក្លាយ​សម្រាប់ %s ។"
+
+msgid "Alias Buddy"
+msgstr "ឈ្មោះ​ក្លែងក្លាយ​របស់មិត្តភក្ដិ"
+
+msgid "Alias Chat"
+msgstr "ឈ្មោះ​ក្លែងក្លាយ​ក្នុងកា​រជជែក"
+
+msgid "Enter an alias for this chat."
+msgstr "បញ្ចូល​ឈ្មោះ​ក្លែងក្លាយ​សម្រាប់​ការ​ជជែក​នេះ ។"
+
+#, c-format
+msgid ""
+"You are about to remove the contact containing %s and %d other buddy from "
+"your buddy list. Do you want to continue?"
+msgid_plural ""
+"You are about to remove the contact containing %s and %d other buddies from "
+"your buddy list. Do you want to continue?"
+msgstr[0] ""
+"អ្នក​រៀប​នឹង​យក​​​​ទំនាក់ទំនង​មិត្តភក្ដិ​ផ្សេង​​ដែល​មាន %s និង %d ចេញពី​បញ្ជីមិត្តភក្ដិ​របស់អ្នក ។ តើ​អ្នក​ចង់​បន្ត​"
+"ដែរឬទេ ?"
+
+msgid "Remove Contact"
+msgstr "យក​​ទំនាក់ទំនង​ចេញ"
+
+msgid "_Remove Contact"
+msgstr "យក​ទំនាក់ទំនង​ចេញ"
+
+#, c-format
+msgid ""
+"You are about to merge the group called %s into the group called %s. Do you "
+"want to continue?"
+msgstr "អ្នករៀប​នឹង​បញ្ចូល​ក្រុម​ដែល​ហៅ​ថា %s ចូល​គ្នា​ទៅ​ក្នុង​ក្រុម​ដែលហៅ​ថា %s ។ តើ​អ្នក​ចង់​បន្ត​ដែរឬទេ ?"
+
+msgid "Merge Groups"
+msgstr "បញ្ចូល​ក្រុម​ចូលគ្នា"
+
+msgid "_Merge Groups"
+msgstr "បញ្ចូល​ក្រុម​ចូលគ្នា"
+
+#, c-format
+msgid ""
+"You are about to remove the group %s and all its members from your buddy "
+"list. Do you want to continue?"
+msgstr ""
+"អ្នក​រៀបនឹង​យក​ក្រុម​ដែល %s ចេញ ហើយ​សមាជិករបស់​វា​ទាំងអស់​ពី​បញ្ជីមិត្តភក្ដិ ។ តើ​អ្នក​ចង់​បន្តដែរឬទេ ?"
+
+msgid "Remove Group"
+msgstr "យក​​ក្រុម​ចេញ"
+
+msgid "_Remove Group"
+msgstr "យក​ក្រុម​ចេញ"
+
+#, c-format
+msgid ""
+"You are about to remove %s from your buddy list. Do you want to continue?"
+msgstr "អ្នក​រៀបនឹង​យក %s ពី​បញ្ជីមិត្តភក្ដិ​របស់​អ្នក ។ តើ​អ្នកចង់​បន្ត​ដែរឬទេ ?"
+
+msgid "Remove Buddy"
+msgstr "យក​​មិត្តភក្ដិ​ចេញ"
+
+msgid "_Remove Buddy"
+msgstr "យក​​មិត្តភក្ដិ​ចេញ"
+
+#, c-format
+msgid ""
+"You are about to remove the chat %s from your buddy list. Do you want to "
+"continue?"
+msgstr "អ្នក​រៀបនឹង​យក​ការ​ជជែក %s ចេញពី​​បញ្ជី​មិត្តភក្ដិ​របស់​អ្នក ។ តើ​អ្នកចង់​បន្តដែរឬទេ ?"
+
+msgid "Remove Chat"
+msgstr "យក​​កា​រជជែក​ចេញ"
+
+msgid "_Remove Chat"
+msgstr "យក​​ការ​ជជែក​ចេញ"
+
+msgid "Right-click for more unread messages...\n"
+msgstr "ចុច​កណ្ដុរ​ស្ដាំ​ដើម្បី​មើលសារ​​មិនទាន់អាន​បន្ថែម​ទៀត...\n"
+
+msgid "_Change Status"
+msgstr "ផ្លាស់ប្ដូរ​ស្ថានភាព"
+
+msgid "Show Buddy _List"
+msgstr "បង្ហាញ​បញ្ជីមិត្តភក្ដិ"
+
+msgid "_Unread Messages"
+msgstr "សារ​មិនទាន់អាន"
+
+msgid "New _Message..."
+msgstr "សារ​ថ្មី..."
+
+msgid "_Accounts"
+msgstr "គណនី"
+
+msgid "Plu_gins"
+msgstr "កម្មវិធី​ជំនួយ"
+
+msgid "Pr_eferences"
+msgstr "ចំណូល​ចិត្ត"
+
+msgid "Mute _Sounds"
+msgstr "ស្ងាត់"
+
+msgid "_Blink on New Message"
+msgstr "លោត​ភ្លឹបភ្លែង​នៅពេល​មាន​សារ​ថ្មី"
+
+msgid "_Quit"
+msgstr "ចេញ"
+
+msgid "Not started"
+msgstr "មិន​បានចាប់ផ្ដើម​ទេ"
+
+msgid "<b>Receiving As:</b>"
+msgstr "<b>ទទួល​ជា ៖</b>"
+
+msgid "<b>Receiving From:</b>"
+msgstr "<b>ទទួល​ពីរ ៖</b>"
+
+msgid "<b>Sending To:</b>"
+msgstr "<b>ផ្ញើ​ទៅ ៖</b>"
+
+msgid "<b>Sending As:</b>"
+msgstr "<b>ផ្ញើជា ៖</b>"
+
+msgid "There is no application configured to open this type of file."
+msgstr "គ្មាន​កម្មវិធី​បានកំណត់​រចនាសម្ព័ន្ធទេ ដើម្បីបើក​ឯកសារ​ប្រភេទ​នេះ ។"
+
+msgid "An error occurred while opening the file."
+msgstr "កំហុស​មួយ​បានកើត​ឡើង​ខណៈពេល​បើក​ឯកសារ ។"
+
+#, c-format
+msgid "Error launching %s: %s"
+msgstr "កំហុស​ក្នុងកា​រចាប់ផ្ដើម %s: %s"
+
+#, c-format
+msgid "Error running %s"
+msgstr "កំហុស​ក្នុងការ %s"
+
+#, c-format
+msgid "Process returned error code %d"
+msgstr "ដំណើរការ​បានត្រឡប់កូដ​កំហុស %d"
+
+msgid "Filename:"
+msgstr "ឈ្មោះ​ឯកសារ ៖"
+
+msgid "Local File:"
+msgstr "ឯកសារ​មូលដ្ឋាន ៖"
+
+msgid "Speed:"
+msgstr "ល្បឿន ៖"
+
+msgid "Time Elapsed:"
+msgstr "ពេល​វេលា​​កន្លង​ទៅ ៖"
+
+msgid "Time Remaining:"
+msgstr "ពេល​វេលា​​នៅ​សល់ ៖"
+
+msgid "Close this window when all transfers _finish"
+msgstr "បិទ​បង្អួច​នេះ​នៅពេល​កា​រផ្ទេរ​ទាំងអស់​ចប់"
+
+msgid "C_lear finished transfers"
+msgstr "ជម្រះ​ការ​ផ្ទេរ​ដែលចប់"
+
+#. "Download Details" arrow
+msgid "File transfer _details"
+msgstr "សេចក្ដីលម្អិត​ការ​ផ្ទេរ​ឯកសារ"
+
+#. Pause button
+msgid "_Pause"
+msgstr "ផ្អាក"
+
+#. Resume button
+msgid "_Resume"
+msgstr "បន្ត"
+
+msgid "Paste as Plain _Text"
+msgstr "បិទភ្ជាប់​ជា​អត្ថបទ​ធម្មតា"
+
+msgid "_Reset formatting"
+msgstr "កំណត់​ការ​ធ្វើ​ទ្រង់ទ្រាយ​ឡើង​វិញ"
+
+msgid "Disable _smileys in selected text"
+msgstr "បិទ​សញ្ញាណអារម្មណ៍​នៅ​ក្នុងអត្ថបទ​ដែលបានជ្រើស"
+
+msgid "Hyperlink color"
+msgstr "ពណ៌​តំណខ្ពស់"
+
+msgid "Color to draw hyperlinks."
+msgstr "ពណ៌​ត្រូវគូ​តំណខ្ពស់ ។"
+
+msgid "Hyperlink visited color"
+msgstr "ពណ៌ដែល​បាន​ទស្សនា​តំណខ្ពស់"
+
+msgid "Color to draw hyperlinks after it has been visited (or activated)."
+msgstr "ពណ៌​ត្រូវគូ​តំណខ្ពស់​បន្ទាប់ពី​វា​ត្រូវ​បានទស្សនា (ឬ​ធ្វើ​ឲ្យ​សកម្ម) ។"
+
+msgid "Hyperlink prelight color"
+msgstr "ពណ៌​ពន្លឺ​មុន​តំណខ្ពស់"
+
+msgid "Color to draw hyperlinks when mouse is over them."
+msgstr "ពណ៌​ត្រូវ​គូ​តំណខ្ពស់​នៅពេល​ដាក់​កណ្ដុរ​លើ​ពួកវា ។"
+
+msgid "Sent Message Name Color"
+msgstr "បានផ្ញើ​ពណ៌​ឈ្មោះ​សារ"
+
+msgid "Color to draw the name of a message you sent."
+msgstr "ពណ៌​ត្រូវ​គូរ​ឈ្មោះ​សារ​ដែលអ្នកបានផ្ញើ ។"
+
+msgid "Received Message Name Color"
+msgstr "បាន​ទទួល​ពណ៌​ឈ្មោះ​សារ"
+
+msgid "Color to draw the name of a message you received."
+msgstr "ពណ៌​ត្រូវគូរ​ឈ្មោះ​សារ​ដែលអ្នកបានទទួល ។"
+
+msgid "\"Attention\" Name Color"
+msgstr "\"ប្រយ័ត្ន\" ពណ៌​ឈ្មោះ"
+
+msgid "Color to draw the name of a message you received containing your name."
+msgstr "ពណ៌​ត្រូវ​គូរ​ឈ្មោះ​សារ​ដែល​អ្នកបានទទួល មានឈ្មោះរបស់​អ្នក ។"
+
+msgid "Action Message Name Color"
+msgstr "សកម្មភាព​​ពណ៌​ឈ្មោះ​សារ​"
+
+msgid "Color to draw the name of an action message."
+msgstr "ពណ៌​ត្រូវគូរ​ឈ្មោះ​សារ​សកម្មភាព ។"
+
+msgid "Action Message Name Color for Whispered Message"
+msgstr "សកម្មភាព​ពណ៌​ឈ្មោះ​សារ​​សម្រាប់​សារ​ដែល​ខ្សឹប"
+
+msgid "Whisper Message Name Color"
+msgstr "ពណ៌​ឈ្មោះ​សារ​ខ្សឹប"
+
+msgid "Typing notification color"
+msgstr "វាយ​ពណ៌​ជូនដំណឹង"
+
+msgid "The color to use for the typing notification font"
+msgstr "ពណ៌​ត្រូវ​ប្រើ​ដើម្បីវាយ​ពុម្ពអក្សរ​ជូនដំណឹង"
+
+msgid "Typing notification font"
+msgstr "វាយ​ពុម្ពអក្សរ​ជូនដំណឹង"
+
+msgid "The font to use for the typing notification"
+msgstr "ពុម្ពអក្សរ​ត្រូវ​ប្រើ​សម្រាប់វាយ​ការ​ជូនដំណឹង"
+
+msgid "Enable typing notification"
+msgstr "អនុញ្ញាត​វាយ​ការជូនដំណឹង"
+
+msgid "_Copy Email Address"
+msgstr "ចម្លង​អាសយដ្ឋាន​អ៊ីមែល"
+
+msgid "_Open Link in Browser"
+msgstr "បើក​តំណ​នៅ​ក្នុង​កម្មវិធីរុករក"
+
+msgid "_Copy Link Location"
+msgstr "ចម្លង​ទីតាំង​តំណ"
+
+msgid ""
+"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
+"\n"
+"Defaulting to PNG."
+msgstr ""
+"<span size='larger' weight='bold'>មិនស្គាល់​ប្រភេទ​ឯកសារ</span>\n"
+"\n"
+"កំណត់​លំនាំដើម​ទៅ PNG ។"
+
+msgid ""
+"Unrecognized file type\n"
+"\n"
+"Defaulting to PNG."
+msgstr ""
+"ប្រភេទសារ​ដែល​មិនស្គាល់\n"
+"\n"
+"កំណត់​លំនាំដើម​ទៅ PNG ។"
+
+#, c-format
+msgid ""
+"<span size='larger' weight='bold'>Error saving image</span>\n"
+"\n"
+"%s"
+msgstr ""
+"<span size='larger' weight='bold'>កំហុស​ក្នុងការ​រក្សាទុក​រូបភាព</span>\n"
+"\n"
+"%s"
+
+#, c-format
+msgid ""
+"Error saving image\n"
+"\n"
+"%s"
+msgstr ""
+"កំហុស​ក្នុងការ​រក្សាទុក​រូបភាព\n"
+"\n"
+"%s"
+
+msgid "Save Image"
+msgstr "រក្សា​​ទុក​​​រូបភាព"
+
+#, c-format
+msgid "_Save Image..."
+msgstr "រក្សាទុក​រូបភាព..."
+
+#, c-format
+msgid "_Add Custom Smiley..."
+msgstr "បន្ថែម​សញ្ញាណ​អារម្មណ៍​ផ្ទាល់ខ្លួន..."
+
+msgid "Select Font"
+msgstr "ជ្រើស​ពុម្ព​អក្សរ"
+
+msgid "Select Text Color"
+msgstr "ជ្រើស​ពណ៌​អត្ថបទ"
+
+msgid "Select Background Color"
+msgstr "ជ្រើស​ពណ៌​ផ្ទៃ​ខាងក្រោយ"
+
+msgid "_URL"
+msgstr "URL"
+
+msgid "_Description"
+msgstr "សេចក្ដីពិពណ៌នា"
+
+msgid ""
+"Please enter the URL and description of the link that you want to insert. "
+"The description is optional."
+msgstr "សូម​បញ្ចូល URL និង​សេចក្ដីពិពណ៌នា​របស់តំណ​ដែល​អ្នក​ចង់​បញ្ចូល ។ សេចក្ដី​ពិពណ៌នា​គឺជា​ជម្រើស ។"
+
+msgid "Please enter the URL of the link that you want to insert."
+msgstr "សូម​បញ្ចូល​ URL របស់​តំណ​ដែល​អ្នកចង់​បញ្ចូល ។"
+
+msgid "Insert Link"
+msgstr "បញ្ចូល​តំណ"
+
+msgid "_Insert"
+msgstr "បញ្ចូល​"
+
+#, c-format
+msgid "Failed to store image: %s\n"
+msgstr "បានបរាជ័យ​ក្នុងការ​ផ្ទុក​រូបភាព ៖ %s\n"
+
+msgid "Insert Image"
+msgstr "បញ្ចូល​​រូបភាព"
+
+#, c-format
+msgid ""
+"This smiley is disabled because a custom smiley exists for this shortcut:\n"
+" %s"
+msgstr ""
+"សញ្ញាណ​អារម្មណ៍​ត្រូវ​បានបិទ​ពីព្រោះ​មាន​សញ្ញាណ​អារម្មណ៍​សម្រាប់​ផ្លូវកាត់​នេះ​រួច​ហើយ ៖\n"
+" %s"
+
+msgid "Smile!"
+msgstr "សញ្ញាណ​អារម្មណ៍ !"
+
+msgid "_Manage custom smileys"
+msgstr "គ្រប់គ្រង​សញ្ញាណ​អារម្មណ៍​ផ្ទាល់ខ្លួន"
+
+msgid "This theme has no available smileys."
+msgstr "ស្បែក​នេះ​មិនមាន​សញ្ញាណ​អារម្មណ៍​ទេ ។"
+
+msgid "_Font"
+msgstr "ពុម្ព​អក្សរ"
+
+msgid "Group Items"
+msgstr "ដាក់​ធាតុ​ជា​ក្រុម"
+
+msgid "Ungroup Items"
+msgstr "បំបែក​​ក្រុម​ធាតុ"
+
+msgid "Bold"
+msgstr "ដិត​"
+
+msgid "Italic"
+msgstr "ទ្រេត"
+
+msgid "Underline"
+msgstr "គូស​បន្ទាត់​ក្រោម"
+
+msgid "Strikethrough"
+msgstr "បន្ទាត់​ឆូត"
+
+msgid "Increase Font Size"
+msgstr "បង្កើន​ទំហំ​ពុម្ពអក្សរ"
+
+msgid "Decrease Font Size"
+msgstr "បន្ថយ​ទំហំ​ពុម្ពអក្សរ"
+
+msgid "Font Face"
+msgstr "លក្ខណៈ​ពុម្ព​អក្សរ"
+
+msgid "Background Color"
+msgstr "ពណ៌​ផ្ទៃ​ខាង​ក្រោយ​"
+
+msgid "Foreground Color"
+msgstr "ពណ៌​ផ្ទៃ​ខាងមុខ"
+
+msgid "Reset Formatting"
+msgstr "កំណត់​ការ​ធ្វើ​ទ្រង់ទ្រាយ​ឡើងវិញ"
+
+msgid "Insert IM Image"
+msgstr "បញ្ចូល​រូបភាព IM"
+
+msgid "Insert Smiley"
+msgstr "បញ្ចូល​​សញ្ញាណអារម្មណ៍"
+
+msgid "<b>_Bold</b>"
+msgstr "<b>ដិត</b>"
+
+msgid "<i>_Italic</i>"
+msgstr "<i>ទ្រេត</i>"
+
+msgid "<u>_Underline</u>"
+msgstr "<u>គូស​បន្ទាត់​ក្រោម</u>"
+
+msgid "<span strikethrough='true'>Strikethrough</span>"
+msgstr "<span strikethrough='true'>បន្ទាត់​ឆូត</span>"
+
+msgid "<span size='larger'>_Larger</span>"
+msgstr "<span size='larger'>ធំជាង</span>"
+
+msgid "_Normal"
+msgstr "ធម្មតា"
+
+msgid "<span size='smaller'>_Smaller</span>"
+msgstr "<span size='smaller'>តូចជាង</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 "លក្ខណៈ​ពុម្ព​អក្សរ"
+
+msgid "Foreground _color"
+msgstr "ពណ៌​ផ្ទៃខាង​មុខ"
+
+msgid "Bac_kground color"
+msgstr "ពណ៌​ផ្ទៃ​ខាងក្រោយ"
+
+msgid "_Image"
+msgstr "រូបភាព"
+
+msgid "_Link"
+msgstr "តំណ"
+
+msgid "_Horizontal rule"
+msgstr "ក្បួន​ផ្ដេក"
+
+msgid "_Smile!"
+msgstr "សញ្ញាណ​អារម្មណ៍"
+
+msgid "Log Deletion Failed"
+msgstr "បានបរាជ័យ​ក្នុងការ​លុប​កំណត់​ហេតុ"
+
+msgid "Check permissions and try again."
+msgstr "ពិនិត្យ​មើល​សិទ្ធិ​ ហើយ​ព្យាយាម​ម្ដង​ទៀត ។"
+
+#, c-format
+msgid ""
+"Are you sure you want to permanently delete the log of the conversation with "
+"%s which started at %s?"
+msgstr "តើ​អ្នក​ប្រាកដ​ជា​ចង់​លុប​កំណត់​សន្ទនា​ជា​មួយ %s ជា​អចិន្ត្រៃយ៍​ដែល​ចាប់ផ្ដើមនៅ %s ដែរឬទេ ?"
+
+#, c-format
+msgid ""
+"Are you sure you want to permanently delete the log of the conversation in %"
+"s which started at %s?"
+msgstr "តើ​អ្នកប្រាកដ​ជា​ចង់​លុប​កំណត់​ហេតុ​សន្ទនា​នៅក្នុង %s ជា​អចិន្ត្រៃយ៍​​ដែល​ចាប់​ផ្ដើ​ម​នៅ %s ដែរឬទេ ?"
+
+#, c-format
+msgid ""
+"Are you sure you want to permanently delete the system log which started at %"
+"s?"
+msgstr "តើ​អ្នក​ប្រាកដជា​ចង់លុប​កំណត់​ហេតុ​ប្រព័ន្ធ​ដែល​ចាប់ផ្ដើម​នៅ %s ជា​អចិន្ត្រៃយ៍​ឬ ?"
+
+msgid "Delete Log?"
+msgstr "លុប​កំណត់​ហេតុ ?"
+
+msgid "Delete Log..."
+msgstr "លុប​កំណត់​ហេតុ..."
+
+#, c-format
+msgid "<span size='larger' weight='bold'>Conversation in %s on %s</span>"
+msgstr "<span size='larger' weight='bold'>សន្ទនា​នៅ​ក្នុង %s លើ %s</span>"
+
+#, c-format
+msgid "<span size='larger' weight='bold'>Conversation with %s on %s</span>"
+msgstr "<span size='larger' weight='bold'>សន្ទនា​ជា​មួយ %s នៅ​លើ %s</span>"
+
+#. Steal the "HELP" response and use it to trigger browsing to the logs folder
+msgid "_Browse logs folder"
+msgstr "រកមើល​ថត​កំណត់​ហេតុ"
+
+#, c-format
+msgid "%s %s. Try `%s -h' for more information.\n"
+msgstr "%s %s ។ ព្យាយាម `%s -h' សម្រាប់​ព័ត៌មាន​បន្ថែម ។\n"
+
+#, c-format
+msgid ""
+"%s %s\n"
+"Usage: %s [OPTION]...\n"
+"\n"
+" -c, --config=DIR use DIR for config files\n"
+" -d, --debug print debugging messages to stdout\n"
+" -h, --help display this help and exit\n"
+" -m, --multiple do not ensure single instance\n"
+" -n, --nologin don't automatically login\n"
+" -l, --login[=NAME] enable specified account(s) (optional argument NAME\n"
+" specifies account(s) to use, separated by commas.\n"
+" Without this only the first account will be enabled).\n"
+" --display=DISPLAY X display to use\n"
+" -v, --version display the current version and exit\n"
+msgstr ""
+"%s %s\n"
+"ការ​ប្រើប្រាស់ ៖ %s [ជម្រើស]...\n"
+"\n"
+" -c, --config=DIR ប្រើ DIR សម្រាប់​ឯកសារ​កំណត់​រចនាសម្ព័ន្ធ\n"
+" -d, --debug បោះពុម្ព​សារ​បំបាត់​កំហុស​ទៅ stdout\n"
+" -h, --help បង្ហាញ​ជំនួយ​នេះ ហើយ​ចេញ\n"
+" -m, --multiple មិនប្រាកដ​ធាតុ​តែ​មួយ\n"
+" -n, --nologin កុំ​ចូល​ដោយ​ស្វ័យ​ប្រវត្តិ\n"
+" -l, --login[=NAME] បើក​គណនី​ដែល​បានបញ្ជាក់ (អាគុយម៉ង​ជម្រើស NAME\n"
+" បញ្ជាក់​គណនី​ត្រូវ​ប្រើ បំបែក​ដោយ​សញ្ញា (,) ។\n"
+" ដោយ​គ្មាន​គណនី​ដំបូង​នេះ​នឹង​ត្រូវ​បានបើក) ។\n"
+" --display=DISPLAY ការ​បង្ហាញ X ត្រូវ​ប្រើ\n"
+" -v, --version បង្ហាញ​កំណែ​បច្ចុប្បន្ន ហើយ​ចេញ\n"
+
+#, c-format
+msgid ""
+"%s %s\n"
+"Usage: %s [OPTION]...\n"
+"\n"
+" -c, --config=DIR use DIR for config files\n"
+" -d, --debug print debugging messages to stdout\n"
+" -h, --help display this help and exit\n"
+" -m, --multiple do not ensure single instance\n"
+" -n, --nologin don't automatically login\n"
+" -l, --login[=NAME] enable specified account(s) (optional argument NAME\n"
+" specifies account(s) to use, separated by commas.\n"
+" Without this only the first account will be enabled).\n"
+" -v, --version display the current version and exit\n"
+msgstr ""
+"%s %s\n"
+"ការ​ប្រើប្រាស់ ៖ %s [ជម្រើស]...\n"
+"\n"
+" -c, --config=DIR ប្រើ DIR សម្រាប់​ឯកសារ​កំណត់​រចនាសម្ព័ន្ធ\n"
+" -d, --debug បោះពុម្ព​សារ​បំបាត់​កំហុស​ទៅ stdout\n"
+" -h, --help បង្ហាញជំនួយ​នេះ​ ហើយ​ចេញ\n"
+" -m, --multiple កុំ​ប្រាកដ​ធាតុ​តែ​មួយ\n"
+" -n, --nologin កុំ​ចូល​ដោយ​ស្វ័យ​ប្រវត្តិ\n"
+" -l, --login[=NAME] បើក​គណនី​ដែលបាន​បញ្ជាក់ (អាគុយម៉ង់​ជម្រើស NAME\n"
+" បញ្ជាក់​គណនី​ត្រូវ​ប្រើ បំបែក​ដោយ​សញ្ញា​ (,)។\n"
+" ដោយ​គ្មាន​គណនី​ដំបូង​នឹង​ត្រូវ​បានបើក) ។\n"
+" -v, --version បង្ហាញ​កំណែ​បច្ចុប្បន្ន ហើយ​ចេញ\n"
+
+#, c-format
+msgid ""
+"%s %s has segfaulted and attempted to dump a core file.\n"
+"This is a bug in the software and has happened through\n"
+"no fault of your own.\n"
+"\n"
+"If you can reproduce the crash, please notify the developers\n"
+"by reporting a bug at:\n"
+"%ssimpleticket/\n"
+"\n"
+"Please make sure to specify what you were doing at the time\n"
+"and post the backtrace from the core file. If you do not know\n"
+"how to get the backtrace, please read the instructions at\n"
+"%swiki/GetABacktrace\n"
+msgstr ""
+"%s %s has segfaulted and attempted to dump a core file.\n"
+"This is a bug in the software and has happened through\n"
+"no fault of your own.\n"
+"\n"
+"If you can reproduce the crash, please notify the developers\n"
+"by reporting a bug at:\n"
+"%ssimpleticket/\n"
+"\n"
+"Please make sure to specify what you were doing at the time\n"
+"and post the backtrace from the core file. If you do not know\n"
+"how to get the backtrace, please read the instructions at\n"
+"%swiki/GetABacktrace\n"
+
+#. Translators may want to transliterate the name.
+#. It is not to be translated.
+msgid "Pidgin"
+msgstr "Pidgin"
+
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr "ចេញ ដោយ​សារ​តែ​ម៉ាស៊ីន​ភ្ញើ libpurple ផ្សេង​ទៀត​កំពុង​រត់​រួច​ហើយ ។\n"
+
+msgid "Open All Messages"
+msgstr "បើក​សារ​ទាំងអស់"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">អ្នក​មាន​សំបុត្រ !</span>"
+
+#, c-format
+msgid "%s has %d new message."
+msgid_plural "%s has %d new messages."
+msgstr[0] "%s មាន​សារ​ថ្មី %d ។"
+
+#, c-format
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
+msgstr[0] "<b>អ៊ីមែល​ថ្មី %d ។</b>"
+
+#, c-format
+msgid "The browser command \"%s\" is invalid."
+msgstr "ពាក្យ​បញ្ជា​កម្មវិធីរុករក \"%s\" មិន​ត្រឹមត្រូវ ។"
+
+msgid "Unable to open URL"
+msgstr "មិនអាច​បើក URL"
+
+#, c-format
+msgid "Error launching \"%s\": %s"
+msgstr "កំហុស​ក្នុងកា​រចាប់ផ្ដើម \"%s\" ៖ %s"
+
+msgid ""
+"The 'Manual' browser command has been chosen, but no command has been set."
+msgstr "ពាក្យ​បញ្ជា​កម្មវិធី​រុករក 'ដោយដៃ' ត្រូវ​បាន​ជ្រើស ប៉ុន្តែ​គ្មាន​ពាក្យ​បញ្ជា​ត្រូវ​បាន​ជ្រើស​ទេ ។"
+
+msgid "The following plugins will be unloaded."
+msgstr "កម្មវិធី​ជំនួយ​ដូច​ខាងក្រោម​នឹង​ត្រូវ​បានផ្ទុក​ឡើង ។"
+
+msgid "Multiple plugins will be unloaded."
+msgstr "កម្មវិធី​ជំនួយ​ជា​ច្រើន​នឹង​ត្រូវ​បានផ្ទុក​ឡើង ។"
+
+msgid "Unload Plugins"
+msgstr "ផ្ទុក​ឡើង​កម្មវិធី​ជំនួយ"
+
+msgid "Could not unload plugin"
+msgstr "មិនអាច​ផ្ទុក​កម្មវិធី​ជំនួយ​ឡើង​បានទេ"
+
+msgid ""
+"The plugin could not be unloaded now, but will be disabled at the next "
+"startup."
+msgstr "កម្មវិធី​ជំនួយ​មិនអាច​ត្រូវ​បានផ្ទុក​ឡើង​ឥឡូវ​ទេ ប៉ុន្តែ​នឹង​ត្រូ​វបាន​បិទនៅពេល​ចាប់ផ្ដើមលើក​ក្រោយ ។"
+
+#, c-format
+msgid ""
+"<span foreground=\"red\" weight=\"bold\">Error: %s\n"
+"Check the plugin website for an update.</span>"
+msgstr ""
+"<span foreground=\"red\" weight=\"bold\">កំហុស ៖ %s\n"
+"ពិនិត្យមើល​តំបន់​បណ្ដាញ​កម្មវិធី​ជំនួយ​សម្រាប់​ភាព​ទាន់សម័យ ។</span>"
+
+msgid "Author"
+msgstr "អ្នកនិពន្ធ ​"
+
+msgid "<b>Written by:</b>"
+msgstr "<b>បាន​សរសេរ​ដោ​យ ៖</b>"
+
+msgid "<b>Web site:</b>"
+msgstr "<b>តំបន់​បណ្ដាញ ៖</b>"
+
+msgid "<b>Filename:</b>"
+msgstr "<b>ឈ្មោះ​ឯកសារ ៖</b>"
+
+msgid "Configure Pl_ugin"
+msgstr "កំណត់​រចនាសម្ព័ន្ធ​កម្មវិធី​ជំនួយ"
+
+msgid "<b>Plugin Details</b>"
+msgstr "<b>សេចក្ដី​លម្អិត​កម្មវិធី​ជំនួយ</b>"
+
+msgid "Select a file"
+msgstr "ជ្រើស​ឯកសារ"
+
+#. Create the "Pounce on Whom" frame.
+msgid "Pounce on Whom"
+msgstr "ក្រុម​នៅ​លើ​អ្នកណា"
+
+msgid "_Buddy name:"
+msgstr "ឈ្មោះ​មិត្តភក្ដិ ៖"
+
+msgid "Si_gns on"
+msgstr "ចូល"
+
+msgid "Signs o_ff"
+msgstr "ចេញ"
+
+msgid "Goes a_way"
+msgstr "ចាកឆ្ងាយ"
+
+msgid "Ret_urns from away"
+msgstr "ត្រឡប់​ពី​ការ​ចាកឆ្ងាយ"
+
+msgid "Becomes _idle"
+msgstr "ក្លាយជា​ទំនេរ"
+
+msgid "Is no longer i_dle"
+msgstr "មិន​ទំនេរ​ទៀតទេ"
+
+msgid "Starts _typing"
+msgstr "ចាប់ផ្ដើម​វាយ"
+
+msgid "P_auses while typing"
+msgstr "ផ្អាក​ខណៈពេល​វាយ"
+
+msgid "Stops t_yping"
+msgstr "ឈប់​វាយ"
+
+msgid "Sends a _message"
+msgstr "ផ្ញើសារ"
+
+msgid "Ope_n an IM window"
+msgstr "បើក​បង្អួច IM"
+
+msgid "_Pop up a notification"
+msgstr "កា​រជូនដំណឹង​លេច​ឡើង"
+
+msgid "Send a _message"
+msgstr "ផ្ញើ​សារ"
+
+msgid "E_xecute a command"
+msgstr "ប្រតិបត្តិ​ពាក្យ​បញ្ជា"
+
+msgid "P_lay a sound"
+msgstr "ចាក់​សំឡេង"
+
+msgid "Brows_e..."
+msgstr "រកមើល..."
+
+msgid "Br_owse..."
+msgstr "រកមើល..."
+
+msgid "Pre_view"
+msgstr "មើលជា​មុន"
+
+msgid "P_ounce only when my status is not Available"
+msgstr "តែ​ក្រុម​នៅពេល​ដែល​ស្ថានភាព​ខ្ញុំ​មិនអាច​ជជែក​បាន"
+
+msgid "_Recurring"
+msgstr "កើតឡើង​វិញ"
+
+msgid "Pounce Target"
+msgstr "ក្រុម​គោល​ដៅ​"
+
+msgid "Smiley theme failed to unpack."
+msgstr "ស្បែក​សញ្ញាណអារម្មណ៍​បានបរាជ័យ​ក្នុងការ​ស្រាយ ។"
+
+msgid "Install Theme"
+msgstr "ដំឡើង​ស្បែក"
+
+msgid ""
+"Select a smiley theme that you would like to use from the list below. New "
+"themes can be installed by dragging and dropping them onto the theme list."
+msgstr ""
+"ជ្រើស​ស្បែក​សញ្ញាណ​ញញឹម​ដែល​អ្នក​ចង់​ប្រើ​ពី​បញ្ជី​ខាង​ក្រោម ។ ស្បែក​ថ្មី​អាច​ត្រូវ​បាន​អូស និង​ទម្លាក់​ពួកវា​ទៅ​ក្នុង​"
+"បញ្ជី​ស្បែក ។"
+
+msgid "Icon"
+msgstr "រូបតំណាង"
+
+msgid "Keyboard Shortcuts"
+msgstr "ផ្លូវ​កាត់​ក្តារចុច"
+
+msgid "Cl_ose conversations with the Escape key"
+msgstr "បិទ​ការ​សន្ទនា​ដោយ​ប្រើ​គ្រាប់ចុច​គេច (Escape)"
+
+msgid "System Tray Icon"
+msgstr "រូបតំណាង​ថាស​ប្រព័ន្ធ"
+
+msgid "_Show system tray icon:"
+msgstr "បង្ហាញ​​រូបតំណាង​ថាស​ប្រព័ន្ធ ៖"
+
+msgid "On unread messages"
+msgstr "សារ​មិន​ទាន់អាន"
+
+msgid "Conversation Window Hiding"
+msgstr "លាក់​បង្អួច​សន្ទនា"
+
+msgid "_Hide new IM conversations:"
+msgstr "លាក់​កា​រសន្ទនា IM ថ្មី ៖"
+
+msgid "When away"
+msgstr "នៅពេល​ចាកឆ្ងាយ"
+
+#. All the tab options!
+msgid "Tabs"
+msgstr "ថេប"
+
+msgid "Show IMs and chats in _tabbed windows"
+msgstr "បង្ហាញ IMs និង​ការជជែក​នៅ​ក្នុង​បង្អួច​ជា​ថេប"
+
+msgid "Show close b_utton on tabs"
+msgstr "បង្ហាញ​ប៊ូតុង​បិទ​នៅ​លើ​ថេប"
+
+msgid "_Placement:"
+msgstr "ការ​ដាក់ ៖"
+
+msgid "Top"
+msgstr "កំពូល"
+
+msgid "Bottom"
+msgstr "បាត"
+
+msgid "Left"
+msgstr "ឆ្វេង"
+
+msgid "Right"
+msgstr "​ស្តាំ"
+
+msgid "Left Vertical"
+msgstr "បញ្ឈរ​ឆ្វេង"
+
+msgid "Right Vertical"
+msgstr "បញ្ឈរ​ស្ដាំ"
+
+msgid "N_ew conversations:"
+msgstr "ការ​សន្ទនា​ថ្មី ៖"
+
+msgid "Show _formatting on incoming messages"
+msgstr "បង្ហាញ​កា​រធ្វើ​ទ្រង់ទ្រាយ​នៅ​ពេល​មានសារ​ចូល"
+
+msgid "Close IMs immediately when the tab is closed"
+msgstr "បិទ​ IMs ភ្លាមៗ​នៅពេល​បិទ​ផ្ទាំង"
+
+msgid "Show _detailed information"
+msgstr "បង្ហាញ​ព័ត៌មាន​លម្អិត"
+
+msgid "Enable buddy ic_on animation"
+msgstr "បើក​ចលនា​រូបតំណាង​របស់​មិត្តភក្ដិ"
+
+msgid "_Notify buddies that you are typing to them"
+msgstr "ជូនដំណឹង​មិត្តភក្ដិ​ដេល​អ្នក​កំពុង​វាយ​ទៅ​កាន់​ពួកគេ"
+
+msgid "Highlight _misspelled words"
+msgstr "បន្លិច​ពាក្យ​ដែល​ខុស"
+
+msgid "Use smooth-scrolling"
+msgstr "ប្រើ​រមូរ​រលូន"
+
+msgid "F_lash window when IMs are received"
+msgstr "បង្អួច Flash នៅពេល​បានទទួល IMs"
+
+msgid "Minimi_ze new conversation windows"
+msgstr "បង្រួម​បង្អួច​សន្ទនា​ថ្មី​អប្បបរមា"
+
+msgid "Minimum input area height in lines:"
+msgstr "បង្រួម​កម្ពស់​ផ្ទៃ​បញ្ចូល​គិតជា​បន្ទាត់ ៖"
+
+msgid "Font"
+msgstr "ពុម្ព​អក្សរ"
+
+msgid "Use document font from _theme"
+msgstr "ប្រើ​ពុម្ពអក្សរ​ឯកសារ​ពី​ស្បែក"
+
+msgid "Use font from _theme"
+msgstr "ប្រើ​ពុម្ពអក្សរ​ពី​ស្បែក"
+
+msgid "Conversation _font:"
+msgstr "ពុម្ពអក្សរ​សន្ទនា ៖"
+
+msgid "Default Formatting"
+msgstr "ការ​ធ្វើទ្រង់ទ្រាយ​លំនាំដើម"
+
+msgid ""
+"This is how your outgoing message text will appear when you use protocols "
+"that support formatting."
+msgstr ""
+"នេះ​ជា​វិធី​ដែល​អត្ថបទ​សារ​ចេញ​របស់​នឹង​បង្ហាញ នៅពេល​ដែល​អ្នក​ប្រើ​ពិធីការ​ដែល​គាំទ្រ​ការ​ធ្វើទ្រង់ទ្រាយ ។"
+
+msgid "Cannot start proxy configuration program."
+msgstr "មិនអាច​ចាប់ផ្ដើម​កម្មវិធី​កំណត់​រចនាសម្ព័ន្ធ​ប្រូកស៊ី​បានទេ ។"
+
+msgid "Cannot start browser configuration program."
+msgstr "មិនអាច​ចាប់ផ្ដើម​កម្មវិធី​កំណត់​រចនាសម្ព័ន្ធ​កម្មវិធី​រុករក​បានទេ ។"
+
+msgid "ST_UN server:"
+msgstr "ម៉ាស៊ីនបម្រើ STUN ៖"
+
+msgid "<span style=\"italic\">Example: stunserver.org</span>"
+msgstr "<span style=\"italic\">ឧទាហរណ៍ ៖ stunserver.org</span>"
+
+msgid "_Autodetect IP address"
+msgstr "រកឃើញ​អាសយដ្ឋាន IP ដោយ​ស្វ័យ​ប្រវត្តិ"
+
+msgid "Public _IP:"
+msgstr "IP សាធារណៈ"
+
+msgid "Ports"
+msgstr "ច្រក"
+
+msgid "_Enable automatic router port forwarding"
+msgstr "បើក​ការ​បញ្ជូន​ច្រក​រ៉ោត័រ​បន្ត​ដោយ​ស្វ័យ​ប្រវត្តិ"
+
+msgid "_Manually specify range of ports to listen on"
+msgstr "បញ្ជាក់ជួរ​ច្រក​ដែល​ត្រូវ​ស្ដាប់​ដោយ​ដៃ"
+
+msgid "_Start port:"
+msgstr "ច្រក​ចាប់ផ្ដើម ៖"
+
+msgid "_End port:"
+msgstr "ច្រក​បញ្ចប់ ៖"
+
+msgid "Proxy Server &amp; Browser"
+msgstr "ម៉ាស៊ីនបម្រើ​ប្រូកស៊ី &amp; កម្មវិធី​រុករក​"
+
+msgid "<b>Proxy configuration program was not found.</b>"
+msgstr "<b>រក​មិន​ឃើញ​កម្មវិធី​កំណត់​រចនាសម្ព័ន្ធ​ប្រូកស៊ី ។</b>"
+
+msgid "<b>Browser configuration program was not found.</b>"
+msgstr "<b>រក​មិនឃើញ​កម្មវិធី​កំណត់​រចនាសម្ព័ន្ធ​របស់​កម្មវិធី​រុករក​ទេ ។</b>"
+
+msgid ""
+"Proxy & Browser preferences are configured\n"
+"in GNOME Preferences"
+msgstr "បានកំណត់​រចនាសម្ព័ន្ធ​កម្មវិធី​រុករក និង​ប្រូកស៊ី​នៅ​ក្នុង​ចំណូល​ចិត្ត​​របស់ GNOME"
+
+msgid "Configure _Proxy"
+msgstr "កំណត់​រចនាសម្ព័ន្ធ​ប្រូកស៊ី"
+
+msgid "Configure _Browser"
+msgstr "កំណត់​រចនាសម្ព័ន្ធ​កម្មវិធី​រុករក"
+
+msgid "Proxy Server"
+msgstr "ម៉ាស៊ីន​បម្រើ​ប្រូកស៊ី"
+
+msgid "No proxy"
+msgstr "គ្មានប្រូកស៊ី"
+
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr "ប្រើ"
+
+msgid "_User:"
+msgstr "អ្នក​ប្រើ ៖"
+
+msgid "Seamonkey"
+msgstr "Seamonkey"
+
+msgid "Opera"
+msgstr "Opera"
+
+msgid "Netscape"
+msgstr "Netscape"
+
+msgid "Mozilla"
+msgstr "Mozilla"
+
+msgid "Konqueror"
+msgstr "Konqueror"
+
+msgid "Desktop Default"
+msgstr "ផ្ទៃតុ​លំនាំដើម"
+
+msgid "GNOME Default"
+msgstr "GNOME លំនាំដើម"
+
+msgid "Galeon"
+msgstr "Galeon"
+
+msgid "Firefox"
+msgstr "Firefox"
+
+msgid "Firebird"
+msgstr "Firebird"
+
+msgid "Epiphany"
+msgstr "Epiphany"
+
+msgid "Manual"
+msgstr "សៀវភៅ​ដៃ"
+
+msgid "Browser Selection"
+msgstr "ជម្រើស​កម្មវិធី​រុករក"
+
+msgid "_Browser:"
+msgstr "កម្មវិធី​រុករក ៖"
+
+msgid "_Open link in:"
+msgstr "បើក​តំណ​នៅ​ក្នុង ៖"
+
+msgid "Browser default"
+msgstr "កម្មវិធីរុករក​លំនាំដើម"
+
+msgid "Existing window"
+msgstr "មាន​បង្អួចរួច​ហើយ"
+
+msgid "New tab"
+msgstr "ផ្ទាំង​ថ្មី"
+
+#, c-format
+msgid ""
+"_Manual:\n"
+"(%s for URL)"
+msgstr ""
+"សៀវភៅ​ដៃ ​៖\n"
+"(%s សម្រាប់ URL)"
+
+msgid "Log _format:"
+msgstr "ទ្រង់ទ្រាយ​កំណត់​ហេតុ ៖"
+
+msgid "Log all _instant messages"
+msgstr "ចុះ​កំណត់​ហេតុ​សារ​បន្ទាន់​ទាំង​អស់"
+
+msgid "Log all c_hats"
+msgstr "ចុះ​​កំណត់ហេតុ​ការ​ជជែក​ទាំង​អស់"
+
+msgid "Log all _status changes to system log"
+msgstr "ចុះ​កំណត់​ហេតុ​ការ​​ផ្លាស់ប្ដូរ​ស្ថានភាព​ទៅ​កំណត់ហេតុ​ប្រព័ន្ធ"
+
+msgid "Sound Selection"
+msgstr "ការ​ជ្រើស​សំឡេង"
+
+#, c-format
+msgid "Quietest"
+msgstr "ស្ងាត់​បំផុត"
+
+#, c-format
+msgid "Quieter"
+msgstr "ស្ងាត់​ជាង"
+
+#, c-format
+msgid "Quiet"
+msgstr "ស្ងាត់"
+
+#, c-format
+msgid "Loud"
+msgstr "ឮ"
+
+#, c-format
+msgid "Louder"
+msgstr "ឮខ្លាំង​ជាង"
+
+#, c-format
+msgid "Loudest"
+msgstr "ឮខ្លាំង​បំផុត"
+
+msgid "_Method:"
+msgstr "វិធីសាស្ត្រ ៖"
+
+msgid "Console beep"
+msgstr "ប៊ីប​របស់កុង​សូល"
+
+msgid "No sounds"
+msgstr "គ្មាន​សំឡេង"
+
+#, c-format
+msgid ""
+"Sound c_ommand:\n"
+"(%s for filename)"
+msgstr ""
+"ពាក្យ​បញ្ជា​សំឡេង ៖\n"
+"(%s សម្រាប់​ឈ្មោះ​ឯកសារ)"
+
+msgid "M_ute sounds"
+msgstr "ស្ងាត់"
+
+msgid "Sounds when conversation has _focus"
+msgstr "សំឡេង​នៅពេល​ផ្ដោត​ការ​សន្ទនា"
+
+msgid "_Enable sounds:"
+msgstr "បើក​ជម្រើស ៖"
+
+msgid "V_olume:"
+msgstr "កម្រិត​សំឡេង​ ៖"
+
+msgid "Play"
+msgstr "ចាក់"
+
+msgid "_Browse..."
+msgstr "រកមើល..."
+
+msgid "_Reset"
+msgstr "កំណត់​ឡើង​វិញ"
+
+msgid "_Report idle time:"
+msgstr "រាយការណ៍​ពេលវេលា​ទំនេរ ៖"
+
+msgid "Based on keyboard or mouse use"
+msgstr "មាន​មូលដ្ឋាន​លើ​កា​រប្រើក្ដារចុច ឬ​កណ្ដុរ"
+
+msgid "_Auto-reply:"
+msgstr "ឆ្លើយ​តប​ដោយ​ស្វ័យ​ប្រវត្តិ ៖"
+
+msgid "When both away and idle"
+msgstr "នៅពេល​អ្នកទាំង​ពីរ​ចាកឆ្ងាយ ឬ​​ទំនេរ"
+
+#. Auto-away stuff
+msgid "Auto-away"
+msgstr "ចាកឆ្ងាយ​ស្វ័យ​ប្រវត្តិ"
+
+msgid "Change status when _idle"
+msgstr "ផ្លាស់ប្ដូរ​ស្ថានភាព​នៅពេល​ទំនេរ"
+
+msgid "_Minutes before becoming idle:"
+msgstr "ប៉ុន្មាន​នាទី​មុន​នឹង​ក្លាយជា​ទំនេរ ៖"
+
+msgid "Change _status to:"
+msgstr "ផ្លាស់ប្ដូរ​ស្ថានភាព​ទៅជា ៖"
+
+#. Signon status stuff
+msgid "Status at Startup"
+msgstr "ស្ថានភាព​នៅពេល​ចាប់ផ្ដើម"
+
+msgid "Use status from last _exit at startup"
+msgstr "ប្រើ​ស្ថានភាព​ពី​ការ​ចេញ​ចុងក្រោយ​នៅពេល​ចាប់ផ្ដើម"
+
+msgid "Status to a_pply at startup:"
+msgstr "ស្ថានភាព​ត្រូវ​​អនុវត្ត​នៅពេល​ចាប់ផ្ដើម ៖"
+
+msgid "Interface"
+msgstr "ចំណុច​ប្រទាក់"
+
+msgid "Smiley Themes"
+msgstr "ស្បែក​សញ្ញាណ​អារម្មណ៍"
+
+msgid "Browser"
+msgstr "កម្មវិធី​រុករក"
+
+msgid "Status / Idle"
+msgstr "ស្ថានភាព/ទំនេរ"
+
+msgid "Allow all users to contact me"
+msgstr "អនុញ្ញាត​ឲ្យ​អ្នកប្រើទាំង​អស់​ទាក់ទង​ខ្ញុំ"
+
+msgid "Allow only the users on my buddy list"
+msgstr "អនុញ្ញាត​តែ​អ្នកប្រើ​នៅ​ក្នុង​បញ្ជី​មិត្តភក្ដិ​របស់​ខ្ញុំ​ប៉ុណ្ណោះ"
+
+msgid "Allow only the users below"
+msgstr "អនុញ្ញាត​តែ​អ្នកប្រើខាងក្រោម​ប៉ុណ្ណោះ"
+
+msgid "Block all users"
+msgstr "ទប់ស្កាត់​អ្នក​ប្រើ​ទាំង​អស់"
+
+msgid "Block only the users below"
+msgstr "ទប់ស្កាត់តែ​អ្នកប្រើ​ខាងក្រោមប៉ុណ្ណោះ"
+
+msgid "Privacy"
+msgstr "ភាព​ឯកជន"
+
+msgid "Changes to privacy settings take effect immediately."
+msgstr "ផ្លាស់ប្ដូរ​ទៅការ​កំណត់​ភាព​ឯកជន​នឹង​មានប្រសិទ្ធភាព​ភ្លាម ។"
+
+msgid "Set privacy for:"
+msgstr "កំណត់​ភាព​ឯកជន​សម្រាប់ ៖"
+
+#. Remove All button
+msgid "Remove Al_l"
+msgstr "យក​ចេញ​ទាំង​អស់"
+
+msgid "Permit User"
+msgstr "អនុញ្ញាត​អ្នកប្រើ"
+
+msgid "Type a user you permit to contact you."
+msgstr "វាយ​អ្នកប្រើ ដែល​អ្នកអនុញ្ញាត​ឲ្យ​ទាក់ទង​អ្នក ។"
+
+msgid "Please enter the name of the user you wish to be able to contact you."
+msgstr "សូម​បញ្ចូល​ឈ្មោះអ្នកប្រើ​ ដែល​អ្នកចង់​ឲ្យទាក់ទង​អ្នក ។"
+
+msgid "_Permit"
+msgstr "អនុញ្ញាត"
+
+#, c-format
+msgid "Allow %s to contact you?"
+msgstr "អនុញ្ញាតឲ្យ %s ទាក់ទង​អ្នក ?"
+
+#, c-format
+msgid "Are you sure you wish to allow %s to contact you?"
+msgstr "តើអ្នក​ប្រាកដ​ជា​ចង់​អនុញ្ញាតឲ្យ %s ទាក់ទង​អ្នក​ឬ ?"
+
+msgid "Block User"
+msgstr "ទប់ស្កាត់​អ្នក​ប្រើ"
+
+msgid "Type a user to block."
+msgstr "វាយ​​អ្នកប្រើត្រូវ​ទប់ស្កាត់ ។"
+
+msgid "Please enter the name of the user you wish to block."
+msgstr "សូម​បញ្ចូល​ឈ្មោះ​អ្នកប្រើ​ដែល​អ្នក​ចង់​ទប់ស្កាត់ ។"
+
+#, c-format
+msgid "Block %s?"
+msgstr "ទប់ស្កាត់ %s?"
+
+#, c-format
+msgid "Are you sure you want to block %s?"
+msgstr "តើអ្នកប្រាកដ​ជា​ចង់​ទប់ស្កាត់ %s ឬ ?"
+
+msgid "Apply"
+msgstr "អនុវត្ត"
+
+msgid "That file already exists"
+msgstr "មាន​ឯកសារ​នោះ​រួច​ហើយ"
+
+msgid "Would you like to overwrite it?"
+msgstr "តើអ្នក​ចង់សរសេរ​ជាន់​លើវា​ឬ ?"
+
+msgid "Overwrite"
+msgstr "សរសេរ​ជាន់​លើ"
+
+msgid "Choose New Name"
+msgstr "ជ្រើស​​ឈ្មោះ​ថ្មី"
+
+msgid "Select Folder..."
+msgstr "ជ្រើស​ថត ។"
+
+#. list button
+msgid "_Get List"
+msgstr "យក​បញ្ជី"
+
+#. add button
+msgid "_Add Chat"
+msgstr "បន្ថែម​ការជជែក"
+
+msgid "Are you sure you want to delete the selected saved statuses?"
+msgstr "តើ​អ្នក​ប្រាកដ​ជា​​លុប​ស្ថានភាព​ដែល​បាន​រក្សាទុក​ដែលបានជ្រើស​ឬ ?"
+
+#. Use button
+msgid "_Use"
+msgstr "ប្រើ"
+
+msgid "Title already in use. You must choose a unique title."
+msgstr "មាន​ចំណង​ជើង​រួច​ហើយ ។ អ្នក​ត្រូវ​តែ​ជ្រើស​ចំណង​ជើង​តែ​មួយ ។"
+
+msgid "Different"
+msgstr "ខុសគ្នា"
+
+msgid "_Title:"
+msgstr "ចំណង​ជើង ៖"
+
+msgid "_Status:"
+msgstr "ស្ថានភាព ៖"
+
+#. Different status message expander
+msgid "Use a _different status for some accounts"
+msgstr "ប្រើ​ស្ថានភាព​ផ្សេង​សម្រាប់គណនី​មួយ​ចំនួន"
+
+#. Save & Use button
+msgid "Sa_ve & Use"
+msgstr "រក្សាទុក​ការ​ប្រើ"
+
+#, c-format
+msgid "Status for %s"
+msgstr "ស្ថានភាព​សម្រាប់ %s"
+
+msgid "Custom Smiley"
+msgstr "សញ្ញា​អារម្មណ៍​ផ្ទាល់ខ្លួន"
+
+msgid "More Data needed"
+msgstr "ត្រូវការ​ទិន្នន័យ​បន្ថែម​ទៀត"
+
+msgid "Please provide a shortcut to associate with the smiley."
+msgstr "សូម​ផ្ដល់​នូវ​ផ្លូវកាត់​ដើម្បី​ភ្ជាប់​ជា​មួយ​នឹង​សញ្ញា​អារម្មណ៍ ។"
+
+msgid "Duplicate Shortcut"
+msgstr "ផ្លូវកាត់​ស្ទួន"
+
+msgid ""
+"A custom smiley for the selected shortcut already exists. Please specify a "
+"different shortcut."
+msgstr "សញ្ញា​អារម្មណ៍​ផ្ទាល់ខ្លួន​សម្រាប់​ផ្លូវកាត់​ដែល​បាន​ជ្រើស​មាន​រួច​ហើយ ។ សូម​បញ្ជី​ផ្លូវកាត់​ផ្សេង ។"
+
+msgid "Please select an image for the smiley."
+msgstr "សូម​ជ្រើស​រូបភាព​សម្រាប់​សញ្ញាអារម្មណ៍ ។"
+
+msgid "Edit Smiley"
+msgstr "កែ​សម្រួល​សញ្ញាអារម្មណ៍"
+
+msgid "Add Smiley"
+msgstr "បន្ថែម​សញ្ញាអារម្មណ៍"
+
+msgid "Smiley _Image"
+msgstr "រូបភាព​សញ្ញាអារម្មណ៍"
+
+#. Smiley shortcut
+msgid "Smiley S_hortcut"
+msgstr "ផ្លូវ​កាត់​សញ្ញាអារម្មណ៍"
+
+msgid "Smiley"
+msgstr "សញ្ញាអារម្មណ៍"
+
+msgid "Custom Smiley Manager"
+msgstr "កម្មវិធី​គ្រប់គ្រង​សញ្ញាអារម្មណ៍​ផ្ទាល់ខ្លួន"
+
+msgid "Click to change your buddyicon for this account."
+msgstr "ចុច​ដើម្បី​ផ្លាស់ប្ដូរ​រូបតំណាង​មិត្តភក្ដិ​របស់​អ្នកសម្រាប់គណនី​នេះ ។"
+
+msgid "Click to change your buddyicon for all accounts."
+msgstr "ចុច​ដើម្បី​ផ្លាស់ប្ដូរ​រូបតំណាង​មិត្តភក្ដិ​របស់​អ្នក​សម្រាប់គណនី​ទាំង​អស់ ។"
+
+msgid "Waiting for network connection"
+msgstr "រង់ចាំ​ការ​តភ្ជាប់បណ្ដាញ"
+
+msgid "New status..."
+msgstr "ស្ថានភាព​ថ្មី..."
+
+msgid "Saved statuses..."
+msgstr "ស្ថាន​ភាព​ដែលបាន​រក្សាទុក..."
+
+msgid "Status Selector"
+msgstr "កម្មវិធី​ជ្រើស​ស្ថានភាព"
+
+msgid "Google Talk"
+msgstr "Google Talk"
+
+#, c-format
+msgid "The following error has occurred loading %s: %s"
+msgstr "កំហុស​ដូច​ខាងក្រោម​បានកើតឡើង​​កំឡុង​ពេល​ផ្ទុក %s ៖ %s"
+
+msgid "Failed to load image"
+msgstr "បានបរាជ័យ​ក្នុងការ​ផ្ទុក​រូបភាព"
+
+#, c-format
+msgid "Cannot send folder %s."
+msgstr "មិនអាច​ផ្ញើថត %s បានទេ ។"
+
+#, c-format
+msgid ""
+"%s cannot transfer a folder. You will need to send the files within "
+"individually."
+msgstr "%s មិនអាច​ផ្ទេរ​ថត​បានទេ ។ អ្នកនឹង​ត្រូវ​ផ្ញើ​ឯកសារ​រៀងខ្លួនៗ ។"
+
+msgid "You have dragged an image"
+msgstr "អ្នកបាន​អូស​រូបភាព"
+
+msgid ""
+"You can send this image as a file transfer, embed it into this message, or "
+"use it as the buddy icon for this user."
+msgstr ""
+"អ្នក​អាច​ផ្ញើ​រូបភាព​នេះ​ជា​ការ​ផ្ទេរ​ឯកសារ បង្កប់​វា​ក្នុងសារ​នេះ ឬ​ប្រើ​វា​ជា​រូបតំណាង​មិត្តភក្ដិ​សម្រាប់ការ​"
+"ប្រើ​នេះ ។"
+
+msgid "Set as buddy icon"
+msgstr "កំណត់​ជា​រូបតំណាង​មិត្តភក្ដិ"
+
+msgid "Send image file"
+msgstr "ផ្ញើ​ឯកសារ​រូបភាព"
+
+msgid "Insert in message"
+msgstr "បញ្ចូល​ក្នុងសារ"
+
+msgid "Would you like to set it as the buddy icon for this user?"
+msgstr "តើអ្នក​ចង់​កំណត់​ជា​រូបតំណាង​មិត្តភក្ដិ​សម្រាប់​អ្នកប្រើនេះ​ដែរឬទេ ?"
+
+msgid ""
+"You can send this image as a file transfer, or use it as the buddy icon for "
+"this user."
+msgstr "អ្នកអាច​ផ្ញើរូបភាព​នេះ​ជា​ការ​ផ្ទេរ​ឯកសារ ឬ​ប្រើវា​ជា​រូបតំណាង​មិត្តភក្ដិ​សម្រាប់​អ្នកប្រើ​នេះ ។"
+
+msgid ""
+"You can insert this image into this message, or use it as the buddy icon for "
+"this user"
+msgstr "អ្នក​អាច​បញ្ចូល​រូបភាព​នេះ​​ក្នុង​សារ​នេះ ឬ​ប្រើ​វា​ជា​រូបតំណាង​មិត្តភក្ដិ​សម្រាប់​អ្នកប្រើ​នេះ"
+
+#. I don't know if we really want to do anything here. Most of the desktop item types are crap like
+#. * "MIME Type" (I have no clue how that would be a desktop item) and "Comment"... nothing we can really
+#. * send. The only logical one is "Application," but do we really want to send a binary and nothing else?
+#. * Probably not. I'll just give an error and return.
+#. The original patch sent the icon used by the launcher. That's probably wrong
+msgid "Cannot send launcher"
+msgstr "មិនអាច​ផ្ញើ​កម្មវិធី​ចាប់ផ្ដើម​បានទេ"
+
+msgid ""
+"You dragged a desktop launcher. Most likely you wanted to send whatever this "
+"launcher points to instead of this launcher itself."
+msgstr ""
+"អ្នកបានអូស​កម្មវិធី​ចាប់ផ្ដើម​ផ្ទៃតុ ។ ទំនង​ជា​អ្នក​ចង់​ផ្ញើ​អ្វី​កម្មវិធី​នេះ​ចង្អុល​​ទៅ​កម្មវិធី​ចាប់ផ្ដើម​នេះ​ជំនួស​វិញ "
+"។"
+
+#, c-format
+msgid ""
+"<b>File:</b> %s\n"
+"<b>File size:</b> %s\n"
+"<b>Image size:</b> %dx%d"
+msgstr ""
+"<b>ឯកសារ ៖</b> %s\n"
+"<b>ទំហំ​ឯកសារ ៖</b> %s\n"
+"<b>ទំហំ​រូបភាព ៖</b> %dx%d"
+
+#, c-format
+msgid "The file '%s' is too large for %s. Please try a smaller image.\n"
+msgstr "ឯកសារ '%s' ធំពេក​សម្រាប់ %s ។ សូម​ព្យាយាម​រូបភាព​ដែល​តូចជាង​នេះ ។\n"
+
+msgid "Icon Error"
+msgstr "កំហុស​រូបតំណាង"
+
+msgid "Could not set icon"
+msgstr "មិនអាច​កំណត់​រូបតំណាង​បានទេ"
+
+#, c-format
+msgid "Failed to open file '%s': %s"
+msgstr "បានបរាជ័យ​ក្នុងការ​បើក​ឯកសារ '%s' ៖ %s"
+
+#, c-format
+msgid ""
+"Failed to load image '%s': reason not known, probably a corrupt image file"
+msgstr "បានបរាជ័យ​ក្នុងការ​ផ្ទុក​រូបភាព '%s' ៖ មិនស្គាល់ហេតុផល ប្រហែលជា​ឯកសារ​រូបភាព​តូច"
+
+msgid "Save File"
+msgstr "រក្សា​​ទុក​​​ឯកសារ"
+
+msgid "Select color"
+msgstr "ជ្រើស​ពណ៌"
+
+msgid "_Alias"
+msgstr "ឈ្មោះ​ក្លែងក្លាយ"
+
+msgid "Close _tabs"
+msgstr "បិទ​​ផ្ទាំង"
+
+msgid "_Get Info"
+msgstr "យក​ព័ត៌មាន"
+
+msgid "_Invite"
+msgstr "អញ្ជើញ"
+
+msgid "_Modify..."
+msgstr "កែប្រែ..."
+
+msgid "_Add..."
+msgstr "បន្ថែម..."
+
+msgid "_Open Mail"
+msgstr "បើក​សំបុត្រ"
+
+msgid "_Edit"
+msgstr "កែ​សម្រួល"
+
+msgid "Pidgin Tooltip"
+msgstr "ព័ត៌មាន​ជំនួយ Pidgin"
+
+msgid "Pidgin smileys"
+msgstr "សញ្ញាអារម្មណ៍​របស់ Pidgin"
+
+msgid "Penguin Pimps"
+msgstr "Penguin Pimps"
+
+msgid "Selecting this disables graphical emoticons."
+msgstr "ជ្រើស​សញ្ញាអារម្មណ៍​ក្រាហ្វិក​ដែល​បិទ​នេះ ។"
+
+msgid "none"
+msgstr "គ្មាន"
+
+msgid "Small"
+msgstr "តូច"
+
+msgid "Smaller versions of the default smilies"
+msgstr "កំណែ​តូច​របស់​សញ្ញាអារម្មណ៍​លំនាំដើម"
+
+msgid "Response Probability:"
+msgstr "ប្រូបាប៊ីលីតេឆ្លើយតប ៖"
+
+msgid "Statistics Configuration"
+msgstr "ការ​កំណត់​រចនាសម្ព័ន្ធ​ស្ថិតិ"
+
+#. msg_difference spinner
+msgid "Maximum response timeout:"
+msgstr "អស់ពេល​ឆ្លើយតប​អតិបរមា ៖"
+
+msgid "minutes"
+msgstr "នាទី"
+
+#. last_seen spinner
+msgid "Maximum last-seen difference:"
+msgstr "ភាព​ខុសគ្នា​ដែល​បានឃើញ​ចុងក្រោយ​អតិបរមា ៖"
+
+#. threshold spinner
+msgid "Threshold:"
+msgstr "កម្រិត​ពន្លឺ ៖"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Contact Availability Prediction"
+msgstr "មាន​ការទាយ​ទំនាក់ទំនង"
+
+#. *< name
+#. *< version
+msgid "Contact Availability Prediction plugin."
+msgstr "មាន​កម្មវិធី​ជំនួយ​ទាយ​ទំនាក់ទំនង ។"
+
+#. * summary
+msgid "Displays statistical information about your buddies' availability"
+msgstr "បង្ហាញ​ព័ត៌មាន​ស្ថិតិ​អំពី​ភាព​អាច​ប្រើ​បាន​នៃ​មិត្តភក្ដិ​របស់​អ្នក"
+
+msgid "Buddy is idle"
+msgstr "មិត្តភក្ដិ​ទំនេរ"
+
+msgid "Buddy is away"
+msgstr "មិត្តភក្ដិ​ចាកឆ្ងាយ"
+
+msgid "Buddy is \"extended\" away"
+msgstr "មិត្តភក្ដិ​ត្រូវបាន \"ពន្យារ\" ការ​ចាកឆ្ងាយ"
+
+#. Not used yet.
+msgid "Buddy is mobile"
+msgstr "មិត្តភក្ដិ​ចល័ត"
+
+msgid "Buddy is offline"
+msgstr "មិត្តភក្ដិ​ក្រៅបណ្ដាញ"
+
+msgid "Point values to use when..."
+msgstr "ចង្អុល​តម្លៃ​ត្រូវ​ប្រើនៅ​ពេល..."
+
+msgid ""
+"The buddy with the <i>largest score</i> is the buddy who will have priority "
+"in the contact.\n"
+msgstr "មិត្តភក្ដិ​ដែលមាន <i>ពិន្ទុធំ</i> គឺជា​មិត្តភក្ដិ​ដែល​នឹង​មាន​អាទិភាព​នៅ​ក្នុងការជជែក ។\n"
+
+msgid "Use last buddy when scores are equal"
+msgstr "ប្រើ​មិត្តភក្ដិ​ចុងក្រោយ​នៅពេល​ពិន្ទុ​ស្មើគ្នា"
+
+msgid "Point values to use for account..."
+msgstr "ចង្អុល​តម្លៃ​ដើម្បីប្រើ​សម្រាប់គណនី..."
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Contact Priority"
+msgstr "អាទិភាព​ទំនាក់ទំនង"
+
+#. *< name
+#. *< version
+#. *< summary
+msgid ""
+"Allows for controlling the values associated with different buddy states."
+msgstr "អនុញ្ញាត​សម្រាប់​ពិនិត្យ​តម្លៃ​ដែល​ភ្ជាប់​ជា​មួយ​នឹង​ស្ថានភាព​មិត្តភក្ដិ​ផ្សេងៗ ។"
+
+#. *< description
+msgid ""
+"Allows for changing the point values of idle/away/offline states for buddies "
+"in contact priority computations."
+msgstr ""
+"អនុញ្ញាត​ឲ្យ​ផ្លាស់ប្ដូរ​តម្លៃចង្អុល​នៃ​ស្ថានភាព​​ទំនេរ/ចាកឆ្ងាយ/ក្រៅបណ្ដាញ​សម្រាប់​មិត្តភក្ដិ​នៅ​ក្នុង​ការ​គណនា​"
+"អាទិភាព​ទំនាក់ទំនង ។"
+
+msgid "Conversation Colors"
+msgstr "ពណ៌​សន្ទនា"
+
+msgid "Customize colors in the conversation window"
+msgstr "ប្ដូរ​ពណ៌​តាម​បំណង​នៅ​ក្នុង​បង្អួច​សន្ទនា"
+
+msgid "Error Messages"
+msgstr "សារ​កំហុស"
+
+msgid "Highlighted Messages"
+msgstr "សារ​ដែល​បាន​បន្លិច"
+
+msgid "System Messages"
+msgstr "សារ​ប្រព័ន្ធ"
+
+msgid "Sent Messages"
+msgstr "សារ​បានផ្ញើ"
+
+msgid "Received Messages"
+msgstr "សារ​បានទទួល"
+
+#, c-format
+msgid "Select Color for %s"
+msgstr "ជ្រើស​ពណ៌​សម្រាប់ %s"
+
+msgid "Ignore incoming format"
+msgstr "មិនអើពើ​ទ្រង់ទ្រាយ​ចូល"
+
+msgid "Apply in Chats"
+msgstr "អនុវត្ត​ក្នុង​ការជជែក"
+
+msgid "Apply in IMs"
+msgstr "អនុវត្ត​ក្នុង IMs"
+
+msgid "By conversation count"
+msgstr "តាម​ចំនួន​សន្ទនា"
+
+msgid "Conversation Placement"
+msgstr "ការ​ដាក់ការ​សន្ទនា"
+
+#. Translators: "New conversations" should match the text in the preferences dialog and "By conversation count" should be the same text used above
+msgid ""
+"Note: The preference for \"New conversations\" must be set to \"By "
+"conversation count\"."
+msgstr "ចំណាំ ៖ ចំណូលចិត្ត​សម្រាប់ \"ការ​សន្ទនា​ថ្មី\" ត្រូវ​តែ​បានកំណត់​ទៅ \"តាម​ចំនួន​សន្ទនា\" ។"
+
+msgid "Number of conversations per window"
+msgstr "ចំនួន​សន្ទនា​ក្នុង​មួយ​បង្អួច"
+
+msgid "Separate IM and Chat windows when placing by number"
+msgstr "បំបែក​ IM និង​បង្អួចជជែក​នៅពេល​ដាក់​តាម​លេខ"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "ExtPlacement"
+msgstr "ExtPlacement"
+
+#. *< name
+#. *< version
+msgid "Extra conversation placement options."
+msgstr "ជម្រើស​ដាក់​កា​រសន្ទនា​បន្ថែម"
+
+#. *< summary
+#. * description
+msgid ""
+"Restrict the number of conversations per windows, optionally separating IMs "
+"and Chats"
+msgstr "ដាក់កម្រិត​ចំនួន​សន្ទនា​ក្នុង​មួយ​បង្អួច ជា​ជម្រើស​បំបែក IMs និង​​ការ​ជជែក"
+
+#. Configuration frame
+msgid "Mouse Gestures Configuration"
+msgstr "ការ​កំណត់​រចនាសម្ព័ន្ធ​កាយវិការ​កណ្ដុរ"
+
+msgid "Middle mouse button"
+msgstr "ប៊ូតុង​កណ្ដុរ​កណ្ដាល"
+
+msgid "Right mouse button"
+msgstr "ប៊ូតុង​កណ្ដុរ​ស្ដាំ"
+
+#. "Visual gesture display" checkbox
+msgid "_Visual gesture display"
+msgstr "បង្ហាញ​កាយវិការ​ដែលមើលឃើញ"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Mouse Gestures"
+msgstr "កាយវិការ​កណ្ដុរ"
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Provides support for mouse gestures"
+msgstr "ផ្ដល់​នូវការ​គាំទ្រ​សម្រាប់​កាយវិកា​រកណ្ដុរ"
+
+#. * description
+msgid ""
+"Allows support for mouse gestures in conversation windows. Drag the middle "
+"mouse button to perform certain actions:\n"
+" • Drag down and then to the right to close a conversation.\n"
+" • Drag up and then to the left to switch to the previous conversation.\n"
+" • Drag up and then to the right to switch to the next conversation."
+msgstr ""
+"អនុញ្ញាត​ឲ្យ​គាំទ្រ​កាយវិការ​កណ្ដុរ​នៅក្នុង​បង្អួច​សន្ទនា ។ អូស​​ប៊ូតុង​កណ្ដុរ​កណ្ដាល​ដើម្បី​អនុវត្ត​សកម្មភាព​​មួយចំនួន​ដូច​"
+"ខាងក្រោម ៖\n"
+" • អូស​ចុះក្រោម ហើយ​បន្ទាប់មក​ទៅ​ស្ដាំដើម្បី​បិទ​ការ​សន្ទនា ។\n"
+" • អូស​ឡើង​លើ ហើយ​បន្ទាប់​មក​ទៅ​ឆ្វេង​ដើម្បីប្ដូរ​ទៅ​ការ​សន្ទនា​មុន ។\n"
+" • អូស​ឡើង​លើ ហើយ​បន្ទាប់​មក​ទៅ​ស្ដាំ​ដើម្បីប្ដូរ​ទៅ​ការ​សន្ទនា​បន្ទាប់ ។"
+
+msgid "Instant Messaging"
+msgstr "ការ​ផ្ញើសារ​បន្ទាន់"
+
+#. Add the label.
+msgid "Select a person from your address book below, or add a new person."
+msgstr "ជ្រើស​មនុស្ស​ពី​សៀវភៅ​អាសយដ្ឋាន​ខាងក្រោម ឬ​បន្ថែម​មនុស្ស​ថ្មី ។"
+
+msgid "Group:"
+msgstr "ក្រុម ៖"
+
+#. "New Person" button
+msgid "New Person"
+msgstr "មនុស្ស​ថ្មី"
+
+#. "Select Buddy" button
+msgid "Select Buddy"
+msgstr "ជ្រើស​មិត្តភក្ដិ"
+
+#. Add the label.
+msgid ""
+"Select a person from your address book to add this buddy to, or create a new "
+"person."
+msgstr "ជ្រើស​មនុស្ស​ពី​សៀវភៅ​អាសយដ្ឋាន​របស់​អ្នក ដើម្បីបន្ថែម​មិត្តភក្ដិ ឬ​បង្កើត​មនុស្ស​ថ្មី ។"
+
+#. Add the expander
+msgid "User _details"
+msgstr "សេចក្ដី​លម្អិត​អ្នក​ប្រើ"
+
+#. "Associate Buddy" button
+msgid "_Associate Buddy"
+msgstr "ភ្ជាប់​មិត្តភក្ដិ"
+
+msgid "Unable to send email"
+msgstr "មិនអាច​ផ្ញើ​អ៊ីមែល​បានទេ"
+
+msgid "The evolution executable was not found in the PATH."
+msgstr "រក​មិនឃើញ​ evolution ដែល​អាច​ប្រតិបត្តិបាន​នៅ​ក្នុង PATH ។"
+
+msgid "An email address was not found for this buddy."
+msgstr "រក​មិនឃើញអាសយដ្ឋាន​អ៊ីមែល​សម្រាប់​មិត្តភក្ដិ​នេះ​ទេ ។"
+
+msgid "Add to Address Book"
+msgstr "បន្ថែម​ទៅ​សៀវភៅ​អាសយដ្ឋាន"
+
+msgid "Send Email"
+msgstr "ផ្ញើ​អ៊ីមែល"
+
+#. Configuration frame
+msgid "Evolution Integration Configuration"
+msgstr "ការ​កំណត់​រចនាសម្ព័ន្ធ​​ការ​រួមបញ្ចូល Evolution"
+
+#. Label
+msgid "Select all accounts that buddies should be auto-added to."
+msgstr "ជ្រើស​គណនី​ទាំង​អស់​ដែលមិត្តភក្ដិ​គួរ​ត្រូវ​បាន​បន្ថែម​ដោយ​ស្វ័យ​ប្រវត្តិ ។"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Evolution Integration"
+msgstr "ការ​រួម​បញ្ចូល Evolution"
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Provides integration with Evolution."
+msgstr "ផ្ដល់​នូវការ​បញ្ចូល​ជា​មួយ Evolution ។"
+
+msgid "Please enter the person's information below."
+msgstr "សូម​បញ្ចូល​ព័ត៌មាន​របស់​មនុស្ស​ខាង​ក្រោម ។"
+
+msgid "Please enter the buddy's username and account type below."
+msgstr "សូម​បញ្ចូល​ឈ្មោះ​អ្នកប្រើ​របស់​មិត្តភក្ដិ និង​ប្រភេទ​គណនី​ខា​ងក្រោម ។"
+
+msgid "Account type:"
+msgstr "ប្រភេទ​គណនី ៖"
+
+#. Optional Information section
+msgid "Optional information:"
+msgstr "ព័ត៌មាន​ជម្រើស ៖"
+
+msgid "First name:"
+msgstr "នាមខ្លួន ៖"
+
+msgid "Last name:"
+msgstr "នាម​ត្រកូល ៖"
+
+msgid "Email:"
+msgstr "អ៊ីមែល ៖"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "GTK Signals Test"
+msgstr "ការ​សាកល្បង​សញ្ញា​ GTK"
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Test to see that all ui signals are working properly."
+msgstr "សាកល្បង​ដើម្បី​មើល​សញ្ញា​ចំណុច​ប្រទាក់​អ្នកប្រើ​ទាំង​អស់​ដែល​កំពុង​ដំណើរការ​យ៉ាង​ត្រឹមត្រូវ ។"
+
+#, c-format
+msgid ""
+"\n"
+"<b>Buddy Note</b>: %s"
+msgstr ""
+"\n"
+"<b>ចំណាំ​មិត្តភក្ដិ</b> ៖ %s"
+
+msgid "History"
+msgstr "ប្រវត្តិ"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Iconify on Away"
+msgstr "កំណត់​រូបតំណាង​នៅពេល​ចាកឆ្ងាយ"
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Iconifies the buddy list and your conversations when you go away."
+msgstr "កំណត់​រូបតំណាង​បញ្ជីមិត្តភក្ដិ និង​ការ​សន្ទនា​របស់​អ្នកនៅពេល​ចាកឆ្ងាយ ។"
+
+msgid "Mail Checker"
+msgstr "កម្មវិធី​ពិនិត្យ​សំបុត្រ"
+
+msgid "Checks for new local mail."
+msgstr "ពិនិត្យ​មើល​សំបុត្រ​មូលដ្ឋាន​ថ្មី ។"
+
+msgid "Adds a small box to the buddy list that shows if you have new mail."
+msgstr "បន្ថែម​ប្រអប់​តូច​ទៅ​កាន់បញ្ជី​មិត្តភក្ដិ ដែល​បង្ហាញ​ប្រសិន​បើ​អ្នក​មាន​សំបុត្រ​ថ្មី ។"
+
+msgid "Markerline"
+msgstr "បន្ទាត់​សញ្ញា​សម្គាល់"
+
+msgid "Draw a line to indicate new messages in a conversation."
+msgstr "គូរ​បន្ទាត់​ដើម្បី​បង្ហាញ​សារ​ថ្មី​នៅ​ក្នុង​កសារ​សន្ទនា ។"
+
+msgid "Jump to markerline"
+msgstr "លោត​ទៅ​បន្ទាត់​សញ្ញា​សម្គាល់"
+
+msgid "Draw Markerline in "
+msgstr "គូរ​បន្ទាត់​សញ្ញា​សម្គាល់​នៅ​ក្នុង"
+
+msgid "_IM windows"
+msgstr "បង្អួច IM"
+
+msgid "C_hat windows"
+msgstr "បង្អួច​ការ​ជជែក"
+
+msgid ""
+"A music messaging session has been requested. Please click the MM icon to "
+"accept."
+msgstr "បាន​ស្នើ​សម័យ​ផ្ញើសារ​តន្ត្រី ។ សូម​ចុច​រូបតំណាង MM ដើម្បីទទួល​យក ។"
+
+msgid "Music messaging session confirmed."
+msgstr "បានអះអាង​សម័យ​ផ្ញើសារ​តន្ត្រី ។"
+
+msgid "Music Messaging"
+msgstr "កា​រផ្ញើសារ​តន្ត្រី"
+
+msgid "There was a conflict in running the command:"
+msgstr "មាន​កា​រប៉ះទង្គិច​ក្នុងការ​រត់​ពាក្យ​បញ្ជា ៖"
+
+msgid "Error Running Editor"
+msgstr "កំហុស​ក្នុងការ​រត់​កម្មវិធី​កែសម្រួល"
+
+msgid "The following error has occurred:"
+msgstr "កំហុស​ដូច​ខាងក្រោម​បានកើត​ឡើង ៖"
+
+#. Configuration frame
+msgid "Music Messaging Configuration"
+msgstr "ការ​កំណត់​រចនាសម្ព័ន្ធ​ការ​ផ្ញើសារ​តន្ត្រី"
+
+msgid "Score Editor Path"
+msgstr "ដាក់​ពិន្ទុ​ផ្លូវ​កម្មវិធី​កែសម្រួល"
+
+msgid "_Apply"
+msgstr "អនុវត្ត"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+msgid "Music Messaging Plugin for collaborative composition."
+msgstr "កម្មវិធី​ជំនួយ​ផ្ញើសារ​តន្ត្រី​សម្រាប់​ការ​តែង​សហការណ៍ ។"
+
+#. * summary
+msgid ""
+"The Music Messaging Plugin allows a number of users to simultaneously work "
+"on a piece of music by editting a common score in real-time."
+msgstr ""
+"កម្មវិធី​ផ្ញើសារ​តន្ត្រី​អនុញ្ញាត​ឲ្យ​អ្នកប្រើជា​ច្រើន​ធ្វើការ​ដំណាល​គ្នា​លើ​ផ្នែក​តន្ត្រី​ដោយ​កែសម្រួល​ពិន្ទុ​ធម្មតា​នៅ​"
+"ក្នុង​ពេលវេលា​ពិតប្រាកដ ។"
+
+#. ---------- "Notify For" ----------
+msgid "Notify For"
+msgstr "ជូន​ដំណឹង​សម្រាប់"
+
+msgid "\t_Only when someone says your username"
+msgstr "\tតែ​នៅពេល​មាន​អ្នកណាម្នាក់​និយាយ​អំពីឈ្មោះ​អ្នកប្រើ​របស់​អ្នក"
+
+msgid "_Focused windows"
+msgstr "បង្អួច​បានផ្ដោត​អារម្មណ៍"
+
+#. ---------- "Notification Methods" ----------
+msgid "Notification Methods"
+msgstr "វិធីសាស្ត្រ​ជូនដំណឹង"
+
+msgid "Prepend _string into window title:"
+msgstr "បន្ថែម​ខ្សែអក្សរ​ទៅ​ចំណង​ជើង​បង្អួច ៖"
+
+#. Count method button
+msgid "Insert c_ount of new messages into window title"
+msgstr "បញ្ចូល​ចំនួន​សារ​ថ្មី​ទៅ​ក្នុង​ចំណង​ជើង​បង្អួច"
+
+#. Count xprop method button
+msgid "Insert count of new message into _X property"
+msgstr "បញ្ចូល​ចំនួនសារ​ថ្មី​ទៅ​ក្នុងលក្ខណៈសម្បត្តិ X"
+
+#. Urgent method button
+msgid "Set window manager \"_URGENT\" hint"
+msgstr "កំណត់​ជំនួយ​កម្មវិធី​គ្រប់គ្រង​បង្អួច \"_URGENT\""
+
+msgid "_Flash window"
+msgstr "បញ្ចេញពន្លឺ"
+
+#. Raise window method button
+msgid "R_aise conversation window"
+msgstr "លើក​បង្អួច​សន្ទនា​ឡើង​លើ"
+
+#. Present conversation method button
+msgid "_Present conversation window"
+msgstr "បង្ហាញ​បង្អួច​សន្ទនា"
+
+#. ---------- "Notification Removals" ----------
+msgid "Notification Removal"
+msgstr "យក​ការ​ជូនដំណឹ​ង​ចេញ"
+
+#. Remove on focus button
+msgid "Remove when conversation window _gains focus"
+msgstr "យកចេញ​នៅពេល​មានការ​ផ្ដោត​លើ​បង្អួច​សន្ទនា"
+
+#. Remove on click button
+msgid "Remove when conversation window _receives click"
+msgstr "យកចេញ​នៅពេល​ចុច​បង្អួច​សន្ទនា"
+
+#. Remove on type button
+msgid "Remove when _typing in conversation window"
+msgstr "យកចេញ​នៅពេល​វាយ​ក្នុង​បង្អួច​សន្ទនា"
+
+#. Remove on message send button
+msgid "Remove when a _message gets sent"
+msgstr "យកចេញ​នៅពេល​បានផ្ញើសារ"
+
+#. Remove on conversation switch button
+msgid "Remove on switch to conversation ta_b"
+msgstr "យកចេញ​នៅពេល​ប្ដូរ​ទៅ​ផ្ទាង​សន្ទនា"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Message Notification"
+msgstr "កា​រជូនដំណឹង​សារ"
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "Provides a variety of ways of notifying you of unread messages."
+msgstr "ផ្ដល់​នូវវិធីផ្សេងៗ​នៃ​ការ​ជូនដំណឹង​​អ្នក​អំពី​សារ​មិនទាន់អាន ។"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Pidgin Demonstration Plugin"
+msgstr "កម្មវិធី​ជំនួយបង្ហាញ​របស់ Pidgin"
+
+#. *< name
+#. *< version
+#. * summary
+msgid "An example plugin that does stuff - see the description."
+msgstr "កម្មវិធីជំនួយ​គំរូ​ដែល​ធ្វើការ - សូម​សេចក្ដិពិពណ៌នា ​​​។"
+
+#. * description
+msgid ""
+"This is a really cool plugin that does a lot of stuff:\n"
+"- It tells you who wrote the program when you log in\n"
+"- It reverses all incoming text\n"
+"- It sends a message to people on your list immediately when they sign on"
+msgstr ""
+"នេះ​គឺជា​កម្មវិធី​ជំនួយ​ពិតជា​ល្អ​ដែល​ធ្វើការជា​ច្រើន ៖\n"
+"- វា​ប្រាប់អ្នក​ថាអ្នកបានសរសេរ​កម្មវិធី​នៅពេល​អ្នកចូល\n"
+"- វា​បម្រុង​ទុក​អត្ថបទ​ចូល​ទាំង​អស់\n"
+"- វា​ផ្ញើ​សារ​ទៅមនុស្ស​នៅ​ក្នុង​បញ្ជី​របស់​អ្នក​ភ្លាមៗ នៅពេល​ពួកគេ​ចូល"
+
+msgid "Cursor Color"
+msgstr "ពណ៌​ទស្សន៍ទ្រនិច"
+
+msgid "Secondary Cursor Color"
+msgstr "ពណ៌​ទស្សន៍​ទ្រនិចទីពីរ"
+
+msgid "Hyperlink Color"
+msgstr "ពណ៌​តំណខ្ពស់"
+
+msgid "Visited Hyperlink Color"
+msgstr "ពណ៌​តំណខ្ពស់​ដែលបានទស្សនា"
+
+msgid "Highlighted Message Name Color"
+msgstr "ពណ៌​ឈ្មោះសារ​ដែល​បាន​បន្លិច"
+
+msgid "GtkTreeView Horizontal Separation"
+msgstr "ការ​បំបែក​ផ្ដេក​របស់ GtkTreeView"
+
+msgid "Conversation Entry"
+msgstr "ធាតុ​​​សន្ទនា"
+
+msgid "Request Dialog"
+msgstr "ប្រអប់​សំណើ"
+
+msgid "Notify Dialog"
+msgstr "ប្រអប់​ជូនដំណឹង"
+
+msgid "Select Color"
+msgstr "ជ្រើស​ពណ៌"
+
+#, c-format
+msgid "Select Interface Font"
+msgstr "ជ្រើស​ពុម្ពអក្សរ​ចំណុច​ប្រទាក់"
+
+#, c-format
+msgid "Select Font for %s"
+msgstr "ជ្រើស​ពុម្ពអក្សរ​សម្រាប់ %s"
+
+msgid "GTK+ Interface Font"
+msgstr "GTK+ ពុម្ពអក្សរ​ចំណុច​ប្រទាក់"
+
+msgid "GTK+ Text Shortcut Theme"
+msgstr "GTK+ ស្បែក​ផ្លូវកាត់អត្ថបទ"
+
+#.
+#. for (i = 0; i < G_N_ELEMENTS(widget_bool_prefs); i++) {
+#. hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_CAT_SPACE);
+#. gtk_box_pack_start(GTK_BOX(frame), hbox, FALSE, FALSE, 0);
+#.
+#. check = pidgin_prefs_checkbox(_(widget_bool_names[i]),
+#. widget_bool_prefs_set[i], hbox);
+#. gtk_size_group_add_widget(labelsg, check);
+#.
+#. widget_bool_widgets[i] = pidgin_prefs_checkbox("", widget_bool_prefs[i], hbox);
+#. *
+#. gtk_size_group_add_widget(widgetsb, widget_bool_widgets[i]);
+#. *
+#. gtk_widget_set_sensitive(widget_bool_widgets[i],
+#. purple_prefs_get_bool(widget_bool_prefs_set[i]));
+#. g_signal_connect(G_OBJECT(check), "toggled",
+#. G_CALLBACK(pidgin_toggle_sensitive),
+#. widget_bool_widgets[i]);
+#. }
+#.
+msgid "Interface colors"
+msgstr "ពណ៌​ចំណុច​ប្រទាក់"
+
+msgid "Widget Sizes"
+msgstr "ទំហំ​ធាតុក្រាហ្វិក"
+
+msgid "Fonts"
+msgstr "ពុម្ព​​អក្សរ"
+
+msgid "Gtkrc File Tools"
+msgstr "ឧបករណ៍​ឯកសារ Gtkrc"
+
+#, c-format
+msgid "Write settings to %s%sgtkrc-2.0"
+msgstr "សរសេរ​ការ​កំណត់​ទៅ​កាន់ %s%sgtkrc-2.0"
+
+msgid "Re-read gtkrc files"
+msgstr "អាន​ឯកសារ gtkrc ឡើង​វិញ"
+
+msgid "Pidgin GTK+ Theme Control"
+msgstr "កម្មវិធី​ជំនួយ GTK+ ការ​ត្រួតពិនិត្យ​ស្បែក"
+
+msgid "Provides access to commonly used gtkrc settings."
+msgstr "ផ្ដល់​នូវ​កា​រចូលដំណើរការ​ទៅកាន់​ការ​កំណត់ gtkrc ដែលបាន​ប្រើ​ធម្មតា ។"
+
+msgid "Raw"
+msgstr "ដើម"
+
+msgid "Lets you send raw input to text-based protocols."
+msgstr "អនុញ្ញាត​ឲ្យ​អ្នក​ផ្ញើ​កា​របញ្ចូលដើម​ទៅ​កាន់​​​អត្ថបទ​ដែល​មានមូលដ្ឋាន​លើ​ពិធីការ ។"
+
+msgid ""
+"Lets you send raw input to text-based protocols (XMPP, MSN, IRC, TOC). Hit "
+"'Enter' in the entry box to send. Watch the debug window."
+msgstr ""
+"អនុញ្ញាត​ឲ្យ​អ្នក​ផ្ញើ​ការ​បញ្ចូលដើម​ទៅ​អត្ថបទ​ដែលមានមូលដ្ឋាន​លើ​ពិធីការ (XMPP, MSN, IRC, TOC) ។ ចុច​"
+"គ្រាប់ចុច 'បញ្ចូល (Enter)' នៅ​ក្នុង​ប្រអប់​ធាតុ​ដើម្បី​ផ្ញើ ។ មើល​បង្អួច​បំបាត់កំហុស ។"
+
+#, c-format
+msgid "You can upgrade to %s %s today."
+msgstr "អ្នកអាច​ធ្វើ​ឲ្យ​ប្រសើរ​ទៅ %s %s ថ្ងៃ​នេះ ។"
+
+msgid "New Version Available"
+msgstr "មានកំណែថ្មី"
+
+msgid "Later"
+msgstr "ពេលក្រោយ"
+
+msgid "Download Now"
+msgstr "ទាញយក​ឥឡូវ"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Release Notification"
+msgstr "ការ​ជូនដំណឹង​ចេញផ្សាយ"
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Checks periodically for new releases."
+msgstr "ពិនិត្យ​មើល​ការ​ចេញផ្សាយ​តាម​កំណត់​សម្រាប់ការ​ចេញផ្សាយ​ថ្មី ។"
+
+#. * description
+msgid ""
+"Checks periodically for new releases and notifies the user with the "
+"ChangeLog."
+msgstr "ពិនិត្យ​មើល​កា​ចេញផ្សាយ​​តាមកំណត់​សម្រាប់​ការ​ចេញផ្សាយ​ថ្មី និងជូនដំណឹង​អ្នកប្រើ​ក្នុង ChangeLog ។"
+
+#. *< major version
+#. *< minor version
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Send Button"
+msgstr "ផ្ញើ​ប៊ូតុង​"
+
+#. *< name
+#. *< version
+msgid "Conversation Window Send Button."
+msgstr "ប៊ូតុង​​ផ្ញើ​បង្អួច​សន្ទនា ។"
+
+#. *< summary
+msgid ""
+"Adds a Send button to the entry area of the conversation window. Intended "
+"for when no physical keyboard is present."
+msgstr "បន្ថែម​ប៊ូតុង​ផ្ញើ​ទៅ​ផ្ទៃ​ធាតុ​របស់​បង្អួច​សន្ទនា ។ បំណង​សម្រាប់នៅពេល​ដែល​គ្មាន​ក្ដារចុច​ពិត ។"
+
+msgid "Duplicate Correction"
+msgstr "ស្ទួនកំណែ"
+
+msgid "The specified word already exists in the correction list."
+msgstr "មាន​ពាក្យដែលបានបញ្ជាក់រួច​ហើយ​នៅក្នុង​បញ្ជី​កែ ។"
+
+msgid "Text Replacements"
+msgstr "ការ​ជំនួស​អត្ថបទ"
+
+msgid "You type"
+msgstr "អ្នកវាយ"
+
+msgid "You send"
+msgstr "អ្នក​ផ្ញើ"
+
+msgid "Whole words only"
+msgstr "តែ​ពាក្យ​ទាំង​មូល"
+
+msgid "Case sensitive"
+msgstr "ប្រកាន់​អក្សរ​តូចធំ"
+
+msgid "Add a new text replacement"
+msgstr "បន្ថែម​ការ​ជំនួស​អត្ថបទ​ថ្មី"
+
+msgid "You _type:"
+msgstr "អ្នក​វាយ ៖"
+
+msgid "You _send:"
+msgstr "អ្នកផ្ញើ ៖"
+
+#. Created here so it can be passed to whole_words_button_toggled.
+msgid "_Exact case match (uncheck for automatic case handling)"
+msgstr "ការ​ផ្គូផ្គង​ករណី​ជាក់លាក់ (ដោះធីក​សម្រាប់​ការ​គ្រប់គ្រង​ករណី​ដោ​យ​ស្វ័យ​ប្រវត្តិ)"
+
+msgid "Only replace _whole words"
+msgstr "តែ​ការ​ជំនួស​ពាក្យ​ទាំង​មូលប៉ុណ្ណោះ"
+
+msgid "General Text Replacement Options"
+msgstr "ជម្រើស​ជំនួស​អត្ថបទ​ទូទៅ"
+
+msgid "Enable replacement of last word on send"
+msgstr "បើក​ការជំនួស​ពាក្យ​ចុងក្រោយ​នៅពេល​ផ្ញើ"
+
+msgid "Text replacement"
+msgstr "កា​រជំនួស​អត្ថបទ"
+
+msgid "Replaces text in outgoing messages according to user-defined rules."
+msgstr "ជំនួស​អត្ថបទ​នៅ​ក្នុង​សារ​ចេញ ដោយ​យោង​តាម​ក្បួន​កំណត់​ដោយ​អ្នកប្រើ ។"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Buddy Ticker"
+msgstr "ការ​បន្លឺ​សំឡេង​របស់​មិត្តភក្ដិ"
+
+#. *< name
+#. *< version
+#. * summary
+#. * description
+msgid "A horizontal scrolling version of the buddy list."
+msgstr "កំណែ​រមូរ​ផ្ដេក​របស់​បញ្ជីមិត្តភក្ដិ ។"
+
+msgid "Display Timestamps Every"
+msgstr "បង្ហាញ​ត្រាពេលវេលា​រៀងរាល់"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Timestamp"
+msgstr "ត្រា​ពេលវេលា"
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Display iChat-style timestamps"
+msgstr "បង្ហាញ​ត្រាពេលវេលា​របស់ iChat-style"
+
+#. * description
+msgid "Display iChat-style timestamps every N minutes."
+msgstr "បង្ហាញ​ត្រា​ពេលវេលា​របស់ iChat-style រៀងរាល់ N នាទី ។"
+
+msgid "Timestamp Format Options"
+msgstr "ជម្រើស​ទ្រង់ទ្រាយ​ត្រា​ពេលវេលា"
+
+#, c-format
+msgid "_Force 24-hour time format"
+msgstr "បង្ខំ​ទ្រង់ទ្រាយ​ពេលវេលា​ ២៤- ម៉ោង"
+
+msgid "Show dates in..."
+msgstr "បង្ហាញ​កាលបរិច្ឆេទ​ក្នុង..."
+
+msgid "Co_nversations:"
+msgstr "ការ​សន្ទនា ៖"
+
+msgid "For delayed messages"
+msgstr "សម្រាប់សារ​ដែលបានពន្យារ"
+
+msgid "For delayed messages and in chats"
+msgstr "សម្រាប់សារ​ដែលបាន​ពន្យារ​ និង​ក្នុង​គំនូស​តាង"
+
+msgid "_Message Logs:"
+msgstr "កំណត់​ហេតុ​សារ ៖"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Message Timestamp Formats"
+msgstr "ទ្រង់ទ្រាយ​ត្រា​ពេលវេលា​សារ"
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Customizes the message timestamp formats."
+msgstr "ប្ដូរ​ទ្រង់ទ្រាយ​ត្រា​ពេលវេលា​ផ្ទាល់ខ្លួន ។"
+
+#. * description
+msgid ""
+"This plugin allows the user to customize conversation and logging message "
+"timestamp formats."
+msgstr ""
+"កម្មវិធី​ជំនួយ​នេះ​អនុញ្ញាត​ឲ្យ​អ្នកប្រើ​ប្ដូរ​ទ្រង់ទ្រាយ​​ការ​សន្ទនា និង​កា​រចុះ​កំណត់ហេតុ​សារ​ត្រាពេលវេលា​"
+"ផ្ទាល់ខ្លួន ។"
+
+msgid "Opacity:"
+msgstr "ភាព​ស្រអាប់ ៖"
+
+#. IM Convo trans options
+msgid "IM Conversation Windows"
+msgstr "បង្អួច​សន្ទនា IM"
+
+msgid "_IM window transparency"
+msgstr "ភាពថ្លា​បង្អួច​របស់ IM"
+
+msgid "_Show slider bar in IM window"
+msgstr "បង្ហាញ​របារ​គ្រាប់រំកិល​នៅ​ក្នុងបង្អួច IM"
+
+msgid "Remove IM window transparency on focus"
+msgstr "យក​ភាព​ថ្លា​របស់​បង្អួច IM ចេញ​​នៅពេល​ផ្ដោត"
+
+msgid "Always on top"
+msgstr "តែងតែ​នៅ​លើ​ជា​និច្ច"
+
+#. Buddy List trans options
+msgid "Buddy List Window"
+msgstr "បង្អួច​បញ្ជី​មិត្តភក្ដិ"
+
+msgid "_Buddy List window transparency"
+msgstr "ភាព​ថ្លា​របស់បង្អួច​បញ្ជីមិត្តភក្ដិ"
+
+msgid "Remove Buddy List window transparency on focus"
+msgstr "យក​ភាព​ថ្លា​របស់​បង្អួច​បញ្ជីមិត្តភក្ដិ​ចេញ​នៅពេល​ផ្ដោត"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Transparency"
+msgstr "ភាព​ថ្លា​"
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Variable Transparency for the buddy list and conversations."
+msgstr "ភាព​ថ្លា​ដែល​មាន​សម្រាប់បញ្ជី​មិត្តភក្ដិ​ និង​ការសន្ទនា ។"
+
+#. * description
+msgid ""
+"This plugin enables variable alpha transparency on conversation windows and "
+"the buddy list.\n"
+"\n"
+"* Note: This plugin requires Win2000 or greater."
+msgstr ""
+"កម្មវិធី​ជំនួយ​នេះ​បើក​ភាព​ថ្លា​អាល់ហ្វា​ដែល​អាច​ប្រើ​បាន​នៅ​ក្នុង​បង្អួច​សន្ទនា និង​បញ្ជីមិត្តភក្ដិ ។\n"
+"\n"
+"* ចំណាំ ៖ កម្មវិធី​ជំនួយ​នេះ​ត្រូវការ Win2000 ឬ​ខ្ពស់​ជាង​នេះ ។"
+
+msgid "GTK+ Runtime Version"
+msgstr "កំណែ GTK+ Runtime"
+
+#. Autostart
+msgid "Startup"
+msgstr "ចាប់ផ្ដើម"
+
+#, c-format
+msgid "_Start %s on Windows startup"
+msgstr "ចាប់ផ្ដើម​ %s នៅពេល​បង្អួច​ចាប់ផ្ដើម"
+
+msgid "_Dockable Buddy List"
+msgstr "បញ្ជី​មិត្តភ្ដិ​ដែល​អាច​ចូលផែ​បាន"
+
+#. Blist On Top
+msgid "_Keep Buddy List window on top:"
+msgstr "ទុក​បង្អួច​បញ្ជីមិត្តភក្ដិ​​នៅ​កំពូល ៖"
+
+#. XXX: Did this ever work?
+msgid "Only when docked"
+msgstr "តែ​នៅពេល​បានចូលផែ​ប៉ុណ្ណោះ"
+
+msgid "Windows Pidgin Options"
+msgstr "ជម្រើស​​បង្អួច​របស់ Pidgin"
+
+msgid "Options specific to Pidgin for Windows."
+msgstr "ជម្រើស​ជាក់លាក់​ទៅ Pidgin សម្រាប់​បង្អួច ។"
+
+msgid ""
+"Provides options specific to Pidgin for Windows , such as buddy list docking."
+msgstr "ផ្ដល់​នូវ​ជម្រើស​ជាក់លាក់​ទៅ Pidgin សម្រាប់​វីនដូច​ជា​បញ្ជី​មិត្តភក្ដិ​ចូលផែ ។"
+
+msgid "<font color='#777777'>Logged out.</font>"
+msgstr "<font color='#777777'>បានចេញ ។</font>"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "XMPP Console"
+msgstr "កុងសូល XMPP"
+
+msgid "Account: "
+msgstr "គណនី ៖"
+
+msgid "<font color='#777777'>Not connected to XMPP</font>"
+msgstr "<font color='#777777'>បានតភ្ជាប់​ទៅ​កាន់ XMPP</font>"
+
+msgid "Insert an <iq/> stanza."
+msgstr "បញ្ចូល <iq/> stanza ។"
+
+msgid "Insert a <presence/> stanza."
+msgstr "បញ្ចូល <presence/> stanza ។"
+
+msgid "Insert a <message/> stanza."
+msgstr "បញ្ចូល <message/> stanza ។"
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Send and receive raw XMPP stanzas."
+msgstr "ផ្ញើ​ និង​ទទួល​ XMPP stanzas ដើម ។"
+
+#. * description
+msgid "This plugin is useful for debbuging XMPP servers or clients."
+msgstr "កម្មវិធី​ជំនួយ​នេះ​មានប្រយោជន៍​សម្រាប់បំបាត់​កំហុស​ម៉ាស៊ីនបម្រើ ឬ​ម៉ាស៊ីន​ភ្ញៀវ XMPP ។"
diff --git a/po/nb.po b/po/nb.po
index 5297c96808..7b222bc182 100644
--- a/po/nb.po
+++ b/po/nb.po
@@ -14,10 +14,10 @@ msgid ""
msgstr ""
"Project-Id-Version: nb\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-01-13 09:58-0500\n"
-"PO-Revision-Date: 2009-01-14 01:45+0100\n"
+"POT-Creation-Date: 2009-02-24 09:57-0500\n"
+"PO-Revision-Date: 2009-02-24 18:47+0100\n"
"Last-Translator: Hans Fredrik Nordhaug <hans@nordhaug.priv.no>\n"
-"Language-Team: Norsk <nb@li.org>\n"
+"Language-Team: Norwegian Bokmål <i18n-nb@lister.ping.ui.no>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -39,7 +39,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,14 +48,20 @@ msgstr ""
"Bruk: %s [Valg]...\n"
"\n"
" -c, --config=DIR bruk DIR for konfigurasjonsfiler\n"
-" -d, --debug skriv debugging beskjeder til stdout\n"
+" -d, --debug skriv feilsøkingsbeskjeder til stderr\n"
" -h, --help vis denne hjelpen og avslutt\n"
" -n, --nologin ikke logg automatisk inn\n"
" -v, --version vis den nåværende versjon og avslutt\n"
#, c-format
-msgid "%s encountered errors migrating your settings from %s to %s. Please investigate and complete the migration by hand. Please report this error at http://developer.pidgin.im"
-msgstr "%s det inntraff en feil i migreringen av ditt oppsett fra %s til %s. Vennligst undersøk og gjør ferdig migreringen for hånd. Vennligst raporter denne feilen på http://developer.pidgin.im"
+msgid ""
+"%s encountered errors migrating your settings from %s to %s. Please "
+"investigate and complete the migration by hand. Please report this error at "
+"http://developer.pidgin.im"
+msgstr ""
+"%s det inntraff en feil i migreringen av ditt oppsett fra %s til %s. "
+"Vennligst undersøk og gjør ferdig migreringen for hånd. Vennligst raporter "
+"denne feilen på http://developer.pidgin.im"
msgid "Error"
msgstr "Feil"
@@ -293,10 +299,12 @@ msgid "Enter empty string to reset the name."
msgstr "Skriv tom streng for å resette navnet."
msgid "Removing this contact will also remove all the buddies in the contact"
-msgstr "Fjerning av denne kontakten vil også fjerne alle medlemmene i denne kontakten"
+msgstr ""
+"Fjerning av denne kontakten vil også fjerne alle medlemmene i denne kontakten"
msgid "Removing this group will also remove all the buddies in the group"
-msgstr "Fjerning av denne gruppen vil også fjerne alle kontaktene i denne gruppa"
+msgstr ""
+"Fjerning av denne gruppen vil også fjerne alle kontaktene i denne gruppa"
#, c-format
msgid "Are you sure you want to remove %s?"
@@ -352,8 +360,12 @@ msgstr "Blokker"
msgid "Unblock"
msgstr "Ikke Blokker"
-msgid "Please enter the username or alias of the person you would like to Block/Unblock."
-msgstr "Skriv inn brukernavnet eller aliaset på den personen du vil blokkere/ikke blokkere."
+msgid ""
+"Please enter the username or alias of the person you would like to Block/"
+"Unblock."
+msgstr ""
+"Skriv inn brukernavnet eller aliaset på den personen du vil blokkere/ikke "
+"blokkere."
#. Not multiline
#. Not masked?
@@ -362,10 +374,12 @@ msgid "OK"
msgstr "OK"
msgid "New Instant Message"
-msgstr "Ny direktemelding"
+msgstr "Ny lynmelding"
msgid "Please enter the username or alias of the person you would like to IM."
-msgstr "Skriv inn brukernavnet eller aliaset på den personen du vil sende direktemelding til."
+msgstr ""
+"Skriv inn brukernavnet eller aliaset på den personen du vil sende "
+"lynmelding til."
msgid "Channel"
msgstr "Kanal"
@@ -379,15 +393,18 @@ msgstr "Skriv inn navnet på den samtalegruppen du vil bli med i."
msgid "Join"
msgstr "Bli med"
-msgid "Please enter the username or alias of the person whose log you would like to view."
-msgstr "Skriv inn brukernavnet eller aliaset til den personen du vil se loggen til."
+msgid ""
+"Please enter the username or alias of the person whose log you would like to "
+"view."
+msgstr ""
+"Skriv inn brukernavnet eller aliaset til den personen du vil se loggen til."
#. Create the "Options" frame.
msgid "Options"
msgstr "Brukervalg"
msgid "Send IM..."
-msgstr "Send direktemelding..."
+msgstr "Send lynmelding..."
msgid "Block/Unblock..."
msgstr "Blokker/ikke blokker ..."
@@ -526,17 +543,23 @@ msgstr "%s koblet fra."
msgid ""
"%s\n"
"\n"
-"Finch will not attempt to reconnect the account until you correct the error and re-enable the account."
+"Finch will not attempt to reconnect the account until you correct the error "
+"and re-enable the account."
msgstr ""
"%s\n"
"\n"
-"Finch vil ikke forsøke å koble kontoen til igjen før du har rettet på feilen og slått på kontoen igjen."
+"Finch vil ikke forsøke å koble kontoen til igjen før du har rettet på feilen "
+"og slått på kontoen igjen."
msgid "Re-enable Account"
msgstr "Reaktiver konto"
-msgid "The account has disconnected and you are no longer in this chat. You will be automatically rejoined in the chat when the account reconnects."
-msgstr "Denne kontoen er koblet av og du er ikke lenger med i denne samtalen. Du blir automatisk med i samtalen når kontoen kobler til igjen."
+msgid ""
+"The account has disconnected and you are no longer in this chat. You will be "
+"automatically rejoined in the chat when the account reconnects."
+msgstr ""
+"Denne kontoen er koblet av og du er ikke lenger med i denne samtalen. Du "
+"blir automatisk med i samtalen når kontoen kobler til igjen."
msgid "No such command."
msgstr "Ingen slik kommando."
@@ -548,10 +571,10 @@ msgid "Your command failed for an unknown reason."
msgstr "Din kommando feilet av ukjent årsak."
msgid "That command only works in chats, not IMs."
-msgstr "Den kommandoen virker bare i samtalegrupper, ikke i direktemeldinger."
+msgstr "Den kommandoen virker bare i samtalegrupper, ikke i lynmeldinger."
msgid "That command only works in IMs, not chats."
-msgstr "Den kommandoen virker bare i direktemeldinger, ikke samtalegrupper."
+msgstr "Den kommandoen virker bare i lynmeldinger, ikke samtalegrupper."
msgid "That command doesn't work on this protocol."
msgstr "Denne kommandoen virker ikke på denne protokollen."
@@ -579,10 +602,13 @@ msgid "You have left this chat."
msgstr "Du har forlatt denne samtalen."
msgid "Logging started. Future messages in this conversation will be logged."
-msgstr "Innlogging startet. Fremtidige beskjeder i denne samtalen vil bli logget."
+msgstr ""
+"Innlogging startet. Fremtidige beskjeder i denne samtalen vil bli logget."
-msgid "Logging stopped. Future messages in this conversation will not be logged."
-msgstr "Logging stoppet. Framtidige beskjeder i denne samtalen vil ikke bli logget."
+msgid ""
+"Logging stopped. Future messages in this conversation will not be logged."
+msgstr ""
+"Logging stoppet. Framtidige beskjeder i denne samtalen vil ikke bli logget."
msgid "Send To"
msgstr "Send til"
@@ -644,21 +670,34 @@ msgstr ""
"De følgende kommandoer er tilgjengelige i denne sammenhengen:\n"
#, c-format
-msgid "%s is not a valid message class. See '/help msgcolor' for valid message classes."
-msgstr "%s er ingen gyldig beskjedklasse. Se «/help msgcolor» for gyldige beskjedklasser."
+msgid ""
+"%s is not a valid message class. See '/help msgcolor' for valid message "
+"classes."
+msgstr ""
+"%s er ingen gyldig beskjedklasse. Se «/help msgcolor» for gyldige "
+"beskjedklasser."
#, c-format
msgid "%s is not a valid color. See '/help msgcolor' for valid colors."
msgstr "%s er ingen gyldig farge. Se «/help msgcolor» for gyldige farger."
-msgid "say &lt;message&gt;: Send a message normally as if you weren't using a command."
-msgstr "say &lt;message&gt;: Send en beskjed normalt som om du ikke brukte en kommando."
+msgid ""
+"say &lt;message&gt;: Send a message normally as if you weren't using a "
+"command."
+msgstr ""
+"say &lt;message&gt;: Send en beskjed normalt som om du ikke brukte en "
+"kommando."
msgid "me &lt;action&gt;: Send an IRC style action to a buddy or chat."
-msgstr "me &lt;action&gt;: Send en IRC stil handling til en kontakt eller samtale."
+msgstr ""
+"me &lt;action&gt;: Send en IRC stil handling til en kontakt eller samtale."
-msgid "debug &lt;option&gt;: Send various debug information to the current conversation."
-msgstr "debug &lt;option&gt;: Send diverse debug informasjon til den pågående samtalen."
+msgid ""
+"debug &lt;option&gt;: Send various debug information to the current "
+"conversation."
+msgstr ""
+"debug &lt;option&gt;: Send diverse debug informasjon til den pågående "
+"samtalen."
msgid "clear: Clears the conversation scrollback."
msgstr "clear: Renser samtale scrollback."
@@ -687,8 +726,18 @@ msgstr "prefs: Vis preferanse vindu."
msgid "statuses: Show the savedstatuses window."
msgstr "statuses: Vis lagrede statuser i vindu."
-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;forgrunn&gt; &lt;bakgrunn&gt;: Velg fargene for de forskjellige beskjedklassene i samtalevinduet.<br> &lt;klasse&gt;: receive, send, highlight, action, timestamp<br> &lt;forgrunn/bakgrunn&gt;: black, red, green, blue, white, gray, darkgray, magenta, cyan, default<br><br>EKSEMPEL:<br> msgcolor send cyan default"
+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;forgrunn&gt; &lt;bakgrunn&gt;: Velg fargene for "
+"de forskjellige beskjedklassene i samtalevinduet.<br> &lt;klasse&gt;: "
+"receive, send, highlight, action, timestamp<br> &lt;forgrunn/"
+"bakgrunn&gt;: black, red, green, blue, white, gray, darkgray, magenta, cyan, "
+"default<br><br>EKSEMPEL:<br> msgcolor send cyan default"
msgid "Unable to open file."
msgstr "Klarte ikke åpne fil."
@@ -790,14 +839,24 @@ 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 hendelser vil bare bli logget om \"Logg alle status forandringer til system logg\" har blitt slått på."
+msgid ""
+"System events will only be logged if the \"Log all status changes to system "
+"log\" preference is enabled."
+msgstr ""
+"System hendelser vil bare bli logget om \"Logg alle status forandringer til "
+"system logg\" har blitt slått på."
-msgid "Instant messages will only be logged if the \"Log all instant messages\" preference is enabled."
-msgstr "Direktemeldinger vil bare bli logget om \"Logg alle direktemeldinger\" har blitt slått på."
+msgid ""
+"Instant messages will only be logged if the \"Log all instant messages\" "
+"preference is enabled."
+msgstr ""
+"Lynmeldinger vil bare bli logget om \"Logg alle lynmeldinger\" har "
+"blitt slått på."
-msgid "Chats will only be logged if the \"Log all chats\" preference is enabled."
-msgstr "Samtaler vil bare bli logget om \"Logg alle samtaler\" har blitt slått på."
+msgid ""
+"Chats will only be logged if the \"Log all chats\" preference is enabled."
+msgstr ""
+"Samtaler vil bare bli logget om \"Logg alle samtaler\" har blitt slått på."
msgid "No logs were found"
msgstr "Ingen logger ble funnet"
@@ -855,7 +914,7 @@ msgid "Continue"
msgstr "Fortsett"
msgid "IM"
-msgstr "Direktemelding"
+msgstr "Lynmelding"
msgid "(none)"
msgstr "(uten navn)"
@@ -900,8 +959,10 @@ msgstr "Feil under lasting av tillegg"
msgid "The selected file is not a valid plugin."
msgstr "Den valgte fila er ikke et gyldig tillegg."
-msgid "Please open the debug window and try again to see the exact error message."
-msgstr "Åpne feilsøkingsvinduet og prøv igjen for å se den eksakte feilmeldingen."
+msgid ""
+"Please open the debug window and try again to see the exact error message."
+msgstr ""
+"Åpne feilsøkingsvinduet og prøv igjen for å se den eksakte feilmeldingen."
msgid "Select plugin to install"
msgstr "Velg tillegg å installere"
@@ -981,7 +1042,7 @@ msgid "Action"
msgstr "Handling"
msgid "Open an IM window"
-msgstr "Åpne vindu for direktemelding"
+msgstr "Åpne vindu for lynmelding"
msgid "Pop up a notification"
msgstr "Varslingsvindu spretter opp"
@@ -1057,6 +1118,7 @@ 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!"
@@ -1102,7 +1164,6 @@ msgstr "Antall minutter før fraværsmarkert"
msgid "Change status to"
msgstr "Endre status til"
-#. Conversations
msgid "Conversations"
msgstr "Samtaler"
@@ -1330,7 +1391,8 @@ msgid "Couldn't find window"
msgstr "Kan ikke finne vindu"
msgid "This plugin cannot be loaded because it was not built with X11 support."
-msgstr "Dette tillegget kan ikke bli lastet fordi det ikke var bygd med X11 støtte."
+msgstr ""
+"Dette tillegget kan ikke bli lastet fordi det ikke var bygd med X11 støtte."
msgid "GntClipboard"
msgstr "GntClipboard"
@@ -1338,8 +1400,12 @@ msgstr "GntClipboard"
msgid "Clipboard plugin"
msgstr "Utklipstavle tillegg"
-msgid "When the gnt clipboard contents change, the contents are made available to X, if possible."
-msgstr "Når innholdet i gnt clipboard forandres, vil innholdet bli gjort tilgjengelig for X, om mulig."
+msgid ""
+"When the gnt clipboard contents change, the contents are made available to "
+"X, if possible."
+msgstr ""
+"Når innholdet i gnt clipboard forandres, vil innholdet bli gjort "
+"tilgjengelig for X, om mulig."
#, c-format
msgid "%s just signed on"
@@ -1398,11 +1464,13 @@ msgstr "Historie Tillegg Krever Logging"
msgid ""
"Logging can be enabled from Tools -> Preferences -> Logging.\n"
"\n"
-"Enabling logs for instant messages and/or chats will activate history for the same conversation type(s)."
+"Enabling logs for instant messages and/or chats will activate history for "
+"the same conversation type(s)."
msgstr ""
"Logging kan slås på gjennom Verktøy -> Innstillinger -> Logging.\n"
"\n"
-"Å slå på logging for lynmeldinger og/eller prat vil aktivere historie for den samme samtaletypen."
+"Å slå på logging for lynmeldinger og/eller prat vil aktivere historie for "
+"den samme samtaletypen."
msgid "GntHistory"
msgstr "GntHistorikk"
@@ -1410,8 +1478,12 @@ msgstr "GntHistorikk"
msgid "Shows recently logged conversations in new conversations."
msgstr "Viser tidligere loggede samtaler i nye samtaler."
-msgid "When a new conversation is opened this plugin will insert the last conversation into the current conversation."
-msgstr "Når en ny samtale startes, vil dette tillegget sette inn den forrige samtalen i den pågående."
+msgid ""
+"When a new conversation is opened this plugin will insert the last "
+"conversation into the current conversation."
+msgstr ""
+"Når en ny samtale startes, vil dette tillegget sette inn den forrige "
+"samtalen i den pågående."
msgid "Online"
msgstr "Pålogget"
@@ -1570,8 +1642,12 @@ msgstr "_Se på sertfikat..."
#. Prompt the user to authenticate the certificate
#. vrq will be completed by user_auth
#, c-format
-msgid "The certificate presented by \"%s\" is self-signed. It cannot be automatically checked."
-msgstr "Sertifikatet presentert av \"%s\" er sjøl signert. Det kan ikke bli automatisk sjekket."
+msgid ""
+"The certificate presented by \"%s\" is self-signed. It cannot be "
+"automatically checked."
+msgstr ""
+"Sertifikatet presentert av \"%s\" er sjøl signert. Det kan ikke bli "
+"automatisk sjekket."
#, c-format
msgid "The certificate chain presented for %s is not valid."
@@ -1589,16 +1665,27 @@ msgid "Invalid certificate chain"
msgstr "Ugyldig sertifikat lenke"
#. vrq will be completed by user_auth
-msgid "You have no database of root certificates, so this certificate cannot be validated."
-msgstr "Du har ingen database av root sertifikater, så dette sertifikatet kan ikke bli validisert."
+msgid ""
+"You have no database of root certificates, so this certificate cannot be "
+"validated."
+msgstr ""
+"Du har ingen database av root sertifikater, så dette sertifikatet kan ikke "
+"bli validisert."
#. vrq will be completed by user_auth
-msgid "The root certificate this one claims to be issued by is unknown to Pidgin."
-msgstr "Root sertifikatet som denne hevder å bli utstedt av er ukjent for Pidgin."
+msgid ""
+"The root certificate this one claims to be issued by is unknown to Pidgin."
+msgstr ""
+"Root sertifikatet som denne hevder å bli utstedt av er ukjent for Pidgin."
#, c-format
-msgid "The certificate chain presented by %s does not have a valid digital signature from the Certificate Authority from which it claims to have a signature."
-msgstr "Sertifikat lenken presentert av %s har ikke en gyldig digital signatur fra Sertifikat Myndigheten der den hevder å ha en signatur."
+msgid ""
+"The certificate chain presented by %s does not have a valid digital "
+"signature from the Certificate Authority from which it claims to have a "
+"signature."
+msgstr ""
+"Sertifikat lenken presentert av %s har ikke en gyldig digital signatur fra "
+"Sertifikat Myndigheten der den hevder å ha en signatur."
msgid "Invalid certificate authority signature"
msgstr "Ugyldig sertifikat myndighet signatur"
@@ -1608,8 +1695,12 @@ msgstr "Ugyldig sertifikat myndighet signatur"
#. being prompted
#. vrq will be completed by user_auth
#, c-format
-msgid "The certificate presented by \"%s\" claims to be from \"%s\" instead. This could mean that you are not connecting to the service you believe you are."
-msgstr "Serifikatet presentert av \"%s\" hevder av være fra \"%s\" istedet. Dette kan bety at du ikke er tilkoblet til den tjenesten du tror du er."
+msgid ""
+"The certificate presented by \"%s\" claims to be from \"%s\" instead. This "
+"could mean that you are not connecting to the service you believe you are."
+msgstr ""
+"Serifikatet presentert av \"%s\" hevder av være fra \"%s\" istedet. Dette "
+"kan bety at du ikke er tilkoblet til den tjenesten du tror du er."
#. Make messages
#, c-format
@@ -1736,6 +1827,7 @@ msgstr ""
"Feil under lesing fra oppslagsprosessen:\n"
"%s"
+#, c-format
msgid "Resolver process exited without answering our request"
msgstr "Oppslagsprosess avsluttet uten å svare på vår forespørsel"
@@ -1781,7 +1873,9 @@ msgstr "Kan ikke sende en katalog."
#, c-format
msgid "%s is not a regular file. Cowardly refusing to overwrite it.\n"
-msgstr "%s er ikke en vanlig fil. Pidgin nekter å overskrive den for å ikke risikere å ødelegge noe.\n"
+msgstr ""
+"%s er ikke en vanlig fil. Pidgin nekter å overskrive den for å ikke risikere "
+"å ødelegge noe.\n"
#, c-format
msgid "%s wants to send you %s (%s)"
@@ -1902,32 +1996,68 @@ msgstr "Håndtereren for «xmpp»-URLer"
msgid "The handler for \"ymsgr\" URLs"
msgstr "Håndtereren for «ymsgr»-URLer"
-msgid "True if the command specified in the \"command\" key should handle \"aim\" URLs."
-msgstr "Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «aim»-URLer."
+msgid ""
+"True if the command specified in the \"command\" key should handle \"aim\" "
+"URLs."
+msgstr ""
+"Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «aim»-"
+"URLer."
-msgid "True if the command specified in the \"command\" key should handle \"gg\" URLs."
-msgstr "Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «gg»-URLer."
+msgid ""
+"True if the command specified in the \"command\" key should handle \"gg\" "
+"URLs."
+msgstr ""
+"Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «gg»-"
+"URLer."
-msgid "True if the command specified in the \"command\" key should handle \"icq\" URLs."
-msgstr "Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «icq»-URLer."
+msgid ""
+"True if the command specified in the \"command\" key should handle \"icq\" "
+"URLs."
+msgstr ""
+"Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «icq»-"
+"URLer."
-msgid "True if the command specified in the \"command\" key should handle \"irc\" URLs."
-msgstr "Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «irc»-URLer."
+msgid ""
+"True if the command specified in the \"command\" key should handle \"irc\" "
+"URLs."
+msgstr ""
+"Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «irc»-"
+"URLer."
-msgid "True if the command specified in the \"command\" key should handle \"msnim\" URLs."
-msgstr "Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «msnim»-URLer."
+msgid ""
+"True if the command specified in the \"command\" key should handle \"msnim\" "
+"URLs."
+msgstr ""
+"Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «msnim»-"
+"URLer."
-msgid "True if the command specified in the \"command\" key should handle \"sip\" URLs."
-msgstr "Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «sip»-URLer."
+msgid ""
+"True if the command specified in the \"command\" key should handle \"sip\" "
+"URLs."
+msgstr ""
+"Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «sip»-"
+"URLer."
-msgid "True if the command specified in the \"command\" key should handle \"xmpp\" URLs."
-msgstr "Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «xmpp»-URLer."
+msgid ""
+"True if the command specified in the \"command\" key should handle \"xmpp\" "
+"URLs."
+msgstr ""
+"Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «xmpp»-"
+"URLer."
-msgid "True if the command specified in the \"command\" key should handle \"ymsgr\" URLs."
-msgstr "Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «ymsgr»-URLer."
+msgid ""
+"True if the command specified in the \"command\" key should handle \"ymsgr\" "
+"URLs."
+msgstr ""
+"Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «ymsgr»-"
+"URLer."
-msgid "True if the command used to handle this type of URL should be run in a terminal."
-msgstr "Sann hvis kommandoen som skal håndtere denne type URLer skal kjøres i en terminal."
+msgid ""
+"True if the command used to handle this type of URL should be run in a "
+"terminal."
+msgstr ""
+"Sann hvis kommandoen som skal håndtere denne type URLer skal kjøres i en "
+"terminal."
msgid "Whether the specified command should handle \"aim\" URLs"
msgstr "Om den spesifike kommandoen skal håndtere «aim»-URLer"
@@ -1972,12 +2102,20 @@ 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;STANDARDSVAR&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;"
+"STANDARDSVAR&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;STANDARDSVAR&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;"
+"STANDARDSVAR&gt;:</b></font> %s<br/>\n"
msgid "<font color=\"red\"><b>Unable to find log path!</b></font>"
msgstr "<font color=\"red\"><b>Klarte ikke finne banen til loggen!</b></font>"
@@ -2005,12 +2143,19 @@ msgstr "Tillegg magic mismatch %d (trenger %d)"
msgid "ABI version mismatch %d.%d.x (need %d.%d.x)"
msgstr "ABI versjon mismatch %d.%d.x (trenger %d.%d.x)"
-msgid "Plugin does not implement all required functions (list_icon, login and close)"
-msgstr "Tillegget implenterer ikke alle funksjoner som kreves (list_icon, login og close)"
+msgid ""
+"Plugin does not implement all required functions (list_icon, login and close)"
+msgstr ""
+"Tillegget implenterer ikke alle funksjoner som kreves (list_icon, login og "
+"close)"
#, c-format
-msgid "The required plugin %s was not found. Please install this plugin and try again."
-msgstr "Det nødvendige tillegget %s ble ikke funnet. Installer dette tillegget og prøv igjen."
+msgid ""
+"The required plugin %s was not found. Please install this plugin and try "
+"again."
+msgstr ""
+"Det nødvendige tillegget %s ble ikke funnet. Installer dette tillegget og "
+"prøv igjen."
msgid "Unable to load the plugin"
msgstr "Klarte ikke å laste tillegget"
@@ -2112,7 +2257,8 @@ msgstr "Lagre notater på en spesifikk kompis."
#. *< summary
msgid "Adds the option to store notes for buddies on your buddy list."
-msgstr "Legger til muligheten for å lagre notater for kompiser i kompislisten din."
+msgstr ""
+"Legger til muligheten for å lagre notater for kompiser i kompislisten din."
#. *< type
#. *< ui_requirement
@@ -2210,8 +2356,12 @@ msgid "Test plugin IPC support, as a client."
msgstr "Test IPC-støtte for tillegg (som klient)."
#. * description
-msgid "Test plugin IPC support, as a client. This locates the server plugin and calls the commands registered."
-msgstr "Test IPC-støtte for tillegg (som klient). Dette finner tjenertillegget og kaller de registrerte kommandoene."
+msgid ""
+"Test plugin IPC support, as a client. This locates the server plugin and "
+"calls the commands registered."
+msgstr ""
+"Test IPC-støtte for tillegg (som klient). Dette finner tjenertillegget og "
+"kaller de registrerte kommandoene."
#
#. *< type
@@ -2231,7 +2381,8 @@ msgstr "Test IPC-støtte for tillegg (som tjener)."
#. * description
msgid "Test plugin IPC support, as a server. This registers the IPC commands."
-msgstr "Test IPC-støtte for tillegg (som tjener). Dette registrerer IPC-kommandoene."
+msgstr ""
+"Test IPC-støtte for tillegg (som tjener). Dette registrerer IPC-kommandoene."
msgid "Join/Part Hiding Configuration"
msgstr "Innstilling for å skjule bli med-/forlat-tilstander"
@@ -2261,8 +2412,12 @@ msgid "Hides extraneous join/part messages."
msgstr "Skjul fremmede join/part beskjeder."
#. * description
-msgid "This plugin hides join/part messages in large rooms, except for those users actively taking part in a conversation."
-msgstr "Denne plugin skjuler join/part beskjeder i store rom, untatt for de brukerne som aktivt deltar i en samtale."
+msgid ""
+"This plugin hides join/part messages in large rooms, except for those users "
+"actively taking part in a conversation."
+msgstr ""
+"Denne plugin skjuler join/part beskjeder i store rom, untatt for de brukerne "
+"som aktivt deltar i en samtale."
#. This is used in the place of a timezone abbreviation if the
#. * offset is way off. The user should never really see it, but
@@ -2287,8 +2442,12 @@ msgstr "En eller flere beskjeder kunne ikke bli levert."
msgid "You were disconnected from the server."
msgstr "Du har blitt koblet fra tjeneren."
-msgid "You are currently disconnected. Messages will not be received unless you are logged in."
-msgstr "Du er for tiden avlogget. Beskjeder vil ikke bli mottatt uten at du er innlogget."
+msgid ""
+"You are currently disconnected. Messages will not be received unless you are "
+"logged in."
+msgstr ""
+"Du er for tiden avlogget. Beskjeder vil ikke bli mottatt uten at du er "
+"innlogget."
msgid "Message could not be sent because the maximum length was exceeded."
msgstr "Meldingen kunne ikke bli sendt fordi max lengde ble overskredet."
@@ -2370,13 +2529,18 @@ msgstr "Inkluderer andre lynmeldingsklienters logger i logg-viseren."
#. * 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 man ser på logger, vil dette tillegget inkludere logger fra andre lynmeldingsklienter. For tiden inkluderer dette Adium, MSN Messenger og Trillian.\n"
+"Når man ser på logger, vil dette tillegget inkludere logger fra andre "
+"lynmeldingsklienter. For tiden inkluderer dette Adium, MSN Messenger og "
+"Trillian.\n"
"\n"
-"ADVARSEL: Dette tillegget er enda alpha kode og kan krasje ofte. Bruk den på egen risiko!"
+"ADVARSEL: Dette tillegget er enda alpha kode og kan krasje ofte. Bruk den "
+"på egen risiko!"
#
msgid "Mono Plugin Loader"
@@ -2386,7 +2550,7 @@ msgid "Loads .NET plugins with Mono."
msgstr "Laster .NET tillegg med Mono."
msgid "Add new line in IMs"
-msgstr "Legg til linjeskift i direktemeldinger."
+msgstr "Legg til linjeskift i lynmeldinger."
msgid "Add new line in Chats"
msgstr "Legg til linjeskift i samtaler"
@@ -2409,8 +2573,12 @@ msgid "Prepends a newline to displayed message."
msgstr "Setter inn en ny linje foran viste beskjeder."
#. *< summary
-msgid "Prepends a newline to messages so that the rest of the message appears below the username in the conversation window."
-msgstr "Setter inn en ny linje foran beskjeder sånn at resten av teksten kommer frem under brukernavnet i samtalevinduet."
+msgid ""
+"Prepends a newline to messages so that the rest of the message appears below "
+"the username in the conversation window."
+msgstr ""
+"Setter inn en ny linje foran beskjeder sånn at resten av teksten kommer frem "
+"under brukernavnet i samtalevinduet."
msgid "Offline Message Emulation"
msgstr "Emulering av avlogget-beskjed"
@@ -2418,12 +2586,20 @@ msgstr "Emulering av avlogget-beskjed"
msgid "Save messages sent to an offline user as pounce."
msgstr "Lagre beskjeder sendt til en avlogget bruker som pounce."
-msgid "The rest of the messages will be saved as pounce. You can edit/delete the pounce from the `Buddy Pounce' dialog."
-msgstr "Resten av beskjedene vil bli lagret som varsling. Du kan forandre/slette varslingen fra kontaktvarslingsdialogen."
+msgid ""
+"The rest of the messages will be saved as pounce. You can edit/delete the "
+"pounce from the `Buddy Pounce' dialog."
+msgstr ""
+"Resten av beskjedene vil bli lagret som varsling. Du kan forandre/slette "
+"varslingen fra kontaktvarslingsdialogen."
#, c-format
-msgid "\"%s\" is currently offline. Do you want to save the rest of the messages in a pounce and automatically send them when \"%s\" logs back in?"
-msgstr "\"%s\" er for tiden avlogget. Vil du lagre resten av beskjeden i en varsling og automatisk sende den når \"%s\" logger inn igjen?"
+msgid ""
+"\"%s\" is currently offline. Do you want to save the rest of the messages in "
+"a pounce and automatically send them when \"%s\" logs back in?"
+msgstr ""
+"\"%s\" er for tiden avlogget. Vil du lagre resten av beskjeden i en varsling "
+"og automatisk sende den når \"%s\" logger inn igjen?"
msgid "Offline Message"
msgstr "Avlogget beskjed"
@@ -2464,8 +2640,12 @@ msgstr "Synsk Modus"
msgid "Psychic mode for incoming conversation"
msgstr "Synsk modus for innkommende samtale"
-msgid "Causes conversation windows to appear as other users begin to message you. This works for AIM, ICQ, XMPP, Sametime, and Yahoo!"
-msgstr "Gjør at samtalevinduet dukker opp idet andre brukere begynner å sende beskjed til deg. Dette fungerer for AIM, ICQ, XMPP, Sametime og Yahoo!"
+msgid ""
+"Causes conversation windows to appear as other users begin to message you. "
+"This works for AIM, ICQ, XMPP, Sametime, and Yahoo!"
+msgstr ""
+"Gjør at samtalevinduet dukker opp idet andre brukere begynner å sende "
+"beskjed til deg. Dette fungerer for AIM, ICQ, XMPP, Sametime og Yahoo!"
msgid "You feel a disturbance in the force..."
msgstr "You feel a disturbance in the force..."
@@ -2612,8 +2792,12 @@ msgstr "Varsle når kontakt endrer tilstand"
#. *< version
#. * summary
#. * description
-msgid "Notifies in a conversation window when a buddy goes or returns from away or idle."
-msgstr "Varsler i et samtalevindu når en kontakt blir borte/inaktiv, eller returnerer."
+msgid ""
+"Notifies in a conversation window when a buddy goes or returns from away or "
+"idle."
+msgstr ""
+"Varsler i et samtalevindu når en kontakt blir borte/inaktiv, eller "
+"returnerer."
#
msgid "Tcl Plugin Loader"
@@ -2623,19 +2807,28 @@ msgstr "Tcl-tilleggslaster"
msgid "Provides support for loading Tcl plugins"
msgstr "Lar deg laste Tcl-tillegg"
-msgid "Unable to detect ActiveTCL installation. If you wish to use TCL plugins, install ActiveTCL from http://www.activestate.com\n"
-msgstr "Klarte ikke finne en ActiveTCL installasjon. Om du ønsker å bruke TCL tillegg, installer ActiveTCL fra http://www.activestate.com\n"
+msgid ""
+"Unable to detect ActiveTCL installation. If you wish to use TCL plugins, "
+"install ActiveTCL from http://www.activestate.com\n"
+msgstr ""
+"Klarte ikke finne en ActiveTCL installasjon. Om du ønsker å bruke TCL "
+"tillegg, installer ActiveTCL fra http://www.activestate.com\n"
-msgid "The Apple Bonjour For Windows toolkit wasn't found, see the FAQ at: http://d.pidgin.im/BonjourWindows for more information."
-msgstr "Fant ikke verktøysamlingen til Apple Bonjour for Windows. Du finner flere opplysninger på adressa http://d.pidgin.im/BonjourWindows."
+msgid ""
+"The Apple Bonjour For Windows toolkit wasn't found, see the FAQ at: http://d."
+"pidgin.im/BonjourWindows for more information."
+msgstr ""
+"Fant ikke verktøysamlingen til Apple Bonjour for Windows. Du finner flere "
+"opplysninger på adressa http://d.pidgin.im/BonjourWindows."
msgid "Unable to listen for incoming IM connections\n"
msgstr "Klarte ikke lage ny tilkobling\n"
-msgid "Unable to establish connection with the local mDNS server. Is it running?"
-msgstr "Klarte ikke etablere kontakt med den lokale mDNS serveren. Er den igang?"
+msgid ""
+"Unable to establish connection with the local mDNS server. Is it running?"
+msgstr ""
+"Klarte ikke etablere kontakt med den lokale mDNS serveren. Er den igang?"
-#. Creating the options for the protocol
msgid "First name"
msgstr "Fornavn"
@@ -2668,6 +2861,10 @@ msgstr "Bonjour-protokolltillegg"
msgid "Purple Person"
msgstr "Purple-person"
+#. Creating the options for the protocol
+msgid "Local Port"
+msgstr "Lokal port"
+
msgid "Bonjour"
msgstr "Bonjour"
@@ -2693,7 +2890,9 @@ msgstr "Feil i kommunikasjonen med lokal mDNSResponder."
msgid "Invalid proxy settings"
msgstr "Ugyldige proxyinnstilinger"
-msgid "Either the host name or port number specified for your given proxy type is invalid."
+msgid ""
+"Either the host name or port number specified for your given proxy type is "
+"invalid."
msgstr "Det spesifiserte maskinnavnet eller portnummeret for proxy er ugyldig."
msgid "Token Error"
@@ -3154,11 +3353,19 @@ msgstr "mode (%s %s) av %s"
msgid "Invalid nickname"
msgstr "Ugyldig brukernavn"
-msgid "Your selected nickname was rejected by the server. It probably contains invalid characters."
-msgstr "Ditt valgte kallenavn ble avvist av tjeneren. Sannsynligvis inneholder det ugyldige tegn."
+msgid ""
+"Your selected nickname was rejected by the server. It probably contains "
+"invalid characters."
+msgstr ""
+"Ditt valgte kallenavn ble avvist av tjeneren. Sannsynligvis inneholder det "
+"ugyldige tegn."
-msgid "Your selected account name was rejected by the server. It probably contains invalid characters."
-msgstr "Ditt valgte kontonavn ble avvist av tjeneren. Sannsynligvis inneholder det ugyldige tegn."
+msgid ""
+"Your selected account name was rejected by the server. It probably contains "
+"invalid characters."
+msgstr ""
+"Ditt valgte kontonavn ble avvist av tjeneren. Sannsynligvis inneholder det "
+"ugyldige tegn."
msgid "Cannot change nick"
msgstr "Kan ikke endre kallenavn"
@@ -3194,8 +3401,12 @@ msgstr "Wallops fra %s"
msgid "action &lt;action to perform&gt;: Perform an action."
msgstr "action &lt;action to perform&gt;: Utfør noe."
-msgid "away [message]: Set an away message, or use no message to return from being away."
-msgstr "away [melding]: Sett en melding som skal vises når du er fraværende, eller ikke sett noen for å returnere."
+msgid ""
+"away [message]: Set an away message, or use no message to return from being "
+"away."
+msgstr ""
+"away [melding]: Sett en melding som skal vises når du er fraværende, eller "
+"ikke sett noen for å returnere."
msgid "ctcp <nick> <msg>: sends ctcp msg to nick."
msgstr "ctcp <kallenavn> <beskjed>: sender ctcp beskjed til kallenavn."
@@ -3203,26 +3414,56 @@ msgstr "ctcp <kallenavn> <beskjed>: sender ctcp beskjed til kallenavn."
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;nick1&gt; [nick2] ...: Fjern kanal OP status fra noen. Du må være kanal OP for å gjø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;nick1&gt; [nick2] ...: Fjern kanal OP status fra noen. Du må være "
+"kanal OP for å gjø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;nick1&gt; [nick2] ...: Fjern kanal voice status fra noen, hindre de fra å snakke om kanalen er moderert (+m). Du må være kanal OP for å gjøre dette."
+msgid ""
+"devoice &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;nick1&gt; [nick2] ...: Fjern kanal voice status fra noen, "
+"hindre de fra å snakke om kanalen er moderert (+m). Du må være kanal OP for "
+"å gjøre dette."
-msgid "invite &lt;nick&gt; [room]: Invite someone to join you in the specified channel, or the current channel."
-msgstr "invite &lt;nick&gt; [room]: Inviter noen til å joine deg i spsifisert kanel eller den nåværende kanalen."
+msgid ""
+"invite &lt;nick&gt; [room]: Invite someone to join you in the specified "
+"channel, or the current channel."
+msgstr ""
+"invite &lt;nick&gt; [room]: Inviter noen til å joine deg i spsifisert kanel "
+"eller den nåværende kanalen."
-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;room1&gt;[,room2][,...] [key1[,key2][,...]]: Fyll inn en eller flere kanaler, alternativt gi en nøkkel for hver om nødvendig."
+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;room1&gt;[,room2][,...] [key1[,key2][,...]]: Fyll inn en eller flere "
+"kanaler, alternativt gi en nøkkel for hver om nødvendig."
-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;room1&gt;[,room2][,...] [key1[,key2][,...]]: Fyll inn en eller flere kanaler, alternativt gi en nøkkel for hver om nødvendig."
+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;room1&gt;[,room2][,...] [key1[,key2][,...]]: Fyll inn en eller "
+"flere kanaler, alternativt gi en nøkkel for hver om nødvendig."
-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; [message]: Fjern noen fra en kanal. Du må være kanal OP for å gjø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; [message]: Fjern noen fra en kanal. Du må være kanal OP "
+"for å gjøre dette."
-msgid "list: Display a list of chat rooms on the network. <i>Warning, some servers may disconnect you upon doing this.</i>"
-msgstr "list: Vis en liste over samtalerom på nettverket. <i>Advarsel, noen tjenere kan koble fra om du gjø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 samtalerom på nettverket. <i>Advarsel, noen tjenere "
+"kan koble fra om du gjør dette.</i>"
msgid "me &lt;action to perform&gt;: Perform an action."
msgstr "me &lt;action to perform&gt;: Utfør noe."
@@ -3230,11 +3471,18 @@ msgstr "me &lt;action to perform&gt;: Utfør noe."
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|channel&gt;: Sett er fjern en kanal eller bruker modus."
+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|channel&gt;: Sett er fjern en kanal "
+"eller bruker modus."
-msgid "msg &lt;nick&gt; &lt;message&gt;: Send a private message to a user (as opposed to a channel)."
-msgstr "msg &lt;nick&gt; &lt;message&gt;: Send en privat beskjed til en bruker."
+msgid ""
+"msg &lt;nick&gt; &lt;message&gt;: Send a private message to a user (as "
+"opposed to a channel)."
+msgstr ""
+"msg &lt;nick&gt; &lt;message&gt;: Send en privat beskjed til en bruker."
msgid "names [channel]: List the users currently in a channel."
msgstr "names [channel]: Vis brukere i denne kanalen."
@@ -3248,23 +3496,41 @@ msgstr "nickserv: Send en kommando til nickserv"
msgid "notice &lt;target&lt;: Send a notice to a user or channel."
msgstr "notice &lt;mål&gt;: Send en varsling til en bruker 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;nick1&gt; [nick2] ...: Tillat OP status til noen. Du må være kanal OP for å gjø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;nick1&gt; [nick2] ...: Tillat OP status til noen. Du må være kanal "
+"OP for å gjø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;: Om du ikke vet hva dette er, kan du sannsynligvis ikke bruke 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;: Om du ikke vet hva dette er, kan du sannsynligvis "
+"ikke bruke dette."
msgid "operserv: Send a command to operserv"
msgstr "operserv: Send en kommando til operserv"
-msgid "part [room] [message]: Leave the current channel, or a specified channel, with an optional message."
-msgstr "part [room] [message]: Forlat nåværende kanal eller en spesifisert kanal med en beskjed."
+msgid ""
+"part [room] [message]: Leave the current channel, or a specified channel, "
+"with an optional message."
+msgstr ""
+"part [room] [message]: Forlat nåværende kanal eller en spesifisert kanal "
+"med en beskjed."
-msgid "ping [nick]: Asks how much lag a user (or the server if no user specified) has."
+msgid ""
+"ping [nick]: Asks how much lag a user (or the server if no user specified) "
+"has."
msgstr "ping [nick]: Send ping til en bruker."
-msgid "query &lt;nick&gt; &lt;message&gt;: Send a private message to a user (as opposed to a channel)."
-msgstr "query &lt;nick&gt; &lt;message&gt;: Send en privat beskjed til en bruker (vises ikke i kanal)."
+msgid ""
+"query &lt;nick&gt; &lt;message&gt;: Send a private message to a user (as "
+"opposed to a channel)."
+msgstr ""
+"query &lt;nick&gt; &lt;message&gt;: Send en privat beskjed til en bruker "
+"(vises ikke i kanal)."
msgid "quit [message]: Disconnect from the server, with an optional message."
msgstr "quit [message]: Disconnect fra server, med evt. beskjed."
@@ -3272,8 +3538,12 @@ msgstr "quit [message]: Disconnect fra server, med evt. beskjed."
msgid "quote [...]: Send a raw command to the server."
msgstr "quote [...]: Send 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; [message]: Fjern noen fra et rom. Du må være kanal OP for å gjø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; [message]: Fjern noen fra et rom. Du må være kanal OP "
+"for å gjøre dette."
msgid "time: Displays the current local time at the IRC server."
msgstr "time: Vis nåværende lokaltid på IRC serveren."
@@ -3287,17 +3557,26 @@ msgstr "umode &lt;+|-&gt;&lt;A-Za-z&gt;: Sett eller fjern en bruker modus."
msgid "version [nick]: send CTCP VERSION request to a user"
msgstr "versjon [nick]: send CTCP VERSION forespørsel til en bruker"
-msgid "voice &lt;nick1&gt; [nick2] ...: Grant channel voice status to someone. You must be a channel operator to do this."
-msgstr "voice &lt;nick1&gt; [nick2] ...: Gi voice til noen. Du må være kanal OP for å gjø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;nick1&gt; [nick2] ...: Gi voice til noen. Du må være kanal OP for "
+"å gjøre dette."
-msgid "wallops &lt;message&gt;: If you don't know what this is, you probably can't use it."
-msgstr "wallops &lt;message&gt;: Om du ikke vet hva dette er, kan du sannsynligvis ikke bruke det."
+msgid ""
+"wallops &lt;message&gt;: If you don't know what this is, you probably can't "
+"use it."
+msgstr ""
+"wallops &lt;message&gt;: Om du ikke vet hva dette er, kan du sannsynligvis "
+"ikke bruke det."
msgid "whois [server] &lt;nick&gt;: Get information on a user."
msgstr "whois [server] &lt;nick&gt;: Hent informasjon om en bruker."
msgid "whowas &lt;nick&gt;: Get information on a user that has logged off."
-msgstr "whowas &lt;kallenavn&gt;: Hent informasjon om en bruker som har logget av."
+msgstr ""
+"whowas &lt;kallenavn&gt;: Hent informasjon om en bruker som har logget av."
#, c-format
msgid "Reply time from %s: %lu seconds"
@@ -3322,17 +3601,25 @@ msgid "execute"
msgstr "utfør"
msgid "Server requires TLS/SSL for login. No TLS/SSL support found."
-msgstr "Tjeneren krever TLS/SSL for å logge inn, men støtte for dette ble ikke funnet."
+msgstr ""
+"Tjeneren krever TLS/SSL for å logge inn, men støtte for dette ble ikke "
+"funnet."
msgid "You require encryption, but no TLS/SSL support found."
msgstr "Du krever kryptering, men ingen støtte for TLS/SSL ble funnet."
msgid "Server requires plaintext authentication over an unencrypted stream"
-msgstr "Tjeneren forlanger identitetsbekreftelse i ren tekst over en ukryptert forbindelse"
+msgstr ""
+"Tjeneren forlanger identitetsbekreftelse i ren tekst over en ukryptert "
+"forbindelse"
#, c-format
-msgid "%s requires plaintext authentication over an unencrypted connection. Allow this and continue authentication?"
-msgstr "%s krever autentisering i klartekst over eit ukryptert samband. Vil du tillate dette og fortsett med autentiseringen?"
+msgid ""
+"%s requires plaintext authentication over an unencrypted connection. Allow "
+"this and continue authentication?"
+msgstr ""
+"%s krever autentisering i klartekst over eit ukryptert samband. Vil du "
+"tillate dette og fortsett med autentiseringen?"
msgid "Plaintext Authentication"
msgstr "Identitetsbekreftelse i ren tekst"
@@ -3402,8 +3689,12 @@ msgstr "Beskrivelse"
msgid "Edit XMPP vCard"
msgstr "Rediger vCard for XMPP"
-msgid "All items below are optional. Enter only the information with which you feel comfortable."
-msgstr "Alle feltene nedenfor er valgfrie. Du trenger bare å skrive den informasjonen du ønsker."
+msgid ""
+"All items below are optional. Enter only the information with which you feel "
+"comfortable."
+msgstr ""
+"Alle feltene nedenfor er valgfrie. Du trenger bare å skrive den "
+"informasjonen du ønsker."
msgid "Client"
msgstr "Klient"
@@ -3632,8 +3923,12 @@ msgid "The following are the results of your search"
msgstr "Følgende resultat fra ditt søk"
#. current comment from Jabber User Directory users.jabber.org
-msgid "Find a contact by entering the search criteria in the given fields. Note: Each field supports wild card searches (%)"
-msgstr "Finn en kontakt ved å skrive inn søkekriterier i gitte felter. NB: Hvert felt har støtte for wild card søk (%)"
+msgid ""
+"Find a contact by entering the search criteria in the given fields. Note: "
+"Each field supports wild card searches (%)"
+msgstr ""
+"Finn en kontakt ved å skrive inn søkekriterier i gitte felter. NB: Hvert "
+"felt har støtte for wild card søk (%)"
msgid "Directory Query Failed"
msgstr "Mappeforespørsel feilet"
@@ -3740,7 +4035,8 @@ msgid "Find Rooms"
msgstr "Finn samtalerom"
msgid "You require encryption, but it is not available on this server."
-msgstr "Du krever kryptering, men det er ikke støtte for det på denne serveren."
+msgstr ""
+"Du krever kryptering, men det er ikke støtte for det på denne serveren."
msgid "Write error"
msgstr "Feil ved skriving"
@@ -3810,7 +4106,8 @@ msgstr "Dato"
msgid "Unregister"
msgstr "Avregistrer"
-msgid "Please fill out the information below to change your account registration."
+msgid ""
+"Please fill out the information below to change your account registration."
msgstr "Fyll ut feltene under for å endre din kontoregistrering."
msgid "Please fill out the information below to register your new account."
@@ -4168,11 +4465,19 @@ msgstr "topic [nytt emne]: Vis eller endre emnet."
msgid "ban &lt;user&gt; [reason]: Ban a user from the room."
msgstr "ban &lt;bruker&gt; [grunn]: Forby en bruker fra rommet."
-msgid "affiliate &lt;user&gt; &lt;owner|admin|member|outcast|none&gt;: Set a user's affiliation with the room."
-msgstr "Knytt &lt;bruker&gt; &lt;eier|admin|medlem|utstøtt|ingen&gt;: Sett en brukers tilknyting til rommet."
+msgid ""
+"affiliate &lt;user&gt; &lt;owner|admin|member|outcast|none&gt;: Set a user's "
+"affiliation with the room."
+msgstr ""
+"Knytt &lt;bruker&gt; &lt;eier|admin|medlem|utstøtt|ingen&gt;: Sett en "
+"brukers tilknyting til rommet."
-msgid "role &lt;user&gt; &lt;moderator|participant|visitor|none&gt;: Set a user's role in the room."
-msgstr "rolle &lt;user&gt; &lt;moderator|deltaker|besøkende|ingen&gt;: Sett en brukers rolle i rommet."
+msgid ""
+"role &lt;user&gt; &lt;moderator|participant|visitor|none&gt;: Set a user's "
+"role in the room."
+msgstr ""
+"rolle &lt;user&gt; &lt;moderator|deltaker|besøkende|ingen&gt;: Sett en "
+"brukers rolle i rommet."
msgid "invite &lt;user&gt; [message]: Invite a user to the room."
msgstr "invite &lt;bruker&gt; [rom]: Inviter en bruker til rommet."
@@ -4183,8 +4488,11 @@ msgstr "join: &lt;rom&gt; [passord]: Bli med i en samtale på denne tjeneren."
msgid "kick &lt;user&gt; [reason]: Kick a user from the room."
msgstr "kick &lt;bruker&gt; [grunn]: Spark en bruker ut av rommet."
-msgid "msg &lt;user&gt; &lt;message&gt;: Send a private message to another user."
-msgstr "msg &lt;bruker&gt; &lt;melding&gt;: Send en privatmelding til en annen bruker."
+msgid ""
+"msg &lt;user&gt; &lt;message&gt;: Send a private message to another user."
+msgstr ""
+"msg &lt;bruker&gt; &lt;melding&gt;: Send en privatmelding til en annen "
+"bruker."
msgid "ping &lt;jid&gt;:\tPing a user/component/server."
msgstr "ping &lt;jid&gt;:\tPing en bruker/komponent/server."
@@ -4272,8 +4580,12 @@ msgstr "Ukjent feil i tilstedeværelse"
msgid "Create New Room"
msgstr "Skap nytt samtalerom"
-msgid "You are creating a new room. Would you like to configure it, or accept the default settings?"
-msgstr "Du er i ferd med å lage et nytt rom. Ønsker du å endre innstillingene, eller bruke standardinnstillingene?"
+msgid ""
+"You are creating a new room. Would you like to configure it, or accept the "
+"default settings?"
+msgstr ""
+"Du er i ferd med å lage et nytt rom. Ønsker du å endre innstillingene, eller "
+"bruke standardinnstillingene?"
msgid "_Configure Room"
msgstr "_Konfigurer rom"
@@ -4333,8 +4645,12 @@ msgstr "Sett brukerens kallenavn"
msgid "Please specify a new nickname for you."
msgstr "Oppgi et nytt kallenavn for deg."
-msgid "This information is visible to all contacts on your contact list, so choose something appropriate."
-msgstr "Denne informasjonen vises til alle dine kontakter i kontaktlisten din, så velg noe passende."
+msgid ""
+"This information is visible to all contacts on your contact list, so choose "
+"something appropriate."
+msgstr ""
+"Denne informasjonen vises til alle dine kontakter i kontaktlisten din, så "
+"velg noe passende."
msgid "Set Nickname..."
msgstr "Sett Nick..."
@@ -4345,9 +4661,6 @@ msgstr "Handlinger"
msgid "Select an action"
msgstr "Velg en handling"
-msgid "Unable to retrieve MSN Address Book"
-msgstr "Klarte ikke hente MSN-adressebok"
-
#. only notify the user about problems adding to the friends list
#. * maybe we should do something else for other lists, but it probably
#. * won't cause too many problems if we just ignore it
@@ -4366,172 +4679,233 @@ msgid "Buddy list synchronization issue in %s (%s)"
msgstr "Synkronisasjonsproblem med kontaktlisten i %s (%s)"
#, c-format
-msgid "%s on the local list is inside the group \"%s\" but not on the server list. Do you want this buddy to be added?"
-msgstr "%s er på den lokale lista innenfor gruppa \"%s\", men ikke på tjenerlista. Ønsker du at denne kontakten skal bli lagt til?"
+msgid ""
+"%s on the local list is inside the group \"%s\" but not on the server list. "
+"Do you want this buddy to be added?"
+msgstr ""
+"%s er på den lokale lista innenfor gruppa \"%s\", men ikke på tjenerlista. "
+"Ønsker du at denne kontakten skal bli lagt til?"
#, c-format
-msgid "%s is on the local list but not on the server list. Do you want this buddy to be added?"
-msgstr "%s er på den lokale lista, men ikke på tjenerlista. Ønsker du at denne kontakten skal bli lagt til?"
+msgid ""
+"%s is on the local list but not on the server list. Do you want this buddy "
+"to be added?"
+msgstr ""
+"%s er på den lokale lista, men ikke på tjenerlista. Ønsker du at denne "
+"kontakten skal bli lagt til?"
+#, c-format
msgid "Unable to parse message"
msgstr "Klarte ikke tolke beskjed"
+#, c-format
msgid "Syntax Error (probably a client bug)"
msgstr "Syntaksfeil (sannsynligvis en Pidgin-bug)"
+#, c-format
msgid "Invalid email address"
msgstr "Ugyldig epostadresse"
+#, c-format
msgid "User does not exist"
msgstr "Brukeren eksisterer ikke"
+#, c-format
msgid "Fully qualified domain name missing"
msgstr "Fullstending domenenavn mangler"
+#, c-format
msgid "Already logged in"
msgstr "Allerede logget inn"
+#, c-format
msgid "Invalid username"
msgstr "Ugyldig brukernavn"
+#, c-format
msgid "Invalid friendly name"
msgstr "Ugyldig vennlig navn"
+#, c-format
msgid "List full"
msgstr "Listen er full"
+#, c-format
msgid "Already there"
msgstr "Du er allerede der"
+#, c-format
msgid "Not on list"
msgstr "Ikke på listen"
+#, c-format
msgid "User is offline"
msgstr "Brukeren er avlogget"
+#, c-format
msgid "Already in the mode"
msgstr "Du er allerede i modusen"
+#, c-format
msgid "Already in opposite list"
msgstr "Du er allerede i den andre listen"
+#, c-format
msgid "Too many groups"
msgstr "For mange grupper"
+#, c-format
msgid "Invalid group"
msgstr "Ugyldig gruppe"
+#, c-format
msgid "User not in group"
msgstr "Brukeren er ikke i gruppen"
+#, c-format
msgid "Group name too long"
msgstr "Gruppenavnet er for langt"
+#, c-format
msgid "Cannot remove group zero"
msgstr "Kan ikke fjerne gruppe null"
+#, c-format
msgid "Tried to add a user to a group that doesn't exist"
msgstr "Prøvde å legge en bruker til i en ikke-eksisterende gruppe"
+#, c-format
msgid "Switchboard failed"
msgstr "Feil med switchboard-tjenesten"
+#, c-format
msgid "Notify transfer failed"
msgstr "Overføring av varsling feilet"
+#, c-format
msgid "Required fields missing"
msgstr "Du har ikke fylt inn alle nødvendige felt"
+#, c-format
msgid "Too many hits to a FND"
msgstr "For mange treff på en FND"
+#, c-format
msgid "Not logged in"
msgstr "Ikke pålogget"
+#, c-format
msgid "Service temporarily unavailable"
msgstr "Tjenesten midlertidig uttilgjengelig"
+#, c-format
msgid "Database server error"
msgstr "Feil på databasetjeneren"
+#, c-format
msgid "Command disabled"
msgstr "Kommando deaktivert"
+#, c-format
msgid "File operation error"
msgstr "Filoperasjonsfeil"
+#, c-format
msgid "Memory allocation error"
msgstr "Feil ved minneallokering"
+#, c-format
msgid "Wrong CHL value sent to server"
msgstr "Feil CHL-verdi sendt til tjener"
+#, c-format
msgid "Server busy"
msgstr "Tjeneren er opptatt"
+#, c-format
msgid "Server unavailable"
msgstr "Tjeneren er ikke tilgjengelig"
+#, c-format
msgid "Peer notification server down"
msgstr "Varslingstjeneren er ikke tilgjengelig"
+#, c-format
msgid "Database connect error"
msgstr "Klarte ikke koble til databasen"
+#, c-format
msgid "Server is going down (abandon ship)"
msgstr "Tjeneren er på vei nei (redde seg den som kan)"
+#, c-format
msgid "Error creating connection"
msgstr "Feil: kunne ikke koble til"
+#, c-format
msgid "CVR parameters are either unknown or not allowed"
msgstr "CVR-parametre er enten ukjent eller ikke tillatt"
+#, c-format
msgid "Unable to write"
msgstr "Klarte ikke skrive"
+#, c-format
msgid "Session overload"
msgstr "Sesjonsoverlast"
+#, c-format
msgid "User is too active"
msgstr "Brukeren er for aktiv"
+#, c-format
msgid "Too many sessions"
msgstr "For mange sesjoner"
+#, c-format
msgid "Passport not verified"
msgstr "Passport-konto er ikke blitt verifisert"
+#, c-format
msgid "Bad friend file"
msgstr "Ugyldig 'friend'-fil"
+#, c-format
msgid "Not expected"
msgstr "Uventet"
+#, c-format
msgid "Friendly name changes too rapidly"
msgstr "Visningsnavnet endres for raskt"
+#, c-format
msgid "Server too busy"
msgstr "Tjeneren er for opptatt"
+#, c-format
msgid "Authentication failed"
msgstr "Autentisering feilet"
+#, c-format
msgid "Not allowed when offline"
msgstr "Ikke tillatt når avlogget"
+#, c-format
msgid "Not accepting new users"
msgstr "Nye brukere vil ikke bli godtatt"
+#, c-format
msgid "Kids Passport without parental consent"
msgstr "Passport for barn, men har ikke foreldregodkjenning"
+#, c-format
msgid "Passport account not yet verified"
msgstr "Passport-konto er ikke blitt verifisert enda"
msgid "Passport account suspended"
msgstr "Passport-konto inndratt"
+#, c-format
msgid "Bad ticket"
msgstr "Bad ticket"
@@ -4548,7 +4922,7 @@ msgid "Other Contacts"
msgstr "Andre kontakter"
msgid "Non-IM Contacts"
-msgstr "Ikke-direktemeldingskontakter"
+msgstr "Ikke-lynmeldingskontakter"
msgid "Nudge"
msgstr "Dytt"
@@ -4585,8 +4959,11 @@ msgstr "Sett ditt mobiltelefonnummer."
msgid "Allow MSN Mobile pages?"
msgstr "Tillat tekstmeldinger via MSN?"
-msgid "Do you want to allow or disallow people on your buddy list to send you MSN Mobile pages to your cell phone or other mobile device?"
-msgstr "Ønsker du å tillate eller forby kontakter å sende deg tekstmeldinger via MSN?"
+msgid ""
+"Do you want to allow or disallow people on your buddy list to send you MSN "
+"Mobile pages to your cell phone or other mobile device?"
+msgstr ""
+"Ønsker du å tillate eller forby kontakter å sende deg tekstmeldinger via MSN?"
msgid "Allow"
msgstr "Tillat"
@@ -4602,7 +4979,8 @@ msgid "No text is blocked for this account."
msgstr "Ingen tekst blokkert for denne kontoen."
#, 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-tjenere blokkerer for øyeblikket følgende regulære uttrykk:<br/>%s"
msgid "This account does not have email enabled."
@@ -4693,7 +5071,8 @@ msgid "Initiate _Chat"
msgstr "Start gruppesamtale"
msgid "SSL support is needed for MSN. Please install a supported SSL library."
-msgstr "SSL-støtte kreves for MSN. Vennligst installer et støttet SSL-bibliotek."
+msgstr ""
+"SSL-støtte kreves for MSN. Vennligst installer et støttet SSL-bibliotek."
msgid "Failed to connect to server."
msgstr "Klarte ikke koble til tjener."
@@ -4808,19 +5187,19 @@ msgid "Work Address"
msgstr "Arbeidsadresse"
msgid "Work Mobile"
-msgstr "Mobil Jobb"
+msgstr "Mobil arbeid"
msgid "Work Pager"
-msgstr "Telefonsøker Jobb"
+msgstr "Telefonsøker arbeid"
msgid "Work Fax"
-msgstr "Fax Jobb"
+msgstr "Fax arbeid"
msgid "Work Email"
-msgstr "E-post Arbeid"
+msgstr "E-post arbeid"
msgid "Work IM"
-msgstr "Lynmelding Arbeid"
+msgstr "Lynmelding arbeid"
msgid "Start Date"
msgstr "Startdato"
@@ -4837,11 +5216,20 @@ msgstr "Hjemmeside"
msgid "The user has not created a public profile."
msgstr "Brukeren har ikke opprettet en offentlig profil."
-msgid "MSN reported not being able to find the user's profile. This either means that the user does not exist, or that the user exists but has not created a public profile."
-msgstr "MSN klarte ikke å finne brukerens profil. Dette betyr enten at brukeren ikke eksisterer, eller at brukeren ikke har opprettet en offentlig profil."
+msgid ""
+"MSN reported not being able to find the user's profile. This either means "
+"that the user does not exist, or that the user exists but has not created a "
+"public profile."
+msgstr ""
+"MSN klarte ikke å finne brukerens profil. Dette betyr enten at brukeren ikke "
+"eksisterer, eller at brukeren ikke har opprettet en offentlig profil."
-msgid "Could not find any information in the user's profile. The user most likely does not exist."
-msgstr "Pidgin klarte ikke finne noen informasjon i brukerens profil. Antakelig eksisterer brukeren ikke."
+msgid ""
+"Could not find any information in the user's profile. The user most likely "
+"does not exist."
+msgstr ""
+"Pidgin klarte ikke finne noen informasjon i brukerens profil. Antakelig "
+"eksisterer brukeren ikke."
msgid "View web profile"
msgstr "Vis nettprofil"
@@ -4917,7 +5305,8 @@ msgstr "Klarte ikke tillate bruker på %s (%s)"
#, c-format
msgid "%s could not be added because your buddy list is full."
-msgstr "%s kunne ikke bli lagt til kontaktlista, fordi din kontaktliste er full."
+msgstr ""
+"%s kunne ikke bli lagt til kontaktlista, fordi din kontaktliste er full."
#, c-format
msgid "%s is not a valid passport account."
@@ -4937,24 +5326,36 @@ msgstr "Klarte 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-tjeneren vil stenge ned pga. vedlikeholdsarbeid i løpet av %d minutt. Du vil da bli frakoblet, så vennligst avslutt eventuelle samtaler før det.\n"
+"MSN-tjeneren vil stenge ned pga. vedlikeholdsarbeid i løpet av %d minutt. Du "
+"vil da bli frakoblet, så vennligst avslutt eventuelle samtaler før det.\n"
"\n"
"Etter at vedlikeholdsarbeidet er ferdig, kan du logge på igjen."
msgstr[1] ""
-"MSN-tjeneren vil stenge ned pga. vedlikeholdsarbeid i løpet av %d minutter. Du vil da bli frakoblet, så vennligst avslutt eventuelle samtaler før det.\n"
+"MSN-tjeneren vil stenge ned pga. vedlikeholdsarbeid i løpet av %d minutter. "
+"Du vil da bli frakoblet, så vennligst avslutt eventuelle samtaler før det.\n"
"\n"
"Etter at vedlikeholdsarbeidet er ferdig, kan du logge på igjen."
-msgid "Message was not sent because the system is unavailable. This normally happens when the user is blocked or does not exist."
-msgstr "Beskjeden ble ikke sendt fordi system er utilgjengelig. Dette skjer normalt når brukeren er blokkert eller ikke eksisterer."
+msgid ""
+"Message was not sent because the system is unavailable. This normally "
+"happens when the user is blocked or does not exist."
+msgstr ""
+"Beskjeden ble ikke sendt fordi system er utilgjengelig. Dette skjer normalt "
+"når brukeren er blokkert eller ikke eksisterer."
msgid "Message was not sent because messages are being sent too quickly."
msgstr "Meldingen ble ikke sendt fordi meldinger blir sendt for raskt."
@@ -4992,7 +5393,8 @@ msgid "You have signed on from another location."
msgstr "Du ble logget av fordi du har logget på et annet sted."
msgid "The MSN servers are temporarily unavailable. Please wait and try again."
-msgstr "MSN-tjenerene er midlertidig utilgjengelig.Vennligst prøv igjen senere."
+msgstr ""
+"MSN-tjenerene er midlertidig utilgjengelig.Vennligst prøv igjen senere."
msgid "The MSN servers are going down temporarily."
msgstr "MSN-tjenerne vil bli utilgjengelig en liten stund."
@@ -5001,8 +5403,11 @@ msgstr "MSN-tjenerne vil bli utilgjengelig en liten stund."
msgid "Unable to authenticate: %s"
msgstr "Klarte ikke autentisere: %s"
-msgid "Your MSN buddy list is temporarily unavailable. Please wait and try again."
-msgstr "Din MSN-kontaktliste er midlertidig utilgjengelig. Vennligst prøv igjen senere."
+msgid ""
+"Your MSN buddy list is temporarily unavailable. Please wait and try again."
+msgstr ""
+"Din MSN-kontaktliste er midlertidig utilgjengelig. Vennligst prøv igjen "
+"senere."
msgid "Handshaking"
msgstr "Håndtrykk"
@@ -5035,7 +5440,8 @@ msgid "Message may have not been sent because a timeout occurred:"
msgstr "Meldingen ble kanskje ikke sendt, et tidsavbrudd inntraff:"
msgid "Message could not be sent, not allowed while invisible:"
-msgstr "Meldingen ble ikke sendt, du ikke kan sende meldinger når du er usynlig:"
+msgstr ""
+"Meldingen ble ikke sendt, du ikke kan sende meldinger når du er usynlig:"
msgid "Message could not be sent because the user is offline:"
msgstr "Meldingen kunne ikke bli sendt, brukeren er frakoblet:"
@@ -5046,11 +5452,18 @@ msgstr "Meldingen kunne ikke bli sendt på grunn av en tilkoblingfeil:"
msgid "Message could not be sent because we are sending too quickly:"
msgstr "Meldingen ble ikke sendt fordi vi sender for raskt:"
-msgid "Message could not be sent because we were unable to establish a session with the server. This is likely a server problem, try again in a few minutes:"
-msgstr "Beskjeden kunne ikke bli sendt fordi vi kunne ikke opprette en økt med serveren. Dette er sannsynligvis et server problem, prøv igjen om noen minutter:"
+msgid ""
+"Message could not be sent because we were unable to establish a session with "
+"the server. This is likely a server problem, try again in a few minutes:"
+msgstr ""
+"Beskjeden kunne ikke bli sendt fordi vi kunne ikke opprette en økt med "
+"serveren. Dette er sannsynligvis et server problem, prøv igjen om noen "
+"minutter:"
-msgid "Message could not be sent because an error with the switchboard occurred:"
-msgstr "Meldingen kunne ikke bli sendt, da det skjedde en feil med sentralbordet:"
+msgid ""
+"Message could not be sent because an error with the switchboard occurred:"
+msgstr ""
+"Meldingen kunne ikke bli sendt, da det skjedde en feil med sentralbordet:"
msgid "Message may have not been sent because an unknown error occurred:"
msgstr "Meldingen kunne ikke bli sendt på grunn av en ukjent feil:"
@@ -5142,10 +5555,18 @@ msgid "IM Friends"
msgstr "Lynmeldingsvenner"
#, c-format
-msgid "%d buddy was added or updated from the server (including buddies already on the server-side list)"
-msgid_plural "%d buddies were added or updated from the server (including buddies already on the server-side list)"
-msgstr[0] "%d kontakt ble lagt til eller oppdatert fra serveren (inkludert kontakter allerede på tjenerside-listen)"
-msgstr[1] "%d kontakter ble lagt til eller oppdatert fra serveren (inkludert kontakter allerede på tjenerside-listen)"
+msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
+"%d buddies were added or updated from the server (including buddies already "
+"on the server-side list)"
+msgstr[0] ""
+"%d kontakt ble lagt til eller oppdatert fra serveren (inkludert kontakter "
+"allerede på tjenerside-listen)"
+msgstr[1] ""
+"%d kontakter ble lagt til eller oppdatert fra serveren (inkludert kontakter "
+"allerede på tjenerside-listen)"
msgid "Add contacts from server"
msgstr "Ugyldig svar fra tjener"
@@ -5161,8 +5582,15 @@ msgid "Protocol error, code %d: %s"
msgstr "Protokoll feil, kode %d: %s"
#, c-format
-msgid "%s Your password is %d characters, greater than the expected maximum length of %d for MySpaceIM. Please shorten your password at http://profileedit.myspace.com/index.cfm?fuseaction=accountSettings.changePassword and try again."
-msgstr "%s Passordet ditt er på %d tegn. MySpaceIM godtar bare %d tegn. Gjør passordet ditt kortere på nettsiden http://profileedit.myspace.com/index.cfm?fuseaction=accountSettings.changePassword og prøv på nytt."
+msgid ""
+"%s Your password is %d characters, greater than the expected maximum length "
+"of %d for MySpaceIM. Please shorten your password at http://profileedit."
+"myspace.com/index.cfm?fuseaction=accountSettings.changePassword and try "
+"again."
+msgstr ""
+"%s Passordet ditt er på %d tegn. MySpaceIM godtar bare %d tegn. Gjør "
+"passordet ditt kortere på nettsiden http://profileedit.myspace.com/index.cfm?"
+"fuseaction=accountSettings.changePassword og prøv på nytt."
msgid "MySpaceIM Error"
msgstr "MySpaceIM-feil"
@@ -5204,8 +5632,12 @@ msgstr "Manglende Summering"
msgid "The RC4 cipher could not be found"
msgstr "RC4 summeringen kunne ikke bli funnet"
-msgid "Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will not be loaded."
-msgstr "Oppgrader til en libpurple med RC4 støtte (>= 2.0.1). MySpaceIM tillegg vil ikke bli lastet."
+msgid ""
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
+"Oppgrader til en libpurple med RC4 støtte (>= 2.0.1). MySpaceIM tillegg vil "
+"ikke bli lastet."
msgid "Add friends from MySpace.com"
msgstr "Legg til venner fra MySpace.com"
@@ -5481,8 +5913,12 @@ msgstr "Feil brukernavn eller passord"
msgid "Could not recognize the host of the username you entered"
msgstr "Klarte ikke kjenne igjen verten til det brukernavnet du tastet inn"
-msgid "Your account has been disabled because too many incorrect passwords were entered"
-msgstr "Kontoen din har blitt deaktivert på grunn av for mange ugyldige inntastede passord"
+msgid ""
+"Your account has been disabled because too many incorrect passwords were "
+"entered"
+msgstr ""
+"Kontoen din har blitt deaktivert på grunn av for mange ugyldige inntastede "
+"passord"
msgid "You cannot add the same person twice to a conversation"
msgstr "Du kan ikke legge til den samme personen to ganger til en samtale"
@@ -5502,8 +5938,11 @@ msgstr "Inkompatibel protokollversjon"
msgid "The user has blocked you"
msgstr "Brukeren har blokkert deg"
-msgid "This evaluation version does not allow more than ten users to log in at one time"
-msgstr "Denne testversjonen tillater ikke mer enn ti samtidige innloggede brukere"
+msgid ""
+"This evaluation version does not allow more than ten users to log in at one "
+"time"
+msgstr ""
+"Denne testversjonen tillater ikke mer enn ti samtidige innloggede brukere"
msgid "The user is either offline or you are blocked"
msgstr "Brukeren er enten frakoplet, eller så er du blokkert"
@@ -5535,19 +5974,28 @@ msgstr "Klarte ikke invitere bruker (%s)."
#, c-format
msgid "Unable to send message to %s. Could not create the conference (%s)."
-msgstr "Klarte ikke sende beskjed til %s. Klarte ikke sette opp konferansen (%s)."
+msgstr ""
+"Klarte ikke sende beskjed til %s. Klarte ikke sette opp konferansen (%s)."
#, c-format
msgid "Unable to send message. Could not create the conference (%s)."
msgstr "Klarte ikke sende beskjed. Klarte ikke sette opp konferansen (%s)."
#, c-format
-msgid "Unable to move user %s to folder %s in the server side list. Error while creating folder (%s)."
-msgstr "Klarte ikke flytte brukeren %s til mappe %s i lista på tjenersiden. En feil oppsto under opprettelse av mappe (%s)."
+msgid ""
+"Unable to move user %s to folder %s in the server side list. Error while "
+"creating folder (%s)."
+msgstr ""
+"Klarte ikke flytte brukeren %s til mappe %s i lista på tjenersiden. En feil "
+"oppsto under opprettelse av mappe (%s)."
#, c-format
-msgid "Unable to add %s to your buddy list. Error creating folder in server side list (%s)."
-msgstr "Klarte ikke legge til %s i kontaktlista. En feil oppsto under opprettelse i lista på tjenersiden (%s)."
+msgid ""
+"Unable to add %s to your buddy list. Error creating folder in server side "
+"list (%s)."
+msgstr ""
+"Klarte ikke legge til %s i kontaktlista. En feil oppsto under opprettelse i "
+"lista på tjenersiden (%s)."
#, c-format
msgid "Could not get details for user %s (%s)."
@@ -5636,20 +6084,27 @@ msgid "Would you like to join the conversation?"
msgstr "Ønsker du å bli med i samtalen?"
msgid "You have been logged out because you logged in at another workstation."
-msgstr "Du ble logget av fordi du har logget på med dette skjermnavnet et annet sted."
+msgstr ""
+"Du ble logget av fordi du har logget på med dette skjermnavnet et annet sted."
#, c-format
-msgid "%s appears to be offline and did not receive the message that you just sent."
+msgid ""
+"%s appears to be offline and did not receive the message that you just sent."
msgstr "%s ser ut til å være frakoplet, og mottok ikke meldingen du sendte."
-msgid "Unable to connect to server. Please enter the address of the server you wish to connect to."
-msgstr "Klarte ikke kople til tjener, skriv inn adressen til tjeneren du ønsker å kople til."
+msgid ""
+"Unable to connect to server. Please enter the address of the server you wish "
+"to connect to."
+msgstr ""
+"Klarte ikke kople til tjener, skriv inn adressen til tjeneren du ønsker å "
+"kople til."
msgid "Error. SSL support is not installed."
msgstr "Feil: SSL-støtte er ikke installert."
msgid "This conference has been closed. No more messages can be sent."
-msgstr "Denne konferansen har blitt stengt, ingen flere meldinger kan bli sendt."
+msgstr ""
+"Denne konferansen har blitt stengt, ingen flere meldinger kan bli sendt."
#. *< type
#. *< ui_requirement
@@ -5742,8 +6197,12 @@ msgid "Direct IM established"
msgstr "Direkte lynmelding opprettet"
#, c-format
-msgid "%s tried to send you a %s file, but we only allow files up to %s over Direct IM. Try using file transfer instead.\n"
-msgstr "%s prøvde å sende deg en %s fil, men vi tillater kun filer opp til %s over Direct IM. Prøv å bruke filoverføring istedenfor.\n"
+msgid ""
+"%s tried to send you a %s file, but we only allow files up to %s over Direct "
+"IM. Try using file transfer instead.\n"
+msgstr ""
+"%s prøvde å sende deg en %s fil, men vi tillater kun filer opp til %s over "
+"Direct IM. Prøv å bruke filoverføring istedenfor.\n"
#, c-format
msgid "File %s is %s, which is larger than the maximum size of %s."
@@ -5821,12 +6280,24 @@ msgstr "Køen er full"
msgid "Not while on AOL"
msgstr "Ikke mens du er på AOL"
-msgid "(There was an error receiving this message. The buddy you are speaking with is probably using a different encoding than expected. If you know what encoding he is using, you can specify it in the advanced account options for your AIM/ICQ account.)"
-msgstr "(Det oppsto en feil i mottak av denne beskjeden. Kontakten du snakker med bruker sannsynligvis en annen koding enn forventet. Om du vet hvilken koding han bruker, kan du spesifisere dette i avanserte kontoinstillinger for din AIM/ICQ konto.)"
+msgid ""
+"(There was an error receiving this message. The buddy you are speaking with "
+"is probably using a different encoding than expected. If you know what "
+"encoding he is using, you can specify it in the advanced account options for "
+"your AIM/ICQ account.)"
+msgstr ""
+"(Det oppsto en feil i mottak av denne beskjeden. Kontakten du snakker med "
+"bruker sannsynligvis en annen koding enn forventet. Om du vet hvilken "
+"koding han bruker, kan du spesifisere dette i avanserte kontoinstillinger "
+"for din AIM/ICQ konto.)"
#, c-format
-msgid "(There was an error receiving this message. Either you and %s have different encodings selected, or %s has a buggy client.)"
-msgstr "(Det oppstod en feil under mottaket av denne beskjeden. Enten har du og %s valgt ulike tegnkoding, eller så bruker %s en klient med feil i.)"
+msgid ""
+"(There was an error receiving this message. Either you and %s have "
+"different encodings selected, or %s has a buggy client.)"
+msgstr ""
+"(Det oppstod en feil under mottaket av denne beskjeden. Enten har du og %s "
+"valgt ulike tegnkoding, eller så bruker %s en klient med feil i.)"
#. Label
msgid "Buddy Icon"
@@ -5946,8 +6417,15 @@ msgid "Finalizing connection"
msgstr "Fullfører tilkobling"
#, c-format
-msgid "Unable to login: Could not sign on as %s because the username is invalid. Usernames must be a valid email address, or start with a letter and contain only letters, numbers and spaces, or contain only numbers."
-msgstr "Får ikke til å logge inn: Klarte ikke logge på som %s fordi brukernavnet er ugyldig. Brukernavn må være en gyldig e-postadresse, eller begynna med en bokstav og bare inneholde bokstaver, tall og mellomrom, eller bare inneholde tall."
+msgid ""
+"Unable to login: Could not sign on as %s because the username is invalid. "
+"Usernames must be a valid email address, or start with a letter and contain "
+"only letters, numbers and spaces, or contain only numbers."
+msgstr ""
+"Får ikke til å logge inn: Klarte ikke logge på som %s fordi brukernavnet er "
+"ugyldig. Brukernavn må være en gyldig e-postadresse, eller begynna med en "
+"bokstav og bare inneholde bokstaver, tall og mellomrom, eller bare inneholde "
+"tall."
#. Unregistered screen name
#. uid is not exist
@@ -5967,8 +6445,12 @@ msgstr "AOL Instant Messenger-tjenesten er midlertidig utilgjengelig."
#. screen name connecting too frequently
#. IP address connecting too frequently
-msgid "You have been connecting and disconnecting too frequently. Wait ten minutes and try again. If you continue to try, you will need to wait even longer."
-msgstr "Du har koblet til og koblet fra for hurtig. Vent ti minutter og prøv igjen. Hvis du fortsetter å prøve nå, vil du måtte vente enda lenger."
+msgid ""
+"You have been connecting and disconnecting too frequently. Wait ten minutes "
+"and try again. If you continue to try, you will need to wait even longer."
+msgstr ""
+"Du har koblet til og koblet fra for hurtig. Vent ti minutter og prøv igjen. "
+"Hvis du fortsetter å prøve nå, vil du måtte vente enda lenger."
#, c-format
msgid "The client version you are using is too old. Please upgrade at %s"
@@ -5997,7 +6479,9 @@ msgstr "_OK"
#, c-format
msgid "You may be disconnected shortly. If so, check %s for updates."
-msgstr "Du kan bli frakoblet ganske snart. Hvis det skjer, sjekk %s for oppdateringer."
+msgstr ""
+"Du kan bli frakoblet ganske snart. Hvis det skjer, sjekk %s for "
+"oppdateringer."
msgid "Unable to get a valid AIM login hash."
msgstr "Klarte ikke å motta gyldig AIM-påloggingshash."
@@ -6016,7 +6500,8 @@ msgid "Unable to initialize connection"
msgstr "Klarte ikke lage ny tilkobling"
msgid "Please authorize me so I can add you to my buddy list."
-msgstr "Vennligst godkjenn meg slik at jeg kan legge deg til i kontaktlisten min."
+msgstr ""
+"Vennligst godkjenn meg slik at jeg kan legge deg til i kontaktlisten min."
msgid "Authorization Request Message:"
msgstr "Beskjed i godkjenningsforespørsel:"
@@ -6032,10 +6517,12 @@ msgstr "Godkjenning nektet, grunn:"
#, c-format
msgid ""
-"The user %u has denied your request to add them to your buddy list for the following reason:\n"
+"The user %u has denied your request to add them to your buddy list for the "
+"following reason:\n"
"%s"
msgstr ""
-"Brukeren %u har avslått din forespørsel om å bli lagt til i din kontaktliste med følgende grunn:\n"
+"Brukeren %u har avslått din forespørsel om å bli lagt til i din kontaktliste "
+"med følgende grunn:\n"
"%s"
msgid "ICQ authorization denied."
@@ -6044,7 +6531,9 @@ msgstr "ICQ-godkjenning avslått."
#. Someone has granted you authorization
#, c-format
msgid "The user %u has granted your request to add them to your buddy list."
-msgstr "Brukeren %u har godtatt din forespørsel om å bli lagt til i kontaktlisten din."
+msgstr ""
+"Brukeren %u har godtatt din forespørsel om å bli lagt til i kontaktlisten "
+"din."
#, c-format
msgid ""
@@ -6108,22 +6597,37 @@ msgstr[0] "Du har gått glipp av %hu beskjed fra %s fordi den var for stor."
msgstr[1] "Du har gått glipp av %hu beskjeder fra %s fordi de var for store."
#, c-format
-msgid "You missed %hu message from %s because the rate limit has been exceeded."
-msgid_plural "You missed %hu messages from %s because the rate limit has been exceeded."
-msgstr[0] "Du har gått glipp av %hu beskjed fra %s fordi hastighetsgrensen har blitt overskredet."
-msgstr[1] "Du har gått glipp av %hu beskjeder fra %s fordi hastighetsgrensen har blitt overskredet."
+msgid ""
+"You missed %hu message from %s because the rate limit has been exceeded."
+msgid_plural ""
+"You missed %hu messages from %s because the rate limit has been exceeded."
+msgstr[0] ""
+"Du har gått glipp av %hu beskjed fra %s fordi hastighetsgrensen har blitt "
+"overskredet."
+msgstr[1] ""
+"Du har gått glipp av %hu beskjeder fra %s fordi hastighetsgrensen har blitt "
+"overskredet."
#, c-format
-msgid "You missed %hu message from %s because his/her warning level is too high."
-msgid_plural "You missed %hu messages from %s because his/her warning level is too high."
-msgstr[0] "Du har gått glipp av %hu beskjed fra %s fordi hans/hennes advarselsnivå er for høyt."
-msgstr[1] "Du har gått glipp av %hu beskjeder fra %s fordi hans/hennes advarselsnivå er for høyt."
+msgid ""
+"You missed %hu message from %s because his/her warning level is too high."
+msgid_plural ""
+"You missed %hu messages from %s because his/her warning level is too high."
+msgstr[0] ""
+"Du har gått glipp av %hu beskjed fra %s fordi hans/hennes advarselsnivå er "
+"for høyt."
+msgstr[1] ""
+"Du har gått glipp av %hu beskjeder fra %s fordi hans/hennes advarselsnivå er "
+"for høyt."
#, c-format
msgid "You missed %hu message from %s because your warning level is too high."
-msgid_plural "You missed %hu messages from %s because your warning level is too high."
-msgstr[0] "Du har gått glipp av %hu beskjed fra %s fordi ditt advarselsnivå er for høyt."
-msgstr[1] "Du har gått glipp av %hu beskjed fra %s fordi ditt advarselsnivå er for høyt."
+msgid_plural ""
+"You missed %hu messages from %s because your warning level is too high."
+msgstr[0] ""
+"Du har gått glipp av %hu beskjed fra %s fordi ditt advarselsnivå er for høyt."
+msgstr[1] ""
+"Du har gått glipp av %hu beskjed fra %s fordi ditt advarselsnivå er for høyt."
#, c-format
msgid "You missed %hu message from %s for an unknown reason."
@@ -6160,11 +6664,19 @@ msgid "Your AIM connection may be lost."
msgstr "AIM-tilkoblingen kan være brutt."
#. The conversion failed!
-msgid "[Unable to display a message from this user because it contained invalid characters.]"
-msgstr "[Klarte ikke vise en melding fra denne brukeren da den inneholdt ugyldige tegn.]"
+msgid ""
+"[Unable to display a message from this user because it contained invalid "
+"characters.]"
+msgstr ""
+"[Klarte ikke vise en melding fra denne brukeren da den inneholdt ugyldige "
+"tegn.]"
-msgid "The last action you attempted could not be performed because you are over the rate limit. Please wait 10 seconds and try again."
-msgstr "Den siste kommandoen ble ikke utført fordi du har overskredet hastighetsgrensen. Vennligst vent 10 sekunder og prøv igjen."
+msgid ""
+"The last action you attempted could not be performed because you are over "
+"the rate limit. Please wait 10 seconds and try again."
+msgstr ""
+"Den siste kommandoen ble ikke utført fordi du har overskredet "
+"hastighetsgrensen. Vennligst vent 10 sekunder og prøv igjen."
#, c-format
msgid "You have been disconnected from chat room %s."
@@ -6217,28 +6729,48 @@ msgid "Account Confirmation Requested"
msgstr "Kontobekreftelse forespurt"
#, c-format
-msgid "Error 0x%04x: Unable to format username because the requested name differs from the original."
-msgstr "Feil 0x%04x: Klarte ikke formatere brukernavnet fordi det forespurte navnet er forskjellig fra det opprinnelige."
+msgid ""
+"Error 0x%04x: Unable to format username because the requested name differs "
+"from the original."
+msgstr ""
+"Feil 0x%04x: Klarte ikke formatere brukernavnet fordi det forespurte navnet "
+"er forskjellig fra det opprinnelige."
#, c-format
msgid "Error 0x%04x: Unable to format username because it is invalid."
msgstr "Feil 0x%04x: Klarte ikke formatere brukernavnet fordi det er ugyldig."
#, c-format
-msgid "Error 0x%04x: Unable to format username because the requested name is too long."
-msgstr "Feil 0x%04x: Klarte ikke formatere brukernavnet fordi det forespurte navnet er for langt."
+msgid ""
+"Error 0x%04x: Unable to format username because the requested name is too "
+"long."
+msgstr ""
+"Feil 0x%04x: Klarte ikke formatere brukernavnet fordi det forespurte navnet "
+"er for langt."
#, c-format
-msgid "Error 0x%04x: Unable to change email address because there is already a request pending for this username."
-msgstr "Feil 0x%04x: Klarte ikke endre e-postadressen fordi det finnes en pågående forespørsel for dette brukernavnet."
+msgid ""
+"Error 0x%04x: Unable to change email address because there is already a "
+"request pending for this username."
+msgstr ""
+"Feil 0x%04x: Klarte ikke endre e-postadressen fordi det finnes en pågående "
+"forespørsel for dette brukernavnet."
#, c-format
-msgid "Error 0x%04x: Unable to change email address because the given address has too many usernames associated with it."
-msgstr "Feil 0x%04x: Klarte ikke endre e-postadressen fordi den gitte adressen har for mange brukernavn assosiert ved seg."
+msgid ""
+"Error 0x%04x: Unable to change email address because the given address has "
+"too many usernames associated with it."
+msgstr ""
+"Feil 0x%04x: Klarte ikke endre e-postadressen fordi den gitte adressen har "
+"for mange brukernavn assosiert ved seg."
#, c-format
-msgid "Error 0x%04x: Unable to change email address because the given address is invalid."
-msgstr "Feil 0x%04x: Klarte ikke endre e-postadressen fordi den gitte adressen er ugyldig."
+msgid ""
+"Error 0x%04x: Unable to change email address because the given address is "
+"invalid."
+msgstr ""
+"Feil 0x%04x: Klarte ikke endre e-postadressen fordi den gitte adressen er "
+"ugyldig."
#, c-format
msgid "Error 0x%04x: Unknown error."
@@ -6254,36 +6786,67 @@ msgstr "E-postadressen for %s er %s"
msgid "Account Info"
msgstr "Kontoinformasjon"
-msgid "Your IM Image was not sent. You must be Direct Connected to send IM Images."
-msgstr "Ditt direktemeldingsbilde ble ikke sendt. Du må være direkte tilkoblet for å sende direktemeldingsbilder."
+msgid ""
+"Your IM Image was not sent. You must be Direct Connected to send IM Images."
+msgstr ""
+"Ditt lynmeldingsbilde ble ikke sendt. Du må være direkte tilkoblet for å "
+"sende lynmeldingsbilder."
msgid "Unable to set AIM profile."
msgstr "Klarte ikke sette AIM-profil."
-msgid "You have probably requested to set your profile before the login procedure completed. Your profile remains unset; try setting it again when you are fully connected."
-msgstr "Du har antakeligvis prøvd å lagre profilinformasjon før innloggingsprosedyren var ferdig. Din profil er ennå ikke blitt lagret. Prøv å lagre den igjen når du er ferdig pålogget."
+msgid ""
+"You have probably requested to set your profile before the login procedure "
+"completed. Your profile remains unset; try setting it again when you are "
+"fully connected."
+msgstr ""
+"Du har antakeligvis prøvd å lagre profilinformasjon før "
+"innloggingsprosedyren var ferdig. Din profil er ennå ikke blitt lagret. Prøv "
+"å lagre den igjen når du er ferdig pålogget."
#, c-format
-msgid "The maximum profile length of %d byte has been exceeded. It has been truncated for you."
-msgid_plural "The maximum profile length of %d bytes has been exceeded. It has been truncated for you."
-msgstr[0] "Maksimum profillengde på %d byte har blitt overskredet. Pidgin har avkortet den før den ble lagret."
-msgstr[1] "Maksimum profillengde på %d bytes har blitt overskredet. Pidgin har avkortet den før den ble lagret."
+msgid ""
+"The maximum profile length of %d byte has been exceeded. It has been "
+"truncated for you."
+msgid_plural ""
+"The maximum profile length of %d bytes has been exceeded. It has been "
+"truncated for you."
+msgstr[0] ""
+"Maksimum profillengde på %d byte har blitt overskredet. Pidgin har avkortet "
+"den før den ble lagret."
+msgstr[1] ""
+"Maksimum profillengde på %d bytes har blitt overskredet. Pidgin har avkortet "
+"den før den ble lagret."
msgid "Profile too long."
msgstr "Profilen er for stor."
#, c-format
-msgid "The maximum away message length of %d byte has been exceeded. It has been truncated for you."
-msgid_plural "The maximum away message length of %d bytes has been exceeded. It has been truncated for you."
-msgstr[0] "Maksimumslengden på %d bytes for fraværsbeskjeder har blitt overskredet. Pidgin har avkortet den."
-msgstr[1] "Maksimumslengden på %d bytes for fraværsbeskjeder har blitt overskredet. Pidgin har avkortet den."
+msgid ""
+"The maximum away message length of %d byte has been exceeded. It has been "
+"truncated for you."
+msgid_plural ""
+"The maximum away message length of %d bytes has been exceeded. It has been "
+"truncated for you."
+msgstr[0] ""
+"Maksimumslengden på %d bytes for fraværsbeskjeder har blitt overskredet. "
+"Pidgin har avkortet den."
+msgstr[1] ""
+"Maksimumslengden på %d bytes for fraværsbeskjeder har blitt overskredet. "
+"Pidgin har avkortet den."
msgid "Away message too long."
msgstr "Fraværsbeskjeden er for lang."
#, c-format
-msgid "Could not add the buddy %s because the username is invalid. Usernames must be a valid email address, or start with a letter and contain only letters, numbers and spaces, or contain only numbers."
-msgstr "Klarte ikke legge til kontakten %s fordi brukernavnet er ugyldig. Brukernavn må enten være en gyldig e-postadresse eller starte med en bokstav og inneholde kun bokstaver, tall og mellomrom, eller bare inneholde nummer."
+msgid ""
+"Could not add the buddy %s because the username is invalid. Usernames must "
+"be a valid email address, or start with a letter and contain only letters, "
+"numbers and spaces, or contain only numbers."
+msgstr ""
+"Klarte ikke legge til kontakten %s fordi brukernavnet er ugyldig. Brukernavn "
+"må enten være en gyldig e-postadresse eller starte med en bokstav og "
+"inneholde kun bokstaver, tall og mellomrom, eller bare inneholde nummer."
msgid "Unable to Add"
msgstr "Klarte ikke legge til"
@@ -6291,15 +6854,23 @@ msgstr "Klarte ikke legge til"
msgid "Unable to Retrieve Buddy List"
msgstr "Klarte ikke hente kontaktliste"
-msgid "The AIM servers were temporarily unable to send your buddy list. Your buddy list is not lost, and will probably become available in a few minutes."
-msgstr "Klarte ikke å hente kontaktlisten din fra AIM-tjenerne. Kontaktlisten er ikke tapt, og vil sannsynligvis bli tilgjengelig i løpet av få minutter."
+msgid ""
+"The AIM servers were temporarily unable to send your buddy list. Your buddy "
+"list is not lost, and will probably become available in a few minutes."
+msgstr ""
+"Klarte ikke å hente kontaktlisten din fra AIM-tjenerne. Kontaktlisten er "
+"ikke tapt, og vil sannsynligvis bli tilgjengelig i løpet av få minutter."
msgid "Orphans"
msgstr "Ugrupperte"
#, c-format
-msgid "Could not add the buddy %s because you have too many buddies in your buddy list. Please remove one and try again."
-msgstr "Klarte ikke legge til kontakten %s fordi du har for mange kontakter i listen. Vennligst fjern en og prøv igjen."
+msgid ""
+"Could not add the buddy %s because you have too many buddies in your buddy "
+"list. Please remove one and try again."
+msgstr ""
+"Klarte ikke legge til kontakten %s fordi du har for mange kontakter i "
+"listen. Vennligst fjern en og prøv igjen."
msgid "(no name)"
msgstr "(uten navn)"
@@ -6309,8 +6880,12 @@ msgid "Could not add the buddy %s for an unknown reason."
msgstr "Klarte ikke legge til kontakten %s pga ukjent årsak."
#, c-format
-msgid "The user %s has given you permission to add him or her to your buddy list. Do you want to add this user?"
-msgstr "Brukeren %s har gitt deg tillatelse til å legge han eller henne til i kontaktlisten din. Ønsker du å legge til denne brukeren?"
+msgid ""
+"The user %s has given you permission to add him or her to your buddy list. "
+"Do you want to add this user?"
+msgstr ""
+"Brukeren %s har gitt deg tillatelse til å legge han eller henne til i "
+"kontaktlisten din. Ønsker du å legge til denne brukeren?"
msgid "Authorization Given"
msgstr "Godkjent"
@@ -6318,7 +6893,9 @@ msgstr "Godkjent"
#. Granted
#, c-format
msgid "The user %s has granted your request to add them to your buddy list."
-msgstr "Brukeren %s har akseptert din forespørsel om å bli lagt til i kontaktlisten din."
+msgstr ""
+"Brukeren %s har akseptert din forespørsel om å bli lagt til i kontaktlisten "
+"din."
msgid "Authorization Granted"
msgstr "Godkjent"
@@ -6326,10 +6903,12 @@ msgstr "Godkjent"
#. Denied
#, c-format
msgid ""
-"The user %s has denied your request to add them to your buddy list for the following reason:\n"
+"The user %s has denied your request to add them to your buddy list for the "
+"following reason:\n"
"%s"
msgstr ""
-"Brukeren %s har avslått din forespørsel om å bli lagt til i din kontaktliste med følgende grun:\n"
+"Brukeren %s har avslått din forespørsel om å bli lagt til i din kontaktliste "
+"med følgende grun:\n"
"%s"
msgid "Authorization Denied"
@@ -6339,7 +6918,9 @@ msgid "_Exchange:"
msgstr "_Utveksling:"
msgid "Your IM Image was not sent. You cannot send IM Images in AIM chats."
-msgstr "Ditt direktemeldingsbilde ble ikke sendt. Du kan ikke sende direktemeldingsbilder i AIM-samtalegrupper."
+msgstr ""
+"Ditt lynmeldingsbilde ble ikke sendt. Du kan ikke sende "
+"lynmeldingsbilder i AIM-samtalegrupper."
msgid "iTunes Music Store Link"
msgstr "iTunes Music Store Link"
@@ -6353,10 +6934,14 @@ msgstr "Kontaktkommentar:"
#, c-format
msgid "You have selected to open a Direct IM connection with %s."
-msgstr "Du har valgt å åpne en direktemelding til %s."
+msgstr "Du har valgt å åpne en lynmelding til %s."
-msgid "Because this reveals your IP address, it may be considered a security risk. Do you wish to continue?"
-msgstr "Fordi dette avslører IP-adressen din, kan det betraktes som en (minimal) sikkerhetsrisiko. Ønsker du å fortsette?"
+msgid ""
+"Because this reveals your IP address, it may be considered a security risk. "
+"Do you wish to continue?"
+msgstr ""
+"Fordi dette avslører IP-adressen din, kan det betraktes som en (minimal) "
+"sikkerhetsrisiko. Ønsker du å fortsette?"
msgid "C_onnect"
msgstr "K_oble til"
@@ -6390,7 +6975,8 @@ msgid "The new formatting is invalid."
msgstr "Den nye formateringen er ugyldig."
msgid "Username formatting can change only capitalization and whitespace."
-msgstr "Brukernavn-formatering kan bare endre på store/små bokstaver og mellomrom."
+msgstr ""
+"Brukernavn-formatering kan bare endre på store/små bokstaver og mellomrom."
msgid "Change Address To:"
msgstr "Endre adresse til:"
@@ -6401,8 +6987,12 @@ msgstr "<i>du venter ikke på godkjenning</i>"
msgid "You are awaiting authorization from the following buddies"
msgstr "Du venter på godkjenning fra disse kontaktene"
-msgid "You can re-request authorization from these buddies by right-clicking on them and selecting \"Re-request Authorization.\""
-msgstr "Du kan spørre om godkjenning på nytt hos disse kontaktene ved å høyreklikke på dem og velge «Spør på nytt om godkjenning»."
+msgid ""
+"You can re-request authorization from these buddies by right-clicking on "
+"them and selecting \"Re-request Authorization.\""
+msgstr ""
+"Du kan spørre om godkjenning på nytt hos disse kontaktene ved å høyreklikke "
+"på dem og velge «Spør på nytt om godkjenning»."
msgid "Find Buddy by Email"
msgstr "Finn kontakt utifra e-post"
@@ -6427,7 +7017,7 @@ msgstr "Sette opp beskjedvideresending (nett)"
#. ICQ actions
msgid "Set Privacy Options..."
-msgstr "Sett Privatliv Instillinger..."
+msgstr "Sett personvernvalg"
#. AIM actions
msgid "Confirm Account"
@@ -6475,8 +7065,14 @@ msgstr "Prøver å kopla til via mellomtjener."
msgid "%s has just asked to directly connect to %s"
msgstr "%s har akkurat spurt om direkte tilkobling til %s"
-msgid "This requires a direct connection between the two computers and is necessary for IM Images. Because your IP address will be revealed, this may be considered a privacy risk."
-msgstr "Dette krever at det opprettes en direkte tilkobling mellom de to datamaskinene, men er nødvendig for å sende bilder. Dette kan være en (minimal) sikkerhetsrisiko fordi mottakeren da ser IP-adressen din."
+msgid ""
+"This requires a direct connection between the two computers and is necessary "
+"for IM Images. Because your IP address will be revealed, this may be "
+"considered a privacy risk."
+msgstr ""
+"Dette krever at det opprettes en direkte tilkobling mellom de to "
+"datamaskinene, men er nødvendig for å sende bilder. Dette kan være en "
+"(minimal) sikkerhetsrisiko fordi mottakeren da ser IP-adressen din."
msgid "Aquarius"
msgstr "Vannmannen"
@@ -6940,6 +7536,9 @@ msgstr "<p><b>Herlige Patch-skribenter</b>:<br>\n"
msgid "<p><b>Acknowledgement</b>:<br>\n"
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 "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr "<p><i>Og, alle guttene på bakrommet ...</i><br>\n"
@@ -6965,6 +7564,9 @@ msgstr "Oppdater alle QQ Qun"
msgid "About OpenQ"
msgstr "Om OpenQ"
+msgid "Modify Buddy Memo"
+msgstr "Endre kontaktmemo"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7003,6 +7605,9 @@ msgstr "Vis tjenervarsel"
msgid "Show server news"
msgstr "Vis tjenernytt"
+msgid "Show chat room when msg comes"
+msgstr "Vis praterommet når meldinga kommer"
+
msgid "Keep alive interval (seconds)"
msgstr "Intervall vedlikeholdstilkobling (sekund)"
@@ -7218,7 +7823,8 @@ msgid "Starting Services"
msgstr "Starter tjenester"
#, c-format
-msgid "A Sametime administrator has issued the following announcement on server %s"
+msgid ""
+"A Sametime administrator has issued the following announcement on server %s"
msgstr "En Sametime administrator har satt følgende kunngjøring på tjeneren %s"
msgid "Sametime Administrator Announcement"
@@ -7268,8 +7874,12 @@ msgid "Create conference with user"
msgstr "Opprett konferanse med bruker"
#, c-format
-msgid "Please enter a topic for the new conference, and an invitation message to be sent to %s"
-msgstr "Vennligst sett topic for en ny konferanse, og en invitasjons beskjed vil bli sendt til %s"
+msgid ""
+"Please enter a topic for the new conference, and an invitation message to be "
+"sent to %s"
+msgstr ""
+"Vennligst sett topic for en ny konferanse, og en invitasjons beskjed vil bli "
+"sendt til %s"
msgid "New Conference"
msgstr "Ny konferanse"
@@ -7287,8 +7897,14 @@ msgid "Invite user to a conference"
msgstr "Inviter bruker til en konferanse"
#, c-format
-msgid "Select a conference from the list below to send an invite to user %s. Select \"Create New Conference\" if you'd like to create a new conference to invite this user to."
-msgstr "Velg en konferanse fra listen under for å sende en invitasjon til bruker %s. Velg \"Start Ny Konferanse\" om du vil starte en ny konferanse og invitere denne brukeren til."
+msgid ""
+"Select a conference from the list below to send an invite to user %s. Select "
+"\"Create New Conference\" if you'd like to create a new conference to invite "
+"this user to."
+msgstr ""
+"Velg en konferanse fra listen under for å sende en invitasjon til bruker %s. "
+"Velg \"Start Ny Konferanse\" om du vil starte en ny konferanse og invitere "
+"denne brukeren til."
msgid "Invite to Conference"
msgstr "Innviter til Konferanse"
@@ -7306,8 +7922,12 @@ msgid "No Sametime Community Server specified"
msgstr "Ingen Sametime fellesskapstjener oppgitt "
#, c-format
-msgid "No host or IP address has been configured for the Meanwhile account %s. Please enter one below to continue logging in."
-msgstr "Ingen vert eller IP adresse har blitt konfigurert for Meanwhile kontoen %s. Skriv inn en under for å fortsette innloggingen."
+msgid ""
+"No host or IP address has been configured for the Meanwhile account %s. "
+"Please enter one below to continue logging in."
+msgstr ""
+"Ingen vert eller IP adresse har blitt konfigurert for Meanwhile kontoen %s. "
+"Skriv inn en under for å fortsette innloggingen."
msgid "Meanwhile Connection Setup"
msgstr "Meanwhile tilkoblingsinnstillinger"
@@ -7335,8 +7955,12 @@ msgid "An ambiguous user ID was entered"
msgstr "En ugyldig bruker ID ble skrevet"
#, c-format
-msgid "The identifier '%s' may possibly refer to any of the following users. Please select the correct user from the list below to add them to your buddy list."
-msgstr "Men enn en bruker ble funnet med det samme navnet %s. Velg den korrekte brukeren fra lista for å legge til kontaktlista."
+msgid ""
+"The identifier '%s' may possibly refer to any of the following users. Please "
+"select the correct user from the list below to add them to your buddy list."
+msgstr ""
+"Men enn en bruker ble funnet med det samme navnet %s. Velg den korrekte "
+"brukeren fra lista for å legge til kontaktlista."
msgid "Select User"
msgstr "Velg bruker"
@@ -7345,8 +7969,12 @@ msgid "Unable to add user: user not found"
msgstr "Klarte ikke legge til bruker - bruker ikke funnet"
#, c-format
-msgid "The identifier '%s' did not match any users in your Sametime community. This entry has been removed from your buddy list."
-msgstr "Brukeren %s matchet ikke noen av brukerne i ditt Sametime nettverk. Denne oppføringen har blitt fjernet fra kontaktlisten din."
+msgid ""
+"The identifier '%s' did not match any users in your Sametime community. This "
+"entry has been removed from your buddy list."
+msgstr ""
+"Brukeren %s matchet ikke noen av brukerne i ditt Sametime nettverk. Denne "
+"oppføringen har blitt fjernet fra kontaktlisten din."
#, c-format
msgid ""
@@ -7399,8 +8027,14 @@ msgid "Notes Address Book group results"
msgstr "Noterer Adressebok resultater for gruppe"
#, c-format
-msgid "The identifier '%s' may possibly refer to any of the following Notes Address Book groups. Please select the correct group from the list below to add it to your buddy list."
-msgstr "'%s' kan referere til hvilken som helst av Notat Adressebok gruppene. Vennligst velg den rette gruppen fra listen under for å legge den til i kontaktlisten din."
+msgid ""
+"The identifier '%s' may possibly refer to any of the following Notes Address "
+"Book groups. Please select the correct group from the list below to add it "
+"to your buddy list."
+msgstr ""
+"'%s' kan referere til hvilken som helst av Notat Adressebok gruppene. "
+"Vennligst velg den rette gruppen fra listen under for å legge den til i "
+"kontaktlisten din."
msgid "Select Notes Address Book"
msgstr "Velg Notes adressebok"
@@ -7409,22 +8043,35 @@ msgid "Unable to add group: group not found"
msgstr "Klarte ikke legge til gruppe: gruppa finnes ikke"
#, c-format
-msgid "The identifier '%s' did not match any Notes Address Book groups in your Sametime community."
-msgstr "'%s' matchet inne noen Notat Adressebok gruppe i ditt Sametime nettverk."
+msgid ""
+"The identifier '%s' did not match any Notes Address Book groups in your "
+"Sametime community."
+msgstr ""
+"'%s' matchet inne noen Notat Adressebok gruppe i ditt Sametime nettverk."
msgid "Notes Address Book Group"
msgstr "Notes adressebokgruppe"
-msgid "Enter the name of a Notes Address Book group in the field below to add the group and its members to your buddy list."
-msgstr "Skriv inn navnet på en Notat Adressebok gruppe i feltet nedenfor, for å legge til gruppen og dens medlemmer til kontaktlisten din."
+msgid ""
+"Enter the name of a Notes Address Book group in the field below to add the "
+"group and its members to your buddy list."
+msgstr ""
+"Skriv inn navnet på en Notat Adressebok gruppe i feltet nedenfor, for å "
+"legge til gruppen og dens medlemmer til kontaktlisten din."
#, c-format
msgid "Search results for '%s'"
msgstr "Søkeresultater for «%s»"
#, c-format
-msgid "The identifier '%s' may possibly refer to any of the following users. You may add these users to your buddy list or send them messages with the action buttons below."
-msgstr "'%s' kan referere til hvilken som helst av de følgende brukerne. Du kan legge til disse brukerne til kontaktlisten din eller sende dem beskjeder med handlings knappene under."
+msgid ""
+"The identifier '%s' may possibly refer to any of the following users. You "
+"may add these users to your buddy list or send them messages with the action "
+"buttons below."
+msgstr ""
+"'%s' kan referere til hvilken som helst av de følgende brukerne. Du kan "
+"legge til disse brukerne til kontaktlisten din eller sende dem beskjeder med "
+"handlings knappene under."
msgid "Search Results"
msgstr "Søkeresultater"
@@ -7443,8 +8090,12 @@ msgstr "Ingen treff"
msgid "Search for a user"
msgstr "Søk etter en bruker"
-msgid "Enter a name or partial ID in the field below to search for matching users in your Sametime community."
-msgstr "Skriv inn et navn eller delvis ID i feltet under for å søke etter matchende brukere i ditt Sametime nettverk."
+msgid ""
+"Enter a name or partial ID in the field below to search for matching users "
+"in your Sametime community."
+msgstr ""
+"Skriv inn et navn eller delvis ID i feltet under for å søke etter matchende "
+"brukere i ditt Sametime nettverk."
msgid "User Search"
msgstr "Bruker Søk"
@@ -7500,8 +8151,11 @@ msgid "The remote user is not present in the network any more"
msgstr "Fjerntliggende bruker kan ikke nås over nettverket lenger"
#, c-format
-msgid "Key agreement request received from %s. Would you like to perform the key agreement?"
-msgstr "Nøkkelavtaleforespørsel motatt fra %s. Ønsker du å gjennomføre nøkkelavtalen?"
+msgid ""
+"Key agreement request received from %s. Would you like to perform the key "
+"agreement?"
+msgstr ""
+"Nøkkelavtaleforespørsel motatt fra %s. Ønsker du å gjennomføre nøkkelavtalen?"
#, c-format
msgid ""
@@ -7517,13 +8171,13 @@ msgid "Key Agreement Request"
msgstr "Nøkkelavtaleforespørsel"
msgid "IM With Password"
-msgstr "Direktemelding med passord"
+msgstr "Lynmelding med passord"
msgid "Cannot set IM key"
-msgstr "Klarer ikke sette direktemeldingsnøkkel"
+msgstr "Klarer ikke sette lynmeldingsnøkkel"
msgid "Set IM Password"
-msgstr "Sett direktemeldingspassord"
+msgstr "Sett lynmeldingspassord"
msgid "Get Public Key"
msgstr "Hent offentlig nøkkel"
@@ -7547,8 +8201,13 @@ msgstr "Kan ikke hente brukerinformasjon"
msgid "The %s buddy is not trusted"
msgstr "Ikke tillit til kontakten %s"
-msgid "You cannot receive buddy notifications until you import his/her public key. You can use the Get Public Key command to get the public key."
-msgstr "Du kan ikke motta kontaktvarslinger før du importerer hans/hennes offentlige nøkkel. Du kan bruke Hent offentlig nøkkel-kommandoen for å få den offentlige nøkkelen."
+msgid ""
+"You cannot receive buddy notifications until you import his/her public key. "
+"You can use the Get Public Key command to get the public key."
+msgstr ""
+"Du kan ikke motta kontaktvarslinger før du importerer hans/hennes offentlige "
+"nøkkel. Du kan bruke Hent offentlig nøkkel-kommandoen for å få den "
+"offentlige nøkkelen."
#. Open file selector to select the public key.
msgid "Open..."
@@ -7558,8 +8217,12 @@ msgstr "Åpne..."
msgid "The %s buddy is not present in the network"
msgstr "Kontakten %s er ikke tilgjengelig på nettverket"
-msgid "To add the buddy you must import his/her public key. Press Import to import a public key."
-msgstr "For å legge til kontakten må du importere hans/hennes offentlige nøkkel. Trykk Import for å importere en offentlig nøkkel."
+msgid ""
+"To add the buddy you must import his/her public key. Press Import to import "
+"a public key."
+msgstr ""
+"For å legge til kontakten må du importere hans/hennes offentlige nøkkel. "
+"Trykk Import for å importere en offentlig nøkkel."
msgid "_Import..."
msgstr "_Importer..."
@@ -7567,11 +8230,19 @@ msgstr "_Importer..."
msgid "Select correct user"
msgstr "Velg korrekt bruker"
-msgid "More than one user was found with the same public key. Select the correct user from the list to add to the buddy list."
-msgstr "Mer enn en bruker ble funnet med den samme offentlige nøkkelen. Velg den korrekte brukeren fra lista for å legge til kontaktlista."
+msgid ""
+"More than one user was found with the same public key. Select the correct "
+"user from the list to add to the buddy list."
+msgstr ""
+"Mer enn en bruker ble funnet med den samme offentlige nøkkelen. Velg den "
+"korrekte brukeren fra lista for å legge til kontaktlista."
-msgid "More than one user was found with the same name. Select the correct user from the list to add to the buddy list."
-msgstr "Men enn en bruker ble funnet med det samme navnet. Velg den korrekte brukeren fra lista for å legge til kontaktlista."
+msgid ""
+"More than one user was found with the same name. Select the correct user "
+"from the list to add to the buddy list."
+msgstr ""
+"Men enn en bruker ble funnet med det samme navnet. Velg den korrekte "
+"brukeren fra lista for å legge til kontaktlista."
msgid "Detached"
msgstr "Løsnet"
@@ -7642,13 +8313,13 @@ msgid "Geolocation"
msgstr "Sted"
msgid "Reset IM Key"
-msgstr "Nullstill direktemeldingsnøkkel"
+msgstr "Nullstill lynmeldingsnøkkel"
msgid "IM with Key Exchange"
-msgstr "Direktemelding med nøkkelsentral"
+msgstr "Lynmelding med nøkkelsentral"
msgid "IM with Password"
-msgstr "Direktemelding med passord"
+msgstr "Lynmelding med passord"
msgid "Get Public Key..."
msgstr "Hent offentlig nøkkel ..."
@@ -7698,6 +8369,7 @@ msgstr "<br><b>Kanal HMAC:</b> %s"
msgid "<br><b>Channel Topic:</b><br>%s"
msgstr "<br><b>Kanaltema:</b><br> %s"
+#, c-format
msgid "<br><b>Channel Modes:</b> "
msgstr "<br><b>Kanaltilstander:</b> "
@@ -7722,8 +8394,19 @@ msgstr "Kanalens nøkkelsetning"
msgid "Channel Public Keys List"
msgstr "Liste over kanalen sine offentlige nøkler"
-msgid "Channel authentication is used to secure the channel from unauthorized access. The authentication may be based on passphrase and digital signatures. If passphrase is set, it is required to be able to join. If channel public keys are set then only users whose public keys are listed are able to join."
-msgstr "Kanalgodkjenning er brukt for å sikre kanalen fra uautorisert tilgang. Autentifikasjonen kan være basert på en nøkkelsetning og digitale signaturer. Dersom nøkkelsetning er valgt, er dette krevd for å bli med. Dersom digitale signaturer er valgt, så kan kun brukere hvis offentlige nøkkler er listet bli med."
+#, c-format
+msgid ""
+"Channel authentication is used to secure the channel from unauthorized "
+"access. The authentication may be based on passphrase and digital "
+"signatures. If passphrase is set, it is required to be able to join. If "
+"channel public keys are set then only users whose public keys are listed are "
+"able to join."
+msgstr ""
+"Kanalgodkjenning er brukt for å sikre kanalen fra uautorisert tilgang. "
+"Autentifikasjonen kan være basert på en nøkkelsetning og digitale "
+"signaturer. Dersom nøkkelsetning er valgt, er dette krevd for å bli med. "
+"Dersom digitale signaturer er valgt, så kan kun brukere hvis offentlige "
+"nøkkler er listet bli med."
msgid "Channel Authentication"
msgstr "Kanalautentifikasjon"
@@ -7748,7 +8431,8 @@ msgid "User Limit"
msgstr "Brukergrense"
msgid "Set user limit on channel. Set to zero to reset user limit."
-msgstr "Velg brukergrense til kanalen. Velg null for å nullstille brukergrense."
+msgstr ""
+"Velg brukergrense til kanalen. Velg null for å nullstille brukergrense."
msgid "Invite List"
msgstr "Inviteringsliste"
@@ -7787,7 +8471,8 @@ msgid "Set Secret Channel"
msgstr "Velg hemmelig kanal"
#, c-format
-msgid "You have to join the %s channel before you are able to join the private group"
+msgid ""
+"You have to join the %s channel before you are able to join the private group"
msgstr "Du må bli med i %s-kanalen før du kan bli med i den private gruppa"
msgid "Join Private Group"
@@ -8028,8 +8713,12 @@ msgid "Passphrase required"
msgstr "Nøkkelsetning kreves"
#, c-format
-msgid "Received %s's public key. Your local copy does not match this key. Would you still like to accept this public key?"
-msgstr "Mottok %s's offentlige nøkkel, men din lokale kopi stemmer ikke overens med denne nøkkelen. Ønsker du fremdeles å akseptere denne nøkkelen?"
+msgid ""
+"Received %s's public key. Your local copy does not match this key. Would you "
+"still like to accept this public key?"
+msgstr ""
+"Mottok %s's offentlige nøkkel, men din lokale kopi stemmer ikke overens med "
+"denne nøkkelen. Ønsker du fremdeles å akseptere denne nøkkelen?"
#, c-format
msgid "Received %s's public key. Would you like to accept this public key?"
@@ -8066,8 +8755,11 @@ msgid "Key Exchange failed"
msgstr "Nøkkelutveksling feilet"
# Er det virkelig "kople til på nytt"?
-msgid "Resuming detached session failed. Press Reconnect to create new connection."
-msgstr "Fortsettelse av løsnet økt misslyktes. Trykk Kople til på nytt for å lage en ny forbindelse."
+msgid ""
+"Resuming detached session failed. Press Reconnect to create new connection."
+msgstr ""
+"Fortsettelse av løsnet økt misslyktes. Trykk Kople til på nytt for å lage en "
+"ny forbindelse."
msgid "Connection failed"
msgstr "Tilkobling feilet"
@@ -8101,6 +8793,7 @@ msgstr "Last ned %s: %s"
msgid "Your Current Mood"
msgstr "Dit nåværende humør"
+#, c-format
msgid "Normal"
msgstr "Normal"
@@ -8147,8 +8840,14 @@ msgstr "Tidssone (UTC)"
msgid "User Online Status Attributes"
msgstr "Brukeren sine tilkoblingsstatusattributt"
-msgid "You can let other users see your online status information and your personal information. Please fill the information you would like other users to see about yourself."
-msgstr "Du kan la andre brukere se din tilkoblingsstatusinformasjon og din personlige informasjon. Fyll inn informasjonen du ønsker at andre skal se om deg."
+msgid ""
+"You can let other users see your online status information and your personal "
+"information. Please fill the information you would like other users to see "
+"about yourself."
+msgstr ""
+"Du kan la andre brukere se din tilkoblingsstatusinformasjon og din "
+"personlige informasjon. Fyll inn informasjonen du ønsker at andre skal se om "
+"deg."
msgid "Message of the Day"
msgstr "Dagens melding"
@@ -8232,7 +8931,8 @@ msgid "topic [&lt;new topic&gt;]: View or change the topic"
msgstr "topic [&lt;new topic&gt;]: Vis eller forandre topic"
msgid "join &lt;channel&gt; [&lt;password&gt;]: Join a chat on this network"
-msgstr "join &lt;channel&gt; [&lt;password&gt;]: Join en samtale på dette nettverket"
+msgstr ""
+"join &lt;channel&gt; [&lt;password&gt;]: Join en samtale på dette nettverket"
msgid "list: List channels on this network"
msgstr "list: Vis kanaler på dette nettverket"
@@ -8241,10 +8941,12 @@ msgid "whois &lt;nick&gt;: View nick's information"
msgstr "whois &lt;nick&gt;: Vis nick'ets info"
msgid "msg &lt;nick&gt; &lt;message&gt;: Send a private message to a user"
-msgstr "msg &lt;nick&gt; &lt;message&gt;: Send en privat beskjed til en bruker"
+msgstr ""
+"msg &lt;nick&gt; &lt;message&gt;: Send en privat beskjed til en bruker"
msgid "query &lt;nick&gt; [&lt;message&gt;]: Send a private message to a user"
-msgstr "query &lt;nick&gt; [&lt;message&gt;]: Send en privat beskjed til en bruker"
+msgstr ""
+"query &lt;nick&gt; [&lt;message&gt;]: Send en privat beskjed til en bruker"
msgid "motd: View the server's Message Of The Day"
msgstr "motd: Vis serverens Message Of The Day"
@@ -8267,11 +8969,19 @@ msgstr "nick &lt;newnick&gt;: Forandre nick'et ditt"
msgid "whowas &lt;nick&gt;: View nick's information"
msgstr "whowas &lt;nick&gt;: Vis nick info"
-msgid "cmode &lt;channel&gt; [+|-&lt;modes&gt;] [arguments]: Change or display channel modes"
-msgstr "cmode &lt;channel&gt; [+|-&lt;modes&gt;] [arguments]: Forandre eller vis kanal modus"
+msgid ""
+"cmode &lt;channel&gt; [+|-&lt;modes&gt;] [arguments]: Change or display "
+"channel modes"
+msgstr ""
+"cmode &lt;channel&gt; [+|-&lt;modes&gt;] [arguments]: Forandre eller vis "
+"kanal modus"
-msgid "cumode &lt;channel&gt; +|-&lt;modes&gt; &lt;nick&gt;: Change nick's modes on channel"
-msgstr "cumode &lt;channel&gt; +|-&lt;modes&gt; &lt;nick&gt;: Forandre nick modus på kanal"
+msgid ""
+"cumode &lt;channel&gt; +|-&lt;modes&gt; &lt;nick&gt;: Change nick's modes "
+"on channel"
+msgstr ""
+"cumode &lt;channel&gt; +|-&lt;modes&gt; &lt;nick&gt;: Forandre nick modus "
+"på kanal"
msgid "umode &lt;usermodes&gt;: Set your modes in the network"
msgstr "umode &lt;usermodes&gt;: Sett modusene dine i nettverket"
@@ -8279,8 +8989,12 @@ msgstr "umode &lt;usermodes&gt;: Sett modusene dine i nettverket"
msgid "oper &lt;nick&gt; [-pubkey]: Get server operator privileges"
msgstr "oper &lt;nick&gt; [-pubkey]: Få server OP rettigheter"
-msgid "invite &lt;channel&gt; [-|+]&lt;nick&gt;: invite nick or add/remove from channel invite list"
-msgstr "invite &lt;channel&gt; [-|+]&lt;nick&gt;: inviter nick eller legg til/fjern fra kanalens invitasjonsliste"
+msgid ""
+"invite &lt;channel&gt; [-|+]&lt;nick&gt;: invite nick or add/remove from "
+"channel invite list"
+msgstr ""
+"invite &lt;channel&gt; [-|+]&lt;nick&gt;: inviter nick eller legg til/fjern "
+"fra kanalens invitasjonsliste"
msgid "kick &lt;channel&gt; &lt;nick&gt; [comment]: Kick client from channel"
msgstr "kick &lt;channel&gt; &lt;nick&gt; [comment]: Kick klient fra kanal"
@@ -8292,7 +9006,8 @@ msgid "ban [&lt;channel&gt; +|-&lt;nick&gt;]: Ban client from channel"
msgstr "ban [&lt;channel&gt; +|-&lt;nick&gt;]: Bannlys klient fra kanal"
msgid "getkey &lt;nick|server&gt;: Retrieve client's or server's public key"
-msgstr "getkey &lt;nick|server&gt;: Få klientens eller serverens offentlige nøkkel"
+msgstr ""
+"getkey &lt;nick|server&gt;: Få klientens eller serverens offentlige nøkkel"
msgid "stats: View server and network statistics"
msgstr "stats: Vis server og nettverk statistikk"
@@ -8303,8 +9018,12 @@ msgstr "ping: Send PING til tilkoblet server"
msgid "users &lt;channel&gt;: List users in channel"
msgstr "users &lt;channel&gt;: Vis brukere i kanal"
-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;channel(s)&gt;: Vis spesifiserte brukere i kanalen/kanlaene"
+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;channel(s)&gt;: Vis "
+"spesifiserte brukere i kanalen/kanlaene"
#. *< type
#. *< ui_requirement
@@ -8344,7 +9063,7 @@ msgid "Public key authentication"
msgstr "Offentlig nøkkel autentisering"
msgid "Block IMs without Key Exchange"
-msgstr "Blokker direktemeldinger uten nøkkelutveksling"
+msgstr "Blokker lynmeldinger uten nøkkelutveksling"
msgid "Block messages to whiteboard"
msgstr "Blokker beskjeder til tavle"
@@ -8441,7 +9160,9 @@ msgid "%s sent message to whiteboard. Would you like to open the whiteboard?"
msgstr "%s sendte beskjed til tavle. Vil du åpne tavlen?"
#, c-format
-msgid "%s sent message to whiteboard on %s channel. Would you like to open the whiteboard?"
+msgid ""
+"%s sent message to whiteboard on %s channel. Would you like to open the "
+"whiteboard?"
msgstr "%s sendte en beskjed til tavle på kanal %s. Vil du åpne tavlen?"
msgid "Whiteboard"
@@ -8450,33 +9171,44 @@ msgstr "Tavle"
msgid "No server statistics available"
msgstr "Ingen tjenerstatistikk tilgjengelig"
+#, c-format
msgid "Failure: Version mismatch, upgrade your client"
msgstr "Feil: Versjonskonflikt, oppgrader din klient"
+#, c-format
msgid "Failure: Remote does not trust/support your public key"
-msgstr "Fjernliggende part støtter eller stoler ikke på ikke din offentlige nøkkel"
+msgstr ""
+"Fjernliggende part støtter eller stoler ikke på ikke din offentlige nøkkel"
+#, c-format
msgid "Failure: Remote does not support proposed KE group"
msgstr "Feil: Fjerntliggende part støtter ikke foreslått KE-gruppe"
+#, c-format
msgid "Failure: Remote does not support proposed cipher"
msgstr "Fjerntliggende part støtter ikke foreslått krypteringsmetode"
+#, c-format
msgid "Failure: Remote does not support proposed PKCS"
msgstr "Feil: Fjerntliggende part støtter ikke foreslått PKCS"
+#, c-format
msgid "Failure: Remote does not support proposed hash function"
msgstr "Feil: Fjerntliggende part støtter ikke foreslått nøkkelfunksjon"
+#, c-format
msgid "Failure: Remote does not support proposed HMAC"
msgstr "Fjerntliggende part støtter ikke foreslått HMAC"
+#, c-format
msgid "Failure: Incorrect signature"
msgstr "Ugyldig signatur"
+#, c-format
msgid "Failure: Invalid cookie"
msgstr "Ugyldig informasjonskapsel"
+#, c-format
msgid "Failure: Authentication failed"
msgstr "Autentisering feilet"
@@ -8576,6 +9308,7 @@ msgstr "%s er ikke pålogget."
msgid "Warning of %s not allowed."
msgstr "Advarsel %s er ikke tillatt."
+#, c-format
msgid "A message has been dropped, you are exceeding the server speed limit."
msgstr "En beskjed ble forkastet. Du overskrider tjenerens fartsgrense."
@@ -8595,30 +9328,39 @@ 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."
+#, c-format
msgid "Failure."
msgstr "Feil."
+#, c-format
msgid "Too many matches."
msgstr "For mange treff."
+#, c-format
msgid "Need more qualifiers."
msgstr "Trenger flere parametre."
+#, c-format
msgid "Dir service temporarily unavailable."
msgstr "Katalogtjenesten er midlertidig utilgjengelig."
+#, c-format
msgid "Email lookup restricted."
msgstr "E-postoppslag er begrenset."
+#, c-format
msgid "Keyword ignored."
msgstr "Nøkkelord ignorert."
+#, c-format
msgid "No keywords."
msgstr "Ingen nøkkelord."
+#, c-format
msgid "User has no directory information."
msgstr "Brukeren har ingen kataloginformasjon."
+#, c-format
msgid "Country not supported."
msgstr "Land ikke støttet."
@@ -8626,17 +9368,25 @@ msgstr "Land ikke støttet."
msgid "Failure unknown: %s."
msgstr "Ukjent feil: %s."
+#, c-format
msgid "Incorrect username or password."
msgstr "Feil brukernavn eller passord."
+#, c-format
msgid "The service is temporarily unavailable."
msgstr "Tjenesten er midlertidig utilgjengelig."
+#, c-format
msgid "Your warning level is currently too high to log in."
msgstr "Advarselsnivået ditt er satt for høyt for å logge inn."
-msgid "You have been connecting and disconnecting too frequently. Wait ten minutes and try again. If you continue to try, you will need to wait even longer."
-msgstr "Du har koblet til og koblet fra for hurtig. Vent ti minutter og prøv igjen. Hvis du fortsetter å prøve nå, vil du måtte vente enda lenger."
+#, c-format
+msgid ""
+"You have been connecting and disconnecting too frequently. Wait ten minutes "
+"and try again. If you continue to try, you will need to wait even longer."
+msgstr ""
+"Du har koblet til og koblet fra for hurtig. Vent ti minutter og prøv igjen. "
+"Hvis du fortsetter å prøve nå, vil du måtte vente enda lenger."
#, c-format
msgid "An unknown signon error has occurred: %s."
@@ -8721,26 +9471,42 @@ msgid "Yahoo! system message for %s:"
msgstr "Yahoo! systemmelding for %s:"
#, c-format
-msgid "%s has (retroactively) denied your request to add them to your list for the following reason: %s."
-msgstr "%s har (tilbakevirkende) avslått din forespørsel om å bli lagt til i kontaktlisten med følgende grunn: %s."
+msgid ""
+"%s has (retroactively) denied your request to add them to your list for the "
+"following reason: %s."
+msgstr ""
+"%s har (tilbakevirkende) avslått din forespørsel om å bli lagt til i "
+"kontaktlisten med følgende grunn: %s."
#, c-format
msgid "%s has (retroactively) denied your request to add them to your list."
-msgstr "%s har (tilbakevirkende) avslått din forespørsel om å bli lagt til i kontaktlisten din."
+msgstr ""
+"%s har (tilbakevirkende) avslått din forespørsel om å bli lagt til i "
+"kontaktlisten din."
msgid "Add buddy rejected"
msgstr "Legge til kontakt avslått"
#, c-format
-msgid "The Yahoo server has requested the use of an unrecognized authentication method. You will probably not be able to successfully sign on to Yahoo. Check %s for updates."
-msgstr "Yahoo-tjeneren har forespurt bruk av en ukjent autentiseringsmetode. Denne versjonen av Pidgin vil antakeligvis ikke være i stand til å logge på Yahoo. Sjekk %s for oppdateringer."
+msgid ""
+"The Yahoo server has requested the use of an unrecognized authentication "
+"method. You will probably not be able to successfully sign on to Yahoo. "
+"Check %s for updates."
+msgstr ""
+"Yahoo-tjeneren har forespurt bruk av en ukjent autentiseringsmetode. Denne "
+"versjonen av Pidgin vil antakeligvis ikke være i stand til å logge på Yahoo. "
+"Sjekk %s for oppdateringer."
msgid "Failed Yahoo! Authentication"
msgstr "Yahoo!-autentisering feilet"
#, c-format
-msgid "You have tried to ignore %s, but the user is on your buddy list. Clicking \"Yes\" will remove and ignore the buddy."
-msgstr "Du forsøkte å ignorere %s, men vedkommende er i kontaktlisten din. Hvis du klikker på \"Ja\" vil kontakten fjernes og ignoreres."
+msgid ""
+"You have tried to ignore %s, but the user is on your buddy list. Clicking "
+"\"Yes\" will remove and ignore the buddy."
+msgstr ""
+"Du forsøkte å ignorere %s, men vedkommende er i kontaktlisten din. Hvis du "
+"klikker på \"Ja\" vil kontakten fjernes og ignoreres."
msgid "Ignore buddy?"
msgstr "Ignorere kontakt?"
@@ -8750,11 +9516,13 @@ msgstr "Din konto har blitt låst, vennligst logg inn på Yahoo!-nettsiden."
#, c-format
msgid "Unknown error number %d. Logging into the Yahoo! website may fix this."
-msgstr "Ukjent feilkode %d. Å logge inn på Yahoo!s nettside, kan kanskje løse dette."
+msgstr ""
+"Ukjent feilkode %d. Å logge inn på Yahoo!s nettside, kan kanskje løse dette."
#, c-format
msgid "Could not add buddy %s to group %s to the server list on account %s."
-msgstr "Klarte ikke legge til kontakt %s i gruppen %s i tjenerlisten på konto %s."
+msgstr ""
+"Klarte ikke legge til kontakt %s i gruppen %s i tjenerlisten på konto %s."
msgid "Could not add buddy to server list"
msgstr "Klarte ikke legge kontakt til tjenerens kontaktliste"
@@ -8925,11 +9693,18 @@ 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 "Beklager, profiler som er markert med vokseninnhold er for tiden ikke støttet."
+msgid ""
+"Sorry, profiles marked as containing adult content are not supported at this "
+"time."
+msgstr ""
+"Beklager, profiler som er markert med vokseninnhold er for tiden ikke "
+"støttet."
-msgid "If you wish to view this profile, you will need to visit this link in your web browser:"
-msgstr "Hvis du ønsker å vise denne profilen, må du åpne denne lenken i en nettleser:"
+msgid ""
+"If you wish to view this profile, you will need to visit this link in your "
+"web browser:"
+msgstr ""
+"Hvis du ønsker å vise denne profilen, må du åpne denne lenken i en nettleser:"
msgid "Yahoo! ID"
msgstr "Yahoo! ID"
@@ -8955,14 +9730,27 @@ msgstr "Kul lenke 3"
msgid "Last Update"
msgstr "Sist oppdatert"
-msgid "This profile is in a language or format that is not supported at this time."
-msgstr "Denne profilen er i et språk eller format som for øyeblikket ikke er støttet."
+msgid ""
+"This profile is in a language or format that is not supported at this time."
+msgstr ""
+"Denne profilen er i et språk eller format som for øyeblikket ikke er støttet."
-msgid "Could not retrieve the user's profile. This most likely is a temporary server-side problem. Please try again later."
-msgstr "Klarte ikke hente ned brukerens profil. Dette er mest sannsynlig et midlertidig server-problem. Prøv igjen senere."
+msgid ""
+"Could not retrieve the user's profile. This most likely is a temporary "
+"server-side problem. Please try again later."
+msgstr ""
+"Klarte ikke hente ned brukerens profil. Dette er mest sannsynlig et "
+"midlertidig server-problem. Prøv igjen senere."
-msgid "Could not retrieve the user's profile. This most likely means that the user does not exist; however, Yahoo! sometimes does fail to find a user's profile. If you know that the user exists, please try again later."
-msgstr "Klarte ikke hente ned brukerens profil. Dette betyr sannsynligvis at brukeren ikke eksisterer, men merk at Yahoo! noen ganger ikke greier å finne en brukers profil. Om du vet at brukeren eksisterer, vennligst prøv igjen senere."
+msgid ""
+"Could not retrieve the user's profile. This most likely means that the user "
+"does not exist; however, Yahoo! sometimes does fail to find a user's "
+"profile. If you know that the user exists, please try again later."
+msgstr ""
+"Klarte ikke hente ned brukerens profil. Dette betyr sannsynligvis at "
+"brukeren ikke eksisterer, men merk at Yahoo! noen ganger ikke greier å finne "
+"en brukers profil. Om du vet at brukeren eksisterer, vennligst prøv igjen "
+"senere."
msgid "The user's profile is empty."
msgstr "Brukerens profil er tom."
@@ -8989,8 +9777,12 @@ msgstr "Kanskje rommet er fullt"
msgid "Not available"
msgstr "Ikke tilgjengelig"
-msgid "Unknown error. You may need to logout and wait five minutes before being able to rejoin a chatroom"
-msgstr "Ukjent feil. Det kan hende du må logge ut og vente fem minutter før du kan entre samtalerommet igjen"
+msgid ""
+"Unknown error. You may need to logout and wait five minutes before being "
+"able to rejoin a chatroom"
+msgstr ""
+"Ukjent feil. Det kan hende du må logge ut og vente fem minutter før du kan "
+"entre samtalerommet igjen"
#, c-format
msgid "You are now chatting in %s."
@@ -9028,8 +9820,12 @@ msgstr ""
"Du har blitt koblet fra tjeneren\n"
"%s"
-msgid "(There was an error converting this message.\t Check the 'Encoding' option in the Account Editor)"
-msgstr "(En feil oppstod under konverteringen av denne beskjeden.\t Kontroller «Tegnkoding»-valget i kontohåndteren)"
+msgid ""
+"(There was an error converting this message.\t Check the 'Encoding' option "
+"in the Account Editor)"
+msgstr ""
+"(En feil oppstod under konverteringen av denne beskjeden.\t Kontroller "
+"«Tegnkoding»-valget i kontohåndteren)"
#, c-format
msgid "Unable to send to chat %s,%s,%s"
@@ -9065,28 +9861,45 @@ msgid "zl &lt;nick&gt;: Locate user"
msgstr "zl &lt;nick&gt;: Finn bruker"
msgid "instance &lt;instance&gt;: Set the instance to be used on this class"
-msgstr "instance &lt;instance&gt;: Sett hendelse som skal brukes for denne klassen"
+msgstr ""
+"instance &lt;instance&gt;: Sett hendelse som skal brukes for denne klassen"
msgid "inst &lt;instance&gt;: Set the instance to be used on this class"
msgstr "inst &lt;instance&gt;: Sett hendelse som skal brukes for denne klassen"
msgid "topic &lt;instance&gt;: Set the instance to be used on this class"
-msgstr "topic &lt;instance&gt;: Sett hendelse som skal brukes for denne klassen"
+msgstr ""
+"topic &lt;instance&gt;: Sett hendelse som skal brukes for denne klassen"
msgid "sub &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Join a new chat"
-msgstr "ub &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Join en ny samtale"
+msgstr ""
+"ub &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Join en ny samtale"
-msgid "zi &lt;instance&gt;: Send a message to &lt;message,<i>instance</i>,*&gt;"
-msgstr "zi &lt;instance&gt;: Send en beskjed til &lt;beskjed,<i>instance</i>,*&gt;"
+msgid ""
+"zi &lt;instance&gt;: Send a message to &lt;message,<i>instance</i>,*&gt;"
+msgstr ""
+"zi &lt;instance&gt;: Send en beskjed til &lt;beskjed,<i>instance</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;class&gt; &lt;instance&gt;: Send en beskjed til &lt;<i>class</i>,<i>instance</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;class&gt; &lt;instance&gt;: Send en beskjed til &lt;<i>class</i>,"
+"<i>instance</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;class&gt; &lt;instance&gt; &lt;recipient&gt;: Send en beskjed til &lt;<i>class</i>,<i>instance</i>,<i>recipient</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;class&gt; &lt;instance&gt; &lt;recipient&gt;: Send en beskjed til "
+"&lt;<i>class</i>,<i>instance</i>,<i>recipient</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;instance&gt; &lt;recipient&gt;: Send en beskjed til &lt;MESSAGE,<i>instance</i>,<i>recipient</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;instance&gt; &lt;recipient&gt;: Send en beskjed til &lt;MESSAGE,"
+"<i>instance</i>,<i>recipient</i>&gt;"
msgid "zc &lt;class&gt;: Send a message to &lt;<i>class</i>,PERSONAL,*&gt;"
msgstr "zc &lt;class&gt;: Send en beskjed til &lt;<i>class</i>,PERSONAL,*&gt;"
@@ -9296,8 +10109,12 @@ 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 ""
+"An error was encountered reading your %s. They have not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"Det oppstod en feil under lesing av %s. Den har ikke blitt lastet, og den "
+"gamle filen ble flyttet til %s~."
msgid "Calculating..."
msgstr "Beregner..."
@@ -9354,8 +10171,12 @@ msgid "Error reading from %s: response too long (%d bytes limit)"
msgstr "Klarte ikke lese fra %s: for langt svar (%d bytes-grense)"
#, c-format
-msgid "Unable to allocate enough memory to hold the contents from %s. The web server may be trying something malicious."
-msgstr "Klarte ikke allokere nok minne til å holde på innholdet fra %s. Det kan hende web serveren prøver på noe ondskapsfullt."
+msgid ""
+"Unable to allocate enough memory to hold the contents from %s. The web "
+"server may be trying something malicious."
+msgstr ""
+"Klarte ikke allokere nok minne til å holde på innholdet fra %s. Det kan "
+"hende web serveren prøver på noe ondskapsfullt."
#, c-format
msgid "Error reading from %s: %s"
@@ -9378,22 +10199,27 @@ msgid " (%s)"
msgstr "(%s)"
#. 10053
+#, c-format
msgid "Connection interrupted by other software on your computer."
msgstr "Forbindelsen ble avbrutt av annen programvare på din datamaskin."
#. 10054
+#, c-format
msgid "Remote host closed connection."
msgstr "Fjern vert lukket forbindelsen."
#. 10060
+#, c-format
msgid "Connection timed out."
msgstr "Tilkoblingen lyktes ikke innenfor tidsgrensen."
#. 10061
+#, c-format
msgid "Connection refused."
msgstr "Tilkoblingen avvist."
#. 10048
+#, c-format
msgid "Address already in use."
msgstr "Adressen er allerede i bruk"
@@ -9520,24 +10346,39 @@ msgstr "Protokoll"
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 ikke satt opp noen lynmeldingskontoer. For å starte tilkobling til %s trykk <b>Legg til ...</b>-knappen nedenfor og sett opp kontoen din først. Om du vil at %s skal koble til flere lynmeldingskontoer, trykk <b>Legg til ...</b> igjen for å sette opp alle sammen.\n"
+"Du har ikke satt opp noen lynmeldingskontoer. For å starte tilkobling til %s "
+"trykk <b>Legg til ...</b>-knappen nedenfor og sett opp kontoen din først. Om "
+"du vil at %s skal koble til flere lynmeldingskontoer, trykk <b>Legg til ...</"
+"b> igjen for å sette opp alle sammen.\n"
"\n"
-"Du kan komme tilbake til dette vinduet for å legge til, redigere eller fjerne kontoer fra <b>Kontoer->Håndter kontoer</b> i kontaktliste-vinduet."
+"Du kan komme tilbake til dette vinduet for å legge til, redigere eller "
+"fjerne kontoer fra <b>Kontoer->Håndter kontoer</b> i kontaktliste-vinduet."
#, c-format
msgid "You have %d contact named %s. Would you like to merge them?"
-msgid_plural "You currently have %d contacts named %s. Would you like to merge them?"
+msgid_plural ""
+"You currently have %d contacts named %s. Would you like to merge them?"
msgstr[0] "Du har kontakten %d som %s. Vil du flette dem sammen?"
msgstr[1] "Du har kontaktene %d som %s. Vil du flette dem sammen?"
-msgid "Merging these contacts will cause them to share a single entry on the buddy list and use a single conversation window. You can separate them again by choosing 'Expand' from the contact's context menu"
-msgstr "Sammenfletting av disse kontaktene vil føre til at de deler en enkelt oppføring i kontaktlisten og bruker ett enkelt samtalevindu. Du kan separere dem igjen ved å velge Utvid fra kontaktens meny i kontaktlisten"
+msgid ""
+"Merging these contacts will cause them to share a single entry on the buddy "
+"list and use a single conversation window. You can separate them again by "
+"choosing 'Expand' from the contact's context menu"
+msgstr ""
+"Sammenfletting av disse kontaktene vil føre til at de deler en enkelt "
+"oppføring i kontaktlisten og bruker ett enkelt samtalevindu. Du kan separere "
+"dem igjen ved å velge Utvid fra kontaktens meny i kontaktlisten"
msgid "Please update the necessary fields."
msgstr "Oppdater de nødvendige feltene."
@@ -9545,7 +10386,9 @@ msgstr "Oppdater de nødvendige feltene."
msgid "Room _List"
msgstr "Rom_liste"
-msgid "Please enter the appropriate information about the chat you would like to join.\n"
+msgid ""
+"Please enter the appropriate information about the chat you would like to "
+"join.\n"
msgstr "Skriv inn informasjon om samtalegruppen du ønsker å bli med i.\n"
msgid "_Account:"
@@ -9624,7 +10467,8 @@ msgstr "_Utvid"
msgid "/Tools/Mute Sounds"
msgstr "/Verktøy/Skru av lyder"
-msgid "You are not currently signed on with an account that can add that buddy."
+msgid ""
+"You are not currently signed on with an account that can add that buddy."
msgstr "Du er ikke pålogget med noen kontoer som kan legge til den kontakten."
#. I don't believe this can happen currently, I think
@@ -9638,7 +10482,7 @@ msgid "/_Buddies"
msgstr "/_Kontakter"
msgid "/Buddies/New Instant _Message..."
-msgstr "/Kontakter/_Ny direktemelding..."
+msgstr "/Kontakter/_Ny lynmelding..."
msgid "/Buddies/Join a _Chat..."
msgstr "/Kontakter/_Bli med i samtalegruppe..."
@@ -9793,7 +10637,7 @@ msgid "Idle %dm"
msgstr "Inaktiv %dm"
msgid "/Buddies/New Instant Message..."
-msgstr "/Kontakter/Ny direktemelding..."
+msgstr "/Kontakter/Ny lynmelding..."
msgid "/Buddies/Join a Chat..."
msgstr "/Kontakter/Bli med i samtalegruppe..."
@@ -9811,7 +10655,7 @@ msgid "/Buddies/Add Group..."
msgstr "/Kontakter/Legg til gruppe..."
msgid "/Tools/Privacy"
-msgstr "/Verktøy/Blokkeringer"
+msgstr "/Verktøy/Personvern"
msgid "/Tools/Room List"
msgstr "/Verktøy/Romliste"
@@ -9850,7 +10694,8 @@ msgstr "Velkommen tilbake!"
#, c-format
msgid "%d account was disabled because you signed on from another location:"
-msgid_plural "%d accounts were disabled because you signed on from another location:"
+msgid_plural ""
+"%d accounts were disabled because you signed on from another location:"
msgstr[0] "%d konto ble deaktivert fordi du har logget på et annet sted:"
msgstr[1] "%d kontoer ble deaktivert fordi du har logget på et annet sted:"
@@ -9871,11 +10716,16 @@ msgstr "/Kontoer"
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 kontoer aktivert. Aktiver dine lynmeldingskontoer fra <b>Kontoer</b>-vinduet ved <b>Kontoer->Håndter kontoer</b>. Når du har aktivert kontoene, kan du logge inn, sette din status og snakke med dine venner."
+"Du har ingen kontoer aktivert. Aktiver dine lynmeldingskontoer fra "
+"<b>Kontoer</b>-vinduet ved <b>Kontoer->Håndter kontoer</b>. Når du har "
+"aktivert kontoene, kan du logge inn, sette din status og snakke med dine "
+"venner."
#. set the Show Offline Buddies option. must be done
#. * after the treeview or faceprint gets mad. -Robot101
@@ -9910,10 +10760,14 @@ msgstr "Legg til kontakten i _gruppe:"
msgid "This protocol does not support chat rooms."
msgstr "Denne protokollversjonen støtter ikke samtalerom."
-msgid "You are not currently signed on with any protocols that have the ability to chat."
+msgid ""
+"You are not currently signed on with any protocols that have the ability to "
+"chat."
msgstr "Du er ikke pålogget med noen protokoller som støtter samtalegrupper."
-msgid "Please enter an alias, and the appropriate information about the chat you would like to add to your buddy list.\n"
+msgid ""
+"Please enter an alias, and the appropriate information about the chat you "
+"would like to add to your buddy list.\n"
msgstr "Skriv inn et aliasnavn og annen informasjon for samtalegruppen.\n"
msgid "A_lias:"
@@ -9960,17 +10814,24 @@ msgid "Unknown command."
msgstr "Ukjent kommando."
msgid "That buddy is not on the same protocol as this chat."
-msgstr "Denne kontakten er ikke på den samme protokollen som denne samtalegruppa."
+msgstr ""
+"Denne kontakten er ikke på den samme protokollen som denne samtalegruppa."
-msgid "You are not currently signed on with an account that can invite that buddy."
-msgstr "Du er ikke pålogget pålogget med en konto som kan invitere denne kontakten."
+msgid ""
+"You are not currently signed on with an account that can invite that buddy."
+msgstr ""
+"Du er ikke pålogget pålogget med en konto som kan invitere denne kontakten."
msgid "Invite Buddy Into Chat Room"
msgstr "Inviter kontakten inn i samtalerom"
#. Put our happy label in it.
-msgid "Please enter the name of the user you wish to invite, along with an optional invite message."
-msgstr "Skriv inn navnet på brukeren som du vil invitere, og en eventuell invitasjonsbeskjed."
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Skriv inn navnet på brukeren som du vil invitere, og en eventuell "
+"invitasjonsbeskjed."
msgid "_Buddy:"
msgstr "_Kontakt:"
@@ -10235,7 +11096,7 @@ msgid "Last created window"
msgstr "Sist opprettede vindu"
msgid "Separate IM and Chat windows"
-msgstr "Skill direktemeldings- og gruppesamtalevinduer"
+msgstr "Skill lynmeldings- og gruppesamtalevinduer"
msgid "New window"
msgstr "Nytt vindu"
@@ -10445,7 +11306,7 @@ msgid "Kannada"
msgstr "Kannada"
msgid "Kannada Translation team"
-msgstr "Kannada Translation team"
+msgstr "Kannada oversettelseslag"
msgid "Korean"
msgstr "Koreansk"
@@ -10460,7 +11321,10 @@ msgid "Lithuanian"
msgstr "Litauisk"
msgid "Macedonian"
-msgstr "Makedons"
+msgstr "Makedonsk"
+
+msgid "Mongolian"
+msgstr "Mongolsk"
msgid "Bokmål Norwegian"
msgstr "Norsk Bokmål"
@@ -10555,11 +11419,50 @@ 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 modulær grafisk samtaleklient basert på libpurple som kan koble til AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC,SIP/SIMPLE, Novell GroupWise, Lotus Sametime, Bonjour, Zephyr,MySpaceIM, Gadu-Gadu, og QQ samtidig. Den er skravet ved bruk av GTK+.<BR><BR>Du kan modifisere og redistribuere programmet under GPL (versjon 2 eller senere) En kopi av GPL er plassert i COPYING filen distribuert med %s. %s er kopibeskyttet av utgiverne. Se COPYRIGHT filen for en komplett liste av utgivere. Vi gir ingen garanti for dette programmet.<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 modulær grafisk samtaleklient basert på libpurple som kan koble til "
+"AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC,SIP/SIMPLE, Novell GroupWise, Lotus "
+"Sametime, Bonjour, Zephyr,MySpaceIM, Gadu-Gadu, og QQ samtidig. Den er "
+"skravet ved bruk av GTK+.<BR><BR>Du kan modifisere og redistribuere "
+"programmet under GPL (versjon 2 eller senere) En kopi av GPL er plassert i "
+"COPYING filen distribuert med %s. %s er kopibeskyttet av utgiverne. Se "
+"COPYRIGHT filen for en komplett liste av utgivere. Vi gir ingen garanti for "
+"dette programmet.<BR><BR>"
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
-msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin på 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 ""
+"<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\">Hjelp per 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>"
+msgstr "<FONT SIZE=\"4\">IRC-kanal:</FONT> #pidgin på 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 "Tidligere utviklere"
@@ -10591,8 +11494,12 @@ msgstr "_Konto"
msgid "Get User Info"
msgstr "Hent brukerinfo"
-msgid "Please enter the username or alias of the person whose info you would like to view."
-msgstr "Skriv inn brukernavnet eller aliaset til den personen du vil se informasjon om."
+msgid ""
+"Please enter the username or alias of the person whose info you would like "
+"to view."
+msgstr ""
+"Skriv inn brukernavnet eller aliaset til den personen du vil se informasjon "
+"om."
msgid "View User Log"
msgstr "Se på brukerlogg"
@@ -10617,10 +11524,18 @@ msgid "Enter an alias for this chat."
msgstr "Skriv inn aliasnavn for denne samtalegruppa."
#, c-format
-msgid "You are about to remove the contact containing %s and %d other buddy from your buddy list. Do you want to continue?"
-msgid_plural "You are about to remove the contact containing %s and %d other buddies from your buddy list. Do you want to continue?"
-msgstr[0] "Du er i ferd med å fjerne kontakten som inneholder %s og %d annen kontakt fra kontaktlista di. Ønsker du å fortsette?"
-msgstr[1] "Du er i ferd med å fjerne kontakten som inneholder %s og %d andre kontakter fra kontaktlista di. Ønsker du å fortsette?"
+msgid ""
+"You are about to remove the contact containing %s and %d other buddy from "
+"your buddy list. Do you want to continue?"
+msgid_plural ""
+"You are about to remove the contact containing %s and %d other buddies from "
+"your buddy list. Do you want to continue?"
+msgstr[0] ""
+"Du er i ferd med å fjerne kontakten som inneholder %s og %d annen kontakt "
+"fra kontaktlista di. Ønsker du å fortsette?"
+msgstr[1] ""
+"Du er i ferd med å fjerne kontakten som inneholder %s og %d andre kontakter "
+"fra kontaktlista di. Ønsker du å fortsette?"
msgid "Remove Contact"
msgstr "Fjern kontakt"
@@ -10629,8 +11544,12 @@ 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?"
-msgstr "Du er i ferd med å slå gruppa med navnet %s sammen med gruppa %s. Øsnker du å fortsette?"
+msgid ""
+"You are about to merge the group called %s into the group called %s. Do you "
+"want to continue?"
+msgstr ""
+"Du er i ferd med å slå gruppa med navnet %s sammen med gruppa %s. Øsnker du "
+"å fortsette?"
msgid "Merge Groups"
msgstr "Slå sammen grupper"
@@ -10639,8 +11558,12 @@ msgid "_Merge Groups"
msgstr "_Slå sammen grupper"
#, c-format
-msgid "You are about to remove the group %s and all its members from your buddy list. Do you want to continue?"
-msgstr "Er du sikker på at du vil fjerne gruppen %s med alle medlemmer fra kontaktlisten din?"
+msgid ""
+"You are about to remove the group %s and all its members from your buddy "
+"list. Do you want to continue?"
+msgstr ""
+"Er du sikker på at du vil fjerne gruppen %s med alle medlemmer fra "
+"kontaktlisten din?"
msgid "Remove Group"
msgstr "Fjern gruppe"
@@ -10649,7 +11572,8 @@ 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 "Er du sikker på at du vil fjerne %s fra kontaktlisten din?"
msgid "Remove Buddy"
@@ -10659,8 +11583,11 @@ msgid "_Remove Buddy"
msgstr "_Fjern kontakt"
#, c-format
-msgid "You are about to remove the chat %s from your buddy list. Do you want to continue?"
-msgstr "Er du sikker på at du vil fjerne samtalegruppen %s fra kontaktlisten din?"
+msgid ""
+"You are about to remove the chat %s from your buddy list. Do you want to "
+"continue?"
+msgstr ""
+"Er du sikker på at du vil fjerne samtalegruppen %s fra kontaktlisten din?"
msgid "Remove Chat"
msgstr "Fjern samtalegruppe"
@@ -10810,7 +11737,8 @@ msgid "\"Attention\" Name Color"
msgstr "Farge for navn på «oppmerksomhet» "
msgid "Color to draw the name of a message you received containing your name."
-msgstr "Farge for å tegne navnet på en beskjed du mottok som innholdt navnet ditt."
+msgstr ""
+"Farge for å tegne navnet på en beskjed du mottok som innholdt navnet ditt."
msgid "Action Message Name Color"
msgstr "Farge for navn på handlingsbeskjed"
@@ -10889,9 +11817,11 @@ msgstr ""
msgid "Save Image"
msgstr "Lagre bilde"
+#, c-format
msgid "_Save Image..."
msgstr "_Lagre bilde..."
+#, c-format
msgid "_Add Custom Smiley..."
msgstr "_Legg til tilpassede smilefjes"
@@ -10910,11 +11840,17 @@ msgstr "_URL"
msgid "_Description"
msgstr "_Beskrivelse"
-msgid "Please enter the URL and description of the link that you want to insert. The description is optional."
-msgstr "Skriv inn URL og beskrivelse av lenka du vil sette inn. Beskrivelsesfeltet er valgfritt."
+msgid ""
+"Please enter the URL and description of the link that you want to insert. "
+"The description is optional."
+msgstr ""
+"Skriv inn URL og beskrivelse av lenka du vil sette inn. Beskrivelsesfeltet "
+"er valgfritt."
msgid "Please enter the URL of the link that you want to insert."
-msgstr "Skriv inn URL og beskrivelse av lenka du vil sette inn. Beskrivelsesfeltet er valgfritt."
+msgstr ""
+"Skriv inn URL og beskrivelse av lenka du vil sette inn. Beskrivelsesfeltet "
+"er valgfritt."
msgid "Insert Link"
msgstr "Sett inn lenke"
@@ -10934,7 +11870,8 @@ msgid ""
"This smiley is disabled because a custom smiley exists for this shortcut:\n"
" %s"
msgstr ""
-"Smilefjeset er deaktivert fordi et tilpasset smilefjes eksisterer for denne snarveien:\n"
+"Smilefjeset er deaktivert fordi et tilpasset smilefjes eksisterer for denne "
+"snarveien:\n"
"%s"
msgid "Smile!"
@@ -10986,7 +11923,7 @@ msgid "Reset Formatting"
msgstr "Nullstill formatering"
msgid "Insert IM Image"
-msgstr "Sett inn direktemeldingsbilde"
+msgstr "Sett inn lynmeldingsbilde"
msgid "Insert Smiley"
msgstr "Sett inn smilefjes"
@@ -11043,16 +11980,27 @@ msgid "Check permissions and try again."
msgstr "Undersøk rettigheter og prøv igjen."
#, c-format
-msgid "Are you sure you want to permanently delete the log of the conversation with %s which started at %s?"
-msgstr "Er du sikker på at du vil fjerne loggen permanent fra samtalen med %s som startet på %s?"
+msgid ""
+"Are you sure you want to permanently delete the log of the conversation with "
+"%s which started at %s?"
+msgstr ""
+"Er du sikker på at du vil fjerne loggen permanent fra samtalen med %s som "
+"startet på %s?"
#, c-format
-msgid "Are you sure you want to permanently delete the log of the conversation in %s which started at %s?"
-msgstr "Er du sikker på at du vil fjerne loggen permanent fra samtalen med %s som startet på %s?"
+msgid ""
+"Are you sure you want to permanently delete the log of the conversation in %"
+"s which started at %s?"
+msgstr ""
+"Er du sikker på at du vil fjerne loggen permanent fra samtalen med %s som "
+"startet på %s?"
#, c-format
-msgid "Are you sure you want to permanently delete the system log which started at %s?"
-msgstr "Er du sikker på at du for alltid vil slette systemloggen som starte på %s?"
+msgid ""
+"Are you sure you want to permanently delete the system log which started at %"
+"s?"
+msgstr ""
+"Er du sikker på at du for alltid vil slette systemloggen som starte på %s?"
msgid "Delete Log?"
msgstr "Slette logg?"
@@ -11101,7 +12049,8 @@ msgstr ""
" -m, --multiple Ikke garantere en enkelt instans\n"
" -n, --nologin Ikke logg inn automatisk\n"
" -l, --login[=NAVN] Logg inn automatisk (Valgfritt argument NAVN \n"
-" angir hvilke kontoer som skal brukes med komma som skilletegn.\n"
+" angir hvilke kontoer som skal brukes med komma som "
+"skilletegn.\n"
" Uten dette brukes kun den første kontoen.)\n"
" --display=DISPLAY X display for bruk\n"
" -v, --version Vis den nårværende versjon og avslutt\n"
@@ -11130,7 +12079,8 @@ msgstr ""
" -m, --multiple Ikke garantere en enkelt instans\n"
" -n, --nologin Ikke logg inn automatisk\n"
" -l, --login[=NAVN] Logg inn automatisk (Valgfritt argument NAVN \n"
-" angir hvilke kontoer som skal brukes med komma som skilletegn.\n"
+" angir hvilke kontoer som skal brukes med komma som "
+"skilletegn.\n"
" Uten dette brukes kun den første kontoen.)\n"
" -v, --version Vis den nårværende versjon og avslutt\n"
@@ -11167,6 +12117,10 @@ msgstr ""
msgid "Pidgin"
msgstr "Pidgin"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr "Avslutter fordi en annen libpurple-klient allerede kjører.\n"
+
msgid "Open All Messages"
msgstr "Åpne alle beskjeder"
@@ -11196,8 +12150,11 @@ msgstr "Klarte ikke åpne URL"
msgid "Error launching \"%s\": %s"
msgstr "Feil under starting av «%s</b>:%s"
-msgid "The 'Manual' browser command has been chosen, but no command has been set."
-msgstr "Klarte ikke å starte en nettleser fordi 'Manuell' nettleserkommando er valgt, men ingen kommando for denne har blitt satt."
+msgid ""
+"The 'Manual' browser command has been chosen, but no command has been set."
+msgstr ""
+"Klarte ikke å starte en nettleser fordi 'Manuell' nettleserkommando er "
+"valgt, men ingen kommando for denne har blitt satt."
msgid "The following plugins will be unloaded."
msgstr "Følgende tillegg kunne ikke losses."
@@ -11211,7 +12168,9 @@ msgstr "Losse Tillegg"
msgid "Could not unload plugin"
msgstr "Klarte ikke fjerne tillegget"
-msgid "The plugin could not be unloaded now, but will be disabled at the next startup."
+msgid ""
+"The plugin could not be unloaded now, but will be disabled at the next "
+"startup."
msgstr "Tillegget kan ikke fjernes nå, men blir deaktivert ved neste oppstart."
#, c-format
@@ -11281,7 +12240,7 @@ msgid "Sends a _message"
msgstr "Sender en _beskjed"
msgid "Ope_n an IM window"
-msgstr "Åpn_e vindu for direktemelding"
+msgstr "Åpn_e vindu for lynmelding"
msgid "_Pop up a notification"
msgstr "_Varslingsvindu spretter opp"
@@ -11319,8 +12278,12 @@ msgstr "Smiley tema feilet å pakke ut."
msgid "Install Theme"
msgstr "Installer tema"
-msgid "Select a smiley theme that you would like to use from the list below. New themes can be installed by dragging and dropping them onto the theme list."
-msgstr "Velg smilefjes-temaet du vil bruke fra listen nedenfor. Nye temaer kan installeres ved å dra og slippe dem over temalisten."
+msgid ""
+"Select a smiley theme that you would like to use from the list below. New "
+"themes can be installed by dragging and dropping them onto the theme list."
+msgstr ""
+"Velg smilefjes-temaet du vil bruke fra listen nedenfor. Nye temaer kan "
+"installeres ved å dra og slippe dem over temalisten."
msgid "Icon"
msgstr "Ikon"
@@ -11344,7 +12307,7 @@ msgid "Conversation Window Hiding"
msgstr "Skjuling av samtalevindu"
msgid "_Hide new IM conversations:"
-msgstr "_Gjem nye direktemeldingssamtaler:"
+msgstr "_Gjem nye lynmeldingssamtaler:"
msgid "When away"
msgstr "Når fraværende"
@@ -11354,7 +12317,7 @@ msgid "Tabs"
msgstr "Faner"
msgid "Show IMs and chats in _tabbed windows"
-msgstr "Vis direktemeldinger og samtalegrupper i _faner"
+msgstr "Vis lynmeldinger og samtalegrupper i _faner"
msgid "Show close b_utton on tabs"
msgstr "Vis _lukkeknapp på faner"
@@ -11387,7 +12350,7 @@ msgid "Show _formatting on incoming messages"
msgstr "Vis _formateringsverktøy på innkommende beskjeder"
msgid "Close IMs immediately when the tab is closed"
-msgstr "Lukk direktemeldinger straks når fanen er lukket"
+msgstr "Lukk lynmeldinger straks når fanen er lukket"
msgid "Show _detailed information"
msgstr "Vis _detaljert informasjon"
@@ -11405,7 +12368,7 @@ msgid "Use smooth-scrolling"
msgstr "Bruk behagelig scrolling"
msgid "F_lash window when IMs are received"
-msgstr "B_link vinduet når nye direktemeldinger mottas"
+msgstr "B_link vinduet når nye lynmeldinger mottas"
msgid "Minimi_ze new conversation windows"
msgstr "Mini_mer nye samtalevinduer"
@@ -11428,8 +12391,12 @@ msgstr "Samtle _font:"
msgid "Default Formatting"
msgstr "Standardformatering"
-msgid "This is how your outgoing message text will appear when you use protocols that support formatting."
-msgstr "Slik vil dine utgående meldinger se ut når du bruker protokoller som støtter formatering."
+msgid ""
+"This is how your outgoing message text will appear when you use protocols "
+"that support formatting."
+msgstr ""
+"Slik vil dine utgående meldinger se ut når du bruker protokoller som støtter "
+"formatering."
msgid "Cannot start proxy configuration program."
msgstr "Klarte ikke starte innstillingsprogrammet for mellomlageret."
@@ -11492,6 +12459,10 @@ msgstr "Proxytjener"
msgid "No proxy"
msgstr "Ingen proxy"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr "Bruk fjern DNS med SOCKS4-mellomtenarar"
+
msgid "_User:"
msgstr "_Bruker:"
@@ -11572,21 +12543,27 @@ msgstr "Logg alle _status endinger til systemlogg"
msgid "Sound Selection"
msgstr "Lydvalg"
+#, c-format
msgid "Quietest"
msgstr "Stillest"
+#, c-format
msgid "Quieter"
msgstr "Stillere"
+#, c-format
msgid "Quiet"
msgstr "Stille"
+#, c-format
msgid "Loud"
msgstr "Høy"
+#, c-format
msgid "Louder"
msgstr "Høyere"
+#, c-format
msgid "Loudest"
msgstr "Høyest"
@@ -11690,14 +12667,14 @@ msgstr "Blokker alle brukere"
msgid "Block only the users below"
msgstr "Blokker kun brukerne vist nedenfor"
-msgid "Privacy"
+msgid "Personvern"
msgstr "Sikkerhet"
msgid "Changes to privacy settings take effect immediately."
msgstr "Endringer i sikkerhetsinnstillingene skjer umiddelbart."
msgid "Set privacy for:"
-msgstr "Sett sikkerhet for:"
+msgstr "Sett personvern for:"
#. Remove All button
msgid "Remove Al_l"
@@ -11809,8 +12786,12 @@ msgstr "Oppgi en snarvei som skal forbindes med smilefjeset."
msgid "Duplicate Shortcut"
msgstr "Duplikat snarvei"
-msgid "A custom smiley for the selected shortcut already exists. Please specify a different shortcut."
-msgstr "Et tilpasset smilefjes finnes allerede for den valgte snarveien. Oppgi en annen snarvei."
+msgid ""
+"A custom smiley for the selected shortcut already exists. Please specify a "
+"different shortcut."
+msgstr ""
+"Et tilpasset smilefjes finnes allerede for den valgte snarveien. Oppgi en "
+"annen snarvei."
msgid "Please select an image for the smiley."
msgstr "Velg et bilde for smilefjeset."
@@ -11867,14 +12848,20 @@ 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."
+msgid ""
+"%s cannot transfer a folder. You will need to send the files within "
+"individually."
msgstr "%s kan ikke overføre en mappe. Du må sende filene inni hver for seg."
msgid "You have dragged an image"
msgstr "Du har dratt et bilde"
-msgid "You can send this image as a file transfer, embed it into this message, or use it as the buddy icon for this user."
-msgstr "Du kan sende dette bildet som filoverføring, sett det inn i denne bekjeden eller bruk det som kontaktikon for denne brukeren."
+msgid ""
+"You can send this image as a file transfer, embed it into this message, or "
+"use it as the buddy icon for this user."
+msgstr ""
+"Du kan sende dette bildet som filoverføring, sett det inn i denne bekjeden "
+"eller bruk det som kontaktikon for denne brukeren."
msgid "Set as buddy icon"
msgstr "Sett som kontaktikon"
@@ -11888,11 +12875,19 @@ msgstr "Sett inn i beskjed"
msgid "Would you like to set it as the buddy icon for this user?"
msgstr "Vil du sette dette som kontaktikon for denne brukeren?"
-msgid "You can send this image as a file transfer, or use it as the buddy icon for this user."
-msgstr "Du kan sende dette bildet som filoverføring, sett det inn i denne bekjeden eller bruk det som kontaktikon for denne brukeren."
+msgid ""
+"You can send this image as a file transfer, or use it as the buddy icon for "
+"this user."
+msgstr ""
+"Du kan sende dette bildet som filoverføring, sett det inn i denne bekjeden "
+"eller bruk det som kontaktikon for denne brukeren."
-msgid "You can insert this image into this message, or use it as the buddy icon for this user"
-msgstr "Du kan sette inn dette bildet i beskjed eller bruke det som kontaktikon for denne brukeren"
+msgid ""
+"You can insert this image into this message, or use it as the buddy icon for "
+"this user"
+msgstr ""
+"Du kan sette inn dette bildet i beskjed eller bruke det som kontaktikon for "
+"denne brukeren"
#. I don't know if we really want to do anything here. Most of the desktop item types are crap like
#. * "MIME Type" (I have no clue how that would be a desktop item) and "Comment"... nothing we can really
@@ -11902,8 +12897,12 @@ msgstr "Du kan sette inn dette bildet i beskjed eller bruke det som kontaktikon
msgid "Cannot send launcher"
msgstr "Klarte ikke sende lasteren"
-msgid "You dragged a desktop launcher. Most likely you wanted to send whatever this launcher points to instead of this launcher itself."
-msgstr "Du dro en skrivebordstarter. Sannsynligvis ville du sende det som starteren peker til og ikke selve starteren."
+msgid ""
+"You dragged a desktop launcher. Most likely you wanted to send whatever this "
+"launcher points to instead of this launcher itself."
+msgstr ""
+"Du dro en skrivebordstarter. Sannsynligvis ville du sende det som starteren "
+"peker til og ikke selve starteren."
#, c-format
msgid ""
@@ -11930,8 +12929,10 @@ msgid "Failed to open file '%s': %s"
msgstr "Klarte ikke å åpne fil '%s': %s"
#, c-format
-msgid "Failed to load image '%s': reason not known, probably a corrupt image file"
-msgstr "Feilet å laste bilde '%s': grunn ukjent, sannsynligvis en korrupt bilde fil"
+msgid ""
+"Failed to load image '%s': reason not known, probably a corrupt image file"
+msgstr ""
+"Feilet å laste bilde '%s': grunn ukjent, sannsynligvis en korrupt bilde fil"
msgid "Save File"
msgstr "Lagre fil"
@@ -12042,8 +13043,12 @@ msgstr "Kontakt er avlogget"
msgid "Point values to use when..."
msgstr "Verdier for bruk når..."
-msgid "The buddy with the <i>largest score</i> is the buddy who will have priority in the contact.\n"
-msgstr "Kontakten med den <i>største score</i> er kontakten som vil ha 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 ""
+"Kontakten med den <i>største score</i> er kontakten som vil ha prioritet i "
+"kontakten.\n"
msgid "Use last buddy when scores are equal"
msgstr "Bruk den siste kontakten når resultatene er lik"
@@ -12063,12 +13068,18 @@ msgstr "Kontaktprioritet"
#. *< name
#. *< version
#. *< summary
-msgid "Allows for controlling the values associated with different buddy states."
-msgstr "Lar deg kontrollere verdiene for de ulike tilstandene kontakter kan være i."
+msgid ""
+"Allows for controlling the values associated with different buddy states."
+msgstr ""
+"Lar deg kontrollere verdiene for de ulike tilstandene kontakter kan være i."
#. *< description
-msgid "Allows for changing the point values of idle/away/offline states for buddies in contact priority computations."
-msgstr "Lar deg endre vektingen for inaktiv/borte/avlogget for kontakter i kontaktprioritetsutregninger."
+msgid ""
+"Allows for changing the point values of idle/away/offline states for buddies "
+"in contact priority computations."
+msgstr ""
+"Lar deg endre vektingen for inaktiv/borte/avlogget for kontakter i "
+"kontaktprioritetsutregninger."
msgid "Conversation Colors"
msgstr "Samtalefarger"
@@ -12102,7 +13113,7 @@ msgid "Apply in Chats"
msgstr "Legg til i Samtaler"
msgid "Apply in IMs"
-msgstr "Legg til i Direktemeldinger"
+msgstr "Legg til i Lynmeldinger"
msgid "By conversation count"
msgstr "Etter samtaleantall"
@@ -12111,14 +13122,20 @@ msgid "Conversation Placement"
msgstr "Samtaleplassering"
#. Translators: "New conversations" should match the text in the preferences dialog and "By conversation count" should be the same text used above
-msgid "Note: The preference for \"New conversations\" must be set to \"By conversation count\"."
-msgstr "NB: Preferansene for \"Nye samtaler\" må være satt til \"By conversation count\"."
+msgid ""
+"Note: The preference for \"New conversations\" must be set to \"By "
+"conversation count\"."
+msgstr ""
+"NB: Preferansene for \"Nye samtaler\" må være satt til \"By conversation "
+"count\"."
msgid "Number of conversations per window"
msgstr "Antall samtaler per vindu"
msgid "Separate IM and Chat windows when placing by number"
-msgstr "Separere direktemeldings- og chattevinduer når programet plasserer etter nummer"
+msgstr ""
+"Separere lynmeldings- og chattevinduer når programet plasserer etter "
+"nummer"
#. *< type
#. *< ui_requirement
@@ -12136,8 +13153,12 @@ msgstr "Flere plasseringsmuligheter for samtaler."
#. *< summary
#. * description
-msgid "Restrict the number of conversations per windows, optionally separating IMs and Chats"
-msgstr "Begrens det maksimale antallet samtaler per vindu, og eventuelt separering av direktemeldinger og chat"
+msgid ""
+"Restrict the number of conversations per windows, optionally separating IMs "
+"and Chats"
+msgstr ""
+"Begrens det maksimale antallet samtaler per vindu, og eventuelt separering "
+"av lynmeldinger og chat"
#. Configuration frame
msgid "Mouse Gestures Configuration"
@@ -12170,22 +13191,26 @@ msgstr "Lar deg bruke musbevegelser"
#. * description
msgid ""
-"Allows support for mouse gestures in conversation windows. Drag the middle mouse button to perform certain actions:\n"
+"Allows support for mouse gestures in conversation windows. Drag the middle "
+"mouse button to perform certain actions:\n"
" • Drag down and then to the right to close a conversation.\n"
" • Drag up and then to the left to switch to the previous conversation.\n"
" • Drag up and then to the right to switch to the next conversation."
msgstr ""
-"Gir støtte til musebevegelser i samtalevinduer. Dra midtknappen på musa for å utføre enkelte handlinger:\n"
+"Gir støtte til musebevegelser i samtalevinduer. Dra midtknappen på musa for "
+"å utføre enkelte handlinger:\n"
" • dra ned og til høyre: lar deg lukke en samtale.\n"
" • dra opp og til venstre: bytter til forrige samtale.\n"
" • dra opp og til høyre: bytter til neste samtale."
msgid "Instant Messaging"
-msgstr "Direktemeldinger"
+msgstr "Lynmeldinger"
#. Add the label.
msgid "Select a person from your address book below, or add a new person."
-msgstr "Velg en person fra adresseboken som er vist under, eller legg til en ny person."
+msgstr ""
+"Velg en person fra adresseboken som er vist under, eller legg til en ny "
+"person."
msgid "Group:"
msgstr "Gruppe:"
@@ -12199,8 +13224,12 @@ msgid "Select Buddy"
msgstr "Velg kontakt"
#. Add the label.
-msgid "Select a person from your address book to add this buddy to, or create a new person."
-msgstr "Velg en person fra adresseboka for å legge til denne kontakten, eller lag en ny kontakt."
+msgid ""
+"Select a person from your address book to add this buddy to, or create a new "
+"person."
+msgstr ""
+"Velg en person fra adresseboka for å legge til denne kontakten, eller lag en "
+"ny kontakt."
#. Add the expander
msgid "User _details"
@@ -12223,7 +13252,7 @@ msgid "Add to Address Book"
msgstr "Legg til i adresseboka"
msgid "Send Email"
-msgstr "Send E-post"
+msgstr "Send e-post"
#. Configuration frame
msgid "Evolution Integration Configuration"
@@ -12322,7 +13351,8 @@ msgid "Checks for new local mail."
msgstr "Sjekker for ny lokal e-post."
msgid "Adds a small box to the buddy list that shows if you have new mail."
-msgstr "Legger til en liten boks i kontaktlista som viser om du har fått e-post."
+msgstr ""
+"Legger til en liten boks i kontaktlista som viser om du har fått e-post."
msgid "Markerline"
msgstr "Markeringslinje"
@@ -12337,14 +13367,18 @@ msgid "Draw Markerline in "
msgstr "Tegn Understrek i "
msgid "_IM windows"
-msgstr "Vinduer for direktemeldinger"
+msgstr "Vinduer for lynmeldinger"
#
msgid "C_hat windows"
msgstr "_Samtalevinduer"
-msgid "A music messaging session has been requested. Please click the MM icon to accept."
-msgstr "En musikk samtale økt har blitt forespurt. Vennligst klikk på MM ikonet for å akseptere."
+msgid ""
+"A music messaging session has been requested. Please click the MM icon to "
+"accept."
+msgstr ""
+"En musikk samtale økt har blitt forespurt. Vennligst klikk på MM ikonet for "
+"å akseptere."
msgid "Music messaging session confirmed."
msgstr "Musikk samtale økt bekreftet."
@@ -12383,8 +13417,12 @@ msgid "Music Messaging Plugin for collaborative composition."
msgstr "Musikk Samtale Tillegg for samarbeids komposisjon."
#. * summary
-msgid "The Music Messaging Plugin allows a number of users to simultaneously work on a piece of music by editting a common score in real-time."
-msgstr "Musikk Samtale Tillegg tillater flere brukere å arbeide på et stykke musikk samtidig ved å redigere et felles resultat i samtid."
+msgid ""
+"The Music Messaging Plugin allows a number of users to simultaneously work "
+"on a piece of music by editting a common score in real-time."
+msgstr ""
+"Musikk Samtale Tillegg tillater flere brukere å arbeide på et stykke musikk "
+"samtidig ved å redigere et felles resultat i samtid."
#. ---------- "Notify For" ----------
msgid "Notify For"
@@ -12527,6 +13565,7 @@ msgstr "Varslingsdialog"
msgid "Select Color"
msgstr "Velg farge"
+#, c-format
msgid "Select Interface Font"
msgstr "Velg Grensesnitt Font"
@@ -12591,8 +13630,12 @@ msgstr "Direkte"
msgid "Lets you send raw input to text-based protocols."
msgstr "Lar deg sende direktekommandoer til tekstbaserte protokoller."
-msgid "Lets you send raw input to text-based protocols (XMPP, MSN, IRC, TOC). Hit 'Enter' in the entry box to send. Watch the debug window."
-msgstr "Lar deg sende direktekommandoer til tekstbaserte protokoller (XMPP, MSN, IRC, TOC). Trykk «Enter» for å sende og sjekk feilsøkingsvinduet."
+msgid ""
+"Lets you send raw input to text-based protocols (XMPP, MSN, IRC, TOC). Hit "
+"'Enter' in the entry box to send. Watch the debug window."
+msgstr ""
+"Lar deg sende direktekommandoer til tekstbaserte protokoller (XMPP, MSN, "
+"IRC, TOC). Trykk «Enter» for å sende og sjekk feilsøkingsvinduet."
#, c-format
msgid "You can upgrade to %s %s today."
@@ -12623,8 +13666,11 @@ msgid "Checks periodically for new releases."
msgstr "Sjekker periodisk for nye utgaver."
#. * description
-msgid "Checks periodically for new releases and notifies the user with the ChangeLog."
-msgstr "Sjekker periodisk for nye versjoner, og gir endringslista til brukeren."
+msgid ""
+"Checks periodically for new releases and notifies the user with the "
+"ChangeLog."
+msgstr ""
+"Sjekker periodisk for nye versjoner, og gir endringslista til brukeren."
#. *< major version
#. *< minor version
@@ -12643,8 +13689,12 @@ msgid "Conversation Window Send Button."
msgstr "Send-knapp i samtalevindu"
#. *< summary
-msgid "Adds a Send button to the entry area of the conversation window. Intended for when no physical keyboard is present."
-msgstr "Legg til en Send-knapp i samtalevinduet. Tenkt brukt når intet fysisk tastatur er tilgjengelig."
+msgid ""
+"Adds a Send button to the entry area of the conversation window. Intended "
+"for when no physical keyboard is present."
+msgstr ""
+"Legg til en Send-knapp i samtalevinduet. Tenkt brukt når intet fysisk "
+"tastatur er tilgjengelig."
msgid "Duplicate Correction"
msgstr "Dupliserings Korrigering"
@@ -12736,6 +13786,7 @@ msgstr "Vis tidsstempel i iChat-stil hvert Nte minutt."
msgid "Timestamp Format Options"
msgstr "Innstillinger for Tidsstempel Format"
+#, c-format
msgid "_Force 24-hour time format"
msgstr "_Tving 24-timers format"
@@ -12771,24 +13822,28 @@ msgid "Customizes the message timestamp formats."
msgstr "Lager egne tidsstempel formater for beskjeder."
#. * description
-msgid "This plugin allows the user to customize conversation and logging message timestamp formats."
-msgstr "Dette tillegget tillater brukeren å lage egne samtale og loggings tidsstempler."
+msgid ""
+"This plugin allows the user to customize conversation and logging message "
+"timestamp formats."
+msgstr ""
+"Dette tillegget tillater brukeren å lage egne samtale og loggings "
+"tidsstempler."
msgid "Opacity:"
msgstr "Ugjennomsiktighet:"
#. IM Convo trans options
msgid "IM Conversation Windows"
-msgstr "Samtalevinduer for direktemeldinger"
+msgstr "Samtalevinduer for lynmeldinger"
msgid "_IM window transparency"
-msgstr "Gjennomsiktige vinduer for direktemeldinger"
+msgstr "Gjennomsiktige vinduer for lynmeldinger"
msgid "_Show slider bar in IM window"
-msgstr "Vis _glideknapp i direktemeldingsvindu"
+msgstr "Vis _glideknapp i lynmeldingsvindu"
msgid "Remove IM window transparency on focus"
-msgstr "Ta vekk transparens i direktemeldingsvindu ved fokus"
+msgstr "Ta vekk transparens i lynmeldingsvindu ved fokus"
#
msgid "Always on top"
@@ -12821,11 +13876,13 @@ msgstr "Variabel gjennomsiktighet for kontaktlisten 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 programtillegget gir variabel alfa-transparens i samtalevindu og kontaktlisten.\n"
+"Dette programtillegget gir variabel alfa-transparens i samtalevindu og "
+"kontaktlisten.\n"
"\n"
"*Merk: Tillegget krever Windows 2000 eller senere utgaver."
@@ -12851,17 +13908,17 @@ msgstr "_Hold kontaktlistevinduet øverst:"
msgid "Only when docked"
msgstr "Kun når skjult i systemstatusfeltet"
-msgid "_Flash window when chat messages are received"
-msgstr "La vinduet _blinke når det kommer nye beskjeder"
-
msgid "Windows Pidgin Options"
msgstr "Valg for Windows Pidgin"
msgid "Options specific to Pidgin for Windows."
msgstr "Innstillinger som er spesifikke for Pidgin på Windows."
-msgid "Provides options specific to Pidgin for Windows , such as buddy list docking."
-msgstr "Gir spesifikke innstillinger for Pidgin på Windows, slik som skjuling av kontaktliste i systemstatusfeltet."
+msgid ""
+"Provides options specific to Pidgin for Windows , such as buddy list docking."
+msgstr ""
+"Gir spesifikke innstillinger for Pidgin på Windows, slik som skjuling av "
+"kontaktliste i systemstatusfeltet."
msgid "<font color='#777777'>Logged out.</font>"
msgstr "<font color='#777777'>Logget ut.</font>"
@@ -12898,7 +13955,14 @@ msgstr "Send og motta direkte XMPP vers."
#. * description
msgid "This plugin is useful for debbuging XMPP servers or clients."
-msgstr "Dette tillegget er kjekt å ha for debugging av XMPP servere og klienter."
+msgstr ""
+"Dette tillegget er kjekt å ha for debugging av XMPP servere og klienter."
+
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "Klarte ikke hente MSN-adressebok"
+
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "La vinduet _blinke når det kommer nye beskjeder"
#, fuzzy
#~ msgid "Connection to server lost (no data received within %d second)"
@@ -12908,6 +13972,7 @@ msgstr "Dette tillegget er kjekt å ha for debugging av XMPP servere og klienter
#~ "Tilkobling til server mistet (ingen data mottatt iløpet av %d sekunder)"
#~ msgstr[1] ""
#~ "Tilkobling til server mistet (ingen data mottatt iløpet av %d sekunder)"
+
#~ msgid ""
#~ "You may be disconnected shortly. You may want to use TOC until this is "
#~ "fixed. Check %s for updates."
@@ -12922,6 +13987,7 @@ msgstr "Dette tillegget er kjekt å ha for debugging av XMPP servere og klienter
#, fuzzy
#~ msgid "Can not decrypt get server reply"
#~ msgstr "Kan ikke hente tjenerinformasjon"
+
#~ msgid "Keep alive error"
#~ msgstr "Hold i livet feil"
@@ -12936,16 +14002,20 @@ msgstr "Dette tillegget er kjekt å ha for debugging av XMPP servere og klienter
#, fuzzy
#~ msgid "Connecting server ..."
#~ msgstr "Koble til tjener"
+
#~ msgid "Failed to send IM."
-#~ msgstr "Feilet i å sende direktemelding."
+#~ msgstr "Feilet i å sende lynmelding."
+
#~ msgid "User information for %s unavailable"
#~ msgstr "Brukerinformasjon for %s er ikke tilgjengelig"
+
#~ msgid "A group with the name already exists."
#~ msgstr "En gruppe med dette navnet eksisterer allerede."
#, fuzzy
#~ msgid "Primary Information"
#~ msgstr "Profilinformasjon"
+
#~ msgid "Blood Type"
#~ msgstr "Blodtype"
@@ -12956,6 +14026,7 @@ msgstr "Dette tillegget er kjekt å ha for debugging av XMPP servere og klienter
#, fuzzy
#~ msgid "Successed:"
#~ msgstr "Hastighet:"
+
#~ msgid ""
#~ "Setting custom faces is not currently supported. Please choose an image "
#~ "from %s."
@@ -12970,6 +14041,7 @@ msgstr "Dette tillegget er kjekt å ha for debugging av XMPP servere og klienter
#, fuzzy
#~ msgid "You rejected %d's request"
#~ msgstr "Uventet forespørsel"
+
#~ msgid "Reject request"
#~ msgstr "Avslå forespørsel"
@@ -12984,12 +14056,14 @@ msgstr "Dette tillegget er kjekt å ha for debugging av XMPP servere og klienter
#, fuzzy
#~ msgid "QQ Number Error"
#~ msgstr "QQ Nummer"
+
#~ msgid "Group Description"
#~ msgstr "Gruppebeskrivelse"
#, fuzzy
#~ msgid "Auth"
#~ msgstr "Godkjenn"
+
#~ msgid "Approve"
#~ msgstr "Godkjenn"
@@ -13005,20 +14079,24 @@ msgstr "Dette tillegget er kjekt å ha for debugging av XMPP servere og klienter
#, fuzzy
#~ msgid "[%d] added to Qun \"%d\""
#~ msgstr "Du [%d] har blitt lagt til i gruppen \"%d\""
+
#~ msgid "I am a member"
#~ msgstr "Jeg er en medlem"
#, fuzzy
#~ msgid "I am requesting"
#~ msgstr "Ugyldig forespørsel"
+
#~ msgid "I am the admin"
#~ msgstr "Jeg er admin"
+
#~ msgid "Unknown status"
#~ msgstr "Ukjent status"
#, fuzzy
#~ msgid "Remove from Qun"
#~ msgstr "Fjern gruppe"
+
#~ msgid "You entered a group ID outside the acceptable range"
#~ msgstr "Du tastet inn en gruppe ID utenfor den aksepterte rekkevidden"
@@ -13059,6 +14137,7 @@ msgstr "Dette tillegget er kjekt å ha for debugging av XMPP servere og klienter
#, fuzzy
#~ msgid "Leave the QQ Qun"
#~ msgstr "Forlat denne QQ Qun"
+
#~ msgid "Block this buddy"
#~ msgstr "Blokker denne kontakten"
@@ -13091,6 +14170,7 @@ msgstr "Dette tillegget er kjekt å ha for debugging av XMPP servere og klienter
#, fuzzy
#~ msgid "QQ Budy"
#~ msgstr "Legg til kontakt"
+
#~ msgid "%s wants to add you [%s] as a friend"
#~ msgstr "%s ønsker å legge deg [%s] som en venn"
@@ -13109,32 +14189,42 @@ msgstr "Dette tillegget er kjekt å ha for debugging av XMPP servere og klienter
#, fuzzy
#~ msgid "Network disconnected"
#~ msgstr "Frakoblet"
+
#~ msgid "developer"
#~ msgstr "utvikler"
+
#~ msgid "XMPP developer"
#~ msgstr "XMPP-utvikler"
+
#~ msgid "Artists"
#~ msgstr "Artister"
+
#~ msgid ""
#~ "You are using %s version %s. The current version is %s. You can get it "
#~ "from <a href=\"%s\">%s</a><hr>"
#~ msgstr ""
#~ "Du bruker %s versjon %s. Den nåværende versjonen er %s. Du kan hente den "
#~ "fra <a href=\"%s\">%s</a><hr>"
+
#~ msgid "<b>ChangeLog:</b><br>%s"
#~ msgstr "<b>Endringslogg:</b><br>%s"
+
#~ msgid "Screen name:"
#~ msgstr "Skjermnavn:"
+
#~ msgid "Pounce only when my status is not available"
#~ msgstr "Pounce kun når min status er ikke tilgjengelig"
+
#~ msgid "Someone says your screen name in chat"
#~ msgstr "Noen roper skjermnavnet ditt i en samtale"
+
#~ msgid "EOF while reading from resolver process"
#~ msgstr "Feil under lesing fra socket"
#, fuzzy
#~ msgid "Error setting socket options"
#~ msgstr "Feil: kunne ikke koble til"
+
#~ msgid ""
#~ "This server requires plaintext authentication over an unencrypted "
#~ "connection. Allow this and continue authentication?"
@@ -13153,10 +14243,12 @@ msgstr "Dette tillegget er kjekt å ha for debugging av XMPP servere og klienter
#, fuzzy
#~ msgid "Windows Live ID authentication Failed"
#~ msgstr "Autentisering feilet"
+
#~ msgid ""
#~ "Sorry, passwords over %d characters in length (yours is %d) are not "
#~ "supported by MySpace."
#~ msgstr "Sorry, passord over %d tegn (du har %d) er ikke støttet av MySpace."
+
#~ msgid ""
#~ "Please go to http://editprofile.myspace.com/index.cfm?fuseaction=profile."
#~ "username and choose a username and try to login again."
@@ -13164,73 +14256,99 @@ msgstr "Dette tillegget er kjekt å ha for debugging av XMPP servere og klienter
#~ "Vennligst gå til http://editprofile.myspace.com/index.cfm?"
#~ "fuseaction=profile.username og velg et brukernavn og prøv å logge inn "
#~ "igjen."
+
#~ msgid "Too evil (sender)"
#~ msgstr "Altfor ond (sender)"
+
#~ msgid "Too evil (receiver)"
#~ msgstr "Altfor ond (mottaker)"
+
#~ msgid "Screen name sent"
#~ msgstr "Skjermnavn sendt"
+
#~ msgid "Invalid screen name."
#~ msgstr "Ugyldig brukernavn."
+
#~ msgid "Available Message"
#~ msgstr "Tilstedebeskjed"
+
#~ msgid "Screen name"
#~ msgstr "Skjermnavn"
+
#~ msgid "Away Message"
#~ msgstr "Fraværsbeskjed"
+
#~ msgid "<i>(retrieving)</i>"
#~ msgstr "<i>(mottar)</i>"
#, fuzzy
#~ msgid "Use recent buddies group"
#~ msgstr "Brukeren er ikke i gruppen"
+
#~ msgid "Show how long you have been idle"
#~ msgstr "Vis hvor lenge du har vært inaktiv"
+
#~ msgid "Your information has been updated"
#~ msgstr "Din informasjon har blitt oppdatert"
+
#~ msgid "Input your reason:"
#~ msgstr "Sett inn din grunn:"
+
#~ msgid "You have successfully removed a buddy"
#~ msgstr "Fjerning av kompis var vellykket"
+
#~ msgid "You have successfully removed yourself from your friend's buddy list"
#~ msgstr "Fjerning av deg selv fra kompisen dins venneliste var vellykket"
+
#~ msgid "You have added %d to buddy list"
#~ msgstr "Legg til brukeren %d i kontaktlisten din"
#, fuzzy
#~ msgid "Invalid QQid"
#~ msgstr "Ugyldig authzid"
+
#~ msgid "Please enter external group ID"
#~ msgstr "Skriv ekstern gruppe ID"
+
#~ msgid "Your request to join group %d has been approved by admin %d"
#~ msgstr ""
#~ "Din forespørsel til å bli med i gruppen %d har blitt godkjent av admin %d"
+
#~ msgid "This group has been added to your buddy list"
#~ msgstr "Denne gruppen har blitt lagt til kontaktlisten din"
+
#~ msgid "I am applying to join"
#~ msgstr "Jeg søker om å bli med"
+
#~ msgid "You have successfully left the group"
#~ msgstr "Du har forlatt gruppen"
+
#~ msgid "QQ Group Auth"
#~ msgstr "QQ Group Auth"
+
#~ msgid "Your authorization request has been accepted by the QQ server"
#~ msgstr "Din autoriserings forespørsel har blitt godtatt av QQ serveren"
+
#~ msgid "Code [0x%02X]: %s"
#~ msgstr "Kode [0x%02X]: %s"
#, fuzzy
#~ msgid "Group Operation Error"
#~ msgstr "Filoperasjonsfeil"
+
#~ msgid "Enter your reason:"
#~ msgstr "Skriv din grunn:"
#, fuzzy
#~ msgid "Error requesting login token"
#~ msgstr "Feil: kunne ikke koble til"
+
#~ msgid "Unable to login, check debug log"
#~ msgstr "Klarte ikke logge inn, sjekk debug logg"
+
#~ msgid "TCP Address"
#~ msgstr "TCP-adresse"
+
#~ msgid "UDP Address"
#~ msgstr "UDP-adresse"
@@ -13241,16 +14359,22 @@ msgstr "Dette tillegget er kjekt å ha for debugging av XMPP servere og klienter
#, fuzzy
#~ msgid "Login failed, no reply"
#~ msgstr "Pålogging feilet (%s)"
+
#~ msgid "User %s rejected your request"
#~ msgstr "Buker %s har avslått din forespørsel"
+
#~ msgid "User %s approved your request"
#~ msgstr "Buker %s har godkjent din forespørsel"
+
#~ msgid "Cannot find/access ~/.silc directory"
#~ msgstr "Kan ikke finne/åpne ~/.silc katalog"
+
#~ msgid "Screen _name:"
#~ msgstr "Skjerm_navn:"
+
#~ msgid "_Merge"
#~ msgstr "_Flette"
+
#~ msgid ""
#~ "Please enter the screen name of the person you would like to add to your "
#~ "buddy list. You may optionally enter an alias, or nickname, for the "
@@ -13261,14 +14385,19 @@ msgstr "Dette tillegget er kjekt å ha for debugging av XMPP servere og klienter
#~ "kontaktlisten din. I tillegg kan du skrive inn et alias, eller kallenavn, "
#~ "for kontakten. Aliaset vil bli vist i stedet for skjermnavnet der det er "
#~ "mulig.\n"
+
#~ msgid "A_ccount:"
#~ msgstr "K_onto:"
+
#~ msgid "_Screen name:"
#~ msgstr "_Skjermnavn:"
+
#~ msgid "User has typed something and stopped"
#~ msgstr "Brukeren har skrevet noe og pauset"
+
#~ msgid "S_mile!"
#~ msgstr "S_mil!"
+
#~ msgid ""
#~ "%s%s<span weight=\"bold\">Written by:</span>\t%s\n"
#~ "<span weight=\"bold\">Website:</span>\t\t%s\n"
@@ -13281,34 +14410,47 @@ msgstr "Dette tillegget er kjekt å ha for debugging av XMPP servere og klienter
#, fuzzy
#~ msgid "Display Statistics"
#~ msgstr "Vis advarsler om tidsavbrudd"
+
#~ msgid ""
#~ "The contact availability plugin (cap) is used to display statistical "
#~ "information about buddies in a users contact list."
#~ msgstr ""
#~ "Forutsigelse av Kontaktens Tilgjengelighet tillegg (cap) er brukt for å "
#~ "vise statistisk informasjon om kontakter i en brukers kontaktliste."
+
#~ msgid "There were errors unloading the plugin."
#~ msgstr "Det oppsto feil i lossing av tillegget."
+
#~ msgid "Couldn't open file"
#~ msgstr "Klarte ikke åpne filen"
+
#~ msgid "Error initializing session"
#~ msgstr "Feil under oppretting av sesjon"
+
#~ msgid "Unable to connect to contact server"
#~ msgstr "Kan ikke koble til tjener"
+
#~ msgid "Unable to connect to OIM server"
#~ msgstr "Kan ikke koble til OIM server"
+
#~ msgid "Unable to make SSL connection to server."
#~ msgstr "Klarte ikke opprette SSL-forbindelse med tjeneren."
+
#~ msgid "Invalid chat name specified."
#~ msgstr "Ugyldig gruppesamtalenavn oppgitt."
+
#~ msgid "%s changed status from %s to %s"
#~ msgstr "%s har endret status fra %s til %s"
+
#~ msgid "%s is now %s"
#~ msgstr "%s er nå %s"
+
#~ msgid "%s is no longer %s"
#~ msgstr "%s er ikke lenger %s"
+
#~ msgid "<span color=\"red\">%s disconnected: %s</span>"
#~ msgstr "<span color=\"red\">%s koblet fra: %s</span>"
+
#~ msgid ""
#~ "%s\n"
#~ "\n"
@@ -13319,10 +14461,13 @@ msgstr "Dette tillegget er kjekt å ha for debugging av XMPP servere og klienter
#~ "\n"
#~ "%s vil ikke prøve og koble til kontoen igjen for du har rettet på feilen "
#~ "og slått på kontoen igjen."
+
#~ msgid "Filter: "
#~ msgstr "Filter: "
+
#~ msgid "The dependent plugin %s failed to unload."
#~ msgstr "Det nødvendige tillegget %s kunne ikke lastes."
+
#~ msgid ""
#~ "The AIM servers were temporarily unable to send your buddy list. Your "
#~ "buddy list is not lost, and will probably become available in a few hours."
@@ -13330,14 +14475,16 @@ msgstr "Dette tillegget er kjekt å ha for debugging av XMPP servere og klienter
#~ "Pidgin klarte ikke å hente kontaktlisten din fra AIM-tjenerne. "
#~ "Kontaktlisten er ikke tapt, og vil sannsynligvis bli tilgjengelig i løpet "
#~ "av få timer."
+
#~ msgid ""
#~ "Always use ICQ proxy server for file transfers\n"
#~ "(slower, but does not reveal your IP address)"
#~ msgstr ""
#~ "Alltid bruk ICQ proxy server for filoverføring\n"
#~ "(saktere, men avslører ikke din IP adresse)"
+
#~ msgid "/Buddies/Show"
#~ msgstr "/Kontakter/Vis"
+
#~ msgid "Autojoin when account becomes online."
#~ msgstr "Autotilknytt når konto er tilkoblet."
-
diff --git a/po/pa.po b/po/pa.po
index d060104f4f..39efb4b4ae 100644
--- a/po/pa.po
+++ b/po/pa.po
@@ -1,22 +1,21 @@
-# translation of pidin.po to Punjabi
+# translation of pa.po to Punjabi
# This file is distributed under the same license as the PACKAGE package.
# Copyright (C) 2007 THE PACKAGE'S COPYRIGHT HOLDER.
#
-# Amanpreet Singh Alam[ਆਲਮ] <aalam@redhat.com>, 2005.
-# A S Alam <apbrar@gmail.com>, 2006, 2007.
-# A S Alam <aalam@users.sf.net>, 2007.
+# A S Alam <aalam@users.sf.net>, 2005,2006, 2007, 2009.
+# Amanpreet Singh Alam <aalam@users.sf.net>, 2009.
msgid ""
msgstr ""
-"Project-Id-Version: pidin\n"
+"Project-Id-Version: pa\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
-"PO-Revision-Date: 2007-11-10 06:25+0530\n"
-"Last-Translator: A S Alam <apbrar@gmail.com>\n"
-"Language-Team: Punjabi <punjabi-l10n@users.sf.net>\n"
+"POT-Creation-Date: 2009-02-22 09:57-0500\n"
+"PO-Revision-Date: 2009-02-26 22:23+0530\n"
+"Last-Translator: Amanpreet Singh Alam <aalam@users.sf.net>\n"
+"Language-Team: Punjabi <punjabi-users@lists.sf.net>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"\n"
"\n"
"X-Generator: KBabel 1.11.4\n"
@@ -36,7 +35,7 @@ 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"
@@ -45,7 +44,7 @@ msgstr ""
"ਵਰਤੋਂ: %s [OPTION]...\n"
"\n"
" -c, --config=DIR use DIR for config files\n"
-" -d, --debug print debugging messages to stdout\n"
+" -d, --debug print debugging messages to stderr\n"
" -h, --help display this help and exit\n"
" -n, --nologin don't automatically login\n"
" -v, --version display the current version and exit\n"
@@ -64,19 +63,17 @@ msgid "Error"
msgstr "ਗਲਤੀ"
msgid "Account was not added"
-msgstr "ਅਕਾਊਂਟ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ"
+msgstr "ਅਕਾਊਂਟ ਸ਼ਾਮਲ ਨਹੀਂ ਕੀਤਾ ਗਿਆ"
-#, fuzzy
msgid "Username of an account must be non-empty."
-msgstr "ਇੱਕ ਅਕਾਊਂਟ ਦਾ ਸਕਰੀਨ ਨਾਂ ਖਾਲੀ ਨਹੀਂ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।"
+msgstr "ਇੱਕ ਅਕਾਊਂਟ ਦਾ ਯੂਜ਼ਰ ਨਾਂ ਖਾਲੀ ਨਹੀਂ ਹੋਣਾ ਚਾਹੀਦਾ"
msgid "New mail notifications"
-msgstr "ਨਵੀਂ ਚਿੱਠੀ ਸੂਚਨਾ"
+msgstr "ਨਵੀਂ ਮੇਲ ਨੋਟੀਫਿਕੇਸ਼ਨ"
msgid "Remember password"
msgstr "ਪਾਸਵਰਡ ਯਾਦ ਰੱਖੋ"
-#, fuzzy
msgid "There are no protocol plugins installed."
msgstr "ਕੋਈ ਪਰੋਟੋਕਾਲ ਪਲੱਗਇਨ ਇੰਸਟਾਲ ਨਹੀਂ ਹੈ।"
@@ -92,9 +89,8 @@ msgstr "ਨਵਾਂ ਅਕਾਊਂਟ"
msgid "Protocol:"
msgstr "ਪ੍ਰੋਟੋਕਾਲ:"
-#, fuzzy
msgid "Username:"
-msgstr "ਯੂਜ਼ਰ ਨਾਂ(_U):"
+msgstr "ਯੂਜ਼ਰ ਨਾਂ:"
msgid "Password:"
msgstr "ਪਾਸਵਰਡ:"
@@ -103,7 +99,6 @@ msgid "Alias:"
msgstr "ਏਲੀਆਸ:"
#. Register checkbox
-#, fuzzy
msgid "Create this account on the server"
msgstr "ਸਰਵਰ ਉੱਤੇ ਇਹ ਨਵਾਂ ਅਕਾਊਂਟ ਬਣਾਓ"
@@ -185,9 +180,8 @@ msgstr ""
msgid "Default"
msgstr "ਡਿਫਾਲਟ"
-#, fuzzy
msgid "You must provide a username for the buddy."
-msgstr "ਤੁਹਾਨੂੰ ਬੱਡੀ ਲਈ ਇੱਕ ਸਕਰੀਨ ਨਾਂ ਦੇਣਾ ਚਾਹੀਦਾ ਹੈ।"
+msgstr "ਤੁਹਾਨੂੰ ਬੱਡੀ ਲਈ ਯੂਜ਼ਰ ਨਾਂ ਦੇਣਾ ਚਾਹੀਦਾ ਹੈ।"
msgid "You must provide a group."
msgstr "ਤੁਹਾਨੂੰ ਇੱਕ ਗਰੁੱਪ ਦੇਣਾ ਚਾਹੀਦਾ ਹੈ।"
@@ -204,13 +198,11 @@ msgstr "ਬੱਡੀ ਸ਼ਾਮਲ ਕਰਨ ਦੌਰਾਨ ਗਲਤੀ"
msgid "Username"
msgstr "ਯੂਜ਼ਰ ਨਾਂ"
-#, fuzzy
msgid "Alias (optional)"
-msgstr "ਉਪ ਨਾਂ ਸੰਪਰਕ"
+msgstr "ਏਲੀਆਸ (ਚੋਣਵਾਂ)"
-#, fuzzy
msgid "Add in group"
-msgstr "ਗਰੁੱਪ ਸ਼ਾਮਿਲ"
+msgstr "ਗਰੁੱਪ ਵਿੱਚ ਸ਼ਾਮਲ"
msgid "Account"
msgstr "ਅਕਾਊਂਟ"
@@ -352,9 +344,8 @@ msgstr "ਸੰਭਾਲਿਆ ਗਿਆ..."
msgid "Plugins"
msgstr "ਪਲੱਗਇਨ"
-#, fuzzy
msgid "Block/Unblock"
-msgstr "ਪਾਬੰਦੀ ਹਟਾਓ"
+msgstr "ਪਾਬੰਦੀ ਲਗਾਓ/ਹਟਾਓ"
msgid "Block"
msgstr "ਪਾਬੰਦੀ"
@@ -362,11 +353,10 @@ msgstr "ਪਾਬੰਦੀ"
msgid "Unblock"
msgstr "ਪਾਬੰਦੀ ਹਟਾਓ"
-#, fuzzy
msgid ""
"Please enter the username or alias of the person you would like to Block/"
"Unblock."
-msgstr "ਵਿਅਕਤੀ ਦਾ ਸਕਰੀਨ ਨਾਂ ਜਾਂ ਏਲੀਆਸ ਦਿਓ ਜੀ, ਜਿਸ ਨਾਲ ਤੁਸੀਂ IM ਚਾਹੁੰਦੇ ਹੋ।"
+msgstr "ਵਿਅਕਤੀ ਦਾ ਯੂਜ਼ਰ ਨਾਂ ਜਾਂ ਏਲੀਆਸ ਦਿਓ ਜੀ, ਜਿਸ ਲਈ ਤੁਸੀਂ ਪਾਬੰਦੀ ਲਗਾਉਣੀ/ਹਟਾਉਣੀ ਚਾਹੁੰਦੇ ਹੋ।"
#. Not multiline
#. Not masked?
@@ -377,9 +367,8 @@ msgstr "ਠੀਕ ਹੈ"
msgid "New Instant Message"
msgstr "ਨਵਾਂ ਤਰੁੰਤ ਸੁਨੇਹਾ"
-#, fuzzy
msgid "Please enter the username or alias of the person you would like to IM."
-msgstr "ਵਿਅਕਤੀ ਦਾ ਸਕਰੀਨ ਨਾਂ ਜਾਂ ਏਲੀਆਸ ਦਿਓ ਜੀ, ਜਿਸ ਨਾਲ ਤੁਸੀਂ IM ਚਾਹੁੰਦੇ ਹੋ।"
+msgstr "ਵਿਅਕਤੀ ਦਾ ਯੂਜ਼ਰ ਨਾਂ ਜਾਂ ਏਲੀਆਸ ਦਿਓ ਜੀ, ਜਿਸ ਨਾਲ ਤੁਸੀਂ IM ਚਾਹੁੰਦੇ ਹੋ।"
msgid "Channel"
msgstr "ਚੈਨਲ"
@@ -393,11 +382,10 @@ msgstr "ਜੁਆਇੰਨ ਕਰਨ ਵਾਸਤੇ ਚੈਟ ਦਾ ਨਾਂ
msgid "Join"
msgstr "ਦਾਖਲ"
-#, fuzzy
msgid ""
"Please enter the username or alias of the person whose log you would like to "
"view."
-msgstr "ਉਸ ਵਿਅਕਤੀ ਦਾ ਸਕਰੀਨ ਨਾਂ ਜਾਂ ਏਲੀਆਸ ਦਿਓ ਜੀ, ਜਿਸ ਦਾ ਲਾਗ ਤੁਸੀਂ ਵੇਖਣਾ ਚਾਹੁੰਦੇ ਹੋ।"
+msgstr "ਉਸ ਵਿਅਕਤੀ ਦਾ ਯੂਜ਼ਰ ਨਾਂ ਜਾਂ ਏਲੀਆਸ ਦਿਓ ਜੀ, ਜਿਸ ਦਾ ਲਾਗ ਤੁਸੀਂ ਵੇਖਣਾ ਚਾਹੁੰਦੇ ਹੋ।"
#. Create the "Options" frame.
msgid "Options"
@@ -406,20 +394,17 @@ msgstr "ਚੋਣਾਂ"
msgid "Send IM..."
msgstr "IM ਭੇਜੋ..."
-#, fuzzy
msgid "Block/Unblock..."
-msgstr "ਪਾਬੰਦੀ ਹਟਾਓ"
+msgstr "ਪਾਬੰਦੀ ਲਗਾਓ/ਹਟਾਓ..."
msgid "Join Chat..."
-msgstr "ਚੈਟ 'ਚ ਜੁਆਇੰਨ..."
+msgstr "ਗੱਲਬਾਤ 'ਚ ਦਾਖਲ..."
-#, fuzzy
msgid "View Log..."
-msgstr "ਲਾਗ ਵੇਖੋ"
+msgstr "ਲਾਗ ਵੇਖੋ..."
-#, fuzzy
msgid "View All Logs"
-msgstr "ਲਾਗ ਵੇਖੋ"
+msgstr "ਸਭ ਲਾਗ ਵੇਖੋ"
msgid "Show"
msgstr "ਵੇਖੋ"
@@ -442,16 +427,14 @@ msgstr "ਵਰਣਨਮਾਲਾ ਅਨੁਸਾਰ"
msgid "By Log Size"
msgstr "ਲਾਗ ਸਾਈਜ਼ ਰਾਹੀਂ"
-#, fuzzy
msgid "Buddy"
-msgstr "ਬੱਡੀ(_B):"
+msgstr "ਬੱਡੀ"
msgid "Chat"
msgstr "ਗੱਲਬਾਤ"
-#, fuzzy
msgid "Grouping"
-msgstr "ਗਰੁੱਪ"
+msgstr "ਗਰੁੱਪਿੰਗ"
msgid "Certificate Import"
msgstr "ਸਰਟੀਫਿਕੇਟ ਇੰਪੋਰਟ"
@@ -562,7 +545,7 @@ 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 "ਕੋਈ ਕਮਾਂਡ ਨਹੀਂ ਹੈ।"
@@ -607,25 +590,24 @@ 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 "ਭੇਜੋ"
-#, fuzzy
msgid "Invite message"
-msgstr "ਸਨੇਹੇ 'ਚ ਸ਼ਾਮਿਲ"
+msgstr "ਸੱਦਾ ਸੁਨੇਹਾ"
msgid "Invite"
msgstr "ਸੱਦਾ"
-#, fuzzy
msgid ""
"Please enter the name of the user you wish to invite,\n"
"along with an optional invite message."
-msgstr "ਸੱਦਾ ਭੇਜਣ ਲਈ ਯੂਜ਼ਰ ਦਾ ਨਾਂ ਦਿਓ, ਚੋਣਵੇਂ ਰੂਪ ਵਿੱਚ ਸੱਦਾ ਸੁਨੇਹਾ ਵੀ ਦਿੱਤਾ ਜਾ ਸਕਦਾ ਹੈ।"
+msgstr ""
+"ਸੱਦਾ ਭੇਜਣ ਲਈ ਯੂਜ਼ਰ ਦਾ ਨਾਂ ਦਿਓ, ਜਿਸ ਨੂੰ ਤੁਸੀਂ ਸੱਦਾ ਭੇਜਣਾ ਚਾਹੁੰਦੇ ਹੋ,\n"
+"ਚੋਣਵੇਂ ਰੂਪ ਵਿੱਚ ਸੱਦਾ ਸੁਨੇਹਾ ਵੀ ਦਿੱਤਾ ਜਾ ਸਕਦਾ ਹੈ।"
msgid "Conversation"
msgstr "ਗੱਲਾਂਬਾਤਾਂ"
@@ -639,9 +621,8 @@ msgstr "ਟਾਈਮ-ਸਟੈਂਪ ਵੇਖੋ"
msgid "Add Buddy Pounce..."
msgstr "ਬੱਡੀ ਪਉਨਸ ਸ਼ਾਮਲ..."
-#, fuzzy
msgid "Invite..."
-msgstr "ਸੱਦਾ"
+msgstr "ਸੱਦਾ..."
msgid "Enable Logging"
msgstr "ਲਾਗ ਰੱਖਣ ਯੋਗ"
@@ -652,11 +633,11 @@ msgstr "ਸਾਊਂਡ ਯੋਗ"
msgid "<AUTO-REPLY> "
msgstr "<AUTO-REPLY> "
-#, fuzzy, c-format
+#, c-format
msgid "List of %d user:\n"
msgid_plural "List of %d users:\n"
-msgstr[0] "ਯੂਜ਼ਰਾਂ ਦੀ ਲਿਸਟ:\n"
-msgstr[1] "ਯੂਜ਼ਰਾਂ ਦੀ ਲਿਸਟ:\n"
+msgstr[0] "%d ਯੂਜ਼ਰ ਦੀ ਲਿਸਟ:\n"
+msgstr[1] "%d ਯੂਜ਼ਰਾਂ ਦੀ ਲਿਸਟ:\n"
msgid "Supported debug options are: version"
msgstr "ਸਹਿਯੋਗੀ ਡੀਬੱਗ ਚੋਣਾਂ ਹਨ: version"
@@ -675,11 +656,11 @@ msgstr ""
msgid ""
"%s is not a valid message class. See '/help msgcolor' for valid message "
"classes."
-msgstr ""
+msgstr "%s ਇੱਕ ਵੈਧ ਸੁਨੇਹਾ ਕਲਾਸ ਨਹੀਂ ਹੈ। ਵੈਧ ਸੁਨੇਹਾ ਕਲਾਸਾਂ ਲਈ '/help msgcolor' ਵੇਖੋ।"
#, c-format
msgid "%s is not a valid color. See '/help msgcolor' for valid colors."
-msgstr ""
+msgstr "%s ਇੱਕ ਵੈਧ ਰੰਗ ਨਹੀਂ ਹੈ। ਵੈਧ ਰੰਗਾਂ ਲਈ '/help msgcolor' ਵੇਖੋ।"
msgid ""
"say &lt;message&gt;: Send a message normally as if you weren't using a "
@@ -728,6 +709,9 @@ 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"
msgid "Unable to open file."
msgstr "ਫਾਇਲ ਖੋਲਣ ਲਈ ਅਸਫਲ ਹੈ।"
@@ -748,11 +732,11 @@ msgstr "ਫਿਲਟਰ: "
msgid "Pause"
msgstr "ਵਿਰਾਮ"
-#, fuzzy, c-format
+# , c-format
msgid "File Transfers - %d%% of %d file"
msgid_plural "File Transfers - %d%% of %d files"
-msgstr[0] "ਫਾਇਲ ਟਰਾਂਸਫਰ - %d%% ਫਾਇਲਾਂ %d ਵਿੱਚੋਂ"
-msgstr[1] "ਫਾਇਲ ਟਰਾਂਸਫਰ - %d%% ਫਾਇਲਾਂ %d ਵਿੱਚੋਂ"
+msgstr[0] "ਫਾਇਲ ਟਰਾਂਸਫਰ - %2$d ਵਿੱਚੋਂ %1$d%% ਫਾਇਲ"
+msgstr[1] "ਫਾਇਲ ਟਰਾਂਸਫਰ - %2$d ਵਿੱਚੋਂ %1$d%% ਫਾਇਲਾਂ"
#. Create the window.
msgid "File Transfers"
@@ -799,13 +783,11 @@ msgstr "ਅਸਫ਼ਲ"
msgid "%.2f KiB/s"
msgstr "%.2f KiB/s"
-#, fuzzy
msgid "Sent"
-msgstr "ਸੈੱਟ"
+msgstr "ਭੇਜੇ"
-#, fuzzy
msgid "Received"
-msgstr "ਪ੍ਰਾਪਤ ਹੋਏ ਸੁਨੇਹੇ"
+msgstr "ਮਿਲੇ"
msgid "Finished"
msgstr "ਮੁਕੰਮਲ"
@@ -814,21 +796,19 @@ msgstr "ਮੁਕੰਮਲ"
msgid "The file was saved as %s."
msgstr "ਫਾਇਲ ਨੂੰ %s ਵਾਂਗ ਸੰਭਾਲਿਆ ਗਿਆ।"
-#, fuzzy
msgid "Sending"
-msgstr "ਭੇਜੋ"
+msgstr "ਭੇਜਿਆ ਜਾ ਰਿਹਾ ਹੈ"
-#, fuzzy
msgid "Receiving"
-msgstr "ਬਾਕੀ"
+msgstr "ਮਿਲਿਆ"
-#, fuzzy, c-format
+# , c-format
msgid "Conversation in %s on %s"
-msgstr "%s ਨਾਲ ਗੱਲਾਂ-ਬਾਤਾਂ"
+msgstr "%2$s ਉੱਤੇ %1$s ਗੱਲਬਾਤ"
-#, fuzzy, c-format
+#, c-format
msgid "Conversation with %s on %s"
-msgstr "%s ਨਾਲ ਗੱਲਬਾਤ"
+msgstr "%2$s ਉੱਤੇ %1$s ਨਾਲ ਗੱਲਾਂ"
msgid "%B %Y"
msgstr "%B %Y"
@@ -847,8 +827,7 @@ 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"
@@ -859,7 +838,7 @@ msgstr "ਕੁੱਲ ਲਾਗ ਆਕਾਰ:"
#. Search box *********
msgid "Scroll/Search: "
-msgstr ""
+msgstr "ਸਕਰੋਲ/ਖੋਜ:"
#, c-format
msgid "Conversations in %s"
@@ -869,9 +848,8 @@ msgstr "%s ਨਾਲ ਗੱਲਾਂ-ਬਾਤਾਂ"
msgid "Conversations with %s"
msgstr "%s ਨਾਲ ਗੱਲਬਾਤ"
-#, fuzzy
msgid "All Conversations"
-msgstr "ਗੱਲਾਂ-ਬਾਤਾਂ"
+msgstr "ਸਭ ਗੱਲਾਂ-ਬਾਤਾਂ"
msgid "System Log"
msgstr "ਸਿਸਟਮ ਲਾਗ"
@@ -913,9 +891,8 @@ msgstr "IM"
msgid "(none)"
msgstr "(ਕੋਈ ਨਹੀਂ)"
-#, fuzzy
msgid "URI"
-msgstr "UIN"
+msgstr "URI"
msgid "ERROR"
msgstr "ਗਲਤੀ"
@@ -954,8 +931,7 @@ 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"
@@ -1050,9 +1026,8 @@ msgstr "ਇੱਕ ਕਮਾਂਡ ਚਲਾਓ"
msgid "Play a sound"
msgstr "ਇੱਕ ਆਵਾਜ਼ ਚਲਾਓ"
-#, fuzzy
msgid "Pounce only when my status is not Available"
-msgstr "ਜਦੋਂ ਮੇਰਾ ਸਟੇਟਸ ਉਪਲੱਬਧ ਨਾ ਹੋਵੇ ਤਾਂ ਹੀ ਪਉਨਸ ਕਰੋ(_o)"
+msgstr "ਜਦੋਂ ਮੇਰਾ ਸਟੇਟਸ ਉਪਲੱਬਧ ਨਾ ਹੋਵੇ ਤਾਂ ਹੀ ਪਉਨਸ ਕਰੋ"
msgid "Recurring"
msgstr "ਆਵਿਰਤੀ"
@@ -1113,7 +1088,6 @@ msgstr "%s ਦੂਰ ਚੱਲਿਆ ਗਿਆ ਹੈ (%s)"
msgid "%s has sent you a message. (%s)"
msgstr "%s ਨੇ ਤੁਹਾਨੂੰ ਸੁਨੇਹਾ ਭੇਜਿਆ ਹੈ। (%s)"
-#, c-format
msgid "Unknown pounce event. Please report this!"
msgstr "ਅਣਜਾਣ ਪਉਨਸ ਘਟਨਾ ਹੈ। ਸੂਚਨਾ ਦਿਓ ਜੀ!"
@@ -1159,20 +1133,17 @@ msgstr "ਹਾਲਤ ਬਦਲਣ ਤੋਂ ਪਹਿਲਾਂ ਮਿੰਟ"
msgid "Change status to"
msgstr "ਹਾਲਤ ਬਦਲੋ"
-#. Conversations
msgid "Conversations"
msgstr "ਗੱਲਾਂ-ਬਾਤਾਂ"
msgid "Logging"
msgstr "ਲਾਗਇਨ"
-#, fuzzy
msgid "You must fill all the required fields."
-msgstr "ਰਜਿਸਟਰੇਸ਼ਨ ਖੇਤਰ ਭਰੋ।"
+msgstr "ਤੁਹਾਨੂੰ ਸਭ ਲੋੜੀਦੇ ਖੇਤਰ ਭਰਨੇ ਪੈਣੇ ਹਨ"
-#, fuzzy
msgid "The required fields are underlined."
-msgstr "ਲੋੜੀਦੀ ਪਲੱਗਇਨ %s ਨੂੰ ਲੋਡ ਕਰਨ ਲਈ ਅਸਫਲ ਹੈ।"
+msgstr "ਲਾਜ਼ਮੀ ਖੇਤਰਾਂ ਹੇਠ ਲਾਈਨਾਂ ਲੱਗੀਆਂ ਹਨ।"
msgid "Not implemented yet."
msgstr "ਹਾਲੇ ਬਣਾਇਆ ਨਹੀਂ ਗਿਆ।"
@@ -1183,16 +1154,14 @@ msgstr "ਫਾਇਲ ਸੰਭਾਲੋ..."
msgid "Open File..."
msgstr "ਫਾਇਲ ਖੋਲੋ......."
-#, fuzzy
msgid "Choose Location..."
-msgstr "ਯੂਜ਼ਰ ਟਿਕਾਣਾ"
+msgstr "ਟਿਕਾਣਾ ਚੁਣੋ..."
msgid "Hit 'Enter' to find more rooms of this category."
-msgstr ""
+msgstr "ਇਸ ਕੈਟਾਗਰੀ ਦੇ ਹੋਰ ਰੂਮ ਲੱਭਣ ਵਾਸਤੇ 'Enter' ਦੱਬੋ।"
-#, fuzzy
msgid "Get"
-msgstr "ਸੈੱਟ"
+msgstr "ਲਵੋ"
#. Create the window.
msgid "Room List"
@@ -1225,7 +1194,6 @@ msgstr "ਤੁਸੀਂ ਗੱਲਬਾਤ ਵਿੱਚ ਬੋਲੇ"
msgid "Others talk in chat"
msgstr "ਗੱਲਬਾਤ ਵਿੱਚ ਹੋਰ ਵਿਸ਼ੇ"
-#, fuzzy
msgid "Someone says your username in chat"
msgstr "ਕਿਸੇ ਨੇ ਤੁਹਾਡਾ ਨਾਂ ਗੱਲਬਾਤ ਦੌਰਾਨ ਲਿਆ ਹੈ"
@@ -1480,44 +1448,37 @@ msgstr "ਨਵੀਂ ਗੱਲਬਾਤ ਵਿੱਚ ਤਾਜ਼ੀ ਗੱਲ
msgid ""
"When a new conversation is opened this plugin will insert the last "
"conversation into the current conversation."
-msgstr ""
-"ਜਦੋਂ ਇੱਕ ਨਵੀਂ ਗੱਲਬਾਤ ਖੁੱਲ੍ਹਦੀ ਹੈ ਤਾਂ ਇਹ ਪਲੱਗਇਨ ਮੌਜੂਦਾ ਗੱਲਬਾਤ ਵਿੱਚ ਆਖਰੀ ਗੱਲਬਾਤ ਨੂੰ ਸ਼ਾਮਲ ਕਰਦੀ ਹੈ।"
+msgstr "ਜਦੋਂ ਇੱਕ ਨਵੀਂ ਗੱਲਬਾਤ ਖੁੱਲ੍ਹਦੀ ਹੈ ਤਾਂ ਇਹ ਪਲੱਗਇਨ ਮੌਜੂਦਾ ਗੱਲਬਾਤ ਵਿੱਚ ਆਖਰੀ ਗੱਲਬਾਤ ਨੂੰ ਸ਼ਾਮਲ ਕਰਦੀ ਹੈ।"
-#, c-format
msgid "Online"
-msgstr "ਆਨਲਾਇਨ"
+msgstr "ਆਨਲਾਈਨ"
msgid "Offline"
-msgstr "ਆਫਲਾਇਨ"
+msgstr "ਆਫਲਾਈਨ"
-#, fuzzy
msgid "Online Buddies"
-msgstr "ਆਫਲਾਇਨ ਬੇਲੀ"
+msgstr "ਆਨਲਾਈਨ ਬੱਡੀ"
-#, fuzzy
msgid "Offline Buddies"
-msgstr "ਆਫਲਾਇਨ ਬੇਲੀ"
+msgstr "ਆਫਲਾਈਨ ਬੇਲੀ"
-#, fuzzy
msgid "Online/Offline"
-msgstr "ਆਨਾਲਾਇਨ"
+msgstr "ਆਨਲਾਈਨ/ਆਫਲਾਈਨ"
msgid "Meebo"
-msgstr ""
+msgstr "ਮੀਬੋ"
-#, fuzzy
msgid "No Grouping"
-msgstr "ਸਾਊਂਡ ਨਹੀਂ"
+msgstr "ਗਰੁੱਪਿੰਗ ਨਹੀਂ"
msgid "Nested Subgroup"
-msgstr ""
+msgstr "ਅੰਦਰੂਨੀ ਸਬ-ਗਰੁੱਪ"
msgid "Nested Grouping (experimental)"
-msgstr ""
+msgstr "ਅੰਦਰੂਨੀ ਗਰੁੱਪਿੰਗ (ਤਰਜਬੇ ਅਧੀਨ)"
-#, fuzzy
msgid "Provides alternate buddylist grouping options."
-msgstr "ਈਵੇਲੂਸ਼ਨ ਨਾਲ ਸਬੰਧ ਉਪਲੱਬਧ ਕਰਵਾਉਦਾ ਹੈ।"
+msgstr "ਬਦਲਵੀਂ ਬੱਡੀ-ਲਿਸਟ ਗਰੁੱਪਿੰਗ ਚੋਣਾਂ ਦਿੰਦਾ ਹੈ।"
msgid "Lastlog"
msgstr "ਆਖਰੀ-ਲਾਗ"
@@ -1648,8 +1609,7 @@ 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."
@@ -1670,12 +1630,10 @@ 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
@@ -1827,9 +1785,8 @@ msgstr ""
"ਰਿਜ਼ੋਲਵਰ ਪਰੋਸੈੱਸ ਤੋਂ ਪੜ੍ਹਨ ਦੌਰਾਨ ਗਲਤੀ:\n"
"%s"
-#, c-format
msgid "Resolver process exited without answering our request"
-msgstr ""
+msgstr "ਸਾਡੀ ਮੰਗ ਦਾ ਜਵਾਬ ਦਿੱਤੇ ਬਿਨਾਂ ਰਿਜ਼ਾਲਵਰ ਕਾਰਵਾਈ ਬੰਦ ਹੋ ਗਈ ਹੈ।"
#, c-format
msgid "Thread creation failure: %s"
@@ -1917,7 +1874,6 @@ msgstr "%2$s ਤੋਂ %1$s ਦੀ ਟਰਾਂਸਫਰ ਸ਼ੁਰੂ ਹੋ
msgid "Transfer of file %s complete"
msgstr "ਫਾਇਲ %s ਦਾ ਟਰਾਂਸਫਰ ਮੁਕੰਮਲ ਹੋਇਆ"
-#, c-format
msgid "File transfer complete"
msgstr "ਫਾਇਲ ਟਰਾਂਸਫਰ ਮੁਕੰਮਲ"
@@ -1925,7 +1881,6 @@ msgstr "ਫਾਇਲ ਟਰਾਂਸਫਰ ਮੁਕੰਮਲ"
msgid "You canceled the transfer of %s"
msgstr "ਤੁਸੀਂ %s ਲਈ ਟਰਾਂਸਫਰ ਰੱਦ ਕੀਤਾ"
-#, c-format
msgid "File transfer cancelled"
msgstr "ਫਾਇਲ ਟਰਾਂਸਫਰ ਰੱਦ ਕੀਤਾ"
@@ -2114,7 +2069,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 ਨਹੀਂ ਹੈ।"
@@ -2126,10 +2080,8 @@ msgstr "ਪਲੱਗਇਨ ਮੈਜ਼ਿਕ %d ਨਹੀਂ ਮਿਲਦੀ (%
msgid "ABI version mismatch %d.%d.x (need %d.%d.x)"
msgstr "ABI ਵਰਜਨ %d.%d.x ਮਿਲਦਾ ਨਹੀਂ (%d.%d.x ਦੀ ਲੋੜ)"
-#, fuzzy
-msgid ""
-"Plugin does not implement all required functions (list_icon, login and close)"
-msgstr "ਪਲੱਗਇਨ ਨੇ ਸਭ ਲੋੜੀਦੇ ਫੰਕਸ਼ਨ ਸਥਾਪਿਤ ਨਹੀਂ ਕੀਤੇ ਹਨ"
+msgid "Plugin does not implement all required functions (list_icon, login and close)"
+msgstr "ਪਲੱਗਇਨ ਨੇ ਸਭ ਲੋੜੀਦੇ ਫੰਕਸ਼ਨ ਸਥਾਪਿਤ ਨਹੀਂ ਕੀਤੇ ਹਨ (list_icon, login ਅਤੇ close)"
#, c-format
msgid ""
@@ -2147,9 +2099,9 @@ msgstr "ਲੋੜੀਦੀ ਪਲੱਗਇਨ %s ਨੂੰ ਲੋਡ ਕਰਨ
msgid "Unable to load your plugin."
msgstr "ਤੁਹਾਡੀ ਪਲੱਗਇਨ ਲੋਡ ਕਰਨ ਲਈ ਅਸਮਰੱਥ"
-#, fuzzy, c-format
+# , c-format
msgid "%s requires %s, but it failed to unload."
-msgstr "ਨਿਰਭਰ ਪਲੱਗਇਨ %s ਲੋਡ ਕਰਨ ਲਈ ਫੇਲ੍ਹ ਹੈ।"
+msgstr "%s ਨੂੰ %s ਚਾਹੀਦਾ ਸੀ, ਪਰ ਇਹ ਲੋਡ ਕਰਨ ਲਈ ਫੇਲ੍ਹ ਹੈ"
msgid "Autoaccept"
msgstr "ਆਟੋ-ਮਨਜ਼ੂਰ ਕਰੋ"
@@ -2207,18 +2159,17 @@ msgstr ""
"ਪੋਪਅੱਪ ਨਾਲ ਨੋਟੀਫਾਈ ਕਰੋ, ਜਦੋਂ ਵੀ ਇੱਕ ਆਟੋ-ਮਨਜ਼ੂਰ ਫਾਇਲ ਟਰਾਂਸਫਰ ਪੂਰੀ ਹੋ ਜਾਵੇ\n"
"(ਕੇਵਲ ਜਦੋਂ ਭੇਜਣ ਵਾਲੇ ਨਾਲ ਕੋਈ ਸੰਵਾਦ ਨਾ ਹੋਵੇ)"
-#, fuzzy
msgid "Create a new directory for each user"
-msgstr "ਖੋਜ ਲਈ ਇੱਕ ਯੂਜ਼ਰ ਡਾਇਰੈਕਟਰੀ ਚੁਣੋ"
+msgstr "ਹਰੇਕ ਯੂਜ਼ਰ ਲਈ ਵੱਖਰੀ ਡਾਇਰੈਕਟਰੀ ਬਣਾਓ"
msgid "Notes"
-msgstr "ਸੂਚਨਾ"
+msgstr "ਨੋਟਿਸ"
msgid "Enter your notes below..."
-msgstr "ਆਪਣੀ ਸੂਚਨਾ ਹੇਠਾਂ ਦਿਓ..."
+msgstr "ਆਪਣੇ ਨੋਟਿਸ ਹੇਠਾਂ ਦਿਓ..."
msgid "Edit Notes..."
-msgstr "ਸੂਚਨਾ ਸੋਧ..."
+msgstr "ਨੋਟਿਸ ਸੋਧ..."
#. *< major version
#. *< minor version
@@ -2229,7 +2180,7 @@ msgstr "ਸੂਚਨਾ ਸੋਧ..."
#. *< priority
#. *< id
msgid "Buddy Notes"
-msgstr "ਬੱਡੀ ਨੋਟ"
+msgstr "ਬੱਡੀ ਨੋਟਿਸ"
#. *< name
#. *< version
@@ -2372,7 +2323,7 @@ msgid "User Inactivity Timeout (in minutes)"
msgstr "ਯੂਜ਼ਰ ਇਨ-ਐਕਟੀਵਿਟੀ ਟਾਈਮ-ਆਉਟ (ਮਿੰਟਾਂ ਵਿੱਚ)"
msgid "Apply hiding rules to buddies"
-msgstr ""
+msgstr "ਬੱਡੀ ਲਈ ਲੁਕਵਾਂ ਨਿਯਮ ਲਾਗੂ ਕਰੋ"
#. *< type
#. *< ui_requirement
@@ -2423,8 +2374,7 @@ 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 "ਲੰਬਾਈ ਵੱਧ ਹੋਣ ਕਰਕੇ ਸੁਨੇਹਾ ਭੇਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ।"
@@ -2523,11 +2473,10 @@ msgid "Loads .NET plugins with Mono."
msgstr "ਮੋਨੋ ਨਾਲ .NET ਪਲੱਗਇਨ ਲੋਡ ਕਰੋ"
msgid "Add new line in IMs"
-msgstr ""
+msgstr "IM ਵਿੱਚ ਨਵੀਂ ਲਾਈਨ ਸ਼ਾਮਲ"
-#, fuzzy
msgid "Add new line in Chats"
-msgstr "ਗੱਲਬਾਤ ਵਿੱਚ ਲਾਗੂ ਕਰੋ"
+msgstr "ਗੱਲਾਬਾਤਾਂ ਵਿੱਚ ਨਵੀਆਂ ਲਾਈਨਾਂ ਸ਼ਾਮਲ"
#. *< magic
#. *< major version
@@ -2539,7 +2488,7 @@ msgstr "ਗੱਲਬਾਤ ਵਿੱਚ ਲਾਗੂ ਕਰੋ"
#. *< priority
#. *< id
msgid "New Line"
-msgstr "ਨਵੀਂ ਲਾਇਨ"
+msgstr "ਨਵੀਂ ਲਾਈਨ"
#. *< name
#. *< version
@@ -2547,16 +2496,15 @@ msgid "Prepends a newline to displayed message."
msgstr "ਸੁਨੇਹਾ ਵੇਖਾਉਣ ਲਈ ਇੱਕ ਨਵੀਂ ਲਾਇਨ ਜੋੜੋ।"
#. *< summary
-#, fuzzy
msgid ""
"Prepends a newline to messages so that the rest of the message appears below "
"the username in the conversation window."
msgstr ""
-"ਸੁਨੇਹਿਆਂ ਵਿੱਚ ਇੱਕ ਨਵੀਂ-ਲਾਈਨ ਜੋੜਦੀ ਹੈ, ਤਾਂ ਕਿ ਨਵੇਂ ਸੁਨੇਹੇ ਗੱਲਬਾਤ ਵਿੰਡੋ ਵਿੱਚ ਸਕਰੀਨ ਨਾਂ ਦੇ ਹੇਠ ਵੇਖਾਈ "
+"ਸੁਨੇਹਿਆਂ ਵਿੱਚ ਇੱਕ ਨਵੀਂ-ਲਾਈਨ ਜੋੜਦੀ ਹੈ, ਤਾਂ ਕਿ ਨਵੇਂ ਸੁਨੇਹੇ ਗੱਲਬਾਤ ਵਿੰਡੋ ਵਿੱਚ ਯੂਜ਼ਰ ਨਾਂ ਦੇ ਹੇਠ ਵੇਖਾਈ "
"ਦੇਣ।"
msgid "Offline Message Emulation"
-msgstr "ਆਫ਼-ਲਾਈਨ ਸੁਨੇਹੇ ਵਾਂਗ"
+msgstr "ਆਫਲਾਈਨ ਸੁਨੇਹਾ ਸਮਰੂਪ"
msgid "Save messages sent to an offline user as pounce."
msgstr "ਇੱਕ ਆਫਲਾਈਨ ਯੂਜ਼ਰ ਨੂੰ ਭੇਜੇ ਸੁਨੇਹੇ ਪਉਨਸ ਵਾਂਗ ਸੰਭਾਲੋ।"
@@ -2782,23 +2730,19 @@ msgstr ""
"ActiveTCL ਇੰਸਟਾਲੇਸ਼ਨ ਖੋਜਣ ਲਈ ਅਸਮਰੱਥ ਹੈ। ਜੇ ਤੁਸੀਂ TCL ਪਲੱਗਇਨ ਵਰਤਣੀਆਂ ਚਾਹੁੰਦੇ ਹੋ ਤਾਂ http://"
"www.activestate.com ਤੋਂ ActiveTCL ਇੰਸਟਾਲ ਕਰੋ।\n"
-#, fuzzy
msgid ""
"The Apple Bonjour For Windows toolkit wasn't found, see the FAQ at: http://d."
"pidgin.im/BonjourWindows for more information."
msgstr ""
-"Windows ਟੂਲਕਿੱਟ ਲਈ ਐਪਸ ਬੋਨਜੋਉਰ ਨਹੀਂ ਲੱਭਿਆ ਸਵਾਲ-ਜਵਾਬ ਵੇਖੋ: ਵਧੇਰੇ ਜਾਣਕਾਰੀ ਲਈ http://"
-"developer.pidgin.im/wiki/Using%20Pidgin#CanIusePidginforBonjourLink-"
-"LocalMessaging ਵੇਖੋ।"
+"Windows ਟੂਲਕਿੱਟ ਲਈ ਐਪਸ ਬੋਨਜੋਉਰ ਨਹੀਂ ਲੱਭਿਆ ਸਵਾਲ-ਜਵਾਬ ਵੇਖੋ: ਵਧੇਰੇ ਜਾਣਕਾਰੀ ਲਈ http://d."
+"pidgin.im/BonjourWindows ਵੇਖੋ।"
msgid "Unable to listen for incoming IM connections\n"
msgstr "ਆ ਰਹੇ IM ਕੁਨੈਕਸ਼ਨ ਸੁਣਨ ਤੋਂ ਅਸਮੱਰਥ ਹੈ\n"
-msgid ""
-"Unable to establish connection with the local mDNS server. Is it running?"
+msgid "Unable to establish connection with the local mDNS server. Is it running?"
msgstr "ਇੱਕ ਲੋਕਲ mDNS ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਬਣਾਉਣ ਲਈ ਅਸਮਰੱਥ ਹੈ। ਕੀ ਇਹ ਚੱਲਦਾ ਹੈ?"
-#. Creating the options for the protocol
msgid "First name"
msgstr "ਪਹਿਲਾਂ ਨਾਂ"
@@ -2830,6 +2774,10 @@ msgstr "ਬੋਨਜੁਉਰ ਪਰੋਟੋਕਾਲ ਪਲੱਗਇਨ"
msgid "Purple Person"
msgstr "ਪਰਪਲ ਵਿਅਕਤੀ"
+#. Creating the options for the protocol
+msgid "Local Port"
+msgstr "ਲੋਕਲ ਪੋਰਟ"
+
msgid "Bonjour"
msgstr "ਬੋਨਜੁਉਰ"
@@ -2849,9 +2797,8 @@ msgstr "ਸਾਕਟ ਪੋਰਟ ਨਾਲ ਜੋੜੀ ਨਹੀਂ ਜਾ ਸ
msgid "Could not listen on socket"
msgstr "ਸਾਕਟ ਉੱਤੇ ਸੁਣਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ"
-#, fuzzy
msgid "Error communicating with local mDNSResponder."
-msgstr "ਸਰਵਰ ਨਾਲ ਸੰਪਰਕ ਦੌਰਾਨ ਗਲਤੀ"
+msgstr "mDNSResponder ਨਾਲ ਸੰਚਾਰ ਦੌਰਾਨ ਗਲਤੀ ਹੈ।"
msgid "Invalid proxy settings"
msgstr "ਗਲਤ ਪਰਾਕਸੀ ਸੈਟਿੰਗ"
@@ -2876,9 +2823,9 @@ msgstr "ਤੁਹਾਡੀ ਬੱਡੀ-ਲਿਸਟ ਖਾਲੀ ਹੈ, ਫਾ
msgid "Buddylist saved successfully!"
msgstr "ਬੱਡੀ-ਲਿਸਟ ਠੀਕ ਤਰ੍ਹਾਂ ਸੰਭਾਲੀ ਗਈ!"
-#, fuzzy, c-format
+# , c-format
msgid "Couldn't write buddy list for %s to %s"
-msgstr "ਬੱਡੀ-ਲਿਸਟ ਲੋਡ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ"
+msgstr "%s ਲਈ %s ਉੱਤੇ ਬੱਡੀ ਲਿਸਟ ਲਿਖਣ ਲਈ ਅਸਮਰੱਥ"
msgid "Couldn't load buddylist"
msgstr "ਬੱਡੀ-ਲਿਸਟ ਲੋਡ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ"
@@ -2992,7 +2939,6 @@ 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 "ਦੂਰ"
@@ -3187,7 +3133,7 @@ msgid "Encodings"
msgstr "ਇੰਕੋਡਿੰਗ"
msgid "Auto-detect incoming UTF-8"
-msgstr ""
+msgstr "ਆ ਰਹੀ UTF-8 ਆਟੋਮੈਟਿਕ ਖੋਜ"
msgid "Real name"
msgstr "ਅਸਲੀ ਨਾਂ"
@@ -3204,15 +3150,14 @@ msgstr "ਗਲਤ ਢੰਗ"
#, c-format
msgid "Ban on %s by %s, set %s ago"
-msgstr ""
+msgstr "%s ਉੱਤੇ %s ਵਲੋਂ ਪਾਬੰਦੀ, %s ਚਿਰ ਪਹਿਲਾਂ"
-#, fuzzy, c-format
+#, c-format
msgid "Ban on %s"
-msgstr "ਕਾਰਨ: %s"
+msgstr "%s ਉੱਤੇ ਪਾਬੰਦੀ"
-#, fuzzy
msgid "End of ban list"
-msgstr "ਲਿਸਟ ਉੱਤੇ ਨਹੀਂ"
+msgstr "ਪਾਬੰਦੀ ਲਿਸਟ ਦਾ ਅੰਤ"
#, c-format
msgid "You are banned from %s."
@@ -3372,7 +3317,7 @@ msgstr ""
"away."
msgid "ctcp <nick> <msg>: sends ctcp msg to nick."
-msgstr ""
+msgstr "ctcp <nick> <msg>: sends ctcp msg to nick."
msgid "chanserv: Send a command to chanserv"
msgstr "chanserv: Send a command to chanserv"
@@ -3457,9 +3402,8 @@ msgstr "nick &lt;new nickname&gt;: Change your nickname."
msgid "nickserv: Send a command to nickserv"
msgstr "nickserv: Send a command to nickserv"
-#, fuzzy
msgid "notice &lt;target&lt;: Send a notice to a user or channel."
-msgstr "me &lt;action&gt;: ਇੱਕ ਬੱਡੀ ਜਾਂ ਗੱਲਬਾਤ ਲਈ IRC ਸਟਾਈਲ ਐਕਸ਼ਨ ਭੇਜੋ"
+msgstr "notice &lt;target&lt;: ਯੂਜ਼ਰ ਜਾਂ ਚੈਨਲ ਨੂੰ ਨੋਟਿਸ ਭੇਜੋ।"
msgid ""
"op &lt;nick1&gt; [nick2] ...: Grant channel operator status to someone. You "
@@ -3569,9 +3513,8 @@ msgstr "ਚਲਾਓ"
msgid "Server requires TLS/SSL for login. No TLS/SSL support found."
msgstr "ਲਾਗਇਨ ਲਈ ਸਰਵਰ ਨੂੰ TLS/SSL ਲੋੜੀਦਾ ਹੈ। ਕੋਈ TLS/SSL ਸਹਿਯੋਗ ਨਹੀਂ ਹੈ।"
-#, fuzzy
msgid "You require encryption, but no TLS/SSL support found."
-msgstr "ਲਾਗਇਨ ਲਈ ਸਰਵਰ ਨੂੰ TLS/SSL ਲੋੜੀਦਾ ਹੈ। ਕੋਈ TLS/SSL ਸਹਿਯੋਗ ਨਹੀਂ ਹੈ।"
+msgstr "ਤੁਹਾਨੂੰ ਇੰਕ੍ਰਿਪਸ਼ਨ ਦੀ ਲੋੜ ਹੈ, ਪਰ ਕੋਈ TLS/SSL ਸਹਿਯੋਗ ਨਹੀਂ ਲੱਭਿਆ।"
msgid "Server requires plaintext authentication over an unencrypted stream"
msgstr "ਸਰਵਰ ਨੂੰ ਇੱਕ ਗ਼ੈਰ-ਇੰਕ੍ਰਿਪਟਡ ਸਟਰੀਮ ਲਈ ਪਲੇਨ-ਟੈਕਸਟ ਪਰਮਾਣਕਿਤਾ ਦੀ ਲੋੜ ਹੈ।"
@@ -3868,7 +3811,6 @@ msgstr "ਚੈਟੀ"
msgid "Extended Away"
msgstr "ਪਹੁੰਚ ਤੋਂ ਦੂਰ"
-#, c-format
msgid "Do Not Disturb"
msgstr "ਤੰਗ ਨਾ ਕਰੋ"
@@ -3995,12 +3937,11 @@ msgstr "ਤੁਹਾਨੂੰ ਇੰਕ੍ਰਿਪਸ਼ਨ ਦੀ ਲੋੜ
msgid "Write error"
msgstr "ਲਿਖਣ ਵਿੱਚ ਗਲਤੀ"
-#, fuzzy
msgid "Ping timeout"
-msgstr "ਪਲੇਨ ਟੈਕਸਟ"
+msgstr "ਪਿੰਗ ਟਾਈਮ-ਆਉਟ"
msgid "Read Error"
-msgstr "ਪੜਨ ਗਲਤੀ"
+msgstr "ਪੜ੍ਹਨ ਗਲਤੀ"
#, c-format
msgid ""
@@ -4061,8 +4002,7 @@ 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,6 +4043,9 @@ msgstr "ਪਰਮਾਣਿਤ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ"
msgid "Re-initializing Stream"
msgstr "ਸਟਰੀਮ ਮੁੜ-ਸ਼ੁਰੂ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ"
+msgid "Server doesn't support blocking"
+msgstr "ਸਰਵਰ ਪਾਬੰਦੀ ਲਈ ਸਹਾਇਕ ਨਹੀਂ ਹੈ"
+
msgid "Not Authorized"
msgstr "ਪਰਮਾਣਤ ਨਹੀਂ"
@@ -4131,7 +4074,7 @@ msgid "Mood"
msgstr "ਮੂਡ"
msgid "Now Listening"
-msgstr ""
+msgstr "ਹੁਣ ਸੁਣ ਰਿਹਾ ਹੈ"
msgid "Mood Text"
msgstr "ਮੂਡ ਟੈਕਸਟ"
@@ -4410,9 +4353,8 @@ msgstr "register: Register with a chat room."
msgid "topic [new topic]: View or change the topic."
msgstr "topic [new topic]: View or change the topic."
-#, fuzzy
msgid "ban &lt;user&gt; [reason]: Ban a user from the room."
-msgstr "ban &lt;user&gt; [room]: Ban a user from the room."
+msgstr "ban &lt;user&gt; [reason]: Ban a user from the room."
msgid ""
"affiliate &lt;user&gt; &lt;owner|admin|member|outcast|none&gt;: Set a user's "
@@ -4431,18 +4373,14 @@ msgstr ""
msgid "invite &lt;user&gt; [message]: Invite a user to the room."
msgstr "invite &lt;user&gt; [room]: ਯੂਜ਼ਰ ਨੂੰ ਰੂਮ 'ਚ ਸੱਦੋ।"
-#, fuzzy
msgid "join: &lt;room&gt; [password]: Join a chat on this server."
-msgstr "join: &lt;room&gt; [server]: Join a chat on this server."
+msgstr "join: &lt;room&gt; [password]: Join a chat on this server."
-#, fuzzy
msgid "kick &lt;user&gt; [reason]: Kick a user from the room."
-msgstr "kick &lt;user&gt; [room]: 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ਇੱਕ ਯੂਜ਼ਰ/ਭਾਗ/ਸਰਵਰ ਪਿੰਗ ਕਰੋ।"
@@ -4485,13 +4423,11 @@ msgstr "ਕੁਨੈਕਟ ਪੋਰਟ"
msgid "Connect server"
msgstr "ਸਰਵਰ ਨਾਲ ਜੋੜੋ"
-#, fuzzy
msgid "File transfer proxies"
-msgstr "ਫਾਇਲ ਟਰਾਂਸਫਰ ਪੋਰਟ"
+msgstr "ਫਾਇਲ ਟਰਾਂਸਫਰ ਪਰਾਕਸੀ"
#. this should probably be part of global smiley theme settings later on,
#. shared with MSN
-#, fuzzy
msgid "Show Custom Smileys"
msgstr "ਕਸਟਮ ਸਮਾਇਲੀ ਵੇਖੋ"
@@ -4518,9 +4454,9 @@ msgstr "%s ਨੂੰ ਸੁਨੇਹਾ ਡਿਲਵਰੀ ਲਈ ਫੇਲ੍
msgid "XMPP Message Error"
msgstr "XMPP ਗਲਤੀ ਸੁਨੇਹਾ"
-#, fuzzy, c-format
+#, c-format
msgid "(Code %s)"
-msgstr " (ਕੋਡ %s)"
+msgstr "(ਕੋਡ %s)"
msgid "XML Parse error"
msgstr "XML ਪਾਰਸ ਗਲਤੀ"
@@ -4571,7 +4507,7 @@ msgstr "%s ਨੂੰ ਫਾਇਲ ਭੇਜਣ ਲਈ ਅਸਮਰੱਥ, ਯੂ
msgid "Unable to send file to %s, not subscribed to user presence"
msgstr "%s ਨੂੰ ਫਾਇਲ ਭੇਜਣ ਲਈ ਅਸਮਰੱਥ ਹੈ, ਯੂਜ਼ਰ ਮੌਜੂਦਗੀ ਲਈ ਮੈਂਬਰ ਨਹੀਂ"
-#, fuzzy, c-format
+# , c-format
msgid "Please select the resource of %s to which you would like to send a file"
msgstr "ਚੁਣੋ ਕਿ ਕਿਹੜੇ %s ਦੇ ਸਰੋਤ ਤੁਸੀਂ ਇੱਕ ਫਾਇਲ ਤੋਂ ਤੁਸੀਂ ਭੇਜਣੇ ਚਾਹੁੰਦੇ ਹੋ"
@@ -4612,8 +4548,18 @@ 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 "ਬੱਡੀ ਸ਼ਾਮਲ ਗਲਤੀ"
+
+msgid "The username specified does not exist."
+msgstr "ਦਿੱਤਾ ਯੂਜ਼ਰ ਨਾਂ ਮੌਜੂਦ ਨਹੀਂ ਹੈ।"
#, c-format
msgid "Buddy list synchronization issue in %s (%s)"
@@ -4631,222 +4577,167 @@ 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 "ਪਹਿਲਾਂ ਹੀ ਲਾਗਇਨ ਹੈ"
-#, fuzzy, c-format
msgid "Invalid username"
-msgstr "ਗਲਤ ਨਾਂ"
+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 "ਪਾਸਪੋਰਟ ਅਕਾਊਂਟ ਹਾਲੇ ਜਾਂਚਿਆ ਨਹੀਂ ਗਿਆ"
-#, fuzzy, c-format
msgid "Passport account suspended"
-msgstr "ਪਾਸਪੋਰਟ ਅਕਾਊਂਟ ਹਾਲੇ ਜਾਂਚਿਆ ਨਹੀਂ ਗਿਆ"
+msgstr "ਪਾਸਪੋਰਟ ਅਕਾਊਂਟ ਸਸਪੈਂਡ ਕੀਤਾ"
-#, c-format
msgid "Bad ticket"
msgstr "ਗਲਤ ਟਿਕਟ"
@@ -4858,16 +4749,14 @@ msgstr "ਅਣਜਾਣ ਗਲਤੀ ਕੋਡ %d"
msgid "MSN Error: %s\n"
msgstr "MSN ਗਲਤੀ: %s\n"
-#, fuzzy
msgid "Other Contacts"
-msgstr "ਪਸੰਦੀਦਾ ਸੰਪਰਕ"
+msgstr "ਹੋਰ ਸੰਪਰਕ"
-#, fuzzy
msgid "Non-IM Contacts"
-msgstr "ਸੰਪਰਕ ਹਟਾਓ"
+msgstr "ਗ਼ੈਰ-IM ਸੰਪਰਕ"
msgid "Nudge"
-msgstr "ਸੈਨਤ (ਨੱਜ)"
+msgstr "ਸੈਨਤ"
#, c-format
msgid "%s has nudged you!"
@@ -4875,11 +4764,10 @@ msgstr "%s ਨੇ ਤੁਹਾਨੂੰ ਸੈਨਤ ਮਾਰੀ ਹੈ!"
#, c-format
msgid "Nudging %s..."
-msgstr "%s ਨੂੰ ਸੈਨਤ ਮਾਰੋ..."
+msgstr "%s ਨੂੰ ਸੈਨਤ ਮਾਰੀ ਜਾ ਰਹੀ ਹੈ..."
-#, fuzzy
msgid "Email Address..."
-msgstr "ਈਮੇਲ ਐਡਰੈੱਸ"
+msgstr "ਈਮੇਲ ਐਡਰੈੱਸ..."
msgid "Your new MSN friendly name is too long."
msgstr "ਤੁਹਾਡਾ ਨਵਾਂ MSN ਦੋਸਤਾਨਾ ਨਾਂ ਬਹੁਤ ਲੰਮਾ ਹੈ।"
@@ -4915,22 +4803,19 @@ msgstr "ਸਵੀਕਾਰ"
msgid "Disallow"
msgstr "ਪਾਬੰਦੀ"
-#, fuzzy, c-format
+#, c-format
msgid "Blocked Text for %s"
-msgstr "%s ਲਈ ਬੱਡੀ ਟਿੱਪਣੀ"
+msgstr "%s ਲਈ ਬੱਡੀ ਟੈਕਸਟ"
-#, fuzzy
msgid "No text is blocked for this account."
-msgstr "ਇਹ ਅਕਾਊਂਟ ਲਈ ਇਹ ਬੱਡੀ ਆਈਕਾਨ ਵਰਤੋਂ(_i):"
+msgstr "ਇਸ ਅਕਾਊਂਟ ਲਈ ਕੋਈ ਟੈਕਸਟ ਬਲਾਕ ਨਹੀਂ ਹੈ।"
#, c-format
-msgid ""
-"MSN servers are currently blocking the following regular expressions:<br/>%s"
-msgstr ""
+msgid "MSN servers are currently blocking the following regular expressions:<br/>%s"
+msgstr "MSN ਸਰਵਰਾਂ ਉੱਤੇ ਹੇਠ ਦਿੱਤੇ ਨਿਯਮਤ ਸਮੀਕਰਨ ਪਾਬੰਦੀ ਲਗਾਏ ਗਏ ਹਨ: <br/>%s"
-#, fuzzy
msgid "This account does not have email enabled."
-msgstr "ਇਹ ਹਾਟਮੇਲ ਅਕਾਊਂਟ ਹਾਲੇ ਸਰਗਰਮ ਨਹੀਂ ਹੈ।"
+msgstr "ਇਹ ਅਕਾਊਂਟ ਲਈ ਈਮੇਲ ਚਾਲੂ ਨਹੀਂ ਹੈ।"
msgid "Send a mobile message."
msgstr "ਮੋਬਾਇਲ ਸੁਨੇਹਾ ਭੇਜੋ।"
@@ -4938,20 +4823,23 @@ msgstr "ਮੋਬਾਇਲ ਸੁਨੇਹਾ ਭੇਜੋ।"
msgid "Page"
msgstr "ਸਫ਼ਾ"
+msgid "Playing a game"
+msgstr "ਇੱਕ ਖੇਡ ਖੇਡੀ ਜਾ ਰਹੀ ਹੈ"
+
+msgid "Working"
+msgstr "ਕੰਮ ਕਰ ਰਿਹਾ/ਰਹੀ ਹਾਂ"
+
msgid "Has you"
-msgstr ""
+msgstr "ਤੁਸੀਂ ਹੋ"
-#, fuzzy
msgid "Home Phone Number"
-msgstr "ਘਰ ਫੋਨ ਨੰਬਰ ਦਿਓ..."
+msgstr "ਘਰ ਫੋਨ ਨੰਬਰ"
-#, fuzzy
msgid "Work Phone Number"
-msgstr "ਕੰਮ ਫੋਨ ਨੰਬਰ ਦਿਓ..."
+msgstr "ਕੰਮ ਫੋਨ ਨੰਬਰ"
-#, fuzzy
msgid "Mobile Phone Number"
-msgstr "ਮੋਬਾਇਲ ਨੰਬਰ ਦਿਓ..."
+msgstr "ਮੋਬਾਇਲ ਫੋਨ ਨੰਬਰ"
msgid "Be Right Back"
msgstr "ਆਉਨਾਂ"
@@ -4971,13 +4859,17 @@ msgstr "ਦੁਪੈਹਰ ਦੇ ਖਾਣੇ ਲਈ ਬਾਹਰ"
#. saveable
#. should be user_settable some day
#. independent
-#, fuzzy
msgid "Artist"
msgstr "ਕਲਾਕਾਰ"
-#, fuzzy
msgid "Album"
-msgstr "ਟਿਊਨ ਐਲਬਮ"
+msgstr "ਐਲਬਮ"
+
+msgid "Game Title"
+msgstr "ਖੇਡ ਟਾਈਟਲ"
+
+msgid "Office Title"
+msgstr "ਆਫਿਸ ਟਾਈਟਲ"
msgid "Set Friendly Name..."
msgstr "ਦੋਸਤਾਨਾ ਨਾਂ ਦਿਓ..."
@@ -4998,7 +4890,7 @@ msgid "Allow/Disallow Mobile Pages..."
msgstr "ਮੋਬਾਇਲ ਸਫ਼ੇ ਮੰਨਜ਼ੂਰ/ਨਾ-ਮਨਜ਼ੂਰ..."
msgid "View Blocked Text..."
-msgstr ""
+msgstr "ਪਾਬੰਦੀਸ਼ੁਦਾ ਟੈਕਸਟ ਵੇਖੋ..."
msgid "Open Hotmail Inbox"
msgstr "ਹਾਟਮੇਲ ਇਨ-ਬਾਕਸ ਖੋਲ੍ਹੋ"
@@ -5167,8 +5059,8 @@ msgid ""
"does not exist."
msgstr "ਯੂਜ਼ਰ ਪ੍ਰੋਫਾਇਲ ਵਿੱਚ ਕੋਈ ਜਾਣਕਾਰੀ ਨਹੀਂ ਮਿਲੀ ਹੈ। ਯੂਜ਼ਰ ਮੌਜੂਦ ਨਹੀਂ ਜਾਪਦਾ ਹੈ।"
-msgid "Profile URL"
-msgstr "ਪ੍ਰੋਫਾਇਲ URL"
+msgid "View web profile"
+msgstr "ਵੈੱਬ ਪਰੋਫਾਇਲ ਵੇਖੋ"
#. *< type
#. *< ui_requirement
@@ -5197,9 +5089,8 @@ msgstr "nudge: ਯੂਜ਼ਰ ਦਾ ਧਿਆਨ ਖਿੱਚਣ ਵਾਸਤ
msgid "Windows Live ID authentication:Unable to connect"
msgstr "ਵਿੰਡੋ ਲਾਇਵ ID ਪਰਮਾਣਕਿਤਾ: ਕੁਨੈਕਟ ਕਰਨ ਲਈ ਅਸਮਰੱਥ"
-#, fuzzy
msgid "Windows Live ID authentication:Invalid response"
-msgstr "ਵਿੰਡੋ ਲਾਇਵ ID ਪਰਮਾਣਕਿਤਾ: ਕੁਨੈਕਟ ਕਰਨ ਲਈ ਅਸਮਰੱਥ"
+msgstr "ਵਿੰਡੋ ਲਾਇਵ ID ਪਰਮਾਣਕਿਤਾ: ਗਲਤ ਜਵਾਬ"
#, c-format
msgid "%s is not a valid group."
@@ -5224,9 +5115,8 @@ msgstr "ਅਣਜਾਣੀ ਗਲਤੀ (%d)"
msgid "Unable to add user"
msgstr "ਯੂਜ਼ਰ ਸ਼ਾਮਲ ਕਰਨ ਲਈ ਅਸਮਰੱਥ"
-#, fuzzy
msgid "The following users are missing from your addressbook"
-msgstr "ਤੁਹਾਡੀ ਖੋਜ ਦੇ ਹੇਠ ਦਿੱਤੇ ਨਤੀਜੇ ਹਨ"
+msgstr "ਤੁਹਾਡੀ ਐਡਰੈੱਸਬੁੱਕ ਵਿੱਚੋਂ ਹੇਠ ਦਿੱਤੇ ਯੂਜ਼ਰ ਗੁੰਮ ਹਨ"
#, c-format
msgid "Unable to add user on %s (%s)"
@@ -5251,9 +5141,8 @@ msgstr "%s ਲਈ ਗਲਤ ਪਾਸਪੋਰਟ ਅਕਾਊਂਟ ਹੈ"
msgid "Service Temporarily Unavailable."
msgstr "ਸਰਵਿਸ ਆਰਜ਼ੀ ਰੂਪ 'ਚ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ।"
-#, fuzzy
msgid "Mobile message was not sent because it was too long."
-msgstr "ਸੁਨੇਹਾ ਨਹੀਂ ਭੇਜਿਆ ਗਿਆ, ਕਿਉਂਕਿ ਤੁਸੀਂ ਸਾਇਨ-ਆਨ ਨਹੀਂ ਹੋ।"
+msgstr "ਮੋਬਾਇਲ ਸੁਨੇਹਾ ਭੇਜਿਆ ਨਹੀਂ ਗਿਆ, ਕਿਉਂਕਿ ਇਹ ਬਹੁਤ ਲੰਮਾ ਸੀ।"
msgid "Unable to rename group"
msgstr "ਗਰੁੱਪ ਨਾਂ-ਤਬਦੀਲੀ ਲਈ ਅਸਫਲ"
@@ -5261,7 +5150,7 @@ msgstr "ਗਰੁੱਪ ਨਾਂ-ਤਬਦੀਲੀ ਲਈ ਅਸਫਲ"
msgid "Unable to delete group"
msgstr "ਗਰੁੱਪ ਹਟਾਉਣ ਲਈ ਅਸਫਲ"
-#, fuzzy, c-format
+#, c-format
msgid ""
"The MSN server will shut down for maintenance in %d minute. You will "
"automatically be signed out at that time. Please finish any conversations "
@@ -5277,38 +5166,31 @@ msgid_plural ""
"After the maintenance has been completed, you will be able to successfully "
"sign in."
msgstr[0] ""
-"MSN ਸਰਵਰ ਦੇਖਭਾਲਈ ਲਈ %d ਮਿੰਟ ਵਿੱਚ ਬੰਦ ਕੀਤਾ ਜਾਵੇਗਾ। ਤੁਸੀਂ ਉਸ ਸਮੇਂ ਆਟੋਮੈਟਿਕ ਹੀ ਸਾਇਨ-ਆਉਟ ਹੋ "
+"MSN ਸਰਵਰ ਦੇਖਭਾਲ ਲਈ %d ਮਿੰਟ ਵਿੱਚ ਬੰਦ ਕੀਤਾ ਜਾਵੇਗਾ। ਤੁਸੀਂ ਉਸ ਸਮੇਂ ਆਟੋਮੈਟਿਕ ਹੀ ਸਾਇਨ-ਆਉਟ ਹੋ "
"ਜਾਉਗੇ। ਜਾਰੀ ਗੱਲਾਬਾਤਾਂ ਛੇਤੀ ਖਤਮ ਕਰੋ ਜੀ!\n"
"\n"
-"ਦੇਖਭਾਲ ਖਤਮ ਹੋਣ ਬਾਅਦ, ਤੁਸੀਂ ਫੇਰ ਲਾਗਇਨ ਕਰ ਸਕਦੇ ਹੋ। MSN ਸਰਵਰ ਲਈ %d ਮਿੰਟਾਂ ਵਿੱਚ ਬੰਦ ਕੀਤਾ "
-"ਜਾਵੇਗਾ। ਤੁਸੀਂ ਉਸ ਸਮੇਂ ਆਟੋਮੈਟਿਕ ਹੀ ਸਾਇਨ-ਆਉਟ ਹੋ ਜਾਉਗੇ। ਜਾਰੀ ਗੱਲਾਬਾਤਾਂ ਛੇਤੀ ਖਤਮ ਕਰੋ ਜੀ!\n"
-"\n"
"ਦੇਖਭਾਲ ਖਤਮ ਹੋਣ ਬਾਅਦ, ਤੁਸੀਂ ਫੇਰ ਲਾਗਇਨ ਕਰ ਸਕਦੇ ਹੋ।"
msgstr[1] ""
-"MSN ਸਰਵਰ ਦੇਖਭਾਲਈ ਲਈ %d ਮਿੰਟ ਵਿੱਚ ਬੰਦ ਕੀਤਾ ਜਾਵੇਗਾ। ਤੁਸੀਂ ਉਸ ਸਮੇਂ ਆਟੋਮੈਟਿਕ ਹੀ ਸਾਇਨ-ਆਉਟ ਹੋ "
+"MSN ਸਰਵਰ ਦੇਖਭਾਲਈ ਲਈ %d ਮਿੰਟਾਂ ਵਿੱਚ ਬੰਦ ਕੀਤਾ ਜਾਵੇਗਾ। ਤੁਸੀਂ ਉਸ ਸਮੇਂ ਆਟੋਮੈਟਿਕ ਹੀ ਸਾਇਨ-ਆਉਟ ਹੋ "
"ਜਾਉਗੇ। ਜਾਰੀ ਗੱਲਾਬਾਤਾਂ ਛੇਤੀ ਖਤਮ ਕਰੋ ਜੀ!\n"
"\n"
-"ਦੇਖਭਾਲ ਖਤਮ ਹੋਣ ਬਾਅਦ, ਤੁਸੀਂ ਫੇਰ ਲਾਗਇਨ ਕਰ ਸਕਦੇ ਹੋ। MSN ਸਰਵਰ ਲਈ %d ਮਿੰਟਾਂ ਵਿੱਚ ਬੰਦ ਕੀਤਾ "
-"ਜਾਵੇਗਾ। ਤੁਸੀਂ ਉਸ ਸਮੇਂ ਆਟੋਮੈਟਿਕ ਹੀ ਸਾਇਨ-ਆਉਟ ਹੋ ਜਾਉਗੇ। ਜਾਰੀ ਗੱਲਾਬਾਤਾਂ ਛੇਤੀ ਖਤਮ ਕਰੋ ਜੀ!\n"
-"\n"
"ਦੇਖਭਾਲ ਖਤਮ ਹੋਣ ਬਾਅਦ, ਤੁਸੀਂ ਫੇਰ ਲਾਗਇਨ ਕਰ ਸਕਦੇ ਹੋ।"
msgid ""
"Message was not sent because the system is unavailable. This normally "
"happens when the user is blocked or does not exist."
msgstr ""
+"ਸੁਨੇਹਾ ਭੇਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ, ਕਿਉਂਕਿ ਸਿਸਟਮ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ। ਇਹ ਅਕਸਰ ਤਾਂ ਹੁੰਦਾ ਹੈ, ਜਦੋਂ "
+"ਯੂਜ਼ਰ ਉੱਤੇ ਪਾਬੰਦੀ ਹੋਵੇ ਜਾਂ ਮੌਜੂਦ ਨਾ ਹੋਵੇ।"
-#, fuzzy
msgid "Message was not sent because messages are being sent too quickly."
-msgstr "ਸੁਨੇਹਾ ਭੇਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ, ਕਿਉਂਕਿ ਅਸੀਂ ਬਹੁਤ ਤੇਜ਼ੀ ਨਾਲ ਭੇਜ ਰਹੇ ਹਾਂ:"
+msgstr "ਸੁਨੇਹਾ ਭੇਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ, ਕਿਉਂਕਿ ਸੁਨੇਹੇ ਬਹੁਤ ਤੇਜ਼ੀ ਨਾਲ ਭੇਜੇ ਜਾ ਰਹੇ ਹਨ।"
-#, fuzzy
msgid "Message was not sent because an unknown encoding error occurred."
-msgstr "ਇੱਕ ਅਣਜਾਣੀ ਗਲਤੀ ਆਉਣ ਕਰਕੇ ਸੁਨੇਹਾ ਭੇਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ:"
+msgstr "ਇੱਕ ਅਣਜਾਣੀ ਇੰਕੋਡਿੰਗ ਗਲਤੀ ਆਉਣ ਕਰਕੇ ਸੁਨੇਹਾ ਭੇਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ।"
-#, fuzzy
msgid "Message was not sent because an unknown error occurred."
-msgstr "ਇੱਕ ਅਣਜਾਣੀ ਗਲਤੀ ਆਉਣ ਕਰਕੇ ਸੁਨੇਹਾ ਭੇਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ:"
+msgstr "ਇੱਕ ਅਣਜਾਣੀ ਗਲਤੀ ਆਉਣ ਕਰਕੇ ਸੁਨੇਹਾ ਭੇਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ।"
msgid "Unable to connect"
msgstr "ਕੁਨੈਕਟ ਕਰਨ ਲਈ ਅਸਮਰੱਥ"
@@ -5346,8 +5228,7 @@ 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"
@@ -5399,8 +5280,7 @@ 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:"
@@ -5414,28 +5294,21 @@ msgstr "%s ਨੇ ਤੁਹਾਨੂੰ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ '
msgid "%s has removed you from his or her buddy list."
msgstr "%s ਨੇ ਤੁਹਾਨੂੰ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ 'ਚੋਂ ਹਟਾ ਦਿੱਤਾ ਹੈ।"
-#, fuzzy
msgid "Delete Buddy from Address Book?"
-msgstr "ਐਡਰੈੱਸ ਕਿਤਾਬ ਵਿੱਚ ਸ਼ਾਮਿਲ"
+msgstr "ਕੀ ਐਡਰੈੱਸਬੁੱਕ ਵਿੱਚੋਂ ਬੱਡੀ ਹਟਾਉਣਾ ਹੈ?"
-#, fuzzy
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\" ਜੋੜਨ ਲਈ ਅਸਫ਼ਲ ਹੈ।"
+msgstr "ਕੀ ਤੁਸੀਂ ਇਸ ਬੱਡੀ ਨੂੰ ਆਪਣੀ ਐਡਰੈੱਸਬੁੱਕ ਵਿੱਚੋਂ ਵੀ ਹਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ?"
-#, fuzzy
msgid "The username specified is invalid."
-msgstr "ਦਿੱਤਾ ਸਕਰੀਨ ਨਾਂ ਗਲਤ ਹੈ।"
+msgstr "ਦਿੱਤਾ ਯੂਜ਼ਰ-ਨਾਂ ਗਲਤ ਹੈ"
msgid "This Hotmail account may not be active."
msgstr "ਇਹ ਹਾਟਮੇਲ ਅਕਾਊਂਟ ਹਾਲੇ ਸਰਗਰਮ ਨਹੀਂ ਹੈ।"
+msgid "Profile URL"
+msgstr "ਪ੍ਰੋਫਾਇਲ URL"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5446,22 +5319,15 @@ msgstr "ਇਹ ਹਾਟਮੇਲ ਅਕਾਊਂਟ ਹਾਲੇ ਸਰਗਰ
#. *< version
#. * summary
#. * description
-#, fuzzy
msgid "MSN Protocol Plugin"
-msgstr "AIM ਪਰੋਟੋਕਾਲ ਪਲੱਗਇਨ"
+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 ""
-"RC4 ਸਹਿਯੋਗ (>=2.0.1) ਨਾਲ libpurple ਲਈ ਅੱਪਗਰੇਡ ਕਰੋ। MySpaceIM ਪਲੱਗਇਨ ਲੋਡ ਨਹੀਂ ਕੀਤੀ "
-"ਜਾ ਸਕੇਗੀ।"
+msgid "User lookup"
+msgstr "ਯੂਜਰ ਖੋਜ"
msgid "Reading challenge"
msgstr "ਚੈਲੰਜ਼ ਪੜ੍ਹਿਆ ਜਾ ਰਿਹਾ ਹੈ"
@@ -5472,11 +5338,17 @@ msgstr "ਸਰਵਰ ਵਲੋਂ ਗਲਤ ਚੈਲੰਜ਼ ਲੰਬਾਈ"
msgid "Logging in"
msgstr "ਲਾਗਇਨ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"
-#, fuzzy, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] "ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਖਤਮ ਹੋਇਆ (%d ਸਕਿੰਟਾਂ ਤੋਂ ਕੋਈ ਡਾਟਾ ਨਹੀਂ ਮਿਲਿਆ)"
-msgstr[1] "ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਖਤਮ ਹੋਇਆ (%d ਸਕਿੰਟਾਂ ਤੋਂ ਕੋਈ ਡਾਟਾ ਨਹੀਂ ਮਿਲਿਆ)"
+msgid "MySpaceIM - No Username Set"
+msgstr "MySpaceIM - ਕੋਈ ਯੂਜ਼ਰ ਨਾਂ ਨਹੀਂ ਦਿੱਤਾ"
+
+msgid "You appear to have no MySpace username."
+msgstr "ਤੁਹਾਡੇ ਕੋਲ ਕੋਈ MySpace ਯੂਜ਼ਰ ਨਾਂ ਨਹੀਂ ਜਾਪਦਾ ਹੈ।"
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr "ਕੀ ਤੁਸੀਂ ਹੁਣ ਸੈੱਟ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ? (ਯਾਦ ਰੱਖੋ ਕਿ ਇਹ ਬਦਲਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ!)"
+
+msgid "Lost connection with server"
+msgstr "ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਖਤਮ"
#. Can't write _()'d strings in array initializers. Workaround.
msgid "New mail messages"
@@ -5497,15 +5369,25 @@ msgstr "ਨਵੀਂ ਤਸਵੀਰ ਟਿੱਪਣੀ"
msgid "MySpace"
msgstr "MySpace"
-#, 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] ""
+"%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
@@ -5524,10 +5406,25 @@ 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 ਉੱਤੇ ਛੋਟਾ ਕਰਕੇ ਮੁੜ-ਟਰਾਈ ਕਰੋ ਜੀ।"
msgid "MySpaceIM Error"
msgstr "MySpaceIM ਗਲਤੀ"
+msgid "Invalid input condition"
+msgstr "ਗਲਤ ਇੰਪੁੱਟ ਹਾਲਤ"
+
+msgid "Read buffer full (2)"
+msgstr "ਪੜ੍ਹਨ ਬਫ਼ਰ ਭਰਿਆ (2)"
+
+msgid "Unparseable message"
+msgstr "ਨਾ-ਪਾਰਸਯੋਗ ਸੁਨੇਹਾ"
+
+#, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr "ਹੋਸਟ ਨਾਲ ਕੁਨੈਕਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ: %s (%d)"
+
msgid "Failed to add buddy"
msgstr "ਬੱਡੀ ਸ਼ਾਮਲ ਕਰਨ ਲਈ ਫੇਲ੍ਹ"
@@ -5537,13 +5434,6 @@ 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 "ਬੱਡੀ ਹਟਾਉਣ ਲਈ ਫੇਲ੍ਹ"
@@ -5553,39 +5443,18 @@ msgstr "'delbuddy' ਕਮਾਂਡ ਫੇਲ੍ਹ ਹੋਈ"
msgid "blocklist command failed"
msgstr "blocklist ਕਮਾਂਡ ਫੇਲ੍ਹ ਹੋਈ"
-msgid "Invalid input condition"
-msgstr "ਗਲਤ ਇੰਪੁੱਟ ਹਾਲਤ"
-
-#, fuzzy
-msgid "Read buffer full (2)"
-msgstr "ਪੜ੍ਹਨ ਬਫ਼ਰ ਭਰਿਆ"
-
-msgid "Unparseable message"
-msgstr "ਨਾ-ਪਾਰਸਯੋਗ ਸੁਨੇਹਾ"
-
-#, c-format
-msgid "Couldn't connect to host: %s (%d)"
-msgstr "ਹੋਸਟ ਨਾਲ ਕੁਨੈਕਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ: %s (%d)"
+msgid "Missing Cipher"
+msgstr "ਸੀਫ਼ਰ ਗੁੰਮ ਹੈ"
-msgid "IM Friends"
-msgstr "IM ਦੋਸਤ"
+msgid "The RC4 cipher could not be found"
+msgstr "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 ਬੱਡੀ ਨੂੰ ਸਰਵਰ ਤੋਂ ਸ਼ਾਮਲ ਜਾਂ ਅੱਪਡੇਟ ਕੀਤੇ ਗਏ ਹਨ (ਸਰਵਰ-ਸਾਈਡ ਲਿਸਟ ਉੱਤੋਂ ਬੱਡੀ ਪਹਿਲਾਂ ਹੀ ਸ਼ਾਮਲ "
-"ਕੀਤੇ)"
-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 ""
+"RC4 ਸਹਿਯੋਗ (>=2.0.1) ਨਾਲ libpurple ਲਈ ਅੱਪਗਰੇਡ ਕਰੋ। MySpaceIM ਪਲੱਗਇਨ ਲੋਡ ਨਹੀਂ ਕੀਤੀ "
+"ਜਾ ਸਕੇਗੀ।"
msgid "Add friends from MySpace.com"
msgstr "MySpace.com ਤੋਂ ਦੋਸਤ ਸ਼ਾਮਲ ਕਰੋ"
@@ -5627,9 +5496,6 @@ msgstr "ਬੇਸ ਫੋਂਟ ਸਾਈਜ਼ (ਪੁਆਇੰਟ)"
msgid "User"
msgstr "ਯੂਜ਼ਰ"
-msgid "Profile"
-msgstr "ਪ੍ਰੋਫਾਇਲ"
-
msgid "Headline"
msgstr "ਹੈੱਡਲਾਈਨ"
@@ -5642,34 +5508,30 @@ 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 ""
-
-#, fuzzy
msgid "MySpaceIM - Username Available"
-msgstr "ਸਰਵਿਸ ਉਪਲਬੱਧ ਨਹੀਂ"
+msgstr "MySpaceIM - ਯੂਜ਼ਰ ਨਾਂ ਉਪਲੱਬਧ ਹੈ"
-#, fuzzy
msgid "This username is available. Would you like to set it?"
-msgstr "%s ਨੇ ਵਾਇਟਬੋਰਡ ਉੱਤੇ ਸੁਨੇਹਾ ਭੇਜਿਆ। ਕੀ ਤੁਸੀਂ ਵਾਇਟਬੋਰਡ ਖੋਲ੍ਹਣਾ ਚਾਹੁੰਦੇ ਹੋ?"
+msgstr "ਇਹ ਯੂਜ਼ਰ ਨਾਂ ਉਪਲੱਬਧ ਹੈ। ਕੀ ਤੁਸੀਂ ਸੈੱਟ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?"
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
-msgstr ""
+msgstr "ਇੱਕ ਵਾਰ ਸੈੱਟ ਕੀਤਾ ਤਾਂ ਮੁੜ-ਬਦਲਿਆ ਨਹੀਂ ਜਾ ਸਕੇਗਾ!"
+
+msgid "MySpaceIM - Please Set a Username"
+msgstr "MySpaceIM - ਯੂਜ਼ਰ ਨਾਂ ਸੈੱਟ ਕਰੋ"
-#, fuzzy
msgid "This username is unavailable."
-msgstr "ਇਸ ਸਰੂਪ ਵਿੱਚ ਕੋਈ ਸਮਾਈਲ ਨਹੀਂ ਹਨ।"
+msgstr "ਇਹ ਯੂਜ਼ਰ ਨਾਂ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ।"
-#, fuzzy
msgid "Please try another username:"
-msgstr "%s ਲਈ ਨਵਾਂ ਨਾਂ ਦਿਓ ਜੀ"
+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:
@@ -5862,13 +5724,11 @@ msgstr "ਆਪਣੇ ਆਪ ਨੂੰ ਸ਼ਾਮਿਲ ਨਹੀਂ ਕਰ ਸ
msgid "Master archive is misconfigured"
msgstr "ਮਾਸਟਰ ਭੰਡਾਰ ਗਲਤ ਸੰਰਚਿਤ ਹੈ"
-#, fuzzy
msgid "Incorrect username or password"
-msgstr "ਗਲਤ ਸਕਰੀਨ ਨਾਂ ਜਾਂ ਪਾਸਵਰਡ"
+msgstr "ਗਲਤ ਯੂਜ਼ਰ ਨਾਂ ਜਾਂ ਪਾਸਵਰਡ"
-#, fuzzy
msgid "Could not recognize the host of the username you entered"
-msgstr "ਤੁਹਾਡੇ ਰਾਹੀਂ ਦਿੱਤੇ ਸਕਰੀਨ ਨਾਂ ਲਈ ਹੋਸਟ ਖੋਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ"
+msgstr "ਤੁਹਾਡੇ ਰਾਹੀਂ ਦਿੱਤੇ ਯੂਜ਼ਰ ਨਾਂ ਲਈ ਹੋਸਟ ਖੋਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ"
msgid ""
"Your account has been disabled because too many incorrect passwords were "
@@ -5881,9 +5741,8 @@ msgstr "ਤੁਸੀਂ ਗੱਲਬਾਤ ਲਈ ਇੱਕ ਹੀ ਵਿਅਕ
msgid "You have reached your limit for the number of contacts allowed"
msgstr "ਤੁਸੀਂ ਵੱਧ ਤੋਂ ਵੱਧ ਸਵੀਕਾਰ ਸੰਪਰਕਾਂ ਦੀ ਸੀਮਾ ਤੱਕ ਅੱਪੜ ਗਏ ਹੋ"
-#, fuzzy
msgid "You have entered an incorrect username"
-msgstr "ਤੁਸੀਂ ਇੱਕ ਗਲਤ ਸਕਰੀਨ ਨਾਂ ਦਿੱਤਾ ਹੈ"
+msgstr "ਤੁਸੀਂ ਇੱਕ ਗਲਤ ਯੂਜ਼ਰ ਨਾਂ ਦਿੱਤਾ ਹੈ"
msgid "An error occurred while updating the directory"
msgstr "ਡਾਇਰੈਕਟਰੀ ਦੇ ਨਵੀਨੀਕਰਨ ਦੌਰਾਨ ਗਲਤੀ ਆਈ ਹੈ"
@@ -6040,8 +5899,7 @@ 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 ""
@@ -6052,7 +5910,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 "ਇਹ ਕਾਨਫਰੰਸ ਬੰਦ ਕਰ ਦਿੱਤੀ ਗਈ ਹੈ। ਕੋਈ ਹੋਰ ਸੁਨੇਹਾ ਨਹੀਂ ਭੇਜਿਆ ਜਾ ਸਕਦਾ ਹੈ।"
@@ -6075,13 +5932,11 @@ msgstr "ਸਰਵਰ ਐਡਰੈੱਸ"
msgid "Server port"
msgstr "ਸਰਵਰ ਪੋਰਟ"
-#, fuzzy
msgid "Could not join chat room"
-msgstr "ਜੁੜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ"
+msgstr "ਚੈਟ ਰੂਮ ਵਿੱਚ ਦਾਖਲ ਨਹੀਂ ਹੋਇਆ ਜਾ ਸਕਿਆ"
-#, fuzzy
msgid "Invalid chat room name"
-msgstr "ਗਲਤ ਰੂਮ ਨਾਂ"
+msgstr "ਗਲਤ ਚੈਟ ਰੂਮ ਨਾਂ"
msgid "Server closed the connection."
msgstr "ਸਰਵਰ ਕੁਨੈਕਸ਼ਨ ਬੰਦ ਕੀਤਾ ਗਿਆ ਹੈ।"
@@ -6111,7 +5966,7 @@ msgid "AIM Protocol Plugin"
msgstr "AIM ਪਰੋਟੋਕਾਲ ਪਲੱਗਇਨ"
msgid "ICQ UIN..."
-msgstr ""
+msgstr "ICQ UIN..."
#. *< type
#. *< ui_requirement
@@ -6209,10 +6064,10 @@ msgid "In local permit/deny"
msgstr "ਲੋਕਲ ਇਜ਼ਾਜਤ/ਪਾਬੰਦੀ"
msgid "Warning level too high (sender)"
-msgstr ""
+msgstr "ਚੇਤਾਵਨੀ ਲੈਵਲ ਬਹੁਤ ਵੱਧ ਹੈ (ਭੇਜਣ ਵਾਲਾ)"
msgid "Warning level too high (receiver)"
-msgstr ""
+msgstr "ਚੇਤਾਵਨੀ ਲੈਵਲ ਬਹੁਤ ਵੱਧ ਹੈ (ਲੈਣ ਵਾਲਾ)"
msgid "User temporarily unavailable"
msgstr "ਯੂਜ਼ਰ ਆਰਜ਼ੀ ਤੌਰ ਤੇ ਉਪਲੱਬਧ ਨਹੀਂ"
@@ -6314,27 +6169,21 @@ msgstr "ਸਿੱਧੀ ਵੀਡਿਓ"
msgid "Camera"
msgstr "ਕੈਮਰਾ"
-#, fuzzy
msgid "Screen Sharing"
-msgstr "ਸਕਰੀਨ ਨਾਂ"
+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 "ਅਦਿੱਖ"
@@ -6363,9 +6212,8 @@ msgstr ""
"BOS ਸਰਵਰ ਨਾਲ ਜੁੜਨ ਨਹੀਂ ਸਕਿਆ:\n"
"%s"
-#, fuzzy
msgid "Username sent"
-msgstr "ਕੋਈ ਯੂਜ਼ਰ-ਨਾਂ ਸੈੱਟ"
+msgstr "ਯੂਜ਼ਰ ਨਾਂ ਭੇਜਿਆ"
msgid "Connection established, cookie sent"
msgstr "ਕੁਨੈਕਸ਼ਨ ਬਣ ਗਿਆ ਹੈ, ਕੂਕੀ ਭੇਜਿਆ ਗਿਆ"
@@ -6374,21 +6222,20 @@ msgstr "ਕੁਨੈਕਸ਼ਨ ਬਣ ਗਿਆ ਹੈ, ਕੂਕੀ ਭੇਜ
msgid "Finalizing connection"
msgstr "ਕੁਨੈਕਸ਼ਨ ਤਿਆਰ"
-#, fuzzy, c-format
+#, c-format
msgid ""
"Unable to login: Could not sign on as %s because the username is invalid. "
"Usernames must be a valid email address, or start with a letter and contain "
"only letters, numbers and spaces, or contain only numbers."
msgstr ""
-"ਲਾਗਇਨ ਕਰਨ ਲਈ ਅਸਮਰੱਥ: %s ਵਾਂਗ ਲਾਗਇਨ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ, ਕਿਉਂਕਿ ਸਕਰੀਨ-ਨਾਂ ਗਲਤ ਹੈ। "
-"ਸਕਰੀਨ ਨਾਂ ਇੱਕ ਵੈਧ ਈਮੇਲ ਐਡਰੈੱਸ ਚਾਹੀਦਾ ਹੈ, ਜਾਂ ਇੱਕ ਅੱਖਰ ਨਾਲ ਸ਼ੁਰੂ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ ਕੇਵਲ "
+"ਲਾਗਇਨ ਕਰਨ ਲਈ ਅਸਮਰੱਥ: %s ਵਾਂਗ ਲਾਗਇਨ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ, ਕਿਉਂਕਿ ਯੂਜ਼ਰ-ਨਾਂ ਗਲਤ ਹੈ। "
+"ਯੂਜ਼ਰ ਨਾਂ ਇੱਕ ਵੈਧ ਈਮੇਲ ਐਡਰੈੱਸ ਚਾਹੀਦਾ ਹੈ, ਜਾਂ ਇੱਕ ਅੱਖਰ ਨਾਲ ਸ਼ੁਰੂ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ ਕੇਵਲ "
"ਅੱਖਰ, ਨੰਬਰ, ਖਾਲੀ ਥਾਂ ਜਾਂ ਕੁਝ ਨੰਬਰ ਹੀ ਹੋ ਸਕਦੇ ਹਨ।"
#. Unregistered screen name
#. uid is not exist
-#, fuzzy
msgid "Invalid username."
-msgstr "ਗਲਤ ਨਾਂ"
+msgstr "ਗਲਤ ਯੂਜ਼ਰ-ਨਾਂ ਹੈ।"
msgid "Incorrect password."
msgstr "ਗਲਤ ਪਾਸਵਰਡ ਹੈ।"
@@ -6436,12 +6283,8 @@ 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 ਵੇਖੋ।"
+msgid "You may be disconnected shortly. If so, check %s for updates."
+msgstr "ਤੁਹਾਡਾ ਕੁਨੈਕਸ਼ਨ ਛੇਤੀ ਹੀ ਬੰਦ ਹੋ ਸਕਦਾ ਹੈ। ਇਸਕਰਕੇ ਅੱਪਡੇਟ ਲਈ %s ਵੇਖੋ।"
msgid "Unable to get a valid AIM login hash."
msgstr "ਇੱਕ ਠੀਕ AIM ਲਾਗਇਨ ਹੈਂਸ਼ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਅਸਫ਼ਲ।"
@@ -6553,27 +6396,22 @@ msgstr[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 ਵਲੋਂ ਨੂੰ ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਕਿ ਦਰ ਸੀਮਾ ਹੱਦ ਟੱਪ ਗਈ ਹੈ।"
-#, fuzzy, c-format
-msgid ""
-"You missed %hu message from %s because his/her warning level is too high."
-msgid_plural ""
-"You missed %hu messages from %s because his/her warning level is too high."
-msgstr[0] "ਤੁਸੀਂ %hu ਸੁਨੇਹਾ %s ਵਲੋਂ ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਕਿ ਉਹ ਬੁਰਾ ਹੈ।"
-msgstr[1] "ਤੁਸੀਂ %hu ਸੁਨੇਹਿਆਂ %s ਵਲੋਂ ਨੂੰ ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਕਿ ਉਹ ਬੁਰਾ ਹੈ।"
+#, c-format
+msgid "You missed %hu message from %s because his/her warning level is too high."
+msgid_plural "You missed %hu messages from %s because his/her warning level is too high."
+msgstr[0] "ਤੁਸੀਂ %hu ਸੁਨੇਹਾ %s ਵਲੋਂ ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਂਕਿ ਉਸ ਦਾ ਚੇਤਾਵਨੀ ਲੈਵਲ ਵੱਧ ਹੈ।"
+msgstr[1] "ਤੁਸੀਂ %hu ਸੁਨੇਹਿਆਂ %s ਵਲੋਂ ਨੂੰ ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਂਕਿ ਉਸ ਦਾ ਚੇਤਾਵਨੀ ਲੈਵਲ ਵੱਧ ਹੈ।"
-#, fuzzy, c-format
+#, c-format
msgid "You missed %hu message from %s because your warning level is too high."
-msgid_plural ""
-"You missed %hu messages from %s because your warning level is too high."
-msgstr[0] "ਤੁਸੀਂ %hu ਸੁਨੇਹਾ %s ਵਲੋਂ ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਕਿ ਤੁਸੀਂ ਬੁਰੇ ਹੋ।"
-msgstr[1] "ਤੁਸੀਂ %hu ਸੁਨੇਹਿਆਂ %s ਵਲੋਂ ਨੂੰ ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਕਿ ਤੁਸੀਂ ਬੁਰੇ ਹੋ।"
+msgid_plural "You missed %hu messages from %s because your warning level is too high."
+msgstr[0] "ਤੁਸੀਂ %hu ਸੁਨੇਹਾ %s ਵਲੋਂ ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਂਕਿ ਤੁਹਾਡਾ ਚੇਤਾਵਨੀ ਲੈਵਲ ਵੱਧ ਹੈ।"
+msgstr[1] "ਤੁਸੀਂ %hu ਸੁਨੇਹਿਆਂ %s ਵਲੋਂ ਨੂੰ ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਂਕਿ ਤੁਹਾਡਾ ਚੇਤਾਵਨੀ ਲੈਵਲ ਵੱਧ ਹੈ"
#, c-format
msgid "You missed %hu message from %s for an unknown reason."
@@ -6603,6 +6441,9 @@ msgstr "ਆਨਲਾਇਨ ਹੈ"
msgid "Member Since"
msgstr "ਮੈਂਬਰ ਹੈ"
+msgid "Profile"
+msgstr "ਪ੍ਰੋਫਾਇਲ"
+
msgid "Your AIM connection may be lost."
msgstr "ਤੁਹਾਡਾ AIM ਕੁਨੈਕਸ਼ਨ ਟੁੱਟ ਗਿਆ ਹੋ ਸਕਦਾ ਹੈ।"
@@ -6652,11 +6493,11 @@ msgstr "ਵੈਬ ਸਫਾ"
msgid "Pop-Up Message"
msgstr "ਪੋਪਅੱਪ ਸੁਨੇਹਾ"
-#, fuzzy, c-format
+#, c-format
msgid "The following username is associated with %s"
msgid_plural "The following usernames are associated with %s"
-msgstr[0] "ਹੇਠ ਦਿੱਤੀ ਸਕਰੀਨ ਨਾਂ %s ਨਾਲ ਸਬੰਧਿਤ ਹਨ"
-msgstr[1] "ਹੇਠ ਦਿੱਤੇ ਸਕਰੀਨ ਨਾਂ %s ਨਾਲ ਸਬੰਧਿਤ ਹਨ"
+msgstr[0] "ਹੇਠ ਦਿੱਤਾ ਯੂਜ਼ਰ ਨਾਂ %s ਨਾਲ ਸਬੰਧਿਤ ਹੈ"
+msgstr[1] "ਹੇਠ ਦਿੱਤੇ ਯੂਜ਼ਰ ਨਾਂ %s ਨਾਲ ਸਬੰਧਿਤ ਹਨ"
#, c-format
msgid "No results found for email address %s"
@@ -6669,38 +6510,35 @@ msgstr "ਤੁਸੀਂ %s ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਇੱਕ
msgid "Account Confirmation Requested"
msgstr "ਅਕਾਊਂਟ ਪੁਸ਼ਟੀ ਮੰਗ"
-#, fuzzy, c-format
+#, c-format
msgid ""
"Error 0x%04x: Unable to format username because the requested name differs "
"from the original."
-msgstr ""
-"ਗਲਤੀ 0x%04x: ਸਕਰੀਨ ਨਾਂ ਫਾਰਮਿਟ ਲਈ ਅਸਫਲ ਹੈ, ਕਿਉਕਿ ਦਿੱਤਾ ਸਕਰੀਨ ਨਾਂ ਅਸਲੀ ਨਾਲੋਂ ਵੱਖਰਾ ਹੈ।"
+msgstr "ਗਲਤੀ 0x%04x: ਯੂਜ਼ਰ-ਨਾਂ ਫਾਰਮੈਟ ਲਈ ਅਸਮਰੱਥ ਹੈ, ਕਿਉਕਿ ਦਿੱਤਾ ਯੂਜ਼ਰ ਨਾਂ ਅਸਲੀ ਨਾਲੋਂ ਵੱਖਰਾ ਹੈ।"
-#, fuzzy, c-format
+#, c-format
msgid "Error 0x%04x: Unable to format username because it is invalid."
-msgstr "ਗਲਤੀ 0x%04x: ਸਕਰੀਨ ਨਾਂ ਫਾਰਮੈਟ ਲਈ ਅਸਫਲ ਹੈ, ਕਿਉਂਕਿ ਇਹ ਗਲਤ ਹੈ।"
+msgstr "ਗਲਤੀ 0x%04x: ਯੂਜ਼ਰ-ਨਾਂ ਫਾਰਮੈਟ ਲਈ ਅਸਫਲ ਹੈ, ਕਿਉਂਕਿ ਇਹ ਗਲਤ ਹੈ।"
-#, fuzzy, c-format
+#, c-format
msgid ""
"Error 0x%04x: Unable to format username because the requested name is too "
"long."
-msgstr "ਗਲਤੀ 0x%04x: ਸਕਰੀਨ ਨਾਂ ਫਾਰਮਿਟ ਲਈ ਅਸਫਲ ਹੈ, ਕਿਉਕਿ ਦਿੱਤਾ ਸਕਰੀਨ ਨਾਂ ਬਹੁਤ ਵੱਡਾ ਹੈ।"
+msgstr "ਗਲਤੀ 0x%04x: ਯੂਜ਼ਰ-ਨਾਂ ਫਾਰਮੈਟ ਲਈ ਅਸਫਲ ਹੈ, ਕਿਉਕਿ ਦਿੱਤਾ ਯੂਜ਼ਰ-ਨਾਂ ਬਹੁਤ ਵੱਡਾ ਹੈ।"
-#, fuzzy, c-format
+#, c-format
msgid ""
"Error 0x%04x: Unable to change email address because there is already a "
"request pending for this username."
msgstr ""
-"ਗਲਤੀ 0x%04x: ਈਮੇਲ ਐਡਰੈੱਸ ਤਬਦੀਲ ਕਰਨ ਲਈ ਅਸਫਲ ਹੈ, ਕਿਉਕਿ ਦਿੱਤਾ ਸਿਰਨਾਵੇਂ ਲਈ ਪਹਿਲਾਂ ਹੀ ਇੱਕ "
+"ਗਲਤੀ 0x%04x: ਈਮੇਲ ਐਡਰੈੱਸ ਬਦਲਣ ਲਈ ਅਸਫਲ ਹੈ, ਕਿਉਕਿ ਇਸ ਯੂਜ਼ਰ-ਨਾਂ ਲਈ ਪਹਿਲਾਂ ਹੀ ਇੱਕ "
"ਬੇਨਤੀ ਬਕਾਇਆ ਪਈ ਹੈ।"
-#, fuzzy, c-format
+#, c-format
msgid ""
"Error 0x%04x: Unable to change email address because the given address has "
"too many usernames associated with it."
-msgstr ""
-"ਗਲਤੀ 0x%04x: ਈਮੇਲ ਐਡਰੈੱਸ ਤਬਦੀਲ ਕਰਨ ਲਈ ਅਸਫਲ ਹੈ, ਕਿਉਕਿ ਦਿੱਤੇ ਐਡਰੈੱਸ ਨਾਲ ਬਹੁਤ ਸਾਰੇ ਸਕਰੀਨ "
-"ਨਾਂ ਸਬੰਧਤ ਹਨ।"
+msgstr "ਗਲਤੀ 0x%04x: ਈਮੇਲ ਐਡਰੈੱਸ ਬਦਲਣ ਲਈ ਅਸਫਲ ਹੈ, ਕਿਉਕਿ ਦਿੱਤੇ ਐਡਰੈੱਸ ਨਾਲ ਬਹੁਤ ਸਾਰੇ ਯੂਜ਼ਰ-ਨਾਂ ਸਬੰਧਤ ਹਨ।"
#, c-format
msgid ""
@@ -6713,7 +6551,7 @@ msgid "Error 0x%04x: Unknown error."
msgstr "ਗਲਤੀ 0x%04x: ਅਣਜਾਣੀ ਗਲਤੀ ਹੈ।"
msgid "Error Changing Account Info"
-msgstr "ਅਕਾਊਂਟ ਜਾਣਕਾਰੀ ਤਬਦੀਲ ਕਰਨ ਲਈ ਗਲਤੀ"
+msgstr "ਅਕਾਊਂਟ ਜਾਣਕਾਰੀ ਬਦਲਣ ਦੌਰਾਨ ਗਲਤੀ"
#, c-format
msgid "The email address for %s is %s"
@@ -6722,8 +6560,7 @@ 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."
@@ -6738,7 +6575,7 @@ msgstr ""
"ਤੁਹਾਡਾ ਪਰੋਫਾਇਲ ਅਣ-ਸੈੱਟ ਹੀ ਰਹੇਗਾ, ਜਦੋਂ ਤੁਸੀਂ ਪੂਰੀ ਤਰ੍ਹਾਂ ਕੁਨੈਕਟ ਹੋ ਜਾਵੋ ਤਾਂ ਫੇਰ ਸੈਟਿੰਗ ਕਰਨ ਦੀ "
"ਟਰਾਈ ਕਰਨੀ।"
-#, fuzzy, c-format
+#, c-format
msgid ""
"The maximum profile length of %d byte has been exceeded. It has been "
"truncated for you."
@@ -6746,51 +6583,43 @@ msgid_plural ""
"The maximum profile length of %d bytes has been exceeded. It has been "
"truncated for you."
msgstr[0] ""
-"ਪ੍ਰੋਫਾਇਲ ਦੀ ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟ ਤੋਂ ਵੱਧ ਗਈ ਹੈ। ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) ਦਿੱਤਾ "
-"ਹੈ।ਪ੍ਰੋਫਾਇਲ ਦੀ ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟਾਂ ਤੋਂ ਵੱਧ ਗਈ ਹੈ। ਗੇਮ ਨੇ ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) "
-"ਦਿੱਤਾ ਹੈ।"
+"ਪਰੋਫਾਇਲ ਦੀ ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟ ਤੋਂ ਵੱਧ ਗਈ ਹੈ। ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) ਦਿੱਤਾ "
+"ਹੈ।"
msgstr[1] ""
-"ਪ੍ਰੋਫਾਇਲ ਦੀ ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟ ਤੋਂ ਵੱਧ ਗਈ ਹੈ। ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) ਦਿੱਤਾ "
-"ਹੈ।ਪ੍ਰੋਫਾਇਲ ਦੀ ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟਾਂ ਤੋਂ ਵੱਧ ਗਈ ਹੈ। ਗੇਮ ਨੇ ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) "
+"ਪਰੋਫਾਇਲ ਦੀ ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟਾਂ ਤੋਂ ਵੱਧ ਗਈ ਹੈ।ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) "
"ਦਿੱਤਾ ਹੈ।"
msgid "Profile too long."
-msgstr "ਪ੍ਰੋਫਾਇਲ ਬਹੁਤ ਲੰਮਾ ਹੈ।"
+msgstr "ਪਰੋਫਾਇਲ ਬਹੁਤ ਲੰਮਾ ਹੈ।"
-#, fuzzy, c-format
+#, c-format
msgid ""
"The maximum away message length of %d byte has been exceeded. It has been "
"truncated for you."
msgid_plural ""
"The maximum away message length of %d bytes has been exceeded. It has been "
"truncated for you."
-msgstr[0] ""
-"ਸੁਨੇਹੇ ਦੀ ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟ ਤੋਂ ਵੱਧ ਗਈ ਹੈ। ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) ਦਿੱਤਾ ਹੈ।ਸੁਨੇਹੇ ਦੀ "
-"ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟਾਂ ਤੋਂ ਵੱਧ ਗਈ ਹੈ। ਗੇਮ ਨੇ ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) ਦਿੱਤਾ ਹੈ।"
-msgstr[1] ""
-"ਸੁਨੇਹੇ ਦੀ ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟ ਤੋਂ ਵੱਧ ਗਈ ਹੈ। ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) ਦਿੱਤਾ ਹੈ।ਸੁਨੇਹੇ ਦੀ "
-"ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟਾਂ ਤੋਂ ਵੱਧ ਗਈ ਹੈ। ਗੇਮ ਨੇ ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) ਦਿੱਤਾ ਹੈ।"
+msgstr[0] "ਸੁਨੇਹੇ ਦੀ ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟ ਤੋਂ ਵੱਧ ਗਈ ਹੈ। ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) ਦਿੱਤਾ ਹੈ।"
+msgstr[1] "ਸੁਨੇਹੇ ਦੀ ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟਾਂ ਤੋਂ ਵੱਧ ਗਈ ਹੈ। ਗੇਮ ਨੇ ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) ਦਿੱਤਾ ਹੈ।"
msgid "Away message too long."
msgstr "ਦੂਰ ਸੁਨੇਹਾ ਬਹੁਤ ਲੰਮਾ ਹੈ।"
-#, fuzzy, c-format
+#, c-format
msgid ""
"Could not add the buddy %s because the username is invalid. Usernames must "
"be a valid email address, or start with a letter and contain only letters, "
"numbers and spaces, or contain only numbers."
msgstr ""
-"ਬੱਡੀ %s ਸ਼ਾਮਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ, ਕਿਉਂਕਿ ਸਕਰੀਨ ਨਾਂ ਗਲਤ ਹੈ। ਸਕਰੀਨ ਨਾਂ ਇੱਕ ਵੈਧ ਈਮੇਲ ਐਡਰੈੱਸ "
+"ਬੱਡੀ %s ਸ਼ਾਮਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ, ਕਿਉਂਕਿ ਯੂਜ਼ਰ-ਨਾਂ ਗਲਤ ਹੈ। ਯੂਜ਼ਰ-ਨਾਂ ਇੱਕ ਵੈਧ ਈਮੇਲ ਐਡਰੈੱਸ "
"ਚਾਹੀਦਾ ਹੈ, ਜਾਂ ਇੱਕ ਅੱਖਰ ਨਾਲ ਸ਼ੁਰੂ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ ਕੇਵਲ ਅੱਖਰ, ਨੰਬਰ, ਖਾਲੀ ਥਾਂ ਜਾਂ ਕੁਝ "
"ਨੰਬਰ ਹੀ ਹੋ ਸਕਦੇ ਹਨ।"
-#, fuzzy
msgid "Unable to Add"
-msgstr "ਸ਼ਾਮਿਲ ਕਰਨ ਲਈ ਅਸਮਰੱਥ"
+msgstr "ਸ਼ਾਮਲ ਕਰਨ ਲਈ ਅਸਮਰੱਥ"
-#, fuzzy
msgid "Unable to Retrieve Buddy List"
-msgstr "ਬੱਡੀ ਲਿਸਟ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਅਸਫਲ"
+msgstr "ਬੱਡੀ ਲਿਸਟ ਲੈਣ ਲਈ ਅਸਮਰੱਥ"
msgid ""
"The AIM servers were temporarily unable to send your buddy list. Your buddy "
@@ -6817,7 +6646,7 @@ msgstr "(ਨਾਂ ਨਹੀਂ)"
msgid "Could not add the buddy %s for an unknown reason."
msgstr "ਅਣਜਾਣੇ ਕਾਰਨ ਕਰਨੇ ਬੱਡੀ %s ਨੂੰ ਸ਼ਾਮਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।"
-#, fuzzy, c-format
+#, c-format
msgid ""
"The user %s has given you permission to add him or her to your buddy list. "
"Do you want to add this user?"
@@ -6831,10 +6660,10 @@ msgstr "ਪ੍ਰਮਾਣਿਕਤਾ ਦਿੱਤੀ"
#. Granted
#, c-format
msgid "The user %s has granted your request to add them to your buddy list."
-msgstr "ਯੂਜ਼ਰ %s ਨੇ ਤੁਹਾਨੂੰ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਿਲ ਕਰਨ ਦੀ ਮੰਗ ਨੂੰ ਸਵੀਕਾਰ ਕਰ ਲਿਆ ਹੈ।"
+msgstr "ਯੂਜ਼ਰ %s ਨੇ ਤੁਹਾਨੂੰ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਿਲ ਕਰਨ ਦੀ ਮੰਗ ਮੰਨ ਲਈ ਹੈ।"
msgid "Authorization Granted"
-msgstr "ਪ੍ਰਮਾਣਕਿਤਾ ਸਵੀਕਾਰ"
+msgstr "ਆਗਿਆ ਦਿੱਤੀ"
#. Denied
#, c-format
@@ -6843,7 +6672,7 @@ msgid ""
"following reason:\n"
"%s"
msgstr ""
-"ਯੂਜ਼ਰ %s ਨੇ ਤੁਹਾਨੂੰ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਿਲ ਕਰਨ ਦੀ ਬੇਨਤੀ ਨੂੰ ਇਸ ਕਰਕੇ ਠੁਕਰਾ ਦਿੱਤਾ ਹੈ:\n"
+"ਯੂਜ਼ਰ %s ਨੇ ਤੁਹਾਨੂੰ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਿਲ ਕਰਨ ਦੀ ਬੇਨਤੀ ਹੇਠ ਦਿੱਤੇ ਕਾਰਨ ਕਰਕੇ ਠੁਕਰਾ ਦਿੱਤੀ ਹੈ:\n"
"%s"
msgid "Authorization Denied"
@@ -6882,6 +6711,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 "ਬੱਡੀ ਟਿੱਪਣੀ ਸੋਧ"
@@ -6901,23 +6731,22 @@ msgid "Web aware (enabling this will cause you to receive SPAM!)"
msgstr "ਵੈੱਬ ਉੱਤੇ ਉਪਲੱਬਧ (ਇਹ ਯੋਗ ਕਰਨ ਨਾਲ ਤੁਹਾਨੂੰ ਸਪਮ (SPAM) ਆਉਣ ਦਾ ਖਤਰਾ!)"
msgid "ICQ Privacy Options"
-msgstr "ICQ ਰਹੱਸ ਚੋਣਾਂ"
+msgstr "ICQ ਪਰਾਈਵੇਸੀ ਚੋਣਾਂ"
msgid "The new formatting is invalid."
-msgstr "ਨਵਾਂ ਫਾਰਮਿਟ ਗਲਤ ਹੈ।"
+msgstr "ਨਵਾਂ ਫਾਰਮੈਟ ਗਲਤ ਹੈ।"
-#, fuzzy
msgid "Username formatting can change only capitalization and whitespace."
-msgstr "ਸਕਰੀਨ ਨਾਂ ਫਾਰਮਿਟ ਵਿੱਚ ਵੱਡੇ ਅੱਖਰ ਅਤੇ ਖਾਲੀ ਥਾਂ ਹੀ ਤਬਦੀਲ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ।"
+msgstr "ਯੂਜ਼ਰ-ਨਾਂ ਫਾਰਮੈਟ ਵਿੱਚ ਵੱਡੇ ਅੱਖਰ ਅਤੇ ਖਾਲੀ ਥਾਂ ਹੀ ਬਦਲਿਆ ਜਾ ਸਕਦਾ ਹੈ।"
msgid "Change Address To:"
-msgstr "ਐਡਰੈੱਸ ਤਬਦੀਲ:"
+msgstr "ਐਡਰੈੱਸ ਬਦਲੋ:"
msgid "<i>you are not waiting for authorization</i>"
msgstr "<i>ਤੁਸੀਂ ਪ੍ਰਮਾਣਿਕਤਾ ਦੀ ਉਡੀਕ ਨਹੀਂ ਕਰ ਰਹੇ ਹੋ</i>"
msgid "You are awaiting authorization from the following buddies"
-msgstr "ਤੁਸੀਂ ਇਹਨਾਂ ਬੱਡੀ ਵਲੋਂ ਪ੍ਰਮਾਣਿਕਤਾ ਦੀ ਉਡੀਕ ਕਰ ਰਹੇ ਹੋ"
+msgstr "ਤੁਸੀਂ ਇਹਨਾਂ ਬੱਡੀਆਂ ਵਲੋਂ ਪ੍ਰਮਾਣਿਕਤਾ ਦੀ ਉਡੀਕ ਕਰ ਰਹੇ ਹੋ"
msgid ""
"You can re-request authorization from these buddies by right-clicking on "
@@ -6938,21 +6767,18 @@ msgstr "ਬੱਡੀ ਖੋਜਣ ਲਈ ਈਮੇਲ ਐਡਰੈੱਸ ਦਿ
msgid "_Search"
msgstr "ਖੋਜ(_S)"
-#, fuzzy
msgid "Set User Info (web)..."
-msgstr "ਯੂਜ਼ਰ ਜਾਣਕਾਰੀ ਦਿਓ (URL)..."
+msgstr "ਯੂਜ਼ਰ ਜਾਣਕਾਰੀ ਦਿਓ (ਵੈੱਬ)..."
-#, fuzzy
msgid "Change Password (web)"
-msgstr "ਪਾਸਵਰਡ ਤਬਦੀਲ (URL)"
+msgstr "ਪਾਸਵਰਡ ਬਦਲੋ (ਵੈੱਬ)"
-#, fuzzy
msgid "Configure IM Forwarding (web)"
-msgstr "IM ਫਾਰਵਿਡਿੰਗ (URL) ਸੰਰਚਨਾ"
+msgstr "IM ਫਾਰਵਿਡਿੰਗ ਸੰਰਚਨਾ (ਵੈੱਬ)"
#. ICQ actions
msgid "Set Privacy Options..."
-msgstr "ਰਹੱਸ ਚੋਣਾਂ ਦਿਓ..."
+msgstr "ਪਰਾਈਵੇਸੀ ਚੋਣਾਂ ਦਿਓ..."
#. AIM actions
msgid "Confirm Account"
@@ -6973,17 +6799,16 @@ msgstr "ਈ-ਮੇਲ ਰਾਹੀਂ ਬੱਡੀ ਖੋਜ..."
msgid "Search for Buddy by Information"
msgstr "ਜਾਣਕਾਰੀ ਰਾਹੀਂ ਬੱਡੀ ਖੋਜ"
-#, fuzzy
msgid ""
"Always use AIM/ICQ proxy server for\n"
"file transfers and direct IM (slower,\n"
"but does not reveal your IP address)"
msgstr ""
-"ਫਾਇਲ ਟਰਾਂਸਫਰ ਲਈ ICQ ਪਰਾਕਸੀ ਸਰਵਰ ਹਮੇਸ਼ਾਂ ਵਰਤੋਂ\n"
-"(ਹੌਲੀ ਹੈ, ਪਰ ਤੁਹਾਡਾ IP ਐਡਰੈੱਸ ਵੇਖਾਉਦਾ ਨਹੀਂ ਹੈ)"
+"ਫਾਇਲ ਟਰਾਂਸਫਰ ਅਤੇ ਸਿੱਧਾ IM ਲਈ ICQ ਪਰਾਕਸੀ ਸਰਵਰ\n"
+"ਹਮੇਸ਼ਾਂ ਵਰਤੋਂ ਹੌਲੀ ਹੈ, ਪਰ ਤੁਹਾਡਾ IP ਐਡਰੈੱਸ ਵੇਖਾਉਦਾ ਨਹੀਂ ਹੈ)"
msgid "Allow multiple simultaneous logins"
-msgstr ""
+msgstr "ਇੱਕੋ ਵਾਰ ਕਈ ਲਾਗਇਨ ਮਨਜ਼ੂਰ"
#, c-format
msgid "Asking %s to connect to us at %s:%hu for Direct IM."
@@ -6993,7 +6818,6 @@ msgstr "%s ਨੂੰ ਸਾਨੂੰ %s:%hu ਉੱਤੇ ਸਿੱਧੀ IM ਲ
msgid "Attempting to connect to %s:%hu."
msgstr "%s ਨਾਲ ਜੁੜਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਜਾਰੀ: %hu"
-#, c-format
msgid "Attempting to connect via proxy server."
msgstr "ਪਰਾਕਸੀ ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਟ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼।"
@@ -7084,16 +6908,14 @@ msgstr "ਸੂਰ"
msgid "Other"
msgstr "ਹੋਰ"
-#, fuzzy
msgid "Visible"
-msgstr "ਅਦਿੱਖ"
+msgstr "ਦਿੱਖ"
-msgid "Firend Only"
-msgstr ""
+msgid "Friend Only"
+msgstr "ਕੇਵਲ ਦੋਸਤ ਹੀ"
-#, fuzzy
msgid "Private"
-msgstr "ਰਹੱਸ"
+msgstr "ਪ੍ਰਾਈਵੇਟ"
msgid "QQ Number"
msgstr "QQ ਨੰਬਰ"
@@ -7110,9 +6932,8 @@ msgstr "ਜ਼ਿਪ ਕੋਡ"
msgid "Phone Number"
msgstr "ਫੋਨ ਨੰਬਰ"
-#, fuzzy
msgid "Authorize adding"
-msgstr "ਕੀ ਬੱਡੀ ਮਨਜ਼ੂਰ ਹੈ?"
+msgstr "ਪਰਮਾਣਿਕਤਾ ਸ਼ਾਮਲ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ"
msgid "Cellphone Number"
msgstr "ਸੈਲਫੋਨ ਨੰਬਰ"
@@ -7120,130 +6941,106 @@ msgstr "ਸੈਲਫੋਨ ਨੰਬਰ"
msgid "Personal Introduction"
msgstr "ਨਿੱਜੀ ਜਾਣ ਪਛਾਣ"
-#, fuzzy
msgid "City/Area"
-msgstr "ਸ਼ਹਿਰ"
+msgstr "ਸ਼ਹਿਰ/ਖੇਤਰ"
-#, fuzzy
msgid "Publish Mobile"
-msgstr "ਨਿੱਜੀ ਮੋਬਾਇਲ"
+msgstr "ਮੋਬਾਇਲ ਪਬਲਿਸ਼"
-#, fuzzy
msgid "Publish Contact"
-msgstr "ਉਪ ਨਾਂ ਸੰਪਰਕ"
+msgstr "ਸੰਪਰਕ ਪਬਲਿਸ਼"
msgid "College"
msgstr "ਕਾਲਜ"
-#, fuzzy
msgid "Horoscope"
-msgstr "ਜੋਤਿਸ਼ ਨਿਸ਼ਾਨ"
+msgstr "ਜੋਤਿਸ਼"
-#, fuzzy
msgid "Zodiac"
-msgstr "ਰਾਸ਼ੀ ਨਿਸ਼ਾਨ"
+msgstr "ਰਾਸ਼ੀ"
-#, fuzzy
msgid "Blood"
-msgstr "ਪਾਬੰਦੀ"
+msgstr "ਖੂਨ"
-#, fuzzy
msgid "True"
-msgstr "ਟੋਰਅਸ"
+msgstr "ਸਹੀਂ"
-#, fuzzy
msgid "False"
-msgstr "ਅਸਫ਼ਲ"
+msgstr "ਗਲਤ"
-#, fuzzy
msgid "Modify Contact"
-msgstr "ਅਕਾਊਂਟ ਸੋਧ"
+msgstr "ਸੰਪਰਕ ਸੋਧ"
-#, fuzzy
msgid "Modify Address"
-msgstr "ਘਰ ਐਡਰੈੱਸ"
+msgstr "ਐਡਰੈੱਸ ਸੋਧ"
-#, fuzzy
msgid "Modify Extended Information"
-msgstr "ਮੇਰੀ ਜਾਣਕਾਰੀ ਸੋਧੋ"
+msgstr "ਵਾਧੂ ਜਾਣਕਾਰੀ ਸੋਧ"
-#, fuzzy
msgid "Modify Information"
-msgstr "ਮੇਰੀ ਜਾਣਕਾਰੀ ਸੋਧੋ"
+msgstr "ਜਾਣਕਾਰੀ ਸੋਧ"
-#, fuzzy
msgid "Update"
-msgstr "ਆਖਰੀ ਅੱਪਡੇਟ"
+msgstr "ਅੱਪਡੇਟ"
-#, fuzzy
msgid "Could not change buddy information."
-msgstr "ਬੱਡੀ ਜਾਣਕਾਰੀ ਦਿਓ ਜੀ।"
+msgstr "ਬੱਡੀ ਜਾਣਕਾਰੀ ਬਦਲੀ ਨਹੀਂ ਜਾ ਸਕੀ"
#, c-format
-msgid "%d needs Q&A"
-msgstr ""
+msgid "%u requires verification"
+msgstr "%u ਲਈ ਪਰਮਾਣਿਕਤਾ ਦੀ ਲੋੜ"
-#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "ਬੱਡੀ ਸ਼ਾਮਿਲ"
+msgid "Add buddy question"
+msgstr "ਬੱਡੀ ਸਵਾਲ ਸ਼ਾਮਲ"
-#, fuzzy
-msgid "Input answer here"
-msgstr "ਇੰਪੁੱਟ ਮੰਗ ਇੱਥੇ"
+msgid "Enter answer here"
+msgstr "ਇੱਥੇ ਜਵਾਬ ਦਿਓ"
msgid "Send"
msgstr "ਭੇਜੋ"
-#, fuzzy
msgid "Invalid answer."
-msgstr "ਗਲਤ ਨਾਂ"
+msgstr "ਗਲਤ ਜਵਾਬ ਹੈ।"
msgid "Authorization denied message:"
msgstr "ਪ੍ਰਮਾਣਿਕਤਾ ਪਾਬੰਦੀ ਸੁਨੇਹਾ:"
-#, fuzzy
-msgid "Sorry, You are not my style."
-msgstr "ਅਫਸੋਸ, ਤੁਸੀਂ ਮੇਰੀ ਟਾਈਪ ਦੇ ਨਹੀਂ..."
+msgid "Sorry, you're not my style."
+msgstr "ਅਫਸੋਸ, ਤੁਸੀਂ ਮੇਰੀ ਟਾਈਪ ਦੇ ਨਹੀਂ ਹੋ।"
-#, fuzzy, c-format
-msgid "%d needs authentication"
-msgstr "ਯੂਜ਼ਰ %d ਨੂੰ ਪਰਮਾਣਕਿਤਾ ਦੀ ਲੋੜ ਹੈ"
+#, c-format
+msgid "%u needs authorization"
+msgstr "%u ਨੂੰ ਪਰਮਾਣਕਿਤਾ ਦੀ ਲੋੜ ਹੈ"
-#, fuzzy
msgid "Add buddy authorize"
-msgstr "ਕੀ ਬੱਡੀ ਆਪਣੀ ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਿਲ?"
+msgstr "ਬੱਡੀ ਪਰਮਾਣਕਿਤਾ ਸ਼ਾਮਲ"
-msgid "Input request here"
-msgstr "ਇੰਪੁੱਟ ਮੰਗ ਇੱਥੇ"
+msgid "Enter request here"
+msgstr "ਮੰਗ ਇੱਥੇ ਦਿਓ"
msgid "Would you be my friend?"
msgstr "ਕੀ ਤੁਸੀਂ ਮੇਰੇ ਦੋਸਤ ਬਣਨਾ ਚਾਹੁੰਦੇ ਹੋ?"
-#, fuzzy
msgid "QQ Buddy"
-msgstr "ਬੱਡੀ ਸ਼ਾਮਿਲ"
+msgstr "QQ ਬੱਡੀ"
-#, fuzzy
msgid "Add buddy"
-msgstr "ਬੱਡੀ ਸ਼ਾਮਿਲ"
+msgstr "ਬੱਡੀ ਸ਼ਾਮਲ"
-#, fuzzy
msgid "Invalid QQ Number"
-msgstr "ਗਲਤ QQ ਮੁੱਖ"
+msgstr "ਗਲਤ QQ ਨੰਬਰ"
-#, fuzzy
msgid "Failed sending authorize"
-msgstr "ਮੈਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰੋ ਜੀ!"
+msgstr "ਪਰਮਾਣਕਿਤਾ ਭੇਜਣ ਲਈ ਫੇਲ੍ਹ ਹੈ"
-#, fuzzy, c-format
-msgid "Failed removing buddy %d"
-msgstr "ਬੱਡੀ ਹਟਾਉਣ ਲਈ ਫੇਲ੍ਹ"
+#, c-format
+msgid "Failed removing buddy %u"
+msgstr "ਬੱਡੀ %u ਹਟਾਉਣ ਲਈ ਫੇਲ੍ਹ"
-#, fuzzy, c-format
+#, c-format
msgid "Failed removing me from %d's buddy list"
-msgstr "%s ਨੇ ਤੁਹਾਨੂੰ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ 'ਚੋਂ ਹਟਾ ਦਿੱਤਾ ਹੈ।"
+msgstr "%d ਦੀ ਬੱਡੀ ਲਿਸਟ ਤੋਂ ਮੈਨੂੰ ਹਟਾਉਣ ਲਈ ਫੇਲ੍ਹ"
-#, fuzzy
msgid "No reason given"
msgstr "ਕੋਈ ਕਾਰਨ ਨਹੀਂ ਦਿੱਤਾ ਹੈ।"
@@ -7255,9 +7052,9 @@ msgstr "ਤੁਹਾਨੂੰ %s ਵਲੋਂ ਸ਼ਾਮਲ ਕੀਤਾ ਗ
msgid "Would you like to add him?"
msgstr "ਕੀ ਤੁਸੀਂ ਉਸ ਨੂੰ ਸ਼ਾਮਲ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?"
-#, fuzzy, c-format
+#, c-format
msgid "Rejected by %s"
-msgstr "ਰੱਦ ਕਰੋ"
+msgstr "%s ਵਲੋਂ ਰੱਦ ਕਰੋ"
#, c-format
msgid "Message: %s"
@@ -7272,82 +7069,73 @@ msgstr "ਗਰੁੱਪ ID"
msgid "QQ Qun"
msgstr "QQ Qun"
-#, fuzzy
msgid "Please enter Qun number"
-msgstr "%s ਲਈ ਨਵਾਂ ਨਾਂ ਦਿਓ ਜੀ"
+msgstr "Qun ਨੰਬਰ ਦਿਓ ਜੀ"
-#, fuzzy
msgid "You can only search for permanent Qun\n"
-msgstr "ਤੁਸੀਂ ਕੇਵਲ ਪੱਕੇ QQ ਗਰੁੱਪ ਲਈ ਹੀ ਖੋਜ ਕਰ ਸਕਦੇ ਹੋ\n"
+msgstr "ਤੁਸੀਂ ਕੇਵਲ ਪੱਕੇ Qun ਹੀ ਖੋਜ ਕਰ ਸਕਦੇ ਹੋ\n"
+
+msgid "(Invalid UTF-8 string)"
+msgstr "(ਗਲਤ UTF-8 ਲਾਇਨ)"
-#, fuzzy
msgid "Not member"
-msgstr "ਮੈਂ ਮੈਂਬਰ ਨਹੀਂ ਹਾਂ"
+msgstr "ਮੈਂਬਰ ਨਹੀਂ"
-#, fuzzy
msgid "Member"
-msgstr "ਮੈਂਬਰ ਹੈ"
+msgstr "ਮੈਂਬਰ ਹੋ"
-#, fuzzy
msgid "Requesting"
-msgstr "ਮੰਗ ਡਾਈਲਾਗ"
+msgstr "ਮੰਗ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ"
-#, fuzzy
msgid "Admin"
-msgstr "Adium"
+msgstr "ਐਡਮਿਨ"
-#, fuzzy
msgid "Notice"
-msgstr "ਨੋਟ"
+msgstr "ਨੋਟਿਸ"
-#, fuzzy
msgid "Detail"
-msgstr "ਡਿਫਾਲਟ"
+msgstr "ਵੇਰਵਾ"
msgid "Creator"
msgstr "ਨਿਰਮਾਤਾ"
-#, fuzzy
msgid "About me"
-msgstr "%s ਬਾਰੇ"
+msgstr "ਮੇਰੇ ਬਾਰੇ"
-#, fuzzy
msgid "Category"
-msgstr "ਗੱਲ ਗਲਤੀ"
+msgstr "ਕੈਟਾਗਰੀ"
-#, fuzzy
msgid "The Qun does not allow others to join"
-msgstr "ਇਹ ਗਰੁੱਪ ਹੋਰਾਂ ਨੂੰ ਜੁਆਇੰਨ ਕਰਨ ਲਈ ਮਨਜ਼ੂਰੀ ਨਹੀਂ ਦਿੰਦਾ ਹੈ"
+msgstr "Qun ਹੋਰਾਂ ਨੂੰ ਜੁਆਇੰਨ ਕਰਨ ਲਈ ਮਨਜ਼ੂਰੀ ਨਹੀਂ ਦਿੰਦਾ ਹੈ"
-#, fuzzy
msgid "Join QQ Qun"
-msgstr "ਚੈਟ ਜੁਆਇੰਨ"
+msgstr "QQ Qun ਜੁਆਇੰਨ ਕਰੋ"
+
+msgid "Input request here"
+msgstr "ਇੰਪੁੱਟ ਮੰਗ ਇੱਥੇ"
#, c-format
-msgid "Successfully joined Qun %s (%d)"
-msgstr ""
+msgid "Successfully joined Qun %s (%u)"
+msgstr "Qun %s (%u) ਠੀਕ ਤਰ੍ਹਾਂ ਜੁਆਇੰਨ ਕੀਤਾ ਗਿਆ"
-#, fuzzy
msgid "Successfully joined Qun"
-msgstr "ਤੁਸੀਂ ਕਿਊਨ ਮੈਂਬਰ ਸੋਧਿਆ ਹੈ।"
+msgstr "Qun ਠੀਕ ਤਰ੍ਹਾਂ ਜੁਆਇੰਨ ਕੀਤਾ"
#, c-format
-msgid "Qun %d denied to join"
-msgstr ""
+msgid "Qun %u denied from joining"
+msgstr "ਕੁਆਇੰਨ %u ਨੇ ਜੁਆਇੰਨ ਕਰਵਾਉਣ ਤੇ ਰੋਕ ਲਾਈ"
msgid "QQ Qun Operation"
-msgstr "QQ Qun ਕਾਰਵਾਈ"
+msgstr "QQ Qun ਓਪਰੇਸ਼ਨ"
-#, fuzzy
msgid "Failed:"
-msgstr "ਅਸਫ਼ਲ"
+msgstr "ਅਸਫ਼ਲ:"
-msgid "Join Qun, Unknow Reply"
-msgstr ""
+msgid "Join Qun, Unknown Reply"
+msgstr "Qun ਜੁਆਇੰਨ, ਅਣਜਾਣ ਜਵਾਬ"
-#, fuzzy
msgid "Quit Qun"
-msgstr "QQ Qun"
+msgstr "Qun ਬੰਦ ਕਰੋ"
msgid ""
"Note, if you are the creator, \n"
@@ -7356,194 +7144,180 @@ msgstr ""
"ਨੋਟ, ਜੇ ਤੁਸੀਂ ਬਣਾਉਣ ਵਾਲੇ ਹੋ ਤਾਂ,\n"
"ਇਸ ਓਪਰੇਸ਼ਨ ਨਾਲ ਇਹ ਕਿਊਨ ਵੀ ਹਟਾਇਆ ਜਾਵੇਗਾ।"
-#, fuzzy
-msgid "Sorry, you are not our style ..."
-msgstr "ਅਫਸੋਸ, ਤੁਸੀਂ ਮੇਰੀ ਟਾਈਪ ਦੇ ਨਹੀਂ..."
+msgid "Sorry, you are not our style"
+msgstr "ਅਫਸੋਸ, ਤੁਸੀਂ ਮੇਰੀ ਸਟਾਈਲ ਦੇ ਨਹੀਂ"
-#, fuzzy
-msgid "Successfully changed Qun member"
-msgstr "ਤੁਸੀਂ ਕਿਊਨ ਮੈਂਬਰ ਸੋਧਿਆ ਹੈ।"
+msgid "Successfully changed Qun members"
+msgstr "ਕਿਊਨ ਮੈਂਬਰ ਠੀਕ ਤਰ੍ਹਾਂ ਬਦਲਿਆ"
-#, fuzzy
msgid "Successfully changed Qun information"
-msgstr "ਤੁਸੀਂ ਕਿਊਨ ਜਾਣਕਾਰੀ ਸੋਧੀ ਹੈ"
+msgstr "Qun ਜਾਣਕਾਰੀ ਠੀਕ ਤਰ੍ਹਾਂ ਬਦਲੀ ਗਈ"
msgid "You have successfully created a Qun"
-msgstr "ਤੁਸੀਂ ਇੱਕ ਕਿਊਨ ਬਣਾਇਆ ਹੈ"
+msgstr "ਤੁਸੀਂ ਇੱਕ Qun ਠੀਕ ਤਰ੍ਹਾਂ ਬਣਾਇਆ"
-#, fuzzy
-msgid "Would you like to set detailed information now?"
-msgstr "ਕੀ ਤੁਸੀਂ ਕਿਊਨ ਲਈ ਵੇਰਵਾ ਹੁਣੇ ਸੈੱਟ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?"
+msgid "Would you like to set up detailed information now?"
+msgstr "ਕੀ ਤੁਸੀਂ ਵੇਰਵੇ ਸਮੇਤ ਸੈੱਟਅੱਪ ਜਾਣਕਾਰੀ ਅੱਪਡੇਟ ਕਰਨੀ ਚਾਹੁੰਦੇ ਹੋ?"
msgid "Setup"
msgstr "ਸੈੱਟਅੱਪ"
-#, fuzzy, c-format
-msgid "%d requested to join Qun %d for %s"
-msgstr "ਯੂਜ਼ਰ %d ਨੇ ਗਰੁੱਪ %d ਸ਼ਾਮਲ ਕਰਨ ਵਾਸਤੇ ਮੰਗ ਕੀਤੀ"
+#, c-format
+msgid "%u requested to join Qun %u for %s"
+msgstr "%u ਨੇ Qun %u ਨੂੰ %s ਲਈ ਜੁਆਇੰਨ ਕਰਨ ਦੀ ਮੰਗ ਕੀਤੀ ਹੈ"
-#, fuzzy, c-format
-msgid "%d request to join Qun %d"
-msgstr "ਯੂਜ਼ਰ %d ਨੇ ਗਰੁੱਪ %d ਸ਼ਾਮਲ ਕਰਨ ਵਾਸਤੇ ਮੰਗ ਕੀਤੀ"
+#, c-format
+msgid "%u request to join Qun %u"
+msgstr "%u ਨੇ Qun %u ਜੁਆਇੰਨ ਕਰਨ ਦੀ ਮੰਗ ਕੀਤੀ"
-#, fuzzy, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
-msgstr "ਗੱਲਬਾਤ ਵਿੱਚ ਬੱਡੀ ਆਉਣ ਲਈ ਅਸਫਲ"
+#, c-format
+msgid "Failed to join Qun %u, operated by admin %u"
+msgstr "Qun %u ਜੁਆਇੰਨ ਕਰਨ ਲਈ ਫੇਲ੍ਹ ਹੈ, ਐਡਮਿਨ %u ਵਲੋਂ ਕਾਰਵਾਈ ਕੀਤੀ"
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
-msgstr ""
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
+msgstr "<b>Qun %u ਜੁਆਇੰਨ ਕਰਨ ਨੂੰ ਐਡਮਿਨ %u ਵਲੋਂ %s ਲਈ ਮਨਜ਼ੂਰ ਹੈ।</b>"
-#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
-msgstr "ਬੱਡੀ ਹਟਾਓ"
+#, c-format
+msgid "<b>Removed buddy %u.</b>"
+msgstr "<b>%u ਬੱਡੀ ਹਟਾਓ।</b>"
#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+msgid "<b>New buddy %u joined.</b>"
+msgstr "<b>ਨਵਾਂ ਬੱਡੀ %u ਜੁਆਇੰਨ ਕੀਤਾ।</b>"
#, c-format
msgid "Unknown-%d"
msgstr "ਅਣਜਾਣ-%d"
msgid "Level"
-msgstr "ਪੱਧਰ"
+msgstr "ਲੈਵਲ"
msgid " VIP"
-msgstr ""
+msgstr " VIP"
msgid " TCP"
-msgstr ""
+msgstr " TCP"
-#, fuzzy
msgid " FromMobile"
-msgstr "ਮੋਬਾਇਲ"
+msgstr " ਮੋਬਾਇਲ-ਤੋਂ"
-#, fuzzy
msgid " BindMobile"
-msgstr "ਮੋਬਾਇਲ"
+msgstr " ਬਾਈਡ-ਮੋਬਾਇਲ"
-#, fuzzy
msgid " Video"
-msgstr "ਸਿੱਧੀ ਵੀਡਿਓ"
+msgstr " ਵੀਡਿਓ"
-#, fuzzy
msgid " Zone"
-msgstr "ਕੋਈ ਨਹੀਂ"
+msgstr " ਜ਼ੋਨ"
msgid "Flag"
-msgstr ""
+msgstr "ਫਲੈਗ"
msgid "Ver"
-msgstr ""
+msgstr "Ver"
msgid "Invalid name"
msgstr "ਗਲਤ ਨਾਂ"
-#, fuzzy
msgid "Select icon..."
-msgstr "ਫੋਲਡਰ ਚੁਣੋ..."
+msgstr "ਆਈਕਾਨ ਚੁਣੋ..."
-#, fuzzy, c-format
+#, c-format
msgid "<b>Login time</b>: %d-%d-%d, %d:%d:%d<br>\n"
-msgstr "<b>ਲਾਗਇਨ ਸਮਾਂ</b>: %s<br>\n"
+msgstr "<b>ਲਾਗਇਨ ਸਮਾਂ</b>: %d-%d-%d, %d:%d:%d<br>\n"
-#, fuzzy, c-format
+#, c-format
msgid "<b>Total Online Buddies</b>: %d<br>\n"
-msgstr "<b>ਹੁਣ ਆਫਲਾਇਨ</b>: %d<br>\n"
+msgstr "<b>ਕੁੱਲ ਆਨਲਾਈਨ ਬੱਡੀ</b>: %d<br>\n"
-#, fuzzy, c-format
+#, c-format
msgid "<b>Last Refresh</b>: %d-%d-%d, %d:%d:%d<br>\n"
-msgstr "<b>ਆਖਰੀ ਤਾਜ਼ਾ</b>: %s<br>\n"
+msgstr "<b>ਆਖਰੀ ਤਾਜ਼ਾ</b>: %d-%d-%d, %d:%d:%d<br>\n"
-#, fuzzy, c-format
+#, c-format
msgid "<b>Server</b>: %s<br>\n"
-msgstr "<b>ਸਰਵਰ IP</b>: %s: %d<br>\n"
+msgstr "<b>ਸਰਵਰ</b>: %s<br>\n"
-#, fuzzy, c-format
+#, c-format
msgid "<b>Client Tag</b>: %s<br>\n"
-msgstr "<b>ਲਾਗਇਨ ਸਮਾਂ</b>: %s<br>\n"
+msgstr "<b>ਕਲਾਇਟ ਟੈਗ</b>: %s<br>\n"
#, c-format
msgid "<b>Connection Mode</b>: %s<br>\n"
msgstr "<b>ਕੁਨੈਕਸ਼ਨ ਢੰਗ</b>: %s<br>\n"
-#, fuzzy, c-format
+#, c-format
msgid "<b>My Internet IP</b>: %s:%d<br>\n"
-msgstr "<b>ਕੁਨੈਕਸ਼ਨ ਢੰਗ</b>: %s<br>\n"
+msgstr "<b>ਮੇਰਾ ਇੰਟਰਨੈੱਟ IP</b>: %s:%d<br>\n"
-#, fuzzy, c-format
+#, c-format
msgid "<b>Sent</b>: %lu<br>\n"
-msgstr "<b>ਹੁਣ ਆਫਲਾਇਨ</b>: %d<br>\n"
+msgstr "<b>ਭੇਜੇ</b>: %lu<br>\n"
-#, fuzzy, c-format
+#, c-format
msgid "<b>Resend</b>: %lu<br>\n"
-msgstr "<b>ਆਖਰੀ ਤਾਜ਼ਾ</b>: %s<br>\n"
+msgstr "<b>ਮੁੜ-ਭੇਜੋ</b>: %lu<br>\n"
-#, fuzzy, c-format
+#, c-format
msgid "<b>Lost</b>: %lu<br>\n"
-msgstr "<b>ਆਖਰੀ ਤਾਜ਼ਾ</b>: %s<br>\n"
+msgstr "<b>ਗੁਆਚੇ</b>: %lu<br>\n"
-#, fuzzy, c-format
+#, c-format
msgid "<b>Received</b>: %lu<br>\n"
-msgstr "<b>ਆਖਰੀ ਤਾਜ਼ਾ</b>: %s<br>\n"
+msgstr "<b>ਲਏ</b>: %lu<br>\n"
-#, fuzzy, c-format
+#, c-format
msgid "<b>Received Duplicate</b>: %lu<br>\n"
-msgstr "<b>ਮੇਰਾ ਪਬਲਿਕ IP</b>: %s<br>\n"
+msgstr "<b>ਡੁਪਲੀਕੇਟ ਮਿਲੇ</b>: %lu<br>\n"
-#, fuzzy, c-format
+#, c-format
msgid "<b>Time</b>: %d-%d-%d, %d:%d:%d<br>\n"
-msgstr "<b>ਲਾਗਇਨ ਸਮਾਂ</b>: %s<br>\n"
+msgstr "<b>ਸਮਾਂ</b>: %d-%d-%d, %d:%d:%d<br>\n"
-#, fuzzy, c-format
+#, c-format
msgid "<b>IP</b>: %s<br>\n"
-msgstr "<b>ਸਰਵਰ IP</b>: %s: %d<br>\n"
+msgstr "<b>IP</b>: %s<br>\n"
msgid "Login Information"
msgstr "ਲਾਗਇਨ ਜਾਣਕਾਰੀ"
msgid "<p><b>Original Author</b>:<br>\n"
-msgstr ""
+msgstr "<p><b>ਅਸਲੀ ਲੇਖਕ</b>:<br>\n"
msgid "<p><b>Code Contributors</b>:<br>\n"
-msgstr ""
+msgstr "<p><b>ਕੋਡ ਯੋਗਦਾਨ</b>:<br>\n"
-#, fuzzy
msgid "<p><b>Lovely Patch Writers</b>:<br>\n"
-msgstr "<b>ਆਖਰੀ ਤਾਜ਼ਾ</b>: %s<br>\n"
+msgstr "<p><b>ਪਿਆਰੇ ਪੈਚ ਲੇਖਕ</b>:<br>\n"
-#, fuzzy
msgid "<p><b>Acknowledgement</b>:<br>\n"
-msgstr "<b>ਹੁਣ ਆਫਲਾਇਨ</b>: %d<br>\n"
+msgstr "<p><b>ਰਸੀਦ</b>:<br>\n"
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
-msgstr ""
+msgstr "<p><i>ਅਤੇ ਸਾਰੇ ਮੁੰਡੇ ਪਿਛਲੇ ਕਮਰੇ ਵਿੱਚ ਹਨ...</i><br>\n"
msgid "<i>Feel free to join us!</i> :)"
-msgstr ""
+msgstr "<i>ਸਾਡੇ ਨਾਲ ਹੱਥ ਵਟਾਉਣ ਲਈ ਆ ਜਾਓ!</i> :)"
-#, fuzzy, c-format
-msgid "About OpenQ r%s"
-msgstr "%s ਬਾਰੇ"
+#, c-format
+msgid "About OpenQ %s"
+msgstr "OpenQ %s ਬਾਰੇ"
-#, fuzzy
msgid "Change Icon"
-msgstr "ਆਈਕਾਨ ਸੰਭਾਲੋ"
+msgstr "ਆਈਕਾਨ ਬਦਲੋ"
msgid "Change Password"
-msgstr "ਪਾਸਵਰਡ ਤਬਦੀਲ"
+msgstr "ਪਾਸਵਰਡ ਬਦਲੋ"
-#, fuzzy
msgid "Account Information"
-msgstr "ਲਾਗਇਨ ਜਾਣਕਾਰੀ"
+msgstr "ਅਕਾਊਂਟ ਜਾਣਕਾਰੀ"
msgid "Update all QQ Quns"
-msgstr ""
+msgstr "ਸਭ QQ ਕਉਨ ਅੱਪਡੇਟ ਕਰੋ"
-#, fuzzy
msgid "About OpenQ"
-msgstr "%s ਬਾਰੇ"
+msgstr "OpenQ ਬਾਰੇ"
#. *< type
#. *< ui_requirement
@@ -7555,132 +7329,110 @@ msgstr "%s ਬਾਰੇ"
#. *< version
#. * summary
#. * description
-#, fuzzy
msgid "QQ Protocol Plugin"
-msgstr "QQ ਪਰੋਟੋਕਾਲ\tਪਲੱਗਇਨ"
+msgstr "QQ ਪਰੋਟੋਕਾਲ ਪਲੱਗਇਨ"
-#, fuzzy
msgid "Auto"
-msgstr "ਪਰਮਾ"
+msgstr "ਆਟੋ"
-#, fuzzy
msgid "Select Server"
-msgstr "ਯੂਜ਼ਰ ਚੁਣੋ"
+msgstr "ਸਰਵਰ ਚੁਣੋ"
msgid "QQ2005"
-msgstr ""
+msgstr "QQ2005"
msgid "QQ2007"
-msgstr ""
+msgstr "QQ2007"
msgid "QQ2008"
-msgstr ""
+msgstr "QQ2008"
-#. #endif
-#, fuzzy
msgid "Connect by TCP"
msgstr "TCP ਰਾਹੀਂ ਕੁਨੈਕਟ"
-#, fuzzy
msgid "Show server notice"
-msgstr "ਸਰਵਰ ਪੋਰਟ"
+msgstr "ਸਰਵਰ ਨੋਟਿਸ ਵੇਖੋ"
-#, fuzzy
msgid "Show server news"
-msgstr "ਸਰਵਰ ਐਡਰੈੱਸ"
+msgstr "ਸਰਵਰ ਨਿਊਜ਼ ਵੇਖੋ"
+
+msgid "Show chat room when msg comes"
+msgstr "ਜਦੋਂ msg ਆਵੇ ਤਾਂ ਗੱਲਬਾਤ ਰੂਮ ਵੇਖੋ"
-#, fuzzy
msgid "Keep alive interval (seconds)"
-msgstr "ਚਾਲੂ ਰੱਖਣ ਗਲਤੀ"
+msgstr "ਚਾਲੂ ਅੰਤਰਾਲ ਰੱਖੋ (ਸਕਿੰਟ)"
-#, fuzzy
msgid "Update interval (seconds)"
-msgstr "ਚਾਲੂ ਰੱਖਣ ਗਲਤੀ"
+msgstr "ਅੱਪਡੇਟ ਅੰਤਰਾਲ (ਸਕਿੰਟ)"
-#, fuzzy
-msgid "Can not decrypt server reply"
-msgstr "ਸਰਵਰ ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤ ਨਹੀਂ ਹੋ ਸਕੀ"
-
-#, fuzzy
-msgid "Can not decrypt get server reply"
-msgstr "ਸਰਵਰ ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤ ਨਹੀਂ ਹੋ ਸਕੀ"
+msgid "Cannot decrypt server reply"
+msgstr "ਸਰਵਰ ਜਵਾਬ ਡਿਕ੍ਰਿਪਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"
#, c-format
msgid "Failed requesting token, 0x%02X"
-msgstr ""
+msgstr "ਟੋਕਨ ਮੰਗ ਫੇਲ੍ਹ ਹੋਈ, 0x%02X"
-#, fuzzy, c-format
+#, c-format
msgid "Invalid token len, %d"
-msgstr "ਗਲਤ ਟਾਇਟਲ"
+msgstr "ਗਲਤ ਟੋਕਨ ਲੰਬਾਈ, %d"
#. extend redirect used in QQ2006
msgid "Redirect_EX is not currently supported"
-msgstr ""
+msgstr "Redirect_EX ਹਾਲੇ ਸਹਾਇਕ ਨਹੀਂ ਹੈ।"
#. need activation
#. need activation
#. need activation
-#, fuzzy
msgid "Activation required"
-msgstr "ਰਜਿਸਟਰੇਸ਼ਨ ਲੋੜੀਦੀ ਹੈ"
+msgstr "ਐਕਟੀਵੇਸ਼ਨ ਲੋੜੀਦੀ"
#, c-format
-msgid "Unknow reply code when login (0x%02X)"
-msgstr ""
+msgid "Unknown reply code when logging in (0x%02X)"
+msgstr "ਲਾਗਇਨ ਕਰਨ ਦੌਰਾਨ ਅਣਜਾਣ ਜਵਾਬ ਕੋਡ (0x%02X)"
-msgid "Keep alive error"
-msgstr "ਚਾਲੂ ਰੱਖਣ ਗਲਤੀ"
+msgid "Could not decrypt server reply"
+msgstr "ਸਰਵਰ ਜਵਾਬ ਡਿਕ੍ਰਿਪਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ"
-#, fuzzy
-msgid "Requesting captcha ..."
-msgstr "%s ਦੇ ਧਿਆਨ ਦੀ ਮੰਗ ਕੀਤੀ ਗਈ ਹੈ..."
+msgid "Requesting captcha"
+msgstr "ਕੈਪਟਚਾ ਦੀ ਮੰਗ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ"
-msgid "Checking code of captcha ..."
-msgstr ""
+msgid "Checking captcha"
+msgstr "ਕੈਪਟਚਾ ਚੈੱਕ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"
-msgid "Failed captcha verify"
-msgstr ""
+msgid "Failed captcha verification"
+msgstr "ਕੈਪਟਚਾ ਜਾਂਚ ਲਈ ਫੇਲ੍ਹ"
-#, fuzzy
msgid "Captcha Image"
-msgstr "ਚਿੱਤਰ ਸੰਭਾਲੋ"
+msgstr "ਕੈਪਟਚਾ ਚਿੱਤਰ"
-#, fuzzy
msgid "Enter code"
-msgstr "ਪਾਸਵਰਡ ਦਿਓ"
+msgstr "ਕੋਡ ਦਿਓ"
-msgid "QQ Captcha Verifing"
-msgstr ""
+msgid "QQ Captcha Verification"
+msgstr "QQ ਕੈਪਟਚਾ ਜਾਂਚ"
-#, fuzzy
msgid "Enter the text from the image"
-msgstr "ਗਰੁੱਪ ਦਾ ਨਾਂ ਦਿਓ"
+msgstr "ਚਿੱਤਰ ਤੋਂ ਟੈਕਸਟ ਦਿਓ"
#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
-msgstr ""
+msgid "Unknown reply when checking password (0x%02X)"
+msgstr "ਪਾਸਵਰਡ ਚੈੱਕ ਕਰਨ ਦੌਰਾਨ ਅਣਜਾਣ ਜਵਾਬ (0x%02X)"
#, 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"
#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
-msgstr "ਜੁੜਨ ਤੋਂ ਆਯੋਗ"
+msgstr "ਕੁਨੈਕਟ ਕਰਨ ਲਈ ਅਸਮਰੱਥ ਹੈ।"
msgid "Socket error"
msgstr "ਸਾਕਟ ਗਲਤੀ"
-#, fuzzy, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr ""
-"ਸਰਵਰ ਨਾਲ ਆਖਰੀ ਕੁਨੈਕਸ਼ਨ ਬੰਦ ਕੀਤਾ:\n"
-"%s"
-
msgid "Unable to read from socket"
msgstr "ਸਾਕਟ ਤੋਂ ਤਾਜ਼ਾ ਕਰਨ ਲਈ ਅਸਮਰੱਥ"
@@ -7690,77 +7442,74 @@ msgstr "ਲਿਖਣ ਗਲਤੀ"
msgid "Connection lost"
msgstr "ਕੁਨੈਕਸ਼ਨ ਖਤਮ ਹੋਇਆ"
-#, fuzzy
-msgid "Get server ..."
-msgstr "ਯੂਜ਼ਰ ਜਾਣਕਾਰੀ ਦਿਓ..."
+msgid "Getting server"
+msgstr "ਸਰਵਰ ਜਾਣਕਾਰੀ ਲਈ ਜਾ ਰਹੀ ਹੈ"
-#, fuzzy
-msgid "Request token"
-msgstr "ਬੇਨਤੀ ਪਾਬੰਦੀ"
+msgid "Requesting token"
+msgstr "ਟੋਕਨ ਲਈ ਮੰਗ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ"
msgid "Couldn't resolve host"
msgstr "ਹੋਸਟ ਲੱਭਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ"
-#, fuzzy
msgid "Invalid server or port"
-msgstr "ਗਲਤੀ"
+msgstr "ਗਲਤ ਸਰਵਰ ਜਾਂ ਪੋਰਟ"
-#, fuzzy
-msgid "Connecting server ..."
-msgstr "ਸਰਵਰ ਨਾਲ ਜੋੜੋ"
+msgid "Connecting to server"
+msgstr "ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"
-#, fuzzy
msgid "QQ Error"
-msgstr "QQid ਗਲਤੀ"
-
-msgid "Failed to send IM."
-msgstr "IM ਭੇਜਣ ਲਈ ਫੇਲ੍ਹ।"
+msgstr "QQ ਗਲਤੀ"
-#, fuzzy, c-format
+#, c-format
msgid ""
"Server News:\n"
"%s\n"
"%s\n"
"%s"
-msgstr "ICQ Server Relay"
+msgstr ""
+"ਸਰਵਰ ਨਿਊਜ਼:\n"
+"%s\n"
+"%s\n"
+"%s"
-#, fuzzy, c-format
+#, c-format
+msgid "%s:%s"
+msgstr "%s:%s"
+
+#, c-format
msgid "From %s:"
-msgstr "ਵੱਲੋਂ"
+msgstr "%s ਵੱਲੋਂ:"
-#, fuzzy, c-format
+#, c-format
msgid ""
"Server notice From %s: \n"
"%s"
-msgstr "ਸਰਵਰ ਹਦਾਇਤਾਂ: %s"
-
-msgid "Unknow SERVER CMD"
msgstr ""
+"%s ਵਲੋਂ ਸਰਵਰ ਨੋਟਿਸ: \n"
+" %s"
+
+msgid "Unknown SERVER CMD"
+msgstr "ਅਣਜਾਣ ਸਰਵਰ CMD"
#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
+"%s ਦਾ ਜਵਾਬ ਗਲਤੀ(0x%02X)\n"
+"ਰੂਮ %u, ਜਵਾਬ 0x%02X"
-#, fuzzy
msgid "QQ Qun Command"
-msgstr "ਕਮਾਂਡ"
+msgstr "QQ ਕਿਉਨ ਕਮਾਂਡ"
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr ""
-
-msgid "Can not decrypt login reply"
-msgstr ""
+msgid "Could not decrypt login reply"
+msgstr "ਲਾਗਇਨ ਜਵਾਬ ਡਿਕ੍ਰਿਪਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ"
-#, fuzzy
-msgid "Unknow LOGIN CMD"
-msgstr "ਅਣਜਾਣ ਕਾਰਨ"
+msgid "Unknown LOGIN CMD"
+msgstr "ਅਣਜਾਣ ਲਾਗਇਨ CMD"
-#, fuzzy
-msgid "Unknow CLIENT CMD"
-msgstr "ਅਣਜਾਣ ਕਾਰਨ"
+msgid "Unknown CLIENT CMD"
+msgstr "ਅਣਜਾਣ CLIENT CMD"
#, c-format
msgid "%d has declined the file %s"
@@ -7782,20 +7531,20 @@ msgstr "<b>ਗਰੁੱਪ ਟਾਇਟਲ:</b> %s<br>"
#, c-format
msgid "<b>Notes Group ID:</b> %s<br>"
-msgstr "<b>ਸੂਚਨਾ ਗਰੁੱਪ ID:</b> %s<br>"
+msgstr "<b>ਨੋਟਿਸ ਗਰੁੱਪ ID:</b> %s<br>"
#, c-format
msgid "Info for Group %s"
msgstr "ਗਰੁੱਪ %s ਲਈ ਜਾਣਕਾਰੀ"
msgid "Notes Address Book Information"
-msgstr "ਸੂਚਨਾ ਐਡਰੈੱਸ ਕਿਤਾਬ ਜਾਣਕਾਰੀ"
+msgstr "ਨੋਟਿਸ ਐਡਰੈੱਸ ਬੁੱਕ ਜਾਣਕਾਰੀ"
msgid "Invite Group to Conference..."
msgstr "ਗਰੁੱਪ ਨੂੰ ਕਾਨਫਰੰਸ ਲਈ ਸੱਦਾ..."
msgid "Get Notes Address Book Info"
-msgstr "ਸੂਚਨਾ ਐਡਰੈੱਸ ਕਿਤਾਬ ਜਾਣਕਾਰੀ ਲਵੋ"
+msgstr "ਨੋਟਿਸ ਐਡਰੈੱਸ ਬੁੱਕ ਜਾਣਕਾਰੀ ਲਵੋ"
msgid "Sending Handshake"
msgstr "ਹੈਂਡਸ਼ੇਕ ਭੇਜਿਆ ਜਾ ਰਿਹਾ ਹੈ"
@@ -7822,8 +7571,7 @@ 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"
@@ -7920,8 +7668,7 @@ 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 "ਮੀਨਵਾਇਲ ਕੁਨੈਕਸ਼ਨ ਸੈੱਟਅੱਪ"
@@ -8039,8 +7786,7 @@ 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 "ਨੋਟ ਐਡਰੈੱਸ ਕਿਤਾਬ ਗਰੁੱਪ"
@@ -8084,8 +7830,7 @@ 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 "ਯੂਜ਼ਰ ਖੋਜ"
@@ -8221,14 +7966,12 @@ 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 "ਅੱਡ"
@@ -8352,7 +8095,6 @@ 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> "
@@ -8377,7 +8119,6 @@ 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 "
@@ -8452,8 +8193,7 @@ 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"
@@ -8734,8 +8474,7 @@ 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"
@@ -8763,14 +8502,13 @@ msgstr "SILC ਪਰੋਟੋਕਾਲ ਸ਼ੁਰੂ ਨਹੀਂ ਕੀਤਾ
msgid "Error loading SILC key pair"
msgstr "SILC ਕੁੰਜੀ ਜੋੜਾ ਲੋਡ ਕਰਨ ਦੌਰਾਨ ਗਲਤੀ"
-#, fuzzy, c-format
+#, c-format
msgid "Download %s: %s"
-msgstr "%s 'ਤੇ ਯੂਜ਼ਰ: %s"
+msgstr "%s ਡਾਊਨਲੋਡ: %s"
msgid "Your Current Mood"
-msgstr "ਤੁਹਾਡਾ ਮੌਜੂਦਾ ਚਿੱਤ(ਮੂਡ)"
+msgstr "ਤੁਹਾਡਾ ਮੌਜੂਦਾ ਚਿੱਤ"
-#, c-format
msgid "Normal"
msgstr "ਸਧਾਰਨ"
@@ -8794,10 +8532,10 @@ msgid "Video conferencing"
msgstr "ਵੀਡਿਓ ਕਾਨਫਰੰਸ"
msgid "Your Current Status"
-msgstr "ਤੁਹਾਡਾ ਮੌਜੂਦਾ ਸਥਿਤੀ"
+msgstr "ਤੁਹਾਡੀ ਮੌਜੂਦਾ ਹਾਲਤ"
msgid "Online Services"
-msgstr "ਆਨਲਾਇਨ ਸਰਵਿਸਾਂ"
+msgstr "ਆਨਲਾਈਨ ਸਰਵਿਸਾਂ"
msgid "Let others see what services you are using"
msgstr "ਹੋਰਾਂ ਨੂੰ ਇਹ ਵੇਖਣ ਦਿਓ ਕਿ ਤੁਸੀਂ ਕਿਹੜੀਆਂ ਸਰਵਿਸਾਂ ਵਰਤ ਰਹੇ ਹੋ"
@@ -8916,8 +8654,7 @@ 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: ਸਰਵਰ ਦਾ ਦਿਨ ਦਾ ਸੁਨੇਹਾ ਵੇਖੋ"
@@ -9141,43 +8878,33 @@ 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 "ਅਸਫ਼ਲ: ਪ੍ਰਮਾਣਕਿਤਾ ਅਸਫ਼ਲ"
@@ -9206,10 +8933,12 @@ msgstr "ਸੁਣਨ ਸਾਕਟ ਬਣ ਨਹੀਂ ਸਕੀ ਹੈ"
msgid "Could not resolve hostname"
msgstr "ਹੋਸਟ-ਨਾਂ ਹੱਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ"
-#, fuzzy
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr "SIP ਸਕਰੀਨ ਨਾਂ ਵਿੱਚ ਖਾਲੀ ਥਾਂ ਜਾਂ @ ਨਿਸ਼ਾਨ ਨਹੀਂ ਹੋ ਸਕਦਾ ਹੈ"
+msgid "SIP connect server not specified"
+msgstr "SIP ਕੁਨੈਕਟ ਸਰਵਰ ਨਹੀਂ ਦਿੱਤਾ"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -9219,11 +8948,11 @@ msgstr "SIP ਸਕਰੀਨ ਨਾਂ ਵਿੱਚ ਖਾਲੀ ਥਾਂ ਜਾ
#. *< name
#. *< version
msgid "SIP/SIMPLE Protocol Plugin"
-msgstr "SIP/SIMPLE ਪ੍ਰੋਟੋਕਾਲ ਪਲੱਗਇਨ"
+msgstr "SIP/SIMPLE ਪਰੋਟੋਕਾਲ ਪਲੱਗਇਨ"
#. * summary
msgid "The SIP/SIMPLE Protocol Plugin"
-msgstr "SIP/SIMPLE ਪ੍ਰੋਟੋਕਾਲ ਪਲੱਗਇਨ"
+msgstr "SIP/SIMPLE ਪਰੋਟੋਕਾਲ ਪਲੱਗਇਨ"
msgid "Publish status (note: everyone may watch you)"
msgstr "ਸਟੇਟਸ ਦਿਓ (ਨੋਟ: ਹਰੇਕ ਤੁਹਾਨੂੰ ਵੇਖ ਸਕਦਾ ਹੈ)"
@@ -9275,7 +9004,6 @@ msgstr "%s ਇਸ ਸਮੇਂ ਲਾਗਇਨ ਨਹੀਂ ਹੈ।"
msgid "Warning of %s not allowed."
msgstr "%s ਲਈ ਉਡੀਕ ਸਵੀਕਾਰ ਨਹੀਂ ਹੈ।"
-#, c-format
msgid "A message has been dropped, you are exceeding the server speed limit."
msgstr "ਇੱਕ ਸੁਨੇਹਾ ਗੁਆ ਦਿੱਤਾ ਗਿਆ ਹੈ, ਤੁਸੀਂ ਸਰਵਰ ਗਤੀ ਸੀਮਾ ਤੋਂ ਵੱਧ ਗਏ ਹੋ।"
@@ -9295,39 +9023,30 @@ msgstr "ਤੁਸੀਂ %s ਤੋਂ ਇੱਕ IM ਗੁਆ ਲਿਆ ਹੈ,
msgid "You missed an IM from %s because it was sent too fast."
msgstr "ਤੁਸੀਂ %s ਤੋਂ ਇੱਕ IM ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਕਿ ਇਹ ਬਹੁਤ ਤੇਜ਼ੀ ਨਾਲ ਭੇਜਿਆ ਗਿਆ ਹੈ।"
-#, c-format
msgid "Failure."
msgstr "ਅਸਫਲ ਹੈ।"
-#, c-format
msgid "Too many matches."
msgstr "ਬਹੁਤ ਮੇਲ ਹਨ।"
-#, c-format
msgid "Need more qualifiers."
msgstr "ਹੋਰ ਯੋਗਤਾ ਦੀ ਲੋੜ ਹੈ।"
-#, c-format
msgid "Dir service temporarily unavailable."
msgstr "ਡਾਈ ਸਰਵਿਸ ਆਰਜ਼ੀ ਤੌਰ ਤੇ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ।"
-#, c-format
msgid "Email lookup restricted."
msgstr "ਈਮੇਲ ਖੋਜ ਪਾਬੰਦੀ ਹੈ।"
-#, c-format
msgid "Keyword ignored."
msgstr "ਸ਼ਬਦ ਅਣਡਿੱਠਾ"
-#, c-format
msgid "No keywords."
msgstr "ਕੋਈ ਸ਼ਬਦ ਨਹੀਂ ਹੈ।"
-#, c-format
msgid "User has no directory information."
msgstr "ਯੂਜ਼ਰ ਦੀ ਕੋਈ ਡਾਇਰੈਕਟਰੀ ਜਾਣਕਾਰੀ ਨਹੀਂ ਹੈ।"
-#, c-format
msgid "Country not supported."
msgstr "ਦੇਸ਼ ਸਹਾਇਕ ਨਹੀਂ ਹੈ।"
@@ -9335,19 +9054,15 @@ msgstr "ਦੇਸ਼ ਸਹਾਇਕ ਨਹੀਂ ਹੈ।"
msgid "Failure unknown: %s."
msgstr "ਅਣਜਾਣੀ ਅਸਫਲਤਾ: %s"
-#, fuzzy, c-format
msgid "Incorrect username or password."
-msgstr "ਗਲਤ ਸਕਰੀਨ ਨਾਂ ਜਾਂ ਪਾਸਵਰਡ।"
+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."
@@ -9480,13 +9195,11 @@ 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 "ਸਰਵਰ ਲਿਸਟ ਵਿੱਚ ਬੱਡੀ ਸ਼ਾਮਿਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ"
@@ -9586,9 +9299,8 @@ msgstr "list: ਯਾਹੂ ਨੈੱਟਵਰਕ ਉੱਤੇ ਰੂਮ ਲਿ
msgid "doodle: Request user to start a Doodle session"
msgstr "ਡੂਡਲ: ਯੂਜ਼ਰ ਨੂੰ ਇੱਕ ਘੁੱਗੂ ਘਾਂਘੜੇ (ਡੂਡਲ) ਸ਼ੈਸ਼ਨ ਸ਼ੁਰੂ ਕਰਨ ਦੀ ਮੰਗ"
-#, fuzzy
msgid "Yahoo ID..."
-msgstr "Yahoo! ID"
+msgstr "Yahoo ID..."
#. *< type
#. *< ui_requirement
@@ -9601,7 +9313,7 @@ msgstr "Yahoo! ID"
#. * summary
#. * description
msgid "Yahoo Protocol Plugin"
-msgstr "Yahoo ਪ੍ਰੋਟੋਕਾਲ ਪਲੱਗਇਨ"
+msgstr "Yahoo ਪਰੋਟੋਕਾਲ ਪਲੱਗਇਨ"
msgid "Yahoo Japan"
msgstr "Yahoo ਜਾਪਾਨ"
@@ -9648,9 +9360,9 @@ msgstr "ਘੁੱਗੂ ਘਾਂਘੜੇ (ਡੂਡਲ) ਮੰਗ ਭੇਜੋ
msgid "Unable to establish file descriptor."
msgstr "ਫਾਇਲ ਵੇਰਵਾ ਬਣਾਉਣ ਲਈ ਅਸਫਲ ਹੈ।"
-#, fuzzy, c-format
+#, c-format
msgid "%s is trying to send you a group of %d files.\n"
-msgstr "%s %s ਫਾਇਲ ਭੇਜਣ ਦੀ ਪੇਸ਼ਕਸ਼ ਕਰ ਰਿਹਾ ਹੈ"
+msgstr "%s ਤੁਹਾਨੂੰ %d ਫਾਇਲਾਂ ਦਾ ਗਰੁੱਪ ਭੇਜਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਿਹਾ ਹੈ।।\n"
msgid "Yahoo! Japan Profile"
msgstr "Yahoo! ਜਾਪਾਨ ਪ੍ਰੋਫਾਇਲ"
@@ -9689,19 +9401,13 @@ msgid "Cool Link 2"
msgstr "ਸਬੰਧ 2"
msgid "Cool Link 3"
-msgstr "ਸਬੰਧ 3"
+msgstr "ਵਧੀਆ ਲਿੰਕ 3"
msgid "Last Update"
msgstr "ਆਖਰੀ ਅੱਪਡੇਟ"
-#, c-format
-msgid "User information for %s unavailable"
-msgstr "%s ਲਈ ਯੂਜ਼ਰ ਜਾਣਕਾਰੀ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ"
-
-msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
-msgstr "ਅਫਸੋਸ ਹੈ, ਪਰ ਇਹ ਪ੍ਰੋਫਾਇਲ ਉਸ ਭਾਸ਼ਾ ਵਿੱਚ ਹੈ, ਜੋ ਕਿ ਅਜੇ ਸਹਾਇਕ ਨਹੀਂ ਹੈ।"
+msgid "This profile is in a language or format that is not supported at this time."
+msgstr "ਇਹ ਪ੍ਰੋਫਾਇਲ ਉਸ ਭਾਸ਼ਾ ਜਾਂ ਫਾਰਮੈਟ ਵਿੱਚ ਹੈ, ਜੋ ਕਿ ਅਜੇ ਸਹਾਇਕ ਨਹੀਂ ਹੈ।"
msgid ""
"Could not retrieve the user's profile. This most likely is a temporary "
@@ -9835,11 +9541,9 @@ 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 ""
@@ -9988,21 +9692,18 @@ msgid "Accept chat invitation?"
msgstr "ਕੀ ਗੱਲਬਾਤ ਸੱਦਾ ਮੰਨਜ਼ੂਰ ਕਰਨਾ ਹੈ?"
#. Shortcut
-#, fuzzy
msgid "Shortcut"
-msgstr "ਲੜੀਬੱਧ"
+msgstr "ਸ਼ਾਰਟਕੱਟ"
-#, fuzzy
msgid "The text-shortcut for the smiley"
-msgstr "GTK+ ਪਾਠ ਸ਼ਾਰਟਕੱਟ ਥੀਮ"
+msgstr "ਸਮਾਈਲੀ ਲਈ ਟੈਕਸਟ-ਸ਼ਾਰਟਕੱਟ"
#. Stored Image
-#, fuzzy
msgid "Stored Image"
-msgstr "ਚਿੱਤਰ ਸੰਭਾਲੋ"
+msgstr "ਸੰਭਾਲਿਆ ਚਿੱਤਰ"
msgid "Stored Image. (that'll have to do for now)"
-msgstr ""
+msgstr "ਸੰਭਾਲਿਆ ਚਿੱਤਰ।(ਉਹ ਹੁਣ ਕਰਨਾ ਹੋਵੇਗਾ)"
msgid "SSL Connection Failed"
msgstr "SSL ਕੁਨੈਕਸ਼ਨ ਫੇਲ੍ਹ"
@@ -10029,7 +9730,7 @@ msgid "Mobile"
msgstr "ਮੋਬਾਇਲ"
msgid "Listening to music"
-msgstr ""
+msgstr "ਸੰਗੀਤ ਸੁਣ ਰਿਹਾ/ਰਹੀ ਹਾਂ"
#, c-format
msgid "%s (%s) changed status from %s to %s"
@@ -10082,7 +9783,7 @@ msgstr ""
"ਨਾਂ %s~ ਬਦਲਿਆ ਗਿਆ ਹੈ।"
msgid "Calculating..."
-msgstr "ਜਾਂਚ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ...."
+msgstr "ਗਿਣਤੀ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ..."
msgid "Unknown."
msgstr "ਅਣਜਾਣ"
@@ -10131,9 +9832,9 @@ msgstr "%s ਖੋਲ੍ਹਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ: ਕਈ ਵਾ
msgid "Unable to connect to %s"
msgstr "%s ਨਾਲ ਜੁੜਨ ਲਈ ਅਸਮਰੱਥ"
-#, fuzzy, c-format
+#, c-format
msgid "Error reading from %s: response too long (%d bytes limit)"
-msgstr "%s ਤੋਂ ਪੜ੍ਹਨ ਦੌਰਾਨ ਗਲਤੀ: %s"
+msgstr "%s ਤੋਂ ਪੜ੍ਹਨ ਦੌਰਾਨ ਗਲਤੀ: ਜਵਾਬ ਬਹੁਤ ਲੰਮਾ ਹੈ (%d ਬਾਈਟ ਲਿਮਟ)"
#, c-format
msgid ""
@@ -10157,36 +9858,31 @@ msgstr "%s ਨਾਲ ਜੁੜਨ ਲਈ ਅਸਮਰੱਥ: %s"
#, c-format
msgid " - %s"
-msgstr ""
+msgstr " - %s"
-#, fuzzy, c-format
+#, c-format
msgid " (%s)"
-msgstr "%s (%s)"
+msgstr " (%s)"
#. 10053
-#, c-format
msgid "Connection interrupted by other software on your computer."
-msgstr ""
+msgstr "ਤੁਹਾਡੇ ਕੰਪਿਊਟਰ ਉੱਤੇ ਕੁਨੈਕਸ਼ਨ ਨੂੰ ਹੋਰ ਸਾਫਟਵੇਅਰਾਂ ਵਲੋਂ ਰੋਕਿਆ।"
#. 10054
-#, fuzzy, c-format
msgid "Remote host closed connection."
-msgstr "ਰਿਮੋਟ ਯੂਜ਼ਰ ਨੇ ਕੁਨੈਕਸ਼ਨ ਬੰਦ ਕਰ ਦਿੱਤਾ ਹੈ।"
+msgstr "ਰਿਮੋਟ ਹੋਸਟ ਨੇ ਕੁਨੈਕਸ਼ਨ ਬੰਦ ਕਰ ਦਿੱਤਾ ਹੈ।"
#. 10060
-#, fuzzy, c-format
msgid "Connection timed out."
-msgstr "ਕੁਨੈਕਸ਼ਨ ਟਾਈਮ-ਆਉਟ"
+msgstr "ਕੁਨੈਕਸ਼ਨ ਟਾਈਮ-ਆਉਟ ਹੋਇਆ।"
#. 10061
-#, fuzzy, c-format
msgid "Connection refused."
-msgstr "ਕੁਨੈਕਸ਼ਨ ਮੁੜ-ਸੈੱਟ ਕੀਤਾ ਗਿਆ"
+msgstr "ਕੁਨੈਕਸ਼ਨ ਤੋਂ ਇਨਕਾਰ ਕੀਤਾ।"
#. 10048
-#, fuzzy, c-format
msgid "Address already in use."
-msgstr "ਇਹ ਗੱਲ ਨਾਂ ਪਹਿਲਾਂ ਹੀ ਵਰਤੋਂ 'ਚ ਹੈ"
+msgstr "ਐਡਰੈੱਸ ਪਹਿਲਾਂ ਹੀ ਵਰਤੋਂ ਅਧੀਨ ਹੈ।"
msgid "Internet Messenger"
msgstr "ਇੰਟਰਨੈਟ ਮੈਸੰਜ਼ਰ"
@@ -10295,9 +9991,8 @@ msgstr "ਅਕਾਊਂਟ ਸ਼ਾਮਲ"
msgid "_Basic"
msgstr "ਬੇਸਿਕ(_B)"
-#, fuzzy
msgid "Create _this new account on the server"
-msgstr "ਸਰਵਰ ਉੱਤੇ ਇਹ ਨਵਾਂ ਅਕਾਊਂਟ ਬਣਾਓ"
+msgstr "ਸਰਵਰ ਉੱਤੇ ਇਹ ਨਵਾਂ ਅਕਾਊਂਟ ਬਣਾਓ(_t)"
msgid "_Advanced"
msgstr "ਤਕਨੀਕੀ(_A)"
@@ -10308,7 +10003,7 @@ msgstr "ਯੋਗ ਕੀਤਾ"
msgid "Protocol"
msgstr "ਪਰੋਟੋਕਾਲ"
-#, fuzzy, c-format
+#, c-format
msgid ""
"<span size='larger' weight='bold'>Welcome to %s!</span>\n"
"\n"
@@ -10322,17 +10017,16 @@ msgid ""
msgstr ""
"<span size='larger' weight='bold'>%s ਵਲੋਂ ਜੀ ਆਇਆਂ ਨੂੰ!</span>\n"
"\n"
-"ਤੁਹਾਡੇ ਕੋਲ ਕੋਈ ਵੀ IM ਅਕਾਊਂਟ ਸੰਰਚਿਤ ਨਹੀਂ ਹੈ। %s ਨਾਲ ਕੁਨੈਕਟ ਕਰਨ ਵਾਸਤੇ ਹੇਠਾਂ <b>ਸ਼ਾਮਲ</b> ਬਟਨ "
+"ਤੁਹਾਡੇ ਕੋਲ ਕੋਈ ਵੀ IM ਅਕਾਊਂਟ ਸੰਰਚਿਤ ਨਹੀਂ ਹੈ। %s ਨਾਲ ਕੁਨੈਕਟ ਕਰਨ ਵਾਸਤੇ ਹੇਠਾਂ <b>ਸ਼ਾਮਲ...</b> ਬਟਨ "
"ਦੱਬੋ ਅਤੇ ਆਪਣਾ ਪਹਿਲਾਂ ਅਕਾਊਂਟ ਸੰਰਚਿਤ ਕਰੋ। ਜੇ ਤੁਸੀਂ %s ਨੂੰ ਕਈ IM ਅਕਾਊਂਟਾਂ ਨਾਲ ਕੁਨੈਕਟ ਕਰਨਾ ਚਾਹੁੰਦੇ "
-"ਹੋ ਤਾਂ ਸਭ ਦੀ ਸੰਰਚਨਾ ਲਈ <b>ਸ਼ਾਮਲ</b> ਨੂੰ ਫੇਰ ਦੱਬੋ।\n"
+"ਹੋ ਤਾਂ ਸਭ ਦੀ ਸੰਰਚਨਾ ਲਈ <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 ਨਾਂ ਨਾਲ ਹਨ। ਕੀ ਤੁਸੀਂ ਮਿਲਾਉਣੇ ਚਾਹੁੰਦੇ ਹੋ?"
@@ -10345,13 +10039,11 @@ msgstr ""
"ਗੱਲਬਾਤ ਵਿੰਡੋ ਵਰਤਣ ਲਈ ਸਹਾਇਕ ਹੈ। ਤੁਸੀਂ ਉਨ੍ਹਾਂ ਨੂੰ ਸੰਪਰਕ ਦੇ ਮੇਨੂ ਤੋਂ 'ਫੈਲਾਓ' ਚੁਣ ਕੇ ਫੇਰ ਅੱਡ ਅੱਡ ਕਰ "
"ਸਕਦੇ ਹੋ।"
-#, fuzzy
msgid "Please update the necessary fields."
msgstr "ਲੋੜੀਦੇ ਖੇਤਰ ਅੱਪਡੇਟ ਕਰੋ ਜੀ।"
-#, fuzzy
msgid "Room _List"
-msgstr "ਰੂਮ ਲਿਸਟ"
+msgstr "ਰੂਮ ਲਿਸਟ(_L)"
msgid ""
"Please enter the appropriate information about the chat you would like to "
@@ -10394,9 +10086,8 @@ msgstr "ਏਲੀਆਸ(_A)..."
msgid "_Remove"
msgstr "ਹਟਾਓ(_R)"
-#, fuzzy
msgid "Set Custom Icon"
-msgstr "ਕਸਟਮ ਆਈਕਾਨ ਸੈੱਟ..."
+msgstr "ਕਸਟਮ ਆਈਕਾਨ ਸੈੱਟ ਕਰੋ"
msgid "Remove Custom Icon"
msgstr "ਕਸਟਮ ਆਈਕਾਨ ਹਟਾਓ"
@@ -10423,9 +10114,8 @@ msgstr "ਆਟੋ-ਜੁਆਇੰਨ"
msgid "Persistent"
msgstr "ਪੱਕਾ"
-#, fuzzy
msgid "_Edit Settings..."
-msgstr "ਸੈਟਿੰਗ ਸੋਧ"
+msgstr "ਸੈਟਿੰਗ ਸੋਧ(_E)..."
msgid "_Collapse"
msgstr "ਸਮੇਟੋ(_C)"
@@ -10436,16 +10126,14 @@ 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
#. * everything that calls this function checks for one of the
#. * above node types first.
-#, fuzzy
msgid "Unknown node type"
-msgstr "ਅਣਜਾਣ ਗਲਤੀ ਕੋਡ %d"
+msgstr "ਅਣਜਾਣ ਨੋਡ ਟਾਈਪ"
#. Buddies menu
msgid "/_Buddies"
@@ -10467,7 +10155,7 @@ msgid "/Buddies/Sh_ow"
msgstr "/ਬੱਡੀ/ਵੇਖੋ(_o)"
msgid "/Buddies/Show/_Offline Buddies"
-msgstr "/ਬੱਡੀ/ਵੇਖੋ/ਆਫਲਾਇਨ ਬੱਡੀ(_O)"
+msgstr "/ਬੱਡੀ/ਵੇਖੋ/ਆਫਲਾਈਨ ਬੱਡੀ(_O)"
msgid "/Buddies/Show/_Empty Groups"
msgstr "/ਬੱਡੀ/ਵੇਖੋ/ਖਾਲੀ ਗਰੁੱਪ(_E)"
@@ -10485,13 +10173,13 @@ msgid "/Buddies/_Sort Buddies"
msgstr "/ਬੱਡੀ/ਬੱਡੀ ਕ੍ਰਮਬੱਧ(_S)"
msgid "/Buddies/_Add Buddy..."
-msgstr "/ਬੱਡੀ/ਬੱਡੀ ਸ਼ਾਮਿਲ(_A)..."
+msgstr "/ਬੱਡੀ/ਬੱਡੀ ਸ਼ਾਮਲ(_A)..."
msgid "/Buddies/Add C_hat..."
msgstr "/ਬੱਡੀ/ਗੱਲਬਾਤ ਸ਼ਾਮਿਲ(_h)..."
msgid "/Buddies/Add _Group..."
-msgstr "/ਬੱਡੀ/ਗਰੁੱਪ ਸ਼ਾਮਿਲ(_G)..."
+msgstr "/ਬੱਡੀ/ਗਰੁੱਪ ਸ਼ਾਮਲ(_G)..."
msgid "/Buddies/_Quit"
msgstr "/ਬੱਡੀ/ਬੰਦ ਕਰੋ(_Q)"
@@ -10500,9 +10188,8 @@ msgstr "/ਬੱਡੀ/ਬੰਦ ਕਰੋ(_Q)"
msgid "/_Accounts"
msgstr "/ਅਕਾਊਂਟ(_A)"
-#, fuzzy
msgid "/Accounts/Manage Accounts"
-msgstr "/ਅਕਾਊਂਟ/ਪਰਬੰਧ"
+msgstr "/ਅਕਾਊਂਟ/ਅਕਾਊਂਟ ਪਰਬੰਧ"
#. Tools
msgid "/_Tools"
@@ -10521,14 +10208,13 @@ msgid "/Tools/Pr_eferences"
msgstr "/ਟੂਲ/ਮੇਰੀ ਪਸੰਦ(_e)"
msgid "/Tools/Pr_ivacy"
-msgstr "/ਟੂਲ/ਰਹੱਸ(_i)"
+msgstr "/ਟੂਲ/ਪਰਾਈਵੇਸੀ(_i)"
-#, fuzzy
msgid "/Tools/Smile_y"
-msgstr "/ਟੂਲ/ਪਰਾਈਵੇਸੀ"
+msgstr "/ਟੂਲ/ਸਮਾਈਲੀ(_y)"
msgid "/Tools/_File Transfers"
-msgstr "/ਟੂਲ/ਫਾਇਲ ਸੰਚਾਰ(_F)"
+msgstr "/ਟੂਲ/ਫਾਇਲ ਟਰਾਂਸਫਰ(_F)"
msgid "/Tools/R_oom List"
msgstr "/ਟੂਲ/ਰੂਮ ਲਿਸਟ(_o)"
@@ -10544,7 +10230,7 @@ msgid "/_Help"
msgstr "/ਮੱਦਦ(_H)"
msgid "/Help/Online _Help"
-msgstr "/ਮੱਦਦ/ਆਨਲਾਇਨ ਮੱਦਦ(_H)"
+msgstr "/ਮੱਦਦ/ਆਨਲਾਈਨ ਮੱਦਦ(_H)"
msgid "/Help/_Debug Window"
msgstr "/ਮੱਦਦ/ਡੀਬੱਗ ਵਿੰਡੋ(_D)"
@@ -10552,31 +10238,28 @@ msgstr "/ਮੱਦਦ/ਡੀਬੱਗ ਵਿੰਡੋ(_D)"
msgid "/Help/_About"
msgstr "/ਮੱਦਦ/ਇਸ ਬਾਰੇ(_A)"
-#, fuzzy, c-format
+#, c-format
msgid "<b>Account:</b> %s"
-msgstr ""
-"\n"
-"<b>ਅਕਾਊਂਟ:</b> %s"
+msgstr "<b>ਅਕਾਊਂਟ:</b> %s"
-#, fuzzy, c-format
+#, c-format
msgid ""
"\n"
"<b>Occupants:</b> %d"
msgstr ""
"\n"
-"<b>ਅਕਾਊਂਟ:</b> %s"
+"<b>ਨਿਵਾਸ:</b> %d "
-#, fuzzy, c-format
+#, c-format
msgid ""
"\n"
"<b>Topic:</b> %s"
msgstr ""
"\n"
-"<b>ਅਕਾਊਂਟ:</b> %s"
+"<b>ਵਿਸ਼ਾ:</b> %s"
-#, fuzzy
msgid "(no topic set)"
-msgstr "ਕੋਈ ਵਿਸ਼ਾ ਨਹੀਂ ਦਿੱਤਾ ਹੈ"
+msgstr "(ਕੋਈ ਵਿਸ਼ਾ ਨਹੀਂ ਦਿੱਤਾ ਹੈ)"
msgid "Buddy Alias"
msgstr "ਬੱਡੀ ਏਲੀਆਸ"
@@ -10596,9 +10279,8 @@ msgstr "ਭਿਆਨਕ"
msgid "Rockin'"
msgstr "ਰਾਕਇਨ'"
-#, fuzzy
msgid "Total Buddies"
-msgstr "ਬੱਡੀ"
+msgstr "ਕੁੱਲ ਬੱਡੀ"
#, c-format
msgid "Idle %dd %dh %02dm"
@@ -10655,27 +10337,24 @@ msgstr "ਲਾਗ ਅਕਾਰ"
msgid "%s disconnected"
msgstr "%s ਕੁਨੈਕਸ਼ਨ ਖਤਮ ਕੀਤਾ"
-#, fuzzy, c-format
+#, c-format
msgid "%s disabled"
-msgstr "ਕਮਾਂਡ ਆਯੋਗ"
+msgstr "%s ਆਯੋਗ"
-#, fuzzy
msgid "Reconnect"
-msgstr "ਕੁਨੈਕਟ ਕਰੋ"
+msgstr "ਮੁੜ-ਕੁਨੈਕਟ ਕਰੋ"
-#, fuzzy
msgid "Re-enable"
-msgstr "ਅਕਾਊਂਟ ਮੁੜ-ਯੋਗ"
+msgstr "ਮੁੜ-ਚਾਲੂ"
msgid "Welcome back!"
-msgstr ""
+msgstr "ਫੇਰ ਜੀ ਆਇਆਂ ਨੂੰ!"
-#, fuzzy, c-format
+#, c-format
msgid "%d account was disabled because you signed on from another location:"
-msgid_plural ""
-"%d accounts were disabled because you signed on from another location:"
-msgstr[0] "ਤੁਸੀਂ ਕਿਸੇ ਹੋਰ ਥਾਂ ਤੋਂ ਲਾਗਇਨ ਹੋਏ"
-msgstr[1] "ਤੁਸੀਂ ਕਿਸੇ ਹੋਰ ਥਾਂ ਤੋਂ ਲਾਗਇਨ ਹੋਏ"
+msgid_plural "%d accounts were disabled because you signed on from another location:"
+msgstr[0] "%d ਅਕਾਊਂਟ ਆਯੋਗ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ, ਕਿਉਂਕਿ ਤੁਸੀਂ ਹੋਰ ਟਿਕਾਣੇ ਤੋਂ ਸਾਇਨ ਹੋ ਗਏ ਹੋ:"
+msgstr[1] "%d ਅਕਾਊਂਟ ਆਯੋਗ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ, ਕਿਉਂਕਿ ਤੁਸੀਂ ਹੋਰ ਟਿਕਾਣੇ ਤੋਂ ਸਾਇਨ ਹੋ ਗਏ ਹੋ:"
msgid "<b>Username:</b>"
msgstr "<b>ਯੂਜ਼ਰ ਨਾਂ:</b>"
@@ -10690,7 +10369,7 @@ msgid "/Accounts"
msgstr "/ਅਕਾਊਂਟ"
#. Translators: Please maintain the use of -> and <- to refer to menu heirarchy
-#, fuzzy, c-format
+#, c-format
msgid ""
"<span weight='bold' size='larger'>Welcome to %s!</span>\n"
"\n"
@@ -10700,7 +10379,7 @@ msgid ""
msgstr ""
"<span weight='bold' size='larger'>%s ਵਲੋਂ ਜੀ ਆਇਆਂ ਨੂੰ!</span>\n"
"\n"
-"ਤੁਹਾਡੇ ਕੋਲ ਕੋਈ ਅਕਾਊਂਟ ਯੋਗ ਨਹੀਂ ਹੈ। ਆਪਣੇ IM ਅਕਾਊਂਟ <b>ਅਕਾਊਂਟ->ਪਰਬੰਧ</b> ਰਾਹੀਂ <b>ਅਕਾਊਂਟ</b> "
+"ਤੁਹਾਡੇ ਕੋਲ ਕੋਈ ਅਕਾਊਂਟ ਯੋਗ ਨਹੀਂ ਹੈ। ਆਪਣੇ IM ਅਕਾਊਂਟ <b>ਅਕਾਊਂਟ->ਅਕਾਊਂਟ ਪਰਬੰਧ</b> ਰਾਹੀਂ <b>ਅਕਾਊਂਟ</b> "
"ਤੋਂ ਯੋਗ ਕਰੋ। ਜਦੋਂ ਤੁਸੀਂ ਅਕਾਊਂਟ ਯੋਗ ਕੀਤੇ ਤਾਂ ਤੁਸੀਂ ਸਾਇਨ-ਆਨ ਕਰ ਸਕਦੇ ਹੋ, ਆਪਣਾ ਸਟੇਟਸ ਸੈੱਟ ਕਰ ਸਕਦੇ ਹੋ "
"ਅਤੇ ਆਪਣੇ ਦੋਸਤਾਂ-ਮਿੱਤਰਾਂ ਨਾਲ ਗੱਲਾਂ ਮਾਰ ਸਕਦੇ ਹੋ।"
@@ -10708,7 +10387,7 @@ msgstr ""
#. * after the treeview or faceprint gets mad. -Robot101
#.
msgid "/Buddies/Show/Offline Buddies"
-msgstr "/ਬੱਡੀ/ਵੇਖੋ/ਆਫਲਾਇਨ ਬੱਡੀ"
+msgstr "/ਬੱਡੀ/ਵੇਖੋ/ਆਫਲਾਈਨ ਬੱਡੀ"
msgid "/Buddies/Show/Empty Groups"
msgstr "/ਬੱਡੀ/ਵੇਖੋ/ਖਾਲੀ ਗਰੁੱਪ"
@@ -10722,21 +10401,17 @@ msgstr "/ਬੱਡੀ/ਵੇਖੋ/ਵੇਹਲਾ ਟਾਈਮ"
msgid "/Buddies/Show/Protocol Icons"
msgstr "/ਬੱਡੀ/ਵੇਖੋ/ਪਰੋਟੋਕਾਲ ਆਈਕਾਨ"
-#, fuzzy
msgid "Add a buddy.\n"
-msgstr "ਬੱਡੀ ਸ਼ਾਮਿਲ"
+msgstr "ਬੱਡੀ ਸ਼ਾਮਿਲ ਕਰੋ।\n"
-#, fuzzy
msgid "Buddy's _username:"
-msgstr "ਬੱਡੀ ਨਾਂ:"
+msgstr "ਬੱਡੀ ਦਾ ਯੂਜ਼ਰ ਨਾਂ(_u):"
-#, fuzzy
msgid "(Optional) A_lias:"
-msgstr "ਚੋਣਵੀਂ ਜਾਣਕਾਰੀ:"
+msgstr "(ਚੋਣਵਾਂ) ਏਲੀਆਸ(_l):"
-#, fuzzy
msgid "Add buddy to _group:"
-msgstr "ਕੀ ਬੱਡੀ ਆਪਣੀ ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਿਲ?"
+msgstr "ਬੱਡੀ ਗਰੁੱਪ ਵਿੱਚ ਸ਼ਾਮਲ(_g):"
msgid "This protocol does not support chat rooms."
msgstr "ਇਹ ਪ੍ਰੋਟੋਕਾਲ ਗੱਲਬਾਤ ਰੂਮ ਲਈ ਸਹਾਇਕ ਨਹੀਂ ਹੈ।"
@@ -10749,25 +10424,22 @@ 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):"
-#, fuzzy
msgid "Auto_join when account becomes online."
-msgstr "ਜਦੋਂ ਅਕਾਊਂਟ ਆਨਲਾਇਨ ਹੋਵੇ ਤਾਂ ਆਟੋ-ਜੁਆਇੰਨ ਕਰੋ।"
+msgstr "ਜਦੋਂ ਅਕਾਊਂਟ ਆਨਲਾਈਨ ਹੋਵੇ ਤਾਂ ਆਟੋ-ਜੁਆਇੰਨ ਕਰੋ(_j)।"
-#, fuzzy
msgid "_Remain in chat after window is closed."
-msgstr "ਜਦੋਂ ਵਿੰਡੋ ਬੰਦ ਕੀਤੀ ਜਾਵੇ ਤਾਂ ਗੱਲਬਾਤ ਓਹਲੇ।"
+msgstr "ਜਦੋਂ ਵਿੰਡੋ ਬੰਦ ਕੀਤੀ ਜਾਵੇ ਤਾਂ ਗੱਲਬਾਤ ਵਿੱਚ ਰਹੋ(_R)|"
msgid "Please enter the name of the group to be added."
msgstr "ਗਰੁੱਪ ਸ਼ਾਮਿਲ ਕਰਨ ਲਈ ਨਾਂ ਦਿਓ ਜੀ।"
msgid "Enable Account"
-msgstr "ਅਕਾਊਂਟ ਯੋਗ"
+msgstr "ਅਕਾਊਂਟ ਚਾਲੂ"
msgid "<PurpleMain>/Accounts/Enable Account"
msgstr "<PurpleMain>/ਅਕਾਊਂਟ/ਅਕਾਊਂਟ ਯੋਗ"
@@ -10800,8 +10472,7 @@ 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"
@@ -10862,9 +10533,8 @@ msgstr "ਆਈਕਾਨ ਇੰਝ ਸੰਭਾਲੋ..."
msgid "Set Custom Icon..."
msgstr "ਕਸਟਮ ਆਈਕਾਨ ਸੈੱਟ..."
-#, fuzzy
msgid "Change Size"
-msgstr "ਹਾਲਤ ਬਦਲੋ"
+msgstr "ਸਾਈਜ਼ ਬਦਲੋ"
msgid "Show All"
msgstr "ਸਭ ਵੇਖੋ"
@@ -10929,25 +10599,25 @@ msgstr "/ਗੱਲਬਾਤ/ਬੰਦ ਕਰੋ(_C)"
#. Options
msgid "/_Options"
-msgstr "/ਚੋਣ(_O)"
+msgstr "/ਚੋਣਾਂ(_O)"
msgid "/Options/Enable _Logging"
-msgstr "/ਚੋਣ/ਲਾਗ ਯੋਗ(_L)"
+msgstr "/ਚੋਣਾਂ/ਲਾਗ ਯੋਗ(_L)"
msgid "/Options/Enable _Sounds"
-msgstr "/ਚੋਣ/ਸਾਊਂਡ ਯੋਗ(_S)"
+msgstr "/ਚੋਣਾਂ/ਸਾਊਂਡ ਯੋਗ(_S)"
msgid "/Options/Show Formatting _Toolbars"
-msgstr "/ਚੋਣ/ਫਾਰਮੈਟ ਟੂਲਬਾਰ ਵੇਖੋ(_T)"
+msgstr "/ਚੋਣਾਂ/ਫਾਰਮੈਟ ਟੂਲਬਾਰ ਵੇਖੋ(_T)"
msgid "/Options/Show Ti_mestamps"
-msgstr "/ਚੋਣ/ਟਾਈਮ-ਸਟੈਂਪ ਵੇਖੋ(_M)"
+msgstr "/ਚੋਣਾਂ/ਟਾਈਮ-ਸਟੈਂਪ ਵੇਖੋ(_M)"
msgid "/Conversation/More"
msgstr "/ਗੱਲਬਾਤ/ਹੋਰ"
msgid "/Options"
-msgstr "/ਚੋਣ"
+msgstr "/ਚੋਣਾਂ"
#. The menubar has been deactivated. Make sure the 'More' submenu is regenerated next time
#. * the 'Conversation' menu pops up.
@@ -10994,25 +10664,27 @@ msgid "/Conversation/Insert Image..."
msgstr "/ਗੱਲਬਾਤ/ਚਿੱਤਰ ਸ਼ਾਮਲ..."
msgid "/Options/Enable Logging"
-msgstr "/ਚੋਣ/ਲਾਗ ਰੱਖੋ"
+msgstr "/ਚੋਣਾਂ/ਲਾਗ ਰੱਖੋ"
msgid "/Options/Enable Sounds"
-msgstr "/ਚੋਣ/ਆਵਾਜ਼ ਯੋਗ"
+msgstr "/ਚੋਣਾਂ/ਆਵਾਜ਼ ਯੋਗ"
msgid "/Options/Show Formatting Toolbars"
-msgstr "/ਚੋਣ/ਫਾਰਮੈਟ ਟੂਲਬਾਰ ਵੇਖੋ"
+msgstr "/ਚੋਣਾਂ/ਫਾਰਮੈਟ ਟੂਲਬਾਰ ਵੇਖੋ"
msgid "/Options/Show Timestamps"
-msgstr "/ਚੋਣ/ਟਾਈਮ ਸਟੈਂਪ ਵੇਖੋ"
+msgstr "/ਚੋਣਾਂ/ਟਾਈਮ ਸਟੈਂਪ ਵੇਖੋ"
msgid "User is typing..."
msgstr "ਯੂਜ਼ਰ ਲਿਖਦਾ/ਲਿਖਦੀ ਹੈ..."
-#, fuzzy, c-format
+#, c-format
msgid ""
"\n"
"%s has stopped typing"
-msgstr "%s ਨੇ ਤੁਹਾਡੇ (%s) ਲਈ ਲਿਖਿਆ ਛੱਡਿਆ ਹੈ"
+msgstr ""
+"\n"
+"%s ਲਿਖਣੋਂ ਹਟਿਆ/ਹਟੀ"
#. Build the Send To menu
msgid "S_end To"
@@ -11131,22 +10803,20 @@ msgid "Fatal Error"
msgstr "ਘਾਤਕ ਗਲਤੀ"
msgid "bug master"
-msgstr ""
+msgstr "ਬੱਗ ਮਾਸਟਰ"
-#, fuzzy
msgid "artist"
msgstr "ਕਲਾਕਾਰ"
#. feel free to not translate this
msgid "Ka-Hing Cheung"
-msgstr ""
+msgstr "ਕਾ-ਹਿੰਗ ਚੀਉਂਗ"
msgid "support"
msgstr "ਸਹਿਯੋਗ"
-#, fuzzy
msgid "webmaster"
-msgstr "ਖੋਜੀ ਤੇ ਵੈਬ ਮਾਸਟਰ"
+msgstr "ਵੈੱਬਮਾਸਟਰ"
msgid "Senior Contributor/QA"
msgstr "ਸੀਨੀਅਰ ਯੋਗਦਾਨੀ/QA"
@@ -11168,7 +10838,7 @@ msgid "support/QA"
msgstr "ਸਹਿਯੋਗ/QA"
msgid "XMPP"
-msgstr ""
+msgstr "XMPP"
msgid "original author"
msgstr "ਅਸਲੀ ਲੇਖਕ"
@@ -11245,9 +10915,8 @@ msgstr "ਫੈਨਿਸ਼"
msgid "French"
msgstr "ਫਰੈਂਚ"
-#, fuzzy
msgid "Irish"
-msgstr "ਕੁਰਦ"
+msgstr "ਆਈਰਸ਼"
msgid "Galician"
msgstr "ਗਾਲਿਸਿਕ"
@@ -11303,6 +10972,9 @@ msgstr "ਲੀਥੂਵਨੀਆਈ"
msgid "Macedonian"
msgstr "ਮੈਕਡੋਨੀਆਈ"
+msgid "Mongolian"
+msgstr "ਮੰਗੋਲੀਆਈ"
+
msgid "Bokmål Norwegian"
msgstr "ਬੋਕਮਾਲ ਨਾਰਵੇਗਆਈ"
@@ -11316,10 +10988,10 @@ msgid "Norwegian Nynorsk"
msgstr "ਨਾਰਵੇਗੀਅਨ ਨਯਨੋਰਸਕ"
msgid "Occitan"
-msgstr ""
+msgstr "ਅੱਸੀਟਾਨ"
msgid "Punjabi"
-msgstr ""
+msgstr "ਪੰਜਾਬੀ"
msgid "Polish"
msgstr "ਪੋਲੈਂਡੀ"
@@ -11351,9 +11023,8 @@ msgstr "ਅਲਬਨੀਆਈ"
msgid "Serbian"
msgstr "ਸਰਬੀਆਈ"
-#, fuzzy
msgid "Sinhala"
-msgstr "ਸਮਾਜਿਕ"
+msgstr "ਸਿੰਹਾਲਾ"
msgid "Swedish"
msgstr "ਸਵੀਡਸ਼"
@@ -11371,7 +11042,7 @@ msgid "Turkish"
msgstr "ਤੁਰਕ"
msgid "Urdu"
-msgstr ""
+msgstr "ਉਰਦੂ"
msgid "Vietnamese"
msgstr "ਵੀਅਤਨਾਮੀ"
@@ -11415,9 +11086,25 @@ msgstr ""
"ਇਸ ਦੇ ਯੋਗਦਾਨੀਆਂ ਕੋਲ ਕਾਪੀ-ਰਾਈਟ ਹੈ। ਯੋਗਦਾਨੀਆਂ ਦੀ ਲਿਸਟ ਵੇਖਣ ਵਾਸਤੇ 'COPYRIGHT' ਫਾਇਲ ਵੇਖੋ। "
"ਇਸ ਪਰੋਗਰਾਮ ਬਾਰੇ ਤੁਹਾਨੂੰ ਅਸੀਂ ਕੋਈ ਵਾਰੰਟੀ ਨਹੀਂ ਦਿੰਦੇ ਹਾਂ।<BR><BR>"
-#, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
-msgstr "<FONT SIZE=\"4\">IRC:</FONT>irc.freenode.net ਉੱਤੇ #pidgin<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\">ਸਵਾਲ-ਜਵਾਬ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</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\">ਈਮੇਲ ਰਾਹੀਂ ਮੱਦਦ:</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>"
+msgstr "<FONT SIZE=\"4\">IRC ਚੈਨਲ:</FONT>irc.freenode.net ਉੱਤੇ #pidgin<BR><BR>"
+
+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 "ਮੌਜੂਦਾ ਡੀਵੈਲਪਰ"
@@ -11449,11 +11136,10 @@ msgstr "ਅਕਾਊਂਟ(_A)"
msgid "Get User Info"
msgstr "ਯੂਜ਼ਰ ਜਾਣਕਾਰੀ ਲਵੋ"
-#, fuzzy
msgid ""
"Please enter the username or alias of the person whose info you would like "
"to view."
-msgstr "ਵਿਅਕਤੀ ਦਾ ਸਕਰੀਨ ਨਾਂ ਜਾਂ ਏਲੀਆਸ ਦਿਓ ਜੀ , ਜਿਸ ਦੀ ਜਾਣਕਾਰੀ ਤੁਸੀਂ ਵੇਖਣੀ ਚਾਹੁੰਦੇ ਹੋ।"
+msgstr "ਵਿਅਕਤੀ ਦਾ ਯੂਜ਼ਰ ਨਾਂ ਜਾਂ ਏਲੀਆਸ ਦਿਓ ਜੀ , ਜਿਸ ਦੀ ਜਾਣਕਾਰੀ ਤੁਸੀਂ ਵੇਖਣੀ ਚਾਹੁੰਦੇ ਹੋ।"
msgid "View User Log"
msgstr "ਯੂਜ਼ਰ ਲਾਗ ਵੇਖੋ"
@@ -11477,17 +11163,15 @@ msgstr "ਗੱਲਬਾਤ ਏਲੀਆਸ"
msgid "Enter an alias for this chat."
msgstr "ਇਸ ਗੱਲਬਾਤ ਲਈ ਉਪ ਨਾਂ ਦਿਓ।"
-#, fuzzy, c-format
+#, c-format
msgid ""
"You are about to remove the contact containing %s and %d other buddy from "
"your buddy list. Do you want to continue?"
msgid_plural ""
"You are about to remove the contact containing %s and %d other buddies from "
"your buddy list. Do you want to continue?"
-msgstr[0] ""
-"ਤੁਸੀਂ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ %s ਗੱਲਬਾਤ ਹਟਾਉਣ ਜਾ ਰਹੇ ਹੋ। ਕੀ ਤੁਸੀਂ ਜਾਰੀ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ।"
-msgstr[1] ""
-"ਤੁਸੀਂ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ %s ਗੱਲਬਾਤ ਹਟਾਉਣ ਜਾ ਰਹੇ ਹੋ। ਕੀ ਤੁਸੀਂ ਜਾਰੀ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ।"
+msgstr[0] "ਤੁਸੀਂ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚੋਂ %s ਰੱਖਣ ਵਾਲਾ ਸੰਪਰਕ ਅਤੇ %d ਹੋਰ ਬੱਡੀ ਹਟਾਉਣ ਜਾ ਰਹੇ ਹੋ। ਕੀ ਤੁਸੀਂ ਜਾਰੀ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ?"
+msgstr[1] "ਤੁਸੀਂ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚੋਂ %s ਰੱਖਣ ਵਾਲਾ ਸੰਪਰਕ ਅਤੇ %d ਹੋਰ ਬੱਡੀ ਹਟਾਉਣ ਜਾ ਰਹੇ ਹੋ। ਕੀ ਤੁਸੀਂ ਜਾਰੀ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ?"
msgid "Remove Contact"
msgstr "ਸੰਪਰਕ ਹਟਾਓ"
@@ -11522,8 +11206,7 @@ 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"
@@ -11547,45 +11230,35 @@ msgstr "ਗੱਲਬਾਤ ਹਟਾਓ(_R)"
msgid "Right-click for more unread messages...\n"
msgstr "ਹੋਰ ਨਾ-ਪੜ੍ਹੇ ਸੁਨੇਹਿਆਂ ਲਈ ਸੱਜਾ-ਕਲਿੱਕ...\n"
-#, fuzzy
msgid "_Change Status"
-msgstr "ਹਾਲਤ ਬਦਲੋ"
+msgstr "ਹਾਲਤ ਬਦਲੋ(_C)"
-#, fuzzy
msgid "Show Buddy _List"
-msgstr "ਬੱਡੀ ਲਿਸਟ ਵੇਖੋ"
+msgstr "ਬੱਡੀ ਲਿਸਟ ਵੇਖੋ(_L)"
-#, fuzzy
msgid "_Unread Messages"
-msgstr "ਅਣ-ਪੜ੍ਹੇ ਸੁਨੇਹੇ"
+msgstr "ਅਣ-ਪੜ੍ਹੇ ਸੁਨੇਹੇ(_U)"
-#, fuzzy
msgid "New _Message..."
-msgstr "ਨਵਾਂ ਸੁਨੇਹਾ..."
+msgstr "ਨਵਾਂ ਸੁਨੇਹਾ(_M)..."
-#, fuzzy
msgid "_Accounts"
-msgstr "/ਅਕਾਊਂਟ(_A)"
+msgstr "ਅਕਾਊਂਟ(_A)"
-#, fuzzy
msgid "Plu_gins"
-msgstr "ਪਲੱਗਇਨ"
+msgstr "ਪਲੱਗਇਨ(_g)"
-#, fuzzy
msgid "Pr_eferences"
-msgstr "ਮੇਰੀ ਪਸੰਦ"
+msgstr "ਮੇਰੀ ਪਸੰਦ(_e)"
-#, fuzzy
msgid "Mute _Sounds"
-msgstr "ਆਵਾਜ਼ ਚੁੱਪ ਰੱਖੋ"
+msgstr "ਆਵਾਜ਼ ਚੁੱਪ ਰੱਖੋ(_S)"
-#, fuzzy
msgid "_Blink on New Message"
-msgstr "ਨਵੇਂ ਸੁਨੇਹੇ ਉੱਤੇ ਝਪਕੋ"
+msgstr "ਨਵੇਂ ਸੁਨੇਹੇ ਉੱਤੇ ਝਪਕੋ(_B)"
-#, fuzzy
msgid "_Quit"
-msgstr "ਬਾਹਰ"
+msgstr "ਬਾਹਰ(_Q)"
msgid "Not started"
msgstr "ਸ਼ੁਰੂ ਨਹੀਂ"
@@ -11660,77 +11333,70 @@ msgid "_Reset formatting"
msgstr "ਫਾਰਮੈਟਿੰਗ ਮੁੜ-ਸੈੱਟ ਕਰੋ(_R)"
msgid "Disable _smileys in selected text"
-msgstr ""
+msgstr "ਚੁਣੇ ਟੈਕਸਟ ਵਿੱਚ ਸਮਾਈਲੀ ਆਯੋਗ(_s)"
msgid "Hyperlink color"
-msgstr "ਹਾਇਪਰਲਿੰਕ ਰੰਗ"
+msgstr "ਹਾਈਪਰਲਿੰਕ ਰੰਗ"
msgid "Color to draw hyperlinks."
-msgstr "ਹਾਇਪਰਲਿੰਕ ਲਈ ਰੰਗ ਦਿਓ।"
+msgstr "ਹਾਈਪਰਲਿੰਕ ਲਈ ਰੰਗ ਦਿਓ।"
-#, fuzzy
msgid "Hyperlink visited color"
-msgstr "ਹਾਇਪਰਲਿੰਕ ਰੰਗ"
+msgstr "ਖੋਲ੍ਹੋ ਹਾਈਪਰਲਿੰਕ ਰੰਗ"
-#, fuzzy
msgid "Color to draw hyperlinks after it has been visited (or activated)."
-msgstr "ਹਾਇਪਰਲਿੰਕ ਲਈ ਰੰਗ, ਜਦੋਂ ਮਾਊਂਸ ਉਨ੍ਹਾਂ ਉੱਤੇ ਹੋਵੇ।"
+msgstr "ਹਾਈਪਰਲਿੰਕ ਖੋਲ੍ਹਣ ਤੋਂ ਬਾਅਦ ਵਰਤਣ ਲਈ ਰੰਗ (ਜਾਂ ਐਕਟੀਵੇਟ ਹੋਣ ਤੋਂ ਬਾਅਦ)"
msgid "Hyperlink prelight color"
-msgstr "ਹਾਇਪਰਲਿੰਕ ਪ੍ਰੀ-ਲਾਇਟ ਰੰਗ"
+msgstr "ਹਾਈਪਰਲਿੰਕ ਪ੍ਰੀ-ਲਾਇਟ ਰੰਗ"
msgid "Color to draw hyperlinks when mouse is over them."
-msgstr "ਹਾਇਪਰਲਿੰਕ ਲਈ ਰੰਗ, ਜਦੋਂ ਮਾਊਂਸ ਉਨ੍ਹਾਂ ਉੱਤੇ ਹੋਵੇ।"
+msgstr "ਹਾਈਪਰਲਿੰਕ ਲਈ ਰੰਗ, ਜਦੋਂ ਮਾਊਂਸ ਉਨ੍ਹਾਂ ਉੱਤੇ ਹੋਵੇ।"
-#, fuzzy
msgid "Sent Message Name Color"
-msgstr "ਭੇਜੇ ਸੁਨੇਹੇ"
+msgstr "ਭੇਜਿਆ ਸੁਨੇਹਾ ਨਾਂ ਰੰਗ"
msgid "Color to draw the name of a message you sent."
-msgstr ""
+msgstr "ਤੁਹਾਡੇ ਵਲੋਂ ਭੇਜੇ ਸੁਨੇਹੇ ਨਾਂ ਲਈ ਰੰਗ ਹੈ।"
-#, fuzzy
msgid "Received Message Name Color"
-msgstr "ਪ੍ਰਾਪਤ ਹੋਏ ਸੁਨੇਹੇ"
+msgstr "ਮਿਲਿਆ ਸੁਨੇਹਾ ਨਾਂ ਰੰਗ"
msgid "Color to draw the name of a message you received."
-msgstr ""
+msgstr "ਤੁਹਾਡੇ ਮਿਲੇ ਸੁਨੇਹੇ ਦੇ ਨਾਂ ਲਈ ਰੰਗ ਹੈ।"
msgid "\"Attention\" Name Color"
-msgstr ""
+msgstr "\"ਸਾਵਧਾਨ\" ਨਾਂ ਰੰਗ"
msgid "Color to draw the name of a message you received containing your name."
-msgstr ""
+msgstr "ਤੁਹਾਡਾ ਨਾਂ ਰੱਖਣ ਵਾਲੇ ਇੱਕ ਸੁਨੇਹੇ, ਜੋ ਤੁਹਾਨੂੰ ਮਿਲਿਆ ਹੈ, ਦੇ ਨਾਂ ਲਈ ਰੰਗ"
msgid "Action Message Name Color"
-msgstr ""
+msgstr "ਕਾਰਵਾਈ ਸੁਨੇਹਾ ਨਾਂ ਰੰਗ"
msgid "Color to draw the name of an action message."
-msgstr ""
+msgstr "ਇੱਕ ਕਾਰਵਾਈ ਸੁਨੇਹੇ ਲਈ ਨਾਂ ਲਿਖਣ ਲਈ ਰੰਗ ਹੈ।"
msgid "Action Message Name Color for Whispered Message"
-msgstr ""
+msgstr "ਘੁਸਰ-ਮੁਸਰ ਸੁਨੇਹੇ ਲਈ ਐਕਟਿਵ ਸੁਨੇਹਾ ਨਾਂ ਰੰਗ"
msgid "Whisper Message Name Color"
-msgstr ""
+msgstr "ਘੁਸਰ-ਮੁਸਰ ਸੁਨੇਹਾ ਨਾਂ ਰੰਗ"
-#, fuzzy
msgid "Typing notification color"
-msgstr "ਨੋਟੀਫਿਕੇਸ਼ਨ ਹਟਾਓ"
+msgstr "ਟਾਈਪ ਕਰਨ ਸੂਚਨਾ ਰੰਗ"
msgid "The color to use for the typing notification font"
-msgstr ""
+msgstr "ਟਾਈਪ ਕਰਨ ਸੂਚਨਾ ਲਈ ਫੋਂਟ ਵਾਸਤੇ ਵਰਤਣ ਲਈ ਰੰਗ"
-#, fuzzy
msgid "Typing notification font"
-msgstr "ਇੱਕ ਸੂਚਨਾ ਦਿਓ"
+msgstr "ਟਾਈਪ ਕਰਨ ਸੂਚਨਾ ਫੋਂਟ"
msgid "The font to use for the typing notification"
-msgstr ""
+msgstr "ਟਾਈਪ ਕਰਨ ਦੀ ਸੂਚਨਾ ਲਈ ਵਰਤਣ ਵਾਸਤੇ ਫੋਂਟ"
-#, fuzzy
msgid "Enable typing notification"
-msgstr "ਨਵੀਂ ਚਿੱਠੀ ਸੂਚਨਾ"
+msgstr "ਟਾਈਪ ਕਰਨ ਦੀ ਸੂਚਨਾ ਚਾਲੂ"
msgid "_Copy Email Address"
msgstr "ਈਮੇਲ ਐਡਰੈੱਸ ਨਕਲ(_C)"
@@ -11782,22 +11448,20 @@ msgstr ""
msgid "Save Image"
msgstr "ਚਿੱਤਰ ਸੰਭਾਲੋ"
-#, c-format
msgid "_Save Image..."
msgstr "ਚਿੱਤਰ ਸੰਭਾਲੋ(_S)..."
-#, fuzzy, c-format
msgid "_Add Custom Smiley..."
-msgstr "ਕਸਟਮ ਸਮਾਇਲੀ ਵੇਖੋ"
+msgstr "ਕਸਟਮ ਸਮਾਇਲੀ ਸ਼ਾਮਲ(_A)..."
msgid "Select Font"
msgstr "ਫੋਂਟ ਚੁਣੋ"
msgid "Select Text Color"
-msgstr "ਪਾਠ ਰੰਗ ਚੁਣੋ"
+msgstr "ਟੈਕਸਟ ਰੰਗ ਚੁਣੋ"
msgid "Select Background Color"
-msgstr "ਪਿੱਠਭੂਮੀ ਰੰਗ ਚੁਣੋ"
+msgstr "ਬੈਕਗਰਾਊਂਡ ਰੰਗ ਚੁਣੋ"
msgid "_URL"
msgstr "_URL"
@@ -11808,13 +11472,13 @@ msgstr "ਵੇਰਵਾ(_D)"
msgid ""
"Please enter the URL and description of the link that you want to insert. "
"The description is optional."
-msgstr "ਸ਼ਾਮਿਲ ਕਰਨ ਵਾਲੇ ਸੰਬੰਧ ਦਾ URL ਅਤੇ ਵੇਰਵਾ ਦਿਓ। ਵੇਰਵਾ ਚੋਣਵਾਂ ਹੈ।"
+msgstr "ਸ਼ਾਮਿਲ ਕਰਨ ਵਾਲੇ ਲਿੰਕ ਦਾ URL ਅਤੇ ਵੇਰਵਾ ਦਿਓ। ਵੇਰਵਾ ਚੋਣਵਾਂ ਹੈ।"
msgid "Please enter the URL of the link that you want to insert."
-msgstr "ਸ਼ਾਮਿਲ ਕਰਨ ਵਾਲੇ ਸੰਬੰਧ ਦਾ URL ਦਿਓ।"
+msgstr "ਸ਼ਾਮਿਲ ਕਰਨ ਵਾਲੇ ਲਿੰਕ ਦਾ URL ਦਿਓ।"
msgid "Insert Link"
-msgstr "ਸਬੰਧ ਸ਼ਾਮਿਲ"
+msgstr "ਲਿੰਕ ਸ਼ਾਮਲ"
msgid "_Insert"
msgstr "ਸ਼ਾਮਿਲ(_I)"
@@ -11831,13 +11495,14 @@ msgid ""
"This smiley is disabled because a custom smiley exists for this shortcut:\n"
" %s"
msgstr ""
+"ਇਹ ਸਮਾਈਲੀ ਬੰਦ ਹੈ, ਕਿਉਂਕਿ ਕਸਟਮ ਸਮਾਈਲੀ ਇਸ ਸ਼ਾਰਟਕੱਟ ਲਈ ਮੌਜੂਦ ਹੈ:\n"
+" %s"
msgid "Smile!"
msgstr "ਸਮਾਈਲ!"
-#, fuzzy
msgid "_Manage custom smileys"
-msgstr "ਕਸਟਮ ਸਮਾਇਲੀ ਵੇਖੋ"
+msgstr "ਕਸਟਮ ਸਮਾਇਲੀ ਪਰਬੰਧ(_M)"
msgid "This theme has no available smileys."
msgstr "ਇਸ ਸਰੂਪ ਵਿੱਚ ਕੋਈ ਸਮਾਈਲ ਨਹੀਂ ਹਨ।"
@@ -11932,12 +11597,11 @@ msgstr "ਹਰੀਜ਼ਟਲ ਰੂਲ(_H)"
msgid "_Smile!"
msgstr "ਸਮਾਇਲ(_S)!"
-#, fuzzy
msgid "Log Deletion Failed"
-msgstr "SSL ਕੁਨੈਕਸ਼ਨ ਫੇਲ੍ਹ"
+msgstr "ਲਾਗਇਨ ਹਟਾਉਣ ਲਈ ਫੇਲ੍ਹ"
msgid "Check permissions and try again."
-msgstr ""
+msgstr "ਅਧਿਕਾਰਾਂ ਦੀ ਜਾਂਚ ਕਰਕੇ ਮੁੜ-ਟਰਾਈ ਕਰੋ।"
#, c-format
msgid ""
@@ -11957,13 +11621,11 @@ msgid ""
"s?"
msgstr "ਕੀ ਤੁਸੀਂ %s ਉੱਤੇ ਸ਼ੁਰੂ ਕੀਤੇ ਸਿਸਟਮ ਲਾਗ ਨੂੰ ਪੱਕੇ ਤੌਰ ਉੱਤੇ ਹਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ?"
-#, fuzzy
msgid "Delete Log?"
-msgstr "ਹਟਾਓ"
+msgstr "ਲਾਗ ਹਟਾਉਣਾ ਹੈ?"
-#, fuzzy
msgid "Delete Log..."
-msgstr "ਹਟਾਓ"
+msgstr "ਲਾਗ ਹਟਾਓ..."
#, c-format
msgid "<span size='larger' weight='bold'>Conversation in %s on %s</span>"
@@ -11981,7 +11643,7 @@ msgstr "ਲਾਗ ਫੋਲਡਰ ਝਲਕ(_B)"
msgid "%s %s. Try `%s -h' for more information.\n"
msgstr "%s %s। ਹੋਰ ਜਾਣਕਾਰੀ ਲਈ `%s -h' ਵੇਖੋ।\n"
-#, fuzzy, c-format
+#, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
@@ -12005,12 +11667,13 @@ msgstr ""
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
-" -l, --login[=NAME] automatically login (optional argument NAME specifies\n"
-" account(s) to use, separated by commas)\n"
+" -l, --login[=NAME] enable specified account(s) (optional argument NAME\n"
+" specifies account(s) to use, separated by commas.\n"
+" Without this only the first account will be enabled).\n"
" --display=DISPLAY X display to use\n"
" -v, --version display the current version and exit\n"
-#, fuzzy, c-format
+#, c-format
msgid ""
"%s %s\n"
"Usage: %s [OPTION]...\n"
@@ -12033,12 +11696,12 @@ msgstr ""
" -h, --help display this help and exit\n"
" -m, --multiple do not ensure single instance\n"
" -n, --nologin don't automatically login\n"
-" -l, --login[=NAME] automatically login (optional argument NAME specifies\n"
-" account(s) to use, separated by commas)\n"
-" --display=DISPLAY X display to use\n"
+" -l, --login[=NAME] enable specified account(s) (optional argument NAME\n"
+" specifies account(s) to use, separated by commas.\n"
+" Without this only the first account will be enabled).\n"
" -v, --version display the current version and exit\n"
-#, fuzzy, c-format
+#, c-format
msgid ""
"%s %s has segfaulted and attempted to dump a core file.\n"
"This is a bug in the software and has happened through\n"
@@ -12065,17 +11728,15 @@ msgstr ""
"ਵੀ ਦੇਣਾ ਨਾ ਭੁੱਲੋ। ਜੇ ਤੁਸੀਂ ਇਹ ਨਹੀਂ ਜਾਣਦੇ ਹੋ ਕਿ ਬੈਕਟਰੈਕ ਕਿਵੇਂ ਲੈਣਾ ਹੈ ਤਾਂ,\n"
"ਇਸ ਵਾਸਤੇ ਹਦਾਇਤਾਂ ਲਈ ਵੇਖੋ\n"
"%swiki/GetABacktrace\n"
-"\n"
-"ਜੇ ਤੁਹਾਨੂੰ ਹੋਰ ਵੀ ਮੱਦਦ ਦੀ ਲੋੜ ਹੈ ਤਾਂ SeanEgn ਜਾਂ LSchiere (AIM ਰਾਹੀਂ) ਨਾਲ IM\n"
-" ਕਰੋ ਜੀ। ਸੀਨ ਅਤੇ ਲੁਕੀ ਬਾਰੇ ਹੋਰ ਪਰੋਟੋਕਾਲਾਂ ਰਾਹੀਂ ਸੰਪਰਕ ਜਾਣਕਾਰੀ\n"
-"ਲਈ ਵੇਖੋ:\n"
-"%swiki/DeveloperPages\n"
#. Translators may want to transliterate the name.
#. It is not to be translated.
msgid "Pidgin"
msgstr "ਪਿਡਗਿਨ"
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr "ਬੰਦ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ, ਕਿਉਂਕਿ ਇੱਕ ਹੋਰ libpurple ਕਲਾਇਟ ਪਹਿਲਾਂ ਹੀ ਚੱਲ ਰਿਹਾ ਹੈ।\n"
+
msgid "Open All Messages"
msgstr "ਸਭ ਸੁਨੇਹੇ ਖੋਲ੍ਹੋ"
@@ -12105,8 +11766,7 @@ 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 "The following plugins will be unloaded."
@@ -12118,39 +11778,33 @@ msgstr "ਮਲਟੀਪਲ ਪਲੱਗਇਨਾਂ ਨੂੰ ਅਣ-ਲੋਡ
msgid "Unload Plugins"
msgstr "ਪਲੱਗਇਨ ਅਣ-ਲੋਡ"
-#, fuzzy
msgid "Could not unload plugin"
-msgstr "ਪਬਲਿਕ ਕੁੰਜੀ ਲੋਡ ਨਹੀਂ ਹੋ ਸਕਦੀ ਹੈ"
+msgstr "ਪਲੱਗਇਨ ਅਣਲੋਡ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ"
msgid ""
"The plugin could not be unloaded now, but will be disabled at the next "
"startup."
-msgstr ""
+msgstr "ਪਲੱਗਇਨ ਨੂੰ ਅਨ-ਲੋਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ, ਪਰ ਇਸ ਨੂੰ ਅਗਲੀ ਵਾਰ ਚਾਲੂ ਹੋਣ ਸਮੇਂ ਬੰਦ ਕਰ ਦਿੱਤਾ ਜਾਵੇਗਾ।"
-#, fuzzy, c-format
+#, c-format
msgid ""
"<span foreground=\"red\" weight=\"bold\">Error: %s\n"
"Check the plugin website for an update.</span>"
msgstr ""
-"%s\n"
"<span foreground=\"#ff0000\" weight=\"bold\">ਗਲਤੀ: %s\n"
"ਇੱਕ ਅੱਪਡੇਟ ਲਈ ਪਲੱਗਇਨ ਵੈੱਬਸਾਇਟ ਵੇਖੋ।</span>"
-#, fuzzy
msgid "Author"
-msgstr "ਪ੍ਰਮਾਣਿਤ"
+msgstr "ਲੇਖਕ"
-#, fuzzy
msgid "<b>Written by:</b>"
-msgstr "<b>ਨੂੰ ਭੇਜੀ ਜਾਦੀ ਹੈ:</b>"
+msgstr "<b>ਵਲੋਂ ਲਿਖਿਆ:</b>"
-#, fuzzy
msgid "<b>Web site:</b>"
-msgstr "<b>ਏਦਾਂ ਭੇਜੀ ਜਾਦੀ ਹੈ:</b>"
+msgstr "<b>ਵੈੱਬਸਾਈਟ:</b>"
-#, fuzzy
msgid "<b>Filename:</b>"
-msgstr "<b>ਯੂਜ਼ਰ ਨਾਂ:</b>"
+msgstr "<b>ਫਾਇਲ ਨਾਂ:</b>"
msgid "Configure Pl_ugin"
msgstr "ਪਲੱਗਇਨ ਸੰਰਚਨਾ(_u)"
@@ -12248,11 +11902,10 @@ msgid "Icon"
msgstr "ਆਈਕਾਨ"
msgid "Keyboard Shortcuts"
-msgstr ""
+msgstr "ਕੀਬੋਰਡ ਸ਼ਾਰਟਕੱਟ"
-#, fuzzy
msgid "Cl_ose conversations with the Escape key"
-msgstr "%s ਨਾਲ ਗੱਲਬਾਤ"
+msgstr "ਈਸਕੇਸ (Esc) ਸਵਿੱਚ ਨਾਲ ਗੱਲਾਬਾਤਾਂ ਬੰਦ ਕਰੋ(_o)"
msgid "System Tray Icon"
msgstr "ਸਿਸਟਮ ਟਰੇ ਆਈਕਾਨ"
@@ -12334,7 +11987,7 @@ msgid "Minimi_ze new conversation windows"
msgstr "ਨਵੀਆਂ ਗੱਲਬਾਤ ਵਿੰਡੋਜ਼ ਘੱਟੋ-ਘੱਟ(_z)"
msgid "Minimum input area height in lines:"
-msgstr ""
+msgstr "ਲਾਈਨਾਂ ਵਿੱਚ ਘੱਟੋ-ਘੱਟੋ ਇੰਪੁੱਟ ਏਰੀਆ ਹਾਈਲਾਈਟ:"
msgid "Font"
msgstr "ਫੋਂਟ"
@@ -12380,7 +12033,7 @@ msgid "Ports"
msgstr "ਪੋਰਟ"
msgid "_Enable automatic router port forwarding"
-msgstr ""
+msgstr "ਆਟੋਮੈਟਿਕ ਰਾਊਟਰ ਪੋਰਟ ਫਾਰਵਰਡਿੰਗ ਚਾਲੂ ਕਰੋ(_E)"
msgid "_Manually specify range of ports to listen on"
msgstr "ਸੁਣਨ ਲਈ ਦਸਤੀ ਪੋਰਟ ਸੀਮਾ ਦਿਓ(_M)"
@@ -12419,6 +12072,10 @@ 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 "ਰਿਮੋਟ DNS SOCKS4 ਪਰਾਕਸੀ ਨਾਲ ਵਰਤੋਂ"
+
msgid "_User:"
msgstr "ਯੂਜ਼ਰ(_U):"
@@ -12432,14 +12089,13 @@ msgid "Netscape"
msgstr "ਨੈੱਟਸਕੇਪ"
msgid "Mozilla"
-msgstr "ਮੌਜੀਲਾ"
+msgstr "ਮੋਜ਼ੀਲਾ"
msgid "Konqueror"
msgstr "ਕੌਨਕਿਉਰੋਰ"
-#, fuzzy
msgid "Desktop Default"
-msgstr "ਮੂਲ ਮਨਜ਼ੂਰ ਕਰੋ(_A)"
+msgstr "ਵੇਹੜਾ (ਡੈਸਕਟਾਪ) ਡਿਫਾਲਟ"
msgid "GNOME Default"
msgstr "ਗਨੋਮ ਮੂਲ"
@@ -12500,27 +12156,21 @@ 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 "ਸਭ ਤੋਂ ਉੱਚੀ"
@@ -12541,31 +12191,26 @@ msgstr ""
"Sound c_ommand:\n"
"(ਫਾਇਲ ਨਾਂ ਲਈ %s)"
-#, fuzzy
msgid "M_ute sounds"
-msgstr "ਆਵਾਜ਼ ਚੁੱਪ ਰੱਖੋ"
+msgstr "ਆਵਾਜ਼ ਚੁੱਪ ਰੱਖੋ(_u)"
msgid "Sounds when conversation has _focus"
msgstr "ਗੱਲਬਾਤ ਉੱਤੇ ਕੇਂਦਰਿਤ ਹੋਣ ਸਮੇਂ ਆਵਾਜ਼(_f)"
-#, fuzzy
msgid "_Enable sounds:"
-msgstr "ਸਾਊਂਡ ਯੋਗ:"
+msgstr "ਸਾਊਂਡ ਯੋਗ(_E):"
-#, fuzzy
msgid "V_olume:"
-msgstr "ਵਾਲੀਅਮ:"
+msgstr "ਵਾਲੀਅਮ(_o):"
msgid "Play"
msgstr "ਚਲਾਓ"
-#, fuzzy
msgid "_Browse..."
-msgstr "ਝਲਕ(_e)..."
+msgstr "ਝਲਕ(_B)..."
-#, fuzzy
msgid "_Reset"
-msgstr "ਮੁੜ-ਨਿਰਧਾਰਨ"
+msgstr "ਮੁੜ-ਸੈੱਟ(_R)"
msgid "_Report idle time:"
msgstr "ਵੇਹਲਾ ਸਮਾਂ ਗਿਣਾਓ(_R):"
@@ -12639,12 +12284,11 @@ msgid "Set privacy for:"
msgstr "ਰਹੱਸ ਦਿਓ:"
#. Remove All button
-#, fuzzy
msgid "Remove Al_l"
-msgstr "ਹਟਾਓ"
+msgstr "ਸਭ ਹਟਾਓ(_l)"
msgid "Permit User"
-msgstr "ਸਵੀਕਾਰ ਵਿਅਕਤੀ"
+msgstr "ਮਨਜ਼ੂਰ ਯੂਜ਼ਰ"
msgid "Type a user you permit to contact you."
msgstr "ਵਿਅਕਤੀ ਨਾਂ ਦਿਓ, ਜਿਸ ਨਾਲ ਤੁਸੀਂ ਸੰਪਰਕ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ।"
@@ -12664,10 +12308,10 @@ msgid "Are you sure you wish to allow %s to contact you?"
msgstr "ਕੀ ਤੁਸੀਂ %s ਨੂੰ ਤੁਹਾਡੇ ਨਾਲ ਸੰਪਰਕ ਕਰਨ ਦੇਣ ਦੀ ਪੁਸ਼ਟੀ ਕਰਦੇ ਹੋ?"
msgid "Block User"
-msgstr "ਵਿਅਕਤੀ ਪਾਬੰਦੀ"
+msgstr "ਯੂਜ਼ਰ ਪਾਬੰਦੀ"
msgid "Type a user to block."
-msgstr "ਪਾਬੰਦੀ ਲਗਾਉਣ ਲਈ ਵਿਅਕਤੀ ਲਿਖੋ।"
+msgstr "ਪਾਬੰਦੀ ਲਗਾਉਣ ਲਈ ਯੂਜ਼ਰ ਦਿਓ"
msgid "Please enter the name of the user you wish to block."
msgstr "ਉਸ ਵਿਅਕਤੀ ਦਾ ਨਾਂ ਦਿਓ ਜੀ, ਜਿਸ ਉੱਤੇ ਤੁਸੀਂ ਪਾਬੰਦੀ ਲਗਾਉਣੀ ਚਾਹੁੰਦੇ ਹੋ।"
@@ -12707,20 +12351,20 @@ msgid "_Add Chat"
msgstr "ਗੱਲਬਾਤ ਸ਼ਾਮਲ(_A)"
msgid "Are you sure you want to delete the selected saved statuses?"
-msgstr "ਕੀ ਤੁਸੀਂ ਚੁਣੇ ਸੰਭਾਲੇ ਸਟੇਟਸ ਨੂੰ ਹਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ?"
+msgstr "ਕੀ ਤੁਸੀਂ ਚੁਣੇ ਸੰਭਾਲੀ ਹਾਲਤ ਨੂੰ ਹਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ?"
#. Use button
msgid "_Use"
msgstr "ਵਰਤੋਂ(_U)"
msgid "Title already in use. You must choose a unique title."
-msgstr "ਟਾਇਟਲ ਪਹਿਲਾਂ ਹੀ ਵਰਤੋਂ ਅਧੀਨ ਹੈ। ਤੁਹਾਨੂੰ ਵਿਲੱਖਣ ਟਾਇਟਲ ਚੁਣਨਾ ਚਾਹੀਦਾ ਹੈ।"
+msgstr "ਟਾਈਟਲ ਪਹਿਲਾਂ ਹੀ ਵਰਤੋਂ ਅਧੀਨ ਹੈ। ਤੁਹਾਨੂੰ ਵਿਲੱਖਣ ਟਾਈਟਲ ਚੁਣਨਾ ਚਾਹੀਦਾ ਹੈ।"
msgid "Different"
msgstr "ਵੱਖਰਾ"
msgid "_Title:"
-msgstr "ਟਾਇਟਲ(_T):"
+msgstr "ਟਾਈਟਲ(_T):"
msgid "_Status:"
msgstr "ਹਾਲਤ(_S):"
@@ -12737,75 +12381,62 @@ msgstr "ਸੰਭਾਲੋ ਅਤੇ ਵਰਤੋਂ(_v)"
msgid "Status for %s"
msgstr "%s ਲਈ ਹਾਲਤ"
-#, fuzzy
msgid "Custom Smiley"
-msgstr "ਸਮਾਇਲੀ ਸ਼ਾਮਲ ਕਰੋ"
+msgstr "ਪਸੰਦੀਦਾ ਸਮਾਈਲੀ"
msgid "More Data needed"
-msgstr ""
+msgstr "ਹੋਰ ਡਾਟਾ ਚਾਹੀਦਾ ਹੈ"
msgid "Please provide a shortcut to associate with the smiley."
-msgstr ""
+msgstr "ਸਮਾਈਲੀ ਨਾਲ ਸਬੰਧਿਤ ਸ਼ਾਰਟਕੱਟ ਦਿਓ ਜੀ।"
-#, fuzzy
msgid "Duplicate Shortcut"
-msgstr "ਡੁਪਲੀਕੇਟ ਸੋਧ"
+msgstr "ਡੁਪਲੀਕੇਟ ਸ਼ਾਰਟਕੱਟ"
msgid ""
"A custom smiley for the selected shortcut already exists. Please specify a "
"different shortcut."
-msgstr ""
+msgstr "ਚੁਣੇ ਸ਼ਾਰਟਕੱਟ ਲਈ ਪਹਿਲਾਂ ਹੀ ਇੱਕ ਕਸਟਮ ਸਮਾਈਲੀ ਮੌਜੂਦ ਹੈ। ਵੱਖਰੇ ਸ਼ਾਰਟਕੱਟ ਨਾਲ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜੀ।"
-#, fuzzy
msgid "Please select an image for the smiley."
-msgstr "ਲਿਸਤ ਤੋਂ ਆਪਣਾ ਮੂਡ ਚੁਣੋ ਜੀ।"
+msgstr "ਸਮਾਈਲੀ ਲਈ ਚਿੱਤਰ ਚੁਣੋ ਜੀ।"
-#, fuzzy
msgid "Edit Smiley"
-msgstr "ਸਮਾਇਲੀ ਸ਼ਾਮਲ ਕਰੋ"
+msgstr "ਸਮਾਈਲੀ ਸੋਧ"
-#, fuzzy
msgid "Add Smiley"
-msgstr "ਸਮਾਈਲ!"
+msgstr "ਸਮਾਈਲੀ ਸ਼ਾਮਲ"
-#, fuzzy
msgid "Smiley _Image"
-msgstr "ਚਿੱਤਰ ਸੰਭਾਲੋ"
+msgstr "ਸਮਾਈਲੀ ਚਿੱਤਰ(_I)"
#. Smiley shortcut
msgid "Smiley S_hortcut"
-msgstr ""
+msgstr "ਸਮਾਈਲੀ ਸ਼ਾਰਟਕੱਟ(_h)"
-#, fuzzy
msgid "Smiley"
-msgstr "ਸਮਾਈਲ!"
+msgstr "ਸਮਾਈਲੀ"
-#, fuzzy
msgid "Custom Smiley Manager"
-msgstr "ਸਰਟੀਫਿਕੇਟ ਮੈਨੇਜਰ"
+msgstr "ਪਸੰਦੀਦਾ ਸਮਾਈਲੀ ਮੈਨੇਜਰ"
-#, fuzzy
msgid "Click to change your buddyicon for this account."
-msgstr "ਇਹ ਅਕਾਊਂਟ ਲਈ ਇਹ ਬੱਡੀ ਆਈਕਾਨ ਵਰਤੋਂ(_i):"
+msgstr "ਇਸ ਅਕਾਊਂਟ ਲਈ ਆਪਣਾ ਬੱਡੀ-ਆਈਕਾਨ ਬਦਲਣ ਲਈ ਕਲਿੱਕ ਕਰੋ।"
-#, fuzzy
msgid "Click to change your buddyicon for all accounts."
-msgstr "ਇਹ ਅਕਾਊਂਟ ਲਈ ਇਹ ਬੱਡੀ ਆਈਕਾਨ ਵਰਤੋਂ(_i):"
+msgstr "ਸਭ ਅਕਾਊਂਟਾਂ ਲਈ ਆਪਣਾ ਬੱਡੀ-ਆਈਖਾਨ ਬਦਲਣ ਲਈ ਕਲਿੱਕ ਕਰੋ।"
msgid "Waiting for network connection"
msgstr "ਨੈੱਟਵਰਕ ਕੁਨੈਕਸ਼ਨ ਲਈ ਉਡੀਕ ਜਾਰੀ"
-#, fuzzy
msgid "New status..."
-msgstr "ਨਵਾਂ ਸੁਨੇਹਾ..."
+msgstr "ਨਵੀਂ ਹਾਲਤ..."
-#, fuzzy
msgid "Saved statuses..."
-msgstr "ਸੰਭਾਲੇ ਹਾਲਤ"
+msgstr "ਸੰਭਾਲੇ ਹਾਲਤ..."
-#, fuzzy
msgid "Status Selector"
-msgstr "ਹਾਲਤ ਸ਼ਬਦ"
+msgstr "ਹਾਲਤ ਚੋਣਕਾਰ"
msgid "Google Talk"
msgstr "ਗੂਗਲ ਟਾਕ"
@@ -12859,8 +12490,7 @@ 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
@@ -12902,10 +12532,8 @@ 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' ਲੋਡ ਕਰਨ ਵਿੱਚ ਅਸਫਲ: ਕਾਰਨ ਜਾਣਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ, ਸੰਭਵ ਤੌਰ ਤੇ ਫਾਇਲ ਨਿਕਾਰਾ ਹੈ"
msgid "Save File"
msgstr "ਫਾਇਲ ਸੰਭਾਲੋ"
@@ -12925,24 +12553,20 @@ msgstr "ਜਾਣਕਾਰੀ ਲਵੋ(_G)"
msgid "_Invite"
msgstr "ਸੱਦਾ(_I)"
-#, fuzzy
msgid "_Modify..."
-msgstr "ਸੋਧ(_M)"
+msgstr "ਸੋਧ(_M)..."
-#, fuzzy
msgid "_Add..."
-msgstr "ਸ਼ਾਮਲ(_A)"
+msgstr "ਸ਼ਾਮਲ(_A)..."
msgid "_Open Mail"
msgstr "ਮੇਲ ਖੋਲ੍ਹੋ(_O)"
-#, fuzzy
msgid "_Edit"
-msgstr "ਸੋਧ"
+msgstr "ਸੋਧ(_E)"
-#, fuzzy
msgid "Pidgin Tooltip"
-msgstr "ਪਿਡਗਿਨ"
+msgstr "ਪਿਡਗਿਨ ਟੂਲਟਿੱਪ"
msgid "Pidgin smileys"
msgstr "ਪਿਡਗਿਨ ਸਮਾਇਲੀ"
@@ -12956,12 +12580,11 @@ msgstr "ਇਹ ਆਯੋਗ ਕੀਤਾ ਗਰਾਫਿਕਲ ਇਮੋਸ਼
msgid "none"
msgstr "ਕੋਈ ਨਹੀਂ"
-#, fuzzy
msgid "Small"
-msgstr "ਈਮੇਲ"
+msgstr "ਛੋਟਾ"
msgid "Smaller versions of the default smilies"
-msgstr ""
+msgstr "ਡਿਫਾਲਟ ਸਮਾਈਲ ਲਈ ਛੋਟਾ ਵਰਜਨ"
msgid "Response Probability:"
msgstr "ਜਵਾਬ ਸੰਭਾਵਨਾ:"
@@ -13000,7 +12623,7 @@ msgstr "ਸੰਪਰਕ ਉਪਲਬਧਤਾ ਅਨੁਮਾਨ ਪਲੱਗਇ
#. * summary
msgid "Displays statistical information about your buddies' availability"
-msgstr ""
+msgstr "ਆਪਣੀ ਬੱਡੀ ਦੀ ਉਪਲੱਬਧਤਾ ਲਈ ਅੰਕੜੇ ਵੇਖੋ।"
msgid "Buddy is idle"
msgstr "ਬੱਡੀ ਵੇਹਲਾ ਹੈ"
@@ -13044,16 +12667,14 @@ 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 "ਗੱਲਬਾਤ ਰੰਗ"
@@ -13158,7 +12779,6 @@ msgid "Provides support for mouse gestures"
msgstr "ਮਾਊਸ ਇਸ਼ਾਰਿਆਂ ਲਈ ਸਹਿਯੋਗ ਦਿੰਦਾ ਹੈ"
#. * description
-#, fuzzy
msgid ""
"Allows support for mouse gestures in conversation windows. Drag the middle "
"mouse button to perform certain actions:\n"
@@ -13169,9 +12789,9 @@ msgstr ""
"ਗੱਲਬਾਤ ਵਿੰਡੋ ਵਿੱਚ ਮਾਊਸ ਗੈਸਟਰ ਲਈ ਸਹਿਯੋਗ ਮਨਜ਼ੂਰ ਕਰੋ।\n"
"ਕੁਝ ਐਕਸ਼ਨ ਕਰਨ ਲਈ ਮਿਡਲ ਮਾਊਂਸ ਬਟਨ ਡਰੈਗ ਵਰਤੋਂ:\n"
"\n"
-"ਇੱਕ ਗੱਲਬਾਤ ਨੂੰ ਬੰਦ ਕਰਨ ਵਾਸਤੇ ਹੇਠਾਂ ਨੂੰ ਡਰੈਗ ਕਰਕੇ ਸੱਜਾ ਪਾਸੇ ਭੇਜੋ।\n"
-"ਪਿਛਲੀ ਗੱਲਬਾਤ ਉੱਤੇ ਸਵਿੱਚ ਕਰਨ ਵਾਸਤੇ ਉੱਤੇ ਡਰੈਗ ਕਰਕੇ ਖੱਬੇ ਸਵਿੱਚ ਕਰੋ।\n"
-"ਅਗਲੀ ਗੱਲਬਾਤ ਵਿੱਚ ਜਾਣ ਲਈ ਉੱਤੇ ਡਰੈਗ ਕਰਕੇ ਸੱਜੇ ਪਾਸੇ ਭੇਜੋ।"
+" • ਇੱਕ ਗੱਲਬਾਤ ਨੂੰ ਬੰਦ ਕਰਨ ਵਾਸਤੇ ਹੇਠਾਂ ਨੂੰ ਡਰੈਗ ਕਰਕੇ ਸੱਜਾ ਪਾਸੇ ਭੇਜੋ।\n"
+" • ਪਿਛਲੀ ਗੱਲਬਾਤ ਉੱਤੇ ਸਵਿੱਚ ਕਰਨ ਵਾਸਤੇ ਉੱਤੇ ਡਰੈਗ ਕਰਕੇ ਖੱਬੇ ਸਵਿੱਚ ਕਰੋ।\n"
+" • ਅਗਲੀ ਗੱਲਬਾਤ ਵਿੱਚ ਜਾਣ ਲਈ ਉੱਤੇ ਡਰੈਗ ਕਰਕੇ ਸੱਜੇ ਪਾਸੇ ਭੇਜੋ।"
msgid "Instant Messaging"
msgstr "ਤਰੁੰਤ ਸੁਨੇਹੇਦਾਰ"
@@ -13247,9 +12867,8 @@ msgstr "ਈਵੇਲੂਸ਼ਨ ਨਾਲ ਸਬੰਧ ਉਪਲੱਬਧ ਕ
msgid "Please enter the person's information below."
msgstr "ਵਿਅਕਤੀ ਬਾਰੇ ਜਾਣਕਾਰੀ ਦਿਓ ਜੀ।"
-#, fuzzy
msgid "Please enter the buddy's username and account type below."
-msgstr "ਬੱਡੀ ਦਾ ਸਕਰੀਨ ਨਾਂ ਅਤੇ ਅਕਾਊਂਟ ਕਿਸਮ ਹੇਠਾਂ ਦਿਓ ਜੀ"
+msgstr "ਬੱਡੀ ਦਾ ਯੂਜ਼ਰ ਨਾਂ ਅਤੇ ਅਕਾਊਂਟ ਕਿਸਮ ਹੇਠਾਂ ਦਿਓ ਜੀ"
msgid "Account type:"
msgstr "ਅਕਾਊਂਟ ਨਾਂ:"
@@ -13325,9 +12944,8 @@ msgstr "ਮਾਰਕ ਲਾਈਨ"
msgid "Draw a line to indicate new messages in a conversation."
msgstr "ਇੱਕ ਗੱਲਬਾਤ ਵਿੱਚ ਨਵਾਂ ਸੁਨੇਹਾ ਦਰਸਾਉਣ ਵਾਸਤੇ ਇੱਕ ਲਾਈਨ ਖਿੱਚੋ।"
-#, fuzzy
msgid "Jump to markerline"
-msgstr "ਮਾਰਕ ਲਾਈਨ"
+msgstr "ਮਾਰਕ ਲਾਈਨ ਉੱਤੇ ਜਾਓ"
msgid "Draw Markerline in "
msgstr "ਮਾਰਕ-ਲਾਈਨ ਬਣਾਓ"
@@ -13389,11 +13007,10 @@ msgstr ""
#. ---------- "Notify For" ----------
msgid "Notify For"
-msgstr "ਸੂਚਨਾ"
+msgstr "ਸੂਚਨਾ ਦਿਓ"
-#, fuzzy
msgid "\t_Only when someone says your username"
-msgstr "\tਜਦੋਂ ਕੋਈ ਤੁਹਾਡਾ ਸਕਰੀਨ ਨਾਂ ਲਵੇ(_O)"
+msgstr "\tਜਦੋਂ ਕੋਈ ਤੁਹਾਡਾ ਯੂਜ਼ਰ ਨਾਂ ਲਵੇ(_O)"
msgid "_Focused windows"
msgstr "ਫੋਕਸ ਹੋਈਆਂ ਵਿੰਡੋਜ਼(_F)"
@@ -13417,18 +13034,16 @@ msgstr "X ਵਿਸ਼ੇਸ਼ਤਾ ਵਿੱਚ ਨਵੇਂ ਸੁਨੇਹ
msgid "Set window manager \"_URGENT\" hint"
msgstr "ਵਿੰਡੋ ਮੈਨੇਜਰ ਵਿੱਚ \"_URGENT\" ਸੰਕੇਤ ਦਿਓ"
-#, fuzzy
msgid "_Flash window"
-msgstr "ਗੱਲਬਾਤ ਵਿੰਡੋ(_h)"
+msgstr "ਵਿੰਡੋ ਝਪਕੋ(_F)"
#. Raise window method button
msgid "R_aise conversation window"
msgstr "ਗੱਲਬਾਤ ਵਿੰਡੋ ਉਭਾਰੋ(_a)"
#. Present conversation method button
-#, fuzzy
msgid "_Present conversation window"
-msgstr "ਗੱਲਬਾਤ ਵਿੰਡੋ ਉਭਾਰੋ(_a)"
+msgstr "ਗੱਲਬਾਤ ਵਿੰਡੋ ਪੇਸ਼ ਕਰੋ(_P)"
#. ---------- "Notification Removals" ----------
msgid "Notification Removal"
@@ -13504,15 +13119,13 @@ msgid "Secondary Cursor Color"
msgstr "ਸੈਕੰਡਰੀ ਕਰਸਰ ਰੰਗ"
msgid "Hyperlink Color"
-msgstr "ਹਾਇਪਰਲਿੰਕ ਰੰਗ"
+msgstr "ਹਾਈਪਰਲਿੰਕ ਰੰਗ"
-#, fuzzy
msgid "Visited Hyperlink Color"
-msgstr "ਹਾਇਪਰਲਿੰਕ ਰੰਗ"
+msgstr "ਖੋਲ੍ਹੇ ਗਏ ਹਾਈਪਰਲਿੰਕ ਰੰਗ"
-#, fuzzy
msgid "Highlighted Message Name Color"
-msgstr "ਉਘਾੜੇ ਸੁਨੇਹੇ"
+msgstr "ਹਾਈਲਾਈਟ ਕੀਤਾ ਸੁਨੇਹਾ ਨਾਂ ਰੰਗ"
msgid "GtkTreeView Horizontal Separation"
msgstr "GtkTreeView ਹਰੀਜ਼ਟਲ ਵੱਖਰੇਵਾ"
@@ -13529,7 +13142,6 @@ msgstr "ਨੋਟੀਫਾਈ ਡਾਈਲਾਗ"
msgid "Select Color"
msgstr "ਰੰਗ ਚੁਣੋ"
-#, c-format
msgid "Select Interface Font"
msgstr "ਇੰਟਰਫੇਸ ਰੰਗ ਚੁਣੋ"
@@ -13603,18 +13215,16 @@ msgstr ""
#, c-format
msgid "You can upgrade to %s %s today."
-msgstr ""
+msgstr "ਤੁਸੀਂ ਅੱਜ %s %s ਲਈ ਅੱਪਗਰੇਡ ਕੀਤਾ ਹੈ।"
msgid "New Version Available"
msgstr "ਨਵਾਂ ਵਰਜਨ ਉਪਲੱਬਧ ਹੈ"
-#, fuzzy
msgid "Later"
-msgstr "ਮਿਤੀ"
+msgstr "ਬਾਅਦ ਵਿੱਚ"
-#, fuzzy
msgid "Download Now"
-msgstr "%s 'ਤੇ ਯੂਜ਼ਰ: %s"
+msgstr "ਹੁਣੇ ਡਾਊਨਲੋਡ"
#. *< type
#. *< ui_requirement
@@ -13645,21 +13255,21 @@ msgstr "ਨਵੀਂ ਵਰਜਨ ਲਈ ਨਿਯਮਤ ਜਾਂਚ ਕਰੋ
#. *< dependencies
#. *< priority
#. *< id
-#, fuzzy
msgid "Send Button"
-msgstr "ਭੇਜੋ"
+msgstr "ਭੇਜੋ ਬਟਨ"
#. *< name
#. *< version
-#, fuzzy
msgid "Conversation Window Send Button."
-msgstr "ਗੱਲਬਾਤ ਵਿੰਡੋ ਓਹਲੇ"
+msgstr "ਗੱਲਬਾਤ ਵਿੰਡੋ ਭੇਜੋ ਬਟਨ ਹੈ।"
#. *< summary
msgid ""
"Adds a Send button to the entry area of the conversation window. Intended "
"for when no physical keyboard is present."
msgstr ""
+"ਗੱਲਬਾਤ ਵਿੰਡੋ ਦੇ ਲਿਖਣ ਖੇਤਰ ਵਿੱਚ ਭੇਜੋ ਬਟਨ ਸ਼ਾਮਲ ਕਰੋ। ਇਹ ਕੋਈ ਅਸਲ ਕੀਬੋਰਡ ਨਾ ਹੋਣ ਦੀ "
+"ਹਾਲਤ ਲਈ ਹੈ।"
msgid "Duplicate Correction"
msgstr "ਡੁਪਲੀਕੇਟ ਸੋਧ"
@@ -13751,7 +13361,6 @@ msgstr "ਹਰੇਕ N ਮਿੰਟ ਬਾਅਦ iChat-ਸਟਾਇਲ ਮੁਤ
msgid "Timestamp Format Options"
msgstr "ਟਾਈਮ-ਸਟੈਂਪ ਫਾਰਮੈਟ ਚੋਣ"
-#, c-format
msgid "_Force 24-hour time format"
msgstr "24-ਘੰਟੇ ਸਮਾਂ ਫਾਰਮੈਟ ਲਈ ਮਜ੍ਬੂਰ(_F)"
@@ -13868,17 +13477,13 @@ msgstr "ਬੱਡੀ ਲਿਸਟ ਵਿੰਡੋ ਹਮੇਸ਼ਾ ਉੱਤ
msgid "Only when docked"
msgstr "ਸਿਰਫ਼ ਜਦੋਂ ਡੋਕ ਹੋਵੇ"
-msgid "_Flash window when chat messages are received"
-msgstr "ਗੱਲਬਾਤ ਸੁਨੇਹੇ ਪ੍ਰਾਪਤ ਹੋਣ ਉੱਤੇ ਵਿੰਡੋ ਝਲਕਾਓ(_F)"
-
msgid "Windows Pidgin Options"
msgstr "ਵਿੰਡੋ ਪਿਡਗਿਨ ਚੋਣਾਂ"
msgid "Options specific to Pidgin for Windows."
msgstr "ਵਿੰਡੋ ਲਈ ਪਿਡਗਿਨ ਖਾਸ ਚੋਣਾਂ"
-msgid ""
-"Provides options specific to Pidgin for Windows , such as buddy list docking."
+msgid "Provides options specific to Pidgin for Windows , such as buddy list docking."
msgstr "ਵਿੰਡੋ ਲਈ ਪਿਡਗਿਨ ਲਈ ਖਾਸ ਚੋਣ ਹੈ, ਜਿਵੇਂ ਕਿ ਬੱਡੀ ਲਿਸਟ ਡੌਕਿੰਗ।"
msgid "<font color='#777777'>Logged out.</font>"
@@ -13918,439 +13523,3 @@ msgstr "ਰਾਅ XMPP ਪ੍ਹੈਰਾ ਭੇਜੋ ਅਤੇ ਲਵੋ"
msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr "ਇਹ ਪਲੱਗਇਨ XMPP ਸਰਵਰ ਜਾਂ ਕਲਾਇਟ ਡੀਬੱਗ ਲਈ ਫਾਇਦੇਮੰਦ ਹੈ।"
-#~ msgid "A group with the name already exists."
-#~ msgstr "ਇਸ ਨਾਂ ਨਾਲ ਗਰੁੱਪ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ।"
-
-#~ msgid "Primary Information"
-#~ msgstr "ਪ੍ਰਾਇਮਰੀ ਜਾਣਕਾਰੀ"
-
-#~ msgid "Blood Type"
-#~ msgstr "ਖੂਨ ਕਿਸਮ"
-
-#, fuzzy
-#~ msgid "Update information"
-#~ msgstr "ਮੇਰੀ ਜਾਣਕਾਰੀ ਅੱਪਡੇਟ ਕਰੋ"
-
-#, fuzzy
-#~ msgid "Successed:"
-#~ msgstr "ਗਤੀ:"
-
-#~ msgid ""
-#~ "Setting custom faces is not currently supported. Please choose an image "
-#~ "from %s."
-#~ msgstr "ਇਸ ਸਮੇਂ ਕਸਟਮ ਫੇਸ ਸੈੱਟ ਕਰਨਾ ਸਹਾਇਕ ਨਹੀਂ ਹੈ। %s ਤੋਂ ਚਿੱਤਰ ਚੁਣੋ ਜੀ।"
-
-#~ msgid "Invalid QQ Face"
-#~ msgstr "ਗਲਤ QQ ਮੁੱਖ"
-
-#~ msgid "You rejected %d's request"
-#~ msgstr "ਤੁਸੀਂ %d ਦੀ ਮੰਗ ਠੁਕਰਾਈ"
-
-#~ msgid "Reject request"
-#~ msgstr "ਮੰਗ ਨਾ-ਮਨਜ਼ੂਰ"
-
-#~ msgid "Add buddy with auth request failed"
-#~ msgstr "ਬੱਡੀ ਨੂੰ ਪਰਮਾਣਕਿਤਾ ਮੰਗ ਨਾਲ ਸ਼ਾਮਲ ਕਰਨ ਲਈ ਫੇਲ੍ਹ"
-
-#, fuzzy
-#~ msgid "Add into %d's buddy list"
-#~ msgstr "ਬੱਡੀ-ਲਿਸਟ ਲੋਡ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ"
-
-#, fuzzy
-#~ msgid "QQ Number Error"
-#~ msgstr "QQ ਨੰਬਰ"
-
-#~ msgid "Group Description"
-#~ msgstr "ਗਰੁੱਪ ਵੇਰਵਾ"
-
-#~ msgid "Auth"
-#~ msgstr "ਪਰਮਾ"
-
-#~ msgid "Approve"
-#~ msgstr "ਮਨਜ਼ੂਰ"
-
-#, fuzzy
-#~ msgid "Successed to join Qun %d, operated by admin %d"
-#~ msgstr "ਤੁਹਾਡੀ %d ਗਰੁੱਪ ਨੂੰ ਜੁਆਇੰਨ ਕਰਨ ਦੀ ਮੰਗ ਨੂੰ ਐਡਮਿਨ %d ਨੇ ਰੱਦ ਕਰ ਦਿੱਤਾ ਹੈ"
-
-#, fuzzy
-#~ msgid "[%d] removed from Qun \"%d\""
-#~ msgstr "ਤੁਸੀਂ [%d] ਗਰੁੱਪ \"%d\" ਛੱਡਿਆ"
-
-#, fuzzy
-#~ msgid "[%d] added to Qun \"%d\""
-#~ msgstr "ਤੁਹਾਨੂੰ [%d] ਗਰੁੱਪ \"%d\" ਵਿੱਚ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ ਹੈ"
-
-#~ msgid "I am a member"
-#~ msgstr "ਮੈਂ ਮੈਂਬਰ ਹਾਂ"
-
-#, fuzzy
-#~ msgid "I am requesting"
-#~ msgstr "ਗਲਤ ਬੇਨਤੀ"
-
-#~ msgid "I am the admin"
-#~ msgstr "ਮੈਂ ਐਡਮਿਨ ਹਾਂ"
-
-#~ msgid "Unknown status"
-#~ msgstr "ਅਣਜਾਣ ਹਾਲਤ"
-
-#, fuzzy
-#~ msgid "Remove from Qun"
-#~ msgstr "ਗਰੁੱਪ ਹਟਾਓ"
-
-#~ msgid "You entered a group ID outside the acceptable range"
-#~ msgstr "ਤੁਸੀਂ ਮਨਜ਼ੂਰ-ਸ਼ੁੱਦਾ ਰੇਜ਼ ਤੋਂ ਬਾਹਰ ਗਰੁੱਪ ID ਦਿੱਤਾ ਹੈ"
-
-#~ msgid "Are you sure you want to leave this Qun?"
-#~ msgstr "ਕੀ ਤੁਸੀਂ ਕਿਊਨ ਨੂੰ ਛੱਡਣਾ ਚਾਹੁੰਦੇ ਹੋ?"
-
-#~ msgid "Do you want to approve the request?"
-#~ msgstr "ਕੀ ਤੁਸੀਂ ਇਹ ਮੰਗ ਮੰਨਣੀ ਚਾਹੁੰਦੇ ਹੋ?"
-
-#, fuzzy
-#~ msgid "Change Qun member"
-#~ msgstr "ਫੋਨ ਨੰਬਰ"
-
-#, fuzzy
-#~ msgid "Change Qun information"
-#~ msgstr "ਚੈਨਲ ਜਾਣਕਾਰੀ"
-
-#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr "%s (%s)"
-
-#~ msgid "System Message"
-#~ msgstr "ਸਿਸਟਮ ਸੁਨੇਹਾ"
-
-#~ msgid "<b>Last Login IP</b>: %s<br>\n"
-#~ msgstr "<b>ਆਖਰੀ ਲਾਗਇਨ IP</b>: %s<br>\n"
-
-#~ msgid "<b>Last Login Time</b>: %s\n"
-#~ msgstr "<b>ਆਖਰੀ ਲਾਗਇਨ ਸਮਾਂ</b>: %s\n"
-
-#~ msgid "Set My Information"
-#~ msgstr "ਮੇਰੀ ਜਾਣਕਾਰੀ ਸੈੱਟ ਕਰੋ"
-
-#, fuzzy
-#~ msgid "Leave the QQ Qun"
-#~ msgstr "ਇਹ QQ ਕਿਊਨ ਛੱਡਣਾ ਚਾਹੁੰਦੇ ਹੋ"
-
-#~ msgid "Block this buddy"
-#~ msgstr "ਇਹ ਬੱਡੀ ਉੱਤੇ ਪਾਬੰਦੀ ਲਾਓ"
-
-#, fuzzy
-#~ msgid "Error password: %s"
-#~ msgstr "ਪਾਸਵਰਡ ਬਦਲਣ ਦੌਰਾਨ ਗਲਤੀ"
-
-#, fuzzy
-#~ msgid "Failed to connect all servers"
-#~ msgstr "ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਦੌਰਨ ਗਲਤੀ"
-
-#, fuzzy
-#~ msgid "Connecting server %s, retries %d"
-#~ msgstr ""
-#~ "ਸਰਵਰ (%s) ਵਲੋਂ ਕੁਨੈਕਸ਼ਨ ਗਲਤੀ:\n"
-#~ "%s"
-
-#, fuzzy
-#~ msgid "Do you approve the requestion?"
-#~ msgstr "ਕੀ ਤੁਸੀਂ ਇਹ ਮੰਗ ਮੰਨਣੀ ਚਾਹੁੰਦੇ ਹੋ?"
-
-#, fuzzy
-#~ msgid "Do you add the buddy?"
-#~ msgstr "ਕੀ ਤੁਸੀਂ ਇਸ ਬੱਡੀ ਨੂੰ ਸ਼ਾਮਲ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?"
-
-#, fuzzy
-#~ msgid "%s added you [%s] to buddy list"
-#~ msgstr "%s ਨੇ ਤੁਹਾਨੂੰ [%s] ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ 'ਚ ਜੋੜਿਆ ਹੈ।"
-
-#, fuzzy
-#~ msgid "QQ Budy"
-#~ msgstr "ਬੱਡੀ ਸ਼ਾਮਿਲ"
-
-#~ msgid "%s wants to add you [%s] as a friend"
-#~ msgstr "%s ਤੁਹਾਨੂੰ [%s] ਨੂੰ ਦੋਸਤ ਦੇ ਤੌਰ ਉੱਤੇ ਸ਼ਾਮਲ ਕਰਨਾ ਚਾਹੁੰਦਾ ਹੈ"
-
-#, fuzzy
-#~ msgid "%s is not in buddy list"
-#~ msgstr "%s ਤੁਹਾਡੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ ਨਹੀਂ ਹੈ।"
-
-#, fuzzy
-#~ msgid "Would you add?"
-#~ msgstr "ਕੀ ਤੁਸੀਂ ਉਸ ਨੂੰ ਸ਼ਾਮਲ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?"
-
-#, fuzzy
-#~ msgid "QQ Server Notice"
-#~ msgstr "ਸਰਵਰ ਪੋਰਟ"
-
-#, fuzzy
-#~ msgid "Network disconnected"
-#~ msgstr "ਰਿਮੋਟ ਡਿਸ-ਕੁਨੈਕਟ ਕੀਤਾ"
-
-#~ msgid "developer"
-#~ msgstr "ਡਿਵੈਲਪਰ"
-
-#~ msgid "XMPP developer"
-#~ msgstr "XMPP ਡੀਵੈਲਪਰ"
-
-#~ msgid "Artists"
-#~ msgstr "ਕਲਾਕਾਰ"
-
-#~ msgid ""
-#~ "You are using %s version %s. The current version is %s. You can get it "
-#~ "from <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 "Screen name:"
-#~ msgstr "ਸਕਰੀਨ ਨਾਂ:"
-
-#~ msgid "Pounce only when my status is not available"
-#~ msgstr "ਪਉਨਸ ਕੇਵਲ ਉਦੋਂ ਹੀ, ਜਦੋਂ ਮੇਰਾ ਸਟੇਟਸ ਉਪਲੱਬਧ ਨਾ ਹੋਵੇ"
-
-#~ msgid "Someone says your screen name in chat"
-#~ msgstr "ਕਿਸੇ ਨੇ ਗੱਲਬਾਤ ਵਿੱਚ ਤੁਹਾਡਾ ਨਾਂ ਲਿਆ ਹੈ"
-
-#~ msgid "EOF while reading from resolver process"
-#~ msgstr "ਹੱਲਕਰਤਾ ਪਰੋਸੈੱਸ ਤੋਂ ਪੜ੍ਹਨ ਦੌਰਾਨ EOF"
-
-#~ msgid "There were errors unloading the plugin."
-#~ msgstr "ਪਲੱਗਇਨ ਅਣ-ਲੋਡ ਕਰਨ ਦੌਰਾਨ ਗਲਤੀਆਂ ਹਨ।"
-
-#~ msgid "Error setting socket options"
-#~ msgstr "ਸਾਕਟ ਚੋਣਾਂ ਦੇਣ ਦੌਰਾਨ ਗਲਤੀ"
-
-#~ msgid "Couldn't open file"
-#~ msgstr "ਫਾਇਲ ਖੋਲ੍ਹੀ ਨਹੀਂ ਜਾ ਸਕੀ"
-
-#~ msgid ""
-#~ "This server requires plaintext authentication over an unencrypted "
-#~ "connection. Allow this and continue authentication?"
-#~ msgstr ""
-#~ "ਇਹ ਸਰਵਰ ਲਈ ਗ਼ੈਰ-ਇੰਕ੍ਰਿਪਟਡ ਕੁਨੈਕਸ਼ਨ ਉੱਤੇ ਪਲੇਨ-ਟੈਕਸਟ ਪਰਮਾਣਕਿਤਾ ਲੋੜੀਦੀ ਹੈ। ਕੀ ਇਹ "
-#~ "ਪਰਮਾਣਿਕਤਾ ਮਨਜ਼ੂਰ ਕਰਕੇ ਜਾਰੀ ਰੱਖਣਾ ਹੈ?"
-
-#~ msgid "Error initializing session"
-#~ msgstr "ਸ਼ੈਸ਼ਨ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਗਲਤੀ"
-
-#~ msgid "Invalid screen name"
-#~ msgstr "ਗਲਤ ਸਕਰੀਨ ਨਾਂ ਹੈ"
-
-#~ msgid "Current media"
-#~ msgstr "ਮੌਜੂਦਾ ਮੀਡਿਆ"
-
-#~ msgid ""
-#~ "Windows Live ID authentication: cannot find authenticate token in server "
-#~ "response"
-#~ msgstr "ਵਿੰਡੋ ਲਾਇਵ ID ਪਰਮਾਣਕਿਤਾ: ਸਰਵਰ ਜਵਾਬ ਵਿੱਚ ਪਰਮਾਣਕਿਤਾ ਟੋਕਨ ਨਹੀਂ ਲੱਭਿਆ ਜਾ ਸਕਦਾ"
-
-#~ msgid "Windows Live ID authentication Failed"
-#~ msgstr "ਵਿੰਡੋ ਲਾਇਵ ID ਪਰਮਾਣਕਿਤਾ ਫੇਲ੍ਹ ਹੋਈ"
-
-#~ msgid ""
-#~ "Sorry, passwords over %d characters in length (yours is %d) are not "
-#~ "supported by MySpace."
-#~ msgstr ""
-#~ "ਅਫਸੋਸ, MySpace ਵਲੋਂ %d ਅੱਖਰਾਂ ਤੋਂ ਵੱਧ ਲੰਬਾਈ ਦਾ ਪਾਸਵਰਡ ਮਨਜ਼ੂਰ ਨਹੀਂ ਹੈ (ਤੁਸੀਂ %d ਅੱਖਰ ਦਿੱਤੇ)।"
-
-#~ msgid ""
-#~ "Please go to http://editprofile.myspace.com/index.cfm?fuseaction=profile."
-#~ "username and choose a username and try to login again."
-#~ msgstr ""
-#~ "http://editprofile.myspace.com/index.cfm?fuseaction=profile.username ਉੱਤੇ "
-#~ "ਜਾਓ ਜੀ ਅਤੇ ਯੂਜ਼ਰ-ਨਾਂ ਚੁਣ ਕੇ ਫਿਰ ਲਾਗਇਨ ਕਰਨ ਦੀ ਟਰਾਈ ਕਰੋ।"
-
-#~ msgid "Unable to make SSL connection to server."
-#~ msgstr "ਸਰਵਰ ਨਾਲ SSL ਕੁਨੈਕਸ਼ਨ ਬਣਾਉਣ ਲਈ ਅਸਫਲ ਹੈ।"
-
-#~ msgid "Too evil (sender)"
-#~ msgstr "ਕਈ ਬੁਰੇ (ਭੇਜਣ ਵਾਲਾ)"
-
-#~ msgid "Too evil (receiver)"
-#~ msgstr "ਕਈ ਬੁਰੇ (ਪ੍ਰਾਪਤਕਰਤਾ)"
-
-#~ msgid "Screen name sent"
-#~ msgstr "ਸਕਰੀਨ ਨਾਂ ਭੇਜਿਆ"
-
-#~ msgid "Invalid screen name."
-#~ msgstr "ਗਲਤ ਸਕਰੀਨ ਨਾਂ ਹੈ।"
-
-#~ msgid "Available Message"
-#~ msgstr "ਉਪਲੱਬਧ ਸੁਨੇਹਾ"
-
-#~ msgid "Screen name"
-#~ msgstr "ਸਕਰੀਨ ਨਾਂ"
-
-#~ msgid "Invalid chat name specified."
-#~ msgstr "ਗਲਤ ਗੱਲਬਾਤ ਨਾਂ ਦਿੱਤਾ ਹੈ।"
-
-#~ msgid "Away Message"
-#~ msgstr "ਦੂਰ ਸੁਨੇਹਾ"
-
-#~ msgid "<i>(retrieving)</i>"
-#~ msgstr " <i>(ਲਿਆ ਜਾ ਰਿਹਾ ਹੈ)</i>"
-
-#~ msgid "Use recent buddies group"
-#~ msgstr "ਤਾਜ਼ਾ ਬੱਡੀ ਗਰੁੱਪ ਵਰਤੋਂ"
-
-#~ msgid "Show how long you have been idle"
-#~ msgstr "ਵੇਖੋ ਕਿ ਕਿੰਨੇ ਚਿਰ ਤੋਂ ਤੁਸੀਂ ਵੇਹਲੇ ਹੋ"
-
-#~ msgid "Your information has been updated"
-#~ msgstr "ਤੁਹਾਡੀ ਜਾਣਕਾਰੀ ਅੱਪਡੇਟ ਕੀਤੀ ਗਈ ਹੈ"
-
-#~ msgid "Input your reason:"
-#~ msgstr "ਆਪਣਾ ਕਾਰਨ ਦਿਓ:"
-
-#~ msgid "You have successfully removed a buddy"
-#~ msgstr "ਤੁਸੀਂ ਇੱਕ ਬੱਡੀ ਨੂੰ ਹਟਾ ਦਿੱਤਾ ਹੈ"
-
-#~ msgid "You have successfully removed yourself from your friend's buddy list"
-#~ msgstr "ਤੁਸੀਂ ਆਪਣੇ ਆਪ ਨੂੰ ਆਪਣੇ ਦੋਸਤ ਦੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ ਹਟਾ ਲਿਆ ਹੈ"
-
-#~ msgid "You have added %d to buddy list"
-#~ msgstr "ਤੁਸੀਂ %d ਨੂੰ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਲ ਕੀਤਾ ਹੈ"
-
-#~ msgid "Invalid QQid"
-#~ msgstr "ਗਲਤ QQid"
-
-#~ msgid "Please enter external group ID"
-#~ msgstr "ਬਾਹਰੀ ਗਰੁੱਪ ID ਦਿਓ ਜੀ"
-
-#~ msgid "Your request to join group %d has been approved by admin %d"
-#~ msgstr "ਤੁਹਾਡੀ %d ਗਰੁੱਪ ਨੂੰ ਜੁਆਇੰਨ ਕਰਨ ਦੀ ਮੰਗ ਨੂੰ ਐਡਮਿਨ %d ਨੇ ਮਨਜ਼ੂਰ ਕਰ ਲਿਆ ਹੈ"
-
-#~ msgid "This group has been added to your buddy list"
-#~ msgstr "ਇਹ ਗਰੁੱਪ ਤੁਹਾਡੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ ਜੋੜਿਆ ਗਿਆ"
-
-#~ msgid "I am applying to join"
-#~ msgstr "ਮੈਂ ਜੁਆਇੰਨ ਕਰਨ ਵਾਸਤੇ ਅਪਲਾਈ ਕੀਤਾ"
-
-#~ msgid "You have successfully left the group"
-#~ msgstr "ਤੁਸੀਂ ਗਰੁੱਪ ਛੱਡ ਦਿੱਤਾ ਹੈ।"
-
-#~ msgid "QQ Group Auth"
-#~ msgstr "QQ ਗਰੁੱਪ ਪਰਮਾਣ"
-
-#~ msgid "Your authorization request has been accepted by the QQ server"
-#~ msgstr "ਤੁਹਾਡੀ ਪਰਮਾਣਿਕਤਾ ਮੰਗ ਨੂੰ QQ ਸਰਵਰ ਵਲੋਂ ਮਨਜ਼ੂਰ ਕੀਤਾ ਗਿਆ ਹੈ।"
-
-#~ msgid "Code [0x%02X]: %s"
-#~ msgstr "ਕੋਡ [0x%02X]: %s"
-
-#~ msgid "Group Operation Error"
-#~ msgstr "ਗਰੁੱਪ ਓਪਰੇਸ਼ਨ ਗਲਤੀ"
-
-#~ msgid "Enter your reason:"
-#~ msgstr "ਆਪਣਾ ਕਾਰਨ ਦਿਓ:"
-
-#~ msgid "Error requesting login token"
-#~ msgstr "ਲਾਗਇਨ ਟੋਕਨ ਮੰਗ ਗਲਤੀ"
-
-#~ msgid "Unable to login, check debug log"
-#~ msgstr "ਲਾਗਇਨ ਕਰਨ ਲਈ ਅਸਮਰੱਥ, ਡੀਬੱਗ ਲਾਗ ਵੇਖੋ"
-
-#~ msgid "TCP Address"
-#~ msgstr "TCP ਐਡਰੈੱਸ"
-
-#~ msgid "UDP Address"
-#~ msgstr "UDP ਐਡਰੈੱਸ"
-
-#~ msgid "Show Login Information"
-#~ msgstr "ਲਾਗਇਨ ਜਾਣਕਾਰੀ ਵੇਖੋ"
-
-#~ msgid "Login failed, no reply"
-#~ msgstr "ਲਾਗਇਨ ਫੇਲ੍ਹ, ਕੋਈ ਜਵਾਬ ਨਹੀਂ"
-
-#~ msgid "User %s rejected your request"
-#~ msgstr "ਯੂਜ਼ਰ %s ਨੇ ਤੁਹਾਡੀ ਮੰਗ ਨਾ ਮਨਜ਼ੂਰ ਕੀਤੀ ਹੈ"
-
-#~ msgid "User %s approved your request"
-#~ msgstr "ਯੂਜ਼ਰ %s ਨੇ ਤੁਹਾਡੀ ਮੰਗ ਮੰਨ ਲਈ ਹੈ"
-
-#~ msgid "Cannot find/access ~/.silc directory"
-#~ msgstr "~/.silc ਡਾਇਰੈਕਟਰੀ ਨਹੀਂ ਲੱਭੀ/ਵਰਤੀ ਜਾ ਸਕਦੀ"
-
-#~ msgid "%s changed status from %s to %s"
-#~ msgstr "%s ਨੇ ਹਾਲਤ %s ਤੋਂ %s ਬਦਲਿਆ ਹੈ"
-
-#~ msgid "%s is now %s"
-#~ msgstr "%s ਹੁਣ %s"
-
-#~ msgid "%s is no longer %s"
-#~ msgstr "%s ਹੁਣ %s ਨਹੀਂ ਰਿਹਾ"
-
-#~ msgid "Screen _name:"
-#~ msgstr "ਸਕਰੀਨ ਨਾਂ(_n):"
-
-#~ msgid "_Merge"
-#~ msgstr "ਮਿਲਾਨ(_M):"
-
-#~ msgid "<span color=\"red\">%s disconnected: %s</span>"
-#~ msgstr "<span color=\"red\">%s ਅਕਾਊਂਟ ਬੰਦ ਕੀਤਾ: %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 "
-#~ "buddy. The alias will be displayed in place of the screen name whenever "
-#~ "possible.\n"
-#~ msgstr ""
-#~ "ਵਿਅਕਤੀ ਦਾ ਸਕਰੀਨ ਨਾਂ ਦਿਓ, ਜਿਸ ਨੂੰ ਤੁਸੀਂ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ। ਤੁਸੀਂ "
-#~ "ਬੱਡੀ ਲਈ ਚੋਣਵੇਂ ਰੂਪ ਵਿੱਚ ਏਲੀਆਸ ਜਾਂ ਛੋਟਾ ਨਾਂ ਦੇ ਸਕਦੇ ਹੋ। ਏਲੀਆਸ ਨੂੰ ਸਕਰੀਨ ਨਾਂ ਦੀ ਬਜਾਏ ਵਰਤਿਆ "
-#~ "ਜਾਵੇਗਾ, ਜਦੋਂ ਵੀ ਸੰਭਵ ਹੋਵੇਗਾ।\n"
-
-#~ msgid "A_ccount:"
-#~ msgstr "ਅਕਾਊਂਟ(_c):"
-
-#~ msgid "_Screen name:"
-#~ msgstr "ਸਕਰੀਨ ਨਾਂ(_S):"
-
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s will not attempt to reconnect the account until you correct the error "
-#~ "and re-enable the account."
-#~ msgstr ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s ਅਕਾਊਂਟ ਨਾਲ ਕੁਨੈਕਟ ਹੋਣ ਦੀ ਉਦੋਂ ਤੱਕ ਕੋਸ਼ਿਸ਼ ਨਹੀਂ ਕਰੇਗਾ, ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ ਗਲਤੀ ਠੀਕ ਨਹੀਂ ਕਰਕੇ "
-#~ "ਅਕਾਊਂਟ ਮੁੜ-ਯੋਗ ਨਹੀਂ ਕਰਦੇ।"
-
-#~ msgid "User has typed something and stopped"
-#~ msgstr "ਯੂਜ਼ਰ ਨੇ ਕੁਝ ਲਿਖਿਆ ਅਤੇ ਰੁਕ ਗਿਆ/ਗਈ"
-
-#~ msgid ""
-#~ "You are about to remove the contact containing %s and %d other buddy from "
-#~ "your buddy list. Do you want to continue?You are about to remove the "
-#~ "contact containing %s and %d other buddies from your buddy list. Do you "
-#~ "want to continue?"
-#~ msgstr ""
-#~ "ਤੁਸੀਂ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ %s ਅਤੇ %d ਹੋਰ ਬੱਡੀ ਰੱਖਣ ਵਾਲਾ ਸੰਪਰਕ ਹਟਾਉਣ ਜਾ ਰਹੇ ਹੋ। ਕੀ ਤੁਸੀਂ "
-#~ "ਹਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ?ਤੁਸੀਂ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ %sਅਤੇ %d ਹੋਰ ਬੱਡੀ ਰੱਖਣ ਵਾਲਾ ਸੰਪਰਕ ਹਟਾਉਣ ਜਾ "
-#~ "ਰਹੇ ਹੋ। ਕੀ ਤੁਸੀਂ ਹਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ?"
-
-#~ msgid ""
-#~ "%s%s<span weight=\"bold\">Written by:</span>\t%s\n"
-#~ "<span weight=\"bold\">Website:</span>\t\t%s\n"
-#~ "<span weight=\"bold\">Filename:</span>\t\t%s"
-#~ msgstr ""
-#~ "%s%s<span weight=\"bold\">ਲਿਖੀ:</span>\t%s\n"
-#~ "<span weight=\"bold\">ਵੈੱਬਸਾਇਟ:</span>\t\t%s\n"
-#~ "<span weight=\"bold\">ਫਾਇਲ ਨਾਂ:</span>\t\t%s"
-
-#~ msgid "Display Statistics"
-#~ msgstr "ਅੰਕੜੇ ਵੇਖੋ"
-
-#~ msgid ""
-#~ "The contact availability plugin (cap) is used to display statistical "
-#~ "information about buddies in a users contact list."
-#~ msgstr ""
-#~ "ਸੰਪਰਕ ਉਪਲਬਧਤਾ ਅਨੁਮਾਨ (cap) ਇੱਕ ਯੂਜ਼ਰ ਸੰਪਰਕ ਲਿਸਟ ਵਿੱਚ ਬੱਡੀ ਬਾਰੇ ਅੰਕੜੇ ਵੇਖਾਉਣ ਲਈ ਵਰਤੀ "
-#~ "ਜਾਂਦੀ ਹੈ।"
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 412f6cccea..045eb3dfc4 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-01-04 09:58-0500\n"
-"PO-Revision-Date: 2009-01-05 12:42-0300\n"
+"POT-Creation-Date: 2009-02-27 10:14-0800\n"
+"PO-Revision-Date: 2009-02-24 22:11-0300\n"
"Last-Translator: Rodrigo Luiz Marques Flores <mail@rodrigoflores.org>\n"
"Language-Team: Rodrigo Luiz Marques Flores <mail@rodrigoflores.org>\n"
"MIME-Version: 1.0\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"
@@ -40,8 +40,8 @@ msgstr ""
"%s\n"
"Uso: %s [OPÇÃO]...\n"
"\n"
-" -c, --config=DIR use o diretório DIR para os arquivos de configuração\n"
-" -d, --debug imprima mensagens de depuração para a saída padrão\n"
+" -c, --config=DIR utilize o DIR para os arquivos de configuração\n"
+" -d, --debug imprima mensagens de depuração para a saída de erro\n"
" -h, --help exiba esta ajuda e saia\n"
" -n, --nologin não conecte automaticamente\n"
" -v, --version exiba a versão atual e saia\n"
@@ -1118,6 +1118,7 @@ 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!"
@@ -1163,7 +1164,6 @@ msgstr "Minutos antes de alterar o status"
msgid "Change status to"
msgstr "Mudar status para"
-#. Conversations
msgid "Conversations"
msgstr "Conversas"
@@ -1829,6 +1829,7 @@ msgstr ""
"Erro ao ler do processo de resolução:\n"
"%s"
+#, c-format
msgid "Resolver process exited without answering our request"
msgstr "Processo que resolve fechou sem responder nossa requisição"
@@ -2842,7 +2843,6 @@ msgstr ""
"Não foi possível estabelecer conexão com o servidor mDNS local. Ele está "
"rodando?"
-#. Creating the options for the protocol
msgid "First name"
msgstr "Nome"
@@ -2874,6 +2874,10 @@ msgstr "Plug-in do protocolo Bonjour"
msgid "Purple Person"
msgstr "Pessoa púrpura"
+#. Creating the options for the protocol
+msgid "Local Port"
+msgstr "Porta local"
+
msgid "Bonjour"
msgstr "Bonjour"
@@ -4680,9 +4684,6 @@ msgstr "Ações"
msgid "Select an action"
msgstr "Selecione uma ação"
-msgid "Unable to retrieve MSN Address Book"
-msgstr "Falha ao obter catálogo de endereços do MSN"
-
#. only notify the user about problems adding to the friends list
#. * maybe we should do something else for other lists, but it probably
#. * won't cause too many problems if we just ignore it
@@ -4716,165 +4717,218 @@ msgstr ""
"%s está na lista local, mas não está na lista do servidor. Você deseja "
"adicionar este amigo?"
+#, c-format
msgid "Unable to parse message"
msgstr "Não foi possível processar mensagem"
+#, c-format
msgid "Syntax Error (probably a client bug)"
msgstr "Erro de sintaxe (provavelmente um bug do cliente)"
+#, c-format
msgid "Invalid email address"
msgstr "Endereço de email inválido"
+#, c-format
msgid "User does not exist"
msgstr "Usuário inexistente"
+#, c-format
msgid "Fully qualified domain name missing"
msgstr "Faltando nome de domínio totalmente qualificado"
+#, c-format
msgid "Already logged in"
msgstr "Você já está conectado"
+#, c-format
msgid "Invalid username"
msgstr "Nome de usuário inválido"
+#, c-format
msgid "Invalid friendly name"
msgstr "Apelido inválido"
+#, c-format
msgid "List full"
msgstr "Lista cheia"
+#, c-format
msgid "Already there"
msgstr "Já está lá"
+#, c-format
msgid "Not on list"
msgstr "Não está na lista"
+#, c-format
msgid "User is offline"
msgstr "Usuário está desconectado"
+#, c-format
msgid "Already in the mode"
msgstr "Você já está nesse modo"
+#, c-format
msgid "Already in opposite list"
msgstr "Usuário já está na lista oposta"
+#, c-format
msgid "Too many groups"
msgstr "Excesso de grupos"
+#, c-format
msgid "Invalid group"
msgstr "Grupo inválido"
+#, c-format
msgid "User not in group"
msgstr "O usuário não está no grupo"
+#, c-format
msgid "Group name too long"
msgstr "Nome do grupo muito extenso."
+#, c-format
msgid "Cannot remove group zero"
msgstr "Não foi possível remover o grupo zero"
+#, c-format
msgid "Tried to add a user to a group that doesn't exist"
msgstr "Você tentou adicionar um usuário a um grupo que não existe"
+#, c-format
msgid "Switchboard failed"
msgstr "O quadro de comunicações falhou"
+#, c-format
msgid "Notify transfer failed"
msgstr "A notificação de transferência falhou"
+#, c-format
msgid "Required fields missing"
msgstr "Campos requeridos não foram preenchidos"
+#, c-format
msgid "Too many hits to a FND"
msgstr "Acessos demais a um FND"
+#, c-format
msgid "Not logged in"
msgstr "Desconectado"
+#, c-format
msgid "Service temporarily unavailable"
msgstr "Serviço temporariamente indisponível"
+#, c-format
msgid "Database server error"
msgstr "Erro do servidor de banco de dados"
+#, c-format
msgid "Command disabled"
msgstr "Comando desativado"
+#, c-format
msgid "File operation error"
msgstr "Erro ao executar operação de arquivo"
+#, c-format
msgid "Memory allocation error"
msgstr "Erro de alocação de memória"
+#, c-format
msgid "Wrong CHL value sent to server"
msgstr "Valor CHL incorreto enviado para o servidor"
+#, c-format
msgid "Server busy"
msgstr "Servidor ocupado"
+#, c-format
msgid "Server unavailable"
msgstr "Servidor indisponível"
+#, c-format
msgid "Peer notification server down"
msgstr "O servidor de notificação de pares está fora do ar"
+#, c-format
msgid "Database connect error"
msgstr "Erro ao conectar ao banco de dados"
+#, c-format
msgid "Server is going down (abandon ship)"
msgstr "O servidor vai sair do ar (abandonar navio)"
+#, c-format
msgid "Error creating connection"
msgstr "Erro ao criar a conexão"
+#, c-format
msgid "CVR parameters are either unknown or not allowed"
msgstr "Parâmetros CVR desconhecidos ou não permitidos"
+#, c-format
msgid "Unable to write"
msgstr "Não foi possível enviar"
+#, c-format
msgid "Session overload"
msgstr "Sessão sobrecarregada"
+#, c-format
msgid "User is too active"
msgstr "O usuário está muito ativo"
+#, c-format
msgid "Too many sessions"
msgstr "Excesso de sessões"
+#, c-format
msgid "Passport not verified"
msgstr "Conta do Passport não verificada"
+#, c-format
msgid "Bad friend file"
msgstr "Arquivo de amigos mal formado"
+#, c-format
msgid "Not expected"
msgstr "Inesperado"
+#, c-format
msgid "Friendly name changes too rapidly"
msgstr "O apelido foi mudado rapidamente demais"
+#, c-format
msgid "Server too busy"
msgstr "Servidor ocupado demais"
+#, c-format
msgid "Authentication failed"
msgstr "Autenticação mal sucedida"
+#, c-format
msgid "Not allowed when offline"
msgstr "Não permitido enquanto desconectado"
+#, c-format
msgid "Not accepting new users"
msgstr "Usuários novos não estão sendo aceitos"
+#, c-format
msgid "Kids Passport without parental consent"
msgstr "Passport para crianças sem consentimento dos pais"
+#, c-format
msgid "Passport account not yet verified"
msgstr "Conta do Passport ainda não foi verificada"
msgid "Passport account suspended"
msgstr "Conta do Passport suspensa"
+#, c-format
msgid "Bad ticket"
msgstr "Bilhete inválido"
@@ -6464,12 +6518,10 @@ 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 ""
-"Você pode ser desconectado num curto período de tempo. Você pode querer usar "
-"o TOC até que isso esteja corrigido. Verifique por atualizações em %s."
+"Você pode ser desconectado em brevo. Se isso acontecer, verifique "
+"atualizações em %s."
msgid "Unable to get a valid AIM login hash."
msgstr "Não foi possível conseguir um hash de conexão AIM válido."
@@ -6937,6 +6989,7 @@ msgstr "C_onectar"
msgid "Get AIM Info"
msgstr "Ver informações do AIM"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "Editar comentário do amigo"
@@ -7523,6 +7576,9 @@ msgstr "<p><b>Contribuidores amáveis de patch</b>:<br>\n"
msgid "<p><b>Acknowledgement</b>:<br>\n"
msgstr "<p><b>Agradecimento</b>:<br>\n"
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<p><b>Testadores Escrupulosos</b>:<br>\n"
+
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"
@@ -7548,6 +7604,9 @@ msgstr "Atualizar todos os Quns do QQ"
msgid "About OpenQ"
msgstr "Sobre o OpenQ"
+msgid "Modify Buddy Memo"
+msgstr "Modificar Lembrete do Amigo"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7585,6 +7644,9 @@ msgstr "Mostrar avisos do servidor"
msgid "Show server news"
msgstr "Mostrar novidades do servidor"
+msgid "Show chat room when msg comes"
+msgstr "Mostrar sala de chat quando enviarem uma mensagem"
+
msgid "Keep alive interval (seconds)"
msgstr "Intervalo de keep-alive (segundos)"
@@ -8343,6 +8405,7 @@ msgstr "<br><b>HMAC do canal:</b> %s"
msgid "<br><b>Channel Topic:</b><br>%s"
msgstr "<br><b>Tópico do canal:</b><br>%s"
+#, c-format
msgid "<br><b>Channel Modes:</b> "
msgstr "<br><b>Modos do canal:</b> "
@@ -8367,6 +8430,7 @@ msgstr "Frase-senha do canal"
msgid "Channel Public Keys List"
msgstr "Lista de chaves públicas do canal"
+#, c-format
msgid ""
"Channel authentication is used to secure the channel from unauthorized "
"access. The authentication may be based on passphrase and digital "
@@ -8765,6 +8829,7 @@ msgstr "Download %s: %s"
msgid "Your Current Mood"
msgstr "Seu humor atual"
+#, c-format
msgid "Normal"
msgstr "Normal"
@@ -9148,33 +9213,43 @@ msgstr "Quadro de atividades"
msgid "No server statistics available"
msgstr "Estatísticas do servidor indisponíveis"
+#, c-format
msgid "Failure: Version mismatch, upgrade your client"
msgstr "Falha: Versões incompatíveis, atualize seu cliente"
+#, c-format
msgid "Failure: Remote does not trust/support your public key"
msgstr "Falha: O usuário remoto não confia/suporta sua chave pública."
+#, c-format
msgid "Failure: Remote does not support proposed KE group"
msgstr "Falha: O usuário remoto não suporta o grupo KE proposto."
+#, c-format
msgid "Failure: Remote does not support proposed cipher"
msgstr "Falha: O usuário remoto não suporta a cifra proposta"
+#, c-format
msgid "Failure: Remote does not support proposed PKCS"
msgstr "Falha: O usuário remoto não suporta o PKCS proposto"
+#, c-format
msgid "Failure: Remote does not support proposed hash function"
msgstr "Falha: O usuário remoto não suporta a função de hash proposta"
+#, c-format
msgid "Failure: Remote does not support proposed HMAC"
msgstr "Falha: O usuário remoto não suporta o HMAC proposto"
+#, c-format
msgid "Failure: Incorrect signature"
msgstr "Falha: Assinatura incorreta"
+#, c-format
msgid "Failure: Invalid cookie"
msgstr "Falha: Cookie inválido"
+#, c-format
msgid "Failure: Authentication failed"
msgstr "Falha: Autenticação mal sucedida"
@@ -9274,6 +9349,7 @@ msgstr "%s não está conectado no momento."
msgid "Warning of %s not allowed."
msgstr "Alertar %s não é permitido."
+#, c-format
msgid "A message has been dropped, you are exceeding the server speed limit."
msgstr ""
"Uma mensagem foi descartada, você está excedendo o limite de velocidade do "
@@ -9298,30 +9374,39 @@ 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."
@@ -9329,16 +9414,20 @@ msgstr "País não suportado."
msgid "Failure unknown: %s."
msgstr "Falha desconhecida: %s."
+#, c-format
msgid "Incorrect username or password."
msgstr "Nome de usuário ou senha incorreto(a)."
+#, c-format
msgid "The service is temporarily unavailable."
msgstr "O serviço está temporariamente indisponível."
+#, c-format
msgid "Your warning level is currently too high to log in."
msgstr ""
"Seu nível de alerta é alto demais para que você possa se conectar no momento."
+#, c-format
msgid ""
"You have been connecting and disconnecting too frequently. Wait ten minutes "
"and try again. If you continue to try, you will need to wait even longer."
@@ -10168,22 +10257,27 @@ msgid " (%s)"
msgstr "(%s)"
#. 10053
+#, c-format
msgid "Connection interrupted by other software on your computer."
msgstr "Conexão interrompida por outro software no seu computador."
#. 10054
+#, c-format
msgid "Remote host closed connection."
msgstr "O usuário remoto encerrou a conexão."
#. 10060
+#, c-format
msgid "Connection timed out."
msgstr "Tempo limite de conexão esgotado."
#. 10061
+#, c-format
msgid "Connection refused."
msgstr "Conexão rejeitada."
#. 10048
+#, c-format
msgid "Address already in use."
msgstr "O endereço já está em uso"
@@ -11295,6 +11389,9 @@ msgstr "Lituano"
msgid "Macedonian"
msgstr "Macedônio"
+msgid "Mongolian"
+msgstr "Mongol"
+
msgid "Bokmål Norwegian"
msgstr "Dano-Norueguês"
@@ -11407,8 +11504,33 @@ msgstr ""
"contribuidoes. Veja o arquivo 'COPYRIGHT' para uma lista completa destes "
"contribuidores. Não oferecemos nenhuma garantia para este programa.<BR><BR>"
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
-msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin no 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 ""
+"<FONT SIZE=\"4\">FAQ:</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\">Ajuda por e-mail:</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\">Canal do IRC:</FONT> #pidgin no irc.freenode.net<BR><BR>"
+
+#, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
+msgstr ""
+"<FONT SIZE=\"4\">MUC(Multi User Chat) do XMPP:</FONT> devel@conference."
+"pidgin.im <BR><BR>"
msgid "Current Developers"
msgstr "Desenvolvedores atuais"
@@ -11768,9 +11890,11 @@ msgstr ""
msgid "Save Image"
msgstr "Salvar imagem"
+#, c-format
msgid "_Save Image..."
msgstr "_Salvar imagem..."
+#, c-format
msgid "_Add Custom Smiley..."
msgstr "Exibir emoticons personalizados"
@@ -12064,6 +12188,10 @@ msgstr ""
msgid "Pidgin"
msgstr "Pidgin"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr "Saindo porque outro cliente libpurple já está sendo executado.\n"
+
msgid "Open All Messages"
msgstr "Abrir todas as mensagens"
@@ -12404,6 +12532,10 @@ 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 "Usar DNS remoto com proxies SOCKS4"
+
msgid "_User:"
msgstr "_Usuário:"
@@ -12484,21 +12616,27 @@ msgstr "Gravar todos as mudanças de _status no histórico do sistema"
msgid "Sound Selection"
msgstr "Seleção de som"
+#, c-format
msgid "Quietest"
msgstr "Muito silencioso"
+#, c-format
msgid "Quieter"
msgstr "Mais silencioso"
+#, c-format
msgid "Quiet"
msgstr "Silencioso"
+#, c-format
msgid "Loud"
msgstr "Alto"
+#, c-format
msgid "Louder"
msgstr "Mais alto"
+#, c-format
msgid "Loudest"
msgstr "Muito alto"
@@ -13511,6 +13649,7 @@ msgstr "Diálogo de notificação"
msgid "Select Color"
msgstr "Selecionar cor"
+#, c-format
msgid "Select Interface Font"
msgstr "Selecionar fonte da interface"
@@ -13738,6 +13877,7 @@ msgstr ""
msgid "Timestamp Format Options"
msgstr "Opções de formatação da marcação de tempo"
+#, c-format
msgid "_Force 24-hour time format"
msgstr "_Forçar formato de data 24-horas"
@@ -13857,9 +13997,6 @@ msgstr "_Manter a janela da lista de amigos no topo:"
msgid "Only when docked"
msgstr "Apenas quando ancorado"
-msgid "_Flash window when chat messages are received"
-msgstr "_Piscar a janela quando mensagens de bate-papo forem recebidas"
-
msgid "Windows Pidgin Options"
msgstr "Opções do Pidgin para Windows"
@@ -13909,6 +14046,20 @@ 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 "Unable to retrieve MSN Address Book"
+#~ msgstr "Falha ao obter catálogo de endereços do MSN"
+
+#~ msgid ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+#~ msgstr ""
+#~ "Você pode ser desconectado num curto período de tempo. Você pode querer "
+#~ "usar o TOC até que isso esteja corrigido. Verifique por atualizações em %"
+#~ "s."
+
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "_Piscar a janela quando mensagens de bate-papo forem recebidas"
+
#~ msgid "Connection to server lost (no data received within %d second)"
#~ msgid_plural ""
#~ "Connection to server lost (no data received within %d seconds)"
diff --git a/po/ru.po b/po/ru.po
index 8e04c6d60d..f5a8c53b2d 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-02-22 16:18-0500\n"
+"POT-Creation-Date: 2009-03-01 19:00-0500\n"
"PO-Revision-Date: 2008-05-14 15:00+0400\n"
"Last-Translator: Антон Самохвалов <samant.ua@mail.ru>\n"
"Language-Team: \n"
@@ -23,7 +23,7 @@ msgstr ""
#. Translators may want to transliterate the name.
#. It is not to be translated.
msgid "Finch"
-msgstr "Finch"
+msgstr "Зяблик"
#, c-format
msgid "%s. Try `%s -h' for more information.\n"
@@ -740,6 +740,12 @@ msgid ""
"background&gt;: black, red, green, blue, white, gray, darkgray, magenta, "
"cyan, default<br><br>EXAMPLE:<br> msgcolor send cyan default"
msgstr ""
+"цвет сообщения &lt;класс&gt; &lt;передний план&gt; &lt;фон&gt;: Установите "
+"цвет для различных классов сообщений в окне общения.<br> &lt;класс&gt;: "
+"получить, отправить, подсветить, действие, фиксация времени<br> &lt; "
+"передний план/фон&gt;: чёрный, красный, зелёный, синий, белый, серый, тёмно-"
+"серый, пурпурный, голубой, по умолчанию<br><br>ПРИМЕР:<br> цвет сообщения "
+"отправки по умолчанию голубой"
msgid "Unable to open file."
msgstr "Не удаётся открыть файл."
@@ -1197,7 +1203,7 @@ msgid "Choose Location..."
msgstr "Выбрать местоположение..."
msgid "Hit 'Enter' to find more rooms of this category."
-msgstr ""
+msgstr "Щёлкните 'Enter', чтобы найти больше комнат этой категории."
msgid "Get"
msgstr "Получить"
@@ -1509,7 +1515,7 @@ msgid "Online/Offline"
msgstr "В сети/Не в сети"
msgid "Meebo"
-msgstr ""
+msgstr "Мибо"
msgid "No Grouping"
msgstr "Нет объединения"
@@ -2145,7 +2151,7 @@ msgstr "Этот модуль не имеет ID."
#, c-format
msgid "Plugin magic mismatch %d (need %d)"
-msgstr ""
+msgstr "Магическое несоответствие модуля %d (нужно %d)"
#, c-format
msgid "ABI version mismatch %d.%d.x (need %d.%d.x)"
@@ -2155,7 +2161,7 @@ msgstr "Несоответствие версии ABI %d.%d.x (необходи
msgid ""
"Plugin does not implement all required functions (list_icon, login and close)"
msgstr ""
-"Модуль не реализует всех требуемых функций (list_icon, login and close)"
+"Модуль не реализует всех требуемых функций (список _иконок, вход и закрытие)"
#, c-format
msgid ""
@@ -2428,6 +2434,8 @@ 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
@@ -3406,7 +3414,7 @@ msgstr "Псевдоним или канал временно недоступе
#, c-format
msgid "Wallops from %s"
-msgstr ""
+msgstr "Грохот от %s"
msgid "action &lt;action to perform&gt;: Perform an action."
msgstr "action &lt;действие для выполнения&gt;: Выполнить действие."
@@ -7330,6 +7338,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 ""
+
#, fuzzy, c-format
msgid "%u requires verification"
msgstr "%u требует подтверждения"
@@ -7671,6 +7711,10 @@ 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 "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr "<p><i>И все мальчики в задней комнате...</i><br>\n"
@@ -7699,6 +7743,10 @@ msgstr "Обновить все QQ Quns"
msgid "About OpenQ"
msgstr "Об OpenQ"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Изменить адрес"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -8737,9 +8785,6 @@ msgstr "Организация"
msgid "Unit"
msgstr "Отдел"
-msgid "Note"
-msgstr "Заметки"
-
msgid "Join Chat"
msgstr "Присоединиться к чату"
@@ -10234,9 +10279,6 @@ msgstr "Не беспокоить"
msgid "Extended away"
msgstr "Расширенный \"Отошёл\""
-msgid "Mobile"
-msgstr "Мобильный"
-
msgid "Listening to music"
msgstr "Слушает музыку"
@@ -10502,7 +10544,7 @@ msgid "Unable to save new account"
msgstr "Не удаётся сохранить новую учётную запись"
msgid "An account already exists with the specified criteria."
-msgstr ""
+msgstr "Учётная запись с указанными критериями уже существует."
msgid "Add Account"
msgstr "Добавить учётную запись"
@@ -11082,7 +11124,7 @@ msgid "Change Size"
msgstr "Изменить размер"
msgid "Show All"
-msgstr ""
+msgstr "Показать всё"
#. Conversation menu
msgid "/_Conversation"
@@ -13889,7 +13931,7 @@ msgstr ""
#, c-format
msgid "You can upgrade to %s %s today."
-msgstr ""
+msgstr "You can upgrade to %s %s today."
msgid "New Version Available"
msgstr "Доступна новая версия"
diff --git a/po/sv.po b/po/sv.po
index fd93fe0a8d..e4a052e2a5 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -9,8 +9,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Pidgin\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
-"PO-Revision-Date: 2008-12-18 20:21+0100\n"
+"POT-Creation-Date: 2009-02-25 23:20+0100\n"
+"PO-Revision-Date: 2009-02-25 23:14+0100\n"
"Last-Translator: Peter Hjalmarsson <xake@rymdraket.net>\n"
"Language-Team: \n"
"MIME-Version: 1.0\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"
@@ -72,9 +72,8 @@ msgstr "Rapportering av ny e-post"
msgid "Remember password"
msgstr "Kom ihåg lösenordet"
-#, fuzzy
msgid "There are no protocol plugins installed."
-msgstr "Det finns inga moduler för protokoll installerade."
+msgstr "Det finns inga protokollmoduler installerade."
msgid "(You probably forgot to 'make install'.)"
msgstr "(Du glömde antagligen att köra 'make install'.)"
@@ -464,7 +463,7 @@ msgid "X.509 certificate import failed"
msgstr "X.509-certifikatimportering misslyckades"
msgid "Select a PEM certificate"
-msgstr "Välj et PEM-certifikat"
+msgstr "Välj ett PEM-certifikat"
#, c-format
msgid ""
@@ -478,10 +477,10 @@ msgid "Certificate Export Error"
msgstr "Certifikatsexporteringsfel"
msgid "X.509 certificate export failed"
-msgstr "X.509-certifikasexportering misslyckades"
+msgstr "X.509-certifikatsexportering misslyckades"
msgid "PEM X.509 Certificate Export"
-msgstr "PEM X.509-certifikasexportering"
+msgstr "PEM X.509-certifikatsexportering"
#, c-format
msgid "Certificate for %s"
@@ -551,13 +550,13 @@ msgid ""
"automatically rejoined in the chat when the account reconnects."
msgstr ""
"Kontot har inaktiverats och du är inte längre med i denna chatt. Du kommer "
-"autimatiskt gå med i chatten när kontot återansluts."
+"automatiskt gå med i chatten när kontot återansluts."
msgid "No such command."
msgstr "Finns inget sådant kommando."
msgid "Syntax Error: You typed the wrong number of arguments to that command."
-msgstr "Syntaxfel: Du skrev fel antal argument till det kommandot."
+msgstr "Syntaxfel: Du skrev fel antal argument till det kommandot."
msgid "Your command failed for an unknown reason."
msgstr "Ditt kommando misslyckades av okänd anledning."
@@ -608,7 +607,7 @@ msgid "Send To"
msgstr "Skicka till"
msgid "Invite message"
-msgstr "Ibjudningsmeddelande"
+msgstr "Inbjudningsmeddelande"
msgid "Invite"
msgstr "Bjud in"
@@ -651,7 +650,7 @@ msgstr[0] "Lista över %d användare:\n"
msgstr[1] "Lista över %d användare:\n"
msgid "Supported debug options are: version"
-msgstr "De felsökningsalternativ som stöds är: version"
+msgstr "De felsökningsalternativ som stöds är: version"
msgid "No such command (in this context)."
msgstr "Det finns inget sådant kommando (i denna kontext)."
@@ -700,7 +699,7 @@ msgid "help &lt;command&gt;: Help on a specific command."
msgstr "help &lt;kommando&gt;: Hjälp för ett specifikt kommando."
msgid "users: Show the list of users in the chat."
-msgstr "users: Visa listan av användare i chatten."
+msgstr "users: Visa listan av användare i chatten."
msgid "plugins: Show the plugins window."
msgstr "plugins: Visa fönstret med insticksmoduler."
@@ -878,10 +877,10 @@ msgid "System Log"
msgstr "Systemlogg"
msgid "Emails"
-msgstr "Epost"
+msgstr "Mejl"
msgid "You have mail!"
-msgstr "Du har ett e-post!"
+msgstr "Du har fått mejl!"
msgid "Sender"
msgstr "Sändare"
@@ -896,7 +895,7 @@ msgstr[0] "%s (%s) har %d nytt meddelande."
msgstr[1] "%s (%s) har %d nya meddelanden."
msgid "New Mail"
-msgstr "Ny epost"
+msgstr "Ny mejl"
#, c-format
msgid "Info for %s"
@@ -946,13 +945,13 @@ msgid "Plugin need to be loaded before you can configure it."
msgstr "Modulen behöver laddas före du kan konfigurera den."
msgid "No configuration options for this plugin."
-msgstr "Ingen konfiguration tillgängliga för denna modul."
+msgstr "Inga konfigurationalternativ tillgängliga för denna modul."
msgid "Error loading plugin"
msgstr "Fel vid inläsning av insticksmodul"
msgid "The selected file is not a valid plugin."
-msgstr "Den valda filen är inte en giltig instickmodul."
+msgstr "Den valda filen är inte en giltig insticksmodul."
msgid ""
"Please open the debug window and try again to see the exact error message."
@@ -961,13 +960,13 @@ msgstr ""
"felmeddelandet."
msgid "Select plugin to install"
-msgstr "Välj en instickmodul att installera"
+msgstr "Välj en insticksmodul att installera"
msgid "You can (un)load plugins from the following list."
msgstr "Du kan (av)läsa moduler från följande lista."
msgid "Install Plugin..."
-msgstr "Installera instickmodul..."
+msgstr "Installera insticksmodul..."
msgid "Configure Plugin"
msgstr "Konfigurera modul"
@@ -1116,7 +1115,7 @@ msgstr "%s har sänt dig ett meddelande. (%s)"
#, c-format
msgid "Unknown pounce event. Please report this!"
-msgstr "Okänd atackhändelse. Var snäll och rapportera detta!"
+msgstr "Okänd attackhändelse. Var snäll och rapportera detta!"
msgid "Based on keyboard use"
msgstr "Baserat på tangetbordsanvändning"
@@ -1160,7 +1159,6 @@ msgstr "Minuter innan status ska ändras"
msgid "Change status to"
msgstr "Ändra status till"
-#. Conversations
msgid "Conversations"
msgstr "Konversationer"
@@ -1283,7 +1281,7 @@ msgid "Only when available"
msgstr "Endast vid tillgänglig"
msgid "Only when not available"
-msgstr "Edast vid Ej tillgänglig"
+msgstr "Endast vid Ej tillgänglig"
msgid "Volume(0-100):"
msgstr "Volym(0-100):"
@@ -1401,7 +1399,7 @@ msgid ""
"When the gnt clipboard contents change, the contents are made available to "
"X, if possible."
msgstr ""
-"När innehållet i gnt klippboken ändras görs innehållet tillgänligt för X, "
+"När innehållet i gnt klippboken ändras görs innehållet tillgängligt för X, "
"när det är möjligt."
#, c-format
@@ -1456,7 +1454,7 @@ msgid "<b>Conversation with %s on %s:</b><br>"
msgstr "<b>Konversation med %s på %s:</b><br>"
msgid "History Plugin Requires Logging"
-msgstr "Historikinstiksmodulen kräver loggning"
+msgstr "Historikinsticksmodulen kräver loggning"
msgid ""
"Logging can be enabled from Tools -> Preferences -> Logging.\n"
@@ -1482,7 +1480,6 @@ msgstr ""
"När en ny konversation öppnas kommer denna insticksmodul att lägga till den "
"föregående konversationen i den nuvarande."
-#, c-format
msgid "Online"
msgstr "Ansluten"
@@ -1556,7 +1553,7 @@ msgid "Fill out all fields completely."
msgstr "Fyll i alla fält fullständigt."
msgid "Original password"
-msgstr "Ursprugligt lösenord"
+msgstr "Ursprungligt lösenord"
msgid "New password"
msgstr "Nytt lösenord"
@@ -1829,7 +1826,7 @@ msgstr ""
#, c-format
msgid "Resolver process exited without answering our request"
-msgstr ""
+msgstr "Uppslagningsprocessen avslutades utan att besvara våran förfrågan"
#, c-format
msgid "Thread creation failure: %s"
@@ -1859,7 +1856,7 @@ msgid ""
"Error accessing %s: \n"
"%s.\n"
msgstr ""
-"Fel vid försök att nå %s: \n"
+"Fel vid försök att nå %s: \n"
"%s.\n"
msgid "Directory is not writable."
@@ -1917,7 +1914,6 @@ msgstr "Inleder filöverföring av %s från %s"
msgid "Transfer of file %s complete"
msgstr "Överföringen av filen %s är färdig"
-#, c-format
msgid "File transfer complete"
msgstr "Filöverföringen slutfördes"
@@ -1925,7 +1921,6 @@ msgstr "Filöverföringen slutfördes"
msgid "You canceled the transfer of %s"
msgstr "Du avbröt överföringen av %s"
-#, c-format
msgid "File transfer cancelled"
msgstr "Filöverföringen avbröts"
@@ -1999,42 +1994,42 @@ msgstr "Hanteraren för \"ymsgr\" URLer"
msgid ""
"True if the command specified in the \"command\" key should handle \"aim\" "
"URLs."
-msgstr "Sant om kommandot i nykeln \"kommando\" ska hantera \"aim\" URLer"
+msgstr "Sant om kommandot i nyckeln \"kommando\" ska hantera \"aim\" URLer"
msgid ""
"True if the command specified in the \"command\" key should handle \"gg\" "
"URLs."
-msgstr "Sant om kommandot i nykeln \"kommando\" ska hantera \"gg\" URLer"
+msgstr "Sant om kommandot i nyckeln \"kommando\" ska hantera \"gg\" URLer"
msgid ""
"True if the command specified in the \"command\" key should handle \"icq\" "
"URLs."
-msgstr "Sant om kommandot i nykeln \"kommando\" ska hantera \"icq\" URLer"
+msgstr "Sant om kommandot i nyckeln \"kommando\" ska hantera \"icq\" URLer"
msgid ""
"True if the command specified in the \"command\" key should handle \"irc\" "
"URLs."
-msgstr "Sant om kommandot i nykeln \"kommando\" ska hantera \"irc\" URLer"
+msgstr "Sant om kommandot i nyckeln \"kommando\" ska hantera \"irc\" URLer"
msgid ""
"True if the command specified in the \"command\" key should handle \"msnim\" "
"URLs."
-msgstr "Sant om kommandot i nykeln \"kommando\" ska hantera \"msnim\" URLer"
+msgstr "Sant om kommandot i nyckeln \"kommando\" ska hantera \"msnim\" URLer"
msgid ""
"True if the command specified in the \"command\" key should handle \"sip\" "
"URLs."
-msgstr "Sant om kommandot i nykeln \"kommando\" ska hantera \"sip\" URLer"
+msgstr "Sant om kommandot i nyckeln \"kommando\" ska hantera \"sip\" URLer"
msgid ""
"True if the command specified in the \"command\" key should handle \"xmpp\" "
"URLs."
-msgstr "Sant om kommandot i nykeln \"kommando\" ska hantera \"xmpp\" URLer"
+msgstr "Sant om kommandot i nyckeln \"kommando\" ska hantera \"xmpp\" URLer"
msgid ""
"True if the command specified in the \"command\" key should handle \"ymsgr\" "
"URLs."
-msgstr "Sant om kommandot i nykeln \"kommando\" ska hantera \"ymsgr\" URLer"
+msgstr "Sant om kommandot i nyckeln \"kommando\" ska hantera \"ymsgr\" URLer"
msgid ""
"True if the command used to handle this type of URL should be run in a "
@@ -2116,13 +2111,12 @@ msgstr "(%s) %s <AUTO-SVAR>: %s\n"
msgid "You are using %s, but this plugin requires %s."
msgstr "Du använder %s men denna modul behöver %s."
-#, c-format
msgid "This plugin has not defined an ID."
msgstr "Insticksmodulen har inte definierat ett ID."
#, c-format
msgid "Plugin magic mismatch %d (need %d)"
-msgstr "Modulmagi atchar inte %d (behöver %d)"
+msgstr "Modulmagi matchar inte %d (behöver %d)"
#, c-format
msgid "ABI version mismatch %d.%d.x (need %d.%d.x)"
@@ -2521,7 +2515,7 @@ msgid ""
"at your own risk!"
msgstr ""
"Vid visning av loggfiler inkluderar denna modul loggar från andra IM-"
-"klienter. För närvarande inkluderar detta Adium, MSN Messenger, och "
+"klienter. För närvarande inkluderar detta Adium, MSN Messenger, och "
"Trillian.\n"
"\n"
"VARNING: Denna modul är fortfarande alpha-kod och kan krasha ofta. Använd på "
@@ -2576,7 +2570,7 @@ msgid ""
"pounce from the `Buddy Pounce' dialog."
msgstr ""
"Resten av meddelanden kommer sparas som notifieringar. Du kan ändra/ta bort "
-"notifieringarna från `Kompisnotifieringar'-dialogen."
+"notifieringarna från `Kompisnotifieringar' dialogen."
#, c-format
msgid ""
@@ -2587,11 +2581,11 @@ msgstr ""
"som en notifiering och skicka dem automatiskt när \"%s\" ansluter igen?"
msgid "Offline Message"
-msgstr "Frånkopplade meddeladen"
+msgstr "Frånkopplade meddelanden"
msgid "You can edit/delete the pounce from the `Buddy Pounces' dialog"
msgstr ""
-"Du kan ändra/ta bort notifieringarna från `Kompisnotifieringar'-dialogen"
+"Du kan ändra/ta bort notifieringarna från `Kompisnotifieringar' dialogen"
msgid "Yes"
msgstr "Ja"
@@ -2671,7 +2665,7 @@ msgstr "Test för att avgöra om alla signaler fungerar korrekt."
#. *< priority
#. *< id
msgid "Simple Plugin"
-msgstr "Enken insticksmodul"
+msgstr "Enkel insticksmodul"
# Det ska inte vara "Testar" eler "Test" här?
# Jag tror Testar blir mer korrekt, ja.
@@ -2796,7 +2790,7 @@ msgid ""
"Unable to detect ActiveTCL installation. If you wish to use TCL plugins, "
"install ActiveTCL from http://www.activestate.com\n"
msgstr ""
-"Kunde inte finna en installation av ActiveTCL. Om du tänker använda TCL-"
+"Kunde inte finna en installation av ActiveTCL. Om du tänker använda TCL-"
"modulen måste du installera ActiveTCL från http://www.activestate.com\n"
msgid ""
@@ -2813,7 +2807,6 @@ msgid ""
"Unable to establish connection with the local mDNS server. Is it running?"
msgstr "Kunde inte skapa en anslutning via den lokala mDNS-servern. Körs den?"
-#. Creating the options for the protocol
msgid "First name"
msgstr "Förnamn"
@@ -2845,6 +2838,10 @@ msgstr "Insticksmodul för Bonjour-protokollet"
msgid "Purple Person"
msgstr "Purple person"
+#. Creating the options for the protocol
+msgid "Local Port"
+msgstr "Lokal port"
+
msgid "Bonjour"
msgstr "Bonjour"
@@ -3011,7 +3008,6 @@ msgstr "Tillgänglig"
#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
#. Away stuff
-#, c-format
msgid "Away"
msgstr "Frånvarande"
@@ -3916,7 +3912,6 @@ msgstr "Pratig"
msgid "Extended Away"
msgstr "Utökad frånvaro"
-#, c-format
msgid "Do Not Disturb"
msgstr "Stör inte"
@@ -3935,7 +3930,7 @@ msgid ""
"Each field supports wild card searches (%)"
msgstr ""
"Hitta en kontakt genom att ange sökkriteriet i de givna fälten. Notera: Alla "
-"fälten stödjer wild card sökningar (%)"
+"fälten stödjer wild card-sökningar (%)"
msgid "Directory Query Failed"
msgstr "Katalogförfrågning misslyckades"
@@ -4151,6 +4146,9 @@ msgstr "Autentiserar"
msgid "Re-initializing Stream"
msgstr "Återinitierar flöde"
+msgid "Server doesn't support blocking"
+msgstr "Servern stödjer inte blockering"
+
msgid "Not Authorized"
msgstr "Inte auktoriserad"
@@ -4227,7 +4225,7 @@ msgid "Password (again)"
msgstr "Lösenord (igen)"
msgid "Change XMPP Password"
-msgstr "Byt XMPP-lösenord"
+msgstr "Byt XMPP lösenord"
msgid "Please enter your new password"
msgstr "Ange ditt nya lösenord"
@@ -4237,7 +4235,7 @@ msgstr "Ändra användarinfo..."
#. if (js->protocol_options & CHANGE_PASSWORD) {
msgid "Change Password..."
-msgstr "Byt lösenord..."
+msgstr "Byt lösenor..."
#. }
msgid "Search for Users..."
@@ -4539,7 +4537,6 @@ msgstr "Filetransports proxies"
#. this should probably be part of global smiley theme settings later on,
#. shared with MSN
-#, fuzzy
msgid "Show Custom Smileys"
msgstr "Visa egna smileys"
@@ -4564,7 +4561,7 @@ msgid "Message delivery to %s failed: %s"
msgstr "Leverans av meddelande till %s misslyckades: %s"
msgid "XMPP Message Error"
-msgstr "XMPP-meddelandefel"
+msgstr "XMPP meddelandefel"
#, c-format
msgid "(Code %s)"
@@ -4618,7 +4615,7 @@ msgstr "Kan inte skicka filen till %s, användaren är inte ansluten"
#, c-format
msgid "Unable to send file to %s, not subscribed to user presence"
msgstr ""
-"Kan inte skicka filen till %s, prenumrerar inte på användartillgänglighet"
+"Kan inte skicka filen till %s, prenumererar inte på användartillgänglighet"
#, c-format
msgid "Please select the resource of %s to which you would like to send a file"
@@ -4661,8 +4658,18 @@ msgstr "Handlingar"
msgid "Select an action"
msgstr "Välj en handling"
-msgid "Unable to retrieve MSN Address Book"
-msgstr "Kunde inte hämta MSN-adressbok"
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr "Kunde inte lägga till \"%s\"."
+
+msgid "Buddy Add error"
+msgstr ""
+
+msgid "The username specified does not exist."
+msgstr "Den angivna användarnamnet finns inte."
#, c-format
msgid "Buddy list synchronization issue in %s (%s)"
@@ -4895,7 +4902,6 @@ msgstr "Barn-passport utan förälders medgivande"
msgid "Passport account not yet verified"
msgstr "Passkonto ännu inte verifierat"
-#, c-format
msgid "Passport account suspended"
msgstr "Passport-kontot är avstängt"
@@ -4911,13 +4917,11 @@ msgstr "Okänd felkod %d"
msgid "MSN Error: %s\n"
msgstr "MSN-fel: %s\n"
-#, fuzzy
msgid "Other Contacts"
-msgstr "Föredragen kontakt"
+msgstr "Andra kontakter"
-#, fuzzy
msgid "Non-IM Contacts"
-msgstr "Ta bort kontakt"
+msgstr "Icke-IM kontakter"
msgid "Nudge"
msgstr "Vibba"
@@ -4981,7 +4985,7 @@ msgstr ""
"MSN-servrarna blockerar för tillfället följande reguljära uttryck:<br/>%s"
msgid "This account does not have email enabled."
-msgstr "Detta kontot har inte epost aktiverat."
+msgstr "Detta kontot har inte mejl aktiverat."
msgid "Send a mobile message."
msgstr "Skicka ett mobilmeddelande."
@@ -4989,6 +4993,12 @@ msgstr "Skicka ett mobilmeddelande."
msgid "Page"
msgstr "Sök"
+msgid "Playing a game"
+msgstr "Spelar ett spel"
+
+msgid "Working"
+msgstr "Arbetar"
+
msgid "Has you"
msgstr "Har dig"
@@ -5025,6 +5035,12 @@ msgstr "Artist"
msgid "Album"
msgstr "Album"
+msgid "Game Title"
+msgstr "Speltitel"
+
+msgid "Office Title"
+msgstr "Kontorstitel"
+
msgid "Set Friendly Name..."
msgstr "Ange smeknamn..."
@@ -5063,7 +5079,7 @@ msgid "Failed to connect to server."
msgstr "Kunde inte ansluta till servern."
msgid "Error retrieving profile"
-msgstr "Fel vid hämtninga av profil"
+msgstr "Fel vid hämtning av profil"
msgid "General"
msgstr "Allmänt"
@@ -5217,8 +5233,8 @@ msgstr ""
"Kunde inte hitta någon information i användarens profil. Användaren "
"existerar troligen inte."
-msgid "Profile URL"
-msgstr "Profil-URL"
+msgid "View web profile"
+msgstr "Visa webbprofil"
#. *< type
#. *< ui_requirement
@@ -5273,9 +5289,8 @@ msgstr "Okänt fel (%d)"
msgid "Unable to add user"
msgstr "Kan inte lägga till användaren"
-#, fuzzy
msgid "The following users are missing from your addressbook"
-msgstr "Din sökning gav följande resultat"
+msgstr "De följande användarna saknas i din adressbok"
#, c-format
msgid "Unable to add user on %s (%s)"
@@ -5348,10 +5363,9 @@ msgid "Message was not sent because messages are being sent too quickly."
msgstr ""
"Meddelandet kunde inte skickas eftersom meddelandena skickades för snabbt."
-#, fuzzy
msgid "Message was not sent because an unknown encoding error occurred."
msgstr ""
-"Meddelandet kunde kanske inte skickas på grund av att ett okänt fel uppstod:"
+"Meddelandet skickades inte på grund av att ett okänt kodningsfel uppstod."
msgid "Message was not sent because an unknown error occurred."
msgstr ""
@@ -5384,7 +5398,7 @@ msgid "You have signed on from another location."
msgstr "Du har loggat in från en annan plats."
msgid "The MSN servers are temporarily unavailable. Please wait and try again."
-msgstr "MSN-sernvern är temporärt otillgänglig. Var god försök igen senare."
+msgstr "MSN-sernvern är temporärt otillgänglig. Var god försök igen senare."
msgid "The MSN servers are going down temporarily."
msgstr "MSN-servern går ner temporärt."
@@ -5396,7 +5410,7 @@ msgstr "Kan inte autentisera: %s"
msgid ""
"Your MSN buddy list is temporarily unavailable. Please wait and try again."
msgstr ""
-"Din MSN-kompislista är otillgänglig temporärt. Var god försök igen senare."
+"Din MSN-kompislista är otillgänglig temporärt. Var god försök igen senare."
msgid "Handshaking"
msgstr "Handskakning"
@@ -5464,20 +5478,11 @@ msgstr "%s har lagt till dig till sin kompislista."
msgid "%s has removed you from his or her buddy list."
msgstr "%s har tagit bort dig från sin kontaktlista."
-#, fuzzy
msgid "Delete Buddy from Address Book?"
-msgstr "Lägg till i adressboken"
+msgstr "Ta bort kompisen från adressboken?"
-#, fuzzy
msgid "Do you want to delete this buddy from your address book as well?"
-msgstr "Vill du lägga till den här kompisen till din kompislista?"
-
-#. only notify the user about problems adding to the friends list
-#. * maybe we should do something else for other lists, but it probably
-#. * won't cause too many problems if we just ignore it
-#, c-format
-msgid "Unable to add \"%s\"."
-msgstr "Kunde inte lägga till \"%s\"."
+msgstr "Vill du även ta bort denna kompisen från din adressbok?"
msgid "The username specified is invalid."
msgstr "Den angivna användarnamnet är ogiltigt."
@@ -5485,6 +5490,9 @@ msgstr "Den angivna användarnamnet är ogiltigt."
msgid "This Hotmail account may not be active."
msgstr "Detta Hotmail-konto är kanske inte aktivt."
+msgid "Profile URL"
+msgstr "Profil-URL"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -5498,18 +5506,12 @@ msgstr "Detta Hotmail-konto är kanske inte aktivt."
msgid "MSN Protocol Plugin"
msgstr "Insticksmodul för MSN-protokollet"
-msgid "Missing Cipher"
-msgstr "Chiffer Saknas"
-
-msgid "The RC4 cipher could not be found"
-msgstr "RC4-chiffret kan inte hittas"
+#, c-format
+msgid "No such user: %s"
+msgstr "Ingen sådan användare: %s"
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
-msgstr ""
-"Uppgradera till en version av libpurble med RC4-stöd (>= 2.0.1). MySpaceIM-"
-"insticksmodulen kommer inte läsas in."
+msgid "User lookup"
+msgstr "Användarsökning"
msgid "Reading challenge"
msgstr "Läser challenge"
@@ -5520,11 +5522,17 @@ msgstr "Oväntad challengelängd från server"
msgid "Logging in"
msgstr "Loggar in"
-#, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] "Anslutning till servern tappad (ingen data mottagen på %d sekund)"
-msgstr[1] "Anslutning till servern tappad (ingen data mottagen på %d sekunder)"
+msgid "MySpaceIM - No Username Set"
+msgstr "MySpaceIM - Inget användarnamn angett"
+
+msgid "You appear to have no MySpace username."
+msgstr "Du verkar inte ha något användarnamn hos MySpace."
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr "Vill du ange ett nu? (Obs: DETTA KAN INTE ÄNDRAS!)"
+
+msgid "Lost connection with server"
+msgstr "Tappade anslutningen till servern"
#. Can't write _()'d strings in array initializers. Workaround.
msgid "New mail messages"
@@ -5545,14 +5553,25 @@ msgstr "Nya bildkommentarer"
msgid "MySpace"
msgstr "MySpace"
-msgid "MySpaceIM - No Username Set"
-msgstr "MySpaceIM - Inget användarnamn angett"
+msgid "IM Friends"
+msgstr "Snabbmeddelandevänner"
-msgid "You appear to have no MySpace username."
-msgstr "Du verkar inte ha något användarnamn hos 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 vän lades till eller uppdaterades av servern (inklusive vänner som redan "
+"fanns på serverns lista)"
+msgstr[1] ""
+"%d vänner lades till eller uppdaterades av servern (inklusive vänner som "
+"redan fanns på serverns lista)"
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
-msgstr "Vill du ange ett nu? (Obs: DETTA KAN INTE ÄNDRAS!)"
+msgid "Add contacts from server"
+msgstr "Lägg till kontakter från server"
#. The session is now set up, ready to be connected. This emits the
#. * signedOn signal, so clients can now do anything with msimprpl, and
@@ -5579,6 +5598,19 @@ msgstr ""
msgid "MySpaceIM Error"
msgstr "MySpaceIM-fel"
+msgid "Invalid input condition"
+msgstr "Ogiltigt inmatningsvillkor"
+
+msgid "Read buffer full (2)"
+msgstr "Läsbuffert full (2)"
+
+msgid "Unparseable message"
+msgstr "Otolkbart meddelande"
+
+#, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr "Kunde inte ansluta till värd: %s (%d)"
+
# Vad säger att det är till just en chatt kompisen ska läggas till?
msgid "Failed to add buddy"
msgstr "Kunde inte lägga till kompis"
@@ -5590,13 +5622,6 @@ msgstr "'addbuddy'-kommandot misslyckades."
msgid "persist command failed"
msgstr "'persist'-kommandot misslyckades"
-#, c-format
-msgid "No such user: %s"
-msgstr "Ingen sådan användare: %s"
-
-msgid "User lookup"
-msgstr "Användarsökning"
-
msgid "Failed to remove buddy"
msgstr "Kunde inte ta bort kompis från chatt"
@@ -5606,38 +5631,18 @@ msgstr "'delbuddy'-kommadot misslyckades"
msgid "blocklist command failed"
msgstr "'blocklist'-kommandot misslyckades"
-msgid "Invalid input condition"
-msgstr "Ogiltigt inmatningsvillkor"
-
-msgid "Read buffer full (2)"
-msgstr "Läsbuffert full (2)"
-
-msgid "Unparseable message"
-msgstr "Otolkbart meddelande"
-
-#, c-format
-msgid "Couldn't connect to host: %s (%d)"
-msgstr "Kunde inte ansluta till värd: %s (%d)"
+msgid "Missing Cipher"
+msgstr "Chiffer Saknas"
-msgid "IM Friends"
-msgstr "Snabbmeddelandevänner"
+msgid "The RC4 cipher could not be found"
+msgstr "RC4-chiffret kan inte hittas"
-#, c-format
msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-"%d vän lades till eller uppdaterades av servern (inklusive vänner som redan "
-"fanns på serverns lista)"
-msgstr[1] ""
-"%d vänner lades till eller uppdaterades av servern (inklusive vänner som "
-"redan fanns på serverns lista)"
-
-msgid "Add contacts from server"
-msgstr "Lägg till kontakter från server"
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
+"Uppgradera till en version av libpurble med RC4-stöd (>= 2.0.1). MySpaceIM-"
+"insticksmodulen kommer inte läsas in."
msgid "Add friends from MySpace.com"
msgstr "Lägg till vänner från MySpace.com"
@@ -5681,9 +5686,6 @@ msgstr "Grundstorlek för tecken (punkter)"
msgid "User"
msgstr "Användare"
-msgid "Profile"
-msgstr "Profil"
-
msgid "Headline"
msgstr "Rubrik"
@@ -5696,17 +5698,6 @@ msgstr "Totala vänner"
msgid "Client Version"
msgstr "Klientversion"
-#. Protocol won't log in now without a username set.. Disconnect
-msgid "No username set"
-msgstr "Inget användarnamn angett"
-
-msgid "MySpaceIM - Please Set a Username"
-msgstr "MySpaceIM - Var vänlig ange ett användarnamn"
-
-msgid "Please enter a username to check its availability:"
-msgstr ""
-"Var vänlig ange ett användarnamn för att undersöka dess tillgänglighet."
-
msgid "MySpaceIM - Username Available"
msgstr "MySpaceIM - Användarnamnet är tillgänglig"
@@ -5716,12 +5707,23 @@ msgstr "Detta användarnamn är tillgängligt. Vill du ange det?"
msgid "ONCE SET, THIS CANNOT BE CHANGED!"
msgstr "OM EN GÅNG ANGETT GÅR DET INTE ATT ÄNDRA!"
+msgid "MySpaceIM - Please Set a Username"
+msgstr "MySpaceIM - Var vänlig ange ett användarnamn"
+
msgid "This username is unavailable."
msgstr "Detta användarnamn är inte tillgängligt."
msgid "Please try another username:"
msgstr "Var vänlig försök med ett annat användarnamn:"
+#. Protocol won't log in now without a username set.. Disconnect
+msgid "No username set"
+msgstr "Inget användarnamn angett"
+
+msgid "Please enter a username to check its availability:"
+msgstr ""
+"Var vänlig ange ett användarnamn för att undersöka dess tillgänglighet."
+
#. TODO: icons for each zap
#. Lots of comments for translators:
#. Zap means "to strike suddenly and forcefully as if with a
@@ -5860,7 +5862,7 @@ msgid "Raspberrying %s..."
msgstr ""
msgid "Required parameters not passed in"
-msgstr "Nödvändiga parametrar passade inte in"
+msgstr "Nödvändiga parametrar skickades inte"
msgid "Unable to write to network"
msgstr "Kan inte skriva till nätverk"
@@ -5878,7 +5880,7 @@ msgid "Conference does not exist"
msgstr "Konferensen finns inte"
msgid "A folder with that name already exists"
-msgstr "En katalog med det namnet finn redan"
+msgstr "En katalog med det namnet finns redan"
msgid "Not supported"
msgstr "Ej stödd"
@@ -6108,7 +6110,6 @@ msgstr ""
msgid "Error. SSL support is not installed."
msgstr "Fel. SSL-stöd är inte installerat."
-#, c-format
msgid "This conference has been closed. No more messages can be sent."
msgstr "Denna konferens har stängts. Inga fler meddelande kan bli skickade."
@@ -6209,7 +6210,7 @@ msgid ""
"IM. Try using file transfer instead.\n"
msgstr ""
"%s försöker sända dig en %s-fil, men vi tillåter bara filer upp till %s över "
-"Diektanslutning. Försök som filöverföring istället.\n"
+"Direktanslutning. Försök som filöverföring istället.\n"
#, c-format
msgid "File %s is %s, which is larger than the maximum size of %s."
@@ -6373,23 +6374,18 @@ msgstr "Kamera"
msgid "Screen Sharing"
msgstr "Skärmdelning"
-#, c-format
msgid "Free For Chat"
msgstr "Tillgänglig för chatt"
-#, c-format
msgid "Not Available"
msgstr "Ej tillgänglig"
-#, c-format
msgid "Occupied"
msgstr "Upptagen"
-#, c-format
msgid "Web Aware"
msgstr "Webbmedveten"
-#, c-format
msgid "Invisible"
msgstr "Osynlig"
@@ -6436,7 +6432,7 @@ msgid ""
"only letters, numbers and spaces, or contain only numbers."
msgstr ""
"Kan inte logga in: Kunde inte ansluta som %s eftersom användarnamnet är "
-"ogiltigt. Användarnamnet måste vara en giltig epostadress eller starta med "
+"ogiltigt. Användarnamnet måste vara en giltig mejladress eller starta med "
"en bokstav och får endast innehålla bokstäver, nummer och mellanslag, eller "
"enbart innehålla nummer."
@@ -6491,12 +6487,10 @@ 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 ""
-"Du kanske snart blir frånkopplad, du kanske ska använda TOC tills detta är "
-"fixat. Kolla på %s efter uppdateringar."
+"Du kanske snart blir frånkopplad. I så fall kan du kolla på %s efter "
+"uppdateringar."
msgid "Unable to get a valid AIM login hash."
msgstr "Kunde inte hämta en giltig AIM-inloggnings-hash."
@@ -6515,7 +6509,7 @@ msgid "Unable to initialize connection"
msgstr "Kan inte skapa anslutning"
msgid "Please authorize me so I can add you to my buddy list."
-msgstr "Användaren vill lägga till dig i dennes kompislista."
+msgstr "Snälla godkänn mig så jag kan lägga till dig till min kompislista."
msgid "Authorization Request Message:"
msgstr "Meddelande om auktoriseringsbegäran:"
@@ -6586,7 +6580,7 @@ msgstr ""
#, c-format
msgid "ICQ user %u has sent you a buddy: %s (%s)"
-msgstr "ICQ-användaren %u har skickat dig en kompis: %s (%s)"
+msgstr "ICQ-användaren %u har skickat dig en kompis: %s (%s)"
msgid "Do you want to add this buddy to your buddy list?"
msgstr "Vill du lägga till den här kompisen till din kompislista?"
@@ -6668,6 +6662,9 @@ msgstr "Ansluten sedan"
msgid "Member Since"
msgstr "Medlem sedan"
+msgid "Profile"
+msgstr "Profil"
+
msgid "Your AIM connection may be lost."
msgstr "Din anslutning kan vara borta."
@@ -6742,7 +6739,7 @@ msgid ""
"from the original."
msgstr ""
"Fel 0x%04x: Kan inte formatera användarnamnet eftersom det begärda namnet "
-"skiljer sig från orginalet."
+"skiljer sig från originalet."
#, c-format
msgid "Error 0x%04x: Unable to format username because it is invalid."
@@ -6854,15 +6851,13 @@ msgid ""
"numbers and spaces, or contain only numbers."
msgstr ""
"Kunde inte lägga till kompisen %s eftersom användarnamnet är ogiltigt. "
-"Användarnamnet måste antingen vara en giltig epost-adress, börja med en "
+"Användarnamnet måste antingen vara en giltig mejladress, börja med en "
"bokstav och endast innehålla bokstäver, siffror och mellanslag eller bara "
"innehålla siffror."
-#, fuzzy
msgid "Unable to Add"
-msgstr "Kan inte lägga till"
+msgstr "Kunde inte lägga till"
-#, fuzzy
msgid "Unable to Retrieve Buddy List"
msgstr "Kunde inte hämta kompislista"
@@ -6962,6 +6957,7 @@ msgstr "_Anslut"
msgid "Get AIM Info"
msgstr "Hämta AIM-info"
+#. We only do this if the user is in our buddy list
msgid "Edit Buddy Comment"
msgstr "Ändra kompiskommentar"
@@ -7004,7 +7000,7 @@ msgid ""
"You can re-request authorization from these buddies by right-clicking on "
"them and selecting \"Re-request Authorization.\""
msgstr ""
-"Du kan begära auktorisering igen från dessa kompisar genom att högerkilcka "
+"Du kan begära auktorisering igen från dessa kompisar genom att högerklicka "
"på dem och välja \"Begär auktorisering igen.\""
msgid "Find Buddy by Email"
@@ -7037,10 +7033,10 @@ msgid "Confirm Account"
msgstr "Bekräfta konto"
msgid "Display Currently Registered Email Address"
-msgstr "Visa för tillfället registrerad epost-adress"
+msgstr "Visa för tillfället registrerad mejladress"
msgid "Change Currently Registered Email Address..."
-msgstr "Ändra för tillfället registrerad epost-adress..."
+msgstr "Ändra för tillfället registrerad mejladress..."
msgid "Show Buddies Awaiting Authorization"
msgstr "Visa kompisar som väntar på auktorisering"
@@ -7071,7 +7067,6 @@ msgstr "Ber %s att ansluta till oss på %s:%hu för Direct IM."
msgid "Attempting to connect to %s:%hu."
msgstr "Försöker ansluta till %s: %hu."
-#, c-format
msgid "Attempting to connect via proxy server."
msgstr "Försöker ansluta via en proxy-server."
@@ -7089,7 +7084,7 @@ msgstr ""
"betraktas som en säkerhetsrisk."
msgid "Aquarius"
-msgstr "Vattuman"
+msgstr "Vattumanen"
msgid "Pisces"
msgstr "Fiskarna"
@@ -7098,16 +7093,16 @@ msgid "Aries"
msgstr "Stenbocken"
msgid "Taurus"
-msgstr "Oxen"
+msgstr "Oxe"
msgid "Gemini"
-msgstr "Tvillingen"
+msgstr "Tvillingarna"
msgid "Cancer"
msgstr "Kräftan"
msgid "Leo"
-msgstr "Lejon"
+msgstr "Lejonet"
msgid "Virgo"
msgstr "Jungfrun"
@@ -7163,16 +7158,14 @@ msgstr "Gris"
msgid "Other"
msgstr "Annan"
-#, fuzzy
msgid "Visible"
-msgstr "Osynlig"
+msgstr "Synlig"
-msgid "Firend Only"
-msgstr ""
+msgid "Friend Only"
+msgstr "Enbart vänner"
-#, fuzzy
msgid "Private"
-msgstr "Spärrlista"
+msgstr "Privat"
msgid "QQ Number"
msgstr "QQ-nummer"
@@ -7189,9 +7182,8 @@ msgstr "Postnummer"
msgid "Phone Number"
msgstr "Telefonnummer"
-#, fuzzy
msgid "Authorize adding"
-msgstr "Auktorisera kompis?"
+msgstr "Auktorisera "
msgid "Cellphone Number"
msgstr "Mobilnummer"
@@ -7199,132 +7191,108 @@ msgstr "Mobilnummer"
msgid "Personal Introduction"
msgstr "Personlig introduktion"
-#, fuzzy
msgid "City/Area"
-msgstr "Stad"
+msgstr "Stad/Område"
-#, fuzzy
msgid "Publish Mobile"
-msgstr "Personlig mobil"
+msgstr "Publisera mobil"
-#, fuzzy
msgid "Publish Contact"
-msgstr "Kontaktalias"
+msgstr "Publisera kontakt"
msgid "College"
msgstr "Universitet"
-#, fuzzy
msgid "Horoscope"
-msgstr "Horoskopstecken"
+msgstr "Horoskop"
-#, fuzzy
msgid "Zodiac"
-msgstr "Stjärntecken"
+msgstr "Zodiak"
-#, fuzzy
msgid "Blood"
-msgstr "Blockerad"
+msgstr "Blod"
-#, fuzzy
msgid "True"
-msgstr "Oxen"
+msgstr "Sann"
-#, fuzzy
msgid "False"
-msgstr "Misslyckades"
+msgstr "Falsk"
-#, fuzzy
msgid "Modify Contact"
-msgstr "Ändra konto"
+msgstr "Ändra kontakt"
-#, fuzzy
msgid "Modify Address"
-msgstr "Hemadress"
+msgstr "Ändra adress"
-#, fuzzy
msgid "Modify Extended Information"
-msgstr "Ändra min information"
+msgstr "Ändra utökad information"
-#, fuzzy
msgid "Modify Information"
-msgstr "Ändra min information"
+msgstr "Ändra information"
-#, fuzzy
msgid "Update"
-msgstr "Senast uppdaterad"
+msgstr "Uppdatera"
-#, fuzzy
msgid "Could not change buddy information."
-msgstr "Fel då kompisen skulle läggas till"
+msgstr "Kunde inte ändra kompisinformationen."
#, c-format
-msgid "%d needs Q&A"
-msgstr ""
+msgid "%u requires verification"
+msgstr "%u kräver verifikation"
-#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "Lägg till kompis"
+msgid "Add buddy question"
+msgstr "Lägg till kompisfråga"
-#, fuzzy
-msgid "Input answer here"
-msgstr "Inmatningsförfrågan här"
+msgid "Enter answer here"
+msgstr "Ange ett svar här"
msgid "Send"
msgstr "Skicka"
-#, fuzzy
msgid "Invalid answer."
-msgstr "Ogiltigt användarnamn"
+msgstr "Ogiltigt svar."
msgid "Authorization denied message:"
msgstr "Auktoriserings nekelsemeddelande:"
-#, fuzzy
-msgid "Sorry, You are not my style."
+msgid "Sorry, you're not my style."
msgstr "Tyvärr, du är inte min typ..."
-#, fuzzy, c-format
-msgid "%d needs authentication"
-msgstr "Användaren %d behöver autentisering"
+#, c-format
+msgid "%u needs authorization"
+msgstr "%u behöver autentisering"
-#, fuzzy
msgid "Add buddy authorize"
-msgstr "Lägg till kompisen i din lista?"
+msgstr "Lägg till kompisgodkänning"
-msgid "Input request here"
-msgstr "Inmatningsförfrågan här"
+msgid "Enter request here"
+msgstr "Ange förfrågan här"
msgid "Would you be my friend?"
msgstr "Vill du bli min vän?"
-#, fuzzy
msgid "QQ Buddy"
-msgstr "Kompis"
+msgstr "QQ Kompis"
-#, fuzzy
msgid "Add buddy"
msgstr "Lägg till kompis"
-#, fuzzy
msgid "Invalid QQ Number"
-msgstr "Ogiltigt QQ-ansikte"
+msgstr "Ogiltigt QQ-nummer"
-#, fuzzy
msgid "Failed sending authorize"
-msgstr "Snälla auktorisera mig!"
+msgstr "Misslyckades med att skicka auktorisering"
-#, fuzzy, c-format
-msgid "Failed removing buddy %d"
-msgstr "Kunde inte ta bort kompis från chatt"
+#, c-format
+msgid "Failed removing buddy %u"
+msgstr "Misslyckades med att ta bort kompisen %u"
-#, fuzzy, c-format
+#, c-format
msgid "Failed removing me from %d's buddy list"
-msgstr "%s har tagit bort dig från sin kontaktlista."
+msgstr "Misslyckades med att ta bort mig från %d's kompislista"
-#, fuzzy
msgid "No reason given"
-msgstr "Ingen motivering angiven."
+msgstr "Ingen motivering angavs."
#. only need to get value
#, c-format
@@ -7334,9 +7302,9 @@ msgstr "Du har lagts till av %s"
msgid "Would you like to add him?"
msgstr "Vill du lägga till honom?"
-#, fuzzy, c-format
+#, c-format
msgid "Rejected by %s"
-msgstr "Avslå"
+msgstr "Avslagen av %s"
#, c-format
msgid "Message: %s"
@@ -7351,135 +7319,123 @@ msgstr "Grupp ID"
msgid "QQ Qun"
msgstr "QQ Qun"
-#, fuzzy
msgid "Please enter Qun number"
-msgstr "Ange det nya namnet för %s"
+msgstr "Ange Qun-numret"
-#, fuzzy
msgid "You can only search for permanent Qun\n"
-msgstr "Du kan enbart söka efter permanenta QQ-grupper\n"
+msgstr "Du kan enbart söka efter permanenta Qun\n"
+
+msgid "(Invalid UTF-8 string)"
+msgstr "(Felaktig UTF-8-sträng)"
-#, fuzzy
msgid "Not member"
-msgstr "Jag är inte en medlem"
+msgstr "Inte medlem"
msgid "Member"
msgstr "Medlem"
-#, fuzzy
msgid "Requesting"
-msgstr "Förfrågningsdialog"
+msgstr "Efterfrågar"
-#, fuzzy
msgid "Admin"
-msgstr "Adium"
+msgstr "Admin"
-#, fuzzy
msgid "Notice"
msgstr "Notering"
-#, fuzzy
msgid "Detail"
-msgstr "Förval"
+msgstr "Detaljer"
msgid "Creator"
msgstr "Skapare"
-#, fuzzy
msgid "About me"
-msgstr "Om %s"
+msgstr "Om mig"
-#, fuzzy
msgid "Category"
-msgstr "Chattfel"
+msgstr "Kategori"
-#, fuzzy
msgid "The Qun does not allow others to join"
-msgstr "Denna gruppen tillåter inte andra att gå med"
+msgstr "Detta Qun tillåter inte andra att gå med"
-#, fuzzy
msgid "Join QQ Qun"
-msgstr "Anslut till chatt"
+msgstr "Gå med QQ Qun"
+
+msgid "Input request here"
+msgstr "Inmatningsförfrågan här"
#, c-format
-msgid "Successfully joined Qun %s (%d)"
-msgstr ""
+msgid "Successfully joined Qun %s (%u)"
+msgstr "Lyckades med att gå med i Qun %s (%u)"
-#, fuzzy
msgid "Successfully joined Qun"
-msgstr "Du har problemfritt ändrat Qun-medlemmen"
+msgstr "Lyckades ned att gå med i Qun"
#, c-format
-msgid "Qun %d denied to join"
-msgstr ""
+msgid "Qun %u denied from joining"
+msgstr "Qun %u nekades att gå med"
msgid "QQ Qun Operation"
msgstr "QQ Qun-operation"
-#, fuzzy
msgid "Failed:"
-msgstr "Misslyckades"
+msgstr "Misslyckades:"
-msgid "Join Qun, Unknow Reply"
-msgstr ""
+msgid "Join Qun, Unknown Reply"
+msgstr "Gick med i Qun, Okänt svar"
-#, fuzzy
msgid "Quit Qun"
-msgstr "QQ Qun"
+msgstr "Avsluta Qun"
msgid ""
"Note, if you are the creator, \n"
"this operation will eventually remove this Qun."
msgstr ""
"Notera att om du är skaparen, \n"
-"denna operation kommer till slut ta bort detta Qun."
+"kommer denna operation till slut ta bort detta Qun."
-#, fuzzy
-msgid "Sorry, you are not our style ..."
-msgstr "Tyvärr, du är inte min typ..."
+msgid "Sorry, you are not our style"
+msgstr "Tyvärr, du är inte vår typ"
-#, fuzzy
-msgid "Successfully changed Qun member"
-msgstr "Du har problemfritt ändrat Qun-medlemmen"
+msgid "Successfully changed Qun members"
+msgstr "Lyckades med att ändra Qun-medlemmar"
-#, fuzzy
msgid "Successfully changed Qun information"
-msgstr "Du har problemfritt ändrat Qun-informationen"
+msgstr "Lyckades ändra Qun-informationen"
msgid "You have successfully created a Qun"
msgstr "Du har problemfritt skapat ett Qun"
-#, fuzzy
-msgid "Would you like to set detailed information now?"
-msgstr "Vill du ange Qun-detaljerna nu?"
+msgid "Would you like to set up detailed information now?"
+msgstr "Vill du ange detaljerad information nu?"
# Osäker
msgid "Setup"
msgstr "Ange"
-#, fuzzy, c-format
-msgid "%d requested to join Qun %d for %s"
-msgstr "Användaren %d har ansökt om att få gå med i grupp %d"
+#, c-format
+msgid "%u requested to join Qun %u for %s"
+msgstr "%u efterfrågade att få gå med i QUN %u för %s"
-#, fuzzy, c-format
-msgid "%d request to join Qun %d"
-msgstr "Användaren %d har ansökt om att få gå med i grupp %d"
+#, c-format
+msgid "%u request to join Qun %u"
+msgstr "%u efterfrågade att få gå med i Qun %u"
-#, fuzzy, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
-msgstr "Kunde inte ansluta kompis till chatt"
+#, c-format
+msgid "Failed to join Qun %u, operated by admin %u"
+msgstr "Misslyckades med att gå med i QUN %u, administrerad av %u"
#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
-msgstr ""
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
+msgstr "<b>Gå med i Qun %u tilläts av admin %u för %s</b>"
-#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
-msgstr "Ta bort kompis"
+#, c-format
+msgid "<b>Removed buddy %u.</b>"
+msgstr "<b>Tog bort kompisen %u.</b>"
#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+msgid "<b>New buddy %u joined.</b>"
+msgstr "<b>Nya kompisen %u gick med.</b>"
#, c-format
msgid "Unknown-%d"
@@ -7494,20 +7450,17 @@ msgstr "VIP"
msgid " TCP"
msgstr "TCP"
-#, fuzzy
msgid " FromMobile"
-msgstr "Mobil"
+msgstr "FrånMobil"
-#, fuzzy
msgid " BindMobile"
-msgstr "Mobil"
+msgstr "BindMobil"
msgid " Video"
msgstr " Video"
-#, fuzzy
msgid " Zone"
-msgstr "Ingen"
+msgstr "Zon"
msgid "Flag"
msgstr "Flagga"
@@ -7518,110 +7471,110 @@ msgstr "Ver"
msgid "Invalid name"
msgstr "Ogiltigt namn"
-#, fuzzy
msgid "Select icon..."
-msgstr "Välj katalog..."
+msgstr "Välj ikon..."
-#, fuzzy, c-format
+#, c-format
msgid "<b>Login time</b>: %d-%d-%d, %d:%d:%d<br>\n"
-msgstr "<b>Anslutningsnamn</b>: %s<br>\n"
+msgstr "<b>Inloggningstid</b>: %d-%d-%d, %d:%d:%d<br>\n"
-#, fuzzy, c-format
+#, c-format
msgid "<b>Total Online Buddies</b>: %d<br>\n"
-msgstr "<b>Online just nu</b>: %d<br>\n"
+msgstr "<b>Kompisar anslutna totalt</b>: %d<br>\n"
-#, fuzzy, c-format
+#, c-format
msgid "<b>Last Refresh</b>: %d-%d-%d, %d:%d:%d<br>\n"
-msgstr "<b>Senast uppdatering</b>: %s<br>\n"
+msgstr "<b>Senast uppdaterad</b>: %d-%d-%d, %d:%d:%d<br>\n"
-#, fuzzy, c-format
+#, c-format
msgid "<b>Server</b>: %s<br>\n"
-msgstr "<b>Server</b>: %s: %d<br>\n"
+msgstr "<b>Server</b>: %s<br>\n"
-#, fuzzy, c-format
+#, c-format
msgid "<b>Client Tag</b>: %s<br>\n"
-msgstr "<b>Anslutningsnamn</b>: %s<br>\n"
+msgstr "<b>Klienttagg</b>: %s<br>\n"
#, c-format
msgid "<b>Connection Mode</b>: %s<br>\n"
msgstr "<b>Anslutningsläge</b>: %s<br>\n"
-#, fuzzy, c-format
+#, c-format
msgid "<b>My Internet IP</b>: %s:%d<br>\n"
-msgstr "<b>Anslutningsläge</b>: %s<br>\n"
+msgstr "<b>Mitt Internet-IP</b>: %s:%d<br>\n"
-#, fuzzy, c-format
+#, c-format
msgid "<b>Sent</b>: %lu<br>\n"
-msgstr "<b>Server</b>: %s: %d<br>\n"
+msgstr "<b>Skickat</b>: %lu<br>\n"
-#, fuzzy, c-format
+#, c-format
msgid "<b>Resend</b>: %lu<br>\n"
-msgstr "<b>Senast uppdatering</b>: %s<br>\n"
+msgstr "<b>Återsänd</b>: %lu<br>\n"
-#, fuzzy, c-format
+#, c-format
msgid "<b>Lost</b>: %lu<br>\n"
-msgstr "<b>Senast uppdatering</b>: %s<br>\n"
+msgstr "<b>Förlorat</b>: %lu<br>\n"
-#, fuzzy, c-format
+#, c-format
msgid "<b>Received</b>: %lu<br>\n"
-msgstr "<b>Server</b>: %s: %d<br>\n"
+msgstr "<b>Mottaget</b>: %lu<br>\n"
-#, fuzzy, c-format
+#, c-format
msgid "<b>Received Duplicate</b>: %lu<br>\n"
-msgstr "<b>Mit publika IP</b>: %s<br>\n"
+msgstr "<b>Mottagna dubletter</b>: %lu<br>\n"
-#, fuzzy, c-format
+#, c-format
msgid "<b>Time</b>: %d-%d-%d, %d:%d:%d<br>\n"
-msgstr "<b>Anslutningsnamn</b>: %s<br>\n"
+msgstr "<b>Tid</b>: %d-%d-%d, %d:%d:%d<br>\n"
-#, fuzzy, c-format
+#, c-format
msgid "<b>IP</b>: %s<br>\n"
-msgstr "<b>Server</b>: %s: %d<br>\n"
+msgstr "<b>IP</b>: %s<br>\n"
msgid "Login Information"
msgstr "Inloggningsinformation"
msgid "<p><b>Original Author</b>:<br>\n"
-msgstr ""
+msgstr "<p><b>Originalförfattare</b>:<br>\n"
msgid "<p><b>Code Contributors</b>:<br>\n"
-msgstr ""
+msgstr "<p><b>Kodbidragsgivare</b>:<br>\n"
-#, fuzzy
msgid "<p><b>Lovely Patch Writers</b>:<br>\n"
-msgstr "<b>Senast uppdatering</b>: %s<br>\n"
+msgstr "<p><b>Kärleksfulla patchskrivare</b>:<br>\n"
-#, fuzzy
msgid "<p><b>Acknowledgement</b>:<br>\n"
-msgstr "<b>Server</b>: %s: %d<br>\n"
+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 "<p><i>And, all the boys in the backroom...</i><br>\n"
-msgstr ""
+msgstr "<p><i>Och alla pojkarna i bakrummet...</i><br>\n"
msgid "<i>Feel free to join us!</i> :)"
-msgstr ""
+msgstr "<i>Känn dig fri att gå med oss!</i> :)"
-#, fuzzy, c-format
-msgid "About OpenQ r%s"
-msgstr "Om %s"
+#, c-format
+msgid "About OpenQ %s"
+msgstr "Om OpenQ %s"
-#, fuzzy
msgid "Change Icon"
-msgstr "Spara ikon"
+msgstr "Ändra ikon"
msgid "Change Password"
msgstr "Byt lösenord"
-#, fuzzy
msgid "Account Information"
-msgstr "Inloggningsinformation"
+msgstr "Kontoinformation"
msgid "Update all QQ Quns"
-msgstr ""
+msgstr "Updatera alla QQ Quns"
-#, fuzzy
msgid "About OpenQ"
-msgstr "Om %s"
+msgstr "Om OpenQ"
+
+msgid "Modify Buddy Memo"
+msgstr "Ändra Kompismemo"
#. *< type
#. *< ui_requirement
@@ -7633,59 +7586,48 @@ msgstr "Om %s"
#. *< version
#. * summary
#. * description
-#, fuzzy
msgid "QQ Protocol Plugin"
-msgstr "QQ protokoll\tmodul"
+msgstr "QQ Protokollplugin"
-#, fuzzy
msgid "Auto"
-msgstr "Författare"
+msgstr "Auto"
-#, fuzzy
msgid "Select Server"
-msgstr "Välj användare"
+msgstr "Välj server"
msgid "QQ2005"
-msgstr ""
+msgstr "QQ2005"
msgid "QQ2007"
-msgstr ""
+msgstr "qq2007"
msgid "QQ2008"
-msgstr ""
+msgstr "QQ2008"
-#. #endif
-#, fuzzy
msgid "Connect by TCP"
msgstr "Ansluter med TCP"
-#, fuzzy
msgid "Show server notice"
-msgstr "Serverport"
+msgstr "Visa servernotis"
-#, fuzzy
msgid "Show server news"
-msgstr "Serveradress"
+msgstr "Visa servernyheter"
+
+msgid "Show chat room when msg comes"
+msgstr "Visa chattrum när meddelanden kommer"
-#, fuzzy
msgid "Keep alive interval (seconds)"
-msgstr "Håll vid liv intrevall(er)"
+msgstr "Livhållningsintervall (seconds)"
-#, fuzzy
msgid "Update interval (seconds)"
-msgstr "Uppdateringsintervall(er)"
+msgstr "Uppdateringsintervall (seconds)"
-#, fuzzy
-msgid "Can not decrypt server reply"
-msgstr "Kan inte dekryptera inloggningssvaret"
-
-#, fuzzy
-msgid "Can not decrypt get server reply"
-msgstr "Kan inte dekryptera inloggningssvaret"
+msgid "Cannot decrypt server reply"
+msgstr "Kan inte dekryptera serversvaret"
#, c-format
msgid "Failed requesting token, 0x%02X"
-msgstr ""
+msgstr "Misslyckades med att efterfråga polett, 0x%02X"
#, c-format
msgid "Invalid token len, %d"
@@ -7693,56 +7635,53 @@ msgstr "Ogiltig polettlen, %d"
#. extend redirect used in QQ2006
msgid "Redirect_EX is not currently supported"
-msgstr ""
+msgstr "Redirect_EX stöds inte för tillfället"
#. need activation
#. need activation
#. need activation
-#, fuzzy
msgid "Activation required"
msgstr "Registrering krävs"
-#, fuzzy, c-format
-msgid "Unknow reply code when login (0x%02X)"
-msgstr "Ogiltig polettsvarskod, 0x%02X"
+#, c-format
+msgid "Unknown reply code when logging in (0x%02X)"
+msgstr "Okänd svarskod vid inloggning (0x%02X)"
-msgid "Keep alive error"
-msgstr "Problem att hålla vid liv"
+msgid "Could not decrypt server reply"
+msgstr "Kan inte avkryptera inloggningssvaret"
-#, fuzzy
-msgid "Requesting captcha ..."
-msgstr "Efterfrågar %s's uppmärksamhet..."
+msgid "Requesting captcha"
+msgstr "Efterfrågar captcha"
-msgid "Checking code of captcha ..."
-msgstr ""
+msgid "Checking captcha"
+msgstr "Testar captcha"
-msgid "Failed captcha verify"
-msgstr ""
+msgid "Failed captcha verification"
+msgstr "Misslyckades med captcha-verifikationen"
-#, fuzzy
msgid "Captcha Image"
-msgstr "Spara bild"
+msgstr "Captcha-bild"
-#, fuzzy
msgid "Enter code"
-msgstr "Ange lösenordet"
+msgstr "Ange kod"
-msgid "QQ Captcha Verifing"
-msgstr ""
+msgid "QQ Captcha Verification"
+msgstr "QQ Captcha-verifikation"
-#, fuzzy
msgid "Enter the text from the image"
-msgstr "Ange namnet på gruppen"
+msgstr "Ange testen från bilden"
#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
-msgstr ""
+msgid "Unknown reply when checking password (0x%02X)"
+msgstr "Okänt svar då lösenordet testades (0x%02X)"
#, c-format
msgid ""
-"Unknow reply code when login (0x%02X):\n"
+"Unknown reply code when logging in (0x%02X):\n"
"%s"
msgstr ""
+"Okänd svarskod vid inloggning (0x%02X):\n"
+"%s"
#. we didn't successfully connect. tdt->toc_fd is valid here
msgid "Unable to connect."
@@ -7751,14 +7690,6 @@ msgstr "Kan inte ansluta."
msgid "Socket error"
msgstr "Uttag-fel"
-#, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr ""
-"Tappade anslutningen med servern:\n"
-"%d, %s"
-
msgid "Unable to read from socket"
msgstr "Kan inte läsa från uttag"
@@ -7768,81 +7699,74 @@ msgstr "Skrivfel"
msgid "Connection lost"
msgstr "Anslutningen tappades"
-#, fuzzy
-msgid "Get server ..."
-msgstr "Ändra användarinfo..."
+msgid "Getting server"
+msgstr "Hämtar server"
-#, fuzzy
-msgid "Request token"
-msgstr "Begäran nekad"
+msgid "Requesting token"
+msgstr "Efterfrågar polett"
msgid "Couldn't resolve host"
msgstr "Kunde ej slå upp värden"
-#, fuzzy
msgid "Invalid server or port"
-msgstr "Ogiltigt fel"
+msgstr "Ogiltig server eller port"
-#, fuzzy
-msgid "Connecting server ..."
-msgstr "Anslutningsserver"
+msgid "Connecting to server"
+msgstr "Ansluter till server"
-#, fuzzy
msgid "QQ Error"
-msgstr "QQid-fel"
-
-msgid "Failed to send IM."
-msgstr "Kunde inte skicka snabbmeddelande"
+msgstr "QQ-fel"
-#, fuzzy, c-format
+#, c-format
msgid ""
"Server News:\n"
"%s\n"
"%s\n"
"%s"
-msgstr "ICQ-serverrelay"
+msgstr ""
+"Servernyheter:\n"
+"%s\n"
+"%s\n"
+"%s"
-#, fuzzy, c-format
+#, c-format
+msgid "%s:%s"
+msgstr "%s:%s"
+
+#, c-format
msgid "From %s:"
-msgstr "Från"
+msgstr "Från %s:"
-#, fuzzy, c-format
+#, c-format
msgid ""
"Server notice From %s: \n"
"%s"
-msgstr "Serverinstruktioner: %s"
-
-msgid "Unknow SERVER CMD"
msgstr ""
+"Servernotis från %s:\n"
+"%s"
-#, fuzzy, c-format
+msgid "Unknown SERVER CMD"
+msgstr "Okänd SERVER CMD"
+
+#, c-format
msgid ""
"Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
+"Room %u, reply 0x%02X"
msgstr ""
-"Svarade %s(0x%02X )\n"
-"Skickade %s(0x%02X )\n"
-"Rum id %d, svarade [0x%02X]: \n"
-"%s"
+"Felaktigt svar av %s(0x%02X)\n"
+"Rum %u, svar 0x%02X"
-#, fuzzy
msgid "QQ Qun Command"
-msgstr "Kommando"
+msgstr "QQ Qun Kommand"
-#, fuzzy, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr "Du är inte medlemm i gruppen \"%s\"\n"
+msgid "Could not decrypt login reply"
+msgstr "Kan inte avkryptera inloggningssvaret"
-msgid "Can not decrypt login reply"
-msgstr "Kan inte dekryptera inloggningssvaret"
+msgid "Unknown LOGIN CMD"
+msgstr "Okänd LOGIN CMD"
-#, fuzzy
-msgid "Unknow LOGIN CMD"
-msgstr "Okänd anledning"
-
-#, fuzzy
-msgid "Unknow CLIENT CMD"
-msgstr "Okänd anledning"
+msgid "Unknown CLIENT CMD"
+msgstr "Okänd CLIENT CMD"
#, c-format
msgid "%d has declined the file %s"
@@ -8033,7 +7957,7 @@ msgid "Sametime ID"
msgstr "Sametime ID"
msgid "An ambiguous user ID was entered"
-msgstr "Ett svårförståligt användarid angavs"
+msgstr "Ett svårförståeligt användarid angavs"
#, c-format
msgid ""
@@ -8054,8 +7978,8 @@ msgid ""
"The identifier '%s' did not match any users in your Sametime community. This "
"entry has been removed from your buddy list."
msgstr ""
-"Identifieraren '%s' matchar inte någon i din Sametime community. DDDDenna "
-"post har blivit borttagen från din kompislista."
+"Identifieraren '%s' matchar inte någon i din Sametime community. Denna post "
+"har blivit borttagen från din kompislista."
#, c-format
msgid ""
@@ -8114,7 +8038,7 @@ msgid ""
"to your buddy list."
msgstr ""
"Identifieraren '%s' kan möjligen referera till någon av följande Notes "
-"adressböcksgrupper. Var god välj den korrekta gruppen från listan här nedan "
+"adressboksgrupper. Var god välj den korrekta gruppen från listan här nedan "
"för att lägga till den till din kompislista."
msgid "Select Notes Address Book"
@@ -8128,7 +8052,7 @@ msgid ""
"The identifier '%s' did not match any Notes Address Book groups in your "
"Sametime community."
msgstr ""
-"Identidieraren '%s' matchade inte någon Notes adressböcksgrupper i din "
+"Identidieraren '%s' matchade inte någon Notes adressboksgrupper i din "
"Sametime-community."
msgid "Notes Address Book Group"
@@ -8297,7 +8221,7 @@ msgstr "Öppna..."
#, c-format
msgid "The %s buddy is not present in the network"
-msgstr "%s kompisenär inte tillgänglig på nätverket"
+msgstr "%s kompisen är inte tillgänglig på nätverket"
msgid ""
"To add the buddy you must import his/her public key. Press Import to import "
@@ -8481,7 +8405,7 @@ msgid ""
"channel public keys are set then only users whose public keys are listed are "
"able to join."
msgstr ""
-"Kanal autentisering används för att säkra kanalen från obehörigt tillträde. "
+"Kanal-autentisering används för att säkra kanalen från obehörigt tillträde. "
"Autentiseringen kan vara baserad på ett lösenord eller en digital signatur. "
"Om ett lösenord är valt, då är det nödvändigt för att kunna ansluta. Om "
"kanalpublika nycklar är valt kan enbart användare vars publika nycklar är "
@@ -8723,10 +8647,10 @@ msgid "Cannot get server information"
msgstr "Kan inte hämta serverinformation"
msgid "Server Statistics"
-msgstr "Serverstatestik"
+msgstr "Serverstatistik"
msgid "Cannot get server statistics"
-msgstr "Kan inte hämta serverstatestik"
+msgstr "Kan inte hämta serverstatistik"
#, c-format
msgid ""
@@ -8746,8 +8670,8 @@ msgid ""
"Total server operators: %d\n"
"Total router operators: %d\n"
msgstr ""
-"Lokala serverstarttid: %s\n"
-"Lokala serverupptid: %s\n"
+"Lokal serverstarttid: %s\n"
+"Lokal serverupptid: %s\n"
"Lokala serverklienter: %d\n"
"Lokala serverkanaler: %d\n"
"Lokala serveroperatörer: %d\n"
@@ -8763,7 +8687,7 @@ msgstr ""
"Totala routeroperatörer: %d\n"
msgid "Network Statistics"
-msgstr "Nätverksstatestik"
+msgstr "Nätverksstatistik"
msgid "Ping failed"
msgstr "Ping misslyckades"
@@ -8823,7 +8747,7 @@ msgid "_View..."
msgstr "_Visa..."
msgid "Unsupported public key type"
-msgstr "Ej stödd publik nyckeltyp"
+msgstr "Ej stödd publik nyckeltyp"
msgid "Disconnected by server"
msgstr "Frånkopplad av server"
@@ -8838,7 +8762,7 @@ msgid ""
"Resuming detached session failed. Press Reconnect to create new connection."
msgstr ""
"Misslyckades med att återuppta frånskild session. Tryck \"Återanslut\" för "
-"at skapa en ny uppkoppling."
+"att skapa en ny uppkoppling."
msgid "Connection failed"
msgstr "Anslutning misslyckad"
@@ -8884,7 +8808,7 @@ msgid ""
"Your Preferred Contact Methods"
msgstr ""
"\n"
-"Dina föredragna kontakmetoder"
+"Dina föredragna kontaktmetoder"
msgid "SMS"
msgstr "SMS"
@@ -8929,7 +8853,7 @@ msgid "Message of the Day"
msgstr "Meddelande för dagen"
msgid "No Message of the Day available"
-msgstr "Inget dagligt meddelande tillgänglig"
+msgstr "Inget dagligt meddelande tillgängligt"
msgid "There is no Message of the Day associated with this connection"
msgstr "Det finns inget dagligt meddelande associerat med denna anslutning"
@@ -8941,7 +8865,7 @@ msgid "Passphrases do not match"
msgstr "Lösenorden stämmer inte överens"
msgid "Key Pair Generation failed"
-msgstr "Genrerering av nyckelpar misslyckades"
+msgstr "Generering av nyckelpar misslyckades"
msgid "Key length"
msgstr "Nyckellängd"
@@ -9012,7 +8936,7 @@ msgstr ""
"nätverk"
msgid "list: List channels on this network"
-msgstr "list: Listar kanalerna på detta nätverk"
+msgstr "list: Listar kanalerna på detta nätverk"
msgid "whois &lt;nick&gt;: View nick's information"
msgstr "whois &lt;nick&gt;: Visar information för nick"
@@ -9089,7 +9013,7 @@ msgstr ""
"getkey &lt;nick|server&gt;: Hämta serverns eller klientens publika nyckel"
msgid "stats: View server and network statistics"
-msgstr "stats: Visa server och nätverksstatestik"
+msgstr "stats: Visa server och nätverksstatistik"
msgid "ping: Send PING to the connected server"
msgstr "ping: skicka PING till den anslutna servern"
@@ -9204,7 +9128,7 @@ msgid ""
"%s\n"
"\n"
msgstr ""
-"Publik nyckelfingeravtryck:\n"
+"Publikt nyckelfingeravtryck:\n"
"%s\n"
"\n"
@@ -9213,7 +9137,7 @@ msgid ""
"Public Key Babbleprint:\n"
"%s"
msgstr ""
-"Publik nyckelpladderavtryck:\n"
+"Publikt nyckelpladderavtryck:\n"
"%s"
msgid "Public Key Information"
@@ -9243,14 +9167,14 @@ msgid ""
"%s sent message to whiteboard on %s channel. Would you like to open the "
"whiteboard?"
msgstr ""
-"%s sände ett meddelande till vita tavlan i kanal %s. Will du öppna den vita "
+"%s sände ett meddelande till vita tavlan i kanal %s. Vill du öppna den vita "
"tavlan?"
msgid "Whiteboard"
msgstr "Whiteboard"
msgid "No server statistics available"
-msgstr "Ingen serverstatestik tillgänglig"
+msgstr "Ingen serverstatistik tillgänglig"
#, c-format
msgid "Failure: Version mismatch, upgrade your client"
@@ -9321,6 +9245,9 @@ msgstr "Kunde ej slå upp värden"
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr "SIP-användarnamnet får inte innehålla mellanslag eller symbolen @"
+msgid "SIP connect server not specified"
+msgstr "SIP anslutningsserver inte specificerad"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -9723,10 +9650,10 @@ msgid "Pager server"
msgstr "Sökarserver"
msgid "Japan Pager server"
-msgstr "Japan Sökarsörver"
+msgstr "Japan Sökarserver"
msgid "Pager port"
-msgstr "Sökareport"
+msgstr "Sökarport"
msgid "File transfer server"
msgstr "Filöverföringsserver"
@@ -9805,14 +9732,9 @@ msgstr "Tuff länk 3"
msgid "Last Update"
msgstr "Senast uppdaterad"
-#, c-format
-msgid "User information for %s unavailable"
-msgstr "Användarinformation om %s är inte tillgänglig"
-
msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
-msgstr "Denna profil verkar vara i ett språk eller format som ännu inte stöds."
+"This profile is in a language or format that is not supported at this time."
+msgstr "Denna profil är i ett språk eller format som ännu inte stöds."
msgid ""
"Could not retrieve the user's profile. This most likely is a temporary "
@@ -9930,7 +9852,7 @@ msgstr "_Mottagare:"
#, c-format
msgid "Attempt to subscribe to %s,%s,%s failed"
-msgstr "Försök att prenumrera på %s,%s,%s misslyckades"
+msgstr "Försök att prenumerera på %s,%s,%s misslyckades"
msgid "zlocate &lt;nick&gt;: Locate user"
msgstr "zlocate &lt;nick&gt;: Lokalisera användare"
@@ -9987,7 +9909,7 @@ msgid "Resubscribe"
msgstr "Återprenumerera"
msgid "Retrieve subscriptions from server"
-msgstr "Hämta prenumrationer från server"
+msgstr "Hämta prenumerationer från server"
#. *< type
#. *< ui_requirement
@@ -10245,9 +10167,9 @@ msgstr "Kunde inte öppna %s: Omdirigerad för många gånger"
msgid "Unable to connect to %s"
msgstr "Kan inte ansluta till %s"
-#, fuzzy, c-format
+#, c-format
msgid "Error reading from %s: response too long (%d bytes limit)"
-msgstr "Fel vid läsning av från %s: %s"
+msgstr "Felaktig inläsning från %s: svaret blev för långt (gräns på %d bytes)"
#, c-format
msgid ""
@@ -10422,7 +10344,7 @@ msgstr "Aktiverad"
msgid "Protocol"
msgstr "Protokoll"
-#, fuzzy, c-format
+#, c-format
msgid ""
"<span size='larger' weight='bold'>Welcome to %s!</span>\n"
"\n"
@@ -10667,11 +10589,13 @@ msgstr "/Hjälp/_Om"
msgid "<b>Account:</b> %s"
msgstr "<b>Konto:</b> %s"
-#, fuzzy, c-format
+#, c-format
msgid ""
"\n"
"<b>Occupants:</b> %d"
-msgstr "<b>Konto:</b> %s"
+msgstr ""
+"\n"
+"<b>Innehavare:</b> %d"
#, c-format
msgid ""
@@ -10862,9 +10786,8 @@ msgstr "A_lias:"
msgid "Auto_join when account becomes online."
msgstr "_Gå med automatiskt då kontot är anslutet."
-#, fuzzy
msgid "_Remain in chat after window is closed."
-msgstr "Göm c_hatt när fönstret är stängt."
+msgstr "Va_r kvar i chattfönster efter att det stängts."
msgid "Please enter the name of the group to be added."
msgstr "Ange namnet på den grupp som du vill lägga till."
@@ -10986,7 +10909,7 @@ msgid "/Conversation/_Find..."
msgstr "/Konversation/_Sök..."
msgid "/Conversation/View _Log"
-msgstr "/Konversation/Visa _logg"
+msgstr "/Konversation/Visa _Logg"
msgid "/Conversation/_Save As..."
msgstr "/Konversation/_Spara som..."
@@ -10998,7 +10921,7 @@ msgid "/Conversation/Se_nd File..."
msgstr "/Konversation/S_kicka fil..."
msgid "/Conversation/Add Buddy _Pounce..."
-msgstr "/Konversation/Lägg till kom_pisnotifiering..."
+msgstr "/Konversation/Lägg till Kom_pisnotifiering..."
msgid "/Conversation/_Get Info"
msgstr "/Konversation/_Hämta information"
@@ -11151,7 +11074,7 @@ msgid "Nick Said"
msgstr "Smeknamn nämnt"
msgid "Unread Messages"
-msgstr "Olästa meddeladen"
+msgstr "Olästa meddelanden"
msgid "New Event"
msgstr "Ny händelse"
@@ -11241,11 +11164,10 @@ msgid "Fatal Error"
msgstr "Allvarligt fel"
msgid "bug master"
-msgstr ""
+msgstr "bugmästare"
-#, fuzzy
msgid "artist"
-msgstr "Artist"
+msgstr "artist"
#. feel free to not translate this
msgid "Ka-Hing Cheung"
@@ -11254,9 +11176,8 @@ msgstr ""
msgid "support"
msgstr "support"
-#, fuzzy
msgid "webmaster"
-msgstr "utvecklare & webbansvarig"
+msgstr "webbansvarig"
msgid "Senior Contributor/QA"
msgstr "Senior Contributor/Kvalitetsgranskning"
@@ -11284,7 +11205,7 @@ msgid "support/QA"
msgstr "support/QA"
msgid "XMPP"
-msgstr ""
+msgstr "XMPP"
msgid "original author"
msgstr "ursprunglig upphovsman"
@@ -11335,7 +11256,7 @@ msgid "Australian English"
msgstr "Australiensisk engelska"
msgid "Canadian English"
-msgstr "Kanadensiskt engelska"
+msgstr "Kanadensisk engelska"
msgid "British English"
msgstr "Brittisk engelska"
@@ -11418,11 +11339,14 @@ msgstr "Lettländska"
msgid "Macedonian"
msgstr "Makedonska"
+msgid "Mongolian"
+msgstr "Mongoliska"
+
msgid "Bokmål Norwegian"
msgstr "Bokmål Norska"
msgid "Nepali"
-msgstr "Nepalska"
+msgstr "Nepali"
msgid "Dutch, Flemish"
msgstr "Holländska, Flamländska"
@@ -11431,7 +11355,7 @@ msgid "Norwegian Nynorsk"
msgstr "Norska Nynorsk"
msgid "Occitan"
-msgstr ""
+msgstr "Occitan"
msgid "Punjabi"
msgstr "Punjabi"
@@ -11531,8 +11455,29 @@ msgstr ""
"bidragsgivare. Vi ger inga garantier för detta program.<BR><BR>"
#, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
-msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin på 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\">FAQ:</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 mejl:</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-kanal:</FONT> #pidgin på 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 "Nuvarande utvecklare"
@@ -11674,7 +11619,7 @@ msgid "Show Buddy _List"
msgstr "Visa kompis_listan"
msgid "_Unread Messages"
-msgstr "_Olästa meddeladen"
+msgstr "_Olästa meddelanden"
msgid "New _Message..."
msgstr "Nytt _meddelande..."
@@ -11714,7 +11659,7 @@ msgstr "<b>Skickar som:</b>"
msgid "There is no application configured to open this type of file."
msgstr ""
-"Det finns ingen applikation konfigurarad att öppna den här typen av fil."
+"Det finns ingen applikation konfigurerad att öppna den här typen av fil."
msgid "An error occurred while opening the file."
msgstr "Ett fel uppstod när filen öppnades."
@@ -11779,13 +11724,11 @@ msgstr "Färg på länkar"
msgid "Color to draw hyperlinks."
msgstr "Färg som länkar ska ha."
-#, fuzzy
msgid "Hyperlink visited color"
-msgstr "Färg på länkar"
+msgstr "Färg på besökta hyperlänkar"
-#, fuzzy
msgid "Color to draw hyperlinks after it has been visited (or activated)."
-msgstr "Färg som länkar ska ha när musmarkören är ovanför dem."
+msgstr "Färgen länkar ska skrivas i när de har besökts (eller aktiverats)."
# "utpekade" var det bästa ord jag kunde komma på.
msgid "Hyperlink prelight color"
@@ -11942,8 +11885,8 @@ msgid ""
"This smiley is disabled because a custom smiley exists for this shortcut:\n"
" %s"
msgstr ""
-"Denna mileyn är avaktiverad eftersom en egendefinierad smiley redan "
-"existerar för denna genvägen:\n"
+"Denna smileyn är avaktiverad eftersom en egendefinierad smiley redan "
+"existerar för denna genväg:\n"
" %s"
msgid "Smile!"
@@ -12156,7 +12099,7 @@ msgstr ""
" med kommatecken)\n"
" -v, --version visa den nuvarande versionen och avsluta\n"
-#, fuzzy, c-format
+#, c-format
msgid ""
"%s %s has segfaulted and attempted to dump a core file.\n"
"This is a bug in the software and has happened through\n"
@@ -12171,31 +12114,28 @@ msgid ""
"how to get the backtrace, please read the instructions at\n"
"%swiki/GetABacktrace\n"
msgstr ""
-"%s %s har råkat ut för ett segmenteringsfel och försökte att dumpa kärnan "
-"till fil.\n"
+"%s %s har råkat ut för ett segmenteringsfel och försökte\n"
+"dumpa kärnan till fil.\n"
"Detta är ett fel i mjukvaran och beror inte på något fel du gjort.\n"
"\n"
"Om du kan återskapa krashen, var vänlig att meddela utvecklarna\n"
"genom att rapportera felet vid\n"
"%ssimpleticket\n"
"\n"
-"Var god och meddela vad du gjorde vid tillfället\n"
-"och posta en backtrace från kärn-filen. Om du inte vet hur du skapar en "
-"backtrace,\n"
+"Var god och meddela vad du gjorde vid tillfället och posta en backtrace\n"
+"från kärn-filen. Om du inte vet hur du skapar en backtrace,\n"
"var god läs instruktionerna på\n"
"%swiki/GetABacktrace\n"
-"\n"
-"Om du behöver ytterligare hjälp så kan du skicka ett meddelande till "
-"antingen\n"
-"SeanEgn eller LSchiere (via AIM). Hur du får tag på Sean och Luke finner du "
-"på\n"
-"%swiki/DeveloperPages\n"
#. Translators may want to transliterate the name.
#. It is not to be translated.
msgid "Pidgin"
msgstr "Pidgin"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr "Avslutar på grund av att en annan libpurple-klient redan körs.\n"
+
msgid "Open All Messages"
msgstr "Öppna alla meddelanden"
@@ -12211,8 +12151,8 @@ msgstr[1] "%s har %d nya meddelanden."
#, c-format
msgid "<b>%d new email.</b>"
msgid_plural "<b>%d new emails.</b>"
-msgstr[0] "<b>Du har %d nytt epost.</b>"
-msgstr[1] "<b>Du har %d nya epost.</b>"
+msgstr[0] "<b>Du har %d nytt mejl.</b>"
+msgstr[1] "<b>Du har %d nya mejl.</b>"
#, c-format
msgid "The browser command \"%s\" is invalid."
@@ -12233,7 +12173,7 @@ msgid "The following plugins will be unloaded."
msgstr "De följande modulerna kommer avladdas."
msgid "Multiple plugins will be unloaded."
-msgstr "Multibla moduler kommer bli avladdade."
+msgstr "Multipla moduler kommer bli avladdade."
msgid "Unload Plugins"
msgstr "Avladda insticksmoduler"
@@ -12245,7 +12185,7 @@ msgid ""
"The plugin could not be unloaded now, but will be disabled at the next "
"startup."
msgstr ""
-"Instickmodulen kunde inte stoppas, men den kommer att vara inaktiverad "
+"Insticksmodulen kunde inte stoppas, men den kommer att vara inaktiverad "
"nästan uppstart."
#, c-format
@@ -12376,7 +12316,7 @@ msgid "_Show system tray icon:"
msgstr "Vi_sa systempanelsikon:"
msgid "On unread messages"
-msgstr "Vid olästa meddeladen"
+msgstr "Vid olästa meddelanden"
msgid "Conversation Window Hiding"
msgstr "Dölj konversationsfönster"
@@ -12534,6 +12474,10 @@ msgstr "Proxyserver"
msgid "No proxy"
msgstr "Ingen proxy"
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr "Använd fjärr-DNS med SOCKS4-proxier"
+
msgid "_User:"
msgstr "_Användare:"
@@ -12600,7 +12544,7 @@ msgstr ""
"(%s för URL)"
msgid "Log _format:"
-msgstr "Logg_format:"
+msgstr "Logg _format:"
msgid "Log all _instant messages"
msgstr "_Logga alla snabbmeddelanden"
@@ -12655,20 +12599,17 @@ msgstr ""
"Ljud_kommando:\n"
"(%s för filnamn)"
-#, fuzzy
msgid "M_ute sounds"
-msgstr "_Stäng av ljud"
+msgstr "_Tysta ljud"
msgid "Sounds when conversation has _focus"
msgstr "Ljud när konversationsfönstret har _fokus"
-#, fuzzy
msgid "_Enable sounds:"
-msgstr "Aktivera ljud:"
+msgstr "_Aktivera ljud:"
-#, fuzzy
msgid "V_olume:"
-msgstr "Volum:"
+msgstr "V_olum:"
msgid "Play"
msgstr "Spela upp"
@@ -12890,13 +12831,11 @@ msgstr "Smiley"
msgid "Custom Smiley Manager"
msgstr "Hanterare för egna Smileys"
-#, fuzzy
msgid "Click to change your buddyicon for this account."
-msgstr "Använd denna kompis_ikon för detta konto:"
+msgstr "Klicka här för att ändra kompisikon för detta konto."
-#, fuzzy
msgid "Click to change your buddyicon for all accounts."
-msgstr "Använd denna kompis_ikon för detta konto:"
+msgstr "Klicka här för att ändra din kompisikon för alla konton."
msgid "Waiting for network connection"
msgstr "Väntar på nätverksanslutning."
@@ -13030,13 +12969,11 @@ msgstr "Hämta _info"
msgid "_Invite"
msgstr "Bjud _in"
-#, fuzzy
msgid "_Modify..."
-msgstr "_Ändra"
+msgstr "_Ändra..."
-#, fuzzy
msgid "_Add..."
-msgstr "_Lägg till"
+msgstr "_Lägg till..."
msgid "_Open Mail"
msgstr "_Öppna brev"
@@ -13059,18 +12996,17 @@ msgstr "Välj detta för att avaktivera grafiska emoticons."
msgid "none"
msgstr "ingen"
-#, fuzzy
msgid "Small"
-msgstr "E-post"
+msgstr "Liten"
msgid "Smaller versions of the default smilies"
-msgstr ""
+msgstr "Mindre versioner av de förvadla smiliesarna."
msgid "Response Probability:"
msgstr "Trolighet för svar:"
msgid "Statistics Configuration"
-msgstr "Statestikkonfigurering"
+msgstr "Statistikkonfigurering"
#. msg_difference spinner
msgid "Maximum response timeout:"
@@ -13169,7 +13105,7 @@ msgid "Customize colors in the conversation window"
msgstr "Ändra färgerna konversationsfönstret"
msgid "Error Messages"
-msgstr "Felmeddeladen"
+msgstr "Felmeddelanden"
msgid "Highlighted Messages"
msgstr "Markerade träffar"
@@ -13324,7 +13260,7 @@ msgid "The evolution executable was not found in the PATH."
msgstr "Evolutions körfil hittades inte i sökvägarna."
msgid "An email address was not found for this buddy."
-msgstr "Ingen epostadress hittades för denna kompisen."
+msgstr "Ingen mejladress hittades för denna kompisen."
msgid "Add to Address Book"
msgstr "Lägg till i adressboken"
@@ -13532,9 +13468,8 @@ msgstr "Lägg till meddelanderäknare i _X"
msgid "Set window manager \"_URGENT\" hint"
msgstr "Sätt fönsterhanterarens \"_URGENT\"-ledtråd"
-#, fuzzy
msgid "_Flash window"
-msgstr "_Chattfönster"
+msgstr "_Flash-fönster"
#. Raise window method button
msgid "R_aise conversation window"
@@ -13621,9 +13556,8 @@ msgstr "Sekundär färg på markören"
msgid "Hyperlink Color"
msgstr "Färg på länkar"
-#, fuzzy
msgid "Visited Hyperlink Color"
-msgstr "Färg på länkar"
+msgstr "Färg för besökta hyperlänkar"
msgid "Highlighted Message Name Color"
msgstr "Färg på namn i markerade färger"
@@ -13719,18 +13653,16 @@ msgstr ""
#, c-format
msgid "You can upgrade to %s %s today."
-msgstr ""
+msgstr "Du kan upgradera till %s %s idag."
msgid "New Version Available"
msgstr "Ny version tillgänglig"
-#, fuzzy
msgid "Later"
-msgstr "Datum"
+msgstr "Senare"
-#, fuzzy
msgid "Download Now"
-msgstr "Laddar ned %s: %s"
+msgstr "Laddar ned nu"
#. *< type
#. *< ui_requirement
@@ -13811,7 +13743,7 @@ msgstr "Du _skickar:"
#. Created here so it can be passed to whole_words_button_toggled.
msgid "_Exact case match (uncheck for automatic case handling)"
msgstr ""
-"_Exakt skriftlägeskäbslighet (avmarkera för automatisk skriftlägesavkänning)"
+"_Exakt skriftlägeskänslighet (avmarkera för automatisk skriftlägesavkänning)"
msgid "Only replace _whole words"
msgstr "Ersätt endast _hela ord"
@@ -13880,7 +13812,7 @@ msgid "Co_nversations:"
msgstr "Ko_nversationer:"
msgid "For delayed messages"
-msgstr "För fördröjd meddeladen"
+msgstr "För fördröjda meddelanden"
msgid "For delayed messages and in chats"
msgstr "För fördröjda meddelanden och i chattar"
@@ -13989,9 +13921,6 @@ msgstr "_Håll kompislistefönstret överst:"
msgid "Only when docked"
msgstr "Endast om dockad"
-msgid "_Flash window when chat messages are received"
-msgstr "Blinka med _fönstret när chattmeddelanden tas emot"
-
msgid "Windows Pidgin Options"
msgstr "Inställningar för Pidgin i Windows"
@@ -14041,9 +13970,30 @@ 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 "Unable to retrieve MSN Address Book"
+#~ msgstr "Kunde inte hämta MSN-adressbok"
+
+#~ msgid ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+#~ msgstr ""
+#~ "Du kanske snart blir frånkopplad, du kanske ska använda TOC tills detta "
+#~ "är fixat. Kolla på %s efter uppdateringar."
+
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "Blinka med _fönstret när chattmeddelanden tas emot"
+
#~ msgid "A group with the name already exists."
#~ msgstr "En grupp med det namnet finns redan."
+#~ msgid "Connection to server lost (no data received within %d second)"
+#~ msgid_plural ""
+#~ "Connection to server lost (no data received within %d seconds)"
+#~ msgstr[0] ""
+#~ "Anslutning till servern tappad (ingen data mottagen på %d sekund)"
+#~ msgstr[1] ""
+#~ "Anslutning till servern tappad (ingen data mottagen på %d sekunder)"
+
#~ msgid "Primary Information"
#~ msgstr "Primär information"
@@ -14142,16 +14092,12 @@ msgstr "Denna modul är användbar vid felsökning av XMPP serverar och klienter
#~ msgid "Change Qun information"
#~ msgstr "Kanalinformation"
-#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr "%s (%s)"
-
#~ msgid "System Message"
#~ msgstr "Systemmeddelande"
+#~ msgid "Failed to send IM."
+#~ msgstr "Kunde inte skicka snabbmeddelande"
+
#~ msgid "<b>Last Login IP</b>: %s<br>\n"
#~ msgstr "<b>Senaste login IP</b>: %s<br>\n"
@@ -14176,13 +14122,31 @@ msgstr "Denna modul är användbar vid felsökning av XMPP serverar och klienter
#~ msgstr "Fel vid byte av lösenord"
#, fuzzy
+#~ msgid "Unable login for unknow reply code 0x%02X"
+#~ msgstr "Ogiltig polettsvarskod, 0x%02X"
+
+#~ msgid "Keep alive error"
+#~ msgstr "Problem att hålla vid liv"
+
+#, fuzzy
#~ msgid "Failed to connect all servers"
#~ msgstr "Kunde inte ansluta till servern"
+#~ msgid ""
+#~ "Lost connection with server:\n"
+#~ "%d, %s"
+#~ msgstr ""
+#~ "Tappade anslutningen med servern:\n"
+#~ "%d, %s"
+
#~ msgid "Connecting server %s, retries %d"
#~ msgstr "Ansluter till server %s, försök %d"
#, fuzzy
+#~ msgid "You are not a member of QQ Qun \"%s\"\n"
+#~ msgstr "Du är inte medlemm i gruppen \"%s\"\n"
+
+#, fuzzy
#~ msgid "Do you approve the requestion?"
#~ msgstr "Vill du godkänna förfrågan?"
@@ -14216,6 +14180,9 @@ msgstr "Denna modul är användbar vid felsökning av XMPP serverar och klienter
#~ msgid "QQ Server Notice"
#~ msgstr "Serverport"
+#~ msgid "User information for %s unavailable"
+#~ msgstr "Användarinformation om %s är inte tillgänglig"
+
#, fuzzy
#~ msgid "Network disconnected"
#~ msgstr "Fjärrdatorn kopplade ifrån"
diff --git a/po/zh_HK.po b/po/zh_HK.po
index 0fae0c68c6..27908a8608 100644
--- a/po/zh_HK.po
+++ b/po/zh_HK.po
@@ -5,7 +5,7 @@
# Copyright (C) 2003-2008, Ambrose C. Li <acli@ada.dhs.org>
#
# This file is distributed under the same license as the "Pidgin" package.
-# $InternalId: zh_TW.po,v 1.553 2008/09/30 05:14:21 acli Exp $
+# $InternalId: zh_TW.po,v 1.562 2009/02/27 04:50:13 acli Exp $
#
# ----------------------------------------------------------
# For internal use only:
@@ -43,18 +43,17 @@
# NOTE 以前分「Deny」(拒絕) 和「Block」(封鎖),現在不分了
# NOTE 拒絕可以說等同於封鎖和某一個使用者的聯繫,有時用封鎖比較好。
# NOTE MSN6.0中文版對「Block」一詞的譯文為「封鎖」
-# XXX Stream 暫譯「串流」,應該不是「通道」
# NOTE nplurals 重設為 2,因為部分原文要分辨例如「它」及「它們」一類的字眼
# NOTE 所有語文名稱(除「世界語」外)一概譯成「XX文」,不譯「XX語」,因為寫下的是文,不是語
# ----------------------------------------------------------
#
msgid ""
msgstr ""
-"Project-Id-Version: Pidgin 2.5.2\n"
+"Project-Id-Version: Pidgin 2.5.5\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-18 01:17-0800\n"
-"PO-Revision-Date: 2008-12-17 12:15+0800\n"
-"Last-Translator: Paladin R. Liu <paladin@ms1.hinet.net>\n"
+"POT-Creation-Date: 2009-02-27 10:14-0800\n"
+"PO-Revision-Date: 2009-02-25 09:57-0500\n"
+"Last-Translator: Ambrose Li <ambrose.li@gmail.com>\n"
"Language-Team: Chinese (Hong Kong) <community@linuxhall.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -77,7 +76,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"
@@ -86,7 +85,7 @@ msgstr ""
"使用方法: %s [選項]...\n"
"\n"
" -c, --config=DIR 設定檔所在目錄\n"
-" -d, --debug 在標準輸出中顯示除錯訊息\n"
+" -d, --debug 在標準錯誤輸出中顯示除錯訊息\n"
" -h, --help 顯示輔助訊息並離開\n"
" -n, --nologin 不自動登入\n"
" -v, --version 顯示版本訊息並離開\n"
@@ -238,14 +237,16 @@ msgstr "必須指定帳號"
msgid "The selected account is not online."
msgstr "所指定的帳號目前沒有連線。"
+# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) - 20090226 acli
msgid "Error adding buddy"
msgstr "新增好友途中發生了錯誤"
msgid "Username"
msgstr "使用者"
+# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) - 20090226 acli
msgid "Alias (optional)"
-msgstr "別名(可以不填)"
+msgstr "別名(選用)"
# XXX 譯文可能不太通順 - acli 20080229
msgid "Add in group"
@@ -285,7 +286,7 @@ msgid "You can edit more information from the context menu later."
msgstr "如果要繼續修改其他細節,請用快顯選單。"
msgid "Error adding group"
-msgstr "新增羣組途中發生了錯誤"
+msgstr "新增羣組發生了錯誤"
msgid "You must give a name for the group to add."
msgstr "請給你新增的羣組輸入名稱。"
@@ -871,9 +872,9 @@ msgstr "已完成"
msgid "The file was saved as %s."
msgstr "成功存檔至 %s。"
-# XXX 20080508 acli
+# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) - 20090226 acli
msgid "Sending"
-msgstr "送出中"
+msgstr "傳送中"
# XXX 20080508 acli
msgid "Receiving"
@@ -1216,7 +1217,6 @@ msgstr "閒置多少分鐘更改狀態"
msgid "Change status to"
msgstr "更改狀態為"
-#. Conversations
msgid "Conversations"
msgstr "交談"
@@ -1333,14 +1333,18 @@ msgstr "音效選項"
msgid "Sounds when conversation has focus"
msgstr "當交談取得輸入焦點發出音效"
+# XXX: 務必 聽起來不太恰當。這裡是指 Enable Sound 的選項 - c9s, 08 Dec 27 12/27/2008
+# XXX 「務必」不只指 Enable Sound,也在其他地方用到,改譯「完全啟用」不行 - 20090226 acli
msgid "Always"
msgstr "務必"
+# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) - 20090226 acli
msgid "Only when available"
-msgstr "上線而非離開期間"
+msgstr "狀態為上線時"
+# XXX: 離開區間? - c9s, 08 Dec 27 12/27/2008
msgid "Only when not available"
-msgstr "離開期間"
+msgstr "狀態為非上線時"
msgid "Volume(0-100):"
msgstr "音量(0-100):"
@@ -1539,7 +1543,6 @@ msgid ""
"conversation into the current conversation."
msgstr "當新的交談開啟時,這個模組將會把上次的交談內容也顯示出來。"
-#, c-format
msgid "Online"
msgstr "上線"
@@ -1986,7 +1989,6 @@ msgstr "開始自 %2$s 傳送 %1$s"
msgid "Transfer of file %s complete"
msgstr "檔案 %s 傳送完畢"
-#, c-format
msgid "File transfer complete"
msgstr "檔案傳輸完畢"
@@ -1994,7 +1996,6 @@ msgstr "檔案傳輸完畢"
msgid "You canceled the transfer of %s"
msgstr "你取消了 %s 的傳送"
-#, c-format
msgid "File transfer cancelled"
msgstr "檔案傳輸已取消"
@@ -2185,7 +2186,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。"
@@ -2897,7 +2897,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 "名"
@@ -2931,6 +2930,10 @@ msgstr "Bonjour 協定模組"
msgid "Purple Person"
msgstr "聯絡人"
+#. Creating the options for the protocol
+msgid "Local Port"
+msgstr "本地端通訊埠"
+
# NOTE 這是通訊協定名稱,不是問候語
msgid "Bonjour"
msgstr "Bonjour"
@@ -3094,7 +3097,6 @@ 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 "離開"
@@ -3912,6 +3914,7 @@ msgstr "發佈公開密碼匙"
msgid "User Chatting"
msgstr ""
+# NOTE Jabber 新功能規格
msgid "User Browsing"
msgstr "使用者瀏覽"
@@ -4019,7 +4022,6 @@ msgstr "想聊天"
msgid "Extended Away"
msgstr "長時間離開"
-#, c-format
msgid "Do Not Disturb"
msgstr "請勿打擾"
@@ -4262,6 +4264,9 @@ msgstr "認證中"
msgid "Re-initializing Stream"
msgstr "串流重新初始中"
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr "未認證"
@@ -4852,9 +4857,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
@@ -5103,7 +5105,6 @@ msgstr "未經家長同意下使用兒童護照"
msgid "Passport account not yet verified"
msgstr "護照帳號尚未經過驗證"
-#, c-format
msgid "Passport account suspended"
msgstr "護照帳號被暫時吊銷"
@@ -5122,14 +5123,19 @@ msgstr "未知的錯誤代碼 %d"
msgid "MSN Error: %s\n"
msgstr "MSN 錯誤:%s\n"
-#, fuzzy
+# XXX 暫譯,有待改進 - 20090226 acli
+# NOTE: (09時14分13秒 EST) wing: what does "Other Contacts" (msn/group.h:36) actually mean? ..
+# NOTE: (09時24分18秒 EST) khc: I'd probably just translate to 其他人, hehe
+# NOTE: (09時24分44秒 EST) QuLogic: Other Contacts is non-grouped
+# NOTE: (09時25分02秒 EST) QuLogic: which is a group because libpurple doesn't understand non-grouped
msgid "Other Contacts"
-msgstr "聯絡方法"
+msgstr "沒有羣組的好友"
-# XXX「Remove Buddy」和「Remove Contact」在中文版Pidgin無法析別;可能有改進的空間
-#, fuzzy
+# XXX 暫譯,有待改進 - 20090226 acli
+# XXX 這可能是MSN的「基本資料連絡人」?
+# XXX「Buddy」和「Contact」在中文版Pidgin無法析別;可能有改進的空間
msgid "Non-IM Contacts"
-msgstr "移除這組好友"
+msgstr "非即時訊息的好友"
msgid "Nudge"
msgstr "呼叫"
@@ -5206,9 +5212,8 @@ msgstr "傳呼"
msgid "Playing a game"
msgstr "正在玩遊戲"
-#, fuzzy
msgid "Working"
-msgstr "工作資料"
+msgstr "正在工作"
msgid "Has you"
msgstr "你在他(她)的好友清單裏"
@@ -5246,13 +5251,12 @@ msgstr "樂手名稱"
msgid "Album"
msgstr "專輯名稱"
-#, fuzzy
msgid "Game Title"
-msgstr "樂曲名稱"
+msgstr "遊戲名稱"
-#, fuzzy
+# XXX 這是盲猜,但MSN「工作資訊」分頁內比較可能對應「Office Title」的應該是這個 - 20090226
msgid "Office Title"
-msgstr "樂曲名稱"
+msgstr "職位"
msgid "Set Friendly Name..."
msgstr "設定網名..."
@@ -5445,9 +5449,8 @@ msgid ""
msgstr ""
"在這個使用者的個人資料網頁找不到任何可用的資料。這個使用者極有可能並不存在。"
-#, fuzzy
msgid "View web profile"
-msgstr "離線時隱藏"
+msgstr "檢視個人資料網頁"
#. *< type
#. *< ui_requirement
@@ -5505,9 +5508,9 @@ msgstr "不明錯誤(代碼 %d)"
msgid "Unable to add user"
msgstr "無法新增使用者"
-#, fuzzy
+# XXX 暫譯 - 20090226
msgid "The following users are missing from your addressbook"
-msgstr "以下為搜尋結果"
+msgstr "以下使用者不在通訊錄內"
# TODO 請覆查,譯文有待改進
#, c-format
@@ -6336,7 +6339,6 @@ 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 "這個會議已經關閉。無法繼續送出任何訊息。"
@@ -6596,6 +6598,7 @@ msgstr "ICQ UTF8"
msgid "Hiptop"
msgstr "Hiptop"
+# FIXME flagged "有保安功能?" by c9s (http://developer.pidgin.im/ticket/7917), need to verify - 20090226 acli
msgid "Security Enabled"
msgstr "有保安功能"
@@ -6618,24 +6621,19 @@ msgstr "照相機"
msgid "Screen Sharing"
msgstr "螢幕共享"
-#, c-format
msgid "Free For Chat"
msgstr "我有空聊天"
-#, c-format
msgid "Not Available"
msgstr "長時間離開"
-#, c-format
msgid "Occupied"
msgstr "忙碌"
# NOTE 參閱 http://www.geocities.com/Athens/Delphi/6470/icq99.html
-#, c-format
msgid "Web Aware"
msgstr "允許其他使用者在網絡上查看你目前的狀態"
-#, c-format
msgid "Invisible"
msgstr "隱身"
@@ -6737,19 +6735,15 @@ 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 看看有"
-"沒有更新。"
+msgid "You may be disconnected shortly. If so, check %s for updates."
+msgstr "你可能會在短時間內中斷連線。如果屬實,請到 %s 看看有沒有更新。"
msgid "Unable to get a valid AIM login hash."
msgstr "無法取得有效的 AIM 登入碼。"
#, c-format
msgid "You may be disconnected shortly. Check %s for updates."
-msgstr "你可能會短時間中斷連線。請到 %s 看看有沒有更新。"
+msgstr "你可能會在短時間內中斷連線。請到 %s 看看有沒有更新。"
msgid "Unable to get a valid login hash."
msgstr "無法取得有效的登入雜湊。"
@@ -7180,6 +7174,7 @@ 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 "編輯好友說明"
@@ -7290,7 +7285,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 "正在嘗試透過代理伺服器連線。"
@@ -7381,16 +7375,15 @@ msgstr "豬"
msgid "Other"
msgstr "其他"
-#, fuzzy
msgid "Visible"
-msgstr "隱身"
+msgstr "公開"
+# XXX 暫譯 - 20090226
msgid "Friend Only"
-msgstr ""
+msgstr "只允許好友"
-#, fuzzy
msgid "Private"
-msgstr "私隱設定"
+msgstr "非公開"
msgid "QQ Number"
msgstr "QQ 號碼"
@@ -7417,18 +7410,14 @@ msgstr "流動電話號碼"
msgid "Personal Introduction"
msgstr "個人簡介"
-#, fuzzy
msgid "City/Area"
-msgstr "城市"
+msgstr "城市/地區"
-#, fuzzy
msgid "Publish Mobile"
-msgstr "個人流動電話"
+msgstr "刊登流動電話號碼"
-# XXX 中文譯文無法分別出「Alias Buddy」和「Alias Contact」
-#, fuzzy
msgid "Publish Contact"
-msgstr "為這組好友加上別名"
+msgstr "刊登個人資料"
msgid "College"
msgstr "大學/大專"
@@ -7445,21 +7434,21 @@ msgid "Blood"
msgstr "血型"
msgid "True"
-msgstr ""
+msgstr "是"
msgid "False"
-msgstr ""
+msgstr "不是"
-#, fuzzy
+# FIXME - qq.c is buggy - it uses "Contact" here to mean "personal contact info" - filed ticket #8523
+# FIXME - 原文一詞多義,無法翻譯 - 20090226
msgid "Modify Contact"
msgstr "修改帳號"
msgid "Modify Address"
msgstr "修改地址"
-#, fuzzy
msgid "Modify Extended Information"
-msgstr "修改資訊"
+msgstr "修改詳細資訊"
msgid "Modify Information"
msgstr "修改資訊"
@@ -7578,12 +7567,9 @@ msgstr "不是成員"
msgid "Member"
msgstr "用戶"
-# XXX 這譯文絶對有問題,但想不到怎樣譯較好 - ambrose 20070415
-#, fuzzy
msgid "Requesting"
-msgstr "對話視窗 (Request Dialog)"
+msgstr ""
-# #NOTE 根據「plugins/log_reader.c#1971」的訊息來判斷,應該是指一種新式的通訊協定。
msgid "Admin"
msgstr ""
@@ -7599,14 +7585,12 @@ msgstr "創立者"
msgid "About me"
msgstr "關於我"
-#, fuzzy
msgid "Category"
-msgstr "聊天錯誤"
+msgstr "類別"
msgid "The Qun does not allow others to join"
msgstr "這羣組不容許外人加入"
-#, fuzzy
msgid "Join QQ Qun"
msgstr "加入羣組"
@@ -7671,9 +7655,9 @@ msgstr "設定"
msgid "%u requested to join Qun %u for %s"
msgstr "使用者 %d 要求加入羣組 %d"
-#, fuzzy, c-format
+#, c-format
msgid "%u request to join Qun %u"
-msgstr "使用者 %d 要求加入羣組 %d"
+msgstr "使用者 %u 要求加入羣組 %u"
#, c-format
msgid "Failed to join Qun %u, operated by admin %u"
@@ -7684,9 +7668,9 @@ msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
# XXX「Remove Buddy」和「Remove Contact」在中文版Pidgin無法析別;可能有改進的空間
-#, fuzzy, c-format
+#, c-format
msgid "<b>Removed buddy %u.</b>"
-msgstr "移除好友"
+msgstr "<b>成功移除好友 %u。</b>"
# XXX「Remove Buddy」和「Remove Contact」在中文版Pidgin無法析別;可能有改進的空間
#, c-format
@@ -7720,14 +7704,12 @@ msgstr " TCP"
msgid " FromMobile"
msgstr " 使用流動通訊器材"
-#, fuzzy
msgid " BindMobile"
msgstr " 綁定流動通訊器材"
msgid " Video"
msgstr " 視像"
-#, fuzzy
msgid " Zone"
msgstr " 區"
@@ -7807,21 +7789,20 @@ msgstr "<b>IP位址</b>:%s<br>\n"
msgid "Login Information"
msgstr "登入資訊"
-#, fuzzy
msgid "<p><b>Original Author</b>:<br>\n"
-msgstr "<b>外部使用者</b><br>"
+msgstr "<p><b>原作者</b>:<br>\n"
msgid "<p><b>Code Contributors</b>:<br>\n"
msgstr "<p><b>程式碼貢獻者</b>:<br>\n"
-#, fuzzy
msgid "<p><b>Lovely Patch Writers</b>:<br>\n"
-msgstr "<b>最近更新時間:</b>%s<br>\n"
+msgstr "<p><b>可愛的模組作者</b>:<br>\n"
-# NOTE qq_data->net_stat.sent,送出的數據封包數量(並非位元組數量)的總計
-#, fuzzy
msgid "<p><b>Acknowledgement</b>:<br>\n"
-msgstr "<b>送出封包</b>:%lu 個<br>\n"
+msgstr "<p><b>鳴謝</b>:<br>\n"
+
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<p><b>仔細的品管人員</b>:<br>\n"
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr "<p><i>還有所有幕後默默貢獻的無名英雄們…</i><br>\n"
@@ -7848,6 +7829,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "關於 OpenQ"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "修改地址"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7868,13 +7853,13 @@ msgid "Select Server"
msgstr "選擇伺服器"
msgid "QQ2005"
-msgstr ""
+msgstr "QQ2005"
msgid "QQ2007"
-msgstr ""
+msgstr "QQ2007"
msgid "QQ2008"
-msgstr ""
+msgstr "QQ2008"
msgid "Connect by TCP"
msgstr "使用 TCP 連線"
@@ -7887,6 +7872,9 @@ msgstr "顯示伺服器通告"
msgid "Show server news"
msgstr "顯示伺服器是日訊息"
+msgid "Show chat room when msg comes"
+msgstr ""
+
# XXX 20080810 acli - 譯文有待改進,原文也是
msgid "Keep alive interval (seconds)"
msgstr "每隔多少秒送出 Keep Alive"
@@ -7900,7 +7888,7 @@ msgstr "無法解密伺服器回應"
#, c-format
msgid "Failed requesting token, 0x%02X"
-msgstr ""
+msgstr "請求符記失敗,回應碼「0x%02X」"
#, c-format
msgid "Invalid token len, %d"
@@ -7908,7 +7896,7 @@ msgstr "符記長度「%d」無效"
#. extend redirect used in QQ2006
msgid "Redirect_EX is not currently supported"
-msgstr ""
+msgstr "暫時不支援 Redirect_EX"
#. need activation
#. need activation
@@ -7978,9 +7966,8 @@ msgid "Getting server"
msgstr "設定使用者資訊..."
# XXX 這是看了原始碼後的結論(但可能會錯)- acli 20080930
-#, fuzzy
msgid "Requesting token"
-msgstr "送出請求符記中"
+msgstr "請求符記中"
msgid "Couldn't resolve host"
msgstr "無法解析主機"
@@ -9535,6 +9522,9 @@ msgstr "無法解析主機"
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr "SIP 的帳號不可含有空白字符或「@」符號"
+msgid "SIP connect server not specified"
+msgstr "未有指定 SIP 伺服器"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -11467,8 +11457,10 @@ msgid "Invert"
msgstr "反向"
# XXX TODO 我非常討厭把「Highlight」譯成「高亮度」,但譯文可以改進 - Ambrose 20061029
+# XXX flagged "有保安功能?" by c9s (http://developer.pidgin.im/ticket/7917), need to verify - 20090226 acli
+# NOTE 譯文改動 by c9s
msgid "Highlight matches"
-msgstr "標示匹配字串"
+msgstr "標示比對字串"
# NOTE 除錯視窗的工具列的快取選單的指令,指「工具列的按紐以圖示標示」,下二同
msgid "_Icon Only"
@@ -11513,11 +11505,13 @@ msgstr "錯誤訊息"
msgid "Fatal Error"
msgstr "嚴重錯誤訊息"
+# XXX 暫譯 - 20090226 acli
msgid "bug master"
-msgstr ""
+msgstr "除錯主管"
+# NOTE 這個「artist」(有別於其他的「Artist」字串)係指設計pidgin圖示的「graphic designer」,絕對不可譯成「藝人」
msgid "artist"
-msgstr "藝人"
+msgstr "平面設計"
#. feel free to not translate this
msgid "Ka-Hing Cheung"
@@ -11549,7 +11543,7 @@ msgid "support/QA"
msgstr "支援兼品管"
msgid "XMPP"
-msgstr ""
+msgstr "XMPP"
msgid "original author"
msgstr "原作者"
@@ -11706,6 +11700,9 @@ msgstr "立陶宛文"
msgid "Macedonian"
msgstr "馬其頓文"
+msgid "Mongolian"
+msgstr "蒙古文"
+
# NOTE 譯文不統一,一般似乎偏向音譯,但譯音也不統一
# NOTE 音譯包括:博克馬爾、波克默爾、布克莫爾、巴克摩
# NOTE 其他譯法包括:丹麥-挪威文(大英百科)、丹麥式挪威文(維基百科)、東挪威文、標準挪威文(國內不是標準,國外是 :P)
@@ -11837,9 +11834,31 @@ 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 ""
+"<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/>"
+msgstr ""
+"<FONT SIZE=\"4\">電郵支援:</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 頻道</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\">IRC:</FONT> irc.freenode.net 上的 #pidgin 頻道<BR><BR>"
+"<FONT SIZE=\"4\">XMPP 聊天室:</FONT>devel@conference.pidgin.im<BR><BR>"
msgid "Current Developers"
msgstr "現任開發者"
@@ -12503,6 +12522,10 @@ msgstr ""
msgid "Pidgin"
msgstr "Pidgin"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
+
msgid "Open All Messages"
msgstr "開啟所有訊息"
@@ -12843,6 +12866,10 @@ 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 "使用 SOCKS4 代理伺服器時使用遠端 DNS"
+
msgid "_User:"
msgstr "使用者(_U):"
@@ -13345,9 +13372,9 @@ msgstr "開啟郵件(_O)"
msgid "_Edit"
msgstr "修改(_E)"
-# FIXME Tooltip中文怎寫?
+# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) - 20090226 acli
msgid "Pidgin Tooltip"
-msgstr "Pidgin Tooltip"
+msgstr "Pidgin 工具提示"
# NOTE 這是「Default」表情主題的說明
msgid "Pidgin smileys"
@@ -13481,9 +13508,9 @@ msgstr "自選交談視窗內各種顏色的使用"
msgid "Error Messages"
msgstr "錯誤訊息"
-# XXX TODO 我非常討厭把「Highlight」譯成「高亮度」,但譯文可以改進 - Ambrose 20061029
+# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) 12/27/2008 - 20090226 acli
msgid "Highlighted Messages"
-msgstr "反白訊息"
+msgstr "已標示訊息"
msgid "System Messages"
msgstr "系統訊息"
@@ -13951,9 +13978,9 @@ msgid "Visited Hyperlink Color"
msgstr "瀏覽過的超連結顏色"
# XXX TODO 我非常討厭把「Highlight」譯成「高亮度」,但譯文可以改進 - Ambrose 20061029
-# FIXME 什麼是「反白訊息名稱」? - acli 20080511
+# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) 20081227 - 20090226 acli
msgid "Highlighted Message Name Color"
-msgstr "反白訊息名稱顏色"
+msgstr "已標示訊息名稱顏"
msgid "GtkTreeView Horizontal Separation"
msgstr "GtkTreeView 水平間隔距離"
@@ -14048,7 +14075,7 @@ msgstr ""
#, c-format
msgid "You can upgrade to %s %s today."
-msgstr ""
+msgstr "%s 現已可升級至 %s 版。"
msgid "New Version Available"
msgstr "有新版本"
@@ -14318,9 +14345,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 選項"
@@ -14370,6 +14394,19 @@ msgstr "送出、讀取未加工的 XMPP 段落。"
msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr "幫助為 XMPP 伺服器或客戶端進行除錯。"
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "無法讀取 MSN 通訊錄"
+
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "收到聊天訊息後閃動視窗(_F)"
+
+#~ msgid ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+#~ msgstr ""
+#~ "您可能會短時間中斷連線。您可能會想在這個問題被修正後使用 TOC。請到 %s 看看"
+#~ "有沒有更新。"
+
#~ msgid "Connection to server lost (no data received within %d second)"
#~ msgid_plural ""
#~ "Connection to server lost (no data received within %d seconds)"
diff --git a/po/zh_TW.po b/po/zh_TW.po
index cdcd2cfa1c..98fac8547b 100644
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -3,7 +3,7 @@
# Copyright (C) 2003-2008, Ambrose C. Li <acli@ada.dhs.org>
#
# This file is distributed under the same license as the "Pidgin" package.
-# $InternalId: zh_TW.po,v 1.553 2008/09/30 05:14:21 acli Exp $
+# $InternalId: zh_TW.po,v 1.562 2009/02/27 04:50:13 acli Exp $
#
# ----------------------------------------------------------
# For internal use only:
@@ -41,18 +41,17 @@
# NOTE 以前分「Deny」(拒絕) 和「Block」(封鎖),現在不分了
# NOTE 拒絕可以說等同於封鎖和某一個使用者的聯繫,有時用封鎖比較好。
# NOTE MSN6.0中文版對「Block」一詞的譯文為「封鎖」
-# XXX Stream 暫譯「串流」,應該不是「通道」
# NOTE nplurals 重設為 2,因為部分原文要分辨例如「它」及「它們」一類的字眼
# NOTE 所有語文名稱(除「世界語」外)一概譯成「XX文」,不譯「XX語」,因為寫下的是文,不是語
# ----------------------------------------------------------
#
msgid ""
msgstr ""
-"Project-Id-Version: Pidgin 2.5.2\n"
+"Project-Id-Version: Pidgin 2.5.5\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-18 01:17-0800\n"
-"PO-Revision-Date: 2008-12-17 12:15+0800\n"
-"Last-Translator: Paladin R. Liu <paladin@ms1.hinet.net>\n"
+"POT-Creation-Date: 2009-02-27 10:14-0800\n"
+"PO-Revision-Date: 2009-02-25 09:57-0500\n"
+"Last-Translator: Ambrose Li <ambrose.li@gmail.com>\n"
"Language-Team: Chinese (Traditional) <zh-l10n@linux.org.tw>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -75,7 +74,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"
@@ -84,7 +83,7 @@ msgstr ""
"使用方法: %s [選項]...\n"
"\n"
" -c, --config=DIR 設定檔所在目錄\n"
-" -d, --debug 在標準輸出中顯示除錯訊息\n"
+" -d, --debug 在標準錯誤輸出中顯示除錯訊息\n"
" -h, --help 顯示輔助訊息並離開\n"
" -n, --nologin 不自動登入\n"
" -v, --version 顯示版本訊息並離開\n"
@@ -236,14 +235,16 @@ msgstr "必須指定帳號"
msgid "The selected account is not online."
msgstr "所指定的帳號目前沒有連線。"
+# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) - 20090226 acli
msgid "Error adding buddy"
msgstr "新增好友途中發生了錯誤"
msgid "Username"
msgstr "使用者"
+# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) - 20090226 acli
msgid "Alias (optional)"
-msgstr "別名(可以不填)"
+msgstr "別名(選用)"
# XXX 譯文可能不太通順 - acli 20080229
msgid "Add in group"
@@ -283,7 +284,7 @@ msgid "You can edit more information from the context menu later."
msgstr "如果要繼續修改其他細節,請用快顯選單。"
msgid "Error adding group"
-msgstr "新增群組途中發生了錯誤"
+msgstr "新增群組發生了錯誤"
msgid "You must give a name for the group to add."
msgstr "請給您新增的群組輸入名稱。"
@@ -869,9 +870,9 @@ msgstr "已完成"
msgid "The file was saved as %s."
msgstr "成功存檔至 %s。"
-# XXX 20080508 acli
+# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) - 20090226 acli
msgid "Sending"
-msgstr "送出中"
+msgstr "傳送中"
# XXX 20080508 acli
msgid "Receiving"
@@ -1214,7 +1215,6 @@ msgstr "閒置多少分鐘更改狀態"
msgid "Change status to"
msgstr "更改狀態為"
-#. Conversations
msgid "Conversations"
msgstr "交談"
@@ -1331,14 +1331,18 @@ msgstr "音效選項"
msgid "Sounds when conversation has focus"
msgstr "當交談取得輸入焦點發出音效"
+# XXX: 務必 聽起來不太恰當。這裡是指 Enable Sound 的選項 - c9s, 08 Dec 27 12/27/2008
+# XXX 「務必」不只指 Enable Sound,也在其他地方用到,改譯「完全啟用」不行 - 20090226 acli
msgid "Always"
msgstr "務必"
+# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) - 20090226 acli
msgid "Only when available"
-msgstr "上線而非離開期間"
+msgstr "狀態為上線時"
+# XXX: 離開區間? - c9s, 08 Dec 27 12/27/2008
msgid "Only when not available"
-msgstr "離開期間"
+msgstr "狀態為非上線時"
msgid "Volume(0-100):"
msgstr "音量(0-100):"
@@ -1537,7 +1541,6 @@ msgid ""
"conversation into the current conversation."
msgstr "當新的交談開啟時,這個模組將會把上次的交談內容也顯示出來。"
-#, c-format
msgid "Online"
msgstr "上線"
@@ -1984,7 +1987,6 @@ msgstr "開始自 %2$s 傳送 %1$s"
msgid "Transfer of file %s complete"
msgstr "檔案 %s 傳送完畢"
-#, c-format
msgid "File transfer complete"
msgstr "檔案傳輸完畢"
@@ -1992,7 +1994,6 @@ msgstr "檔案傳輸完畢"
msgid "You canceled the transfer of %s"
msgstr "你取消了 %s 的傳送"
-#, c-format
msgid "File transfer cancelled"
msgstr "檔案傳輸已取消"
@@ -2183,7 +2184,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。"
@@ -2895,7 +2895,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 "名"
@@ -2929,6 +2928,10 @@ msgstr "Bonjour 協定模組"
msgid "Purple Person"
msgstr "連絡人"
+#. Creating the options for the protocol
+msgid "Local Port"
+msgstr "本地端通訊埠"
+
# NOTE 這是通訊協定名稱,不是問候語
msgid "Bonjour"
msgstr "Bonjour"
@@ -3092,7 +3095,6 @@ 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 "離開"
@@ -3910,6 +3912,7 @@ msgstr "發佈公鑰"
msgid "User Chatting"
msgstr ""
+# NOTE Jabber 新功能規格
msgid "User Browsing"
msgstr "使用者瀏覽"
@@ -4017,7 +4020,6 @@ msgstr "想聊天"
msgid "Extended Away"
msgstr "長時間離開"
-#, c-format
msgid "Do Not Disturb"
msgstr "請勿打擾"
@@ -4260,6 +4262,9 @@ msgstr "認證中"
msgid "Re-initializing Stream"
msgstr "串流重新初始中"
+msgid "Server doesn't support blocking"
+msgstr ""
+
msgid "Not Authorized"
msgstr "未認證"
@@ -4850,9 +4855,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
@@ -5101,7 +5103,6 @@ msgstr "未經家長同意下使用兒童護照"
msgid "Passport account not yet verified"
msgstr "護照帳號尚未經過驗證"
-#, c-format
msgid "Passport account suspended"
msgstr "護照帳號被暫時吊銷"
@@ -5120,14 +5121,19 @@ msgstr "未知的錯誤代碼 %d"
msgid "MSN Error: %s\n"
msgstr "MSN 錯誤:%s\n"
-#, fuzzy
+# XXX 暫譯,有待改進 - 20090226 acli
+# NOTE: (09時14分13秒 EST) wing: what does "Other Contacts" (msn/group.h:36) actually mean? ..
+# NOTE: (09時24分18秒 EST) khc: I'd probably just translate to 其他人, hehe
+# NOTE: (09時24分44秒 EST) QuLogic: Other Contacts is non-grouped
+# NOTE: (09時25分02秒 EST) QuLogic: which is a group because libpurple doesn't understand non-grouped
msgid "Other Contacts"
-msgstr "聯絡方法"
+msgstr "沒有群組的好友"
-# XXX「Remove Buddy」和「Remove Contact」在中文版Pidgin無法析別;可能有改進的空間
-#, fuzzy
+# XXX 暫譯,有待改進 - 20090226 acli
+# XXX 這可能是MSN的「基本資料連絡人」?
+# XXX「Buddy」和「Contact」在中文版Pidgin無法析別;可能有改進的空間
msgid "Non-IM Contacts"
-msgstr "移除這組好友"
+msgstr "非即時訊息的好友"
msgid "Nudge"
msgstr "呼叫"
@@ -5204,9 +5210,8 @@ msgstr "傳呼"
msgid "Playing a game"
msgstr "正在玩遊戲"
-#, fuzzy
msgid "Working"
-msgstr "工作資料"
+msgstr "正在工作"
msgid "Has you"
msgstr "你在他(她)的好友清單裏"
@@ -5244,13 +5249,12 @@ msgstr "樂手名稱"
msgid "Album"
msgstr "專輯名稱"
-#, fuzzy
msgid "Game Title"
-msgstr "樂曲名稱"
+msgstr "遊戲名稱"
-#, fuzzy
+# XXX 這是盲猜,但MSN「工作資訊」分頁內比較可能對應「Office Title」的應該是這個 - 20090226
msgid "Office Title"
-msgstr "樂曲名稱"
+msgstr "職位"
msgid "Set Friendly Name..."
msgstr "設定暱稱..."
@@ -5443,9 +5447,8 @@ msgid ""
msgstr ""
"在這個使用者的個人資料網頁找不到任何可用的資料。這個使用者極有可能並不存在。"
-#, fuzzy
msgid "View web profile"
-msgstr "離線時隱藏"
+msgstr "檢視個人資料網頁"
#. *< type
#. *< ui_requirement
@@ -5503,9 +5506,9 @@ msgstr "不明錯誤(代碼 %d)"
msgid "Unable to add user"
msgstr "無法新增使用者"
-#, fuzzy
+# XXX 暫譯 - 20090226
msgid "The following users are missing from your addressbook"
-msgstr "以下為搜尋結果"
+msgstr "以下使用者不在通訊錄內"
# TODO 請覆查,譯文有待改進
#, c-format
@@ -6334,7 +6337,6 @@ 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 "這個會議已經關閉。無法繼續送出任何訊息。"
@@ -6594,6 +6596,7 @@ msgstr "ICQ UTF8"
msgid "Hiptop"
msgstr "Hiptop"
+# FIXME flagged "有保安功能?" by c9s (http://developer.pidgin.im/ticket/7917), need to verify - 20090226 acli
msgid "Security Enabled"
msgstr "有保安功能"
@@ -6616,24 +6619,19 @@ msgstr "照相機"
msgid "Screen Sharing"
msgstr "螢幕共享"
-#, c-format
msgid "Free For Chat"
msgstr "我有空聊天"
-#, c-format
msgid "Not Available"
msgstr "長時間離開"
-#, c-format
msgid "Occupied"
msgstr "忙碌"
# NOTE 參閱 http://www.geocities.com/Athens/Delphi/6470/icq99.html
-#, c-format
msgid "Web Aware"
msgstr "允許其他使用者在網路上查看您目前的狀態"
-#, c-format
msgid "Invisible"
msgstr "隱身"
@@ -6735,19 +6733,15 @@ 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 看看有"
-"沒有更新。"
+msgid "You may be disconnected shortly. If so, check %s for updates."
+msgstr "您可能會在短時間內中斷連線。如果屬實,請到 %s 看看有沒有更新。"
msgid "Unable to get a valid AIM login hash."
msgstr "無法取得有效的 AIM 登入碼。"
#, c-format
msgid "You may be disconnected shortly. Check %s for updates."
-msgstr "您可能會短時間中斷連線。請到 %s 看看有沒有更新。"
+msgstr "您可能會在短時間內中斷連線。請到 %s 看看有沒有更新。"
msgid "Unable to get a valid login hash."
msgstr "無法取得有效的登入雜湊。"
@@ -7178,6 +7172,7 @@ 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 "編輯好友說明"
@@ -7288,7 +7283,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 "正在嘗試透過代理伺服器連線。"
@@ -7379,16 +7373,15 @@ msgstr "豬"
msgid "Other"
msgstr "其他"
-#, fuzzy
msgid "Visible"
-msgstr "隱身"
+msgstr "公開"
+# XXX 暫譯 - 20090226
msgid "Friend Only"
-msgstr ""
+msgstr "只允許好友"
-#, fuzzy
msgid "Private"
-msgstr "隱私設定"
+msgstr "非公開"
msgid "QQ Number"
msgstr "QQ 號碼"
@@ -7415,18 +7408,14 @@ msgstr "行動電話號碼"
msgid "Personal Introduction"
msgstr "個人簡介"
-#, fuzzy
msgid "City/Area"
-msgstr "城市"
+msgstr "城市/地區"
-#, fuzzy
msgid "Publish Mobile"
-msgstr "個人行動電話"
+msgstr "刊登行動電話號碼"
-# XXX 中文譯文無法分別出「Alias Buddy」和「Alias Contact」
-#, fuzzy
msgid "Publish Contact"
-msgstr "為這組好友加上別名"
+msgstr "刊登個人資訊"
msgid "College"
msgstr "大學/大專"
@@ -7443,21 +7432,21 @@ msgid "Blood"
msgstr "血型"
msgid "True"
-msgstr ""
+msgstr "是"
msgid "False"
-msgstr ""
+msgstr "不是"
-#, fuzzy
+# FIXME - qq.c is buggy - it uses "Contact" here to mean "personal contact info" - filed ticket #8523
+# FIXME - 原文一詞多義,無法翻譯 - 20090226
msgid "Modify Contact"
msgstr "修改帳號"
msgid "Modify Address"
msgstr "修改地址"
-#, fuzzy
msgid "Modify Extended Information"
-msgstr "修改資訊"
+msgstr "修改詳細資訊"
msgid "Modify Information"
msgstr "修改資訊"
@@ -7576,12 +7565,9 @@ msgstr "不是成員"
msgid "Member"
msgstr "用戶"
-# XXX 這譯文絶對有問題,但想不到怎樣譯較好 - ambrose 20070415
-#, fuzzy
msgid "Requesting"
-msgstr "對話視窗 (Request Dialog)"
+msgstr ""
-# #NOTE 根據「plugins/log_reader.c#1971」的訊息來判斷,應該是指一種新式的通訊協定。
msgid "Admin"
msgstr ""
@@ -7597,14 +7583,12 @@ msgstr "創立者"
msgid "About me"
msgstr "關於我"
-#, fuzzy
msgid "Category"
-msgstr "聊天錯誤"
+msgstr "類別"
msgid "The Qun does not allow others to join"
msgstr "這群組不容許外人加入"
-#, fuzzy
msgid "Join QQ Qun"
msgstr "加入群組"
@@ -7669,9 +7653,9 @@ msgstr "設定"
msgid "%u requested to join Qun %u for %s"
msgstr "使用者 %d 要求加入群組 %d"
-#, fuzzy, c-format
+#, c-format
msgid "%u request to join Qun %u"
-msgstr "使用者 %d 要求加入群組 %d"
+msgstr "使用者 %u 要求加入群組 %u"
#, c-format
msgid "Failed to join Qun %u, operated by admin %u"
@@ -7682,9 +7666,9 @@ msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
msgstr ""
# XXX「Remove Buddy」和「Remove Contact」在中文版Pidgin無法析別;可能有改進的空間
-#, fuzzy, c-format
+#, c-format
msgid "<b>Removed buddy %u.</b>"
-msgstr "移除好友"
+msgstr "<b>成功移除好友 %u。</b>"
# XXX「Remove Buddy」和「Remove Contact」在中文版Pidgin無法析別;可能有改進的空間
#, c-format
@@ -7718,14 +7702,12 @@ msgstr " TCP"
msgid " FromMobile"
msgstr " 使用行動裝置"
-#, fuzzy
msgid " BindMobile"
msgstr " 綁定行動裝置"
msgid " Video"
msgstr " 視訊"
-#, fuzzy
msgid " Zone"
msgstr " 區"
@@ -7805,21 +7787,20 @@ msgstr "<b>IP位址</b>:%s<br>\n"
msgid "Login Information"
msgstr "登入資訊"
-#, fuzzy
msgid "<p><b>Original Author</b>:<br>\n"
-msgstr "<b>外部使用者</b><br>"
+msgstr "<p><b>原作者</b>:<br>\n"
msgid "<p><b>Code Contributors</b>:<br>\n"
msgstr "<p><b>程式碼貢獻者</b>:<br>\n"
-#, fuzzy
msgid "<p><b>Lovely Patch Writers</b>:<br>\n"
-msgstr "<b>最近更新時間:</b>%s<br>\n"
+msgstr "<p><b>可愛的模組作者</b>:<br>\n"
-# NOTE qq_data->net_stat.sent,送出的數據封包數量(並非位元組數量)的總計
-#, fuzzy
msgid "<p><b>Acknowledgement</b>:<br>\n"
-msgstr "<b>送出封包</b>:%lu 個<br>\n"
+msgstr "<p><b>鳴謝</b>:<br>\n"
+
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<p><b>仔細的品管人員</b>:<br>\n"
msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
msgstr "<p><i>還有所有幕後默默貢獻的無名英雄們…</i><br>\n"
@@ -7846,6 +7827,10 @@ msgstr ""
msgid "About OpenQ"
msgstr "關於 OpenQ"
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "修改地址"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -7866,13 +7851,13 @@ msgid "Select Server"
msgstr "選擇伺服器"
msgid "QQ2005"
-msgstr ""
+msgstr "QQ2005"
msgid "QQ2007"
-msgstr ""
+msgstr "QQ2007"
msgid "QQ2008"
-msgstr ""
+msgstr "QQ2008"
msgid "Connect by TCP"
msgstr "使用 TCP 連線"
@@ -7885,6 +7870,9 @@ msgstr "顯示伺服器通告"
msgid "Show server news"
msgstr "顯示伺服器是日訊息"
+msgid "Show chat room when msg comes"
+msgstr ""
+
# XXX 20080810 acli - 譯文有待改進,原文也是
msgid "Keep alive interval (seconds)"
msgstr "每隔多少秒送出 Keep Alive"
@@ -7898,7 +7886,7 @@ msgstr "無法解密伺服器回應"
#, c-format
msgid "Failed requesting token, 0x%02X"
-msgstr ""
+msgstr "請求符記失敗,回應碼「0x%02X」"
#, c-format
msgid "Invalid token len, %d"
@@ -7906,7 +7894,7 @@ msgstr "符記長度「%d」無效"
#. extend redirect used in QQ2006
msgid "Redirect_EX is not currently supported"
-msgstr ""
+msgstr "暫時不支援 Redirect_EX"
#. need activation
#. need activation
@@ -7976,9 +7964,8 @@ msgid "Getting server"
msgstr "設定使用者資訊..."
# XXX 這是看了原始碼後的結論(但可能會錯)- acli 20080930
-#, fuzzy
msgid "Requesting token"
-msgstr "送出請求符記中"
+msgstr "請求符記中"
msgid "Couldn't resolve host"
msgstr "無法解析主機"
@@ -9529,6 +9516,9 @@ msgstr "無法解析主機"
msgid "SIP usernames may not contain whitespaces or @ symbols"
msgstr "SIP 的帳號不可含有空白字元或「@」符號"
+msgid "SIP connect server not specified"
+msgstr "未有指定 SIP 伺服器"
+
#. *< type
#. *< ui_requirement
#. *< flags
@@ -11461,8 +11451,10 @@ msgid "Invert"
msgstr "反向"
# XXX TODO 我非常討厭把「Highlight」譯成「高亮度」,但譯文可以改進 - Ambrose 20061029
+# XXX flagged "有保安功能?" by c9s (http://developer.pidgin.im/ticket/7917), need to verify - 20090226 acli
+# NOTE 譯文改動 by c9s
msgid "Highlight matches"
-msgstr "標示匹配字串"
+msgstr "標示比對字串"
# NOTE 除錯視窗的工具列的快取選單的指令,指「工具列的按紐以圖示標示」,下二同
msgid "_Icon Only"
@@ -11507,11 +11499,13 @@ msgstr "錯誤訊息"
msgid "Fatal Error"
msgstr "嚴重錯誤訊息"
+# XXX 暫譯 - 20090226 acli
msgid "bug master"
-msgstr ""
+msgstr "除錯主管"
+# NOTE 這個「artist」(有別於其他的「Artist」字串)係指設計pidgin圖示的「graphic designer」,絕對不可譯成「藝人」
msgid "artist"
-msgstr "藝人"
+msgstr "平面設計"
#. feel free to not translate this
msgid "Ka-Hing Cheung"
@@ -11543,7 +11537,7 @@ msgid "support/QA"
msgstr "支援兼品管"
msgid "XMPP"
-msgstr ""
+msgstr "XMPP"
msgid "original author"
msgstr "原作者"
@@ -11700,6 +11694,9 @@ msgstr "立陶宛文"
msgid "Macedonian"
msgstr "馬其頓文"
+msgid "Mongolian"
+msgstr "蒙古文"
+
# NOTE 譯文不統一,一般似乎偏向音譯,但譯音也不統一
# NOTE 音譯包括:博克馬爾、波克默爾、布克莫爾、巴克摩
# NOTE 其他譯法包括:丹麥-挪威文(大英百科)、丹麥式挪威文(維基百科)、東挪威文、標準挪威文(國內不是標準,國外是 :P)
@@ -11831,9 +11828,31 @@ 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 ""
+"<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/>"
+msgstr ""
+"<FONT SIZE=\"4\">電郵支援:</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 頻道</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\">IRC:</FONT> irc.freenode.net 上的 #pidgin 頻道<BR><BR>"
+"<FONT SIZE=\"4\">XMPP 聊天室:</FONT>devel@conference.pidgin.im<BR><BR>"
msgid "Current Developers"
msgstr "現任開發者"
@@ -12497,6 +12516,10 @@ msgstr ""
msgid "Pidgin"
msgstr "Pidgin"
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
+
msgid "Open All Messages"
msgstr "開啟所有訊息"
@@ -12837,6 +12860,10 @@ 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 "使用 SOCKS4 代理伺服器時使用遠端 DNS"
+
msgid "_User:"
msgstr "使用者(_U):"
@@ -13339,9 +13366,9 @@ msgstr "開啟郵件(_O)"
msgid "_Edit"
msgstr "修改(_E)"
-# FIXME Tooltip中文怎寫?
+# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) - 20090226 acli
msgid "Pidgin Tooltip"
-msgstr "Pidgin Tooltip"
+msgstr "Pidgin 工具提示"
# NOTE 這是「Default」表情主題的說明
msgid "Pidgin smileys"
@@ -13475,9 +13502,9 @@ msgstr "自訂交談視窗內各種顏色的使用"
msgid "Error Messages"
msgstr "錯誤訊息"
-# XXX TODO 我非常討厭把「Highlight」譯成「高亮度」,但譯文可以改進 - Ambrose 20061029
+# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) 12/27/2008 - 20090226 acli
msgid "Highlighted Messages"
-msgstr "反白訊息"
+msgstr "已標示訊息"
msgid "System Messages"
msgstr "系統訊息"
@@ -13945,9 +13972,9 @@ msgid "Visited Hyperlink Color"
msgstr "瀏覽過的超連結顏色"
# XXX TODO 我非常討厭把「Highlight」譯成「高亮度」,但譯文可以改進 - Ambrose 20061029
-# FIXME 什麼是「反白訊息名稱」? - acli 20080511
+# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) 20081227 - 20090226 acli
msgid "Highlighted Message Name Color"
-msgstr "反白訊息名稱顏色"
+msgstr "已標示訊息名稱顏"
msgid "GtkTreeView Horizontal Separation"
msgstr "GtkTreeView 水平間隔距離"
@@ -14042,7 +14069,7 @@ msgstr ""
#, c-format
msgid "You can upgrade to %s %s today."
-msgstr ""
+msgstr "%s 現已可升級至 %s 版。"
msgid "New Version Available"
msgstr "有新版本"
@@ -14312,9 +14339,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 選項"
@@ -14364,6 +14388,19 @@ msgstr "送出、讀取未加工的 XMPP 段落。"
msgid "This plugin is useful for debbuging XMPP servers or clients."
msgstr "幫助為 XMPP 伺服器或客戶端進行除錯。"
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "無法讀取 MSN 通訊錄"
+
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "收到聊天訊息後閃動視窗(_F)"
+
+#~ msgid ""
+#~ "You may be disconnected shortly. You may want to use TOC until this is "
+#~ "fixed. Check %s for updates."
+#~ msgstr ""
+#~ "您可能會短時間中斷連線。您可能會想在這個問題被修正後使用 TOC。請到 %s 看看"
+#~ "有沒有更新。"
+
#~ msgid "Connection to server lost (no data received within %d second)"
#~ msgid_plural ""
#~ "Connection to server lost (no data received within %d seconds)"
diff --git a/share/ca-certs/AOL_Member_CA.pem b/share/ca-certs/AOL_Member_CA.pem
new file mode 100644
index 0000000000..3ce9439ee0
--- /dev/null
+++ b/share/ca-certs/AOL_Member_CA.pem
@@ -0,0 +1,25 @@
+-----BEGIN CERTIFICATE-----
+MIIEKzCCAxOgAwIBAgIBBzANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEc
+MBoGA1UEChMTQW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBP
+bmxpbmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAxMB4XDTA0MDYwNDE3
+MjYzOVoXDTI5MDYwNDE3MjYzOVowZzELMAkGA1UEBhMCVVMxETAPBgNVBAgTCFZp
+cmdpbmlhMQ8wDQYDVQQHEwZEdWxsZXMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5l
+IEluYy4xFjAUBgNVBAMTDUFPTCBNZW1iZXIgQ0EwggEiMA0GCSqGSIb3DQEBAQUA
+A4IBDwAwggEKAoIBAQD4Y9jxzNYRbwXh1p9DJycl+q9nh3Ss3Nb8wpq9M3JOZbBa
+zev4qWlIOW5oLnEWbp5ZfMJ8ze1uQ9gJQk4Nmn3utVojgdKkW6lRVBzf9oTfGcM+
+lC2NuhD46EMIDzI1bDUx+NbT/Akx1qmheiAGWQzgK42EwzegCB7xNXMQ3U/9DHKT
+Jm6vxRw548rzlW8wwoU9TYQgyD490EDW/gZKGHMLbldn24PBE2aX071ZvH76LzZF
+FM28v6tod79I6xGJTmqE810c5WtqAOZrjUikCbkh3C1mKfRWnvAFaP/MwcmIvNIs
+C68ddBqGaKRtFHTsJID4lbnzLjw9IG8JAjjqOjgFAgMBAAGjgeUwgeIwDgYDVR0P
+AQH/BAQDAgGGMB0GA1UdDgQWBBRhppltJJ8OEYjmOeD+dNEFaVKpQzAfBgNVHSME
+GDAWgBQArdmj9nn2bnSpfzM9gRfXTM8z3jAPBgNVHRMBAf8EBTADAQH/MEgGA1Ud
+IARBMD8wPQYEVR0gADA1MDMGCCsGAQUFBwIBFidodHRwczovL3BraS1pbmZvLmFv
+bC5jb20vQU9ML2luZGV4Lmh0bWwwNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL2Ny
+bC5hb2wuY29tL0FPTC9NYXN0ZXJDUkwuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQAM
+nbzMHdQukRuvoDrrzV78JSopjrMg4Bc3+vy7xbUUuxxmDm9YX8Zx0BOJx60jC+1M
+uFjB48KkJExldg2zhmRPKLrPlvhlmg6CJvWChU41ILNFzGDuD04glDorL8sjEJtG
+G37DVnVJJKS4TZ8caNTm8i+vju0rt+WWaxw9jb8g028tVC+ceTX92gbeaCAgS69d
+q15mwxRke/cC5ieWrRgeq/OCYPxMX7YKUnuenDsuzjxCXzZta/6hdooiIf1b6L1/
+n85RdEhsrLXRomr6B0Te0NupjRgf8bnF6Crruj07GIzADDCzySEcM0w6SVPUqLq6
+OCM9OmWCXnlxFfglK30Z
+-----END CERTIFICATE-----
diff --git a/share/ca-certs/America_Online_Root_Certification_Authority_1.pem b/share/ca-certs/America_Online_Root_Certification_Authority_1.pem
new file mode 100644
index 0000000000..26203ee8a1
--- /dev/null
+++ b/share/ca-certs/America_Online_Root_Certification_Authority_1.pem
@@ -0,0 +1,23 @@
+-----BEGIN CERTIFICATE-----
+MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJV
+UzEcMBoGA1UEChMTQW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1l
+cmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAxMB4X
+DTAyMDUyODA2MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkGA1UEBhMCVVMx
+HDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJp
+Y2EgT25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIw
+DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCa
+xlCyfqXfaE0bfA+2l2h9LaaLl+lkhsmj76CGv2BlnEtUiMJIxUo5vxTjWVXl
+GbR0yLQFOVwWpeKVBeASrlmLojNoWBym1BW32J/X3HGrfpq/m44zDyL9Hy7n
+BzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsWOqMFf6Dch9Wc/HKpoH145Lcx
+VR5lu9RhsCFg7RAycsWSJR74kEoYeEfffjA3PlAb2xzTa5qGUwew76wGePiE
+mf4hjUyAtgyC9mZweRrTT6PP8c9GsEsPPt2IYriMqQkoO3rHl+Ee5fSfwMCu
+JKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAdBgNV
+HQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAUAK3Zo/Z5
+9m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBBQUA
+A4IBAQB8itEfGDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkF
+Zu90821fnZmv9ov761KyBZiibyrFVL0lvV+uyIbqRizBs73B6UlwGBaXCBOM
+IOAbLjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft3OJvx8Fi8eNy1gTI
+dGcL+oiroQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43g
+Kd8hdIaC2y+CMMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j
+8uB9Gr784N/Xx6dssPmuujz9dLQR6FgNgLzTqIA6me11zEZ7
+-----END CERTIFICATE-----
diff --git a/share/ca-certs/Makefile.am b/share/ca-certs/Makefile.am
index 3ec472b620..6fa8d98ec7 100644
--- a/share/ca-certs/Makefile.am
+++ b/share/ca-certs/Makefile.am
@@ -1,4 +1,5 @@
CERTIFICATES = \
+ America_Online_Root_Certification_Authority_1.pem \
CAcert_Root.pem \
CAcert_Class3.pem \
Equifax_Secure_CA.pem \
@@ -9,6 +10,7 @@ CERTIFICATES = \
VeriSign_Class_3_Public_Primary_Certification_Authority_-_G5.pem
EXTRA_CERTS = \
+ AOL_Member_CA.pem \
Microsoft_Internet_Authority.pem \
Microsoft_Secure_Server_Authority.pem \
VeriSign_International_Server_Class_3_CA.pem