[pkg-otr-team] [irssi-plugin-otr] 74/167: 2009-03-18

Holger Levsen holger at moszumanska.debian.org
Mon Mar 3 21:55:33 UTC 2014


This is an automated email from the git hooks/post-receive script.

holger pushed a commit to tag 4.0.0
in repository irssi-plugin-otr.

commit af9bc8f65d847f2d08a11178d0dbb0c1c6e53596
Author: cypherpunk <cypherpunk>
Date:   Tue Apr 28 13:32:30 2009 +0000

    2009-03-18
    
    	* po/sv.po: Swedish translation from Daniel Nylander
    	<po at danielnylander.se>
    
    2009-01-18
    
    	* po/pl.po: Polish translation from Paweł Czochański
    	<czochanski at gmail.com>
    
    2008-08-15
    
    	* otr-plugin.c: Willy Lew's updates to reflect libotr 4.0.0 API
---
 AUTHORS       |   2 +-
 ChangeLog     |  14 ++
 README        |   5 +-
 configure.ac  |   4 +-
 dialogs.c     |   5 +-
 dialogs.h     |   5 +-
 gtk-dialog.c  |   5 +-
 gtk-dialog.h  |   5 +-
 gtk-ui.c      |   5 +-
 gtk-ui.h      |   5 +-
 otr-icons.h   |   5 +-
 otr-plugin.c  | 414 +++++++++++++++++++++++++++++--------
 otr-plugin.h  |   5 +-
 po/pl.po      | 645 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 po/sv.po      | 595 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 tooltipmenu.c |   5 +-
 tooltipmenu.h |   5 +-
 ui.c          |   5 +-
 ui.h          |   5 +-
 19 files changed, 1623 insertions(+), 116 deletions(-)

diff --git a/AUTHORS b/AUTHORS
index 091315a..d9c4f0e 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -2,7 +2,7 @@ Off-the-Record Messaging plugin for pidgin
 
 Authors:
 
-    Ian Goldberg, Rob Smits, Chris Alexander, Nikita Borisov
+    Ian Goldberg, Rob Smits, Chris Alexander, Willy Lew, Nikita Borisov
     <otr at cypherpunks.ca>
 
 See the README file for mailing list information
diff --git a/ChangeLog b/ChangeLog
index afa442b..6df9bc2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,8 +1,22 @@
+2009-03-18
+
+	* po/sv.po: Swedish translation from Daniel Nylander
+	<po at danielnylander.se>
+
+2009-01-18
+
+	* po/pl.po: Polish translation from Paweł Czochański
+	<czochanski at gmail.com>
+
 2008-09-24
 
 	* po/it.po: Italian translation from Vincenzo Reale
 	<smart2128 at baslug.org>.
 
+2008-08-15
+
+	* otr-plugin.c: Willy Lew's updates to reflect libotr 4.0.0 API
+
 2008-08-07
 
 	* otr-plugin.c:
diff --git a/README b/README
index 326ce90..e208e8e 100644
--- a/README
+++ b/README
@@ -300,8 +300,9 @@ The Off-the-Record Messaging plugin for pidgin is covered by the following
 (GPL) license:
 
     Off-the-Record Messaging plugin for pidgin
-    Copyright (C) 2004-2008  Ian Goldberg, Rob Smits,
-                             Chris Alexander, Nikita Borisov
+    Copyright (C) 2004-2009  Ian Goldberg, Rob Smits,
+                             Chris Alexander, Willy Lew,
+			     Nikita Borisov
                              <otr at cypherpunks.ca>
 
 
diff --git a/configure.ac b/configure.ac
index b64de85..73440c7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,6 +1,6 @@
 dnl Process this file with autoconf to produce configure.
 
-AC_INIT(pidgin-otr, 3.2.0)
+AC_INIT(pidgin-otr, 4.0.0)
 
 AM_CONFIG_HEADER(config.h)
 
@@ -24,7 +24,7 @@ GETTEXT_PACKAGE=pidgin-otr
 AC_SUBST(GETTEXT_PACKAGE)
 AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, ["$GETTEXT_PACKAGE"], [Define the gettext package to be used])
 
-ALL_LINGUAS="ar de es fr hu it nl ru sk"
+ALL_LINGUAS="ar de es fr hu it pl nl ru sk sv"
 AM_GLIB_GNU_GETTEXT
 
 AC_OUTPUT([Makefile po/Makefile.in])
diff --git a/dialogs.c b/dialogs.c
index 9acf422..4a4e99e 100644
--- a/dialogs.c
+++ b/dialogs.c
@@ -1,7 +1,8 @@
 /*
  *  Off-the-Record Messaging plugin for pidgin
- *  Copyright (C) 2004-2008  Ian Goldberg, Rob Smits,
- *                           Chris Alexander, Nikita Borisov
+ *  Copyright (C) 2004-2009  Ian Goldberg, Rob Smits,
+ *                           Chris Alexander, Willy Lew,
+ *                           Nikita Borisov
  *                           <otr at cypherpunks.ca>
  *
  *  This program is free software; you can redistribute it and/or modify
diff --git a/dialogs.h b/dialogs.h
index 204adef..bf89368 100644
--- a/dialogs.h
+++ b/dialogs.h
@@ -1,7 +1,8 @@
 /*
  *  Off-the-Record Messaging plugin for pidgin
- *  Copyright (C) 2004-2008  Ian Goldberg, Rob Smits,
- *                           Chris Alexander, Nikita Borisov
+ *  Copyright (C) 2004-2009  Ian Goldberg, Rob Smits,
+ *                           Chris Alexander, Willy Lew,
+ *                           Nikita Borisov
  *                           <otr at cypherpunks.ca>
  *
  *  This program is free software; you can redistribute it and/or modify
diff --git a/gtk-dialog.c b/gtk-dialog.c
index 60fdb8a..27df1c6 100644
--- a/gtk-dialog.c
+++ b/gtk-dialog.c
@@ -1,7 +1,8 @@
 /*
  *  Off-the-Record Messaging plugin for pidgin
- *  Copyright (C) 2004-2008  Ian Goldberg, Rob Smits,
- *                           Chris Alexander, Nikita Borisov
+ *  Copyright (C) 2004-2009  Ian Goldberg, Rob Smits,
+ *                           Chris Alexander, Willy Lew,
+ *                           Nikita Borisov
  *                           <otr at cypherpunks.ca>
  *
  *  This program is free software; you can redistribute it and/or modify
diff --git a/gtk-dialog.h b/gtk-dialog.h
index 50253fa..07152b1 100644
--- a/gtk-dialog.h
+++ b/gtk-dialog.h
@@ -1,7 +1,8 @@
 /*
  *  Off-the-Record Messaging plugin for pidgin
- *  Copyright (C) 2004-2008  Ian Goldberg, Rob Smits,
- *                           Chris Alexander, Nikita Borisov
+ *  Copyright (C) 2004-2009  Ian Goldberg, Rob Smits,
+ *                           Chris Alexander, Willy Lew,
+ *                           Nikita Borisov
  *                           <otr at cypherpunks.ca>
  *
  *  This program is free software; you can redistribute it and/or modify
diff --git a/gtk-ui.c b/gtk-ui.c
index 46b2990..29cc065 100644
--- a/gtk-ui.c
+++ b/gtk-ui.c
@@ -1,7 +1,8 @@
 /*
  *  Off-the-Record Messaging plugin for pidgin
- *  Copyright (C) 2004-2008  Ian Goldberg, Rob Smits,
- *                           Chris Alexander, Nikita Borisov
+ *  Copyright (C) 2004-2009  Ian Goldberg, Rob Smits,
+ *                           Chris Alexander, Willy Lew,
+ *                           Nikita Borisov
  *                           <otr at cypherpunks.ca>
  *
  *  This program is free software; you can redistribute it and/or modify
diff --git a/gtk-ui.h b/gtk-ui.h
index 4811211..8797850 100644
--- a/gtk-ui.h
+++ b/gtk-ui.h
@@ -1,7 +1,8 @@
 /*
  *  Off-the-Record Messaging plugin for pidgin
- *  Copyright (C) 2004-2008  Ian Goldberg, Rob Smits,
- *                           Chris Alexander, Nikita Borisov
+ *  Copyright (C) 2004-2009  Ian Goldberg, Rob Smits,
+ *                           Chris Alexander, Willy Lew,
+ *                           Nikita Borisov
  *                           <otr at cypherpunks.ca>
  *
  *  This program is free software; you can redistribute it and/or modify
diff --git a/otr-icons.h b/otr-icons.h
index 64a83cf..f9ff68a 100644
--- a/otr-icons.h
+++ b/otr-icons.h
@@ -1,7 +1,8 @@
 /*
  *  Off-the-Record Messaging plugin for pidgin
- *  Copyright (C) 2004-2008  Ian Goldberg, Rob Smits,
- *                           Chris Alexander, Nikita Borisov
+ *  Copyright (C) 2004-2009  Ian Goldberg, Rob Smits,
+ *                           Chris Alexander, Willy Lew,
+ *                           Nikita Borisov
  *                           <otr at cypherpunks.ca>
  *
  *  This program is free software; you can redistribute it and/or modify
diff --git a/otr-plugin.c b/otr-plugin.c
index 4713516..26c7a17 100644
--- a/otr-plugin.c
+++ b/otr-plugin.c
@@ -1,7 +1,8 @@
 /*
  *  Off-the-Record Messaging plugin for pidgin
- *  Copyright (C) 2004-2008  Ian Goldberg, Rob Smits,
- *                           Chris Alexander, Nikita Borisov
+ *  Copyright (C) 2004-2009  Ian Goldberg, Rob Smits,
+ *                           Chris Alexander, Willy Lew,
+ *                           Nikita Borisov
  *                           <otr at cypherpunks.ca>
  *
  *  This program is free software; you can redistribute it and/or modify
@@ -122,6 +123,48 @@ void otrg_plugin_inject_message(PurpleAccount *account, const char *recipient,
     serv_send_im(connection, recipient, message, 0);
 }
 
+/* Display a notification message for a particular accountname /
+ * protocol / username conversation. */
+static void notify(void *opdata, OtrlNotifyLevel level,
+        const char *accountname, const char *protocol, const char *username,
+        const char *title, const char *primary, const char *secondary)
+{
+    PurpleNotifyMsgType purplelevel = PURPLE_NOTIFY_MSG_ERROR;
+
+    switch (level) {
+        case OTRL_NOTIFY_ERROR:
+            purplelevel = PURPLE_NOTIFY_MSG_ERROR;
+            break;
+        case OTRL_NOTIFY_WARNING:
+            purplelevel = PURPLE_NOTIFY_MSG_WARNING;
+            break;
+        case OTRL_NOTIFY_INFO:
+            purplelevel = PURPLE_NOTIFY_MSG_INFO;
+            break;
+    }
+
+    otrg_dialog_notify_message(purplelevel, accountname, protocol,
+            username, title, primary, secondary);
+}
+
+/* Display an OTR control message for a particular accountname /
+ * protocol / username conversation.  If force_create is non-zero and
+ * if the corresponding conversation window is not present, a new
+ * conversation window will be created and the message will be displayed
+ * there. Returns 0 if message is successfully displayed. */
+static int display_otr_message(void *opdata, const char *accountname,
+        const char *protocol, const char *username, const char *msg,
+        int force_create)
+{
+    return otrg_dialog_display_otr_message(accountname, protocol,
+            username, msg, force_create);
+}
+
+static void log_message(void *opdata, const char *message)
+{
+    purple_debug_info("otr", message);
+}
+
 static OtrlPolicy policy_cb(void *opdata, ConnContext *context)
 {
     PurpleAccount *account;
@@ -137,19 +180,6 @@ static OtrlPolicy policy_cb(void *opdata, ConnContext *context)
     return prefs.policy;
 }
 
-static const char *protocol_name_cb(void *opdata, const char *protocol)
-{
-    PurplePlugin *p = purple_find_prpl(protocol);
-    if (!p) return NULL;
-    return p->info->name;
-}
-
-static void protocol_name_free_cb(void *opdata, const char *protocol_name)
-{
-    /* Do nothing, since we didn't actually allocate any memory in
-     * protocol_name_cb. */
-}
-
 /* Generate a private key for the given accountname/protocol */
 void otrg_plugin_create_privkey(const char *accountname,
 	const char *protocol)
@@ -228,35 +258,6 @@ static void inject_message_cb(void *opdata, const char *accountname,
     otrg_plugin_inject_message(account, recipient, message);
 }
 
-static void notify_cb(void *opdata, OtrlNotifyLevel level,
-	const char *accountname, const char *protocol, const char *username,
-	const char *title, const char *primary, const char *secondary)
-{
-    PurpleNotifyMsgType purplelevel = PURPLE_NOTIFY_MSG_ERROR;
-
-    switch (level) {
-	case OTRL_NOTIFY_ERROR:
-	    purplelevel = PURPLE_NOTIFY_MSG_ERROR;
-	    break;
-	case OTRL_NOTIFY_WARNING:
-	    purplelevel = PURPLE_NOTIFY_MSG_WARNING;
-	    break;
-	case OTRL_NOTIFY_INFO:
-	    purplelevel = PURPLE_NOTIFY_MSG_INFO;
-	    break;
-    }
-
-    otrg_dialog_notify_message(purplelevel, accountname, protocol,
-	    username, title, primary, secondary);
-}
-
-static int display_otr_message_cb(void *opdata, const char *accountname,
-	const char *protocol, const char *username, const char *msg)
-{
-    return otrg_dialog_display_otr_message(accountname, protocol,
-	    username, msg, 0);
-}
-
 static void update_context_list_cb(void *opdata)
 {
     otrg_ui_update_keylist();
@@ -294,11 +295,6 @@ static void still_secure_cb(void *opdata, ConnContext *context, int is_reply)
     }
 }
 
-static void log_message_cb(void *opdata, const char *message)
-{
-    purple_debug_info("otr", message);
-}
-
 static int max_message_size_cb(void *opdata, ConnContext *context)
 {
     void* lookup_result = g_hash_table_lookup(mms_table, context->protocol);
@@ -308,33 +304,286 @@ static int max_message_size_cb(void *opdata, ConnContext *context)
         return *((int*)lookup_result);
 }
 
-static void handle_smp_event(void *opdata, OtrlSMPEvent smp_event, 
+static const char* otr_error_message_cb(void *opdata, ConnContext *context,
+        OtrlErrorCode err_code)
+{
+    char *err_msg = NULL;
+    switch (err_code)
+    {
+    case OTRL_ERRCODE_NONE :
+	break;
+    case OTRL_ERRCODE_ENCRYPTION_ERROR :
+        err_msg = g_strdup(_("Error occurred encrypting message."));
+        break;
+    case OTRL_ERRCODE_MSG_NOT_IN_PRIVATE :
+        if (context) {
+            err_msg = g_strdup_printf(_("You sent encrypted data to %s, who"
+                " wasn't expecting it."), context->accountname);
+        }
+        break;
+    case OTRL_ERRCODE_MSG_UNREADABLE :
+        err_msg = g_strdup(_("You transmitted an unreadable encrypted message."));
+        break;
+    case OTRL_ERRCODE_MSG_MALFORMED :
+        err_msg = g_strdup(_("You transmitted a malformed data message."));
+        break;
+    }
+    return err_msg;
+}
+
+static void otr_error_message_free_cb(void *opdata, const char *err_msg)
+{
+    if (err_msg) g_free((char*)err_msg);
+}
+
+static const char *resent_msg_prefix_cb(void *opdata, ConnContext *context)
+{
+	return g_strdup(_("[resent]"));
+}
+
+static void resent_msg_prefix_free_cb(void *opdata, const char *prefix)
+{
+	if (prefix) g_free((char*)prefix);
+}
+
+static void handle_smp_event_cb(void *opdata, OtrlSMPEvent smp_event,
         ConnContext *context, unsigned short progress_percent,
 	char *question)
 {
     if (!context) return;
-    switch (smp_event) 
+    switch (smp_event)
     {
+        case OTRL_SMPEVENT_NONE :
+	    break;
         case OTRL_SMPEVENT_ASK_FOR_SECRET :
             otrg_dialog_socialist_millionaires(context);
             break;
         case OTRL_SMPEVENT_ASK_FOR_ANSWER :
             otrg_dialog_socialist_millionaires_q(context, question);
             break;
-        case OTRL_SMPEVENT_CHEATED :  
+        case OTRL_SMPEVENT_CHEATED :
             otrg_plugin_abort_smp(context);
 	    /* FALLTHROUGH */
         case OTRL_SMPEVENT_IN_PROGRESS :
-        case OTRL_SMPEVENT_SUCCESS : 
-        case OTRL_SMPEVENT_FAILURE :  
-        case OTRL_SMPEVENT_ABORT :  
+        case OTRL_SMPEVENT_SUCCESS :
+        case OTRL_SMPEVENT_FAILURE :
+        case OTRL_SMPEVENT_ABORT :
             otrg_dialog_update_smp(context,
 		    smp_event, ((gdouble)progress_percent)/100.0);
             break;
-        case OTRL_SMPEVENT_ERROR :  
+        case OTRL_SMPEVENT_ERROR :
             otrg_plugin_abort_smp(context);
             break;
-    }   
+    }
+}
+
+static void handle_msg_event_cb(void *opdata, OtrlMessageEvent msg_event,
+        ConnContext *context, const char* message, gcry_error_t err)
+{
+    if (!context) return;
+    char *buf;
+    const char *format;
+
+    switch (msg_event)
+    {
+        case OTRL_MSGEVENT_NONE:
+	    break;
+        case OTRL_MSGEVENT_ENCRYPTION_REQUIRED:
+            if (display_otr_message(opdata, context->accountname,
+                    context->protocol, context->username, _("Attempting to start a "
+                    "private conversation..."), 1)) {
+                format = _("You attempted to send an "
+                "unencrypted message to %s");
+                buf = malloc(strlen(format) +
+                    strlen(context->username) - 1);
+                if (buf) {
+                    sprintf(buf, format, context->username);
+                    notify(opdata, OTRL_NOTIFY_WARNING, context->accountname,
+                        context->protocol, context->username, _("OTR Policy Violation"),
+                        buf,
+                        _("Unencrypted messages to this recipient are "
+                        "not allowed.  Attempting to start a private "
+                        "conversation.\n\nYour message will be "
+                        "retransmitted when the private conversation "
+                        "starts."));
+                    free(buf);
+                }
+            }
+            break;
+        case OTRL_MSGEVENT_ENCRYPTION_ERROR:
+            if (display_otr_message(opdata, context->accountname,
+                context->protocol, context->username, _("An error occurred when "
+                "encrypting your message.  The message was not sent."), 1)) {
+                notify(opdata, OTRL_NOTIFY_ERROR,
+                    context->accountname, context->protocol, context->username,
+                    _("Error encrypting message"),
+                    _("An error occurred when encrypting your message"),
+                    _("The message was not sent."));
+            }
+            break;
+        case OTRL_MSGEVENT_CONNECTION_ENDED:
+            if (display_otr_message(opdata, context->accountname,
+                context->protocol, context->username, _("Your message was not sent.  "
+                "Either end your private conversation, or restart it."), 1)) {
+                format = _("%s has already closed his/her private "
+                    "connection to you");
+                buf = malloc(strlen(format) + strlen(context->username) - 1);
+                if (buf) {
+                    sprintf(buf, format, context->username);
+                    notify(opdata, OTRL_NOTIFY_ERROR,
+                        context->accountname, context->protocol, context->username,
+                        _("Private connection closed"), buf,
+                        _("Your message was not sent.  Either close your "
+                        "private connection to him, or refresh it."));
+                    free(buf);
+                }
+            }
+            break;
+        case OTRL_MSGEVENT_SETUP_ERROR:
+            if (!err) {
+                err = GPG_ERR_INV_VALUE;
+            }
+            format = _("Error setting up private conversation: %s");
+            const char *strerr;
+
+            switch(gcry_err_code(err)) {
+                case GPG_ERR_INV_VALUE:
+                    strerr = _("Malformed message received");
+                    break;
+                default:
+                    strerr = gcry_strerror(err);
+                    break;
+            }
+            buf = malloc(strlen(format) + strlen(strerr) - 1);
+            if (buf) {
+                sprintf(buf, format, strerr);
+            }
+            if (display_otr_message(opdata, context->accountname,
+                    context->protocol, context->username, buf, 1)) {
+                notify(opdata, OTRL_NOTIFY_ERROR, context->accountname,
+                    context->protocol, context->username, "OTR error",
+                    buf, NULL);
+            }
+            free(buf);
+            break;
+        case OTRL_MSGEVENT_MSG_REFLECTED:
+            if (display_otr_message(opdata,
+                context->accountname, context->protocol,
+                context->username,
+                _("We are receiving our own OTR messages.  "
+                "You are either trying to talk to yourself, "
+                "or someone is reflecting your messages back "
+                "at you."), 1))  {
+                notify(opdata, OTRL_NOTIFY_ERROR,
+                    context->accountname, context->protocol,
+                    context->username, "OTR Error",
+                    _("We are receiving our own OTR messages."),
+                    _("You are either trying to talk to yourself, "
+                    "or someone is reflecting your messages back "
+                    "at you."));
+            }
+            break;
+        case OTRL_MSGEVENT_MSG_RESENT:
+            format = _("<b>The last message to %s was resent.</b>");
+            buf = malloc(strlen(format) +
+                strlen(context->username) - 1);
+            if (buf) {
+                sprintf(buf, format, context->username);
+                display_otr_message(opdata, context->accountname,
+                        context->protocol, context->username, buf, 1);
+                free(buf);
+            }
+            break;
+        case OTRL_MSGEVENT_RCVDMSG_NOT_IN_PRIVATE:
+            format = _("<b>The encrypted message received from %s is "
+                "unreadable, as you are not currently communicating "
+                "privately.</b>");
+            buf = malloc(strlen(format) +
+                strlen(context->username) - 1);
+            if (buf) {
+                sprintf(buf, format, context->username);
+                display_otr_message(opdata, context->accountname,
+                        context->protocol, context->username, buf, 1);
+                free(buf);
+            }
+            break;
+        case OTRL_MSGEVENT_RCVDMSG_UNREADABLE:
+            format = _("We received an unreadable "
+                "encrypted message from %s.");
+            buf = malloc(strlen(format) + strlen(context->username) - 1);
+            if (buf) {
+                sprintf(buf, format, context->username);
+                if (display_otr_message(opdata,
+                    context->accountname, context->protocol,
+                    context->username, buf, 1)) {
+                    notify(opdata, OTRL_NOTIFY_ERROR,
+                        context->accountname, context->protocol,
+                        context->username, "OTR Error", buf, NULL);
+                }
+                free(buf);
+            }
+            break;
+        case OTRL_MSGEVENT_RCVDMSG_MALFORMED:
+            format =  _("We received a malformed data "
+                "message from %s.");
+            buf = malloc(strlen(format) + strlen(context->username) - 1);
+            if (buf) {
+                sprintf(buf, format, context->username);
+                if (display_otr_message(opdata,
+                    context->accountname, context->protocol,
+                    context->username, buf, 1)) {
+                    notify(opdata, OTRL_NOTIFY_ERROR,
+                        context->accountname, context->protocol,
+                        context->username, "OTR Error", buf, NULL);
+                }
+                free(buf);
+            }
+            break;
+        case OTRL_MSGEVENT_LOG_HEARTBEAT_RCVD:
+            format = _("Heartbeat received from %s.\n");
+            buf = malloc(strlen(format) + strlen(context->username) - 1);
+            if (buf) {
+                sprintf(buf, format, context->username);
+                log_message(opdata, buf);
+                free(buf);
+            }
+            break;
+        case OTRL_MSGEVENT_LOG_HEARTBEAT_SENT:
+            format = _("Heartbeat sent to %s.\n");
+            buf = malloc(strlen(format) + strlen(context->username) - 1);
+            if (buf) {
+                sprintf(buf, format, context->username);
+                log_message(opdata, buf);
+                free(buf);
+            }
+            break;
+        case OTRL_MSGEVENT_RCVDMSG_GENERAL_ERR:
+            display_otr_message(opdata, context->accountname,
+                    context->protocol, context->username, message, 1);
+            break;
+        case OTRL_MSGEVENT_RCVDMSG_UNENCRYPTED:
+            format = _("<b>The following message received "
+                "from %s was <i>not</i> encrypted: [</b>%s<b>]</b>");
+            buf = malloc(strlen(format) + strlen(context->username)
+                + strlen(message) - 3);
+                /* Remove "%s%s", add username + message + '\0' */
+            if (buf) {
+                sprintf(buf, format, context->username, message);
+                display_otr_message(opdata, context->accountname,
+                    context->protocol, context->username, buf, 1);
+                free(buf);
+            }
+            break;
+        case OTRL_MSGEVENT_RCVDMSG_UNRECOGNIZED:
+            format = _("Unrecognized OTR message received from %s.\n");
+            buf = malloc(strlen(format) + strlen(context->username) - 1);
+            if (buf) {
+                sprintf(buf, format, context->username);
+                log_message(opdata, buf);
+                free(buf);
+            }
+            break;
+    }
 }
 
 #ifdef DUMP_RECEIVED_SYMKEY
@@ -361,17 +610,12 @@ static OtrlMessageAppOps ui_ops = {
     create_privkey_cb,
     is_logged_in_cb,
     inject_message_cb,
-    notify_cb,
-    display_otr_message_cb,
     update_context_list_cb,
-    protocol_name_cb,
-    protocol_name_free_cb,
     confirm_fingerprint_cb,
     write_fingerprints_cb,
     gone_secure_cb,
     gone_insecure_cb,
     still_secure_cb,
-    log_message_cb,
     max_message_size_cb,
     NULL,                   /* account_name */
     NULL,                   /* account_name_free */
@@ -380,7 +624,12 @@ static OtrlMessageAppOps ui_ops = {
 #else
     NULL,		    /* received_symkey */
 #endif
-    handle_smp_event
+    otr_error_message_cb,
+    otr_error_message_free_cb,
+    resent_msg_prefix_cb,
+    resent_msg_prefix_free_cb,
+    handle_smp_event_cb,
+    handle_msg_event_cb
 };
 
 static void process_sending_im(PurpleAccount *account, char *who,
@@ -398,26 +647,17 @@ static void process_sending_im(PurpleAccount *account, char *who,
     username = strdup(purple_normalize(account, who));
 
     err = otrl_message_sending(otrg_plugin_userstate, &ui_ops, NULL,
-	    accountname, protocol, username, *message, NULL, &newmessage,
-	    NULL, NULL);
+	    accountname, protocol, username, message, NULL, &newmessage,
+	    OTRL_FRAGMENT_SEND_ALL_BUT_LAST, NULL, NULL, NULL, NULL);
+
+    if (err) {
+    	/* Do not send out plain text */
+    	char *ourm = strdup("");
+    	free(*message);
+    	*message = ourm;
+    }
 
-    if (err && newmessage == NULL) {
-	/* Be *sure* not to send out plaintext */
-	char *ourm = strdup("");
-	free(*message);
-	*message = ourm;
-    } else if (newmessage) {
-	/* Fragment the message if necessary, and send all but the last
-	 * fragment over the network.  Pidgin will send the last
-	 * fragment for us. */
-	ConnContext *context = otrl_context_find(otrg_plugin_userstate,
-		username, accountname, protocol, 0, NULL, NULL, NULL);
-	free(*message);
-	*message = NULL;
-	err = otrl_message_fragment_and_send(&ui_ops, NULL, context,
-		newmessage, OTRL_FRAGMENT_SEND_ALL_BUT_LAST, message);
 	otrl_message_free(newmessage);
-    }
     free(username);
 }
 
@@ -473,18 +713,18 @@ void otrg_plugin_send_default_query_conv(PurpleConversation *conv)
     const char *username, *accountname;
     char *msg;
     OtrgUiPrefs prefs;
-    
+
     account = purple_conversation_get_account(conv);
     accountname = purple_account_get_username(account);
     username = purple_conversation_get_name(conv);
-    
+
     otrg_ui_get_prefs(&prefs, account, username);
     msg = otrl_proto_default_query_msg(accountname, prefs.policy);
     otrg_plugin_inject_message(account, username, msg ? msg : "?OTRv2?");
     free(msg);
 }
 
-static gboolean process_receiving_im(PurpleAccount *account, char **who, 
+static gboolean process_receiving_im(PurpleAccount *account, char **who,
         char **message, int *flags, void *m)
 {
     char *newmessage = NULL;
@@ -504,7 +744,7 @@ static gboolean process_receiving_im(PurpleAccount *account, char **who,
 
     res = otrl_message_receiving(otrg_plugin_userstate, &ui_ops, NULL,
 	    accountname, protocol, username, *message,
-	    &newmessage, &tlvs, NULL, NULL);
+	    &newmessage, &tlvs, NULL, NULL, NULL, NULL);
 
     if (newmessage) {
 	char *ourm = malloc(strlen(newmessage) + 1);
@@ -742,7 +982,7 @@ static void mms_read_FILEp(FILE *mmsf, GHashTable *ght)
 	if (!eol) eol = strchr(mms, '\n');
 	if (!eol) continue;
 	*eol = '\0';
-	
+
 	prot_in_table = strdup(protocol);
 	mms_in_table = malloc(sizeof(int));
 	*mms_in_table = atoi(mms);
@@ -950,7 +1190,7 @@ static PurplePluginInfo info =
 	NULL,                                             /* description    */
 	                                                  /* author         */
 	"Ian Goldberg, Rob Smits,\n"
-	    "\t\t\tChris Alexander, Nikita Borisov\n"
+	    "\t\t\tChris Alexander, Willy Lew, Nikita Borisov\n"
 	    "\t\t\t<otr at cypherpunks.ca>",
 	"http://otr.cypherpunks.ca/",                     /* homepage       */
 
diff --git a/otr-plugin.h b/otr-plugin.h
index fbbd3f1..97afced 100644
--- a/otr-plugin.h
+++ b/otr-plugin.h
@@ -1,7 +1,8 @@
 /*
  *  Off-the-Record Messaging plugin for pidgin
- *  Copyright (C) 2004-2008  Ian Goldberg, Rob Smits,
- *                           Chris Alexander, Nikita Borisov
+ *  Copyright (C) 2004-2009  Ian Goldberg, Rob Smits,
+ *                           Chris Alexander, Willy Lew,
+ *                           Nikita Borisov
  *                           <otr at cypherpunks.ca>
  *
  *  This program is free software; you can redistribute it and/or modify
diff --git a/po/pl.po b/po/pl.po
new file mode 100644
index 0000000..f1e4ddb
--- /dev/null
+++ b/po/pl.po
@@ -0,0 +1,645 @@
+# Off-the-Record Messaging plugin for pidgin.
+# Copyright (C) 2004-2008  Ian Goldberg, Rob Smits,
+#                          Chris Alexander, Nikita Borisov
+# This file is distributed under the same license as the pidgin-otr package.
+# Paweł Czochański <czochanski at gmail.com>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pidgin-otr 3.2.0-de\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-06-12 00:34+0200\n"
+"PO-Revision-Date: 2008-05-28 09:12+0200\n"
+"Last-Translator: Paweł Czochański <czochanski at gmail.com>\n"
+"Language-Team: Paweł Czochański <czochanski at gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../gtk-dialog.c:291 ../gtk-dialog.c:1144 ../gtk-dialog.c:1148
+#: ../gtk-dialog.c:1310 ../gtk-dialog.c:1488 ../gtk-dialog.c:1669
+#: ../gtk-dialog.c:1772 ../gtk-dialog.c:1863 ../gtk-dialog.c:2309
+msgid "?lang=en"
+msgstr "?lang=pl"
+
+#: ../gtk-dialog.c:440 ../gtk-dialog.c:2043 ../gtk-dialog.c:2517
+msgid "_What's this?"
+msgstr "_Co to jest?"
+
+#: ../gtk-dialog.c:475
+msgid ""
+"Your buddy is attempting to determine if he or she is really talking to you, "
+"or if it's someone pretending to be you.  Your buddy has asked a question, "
+"indicated below.  To authenticate to your buddy, enter the answer and click "
+"OK."
+msgstr ""
+"Twój współrozmówca próbuje sprawdzić, czy rzeczywiście rozmawia z tobą, "
+"czy może z kimś kto podszywa się pod ciebie. By to sprawdzić pragnie zadać ci "
+"poniższe pytanie. By uwierzytelnić się wpisz poprawną odpowiedź i kliknij "
+"OK."
+
+#: ../gtk-dialog.c:482
+msgid ""
+"To authenticate using a question, pick a question whose answer is known only "
+"to you and your buddy.  Enter this question and this answer, then wait for "
+"your buddy to enter the answer too.  If the answers don't match, then you "
+"may be talking to an imposter."
+msgstr ""
+"By uwierzytelnić rozmowę wymyśl pytanie na które odpowiedź znana jest tylko "
+"tobie i twojemu współrozmówcy. Wpisz swoje pytanie i odpowiedź, a następnie "
+"zaczekaj aż twój współrozmówca poda własną odpowiedź. Jeżeli odpowiedzi "
+"nie będą zgodne ze sobą może to oznaczać, że rozmawiasz z oszustem."
+
+#: ../gtk-dialog.c:500
+msgid "This is the question asked by your buddy:"
+msgstr "Pytanie zadane przez twojego współrozmówcy to:"
+
+#: ../gtk-dialog.c:503
+msgid "Enter question here:"
+msgstr "Tu wpisz swoje pytanie:"
+
+#: ../gtk-dialog.c:534 ../gtk-dialog.c:618
+msgid "This buddy is already authenticated."
+msgstr "Ten rozmówca jest już uwierzytelniony."
+
+#: ../gtk-dialog.c:546
+msgid "Enter secret answer here (case sensitive):"
+msgstr "Tu wpisz odpowiedź na pytanie: (wielkość liter ma znaczenie)"
+
+#: ../gtk-dialog.c:587
+msgid ""
+"To authenticate, pick a secret known only to you and your buddy.  Enter this "
+"secret, then wait for your buddy to enter it too.  If the secrets don't "
+"match, then you may be talking to an imposter."
+msgstr ""
+"By uwierzytelnić rozmowę wybierz sekret znany jedynie tobie i twojemu współrozmówcy. "
+"Wpisz ten sekret i zaczekaj aż twój współrozmówca również go wprowadzi. Jeżeli "
+"wprowadzone sekrety nie będą się zgadzać, może to oznaczać, że rozmawiasz z oszustem."
+
+#: ../gtk-dialog.c:601
+msgid "Enter secret here:"
+msgstr "Tu wprowadź sekret:"
+
+#: ../gtk-dialog.c:652 ../gtk-dialog.c:1477 ../gtk-dialog.c:1530
+msgid ""
+"To verify the fingerprint, contact your buddy via some <i>other</i> "
+"authenticated channel, such as the telephone or GPG-signed email.  Each of "
+"you should tell your fingerprint to the other."
+msgstr ""
+"By zweryfikować klucz, skontaktuj się ze swoim współrozmówcą "
+"wykorzystując jakiś <i>inny</i> uwierzytelniony kanał, jak np. telefon lub email z podpisem GPG, "
+"i wymieńcie się swoimi kluczami."
+
+#: ../gtk-dialog.c:656 ../gtk-dialog.c:1481 ../gtk-dialog.c:1534
+msgid ""
+"If everything matches up, you should indicate in the above dialog that you "
+"<b>have</b> verified the fingerprint."
+msgstr ""
+"Jeżeli wszystko się zgodzi, powyższe okno powinno zasygnalizować ci, że "
+"weryfikacja przebiegła <i>pomyślnie</i>."
+
+#: ../gtk-dialog.c:667 ../gtk-dialog.c:1519
+msgid "[none]"
+msgstr "[brak]"
+
+#: ../gtk-dialog.c:674 ../gtk-dialog.c:1032 ../gtk-dialog.c:1526
+#: ../gtk-dialog.c:1577 ../gtk-ui.c:181 ../otr-plugin.c:116
+#: ../otr-plugin.c:213 ../ui.c:111
+msgid "Unknown"
+msgstr "Nieznany"
+
+#: ../gtk-dialog.c:675
+#, c-format
+msgid ""
+"Fingerprint for you, %s (%s):\n"
+"%s\n"
+"\n"
+"Purported fingerprint for %s:\n"
+"%s\n"
+msgstr ""
+"Twój klucz, %s (%s):\n"
+"%s\n"
+"\n"
+"Rzekomy klucz %s:\n"
+"%s\n"
+
+#: ../gtk-dialog.c:727
+msgid "How would you like to authenticate your buddy?"
+msgstr "Jaki sposób uwierzytelniania pragniesz zastosować?"
+
+#: ../gtk-dialog.c:736
+msgid "Question and answer"
+msgstr "Pytanie i odpowiedź"
+
+#: ../gtk-dialog.c:739
+msgid "Shared secret"
+msgstr "Współdzielony sekret"
+
+#: ../gtk-dialog.c:742
+msgid "Manual fingerprint verification"
+msgstr "Ręczna wymiana kluczy"
+
+#: ../gtk-dialog.c:785
+msgid "_Authenticate"
+msgstr "_Uwierzytelnij"
+
+#: ../gtk-dialog.c:818
+msgid ""
+"Authenticating a buddy helps ensure that the person you are talking to is "
+"who he or she claims to be."
+msgstr ""
+"Uwierzytelnianie współrozmówcy umożliwia upewnienie się, że osoba, z którą rozmawiasz, "
+"jest tą, za którą się podaje."
+
+#. Translators: you are asked to authenticate yourself
+#: ../gtk-dialog.c:927
+msgid "Authenticating to Buddy"
+msgstr "Uwierzytelnij się"
+
+#. Translators: you asked your buddy to authenticate him/herself
+#: ../gtk-dialog.c:929
+msgid "Authenticating Buddy"
+msgstr "Uwierzytelnij"
+
+#: ../gtk-dialog.c:956
+#, c-format
+msgid "Authenticating to %s"
+msgstr "Uwierzytelnianie dla %s"
+
+#: ../gtk-dialog.c:957
+#, c-format
+msgid "Authenticating %s"
+msgstr "Uwierzytelnianie %s"
+
+#: ../gtk-dialog.c:990
+msgid "Waiting for buddy..."
+msgstr "Oczekiwanie..."
+
+#: ../gtk-dialog.c:1023
+msgid "Generating private key"
+msgstr "Generowanie klucza prywatnego"
+
+#: ../gtk-dialog.c:1024
+msgid "Please wait"
+msgstr "Proszę czekać"
+
+#. Create the Please Wait... dialog
+#: ../gtk-dialog.c:1035
+#, c-format
+msgid "Generating private key for %s (%s)..."
+msgstr "Generowanie klucza prywatnego dla %s (%s)..."
+
+#: ../gtk-dialog.c:1080
+#, c-format
+msgid "%s Done."
+msgstr "%s Zakończono."
+
+#: ../gtk-dialog.c:1142
+#, c-format
+msgid ""
+"%s is contacting you from an unrecognized computer.  You should <a href=\"%s%"
+"s\">authenticate</a> this buddy."
+msgstr ""
+"%s kontaktuje się z tobą z nierozpoznanego komputera. Powinieneś "
+"<a href=\"%s%s\">uwierzytelnić</a> go."
+
+#: ../gtk-dialog.c:1146
+#, c-format
+msgid ""
+"%s has not been authenticated yet.  You should <a href=\"%s%s"
+"\">authenticate</a> this buddy."
+msgstr ""
+"%s nie został jeszcze uwierzytelniony. Powinieneś <a href=\"%s%s"
+"\">uwierzytelnić</a> go."
+
+#: ../gtk-dialog.c:1209 ../gtk-dialog.c:1240 ../gtk-dialog.c:2030
+#: ../gtk-dialog.c:2305 ../gtk-ui.c:82
+msgid "Finished"
+msgstr "Zakończono"
+
+#: ../gtk-dialog.c:1210 ../gtk-dialog.c:1241 ../gtk-dialog.c:2027
+#: ../gtk-dialog.c:2302 ../gtk-ui.c:81
+msgid "Private"
+msgstr "Prywatna"
+
+#: ../gtk-dialog.c:1211 ../gtk-dialog.c:1242 ../gtk-dialog.c:2024
+#: ../gtk-dialog.c:2299 ../gtk-ui.c:80
+msgid "Unverified"
+msgstr "Niezweryfikowana"
+
+#: ../gtk-dialog.c:1212 ../gtk-dialog.c:1243 ../gtk-ui.c:79
+msgid "Not private"
+msgstr "Nieprywatna"
+
+#: ../gtk-dialog.c:1215
+msgid "Start a private conversation"
+msgstr "Rozpocznij prywatną rozmowę"
+
+#: ../gtk-dialog.c:1216
+msgid "Refresh the private conversation"
+msgstr "Odśwież prywatną rozmowę"
+
+#: ../gtk-dialog.c:1221 ../gtk-dialog.c:1979 ../gtk-dialog.c:2074
+msgid "Start _private conversation"
+msgstr "Rozpocznij _prywatną rozmowę"
+
+#: ../gtk-dialog.c:1222 ../gtk-dialog.c:1980
+msgid "Refresh _private conversation"
+msgstr "_Odśwież prywatna rozmowę."
+
+#: ../gtk-dialog.c:1246
+msgid "OTR"
+msgstr "OTR"
+
+#. Translators: the following four messages should give alternative sentences.
+#. The user selects the first or second message in a combo box;
+#. the third message, a new line, a fingerprint, a new line, and
+#. the fourth message will follow it.
+#: ../gtk-dialog.c:1449
+msgid "I have not"
+msgstr "Nie dokonałem"
+
+#. 2nd message
+#: ../gtk-dialog.c:1451
+msgid "I have"
+msgstr "Dokonałem"
+
+#. 3rd message
+#: ../gtk-dialog.c:1454
+msgid " verified that this is in fact the correct"
+msgstr " weryfikacji poprawności klucza."
+
+#. 4th message
+#: ../gtk-dialog.c:1464
+#, c-format
+msgid "fingerprint for %s."
+msgstr "Klucz %s."
+
+#: ../gtk-dialog.c:1483
+msgid ""
+"If your buddy has more than one IM account, or uses more than one computer, "
+"he may have multiple fingerprints."
+msgstr "Jeżeli twój współrozmówca ma więcej niż jedno konto lub korzysta nie tylko z jednego komputera "
+"może posiadać wiele kluczy."
+
+#: ../gtk-dialog.c:1485
+msgid ""
+"However, the only way an imposter could duplicate one of your buddy's "
+"fingerprints is by stealing information from her/his computer."
+msgstr ""
+"Jednakże jedyny sposób by oszust mógł podszyć się pod klucz twojego współrozmówcy "
+"to kradzież danych z jego komputera."
+
+#: ../gtk-dialog.c:1489
+msgid "Click here for more information about fingerprints."
+msgstr "Klicken Sie hier für zusätzliche Informationen über Fingerprints."
+
+#: ../gtk-dialog.c:1492
+msgid ""
+"A <b>fingerprint</b> is a unique identifier that you should use to "
+"authenticate your buddy."
+msgstr ""
+"<b>Klucz</b> jest unikalnym identyfikatorem, którego powinieneś używać w celu "
+"uwierzytelniania swojego współrozmówce."
+
+#: ../gtk-dialog.c:1515
+#, c-format
+msgid "Verify fingerprint for %s"
+msgstr "Weryfikowanie klucza dla %s"
+
+#: ../gtk-dialog.c:1527
+#, c-format
+msgid ""
+"<small><i>%s %s\n"
+"\n"
+"</i></small>Fingerprint for you, %s (%s):\n"
+"%s\n"
+"\n"
+"Purported fingerprint for %s:\n"
+"%s\n"
+msgstr ""
+"<small><i>%s %s\n"
+"\n"
+"</i></small>Twój klucz %s (%s):\n"
+"%s\n"
+"\n"
+"Rzekomy klucz %s:\n"
+"%s\n"
+
+#: ../gtk-dialog.c:1540 ../gtk-ui.c:782
+msgid "Verify fingerprint"
+msgstr "Weryfikuj klucz"
+
+#: ../gtk-dialog.c:1567
+#, c-format
+msgid "Authentication from %s"
+msgstr "Uwierzytelnianie z %s"
+
+#: ../gtk-dialog.c:1570
+#, c-format
+msgid "Authenticate %s"
+msgstr "Uwierzytelnij %s"
+
+#: ../gtk-dialog.c:1580
+msgid "Authenticate Buddy"
+msgstr "Uwierzytelnij"
+
+#: ../gtk-dialog.c:1611
+msgid "An error occurred during authentication."
+msgstr "Wystąpił błąd podczas uwierzytelniania."
+
+#: ../gtk-dialog.c:1626
+msgid "Authentication successful."
+msgstr "Uwierzytelnianie zakończyło się pomyślnie."
+
+#: ../gtk-dialog.c:1629
+msgid ""
+"Your buddy has successfully authenticated you.  You may want to authenticate "
+"your buddy as well by asking your own question."
+msgstr ""
+"Twój współrozmówca pomyślnie uwierzytelnij ciebie. Prawdopodobnie ty również pragniesz "
+"uwierzytelnij swojego współrozmówcę zadając mu własne pytanie."
+
+#: ../gtk-dialog.c:1635
+msgid "Authentication failed."
+msgstr "Uwierzytelnianie nie powiodło się."
+
+#: ../gtk-dialog.c:1663
+#, c-format
+msgid "Private conversation with %s started.%s"
+msgstr "Prywatna rozmowa z %s rozpoczęła się.%s"
+
+#: ../gtk-dialog.c:1667
+#, c-format
+msgid "<a href=\"%s%s\">Unverified</a> conversation with %%s started.%%s"
+msgstr ""
+"<a href=\"%s%s\">Niezweryfikowany</a> rozmowa z %%s rozpoczęta.%%s"
+
+#. This last case should never happen, since we know
+#. * we're in ENCRYPTED.
+#: ../gtk-dialog.c:1675
+#, c-format
+msgid "Not private conversation with %s started.%s"
+msgstr "Nie prywatna rozmowa z %s rozpoczęta.%s"
+
+#: ../gtk-dialog.c:1681 ../gtk-dialog.c:1785
+msgid "  Warning: using old protocol version 1."
+msgstr "  Uwaga: używasz przestarzałego protokołu w wersji 1."
+
+#: ../gtk-dialog.c:1701
+#, c-format
+msgid "Private conversation with %s lost."
+msgstr "Prywatna rozmowa z %s stracona."
+
+#: ../gtk-dialog.c:1738
+#, c-format
+msgid ""
+"%s has ended his/her private conversation with you; you should do the same."
+msgstr ""
+"%s zakończył prywatną rozmowę z tobą; powinieneś postąpić tak samo."
+
+#: ../gtk-dialog.c:1764
+#, c-format
+msgid "Successfully refreshed the private conversation with %s.%s"
+msgstr "Pomyślnie odświeżono prywatną rozmowę z %s.%s"
+
+#: ../gtk-dialog.c:1769
+#, c-format
+msgid ""
+"Successfully refreshed the <a href=\"%s%s\">unverified</a> conversation with "
+"%%s.%%s"
+msgstr ""
+"Pomyślnie odświeżono <a href=\"%s%s\">niezweryfikowaną</a> rozmowę z %%s.%%s"
+
+#. This last case should never happen, since we know
+#. * we're in ENCRYPTED.
+#: ../gtk-dialog.c:1778
+#, c-format
+msgid "Successfully refreshed the not private conversation with %s.%s"
+msgstr "Pomyślnie odświeżono nieprywatną rozmowę z %s.%s"
+
+#: ../gtk-dialog.c:1810
+#, c-format
+msgid "Attempting to refresh the private conversation with %s..."
+msgstr "Próba odświeżenia prywatnej rozmowy z %s..."
+
+#: ../gtk-dialog.c:1812
+#, c-format
+msgid "Attempting to start a private conversation with %s..."
+msgstr "Próba rozpoczęcia prywatnej rozmowy z %s..."
+
+#: ../gtk-dialog.c:2021 ../gtk-dialog.c:2296
+msgid "Not Private"
+msgstr "Nieprywatna"
+
+#: ../gtk-dialog.c:2075 ../gtk-dialog.c:2482
+msgid "_End private conversation"
+msgstr "_Zakończ prywatną rozmowę"
+
+#.
+#. * Don't show the Verify fingerprint menu option any more.  You can
+#. * still get to the dialog through Authenticate connection ->
+#. * Advanced...
+#. *
+#. menuverf = gtk_menu_item_new_with_mnemonic(_("_Verify fingerprint"));
+#. gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuverf);
+#. gtk_widget_show(menuverf);
+#.
+#: ../gtk-dialog.c:2076 ../gtk-dialog.c:2500
+msgid "_Authenticate buddy"
+msgstr "_Uwierzytelnij"
+
+#: ../gtk-dialog.c:2292
+#, c-format
+msgid ""
+"The privacy status of the current conversation is now: <a href=\"%s%s\">%s</"
+"a>"
+msgstr ""
+"Status prywatności aktualnej rozmowy to: <a href=\"%s%s\">%s</a>"
+
+#: ../gtk-dialog.c:2455
+msgid "OTR:"
+msgstr "OTR:"
+
+#: ../gtk-dialog.c:2475
+msgid "OTR Messaging"
+msgstr "Wiadomości OTR"
+
+#: ../gtk-ui.c:102
+#, c-format
+msgid "Fingerprint: %.80s"
+msgstr "Klucz: %.80s"
+
+#: ../gtk-ui.c:106
+#, c-format
+msgid "No key present"
+msgstr "Brak klucza"
+
+#: ../gtk-ui.c:111
+#, c-format
+msgid "No account available"
+msgstr "Brak konta"
+
+#: ../gtk-ui.c:171
+msgid "Unused"
+msgstr "Niewykorzystane"
+
+#: ../gtk-ui.c:177
+msgid "Yes"
+msgstr "Tak"
+
+#: ../gtk-ui.c:177
+msgid "No"
+msgstr "Nie"
+
+#: ../gtk-ui.c:403
+msgid "Enable private messaging"
+msgstr "Włącz prywatne wiadomości"
+
+#: ../gtk-ui.c:405
+msgid "Automatically initiate private messaging"
+msgstr "Automatycznie inicjalizuj prywatne wiadomości"
+
+#: ../gtk-ui.c:407
+msgid "Require private messaging"
+msgstr "Wymagaj używania prywatnych wiadomości"
+
+#: ../gtk-ui.c:410
+msgid "Don't log OTR conversations"
+msgstr "Nie zapisuj rozmów OTR do dziennika"
+
+#: ../gtk-ui.c:454
+msgid "Show OTR button"
+msgstr "Pokazuj przycisk OTR"
+
+#: ../gtk-ui.c:457
+msgid "Show OTR button in toolbar"
+msgstr "Pokazuj przycisk OTR na pasku narzędzi"
+
+#: ../gtk-ui.c:601
+msgid "My private keys"
+msgstr "Moje klucze prywatne"
+
+#: ../gtk-ui.c:610
+msgid "Key for account:"
+msgstr "Klucz dla konta:"
+
+#: ../gtk-ui.c:635
+msgid "Generate"
+msgstr "Generuj"
+
+#: ../gtk-ui.c:676
+msgid "Default OTR Settings"
+msgstr "Standardowe ustawienia OTR"
+
+#: ../gtk-ui.c:703
+msgid "OTR UI Options"
+msgstr "Ustawienia UI"
+
+#: ../gtk-ui.c:726
+msgid "Screenname"
+msgstr "Nazwa"
+
+#: ../gtk-ui.c:727
+msgid "Status"
+msgstr "Status"
+
+#: ../gtk-ui.c:728
+msgid "Verified"
+msgstr "Zweryfikowano"
+
+#: ../gtk-ui.c:729
+msgid "Fingerprint"
+msgstr "Klucz"
+
+#: ../gtk-ui.c:730
+msgid "Account"
+msgstr "Konto"
+
+#: ../gtk-ui.c:766
+msgid "Start private connection"
+msgstr "Rozpocznij prywatne połączenie"
+
+#: ../gtk-ui.c:774
+msgid "End private connection"
+msgstr "Zakończy prywatne połączenie"
+
+#: ../gtk-ui.c:790
+msgid "Forget fingerprint"
+msgstr "Odrzuć klucz"
+
+#: ../gtk-ui.c:841
+msgid "Config"
+msgstr "Ustawienia"
+
+#: ../gtk-ui.c:843
+msgid "Known fingerprints"
+msgstr "Znane klucze"
+
+#: ../gtk-ui.c:941 ../otr-plugin.c:606
+msgid "OTR Settings"
+msgstr "Ustawienia OTR"
+
+#. Set the title
+#: ../gtk-ui.c:959
+#, c-format
+msgid "OTR Settings for %s"
+msgstr "Ustawienia OTR dla %s"
+
+#. Make the cascaded checkboxes
+#: ../gtk-ui.c:976
+msgid "Use default OTR settings for this buddy"
+msgstr "Używaj standardowych ustawień OTR dla tego rozmówcy"
+
+#: ../otr-plugin.c:114
+#, c-format
+msgid "You are not currently connected to account %s (%s)."
+msgstr "Aktualnie nie jesteś połączony z kontem %s (%s)."
+
+#: ../otr-plugin.c:118
+msgid "Not connected"
+msgstr "Nie połączony"
+
+#: ../otr-plugin.c:162
+#, c-format
+msgid "Out of memory building filenames!\n"
+msgstr "Skończyła się pamięć przy budowaniu nazw plików!\n"
+
+#: ../otr-plugin.c:168
+#, c-format
+msgid "Could not write private key file\n"
+msgstr "Nie można zapisać klucza prywatnego do pliku\n"
+
+#: ../otr-plugin.c:211
+#, c-format
+msgid "Unknown account %s (%s)."
+msgstr "Nieznane konto %s (%s)."
+
+#: ../otr-plugin.c:215
+msgid "Unknown account"
+msgstr "Nieznane konto"
+
+#: ../otr-plugin.c:983
+msgid "Off-the-Record Messaging"
+msgstr "Szyfrowanie Off-the-Record"
+
+#: ../otr-plugin.c:984
+msgid "Provides private and secure conversations"
+msgstr "Zapewnia prywatne i bezpieczne rozmowy."
+
+#: ../otr-plugin.c:985
+msgid ""
+"Preserves the privacy of IM communications by providing encryption, "
+"authentication, deniability, and perfect forward secrecy."
+msgstr ""
+"Zachowuje prywatność rozmów dzięki dostarczaniu szyfrowania, "
+"uwierzytelniania, zaprzeczalności i doskonałą poufność przesyłania."
+
+#: ../ui.c:109
+#, c-format
+msgid "Account %s (%s) could not be found"
+msgstr "Konto %s (%s) nie może zostać znalezione"
+
+#: ../ui.c:113
+msgid "Account not found"
+msgstr "Nie znaleziono konta"
diff --git a/po/sv.po b/po/sv.po
new file mode 100644
index 0000000..0a31b7a
--- /dev/null
+++ b/po/sv.po
@@ -0,0 +1,595 @@
+# Swedish translation for pidgin-otr.
+# Copyright (C) 2009 Free Software Foundation, Inc.
+# This file is distributed under the same license as the pidgin-otr package.
+# Daniel Nylander <po at danielnylander.se>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pidgin-otr\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-03-02 16:34+0100\n"
+"PO-Revision-Date: 2009-03-02 18:07+0100\n"
+"Last-Translator: Daniel Nylander <po at danielnylander.se>\n"
+"Language-Team: Swedish <tp-sv at listor.tp-sv.se>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../gtk-dialog.c:291
+#: ../gtk-dialog.c:1085
+#: ../gtk-dialog.c:1089
+#: ../gtk-dialog.c:1518
+#: ../gtk-dialog.c:1621
+#: ../gtk-dialog.c:1686
+#: ../gtk-dialog.c:2130
+msgid "?lang=en"
+msgstr "?lang=sv"
+
+#: ../gtk-dialog.c:439
+msgid "Your buddy is attempting to determine if he or she is really talking to you, or if it's someone pretending to be you.  Your buddy has asked a question, indicated below.  To authenticate to your buddy, enter the answer and click OK."
+msgstr "Din kompis försöker att fastställa om han eller hon verkligen pratar med dig, eller om det är någon som utger sig för att vara dig.  Din kompis har ställt en fråga, som indikeras nedan.  Ange svaret och klicka på OK för att autentisera din kompis."
+
+#: ../gtk-dialog.c:446
+msgid "To authenticate using a question, pick a question whose answer is known only to you and your buddy.  Enter this question and this answer, then wait for your buddy to enter the answer too.  If the answers don't match, then you may be talking to an imposter."
+msgstr "Välj en fråga vars svar endast är känt för dig och din kompis för att autentisera med en fråga.  Ange denna fråga och detta svar, vänta sedan på att din kompis också ska ange svaret.  Om svaren inte matchar varandra så kanske du pratar med en bedragare."
+
+#: ../gtk-dialog.c:464
+#, c-format
+msgid "This is the question asked by your buddy:"
+msgstr "Detta är frågan som ställs av din kompis:"
+
+#: ../gtk-dialog.c:467
+#, c-format
+msgid "Enter question here:"
+msgstr "Ange frågan här:"
+
+#: ../gtk-dialog.c:498
+#: ../gtk-dialog.c:582
+msgid "This buddy is already authenticated."
+msgstr "Denna kompis är redan autentiserad."
+
+#: ../gtk-dialog.c:510
+#, c-format
+msgid "Enter secret answer here (case sensitive):"
+msgstr "Ange hemligt svar här (skiftlägeskänsligt):"
+
+#: ../gtk-dialog.c:551
+msgid "To authenticate, pick a secret known only to you and your buddy.  Enter this secret, then wait for your buddy to enter it too.  If the secrets don't match, then you may be talking to an imposter."
+msgstr "Välj en hemlighet som endast du och din kompis känner till för att autentisera.  Ange denna hemlighet, vänta sedan på att din kompis också ska ange den.  Om hemligheterna inte stämmer med varandra så kanske du pratar med en bedragare."
+
+#: ../gtk-dialog.c:565
+#, c-format
+msgid "Enter secret here:"
+msgstr "Ange hemligheten här:"
+
+#: ../gtk-dialog.c:616
+#: ../gtk-dialog.c:1379
+msgid "To verify the fingerprint, contact your buddy via some <i>other</i> authenticated channel, such as the telephone or GPG-signed email.  Each of you should tell your fingerprint to the other."
+msgstr "Kontakta din kompis via någon <i>annan</i> autentiserad kanal, såsom telefon eller GPG-signerad e-post, för att verifiera fingeravtrycket.  Var och en av er ska läsa upp varandras fingeravtryck."
+
+#: ../gtk-dialog.c:620
+#: ../gtk-dialog.c:1383
+msgid "If everything matches up, you should indicate in the above dialog that you <b>have</b> verified the fingerprint."
+msgstr "Om allting stämmer så bör du indikera, i ovanstående dialogruta, att du <b>har</b> verifierat fingeravtrycket."
+
+#: ../gtk-dialog.c:631
+#: ../gtk-dialog.c:1368
+msgid "[none]"
+msgstr "[ingen]"
+
+#: ../gtk-dialog.c:638
+#: ../gtk-dialog.c:996
+#: ../gtk-dialog.c:1375
+#: ../gtk-dialog.c:1426
+#: ../gtk-ui.c:181
+#: ../otr-plugin.c:116
+#: ../otr-plugin.c:213
+#: ../ui.c:111
+msgid "Unknown"
+msgstr "Okänd"
+
+#: ../gtk-dialog.c:639
+#, c-format
+msgid ""
+"Fingerprint for you, %s (%s):\n"
+"%s\n"
+"\n"
+"Purported fingerprint for %s:\n"
+"%s\n"
+msgstr ""
+"Fingeravtryck för dig, %s (%s):\n"
+"%s\n"
+"\n"
+"Påstått fingeravtryck för %s:\n"
+"%s\n"
+
+#: ../gtk-dialog.c:691
+msgid "How would you like to authenticate your buddy?"
+msgstr "Hur vill du autentisera din kompis?"
+
+#: ../gtk-dialog.c:700
+msgid "Question and answer"
+msgstr "Fråga och svar"
+
+#: ../gtk-dialog.c:703
+msgid "Shared secret"
+msgstr "Delad hemlighet"
+
+#: ../gtk-dialog.c:706
+msgid "Manual fingerprint verification"
+msgstr "Manuell verifiering av fingeravtryck"
+
+#: ../gtk-dialog.c:749
+msgid "_Authenticate"
+msgstr "_Autentisera"
+
+#: ../gtk-dialog.c:782
+msgid "Authenticating a buddy helps ensure that the person you are talking to is who he or she claims to be."
+msgstr "Autentisering av en kompis försäkrar att personen som du pratar med verkligen är den person som han eller hon utger sig för att vara."
+
+#. Translators: you are asked to authenticate yourself
+#: ../gtk-dialog.c:891
+msgid "Authenticating to Buddy"
+msgstr "Autentiserar mot kompis"
+
+#. Translators: you asked your buddy to authenticate him/herself
+#: ../gtk-dialog.c:893
+msgid "Authenticating Buddy"
+msgstr "Autentiserar kompis"
+
+#: ../gtk-dialog.c:920
+#, c-format
+msgid "Authenticating to %s"
+msgstr "Autentiserar mot %s"
+
+#: ../gtk-dialog.c:921
+#, c-format
+msgid "Authenticating %s"
+msgstr "Autentiserar %s"
+
+#: ../gtk-dialog.c:954
+msgid "Waiting for buddy..."
+msgstr "Väntar på kompisen..."
+
+#: ../gtk-dialog.c:987
+msgid "Generating private key"
+msgstr "Genererar privat nyckel"
+
+#: ../gtk-dialog.c:988
+msgid "Please wait"
+msgstr "Vänta"
+
+#. Create the Please Wait... dialog
+#: ../gtk-dialog.c:999
+#, c-format
+msgid "Generating private key for %s (%s)..."
+msgstr "Genererar privat nyckel för %s (%s)..."
+
+#: ../gtk-dialog.c:1044
+#, c-format
+msgid "%s Done."
+msgstr "%s färdigt."
+
+#: ../gtk-dialog.c:1083
+#, c-format
+msgid "%s is contacting you from an unrecognized computer.  You should <a href=\"%s%s\">authenticate</a> this buddy."
+msgstr "%s kontaktar dig från en okänd dator.  Du bör <a href=\"%s%s\">autentisera</a> denna kompis."
+
+#: ../gtk-dialog.c:1087
+#, c-format
+msgid "%s has not been authenticated yet.  You should <a href=\"%s%s\">authenticate</a> this buddy."
+msgstr "%s har ännu inte autentiserats.  Du bör <a href=\"%s%s\">autentisera</a> denna kompis."
+
+#: ../gtk-dialog.c:1150
+#: ../gtk-dialog.c:1181
+#: ../gtk-dialog.c:1853
+#: ../gtk-dialog.c:2126
+#: ../gtk-ui.c:82
+msgid "Finished"
+msgstr "Färdig"
+
+#: ../gtk-dialog.c:1151
+#: ../gtk-dialog.c:1182
+#: ../gtk-dialog.c:1850
+#: ../gtk-dialog.c:2123
+#: ../gtk-ui.c:81
+msgid "Private"
+msgstr "Privat"
+
+#: ../gtk-dialog.c:1152
+#: ../gtk-dialog.c:1183
+#: ../gtk-dialog.c:1847
+#: ../gtk-dialog.c:2120
+#: ../gtk-ui.c:80
+msgid "Unverified"
+msgstr "Inte verifierad"
+
+#: ../gtk-dialog.c:1153
+#: ../gtk-dialog.c:1184
+#: ../gtk-ui.c:79
+msgid "Not private"
+msgstr "Icke-privat"
+
+#: ../gtk-dialog.c:1156
+msgid "Start a private conversation"
+msgstr "Starta en privat konversation"
+
+#: ../gtk-dialog.c:1157
+msgid "Refresh the private conversation"
+msgstr "Uppdatera privat konversation"
+
+#: ../gtk-dialog.c:1162
+#: ../gtk-dialog.c:1802
+#: ../gtk-dialog.c:1897
+msgid "Start _private conversation"
+msgstr "Starta _privat konversation"
+
+#: ../gtk-dialog.c:1163
+#: ../gtk-dialog.c:1803
+msgid "Refresh _private conversation"
+msgstr "Uppdatera _privat konversation"
+
+#: ../gtk-dialog.c:1187
+msgid "OTR"
+msgstr "OTR"
+
+#. Translators: the following four messages should give alternative sentences.
+#. The user selects the first or second message in a combo box;
+#. the third message, a new line, a fingerprint, a new line, and
+#. the fourth message will follow it.
+#: ../gtk-dialog.c:1322
+msgid "I have not"
+msgstr "Jag har inte"
+
+#. 2nd message
+#: ../gtk-dialog.c:1324
+msgid "I have"
+msgstr "Jag har"
+
+#. 3rd message
+#: ../gtk-dialog.c:1327
+msgid " verified that this is in fact the correct"
+msgstr " verifierat att detta är det korrekta"
+
+#. 4th message
+#: ../gtk-dialog.c:1337
+#, c-format
+msgid "fingerprint for %s."
+msgstr "fingeravtrycket för %s."
+
+#: ../gtk-dialog.c:1364
+#, c-format
+msgid "Verify fingerprint for %s"
+msgstr "Verifiera fingeravtryck för %s"
+
+#: ../gtk-dialog.c:1376
+#, c-format
+msgid ""
+"<small><i>%s %s\n"
+"\n"
+"</i></small>Fingerprint for you, %s (%s):\n"
+"%s\n"
+"\n"
+"Purported fingerprint for %s:\n"
+"%s\n"
+msgstr ""
+"<small><i>%s %s\n"
+"\n"
+"</i></small>Fingeravtryck för dig, %s (%s):\n"
+"%s\n"
+"\n"
+"Påstått fingeravtryck för %s:\n"
+"%s\n"
+
+#: ../gtk-dialog.c:1389
+#: ../gtk-ui.c:782
+msgid "Verify fingerprint"
+msgstr "Verifiera fingeravtryck"
+
+#: ../gtk-dialog.c:1416
+#, c-format
+msgid "Authentication from %s"
+msgstr "Autentisering från %s"
+
+#: ../gtk-dialog.c:1419
+#, c-format
+msgid "Authenticate %s"
+msgstr "Autentisera %s"
+
+#: ../gtk-dialog.c:1429
+msgid "Authenticate Buddy"
+msgstr "Autentisera kompis"
+
+#: ../gtk-dialog.c:1460
+msgid "An error occurred during authentication."
+msgstr "Ett fel inträffade under autentisering."
+
+#: ../gtk-dialog.c:1475
+msgid "Authentication successful."
+msgstr "Autentiseringen lyckades."
+
+#: ../gtk-dialog.c:1478
+msgid "Your buddy has successfully authenticated you.  You may want to authenticate your buddy as well by asking your own question."
+msgstr "Din kompis har autentiserat dig.  Du kanske också vill autentisera din kompis genom att ställa en egen fråga."
+
+#: ../gtk-dialog.c:1484
+msgid "Authentication failed."
+msgstr "Autentisering misslyckades."
+
+#: ../gtk-dialog.c:1512
+#, c-format
+msgid "Private conversation with %s started.%s"
+msgstr "Privat konversation med %s har startat.%s"
+
+#: ../gtk-dialog.c:1516
+#, c-format
+msgid "<a href=\"%s%s\">Unverified</a> conversation with %%s started.%%s"
+msgstr "<a href=\"%s%s\">Ej verifierad</a> konversation med %%s har startat.%%s"
+
+#. This last case should never happen, since we know
+#. * we're in ENCRYPTED.
+#: ../gtk-dialog.c:1524
+#, c-format
+msgid "Not private conversation with %s started.%s"
+msgstr "Icke-privat konversation med %s har startat.%s"
+
+#: ../gtk-dialog.c:1530
+#: ../gtk-dialog.c:1634
+msgid "  Warning: using old protocol version 1."
+msgstr "  Varning: använder gammalt protokoll version 1."
+
+#: ../gtk-dialog.c:1550
+#, c-format
+msgid "Private conversation with %s lost."
+msgstr "Privata konversationen med %s kopplades från."
+
+#: ../gtk-dialog.c:1587
+#, c-format
+msgid "%s has ended his/her private conversation with you; you should do the same."
+msgstr "%s har avslutat sin privata konversation med dig. Du bör göra det samma."
+
+#: ../gtk-dialog.c:1613
+#, c-format
+msgid "Successfully refreshed the private conversation with %s.%s"
+msgstr "Uppdaterade privat konversation med %s.%s"
+
+#: ../gtk-dialog.c:1618
+#, c-format
+msgid "Successfully refreshed the <a href=\"%s%s\">unverified</a> conversation with %%s.%%s"
+msgstr "Uppdaterade <a href=\"%s%s\">ej verifierad</a> konversation med %%s.%%s"
+
+#. This last case should never happen, since we know
+#. * we're in ENCRYPTED.
+#: ../gtk-dialog.c:1627
+#, c-format
+msgid "Successfully refreshed the not private conversation with %s.%s"
+msgstr "Uppdaterade icke-privat konversation med %s.%s"
+
+#: ../gtk-dialog.c:1659
+#, c-format
+msgid "Attempting to refresh the private conversation with %s..."
+msgstr "Försöker att uppdatera privat konversation med %s..."
+
+#: ../gtk-dialog.c:1661
+#, c-format
+msgid "Attempting to start a private conversation with %s..."
+msgstr "Försöker att starta en privat konversation med %s..."
+
+#: ../gtk-dialog.c:1844
+#: ../gtk-dialog.c:2117
+msgid "Not Private"
+msgstr "Icke-privat"
+
+#: ../gtk-dialog.c:1866
+#: ../gtk-dialog.c:2338
+msgid "_What's this?"
+msgstr "_Vad är detta?"
+
+#: ../gtk-dialog.c:1898
+#: ../gtk-dialog.c:2303
+msgid "_End private conversation"
+msgstr "A_vsluta privat konversation"
+
+#.
+#. * Don't show the Verify fingerprint menu option any more.  You can
+#. * still get to the dialog through Authenticate connection ->
+#. * Advanced...
+#. *
+#. menuverf = gtk_menu_item_new_with_mnemonic(_("_Verify fingerprint"));
+#. gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuverf);
+#. gtk_widget_show(menuverf);
+#.
+#: ../gtk-dialog.c:1899
+#: ../gtk-dialog.c:2321
+msgid "_Authenticate buddy"
+msgstr "_Autentisera kompis"
+
+#: ../gtk-dialog.c:2113
+#, c-format
+msgid "The privacy status of the current conversation is now: <a href=\"%s%s\">%s</a>"
+msgstr "Integritetsstatus för aktuell konversation är nu: <a href=\"%s%s\">%s</a>"
+
+#: ../gtk-dialog.c:2276
+msgid "OTR:"
+msgstr "OTR:"
+
+#: ../gtk-dialog.c:2296
+msgid "OTR Messaging"
+msgstr "OTR-meddelanden"
+
+#: ../gtk-ui.c:102
+#, c-format
+msgid "Fingerprint: %.80s"
+msgstr "Fingeravtryck: %.80s"
+
+#: ../gtk-ui.c:106
+#, c-format
+msgid "No key present"
+msgstr "Ingen nyckel finns"
+
+#: ../gtk-ui.c:111
+#, c-format
+msgid "No account available"
+msgstr "Inget konto tillgängligt"
+
+#: ../gtk-ui.c:171
+msgid "Unused"
+msgstr "Oanvänd"
+
+#: ../gtk-ui.c:177
+msgid "Yes"
+msgstr "Ja"
+
+#: ../gtk-ui.c:177
+msgid "No"
+msgstr "Nej"
+
+#: ../gtk-ui.c:403
+msgid "Enable private messaging"
+msgstr "Aktivera privata meddelanden"
+
+#: ../gtk-ui.c:405
+msgid "Automatically initiate private messaging"
+msgstr "Initiera automatiskt privata meddelanden"
+
+#: ../gtk-ui.c:407
+msgid "Require private messaging"
+msgstr "Kräv privata meddelanden"
+
+#: ../gtk-ui.c:410
+msgid "Don't log OTR conversations"
+msgstr "Logga inte OTR-konversationer"
+
+#: ../gtk-ui.c:454
+msgid "Show OTR button"
+msgstr "Visa OTR-knapp"
+
+#: ../gtk-ui.c:457
+msgid "Show OTR button in toolbar"
+msgstr "Visa OTR-knapp i verktygsrad"
+
+#: ../gtk-ui.c:601
+msgid "My private keys"
+msgstr "Mina privata nycklar"
+
+#: ../gtk-ui.c:610
+msgid "Key for account:"
+msgstr "Nyckel för konto:"
+
+#: ../gtk-ui.c:635
+msgid "Generate"
+msgstr "Generera"
+
+#: ../gtk-ui.c:676
+msgid "Default OTR Settings"
+msgstr "Standardinställningar för OTR"
+
+#: ../gtk-ui.c:703
+msgid "OTR UI Options"
+msgstr "Gränssnittsalternativ för OTR"
+
+#: ../gtk-ui.c:726
+msgid "Screenname"
+msgstr "Skärmnamn"
+
+#: ../gtk-ui.c:727
+msgid "Status"
+msgstr "Status"
+
+#: ../gtk-ui.c:728
+msgid "Verified"
+msgstr "Verifierad"
+
+#: ../gtk-ui.c:729
+msgid "Fingerprint"
+msgstr "Fingeravtryck"
+
+#: ../gtk-ui.c:730
+msgid "Account"
+msgstr "Konto"
+
+#: ../gtk-ui.c:766
+msgid "Start private connection"
+msgstr "Starta privat anslutning"
+
+#: ../gtk-ui.c:774
+msgid "End private connection"
+msgstr "Avsluta privat anslutning"
+
+#: ../gtk-ui.c:790
+msgid "Forget fingerprint"
+msgstr "Glöm fingeravtryck"
+
+#: ../gtk-ui.c:841
+msgid "Config"
+msgstr "Konfiguration"
+
+#: ../gtk-ui.c:843
+msgid "Known fingerprints"
+msgstr "Kända fingeravtryck"
+
+#: ../gtk-ui.c:941
+#: ../otr-plugin.c:606
+msgid "OTR Settings"
+msgstr "OTR-inställningar"
+
+#. Set the title
+#: ../gtk-ui.c:959
+#, c-format
+msgid "OTR Settings for %s"
+msgstr "OTR-inställningar för %s"
+
+#. Make the cascaded checkboxes
+#: ../gtk-ui.c:976
+msgid "Use default OTR settings for this buddy"
+msgstr "Använd standardinställningar för OTR för denna kompis"
+
+#: ../otr-plugin.c:114
+#, c-format
+msgid "You are not currently connected to account %s (%s)."
+msgstr "Du är för närvarande inte ansluten till kontot %s (%s)."
+
+#: ../otr-plugin.c:118
+msgid "Not connected"
+msgstr "Inte ansluten"
+
+#: ../otr-plugin.c:162
+#, c-format
+msgid "Out of memory building filenames!\n"
+msgstr "Slut på minne när filnamn byggdes!\n"
+
+#: ../otr-plugin.c:168
+#, c-format
+msgid "Could not write private key file\n"
+msgstr "Kunde inte skriva privat nyckel-fil\n"
+
+#: ../otr-plugin.c:211
+#, c-format
+msgid "Unknown account %s (%s)."
+msgstr "Okänt konto %s (%s)."
+
+#: ../otr-plugin.c:215
+msgid "Unknown account"
+msgstr "Okänt konto"
+
+#: ../otr-plugin.c:983
+msgid "Off-the-Record Messaging"
+msgstr "Off-the-Record-meddelanden"
+
+#: ../otr-plugin.c:984
+msgid "Provides private and secure conversations"
+msgstr "Tillhandahåller privata och säkra konversationer"
+
+#: ../otr-plugin.c:985
+msgid "Preserves the privacy of IM communications by providing encryption, authentication, deniability, and perfect forward secrecy."
+msgstr "Bibehåller integriteten för snabbmeddelanden genom att tillhandahålla kryptering, autentisering, förnekande och perfekt sekretess för vidarebefordring."
+
+#: ../ui.c:109
+#, c-format
+msgid "Account %s (%s) could not be found"
+msgstr "Kontot %s (%s) kunde inte hittas"
+
+#: ../ui.c:113
+msgid "Account not found"
+msgstr "Kontot hittades inte"
+
diff --git a/tooltipmenu.c b/tooltipmenu.c
index fb5f901..880cebb 100644
--- a/tooltipmenu.c
+++ b/tooltipmenu.c
@@ -1,7 +1,8 @@
 /*
  *  Off-the-Record Messaging plugin for pidgin
- *  Copyright (C) 2004-2008  Ian Goldberg, Rob Smits,
- *                           Chris Alexander, Nikita Borisov
+ *  Copyright (C) 2004-2009  Ian Goldberg, Rob Smits,
+ *                           Chris Alexander, Willy Lew,
+ *                           Nikita Borisov
  *                           <otr at cypherpunks.ca>
  *
  *  This program is free software; you can redistribute it and/or modify
diff --git a/tooltipmenu.h b/tooltipmenu.h
index 28beec1..b5395d0 100644
--- a/tooltipmenu.h
+++ b/tooltipmenu.h
@@ -1,7 +1,8 @@
 /*
  *  Off-the-Record Messaging plugin for pidgin
- *  Copyright (C) 2004-2008  Ian Goldberg, Rob Smits,
- *                           Chris Alexander, Nikita Borisov
+ *  Copyright (C) 2004-2009  Ian Goldberg, Rob Smits,
+ *                           Chris Alexander, Willy Lew,
+ *                           Nikita Borisov
  *                           <otr at cypherpunks.ca>
  *
  *  This program is free software; you can redistribute it and/or modify
diff --git a/ui.c b/ui.c
index 5ee5a58..95a32ea 100644
--- a/ui.c
+++ b/ui.c
@@ -1,7 +1,8 @@
 /*
  *  Off-the-Record Messaging plugin for pidgin
- *  Copyright (C) 2004-2008  Ian Goldberg, Rob Smits,
- *                           Chris Alexander, Nikita Borisov
+ *  Copyright (C) 2004-2009  Ian Goldberg, Rob Smits,
+ *                           Chris Alexander, Willy Lew,
+ *                           Nikita Borisov
  *                           <otr at cypherpunks.ca>
  *
  *  This program is free software; you can redistribute it and/or modify
diff --git a/ui.h b/ui.h
index 328a6ac..9ef64e6 100644
--- a/ui.h
+++ b/ui.h
@@ -1,7 +1,8 @@
 /*
  *  Off-the-Record Messaging plugin for pidgin
- *  Copyright (C) 2004-2008  Ian Goldberg, Rob Smits,
- *                           Chris Alexander, Nikita Borisov
+ *  Copyright (C) 2004-2009  Ian Goldberg, Rob Smits,
+ *                           Chris Alexander, Willy Lew,
+ *                           Nikita Borisov
  *                           <otr at cypherpunks.ca>
  *
  *  This program is free software; you can redistribute it and/or modify

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-otr/packages/irssi-plugin-otr.git



More information about the Pkg-otr-team mailing list